{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "aGYwt_UjIrqp" }, "source": [ "# Object Detection\n", "\n", "In this tutorial, you will learn:\n", "- the basic structure of Faster R-CNN.\n", "- to perform inference with a MMDetection detector.\n", "- to train a new detector with a new dataset.\n", "\n", "Let's start!\n" ] }, { "cell_type": "markdown", "metadata": { "id": "tJxJHruNLb7Y" }, "source": [ "## Install MMDetection" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Wi4LPmsR66sy", "outputId": "a5005e9d-afb9-4d06-d51c-2c3fa19687b8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nvcc: NVIDIA (R) Cuda compiler driver\n", "Copyright (c) 2005-2020 NVIDIA Corporation\n", "Built on Mon_Oct_12_20:09:46_PDT_2020\n", "Cuda compilation tools, release 11.1, V11.1.105\n", "Build cuda_11.1.TC455_06.29190527_0\n", "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", "Copyright (C) 2017 Free Software Foundation, Inc.\n", "This is free software; see the source for copying conditions. There is NO\n", "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", "\n" ] } ], "source": [ "# Check nvcc version\n", "!nvcc -V\n", "# Check GCC version\n", "!gcc --version" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gkGnB9WyHSXB", "outputId": "6af7be0b-a75f-4e52-b54b-8d92212f7722" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in links: https://download.pytorch.org/whl/torch_stable.html\n", "Collecting torch==1.9.0+cu111\n", " Downloading https://download.pytorch.org/whl/cu111/torch-1.9.0%2Bcu111-cp37-cp37m-linux_x86_64.whl (2041.3 MB)\n", "\u001b[K |█████████████ | 834.1 MB 1.5 MB/s eta 0:13:16tcmalloc: large alloc 1147494400 bytes == 0x55a4587ba000 @ 0x7f26db5db615 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee472c0 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41edd4f19 0x55a41ee18a79 0x55a41edd3b32 0x55a41ee471dd 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee42eae 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f\n", "\u001b[K |████████████████▌ | 1055.7 MB 1.4 MB/s eta 0:11:52tcmalloc: large alloc 1434370048 bytes == 0x55a49ce10000 @ 0x7f26db5db615 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee472c0 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41edd4f19 0x55a41ee18a79 0x55a41edd3b32 0x55a41ee471dd 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee42eae 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f\n", "\u001b[K |█████████████████████ | 1336.2 MB 1.3 MB/s eta 0:09:01tcmalloc: large alloc 1792966656 bytes == 0x55a421c42000 @ 0x7f26db5db615 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee472c0 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41edd4f19 0x55a41ee18a79 0x55a41edd3b32 0x55a41ee471dd 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee42eae 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f\n", "\u001b[K |██████████████████████████▌ | 1691.1 MB 1.3 MB/s eta 0:04:36tcmalloc: large alloc 2241208320 bytes == 0x55a48ca2a000 @ 0x7f26db5db615 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee472c0 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41eec6986 0x55a41ee43350 0x55a41edd4f19 0x55a41ee18a79 0x55a41edd3b32 0x55a41ee471dd 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee42eae 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f\n", "\u001b[K |████████████████████████████████| 2041.3 MB 1.1 MB/s eta 0:00:01tcmalloc: large alloc 2041348096 bytes == 0x55a51238c000 @ 0x7f26db5da1e7 0x55a41ee065d7 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f\n", "tcmalloc: large alloc 2551685120 bytes == 0x55a600300000 @ 0x7f26db5db615 0x55a41edd03bc 0x55a41eeb118a 0x55a41edd31cd 0x55a41eec5b3d 0x55a41ee47458 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43108 0x55a41edd49da 0x55a41ee43108 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd4aba 0x55a41ee43cd4 0x55a41ee4202f 0x55a41edd5151\n", "\u001b[K |████████████████████████████████| 2041.3 MB 7.2 kB/s \n", "\u001b[?25hCollecting torchvision==0.10.0+cu111\n", " Downloading https://download.pytorch.org/whl/cu111/torchvision-0.10.0%2Bcu111-cp37-cp37m-linux_x86_64.whl (23.2 MB)\n", "\u001b[K |████████████████████████████████| 23.2 MB 13.8 MB/s \n", "\u001b[?25hRequirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch==1.9.0+cu111) (3.10.0.2)\n", "Requirement already satisfied: pillow>=5.3.0 in /usr/local/lib/python3.7/dist-packages (from torchvision==0.10.0+cu111) (7.1.2)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from torchvision==0.10.0+cu111) (1.19.5)\n", "Installing collected packages: torch, torchvision\n", " Attempting uninstall: torch\n", " Found existing installation: torch 1.10.0+cu111\n", " Uninstalling torch-1.10.0+cu111:\n", " Successfully uninstalled torch-1.10.0+cu111\n", " Attempting uninstall: torchvision\n", " Found existing installation: torchvision 0.11.1+cu111\n", " Uninstalling torchvision-0.11.1+cu111:\n", " Successfully uninstalled torchvision-0.11.1+cu111\n", "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", "torchtext 0.11.0 requires torch==1.10.0, but you have torch 1.9.0+cu111 which is incompatible.\n", "torchaudio 0.10.0+cu111 requires torch==1.10.0, but you have torch 1.9.0+cu111 which is incompatible.\u001b[0m\n", "Successfully installed torch-1.9.0+cu111 torchvision-0.10.0+cu111\n", "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", "Collecting mmcv-full\n", " Downloading https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/mmcv_full-1.4.4-cp37-cp37m-manylinux1_x86_64.whl (67.3 MB)\n", "\u001b[K |████████████████████████████████| 67.3 MB 1.3 MB/s \n", "\u001b[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (21.3)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (1.19.5)\n", "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (3.13)\n", "Collecting addict\n", " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n", "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (4.1.2.30)\n", "Collecting yapf\n", " Downloading yapf-0.32.0-py2.py3-none-any.whl (190 kB)\n", "\u001b[K |████████████████████████████████| 190 kB 5.1 MB/s \n", "\u001b[?25hRequirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv-full) (7.1.2)\n", "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv-full) (3.0.7)\n", "Installing collected packages: yapf, addict, mmcv-full\n", "Successfully installed addict-2.4.0 mmcv-full-1.4.4 yapf-0.32.0\n", "Cloning into 'mmdetection'...\n", "remote: Enumerating objects: 22983, done.\u001b[K\n", "remote: Counting objects: 100% (25/25), done.\u001b[K\n", "remote: Compressing objects: 100% (23/23), done.\u001b[K\n", "remote: Total 22983 (delta 4), reused 17 (delta 2), pack-reused 22958\u001b[K\n", "Receiving objects: 100% (22983/22983), 25.79 MiB | 34.48 MiB/s, done.\n", "Resolving deltas: 100% (16102/16102), done.\n", "/content/mmdetection\n", "Obtaining file:///content/mmdetection\n", "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from mmdet==2.21.0) (3.2.2)\n", "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmdet==2.21.0) (1.19.5)\n", "Requirement already satisfied: pycocotools in /usr/local/lib/python3.7/dist-packages (from mmdet==2.21.0) (2.0.4)\n", "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from mmdet==2.21.0) (1.15.0)\n", "Collecting terminaltables\n", " Downloading terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet==2.21.0) (1.3.2)\n", "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet==2.21.0) (3.0.7)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet==2.21.0) (0.11.0)\n", "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmdet==2.21.0) (2.8.2)\n", "Installing collected packages: terminaltables, mmdet\n", " Running setup.py develop for mmdet\n", "Successfully installed mmdet-2.21.0 terminaltables-3.1.10\n" ] } ], "source": [ "# install dependencies: (use cu111 because colab has CUDA 11.1)\n", "!pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html\n", "\n", "# install mmcv-full thus we could use CUDA operators\n", "!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", "\n", "# Install mmdetection\n", "!rm -rf mmdetection\n", "!git clone https://github.com/open-mmlab/mmdetection.git\n", "%cd mmdetection\n", "\n", "!pip install -e ." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_YeUiqAoCaoV", "outputId": "7f894255-c0a0-4ca7-9083-2cf0e2c0646e" }, "outputs": [ { "data": { "text/plain": [ "{'CUDA available': True,\n", " 'CUDA_HOME': '/usr/local/cuda',\n", " 'GCC': 'gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0',\n", " 'GPU 0': 'Tesla T4',\n", " 'MMCV': '1.4.4',\n", " 'MMCV CUDA Compiler': '11.1',\n", " 'MMCV Compiler': 'GCC 7.3',\n", " 'NVCC': 'Build cuda_11.1.TC455_06.29190527_0',\n", " 'OpenCV': '4.1.2',\n", " 'PyTorch': '1.9.0+cu111',\n", " 'PyTorch compiling details': 'PyTorch built with:\\n - GCC 7.3\\n - C++ Version: 201402\\n - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications\\n - Intel(R) MKL-DNN v2.1.2 (Git Hash 98be7e8afa711dc9b66c8ff3504129cb82013cdb)\\n - OpenMP 201511 (a.k.a. OpenMP 4.5)\\n - NNPACK is enabled\\n - CPU capability usage: AVX2\\n - CUDA Runtime 11.1\\n - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86\\n - CuDNN 8.0.5\\n - Magma 2.5.2\\n - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.9.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, \\n',\n", " 'Python': '3.7.12 (default, Jan 15 2022, 18:48:18) [GCC 7.5.0]',\n", " 'TorchVision': '0.10.0+cu111',\n", " 'sys.platform': 'linux'}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mmcv import collect_env\n", "collect_env()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "6hD0mmMixT0p", "outputId": "ac4aaaeb-6b18-4500-c95c-6f781cda76fc" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.9.0+cu111 True\n", "2.21.0\n", "11.1\n", "GCC 7.3\n" ] } ], "source": [ "# Check Pytorch installation\n", "import torch, torchvision\n", "print(torch.__version__, torch.cuda.is_available())\n", "\n", "# Check MMDetection installation\n", "import mmdet\n", "print(mmdet.__version__)\n", "\n", "# Check mmcv installation\n", "from mmcv.ops import get_compiling_cuda_version, get_compiler_version\n", "print(get_compiling_cuda_version())\n", "print(get_compiler_version())" ] }, { "cell_type": "markdown", "metadata": { "id": "gi9zw03oM4CH" }, "source": [ "## Perform Inference with An MMDet detector\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "s99mDGBG1S1z" }, "source": [ "### A two-stage detector\n", "\n", "In this tutorial, we use Faster R-CNN, a simple two-stage detector as an example.\n", "\n", "The high-level architecture of Faster R-CNN is shown in the following picture. More details can be found in the [paper](https://arxiv.org/abs/1506.01497).\n", "\n", "![faster rcnn](https://pic1.zhimg.com/80/v2-c0172be282021a1029f7b72b51079ffe_1440w.jpg)\n", "\n", "![mmdet](https://pic2.zhimg.com/v2-e49ebcf931b5cf424ed311338f9ff35d_b.jpg)\n", "\n", "Briefly, it uses a convolutional neural network (CNN) as backbone to extract features from an image. Then, it uses a region proposal network (RPN) to predict proposals, i.e., potential objects. After that, it uses a feature extractor to crop features for the region of interests (RoI), and uses a RoI Head to perform classification and bounding box prediction.\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "j4doHX4exvS1", "outputId": "b42719be-cb70-47a1-867a-56649a794c44" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-02-08 11:29:13-- https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth\n", "Resolving download.openmmlab.com (download.openmmlab.com)... 47.252.96.28\n", "Connecting to download.openmmlab.com (download.openmmlab.com)|47.252.96.28|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 167291982 (160M) [application/octet-stream]\n", "Saving to: ‘checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth’\n", "\n", "checkpoints/faster_ 100%[===================>] 159.54M 7.92MB/s in 22s \n", "\n", "2022-02-08 11:29:37 (7.28 MB/s) - ‘checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth’ saved [167291982/167291982]\n", "\n" ] } ], "source": [ "# We download the pre-trained checkpoints for inference and finetuning.\n", "!mkdir checkpoints\n", "!wget -c https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth \\\n", " -O checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8M5KUnX7Np3h", "outputId": "a061bced-262e-404f-94c5-6400a75078b3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load checkpoint from local path: checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth\n" ] }, { "data": { "text/plain": [ "FasterRCNN(\n", " (backbone): ResNet(\n", " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " (layer1): ResLayer(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer2): ResLayer(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer3): ResLayer(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (3): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (4): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (5): Bottleneck(\n", " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " (layer4): ResLayer(\n", " (0): Bottleneck(\n", " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " (downsample): Sequential(\n", " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (1): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " (2): Bottleneck(\n", " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (relu): ReLU(inplace=True)\n", " )\n", " )\n", " )\n", " init_cfg={'type': 'Pretrained', 'checkpoint': 'open-mmlab://detectron2/resnet50_caffe'}\n", " (neck): FPN(\n", " (lateral_convs): ModuleList(\n", " (0): ConvModule(\n", " (conv): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (1): ConvModule(\n", " (conv): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (2): ConvModule(\n", " (conv): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " (3): ConvModule(\n", " (conv): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " )\n", " (fpn_convs): ModuleList(\n", " (0): ConvModule(\n", " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " )\n", " (1): ConvModule(\n", " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " )\n", " (2): ConvModule(\n", " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " )\n", " (3): ConvModule(\n", " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " )\n", " )\n", " )\n", " init_cfg={'type': 'Xavier', 'layer': 'Conv2d', 'distribution': 'uniform'}\n", " (rpn_head): RPNHead(\n", " (loss_cls): CrossEntropyLoss()\n", " (loss_bbox): L1Loss()\n", " (rpn_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (rpn_cls): Conv2d(256, 3, kernel_size=(1, 1), stride=(1, 1))\n", " (rpn_reg): Conv2d(256, 12, kernel_size=(1, 1), stride=(1, 1))\n", " )\n", " init_cfg={'type': 'Normal', 'layer': 'Conv2d', 'std': 0.01}\n", " (roi_head): StandardRoIHead(\n", " (bbox_roi_extractor): SingleRoIExtractor(\n", " (roi_layers): ModuleList(\n", " (0): RoIAlign(output_size=(7, 7), spatial_scale=0.25, sampling_ratio=0, pool_mode=avg, aligned=True, use_torchvision=False)\n", " (1): RoIAlign(output_size=(7, 7), spatial_scale=0.125, sampling_ratio=0, pool_mode=avg, aligned=True, use_torchvision=False)\n", " (2): RoIAlign(output_size=(7, 7), spatial_scale=0.0625, sampling_ratio=0, pool_mode=avg, aligned=True, use_torchvision=False)\n", " (3): RoIAlign(output_size=(7, 7), spatial_scale=0.03125, sampling_ratio=0, pool_mode=avg, aligned=True, use_torchvision=False)\n", " )\n", " )\n", " (bbox_head): Shared2FCBBoxHead(\n", " (loss_cls): CrossEntropyLoss()\n", " (loss_bbox): L1Loss()\n", " (fc_cls): Linear(in_features=1024, out_features=81, bias=True)\n", " (fc_reg): Linear(in_features=1024, out_features=320, bias=True)\n", " (shared_convs): ModuleList()\n", " (shared_fcs): ModuleList(\n", " (0): Linear(in_features=12544, out_features=1024, bias=True)\n", " (1): Linear(in_features=1024, out_features=1024, bias=True)\n", " )\n", " (cls_convs): ModuleList()\n", " (cls_fcs): ModuleList()\n", " (reg_convs): ModuleList()\n", " (reg_fcs): ModuleList()\n", " (relu): ReLU(inplace=True)\n", " )\n", " init_cfg=[{'type': 'Normal', 'std': 0.01, 'override': {'name': 'fc_cls'}}, {'type': 'Normal', 'std': 0.001, 'override': {'name': 'fc_reg'}}, {'type': 'Xavier', 'distribution': 'uniform', 'override': [{'name': 'shared_fcs'}, {'name': 'cls_fcs'}, {'name': 'reg_fcs'}]}]\n", " )\n", ")" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import mmcv\n", "from mmcv.runner import load_checkpoint\n", "\n", "from mmdet.apis import inference_detector, show_result_pyplot\n", "from mmdet.models import build_detector\n", "\n", "# Choose to use a config and initialize the detector\n", "config = 'configs/faster_rcnn/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py'\n", "# Setup a checkpoint file to load\n", "checkpoint = 'checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth'\n", "\n", "# Set the device to be used for evaluation\n", "device='cuda:0'\n", "\n", "# Load the config\n", "config = mmcv.Config.fromfile(config)\n", "# Set pretrained to be None since we do not need pretrained model here\n", "config.model.pretrained = None\n", "\n", "# Initialize the detector\n", "model = build_detector(config.model)\n", "\n", "# Load checkpoint\n", "checkpoint = load_checkpoint(model, checkpoint, map_location=device)\n", "\n", "# Set the classes of models for inference\n", "model.CLASSES = checkpoint['meta']['CLASSES']\n", "\n", "# We need to set the model's cfg for inference\n", "model.cfg = config\n", "\n", "# Convert the model to GPU\n", "model.to(device)\n", "# Convert the model into evaluation mode\n", "model.eval()" ] }, { "cell_type": "markdown", "metadata": { "id": "fLgFRMtP91ue" }, "source": [ "From the printed model, we will find that the model does consist of the components that we described earlier. It uses ResNet as its CNN backbone, and has a RPN head and RoI Head. In addition, the model has a neural network module, named neck, directly after the CNN backbone. It is a [feature pyramid network (FPN)](https://arxiv.org/abs/1612.03144) for enhancing the multi-scale features.\n", "\n", "\n", "### Inference the detector\n", "\n", "Since the model is successfully created and loaded, let's see how good it is. We use the high-level API `inference_detector` implemented in the MMDetection. This API is created to ease the inference process. The details of the codes can be found [here](https://github.com/open-mmlab/mmdetection/blob/master/mmdet/apis/inference.py#L15)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Wi6DRpsQPEmV", "outputId": "a0e1e23c-d78c-4381-9f4c-5603c81a0f87" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/content/mmdetection/mmdet/datasets/utils.py:69: UserWarning: \"ImageToTensor\" pipeline is replaced by \"DefaultFormatBundle\" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file.\n", " 'data pipeline in your config file.', UserWarning)\n", "/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py:718: UserWarning: Named tensors and all their associated APIs are an experimental feature and subject to change. Please do not use them for anything important until they are released as stable. (Triggered internally at /pytorch/c10/core/TensorImpl.h:1156.)\n", " return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)\n" ] } ], "source": [ "# Use the detector to do inference\n", "img = 'demo/demo.jpg'\n", "result = inference_detector(model, img)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 474 }, "id": "UsJU5D-QPX8L", "outputId": "b70aceab-d264-4f5e-cdbe-5db1389eeb29" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's plot the result\n", "show_result_pyplot(model, img, result, score_thr=0.3)" ] }, { "cell_type": "markdown", "metadata": { "id": "7GrWIJywLV-V" }, "source": [ "## Train A Detector on A Customized Dataset\n", "\n", "To train a new detector, there are usually three things to do:\n", "1. Support a new dataset\n", "2. Modify the config\n", "3. Train a new detector\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "id": "E73y5Lru-wBx" }, "source": [ "### Support a new dataset\n", "\n", "There are three ways to support a new dataset in MMDetection: \n", " 1. Reorganize the dataset into a COCO format.\n", " 2. Reorganize the dataset into a middle format.\n", " 3. Implement a new dataset.\n", "\n", "We recommend the first two methods, as they are usually easier than the third one.\n", "\n", "In this tutorial, we give an example that converts the data into the formats of existing datasets, e.g. COCO, VOC, etc. Other methods and more advanced usages can be found in the [doc](https://mmdetection.readthedocs.io/en/latest/tutorials/customize_dataset.html#).\n", "\n", "First, let's download a tiny dataset obtained from [KITTI](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d). We select the first 75 images and their annotations from the 3D object detection dataset (it is the same dataset as the 2D object detection dataset but with 3D annotations). We convert the original images from PNG to JPEG format with 80% quality to reduce the size of the dataset." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rHnw5Q_nARXq", "outputId": "089f8810-be3a-4627-e3d7-945b3c5cf29e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-02-08 11:33:06-- https://download.openmmlab.com/mmdetection/data/kitti_tiny.zip\n", "Resolving download.openmmlab.com (download.openmmlab.com)... 47.245.16.66\n", "Connecting to download.openmmlab.com (download.openmmlab.com)|47.245.16.66|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 6918271 (6.6M) [application/zip]\n", "Saving to: ‘kitti_tiny.zip’\n", "\n", "kitti_tiny.zip 100%[===================>] 6.60M 4.69MB/s in 1.4s \n", "\n", "2022-02-08 11:33:09 (4.69 MB/s) - ‘kitti_tiny.zip’ saved [6918271/6918271]\n", "\n" ] } ], "source": [ "# download, decompress the data\n", "!wget https://download.openmmlab.com/mmdetection/data/kitti_tiny.zip\n", "!unzip kitti_tiny.zip > /dev/null" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Wuwxw1oZRtVZ", "outputId": "c1cb0332-a381-4685-c692-ea7a6279d65d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Reading package lists...\n", "Building dependency tree...\n", "Reading state information...\n", "The following packages were automatically installed and are no longer required:\n", " cuda-command-line-tools-10-0 cuda-command-line-tools-10-1\n", " cuda-command-line-tools-11-0 cuda-compiler-10-0 cuda-compiler-10-1\n", " cuda-compiler-11-0 cuda-cuobjdump-10-0 cuda-cuobjdump-10-1\n", " cuda-cuobjdump-11-0 cuda-cupti-10-0 cuda-cupti-10-1 cuda-cupti-11-0\n", " cuda-cupti-dev-11-0 cuda-documentation-10-0 cuda-documentation-10-1\n", " cuda-documentation-11-0 cuda-documentation-11-1 cuda-gdb-10-0 cuda-gdb-10-1\n", " cuda-gdb-11-0 cuda-gpu-library-advisor-10-0 cuda-gpu-library-advisor-10-1\n", " cuda-libraries-10-0 cuda-libraries-10-1 cuda-libraries-11-0\n", " cuda-memcheck-10-0 cuda-memcheck-10-1 cuda-memcheck-11-0 cuda-nsight-10-0\n", " cuda-nsight-10-1 cuda-nsight-11-0 cuda-nsight-11-1 cuda-nsight-compute-10-0\n", " cuda-nsight-compute-10-1 cuda-nsight-compute-11-0 cuda-nsight-compute-11-1\n", " cuda-nsight-systems-10-1 cuda-nsight-systems-11-0 cuda-nsight-systems-11-1\n", " cuda-nvcc-10-0 cuda-nvcc-10-1 cuda-nvcc-11-0 cuda-nvdisasm-10-0\n", " cuda-nvdisasm-10-1 cuda-nvdisasm-11-0 cuda-nvml-dev-10-0 cuda-nvml-dev-10-1\n", " cuda-nvml-dev-11-0 cuda-nvprof-10-0 cuda-nvprof-10-1 cuda-nvprof-11-0\n", " cuda-nvprune-10-0 cuda-nvprune-10-1 cuda-nvprune-11-0 cuda-nvtx-10-0\n", " cuda-nvtx-10-1 cuda-nvtx-11-0 cuda-nvvp-10-0 cuda-nvvp-10-1 cuda-nvvp-11-0\n", " cuda-nvvp-11-1 cuda-samples-10-0 cuda-samples-10-1 cuda-samples-11-0\n", " cuda-samples-11-1 cuda-sanitizer-11-0 cuda-sanitizer-api-10-1\n", " cuda-toolkit-10-0 cuda-toolkit-10-1 cuda-toolkit-11-0 cuda-toolkit-11-1\n", " cuda-tools-10-0 cuda-tools-10-1 cuda-tools-11-0 cuda-tools-11-1\n", " cuda-visual-tools-10-0 cuda-visual-tools-10-1 cuda-visual-tools-11-0\n", " cuda-visual-tools-11-1 default-jre dkms freeglut3 freeglut3-dev\n", " keyboard-configuration libargon2-0 libcap2 libcryptsetup12\n", " libdevmapper1.02.1 libfontenc1 libidn11 libip4tc0 libjansson4\n", " libnvidia-cfg1-510 libnvidia-common-460 libnvidia-common-510\n", " libnvidia-extra-510 libnvidia-fbc1-510 libnvidia-gl-510 libpam-systemd\n", " libpolkit-agent-1-0 libpolkit-backend-1-0 libpolkit-gobject-1-0 libxfont2\n", " libxi-dev libxkbfile1 libxmu-dev libxmu-headers libxnvctrl0 libxtst6\n", " nsight-compute-2020.2.1 nsight-compute-2022.1.0 nsight-systems-2020.3.2\n", " nsight-systems-2020.3.4 nsight-systems-2021.5.2 nvidia-dkms-510\n", " nvidia-kernel-common-510 nvidia-kernel-source-510 nvidia-modprobe\n", " nvidia-settings openjdk-11-jre policykit-1 policykit-1-gnome python3-xkit\n", " screen-resolution-extra systemd systemd-sysv udev x11-xkb-utils\n", " xserver-common xserver-xorg-core-hwe-18.04 xserver-xorg-video-nvidia-510\n", "Use 'apt autoremove' to remove them.\n", "The following NEW packages will be installed:\n", " tree\n", "0 upgraded, 1 newly installed, 0 to remove and 39 not upgraded.\n", "Need to get 40.7 kB of archives.\n", "After this operation, 105 kB of additional disk space will be used.\n", "Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 tree amd64 1.7.0-5 [40.7 kB]\n", "Fetched 40.7 kB in 0s (146 kB/s)\n", "Selecting previously unselected package tree.\n", "(Reading database ... 155113 files and directories currently installed.)\n", "Preparing to unpack .../tree_1.7.0-5_amd64.deb ...\n", "Unpacking tree (1.7.0-5) ...\n", "Setting up tree (1.7.0-5) ...\n", "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n", "kitti_tiny\n", "├── training\n", "│   ├── image_2\n", "│   │   ├── 000000.jpeg\n", "│   │   ├── 000001.jpeg\n", "│   │   ├── 000002.jpeg\n", "│   │   ├── 000003.jpeg\n", "│   │   ├── 000004.jpeg\n", "│   │   ├── 000005.jpeg\n", "│   │   ├── 000006.jpeg\n", "│   │   ├── 000007.jpeg\n", "│   │   ├── 000008.jpeg\n", "│   │   ├── 000009.jpeg\n", "│   │   ├── 000010.jpeg\n", "│   │   ├── 000011.jpeg\n", "│   │   ├── 000012.jpeg\n", "│   │   ├── 000013.jpeg\n", "│   │   ├── 000014.jpeg\n", "│   │   ├── 000015.jpeg\n", "│   │   ├── 000016.jpeg\n", "│   │   ├── 000017.jpeg\n", "│   │   ├── 000018.jpeg\n", "│   │   ├── 000019.jpeg\n", "│   │   ├── 000020.jpeg\n", "│   │   ├── 000021.jpeg\n", "│   │   ├── 000022.jpeg\n", "│   │   ├── 000023.jpeg\n", "│   │   ├── 000024.jpeg\n", "│   │   ├── 000025.jpeg\n", "│   │   ├── 000026.jpeg\n", "│   │   ├── 000027.jpeg\n", "│   │   ├── 000028.jpeg\n", "│   │   ├── 000029.jpeg\n", "│   │   ├── 000030.jpeg\n", "│   │   ├── 000031.jpeg\n", "│   │   ├── 000032.jpeg\n", "│   │   ├── 000033.jpeg\n", "│   │   ├── 000034.jpeg\n", "│   │   ├── 000035.jpeg\n", "│   │   ├── 000036.jpeg\n", "│   │   ├── 000037.jpeg\n", "│   │   ├── 000038.jpeg\n", "│   │   ├── 000039.jpeg\n", "│   │   ├── 000040.jpeg\n", "│   │   ├── 000041.jpeg\n", "│   │   ├── 000042.jpeg\n", "│   │   ├── 000043.jpeg\n", "│   │   ├── 000044.jpeg\n", "│   │   ├── 000045.jpeg\n", "│   │   ├── 000046.jpeg\n", "│   │   ├── 000047.jpeg\n", "│   │   ├── 000048.jpeg\n", "│   │   ├── 000049.jpeg\n", "│   │   ├── 000050.jpeg\n", "│   │   ├── 000051.jpeg\n", "│   │   ├── 000052.jpeg\n", "│   │   ├── 000053.jpeg\n", "│   │   ├── 000054.jpeg\n", "│   │   ├── 000055.jpeg\n", "│   │   ├── 000056.jpeg\n", "│   │   ├── 000057.jpeg\n", "│   │   ├── 000058.jpeg\n", "│   │   ├── 000059.jpeg\n", "│   │   ├── 000060.jpeg\n", "│   │   ├── 000061.jpeg\n", "│   │   ├── 000062.jpeg\n", "│   │   ├── 000063.jpeg\n", "│   │   ├── 000064.jpeg\n", "│   │   ├── 000065.jpeg\n", "│   │   ├── 000066.jpeg\n", "│   │   ├── 000067.jpeg\n", "│   │   ├── 000068.jpeg\n", "│   │   ├── 000069.jpeg\n", "│   │   ├── 000070.jpeg\n", "│   │   ├── 000071.jpeg\n", "│   │   ├── 000072.jpeg\n", "│   │   ├── 000073.jpeg\n", "│   │   └── 000074.jpeg\n", "│   └── label_2\n", "│   ├── 000000.txt\n", "│   ├── 000001.txt\n", "│   ├── 000002.txt\n", "│   ├── 000003.txt\n", "│   ├── 000004.txt\n", "│   ├── 000005.txt\n", "│   ├── 000006.txt\n", "│   ├── 000007.txt\n", "│   ├── 000008.txt\n", "│   ├── 000009.txt\n", "│   ├── 000010.txt\n", "│   ├── 000011.txt\n", "│   ├── 000012.txt\n", "│   ├── 000013.txt\n", "│   ├── 000014.txt\n", "│   ├── 000015.txt\n", "│   ├── 000016.txt\n", "│   ├── 000017.txt\n", "│   ├── 000018.txt\n", "│   ├── 000019.txt\n", "│   ├── 000020.txt\n", "│   ├── 000021.txt\n", "│   ├── 000022.txt\n", "│   ├── 000023.txt\n", "│   ├── 000024.txt\n", "│   ├── 000025.txt\n", "│   ├── 000026.txt\n", "│   ├── 000027.txt\n", "│   ├── 000028.txt\n", "│   ├── 000029.txt\n", "│   ├── 000030.txt\n", "│   ├── 000031.txt\n", "│   ├── 000032.txt\n", "│   ├── 000033.txt\n", "│   ├── 000034.txt\n", "│   ├── 000035.txt\n", "│   ├── 000036.txt\n", "│   ├── 000037.txt\n", "│   ├── 000038.txt\n", "│   ├── 000039.txt\n", "│   ├── 000040.txt\n", "│   ├── 000041.txt\n", "│   ├── 000042.txt\n", "│   ├── 000043.txt\n", "│   ├── 000044.txt\n", "│   ├── 000045.txt\n", "│   ├── 000046.txt\n", "│   ├── 000047.txt\n", "│   ├── 000048.txt\n", "│   ├── 000049.txt\n", "│   ├── 000050.txt\n", "│   ├── 000051.txt\n", "│   ├── 000052.txt\n", "│   ├── 000053.txt\n", "│   ├── 000054.txt\n", "│   ├── 000055.txt\n", "│   ├── 000056.txt\n", "│   ├── 000057.txt\n", "│   ├── 000058.txt\n", "│   ├── 000059.txt\n", "│   ├── 000060.txt\n", "│   ├── 000061.txt\n", "│   ├── 000062.txt\n", "│   ├── 000063.txt\n", "│   ├── 000064.txt\n", "│   ├── 000065.txt\n", "│   ├── 000066.txt\n", "│   ├── 000067.txt\n", "│   ├── 000068.txt\n", "│   ├── 000069.txt\n", "│   ├── 000070.txt\n", "│   ├── 000071.txt\n", "│   ├── 000072.txt\n", "│   ├── 000073.txt\n", "│   └── 000074.txt\n", "├── train.txt\n", "└── val.txt\n", "\n", "3 directories, 152 files\n" ] } ], "source": [ "# Check the directory structure of the tiny data\n", "\n", "# Install tree first\n", "!apt-get -q install tree\n", "!tree kitti_tiny" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 304 }, "id": "YnQQqzOWzE91", "outputId": "baf6a89b-dbb2-4212-9e34-7055a9e2574c" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Let's take a look at the dataset image\n", "import mmcv\n", "import matplotlib.pyplot as plt\n", "\n", "img = mmcv.imread('kitti_tiny/training/image_2/000073.jpeg')\n", "plt.figure(figsize=(15, 10))\n", "plt.imshow(mmcv.bgr2rgb(img))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "PMZvtSIl71qi" }, "source": [ "After downloading the data, we need to implement a function to convert the KITTI annotation format into the middle format. In this tutorial, we choose to convert them in **`load_annotations`** function in a newly implemented **`KittiTinyDataset`**.\n", "\n", "Let's take a look at the annotation txt file.\n", "\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "n7rwalnPd6e1", "outputId": "54bfbfa4-463b-45a0-f77c-a80557c1bd69" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pedestrian 0.00 0 -0.20 712.40 143.00 810.73 307.92 1.89 0.48 1.20 1.84 1.47 8.41 0.01\n" ] } ], "source": [ "# Check the label of a single image\n", "!cat kitti_tiny/training/label_2/000000.txt" ] }, { "cell_type": "markdown", "metadata": { "id": "QA1pFg-FeO3l" }, "source": [ "According to the KITTI's documentation, the first column indicates the class of the object, and the 5th to 8th columns indicate the bboxes. We need to read annotations of each image and convert them into middle format that MMDetection can accept, as follows:\n", "\n", "```python\n", "[\n", " {\n", " 'filename': 'a.jpg',\n", " 'width': 1280,\n", " 'height': 720,\n", " 'ann': {\n", " 'bboxes': (n, 4) in (x1, y1, x2, y2) order,\n", " 'labels': (n, ),\n", " 'bboxes_ignore': (k, 4), (optional field)\n", " 'labels_ignore': (k, 4) (optional field)\n", " }\n", " },\n", " ...\n", "]\n", "```" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "GdSaB2ad0EdX" }, "outputs": [], "source": [ "import copy\n", "import os.path as osp\n", "\n", "import mmcv\n", "import numpy as np\n", "\n", "from mmdet.datasets.builder import DATASETS\n", "from mmdet.datasets.custom import CustomDataset\n", "\n", "@DATASETS.register_module()\n", "class KittiTinyDataset(CustomDataset):\n", "\n", " CLASSES = ('Car', 'Pedestrian', 'Cyclist')\n", "\n", " def load_annotations(self, ann_file):\n", " cat2label = {k: i for i, k in enumerate(self.CLASSES)}\n", " # load image list from file\n", " image_list = mmcv.list_from_file(self.ann_file)\n", " \n", " data_infos = []\n", " # convert annotations to middle format\n", " for image_id in image_list:\n", " filename = f'{self.img_prefix}/{image_id}.jpeg'\n", " image = mmcv.imread(filename)\n", " height, width = image.shape[:2]\n", " \n", " data_info = dict(filename=f'{image_id}.jpeg', width=width, height=height)\n", " \n", " # load annotations\n", " label_prefix = self.img_prefix.replace('image_2', 'label_2')\n", " lines = mmcv.list_from_file(osp.join(label_prefix, f'{image_id}.txt'))\n", " \n", " content = [line.strip().split(' ') for line in lines]\n", " bbox_names = [x[0] for x in content]\n", " bboxes = [[float(info) for info in x[4:8]] for x in content]\n", " \n", " gt_bboxes = []\n", " gt_labels = []\n", " gt_bboxes_ignore = []\n", " gt_labels_ignore = []\n", " \n", " # filter 'DontCare'\n", " for bbox_name, bbox in zip(bbox_names, bboxes):\n", " if bbox_name in cat2label:\n", " gt_labels.append(cat2label[bbox_name])\n", " gt_bboxes.append(bbox)\n", " else:\n", " gt_labels_ignore.append(-1)\n", " gt_bboxes_ignore.append(bbox)\n", "\n", " data_anno = dict(\n", " bboxes=np.array(gt_bboxes, dtype=np.float32).reshape(-1, 4),\n", " labels=np.array(gt_labels, dtype=np.long),\n", " bboxes_ignore=np.array(gt_bboxes_ignore,\n", " dtype=np.float32).reshape(-1, 4),\n", " labels_ignore=np.array(gt_labels_ignore, dtype=np.long))\n", "\n", " data_info.update(ann=data_anno)\n", " data_infos.append(data_info)\n", "\n", " return data_infos" ] }, { "cell_type": "markdown", "metadata": { "id": "PwqJOpBe-bMj" }, "source": [ "### Modify the config\n", "\n", "In the next step, we need to modify the config for the training.\n", "To accelerate the process, we finetune a detector using a pre-trained detector." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "hamZrlnH-YDD" }, "outputs": [], "source": [ "from mmcv import Config\n", "cfg = Config.fromfile('./configs/faster_rcnn/faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py')" ] }, { "cell_type": "markdown", "metadata": { "id": "HntziLGq-92Z" }, "source": [ "Given a config that trains a Faster R-CNN on COCO dataset, we need to modify some values to use it for training Faster R-CNN on KITTI dataset. We modify the config of datasets, learning rate schedules, and runtime settings." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "pUbwD8uV0PR8", "outputId": "76e68abb-6b42-488f-cbca-6da39e094943" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Config:\n", "model = dict(\n", " type='FasterRCNN',\n", " backbone=dict(\n", " type='ResNet',\n", " depth=50,\n", " num_stages=4,\n", " out_indices=(0, 1, 2, 3),\n", " frozen_stages=1,\n", " norm_cfg=dict(type='BN', requires_grad=False),\n", " norm_eval=True,\n", " style='caffe',\n", " init_cfg=dict(\n", " type='Pretrained',\n", " checkpoint='open-mmlab://detectron2/resnet50_caffe')),\n", " neck=dict(\n", " type='FPN',\n", " in_channels=[256, 512, 1024, 2048],\n", " out_channels=256,\n", " num_outs=5),\n", " rpn_head=dict(\n", " type='RPNHead',\n", " in_channels=256,\n", " feat_channels=256,\n", " anchor_generator=dict(\n", " type='AnchorGenerator',\n", " scales=[8],\n", " ratios=[0.5, 1.0, 2.0],\n", " strides=[4, 8, 16, 32, 64]),\n", " bbox_coder=dict(\n", " type='DeltaXYWHBBoxCoder',\n", " target_means=[0.0, 0.0, 0.0, 0.0],\n", " target_stds=[1.0, 1.0, 1.0, 1.0]),\n", " loss_cls=dict(\n", " type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),\n", " loss_bbox=dict(type='L1Loss', loss_weight=1.0)),\n", " roi_head=dict(\n", " type='StandardRoIHead',\n", " bbox_roi_extractor=dict(\n", " type='SingleRoIExtractor',\n", " roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),\n", " out_channels=256,\n", " featmap_strides=[4, 8, 16, 32]),\n", " bbox_head=dict(\n", " type='Shared2FCBBoxHead',\n", " in_channels=256,\n", " fc_out_channels=1024,\n", " roi_feat_size=7,\n", " num_classes=3,\n", " bbox_coder=dict(\n", " type='DeltaXYWHBBoxCoder',\n", " target_means=[0.0, 0.0, 0.0, 0.0],\n", " target_stds=[0.1, 0.1, 0.2, 0.2]),\n", " reg_class_agnostic=False,\n", " loss_cls=dict(\n", " type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n", " loss_bbox=dict(type='L1Loss', loss_weight=1.0))),\n", " train_cfg=dict(\n", " rpn=dict(\n", " assigner=dict(\n", " type='MaxIoUAssigner',\n", " pos_iou_thr=0.7,\n", " neg_iou_thr=0.3,\n", " min_pos_iou=0.3,\n", " match_low_quality=True,\n", " ignore_iof_thr=-1),\n", " sampler=dict(\n", " type='RandomSampler',\n", " num=256,\n", " pos_fraction=0.5,\n", " neg_pos_ub=-1,\n", " add_gt_as_proposals=False),\n", " allowed_border=-1,\n", " pos_weight=-1,\n", " debug=False),\n", " rpn_proposal=dict(\n", " nms_pre=2000,\n", " max_per_img=1000,\n", " nms=dict(type='nms', iou_threshold=0.7),\n", " min_bbox_size=0),\n", " rcnn=dict(\n", " assigner=dict(\n", " type='MaxIoUAssigner',\n", " pos_iou_thr=0.5,\n", " neg_iou_thr=0.5,\n", " min_pos_iou=0.5,\n", " match_low_quality=False,\n", " ignore_iof_thr=-1),\n", " sampler=dict(\n", " type='RandomSampler',\n", " num=512,\n", " pos_fraction=0.25,\n", " neg_pos_ub=-1,\n", " add_gt_as_proposals=True),\n", " pos_weight=-1,\n", " debug=False)),\n", " test_cfg=dict(\n", " rpn=dict(\n", " nms_pre=1000,\n", " max_per_img=1000,\n", " nms=dict(type='nms', iou_threshold=0.7),\n", " min_bbox_size=0),\n", " rcnn=dict(\n", " score_thr=0.05,\n", " nms=dict(type='nms', iou_threshold=0.5),\n", " max_per_img=100)))\n", "dataset_type = 'KittiTinyDataset'\n", "data_root = 'kitti_tiny/'\n", "img_norm_cfg = dict(\n", " mean=[103.53, 116.28, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)\n", "train_pipeline = [\n", " dict(type='LoadImageFromFile'),\n", " dict(type='LoadAnnotations', with_bbox=True),\n", " dict(\n", " type='Resize',\n", " img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n", " (1333, 768), (1333, 800)],\n", " multiscale_mode='value',\n", " keep_ratio=True),\n", " dict(type='RandomFlip', flip_ratio=0.5),\n", " dict(\n", " type='Normalize',\n", " mean=[103.53, 116.28, 123.675],\n", " std=[1.0, 1.0, 1.0],\n", " to_rgb=False),\n", " dict(type='Pad', size_divisor=32),\n", " dict(type='DefaultFormatBundle'),\n", " dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])\n", "]\n", "test_pipeline = [\n", " dict(type='LoadImageFromFile'),\n", " dict(\n", " type='MultiScaleFlipAug',\n", " img_scale=(1333, 800),\n", " flip=False,\n", " transforms=[\n", " dict(type='Resize', keep_ratio=True),\n", " dict(type='RandomFlip'),\n", " dict(\n", " type='Normalize',\n", " mean=[103.53, 116.28, 123.675],\n", " std=[1.0, 1.0, 1.0],\n", " to_rgb=False),\n", " dict(type='Pad', size_divisor=32),\n", " dict(type='ImageToTensor', keys=['img']),\n", " dict(type='Collect', keys=['img'])\n", " ])\n", "]\n", "data = dict(\n", " samples_per_gpu=2,\n", " workers_per_gpu=2,\n", " train=dict(\n", " type='KittiTinyDataset',\n", " ann_file='train.txt',\n", " img_prefix='training/image_2',\n", " pipeline=[\n", " dict(type='LoadImageFromFile'),\n", " dict(type='LoadAnnotations', with_bbox=True),\n", " dict(\n", " type='Resize',\n", " img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n", " (1333, 768), (1333, 800)],\n", " multiscale_mode='value',\n", " keep_ratio=True),\n", " dict(type='RandomFlip', flip_ratio=0.5),\n", " dict(\n", " type='Normalize',\n", " mean=[103.53, 116.28, 123.675],\n", " std=[1.0, 1.0, 1.0],\n", " to_rgb=False),\n", " dict(type='Pad', size_divisor=32),\n", " dict(type='DefaultFormatBundle'),\n", " dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])\n", " ],\n", " data_root='kitti_tiny/'),\n", " val=dict(\n", " type='KittiTinyDataset',\n", " ann_file='val.txt',\n", " img_prefix='training/image_2',\n", " pipeline=[\n", " dict(type='LoadImageFromFile'),\n", " dict(\n", " type='MultiScaleFlipAug',\n", " img_scale=(1333, 800),\n", " flip=False,\n", " transforms=[\n", " dict(type='Resize', keep_ratio=True),\n", " dict(type='RandomFlip'),\n", " dict(\n", " type='Normalize',\n", " mean=[103.53, 116.28, 123.675],\n", " std=[1.0, 1.0, 1.0],\n", " to_rgb=False),\n", " dict(type='Pad', size_divisor=32),\n", " dict(type='ImageToTensor', keys=['img']),\n", " dict(type='Collect', keys=['img'])\n", " ])\n", " ],\n", " data_root='kitti_tiny/'),\n", " test=dict(\n", " type='KittiTinyDataset',\n", " ann_file='train.txt',\n", " img_prefix='training/image_2',\n", " pipeline=[\n", " dict(type='LoadImageFromFile'),\n", " dict(\n", " type='MultiScaleFlipAug',\n", " img_scale=(1333, 800),\n", " flip=False,\n", " transforms=[\n", " dict(type='Resize', keep_ratio=True),\n", " dict(type='RandomFlip'),\n", " dict(\n", " type='Normalize',\n", " mean=[103.53, 116.28, 123.675],\n", " std=[1.0, 1.0, 1.0],\n", " to_rgb=False),\n", " dict(type='Pad', size_divisor=32),\n", " dict(type='ImageToTensor', keys=['img']),\n", " dict(type='Collect', keys=['img'])\n", " ])\n", " ],\n", " data_root='kitti_tiny/'))\n", "evaluation = dict(interval=12, metric='mAP')\n", "optimizer = dict(type='SGD', lr=0.0025, momentum=0.9, weight_decay=0.0001)\n", "optimizer_config = dict(grad_clip=None)\n", "lr_config = dict(\n", " policy='step',\n", " warmup=None,\n", " warmup_iters=500,\n", " warmup_ratio=0.001,\n", " step=[8, 11])\n", "runner = dict(type='EpochBasedRunner', max_epochs=12)\n", "checkpoint_config = dict(interval=12)\n", "log_config = dict(\n", " interval=10,\n", " hooks=[dict(type='TextLoggerHook'),\n", " dict(type='TensorboardLoggerHook')])\n", "custom_hooks = [dict(type='NumClassCheckHook')]\n", "dist_params = dict(backend='nccl')\n", "log_level = 'INFO'\n", "load_from = 'checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth'\n", "resume_from = None\n", "workflow = [('train', 1)]\n", "opencv_num_threads = 0\n", "mp_start_method = 'fork'\n", "work_dir = './tutorial_exps'\n", "seed = 0\n", "gpu_ids = range(0, 1)\n", "\n" ] } ], "source": [ "from mmdet.apis import set_random_seed\n", "\n", "# Modify dataset type and path\n", "cfg.dataset_type = 'KittiTinyDataset'\n", "cfg.data_root = 'kitti_tiny/'\n", "\n", "cfg.data.test.type = 'KittiTinyDataset'\n", "cfg.data.test.data_root = 'kitti_tiny/'\n", "cfg.data.test.ann_file = 'train.txt'\n", "cfg.data.test.img_prefix = 'training/image_2'\n", "\n", "cfg.data.train.type = 'KittiTinyDataset'\n", "cfg.data.train.data_root = 'kitti_tiny/'\n", "cfg.data.train.ann_file = 'train.txt'\n", "cfg.data.train.img_prefix = 'training/image_2'\n", "\n", "cfg.data.val.type = 'KittiTinyDataset'\n", "cfg.data.val.data_root = 'kitti_tiny/'\n", "cfg.data.val.ann_file = 'val.txt'\n", "cfg.data.val.img_prefix = 'training/image_2'\n", "\n", "# modify num classes of the model in box head\n", "cfg.model.roi_head.bbox_head.num_classes = 3\n", "# If we need to finetune a model based on a pre-trained detector, we need to\n", "# use load_from to set the path of checkpoints.\n", "cfg.load_from = 'checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth'\n", "\n", "# Set up working dir to save files and logs.\n", "cfg.work_dir = './tutorial_exps'\n", "\n", "# The original learning rate (LR) is set for 8-GPU training.\n", "# We divide it by 8 since we only use one GPU.\n", "cfg.optimizer.lr = 0.02 / 8\n", "cfg.lr_config.warmup = None\n", "cfg.log_config.interval = 10\n", "\n", "# Change the evaluation metric since we use customized dataset.\n", "cfg.evaluation.metric = 'mAP'\n", "# We can set the evaluation interval to reduce the evaluation times\n", "cfg.evaluation.interval = 12\n", "# We can set the checkpoint saving interval to reduce the storage cost\n", "cfg.checkpoint_config.interval = 12\n", "\n", "# Set seed thus the results are more reproducible\n", "cfg.seed = 0\n", "set_random_seed(0, deterministic=False)\n", "cfg.device = 'cuda'\n", "cfg.gpu_ids = range(1)\n", "\n", "# We can also use tensorboard to log the training process\n", "cfg.log_config.hooks = [\n", " dict(type='TextLoggerHook'),\n", " dict(type='TensorboardLoggerHook')]\n", "\n", "\n", "# We can initialize the logger for training and have a look\n", "# at the final config used for training\n", "print(f'Config:\\n{cfg.pretty_text}')\n" ] }, { "cell_type": "markdown", "metadata": { "id": "111W_oZV_3wa" }, "source": [ "### Train a new detector\n", "\n", "Finally, lets initialize the dataset and detector, then train a new detector! We use the high-level API `train_detector` implemented by MMDetection. This is also used in our training scripts. For details of the implementation, please see [here](https://github.com/open-mmlab/mmdetection/blob/master/mmdet/apis/train.py)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7WBWHu010PN3", "outputId": "a7646284-f909-46d6-a360-22160daeb1cc" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/content/mmdetection/mmdet/datasets/custom.py:180: UserWarning: CustomDataset does not support filtering empty gt images.\n", " 'CustomDataset does not support filtering empty gt images.')\n", "2022-02-08 11:38:22,273 - mmdet - INFO - load checkpoint from local path: checkpoints/faster_rcnn_r50_caffe_fpn_mstrain_3x_coco_20210526_095054-1f77628b.pth\n", "2022-02-08 11:38:22,406 - mmdet - WARNING - The model and loaded state dict do not match exactly\n", "\n", "size mismatch for roi_head.bbox_head.fc_cls.weight: copying a param with shape torch.Size([81, 1024]) from checkpoint, the shape in current model is torch.Size([4, 1024]).\n", "size mismatch for roi_head.bbox_head.fc_cls.bias: copying a param with shape torch.Size([81]) from checkpoint, the shape in current model is torch.Size([4]).\n", "size mismatch for roi_head.bbox_head.fc_reg.weight: copying a param with shape torch.Size([320, 1024]) from checkpoint, the shape in current model is torch.Size([12, 1024]).\n", "size mismatch for roi_head.bbox_head.fc_reg.bias: copying a param with shape torch.Size([320]) from checkpoint, the shape in current model is torch.Size([12]).\n", "2022-02-08 11:38:22,410 - mmdet - INFO - Start running, host: root@503df4019aac, work_dir: /content/mmdetection/tutorial_exps\n", "2022-02-08 11:38:22,412 - mmdet - INFO - Hooks will be executed in the following order:\n", "before_run:\n", "(VERY_HIGH ) StepLrUpdaterHook \n", "(NORMAL ) CheckpointHook \n", "(LOW ) EvalHook \n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "before_train_epoch:\n", "(VERY_HIGH ) StepLrUpdaterHook \n", "(NORMAL ) NumClassCheckHook \n", "(LOW ) IterTimerHook \n", "(LOW ) EvalHook \n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "before_train_iter:\n", "(VERY_HIGH ) StepLrUpdaterHook \n", "(LOW ) IterTimerHook \n", "(LOW ) EvalHook \n", " -------------------- \n", "after_train_iter:\n", "(ABOVE_NORMAL) OptimizerHook \n", "(NORMAL ) CheckpointHook \n", "(LOW ) IterTimerHook \n", "(LOW ) EvalHook \n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "after_train_epoch:\n", "(NORMAL ) CheckpointHook \n", "(LOW ) EvalHook \n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "before_val_epoch:\n", "(NORMAL ) NumClassCheckHook \n", "(LOW ) IterTimerHook \n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "before_val_iter:\n", "(LOW ) IterTimerHook \n", " -------------------- \n", "after_val_iter:\n", "(LOW ) IterTimerHook \n", " -------------------- \n", "after_val_epoch:\n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "after_run:\n", "(VERY_LOW ) TextLoggerHook \n", "(VERY_LOW ) TensorboardLoggerHook \n", " -------------------- \n", "2022-02-08 11:38:22,414 - mmdet - INFO - workflow: [('train', 1)], max: 12 epochs\n", "2022-02-08 11:38:22,417 - mmdet - INFO - Checkpoints will be saved to /content/mmdetection/tutorial_exps by HardDiskBackend.\n", "2022-02-08 11:38:35,245 - mmdet - INFO - Epoch [1][10/25]\tlr: 2.500e-03, eta: 0:03:51, time: 0.799, data_time: 0.231, memory: 2455, loss_rpn_cls: 0.0254, loss_rpn_bbox: 0.0173, loss_cls: 0.5374, acc: 81.6309, loss_bbox: 0.3946, loss: 0.9746\n", "2022-02-08 11:38:38,778 - mmdet - INFO - Epoch [1][20/25]\tlr: 2.500e-03, eta: 0:02:41, time: 0.353, data_time: 0.024, memory: 2455, loss_rpn_cls: 0.0158, loss_rpn_bbox: 0.0119, loss_cls: 0.1778, acc: 93.3789, loss_bbox: 0.3290, loss: 0.5344\n", "2022-02-08 11:38:46,422 - mmdet - INFO - Epoch [2][10/25]\tlr: 2.500e-03, eta: 0:02:10, time: 0.576, data_time: 0.230, memory: 2456, loss_rpn_cls: 0.0203, loss_rpn_bbox: 0.0139, loss_cls: 0.1573, acc: 94.4824, loss_bbox: 0.2689, loss: 0.4603\n", "2022-02-08 11:38:50,015 - mmdet - INFO - Epoch [2][20/25]\tlr: 2.500e-03, eta: 0:01:58, time: 0.360, data_time: 0.023, memory: 2456, loss_rpn_cls: 0.0127, loss_rpn_bbox: 0.0127, loss_cls: 0.1446, acc: 94.6777, loss_bbox: 0.2154, loss: 0.3854\n", "2022-02-08 11:38:57,686 - mmdet - INFO - Epoch [3][10/25]\tlr: 2.500e-03, eta: 0:01:46, time: 0.575, data_time: 0.226, memory: 2456, loss_rpn_cls: 0.0064, loss_rpn_bbox: 0.0104, loss_cls: 0.0943, acc: 96.5039, loss_bbox: 0.1586, loss: 0.2697\n", "2022-02-08 11:39:01,390 - mmdet - INFO - Epoch [3][20/25]\tlr: 2.500e-03, eta: 0:01:39, time: 0.370, data_time: 0.024, memory: 2456, loss_rpn_cls: 0.0072, loss_rpn_bbox: 0.0132, loss_cls: 0.1439, acc: 94.6191, loss_bbox: 0.2597, loss: 0.4242\n", "2022-02-08 11:39:09,266 - mmdet - INFO - Epoch [4][10/25]\tlr: 2.500e-03, eta: 0:01:31, time: 0.590, data_time: 0.228, memory: 2456, loss_rpn_cls: 0.0057, loss_rpn_bbox: 0.0134, loss_cls: 0.1181, acc: 95.4199, loss_bbox: 0.2243, loss: 0.3616\n", "2022-02-08 11:39:13,065 - mmdet - INFO - Epoch [4][20/25]\tlr: 2.500e-03, eta: 0:01:26, time: 0.379, data_time: 0.024, memory: 2456, loss_rpn_cls: 0.0050, loss_rpn_bbox: 0.0117, loss_cls: 0.1196, acc: 95.4004, loss_bbox: 0.2120, loss: 0.3484\n", "2022-02-08 11:39:20,854 - mmdet - INFO - Epoch [5][10/25]\tlr: 2.500e-03, eta: 0:01:19, time: 0.582, data_time: 0.228, memory: 2456, loss_rpn_cls: 0.0028, loss_rpn_bbox: 0.0091, loss_cls: 0.1021, acc: 96.1719, loss_bbox: 0.2075, loss: 0.3216\n", "2022-02-08 11:39:24,557 - mmdet - INFO - Epoch [5][20/25]\tlr: 2.500e-03, eta: 0:01:14, time: 0.369, data_time: 0.023, memory: 2456, loss_rpn_cls: 0.0030, loss_rpn_bbox: 0.0106, loss_cls: 0.0942, acc: 96.6309, loss_bbox: 0.1926, loss: 0.3003\n", "2022-02-08 11:39:32,255 - mmdet - INFO - Epoch [6][10/25]\tlr: 2.500e-03, eta: 0:01:07, time: 0.576, data_time: 0.226, memory: 2456, loss_rpn_cls: 0.0025, loss_rpn_bbox: 0.0081, loss_cls: 0.0787, acc: 97.2363, loss_bbox: 0.1827, loss: 0.2721\n", "2022-02-08 11:39:35,900 - mmdet - INFO - Epoch [6][20/25]\tlr: 2.500e-03, eta: 0:01:02, time: 0.364, data_time: 0.023, memory: 2456, loss_rpn_cls: 0.0035, loss_rpn_bbox: 0.0100, loss_cls: 0.0901, acc: 96.5332, loss_bbox: 0.1857, loss: 0.2893\n", "2022-02-08 11:39:43,555 - mmdet - INFO - Epoch [7][10/25]\tlr: 2.500e-03, eta: 0:00:56, time: 0.576, data_time: 0.228, memory: 2456, loss_rpn_cls: 0.0023, loss_rpn_bbox: 0.0093, loss_cls: 0.0877, acc: 96.7383, loss_bbox: 0.1736, loss: 0.2730\n", "2022-02-08 11:39:47,186 - mmdet - INFO - Epoch [7][20/25]\tlr: 2.500e-03, eta: 0:00:52, time: 0.362, data_time: 0.024, memory: 2456, loss_rpn_cls: 0.0040, loss_rpn_bbox: 0.0112, loss_cls: 0.0889, acc: 96.6699, loss_bbox: 0.1800, loss: 0.2840\n", "2022-02-08 11:39:54,874 - mmdet - INFO - Epoch [8][10/25]\tlr: 2.500e-03, eta: 0:00:46, time: 0.575, data_time: 0.227, memory: 2456, loss_rpn_cls: 0.0020, loss_rpn_bbox: 0.0094, loss_cls: 0.0748, acc: 97.0801, loss_bbox: 0.1381, loss: 0.2243\n", "2022-02-08 11:39:58,511 - mmdet - INFO - Epoch [8][20/25]\tlr: 2.500e-03, eta: 0:00:41, time: 0.364, data_time: 0.025, memory: 2456, loss_rpn_cls: 0.0031, loss_rpn_bbox: 0.0081, loss_cls: 0.0743, acc: 97.0801, loss_bbox: 0.1635, loss: 0.2489\n", "2022-02-08 11:40:06,228 - mmdet - INFO - Epoch [9][10/25]\tlr: 2.500e-04, eta: 0:00:35, time: 0.577, data_time: 0.227, memory: 2456, loss_rpn_cls: 0.0024, loss_rpn_bbox: 0.0085, loss_cls: 0.0649, acc: 97.5781, loss_bbox: 0.1307, loss: 0.2065\n", "2022-02-08 11:40:09,873 - mmdet - INFO - Epoch [9][20/25]\tlr: 2.500e-04, eta: 0:00:31, time: 0.365, data_time: 0.025, memory: 2456, loss_rpn_cls: 0.0010, loss_rpn_bbox: 0.0066, loss_cls: 0.0530, acc: 97.9199, loss_bbox: 0.1090, loss: 0.1695\n", "2022-02-08 11:40:17,597 - mmdet - INFO - Epoch [10][10/25]\tlr: 2.500e-04, eta: 0:00:25, time: 0.579, data_time: 0.227, memory: 2456, loss_rpn_cls: 0.0041, loss_rpn_bbox: 0.0084, loss_cls: 0.0676, acc: 97.3633, loss_bbox: 0.1367, loss: 0.2168\n", "2022-02-08 11:40:21,269 - mmdet - INFO - Epoch [10][20/25]\tlr: 2.500e-04, eta: 0:00:21, time: 0.367, data_time: 0.025, memory: 2456, loss_rpn_cls: 0.0008, loss_rpn_bbox: 0.0055, loss_cls: 0.0593, acc: 97.7246, loss_bbox: 0.1277, loss: 0.1934\n", "2022-02-08 11:40:29,010 - mmdet - INFO - Epoch [11][10/25]\tlr: 2.500e-04, eta: 0:00:15, time: 0.579, data_time: 0.228, memory: 2456, loss_rpn_cls: 0.0007, loss_rpn_bbox: 0.0072, loss_cls: 0.0618, acc: 97.5977, loss_bbox: 0.1196, loss: 0.1892\n", "2022-02-08 11:40:32,714 - mmdet - INFO - Epoch [11][20/25]\tlr: 2.500e-04, eta: 0:00:11, time: 0.370, data_time: 0.024, memory: 2456, loss_rpn_cls: 0.0011, loss_rpn_bbox: 0.0074, loss_cls: 0.0552, acc: 97.9297, loss_bbox: 0.1246, loss: 0.1883\n", "2022-02-08 11:40:40,497 - mmdet - INFO - Epoch [12][10/25]\tlr: 2.500e-05, eta: 0:00:05, time: 0.583, data_time: 0.227, memory: 2456, loss_rpn_cls: 0.0010, loss_rpn_bbox: 0.0060, loss_cls: 0.0563, acc: 97.7637, loss_bbox: 0.1237, loss: 0.1871\n", "2022-02-08 11:40:44,191 - mmdet - INFO - Epoch [12][20/25]\tlr: 2.500e-05, eta: 0:00:01, time: 0.369, data_time: 0.024, memory: 2456, loss_rpn_cls: 0.0013, loss_rpn_bbox: 0.0049, loss_cls: 0.0487, acc: 98.0273, loss_bbox: 0.0890, loss: 0.1439\n", "2022-02-08 11:40:45,980 - mmdet - INFO - Saving checkpoint at 12 epochs\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 25/25, 9.7 task/s, elapsed: 3s, ETA: 0s\n", "---------------iou_thr: 0.5---------------\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2022-02-08 11:40:51,306 - mmdet - INFO - \n", "+------------+-----+------+--------+-------+\n", "| class | gts | dets | recall | ap |\n", "+------------+-----+------+--------+-------+\n", "| Car | 62 | 129 | 0.968 | 0.869 |\n", "| Pedestrian | 13 | 38 | 0.846 | 0.752 |\n", "| Cyclist | 7 | 51 | 0.571 | 0.123 |\n", "+------------+-----+------+--------+-------+\n", "| mAP | | | | 0.581 |\n", "+------------+-----+------+--------+-------+\n", "2022-02-08 11:40:51,309 - mmdet - INFO - Epoch(val) [12][25]\tAP50: 0.5810, mAP: 0.5813\n" ] } ], "source": [ "from mmdet.datasets import build_dataset\n", "from mmdet.models import build_detector\n", "from mmdet.apis import train_detector\n", "\n", "\n", "# Build dataset\n", "datasets = [build_dataset(cfg.data.train)]\n", "\n", "# Build the detector\n", "model = build_detector(cfg.model)\n", "# Add an attribute for visualization convenience\n", "model.CLASSES = datasets[0].CLASSES\n", "\n", "# Create work_dir\n", "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n", "train_detector(model, datasets, cfg, distributed=False, validate=True)" ] }, { "cell_type": "markdown", "metadata": { "id": "_vYQF5K2NqqI" }, "source": [ "### Understand the log\n", "From the log, we can have a basic understanding on the training process and know how well the detector is trained.\n", "\n", "First, since the dataset we are using is small, we loaded a pre-trained Faster R-CNN model and fine-tune it for detection. \n", "The original Faster R-CNN is trained on COCO dataset that contains 80 classes but KITTI Tiny dataset only have 3 classes. Therefore, the last FC layers of the pre-trained Faster R-CNN for classification and regression have different weight shape and are not used.\n", "\n", "Second, after training, the detector is evaluated by the default VOC-style evaluation. The results show that the detector achieves 58.1 mAP on the val dataset, not bad!\n", "\n", "We can also check the tensorboard to see the curves." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 821, "resources": { "https://localhost:6006/?tensorboardColab=true": { "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lciwuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3B7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AsLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmd7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2t7cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ3twYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94e3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0ey8qISovfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5key8qISovfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9ue2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb246aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwubWF0LW9wdGlvbjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7Y29sb3I6I2ZmZn0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkLC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MHtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejF7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mntib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoze2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejR7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejV7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZ7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3e2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OHtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejl7Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMHtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMntib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM3tib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNHtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTd7Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4e2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjB7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIye2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjN7Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2Vye2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2V7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW4gLm1hdC1iYWRnZS1jb250ZW50e2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnR7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50LC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmV7dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi04cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvdyAubWF0LWJhZGdlLWNvbnRlbnR7Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTIycHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xMXB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlIC5tYXQtYmFkZ2UtY29udGVudHt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjhweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMTRweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJhZGdlLWNvbnRlbnR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJhZGdlLWNvbnRlbnR7b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm4gLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2UtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50e2JhY2tncm91bmQ6I2JkYmRiZDtjb2xvcjojNzU3NTc1fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b257Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LWZhYi5tYXQtcHJpbWFyeSwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCwubWF0LWZhYi5tYXQtYWNjZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sLm1hdC1mYWIubWF0LXdhcm4sLm1hdC1taW5pLWZhYi5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1mbGF0LWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGV7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJke2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0Om5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGV7Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2ZpbGw6I2ZmZn0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojZmZmICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZDpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAubWF0LWNoaXAtcmVtb3ZlOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZHtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGV7YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGUgdGhlYWQsLm1hdC10YWJsZSB0Ym9keSwubWF0LXRhYmxlIHRmb290LG1hdC1oZWFkZXItcm93LG1hdC1yb3csbWF0LWZvb3Rlci1yb3csW21hdC1oZWFkZXItcm93XSxbbWF0LXJvd10sW21hdC1mb290ZXItcm93XSwubWF0LXRhYmxlLXN0aWNreXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvdyx0aC5tYXQtaGVhZGVyLWNlbGwsdGQubWF0LWNlbGwsdGQubWF0LWZvb3Rlci1jZWxse2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGx7Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGwsLm1hdC1mb290ZXItY2VsbHtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZSwubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9ue2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCwubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9ye2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld3tjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjMpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWR7aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnQsLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1oaW50e2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnl7Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb246aG92ZXIsLm1hdC1saXN0LW9wdGlvbjpmb2N1cywubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXMsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVte2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtbWVudS1zdWJtZW51LWljb24sLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtaWNvbi1uby1jb2xvcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uLW5vLWNvbG9yLC5tYXQtbWVudS1zdWJtZW51LWljb257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSwubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9ye2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCwubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcnttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZGRlYmZ9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZkZGViZn0ubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6I2ZmZTViZn0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmU1YmZ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmY2QwY2R9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6I2ZjZDBjZH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSwubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSwubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8taW5uZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnk6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuOmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnR7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoe2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcjpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5ke2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF0gLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1jaGVja2VkKSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LWFjY2VudCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2FybiAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYiwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC13YXJuIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXI6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZSAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWRdKSwubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9ZmFsc2Vde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjdXJzb3I6ZGVmYXVsdH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1vcHRpb25hbHtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29ue2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9ye2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWwsLm1hdC1zdGVwcGVyLXZlcnRpY2Fse2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSwubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmV7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVye2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyLC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJ7cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlciwubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhciwubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LXRhYi1oZWFkZXJ7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV0gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMjQsMTc4LC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNjcsMzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIyNCwxNzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfWJvZHl7b3ZlcmZsb3c6aGlkZGVufS5jZGstb3ZlcmxheS1jb250YWluZXJ7Y29udGFpbjpzdHJpY3R9YTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbil7Y29sb3I6IzE5NzZkMn1hOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKTp2aXNpdGVke2NvbG9yOiM3YjFmYTJ9Ym9keS5kYXJrLW1vZGV7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlIGE6bm90KC5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24pe2NvbG9yOiM0MmE1ZjV9Ym9keS5kYXJrLW1vZGUgYTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbik6dmlzaXRlZHtjb2xvcjojYmE2OGM4fWJvZHkuZGFyay1tb2RlIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3h7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLGJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtYXBwLWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZWY2YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgYm9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiM2ZTZlNmU7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnl7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7YmFja2dyb3VuZC1jb2xvcjojMDAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXI6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmR7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tmaWxsOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzMwMzAzMCAhaW1wb3J0YW50fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQ6bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgLm1hdC1jaGVja2JveC1mcmFtZXtib3JkZXItY29sb3I6IzY4Njg2OH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtbGFiZWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWJsZSB0aGVhZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlIHRib2R5LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUgdGZvb3QsYm9keS5kYXJrLW1vZGUgbWF0LWhlYWRlci1yb3csYm9keS5kYXJrLW1vZGUgbWF0LXJvdyxib2R5LmRhcmstbW9kZSBtYXQtZm9vdGVyLXJvdyxib2R5LmRhcmstbW9kZSBbbWF0LWhlYWRlci1yb3ddLGJvZHkuZGFyay1tb2RlIFttYXQtcm93XSxib2R5LmRhcmstbW9kZSBbbWF0LWZvb3Rlci1yb3ddLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1ib2R5LmRhcmstbW9kZSBtYXQtcm93LGJvZHkuZGFyay1tb2RlIG1hdC1oZWFkZXItcm93LGJvZHkuZGFyay1tb2RlIG1hdC1mb290ZXItcm93LGJvZHkuZGFyay1tb2RlIHRoLm1hdC1oZWFkZXItY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtY2VsbCxib2R5LmRhcmstbW9kZSB0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1oZWFkZXItY2VsbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNlbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1mb290ZXItY2VsbHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYXJyb3d7ZmlsbDojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVye2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6I2ZmZjtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjI0KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC40KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjM5LCAxMDgsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzksMTA4LDAsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSxib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXtib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojNDI0MjQyfX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaGludHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWhpbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbntjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50IG9wdGlvbjpkaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3QtaXRlbS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LW9wdGlvbjpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtb3B0aW9uOmZvY3VzLGJvZHkuZGFyay1tb2RlIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1cyxib2R5LmRhcmstbW9kZSAubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0gLm1hdC1pY29uLW5vLWNvbG9ye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW06aG92ZXI6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZDpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3J7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLGJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2Vye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnR7Ym9yZGVyLXRvcDoycHggc29saWQgI2ZmZjtib3JkZXItcmlnaHQ6MnB4IHNvbGlkICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItdG9wOjJweCBzb2xpZCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItZmlyc3QsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItbGFzdHtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MTM1MzJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYxMzUzMn1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2JvcmRlci1yaWdodDpub25lfWJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9Ym9keS5kYXJrLW1vZGUgW2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgxODksMTg5LDE4OSwuNil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZF0pLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD1mYWxzZV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPXRydWVde2N1cnNvcjpkZWZhdWx0fUBtZWRpYShob3Zlcjogbm9uZSl7Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb257Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtYWNjZW50IC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LXdhcm4gLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9ye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci12ZXJ0aWNhbHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlcixib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6I2M2YzZjNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXSAubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwxNDAsMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfWJvZHkuZGFyay1tb2RlIC5tYXQtdHJlZXtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10cmVlLW5vZGUsYm9keS5kYXJrLW1vZGUgLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjppbmhlcml0fQo8L3N0eWxlPgoKPHN0eWxlPgogIGh0bWwsCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpOwoKICAgIC8qIExlZ2FjeSBtZWNoYW5pc20gdG8gYXZvaWQgaXNzdWVzIHdpdGggc3VicGl4ZWwgYW50aS1hbGlhc2luZyBvbiBtYWNPUy4KICAgICAqCiAgICAgKiBJbiB0aGUgcGFzdCBbMV0sIG1hY09TIHN1YnBpeGVsIEFBIGNhdXNlZCBleGNlc3NpdmUgYm9sZGluZyBmb3IgbGlnaHQtb24tZGFyayB0ZXh0OyB0aGlzIHJ1bGUKICAgICAqIGF2b2lkcyB0aGF0IGJ5IHJlcXVlc3Rpbmcgbm9uLXN1YnBpeGVsIEFBIGFsd2F5cywgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHdoaWNoIGlzCiAgICAgKiB0byB1c2Ugc3VicGl4ZWwgQUEgd2hlbiBhdmFpbGFibGUuIFRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMgImZpeGVkIiBieSByZW1vdmluZyBzdWJwaXhlbCBBQSBpbgogICAgICogbWFjT1MgMTQgKE1vamF2ZSksIGJ1dCBmb3IgbGVnYWN5IHJlYXNvbnMgdGhleSBwcmVzZXJ2ZWQgdGhlIGJvbGRpbmcgZWZmZWN0IGFzIGFuIG9wdGlvbi4KICAgICAqIENocm9tZSB0aGVuIGluIHR1cm4gdXBkYXRlZCBpdHMgZm9udCByZW5kZXJpbmcgdG8gYXBwbHkgdGhhdCBib2xkaW5nIGVmZmVjdCBbMl0sIHdoaWNoIG1lYW5zCiAgICAgKiB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgZG9jcyBbM10gc3VnZ2VzdCB0aGF0IHNldHRpbmcgYGFudGlhbGlhc2VkYAogICAgICogd291bGQgaGF2ZSBubyBlZmZlY3QgZm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBtYWNPUywgaXQgc3RpbGwgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBib2xkaW5nLgogICAgICoKICAgICAqIFsxXTogaHR0cDovL3d3dy5saWdodGVycmEuY29tL2FydGljbGVzL21hY29zeHRleHRhYWJ1Zy8KICAgICAqIFsyXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODU4ODYxCiAgICAgKiBbM106IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250LXNtb290aAogICAgICoKICAgICAqLwoKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIH0KICBub3NjcmlwdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjxub3NjcmlwdD4KICAgIDxoMT5UZW5zb3JCb2FyZCByZXF1aXJlcyBKYXZhU2NyaXB0PC9oMT4KICAgIDxwPlBsZWFzZSBlbmFibGUgSmF2YVNjcmlwdCBhbmQgcmVsb2FkIHRoaXMgcGFnZS48L3A+CiAgPC9ub3NjcmlwdD48dGItd2ViYXBwPjwvdGItd2ViYXBwPjxzY3JpcHQgc3JjPSJpbmRleC5qcz9fZmlsZV9oYXNoPTI5YTdkMDNhIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==", "headers": [ [ "content-type", "text/html; charset=utf-8" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/environment": { "data": "eyJ2ZXJzaW9uIjogIjIuNy4wIiwgImRhdGFfbG9jYXRpb24iOiAiLi90dXRvcmlhbF9leHBzIiwgIndpbmRvd190aXRsZSI6ICIiLCAiZXhwZXJpbWVudF9uYW1lIjogIiIsICJleHBlcmltZW50X2Rlc2NyaXB0aW9uIjogIiIsICJjcmVhdGlvbl90aW1lIjogMC4wLCAiZGVidWciOiB7ImRhdGFfcHJvdmlkZXIiOiAiR3JwY0RhdGFQcm92aWRlcihhZGRyPSdsb2NhbGhvc3Q6NDQ1ODknKSIsICJmbGFncyI6IHsibG9nZGlyIjogIi4vdHV0b3JpYWxfZXhwcyIsICJsb2dkaXJfc3BlYyI6ICIiLCAiaG9zdCI6IG51bGwsICJiaW5kX2FsbCI6IGZhbHNlLCAicG9ydCI6IG51bGwsICJyZXVzZV9wb3J0IjogZmFsc2UsICJsb2FkX2Zhc3QiOiAiYXV0byIsICJleHRyYV9kYXRhX3NlcnZlcl9mbGFncyI6ICIiLCAiZ3JwY19jcmVkc190eXBlIjogImxvY2FsIiwgImdycGNfZGF0YV9wcm92aWRlciI6ICIiLCAicHVyZ2Vfb3JwaGFuZWRfZGF0YSI6IHRydWUsICJkYiI6ICIiLCAiZGJfaW1wb3J0IjogZmFsc2UsICJpbnNwZWN0IjogZmFsc2UsICJ2ZXJzaW9uX3RiIjogZmFsc2UsICJ0YWciOiAiIiwgImV2ZW50X2ZpbGUiOiAiIiwgInBhdGhfcHJlZml4IjogIiIsICJ3aW5kb3dfdGl0bGUiOiAiIiwgIm1heF9yZWxvYWRfdGhyZWFkcyI6IDEsICJyZWxvYWRfaW50ZXJ2YWwiOiA1LjAsICJyZWxvYWRfdGFzayI6ICJhdXRvIiwgInJlbG9hZF9tdWx0aWZpbGUiOiBudWxsLCAicmVsb2FkX211bHRpZmlsZV9pbmFjdGl2ZV9zZWNzIjogODY0MDAsICJnZW5lcmljX2RhdGEiOiAiYXV0byIsICJzYW1wbGVzX3Blcl9wbHVnaW4iOiB7fSwgImN1c3RvbV9wcmVkaWN0X2ZuIjogIiIsICJ3aXRfZGF0YV9kaXIiOiAiIiwgIl9fdGVuc29yYm9hcmRfc3ViY29tbWFuZCI6ICJzZXJ2ZSJ9fX0=", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=learning_rate": { "data": "W1sxNjQ0MzIwMzE1LjI1MDE2OCwgMTAsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzE4Ljc4MTA0NDIsIDIwLCAwLjAwMjQ5OTk5OTk0NDEyMDY0NTVdLCBbMTY0NDMyMDMyNi40MjY0MzE3LCAzNSwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjAzMzAuMDE3NzMyLCA0NSwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjAzMzcuNjkwNDMxLCA2MCwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjAzNDEuMzkzMTUxLCA3MCwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjAzNDkuMjcxNzQ3NiwgODUsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzUzLjA2Nzk3OTgsIDk1LCAwLjAwMjQ5OTk5OTk0NDEyMDY0NTVdLCBbMTY0NDMyMDM2MC44NTgzMTE0LCAxMTAsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzY0LjU1OTk1NDYsIDEyMCwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjAzNzIuMjYwMzEzLCAxMzUsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzc1LjkwMzAzMSwgMTQ1LCAwLjAwMjQ5OTk5OTk0NDEyMDY0NTVdLCBbMTY0NDMyMDM4My41NTk2MjY4LCAxNjAsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzg3LjE4OTYxNywgMTcwLCAwLjAwMjQ5OTk5OTk0NDEyMDY0NTVdLCBbMTY0NDMyMDM5NC44Nzg4Njk1LCAxODUsIDAuMDAyNDk5OTk5OTQ0MTIwNjQ1NV0sIFsxNjQ0MzIwMzk4LjUxNDQ4NjYsIDE5NSwgMC4wMDI0OTk5OTk5NDQxMjA2NDU1XSwgWzE2NDQzMjA0MDYuMjMyNTMzNSwgMjEwLCAwLjAwMDI1MDAwMDAxMTg3NDM2MjhdLCBbMTY0NDMyMDQwOS44Nzc1MTM2LCAyMjAsIDAuMDAwMjUwMDAwMDExODc0MzYyOF0sIFsxNjQ0MzIwNDE3LjYwMzAyNjIsIDIzNSwgMC4wMDAyNTAwMDAwMTE4NzQzNjI4XSwgWzE2NDQzMjA0MjEuMjcyMTIwNywgMjQ1LCAwLjAwMDI1MDAwMDAxMTg3NDM2MjhdLCBbMTY0NDMyMDQyOS4wMTQzNDU2LCAyNjAsIDAuMDAwMjUwMDAwMDExODc0MzYyOF0sIFsxNjQ0MzIwNDMyLjcxNzUzNTcsIDI3MCwgMC4wMDAyNTAwMDAwMTE4NzQzNjI4XSwgWzE2NDQzMjA0NDAuNTAyNjQyNiwgMjg1LCAyLjQ5OTk5OTkzNjg0NDY4OGUtMDVdLCBbMTY0NDMyMDQ0NC4xOTQ4ODI5LCAyOTUsIDIuNDk5OTk5OTM2ODQ0Njg4ZS0wNV0sIFsxNjQ0MzIwNDUxLjMxNTQwNDcsIDMwMSwgMi40OTk5OTk5MzY4NDQ2ODhlLTA1XV0=", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=momentum": { "data": "W1sxNjQ0MzIwMzE1LjI1MDIyOSwgMTAsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwMzE4Ljc4MTA3NzQsIDIwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDMyNi40MjY0NzI0LCAzNSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjAzMzAuMDE3NzY1LCA0NSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjAzMzcuNjkwNDgxMiwgNjAsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwMzQxLjM5MzE4NjMsIDcwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDM0OS4yNzE3OTU1LCA4NSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjAzNTMuMDY4MDE0OSwgOTUsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwMzYwLjg1ODM1NjUsIDExMCwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjAzNjQuNTU5OTkwMiwgMTIwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDM3Mi4yNjAzNjU1LCAxMzUsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwMzc1LjkwMzA2NjYsIDE0NSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjAzODMuNTU5NjY3MywgMTYwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDM4Ny4xODk2NDk2LCAxNzAsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwMzk0Ljg3ODk1NywgMTg1LCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDM5OC41MTQ1MjQ1LCAxOTUsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwNDA2LjIzMjU3OSwgMjEwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDQwOS44Nzc1NDgyLCAyMjAsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwNDE3LjYwMzA3MTUsIDIzNSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjA0MjEuMjcyMTU2NSwgMjQ1LCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDQyOS4wMTQ0MDEsIDI2MCwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjA0MzIuNzE3NTczNCwgMjcwLCAwLjg5OTk5OTk3NjE1ODE0MjFdLCBbMTY0NDMyMDQ0MC41MDI2ODQsIDI4NSwgMC44OTk5OTk5NzYxNTgxNDIxXSwgWzE2NDQzMjA0NDQuMTk0OTIzLCAyOTUsIDAuODk5OTk5OTc2MTU4MTQyMV0sIFsxNjQ0MzIwNDUxLjMxNTQ2NDUsIDMwMSwgMC44OTk5OTk5NzYxNTgxNDIxXV0=", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Facc": { "data": "W1sxNjQ0MzIwMzE1LjI1MDA0OCwgMTAsIDgxLjYzMDg1OTM3NV0sIFsxNjQ0MzIwMzE4Ljc4MDkyODYsIDIwLCA5My4zNzg5MDYyNV0sIFsxNjQ0MzIwMzI2LjQyNjMwOCwgMzUsIDk0LjQ4MjQyMTg3NV0sIFsxNjQ0MzIwMzMwLjAxNzYxNjMsIDQ1LCA5NC42Nzc3MzQzNzVdLCBbMTY0NDMyMDMzNy42OTAyODc2LCA2MCwgOTYuNTAzOTA2MjVdLCBbMTY0NDMyMDM0MS4zOTMwMzY0LCA3MCwgOTQuNjE5MTQwNjI1XSwgWzE2NDQzMjAzNDkuMjcxNTkxMiwgODUsIDk1LjQxOTkyMTg3NV0sIFsxNjQ0MzIwMzUzLjA2Nzg3ODIsIDk1LCA5NS40MDAzOTA2MjVdLCBbMTY0NDMyMDM2MC44NTgxNTY3LCAxMTAsIDk2LjE3MTg3NV0sIFsxNjQ0MzIwMzY0LjU1OTgyNSwgMTIwLCA5Ni42MzA4NTkzNzVdLCBbMTY0NDMyMDM3Mi4yNjAxMzczLCAxMzUsIDk3LjIzNjMyODEyNV0sIFsxNjQ0MzIwMzc1LjkwMjkxNiwgMTQ1LCA5Ni41MzMyMDMxMjVdLCBbMTY0NDMyMDM4My41NTk1LCAxNjAsIDk2LjczODI4MTI1XSwgWzE2NDQzMjAzODcuMTg5NDk4NywgMTcwLCA5Ni42Njk5MjE4NzVdLCBbMTY0NDMyMDM5NC44NzgyNjI1LCAxODUsIDk3LjA4MDA3ODEyNV0sIFsxNjQ0MzIwMzk4LjUxNDM3MiwgMTk1LCA5Ny4wODAwNzgxMjVdLCBbMTY0NDMyMDQwNi4yMzI0MDM4LCAyMTAsIDk3LjU3ODEyNV0sIFsxNjQ0MzIwNDA5Ljg3NzM5MjUsIDIyMCwgOTcuOTE5OTIxODc1XSwgWzE2NDQzMjA0MTcuNjAyODk5OCwgMjM1LCA5Ny4zNjMyODEyNV0sIFsxNjQ0MzIwNDIxLjI3MjAxMDMsIDI0NSwgOTcuNzI0NjA5Mzc1XSwgWzE2NDQzMjA0MjkuMDE0MTU0LCAyNjAsIDk3LjU5NzY1NjI1XSwgWzE2NDQzMjA0MzIuNzE3NDEsIDI3MCwgOTcuOTI5Njg3NV0sIFsxNjQ0MzIwNDQwLjUwMjUxOTEsIDI4NSwgOTcuNzYzNjcxODc1XSwgWzE2NDQzMjA0NDQuMTk0MTc3NCwgMjk1LCA5OC4wMjczNDM3NV1d", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Floss": { "data": "W1sxNjQ0MzIwMzE1LjI1MDExMDEsIDEwLCAwLjk3NDY0NzU4MTU3NzMwMV0sIFsxNjQ0MzIwMzE4Ljc4MTAwNjgsIDIwLCAwLjUzNDQ0NTk0MTQ0ODIxMTddLCBbMTY0NDMyMDMyNi40MjYzNzczLCAzNSwgMC40NjAyNjc5NjEwMjUyMzgwNF0sIFsxNjQ0MzIwMzMwLjAxNzY5NDUsIDQ1LCAwLjM4NTM2NDY4MTQ4MjMxNTA2XSwgWzE2NDQzMjAzMzcuNjkwMzYyNSwgNjAsIDAuMjY5NzI0MjQ5ODM5NzgyN10sIFsxNjQ0MzIwMzQxLjM5MzExMjQsIDcwLCAwLjQyNDE2MDc0ODcyMDE2OTA3XSwgWzE2NDQzMjAzNDkuMjcxNjg3LCA4NSwgMC4zNjE2MTU0Nzg5OTI0NjIxNl0sIFsxNjQ0MzIwMzUzLjA2Nzk0NSwgOTUsIDAuMzQ4MzUyNzAwNDcxODc4MDVdLCBbMTY0NDMyMDM2MC44NTgyNDksIDExMCwgMC4zMjE1NjMwMDU0NDczODc3XSwgWzE2NDQzMjAzNjQuNTU5OTAyLCAxMjAsIDAuMzAwMzQ3ODY0NjI3ODM4MTNdLCBbMTY0NDMyMDM3Mi4yNjAyNDQxLCAxMzUsIDAuMjcyMTA4MTk3MjEyMjE5MjRdLCBbMTY0NDMyMDM3NS45MDI5OTEzLCAxNDUsIDAuMjg5MzEzODgyNTg5MzQwMl0sIFsxNjQ0MzIwMzgzLjU1OTU2ODQsIDE2MCwgMC4yNzI5Nzk4ODUzMzk3MzY5NF0sIFsxNjQ0MzIwMzg3LjE4OTU4MjYsIDE3MCwgMC4yODQwMTA0OTk3MTU4MDUwNV0sIFsxNjQ0MzIwMzk0Ljg3ODMyODMsIDE4NSwgMC4yMjQyNzY3MjE0Nzc1MDg1NF0sIFsxNjQ0MzIwMzk4LjUxNDQ0NzcsIDE5NSwgMC4yNDg5NDc3MDk3OTg4MTI4N10sIFsxNjQ0MzIwNDA2LjIzMjQ3MzYsIDIxMCwgMC4yMDY1MTExMzk4Njk2ODk5NF0sIFsxNjQ0MzIwNDA5Ljg3NzQ3ODQsIDIyMCwgMC4xNjk0OTEyNDYzNDI2NTldLCBbMTY0NDMyMDQxNy42MDI5NzE4LCAyMzUsIDAuMjE2ODM1OTE2MDQyMzI3ODhdLCBbMTY0NDMyMDQyMS4yNzIwODIzLCAyNDUsIDAuMTkzMzczNDU2NTk3MzI4MTldLCBbMTY0NDMyMDQyOS4wMTQyNzk4LCAyNjAsIDAuMTg5MjM4NjIyNzg0NjE0NTZdLCBbMTY0NDMyMDQzMi43MTc0OTY2LCAyNzAsIDAuMTg4MjYzNzU5MDE2OTkwNjZdLCBbMTY0NDMyMDQ0MC41MDI1ODU2LCAyODUsIDAuMTg3MDg2MzI4ODY0MDk3Nl0sIFsxNjQ0MzIwNDQ0LjE5NDg0MSwgMjk1LCAwLjE0Mzg1ODY0MTM4NjAzMjFdXQ==", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Floss_bbox": { "data": "W1sxNjQ0MzIwMzE1LjI1MDA3OTIsIDEwLCAwLjM5NDU1Mjg1NjY4MzczMTFdLCBbMTY0NDMyMDMxOC43ODA5NjgyLCAyMCwgMC4zMjg5NTAzNzUzMTg1MjcyXSwgWzE2NDQzMjAzMjYuNDI2MzQzNywgMzUsIDAuMjY4ODc0MDQ5MTg2NzA2NTRdLCBbMTY0NDMyMDMzMC4wMTc2NTYzLCA0NSwgMC4yMTUzNTYxMTE1MjY0ODkyNl0sIFsxNjQ0MzIwMzM3LjY5MDMyNTcsIDYwLCAwLjE1ODYwNDc3MDg5ODgxODk3XSwgWzE2NDQzMjAzNDEuMzkzMDc1LCA3MCwgMC4yNTk3MzQ4OTg4MDU2MTgzXSwgWzE2NDQzMjAzNDkuMjcxNjQzNCwgODUsIDAuMjI0MzQ1NDYwNTM0MDk1NzZdLCBbMTY0NDMyMDM1My4wNjc5MTE2LCA5NSwgMC4yMTE5OTQ1Mjg3NzA0NDY3OF0sIFsxNjQ0MzIwMzYwLjg1ODE5NDYsIDExMCwgMC4yMDc0NTU1MTU4NjE1MTEyM10sIFsxNjQ0MzIwMzY0LjU1OTg2NDUsIDEyMCwgMC4xOTI1NzU4NDIxNDIxMDUxXSwgWzE2NDQzMjAzNzIuMjYwMTgzMywgMTM1LCAwLjE4Mjc0MTcwMTYwMjkzNThdLCBbMTY0NDMyMDM3NS45MDI5NTQ4LCAxNDUsIDAuMTg1NjgxMTY0MjY0Njc4OTZdLCBbMTY0NDMyMDM4My41NTk1MzY3LCAxNjAsIDAuMTczNjMxNzU3NDk3Nzg3NDhdLCBbMTY0NDMyMDM4Ny4xODk1NDg3LCAxNzAsIDAuMTc5OTUyOTc5MDg3ODI5Nl0sIFsxNjQ0MzIwMzk0Ljg3ODI5NTcsIDE4NSwgMC4xMzgxNDIwMzQ0MTE0MzAzNl0sIFsxNjQ0MzIwMzk4LjUxNDQxMDcsIDE5NSwgMC4xNjM0NzIzMDk3MDg1OTUyOF0sIFsxNjQ0MzIwNDA2LjIzMjQ0MDUsIDIxMCwgMC4xMzA3MDIyMjczNTQwNDk2OF0sIFsxNjQ0MzIwNDA5Ljg3NzQ0MjYsIDIyMCwgMC4xMDkwMTMyMzcwNTkxMTYzNl0sIFsxNjQ0MzIwNDE3LjYwMjkzNiwgMjM1LCAwLjEzNjc0MDIwNzY3MjExOTE0XSwgWzE2NDQzMjA0MjEuMjcyMDQ2MywgMjQ1LCAwLjEyNzc0NzQ0NjI5ODU5OTI0XSwgWzE2NDQzMjA0MjkuMDE0MjMzNCwgMjYwLCAwLjExOTU3MTkwOTMwODQzMzUzXSwgWzE2NDQzMjA0MzIuNzE3NDU5LCAyNzAsIDAuMTI0NTcxMDcwMDc1MDM1MV0sIFsxNjQ0MzIwNDQwLjUwMjU1NDQsIDI4NSwgMC4xMjM2OTEzNTAyMjE2MzM5MV0sIFsxNjQ0MzIwNDQ0LjE5NDc0ODksIDI5NSwgMC4wODg5ODMyODk4OTc0NDE4Nl1d", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Floss_cls": { "data": "W1sxNjQ0MzIwMzE1LjI1MDAxNDMsIDEwLCAwLjUzNzM1MzI3NzIwNjQyMDldLCBbMTY0NDMyMDMxOC43ODA4NzY2LCAyMCwgMC4xNzc3NzM2MjQ2NTg1ODQ2XSwgWzE2NDQzMjAzMjYuNDI2MjY2NCwgMzUsIDAuMTU3Mjc3NTg0MDc1OTI3NzNdLCBbMTY0NDMyMDMzMC4wMTc1NzQ1LCA0NSwgMC4xNDQ1NjYyMzc5MjY0ODMxNV0sIFsxNjQ0MzIwMzM3LjY5MDI0MzUsIDYwLCAwLjA5NDM0NTcwMzcyMTA0NjQ1XSwgWzE2NDQzMjAzNDEuMzkyOTk2LCA3MCwgMC4xNDM5MzkzMTYyNzI3MzU2XSwgWzE2NDQzMjAzNDkuMjcxNDkzNywgODUsIDAuMTE4MTM2MzkxMDQzNjYzMDJdLCBbMTY0NDMyMDM1My4wNjc4NDEsIDk1LCAwLjExOTU5MzQ0ODkzNjkzOTI0XSwgWzE2NDQzMjAzNjAuODU4MTE4LCAxMTAsIDAuMTAyMTQyNDMwODQxOTIyNzZdLCBbMTY0NDMyMDM2NC41NTk3ODYsIDEyMCwgMC4wOTQyMDg1NzU3ODUxNjAwNl0sIFsxNjQ0MzIwMzcyLjI2MDA2OCwgMTM1LCAwLjA3ODc0OTUzMDAxNzM3NTk1XSwgWzE2NDQzMjAzNzUuOTAyODc0NSwgMTQ1LCAwLjA5MDEzMjcyMDc2ODQ1MTY5XSwgWzE2NDQzMjAzODMuNTU5NDYwMiwgMTYwLCAwLjA4Nzc0MjM1MDk5NTU0MDYyXSwgWzE2NDQzMjAzODcuMTg5NDU3NCwgMTcwLCAwLjA4ODg3ODQ4MjU4MDE4NDk0XSwgWzE2NDQzMjAzOTQuODc4MjE0MSwgMTg1LCAwLjA3NDgxMDEyNDkzMzcxOTY0XSwgWzE2NDQzMjAzOTguNTE0MzMwNiwgMTk1LCAwLjA3NDMxNzE4NzA3MDg0NjU2XSwgWzE2NDQzMjA0MDYuMjMyMzU1NCwgMjEwLCAwLjA2NDg4NzM3NDYzOTUxMTExXSwgWzE2NDQzMjA0MDkuODc3MzUyMiwgMjIwLCAwLjA1Mjk1NDY5MjM5MzU0MTMzNl0sIFsxNjQ0MzIwNDE3LjYwMjg2MiwgMjM1LCAwLjA2NzU5ODU3Mzg2MzUwNjMyXSwgWzE2NDQzMjA0MjEuMjcxOTcyNywgMjQ1LCAwLjA1OTI4NDc5ODgwMDk0NTI4XSwgWzE2NDQzMjA0MjkuMDE0MDA2NCwgMjYwLCAwLjA2MTc3NzE0ODM5NTc3Njc1XSwgWzE2NDQzMjA0MzIuNzE3MzY5MywgMjcwLCAwLjA1NTIzNzQwODcyNzQwNzQ1NV0sIFsxNjQ0MzIwNDQwLjUwMjQ3OSwgMjg1LCAwLjA1NjMyNjE4NDQyMTc3NzcyNV0sIFsxNjQ0MzIwNDQ0LjE5NDEzODUsIDI5NSwgMC4wNDg2Njc0MzgzMjgyNjYxNDRdXQ==", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Floss_rpn_bbox": { "data": "W1sxNjQ0MzIwMzE1LjI0OTk2MjYsIDEwLCAwLjAxNzI5NTM3MzYwMzcwMTU5XSwgWzE2NDQzMjAzMTguNzgwODI5NywgMjAsIDAuMDExOTM2NjMwMTIyMzYzNTY3XSwgWzE2NDQzMjAzMjYuNDI2MTg3LCAzNSwgMC4wMTM4NTU5NTY0OTQ4MDgxOTddLCBbMTY0NDMyMDMzMC4wMTc1MjQ3LCA0NSwgMC4wMTI3MDM3OTU5MTczMzIxNzJdLCBbMTY0NDMyMDMzNy42OTAxNjkzLCA2MCwgMC4wMTAzODk3MTcyOTU3NjU4NzddLCBbMTY0NDMyMDM0MS4zOTI5NDI3LCA3MCwgMC4wMTMyMzY2MDA5MDU2NTY4MTVdLCBbMTY0NDMyMDM0OS4yNzA0Mjg0LCA4NSwgMC4wMTM0MTcxNTE3NTY1ODQ2NDRdLCBbMTY0NDMyMDM1My4wNjc3OTMxLCA5NSwgMC4wMTE3NDY5MzM2ODM3NTMwMTRdLCBbMTY0NDMyMDM2MC44NTgwNjY4LCAxMTAsIDAuMDA5MTM3NjU2NTM5Njc4NTc0XSwgWzE2NDQzMjAzNjQuNTU5NzM4NiwgMTIwLCAwLjAxMDU5MDI4MjI2ODgyMjE5M10sIFsxNjQ0MzIwMzcyLjI1OTYxNDUsIDEzNSwgMC4wMDgxMzc2NzY4NjQ4NjI0NDJdLCBbMTY0NDMyMDM3NS45MDI4MjI3LCAxNDUsIDAuMDEwMDA2NDY0MDg2NDcyOTg4XSwgWzE2NDQzMjAzODMuNTU5Mzg2NywgMTYwLCAwLjAwOTM0NDg2MzcwNTMzNzA0OF0sIFsxNjQ0MzIwMzg3LjE4OTM5MjYsIDE3MCwgMC4wMTEyMjc3NjMyNTc5MjA3NDJdLCBbMTY0NDMyMDM5NC44NzgxNDE0LCAxODUsIDAuMDA5MzYxMDM5ODQ3MTM1NTQ0XSwgWzE2NDQzMjAzOTguNTE0MjgxLCAxOTUsIDAuMDA4MDg0NDMwMzU5MzAzOTUxXSwgWzE2NDQzMjA0MDYuMjMyMjg4NCwgMjEwLCAwLjAwODUzMzAxMDI1OTI3MDY2OF0sIFsxNjQ0MzIwNDA5Ljg3NzMwMjYsIDIyMCwgMC4wMDY1NTUxMjc5MTEyNjk2NjVdLCBbMTY0NDMyMDQxNy42MDI4MDgsIDIzNSwgMC4wMDg0MTQ2NTk2NDkxMzM2ODJdLCBbMTY0NDMyMDQyMS4yNzE5Mjc4LCAyNDUsIDAuMDA1NTI1NDMwNjY0NDIwMTI4XSwgWzE2NDQzMjA0MjkuMDEzOTQ5NCwgMjYwLCAwLjAwNzE4OTA4NDc3NTc0NTg2OV0sIFsxNjQ0MzIwNDMyLjcxNzMxOTMsIDI3MCwgMC4wMDczNTk3NjU5MzU2ODkyMTFdLCBbMTY0NDMyMDQ0MC41MDI0MDk3LCAyODUsIDAuMDA2MDM4NTM5NTc3Mjc1NTE1XSwgWzE2NDQzMjA0NDQuMTk0MDk0NCwgMjk1LCAwLjAwNDg5MDcyNTQ4MjI1NTIyXV0=", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/scalars?run=tf_logs&tag=train%2Floss_rpn_cls": { "data": "W1sxNjQ0MzIwMzE1LjI0OTc1NzgsIDEwLCAwLjAyNTQ0NjA1NzMxOTY0MTExM10sIFsxNjQ0MzIwMzE4Ljc4MDcyNiwgMjAsIDAuMDE1Nzg1MzI1MzE4NTc0OTA1XSwgWzE2NDQzMjAzMjYuNDI1OTY4LCAzNSwgMC4wMjAyNjAzNDMzMjgxMTgzMjRdLCBbMTY0NDMyMDMzMC4wMTc0MDQ2LCA0NSwgMC4wMTI3Mzg1MzQyNDkzNjUzM10sIFsxNjQ0MzIwMzM3LjY4OTk2NDUsIDYwLCAwLjAwNjM4NDAzNzQzNTA1NDc3OV0sIFsxNjQ0MzIwMzQxLjM5MjgxNTgsIDcwLCAwLjAwNzI0OTkyOTk0MjE5MDY0N10sIFsxNjQ0MzIwMzQ5LjI3MDE3NjQsIDg1LCAwLjAwNTcxNjQ3OTM4MzQwOTAyM10sIFsxNjQ0MzIwMzUzLjA2NzY4NzMsIDk1LCAwLjAwNTAxNzgwMzUxNjIzODkyOF0sIFsxNjQ0MzIwMzYwLjg1Nzg1LCAxMTAsIDAuMDAyODI3NDAxMjcyOTUyNTU2Nl0sIFsxNjQ0MzIwMzY0LjU1OTYzOSwgMTIwLCAwLjAwMjk3MzE0NTU3MjQ2ODYzODRdLCBbMTY0NDMyMDM3Mi4yNTkzNjEsIDEzNSwgMC4wMDI0NzkzMDQ3OTIzNTk0NzEzXSwgWzE2NDQzMjAzNzUuOTAyNzA1NywgMTQ1LCAwLjAwMzQ5MzUyODU4MDI5MzA1OTNdLCBbMTY0NDMyMDM4My41NTkxMjY5LCAxNjAsIDAuMDAyMjYwODkxNzIwNjUyNTgwM10sIFsxNjQ0MzIwMzg3LjE4OTI4OTgsIDE3MCwgMC4wMDM5NTEyOTY2NzU5NTAyODldLCBbMTY0NDMyMDM5NC44Nzc5MTU5LCAxODUsIDAuMDAxOTYzNTE0ODM0NjQyNDEwM10sIFsxNjQ0MzIwMzk4LjUxNDE0NDQsIDE5NSwgMC4wMDMwNzM3NjMzMzUxMjM2NThdLCBbMTY0NDMyMDQwNi4yMzE5ODksIDIxMCwgMC4wMDIzODg1MzI1MDYzMDE5OTldLCBbMTY0NDMyMDQwOS44NzcxNjYzLCAyMjAsIDAuMDAwOTY4MTg2NTM0MDA5ODczOV0sIFsxNjQ0MzIwNDE3LjYwMjU3ODYsIDIzNSwgMC4wMDQwODI0ODEzNzY4MjY3NjNdLCBbMTY0NDMyMDQyMS4yNzE4MjY1LCAyNDUsIDAuMDAwODE1Nzg4NjMzMTkwMDk1NF0sIFsxNjQ0MzIwNDI5LjAxMzc2NzcsIDI2MCwgMC4wMDA3MDA0ODU2MDE1NTU1NTYxXSwgWzE2NDQzMjA0MzIuNzE3MTY4NiwgMjcwLCAwLjAwMTA5NTUwOTUwNTgzMDcwNTJdLCBbMTY0NDMyMDQ0MC41MDIxNzU2LCAyODUsIDAuMDAxMDMwMjQ5NDA0NzIwOTYyXSwgWzE2NDQzMjA0NDQuMTkzOTgxMiwgMjk1LCAwLjAwMTMxNzE4NDQxODQzOTg2NTFdXQ==", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugin/scalars/tags": { "data": "eyJ0Zl9sb2dzIjogeyJ0cmFpbi9sb3NzX2NscyI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidmFsL21BUCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidHJhaW4vbG9zc19iYm94IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJ0cmFpbi9hY2MiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICIifSwgInZhbC9BUDUwIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJtb21lbnR1bSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidHJhaW4vbG9zcyI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidHJhaW4vbG9zc19ycG5fY2xzIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJsZWFybmluZ19yYXRlIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn0sICJ0cmFpbi9sb3NzX3Jwbl9iYm94IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiIn19fQ==", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/plugins_listing": { "data": "eyJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJpbWFnZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWltYWdlLWRhc2hib2FyZCJ9fSwgImF1ZGlvIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiYXVkaW8iLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWF1ZGlvLWRhc2hib2FyZCJ9fSwgImRlYnVnZ2VyLXYyIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiZ3JhcGhzIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJncmFwaHMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWdyYXBoLWRhc2hib2FyZCJ9fSwgImRpc3RyaWJ1dGlvbnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJkaXN0cmlidXRpb25zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIn19LCAiaGlzdG9ncmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhpc3RvZ3JhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQifX0sICJ0ZXh0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAidGV4dCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtdGV4dC1kYXNoYm9hcmQifX0sICJwcl9jdXJ2ZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQUiBDdXJ2ZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByLWN1cnZlLWRhc2hib2FyZCJ9fSwgInByb2ZpbGVfcmVkaXJlY3QiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQcm9maWxlIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCJ9fSwgImhwYXJhbXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJocGFyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ocGFyYW1zLWRhc2hib2FyZCJ9fSwgIm1lc2giOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJtZXNoIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJtZXNoLWRhc2hib2FyZCJ9fSwgInRpbWVzZXJpZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogdHJ1ZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlRpbWUgU2VyaWVzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIk5HX0NPTVBPTkVOVCJ9fSwgInByb2plY3RvciI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAicHJvamVjdG9yIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vcHJvamVjdG9yL2luZGV4LmpzIn19LCAid2hhdGlmIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiV2hhdC1JZiBUb29sIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vd2hhdGlmL2luZGV4LmpzIn19fQ==", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/data/runs": { "data": "WyJ0Zl9sb2dzIl0=", "headers": [ [ "content-type", "application/json" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/Hgo13k-tfSpn0qi1SFdUfZBw1xU1rKptJj_0jans920.woff2": { "data": "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", "headers": [ [ "content-type", "font/woff2" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2": { "data": "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", "headers": [ [ "content-type", "font/woff2" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2": { "data": "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", "headers": [ [ "content-type", "font/woff2" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": { "data": "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", "headers": [ [ "content-type", "font/woff2" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/icon_bundle.svg": { "data": "PD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxzdmc+PGRlZnM+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iYXJyb3dfZG93bndhcmRfMjRweCI+PHBhdGggZmlsbD0iIzAxMDEwMSIgZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJhcnJvd191cHdhcmRfMjRweCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJicmlnaHRuZXNzXzZfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJidWdfcmVwb3J0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNhbmNlbF8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY2hldnJvbl9sZWZ0XzI0cHgiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNoZXZyb25fcmlnaHRfMjRweCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNsZWFyXzI0cHgiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iY2xvc2VfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY29udGVudF9jb3B5XzI0cHgiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZGFya19tb2RlXzI0cHgiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiwzYy00Ljk3LDAtOSw0LjAzLTksOXM0LjAzLDksOSw5czktNC4wMyw5LTljMC0wLjQ2LTAuMDQtMC45Mi0wLjEtMS4zNmMtMC45OCwxLjM3LTIuNTgsMi4yNi00LjQsMi4yNiBjLTIuOTgsMC01LjQtMi40Mi01LjQtNS40YzAtMS44MSwwLjg5LTMuNDIsMi4yNi00LjRDMTIuOTIsMy4wNCwxMi40NiwzLDEyLDNMMTIsM3oiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJkb25lXzI0cHgiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZHJhZ19pbmRpY2F0b3JfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTExIDE4YzAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMiAyIC45IDIgMnptLTItOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAtNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgNGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZWRpdF8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJlcnJvcl8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJleHBhbmRfbGVzc18yNHB4Ij48cGF0aCBkPSJNMTIgOGwtNiA2IDEuNDEgMS40MUwxMiAxMC44M2w0LjU5IDQuNThMMTggMTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZXhwYW5kX21vcmVfMjRweCI+PHBhdGggZD0iTTE2LjU5IDguNTlMMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZmlsdGVyX2FsdF8yNHB4Ij48Zz48cGF0aCBkPSJNMCwwaDI0IE0yNCwyNEgwIiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQuMjUsNS42MUM2LjI3LDguMiwxMCwxMywxMCwxM3Y2YzAsMC41NSwwLjQ1LDEsMSwxaDJjMC41NSwwLDEtMC40NSwxLTF2LTZjMCwwLDMuNzItNC44LDUuNzQtNy4zOSBDMjAuMjUsNC45NSwxOS43OCw0LDE4Ljk1LDRINS4wNEM0LjIxLDQsMy43NCw0Ljk1LDQuMjUsNS42MXoiLz48cGF0aCBkPSJNMCwwaDI0djI0SDBWMHoiIGZpbGw9Im5vbmUiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZmxhZ18yNHB4Ij48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJmdWxsc2NyZWVuXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJmdWxsc2NyZWVuX2V4aXRfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik01IDE2aDN2M2gydi01SDV2MnptMy04SDV2Mmg1VjVIOHYzem02IDExaDJ2LTNoM3YtMmgtNXY1em0yLTExVjVoLTJ2NWg1VjhoLTN6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZ2V0X2FwcF8yNHB4Ij48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9Imdyb3VwX3dvcmtfMjRweCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTggMTcuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6TTkuNSA4YzAtMS4zOCAxLjEyLTIuNSAyLjUtMi41czIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNVM5LjUgOS4zOCA5LjUgOHptNi41IDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaGVscF9vdXRsaW5lXzI0cHgiPjxwYXRoIGQ9Ik0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImltYWdlX3NlYXJjaF8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4IDEzdjdINFY2aDUuMDJjLjA1LS43MS4yMi0xLjM4LjQ4LTJINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtNWwtMi0yem0tMS41IDVoLTExbDIuNzUtMy41MyAxLjk2IDIuMzYgMi43NS0zLjU0em0yLjgtOS4xMWMuNDQtLjcuNy0xLjUxLjctMi4zOUMyMCA0LjAxIDE3Ljk5IDIgMTUuNSAyUzExIDQuMDEgMTEgNi41czIuMDEgNC41IDQuNDkgNC41Yy44OCAwIDEuNy0uMjYgMi4zOS0uN0wyMSAxMy40MiAyMi40MiAxMiAxOS4zIDguODl6TTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41UzE0LjEyIDQgMTUuNSA0IDE4IDUuMTIgMTggNi41IDE2Ljg4IDkgMTUuNSA5eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImluZm9fb3V0bGluZV8yNHB4Ij48cGF0aCBkPSJNMTEgMTdoMnYtNmgtMnY2em0xLTE1QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNMTEgOWgyVjdoLTJ2MnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ia2VlcF8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiLz48L2c+PGc+PHBhdGggZD0iTTE2LDlWNGwxLDBjMC41NSwwLDEtMC40NSwxLTF2MGMwLTAuNTUtMC40NS0xLTEtMUg3QzYuNDUsMiw2LDIuNDUsNiwzdjAgYzAsMC41NSwwLjQ1LDEsMSwxbDEsMHY1YzAsMS42Ni0xLjM0LDMtMywzaDB2Mmg1Ljk3djdsMSwxbDEtMXYtN0gxOXYtMmgwQzE3LjM0LDEyLDE2LDEwLjY2LDE2LDl6IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImtlZXBfb3V0bGluZV8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiLz48L2c+PGc+PHBhdGggZD0iTTE0LDR2NWMwLDEuMTIsMC4zNywyLjE2LDEsM0g5YzAuNjUtMC44NiwxLTEuOSwxLTNWNEgxNCBNMTcsMkg3QzYuNDUsMiw2LDIuNDUsNiwzYzAsMC41NSwwLjQ1LDEsMSwxYzAsMCwwLDAsMCwwbDEsMHY1IGMwLDEuNjYtMS4zNCwzLTMsM3YyaDUuOTd2N2wxLDFsMS0xdi03SDE5di0yYzAsMCwwLDAsMCwwYy0xLjY2LDAtMy0xLjM0LTMtM1Y0bDEsMGMwLDAsMCwwLDAsMGMwLjU1LDAsMS0wLjQ1LDEtMSBDMTgsMi40NSwxNy41NSwyLDE3LDJMMTcsMnoiLz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImxpZ2h0X21vZGVfMjRweCI+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PHBhdGggZD0iTTEyLDdjLTIuNzYsMC01LDIuMjQtNSw1czIuMjQsNSw1LDVzNS0yLjI0LDUtNVMxNC43Niw3LDEyLDdMMTIsN3ogTTIsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDAgYy0wLjU1LDAtMSwwLjQ1LTEsMVMxLjQ1LDEzLDIsMTN6IE0yMCwxM2wyLDBjMC41NSwwLDEtMC40NSwxLTFzLTAuNDUtMS0xLTFsLTIsMGMtMC41NSwwLTEsMC40NS0xLDFTMTkuNDUsMTMsMjAsMTN6IE0xMSwydjIgYzAsMC41NSwwLjQ1LDEsMSwxczEtMC40NSwxLTFWMmMwLTAuNTUtMC40NS0xLTEtMVMxMSwxLjQ1LDExLDJ6IE0xMSwyMHYyYzAsMC41NSwwLjQ1LDEsMSwxczEtMC40NSwxLTF2LTJjMC0wLjU1LTAuNDUtMS0xLTEgQzExLjQ1LDE5LDExLDE5LjQ1LDExLDIweiBNNS45OSw0LjU4Yy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFsMS4wNiwxLjA2IGMwLjM5LDAuMzksMS4wMywwLjM5LDEuNDEsMHMwLjM5LTEuMDMsMC0xLjQxTDUuOTksNC41OHogTTE4LjM2LDE2Ljk1Yy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDEgbDEuMDYsMS4wNmMwLjM5LDAuMzksMS4wMywwLjM5LDEuNDEsMGMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MUwxOC4zNiwxNi45NXogTTE5LjQyLDUuOTljMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDEgYy0wLjM5LTAuMzktMS4wMy0wLjM5LTEuNDEsMGwtMS4wNiwxLjA2Yy0wLjM5LDAuMzktMC4zOSwxLjAzLDAsMS40MXMxLjAzLDAuMzksMS40MSwwTDE5LjQyLDUuOTl6IE03LjA1LDE4LjM2IGMwLjM5LTAuMzksMC4zOS0xLjAzLDAtMS40MWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFzMS4wMywwLjM5LDEuNDEsMEw3LjA1LDE4LjM2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJsaW5lX3dlaWdodF8yNHB4Ij48Zz48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiIHg9IjAiLz48L2c+PGc+PGc+PGc+PHBhdGggZD0iTTMsMTdoMTh2LTJIM1YxN3ogTTMsMjBoMTh2LTFIM1YyMHogTTMsMTNoMTh2LTNIM1YxM3ogTTMsNHY0aDE4VjRIM3oiLz48L2c+PC9nPjwvZz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJtb3JlX3ZlcnRfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJub3RpZmljYXRpb25zX25vbmVfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMiAyMmMxLjEgMCAyLS45IDItMmgtNGMwIDEuMS45IDIgMiAyem02LTZ2LTVjMC0zLjA3LTEuNjMtNS42NC00LjUtNi4zMlY0YzAtLjgzLS42Ny0xLjUtMS41LTEuNXMtMS41LjY3LTEuNSAxLjV2LjY4QzcuNjQgNS4zNiA2IDcuOTIgNiAxMXY1bC0yIDJ2MWgxNnYtMWwtMi0yem0tMiAxSDh2LTZjMC0yLjQ4IDEuNTEtNC41IDQtNC41czQgMi4wMiA0IDQuNXY2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9InBhbGV0dGVfMjRweCI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJyZWZyZXNoXzI0cHgiPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJzZWFyY2hfMjRweCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0ic2V0dGluZ3NfMjRweCI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3NfYmFja3VwX3Jlc3RvcmVfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0idmlzaWJpbGl0eV9vZmZfMjRweCI+PHBhdGggZD0iTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjUtLjEzIDEuMjYtLjM2IDEuODNsMi45MiAyLjkyYzEuNTEtMS4yNiAyLjctMi44OSAzLjQzLTQuNzUtMS43My00LjM5LTYtNy41LTExLTcuNS0xLjQgMC0yLjc0LjI1LTMuOTguN2wyLjE2IDIuMTZDMTAuNzQgNy4xMyAxMS4zNSA3IDEyIDd6TTIgNC4yN2wyLjI4IDIuMjguNDYuNDZDMy4wOCA4LjMgMS43OCAxMC4wMiAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjUgMS41NSAwIDMuMDMtLjMgNC4zOC0uODRsLjQyLjQyTDE5LjczIDIyIDIxIDIwLjczIDMuMjcgMyAyIDQuMjd6TTcuNTMgOS44bDEuNTUgMS41NWMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjY2IDEuMzQgMyAzIDMgLjIyIDAgLjQ0LS4wMy42NS0uMDhsMS41NSAxLjU1Yy0uNjcuMzMtMS40MS41My0yLjIuNTMtMi43NiAwLTUtMi4yNC01LTUgMC0uNzkuMi0xLjUzLjUzLTIuMnptNC4zMS0uNzhsMy4xNSAzLjE1LjAyLS4xNmMwLTEuNjYtMS4zNC0zLTMtM2wtLjE3LjAxeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9Indhcm5pbmdfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xIDIxaDIyTDEyIDIgMSAyMXptMTItM2gtMnYtMmgydjJ6bTAtNGgtMnYtNGgydjR6Ii8+PC9zdmc+PC9kZWZzPjwvc3ZnPgo=", "headers": [ [ "content-type", "image/svg+xml; charset=utf-8" ] ], "ok": true, "status": 200, "status_text": "" }, "https://localhost:6006/index.js?_file_hash=29a7d03a": { "data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7CndpbmRvdy5wb2x5bWVyU2tpcExvYWRpbmdGb250Um9ib3RvID0gdHJ1ZTsKLyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00CiAqIEBsaWNlbnNlIFJlcXVpcmVKUyAyLjMuNiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycy4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICovCi8vTm90IHVzaW5nIHN0cmljdDogdW5ldmVuIHN0cmljdCBzdXBwb3J0IGluIGJyb3dzZXJzLCAjMzkyLCBhbmQgY2F1c2VzCi8vcHJvYmxlbXMgd2l0aCByZXF1aXJlanMuZXhlYygpL3RyYW5zcGlsZXIgcGx1Z2lucyB0aGF0IG1heSBub3QgYmUgc3RyaWN0LgovKmpzbGludCByZWdleHA6IHRydWUsIG5vbWVuOiB0cnVlLCBzbG9wcHk6IHRydWUgKi8KLypnbG9iYWwgd2luZG93LCBuYXZpZ2F0b3IsIGRvY3VtZW50LCBpbXBvcnRTY3JpcHRzLCBzZXRUaW1lb3V0LCBvcGVyYSAqLwoKdmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lOwooZnVuY3Rpb24gKGdsb2JhbCwgc2V0VGltZW91dCkgewogICAgdmFyIHJlcSwgcywgaGVhZCwgYmFzZUVsZW1lbnQsIGRhdGFNYWluLCBzcmMsCiAgICAgICAgaW50ZXJhY3RpdmVTY3JpcHQsIGN1cnJlbnRseUFkZGluZ1NjcmlwdCwgbWFpblNjcmlwdCwgc3ViUGF0aCwKICAgICAgICB2ZXJzaW9uID0gJzIuMy42JywKICAgICAgICBjb21tZW50UmVnRXhwID0gL1wvXCpbXHNcU10qP1wqXC98KFteOiInPV18XilcL1wvLiokL21nLAogICAgICAgIGNqc1JlcXVpcmVSZWdFeHAgPSAvW14uXVxzKnJlcXVpcmVccypcKFxzKlsiJ10oW14nIlxzXSspWyInXVxzKlwpL2csCiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAogICAgICAgIGN1cnJEaXJSZWdFeHAgPSAvXlwuXC8vLAogICAgICAgIG9wID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCiAgICAgICAgaGFzT3duID0gb3AuaGFzT3duUHJvcGVydHksCiAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKICAgICAgICBpc1dlYldvcmtlciA9ICFpc0Jyb3dzZXIgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnLAogICAgICAgIC8vUFMzIGluZGljYXRlcyBsb2FkZWQgYW5kIGNvbXBsZXRlLCBidXQgbmVlZCB0byB3YWl0IGZvciBjb21wbGV0ZQogICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVjdXRpb24sCiAgICAgICAgLy8gdGhlbiAnY29tcGxldGUnLiBUaGUgVUEgY2hlY2sgaXMgdW5mb3J0dW5hdGUsIGJ1dCBub3Qgc3VyZSBob3cKICAgICAgICAvL3RvIGZlYXR1cmUgdGVzdCB3L28gY2F1c2luZyBwZXJmIGlzc3Vlcy4KICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CiAgICAgICAgICAgICAgICAgICAgICAvXmNvbXBsZXRlJC8gOiAvXihjb21wbGV0ZXxsb2FkZWQpJC8sCiAgICAgICAgZGVmQ29udGV4dE5hbWUgPSAnXycsCiAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KICAgICAgICBpc09wZXJhID0gdHlwZW9mIG9wZXJhICE9PSAndW5kZWZpbmVkJyAmJiBvcGVyYS50b1N0cmluZygpID09PSAnW29iamVjdCBPcGVyYV0nLAogICAgICAgIGNvbnRleHRzID0ge30sCiAgICAgICAgY2ZnID0ge30sCiAgICAgICAgZ2xvYmFsRGVmUXVldWUgPSBbXSwKICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwoKICAgIC8vQ291bGQgbWF0Y2ggc29tZXRoaW5nIGxpa2UgJykvL2NvbW1lbnQnLCBkbyBub3QgbG9zZSB0aGUgcHJlZml4IHRvIGNvbW1lbnQuCiAgICBmdW5jdGlvbiBjb21tZW50UmVwbGFjZShtYXRjaCwgc2luZ2xlUHJlZml4KSB7CiAgICAgICAgcmV0dXJuIHNpbmdsZVByZWZpeCB8fCAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7CiAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNBcnJheShpdCkgewogICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBBcnJheV0nOwogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhlIGZ1bmMgcmV0dXJucwogICAgICogYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKICAgICAgICBpZiAoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJhY2t3YXJkcy4gSWYgdGhlIGZ1bmMKICAgICAqIHJldHVybnMgYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaFJldmVyc2UoYXJ5LCBmdW5jKSB7CiAgICAgICAgaWYgKGFyeSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgZm9yIChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHsKICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRPd24ob2JqLCBwcm9wKSB7CiAgICAgICAgcmV0dXJuIGhhc1Byb3Aob2JqLCBwcm9wKSAmJiBvYmpbcHJvcF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDeWNsZXMgb3ZlciBwcm9wZXJ0aWVzIGluIGFuIG9iamVjdCBhbmQgY2FsbHMgYSBmdW5jdGlvbiBmb3IgZWFjaAogICAgICogcHJvcGVydHkgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLCB0aGVuIHRoZQogICAgICogaXRlcmF0aW9uIGlzIHN0b3BwZWQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2hQcm9wKG9iaiwgZnVuYykgewogICAgICAgIHZhciBwcm9wOwogICAgICAgIGZvciAocHJvcCBpbiBvYmopIHsKICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkgewogICAgICAgICAgICAgICAgaWYgKGZ1bmMob2JqW3Byb3BdLCBwcm9wKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBpbiBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGludG8gdGFyZ2V0LAogICAgICogYnV0IG9ubHkgaWYgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKSB7CiAgICAgICAgaWYgKHNvdXJjZSkgewogICAgICAgICAgICBlYWNoUHJvcChzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICFoYXNQcm9wKHRhcmdldCwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVlcFN0cmluZ01peGluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXkodmFsdWUpICYmICFpc0Z1bmN0aW9uKHZhbHVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKHRhcmdldFtwcm9wXSwgdmFsdWUsIGZvcmNlLCBkZWVwU3RyaW5nTWl4aW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICB9CgogICAgLy9TaW1pbGFyIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCiAgICAvL2ZpcnN0LCBzaW5jZSBpdCBpcyBlYXNpZXIgdG8gcmVhZC9maWd1cmUgb3V0IHdoYXQgJ3RoaXMnIHdpbGwgYmUuCiAgICBmdW5jdGlvbiBiaW5kKG9iaiwgZm4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkob2JqLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gc2NyaXB0cygpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgewogICAgICAgIHRocm93IGVycjsKICAgIH0KCiAgICAvL0FsbG93IGdldHRpbmcgYSBnbG9iYWwgdGhhdCBpcyBleHByZXNzZWQgaW4KICAgIC8vZG90IG5vdGF0aW9uLCBsaWtlICdhLmIuYycuCiAgICBmdW5jdGlvbiBnZXRHbG9iYWwodmFsdWUpIHsKICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGcgPSBnbG9iYWw7CiAgICAgICAgZWFjaCh2YWx1ZS5zcGxpdCgnLicpLCBmdW5jdGlvbiAocGFydCkgewogICAgICAgICAgICBnID0gZ1twYXJ0XTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdpdGggbW9yZSBpbmZvcm1hdGlvbi4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZXJyb3IgSUQgdGhhdCBtYXBzIHRvIGFuIElEIG9uIGEgd2ViIHBhZ2UuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBodW1hbiByZWFkYWJsZSBlcnJvci4KICAgICAqIEBwYXJhbSB7RXJyb3J9IFtlcnJdIHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgogICAgICoKICAgICAqIEByZXR1cm5zIHtFcnJvcn0KICAgICAqLwogICAgZnVuY3Rpb24gbWFrZUVycm9yKGlkLCBtc2csIGVyciwgcmVxdWlyZU1vZHVsZXMpIHsKICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgKyAnXG5odHRwczovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCMnICsgaWQpOwogICAgICAgIGUucmVxdWlyZVR5cGUgPSBpZDsKICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVxdWlyZU1vZHVsZXM7CiAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBlLm9yaWdpbmFsRXJyb3IgPSBlcnI7CiAgICAgICAgfQogICAgICAgIHJldHVybiBlOwogICAgfQoKICAgIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIC8vSWYgYSBkZWZpbmUgaXMgYWxyZWFkeSBpbiBwbGF5IHZpYSBhbm90aGVyIEFNRCBsb2FkZXIsCiAgICAgICAgLy9kbyBub3Qgb3ZlcndyaXRlLgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAodHlwZW9mIHJlcXVpcmVqcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1aXJlanMpKSB7CiAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyByZXF1aXJlanMgaW5zdGFuY2UuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY2ZnID0gcmVxdWlyZWpzOwogICAgICAgIHJlcXVpcmVqcyA9IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvL0FsbG93IGZvciBhIHJlcXVpcmUgY29uZmlnIG9iamVjdAogICAgaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNGdW5jdGlvbihyZXF1aXJlKSkgewogICAgICAgIC8vYXNzdW1lIGl0IGlzIGEgY29uZmlnIG9iamVjdC4KICAgICAgICBjZmcgPSByZXF1aXJlOwogICAgICAgIHJlcXVpcmUgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgZnVuY3Rpb24gbmV3Q29udGV4dChjb250ZXh0TmFtZSkgewogICAgICAgIHZhciBpbkNoZWNrTG9hZGVkLCBNb2R1bGUsIGNvbnRleHQsIGhhbmRsZXJzLAogICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCwKICAgICAgICAgICAgY29uZmlnID0gewogICAgICAgICAgICAgICAgLy9EZWZhdWx0cy4gRG8gbm90IHNldCBhIGRlZmF1bHQgZm9yIG1hcAogICAgICAgICAgICAgICAgLy9jb25maWcgdG8gc3BlZWQgdXAgbm9ybWFsaXplKCksIHdoaWNoCiAgICAgICAgICAgICAgICAvL3dpbGwgcnVuIGZhc3RlciBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LgogICAgICAgICAgICAgICAgd2FpdFNlY29uZHM6IDcsCiAgICAgICAgICAgICAgICBiYXNlVXJsOiAnLi8nLAogICAgICAgICAgICAgICAgcGF0aHM6IHt9LAogICAgICAgICAgICAgICAgYnVuZGxlczoge30sCiAgICAgICAgICAgICAgICBwa2dzOiB7fSwKICAgICAgICAgICAgICAgIHNoaW06IHt9LAogICAgICAgICAgICAgICAgY29uZmlnOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWdpc3RyeSA9IHt9LAogICAgICAgICAgICAvL3JlZ2lzdHJ5IG9mIGp1c3QgZW5hYmxlZCBtb2R1bGVzLCB0byBzcGVlZAogICAgICAgICAgICAvL2N5Y2xlIGJyZWFraW5nIGNvZGUgd2hlbiBsb3RzIG9mIG1vZHVsZXMKICAgICAgICAgICAgLy9hcmUgcmVnaXN0ZXJlZCwgYnV0IG5vdCBhY3RpdmF0ZWQuCiAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeSA9IHt9LAogICAgICAgICAgICB1bmRlZkV2ZW50cyA9IHt9LAogICAgICAgICAgICBkZWZRdWV1ZSA9IFtdLAogICAgICAgICAgICBkZWZpbmVkID0ge30sCiAgICAgICAgICAgIHVybEZldGNoZWQgPSB7fSwKICAgICAgICAgICAgYnVuZGxlc01hcCA9IHt9LAogICAgICAgICAgICByZXF1aXJlQ291bnRlciA9IDEsCiAgICAgICAgICAgIHVubm9ybWFsaXplZENvdW50ZXIgPSAxOwoKICAgICAgICAvKioKICAgICAgICAgKiBUcmltcyB0aGUgLiBhbmQgLi4gZnJvbSBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLgogICAgICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRpbmcgcGF0aCBzZWdtZW50IGlmIGEgLi4gd2lsbCBiZWNvbWUKICAgICAgICAgKiB0aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGggbW9kdWxlIG5hbWUgbG9va3VwcywKICAgICAgICAgKiB3aGljaCBhY3QgbGlrZSBwYXRocywgYnV0IGNhbiBiZSByZW1hcHBlZC4gQnV0IHRoZSBlbmQgcmVzdWx0LAogICAgICAgICAqIGFsbCBwYXRocyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG5vcm1hbGl6ZWQuCiAgICAgICAgICogTk9URTogdGhpcyBtZXRob2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgogICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyeSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0cmltRG90cyhhcnkpIHsKICAgICAgICAgICAgdmFyIGksIHBhcnQ7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHBhcnQgPSBhcnlbaV07CiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICBpIC09IDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdCB0aGUgc3RhcnQsIG9yIHByZXZpb3VzIHZhbHVlIGlzIHN0aWxsIC4uLAogICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXkKICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCB3b3JrIHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCwgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBJRCBpdCBpcyBsZXNzIHRoYW4gaWRlYWwuIEluIGxhcmdlciBwb2ludAogICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgPT09IDEgJiYgYXJ5WzJdID09PSAnLi4nKSB8fCBhcnlbaSAtIDFdID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpIC0gMSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0bwogICAgICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmUKICAgICAgICAgKiB0by4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwIGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSB2YWx1ZS4gU2hvdWxkCiAgICAgICAgICogb25seSBiZSBkb25lIGlmIHRoaXMgbm9ybWFsaXphdGlvbiBpcyBmb3IgYSBkZXBlbmRlbmN5IElELgogICAgICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSwgYXBwbHlNYXApIHsKICAgICAgICAgICAgdmFyIHBrZ01haW4sIG1hcFZhbHVlLCBuYW1lUGFydHMsIGksIGosIG5hbWVTZWdtZW50LCBsYXN0SW5kZXgsCiAgICAgICAgICAgICAgICBmb3VuZE1hcCwgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBub3JtYWxpemVkQmFzZVBhcnRzLAogICAgICAgICAgICAgICAgYmFzZVBhcnRzID0gKGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCcvJykpLAogICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwKICAgICAgICAgICAgICAgIHN0YXJNYXAgPSBtYXAgJiYgbWFwWycqJ107CgogICAgICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuCiAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxOwoKICAgICAgICAgICAgICAgIC8vIElmIHdhbnRpbmcgbm9kZSBJRCBjb21wYXRpYmlsaXR5LCBzdHJpcCAuanMgZnJvbSBlbmQKICAgICAgICAgICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRvVXJsCiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG5vZGUgYWxsb3dzIGVpdGhlciAuanMgb3Igbm9uIC5qcyB0byBtYXAKICAgICAgICAgICAgICAgIC8vIHRvIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3QobmFtZVtsYXN0SW5kZXhdKSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSAnLicgc28gbmVlZCB0aGUgYmFzZU5hbWUKICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdLmNoYXJBdCgwKSA9PT0gJy4nICYmIGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKICAgICAgICAgICAgICAgICAgICAvL3NvIHRoYXQgLiBtYXRjaGVzIHRoYXQgJ2RpcmVjdG9yeScgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzCiAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgJ29uZS90d28vdGhyZWUnLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3IKICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbm9ybWFsaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJpbURvdHMobmFtZSk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuCiAgICAgICAgICAgIGlmIChhcHBseU1hcCAmJiBtYXAgJiYgKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSkgewogICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgICAgIG91dGVyTG9vcDogZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAvL1NvLCBkbyBqb2lucyBvbiB0aGUgYmlnZ2VzdCB0byBzbWFsbGVzdCBsZW5ndGhzIG9mIGJhc2VQYXJ0cy4KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gYmFzZVBhcnRzLmxlbmd0aDsgaiA+IDA7IGogLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzIGNvbmZpZywgZmluZCBpZiBpdCBoYXMgb25lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IGdldE93bihtYXBWYWx1ZSwgbmFtZVNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvdXRlckxvb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZwogICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gZ2V0T3duKHN0YXJNYXAsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwOwogICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgewogICAgICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5zcGxpY2UoMCwgZm91bmRJLCBmb3VuZE1hcCk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIHRoZSBuYW1lIHBvaW50cyB0byBhIHBhY2thZ2UncyBuYW1lLCB1c2UKICAgICAgICAgICAgLy8gdGhlIHBhY2thZ2UgbWFpbiBpbnN0ZWFkLgogICAgICAgICAgICBwa2dNYWluID0gZ2V0T3duKGNvbmZpZy5wa2dzLCBuYW1lKTsKCiAgICAgICAgICAgIHJldHVybiBwa2dNYWluID8gcGtnTWFpbiA6IG5hbWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVTY3JpcHQobmFtZSkgewogICAgICAgICAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpID09PSBuYW1lICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpID09PSBjb250ZXh0LmNvbnRleHROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhhc1BhdGhGYWxsYmFjayhpZCkgewogICAgICAgICAgICB2YXIgcGF0aENvbmZpZyA9IGdldE93bihjb25maWcucGF0aHMsIGlkKTsKICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNBcnJheShwYXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIC8vUG9wIG9mZiB0aGUgZmlyc3QgYXJyYXkgdmFsdWUsIHNpbmNlIGl0IGZhaWxlZCwgYW5kCiAgICAgICAgICAgICAgICAvL3JldHJ5CiAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUudW5kZWYoaWQpOwoKICAgICAgICAgICAgICAgIC8vQ3VzdG9tIHJlcXVpcmUgdGhhdCBkb2VzIG5vdCBkbyBtYXAgdHJhbnNsYXRpb24sIHNpbmNlCiAgICAgICAgICAgICAgICAvL0lEIGlzICJhYnNvbHV0ZSIsIGFscmVhZHkgbWFwcGVkL3Jlc29sdmVkLgogICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZShudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgc2tpcE1hcDogdHJ1ZQogICAgICAgICAgICAgICAgfSkoW2lkXSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAgICAgLy93aXRoIHRoZSBwbHVnaW4gYmVpbmcgdW5kZWZpbmVkIGlmIHRoZSBuYW1lCiAgICAgICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LgogICAgICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICAgICAgdmFyIHByZWZpeCwKICAgICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7CiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRoYXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwgbW9kdWxlCiAgICAgICAgICogbmFtZSwgYW5kIHBhdGguIElmIHBhcmVudE1vZHVsZU1hcCBpcyBwcm92aWRlZCBpdCB3aWxsCiAgICAgICAgICogYWxzbyBub3JtYWxpemUgdGhlIG5hbWUgdmlhIHJlcXVpcmUubm9ybWFsaXplKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBtb2R1bGUgbmFtZQogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyZW50TW9kdWxlTWFwXSBwYXJlbnQgbW9kdWxlIG1hcAogICAgICAgICAqIGZvciB0aGUgbW9kdWxlIG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBuYW1lcy4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzTm9ybWFsaXplZDogaXMgdGhlIElEIGFscmVhZHkgbm9ybWFsaXplZC4KICAgICAgICAgKiBUaGlzIGlzIHRydWUgaWYgdGhpcyBjYWxsIGlzIGRvbmUgZm9yIGEgZGVmaW5lKCkgbW9kdWxlIElELgogICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KICAgICAgICAgKiBTaG91bGQgb25seSBiZSB0cnVlIGlmIHRoaXMgbWFwIGlzIGZvciBhIGRlcGVuZGVuY3kuCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG1ha2VNb2R1bGVNYXAobmFtZSwgcGFyZW50TW9kdWxlTWFwLCBpc05vcm1hbGl6ZWQsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1vZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCiAgICAgICAgICAgICAgICBwcmVmaXggPSBudWxsLAogICAgICAgICAgICAgICAgcGFyZW50TmFtZSA9IHBhcmVudE1vZHVsZU1hcCA/IHBhcmVudE1vZHVsZU1hcC5uYW1lIDogbnVsbCwKICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZSA9IHRydWUsCiAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9ICcnOwoKICAgICAgICAgICAgLy9JZiBubyBuYW1lLCB0aGVuIGl0IG1lYW5zIGl0IGlzIGEgcmVxdWlyZSBjYWxsLCBnZW5lcmF0ZSBhbgogICAgICAgICAgICAvL2ludGVybmFsIG5hbWUuCiAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIG5hbWUgPSAnX0ByJyArIChyZXF1aXJlQ291bnRlciArPSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0c1sxXTsKCiAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHBhcmVudE5hbWUsIGFwcGx5TWFwKTsKICAgICAgICAgICAgICAgIHBsdWdpbk1vZHVsZSA9IGdldE93bihkZWZpbmVkLCBwcmVmaXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FjY291bnQgZm9yIHJlbGF0aXZlIHBhdGhzIGlmIHRoZXJlIGlzIGEgYmFzZSBuYW1lLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGx1Z2luTW9kdWxlICYmIHBsdWdpbk1vZHVsZS5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9QbHVnaW4gaXMgbG9hZGVkLCB1c2UgaXRzIG5vcm1hbGl6ZSBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBwbHVnaW4gcmVmZXJlbmNlcywgdGhlbiBkbyBub3QgdHJ5IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSwgYXMgaXQgd2lsbCBub3Qgbm9ybWFsaXplIGNvcnJlY3RseS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmljdGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVybSBzb2x1dGlvbiBpcyBub3QgdG8gbm9ybWFsaXplIHVudGlsIHBsdWdpbnMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRlZCBhbmQgYWxsIG5vcm1hbGl6YXRpb25zIHRvIGFsbG93IGZvciBhc3luYwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5nIG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gdXNlcy4gRGV0YWlscyBpbiAjMTEzMQogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWUuaW5kZXhPZignIScpID09PSAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vQSByZWd1bGFyIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CgogICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplZCBuYW1lIG1heSBiZSBhIHBsdWdpbiBJRCBkdWUgdG8gbWFwIGNvbmZpZwogICAgICAgICAgICAgICAgICAgIC8vYXBwbGljYXRpb24gaW4gbm9ybWFsaXplLiBUaGUgbWFwIGNvbmZpZyB2YWx1ZXMgbXVzdAogICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0byByZWRvIHRoYXQgcGFydC4KICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZVBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgIGlzTm9ybWFsaXplZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiB0aGUgaWQgaXMgYSBwbHVnaW4gaWQgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBpdCBuZWVkcwogICAgICAgICAgICAvL25vcm1hbGl6YXRpb24sIHN0YW1wIGl0IHdpdGggYSB1bmlxdWUgSUQgc28gdHdvIG1hdGNoaW5nIHJlbGF0aXZlCiAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KICAgICAgICAgICAgc3VmZml4ID0gcHJlZml4ICYmICFwbHVnaW5Nb2R1bGUgJiYgIWlzTm9ybWFsaXplZCA/CiAgICAgICAgICAgICAgICAgICAgICdfdW5ub3JtYWxpemVkJyArICh1bm5vcm1hbGl6ZWRDb3VudGVyICs9IDEpIDoKICAgICAgICAgICAgICAgICAgICAgJyc7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsCiAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkTmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudE1hcDogcGFyZW50TW9kdWxlTWFwLAogICAgICAgICAgICAgICAgdW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBvcmlnaW5hbE5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZTogaXNEZWZpbmUsCiAgICAgICAgICAgICAgICBpZDogKHByZWZpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICchJyArIG5vcm1hbGl6ZWROYW1lIDoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRNb2R1bGUoZGVwTWFwKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGRlcE1hcC5pZCwKICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwoKICAgICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9kOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmIChoYXNQcm9wKGRlZmluZWQsIGlkKSAmJgogICAgICAgICAgICAgICAgICAgICghbW9kIHx8IG1vZC5kZWZpbmVFbWl0Q29tcGxldGUpKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgZm4oZGVmaW5lZFtpZF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9kID0gZ2V0TW9kdWxlKGRlcE1hcCk7CiAgICAgICAgICAgICAgICBpZiAobW9kLmVycm9yICYmIG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb2Qub24obmFtZSwgZm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgZXJyYmFjaykgewogICAgICAgICAgICB2YXIgaWRzID0gZXJyLnJlcXVpcmVNb2R1bGVzLAogICAgICAgICAgICAgICAgbm90aWZpZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmIChlcnJiYWNrKSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKGVycik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlYWNoKGlkcywgZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwogICAgICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZXJyb3Igb24gbW9kdWxlLCBzbyBpdCBza2lwcyB0aW1lb3V0IGNoZWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKICAgICAgICAgKiBkZWZRdWV1ZS4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CiAgICAgICAgICAgIC8vUHVzaCBhbGwgdGhlIGdsb2JhbERlZlF1ZXVlIGl0ZW1zIGludG8gdGhlIGNvbnRleHQncyBkZWZRdWV1ZQogICAgICAgICAgICBpZiAoZ2xvYmFsRGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBlYWNoKGdsb2JhbERlZlF1ZXVlLCBmdW5jdGlvbihxdWV1ZUl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBxdWV1ZUl0ZW1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5wdXNoKHF1ZXVlSXRlbSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAncmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QucmVxdWlyZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobW9kLm1hcCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIG1vZC51c2luZ0V4cG9ydHMgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW21vZC5tYXAuaWRdID0gbW9kLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ21vZHVsZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogbW9kLm1hcC51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE93bihjb25maWcuY29uZmlnLCBtb2QubWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9kLmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CiAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGluZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KICAgICAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W2lkXTsKICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQpIHsKICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKCiAgICAgICAgICAgIGlmIChtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwSWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOwoKICAgICAgICAgICAgICAgICAgICAvL09ubHkgZm9yY2UgdGhpbmdzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4gbWF0Y2hlZCB1cAogICAgICAgICAgICAgICAgICAgIC8vaW4gdGhlIG1vZHVsZSBhbHJlYWR5LgogICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFwcm9jZXNzZWRbZGVwSWRdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJhY2VkLCBkZXBJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5kZWZpbmVEZXAoaSwgZGVmaW5lZFtkZXBJZF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNoZWNrKCk7IC8vcGFzcyBmYWxzZT8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUoZGVwLCB0cmFjZWQsIHByb2Nlc3NlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRlZCgpIHsKICAgICAgICAgICAgdmFyIGVyciwgdXNpbmdQYXRoRmFsbGJhY2ssCiAgICAgICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAogICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCiAgICAgICAgICAgICAgICBleHBpcmVkID0gd2FpdEludGVydmFsICYmIChjb250ZXh0LnN0YXJ0VGltZSArIHdhaXRJbnRlcnZhbCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCiAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRG8gbm90IGJvdGhlciBpZiB0aGlzIGNhbGwgd2FzIGEgcmVzdWx0IG9mIGEgY3ljbGUgYnJlYWsuCiAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGluQ2hlY2tMb2FkZWQgPSB0cnVlOwoKICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMuCiAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1vZC5tYXAsCiAgICAgICAgICAgICAgICAgICAgbW9kSWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgLy9Ta2lwIHRoaW5ncyB0aGF0IGFyZSBub3QgZW5hYmxlZCBvciBpbiBlcnJvciBzdGF0ZS4KICAgICAgICAgICAgICAgIGlmICghbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICByZXFDYWxscy5wdXNoKG1vZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgICAgIC8vYmVlbiBpbml0ZWQgYW5kIHRpbWUgaXMgdXAsIHJlbWVtYmVyIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiBleHBpcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ1BhdGhGYWxsYmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Mb2Fkcy5wdXNoKG1vZElkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtb2QuaW5pdGVkICYmIG1vZC5mZXRjaGVkICYmIG1hcC5pc0RlZmluZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcC5wcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm8gcmVhc29uIHRvIGtlZXAgbG9va2luZyBmb3IgdW5maW5pc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkaW5nLiBJZiB0aGUgb25seSBzdGlsbExvYWRpbmcgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZWNhdXNlIGl0IG1heSBiZSB0aGF0IGEgcGx1Z2luIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lzIHdhaXRpbmcgb24gYSBub24tcGx1Z2luIGN5Y2xlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy9JZiB3YWl0IHRpbWUgZXhwaXJlZCwgdGhyb3cgZXJyb3Igb2YgdW5sb2FkZWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgIGVyciA9IG1ha2VFcnJvcigndGltZW91dCcsICdMb2FkIHRpbWVvdXQgZm9yIG1vZHVsZXM6ICcgKyBub0xvYWRzLCBudWxsLCBub0xvYWRzKTsKICAgICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CiAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL05vdCBleHBpcmVkLCBjaGVjayBmb3IgYSBjeWNsZS4KICAgICAgICAgICAgaWYgKG5lZWRDeWNsZUNoZWNrKSB7CiAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShtb2QsIHt9LCB7fSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiBzdGlsbCB3YWl0aW5nIG9uIGxvYWRzLCBhbmQgdGhlIHdhaXRpbmcgbG9hZCBpcyBzb21ldGhpbmcKICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcKICAgICAgICAgICAgLy9zY3JpcHRzLCB0aGVuIGp1c3QgdHJ5IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIGlmICgoIWV4cGlyZWQgfHwgdXNpbmdQYXRoRmFsbGJhY2spICYmIHN0aWxsTG9hZGluZykgewogICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKICAgICAgICAgICAgICAgIC8vaWYgYSB0aW1lb3V0IGlzIG5vdCBhbHJlYWR5IGluIGVmZmVjdC4KICAgICAgICAgICAgICAgIGlmICgoaXNCcm93c2VyIHx8IGlzV2ViV29ya2VyKSAmJiAhY2hlY2tMb2FkZWRUaW1lb3V0SWQpIHsKICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBNb2R1bGUgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gZ2V0T3duKHVuZGVmRXZlbnRzLCBtYXAuaWQpIHx8IHt9OwogICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDsKICAgICAgICAgICAgdGhpcy5zaGltID0gZ2V0T3duKGNvbmZpZy5zaGltLCBtYXAuaWQpOwogICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHMgPSBbXTsKICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWF0Y2hlZCA9IFtdOwogICAgICAgICAgICB0aGlzLnBsdWdpbk1hcHMgPSB7fTsKICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CgogICAgICAgICAgICAvKiB0aGlzLmV4cG9ydHMgdGhpcy5mYWN0b3J5CiAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdLAogICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQsIHRoaXMuZmV0Y2hlZAogICAgICAgICAgICAqLwogICAgICAgIH07CgogICAgICAgIE1vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBlcnJiYWNrLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQogICAgICAgICAgICAgICAgLy9hcmUgbXVsdGlwbGUgZGVmaW5lIGNhbGxzIGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoYXQgaXMgbm90CiAgICAgICAgICAgICAgICAvL2Egbm9ybWFsLCBjb21tb24gY2FzZSwgYnV0IGl0IGlzIGFsc28gbm90IHVuZXhwZWN0ZWQuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgZm9yIGVycm9ycyBvbiB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCdlcnJvcicsIGVycmJhY2spOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbm8gZXJyYmFjayBhbHJlYWR5LCBidXQgdGhlcmUgYXJlIGVycm9yIGxpc3RlbmVycwogICAgICAgICAgICAgICAgICAgIC8vb24gdGhpcyBtb2R1bGUsIHNldCB1cCBhbiBlcnJiYWNrIHRvIHBhc3MgdG8gdGhlIGRlcHMuCiAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0RvIGEgY29weSBvZiB0aGUgZGVwZW5kZW5jeSBhcnJheSwgc28gdGhhdAogICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZpZWQuIEZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAvLyJzaGltIiBkZXBzIGFyZSBwYXNzZWQgaW4gaGVyZSBkaXJlY3RseSwgYW5kCiAgICAgICAgICAgICAgICAvL2RvaW5nIGEgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVwTWFwcyBhcnJheQogICAgICAgICAgICAgICAgLy93b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCiAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBkZXBNYXBzICYmIGRlcE1hcHMuc2xpY2UoMCk7CgogICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNrID0gZXJyYmFjazsKCiAgICAgICAgICAgICAgICAvL0luZGljYXRlIHRoaXMgbW9kdWxlIGhhcyBiZSBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7CgogICAgICAgICAgICAgICAgLy9Db3VsZCBoYXZlIG9wdGlvbiB0byBpbml0IHRoaXMgbW9kdWxlIGluIGVuYWJsZWQgbW9kZSwKICAgICAgICAgICAgICAgIC8vb3IgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIGFzIGVuYWJsZWQuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KICAgICAgICAgICAgICAgIC8vaWYgZW5hYmxlZCBwcmV2aW91c2x5LCBub3cgdHJpZ2dlciBkZXBlbmRlbmNpZXMgYXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWQgfHwgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAvL1dpbGwgY2FsbCB0aGlzLmNoZWNrKCkKICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWZpbmVEZXA6IGZ1bmN0aW9uIChpLCBkZXBFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCiAgICAgICAgICAgICAgICAvL2V4cG9ydCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcE1hdGNoZWRbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgLT0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBkZXBFeHBvcnRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZldGNoZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5tYXA7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgbWFuYWdlciBpcyBmb3IgYSBwbHVnaW4gbWFuYWdlZCByZXNvdXJjZSwKICAgICAgICAgICAgICAgIC8vYXNrIHRoZSBwbHVnaW4gdG8gbG9hZCBpdCBub3cuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZSh0aGlzLm1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdWlsZENhbGxiYWNrOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5tYXAudXJsOwoKICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgogICAgICAgICAgICAgICAgaWYgKCF1cmxGZXRjaGVkW3VybF0pIHsKICAgICAgICAgICAgICAgICAgICB1cmxGZXRjaGVkW3VybF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwgdXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDaGVja3MgaWYgdGhlIG1vZHVsZSBpcyByZWFkeSB0byBkZWZpbmUgaXRzZWxmLCBhbmQgaWYgc28sCiAgICAgICAgICAgICAqIGRlZmluZSBpdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBlcnIsIGNqc01vZHVsZSwKICAgICAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwLmlkLAogICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0cywKICAgICAgICAgICAgICAgICAgICBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5OwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGZldGNoIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBkZWZRdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoY29udGV4dC5kZWZRdWV1ZU1hcCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5lcnJvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgLy90aGF0IHdvdWxkIHJlc3VsdCBpbiBjaGVja2luZyB0aGlzIG1vZHVsZSB0bwogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGl0c2VsZiBhZ2Fpbi4gSWYgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGFuIGVycm9yIGxpc3RlbmVyLCBmYXZvciBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci4gSG93ZXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25seSBkbyBpdCBmb3IgZGVmaW5lKCknZCAgbW9kdWxlcy4gcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJiYWNrcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgZmFpbHVyZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93ZXZlciBpZiBhIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbkVycm9yIGlzIHNldCwgdXNlIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZXZlbnRzLmVycm9yICYmIHRoaXMubWFwLmlzRGVmaW5lKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRzLCBleHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXZvciByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzLiBJZiBub2RlL2NqcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3aWxsIG5vdCBoYXZlIGEgcmV0dXJuIHZhbHVlIGFueXdheS4gRmF2b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5pc0RlZmluZSAmJiBleHBvcnRzID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5tYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gdGhpcy5tYXAuaXNEZWZpbmUgPyBbdGhpcy5tYXAuaWRdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZVR5cGUgPSB0aGlzLm1hcC5pc0RlZmluZSA/ICdkZWZpbmUnIDogJ3JlcXVpcmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgbGl0ZXJhbCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGZhY3Rvcnk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0cyA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgIXRoaXMuaWdub3JlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW2lkXSA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5vblJlc291cmNlTG9hZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNMb2FkTWFwcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xvYWRNYXBzLnB1c2goZGVwTWFwLm5vcm1hbGl6ZWRNYXAgfHwgZGVwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25SZXNvdXJjZUxvYWQoY29udGV4dCwgdGhpcy5tYXAsIHJlc0xvYWRNYXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiB1cAogICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUgc3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdhaW4KICAgICAgICAgICAgICAgICAgICAvL3RvIGFsbG93IGRlZmluZSBub3RpZmljYXRpb25zIGJlbG93IGluIHRoZSBjYXNlIG9mIGEKICAgICAgICAgICAgICAgICAgICAvL2N5Y2xlLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmaW5lZCAmJiAhdGhpcy5kZWZpbmVFbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdHRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVmaW5lZCcsIHRoaXMuZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdENvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2FsbFBsdWdpbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwLAogICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkLAogICAgICAgICAgICAgICAgICAgIC8vTWFwIGFscmVhZHkgbm9ybWFsaXplZCB0aGUgcHJlZml4LgogICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1ha2VNb2R1bGVNYXAobWFwLnByZWZpeCk7CgogICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGlzIHBsdWdpbiwgc28gaXQKICAgICAgICAgICAgICAgIC8vY2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgogICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gocGx1Z2luTWFwKTsKCiAgICAgICAgICAgICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvYWQsIG5vcm1hbGl6ZWRNYXAsIG5vcm1hbGl6ZWRNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZUlkID0gZ2V0T3duKGJ1bmRsZXNNYXAsIHRoaXMubWFwLmlkKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMubWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSB0aGlzLm1hcC5wYXJlbnRNYXAgPyB0aGlzLm1hcC5wYXJlbnRNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobWFwLnBhcmVudE1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2FpdCBmb3IgdGhhdAogICAgICAgICAgICAgICAgICAgIC8vbm9ybWFsaXplZCBuYW1lIHRvIGxvYWQgaW5zdGVhZCBvZiBjb250aW51aW5nLgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC51bm5vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIGlmIHRoZSBwbHVnaW4gYWxsb3dzIGl0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luLm5vcm1hbGl6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBsdWdpbi5ub3JtYWxpemUobmFtZSwgZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJlZml4IGFuZCBuYW1lIHNob3VsZCBhbHJlYWR5IGJlIG5vcm1hbGl6ZWQsIG5vIG5lZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3IgYXBwbHlpbmcgbWFwIGNvbmZpZyBhZ2FpbiBlaXRoZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAnIScgKyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wYXJlbnRNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBvbihub3JtYWxpemVkTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLm5vcm1hbGl6ZWRNYXAgPSBub3JtYWxpemVkTWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBub3JtYWxpemVkTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRNb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKG5vcm1hbGl6ZWRNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2Qub24oJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2QuZW5hYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSWYgYSBwYXRocyBjb25maWcsIHRoZW4ganVzdCBsb2FkIHRoYXQgZmlsZSBpbnN0ZWFkIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZXNvbHZlIHRoZSBwbHVnaW4sIGFzIGl0IGlzIGJ1aWx0IGludG8gdGhhdCBwYXRocyBsYXllci4KICAgICAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudXJsID0gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbG9hZCA9IGJpbmQodGhpcywgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGxvYWQuZXJyb3IgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1vZHVsZXMgPSBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9SZW1vdmUgdGVtcCB1bm5vcm1hbGl6ZWQgbW9kdWxlcyBmb3IgdGhpcyBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2luY2UgdGhleSB3aWxsIG5ldmVyIGJlIHJlc29sdmVkIG90aGVyd2lzZSBub3cuCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLm1hcC5pZC5pbmRleE9mKGlkICsgJ191bm5vcm1hbGl6ZWQnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuUmVnaXN0cnkobW9kLm1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL0FsbG93IHBsdWdpbnMgdG8gbG9hZCBvdGhlciBjb2RlIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlCiAgICAgICAgICAgICAgICAgICAgLy9jb250ZXh0IG9yIGhvdyB0byAnY29tcGxldGUnIHRoZSBsb2FkLgogICAgICAgICAgICAgICAgICAgIGxvYWQuZnJvbVRleHQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh0ZXh0LCB0ZXh0QWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZHVsZU5hbWUgPSBtYXAubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU1hcCA9IG1ha2VNb2R1bGVNYXAobW9kdWxlTmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGl2ZSA9IHVzZUludGVyYWN0aXZlOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9BcyBvZiAyLjEuMCwgc3VwcG9ydCBqdXN0IHBhc3NpbmcgdGhlIHRleHQsIHRvIHJlaW5mb3JjZQogICAgICAgICAgICAgICAgICAgICAgICAvL2Zyb21UZXh0IG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgcGVyIHJlc291cmNlLiBTdGlsbAogICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgb2xkIHN0eWxlIG9mIHBhc3NpbmcgbW9kdWxlTmFtZSBidXQgZGlzY2FyZAogICAgICAgICAgICAgICAgICAgICAgICAvL3RoYXQgbW9kdWxlTmFtZSBpbiBmYXZvciBvZiB0aGUgaW50ZXJuYWwgcmVmLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHRBbHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vVHVybiBvZmYgaW50ZXJhY3RpdmUgc2NyaXB0IG1hdGNoaW5nIGZvciBJRSBmb3IgYW55IGRlZmluZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGxzIGluIHRoZSB0ZXh0LCB0aGVuIHR1cm4gaXQgYmFjayBvbiBhdCB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUHJpbWUgdGhlIHN5c3RlbSBieSBjcmVhdGluZyBhIG1vZHVsZSBpbnN0YW5jZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy9pdC4KICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1vZHVsZU1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1RyYW5zZmVyIGFueSBjb25maWcgdG8gdGhpcyBvdGhlciBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQcm9wKGNvbmZpZy5jb25maWcsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZpZ1ttb2R1bGVOYW1lXSA9IGNvbmZpZy5jb25maWdbaWRdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLmV4ZWModGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignZnJvbXRleHRldmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb21UZXh0IGV2YWwgZm9yICcgKyBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICcgKyBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBwbHVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdXBwb3J0IGFub255bW91cyBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCB0aGUgdmFsdWUgb2YgdGhhdCBtb2R1bGUgdG8gdGhlIHZhbHVlIGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UgSUQuCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZShbbW9kdWxlTmFtZV0sIGxvYWQpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL1VzZSBwYXJlbnROYW1lIGhlcmUgc2luY2UgdGhlIHBsdWdpbidzIG5hbWUgaXMgbm90IHJlbGlhYmxlLAogICAgICAgICAgICAgICAgICAgIC8vY291bGQgYmUgc29tZSB3ZWlyZCBzdHJpbmcgd2l0aCBubyBwYXRoIHRoYXQgYWN0dWFsbHkgd2FudHMgdG8KICAgICAgICAgICAgICAgICAgICAvL3JlZmVyZW5jZSB0aGUgcGFyZW50TmFtZSdzIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmxvYWQobWFwLm5hbWUsIGxvY2FsUmVxdWlyZSwgbG9hZCwgY29uZmlnKTsKICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5NYXBzW3BsdWdpbk1hcC5pZF0gPSBwbHVnaW5NYXA7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeVt0aGlzLm1hcC5pZF0gPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL1NldCBmbGFnIG1lbnRpb25pbmcgdGhhdCB0aGUgbW9kdWxlIGlzIGVuYWJsaW5nLAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IGltbWVkaWF0ZSBjYWxscyB0byB0aGUgZGVmaW5lZCBjYWxsYmFja3MKICAgICAgICAgICAgICAgIC8vZm9yIGRlcGVuZGVuY2llcyBkbyBub3QgdHJpZ2dlciBpbmFkdmVydGVudCBsb2FkCiAgICAgICAgICAgICAgICAvL3dpdGggdGhlIGRlcENvdW50IHN0aWxsIGJlaW5nIHplcm8uCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1vZCwgaGFuZGxlcjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBNYXAgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVwZW5kZW5jeSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBkZXBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgLy9hbmQgd2lyZWQgdXAgdG8gdGhpcyBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcE1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1hcC5pc0RlZmluZSA/IHRoaXMubWFwIDogdGhpcy5tYXAucGFyZW50TWFwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5za2lwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzW2ldID0gZGVwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGdldE93bihoYW5kbGVycywgZGVwTWFwLmlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBoYW5kbGVyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50ICs9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwRXhwb3J0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5kZWZlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRGVwKGksIGRlcEV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgdGhpcy5lcnJiYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGRpcmVjdCBlcnJiYWNrIG9uIHRoaXMgbW9kdWxlLCBidXQgc29tZXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGlzIGxpc3RlbmluZyBmb3IgZXJyb3JzLCBzbyBiZSBzdXJlIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGUgdGhlIGVycm9yIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRlcE1hcCwgJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWQgPSBkZXBNYXAuaWQ7CiAgICAgICAgICAgICAgICAgICAgbW9kID0gcmVnaXN0cnlbaWRdOwoKICAgICAgICAgICAgICAgICAgICAvL1NraXAgc3BlY2lhbCBtb2R1bGVzIGxpa2UgJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnCiAgICAgICAgICAgICAgICAgICAgLy9BbHNvLCBkb24ndCBjYWxsIGVuYWJsZSBpZiBpdCBpcyBhbHJlYWR5IGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnRhbnQgaW4gY2lyY3VsYXIgZGVwZW5kZW5jeSBjYXNlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoaGFuZGxlcnMsIGlkKSAmJiBtb2QgJiYgIW1vZC5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGRlcE1hcCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgIC8vRW5hYmxlIGVhY2ggcGx1Z2luIHRoYXQgaXMgdXNlZCBpbgogICAgICAgICAgICAgICAgLy9hIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2hQcm9wKHRoaXMucGx1Z2luTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgcGx1Z2luTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgb246IGZ1bmN0aW9uIChuYW1lLCBjYikgewogICAgICAgICAgICAgICAgdmFyIGNicyA9IHRoaXMuZXZlbnRzW25hbWVdOwogICAgICAgICAgICAgICAgaWYgKCFjYnMpIHsKICAgICAgICAgICAgICAgICAgICBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXSA9IFtdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2JzLnB1c2goY2IpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW1pdDogZnVuY3Rpb24gKG5hbWUsIGV2dCkgewogICAgICAgICAgICAgICAgZWFjaCh0aGlzLmV2ZW50c1tuYW1lXSwgZnVuY3Rpb24gKGNiKSB7CiAgICAgICAgICAgICAgICAgICAgY2IoZXZ0KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICAvL05vdyB0aGF0IHRoZSBlcnJvciBoYW5kbGVyIHdhcyB0cmlnZ2VyZWQsIHJlbW92ZQogICAgICAgICAgICAgICAgICAgIC8vdGhlIGxpc3RlbmVycywgc2luY2UgdGhpcyBicm9rZW4gTW9kdWxlIGluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgLy9jYW4gc3RheSBhcm91bmQgZm9yIGEgd2hpbGUgaW4gdGhlIHJlZ2lzdHJ5LgogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIGNhbGxHZXRNb2R1bGUoYXJncykgewogICAgICAgICAgICAvL1NraXAgbW9kdWxlcyBhbHJlYWR5IGRlZmluZWQuCiAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBhcmdzWzBdKSkgewogICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAoYXJnc1swXSwgbnVsbCwgdHJ1ZSkpLmluaXQoYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGZ1bmMsIG5hbWUsIGllTmFtZSkgewogICAgICAgICAgICAvL0Zhdm9yIGRldGFjaEV2ZW50IGJlY2F1c2Ugb2YgSUU5CiAgICAgICAgICAgIC8vaXNzdWUsIHNlZSBhdHRhY2hFdmVudC9hZGRFdmVudExpc3RlbmVyIGNvbW1lbnQgZWxzZXdoZXJlCiAgICAgICAgICAgIC8vaW4gdGhpcyBmaWxlLgogICAgICAgICAgICBpZiAobm9kZS5kZXRhY2hFdmVudCAmJiAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSWYgbm90IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IsIHdoaWNoIHdpbGwgYmUKICAgICAgICAgICAgICAgIC8vdXNlZnVsIHRvIGtub3cuCiAgICAgICAgICAgICAgICBpZiAoaWVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZS5kZXRhY2hFdmVudChpZU5hbWUsIGZ1bmMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogR2l2ZW4gYW4gZXZlbnQgZnJvbSBhIHNjcmlwdCBub2RlLCBnZXQgdGhlIHJlcXVpcmVqcyBpbmZvIGZyb20gaXQsCiAgICAgICAgICogYW5kIHRoZW4gcmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBub2RlLgogICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dAogICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0U2NyaXB0RGF0YShldnQpIHsKICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAvL2FsbCBvbGQgYnJvd3NlcnMgd2lsbCBiZSBzdXBwb3J0ZWQsIGJ1dCB0aGlzIG9uZSB3YXMgZWFzeSBlbm91Z2gKICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgdmFyIG5vZGUgPSBldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudDsKCiAgICAgICAgICAgIC8vUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb25jZSBoZXJlLgogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgJ2xvYWQnLCAnb25yZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGNvbnRleHQub25TY3JpcHRFcnJvciwgJ2Vycm9yJyk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgICAgIGlkOiBub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW50YWtlRGVmaW5lcygpIHsKICAgICAgICAgICAgdmFyIGFyZ3M7CgogICAgICAgICAgICAvL0FueSBkZWZpbmVkIG1vZHVsZXMgaW4gdGhlIGdsb2JhbCBxdWV1ZSwgaW50YWtlIHRoZW0gbm93LgogICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgIC8vTWFrZSBzdXJlIGFueSByZW1haW5pbmcgZGVmUXVldWUgaXRlbXMgZ2V0IHByb3Blcmx5IHByb2Nlc3NlZC4KICAgICAgICAgICAgd2hpbGUgKGRlZlF1ZXVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignbWlzbWF0Y2gnLCAnTWlzbWF0Y2hlZCBhbm9ueW1vdXMgZGVmaW5lKCkgbW9kdWxlOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vYXJncyBhcmUgaWQsIGRlcHMsIGZhY3RvcnkuIFNob3VsZCBiZSBub3JtYWxpemVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lKCkgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwID0ge307CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICBjb25maWc6IGNvbmZpZywKICAgICAgICAgICAgY29udGV4dE5hbWU6IGNvbnRleHROYW1lLAogICAgICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksCiAgICAgICAgICAgIGRlZmluZWQ6IGRlZmluZWQsCiAgICAgICAgICAgIHVybEZldGNoZWQ6IHVybEZldGNoZWQsCiAgICAgICAgICAgIGRlZlF1ZXVlOiBkZWZRdWV1ZSwKICAgICAgICAgICAgZGVmUXVldWVNYXA6IHt9LAogICAgICAgICAgICBNb2R1bGU6IE1vZHVsZSwKICAgICAgICAgICAgbWFrZU1vZHVsZU1hcDogbWFrZU1vZHVsZU1hcCwKICAgICAgICAgICAgbmV4dFRpY2s6IHJlcS5uZXh0VGljaywKICAgICAgICAgICAgb25FcnJvcjogb25FcnJvciwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBTZXQgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGV4dC4KICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBjb25maWcgb2JqZWN0IHRvIGludGVncmF0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24gKGNmZykgewogICAgICAgICAgICAgICAgLy9NYWtlIHN1cmUgdGhlIGJhc2VVcmwgZW5kcyBpbiBhIHNsYXNoLgogICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsLmNoYXJBdChjZmcuYmFzZVVybC5sZW5ndGggLSAxKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsICs9ICcvJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ29udmVydCBvbGQgc3R5bGUgdXJsQXJncyBzdHJpbmcgdG8gYSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2ZnLnVybEFyZ3MgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVybEFyZ3MgPSBjZmcudXJsQXJnczsKICAgICAgICAgICAgICAgICAgICBjZmcudXJsQXJncyA9IGZ1bmN0aW9uKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyB1cmxBcmdzOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9TYXZlIG9mZiB0aGUgcGF0aHMgc2luY2UgdGhleSByZXF1aXJlIHNwZWNpYWwgcHJvY2Vzc2luZywKICAgICAgICAgICAgICAgIC8vdGhleSBhcmUgYWRkaXRpdmUuCiAgICAgICAgICAgICAgICB2YXIgc2hpbSA9IGNvbmZpZy5zaGltLAogICAgICAgICAgICAgICAgICAgIG9ianMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2Jqc1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4oY29uZmlnW3Byb3BdLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9SZXZlcnNlIG1hcCB0aGUgYnVuZGxlcwogICAgICAgICAgICAgICAgaWYgKGNmZy5idW5kbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLmJ1bmRsZXMsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLCBmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgIT09IHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzTWFwW3ZdID0gcHJvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9NZXJnZSBzaGltCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnNoaW0pIHsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChjZmcuc2hpbSwgZnVuY3Rpb24gKHZhbHVlLCBpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZSB0aGUgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwczogdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5leHBvcnRzIHx8IHZhbHVlLmluaXQpICYmICF2YWx1ZS5leHBvcnRzRm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmV4cG9ydHNGbiA9IGNvbnRleHQubWFrZVNoaW1FeHBvcnRzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzaGltW2lkXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zaGltID0gc2hpbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0FkanVzdCBwYWNrYWdlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnBhY2thZ2VzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaChjZmcucGFja2FnZXMsIGZ1bmN0aW9uIChwa2dPYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uLCBuYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgcGtnT2JqID0gdHlwZW9mIHBrZ09iaiA9PT0gJ3N0cmluZycgPyB7bmFtZTogcGtnT2JqfSA6IHBrZ09iajsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwa2dPYmoubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzW25hbWVdID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1NhdmUgcG9pbnRlciB0byBtYWluIG1vZHVsZSBJRCBmb3IgcGtnIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIGxlYWRpbmcgZG90IGluIG1haW4sIHNvIG1haW4gcGF0aHMgYXJlIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHJlbW92ZSBhbnkgdHJhaWxpbmcgLmpzLCBzaW5jZSBkaWZmZXJlbnQgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAvL2VudnMgaGF2ZSBkaWZmZXJlbnQgY29udmVudGlvbnM6IHNvbWUgdXNlIGEgbW9kdWxlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc29tZSB1c2UgYSBmaWxlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wa2dzW25hbWVdID0gcGtnT2JqLm5hbWUgKyAnLycgKyAocGtnT2JqLm1haW4gfHwgJ21haW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoY3VyckRpclJlZ0V4cCwgJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSAid2FpdGluZyB0byBleGVjdXRlIiBtb2R1bGVzIGluIHRoZSByZWdpc3RyeSwKICAgICAgICAgICAgICAgIC8vdXBkYXRlIHRoZSBtYXBzIGZvciB0aGVtLCBzaW5jZSB0aGVpciBpbmZvLCBsaWtlIFVSTHMgdG8gbG9hZCwKICAgICAgICAgICAgICAgIC8vbWF5IGhhdmUgY2hhbmdlZC4KICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kLCBpZCkgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbW9kdWxlIGFscmVhZHkgaGFzIGluaXQgY2FsbGVkLCBzaW5jZSBpdCBpcyB0b28KICAgICAgICAgICAgICAgICAgICAvL2xhdGUgdG8gbW9kaWZ5IHRoZW0sIGFuZCBpZ25vcmUgdW5ub3JtYWxpemVkIG9uZXMKICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgYXJlIHRyYW5zaWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZC5pbml0ZWQgJiYgIW1vZC5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5tYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL0lmIGEgZGVwcyBhcnJheSBvciBhIGNvbmZpZyBjYWxsYmFjayBpcyBzcGVjaWZpZWQsIHRoZW4gY2FsbAogICAgICAgICAgICAgICAgLy9yZXF1aXJlIHdpdGggdGhvc2UgYXJncy4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXF1aXJlIGlzIGRlZmluZWQgYXMgYQogICAgICAgICAgICAgICAgLy9jb25maWcgb2JqZWN0IGJlZm9yZSByZXF1aXJlLmpzIGlzIGxvYWRlZC4KICAgICAgICAgICAgICAgIGlmIChjZmcuZGVwcyB8fCBjZmcuY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUoY2ZnLmRlcHMgfHwgW10sIGNmZy5jYWxsYmFjayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtYWtlU2hpbUV4cG9ydHM6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZm4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB2YWx1ZS5pbml0LmFwcGx5KGdsb2JhbCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCB8fCAodmFsdWUuZXhwb3J0cyAmJiBnZXRHbG9iYWwodmFsdWUuZXhwb3J0cykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZuOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVJlcXVpcmU6IGZ1bmN0aW9uIChyZWxNYXAsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvY2FsUmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZCwgbWFwLCByZXF1aXJlTW9kOwoKICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVCdWlsZENhbGxiYWNrICYmIGNhbGxiYWNrICYmIGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLl9fcmVxdWlyZUpzQnVpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW52YWxpZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3JlcXVpcmVhcmdzJywgJ0ludmFsaWQgcmVxdWlyZSBjYWxsJyksIGVycmJhY2spOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHJlcXVpcmV8ZXhwb3J0c3xtb2R1bGUgYXJlIHJlcXVlc3RlZCwgZ2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3ZhbHVlIGZvciB0aGVtIGZyb20gdGhlIHNwZWNpYWwgaGFuZGxlcnMuIENhdmVhdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG9ubHkgd29ya3Mgd2hpbGUgbW9kdWxlIGlzIGJlaW5nIGRlZmluZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxNYXAgJiYgaGFzUHJvcChoYW5kbGVycywgZGVwcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyc1tkZXBzXShyZWdpc3RyeVtyZWxNYXAuaWRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TeW5jaHJvbm91cyBhY2Nlc3MgdG8gb25lIG1vZHVsZS4gSWYgcmVxdWlyZS5nZXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgLy9hdmFpbGFibGUgKGFzIGluIHRoZSBOb2RlIGFkYXB0ZXIpLCBwcmVmZXIgdGhhdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5nZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXEuZ2V0KGNvbnRleHQsIGRlcHMsIHJlbE1hcCwgbG9jYWxSZXF1aXJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi4KICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbWFrZU1vZHVsZU1hcChkZXBzLCByZWxNYXAsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vdGxvYWRlZCcsICdNb2R1bGUgbmFtZSAiJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCBmb3IgY29udGV4dDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsTWFwID8gJycgOiAnLiBVc2UgcmVxdWlyZShbXSknKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vR3JhYiBkZWZpbmVzIHdhaXRpbmcgaW4gdGhlIGdsb2JhbCBxdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgIC8vTWFyayBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcyBuZWVkaW5nIHRvIGJlIGxvYWRlZC4KICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Tb21lIGRlZmluZXMgY291bGQgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUgY2FsbCwgY29sbGVjdCB0aGVtLgogICAgICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kID0gZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAobnVsbCwgcmVsTWFwKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1N0b3JlIGlmIG1hcCBjb25maWcgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhpcyByZXF1aXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FsbCBmb3IgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLnNraXBNYXAgPSBvcHRpb25zLnNraXBNYXA7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLmluaXQoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1peGluKGxvY2FsUmVxdWlyZSwgewogICAgICAgICAgICAgICAgICAgIGlzQnJvd3NlcjogaXNCcm93c2VyLAoKICAgICAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAgICAgKiBDb252ZXJ0cyBhIG1vZHVsZSBuYW1lICsgLmV4dGVuc2lvbiBpbnRvIGFuIFVSTCBwYXRoLgogICAgICAgICAgICAgICAgICAgICAqICpSZXF1aXJlcyogdGhlIHVzZSBvZiBhIG1vZHVsZSBuYW1lLiBJdCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nCiAgICAgICAgICAgICAgICAgICAgICogcGxhaW4gVVJMcyBsaWtlIG5hbWVUb1VybC4KICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICB0b1VybDogZnVuY3Rpb24gKG1vZHVsZU5hbWVQbHVzRXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG1vZHVsZU5hbWVQbHVzRXh0Lmxhc3RJbmRleE9mKCcuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3BsaXQoJy8nKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVsYXRpdmUgPSBzZWdtZW50ID09PSAnLicgfHwgc2VnbWVudCA9PT0gJy4uJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vSGF2ZSBhIGZpbGUgZXh0ZW5zaW9uIGFsaWFzLCBhbmQgaXQgaXMgbm90IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL2RvdHMgZnJvbSBhIHJlbGF0aXZlIHBhdGguCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgKCFpc1JlbGF0aXZlIHx8IGluZGV4ID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZyhpbmRleCwgbW9kdWxlTmFtZVBsdXNFeHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWVQbHVzRXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZShtb2R1bGVOYW1lUGx1c0V4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsTWFwICYmIHJlbE1hcC5pZCwgdHJ1ZSksIGV4dCwgIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIGRlZmluZWQ6IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZCk7CiAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgaWQpIHx8IGhhc1Byb3AocmVnaXN0cnksIGlkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL09ubHkgYWxsb3cgdW5kZWYgb24gdG9wIGxldmVsIHJlcXVpcmUgY2FsbHMKICAgICAgICAgICAgICAgIGlmICghcmVsTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlLnVuZGVmID0gZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCBhbnkgd2FpdGluZyBkZWZpbmUoKSBjYWxscyB0byB0aGlzIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZml4IGZvciAjNDA4CiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwgdHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC51bmRlZmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybEZldGNoZWRbbWFwLnVybF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1bmRlZkV2ZW50c1tpZF07CgogICAgICAgICAgICAgICAgICAgICAgICAvL0NsZWFuIHF1ZXVlZCBkZWZpbmVzIHRvby4gR28gYmFja3dhcmRzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaW4gYXJyYXkgc28gdGhhdCB0aGUgc3BsaWNlcyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgLy9tZXNzIHVwIHRoZSBpdGVyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hSZXZlcnNlKGRlZlF1ZXVlLCBmdW5jdGlvbihhcmdzLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hvbGQgb24gdG8gbGlzdGVuZXJzIGluIGNhc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21vZHVsZSB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2luZyBhIGRpZmZlcmVudCBjb25maWcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZFdmVudHNbaWRdID0gbW9kLmV2ZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsZWQgdG8gZW5hYmxlIGEgbW9kdWxlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSByZWdpc3RyeQogICAgICAgICAgICAgKiBhd2FpdGluZyBlbmFibGVtZW50LiBBIHNlY29uZCBhcmcsIHBhcmVudCwgdGhlIHBhcmVudCBtb2R1bGUsCiAgICAgICAgICAgICAqIGlzIHBhc3NlZCBpbiBmb3IgY29udGV4dCwgd2hlbiB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5CiAgICAgICAgICAgICAqIHRoZSBvcHRpbWl6ZXIuIE5vdCBzaG93biBoZXJlIHRvIGtlZXAgY29kZSBjb21wYWN0LgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBkZXBNYXAuaWQpOwogICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShkZXBNYXApLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEludGVybmFsIG1ldGhvZCB1c2VkIGJ5IGVudmlyb25tZW50IGFkYXB0ZXJzIHRvIGNvbXBsZXRlIGEgbG9hZCBldmVudC4KICAgICAgICAgICAgICogQSBsb2FkIGV2ZW50IGNvdWxkIGJlIGEgc2NyaXB0IGxvYWQgb3IganVzdCBhIGxvYWQgcGFzcyBmcm9tIGEgc3luY2hyb25vdXMKICAgICAgICAgICAgICogbG9hZCBjYWxsLgogICAgICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbW9kdWxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgY29tcGxldGVMb2FkOiBmdW5jdGlvbiAobW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgdmFyIGZvdW5kLCBhcmdzLCBtb2QsCiAgICAgICAgICAgICAgICAgICAgc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbW9kdWxlTmFtZSkgfHwge30sCiAgICAgICAgICAgICAgICAgICAgc2hFeHBvcnRzID0gc2hpbS5leHBvcnRzOwoKICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzID0gZGVmUXVldWUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdID0gbW9kdWxlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbHJlYWR5IGZvdW5kIGFuIGFub255bW91cyBtb2R1bGUgYW5kIGJvdW5kIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdG8gdGhpcyBuYW1lLCB0aGVuIHRoaXMgaXMgc29tZSBvdGhlciBhbm9uIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICAgICAvL3dhaXRpbmcgZm9yIGl0cyBjb21wbGV0ZUxvYWQgdG8gZmlyZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSBtb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRm91bmQgbWF0Y2hpbmcgZGVmaW5lIGNhbGwgZm9yIHRoaXMgc2NyaXB0IQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9kdWxlKGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwoKICAgICAgICAgICAgICAgIC8vRG8gdGhpcyBhZnRlciB0aGUgY3ljbGUgb2YgY2FsbEdldE1vZHVsZSBpbiBjYXNlIHRoZSByZXN1bHQKICAgICAgICAgICAgICAgIC8vb2YgdGhvc2UgY2FsbHMvaW5pdCBjYWxscyBjaGFuZ2VzIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiAhaGFzUHJvcChkZWZpbmVkLCBtb2R1bGVOYW1lKSAmJiBtb2QgJiYgIW1vZC5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuZm9yY2VEZWZpbmUgJiYgKCFzaEV4cG9ydHMgfHwgIWdldEdsb2JhbChzaEV4cG9ydHMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxiYWNrKG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vZGVmaW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIGRlZmluZSBjYWxsIGZvciAnICsgbW9kdWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvL0Egc2NyaXB0IHRoYXQgZG9lcyBub3QgY2FsbCBkZWZpbmUoKSwgc28ganVzdCBzaW11bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAvL3RoZSBjYWxsIGZvciBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShbbW9kdWxlTmFtZSwgKHNoaW0uZGVwcyB8fCBbXSksIHNoaW0uZXhwb3J0c0ZuXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSB0byBhIGZpbGUgcGF0aC4gU3VwcG9ydHMgY2FzZXMgd2hlcmUKICAgICAgICAgICAgICogbW9kdWxlTmFtZSBtYXkgYWN0dWFsbHkgYmUganVzdCBhbiBVUkwuCiAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpdCAqKmRvZXMgbm90KiogY2FsbCBub3JtYWxpemUgb24gdGhlIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAqIGl0IGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gVGhpcyBpcyBhbgogICAgICAgICAgICAgKiBpbnRlcm5hbCBBUEksIG5vdCBhIHB1YmxpYyBvbmUuIFVzZSB0b1VybCBmb3IgdGhlIHB1YmxpYyBBUEkuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBuYW1lVG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lLCBleHQsIHNraXBFeHQpIHsKICAgICAgICAgICAgICAgIHZhciBwYXRocywgc3ltcywgaSwgcGFyZW50TW9kdWxlLCB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCwgYnVuZGxlSWQsCiAgICAgICAgICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKHBrZ01haW4pIHsKICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lID0gcGtnTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCBtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQsIGV4dCwgc2tpcEV4dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9JZiBhIGNvbG9uIGlzIGluIHRoZSBVUkwsIGl0IGluZGljYXRlcyBhIHByb3RvY29sIGlzIHVzZWQgYW5kIGl0IGlzIGp1c3QKICAgICAgICAgICAgICAgIC8vYW4gVVJMIHRvIGEgZmlsZSwgb3IgaWYgaXQgc3RhcnRzIHdpdGggYSBzbGFzaCwgY29udGFpbnMgYSBxdWVyeSBhcmcgKGkuZS4gPykKICAgICAgICAgICAgICAgIC8vb3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNlIGFuIHVybCBhbmQgbm90IGEgbW9kdWxlIGlkLgogICAgICAgICAgICAgICAgLy9UaGUgc2xhc2ggaXMgaW1wb3J0YW50IGZvciBwcm90b2NvbC1sZXNzIFVSTHMgYXMgd2VsbCBhcyBmdWxsIHBhdGhzLgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBuYW1lIGxvb2t1cCwgc28ganVzdCByZXR1cm4gaXQuCiAgICAgICAgICAgICAgICAgICAgLy9BZGQgZXh0ZW5zaW9uIGlmIGl0IGlzIGluY2x1ZGVkLiBUaGlzIGlzIGEgYml0IHdvbmt5LCBvbmx5IG5vbi0uanMgdGhpbmdzIHBhc3MKICAgICAgICAgICAgICAgICAgICAvL2FuIGV4dGVuc2lvbiwgdGhpcyBtZXRob2QgcHJvYmFibHkgbmVlZHMgdG8gYmUgcmV3b3JrZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0EgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgcGF0aC4KICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5wYXRoczsKCiAgICAgICAgICAgICAgICAgICAgc3ltcyA9IG1vZHVsZU5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgICAgICAvL0ZvciBlYWNoIG1vZHVsZSBuYW1lIHNlZ21lbnQsIHNlZSBpZiB0aGVyZSBpcyBhIHBhdGgKICAgICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyZWQgZm9yIGl0LiBTdGFydCB3aXRoIG1vc3Qgc3BlY2lmaWMgbmFtZQogICAgICAgICAgICAgICAgICAgIC8vYW5kIHdvcmsgdXAgZnJvbSBpdC4KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzeW1zLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2R1bGUgPSBzeW1zLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBnZXRPd24ocGF0aHMsIHBhcmVudE1vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIGFuIGFycmF5LCBpdCBtZWFucyB0aGVyZSBhcmUgYSBmZXcgY2hvaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBkZXNpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXJlbnRQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBwYXJlbnRQYXRoWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltcy5zcGxpY2UoMCwgaSwgcGFyZW50UGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9Kb2luIHRoZSBwYXRoIHBhcnRzIHRvZ2V0aGVyLCB0aGVuIGZpZ3VyZSBvdXQgaWYgYmFzZVVybCBpcyBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gc3ltcy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICAgICAgdXJsICs9IChleHQgfHwgKC9eZGF0YVw6fF5ibG9iXDp8XD8vLnRlc3QodXJsKSB8fCBza2lwRXh0ID8gJycgOiAnLmpzJykpOwogICAgICAgICAgICAgICAgICAgIHVybCA9ICh1cmwuY2hhckF0KDApID09PSAnLycgfHwgdXJsLm1hdGNoKC9eW1x3XCtcLlwtXSs6LykgPyAnJyA6IGNvbmZpZy5iYXNlVXJsKSArIHVybDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybEFyZ3MgJiYgIS9eYmxvYlw6Ly50ZXN0KHVybCkgPwogICAgICAgICAgICAgICAgICAgICAgIHVybCArIGNvbmZpZy51cmxBcmdzKG1vZHVsZU5hbWUsIHVybCkgOiB1cmw7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvL0RlbGVnYXRlcyB0byByZXEubG9hZC4gQnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAgIC8vYWxsb3cgb3ZlcnJpZGluZyBpbiB0aGUgb3B0aW1pemVyLgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoaWQsIHVybCkgewogICAgICAgICAgICAgICAgcmVxLmxvYWQoY29udGV4dCwgaWQsIHVybCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogRXhlY3V0ZXMgYSBtb2R1bGUgY2FsbGJhY2sgZnVuY3Rpb24uIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbgogICAgICAgICAgICAgKiBzb2xlbHkgdG8gYWxsb3cgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZXF1ZW5jZSB0aGUgZmlsZXMgaW4gdGhlIGJ1aWx0CiAgICAgICAgICAgICAqIGxheWVyIGluIHRoZSByaWdodCBzZXF1ZW5jZS4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHByaXZhdGUKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGV4ZWNDYjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBhcmdzLCBleHBvcnRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoZXhwb3J0cywgYXJncyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogY2FsbGJhY2sgZm9yIHNjcmlwdCBsb2FkcywgdXNlZCB0byBjaGVjayBzdGF0dXMgb2YgbG9hZGluZy4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZ0IHRoZSBldmVudCBmcm9tIHRoZSBicm93c2VyIGZvciB0aGUgc2NyaXB0CiAgICAgICAgICAgICAqIHRoYXQgd2FzIGxvYWRlZC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0TG9hZDogZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgICAgICAvL3RvIHN1cHBvcnQgYW5kIHN0aWxsIG1ha2VzIHNlbnNlLgogICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09PSAnbG9hZCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWR5UmVnRXhwLnRlc3QoKGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50KS5yZWFkeVN0YXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAvL1Jlc2V0IGludGVyYWN0aXZlIHNjcmlwdCBzbyBhIHNjcmlwdCBub2RlIGlzIG5vdCBoZWxkIG9udG8gZm9yCiAgICAgICAgICAgICAgICAgICAgLy90byBsb25nLgogICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlU2NyaXB0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGFuZCB0aGUgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChkYXRhLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsYmFjayBmb3Igc2NyaXB0IGVycm9ycy4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0RXJyb3I6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZ2V0U2NyaXB0RGF0YShldnQpOwogICAgICAgICAgICAgICAgaWYgKCFoYXNQYXRoRmFsbGJhY2soZGF0YS5pZCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX0ByJykgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godmFsdWUuZGVwTWFwcywgZnVuY3Rpb24oZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcE1hcC5pZCA9PT0gZGF0YS5pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLnB1c2goa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3IgIicgKyBkYXRhLmlkICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudHMubGVuZ3RoID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIsIG5lZWRlZCBieTogJyArIHBhcmVudHMuam9pbignLCAnKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksIGV2dCwgW2RhdGEuaWRdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKCk7CiAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWluIGVudHJ5IHBvaW50LgogICAgICoKICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CiAgICAgKiBpcyByZXByZXNlbnRlZCBieSB0aGF0IHN0cmluZyBpcyBmZXRjaGVkIGZvciB0aGUgYXBwcm9wcmlhdGUgY29udGV4dC4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJyYXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CiAgICAgKiBvZiBkZXBlbmRlbmN5IHN0cmluZyBuYW1lcyB0byBmZXRjaC4gQW4gb3B0aW9uYWwgZnVuY3Rpb24gY2FsbGJhY2sgY2FuCiAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBNYWtlIGEgbG9jYWwgcmVxIHZhcmlhYmxlIHRvIGhlbHAgQ2FqYSBjb21wbGlhbmNlIChpdCBhc3N1bWVzIHRoaW5ncwogICAgICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBhIHNob3J0CiAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgogICAgICovCiAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIG9wdGlvbmFsKSB7CgogICAgICAgIC8vRmluZCB0aGUgcmlnaHQgY29udGV4dCwgdXNlIGRlZmF1bHQKICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAogICAgICAgICAgICBjb250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOwoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgogICAgICAgIGlmICghaXNBcnJheShkZXBzKSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgLy8gZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QKICAgICAgICAgICAgY29uZmlnID0gZGVwczsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAvLyBBZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7CiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CiAgICAgICAgICAgICAgICBlcnJiYWNrID0gb3B0aW9uYWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcuY29udGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMsIGNvbnRleHROYW1lKTsKICAgICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW2NvbnRleHROYW1lXSA9IHJlcS5zLm5ld0NvbnRleHQoY29udGV4dE5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbmZpZykgewogICAgICAgICAgICBjb250ZXh0LmNvbmZpZ3VyZShjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICB9OwoKICAgIC8qKgogICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvb3BlcmF0ZSB3aXRoIG90aGVyCiAgICAgKiBBTUQgbG9hZGVycyBvbiBnbG9iYWxseSBhZ3JlZWQgbmFtZXMuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjb25maWcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKICAgICAqIG9mIHRoZSBldmVudCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cwogICAgICogdGhhdCBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gc2V0VGltZW91dC4KICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgogICAgICovCiAgICByZXEubmV4dFRpY2sgPSB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoZm4pIHsKICAgICAgICBzZXRUaW1lb3V0KGZuLCA0KTsKICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsKCiAgICAvKioKICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogICAgICovCiAgICBpZiAoIXJlcXVpcmUpIHsKICAgICAgICByZXF1aXJlID0gcmVxOwogICAgfQoKICAgIHJlcS52ZXJzaW9uID0gdmVyc2lvbjsKCiAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXRocy4KICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87CiAgICByZXEuaXNCcm93c2VyID0gaXNCcm93c2VyOwogICAgcyA9IHJlcS5zID0gewogICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICBuZXdDb250ZXh0OiBuZXdDb250ZXh0CiAgICB9OwoKICAgIC8vQ3JlYXRlIGRlZmF1bHQgY29udGV4dC4KICAgIHJlcSh7fSk7CgogICAgLy9FeHBvcnRzIHNvbWUgY29udGV4dC1zZW5zaXRpdmUgbWV0aG9kcyBvbiBnbG9iYWwgcmVxdWlyZS4KICAgIGVhY2goWwogICAgICAgICd0b1VybCcsCiAgICAgICAgJ3VuZGVmJywKICAgICAgICAnZGVmaW5lZCcsCiAgICAgICAgJ3NwZWNpZmllZCcKICAgIF0sIGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJpbmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAogICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVpbGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKICAgICAgICAvL3dpdGggaXRzIGNvbmZpZyBnZXRzIHVzZWQuCiAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwogICAgICAgICAgICByZXR1cm4gY3R4LnJlcXVpcmVbcHJvcF0uYXBwbHkoY3R4LCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9KTsKCiAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICAgICAgLy9JZiBCQVNFIHRhZyBpcyBpbiBwbGF5LCB1c2luZyBhcHBlbmRDaGlsZCBpcyBhIHByb2JsZW0gZm9yIElFNi4KICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMgY2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgogICAgICAgIC8vaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CiAgICAgICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdOwogICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBbnkgZXJyb3JzIHRoYXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCiAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3RvbSBlcnJvciBoYW5kbGluZy4KICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciB0aGUgZXJyb3Igb2JqZWN0LgogICAgICovCiAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1c2VkIGluIGJyb3dzZXIgZW52cy4KICAgICAqLwogICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbiAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgbm9kZSA9IGNvbmZpZy54aHRtbCA/CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbDpzY3JpcHQnKSA6CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBub2RlLnR5cGUgPSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBub2RlLmNoYXJzZXQgPSAndXRmLTgnOwogICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwogICAgICAgIHJldHVybiBub2RlOwogICAgfTsKCiAgICAvKioKICAgICAqIERvZXMgdGhlIHJlcXVlc3QgdG8gbG9hZCBhIG1vZHVsZSBmb3IgdGhlIGJyb3dzZXIgY2FzZS4KICAgICAqIE1ha2UgdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwogICAgICogdG8gb3ZlcnJpZGUgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJlcXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB1cmwgdGhlIFVSTCB0byB0aGUgbW9kdWxlLgogICAgICovCiAgICByZXEubG9hZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgY29uZmlnID0gKGNvbnRleHQgJiYgY29udGV4dC5jb25maWcpIHx8IHt9LAogICAgICAgICAgICBub2RlOwogICAgICAgIGlmIChpc0Jyb3dzZXIpIHsKICAgICAgICAgICAgLy9JbiB0aGUgYnJvd3NlciBzbyB1c2UgYSBzY3JpcHQgdGFnCiAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CgogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcsIGNvbnRleHQuY29udGV4dE5hbWUpOwogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAvL1NldCB1cCBsb2FkIGxpc3RlbmVyLiBUZXN0IGF0dGFjaEV2ZW50IGZpcnN0IGJlY2F1c2UgSUU5IGhhcwogICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExpc3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKICAgICAgICAgICAgLy90aGF0IGRvIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKICAgICAgICAgICAgLy9hZGRFdmVudExpc3RlbmVyIHN1cHBvcnQsIHdoaWNoIGZpcmUgdGhlIG9ubG9hZCBldmVudCBmb3IgYQogICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4ZWN1dGlvbi4gU2VlOgogICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KICAgICAgICAgICAgLy9VTkZPUlRVTkFURUxZIE9wZXJhIGltcGxlbWVudHMgYXR0YWNoRXZlbnQgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgc2NyaXB0CiAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgogICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgogICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgbm9kZS5hdHRhY2hFdmVudCBpcyBhcnRpZmljaWFsbHkgYWRkZWQgYnkgY3VzdG9tIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9yZXF1aXJlanMvaXNzdWVzLzE4NwogICAgICAgICAgICAgICAgICAgIC8vaWYgd2UgY2FuIE5PVCBmaW5kIFtuYXRpdmUgY29kZV0gdGhlbiBpdCBtdXN0IE5PVCBuYXRpdmVseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgLy9pbiBJRTgsIG5vZGUuYXR0YWNoRXZlbnQgZG9lcyBub3QgaGF2ZSB0b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgLy9Ob3RlIHRoZSB0ZXN0IGZvciAiW25hdGl2ZSBjb2RlIiB3aXRoIG5vIGNsb3NpbmcgYnJhY2UsIHNlZToKICAgICAgICAgICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2lzc3Vlcy8yNzMKICAgICAgICAgICAgICAgICAgICAhKG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgbm9kZS5hdHRhY2hFdmVudC50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZScpIDwgMCkgJiYKICAgICAgICAgICAgICAgICAgICAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSUUgKGF0IGxlYXN0IDYtOCkgZG8gbm90IGZpcmUKICAgICAgICAgICAgICAgIC8vc2NyaXB0IG9ubG9hZCByaWdodCBhZnRlciBleGVjdXRpbmcgdGhlIHNjcmlwdCwgc28KICAgICAgICAgICAgICAgIC8vd2UgY2Fubm90IHRpZSB0aGUgYW5vbnltb3VzIGRlZmluZSBjYWxsIHRvIGEgbmFtZS4KICAgICAgICAgICAgICAgIC8vSG93ZXZlciwgSUUgcmVwb3J0cyB0aGUgc2NyaXB0IGFzIGJlaW5nIGluICdpbnRlcmFjdGl2ZScKICAgICAgICAgICAgICAgIC8vcmVhZHlTdGF0ZSBhdCB0aGUgdGltZSBvZiB0aGUgZGVmaW5lIGNhbGwuCiAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IHRydWU7CgogICAgICAgICAgICAgICAgbm9kZS5hdHRhY2hFdmVudCgnb25yZWFkeXN0YXRlY2hhbmdlJywgY29udGV4dC5vblNjcmlwdExvYWQpOwogICAgICAgICAgICAgICAgLy9JdCB3b3VsZCBiZSBncmVhdCB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciBoZXJlIHRvIGNhdGNoCiAgICAgICAgICAgICAgICAvLzQwNHMgaW4gSUU5Ky4gSG93ZXZlciwgb25yZWFkeXN0YXRlY2hhbmdlIHdpbGwgZmlyZSBiZWZvcmUKICAgICAgICAgICAgICAgIC8vdGhlIGVycm9yIGhhbmRsZXIsIHNvIHRoYXQgZG9lcyBub3QgaGVscC4gSWYgYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAgICAgLy9pcyB1c2VkLCB0aGVuIElFIHdpbGwgZmlyZSBlcnJvciBiZWZvcmUgbG9hZCwgYnV0IHdlIGNhbm5vdAogICAgICAgICAgICAgICAgLy91c2UgdGhhdCBwYXRod2F5IGdpdmVuIHRoZSBjb25uZWN0Lm1pY3Jvc29mdC5jb20gaXNzdWUKICAgICAgICAgICAgICAgIC8vbWVudGlvbmVkIGFib3ZlIGFib3V0IG5vdCBkb2luZyB0aGUgJ3NjcmlwdCBleGVjdXRlLAogICAgICAgICAgICAgICAgLy90aGVuIGZpcmUgdGhlIHNjcmlwdCBsb2FkIGV2ZW50IGxpc3RlbmVyIGJlZm9yZSBleGVjdXRlCiAgICAgICAgICAgICAgICAvL25leHQgc2NyaXB0JyB0aGF0IG90aGVyIGJyb3dzZXJzIGRvLgogICAgICAgICAgICAgICAgLy9CZXN0IGhvcGU6IElFMTAgZml4ZXMgdGhlIGlzc3VlcywKICAgICAgICAgICAgICAgIC8vYW5kIHRoZW4gZGVzdHJveXMgYWxsIGluc3RhbGxzIG9mIElFIDYtOS4KICAgICAgICAgICAgICAgIC8vbm9kZS5hdHRhY2hFdmVudCgnb25lcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvciwgZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5vZGUuc3JjID0gdXJsOwoKICAgICAgICAgICAgLy9DYWxsaW5nIG9uTm9kZUNyZWF0ZWQgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgb24gdGhlIG5vZGUgaGF2ZSBiZWVuCiAgICAgICAgICAgIC8vc2V0LCBidXQgYmVmb3JlIGl0IGlzIHBsYWNlZCBpbiB0aGUgRE9NLgogICAgICAgICAgICBpZiAoY29uZmlnLm9uTm9kZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5vbk5vZGVDcmVhdGVkKG5vZGUsIGNvbmZpZywgbW9kdWxlTmFtZSwgdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Gb3Igc29tZSBjYWNoZSBjYXNlcyBpbiBJRSA2LTgsIHRoZSBzY3JpcHQgZXhlY3V0ZXMgYmVmb3JlIHRoZSBlbmQKICAgICAgICAgICAgLy9vZiB0aGUgYXBwZW5kQ2hpbGQgZXhlY3V0aW9uLCBzbyB0byB0aWUgYW4gYW5vbnltb3VzIGRlZmluZQogICAgICAgICAgICAvL2NhbGwgdG8gdGhlIG1vZHVsZSBuYW1lICh3aGljaCBpcyBzdG9yZWQgb24gdGhlIG5vZGUpLCBob2xkIG9uCiAgICAgICAgICAgIC8vdG8gYSByZWZlcmVuY2UgdG8gdGhpcyBub2RlLCBidXQgY2xlYXIgYWZ0ZXIgdGhlIERPTSBpbnNlcnRpb24uCiAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1NjcmlwdCA9IG5vZGU7CiAgICAgICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUobm9kZSwgYmFzZUVsZW1lbnQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQgPSBudWxsOwoKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgfSBlbHNlIGlmIChpc1dlYldvcmtlcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy9JbiBhIHdlYiB3b3JrZXIsIHVzZSBpbXBvcnRTY3JpcHRzLiBUaGlzIGlzIG5vdCBhIHZlcnkKICAgICAgICAgICAgICAgIC8vZWZmaWNpZW50IHVzZSBvZiBpbXBvcnRTY3JpcHRzLCBpbXBvcnRTY3JpcHRzIHdpbGwgYmxvY2sgdW50aWwKICAgICAgICAgICAgICAgIC8vaXRzIHNjcmlwdCBpcyBkb3dubG9hZGVkIGFuZCBldmFsdWF0ZWQuIEhvd2V2ZXIsIGlmIHdlYiB3b3JrZXJzCiAgICAgICAgICAgICAgICAvL2FyZSBpbiBwbGF5LCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCBhIGJ1aWxkIGhhcyBiZWVuIGRvbmUgc28KICAgICAgICAgICAgICAgIC8vdGhhdCBvbmx5IG9uZSBzY3JpcHQgbmVlZHMgdG8gYmUgbG9hZGVkIGFueXdheS4gVGhpcyBtYXkgbmVlZAogICAgICAgICAgICAgICAgLy90byBiZSByZWV2YWx1YXRlZCBpZiBvdGhlciB1c2UgY2FzZXMgYmVjb21lIGNvbW1vbi4KCiAgICAgICAgICAgICAgICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZXZlbnQgbG9vcCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXZWJLaXQKICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSB3b3JrZXIgZ2V0cyBnYXJiYWdlLWNvbGxlY3RlZCBhZnRlciBjYWxsaW5nCiAgICAgICAgICAgICAgICAvLyBpbXBvcnRTY3JpcHRzKCk6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzMxNwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt9LCAwKTsKICAgICAgICAgICAgICAgIGltcG9ydFNjcmlwdHModXJsKTsKCiAgICAgICAgICAgICAgICAvL0FjY291bnQgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKG1ha2VFcnJvcignaW1wb3J0c2NyaXB0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydFNjcmlwdHMgZmFpbGVkIGZvciAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSArICcgYXQgJyArIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpIHsKICAgICAgICBpZiAoaW50ZXJhY3RpdmVTY3JpcHQgJiYgaW50ZXJhY3RpdmVTY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7CiAgICAgICAgfQoKICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludGVyYWN0aXZlU2NyaXB0ID0gc2NyaXB0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsKICAgIH0KCiAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIHNjcmlwdCBhdHRyaWJ1dGUsIHdoaWNoIGNvdWxkIGFsc28gYWRqdXN0IHRoZSBiYXNlVXJsLgogICAgaWYgKGlzQnJvd3NlciAmJiAhY2ZnLnNraXBEYXRhTWFpbikgewogICAgICAgIC8vRmlndXJlIG91dCBiYXNlVXJsLiBHZXQgaXQgZnJvbSB0aGUgc2NyaXB0IHRhZyB3aXRoIHJlcXVpcmUuanMgaW4gaXQuCiAgICAgICAgZWFjaFJldmVyc2Uoc2NyaXB0cygpLCBmdW5jdGlvbiAoc2NyaXB0KSB7CiAgICAgICAgICAgIC8vU2V0IHRoZSAnaGVhZCcgd2hlcmUgd2UgY2FuIGFwcGVuZCBjaGlsZHJlbiBieQogICAgICAgICAgICAvL3VzaW5nIHRoZSBzY3JpcHQncyBwYXJlbnQuCiAgICAgICAgICAgIGlmICghaGVhZCkgewogICAgICAgICAgICAgICAgaGVhZCA9IHNjcmlwdC5wYXJlbnROb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIGF0dHJpYnV0ZSB0byBzZXQgbWFpbiBzY3JpcHQgZm9yIHRoZSBwYWdlCiAgICAgICAgICAgIC8vdG8gbG9hZC4gSWYgaXQgaXMgdGhlcmUsIHRoZSBwYXRoIHRvIGRhdGEgbWFpbiBiZWNvbWVzIHRoZQogICAgICAgICAgICAvL2Jhc2VVcmwsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNldC4KICAgICAgICAgICAgZGF0YU1haW4gPSBzY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW1haW4nKTsKICAgICAgICAgICAgaWYgKGRhdGFNYWluKSB7CiAgICAgICAgICAgICAgICAvL1ByZXNlcnZlIGRhdGFNYWluIGluIGNhc2UgaXQgaXMgYSBwYXRoIChpLmUuIGNvbnRhaW5zICc/JykKICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKCiAgICAgICAgICAgICAgICAvL1NldCBmaW5hbCBiYXNlVXJsIGlmIHRoZXJlIGlzIG5vdCBhbHJlYWR5IGFuIGV4cGxpY2l0IG9uZSwKICAgICAgICAgICAgICAgIC8vYnV0IG9ubHkgZG8gc28gaWYgdGhlIGRhdGEtbWFpbiB2YWx1ZSBpcyBub3QgYSBsb2FkZXIgcGx1Z2luCiAgICAgICAgICAgICAgICAvL21vZHVsZSBJRC4KICAgICAgICAgICAgICAgIGlmICghY2ZnLmJhc2VVcmwgJiYgbWFpblNjcmlwdC5pbmRleE9mKCchJykgPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG9mZiB0aGUgZGlyZWN0b3J5IG9mIGRhdGEtbWFpbiBmb3IgdXNlIGFzIHRoZQogICAgICAgICAgICAgICAgICAgIC8vYmFzZVVybC4KICAgICAgICAgICAgICAgICAgICBzcmMgPSBtYWluU2NyaXB0LnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IHNyYy5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBzdWJQYXRoID0gc3JjLmxlbmd0aCA/IHNyYy5qb2luKCcvJykgICsgJy8nIDogJy4vJzsKCiAgICAgICAgICAgICAgICAgICAgY2ZnLmJhc2VVcmwgPSBzdWJQYXRoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU3RyaXAgb2ZmIGFueSB0cmFpbGluZyAuanMgc2luY2UgbWFpblNjcmlwdCBpcyBub3cKICAgICAgICAgICAgICAgIC8vbGlrZSBhIG1vZHVsZSBuYW1lLgogICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IG1haW5TY3JpcHQucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwoKICAgICAgICAgICAgICAgIC8vSWYgbWFpblNjcmlwdCBpcyBzdGlsbCBhIHBhdGgsIGZhbGwgYmFjayB0byBkYXRhTWFpbgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1haW5TY3JpcHQpKSB7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vUHV0IHRoZSBkYXRhLW1haW4gc2NyaXB0IGluIHRoZSBmaWxlcyB0byBsb2FkLgogICAgICAgICAgICAgICAgY2ZnLmRlcHMgPSBjZmcuZGVwcyA/IGNmZy5kZXBzLmNvbmNhdChtYWluU2NyaXB0KSA6IFttYWluU2NyaXB0XTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBkZWZpbml0aW9ucyBvZiBtb2R1bGVzLiBEaWZmZXJzIGZyb20KICAgICAqIHJlcXVpcmUoKSBpbiB0aGF0IGEgc3RyaW5nIGZvciB0aGUgbW9kdWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgYXJndW1lbnQsCiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYWZ0ZXIgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQgc2hvdWxkCiAgICAgKiByZXR1cm4gYSB2YWx1ZSB0byBkZWZpbmUgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBhcmd1bWVudCdzCiAgICAgKiBuYW1lLgogICAgICovCiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHsKICAgICAgICB2YXIgbm9kZSwgY29udGV4dDsKCiAgICAgICAgLy9BbGxvdyBmb3IgYW5vbnltb3VzIG1vZHVsZXMKICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgYXBwcm9wcmlhdGVseQogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBuYW1lOwogICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llcwogICAgICAgIGlmICghaXNBcnJheShkZXBzKSkgewogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy9JZiBubyBuYW1lLCBhbmQgY2FsbGJhY2sgaXMgYSBmdW5jdGlvbiwgdGhlbiBmaWd1cmUgb3V0IGlmIGl0IGEKICAgICAgICAvL0NvbW1vbkpTIHRoaW5nIHdpdGggZGVwZW5kZW5jaWVzLgogICAgICAgIGlmICghZGVwcyAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIC8vUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGNhbGxiYWNrIHN0cmluZywKICAgICAgICAgICAgLy9sb29rIGZvciByZXF1aXJlIGNhbGxzLCBhbmQgcHVsbCB0aGVtIGludG8gdGhlIGRlcGVuZGVuY2llcywKICAgICAgICAgICAgLy9idXQgb25seSBpZiB0aGVyZSBhcmUgZnVuY3Rpb24gYXJncy4KICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNvbW1lbnRSZWdFeHAsIGNvbW1lbnRSZXBsYWNlKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNqc1JlcXVpcmVSZWdFeHAsIGZ1bmN0aW9uIChtYXRjaCwgZGVwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vTWF5IGJlIGEgQ29tbW9uSlMgdGhpbmcgZXZlbiB3aXRob3V0IHJlcXVpcmUgY2FsbHMsIGJ1dCBzdGlsbAogICAgICAgICAgICAgICAgLy9jb3VsZCB1c2UgZXhwb3J0cywgYW5kIG1vZHVsZS4gQXZvaWQgZG9pbmcgZXhwb3J0cyBhbmQgbW9kdWxlCiAgICAgICAgICAgICAgICAvL3dvcmsgdGhvdWdoIGlmIGl0IGp1c3QgbmVlZHMgcmVxdWlyZS4KICAgICAgICAgICAgICAgIC8vUkVRVUlSRVMgdGhlIGZ1bmN0aW9uIHRvIGV4cGVjdCB0aGUgQ29tbW9uSlMgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgLy9vcmRlciBsaXN0ZWQgYmVsb3cuCiAgICAgICAgICAgICAgICBkZXBzID0gKGNhbGxiYWNrLmxlbmd0aCA9PT0gMSA/IFsncmVxdWlyZSddIDogWydyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJ10pLmNvbmNhdChkZXBzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9JZiBpbiBJRSA2LTggYW5kIGhpdCBhbiBhbm9ueW1vdXMgZGVmaW5lKCkgY2FsbCwgZG8gdGhlIGludGVyYWN0aXZlCiAgICAgICAgLy93b3JrLgogICAgICAgIGlmICh1c2VJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICBub2RlID0gY3VycmVudGx5QWRkaW5nU2NyaXB0IHx8IGdldEludGVyYWN0aXZlU2NyaXB0KCk7CiAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW25vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0JyldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL0Fsd2F5cyBzYXZlIG9mZiBldmFsdWF0aW5nIHRoZSBkZWYgY2FsbCB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBoYW5kbGVyLgogICAgICAgIC8vVGhpcyBhbGxvd3MgbXVsdGlwbGUgbW9kdWxlcyB0byBiZSBpbiBhIGZpbGUgd2l0aG91dCBwcmVtYXR1cmVseQogICAgICAgIC8vdHJhY2luZyBkZXBlbmRlbmNpZXMsIGFuZCBhbGxvd3MgZm9yIGFub255bW91cyBtb2R1bGUgc3VwcG9ydCwKICAgICAgICAvL3doZXJlIHRoZSBtb2R1bGUgbmFtZSBpcyBub3Qga25vd24gdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgZXZlbnQKICAgICAgICAvL29jY3Vycy4gSWYgbm8gY29udGV4dCwgdXNlIHRoZSBnbG9iYWwgcXVldWUsIGFuZCBnZXQgaXQgcHJvY2Vzc2VkCiAgICAgICAgLy9pbiB0aGUgb25zY3JpcHQgbG9hZCBjYWxsYmFjay4KICAgICAgICBpZiAoY29udGV4dCkgewogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXBbbmFtZV0gPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgfQogICAgfTsKCiAgICBkZWZpbmUuYW1kID0gewogICAgICAgIGpRdWVyeTogdHJ1ZQogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGVzIHRoZSB0ZXh0LiBOb3JtYWxseSBqdXN0IHVzZXMgZXZhbCwgYnV0IGNhbiBiZSBtb2RpZmllZAogICAgICogdG8gdXNlIGEgYmV0dGVyLCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjYWxsLiBPbmx5IHVzZWQgZm9yIHRyYW5zcGlsaW5nCiAgICAgKiBsb2FkZXIgcGx1Z2lucywgbm90IGZvciBwbGFpbiBKUyBtb2R1bGVzLgogICAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgdGhlIHRleHQgdG8gZXhlY3V0ZS9ldmFsdWF0ZS4KICAgICAqLwogICAgcmVxLmV4ZWMgPSBmdW5jdGlvbiAodGV4dCkgewogICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICByZXR1cm4gZXZhbCh0ZXh0KTsKICAgIH07CgogICAgLy9TZXQgdXAgd2l0aCBjb25maWcgaW5mby4KICAgIHJlcShjZmcpOwp9KHRoaXMsICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBzZXRUaW1lb3V0KSkpOwoKLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgohZnVuY3Rpb24oKXt2YXIgYT17fSxiPXt9LGM9e307IWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGE7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifWZ1bmN0aW9uIGQoKXt0aGlzLl9kZWxheT0wLHRoaXMuX2VuZERlbGF5PTAsdGhpcy5fZmlsbD0ibm9uZSIsdGhpcy5faXRlcmF0aW9uU3RhcnQ9MCx0aGlzLl9pdGVyYXRpb25zPTEsdGhpcy5fZHVyYXRpb249MCx0aGlzLl9wbGF5YmFja1JhdGU9MSx0aGlzLl9kaXJlY3Rpb249Im5vcm1hbCIsdGhpcy5fZWFzaW5nPSJsaW5lYXIiLHRoaXMuX2Vhc2luZ0Z1bmN0aW9uPXh9ZnVuY3Rpb24gZSgpe3JldHVybiBhLmlzRGVwcmVjYXRlZCgiSW52YWxpZCB0aW1pbmcgaW5wdXRzIiwiMjAxNi0wMy0wMiIsIlR5cGVFcnJvciBleGNlcHRpb25zIHdpbGwgYmUgdGhyb3duIGluc3RlYWQuIiwhMCl9ZnVuY3Rpb24gZihiLGMsZSl7dmFyIGY9bmV3IGQ7cmV0dXJuIGMmJihmLmZpbGw9ImJvdGgiLGYuZHVyYXRpb249ImF1dG8iKSwibnVtYmVyIiE9dHlwZW9mIGJ8fGlzTmFOKGIpP3ZvaWQgMCE9PWImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoImF1dG8iIT1iW2NdKXtpZigoIm51bWJlciI9PXR5cGVvZiBmW2NdfHwiZHVyYXRpb24iPT1jKSYmKCJudW1iZXIiIT10eXBlb2YgYltjXXx8aXNOYU4oYltjXSkpKXJldHVybjtpZigiZmlsbCI9PWMmJi0xPT12LmluZGV4T2YoYltjXSkpcmV0dXJuO2lmKCJkaXJlY3Rpb24iPT1jJiYtMT09dy5pbmRleE9mKGJbY10pKXJldHVybjtpZigicGxheWJhY2tSYXRlIj09YyYmMSE9PWJbY10mJmEuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO2ZbY109YltjXX19KTpmLmR1cmF0aW9uPWIsZn1mdW5jdGlvbiBnKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYSYmKGE9aXNOYU4oYSk/e2R1cmF0aW9uOjB9OntkdXJhdGlvbjphfSksYX1mdW5jdGlvbiBoKGIsYyl7cmV0dXJuIGI9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYiksZihiLGMpfWZ1bmN0aW9uIGkoYSxiLGMsZCl7cmV0dXJuIGE8MHx8YT4xfHxjPDB8fGM+MT94OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYSxiLGMpe3JldHVybiAzKmEqKDEtYykqKDEtYykqYyszKmIqKDEtYykqYypjK2MqYypjfWlmKGU8PTApe3ZhciBnPTA7cmV0dXJuIGE+MD9nPWIvYTohYiYmYz4wJiYoZz1kL2MpLGcqZX1pZihlPj0xKXt2YXIgaD0wO3JldHVybiBjPDE/aD0oZC0xKS8oYy0xKToxPT1jJiZhPDEmJihoPShiLTEpLyhhLTEpKSwxK2gqKGUtMSl9Zm9yKHZhciBpPTAsaj0xO2k8ajspe3ZhciBrPShpK2opLzIsbD1mKGEsYyxrKTtpZihNYXRoLmFicyhlLWwpPDFlLTUpcmV0dXJuIGYoYixkLGspO2w8ZT9pPWs6aj1rfXJldHVybiBmKGIsZCxrKX19ZnVuY3Rpb24gaihhLGIpe3JldHVybiBmdW5jdGlvbihjKXtpZihjPj0xKXJldHVybiAxO3ZhciBkPTEvYTtyZXR1cm4oYys9YipkKS1jJWR9fWZ1bmN0aW9uIGsoYSl7Q3x8KEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUpLEMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249IiIsQy5hbmltYXRpb25UaW1pbmdGdW5jdGlvbj1hO3ZhciBiPUMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb247aWYoIiI9PWImJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIGJ9ZnVuY3Rpb24gbChhKXtpZigibGluZWFyIj09YSlyZXR1cm4geDt2YXIgYj1FLmV4ZWMoYSk7aWYoYilyZXR1cm4gaS5hcHBseSh0aGlzLGIuc2xpY2UoMSkubWFwKE51bWJlcikpO3ZhciBjPUYuZXhlYyhhKTtpZihjKXJldHVybiBqKE51bWJlcihjWzFdKSxBKTt2YXIgZD1HLmV4ZWMoYSk7cmV0dXJuIGQ/aihOdW1iZXIoZFsxXSkse3N0YXJ0OnksbWlkZGxlOnosZW5kOkF9W2RbMl1dKTpCW2FdfHx4fWZ1bmN0aW9uIG0oYSl7cmV0dXJuIE1hdGguYWJzKG4oYSkvYS5wbGF5YmFja1JhdGUpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIDA9PT1hLmR1cmF0aW9ufHwwPT09YS5pdGVyYXRpb25zPzA6YS5kdXJhdGlvbiphLml0ZXJhdGlvbnN9ZnVuY3Rpb24gbyhhLGIsYyl7aWYobnVsbD09YilyZXR1cm4gSDt2YXIgZD1jLmRlbGF5K2ErYy5lbmREZWxheTtyZXR1cm4gYjxNYXRoLm1pbihjLmRlbGF5LGQpP0k6Yj49TWF0aC5taW4oYy5kZWxheSthLGQpP0o6S31mdW5jdGlvbiBwKGEsYixjLGQsZSl7c3dpdGNoKGQpe2Nhc2UgSTpyZXR1cm4iYmFja3dhcmRzIj09Ynx8ImJvdGgiPT1iPzA6bnVsbDtjYXNlIEs6cmV0dXJuIGMtZTtjYXNlIEo6cmV0dXJuImZvcndhcmRzIj09Ynx8ImJvdGgiPT1iP2E6bnVsbDtjYXNlIEg6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXt2YXIgZj1lO3JldHVybiAwPT09YT9iIT09SSYmKGYrPWMpOmYrPWQvYSxmfWZ1bmN0aW9uIHIoYSxiLGMsZCxlLGYpe3ZhciBnPWE9PT0xLzA/YiUxOmElMTtyZXR1cm4gMCE9PWd8fGMhPT1KfHwwPT09ZHx8MD09PWUmJjAhPT1mfHwoZz0xKSxnfWZ1bmN0aW9uIHMoYSxiLGMsZCl7cmV0dXJuIGE9PT1KJiZiPT09MS8wPzEvMDoxPT09Yz9NYXRoLmZsb29yKGQpLTE6TWF0aC5mbG9vcihkKX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1hO2lmKCJub3JtYWwiIT09YSYmInJldmVyc2UiIT09YSl7dmFyIGU9YjsiYWx0ZXJuYXRlLXJldmVyc2UiPT09YSYmKGUrPTEpLGQ9Im5vcm1hbCIsZSE9PTEvMCYmZSUyIT0wJiYoZD0icmV2ZXJzZSIpfXJldHVybiJub3JtYWwiPT09ZD9jOjEtY31mdW5jdGlvbiB1KGEsYixjKXt2YXIgZD1vKGEsYixjKSxlPXAoYSxjLmZpbGwsYixkLGMuZGVsYXkpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBmPXEoYy5kdXJhdGlvbixkLGMuaXRlcmF0aW9ucyxlLGMuaXRlcmF0aW9uU3RhcnQpLGc9cihmLGMuaXRlcmF0aW9uU3RhcnQsZCxjLml0ZXJhdGlvbnMsZSxjLmR1cmF0aW9uKSxoPXMoZCxjLml0ZXJhdGlvbnMsZyxmKSxpPXQoYy5kaXJlY3Rpb24saCxnKTtyZXR1cm4gYy5fZWFzaW5nRnVuY3Rpb24oaSl9dmFyIHY9ImJhY2t3YXJkc3xmb3J3YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8Iiksdz0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8IikseD1mdW5jdGlvbihhKXtyZXR1cm4gYX07ZC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oYixjKXt0aGlzWyJfIitiXT1jLHRoaXMuX2VmZmVjdCYmKHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXRbYl09Yyx0aGlzLl9lZmZlY3QuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGEpe3RoaXMuX3NldE1lbWJlcigiZGVsYXkiLGEpfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShhKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixhKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChhKXt0aGlzLl9zZXRNZW1iZXIoImZpbGwiLGEpfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoYSl7aWYoKGlzTmFOKGEpfHxhPDApJiZlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGEpfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihhKXtpZigiYXV0byIhPWEmJihpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGEpfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oYSl7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rpb24iLGEpfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhhKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj1sKGsoYSkpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixhKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRpb25zKGEpe2lmKChpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsYSl9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvbnN9fTt2YXIgeT0xLHo9LjUsQT0wLEI9e2Vhc2U6aSguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjppKC40MiwwLDEsMSksImVhc2Utb3V0IjppKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjppKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6aigxLHkpLCJzdGVwLW1pZGRsZSI6aigxLHopLCJzdGVwLWVuZCI6aigxLEEpfSxDPW51bGwsRD0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsRT1uZXcgUmVnRXhwKCJjdWJpYy1iZXppZXJcXCgiK0QrIiwiK0QrIiwiK0QrIiwiK0QrIlxcKSIpLEY9L3N0ZXBzXChccyooXGQrKVxzKlwpLyxHPS9zdGVwc1woXHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLEg9MCxJPTEsSj0yLEs9MzthLmNsb25lVGltaW5nSW5wdXQ9YyxhLm1ha2VUaW1pbmc9ZixhLm51bWVyaWNUaW1pbmdUb09iamVjdD1nLGEubm9ybWFsaXplVGltaW5nSW5wdXQ9aCxhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uPW0sYS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcz11LGEuY2FsY3VsYXRlUGhhc2U9byxhLm5vcm1hbGl6ZUVhc2luZz1rLGEucGFyc2VFYXNpbmdGdW5jdGlvbj1sfShhKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtyZXR1cm4gYSBpbiBrP2tbYV1bYl18fGI6Yn1mdW5jdGlvbiBkKGEpe3JldHVybiJkaXNwbGF5Ij09PWF8fDA9PT1hLmxhc3RJbmRleE9mKCJhbmltYXRpb24iLDApfHwwPT09YS5sYXN0SW5kZXhPZigidHJhbnNpdGlvbiIsMCl9ZnVuY3Rpb24gZShhLGIsZSl7aWYoIWQoYSkpe3ZhciBmPWhbYV07aWYoZil7aS5zdHlsZVthXT1iO2Zvcih2YXIgZyBpbiBmKXt2YXIgaj1mW2ddLGs9aS5zdHlsZVtqXTtlW2pdPWMoaixrKX19ZWxzZSBlW2FdPWMoYSxiKX19ZnVuY3Rpb24gZihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4gYSlpZighKGMgaW5bImVhc2luZyIsIm9mZnNldCIsImNvbXBvc2l0ZSJdKSl7dmFyIGQ9YVtjXTtBcnJheS5pc0FycmF5KGQpfHwoZD1bZF0pO2Zvcih2YXIgZSxmPWQubGVuZ3RoLGc9MDtnPGY7ZysrKWU9e30sZS5vZmZzZXQ9Im9mZnNldCJpbiBhP2Eub2Zmc2V0OjE9PWY/MTpnLyhmLTEpLCJlYXNpbmciaW4gYSYmKGUuZWFzaW5nPWEuZWFzaW5nKSwiY29tcG9zaXRlImluIGEmJihlLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZSksZVtjXT1kW2ddLGIucHVzaChlKX1yZXR1cm4gYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEub2Zmc2V0LWIub2Zmc2V0fSksYn1mdW5jdGlvbiBnKGIpe2Z1bmN0aW9uIGMoKXt2YXIgYT1kLmxlbmd0aDtudWxsPT1kW2EtMV0ub2Zmc2V0JiYoZFthLTFdLm9mZnNldD0xKSxhPjEmJm51bGw9PWRbMF0ub2Zmc2V0JiYoZFswXS5vZmZzZXQ9MCk7Zm9yKHZhciBiPTAsYz1kWzBdLm9mZnNldCxlPTE7ZTxhO2UrKyl7dmFyIGY9ZFtlXS5vZmZzZXQ7aWYobnVsbCE9Zil7Zm9yKHZhciBnPTE7ZzxlLWI7ZysrKWRbYitnXS5vZmZzZXQ9YysoZi1jKSpnLyhlLWIpO2I9ZSxjPWZ9fX1pZihudWxsPT1iKXJldHVybltdO3dpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJmJbU3ltYm9sLml0ZXJhdG9yXSYmKGI9QXJyYXkuZnJvbShiKSksQXJyYXkuaXNBcnJheShiKXx8KGI9ZihiKSk7Zm9yKHZhciBkPWIubWFwKGZ1bmN0aW9uKGIpe3ZhciBjPXt9O2Zvcih2YXIgZCBpbiBiKXt2YXIgZj1iW2RdO2lmKCJvZmZzZXQiPT1kKXtpZihudWxsIT1mKXtpZihmPU51bWJlcihmKSwhaXNGaW5pdGUoZikpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIG51bWJlcnMuIik7aWYoZjwwfHxmPjEpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS4iKX19ZWxzZSBpZigiY29tcG9zaXRlIj09ZCl7aWYoImFkZCI9PWZ8fCJhY2N1bXVsYXRlIj09Zil0aHJvd3t0eXBlOkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUixuYW1lOiJOb3RTdXBwb3J0ZWRFcnJvciIsbWVzc2FnZToiYWRkIGNvbXBvc2l0aW5nIGlzIG5vdCBzdXBwb3J0ZWQifTtpZigicmVwbGFjZSIhPWYpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjb21wb3NpdGUgbW9kZSAiK2YrIi4iKX1lbHNlIGY9ImVhc2luZyI9PWQ/YS5ub3JtYWxpemVFYXNpbmcoZik6IiIrZjtlKGQsZixjKX1yZXR1cm4gdm9pZCAwPT1jLm9mZnNldCYmKGMub2Zmc2V0PW51bGwpLHZvaWQgMD09Yy5lYXNpbmcmJihjLmVhc2luZz0ibGluZWFyIiksY30pLGc9ITAsaD0tMS8wLGk9MDtpPGQubGVuZ3RoO2krKyl7dmFyIGo9ZFtpXS5vZmZzZXQ7aWYobnVsbCE9ail7aWYoajxoKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7aD1qfWVsc2UgZz0hMX1yZXR1cm4gZD1kLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXQ+PTAmJmEub2Zmc2V0PD0xfSksZ3x8YygpLGR9dmFyIGg9e2JhY2tncm91bmQ6WyJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRPcmlnaW4iLCJiYWNrZ3JvdW5kQ2xpcCIsImJhY2tncm91bmRDb2xvciJdLGJvcmRlcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyVG9wU3R5bGUiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRXaWR0aCJdLGJvcmRlckJvdHRvbTpbImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21Db2xvciJdLGJvcmRlckNvbG9yOlsiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiXSxib3JkZXJMZWZ0OlsiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyUmFkaXVzOlsiYm9yZGVyVG9wTGVmdFJhZGl1cyIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzIl0sYm9yZGVyUmlnaHQ6WyJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0Q29sb3IiXSxib3JkZXJUb3A6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wQ29sb3IiXSxib3JkZXJXaWR0aDpbImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyTGVmdFdpZHRoIl0sZmxleDpbImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhCYXNpcyJdLGZvbnQ6WyJmb250RmFtaWx5IiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Il0sbWFyZ2luOlsibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0Il0sb3V0bGluZTpbIm91dGxpbmVDb2xvciIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVXaWR0aCJdLHBhZGRpbmc6WyJwYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0Il19LGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksaj17dGhpbjoiMXB4IixtZWRpdW06IjNweCIsdGhpY2s6IjVweCJ9LGs9e2JvcmRlckJvdHRvbVdpZHRoOmosYm9yZGVyTGVmdFdpZHRoOmosYm9yZGVyUmlnaHRXaWR0aDpqLGJvcmRlclRvcFdpZHRoOmosZm9udFNpemU6eyJ4eC1zbWFsbCI6IjYwJSIsIngtc21hbGwiOiI3NSUiLHNtYWxsOiI4OSUiLG1lZGl1bToiMTAwJSIsbGFyZ2U6IjEyMCUiLCJ4LWxhcmdlIjoiMTUwJSIsInh4LWxhcmdlIjoiMjAwJSJ9LGZvbnRXZWlnaHQ6e25vcm1hbDoiNDAwIixib2xkOiI3MDAifSxvdXRsaW5lV2lkdGg6aix0ZXh0U2hhZG93Ontub25lOiIwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9LGJveFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggMHB4IHRyYW5zcGFyZW50In19O2EuY29udmVydFRvQXJyYXlGb3JtPWYsYS5ub3JtYWxpemVLZXlmcmFtZXM9Z30oYSksZnVuY3Rpb24oYSl7dmFyIGI9e307YS5pc0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiLGc9bmV3IERhdGUsaD1uZXcgRGF0ZShjKTtyZXR1cm4gaC5zZXRNb250aChoLmdldE1vbnRoKCkrMyksIShnPGgmJihhIGluIGJ8fGNvbnNvbGUud2FybigiV2ViIEFuaW1hdGlvbnM6ICIrYSsiICIrZisiIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIG9uICIraC50b0RhdGVTdHJpbmcoKSsiLiAiK2QpLGJbYV09ITAsMSkpfSxhLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiO2lmKGEuaXNEZXByZWNhdGVkKGIsYyxkLGUpKXRocm93IG5ldyBFcnJvcihiKyIgIitmKyIgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIitkKX19KGEpLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFuaW1hdGUpe3ZhciBjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKFtdLDApLGQ9ITA7aWYoYyYmKGQ9ITEsInBsYXl8Y3VycmVudFRpbWV8cGF1c2V8cmV2ZXJzZXxwbGF5YmFja1JhdGV8Y2FuY2VsfGZpbmlzaHxzdGFydFRpbWV8cGxheVN0YXRlIi5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dm9pZCAwPT09Y1thXSYmKGQ9ITApfSkpLCFkKXJldHVybn0hZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKylmb3IodmFyIGQgaW4gYVtjXSlpZigib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kKXt2YXIgZT17b2Zmc2V0OmFbY10ub2Zmc2V0LGVhc2luZzphW2NdLmVhc2luZyx2YWx1ZTphW2NdW2RdfTtiW2RdPWJbZF18fFtdLGJbZF0ucHVzaChlKX1mb3IodmFyIGYgaW4gYil7dmFyIGc9YltmXTtpZigwIT1nWzBdLm9mZnNldHx8MSE9Z1tnLmxlbmd0aC0xXS5vZmZzZXQpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6IlBhcnRpYWwga2V5ZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIn19cmV0dXJuIGJ9ZnVuY3Rpb24gZShjKXt2YXIgZD1bXTtmb3IodmFyIGUgaW4gYylmb3IodmFyIGY9Y1tlXSxnPTA7ZzxmLmxlbmd0aC0xO2crKyl7dmFyIGg9ZyxpPWcrMSxqPWZbaF0ub2Zmc2V0LGs9ZltpXS5vZmZzZXQsbD1qLG09azswPT1nJiYobD0tMS8wLDA9PWsmJihpPWgpKSxnPT1mLmxlbmd0aC0yJiYobT0xLzAsMT09aiYmKGg9aSkpLGQucHVzaCh7YXBwbHlGcm9tOmwsYXBwbHlUbzptLHN0YXJ0T2Zmc2V0OmZbaF0ub2Zmc2V0LGVuZE9mZnNldDpmW2ldLm9mZnNldCxlYXNpbmdGdW5jdGlvbjphLnBhcnNlRWFzaW5nRnVuY3Rpb24oZltoXS5lYXNpbmcpLHByb3BlcnR5OmUsaW50ZXJwb2xhdGlvbjpiLnByb3BlcnR5SW50ZXJwb2xhdGlvbihlLGZbaF0udmFsdWUsZltpXS52YWx1ZSl9KX1yZXR1cm4gZC5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3RhcnRPZmZzZXQtYi5zdGFydE9mZnNldH0pLGR9Yi5jb252ZXJ0RWZmZWN0SW5wdXQ9ZnVuY3Rpb24oYyl7dmFyIGY9YS5ub3JtYWxpemVLZXlmcmFtZXMoYyksZz1kKGYpLGg9ZShnKTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZihudWxsIT1jKWguZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBjPj1hLmFwcGx5RnJvbSYmYzxhLmFwcGx5VG99KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBlPWMtZC5zdGFydE9mZnNldCxmPWQuZW5kT2Zmc2V0LWQuc3RhcnRPZmZzZXQsZz0wPT1mPzA6ZC5lYXNpbmdGdW5jdGlvbihlL2YpO2IuYXBwbHkoYSxkLnByb3BlcnR5LGQuaW50ZXJwb2xhdGlvbihnKSl9KTtlbHNlIGZvcih2YXIgZCBpbiBnKSJvZmZzZXQiIT1kJiYiZWFzaW5nIiE9ZCYmImNvbXBvc2l0ZSIhPWQmJmIuY2xlYXIoYSxkKX19fShhLGIpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBlKGEsYixjKXtoW2NdPWhbY118fFtdLGhbY10ucHVzaChbYSxiXSl9ZnVuY3Rpb24gZihhLGIsYyl7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe2UoYSxiLGQoY1tmXSkpfX1mdW5jdGlvbiBnKGMsZSxmKXt2YXIgZz1jOy8tLy50ZXN0KGMpJiYhYS5pc0RlcHJlY2F0ZWQoIkh5cGhlbmF0ZWQgcHJvcGVydHkgbmFtZXMiLCIyMDE2LTAzLTIyIiwiVXNlIGNhbWVsQ2FzZSBpbnN0ZWFkLiIsITApJiYoZz1kKGMpKSwiaW5pdGlhbCIhPWUmJiJpbml0aWFsIiE9Znx8KCJpbml0aWFsIj09ZSYmKGU9aVtnXSksImluaXRpYWwiPT1mJiYoZj1pW2ddKSk7Zm9yKHZhciBqPWU9PWY/W106aFtnXSxrPTA7aiYmazxqLmxlbmd0aDtrKyspe3ZhciBsPWpba11bMF0oZSksbT1qW2tdWzBdKGYpO2lmKHZvaWQgMCE9PWwmJnZvaWQgMCE9PW0pe3ZhciBuPWpba11bMV0obCxtKTtpZihuKXt2YXIgbz1iLkludGVycG9sYXRpb24uYXBwbHkobnVsbCxuKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWE/ZToxPT1hP2Y6byhhKX19fX1yZXR1cm4gYi5JbnRlcnBvbGF0aW9uKCExLCEwLGZ1bmN0aW9uKGEpe3JldHVybiBhP2Y6ZX0pfXZhciBoPXt9O2IuYWRkUHJvcGVydGllc0hhbmRsZXI9Zjt2YXIgaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRvIixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNldDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJbmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2IucHJvcGVydHlJbnRlcnBvbGF0aW9uPWd9KGEsYiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dmFyIGM9YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihiKSxkPWZ1bmN0aW9uKGQpe3JldHVybiBhLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGMsZCxiKX07cmV0dXJuIGQuX3RvdGFsRHVyYXRpb249Yi5kZWxheStjK2IuZW5kRGVsYXksZH1iLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGMsZSxmLGcpe3ZhciBoLGk9ZChhLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGYpKSxqPWIuY29udmVydEVmZmVjdElucHV0KGUpLGs9ZnVuY3Rpb24oKXtqKGMsaCl9O3JldHVybiBrLl91cGRhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT0oaD1pKGEpKX0say5fY2xlYXI9ZnVuY3Rpb24oKXtqKGMsbnVsbCl9LGsuX2hhc1NhbWVUYXJnZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGM9PT1hfSxrLl90YXJnZXQ9YyxrLl90b3RhbER1cmF0aW9uPWkuX3RvdGFsRHVyYXRpb24say5faWQ9ZyxrfX0oYSxiKSxmdW5jdGlvbihhLGIpe2EuYXBwbHk9ZnVuY3Rpb24oYixjLGQpe2Iuc3R5bGVbYS5wcm9wZXJ0eU5hbWUoYyldPWR9LGEuY2xlYXI9ZnVuY3Rpb24oYixjKXtiLnN0eWxlW2EucHJvcGVydHlOYW1lKGMpXT0iIn19KGIpLGZ1bmN0aW9uKGEpe3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGEudGltZWxpbmUuX3BsYXkoYS5LZXlmcmFtZUVmZmVjdCh0aGlzLGIsYyxkKSl9fShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiLGQpe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBiKXJldHVybiBhKigxLWQpK2IqZDtpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBiKXJldHVybiBkPC41P2E6YjtpZihhLmxlbmd0aD09Yi5sZW5ndGgpe2Zvcih2YXIgZT1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZS5wdXNoKGMoYVtmXSxiW2ZdLGQpKTtyZXR1cm4gZX10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrYn1hLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChjKGEsYixlKSl9fX0oYiksZnVuY3Rpb24oYSxiLGMpe2Euc2VxdWVuY2VOdW1iZXI9MDt2YXIgZD1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtiLkFuaW1hdGlvbj1mdW5jdGlvbihiKXt0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9YS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5fZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yix0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT90aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgtMSk6dGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUodGhpcy5jdXJyZW50VGltZSksdGhpcy5faW5UaW1lbGluZXx8IXRoaXMuX2luRWZmZWN0JiZ0aGlzLl9maW5pc2hlZEZsYWd8fCh0aGlzLl9pblRpbWVsaW5lPSEwLGIudGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSl9LF90aWNrQ3VycmVudFRpbWU6ZnVuY3Rpb24oYSxiKXthIT10aGlzLl9jdXJyZW50VGltZSYmKHRoaXMuX2N1cnJlbnRUaW1lPWEsdGhpcy5faXNGaW5pc2hlZCYmIWImJih0aGlzLl9jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90b3RhbER1cmF0aW9uOjApLHRoaXMuX2Vuc3VyZUFsaXZlKCkpfSxnZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5faWRsZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nP251bGw6dGhpcy5fY3VycmVudFRpbWV9LHNldCBjdXJyZW50VGltZShhKXthPSthLGlzTmFOKGEpfHwoYi5yZXN0YXJ0KCksdGhpcy5fcGF1c2VkfHxudWxsPT10aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9dGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtYS90aGlzLl9wbGF5YmFja1JhdGUpLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9jdXJyZW50VGltZSE9YSYmKHRoaXMuX2lkbGUmJih0aGlzLl9pZGxlPSExLHRoaXMuX3BhdXNlZD0hMCksdGhpcy5fdGlja0N1cnJlbnRUaW1lKGEsITApLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lfSxzZXQgc3RhcnRUaW1lKGEpe2E9K2EsaXNOYU4oYSl8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZXx8KHRoaXMuX3N0YXJ0VGltZT1hLHRoaXMuX3RpY2tDdXJyZW50VGltZSgodGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXtpZihhIT10aGlzLl9wbGF5YmFja1JhdGUpe3ZhciBjPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fcGxheWJhY2tSYXRlPWEsdGhpcy5fc3RhcnRUaW1lPW51bGwsInBhdXNlZCIhPXRoaXMucGxheVN0YXRlJiYiaWRsZSIhPXRoaXMucGxheVN0YXRlJiYodGhpcy5fZmluaXNoZWRGbGFnPSExLHRoaXMuX2lkbGU9ITEsdGhpcy5fZW5zdXJlQWxpdmUoKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSksbnVsbCE9YyYmKHRoaXMuY3VycmVudFRpbWU9Yyl9fSxnZXQgX2lzRmluaXNoZWQoKXtyZXR1cm4hdGhpcy5faWRsZSYmKHRoaXMuX3BsYXliYWNrUmF0ZT4wJiZ0aGlzLl9jdXJyZW50VGltZT49dGhpcy5fdG90YWxEdXJhdGlvbnx8dGhpcy5fcGxheWJhY2tSYXRlPDAmJnRoaXMuX2N1cnJlbnRUaW1lPD0wKX0sZ2V0IF90b3RhbER1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdC5fdG90YWxEdXJhdGlvbn0sZ2V0IHBsYXlTdGF0ZSgpe3JldHVybiB0aGlzLl9pZGxlPyJpZGxlIjpudWxsPT10aGlzLl9zdGFydFRpbWUmJiF0aGlzLl9wYXVzZWQmJjAhPXRoaXMucGxheWJhY2tSYXRlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/InBlbmRpbmciOnRoaXMuX3BhdXNlZD8icGF1c2VkIjp0aGlzLl9pc0ZpbmlzaGVkPyJmaW5pc2hlZCI6InJ1bm5pbmcifSxfcmV3aW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGxheWJhY2tSYXRlPj0wKXRoaXMuX2N1cnJlbnRUaW1lPTA7ZWxzZXtpZighKHRoaXMuX3RvdGFsRHVyYXRpb248MS8wKSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJVbmFibGUgdG8gcmV3aW5kIG5lZ2F0aXZlIHBsYXliYWNrIHJhdGUgYW5pbWF0aW9uIHdpdGggaW5maW5pdGUgZHVyYXRpb24iLCJJbnZhbGlkU3RhdGVFcnJvciIpO3RoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb259fSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VkPSExLCh0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl9pZGxlKSYmKHRoaXMuX3Jld2luZCgpLHRoaXMuX3N0YXJ0VGltZT1udWxsKSx0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZT90aGlzLl9pZGxlJiYodGhpcy5fcmV3aW5kKCksdGhpcy5faWRsZT0hMSk6dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSEwLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX3BhdXNlZD0hMH0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5faWRsZXx8KHRoaXMuY3VycmVudFRpbWU9dGhpcy5fcGxheWJhY2tSYXRlPjA/dGhpcy5fdG90YWxEdXJhdGlvbjowLHRoaXMuX3N0YXJ0VGltZT10aGlzLl90b3RhbER1cmF0aW9uLXRoaXMuY3VycmVudFRpbWUsdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5faW5FZmZlY3QmJih0aGlzLl9pbkVmZmVjdD0hMSx0aGlzLl9pZGxlPSEwLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9maW5pc2hlZEZsYWc9ITAsdGhpcy5fY3VycmVudFRpbWU9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9lZmZlY3QuX3VwZGF0ZShudWxsKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZSo9LTEsdGhpcy5wbGF5KCl9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgYiYmImZpbmlzaCI9PWEmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnB1c2goYil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXtpZigiZmluaXNoIj09YSl7dmFyIGM9dGhpcy5fZmluaXNoSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9maW5pc2hIYW5kbGVycy5zcGxpY2UoYywxKX19LF9maXJlRXZlbnRzOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzRmluaXNoZWQpe2lmKCF0aGlzLl9maW5pc2hlZEZsYWcpe3ZhciBiPW5ldyBkKHRoaXMsdGhpcy5fY3VycmVudFRpbWUsYSksYz10aGlzLl9maW5pc2hIYW5kbGVycy5jb25jYXQodGhpcy5vbmZpbmlzaD9bdGhpcy5vbmZpbmlzaF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGIudGFyZ2V0LGIpfSl9LDApLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMH19ZWxzZSB0aGlzLl9maW5pc2hlZEZsYWc9ITF9LF90aWNrOmZ1bmN0aW9uKGEsYil7dGhpcy5faWRsZXx8dGhpcy5fcGF1c2VkfHwobnVsbD09dGhpcy5fc3RhcnRUaW1lP2ImJih0aGlzLnN0YXJ0VGltZT1hLXRoaXMuX2N1cnJlbnRUaW1lL3RoaXMucGxheWJhY2tSYXRlKTp0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl90aWNrQ3VycmVudFRpbWUoKGEtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSkpLGImJih0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsdGhpcy5fZmlyZUV2ZW50cyhhKSl9LGdldCBfbmVlZHNUaWNrKCl7cmV0dXJuIHRoaXMucGxheVN0YXRlIGlue3BlbmRpbmc6MSxydW5uaW5nOjF9fHwhdGhpcy5fZmluaXNoZWRGbGFnfSxfdGFyZ2V0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VmZmVjdC5fdGFyZ2V0O3JldHVybiBhLl9hY3RpdmVBbmltYXRpb25zfHwoYS5fYWN0aXZlQW5pbWF0aW9ucz1bXSksYS5fYWN0aXZlQW5pbWF0aW9uc30sX21hcmtUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90YXJnZXRBbmltYXRpb25zKCk7LTE9PT1hLmluZGV4T2YodGhpcykmJmEucHVzaCh0aGlzKX0sX3VubWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKSxiPWEuaW5kZXhPZih0aGlzKTstMSE9PWImJmEuc3BsaWNlKGIsMSl9fX0oYSxiKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXt2YXIgYj1qO2o9W10sYTxxLmN1cnJlbnRUaW1lJiYoYT1xLmN1cnJlbnRUaW1lKSxxLl9hbmltYXRpb25zLnNvcnQoZSkscS5fYW5pbWF0aW9ucz1oKGEsITAscS5fYW5pbWF0aW9ucylbMF0sYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMV0oYSl9KSxnKCksbD12b2lkIDB9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLl9zZXF1ZW5jZU51bWJlci1iLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlvbiBmKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gZygpe28uZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSxvLmxlbmd0aD0wfWZ1bmN0aW9uIGgoYSxjLGQpe3A9ITAsbj0hMSxiLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWEsbT0hMTt2YXIgZT1bXSxmPVtdLGc9W10saD1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuX3RpY2soYSxjKSxiLl9pbkVmZmVjdD8oZi5wdXNoKGIuX2VmZmVjdCksYi5fbWFya1RhcmdldCgpKTooZS5wdXNoKGIuX2VmZmVjdCksYi5fdW5tYXJrVGFyZ2V0KCkpLGIuX25lZWRzVGljayYmKG09ITApO3ZhciBkPWIuX2luRWZmZWN0fHxiLl9uZWVkc1RpY2s7Yi5faW5UaW1lbGluZT1kLGQ/Zy5wdXNoKGIpOmgucHVzaChiKX0pLG8ucHVzaC5hcHBseShvLGUpLG8ucHVzaC5hcHBseShvLGYpLG0mJnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLHA9ITEsW2csaF19dmFyIGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxqPVtdLGs9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPWsrKztyZXR1cm4gMD09ai5sZW5ndGgmJmkoZCksai5wdXNoKFtiLGFdKSxifSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7ai5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMF09PWEmJihiWzFdPWZ1bmN0aW9uKCl7fSl9KX0sZi5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGMpe2MuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMudGltaW5nKTt2YXIgZD1uZXcgYi5BbmltYXRpb24oYyk7cmV0dXJuIGQuX2lkbGU9ITEsZC5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goZCksYi5yZXN0YXJ0KCksYi5hcHBseURpcnRpZWRBbmltYXRpb24oZCksZH19O3ZhciBsPXZvaWQgMCxtPSExLG49ITE7Yi5yZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG18fChtPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLG49ITApLG59LGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGEpe2lmKCFwKXthLl9tYXJrVGFyZ2V0KCk7dmFyIGM9YS5fdGFyZ2V0QW5pbWF0aW9ucygpO2Muc29ydChlKSxoKGIudGltZWxpbmUuY3VycmVudFRpbWUsITEsYy5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXEuX2FuaW1hdGlvbnMuaW5kZXhPZihhKTstMSE9PWImJnEuX2FuaW1hdGlvbnMuc3BsaWNlKGIsMSl9KSxnKCl9fTt2YXIgbz1bXSxwPSExLHE9bmV3IGY7Yi50aW1lbGluZT1xfShhLGIpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYz1hLmV4ZWMoYik7aWYoYylyZXR1cm4gYz1hLmlnbm9yZUNhc2U/Y1swXS50b0xvd2VyQ2FzZSgpOmNbMF0sW2MsYi5zdWJzdHIoYy5sZW5ndGgpXX1mdW5jdGlvbiBjKGEsYil7Yj1iLnJlcGxhY2UoL15ccyovLCIiKTt2YXIgYz1hKGIpO2lmKGMpcmV0dXJuW2NbMF0sY1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIGQoYSxkLGUpe2E9Yy5iaW5kKG51bGwsYSk7Zm9yKHZhciBmPVtdOzspe3ZhciBnPWEoZSk7aWYoIWcpcmV0dXJuW2YsZV07aWYoZi5wdXNoKGdbMF0pLGU9Z1sxXSwhKGc9YihkLGUpKXx8IiI9PWdbMV0pcmV0dXJuW2YsZV07ZT1nWzFdfX1mdW5jdGlvbiBlKGEsYil7Zm9yKHZhciBjPTAsZD0wO2Q8Yi5sZW5ndGgmJighL1xzfCwvLnRlc3QoYltkXSl8fDAhPWMpO2QrKylpZigiKCI9PWJbZF0pYysrO2Vsc2UgaWYoIikiPT1iW2RdJiYoYy0tLDA9PWMmJmQrKyxjPD0wKSlicmVhazt2YXIgZT1hKGIuc3Vic3RyKDAsZCkpO3JldHVybiB2b2lkIDA9PWU/dm9pZCAwOltlLGIuc3Vic3RyKGQpXX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEsZD1iO2MmJmQ7KWM+ZD9jJT1kOmQlPWM7cmV0dXJuIGM9YSpiLyhjK2QpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWEoYik7cmV0dXJuIGMmJihjWzBdPXZvaWQgMCksY319ZnVuY3Rpb24gaChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYShjKXx8W2IsY119fWZ1bmN0aW9uIGkoYixjKXtmb3IodmFyIGQ9W10sZT0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZj1hLmNvbnN1bWVUcmltbWVkKGJbZV0sYyk7aWYoIWZ8fCIiPT1mWzBdKXJldHVybjt2b2lkIDAhPT1mWzBdJiZkLnB1c2goZlswXSksYz1mWzFdfWlmKCIiPT1jKXJldHVybiBkfWZ1bmN0aW9uIGooYSxiLGMsZCxlKXtmb3IodmFyIGc9W10saD1bXSxpPVtdLGo9ZihkLmxlbmd0aCxlLmxlbmd0aCksaz0wO2s8ajtrKyspe3ZhciBsPWIoZFtrJWQubGVuZ3RoXSxlW2slZS5sZW5ndGhdKTtpZighbClyZXR1cm47Zy5wdXNoKGxbMF0pLGgucHVzaChsWzFdKSxpLnB1c2gobFsyXSl9cmV0dXJuW2csaCxmdW5jdGlvbihiKXt2YXIgZD1iLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBpW2JdKGEpfSkuam9pbihjKTtyZXR1cm4gYT9hKGQpOmR9XX1mdW5jdGlvbiBrKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmPVtdLGc9MCxoPTA7aDxjLmxlbmd0aDtoKyspaWYoImZ1bmN0aW9uIj09dHlwZW9mIGNbaF0pe3ZhciBpPWNbaF0oYVtnXSxiW2crK10pO2QucHVzaChpWzBdKSxlLnB1c2goaVsxXSksZi5wdXNoKGlbMl0pfWVsc2UhZnVuY3Rpb24oYSl7ZC5wdXNoKCExKSxlLnB1c2goITEpLGYucHVzaChmdW5jdGlvbigpe3JldHVybiBjW2FdfSl9KGgpO3JldHVybltkLGUsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1mW2NdKGFbY10pO3JldHVybiBifV19YS5jb25zdW1lVG9rZW49YixhLmNvbnN1bWVUcmltbWVkPWMsYS5jb25zdW1lUmVwZWF0ZWQ9ZCxhLmNvbnN1bWVQYXJlbnRoZXNpc2VkPWUsYS5pZ25vcmU9ZyxhLm9wdGlvbmFsPWgsYS5jb25zdW1lTGlzdD1pLGEubWVyZ2VOZXN0ZWRSZXBlYXRlZD1qLmJpbmQobnVsbCxudWxsKSxhLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPWosYS5tZXJnZUxpc3Q9a30oYiksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXtmdW5jdGlvbiBjKGIpe3ZhciBjPWEuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxiKTtyZXR1cm4gYz8oZC5pbnNldD0hMCxjKTooYz1hLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYikpPyhkLmxlbmd0aHMucHVzaChjWzBdKSxjKTooYz1hLmNvbnN1bWVDb2xvcihiKSxjPyhkLmNvbG9yPWNbMF0sYyk6dm9pZCAwKX12YXIgZD17aW5zZXQ6ITEsbGVuZ3RoczpbXSxjb2xvcjpudWxsfSxlPWEuY29uc3VtZVJlcGVhdGVkKGMsL14vLGIpO2lmKGUmJmVbMF0ubGVuZ3RoKXJldHVybltkLGVbMV1dfWZ1bmN0aW9uIGMoYyl7dmFyIGQ9YS5jb25zdW1lUmVwZWF0ZWQoYiwvXiwvLGMpO2lmKGQmJiIiPT1kWzFdKXJldHVybiBkWzBdfWZ1bmN0aW9uIGQoYixjKXtmb3IoO2IubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYi5sZW5ndGhzLnB1c2goe3B4OjB9KTtmb3IoO2MubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYy5sZW5ndGhzLnB1c2goe3B4OjB9KTtpZihiLmluc2V0PT1jLmluc2V0JiYhIWIuY29sb3I9PSEhYy5jb2xvcil7Zm9yKHZhciBkLGU9W10sZj1bW10sMF0sZz1bW10sMF0saD0wO2g8Yi5sZW5ndGhzLmxlbmd0aDtoKyspe3ZhciBpPWEubWVyZ2VEaW1lbnNpb25zKGIubGVuZ3Roc1toXSxjLmxlbmd0aHNbaF0sMj09aCk7ZlswXS5wdXNoKGlbMF0pLGdbMF0ucHVzaChpWzFdKSxlLnB1c2goaVsyXSl9aWYoYi5jb2xvciYmYy5jb2xvcil7dmFyIGo9YS5tZXJnZUNvbG9ycyhiLmNvbG9yLGMuY29sb3IpO2ZbMV09alswXSxnWzFdPWpbMV0sZD1qWzJdfXJldHVybltmLGcsZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWIuaW5zZXQ/Imluc2V0ICI6IiAiLGY9MDtmPGUubGVuZ3RoO2YrKyljKz1lW2ZdKGFbMF1bZl0pKyIgIjtyZXR1cm4gZCYmKGMrPWQoYVsxXSkpLGN9XX19ZnVuY3Rpb24gZShiLGMsZCxlKXtmdW5jdGlvbiBmKGEpe3JldHVybntpbnNldDphLGNvbG9yOlswLDAsMCwwXSxsZW5ndGhzOlt7cHg6MH0se3B4OjB9LHtweDowfSx7cHg6MH1dfX1mb3IodmFyIGc9W10saD1bXSxpPTA7aTxkLmxlbmd0aHx8aTxlLmxlbmd0aDtpKyspe3ZhciBqPWRbaV18fGYoZVtpXS5pbnNldCksaz1lW2ldfHxmKGRbaV0uaW5zZXQpO2cucHVzaChqKSxoLnB1c2goayl9cmV0dXJuIGEubWVyZ2VOZXN0ZWRSZXBlYXRlZChiLGMsZyxoKX12YXIgZj1lLmJpbmQobnVsbCxkLCIsICIpO2EuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmLFsiYm94LXNoYWRvdyIsInRleHQtc2hhZG93Il0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEudG9GaXhlZCgzKS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9cLiQvLCIiKX1mdW5jdGlvbiBkKGEsYixjKXtyZXR1cm4gTWF0aC5taW4oYixNYXRoLm1heChhLGMpKX1mdW5jdGlvbiBlKGEpe2lmKC9eXHMqWy0rXT8oXGQqXC4pP1xkK1xzKiQvLnRlc3QoYSkpcmV0dXJuIE51bWJlcihhKX1mdW5jdGlvbiBmKGEsYil7cmV0dXJuW2EsYixjXX1mdW5jdGlvbiBnKGEsYil7aWYoMCE9YSlyZXR1cm4gaSgwLDEvMCkoYSxiKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5yb3VuZChkKDEsMS8wLGEpKX1dfWZ1bmN0aW9uIGkoYSxiKXtyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm5bZSxmLGZ1bmN0aW9uKGUpe3JldHVybiBjKGQoYSxiLGUpKX1dfX1mdW5jdGlvbiBqKGEpe3ZhciBiPWEudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1iLmxlbmd0aCl7Zm9yKHZhciBjPVtdLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGY9ZShiW2RdKTtpZih2b2lkIDA9PT1mKXJldHVybjtjLnB1c2goZil9cmV0dXJuIGN9fWZ1bmN0aW9uIGsoYSxiKXtpZihhLmxlbmd0aD09Yi5sZW5ndGgpcmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoYykuam9pbigiICIpfV19ZnVuY3Rpb24gbChhLGIpe3JldHVyblthLGIsTWF0aC5yb3VuZF19YS5jbGFtcD1kLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaixrLFsic3Ryb2tlLWRhc2hhcnJheSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEvMCksWyJib3JkZXItaW1hZ2Utd2lkdGgiLCJsaW5lLWhlaWdodCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEpLFsib3BhY2l0eSIsInNoYXBlLWltYWdlLXRocmVzaG9sZCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsZyxbImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxoLFsib3JwaGFucyIsIndpZG93cyJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsbCxbInotaW5kZXgiXSksYS5wYXJzZU51bWJlcj1lLGEucGFyc2VOdW1iZXJMaXN0PWosYS5tZXJnZU51bWJlcnM9ZixhLm51bWJlclRvU3RyaW5nPWN9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2lmKCJ2aXNpYmxlIj09YXx8InZpc2libGUiPT1iKXJldHVyblswLDEsZnVuY3Rpb24oYyl7cmV0dXJuIGM8PTA/YTpjPj0xP2I6InZpc2libGUifV19YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihTdHJpbmcsYyxbInZpc2liaWxpdHkiXSl9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXthPWEudHJpbSgpLGYuZmlsbFN0eWxlPSIjMDAwIixmLmZpbGxTdHlsZT1hO3ZhciBiPWYuZmlsbFN0eWxlO2lmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxTdHlsZT1hLGI9PWYuZmlsbFN0eWxlKXtmLmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBjPWYuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGE7Zi5jbGVhclJlY3QoMCwwLDEsMSk7dmFyIGQ9Y1szXS8yNTU7cmV0dXJuW2NbMF0qZCxjWzFdKmQsY1syXSpkLGRdfX1mdW5jdGlvbiBkKGIsYyl7cmV0dXJuW2IsYyxmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxhKSl9aWYoYlszXSlmb3IodmFyIGQ9MDtkPDM7ZCsrKWJbZF09TWF0aC5yb3VuZChjKGJbZF0vYlszXSkpO3JldHVybiBiWzNdPWEubnVtYmVyVG9TdHJpbmcoYS5jbGFtcCgwLDEsYlszXSkpLCJyZ2JhKCIrYi5qb2luKCIsIikrIikifV19dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7ZS53aWR0aD1lLmhlaWdodD0xO3ZhciBmPWUuZ2V0Q29udGV4dCgiMmQiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZCxbImJhY2tncm91bmQtY29sb3IiLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItdG9wLWNvbG9yIiwiY29sb3IiLCJmaWxsIiwiZmxvb2QtY29sb3IiLCJsaWdodGluZy1jb2xvciIsIm91dGxpbmUtY29sb3IiLCJzdG9wLWNvbG9yIiwic3Ryb2tlIiwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIl0pLGEuY29uc3VtZUNvbG9yPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGMpLGEubWVyZ2VDb2xvcnM9ZH0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYj1oLmV4ZWMoYSk7Zz1iP2JbMF06dm9pZCAwfWZ1bmN0aW9uIGMoKXt2YXIgYT1OdW1iZXIoZyk7cmV0dXJuIGIoKSxhfWZ1bmN0aW9uIGQoKXtpZigiKCIhPT1nKXJldHVybiBjKCk7YigpO3ZhciBhPWYoKTtyZXR1cm4iKSIhPT1nP05hTjooYigpLGEpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ZCgpOyIqIj09PWd8fCIvIj09PWc7KXt2YXIgYz1nO2IoKTt2YXIgZT1kKCk7IioiPT09Yz9hKj1lOmEvPWV9cmV0dXJuIGF9ZnVuY3Rpb24gZigpe2Zvcih2YXIgYT1lKCk7IisiPT09Z3x8Ii0iPT09Zzspe3ZhciBjPWc7YigpO3ZhciBkPWUoKTsiKyI9PT1jP2ErPWQ6YS09ZH1yZXR1cm4gYX12YXIgZyxoPS8oW1wrXC1cd1wuXSt8W1woXClcKlwvXSkvZztyZXR1cm4gYigpLGYoKX1mdW5jdGlvbiBkKGEsYil7aWYoIjAiPT0oYj1iLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSYmInB4Ii5zZWFyY2goYSk+PTApcmV0dXJue3B4OjB9O2lmKC9eW14oXSokfF5jYWxjLy50ZXN0KGIpKXtiPWIucmVwbGFjZSgvY2FsY1woL2csIigiKTt2YXIgZD17fTtiPWIucmVwbGFjZShhLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdPW51bGwsIlUiK2F9KTtmb3IodmFyIGU9IlUoIithLnNvdXJjZSsiKSIsZj1iLnJlcGxhY2UoL1stK10/KFxkKlwuKT9cZCsoW0VlXVstK10/XGQrKT8vZywiTiIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiTiIrZSwiZyIpLCJEIikucmVwbGFjZSgvXHNbKy1dXHMvZywiTyIpLnJlcGxhY2UoL1xzL2csIiIpLGc9Wy9OXCooRCkvZywvKE58RClbKlwvXU4vZywvKE58RClPXDEvZywvXCgoTnxEKVwpL2ddLGg9MDtoPGcubGVuZ3RoOylnW2hdLnRlc3QoZik/KGY9Zi5yZXBsYWNlKGdbaF0sIiQxIiksaD0wKTpoKys7aWYoIkQiPT1mKXtmb3IodmFyIGkgaW4gZCl7dmFyIGo9YyhiLnJlcGxhY2UobmV3IFJlZ0V4cCgiVSIraSwiZyIpLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoZSwiZyIpLCIqMCIpKTtpZighaXNGaW5pdGUoaikpcmV0dXJuO2RbaV09an1yZXR1cm4gZH19fWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gZihhLGIsITApfWZ1bmN0aW9uIGYoYixjLGQpe3ZhciBlLGY9W107Zm9yKGUgaW4gYilmLnB1c2goZSk7Zm9yKGUgaW4gYylmLmluZGV4T2YoZSk8MCYmZi5wdXNoKGUpO3JldHVybiBiPWYubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfHwwfSksYz1mLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gY1thXXx8MH0pLFtiLGMsZnVuY3Rpb24oYil7dmFyIGM9Yi5tYXAoZnVuY3Rpb24oYyxlKXtyZXR1cm4gMT09Yi5sZW5ndGgmJmQmJihjPU1hdGgubWF4KGMsMCkpLGEubnVtYmVyVG9TdHJpbmcoYykrZltlXX0pLmpvaW4oIiArICIpO3JldHVybiBiLmxlbmd0aD4xPyJjYWxjKCIrYysiKSI6Y31dfXZhciBnPSJweHxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjIixoPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZywiZyIpKSxpPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZysifCUiLCJnIikpLGo9ZC5iaW5kKG51bGwsL2RlZ3xyYWR8Z3JhZHx0dXJuL2cpO2EucGFyc2VMZW5ndGg9aCxhLnBhcnNlTGVuZ3RoT3JQZXJjZW50PWksYS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50PWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGkpLGEucGFyc2VBbmdsZT1qLGEubWVyZ2VEaW1lbnNpb25zPWY7dmFyIGs9YS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsaCksbD1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxrLC9eLyksbT1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxsLC9eLC8pO2EuY29uc3VtZVNpemVQYWlyTGlzdD1tO3ZhciBuPWZ1bmN0aW9uKGEpe3ZhciBiPW0oYSk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LG89YS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGUsIiAiKSxwPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxvLCIsIik7YS5tZXJnZU5vbk5lZ2F0aXZlU2l6ZVBhaXI9byxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKG4scCxbImJhY2tncm91bmQtc2l6ZSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGksZSxbImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci10b3Atd2lkdGgiLCJmbGV4LWJhc2lzIiwiZm9udC1zaXplIiwiaGVpZ2h0IiwibGluZS1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwib3V0bGluZS13aWR0aCIsIndpZHRoIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaSxmLFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm90dG9tIiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1pbi1oZWlnaHQiLCJtaW4td2lkdGgiLCJvdXRsaW5lLW9mZnNldCIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGVyc3BlY3RpdmUiLCJyaWdodCIsInNoYXBlLW1hcmdpbiIsInN0cm9rZS1kYXNob2Zmc2V0IiwidGV4dC1pbmRlbnQiLCJ0b3AiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndvcmQtc3BhY2luZyJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGIpe3JldHVybiBhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYil8fGEuY29uc3VtZVRva2VuKC9eYXV0by8sYil9ZnVuY3Rpb24gZChiKXt2YXIgZD1hLmNvbnN1bWVMaXN0KFthLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15yZWN0LykpLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwoLykpLGEuY29uc3VtZVJlcGVhdGVkLmJpbmQobnVsbCxjLC9eLC8pLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwpLykpXSxiKTtpZihkJiY0PT1kWzBdLmxlbmd0aClyZXR1cm4gZFswXX1mdW5jdGlvbiBlKGIsYyl7cmV0dXJuImF1dG8iPT1ifHwiYXV0byI9PWM/WyEwLCExLGZ1bmN0aW9uKGQpe3ZhciBlPWQ/YjpjO2lmKCJhdXRvIj09ZSlyZXR1cm4iYXV0byI7dmFyIGY9YS5tZXJnZURpbWVuc2lvbnMoZSxlKTtyZXR1cm4gZlsyXShmWzBdKX1dOmEubWVyZ2VEaW1lbnNpb25zKGIsYyl9ZnVuY3Rpb24gZihhKXtyZXR1cm4icmVjdCgiK2ErIikifXZhciBnPWEubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGYsZSwiLCAiKTthLnBhcnNlQm94PWQsYS5tZXJnZUJveGVzPWcsYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihkLGcsWyJjbGlwIl0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPTA7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09az9iW2MrK106YX0pfX1mdW5jdGlvbiBkKGEpe3JldHVybiBhfWZ1bmN0aW9uIGUoYil7aWYoIm5vbmUiPT0oYj1iLnRvTG93ZXJDYXNlKCkudHJpbSgpKSlyZXR1cm5bXTtmb3IodmFyIGMsZD0vXHMqKFx3KylcKChbXildKilcKS9nLGU9W10sZj0wO2M9ZC5leGVjKGIpOyl7aWYoYy5pbmRleCE9ZilyZXR1cm47Zj1jLmluZGV4K2NbMF0ubGVuZ3RoO3ZhciBnPWNbMV0saD1uW2ddO2lmKCFoKXJldHVybjt2YXIgaT1jWzJdLnNwbGl0KCIsIiksaj1oWzBdO2lmKGoubGVuZ3RoPGkubGVuZ3RoKXJldHVybjtmb3IodmFyIGs9W10sbz0wO288ai5sZW5ndGg7bysrKXt2YXIgcCxxPWlbb10scj1qW29dO2lmKHZvaWQgMD09PShwPXE/e0E6ZnVuY3Rpb24oYil7cmV0dXJuIjAiPT1iLnRyaW0oKT9tOmEucGFyc2VBbmdsZShiKX0sTjphLnBhcnNlTnVtYmVyLFQ6YS5wYXJzZUxlbmd0aE9yUGVyY2VudCxMOmEucGFyc2VMZW5ndGh9W3IudG9VcHBlckNhc2UoKV0ocSk6e2E6bSxuOmtbMF0sdDpsfVtyXSkpcmV0dXJuO2sucHVzaChwKX1pZihlLnB1c2goe3Q6ZyxkOmt9KSxkLmxhc3RJbmRleD09Yi5sZW5ndGgpcmV0dXJuIGV9fWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudG9GaXhlZCg2KS5yZXBsYWNlKCIuMDAwMDAwIiwiIil9ZnVuY3Rpb24gZyhiLGMpe2lmKGIuZGVjb21wb3NpdGlvblBhaXIhPT1jKXtiLmRlY29tcG9zaXRpb25QYWlyPWM7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbihiKX1pZihjLmRlY29tcG9zaXRpb25QYWlyIT09Yil7Yy5kZWNvbXBvc2l0aW9uUGFpcj1iO3ZhciBlPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYyl9cmV0dXJuIG51bGw9PWRbMF18fG51bGw9PWVbMF0/W1shMV0sWyEwXSxmdW5jdGlvbihhKXtyZXR1cm4gYT9jWzBdLmQ6YlswXS5kfV06KGRbMF0ucHVzaCgwKSxlWzBdLnB1c2goMSksW2QsZSxmdW5jdGlvbihiKXt2YXIgYz1hLnF1YXQoZFswXVszXSxlWzBdWzNdLGJbNV0pO3JldHVybiBhLmNvbXBvc2VNYXRyaXgoYlswXSxiWzFdLGJbMl0sYyxiWzRdKS5tYXAoZikuam9pbigiLCIpfV0pfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGEucmVwbGFjZSgvW3h5XS8sIiIpfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGEucmVwbGFjZSgvKHh8eXx6fDNkKT8kLywiM2QiKX1mdW5jdGlvbiBqKGIsYyl7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbiYmITAsZT0hMTtpZighYi5sZW5ndGh8fCFjLmxlbmd0aCl7Yi5sZW5ndGh8fChlPSEwLGI9YyxjPVtdKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGo9YltmXS50LGs9YltmXS5kLGw9InNjYWxlIj09ai5zdWJzdHIoMCw1KT8xOjA7Yy5wdXNoKHt0OmosZDprLm1hcChmdW5jdGlvbihhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGw7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1sO3JldHVybiBifSl9KX19dmFyIG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4icGVyc3BlY3RpdmUiPT1hJiYicGVyc3BlY3RpdmUiPT1ifHwoIm1hdHJpeCI9PWF8fCJtYXRyaXgzZCI9PWEpJiYoIm1hdHJpeCI9PWJ8fCJtYXRyaXgzZCI9PWIpfSxvPVtdLHA9W10scT1bXTtpZihiLmxlbmd0aCE9Yy5sZW5ndGgpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dfWVsc2UgZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBqLHM9YltmXS50LHQ9Y1tmXS50LHU9YltmXS5kLHY9Y1tmXS5kLHc9bltzXSx4PW5bdF07aWYobShzLHQpKXtpZighZClyZXR1cm47dmFyIHI9ZyhbYltmXV0sW2NbZl1dKTtvLnB1c2goclswXSkscC5wdXNoKHJbMV0pLHEucHVzaChbIm1hdHJpeCIsW3JbMl1dXSl9ZWxzZXtpZihzPT10KWo9cztlbHNlIGlmKHdbMl0mJnhbMl0mJmgocyk9PWgodCkpaj1oKHMpLHU9d1syXSh1KSx2PXhbMl0odik7ZWxzZXtpZighd1sxXXx8IXhbMV18fGkocykhPWkodCkpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dO2JyZWFrfWo9aShzKSx1PXdbMV0odSksdj14WzFdKHYpfWZvcih2YXIgeT1bXSx6PVtdLEE9W10sQj0wO0I8dS5sZW5ndGg7QisrKXt2YXIgQz0ibnVtYmVyIj09dHlwZW9mIHVbQl0/YS5tZXJnZU51bWJlcnM6YS5tZXJnZURpbWVuc2lvbnMscj1DKHVbQl0sdltCXSk7eVtCXT1yWzBdLHpbQl09clsxXSxBLnB1c2goclsyXSl9by5wdXNoKHkpLHAucHVzaCh6KSxxLnB1c2goW2osQV0pfX1pZihlKXt2YXIgRD1vO289cCxwPUR9cmV0dXJuW28scCxmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1hcChmdW5jdGlvbihhLGMpe3JldHVybiBxW2JdWzFdW2NdKGEpfSkuam9pbigiLCIpO3JldHVybiJtYXRyaXgiPT1xW2JdWzBdJiYxNj09Yy5zcGxpdCgiLCIpLmxlbmd0aCYmKHFbYl1bMF09Im1hdHJpeDNkIikscVtiXVswXSsiKCIrYysiKSJ9KS5qb2luKCIgIil9XX12YXIgaz1udWxsLGw9e3B4OjB9LG09e2RlZzowfSxuPXttYXRyaXg6WyJOTk5OTk4iLFtrLGssMCwwLGssaywwLDAsMCwwLDEsMCxrLGssMCwxXSxkXSxtYXRyaXgzZDpbIk5OTk5OTk5OTk5OTk5OTk4iLGRdLHJvdGF0ZTpbIkEiXSxyb3RhdGV4OlsiQSJdLHJvdGF0ZXk6WyJBIl0scm90YXRlejpbIkEiXSxyb3RhdGUzZDpbIk5OTkEiXSxwZXJzcGVjdGl2ZTpbIkwiXSxzY2FsZTpbIk5uIixjKFtrLGssMV0pLGRdLHNjYWxleDpbIk4iLGMoW2ssMSwxXSksYyhbaywxXSldLHNjYWxleTpbIk4iLGMoWzEsaywxXSksYyhbMSxrXSldLHNjYWxlejpbIk4iLGMoWzEsMSxrXSldLHNjYWxlM2Q6WyJOTk4iLGRdLHNrZXc6WyJBYSIsbnVsbCxkXSxza2V3eDpbIkEiLG51bGwsYyhbayxtXSldLHNrZXd5OlsiQSIsbnVsbCxjKFttLGtdKV0sdHJhbnNsYXRlOlsiVHQiLGMoW2ssayxsXSksZF0sdHJhbnNsYXRleDpbIlQiLGMoW2ssbCxsXSksYyhbayxsXSldLHRyYW5zbGF0ZXk6WyJUIixjKFtsLGssbF0pLGMoW2wsa10pXSx0cmFuc2xhdGV6OlsiTCIsYyhbbCxsLGtdKV0sdHJhbnNsYXRlM2Q6WyJUVEwiLGRdfTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaixbInRyYW5zZm9ybSJdKSxhLnRyYW5zZm9ybVRvU3ZnTWF0cml4PWZ1bmN0aW9uKGIpe3ZhciBjPWEudHJhbnNmb3JtTGlzdFRvTWF0cml4KGUoYikpO3JldHVybiJtYXRyaXgoIitmKGNbMF0pKyIgIitmKGNbMV0pKyIgIitmKGNbNF0pKyIgIitmKGNbNV0pKyIgIitmKGNbMTJdKSsiICIrZihjWzEzXSkrIikifX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7Yi5jb25jYXQoW2FdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiYoZFthXT1iKSxlW2JdPWF9KX12YXIgZD17fSxlPXt9O2MoInRyYW5zZm9ybSIsWyJ3ZWJraXRUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxjKCJ0cmFuc2Zvcm1PcmlnaW4iLFsid2Via2l0VHJhbnNmb3JtT3JpZ2luIl0pLGMoInBlcnNwZWN0aXZlIixbIndlYmtpdFBlcnNwZWN0aXZlIl0pLGMoInBlcnNwZWN0aXZlT3JpZ2luIixbIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luIl0pLGEucHJvcGVydHlOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfHxhfSxhLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV18fGF9fShiKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXt2YXIgYTtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdyl2YXIgYT1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSB2YXIgYT1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTt2YXIgYj1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImNhbmNlbCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfSxjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGQsZSl7dmFyIGY9Yy5jYWxsKHRoaXMsZCxlKTtmLl9jYW5jZWxIYW5kbGVycz1bXSxmLm9uY2FuY2VsPW51bGw7dmFyIGc9Zi5jYW5jZWw7Zi5jYW5jZWw9ZnVuY3Rpb24oKXtnLmNhbGwodGhpcyk7dmFyIGM9bmV3IGIodGhpcyxudWxsLGEoKSksZD10aGlzLl9jYW5jZWxIYW5kbGVycy5jb25jYXQodGhpcy5vbmNhbmNlbD9bdGhpcy5vbmNhbmNlbF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGMudGFyZ2V0LGMpfSl9LDApfTt2YXIgaD1mLmFkZEV2ZW50TGlzdGVuZXI7Zi5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGImJiJjYW5jZWwiPT1hP3RoaXMuX2NhbmNlbEhhbmRsZXJzLnB1c2goYik6aC5jYWxsKHRoaXMsYSxiKX07dmFyIGk9Zi5yZW1vdmVFdmVudExpc3RlbmVyO3JldHVybiBmLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZigiY2FuY2VsIj09YSl7dmFyIGM9dGhpcy5fY2FuY2VsSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9jYW5jZWxIYW5kbGVycy5zcGxpY2UoYywxKX1lbHNlIGkuY2FsbCh0aGlzLGEsYil9LGZ9fX0oKSxmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYz1udWxsLGQ9ITE7dHJ5e3ZhciBlPWdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpLGY9IjAiPT1lPyIxIjoiMCI7Yz1iLmFuaW1hdGUoe29wYWNpdHk6W2YsZl19LHtkdXJhdGlvbjoxfSksYy5jdXJyZW50VGltZT0wLGQ9Z2V0Q29tcHV0ZWRTdHlsZShiKS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5Iik9PWZ9Y2F0Y2goYSl7fWZpbmFsbHl7YyYmYy5jYW5jZWwoKX1pZighZCl7dmFyIGc9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gd2luZG93LlN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZBcnJheS5wcm90b3R5cGUuZnJvbSYmYltTeW1ib2wuaXRlcmF0b3JdJiYoYj1BcnJheS5mcm9tKGIpKSxBcnJheS5pc0FycmF5KGIpfHxudWxsPT09Ynx8KGI9YS5jb252ZXJ0VG9BcnJheUZvcm0oYikpLGcuY2FsbCh0aGlzLGIsYyl9fX0oYSksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGM9Yi50aW1lbGluZTtjLmN1cnJlbnRUaW1lPWEsYy5fZGlzY2FyZEFuaW1hdGlvbnMoKSwwPT1jLl9hbmltYXRpb25zLmxlbmd0aD9mPSExOnJlcXVlc3RBbmltYXRpb25GcmFtZShkKX12YXIgZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGUoZnVuY3Rpb24oYyl7Yi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYShjKSxiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKX0pfSxiLkFuaW1hdGlvblRpbWVsaW5lPWZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXZvaWQgMH0sYi5BbmltYXRpb25UaW1lbGluZS5wcm90b3R5cGU9e2dldEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzY2FyZEFuaW1hdGlvbnMoKSx0aGlzLl9hbmltYXRpb25zLnNsaWNlKCl9LF91cGRhdGVBbmltYXRpb25zUHJvbWlzZXM6ZnVuY3Rpb24oKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5fdXBkYXRlUHJvbWlzZXMoKX0pfSxfZGlzY2FyZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb25zPXRoaXMuX2FuaW1hdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJmaW5pc2hlZCIhPWEucGxheVN0YXRlJiYiaWRsZSIhPWEucGxheVN0YXRlfSl9LF9wbGF5OmZ1bmN0aW9uKGEpe3ZhciBjPW5ldyBiLkFuaW1hdGlvbihhLHRoaXMpO3JldHVybiB0aGlzLl9hbmltYXRpb25zLnB1c2goYyksYi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrKCksYy5fdXBkYXRlUHJvbWlzZXMoKSxjLl9hbmltYXRpb24ucGxheSgpLGMuX3VwZGF0ZVByb21pc2VzKCksY30scGxheTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5yZW1vdmUoKSx0aGlzLl9wbGF5KGEpfX07dmFyIGY9ITE7Yi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrPWZ1bmN0aW9uKCl7Znx8KGY9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGQpKX07dmFyIGc9bmV3IGIuQW5pbWF0aW9uVGltZWxpbmU7Yi50aW1lbGluZT1nO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LmRvY3VtZW50LCJ0aW1lbGluZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ319KX1jYXRjaChhKXt9dHJ5e3dpbmRvdy5kb2N1bWVudC50aW1lbGluZT1nfWNhdGNoKGEpe319KDAsYyksZnVuY3Rpb24oYSxiLGMpe2IuYW5pbWF0aW9uc1dpdGhQcm9taXNlcz1bXSxiLkFuaW1hdGlvbj1mdW5jdGlvbihiLGMpe2lmKHRoaXMuaWQ9IiIsYiYmYi5faWQmJih0aGlzLmlkPWIuX2lkKSx0aGlzLmVmZmVjdD1iLGImJihiLl9hbmltYXRpb249dGhpcyksIWMpdGhyb3cgbmV3IEVycm9yKCJBbmltYXRpb24gd2l0aCBudWxsIHRpbWVsaW5lIGlzIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLl90aW1lbGluZT1jLHRoaXMuX3NlcXVlbmNlTnVtYmVyPWEuc2VxdWVuY2VOdW1iZXIrKyx0aGlzLl9ob2xkVGltZT0wLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9pc0dyb3VwPSExLHRoaXMuX2FuaW1hdGlvbj1udWxsLHRoaXMuX2NoaWxkQW5pbWF0aW9ucz1bXSx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX29sZFBsYXlTdGF0ZT0iaWRsZSIsdGhpcy5fcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb24oKSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfdXBkYXRlUHJvbWlzZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9vbGRQbGF5U3RhdGUsYj10aGlzLnBsYXlTdGF0ZTtyZXR1cm4gdGhpcy5fcmVhZHlQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0UmVhZHlQcm9taXNlKCksdGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCk6InBlbmRpbmciPT1hP3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2UoKToicGVuZGluZyI9PWImJih0aGlzLl9yZWFkeVByb21pc2U9dm9pZCAwKSksdGhpcy5fZmluaXNoZWRQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0RmluaXNoZWRQcm9taXNlKCksdGhpcy5fZmluaXNoZWRQcm9taXNlPXZvaWQgMCk6ImZpbmlzaGVkIj09Yj90aGlzLl9yZXNvbHZlRmluaXNoZWRQcm9taXNlKCk6ImZpbmlzaGVkIj09YSYmKHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApKSx0aGlzLl9vbGRQbGF5U3RhdGU9dGhpcy5wbGF5U3RhdGUsdGhpcy5fcmVhZHlQcm9taXNlfHx0aGlzLl9maW5pc2hlZFByb21pc2V9LF9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGEsYyxkLGUsZj0hIXRoaXMuX2FuaW1hdGlvbjtmJiYoYT10aGlzLnBsYXliYWNrUmF0ZSxjPXRoaXMuX3BhdXNlZCxkPXRoaXMuc3RhcnRUaW1lLGU9dGhpcy5jdXJyZW50VGltZSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uLl93cmFwcGVyPW51bGwsdGhpcy5fYW5pbWF0aW9uPW51bGwpLCghdGhpcy5lZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LktleWZyYW1lRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcykpLCh0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8dGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuR3JvdXBFZmZlY3QpJiYodGhpcy5fYW5pbWF0aW9uPWIubmV3VW5kZXJseWluZ0FuaW1hdGlvbkZvckdyb3VwKHRoaXMuZWZmZWN0KSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cCh0aGlzKSksdGhpcy5lZmZlY3QmJnRoaXMuZWZmZWN0Ll9vbnNhbXBsZSYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KHRoaXMpLGYmJigxIT1hJiYodGhpcy5wbGF5YmFja1JhdGU9YSksbnVsbCE9PWQ/dGhpcy5zdGFydFRpbWU9ZDpudWxsIT09ZT90aGlzLmN1cnJlbnRUaW1lPWU6bnVsbCE9PXRoaXMuX2hvbGRUaW1lJiYodGhpcy5jdXJyZW50VGltZT10aGlzLl9ob2xkVGltZSksYyYmdGhpcy5wYXVzZSgpKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmImlkbGUiIT10aGlzLnBsYXlTdGF0ZSl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihjKXt0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oYyxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMuZWZmZWN0KSl9LmJpbmQodGhpcykpfX0sX3NldEV4dGVybmFsQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKWZvcih2YXIgYj0wO2I8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoO2IrKyl0aGlzLmVmZmVjdC5jaGlsZHJlbltiXS5fYW5pbWF0aW9uPWEsdGhpcy5fY2hpbGRBbmltYXRpb25zW2JdLl9zZXRFeHRlcm5hbEFuaW1hdGlvbihhKX0sX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKXt2YXIgYT10aGlzLmVmZmVjdC5fdGltaW5nLmRlbGF5O3RoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuZWZmZWN0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yi50aW1lbGluZS5fcGxheShjKTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMucHVzaChkKSxkLnBsYXliYWNrUmF0ZT10aGlzLnBsYXliYWNrUmF0ZSx0aGlzLl9wYXVzZWQmJmQucGF1c2UoKSxjLl9hbmltYXRpb249dGhpcy5lZmZlY3QuX2FuaW1hdGlvbix0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oZCxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMpKX0uYmluZCh0aGlzKSl9fSxfYXJyYW5nZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMuc3RhcnRUaW1lP2EuY3VycmVudFRpbWU9dGhpcy5jdXJyZW50VGltZS1iL3RoaXMucGxheWJhY2tSYXRlOmEuc3RhcnRUaW1lIT09dGhpcy5zdGFydFRpbWUrYi90aGlzLnBsYXliYWNrUmF0ZSYmKGEuc3RhcnRUaW1lPXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUpfSxnZXQgdGltZWxpbmUoKXtyZXR1cm4gdGhpcy5fdGltZWxpbmV9LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUifSxnZXQgZmluaXNoZWQoKXtyZXR1cm4gd2luZG93LlByb21pc2U/KHRoaXMuX2ZpbmlzaGVkUHJvbWlzZXx8KC0xPT1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuaW5kZXhPZih0aGlzKSYmYi5hbmltYXRpb25zV2l0aFByb21pc2VzLnB1c2godGhpcyksdGhpcy5fZmluaXNoZWRQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2EodGhpcyl9LHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2Ioe3R5cGU6RE9NRXhjZXB0aW9uLkFCT1JUX0VSUixuYW1lOiJBYm9ydEVycm9yIn0pfX0uYmluZCh0aGlzKSksImZpbmlzaGVkIj09dGhpcy5wbGF5U3RhdGUmJnRoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2UoKSksdGhpcy5fZmluaXNoZWRQcm9taXNlKTooY29uc29sZS53YXJuKCJBbmltYXRpb24gUHJvbWlzZXMgcmVxdWlyZSBKYXZhU2NyaXB0IFByb21pc2UgY29uc3RydWN0b3IiKSxudWxsKX0sZ2V0IHJlYWR5KCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9yZWFkeVByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX3JlYWR5UHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCkpLHRoaXMuX3JlYWR5UHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCBvbmZpbmlzaCgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ub25maW5pc2h9LHNldCBvbmZpbmlzaChhKXt0aGlzLl9hbmltYXRpb24ub25maW5pc2g9ImZ1bmN0aW9uIj09dHlwZW9mIGE/ZnVuY3Rpb24oYil7Yi50YXJnZXQ9dGhpcyxhLmNhbGwodGhpcyxiKX0uYmluZCh0aGlzKTphfSxnZXQgb25jYW5jZWwoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsfSxzZXQgb25jYW5jZWwoYSl7dGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Z1bmN0aW9uKGIpe2IudGFyZ2V0PXRoaXMsYS5jYWxsKHRoaXMsYil9LmJpbmQodGhpcyk6YX0sZ2V0IGN1cnJlbnRUaW1lKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKTt2YXIgYT10aGlzLl9hbmltYXRpb24uY3VycmVudFRpbWU7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2VzKCksYX0sc2V0IGN1cnJlbnRUaW1lKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lPWlzRmluaXRlKGEpP2E6TWF0aC5zaWduKGEpKk51bWJlci5NQVhfVkFMVUUsdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYixjKXtiLmN1cnJlbnRUaW1lPWEtY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnN0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5zdGFydFRpbWU9aXNGaW5pdGUoYSk/YTpNYXRoLnNpZ24oYSkqTnVtYmVyLk1BWF9WQUxVRSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiLGMpe2Iuc3RhcnRUaW1lPWErY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBiPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZT1hLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiKXtiLnBsYXliYWNrUmF0ZT1hfSksbnVsbCE9PWImJih0aGlzLmN1cnJlbnRUaW1lPWIpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9hbmltYXRpb24ucGxheSgpLC0xPT10aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5pbmRleE9mKHRoaXMpJiZ0aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpLHRoaXMuX3JlZ2lzdGVyKCksYi5hd2FpdFN0YXJ0VGltZSh0aGlzKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7dmFyIGI9YS5jdXJyZW50VGltZTthLnBsYXkoKSxhLmN1cnJlbnRUaW1lPWJ9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5jdXJyZW50VGltZSYmKHRoaXMuX2hvbGRUaW1lPXRoaXMuY3VycmVudFRpbWUpLHRoaXMuX2FuaW1hdGlvbi5wYXVzZSgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe2EucGF1c2UoKX0pLHRoaXMuX3BhdXNlZD0hMCx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5maW5pc2goKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGE9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9hbmltYXRpb24ucmV2ZXJzZSgpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnJldmVyc2UoKX0pLG51bGwhPT1hJiYodGhpcy5jdXJyZW50VGltZT1hKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YjsiZnVuY3Rpb24iPT10eXBlb2YgYiYmKGM9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9dGhpcyxiLmNhbGwodGhpcyxhKX0uYmluZCh0aGlzKSxiLl93cmFwcGVyPWMpLHRoaXMuX2FuaW1hdGlvbi5hZGRFdmVudExpc3RlbmVyKGEsYyl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLl9hbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGImJmIuX3dyYXBwZXJ8fGIpfSxfcmVtb3ZlQ2hpbGRBbmltYXRpb25zOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9jaGlsZEFuaW1hdGlvbnMubGVuZ3RoOyl0aGlzLl9jaGlsZEFuaW1hdGlvbnMucG9wKCkuY2FuY2VsKCl9LF9mb3JFYWNoQ2hpbGQ6ZnVuY3Rpb24oYil7dmFyIGM9MDtpZih0aGlzLmVmZmVjdC5jaGlsZHJlbiYmdGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDx0aGlzLmVmZmVjdC5jaGlsZHJlbi5sZW5ndGgmJnRoaXMuX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9ucygpLHRoaXMuX2NoaWxkQW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IuY2FsbCh0aGlzLGEsYyksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihjKz1hLmVmZmVjdC5hY3RpdmVEdXJhdGlvbil9LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBkPXRoaXMuZWZmZWN0Ll90aW1pbmcsZT10aGlzLmN1cnJlbnRUaW1lO251bGwhPT1lJiYoZT1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZCksZSxkKSksKG51bGw9PWV8fGlzTmFOKGUpKSYmdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCl9fX0sd2luZG93LkFuaW1hdGlvbj1iLkFuaW1hdGlvbn0oYSxjKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChiKXt0aGlzLl9mcmFtZXM9YS5ub3JtYWxpemVLZXlmcmFtZXMoYil9ZnVuY3Rpb24gZSgpe2Zvcih2YXIgYT0hMTtpLmxlbmd0aDspaS5zaGlmdCgpLl91cGRhdGVDaGlsZHJlbigpLGE9ITA7cmV0dXJuIGF9dmFyIGY9ZnVuY3Rpb24oYSl7aWYoYS5fYW5pbWF0aW9uPXZvaWQgMCxhIGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0fHxhIGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KWZvcih2YXIgYj0wO2I8YS5jaGlsZHJlbi5sZW5ndGg7YisrKWYoYS5jaGlsZHJlbltiXSl9O2IucmVtb3ZlTXVsdGk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtkLl9wYXJlbnQ/KC0xPT1iLmluZGV4T2YoZC5fcGFyZW50KSYmYi5wdXNoKGQuX3BhcmVudCksZC5fcGFyZW50LmNoaWxkcmVuLnNwbGljZShkLl9wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkKSwxKSxkLl9wYXJlbnQ9bnVsbCxmKGQpKTpkLl9hbmltYXRpb24mJmQuX2FuaW1hdGlvbi5lZmZlY3Q9PWQmJihkLl9hbmltYXRpb24uY2FuY2VsKCksZC5fYW5pbWF0aW9uLmVmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSksZC5fYW5pbWF0aW9uLl9jYWxsYmFjayYmKGQuX2FuaW1hdGlvbi5fY2FsbGJhY2suX2FuaW1hdGlvbj1udWxsKSxkLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksZihkKSl9Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdLl9yZWJ1aWxkKCl9LGIuS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYixjLGUsZil7cmV0dXJuIHRoaXMudGFyZ2V0PWIsdGhpcy5fcGFyZW50PW51bGwsZT1hLm51bWVyaWNUaW1pbmdUb09iamVjdChlKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoZSksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoZSksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGUsITEsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhLmRlcHJlY2F0ZWQoIkN1c3RvbSBLZXlmcmFtZUVmZmVjdCIsIjIwMTUtMDYtMjIiLCJVc2UgS2V5ZnJhbWVFZmZlY3Qub25zYW1wbGUgaW5zdGVhZC4iKSx0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPWMpOnRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM9bmV3IGQoYyksdGhpcy5fa2V5ZnJhbWVzPWMsdGhpcy5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX3RpbWluZyksdGhpcy5faWQ9Zix0aGlzfSxiLktleWZyYW1lRWZmZWN0LnByb3RvdHlwZT17Z2V0RnJhbWVzOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM/dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lczp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLl9mcmFtZXN9LHNldCBvbnNhbXBsZShhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgb25zYW1wbGUgb24gY3VzdG9tIGVmZmVjdCBLZXlmcmFtZUVmZmVjdCBpcyBub3Qgc3VwcG9ydGVkLiIpO3RoaXMuX29uc2FtcGxlPWEsdGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxjbG9uZTpmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmdldEZyYW1lcygpKXRocm93IG5ldyBFcnJvcigiQ2xvbmluZyBjdXN0b20gZWZmZWN0cyBpcyBub3Qgc3VwcG9ydGVkLiIpO3ZhciBiPW5ldyBLZXlmcmFtZUVmZmVjdCh0aGlzLnRhcmdldCxbXSxhLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLHRoaXMuX2lkKTtyZXR1cm4gYi5fbm9ybWFsaXplZEtleWZyYW1lcz10aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLGIuX2tleWZyYW1lcz10aGlzLl9rZXlmcmFtZXMsYn0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX07dmFyIGc9RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTtFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGIudGltZWxpbmUuX3BsYXkobmV3IGIuS2V5ZnJhbWVFZmZlY3QodGhpcyxhLGMsZCkpfTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKTtiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1hLnRhcmdldHx8aCxjPWEuX2tleWZyYW1lczsiZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9W10pO3ZhciBkPWEuX3RpbWluZ0lucHV0O2QuaWQ9YS5faWR9ZWxzZSB2YXIgYj1oLGM9W10sZD0wO3JldHVybiBnLmFwcGx5KGIsW2MsZF0pfSxiLmJpbmRBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXthLmVmZmVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZWZmZWN0Ll9ub3JtYWxpemVkS2V5ZnJhbWVzJiZiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3QoYSl9O3ZhciBpPVtdO2IuYXdhaXRTdGFydFRpbWU9ZnVuY3Rpb24oYSl7bnVsbD09PWEuc3RhcnRUaW1lJiZhLl9pc0dyb3VwJiYoMD09aS5sZW5ndGgmJnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxpLnB1c2goYSkpfTt2YXIgaj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJnZXRDb21wdXRlZFN0eWxlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKTt2YXIgYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZSgpJiYoYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYX19KSx3aW5kb3cuS2V5ZnJhbWVFZmZlY3Q9Yi5LZXlmcmFtZUVmZmVjdCx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC50aW1lbGluZS5nZXRBbmltYXRpb25zKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09YS5lZmZlY3QmJmEuZWZmZWN0LnRhcmdldD09dGhpc30uYmluZCh0aGlzKSl9fShhLGMpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe2EuX3JlZ2lzdGVyZWR8fChhLl9yZWdpc3RlcmVkPSEwLGcucHVzaChhKSxofHwoaD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpKX1mdW5jdGlvbiBlKGEpe3ZhciBiPWc7Zz1bXSxiLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5fc2VxdWVuY2VOdW1iZXItYi5fc2VxdWVuY2VOdW1iZXJ9KSxiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe2EoKTt2YXIgYj1hLl9hbmltYXRpb24/YS5fYW5pbWF0aW9uLnBsYXlTdGF0ZToiaWRsZSI7cmV0dXJuInJ1bm5pbmciIT1iJiYicGVuZGluZyIhPWImJihhLl9yZWdpc3RlcmVkPSExKSxhLl9yZWdpc3RlcmVkfSksZy5wdXNoLmFwcGx5KGcsYiksZy5sZW5ndGg/KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKTpoPSExfXZhciBmPShkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKSwwKTtiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3Q9ZnVuY3Rpb24oYil7dmFyIGMsZT1iLmVmZmVjdC50YXJnZXQsZz0iZnVuY3Rpb24iPT10eXBlb2YgYi5lZmZlY3QuZ2V0RnJhbWVzKCk7Yz1nP2IuZWZmZWN0LmdldEZyYW1lcygpOmIuZWZmZWN0Ll9vbnNhbXBsZTt2YXIgaD1iLmVmZmVjdC50aW1pbmcsaT1udWxsO2g9YS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKTt2YXIgaj1mdW5jdGlvbigpe3ZhciBkPWouX2FuaW1hdGlvbj9qLl9hbmltYXRpb24uY3VycmVudFRpbWU6bnVsbDtudWxsIT09ZCYmKGQ9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGgpLGQsaCksaXNOYU4oZCkmJihkPW51bGwpKSxkIT09aSYmKGc/YyhkLGUsYi5lZmZlY3QpOmMoZCxiLmVmZmVjdCxiLmVmZmVjdC5fYW5pbWF0aW9uKSksaT1kfTtqLl9hbmltYXRpb249YixqLl9yZWdpc3RlcmVkPSExLGouX3NlcXVlbmNlTnVtYmVyPWYrKyxiLl9jYWxsYmFjaz1qLGQoail9O3ZhciBnPVtdLGg9ITE7Yi5BbmltYXRpb24ucHJvdG90eXBlLl9yZWdpc3Rlcj1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrJiZkKHRoaXMuX2NhbGxiYWNrKX19KGEsYyksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEuX3RpbWluZy5kZWxheSthLmFjdGl2ZUR1cmF0aW9uK2EuX3RpbWluZy5lbmREZWxheX1mdW5jdGlvbiBlKGIsYyxkKXt0aGlzLl9pZD1kLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49Ynx8W10sdGhpcy5fcmVwYXJlbnQodGhpcy5jaGlsZHJlbiksYz1hLm51bWVyaWNUaW1pbmdUb09iamVjdChjKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoYyksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYywhMCksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGMsITAsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJhdXRvIj09PXRoaXMuX3RpbWluZy5kdXJhdGlvbiYmKHRoaXMuX3RpbWluZy5kdXJhdGlvbj10aGlzLmFjdGl2ZUR1cmF0aW9uKX13aW5kb3cuU2VxdWVuY2VFZmZlY3Q9ZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sd2luZG93Lkdyb3VwRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlPXtfaXNBbmNlc3RvcjpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcztudWxsIT09Yjspe2lmKGI9PWEpcmV0dXJuITA7Yj1iLl9wYXJlbnR9cmV0dXJuITF9LF9yZWJ1aWxkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YTspImF1dG8iPT09YS50aW1pbmcuZHVyYXRpb24mJihhLl90aW1pbmcuZHVyYXRpb249YS5hY3RpdmVEdXJhdGlvbiksYT1hLl9wYXJlbnQ7dGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LF9yZXBhcmVudDpmdW5jdGlvbihhKXtiLnJlbW92ZU11bHRpKGEpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY10uX3BhcmVudD10aGlzfSxfcHV0Q2hpbGQ6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yj8iQ2Fubm90IGFwcGVuZCBhbiBhbmNlc3RvciBvciBzZWxmIjoiQ2Fubm90IHByZXBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKHRoaXMuX2lzQW5jZXN0b3IoYVtkXSkpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uSElFUkFSQ0hZX1JFUVVFU1RfRVJSLG5hbWU6IkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsbWVzc2FnZTpjfTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyliP3RoaXMuY2hpbGRyZW4ucHVzaChhW2RdKTp0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYVtkXSk7dGhpcy5fcmVwYXJlbnQoYSksdGhpcy5fcmVidWlsZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wdXRDaGlsZChhcmd1bWVudHMsITApfSxwcmVwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCExKX0sZ2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9LGdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bMF06bnVsbH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOm51bGx9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY2xvbmVUaW1pbmdJbnB1dCh0aGlzLl90aW1pbmdJbnB1dCksYz1bXSxkPTA7ZDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtkKyspYy5wdXNoKHRoaXMuY2hpbGRyZW5bZF0uY2xvbmUoKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHcm91cEVmZmVjdD9uZXcgR3JvdXBFZmZlY3QoYyxiKTpuZXcgU2VxdWVuY2VFZmZlY3QoYyxiKX0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX0sd2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YSs9ZChiKX0pLE1hdGgubWF4KGEsMCl9fSksd2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YT1NYXRoLm1heChhLGQoYikpfSksYX19KSxiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihjKXt2YXIgZCxlPW51bGwsZj1mdW5jdGlvbihiKXt2YXIgYz1kLl93cmFwcGVyO2lmKGMmJiJwZW5kaW5nIiE9Yy5wbGF5U3RhdGUmJmMuZWZmZWN0KXJldHVybiBudWxsPT1iP3ZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCk6MD09YiYmYy5wbGF5YmFja1JhdGU8MCYmKGV8fChlPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYy5lZmZlY3QudGltaW5nKSksYj1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZSksLTEsZSksaXNOYU4oYil8fG51bGw9PWIpPyhjLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5jdXJyZW50VGltZT0tMX0pLHZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCkpOnZvaWQgMH0sZz1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSxjLl90aW1pbmcsYy5faWQpO3JldHVybiBnLm9uc2FtcGxlPWYsZD1iLnRpbWVsaW5lLl9wbGF5KGcpfSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihhKXthLl9hbmltYXRpb24uX3dyYXBwZXI9YSxhLl9pc0dyb3VwPSEwLGIuYXdhaXRTdGFydFRpbWUoYSksYS5fY29uc3RydWN0Q2hpbGRBbmltYXRpb25zKCksYS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LGIuZ3JvdXBDaGlsZER1cmF0aW9uPWR9KGEsYyl9KCk7CgohKGZ1bmN0aW9uKCl7Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uCgogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuCgogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgKICAgIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWQogICAgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULAogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NCiAgICBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUgogICAgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCmZ1bmN0aW9uIHQodCxlLG4saSl7dmFyIHIsbz1hcmd1bWVudHMubGVuZ3RoLGE9bzwzP2U6bnVsbD09PWk/aT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbik6aTtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWE9UmVmbGVjdC5kZWNvcmF0ZSh0LGUsbixpKTtlbHNlIGZvcih2YXIgcz10Lmxlbmd0aC0xO3M+PTA7cy0tKShyPXRbc10pJiYoYT0obzwzP3IoYSk6bz4zP3IoZSxuLGEpOnIoZSxuKSl8fGEpO3JldHVybiBvPjMmJmEmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sYSksYX1mdW5jdGlvbiBlKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIG4odCxlLG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gYSh0KXt0cnl7bChpLm5leHQodCkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woaS50aHJvdyh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/cih0LnZhbHVlKTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKX0pKHQudmFsdWUpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9mdW5jdGlvbiBpKHQpe3JldHVybiBlPT57aWYodClpZihlLmhhc093blByb3BlcnR5KCJpcyIpKXtpZih0IT09ZS5pcyl0aHJvdyBuZXcgRXJyb3IoYGN1c3RvbSBlbGVtZW50IHRhZyBuYW1lcyBkbyBub3QgbWF0Y2g6ICgke3R9ICE9PSAke2UuaXN9KWApfWVsc2UgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImlzIix7dmFsdWU6dH0pO3dpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoZS5pcyxlKX19ZnVuY3Rpb24gcih0LGUsbil7dC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eSgicHJvcGVydGllcyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5jb25zdHJ1Y3RvciwicHJvcGVydGllcyIse3ZhbHVlOnt9fSksdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdPU9iamVjdC5hc3NpZ24oe30sdC5jb25zdHJ1Y3Rvci5wcm9wZXJ0aWVzW2VdLG4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuKGUsbik9PntyKGUsbix0KX19ZnVuY3Rpb24gYSguLi50KXtyZXR1cm4oZSxuKT0+e2UuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoIm9ic2VydmVycyIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5jb25zdHJ1Y3Rvciwib2JzZXJ2ZXJzIix7dmFsdWU6W119KSxlLmNvbnN0cnVjdG9yLm9ic2VydmVycy5wdXNoKGAke259KCR7dC5qb2luKCIsIil9KWApfX1mdW5jdGlvbiBzKHQsLi4uZSl7cmV0dXJuKG4saSxvKT0+e2NvbnN0IGE9YF9fY29tcHV0ZSR7aX1gO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGEse3ZhbHVlOm8uZ2V0fSksby5nZXQ9dm9pZCAwLHIobixpLHtjb21wdXRlZDpgJHthfSgke1t0LC4uLmVdLmpvaW4oIiwiKX0pYH0pfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi93aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT1mdW5jdGlvbih0LGUpe3JldHVybiB0fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IGwsYyx1PS8odXJsXCgpKFteKV0qKShcKSkvZyxoPS8oXlwvW15cL10pfCheIyl8KF5bXHctXGRdKjopLztmdW5jdGlvbiBkKHQsZSl7aWYodCYmaC50ZXN0KHQpKXJldHVybiB0O2lmKCIvLyI9PT10KXJldHVybiB0O2lmKHZvaWQgMD09PWwpe2w9ITE7dHJ5e2NvbnN0IHQ9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7dC5wYXRobmFtZT0iYyUyMGQiLGw9Imh0dHA6Ly9hL2MlMjBkIj09PXQuaHJlZn1jYXRjaCh0KXt9fWlmKGV8fChlPWRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxsKXRyeXtyZXR1cm4gbmV3IFVSTCh0LGUpLmhyZWZ9Y2F0Y2goZSl7cmV0dXJuIHR9cmV0dXJuIGN8fChjPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGVtcCIpLGMuYmFzZT1jLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxjLmhlYWQuYXBwZW5kQ2hpbGQoYy5iYXNlKSxjLmFuY2hvcj1jLmNyZWF0ZUVsZW1lbnQoImEiKSxjLmJvZHkuYXBwZW5kQ2hpbGQoYy5hbmNob3IpKSxjLmJhc2UuaHJlZj1lLGMuYW5jaG9yLmhyZWY9dCxjLmFuY2hvci5ocmVmfHx0fWZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gdC5yZXBsYWNlKHUsKGZ1bmN0aW9uKHQsbixpLHIpe3JldHVybiBuKyInIitkKGkucmVwbGFjZSgvWyInXS9nLCIiKSxlKSsiJyIrcn0pKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0LnN1YnN0cmluZygwLHQubGFzdEluZGV4T2YoIi8iKSsxKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBtPSF3aW5kb3cuU2hhZHlET018fCF3aW5kb3cuU2hhZHlET00uaW5Vc2U7Qm9vbGVhbighd2luZG93LlNoYWR5Q1NTfHx3aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzKTtjb25zdCBnPW0mJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZVN5bmMiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUmJigoKT0+e3RyeXtjb25zdCB0PW5ldyBDU1NTdHlsZVNoZWV0O3QucmVwbGFjZVN5bmMoIiIpO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHM9W3RdLGUuc2hhZG93Um9vdC5hZG9wdGVkU3R5bGVTaGVldHNbMF09PT10fWNhdGNoKHQpe3JldHVybiExfX0pKCk7bGV0IF89d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJvb3RQYXRofHxmKGRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKSx5PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zYW5pdGl6ZURPTVZhbHVlfHx2b2lkIDAsdj13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc2V0UGFzc2l2ZVRvdWNoR2VzdHVyZXN8fCExLGI9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5fHwhMSx4PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5hbGxvd1RlbXBsYXRlRnJvbURvbU1vZHVsZXx8ITEsdz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9uc3x8ITEsUz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5V2FybmluZ3N8fCExLE09d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN5bmNJbml0aWFsUmVuZGVyfHwhMSxFPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lVbmRlZmluZWR8fCExLFQ9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLm9yZGVyZWRDb21wdXRlZHx8ITEsQz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIucmVtb3ZlTmVzdGVkVGVtcGxhdGVzfHwhMSxBPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5mYXN0RG9tSWZ8fCExLGs9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnN1cHByZXNzVGVtcGxhdGVOb3RpZmljYXRpb25zfHwhMSxMPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lOb09ic2VydmVkQXR0cmlidXRlc3x8ITEsUD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIudXNlQWRvcHRlZFN0eWxlU2hlZXRzV2l0aEJ1aWx0Q1NTfHwhMSxOPTA7Y29uc3QgST1mdW5jdGlvbih0KXtsZXQgZT10Ll9fbWl4aW5BcHBsaWNhdGlvbnM7ZXx8KGU9bmV3IFdlYWtNYXAsdC5fX21peGluQXBwbGljYXRpb25zPWUpO2xldCBuPU4rKztyZXR1cm4gZnVuY3Rpb24gaShyKXtsZXQgbz1yLl9fbWl4aW5TZXQ7aWYobyYmb1tuXSlyZXR1cm4gcjtsZXQgYT1lLHM9YS5nZXQocik7aWYoIXMpe3M9dChyKSxhLnNldChyLHMpO2xldCBlPU9iamVjdC5jcmVhdGUocy5fX21peGluU2V0fHxvfHxudWxsKTtlW25dPSEwLHMuX19taXhpblNldD1lfXJldHVybiBzfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IFI9e30sTz17fTtmdW5jdGlvbiB6KHQsZSl7Ult0XT1PW3QudG9Mb3dlckNhc2UoKV09ZX1mdW5jdGlvbiBEKHQpe3JldHVybiBSW3RdfHxPW3QudG9Mb3dlckNhc2UoKV19Y2xhc3MgQiBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuWyJpZCJdfXN0YXRpYyBpbXBvcnQodCxlKXtpZih0KXtsZXQgbj1EKHQpO3JldHVybiBuJiZlP24ucXVlcnlTZWxlY3RvcihlKTpufXJldHVybiBudWxsfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5yZWdpc3RlcigpfWdldCBhc3NldHBhdGgoKXtpZighdGhpcy5fX2Fzc2V0cGF0aCl7Y29uc3QgdD13aW5kb3cuSFRNTEltcG9ydHMmJkhUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQ/SFRNTEltcG9ydHMuaW1wb3J0Rm9yRWxlbWVudCh0aGlzKXx8ZG9jdW1lbnQ6dGhpcy5vd25lckRvY3VtZW50LGU9ZCh0aGlzLmdldEF0dHJpYnV0ZSgiYXNzZXRwYXRoIil8fCIiLHQuYmFzZVVSSSk7dGhpcy5fX2Fzc2V0cGF0aD1mKGUpfXJldHVybiB0aGlzLl9fYXNzZXRwYXRofXJlZ2lzdGVyKHQpe2lmKHQ9dHx8dGhpcy5pZCl7aWYoYiYmdm9pZCAwIT09RCh0KSl0aHJvdyB6KHQsbnVsbCksbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLW1vZHVsZSAke3R9IHJlLXJlZ2lzdGVyZWRgKTt0aGlzLmlkPXQseih0LHRoaXMpLChmdW5jdGlvbiBlKHQpe3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKSYmY29uc29sZS53YXJuKCJkb20tbW9kdWxlICVzIGhhcyBzdHlsZSBvdXRzaWRlIHRlbXBsYXRlIix0LmlkKX0pKHRoaXMpfX19Qi5wcm90b3R5cGUubW9kdWxlcz1SLGN1c3RvbUVsZW1lbnRzLmRlZmluZSgiZG9tLW1vZHVsZSIsQik7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEg9InNoYWR5LXVuc2NvcGVkIjtmdW5jdGlvbiBGKHQpe3JldHVybiBCLmltcG9ydCh0KX1mdW5jdGlvbiBWKHQpe2NvbnN0IGU9cCgodC5ib2R5P3QuYm9keTp0KS50ZXh0Q29udGVudCx0LmJhc2VVUkkpLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gbi50ZXh0Q29udGVudD1lLG59ZnVuY3Rpb24gVSh0KXtjb25zdCBlPXQudHJpbSgpLnNwbGl0KC9ccysvKSxuPVtdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4ucHVzaCguLi5qKGVbdF0pKTtyZXR1cm4gbn1mdW5jdGlvbiBqKHQpe2NvbnN0IGU9Rih0KTtpZighZSlyZXR1cm4gY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksW107aWYodm9pZCAwPT09ZS5fc3R5bGVzKXtjb25zdCB0PVtdO3QucHVzaCguLi5XKGUpKTtjb25zdCBuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiZ0LnB1c2goLi4uRyhuLGUuYXNzZXRwYXRoKSksZS5fc3R5bGVzPXR9cmV0dXJuIGUuX3N0eWxlc31mdW5jdGlvbiBHKHQsZSl7aWYoIXQuX3N0eWxlcyl7Y29uc3Qgbj1bXSxpPXQuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgcj1pW3RdLG89ci5nZXRBdHRyaWJ1dGUoImluY2x1ZGUiKTtvJiZuLnB1c2goLi4uVShvKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5pbmRleE9mKHQpPT09ZX0pKSksZSYmKHIudGV4dENvbnRlbnQ9cChyLnRleHRDb250ZW50LGUpKSxuLnB1c2gocil9dC5fc3R5bGVzPW59cmV0dXJuIHQuX3N0eWxlc31mdW5jdGlvbiBXKHQpe2NvbnN0IGU9W10sbj10LnF1ZXJ5U2VsZWN0b3JBbGwoImxpbmtbcmVsPWltcG9ydF1bdHlwZX49Y3NzXSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgaT1uW3RdO2lmKGkuaW1wb3J0KXtjb25zdCB0PWkuaW1wb3J0LG49aS5oYXNBdHRyaWJ1dGUoSCk7aWYobiYmIXQuX3Vuc2NvcGVkU3R5bGUpe2NvbnN0IGU9Vih0KTtlLnNldEF0dHJpYnV0ZShILCIiKSx0Ll91bnNjb3BlZFN0eWxlPWV9ZWxzZSB0Ll9zdHlsZXx8KHQuX3N0eWxlPVYodCkpO2UucHVzaChuP3QuX3Vuc2NvcGVkU3R5bGU6dC5fc3R5bGUpfX1yZXR1cm4gZX1mdW5jdGlvbiBxKHQpe2xldCBlPUYodCk7aWYoZSYmdm9pZCAwPT09ZS5fY3NzVGV4dCl7bGV0IHQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9IiIsbj1XKHQpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWUrPW5bdF0udGV4dENvbnRlbnQ7cmV0dXJuIGV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKShlKSxuPWUucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtuJiYodCs9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj0iIjtjb25zdCBpPUcodCxlKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IGU9aVt0XTtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxuKz1lLnRleHRDb250ZW50fXJldHVybiBufSkobixlLmFzc2V0cGF0aCkpLGUuX2Nzc1RleHQ9dHx8bnVsbH1yZXR1cm4gZXx8Y29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsdCksZSYmZS5fY3NzVGV4dHx8IiJ9Y29uc3QgWT13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoJiZ3aW5kb3cuU2hhZHlET00ud3JhcD93aW5kb3cuU2hhZHlET00ud3JhcDp3aW5kb3cuU2hhZHlET00/dD0+U2hhZHlET00ucGF0Y2godCk6dD0+dDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBYKHQpe3JldHVybiB0LmluZGV4T2YoIi4iKT49MH1mdW5jdGlvbiAkKHQpe2xldCBlPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09ZT90OnQuc2xpY2UoMCxlKX1mdW5jdGlvbiBLKHQsZSl7cmV0dXJuIDA9PT10LmluZGV4T2YoZSsiLiIpfWZ1bmN0aW9uIFoodCxlKXtyZXR1cm4gMD09PWUuaW5kZXhPZih0KyIuIil9ZnVuY3Rpb24gSih0LGUsbil7cmV0dXJuIGUrbi5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUSh0LGUpe3JldHVybiB0PT09ZXx8Syh0LGUpfHxaKHQsZSl9ZnVuY3Rpb24gdHQodCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl0udG9TdHJpbmcoKS5zcGxpdCgiLiIpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWUucHVzaChpW3RdKX1yZXR1cm4gZS5qb2luKCIuIil9cmV0dXJuIHR9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dHQodCkuc3BsaXQoIi4iKTp0LnRvU3RyaW5nKCkuc3BsaXQoIi4iKX1mdW5jdGlvbiBudCh0LGUsbil7bGV0IGk9dCxyPWV0KGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtpZighaSlyZXR1cm47aT1pW3JbdF1dfXJldHVybiBuJiYobi5wYXRoPXIuam9pbigiLiIpKSxpfWZ1bmN0aW9uIGl0KHQsZSxuKXtsZXQgaT10LHI9ZXQoZSksbz1yW3IubGVuZ3RoLTFdO2lmKHIubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGgtMTt0KyspaWYoaT1pW3JbdF1dLCFpKXJldHVybjtpW29dPW59ZWxzZSBpW2VdPW47cmV0dXJuIHIuam9pbigiLiIpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IHJ0PXt9LG90PS8tW2Etel0vZyxhdD0vKFtBLVpdKS9nO2Z1bmN0aW9uIHN0KHQpe3JldHVybiBydFt0XXx8KHJ0W3RdPXQuaW5kZXhPZigiLSIpPDA/dDp0LnJlcGxhY2Uob3QsKHQ9PnRbMV0udG9VcHBlckNhc2UoKSkpKX1mdW5jdGlvbiBsdCh0KXtyZXR1cm4gcnRbdF18fChydFt0XT10LnJlcGxhY2UoYXQsIi0kMSIpLnRvTG93ZXJDYXNlKCkpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBjdD0wLHV0PTAsaHQ9W10sZHQ9MCxwdD0hMSxmdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7bmV3IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbiBtdCgpe3B0PSExO2NvbnN0IHQ9aHQubGVuZ3RoO2ZvcihsZXQgZT0wO2U8dDtlKyspe2xldCB0PWh0W2VdO2lmKHQpdHJ5e3QoKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fWh0LnNwbGljZSgwLHQpLHV0Kz10fSkpLm9ic2VydmUoZnQse2NoYXJhY3RlckRhdGE6ITB9KTtjb25zdCBndD17YWZ0ZXI6dD0+KHtydW46ZT0+d2luZG93LnNldFRpbWVvdXQoZSx0KSxjYW5jZWwodCl7d2luZG93LmNsZWFyVGltZW91dCh0KX19KSxydW46KHQsZSk9PndpbmRvdy5zZXRUaW1lb3V0KHQsZSksY2FuY2VsKHQpe3dpbmRvdy5jbGVhclRpbWVvdXQodCl9fSxfdD17cnVuOnQ9PndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCksY2FuY2VsKHQpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0KX19LHl0PXtydW46dD0+d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2s/d2luZG93LnJlcXVlc3RJZGxlQ2FsbGJhY2sodCk6d2luZG93LnNldFRpbWVvdXQodCwxNiksY2FuY2VsKHQpe3dpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2s/d2luZG93LmNhbmNlbElkbGVDYWxsYmFjayh0KTp3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX0sdnQ9e3J1bjp0PT4ocHR8fChwdD0hMCxmdC50ZXh0Q29udGVudD1kdCsrKSxodC5wdXNoKHQpLGN0KyspLGNhbmNlbCh0KXtjb25zdCBlPXQtdXQ7aWYoZT49MCl7aWYoIWh0W2VdKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBhc3luYyBoYW5kbGU6ICIrdCk7aHRbZV09bnVsbH19fSxidD12dCx4dD1JKCh0PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXModCl7Y29uc3QgZT10aGlzLnByb3RvdHlwZTtmb3IobGV0IG4gaW4gdCluIGluIGV8fGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Iobil9c3RhdGljIGF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpfXN0YXRpYyB0eXBlRm9yUHJvcGVydHkodCl7fV9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl7dGhpcy5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcCh0KSx0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YUhhc0FjY2Vzc29yIix0aGlzKSl8fCh0aGlzLl9fZGF0YUhhc0FjY2Vzc29yPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fX2RhdGFIYXNBY2Nlc3NvcikpLHRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF18fCh0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdPSEwLHRoaXMuX2RlZmluZVByb3BlcnR5QWNjZXNzb3IodCxlKSl9X2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAodCl7dGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFBdHRyaWJ1dGVzIix0aGlzKSl8fCh0aGlzLl9fZGF0YUF0dHJpYnV0ZXM9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9fZGF0YUF0dHJpYnV0ZXMpKTtsZXQgZT10aGlzLl9fZGF0YUF0dHJpYnV0ZXNbdF07cmV0dXJuIGV8fChlPXRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpLHRoaXMuX19kYXRhQXR0cmlidXRlc1tlXT10KSxlfV9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7Z2V0KCl7cmV0dXJuIHRoaXMuX19kYXRhW3RdfSxzZXQ6ZT9mdW5jdGlvbigpe306ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9fSl9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19kYXRhRW5hYmxlZD0hMSx0aGlzLl9fZGF0YVJlYWR5PSExLHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9fZGF0YT17fSx0aGlzLl9fZGF0YVBlbmRpbmc9bnVsbCx0aGlzLl9fZGF0YU9sZD1udWxsLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz1udWxsLHRoaXMuX19kYXRhQ291bnRlcj0wLHRoaXMuX19zZXJpYWxpemluZz0hMSx0aGlzLl9pbml0aWFsaXplUHJvcGVydGllcygpfXJlYWR5KCl7dGhpcy5fX2RhdGFSZWFkeT0hMCx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtmb3IobGV0IHQgaW4gdGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcil0aGlzLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzPXRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc3x8e30sdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzW3RdPXRoaXNbdF0sZGVsZXRlIHRoaXNbdF0pfV9pbml0aWFsaXplSW5zdGFuY2VQcm9wZXJ0aWVzKHQpe09iamVjdC5hc3NpZ24odGhpcyx0KX1fc2V0UHJvcGVydHkodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1fZ2V0UHJvcGVydHkodCl7cmV0dXJuIHRoaXMuX19kYXRhW3RdfV9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pe2xldCBpPXRoaXMuX19kYXRhW3RdLHI9dGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLGkpO3JldHVybiByJiYodGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSx0aGlzLl9fZGF0YU9sZCYmISh0IGluIHRoaXMuX19kYXRhT2xkKSYmKHRoaXMuX19kYXRhT2xkW3RdPWkpLHRoaXMuX19kYXRhW3RdPWUsdGhpcy5fX2RhdGFQZW5kaW5nW3RdPWUpLHJ9X2lzUHJvcGVydHlQZW5kaW5nKHQpe3JldHVybiEoIXRoaXMuX19kYXRhUGVuZGluZ3x8IXRoaXMuX19kYXRhUGVuZGluZy5oYXNPd25Qcm9wZXJ0eSh0KSl9X2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl7IXRoaXMuX19kYXRhSW52YWxpZCYmdGhpcy5fX2RhdGFSZWFkeSYmKHRoaXMuX19kYXRhSW52YWxpZD0hMCxidC5ydW4oKCgpPT57dGhpcy5fX2RhdGFJbnZhbGlkJiYodGhpcy5fX2RhdGFJbnZhbGlkPSExLHRoaXMuX2ZsdXNoUHJvcGVydGllcygpKX0pKSl9X2VuYWJsZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YUVuYWJsZWR8fCh0aGlzLl9fZGF0YUVuYWJsZWQ9ITAsdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzJiYodGhpcy5faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHMpLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz1udWxsKSx0aGlzLnJlYWR5KCkpfV9mbHVzaFByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YUNvdW50ZXIrKztjb25zdCB0PXRoaXMuX19kYXRhLGU9dGhpcy5fX2RhdGFQZW5kaW5nLG49dGhpcy5fX2RhdGFPbGQ7dGhpcy5fc2hvdWxkUHJvcGVydGllc0NoYW5nZSh0LGUsbikmJih0aGlzLl9fZGF0YVBlbmRpbmc9bnVsbCx0aGlzLl9fZGF0YU9sZD1udWxsLHRoaXMuX3Byb3BlcnRpZXNDaGFuZ2VkKHQsZSxuKSksdGhpcy5fX2RhdGFDb3VudGVyLS19X3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UodCxlLG4pe3JldHVybiBCb29sZWFuKGUpfV9wcm9wZXJ0aWVzQ2hhbmdlZCh0LGUsbil7fV9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbil7cmV0dXJuIG4hPT1lJiYobj09bnx8ZT09ZSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpe2UhPT1uJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsbiksc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJiZzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl9X2F0dHJpYnV0ZVRvUHJvcGVydHkodCxlLG4pe2lmKCF0aGlzLl9fc2VyaWFsaXppbmcpe2NvbnN0IGk9dGhpcy5fX2RhdGFBdHRyaWJ1dGVzLHI9aSYmaVt0XXx8dDt0aGlzW3JdPXRoaXMuX2Rlc2VyaWFsaXplVmFsdWUoZSxufHx0aGlzLmNvbnN0cnVjdG9yLnR5cGVGb3JQcm9wZXJ0eShyKSl9fV9wcm9wZXJ0eVRvQXR0cmlidXRlKHQsZSxuKXt0aGlzLl9fc2VyaWFsaXppbmc9ITAsdGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUodGhpcyxuPWFyZ3VtZW50cy5sZW5ndGg8Mz90aGlzW3RdOm4sZXx8dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCkpLHRoaXMuX19zZXJpYWxpemluZz0hMX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUodCxlLG4pe2NvbnN0IGk9dGhpcy5fc2VyaWFsaXplVmFsdWUoZSk7ImNsYXNzIiE9PW4mJiJuYW1lIiE9PW4mJiJzbG90IiE9PW58fCh0PVkodCkpLHZvaWQgMD09PWk/dC5yZW1vdmVBdHRyaWJ1dGUobik6dC5zZXRBdHRyaWJ1dGUobixpKX1fc2VyaWFsaXplVmFsdWUodCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlImJvb2xlYW4iOnJldHVybiB0PyIiOnZvaWQgMDtkZWZhdWx0OnJldHVybiBudWxsIT10P3QudG9TdHJpbmcoKTp2b2lkIDB9fV9kZXNlcmlhbGl6ZVZhbHVlKHQsZSl7c3dpdGNoKGUpe2Nhc2UgQm9vbGVhbjpyZXR1cm4gbnVsbCE9PXQ7Y2FzZSBOdW1iZXI6cmV0dXJuIE51bWJlcih0KTtkZWZhdWx0OnJldHVybiB0fX19KSksd3Q9e307bGV0IFN0PUhUTUxFbGVtZW50LnByb3RvdHlwZTtmb3IoO1N0Oyl7bGV0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3QpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXd0W3RbZV1dPSEwO1N0PU9iamVjdC5nZXRQcm90b3R5cGVPZihTdCl9Y29uc3QgTXQ9SSgodD0+e2NvbnN0IGU9eHQodCk7cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgY3JlYXRlUHJvcGVydGllc0ZvckF0dHJpYnV0ZXMoKXtsZXQgdD10aGlzLm9ic2VydmVkQXR0cmlidXRlcztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLnByb3RvdHlwZS5fY3JlYXRlUHJvcGVydHlBY2Nlc3NvcihzdCh0W2VdKSl9c3RhdGljIGF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KXtyZXR1cm4gbHQodCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFQcm90byYmKHRoaXMuX2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModGhpcy5fX2RhdGFQcm90byksdGhpcy5fX2RhdGFQcm90bz1udWxsKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1faW5pdGlhbGl6ZVByb3RvUHJvcGVydGllcyh0KXtmb3IobGV0IGUgaW4gdCl0aGlzLl9zZXRQcm9wZXJ0eShlLHRbZV0pfV9lbnN1cmVBdHRyaWJ1dGUodCxlKXt0aGlzLmhhc0F0dHJpYnV0ZSh0KXx8dGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUodGhpcyxlLHQpfV9zZXJpYWxpemVWYWx1ZSh0KXtzd2l0Y2godHlwZW9mIHQpe2Nhc2Uib2JqZWN0IjppZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gdC50b1N0cmluZygpO2lmKHQpdHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1jYXRjaCh0KXtyZXR1cm4iIn1kZWZhdWx0OnJldHVybiBzdXBlci5fc2VyaWFsaXplVmFsdWUodCl9fV9kZXNlcmlhbGl6ZVZhbHVlKHQsZSl7bGV0IG47c3dpdGNoKGUpe2Nhc2UgT2JqZWN0OnRyeXtuPUpTT04ucGFyc2UodCl9Y2F0Y2goZSl7bj10fWJyZWFrO2Nhc2UgQXJyYXk6dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaChlKXtuPW51bGwsY29uc29sZS53YXJuKGBQb2x5bWVyOjpBdHRyaWJ1dGVzOiBjb3VsZG4ndCBkZWNvZGUgQXJyYXkgYXMgSlNPTjogJHt0fWApfWJyZWFrO2Nhc2UgRGF0ZTpuPWlzTmFOKHQpP1N0cmluZyh0KTpOdW1iZXIodCksbj1uZXcgRGF0ZShuKTticmVhaztkZWZhdWx0Om49c3VwZXIuX2Rlc2VyaWFsaXplVmFsdWUodCxlKX1yZXR1cm4gbn1fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpeyEoZnVuY3Rpb24gbih0LGUpe2lmKCF3dFtlXSl7bGV0IG49dFtlXTt2b2lkIDAhPT1uJiYodC5fX2RhdGE/dC5fc2V0UGVuZGluZ1Byb3BlcnR5KGUsbik6KHQuX19kYXRhUHJvdG8/dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFQcm90byIsdCkpfHwodC5fX2RhdGFQcm90bz1PYmplY3QuY3JlYXRlKHQuX19kYXRhUHJvdG8pKTp0Ll9fZGF0YVByb3RvPXt9LHQuX19kYXRhUHJvdG9bZV09bikpfX0pKHRoaXMsdCksc3VwZXIuX2RlZmluZVByb3BlcnR5QWNjZXNzb3IodCxlKX1faGFzQWNjZXNzb3IodCl7cmV0dXJuIHRoaXMuX19kYXRhSGFzQWNjZXNzb3ImJnRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF19X2lzUHJvcGVydHlQZW5kaW5nKHQpe3JldHVybiBCb29sZWFuKHRoaXMuX19kYXRhUGVuZGluZyYmdCBpbiB0aGlzLl9fZGF0YVBlbmRpbmcpfX19KSksRXQ9eyJkb20taWYiOiEwLCJkb20tcmVwZWF0IjohMH07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IFR0PSExLEN0PSExO2Z1bmN0aW9uIEF0KHQpe2xldCBlPXQuZ2V0QXR0cmlidXRlKCJpcyIpO2lmKGUmJkV0W2VdKXtsZXQgbj10O2ZvcihuLnJlbW92ZUF0dHJpYnV0ZSgiaXMiKSx0PW4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpLG4ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodCxuKSx0LmFwcGVuZENoaWxkKG4pO24uYXR0cmlidXRlcy5sZW5ndGg7KXQuc2V0QXR0cmlidXRlKG4uYXR0cmlidXRlc1swXS5uYW1lLG4uYXR0cmlidXRlc1swXS52YWx1ZSksbi5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVzWzBdLm5hbWUpfXJldHVybiB0fWZ1bmN0aW9uIGt0KHQsZSl7bGV0IG49ZS5wYXJlbnRJbmZvJiZrdCh0LGUucGFyZW50SW5mbyk7aWYoIW4pcmV0dXJuIHQ7Zm9yKGxldCB0PW4uZmlyc3RDaGlsZCxpPTA7dDt0PXQubmV4dFNpYmxpbmcpaWYoZS5wYXJlbnRJbmRleD09PWkrKylyZXR1cm4gdH1mdW5jdGlvbiBMdCh0LGUsbixpKXtpLmlkJiYoZVtpLmlkXT1uKX1mdW5jdGlvbiBQdCh0LGUsbil7aWYobi5ldmVudHMmJm4uZXZlbnRzLmxlbmd0aClmb3IobGV0IGkscj0wLG89bi5ldmVudHM7cjxvLmxlbmd0aCYmKGk9b1tyXSk7cisrKXQuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUoZSxpLm5hbWUsaS52YWx1ZSx0KX1mdW5jdGlvbiBOdCh0LGUsbixpKXtuLnRlbXBsYXRlSW5mbyYmKGUuX3RlbXBsYXRlSW5mbz1uLnRlbXBsYXRlSW5mbyxlLl9wYXJlbnRUZW1wbGF0ZUluZm89aSl9Y29uc3QgSXQ9SSgodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBfcGFyc2VUZW1wbGF0ZSh0LGUpe2lmKCF0Ll90ZW1wbGF0ZUluZm8pe2xldCBuPXQuX3RlbXBsYXRlSW5mbz17fTtuLm5vZGVJbmZvTGlzdD1bXSxuLm5lc3RlZFRlbXBsYXRlPUJvb2xlYW4oZSksbi5zdHJpcFdoaXRlU3BhY2U9ZSYmZS5zdHJpcFdoaXRlU3BhY2V8fHQuaGFzQXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiksdGhpcy5fcGFyc2VUZW1wbGF0ZUNvbnRlbnQodCxuLHtwYXJlbnQ6bnVsbH0pfXJldHVybiB0Ll90ZW1wbGF0ZUluZm99c3RhdGljIF9wYXJzZVRlbXBsYXRlQ29udGVudCh0LGUsbil7cmV0dXJuIHRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHQuY29udGVudCxlLG4pfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGUodCxlLG4pe2xldCBpPSExLHI9dDtyZXR1cm4idGVtcGxhdGUiIT1yLmxvY2FsTmFtZXx8ci5oYXNBdHRyaWJ1dGUoInByZXNlcnZlLWNvbnRlbnQiKT8ic2xvdCI9PT1yLmxvY2FsTmFtZSYmKGUuaGFzSW5zZXJ0aW9uUG9pbnQ9ITApOmk9dGhpcy5fcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHIsZSxuKXx8aSwoZnVuY3Rpb24gbyh0KXsoZnVuY3Rpb24gZSgpe2lmKCFUdCl7VHQ9ITA7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpO3QucGxhY2Vob2xkZXI9ImEiLEN0PXQucGxhY2Vob2xkZXI9PT10LnRleHRDb250ZW50fXJldHVybiBDdH0pKCkmJiJ0ZXh0YXJlYSI9PT10LmxvY2FsTmFtZSYmdC5wbGFjZWhvbGRlciYmdC5wbGFjZWhvbGRlcj09PXQudGV4dENvbnRlbnQmJih0LnRleHRDb250ZW50PW51bGwpfSkociksci5maXJzdENoaWxkJiZ0aGlzLl9wYXJzZVRlbXBsYXRlQ2hpbGROb2RlcyhyLGUsbiksci5oYXNBdHRyaWJ1dGVzJiZyLmhhc0F0dHJpYnV0ZXMoKSYmKGk9dGhpcy5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHIsZSxuKXx8aSksaXx8bi5ub3RlZH1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKHQsZSxuKXtpZigic2NyaXB0IiE9PXQubG9jYWxOYW1lJiYic3R5bGUiIT09dC5sb2NhbE5hbWUpZm9yKGxldCBpLHI9dC5maXJzdENoaWxkLG89MDtyO3I9aSl7aWYoInRlbXBsYXRlIj09ci5sb2NhbE5hbWUmJihyPUF0KHIpKSxpPXIubmV4dFNpYmxpbmcsci5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgbj1pO2Zvcig7biYmbi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFOylyLnRleHRDb250ZW50Kz1uLnRleHRDb250ZW50LGk9bi5uZXh0U2libGluZyx0LnJlbW92ZUNoaWxkKG4pLG49aTtpZihlLnN0cmlwV2hpdGVTcGFjZSYmIXIudGV4dENvbnRlbnQudHJpbSgpKXt0LnJlbW92ZUNoaWxkKHIpO2NvbnRpbnVlfX1sZXQgYT17cGFyZW50SW5kZXg6byxwYXJlbnRJbmZvOm59O3RoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHIsZSxhKSYmKGEuaW5mb0luZGV4PWUubm9kZUluZm9MaXN0LnB1c2goYSktMSksci5wYXJlbnROb2RlJiZvKyt9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHQsZSxuKXtsZXQgaT10LHI9dGhpcy5fcGFyc2VUZW1wbGF0ZShpLGUpO3JldHVybihyLmNvbnRlbnQ9aS5jb250ZW50Lm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKS5hcHBlbmRDaGlsZChpLmNvbnRlbnQpLG4udGVtcGxhdGVJbmZvPXIsITB9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZXModCxlLG4pe2xldCBpPSExLHI9QXJyYXkuZnJvbSh0LmF0dHJpYnV0ZXMpO2ZvcihsZXQgbyxhPXIubGVuZ3RoLTE7bz1yW2FdO2EtLSlpPXRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLG8ubmFtZSxvLnZhbHVlKXx8aTtyZXR1cm4gaX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsZSxuLGkscil7cmV0dXJuIm9uLSI9PT1pLnNsaWNlKDAsMyk/KHQucmVtb3ZlQXR0cmlidXRlKGkpLG4uZXZlbnRzPW4uZXZlbnRzfHxbXSxuLmV2ZW50cy5wdXNoKHtuYW1lOmkuc2xpY2UoMyksdmFsdWU6cn0pLCEwKToiaWQiPT09aSYmKG4uaWQ9ciwhMCl9c3RhdGljIF9jb250ZW50Rm9yVGVtcGxhdGUodCl7bGV0IGU9dC5fdGVtcGxhdGVJbmZvO3JldHVybiBlJiZlLmNvbnRlbnR8fHQuY29udGVudH1fc3RhbXBUZW1wbGF0ZSh0LGUpe3QmJiF0LmNvbnRlbnQmJndpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50JiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlJiZIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKHQpO2xldCBuPShlPWV8fHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodCkpLm5vZGVJbmZvTGlzdCxpPWRvY3VtZW50LmltcG9ydE5vZGUoZS5jb250ZW50fHx0LmNvbnRlbnQsITApO2kuX19ub0luc2VydGlvblBvaW50PSFlLmhhc0luc2VydGlvblBvaW50O2xldCByPWkubm9kZUxpc3Q9bmV3IEFycmF5KG4ubGVuZ3RoKTtpLiQ9e307Zm9yKGxldCB0LG89MCxhPW4ubGVuZ3RoO288YSYmKHQ9bltvXSk7bysrKXtsZXQgbj1yW29dPWt0KGksdCk7THQoMCxpLiQsbix0KSxOdCgwLG4sdCxlKSxQdCh0aGlzLG4sdCl9cmV0dXJuIGk9aSxpfV9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuLGkpe2xldCByPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdD10Ll9tZXRob2RIb3N0fHx0LGZ1bmN0aW9uKGUpe3Rbbl0/dFtuXShlLGUuZGV0YWlsKTpjb25zb2xlLndhcm4oImxpc3RlbmVyIG1ldGhvZCBgIituKyJgIG5vdCBkZWZpbmVkIil9fSkoaT1pfHx0LDAsbik7cmV0dXJuIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLHIpLHJ9X2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pfV9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG4pe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfX0pKTsKLyoqCiAgICAgKiBAZmlsZW92ZXJ2aWV3CiAgICAgKiBAc3VwcHJlc3Mge2NoZWNrUHJvdG90eXBhbFR5cGVzfQogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICAgICAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICAgICAqIGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkKICAgICAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICAgICAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2xldCBSdD0wO2NvbnN0IE90PVtdLHp0PXtDT01QVVRFOiJfX2NvbXB1dGVFZmZlY3RzIixSRUZMRUNUOiJfX3JlZmxlY3RFZmZlY3RzIixOT1RJRlk6Il9fbm90aWZ5RWZmZWN0cyIsUFJPUEFHQVRFOiJfX3Byb3BhZ2F0ZUVmZmVjdHMiLE9CU0VSVkU6Il9fb2JzZXJ2ZUVmZmVjdHMiLFJFQURfT05MWToiX19yZWFkT25seSJ9LER0PS9bQS1aXS87ZnVuY3Rpb24gQnQodCxlLG4pe2xldCBpPXRbZV07aWYoaSl7aWYoIXQuaGFzT3duUHJvcGVydHkoZSkmJihpPXRbZV09T2JqZWN0LmNyZWF0ZSh0W2VdKSxuKSlmb3IobGV0IHQgaW4gaSl7bGV0IGU9aVt0XSxuPWlbdF09QXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XX19ZWxzZSBpPXRbZV09e307cmV0dXJuIGl9ZnVuY3Rpb24gSHQodCxlLG4saSxyLG8pe2lmKGUpe2xldCBhPSExO2NvbnN0IHM9UnQrKztmb3IobGV0IGwgaW4gbil7bGV0IGM9ZVtyPyQobCk6bF07aWYoYylmb3IobGV0IGUsdT0wLGg9Yy5sZW5ndGg7dTxoJiYoZT1jW3VdKTt1KyspZS5pbmZvJiZlLmluZm8ubGFzdFJ1bj09PXN8fHImJiFWdChsLGUudHJpZ2dlcil8fChlLmluZm8mJihlLmluZm8ubGFzdFJ1bj1zKSxlLmZuKHQsbCxuLGksZS5pbmZvLHIsbyksYT0hMCl9cmV0dXJuIGF9cmV0dXJuITF9ZnVuY3Rpb24gRnQodCxlLG4saSxyLG8sYSxzKXtsZXQgbD0hMSxjPWVbYT8kKGkpOmldO2lmKGMpZm9yKGxldCBlLHU9MCxoPWMubGVuZ3RoO3U8aCYmKGU9Y1t1XSk7dSsrKWUuaW5mbyYmZS5pbmZvLmxhc3RSdW49PT1ufHxhJiYhVnQoaSxlLnRyaWdnZXIpfHwoZS5pbmZvJiYoZS5pbmZvLmxhc3RSdW49biksZS5mbih0LGkscixvLGUuaW5mbyxhLHMpLGw9ITApO3JldHVybiBsfWZ1bmN0aW9uIFZ0KHQsZSl7aWYoZSl7bGV0IG49ZS5uYW1lO3JldHVybiBuPT10fHwhKCFlLnN0cnVjdHVyZWR8fCFLKG4sdCkpfHwhKCFlLndpbGRjYXJkfHwhWihuLHQpKX1yZXR1cm4hMH1mdW5jdGlvbiBVdCh0LGUsbixpLHIpe2xldCBvPSJzdHJpbmciPT10eXBlb2Ygci5tZXRob2Q/dFtyLm1ldGhvZF06ci5tZXRob2QsYT1yLnByb3BlcnR5O28/by5jYWxsKHQsdC5fX2RhdGFbYV0saVthXSk6ci5keW5hbWljRm58fGNvbnNvbGUud2Fybigib2JzZXJ2ZXIgbWV0aG9kIGAiK3IubWV0aG9kKyJgIG5vdCBkZWZpbmVkIil9ZnVuY3Rpb24ganQodCxlLG4pe2xldCBpPSQoZSk7cmV0dXJuIGkhPT1lJiYoR3QodCxsdChpKSsiLWNoYW5nZWQiLG5bZV0sZSksITApfWZ1bmN0aW9uIEd0KHQsZSxuLGkpe2xldCByPXt2YWx1ZTpuLHF1ZXVlUHJvcGVydHk6ITB9O2kmJihyLnBhdGg9aSksWSh0KS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChlLHtkZXRhaWw6cn0pKX1mdW5jdGlvbiBXdCh0LGUsbixpLHIsbyl7bGV0IGE9KG8/JChlKTplKSE9ZT9lOm51bGwscz1hP250KHQsYSk6dC5fX2RhdGFbZV07YSYmdm9pZCAwPT09cyYmKHM9bltlXSksR3QodCxyLmV2ZW50TmFtZSxzLGEpfWZ1bmN0aW9uIHF0KHQsZSxuLGkscil7bGV0IG89dC5fX2RhdGFbZV07eSYmKG89eShvLHIuYXR0ck5hbWUsImF0dHJpYnV0ZSIsdCkpLHQuX3Byb3BlcnR5VG9BdHRyaWJ1dGUoZSxyLmF0dHJOYW1lLG8pfWNvbnN0IFl0PSh0LGUsbik9PntsZXQgaT0wLHI9ZS5sZW5ndGgtMSxvPS0xO2Zvcig7aTw9cjspe2NvbnN0IGE9aStyPj4xLHM9bi5nZXQoZVthXS5tZXRob2RJbmZvKS1uLmdldCh0Lm1ldGhvZEluZm8pO2lmKHM8MClpPWErMTtlbHNle2lmKCEocz4wKSl7bz1hO2JyZWFrfXI9YS0xfX1vPDAmJihvPXIrMSksZS5zcGxpY2UobywwLHQpfSxYdD0odCxlLG4saSxyKT0+e2NvbnN0IG89ZVtyPyQodCk6dF07aWYobylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7Y29uc3QgYT1vW2VdO2EuaW5mby5sYXN0UnVuPT09UnR8fHImJiFWdCh0LGEudHJpZ2dlcil8fChhLmluZm8ubGFzdFJ1bj1SdCxZdChhLmluZm8sbixpKSl9fTtmdW5jdGlvbiAkdCh0LGUsbixpLHIpe2xldCBvPW5lKHQsZSxuLDAscik7aWYobz09PU90KXJldHVybiExO2xldCBhPXIubWV0aG9kSW5mbztyZXR1cm4gdC5fX2RhdGFIYXNBY2Nlc3NvciYmdC5fX2RhdGFIYXNBY2Nlc3NvclthXT90Ll9zZXRQZW5kaW5nUHJvcGVydHkoYSxvLCEwKToodFthXT1vLCExKX1mdW5jdGlvbiBLdCh0LGUsbixpLHIsbyxhKXtuLmJpbmRpbmdzPW4uYmluZGluZ3N8fFtdO2xldCBzPXtraW5kOmksdGFyZ2V0OnIscGFydHM6byxsaXRlcmFsOmEsaXNDb21wb3VuZDoxIT09by5sZW5ndGh9O2lmKG4uYmluZGluZ3MucHVzaChzKSwoZnVuY3Rpb24gbCh0KXtyZXR1cm4gQm9vbGVhbih0LnRhcmdldCkmJiJhdHRyaWJ1dGUiIT10LmtpbmQmJiJ0ZXh0IiE9dC5raW5kJiYhdC5pc0NvbXBvdW5kJiYieyI9PT10LnBhcnRzWzBdLm1vZGV9KShzKSl7bGV0e2V2ZW50OnQsbmVnYXRlOmV9PXMucGFydHNbMF07cy5saXN0ZW5lckV2ZW50PXR8fGx0KHIpKyItY2hhbmdlZCIscy5saXN0ZW5lck5lZ2F0ZT1lfWxldCBjPWUubm9kZUluZm9MaXN0Lmxlbmd0aDtmb3IobGV0IG49MDtuPHMucGFydHMubGVuZ3RoO24rKyl7bGV0IGk9cy5wYXJ0c1tuXTtpLmNvbXBvdW5kSW5kZXg9bixadCh0LGUscyxpLGMpfX1mdW5jdGlvbiBadCh0LGUsbixpLHIpe2lmKCFpLmxpdGVyYWwpaWYoImF0dHJpYnV0ZSI9PT1uLmtpbmQmJiItIj09PW4udGFyZ2V0WzBdKWNvbnNvbGUud2FybigiQ2Fubm90IHNldCBhdHRyaWJ1dGUgIituLnRhcmdldCsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzdGFydGluZyBjaGFyYWN0ZXInKTtlbHNle2xldCBvPWkuZGVwZW5kZW5jaWVzLGE9e2luZGV4OnIsYmluZGluZzpuLHBhcnQ6aSxldmFsdWF0b3I6dH07Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspe2xldCBpPW9bbl07InN0cmluZyI9PXR5cGVvZiBpJiYoaT1zZShpKSxpLndpbGRjYXJkPSEwKSx0Ll9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGUsaS5yb290UHJvcGVydHkse2ZuOkp0LGluZm86YSx0cmlnZ2VyOml9KX19fWZ1bmN0aW9uIEp0KHQsZSxuLGkscixvLGEpe2xldCBzPWFbci5pbmRleF0sbD1yLmJpbmRpbmcsYz1yLnBhcnQ7aWYobyYmYy5zb3VyY2UmJmUubGVuZ3RoPmMuc291cmNlLmxlbmd0aCYmInByb3BlcnR5Ij09bC5raW5kJiYhbC5pc0NvbXBvdW5kJiZzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQmJnMuX19kYXRhSGFzQWNjZXNzb3ImJnMuX19kYXRhSGFzQWNjZXNzb3JbbC50YXJnZXRdKXtsZXQgaT1uW2VdO2U9SihjLnNvdXJjZSxsLnRhcmdldCxlKSxzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoZSxpLCExLCEwKSYmdC5fZW5xdWV1ZUNsaWVudChzKX1lbHNle2xldCBhPXIuZXZhbHVhdG9yLl9ldmFsdWF0ZUJpbmRpbmcodCxjLGUsbixpLG8pO2EhPT1PdCYmKGZ1bmN0aW9uIHUodCxlLG4saSxyKXtpZihyPShmdW5jdGlvbiBvKHQsZSxuLGkpe2lmKG4uaXNDb21wb3VuZCl7bGV0IHI9dC5fX2RhdGFDb21wb3VuZFN0b3JhZ2Vbbi50YXJnZXRdO3JbaS5jb21wb3VuZEluZGV4XT1lLGU9ci5qb2luKCIiKX1yZXR1cm4iYXR0cmlidXRlIiE9PW4ua2luZCYmKCJ0ZXh0Q29udGVudCIhPT1uLnRhcmdldCYmKCJ2YWx1ZSIhPT1uLnRhcmdldHx8ImlucHV0IiE9PXQubG9jYWxOYW1lJiYidGV4dGFyZWEiIT09dC5sb2NhbE5hbWUpfHwoZT1udWxsPT1lPyIiOmUpKSxlfSkoZSxyLG4saSkseSYmKHI9eShyLG4udGFyZ2V0LG4ua2luZCxlKSksImF0dHJpYnV0ZSI9PW4ua2luZCl0Ll92YWx1ZVRvTm9kZUF0dHJpYnV0ZShlLHIsbi50YXJnZXQpO2Vsc2V7bGV0IGk9bi50YXJnZXQ7ZS5fX2lzUHJvcGVydHlFZmZlY3RzQ2xpZW50JiZlLl9fZGF0YUhhc0FjY2Vzc29yJiZlLl9fZGF0YUhhc0FjY2Vzc29yW2ldP2VbenQuUkVBRF9PTkxZXSYmZVt6dC5SRUFEX09OTFldW2ldfHxlLl9zZXRQZW5kaW5nUHJvcGVydHkoaSxyKSYmdC5fZW5xdWV1ZUNsaWVudChlKTp0Ll9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZShlLGkscil9fSkodCxzLGwsYyxhKX19ZnVuY3Rpb24gUXQodCxlKXtpZihlLmlzQ29tcG91bmQpe2xldCBuPXQuX19kYXRhQ29tcG91bmRTdG9yYWdlfHwodC5fX2RhdGFDb21wb3VuZFN0b3JhZ2U9e30pLGk9ZS5wYXJ0cyxyPW5ldyBBcnJheShpLmxlbmd0aCk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspclt0XT1pW3RdLmxpdGVyYWw7bGV0IG89ZS50YXJnZXQ7bltvXT1yLGUubGl0ZXJhbCYmInByb3BlcnR5Ij09ZS5raW5kJiYoImNsYXNzTmFtZSI9PT1vJiYodD1ZKHQpKSx0W29dPWUubGl0ZXJhbCl9fWZ1bmN0aW9uIHRlKHQsZSxuKXtpZihuLmxpc3RlbmVyRXZlbnQpe2xldCBpPW4ucGFydHNbMF07dC5hZGRFdmVudExpc3RlbmVyKG4ubGlzdGVuZXJFdmVudCwoZnVuY3Rpb24odCl7IShmdW5jdGlvbiByKHQsZSxuLGksbyl7bGV0IGEscz10LmRldGFpbCxsPXMmJnMucGF0aDtsPyhpPUoobixpLGwpLGE9cyYmcy52YWx1ZSk6YT10LmN1cnJlbnRUYXJnZXRbbl0sYT1vPyFhOmEsZVt6dC5SRUFEX09OTFldJiZlW3p0LlJFQURfT05MWV1baV18fCFlLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoaSxhLCEwLEJvb2xlYW4obCkpfHxzJiZzLnF1ZXVlUHJvcGVydHl8fGUuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9KSh0LGUsbi50YXJnZXQsaS5zb3VyY2UsaS5uZWdhdGUpfSkpfX1mdW5jdGlvbiBlZSh0LGUsbixpLHIsbyl7bGV0IGE9e21ldGhvZE5hbWU6ZS5tZXRob2ROYW1lLGFyZ3M6ZS5hcmdzLG1ldGhvZEluZm86cixkeW5hbWljRm46bz1lLnN0YXRpY3x8byYmKCJvYmplY3QiIT10eXBlb2Ygb3x8b1tlLm1ldGhvZE5hbWVdKX07Zm9yKGxldCByLG89MDtvPGUuYXJncy5sZW5ndGgmJihyPWUuYXJnc1tvXSk7bysrKXIubGl0ZXJhbHx8dC5fYWRkUHJvcGVydHlFZmZlY3Qoci5yb290UHJvcGVydHksbix7Zm46aSxpbmZvOmEsdHJpZ2dlcjpyfSk7cmV0dXJuIG8mJnQuX2FkZFByb3BlcnR5RWZmZWN0KGUubWV0aG9kTmFtZSxuLHtmbjppLGluZm86YX0pLGF9ZnVuY3Rpb24gbmUodCxlLG4saSxyKXtsZXQgbz10Ll9tZXRob2RIb3N0fHx0LGE9b1tyLm1ldGhvZE5hbWVdO2lmKGEpe2xldCBpPXQuX21hcnNoYWxBcmdzKHIuYXJncyxlLG4pO3JldHVybiBpPT09T3Q/T3Q6YS5hcHBseShvLGkpfXIuZHluYW1pY0ZufHxjb25zb2xlLndhcm4oIm1ldGhvZCBgIityLm1ldGhvZE5hbWUrImAgbm90IGRlZmluZWQiKX1jb25zdCBpZT1bXSxyZT1uZXcgUmVnRXhwKCIoXFxbXFxbfHt7KVxccyooPzooISlcXHMqKT8oKD86W2EtekEtWl8kXVtcXHcuOiRcXC0qXSopXFxzKig/OlxcKFxccyooPzooPzooPzooKD86W2EtekEtWl8kXVtcXHcuOiRcXC0qXSopfCg/OlstK10/WzAtOV0qXFwuP1swLTldKyg/OltlRV1bLStdP1swLTldKyk/KXwoPzooPzonKD86W14nXFxcXF18XFxcXC4pKicpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIikpKVxccyopKD86LFxccyooPzooKD86W2EtekEtWl8kXVtcXHcuOiRcXC0qXSopfCg/OlstK10/WzAtOV0qXFwuP1swLTldKyg/OltlRV1bLStdP1swLTldKyk/KXwoPzooPzonKD86W14nXFxcXF18XFxcXC4pKicpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIikpKVxccyopKSopPylcXClcXHMqKT8pKD86XV18fX0pIiwiZyIpO2Z1bmN0aW9uIG9lKHQpe2xldCBlPSIiO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUrPXRbbl0ubGl0ZXJhbHx8IiI7cmV0dXJuIGV9ZnVuY3Rpb24gYWUodCl7bGV0IGU9dC5tYXRjaCgvKFteXHNdKz8pXCgoW1xzXFNdKilcKS8pO2lmKGUpe2xldCB0PXttZXRob2ROYW1lOmVbMV0sc3RhdGljOiEwLGFyZ3M6aWV9O3JldHVybiBlWzJdLnRyaW0oKT8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBlLmFyZ3M9dC5tYXAoKGZ1bmN0aW9uKHQpe2xldCBuPXNlKHQpO3JldHVybiBuLmxpdGVyYWx8fChlLnN0YXRpYz0hMSksbn0pLHRoaXMpLGV9KShlWzJdLnJlcGxhY2UoL1xcLC9nLCImY29tbWE7Iikuc3BsaXQoIiwiKSx0KTp0fXJldHVybiBudWxsfWZ1bmN0aW9uIHNlKHQpe2xldCBlPXQudHJpbSgpLnJlcGxhY2UoLyZjb21tYTsvZywiLCIpLnJlcGxhY2UoL1xcKC4pL2csIiQxIiksbj17bmFtZTplLHZhbHVlOiIiLGxpdGVyYWw6ITF9LGk9ZVswXTtzd2l0Y2goIi0iPT09aSYmKGk9ZVsxXSksaT49IjAiJiZpPD0iOSImJihpPSIjIiksaSl7Y2FzZSInIjpjYXNlJyInOm4udmFsdWU9ZS5zbGljZSgxLC0xKSxuLmxpdGVyYWw9ITA7YnJlYWs7Y2FzZSIjIjpuLnZhbHVlPU51bWJlcihlKSxuLmxpdGVyYWw9ITB9cmV0dXJuIG4ubGl0ZXJhbHx8KG4ucm9vdFByb3BlcnR5PSQoZSksbi5zdHJ1Y3R1cmVkPVgoZSksbi5zdHJ1Y3R1cmVkJiYobi53aWxkY2FyZD0iLioiPT1lLnNsaWNlKC0yKSxuLndpbGRjYXJkJiYobi5uYW1lPWUuc2xpY2UoMCwtMikpKSksbn1mdW5jdGlvbiBsZSh0LGUsbil7bGV0IGk9bnQodCxuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZVtuXSksaX1mdW5jdGlvbiBjZSh0LGUsbixpKXtjb25zdCByPXtpbmRleFNwbGljZXM6aX07RSYmIXQuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiYoZS5zcGxpY2VzPXIpLHQubm90aWZ5UGF0aChuKyIuc3BsaWNlcyIsciksdC5ub3RpZnlQYXRoKG4rIi5sZW5ndGgiLGUubGVuZ3RoKSxFJiYhdC5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWQmJihyLmluZGV4U3BsaWNlcz1bXSl9ZnVuY3Rpb24gdWUodCxlLG4saSxyLG8pe2NlKHQsZSxuLFt7aW5kZXg6aSxhZGRlZENvdW50OnIscmVtb3ZlZDpvLG9iamVjdDplLHR5cGU6InNwbGljZSJ9XSl9Y29uc3QgaGU9SSgodD0+e2NvbnN0IGU9SXQoTXQodCkpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudD0hMH1nZXQgUFJPUEVSVFlfRUZGRUNUX1RZUEVTKCl7cmV0dXJuIHp0fV9pbml0aWFsaXplUHJvcGVydGllcygpe3N1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX3JlZ2lzdGVySG9zdCgpLHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5PSExLHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM9bnVsbCx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fX2RhdGFMaW5rZWRQYXRocz1udWxsLHRoaXMuX19kYXRhSGFzUGF0aHM9ITEsdGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2U9dGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2V8fG51bGwsdGhpcy5fX2RhdGFIb3N0PXRoaXMuX19kYXRhSG9zdHx8bnVsbCx0aGlzLl9fZGF0YVRlbXA9e30sdGhpcy5fX2RhdGFDbGllbnRzSW5pdGlhbGl6ZWQ9ITF9X3JlZ2lzdGVySG9zdCgpe2lmKGRlLmxlbmd0aCl7bGV0IHQ9ZGVbZGUubGVuZ3RoLTFdO3QuX2VucXVldWVDbGllbnQodGhpcyksdGhpcy5fX2RhdGFIb3N0PXR9fV9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHQpe3RoaXMuX19kYXRhPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFQZW5kaW5nPU9iamVjdC5jcmVhdGUodCksdGhpcy5fX2RhdGFPbGQ9e319X2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModCl7bGV0IGU9dGhpc1t6dC5SRUFEX09OTFldO2ZvcihsZXQgbiBpbiB0KWUmJmVbbl18fCh0aGlzLl9fZGF0YVBlbmRpbmc9dGhpcy5fX2RhdGFQZW5kaW5nfHx7fSx0aGlzLl9fZGF0YU9sZD10aGlzLl9fZGF0YU9sZHx8e30sdGhpcy5fX2RhdGFbbl09dGhpcy5fX2RhdGFQZW5kaW5nW25dPXRbbl0pfV9hZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil7dGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGU9PXp0LlJFQURfT05MWSk7bGV0IGk9QnQodGhpcyxlLCEwKVt0XTtpfHwoaT10aGlzW2VdW3RdPVtdKSxpLnB1c2gobil9X3JlbW92ZVByb3BlcnR5RWZmZWN0KHQsZSxuKXtsZXQgaT1CdCh0aGlzLGUsITApW3RdLHI9aS5pbmRleE9mKG4pO3I+PTAmJmkuc3BsaWNlKHIsMSl9X2hhc1Byb3BlcnR5RWZmZWN0KHQsZSl7bGV0IG49dGhpc1tlXTtyZXR1cm4gQm9vbGVhbihuJiZuW3RdKX1faGFzUmVhZE9ubHlFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsenQuUkVBRF9PTkxZKX1faGFzTm90aWZ5RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LHp0Lk5PVElGWSl9X2hhc1JlZmxlY3RFZmZlY3QodCl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHQsenQuUkVGTEVDVCl9X2hhc0NvbXB1dGVkRWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LHp0LkNPTVBVVEUpfV9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLG4saSl7aWYoaXx8JChBcnJheS5pc0FycmF5KHQpP3RbMF06dCkhPT10KXtpZighaSl7bGV0IG49bnQodGhpcyx0KTtpZighKHQ9aXQodGhpcyx0LGUpKXx8IXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbikpcmV0dXJuITF9aWYodGhpcy5fX2RhdGFIYXNQYXRocz0hMCx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pKXJldHVybihmdW5jdGlvbiByKHQsZSxuKXtsZXQgaT10Ll9fZGF0YUxpbmtlZFBhdGhzO2lmKGkpe2xldCByO2ZvcihsZXQgbyBpbiBpKXtsZXQgYT1pW29dO1oobyxlKT8ocj1KKG8sYSxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSk6WihhLGUpJiYocj1KKGEsbyxlKSx0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocixuLCEwLCEwKSl9fX0pKHRoaXMsdCxlKSwhMH1lbHNle2lmKHRoaXMuX19kYXRhSGFzQWNjZXNzb3ImJnRoaXMuX19kYXRhSGFzQWNjZXNzb3JbdF0pcmV0dXJuIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsbik7dGhpc1t0XT1lfXJldHVybiExfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7bj09PXRbZV0mJiJvYmplY3QiIT10eXBlb2Ygbnx8KCJjbGFzc05hbWUiPT09ZSYmKHQ9WSh0KSksdFtlXT1uKX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YUhhc1BhdGhzJiZYKHQpO3JldHVybiEhdGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLChpP3RoaXMuX19kYXRhVGVtcDp0aGlzLl9fZGF0YSlbdF0pJiYodGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSx0IGluIHRoaXMuX19kYXRhT2xkfHwodGhpcy5fX2RhdGFPbGRbdF09dGhpcy5fX2RhdGFbdF0pLGk/dGhpcy5fX2RhdGFUZW1wW3RdPWU6dGhpcy5fX2RhdGFbdF09ZSx0aGlzLl9fZGF0YVBlbmRpbmdbdF09ZSwoaXx8dGhpc1t6dC5OT1RJRlldJiZ0aGlzW3p0Lk5PVElGWV1bdF0pJiYodGhpcy5fX2RhdGFUb05vdGlmeT10aGlzLl9fZGF0YVRvTm90aWZ5fHx7fSx0aGlzLl9fZGF0YVRvTm90aWZ5W3RdPW4pLCEwKX1fc2V0UHJvcGVydHkodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1faW52YWxpZGF0ZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YVJlYWR5JiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fZW5xdWV1ZUNsaWVudCh0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHN8fFtdLHQhPT10aGlzJiZ0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzLnB1c2godCl9X2ZsdXNoQ2xpZW50cygpe3RoaXMuX19kYXRhQ2xpZW50c1JlYWR5P3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpOih0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMCx0aGlzLl9yZWFkeUNsaWVudHMoKSx0aGlzLl9fZGF0YVJlYWR5PSEwKX1fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCl7bGV0IHQ9dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cztpZih0KXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGw7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07bi5fX2RhdGFFbmFibGVkP24uX19kYXRhUGVuZGluZyYmbi5fZmx1c2hQcm9wZXJ0aWVzKCk6bi5fZW5hYmxlUHJvcGVydGllcygpfX19X3JlYWR5Q2xpZW50cygpe3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpfXNldFByb3BlcnRpZXModCxlKXtmb3IobGV0IG4gaW4gdCkhZSYmdGhpc1t6dC5SRUFEX09OTFldJiZ0aGlzW3p0LlJFQURfT05MWV1bbl18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChuLHRbbl0sITApO3RoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeXx8dGhpcy5fZmx1c2hDbGllbnRzKCksdGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe2xldCBpLHI9dGhpcy5fX2RhdGFIYXNQYXRoczt0aGlzLl9fZGF0YUhhc1BhdGhzPSExLChmdW5jdGlvbiBvKHQsZSxuLGkpe2xldCByPXRbenQuQ09NUFVURV07aWYocilpZihUKXtSdCsrO2NvbnN0IG89KGZ1bmN0aW9uIGEodCl7bGV0IGU9dC5jb25zdHJ1Y3Rvci5fX29yZGVyZWRDb21wdXRlZERlcHM7aWYoIWUpe2U9bmV3IE1hcDtjb25zdCBuPXRbenQuQ09NUFVURV07bGV0IGkse2NvdW50czpyLHJlYWR5Om8sdG90YWw6YX09KGZ1bmN0aW9uIHModCl7Y29uc3QgZT10Ll9fY29tcHV0ZUluZm8sbj17fSxpPXRbenQuQ09NUFVURV0scj1bXTtsZXQgbz0wO2ZvcihsZXQgdCBpbiBlKXtjb25zdCBpPWVbdF07bys9blt0XT1pLmFyZ3MuZmlsdGVyKCh0PT4hdC5saXRlcmFsKSkubGVuZ3RoKyhpLmR5bmFtaWNGbj8xOjApfWZvcihsZXQgdCBpbiBpKWVbdF18fHIucHVzaCh0KTtyZXR1cm57Y291bnRzOm4scmVhZHk6cix0b3RhbDpvfX0pKHQpO2Zvcig7aT1vLnNoaWZ0KCk7KXtlLnNldChpLGUuc2l6ZSk7Y29uc3QgdD1uW2ldO3QmJnQuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5pbmZvLm1ldGhvZEluZm87LS1hLDA9PS0tcltlXSYmby5wdXNoKGUpfSkpfTAhPT1hJiZjb25zb2xlLndhcm4oYENvbXB1dGVkIGdyYXBoIGZvciAke3QubG9jYWxOYW1lfSBpbmNvbXBsZXRlOyBjaXJjdWxhcj9gKSx0LmNvbnN0cnVjdG9yLl9fb3JkZXJlZENvbXB1dGVkRGVwcz1lfXJldHVybiBlfSkodCkscz1bXTtmb3IobGV0IHQgaW4gZSlYdCh0LHIscyxvLGkpO2xldCBsO2Zvcig7bD1zLnNoaWZ0KCk7KSR0KHQsIiIsZSwwLGwpJiZYdChsLm1ldGhvZEluZm8scixzLG8saSk7T2JqZWN0LmFzc2lnbihuLHQuX19kYXRhT2xkKSxPYmplY3QuYXNzaWduKGUsdC5fX2RhdGFQZW5kaW5nKSx0Ll9fZGF0YVBlbmRpbmc9bnVsbH1lbHNle2xldCBvPWU7Zm9yKDtIdCh0LHIsbyxuLGkpOylPYmplY3QuYXNzaWduKG4sdC5fX2RhdGFPbGQpLE9iamVjdC5hc3NpZ24oZSx0Ll9fZGF0YVBlbmRpbmcpLG89dC5fX2RhdGFQZW5kaW5nLHQuX19kYXRhUGVuZGluZz1udWxsfX0pKHRoaXMsZSxuLHIpLGk9dGhpcy5fX2RhdGFUb05vdGlmeSx0aGlzLl9fZGF0YVRvTm90aWZ5PW51bGwsdGhpcy5fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGUsbixyKSx0aGlzLl9mbHVzaENsaWVudHMoKSxIdCh0aGlzLHRoaXNbenQuUkVGTEVDVF0sZSxuLHIpLEh0KHRoaXMsdGhpc1t6dC5PQlNFUlZFXSxlLG4sciksaSYmKGZ1bmN0aW9uIGEodCxlLG4saSxyKXtsZXQgbyxhLHM9dFt6dC5OT1RJRlldLGw9UnQrKztmb3IobGV0IGEgaW4gZSllW2FdJiYocyYmRnQodCxzLGwsYSxuLGkscil8fHImJmp0KHQsYSxuKSkmJihvPSEwKTtvJiYoYT10Ll9fZGF0YUhvc3QpJiZhLl9pbnZhbGlkYXRlUHJvcGVydGllcyYmYS5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX0pKHRoaXMsaSxlLG4sciksMT09dGhpcy5fX2RhdGFDb3VudGVyJiYodGhpcy5fX2RhdGFUZW1wPXt9KX1fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKHQsZSxuKXt0aGlzW3p0LlBST1BBR0FURV0mJkh0KHRoaXMsdGhpc1t6dC5QUk9QQUdBVEVdLHQsZSxuKSx0aGlzLl9fdGVtcGxhdGVJbmZvJiZ0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlSW5mbyx0LGUsbil9X3J1bkVmZmVjdHNGb3JUZW1wbGF0ZSh0LGUsbixpKXtjb25zdCByPShlLGkpPT57SHQodGhpcyx0LnByb3BlcnR5RWZmZWN0cyxlLG4saSx0Lm5vZGVMaXN0KTtmb3IobGV0IHI9dC5maXJzdENoaWxkO3I7cj1yLm5leHRTaWJsaW5nKXRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShyLGUsbixpKX07dC5ydW5FZmZlY3RzP3QucnVuRWZmZWN0cyhyLGUsaSk6cihlLGkpfWxpbmtQYXRocyh0LGUpe3Q9dHQodCksZT10dChlKSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXRoaXMuX19kYXRhTGlua2VkUGF0aHN8fHt9LHRoaXMuX19kYXRhTGlua2VkUGF0aHNbdF09ZX11bmxpbmtQYXRocyh0KXt0PXR0KHQpLHRoaXMuX19kYXRhTGlua2VkUGF0aHMmJmRlbGV0ZSB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RdfW5vdGlmeVNwbGljZXModCxlKXtsZXQgbj17cGF0aDoiIn07Y2UodGhpcyxudCh0aGlzLHQsbiksbi5wYXRoLGUpfWdldCh0LGUpe3JldHVybiBudChlfHx0aGlzLHQpfXNldCh0LGUsbil7bj9pdChuLHQsZSk6dGhpc1t6dC5SRUFEX09OTFldJiZ0aGlzW3p0LlJFQURfT05MWV1bdF18fHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXB1c2godCwuLi5lKXtsZXQgbj17cGF0aDoiIn0saT1udCh0aGlzLHQsbikscj1pLmxlbmd0aCxvPWkucHVzaCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnVlKHRoaXMsaSxuLnBhdGgscixlLmxlbmd0aCxbXSksb31wb3AodCl7bGV0IGU9e3BhdGg6IiJ9LG49bnQodGhpcyx0LGUpLGk9Qm9vbGVhbihuLmxlbmd0aCkscj1uLnBvcCgpO3JldHVybiBpJiZ1ZSh0aGlzLG4sZS5wYXRoLG4ubGVuZ3RoLDAsW3JdKSxyfXNwbGljZSh0LGUsbiwuLi5pKXtsZXQgcixvPXtwYXRoOiIifSxhPW50KHRoaXMsdCxvKTtyZXR1cm4gZTwwP2U9YS5sZW5ndGgtTWF0aC5mbG9vcigtZSk6ZSYmKGU9TWF0aC5mbG9vcihlKSkscj0yPT09YXJndW1lbnRzLmxlbmd0aD9hLnNwbGljZShlKTphLnNwbGljZShlLG4sLi4uaSksKGkubGVuZ3RofHxyLmxlbmd0aCkmJnVlKHRoaXMsYSxvLnBhdGgsZSxpLmxlbmd0aCxyKSxyfXNoaWZ0KHQpe2xldCBlPXtwYXRoOiIifSxuPW50KHRoaXMsdCxlKSxpPUJvb2xlYW4obi5sZW5ndGgpLHI9bi5zaGlmdCgpO3JldHVybiBpJiZ1ZSh0aGlzLG4sZS5wYXRoLDAsMCxbcl0pLHJ9dW5zaGlmdCh0LC4uLmUpe2xldCBuPXtwYXRoOiIifSxpPW50KHRoaXMsdCxuKSxyPWkudW5zaGlmdCguLi5lKTtyZXR1cm4gZS5sZW5ndGgmJnVlKHRoaXMsaSxuLnBhdGgsMCxlLmxlbmd0aCxbXSkscn1ub3RpZnlQYXRoKHQsZSl7bGV0IG47aWYoMT09YXJndW1lbnRzLmxlbmd0aCl7bGV0IGk9e3BhdGg6IiJ9O2U9bnQodGhpcyx0LGkpLG49aS5wYXRofWVsc2Ugbj1BcnJheS5pc0FycmF5KHQpP3R0KHQpOnQ7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKG4sZSwhMCwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LHp0LlJFQURfT05MWSksZSYmKHRoaXNbIl9zZXQiKyhmdW5jdGlvbiBuKHQpe3JldHVybiB0WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHJpbmcoMSl9KSh0KV09ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UHJvcGVydHkodCxlKX0pfV9jcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKXtsZXQgaT17cHJvcGVydHk6dCxtZXRob2Q6ZSxkeW5hbWljRm46Qm9vbGVhbihuKX07dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCx6dC5PQlNFUlZFLHtmbjpVdCxpbmZvOmksdHJpZ2dlcjp7bmFtZTp0fX0pLG4mJnRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGUsenQuT0JTRVJWRSx7Zm46VXQsaW5mbzppLHRyaWdnZXI6e25hbWU6ZX19KX1fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKXtsZXQgbj1hZSh0KTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBvYnNlcnZlciBleHByZXNzaW9uICciK3QrIiciKTtlZSh0aGlzLG4senQuT0JTRVJWRSxuZSxudWxsLGUpfV9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KXt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LHp0Lk5PVElGWSx7Zm46V3QsaW5mbzp7ZXZlbnROYW1lOmx0KHQpKyItY2hhbmdlZCIscHJvcGVydHk6dH19KX1fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl7bGV0IGU9dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCk7Ii0iPT09ZVswXT9jb25zb2xlLndhcm4oIlByb3BlcnR5ICIrdCsiIGNhbm5vdCBiZSByZWZsZWN0ZWQgdG8gYXR0cmlidXRlICIrZSsnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIHN0YXJ0aW5nIGF0dHJpYnV0ZSBuYW1lLiBVc2UgYSBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIGZvciB0aGUgcHJvcGVydHkgaW5zdGVhZC4nKTp0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LHp0LlJFRkxFQ1Qse2ZuOnF0LGluZm86e2F0dHJOYW1lOmV9fSl9X2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pe2xldCBpPWFlKGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGNvbXB1dGVkIGV4cHJlc3Npb24gJyIrZSsiJyIpO2NvbnN0IHI9ZWUodGhpcyxpLHp0LkNPTVBVVEUsJHQsdCxuKTtCdCh0aGlzLCJfX2NvbXB1dGVJbmZvIilbdF09cn1fbWFyc2hhbEFyZ3ModCxlLG4pe2NvbnN0IGk9dGhpcy5fX2RhdGEscj1bXTtmb3IobGV0IG89MCxhPXQubGVuZ3RoO288YTtvKyspe2xldHtuYW1lOmEsc3RydWN0dXJlZDpzLHdpbGRjYXJkOmwsdmFsdWU6YyxsaXRlcmFsOnV9PXRbb107aWYoIXUpaWYobCl7Y29uc3QgdD1aKGEsZSkscj1sZShpLG4sdD9lOmEpO2M9e3BhdGg6dD9lOmEsdmFsdWU6cixiYXNlOnQ/bnQoaSxhKTpyfX1lbHNlIGM9cz9sZShpLG4sYSk6aVthXTtpZihFJiYhdGhpcy5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWQmJnZvaWQgMD09PWMmJnQubGVuZ3RoPjEpcmV0dXJuIE90O3Jbb109Y31yZXR1cm4gcn1zdGF0aWMgYWRkUHJvcGVydHlFZmZlY3QodCxlLG4pe3RoaXMucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdCh0LGUsbil9c3RhdGljIGNyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIodCxlLG4pe3RoaXMucHJvdG90eXBlLl9jcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKX1zdGF0aWMgY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodCxlKX1zdGF0aWMgY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkodCl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KHQpfXN0YXRpYyBjcmVhdGVSZWFkT25seVByb3BlcnR5KHQsZSl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkodCxlKX1zdGF0aWMgY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkodCl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KHQpfXN0YXRpYyBjcmVhdGVDb21wdXRlZFByb3BlcnR5KHQsZSxuKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eSh0LGUsbil9c3RhdGljIGJpbmRUZW1wbGF0ZSh0KXtyZXR1cm4gdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZSh0KX1fYmluZFRlbXBsYXRlKHQsZSl7bGV0IG49dGhpcy5jb25zdHJ1Y3Rvci5fcGFyc2VUZW1wbGF0ZSh0KSxpPXRoaXMuX19wcmVCb3VuZFRlbXBsYXRlSW5mbz09bjtpZighaSlmb3IobGV0IHQgaW4gbi5wcm9wZXJ0eUVmZmVjdHMpdGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0KTtpZihlKWlmKG49T2JqZWN0LmNyZWF0ZShuKSxuLndhc1ByZUJvdW5kPWksdGhpcy5fX3RlbXBsYXRlSW5mbyl7Y29uc3QgZT10Ll9wYXJlbnRUZW1wbGF0ZUluZm98fHRoaXMuX190ZW1wbGF0ZUluZm8saT1lLmxhc3RDaGlsZDtuLnBhcmVudD1lLGUubGFzdENoaWxkPW4sbi5wcmV2aW91c1NpYmxpbmc9aSxpP2kubmV4dFNpYmxpbmc9bjplLmZpcnN0Q2hpbGQ9bn1lbHNlIHRoaXMuX190ZW1wbGF0ZUluZm89bjtlbHNlIHRoaXMuX19wcmVCb3VuZFRlbXBsYXRlSW5mbz1uO3JldHVybiBufXN0YXRpYyBfYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdCh0LGUsbil7KHQuaG9zdFByb3BzPXQuaG9zdFByb3BzfHx7fSlbZV09ITA7bGV0IGk9dC5wcm9wZXJ0eUVmZmVjdHM9dC5wcm9wZXJ0eUVmZmVjdHN8fHt9OyhpW2VdPWlbZV18fFtdKS5wdXNoKG4pfV9zdGFtcFRlbXBsYXRlKHQsZSl7ZT1lfHx0aGlzLl9iaW5kVGVtcGxhdGUodCwhMCksZGUucHVzaCh0aGlzKTtsZXQgbj1zdXBlci5fc3RhbXBUZW1wbGF0ZSh0LGUpO2lmKGRlLnBvcCgpLGUubm9kZUxpc3Q9bi5ub2RlTGlzdCwhZS53YXNQcmVCb3VuZCl7bGV0IHQ9ZS5jaGlsZE5vZGVzPVtdO2ZvcihsZXQgZT1uLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpdC5wdXNoKGUpfXJldHVybiBuLnRlbXBsYXRlSW5mbz1lLChmdW5jdGlvbiBpKHQsZSl7bGV0e25vZGVMaXN0Om4sbm9kZUluZm9MaXN0Oml9PWU7aWYoaS5sZW5ndGgpZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2xldCByPW5bZV0sbz1pW2VdLmJpbmRpbmdzO2lmKG8pZm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2xldCBuPW9bZV07UXQocixuKSx0ZShyLHQsbil9ci5fX2RhdGFIb3N0PXR9fSkodGhpcyxlKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeSYmKHRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShlLHRoaXMuX19kYXRhLG51bGwsITEpLHRoaXMuX2ZsdXNoQ2xpZW50cygpKSxufV9yZW1vdmVCb3VuZERvbSh0KXtjb25zdCBlPXQudGVtcGxhdGVJbmZvLHtwcmV2aW91c1NpYmxpbmc6bixuZXh0U2libGluZzppLHBhcmVudDpyfT1lO24/bi5uZXh0U2libGluZz1pOnImJihyLmZpcnN0Q2hpbGQ9aSksaT9pLnByZXZpb3VzU2libGluZz1uOnImJihyLmxhc3RDaGlsZD1uKSxlLm5leHRTaWJsaW5nPWUucHJldmlvdXNTaWJsaW5nPW51bGw7bGV0IG89ZS5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKXtsZXQgZT1vW3RdO1koWShlKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZChlKX19c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZSh0LG4saSl7bGV0IHI9ZS5fcGFyc2VUZW1wbGF0ZU5vZGUuY2FsbCh0aGlzLHQsbixpKTtpZih0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpe2xldCBlPXRoaXMuX3BhcnNlQmluZGluZ3ModC50ZXh0Q29udGVudCxuKTtlJiYodC50ZXh0Q29udGVudD1vZShlKXx8IiAiLEt0KHRoaXMsbixpLCJ0ZXh0IiwidGV4dENvbnRlbnQiLGUpLHI9ITApfXJldHVybiByfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGUodCxuLGkscixvKXtsZXQgYT10aGlzLl9wYXJzZUJpbmRpbmdzKG8sbik7aWYoYSl7bGV0IGU9cixvPSJwcm9wZXJ0eSI7RHQudGVzdChyKT9vPSJhdHRyaWJ1dGUiOiIkIj09cltyLmxlbmd0aC0xXSYmKHI9ci5zbGljZSgwLC0xKSxvPSJhdHRyaWJ1dGUiKTtsZXQgcz1vZShhKTtyZXR1cm4gcyYmImF0dHJpYnV0ZSI9PW8mJigiY2xhc3MiPT1yJiZ0Lmhhc0F0dHJpYnV0ZSgiY2xhc3MiKSYmKHMrPSIgIit0LmdldEF0dHJpYnV0ZShyKSksdC5zZXRBdHRyaWJ1dGUocixzKSksImF0dHJpYnV0ZSI9PW8mJiJkaXNhYmxlLXVwZ3JhZGUkIj09ZSYmdC5zZXRBdHRyaWJ1dGUociwiIiksImlucHV0Ij09PXQubG9jYWxOYW1lJiYidmFsdWUiPT09ZSYmdC5zZXRBdHRyaWJ1dGUoZSwiIiksdC5yZW1vdmVBdHRyaWJ1dGUoZSksInByb3BlcnR5Ij09PW8mJihyPXN0KHIpKSxLdCh0aGlzLG4saSxvLHIsYSxzKSwhMH1yZXR1cm4gZS5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGUuY2FsbCh0aGlzLHQsbixpLHIsbyl9c3RhdGljIF9wYXJzZVRlbXBsYXRlTmVzdGVkVGVtcGxhdGUodCxuLGkpe2xldCByPWUuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZS5jYWxsKHRoaXMsdCxuLGkpO2NvbnN0IG89dC5wYXJlbnROb2RlLGE9aS50ZW1wbGF0ZUluZm8scz0iZG9tLWlmIj09PW8ubG9jYWxOYW1lO0MmJihzfHwiZG9tLXJlcGVhdCI9PT1vLmxvY2FsTmFtZSkmJihvLnJlbW92ZUNoaWxkKHQpLChpPWkucGFyZW50SW5mbykudGVtcGxhdGVJbmZvPWEsaS5ub3RlZD0hMCxyPSExKTtsZXQgbD1hLmhvc3RQcm9wcztpZihBJiZzKWwmJihuLmhvc3RQcm9wcz1PYmplY3QuYXNzaWduKG4uaG9zdFByb3BzfHx7fSxsKSxDfHwoaS5wYXJlbnRJbmZvLm5vdGVkPSEwKSk7ZWxzZXtsZXQgdD0ieyI7Zm9yKGxldCBlIGluIGwpS3QodGhpcyxuLGksInByb3BlcnR5IiwiX2hvc3RfIitlLFt7bW9kZTp0LHNvdXJjZTplLGRlcGVuZGVuY2llczpbZV0saG9zdFByb3A6ITB9XSl9cmV0dXJuIHJ9c3RhdGljIF9wYXJzZUJpbmRpbmdzKHQsZSl7bGV0IG4saT1bXSxyPTA7Zm9yKDtudWxsIT09KG49cmUuZXhlYyh0KSk7KXtuLmluZGV4PnImJmkucHVzaCh7bGl0ZXJhbDp0LnNsaWNlKHIsbi5pbmRleCl9KTtsZXQgbz1uWzFdWzBdLGE9Qm9vbGVhbihuWzJdKSxzPW5bM10udHJpbSgpLGw9ITEsYz0iIix1PS0xOyJ7Ij09byYmKHU9cy5pbmRleE9mKCI6OiIpKT4wJiYoYz1zLnN1YnN0cmluZyh1KzIpLHM9cy5zdWJzdHJpbmcoMCx1KSxsPSEwKTtsZXQgaD1hZShzKSxkPVtdO2lmKGgpe2xldHthcmdzOnQsbWV0aG9kTmFtZTpufT1oO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO24ubGl0ZXJhbHx8ZC5wdXNoKG4pfWxldCBpPWUuZHluYW1pY0ZuczsoaSYmaVtuXXx8aC5zdGF0aWMpJiYoZC5wdXNoKG4pLGguZHluYW1pY0ZuPSEwKX1lbHNlIGQucHVzaChzKTtpLnB1c2goe3NvdXJjZTpzLG1vZGU6byxuZWdhdGU6YSxjdXN0b21FdmVudDpsLHNpZ25hdHVyZTpoLGRlcGVuZGVuY2llczpkLGV2ZW50OmN9KSxyPXJlLmxhc3RJbmRleH1pZihyJiZyPHQubGVuZ3RoKXtsZXQgZT10LnN1YnN0cmluZyhyKTtlJiZpLnB1c2goe2xpdGVyYWw6ZX0pfXJldHVybiBpLmxlbmd0aD9pOm51bGx9c3RhdGljIF9ldmFsdWF0ZUJpbmRpbmcodCxlLG4saSxyLG8pe2xldCBhO3JldHVybiBhPWUuc2lnbmF0dXJlP25lKHQsbixpLDAsZS5zaWduYXR1cmUpOm4hPWUuc291cmNlP250KHQsZS5zb3VyY2UpOm8mJlgobik/bnQodCxuKTp0Ll9fZGF0YVtuXSxlLm5lZ2F0ZSYmKGE9IWEpLGF9fX0pKSxkZT1bXSxwZT1JKCh0PT57Y29uc3QgZT14dCh0KTtmdW5jdGlvbiBuKHQpe2NvbnN0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBlLnByb3RvdHlwZSBpbnN0YW5jZW9mIHI/ZTpudWxsfWZ1bmN0aW9uIGkodCl7aWYoIXQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25Qcm9wZXJ0aWVzIix0KSkpe2xldCBlPW51bGw7aWYodC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJwcm9wZXJ0aWVzIix0KSkpe2NvbnN0IG49dC5wcm9wZXJ0aWVzO24mJihlPSgKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gZSh0KXtjb25zdCBlPXt9O2ZvcihsZXQgbiBpbiB0KXtjb25zdCBpPXRbbl07ZVtuXT0iZnVuY3Rpb24iPT10eXBlb2YgaT97dHlwZTppfTppfXJldHVybiBlfSkobikpfXQuX19vd25Qcm9wZXJ0aWVzPWV9cmV0dXJuIHQuX19vd25Qcm9wZXJ0aWVzfWNsYXNzIHIgZXh0ZW5kcyBle3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vYnNlcnZlZEF0dHJpYnV0ZXMiLHRoaXMpKSl7Y29uc3QgdD10aGlzLl9wcm9wZXJ0aWVzO3RoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXM9dD9PYmplY3Qua2V5cyh0KS5tYXAoKHQ9PnRoaXMucHJvdG90eXBlLl9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHQpKSk6W119cmV0dXJuIHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXN9c3RhdGljIGZpbmFsaXplKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19maW5hbGl6ZWQiLHRoaXMpKSl7Y29uc3QgdD1uKHRoaXMpO3QmJnQuZmluYWxpemUoKSx0aGlzLl9fZmluYWxpemVkPSEwLHRoaXMuX2ZpbmFsaXplQ2xhc3MoKX19c3RhdGljIF9maW5hbGl6ZUNsYXNzKCl7Y29uc3QgdD1pKHRoaXMpO3QmJnRoaXMuY3JlYXRlUHJvcGVydGllcyh0KX1zdGF0aWMgZ2V0IF9wcm9wZXJ0aWVzKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19wcm9wZXJ0aWVzIix0aGlzKSkpe2NvbnN0IHQ9bih0aGlzKTt0aGlzLl9fcHJvcGVydGllcz1PYmplY3QuYXNzaWduKHt9LHQmJnQuX3Byb3BlcnRpZXMsaSh0aGlzKSl9cmV0dXJuIHRoaXMuX19wcm9wZXJ0aWVzfXN0YXRpYyB0eXBlRm9yUHJvcGVydHkodCl7Y29uc3QgZT10aGlzLl9wcm9wZXJ0aWVzW3RdO3JldHVybiBlJiZlLnR5cGV9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7dGhpcy5jb25zdHJ1Y3Rvci5maW5hbGl6ZSgpLHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fZW5hYmxlUHJvcGVydGllcygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9fXJldHVybiByfSkpLGZlPXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkLG1lPUkoKHQ9Pntjb25zdCBlPXBlKGhlKHQpKTtmdW5jdGlvbiBuKHQsZSxuLGkpe24uY29tcHV0ZWQmJihuLnJlYWRPbmx5PSEwKSxuLmNvbXB1dGVkJiYodC5faGFzUmVhZE9ubHlFZmZlY3QoZSk/Y29uc29sZS53YXJuKGBDYW5ub3QgcmVkZWZpbmUgY29tcHV0ZWQgcHJvcGVydHkgJyR7ZX0nLmApOnQuX2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkoZSxuLmNvbXB1dGVkLGkpKSxuLnJlYWRPbmx5JiYhdC5faGFzUmVhZE9ubHlFZmZlY3QoZSk/dC5fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eShlLCFuLmNvbXB1dGVkKTohMT09PW4ucmVhZE9ubHkmJnQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlYWRPbmx5IHByb3BlcnR5ICcke2V9JyBub24tcmVhZE9ubHkuYCksbi5yZWZsZWN0VG9BdHRyaWJ1dGUmJiF0Ll9oYXNSZWZsZWN0RWZmZWN0KGUpP3QuX2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KGUpOiExPT09bi5yZWZsZWN0VG9BdHRyaWJ1dGUmJnQuX2hhc1JlZmxlY3RFZmZlY3QoZSkmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2UgcmVmbGVjdGVkIHByb3BlcnR5ICcke2V9JyBub24tcmVmbGVjdGVkLmApLG4ubm90aWZ5JiYhdC5faGFzTm90aWZ5RWZmZWN0KGUpP3QuX2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KGUpOiExPT09bi5ub3RpZnkmJnQuX2hhc05vdGlmeUVmZmVjdChlKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSBub3RpZnkgcHJvcGVydHkgJyR7ZX0nIG5vbi1ub3RpZnkuYCksbi5vYnNlcnZlciYmdC5fY3JlYXRlUHJvcGVydHlPYnNlcnZlcihlLG4ub2JzZXJ2ZXIsaVtuLm9ic2VydmVyXSksdC5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcChlKX1yZXR1cm4gY2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcG9seW1lckVsZW1lbnRWZXJzaW9uKCl7cmV0dXJuIjMuNC4xIn1zdGF0aWMgX2ZpbmFsaXplQ2xhc3MoKXtlLl9maW5hbGl6ZUNsYXNzLmNhbGwodGhpcyk7Y29uc3QgdD0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX293bk9ic2VydmVycyIsdCkpfHwodC5fX293bk9ic2VydmVycz10Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIm9ic2VydmVycyIsdCkpP3Qub2JzZXJ2ZXJzOm51bGwpLHQuX19vd25PYnNlcnZlcnN9KSh0aGlzKTt0JiZ0aGlzLmNyZWF0ZU9ic2VydmVycyh0LHRoaXMuX3Byb3BlcnRpZXMpLHRoaXMuX3ByZXBhcmVUZW1wbGF0ZSgpfXN0YXRpYyBfcHJlcGFyZVRlbXBsYXRlKCl7bGV0IHQ9dGhpcy50ZW1wbGF0ZTt0JiYoInN0cmluZyI9PXR5cGVvZiB0Pyhjb25zb2xlLmVycm9yKCJ0ZW1wbGF0ZSBnZXR0ZXIgbXVzdCByZXR1cm4gSFRNTFRlbXBsYXRlRWxlbWVudCIpLHQ9bnVsbCk6d3x8KHQ9dC5jbG9uZU5vZGUoITApKSksdGhpcy5wcm90b3R5cGUuX3RlbXBsYXRlPXR9c3RhdGljIGNyZWF0ZVByb3BlcnRpZXModCl7Zm9yKGxldCBlIGluIHQpbih0aGlzLnByb3RvdHlwZSxlLHRbZV0sdCl9c3RhdGljIGNyZWF0ZU9ic2VydmVycyh0LGUpe2NvbnN0IG49dGhpcy5wcm90b3R5cGU7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspbi5fY3JlYXRlTWV0aG9kT2JzZXJ2ZXIodFtpXSxlKX1zdGF0aWMgZ2V0IHRlbXBsYXRlKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX3RlbXBsYXRlIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX3RlbXBsYXRlIix0aGlzLnByb3RvdHlwZSkpP3RoaXMucHJvdG90eXBlLl90ZW1wbGF0ZTp2b2lkIDA7dGhpcy5fdGVtcGxhdGU9dm9pZCAwIT09dD90OnRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXMiLHRoaXMpKSYmKGZ1bmN0aW9uIGUodCl7bGV0IGU9bnVsbDtpZih0JiYoIWJ8fHgpJiYoZT1CLmltcG9ydCh0LCJ0ZW1wbGF0ZSIpLGImJiFlKSl0aHJvdyBuZXcgRXJyb3IoYHN0cmljdFRlbXBsYXRlUG9saWN5OiBleHBlY3RpbmcgZG9tLW1vZHVsZSBvciBudWxsIHRlbXBsYXRlIGZvciAke3R9YCk7cmV0dXJuIGV9KSh0aGlzLmlzKXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMucHJvdG90eXBlKS5jb25zdHJ1Y3Rvci50ZW1wbGF0ZX1yZXR1cm4gdGhpcy5fdGVtcGxhdGV9c3RhdGljIHNldCB0ZW1wbGF0ZSh0KXt0aGlzLl90ZW1wbGF0ZT10fXN0YXRpYyBnZXQgaW1wb3J0UGF0aCgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9pbXBvcnRQYXRoIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5pbXBvcnRNZXRhO2lmKHQpdGhpcy5faW1wb3J0UGF0aD1mKHQudXJsKTtlbHNle2NvbnN0IHQ9Qi5pbXBvcnQodGhpcy5pcyk7dGhpcy5faW1wb3J0UGF0aD10JiZ0LmFzc2V0cGF0aHx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMucHJvdG90eXBlKS5jb25zdHJ1Y3Rvci5pbXBvcnRQYXRofX1yZXR1cm4gdGhpcy5faW1wb3J0UGF0aH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7dGhpcy5jb25zdHJ1Y3Rvci5maW5hbGl6ZSgpLHRoaXMuY29uc3RydWN0b3IuX2ZpbmFsaXplVGVtcGxhdGUodGhpcy5sb2NhbE5hbWUpLHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMucm9vdFBhdGg9Xyx0aGlzLmltcG9ydFBhdGg9dGhpcy5jb25zdHJ1Y3Rvci5pbXBvcnRQYXRoO2xldCB0PShmdW5jdGlvbiBlKHQpe2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydHlEZWZhdWx0cyIsdCkpKXt0Ll9fcHJvcGVydHlEZWZhdWx0cz1udWxsO2xldCBlPXQuX3Byb3BlcnRpZXM7Zm9yKGxldCBuIGluIGUpe2xldCBpPWVbbl07InZhbHVlImluIGkmJih0Ll9fcHJvcGVydHlEZWZhdWx0cz10Ll9fcHJvcGVydHlEZWZhdWx0c3x8e30sdC5fX3Byb3BlcnR5RGVmYXVsdHNbbl09aSl9fXJldHVybiB0Ll9fcHJvcGVydHlEZWZhdWx0c30pKHRoaXMuY29uc3RydWN0b3IpO2lmKHQpZm9yKGxldCBlIGluIHQpe2xldCBuPXRbZV07aWYodGhpcy5fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQoZSkpe2xldCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBuLnZhbHVlP24udmFsdWUuY2FsbCh0aGlzKTpuLnZhbHVlO3RoaXMuX2hhc0FjY2Vzc29yKGUpP3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eShlLHQsITApOnRoaXNbZV09dH19fV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KXtyZXR1cm4hdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KX1zdGF0aWMgX3Byb2Nlc3NTdHlsZVRleHQodCxlKXtyZXR1cm4gcCh0LGUpfXN0YXRpYyBfZmluYWxpemVUZW1wbGF0ZSh0KXtjb25zdCBlPXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZTtpZihlJiYhZS5fX3BvbHltZXJGaW5hbGl6ZWQpe2UuX19wb2x5bWVyRmluYWxpemVkPSEwO2NvbnN0IG49dGhpcy5pbXBvcnRQYXRoOyhmdW5jdGlvbiBpKHQsZSxuLHIpe2lmKCFmZSl7Y29uc3QgaT1lLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSxvPUcoZSksYT0oZnVuY3Rpb24gcyh0KXtsZXQgZT1GKHQpO3JldHVybiBlP1coZSk6W119KShuKSxsPWUuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZDtmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rKyl7bGV0IGk9YVtuXTtpLnRleHRDb250ZW50PXQuX3Byb2Nlc3NTdHlsZVRleHQoaS50ZXh0Q29udGVudCxyKSxlLmNvbnRlbnQuaW5zZXJ0QmVmb3JlKGksbCl9bGV0IGM9MDtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IG49b1tlXSxhPWlbY107YSE9PW4/KG49bi5jbG9uZU5vZGUoITApLGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixhKSk6YysrLG4udGV4dENvbnRlbnQ9dC5fcHJvY2Vzc1N0eWxlVGV4dChuLnRleHRDb250ZW50LHIpfX1pZih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGUoZSxuKSxQJiZmZSYmZyl7Y29uc3Qgbj1lLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKTtpZihuKXtsZXQgZT0iIjtBcnJheS5mcm9tKG4pLmZvckVhY2goKHQ9PntlKz10LnRleHRDb250ZW50LHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX0pKSx0Ll9zdHlsZVNoZWV0PW5ldyBDU1NTdHlsZVNoZWV0LHQuX3N0eWxlU2hlZXQucmVwbGFjZVN5bmMoZSl9fX0pKHRoaXMsZSx0LG4/ZChuKToiIiksdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZShlKX19Y29ubmVjdGVkQ2FsbGJhY2soKXt3aW5kb3cuU2hhZHlDU1MmJnRoaXMuX3RlbXBsYXRlJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpLHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9cmVhZHkoKXt0aGlzLl90ZW1wbGF0ZSYmKHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX3RlbXBsYXRlKSx0aGlzLiQ9dGhpcy5yb290LiQpLHN1cGVyLnJlYWR5KCl9X3JlYWR5Q2xpZW50cygpe3RoaXMuX3RlbXBsYXRlJiYodGhpcy5yb290PXRoaXMuX2F0dGFjaERvbSh0aGlzLnJvb3QpKSxzdXBlci5fcmVhZHlDbGllbnRzKCl9X2F0dGFjaERvbSh0KXtjb25zdCBlPVkodGhpcyk7aWYoZS5hdHRhY2hTaGFkb3cpcmV0dXJuIHQ/KGUuc2hhZG93Um9vdHx8KGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIixzaGFkeVVwZ3JhZGVGcmFnbWVudDp0fSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQpLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlU2hlZXQmJihlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVt0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0XSkpLE0mJndpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmZsdXNoSW5pdGlhbChlLnNoYWRvd1Jvb3QpLGUuc2hhZG93Um9vdCk6bnVsbDt0aHJvdyBuZXcgRXJyb3IoIlNoYWRvd0RPTSBub3QgYXZhaWxhYmxlLiBQb2x5bWVyRWxlbWVudCBjYW4gY3JlYXRlIGRvbSBhcyBjaGlsZHJlbiBpbnN0ZWFkIG9mIGluIFNoYWRvd0RPTSBieSBzZXR0aW5nIGB0aGlzLnJvb3QgPSB0aGlzO2AgYmVmb3JlIGByZWFkeWAuIil9dXBkYXRlU3R5bGVzKHQpe3dpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlU3VidHJlZSh0aGlzLHQpfXJlc29sdmVVcmwodCxlKXtyZXR1cm4hZSYmdGhpcy5pbXBvcnRQYXRoJiYoZT1kKHRoaXMuaW1wb3J0UGF0aCkpLGQodCxlKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbixpKXtyZXR1cm4gbi5keW5hbWljRm5zPW4uZHluYW1pY0Zuc3x8dGhpcy5fcHJvcGVydGllcyxlLl9wYXJzZVRlbXBsYXRlQ29udGVudC5jYWxsKHRoaXMsdCxuLGkpfXN0YXRpYyBfYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdCh0LG4saSl7cmV0dXJuIVN8fG4gaW4gdGhpcy5fcHJvcGVydGllc3x8aS5pbmZvLnBhcnQuc2lnbmF0dXJlJiZpLmluZm8ucGFydC5zaWduYXR1cmUuc3RhdGljfHxpLmluZm8ucGFydC5ob3N0UHJvcHx8dC5uZXN0ZWRUZW1wbGF0ZXx8Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHtufScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApLGUuX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QuY2FsbCh0aGlzLHQsbixpKX19fSkpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyBnZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXQudG9TdHJpbmcoKX10b1N0cmluZygpe3JldHVybiB0aGlzLnZhbHVlfX1jb25zdCBfZT1mdW5jdGlvbiB0KGUsLi4ubil7Y29uc3QgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiBpLmlubmVySFRNTD1uLnJlZHVjZSgoKHQsbixpKT0+dCsoZnVuY3Rpb24gcih0KXtpZih0IGluc3RhbmNlb2YgSFRNTFRlbXBsYXRlRWxlbWVudClyZXR1cm4gdC5pbm5lckhUTUw7aWYodCBpbnN0YW5jZW9mIGdlKXJldHVybihmdW5jdGlvbiBlKHQpe2lmKHQgaW5zdGFuY2VvZiBnZSlyZXR1cm4gdC52YWx1ZTt0aHJvdyBuZXcgRXJyb3IoYG5vbi1saXRlcmFsIHZhbHVlIHBhc3NlZCB0byBQb2x5bWVyJ3MgaHRtbExpdGVyYWwgZnVuY3Rpb246ICR7dH1gKX0pKHQpO3Rocm93IG5ldyBFcnJvcihgbm9uLXRlbXBsYXRlIHZhbHVlIHBhc3NlZCB0byBQb2x5bWVyJ3MgaHRtbCBmdW5jdGlvbjogJHt0fWApfSkobikrZVtpKzFdKSxlWzBdKSxpfSx5ZT1tZShIVE1MRWxlbWVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovdmFyIHZlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gYmUodCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGkuZ2V0P2k6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX12YXIgeGUsd2UsU2U9e2V4cG9ydHM6e319OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiAgICAgKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+CiAgICAgKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPgogICAgICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzCiAgICAgKi94ZT1TZSx3ZT1TZS5leHBvcnRzLGZ1bmN0aW9uKCl7dmFyIHQsZT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIsbj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsaT0iX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIscj0zMixvPTEyOCxhPTEvMCxzPTkwMDcxOTkyNTQ3NDA5OTEsbD1OYU4sYz00Mjk0OTY3Mjk1LHU9W1siYXJ5IixvXSxbImJpbmQiLDFdLFsiYmluZEtleSIsMl0sWyJjdXJyeSIsOF0sWyJjdXJyeVJpZ2h0IiwxNl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIscl0sWyJwYXJ0aWFsUmlnaHQiLDY0XSxbInJlYXJnIiwyNTZdXSxoPSJbb2JqZWN0IEFyZ3VtZW50c10iLGQ9IltvYmplY3QgQXJyYXldIixwPSJbb2JqZWN0IEJvb2xlYW5dIixmPSJbb2JqZWN0IERhdGVdIixtPSJbb2JqZWN0IEVycm9yXSIsZz0iW29iamVjdCBGdW5jdGlvbl0iLF89IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIix5PSJbb2JqZWN0IE1hcF0iLHY9IltvYmplY3QgTnVtYmVyXSIsYj0iW29iamVjdCBPYmplY3RdIix4PSJbb2JqZWN0IFByb21pc2VdIix3PSJbb2JqZWN0IFJlZ0V4cF0iLFM9IltvYmplY3QgU2V0XSIsTT0iW29iamVjdCBTdHJpbmddIixFPSJbb2JqZWN0IFN5bWJvbF0iLFQ9IltvYmplY3QgV2Vha01hcF0iLEM9IltvYmplY3QgQXJyYXlCdWZmZXJdIixBPSJbb2JqZWN0IERhdGFWaWV3XSIsaz0iW29iamVjdCBGbG9hdDMyQXJyYXldIixMPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLFA9IltvYmplY3QgSW50OEFycmF5XSIsTj0iW29iamVjdCBJbnQxNkFycmF5XSIsST0iW29iamVjdCBJbnQzMkFycmF5XSIsUj0iW29iamVjdCBVaW50OEFycmF5XSIsTz0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLHo9IltvYmplY3QgVWludDE2QXJyYXldIixEPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsQj0vXGJfX3AgXCs9ICcnOy9nLEg9L1xiKF9fcCBcKz0pICcnIFwrL2csRj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLFY9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFU9L1smPD4iJ10vZyxqPVJlZ0V4cChWLnNvdXJjZSksRz1SZWdFeHAoVS5zb3VyY2UpLFc9LzwlLShbXHNcU10rPyklPi9nLHE9LzwlKFtcc1xTXSs/KSU+L2csWT0vPCU9KFtcc1xTXSs/KSU+L2csWD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLywkPS9eXHcqJC8sSz0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxaPS9bXFxeJC4qKz8oKVtcXXt9fF0vZyxKPVJlZ0V4cChaLnNvdXJjZSksUT0vXlxzKy8sdHQ9L1xzLyxldD0vXHsoPzpcblwvXCogXFt3cmFwcGVkIHdpdGggLitcXSBcKlwvKT9cbj8vLG50PS9ce1xuXC9cKiBcW3dyYXBwZWQgd2l0aCAoLispXF0gXCovLGl0PS8sPyAmIC8scnQ9L1teXHgwMC1ceDJmXHgzYS1ceDQwXHg1Yi1ceDYwXHg3Yi1ceDdmXSsvZyxvdD0vWygpPSx7fVxbXF1cL1xzXS8sYXQ9L1xcKFxcKT8vZyxzdD0vXCRceyhbXlxcfV0qKD86XFwuW15cXH1dKikqKVx9L2csbHQ9L1x3KiQvLGN0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLHV0PS9eMGJbMDFdKyQvaSxodD0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxkdD0vXjBvWzAtN10rJC9pLHB0PS9eKD86MHxbMS05XVxkKikkLyxmdD0vW1x4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHhmZlx1MDEwMC1cdTAxN2ZdL2csbXQ9LygkXikvLGd0PS9bJ1xuXHJcdTIwMjhcdTIwMjlcXF0vZyxfdD0iXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmIix5dD0iYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZiIsdnQ9IkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGUiLGJ0PSJcXHhhY1xceGIxXFx4ZDdcXHhmN1xceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceGJmXFx1MjAwMC1cXHUyMDZmIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIix4dD0iWyIrYnQrIl0iLHd0PSJbIitfdCsiXSIsU3Q9IlxcZCsiLE10PSJbIit5dCsiXSIsRXQ9IlteXFx1ZDgwMC1cXHVkZmZmIitidCtTdCsiXFx1MjcwMC1cXHUyN2JmIit5dCt2dCsiXSIsVHQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsQ3Q9IlteXFx1ZDgwMC1cXHVkZmZmXSIsQXQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGt0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixMdD0iWyIrdnQrIl0iLFB0PSIoPzoiK010KyJ8IitFdCsiKSIsTnQ9Iig/OiIrTHQrInwiK0V0KyIpIixJdD0iKD86WyfigJldKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPyIsUnQ9Iig/Olsn4oCZXSg/OkR8TEx8TXxSRXxTfFR8VkUpKT8iLE90PSIoPzoiK3d0KyJ8IitUdCsiKT8iLHp0PSJbXFx1ZmUwZVxcdWZlMGZdPyIsRHQ9enQrT3QrIig/OlxcdTIwMGQoPzoiK1tDdCxBdCxrdF0uam9pbigifCIpKyIpIit6dCtPdCsiKSoiLEJ0PSIoPzoiK1siW1xcdTI3MDAtXFx1MjdiZl0iLEF0LGt0XS5qb2luKCJ8IikrIikiK0R0LEh0PSIoPzoiK1tDdCt3dCsiPyIsd3QsQXQsa3QsIltcXHVkODAwLVxcdWRmZmZdIl0uam9pbigifCIpKyIpIixGdD1SZWdFeHAoIlsn4oCZXSIsImciKSxWdD1SZWdFeHAod3QsImciKSxVdD1SZWdFeHAoVHQrIig/PSIrVHQrIil8IitIdCtEdCwiZyIpLGp0PVJlZ0V4cChbTHQrIj8iK010KyIrIitJdCsiKD89IitbeHQsTHQsIiQiXS5qb2luKCJ8IikrIikiLE50KyIrIitSdCsiKD89IitbeHQsTHQrUHQsIiQiXS5qb2luKCJ8IikrIikiLEx0KyI/IitQdCsiKyIrSXQsTHQrIisiK1J0LCJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLCJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLFN0LEJ0XS5qb2luKCJ8IiksImciKSxHdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmIitfdCsiXFx1ZmUwZVxcdWZlMGZdIiksV3Q9L1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS8scXQ9WyJBcnJheSIsIkJ1ZmZlciIsIkRhdGFWaWV3IiwiRGF0ZSIsIkVycm9yIiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiRnVuY3Rpb24iLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIk1hcCIsIk1hdGgiLCJPYmplY3QiLCJQcm9taXNlIiwiUmVnRXhwIiwiU2V0IiwiU3RyaW5nIiwiU3ltYm9sIiwiVHlwZUVycm9yIiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIldlYWtNYXAiLCJfIiwiY2xlYXJUaW1lb3V0IiwiaXNGaW5pdGUiLCJwYXJzZUludCIsInNldFRpbWVvdXQiXSxZdD0tMSxYdD17fTtYdFtrXT1YdFtMXT1YdFtQXT1YdFtOXT1YdFtJXT1YdFtSXT1YdFtPXT1YdFt6XT1YdFtEXT0hMCxYdFtoXT1YdFtkXT1YdFtDXT1YdFtwXT1YdFtBXT1YdFtmXT1YdFttXT1YdFtnXT1YdFt5XT1YdFt2XT1YdFtiXT1YdFt3XT1YdFtTXT1YdFtNXT1YdFtUXT0hMTt2YXIgJHQ9e307JHRbaF09JHRbZF09JHRbQ109JHRbQV09JHRbcF09JHRbZl09JHRba109JHRbTF09JHRbUF09JHRbTl09JHRbSV09JHRbeV09JHRbdl09JHRbYl09JHRbd109JHRbU109JHRbTV09JHRbRV09JHRbUl09JHRbT109JHRbel09JHRbRF09ITAsJHRbbV09JHRbZ109JHRbVF09ITE7dmFyIEt0PXsiXFwiOiJcXCIsIiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LFp0PXBhcnNlRmxvYXQsSnQ9cGFyc2VJbnQsUXQ9Im9iamVjdCI9PXR5cGVvZiB2ZSYmdmUmJnZlLk9iamVjdD09PU9iamVjdCYmdmUsdGU9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixlZT1RdHx8dGV8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksbmU9d2UmJiF3ZS5ub2RlVHlwZSYmd2UsaWU9bmUmJnhlJiYheGUubm9kZVR5cGUmJnhlLHJlPWllJiZpZS5leHBvcnRzPT09bmUsb2U9cmUmJlF0LnByb2Nlc3MsYWU9KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBpZSYmaWUucmVxdWlyZSYmaWUucmVxdWlyZSgidXRpbCIpLnR5cGVzfHxvZSYmb2UuYmluZGluZyYmb2UuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpLHNlPWFlJiZhZS5pc0FycmF5QnVmZmVyLGxlPWFlJiZhZS5pc0RhdGUsY2U9YWUmJmFlLmlzTWFwLHVlPWFlJiZhZS5pc1JlZ0V4cCxoZT1hZSYmYWUuaXNTZXQsZGU9YWUmJmFlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiBwZSh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfWZ1bmN0aW9uIGZlKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl07ZShpLGEsbihhKSx0KX1yZXR1cm4gaX1mdW5jdGlvbiBtZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIGdlKHQsZSl7Zm9yKHZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtuLS0mJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH1mdW5jdGlvbiBfZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoIWUodFtuXSxuLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHllKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb31mdW5jdGlvbiBiZSh0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmTmUodCxlLDApPi0xfWZ1bmN0aW9uIFNlKHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfWZ1bmN0aW9uIEVlKHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gVGUodCxlLG4saSl7dmFyIHI9LTEsbz1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJm8mJihuPXRbKytyXSk7KytyPG87KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBDZSh0LGUsbixpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJnImJihuPXRbLS1yXSk7ci0tOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59ZnVuY3Rpb24gQWUodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGk7KWlmKGUodFtuXSxuLHQpKXJldHVybiEwO3JldHVybiExfXZhciBrZT16ZSgibGVuZ3RoIik7ZnVuY3Rpb24gTGUodCxlLG4pe3ZhciBpO3JldHVybiBuKHQsKGZ1bmN0aW9uKHQsbixyKXtpZihlKHQsbixyKSlyZXR1cm4gaT1uLCExfSkpLGl9ZnVuY3Rpb24gUGUodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gTmUodCxlLG4pe3JldHVybiBlPT1lPyhmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9bi0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfSkodCxlLG4pOlBlKHQsUmUsbil9ZnVuY3Rpb24gSWUodCxlLG4saSl7Zm9yKHZhciByPW4tMSxvPXQubGVuZ3RoOysrcjxvOylpZihpKHRbcl0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gUmUodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gT2UodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG4/SGUodCxlKS9uOmx9ZnVuY3Rpb24gemUoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1uP3Q6bltlXX19ZnVuY3Rpb24gRGUoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX19ZnVuY3Rpb24gQmUodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn1mdW5jdGlvbiBIZShlLG4pe2Zvcih2YXIgaSxyPS0xLG89ZS5sZW5ndGg7KytyPG87KXt2YXIgYT1uKGVbcl0pO2EhPT10JiYoaT1pPT09dD9hOmkrYSl9cmV0dXJuIGl9ZnVuY3Rpb24gRmUodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfWZ1bmN0aW9uIFZlKHQpe3JldHVybiB0P3Quc2xpY2UoMCxhbih0KSsxKS5yZXBsYWNlKFEsIiIpOnR9ZnVuY3Rpb24gVWUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX1mdW5jdGlvbiBqZSh0LGUpe3JldHVybiBNZShlLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX1mdW5jdGlvbiBHZSh0LGUpe3JldHVybiB0LmhhcyhlKX1mdW5jdGlvbiBXZSh0LGUpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoOysrbjxpJiZOZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBxZSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS0mJk5lKGUsdFtuXSwwKT4tMTspO3JldHVybiBufWZ1bmN0aW9uIFllKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLGk9MDtuLS07KXRbbl09PT1lJiYrK2k7cmV0dXJuIGl9dmFyIFhlPURlKHsiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwiw4MiOiJBIiwiw4QiOiJBIiwiw4UiOiJBIiwiw6AiOiJhIiwiw6EiOiJhIiwiw6IiOiJhIiwiw6MiOiJhIiwiw6QiOiJhIiwiw6UiOiJhIiwiw4ciOiJDIiwiw6ciOiJjIiwiw5AiOiJEIiwiw7AiOiJkIiwiw4giOiJFIiwiw4kiOiJFIiwiw4oiOiJFIiwiw4siOiJFIiwiw6giOiJlIiwiw6kiOiJlIiwiw6oiOiJlIiwiw6siOiJlIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwiw48iOiJJIiwiw6wiOiJpIiwiw60iOiJpIiwiw64iOiJpIiwiw68iOiJpIiwiw5EiOiJOIiwiw7EiOiJuIiwiw5IiOiJPIiwiw5MiOiJPIiwiw5QiOiJPIiwiw5UiOiJPIiwiw5YiOiJPIiwiw5giOiJPIiwiw7IiOiJvIiwiw7MiOiJvIiwiw7QiOiJvIiwiw7UiOiJvIiwiw7YiOiJvIiwiw7giOiJvIiwiw5kiOiJVIiwiw5oiOiJVIiwiw5siOiJVIiwiw5wiOiJVIiwiw7kiOiJ1Iiwiw7oiOiJ1Iiwiw7siOiJ1Iiwiw7wiOiJ1Iiwiw50iOiJZIiwiw70iOiJ5Iiwiw78iOiJ5Iiwiw4YiOiJBZSIsIsOmIjoiYWUiLCLDniI6IlRoIiwiw74iOiJ0aCIsIsOfIjoic3MiLCLEgCI6IkEiLCLEgiI6IkEiLCLEhCI6IkEiLCLEgSI6ImEiLCLEgyI6ImEiLCLEhSI6ImEiLCLEhiI6IkMiLCLEiCI6IkMiLCLEiiI6IkMiLCLEjCI6IkMiLCLEhyI6ImMiLCLEiSI6ImMiLCLEiyI6ImMiLCLEjSI6ImMiLCLEjiI6IkQiLCLEkCI6IkQiLCLEjyI6ImQiLCLEkSI6ImQiLCLEkiI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLEmCI6IkUiLCLEmiI6IkUiLCLEkyI6ImUiLCLElSI6ImUiLCLElyI6ImUiLCLEmSI6ImUiLCLEmyI6ImUiLCLEnCI6IkciLCLEniI6IkciLCLEoCI6IkciLCLEoiI6IkciLCLEnSI6ImciLCLEnyI6ImciLCLEoSI6ImciLCLEoyI6ImciLCLEpCI6IkgiLCLEpiI6IkgiLCLEpSI6ImgiLCLEpyI6ImgiLCLEqCI6IkkiLCLEqiI6IkkiLCLErCI6IkkiLCLEriI6IkkiLCLEsCI6IkkiLCLEqSI6ImkiLCLEqyI6ImkiLCLErSI6ImkiLCLEryI6ImkiLCLEsSI6ImkiLCLEtCI6IkoiLCLEtSI6ImoiLCLEtiI6IksiLCLEtyI6ImsiLCLEuCI6ImsiLCLEuSI6IkwiLCLEuyI6IkwiLCLEvSI6IkwiLCLEvyI6IkwiLCLFgSI6IkwiLCLEuiI6ImwiLCLEvCI6ImwiLCLEviI6ImwiLCLFgCI6ImwiLCLFgiI6ImwiLCLFgyI6Ik4iLCLFhSI6Ik4iLCLFhyI6Ik4iLCLFiiI6Ik4iLCLFhCI6Im4iLCLFhiI6Im4iLCLFiCI6Im4iLCLFiyI6Im4iLCLFjCI6Ik8iLCLFjiI6Ik8iLCLFkCI6Ik8iLCLFjSI6Im8iLCLFjyI6Im8iLCLFkSI6Im8iLCLFlCI6IlIiLCLFliI6IlIiLCLFmCI6IlIiLCLFlSI6InIiLCLFlyI6InIiLCLFmSI6InIiLCLFmiI6IlMiLCLFnCI6IlMiLCLFniI6IlMiLCLFoCI6IlMiLCLFmyI6InMiLCLFnSI6InMiLCLFnyI6InMiLCLFoSI6InMiLCLFoiI6IlQiLCLFpCI6IlQiLCLFpiI6IlQiLCLFoyI6InQiLCLFpSI6InQiLCLFpyI6InQiLCLFqCI6IlUiLCLFqiI6IlUiLCLFrCI6IlUiLCLFriI6IlUiLCLFsCI6IlUiLCLFsiI6IlUiLCLFqSI6InUiLCLFqyI6InUiLCLFrSI6InUiLCLFryI6InUiLCLFsSI6InUiLCLFsyI6InUiLCLFtCI6IlciLCLFtSI6InciLCLFtiI6IlkiLCLFtyI6InkiLCLFuCI6IlkiLCLFuSI6IloiLCLFuyI6IloiLCLFvSI6IloiLCLFuiI6InoiLCLFvCI6InoiLCLFviI6InoiLCLEsiI6IklKIiwixLMiOiJpaiIsIsWSIjoiT2UiLCLFkyI6Im9lIiwixYkiOiInbiIsIsW/IjoicyJ9KSwkZT1EZSh7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pO2Z1bmN0aW9uIEtlKHQpe3JldHVybiJcXCIrS3RbdF19ZnVuY3Rpb24gWmUodCl7cmV0dXJuIEd0LnRlc3QodCl9ZnVuY3Rpb24gSmUodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7blsrK2VdPVtpLHRdfSkpLG59ZnVuY3Rpb24gUWUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fWZ1bmN0aW9uIHRuKHQsZSl7Zm9yKHZhciBuPS0xLHI9dC5sZW5ndGgsbz0wLGE9W107KytuPHI7KXt2YXIgcz10W25dO3MhPT1lJiZzIT09aXx8KHRbbl09aSxhW28rK109bil9cmV0dXJuIGF9ZnVuY3Rpb24gZW4odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59ZnVuY3Rpb24gbm4odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT1bdCx0XX0pKSxufWZ1bmN0aW9uIHJuKHQpe3JldHVybiBaZSh0KT8oZnVuY3Rpb24gZSh0KXtmb3IodmFyIGU9VXQubGFzdEluZGV4PTA7VXQudGVzdCh0KTspKytlO3JldHVybiBlfSkodCk6a2UodCl9ZnVuY3Rpb24gb24odCl7cmV0dXJuIFplKHQpPyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm1hdGNoKFV0KXx8W119KSh0KTooZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KSh0KX1mdW5jdGlvbiBhbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZ0dC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfXZhciBzbj1EZSh7IiZhbXA7IjoiJiIsIiZsdDsiOiI8IiwiJmd0OyI6Ij4iLCImcXVvdDsiOiciJywiJiMzOTsiOiInIn0pLGxuPShmdW5jdGlvbiB0dChfdCl7dmFyIHl0LHZ0PShfdD1udWxsPT1fdD9lZTpsbi5kZWZhdWx0cyhlZS5PYmplY3QoKSxfdCxsbi5waWNrKGVlLHF0KSkpLkFycmF5LGJ0PV90LkRhdGUseHQ9X3QuRXJyb3Isd3Q9X3QuRnVuY3Rpb24sU3Q9X3QuTWF0aCxNdD1fdC5PYmplY3QsRXQ9X3QuUmVnRXhwLFR0PV90LlN0cmluZyxDdD1fdC5UeXBlRXJyb3IsQXQ9dnQucHJvdG90eXBlLGt0PU10LnByb3RvdHlwZSxMdD1fdFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sUHQ9d3QucHJvdG90eXBlLnRvU3RyaW5nLE50PWt0Lmhhc093blByb3BlcnR5LEl0PTAsUnQ9KHl0PS9bXi5dKyQvLmV4ZWMoTHQmJkx0LmtleXMmJkx0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIit5dDoiIixPdD1rdC50b1N0cmluZyx6dD1QdC5jYWxsKE10KSxEdD1lZS5fLEJ0PUV0KCJeIitQdC5jYWxsKE50KS5yZXBsYWNlKFosIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksSHQ9cmU/X3QuQnVmZmVyOnQsVXQ9X3QuU3ltYm9sLEd0PV90LlVpbnQ4QXJyYXksS3Q9SHQ/SHQuYWxsb2NVbnNhZmU6dCxRdD1RZShNdC5nZXRQcm90b3R5cGVPZixNdCksdGU9TXQuY3JlYXRlLG5lPWt0LnByb3BlcnR5SXNFbnVtZXJhYmxlLGllPUF0LnNwbGljZSxvZT1VdD9VdC5pc0NvbmNhdFNwcmVhZGFibGU6dCxhZT1VdD9VdC5pdGVyYXRvcjp0LHZlPVV0P1V0LnRvU3RyaW5nVGFnOnQseGU9KGZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVBvKE10LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KSgpLHdlPV90LmNsZWFyVGltZW91dCE9PWVlLmNsZWFyVGltZW91dCYmX3QuY2xlYXJUaW1lb3V0LGtlPWJ0JiZidC5ub3chPT1lZS5EYXRlLm5vdyYmYnQubm93LERlPV90LnNldFRpbWVvdXQhPT1lZS5zZXRUaW1lb3V0JiZfdC5zZXRUaW1lb3V0LGNuPVN0LmNlaWwsdW49U3QuZmxvb3IsaG49TXQuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGRuPUh0P0h0LmlzQnVmZmVyOnQscG49X3QuaXNGaW5pdGUsZm49QXQuam9pbixtbj1RZShNdC5rZXlzLE10KSxnbj1TdC5tYXgsX249U3QubWluLHluPWJ0Lm5vdyx2bj1fdC5wYXJzZUludCxibj1TdC5yYW5kb20seG49QXQucmV2ZXJzZSx3bj1QbyhfdCwiRGF0YVZpZXciKSxTbj1QbyhfdCwiTWFwIiksTW49UG8oX3QsIlByb21pc2UiKSxFbj1QbyhfdCwiU2V0IiksVG49UG8oX3QsIldlYWtNYXAiKSxDbj1QbyhNdCwiY3JlYXRlIiksQW49VG4mJm5ldyBUbixrbj17fSxMbj1vYSh3biksUG49b2EoU24pLE5uPW9hKE1uKSxJbj1vYShFbiksUm49b2EoVG4pLE9uPVV0P1V0LnByb3RvdHlwZTp0LHpuPU9uP09uLnZhbHVlT2Y6dCxEbj1Pbj9Pbi50b1N0cmluZzp0O2Z1bmN0aW9uIEJuKHQpe2lmKE1zKHQpJiYhaHModCkmJiEodCBpbnN0YW5jZW9mIFVuKSl7aWYodCBpbnN0YW5jZW9mIFZuKXJldHVybiB0O2lmKE50LmNhbGwodCwiX193cmFwcGVkX18iKSlyZXR1cm4gYWEodCl9cmV0dXJuIG5ldyBWbih0KX12YXIgSG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZnVuY3Rpb24obil7aWYoIVNzKG4pKXJldHVybnt9O2lmKHRlKXJldHVybiB0ZShuKTtlLnByb3RvdHlwZT1uO3ZhciBpPW5ldyBlO3JldHVybiBlLnByb3RvdHlwZT10LGl9fSkoKTtmdW5jdGlvbiBGbigpe31mdW5jdGlvbiBWbihlLG4pe3RoaXMuX193cmFwcGVkX189ZSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19jaGFpbl9fPSEhbix0aGlzLl9faW5kZXhfXz0wLHRoaXMuX192YWx1ZXNfXz10fWZ1bmN0aW9uIFVuKHQpe3RoaXMuX193cmFwcGVkX189dCx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19kaXJfXz0xLHRoaXMuX19maWx0ZXJlZF9fPSExLHRoaXMuX19pdGVyYXRlZXNfXz1bXSx0aGlzLl9fdGFrZUNvdW50X189Yyx0aGlzLl9fdmlld3NfXz1bXX1mdW5jdGlvbiBqbih0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1mdW5jdGlvbiBHbih0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1mdW5jdGlvbiBXbih0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1mdW5jdGlvbiBxbih0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgV247KytlPG47KXRoaXMuYWRkKHRbZV0pfWZ1bmN0aW9uIFluKHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IEduKHQpO3RoaXMuc2l6ZT1lLnNpemV9ZnVuY3Rpb24gWG4odCxlKXt2YXIgbj1ocyh0KSxpPSFuJiZ1cyh0KSxyPSFuJiYhaSYmZ3ModCksbz0hbiYmIWkmJiFyJiZPcyh0KSxhPW58fGl8fHJ8fG8scz1hP0ZlKHQubGVuZ3RoLFR0KTpbXSxsPXMubGVuZ3RoO2Zvcih2YXIgYyBpbiB0KSFlJiYhTnQuY2FsbCh0LGMpfHxhJiYoImxlbmd0aCI9PWN8fHImJigib2Zmc2V0Ij09Y3x8InBhcmVudCI9PWMpfHxvJiYoImJ1ZmZlciI9PWN8fCJieXRlTGVuZ3RoIj09Y3x8ImJ5dGVPZmZzZXQiPT1jKXx8Qm8oYyxsKSl8fHMucHVzaChjKTtyZXR1cm4gc31mdW5jdGlvbiAkbihlKXt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj9lW3ByKDAsbi0xKV06dH1mdW5jdGlvbiBLbih0LGUpe3JldHVybiBlYShYcih0KSxvaShlLDAsdC5sZW5ndGgpKX1mdW5jdGlvbiBabih0KXtyZXR1cm4gZWEoWHIodCkpfWZ1bmN0aW9uIEpuKGUsbixpKXsoaSE9PXQmJiFzcyhlW25dLGkpfHxpPT09dCYmIShuIGluIGUpKSYmaWkoZSxuLGkpfWZ1bmN0aW9uIFFuKGUsbixpKXt2YXIgcj1lW25dO050LmNhbGwoZSxuKSYmc3MocixpKSYmKGkhPT10fHxuIGluIGUpfHxpaShlLG4saSl9ZnVuY3Rpb24gdGkodCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tOylpZihzcyh0W25dWzBdLGUpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIGVpKHQsZSxuLGkpe3JldHVybiBOaSh0LChmdW5jdGlvbih0LHIsbyl7ZShpLHQsbih0KSxvKX0pKSxpfWZ1bmN0aW9uIG5pKHQsZSl7cmV0dXJuIHQmJiRyKGUscmwoZSksdCl9ZnVuY3Rpb24gaWkodCxlLG4peyJfX3Byb3RvX18iPT1lJiZ4ZT94ZSh0LGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm4sd3JpdGFibGU6ITB9KTp0W2VdPW59ZnVuY3Rpb24gcmkoZSxuKXtmb3IodmFyIGk9LTEscj1uLmxlbmd0aCxvPXZ0KHIpLGE9bnVsbD09ZTsrK2k8cjspb1tpXT1hP3Q6UXMoZSxuW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBvaShlLG4saSl7cmV0dXJuIGU9PWUmJihpIT09dCYmKGU9ZTw9aT9lOmkpLG4hPT10JiYoZT1lPj1uP2U6bikpLGV9ZnVuY3Rpb24gYWkoZSxuLGkscixvLGEpe3ZhciBzLGw9MSZuLGM9MiZuLHU9NCZuO2lmKGkmJihzPW8/aShlLHIsbyxhKTppKGUpKSxzIT09dClyZXR1cm4gcztpZighU3MoZSkpcmV0dXJuIGU7dmFyIGQ9aHMoZSk7aWYoZCl7aWYocz0oZnVuY3Rpb24gbSh0KXt2YXIgZT10Lmxlbmd0aCxuPW5ldyB0LmNvbnN0cnVjdG9yKGUpO3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJk50LmNhbGwodCwiaW5kZXgiKSYmKG4uaW5kZXg9dC5pbmRleCxuLmlucHV0PXQuaW5wdXQpLG59KShlKSwhbClyZXR1cm4gWHIoZSxzKX1lbHNle3ZhciB4PVJvKGUpLFQ9eD09Z3x8eD09XztpZihncyhlKSlyZXR1cm4gVXIoZSxsKTtpZih4PT1ifHx4PT1ofHxUJiYhbyl7aWYocz1jfHxUP3t9OnpvKGUpLCFsKXJldHVybiBjPyhmdW5jdGlvbiBIKHQsZSl7cmV0dXJuICRyKHQsSW8odCksZSl9KShlLChmdW5jdGlvbiBCKHQsZSl7cmV0dXJuIHQmJiRyKGUsb2woZSksdCl9KShzLGUpKTooZnVuY3Rpb24gRih0LGUpe3JldHVybiAkcih0LE5vKHQpLGUpfSkoZSxuaShzLGUpKX1lbHNle2lmKCEkdFt4XSlyZXR1cm4gbz9lOnt9O3M9KGZ1bmN0aW9uIFYodCxlLG4pe3ZhciBpPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UgQzpyZXR1cm4ganIodCk7Y2FzZSBwOmNhc2UgZjpyZXR1cm4gbmV3IGkoK3QpO2Nhc2UgQTpyZXR1cm4oZnVuY3Rpb24gcih0LGUpe3ZhciBuPWU/anIodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSkodCxuKTtjYXNlIGs6Y2FzZSBMOmNhc2UgUDpjYXNlIE46Y2FzZSBJOmNhc2UgUjpjYXNlIE86Y2FzZSB6OmNhc2UgRDpyZXR1cm4gR3IodCxuKTtjYXNlIHk6cmV0dXJuIG5ldyBpO2Nhc2UgdjpjYXNlIE06cmV0dXJuIG5ldyBpKHQpO2Nhc2UgdzpyZXR1cm4oZnVuY3Rpb24gbyh0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LnNvdXJjZSxsdC5leGVjKHQpKTtyZXR1cm4gZS5sYXN0SW5kZXg9dC5sYXN0SW5kZXgsZX0pKHQpO2Nhc2UgUzpyZXR1cm4gbmV3IGk7Y2FzZSBFOnJldHVybihmdW5jdGlvbiBhKHQpe3JldHVybiB6bj9NdCh6bi5jYWxsKHQpKTp7fX0pKHQpfX0pKGUseCxsKX19YXx8KGE9bmV3IFluKTt2YXIgVT1hLmdldChlKTtpZihVKXJldHVybiBVO2Euc2V0KGUscyksUHMoZSk/ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtzLmFkZChhaSh0LG4saSx0LGUsYSkpfSkpOkVzKGUpJiZlLmZvckVhY2goKGZ1bmN0aW9uKHQscil7cy5zZXQocixhaSh0LG4saSxyLGUsYSkpfSkpO3ZhciBqPWQ/dDoodT9jP01vOlNvOmM/b2w6cmwpKGUpO3JldHVybiBtZShqfHxlLChmdW5jdGlvbih0LHIpe2omJih0PWVbcj10XSksUW4ocyxyLGFpKHQsbixpLHIsZSxhKSl9KSksc31mdW5jdGlvbiBzaShlLG4saSl7dmFyIHI9aS5sZW5ndGg7aWYobnVsbD09ZSlyZXR1cm4hcjtmb3IoZT1NdChlKTtyLS07KXt2YXIgbz1pW3JdLGE9ZVtvXTtpZihhPT09dCYmIShvIGluIGUpfHwhKDAsbltvXSkoYSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbGkobixpLHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBDdChlKTtyZXR1cm4gWm8oKGZ1bmN0aW9uKCl7bi5hcHBseSh0LHIpfSksaSl9ZnVuY3Rpb24gY2kodCxlLG4saSl7dmFyIHI9LTEsbz1iZSxhPSEwLHM9dC5sZW5ndGgsbD1bXSxjPWUubGVuZ3RoO2lmKCFzKXJldHVybiBsO24mJihlPU1lKGUsVWUobikpKSxpPyhvPVNlLGE9ITEpOmUubGVuZ3RoPj0yMDAmJihvPUdlLGE9ITEsZT1uZXcgcW4oZSkpO3Q6Zm9yKDsrK3I8czspe3ZhciB1PXRbcl0saD1udWxsPT1uP3U6bih1KTtpZih1PWl8fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9YztkLS07KWlmKGVbZF09PT1oKWNvbnRpbnVlIHQ7bC5wdXNoKHUpfWVsc2UgbyhlLGgsaSl8fGwucHVzaCh1KX1yZXR1cm4gbH1Cbi50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6VyxldmFsdWF0ZTpxLGludGVycG9sYXRlOlksdmFyaWFibGU6IiIsaW1wb3J0czp7XzpCbn19LChCbi5wcm90b3R5cGU9Rm4ucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcj1CbiwoVm4ucHJvdG90eXBlPUhuKEZuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVZuLChVbi5wcm90b3R5cGU9SG4oRm4ucHJvdG90eXBlKSkuY29uc3RydWN0b3I9VW4sam4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHVpKCl7dGhpcy5fX2RhdGFfXz1Dbj9DbihudWxsKTp7fSx0aGlzLnNpemU9MH0sam4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBoaSh0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sam4ucHJvdG90eXBlLmdldD1mdW5jdGlvbiBkaShlKXt2YXIgaT10aGlzLl9fZGF0YV9fO2lmKENuKXt2YXIgcj1pW2VdO3JldHVybiByPT09bj90OnJ9cmV0dXJuIE50LmNhbGwoaSxlKT9pW2VdOnR9LGpuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gcGkoZSl7dmFyIG49dGhpcy5fX2RhdGFfXztyZXR1cm4gQ24/bltlXSE9PXQ6TnQuY2FsbChuLGUpfSxqbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIGZpKGUsaSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyhlKT8wOjEscltlXT1DbiYmaT09PXQ/bjppLHRoaXN9LEduLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBtaSgpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEduLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gZ2kodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPXRpKGUsdCk7cmV0dXJuIShuPDB8fChuPT1lLmxlbmd0aC0xP2UucG9wKCk6aWUuY2FsbChlLG4sMSksLS10aGlzLnNpemUsMCkpfSxHbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIF9pKGUpe3ZhciBuPXRoaXMuX19kYXRhX18saT10aShuLGUpO3JldHVybiBpPDA/dDpuW2ldWzFdfSxHbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIHlpKHQpe3JldHVybiB0aSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxHbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIHZpKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPXRpKG4sdCk7cmV0dXJuIGk8MD8oKyt0aGlzLnNpemUsbi5wdXNoKFt0LGVdKSk6bltpXVsxXT1lLHRoaXN9LFduLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBiaSgpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IGpuLG1hcDpuZXcoU258fEduKSxzdHJpbmc6bmV3IGpufX0sV24ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiB4aSh0KXt2YXIgZT1rbyh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxXbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIHdpKHQpe3JldHVybiBrbyh0aGlzLHQpLmdldCh0KX0sV24ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBTaSh0KXtyZXR1cm4ga28odGhpcyx0KS5oYXModCl9LFduLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gTWkodCxlKXt2YXIgbj1rbyh0aGlzLHQpLGk9bi5zaXplO3JldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZSs9bi5zaXplPT1pPzA6MSx0aGlzfSxxbi5wcm90b3R5cGUuYWRkPXFuLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uIEVpKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LG4pLHRoaXN9LHFuLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gVGkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxZbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gQ2koKXt0aGlzLl9fZGF0YV9fPW5ldyBHbix0aGlzLnNpemU9MH0sWW4ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBBaSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUsbn0sWW4ucHJvdG90eXBlLmdldD1mdW5jdGlvbiBraSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LFluLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gTGkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxZbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIFBpKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXztpZihuIGluc3RhbmNlb2YgR24pe3ZhciBpPW4uX19kYXRhX187aWYoIVNufHxpLmxlbmd0aDwxOTkpcmV0dXJuIGkucHVzaChbdCxlXSksdGhpcy5zaXplPSsrbi5zaXplLHRoaXM7bj10aGlzLl9fZGF0YV9fPW5ldyBXbihpKX1yZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemU9bi5zaXplLHRoaXN9O3ZhciBOaT1KcihGaSksSWk9SnIoVmksITApO2Z1bmN0aW9uIFJpKHQsZSl7dmFyIG49ITA7cmV0dXJuIE5pKHQsKGZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4gbj0hIWUodCxpLHIpfSkpLG59ZnVuY3Rpb24gT2koZSxuLGkpe2Zvcih2YXIgcj0tMSxvPWUubGVuZ3RoOysrcjxvOyl7dmFyIGE9ZVtyXSxzPW4oYSk7aWYobnVsbCE9cyYmKGw9PT10P3M9PXMmJiFScyhzKTppKHMsbCkpKXZhciBsPXMsYz1hfXJldHVybiBjfWZ1bmN0aW9uIHppKHQsZSl7dmFyIG49W107cmV0dXJuIE5pKHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gRGkodCxlLG4saSxyKXt2YXIgbz0tMSxhPXQubGVuZ3RoO2ZvcihufHwobj1Ebykscnx8KHI9W10pOysrbzxhOyl7dmFyIHM9dFtvXTtlPjAmJm4ocyk/ZT4xP0RpKHMsZS0xLG4saSxyKTpFZShyLHMpOml8fChyW3IubGVuZ3RoXT1zKX1yZXR1cm4gcn12YXIgQmk9UXIoKSxIaT1RcighMCk7ZnVuY3Rpb24gRmkodCxlKXtyZXR1cm4gdCYmQmkodCxlLHJsKX1mdW5jdGlvbiBWaSh0LGUpe3JldHVybiB0JiZIaSh0LGUscmwpfWZ1bmN0aW9uIFVpKHQsZSl7cmV0dXJuIHllKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBicyh0W2VdKX0pKX1mdW5jdGlvbiBqaShlLG4pe2Zvcih2YXIgaT0wLHI9KG49QnIobixlKSkubGVuZ3RoO251bGwhPWUmJmk8cjspZT1lW3JhKG5baSsrXSldO3JldHVybiBpJiZpPT1yP2U6dH1mdW5jdGlvbiBHaSh0LGUsbil7dmFyIGk9ZSh0KTtyZXR1cm4gaHModCk/aTpFZShpLG4odCkpfWZ1bmN0aW9uIFdpKGUpe3JldHVybiBudWxsPT1lP2U9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjp2ZSYmdmUgaW4gTXQoZSk/KGZ1bmN0aW9uIG4oZSl7dmFyIG49TnQuY2FsbChlLHZlKSxpPWVbdmVdO3RyeXtlW3ZlXT10O3ZhciByPSEwfWNhdGNoKHQpe312YXIgbz1PdC5jYWxsKGUpO3JldHVybiByJiYobj9lW3ZlXT1pOmRlbGV0ZSBlW3ZlXSksb30pKGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiBPdC5jYWxsKHQpfSkoZSl9ZnVuY3Rpb24gcWkodCxlKXtyZXR1cm4gdD5lfWZ1bmN0aW9uIFlpKHQsZSl7cmV0dXJuIG51bGwhPXQmJk50LmNhbGwodCxlKX1mdW5jdGlvbiBYaSh0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE10KHQpfWZ1bmN0aW9uICRpKGUsbixpKXtmb3IodmFyIHI9aT9TZTpiZSxvPWVbMF0ubGVuZ3RoLGE9ZS5sZW5ndGgscz1hLGw9dnQoYSksYz0xLzAsdT1bXTtzLS07KXt2YXIgaD1lW3NdO3MmJm4mJihoPU1lKGgsVWUobikpKSxjPV9uKGgubGVuZ3RoLGMpLGxbc109IWkmJihufHxvPj0xMjAmJmgubGVuZ3RoPj0xMjApP25ldyBxbihzJiZoKTp0fWg9ZVswXTt2YXIgZD0tMSxwPWxbMF07dDpmb3IoOysrZDxvJiZ1Lmxlbmd0aDxjOyl7dmFyIGY9aFtkXSxtPW4/bihmKTpmO2lmKGY9aXx8MCE9PWY/ZjowLCEocD9HZShwLG0pOnIodSxtLGkpKSl7Zm9yKHM9YTstLXM7KXt2YXIgZz1sW3NdO2lmKCEoZz9HZShnLG0pOnIoZVtzXSxtLGkpKSljb250aW51ZSB0fXAmJnAucHVzaChtKSx1LnB1c2goZil9fXJldHVybiB1fWZ1bmN0aW9uIEtpKGUsbixpKXt2YXIgcj1udWxsPT0oZT1ZbyhlLG49QnIobixlKSkpP2U6ZVtyYShfYShuKSldO3JldHVybiBudWxsPT1yP3Q6cGUocixlLGkpfWZ1bmN0aW9uIFppKHQpe3JldHVybiBNcyh0KSYmV2kodCk9PWh9ZnVuY3Rpb24gSmkoZSxuLGkscixvKXtyZXR1cm4gZT09PW58fChudWxsPT1lfHxudWxsPT1ufHwhTXMoZSkmJiFNcyhuKT9lIT1lJiZuIT1uOihmdW5jdGlvbiBhKGUsbixpLHIsbyxzKXt2YXIgbD1ocyhlKSxjPWhzKG4pLHU9bD9kOlJvKGUpLGc9Yz9kOlJvKG4pLF89KHU9dT09aD9iOnUpPT1iLHg9KGc9Zz09aD9iOmcpPT1iLFQ9dT09ZztpZihUJiZncyhlKSl7aWYoIWdzKG4pKXJldHVybiExO2w9ITAsXz0hMX1pZihUJiYhXylyZXR1cm4gc3x8KHM9bmV3IFluKSxsfHxPcyhlKT94byhlLG4saSxyLG8scyk6KGZ1bmN0aW9uIGsodCxlLG4saSxyLG8sYSl7c3dpdGNoKG4pe2Nhc2UgQTppZih0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8dC5ieXRlT2Zmc2V0IT1lLmJ5dGVPZmZzZXQpcmV0dXJuITE7dD10LmJ1ZmZlcixlPWUuYnVmZmVyO2Nhc2UgQzpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhbyhuZXcgR3QodCksbmV3IEd0KGUpKSk7Y2FzZSBwOmNhc2UgZjpjYXNlIHY6cmV0dXJuIHNzKCt0LCtlKTtjYXNlIG06cmV0dXJuIHQubmFtZT09ZS5uYW1lJiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIHc6Y2FzZSBNOnJldHVybiB0PT1lKyIiO2Nhc2UgeTp2YXIgcz1KZTtjYXNlIFM6aWYoc3x8KHM9ZW4pLHQuc2l6ZSE9ZS5zaXplJiYhKDEmaSkpcmV0dXJuITE7dmFyIGw9YS5nZXQodCk7aWYobClyZXR1cm4gbD09ZTtpfD0yLGEuc2V0KHQsZSk7dmFyIGM9eG8ocyh0KSxzKGUpLGkscixvLGEpO3JldHVybiBhLmRlbGV0ZSh0KSxjO2Nhc2UgRTppZih6bilyZXR1cm4gem4uY2FsbCh0KT09em4uY2FsbChlKX1yZXR1cm4hMX0pKGUsbix1LGkscixvLHMpO2lmKCEoMSZpKSl7dmFyIEw9XyYmTnQuY2FsbChlLCJfX3dyYXBwZWRfXyIpLFA9eCYmTnQuY2FsbChuLCJfX3dyYXBwZWRfXyIpO2lmKEx8fFApe3ZhciBOPUw/ZS52YWx1ZSgpOmUsST1QP24udmFsdWUoKTpuO3JldHVybiBzfHwocz1uZXcgWW4pLG8oTixJLGkscixzKX19cmV0dXJuISFUJiYoc3x8KHM9bmV3IFluKSwoZnVuY3Rpb24gUihlLG4saSxyLG8sYSl7dmFyIHM9MSZpLGw9U28oZSksYz1sLmxlbmd0aDtpZihjIT1TbyhuKS5sZW5ndGgmJiFzKXJldHVybiExO2Zvcih2YXIgdT1jO3UtLTspe3ZhciBoPWxbdV07aWYoIShzP2ggaW4gbjpOdC5jYWxsKG4saCkpKXJldHVybiExfXZhciBkPWEuZ2V0KGUpLHA9YS5nZXQobik7aWYoZCYmcClyZXR1cm4gZD09biYmcD09ZTt2YXIgZj0hMDthLnNldChlLG4pLGEuc2V0KG4sZSk7Zm9yKHZhciBtPXM7Kyt1PGM7KXt2YXIgZz1lW2g9bFt1XV0sXz1uW2hdO2lmKHIpdmFyIHk9cz9yKF8sZyxoLG4sZSxhKTpyKGcsXyxoLGUsbixhKTtpZighKHk9PT10P2c9PT1ffHxvKGcsXyxpLHIsYSk6eSkpe2Y9ITE7YnJlYWt9bXx8KG09ImNvbnN0cnVjdG9yIj09aCl9aWYoZiYmIW0pe3ZhciB2PWUuY29uc3RydWN0b3IsYj1uLmNvbnN0cnVjdG9yO3Y9PWJ8fCEoImNvbnN0cnVjdG9yImluIGUpfHwhKCJjb25zdHJ1Y3RvciJpbiBuKXx8ImZ1bmN0aW9uIj09dHlwZW9mIHYmJnYgaW5zdGFuY2VvZiB2JiYiZnVuY3Rpb24iPT10eXBlb2YgYiYmYiBpbnN0YW5jZW9mIGJ8fChmPSExKX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobiksZn0pKGUsbixpLHIsbyxzKSl9KShlLG4saSxyLEppLG8pKX1mdW5jdGlvbiBRaShlLG4saSxyKXt2YXIgbz1pLmxlbmd0aCxhPW8scz0hcjtpZihudWxsPT1lKXJldHVybiFhO2ZvcihlPU10KGUpO28tLTspe3ZhciBsPWlbb107aWYocyYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIGM9KGw9aVtvXSlbMF0sdT1lW2NdLGg9bFsxXTtpZihzJiZsWzJdKXtpZih1PT09dCYmIShjIGluIGUpKXJldHVybiExfWVsc2V7dmFyIGQ9bmV3IFluO2lmKHIpdmFyIHA9cih1LGgsYyxlLG4sZCk7aWYoIShwPT09dD9KaShoLHUsMyxyLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH1mdW5jdGlvbiB0cih0KXtyZXR1cm4hKCFTcyh0KXx8KGZ1bmN0aW9uIGUodCl7cmV0dXJuISFSdCYmUnQgaW4gdH0pKHQpKSYmKGJzKHQpP0J0Omh0KS50ZXN0KG9hKHQpKX1mdW5jdGlvbiBlcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/TGw6Im9iamVjdCI9PXR5cGVvZiB0P2hzKHQpP2FyKHRbMF0sdFsxXSk6b3IodCk6SGwodCl9ZnVuY3Rpb24gbnIodCl7aWYoIWpvKHQpKXJldHVybiBtbih0KTt2YXIgZT1bXTtmb3IodmFyIG4gaW4gTXQodCkpTnQuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9ZnVuY3Rpb24gaXIodCxlKXtyZXR1cm4gdDxlfWZ1bmN0aW9uIHJyKHQsZSl7dmFyIG49LTEsaT1mcyh0KT92dCh0Lmxlbmd0aCk6W107cmV0dXJuIE5pKHQsKGZ1bmN0aW9uKHQscixvKXtpWysrbl09ZSh0LHIsbyl9KSksaX1mdW5jdGlvbiBvcih0KXt2YXIgZT1Mbyh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/V28oZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fFFpKG4sdCxlKX19ZnVuY3Rpb24gYXIoZSxuKXtyZXR1cm4gRm8oZSkmJkdvKG4pP1dvKHJhKGUpLG4pOmZ1bmN0aW9uKGkpe3ZhciByPVFzKGksZSk7cmV0dXJuIHI9PT10JiZyPT09bj90bChpLGUpOkppKG4sciwzKX19ZnVuY3Rpb24gc3IoZSxuLGkscixvKXtlIT09biYmQmkobiwoZnVuY3Rpb24oYSxzKXtpZihvfHwobz1uZXcgWW4pLFNzKGEpKSEoZnVuY3Rpb24gbChlLG4saSxyLG8sYSxzKXt2YXIgbD0kbyhlLGkpLGM9JG8obixpKSx1PXMuZ2V0KGMpO2lmKHUpSm4oZSxpLHUpO2Vsc2V7dmFyIGg9YT9hKGwsYyxpKyIiLGUsbixzKTp0LGQ9aD09PXQ7aWYoZCl7dmFyIHA9aHMoYyksZj0hcCYmZ3MoYyksbT0hcCYmIWYmJk9zKGMpO2g9YyxwfHxmfHxtP2hzKGwpP2g9bDptcyhsKT9oPVhyKGwpOmY/KGQ9ITEsaD1VcihjLCEwKSk6bT8oZD0hMSxoPUdyKGMsITApKTpoPVtdOkFzKGMpfHx1cyhjKT8oaD1sLHVzKGwpP2g9R3MobCk6U3MobCkmJiFicyhsKXx8KGg9em8oYykpKTpkPSExfWQmJihzLnNldChjLGgpLG8oaCxjLHIsYSxzKSxzLmRlbGV0ZShjKSksSm4oZSxpLGgpfX0pKGUsbixzLGksc3IscixvKTtlbHNle3ZhciBjPXI/cigkbyhlLHMpLGEscysiIixlLG4sbyk6dDtjPT09dCYmKGM9YSksSm4oZSxzLGMpfX0pLG9sKX1mdW5jdGlvbiBscihlLG4pe3ZhciBpPWUubGVuZ3RoO2lmKGkpcmV0dXJuIEJvKG4rPW48MD9pOjAsaSk/ZVtuXTp0fWZ1bmN0aW9uIGNyKHQsZSxuKXtlPWUubGVuZ3RoP01lKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBocyh0KT9mdW5jdGlvbihlKXtyZXR1cm4gamkoZSwxPT09dC5sZW5ndGg/dFswXTp0KX06dH0pKTpbTGxdO3ZhciBpPS0xO3JldHVybiBlPU1lKGUsVWUoQW8oKSkpLChmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5sZW5ndGg7Zm9yKHQuc29ydChlKTtuLS07KXRbbl09dFtuXS52YWx1ZTtyZXR1cm4gdH0pKHJyKHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6TWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksaW5kZXg6KytpLHZhbHVlOnR9fSkpLChmdW5jdGlvbih0LGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9LTEscj10LmNyaXRlcmlhLG89ZS5jcml0ZXJpYSxhPXIubGVuZ3RoLHM9bi5sZW5ndGg7KytpPGE7KXt2YXIgbD1XcihyW2ldLG9baV0pO2lmKGwpcmV0dXJuIGk+PXM/bDpsKigiZGVzYyI9PW5baV0/LTE6MSl9cmV0dXJuIHQuaW5kZXgtZS5pbmRleH0pKHQsZSxuKX0pKX1mdW5jdGlvbiB1cih0LGUsbil7Zm9yKHZhciBpPS0xLHI9ZS5sZW5ndGgsbz17fTsrK2k8cjspe3ZhciBhPWVbaV0scz1qaSh0LGEpO24ocyxhKSYmeXIobyxCcihhLHQpLHMpfXJldHVybiBvfWZ1bmN0aW9uIGhyKHQsZSxuLGkpe3ZhciByPWk/SWU6TmUsbz0tMSxhPWUubGVuZ3RoLHM9dDtmb3IodD09PWUmJihlPVhyKGUpKSxuJiYocz1NZSh0LFVlKG4pKSk7KytvPGE7KWZvcih2YXIgbD0wLGM9ZVtvXSx1PW4/bihjKTpjOyhsPXIocyx1LGwsaSkpPi0xOylzIT09dCYmaWUuY2FsbChzLGwsMSksaWUuY2FsbCh0LGwsMSk7cmV0dXJuIHR9ZnVuY3Rpb24gZHIodCxlKXtmb3IodmFyIG49dD9lLmxlbmd0aDowLGk9bi0xO24tLTspe3ZhciByPWVbbl07aWYobj09aXx8ciE9PW8pe3ZhciBvPXI7Qm8ocik/aWUuY2FsbCh0LHIsMSk6THIodCxyKX19cmV0dXJuIHR9ZnVuY3Rpb24gcHIodCxlKXtyZXR1cm4gdCt1bihibigpKihlLXQrMSkpfWZ1bmN0aW9uIGZyKHQsZSl7dmFyIG49IiI7aWYoIXR8fGU8MXx8ZT5zKXJldHVybiBuO2Rve2UlMiYmKG4rPXQpLChlPXVuKGUvMikpJiYodCs9dCl9d2hpbGUoZSk7cmV0dXJuIG59ZnVuY3Rpb24gbXIodCxlKXtyZXR1cm4gSm8ocW8odCxlLExsKSx0KyIiKX1mdW5jdGlvbiBncih0KXtyZXR1cm4gJG4ocGwodCkpfWZ1bmN0aW9uIF9yKHQsZSl7dmFyIG49cGwodCk7cmV0dXJuIGVhKG4sb2koZSwwLG4ubGVuZ3RoKSl9ZnVuY3Rpb24geXIoZSxuLGkscil7aWYoIVNzKGUpKXJldHVybiBlO2Zvcih2YXIgbz0tMSxhPShuPUJyKG4sZSkpLmxlbmd0aCxzPWEtMSxsPWU7bnVsbCE9bCYmKytvPGE7KXt2YXIgYz1yYShuW29dKSx1PWk7aWYoIl9fcHJvdG9fXyI9PT1jfHwiY29uc3RydWN0b3IiPT09Y3x8InByb3RvdHlwZSI9PT1jKXJldHVybiBlO2lmKG8hPXMpe3ZhciBoPWxbY107KHU9cj9yKGgsYyxsKTp0KT09PXQmJih1PVNzKGgpP2g6Qm8obltvKzFdKT9bXTp7fSl9UW4obCxjLHUpLGw9bFtjXX1yZXR1cm4gZX12YXIgdnI9QW4/ZnVuY3Rpb24odCxlKXtyZXR1cm4gQW4uc2V0KHQsZSksdH06TGwsYnI9eGU/ZnVuY3Rpb24odCxlKXtyZXR1cm4geGUodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpDbChlKSx3cml0YWJsZTohMH0pfTpMbDtmdW5jdGlvbiB4cih0KXtyZXR1cm4gZWEocGwodCkpfWZ1bmN0aW9uIHdyKHQsZSxuKXt2YXIgaT0tMSxyPXQubGVuZ3RoO2U8MCYmKGU9LWU+cj8wOnIrZSksKG49bj5yP3I6bik8MCYmKG4rPXIpLHI9ZT5uPzA6bi1lPj4+MCxlPj4+PTA7Zm9yKHZhciBvPXZ0KHIpOysraTxyOylvW2ldPXRbaStlXTtyZXR1cm4gb31mdW5jdGlvbiBTcih0LGUpe3ZhciBuO3JldHVybiBOaSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIShuPWUodCxpLHIpKX0pKSwhIW59ZnVuY3Rpb24gTXIodCxlLG4pe3ZhciBpPTAscj1udWxsPT10P2k6dC5sZW5ndGg7aWYoIm51bWJlciI9PXR5cGVvZiBlJiZlPT1lJiZyPD0yMTQ3NDgzNjQ3KXtmb3IoO2k8cjspe3ZhciBvPWkrcj4+PjEsYT10W29dO251bGwhPT1hJiYhUnMoYSkmJihuP2E8PWU6YTxlKT9pPW8rMTpyPW99cmV0dXJuIHJ9cmV0dXJuIEVyKHQsZSxMbCxuKX1mdW5jdGlvbiBFcihlLG4saSxyKXt2YXIgbz0wLGE9bnVsbD09ZT8wOmUubGVuZ3RoO2lmKDA9PT1hKXJldHVybiAwO2Zvcih2YXIgcz0obj1pKG4pKSE9bixsPW51bGw9PT1uLGM9UnMobiksdT1uPT09dDtvPGE7KXt2YXIgaD11bigobythKS8yKSxkPWkoZVtoXSkscD1kIT09dCxmPW51bGw9PT1kLG09ZD09ZCxnPVJzKGQpO2lmKHMpdmFyIF89cnx8bTtlbHNlIF89dT9tJiYocnx8cCk6bD9tJiZwJiYocnx8IWYpOmM/bSYmcCYmIWYmJihyfHwhZyk6IWYmJiFnJiYocj9kPD1uOmQ8bik7Xz9vPWgrMTphPWh9cmV0dXJuIF9uKGEsNDI5NDk2NzI5NCl9ZnVuY3Rpb24gVHIodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl0scz1lP2UoYSk6YTtpZighbnx8IXNzKHMsbCkpe3ZhciBsPXM7b1tyKytdPTA9PT1hPzA6YX19cmV0dXJuIG99ZnVuY3Rpb24gQ3IodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6UnModCk/bDordH1mdW5jdGlvbiBBcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoaHModCkpcmV0dXJuIE1lKHQsQXIpKyIiO2lmKFJzKHQpKXJldHVybiBEbj9Ebi5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfWZ1bmN0aW9uIGtyKHQsZSxuKXt2YXIgaT0tMSxyPWJlLG89dC5sZW5ndGgsYT0hMCxzPVtdLGw9cztpZihuKWE9ITEscj1TZTtlbHNlIGlmKG8+PTIwMCl7dmFyIGM9ZT9udWxsOm1vKHQpO2lmKGMpcmV0dXJuIGVuKGMpO2E9ITEscj1HZSxsPW5ldyBxbn1lbHNlIGw9ZT9bXTpzO3Q6Zm9yKDsrK2k8bzspe3ZhciB1PXRbaV0saD1lP2UodSk6dTtpZih1PW58fDAhPT11P3U6MCxhJiZoPT1oKXtmb3IodmFyIGQ9bC5sZW5ndGg7ZC0tOylpZihsW2RdPT09aCljb250aW51ZSB0O2UmJmwucHVzaChoKSxzLnB1c2godSl9ZWxzZSByKGwsaCxuKXx8KGwhPT1zJiZsLnB1c2goaCkscy5wdXNoKHUpKX1yZXR1cm4gc31mdW5jdGlvbiBMcih0LGUpe3JldHVybiBudWxsPT0odD1Zbyh0LGU9QnIoZSx0KSkpfHxkZWxldGUgdFtyYShfYShlKSldfWZ1bmN0aW9uIFByKHQsZSxuLGkpe3JldHVybiB5cih0LGUsbihqaSh0LGUpKSxpKX1mdW5jdGlvbiBOcih0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1pP3I6LTE7KGk/by0tOisrbzxyKSYmZSh0W29dLG8sdCk7KTtyZXR1cm4gbj93cih0LGk/MDpvLGk/bysxOnIpOndyKHQsaT9vKzE6MCxpP3I6byl9ZnVuY3Rpb24gSXIodCxlKXt2YXIgbj10O3JldHVybiBuIGluc3RhbmNlb2YgVW4mJihuPW4udmFsdWUoKSksVGUoZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5mdW5jLmFwcGx5KGUudGhpc0FyZyxFZShbdF0sZS5hcmdzKSl9KSxuKX1mdW5jdGlvbiBScih0LGUsbil7dmFyIGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiBpP2tyKHRbMF0pOltdO2Zvcih2YXIgcj0tMSxvPXZ0KGkpOysrcjxpOylmb3IodmFyIGE9dFtyXSxzPS0xOysrczxpOylzIT1yJiYob1tyXT1jaShvW3JdfHxhLHRbc10sZSxuKSk7cmV0dXJuIGtyKERpKG8sMSksZSxuKX1mdW5jdGlvbiBPcihlLG4saSl7Zm9yKHZhciByPS0xLG89ZS5sZW5ndGgsYT1uLmxlbmd0aCxzPXt9OysrcjxvOylpKHMsZVtyXSxyPGE/bltyXTp0KTtyZXR1cm4gc31mdW5jdGlvbiB6cih0KXtyZXR1cm4gbXModCk/dDpbXX1mdW5jdGlvbiBEcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OkxsfWZ1bmN0aW9uIEJyKHQsZSl7cmV0dXJuIGhzKHQpP3Q6Rm8odCxlKT9bdF06bmEoV3ModCkpfXZhciBIcj1tcjtmdW5jdGlvbiBGcihlLG4saSl7dmFyIHI9ZS5sZW5ndGg7cmV0dXJuIGk9aT09PXQ/cjppLCFuJiZpPj1yP2U6d3IoZSxuLGkpfXZhciBWcj13ZXx8ZnVuY3Rpb24odCl7cmV0dXJuIGVlLmNsZWFyVGltZW91dCh0KX07ZnVuY3Rpb24gVXIodCxlKXtpZihlKXJldHVybiB0LnNsaWNlKCk7dmFyIG49dC5sZW5ndGgsaT1LdD9LdChuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9ZnVuY3Rpb24ganIodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IEd0KGUpLnNldChuZXcgR3QodCkpLGV9ZnVuY3Rpb24gR3IodCxlKXt2YXIgbj1lP2pyKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfWZ1bmN0aW9uIFdyKGUsbil7aWYoZSE9PW4pe3ZhciBpPWUhPT10LHI9bnVsbD09PWUsbz1lPT1lLGE9UnMoZSkscz1uIT09dCxsPW51bGw9PT1uLGM9bj09bix1PVJzKG4pO2lmKCFsJiYhdSYmIWEmJmU+bnx8YSYmcyYmYyYmIWwmJiF1fHxyJiZzJiZjfHwhaSYmY3x8IW8pcmV0dXJuIDE7aWYoIXImJiFhJiYhdSYmZTxufHx1JiZpJiZvJiYhciYmIWF8fGwmJmkmJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBxcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPW4ubGVuZ3RoLHM9LTEsbD1lLmxlbmd0aCxjPWduKG8tYSwwKSx1PXZ0KGwrYyksaD0haTsrK3M8bDspdVtzXT1lW3NdO2Zvcig7KytyPGE7KShofHxyPG8pJiYodVtuW3JdXT10W3JdKTtmb3IoO2MtLTspdVtzKytdPXRbcisrXTtyZXR1cm4gdX1mdW5jdGlvbiBZcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPS0xLHM9bi5sZW5ndGgsbD0tMSxjPWUubGVuZ3RoLHU9Z24oby1zLDApLGg9dnQodStjKSxkPSFpOysrcjx1OyloW3JdPXRbcl07Zm9yKHZhciBwPXI7KytsPGM7KWhbcCtsXT1lW2xdO2Zvcig7KythPHM7KShkfHxyPG8pJiYoaFtwK25bYV1dPXRbcisrXSk7cmV0dXJuIGh9ZnVuY3Rpb24gWHIodCxlKXt2YXIgbj0tMSxpPXQubGVuZ3RoO2ZvcihlfHwoZT12dChpKSk7KytuPGk7KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiAkcihlLG4saSxyKXt2YXIgbz0haTtpfHwoaT17fSk7Zm9yKHZhciBhPS0xLHM9bi5sZW5ndGg7KythPHM7KXt2YXIgbD1uW2FdLGM9cj9yKGlbbF0sZVtsXSxsLGksZSk6dDtjPT09dCYmKGM9ZVtsXSksbz9paShpLGwsYyk6UW4oaSxsLGMpfXJldHVybiBpfWZ1bmN0aW9uIEtyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9aHMobik/ZmU6ZWksbz1lP2UoKTp7fTtyZXR1cm4gcihuLHQsQW8oaSwyKSxvKX19ZnVuY3Rpb24gWnIoZSl7cmV0dXJuIG1yKChmdW5jdGlvbihuLGkpe3ZhciByPS0xLG89aS5sZW5ndGgsYT1vPjE/aVtvLTFdOnQscz1vPjI/aVsyXTp0O2ZvcihhPWUubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhvLS0sYSk6dCxzJiZIbyhpWzBdLGlbMV0scykmJihhPW88Mz90OmEsbz0xKSxuPU10KG4pOysrcjxvOyl7dmFyIGw9aVtyXTtsJiZlKG4sbCxyLGEpfXJldHVybiBufSkpfWZ1bmN0aW9uIEpyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZighZnMobikpcmV0dXJuIHQobixpKTtmb3IodmFyIHI9bi5sZW5ndGgsbz1lP3I6LTEsYT1NdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fWZ1bmN0aW9uIFFyKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7Zm9yKHZhciByPS0xLG89TXQoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX1mdW5jdGlvbiB0byhlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9WmUobj1XcyhuKSk/b24obik6dCxyPWk/aVswXTpuLmNoYXJBdCgwKSxvPWk/RnIoaSwxKS5qb2luKCIiKTpuLnNsaWNlKDEpO3JldHVybiByW2VdKCkrb319ZnVuY3Rpb24gZW8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBUZShNbChnbChlKS5yZXBsYWNlKEZ0LCIiKSksdCwiIil9fWZ1bmN0aW9uIG5vKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKTtjYXNlIDU6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSk7Y2FzZSA2OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSk7Y2FzZSA3OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0sZVs1XSxlWzZdKX12YXIgbj1Ibih0LnByb3RvdHlwZSksaT10LmFwcGx5KG4sZSk7cmV0dXJuIFNzKGkpP2k6bn19ZnVuY3Rpb24gaW8oZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz1NdChuKTtpZighZnMobikpe3ZhciBhPUFvKGksMyk7bj1ybChuKSxpPWZ1bmN0aW9uKHQpe3JldHVybiBhKG9bdF0sdCxvKX19dmFyIHM9ZShuLGkscik7cmV0dXJuIHM+LTE/b1thP25bc106c106dH19ZnVuY3Rpb24gcm8obil7cmV0dXJuIHdvKChmdW5jdGlvbihpKXt2YXIgcj1pLmxlbmd0aCxvPXIsYT1Wbi5wcm90b3R5cGUudGhydTtmb3IobiYmaS5yZXZlcnNlKCk7by0tOyl7dmFyIHM9aVtvXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygcyl0aHJvdyBuZXcgQ3QoZSk7aWYoYSYmIWwmJiJ3cmFwcGVyIj09VG8ocykpdmFyIGw9bmV3IFZuKFtdLCEwKX1mb3Iobz1sP286cjsrK288cjspe3ZhciBjPVRvKHM9aVtvXSksdT0id3JhcHBlciI9PWM/RW8ocyk6dDtsPXUmJlZvKHVbMF0pJiY0MjQ9PXVbMV0mJiF1WzRdLmxlbmd0aCYmMT09dVs5XT9sW1RvKHVbMF0pXS5hcHBseShsLHVbM10pOjE9PXMubGVuZ3RoJiZWbyhzKT9sW2NdKCk6bC50aHJ1KHMpfXJldHVybiBmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxlPXRbMF07aWYobCYmMT09dC5sZW5ndGgmJmhzKGUpKXJldHVybiBsLnBsYW50KGUpLnZhbHVlKCk7Zm9yKHZhciBuPTAsbz1yP2lbbl0uYXBwbHkodGhpcyx0KTplOysrbjxyOylvPWlbbl0uY2FsbCh0aGlzLG8pO3JldHVybiBvfX0pKX1mdW5jdGlvbiBvbyhlLG4saSxyLGEscyxsLGMsdSxoKXt2YXIgZD1uJm8scD0xJm4sZj0yJm4sbT0yNCZuLGc9NTEyJm4sXz1mP3Q6bm8oZSk7cmV0dXJuIGZ1bmN0aW9uIHQoKXtmb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCx5PXZ0KG8pLHY9bzt2LS07KXlbdl09YXJndW1lbnRzW3ZdO2lmKG0pdmFyIGI9Q28odCkseD1ZZSh5LGIpO2lmKHImJih5PXFyKHkscixhLG0pKSxzJiYoeT1Zcih5LHMsbCxtKSksby09eCxtJiZvPGgpe3ZhciB3PXRuKHksYik7cmV0dXJuIHBvKGUsbixvbyx0LnBsYWNlaG9sZGVyLGkseSx3LGMsdSxoLW8pfXZhciBTPXA/aTp0aGlzLE09Zj9TW2VdOmU7cmV0dXJuIG89eS5sZW5ndGgsYz95PVhvKHksYyk6ZyYmbz4xJiZ5LnJldmVyc2UoKSxkJiZ1PG8mJih5Lmxlbmd0aD11KSx0aGlzJiZ0aGlzIT09ZWUmJnRoaXMgaW5zdGFuY2VvZiB0JiYoTT1ffHxubyhNKSksTS5hcHBseShTLHkpfX1mdW5jdGlvbiBhbyh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGkpe3JldHVybiBGaSh0LChmdW5jdGlvbih0LHIsbyl7ZShpLG4odCkscixvKX0pKSxpfSkobix0LGUoaSkse30pfX1mdW5jdGlvbiBzbyhlLG4pe3JldHVybiBmdW5jdGlvbihpLHIpe3ZhciBvO2lmKGk9PT10JiZyPT09dClyZXR1cm4gbjtpZihpIT09dCYmKG89aSksciE9PXQpe2lmKG89PT10KXJldHVybiByOyJzdHJpbmciPT10eXBlb2YgaXx8InN0cmluZyI9PXR5cGVvZiByPyhpPUFyKGkpLHI9QXIocikpOihpPUNyKGkpLHI9Q3IocikpLG89ZShpLHIpfXJldHVybiBvfX1mdW5jdGlvbiBsbyh0KXtyZXR1cm4gd28oKGZ1bmN0aW9uKGUpe3JldHVybiBlPU1lKGUsVWUoQW8oKSkpLG1yKChmdW5jdGlvbihuKXt2YXIgaT10aGlzO3JldHVybiB0KGUsKGZ1bmN0aW9uKHQpe3JldHVybiBwZSh0LGksbil9KSl9KSl9KSl9ZnVuY3Rpb24gY28oZSxuKXt2YXIgaT0obj1uPT09dD8iICI6QXIobikpLmxlbmd0aDtpZihpPDIpcmV0dXJuIGk/ZnIobixlKTpuO3ZhciByPWZyKG4sY24oZS9ybihuKSkpO3JldHVybiBaZShuKT9GcihvbihyKSwwLGUpLmpvaW4oIiIpOnIuc2xpY2UoMCxlKX1mdW5jdGlvbiB1byhlKXtyZXR1cm4gZnVuY3Rpb24obixpLHIpe3JldHVybiByJiYibnVtYmVyIiE9dHlwZW9mIHImJkhvKG4saSxyKSYmKGk9cj10KSxuPUZzKG4pLGk9PT10PyhpPW4sbj0wKTppPUZzKGkpLChmdW5jdGlvbiBvKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPWduKGNuKChlLXQpLyhufHwxKSksMCksYT12dChvKTtvLS07KWFbaT9vOisrcl09dCx0Kz1uO3JldHVybiBhfSkobixpLHI9cj09PXQ/bjxpPzE6LTE6RnMociksZSl9fWZ1bmN0aW9uIGhvKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiBufHwoZT1qcyhlKSxuPWpzKG4pKSx0KGUsbil9fWZ1bmN0aW9uIHBvKGUsbixpLG8sYSxzLGwsYyx1LGgpe3ZhciBkPTgmbjtufD1kP3I6NjQsNCYobiY9fihkPzY0OnIpKXx8KG4mPS00KTt2YXIgcD1bZSxuLGEsZD9zOnQsZD9sOnQsZD90OnMsZD90OmwsYyx1LGhdLGY9aS5hcHBseSh0LHApO3JldHVybiBWbyhlKSYmS28oZixwKSxmLnBsYWNlaG9sZGVyPW8sUW8oZixlLG4pfWZ1bmN0aW9uIGZvKHQpe3ZhciBlPVN0W3RdO3JldHVybiBmdW5jdGlvbih0LG4pe2lmKHQ9anModCksKG49bnVsbD09bj8wOl9uKFZzKG4pLDI5MikpJiZwbih0KSl7dmFyIGk9KFdzKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChpPShXcyhlKGlbMF0rImUiKygraVsxXStuKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygraVsxXS1uKSl9cmV0dXJuIGUodCl9fXZhciBtbz1FbiYmMS9lbihuZXcgRW4oWywtMF0pKVsxXT09YT9mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEVuKHQpfTpPbDtmdW5jdGlvbiBnbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49Um8oZSk7cmV0dXJuIG49PXk/SmUoZSk6bj09Uz9ubihlKTooZnVuY3Rpb24gaSh0LGUpe3JldHVybiBNZShlLChmdW5jdGlvbihlKXtyZXR1cm5bZSx0W2VdXX0pKX0pKGUsdChlKSl9fWZ1bmN0aW9uIF9vKG4sYSxzLGwsYyx1LGgsZCl7dmFyIHA9MiZhO2lmKCFwJiYiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgQ3QoZSk7dmFyIGY9bD9sLmxlbmd0aDowO2lmKGZ8fChhJj0tOTcsbD1jPXQpLGg9aD09PXQ/aDpnbihWcyhoKSwwKSxkPWQ9PT10P2Q6VnMoZCksZi09Yz9jLmxlbmd0aDowLDY0JmEpe3ZhciBtPWwsZz1jO2w9Yz10fXZhciBfPXA/dDpFbyhuKSx5PVtuLGEscyxsLGMsbSxnLHUsaCxkXTtpZihfJiYoZnVuY3Rpb24gdih0LGUpe3ZhciBuPXRbMV0scj1lWzFdLGE9bnxyO2lmKCEoYTwxMzF8fHI9PW8mJjg9PW58fHI9PW8mJjI1Nj09biYmdFs3XS5sZW5ndGg8PWVbOF18fDM4ND09ciYmZVs3XS5sZW5ndGg8PWVbOF0mJjg9PW4pKXJldHVybiB0OzEmciYmKHRbMl09ZVsyXSxhfD0xJm4/MDo0KTt2YXIgcz1lWzNdO2lmKHMpe3ZhciBsPXRbM107dFszXT1sP3FyKGwscyxlWzRdKTpzLHRbNF09bD90bih0WzNdLGkpOmVbNF19KHM9ZVs1XSkmJih0WzVdPShsPXRbNV0pP1lyKGwscyxlWzZdKTpzLHRbNl09bD90bih0WzVdLGkpOmVbNl0pLChzPWVbN10pJiYodFs3XT1zKSxyJm8mJih0WzhdPW51bGw9PXRbOF0/ZVs4XTpfbih0WzhdLGVbOF0pKSxudWxsPT10WzldJiYodFs5XT1lWzldKSx0WzBdPWVbMF0sdFsxXT1hfSkoeSxfKSxuPXlbMF0sYT15WzFdLHM9eVsyXSxsPXlbM10sYz15WzRdLCEoZD15WzldPXlbOV09PT10P3A/MDpuLmxlbmd0aDpnbih5WzldLWYsMCkpJiYyNCZhJiYoYSY9LTI1KSxhJiYxIT1hKXc9OD09YXx8MTY9PWE/KGZ1bmN0aW9uIGIoZSxuLGkpe3ZhciByPW5vKGUpO3JldHVybiBmdW5jdGlvbiBvKCl7Zm9yKHZhciBhPWFyZ3VtZW50cy5sZW5ndGgscz12dChhKSxsPWEsYz1DbyhvKTtsLS07KXNbbF09YXJndW1lbnRzW2xdO3ZhciB1PWE8MyYmc1swXSE9PWMmJnNbYS0xXSE9PWM/W106dG4ocyxjKTtyZXR1cm4oYS09dS5sZW5ndGgpPGk/cG8oZSxuLG9vLG8ucGxhY2Vob2xkZXIsdCxzLHUsdCx0LGktYSk6cGUodGhpcyYmdGhpcyE9PWVlJiZ0aGlzIGluc3RhbmNlb2Ygbz9yOmUsdGhpcyxzKX19KShuLGEsZCk6YSE9ciYmMzMhPWF8fGMubGVuZ3RoP29vLmFwcGx5KHQseSk6KGZ1bmN0aW9uIHgodCxlLG4saSl7dmFyIHI9MSZlLG89bm8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9LTEscz1hcmd1bWVudHMubGVuZ3RoLGw9LTEsYz1pLmxlbmd0aCx1PXZ0KGMrcyksaD10aGlzJiZ0aGlzIT09ZWUmJnRoaXMgaW5zdGFuY2VvZiBlP286dDsrK2w8YzspdVtsXT1pW2xdO2Zvcig7cy0tOyl1W2wrK109YXJndW1lbnRzWysrYV07cmV0dXJuIHBlKGgscj9uOnRoaXMsdSl9fSkobixhLHMsbCk7ZWxzZSB2YXIgdz0oZnVuY3Rpb24gUyh0LGUsbil7dmFyIGk9MSZlLHI9bm8odCk7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4odGhpcyYmdGhpcyE9PWVlJiZ0aGlzIGluc3RhbmNlb2YgZT9yOnQpLmFwcGx5KGk/bjp0aGlzLGFyZ3VtZW50cyl9fSkobixhLHMpO3JldHVybiBRbygoXz92cjpLbykodyx5KSxuLGEpfWZ1bmN0aW9uIHlvKGUsbixpLHIpe3JldHVybiBlPT09dHx8c3MoZSxrdFtpXSkmJiFOdC5jYWxsKHIsaSk/bjplfWZ1bmN0aW9uIHZvKGUsbixpLHIsbyxhKXtyZXR1cm4gU3MoZSkmJlNzKG4pJiYoYS5zZXQobixlKSxzcihlLG4sdCx2byxhKSxhLmRlbGV0ZShuKSksZX1mdW5jdGlvbiBibyhlKXtyZXR1cm4gQXMoZSk/dDplfWZ1bmN0aW9uIHhvKGUsbixpLHIsbyxhKXt2YXIgcz0xJmksbD1lLmxlbmd0aCxjPW4ubGVuZ3RoO2lmKGwhPWMmJiEocyYmYz5sKSlyZXR1cm4hMTt2YXIgdT1hLmdldChlKSxoPWEuZ2V0KG4pO2lmKHUmJmgpcmV0dXJuIHU9PW4mJmg9PWU7dmFyIGQ9LTEscD0hMCxmPTImaT9uZXcgcW46dDtmb3IoYS5zZXQoZSxuKSxhLnNldChuLGUpOysrZDxsOyl7dmFyIG09ZVtkXSxnPW5bZF07aWYocil2YXIgXz1zP3IoZyxtLGQsbixlLGEpOnIobSxnLGQsZSxuLGEpO2lmKF8hPT10KXtpZihfKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoZil7aWYoIUFlKG4sKGZ1bmN0aW9uKHQsZSl7aWYoIUdlKGYsZSkmJihtPT09dHx8byhtLHQsaSxyLGEpKSlyZXR1cm4gZi5wdXNoKGUpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKG0hPT1nJiYhbyhtLGcsaSxyLGEpKXtwPSExO2JyZWFrfX1yZXR1cm4gYS5kZWxldGUoZSksYS5kZWxldGUobikscH1mdW5jdGlvbiB3byhlKXtyZXR1cm4gSm8ocW8oZSx0LGRhKSxlKyIiKX1mdW5jdGlvbiBTbyh0KXtyZXR1cm4gR2kodCxybCxObyl9ZnVuY3Rpb24gTW8odCl7cmV0dXJuIEdpKHQsb2wsSW8pfXZhciBFbz1Bbj9mdW5jdGlvbih0KXtyZXR1cm4gQW4uZ2V0KHQpfTpPbDtmdW5jdGlvbiBUbyh0KXtmb3IodmFyIGU9dC5uYW1lKyIiLG49a25bZV0saT1OdC5jYWxsKGtuLGUpP24ubGVuZ3RoOjA7aS0tOyl7dmFyIHI9bltpXSxvPXIuZnVuYztpZihudWxsPT1vfHxvPT10KXJldHVybiByLm5hbWV9cmV0dXJuIGV9ZnVuY3Rpb24gQ28odCl7cmV0dXJuKE50LmNhbGwoQm4sInBsYWNlaG9sZGVyIik/Qm46dCkucGxhY2Vob2xkZXJ9ZnVuY3Rpb24gQW8oKXt2YXIgdD1Cbi5pdGVyYXRlZXx8UGw7cmV0dXJuIHQ9dD09PVBsP2VyOnQsYXJndW1lbnRzLmxlbmd0aD90KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnR9ZnVuY3Rpb24ga28odCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybihmdW5jdGlvbiBpKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1lfHwibnVtYmVyIj09ZXx8InN5bWJvbCI9PWV8fCJib29sZWFuIj09ZT8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9KShlKT9uWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm4ubWFwfWZ1bmN0aW9uIExvKHQpe2Zvcih2YXIgZT1ybCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixHbyhyKV19cmV0dXJuIGV9ZnVuY3Rpb24gUG8oZSxuKXt2YXIgaT0oZnVuY3Rpb24gcihlLG4pe3JldHVybiBudWxsPT1lP3Q6ZVtuXX0pKGUsbik7cmV0dXJuIHRyKGkpP2k6dH12YXIgTm89aG4/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9TXQodCkseWUoaG4odCksKGZ1bmN0aW9uKGUpe3JldHVybiBuZS5jYWxsKHQsZSl9KSkpfTpVbCxJbz1obj9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspRWUoZSxObyh0KSksdD1RdCh0KTtyZXR1cm4gZX06VWwsUm89V2k7ZnVuY3Rpb24gT28odCxlLG4pe2Zvcih2YXIgaT0tMSxyPShlPUJyKGUsdCkpLmxlbmd0aCxvPSExOysraTxyOyl7dmFyIGE9cmEoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJndzKHIpJiZCbyhhLHIpJiYoaHModCl8fHVzKHQpKX1mdW5jdGlvbiB6byh0KXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdC5jb25zdHJ1Y3Rvcnx8am8odCk/e306SG4oUXQodCkpfWZ1bmN0aW9uIERvKHQpe3JldHVybiBocyh0KXx8dXModCl8fCEhKG9lJiZ0JiZ0W29lXSl9ZnVuY3Rpb24gQm8odCxlKXt2YXIgbj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/czplKSYmKCJudW1iZXIiPT1ufHwic3ltYm9sIiE9biYmcHQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfWZ1bmN0aW9uIEhvKHQsZSxuKXtpZighU3MobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/ZnMobikmJkJvKGUsbi5sZW5ndGgpOiJzdHJpbmciPT1pJiZlIGluIG4pJiZzcyhuW2VdLHQpfWZ1bmN0aW9uIEZvKHQsZSl7aWYoaHModCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIVJzKHQpKXx8JC50ZXN0KHQpfHwhWC50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE10KGUpfWZ1bmN0aW9uIFZvKHQpe3ZhciBlPVRvKHQpLG49Qm5bZV07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG58fCEoZSBpbiBVbi5wcm90b3R5cGUpKXJldHVybiExO2lmKHQ9PT1uKXJldHVybiEwO3ZhciBpPUVvKG4pO3JldHVybiEhaSYmdD09PWlbMF19KHduJiZSbyhuZXcgd24obmV3IEFycmF5QnVmZmVyKDEpKSkhPUF8fFNuJiZSbyhuZXcgU24pIT15fHxNbiYmUm8oTW4ucmVzb2x2ZSgpKSE9eHx8RW4mJlJvKG5ldyBFbikhPVN8fFRuJiZSbyhuZXcgVG4pIT1UKSYmKFJvPWZ1bmN0aW9uKGUpe3ZhciBuPVdpKGUpLGk9bj09Yj9lLmNvbnN0cnVjdG9yOnQscj1pP29hKGkpOiIiO2lmKHIpc3dpdGNoKHIpe2Nhc2UgTG46cmV0dXJuIEE7Y2FzZSBQbjpyZXR1cm4geTtjYXNlIE5uOnJldHVybiB4O2Nhc2UgSW46cmV0dXJuIFM7Y2FzZSBSbjpyZXR1cm4gVH1yZXR1cm4gbn0pO3ZhciBVbz1MdD9iczpqbDtmdW5jdGlvbiBqbyh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8a3QpfWZ1bmN0aW9uIEdvKHQpe3JldHVybiB0PT10JiYhU3ModCl9ZnVuY3Rpb24gV28oZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG51bGwhPWkmJmlbZV09PT1uJiYobiE9PXR8fGUgaW4gTXQoaSkpfX1mdW5jdGlvbiBxbyhlLG4saSl7cmV0dXJuIG49Z24obj09PXQ/ZS5sZW5ndGgtMTpuLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cyxyPS0xLG89Z24odC5sZW5ndGgtbiwwKSxhPXZ0KG8pOysrcjxvOylhW3JdPXRbbityXTtyPS0xO2Zvcih2YXIgcz12dChuKzEpOysrcjxuOylzW3JdPXRbcl07cmV0dXJuIHNbbl09aShhKSxwZShlLHRoaXMscyl9fWZ1bmN0aW9uIFlvKHQsZSl7cmV0dXJuIGUubGVuZ3RoPDI/dDpqaSh0LHdyKGUsMCwtMSkpfWZ1bmN0aW9uIFhvKGUsbil7Zm9yKHZhciBpPWUubGVuZ3RoLHI9X24obi5sZW5ndGgsaSksbz1YcihlKTtyLS07KXt2YXIgYT1uW3JdO2Vbcl09Qm8oYSxpKT9vW2FdOnR9cmV0dXJuIGV9ZnVuY3Rpb24gJG8odCxlKXtpZigoImNvbnN0cnVjdG9yIiE9PWV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0W2VdKSYmIl9fcHJvdG9fXyIhPWUpcmV0dXJuIHRbZV19dmFyIEtvPXRhKHZyKSxabz1EZXx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gZWUuc2V0VGltZW91dCh0LGUpfSxKbz10YShicik7ZnVuY3Rpb24gUW8odCxlLG4pe3ZhciBpPWUrIiI7cmV0dXJuIEpvKHQsKGZ1bmN0aW9uIGEodCxlKXt2YXIgbj1lLmxlbmd0aDtpZighbilyZXR1cm4gdDt2YXIgaT1uLTE7cmV0dXJuIGVbaV09KG4+MT8iJiAiOiIiKStlW2ldLGU9ZS5qb2luKG4+Mj8iLCAiOiIgIiksdC5yZXBsYWNlKGV0LCJ7XG4vKiBbd3JhcHBlZCB3aXRoICIrZSsiXSAqL1xuIil9KShpLChmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIG1lKHUsKGZ1bmN0aW9uKG4pe3ZhciBpPSJfLiIrblswXTtlJm5bMV0mJiFiZSh0LGkpJiZ0LnB1c2goaSl9KSksdC5zb3J0KCl9KSgoZnVuY3Rpb24gcih0KXt2YXIgZT10Lm1hdGNoKG50KTtyZXR1cm4gZT9lWzFdLnNwbGl0KGl0KTpbXX0pKGkpLG4pKSl9ZnVuY3Rpb24gdGEoZSl7dmFyIG49MCxpPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9eW4oKSxvPTE2LShyLWkpO2lmKGk9cixvPjApe2lmKCsrbj49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBuPTA7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiBlYShlLG4pe3ZhciBpPS0xLHI9ZS5sZW5ndGgsbz1yLTE7Zm9yKG49bj09PXQ/cjpuOysraTxuOyl7dmFyIGE9cHIoaSxvKSxzPWVbYV07ZVthXT1lW2ldLGVbaV09c31yZXR1cm4gZS5sZW5ndGg9bixlfXZhciBuYT0oZnVuY3Rpb24gaWEodCl7dmFyIGU9ZXModCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoSywoZnVuY3Rpb24odCxuLGkscil7ZS5wdXNoKGk/ci5yZXBsYWNlKGF0LCIkMSIpOm58fHQpfSkpLGV9KSk7ZnVuY3Rpb24gcmEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxScyh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBvYSh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIFB0LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifWZ1bmN0aW9uIGFhKHQpe2lmKHQgaW5zdGFuY2VvZiBVbilyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPW5ldyBWbih0Ll9fd3JhcHBlZF9fLHQuX19jaGFpbl9fKTtyZXR1cm4gZS5fX2FjdGlvbnNfXz1Ycih0Ll9fYWN0aW9uc19fKSxlLl9faW5kZXhfXz10Ll9faW5kZXhfXyxlLl9fdmFsdWVzX189dC5fX3ZhbHVlc19fLGV9dmFyIHNhPW1yKChmdW5jdGlvbih0LGUpe3JldHVybiBtcyh0KT9jaSh0LERpKGUsMSxtcywhMCkpOltdfSkpLGxhPW1yKChmdW5jdGlvbihlLG4pe3ZhciBpPV9hKG4pO3JldHVybiBtcyhpKSYmKGk9dCksbXMoZSk/Y2koZSxEaShuLDEsbXMsITApLEFvKGksMikpOltdfSkpLGNhPW1yKChmdW5jdGlvbihlLG4pe3ZhciBpPV9hKG4pO3JldHVybiBtcyhpKSYmKGk9dCksbXMoZSk/Y2koZSxEaShuLDEsbXMsITApLHQsaSk6W119KSk7ZnVuY3Rpb24gdWEodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6VnMobik7cmV0dXJuIHI8MCYmKHI9Z24oaStyLDApKSxQZSh0LEFvKGUsMykscil9ZnVuY3Rpb24gaGEoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yLTE7cmV0dXJuIGkhPT10JiYobz1WcyhpKSxvPWk8MD9nbihyK28sMCk6X24obyxyLTEpKSxQZShlLEFvKG4sMyksbywhMCl9ZnVuY3Rpb24gZGEodCl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP0RpKHQsMSk6W119ZnVuY3Rpb24gcGEoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP2VbMF06dH12YXIgZmE9bXIoKGZ1bmN0aW9uKHQpe3ZhciBlPU1lKHQsenIpO3JldHVybiBlLmxlbmd0aCYmZVswXT09PXRbMF0/JGkoZSk6W119KSksbWE9bXIoKGZ1bmN0aW9uKGUpe3ZhciBuPV9hKGUpLGk9TWUoZSx6cik7cmV0dXJuIG49PT1fYShpKT9uPXQ6aS5wb3AoKSxpLmxlbmd0aCYmaVswXT09PWVbMF0/JGkoaSxBbyhuLDIpKTpbXX0pKSxnYT1tcigoZnVuY3Rpb24oZSl7dmFyIG49X2EoZSksaT1NZShlLHpyKTtyZXR1cm4obj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQpJiZpLnBvcCgpLGkubGVuZ3RoJiZpWzBdPT09ZVswXT8kaShpLHQsbik6W119KSk7ZnVuY3Rpb24gX2EoZSl7dmFyIG49bnVsbD09ZT8wOmUubGVuZ3RoO3JldHVybiBuP2Vbbi0xXTp0fXZhciB5YT1tcih2YSk7ZnVuY3Rpb24gdmEodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGgmJmUmJmUubGVuZ3RoP2hyKHQsZSk6dH12YXIgYmE9d28oKGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbD09dD8wOnQubGVuZ3RoLGk9cmkodCxlKTtyZXR1cm4gZHIodCxNZShlLChmdW5jdGlvbih0KXtyZXR1cm4gQm8odCxuKT8rdDp0fSkpLnNvcnQoV3IpKSxpfSkpO2Z1bmN0aW9uIHhhKHQpe3JldHVybiBudWxsPT10P3Q6eG4uY2FsbCh0KX12YXIgd2E9bXIoKGZ1bmN0aW9uKHQpe3JldHVybiBrcihEaSh0LDEsbXMsITApKX0pKSxTYT1tcigoZnVuY3Rpb24oZSl7dmFyIG49X2EoZSk7cmV0dXJuIG1zKG4pJiYobj10KSxrcihEaShlLDEsbXMsITApLEFvKG4sMikpfSkpLE1hPW1yKChmdW5jdGlvbihlKXt2YXIgbj1fYShlKTtyZXR1cm4gbj0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOnQsa3IoRGkoZSwxLG1zLCEwKSx0LG4pfSkpO2Z1bmN0aW9uIEVhKHQpe2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuW107dmFyIGU9MDtyZXR1cm4gdD15ZSh0LChmdW5jdGlvbih0KXtpZihtcyh0KSlyZXR1cm4gZT1nbih0Lmxlbmd0aCxlKSwhMH0pKSxGZShlLChmdW5jdGlvbihlKXtyZXR1cm4gTWUodCx6ZShlKSl9KSl9ZnVuY3Rpb24gVGEoZSxuKXtpZighZXx8IWUubGVuZ3RoKXJldHVybltdO3ZhciBpPUVhKGUpO3JldHVybiBudWxsPT1uP2k6TWUoaSwoZnVuY3Rpb24oZSl7cmV0dXJuIHBlKG4sdCxlKX0pKX12YXIgQ2E9bXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG1zKHQpP2NpKHQsZSk6W119KSksQWE9bXIoKGZ1bmN0aW9uKHQpe3JldHVybiBScih5ZSh0LG1zKSl9KSksa2E9bXIoKGZ1bmN0aW9uKGUpe3ZhciBuPV9hKGUpO3JldHVybiBtcyhuKSYmKG49dCksUnIoeWUoZSxtcyksQW8obiwyKSl9KSksTGE9bXIoKGZ1bmN0aW9uKGUpe3ZhciBuPV9hKGUpO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCxScih5ZShlLG1zKSx0LG4pfSkpLFBhPW1yKEVhKSxOYT1tcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5sZW5ndGgsaT1uPjE/ZVtuLTFdOnQ7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/KGUucG9wKCksaSk6dCxUYShlLGkpfSkpO2Z1bmN0aW9uIElhKHQpe3ZhciBlPUJuKHQpO3JldHVybiBlLl9fY2hhaW5fXz0hMCxlfWZ1bmN0aW9uIFJhKHQsZSl7cmV0dXJuIGUodCl9dmFyIE9hPXdvKChmdW5jdGlvbihlKXt2YXIgbj1lLmxlbmd0aCxpPW4/ZVswXTowLHI9dGhpcy5fX3dyYXBwZWRfXyxvPWZ1bmN0aW9uKHQpe3JldHVybiByaSh0LGUpfTtyZXR1cm4hKG4+MXx8dGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpJiZyIGluc3RhbmNlb2YgVW4mJkJvKGkpPygocj1yLnNsaWNlKGksK2krKG4/MTowKSkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6UmEsYXJnczpbb10sdGhpc0FyZzp0fSksbmV3IFZuKHIsdGhpcy5fX2NoYWluX18pLnRocnUoKGZ1bmN0aW9uKGUpe3JldHVybiBuJiYhZS5sZW5ndGgmJmUucHVzaCh0KSxlfSkpKTp0aGlzLnRocnUobyl9KSksemE9S3IoKGZ1bmN0aW9uKHQsZSxuKXtOdC5jYWxsKHQsbik/Kyt0W25dOmlpKHQsbiwxKX0pKSxEYT1pbyh1YSksQmE9aW8oaGEpO2Z1bmN0aW9uIEhhKHQsZSl7cmV0dXJuKGhzKHQpP21lOk5pKSh0LEFvKGUsMykpfWZ1bmN0aW9uIEZhKHQsZSl7cmV0dXJuKGhzKHQpP2dlOklpKSh0LEFvKGUsMykpfXZhciBWYT1LcigoZnVuY3Rpb24odCxlLG4pe050LmNhbGwodCxuKT90W25dLnB1c2goZSk6aWkodCxuLFtlXSl9KSksVWE9bXIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0tMSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBlLG89ZnModCk/dnQodC5sZW5ndGgpOltdO3JldHVybiBOaSh0LChmdW5jdGlvbih0KXtvWysraV09cj9wZShlLHQsbik6S2kodCxlLG4pfSkpLG99KSksamE9S3IoKGZ1bmN0aW9uKHQsZSxuKXtpaSh0LG4sZSl9KSk7ZnVuY3Rpb24gR2EodCxlKXtyZXR1cm4oaHModCk/TWU6cnIpKHQsQW8oZSwzKSl9dmFyIFdhPUtyKChmdW5jdGlvbih0LGUsbil7dFtuPzA6MV0ucHVzaChlKX0pLChmdW5jdGlvbigpe3JldHVybltbXSxbXV19KSkscWE9bXIoKGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj4xJiZIbyh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJkhvKGVbMF0sZVsxXSxlWzJdKSYmKGU9W2VbMF1dKSxjcih0LERpKGUsMSksW10pfSkpLFlhPWtlfHxmdW5jdGlvbigpe3JldHVybiBlZS5EYXRlLm5vdygpfTtmdW5jdGlvbiBYYShlLG4saSl7cmV0dXJuIG49aT90Om4sX28oZSxvLHQsdCx0LHQsbj1lJiZudWxsPT1uP2UubGVuZ3RoOm4pfWZ1bmN0aW9uICRhKG4saSl7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEN0KGUpO3JldHVybiBuPVZzKG4pLGZ1bmN0aW9uKCl7cmV0dXJuLS1uPjAmJihyPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxuPD0xJiYoaT10KSxyfX12YXIgS2E9bXIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xO2lmKG4ubGVuZ3RoKXt2YXIgbz10bihuLENvKEthKSk7aXw9cn1yZXR1cm4gX28odCxpLGUsbixvKX0pKSxaYT1tcigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPTM7aWYobi5sZW5ndGgpe3ZhciBvPXRuKG4sQ28oWmEpKTtpfD1yfXJldHVybiBfbyhlLGksdCxuLG8pfSkpO2Z1bmN0aW9uIEphKG4saSxyKXt2YXIgbyxhLHMsbCxjLHUsaD0wLGQ9ITEscD0hMSxmPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBDdChlKTtmdW5jdGlvbiBtKGUpe3ZhciBpPW8scj1hO3JldHVybiBvPWE9dCxoPWUsbD1uLmFwcGx5KHIsaSl9ZnVuY3Rpb24gZyh0KXtyZXR1cm4gaD10LGM9Wm8oeSxpKSxkP20odCk6bH1mdW5jdGlvbiBfKGUpe3ZhciBuPWUtdTtyZXR1cm4gdT09PXR8fG4+PWl8fG48MHx8cCYmZS1oPj1zfWZ1bmN0aW9uIHkoKXt2YXIgdD1ZYSgpO2lmKF8odCkpcmV0dXJuIHYodCk7Yz1abyh5LChmdW5jdGlvbiBlKHQpe3ZhciBlPWktKHQtdSk7cmV0dXJuIHA/X24oZSxzLSh0LWgpKTplfSkodCkpfWZ1bmN0aW9uIHYoZSl7cmV0dXJuIGM9dCxmJiZvP20oZSk6KG89YT10LGwpfWZ1bmN0aW9uIGIoKXt2YXIgZT1ZYSgpLG49XyhlKTtpZihvPWFyZ3VtZW50cyxhPXRoaXMsdT1lLG4pe2lmKGM9PT10KXJldHVybiBnKHUpO2lmKHApcmV0dXJuIFZyKGMpLGM9Wm8oeSxpKSxtKHUpfXJldHVybiBjPT09dCYmKGM9Wm8oeSxpKSksbH1yZXR1cm4gaT1qcyhpKXx8MCxTcyhyKSYmKGQ9ISFyLmxlYWRpbmcscz0ocD0ibWF4V2FpdCJpbiByKT9nbihqcyhyLm1heFdhaXQpfHwwLGkpOnMsZj0idHJhaWxpbmciaW4gcj8hIXIudHJhaWxpbmc6ZiksYi5jYW5jZWw9ZnVuY3Rpb24geCgpe2MhPT10JiZWcihjKSxoPTAsbz11PWE9Yz10fSxiLmZsdXNoPWZ1bmN0aW9uIHcoKXtyZXR1cm4gYz09PXQ/bDp2KFlhKCkpfSxifXZhciBRYT1tcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gbGkodCwxLGUpfSkpLHRzPW1yKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGxpKHQsanMoZSl8fDAsbil9KSk7ZnVuY3Rpb24gZXModCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEN0KGUpO3ZhciBpPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLHI9bj9uLmFwcGx5KHRoaXMsZSk6ZVswXSxvPWkuY2FjaGU7aWYoby5oYXMocikpcmV0dXJuIG8uZ2V0KHIpO3ZhciBhPXQuYXBwbHkodGhpcyxlKTtyZXR1cm4gaS5jYWNoZT1vLnNldChyLGEpfHxvLGF9O3JldHVybiBpLmNhY2hlPW5ldyhlcy5DYWNoZXx8V24pLGl9ZnVuY3Rpb24gbnModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEN0KGUpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hdC5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSk7Y2FzZSAyOnJldHVybiF0LmNhbGwodGhpcyxlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSxlWzFdLGVbMl0pfXJldHVybiF0LmFwcGx5KHRoaXMsZSl9fWVzLkNhY2hlPVduO3ZhciBpcz1IcigoZnVuY3Rpb24odCxlKXt2YXIgbj0oZT0xPT1lLmxlbmd0aCYmaHMoZVswXSk/TWUoZVswXSxVZShBbygpKSk6TWUoRGkoZSwxKSxVZShBbygpKSkpLmxlbmd0aDtyZXR1cm4gbXIoKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj0tMSxvPV9uKGkubGVuZ3RoLG4pOysrcjxvOylpW3JdPWVbcl0uY2FsbCh0aGlzLGlbcl0pO3JldHVybiBwZSh0LHRoaXMsaSl9KSl9KSkscnM9bXIoKGZ1bmN0aW9uKGUsbil7dmFyIGk9dG4obixDbyhycykpO3JldHVybiBfbyhlLHIsdCxuLGkpfSkpLG9zPW1yKChmdW5jdGlvbihlLG4pe3ZhciBpPXRuKG4sQ28ob3MpKTtyZXR1cm4gX28oZSw2NCx0LG4saSl9KSksYXM9d28oKGZ1bmN0aW9uKGUsbil7cmV0dXJuIF9vKGUsMjU2LHQsdCx0LG4pfSkpO2Z1bmN0aW9uIHNzKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfXZhciBscz1obyhxaSksY3M9aG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+PWV9KSksdXM9WmkoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP1ppOmZ1bmN0aW9uKHQpe3JldHVybiBNcyh0KSYmTnQuY2FsbCh0LCJjYWxsZWUiKSYmIW5lLmNhbGwodCwiY2FsbGVlIil9LGhzPXZ0LmlzQXJyYXksZHM9c2U/VWUoc2UpOmZ1bmN0aW9uIHBzKHQpe3JldHVybiBNcyh0KSYmV2kodCk9PUN9O2Z1bmN0aW9uIGZzKHQpe3JldHVybiBudWxsIT10JiZ3cyh0Lmxlbmd0aCkmJiFicyh0KX1mdW5jdGlvbiBtcyh0KXtyZXR1cm4gTXModCkmJmZzKHQpfXZhciBncz1kbnx8amwsX3M9bGU/VWUobGUpOmZ1bmN0aW9uIHlzKHQpe3JldHVybiBNcyh0KSYmV2kodCk9PWZ9O2Z1bmN0aW9uIHZzKHQpe2lmKCFNcyh0KSlyZXR1cm4hMTt2YXIgZT1XaSh0KTtyZXR1cm4gZT09bXx8IltvYmplY3QgRE9NRXhjZXB0aW9uXSI9PWV8fCJzdHJpbmciPT10eXBlb2YgdC5tZXNzYWdlJiYic3RyaW5nIj09dHlwZW9mIHQubmFtZSYmIUFzKHQpfWZ1bmN0aW9uIGJzKHQpe2lmKCFTcyh0KSlyZXR1cm4hMTt2YXIgZT1XaSh0KTtyZXR1cm4gZT09Z3x8ZT09X3x8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfWZ1bmN0aW9uIHhzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD09VnModCl9ZnVuY3Rpb24gd3ModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PXN9ZnVuY3Rpb24gU3ModCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9ZnVuY3Rpb24gTXModCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH12YXIgRXM9Y2U/VWUoY2UpOmZ1bmN0aW9uIFRzKHQpe3JldHVybiBNcyh0KSYmUm8odCk9PXl9O2Z1bmN0aW9uIENzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdHx8TXModCkmJldpKHQpPT12fWZ1bmN0aW9uIEFzKHQpe2lmKCFNcyh0KXx8V2kodCkhPWIpcmV0dXJuITE7dmFyIGU9UXQodCk7aWYobnVsbD09PWUpcmV0dXJuITA7dmFyIG49TnQuY2FsbChlLCJjb25zdHJ1Y3RvciIpJiZlLmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYmUHQuY2FsbChuKT09enR9dmFyIGtzPXVlP1VlKHVlKTpmdW5jdGlvbiBMcyh0KXtyZXR1cm4gTXModCkmJldpKHQpPT13fSxQcz1oZT9VZShoZSk6ZnVuY3Rpb24gTnModCl7cmV0dXJuIE1zKHQpJiZSbyh0KT09U307ZnVuY3Rpb24gSXModCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwhaHModCkmJk1zKHQpJiZXaSh0KT09TX1mdW5jdGlvbiBScyh0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fE1zKHQpJiZXaSh0KT09RX12YXIgT3M9ZGU/VWUoZGUpOmZ1bmN0aW9uIHpzKHQpe3JldHVybiBNcyh0KSYmd3ModC5sZW5ndGgpJiYhIVh0W1dpKHQpXX0sRHM9aG8oaXIpLEJzPWhvKChmdW5jdGlvbih0LGUpe3JldHVybiB0PD1lfSkpO2Z1bmN0aW9uIEhzKHQpe2lmKCF0KXJldHVybltdO2lmKGZzKHQpKXJldHVybiBJcyh0KT9vbih0KTpYcih0KTtpZihhZSYmdFthZV0pcmV0dXJuKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlLG49W107IShlPXQubmV4dCgpKS5kb25lOyluLnB1c2goZS52YWx1ZSk7cmV0dXJuIG59KSh0W2FlXSgpKTt2YXIgbj1Sbyh0KTtyZXR1cm4obj09eT9KZTpuPT1TP2VuOnBsKSh0KX1mdW5jdGlvbiBGcyh0KXtyZXR1cm4gdD8odD1qcyh0KSk9PT1hfHx0PT09LTEvMD8xNzk3NjkzMTM0ODYyMzE1N2UyOTIqKHQ8MD8tMToxKTp0PT10P3Q6MDowPT09dD90OjB9ZnVuY3Rpb24gVnModCl7dmFyIGU9RnModCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfWZ1bmN0aW9uIFVzKHQpe3JldHVybiB0P29pKFZzKHQpLDAsYyk6MH1mdW5jdGlvbiBqcyh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoUnModCkpcmV0dXJuIGw7aWYoU3ModCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PVNzKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1WZSh0KTt2YXIgbj11dC50ZXN0KHQpO3JldHVybiBufHxkdC50ZXN0KHQpP0p0KHQuc2xpY2UoMiksbj8yOjgpOmN0LnRlc3QodCk/bDordH1mdW5jdGlvbiBHcyh0KXtyZXR1cm4gJHIodCxvbCh0KSl9ZnVuY3Rpb24gV3ModCl7cmV0dXJuIG51bGw9PXQ/IiI6QXIodCl9dmFyIHFzPVpyKChmdW5jdGlvbih0LGUpe2lmKGpvKGUpfHxmcyhlKSkkcihlLHJsKGUpLHQpO2Vsc2UgZm9yKHZhciBuIGluIGUpTnQuY2FsbChlLG4pJiZRbih0LG4sZVtuXSl9KSksWXM9WnIoKGZ1bmN0aW9uKHQsZSl7JHIoZSxvbChlKSx0KX0pKSxYcz1acigoZnVuY3Rpb24odCxlLG4saSl7JHIoZSxvbChlKSx0LGkpfSkpLCRzPVpyKChmdW5jdGlvbih0LGUsbixpKXskcihlLHJsKGUpLHQsaSl9KSksS3M9d28ocmkpLFpzPW1yKChmdW5jdGlvbihlLG4pe2U9TXQoZSk7dmFyIGk9LTEscj1uLmxlbmd0aCxvPXI+Mj9uWzJdOnQ7Zm9yKG8mJkhvKG5bMF0sblsxXSxvKSYmKHI9MSk7KytpPHI7KWZvcih2YXIgYT1uW2ldLHM9b2woYSksbD0tMSxjPXMubGVuZ3RoOysrbDxjOyl7dmFyIHU9c1tsXSxoPWVbdV07KGg9PT10fHxzcyhoLGt0W3VdKSYmIU50LmNhbGwoZSx1KSkmJihlW3VdPWFbdV0pfXJldHVybiBlfSkpLEpzPW1yKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoKHQsdm8pLHBlKHNsLHQsZSl9KSk7ZnVuY3Rpb24gUXMoZSxuLGkpe3ZhciByPW51bGw9PWU/dDpqaShlLG4pO3JldHVybiByPT09dD9pOnJ9ZnVuY3Rpb24gdGwodCxlKXtyZXR1cm4gbnVsbCE9dCYmT28odCxlLFhpKX12YXIgZWw9YW8oKGZ1bmN0aW9uKHQsZSxuKXtudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyYmKGU9T3QuY2FsbChlKSksdFtlXT1ufSksQ2woTGwpKSxubD1hbygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT1PdC5jYWxsKGUpKSxOdC5jYWxsKHQsZSk/dFtlXS5wdXNoKG4pOnRbZV09W25dfSksQW8pLGlsPW1yKEtpKTtmdW5jdGlvbiBybCh0KXtyZXR1cm4gZnModCk/WG4odCk6bnIodCl9ZnVuY3Rpb24gb2wodCl7cmV0dXJuIGZzKHQpP1huKHQsITApOihmdW5jdGlvbiBlKHQpe2lmKCFTcyh0KSlyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1bXTtpZihudWxsIT10KWZvcih2YXIgbiBpbiBNdCh0KSllLnB1c2gobik7cmV0dXJuIGV9KSh0KTt2YXIgbj1qbyh0KSxpPVtdO2Zvcih2YXIgciBpbiB0KSgiY29uc3RydWN0b3IiIT1yfHwhbiYmTnQuY2FsbCh0LHIpKSYmaS5wdXNoKHIpO3JldHVybiBpfSkodCl9dmFyIGFsPVpyKChmdW5jdGlvbih0LGUsbil7c3IodCxlLG4pfSkpLHNsPVpyKChmdW5jdGlvbih0LGUsbixpKXtzcih0LGUsbixpKX0pKSxsbD13bygoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtpZihudWxsPT10KXJldHVybiBuO3ZhciBpPSExO2U9TWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGU9QnIoZSx0KSxpfHwoaT1lLmxlbmd0aD4xKSxlfSkpLCRyKHQsTW8odCksbiksaSYmKG49YWkobiw3LGJvKSk7Zm9yKHZhciByPWUubGVuZ3RoO3ItLTspTHIobixlW3JdKTtyZXR1cm4gbn0pKSxjbD13bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD97fTooZnVuY3Rpb24gbih0LGUpe3JldHVybiB1cih0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRsKHQsbil9KSl9KSh0LGUpfSkpO2Z1bmN0aW9uIHVsKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj1NZShNbyh0KSwoZnVuY3Rpb24odCl7cmV0dXJuW3RdfSkpO3JldHVybiBlPUFvKGUpLHVyKHQsbiwoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG5bMF0pfSkpfXZhciBobD1nbyhybCksZGw9Z28ob2wpO2Z1bmN0aW9uIHBsKHQpe3JldHVybiBudWxsPT10P1tdOmplKHQscmwodCkpfXZhciBmbD1lbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiBlPWUudG9Mb3dlckNhc2UoKSx0KyhuP21sKGUpOmUpfSkpO2Z1bmN0aW9uIG1sKHQpe3JldHVybiBTbChXcyh0KS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBnbCh0KXtyZXR1cm4odD1Xcyh0KSkmJnQucmVwbGFjZShmdCxYZSkucmVwbGFjZShWdCwiIil9dmFyIF9sPWVvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/Ii0iOiIiKStlLnRvTG93ZXJDYXNlKCl9KSkseWw9ZW8oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSx2bD10bygidG9Mb3dlckNhc2UiKSxibD1lbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyJfIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLHhsPWVvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKStTbChlKX0pKSx3bD1lbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrZS50b1VwcGVyQ2FzZSgpfSkpLFNsPXRvKCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIE1sKGUsbixpKXtyZXR1cm4gZT1XcyhlKSwobj1pP3Q6bik9PT10PyhmdW5jdGlvbiByKHQpe3JldHVybiBXdC50ZXN0KHQpfSkoZSk/KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQubWF0Y2goanQpfHxbXX0pKGUpOihmdW5jdGlvbiBhKHQpe3JldHVybiB0Lm1hdGNoKHJ0KXx8W119KShlKTplLm1hdGNoKG4pfHxbXX12YXIgRWw9bXIoKGZ1bmN0aW9uKGUsbil7dHJ5e3JldHVybiBwZShlLHQsbil9Y2F0Y2godCl7cmV0dXJuIHZzKHQpP3Q6bmV3IHh0KHQpfX0pKSxUbD13bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbWUoZSwoZnVuY3Rpb24oZSl7ZT1yYShlKSxpaSh0LGUsS2EodFtlXSx0KSl9KSksdH0pKTtmdW5jdGlvbiBDbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIEFsPXJvKCksa2w9cm8oITApO2Z1bmN0aW9uIExsKHQpe3JldHVybiB0fWZ1bmN0aW9uIFBsKHQpe3JldHVybiBlcigiZnVuY3Rpb24iPT10eXBlb2YgdD90OmFpKHQsMSkpfXZhciBObD1tcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEtpKG4sdCxlKX19KSksSWw9bXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBLaSh0LG4sZSl9fSkpO2Z1bmN0aW9uIFJsKHQsZSxuKXt2YXIgaT1ybChlKSxyPVVpKGUsaSk7bnVsbCE9bnx8U3MoZSkmJihyLmxlbmd0aHx8IWkubGVuZ3RoKXx8KG49ZSxlPXQsdD10aGlzLHI9VWkoZSxybChlKSkpO3ZhciBvPSEoU3MobikmJiJjaGFpbiJpbiBuJiYhbi5jaGFpbiksYT1icyh0KTtyZXR1cm4gbWUociwoZnVuY3Rpb24obil7dmFyIGk9ZVtuXTt0W25dPWksYSYmKHQucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX2NoYWluX187aWYob3x8ZSl7dmFyIG49dCh0aGlzLl9fd3JhcHBlZF9fKSxyPW4uX19hY3Rpb25zX189WHIodGhpcy5fX2FjdGlvbnNfXyk7cmV0dXJuIHIucHVzaCh7ZnVuYzppLGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6dH0pLG4uX19jaGFpbl9fPWUsbn1yZXR1cm4gaS5hcHBseSh0LEVlKFt0aGlzLnZhbHVlKCldLGFyZ3VtZW50cykpfSl9KSksdH1mdW5jdGlvbiBPbCgpe312YXIgemw9bG8oTWUpLERsPWxvKF9lKSxCbD1sbyhBZSk7ZnVuY3Rpb24gSGwodCl7cmV0dXJuIEZvKHQpP3plKHJhKHQpKTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGppKGUsdCl9fSkodCl9dmFyIEZsPXVvKCksVmw9dW8oITApO2Z1bmN0aW9uIFVsKCl7cmV0dXJuW119ZnVuY3Rpb24gamwoKXtyZXR1cm4hMX12YXIgR2wsV2w9c28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApLHFsPWZvKCJjZWlsIiksWWw9c28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQvZX0pLDEpLFhsPWZvKCJmbG9vciIpLCRsPXNvKChmdW5jdGlvbih0LGUpe3JldHVybiB0KmV9KSwxKSxLbD1mbygicm91bmQiKSxabD1zbygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSksMCk7cmV0dXJuIEJuLmFmdGVyPWZ1bmN0aW9uIEpsKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEN0KGUpO3JldHVybiB0PVZzKHQpLGZ1bmN0aW9uKCl7aWYoLS10PDEpcmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sQm4uYXJ5PVhhLEJuLmFzc2lnbj1xcyxCbi5hc3NpZ25Jbj1ZcyxCbi5hc3NpZ25JbldpdGg9WHMsQm4uYXNzaWduV2l0aD0kcyxCbi5hdD1LcyxCbi5iZWZvcmU9JGEsQm4uYmluZD1LYSxCbi5iaW5kQWxsPVRsLEJuLmJpbmRLZXk9WmEsQm4uY2FzdEFycmF5PWZ1bmN0aW9uIFFsKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBocyh0KT90Olt0XX0sQm4uY2hhaW49SWEsQm4uY2h1bms9ZnVuY3Rpb24gdGMoZSxuLGkpe249KGk/SG8oZSxuLGkpOm49PT10KT8xOmduKFZzKG4pLDApO3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcnx8bjwxKXJldHVybltdO2Zvcih2YXIgbz0wLGE9MCxzPXZ0KGNuKHIvbikpO288cjspc1thKytdPXdyKGUsbyxvKz1uKTtyZXR1cm4gc30sQm4uY29tcGFjdD1mdW5jdGlvbiBlYyh0KXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsaT0wLHI9W107KytlPG47KXt2YXIgbz10W2VdO28mJihyW2krK109byl9cmV0dXJuIHJ9LEJuLmNvbmNhdD1mdW5jdGlvbiBuYygpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg7aWYoIXQpcmV0dXJuW107Zm9yKHZhciBlPXZ0KHQtMSksbj1hcmd1bWVudHNbMF0saT10O2ktLTspZVtpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gRWUoaHMobik/WHIobik6W25dLERpKGUsMSkpfSxCbi5jb25kPWZ1bmN0aW9uIGljKHQpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPUFvKCk7cmV0dXJuIHQ9bj9NZSh0LChmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdFsxXSl0aHJvdyBuZXcgQ3QoZSk7cmV0dXJuW2kodFswXSksdFsxXV19KSk6W10sbXIoKGZ1bmN0aW9uKGUpe2Zvcih2YXIgaT0tMTsrK2k8bjspe3ZhciByPXRbaV07aWYocGUoclswXSx0aGlzLGUpKXJldHVybiBwZShyWzFdLHRoaXMsZSl9fSkpfSxCbi5jb25mb3Jtcz1mdW5jdGlvbiByYyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1ybCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHNpKG4sdCxlKX19KShhaSh0LDEpKX0sQm4uY29uc3RhbnQ9Q2wsQm4uY291bnRCeT16YSxCbi5jcmVhdGU9ZnVuY3Rpb24gb2ModCxlKXt2YXIgbj1Ibih0KTtyZXR1cm4gbnVsbD09ZT9uOm5pKG4sZSl9LEJuLmN1cnJ5PWZ1bmN0aW9uIGUobixpLHIpe3ZhciBvPV9vKG4sOCx0LHQsdCx0LHQsaT1yP3Q6aSk7cmV0dXJuIG8ucGxhY2Vob2xkZXI9ZS5wbGFjZWhvbGRlcixvfSxCbi5jdXJyeVJpZ2h0PWZ1bmN0aW9uIGUobixpLHIpe3ZhciBvPV9vKG4sMTYsdCx0LHQsdCx0LGk9cj90OmkpO3JldHVybiBvLnBsYWNlaG9sZGVyPWUucGxhY2Vob2xkZXIsb30sQm4uZGVib3VuY2U9SmEsQm4uZGVmYXVsdHM9WnMsQm4uZGVmYXVsdHNEZWVwPUpzLEJuLmRlZmVyPVFhLEJuLmRlbGF5PXRzLEJuLmRpZmZlcmVuY2U9c2EsQm4uZGlmZmVyZW5jZUJ5PWxhLEJuLmRpZmZlcmVuY2VXaXRoPWNhLEJuLmRyb3A9ZnVuY3Rpb24gYWMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj93cihlLChuPWl8fG49PT10PzE6VnMobikpPDA/MDpuLHIpOltdfSxCbi5kcm9wUmlnaHQ9ZnVuY3Rpb24gc2MoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj93cihlLDAsKG49ci0obj1pfHxuPT09dD8xOlZzKG4pKSk8MD8wOm4pOltdfSxCbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbiBsYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Ocih0LEFvKGUsMyksITAsITApOltdfSxCbi5kcm9wV2hpbGU9ZnVuY3Rpb24gY2ModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/TnIodCxBbyhlLDMpLCEwKTpbXX0sQm4uZmlsbD1mdW5jdGlvbiB1YyhlLG4saSxyKXt2YXIgbz1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIG8/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmSG8oZSxuLGkpJiYoaT0wLHI9byksKGZ1bmN0aW9uIGEoZSxuLGkscil7dmFyIG89ZS5sZW5ndGg7Zm9yKChpPVZzKGkpKTwwJiYoaT0taT5vPzA6bytpKSwocj1yPT09dHx8cj5vP286VnMocikpPDAmJihyKz1vKSxyPWk+cj8wOlVzKHIpO2k8cjspZVtpKytdPW47cmV0dXJuIGV9KShlLG4saSxyKSk6W119LEJuLmZpbHRlcj1mdW5jdGlvbiBoYyh0LGUpe3JldHVybihocyh0KT95ZTp6aSkodCxBbyhlLDMpKX0sQm4uZmxhdE1hcD1mdW5jdGlvbiBkYyh0LGUpe3JldHVybiBEaShHYSh0LGUpLDEpfSxCbi5mbGF0TWFwRGVlcD1mdW5jdGlvbiBwYyh0LGUpe3JldHVybiBEaShHYSh0LGUpLGEpfSxCbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24gZmMoZSxuLGkpe3JldHVybiBpPWk9PT10PzE6VnMoaSksRGkoR2EoZSxuKSxpKX0sQm4uZmxhdHRlbj1kYSxCbi5mbGF0dGVuRGVlcD1mdW5jdGlvbiBtYyh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RGkodCxhKTpbXX0sQm4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uIGdjKGUsbil7cmV0dXJuIG51bGwhPWUmJmUubGVuZ3RoP0RpKGUsbj1uPT09dD8xOlZzKG4pKTpbXX0sQm4uZmxpcD1mdW5jdGlvbiBfYyh0KXtyZXR1cm4gX28odCw1MTIpfSxCbi5mbG93PUFsLEJuLmZsb3dSaWdodD1rbCxCbi5mcm9tUGFpcnM9ZnVuY3Rpb24geWModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9e307KytlPG47KXt2YXIgcj10W2VdO2lbclswXV09clsxXX1yZXR1cm4gaX0sQm4uZnVuY3Rpb25zPWZ1bmN0aW9uIHZjKHQpe3JldHVybiBudWxsPT10P1tdOlVpKHQscmwodCkpfSxCbi5mdW5jdGlvbnNJbj1mdW5jdGlvbiBiYyh0KXtyZXR1cm4gbnVsbD09dD9bXTpVaSh0LG9sKHQpKX0sQm4uZ3JvdXBCeT1WYSxCbi5pbml0aWFsPWZ1bmN0aW9uIHhjKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD93cih0LDAsLTEpOltdfSxCbi5pbnRlcnNlY3Rpb249ZmEsQm4uaW50ZXJzZWN0aW9uQnk9bWEsQm4uaW50ZXJzZWN0aW9uV2l0aD1nYSxCbi5pbnZlcnQ9ZWwsQm4uaW52ZXJ0Qnk9bmwsQm4uaW52b2tlTWFwPVVhLEJuLml0ZXJhdGVlPVBsLEJuLmtleUJ5PWphLEJuLmtleXM9cmwsQm4ua2V5c0luPW9sLEJuLm1hcD1HYSxCbi5tYXBLZXlzPWZ1bmN0aW9uIHdjKHQsZSl7dmFyIG49e307cmV0dXJuIGU9QW8oZSwzKSxGaSh0LChmdW5jdGlvbih0LGkscil7aWkobixlKHQsaSxyKSx0KX0pKSxufSxCbi5tYXBWYWx1ZXM9ZnVuY3Rpb24gU2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1BbyhlLDMpLEZpKHQsKGZ1bmN0aW9uKHQsaSxyKXtpaShuLGksZSh0LGkscikpfSkpLG59LEJuLm1hdGNoZXM9ZnVuY3Rpb24gTWModCl7cmV0dXJuIG9yKGFpKHQsMSkpfSxCbi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24gRWModCxlKXtyZXR1cm4gYXIodCxhaShlLDEpKX0sQm4ubWVtb2l6ZT1lcyxCbi5tZXJnZT1hbCxCbi5tZXJnZVdpdGg9c2wsQm4ubWV0aG9kPU5sLEJuLm1ldGhvZE9mPUlsLEJuLm1peGluPVJsLEJuLm5lZ2F0ZT1ucyxCbi5udGhBcmc9ZnVuY3Rpb24gVGModCl7cmV0dXJuIHQ9VnModCksbXIoKGZ1bmN0aW9uKGUpe3JldHVybiBscihlLHQpfSkpfSxCbi5vbWl0PWxsLEJuLm9taXRCeT1mdW5jdGlvbiBDYyh0LGUpe3JldHVybiB1bCh0LG5zKEFvKGUpKSl9LEJuLm9uY2U9ZnVuY3Rpb24gQWModCl7cmV0dXJuICRhKDIsdCl9LEJuLm9yZGVyQnk9ZnVuY3Rpb24ga2MoZSxuLGkscil7cmV0dXJuIG51bGw9PWU/W106KGhzKG4pfHwobj1udWxsPT1uP1tdOltuXSksaHMoaT1yP3Q6aSl8fChpPW51bGw9PWk/W106W2ldKSxjcihlLG4saSkpfSxCbi5vdmVyPXpsLEJuLm92ZXJBcmdzPWlzLEJuLm92ZXJFdmVyeT1EbCxCbi5vdmVyU29tZT1CbCxCbi5wYXJ0aWFsPXJzLEJuLnBhcnRpYWxSaWdodD1vcyxCbi5wYXJ0aXRpb249V2EsQm4ucGljaz1jbCxCbi5waWNrQnk9dWwsQm4ucHJvcGVydHk9SGwsQm4ucHJvcGVydHlPZj1mdW5jdGlvbiBMYyhlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PWU/dDpqaShlLG4pfX0sQm4ucHVsbD15YSxCbi5wdWxsQWxsPXZhLEJuLnB1bGxBbGxCeT1mdW5jdGlvbiBQYyh0LGUsbil7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD9ocih0LGUsQW8obiwyKSk6dH0sQm4ucHVsbEFsbFdpdGg9ZnVuY3Rpb24gTmMoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aCYmbiYmbi5sZW5ndGg/aHIoZSxuLHQsaSk6ZX0sQm4ucHVsbEF0PWJhLEJuLnJhbmdlPUZsLEJuLnJhbmdlUmlnaHQ9VmwsQm4ucmVhcmc9YXMsQm4ucmVqZWN0PWZ1bmN0aW9uIEljKHQsZSl7cmV0dXJuKGhzKHQpP3llOnppKSh0LG5zKEFvKGUsMykpKX0sQm4ucmVtb3ZlPWZ1bmN0aW9uIFJjKHQsZSl7dmFyIG49W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbjt2YXIgaT0tMSxyPVtdLG89dC5sZW5ndGg7Zm9yKGU9QW8oZSwzKTsrK2k8bzspe3ZhciBhPXRbaV07ZShhLGksdCkmJihuLnB1c2goYSksci5wdXNoKGkpKX1yZXR1cm4gZHIodCxyKSxufSxCbi5yZXN0PWZ1bmN0aW9uIE9jKG4saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEN0KGUpO3JldHVybiBtcihuLGk9aT09PXQ/aTpWcyhpKSl9LEJuLnJldmVyc2U9eGEsQm4uc2FtcGxlU2l6ZT1mdW5jdGlvbiB6YyhlLG4saSl7cmV0dXJuIG49KGk/SG8oZSxuLGkpOm49PT10KT8xOlZzKG4pLChocyhlKT9LbjpfcikoZSxuKX0sQm4uc2V0PWZ1bmN0aW9uIERjKHQsZSxuKXtyZXR1cm4gbnVsbD09dD90OnlyKHQsZSxuKX0sQm4uc2V0V2l0aD1mdW5jdGlvbiBCYyhlLG4saSxyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOnQsbnVsbD09ZT9lOnlyKGUsbixpLHIpfSxCbi5zaHVmZmxlPWZ1bmN0aW9uIEhjKHQpe3JldHVybihocyh0KT9abjp4cikodCl9LEJuLnNsaWNlPWZ1bmN0aW9uIEZjKGUsbixpKXt2YXIgcj1udWxsPT1lPzA6ZS5sZW5ndGg7cmV0dXJuIHI/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmSG8oZSxuLGkpPyhuPTAsaT1yKToobj1udWxsPT1uPzA6VnMobiksaT1pPT09dD9yOlZzKGkpKSx3cihlLG4saSkpOltdfSxCbi5zb3J0Qnk9cWEsQm4uc29ydGVkVW5pcT1mdW5jdGlvbiBWYyh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/VHIodCk6W119LEJuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbiBVYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Ucih0LEFvKGUsMikpOltdfSxCbi5zcGxpdD1mdW5jdGlvbiBqYyhlLG4saSl7cmV0dXJuIGkmJiJudW1iZXIiIT10eXBlb2YgaSYmSG8oZSxuLGkpJiYobj1pPXQpLChpPWk9PT10P2M6aT4+PjApPyhlPVdzKGUpKSYmKCJzdHJpbmciPT10eXBlb2Ygbnx8bnVsbCE9biYmIWtzKG4pKSYmIShuPUFyKG4pKSYmWmUoZSk/RnIob24oZSksMCxpKTplLnNwbGl0KG4saSk6W119LEJuLnNwcmVhZD1mdW5jdGlvbiBHYyh0LG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBDdChlKTtyZXR1cm4gbj1udWxsPT1uPzA6Z24oVnMobiksMCksbXIoKGZ1bmN0aW9uKGUpe3ZhciBpPWVbbl0scj1GcihlLDAsbik7cmV0dXJuIGkmJkVlKHIsaSkscGUodCx0aGlzLHIpfSkpfSxCbi50YWlsPWZ1bmN0aW9uIFdjKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT93cih0LDEsZSk6W119LEJuLnRha2U9ZnVuY3Rpb24gcWMoZSxuLGkpe3JldHVybiBlJiZlLmxlbmd0aD93cihlLDAsKG49aXx8bj09PXQ/MTpWcyhuKSk8MD8wOm4pOltdfSxCbi50YWtlUmlnaHQ9ZnVuY3Rpb24gWWMoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtyZXR1cm4gcj93cihlLChuPXItKG49aXx8bj09PXQ/MTpWcyhuKSkpPDA/MDpuLHIpOltdfSxCbi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbiBYYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Ocih0LEFvKGUsMyksITEsITApOltdfSxCbi50YWtlV2hpbGU9ZnVuY3Rpb24gJGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/TnIodCxBbyhlLDMpKTpbXX0sQm4udGFwPWZ1bmN0aW9uIEtjKHQsZSl7cmV0dXJuIGUodCksdH0sQm4udGhyb3R0bGU9ZnVuY3Rpb24gWmModCxuLGkpe3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEN0KGUpO3JldHVybiBTcyhpKSYmKHI9ImxlYWRpbmciaW4gaT8hIWkubGVhZGluZzpyLG89InRyYWlsaW5nImluIGk/ISFpLnRyYWlsaW5nOm8pLEphKHQsbix7bGVhZGluZzpyLG1heFdhaXQ6bix0cmFpbGluZzpvfSl9LEJuLnRocnU9UmEsQm4udG9BcnJheT1IcyxCbi50b1BhaXJzPWhsLEJuLnRvUGFpcnNJbj1kbCxCbi50b1BhdGg9ZnVuY3Rpb24gSmModCl7cmV0dXJuIGhzKHQpP01lKHQscmEpOlJzKHQpP1t0XTpYcihuYShXcyh0KSkpfSxCbi50b1BsYWluT2JqZWN0PUdzLEJuLnRyYW5zZm9ybT1mdW5jdGlvbiBRYyh0LGUsbil7dmFyIGk9aHModCkscj1pfHxncyh0KXx8T3ModCk7aWYoZT1BbyhlLDQpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106U3ModCkmJmJzKG8pP0huKFF0KHQpKTp7fX1yZXR1cm4ocj9tZTpGaSkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LEJuLnVuYXJ5PWZ1bmN0aW9uIHR1KHQpe3JldHVybiBYYSh0LDEpfSxCbi51bmlvbj13YSxCbi51bmlvbkJ5PVNhLEJuLnVuaW9uV2l0aD1NYSxCbi51bmlxPWZ1bmN0aW9uIGV1KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9rcih0KTpbXX0sQm4udW5pcUJ5PWZ1bmN0aW9uIG51KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP2tyKHQsQW8oZSwyKSk6W119LEJuLnVuaXFXaXRoPWZ1bmN0aW9uIGl1KGUsbil7cmV0dXJuIG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0LGUmJmUubGVuZ3RoP2tyKGUsdCxuKTpbXX0sQm4udW5zZXQ9ZnVuY3Rpb24gcnUodCxlKXtyZXR1cm4gbnVsbD09dHx8THIodCxlKX0sQm4udW56aXA9RWEsQm4udW56aXBXaXRoPVRhLEJuLnVwZGF0ZT1mdW5jdGlvbiBvdSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/dDpQcih0LGUsRHIobikpfSxCbi51cGRhdGVXaXRoPWZ1bmN0aW9uIGF1KGUsbixpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6dCxudWxsPT1lP2U6UHIoZSxuLERyKGkpLHIpfSxCbi52YWx1ZXM9cGwsQm4udmFsdWVzSW49ZnVuY3Rpb24gc3UodCl7cmV0dXJuIG51bGw9PXQ/W106amUodCxvbCh0KSl9LEJuLndpdGhvdXQ9Q2EsQm4ud29yZHM9TWwsQm4ud3JhcD1mdW5jdGlvbiBsdSh0LGUpe3JldHVybiBycyhEcihlKSx0KX0sQm4ueG9yPUFhLEJuLnhvckJ5PWthLEJuLnhvcldpdGg9TGEsQm4uemlwPVBhLEJuLnppcE9iamVjdD1mdW5jdGlvbiBjdSh0LGUpe3JldHVybiBPcih0fHxbXSxlfHxbXSxRbil9LEJuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24gdXUodCxlKXtyZXR1cm4gT3IodHx8W10sZXx8W10seXIpfSxCbi56aXBXaXRoPU5hLEJuLmVudHJpZXM9aGwsQm4uZW50cmllc0luPWRsLEJuLmV4dGVuZD1ZcyxCbi5leHRlbmRXaXRoPVhzLFJsKEJuLEJuKSxCbi5hZGQ9V2wsQm4uYXR0ZW1wdD1FbCxCbi5jYW1lbENhc2U9ZmwsQm4uY2FwaXRhbGl6ZT1tbCxCbi5jZWlsPXFsLEJuLmNsYW1wPWZ1bmN0aW9uIGh1KGUsbixpKXtyZXR1cm4gaT09PXQmJihpPW4sbj10KSxpIT09dCYmKGk9KGk9anMoaSkpPT1pP2k6MCksbiE9PXQmJihuPShuPWpzKG4pKT09bj9uOjApLG9pKGpzKGUpLG4saSl9LEJuLmNsb25lPWZ1bmN0aW9uIGR1KHQpe3JldHVybiBhaSh0LDQpfSxCbi5jbG9uZURlZXA9ZnVuY3Rpb24gcHUodCl7cmV0dXJuIGFpKHQsNSl9LEJuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24gZnUoZSxuKXtyZXR1cm4gYWkoZSw1LG49ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjp0KX0sQm4uY2xvbmVXaXRoPWZ1bmN0aW9uIG11KGUsbil7cmV0dXJuIGFpKGUsNCxuPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246dCl9LEJuLmNvbmZvcm1zVG89ZnVuY3Rpb24gZ3UodCxlKXtyZXR1cm4gbnVsbD09ZXx8c2kodCxlLHJsKGUpKX0sQm4uZGVidXJyPWdsLEJuLmRlZmF1bHRUbz1mdW5jdGlvbiBfdSh0LGUpe3JldHVybiBudWxsPT10fHx0IT10P2U6dH0sQm4uZGl2aWRlPVlsLEJuLmVuZHNXaXRoPWZ1bmN0aW9uIHl1KGUsbixpKXtlPVdzKGUpLG49QXIobik7dmFyIHI9ZS5sZW5ndGgsbz1pPWk9PT10P3I6b2koVnMoaSksMCxyKTtyZXR1cm4oaS09bi5sZW5ndGgpPj0wJiZlLnNsaWNlKGksbyk9PW59LEJuLmVxPXNzLEJuLmVzY2FwZT1mdW5jdGlvbiB2dSh0KXtyZXR1cm4odD1Xcyh0KSkmJkcudGVzdCh0KT90LnJlcGxhY2UoVSwkZSk6dH0sQm4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uIGJ1KHQpe3JldHVybih0PVdzKHQpKSYmSi50ZXN0KHQpP3QucmVwbGFjZShaLCJcXCQmIik6dH0sQm4uZXZlcnk9ZnVuY3Rpb24geHUoZSxuLGkpe3ZhciByPWhzKGUpP19lOlJpO3JldHVybiBpJiZIbyhlLG4saSkmJihuPXQpLHIoZSxBbyhuLDMpKX0sQm4uZmluZD1EYSxCbi5maW5kSW5kZXg9dWEsQm4uZmluZEtleT1mdW5jdGlvbiB3dSh0LGUpe3JldHVybiBMZSh0LEFvKGUsMyksRmkpfSxCbi5maW5kTGFzdD1CYSxCbi5maW5kTGFzdEluZGV4PWhhLEJuLmZpbmRMYXN0S2V5PWZ1bmN0aW9uIFN1KHQsZSl7cmV0dXJuIExlKHQsQW8oZSwzKSxWaSl9LEJuLmZsb29yPVhsLEJuLmZvckVhY2g9SGEsQm4uZm9yRWFjaFJpZ2h0PUZhLEJuLmZvckluPWZ1bmN0aW9uIE11KHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpCaSh0LEFvKGUsMyksb2wpfSxCbi5mb3JJblJpZ2h0PWZ1bmN0aW9uIEV1KHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpIaSh0LEFvKGUsMyksb2wpfSxCbi5mb3JPd249ZnVuY3Rpb24gVHUodCxlKXtyZXR1cm4gdCYmRmkodCxBbyhlLDMpKX0sQm4uZm9yT3duUmlnaHQ9ZnVuY3Rpb24gQ3UodCxlKXtyZXR1cm4gdCYmVmkodCxBbyhlLDMpKX0sQm4uZ2V0PVFzLEJuLmd0PWxzLEJuLmd0ZT1jcyxCbi5oYXM9ZnVuY3Rpb24gQXUodCxlKXtyZXR1cm4gbnVsbCE9dCYmT28odCxlLFlpKX0sQm4uaGFzSW49dGwsQm4uaGVhZD1wYSxCbi5pZGVudGl0eT1MbCxCbi5pbmNsdWRlcz1mdW5jdGlvbiBrdSh0LGUsbixpKXt0PWZzKHQpP3Q6cGwodCksbj1uJiYhaT9WcyhuKTowO3ZhciByPXQubGVuZ3RoO3JldHVybiBuPDAmJihuPWduKHIrbiwwKSksSXModCk/bjw9ciYmdC5pbmRleE9mKGUsbik+LTE6ISFyJiZOZSh0LGUsbik+LTF9LEJuLmluZGV4T2Y9ZnVuY3Rpb24gTHUodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6VnMobik7cmV0dXJuIHI8MCYmKHI9Z24oaStyLDApKSxOZSh0LGUscil9LEJuLmluUmFuZ2U9ZnVuY3Rpb24gUHUoZSxuLGkpe3JldHVybiBuPUZzKG4pLGk9PT10PyhpPW4sbj0wKTppPUZzKGkpLChmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gdD49X24oZSxuKSYmdDxnbihlLG4pfSkoZT1qcyhlKSxuLGkpfSxCbi5pbnZva2U9aWwsQm4uaXNBcmd1bWVudHM9dXMsQm4uaXNBcnJheT1ocyxCbi5pc0FycmF5QnVmZmVyPWRzLEJuLmlzQXJyYXlMaWtlPWZzLEJuLmlzQXJyYXlMaWtlT2JqZWN0PW1zLEJuLmlzQm9vbGVhbj1mdW5jdGlvbiBOdSh0KXtyZXR1cm4hMD09PXR8fCExPT09dHx8TXModCkmJldpKHQpPT1wfSxCbi5pc0J1ZmZlcj1ncyxCbi5pc0RhdGU9X3MsQm4uaXNFbGVtZW50PWZ1bmN0aW9uIEl1KHQpe3JldHVybiBNcyh0KSYmMT09PXQubm9kZVR5cGUmJiFBcyh0KX0sQm4uaXNFbXB0eT1mdW5jdGlvbiBSdSh0KXtpZihudWxsPT10KXJldHVybiEwO2lmKGZzKHQpJiYoaHModCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxncyh0KXx8T3ModCl8fHVzKHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9Um8odCk7aWYoZT09eXx8ZT09UylyZXR1cm4hdC5zaXplO2lmKGpvKHQpKXJldHVybiFucih0KS5sZW5ndGg7Zm9yKHZhciBuIGluIHQpaWYoTnQuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfSxCbi5pc0VxdWFsPWZ1bmN0aW9uIE91KHQsZSl7cmV0dXJuIEppKHQsZSl9LEJuLmlzRXF1YWxXaXRoPWZ1bmN0aW9uIHp1KGUsbixpKXt2YXIgcj0oaT0iZnVuY3Rpb24iPT10eXBlb2YgaT9pOnQpP2koZSxuKTp0O3JldHVybiByPT09dD9KaShlLG4sdCxpKTohIXJ9LEJuLmlzRXJyb3I9dnMsQm4uaXNGaW5pdGU9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZwbih0KX0sQm4uaXNGdW5jdGlvbj1icyxCbi5pc0ludGVnZXI9eHMsQm4uaXNMZW5ndGg9d3MsQm4uaXNNYXA9RXMsQm4uaXNNYXRjaD1mdW5jdGlvbiBCdSh0LGUpe3JldHVybiB0PT09ZXx8UWkodCxlLExvKGUpKX0sQm4uaXNNYXRjaFdpdGg9ZnVuY3Rpb24gSHUoZSxuLGkpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6dCxRaShlLG4sTG8obiksaSl9LEJuLmlzTmFOPWZ1bmN0aW9uIEZ1KHQpe3JldHVybiBDcyh0KSYmdCE9K3R9LEJuLmlzTmF0aXZlPWZ1bmN0aW9uIFZ1KHQpe2lmKFVvKHQpKXRocm93IG5ldyB4dCgiVW5zdXBwb3J0ZWQgY29yZS1qcyB1c2UuIFRyeSBodHRwczovL25wbXMuaW8vc2VhcmNoP3E9cG9ueWZpbGwuIik7cmV0dXJuIHRyKHQpfSxCbi5pc05pbD1mdW5jdGlvbiBVdSh0KXtyZXR1cm4gbnVsbD09dH0sQm4uaXNOdWxsPWZ1bmN0aW9uIGp1KHQpe3JldHVybiBudWxsPT09dH0sQm4uaXNOdW1iZXI9Q3MsQm4uaXNPYmplY3Q9U3MsQm4uaXNPYmplY3RMaWtlPU1zLEJuLmlzUGxhaW5PYmplY3Q9QXMsQm4uaXNSZWdFeHA9a3MsQm4uaXNTYWZlSW50ZWdlcj1mdW5jdGlvbiBHdSh0KXtyZXR1cm4geHModCkmJnQ+PS05MDA3MTk5MjU0NzQwOTkxJiZ0PD1zfSxCbi5pc1NldD1QcyxCbi5pc1N0cmluZz1JcyxCbi5pc1N5bWJvbD1ScyxCbi5pc1R5cGVkQXJyYXk9T3MsQm4uaXNVbmRlZmluZWQ9ZnVuY3Rpb24gV3UoZSl7cmV0dXJuIGU9PT10fSxCbi5pc1dlYWtNYXA9ZnVuY3Rpb24gcXUodCl7cmV0dXJuIE1zKHQpJiZSbyh0KT09VH0sQm4uaXNXZWFrU2V0PWZ1bmN0aW9uIFl1KHQpe3JldHVybiBNcyh0KSYmIltvYmplY3QgV2Vha1NldF0iPT1XaSh0KX0sQm4uam9pbj1mdW5jdGlvbiBYdSh0LGUpe3JldHVybiBudWxsPT10PyIiOmZuLmNhbGwodCxlKX0sQm4ua2ViYWJDYXNlPV9sLEJuLmxhc3Q9X2EsQm4ubGFzdEluZGV4T2Y9ZnVuY3Rpb24gJHUoZSxuLGkpe3ZhciByPW51bGw9PWU/MDplLmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yO3JldHVybiBpIT09dCYmKG89KG89VnMoaSkpPDA/Z24ocitvLDApOl9uKG8sci0xKSksbj09bj8oZnVuY3Rpb24gYSh0LGUsbil7Zm9yKHZhciBpPW4rMTtpLS07KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybiBpfSkoZSxuLG8pOlBlKGUsUmUsbywhMCl9LEJuLmxvd2VyQ2FzZT15bCxCbi5sb3dlckZpcnN0PXZsLEJuLmx0PURzLEJuLmx0ZT1CcyxCbi5tYXg9ZnVuY3Rpb24gS3UoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP09pKGUsTGwscWkpOnR9LEJuLm1heEJ5PWZ1bmN0aW9uIFp1KGUsbil7cmV0dXJuIGUmJmUubGVuZ3RoP09pKGUsQW8obiwyKSxxaSk6dH0sQm4ubWVhbj1mdW5jdGlvbiBKdSh0KXtyZXR1cm4gT2UodCxMbCl9LEJuLm1lYW5CeT1mdW5jdGlvbiBRdSh0LGUpe3JldHVybiBPZSh0LEFvKGUsMikpfSxCbi5taW49ZnVuY3Rpb24gdGgoZSl7cmV0dXJuIGUmJmUubGVuZ3RoP09pKGUsTGwsaXIpOnR9LEJuLm1pbkJ5PWZ1bmN0aW9uIGVoKGUsbil7cmV0dXJuIGUmJmUubGVuZ3RoP09pKGUsQW8obiwyKSxpcik6dH0sQm4uc3R1YkFycmF5PVVsLEJuLnN0dWJGYWxzZT1qbCxCbi5zdHViT2JqZWN0PWZ1bmN0aW9uIG5oKCl7cmV0dXJue319LEJuLnN0dWJTdHJpbmc9ZnVuY3Rpb24gaWgoKXtyZXR1cm4iIn0sQm4uc3R1YlRydWU9ZnVuY3Rpb24gcmgoKXtyZXR1cm4hMH0sQm4ubXVsdGlwbHk9JGwsQm4ubnRoPWZ1bmN0aW9uIG9oKGUsbil7cmV0dXJuIGUmJmUubGVuZ3RoP2xyKGUsVnMobikpOnR9LEJuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24gYWgoKXtyZXR1cm4gZWUuXz09PXRoaXMmJihlZS5fPUR0KSx0aGlzfSxCbi5ub29wPU9sLEJuLm5vdz1ZYSxCbi5wYWQ9ZnVuY3Rpb24gc2godCxlLG4pe3Q9V3ModCk7dmFyIGk9KGU9VnMoZSkpP3JuKHQpOjA7aWYoIWV8fGk+PWUpcmV0dXJuIHQ7dmFyIHI9KGUtaSkvMjtyZXR1cm4gY28odW4ociksbikrdCtjbyhjbihyKSxuKX0sQm4ucGFkRW5kPWZ1bmN0aW9uIGxoKHQsZSxuKXt0PVdzKHQpO3ZhciBpPShlPVZzKGUpKT9ybih0KTowO3JldHVybiBlJiZpPGU/dCtjbyhlLWksbik6dH0sQm4ucGFkU3RhcnQ9ZnVuY3Rpb24gY2godCxlLG4pe3Q9V3ModCk7dmFyIGk9KGU9VnMoZSkpP3JuKHQpOjA7cmV0dXJuIGUmJmk8ZT9jbyhlLWksbikrdDp0fSxCbi5wYXJzZUludD1mdW5jdGlvbiB1aCh0LGUsbil7cmV0dXJuIG58fG51bGw9PWU/ZT0wOmUmJihlPStlKSx2bihXcyh0KS5yZXBsYWNlKFEsIiIpLGV8fDApfSxCbi5yYW5kb209ZnVuY3Rpb24gaGgoZSxuLGkpe2lmKGkmJiJib29sZWFuIiE9dHlwZW9mIGkmJkhvKGUsbixpKSYmKG49aT10KSxpPT09dCYmKCJib29sZWFuIj09dHlwZW9mIG4/KGk9bixuPXQpOiJib29sZWFuIj09dHlwZW9mIGUmJihpPWUsZT10KSksZT09PXQmJm49PT10PyhlPTAsbj0xKTooZT1GcyhlKSxuPT09dD8obj1lLGU9MCk6bj1GcyhuKSksZT5uKXt2YXIgcj1lO2U9bixuPXJ9aWYoaXx8ZSUxfHxuJTEpe3ZhciBvPWJuKCk7cmV0dXJuIF9uKGUrbyoobi1lK1p0KCIxZS0iKygobysiIikubGVuZ3RoLTEpKSksbil9cmV0dXJuIHByKGUsbil9LEJuLnJlZHVjZT1mdW5jdGlvbiBkaCh0LGUsbil7dmFyIGk9aHModCk/VGU6QmUscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxBbyhlLDQpLG4scixOaSl9LEJuLnJlZHVjZVJpZ2h0PWZ1bmN0aW9uIHBoKHQsZSxuKXt2YXIgaT1ocyh0KT9DZTpCZSxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LEFvKGUsNCksbixyLElpKX0sQm4ucmVwZWF0PWZ1bmN0aW9uIGZoKGUsbixpKXtyZXR1cm4gbj0oaT9IbyhlLG4saSk6bj09PXQpPzE6VnMobiksZnIoV3MoZSksbil9LEJuLnJlcGxhY2U9ZnVuY3Rpb24gbWgoKXt2YXIgdD1hcmd1bWVudHMsZT1Xcyh0WzBdKTtyZXR1cm4gdC5sZW5ndGg8Mz9lOmUucmVwbGFjZSh0WzFdLHRbMl0pfSxCbi5yZXN1bHQ9ZnVuY3Rpb24gZ2goZSxuLGkpe3ZhciByPS0xLG89KG49QnIobixlKSkubGVuZ3RoO2ZvcihvfHwobz0xLGU9dCk7KytyPG87KXt2YXIgYT1udWxsPT1lP3Q6ZVtyYShuW3JdKV07YT09PXQmJihyPW8sYT1pKSxlPWJzKGEpP2EuY2FsbChlKTphfXJldHVybiBlfSxCbi5yb3VuZD1LbCxCbi5ydW5JbkNvbnRleHQ9dHQsQm4uc2FtcGxlPWZ1bmN0aW9uIF9oKHQpe3JldHVybihocyh0KT8kbjpncikodCl9LEJuLnNpemU9ZnVuY3Rpb24geWgodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihmcyh0KSlyZXR1cm4gSXModCk/cm4odCk6dC5sZW5ndGg7dmFyIGU9Um8odCk7cmV0dXJuIGU9PXl8fGU9PVM/dC5zaXplOm5yKHQpLmxlbmd0aH0sQm4uc25ha2VDYXNlPWJsLEJuLnNvbWU9ZnVuY3Rpb24gdmgoZSxuLGkpe3ZhciByPWhzKGUpP0FlOlNyO3JldHVybiBpJiZIbyhlLG4saSkmJihuPXQpLHIoZSxBbyhuLDMpKX0sQm4uc29ydGVkSW5kZXg9ZnVuY3Rpb24gYmgodCxlKXtyZXR1cm4gTXIodCxlKX0sQm4uc29ydGVkSW5kZXhCeT1mdW5jdGlvbiB4aCh0LGUsbil7cmV0dXJuIEVyKHQsZSxBbyhuLDIpKX0sQm4uc29ydGVkSW5kZXhPZj1mdW5jdGlvbiB3aCh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZihuKXt2YXIgaT1Ncih0LGUpO2lmKGk8biYmc3ModFtpXSxlKSlyZXR1cm4gaX1yZXR1cm4tMX0sQm4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uIFNoKHQsZSl7cmV0dXJuIE1yKHQsZSwhMCl9LEJuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uIE1oKHQsZSxuKXtyZXR1cm4gRXIodCxlLEFvKG4sMiksITApfSxCbi5zb3J0ZWRMYXN0SW5kZXhPZj1mdW5jdGlvbiBFaCh0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXt2YXIgbj1Ncih0LGUsITApLTE7aWYoc3ModFtuXSxlKSlyZXR1cm4gbn1yZXR1cm4tMX0sQm4uc3RhcnRDYXNlPXhsLEJuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24gVGgodCxlLG4pe3JldHVybiB0PVdzKHQpLG49bnVsbD09bj8wOm9pKFZzKG4pLDAsdC5sZW5ndGgpLGU9QXIoZSksdC5zbGljZShuLG4rZS5sZW5ndGgpPT1lfSxCbi5zdWJ0cmFjdD1abCxCbi5zdW09ZnVuY3Rpb24gQ2godCl7cmV0dXJuIHQmJnQubGVuZ3RoP0hlKHQsTGwpOjB9LEJuLnN1bUJ5PWZ1bmN0aW9uIEFoKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0hlKHQsQW8oZSwyKSk6MH0sQm4udGVtcGxhdGU9ZnVuY3Rpb24ga2goZSxuLGkpe3ZhciByPUJuLnRlbXBsYXRlU2V0dGluZ3M7aSYmSG8oZSxuLGkpJiYobj10KSxlPVdzKGUpLG49WHMoe30sbixyLHlvKTt2YXIgbyxhLHM9WHMoe30sbi5pbXBvcnRzLHIuaW1wb3J0cyx5byksbD1ybChzKSxjPWplKHMsbCksdT0wLGg9bi5pbnRlcnBvbGF0ZXx8bXQsZD0iX19wICs9ICciLHA9RXQoKG4uZXNjYXBlfHxtdCkuc291cmNlKyJ8IitoLnNvdXJjZSsifCIrKGg9PT1ZP3N0Om10KS5zb3VyY2UrInwiKyhuLmV2YWx1YXRlfHxtdCkuc291cmNlKyJ8JCIsImciKSxmPSIvLyMgc291cmNlVVJMPSIrKE50LmNhbGwobiwic291cmNlVVJMIik/KG4uc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytZdCsiXSIpKyJcbiI7ZS5yZXBsYWNlKHAsKGZ1bmN0aW9uKHQsbixpLHIscyxsKXtyZXR1cm4gaXx8KGk9ciksZCs9ZS5zbGljZSh1LGwpLnJlcGxhY2UoZ3QsS2UpLG4mJihvPSEwLGQrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHMmJihhPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLGkmJihkKz0iJyArXG4oKF9fdCA9ICgiK2krIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLHU9bCt0Lmxlbmd0aCx0fSkpLGQrPSInO1xuIjt2YXIgbT1OdC5jYWxsKG4sInZhcmlhYmxlIikmJm4udmFyaWFibGU7aWYobSl7aWYob3QudGVzdChtKSl0aHJvdyBuZXcgeHQoIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIil9ZWxzZSBkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iO2Q9KGE/ZC5yZXBsYWNlKEIsIiIpOmQpLnJlcGxhY2UoSCwiJDEiKS5yZXBsYWNlKEYsIiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKG18fCJvYmoiKSsiKSB7XG4iKyhtPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9fcFxufSI7dmFyIGc9RWwoKGZ1bmN0aW9uKCl7cmV0dXJuIHd0KGwsZisicmV0dXJuICIrZCkuYXBwbHkodCxjKX0pKTtpZihnLnNvdXJjZT1kLHZzKGcpKXRocm93IGc7cmV0dXJuIGd9LEJuLnRpbWVzPWZ1bmN0aW9uIExoKHQsZSl7aWYoKHQ9VnModCkpPDF8fHQ+cylyZXR1cm5bXTt2YXIgbj1jLGk9X24odCxjKTtlPUFvKGUpLHQtPWM7Zm9yKHZhciByPUZlKGksZSk7KytuPHQ7KWUobik7cmV0dXJuIHJ9LEJuLnRvRmluaXRlPUZzLEJuLnRvSW50ZWdlcj1WcyxCbi50b0xlbmd0aD1VcyxCbi50b0xvd2VyPWZ1bmN0aW9uIFBoKHQpe3JldHVybiBXcyh0KS50b0xvd2VyQ2FzZSgpfSxCbi50b051bWJlcj1qcyxCbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIE5oKHQpe3JldHVybiB0P29pKFZzKHQpLC05MDA3MTk5MjU0NzQwOTkxLHMpOjA9PT10P3Q6MH0sQm4udG9TdHJpbmc9V3MsQm4udG9VcHBlcj1mdW5jdGlvbiBJaCh0KXtyZXR1cm4gV3ModCkudG9VcHBlckNhc2UoKX0sQm4udHJpbT1mdW5jdGlvbiBSaChlLG4saSl7aWYoKGU9V3MoZSkpJiYoaXx8bj09PXQpKXJldHVybiBWZShlKTtpZighZXx8IShuPUFyKG4pKSlyZXR1cm4gZTt2YXIgcj1vbihlKSxvPW9uKG4pO3JldHVybiBGcihyLFdlKHIsbykscWUocixvKSsxKS5qb2luKCIiKX0sQm4udHJpbUVuZD1mdW5jdGlvbiBPaChlLG4saSl7aWYoKGU9V3MoZSkpJiYoaXx8bj09PXQpKXJldHVybiBlLnNsaWNlKDAsYW4oZSkrMSk7aWYoIWV8fCEobj1BcihuKSkpcmV0dXJuIGU7dmFyIHI9b24oZSk7cmV0dXJuIEZyKHIsMCxxZShyLG9uKG4pKSsxKS5qb2luKCIiKX0sQm4udHJpbVN0YXJ0PWZ1bmN0aW9uIHpoKGUsbixpKXtpZigoZT1XcyhlKSkmJihpfHxuPT09dCkpcmV0dXJuIGUucmVwbGFjZShRLCIiKTtpZighZXx8IShuPUFyKG4pKSlyZXR1cm4gZTt2YXIgcj1vbihlKTtyZXR1cm4gRnIocixXZShyLG9uKG4pKSkuam9pbigiIil9LEJuLnRydW5jYXRlPWZ1bmN0aW9uIERoKGUsbil7dmFyIGk9MzAscj0iLi4uIjtpZihTcyhuKSl7dmFyIG89InNlcGFyYXRvciJpbiBuP24uc2VwYXJhdG9yOm87aT0ibGVuZ3RoImluIG4/VnMobi5sZW5ndGgpOmkscj0ib21pc3Npb24iaW4gbj9BcihuLm9taXNzaW9uKTpyfXZhciBhPShlPVdzKGUpKS5sZW5ndGg7aWYoWmUoZSkpe3ZhciBzPW9uKGUpO2E9cy5sZW5ndGh9aWYoaT49YSlyZXR1cm4gZTt2YXIgbD1pLXJuKHIpO2lmKGw8MSlyZXR1cm4gcjt2YXIgYz1zP0ZyKHMsMCxsKS5qb2luKCIiKTplLnNsaWNlKDAsbCk7aWYobz09PXQpcmV0dXJuIGMrcjtpZihzJiYobCs9Yy5sZW5ndGgtbCksa3Mobykpe2lmKGUuc2xpY2UobCkuc2VhcmNoKG8pKXt2YXIgdSxoPWM7Zm9yKG8uZ2xvYmFsfHwobz1FdChvLnNvdXJjZSxXcyhsdC5leGVjKG8pKSsiZyIpKSxvLmxhc3RJbmRleD0wO3U9by5leGVjKGgpOyl2YXIgZD11LmluZGV4O2M9Yy5zbGljZSgwLGQ9PT10P2w6ZCl9fWVsc2UgaWYoZS5pbmRleE9mKEFyKG8pLGwpIT1sKXt2YXIgcD1jLmxhc3RJbmRleE9mKG8pO3A+LTEmJihjPWMuc2xpY2UoMCxwKSl9cmV0dXJuIGMrcn0sQm4udW5lc2NhcGU9ZnVuY3Rpb24gQmgodCl7cmV0dXJuKHQ9V3ModCkpJiZqLnRlc3QodCk/dC5yZXBsYWNlKFYsc24pOnR9LEJuLnVuaXF1ZUlkPWZ1bmN0aW9uIEhoKHQpe3ZhciBlPSsrSXQ7cmV0dXJuIFdzKHQpK2V9LEJuLnVwcGVyQ2FzZT13bCxCbi51cHBlckZpcnN0PVNsLEJuLmVhY2g9SGEsQm4uZWFjaFJpZ2h0PUZhLEJuLmZpcnN0PXBhLFJsKEJuLChHbD17fSxGaShCbiwoZnVuY3Rpb24odCxlKXtOdC5jYWxsKEJuLnByb3RvdHlwZSxlKXx8KEdsW2VdPXQpfSkpLEdsKSx7Y2hhaW46ITF9KSxCbi5WRVJTSU9OPSI0LjE3LjIxIixtZShbImJpbmQiLCJiaW5kS2V5IiwiY3VycnkiLCJjdXJyeVJpZ2h0IiwicGFydGlhbCIsInBhcnRpYWxSaWdodCJdLChmdW5jdGlvbih0KXtCblt0XS5wbGFjZWhvbGRlcj1Cbn0pKSxtZShbImRyb3AiLCJ0YWtlIl0sKGZ1bmN0aW9uKGUsbil7VW4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKGkpe2k9aT09PXQ/MTpnbihWcyhpKSwwKTt2YXIgcj10aGlzLl9fZmlsdGVyZWRfXyYmIW4/bmV3IFVuKHRoaXMpOnRoaXMuY2xvbmUoKTtyZXR1cm4gci5fX2ZpbHRlcmVkX18/ci5fX3Rha2VDb3VudF9fPV9uKGksci5fX3Rha2VDb3VudF9fKTpyLl9fdmlld3NfXy5wdXNoKHtzaXplOl9uKGksYyksdHlwZTplKyhyLl9fZGlyX188MD8iUmlnaHQiOiIiKX0pLHJ9LFVuLnByb3RvdHlwZVtlKyJSaWdodCJdPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKVtlXSh0KS5yZXZlcnNlKCl9fSkpLG1lKFsiZmlsdGVyIiwibWFwIiwidGFrZVdoaWxlIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSsxLGk9MT09bnx8Mz09bjtVbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jbG9uZSgpO3JldHVybiBlLl9faXRlcmF0ZWVzX18ucHVzaCh7aXRlcmF0ZWU6QW8odCwzKSx0eXBlOm59KSxlLl9fZmlsdGVyZWRfXz1lLl9fZmlsdGVyZWRfX3x8aSxlfX0pKSxtZShbImhlYWQiLCJsYXN0Il0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49InRha2UiKyhlPyJSaWdodCI6IiIpO1VuLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzW25dKDEpLnZhbHVlKClbMF19fSkpLG1lKFsiaW5pdGlhbCIsInRhaWwiXSwoZnVuY3Rpb24odCxlKXt2YXIgbj0iZHJvcCIrKGU/IiI6IlJpZ2h0Iik7VW4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBVbih0aGlzKTp0aGlzW25dKDEpfX0pKSxVbi5wcm90b3R5cGUuY29tcGFjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihMbCl9LFVuLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcih0KS5oZWFkKCl9LFVuLnByb3RvdHlwZS5maW5kTGFzdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZCh0KX0sVW4ucHJvdG90eXBlLmludm9rZU1hcD1tcigoZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD9uZXcgVW4odGhpcyk6dGhpcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBLaShuLHQsZSl9KSl9KSksVW4ucHJvdG90eXBlLnJlamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXIobnMoQW8odCkpKX0sVW4ucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsbil7ZT1WcyhlKTt2YXIgaT10aGlzO3JldHVybiBpLl9fZmlsdGVyZWRfXyYmKGU+MHx8bjwwKT9uZXcgVW4oaSk6KGU8MD9pPWkudGFrZVJpZ2h0KC1lKTplJiYoaT1pLmRyb3AoZSkpLG4hPT10JiYoaT0obj1WcyhuKSk8MD9pLmRyb3BSaWdodCgtbik6aS50YWtlKG4tZSkpLGkpfSxVbi5wcm90b3R5cGUudGFrZVJpZ2h0V2hpbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZSh0KS5yZXZlcnNlKCl9LFVuLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFrZShjKX0sRmkoVW4ucHJvdG90eXBlLChmdW5jdGlvbihlLG4pe3ZhciBpPS9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG4pLHI9L14oPzpoZWFkfGxhc3QpJC8udGVzdChuKSxvPUJuW3I/InRha2UiKygibGFzdCI9PW4/IlJpZ2h0IjoiIik6bl0sYT1yfHwvXmZpbmQvLnRlc3Qobik7byYmKEJuLnByb3RvdHlwZVtuXT1mdW5jdGlvbigpe3ZhciBuPXRoaXMuX193cmFwcGVkX18scz1yP1sxXTphcmd1bWVudHMsbD1uIGluc3RhbmNlb2YgVW4sYz1zWzBdLHU9bHx8aHMobiksaD1mdW5jdGlvbih0KXt2YXIgZT1vLmFwcGx5KEJuLEVlKFt0XSxzKSk7cmV0dXJuIHImJmQ/ZVswXTplfTt1JiZpJiYiZnVuY3Rpb24iPT10eXBlb2YgYyYmMSE9Yy5sZW5ndGgmJihsPXU9ITEpO3ZhciBkPXRoaXMuX19jaGFpbl9fLHA9ISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxmPWEmJiFkLG09bCYmIXA7aWYoIWEmJnUpe249bT9uOm5ldyBVbih0aGlzKTt2YXIgZz1lLmFwcGx5KG4scyk7cmV0dXJuIGcuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpSYSxhcmdzOltoXSx0aGlzQXJnOnR9KSxuZXcgVm4oZyxkKX1yZXR1cm4gZiYmbT9lLmFwcGx5KHRoaXMscyk6KGc9dGhpcy50aHJ1KGgpLGY/cj9nLnZhbHVlKClbMF06Zy52YWx1ZSgpOmcpfSl9KSksbWUoWyJwb3AiLCJwdXNoIiwic2hpZnQiLCJzb3J0Iiwic3BsaWNlIiwidW5zaGlmdCJdLChmdW5jdGlvbih0KXt2YXIgZT1BdFt0XSxuPS9eKD86cHVzaHxzb3J0fHVuc2hpZnQpJC8udGVzdCh0KT8idGFwIjoidGhydSIsaT0vXig/OnBvcHxzaGlmdCkkLy50ZXN0KHQpO0JuLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cztpZihpJiYhdGhpcy5fX2NoYWluX18pe3ZhciByPXRoaXMudmFsdWUoKTtyZXR1cm4gZS5hcHBseShocyhyKT9yOltdLHQpfXJldHVybiB0aGlzW25dKChmdW5jdGlvbihuKXtyZXR1cm4gZS5hcHBseShocyhuKT9uOltdLHQpfSkpfX0pKSxGaShVbi5wcm90b3R5cGUsKGZ1bmN0aW9uKHQsZSl7dmFyIG49Qm5bZV07aWYobil7dmFyIGk9bi5uYW1lKyIiO050LmNhbGwoa24saSl8fChrbltpXT1bXSksa25baV0ucHVzaCh7bmFtZTplLGZ1bmM6bn0pfX0pKSxrbltvbyh0LDIpLm5hbWVdPVt7bmFtZToid3JhcHBlciIsZnVuYzp0fV0sVW4ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uIEZoKCl7dmFyIHQ9bmV3IFVuKHRoaXMuX193cmFwcGVkX18pO3JldHVybiB0Ll9fYWN0aW9uc19fPVhyKHRoaXMuX19hY3Rpb25zX18pLHQuX19kaXJfXz10aGlzLl9fZGlyX18sdC5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sdC5fX2l0ZXJhdGVlc19fPVhyKHRoaXMuX19pdGVyYXRlZXNfXyksdC5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyx0Ll9fdmlld3NfXz1Ycih0aGlzLl9fdmlld3NfXyksdH0sVW4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24gVmgoKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIHQ9bmV3IFVuKHRoaXMpO3QuX19kaXJfXz0tMSx0Ll9fZmlsdGVyZWRfXz0hMH1lbHNlKHQ9dGhpcy5jbG9uZSgpKS5fX2Rpcl9fKj0tMTtyZXR1cm4gdH0sVW4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uIFVoKCl7dmFyIHQ9dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLGU9dGhpcy5fX2Rpcl9fLG49aHModCksaT1lPDAscj1uP3QubGVuZ3RoOjAsbz0oZnVuY3Rpb24gYSh0LGUsbil7Zm9yKHZhciBpPS0xLHI9bi5sZW5ndGg7KytpPHI7KXt2YXIgbz1uW2ldLGE9by5zaXplO3N3aXRjaChvLnR5cGUpe2Nhc2UiZHJvcCI6dCs9YTticmVhaztjYXNlImRyb3BSaWdodCI6ZS09YTticmVhaztjYXNlInRha2UiOmU9X24oZSx0K2EpO2JyZWFrO2Nhc2UidGFrZVJpZ2h0Ijp0PWduKHQsZS1hKX19cmV0dXJue3N0YXJ0OnQsZW5kOmV9fSkoMCxyLHRoaXMuX192aWV3c19fKSxzPW8uc3RhcnQsbD1vLmVuZCxjPWwtcyx1PWk/bDpzLTEsaD10aGlzLl9faXRlcmF0ZWVzX18sZD1oLmxlbmd0aCxwPTAsZj1fbihjLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIW58fCFpJiZyPT1jJiZmPT1jKXJldHVybiBJcih0LHRoaXMuX19hY3Rpb25zX18pO3ZhciBtPVtdO3Q6Zm9yKDtjLS0mJnA8Zjspe2Zvcih2YXIgZz0tMSxfPXRbdSs9ZV07KytnPGQ7KXt2YXIgeT1oW2ddLHY9eS50eXBlLGI9KDAseS5pdGVyYXRlZSkoXyk7aWYoMj09dilfPWI7ZWxzZSBpZighYil7aWYoMT09diljb250aW51ZSB0O2JyZWFrIHR9fW1bcCsrXT1ffXJldHVybiBtfSxCbi5wcm90b3R5cGUuYXQ9T2EsQm4ucHJvdG90eXBlLmNoYWluPWZ1bmN0aW9uIGpoKCl7cmV0dXJuIElhKHRoaXMpfSxCbi5wcm90b3R5cGUuY29tbWl0PWZ1bmN0aW9uIEdoKCl7cmV0dXJuIG5ldyBWbih0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfSxCbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbiBXaCgpe3RoaXMuX192YWx1ZXNfXz09PXQmJih0aGlzLl9fdmFsdWVzX189SHModGhpcy52YWx1ZSgpKSk7dmFyIGU9dGhpcy5fX2luZGV4X18+PXRoaXMuX192YWx1ZXNfXy5sZW5ndGg7cmV0dXJue2RvbmU6ZSx2YWx1ZTplP3Q6dGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdfX0sQm4ucHJvdG90eXBlLnBsYW50PWZ1bmN0aW9uIHFoKGUpe2Zvcih2YXIgbixpPXRoaXM7aSBpbnN0YW5jZW9mIEZuOyl7dmFyIHI9YWEoaSk7ci5fX2luZGV4X189MCxyLl9fdmFsdWVzX189dCxuP28uX193cmFwcGVkX189cjpuPXI7dmFyIG89cjtpPWkuX193cmFwcGVkX199cmV0dXJuIG8uX193cmFwcGVkX189ZSxufSxCbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbiBZaCgpe3ZhciBlPXRoaXMuX193cmFwcGVkX187aWYoZSBpbnN0YW5jZW9mIFVuKXt2YXIgbj1lO3JldHVybiB0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCYmKG49bmV3IFVuKHRoaXMpKSwobj1uLnJldmVyc2UoKSkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpSYSxhcmdzOlt4YV0sdGhpc0FyZzp0fSksbmV3IFZuKG4sdGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUoeGEpfSxCbi5wcm90b3R5cGUudG9KU09OPUJuLnByb3RvdHlwZS52YWx1ZU9mPUJuLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbiBYaCgpe3JldHVybiBJcih0aGlzLl9fd3JhcHBlZF9fLHRoaXMuX19hY3Rpb25zX18pfSxCbi5wcm90b3R5cGUuZmlyc3Q9Qm4ucHJvdG90eXBlLmhlYWQsYWUmJihCbi5wcm90b3R5cGVbYWVdPWZ1bmN0aW9uICRoKCl7cmV0dXJuIHRoaXN9KSxCbn0pKCk7aWU/KChpZS5leHBvcnRzPWxuKS5fPWxuLG5lLl89bG4pOmVlLl89bG59LmNhbGwodmUpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBNZT0hKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKTtsZXQgRWUsVGU7ZnVuY3Rpb24gQ2UodCl7RWU9KCF0fHwhdC5zaGltY3NzcHJvcGVydGllcykmJihNZXx8Qm9vbGVhbighbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQXBwbGVXZWJLaXRcLzYwMXxFZGdlXC8xNS8pJiZ3aW5kb3cuQ1NTJiZDU1Muc3VwcG9ydHMmJkNTUy5zdXBwb3J0cygiYm94LXNoYWRvdyIsIjAgMCAwIHZhcigtLWZvbykiKSkpfXdpbmRvdy5TaGFkeUNTUyYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkJiYoVGU9d2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkKTtjb25zdCBBZT1Cb29sZWFuKHdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLmRpc2FibGVSdW50aW1lKTt3aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M/RWU9d2luZG93LlNoYWR5Q1NTLm5hdGl2ZUNzczp3aW5kb3cuU2hhZHlDU1M/KENlKHdpbmRvdy5TaGFkeUNTUyksd2luZG93LlNoYWR5Q1NTPXZvaWQgMCk6Q2Uod2luZG93LldlYkNvbXBvbmVudHMmJndpbmRvdy5XZWJDb21wb25lbnRzLmZsYWdzKTtjb25zdCBrZT1FZTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jbGFzcyBMZXtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RhcnQ9MCx0aGlzLmVuZD0wLHRoaXMucHJldmlvdXM9bnVsbCx0aGlzLnBhcmVudD1udWxsLHRoaXMucnVsZXM9bnVsbCx0aGlzLnBhcnNlZENzc1RleHQ9IiIsdGhpcy5jc3NUZXh0PSIiLHRoaXMuYXRSdWxlPSExLHRoaXMudHlwZT0wLHRoaXMua2V5ZnJhbWVzTmFtZT0iIix0aGlzLnNlbGVjdG9yPSIiLHRoaXMucGFyc2VkU2VsZWN0b3I9IiJ9fWZ1bmN0aW9uIFBlKHQpe3JldHVybiBOZSgoZnVuY3Rpb24gbih0KXtsZXQgZT1uZXcgTGU7ZS5zdGFydD0wLGUuZW5kPXQubGVuZ3RoO2xldCBuPWU7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKWlmKHRbaV09PT1PZSl7bi5ydWxlc3x8KG4ucnVsZXM9W10pO2xldCB0PW4sZT10LnJ1bGVzW3QucnVsZXMubGVuZ3RoLTFdfHxudWxsO249bmV3IExlLG4uc3RhcnQ9aSsxLG4ucGFyZW50PXQsbi5wcmV2aW91cz1lLHQucnVsZXMucHVzaChuKX1lbHNlIHRbaV09PT16ZSYmKG4uZW5kPWkrMSxuPW4ucGFyZW50fHxlKTtyZXR1cm4gZX0pKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZShEZS5jb21tZW50cywiIikucmVwbGFjZShEZS5wb3J0LCIiKX0pKHQpKSx0KX1mdW5jdGlvbiBOZSh0LGUpe2xldCBuPWUuc3Vic3RyaW5nKHQuc3RhcnQsdC5lbmQtMSk7aWYodC5wYXJzZWRDc3NUZXh0PXQuY3NzVGV4dD1uLnRyaW0oKSx0LnBhcmVudCl7bj1lLnN1YnN0cmluZyh0LnByZXZpb3VzP3QucHJldmlvdXMuZW5kOnQucGFyZW50LnN0YXJ0LHQuc3RhcnQtMSksbj0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9cXChbMC05YS1mXXsxLDZ9KVxzL2dpLChmdW5jdGlvbigpe2xldCB0PWFyZ3VtZW50c1sxXSxlPTYtdC5sZW5ndGg7Zm9yKDtlLS07KXQ9IjAiK3Q7cmV0dXJuIlxcIit0fSkpfSkobiksbj1uLnJlcGxhY2UoRGUubXVsdGlwbGVTcGFjZXMsIiAiKSxuPW4uc3Vic3RyaW5nKG4ubGFzdEluZGV4T2YoIjsiKSsxKTtsZXQgaT10LnBhcnNlZFNlbGVjdG9yPXQuc2VsZWN0b3I9bi50cmltKCk7dC5hdFJ1bGU9MD09PWkuaW5kZXhPZihGZSksdC5hdFJ1bGU/MD09PWkuaW5kZXhPZihIZSk/dC50eXBlPVJlLk1FRElBX1JVTEU6aS5tYXRjaChEZS5rZXlmcmFtZXNSdWxlKSYmKHQudHlwZT1SZS5LRVlGUkFNRVNfUlVMRSx0LmtleWZyYW1lc05hbWU9dC5zZWxlY3Rvci5zcGxpdChEZS5tdWx0aXBsZVNwYWNlcykucG9wKCkpOnQudHlwZT0wPT09aS5pbmRleE9mKEJlKT9SZS5NSVhJTl9SVUxFOlJlLlNUWUxFX1JVTEV9bGV0IHI9dC5ydWxlcztpZihyKWZvcihsZXQgdCxuPTAsaT1yLmxlbmd0aDtuPGkmJih0PXJbbl0pO24rKylOZSh0LGUpO3JldHVybiB0fWZ1bmN0aW9uIEllKHQsZSxuPSIiKXtsZXQgaT0iIjtpZih0LmNzc1RleHR8fHQucnVsZXMpe2xldCBuPXQucnVsZXM7aWYobiYmIShmdW5jdGlvbiByKHQpe2xldCBlPXRbMF07cmV0dXJuIEJvb2xlYW4oZSkmJkJvb2xlYW4oZS5zZWxlY3RvcikmJjA9PT1lLnNlbGVjdG9yLmluZGV4T2YoQmUpfSkobikpZm9yKGxldCB0LHI9MCxvPW4ubGVuZ3RoO3I8byYmKHQ9bltyXSk7cisrKWk9SWUodCxlLGkpO2Vsc2UgaT1lP3QuY3NzVGV4dDooZnVuY3Rpb24gbyh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5yZXBsYWNlKERlLm1peGluQXBwbHksIiIpLnJlcGxhY2UoRGUudmFyQXBwbHksIiIpfSkodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5yZXBsYWNlKERlLmN1c3RvbVByb3AsIiIpLnJlcGxhY2UoRGUubWl4aW5Qcm9wLCIiKX0pKHQpKX0pKHQuY3NzVGV4dCksaT1pLnRyaW0oKSxpJiYoaT0iICAiK2krIlxuIil9cmV0dXJuIGkmJih0LnNlbGVjdG9yJiYobis9dC5zZWxlY3RvcisiICIrT2UrIlxuIiksbis9aSx0LnNlbGVjdG9yJiYobis9emUrIlxuXG4iKSksbn1jb25zdCBSZT17U1RZTEVfUlVMRToxLEtFWUZSQU1FU19SVUxFOjcsTUVESUFfUlVMRTo0LE1JWElOX1JVTEU6MWUzfSxPZT0ieyIsemU9In0iLERlPXtjb21tZW50czovXC9cKlteKl0qXCorKFteLypdW14qXSpcKispKlwvL2dpbSxwb3J0Oi9AaW1wb3J0W147XSo7L2dpbSxjdXN0b21Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qPyg/Ols7XG5dfCQpL2dpbSxtaXhpblByb3A6Lyg/Ol5bXjtcLVxzfV0rKT8tLVteO3t9XSo/Oltee307XSo/e1tefV0qP30oPzpbO1xuXXwkKT8vZ2ltLG1peGluQXBwbHk6L0BhcHBseVxzKlwoP1teKTtdKlwpP1xzKig/Ols7XG5dfCQpPy9naW0sdmFyQXBwbHk6L1teOzpdKj86W147XSo/dmFyXChbXjtdKlwpKD86Wztcbl18JCk/L2dpbSxrZXlmcmFtZXNSdWxlOi9eQFteXHNdKmtleWZyYW1lcy8sbXVsdGlwbGVTcGFjZXM6L1xzKy9nfSxCZT0iLS0iLEhlPSJAbWVkaWEiLEZlPSJAIixWZT0vKD86XnxbO1xze11ccyopKC0tW1x3LV0qPylccyo6XHMqKD86KCg/OicoPzpcXCd8LikqPyd8Iig/OlxcInwuKSo/InxcKFteKV0qP1wpfFtefTt7XSkrKXxceyhbXn1dKilcfSg/Oig/PVs7XHN9XSl8JCkpL2dpLFVlPS8oPzpefFxXKylAYXBwbHlccypcKD8oW14pO1xuXSopXCk/L2dpLGplPS9AbWVkaWFccyguKikvLEdlPW5ldyBTZXQ7ZnVuY3Rpb24gV2UodCl7Y29uc3QgZT10LnRleHRDb250ZW50O2lmKCFHZS5oYXMoZSkpe0dlLmFkZChlKTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC5zZXRBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIiwiIiksdC50ZXh0Q29udGVudD1lLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9fWZ1bmN0aW9uIHFlKHQpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgic2hhZHktdW5zY29wZWQiKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBZZSh0LGUpe3JldHVybiB0Pygic3RyaW5nIj09dHlwZW9mIHQmJih0PVBlKHQpKSxlJiYkZSh0LGUpLEllKHQsa2UpKToiIn1mdW5jdGlvbiBYZSh0KXtyZXR1cm4hdC5fX2Nzc1J1bGVzJiZ0LnRleHRDb250ZW50JiYodC5fX2Nzc1J1bGVzPVBlKHQudGV4dENvbnRlbnQpKSx0Ll9fY3NzUnVsZXN8fG51bGx9ZnVuY3Rpb24gJGUodCxlLG4saSl7aWYoIXQpcmV0dXJuO2xldCByPSExLG89dC50eXBlO2lmKGkmJm89PT1SZS5NRURJQV9SVUxFKXtsZXQgZT10LnNlbGVjdG9yLm1hdGNoKGplKTtlJiYod2luZG93Lm1hdGNoTWVkaWEoZVsxXSkubWF0Y2hlc3x8KHI9ITApKX1vPT09UmUuU1RZTEVfUlVMRT9lKHQpOm4mJm89PT1SZS5LRVlGUkFNRVNfUlVMRT9uKHQpOm89PT1SZS5NSVhJTl9SVUxFJiYocj0hMCk7bGV0IGE9dC5ydWxlcztpZihhJiYhcilmb3IobGV0IHQscj0wLG89YS5sZW5ndGg7cjxvJiYodD1hW3JdKTtyKyspJGUodCxlLG4saSl9ZnVuY3Rpb24gS2UodCxlKXtsZXQgbj10LmluZGV4T2YoInZhcigiKTtpZigtMT09PW4pcmV0dXJuIGUodCwiIiwiIiwiIik7bGV0IGk9KGZ1bmN0aW9uIHIodCxlKXtsZXQgbj0wO2ZvcihsZXQgaT1lLHI9dC5sZW5ndGg7aTxyO2krKylpZigiKCI9PT10W2ldKW4rKztlbHNlIGlmKCIpIj09PXRbaV0mJjA9PS0tbilyZXR1cm4gaTtyZXR1cm4tMX0pKHQsbiszKSxvPXQuc3Vic3RyaW5nKG4rNCxpKSxhPXQuc3Vic3RyaW5nKDAsbikscz1LZSh0LnN1YnN0cmluZyhpKzEpLGUpLGw9by5pbmRleE9mKCIsIik7cmV0dXJuLTE9PT1sP2UoYSxvLnRyaW0oKSwiIixzKTplKGEsby5zdWJzdHJpbmcoMCxsKS50cmltKCksby5zdWJzdHJpbmcobCsxKS50cmltKCkscyl9d2luZG93LlNoYWR5RE9NJiZ3aW5kb3c7Y29uc3QgWmU9ImNzcy1idWlsZCI7ZnVuY3Rpb24gSmUodCl7cmV0dXJuIiIhPT0oZnVuY3Rpb24gZSh0KXtpZih2b2lkIDAhPT1UZSlyZXR1cm4gVGU7aWYodm9pZCAwPT09dC5fX2Nzc0J1aWxkKXtjb25zdCBlPXQuZ2V0QXR0cmlidXRlKFplKTtpZihlKXQuX19jc3NCdWlsZD1lO2Vsc2V7Y29uc3QgZT0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPSJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZT90LmNvbnRlbnQuZmlyc3RDaGlsZDp0LmZpcnN0Q2hpbGQ7aWYoZSBpbnN0YW5jZW9mIENvbW1lbnQpe2NvbnN0IHQ9ZS50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIjoiKTtpZih0WzBdPT09WmUpcmV0dXJuIHRbMV19cmV0dXJuIiJ9KSh0KTsiIiE9PWUmJihmdW5jdGlvbiBuKHQpe2NvbnN0IGU9InRlbXBsYXRlIj09PXQubG9jYWxOYW1lP3QuY29udGVudC5maXJzdENoaWxkOnQuZmlyc3RDaGlsZDtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovKSh0KSx0Ll9fY3NzQnVpbGQ9ZX19cmV0dXJuIHQuX19jc3NCdWlsZHx8IiJ9KSh0KX1mdW5jdGlvbiBRZSh0LGUpe2ZvcihsZXQgbiBpbiBlKW51bGw9PT1uP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkobik6dC5zdHlsZS5zZXRQcm9wZXJ0eShuLGVbbl0pfWZ1bmN0aW9uIHRuKHQsZSl7Y29uc3Qgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKGUpO3JldHVybiBuP24udHJpbSgpOiIifQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBlbj0vO1xzKi9tLG5uPS9eXHMqKGluaXRpYWwpfChpbmhlcml0KVxzKiQvLHJuPS9ccyohaW1wb3J0YW50LztjbGFzcyBvbntjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD17fX1zZXQodCxlKXt0PXQudHJpbSgpLHRoaXMuX21hcFt0XT17cHJvcGVydGllczplLGRlcGVuZGFudHM6e319fWdldCh0KXtyZXR1cm4gdD10LnRyaW0oKSx0aGlzLl9tYXBbdF18fG51bGx9fWxldCBhbj1udWxsO2NsYXNzIHNue2NvbnN0cnVjdG9yKCl7dGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9tZWFzdXJlRWxlbWVudD1udWxsLHRoaXMuX21hcD1uZXcgb259ZGV0ZWN0TWl4aW4odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1VZS50ZXN0KHQpfHxWZS50ZXN0KHQpO3JldHVybiBVZS5sYXN0SW5kZXg9MCxWZS5sYXN0SW5kZXg9MCxlfSkodCl9Z2F0aGVyU3R5bGVzKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXSxuPXQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgaT1uW3RdO3FlKGkpP01lfHwoV2UoaSksaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpKTooZS5wdXNoKGkudGV4dENvbnRlbnQpLGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSl9cmV0dXJuIGUuam9pbigiIikudHJpbSgpfSkodC5jb250ZW50KTtpZihlKXtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIG4udGV4dENvbnRlbnQ9ZSx0LmNvbnRlbnQuaW5zZXJ0QmVmb3JlKG4sdC5jb250ZW50LmZpcnN0Q2hpbGQpLG59cmV0dXJuIG51bGx9dHJhbnNmb3JtVGVtcGxhdGUodCxlKXt2b2lkIDA9PT10Ll9nYXRoZXJlZFN0eWxlJiYodC5fZ2F0aGVyZWRTdHlsZT10aGlzLmdhdGhlclN0eWxlcyh0KSk7Y29uc3Qgbj10Ll9nYXRoZXJlZFN0eWxlO3JldHVybiBuP3RoaXMudHJhbnNmb3JtU3R5bGUobixlKTpudWxsfXRyYW5zZm9ybVN0eWxlKHQsZT0iIil7bGV0IG49WGUodCk7cmV0dXJuIHRoaXMudHJhbnNmb3JtUnVsZXMobixlKSx0LnRleHRDb250ZW50PVllKG4pLG59dHJhbnNmb3JtQ3VzdG9tU3R5bGUodCl7bGV0IGU9WGUodCk7cmV0dXJuICRlKGUsKHQ9PnsiOnJvb3QiPT09dC5zZWxlY3RvciYmKHQuc2VsZWN0b3I9Imh0bWwiKSx0aGlzLnRyYW5zZm9ybVJ1bGUodCl9KSksdC50ZXh0Q29udGVudD1ZZShlKSxlfXRyYW5zZm9ybVJ1bGVzKHQsZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSwkZSh0LCh0PT57dGhpcy50cmFuc2Zvcm1SdWxlKHQpfSkpLHRoaXMuX2N1cnJlbnRFbGVtZW50PW51bGx9dHJhbnNmb3JtUnVsZSh0KXt0LmNzc1RleHQ9dGhpcy50cmFuc2Zvcm1Dc3NUZXh0KHQucGFyc2VkQ3NzVGV4dCx0KSwiOnJvb3QiPT09dC5zZWxlY3RvciYmKHQuc2VsZWN0b3I9Ijpob3N0ID4gKiIpfXRyYW5zZm9ybUNzc1RleHQodCxlKXtyZXR1cm4gdD10LnJlcGxhY2UoVmUsKCh0LG4saSxyKT0+dGhpcy5fcHJvZHVjZUNzc1Byb3BlcnRpZXModCxuLGkscixlKSkpLHRoaXMuX2NvbnN1bWVDc3NQcm9wZXJ0aWVzKHQsZSl9X2dldEluaXRpYWxWYWx1ZUZvclByb3BlcnR5KHQpe3JldHVybiB0aGlzLl9tZWFzdXJlRWxlbWVudHx8KHRoaXMuX21lYXN1cmVFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1ldGEiKSx0aGlzLl9tZWFzdXJlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFwcGx5LXNoaW0tbWVhc3VyZSIsIiIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnN0eWxlLmFsbD0iaW5pdGlhbCIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLl9tZWFzdXJlRWxlbWVudCkpLHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lYXN1cmVFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHQpfV9mYWxsYmFja3NGcm9tUHJldmlvdXNSdWxlcyh0KXtsZXQgZT10O2Zvcig7ZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7Y29uc3Qgbj17fTtsZXQgaT0hMTtyZXR1cm4gJGUoZSwoZT0+e2k9aXx8ZT09PXQsaXx8ZS5zZWxlY3Rvcj09PXQuc2VsZWN0b3ImJk9iamVjdC5hc3NpZ24obix0aGlzLl9jc3NUZXh0VG9NYXAoZS5wYXJzZWRDc3NUZXh0KSl9KSksbn1fY29uc3VtZUNzc1Byb3BlcnRpZXModCxlKXtsZXQgbj1udWxsO2Zvcig7bj1VZS5leGVjKHQpOyl7bGV0IGk9blswXSxyPW5bMV0sbz1uLmluZGV4LGE9bytpLmluZGV4T2YoIkBhcHBseSIpLHM9bytpLmxlbmd0aCxsPXQuc2xpY2UoMCxhKSxjPXQuc2xpY2UocyksdT1lP3RoaXMuX2ZhbGxiYWNrc0Zyb21QcmV2aW91c1J1bGVzKGUpOnt9O09iamVjdC5hc3NpZ24odSx0aGlzLl9jc3NUZXh0VG9NYXAobCkpO2xldCBoPXRoaXMuX2F0QXBwbHlUb0Nzc1Byb3BlcnRpZXMocix1KTt0PWAke2x9JHtofSR7Y31gLFVlLmxhc3RJbmRleD1vK2gubGVuZ3RofXJldHVybiB0fV9hdEFwcGx5VG9Dc3NQcm9wZXJ0aWVzKHQsZSl7dD10LnJlcGxhY2UoZW4sIiIpO2xldCBuPVtdLGk9dGhpcy5fbWFwLmdldCh0KTtpZihpfHwodGhpcy5fbWFwLnNldCh0LHt9KSxpPXRoaXMuX21hcC5nZXQodCkpLGkpe2xldCByLG8sYTt0aGlzLl9jdXJyZW50RWxlbWVudCYmKGkuZGVwZW5kYW50c1t0aGlzLl9jdXJyZW50RWxlbWVudF09ITApO2NvbnN0IHM9aS5wcm9wZXJ0aWVzO2ZvcihyIGluIHMpYT1lJiZlW3JdLG89W3IsIjogdmFyKCIsdCwiXy1fIixyXSxhJiZvLnB1c2goIiwiLGEucmVwbGFjZShybiwiIikpLG8ucHVzaCgiKSIpLHJuLnRlc3Qoc1tyXSkmJm8ucHVzaCgiICFpbXBvcnRhbnQiKSxuLnB1c2goby5qb2luKCIiKSl9cmV0dXJuIG4uam9pbigiOyAiKX1fcmVwbGFjZUluaXRpYWxPckluaGVyaXQodCxlKXtsZXQgbj1ubi5leGVjKGUpO3JldHVybiBuJiYoZT1uWzFdP3RoaXMuX2dldEluaXRpYWxWYWx1ZUZvclByb3BlcnR5KHQpOiJhcHBseS1zaGltLWluaGVyaXQiKSxlfV9jc3NUZXh0VG9NYXAodCxlPSExKXtsZXQgbixpLHI9dC5zcGxpdCgiOyIpLG89e307Zm9yKGxldCB0LGEscz0wO3M8ci5sZW5ndGg7cysrKXQ9cltzXSx0JiYoYT10LnNwbGl0KCI6IiksYS5sZW5ndGg+MSYmKG49YVswXS50cmltKCksaT1hLnNsaWNlKDEpLmpvaW4oIjoiKSxlJiYoaT10aGlzLl9yZXBsYWNlSW5pdGlhbE9ySW5oZXJpdChuLGkpKSxvW25dPWkpKTtyZXR1cm4gb31faW52YWxpZGF0ZU1peGluRW50cnkodCl7aWYoYW4pZm9yKGxldCBlIGluIHQuZGVwZW5kYW50cyllIT09dGhpcy5fY3VycmVudEVsZW1lbnQmJmFuKGUpfV9wcm9kdWNlQ3NzUHJvcGVydGllcyh0LGUsbixpLHIpe2lmKG4mJktlKG4sKCh0LGUpPT57ZSYmdGhpcy5fbWFwLmdldChlKSYmKGk9YEBhcHBseSAke2V9O2ApfSkpLCFpKXJldHVybiB0O2xldCBvPXRoaXMuX2NvbnN1bWVDc3NQcm9wZXJ0aWVzKCIiK2ksciksYT10LnNsaWNlKDAsdC5pbmRleE9mKCItLSIpKSxzPXRoaXMuX2Nzc1RleHRUb01hcChvLCEwKSxsPXMsYz10aGlzLl9tYXAuZ2V0KGUpLHU9YyYmYy5wcm9wZXJ0aWVzO3U/bD1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodSkscyk6dGhpcy5fbWFwLnNldChlLGwpO2xldCBoLGQscD1bXSxmPSExO2ZvcihoIGluIGwpZD1zW2hdLHZvaWQgMD09PWQmJihkPSJpbml0aWFsIiksdSYmIShoIGluIHUpJiYoZj0hMCkscC5wdXNoKGAke2V9Xy1fJHtofTogJHtkfWApO3JldHVybiBmJiZ0aGlzLl9pbnZhbGlkYXRlTWl4aW5FbnRyeShjKSxjJiYoYy5wcm9wZXJ0aWVzPWwpLG4mJihhPWAke3R9OyR7YX1gKSxgJHthfSR7cC5qb2luKCI7ICIpfTtgfX1zbi5wcm90b3R5cGUuZGV0ZWN0TWl4aW49c24ucHJvdG90eXBlLmRldGVjdE1peGluLHNuLnByb3RvdHlwZS50cmFuc2Zvcm1TdHlsZT1zbi5wcm90b3R5cGUudHJhbnNmb3JtU3R5bGUsc24ucHJvdG90eXBlLnRyYW5zZm9ybUN1c3RvbVN0eWxlPXNuLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21TdHlsZSxzbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZXM9c24ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGVzLHNuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlPXNuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlLHNuLnByb3RvdHlwZS50cmFuc2Zvcm1UZW1wbGF0ZT1zbi5wcm90b3R5cGUudHJhbnNmb3JtVGVtcGxhdGUsc24ucHJvdG90eXBlLl9zZXBhcmF0b3I9Il8tXyIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHNuLnByb3RvdHlwZSwiaW52YWxpZENhbGxiYWNrIix7Z2V0OigpPT5hbixzZXQodCl7YW49dH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgbG49e30sY249Il9hcHBseVNoaW1DdXJyZW50VmVyc2lvbiIsdW49Il9hcHBseVNoaW1OZXh0VmVyc2lvbiIsaG49Il9hcHBseVNoaW1WYWxpZGF0aW5nVmVyc2lvbiIsZG49UHJvbWlzZS5yZXNvbHZlKCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gcG4odCl7bGV0IGU9bG5bdF07ZSYmKGZ1bmN0aW9uIG4odCl7dFtjbl09dFtjbl18fDAsdFtobl09dFtobl18fDAsdFt1bl09KHRbdW5dfHwwKSsxfSkoZSl9ZnVuY3Rpb24gZm4odCl7cmV0dXJuIHRbY25dPT09dFt1bl19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmxldCBtbixnbj1udWxsLF9uPXdpbmRvdy5IVE1MSW1wb3J0cyYmd2luZG93LkhUTUxJbXBvcnRzLndoZW5SZWFkeXx8bnVsbDtmdW5jdGlvbiB5bih0KXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7X24/X24odCk6KGdufHwoZ249bmV3IFByb21pc2UoKHQ9Pnttbj10fSkpLCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP21uKCk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsKCgpPT57ImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGUmJm1uKCl9KSkpLGduLnRoZW4oKGZ1bmN0aW9uKCl7dCYmdCgpfSkpKX0pKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCB2bj0iX19zZWVuQnlTaGFkeUNTUyIsYm49Il9fc2hhZHlDU1NDYWNoZWRTdHlsZSI7bGV0IHhuPW51bGwsd249bnVsbDtjbGFzcyBTbntjb25zdHJ1Y3Rvcigpe3RoaXMuY3VzdG9tU3R5bGVzPVtdLHRoaXMuZW5xdWV1ZWQ9ITEseW4oKCgpPT57d2luZG93LlNoYWR5Q1NTLmZsdXNoQ3VzdG9tU3R5bGVzJiZ3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMoKX0pKX1lbnF1ZXVlRG9jdW1lbnRWYWxpZGF0aW9uKCl7IXRoaXMuZW5xdWV1ZWQmJnduJiYodGhpcy5lbnF1ZXVlZD0hMCx5bih3bikpfWFkZEN1c3RvbVN0eWxlKHQpe3Rbdm5dfHwodFt2bl09ITAsdGhpcy5jdXN0b21TdHlsZXMucHVzaCh0KSx0aGlzLmVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKSl9Z2V0U3R5bGVGb3JDdXN0b21TdHlsZSh0KXtpZih0W2JuXSlyZXR1cm4gdFtibl07bGV0IGU7cmV0dXJuIGU9dC5nZXRTdHlsZT90LmdldFN0eWxlKCk6dCxlfXByb2Nlc3NTdHlsZXMoKXtjb25zdCB0PXRoaXMuY3VzdG9tU3R5bGVzO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV07aWYobltibl0pY29udGludWU7Y29uc3QgaT10aGlzLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUobik7aWYoaSl7Y29uc3QgdD1pLl9fYXBwbGllZEVsZW1lbnR8fGk7eG4mJnhuKHQpLG5bYm5dPXR9fXJldHVybiB0fX1Tbi5wcm90b3R5cGUuYWRkQ3VzdG9tU3R5bGU9U24ucHJvdG90eXBlLmFkZEN1c3RvbVN0eWxlLFNuLnByb3RvdHlwZS5nZXRTdHlsZUZvckN1c3RvbVN0eWxlPVNuLnByb3RvdHlwZS5nZXRTdHlsZUZvckN1c3RvbVN0eWxlLFNuLnByb3RvdHlwZS5wcm9jZXNzU3R5bGVzPVNuLnByb3RvdHlwZS5wcm9jZXNzU3R5bGVzLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFNuLnByb3RvdHlwZSx7dHJhbnNmb3JtQ2FsbGJhY2s6e2dldDooKT0+eG4sc2V0KHQpe3huPXR9fSx2YWxpZGF0ZUNhbGxiYWNrOntnZXQ6KCk9PnduLHNldCh0KXtsZXQgZT0hMTt3bnx8KGU9ITApLHduPXQsZSYmdGhpcy5lbnF1ZXVlRG9jdW1lbnRWYWxpZGF0aW9uKCl9fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBNbj1uZXcgc247Y2xhc3MgRW57Y29uc3RydWN0b3IoKXt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlPW51bGwsTW4uaW52YWxpZENhbGxiYWNrPXBufWVuc3VyZSgpe3RoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2V8fHdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSYmKHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2U9d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlLHRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UudHJhbnNmb3JtQ2FsbGJhY2s9dD0+e01uLnRyYW5zZm9ybUN1c3RvbVN0eWxlKHQpfSx0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLnZhbGlkYXRlQ2FsbGJhY2s9KCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZCYmdGhpcy5mbHVzaEN1c3RvbVN0eWxlcygpfSkpfSl9cHJlcGFyZVRlbXBsYXRlKHQsZSl7aWYodGhpcy5lbnN1cmUoKSxKZSh0KSlyZXR1cm47bG5bZV09dDtsZXQgbj1Nbi50cmFuc2Zvcm1UZW1wbGF0ZSh0LGUpO3QuX3N0eWxlQXN0PW59Zmx1c2hDdXN0b21TdHlsZXMoKXtpZih0aGlzLmVuc3VyZSgpLCF0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlKXJldHVybjtsZXQgdD10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLnByb2Nlc3NTdHlsZXMoKTtpZih0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmVucXVldWVkKXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5nZXRTdHlsZUZvckN1c3RvbVN0eWxlKHRbZV0pO24mJk1uLnRyYW5zZm9ybUN1c3RvbVN0eWxlKG4pfXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZW5xdWV1ZWQ9ITF9fXN0eWxlU3VidHJlZSh0LGUpe2lmKHRoaXMuZW5zdXJlKCksZSYmUWUodCxlKSx0LnNoYWRvd1Jvb3Qpe3RoaXMuc3R5bGVFbGVtZW50KHQpO2xldCBlPXQuc2hhZG93Um9vdC5jaGlsZHJlbnx8dC5zaGFkb3dSb290LmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5zdHlsZVN1YnRyZWUoZVt0XSl9ZWxzZXtsZXQgZT10LmNoaWxkcmVufHx0LmNoaWxkTm9kZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy5zdHlsZVN1YnRyZWUoZVt0XSl9fXN0eWxlRWxlbWVudCh0KXt0aGlzLmVuc3VyZSgpO2xldHtpczplfT0oZnVuY3Rpb24gbih0KXtsZXQgZT10LmxvY2FsTmFtZSxuPSIiLGk9IiI7cmV0dXJuIGU/ZS5pbmRleE9mKCItIik+LTE/bj1lOihpPWUsbj10LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUoImlzIil8fCIiKToobj10LmlzLGk9dC5leHRlbmRzKSx7aXM6bix0eXBlRXh0ZW5zaW9uOml9fSkodCksaT1sbltlXTtpZigoIWl8fCFKZShpKSkmJmkmJiFmbihpKSl7KGZ1bmN0aW9uIG4odCl7cmV0dXJuIWZuKHQpJiZ0W2huXT09PXRbdW5dfSkoaSl8fCh0aGlzLnByZXBhcmVUZW1wbGF0ZShpLGUpLChmdW5jdGlvbiByKHQpe3RbaG5dPXRbdW5dLHQuX3ZhbGlkYXRpbmd8fCh0Ll92YWxpZGF0aW5nPSEwLGRuLnRoZW4oKGZ1bmN0aW9uKCl7dFtjbl09dFt1bl0sdC5fdmFsaWRhdGluZz0hMX0pKSl9KShpKSk7bGV0IG89dC5zaGFkb3dSb290O2lmKG8pe2xldCB0PW8ucXVlcnlTZWxlY3Rvcigic3R5bGUiKTt0JiYodC5fX2Nzc1J1bGVzPWkuX3N0eWxlQXN0LHQudGV4dENvbnRlbnQ9WWUoaS5fc3R5bGVBc3QpKX19fXN0eWxlRG9jdW1lbnQodCl7dGhpcy5lbnN1cmUoKSx0aGlzLnN0eWxlU3VidHJlZShkb2N1bWVudC5ib2R5LHQpfX1pZighd2luZG93LlNoYWR5Q1NTfHwhd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltKXtjb25zdCB0PW5ldyBFbjtsZXQgZT13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZTt3aW5kb3cuU2hhZHlDU1M9e3ByZXBhcmVUZW1wbGF0ZShlLG4saSl7dC5mbHVzaEN1c3RvbVN0eWxlcygpLHQucHJlcGFyZVRlbXBsYXRlKGUsbil9LHByZXBhcmVUZW1wbGF0ZVN0eWxlcyh0LGUsbil7d2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZSh0LGUsbil9LHByZXBhcmVUZW1wbGF0ZURvbSh0LGUpe30sc3R5bGVTdWJ0cmVlKGUsbil7dC5mbHVzaEN1c3RvbVN0eWxlcygpLHQuc3R5bGVTdWJ0cmVlKGUsbil9LHN0eWxlRWxlbWVudChlKXt0LmZsdXNoQ3VzdG9tU3R5bGVzKCksdC5zdHlsZUVsZW1lbnQoZSl9LHN0eWxlRG9jdW1lbnQoZSl7dC5mbHVzaEN1c3RvbVN0eWxlcygpLHQuc3R5bGVEb2N1bWVudChlKX0sZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlOih0LGUpPT50bih0LGUpLGZsdXNoQ3VzdG9tU3R5bGVzKCl7dC5mbHVzaEN1c3RvbVN0eWxlcygpfSxuYXRpdmVDc3M6a2UsbmF0aXZlU2hhZG93Ok1lLGNzc0J1aWxkOlRlLGRpc2FibGVSdW50aW1lOkFlfSxlJiYod2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlPWUpfXdpbmRvdy5TaGFkeUNTUy5BcHBseVNoaW09TW47Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIFRue2NvbnN0cnVjdG9yKCl7dGhpcy5fYXN5bmNNb2R1bGU9bnVsbCx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX3RpbWVyPW51bGx9c2V0Q29uZmlnKHQsZSl7dGhpcy5fYXN5bmNNb2R1bGU9dCx0aGlzLl9jYWxsYmFjaz1lLHRoaXMuX3RpbWVyPXRoaXMuX2FzeW5jTW9kdWxlLnJ1bigoKCk9Pnt0aGlzLl90aW1lcj1udWxsLENuLmRlbGV0ZSh0aGlzKSx0aGlzLl9jYWxsYmFjaygpfSkpfWNhbmNlbCgpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuX2NhbmNlbEFzeW5jKCksQ24uZGVsZXRlKHRoaXMpKX1fY2FuY2VsQXN5bmMoKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLl9hc3luY01vZHVsZS5jYW5jZWwodGhpcy5fdGltZXIpLHRoaXMuX3RpbWVyPW51bGwpfWZsdXNoKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5jYW5jZWwoKSx0aGlzLl9jYWxsYmFjaygpKX1pc0FjdGl2ZSgpe3JldHVybiBudWxsIT10aGlzLl90aW1lcn1zdGF0aWMgZGVib3VuY2UodCxlLG4pe3JldHVybiB0IGluc3RhbmNlb2YgVG4/dC5fY2FuY2VsQXN5bmMoKTp0PW5ldyBUbix0LnNldENvbmZpZyhlLG4pLHR9fWxldCBDbj1uZXcgU2V0O2NvbnN0IEFuPWZ1bmN0aW9uKHQpe0NuLmFkZCh0KX0sa249ZnVuY3Rpb24oKXtjb25zdCB0PUJvb2xlYW4oQ24uc2l6ZSk7cmV0dXJuIENuLmZvckVhY2goKHQ9Pnt0cnl7dC5mbHVzaCgpfWNhdGNoKHQpe3NldFRpbWVvdXQoKCgpPT57dGhyb3cgdH0pKX19KSksdH07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmxldCBMbj0ic3RyaW5nIj09dHlwZW9mIGRvY3VtZW50LmhlYWQuc3R5bGUudG91Y2hBY3Rpb24sUG49Il9fcG9seW1lckdlc3R1cmVzIixObj0iX19wb2x5bWVyR2VzdHVyZXNIYW5kbGVkIixJbj0iX19wb2x5bWVyR2VzdHVyZXNUb3VjaEFjdGlvbiIsUm49WyJtb3VzZWRvd24iLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiwiY2xpY2siXSxPbj1bMCwxLDQsMl0sem49KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiAxPT09bmV3IE1vdXNlRXZlbnQoInRlc3QiLHtidXR0b25zOjF9KS5idXR0b25zfWNhdGNoKHQpe3JldHVybiExfX0pKCk7ZnVuY3Rpb24gRG4odCl7cmV0dXJuIFJuLmluZGV4T2YodCk+LTF9bGV0IEJuPSExO2Z1bmN0aW9uIEhuKHQpe2lmKCFEbih0KSYmInRvdWNoZW5kIiE9PXQpcmV0dXJuIExuJiZCbiYmdj97cGFzc2l2ZTohMH06dm9pZCAwfSEoZnVuY3Rpb24oKXt0cnl7bGV0IHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0KCl7Qm49ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsdCl9Y2F0Y2godCl7fX0pKCk7bGV0IEZuPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86W29hXWR8aG9uZSl8QW5kcm9pZC8pO2NvbnN0IFZuPVtdLFVuPXtidXR0b246ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLG1ldGVyOiEwLG91dHB1dDohMCx0ZXh0YXJlYTohMCxwcm9ncmVzczohMCxzZWxlY3Q6ITB9LGpuPXtidXR0b246ITAsY29tbWFuZDohMCxmaWVsZHNldDohMCxpbnB1dDohMCxrZXlnZW46ITAsb3B0Z3JvdXA6ITAsb3B0aW9uOiEwLHNlbGVjdDohMCx0ZXh0YXJlYTohMH07ZnVuY3Rpb24gR24odCl7bGV0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5sYWJlbHN8fFtdKTtpZighZS5sZW5ndGgpe2U9W107bGV0IG49dC5nZXRSb290Tm9kZSgpO2lmKHQuaWQpe2xldCBpPW4ucXVlcnlTZWxlY3RvckFsbChgbGFiZWxbZm9yID0gJHt0LmlkfV1gKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllLnB1c2goaVt0XSl9fXJldHVybiBlfWxldCBXbj1mdW5jdGlvbih0KXtsZXQgZT10LnNvdXJjZUNhcGFiaWxpdGllcztpZigoIWV8fGUuZmlyZXNUb3VjaEV2ZW50cykmJih0W05uXT17c2tpcDohMH0sImNsaWNrIj09PXQudHlwZSkpe2xldCBlPSExLG49Sm4odCk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2lmKG5bdF0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlpZigibGFiZWwiPT09blt0XS5sb2NhbE5hbWUpVm4ucHVzaChuW3RdKTtlbHNlIGlmKFVuW25bdF0ubG9jYWxOYW1lXSl7bGV0IGk9R24oblt0XSk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspZT1lfHxWbi5pbmRleE9mKGlbdF0pPi0xfWlmKG5bdF09PT1Ybi5tb3VzZS50YXJnZXQpcmV0dXJufWlmKGUpcmV0dXJuO3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpfX07ZnVuY3Rpb24gcW4odCl7bGV0IGU9Rm4/WyJjbGljayJdOlJuO2ZvcihsZXQgbixpPTA7aTxlLmxlbmd0aDtpKyspbj1lW2ldLHQ/KFZuLmxlbmd0aD0wLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIobixXbiwhMCkpOmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobixXbiwhMCl9ZnVuY3Rpb24gWW4odCl7bGV0IGU9dC50eXBlO2lmKCFEbihlKSlyZXR1cm4hMTtpZigibW91c2Vtb3ZlIj09PWUpe2xldCBlPXZvaWQgMD09PXQuYnV0dG9ucz8xOnQuYnV0dG9ucztyZXR1cm4gdCBpbnN0YW5jZW9mIHdpbmRvdy5Nb3VzZUV2ZW50JiYhem4mJihlPU9uW3Qud2hpY2hdfHwwKSxCb29sZWFuKDEmZSl9cmV0dXJuIDA9PT0odm9pZCAwPT09dC5idXR0b24/MDp0LmJ1dHRvbil9bGV0IFhuPXttb3VzZTp7dGFyZ2V0Om51bGwsbW91c2VJZ25vcmVKb2I6bnVsbH0sdG91Y2g6e3g6MCx5OjAsaWQ6LTEsc2Nyb2xsRGVjaWRlZDohMX19O2Z1bmN0aW9uICRuKHQsZSxuKXt0Lm1vdmVmbj1lLHQudXBmbj1uLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsbil9ZnVuY3Rpb24gS24odCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0Lm1vdmVmbiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdC51cGZuKSx0Lm1vdmVmbj1udWxsLHQudXBmbj1udWxsfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwoZnVuY3Rpb24gWm4odCl7WG4ubW91c2UubW91c2VJZ25vcmVKb2J8fHFuKCEwKSxYbi5tb3VzZS50YXJnZXQ9Sm4odClbMF0sWG4ubW91c2UubW91c2VJZ25vcmVKb2I9VG4uZGVib3VuY2UoWG4ubW91c2UubW91c2VJZ25vcmVKb2IsZ3QuYWZ0ZXIoMjUwMCksKGZ1bmN0aW9uKCl7cW4oKSxYbi5tb3VzZS50YXJnZXQ9bnVsbCxYbi5tb3VzZS5tb3VzZUlnbm9yZUpvYj1udWxsfSkpfSksISFCbiYme3Bhc3NpdmU6ITB9KTtjb25zdCBKbj13aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoP3dpbmRvdy5TaGFkeURPTS5jb21wb3NlZFBhdGg6dD0+dC5jb21wb3NlZFBhdGgmJnQuY29tcG9zZWRQYXRoKCl8fFtdLFFuPXt9LHRpPVtdO2Z1bmN0aW9uIGVpKHQpe2NvbnN0IGU9Sm4odCk7cmV0dXJuIGUubGVuZ3RoPjA/ZVswXTp0LnRhcmdldH1mdW5jdGlvbiBuaSh0KXtsZXQgZSxuPXQudHlwZSxpPXQuY3VycmVudFRhcmdldFtQbl07aWYoIWkpcmV0dXJuO2xldCByPWlbbl07aWYocil7aWYoIXRbTm5dJiYodFtObl09e30sInRvdWNoIj09PW4uc2xpY2UoMCw1KSkpe2xldCBlPSh0PXQpLmNoYW5nZWRUb3VjaGVzWzBdO2lmKCJ0b3VjaHN0YXJ0Ij09PW4mJjE9PT10LnRvdWNoZXMubGVuZ3RoJiYoWG4udG91Y2guaWQ9ZS5pZGVudGlmaWVyKSxYbi50b3VjaC5pZCE9PWUuaWRlbnRpZmllcilyZXR1cm47TG58fCJ0b3VjaHN0YXJ0IiE9PW4mJiJ0b3VjaG1vdmUiIT09bnx8KGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5jaGFuZ2VkVG91Y2hlc1swXSxuPXQudHlwZTtpZigidG91Y2hzdGFydCI9PT1uKVhuLnRvdWNoLng9ZS5jbGllbnRYLFhuLnRvdWNoLnk9ZS5jbGllbnRZLFhuLnRvdWNoLnNjcm9sbERlY2lkZWQ9ITE7ZWxzZSBpZigidG91Y2htb3ZlIj09PW4pe2lmKFhuLnRvdWNoLnNjcm9sbERlY2lkZWQpcmV0dXJuO1huLnRvdWNoLnNjcm9sbERlY2lkZWQ9ITA7bGV0IG49KGZ1bmN0aW9uIGkodCl7bGV0IGU9ImF1dG8iLG49Sm4odCk7Zm9yKGxldCB0LGk9MDtpPG4ubGVuZ3RoO2krKylpZih0PW5baV0sdFtJbl0pe2U9dFtJbl07YnJlYWt9cmV0dXJuIGV9KSh0KSxpPSExLHI9TWF0aC5hYnMoWG4udG91Y2gueC1lLmNsaWVudFgpLG89TWF0aC5hYnMoWG4udG91Y2gueS1lLmNsaWVudFkpO3QuY2FuY2VsYWJsZSYmKCJub25lIj09PW4/aT0hMDoicGFuLXgiPT09bj9pPW8+cjoicGFuLXkiPT09biYmKGk9cj5vKSksaT90LnByZXZlbnREZWZhdWx0KCk6c2koInRyYWNrIil9fSkodCl9aWYoZT10W05uXSwhZS5za2lwKXtmb3IobGV0IG4saT0wO2k8dGkubGVuZ3RoO2krKyluPXRpW2ldLHJbbi5uYW1lXSYmIWVbbi5uYW1lXSYmbi5mbG93JiZuLmZsb3cuc3RhcnQuaW5kZXhPZih0LnR5cGUpPi0xJiZuLnJlc2V0JiZuLnJlc2V0KCk7Zm9yKGxldCBpLG89MDtvPHRpLmxlbmd0aDtvKyspaT10aVtvXSxyW2kubmFtZV0mJiFlW2kubmFtZV0mJihlW2kubmFtZV09ITAsaVtuXSh0KSl9fX1mdW5jdGlvbiBpaSh0LGUsbil7cmV0dXJuISFRbltlXSYmKChmdW5jdGlvbiBpKHQsZSxuKXtsZXQgaT1RbltlXSxyPWkuZGVwcyxvPWkubmFtZSxhPXRbUG5dO2F8fCh0W1BuXT1hPXt9KTtmb3IobGV0IGUsbixpPTA7aTxyLmxlbmd0aDtpKyspZT1yW2ldLEZuJiZEbihlKSYmImNsaWNrIiE9PWV8fChuPWFbZV0sbnx8KGFbZV09bj17X2NvdW50OjB9KSwwPT09bi5fY291bnQmJnQuYWRkRXZlbnRMaXN0ZW5lcihlLG5pLEhuKGUpKSxuW29dPShuW29dfHwwKSsxLG4uX2NvdW50PShuLl9jb3VudHx8MCkrMSk7dC5hZGRFdmVudExpc3RlbmVyKGUsbiksaS50b3VjaEFjdGlvbiYmb2kodCxpLnRvdWNoQWN0aW9uKX0pKHQsZSxuKSwhMCl9ZnVuY3Rpb24gcmkodCl7dGkucHVzaCh0KTtmb3IobGV0IGU9MDtlPHQuZW1pdHMubGVuZ3RoO2UrKylRblt0LmVtaXRzW2VdXT10fWZ1bmN0aW9uIG9pKHQsZSl7TG4mJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdnQucnVuKCgoKT0+e3Quc3R5bGUudG91Y2hBY3Rpb249ZX0pKSx0W0luXT1lfWZ1bmN0aW9uIGFpKHQsZSxuKXtsZXQgaT1uZXcgRXZlbnQoZSx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7aWYoaS5kZXRhaWw9bixZKHQpLmRpc3BhdGNoRXZlbnQoaSksaS5kZWZhdWx0UHJldmVudGVkKXtsZXQgdD1uLnByZXZlbnRlcnx8bi5zb3VyY2VFdmVudDt0JiZ0LnByZXZlbnREZWZhdWx0JiZ0LnByZXZlbnREZWZhdWx0KCl9fWZ1bmN0aW9uIHNpKHQpe2xldCBlPShmdW5jdGlvbiBuKHQpe2ZvcihsZXQgZSxuPTA7bjx0aS5sZW5ndGg7bisrKXtlPXRpW25dO2ZvcihsZXQgbixpPTA7aTxlLmVtaXRzLmxlbmd0aDtpKyspaWYobj1lLmVtaXRzW2ldLG49PT10KXJldHVybiBlfXJldHVybiBudWxsfSkodCk7ZS5pbmZvJiYoZS5pbmZvLnByZXZlbnQ9ITApfWZ1bmN0aW9uIGxpKHQsZSxuLGkpe2UmJmFpKGUsdCx7eDpuLmNsaWVudFgseTpuLmNsaWVudFksc291cmNlRXZlbnQ6bixwcmV2ZW50ZXI6aSxwcmV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBzaSh0KX19KX1mdW5jdGlvbiBjaSh0LGUsbil7aWYodC5wcmV2ZW50KXJldHVybiExO2lmKHQuc3RhcnRlZClyZXR1cm4hMDtsZXQgaT1NYXRoLmFicyh0LngtZSkscj1NYXRoLmFicyh0Lnktbik7cmV0dXJuIGk+PTV8fHI+PTV9ZnVuY3Rpb24gdWkodCxlLG4pe2lmKCFlKXJldHVybjtsZXQgaSxyPXQubW92ZXNbdC5tb3Zlcy5sZW5ndGgtMl0sbz10Lm1vdmVzW3QubW92ZXMubGVuZ3RoLTFdLGE9MDtyJiYoaT1vLngtci54LGE9by55LXIueSksYWkoZSwidHJhY2siLHtzdGF0ZTp0LnN0YXRlLHg6bi5jbGllbnRYLHk6bi5jbGllbnRZLGR4Om8ueC10LngsZHk6by55LXQueSxkZHg6aSxkZHk6YSxzb3VyY2VFdmVudDpuLGhvdmVyOmZ1bmN0aW9uKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSxuKXtsZXQgaT1kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUsbikscj1pO2Zvcig7ciYmci5zaGFkb3dSb290JiYhd2luZG93LlNoYWR5RE9NOyl7bGV0IHQ9cjtpZihyPXIuc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KGUsbiksdD09PXIpYnJlYWs7ciYmKGk9cil9cmV0dXJuIGl9KShuLmNsaWVudFgsbi5jbGllbnRZKX19KX1mdW5jdGlvbiBoaSh0LGUsbil7bGV0IGk9TWF0aC5hYnMoZS5jbGllbnRYLXQueCkscj1NYXRoLmFicyhlLmNsaWVudFktdC55KSxvPWVpKG58fGUpOyFvfHxqbltvLmxvY2FsTmFtZV0mJm8uaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHwoaXNOYU4oaSl8fGlzTmFOKHIpfHxpPD0yNSYmcjw9MjV8fChmdW5jdGlvbiBhKHQpe2lmKCJjbGljayI9PT10LnR5cGUpe2lmKDA9PT10LmRldGFpbClyZXR1cm4hMDtsZXQgZT1laSh0KTtpZighZS5ub2RlVHlwZXx8ZS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiEwO2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT10LnBhZ2VYLHI9dC5wYWdlWTtyZXR1cm4hKGk+PW4ubGVmdCYmaTw9bi5yaWdodCYmcj49bi50b3AmJnI8PW4uYm90dG9tKX1yZXR1cm4hMX0pKGUpKSYmKHQucHJldmVudHx8YWkobywidGFwIix7eDplLmNsaWVudFgseTplLmNsaWVudFksc291cmNlRXZlbnQ6ZSxwcmV2ZW50ZXI6bn0pKX1yaSh7bmFtZToiZG93bnVwIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsiZG93biIsInVwIl0saW5mbzp7bW92ZWZuOm51bGwsdXBmbjpudWxsfSxyZXNldDpmdW5jdGlvbigpe0tuKHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtpZighWW4odCkpcmV0dXJuO2xldCBlPWVpKHQpLG49dGhpczskbih0aGlzLmluZm8sKGZ1bmN0aW9uIHQoaSl7WW4oaSl8fChsaSgidXAiLGUsaSksS24obi5pbmZvKSl9KSwoZnVuY3Rpb24gdChpKXtZbihpKSYmbGkoInVwIixlLGkpLEtuKG4uaW5mbyl9KSksbGkoImRvd24iLGUsdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7bGkoImRvd24iLGVpKHQpLHQuY2hhbmdlZFRvdWNoZXNbMF0sdCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2xpKCJ1cCIsZWkodCksdC5jaGFuZ2VkVG91Y2hlc1swXSx0KX19KSxyaSh7bmFtZToidHJhY2siLHRvdWNoQWN0aW9uOiJub25lIixkZXBzOlsibW91c2Vkb3duIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsibW91c2V1cCIsInRvdWNoZW5kIl19LGVtaXRzOlsidHJhY2siXSxpbmZvOnt4OjAseTowLHN0YXRlOiJzdGFydCIsc3RhcnRlZDohMSxtb3ZlczpbXSxhZGRNb3ZlOmZ1bmN0aW9uKHQpe3RoaXMubW92ZXMubGVuZ3RoPjImJnRoaXMubW92ZXMuc2hpZnQoKSx0aGlzLm1vdmVzLnB1c2godCl9LG1vdmVmbjpudWxsLHVwZm46bnVsbCxwcmV2ZW50OiExfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mby5zdGF0ZT0ic3RhcnQiLHRoaXMuaW5mby5zdGFydGVkPSExLHRoaXMuaW5mby5tb3Zlcz1bXSx0aGlzLmluZm8ueD0wLHRoaXMuaW5mby55PTAsdGhpcy5pbmZvLnByZXZlbnQ9ITEsS24odGhpcy5pbmZvKX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe2lmKCFZbih0KSlyZXR1cm47bGV0IGU9ZWkodCksbj10aGlzLGk9ZnVuY3Rpb24gdChpKXtsZXQgcj1pLmNsaWVudFgsbz1pLmNsaWVudFk7Y2kobi5pbmZvLHIsbykmJihuLmluZm8uc3RhdGU9bi5pbmZvLnN0YXJ0ZWQ/Im1vdXNldXAiPT09aS50eXBlPyJlbmQiOiJ0cmFjayI6InN0YXJ0Iiwic3RhcnQiPT09bi5pbmZvLnN0YXRlJiZzaSgidGFwIiksbi5pbmZvLmFkZE1vdmUoe3g6cix5Om99KSxZbihpKXx8KG4uaW5mby5zdGF0ZT0iZW5kIixLbihuLmluZm8pKSxlJiZ1aShuLmluZm8sZSxpKSxuLmluZm8uc3RhcnRlZD0hMCl9OyRuKHRoaXMuaW5mbyxpLChmdW5jdGlvbiB0KGUpe24uaW5mby5zdGFydGVkJiZpKGUpLEtuKG4uaW5mbyl9KSksdGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WX0sdG91Y2hzdGFydDpmdW5jdGlvbih0KXtsZXQgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNobW92ZTpmdW5jdGlvbih0KXtsZXQgZT1laSh0KSxuPXQuY2hhbmdlZFRvdWNoZXNbMF0saT1uLmNsaWVudFgscj1uLmNsaWVudFk7Y2kodGhpcy5pbmZvLGkscikmJigic3RhcnQiPT09dGhpcy5pbmZvLnN0YXRlJiZzaSgidGFwIiksdGhpcy5pbmZvLmFkZE1vdmUoe3g6aSx5OnJ9KSx1aSh0aGlzLmluZm8sZSxuKSx0aGlzLmluZm8uc3RhdGU9InRyYWNrIix0aGlzLmluZm8uc3RhcnRlZD0hMCl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2xldCBlPWVpKHQpLG49dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8uc3RhcnRlZCYmKHRoaXMuaW5mby5zdGF0ZT0iZW5kIix0aGlzLmluZm8uYWRkTW92ZSh7eDpuLmNsaWVudFgseTpuLmNsaWVudFl9KSx1aSh0aGlzLmluZm8sZSxuKSl9fSkscmkoe25hbWU6InRhcCIsZGVwczpbIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsiY2xpY2siLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRhcCJdLGluZm86e3g6TmFOLHk6TmFOLHByZXZlbnQ6ITF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5pbmZvLng9TmFOLHRoaXMuaW5mby55PU5hTix0aGlzLmluZm8ucHJldmVudD0hMX0sbW91c2Vkb3duOmZ1bmN0aW9uKHQpe1luKHQpJiYodGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WSl9LGNsaWNrOmZ1bmN0aW9uKHQpe1luKHQpJiZoaSh0aGlzLmluZm8sdCl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNoZW5kOmZ1bmN0aW9uKHQpe2hpKHRoaXMuaW5mbyx0LmNoYW5nZWRUb3VjaGVzWzBdLHQpfX0pO2NvbnN0IGRpPWVpLHBpPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtfYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil7aWkodCxlLG4pfHxzdXBlci5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil9X3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbil7KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiEhUW5bZV0mJigoZnVuY3Rpb24gaSh0LGUsbil7bGV0IGk9UW5bZV0scj1pLmRlcHMsbz1pLm5hbWUsYT10W1BuXTtpZihhKWZvcihsZXQgZSxuLGk9MDtpPHIubGVuZ3RoO2krKyllPXJbaV0sbj1hW2VdLG4mJm5bb10mJihuW29dPShuW29dfHwxKS0xLG4uX2NvdW50PShuLl9jb3VudHx8MSktMSwwPT09bi5fY291bnQmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG5pLEhuKGUpKSk7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbil9KSh0LGUsbiksITApfSkodCxlLG4pfHxzdXBlci5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxuKX19KSksZmk9Lzpob3N0XCg6ZGlyXCgobHRyfHJ0bClcKVwpL2csbWk9LyhbXHNcdy0jXC5cW1xdXCpdKik6ZGlyXCgobHRyfHJ0bClcKS9nLGdpPS86ZGlyXCgoPzpsdHJ8cnRsKVwpLyxfaT1Cb29sZWFuKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSx5aT1bXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgdmk9bnVsbCxiaT0iIjtmdW5jdGlvbiB4aSgpe2JpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpfWZ1bmN0aW9uIHdpKHQpe3QuX19hdXRvRGlyT3B0T3V0fHx0LnNldEF0dHJpYnV0ZSgiZGlyIixiaSl9ZnVuY3Rpb24gU2koKXt4aSgpLGJpPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpO2ZvcihsZXQgdD0wO3Q8eWkubGVuZ3RoO3QrKyl3aSh5aVt0XSl9Y29uc3QgTWk9SSgodD0+e19pfHx2aXx8KHhpKCksdmk9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoU2kpLHZpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImRpciJdfSkpO2NvbnN0IGU9TXQodCk7Y2xhc3MgbiBleHRlbmRzIGV7c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KHQsbil7cmV0dXJuIHQ9ZS5fcHJvY2Vzc1N0eWxlVGV4dC5jYWxsKHRoaXMsdCxuKSwhX2kmJmdpLnRlc3QodCkmJih0PXRoaXMuX3JlcGxhY2VEaXJJbkNzc1RleHQodCksdGhpcy5fX2FjdGl2YXRlRGlyPSEwKSx0fXN0YXRpYyBfcmVwbGFjZURpckluQ3NzVGV4dCh0KXtsZXQgZT10O3JldHVybiBlPWUucmVwbGFjZShmaSwnOmhvc3QoW2Rpcj0iJDEiXSknKSxlPWUucmVwbGFjZShtaSwnOmhvc3QoW2Rpcj0iJDIiXSkgJDEnKSxlfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fYXV0b0Rpck9wdE91dD0hMX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fX2F1dG9EaXJPcHRPdXQ9dGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfWNvbm5lY3RlZENhbGxiYWNrKCl7ZS5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyJiYoKGZ1bmN0aW9uIHQoKXt2aSYmdmkudGFrZVJlY29yZHMoKS5sZW5ndGgmJlNpKCl9KSgpLHlpLnB1c2godGhpcyksd2kodGhpcykpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7aWYoZS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyKXtjb25zdCB0PXlpLmluZGV4T2YodGhpcyk7dD4tMSYmeWkuc3BsaWNlKHQsMSl9fX1yZXR1cm4gbi5fX2FjdGl2YXRlRGlyPSExLG59KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IEVpPSExLFRpPVtdLENpPVtdO2Z1bmN0aW9uIEFpKCl7RWk9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe0VpPSExLChmdW5jdGlvbiB0KGUpe2Zvcig7ZS5sZW5ndGg7KWtpKGUuc2hpZnQoKSl9KShUaSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWtpKGUuc2hpZnQoKSl9KShDaSl9KSl9KSl9ZnVuY3Rpb24ga2kodCl7Y29uc3QgZT10WzBdLG49dFsxXSxpPXRbMl07dHJ5e24uYXBwbHkoZSxpKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fWZ1bmN0aW9uIExpKHQsZSxuKXtFaXx8QWkoKSxDaS5wdXNoKFt0LGUsbl0pfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIFBpKCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoInVucmVzb2x2ZWQiKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gTmkodCxlLG4pe3JldHVybntpbmRleDp0LHJlbW92ZWQ6ZSxhZGRlZENvdW50Om59fWZ1bmN0aW9uIElpKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGkscixvLGEpe2xldCBzLGw9MCxjPTAsdT1NYXRoLm1pbihpLWUsYS1vKTtpZigwPT1lJiYwPT1vJiYobD0oZnVuY3Rpb24gaCh0LGUsbil7Zm9yKGxldCBpPTA7aTxuO2krKylpZighUmkodFtpXSxlW2ldKSlyZXR1cm4gaTtyZXR1cm4gbn0pKHQscix1KSksaT09dC5sZW5ndGgmJmE9PXIubGVuZ3RoJiYoYz0oZnVuY3Rpb24gZCh0LGUsbil7bGV0IGk9dC5sZW5ndGgscj1lLmxlbmd0aCxvPTA7Zm9yKDtvPG4mJlJpKHRbLS1pXSxlWy0tcl0pOylvKys7cmV0dXJuIG99KSh0LHIsdS1sKSksbys9bCxhLT1jLChpLT1jKS0oZSs9bCk9PTAmJmEtbz09MClyZXR1cm5bXTtpZihlPT1pKXtmb3Iocz1OaShlLFtdLDApO288YTspcy5yZW1vdmVkLnB1c2gocltvKytdKTtyZXR1cm5bc119aWYobz09YSlyZXR1cm5bTmkoZSxbXSxpLWUpXTtsZXQgcD0oZnVuY3Rpb24gbSh0KXtsZXQgZT10Lmxlbmd0aC0xLG49dFswXS5sZW5ndGgtMSxpPXRbZV1bbl0scj1bXTtmb3IoO2U+MHx8bj4wOyl7aWYoMD09ZSl7ci5wdXNoKDIpLG4tLTtjb250aW51ZX1pZigwPT1uKXtyLnB1c2goMyksZS0tO2NvbnRpbnVlfWxldCBvLGE9dFtlLTFdW24tMV0scz10W2UtMV1bbl0sbD10W2VdW24tMV07bz1zPGw/czxhP3M6YTpsPGE/bDphLG89PWE/KGE9PWk/ci5wdXNoKDApOihyLnB1c2goMSksaT1hKSxlLS0sbi0tKTpvPT1zPyhyLnB1c2goMyksZS0tLGk9cyk6KHIucHVzaCgyKSxuLS0saT1sKX1yZXR1cm4gci5yZXZlcnNlKCkscn0pKChmdW5jdGlvbiBmKHQsZSxuLGkscixvKXtsZXQgYT1vLXIrMSxzPW4tZSsxLGw9bmV3IEFycmF5KGEpO2ZvcihsZXQgdD0wO3Q8YTt0KyspbFt0XT1uZXcgQXJyYXkocyksbFt0XVswXT10O2ZvcihsZXQgdD0wO3Q8czt0KyspbFswXVt0XT10O2ZvcihsZXQgbj0xO248YTtuKyspZm9yKGxldCBvPTE7bzxzO28rKylpZihSaSh0W2Urby0xXSxpW3Irbi0xXSkpbFtuXVtvXT1sW24tMV1bby0xXTtlbHNle2xldCB0PWxbbi0xXVtvXSsxLGU9bFtuXVtvLTFdKzE7bFtuXVtvXT10PGU/dDplfXJldHVybiBsfSkodCxlLGkscixvLGEpKTtzPXZvaWQgMDtsZXQgZz1bXSxfPWUseT1vO2ZvcihsZXQgdD0wO3Q8cC5sZW5ndGg7dCsrKXN3aXRjaChwW3RdKXtjYXNlIDA6cyYmKGcucHVzaChzKSxzPXZvaWQgMCksXysrLHkrKzticmVhaztjYXNlIDE6c3x8KHM9TmkoXyxbXSwwKSkscy5hZGRlZENvdW50KyssXysrLHMucmVtb3ZlZC5wdXNoKHJbeV0pLHkrKzticmVhaztjYXNlIDI6c3x8KHM9TmkoXyxbXSwwKSkscy5hZGRlZENvdW50KyssXysrO2JyZWFrO2Nhc2UgMzpzfHwocz1OaShfLFtdLDApKSxzLnJlbW92ZWQucHVzaChyW3ldKSx5Kyt9cmV0dXJuIHMmJmcucHVzaChzKSxnfSkodCwwLHQubGVuZ3RoLGUsMCxlLmxlbmd0aCl9ZnVuY3Rpb24gUmkodCxlKXtyZXR1cm4gdD09PWV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gT2kodCl7cmV0dXJuInNsb3QiPT09dC5sb2NhbE5hbWV9ImludGVyYWN0aXZlIj09PWRvY3VtZW50LnJlYWR5U3RhdGV8fCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP1BpKCk6d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFBpKTtsZXQgemk9Y2xhc3N7c3RhdGljIGdldEZsYXR0ZW5lZE5vZGVzKHQpe2NvbnN0IGU9WSh0KTtyZXR1cm4gT2kodCk/KHQ9dCxlLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KSk6QXJyYXkuZnJvbShlLmNoaWxkTm9kZXMpLm1hcCgodD0+T2kodCk/WSh0PXQpLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KTpbdF0pKS5yZWR1Y2UoKCh0LGUpPT50LmNvbmNhdChlKSksW10pfWNvbnN0cnVjdG9yKHQsZSl7dGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPW51bGwsdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1udWxsLHRoaXMuX2Nvbm5lY3RlZD0hMSx0aGlzLl90YXJnZXQ9dCx0aGlzLmNhbGxiYWNrPWUsdGhpcy5fZWZmZWN0aXZlTm9kZXM9W10sdGhpcy5fb2JzZXJ2ZXI9bnVsbCx0aGlzLl9zY2hlZHVsZWQ9ITEsdGhpcy5fYm91bmRTY2hlZHVsZT0oKT0+e3RoaXMuX3NjaGVkdWxlKCl9LHRoaXMuY29ubmVjdCgpLHRoaXMuX3NjaGVkdWxlKCl9Y29ubmVjdCgpe09pKHRoaXMuX3RhcmdldCk/dGhpcy5fbGlzdGVuU2xvdHMoW3RoaXMuX3RhcmdldF0pOlkodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiYmKHRoaXMuX2xpc3RlblNsb3RzKFkodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiksd2luZG93LlNoYWR5RE9NP3RoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj13aW5kb3cuU2hhZHlET00ub2JzZXJ2ZUNoaWxkcmVuKHRoaXMuX3RhcmdldCwodD0+e3RoaXMuX3Byb2Nlc3NNdXRhdGlvbnModCl9KSk6KHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKHQ9Pnt0aGlzLl9wcm9jZXNzTXV0YXRpb25zKHQpfSkpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl90YXJnZXQse2NoaWxkTGlzdDohMH0pKSksdGhpcy5fY29ubmVjdGVkPSEwfWRpc2Nvbm5lY3QoKXtPaSh0aGlzLl90YXJnZXQpP3RoaXMuX3VubGlzdGVuU2xvdHMoW3RoaXMuX3RhcmdldF0pOlkodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiYmKHRoaXMuX3VubGlzdGVuU2xvdHMoWSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuKSx3aW5kb3cuU2hhZHlET00mJnRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj8od2luZG93LlNoYWR5RE9NLnVub2JzZXJ2ZUNoaWxkcmVuKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlciksdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyPW51bGwpOnRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXImJih0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW51bGwpKSx0aGlzLl9jb25uZWN0ZWQ9ITF9X3NjaGVkdWxlKCl7dGhpcy5fc2NoZWR1bGVkfHwodGhpcy5fc2NoZWR1bGVkPSEwLHZ0LnJ1bigoKCk9PnRoaXMuZmx1c2goKSkpKX1fcHJvY2Vzc011dGF0aW9ucyh0KXt0aGlzLl9wcm9jZXNzU2xvdE11dGF0aW9ucyh0KSx0aGlzLmZsdXNoKCl9X3Byb2Nlc3NTbG90TXV0YXRpb25zKHQpe2lmKHQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07bi5hZGRlZE5vZGVzJiZ0aGlzLl9saXN0ZW5TbG90cyhuLmFkZGVkTm9kZXMpLG4ucmVtb3ZlZE5vZGVzJiZ0aGlzLl91bmxpc3RlblNsb3RzKG4ucmVtb3ZlZE5vZGVzKX19Zmx1c2goKXtpZighdGhpcy5fY29ubmVjdGVkKXJldHVybiExO3dpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyP3RoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIudGFrZVJlY29yZHMoKSk6dGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyJiZ0aGlzLl9wcm9jZXNzU2xvdE11dGF0aW9ucyh0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXIudGFrZVJlY29yZHMoKSksdGhpcy5fc2NoZWR1bGVkPSExO2xldCB0PXt0YXJnZXQ6dGhpcy5fdGFyZ2V0LGFkZGVkTm9kZXM6W10scmVtb3ZlZE5vZGVzOltdfSxlPXRoaXMuY29uc3RydWN0b3IuZ2V0RmxhdHRlbmVkTm9kZXModGhpcy5fdGFyZ2V0KSxuPUlpKGUsdGhpcy5fZWZmZWN0aXZlTm9kZXMpO2ZvcihsZXQgZSxpPTA7aTxuLmxlbmd0aCYmKGU9bltpXSk7aSsrKWZvcihsZXQgbixpPTA7aTxlLnJlbW92ZWQubGVuZ3RoJiYobj1lLnJlbW92ZWRbaV0pO2krKyl0LnJlbW92ZWROb2Rlcy5wdXNoKG4pO2ZvcihsZXQgaSxyPTA7cjxuLmxlbmd0aCYmKGk9bltyXSk7cisrKWZvcihsZXQgbj1pLmluZGV4O248aS5pbmRleCtpLmFkZGVkQ291bnQ7bisrKXQuYWRkZWROb2Rlcy5wdXNoKGVbbl0pO3RoaXMuX2VmZmVjdGl2ZU5vZGVzPWU7bGV0IGk9ITE7cmV0dXJuKHQuYWRkZWROb2Rlcy5sZW5ndGh8fHQucmVtb3ZlZE5vZGVzLmxlbmd0aCkmJihpPSEwLHRoaXMuY2FsbGJhY2suY2FsbCh0aGlzLl90YXJnZXQsdCkpLGl9X2xpc3RlblNsb3RzKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO09pKG4pJiZuLmFkZEV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX2JvdW5kU2NoZWR1bGUpfX1fdW5saXN0ZW5TbG90cyh0KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtPaShuKSYmbi5yZW1vdmVFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl9ib3VuZFNjaGVkdWxlKX19fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBEaT1mdW5jdGlvbigpe2xldCB0LGU7ZG97dD13aW5kb3cuU2hhZHlET00mJlNoYWR5RE9NLmZsdXNoKCksd2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0mJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbS5mbHVzaCgpLGU9a24oKX13aGlsZSh0fHxlKX0sQmk9RWxlbWVudC5wcm90b3R5cGUsSGk9QmkubWF0Y2hlc3x8QmkubWF0Y2hlc1NlbGVjdG9yfHxCaS5tb3pNYXRjaGVzU2VsZWN0b3J8fEJpLm1zTWF0Y2hlc1NlbGVjdG9yfHxCaS5vTWF0Y2hlc1NlbGVjdG9yfHxCaS53ZWJraXRNYXRjaGVzU2VsZWN0b3IsRmk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGkuY2FsbCh0LGUpfTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jbGFzcyBWaXtjb25zdHJ1Y3Rvcih0KXt3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSYmd2luZG93LlNoYWR5RE9NLnBhdGNoKHQpLHRoaXMubm9kZT10fW9ic2VydmVOb2Rlcyh0KXtyZXR1cm4gbmV3IHppKHRoaXMubm9kZSx0KX11bm9ic2VydmVOb2Rlcyh0KXt0LmRpc2Nvbm5lY3QoKX1ub3RpZnlPYnNlcnZlcigpe31kZWVwQ29udGFpbnModCl7aWYoWSh0aGlzLm5vZGUpLmNvbnRhaW5zKHQpKXJldHVybiEwO2xldCBlPXQsbj10Lm93bmVyRG9jdW1lbnQ7Zm9yKDtlJiZlIT09biYmZSE9PXRoaXMubm9kZTspZT1ZKGUpLnBhcmVudE5vZGV8fFkoZSkuaG9zdDtyZXR1cm4gZT09PXRoaXMubm9kZX1nZXRPd25lclJvb3QoKXtyZXR1cm4gWSh0aGlzLm5vZGUpLmdldFJvb3ROb2RlKCl9Z2V0RGlzdHJpYnV0ZWROb2Rlcygpe3JldHVybiJzbG90Ij09PXRoaXMubm9kZS5sb2NhbE5hbWU/WSh0aGlzLm5vZGUpLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KTpbXX1nZXREZXN0aW5hdGlvbkluc2VydGlvblBvaW50cygpe2xldCB0PVtdLGU9WSh0aGlzLm5vZGUpLmFzc2lnbmVkU2xvdDtmb3IoO2U7KXQucHVzaChlKSxlPVkoZSkuYXNzaWduZWRTbG90O3JldHVybiB0fWltcG9ydE5vZGUodCxlKXtsZXQgbj10aGlzLm5vZGUgaW5zdGFuY2VvZiBEb2N1bWVudD90aGlzLm5vZGU6dGhpcy5ub2RlLm93bmVyRG9jdW1lbnQ7cmV0dXJuIFkobikuaW1wb3J0Tm9kZSh0LGUpfWdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKXtyZXR1cm4gemkuZ2V0RmxhdHRlbmVkTm9kZXModGhpcy5ub2RlKX1xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl7bGV0IGU9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCksbj1bXTtmb3IobGV0IGkscj0wLG89ZS5sZW5ndGg7cjxvJiYoaT1lW3JdKTtyKyspaS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZGaShpLHQpJiZuLnB1c2goaSk7cmV0dXJuIG59Z2V0IGFjdGl2ZUVsZW1lbnQoKXtsZXQgdD10aGlzLm5vZGU7cmV0dXJuIHZvaWQgMCE9PXQuX2FjdGl2ZUVsZW1lbnQ/dC5fYWN0aXZlRWxlbWVudDp0LmFjdGl2ZUVsZW1lbnR9fWZ1bmN0aW9uIFVpKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCBpPWVbbl07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtpXX0sY29uZmlndXJhYmxlOiEwfSl9fWNsYXNzIGppe2NvbnN0cnVjdG9yKHQpe3RoaXMuZXZlbnQ9dH1nZXQgcm9vdFRhcmdldCgpe3JldHVybiB0aGlzLnBhdGhbMF19Z2V0IGxvY2FsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuZXZlbnQudGFyZ2V0fWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuZXZlbnQuY29tcG9zZWRQYXRoKCl9fWxldCBHaT1WaTtpZih3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSYmd2luZG93LlNoYWR5RE9NLm5vUGF0Y2gmJndpbmRvdy5TaGFkeURPTS5XcmFwcGVyKXtjbGFzcyB0IGV4dGVuZHMgd2luZG93LlNoYWR5RE9NLldyYXBwZXJ7fU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFZpLnByb3RvdHlwZSkuZm9yRWFjaCgoZT0+eyJhY3RpdmVFbGVtZW50IiE9ZSYmKHQucHJvdG90eXBlW2VdPVZpLnByb3RvdHlwZVtlXSl9KSksVWkodC5wcm90b3R5cGUsWyJjbGFzc0xpc3QiXSksR2k9dCxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhqaS5wcm90b3R5cGUse2xvY2FsVGFyZ2V0OntnZXQoKXtjb25zdCB0PXRoaXMuZXZlbnQuY3VycmVudFRhcmdldCxlPXQmJllpKHQpLmdldE93bmVyUm9vdCgpLG49dGhpcy5wYXRoO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPW5bdF07aWYoWWkoaSkuZ2V0T3duZXJSb290KCk9PT1lKXJldHVybiBpfX0sY29uZmlndXJhYmxlOiEwfSxwYXRoOntnZXQoKXtyZXR1cm4gd2luZG93LlNoYWR5RE9NLmNvbXBvc2VkUGF0aCh0aGlzLmV2ZW50KX0sY29uZmlndXJhYmxlOiEwfX0pfWVsc2UhKGZ1bmN0aW9uIFdpKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCBpPWVbbl07dFtpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbaV0uYXBwbHkodGhpcy5ub2RlLGFyZ3VtZW50cyl9fX0pKFZpLnByb3RvdHlwZSxbImNsb25lTm9kZSIsImFwcGVuZENoaWxkIiwiaW5zZXJ0QmVmb3JlIiwicmVtb3ZlQ2hpbGQiLCJyZXBsYWNlQ2hpbGQiLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJxdWVyeVNlbGVjdG9yIiwicXVlcnlTZWxlY3RvckFsbCJdKSxVaShWaS5wcm90b3R5cGUsWyJwYXJlbnROb2RlIiwiZmlyc3RDaGlsZCIsImxhc3RDaGlsZCIsIm5leHRTaWJsaW5nIiwicHJldmlvdXNTaWJsaW5nIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJsYXN0RWxlbWVudENoaWxkIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsImNsYXNzTGlzdCJdKSwoZnVuY3Rpb24gcWkodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW2ldfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5ub2RlW2ldPXR9LGNvbmZpZ3VyYWJsZTohMH0pfX0pKFZpLnByb3RvdHlwZSxbInRleHRDb250ZW50IiwiaW5uZXJIVE1MIiwiY2xhc3NOYW1lIl0pO2NvbnN0IFlpPWZ1bmN0aW9uKHQpe2lmKCh0PXR8fGRvY3VtZW50KWluc3RhbmNlb2YgR2kpcmV0dXJuIHQ7aWYodCBpbnN0YW5jZW9mIGppKXJldHVybiB0O2xldCBlPXQuX19kb21BcGk7cmV0dXJuIGV8fChlPXQgaW5zdGFuY2VvZiBFdmVudD9uZXcgamkodCk6bmV3IEdpKHQpLHQuX19kb21BcGk9ZSksZX0sWGk9d2luZG93LlNoYWR5RE9NLCRpPXdpbmRvdy5TaGFkeUNTUzsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBLaSh0LGUpe3JldHVybiBZKHQpLmdldFJvb3ROb2RlKCk9PT1lfQovKioKICAgICAqIEBmaWxlb3ZlcnZpZXcKICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tQcm90b3R5cGFsVHlwZXN9CiAgICAgKiBAbGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZAogICAgICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogICAgICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogICAgICogR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUAogICAgICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCmNvbnN0IFppPSJkaXNhYmxlLXVwZ3JhZGUiLEppPXQ9Pntmb3IoO3Q7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwib2JzZXJ2ZWRBdHRyaWJ1dGVzIik7aWYoZSlyZXR1cm4gZS5nZXQ7dD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yfXJldHVybigpPT5bXX07SSgodD0+e2NvbnN0IGU9bWUodCk7bGV0IG49SmkoZSk7cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXtyZXR1cm4gbi5jYWxsKHRoaXMpLmNvbmNhdChaaSl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7dGhpcy5oYXNBdHRyaWJ1dGUoWmkpP3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMDpzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1fZW5hYmxlUHJvcGVydGllcygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuX2VuYWJsZVByb3BlcnRpZXMoKX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIHN1cGVyLl9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KSYmISh0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJnRoaXMuX2lzUHJvcGVydHlQZW5kaW5nKHQpKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7dD09Wmk/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkJiZudWxsPT1uJiYoc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCksdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSExLFkodGhpcykuaXNDb25uZWN0ZWQmJnN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCkpOnN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKX19fSkpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBRaT0iZGlzYWJsZS11cGdyYWRlIjtsZXQgdHI9d2luZG93LlNoYWR5Q1NTO2NvbnN0IGVyPUkoKHQ9Pntjb25zdCBlPXBpKG1lKHQpKSxuPWZlP2U6TWkoZSksaT1KaShuKSxyPXt4OiJwYW4teCIseToicGFuLXkiLG5vbmU6Im5vbmUiLGFsbDoiYXV0byJ9O2NsYXNzIG8gZXh0ZW5kcyBue2NvbnN0cnVjdG9yKCl7c3VwZXIoKX1zdGF0aWMgZ2V0IGltcG9ydE1ldGEoKXtyZXR1cm4gdGhpcy5wcm90b3R5cGUuaW1wb3J0TWV0YX1jcmVhdGVkKCl7fV9fYXR0cmlidXRlUmVhY3Rpb24odCxlLG4peyh0aGlzLl9fZGF0YUF0dHJpYnV0ZXMmJnRoaXMuX19kYXRhQXR0cmlidXRlc1t0XXx8dD09PVFpKSYmdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4sbnVsbCl9c2V0QXR0cmlidXRlKHQsZSl7aWYoTCYmIXRoaXMuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzKXtjb25zdCBuPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3N1cGVyLnNldEF0dHJpYnV0ZSh0LGUpLHRoaXMuX19hdHRyaWJ1dGVSZWFjdGlvbih0LG4sU3RyaW5nKGUpKX1lbHNlIHN1cGVyLnNldEF0dHJpYnV0ZSh0LGUpfXJlbW92ZUF0dHJpYnV0ZSh0KXtpZihMJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpe2NvbnN0IGU9dGhpcy5nZXRBdHRyaWJ1dGUodCk7c3VwZXIucmVtb3ZlQXR0cmlidXRlKHQpLHRoaXMuX19hdHRyaWJ1dGVSZWFjdGlvbih0LGUsbnVsbCl9ZWxzZSBzdXBlci5yZW1vdmVBdHRyaWJ1dGUodCl9c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXtyZXR1cm4gTCYmIXRoaXMucHJvdG90eXBlLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcz8odGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX29ic2VydmVkQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX29ic2VydmVkQXR0cmlidXRlcz1bXSksdGhpcy5fX29ic2VydmVkQXR0cmlidXRlcyk6aS5jYWxsKHRoaXMpLmNvbmNhdChRaSl9X2VuYWJsZVByb3BlcnRpZXMoKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLl9lbmFibGVQcm9wZXJ0aWVzKCl9X2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpe3JldHVybiBzdXBlci5fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCkmJiEodGhpcy5fX2lzVXBncmFkZURpc2FibGVkJiZ0aGlzLl9pc1Byb3BlcnR5UGVuZGluZyh0KSl9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9fbmVlZHNBdHRyaWJ1dGVzQXRDb25uZWN0ZWQmJnRoaXMuX3Rha2VBdHRyaWJ1dGVzKCksdGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHwoc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmlzQXR0YWNoZWQ9ITAsdGhpcy5hdHRhY2hlZCgpKX1hdHRhY2hlZCgpe31kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8KHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5pc0F0dGFjaGVkPSExLHRoaXMuZGV0YWNoZWQoKSl9ZGV0YWNoZWQoKXt9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpe2UhPT1uJiYodD09UWk/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkJiZudWxsPT1uJiYodGhpcy5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITEsWSh0aGlzKS5pc0Nvbm5lY3RlZCYmdGhpcy5jb25uZWN0ZWRDYWxsYmFjaygpKTooc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpLHRoaXMuYXR0cmlidXRlQ2hhbmdlZCh0LGUsbikpKX1hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKXt9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7aWYodyYmdGhpcy5oYXNBdHRyaWJ1dGUoUWkpKXRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMDtlbHNle2xldCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTt0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9faGFzUmVnaXN0ZXJGaW5pc2hlZCIsdCkpfHwodGhpcy5fcmVnaXN0ZXJlZCgpLHQuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3Q9dGhpcyx0aGlzLmNyZWF0ZWQoKSxMJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMmJih0aGlzLmhhc0F0dHJpYnV0ZXMoKT90aGlzLl90YWtlQXR0cmlidXRlcygpOnRoaXMucGFyZW50Tm9kZXx8KHRoaXMuX19uZWVkc0F0dHJpYnV0ZXNBdENvbm5lY3RlZD0hMCkpLHRoaXMuX2FwcGx5TGlzdGVuZXJzKCl9fV90YWtlQXR0cmlidXRlcygpe2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdO3RoaXMuX19hdHRyaWJ1dGVSZWFjdGlvbihuLm5hbWUsbnVsbCxuLnZhbHVlKX19X3JlZ2lzdGVyZWQoKXt9cmVhZHkoKXt0aGlzLl9lbnN1cmVBdHRyaWJ1dGVzKCksc3VwZXIucmVhZHkoKX1fZW5zdXJlQXR0cmlidXRlcygpe31fYXBwbHlMaXN0ZW5lcnMoKXt9c2VyaWFsaXplKHQpe3JldHVybiB0aGlzLl9zZXJpYWxpemVWYWx1ZSh0KX1kZXNlcmlhbGl6ZSh0LGUpe3JldHVybiB0aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKHQsZSl9cmVmbGVjdFByb3BlcnR5VG9BdHRyaWJ1dGUodCxlLG4pe3RoaXMuX3Byb3BlcnR5VG9BdHRyaWJ1dGUodCxlLG4pfXNlcmlhbGl6ZVZhbHVlVG9BdHRyaWJ1dGUodCxlLG4pe3RoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKG58fHRoaXMsdCxlKX1leHRlbmQodCxlKXtpZighdHx8IWUpcmV0dXJuIHR8fGU7bGV0IG49T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSk7Zm9yKGxldCBpLHI9MDtyPG4ubGVuZ3RoJiYoaT1uW3JdKTtyKyspe2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKTtuJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLG4pfXJldHVybiB0fW1peGluKHQsZSl7Zm9yKGxldCBuIGluIGUpdFtuXT1lW25dO3JldHVybiB0fWNoYWluT2JqZWN0KHQsZSl7cmV0dXJuIHQmJmUmJnQhPT1lJiYodC5fX3Byb3RvX189ZSksdH1pbnN0YW5jZVRlbXBsYXRlKHQpe2xldCBlPXRoaXMuY29uc3RydWN0b3IuX2NvbnRlbnRGb3JUZW1wbGF0ZSh0KTtyZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZShlLCEwKX1maXJlKHQsZSxuKXtuPW58fHt9LGU9bnVsbD09ZT97fTplO2xldCBpPW5ldyBFdmVudCh0LHtidWJibGVzOnZvaWQgMD09PW4uYnViYmxlc3x8bi5idWJibGVzLGNhbmNlbGFibGU6Qm9vbGVhbihuLmNhbmNlbGFibGUpLGNvbXBvc2VkOnZvaWQgMD09PW4uY29tcG9zZWR8fG4uY29tcG9zZWR9KTtyZXR1cm4gaS5kZXRhaWw9ZSxZKG4ubm9kZXx8dGhpcykuZGlzcGF0Y2hFdmVudChpKSxpfWxpc3Rlbih0LGUsbil7dD10fHx0aGlzO2xldCBpPXRoaXMuX19ib3VuZExpc3RlbmVyc3x8KHRoaXMuX19ib3VuZExpc3RlbmVycz1uZXcgV2Vha01hcCkscj1pLmdldCh0KTtyfHwocj17fSxpLnNldCh0LHIpKTtsZXQgbz1lK247cltvXXx8KHJbb109dGhpcy5fYWRkTWV0aG9kRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbix0aGlzKSl9dW5saXN0ZW4odCxlLG4pe3Q9dHx8dGhpcztsZXQgaT10aGlzLl9fYm91bmRMaXN0ZW5lcnMmJnRoaXMuX19ib3VuZExpc3RlbmVycy5nZXQodCkscj1lK24sbz1pJiZpW3JdO28mJih0aGlzLl9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG8pLGlbcl09bnVsbCl9c2V0U2Nyb2xsRGlyZWN0aW9uKHQsZSl7b2koZXx8dGhpcyxyW3RdfHwiYXV0byIpfSQkKHQpe3JldHVybiB0aGlzLnJvb3QucXVlcnlTZWxlY3Rvcih0KX1nZXQgZG9tSG9zdCgpe2xldCB0PVkodGhpcykuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQ/dC5ob3N0OnR9ZGlzdHJpYnV0ZUNvbnRlbnQoKXtjb25zdCB0PVlpKHRoaXMpO3dpbmRvdy5TaGFkeURPTSYmdC5zaGFkb3dSb290JiZTaGFkeURPTS5mbHVzaCgpfWdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKXtyZXR1cm4gWWkodGhpcykuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpfXF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KXtyZXR1cm4gWWkodGhpcykucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpfWdldEVmZmVjdGl2ZUNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0pKX1nZXRFZmZlY3RpdmVUZXh0Q29udGVudCgpe2xldCB0PXRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLGU9W107Zm9yKGxldCBuLGk9MDtuPXRbaV07aSsrKW4ubm9kZVR5cGUhPT1Ob2RlLkNPTU1FTlRfTk9ERSYmZS5wdXNoKG4udGV4dENvbnRlbnQpO3JldHVybiBlLmpvaW4oIiIpfXF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4odCl7bGV0IGU9dGhpcy5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCk7cmV0dXJuIGUmJmVbMF19cXVlcnlBbGxFZmZlY3RpdmVDaGlsZHJlbih0KXtyZXR1cm4gdGhpcy5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl9Z2V0Q29udGVudENoaWxkTm9kZXModCl7bGV0IGU9dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IodHx8InNsb3QiKTtyZXR1cm4gZT9ZaShlKS5nZXREaXN0cmlidXRlZE5vZGVzKCk6W119Z2V0Q29udGVudENoaWxkcmVuKHQpe3JldHVybiB0aGlzLmdldENvbnRlbnRDaGlsZE5vZGVzKHQpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0pKX1pc0xpZ2h0RGVzY2VuZGFudCh0KXtjb25zdCBlPXRoaXM7cmV0dXJuIGUhPT10JiZZKGUpLmNvbnRhaW5zKHQpJiZZKGUpLmdldFJvb3ROb2RlKCk9PT1ZKHQpLmdldFJvb3ROb2RlKCl9aXNMb2NhbERlc2NlbmRhbnQodCl7cmV0dXJuIHRoaXMucm9vdD09PVkodCkuZ2V0Um9vdE5vZGUoKX1zY29wZVN1YnRyZWUodCxlPSExKXtyZXR1cm4oZnVuY3Rpb24gbih0LGU9ITEpe2lmKCFYaXx8ISRpKXJldHVybiBudWxsO2lmKCFYaS5oYW5kbGVzRHluYW1pY1Njb3BpbmcpcmV0dXJuIG51bGw7Y29uc3Qgbj0kaS5TY29waW5nU2hpbTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBpPW4uc2NvcGVGb3JOb2RlKHQpLHI9WSh0KS5nZXRSb290Tm9kZSgpLG89dD0+e2lmKCFLaSh0LHIpKXJldHVybjtjb25zdCBlPUFycmF5LmZyb20oWGkubmF0aXZlTWV0aG9kcy5xdWVyeVNlbGVjdG9yQWxsLmNhbGwodCwiKiIpKTtlLnB1c2godCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG89ZVt0XTtpZighS2kobyxyKSljb250aW51ZTtjb25zdCBhPW4uY3VycmVudFNjb3BlRm9yTm9kZShvKTthIT09aSYmKCIiIT09YSYmbi51bnNjb3BlTm9kZShvLGEpLG4uc2NvcGVOb2RlKG8saSkpfX07aWYobyh0KSxlKXtjb25zdCBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKCh0PT57Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtmb3IobGV0IHQ9MDt0PG4uYWRkZWROb2Rlcy5sZW5ndGg7dCsrKXtjb25zdCBlPW4uYWRkZWROb2Rlc1t0XTtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJm8oZSl9fX0pKTtyZXR1cm4gZS5vYnNlcnZlKHQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksZX1yZXR1cm4gbnVsbH0pKHQsZSl9Z2V0Q29tcHV0ZWRTdHlsZVZhbHVlKHQpe3JldHVybiB0ci5nZXRDb21wdXRlZFN0eWxlVmFsdWUodGhpcyx0KX1kZWJvdW5jZSh0LGUsbil7cmV0dXJuIHRoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e30sdGhpcy5fZGVib3VuY2Vyc1t0XT1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJzW3RdLG4+MD9ndC5hZnRlcihuKTp2dCxlLmJpbmQodGhpcykpfWlzRGVib3VuY2VyQWN0aXZlKHQpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGU9dGhpcy5fZGVib3VuY2Vyc1t0XTtyZXR1cm4hKCFlfHwhZS5pc0FjdGl2ZSgpKX1mbHVzaERlYm91bmNlcih0KXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9O2xldCBlPXRoaXMuX2RlYm91bmNlcnNbdF07ZSYmZS5mbHVzaCgpfWNhbmNlbERlYm91bmNlcih0KXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9O2xldCBlPXRoaXMuX2RlYm91bmNlcnNbdF07ZSYmZS5jYW5jZWwoKX1hc3luYyh0LGUpe3JldHVybiBlPjA/Z3QucnVuKHQuYmluZCh0aGlzKSxlKTp+dnQucnVuKHQuYmluZCh0aGlzKSl9Y2FuY2VsQXN5bmModCl7dDwwP3Z0LmNhbmNlbCh+dCk6Z3QuY2FuY2VsKHQpfWNyZWF0ZSh0LGUpe2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCk7aWYoZSlpZihuLnNldFByb3BlcnRpZXMpbi5zZXRQcm9wZXJ0aWVzKGUpO2Vsc2UgZm9yKGxldCB0IGluIGUpblt0XT1lW3RdO3JldHVybiBufWVsZW1lbnRNYXRjaGVzKHQsZSl7cmV0dXJuIEZpKGV8fHRoaXMsdCl9dG9nZ2xlQXR0cmlidXRlKHQsZSl7bGV0IG49dGhpcztyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGgmJihuPWFyZ3VtZW50c1syXSksMT09YXJndW1lbnRzLmxlbmd0aCYmKGU9IW4uaGFzQXR0cmlidXRlKHQpKSxlPyhZKG4pLnNldEF0dHJpYnV0ZSh0LCIiKSwhMCk6KFkobikucmVtb3ZlQXR0cmlidXRlKHQpLCExKX10b2dnbGVDbGFzcyh0LGUsbil7bj1ufHx0aGlzLDE9PWFyZ3VtZW50cy5sZW5ndGgmJihlPSFuLmNsYXNzTGlzdC5jb250YWlucyh0KSksZT9uLmNsYXNzTGlzdC5hZGQodCk6bi5jbGFzc0xpc3QucmVtb3ZlKHQpfXRyYW5zZm9ybSh0LGUpeyhlPWV8fHRoaXMpLnN0eWxlLndlYmtpdFRyYW5zZm9ybT10LGUuc3R5bGUudHJhbnNmb3JtPXR9dHJhbnNsYXRlM2QodCxlLG4saSl7dGhpcy50cmFuc2Zvcm0oInRyYW5zbGF0ZTNkKCIrdCsiLCIrZSsiLCIrbisiKSIsaT1pfHx0aGlzKX1hcnJheURlbGV0ZSh0LGUpe2xldCBuO2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKG49dC5pbmRleE9mKGUpLG4+PTApcmV0dXJuIHQuc3BsaWNlKG4sMSl9ZWxzZSBpZihuPW50KHRoaXMsdCkuaW5kZXhPZihlKSxuPj0wKXJldHVybiB0aGlzLnNwbGljZSh0LG4sMSk7cmV0dXJuIG51bGx9X2xvZ2dlcih0LGUpe3N3aXRjaChBcnJheS5pc0FycmF5KGUpJiYxPT09ZS5sZW5ndGgmJkFycmF5LmlzQXJyYXkoZVswXSkmJihlPWVbMF0pLHQpe2Nhc2UibG9nIjpjYXNlIndhcm4iOmNhc2UiZXJyb3IiOmNvbnNvbGVbdF0oLi4uZSl9fV9sb2coLi4udCl7dGhpcy5fbG9nZ2VyKCJsb2ciLHQpfV93YXJuKC4uLnQpe3RoaXMuX2xvZ2dlcigid2FybiIsdCl9X2Vycm9yKC4uLnQpe3RoaXMuX2xvZ2dlcigiZXJyb3IiLHQpfV9sb2dmKHQsLi4uZSl7cmV0dXJuWyJbJXM6OiVzXSIsdGhpcy5pcyx0LC4uLmVdfX1yZXR1cm4gby5wcm90b3R5cGUuaXM9IiIsb30pKTtmdW5jdGlvbiBucih0LGUpe2xldCBuPTAsaT0wO2Zvcig7Oyl7aWYobj09PXQubGVuZ3RoKXJldHVybiBpPT09ZS5sZW5ndGg/MDotMTtpZihpPT09ZS5sZW5ndGgpcmV0dXJuIDE7aWYocnIodFtuXSkmJnJyKGVbaV0pKXtjb25zdCByPW4sbz1pO249aXIodCxuKzEpLGk9aXIoZSxpKzEpO2NvbnN0IGE9cGFyc2VGbG9hdCh0LnNsaWNlKHIsbikpLHM9cGFyc2VGbG9hdChlLnNsaWNlKG8saSkpO2lmKGE8cylyZXR1cm4tMTtpZihhPnMpcmV0dXJuIDF9ZWxzZXtpZihvcih0W25dKSl7aWYoIW9yKGVbaV0pKXJldHVybi0xfWVsc2V7aWYob3IoZVtpXSkpcmV0dXJuIDE7aWYodFtuXTxlW2ldKXJldHVybi0xO2lmKHRbbl0+ZVtpXSlyZXR1cm4gMX1uKyssaSsrfX19ZnVuY3Rpb24gaXIodCxlKXtsZXQgbjshKGZ1bmN0aW9uKHQpe3RbdC5OQVRVUkFMPTBdPSJOQVRVUkFMIix0W3QuUkVBTD0xXT0iUkVBTCIsdFt0LkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLHRbdC5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkobnx8KG49e30pKTtsZXQgaT1uLk5BVFVSQUw7Zm9yKDtlPHQubGVuZ3RoO2UrKylpZihpPT09bi5OQVRVUkFMKXtpZigiLiI9PT10W2VdKWk9bi5SRUFMO2Vsc2UgaWYoImUiPT09dFtlXXx8IkUiPT09dFtlXSlpPW4uRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFycih0W2VdKSlicmVha31lbHNlIGlmKGk9PT1uLlJFQUwpe2lmKCJlIj09PXRbZV18fCJFIj09PXRbZV0paT1uLkVYUE9ORU5UX1NJR047ZWxzZSBpZighcnIodFtlXSkpYnJlYWt9ZWxzZSBpZihpPT09bi5FWFBPTkVOVF9TSUdOKXtpZighcnIodFtlXSkmJiIrIiE9PXRbZV0mJiItIiE9PXRbZV0pYnJlYWs7aT1uLkVYUE9ORU5UfWVsc2UgaWYoaT09PW4uRVhQT05FTlQmJiFycih0W2VdKSlicmVhaztyZXR1cm4gZX1mdW5jdGlvbiBycih0KXtyZXR1cm4iMCI8PXQmJnQ8PSI5In1mdW5jdGlvbiBvcih0KXtyZXR1cm4iLyI9PT10fHwiXyI9PT10fHxycih0KX1mdW5jdGlvbiBhcih0KXtyZXR1cm4gU2UuZXhwb3J0cy51bmlvbi5hcHBseShudWxsLFNlLmV4cG9ydHMudmFsdWVzKHQpKS5zb3J0KG5yKX1jbGFzcyBzciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm5hbWU9IlJlcXVlc3RDYW5jZWxsYXRpb25FcnJvciJ9fWNsYXNzIGxyIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5uYW1lPSJJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsbHIucHJvdG90eXBlKX19Y2xhc3MgY3IgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5tZXNzYWdlPWBSZXF1ZXN0TmV0d29ya0Vycm9yOiAke3Quc3RhdHVzfSBhdCAke2V9YCx0aGlzLm5hbWU9IlJlcXVlc3ROZXR3b3JrRXJyb3IiLHRoaXMucmVxPXQsdGhpcy51cmw9ZX19dmFyIHVyOyEoZnVuY3Rpb24odCl7dC5HRVQ9IkdFVCIsdC5QT1NUPSJQT1NUIn0pKHVyfHwodXI9e30pKTtjbGFzcyBocnt2YWxpZGF0ZSgpe2lmKHRoaXMubWV0aG9kVHlwZT09PXVyLkdFVCYmdGhpcy5ib2R5KXRocm93IG5ldyBscigiYm9keSBtdXN0IGJlIG1pc3NpbmcgZm9yIGEgR0VUIHJlcXVlc3QuIil9fWNsYXNzIGRye2NvbnN0cnVjdG9yKHQ9MWUzLGU9Myl7dGhpcy5fcXVldWU9W10sdGhpcy5fbkFjdGl2ZVJlcXVlc3RzPTAsdGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzPXQsdGhpcy5fbWF4UmV0cmllcz1lfXJlcXVlc3QodCxlKXtjb25zdCBuPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9bmV3IGhyO3JldHVybiB0PyhlLm1ldGhvZFR5cGU9dXIuUE9TVCxlLmJvZHk9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1uZXcgRm9ybURhdGE7Zm9yKGNvbnN0W24saV1vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3QgdD1BcnJheS5pc0FycmF5KGkpP2k6W2ldO2Zvcihjb25zdCBpIG9mIHQpZS5hcHBlbmQobixpKX1yZXR1cm4gZX0pKHQpLGUpOihlLm1ldGhvZFR5cGU9dXIuR0VULGUpfSkoZSk7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQsZSl7cmV0dXJuIGUudmFsaWRhdGUoKSxuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PnRoaXMucHJvbWlzZVdpdGhSZXRyaWVzKHQsdGhpcy5fbWF4UmV0cmllcyxlKSkpLnRoZW4oKHQ9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksdCkpLCh0PT4oIlJlcXVlc3ROZXR3b3JrRXJyb3IiPT09dC5uYW1lJiYodGhpcy5fbkFjdGl2ZVJlcXVlc3RzLS0sdGhpcy5sYXVuY2hSZXF1ZXN0cygpKSxQcm9taXNlLnJlamVjdCh0KSkpKX1mZXRjaCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PntsZXQgbj0xO3JldHVybiBuZXcgUHJvbWlzZSgoaT0+e2NvbnN0IHI9KCk9PntmZXRjaCh0LGUpLnRoZW4oKHQ9PntpZighdC5vayYmdGhpcy5fbWF4UmV0cmllcz5uKXJldHVybiBuKyssdm9pZCByKCk7aSh0KSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSl9O3IoKX0pKX0pKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBzcigiUmVxdWVzdCBjYW5jZWxsZWQgYnkgY2xlYXJRdWV1ZSIpKX1hY3RpdmVSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHN9b3V0c3RhbmRpbmdSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHMrdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiZ0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSh2b2lkIDApfXByb21pc2VXaXRoUmV0cmllcyh0LGUsbil7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbigodD0+dCksKGk9PmU+MD90aGlzLnByb21pc2VXaXRoUmV0cmllcyh0LGUtMSxuKTpQcm9taXNlLnJlamVjdChpKSkpfV9wcm9taXNlRnJvbVVybCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKG4saSk9Pntjb25zdCByPShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiByLm9wZW4odCxlKSxuJiYoci53aXRoQ3JlZGVudGlhbHM9biksaSYmci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGkpLHJ9KShlLm1ldGhvZFR5cGUsdCxlLndpdGhDcmVkZW50aWFscyxlLmNvbnRlbnRUeXBlKTtyLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PXIuc3RhdHVzP24oSlNPTi5wYXJzZShyLnJlc3BvbnNlVGV4dCkpOmkobmV3IGNyKHIsdCkpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBjcihyLHQpKX0sZS5ib2R5P3Iuc2VuZChlLmJvZHkpOnIuc2VuZCgpfSkpfX1jb25zdCBwcj0iZXhwZXJpbWVudGFsUGx1Z2luIixmcj1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCBtcj1ncigpO2Z1bmN0aW9uIGdyKHQ9ImRhdGEiLGU9ZnIpe3JldHVybiIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSkse2Vudmlyb25tZW50OigpPT55cih0LCIvZW52aXJvbm1lbnQiKSxleHBlcmltZW50czooKT0+eXIodCwiL2V4cGVyaW1lbnRzIikscGx1Z2luUm91dGU6KGUsbixpKT0+eXIodCsiL3BsdWdpbiIsYC8ke2V9JHtufWAsaSkscGx1Z2luc0xpc3Rpbmc6KCk9PnlyKHQsIi9wbHVnaW5zX2xpc3RpbmciLHZyKHtbcHJdOmUuZ2V0QWxsKHByKX0pKSxydW5zOigpPT55cih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OmU9PnlyKHQsIi9leHBlcmltZW50X3J1bnMiLHZyKHtleHBlcmltZW50OlN0cmluZyhlKX0pKX19ZnVuY3Rpb24gX3IoKXtyZXR1cm4gbXJ9ZnVuY3Rpb24geXIodCxlLG49bmV3IFVSTFNlYXJjaFBhcmFtcyl7bGV0IGk9dCtlO3JldHVybiBTdHJpbmcobikmJihpKz0oZS5pbmNsdWRlcygiPyIpPyImIjoiPyIpK1N0cmluZyhuKSksaX1mdW5jdGlvbiB2cih0PXt9KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpLnNvcnQoKS5maWx0ZXIoKGU9PnRbZV0pKSxuPW5ldyBVUkxTZWFyY2hQYXJhbXM7cmV0dXJuIGUuZm9yRWFjaCgoZT0+e2NvbnN0IGk9dFtlXTsoQXJyYXkuaXNBcnJheShpKT9pOltpXSkuZm9yRWFjaCgodD0+bi5hcHBlbmQoZSx0KSkpfSkpLG59dmFyIGJyO2Z1bmN0aW9uIHhyKHQsZSl7Y29uc3Qgbj0oKCk9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAoZSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSkoKTtyZXR1cm57bmFtZTplLG1ldGFkYXRhOnt0eXBlOmJyLlNFQVJDSF9SRVNVTFRTLHZhbGlkUmVnZXg6ISFuLHVuaXZlcnNhbFJlZ2V4OiIuKiI9PT1lfSxpdGVtczpuP3QuZmlsdGVyKCh0PT50Lm1hdGNoKG4pKSk6W119fWZ1bmN0aW9uIHdyKHQsZSxuKXtjb25zdCBpPShmdW5jdGlvbiByKHQsZT0iIil7Y29uc3Qgbj1beHIodCxlKV0saT0oZnVuY3Rpb24gcih0LGU9Ii8iKXtjb25zdCBuPVtdLGk9e307cmV0dXJuIHQuZm9yRWFjaCgodD0+e2NvbnN0IHI9dC5pbmRleE9mKGUpLG89cj49MD90LnNsaWNlKDAscik6dDtpZighaVtvXSl7Y29uc3QgdD17bmFtZTpvLG1ldGFkYXRhOnt0eXBlOmJyLlBSRUZJWF9HUk9VUH0saXRlbXM6W119O2lbb109dCxuLnB1c2godCl9aVtvXS5pdGVtcy5wdXNoKHQpfSkpLG59KSh0KTtyZXR1cm5bXS5jb25jYXQobixpKX0pKGFyKHQpLG4pLG89KGZ1bmN0aW9uIGEodCl7Y29uc3QgZT1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57dFtuXS5mb3JFYWNoKCh0PT57Y29uc3QgaT1lLmdldCh0KXx8W107aS5wdXNoKG4pLGUuc2V0KHQsaSl9KSl9KSksZX0pKFNlLmV4cG9ydHMucGljayh0LGUpKTtyZXR1cm4gaS5tYXAoKCh7bmFtZTp0LG1ldGFkYXRhOmUsaXRlbXM6bn0pPT4oe25hbWU6dCxtZXRhZGF0YTplLGl0ZW1zOm4ubWFwKCh0PT4oe3RhZzp0LHJ1bnM6KG8uZ2V0KHQpfHxbXSkuc2xpY2UoKX0pKSl9KSkpfWZ1bmN0aW9uIFNyKHQsZSl7Y29uc3Qgbj1ucih0LnRhZyxlLnRhZyk7cmV0dXJuIDAhPW4/bjpucih0LnJ1bixlLnJ1bil9ZnVuY3Rpb24gTXIodCxlLG4pe3JldHVybiB3cih0LGUsbikubWFwKChmdW5jdGlvbiBpKHQpe2NvbnN0IGU9U2UuZXhwb3J0cy5mbGF0dGVuKHQuaXRlbXMubWFwKCgoe3RhZzp0LHJ1bnM6ZX0pPT5lLm1hcCgoZT0+KHt0YWc6dCxydW46ZX0pKSkpKSk7cmV0dXJuIGUuc29ydChTcikse25hbWU6dC5uYW1lLG1ldGFkYXRhOnQubWV0YWRhdGEsaXRlbXM6ZX19KSl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovIShmdW5jdGlvbih0KXt0W3QuU0VBUkNIX1JFU1VMVFM9MF09IlNFQVJDSF9SRVNVTFRTIix0W3QuUFJFRklYX0dST1VQPTFdPSJQUkVGSVhfR1JPVVAifSkoYnJ8fChicj17fSkpO2NvbnN0IEVyPXthdHRhY2hlZDohMCxkZXRhY2hlZDohMCxyZWFkeTohMCxjcmVhdGVkOiEwLGJlZm9yZVJlZ2lzdGVyOiEwLHJlZ2lzdGVyZWQ6ITAsYXR0cmlidXRlQ2hhbmdlZDohMCxsaXN0ZW5lcnM6ITAsaG9zdEF0dHJpYnV0ZXM6ITB9LFRyPXthdHRhY2hlZDohMCxkZXRhY2hlZDohMCxyZWFkeTohMCxjcmVhdGVkOiEwLGJlZm9yZVJlZ2lzdGVyOiEwLHJlZ2lzdGVyZWQ6ITAsYXR0cmlidXRlQ2hhbmdlZDohMCxiZWhhdmlvcnM6ITAsX25vQWNjZXNzb3JzOiEwfSxDcj1PYmplY3QuYXNzaWduKHtsaXN0ZW5lcnM6ITAsaG9zdEF0dHJpYnV0ZXM6ITAscHJvcGVydGllczohMCxvYnNlcnZlcnM6ITB9LFRyKTtmdW5jdGlvbiBBcih0LGUsbixpKXshKGZ1bmN0aW9uIHIodCxlLG4pe2NvbnN0IGk9dC5fbm9BY2Nlc3NvcnMscj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KTtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7bGV0IGE9cltvXTtpZighKGEgaW4gbikpaWYoaSllW2FdPXRbYV07ZWxzZXtsZXQgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsYSk7biYmKG4uY29uZmlndXJhYmxlPSEwLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGEsbikpfX19KShlLHQsaSk7Zm9yKGxldCB0IGluIEVyKWVbdF0mJihuW3RdPW5bdF18fFtdLG5bdF0ucHVzaChlW3RdKSl9ZnVuY3Rpb24ga3IodCxlLG4pe2U9ZXx8W107Zm9yKGxldCBpPXQubGVuZ3RoLTE7aT49MDtpLS0pe2xldCByPXRbaV07cj9BcnJheS5pc0FycmF5KHIpP2tyKHIsZSk6ZS5pbmRleE9mKHIpPDAmJighbnx8bi5pbmRleE9mKHIpPDApJiZlLnVuc2hpZnQocik6Y29uc29sZS53YXJuKCJiZWhhdmlvciBpcyBudWxsLCBjaGVjayBmb3IgbWlzc2luZyBvciA0MDQgaW1wb3J0Iil9cmV0dXJuIGV9ZnVuY3Rpb24gTHIodCxlKXtmb3IoY29uc3QgbiBpbiBlKXtjb25zdCBpPXRbbl0scj1lW25dO3Rbbl09ISgidmFsdWUiaW4gcikmJmkmJiJ2YWx1ZSJpbiBpP09iamVjdC5hc3NpZ24oe3ZhbHVlOmkudmFsdWV9LHIpOnJ9fWNvbnN0IFByPWVyKEhUTUxFbGVtZW50KTtmdW5jdGlvbiBOcih0LGUsbil7bGV0IGk7Y29uc3Qgcj17fTtjbGFzcyBvIGV4dGVuZHMgZXtzdGF0aWMgX2ZpbmFsaXplQ2xhc3MoKXtpZih0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImdlbmVyYXRlZEZyb20iLHRoaXMpKSl7aWYoaSlmb3IobGV0IHQsZT0wO2U8aS5sZW5ndGg7ZSsrKXQ9aVtlXSx0LnByb3BlcnRpZXMmJnRoaXMuY3JlYXRlUHJvcGVydGllcyh0LnByb3BlcnRpZXMpLHQub2JzZXJ2ZXJzJiZ0aGlzLmNyZWF0ZU9ic2VydmVycyh0Lm9ic2VydmVycyx0LnByb3BlcnRpZXMpO3QucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHQucHJvcGVydGllcyksdC5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKHQub2JzZXJ2ZXJzLHQucHJvcGVydGllcyksdGhpcy5fcHJlcGFyZVRlbXBsYXRlKCl9ZWxzZSBlLl9maW5hbGl6ZUNsYXNzLmNhbGwodGhpcyl9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7Y29uc3QgZT17fTtpZihpKWZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKUxyKGUsaVt0XS5wcm9wZXJ0aWVzKTtyZXR1cm4gTHIoZSx0LnByb3BlcnRpZXMpLGV9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtsZXQgZT1bXTtpZihpKWZvcihsZXQgdCxuPTA7bjxpLmxlbmd0aDtuKyspdD1pW25dLHQub2JzZXJ2ZXJzJiYoZT1lLmNvbmNhdCh0Lm9ic2VydmVycykpO3JldHVybiB0Lm9ic2VydmVycyYmKGU9ZS5jb25jYXQodC5vYnNlcnZlcnMpKSxlfWNyZWF0ZWQoKXtzdXBlci5jcmVhdGVkKCk7Y29uc3QgdD1yLmNyZWF0ZWQ7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmNhbGwodGhpcyl9X3JlZ2lzdGVyZWQoKXtjb25zdCB0PW8ucHJvdG90eXBlO2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9faGFzUmVnaXN0ZXJGaW5pc2hlZCIsdCkpKXt0Ll9faGFzUmVnaXN0ZXJGaW5pc2hlZD0hMCxzdXBlci5fcmVnaXN0ZXJlZCgpLHcmJmEodCk7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7bGV0IG49ci5iZWZvcmVSZWdpc3RlcjtpZihuKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0uY2FsbChlKTtpZihuPXIucmVnaXN0ZXJlZCxuKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0uY2FsbChlKX19X2FwcGx5TGlzdGVuZXJzKCl7c3VwZXIuX2FwcGx5TGlzdGVuZXJzKCk7Y29uc3QgdD1yLmxpc3RlbmVycztpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV07aWYobilmb3IobGV0IHQgaW4gbil0aGlzLl9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsdCxuW3RdKX19X2Vuc3VyZUF0dHJpYnV0ZXMoKXtjb25zdCB0PXIuaG9zdEF0dHJpYnV0ZXM7aWYodClmb3IobGV0IGU9dC5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3Qgbj10W2VdO2ZvcihsZXQgdCBpbiBuKXRoaXMuX2Vuc3VyZUF0dHJpYnV0ZSh0LG5bdF0pfXN1cGVyLl9lbnN1cmVBdHRyaWJ1dGVzKCl9cmVhZHkoKXtzdXBlci5yZWFkeSgpO2xldCB0PXIucmVhZHk7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmNhbGwodGhpcyl9YXR0YWNoZWQoKXtzdXBlci5hdHRhY2hlZCgpO2xldCB0PXIuYXR0YWNoZWQ7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmNhbGwodGhpcyl9ZGV0YWNoZWQoKXtzdXBlci5kZXRhY2hlZCgpO2xldCB0PXIuZGV0YWNoZWQ7aWYodClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmNhbGwodGhpcyl9YXR0cmlidXRlQ2hhbmdlZCh0LGUsbil7c3VwZXIuYXR0cmlidXRlQ2hhbmdlZCgpO2xldCBpPXIuYXR0cmlidXRlQ2hhbmdlZDtpZihpKWZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKWlbcl0uY2FsbCh0aGlzLHQsZSxuKX19aWYobil7QXJyYXkuaXNBcnJheShuKXx8KG49W25dKTtsZXQgdD1lLnByb3RvdHlwZS5iZWhhdmlvcnM7aT1rcihuLG51bGwsdCksby5wcm90b3R5cGUuYmVoYXZpb3JzPXQ/dC5jb25jYXQobik6aX1jb25zdCBhPWU9PntpJiYoZnVuY3Rpb24gbih0LGUsaSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspQXIodCxlW25dLGksQ3IpfSkoZSxpLHIpLEFyKGUsdCxyLFRyKX07cmV0dXJuIHd8fGEoby5wcm90b3R5cGUpLG8uZ2VuZXJhdGVkRnJvbT10LG99Y29uc3QgSXI9ZnVuY3Rpb24odCxlKXt0fHxjb25zb2xlLndhcm4oIlBvbHltZXIuQ2xhc3MgcmVxdWlyZXMgYGluZm9gIGFyZ3VtZW50Iik7bGV0IG49ZT9lKFByKTpQcjtyZXR1cm4gbj1Ocih0LG4sdC5iZWhhdmlvcnMpLG4uaXM9bi5wcm90b3R5cGUuaXM9dC5pcyxufSxScj1mdW5jdGlvbih0KXtsZXQgZTtyZXR1cm4gZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJyLkNsYXNzKHQpLHQuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzJiYoZS5wcm90b3R5cGUuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzPXQuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzKSxjdXN0b21FbGVtZW50cy5kZWZpbmUoZS5pcyxlKSxlfTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KZnVuY3Rpb24gT3IodCxlLG4saSxyKXtsZXQgbztyJiYobz0ib2JqZWN0Ij09dHlwZW9mIG4mJm51bGwhPT1uLG8mJihpPXQuX19kYXRhVGVtcFtlXSkpO2xldCBhPWkhPT1uJiYoaT09aXx8bj09bik7cmV0dXJuIG8mJmEmJih0Ll9fZGF0YVRlbXBbZV09biksYX1Sci5DbGFzcz1Jcjtjb25zdCB6cj1JKCh0PT5jbGFzcyBleHRlbmRzIHR7X3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gT3IodGhpcyx0LGUsbiwhMCl9fSkpLERyPUkoKHQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57bXV0YWJsZURhdGE6Qm9vbGVhbn19X3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gT3IodGhpcyx0LGUsbix0aGlzLm11dGFibGVEYXRhKX19KSk7enIuX211dGFibGVQcm9wZXJ0eUNoYW5nZT1PcjsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IEJyPW51bGw7ZnVuY3Rpb24gSHIoKXtyZXR1cm4gQnJ9SHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSFRNTFRlbXBsYXRlRWxlbWVudC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpIcix3cml0YWJsZTohMH19KTtjb25zdCBGcj1oZShIciksVnI9enIoRnIpLFVyPWhlKGNsYXNze30pO2Z1bmN0aW9uIGpyKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCBpPWVbbl07aWYoQm9vbGVhbih0KSE9Qm9vbGVhbihpLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fXykpaWYoaS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXQ/KGkuX19wb2x5bWVyVGV4dENvbnRlbnRfXz1pLnRleHRDb250ZW50LGkudGV4dENvbnRlbnQ9IiIpOmkudGV4dENvbnRlbnQ9aS5fX3BvbHltZXJUZXh0Q29udGVudF9fO2Vsc2UgaWYoInNsb3QiPT09aS5sb2NhbE5hbWUpaWYodClpLl9fcG9seW1lclJlcGxhY2VkX189ZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiaGlkZGVuLXNsb3QiKSxZKFkoaSkucGFyZW50Tm9kZSkucmVwbGFjZUNoaWxkKGkuX19wb2x5bWVyUmVwbGFjZWRfXyxpKTtlbHNle2NvbnN0IHQ9aS5fX3BvbHltZXJSZXBsYWNlZF9fO3QmJlkoWSh0KS5wYXJlbnROb2RlKS5yZXBsYWNlQ2hpbGQoaSx0KX1lbHNlIGkuc3R5bGUmJih0PyhpLl9fcG9seW1lckRpc3BsYXlfXz1pLnN0eWxlLmRpc3BsYXksaS5zdHlsZS5kaXNwbGF5PSJub25lIik6aS5zdHlsZS5kaXNwbGF5PWkuX19wb2x5bWVyRGlzcGxheV9fKTtpLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fXz10LGkuX3Nob3dIaWRlQ2hpbGRyZW4mJmkuX3Nob3dIaWRlQ2hpbGRyZW4odCl9fWNsYXNzIEdyIGV4dGVuZHMgVXJ7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9jb25maWd1cmVQcm9wZXJ0aWVzKHQpLHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX19kYXRhSG9zdCk7bGV0IGU9W107dGhpcy5jaGlsZHJlbj1lO2ZvcihsZXQgdD10aGlzLnJvb3QuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyllLnB1c2godCksdC5fX3RlbXBsYXRpemVJbnN0YW5jZT10aGlzO3RoaXMuX190ZW1wbGF0aXplT3duZXImJnRoaXMuX190ZW1wbGF0aXplT3duZXIuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fJiZ0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCEwKTtsZXQgbj10aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnM7KHQmJm4uaW5zdGFuY2VQcm9wc3x8IW4uaW5zdGFuY2VQcm9wcykmJnRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1fY29uZmlndXJlUHJvcGVydGllcyh0KXtpZih0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMuZm9yd2FyZEhvc3RQcm9wKWZvcihsZXQgdCBpbiB0aGlzLl9faG9zdFByb3BzKXRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LHRoaXMuX19kYXRhSG9zdFsiX2hvc3RfIit0XSk7Zm9yKGxldCBlIGluIHQpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KGUsdFtlXSl9Zm9yd2FyZEhvc3RQcm9wKHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHQsZSwhMSwhMCkmJnRoaXMuX19kYXRhSG9zdC5fZW5xdWV1ZUNsaWVudCh0aGlzKX1fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbil7aWYodGhpcy5fbWV0aG9kSG9zdCYmdGhpcy5fX3RlbXBsYXRpemVPcHRpb25zLnBhcmVudE1vZGVsKXRoaXMuX21ldGhvZEhvc3QuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLCh0PT57dC5tb2RlbD10aGlzLG4odCl9KSk7ZWxzZXtsZXQgaT10aGlzLl9fZGF0YUhvc3QuX19kYXRhSG9zdDtpJiZpLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKX19X3Nob3dIaWRlQ2hpbGRyZW4odCl7anIodCx0aGlzLmNoaWxkcmVuKX1fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUodCxlLG4pe3QuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fJiZ0Lm5vZGVUeXBlPT1Ob2RlLlRFWFRfTk9ERSYmInRleHRDb250ZW50Ij09ZT90Ll9fcG9seW1lclRleHRDb250ZW50X189bjpzdXBlci5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUodCxlLG4pfWdldCBwYXJlbnRNb2RlbCgpe2xldCB0PXRoaXMuX19wYXJlbnRNb2RlbDtpZighdCl7bGV0IGU7dD10aGlzO2Rve3Q9dC5fX2RhdGFIb3N0Ll9fZGF0YUhvc3R9d2hpbGUoKGU9dC5fX3RlbXBsYXRpemVPcHRpb25zKSYmIWUucGFyZW50TW9kZWwpO3RoaXMuX19wYXJlbnRNb2RlbD10fXJldHVybiB0fWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuITB9fWNvbnN0IFdyPXpyKEdyKTtmdW5jdGlvbiBxcih0KXtsZXQgZT10Ll9fZGF0YUhvc3Q7cmV0dXJuIGUmJmUuX21ldGhvZEhvc3R8fGV9ZnVuY3Rpb24gWXIodCxlKXtyZXR1cm4gZnVuY3Rpb24gdChuLGkscil7ZS5jYWxsKG4uX190ZW1wbGF0aXplT3duZXIsaS5zdWJzdHJpbmcoIl9ob3N0XyIubGVuZ3RoKSxyW2ldKX19ZnVuY3Rpb24gWHIodCxlKXtyZXR1cm4gZnVuY3Rpb24gdChuLGkscil7ZS5jYWxsKG4uX190ZW1wbGF0aXplT3duZXIsbixpLHJbaV0pfX1mdW5jdGlvbiAkcih0LGUsbil7aWYoYiYmIXFyKHQpKXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7aWYobj1ufHx7fSx0Ll9fdGVtcGxhdGl6ZU93bmVyKXRocm93IG5ldyBFcnJvcigiQSA8dGVtcGxhdGU+IGNhbiBvbmx5IGJlIHRlbXBsYXRpemVkIG9uY2UiKTt0Ll9fdGVtcGxhdGl6ZU93bmVyPWU7bGV0IGk9KGU/ZS5jb25zdHJ1Y3RvcjpHcikuX3BhcnNlVGVtcGxhdGUodCkscj1pLnRlbXBsYXRpemVJbnN0YW5jZUNsYXNzO3J8fChyPShmdW5jdGlvbiBvKHQsZSxuKXtsZXQgaT1uLm11dGFibGVEYXRhP1dyOkdyOyRyLm1peGluJiYoaT0kci5taXhpbihpKSk7bGV0IHI9Y2xhc3MgZXh0ZW5kcyBpe307cmV0dXJuIHIucHJvdG90eXBlLl9fdGVtcGxhdGl6ZU9wdGlvbnM9bixyLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHQpLChmdW5jdGlvbiBvKHQsZSxuLGkpe2xldCByPW4uaG9zdFByb3BzfHx7fTtmb3IobGV0IGUgaW4gaS5pbnN0YW5jZVByb3BzKXtkZWxldGUgcltlXTtsZXQgbj1pLm5vdGlmeUluc3RhbmNlUHJvcDtuJiZ0LnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QoZSx0LnByb3RvdHlwZS5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMuTk9USUZZLHtmbjpYcigwLG4pfSl9aWYoaS5mb3J3YXJkSG9zdFByb3AmJmUuX19kYXRhSG9zdClmb3IobGV0IGUgaW4gciluLmhhc0hvc3RQcm9wc3x8KG4uaGFzSG9zdFByb3BzPSEwKSx0LnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QoZSx0LnByb3RvdHlwZS5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMuTk9USUZZLHtmbjpmdW5jdGlvbiB0KGUsbixpKXtlLl9fZGF0YUhvc3QuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCgiX2hvc3RfIituLGlbbl0sITAsITApfX0pfSkocix0LGUsbikscn0pKHQsaSxuKSxpLnRlbXBsYXRpemVJbnN0YW5jZUNsYXNzPXIpO2NvbnN0IGE9cXIodCk7IShmdW5jdGlvbiBzKHQsZSxuLGkpe2xldCByPW4uZm9yd2FyZEhvc3RQcm9wO2lmKHImJmUuaGFzSG9zdFByb3BzKXtjb25zdCBvPSJ0ZW1wbGF0ZSI9PXQubG9jYWxOYW1lO2xldCBhPWUudGVtcGxhdGl6ZVRlbXBsYXRlQ2xhc3M7aWYoIWEpe2lmKG8pe2xldCB0PW4ubXV0YWJsZURhdGE/VnI6RnI7Y2xhc3MgaSBleHRlbmRzIHR7fWE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1pfWVsc2V7Y29uc3Qgbj10LmNvbnN0cnVjdG9yO2NsYXNzIGkgZXh0ZW5kcyBue31hPWUudGVtcGxhdGl6ZVRlbXBsYXRlQ2xhc3M9aX1sZXQgcz1lLmhvc3RQcm9wcztmb3IobGV0IHQgaW4gcylhLnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QoIl9ob3N0XyIrdCxhLnByb3RvdHlwZS5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMuUFJPUEFHQVRFLHtmbjpZcigwLHIpfSksYS5wcm90b3R5cGUuX2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KCJfaG9zdF8iK3QpO1MmJmkmJihmdW5jdGlvbiBvKHQsZSxuKXtjb25zdCBpPW4uY29uc3RydWN0b3IuX3Byb3BlcnRpZXMse3Byb3BlcnR5RWZmZWN0czpyfT10LHtpbnN0YW5jZVByb3BzOm99PWU7Zm9yKGxldCB0IGluIHIpaWYoIShpW3RdfHxvJiZvW3RdKSl7Y29uc3QgZT1yW3RdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdHtwYXJ0Oml9PWVbbl0uaW5mbztpZighaS5zaWduYXR1cmV8fCFpLnNpZ25hdHVyZS5zdGF0aWMpe2NvbnNvbGUud2FybihgUHJvcGVydHkgJyR7dH0nIHVzZWQgaW4gdGVtcGxhdGUgYnV0IG5vdCBkZWNsYXJlZCBpbiAncHJvcGVydGllcyc7IGF0dHJpYnV0ZSB3aWxsIG5vdCBiZSBvYnNlcnZlZC5gKTticmVha319fX0pKGUsbixpKX1pZih0Ll9fZGF0YVByb3RvJiZPYmplY3QuYXNzaWduKHQuX19kYXRhLHQuX19kYXRhUHJvdG8pLG8pIShmdW5jdGlvbiBhKHQsZSl7QnI9dCxPYmplY3Quc2V0UHJvdG90eXBlT2YodCxlLnByb3RvdHlwZSksbmV3IGUsQnI9bnVsbH0pKHQsYSksdC5fX2RhdGFUZW1wPXt9LHQuX19kYXRhUGVuZGluZz1udWxsLHQuX19kYXRhT2xkPW51bGwsdC5fZW5hYmxlUHJvcGVydGllcygpO2Vsc2V7T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsYS5wcm90b3R5cGUpO2NvbnN0IG49ZS5ob3N0UHJvcHM7Zm9yKGxldCBlIGluIG4paWYoZT0iX2hvc3RfIitlLGUgaW4gdCl7Y29uc3Qgbj10W2VdO2RlbGV0ZSB0W2VdLHQuX19kYXRhW2VdPW59fX19KSh0LGksbixhKTtsZXQgbD1jbGFzcyBleHRlbmRzIHJ7fTtyZXR1cm4gbC5wcm90b3R5cGUuX21ldGhvZEhvc3Q9YSxsLnByb3RvdHlwZS5fX2RhdGFIb3N0PXQsbC5wcm90b3R5cGUuX190ZW1wbGF0aXplT3duZXI9ZSxsLnByb3RvdHlwZS5fX2hvc3RQcm9wcz1pLmhvc3RQcm9wcyxsPWwsbH1mdW5jdGlvbiBLcih0LGUpe2xldCBuO2Zvcig7ZTspaWYobj1lLl9fZGF0YUhvc3Q/ZTplLl9fdGVtcGxhdGl6ZUluc3RhbmNlKXtpZihuLl9fZGF0YUhvc3Q9PXQpcmV0dXJuIG47ZT1uLl9fZGF0YUhvc3R9ZWxzZSBlPVkoZSkucGFyZW50Tm9kZTtyZXR1cm4gbnVsbH0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBacj17dGVtcGxhdGl6ZSh0LGUpe3RoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGU9dCx0aGlzLmN0b3I9JHIodCx0aGlzLHttdXRhYmxlRGF0YTpCb29sZWFuKGUpLHBhcmVudE1vZGVsOnRoaXMuX3BhcmVudE1vZGVsLGluc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxmb3J3YXJkSG9zdFByb3A6dGhpcy5fZm9yd2FyZEhvc3RQcm9wVjIsbm90aWZ5SW5zdGFuY2VQcm9wOnRoaXMuX25vdGlmeUluc3RhbmNlUHJvcFYyfSl9LHN0YW1wKHQpe3JldHVybiBuZXcgdGhpcy5jdG9yKHQpfSxtb2RlbEZvckVsZW1lbnQodCl7cmV0dXJuIEtyKHRoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGUsdCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgSnI9ITE7ZnVuY3Rpb24gUXIoKXtpZih3JiYhbSl7aWYoIUpyKXtKcj0hMDtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7dC50ZXh0Q29udGVudD0iZG9tLWJpbmQsZG9tLWlmLGRvbS1yZXBlYXR7ZGlzcGxheTpub25lO30iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9cmV0dXJuITB9cmV0dXJuITF9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgdG89cGkoRHIoaGUoSFRNTEVsZW1lbnQpKSk7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJkb20tYmluZCIsY2xhc3MgZXh0ZW5kcyB0b3tzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsibXV0YWJsZS1kYXRhIl19Y29uc3RydWN0b3IoKXtpZihzdXBlcigpLGIpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogZG9tLWJpbmQgbm90IGFsbG93ZWQiKTt0aGlzLnJvb3Q9bnVsbCx0aGlzLiQ9bnVsbCx0aGlzLl9fY2hpbGRyZW49bnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7dGhpcy5tdXRhYmxlRGF0YT0hMH1jb25uZWN0ZWRDYWxsYmFjaygpe1FyKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLnJlbmRlcigpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX3JlbW92ZUNoaWxkcmVuKCl9X19pbnNlcnRDaGlsZHJlbigpe1koWSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUodGhpcy5yb290LHRoaXMpfV9fcmVtb3ZlQ2hpbGRyZW4oKXtpZih0aGlzLl9fY2hpbGRyZW4pZm9yKGxldCB0PTA7dDx0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fX2NoaWxkcmVuW3RdKX1yZW5kZXIoKXtsZXQgdDtpZighdGhpcy5fX2NoaWxkcmVuKXtpZih0PXR8fHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYodD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIiksIXQpdGhyb3cgbmV3IEVycm9yKCJkb20tYmluZCByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKTtlLmRpc2Nvbm5lY3QoKSx0aGlzLnJlbmRlcigpfSkpO3JldHVybiB2b2lkIGUub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KX10aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0KSx0aGlzLiQ9dGhpcy5yb290LiQsdGhpcy5fX2NoaWxkcmVuPVtdO2ZvcihsZXQgdD10aGlzLnJvb3QuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyl0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF09dDt0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKCl9dGhpcy5fX2luc2VydENoaWxkcmVuKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGVvPURyKHllKTtjbGFzcyBubyBleHRlbmRzIGVve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iZG9tLXJlcGVhdCJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In0saXRlbXNJbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbXNJbmRleCJ9LHNvcnQ6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fc29ydENoYW5nZWQifSxmaWx0ZXI6e3R5cGU6RnVuY3Rpb24sb2JzZXJ2ZXI6Il9fZmlsdGVyQ2hhbmdlZCJ9LG9ic2VydmU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfX29ic2VydmVDaGFuZ2VkIn0sZGVsYXk6TnVtYmVyLHJlbmRlcmVkSXRlbUNvdW50Ont0eXBlOk51bWJlcixub3RpZnk6IWsscmVhZE9ubHk6ITB9LGluaXRpYWxDb3VudDp7dHlwZTpOdW1iZXJ9LHRhcmdldEZyYW1lcmF0ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjB9LF90YXJnZXRGcmFtZVRpbWU6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKSJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufSxyZXVzZUNodW5rZWRJbnN0YW5jZXM6e3R5cGU6Qm9vbGVhbn19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2VzPVtdLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sdGhpcy5fX2NodW5rQ291bnQ9bnVsbCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPW51bGwsdGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSExLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9ITEsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ITEsdGhpcy5fX2NodW5raW5nSWQ9MCx0aGlzLl9fc29ydEZuPW51bGwsdGhpcy5fX2ZpbHRlckZuPW51bGwsdGhpcy5fX29ic2VydmVQYXRocz1udWxsLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2lzRGV0YWNoZWQ9ITAsdGhpcy50ZW1wbGF0ZT1udWxsfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9faXNEZXRhY2hlZD0hMDtmb3IobGV0IHQ9MDt0PHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO3QrKyl0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtpZihzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLFFyKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLl9faXNEZXRhY2hlZCl7dGhpcy5fX2lzRGV0YWNoZWQ9ITE7bGV0IHQ9WShZKHRoaXMpLnBhcmVudE5vZGUpO2ZvcihsZXQgZT0wO2U8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7ZSsrKXRoaXMuX19hdHRhY2hJbnN0YW5jZShlLHQpfX1fX2Vuc3VyZVRlbXBsYXRpemVkKCl7aWYoIXRoaXMuX19jdG9yKXtjb25zdCB0PXRoaXM7bGV0IGU9dGhpcy50ZW1wbGF0ZT10Ll90ZW1wbGF0ZUluZm8/dDp0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIWUpe2xldCB0PW5ldyBNdXRhdGlvbk9ic2VydmVyKCgoKT0+e2lmKCF0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIikpdGhyb3cgbmV3IEVycm9yKCJkb20tcmVwZWF0IHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO3QuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKX0pKTtyZXR1cm4gdC5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pLCExfWxldCBuPXt9O25bdGhpcy5hc109ITAsblt0aGlzLmluZGV4QXNdPSEwLG5bdGhpcy5pdGVtc0luZGV4QXNdPSEwLHRoaXMuX19jdG9yPSRyKGUsdGhpcyx7bXV0YWJsZURhdGE6dGhpcy5tdXRhYmxlRGF0YSxwYXJlbnRNb2RlbDohMCxpbnN0YW5jZVByb3BzOm4sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fX2luc3RhbmNlcztmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKylpLmZvcndhcmRIb3N0UHJvcCh0LGUpfSxub3RpZnlJbnN0YW5jZVByb3A6ZnVuY3Rpb24odCxlLG4pe2lmKFEodGhpcy5hcyxlKSl7bGV0IGk9dFt0aGlzLml0ZW1zSW5kZXhBc107ZT09dGhpcy5hcyYmKHRoaXMuaXRlbXNbaV09bik7bGV0IHI9Sih0aGlzLmFzLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWAsZSk7dGhpcy5ub3RpZnlQYXRoKHIsbil9fX0pfXJldHVybiEwfV9fZ2V0TWV0aG9kSG9zdCgpe3JldHVybiB0aGlzLl9fZGF0YUhvc3QuX21ldGhvZEhvc3R8fHRoaXMuX19kYXRhSG9zdH1fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtsZXQgZT10LG49dGhpcy5fX2dldE1ldGhvZEhvc3QoKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbltlXS5hcHBseShuLGFyZ3VtZW50cyl9fXJldHVybiB0fV9fc29ydENoYW5nZWQodCl7dGhpcy5fX3NvcnRGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19maWx0ZXJDaGFuZ2VkKHQpe3RoaXMuX19maWx0ZXJGbj10aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KSx0aGlzLml0ZW1zJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X19jb21wdXRlRnJhbWVUaW1lKHQpe3JldHVybiBNYXRoLmNlaWwoMWUzL3QpfV9fb2JzZXJ2ZUNoYW5nZWQoKXt0aGlzLl9fb2JzZXJ2ZVBhdGhzPXRoaXMub2JzZXJ2ZSYmdGhpcy5vYnNlcnZlLnJlcGxhY2UoIi4qIiwiLiIpLnNwbGl0KCIgIil9X19oYW5kbGVPYnNlcnZlZFBhdGhzKHQpe2lmKHRoaXMuX19zb3J0Rm58fHRoaXMuX19maWx0ZXJGbilpZih0KXtpZih0aGlzLl9fb2JzZXJ2ZVBhdGhzKXtsZXQgZT10aGlzLl9fb2JzZXJ2ZVBhdGhzO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKTA9PT10LmluZGV4T2YoZVtuXSkmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfX1lbHNlIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpfV9faXRlbXNDaGFuZ2VkKHQpe3RoaXMuaXRlbXMmJiFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpJiZjb25zb2xlLndhcm4oImRvbS1yZXBlYXQgZXhwZWN0ZWQgYXJyYXkgZm9yIGBpdGVtc2AsIGZvdW5kIix0aGlzLml0ZW1zKSx0aGlzLl9faGFuZGxlSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfHwoIml0ZW1zIj09PXQucGF0aCYmKHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMCksdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpKX1fX2RlYm91bmNlUmVuZGVyKHQsZT0wKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPVRuLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsZT4wP2d0LmFmdGVyKGUpOnZ0LHQuYmluZCh0aGlzKSksQW4odGhpcy5fX3JlbmRlckRlYm91bmNlcil9cmVuZGVyKCl7dGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpLERpKCl9X19yZW5kZXIoKXtpZighdGhpcy5fX2Vuc3VyZVRlbXBsYXRpemVkKCkpcmV0dXJuO2xldCB0PXRoaXMuaXRlbXN8fFtdO2NvbnN0IGU9dGhpcy5fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KSxuPXRoaXMuX19jYWxjdWxhdGVMaW1pdChlLmxlbmd0aCk7dGhpcy5fX3VwZGF0ZUluc3RhbmNlcyh0LG4sZSksdGhpcy5pbml0aWFsQ291bnQmJih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rfHx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZykmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fY2h1bmtpbmdJZCksdGhpcy5fX2NodW5raW5nSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5fX2NvbnRpbnVlQ2h1bmtpbmcoKSkpKSx0aGlzLl9zZXRSZW5kZXJlZEl0ZW1Db3VudCh0aGlzLl9faW5zdGFuY2VzLmxlbmd0aCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX1fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KXtsZXQgZT1uZXcgQXJyYXkodC5sZW5ndGgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWVbbl09bjtyZXR1cm4gdGhpcy5fX2ZpbHRlckZuJiYoZT1lLmZpbHRlcigoKGUsbixpKT0+dGhpcy5fX2ZpbHRlckZuKHRbZV0sbixpKSkpKSx0aGlzLl9fc29ydEZuJiZlLnNvcnQoKChlLG4pPT50aGlzLl9fc29ydEZuKHRbZV0sdFtuXSkpKSxlfV9fY2FsY3VsYXRlTGltaXQodCl7bGV0IGU9dDtjb25zdCBuPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2lmKHRoaXMuaW5pdGlhbENvdW50KXtsZXQgaTshdGhpcy5fX2NodW5rQ291bnR8fHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZCYmIXRoaXMucmV1c2VDaHVua2VkSW5zdGFuY2VzPyhlPU1hdGgubWluKHQsdGhpcy5pbml0aWFsQ291bnQpLGk9TWF0aC5tYXgoZS1uLDApLHRoaXMuX19jaHVua0NvdW50PWl8fDEpOihpPU1hdGgubWluKE1hdGgubWF4KHQtbiwwKSx0aGlzLl9fY2h1bmtDb3VudCksZT1NYXRoLm1pbihuK2ksdCkpLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9aT09PXRoaXMuX19jaHVua0NvdW50LHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nPWU8dCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPXBlcmZvcm1hbmNlLm5vdygpfXJldHVybiB0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEsZX1fX2NvbnRpbnVlQ2h1bmtpbmcoKXtpZih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rKXtjb25zdCB0PXBlcmZvcm1hbmNlLm5vdygpLXRoaXMuX19yZW5kZXJTdGFydFRpbWU7dGhpcy5fX2NodW5rQ291bnQ9TWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCoodGhpcy5fdGFyZ2V0RnJhbWVUaW1lL3QpKXx8MX10aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fdXBkYXRlSW5zdGFuY2VzKHQsZSxuKXtjb25zdCBpPXRoaXMuX19pdGVtc0lkeFRvSW5zdElkeD17fTtsZXQgcjtmb3Iocj0wO3I8ZTtyKyspe2xldCBlPXRoaXMuX19pbnN0YW5jZXNbcl0sbz1uW3JdLGE9dFtvXTtpW29dPXIsZT8oZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsYSksZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuaW5kZXhBcyxyKSxlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pdGVtc0luZGV4QXMsbyksZS5fZmx1c2hQcm9wZXJ0aWVzKCkpOnRoaXMuX19pbnNlcnRJbnN0YW5jZShhLHIsbyl9Zm9yKGxldCB0PXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoLTE7dD49cjt0LS0pdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKHQpfV9fZGV0YWNoSW5zdGFuY2UodCl7bGV0IGU9dGhpcy5fX2luc3RhbmNlc1t0XTtjb25zdCBuPVkoZS5yb290KTtmb3IobGV0IHQ9MDt0PGUuY2hpbGRyZW4ubGVuZ3RoO3QrKyluLmFwcGVuZENoaWxkKGUuY2hpbGRyZW5bdF0pO3JldHVybiBlfV9fYXR0YWNoSW5zdGFuY2UodCxlKXtlLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2VzW3RdLnJvb3QsdGhpcyl9X19kZXRhY2hBbmRSZW1vdmVJbnN0YW5jZSh0KXt0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCksdGhpcy5fX2luc3RhbmNlcy5zcGxpY2UodCwxKX1fX3N0YW1wSW5zdGFuY2UodCxlLG4pe2xldCBpPXt9O3JldHVybiBpW3RoaXMuYXNdPXQsaVt0aGlzLmluZGV4QXNdPWUsaVt0aGlzLml0ZW1zSW5kZXhBc109bixuZXcgdGhpcy5fX2N0b3IoaSl9X19pbnNlcnRJbnN0YW5jZSh0LGUsbil7Y29uc3QgaT10aGlzLl9fc3RhbXBJbnN0YW5jZSh0LGUsbik7bGV0IHI9dGhpcy5fX2luc3RhbmNlc1tlKzFdLG89cj9yLmNoaWxkcmVuWzBdOnRoaXM7cmV0dXJuIFkoWSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUoaS5yb290LG8pLHRoaXMuX19pbnN0YW5jZXNbZV09aSxpfV9zaG93SGlkZUNoaWxkcmVuKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7ZSsrKXRoaXMuX19pbnN0YW5jZXNbZV0uX3Nob3dIaWRlQ2hpbGRyZW4odCl9X19oYW5kbGVJdGVtUGF0aCh0LGUpe2xldCBuPXQuc2xpY2UoNiksaT1uLmluZGV4T2YoIi4iKSxyPWk8MD9uOm4uc3Vic3RyaW5nKDAsaSk7aWYocj09cGFyc2VJbnQociwxMCkpe2xldCB0PWk8MD8iIjpuLnN1YnN0cmluZyhpKzEpO3RoaXMuX19oYW5kbGVPYnNlcnZlZFBhdGhzKHQpO2xldCBvPXRoaXMuX19pbnN0YW5jZXNbdGhpcy5fX2l0ZW1zSWR4VG9JbnN0SWR4W3JdXTtyZXR1cm4gbyYmKG8uX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0aGlzLmFzKyh0PyIuIit0OiIiKSxlLCExLCEwKSxvLl9mbHVzaFByb3BlcnRpZXMoKSksITB9fWl0ZW1Gb3JFbGVtZW50KHQpe2xldCBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQpO3JldHVybiBlJiZlW3RoaXMuYXNdfWluZGV4Rm9yRWxlbWVudCh0KXtsZXQgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0KTtyZXR1cm4gZSYmZVt0aGlzLmluZGV4QXNdfW1vZGVsRm9yRWxlbWVudCh0KXtyZXR1cm4gS3IodGhpcy50ZW1wbGF0ZSx0KX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKG5vLmlzLG5vKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgaW8gZXh0ZW5kcyB5ZXtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuImRvbS1pZiJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpZjp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfX2RlYm91bmNlUmVuZGVyIn0scmVzdGFtcDp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfX2RlYm91bmNlUmVuZGVyIn0sbm90aWZ5RG9tQ2hhbmdlOnt0eXBlOkJvb2xlYW59fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fX3JlbmRlckRlYm91bmNlcj1udWxsLHRoaXMuX2xhc3RJZj0hMSx0aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fXz0hMX1fX2RlYm91bmNlUmVuZGVyKCl7dGhpcy5fX3JlbmRlckRlYm91bmNlcj1Ubi5kZWJvdW5jZSh0aGlzLl9fcmVuZGVyRGVib3VuY2VyLHZ0LCgoKT0+dGhpcy5fX3JlbmRlcigpKSksQW4odGhpcy5fX3JlbmRlckRlYm91bmNlcil9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO2NvbnN0IHQ9WSh0aGlzKS5wYXJlbnROb2RlO3QmJih0Lm5vZGVUeXBlIT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREV8fFkodCkuaG9zdCl8fHRoaXMuX190ZWFyZG93bkluc3RhbmNlKCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLFFyKCl8fCh0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSx0aGlzLmlmJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIoKX1fX2Vuc3VyZVRlbXBsYXRlKCl7aWYoIXRoaXMuX190ZW1wbGF0ZSl7Y29uc3QgdD10aGlzO2xldCBlPXQuX3RlbXBsYXRlSW5mbz90OlkodCkucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtpZighZSl7bGV0IHQ9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYoIVkodGhpcykucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSl0aHJvdyBuZXcgRXJyb3IoImRvbS1pZiByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKTt0LmRpc2Nvbm5lY3QoKSx0aGlzLl9fcmVuZGVyKCl9KSk7cmV0dXJuIHQub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KSwhMX10aGlzLl9fdGVtcGxhdGU9ZX1yZXR1cm4hMH1fX2Vuc3VyZUluc3RhbmNlKCl7bGV0IHQ9WSh0aGlzKS5wYXJlbnROb2RlO2lmKHRoaXMuX19oYXNJbnN0YW5jZSgpKXtsZXQgZT10aGlzLl9fZ2V0SW5zdGFuY2VOb2RlcygpO2lmKGUmJmUubGVuZ3RoJiZZKHRoaXMpLnByZXZpb3VzU2libGluZyE9PWVbZS5sZW5ndGgtMV0pZm9yKGxldCBuLGk9MDtpPGUubGVuZ3RoJiYobj1lW2ldKTtpKyspWSh0KS5pbnNlcnRCZWZvcmUobix0aGlzKX1lbHNle2lmKCF0KXJldHVybiExO2lmKCF0aGlzLl9fZW5zdXJlVGVtcGxhdGUoKSlyZXR1cm4hMTt0aGlzLl9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl9cmV0dXJuITB9cmVuZGVyKCl7RGkoKX1fX3JlbmRlcigpe2lmKHRoaXMuaWYpe2lmKCF0aGlzLl9fZW5zdXJlSW5zdGFuY2UoKSlyZXR1cm59ZWxzZSB0aGlzLnJlc3RhbXAmJnRoaXMuX190ZWFyZG93bkluc3RhbmNlKCk7dGhpcy5fc2hvd0hpZGVDaGlsZHJlbigpLGsmJiF0aGlzLm5vdGlmeURvbUNoYW5nZXx8dGhpcy5pZj09dGhpcy5fbGFzdElmfHwodGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSksdGhpcy5fbGFzdElmPXRoaXMuaWYpfV9faGFzSW5zdGFuY2UoKXt9X19nZXRJbnN0YW5jZU5vZGVzKCl7fV9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl7fV9fdGVhcmRvd25JbnN0YW5jZSgpe31fc2hvd0hpZGVDaGlsZHJlbigpe319Y29uc3Qgcm89QT9jbGFzcyBleHRlbmRzIGlve2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbH1fX2hhc0luc3RhbmNlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2luc3RhbmNlKX1fX2dldEluc3RhbmNlTm9kZXMoKXtyZXR1cm4gdGhpcy5fX2luc3RhbmNlLnRlbXBsYXRlSW5mby5jaGlsZE5vZGVzfV9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl7Y29uc3QgZT10aGlzLl9fZGF0YUhvc3R8fHRoaXM7aWYoYiYmIXRoaXMuX19kYXRhSG9zdCl0aHJvdyBuZXcgRXJyb3IoInN0cmljdFRlbXBsYXRlUG9saWN5OiB0ZW1wbGF0ZSBvd25lciBub3QgdHJ1c3RlZCIpO2NvbnN0IG49ZS5fYmluZFRlbXBsYXRlKHRoaXMuX190ZW1wbGF0ZSwhMCk7bi5ydW5FZmZlY3RzPSh0LGUsbik9PntsZXQgaT10aGlzLl9fc3luY0luZm87aWYodGhpcy5pZilpJiYodGhpcy5fX3N5bmNJbmZvPW51bGwsdGhpcy5fc2hvd0hpZGVDaGlsZHJlbigpLGU9T2JqZWN0LmFzc2lnbihpLmNoYW5nZWRQcm9wcyxlKSksdChlLG4pO2Vsc2UgaWYodGhpcy5fX2luc3RhbmNlKWlmKGl8fChpPXRoaXMuX19zeW5jSW5mbz17cnVuRWZmZWN0czp0LGNoYW5nZWRQcm9wczp7fX0pLG4pZm9yKGNvbnN0IHQgaW4gZSl7Y29uc3QgZT0kKHQpO2kuY2hhbmdlZFByb3BzW2VdPXRoaXMuX19kYXRhSG9zdFtlXX1lbHNlIE9iamVjdC5hc3NpZ24oaS5jaGFuZ2VkUHJvcHMsZSl9LHRoaXMuX19pbnN0YW5jZT1lLl9zdGFtcFRlbXBsYXRlKHRoaXMuX190ZW1wbGF0ZSxuKSxZKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2UsdGhpcyl9X19zeW5jSG9zdFByb3BlcnRpZXMoKXtjb25zdCB0PXRoaXMuX19zeW5jSW5mbzt0JiYodGhpcy5fX3N5bmNJbmZvPW51bGwsdC5ydW5FZmZlY3RzKHQuY2hhbmdlZFByb3BzLCExKSl9X190ZWFyZG93bkluc3RhbmNlKCl7dGhpcy5fX2luc3RhbmNlJiYoKHRoaXMuX19kYXRhSG9zdHx8dGhpcykuX3JlbW92ZUJvdW5kRG9tKHRoaXMuX19pbnN0YW5jZSksdGhpcy5fX2luc3RhbmNlPW51bGwsdGhpcy5fX3N5bmNJbmZvPW51bGwpfV9zaG93SGlkZUNoaWxkcmVuKCl7Y29uc3QgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsanIodCx0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXMpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fTpjbGFzcyBleHRlbmRzIGlve2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fY3Rvcj1udWxsLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19pbnZhbGlkUHJvcHM9bnVsbH1fX2hhc0luc3RhbmNlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2luc3RhbmNlKX1fX2dldEluc3RhbmNlTm9kZXMoKXtyZXR1cm4gdGhpcy5fX2luc3RhbmNlLmNoaWxkcmVufV9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl7dGhpcy5fX2N0b3J8fCh0aGlzLl9fY3Rvcj0kcih0aGlzLl9fdGVtcGxhdGUsdGhpcyx7bXV0YWJsZURhdGE6ITAsZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5fX2luc3RhbmNlJiYodGhpcy5pZj90aGlzLl9faW5zdGFuY2UuZm9yd2FyZEhvc3RQcm9wKHQsZSk6KHRoaXMuX19pbnZhbGlkUHJvcHM9dGhpcy5fX2ludmFsaWRQcm9wc3x8T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9faW52YWxpZFByb3BzWyQodCldPSEwKSl9fSkpLHRoaXMuX19pbnN0YW5jZT1uZXcgdGhpcy5fX2N0b3IsWSh0KS5pbnNlcnRCZWZvcmUodGhpcy5fX2luc3RhbmNlLnJvb3QsdGhpcyl9X190ZWFyZG93bkluc3RhbmNlKCl7aWYodGhpcy5fX2luc3RhbmNlKXtsZXQgdD10aGlzLl9faW5zdGFuY2UuY2hpbGRyZW47aWYodCYmdC5sZW5ndGgpe2xldCBlPVkodFswXSkucGFyZW50Tm9kZTtpZihlKXtlPVkoZSk7Zm9yKGxldCBuLGk9MDtpPHQubGVuZ3RoJiYobj10W2ldKTtpKyspZS5yZW1vdmVDaGlsZChuKX19dGhpcy5fX2ludmFsaWRQcm9wcz1udWxsLHRoaXMuX19pbnN0YW5jZT1udWxsfX1fX3N5bmNIb3N0UHJvcGVydGllcygpe2xldCB0PXRoaXMuX19pbnZhbGlkUHJvcHM7aWYodCl7dGhpcy5fX2ludmFsaWRQcm9wcz1udWxsO2ZvcihsZXQgZSBpbiB0KXRoaXMuX19pbnN0YW5jZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGUsdGhpcy5fX2RhdGFIb3N0W2VdKTt0aGlzLl9faW5zdGFuY2UuX2ZsdXNoUHJvcGVydGllcygpfX1fc2hvd0hpZGVDaGlsZHJlbigpe2NvbnN0IHQ9dGhpcy5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX198fCF0aGlzLmlmO3RoaXMuX19pbnN0YW5jZSYmQm9vbGVhbih0aGlzLl9faW5zdGFuY2UuX19oaWRkZW4pIT09dCYmKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbj10LHRoaXMuX19pbnN0YW5jZS5fc2hvd0hpZGVDaGlsZHJlbih0KSksdHx8dGhpcy5fX3N5bmNIb3N0UHJvcGVydGllcygpfX07Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHJvLmlzLHJvKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IG9vPUkoKHQ9PntsZXQgZT1tZSh0KTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sbXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2VsZWN0ZWQ6e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LHRvZ2dsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9fdXBkYXRlU2VsZWN0aW9uKG11bHRpLCBpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fbGFzdEl0ZW1zPW51bGwsdGhpcy5fX2xhc3RNdWx0aT1udWxsLHRoaXMuX19zZWxlY3RlZE1hcD1udWxsfV9fdXBkYXRlU2VsZWN0aW9uKHQsZSl7bGV0IG49ZS5wYXRoO2lmKG49PUpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKSl7bGV0IG49ZS5iYXNlfHxbXSxpPXRoaXMuX19sYXN0SXRlbXM7aWYodCE9PXRoaXMuX19sYXN0TXVsdGkmJnRoaXMuY2xlYXJTZWxlY3Rpb24oKSxpKXtsZXQgdD1JaShuLGkpO3RoaXMuX19hcHBseVNwbGljZXModCl9dGhpcy5fX2xhc3RJdGVtcz1uLHRoaXMuX19sYXN0TXVsdGk9dH1lbHNlIGlmKGUucGF0aD09YCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpfS5zcGxpY2VzYCl0aGlzLl9fYXBwbHlTcGxpY2VzKGUudmFsdWUuaW5kZXhTcGxpY2VzKTtlbHNle2xldCB0PW4uc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpfS5gLmxlbmd0aCksZT1wYXJzZUludCh0LDEwKTt0LmluZGV4T2YoIi4iKTwwJiZ0PT1lJiZ0aGlzLl9fZGVzZWxlY3RDaGFuZ2VkSWR4KGUpfX1fX2FwcGx5U3BsaWNlcyh0KXtsZXQgZT10aGlzLl9fc2VsZWN0ZWRNYXA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl07ZS5mb3JFYWNoKCgodCxuKT0+e3Q8aS5pbmRleHx8ZS5zZXQobix0Pj1pLmluZGV4K2kucmVtb3ZlZC5sZW5ndGg/dCtpLmFkZGVkQ291bnQtaS5yZW1vdmVkLmxlbmd0aDotMSl9KSk7Zm9yKGxldCB0PTA7dDxpLmFkZGVkQ291bnQ7dCsrKXtsZXQgbj1pLmluZGV4K3Q7ZS5oYXModGhpcy5pdGVtc1tuXSkmJmUuc2V0KHRoaXMuaXRlbXNbbl0sbil9fXRoaXMuX191cGRhdGVMaW5rcygpO2xldCBuPTA7ZS5mb3JFYWNoKCgodCxpKT0+e3Q8MD8odGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbiwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsZS5kZWxldGUoaSkpOm4rK30pKX1fX3VwZGF0ZUxpbmtzKCl7aWYodGhpcy5fX2RhdGFMaW5rZWRQYXRocz17fSx0aGlzLm11bHRpKXtsZXQgdD0wO3RoaXMuX19zZWxlY3RlZE1hcC5mb3JFYWNoKChlPT57ZT49MCYmdGhpcy5saW5rUGF0aHMoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpfS4ke2V9YCxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyl9LiR7dCsrfWApfSkpfWVsc2UgdGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKHQ9Pnt0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpfS4ke3R9YCksdGhpcy5saW5rUGF0aHMoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWRJdGVtIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gKX0pKX1jbGVhclNlbGVjdGlvbigpe3RoaXMuX19kYXRhTGlua2VkUGF0aHM9e30sdGhpcy5fX3NlbGVjdGVkTWFwPW5ldyBNYXAsdGhpcy5zZWxlY3RlZD10aGlzLm11bHRpP1tdOm51bGwsdGhpcy5zZWxlY3RlZEl0ZW09bnVsbH1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLl9fc2VsZWN0ZWRNYXAuaGFzKHQpfWlzSW5kZXhTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5pc1NlbGVjdGVkKHRoaXMuaXRlbXNbdF0pfV9fZGVzZWxlY3RDaGFuZ2VkSWR4KHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZEluZGV4Rm9ySXRlbUluZGV4KHQpO2lmKGU+PTApe2xldCB0PTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKChuLGkpPT57ZT09dCsrJiZ0aGlzLmRlc2VsZWN0KGkpfSkpfX1fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgodCl7bGV0IGU9dGhpcy5fX2RhdGFMaW5rZWRQYXRoc1tgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gXTtpZihlKXJldHVybiBwYXJzZUludChlLnNsaWNlKGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKX0uYC5sZW5ndGgpLDEwKX1kZXNlbGVjdCh0KXtsZXQgZT10aGlzLl9fc2VsZWN0ZWRNYXAuZ2V0KHQpO2lmKGU+PTApe2xldCBuO3RoaXMuX19zZWxlY3RlZE1hcC5kZWxldGUodCksdGhpcy5tdWx0aSYmKG49dGhpcy5fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgoZSkpLHRoaXMuX191cGRhdGVMaW5rcygpLHRoaXMubXVsdGk/dGhpcy5zcGxpY2UoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpLG4sMSk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1udWxsfX1kZXNlbGVjdEluZGV4KHQpe3RoaXMuZGVzZWxlY3QodGhpcy5pdGVtc1t0XSl9c2VsZWN0KHQpe3RoaXMuc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKHQpKX1zZWxlY3RJbmRleCh0KXtsZXQgZT10aGlzLml0ZW1zW3RdO3RoaXMuaXNTZWxlY3RlZChlKT90aGlzLnRvZ2dsZSYmdGhpcy5kZXNlbGVjdEluZGV4KHQpOih0aGlzLm11bHRpfHx0aGlzLl9fc2VsZWN0ZWRNYXAuY2xlYXIoKSx0aGlzLl9fc2VsZWN0ZWRNYXAuc2V0KGUsdCksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnB1c2goSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpLGUpOnRoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEl0ZW09ZSl9fX0pKSh5ZSk7Y2xhc3MgYW8gZXh0ZW5kcyBvb3tzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuImFycmF5LXNlbGVjdG9yIn1zdGF0aWMgZ2V0IHRlbXBsYXRlKCl7cmV0dXJuIG51bGx9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShhby5pcyxhbyk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNvPW5ldyBTbjt3aW5kb3cuU2hhZHlDU1N8fCh3aW5kb3cuU2hhZHlDU1M9e3ByZXBhcmVUZW1wbGF0ZSh0LGUsbil7fSxwcmVwYXJlVGVtcGxhdGVEb20odCxlKXt9LHByZXBhcmVUZW1wbGF0ZVN0eWxlcyh0LGUsbil7fSxzdHlsZVN1YnRyZWUodCxlKXtzby5wcm9jZXNzU3R5bGVzKCksUWUodCxlKX0sc3R5bGVFbGVtZW50KHQpe3NvLnByb2Nlc3NTdHlsZXMoKX0sc3R5bGVEb2N1bWVudCh0KXtzby5wcm9jZXNzU3R5bGVzKCksUWUoZG9jdW1lbnQuYm9keSx0KX0sZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlOih0LGUpPT50bih0LGUpLGZsdXNoQ3VzdG9tU3R5bGVzKCl7fSxuYXRpdmVDc3M6a2UsbmF0aXZlU2hhZG93Ok1lLGNzc0J1aWxkOlRlLGRpc2FibGVSdW50aW1lOkFlfSksd2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlPXNvOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBsbz0iaW5jbHVkZSIsY289d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlO2NsYXNzIHVvIGV4dGVuZHMgSFRNTEVsZW1lbnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX3N0eWxlPW51bGwsY28uYWRkQ3VzdG9tU3R5bGUodGhpcyl9Z2V0U3R5bGUoKXtpZih0aGlzLl9zdHlsZSlyZXR1cm4gdGhpcy5fc3R5bGU7Y29uc3QgdD10aGlzLnF1ZXJ5U2VsZWN0b3IoInN0eWxlIik7aWYoIXQpcmV0dXJuIG51bGw7dGhpcy5fc3R5bGU9dDtjb25zdCBlPXQuZ2V0QXR0cmlidXRlKGxvKTtyZXR1cm4gZSYmKHQucmVtb3ZlQXR0cmlidXRlKGxvKSx0LnRleHRDb250ZW50PShmdW5jdGlvbiBuKHQpe2xldCBlPXQudHJpbSgpLnNwbGl0KC9ccysvKSxuPSIiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4rPXEoZVt0XSk7cmV0dXJuIG59KShlKSt0LnRleHRDb250ZW50KSx0aGlzLm93bmVyRG9jdW1lbnQhPT13aW5kb3cuZG9jdW1lbnQmJndpbmRvdy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMpLHRoaXMuX3N0eWxlfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KbGV0IGhvO3dpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoImN1c3RvbS1zdHlsZSIsdW8pLGhvPXpyLl9tdXRhYmxlUHJvcGVydHlDaGFuZ2U7Y29uc3QgcG89e3Byb3BlcnRpZXM6e211dGFibGVEYXRhOkJvb2xlYW59LF9zaG91bGRQcm9wZXJ0eUNoYW5nZSh0LGUsbil7cmV0dXJuIGhvKHRoaXMsdCxlLG4sdGhpcy5tdXRhYmxlRGF0YSl9fSxmbz1lcihIVE1MRWxlbWVudCkucHJvdG90eXBlOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIG1vPW5ldyBTZXQ7Y29uc3QgZ289e3Byb3BlcnRpZXM6e19wYXJlbnRSZXNpemFibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfcGFyZW50UmVzaXphYmxlQ2hhbmdlZCJ9LF9ub3RpZnlpbmdEZXNjZW5kYW50Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6eyJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiOiJfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXM9W10sdGhpcy5fYm91bmROb3RpZnlSZXNpemU9dGhpcy5ub3RpZnlSZXNpemUuYmluZCh0aGlzKSx0aGlzLl9ib3VuZE9uRGVzY2VuZGFudElyb25SZXNpemU9dGhpcy5fb25EZXNjZW5kYW50SXJvblJlc2l6ZS5iaW5kKHRoaXMpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3JlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcGFyZW50UmVzaXphYmxlP3RoaXMuX3BhcmVudFJlc2l6YWJsZS5zdG9wUmVzaXplTm90aWZpY2F0aW9uc0Zvcih0aGlzKToobW8uZGVsZXRlKHRoaXMpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKSksdGhpcy5fcGFyZW50UmVzaXphYmxlPW51bGx9LG5vdGlmeVJlc2l6ZTpmdW5jdGlvbigpe3RoaXMuaXNBdHRhY2hlZCYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3RoaXMucmVzaXplclNob3VsZE5vdGlmeSh0KSYmdGhpcy5fbm90aWZ5RGVzY2VuZGFudCh0KX0pLHRoaXMpLHRoaXMuX2ZpcmVSZXNpemUoKSl9LGFzc2lnblBhcmVudFJlc2l6YWJsZTpmdW5jdGlvbih0KXt0aGlzLl9wYXJlbnRSZXNpemFibGUmJnRoaXMuX3BhcmVudFJlc2l6YWJsZS5zdG9wUmVzaXplTm90aWZpY2F0aW9uc0Zvcih0aGlzKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9dCx0JiYtMT09PXQuX2ludGVyZXN0ZWRSZXNpemFibGVzLmluZGV4T2YodGhpcykmJih0Ll9pbnRlcmVzdGVkUmVzaXphYmxlcy5wdXNoKHRoaXMpLHQuX3N1YnNjcmliZUlyb25SZXNpemUodGhpcykpfSxzdG9wUmVzaXplTm90aWZpY2F0aW9uc0ZvcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5pbmRleE9mKHQpO2U+LTEmJih0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5zcGxpY2UoZSwxKSx0aGlzLl91bnN1YnNjcmliZUlyb25SZXNpemUodCkpfSxfc3Vic2NyaWJlSXJvblJlc2l6ZTpmdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImlyb24tcmVzaXplIix0aGlzLl9ib3VuZE9uRGVzY2VuZGFudElyb25SZXNpemUpfSxfdW5zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LHJlc2l6ZXJTaG91bGROb3RpZnk6ZnVuY3Rpb24odCl7cmV0dXJuITB9LF9vbkRlc2NlbmRhbnRJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3RoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ/dC5zdG9wUHJvcGFnYXRpb24oKTptfHx0aGlzLl9maXJlUmVzaXplKCl9LF9maXJlUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJpcm9uLXJlc2l6ZSIsbnVsbCx7bm9kZTp0aGlzLGJ1YmJsZXM6ITF9KX0sX29uSXJvblJlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPVlpKHQpLnJvb3RUYXJnZXQ7ZSE9PXRoaXMmJihlLmFzc2lnblBhcmVudFJlc2l6YWJsZSh0aGlzKSx0aGlzLl9ub3RpZnlEZXNjZW5kYW50KGUpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfSxfcGFyZW50UmVzaXphYmxlQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSl9LF9ub3RpZnlEZXNjZW5kYW50OmZ1bmN0aW9uKHQpe3RoaXMuaXNBdHRhY2hlZCYmKHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ9ITAsdC5ub3RpZnlSZXNpemUoKSx0aGlzLl9ub3RpZnlpbmdEZXNjZW5kYW50PSExKX0sX3JlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0F0dGFjaGVkKWlmKCJsb2FkaW5nIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpe3ZhciB0PXRoaXMuX3JlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zLmJpbmQodGhpcyk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixlKSx0KCl9KSl9ZWxzZSB0aGlzLl9maW5kUGFyZW50KCksdGhpcy5fcGFyZW50UmVzaXphYmxlP3RoaXMuX3BhcmVudFJlc2l6YWJsZS5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dCE9PXRoaXMmJnQuX2ZpbmRQYXJlbnQoKX0pLHRoaXMpOihtby5mb3JFYWNoKChmdW5jdGlvbih0KXt0IT09dGhpcyYmdC5fZmluZFBhcmVudCgpfSksdGhpcyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpLHRoaXMubm90aWZ5UmVzaXplKCkpfSxfZmluZFBhcmVudDpmdW5jdGlvbigpe3RoaXMuYXNzaWduUGFyZW50UmVzaXphYmxlKG51bGwpLHRoaXMuZmlyZSgiaXJvbi1yZXF1ZXN0LXJlc2l6ZS1ub3RpZmljYXRpb25zIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSksdGhpcy5fcGFyZW50UmVzaXphYmxlP21vLmRlbGV0ZSh0aGlzKTptby5hZGQodGhpcyl9fTt2YXIgX289T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsSXJvblJlc2l6YWJsZUJlaGF2aW9yOmdvfSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL1JyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICAvKiBTYWZhcmkgMTAgbmVlZHMgdGhpcyBwcm9wZXJ0eSBwcmVmaXhlZCB0byBjb3JyZWN0bHkgYXBwbHkgdGhlIGN1c3RvbSBwcm9wZXJ0eSAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0taXJvbi1jb2xsYXBzZS10cmFuc2l0aW9uLWR1cmF0aW9uLCAzMDBtcyk7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5pcm9uLWNvbGxhcHNlLWNsb3NlZCkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoLmlyb24tY29sbGFwc2Utb3BlbmVkKSkgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLWNvbGxhcHNlIixiZWhhdmlvcnM6W2dvXSxwcm9wZXJ0aWVzOntob3Jpem9udGFsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob3Jpem9udGFsQ2hhbmdlZCJ9LG9wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSx0cmFuc2l0aW9uaW5nOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSxub0FuaW1hdGlvbjp7dHlwZTpCb29sZWFufSxfZGVzaXJlZFNpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sZ2V0IGRpbWVuc2lvbigpe3JldHVybiB0aGlzLmhvcml6b250YWw/IndpZHRoIjoiaGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXgoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXhXaWR0aCI6Im1heEhlaWdodCJ9LGdldCBfZGltZW5zaW9uTWF4Q3NzKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8ibWF4LXdpZHRoIjoibWF4LWhlaWdodCJ9LGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJncm91cCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LGxpc3RlbmVyczp7dHJhbnNpdGlvbmVuZDoiX29uVHJhbnNpdGlvbkVuZCJ9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH0sc2hvdzpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSEwfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITF9LHVwZGF0ZVNpemU6ZnVuY3Rpb24odCxlKXt0PSJhdXRvIj09PXQ/IiI6dDt2YXIgbj1lJiYhdGhpcy5ub0FuaW1hdGlvbiYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9kZXNpcmVkU2l6ZSE9PXQ7aWYodGhpcy5fZGVzaXJlZFNpemU9dCx0aGlzLl91cGRhdGVUcmFuc2l0aW9uKCExKSxuKXt2YXIgaT10aGlzLl9jYWxjU2l6ZSgpOyIiPT09dCYmKHRoaXMuc3R5bGVbdGhpcy5fZGltZW5zaW9uTWF4XT0iIix0PXRoaXMuX2NhbGNTaXplKCkpLHRoaXMuc3R5bGVbdGhpcy5fZGltZW5zaW9uTWF4XT1pLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITApLG49dCE9PWl9dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXQsbnx8dGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxlbmFibGVUcmFuc2l0aW9uOmZ1bmN0aW9uKHQpe2ZvLl93YXJuKCJgZW5hYmxlVHJhbnNpdGlvbigpYCBpcyBkZXByZWNhdGVkLCB1c2UgYG5vQW5pbWF0aW9uYCBpbnN0ZWFkLiIpLHRoaXMubm9BbmltYXRpb249IXR9LF91cGRhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPXQmJiF0aGlzLm5vQW5pbWF0aW9uPyIiOiIwcyJ9LF9ob3Jpem9udGFsQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUudHJhbnNpdGlvblByb3BlcnR5PXRoaXMuX2RpbWVuc2lvbk1heENzcyx0aGlzLnN0eWxlWyJtYXhXaWR0aCI9PT10aGlzLl9kaW1lbnNpb25NYXg/Im1heEhlaWdodCI6Im1heFdpZHRoIl09IiIsdGhpcy51cGRhdGVTaXplKHRoaXMub3BlbmVkPyJhdXRvIjoiMHB4IiwhMSl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwhdGhpcy5vcGVuZWQpLHRoaXMuX3NldFRyYW5zaXRpb25pbmcoITApLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhMSksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1vcGVuZWQiLCExKSx0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCEwKSx0aGlzLm9wZW5lZCYmdGhpcy5mb2N1cygpfSxfdHJhbnNpdGlvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3R5bGVbdGhpcy5fZGltZW5zaW9uTWF4XT10aGlzLl9kZXNpcmVkU2l6ZSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLWNsb3NlZCIsIXRoaXMub3BlbmVkKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsdGhpcy5vcGVuZWQpLHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITEpLHRoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMSl9LF9vblRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7WWkodCkucm9vdFRhcmdldD09PXRoaXMmJnRoaXMuX3RyYW5zaXRpb25FbmQoKX0sX2NhbGNTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbdGhpcy5kaW1lbnNpb25dKyJweCJ9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB5bz1fZWAKLyogTW9zdCBjb21tb24gdXNlZCBmbGV4IHN0eWxlcyovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmxheW91dC5ob3Jpem9udGFsLAogICAgICAubGF5b3V0LnZlcnRpY2FsIHsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmxheW91dC5pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CgogICAgICAubGF5b3V0LnZlcnRpY2FsIHsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLmxheW91dC53cmFwIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQoKICAgICAgLmxheW91dC5uby13cmFwIHsKICAgICAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXIsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuZmxleCB7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAwLjAwMDAwMDAwMXB4OwogICAgICAgIC13ZWJraXQtZmxleDogMTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIC13ZWJraXQtZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgICBmbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICB9CgogICAgICAuZmxleC1hdXRvIHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfQoKICAgICAgLmZsZXgtbm9uZSB7CiAgICAgICAgLW1zLWZsZXg6IG5vbmU7CiAgICAgICAgLXdlYmtpdC1mbGV4OiBub25lOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgovKiBCYXNpYyBmbGV4Ym94IHJldmVyc2Ugc3R5bGVzICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtcmV2ZXJzZSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSwKICAgICAgLmxheW91dC52ZXJ0aWNhbC1yZXZlcnNlIHsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmxheW91dC5ob3Jpem9udGFsLXJldmVyc2UgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICB9CgogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgovKiBGbGV4Ym94IGFsaWdubWVudCAqLwo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1mbGV4LWFsaWdubWVudCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAvKioKICAgICAgICogQWxpZ25tZW50IGluIGNyb3NzIGF4aXMuCiAgICAgICAqLwogICAgICAubGF5b3V0LnN0YXJ0IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXIsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxheW91dC5lbmQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAubGF5b3V0LmJhc2VsaW5lIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmU7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQWxpZ25tZW50IGluIG1haW4gYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuY2VudGVyLWp1c3RpZmllZCwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxheW91dC5lbmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWp1c3RpZmllZCB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9CgogICAgICAubGF5b3V0Lmp1c3RpZmllZCB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTZWxmIGFsaWdubWVudC4KICAgICAgICovCiAgICAgIC5zZWxmLXN0YXJ0IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLnNlbGYtY2VudGVyIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLnNlbGYtZW5kIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLnNlbGYtc3RyZXRjaCB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgIH0KCiAgICAgIC5zZWxmLWJhc2VsaW5lIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogYmFzZWxpbmU7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIG11bHRpLWxpbmUgYWxpZ25tZW50IGluIG1haW4gYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQtYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5lbmQtYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuY2VudGVyLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmJldHdlZW4tYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAubGF5b3V0LmFyb3VuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgovKiBOb24tZmxleGJveCBwb3NpdGlvbmluZyBoZWxwZXIgc3R5bGVzICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtZmFjdG9ycyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAuZmxleCwKICAgICAgLmZsZXgtMSB7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAwLjAwMDAwMDAwMXB4OwogICAgICAgIC13ZWJraXQtZmxleDogMTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIC13ZWJraXQtZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgICBmbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICB9CgogICAgICAuZmxleC0yIHsKICAgICAgICAtbXMtZmxleDogMjsKICAgICAgICAtd2Via2l0LWZsZXg6IDI7CiAgICAgICAgZmxleDogMjsKICAgICAgfQoKICAgICAgLmZsZXgtMyB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH0KCiAgICAgIC5mbGV4LTQgewogICAgICAgIC1tcy1mbGV4OiA0OwogICAgICAgIC13ZWJraXQtZmxleDogNDsKICAgICAgICBmbGV4OiA0OwogICAgICB9CgogICAgICAuZmxleC01IHsKICAgICAgICAtbXMtZmxleDogNTsKICAgICAgICAtd2Via2l0LWZsZXg6IDU7CiAgICAgICAgZmxleDogNTsKICAgICAgfQoKICAgICAgLmZsZXgtNiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH0KCiAgICAgIC5mbGV4LTcgewogICAgICAgIC1tcy1mbGV4OiA3OwogICAgICAgIC13ZWJraXQtZmxleDogNzsKICAgICAgICBmbGV4OiA3OwogICAgICB9CgogICAgICAuZmxleC04IHsKICAgICAgICAtbXMtZmxleDogODsKICAgICAgICAtd2Via2l0LWZsZXg6IDg7CiAgICAgICAgZmxleDogODsKICAgICAgfQoKICAgICAgLmZsZXgtOSB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH0KCiAgICAgIC5mbGV4LTEwIHsKICAgICAgICAtbXMtZmxleDogMTA7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMDsKICAgICAgICBmbGV4OiAxMDsKICAgICAgfQoKICAgICAgLmZsZXgtMTEgewogICAgICAgIC1tcy1mbGV4OiAxMTsKICAgICAgICAtd2Via2l0LWZsZXg6IDExOwogICAgICAgIGZsZXg6IDExOwogICAgICB9CgogICAgICAuZmxleC0xMiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1wb3NpdGlvbmluZyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAuYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaW52aXNpYmxlIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnJlbGF0aXZlIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIGJvZHkuZnVsbGJsZWVkIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfQoKICAgICAgLnNjcm9sbCB7CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICAvKiBmaXhlZCBwb3NpdGlvbiAqLwogICAgICAuZml4ZWQtYm90dG9tLAogICAgICAuZml4ZWQtbGVmdCwKICAgICAgLmZpeGVkLXJpZ2h0LAogICAgICAuZml4ZWQtdG9wIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIH0KCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9CgogICAgICAuZml4ZWQtcmlnaHQgewogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1ib3R0b20gewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAuZml4ZWQtbGVmdCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KYDt5by5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHlvLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3Qgdm89X2VgCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgW2hpZGRlbl0gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAtLWxheW91dDogewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW5saW5lOiB7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1ob3Jpem9udGFsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTogewogICAgICAgIEBhcHBseSAtLWxheW91dDsKCiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC12ZXJ0aWNhbDogewogICAgICAgIEBhcHBseSAtLWxheW91dDsKCiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH07CgogICAgICAtLWxheW91dC12ZXJ0aWNhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXdyYXA6IHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXdyYXAtcmV2ZXJzZTogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC1hdXRvOiB7CiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvOwogICAgICAgIC13ZWJraXQtZmxleDogMSAxIGF1dG87CiAgICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LW5vbmU6IHsKICAgICAgICAtbXMtZmxleDogbm9uZTsKICAgICAgICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXg6IHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTI6IHsKICAgICAgICAtbXMtZmxleDogMjsKICAgICAgICAtd2Via2l0LWZsZXg6IDI7CiAgICAgICAgZmxleDogMjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMzogewogICAgICAgIC1tcy1mbGV4OiAzOwogICAgICAgIC13ZWJraXQtZmxleDogMzsKICAgICAgICBmbGV4OiAzOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC00OiB7CiAgICAgICAgLW1zLWZsZXg6IDQ7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA0OwogICAgICAgIGZsZXg6IDQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTU6IHsKICAgICAgICAtbXMtZmxleDogNTsKICAgICAgICAtd2Via2l0LWZsZXg6IDU7CiAgICAgICAgZmxleDogNTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNjogewogICAgICAgIC1tcy1mbGV4OiA2OwogICAgICAgIC13ZWJraXQtZmxleDogNjsKICAgICAgICBmbGV4OiA2OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC03OiB7CiAgICAgICAgLW1zLWZsZXg6IDc7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA3OwogICAgICAgIGZsZXg6IDc7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTg6IHsKICAgICAgICAtbXMtZmxleDogODsKICAgICAgICAtd2Via2l0LWZsZXg6IDg7CiAgICAgICAgZmxleDogODsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtOTogewogICAgICAgIC1tcy1mbGV4OiA5OwogICAgICAgIC13ZWJraXQtZmxleDogOTsKICAgICAgICBmbGV4OiA5OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0xMDogewogICAgICAgIC1tcy1mbGV4OiAxMDsKICAgICAgICAtd2Via2l0LWZsZXg6IDEwOwogICAgICAgIGZsZXg6IDEwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0xMTogewogICAgICAgIC1tcy1mbGV4OiAxMTsKICAgICAgICAtd2Via2l0LWZsZXg6IDExOwogICAgICAgIGZsZXg6IDExOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0xMjogewogICAgICAgIC1tcy1mbGV4OiAxMjsKICAgICAgICAtd2Via2l0LWZsZXg6IDEyOwogICAgICAgIGZsZXg6IDEyOwogICAgICB9OwoKICAgICAgLyogYWxpZ25tZW50IGluIGNyb3NzIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0OiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXI6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZW5kOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1iYXNlbGluZTogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGU7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjogewogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ7CiAgICAgIH07CgogICAgICAvKiBzZWxmIGFsaWdubWVudCAqLwoKICAgICAgLS1sYXlvdXQtc2VsZi1zdGFydDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1jZW50ZXI6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtZW5kOiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLXN0cmV0Y2g6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtYmFzZWxpbmU6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogYmFzZWxpbmU7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIG11bHRpLWxpbmUgYWxpZ25tZW50IGluIG1haW4gYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQtYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQtYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtY2VudGVyLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJldHdlZW4tYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWFyb3VuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgICAgICAgICAgIE90aGVyIExheW91dAogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKICAgICAgLS1sYXlvdXQtYmxvY2s6IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWludmlzaWJsZTogewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtcmVsYXRpdmU6IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXQ6IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2Nyb2xsOiB7CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZnVsbGJsZWVkOiB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgIH07CgogICAgICAvKiBmaXhlZCBwb3NpdGlvbiAqLwoKICAgICAgLS1sYXlvdXQtZml4ZWQtdG9wOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtcmlnaHQ6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpeGVkLWJvdHRvbTogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpeGVkLWxlZnQ6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO3ZvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodm8uY29udGVudCk7dmFyIGJvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Ym8udGV4dENvbnRlbnQ9IltoaWRkZW5dIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Iixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGJvKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIHhve2NvbnN0cnVjdG9yKHQpe3hvWyIgIl0odCksdGhpcy50eXBlPXQmJnQudHlwZXx8ImRlZmF1bHQiLHRoaXMua2V5PXQmJnQua2V5LHQmJiJ2YWx1ZSJpbiB0JiYodGhpcy52YWx1ZT10LnZhbHVlKX1nZXQgdmFsdWUoKXt2YXIgdD10aGlzLnR5cGUsZT10aGlzLmtleTtpZih0JiZlKXJldHVybiB4by50eXBlc1t0XSYmeG8udHlwZXNbdF1bZV19c2V0IHZhbHVlKHQpe3ZhciBlPXRoaXMudHlwZSxuPXRoaXMua2V5O2UmJm4mJihlPXhvLnR5cGVzW2VdPXhvLnR5cGVzW2VdfHx7fSxudWxsPT10P2RlbGV0ZSBlW25dOmVbbl09dCl9Z2V0IGxpc3QoKXtpZih0aGlzLnR5cGUpe3ZhciB0PXhvLnR5cGVzW3RoaXMudHlwZV07cmV0dXJuIHQ/T2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gd29bdGhpcy50eXBlXVt0XX0pLHRoaXMpOltdfX1ieUtleSh0KXtyZXR1cm4gdGhpcy5rZXk9dCx0aGlzLnZhbHVlfX14b1siICJdPWZ1bmN0aW9uKCl7fSx4by50eXBlcz17fTt2YXIgd289eG8udHlwZXM7UnIoe2lzOiJpcm9uLW1ldGEiLHByb3BlcnRpZXM6e3R5cGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJkZWZhdWx0In0sa2V5Ont0eXBlOlN0cmluZ30sdmFsdWU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZjp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfc2VsZkNoYW5nZWQifSxfX21ldGE6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX19jb21wdXRlTWV0YSh0eXBlLCBrZXksIHZhbHVlKSJ9fSxob3N0QXR0cmlidXRlczp7aGlkZGVuOiEwfSxfX2NvbXB1dGVNZXRhOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uZXcgeG8oe3R5cGU6dCxrZXk6ZX0pO3JldHVybiB2b2lkIDAhPT1uJiZuIT09aS52YWx1ZT9pLnZhbHVlPW46dGhpcy52YWx1ZSE9PWkudmFsdWUmJih0aGlzLnZhbHVlPWkudmFsdWUpLGl9LGdldCBsaXN0KCl7cmV0dXJuIHRoaXMuX19tZXRhJiZ0aGlzLl9fbWV0YS5saXN0fSxfc2VsZkNoYW5nZWQ6ZnVuY3Rpb24odCl7dCYmKHRoaXMudmFsdWU9dGhpcyl9LGJ5S2V5OmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeG8oe3R5cGU6dGhpcy50eXBlLGtleTp0fSkudmFsdWV9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CgogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIGZpbGw6IHZhcigtLWlyb24taWNvbi1maWxsLWNvbG9yLCBjdXJyZW50Y29sb3IpOwogICAgICAgIHN0cm9rZTogdmFyKC0taXJvbi1pY29uLXN0cm9rZS1jb2xvciwgbm9uZSk7CgogICAgICAgIHdpZHRoOiB2YXIoLS1pcm9uLWljb24td2lkdGgsIDI0cHgpOwogICAgICAgIGhlaWdodDogdmFyKC0taXJvbi1pY29uLWhlaWdodCwgMjRweCk7CiAgICAgICAgQGFwcGx5IC0taXJvbi1pY29uOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CmAsaXM6Imlyb24taWNvbiIscHJvcGVydGllczp7aWNvbjp7dHlwZTpTdHJpbmd9LHRoZW1lOnt0eXBlOlN0cmluZ30sc3JjOnt0eXBlOlN0cmluZ30sX21ldGE6e3ZhbHVlOmZvLmNyZWF0ZSgiaXJvbi1tZXRhIix7dHlwZToiaWNvbnNldCJ9KX19LG9ic2VydmVyczpbIl91cGRhdGVJY29uKF9tZXRhLCBpc0F0dGFjaGVkKSIsIl91cGRhdGVJY29uKHRoZW1lLCBpc0F0dGFjaGVkKSIsIl9zcmNDaGFuZ2VkKHNyYywgaXNBdHRhY2hlZCkiLCJfaWNvbkNoYW5nZWQoaWNvbiwgaXNBdHRhY2hlZCkiXSxfREVGQVVMVF9JQ09OU0VUOiJpY29ucyIsX2ljb25DaGFuZ2VkOmZ1bmN0aW9uKHQpe3ZhciBlPSh0fHwiIikuc3BsaXQoIjoiKTt0aGlzLl9pY29uTmFtZT1lLnBvcCgpLHRoaXMuX2ljb25zZXROYW1lPWUucG9wKCl8fHRoaXMuX0RFRkFVTFRfSUNPTlNFVCx0aGlzLl91cGRhdGVJY29uKCl9LF9zcmNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZUljb24oKX0sX3VzZXNJY29uc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWNvbnx8IXRoaXMuc3JjfSxfdXBkYXRlSWNvbjpmdW5jdGlvbigpe3RoaXMuX3VzZXNJY29uc2V0KCk/KHRoaXMuX2ltZyYmdGhpcy5faW1nLnBhcmVudE5vZGUmJllpKHRoaXMucm9vdCkucmVtb3ZlQ2hpbGQodGhpcy5faW1nKSwiIj09PXRoaXMuX2ljb25OYW1lP3RoaXMuX2ljb25zZXQmJnRoaXMuX2ljb25zZXQucmVtb3ZlSWNvbih0aGlzKTp0aGlzLl9pY29uc2V0TmFtZSYmdGhpcy5fbWV0YSYmKHRoaXMuX2ljb25zZXQ9dGhpcy5fbWV0YS5ieUtleSh0aGlzLl9pY29uc2V0TmFtZSksdGhpcy5faWNvbnNldD8odGhpcy5faWNvbnNldC5hcHBseUljb24odGhpcyx0aGlzLl9pY29uTmFtZSx0aGlzLnRoZW1lKSx0aGlzLnVubGlzdGVuKHdpbmRvdywiaXJvbi1pY29uc2V0LWFkZGVkIiwiX3VwZGF0ZUljb24iKSk6dGhpcy5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKSk6KHRoaXMuX2ljb25zZXQmJnRoaXMuX2ljb25zZXQucmVtb3ZlSWNvbih0aGlzKSx0aGlzLl9pbWd8fCh0aGlzLl9pbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIiksdGhpcy5faW1nLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLl9pbWcuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLl9pbWcuZHJhZ2dhYmxlPSExKSx0aGlzLl9pbWcuc3JjPXRoaXMuc3JjLFlpKHRoaXMucm9vdCkuYXBwZW5kQ2hpbGQodGhpcy5faW1nKSl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7aXM6Imlyb24taWNvbnNldC1zdmciLHByb3BlcnRpZXM6e25hbWU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfbmFtZUNoYW5nZWQifSxzaXplOnt0eXBlOk51bWJlcix2YWx1ZToyNH0scnRsTWlycm9yaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHVzZUdsb2JhbFJ0bEF0dHJpYnV0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX21ldGE9bmV3IHhvKHt0eXBlOiJpY29uc2V0IixrZXk6bnVsbCx2YWx1ZTpudWxsfSl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIn0sZ2V0SWNvbk5hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ljb25zPXRoaXMuX2NyZWF0ZUljb25NYXAoKSxPYmplY3Qua2V5cyh0aGlzLl9pY29ucykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5uYW1lKyI6Iit0fSksdGhpcyl9LGFwcGx5SWNvbjpmdW5jdGlvbih0LGUpe3RoaXMucmVtb3ZlSWNvbih0KTt2YXIgbj10aGlzLl9jbG9uZUljb24oZSx0aGlzLnJ0bE1pcnJvcmluZyYmdGhpcy5fdGFyZ2V0SXNSVEwodCkpO2lmKG4pe3ZhciBpPVlpKHQucm9vdHx8dCk7cmV0dXJuIGkuaW5zZXJ0QmVmb3JlKG4saS5jaGlsZE5vZGVzWzBdKSx0Ll9zdmdJY29uPW59cmV0dXJuIG51bGx9LHJlbW92ZUljb246ZnVuY3Rpb24odCl7dC5fc3ZnSWNvbiYmKFlpKHQucm9vdHx8dCkucmVtb3ZlQ2hpbGQodC5fc3ZnSWNvbiksdC5fc3ZnSWNvbj1udWxsKX0sX3RhcmdldElzUlRMOmZ1bmN0aW9uKHQpe2lmKG51bGw9PXRoaXMuX190YXJnZXRJc1JUTClpZih0aGlzLnVzZUdsb2JhbFJ0bEF0dHJpYnV0ZSl7dmFyIGU9ZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5oYXNBdHRyaWJ1dGUoImRpciIpP2RvY3VtZW50LmJvZHk6ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3RoaXMuX190YXJnZXRJc1JUTD0icnRsIj09PWUuZ2V0QXR0cmlidXRlKCJkaXIiKX1lbHNlIHQmJnQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSYmKHQ9dC5ob3N0KSx0aGlzLl9fdGFyZ2V0SXNSVEw9dCYmInJ0bCI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS5kaXJlY3Rpb247cmV0dXJuIHRoaXMuX190YXJnZXRJc1JUTH0sX25hbWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YS52YWx1ZT1udWxsLHRoaXMuX21ldGEua2V5PXRoaXMubmFtZSx0aGlzLl9tZXRhLnZhbHVlPXRoaXMsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24taWNvbnNldC1hZGRlZCIsdGhpcyx7bm9kZTp3aW5kb3d9KX0pKX0sX2NyZWF0ZUljb25NYXA6ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBZaSh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlLmlkXT1lfSkpLHR9LF9jbG9uZUljb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5faWNvbnM9dGhpcy5faWNvbnN8fHRoaXMuX2NyZWF0ZUljb25NYXAoKSx0aGlzLl9wcmVwYXJlU3ZnQ2xvbmUodGhpcy5faWNvbnNbdF0sdGhpcy5zaXplLGUpfSxfcHJlcGFyZVN2Z0Nsb25lOmZ1bmN0aW9uKHQsZSxuKXtpZih0KXt2YXIgaT10LmNsb25lTm9kZSghMCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIiksbz1pLmdldEF0dHJpYnV0ZSgidmlld0JveCIpfHwiMCAwICIrZSsiICIrZSxhPSJwb2ludGVyLWV2ZW50czogbm9uZTsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IjtyZXR1cm4gbiYmaS5oYXNBdHRyaWJ1dGUoIm1pcnJvci1pbi1ydGwiKSYmKGErPSItd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm06c2NhbGUoLTEsMSk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7Iiksci5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLG8pLHIuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHIuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLHIuc3R5bGUuY3NzVGV4dD1hLHIuYXBwZW5kQ2hpbGQoaSkucmVtb3ZlQXR0cmlidXRlKCJpZCIpLHJ9cmV0dXJuIG51bGx9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBTbz1fZWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJpbWFnZSIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iYWRkLWEtcGhvdG8iPjxwYXRoIGQ9Ik0zIDRWMWgydjNoM3YySDV2M0gzVjZIMFY0aDN6bTMgNlY3aDNWNGg3bDEuODMgMkgyMWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlYxMGgzem03IDljMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTUtNSAyLjI0LTUgNSAyLjI0IDUgNSA1em0tMy4yLTVjMCAxLjc3IDEuNDMgMy4yIDMuMiAzLjJzMy4yLTEuNDMgMy4yLTMuMi0xLjQzLTMuMi0zLjItMy4yLTMuMiAxLjQzLTMuMiAzLjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLXRvLXBob3RvcyI+PHBhdGggZD0iTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOWgtNHY0aC0ydi00SDlWOWg0VjVoMnY0aDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGp1c3QiPjxwYXRoIGQ9Ik0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3Npc3RhbnQiPjxwYXRoIGQ9Ik0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUuMTIgMTAuODhMMTIgMTdsLTEuODgtNC4xMkw2IDExbDQuMTItMS44OEwxMiA1bDEuODggNC4xMkwxOCAxMWwtNC4xMiAxLjg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lzdGFudC1waG90byI+PHBhdGggZD0iTTE0LjQgNkwxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXVkaW90cmFjayI+PHBhdGggZD0iTTEyIDN2OS4yOGMtLjQ3LS4xNy0uOTctLjI4LTEuNS0uMjhDOC4wMSAxMiA2IDE0LjAxIDYgMTYuNVM4LjAxIDIxIDEwLjUgMjFjMi4zMSAwIDQuMi0xLjc1IDQuNDUtNEgxNVY2aDRWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLWNpcmN1bGFyIj48cGF0aCBkPSJNMTAgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zIDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMy0zYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMy02Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTEuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTMgNmMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtNGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0yLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMy41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmx1ci1saW5lYXIiPjxwYXRoIGQ9Ik01IDE3LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6TTMgMjFoMTh2LTJIM3Yyek01IDkuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTNS44MyA2LjUgNSA2LjUgMy41IDcuMTcgMy41IDggNC4xNyA5LjUgNSA5LjV6bTAgNGMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04LS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMyAzdjJoMThWM0gzem0xNCA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0wIDRjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMyA5Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLW9mZiI+PHBhdGggZD0iTTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLS4yIDQuNDhsLjIuMDJjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjVsLjAyLjJjLjA5LjY3LjYxIDEuMTkgMS4yOCAxLjI4ek0xNCAzLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tNCAwYy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMTEgN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptOCA4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLTQgMTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTIuNSA1LjI3bDMuNzggMy43OEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MWMtLjA5LS4wMy0uMTgtLjA2LS4yOC0uMDYtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4TDIwIDIwLjIzIDMuNzcgNCAyLjUgNS4yN3pNMTAgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTEtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek0zIDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgMTFjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmx1ci1vbiI+PHBhdGggZD0iTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIj48L2NpcmNsZT48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTIiPjxwYXRoIGQ9Ik0xMCAyYy0xLjgyIDAtMy41My41LTUgMS4zNUM3Ljk5IDUuMDggMTAgOC4zIDEwIDEycy0yLjAxIDYuOTItNSA4LjY1QzYuNDcgMjEuNSA4LjE4IDIyIDEwIDIyYzUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDIgMTAgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTMiPjxwYXRoIGQ9Ik05IDJjLTEuMDUgMC0yLjA1LjE2LTMgLjQ2IDQuMDYgMS4yNyA3IDUuMDYgNyA5LjU0IDAgNC40OC0yLjk0IDguMjctNyA5LjU0Ljk1LjMgMS45NS40NiAzIC40NiA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNC41MiAyIDkgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTQiPjxwYXRoIGQ9Ik0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xMiAxOGMtLjg5IDAtMS43NC0uMi0yLjUtLjU1QzExLjU2IDE2LjUgMTMgMTQuNDIgMTMgMTJzLTEuNDQtNC41LTMuNS01LjQ1QzEwLjI2IDYuMiAxMS4xMSA2IDEyIDZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnJpZ2h0bmVzcy01Ij48cGF0aCBkPSJNMjAgMTUuMzFMMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTYiPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTciPjxwYXRoIGQ9Ik0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTAtMTBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyb2tlbi1pbWFnZSI+PHBhdGggZD0iTTIxIDV2Ni41OWwtMy0zLjAxLTQgNC4wMS00LTQtNCA0LTMtMy4wMVY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ6bS0zIDYuNDJsMyAzLjAxVjE5YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0ydi02LjU4bDMgMi45OSA0LTQgNCA0IDQtMy45OXoiPjwvcGF0aD48L2c+CjxnIGlkPSJicnVzaCI+PHBhdGggZD0iTTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6bTEzLjcxLTkuMzdsLTEuMzQtMS4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBMOSAxMi4yNSAxMS43NSAxNWw4Ljk2LTguOTZjLjM5LS4zOS4zOS0xLjAyIDAtMS40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJidXJzdC1tb2RlIj48cGF0aCBkPSJNMSA1aDJ2MTRIMXptNCAwaDJ2MTRINXptMTcgMEgxMGMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNMTEgMTdsMi41LTMuMTVMMTUuMjkgMTZsMi41LTMuMjJMMjEgMTdIMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhIj48cGF0aCBkPSJNOS40IDEwLjVsNC43Ny04LjI2QzEzLjQ3IDIuMDkgMTIuNzUgMiAxMiAyYy0yLjQgMC00LjYuODUtNi4zMiAyLjI1bDMuNjYgNi4zNS4wNi0uMXpNMjEuNTQgOWMtLjkyLTIuOTItMy4xNS01LjI2LTYtNi4zNEwxMS44OCA5aDkuNjZ6bS4yNiAxaC03LjQ5bC4yOS41IDQuNzYgOC4yNUMyMSAxNi45NyAyMiAxNC42MSAyMiAxMmMwLS42OS0uMDctMS4zNS0uMi0yek04LjU0IDEybC0zLjktNi43NUMzLjAxIDcuMDMgMiA5LjM5IDIgMTJjMCAuNjkuMDcgMS4zNS4yIDJoNy40OWwtMS4xNS0yem0tNi4wOCAzYy45MiAyLjkyIDMuMTUgNS4yNiA2IDYuMzRMMTIuMTIgMTVIMi40NnptMTEuMjcgMGwtMy45IDYuNzZjLjcuMTUgMS40Mi4yNCAyLjE3LjI0IDIuNCAwIDQuNi0uODUgNi4zMi0yLjI1bC0zLjY2LTYuMzUtLjkzIDEuNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtYWx0Ij48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzLjIiPjwvY2lyY2xlPjxwYXRoIGQ9Ik05IDJMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1mcm9udCI+PHBhdGggZD0iTTEwIDIwSDV2Mmg1djJsMy0zLTMtM3Yyem00IDB2Mmg1di0yaC01ek0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0xLjk5LjktMS45OSAyUzEwLjkgOCAxMiA4em01LThIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6TTcgMmgxMHYxMC41YzAtMS42Ny0zLjMzLTIuNS01LTIuNXMtNSAuODMtNSAyLjVWMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtcmVhciI+PHBhdGggZD0iTTEwIDIwSDV2Mmg1djJsMy0zLTMtM3Yyem00IDB2Mmg1di0yaC01em0zLTIwSDdDNS45IDAgNSAuOSA1IDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTItMi0yem0tNSA2Yy0xLjExIDAtMi0uOS0yLTJzLjg5LTIgMS45OS0yIDIgLjkgMiAyQzE0IDUuMSAxMy4xIDYgMTIgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtcm9sbCI+PHBhdGggZD0iTTE0IDVjMC0xLjEtLjktMi0yLTJoLTFWMmMwLS41NS0uNDUtMS0xLTFINmMtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yaDhWNWgtOHptLTIgMTNoLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6bTQgOWgtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNlbnRlci1mb2N1cy1zdHJvbmciPjxwYXRoIGQ9Ik0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTcgN0gzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNlbnRlci1mb2N1cy13ZWFrIj48cGF0aCBkPSJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xsZWN0aW9ucyI+PHBhdGggZD0iTTIyIDE2VjRjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnptLTExLTRsMi4wMyAyLjcxTDE2IDExbDQgNUg4bDMtNHpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29sbGVjdGlvbnMtYm9va21hcmsiPjxwYXRoIGQ9Ik00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTBsLTIuNS0xLjVMMTUgMTJWNGg1djh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29sb3ItbGVucyI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xvcml6ZSI+PHBhdGggZD0iTTIwLjcxIDUuNjNsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTMuMTIgMy4xMi0xLjkzLTEuOTEtMS40MSAxLjQxIDEuNDIgMS40MkwzIDE2LjI1VjIxaDQuNzVsOC45Mi04LjkyIDEuNDIgMS40MiAxLjQxLTEuNDEtMS45Mi0xLjkyIDMuMTItMy4xMmMuNC0uNC40LTEuMDMuMDEtMS40MnpNNi45MiAxOUw1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb21wYXJlIj48cGF0aCBkPSJNMTAgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDV2MmgyVjFoLTJ2MnptMCAxNUg1bDUtNnY2em05LTE1aC01djJoNXYxM2wtNS02djloNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbnRyb2wtcG9pbnQiPjxwYXRoIGQ9Ik0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udHJvbC1wb2ludC1kdXBsaWNhdGUiPjxwYXRoIGQ9Ik0xNiA4aC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zek0yIDEyYzAtMi43OSAxLjY0LTUuMiA0LjAxLTYuMzJWMy41MkMyLjUyIDQuNzYgMCA4LjA5IDAgMTJzMi41MiA3LjI0IDYuMDEgOC40OHYtMi4xNkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyem0xMy05Yy00Ljk2IDAtOSA0LjA0LTkgOXM0LjA0IDkgOSA5IDktNC4wNCA5LTktNC4wNC05LTktOXptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcCI+PHBhdGggZD0iTTE3IDE1aDJWN2MwLTEuMS0uOS0yLTItMkg5djJoOHY4ek03IDE3VjFINXY0SDF2Mmg0djEwYzAgMS4xLjkgMiAyIDJoMTB2NGgydi00aDR2LTJIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLTE2LTkiPjxwYXRoIGQ9Ik0xOSA2SDVjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEwSDVWOGgxNHY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtMy0yIj48cGF0aCBkPSJNMTkgNEg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtNS00Ij48cGF0aCBkPSJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtNy01Ij48cGF0aCBkPSJNMTkgN0g1Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4SDVWOWgxNHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtZGluIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtZnJlZSI+PHBhdGggZD0iTTMgNXY0aDJWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTIgMTBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00em0xNCA0aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0em0wLTE2aC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLWxhbmRzY2FwZSI+PHBhdGggZD0iTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLW9yaWdpbmFsIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNS4wNC02LjcxbC0yLjc1IDMuNTQtMS45Ni0yLjM2TDYuNSAxN2gxMWwtMy41NC00LjcxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtcG9ydHJhaXQiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3VjVoMTB2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1yb3RhdGUiPjxwYXRoIGQ9Ik03LjQ3IDIxLjQ5QzQuMiAxOS45MyAxLjg2IDE2Ljc2IDEuNSAxM0gwYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTEgLjIzIDAgLjQ0LS4wMi42Ni0uMDNMOC44IDIwLjE1bC0xLjMzIDEuMzR6TTEyLjA1IDBjLS4yMyAwLS40NC4wMi0uNjYuMDRsMy44MSAzLjgxIDEuMzMtMS4zM0MxOS44IDQuMDcgMjIuMTQgNy4yNCAyMi41IDExSDI0Yy0uNTEtNi4xNi01LjY2LTExLTExLjk1LTExek0xNiAxNGgyVjhjMC0xLjExLS45LTItMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhjMCAxLjEuODkgMiAyIDJoOHYyaDJ2LTJoMnYtMkg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3Atc3F1YXJlIj48cGF0aCBkPSJNMTggNEg2Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINlY2aDEydjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRlaGF6ZSI+PHBhdGggZD0iTTIgMTUuNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGV0YWlscyI+PHBhdGggZD0iTTMgNGw5IDE2IDktMTZIM3ptMy4zOCAyaDExLjI1TDEyIDE2IDYuMzggNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJlZGl0Ij48cGF0aCBkPSJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlIj48cGF0aCBkPSJNMTUgMTd2Mmgydi0yaDJ2LTJoLTJ2LTJoLTJ2MmgtMnYyaDJ6bTUtMTVINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek01IDVoNnYySDVWNXptMTUgMTVINEwyMCA0djE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLW5lZy0xIj48cGF0aCBkPSJNNCAxMXYyaDh2LTJINHptMTUgN2gtMlY3LjM4TDE0IDguNFY2LjdMMTguNyA1aC4zdjEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLW5lZy0yIj48cGF0aCBkPSJNMTUuMDUgMTYuMjlsMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTcuMjMtLjM5LjQxLS43OC41NC0xLjE3cy4xOS0uNzkuMTktMS4xOGMwLS41My0uMDktMS4wMi0uMjctMS40Ni0uMTgtLjQ0LS40NC0uODEtLjc4LTEuMTEtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxLS41MS0uMTYtMS4wOC0uMjQtMS43Mi0uMjQtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLXBsdXMtMSI+PHBhdGggZD0iTTEwIDdIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00Vjd6bTEwIDExaC0yVjcuMzhMMTUgOC40VjYuN0wxOS43IDVoLjN2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtcGx1cy0yIj48cGF0aCBkPSJNMTYuMDUgMTYuMjlsMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTcuMjMtLjM5LjQxLS43OC41NC0xLjE3LjEzLS4zOS4xOS0uNzkuMTktMS4xOCAwLS41My0uMDktMS4wMi0uMjctMS40Ni0uMTgtLjQ0LS40NC0uODEtLjc4LTEuMTEtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxLS41MS0uMTYtMS4wOC0uMjQtMS43Mi0uMjQtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIydi0xLjcxaC01Ljk1ek04IDdINnY0SDJ2Mmg0djRoMnYtNGg0di0ySDhWN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBvc3VyZS16ZXJvIj48cGF0aCBkPSJNMTYuMTQgMTIuNWMwIDEtLjEgMS44NS0uMyAyLjU1LS4yLjctLjQ4IDEuMjctLjgzIDEuNy0uMzYuNDQtLjc5Ljc1LTEuMy45NS0uNTEuMi0xLjA3LjMtMS43LjMtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1LS4zNi0uNDQtLjY1LTEuMDEtLjg1LTEuNy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNHptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOS0uMzIgMC0uNjEuMDYtLjg2LjE4cy0uNDcuMzEtLjY0LjU4Yy0uMTcuMjctLjMxLjYyLS40IDEuMDZzLS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5Yy4zMyAwIC42Mi0uMDYuODctLjE5cy40Ni0uMzMuNjMtLjYxYy4xNy0uMjguMy0uNjQuMzktMS4wOS4wOS0uNDUuMTMtLjk5LjEzLTEuNjJ2LTIuNjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyIj48cGF0aCBkPSJNMTUuOTYgMTAuMjlsLTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTEiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTEgMTBoMlY1aC00djJoMnY4em03LTE0SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTIiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tNC00aC00di0yaDJjMS4xIDAgMi0uODkgMi0yVjdjMC0xLjExLS45LTItMi0yaC00djJoNHYyaC0yYy0xLjEgMC0yIC44OS0yIDJ2NGg2di0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci0zIj48cGF0aCBkPSJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YzAtMS4xMS0uOS0yLTItMmgtNHYyaDR2MmgtMnYyaDJ2MmgtNHYyaDRjMS4xIDAgMi0uODkgMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci00Ij48cGF0aCBkPSJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTEyIDEwaDJWNWgtMnY0aC0yVjVoLTJ2Nmg0djR6bTYtMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNSI+PHBhdGggZD0iTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJjMC0xLjExLS45LTItMi0yaC0yVjdoNFY1aC02djZoNHYyaC00djJoNGMxLjEgMCAyLS44OSAyLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTYiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJjMS4xIDAgMi0uODkgMi0ydi0yYzAtMS4xMS0uOS0yLTItMmgtMlY3aDRWNWgtNGMtMS4xIDAtMiAuODktMiAydjZjMCAxLjExLjkgMiAyIDJ6bTAtNGgydjJoLTJ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTciPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0ybDQtOFY1aC02djJoNGwtNCA4aDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTgiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJjMS4xIDAgMi0uODkgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdjMC0xLjExLS45LTItMi0yaC0yYy0xLjEgMC0yIC44OS0yIDJ2MS41YzAgLjgzLjY3IDEuNSAxLjUgMS41LS44MyAwLTEuNS42Ny0xLjUgMS41VjEzYzAgMS4xMS45IDIgMiAyem0wLThoMnYyaC0yVjd6bTAgNGgydjJoLTJ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTkiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYy0xLjEgMC0yIC44OS0yIDJ2MmMwIDEuMTEuOSAyIDIgMmgydjJoLTR2Mmg0YzEuMSAwIDItLjg5IDItMlY3YzAtMS4xMS0uOS0yLTItMnptMCA0aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci05LXBsdXMiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTEgN1Y4YzAtMS4xMS0uOS0yLTItMmgtMWMtMS4xIDAtMiAuODktMiAydjFjMCAxLjExLjkgMiAyIDJoMXYxSDl2MmgzYzEuMSAwIDItLjg5IDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWItYW5kLXciPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmwtNy04djhINWw3LThWNWg3djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1jZW50ZXItZm9jdXMiPjxwYXRoIGQ9Ik01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1kcmFtYSI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYxIDUuNjQgNS4zNiA4LjA0IDIuMzUgOC4zNiAwIDEwLjkgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0aDJjMC0yLjc2LTEuODYtNS4wOC00LjQtNS43OEM4LjYxIDYuODggMTAuMiA2IDEyIDZjMy4wMyAwIDUuNSAyLjQ3IDUuNSA1LjV2LjVIMTljMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWZyYW1lcyI+PHBhdGggZD0iTTIwIDRoLTRsLTQtNC00IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDRWNmg0LjUybDMuNTItMy41TDE1LjUyIDZIMjB2MTR6TTE4IDhINnYxMGgxMiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1oZHIiPjxwYXRoIGQ9Ik0xNCA2bC0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLW5vbmUiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci10aWx0LXNoaWZ0Ij48cGF0aCBkPSJNMTEgNC4wN1YyLjA1Yy0yLjAxLjItMy44NCAxLTUuMzIgMi4yMUw3LjEgNS42OWMxLjExLS44NiAyLjQ0LTEuNDQgMy45LTEuNjJ6bTcuMzIuMTlDMTYuODQgMy4wNSAxNS4wMSAyLjI1IDEzIDIuMDV2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOS45MyAxMWgyLjAyYy0uMi0yLjAxLTEtMy44NC0yLjIxLTUuMzJMMTguMzEgNy4xYy44NiAxLjExIDEuNDQgMi40NCAxLjYyIDMuOXpNNS42OSA3LjFMNC4yNiA1LjY4QzMuMDUgNy4xNiAyLjI1IDguOTkgMi4wNSAxMWgyLjAyYy4xOC0xLjQ2Ljc2LTIuNzkgMS42Mi0zLjl6TTQuMDcgMTNIMi4wNWMuMiAyLjAxIDEgMy44NCAyLjIxIDUuMzJsMS40My0xLjQzYy0uODYtMS4xLTEuNDQtMi40My0xLjYyLTMuODl6TTE1IDEyYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptMy4zMSA0LjlsMS40MyAxLjQzYzEuMjEtMS40OCAyLjAxLTMuMzIgMi4yMS01LjMyaC0yLjAyYy0uMTggMS40NS0uNzYgMi43OC0xLjYyIDMuODl6TTEzIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQzLTEuNDNjLTEuMS44Ni0yLjQzIDEuNDQtMy44OSAxLjYyem0tNy4zMi0uMTlDNy4xNiAyMC45NSA5IDIxLjc1IDExIDIxLjk1di0yLjAyYy0xLjQ2LS4xOC0yLjc5LS43Ni0zLjktMS42MmwtMS40MiAxLjQzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci12aW50YWdlIj48cGF0aCBkPSJNMTguNyAxMi40Yy0uMjgtLjE2LS41Ny0uMjktLjg2LS40LjI5LS4xMS41OC0uMjQuODYtLjQgMS45Mi0xLjExIDIuOTktMy4xMiAzLTUuMTktMS43OS0xLjAzLTQuMDctMS4xMS02IDAtLjI4LjE2LS41NC4zNS0uNzguNTQuMDUtLjMxLjA4LS42My4wOC0uOTUgMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlDMTAuMjEgMS44NSA5IDMuNzggOSA2YzAgLjMyLjAzLjY0LjA4Ljk1LS4yNC0uMi0uNS0uMzktLjc4LS41NS0xLjkyLTEuMTEtNC4yLTEuMDMtNiAwIDAgMi4wNyAxLjA3IDQuMDggMyA1LjE5LjI4LjE2LjU3LjI5Ljg2LjQtLjI5LjExLS41OC4yNC0uODYuNC0xLjkyIDEuMTEtMi45OSAzLjEyLTMgNS4xOSAxLjc5IDEuMDMgNC4wNyAxLjExIDYgMCAuMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NCAxLjkyIDEuMTEgNC4yIDEuMDMgNiAwLS4wMS0yLjA3LTEuMDgtNC4wOC0zLTUuMTl6TTEyIDE2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFyZSI+PHBhdGggZD0iTTcgMTFIMXYyaDZ2LTJ6bTIuMTctMy4yNEw3LjA1IDUuNjQgNS42NCA3LjA1bDIuMTIgMi4xMiAxLjQxLTEuNDF6TTEzIDFoLTJ2NmgyVjF6bTUuMzYgNi4wNWwtMS40MS0xLjQxLTIuMTIgMi4xMiAxLjQxIDEuNDEgMi4xMi0yLjEyek0xNyAxMXYyaDZ2LTJoLTZ6bS01LTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0yLjgzIDcuMjRsMi4xMiAyLjEyIDEuNDEtMS40MS0yLjEyLTIuMTItMS40MSAxLjQxem0tOS4xOS43MWwxLjQxIDEuNDEgMi4xMi0yLjEyLTEuNDEtMS40MS0yLjEyIDIuMTJ6TTExIDIzaDJ2LTZoLTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFzaC1hdXRvIj48cGF0aCBkPSJNMyAydjEyaDN2OWw3LTEySDlsNC05SDN6bTE2IDBoLTJsLTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUwxOSAyem0tMi4xNSA1LjY1TDE4IDRsMS4xNSAzLjY1aC0yLjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhc2gtb2ZmIj48cGF0aCBkPSJNMy4yNyAzTDIgNC4yN2w1IDVWMTNoM3Y5bDMuNTgtNi4xNEwxNy43MyAyMCAxOSAxOC43MyAzLjI3IDN6TTE3IDEwaC00bDQtOEg3djIuMThsOC40NiA4LjQ2TDE3IDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXNoLW9uIj48cGF0aCBkPSJNNyAydjExaDN2OWw3LTEyaC00bDQtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwIj48cGF0aCBkPSJNMTUgMjFoMnYtMmgtMnYyem00LTEyaDJWN2gtMnYyek0zIDV2MTRjMCAxLjEuOSAyIDIgMmg0di0ySDVWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTE2LTJ2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyMGgyVjFoLTJ2MjJ6bTgtNmgydi0yaC0ydjJ6TTE1IDVoMlYzaC0ydjJ6bTQgOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWRpZW50Ij48cGF0aCBkPSJNMTEgOWgydjJoLTJ6bS0yIDJoMnYySDl6bTQgMGgydjJoLTJ6bTItMmgydjJoLTJ6TTcgOWgydjJIN3ptMTItNkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMThIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTItN2gtMnYyaDJ2MmgtMnYtMmgtMnYyaC0ydi0yaC0ydjJIOXYtMkg3djJINXYtMmgydi0ySDVWNWgxNHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWluIj48cGF0aCBkPSJNMTAgMTJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJncmlkLW9mZiI+PHBhdGggZD0iTTggNHYxLjQ1bDIgMlY0aDR2NGgtMy40NWwyIDJIMTR2MS40NWwyIDJWMTBoNHY0aC0zLjQ1bDIgMkgyMHYxLjQ1bDIgMlY0YzAtMS4xLS45LTItMi0ySDQuNTVsMiAySDh6bTggMGg0djRoLTRWNHpNMS4yNyAxLjI3TDAgMi41NWwyIDJWMjBjMCAxLjEuOSAyIDIgMmgxNS40NmwyIDIgMS4yNy0xLjI3TDEuMjcgMS4yN3pNMTAgMTIuNTVMMTEuNDUgMTRIMTB2LTEuNDV6bS02LTZMNS40NSA4SDRWNi41NXpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoMy40NWwuNTUuNTVWMTR6bTYgNmgtNHYtNGgzLjQ1bC41NS41NFYyMHptMiAwdi0xLjQ2TDE3LjQ2IDIwSDE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyaWQtb24iPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoNHY0em0wLTZINFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItb2ZmIj48cGF0aCBkPSJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4yLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0LjlsMS4xIDEuMWguNHptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjRsMS41IDEuNXYtMS45YzAtLjgtLjctMS41LTEuNS0xLjVoLTEuOWwxLjUgMS41aC40em0tMy41LTFsLTctNy0xLjEgMUw2LjkgOWgtLjR2MmgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDh2LTQuOWwxLjUgMS41VjE1aDMuNGw3LjYgNy42IDEuMS0xLjEtMTIuMS0xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItb24iPjxwYXRoIGQ9Ik0yMSAxMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJWOUgzdjZoMS41di0yLjVoMlYxNUg4VjlINi41djJ6TTEzIDlIOS41djZIMTNjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNWgtMnYtM2gydjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGRyLXN0cm9uZyI+PHBhdGggZD0iTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci13ZWFrIj48cGF0aCBkPSJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhlYWxpbmciPjxwYXRoIGQ9Ik0xNy43MyAxMi4wMmwzLjk4LTMuOThjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtNC4zNC00LjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOUM3LjggMi4xIDcuNTUgMiA3LjI5IDJjLS4yNSAwLS41MS4xLS43LjI5TDIuMjUgNi42M2MtLjM5LjM5LS4zOSAxLjAyIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmMtLjM5LjM5LS4zOSAxLjAyIDAgMS40MWw0LjM0IDQuMzRjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDMuOTgtMy45OCAzLjk4IDMuOThjLjIuMi40NS4yOS43MS4yOS4yNiAwIC41MS0uMS43MS0uMjlsNC4zNC00LjM0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzRsLTMuNjMtMy42MiAzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJpbWFnZSI+PHBhdGggZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW1hZ2UtYXNwZWN0LXJhdGlvIj48cGF0aCBkPSJNMTYgMTBoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yem0tOC00SDZ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem04LTZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJpc28iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNS41IDcuNWgydi0ySDl2MmgyVjlIOXYySDcuNVY5aC0yVjcuNXpNMTkgMTlINUwxOSA1djE0em0tMi0ydi0xLjVoLTVWMTdoNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYW5kc2NhcGUiPjxwYXRoIGQ9Ik0xNCA2bC0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGVhay1hZGQiPjxwYXRoIGQ9Ik02IDNIM3YzYzEuNjYgMCAzLTEuMzQgMy0zem04IDBoLTJjMCA0Ljk3LTQuMDMgOS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmMwLTQuOTcgNC4wMy05IDktOXYtMmMtNi4wNyAwLTExIDQuOTMtMTEgMTF6bTggMGgzdi0zYy0xLjY2IDAtMyAxLjM0LTMgM3ptLTQgMGgyYzAtMi43NiAyLjI0LTUgNS01di0yYy0zLjg3IDAtNyAzLjEzLTcgN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsZWFrLXJlbW92ZSI+PHBhdGggZD0iTTEwIDNIOGMwIC4zNy0uMDQuNzItLjEyIDEuMDZsMS41OSAxLjU5QzkuODEgNC44NCAxMCAzLjk0IDEwIDN6TTMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QzcuMTQgMTEuMjQgNS4xNiAxMiAzIDEydjJjMi43MSAwIDUuMTktLjk5IDcuMTEtMi42MmwyLjUgMi41QzEwLjk5IDE1LjgxIDEwIDE4LjI5IDEwIDIxaDJjMC0yLjE2Ljc2LTQuMTQgMi4wMy01LjY5bDEuNDMgMS40M0MxNC41NSAxNy45MSAxNCAxOS4zOSAxNCAyMWgyYzAtMS4wNi4zMy0yLjAzLjg5LTIuODRMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3pNMTQgM2gtMmMwIDEuNS0uMzcgMi45MS0xLjAyIDQuMTZsMS40NiAxLjQ2QzEzLjQyIDYuOTggMTQgNS4wNiAxNCAzem01Ljk0IDEzLjEyYy4zNC0uMDguNjktLjEyIDEuMDYtLjEydi0yYy0uOTQgMC0xLjg0LjE5LTIuNjYuNTJsMS42IDEuNnptLTQuNTYtNC41NmwxLjQ2IDEuNDZDMTguMDkgMTIuMzcgMTkuNSAxMiAyMSAxMnYtMmMtMi4wNiAwLTMuOTguNTgtNS42MiAxLjU2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxlbnMiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmtlZC1jYW1lcmEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTQiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTE2IDMuMzNjMi41OCAwIDQuNjcgMi4wOSA0LjY3IDQuNjdIMjJjMC0zLjMxLTIuNjktNi02LTZ2MS4zM00xNiA2YzEuMTEgMCAyIC44OSAyIDJoMS4zM2MwLTEuODQtMS40OS0zLjMzLTMuMzMtMy4zM1Y2Ij48L3BhdGg+PHBhdGggZD0iTTE3IDljMC0xLjExLS44OS0yLTItMlY0SDlMNy4xNyA2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWgtNXptLTUgMTBjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzIj48cGF0aCBkPSJNMTIgMTBjLTMuODYgMC03IDMuMTQtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ni0zLjE0LTctNy03em0wLTRDNS45MyA2IDEgMTAuOTMgMSAxN2gyYzAtNC45NiA0LjA0LTkgOS05czkgNC4wNCA5IDloMmMwLTYuMDctNC45My0xMS0xMS0xMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy0zIj48cGF0aCBkPSJNMTkuMDEgM2gtMTRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNy41YzAgLjgzLS42NyAxLjUtMS41IDEuNS44MyAwIDEuNS42NyAxLjUgMS41VjE1YzAgMS4xMS0uOSAyLTIgMmgtNHYtMmg0di0yaC0ydi0yaDJWOWgtNFY3aDRjMS4xIDAgMiAuODkgMiAydjEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy00Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDE0aC0ydi00SDlWN2gydjRoMlY3aDJ2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MtNSI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA2aC00djJoMmMxLjEgMCAyIC44OSAyIDJ2MmMwIDEuMTEtLjkgMi0yIDJIOXYtMmg0di0ySDlWN2g2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MtNiI+PHBhdGggZD0iTTExIDE1aDJ2LTJoLTJ2MnptOC0xMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYzEuMSAwIDIgLjg5IDIgMnYyYzAgMS4xMS0uOSAyLTIgMmgtMmMtMS4xIDAtMi0uODktMi0yVjljMC0xLjExLjktMiAyLTJoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLW9uZSI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNGgtMlY5aC0yVjdoNHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy10d28iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgOGMwIDEuMTEtLjkgMi0yIDJoLTJ2Mmg0djJIOXYtNGMwLTEuMTEuOS0yIDItMmgyVjlIOVY3aDRjMS4xIDAgMiAuODkgMiAydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG91cGUiPjxwYXRoIGQ9Ik0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMGg4YzEuMSAwIDItLjkgMi0ydi04YzAtNS41MS00LjQ5LTEwLTEwLTEwem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb25vY2hyb21lLXBob3RvcyI+PHBhdGggZD0iTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZpZS1jcmVhdGlvbiI+PHBhdGggZD0iTTE4IDRsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZpZS1maWx0ZXIiPjxwYXRoIGQ9Ik0xOCA0bDIgM2gtM2wtMi0zaC0ybDIgM2gtM2wtMi0zSDhsMiAzSDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6bS02Ljc1IDExLjI1TDEwIDE4bC0xLjI1LTIuNzVMNiAxNGwyLjc1LTEuMjVMMTAgMTBsMS4yNSAyLjc1TDE0IDE0bC0yLjc1IDEuMjV6bTUuNjktMy4zMUwxNiAxNGwtLjk0LTIuMDZMMTMgMTFsMi4wNi0uOTRMMTYgOGwuOTQgMi4wNkwxOSAxMWwtMi4wNi45NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtdXNpYy1ub3RlIj48cGF0aCBkPSJNMTIgM3YxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRWN2g0VjNoLTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF0dXJlIj48cGF0aCBkPSJNMTMgMTYuMTJjMy40Ny0uNDEgNi4xNy0zLjM2IDYuMTctNi45NSAwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN2MwIDMuNDcgMi41MiA2LjM0IDUuODMgNi44OVYyMEg1djJoMTR2LTJoLTZ2LTMuODh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF0dXJlLXBlb3BsZSI+PHBhdGggZD0iTTIyLjE3IDkuMTdjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDdjMCAzLjQ3IDIuNTIgNi4zNCA1LjgzIDYuODlWMjBINnYtM2gxdi00YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2NGgxdjVoMTZ2LTJoLTN2LTMuODhjMy40Ny0uNDEgNi4xNy0zLjM2IDYuMTctNi45NXpNNC41IDExYy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjMzIDggNC41IDggMyA4LjY3IDMgOS41IDMuNjcgMTEgNC41IDExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im5hdmlnYXRlLWJlZm9yZSI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF2aWdhdGUtbmV4dCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbGV0dGUiPjxwYXRoIGQ9Ik0xMiAzYy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAzIDkgOSA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEiPjxwYXRoIGQ9Ik0yMyAxOFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMi41bDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINWwzLjUtNC41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLWZpc2gtZXllIj48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtaG9yaXpvbnRhbCI+PHBhdGggZD0iTTIwIDYuNTR2MTAuOTFjLTIuNi0uNzctNS4yOC0xLjE2LTgtMS4xNi0yLjcyIDAtNS40LjM5LTggMS4xNlY2LjU0YzIuNi43NyA1LjI4IDEuMTYgOCAxLjE2IDIuNzIuMDEgNS40LS4zOCA4LTEuMTZNMjEuNDMgNGMtLjEgMC0uMi4wMi0uMzEuMDZDMTguMTggNS4xNiAxNS4wOSA1LjcgMTIgNS43Yy0zLjA5IDAtNi4xOC0uNTUtOS4xMi0xLjY0LS4xMS0uMDQtLjIyLS4wNi0uMzEtLjA2LS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NCAzLjA5IDAgNi4xOC41NSA5LjEyIDEuNjQuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLXZlcnRpY2FsIj48cGF0aCBkPSJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTIgMC0zLjA5LjU1LTYuMTggMS42NC05LjEyLjA0LS4xMS4wNi0uMjIuMDYtLjMxIDAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMmMwIDMuMDktLjU1IDYuMTgtMS42NCA5LjEyLS4wNS4xMS0uMDcuMjItLjA3LjMxIDAgLjMzLjIzLjU3LjYzLjU3aDE0Ljc1Yy4zOSAwIC42My0uMjQuNjMtLjU3LS4wMS0uMS0uMDMtLjItLjA3LS4zMXpNNi41NCAyMGMuNzctMi42IDEuMTYtNS4yOCAxLjE2LTggMC0yLjcyLS4zOS01LjQtMS4xNi04aDEwLjkxYy0uNzcgMi42LTEuMTYgNS4yOC0xLjE2IDggMCAyLjcyLjM5IDUuNCAxLjE2IDhINi41NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYS13aWRlLWFuZ2xlIj48cGF0aCBkPSJNMTIgNmMyLjQ1IDAgNC43MS4yIDcuMjkuNjQuNDcgMS43OC43MSAzLjU4LjcxIDUuMzYgMCAxLjc4LS4yNCAzLjU4LS43MSA1LjM2LTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QzQuMjQgMTUuNTggNCAxMy43OCA0IDEyYzAtMS43OC4yNC0zLjU4LjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90byI+PHBhdGggZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tYWxidW0iPjxwYXRoIGQ9Ik0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6bTAgMTVsMy0zLjg2IDIuMTQgMi41OCAzLTMuODZMMTggMTlINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1jYW1lcmEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMkw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tZmlsdGVyIj48cGF0aCBkPSJNMTkuMDIgMTB2OUg1VjVoOVYzSDUuMDJjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6TTE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDdsMi4wNi45NHptLTMuNzUuNzVMMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1saWJyYXJ5Ij48cGF0aCBkPSJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNGwyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1zaXplLXNlbGVjdC1hY3R1YWwiPjxwYXRoIGQ9Ik0yMSAzSDNDMiAzIDEgNCAxIDV2MTRjMCAxLjEuOSAyIDIgMmgxOGMxIDAgMi0xIDItMlY1YzAtMS0xLTItMi0yek01IDE3bDMuNS00LjUgMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LWxhcmdlIj48cGF0aCBkPSJNMjEgMTVoMnYyaC0ydi0yem0wLTRoMnYyaC0ydi0yem0yIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTMgM2gydjJoLTJWM3ptOCA0aDJ2MmgtMlY3em0wLTR2MmgyYzAtMS0xLTItMi0yek0xIDdoMnYySDFWN3ptMTYtNGgydjJoLTJWM3ptMCAxNmgydjJoLTJ2LTJ6TTMgM0MyIDMgMSA0IDEgNWgyVjN6bTYgMGgydjJIOVYzek01IDNoMnYySDVWM3ptLTQgOHY4YzAgMS4xLjkgMiAyIDJoMTJWMTFIMXptMiA4bDIuNS0zLjIxIDEuNzkgMi4xNSAyLjUtMy4yMkwxMyAxOUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LXNtYWxsIj48cGF0aCBkPSJNMjMgMTVoLTJ2Mmgydi0yem0wLTRoLTJ2Mmgydi0yem0wIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTUgM2gtMnYyaDJWM3ptOCA0aC0ydjJoMlY3em0tMi00djJoMmMwLTEtMS0yLTItMnpNMyAyMWg4di02SDF2NGMwIDEuMS45IDIgMiAyek0zIDdIMXYyaDJWN3ptMTIgMTJoLTJ2Mmgydi0yem00LTE2aC0ydjJoMlYzem0wIDE2aC0ydjJoMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptMCA4SDF2Mmgydi0yem04LThIOXYyaDJWM3pNNyAzSDV2MmgyVjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1hcy1wZGYiPjxwYXRoIGQ9Ik0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41SDl2Mkg3LjVWN0gxMGMuODMgMCAxLjUuNjcgMS41IDEuNXYxem01IDJjMCAuODMtLjY3IDEuNS0xLjUgMS41aC0yLjVWN0gxNWMuODMgMCAxLjUuNjcgMS41IDEuNXYzem00LTNIMTl2MWgxLjVWMTFIMTl2MmgtMS41VjdoM3YxLjV6TTkgOS41aDF2LTFIOXYxek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNS41aDF2LTNoLTF2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwb3J0cmFpdCI+PHBhdGggZD0iTTEyIDEyLjI1YzEuMjQgMCAyLjI1LTEuMDEgMi4yNS0yLjI1UzEzLjI0IDcuNzUgMTIgNy43NSA5Ljc1IDguNzYgOS43NSAxMHMxLjAxIDIuMjUgMi4yNSAyLjI1em00LjUgNGMwLTEuNS0zLTIuMjUtNC41LTIuMjVzLTQuNS43NS00LjUgMi4yNVYxN2g5di0uNzV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtcmVkLWV5ZSI+PHBhdGggZD0iTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3RhdGUtOTAtZGVncmVlcy1jY3ciPjxwYXRoIGQ9Ik03LjM0IDYuNDFMLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QzE3LjYxIDQuODggMTUuMyA0IDEzIDRWLjc2TDguNzYgNSAxMyA5LjI0VjZjMS43OSAwIDMuNTguNjggNC45NSAyLjA1IDIuNzMgMi43MyAyLjczIDcuMTcgMCA5LjlDMTYuNTggMTkuMzIgMTQuNzkgMjAgMTMgMjBjLS45NyAwLTEuOTQtLjIxLTIuODQtLjYxbC0xLjQ5IDEuNDlDMTAuMDIgMjEuNjIgMTEuNTEgMjIgMTMgMjJjMi4zIDAgNC42MS0uODggNi4zNi0yLjY0IDMuNTItMy41MSAzLjUyLTkuMjEgMC0xMi43MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3RhdGUtbGVmdCI+PHBhdGggZD0iTTcuMTEgOC41M0w1LjcgNy4xMUM0LjggOC4yNyA0LjI0IDkuNjEgNC4wNyAxMWgyLjAyYy4xNC0uODcuNDktMS43MiAxLjAyLTIuNDd6TTYuMDkgMTNINC4wN2MuMTcgMS4zOS43MiAyLjczIDEuNjIgMy44OWwxLjQxLTEuNDJjLS41Mi0uNzUtLjg3LTEuNTktMS4wMS0yLjQ3em0xLjAxIDUuMzJjMS4xNi45IDIuNTEgMS40NCAzLjkgMS42MVYxNy45Yy0uODctLjE1LTEuNzEtLjQ5LTIuNDYtMS4wM0w3LjEgMTguMzJ6TTEzIDQuMDdWMUw4LjQ1IDUuNTUgMTMgMTBWNi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTFzLTIuMTYgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03Ljkzcy0zLjA1LTcuNDQtNy03LjkzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS1yaWdodCI+PHBhdGggZD0iTTE1LjU1IDUuNTVMMTEgMXYzLjA3QzcuMDYgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjg0LS40OC01LTIuOTQtNS01LjkxczIuMTYtNS40MyA1LTUuOTFWMTBsNC41NS00LjQ1ek0xOS45MyAxMWMtLjE3LTEuMzktLjcyLTIuNzMtMS42Mi0zLjg5bC0xLjQyIDEuNDJjLjU0Ljc1Ljg4IDEuNiAxLjAyIDIuNDdoMi4wMnpNMTMgMTcuOXYyLjAyYzEuMzktLjE3IDIuNzQtLjcxIDMuOS0xLjYxbC0xLjQ0LTEuNDRjLS43NS41NC0xLjU5Ljg5LTIuNDYgMS4wM3ptMy44OS0yLjQybDEuNDIgMS40MWMuOS0xLjE2IDEuNDUtMi41IDEuNjItMy44OWgtMi4wMmMtLjE0Ljg3LS40OCAxLjcyLTEuMDIgMi40OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzbGlkZXNob3ciPjxwYXRoIGQ9Ik0xMCA4djhsNS00LTUtNHptOS01SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RyYWlnaHRlbiI+PHBhdGggZD0iTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0eWxlIj48cGF0aCBkPSJNMi41MyAxOS42NWwxLjM0LjU2di05LjAzbC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxem0xOS41LTMuN0wxNy4wNyAzLjk4Yy0uMzEtLjc1LTEuMDQtMS4yMS0xLjgxLTEuMjMtLjI2IDAtLjUzLjA0LS43OS4xNUw3LjEgNS45NWMtLjc1LjMxLTEuMjEgMS4wMy0xLjIzIDEuOC0uMDEuMjcuMDQuNTQuMTUuOGw0Ljk2IDExLjk3Yy4zMS43NiAxLjA1IDEuMjIgMS44MyAxLjIzLjI2IDAgLjUyLS4wNS43Ny0uMTVsNy4zNi0zLjA1YzEuMDItLjQyIDEuNTEtMS41OSAxLjA5LTIuNnpNNy44OCA4Ljc1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0yIDExYzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3dpdGNoLWNhbWVyYSI+PHBhdGggZD0iTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVWMTNIOXYyLjVMNS41IDEyIDkgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2l0Y2gtdmlkZW8iPjxwYXRoIGQ9Ik0xOCA5LjVWNmMwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTNsLTQgNHptLTUgNlYxM0g3djIuNUwzLjUgMTIgNyA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRhZy1mYWNlcyI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0ZXh0dXJlIj48cGF0aCBkPSJNMTkuNTEgMy4wOEwzLjA4IDE5LjUxYy4wOS4zNC4yNy42NS41MS45LjI1LjI0LjU2LjQyLjkuNTFMMjAuOTMgNC40OWMtLjE5LS42OS0uNzMtMS4yMy0xLjQyLTEuNDF6TTExLjg4IDNMMyAxMS44OHYyLjgzTDE0LjcxIDNoLTIuODN6TTUgM2MtMS4xIDAtMiAuOS0yIDJ2Mmw0LTRINXptMTQgMThjLjU1IDAgMS4wNS0uMjIgMS40MS0uNTkuMzctLjM2LjU5LS44Ni41OS0xLjQxdi0ybC00IDRoMnptLTkuNzEgMGgyLjgzTDIxIDEyLjEyVjkuMjlMOS4yOSAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lbGFwc2UiPjxwYXRoIGQ9Ik0xNi4yNCA3Ljc2QzE1LjA3IDYuNTkgMTMuNTQgNiAxMiA2djZsLTQuMjQgNC4yNGMyLjM0IDIuMzQgNi4xNCAyLjM0IDguNDkgMCAyLjM0LTIuMzQgMi4zNC02LjE0LS4wMS04LjQ4ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lciI+PHBhdGggZD0iTTE1IDFIOXYyaDZWMXptLTQgMTNoMlY4aC0ydjZ6bTguMDMtNi42MWwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQzE2LjA3IDQuNzQgMTQuMTIgNCAxMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5IDktNC4wMyA5LTljMC0yLjEyLS43NC00LjA3LTEuOTctNS42MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyLTEwIj48cGF0aCBkPSJNMCA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMMCA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhjLS4zNS0uMDctLjY0LS4xNS0uODctLjIzLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1LS4xNC0uMDktLjIzLS4xOS0uMjgtLjMtLjA1LS4xMS0uMDgtLjI0LS4wOC0uMzkgMC0uMTQuMDMtLjI4LjA5LS40MS4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YzAtLjM5LS4wOC0uNzUtLjI0LTEuMDktLjE2LS4zNC0uMzktLjYzLS42OS0uODgtLjMtLjI1LS42Ni0uNDQtMS4wOS0uNTlDMjEuNDkgOS4wNyAyMSA5IDIwLjQ2IDljLS41MSAwLS45OC4wNy0xLjM5LjIxLS40MS4xNC0uNzcuMzMtMS4wNi41Ny0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OS4yMy45NmMuMTUuMjguMzYuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzctLjI3LjItLjY2LjI5LTEuMTcuMjktLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjQtLjE3LS4xMS0uMy0uMjYtLjQxLS40NC0uMTEtLjE4LS4xNy0uNDEtLjE4LS42N2gtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3LS41OCAwLTEuMTEuMDktMS41OS4yNy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODkuNDguMTggMS4wMS4yOCAxLjU5LjI4LjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OS4zNC0uNDEuNi0uOTQuNzgtMS42LjE4LS42NS4yOC0xLjQ1LjI4LTIuMzl2LTEuOTJjMC0uOTQtLjA5LTEuNzQtLjI4LTIuMzktLjE4LS42Ni0uNDQtMS4xOS0uNzgtMS41OXptLS45MiA2LjE3YzAgLjYtLjA0IDEuMTEtLjEyIDEuNTMtLjA4LjQyLS4yLjc2LS4zNiAxLjAyLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDItLjA5LS40Mi0uMTMtLjkzLS4xMy0xLjUzdi0yLjVjMC0uNi4wNC0xLjExLjEzLTEuNTIuMDktLjQxLjIxLS43NC4zOC0xIC4xNi0uMjUuMzYtLjQzLjYtLjU1LjI0LS4xMS41MS0uMTcuODEtLjE3LjMxIDAgLjU4LjA2LjgxLjE3LjI0LjExLjQ0LjI5LjYuNTUuMTYuMjUuMjkuNTguMzcuOTkuMDguNDEuMTMuOTIuMTMgMS41MnYyLjUxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyLTMiPjxwYXRoIGQ9Ik0xMS42MSAxMi45N2MtLjE2LS4yNC0uMzYtLjQ2LS42Mi0uNjUtLjI1LS4xOS0uNTYtLjM1LS45My0uNDguMy0uMTQuNTctLjMuOC0uNS4yMy0uMi40Mi0uNDEuNTctLjY0LjE1LS4yMy4yNy0uNDYuMzQtLjcxLjA4LS4yNC4xMS0uNDkuMTEtLjczIDAtLjU1LS4wOS0xLjA0LS4yOC0xLjQ2LS4xOC0uNDItLjQ0LS43Ny0uNzgtMS4wNi0uMzMtLjI4LS43My0uNS0xLjItLjY0LS40NS0uMTMtLjk3LS4yLTEuNTMtLjItLjU1IDAtMS4wNi4wOC0xLjUyLjI0LS40Ny4xNy0uODcuNC0xLjIuNjktLjMzLjI5LS42LjYzLS43OCAxLjAzLS4yLjM5LS4yOS44My0uMjkgMS4yOWgxLjk4YzAtLjI2LjA1LS40OS4xNC0uNjkuMDktLjIuMjItLjM4LjM4LS41Mi4xNy0uMTQuMzYtLjI1LjU4LS4zMy4yMi0uMDguNDYtLjEyLjczLS4xMi42MSAwIDEuMDYuMTYgMS4zNi40Ny4zLjMxLjQ0Ljc1LjQ0IDEuMzIgMCAuMjctLjA0LjUyLS4xMi43NC0uMDguMjItLjIxLjQxLS4zOC41Ny0uMTcuMTYtLjM4LjI4LS42My4zNy0uMjUuMDktLjU1LjEzLS44OS4xM0g2LjcydjEuNTdINy45Yy4zNCAwIC42NC4wNC45MS4xMS4yNy4wOC41LjE5LjY5LjM1LjE5LjE2LjM0LjM2LjQ0LjYxLjEuMjQuMTYuNTQuMTYuODcgMCAuNjItLjE4IDEuMDktLjUzIDEuNDItLjM1LjMzLS44NC40OS0xLjQ1LjQ5LS4yOSAwLS41Ni0uMDQtLjgtLjEzLS4yNC0uMDgtLjQ0LS4yLS42MS0uMzYtLjE3LS4xNi0uMy0uMzQtLjM5LS41Ni0uMDktLjIyLS4xNC0uNDYtLjE0LS43Mkg0LjE5YzAgLjU1LjExIDEuMDMuMzIgMS40NS4yMS40Mi41Ljc3Ljg2IDEuMDVzLjc3LjQ5IDEuMjQuNjMuOTYuMjEgMS40OC4yMWMuNTcgMCAxLjA5LS4wOCAxLjU4LS4yMy40OS0uMTUuOTEtLjM4IDEuMjYtLjY4LjM2LS4zLjY0LS42Ni44NC0xLjEuMi0uNDMuMy0uOTMuMy0xLjQ4IDAtLjI5LS4wNC0uNTgtLjExLS44Ni0uMDgtLjI1LS4xOS0uNTEtLjM1LS43NnptOS4yNiAxLjRjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGMtLjM1LS4wNy0uNjQtLjE1LS44Ny0uMjMtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjUtLjE0LS4wOS0uMjMtLjE5LS4yOC0uMy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOXMuMDMtLjI4LjA5LS40MWMuMDYtLjEzLjE1LS4yNS4yNy0uMzQuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMS4xOS4wNy4zNS4xNy40OC4yOS4xMy4xMi4yMi4yNi4yOS40Mi4wNi4xNi4xLjMyLjEuNDloMS45NWMwLS4zOS0uMDgtLjc1LS4yNC0xLjA5LS4xNi0uMzQtLjM5LS42My0uNjktLjg4LS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5LS40My0uMTUtLjkyLS4yMi0xLjQ2LS4yMi0uNTEgMC0uOTguMDctMS4zOS4yMS0uNDEuMTQtLjc3LjMzLTEuMDYuNTctLjI5LjI0LS41MS41Mi0uNjcuODQtLjE2LjMyLS4yMy42NS0uMjMgMS4wMXMuMDguNjguMjMuOTZjLjE1LjI4LjM3LjUyLjY0LjczLjI3LjIxLjYuMzguOTguNTMuMzguMTQuODEuMjYgMS4yNy4zNi4zOS4wOC43MS4xNy45NS4yNnMuNDMuMTkuNTcuMjljLjEzLjEuMjIuMjIuMjcuMzQuMDUuMTIuMDcuMjUuMDcuMzkgMCAuMzItLjEzLjU3LS40Ljc3LS4yNy4yLS42Ni4yOS0xLjE3LjI5LS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0LS4xNy0uMTEtLjMtLjI2LS40MS0uNDQtLjExLS4xOC0uMTctLjQxLS4xOC0uNjdoLTEuODljMCAuMzYuMDguNzEuMjQgMS4wNS4xNi4zNC4zOS42NS43LjkzLjMxLjI3LjY5LjQ5IDEuMTUuNjYuNDYuMTcuOTguMjUgMS41OC4yNS41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItb2ZmIj48cGF0aCBkPSJNMTkuMDQgNC41NWwtMS40MiAxLjQyQzE2LjA3IDQuNzQgMTQuMTIgNCAxMiA0Yy0xLjgzIDAtMy41My41NS00Ljk1IDEuNDhsMS40NiAxLjQ2QzkuNTMgNi4zNSAxMC43MyA2IDEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAxLjI3LS4zNSAyLjQ3LS45NCAzLjQ5bDEuNDUgMS40NUMyMC40NSAxNi41MyAyMSAxNC44MyAyMSAxM2MwLTIuMTItLjc0LTQuMDctMS45Ny01LjYxbDEuNDItMS40Mi0xLjQxLTEuNDJ6TTE1IDFIOXYyaDZWMXptLTQgOC40NGwyIDJWOGgtMnYxLjQ0ek0zLjAyIDRMMS43NSA1LjI3IDQuNSA4LjAzQzMuNTUgOS40NSAzIDExLjE2IDMgMTNjMCA0Ljk3IDQuMDIgOSA5IDkgMS44NCAwIDMuNTUtLjU1IDQuOTgtMS41bDIuNSAyLjUgMS4yNy0xLjI3LTcuNzEtNy43MUwzLjAyIDR6TTEyIDIwYy0zLjg3IDAtNy0zLjEzLTctNyAwLTEuMjguMzUtMi40OC45NS0zLjUybDkuNTYgOS41NmMtMS4wMy42MS0yLjIzLjk2LTMuNTEuOTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG9uYWxpdHkiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NC0uNDktNy0zLjg1LTctNy45M3MzLjA1LTcuNDQgNy03LjkzdjE1Ljg2em0yLTE1Ljg2YzEuMDMuMTMgMiAuNDUgMi44Ny45M0gxM3YtLjkzek0xMyA3aDUuMjRjLjI1LjMxLjQ4LjY1LjY4IDFIMTNWN3ptMCAzaDYuNzRjLjA4LjMzLjE1LjY2LjE5IDFIMTN2LTF6bTAgOS45M1YxOWgyLjg3Yy0uODcuNDgtMS44NC44LTIuODcuOTN6TTE4LjI0IDE3SDEzdi0xaDUuOTJjLS4yLjM1LS40My42OS0uNjggMXptMS41LTNIMTN2LTFoNi45M2MtLjA0LjM0LS4xMS42Ny0uMTkgMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFuc2Zvcm0iPjxwYXRoIGQ9Ik0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHVuZSI+PHBhdGggZD0iTTMgMTd2Mmg2di0ySDN6TTMgNXYyaDEwVjVIM3ptMTAgMTZ2LTJoOHYtMmgtOHYtMmgtMnY2aDJ6TTcgOXYySDN2Mmg0djJoMlY5SDd6bTE0IDR2LTJIMTF2MmgxMHptLTYtNGgyVjdoNFY1aC00VjNoLTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbWZ5Ij48cGF0aCBkPSJNMyA5aDRWNUgzdjR6bTAgNWg0di00SDN2NHptNSAwaDR2LTRIOHY0em01IDBoNHYtNGgtNHY0ek04IDloNFY1SDh2NHptNS00djRoNFY1aC00em01IDloNHYtNGgtNHY0ek0zIDE5aDR2LTRIM3Y0em01IDBoNHYtNEg4djR6bTUgMGg0di00aC00djR6bTUgMGg0di00aC00djR6bTAtMTR2NGg0VjVoLTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1jb21wYWN0Ij48cGF0aCBkPSJNMyAxOWg2di03SDN2N3ptNyAwaDEydi03SDEwdjd6TTMgNXY2aDE5VjVIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWduZXR0ZSI+PHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNWMtNC40MiAwLTgtMi42OS04LTZzMy41OC02IDgtNiA4IDIuNjkgOCA2LTMuNTggNi04IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItYXV0byI+PHBhdGggZD0iTTYuODUgMTIuNjVoMi4zTDggOWwtMS4xNSAzLjY1ek0yMiA3bC0xLjIgNi4yOUwxOS4zIDdoLTEuNmwtMS40OSA2LjI5TDE1IDdoLS43NkMxMi43NyA1LjE3IDEwLjUzIDQgOCA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4YzMuMTMgMCA1Ljg0LTEuODEgNy4xNS00LjQzbC4xLjQzSDE3bDEuNS02LjFMMjAgMTZoMS43NWwyLjA1LTlIMjJ6bS0xMS43IDlsLS43LTJINi40bC0uNyAySDMuOEw3IDdoMmwzLjIgOWgtMS45eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWNsb3VkeSI+PHBhdGggZD0iTTE5LjM2IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjQtNC45NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1pbmNhbmRlc2NlbnQiPjxwYXRoIGQ9Ik0zLjU1IDE4LjU0bDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjh6TTExIDIyLjQ1aDJWMTkuNWgtMnYyLjk1ek00IDEwLjVIMXYyaDN2LTJ6bTExLTQuMTlWMS41SDl2NC44MUM3LjIxIDcuMzUgNiA5LjI4IDYgMTEuNWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMi4yMi0xLjIxLTQuMTUtMy01LjE5em01IDQuMTl2Mmgzdi0yaC0zem0tMi43NiA3LjY2bDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OS0xLjQgMS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWlyaWRlc2NlbnQiPjxwYXRoIGQ9Ik01IDE0LjVoMTR2LTZINXY2ek0xMSAuNTVWMy41aDJWLjU1aC0yem04LjA0IDIuNWwtMS43OSAxLjc5IDEuNDEgMS40MSAxLjgtMS43OS0xLjQyLTEuNDF6TTEzIDIyLjQ1VjE5LjVoLTJ2Mi45NWgyem03LjQ1LTMuOTFsLTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuOCAxLjQyLTEuNDJ6TTMuNTUgNC40NmwxLjc5IDEuNzkgMS40MS0xLjQxLTEuNzktMS43OS0xLjQxIDEuNDF6bTEuNDEgMTUuNDlsMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS43OSAxLjQxIDEuNDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2Itc3VubnkiPjxwYXRoIGQ9Ik02Ljc2IDQuODRsLTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzkgMS40Mi0xLjQxek00IDEwLjVIMXYyaDN2LTJ6bTktOS45NWgtMlYzLjVoMlYuNTV6bTcuNDUgMy45MWwtMS40MS0xLjQxLTEuNzkgMS43OSAxLjQxIDEuNDEgMS43OS0xLjc5em0tMy4yMSAxMy43bDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OS0xLjQgMS40ek0yMCAxMC41djJoM3YtMmgtM3ptLTgtNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bS0xIDE2Ljk1aDJWMTkuNWgtMnYyLjk1em0tNy40NS0zLjkxbDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjh6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoU28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBNbz1fZWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJpY29ucyIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iM2Qtcm90YXRpb24iPjxwYXRoIGQ9Ik03LjUyIDIxLjQ4QzQuMjUgMTkuOTQgMS45MSAxNi43NiAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDgtLjE2LS4wNi0uMjktLjEzLS40LS4yNC0uMTEtLjEtLjItLjIyLS4yNi0uMzctLjA2LS4xNC0uMDktLjMtLjA5LS40N2gtMS4zYzAgLjM2LjA3LjY4LjIxLjk1LjE0LjI3LjMzLjUuNTYuNjkuMjQuMTguNTEuMzIuODIuNDEuMy4xLjYyLjE1Ljk2LjE1LjM3IDAgLjcyLS4wNSAxLjAzLS4xNS4zMi0uMS42LS4yNS44My0uNDRzLjQyLS40My41NS0uNzJjLjEzLS4yOS4yLS42MS4yLS45NyAwLS4xOS0uMDItLjM4LS4wNy0uNTYtLjA1LS4xOC0uMTItLjM1LS4yMy0uNTEtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzEuMi0uMDkuMzctLjIuNTItLjMzLjE1LS4xMy4yNy0uMjcuMzctLjQyLjEtLjE1LjE3LS4zLjIyLS40Ni4wNS0uMTYuMDctLjMyLjA3LS40OCAwLS4zNi0uMDYtLjY4LS4xOC0uOTYtLjEyLS4yOC0uMjktLjUxLS41MS0uNjktLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDktLjA1LjE1LS4xNC4yNy0uMjUuMzctLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2Nlc3NpYmlsaXR5Ij48cGF0aCBkPSJNMTIgMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTkgN2gtNnYxM2gtMnYtNmgtMnY2SDlWOUgzVjdoMTh2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2Nlc3NpYmxlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjQiIHI9IjIiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTYuMTcgNWMtLjQxIDEuMTYtMS41MiAyLTIuODMgMi0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWMtMi4yOC40Ni00IDIuNDgtNCA0LjkgMCAyLjc2IDIuMjQgNSA1IDUgMi40MiAwIDQuNDQtMS43MiA0LjktNGgtMi4wN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJhbGFuY2UiPjxwYXRoIGQ9Ik00IDEwdjdoM3YtN0g0em02IDB2N2gzdi03aC0zek0yIDIyaDE5di0zSDJ2M3ptMTQtMTJ2N2gzdi03aC0zem0tNC41LTlMMiA2djJoMTlWNmwtOS41LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWNjb3VudC1iYWxhbmNlLXdhbGxldCI+PHBhdGggZD0iTTIxIDE4djFjMCAxLjEtLjkgMi0yIDJINWMtMS4xMSAwLTItLjktMi0yVjVjMC0xLjEuODktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWMtMS4xMSAwLTIgLjktMiAydjhjMCAxLjEuODkgMiAyIDJoOXptLTktMmgxMFY4SDEydjh6bTQtMi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJveCI+PHBhdGggZD0iTTMgNXYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDVjLTEuMTEgMC0yIC45LTIgMnptMTIgNGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6bS05IDhjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjFINnYtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgM2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTAgMTQuMmMtMi41IDAtNC43MS0xLjI4LTYtMy4yMi4wMy0xLjk5IDQtMy4wOCA2LTMuMDggMS45OSAwIDUuOTcgMS4wOSA2IDMuMDgtMS4yOSAxLjk0LTMuNSAzLjIyLTYgMy4yMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQiPjxwYXRoIGQ9Ik0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWFsZXJ0Ij48cGF0aCBkPSJNMTAuMDEgMjEuMDFjMCAxLjEuODkgMS45OSAxLjk5IDEuOTlzMS45OS0uODkgMS45OS0xLjk5aC0zLjk4em04Ljg3LTQuMTlWMTFjMC0zLjI1LTIuMjUtNS45Ny01LjI5LTYuNjl2LS43MkMxMy41OSAyLjcxIDEyLjg4IDIgMTIgMnMtMS41OS43MS0xLjU5IDEuNTl2LjcyQzcuMzcgNS4wMyA1LjEyIDcuNzUgNS4xMiAxMXY1LjgyTDMgMTguOTRWMjBoMTh2LTEuMDZsLTIuMTItMi4xMnpNMTYgMTMuMDFoLTN2M2gtMnYtM0g4VjExaDNWOGgydjNoM3YyLjAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMGgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtc2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTExIDloMlY2aDNWNGgtM1YxaC0ydjNIOHYyaDN2M3ptLTQgOWMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS05LjgzLTMuMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRoLS4wMWwtMS4xIDItMi43NiA1SDguNTNsLS4xMy0uMjdMNi4xNiA2bC0uOTUtMi0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjEzIDAtLjI1LS4xMS0uMjUtLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLWFkZCI+PHBhdGggZD0iTTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGFybS1vZmYiPjxwYXRoIGQ9Ik0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjg0LS4xNiAxLjY1LS40MyAyLjRsMS41MiAxLjUyYy41OC0xLjE5LjkxLTIuNTEuOTEtMy45MiAwLTQuOTctNC4wMy05LTktOS0xLjQxIDAtMi43My4zMy0zLjkyLjkxTDkuNiA2LjQzQzEwLjM1IDYuMTYgMTEuMTYgNiAxMiA2em0xMC0uMjhsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0yLjkyIDIuMjlMMS42NSAzLjU3IDIuOTggNC45bC0xLjExLjkzIDEuNDIgMS40MiAxLjExLS45NC44LjhDMy44MyA4LjY5IDMgMTAuNzUgMyAxM2MwIDQuOTcgNC4wMiA5IDkgOSAyLjI1IDAgNC4zMS0uODMgNS44OS0yLjJsMi4yIDIuMiAxLjI3LTEuMjdMMy44OSAzLjI3bC0uOTctLjk4em0xMy41NSAxNi4xQzE1LjI2IDE5LjM5IDEzLjcgMjAgMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS43LjYxLTMuMjYgMS42MS00LjQ3bDkuODYgOS44NnpNOC4wMiAzLjI4TDYuNiAxLjg2bC0uODYuNzEgMS40MiAxLjQyLjg2LS43MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGFybS1vbiI+PHBhdGggZD0iTTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMS40Ni01LjQ3TDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2LTQuOTMgNC45NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGwtb3V0Ij48cGF0aCBkPSJNMTYuMjEgNC4xNmw0IDR2LTR6bTQgMTJsLTQgNGg0em0tMTIgNGwtNC00djR6bS00LTEybDQtNGgtNHptMTIuOTUtLjk1Yy0yLjczLTIuNzMtNy4xNy0yLjczLTkuOSAwcy0yLjczIDcuMTcgMCA5LjkgNy4xNyAyLjczIDkuOSAwIDIuNzMtNy4xNiAwLTkuOXptLTEuMSA4LjhjLTIuMTMgMi4xMy01LjU3IDIuMTMtNy43IDBzLTIuMTMtNS41NyAwLTcuNyA1LjU3LTIuMTMgNy43IDAgMi4xMyA1LjU3IDAgNy43eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFuZHJvaWQiPjxwYXRoIGQ9Ik02IDE4YzAgLjU1LjQ1IDEgMSAxaDF2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgydjMuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjVWMTloMWMuNTUgMCAxLS40NSAxLTFWOEg2djEwek0zLjUgOEMyLjY3IDggMiA4LjY3IDIgOS41djdjMCAuODMuNjcgMS41IDEuNSAxLjVTNSAxNy4zMyA1IDE2LjV2LTdDNSA4LjY3IDQuMzMgOCAzLjUgOHptMTcgMGMtLjgzIDAtMS41LjY3LTEuNSAxLjV2N2MwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjV2LTdjMC0uODMtLjY3LTEuNS0xLjUtMS41em0tNC45Ny01Ljg0bDEuMy0xLjNjLjItLjIuMi0uNTEgMC0uNzEtLjItLjItLjUxLS4yLS43MSAwbC0xLjQ4IDEuNDhDMTMuODUgMS4yMyAxMi45NSAxIDEyIDFjLS45NiAwLTEuODYuMjMtMi42Ni42M0w3Ljg1LjE1Yy0uMi0uMi0uNTEtLjItLjcxIDAtLjIuMi0uMi41MSAwIC43MWwxLjMxIDEuMzFDNi45NyAzLjI2IDYgNS4wMSA2IDdoMTJjMC0xLjk5LS45Ny0zLjc1LTIuNDctNC44NHpNMTAgNUg5VjRoMXYxem01IDBoLTFWNGgxdjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYW5ub3VuY2VtZW50Ij48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDloLTJWNWgydjZ6bTAgNGgtMnYtMmgydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXBwcyI+PHBhdGggZD0iTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02LTEwdjRoNFY0aC00em0tNiA0aDRWNGgtNHY0em02IDZoNHYtNGgtNHY0em0wIDZoNHYtNGgtNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFyY2hpdmUiPjxwYXRoIGQ9Ik0yMC41NCA1LjIzbC0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNMTIgMTcuNUw2LjUgMTJIMTB2LTJoNHYyaDMuNUwxMiAxNy41ek01LjEyIDVsLjgxLTFoMTJsLjk0IDFINS4xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1iYWNrIj48cGF0aCBkPSJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kb3dud2FyZCI+PHBhdGggZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLWRvd24iPjxwYXRoIGQ9Ik03IDEwbDUgNSA1LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJyb3ctZHJvcC1kb3duLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTJsLTQtNGg4bC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJyb3ctZHJvcC11cCI+PHBhdGggZD0iTTcgMTRsNS01IDUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1mb3J3YXJkIj48cGF0aCBkPSJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy11cHdhcmQiPjxwYXRoIGQ9Ik00IDEybDEuNDEgMS40MUwxMSA3LjgzVjIwaDJWNy44M2w1LjU4IDUuNTlMMjAgMTJsLTgtOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNwZWN0LXJhdGlvIj48cGF0aCBkPSJNMTkgMTJoLTJ2M2gtM3YyaDV2LTV6TTcgOWgzVjdINXY1aDJWOXptMTQtNkgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2Vzc21lbnQiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50Ij48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIgMTRIN3YtMmg3djJ6bTMtNEg3di0yaDEwdjJ6bTAtNEg3VjdoMTB2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWluZCI+PHBhdGggZD0iTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0wIDRjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTEuNGMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjFWMTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1sYXRlIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNiAxNWgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NnptLTEtOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTQgMTJoLTR2M2wtNS01IDUtNXYzaDR2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LXJldHVybmVkIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgMTVsLTUtNWgzVjloNHY0aDNsLTUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LXR1cm5lZC1pbiI+PHBhdGggZD0iTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMiAxNGwtNC00IDEuNDEtMS40MUwxMCAxNC4xN2w2LjU5LTYuNTlMMTggOWwtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImF0dGFjaG1lbnQiPjxwYXRoIGQ9Ik0yIDEyLjVDMiA5LjQ2IDQuNDYgNyA3LjUgN0gxOGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNEg5LjVDOC4xMiAxNSA3IDEzLjg4IDcgMTIuNVM4LjEyIDEwIDkuNSAxMEgxN3YySDkuNDFjLS41NSAwLS41NSAxIDAgMUgxOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJINy41QzUuNTcgOSA0IDEwLjU3IDQgMTIuNVM1LjU3IDE2IDcuNSAxNkgxN3YySDcuNUM0LjQ2IDE4IDIgMTUuNTQgMiAxMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImF1dG9yZW5ldyI+PHBhdGggZD0iTTEyIDZ2M2w0LTQtNC00djNjLTQuNDIgMC04IDMuNTgtOCA4IDAgMS41Ny40NiAzLjAzIDEuMjQgNC4yNkw2LjcgMTQuOGMtLjQ1LS44My0uNy0xLjc5LS43LTIuOCAwLTMuMzEgMi42OS02IDYtNnptNi43NiAxLjc0TDE3LjMgOS4yYy40NC44NC43IDEuNzkuNyAyLjggMCAzLjMxLTIuNjkgNi02IDZ2LTNsLTQgNCA0IDR2LTNjNC40MiAwIDgtMy41OCA4LTggMC0xLjU3LS40Ni0zLjAzLTEuMjQtNC4yNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJiYWNrc3BhY2UiPjxwYXRoIGQ9Ik0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0zIDEyLjU5TDE3LjU5IDE3IDE0IDEzLjQxIDEwLjQxIDE3IDkgMTUuNTkgMTIuNTkgMTIgOSA4LjQxIDEwLjQxIDcgMTQgMTAuNTkgMTcuNTkgNyAxOSA4LjQxIDE1LjQxIDEyIDE5IDE1LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJhY2t1cCI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmxvY2siPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUM0LjYzIDE1LjU1IDQgMTMuODUgNCAxMnptOCA4Yy0xLjg1IDAtMy41NS0uNjMtNC45LTEuNjlMMTguMzEgNy4xQzE5LjM3IDguNDUgMjAgMTAuMTUgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYm9vayI+PHBhdGggZD0iTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rbWFyayI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rbWFyay1ib3JkZXIiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTVsLTUtMi4xOEw3IDE4VjVoMTB2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnVnLXJlcG9ydCI+PHBhdGggZD0iTTIwIDhoLTIuODFjLS40NS0uNzgtMS4wNy0xLjQ1LTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJidWlsZCI+PHBhdGggZD0iTTIyLjcgMTlsLTkuMS05LjFjLjktMi4zLjQtNS0xLjUtNi45LTItMi01LTIuNC03LjQtMS4zTDkgNiA2IDkgMS42IDQuN0MuNCA3LjEuOSAxMC4xIDIuOSAxMi4xYzEuOSAxLjkgNC42IDIuNCA2LjkgMS41bDkuMSA5LjFjLjQuNCAxIC40IDEuNCAwbDIuMy0yLjNjLjUtLjQuNS0xLjEuMS0xLjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FjaGVkIj48cGF0aCBkPSJNMTkgOGwtNCA0aDNjMCAzLjMxLTIuNjkgNi02IDYtMS4wMSAwLTEuOTctLjI1LTIuOC0uN2wtMS40NiAxLjQ2QzguOTcgMTkuNTQgMTAuNDMgMjAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkMxNS4wMyA0LjQ2IDEzLjU3IDQgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhLWVuaGFuY2UiPjxwYXRoIGQ9Ik05IDNMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAzSDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLTFsMS4yNS0yLjc1TDE2IDEzbC0yLjc1LTEuMjVMMTIgOWwtMS4yNSAyLjc1TDggMTNsMi43NSAxLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbmNlbCI+PHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhcmQtZ2lmdGNhcmQiPjxwYXRoIGQ9Ik0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTEgMC0xLjY2LTEuMzQtMy0zLTMtMS4wNSAwLTEuOTYuNTQtMi41IDEuMzVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYXJkLW1lbWJlcnNoaXAiPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDR2NWw0LTIgNCAydi01aDRjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMi0yLTJ6bTAgMTNINHYtMmgxNnYyem0wLTVINFY0aDE2djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FyZC10cmF2ZWwiPjxwYXRoIGQ9Ik0yMCA2aC0zVjRjMC0xLjExLS44OS0yLTItMkg5Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6TTkgNGg2djJIOVY0em0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoM3YyaDJWOGg2djJoMlY4aDN2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGFuZ2UtaGlzdG9yeSI+PHBhdGggZD0iTTEyIDcuNzdMMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDRMMiAyMGgyMEwxMiA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrIj48cGF0aCBkPSJNOSAxNi4xN0w0LjgzIDEybC0xLjQyIDEuNDFMOSAxOSAyMSA3bC0xLjQxLTEuNDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2stYm94Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjkgMi0yVjVjMC0xLjEtLjg5LTItMi0yem0tOSAxNGwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIj48cGF0aCBkPSJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGVjay1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tbGVmdCI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hldnJvbi1yaWdodCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNocm9tZS1yZWFkZXItbW9kZSI+PHBhdGggZD0iTTEzIDEyaDd2MS41aC03em0wLTIuNWg3VjExaC03em0wIDVoN1YxNmgtN3pNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTVoLTlWNmg5djEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsYXNzIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsZWFyIj48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3NlIj48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQuNSAxNEg4Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zbC4xNC4wMUM4LjU4IDguMjggMTAuMTMgNyAxMiA3YzIuMjEgMCA0IDEuNzkgNCA0aC41YzEuMzggMCAyLjUgMS4xMiAyLjUgMi41UzE3Ljg4IDE2IDE2LjUgMTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtZG9uZSI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTAgMTdsLTMuNS0zLjUgMS40MS0xLjQxTDEwIDE0LjE3IDE1LjE4IDlsMS40MSAxLjQxTDEwIDE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLWRvd25sb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNyAxM2wtNSA1LTUtNWgzVjloNHY0aDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtb2ZmIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDRjLTEuNDggMC0yLjg1LjQzLTQuMDEgMS4xN2wxLjQ2IDEuNDZDMTAuMjEgNi4yMyAxMS4wOCA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTljMS42NiAwIDMgMS4zNCAzIDMgMCAxLjEzLS42NCAyLjExLTEuNTYgMi42MmwxLjQ1IDEuNDVDMjMuMTYgMTguMTYgMjQgMTYuNjggMjQgMTVjMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTMgNS4yN2wyLjc1IDIuNzRDMi41NiA4LjE1IDAgMTAuNzcgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxMS43M2wyIDJMMjEgMjAuNzMgNC4yNyA0IDMgNS4yN3pNNy43MyAxMGw4IDhINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxLjczeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLXF1ZXVlIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aC43MUM3LjM3IDcuNjkgOS40OCA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTljMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtdXBsb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2RlIj48cGF0aCBkPSJNOS40IDE2LjZMNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwbDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb21wYXJlLWFycm93cyI+PHBhdGggZD0iTTkuMDEgMTRIMnYyaDcuMDF2M0wxMyAxNWwtMy45OS00djN6bTUuOTgtMXYtM0gyMlY4aC03LjAxVjVMMTEgOWwzLjk5IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1jb3B5Ij48cGF0aCBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptMyA0SDhjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTFjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNkg4VjdoMTF2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1jdXQiPjxwYXRoIGQ9Ik05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1wYXN0ZSI+PHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb3B5cmlnaHQiPjxwYXRoIGQ9Ik0xMC4wOCAxMC44NmMuMDUtLjMzLjE2LS42Mi4zLS44N3MuMzQtLjQ2LjU5LS42MmMuMjQtLjE1LjU0LS4yMi45MS0uMjMuMjMuMDEuNDQuMDUuNjMuMTMuMi4wOS4zOC4yMS41Mi4zNnMuMjUuMzMuMzQuNTMuMTMuNDIuMTQuNjRoMS43OWMtLjAyLS40Ny0uMTEtLjktLjI4LTEuMjlzLS40LS43My0uNy0xLjAxLS42Ni0uNS0xLjA4LS42Ni0uODgtLjIzLTEuMzktLjIzYy0uNjUgMC0xLjIyLjExLTEuNy4zNHMtLjg4LjUzLTEuMi45Mi0uNTYuODQtLjcxIDEuMzZTOCAxMS4yOSA4IDExLjg3di4yN2MwIC41OC4wOCAxLjEyLjIzIDEuNjRzLjM5Ljk3LjcxIDEuMzUuNzIuNjkgMS4yLjkxIDEuMDUuMzQgMS43LjM0Yy40NyAwIC45MS0uMDggMS4zMi0uMjNzLjc3LS4zNiAxLjA4LS42My41Ni0uNTguNzQtLjk0LjI5LS43NC4zLTEuMTVoLTEuNzljLS4wMS4yMS0uMDYuNC0uMTUuNThzLS4yMS4zMy0uMzYuNDYtLjMyLjIzLS41Mi4zYy0uMTkuMDctLjM5LjA5LS42LjEtLjM2LS4wMS0uNjYtLjA4LS44OS0uMjMtLjI1LS4xNi0uNDUtLjM3LS41OS0uNjJzLS4yNS0uNTUtLjMtLjg4LS4wOC0uNjctLjA4LTF2LS4yN2MwLS4zNS4wMy0uNjguMDgtMS4wMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlYXRlIj48cGF0aCBkPSJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyZWF0ZS1uZXctZm9sZGVyIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTEgOGgtM3YzaC0ydi0zaC0zdi0yaDNWOWgydjNoM3YyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyZWRpdC1jYXJkIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRhc2hib2FyZCI+PHBhdGggZD0iTTMgMTNoOFYzSDN2MTB6bTAgOGg4di02SDN2NnptMTAgMGg4VjExaC04djEwem0wLTE4djZoOFYzaC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRhdGUtcmFuZ2UiPjxwYXRoIGQ9Ik05IDExSDd2Mmgydi0yem00IDBoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem0yLTdoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUiPjxwYXRoIGQ9Ik02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVsZXRlLWZvcmV2ZXIiPjxwYXRoIGQ9Ik02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTIuNDYtNy4xMmwxLjQxLTEuNDFMMTIgMTIuNTlsMi4xMi0yLjEyIDEuNDEgMS40MUwxMy40MSAxNGwyLjEyIDIuMTItMS40MSAxLjQxTDEyIDE1LjQxbC0yLjEyIDIuMTItMS40MS0xLjQxTDEwLjU5IDE0bC0yLjEzLTIuMTJ6TTE1LjUgNGwtMS0xaC01bC0xIDFINXYyaDE0VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVsZXRlLXN3ZWVwIj48cGF0aCBkPSJNMTUgMTZoNHYyaC00em0wLThoN3YyaC03em0wIDRoNnYyaC02ek0zIDE4YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMlY4SDN2MTB6TTE0IDVoLTNsLTEtMUg2TDUgNUgydjJoMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVzY3JpcHRpb24iPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTZIOHYtMmg4djJ6bTAtNEg4di0yaDh2MnptLTMtNVYzLjVMMTguNSA5SDEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRucyI+PHBhdGggZD0iTTIwIDEzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMCAzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb25lIj48cGF0aCBkPSJNOSAxNi4yTDQuOCAxMmwtMS40IDEuNEw5IDE5IDIxIDdsLTEuNC0xLjRMOSAxNi4yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbmUtYWxsIj48cGF0aCBkPSJNMTggN2wtMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MUw2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb251dC1sYXJnZSI+PHBhdGggZD0iTTExIDUuMDhWMmMtNSAuNS05IDQuODEtOSAxMHM0IDkuNSA5IDEwdi0zLjA4Yy0zLS40OC02LTMuNC02LTYuOTJzMy02LjQ0IDYtNi45MnpNMTguOTcgMTFIMjJjLS40Ny01LTQtOC41My05LTl2My4wOEMxNiA1LjUxIDE4LjU0IDggMTguOTcgMTF6TTEzIDE4LjkyVjIyYzUtLjQ3IDguNTMtNCA5LTloLTMuMDNjLS40MyAzLTIuOTcgNS40OS01Ljk3IDUuOTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG9udXQtc21hbGwiPjxwYXRoIGQ9Ik0xMSA5LjE2VjJjLTUgLjUtOSA0Ljc5LTkgMTBzNCA5LjUgOSAxMHYtNy4xNmMtMS0uNDEtMi0xLjUyLTItMi44NHMxLTIuNDMgMi0yLjg0ek0xNC44NiAxMUgyMmMtLjQ4LTQuNzUtNC04LjUzLTktOXY3LjE2YzEgLjMgMS41Mi45OCAxLjg2IDEuODR6TTEzIDE0Ljg0VjIyYzUtLjQ3IDguNTItNC4yNSA5LTloLTcuMTRjLS4zNC44Ni0uODYgMS41NC0xLjg2IDEuODR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZHJhZnRzIj48cGF0aCBkPSJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxM0wzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZWplY3QiPjxwYXRoIGQ9Ik01IDE3aDE0djJINXptNy0xMkw1LjMzIDE1aDEzLjM0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVycm9yIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJlcnJvci1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem0uOTktNUM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV1cm8tc3ltYm9sIj48cGF0aCBkPSJNMTUgMTguNWMtMi41MSAwLTQuNjgtMS40Mi01Ljc2LTMuNUgxNXYtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1VjlIOS4yNEMxMC4zMiA2LjkyIDEyLjUgNS41IDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQzE5LjQxIDMuODcgMTcuMyAzIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2Yy0uMDQuMzMtLjA2LjY2LS4wNiAxIDAgLjM0LjAyLjY3LjA2IDFIM3YyaDMuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV2ZW50Ij48cGF0aCBkPSJNMTcgMTJoLTV2NWg1di01ek0xNiAxdjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJoLTFWMWgtMnptMyAxOEg1VjhoMTR2MTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXZlbnQtc2VhdCI+PHBhdGggZD0iTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0em0xNS04aDN2M2gtM3pNMiAxMGgzdjNIMnptMTUgM0g3VjVjMC0xLjEuOS0yIDItMmg2YzEuMSAwIDIgLjkgMiAydjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhpdC10by1hcHAiPjxwYXRoIGQ9Ik0xMC4wOSAxNS41OUwxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwYW5kLWxlc3MiPjxwYXRoIGQ9Ik0xMiA4bC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBhbmQtbW9yZSI+PHBhdGggZD0iTTE2LjU5IDguNTlMMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBsb3JlIj48cGF0aCBkPSJNMTIgMTAuOWMtLjYxIDAtMS4xLjQ5LTEuMSAxLjFzLjQ5IDEuMSAxLjEgMS4xYy42MSAwIDEuMS0uNDkgMS4xLTEuMXMtLjQ5LTEuMS0xLjEtMS4xek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0yLjE5IDEyLjE5TDYgMThsMy44MS04LjE5TDE4IDZsLTMuODEgOC4xOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHRlbnNpb24iPjxwYXRoIGQ9Ik0yMC41IDExSDE5VjdjMC0xLjEtLjktMi0yLTJoLTRWMy41QzEzIDIuMTIgMTEuODggMSAxMC41IDFTOCAyLjEyIDggMy41VjVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhIMy41YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LTEuNWMwLTEuNDkgMS4yMS0yLjcgMi43LTIuNyAxLjQ5IDAgMi43IDEuMjEgMi43IDIuN1YyMkgxN2MxLjEgMCAyLS45IDItMnYtNGgxLjVjMS4zOCAwIDIuNS0xLjEyIDIuNS0yLjVTMjEuODggMTEgMjAuNSAxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmYWNlIj48cGF0aCBkPSJNOSAxMS43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6bTYgMGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtLjI5LjAyLS41OC4wNS0uODYgMi4zNi0xLjA1IDQuMjMtMi45OCA1LjIxLTUuMzdDMTEuMDcgOC4zMyAxNC4wNSAxMCAxNy40MiAxMGMuNzggMCAxLjUzLS4wOSAyLjI1LS4yNi4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmF2b3JpdGUiPjxwYXRoIGQ9Ik0xMiAyMS4zNWwtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZhdm9yaXRlLWJvcmRlciI+PHBhdGggZD0iTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NWwtLjEuMS0uMS0uMUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjUgNCA2LjUgNS41IDUgNy41IDVjMS41NCAwIDMuMDQuOTkgMy41NyAyLjM2aDEuODdDMTMuNDYgNS45OSAxNC45NiA1IDE2LjUgNWMyIDAgMy41IDEuNSAzLjUgMy41IDAgMi44OS0zLjE0IDUuNzQtNy45IDEwLjA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZlZWRiYWNrIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbGUtZG93bmxvYWQiPjxwYXRoIGQ9Ik0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsZS11cGxvYWQiPjxwYXRoIGQ9Ik05IDE2aDZ2LTZoNGwtNy03LTcgN2g0em0tNCAyaDE0djJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItbGlzdCI+PHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmQtaW4tcGFnZSI+PHBhdGggZD0iTTIwIDE5LjU5VjhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjLjQ1IDAgLjg1LS4xNSAxLjE5LS40bC00LjQzLTQuNDNjLS44LjUyLTEuNzQuODMtMi43Ni44My0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDVjMCAxLjAyLS4zMSAxLjk2LS44MyAyLjc1TDIwIDE5LjU5ek05IDEzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmQtcmVwbGFjZSI+PHBhdGggZD0iTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QzE0LjY4IDQuNzggMTIuOTMgNCAxMSA0Yy0zLjUzIDAtNi40MyAyLjYxLTYuOTIgNkg2LjFjLjQ2LTIuMjggMi40OC00IDQuOS00em01LjY0IDkuMTRjLjY2LS45IDEuMTItMS45NyAxLjI4LTMuMTRIMTUuOWMtLjQ2IDIuMjgtMi40OCA0LTQuOSA0LTEuMzggMC0yLjYzLS41Ni0zLjU0LTEuNDZMMTAgMTJINHY2bDIuMDUtMi4wNUM3LjMyIDE3LjIyIDkuMDcgMTggMTEgMThjMS41NSAwIDIuOTgtLjUxIDQuMTQtMS4zNkwyMCAyMS40OSAyMS40OSAyMGwtNC44NS00Ljg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmdlcnByaW50Ij48cGF0aCBkPSJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjItLjEzLS4yNC0uMDQtLjU1LjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjctLjA5LjE4LS4yNi4yOC0uNDQuMjh6TTMuNSA5LjcyYy0uMSAwLS4yLS4wMy0uMjktLjA5LS4yMy0uMTYtLjI4LS40Ny0uMTItLjcuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1LjE2LjIyLjExLjU0LS4xMi43LS4yMy4xNi0uNTQuMTEtLjctLjEyLS45LTEuMjYtMi4wNC0yLjI1LTMuMzktMi45NC0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2MtLjEzIDAtLjI2LS4wNS0uMzUtLjE1LS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjEtMS40LTEuMzktMi4xNy0zLjI0LTIuMTctNS4yMiAwLTEuNjIgMS4zOC0yLjk0IDMuMDgtMi45NCAxLjcgMCAzLjA4IDEuMzIgMy4wOCAyLjk0IDAgMS4wNy45MyAxLjk0IDIuMDggMS45NHMyLjA4LS44NyAyLjA4LTEuOTRjMC0zLjc3LTMuMjUtNi44My03LjI1LTYuODMtMi44NCAwLTUuNDQgMS41OC02LjYxIDQuMDMtLjM5LjgxLS41OSAxLjc2LS41OSAyLjggMCAuNzguMDcgMi4wMS42NyAzLjYxLjEuMjYtLjAzLjU1LS4yOS42NC0uMjYuMS0uNTUtLjA0LS42NC0uMjktLjQ5LTEuMzEtLjczLTIuNjEtLjczLTMuOTYgMC0xLjIuMjMtMi4yOS42OC0zLjI0IDEuMzMtMi43OSA0LjI4LTQuNiA3LjUxLTQuNiA0LjU1IDAgOC4yNSAzLjUxIDguMjUgNy44MyAwIDEuNjItMS4zOCAyLjk0LTMuMDggMi45NHMtMy4wOC0xLjMyLTMuMDgtMi45NGMwLTEuMDctLjkzLTEuOTQtMi4wOC0xLjk0cy0yLjA4Ljg3LTIuMDggMS45NGMwIDEuNzEuNjYgMy4zMSAxLjg3IDQuNTEuOTUuOTQgMS44NiAxLjQ2IDMuMjcgMS44NS4yNy4wNy40Mi4zNS4zNS42MS0uMDUuMjMtLjI2LjM4LS40Ny4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaXJzdC1wYWdlIj48cGF0aCBkPSJNMTguNDEgMTYuNTlMMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhZyI+PHBhdGggZD0iTTE0LjQgNkwxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpZ2h0LWxhbmQiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTcuMTgtNS43M2w0LjM1IDEuMTYgNS4zMSAxLjQyYy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxLjYuNDMgNS4zMSAxLjQzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsaWdodC10YWtlb2ZmIj48cGF0aCBkPSJNMi41IDE5aDE5djJoLTE5em0xOS41Ny05LjM2Yy0uMjEtLjgtMS4wNC0xLjI4LTEuODQtMS4wNkwxNC45MiAxMGwtNi45LTYuNDMtMS45My41MSA0LjE0IDcuMTctNC45NyAxLjMzLTEuOTctMS41NC0xLjQ1LjM5IDEuODIgMy4xNi43NyAxLjMzIDEuNi0uNDMgNS4zMS0xLjQyIDQuMzUtMS4xNkwyMSAxMS40OWMuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpcC10by1iYWNrIj48cGF0aCBkPSJNOSA3SDd2MmgyVjd6bTAgNEg3djJoMnYtMnptMC04Yy0xLjExIDAtMiAuOS0yIDJoMlYzem00IDEyaC0ydjJoMnYtMnptNi0xMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS02IDBoLTJ2MmgyVjN6TTkgMTd2LTJIN2MwIDEuMS44OSAyIDIgMnptMTAtNGgydi0yaC0ydjJ6bTAtNGgyVjdoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6TTUgN0gzdjEyYzAgMS4xLjg5IDIgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpcC10by1mcm9udCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNjMCAxLjEuODkgMiAyIDJ6TTMgOWgyVjdIM3Yyem0xMiAxMmgydi0yaC0ydjJ6bTQtMThIOWMtMS4xMSAwLTIgLjktMiAydjEwYzAgMS4xLjg5IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXIiPjxwYXRoIGQ9Ik0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXItb3BlbiI+PHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXItc2hhcmVkIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS01IDNjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem00IDhoLTh2LTFjMC0xLjMzIDIuNjctMiA0LTJzNCAuNjcgNCAydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZm9udC1kb3dubG9hZCI+PHBhdGggZD0iTTkuOTMgMTMuNWg0LjE0TDEyIDcuOTh6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNC4wNSAxNi41bC0xLjE0LTNIOS4xN2wtMS4xMiAzSDUuOTZsNS4xMS0xM2gxLjg2bDUuMTEgMTNoLTIuMDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZm9yd2FyZCI+PHBhdGggZD0iTTEyIDhWNGw4IDgtOCA4di00SDRWOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmdWxsc2NyZWVuIj48cGF0aCBkPSJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmdWxsc2NyZWVuLWV4aXQiPjxwYXRoIGQ9Ik01IDE2aDN2M2gydi01SDV2MnptMy04SDV2Mmg1VjVIOHYzem02IDExaDJ2LTNoM3YtMmgtNXY1em0yLTExVjVoLTJ2NWg1VjhoLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZy10cmFuc2xhdGUiPjxwYXRoIGQ9Ik0yMCA1aC05LjEyTDEwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmg3bDEgM2g4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6TTcuMTcgMTQuNTljLTIuMjUgMC00LjA5LTEuODMtNC4wOS00LjA5czEuODMtNC4wOSA0LjA5LTQuMDljMS4wNCAwIDEuOTkuMzcgMi43NCAxLjA3bC4wNy4wNi0xLjIzIDEuMTgtLjA2LS4wNWMtLjI5LS4yNy0uNzgtLjU5LTEuNTItLjU5LTEuMzEgMC0yLjM4IDEuMDktMi4zOCAyLjQyczEuMDcgMi40MiAyLjM4IDIuNDJjMS4zNyAwIDEuOTYtLjg3IDIuMTItMS40Nkg3LjA4VjkuOTFoMy45NWwuMDEuMDdjLjA0LjIxLjA1LjQuMDUuNjEgMCAyLjM1LTEuNjEgNC0zLjkyIDR6bTYuMDMtMS43MWMuMzMuNi43NCAxLjE4IDEuMTkgMS43bC0uNTQuNTMtLjY1LTIuMjN6bS43Ny0uNzZoLS45OWwtLjMxLTEuMDRoMy45OXMtLjM0IDEuMzEtMS41NiAyLjc0Yy0uNTItLjYyLS44OS0xLjIzLTEuMTMtMS43ek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTdsMi0yLS44MS0yLjc3LjkyLS45MkwxNy43OSAxOGwuNzMtLjczLTIuNzEtMi42OGMuOS0xLjAzIDEuNi0yLjI1IDEuOTItMy41MUgxOXYtMS4wNGgtMy42NFY5aC0xLjA0djEuMDRoLTEuOTZMMTEuMTggNkgyMGMuNTUgMCAxIC40NSAxIDF2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2F2ZWwiPjxwYXRoIGQ9Ik0xIDIxaDEydjJIMXpNNS4yNDUgOC4wN2wyLjgzLTIuODI3IDE0LjE0IDE0LjE0Mi0yLjgyOCAyLjgyOHpNMTIuMzE3IDFsNS42NTcgNS42NTYtMi44MyAyLjgzLTUuNjU0LTUuNjZ6TTMuODI1IDkuNDg1bDUuNjU3IDUuNjU3LTIuODI4IDIuODI4LTUuNjU3LTUuNjU3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imdlc3R1cmUiPjxwYXRoIGQ9Ik00LjU5IDYuODljLjctLjcxIDEuNC0xLjM1IDEuNzEtMS4yMi41LjIgMCAxLjAzLS4zIDEuNTItLjI1LjQyLTIuODYgMy44OS0yLjg2IDYuMzEgMCAxLjI4LjQ4IDIuMzQgMS4zNCAyLjk4Ljc1LjU2IDEuNzQuNzMgMi42NC40NiAxLjA3LS4zMSAxLjk1LTEuNCAzLjA2LTIuNzcgMS4yMS0xLjQ5IDIuODMtMy40NCA0LjA4LTMuNDQgMS42MyAwIDEuNjUgMS4wMSAxLjc2IDEuNzktMy43OC42NC01LjM4IDMuNjctNS4zOCA1LjM3IDAgMS43IDEuNDQgMy4wOSAzLjIxIDMuMDkgMS42MyAwIDQuMjktMS4zMyA0LjY5LTYuMUgyMXYtMi41aC0yLjQ3Yy0uMTUtMS42NS0xLjA5LTQuMi00LjAzLTQuMi0yLjI1IDAtNC4xOCAxLjkxLTQuOTQgMi44NC0uNTguNzMtMi4wNiAyLjQ4LTIuMjkgMi43Mi0uMjUuMy0uNjguODQtMS4xMS44NC0uNDUgMC0uNzItLjgzLS4zNi0xLjkyLjM1LTEuMDkgMS40LTIuODYgMS44NS0zLjUyLjc4LTEuMTQgMS4zLTEuOTIgMS4zLTMuMjhDOC45NSAzLjY5IDcuMzEgMyA2LjQ0IDMgNS4xMiAzIDMuOTcgNCAzLjcyIDQuMjVjLS4zNi4zNi0uNjYuNjYtLjg4LjkzbDEuNzUgMS43MXptOS4yOSAxMS42NmMtLjMxIDAtLjc0LS4yNi0uNzQtLjcyIDAtLjYuNzMtMi4yIDIuODctMi43Ni0uMyAyLjY5LTEuNDMgMy40OC0yLjEzIDMuNDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2V0LWFwcCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJnaWYiPjxwYXRoIGQ9Ik0xMS41IDlIMTN2NmgtMS41ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWRlIj48cGF0aCBkPSJNMTIgMTcuMjdMMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JvdXAtd29yayI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTggMTcuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6TTkuNSA4YzAtMS4zOCAxLjEyLTIuNSAyLjUtMi41czIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNVM5LjUgOS4zOCA5LjUgOHptNi41IDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVscCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzVsLS45LjkyQzEzLjQ1IDEyLjkgMTMgMTMuNSAxMyAxNWgtMnYtLjVjMC0xLjEuNDUtMi4xIDEuMTctMi44M2wxLjI0LTEuMjZjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJIOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgLjg4LS4zNiAxLjY4LS45MyAyLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhlbHAtb3V0bGluZSI+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGlnaGxpZ2h0LW9mZiI+PHBhdGggZD0iTTE0LjU5IDhMMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoaXN0b3J5Ij48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhvbWUiPjxwYXRoIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG91cmdsYXNzLWVtcHR5Ij48cGF0aCBkPSJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6bS00LTVsLTQtNFY0aDh2My41bC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG91cmdsYXNzLWZ1bGwiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJodHRwIj48cGF0aCBkPSJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaHR0cHMiPjxwYXRoIGQ9Ik0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bS02IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjEtOUg4LjlWNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImltcG9ydGFudC1kZXZpY2VzIj48cGF0aCBkPSJNMjMgMTEuMDFMMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJjMCAxLjEuODkgMiAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YzAtMS4xMS0uOS0yLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC44OS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xMS0uOS0yLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5kZXRlcm1pbmF0ZS1jaGVjay1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgMTBIN3YtMmgxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluZm8iPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluZm8tb3V0bGluZSI+PHBhdGggZD0iTTExIDE3aDJ2LTZoLTJ2NnptMS0xNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTExIDloMlY3aC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5wdXQiPjxwYXRoIGQ9Ik0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGMwLTEuMTEtLjktMi0yLTJ6TTExIDE2bDQtNC00LTR2M0gxdjJoMTB2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJpbnZlcnQtY29sb3JzIj48cGF0aCBkPSJNMTcuNjYgNy45M0wxMiAyLjI3IDYuMzQgNy45M2MtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxQzcuOSAyMC44IDkuOTUgMjEuNTggMTIgMjEuNThjMi4wNSAwIDQuMS0uNzggNS42Ni0yLjM0IDMuMTItMy4xMiAzLjEyLTguMTkgMC0xMS4zMXpNMTIgMTkuNTljLTEuNiAwLTMuMTEtLjYyLTQuMjQtMS43NkM2LjYyIDE2LjY5IDYgMTUuMTkgNiAxMy41OXMuNjItMy4xMSAxLjc2LTQuMjRMMTIgNS4xdjE0LjQ5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhYmVsIj48cGF0aCBkPSJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYWJlbC1vdXRsaW5lIj48cGF0aCBkPSJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpNMTYgMTdINVY3aDExbDMuNTUgNUwxNiAxN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsYW5ndWFnZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTYuOTMgNmgtMi45NWMtLjMyLTEuMjUtLjc4LTIuNDUtMS4zOC0zLjU2IDEuODQuNjMgMy4zNyAxLjkxIDQuMzMgMy41NnpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDIgMCAuNjguMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTYtMS44NC0uNjMtMy4zNy0xLjktNC4zMy0zLjU2em0yLjk1LThINS4wOGMuOTYtMS42NiAyLjQ5LTIuOTMgNC4zMy0zLjU2QzguODEgNS41NSA4LjM1IDYuNzUgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVjLS45NiAxLjY1LTIuNDkgMi45My00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0yIDAtLjY4LS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYXN0LXBhZ2UiPjxwYXRoIGQ9Ik01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYXVuY2giPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaWdodGJ1bGItb3V0bGluZSI+PHBhdGggZD0iTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjFsLS44NS42VjE2aC00di0yLjNsLS44NS0uNkM3LjggMTIuMTYgNyAxMC42MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuNjMtLjggMy4xNi0yLjE1IDQuMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5lLXN0eWxlIj48cGF0aCBkPSJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5lLXdlaWdodCI+PHBhdGggZD0iTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGluayI+PHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxpc3QiPjxwYXRoIGQ9Ik0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9jayI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9jay1vcGVuIj48cGF0aCBkPSJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG93LXByaW9yaXR5Ij48cGF0aCBkPSJNMTQgNWg4djJoLTh6bTAgNS41aDh2MmgtOHptMCA1LjVoOHYyaC04ek0yIDExLjVDMiAxNS4wOCA0LjkyIDE4IDguNSAxOEg5djJsMy0zLTMtM3YyaC0uNUM2LjAyIDE2IDQgMTMuOTggNCAxMS41UzYuMDIgNyA4LjUgN0gxMlY1SDguNUM0LjkyIDUgMiA3LjkyIDIgMTEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3lhbHR5Ij48cGF0aCBkPSJNMjEuNDEgMTEuNThsLTktOUMxMi4wNSAyLjIyIDExLjU1IDIgMTEgMkg0Yy0xLjEgMC0yIC45LTIgMnY3YzAgLjU1LjIyIDEuMDUuNTkgMS40Mmw5IDljLjM2LjM2Ljg2LjU4IDEuNDEuNTguNTUgMCAxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLS41NS0uMjMtMS4wNi0uNTktMS40MnpNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN3ptMTEuNzcgOC4yN0wxMyAxOS41NGwtNC4yNy00LjI3QzguMjggMTQuODEgOCAxNC4xOSA4IDEzLjVjMC0xLjM4IDEuMTItMi41IDIuNS0yLjUuNjkgMCAxLjMyLjI4IDEuNzcuNzRsLjczLjcyLjczLS43M2MuNDUtLjQ1IDEuMDgtLjczIDEuNzctLjczIDEuMzggMCAyLjUgMS4xMiAyLjUgMi41IDAgLjY5LS4yOCAxLjMyLS43MyAxLjc3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1haWwiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtYXJrdW5yZWFkIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDRsLTggNS04LTVWNmw4IDUgOC01djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibWFya3VucmVhZC1tYWlsYm94Ij48cGF0aCBkPSJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtZW51Ij48cGF0aCBkPSJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3JlLWhvcml6Ij48cGF0aCBkPSJNNiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3JlLXZlcnQiPjxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3RvcmN5Y2xlIj48cGF0aCBkPSJNMTkuNDQgOS4wM0wxNS40MSA1SDExdjJoMy41OWwyIDJINWMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNWMyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDEuNjVsMi43Ny0yLjc3Yy0uMjEuNTQtLjMyIDEuMTQtLjMyIDEuNzcgMCAyLjggMi4yIDUgNSA1czUtMi4yIDUtNWMwLTIuNjUtMS45Ny00Ljc3LTQuNTYtNC45N3pNNy44MiAxNUM3LjQgMTYuMTUgNi4yOCAxNyA1IDE3Yy0xLjYzIDAtMy0xLjM3LTMtM3MxLjM3LTMgMy0zYzEuMjggMCAyLjQuODUgMi44MiAySDV2MmgyLjgyek0xOSAxN2MtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibW92ZS10by1pbmJveCI+PHBhdGggZD0iTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHptLTMtNWgtMlY3aC00djNIOGw0IDQgNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im5leHQtd2VlayI+PHBhdGggZD0iTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNWwtMS0xIDMtMy0zLTMgMS0xIDQgNC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibm90ZS1hZGQiPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTRoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnptLTMtN1YzLjVMMTguNSA5SDEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9mZmxpbmUtcGluIj48cGF0aCBkPSJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTUgMTZIN3YtMmgxMHYyem0tNi43LTRMNyAxMC43bDEuNC0xLjQgMS45IDEuOSA1LjMtNS4zTDE3IDcuMyAxMC4zIDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9wYWNpdHkiPjxwYXRoIGQ9Ik0xNy42NiA4TDEyIDIuMzUgNi4zNCA4QzQuNzggOS41NiA0IDExLjY0IDQgMTMuNjRzLjc4IDQuMTEgMi4zNCA1LjY3IDMuNjEgMi4zNSA1LjY2IDIuMzUgNC4xLS43OSA1LjY2LTIuMzVTMjAgMTUuNjQgMjAgMTMuNjQgMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi1pbi1icm93c2VyIj48cGF0aCBkPSJNMTkgNEg1Yy0xLjExIDAtMiAuOS0yIDJ2MTJjMCAxLjEuODkgMiAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjg5LTItMi0yem0tNyA2bC00IDRoM3Y2aDJ2LTZoM2wtNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9wZW4taW4tbmV3Ij48cGF0aCBkPSJNMTkgMTlINVY1aDdWM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi13aXRoIj48cGF0aCBkPSJNMTAgOWg0VjZoM2wtNS01LTUgNWgzdjN6bS0xIDFINlY3bC01IDUgNSA1di0zaDN2LTR6bTE0IDJsLTUtNXYzaC0zdjRoM3YzbDUtNXptLTkgM2gtNHYzSDdsNSA1IDUtNWgtM3YtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwYWdldmlldyI+PHBhdGggZD0iTTExLjUgOUMxMC4xMiA5IDkgMTAuMTIgOSAxMS41czEuMTIgMi41IDIuNSAyLjUgMi41LTEuMTIgMi41LTIuNVMxMi44OCA5IDExLjUgOXpNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS0zLjIxIDE0LjIxbC0yLjkxLTIuOTFjLS42OS40NC0xLjUxLjctMi4zOS43QzkuMDEgMTYgNyAxMy45OSA3IDExLjVTOS4wMSA3IDExLjUgNyAxNiA5LjAxIDE2IDExLjVjMCAuODgtLjI2IDEuNjktLjcgMi4zOWwyLjkxIDIuOS0xLjQyIDEuNDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFuLXRvb2wiPjxwYXRoIGQ9Ik0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYXltZW50Ij48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tY2FtZXJhLW1pYyI+PHBhdGggZD0iTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDd2LTIuMDljLTIuODMtLjQ4LTUtMi45NC01LTUuOTFoMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00aDJjMCAyLjk3LTIuMTcgNS40My01IDUuOTFWMjFoN2MxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tNiA4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLWNvbnRhY3QtY2FsZW5kYXIiPjxwYXRoIGQ9Ik0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkg2di0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tZGF0YS1zZXR0aW5nIj48cGF0aCBkPSJNMTguOTkgMTEuNWMuMzQgMCAuNjcuMDMgMSAuMDdMMjAgMCAwIDIwaDExLjU2Yy0uMDQtLjMzLS4wNy0uNjYtLjA3LTEgMC00LjE0IDMuMzYtNy41IDcuNS03LjV6bTMuNzEgNy45OWMuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYy4wOS0uMDguMTItLjIxLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNjLS4wMi4xNi0uMDMuMzItLjAzLjQ5IDAgLjE3LjAxLjMzLjAzLjQ5bC0xLjA2LjgzYy0uMDkuMDgtLjEyLjIxLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYy4wNi0uMTEuMDMtLjI0LS4wNi0uMzJsLTEuMDctLjgzem0tMy43MSAxLjAxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLWRldmljZS1pbmZvcm1hdGlvbiI+PHBhdGggZD0iTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnY2aDJ2LTZ6bTQtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0taWRlbnRpdHkiPjxwYXRoIGQ9Ik0xMiA1LjljMS4xNiAwIDIuMS45NCAyLjEgMi4xcy0uOTQgMi4xLTIuMSAyLjFTOS45IDkuMTYgOS45IDhzLjk0LTIuMSAyLjEtMi4xbTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tbWVkaWEiPjxwYXRoIGQ9Ik0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tcGhvbmUtbXNnIj48cGF0aCBkPSJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjM1LS4xMS0uNzQtLjAzLTEuMDIuMjRsLTIuMiAyLjJjLTIuODMtMS40NC01LjE1LTMuNzUtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFDOC43IDYuNDUgOC41IDUuMjUgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTEyIDN2MTBsMy0zaDZWM2gtOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLXNjYW4td2lmaSI+PHBhdGggZD0iTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3ptMSAxM2gtMnYtNmgydjZ6bS0yLThWNmgydjJoLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGV0cyI+PGNpcmNsZSBjeD0iNC41IiBjeT0iOS41IiByPSIyLjUiPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjkiIGN5PSI1LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMTUiIGN5PSI1LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMTkuNSIgY3k9IjkuNSIgcj0iMi41Ij48L2NpcmNsZT48cGF0aCBkPSJNMTcuMzQgMTQuODZjLS44Ny0xLjAyLTEuNi0xLjg5LTIuNDgtMi45MS0uNDYtLjU0LTEuMDUtMS4wOC0xLjc1LTEuMzItLjExLS4wNC0uMjItLjA3LS4zMy0uMDktLjI1LS4wNC0uNTItLjA0LS43OC0uMDRzLS41MyAwLS43OS4wNWMtLjExLjAyLS4yMi4wNS0uMzMuMDktLjcuMjQtMS4yOC43OC0xLjc1IDEuMzItLjg3IDEuMDItMS42IDEuODktMi40OCAyLjkxLTEuMzEgMS4zMS0yLjkyIDIuNzYtMi42MiA0Ljc5LjI5IDEuMDIgMS4wMiAyLjAzIDIuMzMgMi4zMi43My4xNSAzLjA2LS40NCA1LjU0LS40NGguMThjMi40OCAwIDQuODEuNTggNS41NC40NCAxLjMxLS4yOSAyLjA0LTEuMzEgMi4zMy0yLjMyLjMxLTIuMDQtMS4zLTMuNDktMi42MS00Ljh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlIj48cGF0aCBkPSJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBpY3R1cmUtaW4tcGljdHVyZS1hbHQiPjxwYXRoIGQ9Ik0xOSAxMWgtOHY2aDh2LTZ6bTQgOFY0Ljk4QzIzIDMuODggMjIuMSAzIDIxIDNIM2MtMS4xIDAtMiAuODgtMiAxLjk4VjE5YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6bS0yIC4wMkgzVjQuOTdoMTh2MTQuMDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGxheS1mb3Itd29yayI+PHBhdGggZD0iTTExIDV2NS41OUg3LjVsNC41IDQuNSA0LjUtNC41SDEzVjVoLTJ6bS01IDljMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmgtMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvbHltZXIiPjxwYXRoIGQ9Ik0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwb3dlci1zZXR0aW5ncy1uZXciPjxwYXRoIGQ9Ik0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3bC0xLjQyIDEuNDJDMTcuOTkgNy44NiAxOSA5LjgxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3cy03LTMuMTMtNy03YzAtMi4xOSAxLjAxLTQuMTQgMi41OC01LjQyTDYuMTcgNS4xN0M0LjIzIDYuODIgMyA5LjI2IDMgMTJjMCA0Ljk3IDQuMDMgOSA5IDlzOS00LjAzIDktOWMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwcmVnbmFudC13b21hbiI+PHBhdGggZD0iTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWMtLjAxLTEuMzQtLjgzLTIuNTEtMi0zIDAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzdjdoMnY1aDN2LTVoM3YtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwcmludCI+PHBhdGggZD0iTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InF1ZXJ5LWJ1aWxkZXIiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icXVlc3Rpb24tYW5zd2VyIj48cGF0aCBkPSJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmFkaW8tYnV0dG9uLWNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMC01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyYWRpby1idXR0b24tdW5jaGVja2VkIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVjZWlwdCI+PHBhdGggZD0iTTE4IDE3SDZ2LTJoMTJ2MnptMC00SDZ2LTJoMTJ2MnptMC00SDZWN2gxMnYyek0zIDIybDEuNS0xLjVMNiAyMmwxLjUtMS41TDkgMjJsMS41LTEuNUwxMiAyMmwxLjUtMS41TDE1IDIybDEuNS0xLjVMMTggMjJsMS41LTEuNUwyMSAyMlYybC0xLjUgMS41TDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMiA0LjUgMy41IDMgMnYyMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWNvcmQtdm9pY2Utb3ZlciI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjQiPjwvY2lyY2xlPjxwYXRoIGQ9Ik05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em03Ljc2LTkuNjRsLTEuNjggMS42OWMuODQgMS4xOC44NCAyLjcxIDAgMy44OWwxLjY4IDEuNjljMi4wMi0yLjAyIDIuMDItNS4wNyAwLTcuMjd6TTIwLjA3IDJsLTEuNjMgMS42M2MyLjc3IDMuMDIgMi43NyA3LjU2IDAgMTAuNzRMMjAuMDcgMTZjMy45LTMuODkgMy45MS05Ljk1IDAtMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVkZWVtIj48cGF0aCBkPSJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xIDAtMS42Ni0xLjM0LTMtMy0zLTEuMDUgMC0xLjk2LjU0LTIuNSAxLjM1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVkbyI+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWZyZXNoIj48cGF0aCBkPSJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVtb3ZlIj48cGF0aCBkPSJNMTkgMTNINXYtMmgxNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtY2lyY2xlLW91dGxpbmUiPjxwYXRoIGQ9Ik03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtc2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTIyLjczIDIyLjczTDIuNzcgMi43NyAyIDJsLS43My0uNzNMMCAyLjU0bDQuMzkgNC4zOSAyLjIxIDQuNjYtMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDcuNDZsMS4zOCAxLjM4Yy0uNS4zNi0uODMuOTUtLjgzIDEuNjIgMCAxLjEuODkgMiAxLjk5IDIgLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS4yNy0xLjI3ek03LjQyIDE1Yy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoMi4zNmwyIDJINy40MnptOC4xMy0yYy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg2LjU0bDkuMDEgOXpNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW9yZGVyIj48cGF0aCBkPSJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcGx5Ij48cGF0aCBkPSJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcGx5LWFsbCI+PHBhdGggZD0iTTcgOFY1bC03IDcgNyA3di0zbC00LTQgNC00em02IDFWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXBvcnQiPjxwYXRoIGQ9Ik0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTIgMTcuM2MtLjcyIDAtMS4zLS41OC0xLjMtMS4zIDAtLjcyLjU4LTEuMyAxLjMtMS4zLjcyIDAgMS4zLjU4IDEuMyAxLjMgMCAuNzItLjU4IDEuMy0xLjMgMS4zem0xLTQuM2gtMlY3aDJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXBvcnQtcHJvYmxlbSI+PHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXN0b3JlIj48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlc3RvcmUtcGFnZSI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTIgMTZjLTIuMDUgMC0zLjgxLTEuMjQtNC41OC0zaDEuNzFjLjYzLjkgMS42OCAxLjUgMi44NyAxLjUgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgOS41IDEyIDkuNWMtMS4zNSAwLTIuNTIuNzgtMy4xIDEuOWwxLjYgMS42aC00VjlsMS4zIDEuM0M4LjY5IDguOTIgMTAuMjMgOCAxMiA4YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvb20iPjxwYXRoIGQ9Ik0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3VuZGVkLWNvcm5lciI+PHBhdGggZD0iTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvd2luZyI+PHBhdGggZD0iTTguNSAxNC41TDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4xOS0uMjEuNDMtLjM4LjY5LS41LjI5LS4xNC42Mi0uMjMuOTYtLjIzaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNhdmUiPjxwYXRoIGQ9Ik0xNyAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bS01IDE2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMy0xMEg1VjVoMTB2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzY2hlZHVsZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzZWFyY2giPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlbGVjdC1hbGwiPjxwYXRoIGQ9Ik0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZW5kIj48cGF0aCBkPSJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MiPjxwYXRoIGQ9Ik0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOThzLS4wMy0uNjYtLjA3LS45OGwyLjExLTEuNjVjLjE5LS4xNS4yNC0uNDIuMTItLjY0bC0yLTMuNDZjLS4xMi0uMjItLjM5LS4zLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUMxNC40NiAyLjE4IDE0LjI1IDIgMTQgMmgtNGMtLjI1IDAtLjQ2LjE4LS40OS40MmwtLjM4IDIuNjVjLS42MS4yNS0xLjE3LjU5LTEuNjkuOThsLTIuNDktMWMtLjIzLS4wOS0uNDkgMC0uNjEuMjJsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4cy4wMy42Ni4wNy45OGwtMi4xMSAxLjY1Yy0uMTkuMTUtLjI0LjQyLS4xMi42NGwyIDMuNDZjLjEyLjIyLjM5LjMuNjEuMjJsMi40OS0xYy41Mi40IDEuMDguNzMgMS42OS45OGwuMzggMi42NWMuMDMuMjQuMjQuNDIuNDkuNDJoNGMuMjUgMCAuNDYtLjE4LjQ5LS40MmwuMzgtMi42NWMuNjEtLjI1IDEuMTctLjU5IDEuNjktLjk4bDIuNDkgMWMuMjMuMDkuNDkgMCAuNjEtLjIybDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6TTEyIDE1LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWFwcGxpY2F0aW9ucyI+PHBhdGggZD0iTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNy03SDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uOSAyLTJWNWMwLTEuMS0uODktMi0yLTJ6bS0xLjc1IDljMCAuMjMtLjAyLjQ2LS4wNS42OGwxLjQ4IDEuMTZjLjEzLjExLjE3LjMuMDguNDVsLTEuNCAyLjQyYy0uMDkuMTUtLjI3LjIxLS40My4xNWwtMS43NC0uN2MtLjM2LjI4LS43Ni41MS0xLjE4LjY5bC0uMjYgMS44NWMtLjAzLjE3LS4xOC4zLS4zNS4zaC0yLjhjLS4xNyAwLS4zMi0uMTMtLjM1LS4yOWwtLjI2LTEuODVjLS40My0uMTgtLjgyLS40MS0xLjE4LS42OWwtMS43NC43Yy0uMTYuMDYtLjM0IDAtLjQzLS4xNWwtMS40LTIuNDJjLS4wOS0uMTUtLjA1LS4zNC4wOC0uNDVsMS40OC0xLjE2Yy0uMDMtLjIzLS4wNS0uNDYtLjA1LS42OSAwLS4yMy4wMi0uNDYuMDUtLjY4bC0xLjQ4LTEuMTZjLS4xMy0uMTEtLjE3LS4zLS4wOC0uNDVsMS40LTIuNDJjLjA5LS4xNS4yNy0uMjEuNDMtLjE1bDEuNzQuN2MuMzYtLjI4Ljc2LS41MSAxLjE4LS42OWwuMjYtMS44NWMuMDMtLjE3LjE4LS4zLjM1LS4zaDIuOGMuMTcgMCAuMzIuMTMuMzUuMjlsLjI2IDEuODVjLjQzLjE4LjgyLjQxIDEuMTguNjlsMS43NC0uN2MuMTYtLjA2LjM0IDAgLjQzLjE1bDEuNCAyLjQyYy4wOS4xNS4wNS4zNC0uMDguNDVsLTEuNDggMS4xNmMuMDMuMjMuMDUuNDYuMDUuNjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYmFja3VwLXJlc3RvcmUiPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYmx1ZXRvb3RoIj48cGF0aCBkPSJNMTEgMjRoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3Yyem04IDBoMnYtMmgtMnYyem0yLjcxLTE4LjI5TDEyIDBoLTF2Ny41OUw2LjQxIDMgNSA0LjQxIDEwLjU5IDEwIDUgMTUuNTkgNi40MSAxNyAxMSAxMi40MVYyMGgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgMy44M2wxLjg4IDEuODhMMTMgNy41OVYzLjgzem0xLjg4IDEwLjQ2TDEzIDE2LjE3di0zLjc2bDEuODggMS44OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1icmlnaHRuZXNzIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyek04IDE2aDIuNWwxLjUgMS41IDEuNS0xLjVIMTZ2LTIuNWwxLjUtMS41LTEuNS0xLjVWOGgtMi41TDEyIDYuNSAxMC41IDhIOHYyLjVMNi41IDEyIDggMTMuNVYxNnptNC03YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzVjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtY2VsbCI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTE2IC4wMUw4IDBDNi45IDAgNiAuOSA2IDJ2MTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE2SDhWNGg4djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWV0aGVybmV0Ij48cGF0aCBkPSJNNy43NyA2Ljc2TDYuMjMgNS40OC44MiAxMmw1LjQxIDYuNTIgMS41NC0xLjI4TDMuNDIgMTJsNC4zNS01LjI0ek03IDEzaDJ2LTJIN3Yyem0xMC0yaC0ydjJoMnYtMnptLTYgMmgydi0yaC0ydjJ6bTYuNzctNy41MmwtMS41NCAxLjI4TDIwLjU4IDEybC00LjM1IDUuMjQgMS41NCAxLjI4TDIzLjE4IDEybC01LjQxLTYuNTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtYW50ZW5uYSI+PHBhdGggZD0iTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOSAwLTEuMzgtMS4xMi0yLjUtMi41LTIuNVM5LjUgMTAuNjIgOS41IDEyYzAgMS4wMi42MiAxLjkgMS41IDIuMjl2My4zTDcuNTkgMjEgOSAyMi40MWwzLTMgMyAzTDE2LjQxIDIxIDEzIDE3LjU5di0zLjN6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyaDJjMC00Ljk3IDQuMDMtOSA5LTlzOSA0LjAzIDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvbmVudCI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1jb21wb3NpdGUiPjxwYXRoIGQ9Ik01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtaGRtaSI+PHBhdGggZD0iTTE4IDdWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYzSDV2NmwzIDZ2M2g4di0zbDMtNlY3aC0xek04IDRoOHYzaC0yVjVoLTF2MmgtMlY1aC0xdjJIOFY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LXN2aWRlbyI+PHBhdGggZD0iTTggMTEuNWMwLS44My0uNjctMS41LTEuNS0xLjVTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjV6bTctNWMwLS44My0uNjctMS41LTEuNS0xLjVoLTNDOS42NyA1IDkgNS42NyA5IDYuNVM5LjY3IDggMTAuNSA4aDNjLjgzIDAgMS41LS42NyAxLjUtMS41ek04LjUgMTVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzcuNjcgMTggOC41IDE4czEuNS0uNjcgMS41LTEuNVM5LjMzIDE1IDguNSAxNXpNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJzNC45MyAxMSAxMSAxMSAxMS00LjkzIDExLTExUzE4LjA3IDEgMTIgMXptMCAyMGMtNC45NiAwLTktNC4wNC05LTlzNC4wNC05IDktOSA5IDQuMDQgOSA5LTQuMDQgOS05IDl6bTUuNS0xMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bS0yIDVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLW92ZXJzY2FuIj48cGF0aCBkPSJNMTIuMDEgNS41TDEwIDhoNGwtMS45OS0yLjV6TTE4IDEwdjRsMi41LTEuOTlMMTggMTB6TTYgMTBsLTIuNSAyLjAxTDYgMTR2LTR6bTggNmgtNGwyLjAxIDIuNUwxNCAxNnptNy0xM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLXBob25lIj48cGF0aCBkPSJNMTMgOWgtMnYyaDJWOXptNCAwaC0ydjJoMlY5em0zIDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjM1LS4xMS0uNzQtLjAzLTEuMDIuMjRsLTIuMiAyLjJjLTIuODMtMS40NC01LjE1LTMuNzUtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFDOC43IDYuNDUgOC41IDUuMjUgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDl2MmgyVjloLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcG93ZXIiPjxwYXRoIGQ9Ik03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0bC0xLjQ1IDEuNDVDMTYuODQgNi45NCAxOCA4LjgzIDE4IDExYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02YzAtMi4xNyAxLjE2LTQuMDYgMi44OC01LjEyTDcuNDQgNC40NEM1LjM2IDUuODggNCA4LjI4IDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLXJlbW90ZSI+PHBhdGggZD0iTTE1IDlIOWMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLTMgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTcuMDUgNi4wNWwxLjQxIDEuNDFDOS4zNyA2LjU2IDEwLjYyIDYgMTIgNnMyLjYzLjU2IDMuNTQgMS40NmwxLjQxLTEuNDFDMTUuNjggNC43OCAxMy45MyA0IDEyIDRzLTMuNjguNzgtNC45NSAyLjA1ek0xMiAwQzguOTYgMCA2LjIxIDEuMjMgNC4yMiAzLjIybDEuNDEgMS40MUM3LjI2IDMuMDEgOS41MSAyIDEyIDJzNC43NCAxLjAxIDYuMzYgMi42NGwxLjQxLTEuNDFDMTcuNzkgMS4yMyAxNS4wNCAwIDEyIDB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3Mtdm9pY2UiPjxwYXRoIGQ9Ik03IDI0aDJ2LTJIN3Yyem01LTExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDRjMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNHY2YzAgMS42NiAxLjM0IDMgMyAzem0tMSAxMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bTQtMTRoLTEuN2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTMgNi43IDEwSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjBoMnYtMy4yOGMzLjI4LS40OSA2LTMuMzEgNi02LjcyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNob3AiPjxwYXRoIGQ9Ik0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcC10d28iPjxwYXRoIGQ9Ik0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMtNS41IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcHBpbmctYmFza2V0Ij48cGF0aCBkPSJNMTcuMjEgOWwtNC4zOC02LjU2Yy0uMTktLjI4LS41MS0uNDItLjgzLS40Mi0uMzIgMC0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xaC00Ljc5ek05IDlsMy00LjRMMTUgOUg5em0zIDhjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNob3BwaW5nLWNhcnQiPjxwYXRoIGQ9Ik03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yek0xIDJ2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5Yy4wOC0uMTQuMTItLjMxLjEyLS40OCAwLS41NS0uNDUtMS0xLTFINS4yMWwtLjk0LTJIMXptMTYgMTZjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNvcnQiPjxwYXRoIGQ9Ik0zIDE4aDZ2LTJIM3Yyek0zIDZ2MmgxOFY2SDN6bTAgN2gxMnYtMkgzdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3BlYWtlci1ub3RlcyI+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDE0SDZ2LTJoMnYyem0wLTNINlY5aDJ2MnptMC0zSDZWNmgydjJ6bTcgNmgtNXYtMmg1djJ6bTMtM2gtOFY5aDh2MnptMC0zaC04VjZoOHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNwZWFrZXItbm90ZXMtb2ZmIj48cGF0aCBkPSJNMTAuNTQgMTFsLS41NC0uNTRMNy41NCA4IDYgNi40NiAyLjM4IDIuODQgMS4yNyAxLjczIDAgM2wyLjAxIDIuMDFMMiAyMmw0LTRoOWw1LjczIDUuNzNMMjIgMjIuNDYgMTcuNTQgMThsLTctN3pNOCAxNEg2di0yaDJ2MnptLTItM1Y5bDIgMkg2em0xNC05SDQuMDhMMTAgNy45MlY2aDh2MmgtNy45MmwxIDFIMTh2MmgtNC45Mmw2Ljk5IDYuOTlDMjEuMTQgMTcuOTUgMjIgMTcuMDggMjIgMTZWNGMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzcGVsbGNoZWNrIj48cGF0aCBkPSJNMTIuNDUgMTZoMi4wOUw5LjQzIDNINy41N0wyLjQ2IDE2aDIuMDlsMS4xMi0zaDUuNjRsMS4xNCAzem0tNi4wMi01TDguNSA1LjQ4IDEwLjU3IDExSDYuNDN6bTE1LjE2LjU5bC04LjA5IDguMDlMOS44MyAxNmwtMS40MSAxLjQxIDUuMDkgNS4wOUwyMyAxM2wtMS40MS0xLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXIiPjxwYXRoIGQ9Ik0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdGFyLWJvcmRlciI+PHBhdGggZD0iTTIyIDkuMjRsLTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRsLTMuNzYgMi4yNyAxLTQuMjgtMy4zMi0yLjg4IDQuMzgtLjM4TDEyIDYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3Rhci1oYWxmIj48cGF0aCBkPSJNMjIgOS4yNGwtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNFY2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXJzIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNC4yNCAxNkwxMiAxNS40NSA3Ljc3IDE4bDEuMTItNC44MS0zLjczLTMuMjMgNC45Mi0uNDJMMTIgNWwxLjkyIDQuNTMgNC45Mi40Mi0zLjczIDMuMjNMMTYuMjMgMTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RvcmUiPjxwYXRoIGQ9Ik0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3ViZGlyZWN0b3J5LWFycm93LWxlZnQiPjxwYXRoIGQ9Ik0xMSA5bDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJkaXJlY3RvcnktYXJyb3ctcmlnaHQiPjxwYXRoIGQ9Ik0xOSAxNWwtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3ViamVjdCI+PHBhdGggZD0iTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN1cGVydmlzb3ItYWNjb3VudCI+PHBhdGggZD0iTTE2LjUgMTJjMS4zOCAwIDIuNDktMS4xMiAyLjQ5LTIuNVMxNy44OCA3IDE2LjUgN0MxNS4xMiA3IDE0IDguMTIgMTQgOS41czEuMTIgMi41IDIuNSAyLjV6TTkgMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTMTAuNjYgNSA5IDVDNy4zNCA1IDYgNi4zNCA2IDhzMS4zNCAzIDMgM3ptNy41IDNjLTEuODMgMC01LjUuOTItNS41IDIuNzVWMTloMTF2LTIuMjVjMC0xLjgzLTMuNjctMi43NS01LjUtMi43NXpNOSAxM2MtMi4zMyAwLTcgMS4xNy03IDMuNVYxOWg3di0yLjI1YzAtLjg1LjMzLTIuMzQgMi4zNy0zLjQ3QzEwLjUgMTMuMSA5LjY2IDEzIDkgMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3dhcC1ob3JpeiI+PHBhdGggZD0iTTYuOTkgMTFMMyAxNWwzLjk5IDR2LTNIMTR2LTJINi45OXYtM3pNMjEgOWwtMy45OS00djNIMTB2Mmg3LjAxdjNMMjEgOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLXZlcnQiPjxwYXRoIGQ9Ik0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzTDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLXZlcnRpY2FsLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTYuNSA5TDEwIDUuNSAxMy41IDlIMTF2NEg5VjlINi41em0xMSA2TDE0IDE4LjUgMTAuNSAxNUgxM3YtNGgydjRoMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN5c3RlbS11cGRhdGUtYWx0Ij48cGF0aCBkPSJNMTIgMTYuNWw0LTRoLTN2LTloLTJ2OUg4bDQgNHptOS0xM2gtNnYxLjk5aDZ2MTQuMDNIM1Y1LjQ5aDZWMy41SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ2LTE0YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRhYiI+PHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFiLXVuc2VsZWN0ZWQiPjxwYXRoIGQ9Ik0xIDloMlY3SDF2MnptMCA0aDJ2LTJIMXYyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnptOCAxNmgydi0ySDl2MnptLTgtNGgydi0ySDF2MnptMiA0di0ySDFjMCAxLjEuOSAyIDIgMnpNMjEgM2gtOHY2aDEwVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTRoMnYtMmgtMnYyek05IDVoMlYzSDl2MnpNNSAyMWgydi0ySDV2MnpNNSA1aDJWM0g1djJ6bTE2IDE2YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRleHQtZm9ybWF0Ij48cGF0aCBkPSJNNSAxN3YyaDE0di0ySDV6bTQuNS00LjJoNWwuOSAyLjJoMi4xTDEyLjc1IDRoLTEuNUw2LjUgMTVoMi4xbC45LTIuMnpNMTIgNS45OEwxMy44NyAxMWgtMy43NEwxMiA1Ljk4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRoZWF0ZXJzIj48cGF0aCBkPSJNMTggM3YyaC0yVjNIOHYySDZWM0g0djE4aDJ2LTJoMnYyaDh2LTJoMnYyaDJWM2gtMnpNOCAxN0g2di0yaDJ2MnptMC00SDZ2LTJoMnYyem0wLTRINlY3aDJ2MnptMTAgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYi1kb3duIj48cGF0aCBkPSJNMTUgM0g2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjEuOTFsLjAxLjAxTDEgMTRjMCAxLjEuOSAyIDIgMmg2LjMxbC0uOTUgNC41Ny0uMDMuMzJjMCAuNDEuMTcuNzkuNDQgMS4wNkw5LjgzIDIzbDYuNTktNi41OWMuMzYtLjM2LjU4LS44Ni41OC0xLjQxVjVjMC0xLjEtLjktMi0yLTJ6bTQgMHYxMmg0VjNoLTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGh1bWItdXAiPjxwYXRoIGQ9Ik0xIDIxaDRWOUgxdjEyem0yMi0xMWMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTkgNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMS45MWwtLjAxLS4wMUwyMyAxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYnMtdXAtZG93biI+PHBhdGggZD0iTTEyIDZjMC0uNTUtLjQ1LTEtMS0xSDUuODJsLjY2LTMuMTguMDItLjIzYzAtLjMxLS4xMy0uNTktLjMzLS44TDUuMzggMCAuNDQgNC45NEMuMTcgNS4yMSAwIDUuNTkgMCA2djYuNWMwIC44My42NyAxLjUgMS41IDEuNWg2Ljc1Yy42MiAwIDEuMTUtLjM4IDEuMzgtLjkxbDIuMjYtNS4yOWMuMDctLjE3LjExLS4zNi4xMS0uNTVWNnptMTAuNSA0aC02Ljc1Yy0uNjIgMC0xLjE1LjM4LTEuMzguOTFsLTIuMjYgNS4yOWMtLjA3LjE3LS4xMS4zNi0uMTEuNTVWMThjMCAuNTUuNDUgMSAxIDFoNS4xOGwtLjY2IDMuMTgtLjAyLjI0YzAgLjMxLjEzLjU5LjMzLjhsLjc5Ljc4IDQuOTQtNC45NGMuMjctLjI3LjQ0LS42NS40NC0xLjA2di02LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVsaW5lIj48cGF0aCBkPSJNMjMgOGMwIDEuMS0uOSAyLTIgMi0uMTggMC0uMzUtLjAyLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QzE5LjAyIDguMzUgMTkgOC4xOCAxOSA4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG9jIj48cGF0aCBkPSJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2RheSI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2xsIj48cGF0aCBkPSJNMTUgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2ek0zIDEyYzAtMi42MSAxLjY3LTQuODMgNC01LjY1VjQuMjZDMy41NSA1LjE1IDEgOC4yNyAxIDEyczIuNTUgNi44NSA2IDcuNzR2LTIuMDljLTIuMzMtLjgyLTQtMy4wNC00LTUuNjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG91Y2gtYXBwIj48cGF0aCBkPSJNOSAxMS4yNFY3LjVDOSA2LjEyIDEwLjEyIDUgMTEuNSA1UzE0IDYuMTIgMTQgNy41djMuNzRjMS4yMS0uODEgMi0yLjE4IDItMy43NEMxNiA1LjAxIDEzLjk5IDMgMTEuNSAzUzcgNS4wMSA3IDcuNWMwIDEuNTYuNzkgMi45MyAyIDMuNzR6bTkuODQgNC42M2wtNC41NC0yLjI2Yy0uMTctLjA3LS4zNS0uMTEtLjU0LS4xMUgxM3YtNmMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgNi42NyAxMCA3LjV2MTAuNzRsLTMuNDMtLjcyYy0uMDgtLjAxLS4xNS0uMDMtLjI0LS4wMy0uMzEgMC0uNTkuMTMtLjc5LjMzbC0uNzkuOCA0Ljk0IDQuOTRjLjI3LjI3LjY1LjQ0IDEuMDYuNDRoNi43OWMuNzUgMCAxLjMzLS41NSAxLjQ0LTEuMjhsLjc1LTUuMjdjLjAxLS4wNy4wMi0uMTQuMDItLjIgMC0uNjItLjM4LTEuMTYtLjkxLTEuMzh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJhY2stY2hhbmdlcyI+PHBhdGggZD0iTTE5LjA3IDQuOTNsLTEuNDEgMS40MUMxOS4xIDcuNzkgMjAgOS43OSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJhbnNsYXRlIj48cGF0aCBkPSJNMTIuODcgMTUuMDdsLTIuNTQtMi41MS4wMy0uMDNjMS43NC0xLjk0IDIuOTgtNC4xNyAzLjcxLTYuNTNIMTdWNGgtN1YySDh2MkgxdjEuOTloMTEuMTdDMTEuNSA3LjkyIDEwLjQ0IDkuNzUgOSAxMS4zNSA4LjA3IDEwLjMyIDcuMyA5LjE5IDYuNjkgOGgtMmMuNzMgMS42MyAxLjczIDMuMTcgMi45OCA0LjU2bC01LjA5IDUuMDJMNCAxOWw1LTUgMy4xMSAzLjExLjc2LTIuMDR6TTE4LjUgMTBoLTJMMTIgMjJoMmwxLjEyLTNoNC43NUwyMSAyMmgybC00LjUtMTJ6bS0yLjYyIDdsMS42Mi00LjMzTDE5LjEyIDE3aC0zLjI0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLWRvd24iPjxwYXRoIGQ9Ik0xNiAxOGwyLjI5LTIuMjktNC44OC00Ljg4LTQgNEwyIDcuNDEgMy40MSA2bDYgNiA0LTQgNi4zIDYuMjlMMjIgMTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmVuZGluZy1mbGF0Ij48cGF0aCBkPSJNMjIgMTJsLTQtNHYzSDN2MmgxNXYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLXVwIj48cGF0aCBkPSJNMTYgNmwyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InR1cm5lZC1pbiI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0dXJuZWQtaW4tbm90Ij48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1bC01LTIuMThMNyAxOFY1aDEwdjEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU1IDUuMjJsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNS41NUwzLjQ2IDUuMjJDMy4xNyA1LjU3IDMgNi4wMSAzIDYuNVYxOWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDktLjE3LS45My0uNDUtMS4yOHpNMTIgOS41bDUuNSA1LjVIMTR2MmgtNHYtMkg2LjVMMTIgOS41ek01LjEyIDVsLjgyLTFoMTJsLjkzIDFINS4xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ1bmRvIj48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5mb2xkLWxlc3MiPjxwYXRoIGQ9Ik03LjQxIDE4LjU5TDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuZm9sZC1tb3JlIj48cGF0aCBkPSJNMTIgNS44M0wxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVwZGF0ZSI+PHBhdGggZD0iTTIxIDEwLjEyaC02Ljc4bDIuNzQtMi44MmMtMi43My0yLjctNy4xNS0yLjgtOS44OC0uMS0yLjczIDIuNzEtMi43MyA3LjA4IDAgOS43OSAyLjczIDIuNzEgNy4xNSAyLjcxIDkuODggMEMxOC4zMiAxNS42NSAxOSAxNC4wOCAxOSAxMi4xaDJjMCAxLjk4LS44OCA0LjU1LTIuNjQgNi4yOS0zLjUxIDMuNDgtOS4yMSAzLjQ4LTEyLjcyIDAtMy41LTMuNDctMy41My05LjExLS4wMi0xMi41OCAzLjUxLTMuNDcgOS4xNC0zLjQ3IDEyLjY1IDBMMjEgM3Y3LjEyek0xMi41IDh2NC4yNWwzLjUgMi4wOC0uNzIgMS4yMUwxMSAxM1Y4aDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2ZXJpZmllZC11c2VyIj48cGF0aCBkPSJNMTIgMUwzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1hZ2VuZGEiPjxwYXRoIGQ9Ik0yMCAxM0gzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xem0wLTEwSDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWFycmF5Ij48cGF0aCBkPSJNNCAxOGgzVjVINHYxM3pNMTggNXYxM2gzVjVoLTN6TTggMThoOVY1SDh2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1jYXJvdXNlbCI+PHBhdGggZD0iTTcgMTloMTBWNEg3djE1em0tNS0yaDRWNkgydjExek0xOCA2djExaDRWNmgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbHVtbiI+PHBhdGggZD0iTTEwIDE4aDVWNWgtNXYxM3ptLTYgMGg1VjVINHYxM3pNMTYgNXYxM2g1VjVoLTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1kYXkiPjxwYXRoIGQ9Ik0yIDIxaDE5di0zSDJ2M3pNMjAgOEgzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6TTIgM3YzaDE5VjNIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWhlYWRsaW5lIj48cGF0aCBkPSJNNCAxNWgxNnYtMkg0djJ6bTAgNGgxNnYtMkg0djJ6bTAtOGgxNlY5SDR2MnptMC02djJoMTZWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctbGlzdCI+PHBhdGggZD0iTTQgMTRoNHYtNEg0djR6bTAgNWg0di00SDR2NHpNNCA5aDRWNUg0djR6bTUgNWgxMnYtNEg5djR6bTAgNWgxMnYtNEg5djR6TTkgNXY0aDEyVjVIOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LW1vZHVsZSI+PHBhdGggZD0iTTQgMTFoNVY1SDR2NnptMCA3aDV2LTZINHY2em02IDBoNXYtNmgtNXY2em02IDBoNXYtNmgtNXY2em0tNi03aDVWNWgtNXY2em02LTZ2Nmg1VjVoLTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1xdWlsdCI+PHBhdGggZD0iTTEwIDE4aDV2LTZoLTV2NnptLTYgMGg1VjVINHYxM3ptMTIgMGg1di02aC01djZ6TTEwIDV2NmgxMVY1SDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctc3RyZWFtIj48cGF0aCBkPSJNNCAxOGgxN3YtNkg0djZ6TTQgNXY2aDE3VjVINHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LXdlZWsiPjxwYXRoIGQ9Ik02IDVIM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0xNCAwaC0zYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bS03IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aXNpYmlsaXR5Ij48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpc2liaWxpdHktb2ZmIj48cGF0aCBkPSJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkMzLjA4IDguMyAxLjc4IDEwLjAyIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OGwzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2FybmluZyI+PHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3YXRjaC1sYXRlciI+PHBhdGggZD0iTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2Vla2VuZCI+PHBhdGggZD0iTTIxIDEwYy0xLjEgMC0yIC45LTIgMnYzSDV2LTNjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnptLTMtNUg2Yy0xLjEgMC0yIC45LTIgMnYyLjE1YzEuMTYuNDEgMiAxLjUxIDIgMi44MlYxNGgxMnYtMi4wM2MwLTEuMy44NC0yLjQgMi0yLjgyVjdjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id29yayI+PHBhdGggZD0iTTIwIDZoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNiAwaC00VjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InlvdXR1YmUtc2VhcmNoZWQtZm9yIj48cGF0aCBkPSJNMTcuMDEgMTRoLS44bC0uMjctLjI3Yy45OC0xLjE0IDEuNTctMi42MSAxLjU3LTQuMjMgMC0zLjU5LTIuOTEtNi41LTYuNS02LjVzLTYuNSAzLTYuNSA2LjVIMmwzLjg0IDQgNC4xNi00SDYuNTFDNi41MSA3IDguNTMgNSAxMS4wMSA1czQuNSAyLjAxIDQuNSA0LjVjMCAyLjQ4LTIuMDIgNC41LTQuNSA0LjUtLjY1IDAtMS4yNi0uMTQtMS44Mi0uMzhMNy43MSAxNS4xYy45Ny41NyAyLjA5LjkgMy4zLjkgMS42MSAwIDMuMDgtLjU5IDQuMjItMS41N2wuMjcuMjd2Ljc5bDUuMDEgNC45OUwyMiAxOWwtNC45OS01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Inpvb20taW4iPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0yLjUtNGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Inpvb20tb3V0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiI+PC9wYXRoPjwvZz4KPC9kZWZzPjwvc3ZnPgo8L2lyb24taWNvbnNldC1zdmc+YDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKE1vLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIEVvPXsiVSswMDA4IjoiYmFja3NwYWNlIiwiVSswMDA5IjoidGFiIiwiVSswMDFCIjoiZXNjIiwiVSswMDIwIjoic3BhY2UiLCJVKzAwN0YiOiJkZWwifSxUbz17ODoiYmFja3NwYWNlIiw5OiJ0YWIiLDEzOiJlbnRlciIsMjc6ImVzYyIsMzM6InBhZ2V1cCIsMzQ6InBhZ2Vkb3duIiwzNToiZW5kIiwzNjoiaG9tZSIsMzI6InNwYWNlIiwzNzoibGVmdCIsMzg6InVwIiwzOToicmlnaHQiLDQwOiJkb3duIiw0NjoiZGVsIiwxMDY6IioifSxDbz17c2hpZnQ6InNoaWZ0S2V5IixjdHJsOiJjdHJsS2V5IixhbHQ6ImFsdEtleSIsbWV0YToibWV0YUtleSJ9LEFvPS9bYS16MC05Kl0vLGtvPS9VXCsvLExvPS9eYXJyb3cvLFBvPS9ec3BhY2UoYmFyKT8vLE5vPS9eZXNjYXBlJC87ZnVuY3Rpb24gSW8odCxlKXt2YXIgbj0iIjtpZih0KXt2YXIgaT10LnRvTG93ZXJDYXNlKCk7IiAiPT09aXx8UG8udGVzdChpKT9uPSJzcGFjZSI6Tm8udGVzdChpKT9uPSJlc2MiOjE9PWkubGVuZ3RoP2UmJiFBby50ZXN0KGkpfHwobj1pKTpuPUxvLnRlc3QoaSk/aS5yZXBsYWNlKCJhcnJvdyIsIiIpOiJtdWx0aXBseSI9PWk/IioiOml9cmV0dXJuIG59ZnVuY3Rpb24gUm8odCxlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe3JldHVybiB0LmtleT9Jbyh0LmtleSxlKTp0LmRldGFpbCYmdC5kZXRhaWwua2V5P0lvKHQuZGV0YWlsLmtleSxlKTooZnVuY3Rpb24gbih0KXt2YXIgZT0iIjtyZXR1cm4gdCYmKHQgaW4gRW8/ZT1Fb1t0XTprby50ZXN0KHQpPyh0PXBhcnNlSW50KHQucmVwbGFjZSgiVSsiLCIweCIpLDE2KSxlPVN0cmluZy5mcm9tQ2hhckNvZGUodCkudG9Mb3dlckNhc2UoKSk6ZT10LnRvTG93ZXJDYXNlKCkpLGV9KSh0LmtleUlkZW50aWZpZXIpfHwoZnVuY3Rpb24gaSh0KXt2YXIgZT0iIjtyZXR1cm4gTnVtYmVyKHQpJiYoZT10Pj02NSYmdDw9OTA/U3RyaW5nLmZyb21DaGFyQ29kZSgzMit0KTp0Pj0xMTImJnQ8PTEyMz8iZiIrKHQtMTEyKzEpOnQ+PTQ4JiZ0PD01Nz9TdHJpbmcodC00OCk6dD49OTYmJnQ8PTEwNT9TdHJpbmcodC05Nik6VG9bdF0pLGV9KSh0LmtleUNvZGUpfHwiIn0pKGUsdC5oYXNNb2RpZmllcnMpPT09dC5rZXkmJighdC5oYXNNb2RpZmllcnN8fCEhZS5zaGlmdEtleT09ISF0LnNoaWZ0S2V5JiYhIWUuY3RybEtleT09ISF0LmN0cmxLZXkmJiEhZS5hbHRLZXk9PSEhdC5hbHRLZXkmJiEhZS5tZXRhS2V5PT0hIXQubWV0YUtleSl9ZnVuY3Rpb24gT28odCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KCIgIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gMT09PXQubGVuZ3RoP3tjb21ibzp0LGtleTp0LGV2ZW50OiJrZXlkb3duIn06dC5zcGxpdCgiKyIpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lLnNwbGl0KCI6IiksaT1uWzBdLHI9blsxXTtyZXR1cm4gaSBpbiBDbz8odFtDb1tpXV09ITAsdC5oYXNNb2RpZmllcnM9ITApOih0LmtleT1pLHQuZXZlbnQ9cnx8ImtleWRvd24iKSx0fSkse2NvbWJvOnQuc3BsaXQoIjoiKS5zaGlmdCgpfSl9KSh0KX0pKX1jb25zdCB6bz17cHJvcGVydGllczp7a2V5RXZlbnRUYXJnZXQ6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSxzdG9wS2V5Ym9hcmRFdmVudFByb3BhZ2F0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9ib3VuZEtleUhhbmRsZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfaW1wZXJhdGl2ZUtleUJpbmRpbmdzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX19LG9ic2VydmVyczpbIl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKGtleUV2ZW50VGFyZ2V0LCBfYm91bmRLZXlIYW5kbGVycykiXSxrZXlCaW5kaW5nczp7fSxyZWdpc3RlcmVkOmZ1bmN0aW9uKCl7dGhpcy5fcHJlcEtleUJpbmRpbmdzKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91bmxpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LGFkZE93bktleUJpbmRpbmc6ZnVuY3Rpb24odCxlKXt0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3NbdF09ZSx0aGlzLl9wcmVwS2V5QmluZGluZ3MoKSx0aGlzLl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKCl9LHJlbW92ZU93bktleUJpbmRpbmdzOmZ1bmN0aW9uKCl7dGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzPXt9LHRoaXMuX3ByZXBLZXlCaW5kaW5ncygpLHRoaXMuX3Jlc2V0S2V5RXZlbnRMaXN0ZW5lcnMoKX0sa2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPU9vKGUpLGk9MDtpPG4ubGVuZ3RoOysraSlpZihSbyhuW2ldLHQpKXJldHVybiEwO3JldHVybiExfSxfY29sbGVjdEtleUJpbmRpbmdzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5iZWhhdmlvcnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXlCaW5kaW5nc30pKTtyZXR1cm4tMT09PXQuaW5kZXhPZih0aGlzLmtleUJpbmRpbmdzKSYmdC5wdXNoKHRoaXMua2V5QmluZGluZ3MpLHR9LF9wcmVwS2V5QmluZGluZ3M6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fa2V5QmluZGluZ3M9e30sdGhpcy5fY29sbGVjdEtleUJpbmRpbmdzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpdGhpcy5fYWRkS2V5QmluZGluZyhlLHRbZV0pfSksdGhpcyksdGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzKXRoaXMuX2FkZEtleUJpbmRpbmcodCx0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3NbdF0pO2Zvcih2YXIgZSBpbiB0aGlzLl9rZXlCaW5kaW5ncyl0aGlzLl9rZXlCaW5kaW5nc1tlXS5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBuPXRbMF0uaGFzTW9kaWZpZXJzO3JldHVybiBuPT09ZVswXS5oYXNNb2RpZmllcnM/MDpuPy0xOjF9KSl9LF9hZGRLZXlCaW5kaW5nOmZ1bmN0aW9uKHQsZSl7T28odCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpcy5fa2V5QmluZGluZ3NbdC5ldmVudF09dGhpcy5fa2V5QmluZGluZ3NbdC5ldmVudF18fFtdLHRoaXMuX2tleUJpbmRpbmdzW3QuZXZlbnRdLnB1c2goW3QsZV0pfSksdGhpcyl9LF9yZXNldEtleUV2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdW5saXN0ZW5LZXlFdmVudExpc3RlbmVycygpLHRoaXMuaXNBdHRhY2hlZCYmdGhpcy5fbGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKX0sX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5rZXlFdmVudFRhcmdldCYmT2JqZWN0LmtleXModGhpcy5fa2V5QmluZGluZ3MpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX29uS2V5QmluZGluZ0V2ZW50LmJpbmQodGhpcyx0aGlzLl9rZXlCaW5kaW5nc1t0XSk7dGhpcy5fYm91bmRLZXlIYW5kbGVycy5wdXNoKFt0aGlzLmtleUV2ZW50VGFyZ2V0LHQsZV0pLHRoaXMua2V5RXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0LGUpfSksdGhpcyl9LF91bmxpc3RlbktleUV2ZW50TGlzdGVuZXJzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0O3RoaXMuX2JvdW5kS2V5SGFuZGxlcnMubGVuZ3RoOykodD10aGlzLl9ib3VuZEtleUhhbmRsZXJzLnBvcCgpKVswXS5yZW1vdmVFdmVudExpc3RlbmVyKHRbMV0sdFsyXSl9LF9vbktleUJpbmRpbmdFdmVudDpmdW5jdGlvbih0LGUpe2lmKHRoaXMuc3RvcEtleWJvYXJkRXZlbnRQcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSwhZS5kZWZhdWx0UHJldmVudGVkKWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dWzBdLHI9dFtuXVsxXTtpZihSbyhpLGUpJiYodGhpcy5fdHJpZ2dlcktleUhhbmRsZXIoaSxyLGUpLGUuZGVmYXVsdFByZXZlbnRlZCkpcmV0dXJufX0sX3RyaWdnZXJLZXlIYW5kbGVyOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1PYmplY3QuY3JlYXRlKHQpO2kua2V5Ym9hcmRFdmVudD1uO3ZhciByPW5ldyBDdXN0b21FdmVudCh0LmV2ZW50LHtkZXRhaWw6aSxjYW5jZWxhYmxlOiEwfSk7dGhpc1tlXS5jYWxsKHRoaXMsciksci5kZWZhdWx0UHJldmVudGVkJiZuLnByZXZlbnREZWZhdWx0KCl9fSxEbz17cHJvcGVydGllczp7c2Nyb2xsVGFyZ2V0Ont0eXBlOkhUTUxFbGVtZW50LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRTY3JvbGxUYXJnZXR9fX0sb2JzZXJ2ZXJzOlsiX3Njcm9sbFRhcmdldENoYW5nZWQoc2Nyb2xsVGFyZ2V0LCBpc0F0dGFjaGVkKSJdLF9zaG91bGRIYXZlTGlzdGVuZXI6ITAsX3Njcm9sbFRhcmdldENoYW5nZWQ6ZnVuY3Rpb24odCxlKXtpZih0aGlzLl9vbGRTY3JvbGxUYXJnZXQmJih0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcighMSx0aGlzLl9vbGRTY3JvbGxUYXJnZXQpLHRoaXMuX29sZFNjcm9sbFRhcmdldD1udWxsKSxlKWlmKCJkb2N1bWVudCI9PT10KXRoaXMuc2Nyb2xsVGFyZ2V0PXRoaXMuX2RvYztlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49dGhpcy5kb21Ib3N0O3RoaXMuc2Nyb2xsVGFyZ2V0PW4mJm4uJD9uLiRbdF06WWkodGhpcy5vd25lckRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKCIjIit0KX1lbHNlIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuX29sZFNjcm9sbFRhcmdldD10LHRoaXMuX3RvZ2dsZVNjcm9sbExpc3RlbmVyKHRoaXMuX3Nob3VsZEhhdmVMaXN0ZW5lcix0KSl9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uIHQoKXt9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzLl9kb2N9LGdldCBfZG9jKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LGdldCBfc2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cucGFnZVlPZmZzZXQ6dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wOjB9LGdldCBfc2Nyb2xsTGVmdCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnBhZ2VYT2Zmc2V0OnRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ6MH0sc2V0IF9zY3JvbGxUb3AodCl7dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKHdpbmRvdy5wYWdlWE9mZnNldCx0KTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A9dCl9LHNldCBfc2Nyb2xsTGVmdCh0KXt0aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuc2Nyb2xsVG8odCx3aW5kb3cucGFnZVlPZmZzZXQpOnRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ9dCl9LHNjcm9sbDpmdW5jdGlvbih0LGUpe3ZhciBuOyJvYmplY3QiPT10eXBlb2YgdD8obj10LmxlZnQsZT10LnRvcCk6bj10LG49bnx8MCxlPWV8fDAsdGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKG4sZSk6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsTGVmdD1uLHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcD1lKX0sZ2V0IF9zY3JvbGxUYXJnZXRXaWR0aCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LmlubmVyV2lkdGg6dGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0V2lkdGg6MH0sZ2V0IF9zY3JvbGxUYXJnZXRIZWlnaHQoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ6MH0sX2lzVmFsaWRTY3JvbGxUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sX3RvZ2dsZVNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZT09PXRoaXMuX2RvYz93aW5kb3c6ZTt0P3RoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcnx8KHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcj10aGlzLl9zY3JvbGxIYW5kbGVyLmJpbmQodGhpcyksbi5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcikpOnRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlciYmKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXIpLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcj1udWxsKX0sdG9nZ2xlU2Nyb2xsTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy5fc2hvdWxkSGF2ZUxpc3RlbmVyPXQsdGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIodCx0aGlzLnNjcm9sbFRhcmdldCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgQm89bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpob25lfGFkOyg/OiBVOyk/IENQVSkgT1MgKFxkKykvKSxIbz1CbyYmQm9bMV0+PTgsRm89Ii0xMDAwMHB4IixWbz0tMTAwO1JyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvOiAxKSB7CiAgICAgICAgOmhvc3QgewogICAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICNpdGVtcyB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1saXN0LWl0ZW1zLWNvbnRhaW5lcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2dyaWRdKSkgI2l0ZW1zID4gOjpzbG90dGVkKCopIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2l0ZW1zID4gOjpzbG90dGVkKCopIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGFycmF5LXNlbGVjdG9yIGlkPSJzZWxlY3RvciIgaXRlbXM9Int7aXRlbXN9fSIgc2VsZWN0ZWQ9Int7c2VsZWN0ZWRJdGVtc319IiBzZWxlY3RlZC1pdGVtPSJ7e3NlbGVjdGVkSXRlbX19Ij48L2FycmF5LXNlbGVjdG9yPgoKICAgIDxkaXYgaWQ9Iml0ZW1zIj4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6Imlyb24tbGlzdCIscHJvcGVydGllczp7aXRlbXM6e3R5cGU6QXJyYXl9LGFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbSJ9LGluZGV4QXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpbmRleCJ9LHNlbGVjdGVkQXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJzZWxlY3RlZCJ9LGdyaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9ncmlkQ2hhbmdlZCJ9LHNlbGVjdGlvbkVuYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LHNlbGVjdGVkSXRlbXM6e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sbXVsdGlTZWxlY3Rpb246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2Nyb2xsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowfX0sb2JzZXJ2ZXJzOlsiX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSIsIl9zZWxlY3Rpb25FbmFibGVkQ2hhbmdlZChzZWxlY3Rpb25FbmFibGVkKSIsIl9tdWx0aVNlbGVjdGlvbkNoYW5nZWQobXVsdGlTZWxlY3Rpb24pIiwiX3NldE92ZXJmbG93KHNjcm9sbFRhcmdldCwgc2Nyb2xsT2Zmc2V0KSJdLGJlaGF2aW9yczpbWnIsZ28sRG8scG9dLF9yYXRpbzouNSxfc2Nyb2xsZXJQYWRkaW5nVG9wOjAsX3Njcm9sbFBvc2l0aW9uOjAsX3BoeXNpY2FsU2l6ZTowLF9waHlzaWNhbEF2ZXJhZ2U6MCxfcGh5c2ljYWxBdmVyYWdlQ291bnQ6MCxfcGh5c2ljYWxUb3A6MCxfdmlydHVhbENvdW50OjAsX2VzdFNjcm9sbEhlaWdodDowLF9zY3JvbGxIZWlnaHQ6MCxfdmlld3BvcnRIZWlnaHQ6MCxfdmlld3BvcnRXaWR0aDowLF9waHlzaWNhbEl0ZW1zOm51bGwsX3BoeXNpY2FsU2l6ZXM6bnVsbCxfZmlyc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbGFzdFZpc2libGVJbmRleFZhbDpudWxsLF9tYXhQYWdlczoyLF9mb2N1c2VkSXRlbTpudWxsLF9mb2N1c2VkVmlydHVhbEluZGV4Oi0xLF9mb2N1c2VkUGh5c2ljYWxJbmRleDotMSxfb2Zmc2NyZWVuRm9jdXNlZEl0ZW06bnVsbCxfZm9jdXNCYWNrZmlsbEl0ZW06bnVsbCxfaXRlbXNQZXJSb3c6MSxfaXRlbVdpZHRoOjAsX3Jvd0hlaWdodDowLF90ZW1wbGF0ZUNvc3Q6MCxfcGFyZW50TW9kZWw6ITAsZ2V0IF9waHlzaWNhbEJvdHRvbSgpe3JldHVybiB0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9waHlzaWNhbFNpemV9LGdldCBfc2Nyb2xsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX3ZpcnR1YWxFbmQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMX0sZ2V0IF9oaWRkZW5Db250ZW50U2l6ZSgpe3JldHVybih0aGlzLmdyaWQ/dGhpcy5fcGh5c2ljYWxSb3dzKnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbFNpemUpLXRoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX2l0ZW1zUGFyZW50KCl7cmV0dXJuIFlpKFlpKHRoaXMuX3VzZXJUZW1wbGF0ZSkucGFyZW50Tm9kZSl9LGdldCBfbWF4U2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl92aWV3cG9ydEhlaWdodCt0aGlzLl9zY3JvbGxPZmZzZXR9LGdldCBfbWF4VmlydHVhbFN0YXJ0KCl7dmFyIHQ9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyh0aGlzLl92aXJ0dWFsQ291bnQpO3JldHVybiBNYXRoLm1heCgwLHQtdGhpcy5fcGh5c2ljYWxDb3VudCl9LHNldCBfdmlydHVhbFN0YXJ0KHQpe3Q9dGhpcy5fY2xhbXAodCwwLHRoaXMuX21heFZpcnR1YWxTdGFydCksdGhpcy5ncmlkJiYodC09dCV0aGlzLl9pdGVtc1BlclJvdyksdGhpcy5fdmlydHVhbFN0YXJ0VmFsPXR9LGdldCBfdmlydHVhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydFZhbHx8MH0sc2V0IF9waHlzaWNhbFN0YXJ0KHQpeyh0JT10aGlzLl9waHlzaWNhbENvdW50KTwwJiYodD10aGlzLl9waHlzaWNhbENvdW50K3QpLHRoaXMuZ3JpZCYmKHQtPXQldGhpcy5faXRlbXNQZXJSb3cpLHRoaXMuX3BoeXNpY2FsU3RhcnRWYWw9dH0sZ2V0IF9waHlzaWNhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU3RhcnRWYWx8fDB9LGdldCBfcGh5c2ljYWxFbmQoKXtyZXR1cm4odGhpcy5fcGh5c2ljYWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTEpJXRoaXMuX3BoeXNpY2FsQ291bnR9LHNldCBfcGh5c2ljYWxDb3VudCh0KXt0aGlzLl9waHlzaWNhbENvdW50VmFsPXR9LGdldCBfcGh5c2ljYWxDb3VudCgpe3JldHVybiB0aGlzLl9waHlzaWNhbENvdW50VmFsfHwwfSxnZXQgX29wdFBoeXNpY2FsU2l6ZSgpe3JldHVybiAwPT09dGhpcy5fdmlld3BvcnRIZWlnaHQ/MS8wOnRoaXMuX3ZpZXdwb3J0SGVpZ2h0KnRoaXMuX21heFBhZ2VzfSxnZXQgX2lzVmlzaWJsZSgpe3JldHVybiBCb29sZWFuKHRoaXMub2Zmc2V0V2lkdGh8fHRoaXMub2Zmc2V0SGVpZ2h0KX0sZ2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7dmFyIHQ9dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw7aWYobnVsbD09dCl7dmFyIGU9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0O3Q9dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0LG4pe3JldHVybihlKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQodCkpPnRoaXMuX3Njcm9sbFBvc2l0aW9uP3RoaXMuZ3JpZD9uLW4ldGhpcy5faXRlbXNQZXJSb3c6bjp0aGlzLmdyaWQmJnRoaXMuX3ZpcnR1YWxDb3VudC0xPT09bj9uLW4ldGhpcy5faXRlbXNQZXJSb3c6dm9pZCAwfSkpfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7dmFyIHQ9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtpZih0aGlzLmdyaWQpdD1NYXRoLm1pbih0aGlzLl92aXJ0dWFsQ291bnQsdGhpcy5maXJzdFZpc2libGVJbmRleCt0aGlzLl9lc3RSb3dzSW5WaWV3KnRoaXMuX2l0ZW1zUGVyUm93LTEpO2Vsc2V7dmFyIGU9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0O3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24obixpKXtlPHRoaXMuX3Njcm9sbEJvdHRvbSYmKHQ9aSksZSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KG4pfSkpfXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IF9kZWZhdWx0U2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXN9LGdldCBfdmlydHVhbFJvd0NvdW50KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl92aXJ0dWFsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpfSxnZXQgX2VzdFJvd3NJblZpZXcoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuX3ZpZXdwb3J0SGVpZ2h0L3RoaXMuX3Jvd0hlaWdodCl9LGdldCBfcGh5c2ljYWxSb3dzKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KX0sZ2V0IF9zY3JvbGxPZmZzZXQoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wK3RoaXMuc2Nyb2xsT2Zmc2V0fSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2RpZEZvY3VzLmJpbmQodGhpcyksITApfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpLHRoaXMubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKSx0aGlzLmxpc3Rlbih0aGlzLCJrZXlkb3duIiwiX2tleWRvd25IYW5kbGVyIil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy51bmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIiksdGhpcy51bmxpc3Rlbih0aGlzLCJrZXlkb3duIiwiX2tleWRvd25IYW5kbGVyIil9LF9zZXRPdmVyZmxvdzpmdW5jdGlvbih0KXt0aGlzLnN0eWxlLndlYmtpdE92ZXJmbG93U2Nyb2xsaW5nPXQ9PT10aGlzPyJ0b3VjaCI6IiIsdGhpcy5zdHlsZS5vdmVyZmxvd1k9dD09PXRoaXM/ImF1dG8iOiIiLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpfSx1cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXM6ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKTt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3A9dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzPzA6cGFyc2VJbnQodFsicGFkZGluZy10b3AiXSwxMCksdGhpcy5faXNSVEw9Qm9vbGVhbigicnRsIj09PXQuZGlyZWN0aW9uKSx0aGlzLl92aWV3cG9ydFdpZHRoPXRoaXMuJC5pdGVtcy5vZmZzZXRXaWR0aCx0aGlzLl92aWV3cG9ydEhlaWdodD10aGlzLl9zY3JvbGxUYXJnZXRIZWlnaHQsdGhpcy5ncmlkJiZ0aGlzLl91cGRhdGVHcmlkTWV0cmljcygpfSxfc2Nyb2xsSGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0PU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5fbWF4U2Nyb2xsVG9wLHRoaXMuX3Njcm9sbFRvcCkpLGU9dC10aGlzLl9zY3JvbGxQb3NpdGlvbixuPWU+PTA7aWYodGhpcy5fc2Nyb2xsUG9zaXRpb249dCx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCxNYXRoLmFicyhlKT50aGlzLl9waHlzaWNhbFNpemUmJnRoaXMuX3BoeXNpY2FsU2l6ZT4wKXtlLT10aGlzLl9zY3JvbGxPZmZzZXQ7dmFyIGk9TWF0aC5yb3VuZChlL3RoaXMuX3BoeXNpY2FsQXZlcmFnZSkqdGhpcy5faXRlbXNQZXJSb3c7dGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtpLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtpLHRoaXMuX3BoeXNpY2FsVG9wPU1hdGgubWluKE1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2UsdGhpcy5fc2Nyb2xsUG9zaXRpb24pLHRoaXMuX3VwZGF0ZSgpfWVsc2UgaWYodGhpcy5fcGh5c2ljYWxDb3VudD4wKXt2YXIgcj10aGlzLl9nZXRSZXVzYWJsZXMobik7bj8odGhpcy5fcGh5c2ljYWxUb3A9ci5waHlzaWNhbFRvcCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K3IuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3IuaW5kZXhlcy5sZW5ndGgpOih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0LXIuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0LXIuaW5kZXhlcy5sZW5ndGgpLHRoaXMuX3VwZGF0ZShyLmluZGV4ZXMsbj9udWxsOnIuaW5kZXhlcyksdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLDApLHZ0KX19LF9nZXRSZXVzYWJsZXM6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9W10sbz10aGlzLl9oaWRkZW5Db250ZW50U2l6ZSp0aGlzLl9yYXRpbyxhPXRoaXMuX3ZpcnR1YWxTdGFydCxzPXRoaXMuX3ZpcnR1YWxFbmQsbD10aGlzLl9waHlzaWNhbENvdW50LGM9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0LHU9dGhpcy5fc2Nyb2xsUG9zaXRpb24saD10aGlzLl9zY3JvbGxCb3R0b207Zm9yKHQ/KGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXUtYyk6KGU9dGhpcy5fcGh5c2ljYWxFbmQsbj10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQtaCk7bi09aT10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoZSksIShyLmxlbmd0aD49bHx8bjw9byk7KWlmKHQpe2lmKHMrci5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50KWJyZWFrO2lmKGMraT49dS10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7ci5wdXNoKGUpLGMrPWksZT0oZSsxKSVsfWVsc2V7aWYoYS1yLmxlbmd0aDw9MClicmVhaztpZihjK3RoaXMuX3BoeXNpY2FsU2l6ZS1pPD1oKWJyZWFrO3IucHVzaChlKSxjLT1pLGU9MD09PWU/bC0xOmUtMX1yZXR1cm57aW5kZXhlczpyLHBoeXNpY2FsVG9wOmMtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCEodCYmMD09PXQubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe2lmKHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKHQpLHRoaXMuX3VwZGF0ZU1ldHJpY3ModCksZSlmb3IoO2UubGVuZ3RoOyl7dmFyIG49ZS5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KG4pfXRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX19LF9jcmVhdGVQb29sOmZ1bmN0aW9uKHQpe3ZhciBlLG47dGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKTt2YXIgaT1uZXcgQXJyYXkodCk7Zm9yKGU9MDtlPHQ7ZSsrKW49dGhpcy5zdGFtcChudWxsKSxpW2VdPW4ucm9vdC5xdWVyeVNlbGVjdG9yKCIqIiksdGhpcy5faXRlbXNQYXJlbnQuYXBwZW5kQ2hpbGQobi5yb290KTtyZXR1cm4gaX0sX2lzQ2xpZW50RnVsbDpmdW5jdGlvbigpe3JldHVybiAwIT10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsQm90dG9tLTE+PXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxUb3A8PXRoaXMuX3Njcm9sbFBvc2l0aW9ufSxfaW5jcmVhc2VQb29sSWZOZWVkZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY2xhbXAodGhpcy5fcGh5c2ljYWxDb3VudCt0LDMsdGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCk7aWYoZT10aGlzLl9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93KGUpLHRoaXMuZ3JpZCl7dmFyIG49ZSV0aGlzLl9pdGVtc1BlclJvdztuJiZlLW48PXRoaXMuX3BoeXNpY2FsQ291bnQmJihlKz10aGlzLl9pdGVtc1BlclJvdyksZS09bn12YXIgaT1lLXRoaXMuX3BoeXNpY2FsQ291bnQscj1NYXRoLnJvdW5kKC41KnRoaXMuX3BoeXNpY2FsQ291bnQpO2lmKCEoaTwwKSl7aWYoaT4wKXt2YXIgbz13aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7W10ucHVzaC5hcHBseSh0aGlzLl9waHlzaWNhbEl0ZW1zLHRoaXMuX2NyZWF0ZVBvb2woaSkpO2Zvcih2YXIgYT0wO2E8aTthKyspdGhpcy5fcGh5c2ljYWxTaXplcy5wdXNoKDApO3RoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudCtpLHRoaXMuX3BoeXNpY2FsU3RhcnQ+dGhpcy5fcGh5c2ljYWxFbmQmJnRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSYmdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KTx0aGlzLl9waHlzaWNhbEVuZCYmKHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtpKSx0aGlzLl91cGRhdGUoKSx0aGlzLl90ZW1wbGF0ZUNvc3Q9KHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKS1vKS9pLHI9TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KX10aGlzLl92aXJ0dWFsRW5kPj10aGlzLl92aXJ0dWFsQ291bnQtMXx8MD09PXJ8fCh0aGlzLl9pc0NsaWVudEZ1bGwoKT90aGlzLl9waHlzaWNhbFNpemU8dGhpcy5fb3B0UGh5c2ljYWxTaXplJiZ0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsdGhpcy5fY2xhbXAoTWF0aC5yb3VuZCg1MC90aGlzLl90ZW1wbGF0ZUNvc3QpLDEscikpLHl0KTp0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsciksdnQpKX19LF9yZW5kZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2lzVmlzaWJsZSlpZigwIT09dGhpcy5fcGh5c2ljYWxDb3VudCl7dmFyIHQ9dGhpcy5fZ2V0UmV1c2FibGVzKCEwKTt0aGlzLl9waHlzaWNhbFRvcD10LnBoeXNpY2FsVG9wLHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrdC5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrdC5pbmRleGVzLmxlbmd0aCx0aGlzLl91cGRhdGUodC5pbmRleGVzKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKX1lbHNlIHRoaXMuX3ZpcnR1YWxDb3VudD4wJiYodGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgzKSl9LF9lbnN1cmVUZW1wbGF0aXplZDpmdW5jdGlvbigpe2lmKCF0aGlzLmN0b3Ipe3RoaXMuX3VzZXJUZW1wbGF0ZT10aGlzLnF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oInRlbXBsYXRlIiksdGhpcy5fdXNlclRlbXBsYXRlfHxjb25zb2xlLndhcm4oImlyb24tbGlzdCByZXF1aXJlcyBhIHRlbXBsYXRlIHRvIGJlIHByb3ZpZGVkIGluIGxpZ2h0LWRvbSIpO3ZhciB0PXtfX2tleV9fOiEwfTt0W3RoaXMuYXNdPSEwLHRbdGhpcy5pbmRleEFzXT0hMCx0W3RoaXMuc2VsZWN0ZWRBc109ITAsdC50YWJJbmRleD0hMCx0aGlzLl9pbnN0YW5jZVByb3BzPXQsdGhpcy50ZW1wbGF0aXplKHRoaXMuX3VzZXJUZW1wbGF0ZSx0aGlzLm11dGFibGVEYXRhKX19LF9ncmlkQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUmJih0aGlzLm5vdGlmeVJlc2l6ZSgpLERpKCksdCYmdGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKSl9LF9pdGVtc0NoYW5nZWQ6ZnVuY3Rpb24odCl7aWYoIml0ZW1zIj09PXQucGF0aCl0aGlzLl92aXJ0dWFsU3RhcnQ9MCx0aGlzLl9waHlzaWNhbFRvcD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fcGh5c2ljYWxJbmRleEZvcktleT17fSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnR8fDAsdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSx0aGlzLl9waHlzaWNhbFNpemVzPXRoaXMuX3BoeXNpY2FsU2l6ZXN8fFtdLHRoaXMuX3BoeXNpY2FsU3RhcnQ9MCx0aGlzLl9zY3JvbGxUb3A+dGhpcy5fc2Nyb2xsT2Zmc2V0JiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKDApLHRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCksdGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCk7ZWxzZSBpZigiaXRlbXMuc3BsaWNlcyI9PT10LnBhdGgpe2lmKHRoaXMuX2FkanVzdFZpcnR1YWxJbmRleCh0LnZhbHVlLmluZGV4U3BsaWNlcyksdGhpcy5fdmlydHVhbENvdW50PXRoaXMuaXRlbXM/dGhpcy5pdGVtcy5sZW5ndGg6MCx0LnZhbHVlLmluZGV4U3BsaWNlcy5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hZGRlZENvdW50PjB8fHQucmVtb3ZlZC5sZW5ndGg+MH0pKSl7dmFyIGU9dGhpcy5fZ2V0QWN0aXZlRWxlbWVudCgpO3RoaXMuY29udGFpbnMoZSkmJmUuYmx1cigpfXZhciBuPXQudmFsdWUuaW5kZXhTcGxpY2VzLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmluZGV4K3QuYWRkZWRDb3VudD49dGhpcy5fdmlydHVhbFN0YXJ0JiZ0LmluZGV4PD10aGlzLl92aXJ0dWFsRW5kfSksdGhpcyk7dGhpcy5faXNDbGllbnRGdWxsKCkmJiFufHx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KX1lbHNlIml0ZW1zLmxlbmd0aCIhPT10LnBhdGgmJnRoaXMuX2ZvcndhcmRJdGVtUGF0aCh0LnBhdGgsdC52YWx1ZSl9LF9mb3J3YXJkSXRlbVBhdGg6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbz0odD10LnNsaWNlKDYpKS5pbmRleE9mKCIuIik7LTE9PT1vJiYobz10Lmxlbmd0aCk7dmFyIGE9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pLHM9cGFyc2VJbnQodC5zdWJzdHJpbmcoMCxvKSwxMCk7KG49dGhpcy5faXNJbmRleFJlbmRlcmVkKHMpKT8oaT10aGlzLl9nZXRQaHlzaWNhbEluZGV4KHMpLHI9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1tpXSkpOmEmJihyPWEpLHImJnJbdGhpcy5pbmRleEFzXT09PXMmJih0PXQuc3Vic3RyaW5nKG8rMSksci5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHQ9dGhpcy5hcysodD8iLiIrdDoiIiksZSwhMSwhMCksci5fZmx1c2hQcm9wZXJ0aWVzJiZyLl9mbHVzaFByb3BlcnRpZXMoKSxuJiYodGhpcy5fdXBkYXRlTWV0cmljcyhbaV0pLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKSkpfSxfYWRqdXN0VmlydHVhbEluZGV4OmZ1bmN0aW9uKHQpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodC5yZW1vdmVkLmZvckVhY2godGhpcy5fcmVtb3ZlSXRlbSx0aGlzKSx0LmluZGV4PHRoaXMuX3ZpcnR1YWxTdGFydCl7dmFyIGU9TWF0aC5tYXgodC5hZGRlZENvdW50LXQucmVtb3ZlZC5sZW5ndGgsdC5pbmRleC10aGlzLl92aXJ0dWFsU3RhcnQpO3RoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrZSx0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4Pj0wJiYodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD10aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4K2UpfX0pLHRoaXMpfSxfcmVtb3ZlSXRlbTpmdW5jdGlvbih0KXt0aGlzLiQuc2VsZWN0b3IuZGVzZWxlY3QodCksdGhpcy5fZm9jdXNlZEl0ZW0mJnRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX2ZvY3VzZWRJdGVtKVt0aGlzLmFzXT09PXQmJnRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCl9LF9pdGVyYXRlSXRlbXM6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbztpZigyPT09YXJndW1lbnRzLmxlbmd0aCYmZSl7Zm9yKG89MDtvPGUubGVuZ3RoO28rKylpZihpPXRoaXMuX2NvbXB1dGVWaWR4KG49ZVtvXSksbnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9ZWxzZXtmb3Iobj10aGlzLl9waHlzaWNhbFN0YXJ0LGk9dGhpcy5fdmlydHVhbFN0YXJ0O248dGhpcy5fcGh5c2ljYWxDb3VudDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByO2ZvcihuPTA7bjx0aGlzLl9waHlzaWNhbFN0YXJ0O24rKyxpKyspaWYobnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9fSxfY29tcHV0ZVZpZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3BoeXNpY2FsU3RhcnQ/dGhpcy5fdmlydHVhbFN0YXJ0Kyh0LXRoaXMuX3BoeXNpY2FsU3RhcnQpOnRoaXMuX3ZpcnR1YWxTdGFydCsodGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl9waHlzaWNhbFN0YXJ0KSt0fSxfYXNzaWduTW9kZWxzOmZ1bmN0aW9uKHQpe3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9waHlzaWNhbEl0ZW1zW3RdLGk9dGhpcy5pdGVtcyYmdGhpcy5pdGVtc1tlXTtpZihudWxsIT1pKXt2YXIgcj10aGlzLm1vZGVsRm9yRWxlbWVudChuKTtyLl9fa2V5X189bnVsbCx0aGlzLl9mb3J3YXJkUHJvcGVydHkocix0aGlzLmFzLGkpLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShyLHRoaXMuc2VsZWN0ZWRBcyx0aGlzLiQuc2VsZWN0b3IuaXNTZWxlY3RlZChpKSksdGhpcy5fZm9yd2FyZFByb3BlcnR5KHIsdGhpcy5pbmRleEFzLGUpLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShyLCJ0YWJJbmRleCIsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD09PWU/MDotMSksdGhpcy5fcGh5c2ljYWxJbmRleEZvcktleVtyLl9fa2V5X19dPXQsci5fZmx1c2hQcm9wZXJ0aWVzJiZyLl9mbHVzaFByb3BlcnRpZXMoITApLG4ucmVtb3ZlQXR0cmlidXRlKCJoaWRkZW4iKX1lbHNlIG4uc2V0QXR0cmlidXRlKCJoaWRkZW4iLCIiKX0pLHQpfSxfdXBkYXRlTWV0cmljczpmdW5jdGlvbih0KXtEaSgpO3ZhciBlPTAsbj0wLGk9dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQscj10aGlzLl9waHlzaWNhbEF2ZXJhZ2U7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0LGkpe24rPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxTaXplc1t0XT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdLm9mZnNldEhlaWdodCxlKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50Kz10aGlzLl9waHlzaWNhbFNpemVzW3RdPzE6MH0pLHQpLHRoaXMuZ3JpZD8odGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKSx0aGlzLl9waHlzaWNhbFNpemU9TWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3Jvd0hlaWdodCk6KG49MT09PXRoaXMuX2l0ZW1zUGVyUm93P246TWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3Jvd0hlaWdodCx0aGlzLl9waHlzaWNhbFNpemU9dGhpcy5fcGh5c2ljYWxTaXplK2Utbix0aGlzLl9pdGVtc1BlclJvdz0xKSx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCE9PWkmJih0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9TWF0aC5yb3VuZCgocippK2UpL3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50KSl9LF91cGRhdGVHcmlkTWV0cmljczpmdW5jdGlvbigpe3RoaXMuX2l0ZW1XaWR0aD10aGlzLl9waHlzaWNhbENvdW50PjA/dGhpcy5fcGh5c2ljYWxJdGVtc1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDoyMDAsdGhpcy5fcm93SGVpZ2h0PXRoaXMuX3BoeXNpY2FsQ291bnQ+MD90aGlzLl9waHlzaWNhbEl0ZW1zWzBdLm9mZnNldEhlaWdodDoyMDAsdGhpcy5faXRlbXNQZXJSb3c9dGhpcy5faXRlbVdpZHRoP01hdGguZmxvb3IodGhpcy5fdmlld3BvcnRXaWR0aC90aGlzLl9pdGVtV2lkdGgpOnRoaXMuX2l0ZW1zUGVyUm93fSxfcG9zaXRpb25JdGVtczpmdW5jdGlvbigpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7dmFyIHQ9dGhpcy5fcGh5c2ljYWxUb3A7aWYodGhpcy5ncmlkKXt2YXIgZT0odGhpcy5fdmlld3BvcnRXaWR0aC10aGlzLl9pdGVtc1BlclJvdyp0aGlzLl9pdGVtV2lkdGgpLzI7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe3ZhciByPU1hdGguZmxvb3IoaSV0aGlzLl9pdGVtc1BlclJvdyp0aGlzLl9pdGVtV2lkdGgrZSk7dGhpcy5faXNSVEwmJihyKj0tMSksdGhpcy50cmFuc2xhdGUzZChyKyJweCIsdCsicHgiLDAsdGhpcy5fcGh5c2ljYWxJdGVtc1tuXSksdGhpcy5fc2hvdWxkUmVuZGVyTmV4dFJvdyhpKSYmKHQrPXRoaXMuX3Jvd0hlaWdodCl9KSl9ZWxzZXtjb25zdCBlPVtdO3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24obixpKXtjb25zdCByPXRoaXMuX3BoeXNpY2FsSXRlbXNbbl07dGhpcy50cmFuc2xhdGUzZCgwLHQrInB4IiwwLHIpLHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbbl07Y29uc3Qgbz1yLmlkO28mJmUucHVzaChvKX0pKSxlLmxlbmd0aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtb3ducyIsZS5qb2luKCIgIikpfX0sX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ncmlkP3RoaXMuX2NvbXB1dGVWaWR4KHQpJXRoaXMuX2l0ZW1zUGVyUm93IT10aGlzLl9pdGVtc1BlclJvdy0xPzA6dGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19LF9zaG91bGRSZW5kZXJOZXh0Um93OmZ1bmN0aW9uKHQpe3JldHVybiB0JXRoaXMuX2l0ZW1zUGVyUm93PT10aGlzLl9pdGVtc1BlclJvdy0xfSxfYWRqdXN0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2lmKDAhPT10KXt0aGlzLl9waHlzaWNhbFRvcD10aGlzLl9waHlzaWNhbFRvcC10O3ZhciBlPXRoaXMuX3Njcm9sbFBvc2l0aW9uOyFIbyYmZT4wJiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKGUtdCl9fSxfcmVzZXRTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbih0KXt0aGlzLnNjcm9sbFRhcmdldCYmdD49MCYmKHRoaXMuX3Njcm9sbFRvcD10LHRoaXMuX3Njcm9sbFBvc2l0aW9uPXRoaXMuX3Njcm9sbFRvcCl9LF91cGRhdGVTY3JvbGxlclNpemU6ZnVuY3Rpb24odCl7dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0PXRoaXMuZ3JpZD90aGlzLl92aXJ0dWFsUm93Q291bnQqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsQm90dG9tK01hdGgubWF4KHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCwwKSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2UsKCh0PSh0PSh0PXR8fDA9PT10aGlzLl9zY3JvbGxIZWlnaHQpfHx0aGlzLl9zY3JvbGxQb3NpdGlvbj49dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3BoeXNpY2FsU2l6ZSl8fHRoaXMuZ3JpZCYmdGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodDx0aGlzLl9lc3RTY3JvbGxIZWlnaHQpfHxNYXRoLmFicyh0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fc2Nyb2xsSGVpZ2h0KT49dGhpcy5fdmlld3BvcnRIZWlnaHQpJiYodGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQrInB4Iix0aGlzLl9zY3JvbGxIZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KX0sc2Nyb2xsVG9JdGVtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKHQpKX0sc2Nyb2xsVG9JbmRleDpmdW5jdGlvbih0KXtpZighKCJudW1iZXIiIT10eXBlb2YgdHx8dDwwfHx0PnRoaXMuaXRlbXMubGVuZ3RoLTEpJiYoRGkoKSwwIT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe3Q9dGhpcy5fY2xhbXAodCwwLHRoaXMuX3ZpcnR1YWxDb3VudC0xKSwoIXRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KXx8dD49dGhpcy5fbWF4VmlydHVhbFN0YXJ0KSYmKHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLmdyaWQ/dC0yKnRoaXMuX2l0ZW1zUGVyUm93OnQtMSksdGhpcy5fbWFuYWdlRm9jdXMoKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZTtmb3IodmFyIGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXRoaXMuX3ZpcnR1YWxTdGFydCxpPTAscj10aGlzLl9oaWRkZW5Db250ZW50U2l6ZTtuPHQmJmk8PXI7KWkrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChlKSxlPShlKzEpJXRoaXMuX3BoeXNpY2FsQ291bnQsbisrO3RoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSghMCksdGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24odGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0K2kpLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKDApLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsfX0sX3Jlc2V0QXZlcmFnZTpmdW5jdGlvbigpe3RoaXMuX3BoeXNpY2FsQXZlcmFnZT0wLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50PTB9LF9yZXNpemVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLChmdW5jdGlvbigpe3RoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2lzVmlzaWJsZT8odGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLnRvZ2dsZVNjcm9sbExpc3RlbmVyKCEwKSx0aGlzLl9yZXNldEF2ZXJhZ2UoKSx0aGlzLl9yZW5kZXIoKSk6dGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMSl9KSxfdCl9LHNlbGVjdEl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKHQpKX0sc2VsZWN0SW5kZXg6ZnVuY3Rpb24odCl7aWYoISh0PDB8fHQ+PXRoaXMuX3ZpcnR1YWxDb3VudCkpe2lmKCF0aGlzLm11bHRpU2VsZWN0aW9uJiZ0aGlzLnNlbGVjdGVkSXRlbSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KSl7dmFyIGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSk7ZSYmKGVbdGhpcy5zZWxlY3RlZEFzXT0hMCksdGhpcy51cGRhdGVTaXplRm9ySW5kZXgodCl9dGhpcy4kLnNlbGVjdG9yLnNlbGVjdEluZGV4KHQpfX0sZGVzZWxlY3RJdGVtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKHQpKX0sZGVzZWxlY3RJbmRleDpmdW5jdGlvbih0KXt0PDB8fHQ+PXRoaXMuX3ZpcnR1YWxDb3VudHx8KHRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KSYmKHRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0pW3RoaXMuc2VsZWN0ZWRBc109ITEsdGhpcy51cGRhdGVTaXplRm9ySW5kZXgodCkpLHRoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdEluZGV4KHQpKX0sdG9nZ2xlU2VsZWN0aW9uRm9ySXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50b2dnbGVTZWxlY3Rpb25Gb3JJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSx0b2dnbGVTZWxlY3Rpb25Gb3JJbmRleDpmdW5jdGlvbih0KXsodGhpcy4kLnNlbGVjdG9yLmlzSW5kZXhTZWxlY3RlZD90aGlzLiQuc2VsZWN0b3IuaXNJbmRleFNlbGVjdGVkKHQpOnRoaXMuJC5zZWxlY3Rvci5pc1NlbGVjdGVkKHRoaXMuaXRlbXNbdF0pKT90aGlzLmRlc2VsZWN0SW5kZXgodCk6dGhpcy5zZWxlY3RJbmRleCh0KX0sY2xlYXJTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsZSl7dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0XSlbdGhpcy5zZWxlY3RlZEFzXT0hMX0pKSx0aGlzLiQuc2VsZWN0b3IuY2xlYXJTZWxlY3Rpb24oKX0sX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpeyh0P3RoaXMubGlzdGVuOnRoaXMudW5saXN0ZW4pLmNhbGwodGhpcyx0aGlzLCJ0YXAiLCJfc2VsZWN0aW9uSGFuZGxlciIpfSxfc2VsZWN0aW9uSGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0LnRhcmdldCk7aWYoZSl7dmFyIG4saSxyPVlpKHQpLnBhdGhbMF0sbz10aGlzLl9nZXRBY3RpdmVFbGVtZW50KCksYT10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgoZVt0aGlzLmluZGV4QXNdKV07ImlucHV0IiE9PXIubG9jYWxOYW1lJiYiYnV0dG9uIiE9PXIubG9jYWxOYW1lJiYic2VsZWN0IiE9PXIubG9jYWxOYW1lJiYobj1lLnRhYkluZGV4LGUudGFiSW5kZXg9Vm8saT1vP28udGFiSW5kZXg6LTEsZS50YWJJbmRleD1uLG8mJmEhPT1vJiZhLmNvbnRhaW5zKG8pJiZpIT09Vm98fHRoaXMudG9nZ2xlU2VsZWN0aW9uRm9ySXRlbShlW3RoaXMuYXNdKSl9fSxfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuY2xlYXJTZWxlY3Rpb24oKSx0aGlzLiQuc2VsZWN0b3IubXVsdGk9dH0sdXBkYXRlU2l6ZUZvckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlU2l6ZUZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHVwZGF0ZVNpemVGb3JJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpPyh0aGlzLl91cGRhdGVNZXRyaWNzKFt0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpLG51bGwpOm51bGx9LF9tYW5hZ2VGb2N1czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7dD49MCYmdDx0aGlzLl92aXJ0dWFsQ291bnQ/dGhpcy5faXNJbmRleFJlbmRlcmVkKHQpP3RoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpOnRoaXMuX2NyZWF0ZUZvY3VzQmFja2ZpbGxJdGVtKCk6dGhpcy5fdmlydHVhbENvdW50PjAmJnRoaXMuX3BoeXNpY2FsQ291bnQ+MCYmKHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX3BoeXNpY2FsU3RhcnQsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD10aGlzLl92aXJ0dWFsU3RhcnQsdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9waHlzaWNhbFN0YXJ0XSl9LF9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtc1BlclJvd3x8MSx0aGlzLmdyaWQ/TWF0aC5jZWlsKHQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX2l0ZW1zUGVyUm93OnR9LF9pc0luZGV4UmVuZGVyZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdDw9dGhpcy5fdmlydHVhbEVuZH0sX2lzSW5kZXhWaXNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiB0Pj10aGlzLmZpcnN0VmlzaWJsZUluZGV4JiZ0PD10aGlzLmxhc3RWaXNpYmxlSW5kZXh9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0Kyh0LXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LGZvY3VzSXRlbTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1BoeXNpY2FsSXRlbSh0KX0sX2ZvY3VzUGh5c2ljYWxJdGVtOmZ1bmN0aW9uKHQpe2lmKCEodDwwfHx0Pj10aGlzLl92aXJ0dWFsQ291bnQpKXt0aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKSx0aGlzLl9pc0luZGV4UmVuZGVyZWQodCl8fHRoaXMuc2Nyb2xsVG9JbmRleCh0KTt2YXIgZSxuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0KV0saT10aGlzLm1vZGVsRm9yRWxlbWVudChuKTtpLnRhYkluZGV4PVZvLG4udGFiSW5kZXg9PT1WbyYmKGU9biksZXx8KGU9WWkobikucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSItMTAwIl0nKSksaS50YWJJbmRleD0wLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dCxlJiZlLmZvY3VzKCl9fSxfcmVtb3ZlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5faXRlbXNQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGwsdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCx0aGlzLl9mb2N1c2VkSXRlbT1udWxsLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9LTEsdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9LTF9LF9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4O2lmKCEodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW18fHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe2lmKCF0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSl7dmFyIGU9dGhpcy5zdGFtcChudWxsKTt0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKGUucm9vdCl9dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSx0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkudGFiSW5kZXg9MCx0aGlzLl9waHlzaWNhbEl0ZW1zW3RdPXRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXQsdGhpcy50cmFuc2xhdGUzZCgwLEZvLDAsdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pfX0sX3Jlc3RvcmVGb2N1c2VkSXRlbTpmdW5jdGlvbigpe2lmKHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiYhKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe3RoaXMuX2Fzc2lnbk1vZGVscygpO3ZhciB0PXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCksZT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdO2lmKGUpe3ZhciBuPXRoaXMubW9kZWxGb3JFbGVtZW50KGUpLGk9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pO25bdGhpcy5hc109PT1pW3RoaXMuYXNdPyh0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1lLG4udGFiSW5kZXg9LTEsdGhpcy5fcGh5c2ljYWxJdGVtc1t0XT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLnRyYW5zbGF0ZTNkKDAsRm8sMCx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSkpOih0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPW51bGwpLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGx9fX0sX2RpZEZvY3VzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQudGFyZ2V0KSxuPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX2ZvY3VzZWRJdGVtKSxpPW51bGwhPT10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSxyPXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg7ZSYmKG49PT1lP3RoaXMuX2lzSW5kZXhWaXNpYmxlKHIpfHx0aGlzLnNjcm9sbFRvSW5kZXgocik6KHRoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpLG4mJihuLnRhYkluZGV4PS0xKSxlLnRhYkluZGV4PTAsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD1yPWVbdGhpcy5pbmRleEFzXSx0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9nZXRQaHlzaWNhbEluZGV4KHIpLHRoaXMuX2ZvY3VzZWRJdGVtPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXhdLGkmJiF0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5fdXBkYXRlKCkpKX0sX2tleWRvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNDA6dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDx0aGlzLl92aXJ0dWFsQ291bnQtMSYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzOTp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPy0xOjEpKTticmVhaztjYXNlIDM4OnRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg+MCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgtKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPzE6LTEpKTticmVhaztjYXNlIDEzOnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLHRoaXMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5fc2VsZWN0aW9uSGFuZGxlcih0KX19LF9jbGFtcDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgoZSx0KSl9LF9kZWJvdW5jZTpmdW5jdGlvbih0LGUsbil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW3RdPVRuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbdF0sbixlLmJpbmQodGhpcykpLEFuKHRoaXMuX2RlYm91bmNlcnNbdF0pfSxfZm9yd2FyZFByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXt0Ll9zZXRQZW5kaW5nUHJvcGVydHkoZSxuKX0sX2ZvcndhcmRIb3N0UHJvcFYyOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikuZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSx0aGlzKX0sX25vdGlmeUluc3RhbmNlUHJvcFYyOmZ1bmN0aW9uKHQsZSxuKXtpZihRKHRoaXMuYXMsZSkpe3ZhciBpPXRbdGhpcy5pbmRleEFzXTtlPT10aGlzLmFzJiYodGhpcy5pdGVtc1tpXT1uKSx0aGlzLm5vdGlmeVBhdGgoSih0aGlzLmFzLCJpdGVtcy4iK2ksZSksbil9fSxfZ2V0U3RhbXBlZENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsSXRlbXN9LF9mb3J3YXJkSW5zdGFuY2VQYXRoOmZ1bmN0aW9uKHQsZSxuKXswPT09ZS5pbmRleE9mKHRoaXMuYXMrIi4iKSYmdGhpcy5ub3RpZnlQYXRoKCJpdGVtcy4iK3QuX19rZXlfXysiLiIrZS5zbGljZSh0aGlzLmFzLmxlbmd0aCsxKSxuKX0sX2ZvcndhcmRQYXJlbnRQYXRoOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmdGhpcy5tb2RlbEZvckVsZW1lbnQobikubm90aWZ5UGF0aCh0LGUpfSksdGhpcyl9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbih0LGUpeyh0aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSkuY29uY2F0KFt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbV0pLmZvckVhY2goKGZ1bmN0aW9uKG4pe24mJih0aGlzLm1vZGVsRm9yRWxlbWVudChuKVt0XT1lKX0pLHRoaXMpfSxfZ2V0QWN0aXZlRWxlbWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2l0ZW1zUGFyZW50Lm5vZGUuZG9tSG9zdDtyZXR1cm4gWWkodD90LnJvb3Q6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyBVb3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnNlbGVjdENhbGxiYWNrPXR9Z2V0KCl7cmV0dXJuIHRoaXMubXVsdGk/dGhpcy5zZWxlY3Rpb24uc2xpY2UoKTp0aGlzLnNlbGVjdGlvblswXX1jbGVhcih0KXt0aGlzLnNlbGVjdGlvbi5zbGljZSgpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyghdHx8dC5pbmRleE9mKGUpPDApJiZ0aGlzLnNldEl0ZW1TZWxlY3RlZChlLCExKX0pLHRoaXMpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmluZGV4T2YodCk+PTB9c2V0SXRlbVNlbGVjdGVkKHQsZSl7aWYobnVsbCE9dCYmZSE9PXRoaXMuaXNTZWxlY3RlZCh0KSl7aWYoZSl0aGlzLnNlbGVjdGlvbi5wdXNoKHQpO2Vsc2V7dmFyIG49dGhpcy5zZWxlY3Rpb24uaW5kZXhPZih0KTtuPj0wJiZ0aGlzLnNlbGVjdGlvbi5zcGxpY2UobiwxKX10aGlzLnNlbGVjdENhbGxiYWNrJiZ0aGlzLnNlbGVjdENhbGxiYWNrKHQsZSl9fXNlbGVjdCh0KXt0aGlzLm11bHRpP3RoaXMudG9nZ2xlKHQpOnRoaXMuZ2V0KCkhPT10JiYodGhpcy5zZXRJdGVtU2VsZWN0ZWQodGhpcy5nZXQoKSwhMSksdGhpcy5zZXRJdGVtU2VsZWN0ZWQodCwhMCkpfXRvZ2dsZSh0KXt0aGlzLnNldEl0ZW1TZWxlY3RlZCh0LCF0aGlzLmlzU2VsZWN0ZWQodCkpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3Qgam89e3Byb3BlcnRpZXM6e2F0dHJGb3JTZWxlY3RlZDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sc2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LGFjdGl2YXRlRXZlbnQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YXAiLG9ic2VydmVyOiJfYWN0aXZhdGVFdmVudENoYW5nZWQifSxzZWxlY3RhYmxlOlN0cmluZyxzZWxlY3RlZENsYXNzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXJvbi1zZWxlY3RlZCJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxmYWxsYmFja1NlbGVjdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0saXRlbXM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfZXhjbHVkZWRMb2NhbE5hbWVzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt0ZW1wbGF0ZToxLCJkb20tYmluZCI6MSwiZG9tLWlmIjoxLCJkb20tcmVwZWF0IjoxfX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlQXR0ckZvclNlbGVjdGVkKGF0dHJGb3JTZWxlY3RlZCkiLCJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWQpIiwiX2NoZWNrRmFsbGJhY2soZmFsbGJhY2tTZWxlY3Rpb24pIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2JpbmRGaWx0ZXJJdGVtPXRoaXMuX2ZpbHRlckl0ZW0uYmluZCh0aGlzKSx0aGlzLl9zZWxlY3Rpb249bmV3IFVvKHRoaXMuX2FwcGx5U2VsZWN0aW9uLmJpbmQodGhpcykpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPXRoaXMuX29ic2VydmVJdGVtcyh0aGlzKSx0aGlzLl9hZGRMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZZaSh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fcmVtb3ZlTGlzdGVuZXIodGhpcy5hY3RpdmF0ZUV2ZW50KX0saW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVtcz90aGlzLml0ZW1zLmluZGV4T2YodCk6LTF9LHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLnNlbGVjdGVkPXR9LHNlbGVjdFByZXZpb3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT10LTE7dm9pZCAwIT09dGhpcy5zZWxlY3RlZCYmKGU9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpLTErdCkldCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoZSl9LHNlbGVjdE5leHQ6ZnVuY3Rpb24oKXt2YXIgdD0wO3ZvaWQgMCE9PXRoaXMuc2VsZWN0ZWQmJih0PShOdW1iZXIodGhpcy5fdmFsdWVUb0luZGV4KHRoaXMuc2VsZWN0ZWQpKSsxKSV0aGlzLml0ZW1zLmxlbmd0aCksdGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUodCl9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0KHRoaXMuX2luZGV4VG9WYWx1ZSh0KSl9LGZvcmNlU3luY2hyb25vdXNJdGVtVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9vYnNlcnZlci5mbHVzaD90aGlzLl9vYnNlcnZlci5mbHVzaCgpOnRoaXMuX3VwZGF0ZUl0ZW1zKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR9LF9jaGVja0ZhbGxiYWNrOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlU2VsZWN0ZWQoKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHRoaXMsdCwiX2FjdGl2YXRlSGFuZGxlciIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy51bmxpc3Rlbih0aGlzLHQsIl9hY3RpdmF0ZUhhbmRsZXIiKX0sX2FjdGl2YXRlRXZlbnRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoZSksdGhpcy5fYWRkTGlzdGVuZXIodCl9LF91cGRhdGVJdGVtczpmdW5jdGlvbigpe3ZhciB0PVlpKHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0aGlzLnNlbGVjdGFibGV8fCIqIik7dD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwodCx0aGlzLl9iaW5kRmlsdGVySXRlbSksdGhpcy5fc2V0SXRlbXModCl9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKSl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0U2VsZWN0ZWQ6ZnVuY3Rpb24odCl7aWYodGhpcy5pdGVtcyl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7ZT90aGlzLl9zZWxlY3Rpb24uc2VsZWN0KGUpOnRoaXMuX3NlbGVjdGlvbi5jbGVhcigpLHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJnRoaXMuaXRlbXMubGVuZ3RoJiZ2b2lkIDA9PT10aGlzLl9zZWxlY3Rpb24uZ2V0KCkmJih0aGlzLnNlbGVjdGVkPXRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pfX0sX2ZpbHRlckl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuX2V4Y2x1ZGVkTG9jYWxOYW1lc1t0LmxvY2FsTmFtZV19LF92YWx1ZVRvSXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnRoaXMuaXRlbXNbdGhpcy5fdmFsdWVUb0luZGV4KHQpXX0sX3ZhbHVlVG9JbmRleDpmdW5jdGlvbih0KXtpZighdGhpcy5hdHRyRm9yU2VsZWN0ZWQpcmV0dXJuIE51bWJlcih0KTtmb3IodmFyIGUsbj0wO2U9dGhpcy5pdGVtc1tuXTtuKyspaWYodGhpcy5fdmFsdWVGb3JJdGVtKGUpPT10KXJldHVybiBufSxfaW5kZXhUb1ZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZClyZXR1cm4gdDt2YXIgZT10aGlzLml0ZW1zW3RdO3JldHVybiBlP3RoaXMuX3ZhbHVlRm9ySXRlbShlKTp2b2lkIDB9LF92YWx1ZUZvckl0ZW06ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXt2YXIgZT10aGlzLmluZGV4T2YodCk7cmV0dXJuLTE9PT1lP251bGw6ZX12YXIgbj10W3N0KHRoaXMuYXR0ckZvclNlbGVjdGVkKV07cmV0dXJuIG51bGwhPW4/bjp0LmdldEF0dHJpYnV0ZSh0aGlzLmF0dHJGb3JTZWxlY3RlZCl9LF9hcHBseVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuc2VsZWN0ZWRDbGFzcyYmdGhpcy50b2dnbGVDbGFzcyh0aGlzLnNlbGVjdGVkQ2xhc3MsZSx0KSx0aGlzLnNlbGVjdGVkQXR0cmlidXRlJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSh0aGlzLnNlbGVjdGVkQXR0cmlidXRlLGUsdCksdGhpcy5fc2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5maXJlKCJpcm9uLSIrKGU/InNlbGVjdCI6ImRlc2VsZWN0Iikse2l0ZW06dH0pfSxfc2VsZWN0aW9uQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHRoaXMuX3NlbGVjdGlvbi5nZXQoKSl9LF9vYnNlcnZlSXRlbXM6ZnVuY3Rpb24odCl7cmV0dXJuIFlpKHQpLm9ic2VydmVOb2RlcygoZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSXRlbXMoKSx0aGlzLl91cGRhdGVTZWxlY3RlZCgpLHRoaXMuZmlyZSgiaXJvbi1pdGVtcy1jaGFuZ2VkIix0LHtidWJibGVzOiExLGNhbmNlbGFibGU6ITF9KX0pKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQsbj10aGlzLml0ZW1zO2UmJmUhPXRoaXM7KXt2YXIgaT1uLmluZGV4T2YoZSk7aWYoaT49MCl7dmFyIHI9dGhpcy5faW5kZXhUb1ZhbHVlKGkpO3JldHVybiB2b2lkIHRoaXMuX2l0ZW1BY3RpdmF0ZShyLGUpfWU9ZS5wYXJlbnROb2RlfX0sX2l0ZW1BY3RpdmF0ZTpmdW5jdGlvbih0LGUpe3RoaXMuZmlyZSgiaXJvbi1hY3RpdmF0ZSIse3NlbGVjdGVkOnQsaXRlbTplfSx7Y2FuY2VsYWJsZTohMH0pLmRlZmF1bHRQcmV2ZW50ZWR8fHRoaXMuc2VsZWN0KHQpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL1JyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoOm5vdChzbG90KTpub3QoLmlyb24tc2VsZWN0ZWQpKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoiaXJvbi1wYWdlcyIsYmVoYXZpb3JzOltnbyxqb10scHJvcGVydGllczp7YWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9zZWxlY3RlZFBhZ2VDaGFuZ2VkKHNlbGVjdGVkKSJdLF9zZWxlY3RlZFBhZ2VDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5hc3luYyh0aGlzLm5vdGlmeVJlc2l6ZSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBHbz1fZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tc2hhZG93LXRyYW5zaXRpb246IHsKICAgICAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMjhzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1ub25lOiB7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgfTsKCiAgICAgIC8qIGZyb20gaHR0cDovL2NvZGVwZW4uaW8vc2h5bmRtYW4vcGVuL2M1Mzk0ZGRmMmU4YjJhNWM5MTg1OTA0YjU3NDIxY2RiICovCgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0zZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDNweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDhweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi04ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTEyZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDRweCAyMnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAgNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAgOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMjRkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtHby5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEdvLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgV289X2VgCjxkb20tbW9kdWxlIGlkPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgaHRtbCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWw7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CgogICAgICAvKiBEdXBsaWNhdGUgdGhlIHN0eWxlcyBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzL2lzc3Vlcy8xOTMgKi8KICAgICAgOmhvc3QgewogICAgICAgIC0tcGFwZXItbWF0ZXJpYWw6IHsKICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7CiAgICAgICAgfTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWwpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtXby5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKFdvLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgcW89e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfb2xkVGFiSW5kZXg6e3R5cGU6U3RyaW5nfSxfYm91bmRGb2N1c0JsdXJIYW5kbGVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQmx1ckhhbmRsZXIuYmluZCh0aGlzKX19fSxvYnNlcnZlcnM6WyJfY2hhbmdlZENvbnRyb2xTdGF0ZShmb2N1c2VkLCBkaXNhYmxlZCkiXSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRGb2N1c2VkKCJmb2N1cyI9PT10LnR5cGUpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLHQ/InRydWUiOiJmYWxzZSIpLHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cz10PyJub25lIjoiIix0Pyh0aGlzLl9vbGRUYWJJbmRleD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLnRhYkluZGV4PS0xLHRoaXMuYmx1cigpKTp2b2lkIDAhPT10aGlzLl9vbGRUYWJJbmRleCYmKG51bGw9PT10aGlzLl9vbGRUYWJJbmRleD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTp0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX29sZFRhYkluZGV4KSl9LF9jaGFuZ2VkQ29udHJvbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfX0sWW89e3Byb3BlcnRpZXM6e3ByZXNzZWQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCx2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9wcmVzc2VkQ2hhbmdlZCJ9LHRvZ2dsZXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHBvaW50ZXJEb3duOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITF9LHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQ6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMH0sYXJpYUFjdGl2ZUF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImFyaWEtcHJlc3NlZCIsb2JzZXJ2ZXI6Il9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e2Rvd246Il9kb3duSGFuZGxlciIsdXA6Il91cEhhbmRsZXIiLHRhcDoiX3RhcEhhbmRsZXIifSxvYnNlcnZlcnM6WyJfZm9jdXNDaGFuZ2VkKGZvY3VzZWQpIiwiX2FjdGl2ZUNoYW5nZWQoYWN0aXZlLCBhcmlhQWN0aXZlQXR0cmlidXRlKSJdLGtleUJpbmRpbmdzOnsiZW50ZXI6a2V5ZG93biI6Il9hc3luY0NsaWNrIiwic3BhY2U6a2V5ZG93biI6Il9zcGFjZUtleURvd25IYW5kbGVyIiwic3BhY2U6a2V5dXAiOiJfc3BhY2VLZXlVcEhhbmRsZXIifSxfbW91c2VFdmVudFJlOi9ebW91c2UvLF90YXBIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVzP3RoaXMuX3VzZXJBY3RpdmF0ZSghdGhpcy5hY3RpdmUpOnRoaXMuYWN0aXZlPSExfSxfZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2RldGVjdEtleWJvYXJkRm9jdXModCksdHx8dGhpcy5fc2V0UHJlc3NlZCghMSl9LF9kZXRlY3RLZXlib2FyZEZvY3VzOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQoIXRoaXMucG9pbnRlckRvd24mJnQpfSxfdXNlckFjdGl2YXRlOmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlIT09dCYmKHRoaXMuYWN0aXZlPXQsdGhpcy5maXJlKCJjaGFuZ2UiKSl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbih0KXt0aGlzLl9zZXRQb2ludGVyRG93bighMCksdGhpcy5fc2V0UHJlc3NlZCghMCksdGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghMSl9LF91cEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRQb2ludGVyRG93bighMSksdGhpcy5fc2V0UHJlc3NlZCghMSl9LF9zcGFjZUtleURvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGV0YWlsLmtleWJvYXJkRXZlbnQsbj1ZaShlKS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KG4pfHwoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5fc2V0UHJlc3NlZCghMCkpfSxfc3BhY2VLZXlVcEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9WWkodC5kZXRhaWwua2V5Ym9hcmRFdmVudCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChlKXx8KHRoaXMucHJlc3NlZCYmdGhpcy5fYXN5bmNDbGljaygpLHRoaXMuX3NldFByZXNzZWQoITEpKX0sX2FzeW5jQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuY2xpY2soKX0pLDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe2UmJmUhPXQmJnRoaXMuaGFzQXR0cmlidXRlKGUpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX0sX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLHQ/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSksdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKTp0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NoYW5nZWRCdXR0b25TdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCYmdGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkKCl9fSxYbz1bem8sWW9dOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciAkbz17ZGlzdGFuY2U6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC1uLG89ZS1pO3JldHVybiBNYXRoLnNxcnQocipyK28qbyl9LG5vdzp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJmb3JtYW5jZSk6RGF0ZS5ub3d9O2Z1bmN0aW9uIEtvKHQpe3RoaXMuZWxlbWVudD10LHRoaXMud2lkdGg9dGhpcy5ib3VuZGluZ1JlY3Qud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5ib3VuZGluZ1JlY3QuaGVpZ2h0LHRoaXMuc2l6ZT1NYXRoLm1heCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1mdW5jdGlvbiBabyh0KXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmNvbG9yLHRoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yLHRoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIiksdGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIiksWWkodGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpLHRoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9S28ucHJvdG90eXBlPXtnZXQgYm91bmRpbmdSZWN0KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0sZnVydGhlc3RDb3JuZXJEaXN0YW5jZUZyb206ZnVuY3Rpb24odCxlKXt2YXIgbj0kby5kaXN0YW5jZSh0LGUsMCwwKSxpPSRvLmRpc3RhbmNlKHQsZSx0aGlzLndpZHRoLDApLHI9JG8uZGlzdGFuY2UodCxlLDAsdGhpcy5oZWlnaHQpLG89JG8uZGlzdGFuY2UodCxlLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO3JldHVybiBNYXRoLm1heChuLGkscixvKX19LFpvLk1BWF9SQURJVVM9MzAwLFpvLnByb3RvdHlwZT17Z2V0IHJlY2VudGVycygpe3JldHVybiB0aGlzLmVsZW1lbnQucmVjZW50ZXJzfSxnZXQgY2VudGVyKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jZW50ZXJ9LGdldCBtb3VzZURvd25FbGFwc2VkKCl7dmFyIHQ7cmV0dXJuIHRoaXMubW91c2VEb3duU3RhcnQ/KHQ9JG8ubm93KCktdGhpcy5tb3VzZURvd25TdGFydCx0aGlzLm1vdXNlVXBTdGFydCYmKHQtPXRoaXMubW91c2VVcEVsYXBzZWQpLHQpOjB9LGdldCBtb3VzZVVwRWxhcHNlZCgpe3JldHVybiB0aGlzLm1vdXNlVXBTdGFydD8kby5ub3coKS10aGlzLm1vdXNlVXBTdGFydDowfSxnZXQgbW91c2VEb3duRWxhcHNlZFNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkLzFlM30sZ2V0IG1vdXNlVXBFbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlVXBFbGFwc2VkLzFlM30sZ2V0IG1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VEb3duRWxhcHNlZFNlY29uZHMrdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHN9LGdldCBpbml0aWFsT3BhY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQuaW5pdGlhbE9wYWNpdHl9LGdldCBvcGFjaXR5RGVjYXlWZWxvY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQub3BhY2l0eURlY2F5VmVsb2NpdHl9LGdldCByYWRpdXMoKXt2YXIgdD0xLjEqTWF0aC5taW4oTWF0aC5zcXJ0KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgrdGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodCp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KSxaby5NQVhfUkFESVVTKSs1LGU9dCooMS1NYXRoLnBvdyg4MCwtdGhpcy5tb3VzZUludGVyYWN0aW9uU2Vjb25kcy8oMS4xLXQvWm8uTUFYX1JBRElVUyouMikpKTtyZXR1cm4gTWF0aC5hYnMoZSl9LGdldCBvcGFjaXR5KCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P01hdGgubWF4KDAsdGhpcy5pbml0aWFsT3BhY2l0eS10aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyp0aGlzLm9wYWNpdHlEZWNheVZlbG9jaXR5KTp0aGlzLmluaXRpYWxPcGFjaXR5fSxnZXQgb3V0ZXJPcGFjaXR5KCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oLjMqdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHMsdGhpcy5vcGFjaXR5KSl9LGdldCBpc09wYWNpdHlGdWxseURlY2F5ZWQoKXtyZXR1cm4gdGhpcy5vcGFjaXR5PC4wMSYmdGhpcy5yYWRpdXM+PU1hdGgubWluKHRoaXMubWF4UmFkaXVzLFpvLk1BWF9SQURJVVMpfSxnZXQgaXNSZXN0aW5nQXRNYXhSYWRpdXMoKXtyZXR1cm4gdGhpcy5vcGFjaXR5Pj10aGlzLmluaXRpYWxPcGFjaXR5JiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsWm8uTUFYX1JBRElVUyl9LGdldCBpc0FuaW1hdGlvbkNvbXBsZXRlKCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P3RoaXMuaXNPcGFjaXR5RnVsbHlEZWNheWVkOnRoaXMuaXNSZXN0aW5nQXRNYXhSYWRpdXN9LGdldCB0cmFuc2xhdGlvbkZyYWN0aW9uKCl7cmV0dXJuIE1hdGgubWluKDEsdGhpcy5yYWRpdXMvdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUqMi9NYXRoLnNxcnQoMikpfSxnZXQgeE5vdygpe3JldHVybiB0aGlzLnhFbmQ/dGhpcy54U3RhcnQrdGhpcy50cmFuc2xhdGlvbkZyYWN0aW9uKih0aGlzLnhFbmQtdGhpcy54U3RhcnQpOnRoaXMueFN0YXJ0fSxnZXQgeU5vdygpe3JldHVybiB0aGlzLnlFbmQ/dGhpcy55U3RhcnQrdGhpcy50cmFuc2xhdGlvbkZyYWN0aW9uKih0aGlzLnlFbmQtdGhpcy55U3RhcnQpOnRoaXMueVN0YXJ0fSxnZXQgaXNNb3VzZURvd24oKXtyZXR1cm4gdGhpcy5tb3VzZURvd25TdGFydCYmIXRoaXMubW91c2VVcFN0YXJ0fSxyZXNldEludGVyYWN0aW9uU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLm1heFJhZGl1cz0wLHRoaXMubW91c2VEb3duU3RhcnQ9MCx0aGlzLm1vdXNlVXBTdGFydD0wLHRoaXMueFN0YXJ0PTAsdGhpcy55U3RhcnQ9MCx0aGlzLnhFbmQ9MCx0aGlzLnlFbmQ9MCx0aGlzLnNsaWRlRGlzdGFuY2U9MCx0aGlzLmNvbnRhaW5lck1ldHJpY3M9bmV3IEtvKHRoaXMuZWxlbWVudCl9LGRyYXc6ZnVuY3Rpb24oKXt2YXIgdCxlLG47dGhpcy53YXZlLnN0eWxlLm9wYWNpdHk9dGhpcy5vcGFjaXR5LHQ9dGhpcy5yYWRpdXMvKHRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplLzIpLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InRyYW5zbGF0ZSgiKyhlPXRoaXMueE5vdy10aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMikrInB4LCAiKyhuPXRoaXMueU5vdy10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzIpKyJweCkiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZTNkKCIrZSsicHgsICIrbisicHgsIDApIix0aGlzLndhdmUuc3R5bGUud2Via2l0VHJhbnNmb3JtPSJzY2FsZSgiK3QrIiwiK3QrIikiLHRoaXMud2F2ZS5zdHlsZS50cmFuc2Zvcm09InNjYWxlM2QoIit0KyIsIit0KyIsMSkifSxkb3duQWN0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yLG49dGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC8yO3RoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCksdGhpcy5tb3VzZURvd25TdGFydD0kby5ub3coKSx0aGlzLmNlbnRlcj8odGhpcy54U3RhcnQ9ZSx0aGlzLnlTdGFydD1uLHRoaXMuc2xpZGVEaXN0YW5jZT0kby5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSk6KHRoaXMueFN0YXJ0PXQ/dC5kZXRhaWwueC10aGlzLmNvbnRhaW5lck1ldHJpY3MuYm91bmRpbmdSZWN0LmxlZnQ6dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsdGhpcy55U3RhcnQ9dD90LmRldGFpbC55LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QudG9wOnRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMiksdGhpcy5yZWNlbnRlcnMmJih0aGlzLnhFbmQ9ZSx0aGlzLnlFbmQ9bix0aGlzLnNsaWRlRGlzdGFuY2U9JG8uZGlzdGFuY2UodGhpcy54U3RhcnQsdGhpcy55U3RhcnQsdGhpcy54RW5kLHRoaXMueUVuZCkpLHRoaXMubWF4UmFkaXVzPXRoaXMuY29udGFpbmVyTWV0cmljcy5mdXJ0aGVzdENvcm5lckRpc3RhbmNlRnJvbSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCksdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRvcD0odGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5sZWZ0PSh0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgtdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUpLzIrInB4Iix0aGlzLndhdmVDb250YWluZXIuc3R5bGUud2lkdGg9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4Iix0aGlzLndhdmVDb250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKyJweCJ9LHVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaXNNb3VzZURvd24mJih0aGlzLm1vdXNlVXBTdGFydD0kby5ub3coKSl9LHJlbW92ZTpmdW5jdGlvbigpe1lpKFlpKHRoaXMud2F2ZUNvbnRhaW5lcikucGFyZW50Tm9kZSkucmVtb3ZlQ2hpbGQodGhpcy53YXZlQ29udGFpbmVyKX19LFJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKCiAgICAgICAgLyogU2VlIFBvbHltZXJFbGVtZW50cy9wYXBlci1iZWhhdmlvcnMvaXNzdWVzLzM0LiBPbiBub24tQ2hyb21lIGJyb3dzZXJzLAogICAgICAgICAqIGNyZWF0aW5nIGEgbm9kZSAod2l0aCBhIHBvc2l0aW9uOmFic29sdXRlKSBpbiB0aGUgbWlkZGxlIG9mIGFuIGV2ZW50CiAgICAgICAgICogaGFuZGxlciAiaW50ZXJydXB0cyIgdGhhdCBldmVudCBoYW5kbGVyICh3aGljaCBoYXBwZW5zIHdoZW4gdGhlCiAgICAgICAgICogcmlwcGxlIGlzIGNyZWF0ZWQgb24gZGVtYW5kKSAqLwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbYW5pbWF0aW5nXSkgewogICAgICAgIC8qIFRoaXMgcmVzb2x2ZXMgYSByZW5kZXJpbmcgaXNzdWUgaW4gQ2hyb21lIChhcyBvZiA0MCkgd2hlcmUgdGhlCiAgICAgICAgICAgcmlwcGxlIGlzIG5vdCBwcm9wZXJseSBjbGlwcGVkIGJ5IGl0cyBwYXJlbnQgKHdoaWNoIG1heSBoYXZlCiAgICAgICAgICAgcm91bmRlZCBjb3JuZXJzKS4gU2VlOiBodHRwOi8vanNiaW4uY29tL3RlbWV4YS80CgogICAgICAgICAgIE5vdGU6IFdlIG9ubHkgYXBwbHkgdGhpcyBzdHlsZSBjb25kaXRpb25hbGx5LiBPdGhlcndpc2UsIHRoZSBicm93c2VyCiAgICAgICAgICAgd2lsbCBjcmVhdGUgYSBuZXcgY29tcG9zaXRpbmcgbGF5ZXIgZm9yIGV2ZXJ5IHJpcHBsZSBlbGVtZW50IG9uIHRoZQogICAgICAgICAgIHBhZ2UsIGFuZCB0aGF0IHdvdWxkIGJlIGJhZC4gKi8KICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICAgIH0KCiAgICAgICNiYWNrZ3JvdW5kLAogICAgICAjd2F2ZXMsCiAgICAgIC53YXZlLWNvbnRhaW5lciwKICAgICAgLndhdmUgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgICNiYWNrZ3JvdW5kLAogICAgICAud2F2ZSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgI3dhdmVzLAogICAgICAud2F2ZSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLndhdmUtY29udGFpbmVyLAogICAgICAud2F2ZSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICA6aG9zdCguY2lyY2xlKSAjYmFja2dyb3VuZCwKICAgICAgOmhvc3QoLmNpcmNsZSkgI3dhdmVzIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jaXJjbGUpIC53YXZlLWNvbnRhaW5lciB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJiYWNrZ3JvdW5kIj48L2Rpdj4KICAgIDxkaXYgaWQ9IndhdmVzIj48L2Rpdj4KYCxpczoicGFwZXItcmlwcGxlIixiZWhhdmlvcnM6W3pvXSxwcm9wZXJ0aWVzOntpbml0aWFsT3BhY2l0eTp7dHlwZTpOdW1iZXIsdmFsdWU6LjI1fSxvcGFjaXR5RGVjYXlWZWxvY2l0eTp7dHlwZTpOdW1iZXIsdmFsdWU6Ljh9LHJlY2VudGVyczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxjZW50ZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0scmlwcGxlczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfSxob2xkRG93bjp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaG9sZERvd25DaGFuZ2VkIn0sbm9pbms6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2FuaW1hdGluZzp7dHlwZTpCb29sZWFufSxfYm91bmRBbmltYXRlOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYW5pbWF0ZS5iaW5kKHRoaXMpfX19LGdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5rZXlFdmVudFRhcmdldH0sa2V5QmluZGluZ3M6eyJlbnRlcjprZXlkb3duIjoiX29uRW50ZXJLZXlkb3duIiwic3BhY2U6a2V5ZG93biI6Il9vblNwYWNlS2V5ZG93biIsInNwYWNlOmtleXVwIjoiX29uU3BhY2VLZXl1cCJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5rZXlFdmVudFRhcmdldD0xMT09WWkodGhpcykucGFyZW50Tm9kZS5ub2RlVHlwZT9ZaSh0aGlzKS5nZXRPd25lclJvb3QoKS5ob3N0OllpKHRoaXMpLnBhcmVudE5vZGU7dmFyIHQ9dGhpcy5rZXlFdmVudFRhcmdldDt0aGlzLmxpc3Rlbih0LCJ1cCIsInVpVXBBY3Rpb24iKSx0aGlzLmxpc3Rlbih0LCJkb3duIiwidWlEb3duQWN0aW9uIil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy51bmxpc3Rlbih0aGlzLmtleUV2ZW50VGFyZ2V0LCJ1cCIsInVpVXBBY3Rpb24iKSx0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsImRvd24iLCJ1aURvd25BY3Rpb24iKSx0aGlzLmtleUV2ZW50VGFyZ2V0PW51bGx9LGdldCBzaG91bGRLZWVwQW5pbWF0aW5nKCl7Zm9yKHZhciB0PTA7dDx0aGlzLnJpcHBsZXMubGVuZ3RoOysrdClpZighdGhpcy5yaXBwbGVzW3RdLmlzQW5pbWF0aW9uQ29tcGxldGUpcmV0dXJuITA7cmV0dXJuITF9LHNpbXVsYXRlZFJpcHBsZTpmdW5jdGlvbigpe3RoaXMuZG93bkFjdGlvbihudWxsKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMudXBBY3Rpb24oKX0pLDEpfSx1aURvd25BY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5ub2lua3x8dGhpcy5kb3duQWN0aW9uKHQpfSxkb3duQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaG9sZERvd24mJnRoaXMucmlwcGxlcy5sZW5ndGg+MHx8KHRoaXMuYWRkUmlwcGxlKCkuZG93bkFjdGlvbih0KSx0aGlzLl9hbmltYXRpbmd8fCh0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5hbmltYXRlKCkpKX0sdWlVcEFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLm5vaW5rfHx0aGlzLnVwQWN0aW9uKHQpfSx1cEFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLmhvbGREb3dufHwodGhpcy5yaXBwbGVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UudXBBY3Rpb24odCl9KSksdGhpcy5fYW5pbWF0aW5nPSEwLHRoaXMuYW5pbWF0ZSgpKX0sb25BbmltYXRpb25Db21wbGV0ZTpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZz0hMSx0aGlzLiQuYmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiIsdGhpcy5maXJlKCJ0cmFuc2l0aW9uZW5kIil9LGFkZFJpcHBsZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBabyh0aGlzKTtyZXR1cm4gWWkodGhpcy4kLndhdmVzKS5hcHBlbmRDaGlsZCh0LndhdmVDb250YWluZXIpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj10LmNvbG9yLHRoaXMucmlwcGxlcy5wdXNoKHQpLHRoaXMuX3NldEFuaW1hdGluZyghMCksdH0scmVtb3ZlUmlwcGxlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmlwcGxlcy5pbmRleE9mKHQpO2U8MHx8KHRoaXMucmlwcGxlcy5zcGxpY2UoZSwxKSx0LnJlbW92ZSgpLHRoaXMucmlwcGxlcy5sZW5ndGh8fHRoaXMuX3NldEFuaW1hdGluZyghMSkpfSxhbmltYXRlOmZ1bmN0aW9uKCl7aWYodGhpcy5fYW5pbWF0aW5nKXt2YXIgdCxlO2Zvcih0PTA7dDx0aGlzLnJpcHBsZXMubGVuZ3RoOysrdCkoZT10aGlzLnJpcHBsZXNbdF0pLmRyYXcoKSx0aGlzLiQuYmFja2dyb3VuZC5zdHlsZS5vcGFjaXR5PWUub3V0ZXJPcGFjaXR5LGUuaXNPcGFjaXR5RnVsbHlEZWNheWVkJiYhZS5pc1Jlc3RpbmdBdE1heFJhZGl1cyYmdGhpcy5yZW1vdmVSaXBwbGUoZSk7dGhpcy5zaG91bGRLZWVwQW5pbWF0aW5nfHwwIT09dGhpcy5yaXBwbGVzLmxlbmd0aD93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2JvdW5kQW5pbWF0ZSk6dGhpcy5vbkFuaW1hdGlvbkNvbXBsZXRlKCl9fSxhbmltYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYW5pbWF0ZSgpfSxfb25FbnRlcktleWRvd246ZnVuY3Rpb24oKXt0aGlzLnVpRG93bkFjdGlvbigpLHRoaXMuYXN5bmModGhpcy51aVVwQWN0aW9uLDEpfSxfb25TcGFjZUtleWRvd246ZnVuY3Rpb24oKXt0aGlzLnVpRG93bkFjdGlvbigpfSxfb25TcGFjZUtleXVwOmZ1bmN0aW9uKCl7dGhpcy51aVVwQWN0aW9uKCl9LF9ob2xkRG93bkNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt2b2lkIDAhPT1lJiYodD90aGlzLmRvd25BY3Rpb24oKTp0aGlzLnVwQWN0aW9uKCkpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgSm89e3Byb3BlcnRpZXM6e25vaW5rOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9ub2lua0NoYW5nZWQifSxfcmlwcGxlQ29udGFpbmVyOnt0eXBlOk9iamVjdH19LF9idXR0b25TdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzZWQmJnRoaXMuZW5zdXJlUmlwcGxlKCl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbih0KXtZby5fZG93bkhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMucHJlc3NlZCYmdGhpcy5lbnN1cmVSaXBwbGUodCl9LGVuc3VyZVJpcHBsZTpmdW5jdGlvbih0KXtpZighdGhpcy5oYXNSaXBwbGUoKSl7dGhpcy5fcmlwcGxlPXRoaXMuX2NyZWF0ZVJpcHBsZSgpLHRoaXMuX3JpcHBsZS5ub2luaz10aGlzLm5vaW5rO3ZhciBlPXRoaXMuX3JpcHBsZUNvbnRhaW5lcnx8dGhpcy5yb290O2lmKGUmJllpKGUpLmFwcGVuZENoaWxkKHRoaXMuX3JpcHBsZSksdCl7dmFyIG49WWkodGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzKSxpPVlpKHQpLnJvb3RUYXJnZXQ7bi5kZWVwQ29udGFpbnMoaSkmJnRoaXMuX3JpcHBsZS51aURvd25BY3Rpb24odCl9fX0sZ2V0UmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5fcmlwcGxlfSxoYXNSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9yaXBwbGUpfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcGVyLXJpcHBsZSIpfSxfbm9pbmtDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuaGFzUmlwcGxlKCkmJih0aGlzLl9yaXBwbGUubm9pbms9dCl9fSxRbz17cHJvcGVydGllczp7ZWxldmF0aW9uOnt0eXBlOk51bWJlcixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAscmVhZE9ubHk6ITB9fSxvYnNlcnZlcnM6WyJfY2FsY3VsYXRlRWxldmF0aW9uKGZvY3VzZWQsIGRpc2FibGVkLCBhY3RpdmUsIHByZXNzZWQsIHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIiwiX2NvbXB1dGVLZXlib2FyZENsYXNzKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImJ1dHRvbiIsdGFiaW5kZXg6IjAiLGFuaW1hdGVkOiEwfSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9MTt0aGlzLmRpc2FibGVkP3Q9MDp0aGlzLmFjdGl2ZXx8dGhpcy5wcmVzc2VkP3Q9NDp0aGlzLnJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQmJih0PTMpLHRoaXMuX3NldEVsZXZhdGlvbih0KX0sX2NvbXB1dGVLZXlib2FyZENsYXNzOmZ1bmN0aW9uKHQpe3RoaXMudG9nZ2xlQ2xhc3MoImtleWJvYXJkLWZvY3VzIix0KX0sX3NwYWNlS2V5RG93bkhhbmRsZXI6ZnVuY3Rpb24odCl7WW8uX3NwYWNlS2V5RG93bkhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuZ2V0UmlwcGxlKCkucmlwcGxlcy5sZW5ndGg8MSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbigpfSxfc3BhY2VLZXlVcEhhbmRsZXI6ZnVuY3Rpb24odCl7WW8uX3NwYWNlS2V5VXBIYW5kbGVyLmNhbGwodGhpcyx0KSx0aGlzLmhhc1JpcHBsZSgpJiZ0aGlzLl9yaXBwbGUudWlVcEFjdGlvbigpfX0sdGE9W1hvLHFvLEpvLFFvXSxlYT1fZWAKICA8c3R5bGUgaW5jbHVkZT0icGFwZXItbWF0ZXJpYWwtc3R5bGVzIj4KICAgIC8qIE5lZWQgdG8gc3BlY2lmeSB0aGUgc2FtZSBzcGVjaWZpY2l0eSBhcyB0aGUgc3R5bGVzIGltcG9ydGVkIGZyb20gcGFwZXItbWF0ZXJpYWwuICovCiAgICA6aG9zdCB7CiAgICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG1pbi13aWR0aDogNS4xNGVtOwogICAgICBtYXJnaW46IDAgMC4yOWVtOwogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICBmb250OiBpbmhlcml0OwogICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICBvdXRsaW5lLXdpZHRoOiAwOwogICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgei1pbmRleDogMDsKICAgICAgcGFkZGluZzogMC43ZW0gMC41N2VtOwoKICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgQGFwcGx5IC0tcGFwZXItYnV0dG9uOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjEiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMyJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0zOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjQiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU7CiAgICB9CgogICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIDpob3N0KFtyYWlzZWRdLmtleWJvYXJkLWZvY3VzKSB7CiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tcmFpc2VkLWtleWJvYXJkLWZvY3VzOwogICAgfQoKICAgIDpob3N0KDpub3QoW3JhaXNlZF0pLmtleWJvYXJkLWZvY3VzKSB7CiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tZmxhdC1rZXlib2FyZC1mb2N1czsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIGNvbG9yOiAjYThhOGE4OwogICAgICBjdXJzb3I6IGF1dG87CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwoKICAgICAgQGFwcGx5IC0tcGFwZXItYnV0dG9uLWRpc2FibGVkOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF1bcmFpc2VkXSkgewogICAgICBiYWNrZ3JvdW5kOiAjZWFlYWVhOwogICAgfQoKCiAgICA6aG9zdChbYW5pbWF0ZWRdKSB7CiAgICAgIEBhcHBseSAtLXNoYWRvdy10cmFuc2l0aW9uOwogICAgfQoKICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1idXR0b24taW5rLWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgoKICA8c2xvdD48L3Nsb3Q+YDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZWEuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksUnIoe190ZW1wbGF0ZTplYSxpczoicGFwZXItYnV0dG9uIixiZWhhdmlvcnM6W3RhXSxwcm9wZXJ0aWVzOntyYWlzZWQ6e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITEsb2JzZXJ2ZXI6Il9jYWxjdWxhdGVFbGV2YXRpb24ifX0sX2NhbGN1bGF0ZUVsZXZhdGlvbjpmdW5jdGlvbigpe3RoaXMucmFpc2VkP1FvLl9jYWxjdWxhdGVFbGV2YXRpb24uYXBwbHkodGhpcyk6dGhpcy5fc2V0RWxldmF0aW9uKDApfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgbmE9X2VgCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAvKiBNYXRlcmlhbCBEZXNpZ24gY29sb3IgcGFsZXR0ZSBmb3IgR29vZ2xlIHByb2R1Y3RzICovCgogICAgICAtLWdvb2dsZS1yZWQtMTAwOiAjZjRjN2MzOwogICAgICAtLWdvb2dsZS1yZWQtMzAwOiAjZTY3YzczOwogICAgICAtLWdvb2dsZS1yZWQtNTAwOiAjZGI0NDM3OwogICAgICAtLWdvb2dsZS1yZWQtNzAwOiAjYzUzOTI5OwoKICAgICAgLS1nb29nbGUtYmx1ZS0xMDA6ICNjNmRhZmM7CiAgICAgIC0tZ29vZ2xlLWJsdWUtMzAwOiAjN2JhYWY3OwogICAgICAtLWdvb2dsZS1ibHVlLTUwMDogIzQyODVmNDsKICAgICAgLS1nb29nbGUtYmx1ZS03MDA6ICMzMzY3ZDY7CgogICAgICAtLWdvb2dsZS1ncmVlbi0xMDA6ICNiN2UxY2Q7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTMwMDogIzU3YmI4YTsKICAgICAgLS1nb29nbGUtZ3JlZW4tNTAwOiAjMGY5ZDU4OwogICAgICAtLWdvb2dsZS1ncmVlbi03MDA6ICMwYjgwNDM7CgogICAgICAtLWdvb2dsZS15ZWxsb3ctMTAwOiAjZmNlOGIyOwogICAgICAtLWdvb2dsZS15ZWxsb3ctMzAwOiAjZjdjYjRkOwogICAgICAtLWdvb2dsZS15ZWxsb3ctNTAwOiAjZjRiNDAwOwogICAgICAtLWdvb2dsZS15ZWxsb3ctNzAwOiAjZjA5MzAwOwoKICAgICAgLS1nb29nbGUtZ3JleS0xMDA6ICNmNWY1ZjU7CiAgICAgIC0tZ29vZ2xlLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLWdvb2dsZS1ncmV5LTUwMDogIzllOWU5ZTsKICAgICAgLS1nb29nbGUtZ3JleS03MDA6ICM2MTYxNjE7CgogICAgICAvKiBNYXRlcmlhbCBEZXNpZ24gY29sb3IgcGFsZXR0ZSBmcm9tIG9ubGluZSBzcGVjIGRvY3VtZW50ICovCgogICAgICAtLXBhcGVyLXJlZC01MDogI2ZmZWJlZTsKICAgICAgLS1wYXBlci1yZWQtMTAwOiAjZmZjZGQyOwogICAgICAtLXBhcGVyLXJlZC0yMDA6ICNlZjlhOWE7CiAgICAgIC0tcGFwZXItcmVkLTMwMDogI2U1NzM3MzsKICAgICAgLS1wYXBlci1yZWQtNDAwOiAjZWY1MzUwOwogICAgICAtLXBhcGVyLXJlZC01MDA6ICNmNDQzMzY7CiAgICAgIC0tcGFwZXItcmVkLTYwMDogI2U1MzkzNTsKICAgICAgLS1wYXBlci1yZWQtNzAwOiAjZDMyZjJmOwogICAgICAtLXBhcGVyLXJlZC04MDA6ICNjNjI4Mjg7CiAgICAgIC0tcGFwZXItcmVkLTkwMDogI2I3MWMxYzsKICAgICAgLS1wYXBlci1yZWQtYTEwMDogI2ZmOGE4MDsKICAgICAgLS1wYXBlci1yZWQtYTIwMDogI2ZmNTI1MjsKICAgICAgLS1wYXBlci1yZWQtYTQwMDogI2ZmMTc0NDsKICAgICAgLS1wYXBlci1yZWQtYTcwMDogI2Q1MDAwMDsKCiAgICAgIC0tcGFwZXItcGluay01MDogI2ZjZTRlYzsKICAgICAgLS1wYXBlci1waW5rLTEwMDogI2Y4YmJkMDsKICAgICAgLS1wYXBlci1waW5rLTIwMDogI2Y0OGZiMTsKICAgICAgLS1wYXBlci1waW5rLTMwMDogI2YwNjI5MjsKICAgICAgLS1wYXBlci1waW5rLTQwMDogI2VjNDA3YTsKICAgICAgLS1wYXBlci1waW5rLTUwMDogI2U5MWU2MzsKICAgICAgLS1wYXBlci1waW5rLTYwMDogI2Q4MWI2MDsKICAgICAgLS1wYXBlci1waW5rLTcwMDogI2MyMTg1YjsKICAgICAgLS1wYXBlci1waW5rLTgwMDogI2FkMTQ1NzsKICAgICAgLS1wYXBlci1waW5rLTkwMDogIzg4MGU0ZjsKICAgICAgLS1wYXBlci1waW5rLWExMDA6ICNmZjgwYWI7CiAgICAgIC0tcGFwZXItcGluay1hMjAwOiAjZmY0MDgxOwogICAgICAtLXBhcGVyLXBpbmstYTQwMDogI2Y1MDA1NzsKICAgICAgLS1wYXBlci1waW5rLWE3MDA6ICNjNTExNjI7CgogICAgICAtLXBhcGVyLXB1cnBsZS01MDogI2YzZTVmNTsKICAgICAgLS1wYXBlci1wdXJwbGUtMTAwOiAjZTFiZWU3OwogICAgICAtLXBhcGVyLXB1cnBsZS0yMDA6ICNjZTkzZDg7CiAgICAgIC0tcGFwZXItcHVycGxlLTMwMDogI2JhNjhjODsKICAgICAgLS1wYXBlci1wdXJwbGUtNDAwOiAjYWI0N2JjOwogICAgICAtLXBhcGVyLXB1cnBsZS01MDA6ICM5YzI3YjA7CiAgICAgIC0tcGFwZXItcHVycGxlLTYwMDogIzhlMjRhYTsKICAgICAgLS1wYXBlci1wdXJwbGUtNzAwOiAjN2IxZmEyOwogICAgICAtLXBhcGVyLXB1cnBsZS04MDA6ICM2YTFiOWE7CiAgICAgIC0tcGFwZXItcHVycGxlLTkwMDogIzRhMTQ4YzsKICAgICAgLS1wYXBlci1wdXJwbGUtYTEwMDogI2VhODBmYzsKICAgICAgLS1wYXBlci1wdXJwbGUtYTIwMDogI2UwNDBmYjsKICAgICAgLS1wYXBlci1wdXJwbGUtYTQwMDogI2Q1MDBmOTsKICAgICAgLS1wYXBlci1wdXJwbGUtYTcwMDogI2FhMDBmZjsKCiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTA6ICNlZGU3ZjY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMTAwOiAjZDFjNGU5OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTIwMDogI2IzOWRkYjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0zMDA6ICM5NTc1Y2Q7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNDAwOiAjN2U1N2MyOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTUwMDogIzY3M2FiNzsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS02MDA6ICM1ZTM1YjE7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNzAwOiAjNTEyZGE4OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTgwMDogIzQ1MjdhMDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS05MDA6ICMzMTFiOTI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTEwMDogI2IzODhmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMjAwOiAjN2M0ZGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWE0MDA6ICM2NTFmZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTcwMDogIzYyMDBlYTsKCiAgICAgIC0tcGFwZXItaW5kaWdvLTUwOiAjZThlYWY2OwogICAgICAtLXBhcGVyLWluZGlnby0xMDA6ICNjNWNhZTk7CiAgICAgIC0tcGFwZXItaW5kaWdvLTIwMDogIzlmYThkYTsKICAgICAgLS1wYXBlci1pbmRpZ28tMzAwOiAjNzk4NmNiOwogICAgICAtLXBhcGVyLWluZGlnby00MDA6ICM1YzZiYzA7CiAgICAgIC0tcGFwZXItaW5kaWdvLTUwMDogIzNmNTFiNTsKICAgICAgLS1wYXBlci1pbmRpZ28tNjAwOiAjMzk0OWFiOwogICAgICAtLXBhcGVyLWluZGlnby03MDA6ICMzMDNmOWY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTgwMDogIzI4MzU5MzsKICAgICAgLS1wYXBlci1pbmRpZ28tOTAwOiAjMWEyMzdlOwogICAgICAtLXBhcGVyLWluZGlnby1hMTAwOiAjOGM5ZWZmOwogICAgICAtLXBhcGVyLWluZGlnby1hMjAwOiAjNTM2ZGZlOwogICAgICAtLXBhcGVyLWluZGlnby1hNDAwOiAjM2Q1YWZlOwogICAgICAtLXBhcGVyLWluZGlnby1hNzAwOiAjMzA0ZmZlOwoKICAgICAgLS1wYXBlci1ibHVlLTUwOiAjZTNmMmZkOwogICAgICAtLXBhcGVyLWJsdWUtMTAwOiAjYmJkZWZiOwogICAgICAtLXBhcGVyLWJsdWUtMjAwOiAjOTBjYWY5OwogICAgICAtLXBhcGVyLWJsdWUtMzAwOiAjNjRiNWY2OwogICAgICAtLXBhcGVyLWJsdWUtNDAwOiAjNDJhNWY1OwogICAgICAtLXBhcGVyLWJsdWUtNTAwOiAjMjE5NmYzOwogICAgICAtLXBhcGVyLWJsdWUtNjAwOiAjMWU4OGU1OwogICAgICAtLXBhcGVyLWJsdWUtNzAwOiAjMTk3NmQyOwogICAgICAtLXBhcGVyLWJsdWUtODAwOiAjMTU2NWMwOwogICAgICAtLXBhcGVyLWJsdWUtOTAwOiAjMGQ0N2ExOwogICAgICAtLXBhcGVyLWJsdWUtYTEwMDogIzgyYjFmZjsKICAgICAgLS1wYXBlci1ibHVlLWEyMDA6ICM0NDhhZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNDAwOiAjMjk3OWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTcwMDogIzI5NjJmZjsKCiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS01MDogI2UxZjVmZTsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTEwMDogI2IzZTVmYzsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTIwMDogIzgxZDRmYTsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTMwMDogIzRmYzNmNzsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTQwMDogIzI5YjZmNjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwMDogIzAzYTlmNDsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTYwMDogIzAzOWJlNTsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTcwMDogIzAyODhkMTsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTgwMDogIzAyNzdiZDsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTkwMDogIzAxNTc5YjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWExMDA6ICM4MGQ4ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hMjAwOiAjNDBjNGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTQwMDogIzAwYjBmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWE3MDA6ICMwMDkxZWE7CgogICAgICAtLXBhcGVyLWN5YW4tNTA6ICNlMGY3ZmE7CiAgICAgIC0tcGFwZXItY3lhbi0xMDA6ICNiMmViZjI7CiAgICAgIC0tcGFwZXItY3lhbi0yMDA6ICM4MGRlZWE7CiAgICAgIC0tcGFwZXItY3lhbi0zMDA6ICM0ZGQwZTE7CiAgICAgIC0tcGFwZXItY3lhbi00MDA6ICMyNmM2ZGE7CiAgICAgIC0tcGFwZXItY3lhbi01MDA6ICMwMGJjZDQ7CiAgICAgIC0tcGFwZXItY3lhbi02MDA6ICMwMGFjYzE7CiAgICAgIC0tcGFwZXItY3lhbi03MDA6ICMwMDk3YTc7CiAgICAgIC0tcGFwZXItY3lhbi04MDA6ICMwMDgzOGY7CiAgICAgIC0tcGFwZXItY3lhbi05MDA6ICMwMDYwNjQ7CiAgICAgIC0tcGFwZXItY3lhbi1hMTAwOiAjODRmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTIwMDogIzE4ZmZmZjsKICAgICAgLS1wYXBlci1jeWFuLWE0MDA6ICMwMGU1ZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hNzAwOiAjMDBiOGQ0OwoKICAgICAgLS1wYXBlci10ZWFsLTUwOiAjZTBmMmYxOwogICAgICAtLXBhcGVyLXRlYWwtMTAwOiAjYjJkZmRiOwogICAgICAtLXBhcGVyLXRlYWwtMjAwOiAjODBjYmM0OwogICAgICAtLXBhcGVyLXRlYWwtMzAwOiAjNGRiNmFjOwogICAgICAtLXBhcGVyLXRlYWwtNDAwOiAjMjZhNjlhOwogICAgICAtLXBhcGVyLXRlYWwtNTAwOiAjMDA5Njg4OwogICAgICAtLXBhcGVyLXRlYWwtNjAwOiAjMDA4OTdiOwogICAgICAtLXBhcGVyLXRlYWwtNzAwOiAjMDA3OTZiOwogICAgICAtLXBhcGVyLXRlYWwtODAwOiAjMDA2OTVjOwogICAgICAtLXBhcGVyLXRlYWwtOTAwOiAjMDA0ZDQwOwogICAgICAtLXBhcGVyLXRlYWwtYTEwMDogI2E3ZmZlYjsKICAgICAgLS1wYXBlci10ZWFsLWEyMDA6ICM2NGZmZGE7CiAgICAgIC0tcGFwZXItdGVhbC1hNDAwOiAjMWRlOWI2OwogICAgICAtLXBhcGVyLXRlYWwtYTcwMDogIzAwYmZhNTsKCiAgICAgIC0tcGFwZXItZ3JlZW4tNTA6ICNlOGY1ZTk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMTAwOiAjYzhlNmM5OwogICAgICAtLXBhcGVyLWdyZWVuLTIwMDogI2E1ZDZhNzsKICAgICAgLS1wYXBlci1ncmVlbi0zMDA6ICM4MWM3ODQ7CiAgICAgIC0tcGFwZXItZ3JlZW4tNDAwOiAjNjZiYjZhOwogICAgICAtLXBhcGVyLWdyZWVuLTUwMDogIzRjYWY1MDsKICAgICAgLS1wYXBlci1ncmVlbi02MDA6ICM0M2EwNDc7CiAgICAgIC0tcGFwZXItZ3JlZW4tNzAwOiAjMzg4ZTNjOwogICAgICAtLXBhcGVyLWdyZWVuLTgwMDogIzJlN2QzMjsKICAgICAgLS1wYXBlci1ncmVlbi05MDA6ICMxYjVlMjA7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTEwMDogI2I5ZjZjYTsKICAgICAgLS1wYXBlci1ncmVlbi1hMjAwOiAjNjlmMGFlOwogICAgICAtLXBhcGVyLWdyZWVuLWE0MDA6ICMwMGU2NzY7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTcwMDogIzAwYzg1MzsKCiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTA6ICNmMWY4ZTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMTAwOiAjZGNlZGM4OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTIwMDogI2M1ZTFhNTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0zMDA6ICNhZWQ1ODE7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNDAwOiAjOWNjYzY1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTUwMDogIzhiYzM0YTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi02MDA6ICM3Y2IzNDI7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNzAwOiAjNjg5ZjM4OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTgwMDogIzU1OGIyZjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi05MDA6ICMzMzY5MWU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTEwMDogI2NjZmY5MDsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMjAwOiAjYjJmZjU5OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWE0MDA6ICM3NmZmMDM7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTcwMDogIzY0ZGQxNzsKCiAgICAgIC0tcGFwZXItbGltZS01MDogI2Y5ZmJlNzsKICAgICAgLS1wYXBlci1saW1lLTEwMDogI2YwZjRjMzsKICAgICAgLS1wYXBlci1saW1lLTIwMDogI2U2ZWU5YzsKICAgICAgLS1wYXBlci1saW1lLTMwMDogI2RjZTc3NTsKICAgICAgLS1wYXBlci1saW1lLTQwMDogI2Q0ZTE1NzsKICAgICAgLS1wYXBlci1saW1lLTUwMDogI2NkZGMzOTsKICAgICAgLS1wYXBlci1saW1lLTYwMDogI2MwY2EzMzsKICAgICAgLS1wYXBlci1saW1lLTcwMDogI2FmYjQyYjsKICAgICAgLS1wYXBlci1saW1lLTgwMDogIzllOWQyNDsKICAgICAgLS1wYXBlci1saW1lLTkwMDogIzgyNzcxNzsKICAgICAgLS1wYXBlci1saW1lLWExMDA6ICNmNGZmODE7CiAgICAgIC0tcGFwZXItbGltZS1hMjAwOiAjZWVmZjQxOwogICAgICAtLXBhcGVyLWxpbWUtYTQwMDogI2M2ZmYwMDsKICAgICAgLS1wYXBlci1saW1lLWE3MDA6ICNhZWVhMDA7CgogICAgICAtLXBhcGVyLXllbGxvdy01MDogI2ZmZmRlNzsKICAgICAgLS1wYXBlci15ZWxsb3ctMTAwOiAjZmZmOWM0OwogICAgICAtLXBhcGVyLXllbGxvdy0yMDA6ICNmZmY1OWQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTMwMDogI2ZmZjE3NjsKICAgICAgLS1wYXBlci15ZWxsb3ctNDAwOiAjZmZlZTU4OwogICAgICAtLXBhcGVyLXllbGxvdy01MDA6ICNmZmViM2I7CiAgICAgIC0tcGFwZXIteWVsbG93LTYwMDogI2ZkZDgzNTsKICAgICAgLS1wYXBlci15ZWxsb3ctNzAwOiAjZmJjMDJkOwogICAgICAtLXBhcGVyLXllbGxvdy04MDA6ICNmOWE4MjU7CiAgICAgIC0tcGFwZXIteWVsbG93LTkwMDogI2Y1N2YxNzsKICAgICAgLS1wYXBlci15ZWxsb3ctYTEwMDogI2ZmZmY4ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctYTIwMDogI2ZmZmYwMDsKICAgICAgLS1wYXBlci15ZWxsb3ctYTQwMDogI2ZmZWEwMDsKICAgICAgLS1wYXBlci15ZWxsb3ctYTcwMDogI2ZmZDYwMDsKCiAgICAgIC0tcGFwZXItYW1iZXItNTA6ICNmZmY4ZTE7CiAgICAgIC0tcGFwZXItYW1iZXItMTAwOiAjZmZlY2IzOwogICAgICAtLXBhcGVyLWFtYmVyLTIwMDogI2ZmZTA4MjsKICAgICAgLS1wYXBlci1hbWJlci0zMDA6ICNmZmQ1NGY7CiAgICAgIC0tcGFwZXItYW1iZXItNDAwOiAjZmZjYTI4OwogICAgICAtLXBhcGVyLWFtYmVyLTUwMDogI2ZmYzEwNzsKICAgICAgLS1wYXBlci1hbWJlci02MDA6ICNmZmIzMDA7CiAgICAgIC0tcGFwZXItYW1iZXItNzAwOiAjZmZhMDAwOwogICAgICAtLXBhcGVyLWFtYmVyLTgwMDogI2ZmOGYwMDsKICAgICAgLS1wYXBlci1hbWJlci05MDA6ICNmZjZmMDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTEwMDogI2ZmZTU3ZjsKICAgICAgLS1wYXBlci1hbWJlci1hMjAwOiAjZmZkNzQwOwogICAgICAtLXBhcGVyLWFtYmVyLWE0MDA6ICNmZmM0MDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTcwMDogI2ZmYWIwMDsKCiAgICAgIC0tcGFwZXItb3JhbmdlLTUwOiAjZmZmM2UwOwogICAgICAtLXBhcGVyLW9yYW5nZS0xMDA6ICNmZmUwYjI7CiAgICAgIC0tcGFwZXItb3JhbmdlLTIwMDogI2ZmY2M4MDsKICAgICAgLS1wYXBlci1vcmFuZ2UtMzAwOiAjZmZiNzRkOwogICAgICAtLXBhcGVyLW9yYW5nZS00MDA6ICNmZmE3MjY7CiAgICAgIC0tcGFwZXItb3JhbmdlLTUwMDogI2ZmOTgwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtNjAwOiAjZmI4YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS03MDA6ICNmNTdjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTgwMDogI2VmNmMwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtOTAwOiAjZTY1MTAwOwogICAgICAtLXBhcGVyLW9yYW5nZS1hMTAwOiAjZmZkMTgwOwogICAgICAtLXBhcGVyLW9yYW5nZS1hMjAwOiAjZmZhYjQwOwogICAgICAtLXBhcGVyLW9yYW5nZS1hNDAwOiAjZmY5MTAwOwogICAgICAtLXBhcGVyLW9yYW5nZS1hNzAwOiAjZmY2NTAwOwoKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDogI2ZiZTllNzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0xMDA6ICNmZmNjYmM7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMjAwOiAjZmZhYjkxOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTMwMDogI2ZmOGE2NTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS00MDA6ICNmZjcwNDM7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNTAwOiAjZmY1NzIyOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTYwMDogI2Y0NTExZTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS03MDA6ICNlNjRhMTk7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtODAwOiAjZDg0MzE1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTkwMDogI2JmMzYwYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hMTAwOiAjZmY5ZTgwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWEyMDA6ICNmZjZlNDA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTQwMDogI2ZmM2QwMDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNzAwOiAjZGQyYzAwOwoKICAgICAgLS1wYXBlci1icm93bi01MDogI2VmZWJlOTsKICAgICAgLS1wYXBlci1icm93bi0xMDA6ICNkN2NjYzg7CiAgICAgIC0tcGFwZXItYnJvd24tMjAwOiAjYmNhYWE0OwogICAgICAtLXBhcGVyLWJyb3duLTMwMDogI2ExODg3ZjsKICAgICAgLS1wYXBlci1icm93bi00MDA6ICM4ZDZlNjM7CiAgICAgIC0tcGFwZXItYnJvd24tNTAwOiAjNzk1NTQ4OwogICAgICAtLXBhcGVyLWJyb3duLTYwMDogIzZkNGM0MTsKICAgICAgLS1wYXBlci1icm93bi03MDA6ICM1ZDQwMzc7CiAgICAgIC0tcGFwZXItYnJvd24tODAwOiAjNGUzNDJlOwogICAgICAtLXBhcGVyLWJyb3duLTkwMDogIzNlMjcyMzsKCiAgICAgIC0tcGFwZXItZ3JleS01MDogI2ZhZmFmYTsKICAgICAgLS1wYXBlci1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1wYXBlci1ncmV5LTIwMDogI2VlZWVlZTsKICAgICAgLS1wYXBlci1ncmV5LTMwMDogI2UwZTBlMDsKICAgICAgLS1wYXBlci1ncmV5LTQwMDogI2JkYmRiZDsKICAgICAgLS1wYXBlci1ncmV5LTUwMDogIzllOWU5ZTsKICAgICAgLS1wYXBlci1ncmV5LTYwMDogIzc1NzU3NTsKICAgICAgLS1wYXBlci1ncmV5LTcwMDogIzYxNjE2MTsKICAgICAgLS1wYXBlci1ncmV5LTgwMDogIzQyNDI0MjsKICAgICAgLS1wYXBlci1ncmV5LTkwMDogIzIxMjEyMTsKCiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTUwOiAjZWNlZmYxOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0xMDA6ICNjZmQ4ZGM7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTIwMDogI2IwYmVjNTsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMzAwOiAjOTBhNGFlOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS00MDA6ICM3ODkwOWM7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTUwMDogIzYwN2Q4YjsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNjAwOiAjNTQ2ZTdhOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS03MDA6ICM0NTVhNjQ7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTgwMDogIzM3NDc0ZjsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktOTAwOiAjMjYzMjM4OwoKICAgICAgLyogb3BhY2l0eSBmb3IgZGFyayB0ZXh0IG9uIGEgbGlnaHQgYmFja2dyb3VuZCAqLwogICAgICAtLWRhcmstZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWRhcmstZGlzYWJsZWQtb3BhY2l0eTogMC4zODsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1kYXJrLXNlY29uZGFyeS1vcGFjaXR5OiAwLjU0OwogICAgICAtLWRhcmstcHJpbWFyeS1vcGFjaXR5OiAwLjg3OwoKICAgICAgLyogb3BhY2l0eSBmb3IgbGlnaHQgdGV4dCBvbiBhIGRhcmsgYmFja2dyb3VuZCAqLwogICAgICAtLWxpZ2h0LWRpdmlkZXItb3BhY2l0eTogMC4xMjsKICAgICAgLS1saWdodC1kaXNhYmxlZC1vcGFjaXR5OiAwLjM7IC8qIG9yIGhpbnQgdGV4dCBvciBpY29uICovCiAgICAgIC0tbGlnaHQtc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNzsKICAgICAgLS1saWdodC1wcmltYXJ5LW9wYWNpdHk6IDEuMDsKCiAgICB9CgogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPgpgO25hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobmEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBpYT1fZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLyoKICAgICAgICogWW91IGNhbiB1c2UgdGhlc2UgZ2VuZXJpYyB2YXJpYWJsZXMgaW4geW91ciBlbGVtZW50cyBmb3IgZWFzeSB0aGVtaW5nLgogICAgICAgKiBGb3IgZXhhbXBsZSwgaWYgYWxsIHlvdXIgZWxlbWVudHMgdXNlIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBhcyBpdHMgbWFpbgogICAgICAgKiBjb2xvciwgdGhlbiBzd2l0Y2hpbmcgZnJvbSBhIGxpZ2h0IHRvIGEgZGFyayB0aGVtZSBpcyBqdXN0IGEgbWF0dGVyIG9mCiAgICAgICAqIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBcYC0tcHJpbWFyeS10ZXh0LWNvbG9yXGAgaW4geW91ciBhcHBsaWNhdGlvbi4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS10ZXh0LWNvbG9yKTsKICAgICAgLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWJhY2tncm91bmQtY29sb3IpOwogICAgICAtLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1zZWNvbmRhcnktY29sb3IpOwogICAgICAtLWRpc2FibGVkLXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpc2FibGVkLWNvbG9yKTsKICAgICAgLS1kaXZpZGVyLWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1kaXZpZGVyLWNvbG9yKTsKICAgICAgLS1lcnJvci1jb2xvcjogdmFyKC0tcGFwZXItZGVlcC1vcmFuZ2UtYTcwMCk7CgogICAgICAvKgogICAgICAgKiBQcmltYXJ5IGFuZCBhY2NlbnQgY29sb3JzLiBBbHNvIHNlZSBjb2xvci5qcyBmb3IgbW9yZSBjb2xvcnMuCiAgICAgICAqLwogICAgICAtLXByaW1hcnktY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby01MDApOwogICAgICAtLWxpZ2h0LXByaW1hcnktY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby0xMDApOwogICAgICAtLWRhcmstcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTcwMCk7CgogICAgICAtLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMjAwKTsKICAgICAgLS1saWdodC1hY2NlbnQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstYTEwMCk7CiAgICAgIC0tZGFyay1hY2NlbnQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstYTQwMCk7CgoKICAgICAgLyoKICAgICAgICogTWF0ZXJpYWwgRGVzaWduIExpZ2h0IGJhY2tncm91bmQgdGhlbWUKICAgICAgICovCiAgICAgIC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1saWdodC10aGVtZS1iYXNlLWNvbG9yOiAjMDAwMDAwOwogICAgICAtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktOTAwKTsKICAgICAgLS1saWdodC10aGVtZS1zZWNvbmRhcnktY29sb3I6ICM3MzczNzM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3I6ICM5YjliOWI7ICAvKiBkaXNhYmxlZC9oaW50IHRleHQgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXZpZGVyLWNvbG9yOiAjZGJkYmRiOwoKICAgICAgLyoKICAgICAgICogTWF0ZXJpYWwgRGVzaWduIERhcmsgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1kYXJrLXRoZW1lLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktOTAwKTsKICAgICAgLS1kYXJrLXRoZW1lLWJhc2UtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS10ZXh0LWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWRhcmstdGhlbWUtc2Vjb25kYXJ5LWNvbG9yOiAjYmNiY2JjOyAgLyogZm9yIHNlY29uZGFyeSB0ZXh0IGFuZCBpY29ucyAqLwogICAgICAtLWRhcmstdGhlbWUtZGlzYWJsZWQtY29sb3I6ICM2NDY0NjQ7ICAvKiBkaXNhYmxlZC9oaW50IHRleHQgKi8KICAgICAgLS1kYXJrLXRoZW1lLWRpdmlkZXItY29sb3I6ICMzYzNjM2M7CgogICAgICAvKgogICAgICAgKiBEZXByZWNhdGVkIHZhbHVlcyBiZWNhdXNlIG9mIHRoZWlyIGNvbmZ1c2luZyBuYW1lcy4KICAgICAgICovCiAgICAgIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1kYXJrLXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLWRlZmF1bHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtpYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgcmE9e3Byb3BlcnRpZXM6e25hbWU6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7bm90aWZ5OiEwLHR5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt9LGRldGFjaGVkOmZ1bmN0aW9uKCl7fX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBvYT1udWxsO2NvbnN0IGFhPXtwcm9wZXJ0aWVzOnt2YWxpZGF0b3I6e3R5cGU6U3RyaW5nfSxpbnZhbGlkOntub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2ludmFsaWRDaGFuZ2VkIn19LHJlZ2lzdGVyZWQ6ZnVuY3Rpb24oKXtvYT1uZXcgeG8oe3R5cGU6InZhbGlkYXRvciJ9KX0sX2ludmFsaWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkP3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpfSxnZXQgX3ZhbGlkYXRvcigpe3JldHVybiBvYSYmb2EuYnlLZXkodGhpcy52YWxpZGF0b3IpfSxoYXNWYWxpZGF0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5fdmFsaWRhdG9yfSx2YWxpZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZhbGlkPXZvaWQgMD09PXQmJnZvaWQgMCE9PXRoaXMudmFsdWU/IXRoaXMuX2dldFZhbGlkaXR5KHRoaXMudmFsdWUpOiF0aGlzLl9nZXRWYWxpZGl0eSh0KSwhdGhpcy5pbnZhbGlkfSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24odCl7cmV0dXJuIXRoaXMuaGFzVmFsaWRhdG9yKCl8fHRoaXMuX3ZhbGlkYXRvci52YWxpZGF0ZSh0KX19LHNhPXtwcm9wZXJ0aWVzOntjaGVja2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG5vdGlmeTohMCxvYnNlcnZlcjoiX2NoZWNrZWRDaGFuZ2VkIn0sdG9nZ2xlczp7dHlwZTpCb29sZWFuLHZhbHVlOiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sdmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvbiIsb2JzZXJ2ZXI6Il92YWx1ZUNoYW5nZWQifX0sb2JzZXJ2ZXJzOlsiX3JlcXVpcmVkQ2hhbmdlZChyZXF1aXJlZCkiXSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faGFzSXJvbkNoZWNrZWRFbGVtZW50QmVoYXZpb3I9ITB9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMucmVxdWlyZWR8fHRoaXMuY2hlY2tlZH0sX3JlcXVpcmVkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMucmVxdWlyZWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtcmVxdWlyZWQiLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtcmVxdWlyZWQiKX0sX2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmU9dGhpcy5jaGVja2VkLHRoaXMuZmlyZSgiaXJvbi1jaGFuZ2UiKX0sX3ZhbHVlQ2hhbmdlZDpmdW5jdGlvbigpe251bGw9PXRoaXMudmFsdWUmJih0aGlzLnZhbHVlPSJvbiIpfX0sbGE9e29ic2VydmVyczpbIl9mb2N1c2VkQ2hhbmdlZChyZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkKSJdLF9mb2N1c2VkQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiZ0aGlzLmVuc3VyZVJpcHBsZSgpLHRoaXMuaGFzUmlwcGxlKCkmJih0aGlzLl9yaXBwbGUuaG9sZERvd249dCl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXt2YXIgdD1Kby5fY3JlYXRlUmlwcGxlKCk7cmV0dXJuIHQuaWQ9ImluayIsdC5zZXRBdHRyaWJ1dGUoImNlbnRlciIsIiIpLHQuY2xhc3NMaXN0LmFkZCgiY2lyY2xlIiksdH19LGNhPVtYbyxxbyxKbyxsYV0sdWE9W2NhLFtyYSxhYSxzYV0se19jaGVja2VkQ2hhbmdlZDpmdW5jdGlvbigpe3NhLl9jaGVja2VkQ2hhbmdlZC5jYWxsKHRoaXMpLHRoaXMuaGFzUmlwcGxlKCkmJih0aGlzLmNoZWNrZWQ/dGhpcy5fcmlwcGxlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsIiIpOnRoaXMuX3JpcHBsZS5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKSl9LF9idXR0b25TdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oKXtKby5fYnV0dG9uU3RhdGVDaGFuZ2VkLmNhbGwodGhpcyksdGhpcy5kaXNhYmxlZHx8dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5jaGVja2VkPXRoaXMuYWN0aXZlKX19XSxoYT1fZWA8c3R5bGU+CiAgOmhvc3QgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1zaXplLCAxOHB4KTsKICAgIC8qIC0xcHggaXMgYSBzZW50aW5lbCBmb3IgdGhlIGRlZmF1bHQgYW5kIGlzIHJlcGxhY2VkIGluIFxgYXR0YWNoZWRcYC4gKi8KICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZTogdmFyKC0tcGFwZXItY2hlY2tib3gtaW5rLXNpemUsIC0xcHgpOwogICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICB9CgogIDpob3N0KFtoaWRkZW5dKSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQoKICA6aG9zdCg6Zm9jdXMpIHsKICAgIG91dGxpbmU6IG5vbmU7CiAgfQoKICAuaGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAjY2hlY2tib3hDb250YWluZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBtaW4td2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBtYXJnaW46IHZhcigtLXBhcGVyLWNoZWNrYm94LW1hcmdpbiwgaW5pdGlhbCk7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdmFyKC0tcGFwZXItY2hlY2tib3gtdmVydGljYWwtYWxpZ24sIG1pZGRsZSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtYmFja2dyb3VuZC1jb2xvciwgdHJhbnNwYXJlbnQpOwogIH0KCiAgI2luayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CgogICAgLyogQ2VudGVyIHRoZSByaXBwbGUgaW4gdGhlIGNoZWNrYm94IGJ5IG5lZ2F0aXZlIG9mZnNldHRpbmcgaXQgYnkKICAgICAqIChpbmtXaWR0aCAtIHJpcHBsZVdpZHRoKSAvIDIgKi8KICAgIHRvcDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgbGVmdDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKTsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogIH0KCiAgI2luazpkaXIocnRsKSB7CiAgICByaWdodDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgbGVmdDogYXV0bzsKICB9CgogICNpbmtbY2hlY2tlZF0gewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2tib3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGhlaWdodDogMTAwJTsKICAgIGJvcmRlcjogc29saWQgMnB4OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTQwbXMsIGJvcmRlci1jb2xvciAxNDBtczsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTQwbXMsIGJvcmRlci1jb2xvciAxNDBtczsKCiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgfQoKICAvKiBjaGVja2JveCBjaGVja2VkIGFuaW1hdGlvbnMgKi8KICAjY2hlY2tib3guY2hlY2tlZCAjY2hlY2ttYXJrIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjaGVja21hcmstZXhwYW5kIDE0MG1zIGVhc2Utb3V0IGZvcndhcmRzOwogICAgYW5pbWF0aW9uOiBjaGVja21hcmstZXhwYW5kIDE0MG1zIGVhc2Utb3V0IGZvcndhcmRzOwoKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgfQoKICBALXdlYmtpdC1rZXlmcmFtZXMgY2hlY2ttYXJrLWV4cGFuZCB7CiAgICAwJSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLCAwKSByb3RhdGUoNDVkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgQGtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKSByb3RhdGUoNDVkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgcm90YXRlKDQ1ZGVnKTsKICAgIH0KICB9CgogICNjaGVja2JveC5jaGVja2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogIH0KCiAgI2NoZWNrbWFyayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzYlOwogICAgaGVpZ2h0OiA3MCU7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiBjYWxjKDIvMTUgKiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKTsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja21hcmstY29sb3IsIHdoaXRlKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDk3JSA4NiU7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogcHJvdGVjdCBhZ2FpbnN0IHBhZ2UtbGV2ZWwgYm94LXNpemluZyAqLwogIH0KCiAgI2NoZWNrbWFyazpkaXIocnRsKSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMTQlOwogIH0KCiAgLyogbGFiZWwgKi8KICAjY2hlY2tib3hMYWJlbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1zcGFjaW5nLCA4cHgpOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgQGFwcGx5IC0tcGFwZXItY2hlY2tib3gtbGFiZWw7CiAgfQoKICA6aG9zdChbY2hlY2tlZF0pICNjaGVja2JveExhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSkpOwogICAgQGFwcGx5IC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY2hlY2tlZDsKICB9CgogICNjaGVja2JveExhYmVsOmRpcihydGwpIHsKICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQoKICAjY2hlY2tib3hMYWJlbFtoaWRkZW5dIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwoKICA6aG9zdChbZGlzYWJsZWRdKSAjY2hlY2tib3ggewogICAgb3BhY2l0eTogMC41OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXVtjaGVja2VkXSkgI2NoZWNrYm94IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdKSAjY2hlY2tib3hMYWJlbCAgewogICAgb3BhY2l0eTogMC42NTsKICB9CgogIC8qIGludmFsaWQgc3RhdGUgKi8KICAjY2hlY2tib3guaW52YWxpZDpub3QoLmNoZWNrZWQpIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtZXJyb3ItY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgfQo8L3N0eWxlPgoKPGRpdiBpZD0iY2hlY2tib3hDb250YWluZXIiPgogIDxkaXYgaWQ9ImNoZWNrYm94IiBjbGFzcyQ9IltbX2NvbXB1dGVDaGVja2JveENsYXNzKGNoZWNrZWQsIGludmFsaWQpXV0iPgogICAgPGRpdiBpZD0iY2hlY2ttYXJrIiBjbGFzcyQ9IltbX2NvbXB1dGVDaGVja21hcmtDbGFzcyhjaGVja2VkKV1dIj48L2Rpdj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJjaGVja2JveExhYmVsIj48c2xvdD48L3Nsb3Q+PC9kaXY+YDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgZGE7aGEuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksUnIoe190ZW1wbGF0ZTpoYSxpczoicGFwZXItY2hlY2tib3giLGJlaGF2aW9yczpbdWFdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJjaGVja2JveCIsImFyaWEtY2hlY2tlZCI6ITEsdGFiaW5kZXg6MH0scHJvcGVydGllczp7YXJpYUFjdGl2ZUF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImFyaWEtY2hlY2tlZCJ9fSxhdHRhY2hlZDpmdW5jdGlvbigpe0xpKHRoaXMsKGZ1bmN0aW9uKCl7aWYoIi0xcHgiPT09dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSIpLnRyaW0oKSl7dmFyIHQ9dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplIikudHJpbSgpLGU9InB4IixuPXQubWF0Y2goL1tBLVphLXpdKyQvKTtudWxsIT09biYmKGU9blswXSk7dmFyIGk9cGFyc2VGbG9hdCh0KSxyPTgvMyppOyJweCI9PT1lJiYocj1NYXRoLmZsb29yKHIpKSUyIT1pJTImJnIrKyx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtaW5rLXNpemUiOnIrZX0pfX0pKX0sX2NvbXB1dGVDaGVja2JveENsYXNzOmZ1bmN0aW9uKHQsZSl7dmFyIG49IiI7cmV0dXJuIHQmJihuKz0iY2hlY2tlZCAiKSxlJiYobis9ImludmFsaWQiKSxufSxfY29tcHV0ZUNoZWNrbWFya0NsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0PyIiOiJoaWRkZW4ifSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQuY2hlY2tib3hDb250YWluZXIsbGEuX2NyZWF0ZVJpcHBsZS5jYWxsKHRoaXMpfX0pO2NvbnN0IHBhPXtwcm9wZXJ0aWVzOntzaXppbmdUYXJnZXQ6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSxmaXRJbnRvOnt0eXBlOk9iamVjdCx2YWx1ZTp3aW5kb3d9LG5vT3ZlcmxhcDp7dHlwZTpCb29sZWFufSxwb3NpdGlvblRhcmdldDp7dHlwZTpFbGVtZW50fSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nfSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZ30sZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LGhvcml6b250YWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSx2ZXJ0aWNhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LGF1dG9GaXRPbkF0dGFjaDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9maXRJbmZvOnt0eXBlOk9iamVjdH19LGdldCBfZml0V2lkdGgoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93P3RoaXMuZml0SW50by5pbm5lcldpZHRoOnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH0sZ2V0IF9maXRIZWlnaHQoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93P3RoaXMuZml0SW50by5pbm5lckhlaWdodDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSxnZXQgX2ZpdExlZnQoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9LGdldCBfZml0VG9wKCl7cmV0dXJuIHRoaXMuZml0SW50bz09PXdpbmRvdz8wOnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3B9LGdldCBfZGVmYXVsdFBvc2l0aW9uVGFyZ2V0KCl7dmFyIHQ9WWkodGhpcykucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmKHQ9dC5ob3N0KSx0fSxnZXQgX2xvY2FsZUhvcml6b250YWxBbGlnbigpe2lmKHRoaXMuX2lzUlRMKXtpZigicmlnaHQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuImxlZnQiO2lmKCJsZWZ0Ij09PXRoaXMuaG9yaXpvbnRhbEFsaWduKXJldHVybiJyaWdodCJ9cmV0dXJuIHRoaXMuaG9yaXpvbnRhbEFsaWdufSxnZXQgX19zaG91bGRQb3NpdGlvbigpe3JldHVybih0aGlzLmhvcml6b250YWxBbGlnbnx8dGhpcy52ZXJ0aWNhbEFsaWduKSYmdGhpcy5wb3NpdGlvblRhcmdldH0sZ2V0IF9pc1JUTCgpe3JldHVybiB2b2lkIDA9PT10aGlzLl9tZW1vaXplZElzUlRMJiYodGhpcy5fbWVtb2l6ZWRJc1JUTD0icnRsIj09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uKSx0aGlzLl9tZW1vaXplZElzUlRMfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb25UYXJnZXQ9dGhpcy5wb3NpdGlvblRhcmdldHx8dGhpcy5fZGVmYXVsdFBvc2l0aW9uVGFyZ2V0LHRoaXMuYXV0b0ZpdE9uQXR0YWNoJiYoIm5vbmUiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlzcGxheT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5maXQoKX0uYmluZCh0aGlzKSk6KHdpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx0aGlzLmZpdCgpKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fX2RlZmVycmVkRml0JiYoY2xlYXJUaW1lb3V0KHRoaXMuX19kZWZlcnJlZEZpdCksdGhpcy5fX2RlZmVycmVkRml0PW51bGwpfSxmaXQ6ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uKCksdGhpcy5jb25zdHJhaW4oKSx0aGlzLmNlbnRlcigpfSxfZGlzY292ZXJJbmZvOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2ZpdEluZm8pe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5zaXppbmdUYXJnZXQpO3RoaXMuX2ZpdEluZm89e2lubGluZVN0eWxlOnt0b3A6dGhpcy5zdHlsZS50b3B8fCIiLGxlZnQ6dGhpcy5zdHlsZS5sZWZ0fHwiIixwb3NpdGlvbjp0aGlzLnN0eWxlLnBvc2l0aW9ufHwiIn0sc2l6ZXJJbmxpbmVTdHlsZTp7bWF4V2lkdGg6dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4V2lkdGh8fCIiLG1heEhlaWdodDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHR8fCIiLGJveFNpemluZzp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmd8fCIifSxwb3NpdGlvbmVkQnk6e3ZlcnRpY2FsbHk6ImF1dG8iIT09dC50b3A/InRvcCI6ImF1dG8iIT09dC5ib3R0b20/ImJvdHRvbSI6bnVsbCxob3Jpem9udGFsbHk6ImF1dG8iIT09dC5sZWZ0PyJsZWZ0IjoiYXV0byIhPT10LnJpZ2h0PyJyaWdodCI6bnVsbH0sc2l6ZWRCeTp7aGVpZ2h0OiJub25lIiE9PWUubWF4SGVpZ2h0LHdpZHRoOiJub25lIiE9PWUubWF4V2lkdGgsbWluV2lkdGg6cGFyc2VJbnQoZS5taW5XaWR0aCwxMCl8fDAsbWluSGVpZ2h0OnBhcnNlSW50KGUubWluSGVpZ2h0LDEwKXx8MH0sbWFyZ2luOnt0b3A6cGFyc2VJbnQodC5tYXJnaW5Ub3AsMTApfHwwLHJpZ2h0OnBhcnNlSW50KHQubWFyZ2luUmlnaHQsMTApfHwwLGJvdHRvbTpwYXJzZUludCh0Lm1hcmdpbkJvdHRvbSwxMCl8fDAsbGVmdDpwYXJzZUludCh0Lm1hcmdpbkxlZnQsMTApfHwwfX19fSxyZXNldEZpdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2ZpdEluZm98fHt9O2Zvcih2YXIgZSBpbiB0LnNpemVySW5saW5lU3R5bGUpdGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbZV09dC5zaXplcklubGluZVN0eWxlW2VdO2Zvcih2YXIgZSBpbiB0LmlubGluZVN0eWxlKXRoaXMuc3R5bGVbZV09dC5pbmxpbmVTdHlsZVtlXTt0aGlzLl9maXRJbmZvPW51bGx9LHJlZml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsTGVmdCxlPXRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbFRvcDt0aGlzLnJlc2V0Rml0KCksdGhpcy5maXQoKSx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0PXQsdGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wPWV9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19zaG91bGRQb3NpdGlvbilyZXR1cm47dGhpcy5fZGlzY292ZXJJbmZvKCksd2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uZmx1c2goKSx0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zaXppbmdUYXJnZXQuc3R5bGUuYm94U2l6aW5nPSJib3JkZXItYm94Iix0aGlzLnN0eWxlLmxlZnQ9IjBweCIsdGhpcy5zdHlsZS50b3A9IjBweCI7dmFyIHQ9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuX19nZXROb3JtYWxpemVkUmVjdCh0aGlzLnBvc2l0aW9uVGFyZ2V0KSxuPXRoaXMuX19nZXROb3JtYWxpemVkUmVjdCh0aGlzLmZpdEludG8pO2xldCBpLHIsbyxhO3RoaXMuZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFycyYmKGk9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgscj10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRIZWlnaHQsbz10aGlzLnNpemluZ1RhcmdldC5jbGllbnRXaWR0aCxhPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudEhlaWdodCk7dmFyIHM9dGhpcy5fZml0SW5mby5tYXJnaW4sbD10aGlzLl9fZ2V0UG9zaXRpb24odGhpcy5fbG9jYWxlSG9yaXpvbnRhbEFsaWduLHRoaXMudmVydGljYWxBbGlnbix7d2lkdGg6dC53aWR0aCtzLmxlZnQrcy5yaWdodCxoZWlnaHQ6dC5oZWlnaHQrcy50b3Arcy5ib3R0b219LHQsZSxuKSxjPWwubGVmdCtzLmxlZnQsdT1sLnRvcCtzLnRvcCxoPU1hdGgubWluKG4ucmlnaHQtcy5yaWdodCxjK3Qud2lkdGgpLGQ9TWF0aC5taW4obi5ib3R0b20tcy5ib3R0b20sdSt0LmhlaWdodCk7Yz1NYXRoLm1heChuLmxlZnQrcy5sZWZ0LE1hdGgubWluKGMsaC10aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpKSx1PU1hdGgubWF4KG4udG9wK3MudG9wLE1hdGgubWluKHUsZC10aGlzLl9maXRJbmZvLnNpemVkQnkubWluSGVpZ2h0KSk7Y29uc3QgcD1NYXRoLm1heChoLWMsdGhpcy5fZml0SW5mby5zaXplZEJ5Lm1pbldpZHRoKSxmPU1hdGgubWF4KGQtdSx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluSGVpZ2h0KTt0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aD1wKyJweCIsdGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PWYrInB4Ijtjb25zdCBtPWMtdC5sZWZ0LGc9dS10LnRvcDtpZih0aGlzLnN0eWxlLmxlZnQ9YCR7bX1weGAsdGhpcy5zdHlsZS50b3A9YCR7Z31weGAsdGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzKXtjb25zdCB0PXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxlPXQtdGhpcy5zaXppbmdUYXJnZXQuY2xpZW50SGVpZ2h0LShyLWEpO2lmKGU+MCl7Y29uc3QgaT1NYXRoLm1pbihuLmhlaWdodC1zLnRvcC1zLmJvdHRvbSxmK2UpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodD1gJHtpfXB4YDtjb25zdCByPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxvPXItdDtsZXQgYTsidG9wIj09PWwudmVydGljYWxBbGlnbj9hPWc6Im1pZGRsZSI9PT1sLnZlcnRpY2FsQWxpZ24/YT1nLW8vMjoiYm90dG9tIj09PWwudmVydGljYWxBbGlnbiYmKGE9Zy1vKSxhPU1hdGgubWF4KG4udG9wK3MudG9wLE1hdGgubWluKGEsbi5ib3R0b20tcy5ib3R0b20tcikpLHRoaXMuc3R5bGUudG9wPWAke2F9cHhgfWNvbnN0IGM9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgsdT1jLXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudFdpZHRoLShpLW8pO2lmKHU+MCl7Y29uc3QgdD0oKCk9PntpZih2b2lkIDAhPT1kYSlyZXR1cm4gZGE7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtPYmplY3QuYXNzaWduKHQuc3R5bGUse292ZXJmbG93OiJhdXRvIixwb3NpdGlvbjoiZml4ZWQiLGxlZnQ6IjBweCIsdG9wOiIwcHgiLG1heFdpZHRoOiIxMDBweCIsbWF4SGVpZ2h0OiIxMDBweCJ9KTtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLnN0eWxlLndpZHRoPSIyMDBweCIsZS5zdHlsZS5oZWlnaHQ9IjIwMHB4Iix0LmFwcGVuZENoaWxkKGUpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksZGE9TWF0aC5hYnModC5vZmZzZXRXaWR0aC0xMDApPjE/dC5vZmZzZXRXaWR0aC10LmNsaWVudFdpZHRoOjAsZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxkYX0pKCksZT1NYXRoLm1pbihuLndpZHRoLXMubGVmdC1zLnJpZ2h0LHArdS10KTt0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aD1gJHtlfXB4YDtjb25zdCBpPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldFdpZHRoK3Qscj1pLWM7bGV0IG87ImxlZnQiPT09bC5ob3Jpem9udGFsQWxpZ24/bz1tOiJjZW50ZXIiPT09bC5ob3Jpem9udGFsQWxpZ24/bz1tLXIvMjoicmlnaHQiPT09bC5ob3Jpem9udGFsQWxpZ24mJihvPW0tciksbz1NYXRoLm1heChuLmxlZnQrcy5sZWZ0LE1hdGgubWluKG8sbi5yaWdodC1zLnJpZ2h0LWkpKSx0aGlzLnN0eWxlLmxlZnQ9YCR7b31weGB9fX0sY29uc3RyYWluOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19zaG91bGRQb3NpdGlvbil7dGhpcy5fZGlzY292ZXJJbmZvKCk7dmFyIHQ9dGhpcy5fZml0SW5mbzt0LnBvc2l0aW9uZWRCeS52ZXJ0aWNhbGx5fHwodGhpcy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLHRoaXMuc3R5bGUudG9wPSIwcHgiKSx0LnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS5sZWZ0PSIwcHgiKSx0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giO3ZhciBlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dC5zaXplZEJ5LmhlaWdodHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZSx0LnBvc2l0aW9uZWRCeS52ZXJ0aWNhbGx5LCJ0b3AiLCJib3R0b20iLCJIZWlnaHQiKSx0LnNpemVkQnkud2lkdGh8fHRoaXMuX19zaXplRGltZW5zaW9uKGUsdC5wb3NpdGlvbmVkQnkuaG9yaXpvbnRhbGx5LCJsZWZ0IiwicmlnaHQiLCJXaWR0aCIpfX0sX3NpemVEaW1lbnNpb246ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLl9fc2l6ZURpbWVuc2lvbih0LGUsbixpLHIpfSxfX3NpemVEaW1lbnNpb246ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl9maXRJbmZvLGE9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50bykscz0iV2lkdGgiPT09cj9hLndpZHRoOmEuaGVpZ2h0LGw9ZT09PWksYz0ib2Zmc2V0IityO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlWyJtYXgiK3JdPXMtby5tYXJnaW5bbD9uOmldLShsP3MtdFtpXTp0W25dKS0odGhpc1tjXS10aGlzLnNpemluZ1RhcmdldFtjXSkrInB4In0sY2VudGVyOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19zaG91bGRQb3NpdGlvbil7dGhpcy5fZGlzY292ZXJJbmZvKCk7dmFyIHQ9dGhpcy5fZml0SW5mby5wb3NpdGlvbmVkQnk7aWYoIXQudmVydGljYWxseXx8IXQuaG9yaXpvbnRhbGx5KXt0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdC52ZXJ0aWNhbGx5fHwodGhpcy5zdHlsZS50b3A9IjBweCIpLHQuaG9yaXpvbnRhbGx5fHwodGhpcy5zdHlsZS5sZWZ0PSIwcHgiKTt2YXIgZT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byk7dC52ZXJ0aWNhbGx5fHwodGhpcy5zdHlsZS50b3A9bi50b3AtZS50b3ArKG4uaGVpZ2h0LWUuaGVpZ2h0KS8yKyJweCIpLHQuaG9yaXpvbnRhbGx5fHwodGhpcy5zdHlsZS5sZWZ0PW4ubGVmdC1lLmxlZnQrKG4ud2lkdGgtZS53aWR0aCkvMisicHgiKX19fSxfX2dldE5vcm1hbGl6ZWRSZWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHx0PT09d2luZG93P3t0b3A6MCxsZWZ0OjAsd2lkdGg6d2luZG93LmlubmVyV2lkdGgsaGVpZ2h0OndpbmRvdy5pbm5lckhlaWdodCxyaWdodDp3aW5kb3cuaW5uZXJXaWR0aCxib3R0b206d2luZG93LmlubmVySGVpZ2h0fTp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxfX2dldE9mZnNjcmVlbkFyZWE6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPU1hdGgubWluKDAsdC50b3ApK01hdGgubWluKDAsbi5ib3R0b20tKHQudG9wK2UuaGVpZ2h0KSkscj1NYXRoLm1pbigwLHQubGVmdCkrTWF0aC5taW4oMCxuLnJpZ2h0LSh0LmxlZnQrZS53aWR0aCkpO3JldHVybiBNYXRoLmFicyhpKSplLndpZHRoK01hdGguYWJzKHIpKmUuaGVpZ2h0fSxfX2dldFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt2YXIgYSxzPVt7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImxlZnQiLHRvcDpyLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJyaWdodCIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSx7dmVydGljYWxBbGlnbjoiYm90dG9tIixob3Jpem9udGFsQWxpZ246ImxlZnQiLHRvcDpyLmJvdHRvbS1uLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJyaWdodCIsdG9wOnIuYm90dG9tLW4uaGVpZ2h0LXRoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0fV07aWYodGhpcy5ub092ZXJsYXApe2Zvcih2YXIgbD0wLGM9cy5sZW5ndGg7bDxjO2wrKyl7dmFyIHU9e307Zm9yKHZhciBoIGluIHNbbF0pdVtoXT1zW2xdW2hdO3MucHVzaCh1KX1zWzBdLnRvcD1zWzFdLnRvcCs9ci5oZWlnaHQsc1syXS50b3A9c1szXS50b3AtPXIuaGVpZ2h0LHNbNF0ubGVmdD1zWzZdLmxlZnQrPXIud2lkdGgsc1s1XS5sZWZ0PXNbN10ubGVmdC09ci53aWR0aH1mb3IoZT0iYXV0byI9PT1lP251bGw6ZSwodD0iYXV0byI9PT10P251bGw6dCkmJiJjZW50ZXIiIT09dHx8KHMucHVzaCh7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQrKHRoaXMubm9PdmVybGFwP3IuaGVpZ2h0OjApLGxlZnQ6ci5sZWZ0LWkud2lkdGgvMityLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSkscy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldC0odGhpcy5ub092ZXJsYXA/ci5oZWlnaHQ6MCksbGVmdDpyLmxlZnQtaS53aWR0aC8yK3Iud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSksZSYmIm1pZGRsZSIhPT1lfHwocy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIudG9wLWkuaGVpZ2h0LzIrci5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ci53aWR0aDowKX0pLHMucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci50b3AtaS5oZWlnaHQvMityLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLnJpZ2h0LW4ud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9yLndpZHRoOjApfSkpLCJtaWRkbGUiPT09ZSYmImNlbnRlciI9PT10JiZzLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDpyLnRvcC1pLmhlaWdodC8yK3IuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIubGVmdC1pLndpZHRoLzIrci53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pLGw9MDtsPHMubGVuZ3RoO2wrKyl7dmFyIGQ9c1tsXSxwPWQudmVydGljYWxBbGlnbj09PWUsZj1kLmhvcml6b250YWxBbGlnbj09PXQ7aWYoIXRoaXMuZHluYW1pY0FsaWduJiYhdGhpcy5ub092ZXJsYXAmJnAmJmYpe2E9ZDticmVha312YXIgbT0oIWV8fHApJiYoIXR8fGYpO2lmKHRoaXMuZHluYW1pY0FsaWdufHxtKXtpZihkLm9mZnNjcmVlbkFyZWE9dGhpcy5fX2dldE9mZnNjcmVlbkFyZWEoZCxuLG8pLDA9PT1kLm9mZnNjcmVlbkFyZWEmJm0pe2E9ZDticmVha312YXIgZz1kLm9mZnNjcmVlbkFyZWEtKGE9YXx8ZCkub2Zmc2NyZWVuQXJlYTsoZzwwfHwwPT09ZyYmKHB8fGYpKSYmKGE9ZCl9fXJldHVybiBhfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgZmE9RWxlbWVudC5wcm90b3R5cGUsbWE9ZmEubWF0Y2hlc3x8ZmEubWF0Y2hlc1NlbGVjdG9yfHxmYS5tb3pNYXRjaGVzU2VsZWN0b3J8fGZhLm1zTWF0Y2hlc1NlbGVjdG9yfHxmYS5vTWF0Y2hlc1NlbGVjdG9yfHxmYS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7Y29uc3QgZ2E9bmV3IGNsYXNze2dldFRhYmJhYmxlTm9kZXModCl7dmFyIGU9W107cmV0dXJuIHRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKHQsZSk/dGhpcy5fc29ydEJ5VGFiSW5kZXgoZSk6ZX1pc0ZvY3VzYWJsZSh0KXtyZXR1cm4gbWEuY2FsbCh0LCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYnV0dG9uLCBvYmplY3QiKT9tYS5jYWxsKHQsIjpub3QoW2Rpc2FibGVkXSkiKTptYS5jYWxsKHQsImFbaHJlZl0sIGFyZWFbaHJlZl0sIGlmcmFtZSwgW3RhYmluZGV4XSwgW2NvbnRlbnRFZGl0YWJsZV0iKX1pc1RhYmJhYmxlKHQpe3JldHVybiB0aGlzLmlzRm9jdXNhYmxlKHQpJiZtYS5jYWxsKHQsJzpub3QoW3RhYmluZGV4PSItMSJdKScpJiZ0aGlzLl9pc1Zpc2libGUodCl9X25vcm1hbGl6ZWRUYWJJbmRleCh0KXtpZih0aGlzLmlzRm9jdXNhYmxlKHQpKXt2YXIgZT10LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8MDtyZXR1cm4gTnVtYmVyKGUpfXJldHVybi0xfV9jb2xsZWN0VGFiYmFibGVOb2Rlcyh0LGUpe2lmKHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4hMTt2YXIgbj10O2lmKCF0aGlzLl9pc1Zpc2libGUobikpcmV0dXJuITE7dmFyIGkscj10aGlzLl9ub3JtYWxpemVkVGFiSW5kZXgobiksbz1yPjA7cj49MCYmZS5wdXNoKG4pLGk9ImNvbnRlbnQiPT09bi5sb2NhbE5hbWV8fCJzbG90Ij09PW4ubG9jYWxOYW1lP1lpKG4pLmdldERpc3RyaWJ1dGVkTm9kZXMoKTpZaShuLnJvb3R8fG4pLmNoaWxkcmVuO2Zvcih2YXIgYT0wO2E8aS5sZW5ndGg7YSsrKW89dGhpcy5fY29sbGVjdFRhYmJhYmxlTm9kZXMoaVthXSxlKXx8bztyZXR1cm4gb31faXNWaXNpYmxlKHQpe3ZhciBlPXQuc3R5bGU7cmV0dXJuImhpZGRlbiIhPT1lLnZpc2liaWxpdHkmJiJub25lIiE9PWUuZGlzcGxheSYmImhpZGRlbiIhPT0oZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KSkudmlzaWJpbGl0eSYmIm5vbmUiIT09ZS5kaXNwbGF5fV9zb3J0QnlUYWJJbmRleCh0KXt2YXIgZT10Lmxlbmd0aDtpZihlPDIpcmV0dXJuIHQ7dmFyIG49TWF0aC5jZWlsKGUvMiksaT10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKDAsbikpLHI9dGhpcy5fc29ydEJ5VGFiSW5kZXgodC5zbGljZShuKSk7cmV0dXJuIHRoaXMuX21lcmdlU29ydEJ5VGFiSW5kZXgoaSxyKX1fbWVyZ2VTb3J0QnlUYWJJbmRleCh0LGUpe2Zvcih2YXIgbj1bXTt0Lmxlbmd0aD4wJiZlLmxlbmd0aD4wOyl0aGlzLl9oYXNMb3dlclRhYk9yZGVyKHRbMF0sZVswXSk/bi5wdXNoKGUuc2hpZnQoKSk6bi5wdXNoKHQuc2hpZnQoKSk7cmV0dXJuIG4uY29uY2F0KHQsZSl9X2hhc0xvd2VyVGFiT3JkZXIodCxlKXt2YXIgbj1NYXRoLm1heCh0LnRhYkluZGV4LDApLGk9TWF0aC5tYXgoZS50YWJJbmRleCwwKTtyZXR1cm4gMD09PW58fDA9PT1pP2k+bjpuPml9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLWJhY2tncm91bmQtY29sb3IsICMwMDApOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcDsKICAgICAgfQoKICAgICAgOmhvc3QoLm9wZW5lZCkgewogICAgICAgIG9wYWNpdHk6IHZhcigtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGFjaXR5LCAwLjYpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLWlyb24tb3ZlcmxheS1iYWNrZHJvcC1vcGVuZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLW92ZXJsYXktYmFja2Ryb3AiLHByb3BlcnRpZXM6e29wZW5lZDp7cmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uZW5kIn0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCl9LHByZXBhcmU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMucGFyZW50Tm9kZSYmWWkoZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcyl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sY29tcGxldGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZHx8dGhpcy5wYXJlbnROb2RlIT09ZG9jdW1lbnQuYm9keXx8WWkodGhpcy5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzKX0sX29uVHJhbnNpdGlvbmVuZDpmdW5jdGlvbih0KXt0JiZ0LnRhcmdldD09PXRoaXMmJnRoaXMuY29tcGxldGUoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCl7aWYodCl0aGlzLnByZXBhcmUoKTtlbHNle3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpOyIwcyIhPT1lLnRyYW5zaXRpb25EdXJhdGlvbiYmMCE9ZS5vcGFjaXR5fHx0aGlzLmNvbXBsZXRlKCl9dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX29wZW5lZFJhZiYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fb3BlbmVkUmFmKSx0aGlzLl9fb3BlbmVkUmFmPW51bGwpLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX19vcGVuZWRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbCx0aGlzLnRvZ2dsZUNsYXNzKCJvcGVuZWQiLHRoaXMub3BlbmVkKX0uYmluZCh0aGlzKSkpfX0pO2NvbnN0IF9hPW5ldwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9vdmVybGF5cz1bXSx0aGlzLl9taW5pbXVtWj0xMDEsdGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGwsaWkoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJ0YXAiLChmdW5jdGlvbigpe30pKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLHRoaXMuX29uQ2FwdHVyZUNsaWNrLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9vbkNhcHR1cmVGb2N1cy5iaW5kKHRoaXMpLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbkNhcHR1cmVLZXlEb3duLmJpbmQodGhpcyksITApfWdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BFbGVtZW50fHwodGhpcy5fYmFja2Ryb3BFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tb3ZlcmxheS1iYWNrZHJvcCIpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGRlZXBBY3RpdmVFbGVtZW50KCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtmb3IodCYmdCBpbnN0YW5jZW9mIEVsZW1lbnQhPTB8fCh0PWRvY3VtZW50LmJvZHkpO3Qucm9vdCYmWWkodC5yb290KS5hY3RpdmVFbGVtZW50Oyl0PVlpKHQucm9vdCkuYWN0aXZlRWxlbWVudDtyZXR1cm4gdH1fYnJpbmdPdmVybGF5QXRJbmRleFRvRnJvbnQodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXNbdF07aWYoZSl7dmFyIG49dGhpcy5fb3ZlcmxheXMubGVuZ3RoLTEsaT10aGlzLl9vdmVybGF5c1tuXTtpZihpJiZ0aGlzLl9zaG91bGRCZUJlaGluZE92ZXJsYXkoZSxpKSYmbi0tLCEodD49bikpe3ZhciByPU1hdGgubWF4KHRoaXMuY3VycmVudE92ZXJsYXlaKCksdGhpcy5fbWluaW11bVopO2Zvcih0aGlzLl9nZXRaKGUpPD1yJiZ0aGlzLl9hcHBseU92ZXJsYXlaKGUscik7dDxuOyl0aGlzLl9vdmVybGF5c1t0XT10aGlzLl9vdmVybGF5c1t0KzFdLHQrKzt0aGlzLl9vdmVybGF5c1tuXT1lfX19YWRkT3JSZW1vdmVPdmVybGF5KHQpe3Qub3BlbmVkP3RoaXMuYWRkT3ZlcmxheSh0KTp0aGlzLnJlbW92ZU92ZXJsYXkodCl9YWRkT3ZlcmxheSh0KXt2YXIgZT10aGlzLl9vdmVybGF5cy5pbmRleE9mKHQpO2lmKGU+PTApcmV0dXJuIHRoaXMuX2JyaW5nT3ZlcmxheUF0SW5kZXhUb0Zyb250KGUpLHZvaWQgdGhpcy50cmFja0JhY2tkcm9wKCk7dmFyIG49dGhpcy5fb3ZlcmxheXMubGVuZ3RoLGk9dGhpcy5fb3ZlcmxheXNbbi0xXSxyPU1hdGgubWF4KHRoaXMuX2dldFooaSksdGhpcy5fbWluaW11bVopLG89dGhpcy5fZ2V0Wih0KTtpJiZ0aGlzLl9zaG91bGRCZUJlaGluZE92ZXJsYXkodCxpKSYmKHRoaXMuX2FwcGx5T3ZlcmxheVooaSxyKSxuLS0scj1NYXRoLm1heCh0aGlzLl9nZXRaKHRoaXMuX292ZXJsYXlzW24tMV0pLHRoaXMuX21pbmltdW1aKSksbzw9ciYmdGhpcy5fYXBwbHlPdmVybGF5Wih0LHIpLHRoaXMuX292ZXJsYXlzLnNwbGljZShuLDAsdCksdGhpcy50cmFja0JhY2tkcm9wKCl9cmVtb3ZlT3ZlcmxheSh0KXt2YXIgZT10aGlzLl9vdmVybGF5cy5pbmRleE9mKHQpOy0xIT09ZSYmKHRoaXMuX292ZXJsYXlzLnNwbGljZShlLDEpLHRoaXMudHJhY2tCYWNrZHJvcCgpKX1jdXJyZW50T3ZlcmxheSgpe3JldHVybiB0aGlzLl9vdmVybGF5c1t0aGlzLl9vdmVybGF5cy5sZW5ndGgtMV19Y3VycmVudE92ZXJsYXlaKCl7cmV0dXJuIHRoaXMuX2dldFoodGhpcy5jdXJyZW50T3ZlcmxheSgpKX1lbnN1cmVNaW5pbXVtWih0KXt0aGlzLl9taW5pbXVtWj1NYXRoLm1heCh0aGlzLl9taW5pbXVtWix0KX1mb2N1c092ZXJsYXkoKXt2YXIgdD10aGlzLmN1cnJlbnRPdmVybGF5KCk7dCYmdC5fYXBwbHlGb2N1cygpfXRyYWNrQmFja2Ryb3AoKXt2YXIgdD10aGlzLl9vdmVybGF5V2l0aEJhY2tkcm9wKCk7KHR8fHRoaXMuX2JhY2tkcm9wRWxlbWVudCkmJih0aGlzLmJhY2tkcm9wRWxlbWVudC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Wih0KS0xLHRoaXMuYmFja2Ryb3BFbGVtZW50Lm9wZW5lZD0hIXQsdGhpcy5iYWNrZHJvcEVsZW1lbnQucHJlcGFyZSgpKX1nZXRCYWNrZHJvcHMoKXtmb3IodmFyIHQ9W10sZT0wO2U8dGhpcy5fb3ZlcmxheXMubGVuZ3RoO2UrKyl0aGlzLl9vdmVybGF5c1tlXS53aXRoQmFja2Ryb3AmJnQucHVzaCh0aGlzLl9vdmVybGF5c1tlXSk7cmV0dXJuIHR9YmFja2Ryb3BaKCl7cmV0dXJuIHRoaXMuX2dldFoodGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpKS0xfV9vdmVybGF5V2l0aEJhY2tkcm9wKCl7Zm9yKHZhciB0PXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xO3Q+PTA7dC0tKWlmKHRoaXMuX292ZXJsYXlzW3RdLndpdGhCYWNrZHJvcClyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdF19X2dldFoodCl7dmFyIGU9dGhpcy5fbWluaW11bVo7aWYodCl7dmFyIG49TnVtYmVyKHQuc3R5bGUuekluZGV4fHx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS56SW5kZXgpO249PW4mJihlPW4pfXJldHVybiBlfV9zZXRaKHQsZSl7dC5zdHlsZS56SW5kZXg9ZX1fYXBwbHlPdmVybGF5Wih0LGUpe3RoaXMuX3NldFoodCxlKzIpfV9vdmVybGF5SW5QYXRoKHQpe3Q9dHx8W107Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5fbWFuYWdlcj09PXRoaXMpcmV0dXJuIHRbZV19X29uQ2FwdHVyZUNsaWNrKHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xO2lmKC0xIT09ZSlmb3IodmFyIG4saT1ZaSh0KS5wYXRoOyhuPXRoaXMuX292ZXJsYXlzW2VdKSYmdGhpcy5fb3ZlcmxheUluUGF0aChpKSE9PW4mJihuLl9vbkNhcHR1cmVDbGljayh0KSxuLmFsbG93Q2xpY2tUaHJvdWdoKTspZS0tfV9vbkNhcHR1cmVGb2N1cyh0KXt2YXIgZT10aGlzLmN1cnJlbnRPdmVybGF5KCk7ZSYmZS5fb25DYXB0dXJlRm9jdXModCl9X29uQ2FwdHVyZUtleURvd24odCl7dmFyIGU9dGhpcy5jdXJyZW50T3ZlcmxheSgpO2UmJih6by5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwiZXNjIik/ZS5fb25DYXB0dXJlRXNjKHQpOnpvLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJ0YWIiKSYmZS5fb25DYXB0dXJlVGFiKHQpKX1fc2hvdWxkQmVCZWhpbmRPdmVybGF5KHQsZSl7cmV0dXJuIXQuYWx3YXlzT25Ub3AmJmUuYWx3YXlzT25Ub3B9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovdmFyIHlhLHZhLGJhPXtwYWdlWDowLHBhZ2VZOjB9LHhhPW51bGwsd2E9W10sU2E9WyJ3aGVlbCIsIm1vdXNld2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXTtmdW5jdGlvbiBNYSh0KXtFYS5pbmRleE9mKHQpPj0wfHwoMD09PUVhLmxlbmd0aCYmKGZ1bmN0aW9uIGUoKXt5YT15YXx8VGEuYmluZCh2b2lkIDApO2Zvcih2YXIgdD0wLGU9U2EubGVuZ3RoO3Q8ZTt0KyspZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihTYVt0XSx5YSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSl9KSgpLEVhLnB1c2godCksdmE9RWFbRWEubGVuZ3RoLTFdKX1jb25zdCBFYT1bXTtmdW5jdGlvbiBUYSh0KXtpZih0LmNhbmNlbGFibGUmJihmdW5jdGlvbiBlKHQpe3ZhciBlPVlpKHQpLnJvb3RUYXJnZXQ7aWYoInRvdWNobW92ZSIhPT10LnR5cGUmJnhhIT09ZSYmKHhhPWUsd2E9KGZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPVtdLG49dC5pbmRleE9mKHZhKSxpPTA7aTw9bjtpKyspaWYodFtpXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgcj10W2ldLG89ci5zdHlsZTsic2Nyb2xsIiE9PW8ub3ZlcmZsb3cmJiJhdXRvIiE9PW8ub3ZlcmZsb3cmJihvPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpKSwic2Nyb2xsIiE9PW8ub3ZlcmZsb3cmJiJhdXRvIiE9PW8ub3ZlcmZsb3d8fGUucHVzaChyKX1yZXR1cm4gZX0pKFlpKHQpLnBhdGgpKSwhd2EubGVuZ3RoKXJldHVybiEwO2lmKCJ0b3VjaHN0YXJ0Ij09PXQudHlwZSlyZXR1cm4hMTt2YXIgaT0oZnVuY3Rpb24gcih0KXt2YXIgZT17ZGVsdGFYOnQuZGVsdGFYLGRlbHRhWTp0LmRlbHRhWX07aWYoImRlbHRhWCJpbiB0KTtlbHNlIGlmKCJ3aGVlbERlbHRhWCJpbiB0JiYid2hlZWxEZWx0YVkiaW4gdCllLmRlbHRhWD0tdC53aGVlbERlbHRhWCxlLmRlbHRhWT0tdC53aGVlbERlbHRhWTtlbHNlIGlmKCJ3aGVlbERlbHRhImluIHQpZS5kZWx0YVg9MCxlLmRlbHRhWT0tdC53aGVlbERlbHRhO2Vsc2UgaWYoImF4aXMiaW4gdCllLmRlbHRhWD0xPT09dC5heGlzP3QuZGV0YWlsOjAsZS5kZWx0YVk9Mj09PXQuYXhpcz90LmRldGFpbDowO2Vsc2UgaWYodC50YXJnZXRUb3VjaGVzKXt2YXIgbj10LnRhcmdldFRvdWNoZXNbMF07ZS5kZWx0YVg9YmEucGFnZVgtbi5wYWdlWCxlLmRlbHRhWT1iYS5wYWdlWS1uLnBhZ2VZfXJldHVybiBlfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8pKHQpO3JldHVybiEoZnVuY3Rpb24gbyh0LGUsbil7aWYoZXx8bilmb3IodmFyIGk9TWF0aC5hYnMobik+PU1hdGguYWJzKGUpLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG89dFtyXTtpZihpP248MD9vLnNjcm9sbFRvcD4wOm8uc2Nyb2xsVG9wPG8uc2Nyb2xsSGVpZ2h0LW8uY2xpZW50SGVpZ2h0OmU8MD9vLnNjcm9sbExlZnQ+MDpvLnNjcm9sbExlZnQ8by5zY3JvbGxXaWR0aC1vLmNsaWVudFdpZHRoKXJldHVybiBvfX0pKHdhLGkuZGVsdGFYLGkuZGVsdGFZKX0pKHQpJiZ0LnByZXZlbnREZWZhdWx0KCksdC50YXJnZXRUb3VjaGVzKXt2YXIgbj10LnRhcmdldFRvdWNoZXNbMF07YmEucGFnZVg9bi5wYWdlWCxiYS5wYWdlWT1uLnBhZ2VZfX1jb25zdCBDYT17cHJvcGVydGllczp7b3BlbmVkOntvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQiLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LGNhbmNlbGVkOntvYnNlcnZlcjoiX2NhbmNlbGVkQ2hhbmdlZCIscmVhZE9ubHk6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExfSx3aXRoQmFja2Ryb3A6e29ic2VydmVyOiJfd2l0aEJhY2tkcm9wQ2hhbmdlZCIsdHlwZTpCb29sZWFufSxub0F1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0NhbmNlbE9uRXNjS2V5Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sY2xvc2luZ1JlYXNvbjp7dHlwZTpPYmplY3R9LHJlc3RvcmVGb2N1c09uQ2xvc2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWxsb3dDbGlja1Rocm91Z2g6e3R5cGU6Qm9vbGVhbn0sYWx3YXlzT25Ub3A6e3R5cGU6Qm9vbGVhbn0sc2Nyb2xsQWN0aW9uOnt0eXBlOlN0cmluZ30sX21hbmFnZXI6e3R5cGU6T2JqZWN0LHZhbHVlOl9hfSxfZm9jdXNlZENoaWxkOnt0eXBlOk9iamVjdH19LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uSXJvblJlc2l6ZSJ9LG9ic2VydmVyczpbIl9fdXBkYXRlU2Nyb2xsT2JzZXJ2ZXJzKGlzQXR0YWNoZWQsIG9wZW5lZCwgc2Nyb2xsQWN0aW9uKSJdLGdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fbWFuYWdlci5iYWNrZHJvcEVsZW1lbnR9LGdldCBfZm9jdXNOb2RlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWRDaGlsZHx8WWkodGhpcykucXVlcnlTZWxlY3RvcigiW2F1dG9mb2N1c10iKXx8dGhpc30sZ2V0IF9mb2N1c2FibGVOb2Rlcygpe3JldHVybiBnYS5nZXRUYWJiYWJsZU5vZGVzKHRoaXMpfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITEsdGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZT10aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9bnVsbCx0aGlzLl9fcmFmcz17fSx0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT1udWxsLHRoaXMuX19zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbExlZnQ9bnVsbCx0aGlzLl9fb25DYXB0dXJlU2Nyb2xsPXRoaXMuX19vbkNhcHR1cmVTY3JvbGwuYmluZCh0aGlzKSx0aGlzLl9fcm9vdE5vZGVzPW51bGwsdGhpcy5fZW5zdXJlU2V0dXAoKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCksdGhpcy5fb2JzZXJ2ZXI9WWkodGhpcykub2JzZXJ2ZU5vZGVzKHRoaXMuX29uTm9kZXNDaGFuZ2UpfSxkZXRhY2hlZDpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9vYnNlcnZlciYmWWkodGhpcykudW5vYnNlcnZlTm9kZXModGhpcy5fb2JzZXJ2ZXIpLHRoaXMuX29ic2VydmVyPW51bGwsdGhpcy5fX3JhZnMpbnVsbCE9PXRoaXMuX19yYWZzW3RdJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fcmFmc1t0XSk7dGhpcy5fX3JhZnM9e30sdGhpcy5fbWFuYWdlci5yZW1vdmVPdmVybGF5KHRoaXMpLHRoaXMuX19pc0FuaW1hdGluZyYmKHRoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOih0aGlzLl9hcHBseUZvY3VzKCksdGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCkpKX0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH0sb3BlbjpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9ITF9LGNhbmNlbDpmdW5jdGlvbih0KXt0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jYW5jZWxlZCIsdCx7Y2FuY2VsYWJsZTohMH0pLmRlZmF1bHRQcmV2ZW50ZWR8fCh0aGlzLl9zZXRDYW5jZWxlZCghMCksdGhpcy5vcGVuZWQ9ITEpfSxpbnZhbGlkYXRlVGFiYmFibGVzOmZ1bmN0aW9uKCl7dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZT10aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9bnVsbH0sX2Vuc3VyZVNldHVwOmZ1bmN0aW9uKCl7dGhpcy5fb3ZlcmxheVNldHVwfHwodGhpcy5fb3ZlcmxheVNldHVwPSEwLHRoaXMuc3R5bGUub3V0bGluZT0ibm9uZSIsdGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIil9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3Q/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIik6dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLHRoaXMuaXNBdHRhY2hlZCYmKHRoaXMuX19pc0FuaW1hdGluZz0hMCx0aGlzLl9fZGVyYWYoIl9fb3BlbmVkQ2hhbmdlZCIsdGhpcy5fX29wZW5lZENoYW5nZWQpKX0sX2NhbmNlbGVkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuY2xvc2luZ1JlYXNvbj10aGlzLmNsb3NpbmdSZWFzb258fHt9LHRoaXMuY2xvc2luZ1JlYXNvbi5jYW5jZWxlZD10aGlzLmNhbmNlbGVkfSxfd2l0aEJhY2tkcm9wQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMud2l0aEJhY2tkcm9wJiYhdGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/KHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSEwKTp0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXgmJih0aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITEpLHRoaXMub3BlbmVkJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX21hbmFnZXIudHJhY2tCYWNrZHJvcCgpfSxfcHJlcGFyZVJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuX19yZXN0b3JlRm9jdXNOb2RlPXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQsdGhpcy5fcHJlcGFyZVBvc2l0aW9uaW5nKCksdGhpcy5yZWZpdCgpLHRoaXMuX2ZpbmlzaFBvc2l0aW9uaW5nKCksdGhpcy5ub0F1dG9Gb2N1cyYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuX2ZvY3VzTm9kZSYmKHRoaXMuX2ZvY3VzTm9kZS5ibHVyKCksdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGUuZm9jdXMoKSl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpfSxfZmluaXNoUmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5maXJlKCJpcm9uLW92ZXJsYXktb3BlbmVkIil9LF9maW5pc2hSZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuc3R5bGUuekluZGV4PSIiLHRoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fX2lzQW5pbWF0aW5nPSExLHRoaXMuZmlyZSgiaXJvbi1vdmVybGF5LWNsb3NlZCIsdGhpcy5jbG9zaW5nUmVhc29uKX0sX3ByZXBhcmVQb3NpdGlvbmluZzpmdW5jdGlvbigpe3RoaXMuc3R5bGUudHJhbnNpdGlvbj10aGlzLnN0eWxlLndlYmtpdFRyYW5zaXRpb249Im5vbmUiLHRoaXMuc3R5bGUudHJhbnNmb3JtPXRoaXMuc3R5bGUud2Via2l0VHJhbnNmb3JtPSJub25lIix0aGlzLnN0eWxlLmRpc3BsYXk9IiJ9LF9maW5pc2hQb3NpdGlvbmluZzpmdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5zdHlsZS50cmFuc2l0aW9uPXRoaXMuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0iIix0aGlzLnN0eWxlLnRyYW5zZm9ybT10aGlzLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0iIix0aGlzLnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3B9LF9hcHBseUZvY3VzOmZ1bmN0aW9uKCl7aWYodGhpcy5vcGVuZWQpdGhpcy5ub0F1dG9Gb2N1c3x8dGhpcy5fZm9jdXNOb2RlLmZvY3VzKCk7ZWxzZXtpZih0aGlzLnJlc3RvcmVGb2N1c09uQ2xvc2UmJnRoaXMuX19yZXN0b3JlRm9jdXNOb2RlKXt2YXIgdD10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50Oyh0PT09ZG9jdW1lbnQuYm9keXx8QWEodGhpcyx0KSkmJnRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCl9dGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9bnVsbCx0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX2ZvY3VzZWRDaGlsZD1udWxsfX0sX29uQ2FwdHVyZUNsaWNrOmZ1bmN0aW9uKHQpe3RoaXMubm9DYW5jZWxPbk91dHNpZGVDbGlja3x8dGhpcy5jYW5jZWwodCl9LF9vbkNhcHR1cmVGb2N1czpmdW5jdGlvbih0KXtpZih0aGlzLndpdGhCYWNrZHJvcCl7dmFyIGU9WWkodCkucGF0aDstMT09PWUuaW5kZXhPZih0aGlzKT8odC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9hcHBseUZvY3VzKCkpOnRoaXMuX2ZvY3VzZWRDaGlsZD1lWzBdfX0sX29uQ2FwdHVyZUVzYzpmdW5jdGlvbih0KXt0aGlzLm5vQ2FuY2VsT25Fc2NLZXl8fHRoaXMuY2FuY2VsKHQpfSxfb25DYXB0dXJlVGFiOmZ1bmN0aW9uKHQpe2lmKHRoaXMud2l0aEJhY2tkcm9wKXt0aGlzLl9fZW5zdXJlRmlyc3RMYXN0Rm9jdXNhYmxlcygpO3ZhciBlPXQuc2hpZnRLZXksbj1lP3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU6dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlLGk9ZT90aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU6dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZSxyPSExO2lmKG49PT1pKXI9ITA7ZWxzZXt2YXIgbz10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50O3I9bz09PW58fG89PT10aGlzfXImJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNlZENoaWxkPWksdGhpcy5fYXBwbHlGb2N1cygpKX19LF9vbklyb25SZXNpemU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMuX19pc0FuaW1hdGluZyYmdGhpcy5fX2RlcmFmKCJyZWZpdCIsdGhpcy5yZWZpdCl9LF9vbk5vZGVzQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLl9faXNBbmltYXRpbmcmJih0aGlzLmludmFsaWRhdGVUYWJiYWJsZXMoKSx0aGlzLm5vdGlmeVJlc2l6ZSgpKX0sX19lbnN1cmVGaXJzdExhc3RGb2N1c2FibGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZm9jdXNhYmxlTm9kZXM7dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZT10WzBdLHRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZT10W3QubGVuZ3RoLTFdfSxfX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD8odGhpcy5fcHJlcGFyZVJlbmRlck9wZW5lZCgpLHRoaXMuX21hbmFnZXIuYWRkT3ZlcmxheSh0aGlzKSx0aGlzLl9hcHBseUZvY3VzKCksdGhpcy5fcmVuZGVyT3BlbmVkKCkpOih0aGlzLl9tYW5hZ2VyLnJlbW92ZU92ZXJsYXkodGhpcyksdGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX3JlbmRlckNsb3NlZCgpKX0sX19kZXJhZjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX19yYWZzO251bGwhPT1uW3RdJiZjYW5jZWxBbmltYXRpb25GcmFtZShuW3RdKSxuW3RdPXJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiBpKCl7blt0XT1udWxsLGUuY2FsbCh0aGlzKX0uYmluZCh0aGlzKSl9LF9fdXBkYXRlU2Nyb2xsT2JzZXJ2ZXJzOmZ1bmN0aW9uKHQsZSxuKXt0JiZlJiZ0aGlzLl9faXNWYWxpZFNjcm9sbEFjdGlvbihuKT8oImxvY2siPT09biYmKHRoaXMuX19zYXZlU2Nyb2xsUG9zaXRpb24oKSxNYSh0aGlzKSksdGhpcy5fX2FkZFNjcm9sbExpc3RlbmVycygpKTooKGZ1bmN0aW9uIGkodCl7dmFyIGU9RWEuaW5kZXhPZih0KTstMSE9PWUmJihFYS5zcGxpY2UoZSwxKSx2YT1FYVtFYS5sZW5ndGgtMV0sMD09PUVhLmxlbmd0aCYmKGZ1bmN0aW9uIG4oKXtmb3IodmFyIHQ9MCxlPVNhLmxlbmd0aDt0PGU7dCsrKWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoU2FbdF0seWEse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfSkoKSl9KSh0aGlzKSx0aGlzLl9fcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzKCkpfSxfX2FkZFNjcm9sbExpc3RlbmVyczpmdW5jdGlvbigpe2lmKCF0aGlzLl9fcm9vdE5vZGVzKXtpZih0aGlzLl9fcm9vdE5vZGVzPVtdLG0pZm9yKHZhciB0PXRoaXM7dDspdC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmdC5ob3N0JiZ0aGlzLl9fcm9vdE5vZGVzLnB1c2godCksdD10Lmhvc3R8fHQuYXNzaWduZWRTbG90fHx0LnBhcmVudE5vZGU7dGhpcy5fX3Jvb3ROb2Rlcy5wdXNoKGRvY3VtZW50KX10aGlzLl9fcm9vdE5vZGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9fb25DYXB0dXJlU2Nyb2xsLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9KX0pLHRoaXMpfSxfX3JlbW92ZVNjcm9sbExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX19yb290Tm9kZXMmJnRoaXMuX19yb290Tm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSksdGhpcyksdGhpcy5pc0F0dGFjaGVkfHwodGhpcy5fX3Jvb3ROb2Rlcz1udWxsKX0sX19pc1ZhbGlkU2Nyb2xsQWN0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiJsb2NrIj09PXR8fCJyZWZpdCI9PT10fHwiY2FuY2VsIj09PXR9LF9fb25DYXB0dXJlU2Nyb2xsOmZ1bmN0aW9uKHQpe2lmKCEodGhpcy5fX2lzQW5pbWF0aW5nfHxZaSh0KS5wYXRoLmluZGV4T2YodGhpcyk+PTApKXN3aXRjaCh0aGlzLnNjcm9sbEFjdGlvbil7Y2FzZSJsb2NrIjp0aGlzLl9fcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7YnJlYWs7Y2FzZSJyZWZpdCI6dGhpcy5fX2RlcmFmKCJyZWZpdCIsdGhpcy5yZWZpdCk7YnJlYWs7Y2FzZSJjYW5jZWwiOnRoaXMuY2FuY2VsKHQpfX0sX19zYXZlU2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Pyh0aGlzLl9fc2Nyb2xsVG9wPWRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wLHRoaXMuX19zY3JvbGxMZWZ0PWRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsTGVmdCk6KHRoaXMuX19zY3JvbGxUb3A9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCksdGhpcy5fX3Njcm9sbExlZnQ9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSl9LF9fcmVzdG9yZVNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudD8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbFRvcCxkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbExlZnQ9dGhpcy5fX3Njcm9sbExlZnQpOihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wPWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxUb3AsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ9ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0PXRoaXMuX19zY3JvbGxMZWZ0KX19LEFhPSh0LGUpPT57Zm9yKGxldCBpPWU7aTtpPShuPWkpLmFzc2lnbmVkU2xvdHx8bi5wYXJlbnROb2RlfHxuLmhvc3QpaWYoaT09PXQpcmV0dXJuITA7dmFyIG47cmV0dXJuITF9LGthPVtwYSxnbyxDYV0sTGE9e2hvc3RBdHRyaWJ1dGVzOntyb2xlOiJkaWFsb2ciLHRhYmluZGV4OiItMSJ9LHByb3BlcnRpZXM6e21vZGFsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9fcmVhZGllZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sb2JzZXJ2ZXJzOlsiX21vZGFsQ2hhbmdlZChtb2RhbCwgX19yZWFkaWVkKSJdLGxpc3RlbmVyczp7dGFwOiJfb25EaWFsb2dDbGljayJ9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayx0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5LHRoaXMuX19wcmV2V2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wLHRoaXMuX19yZWFkaWVkPSEwfSxfbW9kYWxDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7ZSYmKHQ/KHRoaXMuX19wcmV2Tm9DYW5jZWxPbk91dHNpZGVDbGljaz10aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2ssdGhpcy5fX3ByZXZOb0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbkVzY0tleSx0aGlzLl9fcHJldldpdGhCYWNrZHJvcD10aGlzLndpdGhCYWNrZHJvcCx0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5ub0NhbmNlbE9uRXNjS2V5PSEwLHRoaXMud2l0aEJhY2tkcm9wPSEwKToodGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayYmdGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMubm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXkmJnRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleSx0aGlzLndpdGhCYWNrZHJvcD10aGlzLndpdGhCYWNrZHJvcCYmdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3ApKX0sX3VwZGF0ZUNsb3NpbmdSZWFzb25Db25maXJtZWQ6ZnVuY3Rpb24odCl7dGhpcy5jbG9zaW5nUmVhc29uPXRoaXMuY2xvc2luZ1JlYXNvbnx8e30sdGhpcy5jbG9zaW5nUmVhc29uLmNvbmZpcm1lZD10fSxfb25EaWFsb2dDbGljazpmdW5jdGlvbih0KXtmb3IodmFyIGU9WWkodCkucGF0aCxuPTAsaT1lLmluZGV4T2YodGhpcyk7bjxpO24rKyl7dmFyIHI9ZVtuXTtpZihyLmhhc0F0dHJpYnV0ZSYmKHIuaGFzQXR0cmlidXRlKCJkaWFsb2ctZGlzbWlzcyIpfHxyLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSkpe3RoaXMuX3VwZGF0ZUNsb3NpbmdSZWFzb25Db25maXJtZWQoci5oYXNBdHRyaWJ1dGUoImRpYWxvZy1jb25maXJtIikpLHRoaXMuY2xvc2UoKSx0LnN0b3BQcm9wYWdhdGlvbigpO2JyZWFrfX19fSxQYT1ba2EsTGFdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KaWYoCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIEBhcHBseSAtLWxheW91dC1yZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlzLXNjcm9sbGVkOm5vdCg6Zmlyc3QtY2hpbGQpKTo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYW4tc2Nyb2xsOm5vdCguc2Nyb2xsZWQtdG8tYm90dG9tKTpub3QoOmxhc3QtY2hpbGQpKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgLnNjcm9sbGFibGUgewogICAgICAgIHBhZGRpbmc6IDAgMjRweDsKCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXNjcm9sbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctc2Nyb2xsYWJsZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJzY3JvbGxhYmxlIiBjbGFzcz0ic2Nyb2xsYWJsZSIgb24tc2Nyb2xsPSJ1cGRhdGVTY3JvbGxTdGF0ZSI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSIscHJvcGVydGllczp7ZGlhbG9nRWxlbWVudDp7dHlwZTpPYmplY3R9fSxnZXQgc2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5zY3JvbGxhYmxlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHRoaXMuY2xhc3NMaXN0LmFkZCgibm8tcGFkZGluZyIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVNjcm9sbFN0YXRlLmJpbmQodGhpcykpfSx1cGRhdGVTY3JvbGxTdGF0ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ2xhc3MoImlzLXNjcm9sbGVkIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A+MCksdGhpcy50b2dnbGVDbGFzcygiY2FuLXNjcm9sbCIsdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0PHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbEhlaWdodCksdGhpcy50b2dnbGVDbGFzcygic2Nyb2xsZWQtdG8tYm90dG9tIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3ArdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxIZWlnaHQpfSxfZW5zdXJlVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5kaWFsb2dFbGVtZW50PXRoaXMuZGlhbG9nRWxlbWVudHx8dGhpcy5wYXJlbnRFbGVtZW50LHRoaXMuZGlhbG9nRWxlbWVudCYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycyYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycy5pbmRleE9mKExhKT49MD8odGhpcy5kaWFsb2dFbGVtZW50LnNpemluZ1RhcmdldD10aGlzLnNjcm9sbFRhcmdldCx0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJmaXQiKSk6dGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QuYWRkKCJmaXQiKX19KSwhd2luZG93LnBvbHltZXJTa2lwTG9hZGluZ0ZvbnRSb2JvdG8pe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpO3QucmVsPSJzdHlsZXNoZWV0Iix0LnR5cGU9InRleHQvY3NzIix0LmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHQuaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90bytNb25vOjQwMCw3MDB8Um9ib3RvOjQwMCwzMDAsMzAwaXRhbGljLDQwMGl0YWxpYyw1MDAsNTAwaXRhbGljLDcwMCw3MDBpdGFsaWMiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IE5hPV9lYDxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAvKiBTaGFyZWQgU3R5bGVzICovCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tYmFzZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ05vdG8nLCBzYW5zLXNlcmlmOwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsICdDb25zb2xhcycsICdNZW5sbycsIG1vbm9zcGFjZTsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tZXhwZW5zaXZlLWtlcm5pbmc6IHsKICAgICAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA6IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH07CgogICAgICAvKiBNYXRlcmlhbCBGb250IFN0eWxlcyAqLwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXk0OiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wNDRlbTsKICAgICAgICBsaW5lLWhlaWdodDogMTIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTM6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiA1NnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDI2ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDQ1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMThlbTsKICAgICAgICBsaW5lLWhlaWdodDogNDhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtaGVhZGxpbmU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDI0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMTJlbTsKICAgICAgICBsaW5lLWhlaWdodDogMzJweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC10aXRsZTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjhweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1zdWJoZWFkOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1ib2R5MTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNhcHRpb246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDExZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtbWVudTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1idXR0b246IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvZGUxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tY29kZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgfQoKICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO05hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoTmEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBJYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO0lhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLElhLmlubmVySFRNTD0nPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMjRweCA0MHB4O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWRpYWxvZy1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1ib2R5MTtcbiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwO1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2c7XG4gICAgICB9XG5cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCopIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgcGFkZGluZzogMCAyNHB4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICBcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKCo6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIEluIDEueCwgdGhpcyBzZWxlY3RvciB3YXMgYDpob3N0ID4gOjpjb250ZW50IGgyYC4gSW4gMi54IDxzbG90PiBhbGxvd3NcbiAgICAgIHRvIHNlbGVjdCBkaXJlY3QgY2hpbGRyZW4gb25seSwgd2hpY2ggaW5jcmVhc2VzIHRoZSB3ZWlnaHQgb2YgdGhpc1xuICAgICAgc2VsZWN0b3IsIHNvIHdlIGhhdmUgdG8gcmUtZGVmaW5lIGZpcnN0LWNoaWxkL2xhc3QtY2hpbGQgbWFyZ2lucyBiZWxvdy4gKi9cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtdGl0bGU7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgLyogQXBwbHkgbWl4aW4gYWdhaW4sIGluIGNhc2UgaXQgc2V0cyBtYXJnaW4tdG9wLiAqL1xuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDI6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi1ib3R0b20uICovXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLnBhcGVyLWRpYWxvZy1idXR0b25zKSxcbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKC5idXR0b25zKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMjRweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuXG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1kaWFsb2ctYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7XG5cbiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7XG4gICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKElhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgUmE9W3twcm9wZXJ0aWVzOnthbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxlbnRyeUFuaW1hdGlvbjp7b2JzZXJ2ZXI6Il9lbnRyeUFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfSxleGl0QW5pbWF0aW9uOntvYnNlcnZlcjoiX2V4aXRBbmltYXRpb25DaGFuZ2VkIix0eXBlOlN0cmluZ319LF9lbnRyeUFuaW1hdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvbkNvbmZpZz10aGlzLmFuaW1hdGlvbkNvbmZpZ3x8e30sdGhpcy5hbmltYXRpb25Db25maWcuZW50cnk9W3tuYW1lOnRoaXMuZW50cnlBbmltYXRpb24sbm9kZTp0aGlzfV19LF9leGl0QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5leGl0PVt7bmFtZTp0aGlzLmV4aXRBbmltYXRpb24sbm9kZTp0aGlzfV19LF9jb3B5UHJvcGVydGllczpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXtpc0Nsb25lOiEwfTtyZXR1cm4gdGhpcy5fY29weVByb3BlcnRpZXMoZSx0KSxlfSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZylpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlKXRoaXMuX3dhcm4odGhpcy5fbG9nZigicGxheUFuaW1hdGlvbiIsIlBsZWFzZSBwdXQgJ2FuaW1hdGlvbkNvbmZpZycgaW5zaWRlIG9mIHlvdXIgY29tcG9uZW50cyAncHJvcGVydGllcycgb2JqZWN0IGluc3RlYWQgb2Ygb3V0c2lkZSBvZiBpdC4iKSk7ZWxzZSBpZihpPXQ/dGhpcy5hbmltYXRpb25Db25maWdbdF06dGhpcy5hbmltYXRpb25Db25maWcsQXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKSxpKWZvcih2YXIgcixvPTA7cj1pW29dO28rKylpZihyLmFuaW1hdGFibGUpci5hbmltYXRhYmxlLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoci50eXBlfHx0LGUsbik7ZWxzZSBpZihyLmlkKXt2YXIgYT1lW3IuaWRdO2E/KGEuaXNDbG9uZXx8KGVbci5pZF09dGhpcy5fY2xvbmVDb25maWcoYSksYT1lW3IuaWRdKSx0aGlzLl9jb3B5UHJvcGVydGllcyhhLHIpKTplW3IuaWRdPXJ9ZWxzZSBuLnB1c2gocil9LGdldEFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbih0KXt2YXIgZT17fSxuPVtdO2Zvcih2YXIgaSBpbiB0aGlzLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUodCxlLG4pLGUpbi5wdXNoKGVbaV0pO3JldHVybiBufX0se19jb25maWd1cmVBbmltYXRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49W107aWYodC5sZW5ndGg+MClmb3IobGV0IGUsaT0wO2U9dFtpXTtpKyspe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZS5uYW1lKTtpZih0LmlzTmVvbkFuaW1hdGlvbil7bGV0IGk9bnVsbDt0LmNvbmZpZ3VyZXx8KHQuY29uZmlndXJlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSksaT10LmNvbmZpZ3VyZShlKSxuLnB1c2goe3Jlc3VsdDppLGNvbmZpZzplLG5lb25BbmltYXRpb246dH0pfWVsc2UgY29uc29sZS53YXJuKHRoaXMuaXMrIjoiLGUubmFtZSwibm90IGZvdW5kISIpfWZvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgdD1uW2ldLnJlc3VsdCxyPW5baV0uY29uZmlnLG89bltpXS5uZW9uQW5pbWF0aW9uO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgdC5jYW5jZWwmJih0PWRvY3VtZW50LnRpbWVsaW5lLnBsYXkodCkpfWNhdGNoKGUpe3Q9bnVsbCxjb25zb2xlLndhcm4oIkNvdWxkbnQgcGxheSIsIigiLHIubmFtZSwiKS4iLGUpfXQmJmUucHVzaCh7bmVvbkFuaW1hdGlvbjpvLGNvbmZpZzpyLGFuaW1hdGlvbjp0fSl9cmV0dXJuIGV9LF9zaG91bGRDb21wbGV0ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9ITAsbj0wO248dC5sZW5ndGg7bisrKWlmKCJmaW5pc2hlZCIhPXRbbl0uYW5pbWF0aW9uLnBsYXlTdGF0ZSl7ZT0hMTticmVha31yZXR1cm4gZX0sX2NvbXBsZXRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0ubmVvbkFuaW1hdGlvbi5jb21wbGV0ZSh0W2VdLmNvbmZpZyk7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdLmFuaW1hdGlvbi5jYW5jZWwoKX0scGxheUFuaW1hdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QW5pbWF0aW9uQ29uZmlnKHQpO2lmKG4pe3RoaXMuX2FjdGl2ZT10aGlzLl9hY3RpdmV8fHt9LHRoaXMuX2FjdGl2ZVt0XSYmKHRoaXMuX2NvbXBsZXRlKHRoaXMuX2FjdGl2ZVt0XSksZGVsZXRlIHRoaXMuX2FjdGl2ZVt0XSk7dmFyIGk9dGhpcy5fY29uZmlndXJlQW5pbWF0aW9ucyhuKTtpZigwIT1pLmxlbmd0aCl7dGhpcy5fYWN0aXZlW3RdPWk7Zm9yKHZhciByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5hbmltYXRpb24ub25maW5pc2g9ZnVuY3Rpb24oKXt0aGlzLl9zaG91bGRDb21wbGV0ZShpKSYmKHRoaXMuX2NvbXBsZXRlKGkpLGRlbGV0ZSB0aGlzLl9hY3RpdmVbdF0sdGhpcy5maXJlKCJuZW9uLWFuaW1hdGlvbi1maW5pc2giLGUse2J1YmJsZXM6ITF9KSl9LmJpbmQodGhpcyl9ZWxzZSB0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZSx7YnViYmxlczohMX0pfX0sY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX2FjdGl2ZSl7dmFyIGU9dGhpcy5fYWN0aXZlW3RdO2Zvcih2YXIgbiBpbiBlKWVbbl0uYW5pbWF0aW9uLmNhbmNlbCgpfXRoaXMuX2FjdGl2ZT17fX19XTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1kaWFsb2ciLGJlaGF2aW9yczpbUGEsUmFdLGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLnBsYXlBbmltYXRpb24oImVudHJ5Iil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMucGxheUFuaW1hdGlvbigiZXhpdCIpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBPYT1Scih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBjbGlwOiByZWN0KDBweCwwcHgsMHB4LDBweCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGFyaWEtbGl2ZSQ9IltbbW9kZV1dIj5bW190ZXh0XV08L2Rpdj4KYCxpczoiaXJvbi1hMTF5LWFubm91bmNlciIscHJvcGVydGllczp7bW9kZTp7dHlwZTpTdHJpbmcsdmFsdWU6InBvbGl0ZSJ9LHRpbWVvdXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjE1MH0sX3RleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sY3JlYXRlZDpmdW5jdGlvbigpe09hLmluc3RhbmNlfHwoT2EuaW5zdGFuY2U9dGhpcyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1hbm5vdW5jZSIsdGhpcy5fb25Jcm9uQW5ub3VuY2UuYmluZCh0aGlzKSl9LGFubm91bmNlOmZ1bmN0aW9uKHQpe3RoaXMuX3RleHQ9IiIsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLl90ZXh0PXR9KSx0aGlzLnRpbWVvdXQpfSxfb25Jcm9uQW5ub3VuY2U6ZnVuY3Rpb24odCl7dC5kZXRhaWwmJnQuZGV0YWlsLnRleHQmJnRoaXMuYW5ub3VuY2UodC5kZXRhaWwudGV4dCl9fSk7T2EuaW5zdGFuY2U9bnVsbCxPYS5yZXF1ZXN0QXZhaWxhYmlsaXR5PWZ1bmN0aW9uKCl7T2EuaW5zdGFuY2V8fChPYS5pbnN0YW5jZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpcm9uLWExMXktYW5ub3VuY2VyIikpLGRvY3VtZW50LmJvZHk/ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChPYS5pbnN0YW5jZSk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChPYS5pbnN0YW5jZSl9KSl9LAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzbG90IGlkPSJjb250ZW50Ij48L3Nsb3Q+CmAsaXM6Imlyb24taW5wdXQiLGJlaGF2aW9yczpbYWFdLHByb3BlcnRpZXM6e2JpbmRWYWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LHZhbHVlOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVWYWx1ZShiaW5kVmFsdWUpIn0sYWxsb3dlZFBhdHRlcm46e3R5cGU6U3RyaW5nfSxhdXRvVmFsaWRhdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2lucHV0RWxlbWVudDpPYmplY3R9LG9ic2VydmVyczpbIl9iaW5kVmFsdWVDaGFuZ2VkKGJpbmRWYWx1ZSwgX2lucHV0RWxlbWVudCkiXSxsaXN0ZW5lcnM6e2lucHV0OiJfb25JbnB1dCIsa2V5cHJlc3M6Il9vbktleXByZXNzIn0sY3JlYXRlZDpmdW5jdGlvbigpe09hLnJlcXVlc3RBdmFpbGFiaWxpdHkoKSx0aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQ9IiIsdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSExfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPVlpKHRoaXMpLm9ic2VydmVOb2RlcyhmdW5jdGlvbih0KXt0aGlzLl9pbml0U2xvdHRlZElucHV0KCl9LmJpbmQodGhpcykpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiYoWWkodGhpcykudW5vYnNlcnZlTm9kZXModGhpcy5fb2JzZXJ2ZXIpLHRoaXMuX29ic2VydmVyPW51bGwpfSxnZXQgaW5wdXRFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudH0sX2luaXRTbG90dGVkSW5wdXQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnB1dEVsZW1lbnQ9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpWzBdLHRoaXMuaW5wdXRFbGVtZW50JiZ0aGlzLmlucHV0RWxlbWVudC52YWx1ZSYmKHRoaXMuYmluZFZhbHVlPXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlKSx0aGlzLmZpcmUoImlyb24taW5wdXQtcmVhZHkiKX0sZ2V0IF9wYXR0ZXJuUmVnRXhwKCl7dmFyIHQ7aWYodGhpcy5hbGxvd2VkUGF0dGVybil0PW5ldyBSZWdFeHAodGhpcy5hbGxvd2VkUGF0dGVybik7ZWxzZSBzd2l0Y2godGhpcy5pbnB1dEVsZW1lbnQudHlwZSl7Y2FzZSJudW1iZXIiOnQ9L1swLTkuLGUtXS99cmV0dXJuIHR9LF9iaW5kVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7ZSYmKHZvaWQgMD09PXQ/ZS52YWx1ZT1udWxsOnQhPT1lLnZhbHVlJiYodGhpcy5pbnB1dEVsZW1lbnQudmFsdWU9dCksdGhpcy5hdXRvVmFsaWRhdGUmJnRoaXMudmFsaWRhdGUoKSx0aGlzLmZpcmUoImJpbmQtdmFsdWUtY2hhbmdlZCIse3ZhbHVlOnR9KSl9LF9vbklucHV0OmZ1bmN0aW9uKCl7dGhpcy5hbGxvd2VkUGF0dGVybiYmIXRoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZCYmKHRoaXMuX2NoZWNrUGF0dGVyblZhbGlkaXR5KCl8fCh0aGlzLl9hbm5vdW5jZUludmFsaWRDaGFyYWN0ZXIoIkludmFsaWQgc3RyaW5nIG9mIGNoYXJhY3RlcnMgbm90IGVudGVyZWQuIiksdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU9dGhpcy5fcHJldmlvdXNWYWxpZElucHV0KSksdGhpcy5iaW5kVmFsdWU9dGhpcy5fcHJldmlvdXNWYWxpZElucHV0PXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLHRoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0hMX0sX2lzUHJpbnRhYmxlOmZ1bmN0aW9uKHQpe3JldHVybiEoOD09dC5rZXlDb2RlfHw5PT10LmtleUNvZGV8fDEzPT10LmtleUNvZGV8fDI3PT10LmtleUNvZGV8fDA9PXQuY2hhckNvZGUmJigxOT09dC5rZXlDb2RlfHwyMD09dC5rZXlDb2RlfHw0NT09dC5rZXlDb2RlfHw0Nj09dC5rZXlDb2RlfHwxNDQ9PXQua2V5Q29kZXx8MTQ1PT10LmtleUNvZGV8fHQua2V5Q29kZT4zMiYmdC5rZXlDb2RlPDQxfHx0LmtleUNvZGU+MTExJiZ0LmtleUNvZGU8MTI0KSl9LF9vbktleXByZXNzOmZ1bmN0aW9uKHQpe2lmKHRoaXMuYWxsb3dlZFBhdHRlcm58fCJudW1iZXIiPT09dGhpcy5pbnB1dEVsZW1lbnQudHlwZSl7dmFyIGU9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZihlJiYhKHQubWV0YUtleXx8dC5jdHJsS2V5fHx0LmFsdEtleSkpe3RoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0hMDt2YXIgbj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuY2hhckNvZGUpO3RoaXMuX2lzUHJpbnRhYmxlKHQpJiYhZS50ZXN0KG4pJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcigiSW52YWxpZCBjaGFyYWN0ZXIgIituKyIgbm90IGVudGVyZWQuIikpfX19LF9jaGVja1BhdHRlcm5WYWxpZGl0eTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhdHRlcm5SZWdFeHA7aWYoIXQpcmV0dXJuITA7Zm9yKHZhciBlPTA7ZTx0aGlzLmlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7ZSsrKWlmKCF0LnRlc3QodGhpcy5pbnB1dEVsZW1lbnQudmFsdWVbZV0pKXJldHVybiExO3JldHVybiEwfSx2YWxpZGF0ZTpmdW5jdGlvbigpe2lmKCF0aGlzLmlucHV0RWxlbWVudClyZXR1cm4gdGhpcy5pbnZhbGlkPSExLCEwO3ZhciB0PXRoaXMuaW5wdXRFbGVtZW50LmNoZWNrVmFsaWRpdHkoKTtyZXR1cm4gdCYmKHRoaXMucmVxdWlyZWQmJiIiPT09dGhpcy5iaW5kVmFsdWU/dD0hMTp0aGlzLmhhc1ZhbGlkYXRvcigpJiYodD1hYS52YWxpZGF0ZS5jYWxsKHRoaXMsdGhpcy5iaW5kVmFsdWUpKSksdGhpcy5pbnZhbGlkPSF0LHRoaXMuZmlyZSgiaXJvbi1pbnB1dC12YWxpZGF0ZSIpLHR9LF9hbm5vdW5jZUludmFsaWRDaGFyYWN0ZXI6ZnVuY3Rpb24odCl7dGhpcy5maXJlKCJpcm9uLWFubm91bmNlIix7dGV4dDp0fSl9LF9jb21wdXRlVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB6YT17YXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImFkZG9uLWF0dGFjaGVkIil9LHVwZGF0ZTpmdW5jdGlvbih0KXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmbG9hdDogcmlnaHQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jaGFyLWNvdW50ZXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICA6aG9zdCg6ZGlyKHJ0bCkpIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c3Bhbj5bW19jaGFyQ291bnRlclN0cl1dPC9zcGFuPgpgLGlzOiJwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIiLGJlaGF2aW9yczpbemFdLHByb3BlcnRpZXM6e19jaGFyQ291bnRlclN0cjp7dHlwZTpTdHJpbmcsdmFsdWU6IjAifX0sdXBkYXRlOmZ1bmN0aW9uKHQpe2lmKHQuaW5wdXRFbGVtZW50KXt0LnZhbHVlPXQudmFsdWV8fCIiO3ZhciBlPXQudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgudG9TdHJpbmcoKTt0LmlucHV0RWxlbWVudC5oYXNBdHRyaWJ1dGUoIm1heGxlbmd0aCIpJiYoZSs9Ii8iK3QuaW5wdXRFbGVtZW50LmdldEF0dHJpYnV0ZSgibWF4bGVuZ3RoIikpLHRoaXMuX2NoYXJDb3VudGVyU3RyPWV9fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgRGE9X2VgCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CiAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogdG8gbWFrZSBhIHN0YWNraW5nIGNvbnRleHQgKi8KICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWFsaWduLCBib3R0b20pOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7RGEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChEYS5jb250ZW50KSxScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyOwogICAgICB9CgogICAgICA6aG9zdChbaW5saW5lXSkgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDAuMzM7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5mbG9hdGVkLWxhYmVsLXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNhcHRpb247CiAgICAgIH0KCiAgICAgIC51bmRlcmxpbmUgewogICAgICAgIGhlaWdodDogMnB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAsMSwxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMCwxLDEpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItdW5kZXJsaW5lLWZvY3VzOwogICAgICB9CgogICAgICAudW5kZXJsaW5lLmlzLWhpZ2hsaWdodGVkIC5mb2N1c2VkLWxpbmUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1czsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdHJhbnNpdGlvbi1lYXNpbmc7CiAgICAgIH0KCiAgICAgIC51bmRlcmxpbmUuaXMtaW52YWxpZCAuZm9jdXNlZC1saW5lIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1czsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdHJhbnNpdGlvbi1lYXNpbmc7CiAgICAgIH0KCiAgICAgIC51bmZvY3VzZWQtbGluZSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC51bmZvY3VzZWQtbGluZSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZDsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItdW5kZXJsaW5lLWRpc2FibGVkOwogICAgICB9CgogICAgICAuaW5wdXQtd3JhcHBlciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLWxheW91dC1yZWxhdGl2ZTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXMsIHdpZHRoIDAuMjVzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cywgd2lkdGggMC4yNXM7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDsKICAgICAgICAvKiBGaXggZm9yIHNhZmFyaSBub3QgZm9jdXNpbmcgMC1oZWlnaHQgZGF0ZS90aW1lIGlucHV0cyB3aXRoIC13ZWJraXQtYXBwZXJhbmNlOiBub25lOyAqLwogICAgICAgIG1pbi1oZWlnaHQ6IDFweDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdHJhbnNpdGlvbi1lYXNpbmc7CiAgICAgIH0KCgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQobGFiZWwpOmJlZm9yZSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCk6YmVmb3JlIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtYmVmb3JlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQobGFiZWwpOmFmdGVyLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKTphZnRlciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsLWFmdGVyOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTc1JSkgc2NhbGUoMC43NSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03NSUpIHNjYWxlKDAuNzUpOwoKICAgICAgICAvKiBTaW5jZSB3ZSBzY2FsZSB0byA3NS8xMDAgb2YgdGhlIHNpemUsIHdlIGFjdHVhbGx5IGhhdmUgMTAwLzc1IG9mIHRoZQogICAgICAgIG9yaWdpbmFsIHNwYWNlIG5vdyBhdmFpbGFibGUgKi8KICAgICAgICB3aWR0aDogMTMzJTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsLWZsb2F0aW5nOwogICAgICB9CgogICAgICA6aG9zdCg6ZGlyKHJ0bCkpIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIDpob3N0KDpkaXIocnRsKSkgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IGF1dG87CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtZm9jdXM7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWRkZW4gOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtaGlkZGVuIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlyb24tYXV0b2dyb3ctdGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTsKICAgICAgICAvKiBUaGUgYXBwbHkgc2hpbSBkb2Vzbid0IGFwcGx5IHRoZSBuZXN0ZWQgY29sb3IgY3VzdG9tIHByb3BlcnR5LAogICAgICAgICAgc28gd2UgaGF2ZSB0byByZS1hcHBseSBpdCBoZXJlLiAqLwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1zcGlubmVyOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZChpbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZCh0ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlyb24tYXV0b2dyb3ctdGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtZm9jdXM7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1pbnZhbGlkOwogICAgICB9CgogICAgICAucHJlZml4IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1ub25lOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LXByZWZpeDsKICAgICAgfQoKICAgICAgLnN1ZmZpeCA6OnNsb3R0ZWQoKikgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtbm9uZTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtc3VmZml4OwogICAgICB9CgogICAgICAvKiBGaXJlZm94IHNldHMgYSBtaW4td2lkdGggb24gdGhlIGlucHV0LCB3aGljaCBjYW4gY2F1c2UgbGF5b3V0IGlzc3VlcyAqLwogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpIHsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCh0ZXh0YXJlYSkgewogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQuaXMtaGlnaGxpZ2h0ZWQgOjpzbG90dGVkKCopIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iZmxvYXRlZC1sYWJlbC1wbGFjZWhvbGRlciIgYXJpYS1oaWRkZW49InRydWUiIGhpZGRlbj0iW1tub0xhYmVsRmxvYXRdXSI+Jm5ic3A7PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmVmaXgiPjxzbG90IG5hbWU9InByZWZpeCI+PC9zbG90Pjwvc3Bhbj4KCiAgICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlSW5wdXRDb250ZW50Q2xhc3Mobm9MYWJlbEZsb2F0LGFsd2F5c0Zsb2F0TGFiZWwsZm9jdXNlZCxpbnZhbGlkLF9pbnB1dEhhc0NvbnRlbnQpXV0iIGlkPSJsYWJlbEFuZElucHV0Q29udGFpbmVyIj4KICAgICAgICA8c2xvdCBuYW1lPSJsYWJlbCI+PC9zbG90PgogICAgICAgIDxzbG90IG5hbWU9ImlucHV0Ij48L3Nsb3Q+CiAgICAgIDwvZGl2PgoKICAgICAgPHNwYW4gY2xhc3M9InN1ZmZpeCI+PHNsb3QgbmFtZT0ic3VmZml4Ij48L3Nsb3Q+PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVVbmRlcmxpbmVDbGFzcyhmb2N1c2VkLGludmFsaWQpXV0iPgogICAgICA8ZGl2IGNsYXNzPSJ1bmZvY3VzZWQtbGluZSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZvY3VzZWQtbGluZSI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZUFkZE9uQ29udGVudENsYXNzKGZvY3VzZWQsaW52YWxpZCldXSI+CiAgICAgIDxzbG90IG5hbWU9ImFkZC1vbiI+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLWlucHV0LWNvbnRhaW5lciIscHJvcGVydGllczp7bm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXR0ckZvclZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiYmluZC12YWx1ZSJ9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbnZhbGlkOntvYnNlcnZlcjoiX2ludmFsaWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZvY3VzZWQ6e3JlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LF9hZGRvbnM6e3R5cGU6QXJyYXl9LF9pbnB1dEhhc0NvbnRlbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2lucHV0U2VsZWN0b3I6e3R5cGU6U3RyaW5nLHZhbHVlOiJpbnB1dCxpcm9uLWlucHV0LHRleHRhcmVhLC5wYXBlci1pbnB1dC1pbnB1dCJ9LF9ib3VuZE9uRm9jdXM6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpfX0sX2JvdW5kT25CbHVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQmx1ci5iaW5kKHRoaXMpfX0sX2JvdW5kT25JbnB1dDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbklucHV0LmJpbmQodGhpcyl9fSxfYm91bmRWYWx1ZUNoYW5nZWQ6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25WYWx1ZUNoYW5nZWQuYmluZCh0aGlzKX19fSxsaXN0ZW5lcnM6eyJhZGRvbi1hdHRhY2hlZCI6Il9vbkFkZG9uQXR0YWNoZWQiLCJpcm9uLWlucHV0LXZhbGlkYXRlIjoiX29uSXJvbklucHV0VmFsaWRhdGUifSxnZXQgX3ZhbHVlQ2hhbmdlZEV2ZW50KCl7cmV0dXJuIHRoaXMuYXR0ckZvclZhbHVlKyItY2hhbmdlZCJ9LGdldCBfcHJvcGVydHlGb3JWYWx1ZSgpe3JldHVybiBzdCh0aGlzLmF0dHJGb3JWYWx1ZSl9LGdldCBfaW5wdXRFbGVtZW50KCl7cmV0dXJuIFlpKHRoaXMpLnF1ZXJ5U2VsZWN0b3IodGhpcy5faW5wdXRTZWxlY3Rvcil9LGdldCBfaW5wdXRFbGVtZW50VmFsdWUoKXtyZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50W3RoaXMuX3Byb3BlcnR5Rm9yVmFsdWVdfHx0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWV9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fX2lzRmlyc3RWYWx1ZVVwZGF0ZT0hMCx0aGlzLl9hZGRvbnN8fCh0aGlzLl9hZGRvbnM9W10pLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kT25Gb2N1cywhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZE9uQmx1ciwhMCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5hdHRyRm9yVmFsdWU/dGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fdmFsdWVDaGFuZ2VkRXZlbnQsdGhpcy5fYm91bmRWYWx1ZUNoYW5nZWQpOnRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLHRoaXMuX29uSW5wdXQpLHRoaXMuX2lucHV0RWxlbWVudFZhbHVlJiYiIiE9dGhpcy5faW5wdXRFbGVtZW50VmFsdWU/dGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUodGhpcy5faW5wdXRFbGVtZW50KTp0aGlzLl9oYW5kbGVWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQpfSxfb25BZGRvbkF0dGFjaGVkOmZ1bmN0aW9uKHQpe3RoaXMuX2FkZG9uc3x8KHRoaXMuX2FkZG9ucz1bXSk7dmFyIGU9dC50YXJnZXQ7LTE9PT10aGlzLl9hZGRvbnMuaW5kZXhPZihlKSYmKHRoaXMuX2FkZG9ucy5wdXNoKGUpLHRoaXMuaXNBdHRhY2hlZCYmdGhpcy5faGFuZGxlVmFsdWUodGhpcy5faW5wdXRFbGVtZW50KSl9LF9vbkZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Rm9jdXNlZCghMCl9LF9vbkJsdXI6ZnVuY3Rpb24oKXt0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnQpfSxfb25JbnB1dDpmdW5jdGlvbih0KXt0aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0LnRhcmdldCl9LF9vblZhbHVlQ2hhbmdlZDpmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldDt0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlJiYodGhpcy5fX2lzRmlyc3RWYWx1ZVVwZGF0ZT0hMSx2b2lkIDA9PT1lLnZhbHVlfHwiIj09PWUudmFsdWUpfHx0aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0LnRhcmdldCl9LF9oYW5kbGVWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZTt0aGlzLl9pbnB1dEhhc0NvbnRlbnQ9ISghZSYmMCE9PWUmJigibnVtYmVyIiE9PXQudHlwZXx8dC5jaGVja1ZhbGlkaXR5KCkpKSx0aGlzLnVwZGF0ZUFkZG9ucyh7aW5wdXRFbGVtZW50OnQsdmFsdWU6ZSxpbnZhbGlkOnRoaXMuaW52YWxpZH0pfSxfaGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGU6ZnVuY3Rpb24odCl7dmFyIGU7dGhpcy5hdXRvVmFsaWRhdGUmJnQmJihlPXQudmFsaWRhdGU/dC52YWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZSk6dC5jaGVja1ZhbGlkaXR5KCksdGhpcy5pbnZhbGlkPSFlKSx0aGlzLl9oYW5kbGVWYWx1ZSh0KX0sX29uSXJvbklucHV0VmFsaWRhdGU6ZnVuY3Rpb24odCl7dGhpcy5pbnZhbGlkPXRoaXMuX2lucHV0RWxlbWVudC5pbnZhbGlkfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hZGRvbnMmJnRoaXMudXBkYXRlQWRkb25zKHtpbnZhbGlkOnRoaXMuaW52YWxpZH0pfSx1cGRhdGVBZGRvbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MDtlPXRoaXMuX2FkZG9uc1tuXTtuKyspZS51cGRhdGUodCl9LF9jb21wdXRlSW5wdXRDb250ZW50Q2xhc3M6ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz0iaW5wdXQtY29udGVudCI7aWYodClyJiYobys9IiBsYWJlbC1pcy1oaWRkZW4iKSxpJiYobys9IiBpcy1pbnZhbGlkIik7ZWxzZXt2YXIgYT10aGlzLnF1ZXJ5U2VsZWN0b3IoImxhYmVsIik7ZXx8cj8obys9IiBsYWJlbC1pcy1mbG9hdGluZyIsdGhpcy4kLmxhYmVsQW5kSW5wdXRDb250YWluZXIuc3R5bGUucG9zaXRpb249InN0YXRpYyIsaT9vKz0iIGlzLWludmFsaWQiOm4mJihvKz0iIGxhYmVsLWlzLWhpZ2hsaWdodGVkIikpOihhJiYodGhpcy4kLmxhYmVsQW5kSW5wdXRDb250YWluZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaSYmKG8rPSIgaXMtaW52YWxpZCIpKX1yZXR1cm4gbiYmKG8rPSIgZm9jdXNlZCIpLG99LF9jb21wdXRlVW5kZXJsaW5lQ2xhc3M6ZnVuY3Rpb24odCxlKXt2YXIgbj0idW5kZXJsaW5lIjtyZXR1cm4gZT9uKz0iIGlzLWludmFsaWQiOnQmJihuKz0iIGlzLWhpZ2hsaWdodGVkIiksbn0sX2NvbXB1dGVBZGRPbkNvbnRlbnRDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSJhZGQtb24tY29udGVudCI7cmV0dXJuIGU/bis9IiBpcy1pbnZhbGlkIjp0JiYobis9IiBpcy1oaWdobGlnaHRlZCIpLG59fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNhcHRpb247CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtZXJyb3I7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6MDsKICAgICAgICByaWdodDowOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pIHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICB9CgogICAgICAjYTExeVdyYXBwZXIgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAjYTExeVdyYXBwZXIgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPCEtLQogICAgSWYgdGhlIHBhcGVyLWlucHV0LWVycm9yIGVsZW1lbnQgaXMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbgogICAgXGBhcmlhLWRlc2NyaWJlZGJ5XGAgYXR0cmlidXRlLCBzdWNoIGFzIHdoZW4gdXNlZCBhcyBhIHBhcGVyLWlucHV0IGFkZC1vbiwKICAgIHRoZW4gYXBwbHlpbmcgXGB2aXNpYmlsaXR5OiBoaWRkZW47XGAgdG8gdGhlIHBhcGVyLWlucHV0LWVycm9yIGVsZW1lbnQgaXRzZWxmCiAgICBkb2VzIG5vdCBoaWRlIHRoZSBlcnJvci4KCiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlOgogICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2FjY25hbWUtMS4xLyNtYXBwaW5nX2FkZGl0aW9uYWxfbmRfZGVzY3JpcHRpb24KICAgIC0tPgogICAgPGRpdiBpZD0iYTExeVdyYXBwZXIiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaW5wdXQtZXJyb3IiLGJlaGF2aW9yczpbemFdLHByb3BlcnRpZXM6e2ludmFsaWQ6e3JlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx0eXBlOkJvb2xlYW59fSx1cGRhdGU6ZnVuY3Rpb24odCl7dGhpcy5fc2V0SW52YWxpZCh0LmludmFsaWQpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgQmE9e05leHRMYWJlbElEOjEsTmV4dEFkZG9uSUQ6MSxOZXh0SW5wdXRJRDoxfSxIYT17cHJvcGVydGllczp7bGFiZWw6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7bm90aWZ5OiEwLHR5cGU6U3RyaW5nfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbnZhbGlkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LHR5cGU6e3R5cGU6U3RyaW5nfSxsaXN0Ont0eXBlOlN0cmluZ30scGF0dGVybjp7dHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGVycm9yTWVzc2FnZTp7dHlwZTpTdHJpbmd9LGNoYXJDb3VudGVyOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vTGFiZWxGbG9hdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbHdheXNGbG9hdExhYmVsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSx2YWxpZGF0b3I6e3R5cGU6U3RyaW5nfSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2F1dG9mb2N1c0NoYW5nZWQifSxpbnB1dG1vZGU6e3R5cGU6U3RyaW5nfSxtaW5sZW5ndGg6e3R5cGU6TnVtYmVyfSxtYXhsZW5ndGg6e3R5cGU6TnVtYmVyfSxtaW46e3R5cGU6U3RyaW5nfSxtYXg6e3R5cGU6U3RyaW5nfSxzdGVwOnt0eXBlOlN0cmluZ30sbmFtZTp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0scmVhZG9ubHk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2l6ZTp7dHlwZTpOdW1iZXJ9LGF1dG9jYXBpdGFsaXplOnt0eXBlOlN0cmluZyx2YWx1ZToibm9uZSJ9LGF1dG9jb3JyZWN0Ont0eXBlOlN0cmluZyx2YWx1ZToib2ZmIn0sYXV0b3NhdmU6e3R5cGU6U3RyaW5nfSxyZXN1bHRzOnt0eXBlOk51bWJlcn0sYWNjZXB0Ont0eXBlOlN0cmluZ30sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbn0sX2FyaWFEZXNjcmliZWRCeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LF9hcmlhTGFiZWxsZWRCeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LF9pbnB1dElkOnt0eXBlOlN0cmluZyx2YWx1ZToiIn19LGxpc3RlbmVyczp7ImFkZG9uLWF0dGFjaGVkIjoiX29uQWRkb25BdHRhY2hlZCJ9LGtleUJpbmRpbmdzOnsic2hpZnQrdGFiOmtleWRvd24iOiJfb25TaGlmdFRhYkRvd24ifSxob3N0QXR0cmlidXRlczp7dGFiaW5kZXg6MH0sZ2V0IGlucHV0RWxlbWVudCgpe3JldHVybiB0aGlzLiR8fCh0aGlzLiQ9e30pLHRoaXMuJC5pbnB1dHx8KHRoaXMuX2dlbmVyYXRlSW5wdXRJZCgpLHRoaXMuJC5pbnB1dD10aGlzLiQkKCIjIit0aGlzLl9pbnB1dElkKSksdGhpcy4kLmlucHV0fSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnR9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90eXBlc1RoYXRIYXZlVGV4dD1bImRhdGUiLCJkYXRldGltZSIsImRhdGV0aW1lLWxvY2FsIiwibW9udGgiLCJ0aW1lIiwid2VlayIsImZpbGUiXX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpLCF5ZSYmdGhpcy5pbnB1dEVsZW1lbnQmJi0xIT09dGhpcy5fdHlwZXNUaGF0SGF2ZVRleHQuaW5kZXhPZih0aGlzLmlucHV0RWxlbWVudC50eXBlKSYmKHRoaXMuYWx3YXlzRmxvYXRMYWJlbD0hMCl9LF9hcHBlbmRTdHJpbmdXaXRoU3BhY2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD90KyIgIitlOmV9LF9vbkFkZG9uQXR0YWNoZWQ6ZnVuY3Rpb24odCl7dmFyIGU9WWkodCkucm9vdFRhcmdldDtpZihlLmlkKXRoaXMuX2FyaWFEZXNjcmliZWRCeT10aGlzLl9hcHBlbmRTdHJpbmdXaXRoU3BhY2UodGhpcy5fYXJpYURlc2NyaWJlZEJ5LGUuaWQpO2Vsc2V7dmFyIG49InBhcGVyLWlucHV0LWFkZC1vbi0iK0JhLk5leHRBZGRvbklEKys7ZS5pZD1uLHRoaXMuX2FyaWFEZXNjcmliZWRCeT10aGlzLl9hcHBlbmRTdHJpbmdXaXRoU3BhY2UodGhpcy5fYXJpYURlc2NyaWJlZEJ5LG4pfX0sdmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudmFsaWRhdGUoKX0sX2ZvY3VzQmx1ckhhbmRsZXI6ZnVuY3Rpb24odCl7cW8uX2ZvY3VzQmx1ckhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuZm9jdXNlZCYmIXRoaXMuX3NoaWZ0VGFiUHJlc3NlZCYmdGhpcy5fZm9jdXNhYmxlRWxlbWVudCYmdGhpcy5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfSxfb25TaGlmdFRhYkRvd246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik7dGhpcy5fc2hpZnRUYWJQcmVzc2VkPSEwLHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLGUpLHRoaXMuX3NoaWZ0VGFiUHJlc3NlZD0hMX0pLDEpfSxfaGFuZGxlQXV0b1ZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhpcy5hdXRvVmFsaWRhdGUmJnRoaXMudmFsaWRhdGUoKX0sdXBkYXRlVmFsdWVBbmRQcmVzZXJ2ZUNhcmV0OmZ1bmN0aW9uKHQpe3RyeXt2YXIgZT10aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDt0aGlzLnZhbHVlPXQsdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ9ZSx0aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ9ZX1jYXRjaChlKXt0aGlzLnZhbHVlPXR9fSxfY29tcHV0ZUFsd2F5c0Zsb2F0TGFiZWw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8dH0sX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5OmZ1bmN0aW9uKCl7dmFyIHQsZT1ZaSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3IoImxhYmVsIik7ZT8oZS5pZD90PWUuaWQ6KHQ9InBhcGVyLWlucHV0LWxhYmVsLSIrQmEuTmV4dExhYmVsSUQrKyxlLmlkPXQpLHRoaXMuX2FyaWFMYWJlbGxlZEJ5PXQpOnRoaXMuX2FyaWFMYWJlbGxlZEJ5PSIifSxfZ2VuZXJhdGVJbnB1dElkOmZ1bmN0aW9uKCl7dGhpcy5faW5wdXRJZCYmIiIhPT10aGlzLl9pbnB1dElkfHwodGhpcy5faW5wdXRJZD0iaW5wdXQtIitCYS5OZXh0SW5wdXRJRCsrKX0sX29uQ2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMuc2hhZG93Um9vdCYmdGhpcy5maXJlKHQudHlwZSx7c291cmNlRXZlbnQ6dH0se25vZGU6dGhpcyxidWJibGVzOnQuYnViYmxlcyxjYW5jZWxhYmxlOnQuY2FuY2VsYWJsZX0pfSxfYXV0b2ZvY3VzQ2hhbmdlZDpmdW5jdGlvbigpe2lmKHRoaXMuYXV0b2ZvY3VzJiZ0aGlzLl9mb2N1c2FibGVFbGVtZW50KXt2YXIgdD1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3QgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdCE9PWRvY3VtZW50LmJvZHkmJnQhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKX19fSxGYT1bcW8sem8sSGFdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe2lzOiJwYXBlci1pbnB1dCIsX3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0KFtmb2N1c2VkXSkgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBpbnB1dCB7CiAgICAgICAgLyogRmlyZWZveCBzZXRzIGEgbWluLXdpZHRoIG9uIHRoZSBpbnB1dCwgd2hpY2ggY2FuIGNhdXNlIGxheW91dCBpc3N1ZXMgKi8KICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC8qIEluIDEueCwgdGhlIDxpbnB1dD4gaXMgZGlzdHJpYnV0ZWQgdG8gcGFwZXItaW5wdXQtY29udGFpbmVyLCB3aGljaCBzdHlsZXMgaXQuCiAgICAgIEluIDIueCB0aGUgPGlyb24taW5wdXQ+IGlzIGRpc3RyaWJ1dGVkIHRvIHBhcGVyLWlucHV0LWNvbnRhaW5lciwgd2hpY2ggc3R5bGVzCiAgICAgIGl0LCBidXQgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHksIHdlIG5lZWQgdG8gcmVzZXQgc29tZQogICAgICBvZiB0aGUgbmF0aXZlIGlucHV0J3MgcHJvcGVydGllcyB0byBpbmhlcml0IChmcm9tIHRoZSBpcm9uLWlucHV0KSAqLwogICAgICBpcm9uLWlucHV0ID4gaW5wdXQgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGU7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgICAgIGxldHRlci1zcGFjaW5nOiBpbmhlcml0OwogICAgICAgIHdvcmQtc3BhY2luZzogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LXNoYWRvdzogaW5oZXJpdDsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBjdXJzb3I6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIGlucHV0OmRpc2FibGVkIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgICBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1zcGlubmVyOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1jbGVhci1idXR0b24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtY2xlYXI7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDo6LW1zLWNsZWFyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbXMtY2xlYXI7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbXMtcmV2ZWFsIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbXMtcmV2ZWFsOwogICAgICB9CgogICAgICBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGxhYmVsIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaW5wdXQtY29udGFpbmVyIGlkPSJjb250YWluZXIiIG5vLWxhYmVsLWZsb2F0PSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPHNsb3QgbmFtZT0icHJlZml4IiBzbG90PSJwcmVmaXgiPjwvc2xvdD4KCiAgICAgIDxsYWJlbCBoaWRkZW4kPSJbWyFsYWJlbF1dIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9yJD0iW1tfaW5wdXRJZF1dIiBzbG90PSJsYWJlbCI+W1tsYWJlbF1dPC9sYWJlbD4KCiAgICAgIDwhLS0gTmVlZCB0byBiaW5kIG1heGxlbmd0aCBzbyB0aGF0IHRoZSBwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgd29ya3MgY29ycmVjdGx5IC0tPgogICAgICA8aXJvbi1pbnB1dCBiaW5kLXZhbHVlPSJ7e3ZhbHVlfX0iIHNsb3Q9ImlucHV0IiBjbGFzcz0iaW5wdXQtZWxlbWVudCIgaWQkPSJbW19pbnB1dElkXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iIGFsbG93ZWQtcGF0dGVybj0iW1thbGxvd2VkUGF0dGVybl1dIiBpbnZhbGlkPSJ7e2ludmFsaWR9fSIgdmFsaWRhdG9yPSJbW3ZhbGlkYXRvcl1dIj4KICAgICAgICA8aW5wdXQgYXJpYS1sYWJlbGxlZGJ5JD0iW1tfYXJpYUxhYmVsbGVkQnldXSIgYXJpYS1kZXNjcmliZWRieSQ9IltbX2FyaWFEZXNjcmliZWRCeV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgdGl0bGUkPSJbW3RpdGxlXV0iIHR5cGUkPSJbW3R5cGVdXSIgcGF0dGVybiQ9IltbcGF0dGVybl1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgbWluJD0iW1ttaW5dXSIgbWF4JD0iW1ttYXhdXSIgc3RlcCQ9Iltbc3RlcF1dIiBuYW1lJD0iW1tuYW1lXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgbGlzdCQ9IltbbGlzdF1dIiBzaXplJD0iW1tzaXplXV0iIGF1dG9jYXBpdGFsaXplJD0iW1thdXRvY2FwaXRhbGl6ZV1dIiBhdXRvY29ycmVjdCQ9IltbYXV0b2NvcnJlY3RdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiIHRhYmluZGV4JD0iW1t0YWJJbmRleF1dIiBhdXRvc2F2ZSQ9IltbYXV0b3NhdmVdXSIgcmVzdWx0cyQ9IltbcmVzdWx0c11dIiBhY2NlcHQkPSJbW2FjY2VwdF1dIiBtdWx0aXBsZSQ9IltbbXVsdGlwbGVdXSIgcm9sZSQ9IltbaW5wdXRSb2xlXV0iIGFyaWEtaGFzcG9wdXAkPSJbW2lucHV0QXJpYUhhc3BvcHVwXV0iPgogICAgICA8L2lyb24taW5wdXQ+CgogICAgICA8c2xvdCBuYW1lPSJzdWZmaXgiIHNsb3Q9InN1ZmZpeCI+PC9zbG90PgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Vycm9yTWVzc2FnZV1dIj4KICAgICAgICA8cGFwZXItaW5wdXQtZXJyb3IgYXJpYS1saXZlPSJhc3NlcnRpdmUiIHNsb3Q9ImFkZC1vbiI+W1tlcnJvck1lc3NhZ2VdXTwvcGFwZXItaW5wdXQtZXJyb3I+CiAgICAgIDwvdGVtcGxhdGU+CgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbY2hhckNvdW50ZXJdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWNoYXItY291bnRlciBzbG90PSJhZGQtb24iPjwvcGFwZXItaW5wdXQtY2hhci1jb3VudGVyPgogICAgICA8L3RlbXBsYXRlPgoKICAgIDwvcGFwZXItaW5wdXQtY29udGFpbmVyPgogIGAsYmVoYXZpb3JzOltGYSxyYV0scHJvcGVydGllczp7dmFsdWU6e3R5cGU6U3RyaW5nfSxpbnB1dFJvbGU6e3R5cGU6U3RyaW5nLHZhbHVlOnZvaWQgMH0saW5wdXRBcmlhSGFzcG9wdXA6e3R5cGU6U3RyaW5nLHZhbHVlOnZvaWQgMH19LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudC5faW5wdXRFbGVtZW50fSxsaXN0ZW5lcnM6eyJpcm9uLWlucHV0LXJlYWR5IjoiX29uSXJvbklucHV0UmVhZHkifSxfb25Jcm9uSW5wdXRSZWFkeTpmdW5jdGlvbigpe3RoaXMuJC5uYXRpdmVJbnB1dHx8KHRoaXMuJC5uYXRpdmVJbnB1dD10aGlzLiQkKCJpbnB1dCIpKSx0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuJC5uYXRpdmVJbnB1dC50eXBlKSYmKHRoaXMuYWx3YXlzRmxvYXRMYWJlbD0hMCksdGhpcy5pbnB1dEVsZW1lbnQuYmluZFZhbHVlJiZ0aGlzLiQuY29udGFpbmVyLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLmlucHV0RWxlbWVudCl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB9CgogICAgICAjY29udGVudFdyYXBwZXIgOjpzbG90dGVkKCopIHsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgI2NvbnRlbnRXcmFwcGVyLmFuaW1hdGluZyA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iY29udGVudFdyYXBwZXIiPgogICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6Imlyb24tZHJvcGRvd24iLGJlaGF2aW9yczpbcW8sem8sa2EsUmFdLHByb3BlcnRpZXM6e2hvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImxlZnQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InRvcCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxvcGVuQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdH0sY2xvc2VBbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxmb2N1c1RhcmdldDp7dHlwZTpPYmplY3R9LG5vQW5pbWF0aW9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2FsbG93T3V0c2lkZVNjcm9sbENoYW5nZWQifX0sbGlzdGVuZXJzOnsibmVvbi1hbmltYXRpb24tZmluaXNoIjoiX29uTmVvbkFuaW1hdGlvbkZpbmlzaCJ9LG9ic2VydmVyczpbIl91cGRhdGVPdmVybGF5UG9zaXRpb24ocG9zaXRpb25UYXJnZXQsIHZlcnRpY2FsQWxpZ24sIGhvcml6b250YWxBbGlnbiwgdmVydGljYWxPZmZzZXQsIGhvcml6b250YWxPZmZzZXQpIl0sZ2V0IGNvbnRhaW5lZEVsZW1lbnQoKXtmb3IodmFyIHQ9WWkodGhpcy4kLmNvbnRlbnQpLmdldERpc3RyaWJ1dGVkTm9kZXMoKSxlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWlmKHRbZV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gdFtlXX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEFjdGlvbnx8KHRoaXMuc2Nyb2xsQWN0aW9uPXRoaXMuYWxsb3dPdXRzaWRlU2Nyb2xsPyJyZWZpdCI6ImxvY2siKSx0aGlzLl9yZWFkaWVkPSEwfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuc2l6aW5nVGFyZ2V0JiZ0aGlzLnNpemluZ1RhcmdldCE9PXRoaXN8fCh0aGlzLnNpemluZ1RhcmdldD10aGlzLmNvbnRhaW5lZEVsZW1lbnR8fHRoaXMpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuY2FuY2VsQW5pbWF0aW9uKCl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuZGlzYWJsZWQ/dGhpcy5jYW5jZWwoKToodGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLl91cGRhdGVBbmltYXRpb25Db25maWcoKSxDYS5fb3BlbmVkQ2hhbmdlZC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7IXRoaXMubm9BbmltYXRpb25zJiZ0aGlzLmFuaW1hdGlvbkNvbmZpZy5vcGVuPyh0aGlzLiQuY29udGVudFdyYXBwZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIiksdGhpcy5wbGF5QW5pbWF0aW9uKCJvcGVuIikpOkNhLl9yZW5kZXJPcGVuZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfcmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7IXRoaXMubm9BbmltYXRpb25zJiZ0aGlzLmFuaW1hdGlvbkNvbmZpZy5jbG9zZT8odGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5hZGQoImFuaW1hdGluZyIpLHRoaXMucGxheUFuaW1hdGlvbigiY2xvc2UiKSk6Q2EuX3JlbmRlckNsb3NlZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9vbk5lb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLiQuY29udGVudFdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0aW5nIiksdGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9LF91cGRhdGVBbmltYXRpb25Db25maWc6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5jb250YWluZWRFbGVtZW50LGU9W10uY29uY2F0KHRoaXMub3BlbkFuaW1hdGlvbkNvbmZpZ3x8W10pLmNvbmNhdCh0aGlzLmNsb3NlQW5pbWF0aW9uQ29uZmlnfHxbXSksbj0wO248ZS5sZW5ndGg7bisrKWVbbl0ubm9kZT10O3RoaXMuYW5pbWF0aW9uQ29uZmlnPXtvcGVuOnRoaXMub3BlbkFuaW1hdGlvbkNvbmZpZyxjbG9zZTp0aGlzLmNsb3NlQW5pbWF0aW9uQ29uZmlnfX0sX3VwZGF0ZU92ZXJsYXlQb3NpdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNBdHRhY2hlZCYmdGhpcy5ub3RpZnlSZXNpemUoKX0sX2FsbG93T3V0c2lkZVNjcm9sbENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVhZGllZCYmKHQ/dGhpcy5zY3JvbGxBY3Rpb24mJiJsb2NrIiE9PXRoaXMuc2Nyb2xsQWN0aW9ufHwodGhpcy5zY3JvbGxBY3Rpb249InJlZml0Iik6dGhpcy5zY3JvbGxBY3Rpb249ImxvY2siKX0sX2FwcGx5Rm9jdXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmZvY3VzVGFyZ2V0fHx0aGlzLmNvbnRhaW5lZEVsZW1lbnQ7dCYmdGhpcy5vcGVuZWQmJiF0aGlzLm5vQXV0b0ZvY3VzP3QuZm9jdXMoKTpDYS5fYXBwbHlGb2N1cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBWYT17cHJvcGVydGllczp7YW5pbWF0aW9uVGltaW5nOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkdXJhdGlvbjo1MDAsZWFzaW5nOiJjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIixmaWxsOiJib3RoIn19fX0saXNOZW9uQW5pbWF0aW9uOiEwLGNyZWF0ZWQ6ZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFuaW1hdGV8fGNvbnNvbGUud2FybigiTm8gd2ViIGFuaW1hdGlvbnMgZGV0ZWN0ZWQuIFRoaXMgZWxlbWVudCB3aWxsIG5vdCBmdW5jdGlvbiB3aXRob3V0IGEgd2ViIGFuaW1hdGlvbnMgcG9seWZpbGwuIil9LHRpbWluZ0Zyb21Db25maWc6ZnVuY3Rpb24odCl7aWYodC50aW1pbmcpZm9yKHZhciBlIGluIHQudGltaW5nKXRoaXMuYW5pbWF0aW9uVGltaW5nW2VdPXQudGltaW5nW2VdO3JldHVybiB0aGlzLmFuaW1hdGlvblRpbWluZ30sc2V0UHJlZml4ZWRQcm9wZXJ0eTpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpLHI9e3RyYW5zZm9ybTpbIndlYmtpdFRyYW5zZm9ybSJdLHRyYW5zZm9ybU9yaWdpbjpbIm1velRyYW5zZm9ybU9yaWdpbiIsIndlYmtpdFRyYW5zZm9ybU9yaWdpbiJdfVtlXSxvPTA7aT1yW29dO28rKyl0LnN0eWxlW2ldPW47dC5zdHlsZVtlXT1ufSxjb21wbGV0ZTpmdW5jdGlvbih0KXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovUnIoe2lzOiJmYWRlLWluLWFuaW1hdGlvbiIsYmVoYXZpb3JzOltWYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQubm9kZSxbe29wYWNpdHk6IjAifSx7b3BhY2l0eToiMSJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtpczoiZmFkZS1vdXQtYW5pbWF0aW9uIixiZWhhdmlvcnM6W1ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QodC5ub2RlLFt7b3BhY2l0eToiMSJ9LHtvcGFjaXR5OiIwIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe2lzOiJwYXBlci1tZW51LWdyb3ctaGVpZ2h0LWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltWYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGUsW3toZWlnaHQ6bi8yKyJweCJ9LHtoZWlnaHQ6bisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksUnIoe2lzOiJwYXBlci1tZW51LWdyb3ctd2lkdGgtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W1ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7d2lkdGg6bi8yKyJweCJ9LHt3aWR0aDpuKyJweCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSxScih7aXM6InBhcGVyLW1lbnUtc2hyaW5rLXdpZHRoLWFuaW1hdGlvbiIsX3RlbXBsYXRlOm51bGwsYmVoYXZpb3JzOltWYV0sY29uZmlndXJlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubm9kZSxuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZSxbe3dpZHRoOm4rInB4In0se3dpZHRoOm4tbi8yMCsicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksUnIoe2lzOiJwYXBlci1tZW51LXNocmluay1oZWlnaHQtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W1ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7cmV0dXJuIHRoaXMuc2V0UHJlZml4ZWRQcm9wZXJ0eShlLCJ0cmFuc2Zvcm1PcmlnaW4iLCIwIDAiKSx0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGUsW3toZWlnaHQ6bisicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9LHtoZWlnaHQ6bi8yKyJweCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yMHB4KSJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBVYT17QU5JTUFUSU9OX0NVQklDX0JFWklFUjoiY3ViaWMtYmV6aWVyKC4zLC45NSwuNSwxKSIsTUFYX0FOSU1BVElPTl9USU1FX01TOjQwMH07Y29uc3QgamE9UnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgY3Vyc29yOiBhdXRvOwogICAgICAgIGNvbG9yOiB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWVudS1idXR0b24tZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIGlyb24tZHJvcGRvd24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWRyb3Bkb3duOwogICAgICB9CgogICAgICAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItbWVudS1idXR0b24tZHJvcGRvd24tYmFja2dyb3VuZCwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWNvbnRlbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbC1hbGlnbj0idG9wIl0pIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgIHRvcDogMTBweDsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZlcnRpY2FsLWFsaWduPSJib3R0b20iXSkgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIGJvdHRvbTogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTBweDsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICB9CgogICAgICAjdHJpZ2dlciB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InRyaWdnZXIiIG9uLXRhcD0idG9nZ2xlIj4KICAgICAgPHNsb3QgbmFtZT0iZHJvcGRvd24tdHJpZ2dlciI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGlyb24tZHJvcGRvd24gaWQ9ImRyb3Bkb3duIiBvcGVuZWQ9Int7b3BlbmVkfX0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIHZlcnRpY2FsLWFsaWduPSJbW3ZlcnRpY2FsQWxpZ25dXSIgZHluYW1pYy1hbGlnbj0iW1tkeW5hbWljQWxpZ25dXSIgaG9yaXpvbnRhbC1vZmZzZXQ9IltbaG9yaXpvbnRhbE9mZnNldF1dIiB2ZXJ0aWNhbC1vZmZzZXQ9IltbdmVydGljYWxPZmZzZXRdXSIgbm8tb3ZlcmxhcD0iW1tub092ZXJsYXBdXSIgb3Blbi1hbmltYXRpb24tY29uZmlnPSJbW29wZW5BbmltYXRpb25Db25maWddXSIgY2xvc2UtYW5pbWF0aW9uLWNvbmZpZz0iW1tjbG9zZUFuaW1hdGlvbkNvbmZpZ11dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBmb2N1cy10YXJnZXQ9IltbX2Ryb3Bkb3duQ29udGVudF1dIiBhbGxvdy1vdXRzaWRlLXNjcm9sbD0iW1thbGxvd091dHNpZGVTY3JvbGxdXSIgcmVzdG9yZS1mb2N1cy1vbi1jbG9zZT0iW1tyZXN0b3JlRm9jdXNPbkNsb3NlXV0iIG9uLWlyb24tb3ZlcmxheS1jYW5jZWxlZD0iX19vbklyb25PdmVybGF5Q2FuY2VsZWQiIGV4cGFuZC1zaXppbmctdGFyZ2V0LWZvci1zY3JvbGxiYXJzPSJbW2V4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnNdXSI+CiAgICAgIDxkaXYgc2xvdD0iZHJvcGRvd24tY29udGVudCIgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgIDxzbG90IGlkPSJjb250ZW50IiBuYW1lPSJkcm9wZG93bi1jb250ZW50Ij48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgPC9pcm9uLWRyb3Bkb3duPgpgLGlzOiJwYXBlci1tZW51LWJ1dHRvbiIsYmVoYXZpb3JzOlt6byxxb10scHJvcGVydGllczp7b3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImxlZnQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InRvcCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0saG9yaXpvbnRhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHZlcnRpY2FsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sbm9PdmVybGFwOnt0eXBlOkJvb2xlYW59LG5vQW5pbWF0aW9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpZ25vcmVTZWxlY3Q6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sY2xvc2VPbkFjdGl2YXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG9wZW5BbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW3tuYW1lOiJmYWRlLWluLWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246MjAwfX0se25hbWU6InBhcGVyLW1lbnUtZ3Jvdy13aWR0aC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjE1MCxlYXNpbmc6VWEuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19LHtuYW1lOiJwYXBlci1tZW51LWdyb3ctaGVpZ2h0LWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246Mjc1LGVhc2luZzpVYS5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX1dfX0sY2xvc2VBbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW3tuYW1lOiJmYWRlLW91dC1hbmltYXRpb24iLHRpbWluZzp7ZHVyYXRpb246MTUwfX0se25hbWU6InBhcGVyLW1lbnUtc2hyaW5rLXdpZHRoLWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246NTAsZWFzaW5nOlVhLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fSx7bmFtZToicGFwZXItbWVudS1zaHJpbmstaGVpZ2h0LWFuaW1hdGlvbiIsdGltaW5nOntkdXJhdGlvbjoyMDAsZWFzaW5nOiJlYXNlLWluIn19XX19LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2Ryb3Bkb3duQ29udGVudDp7dHlwZTpPYmplY3R9fSxob3N0QXR0cmlidXRlczp7cm9sZToiZ3JvdXAiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSJ9LGxpc3RlbmVyczp7Imlyb24tYWN0aXZhdGUiOiJfb25Jcm9uQWN0aXZhdGUiLCJpcm9uLXNlbGVjdCI6Il9vbklyb25TZWxlY3QifSxnZXQgY29udGVudEVsZW1lbnQoKXtmb3IodmFyIHQ9WWkodGhpcy4kLmNvbnRlbnQpLmdldERpc3RyaWJ1dGVkTm9kZXMoKSxlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWlmKHRbZV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gdFtlXX0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5jbG9zZSgpOnRoaXMub3BlbigpfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZHx8dGhpcy4kLmRyb3Bkb3duLm9wZW4oKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLiQuZHJvcGRvd24uY2xvc2UoKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLmlnbm9yZVNlbGVjdHx8dGhpcy5jbG9zZSgpfSxfb25Jcm9uQWN0aXZhdGU6ZnVuY3Rpb24odCl7dGhpcy5jbG9zZU9uQWN0aXZhdGUmJnRoaXMuY2xvc2UoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0Pyh0aGlzLl9kcm9wZG93bkNvbnRlbnQ9dGhpcy5jb250ZW50RWxlbWVudCx0aGlzLmZpcmUoInBhcGVyLWRyb3Bkb3duLW9wZW4iKSk6bnVsbCE9ZSYmdGhpcy5maXJlKCJwYXBlci1kcm9wZG93bi1jbG9zZSIpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3FvLl9kaXNhYmxlZENoYW5nZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQmJnRoaXMub3BlbmVkJiZ0aGlzLmNsb3NlKCl9LF9fb25Jcm9uT3ZlcmxheUNhbmNlbGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJC50cmlnZ2VyO1lpKHQuZGV0YWlsKS5wYXRoLmluZGV4T2YoZSk+LTEmJnQucHJldmVudERlZmF1bHQoKX19KTtPYmplY3Qua2V5cyhVYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7amFbdF09VWFbdF19KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBHYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO0dhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLEdhLmlubmVySFRNTD0nPGlyb24taWNvbnNldC1zdmcgbmFtZT0icGFwZXItZHJvcGRvd24tbWVudSIgc2l6ZT0iMjQiPlxuPHN2Zz48ZGVmcz5cbjxnIGlkPSJhcnJvdy1kcm9wLWRvd24iPjxwYXRoIGQ9Ik03IDEwbDUgNSA1LTV6Ij48L3BhdGg+PC9nPlxuPC9kZWZzPjwvc3ZnPlxuPC9pcm9uLWljb25zZXQtc3ZnPicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChHYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFdhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7V2Euc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksV2EuaW5uZXJIVE1MPSc8ZG9tLW1vZHVsZSBpZD0icGFwZXItZHJvcGRvd24tbWVudS1zaGFyZWQtc3R5bGVzIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgLyogTk9URShjZGF0YSk6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlXG4gICAgICAgICAqIHZhbHVlIHRvIGJlIGB0cmFuc3BhcmVudGAuXG4gICAgICAgICAqL1xuICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7XG4gICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHtcbiAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9O1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnU7XG4gICAgICB9XG5cbiAgICAgIC8qIHBhcGVyLWRyb3Bkb3duLW1lbnUgYW5kIHBhcGVyLWRyb3Bkb3duLW1lbnUtbGlnaHQgYm90aCBkZWxlZ2F0ZSBmb2N1c1xuICAgICAgICogdG8gb3RoZXIgaW50ZXJuYWwgZWxlbWVudHMgd2hpY2ggbWFuYWdlIGZvY3VzIHN0eWxpbmcuICovXG4gICAgICA6aG9zdCg6Zm9jdXMpIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoOmRpcihydGwpKSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgIEBhcHBseSgtLXBhcGVyLWRyb3Bkb3duLW1lbnUpO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbZGlzYWJsZWRdKSB7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtub2lua10pIHBhcGVyLXJpcHBsZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtuby1sYWJlbC1mbG9hdF0pIHBhcGVyLXJpcHBsZSB7XG4gICAgICAgIHRvcDogOHB4O1xuICAgICAgfVxuXG4gICAgICBwYXBlci1yaXBwbGUge1xuICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgIGxlZnQ6IDBweDtcbiAgICAgICAgYm90dG9tOiA4cHg7XG4gICAgICAgIHJpZ2h0OiAwcHg7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1yaXBwbGU7XG4gICAgICB9XG5cbiAgICAgIHBhcGVyLW1lbnUtYnV0dG9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1idXR0b247XG4gICAgICB9XG5cbiAgICAgIHBhcGVyLWlucHV0IHtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1pbnB1dDtcbiAgICAgIH1cblxuICAgICAgaXJvbi1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaWNvbjtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChXYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHFhPWVyKEhUTUxFbGVtZW50KTtScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWRyb3Bkb3duLW1lbnUtc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KCiAgICA8cGFwZXItbWVudS1idXR0b24gaWQ9Im1lbnVCdXR0b24iIHZlcnRpY2FsLWFsaWduPSJbW3ZlcnRpY2FsQWxpZ25dXSIgaG9yaXpvbnRhbC1hbGlnbj0iW1tob3Jpem9udGFsQWxpZ25dXSIgZHluYW1pYy1hbGlnbj0iW1tkeW5hbWljQWxpZ25dXSIgdmVydGljYWwtb2Zmc2V0PSJbW19jb21wdXRlTWVudVZlcnRpY2FsT2Zmc2V0KG5vTGFiZWxGbG9hdCwgdmVydGljYWxPZmZzZXQpXV0iIGRpc2FibGVkPSJbW2Rpc2FibGVkXV0iIG5vLWFuaW1hdGlvbnM9Iltbbm9BbmltYXRpb25zXV0iIG9uLWlyb24tc2VsZWN0PSJfb25Jcm9uU2VsZWN0IiBvbi1pcm9uLWRlc2VsZWN0PSJfb25Jcm9uRGVzZWxlY3QiIG9wZW5lZD0ie3tvcGVuZWR9fSIgY2xvc2Utb24tYWN0aXZhdGUgYWxsb3ctb3V0c2lkZS1zY3JvbGw9IltbYWxsb3dPdXRzaWRlU2Nyb2xsXV0iIHJlc3RvcmUtZm9jdXMtb24tY2xvc2U9IltbcmVzdG9yZUZvY3VzT25DbG9zZV1dIiBleHBhbmQtc2l6aW5nLXRhcmdldC1mb3Itc2Nyb2xsYmFycz0iW1tleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzXV0iPgogICAgICA8IS0tIHN1cHBvcnQgaHlicmlkIG1vZGU6IHVzZXIgbWlnaHQgYmUgdXNpbmcgcGFwZXItbWVudS1idXR0b24gMS54IHdoaWNoIGRpc3RyaWJ1dGVzIHZpYSA8Y29udGVudD4gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiPgogICAgICAgIDxwYXBlci1yaXBwbGU+PC9wYXBlci1yaXBwbGU+CiAgICAgICAgPCEtLSBwYXBlci1pbnB1dCBoYXMgdHlwZT0idGV4dCIgZm9yIGExMXksIGRvIG5vdCByZW1vdmUgLS0+CiAgICAgICAgPHBhcGVyLWlucHV0IGlkPSJpbnB1dCIgdHlwZT0idGV4dCIgaW52YWxpZD0iW1tpbnZhbGlkXV0iIHJlYWRvbmx5IGRpc2FibGVkPSJbW2Rpc2FibGVkXV0iIHZhbHVlPSJbW3ZhbHVlXV0iIHBsYWNlaG9sZGVyPSJbW3BsYWNlaG9sZGVyXV0iIGVycm9yLW1lc3NhZ2U9IltbZXJyb3JNZXNzYWdlXV0iIGFsd2F5cy1mbG9hdC1sYWJlbD0iW1thbHdheXNGbG9hdExhYmVsXV0iIG5vLWxhYmVsLWZsb2F0PSJbW25vTGFiZWxGbG9hdF1dIiBsYWJlbD0iW1tsYWJlbF1dIiBpbnB1dC1yb2xlPSJidXR0b24iIGlucHV0LWFyaWEtaGFzcG9wdXA9Imxpc3Rib3giIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgICAgIDwhLS0gc3VwcG9ydCBoeWJyaWQgbW9kZTogdXNlciBtaWdodCBiZSB1c2luZyBwYXBlci1pbnB1dCAxLnggd2hpY2ggZGlzdHJpYnV0ZXMgdmlhIDxjb250ZW50PiAtLT4KICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0icGFwZXItZHJvcGRvd24tbWVudTphcnJvdy1kcm9wLWRvd24iIHN1ZmZpeCBzbG90PSJzdWZmaXgiPjwvaXJvbi1pY29uPgogICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgIDwvZGl2PgogICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgPC9wYXBlci1tZW51LWJ1dHRvbj4KYCxpczoicGFwZXItZHJvcGRvd24tbWVudSIsYmVoYXZpb3JzOltYbyxxbyxyYSxhYV0scHJvcGVydGllczp7c2VsZWN0ZWRJdGVtTGFiZWw6e3R5cGU6U3RyaW5nLG5vdGlmeTohMCxyZWFkT25seTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZE9ubHk6ITB9LHZhbHVlOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LGxhYmVsOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nfSxlcnJvck1lc3NhZ2U6e3R5cGU6U3RyaW5nfSxvcGVuZWQ6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsdmFsdWU6ITEsb2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIn0sYWxsb3dPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vTGFiZWxGbG9hdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToicmlnaHQifSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToidG9wIn0sdmVydGljYWxPZmZzZXQ6TnVtYmVyLGR5bmFtaWNBbGlnbjp7dHlwZTpCb29sZWFufSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7dGFwOiJfb25UYXAifSxrZXlCaW5kaW5nczp7InVwIGRvd24iOiJvcGVuIixlc2M6ImNsb3NlIn0sb2JzZXJ2ZXJzOlsiX3NlbGVjdGVkSXRlbUNoYW5nZWQoc2VsZWN0ZWRJdGVtKSJdLF9hdHRhY2hEb20odCl7Y29uc3QgZT1ZKHRoaXMpO3JldHVybiBlLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiIsZGVsZWdhdGVzRm9jdXM6ITAsc2hhZHlVcGdyYWRlRnJhZ21lbnQ6dH0pLGUuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0KSxxYS5wcm90b3R5cGUuX2F0dGFjaERvbS5jYWxsKHRoaXMsdCl9LGZvY3VzKCl7dGhpcy4kLmlucHV0Ll9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZW50RWxlbWVudDt0JiZ0LnNlbGVjdGVkSXRlbSYmdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQuc2VsZWN0ZWRJdGVtKX0sZ2V0IGNvbnRlbnRFbGVtZW50KCl7Zm9yKHZhciB0PVlpKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpZih0W2VdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHRbZV19LG9wZW46ZnVuY3Rpb24oKXt0aGlzLiQubWVudUJ1dHRvbi5vcGVuKCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy4kLm1lbnVCdXR0b24uY2xvc2UoKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLl9zZXRTZWxlY3RlZEl0ZW0odC5kZXRhaWwuaXRlbSl9LF9vbklyb25EZXNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLl9zZXRTZWxlY3RlZEl0ZW0obnVsbCl9LF9vblRhcDpmdW5jdGlvbih0KXtkaSh0KT09PXRoaXMmJnRoaXMub3BlbigpfSxfc2VsZWN0ZWRJdGVtQ2hhbmdlZDpmdW5jdGlvbih0KXt2YXIgZTtlPXQ/dC5sYWJlbHx8dC5nZXRBdHRyaWJ1dGUoImxhYmVsIil8fHQudGV4dENvbnRlbnQudHJpbSgpOiIiLHRoaXMudmFsdWU9ZSx0aGlzLl9zZXRTZWxlY3RlZEl0ZW1MYWJlbChlKX0sX2NvbXB1dGVNZW51VmVydGljYWxPZmZzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8KHQ/LTQ6OCl9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMucmVxdWlyZWR8fHRoaXMucmVxdWlyZWQmJiEhdGhpcy52YWx1ZX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRlbnRFbGVtZW50O3QmJnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIix0aGlzLm9wZW5lZD8idHJ1ZSI6ImZhbHNlIil9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgWWE9e291dGVyU2Nyb2xsOntzY3JvbGw6ITB9LHNoYWRvd01vZGU6e3N0YW5kYXJkOjIsd2F0ZXJmYWxsOjEsIndhdGVyZmFsbC10YWxsIjoxfSx0YWxsTW9kZTp7IndhdGVyZmFsbC10YWxsIjohMH19O1JyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWw7CiAgICAgIH0KCiAgICAgICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICB9CgogICAgICAjbWFpblBhbmVsIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWJvZHk7CiAgICAgIH0KCiAgICAgICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtY29udGFpbmVyOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBzY3JvbGwKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXNjcm9sbF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc2Nyb2xsLWNvbnRhaW5lcjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoW21vZGU9c2Nyb2xsXSkgewogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogY292ZXIKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPWNvdmVyXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1jb3Zlci1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgOmhvc3QoW21vZGU9Y292ZXJdKSAjbWFpblBhbmVsIHsKICAgICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBzdGFuZGFyZAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c3RhbmRhcmRdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXN0YW5kYXJkLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc2VhbWVkCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zZWFtZWRdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXNlYW1lZC1jb250YWluZXI7CiAgICAgIH0KCgogICAgICAvKgogICAgICAgKiBtb2RlOiB3YXRlcmZhbGwKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXdhdGVyZmFsbF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtd2F0ZXJmYWxsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogd2F0ZXJmYWxsLXRhbGwKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXdhdGVyZmFsbC10YWxsXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC13YXRlcmZhbGwtdGFsbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICNkcm9wU2hhZG93IHsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXM7CiAgICAgICAgaGVpZ2h0OiA2cHg7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXNoYWRvdzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgI2Ryb3BTaGFkb3cuaGFzLXNoYWRvdyB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgI21haW5Db250YWluZXIgPiA6OnNsb3R0ZWQoLmZpdCkgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICA8L3N0eWxlPgoKICAgIDxzbG90IGlkPSJoZWFkZXJTbG90IiBuYW1lPSJoZWFkZXIiPjwvc2xvdD4KCiAgICA8ZGl2IGlkPSJtYWluUGFuZWwiPgogICAgICA8ZGl2IGlkPSJtYWluQ29udGFpbmVyIiBjbGFzc1wkPSJbW19jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzKG1vZGUpXV0iPgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImRyb3BTaGFkb3ciPjwvZGl2PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLWhlYWRlci1wYW5lbCIscHJvcGVydGllczp7bW9kZTp7dHlwZTpTdHJpbmcsdmFsdWU6InN0YW5kYXJkIixvYnNlcnZlcjoiX21vZGVDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHNoYWRvdzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSx0YWxsQ2xhc3M6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YWxsIn0sYXRUb3A6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0sb2JzZXJ2ZXJzOlsiX2NvbXB1dGVEcm9wU2hhZG93SGlkZGVuKGF0VG9wLCBtb2RlLCBzaGFkb3cpIl0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hZGRMaXN0ZW5lcigpLHRoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUxpc3RlbmVyKCl9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxIYW5kbGVyPXRoaXMuX3Njcm9sbC5iaW5kKHRoaXMpLGNvbnNvbGUud2Fybih0aGlzLmlzLCJpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGFwcC1sYXlvdXQgaW5zdGVhZCEiKX0sZ2V0IGhlYWRlcigpe3JldHVybiBZaSh0aGlzLiQuaGVhZGVyU2xvdCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpWzBdfSxnZXQgc2Nyb2xsZXIoKXtyZXR1cm4gdGhpcy5fZ2V0U2Nyb2xsZXJGb3JNb2RlKHRoaXMubW9kZSl9LGdldCB2aXNpYmxlU2hhZG93KCl7cmV0dXJuIHRoaXMuJC5kcm9wU2hhZG93LmNsYXNzTGlzdC5jb250YWlucygiaGFzLXNoYWRvdyIpfSxfY29tcHV0ZURyb3BTaGFkb3dIaWRkZW46ZnVuY3Rpb24odCxlLG4pe3ZhciBpPVlhLnNoYWRvd01vZGVbZV07dGhpcy50b2dnbGVDbGFzcygiaGFzLXNoYWRvdyIsISF0aGlzLnNoYWRvd3x8Mj09PWl8fDE9PT1pJiYhdCx0aGlzLiQuZHJvcFNoYWRvdyl9LF9jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiBlLmZsZXg9ImNvdmVyIiE9PXQsT2JqZWN0LmtleXMoZSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKS5qb2luKCIgIil9LF9hZGRMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpfSxfcmVtb3ZlTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyKX0sX21vZGVDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49WWEsaT10aGlzLmhlYWRlcjtpJiYobi50YWxsTW9kZVtlXSYmIW4udGFsbE1vZGVbdF0/KGkuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLnRhbGxDbGFzcyksdGhpcy5hc3luYygoZnVuY3Rpb24oKXtpLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGUiKX0pLDIwMCkpOnRoaXMudG9nZ2xlQ2xhc3MoImFuaW1hdGUiLG4udGFsbE1vZGVbdF0saSkpLHRoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpfSxfa2VlcFNjcm9sbGluZ1N0YXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zY3JvbGxlcixlPXRoaXMuaGVhZGVyO3RoaXMuX3NldEF0VG9wKDA9PT10LnNjcm9sbFRvcCksZSYmdGhpcy50YWxsQ2xhc3MmJllhLnRhbGxNb2RlW3RoaXMubW9kZV0mJnRoaXMudG9nZ2xlQ2xhc3ModGhpcy50YWxsQ2xhc3MsdGhpcy5hdFRvcHx8ZS5jbGFzc0xpc3QuY29udGFpbnModGhpcy50YWxsQ2xhc3MpJiZ0LnNjcm9sbEhlaWdodDx0aGlzLm9mZnNldEhlaWdodCxlKX0sX3Njcm9sbDpmdW5jdGlvbigpe3RoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpLHRoaXMuZmlyZSgiY29udGVudC1zY3JvbGwiLHt0YXJnZXQ6dGhpcy5zY3JvbGxlcn0se2J1YmJsZXM6ITF9KX0sX2dldFNjcm9sbGVyRm9yTW9kZTpmdW5jdGlvbih0KXtyZXR1cm4gWWEub3V0ZXJTY3JvbGxbdF0/dGhpczp0aGlzLiQubWFpbkNvbnRhaW5lcn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtpczoicGFwZXItaWNvbi1idXR0b24iLF90ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgei1pbmRleDogMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgaGVpZ2h0OiA0MHB4OwoKICAgICAgICAvKgogICAgICAgICAgTk9URTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGUgdmFsdWUgdG8KICAgICAgICAgIGJlIFxgdHJhbnNwYXJlbnRcYC4KICAgICAgICAqLwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwoKICAgICAgICAvKiBCZWNhdXNlIG9mIHBvbHltZXIvMjU1OCwgdGhpcyBzdHlsZSBoYXMgbG93ZXIgc3BlY2lmaWNpdHkgdGhhbiAqICovCiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QgI2luayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgb3BhY2l0eTogMC42OwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkLXRleHQsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjdXJzb3I6IGF1dG87CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgOmhvc3QoOmhvdmVyKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b24taG92ZXI7CiAgICAgIH0KCiAgICAgIGlyb24taWNvbiB7CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDEwMCU7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxpcm9uLWljb24gaWQ9Imljb24iIHNyYz0iW1tzcmNdXSIgaWNvbj0iW1tpY29uXV0iCiAgICAgICAgICAgICAgIGFsdCQ9IltbYWx0XV0iPjwvaXJvbi1pY29uPgogIGAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImJ1dHRvbiIsdGFiaW5kZXg6IjAifSxiZWhhdmlvcnM6W2NhXSxyZWdpc3RlcmVkOmZ1bmN0aW9uKCl7dGhpcy5fdGVtcGxhdGUuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIil9LHByb3BlcnRpZXM6e3NyYzp7dHlwZTpTdHJpbmd9LGljb246e3R5cGU6U3RyaW5nfSxhbHQ6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfYWx0Q2hhbmdlZCJ9fSxfYWx0Q2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7biYmZSE9bnx8dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLm1pcnJvci10ZXh0IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgLyogc2VlIGNvbW1lbnRzIGluIHRlbXBsYXRlICovCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDwhLS0gdGhlIG1pcnJvciBzaXplcyB0aGUgaW5wdXQvdGV4dGFyZWEgc28gaXQgZ3Jvd3Mgd2l0aCB0eXBpbmcgLS0+CiAgICA8IS0tIHVzZSAmIzE2MDsgaW5zdGVhZCAmbmJzcDsgb2YgdG8gYWxsb3cgdGhpcyBlbGVtZW50IHRvIGJlIHVzZWQgaW4gWEhUTUwgLS0+CiAgICA8ZGl2IGlkPSJtaXJyb3IiIGNsYXNzPSJtaXJyb3ItdGV4dCIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvZGl2PgoKICAgIDwhLS0gc2l6ZSB0aGUgaW5wdXQvdGV4dGFyZWEgd2l0aCBhIGRpdiwgYmVjYXVzZSB0aGUgdGV4dGFyZWEgaGFzIGludHJpbnNpYyBzaXplIGluIGZmIC0tPgogICAgPGRpdiBjbGFzcz0idGV4dGFyZWEtY29udGFpbmVyIGZpdCI+CiAgICAgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiIG5hbWUkPSJbW25hbWVdXSIgYXJpYS1sYWJlbCQ9IltbbGFiZWxdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiByb3dzJD0iW1tyb3dzXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iPjwvdGV4dGFyZWE+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSIsYmVoYXZpb3JzOlthYSxxb10scHJvcGVydGllczp7dmFsdWU6e29ic2VydmVyOiJfdmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LGJpbmRWYWx1ZTp7b2JzZXJ2ZXI6Il9iaW5kVmFsdWVDaGFuZ2VkIix0eXBlOlN0cmluZyxub3RpZnk6ITB9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjEsb2JzZXJ2ZXI6Il91cGRhdGVDYWNoZWQifSxtYXhSb3dzOnt0eXBlOk51bWJlcix2YWx1ZTowLG9ic2VydmVyOiJfdXBkYXRlQ2FjaGVkIn0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyx2YWx1ZToib2ZmIn0sYXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGF1dG9jYXBpdGFsaXplOnt0eXBlOlN0cmluZyx2YWx1ZToibm9uZSJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30scmVhZG9ubHk6e3R5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFufSxtaW5sZW5ndGg6e3R5cGU6TnVtYmVyfSxtYXhsZW5ndGg6e3R5cGU6TnVtYmVyfSxsYWJlbDp7dHlwZTpTdHJpbmd9fSxsaXN0ZW5lcnM6e2lucHV0OiJfb25JbnB1dCJ9LGdldCB0ZXh0YXJlYSgpe3JldHVybiB0aGlzLiQudGV4dGFyZWF9LGdldCBzZWxlY3Rpb25TdGFydCgpe3JldHVybiB0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvblN0YXJ0KHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydD10fSxzZXQgc2VsZWN0aW9uRW5kKHQpe3RoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25FbmQ9dH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OltvYV1kfGhvbmUpLykmJiFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9PUyAxWzM0NTY3ODldLykmJih0aGlzLiQudGV4dGFyZWEuc3R5bGUubWFyZ2luTGVmdD0iLTNweCIpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC50ZXh0YXJlYS52YWxpZGl0eS52YWxpZDtyZXR1cm4gdCYmKHRoaXMucmVxdWlyZWQmJiIiPT09dGhpcy52YWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PWFhLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLnZhbHVlKSkpLHRoaXMuaW52YWxpZD0hdCx0aGlzLmZpcmUoImlyb24taW5wdXQtdmFsaWRhdGUiKSx0fSxfYmluZFZhbHVlQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXR9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50ZXh0YXJlYTtlJiYoZS52YWx1ZSE9PXQmJihlLnZhbHVlPXR8fDA9PT10P3Q6IiIpLHRoaXMuYmluZFZhbHVlPXQsdGhpcy4kLm1pcnJvci5pbm5lckhUTUw9dGhpcy5fdmFsdWVGb3JNaXJyb3IoKSx0aGlzLmZpcmUoImJpbmQtdmFsdWUtY2hhbmdlZCIse3ZhbHVlOnRoaXMuYmluZFZhbHVlfSkpfSxfb25JbnB1dDpmdW5jdGlvbih0KXt2YXIgZT1ZaSh0KS5wYXRoO3RoaXMudmFsdWU9ZT9lWzBdLnZhbHVlOnQudGFyZ2V0LnZhbHVlfSxfY29uc3RyYWluOmZ1bmN0aW9uKHQpe3ZhciBlO2Zvcih0PXR8fFsiIl0sZT10aGlzLm1heFJvd3M+MCYmdC5sZW5ndGg+dGhpcy5tYXhSb3dzP3Quc2xpY2UoMCx0aGlzLm1heFJvd3MpOnQuc2xpY2UoMCk7dGhpcy5yb3dzPjAmJmUubGVuZ3RoPHRoaXMucm93czspZS5wdXNoKCIiKTtyZXR1cm4gZS5qb2luKCI8YnIvPiIpKyImIzE2MDsifSxfdmFsdWVGb3JNaXJyb3I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRleHRhcmVhO2lmKHQpcmV0dXJuIHRoaXMudG9rZW5zPXQmJnQudmFsdWU/dC52YWx1ZS5yZXBsYWNlKC8mL2dtLCImYW1wOyIpLnJlcGxhY2UoLyIvZ20sIiZxdW90OyIpLnJlcGxhY2UoLycvZ20sIiYjMzk7IikucmVwbGFjZSgvPC9nbSwiJmx0OyIpLnJlcGxhY2UoLz4vZ20sIiZndDsiKS5zcGxpdCgiXG4iKTpbIiJdLHRoaXMuX2NvbnN0cmFpbih0aGlzLnRva2Vucyl9LF91cGRhdGVDYWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLiQubWlycm9yLmlubmVySFRNTD10aGlzLl9jb25zdHJhaW4odGhpcy50b2tlbnMpfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgbm8tbGFiZWwtZmxvYXQkPSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPGlyb24tYXV0b2dyb3ctdGV4dGFyZWEgY2xhc3M9InBhcGVyLWlucHV0LWlucHV0IiBzbG90PSJpbnB1dCIgaWQkPSJbW19pbnB1dElkXV0iIGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBpbnZhbGlkPSJ7e2ludmFsaWR9fSIgdmFsaWRhdG9yJD0iW1t2YWxpZGF0b3JdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWF4LXJvd3MkPSJbW21heFJvd3NdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiPjwvaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KYCxpczoicGFwZXItdGV4dGFyZWEiLGJlaGF2aW9yczpbRmEscmFdLHByb3BlcnRpZXM6e19hcmlhTGFiZWxsZWRCeTp7b2JzZXJ2ZXI6Il9hcmlhTGFiZWxsZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSxfYXJpYURlc2NyaWJlZEJ5OntvYnNlcnZlcjoiX2FyaWFEZXNjcmliZWRCeUNoYW5nZWQiLHR5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmd9LHJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjF9LG1heFJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fSxnZXQgc2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0fSxzZXQgc2VsZWN0aW9uU3RhcnQodCl7dGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0PXR9LGdldCBzZWxlY3Rpb25FbmQoKXtyZXR1cm4gdGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvbkVuZH0sc2V0IHNlbGVjdGlvbkVuZCh0KXt0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uRW5kPXR9LF9hcmlhTGFiZWxsZWRCeUNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCl9LF9hcmlhRGVzY3JpYmVkQnlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iix0KX0sZ2V0IF9mb2N1c2FibGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50LnRleHRhcmVhfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgWGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtYYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxYYS5pbm5lckhUTUw9Ijxkb20tbW9kdWxlIGlkPVwicGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICA6aG9zdCwgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLW1pbi1oZWlnaHQsIDQ4cHgpO1xuICAgICAgICBwYWRkaW5nOiAwcHggMTZweDtcbiAgICAgIH1cblxuICAgICAgLnBhcGVyLWl0ZW0ge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtoaWRkZW5dKSwgLnBhcGVyLWl0ZW1baGlkZGVuXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoLmlyb24tc2VsZWN0ZWQpLCAucGFwZXItaXRlbS5pcm9uLXNlbGVjdGVkIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQtd2VpZ2h0LCBib2xkKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLXNlbGVjdGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdChbZGlzYWJsZWRdKSwgLnBhcGVyLWl0ZW1bZGlzYWJsZWRdIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWl0ZW0tZGlzYWJsZWQtY29sb3IsIHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWRpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCg6Zm9jdXMpLCAucGFwZXItaXRlbTpmb2N1cyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3V0bGluZTogMDtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpmb2N1cyk6YmVmb3JlLCAucGFwZXItaXRlbTpmb2N1czpiZWZvcmUge1xuICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0O1xuXG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIG9wYWNpdHk6IHZhcigtLWRhcmstZGl2aWRlci1vcGFjaXR5KTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1mb2N1c2VkLWJlZm9yZTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChYYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0ICRhPVtYbyxxbyx7aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im9wdGlvbiIsdGFiaW5kZXg6IjAifX1dOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0iLGJlaGF2aW9yczpbJGFdfSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogbmVlZGVkIGZvciB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyB0byB3b3JrIG9uIGZmICovCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICB9CgogICAgICA6aG9zdChbdHdvLWxpbmVdKSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXR3by1saW5lLW1pbi1oZWlnaHQsIDcycHgpOwogICAgICB9CgogICAgICA6aG9zdChbdGhyZWUtbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdGhyZWUtbGluZS1taW4taGVpZ2h0LCA4OHB4KTsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoW3NlY29uZGFyeV0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWJvZHkxOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeS1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWl0ZW0tYm9keSJ9KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW07CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1pdGVtOwogICAgICB9CgogICAgICAuY29udGVudC1pY29uIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwoKICAgICAgICB3aWR0aDogdmFyKC0tcGFwZXItaXRlbS1pY29uLXdpZHRoLCA1NnB4KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWljb247CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iY29udGVudEljb24iIGNsYXNzPSJjb250ZW50LWljb24iPgogICAgICA8c2xvdCBuYW1lPSJpdGVtLWljb24iPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1pY29uLWl0ZW0iLGJlaGF2aW9yczpbJGFdfSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBLYT17cHJvcGVydGllczp7bXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoibXVsdGlDaGFuZ2VkIn0sc2VsZWN0ZWRWYWx1ZXM6e3R5cGU6QXJyYXksbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzZWxlY3RlZEl0ZW1zOnt0eXBlOkFycmF5LHJlYWRPbmx5OiEwLG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZFZhbHVlcy5zcGxpY2VzKSJdLHNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLm11bHRpP3RoaXMuX3RvZ2dsZVNlbGVjdGVkKHQpOnRoaXMuc2VsZWN0ZWQ9dH0sbXVsdGlDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3NlbGVjdGlvbi5tdWx0aT10LHRoaXMuX3VwZGF0ZVNlbGVjdGVkKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR8fG51bGwhPXRoaXMuc2VsZWN0ZWRWYWx1ZXMmJnRoaXMuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RofSxfdXBkYXRlQXR0ckZvclNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGg+MCYmKHRoaXMuc2VsZWN0ZWRWYWx1ZXM9dGhpcy5zZWxlY3RlZEl0ZW1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luZGV4VG9WYWx1ZSh0aGlzLmluZGV4T2YodCkpfSksdGhpcykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pLHRoaXMpKTpqby5fdXBkYXRlQXR0ckZvclNlbGVjdGVkLmFwcGx5KHRoaXMpfSxfdXBkYXRlU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm11bHRpP3RoaXMuX3NlbGVjdE11bHRpKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpOnRoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0TXVsdGk6ZnVuY3Rpb24odCl7dmFyIGU9KHRoaXMuX3ZhbHVlc1RvSXRlbXModD10fHxbXSl8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpO3RoaXMuX3NlbGVjdGlvbi5jbGVhcihlKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl0aGlzLl9zZWxlY3Rpb24uc2V0SXRlbVNlbGVjdGVkKGVbbl0sITApO3RoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJiF0aGlzLl9zZWxlY3Rpb24uZ2V0KCkubGVuZ3RoJiZ0aGlzLl92YWx1ZVRvSXRlbSh0aGlzLmZhbGxiYWNrU2VsZWN0aW9uKSYmdGhpcy5zZWxlY3QodGhpcy5mYWxsYmFja1NlbGVjdGlvbil9LF9zZWxlY3Rpb25DaGFuZ2U6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zZWxlY3Rpb24uZ2V0KCk7dGhpcy5tdWx0aT8odGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyh0KSx0aGlzLl9zZXRTZWxlY3RlZEl0ZW0odC5sZW5ndGg/dFswXTpudWxsKSk6bnVsbCE9dD8odGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbdF0pLHRoaXMuX3NldFNlbGVjdGVkSXRlbSh0KSk6KHRoaXMuX3NldFNlbGVjdGVkSXRlbXMoW10pLHRoaXMuX3NldFNlbGVjdGVkSXRlbShudWxsKSl9LF90b2dnbGVTZWxlY3RlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlbGVjdGVkVmFsdWVzLmluZGV4T2YodCk7ZTwwP3RoaXMucHVzaCgic2VsZWN0ZWRWYWx1ZXMiLHQpOnRoaXMuc3BsaWNlKCJzZWxlY3RlZFZhbHVlcyIsZSwxKX0sX3ZhbHVlc1RvSXRlbXM6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/bnVsbDp0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbHVlVG9JdGVtKHQpfSksdGhpcyl9fSxaYT17cHJvcGVydGllczp7Zm9jdXNlZEl0ZW06e29ic2VydmVyOiJfZm9jdXNlZEl0ZW1DaGFuZ2VkIixyZWFkT25seTohMCx0eXBlOk9iamVjdH0sYXR0ckZvckl0ZW1UaXRsZTp7dHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQifX0sX01PRElGSUVSX0tFWVM6WyJBbHQiLCJBbHRHcmFwaCIsIkNhcHNMb2NrIiwiQ29udHJvbCIsIkZuIiwiRm5Mb2NrIiwiSHlwZXIiLCJNZXRhIiwiTnVtTG9jayIsIk9TIiwiU2Nyb2xsTG9jayIsIlNoaWZ0IiwiU3VwZXIiLCJTeW1ib2wiLCJTeW1ib2xMb2NrIl0sX1NFQVJDSF9SRVNFVF9USU1FT1VUX01TOjFlMyxfcHJldmlvdXNUYWJJbmRleDowLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJtZW51In0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZU11bHRpc2VsZWN0YWJsZShtdWx0aSkiXSxsaXN0ZW5lcnM6e2ZvY3VzOiJfb25Gb2N1cyIsa2V5ZG93bjoiX29uS2V5ZG93biIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vbklyb25JdGVtc0NoYW5nZWQifSxrZXlCaW5kaW5nczp7dXA6Il9vblVwS2V5Iixkb3duOiJfb25Eb3duS2V5Iixlc2M6Il9vbkVzY0tleSIsInNoaWZ0K3RhYjprZXlkb3duIjoiX29uU2hpZnRUYWJEb3duIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCk7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odCk7ZSYmZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil8fCh0aGlzLl9zZXRGb2N1c2VkSXRlbShlKSxLYS5zZWxlY3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sX3Jlc2V0VGFiaW5kaWNlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMubXVsdGk/dGhpcy5zZWxlY3RlZEl0ZW1zJiZ0aGlzLnNlbGVjdGVkSXRlbXNbMF06dGhpcy5zZWxlY3RlZEl0ZW07dGhpcy5pdGVtcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLGU9PT10PyIwIjoiLTEiKSxlLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsdGhpcy5fc2VsZWN0aW9uLmlzU2VsZWN0ZWQoZSkpfSksdGhpcyl9LF91cGRhdGVNdWx0aXNlbGVjdGFibGU6ZnVuY3Rpb24odCl7dD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbXVsdGlzZWxlY3RhYmxlIil9LF9mb2N1c1dpdGhLZXlib2FyZEV2ZW50OmZ1bmN0aW9uKHQpe2lmKC0xPT09dGhpcy5fTU9ESUZJRVJfS0VZUy5pbmRleE9mKHQua2V5KSl7dGhpcy5jYW5jZWxEZWJvdW5jZXIoIl9jbGVhclNlYXJjaFRleHQiKTtmb3IodmFyIGUsbj10aGlzLl9zZWFyY2hUZXh0fHwiIixpPShuKz0odC5rZXkmJjE9PXQua2V5Lmxlbmd0aD90LmtleTpTdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSkpLnRvTG9jYWxlTG93ZXJDYXNlKCkpLmxlbmd0aCxyPTA7ZT10aGlzLml0ZW1zW3JdO3IrKylpZighZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe3ZhciBvPXRoaXMuYXR0ckZvckl0ZW1UaXRsZXx8InRleHRDb250ZW50IixhPShlW29dfHxlLmdldEF0dHJpYnV0ZShvKXx8IiIpLnRyaW0oKTtpZighKGEubGVuZ3RoPGkpJiZhLnNsaWNlKDAsaSkudG9Mb2NhbGVMb3dlckNhc2UoKT09bil7dGhpcy5fc2V0Rm9jdXNlZEl0ZW0oZSk7YnJlYWt9fXRoaXMuX3NlYXJjaFRleHQ9bix0aGlzLmRlYm91bmNlKCJfY2xlYXJTZWFyY2hUZXh0Iix0aGlzLl9jbGVhclNlYXJjaFRleHQsdGhpcy5fU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVMpfX0sX2NsZWFyU2VhcmNoVGV4dDpmdW5jdGlvbigpe3RoaXMuX3NlYXJjaFRleHQ9IiJ9LF9mb2N1c1ByZXZpb3VzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuaXRlbXMubGVuZ3RoLGU9TnVtYmVyKHRoaXMuaW5kZXhPZih0aGlzLmZvY3VzZWRJdGVtKSksbj0xO248dCsxO24rKyl7dmFyIGk9dGhpcy5pdGVtc1soZS1uK3QpJXRdO2lmKCFpLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIHI9WWkoaSkuZ2V0T3duZXJSb290KCl8fGRvY3VtZW50O2lmKHRoaXMuX3NldEZvY3VzZWRJdGVtKGkpLFlpKHIpLmFjdGl2ZUVsZW1lbnQ9PWkpcmV0dXJufX19LF9mb2N1c05leHQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT1OdW1iZXIodGhpcy5pbmRleE9mKHRoaXMuZm9jdXNlZEl0ZW0pKSxuPTE7bjx0KzE7bisrKXt2YXIgaT10aGlzLml0ZW1zWyhlK24pJXRdO2lmKCFpLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIHI9WWkoaSkuZ2V0T3duZXJSb290KCl8fGRvY3VtZW50O2lmKHRoaXMuX3NldEZvY3VzZWRJdGVtKGkpLFlpKHIpLmFjdGl2ZUVsZW1lbnQ9PWkpcmV0dXJufX19LF9hcHBseVNlbGVjdGlvbjpmdW5jdGlvbih0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIixlPyJ0cnVlIjoiZmFsc2UiKSxqby5fYXBwbHlTZWxlY3Rpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfZm9jdXNlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7ZSYmZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSwhdHx8dC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil8fHRoaXMuZGlzYWJsZWR8fCh0LnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIiksdC5mb2N1cygpKX0sX29uSXJvbkl0ZW1zQ2hhbmdlZDpmdW5jdGlvbih0KXt0LmRldGFpbC5hZGRlZE5vZGVzLmxlbmd0aCYmdGhpcy5fcmVzZXRUYWJpbmRpY2VzKCl9LF9vblNoaWZ0VGFiRG93bjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtaYS5fc2hpZnRUYWJQcmVzc2VkPSEwLHRoaXMuX3NldEZvY3VzZWRJdGVtKG51bGwpLHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLGUpLFphLl9zaGlmdFRhYlByZXNzZWQ9ITF9KSwxKX0sX29uRm9jdXM6ZnVuY3Rpb24odCl7aWYoIVphLl9zaGlmdFRhYlByZXNzZWQpe3ZhciBlPVlpKHQpLnJvb3RUYXJnZXQ7KGU9PT10aGlzfHx2b2lkIDA9PT1lLnRhYkluZGV4fHx0aGlzLmlzTGlnaHREZXNjZW5kYW50KGUpKSYmKHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jPXRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLl9zZXRGb2N1c2VkSXRlbShudWxsKSx0P3RoaXMuX3NldEZvY3VzZWRJdGVtKHQpOnRoaXMuaXRlbXNbMF0mJnRoaXMuX2ZvY3VzTmV4dCgpfSkpKX19LF9vblVwS2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2ZvY3VzUHJldmlvdXMoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkRvd25LZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNOZXh0KCksdC5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25Fc2NLZXk6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mb2N1c2VkSXRlbTtlJiZlLmJsdXIoKX0sX29uS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJ1cCBkb3duIGVzYyIpfHx0aGlzLl9mb2N1c1dpdGhLZXlib2FyZEV2ZW50KHQpLHQuc3RvcFByb3BhZ2F0aW9uKCl9LF9hY3RpdmF0ZUhhbmRsZXI6ZnVuY3Rpb24odCl7am8uX2FjdGl2YXRlSGFuZGxlci5jYWxsKHRoaXMsdCksdC5zdG9wUHJvcGFnYXRpb24oKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0Pyh0aGlzLl9wcmV2aW91c1RhYkluZGV4PXRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpP3RoaXMudGFiSW5kZXg6MCx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsdGhpcy5fcHJldmlvdXNUYWJJbmRleCl9LF9zaGlmdFRhYlByZXNzZWQ6ITF9LEphPVtbam8sS2FdLHpvLFphXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItbGlzdGJveC1iYWNrZ3JvdW5kLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItbGlzdGJveC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWxpc3Rib3g7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1saXN0Ym94IixiZWhhdmlvcnM6W0phXSxob3N0QXR0cmlidXRlczp7cm9sZToibGlzdGJveCJ9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBRYT1fZWAKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CmA7UWEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChRYS5jb250ZW50KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItbWF0ZXJpYWwtc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QoW2FuaW1hdGVkXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy10cmFuc2l0aW9uOwogICAgICB9CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLW1hdGVyaWFsIixwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZToxfSxhbmltYXRlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB0cz17cHJvcGVydGllczp7dmFsdWU6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sbWluOnt0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sbWF4Ont0eXBlOk51bWJlcix2YWx1ZToxMDAsbm90aWZ5OiEwfSxzdGVwOnt0eXBlOk51bWJlcix2YWx1ZToxLG5vdGlmeTohMH0scmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITAsbm90aWZ5OiEwfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZSh2YWx1ZSwgbWluLCBtYXgsIHN0ZXApIl0sX2NhbGNSYXRpbzpmdW5jdGlvbih0KXtyZXR1cm4odGhpcy5fY2xhbXBWYWx1ZSh0KS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX0sX2NsYW1wVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWluKHRoaXMubWF4LE1hdGgubWF4KHRoaXMubWluLHRoaXMuX2NhbGNTdGVwKHQpKSl9LF9jYWxjU3RlcDpmdW5jdGlvbih0KXtpZih0PXBhcnNlRmxvYXQodCksIXRoaXMuc3RlcClyZXR1cm4gdDt2YXIgZT1NYXRoLnJvdW5kKCh0LXRoaXMubWluKS90aGlzLnN0ZXApO3JldHVybiB0aGlzLnN0ZXA8MT9lLygxL3RoaXMuc3RlcCkrdGhpcy5taW46ZSp0aGlzLnN0ZXArdGhpcy5taW59LF92YWxpZGF0ZVZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlKTtyZXR1cm4gdGhpcy52YWx1ZT10aGlzLm9sZFZhbHVlPWlzTmFOKHQpP3RoaXMub2xkVmFsdWU6dCx0aGlzLnZhbHVlIT09dH0sX3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX3ZhbGlkYXRlVmFsdWUoKSx0aGlzLl9zZXRSYXRpbygxMDAqdGhpcy5fY2FsY1JhdGlvKHRoaXMudmFsdWUpKX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9Scih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSksIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzc0NvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyLAogICAgICAvKiB0aGUgc3RyaXBlIGZvciB0aGUgaW5kZXRlcm1pbmF0ZSBhbmltYXRpb24qLwogICAgICAuaW5kZXRlcm1pbmF0ZTo6YWZ0ZXIgewogICAgICAgIGhlaWdodDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaGVpZ2h0LCA0cHgpOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzLAogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MsCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyLAogICAgICAuaW5kZXRlcm1pbmF0ZTo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWNvbnRhaW5lci1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktMzAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KC50cmFuc2l0aW5nKSAjcHJpbWFyeVByb2dyZXNzLAogICAgICA6aG9zdCgudHJhbnNpdGluZykgI3NlY29uZGFyeVByb2dyZXNzIHsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTsKCiAgICAgICAgLyogRHVyYXRpb24gKi8KICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMDhzKTsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjA4cyk7CgogICAgICAgIC8qIFRpbWluZyBmdW5jdGlvbiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCBlYXNlKTsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGVhc2UpOwoKICAgICAgICAvKiBEZWxheSAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kZWxheSwgMHMpOwogICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZGVsYXksIDBzKTsKICAgICAgfQoKICAgICAgI3ByaW1hcnlQcm9ncmVzcywKICAgICAgI3NlY29uZGFyeVByb2dyZXNzIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ncmVlbi01MDApKTsKICAgICAgfQoKICAgICAgI3NlY29uZGFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1zZWNvbmRhcnktY29sb3IsIHZhcigtLWdvb2dsZS1ncmVlbi0xMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgI3ByaW1hcnlQcm9ncmVzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtYWN0aXZlLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS01MDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgI3NlY29uZGFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1zZWNvbmRhcnktY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTMwMCkpOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtkaXNhYmxlZF0pKSAjcHJpbWFyeVByb2dyZXNzLmluZGV0ZXJtaW5hdGUgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1iYXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUtYmFyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2Rpc2FibGVkXSkpICNwcmltYXJ5UHJvZ3Jlc3MuaW5kZXRlcm1pbmF0ZTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwoKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1zcGxpdHRlciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1zcGxpdHRlciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1iYXIgewogICAgICAgIDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgICA3NSUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yOCwuNjIsLjM3LC45MSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgwKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlLXNwbGl0dGVyIHsKICAgICAgICAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgfQogICAgICAgIDMwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNDIsMCwuNiwuOCk7CiAgICAgICAgfQogICAgICAgIDkwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1iYXIgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICAgIDc1JSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMjgsLjYyLC4zNywuOTEpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBpbmRldGVybWluYXRlLXNwbGl0dGVyIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgIH0KICAgICAgICAzMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNDIsMCwuNiwuOCk7CiAgICAgICAgfQogICAgICAgIDkwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJwcm9ncmVzc0NvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9InNlY29uZGFyeVByb2dyZXNzIiBoaWRkZW5cJD0iW1tfaGlkZVNlY29uZGFyeVByb2dyZXNzKHNlY29uZGFyeVJhdGlvKV1dIj48L2Rpdj4KICAgICAgPGRpdiBpZD0icHJpbWFyeVByb2dyZXNzIj48L2Rpdj4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1wcm9ncmVzcyIsYmVoYXZpb3JzOlt0c10scHJvcGVydGllczp7c2Vjb25kYXJ5UHJvZ3Jlc3M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LHNlY29uZGFyeVJhdGlvOnt0eXBlOk51bWJlcix2YWx1ZTowLHJlYWRPbmx5OiEwfSxpbmRldGVybWluYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il90b2dnbGVJbmRldGVybWluYXRlIn0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQifX0sb2JzZXJ2ZXJzOlsiX3Byb2dyZXNzQ2hhbmdlZChzZWNvbmRhcnlQcm9ncmVzcywgdmFsdWUsIG1pbiwgbWF4LCBpbmRldGVybWluYXRlKSJdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJwcm9ncmVzc2JhciJ9LF90b2dnbGVJbmRldGVybWluYXRlOmZ1bmN0aW9uKHQpe3RoaXMudG9nZ2xlQ2xhc3MoImluZGV0ZXJtaW5hdGUiLHQsdGhpcy4kLnByaW1hcnlQcm9ncmVzcyl9LF90cmFuc2Zvcm1Qcm9ncmVzczpmdW5jdGlvbih0LGUpe3Quc3R5bGUudHJhbnNmb3JtPXQuc3R5bGUud2Via2l0VHJhbnNmb3JtPSJzY2FsZVgoIitlLzEwMCsiKSJ9LF9tYWluUmF0aW9DaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5wcmltYXJ5UHJvZ3Jlc3MsdCl9LF9wcm9ncmVzc0NoYW5nZWQ6ZnVuY3Rpb24odCxlLG4saSxyKXt0PXRoaXMuX2NsYW1wVmFsdWUodCksZT10aGlzLl9jbGFtcFZhbHVlKGUpO3ZhciBvPTEwMCp0aGlzLl9jYWxjUmF0aW8odCksYT0xMDAqdGhpcy5fY2FsY1JhdGlvKGUpO3RoaXMuX3NldFNlY29uZGFyeVJhdGlvKG8pLHRoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5zZWNvbmRhcnlQcm9ncmVzcyxvKSx0aGlzLl90cmFuc2Zvcm1Qcm9ncmVzcyh0aGlzLiQucHJpbWFyeVByb2dyZXNzLGEpLHRoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3M9dCxyP3RoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iik6dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciLGUpLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWluIixuKSx0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1heCIsaSl9LF9kaXNhYmxlZENoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLHQ/InRydWUiOiJmYWxzZSIpfSxfaGlkZVNlY29uZGFyeVByb2dyZXNzOmZ1bmN0aW9uKHQpe3JldHVybiAwPT09dH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgZXM9X2VgCjxzdHlsZT4KICA6aG9zdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMDsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tc2l6ZSwgMTZweCk7CiAgICAvKiAtMXB4IGlzIGEgc2VudGluZWwgZm9yIHRoZSBkZWZhdWx0IGFuZCBpcyByZXBsYWNlIGluIFxgYXR0YWNoZWRcYC4gKi8KICAgIC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemU6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSwgLTFweCk7CiAgfQoKICA6aG9zdCg6Zm9jdXMpIHsKICAgIG91dGxpbmU6IG5vbmU7CiAgfQoKICAjcmFkaW9Db250YWluZXIgewogICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUpOwogICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplKTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLXJhZGlvLWNvbnRhaW5lcjsKICB9CgogICNpbmsgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICByaWdodDogYXV0bzsKICAgIHdpZHRoOiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplKTsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBvcGFjaXR5OiAwLjY7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICB9CgogICNpbmtbY2hlY2tlZF0gewogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogIH0KCiAgI29mZlJhZGlvLCAjb25SYWRpbyB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogIH0KCiAgI29mZlJhZGlvIHsKICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4yOHM7CiAgfQoKICAjb25SYWRpbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIGVhc2UgMC4yOHM7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgfQoKICA6aG9zdChbY2hlY2tlZF0pICNvZmZSYWRpbyB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICA6aG9zdChbY2hlY2tlZF0pICNvblJhZGlvIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjUpOwogIH0KCiAgI3JhZGlvTGFiZWwgewogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBtYXJnaW4tbGVmdDogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLXNwYWNpbmcsIDEwcHgpOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwoKICAgIEBhcHBseSAtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbDsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI3JhZGlvTGFiZWwgewogICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLWNoZWNrZWQ7CiAgfQoKICAjcmFkaW9MYWJlbDpkaXIocnRsKSB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIG1hcmdpbi1yaWdodDogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLXNwYWNpbmcsIDEwcHgpOwogIH0KCiAgI3JhZGlvTGFiZWxbaGlkZGVuXSB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KCiAgLyogZGlzYWJsZWQgc3RhdGUgKi8KCiAgOmhvc3QoW2Rpc2FibGVkXSkgI29mZlJhZGlvIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdW2NoZWNrZWRdKSAjb25SYWRpbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF0pICNyYWRpb0xhYmVsIHsKICAgIC8qIHNsaWdodGx5IGRhcmtlciB0aGFuIHRoZSBidXR0b24sIHNvIHRoYXQgaXQncyByZWFkYWJsZSAqLwogICAgb3BhY2l0eTogMC42NTsKICB9Cjwvc3R5bGU+Cgo8ZGl2IGlkPSJyYWRpb0NvbnRhaW5lciI+CiAgPGRpdiBpZD0ib2ZmUmFkaW8iPjwvZGl2PgogIDxkaXYgaWQ9Im9uUmFkaW8iPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9InJhZGlvTGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gO2VzLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLFJyKHtfdGVtcGxhdGU6ZXMsaXM6InBhcGVyLXJhZGlvLWJ1dHRvbiIsYmVoYXZpb3JzOlt1YV0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InJhZGlvIiwiYXJpYS1jaGVja2VkIjohMSx0YWJpbmRleDowfSxwcm9wZXJ0aWVzOnthcmlhQWN0aXZlQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiYXJpYS1jaGVja2VkIn19LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5yYWRpb0NvbnRhaW5lcn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtMaSh0aGlzLChmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIikudHJpbSgpKXt2YXIgdD1wYXJzZUZsb2F0KHRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUiKS50cmltKCkpLGU9TWF0aC5mbG9vcigzKnQpO2UlMiE9dCUyJiZlKyssdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSI6ZSsicHgifSl9fSkpfX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgbnM9e2hvc3RBdHRyaWJ1dGVzOntyb2xlOiJtZW51YmFyIn0sa2V5QmluZGluZ3M6e2xlZnQ6Il9vbkxlZnRLZXkiLHJpZ2h0OiJfb25SaWdodEtleSJ9LF9vblVwS2V5OmZ1bmN0aW9uKHQpe3RoaXMuZm9jdXNlZEl0ZW0uY2xpY2soKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkRvd25LZXk6ZnVuY3Rpb24odCl7dGhpcy5mb2N1c2VkSXRlbS5jbGljaygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sZ2V0IF9pc1JUTCgpe3JldHVybiJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9ufSxfb25MZWZ0S2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2lzUlRMP3RoaXMuX2ZvY3VzTmV4dCgpOnRoaXMuX2ZvY3VzUHJldmlvdXMoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vblJpZ2h0S2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2lzUlRMP3RoaXMuX2ZvY3VzUHJldmlvdXMoKTp0aGlzLl9mb2N1c05leHQoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbktleWRvd246ZnVuY3Rpb24odCl7dGhpcy5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwidXAgZG93biBsZWZ0IHJpZ2h0IGVzYyIpfHx0aGlzLl9mb2N1c1dpdGhLZXlib2FyZEV2ZW50KHQpfX0saXM9W0phLG5zXTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgcGFkZGluZzogdmFyKC0tcGFwZXItcmFkaW8tZ3JvdXAtaXRlbS1wYWRkaW5nLCAxMnB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLXJhZGlvLWdyb3VwIixiZWhhdmlvcnM6W2lzXSxob3N0QXR0cmlidXRlczp7cm9sZToicmFkaW9ncm91cCJ9LHByb3BlcnRpZXM6e2F0dHJGb3JTZWxlY3RlZDp7dHlwZTpTdHJpbmcsdmFsdWU6Im5hbWUifSxzZWxlY3RlZEF0dHJpYnV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImNoZWNrZWQifSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItcmFkaW8tYnV0dG9uIn0sYWxsb3dFbXB0eVNlbGVjdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sc2VsZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ZhbHVlVG9JdGVtKHQpO2lmKCFlfHwhZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe2lmKHRoaXMuc2VsZWN0ZWQpe3ZhciBuPXRoaXMuX3ZhbHVlVG9JdGVtKHRoaXMuc2VsZWN0ZWQpO2lmKHRoaXMuc2VsZWN0ZWQ9PXQpe2lmKCF0aGlzLmFsbG93RW1wdHlTZWxlY3Rpb24pcmV0dXJuIHZvaWQobiYmKG4uY2hlY2tlZD0hMCkpO3Q9IiJ9biYmKG4uY2hlY2tlZD0hMSl9am8uc2VsZWN0LmFwcGx5KHRoaXMsW3RdKSx0aGlzLmZpcmUoInBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQiKX19LF9hY3RpdmF0ZUZvY3VzZWRJdGVtOmZ1bmN0aW9uKCl7dGhpcy5faXRlbUFjdGl2YXRlKHRoaXMuX3ZhbHVlRm9ySXRlbSh0aGlzLmZvY3VzZWRJdGVtKSx0aGlzLmZvY3VzZWRJdGVtKX0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNQcmV2aW91cygpLHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9hY3RpdmF0ZUZvY3VzZWRJdGVtKCl9LF9vbkRvd25LZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNOZXh0KCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uTGVmdEtleTpmdW5jdGlvbih0KXtucy5fb25MZWZ0S2V5LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9hY3RpdmF0ZUZvY3VzZWRJdGVtKCl9LF9vblJpZ2h0S2V5OmZ1bmN0aW9uKHQpe25zLl9vblJpZ2h0S2V5LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9hY3RpdmF0ZUZvY3VzZWRJdGVtKCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBycz1fZWAKICA8c3R5bGU+CiAgICA6aG9zdCB7CiAgICAgIEBhcHBseSAtLWxheW91dDsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWp1c3RpZmllZDsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgd2lkdGg6IDIwMHB4OwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1hY3RpdmUtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtMzAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtYWN0aXZlLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQtYWN0aXZlLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQ6IHZhcigtLXBhcGVyLXNsaWRlci1oZWlnaHQsIDJweCk7CiAgICB9CgogICAgLyogZm9jdXMgc2hvd3MgdGhlIHJpcHBsZSAqLwogICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CgogICAgLyoqCiAgICAgICogTk9URShrZWFudWxlZSk6IFRob3VnaCA6aG9zdC1jb250ZXh0IGlzIG5vdCB1bml2ZXJzYWxseSBzdXBwb3J0ZWQsIHNvbWUgcGFnZXMKICAgICAgKiBzdGlsbCByZWx5IG9uIHBhcGVyLXNsaWRlciBiZWluZyBmbGlwcGVkIHdoZW4gZGlyPSJydGwiIGlzIHNldCBvbiBib2R5LiBGb3IgZnVsbAogICAgICAqIGNvbXBhdGliaWxpdHksIGRpcj0icnRsIiBtdXN0IGJlIGV4cGxpY2l0bHkgc2V0IG9uIHBhcGVyLXNsaWRlci4KICAgICAgKi8KICAgIDpkaXIocnRsKSAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgIH0KCiAgICAvKioKICAgICAgKiBOT1RFKGtlYW51bGVlKTogVGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHRoZSBydWxlIGFib3ZlIGJlY2F1c2UgOmhvc3QtY29udGV4dCBtYXkKICAgICAgKiBub3QgYmUgcmVjb2duaXplZC4KICAgICAgKi8KICAgIDpob3N0KFtkaXI9InJ0bCJdKSAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgIH0KCiAgICAvKioKICAgICAgKiBOT1RFKGtlYW51bGVlKTogTmVlZGVkIHRvIG92ZXJyaWRlIHRoZSA6aG9zdC1jb250ZXh0IHJ1bGUgKHdoZXJlIHN1cHBvcnRlZCkKICAgICAgKiB0byBzdXBwb3J0IExUUiBzbGlkZXJzIGluIFJUTCBwYWdlcy4KICAgICAgKi8KICAgIDpob3N0KFtkaXI9Imx0ciJdKSAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICB9CgogICAgI3NsaWRlckNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogY2FsYygzMHB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KSk7CiAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDE1cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICB9CgogICAgI3NsaWRlckNvbnRhaW5lcjpmb2N1cyB7CiAgICAgIG91dGxpbmU6IDA7CiAgICB9CgogICAgI3NsaWRlckNvbnRhaW5lci5lZGl0YWJsZSB7CiAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICB9CgogICAgLmJhci1jb250YWluZXIgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogMDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICAucmluZyA+IC5iYXItY29udGFpbmVyIHsKICAgICAgbGVmdDogY2FsYyg1cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuMThzIGVhc2U7CiAgICB9CgogICAgLnJpbmcuZXhwYW5kLmRyYWdnaW5nID4gLmJhci1jb250YWluZXIgewogICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgfQoKICAgIC5yaW5nLmV4cGFuZDpub3QoLnBpbikgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgIGxlZnQ6IGNhbGMoOHB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgIH0KCiAgICAjc2xpZGVyQmFyIHsKICAgICAgcGFkZGluZzogMTVweCAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWJhci1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWNvbnRhaW5lci1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWNvbnRhaW5lci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICB9CgogICAgLnNsaWRlci1tYXJrZXJzIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAvKiBzbGlkZXIta25vYiBpcyAzMHB4ICsgdGhlIHNsaWRlci1oZWlnaHQgc28gdGhhdCB0aGUgbWFya2VycyBzaG91bGQgc3RhcnQgYXQgYSBvZmZzZXQgb2YgMTVweCovCiAgICAgIHRvcDogMTVweDsKICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpOwogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogLTFweDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgfQoKICAgIC5zbGlkZXItbWFya2VyIHsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICB9CiAgICAuc2xpZGVyLW1hcmtlcnM6OmFmdGVyLAogICAgLnNsaWRlci1tYXJrZXI6OmFmdGVyIHsKICAgICAgY29udGVudDogIiI7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgICAgd2lkdGg6IDJweDsKICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yLCAjMDAwKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2IgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHRvcDogMDsKICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTE1cHggLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgICB3aWR0aDogY2FsYygzMHB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KSk7CiAgICAgIGhlaWdodDogY2FsYygzMHB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KSk7CiAgICB9CgogICAgLnRyYW5zaXRpbmcgPiAuc2xpZGVyLWtub2IgewogICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuMDhzIGVhc2U7CiAgICB9CgogICAgLnNsaWRlci1rbm9iOmZvY3VzIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2IuZHJhZ2dpbmcgewogICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgfQoKICAgIC5zbmFwcyA+IC5zbGlkZXIta25vYi5kcmFnZ2luZyB7CiAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMDhzIGVhc2U7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjA4cyBlYXNlOwogICAgfQoKICAgIC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIG1hcmdpbjogMTBweDsKICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOwogICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIwcHgpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwoKICAgICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwoKICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm0sIGJhY2tncm91bmQtY29sb3IsIGJvcmRlcjsKICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXI7CiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMThzOwogICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZTsKICAgIH0KCiAgICAuZXhwYW5kOm5vdCgucGluKSA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICB9CgogICAgLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLWlubmVyOjpiZWZvcmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItcGluLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgIH0KCiAgICAucGluID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjpiZWZvcmUgewogICAgICBjb250ZW50OiAiIjsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgbWFyZ2luLWxlZnQ6IC0xM3B4OwogICAgICB3aWR0aDogMjZweDsKICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICBib3JkZXItcmFkaXVzOiA1MCUgNTAlIDUwJSAwOwoKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLWlubmVyOjpiZWZvcmUsCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmFmdGVyIHsKICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjE4cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIC4xOHMgZWFzZTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4xOHMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAuMThzIGVhc2U7CiAgICB9CgogICAgLnBpbi5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjpiZWZvcmUgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgfQoKICAgIC5waW4uZXhwYW5kID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjpiZWZvcmUgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMSkgdHJhbnNsYXRlKDE3cHgsIC0xN3B4KTsKICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKSB0cmFuc2xhdGUoMTdweCwgLTE3cHgpOwogICAgfQoKICAgIC5waW4gPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmFmdGVyIHsKICAgICAgY29udGVudDogYXR0cih2YWx1ZSk7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiA1MCU7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTZweDsKICAgICAgd2lkdGg6IDMycHg7CiAgICAgIGhlaWdodDogMjZweDsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBjb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWZvbnQtY29sb3IsICNmZmYpOwogICAgICBmb250LXNpemU6IDEwcHg7CgogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgIH0KCiAgICAucGluLmV4cGFuZCA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlKDAsIC0xN3B4KTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGUoMCwgLTE3cHgpOwogICAgfQoKICAgIC8qIHBhcGVyLWlucHV0ICovCiAgICAuc2xpZGVyLWlucHV0IHsKICAgICAgd2lkdGg6IDUwcHg7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXNsaWRlci1pbnB1dC1jb250YWluZXItaW5wdXQ7CiAgICAgIH07CiAgICAgIEBhcHBseSAtLXBhcGVyLXNsaWRlci1pbnB1dDsKICAgIH0KCiAgICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwogICAgI3NsaWRlckNvbnRhaW5lci5kaXNhYmxlZCB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC5kaXNhYmxlZCA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1rbm9iLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQta25vYi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMC43NSwgMC43NSwgMSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAwLjc1LCAxKTsKICAgIH0KCiAgICAuZGlzYWJsZWQucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgIH0KCiAgICBwYXBlci1yaXBwbGUgewogICAgICBjb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgfQogIDwvc3R5bGU+CgogIDxkaXYgaWQ9InNsaWRlckNvbnRhaW5lciIgY2xhc3NcJD0iW1tfZ2V0Q2xhc3NOYW1lcyhkaXNhYmxlZCwgcGluLCBzbmFwcywgaW1tZWRpYXRlVmFsdWUsIG1pbiwgZXhwYW5kLCBkcmFnZ2luZywgdHJhbnNpdGluZywgZWRpdGFibGUpXV0iPgogICAgPGRpdiBjbGFzcz0iYmFyLWNvbnRhaW5lciI+CiAgICAgIDxwYXBlci1wcm9ncmVzcyBkaXNhYmxlZFwkPSJbW2Rpc2FibGVkXV0iIGlkPSJzbGlkZXJCYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIiBtaW49IltbbWluXV0iIG1heD0iW1ttYXhdXSIgc3RlcD0iW1tzdGVwXV0iIHZhbHVlPSJbW2ltbWVkaWF0ZVZhbHVlXV0iIHNlY29uZGFyeS1wcm9ncmVzcz0iW1tzZWNvbmRhcnlQcm9ncmVzc11dIiBvbi1kb3duPSJfYmFyZG93biIgb24tdXA9Il9yZXNldEtub2IiIG9uLXRyYWNrPSJfYmFydHJhY2siIG9uLXRhcD0iX2JhcmNsaWNrIj4KICAgICAgPC9wYXBlci1wcm9ncmVzcz4KICAgIDwvZGl2PgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzbmFwc11dIj4KICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLW1hcmtlcnMiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbbWFya2Vyc11dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1tYXJrZXIiPjwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8ZGl2IGlkPSJzbGlkZXJLbm9iIiBjbGFzcz0ic2xpZGVyLWtub2IiIG9uLWRvd249Il9rbm9iZG93biIgb24tdXA9Il9yZXNldEtub2IiIG9uLXRyYWNrPSJfb25UcmFjayIgb24tdHJhbnNpdGlvbmVuZD0iX2tub2JUcmFuc2l0aW9uRW5kIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXIta25vYi1pbm5lciIgdmFsdWVcJD0iW1tpbW1lZGlhdGVWYWx1ZV1dIj48L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZWRpdGFibGVdXSI+CiAgICA8cGFwZXItaW5wdXQgaWQ9ImlucHV0IiB0eXBlPSJudW1iZXIiIHN0ZXA9Iltbc3RlcF1dIiBtaW49IltbbWluXV0iIG1heD0iW1ttYXhdXSIgY2xhc3M9InNsaWRlci1pbnB1dCIgZGlzYWJsZWRcJD0iW1tkaXNhYmxlZF1dIiB2YWx1ZT0iW1tpbW1lZGlhdGVWYWx1ZV1dIiBvbi1jaGFuZ2U9Il9jaGFuZ2VWYWx1ZSIgb24ta2V5ZG93bj0iX2lucHV0S2V5RG93biIgbm8tbGFiZWwtZmxvYXQ+CiAgICA8L3BhcGVyLWlucHV0PgogIDwvdGVtcGxhdGU+CmA7cnMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksUnIoe190ZW1wbGF0ZTpycyxpczoicGFwZXItc2xpZGVyIixiZWhhdmlvcnM6W3pvLHJhLGNhLHRzXSxwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc25hcHM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LHBpbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sc2Vjb25kYXJ5UHJvZ3Jlc3M6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwLG9ic2VydmVyOiJfc2Vjb25kYXJ5UHJvZ3Jlc3NDaGFuZ2VkIn0sZWRpdGFibGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saW1tZWRpYXRlVmFsdWU6e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSxtYXhNYXJrZXJzOnt0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sZXhwYW5kOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9LGlnbm9yZUJhclRvdWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGRyYWdnaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSx0cmFuc2l0aW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9LG1hcmtlcnM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlS25vYih2YWx1ZSwgbWluLCBtYXgsIHNuYXBzLCBzdGVwKSIsIl92YWx1ZUNoYW5nZWQodmFsdWUpIiwiX2ltbWVkaWF0ZVZhbHVlQ2hhbmdlZChpbW1lZGlhdGVWYWx1ZSkiLCJfdXBkYXRlTWFya2VycyhtYXhNYXJrZXJzLCBtaW4sIG1heCwgc25hcHMpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InNsaWRlciIsdGFiaW5kZXg6MH0sa2V5QmluZGluZ3M6e2xlZnQ6Il9sZWZ0S2V5IixyaWdodDoiX3JpZ2h0S2V5IiwiZG93biBwYWdlZG93biBob21lIjoiX2RlY3JlbWVudEtleSIsInVwIHBhZ2V1cCBlbmQiOiJfaW5jcmVtZW50S2V5In0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmlnbm9yZUJhclRvdWNoJiZvaSh0aGlzLiQuc2xpZGVyQmFyLCJhdXRvIil9LGluY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlK3RoaXMuc3RlcCl9LGRlY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlLXRoaXMuc3RlcCl9LF91cGRhdGVLbm9iOmZ1bmN0aW9uKHQsZSxuLGkscil7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLGUpLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixuKSx0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsdCksdGhpcy5fcG9zaXRpb25Lbm9iKDEwMCp0aGlzLl9jYWxjUmF0aW8odCkpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJ2YWx1ZS1jaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfaW1tZWRpYXRlVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kcmFnZ2luZz90aGlzLmZpcmUoImltbWVkaWF0ZS12YWx1ZS1jaGFuZ2UiLHtjb21wb3NlZDohMH0pOnRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZX0sX3NlY29uZGFyeVByb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3M9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnNlY29uZGFyeVByb2dyZXNzKX0sX2V4cGFuZEtub2I6ZnVuY3Rpb24oKXt0aGlzLl9zZXRFeHBhbmQoITApfSxfcmVzZXRLbm9iOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxEZWJvdW5jZXIoImV4cGFuZEtub2IiKSx0aGlzLl9zZXRFeHBhbmQoITEpfSxfcG9zaXRpb25Lbm9iOmZ1bmN0aW9uKHQpe3RoaXMuX3NldEltbWVkaWF0ZVZhbHVlKHRoaXMuX2NhbGNTdGVwKHRoaXMuX2NhbGNLbm9iUG9zaXRpb24odCkpKSx0aGlzLl9zZXRSYXRpbygxMDAqdGhpcy5fY2FsY1JhdGlvKHRoaXMuaW1tZWRpYXRlVmFsdWUpKSx0aGlzLiQuc2xpZGVyS25vYi5zdHlsZS5sZWZ0PXRoaXMucmF0aW8rIiUiLHRoaXMuZHJhZ2dpbmcmJih0aGlzLl9rbm9ic3RhcnR4PXRoaXMucmF0aW8qdGhpcy5fdy8xMDAsdGhpcy50cmFuc2xhdGUzZCgwLDAsMCx0aGlzLiQuc2xpZGVyS25vYikpfSxfY2FsY0tub2JQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4odGhpcy5tYXgtdGhpcy5taW4pKnQvMTAwK3RoaXMubWlufSxfb25UcmFjazpmdW5jdGlvbih0KXtzd2l0Y2godC5zdG9wUHJvcGFnYXRpb24oKSx0LmRldGFpbC5zdGF0ZSl7Y2FzZSJzdGFydCI6dGhpcy5fdHJhY2tTdGFydCh0KTticmVhaztjYXNlInRyYWNrIjp0aGlzLl90cmFja1godCk7YnJlYWs7Y2FzZSJlbmQiOnRoaXMuX3RyYWNrRW5kKCl9fSxfdHJhY2tTdGFydDpmdW5jdGlvbih0KXt0aGlzLl9zZXRUcmFuc2l0aW5nKCExKSx0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGgsdGhpcy5feD10aGlzLnJhdGlvKnRoaXMuX3cvMTAwLHRoaXMuX3N0YXJ0eD10aGlzLl94LHRoaXMuX2tub2JzdGFydHg9dGhpcy5fc3RhcnR4LHRoaXMuX21pbng9LXRoaXMuX3N0YXJ0eCx0aGlzLl9tYXh4PXRoaXMuX3ctdGhpcy5fc3RhcnR4LHRoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITApfSxfdHJhY2tYOmZ1bmN0aW9uKHQpe3RoaXMuZHJhZ2dpbmd8fHRoaXMuX3RyYWNrU3RhcnQodCk7dmFyIGU9TWF0aC5taW4odGhpcy5fbWF4eCxNYXRoLm1heCh0aGlzLl9taW54LHQuZGV0YWlsLmR4Kih0aGlzLl9pc1JUTD8tMToxKSkpO3RoaXMuX3g9dGhpcy5fc3RhcnR4K2U7dmFyIG49dGhpcy5fY2FsY1N0ZXAodGhpcy5fY2FsY0tub2JQb3NpdGlvbih0aGlzLl94L3RoaXMuX3cqMTAwKSk7dGhpcy5fc2V0SW1tZWRpYXRlVmFsdWUobik7dmFyIGk9dGhpcy5fY2FsY1JhdGlvKHRoaXMuaW1tZWRpYXRlVmFsdWUpKnRoaXMuX3ctdGhpcy5fa25vYnN0YXJ0eDt0aGlzLnRyYW5zbGF0ZTNkKGkrInB4IiwwLDAsdGhpcy4kLnNsaWRlcktub2IpfSxfdHJhY2tFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiQuc2xpZGVyS25vYi5zdHlsZTt0aGlzLiQuc2xpZGVyS25vYi5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpLHRoaXMuX3NldERyYWdnaW5nKCExKSx0aGlzLl9yZXNldEtub2IoKSx0aGlzLnZhbHVlPXRoaXMuaW1tZWRpYXRlVmFsdWUsdC50cmFuc2Zvcm09dC53ZWJraXRUcmFuc2Zvcm09IiIsdGhpcy5maXJlKCJjaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfa25vYmRvd246ZnVuY3Rpb24odCl7dGhpcy5fZXhwYW5kS25vYigpLHQucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzKCl9LF9iYXJ0cmFjazpmdW5jdGlvbih0KXt0aGlzLl9hbGxvd0JhckV2ZW50KHQpJiZ0aGlzLl9vblRyYWNrKHQpfSxfYmFyY2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5fdz10aGlzLiQuc2xpZGVyQmFyLm9mZnNldFdpZHRoO3ZhciBlPXRoaXMuJC5zbGlkZXJCYXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj0odC5kZXRhaWwueC1lLmxlZnQpL3RoaXMuX3cqMTAwO3RoaXMuX2lzUlRMJiYobj0xMDAtbik7dmFyIGk9dGhpcy5yYXRpbzt0aGlzLl9zZXRUcmFuc2l0aW5nKCEwKSx0aGlzLl9wb3NpdGlvbktub2IobiksaT09PXRoaXMucmF0aW8mJnRoaXMuX3NldFRyYW5zaXRpbmcoITEpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy5maXJlKCJjaGFuZ2UiLHtjb21wb3NlZDohMH0pfSkpLHQucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzKCl9LF9iYXJkb3duOmZ1bmN0aW9uKHQpe3RoaXMuX2FsbG93QmFyRXZlbnQodCkmJih0aGlzLmRlYm91bmNlKCJleHBhbmRLbm9iIix0aGlzLl9leHBhbmRLbm9iLDYwKSx0aGlzLl9iYXJjbGljayh0KSl9LF9rbm9iVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXt0LnRhcmdldD09PXRoaXMuJC5zbGlkZXJLbm9iJiZ0aGlzLl9zZXRUcmFuc2l0aW5nKCExKX0sX3VwZGF0ZU1hcmtlcnM6ZnVuY3Rpb24odCxlLG4saSl7aXx8dGhpcy5fc2V0TWFya2VycyhbXSk7dmFyIHI9TWF0aC5yb3VuZCgobi1lKS90aGlzLnN0ZXApO3I+dCYmKHI9dCksKHI8MHx8IWlzRmluaXRlKHIpKSYmKHI9MCksdGhpcy5fc2V0TWFya2VycyhuZXcgQXJyYXkocikpfSxfbWVyZ2VDbGFzc2VzOmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLmpvaW4oIiAiKX0sX2dldENsYXNzTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWVyZ2VDbGFzc2VzKHtkaXNhYmxlZDp0aGlzLmRpc2FibGVkLHBpbjp0aGlzLnBpbixzbmFwczp0aGlzLnNuYXBzLHJpbmc6dGhpcy5pbW1lZGlhdGVWYWx1ZTw9dGhpcy5taW4sZXhwYW5kOnRoaXMuZXhwYW5kLGRyYWdnaW5nOnRoaXMuZHJhZ2dpbmcsdHJhbnNpdGluZzp0aGlzLnRyYW5zaXRpbmcsZWRpdGFibGU6dGhpcy5lZGl0YWJsZX0pfSxfYWxsb3dCYXJFdmVudDpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5pZ25vcmVCYXJUb3VjaHx8dC5kZXRhaWwuc291cmNlRXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50fSxnZXQgX2lzUlRMKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX19pc1JUTCYmKHRoaXMuX19pc1JUTD0icnRsIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLmRpcmVjdGlvbiksdGhpcy5fX2lzUlRMfSxfbGVmdEtleTpmdW5jdGlvbih0KXt0aGlzLl9pc1JUTD90aGlzLl9pbmNyZW1lbnRLZXkodCk6dGhpcy5fZGVjcmVtZW50S2V5KHQpfSxfcmlnaHRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZGVjcmVtZW50S2V5KHQpOnRoaXMuX2luY3JlbWVudEtleSh0KX0sX2luY3JlbWVudEtleTpmdW5jdGlvbih0KXt0aGlzLmRpc2FibGVkfHwoImVuZCI9PT10LmRldGFpbC5rZXk/dGhpcy52YWx1ZT10aGlzLm1heDp0aGlzLmluY3JlbWVudCgpLHRoaXMuZmlyZSgiY2hhbmdlIiksdC5wcmV2ZW50RGVmYXVsdCgpKX0sX2RlY3JlbWVudEtleTpmdW5jdGlvbih0KXt0aGlzLmRpc2FibGVkfHwoImhvbWUiPT09dC5kZXRhaWwua2V5P3RoaXMudmFsdWU9dGhpcy5taW46dGhpcy5kZWNyZW1lbnQoKSx0aGlzLmZpcmUoImNoYW5nZSIpLHQucHJldmVudERlZmF1bHQoKSl9LF9jaGFuZ2VWYWx1ZTpmdW5jdGlvbih0KXt0aGlzLnZhbHVlPXQudGFyZ2V0LnZhbHVlLHRoaXMuZmlyZSgiY2hhbmdlIix7Y29tcG9zZWQ6ITB9KX0sX2lucHV0S2V5RG93bjpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQuc2xpZGVyS25vYixsYS5fY3JlYXRlUmlwcGxlLmNhbGwodGhpcyl9LF9mb2N1c2VkQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiZ0aGlzLmVuc3VyZVJpcHBsZSgpLHRoaXMuaGFzUmlwcGxlKCkmJih0aGlzLl9yaXBwbGUuc3R5bGUuZGlzcGxheT10PyIiOiJub25lIix0aGlzLl9yaXBwbGUuaG9sZERvd249dCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBvcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO29zLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLG9zLmlubmVySFRNTD0iPGRvbS1tb2R1bGUgaWQ9XCJwYXBlci1zcGlubmVyLXN0eWxlc1wiPlxuICA8dGVtcGxhdGU+XG4gICAgPHN0eWxlPlxuICAgICAgLypcbiAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAgIC8qIFNUWUxFUyBGT1IgVEhFIFNQSU5ORVIgKi9cbiAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgICAgLypcbiAgICAgICAqIENvbnN0YW50czpcbiAgICAgICAqICAgICAgQVJDU0laRSAgICAgPSAyNzAgZGVncmVlcyAoYW1vdW50IG9mIGNpcmNsZSB0aGUgYXJjIHRha2VzIHVwKVxuICAgICAgICogICAgICBBUkNUSU1FICAgICA9IDEzMzNtcyAodGltZSBpdCB0YWtlcyB0byBleHBhbmQgYW5kIGNvbnRyYWN0IGFyYylcbiAgICAgICAqICAgICAgQVJDU1RBUlRST1QgPSAyMTYgZGVncmVlcyAoaG93IG11Y2ggdGhlIHN0YXJ0IGxvY2F0aW9uIG9mIHRoZSBhcmNcbiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcm90YXRlIGVhY2ggdGltZSwgMjE2IGdpdmVzIHVzIGFcbiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1IHBvaW50ZWQgc3RhciBzaGFwZSAoaXQncyAzNjAvNSAqIDMpLlxuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIDcgcG9pbnRlZCBzdGFyLCB3ZSBtaWdodCBkb1xuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC83ICogMyA9IDE1NC4yODYpXG4gICAgICAgKiAgICAgIFNIUklOS19USU1FID0gNDAwbXNcbiAgICAgICAqL1xuXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuXG4gICAgICAgIC8qIDM2MCAqIEFSQ1RJTUUgLyAoQVJDU1RBUlRST1QgKyAoMzYwLUFSQ1NJWkUpKSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uOiAxNTY4bXM7XG5cbiAgICAgICAgLyogQVJDVElNRSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uOiAxMzMzbXM7XG5cbiAgICAgICAgLyogNCAqIEFSQ1RJTUUgKi9cbiAgICAgICAgLS1wYXBlci1zcGlubmVyLWZ1bGwtY3ljbGUtZHVyYXRpb246IDUzMzJtcztcblxuICAgICAgICAvKiBTSFJJTktfVElNRSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItY29vbGRvd24tZHVyYXRpb246IDQwMG1zO1xuICAgICAgfVxuXG4gICAgICAjc3Bpbm5lckNvbnRhaW5lciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAgICAgLyogVGhlIHNwaW5uZXIgZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudHMgdGhhdCB3b3VsZCBoYXZlIHRvIGJlXG4gICAgICAgICAqIGZsaXBwZWQgaWYgdGhlIGRpcmVjdGlvbiBjaGFuZ2VzLiBBbHdheXMgdXNlIGx0ciBzbyB0aGF0IHRoZVxuICAgICAgICAgKiBzdHlsZSB3b3JrcyBvdXQgY29ycmVjdGx5IGluIGJvdGggY2FzZXMuICovXG4gICAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgfVxuXG4gICAgICAjc3Bpbm5lckNvbnRhaW5lci5hY3RpdmUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSB2YXIoLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGNvbnRhaW5lci1yb3RhdGUge1xuICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIC5zcGlubmVyLWxheWVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNTAwKSk7XG4gICAgICB9XG5cbiAgICAgIC5sYXllci0xIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItMS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNTAwKSk7XG4gICAgICB9XG5cbiAgICAgIC5sYXllci0yIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItMi1jb2xvciwgdmFyKC0tZ29vZ2xlLXJlZC01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTMge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0zLWNvbG9yLCB2YXIoLS1nb29nbGUteWVsbG93LTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAubGF5ZXItNCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTQtY29sb3IsIHZhcigtLWdvb2dsZS1ncmVlbi01MDApKTtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBJTVBPUlRBTlQgTk9URSBBQk9VVCBDU1MgQU5JTUFUSU9OIFBST1BFUlRJRVMgKGtlYW51bGVlKTpcbiAgICAgICAqXG4gICAgICAgKiBpT1MgU2FmYXJpICh0ZXN0ZWQgb24gaU9TIDguMSkgZG9lcyBub3QgaGFuZGxlIGFuaW1hdGlvbi1kZWxheSB2ZXJ5IHdlbGwgLSBpdCBkb2Vzbid0XG4gICAgICAgKiBndWFyYW50ZWUgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQgX2V4YWN0bHlfIGFmdGVyIHRoYXQgdmFsdWUuIFNvIHdlIGF2b2lkIHVzaW5nXG4gICAgICAgKiBhbmltYXRpb24tZGVsYXkgYW5kIGluc3RlYWQgc2V0IGN1c3RvbSBrZXlmcmFtZXMgZm9yIGVhY2ggY29sb3IgKGFzIGxheWVyLTJ1bmRhbnQgYXMgaXRcbiAgICAgICAqIHNlZW1zKS5cbiAgICAgICAqL1xuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllciB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbik7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbik7XG4gICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTtcbiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLnNwaW5uZXItbGF5ZXIubGF5ZXItMSB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMS1mYWRlLWluLW91dDtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMS1mYWRlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0yIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0yLWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0yLWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyLmxheWVyLTMge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTMtZmFkZS1pbi1vdXQ7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTMtZmFkZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLnNwaW5uZXItbGF5ZXIubGF5ZXItNCB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItNC1mYWRlLWluLW91dDtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItNC1mYWRlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7XG4gICAgICAgIDEyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpIH0gLyogMC41ICogQVJDU0laRSAqL1xuICAgICAgICAyNSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgMzcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZykgfSAvKiAxLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDUwJSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpIH0gLyogMiAgICogQVJDU0laRSAqL1xuICAgICAgICA2Mi41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNzUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgxMGRlZykgfSAvKiAzICAgKiBBUkNTSVpFICovXG4gICAgICAgIDg3LjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpIH0gLyogMy41ICogQVJDU0laRSAqL1xuICAgICAgICB0byAgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovXG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcbiAgICAgICAgMTIuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpIH0gLyogMC41ICogQVJDU0laRSAqL1xuICAgICAgICAyNSUgICB7IHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykgfSAvKiAxICAgKiBBUkNTSVpFICovXG4gICAgICAgIDM3LjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKSB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNTAlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpIH0gLyogMiAgICogQVJDU0laRSAqL1xuICAgICAgICA2Mi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDY3NWRlZykgfSAvKiAyLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDc1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKSB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgODcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpIH0gLyogMy41ICogQVJDU0laRSAqL1xuICAgICAgICB0byAgICB7IHRyYW5zZm9ybTogcm90YXRlKDEwODBkZWcpIH0gLyogNCAgICogQVJDU0laRSAqL1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgODklIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDEgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGxheWVyLTEtZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgMjYlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDg5JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAxIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci0yLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgMTUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA1MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNTElIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMy1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDQwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA1MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNzUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDc2JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItNC1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDY1JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgOTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItNC1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDY1JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgOTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIC5jaXJjbGUtY2xpcHBlciB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUGF0Y2ggdGhlIGdhcCB0aGF0IGFwcGVhciBiZXR3ZWVuIHRoZSB0d28gYWRqYWNlbnQgZGl2LmNpcmNsZS1jbGlwcGVyIHdoaWxlIHRoZVxuICAgICAgICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgNTAsIFNhZmFyaSA5LjEuMSwgYW5kIEVkZ2UpLlxuICAgICAgICovXG4gICAgICAuc3Bpbm5lci1sYXllcjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgbGVmdDogNDUlO1xuICAgICAgICB3aWR0aDogMTAlO1xuICAgICAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICAgIH1cblxuICAgICAgLnNwaW5uZXItbGF5ZXI6OmFmdGVyLFxuICAgICAgLmNpcmNsZS1jbGlwcGVyIC5jaXJjbGUge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiB2YXIoLS1wYXBlci1zcGlubmVyLXN0cm9rZS13aWR0aCwgM3B4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgfVxuXG4gICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgd2lkdGg6IDIwMCU7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICAgICAgICBsZWZ0OiAtMTAwJTtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5nYXAtcGF0Y2g6OmFmdGVyLFxuICAgICAgLmFjdGl2ZSAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1zcGlubmVyLWV4cGFuZC1jb250cmFjdC1kdXJhdGlvbik7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uKTtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuY2lyY2xlLWNsaXBwZXIubGVmdCAuY2lyY2xlIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogbGVmdC1zcGluO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogbGVmdC1zcGluO1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5yaWdodCAuY2lyY2xlIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogcmlnaHQtc3BpbjtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJpZ2h0LXNwaW47XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsZWZ0LXNwaW4ge1xuICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICAgIDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpIH1cbiAgICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzMGRlZykgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGxlZnQtc3BpbiB7XG4gICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKSB9XG4gICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyByaWdodC1zcGluIHtcbiAgICAgICAgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKSB9XG4gICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgcmlnaHQtc3BpbiB7XG4gICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfVxuICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKSB9XG4gICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfVxuICAgICAgfVxuXG4gICAgICAjc3Bpbm5lckNvbnRhaW5lci5jb29sZG93biB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IHZhcigtLXBhcGVyLXNwaW5uZXItY29vbGRvd24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTtcbiAgICAgICAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IHZhcigtLXBhcGVyLXNwaW5uZXItY29vbGRvd24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBmYWRlLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgPC90ZW1wbGF0ZT5cbjwvZG9tLW1vZHVsZT4iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQob3MuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBhcz17cHJvcGVydGllczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfX2FjdGl2ZUNoYW5nZWQifSxhbHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJsb2FkaW5nIixvYnNlcnZlcjoiX19hbHRDaGFuZ2VkIn0sX19jb29saW5nRG93bjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sX19jb21wdXRlQ29udGFpbmVyQ2xhc3NlczpmdW5jdGlvbih0LGUpe3JldHVyblt0fHxlPyJhY3RpdmUiOiIiLGU/ImNvb2xkb3duIjoiIl0uam9pbigiICIpfSxfX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9fc2V0QXJpYUhpZGRlbighdCksdGhpcy5fX2Nvb2xpbmdEb3duPSF0JiZlfSxfX2FsdENoYW5nZWQ6ZnVuY3Rpb24odCl7ImxvYWRpbmciPT09dD90aGlzLmFsdD10aGlzLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpfHx0Oih0aGlzLl9fc2V0QXJpYUhpZGRlbigiIj09PXQpLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIix0KSl9LF9fc2V0QXJpYUhpZGRlbjpmdW5jdGlvbih0KXt2YXIgZT0iYXJpYS1oaWRkZW4iO3Q/dGhpcy5zZXRBdHRyaWJ1dGUoZSwidHJ1ZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKGUpfSxfX3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmU9ITEsdGhpcy5fX2Nvb2xpbmdEb3duPSExfX0sc3M9X2VgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLXNwaW5uZXItc3R5bGVzIj48L3N0eWxlPgoKICA8ZGl2IGlkPSJzcGlubmVyQ29udGFpbmVyIiBjbGFzcy1uYW1lPSJbW19fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXMoYWN0aXZlLCBfX2Nvb2xpbmdEb3duKV1dIiBvbi1hbmltYXRpb25lbmQ9Il9fcmVzZXQiIG9uLXdlYmtpdC1hbmltYXRpb24tZW5kPSJfX3Jlc2V0Ij4KICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmA7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL3NzLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLFJyKHtfdGVtcGxhdGU6c3MsaXM6InBhcGVyLXNwaW5uZXItbGl0ZSIsYmVoYXZpb3JzOlthc119KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGxzPV9lYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1zcGlubmVyLXN0eWxlcyI+PC9zdHlsZT4KCiAgPGRpdiBpZD0ic3Bpbm5lckNvbnRhaW5lciIgY2xhc3MtbmFtZT0iW1tfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzKGFjdGl2ZSwgX19jb29saW5nRG93bildXSIgb24tYW5pbWF0aW9uZW5kPSJfX3Jlc2V0IiBvbi13ZWJraXQtYW5pbWF0aW9uLWVuZD0iX19yZXNldCI+CiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTEiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci0yIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItMyI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTQiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CmA7bHMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksUnIoe190ZW1wbGF0ZTpscyxpczoicGFwZXItc3Bpbm5lciIsYmVoYXZpb3JzOlthc119KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgY3M9X2VgPGlyb24taWNvbnNldC1zdmcgbmFtZT0icGFwZXItdGFicyIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iY2hldnJvbi1sZWZ0Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGV2cm9uLXJpZ2h0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoY3MuY29udGVudCksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDAgMTJweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYjsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2xpbmtdKSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRhYi1jb250ZW50IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjFzIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSk7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1wYXBlci10YWItY29udGVudDsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1zZWxlY3RlZCkpID4gLnRhYi1jb250ZW50IHsKICAgICAgICBvcGFjaXR5OiAwLjg7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50LXVuc2VsZWN0ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cykgLnRhYi1jb250ZW50IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50LWZvY3VzZWQ7CiAgICAgIH0KCiAgICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRhYi1pbmssIHZhcigtLXBhcGVyLXllbGxvdy1hMTAwKSk7CiAgICAgIH0KCiAgICAgIC50YWItY29udGVudCA+IDo6c2xvdHRlZChhKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKCiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9InRhYi1jb250ZW50Ij4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXRhYiIsYmVoYXZpb3JzOltxbyxYbyxKb10scHJvcGVydGllczp7bGluazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19LGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJ0YWIifSxsaXN0ZW5lcnM6e2Rvd246Il91cGRhdGVOb2luayIsdGFwOiJfb25UYXAifSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZU5vaW5rKCl9LGdldCBfcGFyZW50Tm9pbmsoKXt2YXIgdD1ZaSh0aGlzKS5wYXJlbnROb2RlO3JldHVybiEhdCYmISF0Lm5vaW5rfSxfdXBkYXRlTm9pbms6ZnVuY3Rpb24oKXt0aGlzLm5vaW5rPSEhdGhpcy5ub2lua3x8ISF0aGlzLl9wYXJlbnROb2lua30sX29uVGFwOmZ1bmN0aW9uKHQpe2lmKHRoaXMubGluayl7dmFyIGU9dGhpcy5xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKCJhIik7aWYoIWUpcmV0dXJuO2lmKHQudGFyZ2V0PT09ZSlyZXR1cm47ZS5jbGljaygpfX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KUnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwoKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwoKICAgICAgICAvKiBOT1RFOiBCb3RoIHZhbHVlcyBhcmUgbmVlZGVkLCBzaW5jZSBzb21lIHBob25lcyByZXF1aXJlIHRoZSB2YWx1ZSB0byBiZSBcYHRyYW5zcGFyZW50XGAuICovCiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnM7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsLXJldmVyc2U7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGFpbmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGFpbmVyOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAtbW96LWZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgLW1zLWZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBAYXBwbHkgLS1wYXBlci10YWJzLWNvbnRlbnQ7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50Om5vdCguc2Nyb2xsYWJsZSksCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQuc2Nyb2xsYWJsZS5maXQtY29udGFpbmVyIHsKICAgICAgICBtaW4td2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIC8qIElFIC0gcHJldmVudCB0YWJzIGZyb20gY29tcHJlc3Npbmcgd2hlbiB0aGV5IHNob3VsZCBzY3JvbGwuICovCiAgICAgICAgLW1zLWZsZXg6IDEgMCBhdXRvOwogICAgICAgIC13ZWJraXQtZmxleDogMSAwIGF1dG87CiAgICAgICAgZmxleDogMSAwIGF1dG87CiAgICAgIH0KCiAgICAgIC5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ub3QtdmlzaWJsZSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgcGFkZGluZzogMTJweDsKICAgICAgICBtYXJnaW46IDAgNHB4OwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1wYXBlci10YWJzLXNlbGVjdGlvbi1iYXItY29sb3IsIHZhcigtLXBhcGVyLXllbGxvdy1hMTAwKSk7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7CiAgICAgICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm07CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhcjsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5hbGlnbi1ib3R0b20gewogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IGF1dG87CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIuZXhwYW5kIHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5jb250cmFjdCB7CiAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xOHM7CiAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50ID4gOjpzbG90dGVkKDpub3QoI3NlbGVjdGlvbkJhcikpIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InBhcGVyLXRhYnM6Y2hldnJvbi1sZWZ0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfbGVmdEhpZGRlbiwgc2Nyb2xsYWJsZSwgaGlkZVNjcm9sbEJ1dHRvbnMpXV0iIG9uLXVwPSJfb25TY3JvbGxCdXR0b25VcCIgb24tZG93bj0iX29uTGVmdFNjcm9sbEJ1dHRvbkRvd24iIHRhYmluZGV4PSItMSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KCiAgICA8ZGl2IGlkPSJ0YWJzQ29udGFpbmVyIiBvbi10cmFjaz0iX3Njcm9sbCIgb24tZG93bj0iX2Rvd24iPgogICAgICA8ZGl2IGlkPSJ0YWJzQ29udGVudCIgY2xhc3MkPSJbW19jb21wdXRlVGFic0NvbnRlbnRDbGFzcyhzY3JvbGxhYmxlLCBmaXRDb250YWluZXIpXV0iPgogICAgICAgIDxkaXYgaWQ9InNlbGVjdGlvbkJhciIgY2xhc3MkPSJbW19jb21wdXRlU2VsZWN0aW9uQmFyQ2xhc3Mobm9CYXIsIGFsaWduQm90dG9tKV1dIiBvbi10cmFuc2l0aW9uZW5kPSJfb25CYXJUcmFuc2l0aW9uRW5kIj48L2Rpdj4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InBhcGVyLXRhYnM6Y2hldnJvbi1yaWdodCIgY2xhc3MkPSJbW19jb21wdXRlU2Nyb2xsQnV0dG9uQ2xhc3MoX3JpZ2h0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25SaWdodFNjcm9sbEJ1dHRvbkRvd24iIHRhYmluZGV4PSItMSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KYCxpczoicGFwZXItdGFicyIsYmVoYXZpb3JzOltnbyxpc10scHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LG5vQmFyOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vU2xpZGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2Nyb2xsYWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxmaXRDb250YWluZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZGlzYWJsZURyYWc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saGlkZVNjcm9sbEJ1dHRvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWxpZ25Cb3R0b206e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2VsZWN0YWJsZTp7dHlwZTpTdHJpbmcsdmFsdWU6InBhcGVyLXRhYiJ9LGF1dG9zZWxlY3Q6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b3NlbGVjdERlbGF5Ont0eXBlOk51bWJlcix2YWx1ZTowfSxfc3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MTB9LF9ob2xkRGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjF9LF9sZWZ0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9yaWdodEhpZGRlbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfcHJldmlvdXNUYWI6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRhYmxpc3QifSxsaXN0ZW5lcnM6eyJpcm9uLXJlc2l6ZSI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLWl0ZW1zLWNoYW5nZWQiOiJfb25UYWJTaXppbmdDaGFuZ2VkIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0IiwiaXJvbi1kZXNlbGVjdCI6Il9vbklyb25EZXNlbGVjdCJ9LGtleUJpbmRpbmdzOnsibGVmdDprZXl1cCByaWdodDprZXl1cCI6Il9vbkFycm93S2V5dXAifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faG9sZEpvYj1udWxsLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT12b2lkIDAsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXZvaWQgMCx0aGlzLl9iaW5kRGVsYXllZEFjdGl2YXRpb25IYW5kbGVyPXRoaXMuX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlci5iaW5kKHRoaXMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fb25CbHVyQ2FwdHVyZS5iaW5kKHRoaXMpLCEwKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNldFNjcm9sbERpcmVjdGlvbigieSIsdGhpcy4kLnRhYnNDb250YWluZXIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uKCl9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24odCl7WWkodGhpcykucXVlcnlTZWxlY3RvckFsbCgicGFwZXItdGFiIikuZm9yRWFjaCh0P3RoaXMuX3NldE5vaW5rQXR0cmlidXRlOnRoaXMuX3JlbW92ZU5vaW5rQXR0cmlidXRlKX0sX3NldE5vaW5rQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKCJub2luayIsIiIpfSxfcmVtb3ZlTm9pbmtBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7dC5yZW1vdmVBdHRyaWJ1dGUoIm5vaW5rIil9LF9jb21wdXRlU2Nyb2xsQnV0dG9uQ2xhc3M6ZnVuY3Rpb24odCxlLG4pe3JldHVybiFlfHxuPyJoaWRkZW4iOnQ/Im5vdC12aXNpYmxlIjoiIn0sX2NvbXB1dGVUYWJzQ29udGVudENsYXNzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ/InNjcm9sbGFibGUiKyhlPyIgZml0LWNvbnRhaW5lciI6IiIpOiIgZml0LWNvbnRhaW5lciJ9LF9jb21wdXRlU2VsZWN0aW9uQmFyQ2xhc3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8iaGlkZGVuIjplPyJhbGlnbi1ib3R0b20iOiIifSxfb25UYWJTaXppbmdDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kZWJvdW5jZSgiX29uVGFiU2l6aW5nQ2hhbmdlZCIsKGZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsKCksdGhpcy5fdGFiQ2hhbmdlZCh0aGlzLnNlbGVjdGVkSXRlbSl9KSwxMCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fdGFiQ2hhbmdlZCh0LmRldGFpbC5pdGVtLHRoaXMuX3ByZXZpb3VzVGFiKSx0aGlzLl9wcmV2aW91c1RhYj10LmRldGFpbC5pdGVtLHRoaXMuY2FuY2VsRGVib3VuY2VyKCJ0YWItY2hhbmdlZCIpfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5kZWJvdW5jZSgidGFiLWNoYW5nZWQiLChmdW5jdGlvbigpe3RoaXMuX3RhYkNoYW5nZWQobnVsbCx0aGlzLl9wcmV2aW91c1RhYiksdGhpcy5fcHJldmlvdXNUYWI9bnVsbH0pLDEpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKSxaYS5fYWN0aXZhdGVIYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3NjaGVkdWxlQWN0aXZhdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT10LHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD10aGlzLmFzeW5jKHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXIsZSl9LF9kZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW07dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLHQuZmlyZSh0aGlzLmFjdGl2YXRlRXZlbnQsbnVsbCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSl9LF9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbjpmdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dCYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0KSx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD12b2lkIDApfSxfb25BcnJvd0tleXVwOmZ1bmN0aW9uKHQpe3RoaXMuYXV0b3NlbGVjdCYmdGhpcy5fc2NoZWR1bGVBY3RpdmF0aW9uKHRoaXMuZm9jdXNlZEl0ZW0sdGhpcy5hdXRvc2VsZWN0RGVsYXkpfSxfb25CbHVyQ2FwdHVyZTpmdW5jdGlvbih0KXt0LnRhcmdldD09PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbSYmdGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sZ2V0IF90YWJDb250YWluZXJTY3JvbGxTaXplKCl7cmV0dXJuIE1hdGgubWF4KDAsdGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsV2lkdGgtdGhpcy4kLnRhYnNDb250YWluZXIub2Zmc2V0V2lkdGgpfSxfc2Nyb2xsOmZ1bmN0aW9uKHQsZSl7dGhpcy5zY3JvbGxhYmxlJiZ0aGlzLl9hZmZlY3RTY3JvbGwoZSYmLWUuZGR4fHwwKX0sX2Rvd246ZnVuY3Rpb24odCl7dGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fZGVmYXVsdEZvY3VzQXN5bmMpLHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jPW51bGwpfSksMSl9LF9hZmZlY3RTY3JvbGw6ZnVuY3Rpb24odCl7dGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsTGVmdCs9dDt2YXIgZT10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0O3RoaXMuX2xlZnRIaWRkZW49MD09PWUsdGhpcy5fcmlnaHRIaWRkZW49ZT09PXRoaXMuX3RhYkNvbnRhaW5lclNjcm9sbFNpemV9LF9vbkxlZnRTY3JvbGxCdXR0b25Eb3duOmZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsVG9MZWZ0KCksdGhpcy5faG9sZEpvYj1zZXRJbnRlcnZhbCh0aGlzLl9zY3JvbGxUb0xlZnQuYmluZCh0aGlzKSx0aGlzLl9ob2xkRGVsYXkpfSxfb25SaWdodFNjcm9sbEJ1dHRvbkRvd246ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxUb1JpZ2h0KCksdGhpcy5faG9sZEpvYj1zZXRJbnRlcnZhbCh0aGlzLl9zY3JvbGxUb1JpZ2h0LmJpbmQodGhpcyksdGhpcy5faG9sZERlbGF5KX0sX29uU2Nyb2xsQnV0dG9uVXA6ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKHRoaXMuX2hvbGRKb2IpLHRoaXMuX2hvbGRKb2I9bnVsbH0sX3Njcm9sbFRvTGVmdDpmdW5jdGlvbigpe3RoaXMuX2FmZmVjdFNjcm9sbCgtdGhpcy5fc3RlcCl9LF9zY3JvbGxUb1JpZ2h0OmZ1bmN0aW9uKCl7dGhpcy5fYWZmZWN0U2Nyb2xsKHRoaXMuX3N0ZXApfSxfdGFiQ2hhbmdlZDpmdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiB0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx2b2lkIHRoaXMuX3Bvc2l0aW9uQmFyKDAsMCk7dmFyIG49dGhpcy4kLnRhYnNDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9bi53aWR0aCxyPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLmxlZnQtbi5sZWZ0O2lmKHRoaXMuX3Bvcz17d2lkdGg6dGhpcy5fY2FsY1BlcmNlbnQoci53aWR0aCxpKSxsZWZ0OnRoaXMuX2NhbGNQZXJjZW50KG8saSl9LHRoaXMubm9TbGlkZXx8bnVsbD09ZSlyZXR1cm4gdGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmQiKSx0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImNvbnRyYWN0Iiksdm9pZCB0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpO3ZhciBhPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz10aGlzLml0ZW1zLmluZGV4T2YoZSksbD10aGlzLml0ZW1zLmluZGV4T2YodCk7dGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QuYWRkKCJleHBhbmQiKTt2YXIgYz1zPGw7dGhpcy5faXNSVEwmJihjPSFjKSxjP3RoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX2NhbGNQZXJjZW50KHIubGVmdCtyLndpZHRoLWEubGVmdCxpKS01LHRoaXMuX2xlZnQpOnRoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX2NhbGNQZXJjZW50KGEubGVmdCthLndpZHRoLXIubGVmdCxpKS01LHRoaXMuX2NhbGNQZXJjZW50KG8saSkrNSksdGhpcy5zY3JvbGxhYmxlJiZ0aGlzLl9zY3JvbGxUb1NlbGVjdGVkSWZOZWVkZWQoci53aWR0aCxvKX0sX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZDpmdW5jdGlvbih0LGUpe3ZhciBuPWUtdGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsTGVmdDsobjwwfHwobis9dC10aGlzLiQudGFic0NvbnRhaW5lci5vZmZzZXRXaWR0aCk+MCkmJih0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz1uKX0sX2NhbGNQZXJjZW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDEwMCp0L2V9LF9wb3NpdGlvbkJhcjpmdW5jdGlvbih0LGUpe2U9ZXx8MCx0aGlzLl93aWR0aD10PXR8fDAsdGhpcy5fbGVmdD1lLHRoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGVYKCIrZSsiJSkgc2NhbGVYKCIrdC8xMDArIikiLHRoaXMuJC5zZWxlY3Rpb25CYXIpfSxfb25CYXJUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0O2UuY29udGFpbnMoImV4cGFuZCIpPyhlLnJlbW92ZSgiZXhwYW5kIiksZS5hZGQoImNvbnRyYWN0IiksdGhpcy5fcG9zaXRpb25CYXIodGhpcy5fcG9zLndpZHRoLHRoaXMuX3Bvcy5sZWZ0KSk6ZS5jb250YWlucygiY29udHJhY3QiKSYmZS5yZW1vdmUoImNvbnRyYWN0Iil9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgdXM9bnVsbDtScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvYXN0LWJhY2tncm91bmQtY29sb3IsICMzMjMyMzIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2FzdC1jb2xvciwgI2YxZjFmMSk7CiAgICAgICAgbWluLWhlaWdodDogNDhweDsKICAgICAgICBtaW4td2lkdGg6IDI4OHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHggMjRweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yNik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIG1hcmdpbjogMTJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zcywgb3BhY2l0eSAwLjNzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3M7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICB9CgogICAgICA6aG9zdCguY2Fwc3VsZSkgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KC5maXQtYm90dG9tKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICA6aG9zdCgucGFwZXItdG9hc3Qtb3BlbikgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c3BhbiBpZD0ibGFiZWwiPnt7dGV4dH19PC9zcGFuPgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci10b2FzdCIsYmVoYXZpb3JzOltrYV0scHJvcGVydGllczp7Zml0SW50bzp7dHlwZTpPYmplY3QsdmFsdWU6d2luZG93LG9ic2VydmVyOiJfb25GaXRJbnRvQ2hhbmdlZCJ9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImxlZnQifSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToiYm90dG9tIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHZhbHVlOjNlM30sdGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH19LGxpc3RlbmVyczp7dHJhbnNpdGlvbmVuZDoiX19vblRyYW5zaXRpb25FbmQifSxnZXQgdmlzaWJsZSgpe3JldHVybiBmby5fd2FybigiYHZpc2libGVgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgb3BlbmVkYCBpbnN0ZWFkIiksdGhpcy5vcGVuZWR9LGdldCBfY2FuQXV0b0Nsb3NlKCl7cmV0dXJuIHRoaXMuZHVyYXRpb24+MCYmdGhpcy5kdXJhdGlvbiE9PTEvMH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2F1dG9DbG9zZT1udWxsLE9hLnJlcXVlc3RBdmFpbGFiaWxpdHkoKX0sc2hvdzpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4ic3RyaW5nIj09dHlwZW9mIHQmJih0PXt0ZXh0OnR9KSx0KTA9PT1lLmluZGV4T2YoIl8iKT9mby5fd2FybignVGhlIHByb3BlcnR5ICInK2UrJyIgaXMgcHJpdmF0ZSBhbmQgd2FzIG5vdCBzZXQuJyk6ZSBpbiB0aGlzP3RoaXNbZV09dFtlXTpmby5fd2FybignVGhlIHByb3BlcnR5ICInK2UrJyIgaXMgbm90IHZhbGlkLicpO3RoaXMub3BlbigpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZSgpfSxfX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXt0JiZ0LnRhcmdldD09PXRoaXMmJiJvcGFjaXR5Ij09PXQucHJvcGVydHlOYW1lJiYodGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCkpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbigpe251bGwhPT10aGlzLl9hdXRvQ2xvc2UmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2F1dG9DbG9zZSksdGhpcy5fYXV0b0Nsb3NlPW51bGwpLHRoaXMub3BlbmVkPyh1cyYmdXMhPT10aGlzJiZ1cy5jbG9zZSgpLHVzPXRoaXMsdGhpcy5maXJlKCJpcm9uLWFubm91bmNlIix7dGV4dDp0aGlzLnRleHR9KSx0aGlzLl9jYW5BdXRvQ2xvc2UmJih0aGlzLl9hdXRvQ2xvc2U9dGhpcy5hc3luYyh0aGlzLmNsb3NlLHRoaXMuZHVyYXRpb24pKSk6dXM9PT10aGlzJiYodXM9bnVsbCksQ2EuX29wZW5lZENoYW5nZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jbGFzc0xpc3QuYWRkKCJwYXBlci10b2FzdC1vcGVuIil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsYXNzTGlzdC5yZW1vdmUoInBhcGVyLXRvYXN0LW9wZW4iKX0sX29uRml0SW50b0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5wb3NpdGlvblRhcmdldD10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBocz1fZWAKCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cykgewogICAgICAgIG91dGxpbmU6bm9uZTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1iYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJhci1jb2xvciwgIzAwMDAwMCk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJhcjsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC0zcHg7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSBsaW5lYXIgLjA4cywgYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbGluZWFyIC4wOHMsIGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1idXR0b24tY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNTApKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYnV0dG9uOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbi5kcmFnZ2luZyB7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXTpub3QoW2Rpc2FibGVkXSkpIC50b2dnbGUtYmFyIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJhci1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYmFyOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudG9nZ2xlLWJhciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICAgICAgICBvcGFjaXR5OiAwLjEyOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDApOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF06bm90KFtkaXNhYmxlZF0pKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJ1dHRvbi1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYnV0dG9uOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JkYmRiZDsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAudG9nZ2xlLWluayB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTE0cHg7CiAgICAgICAgbGVmdDogLTE0cHg7CiAgICAgICAgcmlnaHQ6IGF1dG87CiAgICAgICAgYm90dG9tOiBhdXRvOwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWluazsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdKSAudG9nZ2xlLWluayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWluazsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIC8qIFRoZSB0b2dnbGUgYnV0dG9uIGhhcyBhbiBhYnNvbHV0ZSBwb3NpdGlvbiBvZiAtM3B4OyBUaGUgZXh0cmEgMXB4CiAgICAgICAgLyogYWNjb3VudHMgZm9yIHRoZSB0b2dnbGUgYnV0dG9uIHNoYWRvdyBib3guICovCiAgICAgICAgbWFyZ2luOiA0cHggMXB4OwogICAgICB9CgogICAgICAudG9nZ2xlLWxhYmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICAvKiBpbnZhbGlkIHN0YXRlICovCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1iYXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1iYXItY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1idXR0b24tY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1pbmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWludmFsaWQtaW5rLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1jb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJ0b2dnbGVCYXIiIGNsYXNzPSJ0b2dnbGUtYmFyIj48L2Rpdj4KICAgICAgPGRpdiBpZD0idG9nZ2xlQnV0dG9uIiBjbGFzcz0idG9nZ2xlLWJ1dHRvbiI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtbGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj4KCiAgYDtocy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxScih7X3RlbXBsYXRlOmhzLGlzOiJwYXBlci10b2dnbGUtYnV0dG9uIixiZWhhdmlvcnM6W3VhXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIiwiYXJpYS1wcmVzc2VkIjoiZmFsc2UiLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e30sbGlzdGVuZXJzOnt0cmFjazoiX29udHJhY2sifSxhdHRhY2hlZDpmdW5jdGlvbigpe0xpKHRoaXMsKGZ1bmN0aW9uKCl7b2kodGhpcywicGFuLXkiKX0pKX0sX29udHJhY2s6ZnVuY3Rpb24odCl7dmFyIGU9dC5kZXRhaWw7InN0YXJ0Ij09PWUuc3RhdGU/dGhpcy5fdHJhY2tTdGFydChlKToidHJhY2siPT09ZS5zdGF0ZT90aGlzLl90cmFja01vdmUoZSk6ImVuZCI9PT1lLnN0YXRlJiZ0aGlzLl90cmFja0VuZChlKX0sX3RyYWNrU3RhcnQ6ZnVuY3Rpb24odCl7dGhpcy5fd2lkdGg9dGhpcy4kLnRvZ2dsZUJhci5vZmZzZXRXaWR0aC8yLHRoaXMuX3RyYWNrQ2hlY2tlZD10aGlzLmNoZWNrZWQsdGhpcy4kLnRvZ2dsZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZyIpfSxfdHJhY2tNb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZHg7dGhpcy5feD1NYXRoLm1pbih0aGlzLl93aWR0aCxNYXRoLm1heCgwLHRoaXMuX3RyYWNrQ2hlY2tlZD90aGlzLl93aWR0aCtlOmUpKSx0aGlzLnRyYW5zbGF0ZTNkKHRoaXMuX3grInB4IiwwLDAsdGhpcy4kLnRvZ2dsZUJ1dHRvbiksdGhpcy5fdXNlckFjdGl2YXRlKHRoaXMuX3g+dGhpcy5fd2lkdGgvMil9LF90cmFja0VuZDpmdW5jdGlvbih0KXt0aGlzLiQudG9nZ2xlQnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy50cmFuc2Zvcm0oIiIsdGhpcy4kLnRvZ2dsZUJ1dHRvbil9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXt0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLnRvZ2dsZUJ1dHRvbjt2YXIgdD1Kby5fY3JlYXRlUmlwcGxlKCk7cmV0dXJuIHQuaWQ9ImluayIsdC5zZXRBdHRyaWJ1dGUoInJlY2VudGVycyIsIiIpLHQuY2xhc3NMaXN0LmFkZCgiY2lyY2xlIiwidG9nZ2xlLWluayIpLHR9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpScih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0OiB2YXIoLS1wYXBlci10b29sYmFyLWhlaWdodCwgNjRweCk7CiAgICAgICAgLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0OiB2YXIoLS1wYXBlci10b29sYmFyLXNtLWhlaWdodCwgNTZweCk7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItdG9vbGJhci1iYWNrZ3JvdW5kLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvb2xiYXItY29sb3IsIHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2xiYXI7CiAgICAgIH0KCiAgICAgIDpob3N0KC5hbmltYXRlKSB7CiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tcGFwZXItdG9vbGJhci10cmFuc2l0aW9uLCBoZWlnaHQgMC4xOHMgZWFzZS1pbik7CiAgICAgIH0KCiAgICAgIDpob3N0KC5tZWRpdW0tdGFsbCkgewogICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KSAqIDIpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2xiYXItbWVkaXVtOwogICAgICB9CgogICAgICA6aG9zdCgudGFsbCkgewogICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KSAqIDMpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2xiYXItdGFsbDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpOwogICAgICAgIHBhZGRpbmc6IDAgMTZweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2xiYXItY29udGVudDsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogVE9ETzogV2hlcmUgc2hvdWxkIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzIGxpdmUgc28gdGhleSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZWxlbWVudHM/CiAgICAgICAqLwoKICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7CiAgICAgICAgOmhvc3QgewogICAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0KTsKICAgICAgICB9CgogICAgICAgIDpob3N0KC5tZWRpdW0tdGFsbCkgewogICAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpICogMik7CiAgICAgICAgfQoKICAgICAgICA6aG9zdCgudGFsbCkgewogICAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpICogMyk7CiAgICAgICAgfQoKICAgICAgICAudG9vbGJhci10b29scyB7CiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgI3RvcEJhciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAvKiBtaWRkbGUgYmFyICovCiAgICAgICNtaWRkbGVCYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgOmhvc3QoLnRhbGwpICNtaWRkbGVCYXIsCiAgICAgIDpob3N0KC5tZWRpdW0tdGFsbCkgI21pZGRsZUJhciB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICB9CgogICAgICAvKiBib3R0b20gYmFyICovCiAgICAgICNib3R0b21CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbWFrZSBlbGVtZW50cyAoZS5nLiBidXR0b25zKSByZXNwb25kIHRvIG1vdXNlL3RvdWNoIGV2ZW50cwogICAgICAgKgogICAgICAgKiBcYC50b29sYmFyLXRvb2xzXGAgZGlzYWJsZXMgdG91Y2ggZXZlbnRzIHNvIG11bHRpcGxlIHRvb2xiYXJzIGNhbiBzdGFjayBhbmQgbm90CiAgICAgICAqIGFic29yYiBldmVudHMuIEFsbCBjaGlsZHJlbiBtdXN0IGhhdmUgcG9pbnRlciBldmVudHMgcmUtZW5hYmxlZCB0byB3b3JrIGFzCiAgICAgICAqIGV4cGVjdGVkLgogICAgICAgKi8KICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoKjpub3QoW2Rpc2FibGVkXSkpIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKC50aXRsZSkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1NnB4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZChwYXBlci1pY29uLWJ1dHRvbiArIC50aXRsZSkgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICB9CgogICAgICAvKioKICAgICAgICogVGhlIC0tcGFwZXItdG9vbGJhci10aXRsZSBtaXhpbiBpcyBhcHBsaWVkIGhlcmUgaW5zdGVhZCBvZiBhYm92ZSB0bwogICAgICAgKiBmaXggdGhlIGlzc3VlIHdpdGggbWFyZ2luLWxlZnQgYmVpbmcgaWdub3JlZCBkdWUgdG8gY3NzIG9yZGVyaW5nLgogICAgICAgKi8KICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10aXRsZTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQocGFwZXItaWNvbi1idXR0b25baWNvbj1tZW51XSkgewogICAgICAgIG1hcmdpbi1yaWdodDogMjRweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLmZpdCkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IGF1dG87CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAvKiBUT0RPKG5vbXMpOiBVbnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIGZvciBjbGFzc2VzIHRoYXQgZG9uJ3QgdXNlCiAgICAgICAqIC9kZWVwLyBjcmVhdGUgb3VyIG93bi4KICAgICAgICovCiAgICAgIC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1zdGFydC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5jZW50ZXItanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmVuZC1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkOwogICAgICB9CgogICAgICAuYXJvdW5kLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWFyb3VuZC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1qdXN0aWZpZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0idG9wQmFyIiBjbGFzc1wkPSJ0b29sYmFyLXRvb2xzIFtbX2NvbXB1dGVCYXJFeHRyYUNsYXNzZXMoanVzdGlmeSldXSI+CiAgICAgIDxzbG90IG5hbWU9InRvcCI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0ibWlkZGxlQmFyIiBjbGFzc1wkPSJ0b29sYmFyLXRvb2xzIFtbX2NvbXB1dGVCYXJFeHRyYUNsYXNzZXMobWlkZGxlSnVzdGlmeSldXSI+CiAgICAgIDxzbG90IG5hbWU9Im1pZGRsZSI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iYm90dG9tQmFyIiBjbGFzc1wkPSJ0b29sYmFyLXRvb2xzIFtbX2NvbXB1dGVCYXJFeHRyYUNsYXNzZXMoYm90dG9tSnVzdGlmeSldXSI+CiAgICAgIDxzbG90IG5hbWU9ImJvdHRvbSI+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXRvb2xiYXIiLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJ0b29sYmFyIn0scHJvcGVydGllczp7Ym90dG9tSnVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxtaWRkbGVKdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn19LHJlYWR5OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKHRoaXMuaXMsImlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYXBwLWxheW91dCBpbnN0ZWFkISIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPXRoaXMuX29ic2VydmUodGhpcyksdGhpcy5fdXBkYXRlQXJpYUxhYmVsbGVkQnkoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlciYmdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpfSxfb2JzZXJ2ZTpmdW5jdGlvbih0KXt2YXIgZT1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCl9LmJpbmQodGhpcykpO3JldHVybiBlLm9ic2VydmUodCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxlfSxfdXBkYXRlQXJpYUxhYmVsbGVkQnk6ZnVuY3Rpb24oKXtEaSgpO2Zvcih2YXIgdCxlPVtdLG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoWWkodGhpcy5yb290KS5xdWVyeVNlbGVjdG9yQWxsKCJzbG90IikpLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChZaSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoImNvbnRlbnQiKSkpLGk9MDt0PW5baV07aSsrKWZvcih2YXIgcixvPVlpKHQpLmdldERpc3RyaWJ1dGVkTm9kZXMoKSxhPTA7cj1vW2FdO2ErKylpZihyLmNsYXNzTGlzdCYmci5jbGFzc0xpc3QuY29udGFpbnMoInRpdGxlIikpaWYoci5pZCllLnB1c2goci5pZCk7ZWxzZXt2YXIgcz0icGFwZXItdG9vbGJhci1sYWJlbC0iK01hdGguZmxvb3IoMWU0Kk1hdGgucmFuZG9tKCkpO3IuaWQ9cyxlLnB1c2gocyl9ZS5sZW5ndGg+MCYmdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsZS5qb2luKCIgIikpfSxfY29tcHV0ZUJhckV4dHJhQ2xhc3NlczpmdW5jdGlvbih0KXtyZXR1cm4gdD90KygianVzdGlmaWVkIj09PXQ/IiI6Ii1qdXN0aWZpZWQiKToiIn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovClJyKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB6LWluZGV4OiAxMDAyOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAjdG9vbHRpcCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b29sdGlwLWJhY2tncm91bmQsICM2MTYxNjEpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b29sdGlwLXRleHQtY29sb3IsIHdoaXRlKTsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXA7CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTY2FsZVVwIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNjYWxlRG93biB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjApOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4wKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVGYWRlSW5PcGFjaXR5IHsKICAgICAgICAwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVGYWRlT3V0T3BhY2l0eSB7CiAgICAgICAgMCUgewogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2xpZGVEb3duSW4gewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIDEwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwLjI7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNsaWRlRG93bk91dCB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgICAxMCUgewogICAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICB9CgogICAgICAuZmFkZS1pbi1hbmltYXRpb24gewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lRmFkZUluT3BhY2l0eTsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5mYWRlLW91dC1hbmltYXRpb24gewogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZUZhZGVPdXRPcGFjaXR5OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zY2FsZS11cC1hbmltYXRpb24gewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNjYWxlVXA7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2NhbGUtZG93bi1hbmltYXRpb24gewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTY2FsZURvd247CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNsaWRlLWRvd24tYW5pbWF0aW9uIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2xpZGVEb3duSW47CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4wLCAwLjAsIDAuMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2xpZGUtZG93bi1hbmltYXRpb24tb3V0IHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTbGlkZURvd25PdXQ7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLmNhbmNlbC1hbmltYXRpb24gewogICAgICAgIGFuaW1hdGlvbi1kZWxheTogLTMwcyAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAvKiBUaGFua3MgSUUgMTAuICovCgogICAgICAuaGlkZGVuIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0idG9vbHRpcCIgY2xhc3M9ImhpZGRlbiI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci10b29sdGlwIixob3N0QXR0cmlidXRlczp7cm9sZToidG9vbHRpcCIsdGFiaW5kZXg6LTF9LHByb3BlcnRpZXM6e2Zvcjp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9maW5kVGFyZ2V0In0sbWFudWFsTW9kZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbWFudWFsTW9kZUNoYW5nZWQifSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImJvdHRvbSJ9LGZpdFRvVmlzaWJsZUJvdW5kczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxvZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjE0fSxtYXJnaW5Ub3A6e3R5cGU6TnVtYmVyLHZhbHVlOjE0fSxhbmltYXRpb25EZWxheTp7dHlwZTpOdW1iZXIsdmFsdWU6NTAwLG9ic2VydmVyOiJfZGVsYXlDaGFuZ2UifSxhbmltYXRpb25FbnRyeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGFuaW1hdGlvbkV4aXQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxhbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2VudHJ5Olt7bmFtZToiZmFkZS1pbi1hbmltYXRpb24iLG5vZGU6dGhpcyx0aW1pbmc6e2RlbGF5OjB9fV0sZXhpdDpbe25hbWU6ImZhZGUtb3V0LWFuaW1hdGlvbiIsbm9kZTp0aGlzfV19fX0sX3Nob3dpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7d2Via2l0QW5pbWF0aW9uRW5kOiJfb25BbmltYXRpb25FbmQifSxnZXQgdGFyZ2V0KCl7dmFyIHQ9WWkodGhpcykucGFyZW50Tm9kZSxlPVlpKHRoaXMpLmdldE93bmVyUm9vdCgpO3JldHVybiB0aGlzLmZvcj9ZaShlKS5xdWVyeVNlbGVjdG9yKCIjIit0aGlzLmZvcik6dC5ub2RlVHlwZT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFP2UuaG9zdDp0fSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2ZpbmRUYXJnZXQoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm1hbnVhbE1vZGV8fHRoaXMuX3JlbW92ZUxpc3RlbmVycygpfSxwbGF5QW5pbWF0aW9uOmZ1bmN0aW9uKHQpeyJlbnRyeSI9PT10P3RoaXMuc2hvdygpOiJleGl0Ij09PXQmJnRoaXMuaGlkZSgpfSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJjYW5jZWwtYW5pbWF0aW9uIil9LHNob3c6ZnVuY3Rpb24oKXtpZighdGhpcy5fc2hvd2luZyl7aWYoIiI9PT1ZaSh0aGlzKS50ZXh0Q29udGVudC50cmltKCkpe2Zvcih2YXIgdD0hMCxlPVlpKHRoaXMpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxuPTA7bjxlLmxlbmd0aDtuKyspaWYoIiIhPT1lW25dLnRleHRDb250ZW50LnRyaW0oKSl7dD0hMTticmVha31pZih0KXJldHVybn10aGlzLl9zaG93aW5nPSEwLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImNhbmNlbC1hbmltYXRpb24iKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy51cGRhdGVQb3NpdGlvbigpLHRoaXMuX2FuaW1hdGlvblBsYXlpbmc9ITAsdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKX19LGhpZGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9zaG93aW5nKXtpZih0aGlzLl9hbmltYXRpb25QbGF5aW5nKXJldHVybiB0aGlzLl9zaG93aW5nPSExLHZvaWQgdGhpcy5fY2FuY2VsQW5pbWF0aW9uKCk7dGhpcy5fb25BbmltYXRpb25GaW5pc2goKSx0aGlzLl9zaG93aW5nPSExLHRoaXMuX2FuaW1hdGlvblBsYXlpbmc9ITB9fSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXMuX3RhcmdldCYmdGhpcy5vZmZzZXRQYXJlbnQpe3ZhciB0PXRoaXMub2Zmc2V0OzE0IT10aGlzLm1hcmdpblRvcCYmMTQ9PXRoaXMub2Zmc2V0JiYodD10aGlzLm1hcmdpblRvcCk7dmFyIGUsbixpPXRoaXMub2Zmc2V0UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9dGhpcy5fdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPShyLndpZHRoLW8ud2lkdGgpLzIscz0oci5oZWlnaHQtby5oZWlnaHQpLzIsbD1yLmxlZnQtaS5sZWZ0LGM9ci50b3AtaS50b3A7c3dpdGNoKHRoaXMucG9zaXRpb24pe2Nhc2UidG9wIjplPWwrYSxuPWMtby5oZWlnaHQtdDticmVhaztjYXNlImJvdHRvbSI6ZT1sK2Esbj1jK3IuaGVpZ2h0K3Q7YnJlYWs7Y2FzZSJsZWZ0IjplPWwtby53aWR0aC10LG49YytzO2JyZWFrO2Nhc2UicmlnaHQiOmU9bCtyLndpZHRoK3Qsbj1jK3N9dGhpcy5maXRUb1Zpc2libGVCb3VuZHM/KGkubGVmdCtlK28ud2lkdGg+d2luZG93LmlubmVyV2lkdGg/KHRoaXMuc3R5bGUucmlnaHQ9IjBweCIsdGhpcy5zdHlsZS5sZWZ0PSJhdXRvIik6KHRoaXMuc3R5bGUubGVmdD1NYXRoLm1heCgwLGUpKyJweCIsdGhpcy5zdHlsZS5yaWdodD0iYXV0byIpLGkudG9wK24rby5oZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0Pyh0aGlzLnN0eWxlLmJvdHRvbT1pLmhlaWdodC1jK3QrInB4Iix0aGlzLnN0eWxlLnRvcD0iYXV0byIpOih0aGlzLnN0eWxlLnRvcD1NYXRoLm1heCgtaS50b3AsbikrInB4Iix0aGlzLnN0eWxlLmJvdHRvbT0iYXV0byIpKToodGhpcy5zdHlsZS5sZWZ0PWUrInB4Iix0aGlzLnN0eWxlLnRvcD1uKyJweCIpfX0sX2FkZExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3RhcmdldCYmKHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwibW91c2VlbnRlciIsInNob3ciKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwibW91c2VsZWF2ZSIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsImJsdXIiLCJoaWRlIiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpLHRoaXMubGlzdGVuKHRoaXMuJC50b29sdGlwLCJhbmltYXRpb25lbmQiLCJfb25BbmltYXRpb25FbmQiKSx0aGlzLmxpc3Rlbih0aGlzLCJtb3VzZWVudGVyIiwiaGlkZSIpfSxfZmluZFRhcmdldDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZXx8dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCksdGhpcy5fdGFyZ2V0PXRoaXMudGFyZ2V0LHRoaXMubWFudWFsTW9kZXx8dGhpcy5fYWRkTGlzdGVuZXJzKCl9LF9kZWxheUNoYW5nZTpmdW5jdGlvbih0KXs1MDAhPT10JiZ0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItdG9vbHRpcC1kZWxheS1pbiI6dCsibXMifSl9LF9tYW51YWxNb2RlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZT90aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKTp0aGlzLl9hZGRMaXN0ZW5lcnMoKX0sX2NhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZW50cnkiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImNhbmNlbC1hbmltYXRpb24iKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX0sX29uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fc2hvd2luZyYmKHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZW50cnkiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKSl9LF9vbkFuaW1hdGlvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGlvblBsYXlpbmc9ITEsdGhpcy5fc2hvd2luZ3x8KHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKSl9LF9nZXRBbmltYXRpb25UeXBlOmZ1bmN0aW9uKHQpe2lmKCJlbnRyeSI9PT10JiYiIiE9PXRoaXMuYW5pbWF0aW9uRW50cnkpcmV0dXJuIHRoaXMuYW5pbWF0aW9uRW50cnk7aWYoImV4aXQiPT09dCYmIiIhPT10aGlzLmFuaW1hdGlvbkV4aXQpcmV0dXJuIHRoaXMuYW5pbWF0aW9uRXhpdDtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XSYmInN0cmluZyI9PXR5cGVvZiB0aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS5uYW1lKXtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS50aW1pbmcmJnRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLnRpbWluZy5kZWxheSYmMCE9PXRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLnRpbWluZy5kZWxheSl7dmFyIGU9dGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5OyJlbnRyeSI9PT10P3RoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LWluIjplKyJtcyJ9KToiZXhpdCI9PT10JiZ0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQiOmUrIm1zIn0pfXJldHVybiB0aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS5uYW1lfX0sX3JlbW92ZUxpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3RhcmdldCYmKHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWVudGVyIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJmb2N1cyIsInNob3ciKSx0aGlzLnVubGlzdGVuKHRoaXMuX3RhcmdldCwibW91c2VsZWF2ZSIsImhpZGUiKSx0aGlzLnVubGlzdGVuKHRoaXMuX3RhcmdldCwiYmx1ciIsImhpZGUiKSx0aGlzLnVubGlzdGVuKHRoaXMuX3RhcmdldCwidGFwIiwiaGlkZSIpKSx0aGlzLnVubGlzdGVuKHRoaXMuJC50b29sdGlwLCJhbmltYXRpb25lbmQiLCJfb25BbmltYXRpb25FbmQiKSx0aGlzLnVubGlzdGVuKHRoaXMsIm1vdXNlZW50ZXIiLCJoaWRlIil9fSk7Y2xhc3MgZHN7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lcj10fX1jb25zdCBwcz1uZXcgU2V0LGZzPW5ldyBTZXQ7ZnVuY3Rpb24gbXModCl7Y29uc3QgZT1uZXcgZHModCk7cmV0dXJuIHBzLmFkZChlKSxlfWZ1bmN0aW9uIGdzKHQpe2NvbnN0IGU9bmV3IGRzKHQpO3JldHVybiBmcy5hZGQoZSksZX1mdW5jdGlvbiBfcygpe2ZzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfWZ1bmN0aW9uIHlzKHQpe3BzLmRlbGV0ZSh0KX1mdW5jdGlvbiB2cyh0KXtmcy5kZWxldGUodCl9d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLCgoKT0+e3BzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzdG9yYWdlIiwoKCk9Pntmcy5mb3JFYWNoKCh0PT50Lmxpc3RlbmVyKCkpKX0pKTtsZXQgYnM9ITE7ZnVuY3Rpb24geHMoKXtyZXR1cm4gYnN9bGV0IHdzPSIiO2Z1bmN0aW9uIFNzKHQpe3dzPXR9ZnVuY3Rpb24gTXMoKXtyZXR1cm4gd3N9dmFyIEVzPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHNldFVzZUhhc2g6ZnVuY3Rpb24gVHModCl7YnM9dH0sdXNlSGFzaDp4cyxzZXRGYWtlSGFzaDpTcyxnZXRGYWtlSGFzaDpNc30pO2xldCBDcz17fTtmdW5jdGlvbiBBcygpe3JldHVybiB4cygpP3dpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpOk1zKCl9ZnVuY3Rpb24ga3ModCl7Y29uc3QgZT17fTtyZXR1cm4gdC5zcGxpdCgiJiIpLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuc3BsaXQoIj0iKTsxPT09bi5sZW5ndGg/ZS5fX3RhYl9fPW5bMF06Mj09PW4ubGVuZ3RoJiYoZVtkZWNvZGVVUklDb21wb25lbnQoblswXSldPWRlY29kZVVSSUNvbXBvbmVudChuWzFdKSl9KSksZX1mdW5jdGlvbiBMcyh0LGU9ITEpe2lmKHhzKCkpaWYoZSl7Y29uc3QgZT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtlLmhhc2g9dCx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwiIixlLnRvU3RyaW5nKCkpfWVsc2Ugd2luZG93LmxvY2F0aW9uLmhhc2g9dDtlbHNlIFNzKHQpfWZ1bmN0aW9uIFBzKHQpe2xldCBlPSIiO3ZvaWQgMCE9PXQuX190YWJfXyYmKGUrPXQuX190YWJfXyk7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KS5tYXAoKGU9PltlLHRbZV1dKSkuZmlsdGVyKCh0PT4iX190YWJfXyIhPT10WzBdKSkubWFwKCh0PT5lbmNvZGVVUklDb21wb25lbnQodFswXSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudCh0WzFdKSkpLmpvaW4oIiYiKTtyZXR1cm4gbi5sZW5ndGg+MD9lKyImIituOmV9bXMoKCgpPT57Q3M9a3MoQXMoKSl9KSk7Y29uc3R7Z2V0Ok5zLHNldDpJcyxnZXRJbml0aWFsaXplcjpScyxnZXRPYnNlcnZlcjpPcyxkaXNwb3NlQmluZGluZzp6c309SnMoKHQ9PnQpLCh0PT50KSkse2dldDpEcyxzZXQ6QnMsZ2V0SW5pdGlhbGl6ZXI6SHMsZ2V0T2JzZXJ2ZXI6RnMsZGlzcG9zZUJpbmRpbmc6VnN9PUpzKCh0PT4idHJ1ZSI9PT10fHwiZmFsc2UiIT09dCYmdm9pZCAwKSwodD0+dC50b1N0cmluZygpKSkse2dldDpVcyxzZXQ6anMsZ2V0SW5pdGlhbGl6ZXI6R3MsZ2V0T2JzZXJ2ZXI6V3MsZGlzcG9zZUJpbmRpbmc6cXN9PUpzKCh0PT4rdCksKHQ9PnQudG9TdHJpbmcoKSkpLHtnZXQ6WXMsc2V0OlhzLGdldEluaXRpYWxpemVyOiRzLGdldE9ic2VydmVyOktzLGRpc3Bvc2VCaW5kaW5nOlpzfT1KcygodD0+SlNPTi5wYXJzZShhdG9iKHQpKSksKHQ9PmJ0b2EoSlNPTi5zdHJpbmdpZnkodCkpKSk7ZnVuY3Rpb24gSnModCxlKXtjb25zdCBuPVtdLGk9W107ZnVuY3Rpb24gcihlLG49e30pe2NvbnN0e2RlZmF1bHRWYWx1ZTppLHVzZUxvY2FsU3RvcmFnZTpyPSExfT1uLG89cj93aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZSk6a3MoQXMoKSlbZV07cmV0dXJuIG51bGw9PW8/U2UuZXhwb3J0cy5jbG9uZURlZXAoaSk6dChvKX1mdW5jdGlvbiBvKHQsbixpPXt9KXtjb25zdHtkZWZhdWx0VmFsdWU6byx1c2VMb2NhbFN0b3JhZ2U6YT0hMSx1c2VMb2NhdGlvblJlcGxhY2U6cz0hMX09aSxsPWUobik7aWYoYSl3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odCxsKSxfcygpO2Vsc2UgaWYoIVNlLmV4cG9ydHMuaXNFcXVhbChuLHIodCx7dXNlTG9jYWxTdG9yYWdlOmF9KSkpaWYoU2UuZXhwb3J0cy5pc0VxdWFsKG4sbykpIShmdW5jdGlvbiBjKHQpe2NvbnN0IGU9a3MoQXMoKSk7ZGVsZXRlIGVbdF0sTHMoUHMoZSkpfSkodCk7ZWxzZXtjb25zdCBlPWtzKEFzKCkpO2VbdF09bCxMcyhQcyhlKSxzKX19cmV0dXJue2dldDpyLHNldDpvLGdldEluaXRpYWxpemVyOmZ1bmN0aW9uIGEodCxlKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oe2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRWYWx1ZSxwb2x5bWVyUHJvcGVydHk6dCx1c2VMb2NhbFN0b3JhZ2U6ITF9LGUpO3JldHVybiBmdW5jdGlvbigpe2NvbnN0IGU9UXModGhpcyx0KSxhPSgpPT57Y29uc3QgdD1yKGUsbyk7U2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpc1tvLnBvbHltZXJQcm9wZXJ0eV0pfHwodGhpc1tvLnBvbHltZXJQcm9wZXJ0eV09dCl9LHM9KG8udXNlTG9jYWxTdG9yYWdlP2dzOm1zKSgoKCk9PmEoKSkpO3JldHVybiBvLnVzZUxvY2FsU3RvcmFnZT9pLnB1c2gocyk6bi5wdXNoKHMpLGEoKSx0aGlzW28ucG9seW1lclByb3BlcnR5XX19LGdldE9ic2VydmVyOmZ1bmN0aW9uIHModCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oe2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRWYWx1ZSxwb2x5bWVyUHJvcGVydHk6dCx1c2VMb2NhbFN0b3JhZ2U6ITF9LGUpO3JldHVybiBmdW5jdGlvbigpe28oUXModGhpcyx0KSx0aGlzW24ucG9seW1lclByb3BlcnR5XSxuKX19LGRpc3Bvc2VCaW5kaW5nOmZ1bmN0aW9uIGwoKXtuLmZvckVhY2goKHQ9PnlzKHQpKSksaS5mb3JFYWNoKCh0PT52cyh0KSkpfX19ZnVuY3Rpb24gUXModCxlKXtjb25zdCBuPXQuZGlzYW1iaWd1YXRvcjtyZXR1cm4obnVsbD09bj9bZV06W24sZV0pLmpvaW4oIi4iKX1sZXQgdGw9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGFnRmlsdGVyPVJzKCJ0YWdGaWx0ZXIiLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExLHBvbHltZXJQcm9wZXJ0eToiX3RhZ0ZpbHRlciJ9KS5jYWxsKHRoaXMpLHRoaXMuX3RhZ0ZpbHRlck9ic2VydmVyPU9zKCJ0YWdGaWx0ZXIiLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExLHBvbHltZXJQcm9wZXJ0eToiX3RhZ0ZpbHRlciJ9KX1fY29tcHV0ZVRhZ0ZpbHRlcigpe3JldHVybiB0aGlzLl90YWdGaWx0ZXJ9fTtmdW5jdGlvbiBlbCh0KXtjb25zdHttb2R1bGVOYW1lOmUsc3R5bGVDb250ZW50Om59PXQsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkb20tbW9kdWxlIikscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpLG89W107dC5zdHlsZURlcGVuZGVuY2llcyYmdC5zdHlsZURlcGVuZGVuY2llcy5mb3JFYWNoKCh0PT57Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2Uuc2V0QXR0cmlidXRlKCJpbmNsdWRlIix0KSxvLnB1c2goZSl9KSk7Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO09iamVjdC5hc3NpZ24oYSx7dGV4dENvbnRlbnQ6bn0pLG8uZm9yRWFjaCgodD0+e3IuY29udGVudC5hcHBlbmRDaGlsZCh0KX0pKSxyLmNvbnRlbnQuYXBwZW5kQ2hpbGQoYSksaS5hcHBlbmRDaGlsZChyKSxpLnJlZ2lzdGVyKGUpfXRsLnRlbXBsYXRlPV9lYAogICAgPHBhcGVyLWlucHV0CiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJGaWx0ZXIgdGFncyAocmVndWxhciBleHByZXNzaW9ucyBzdXBwb3J0ZWQpIgogICAgICB2YWx1ZT0ie3tfdGFnRmlsdGVyfX0iCiAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICA+CiAgICAgIDxpcm9uLWljb24gcHJlZml4PSIiIGljb249InNlYXJjaCIgc2xvdD0icHJlZml4Ij48L2lyb24taWNvbj4KICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDEwcHggNXB4IDEwcHggMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIoX3RhZ0ZpbHRlcikifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRsLnByb3RvdHlwZSwidGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfdGFnRmlsdGVyT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRsLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0bD10KFtpKCJ0Zi10YWctZmlsdGVyZXIiKV0sdGwpLGVsKHttb2R1bGVOYW1lOiJkYXNoYm9hcmQtc3R5bGUiLHN0eWxlRGVwZW5kZW5jaWVzOlsiaXJvbi1mbGV4Il0sc3R5bGVDb250ZW50OiJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmc6IDE1cHg7XG4gICAgICAgIC0tc2lkZWJhci1sZWZ0LXBhZGRpbmc6IDMwcHg7XG4gICAgICB9XG5cbiAgICAgIFtzbG90PSdzaWRlYmFyJ10ge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zZXR0aW5ncyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgLnJ1bnMtc2VsZWN0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgfVxuXG4gICAgICB0Zi1ydW5zLXNlbGVjdG9yIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgbGVmdDogdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpICogMik7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zZWFyY2gtaW5wdXQge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4IDAgMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCB2YXIoLS10Yi11aS1ib3JkZXIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgMFxuICAgICAgICAgIHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b24ge1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgcGFwZXItY2hlY2tib3gge1xuICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICB9XG5cbiAgICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7XG4gICAgICB9XG5cbiAgICAgIGE6dmlzaXRlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpO1xuICAgICAgfVxuICAifSk7Y29uc3Qgbmw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtmdW5jdGlvbiBpbCh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9tYXliZVNldERhcmtNb2RlKCksdGhpcy5vYnNlcnZlcj1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e3Quc29tZSgodD0+ImNsYXNzIj09PXQuYXR0cmlidXRlTmFtZSkpJiZ0aGlzLl9tYXliZVNldERhcmtNb2RlKCl9KSksdGhpcy5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2F0dHJpYnV0ZXM6ITB9KX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3ZhciB0O3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbD09PSh0PXRoaXMub2JzZXJ2ZXIpfHx2b2lkIDA9PT10fHx0LmRpc2Nvbm5lY3QoKX1fbWF5YmVTZXREYXJrTW9kZSgpe3RoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1tb2RlIixkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygiZGFyay1tb2RlIikpfX19bmwuc2V0QXR0cmlidXRlKCJpcyIsImN1c3RvbS1zdHlsZSIpLG5sLnRleHRDb250ZW50PSJcbiAgOnJvb3Qge1xuICAgIC0tdGItb3JhbmdlLXdlYWs6ICNmZmE3MjY7XG4gICAgLS10Yi1vcmFuZ2Utc3Ryb25nOiAjZjU3YzAwO1xuICAgIC0tdGItb3JhbmdlLWRhcms6ICNkYzczMjA7XG4gICAgLS10Yi1ncmV5LWRhcmtlcjogI2UyZTJlMjtcbiAgICAtLXRiLWdyZXktbGlnaHRlcjogI2YzZjNmMztcbiAgICAtLXRiLXVpLWRhcmstYWNjZW50OiAjNzU3NTc1O1xuICAgIC0tdGItdWktbGlnaHQtYWNjZW50OiAjZTBlMGUwO1xuICAgIC0tdGItdWktYm9yZGVyOiB2YXIoLS1wYXBlci1ncmV5LTMwMCk7XG4gICAgLS10Yi1ncmFwaC1mYWRlZDogI2UwZDRiMztcbiAgICAtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTgwMCk7XG4gICAgLS10Yi1yYWlzZWQtYnV0dG9uLXNoYWRvdy1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3I6ICNlOWU5ZTk7XG4gICAgLS10Yi1sYXlvdXQtYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICAtLXRiLWxpbms6ICMxOTc2ZDI7IC8qIG1hdGVyaWFsIGJsdWUgNzAwLiAqL1xuICAgIC0tdGItbGluay12aXNpdGVkOiAjN2IxZmEyOyAvKiBtYXRlcmlhbCBwdXJwbGUgNzAwLiAqL1xuICB9XG5cbiAgOnJvb3QgLmRhcmstbW9kZSB7XG4gICAgLS10Yi11aS1ib3JkZXI6IHZhcigtLXBhcGVyLWdyZXktNzAwKTtcbiAgICAtLXRiLXVpLWRhcmstYWNjZW50OiB2YXIoLS1wYXBlci1ncmV5LTQwMCk7XG4gICAgLS10Yi11aS1saWdodC1hY2NlbnQ6IHZhcigtLXBhcGVyLWdyZXktNjAwKTtcbiAgICAtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTQwMCk7XG4gICAgLS10Yi1yYWlzZWQtYnV0dG9uLXNoYWRvdy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiAjZmZmO1xuICAgIC0tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNDAwKTtcbiAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogIzMwMzAzMDsgIC8qIG1hdGVyaWFsIGdyZXkgQTQwMC4gKi9cbiAgICAtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhO1xuICAgIC0tdGItbGF5b3V0LWJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7XG4gICAgLS10Yi1saW5rOiAjNDJhNWY1OyAvKiBtYXRlcmlhbCBibHVlIDQwMC4gKi9cbiAgICAtLXRiLWxpbmstdmlzaXRlZDogI2JhNjhjODsgLyogbWF0ZXJpYWwgcHVycGxlIDMwMC4gKi9cbiAgICAvKiBPdmVycmlkZXMgcGFwZXItbWF0ZXJpYWwgKi9cbiAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwXy1fYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSxcbiAgICAgIDAgMXB4IDVweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiksXG4gICAgICAwIDNweCAxcHggLTJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIH1cbiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChubCksZWwoe21vZHVsZU5hbWU6InNjcm9sbGJhci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IDEwcHg7XG4gICAgfVxuXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDJweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7XG4gICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApO1xuICAgIH1cbiAgICAuc2Nyb2xsYmFyIHtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuICAifSk7bGV0IHJsPWNsYXNzIGV4dGVuZHMoaWwoeWUpKXt9O3JsLnRlbXBsYXRlPV9lYAogICAgPGRpdiBpZD0ic2lkZWJhciI+CiAgICAgIDxzbG90IG5hbWU9InNpZGViYXIiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImNlbnRlciI+CiAgICAgIDxzbG90IG5hbWU9ImNlbnRlciIgY2xhc3M9InNjb2xsYmFyIj48L3Nsb3Q+CiAgICA8L2Rpdj4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIH0KCiAgICAgICNzaWRlYmFyIHsKICAgICAgICBmbGV4OiAwIDAgdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLWJhc2lzLCAyNSUpOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1tYXgtd2lkdGgsIDM1MHB4KTsKICAgICAgICBtaW4td2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1taW4td2lkdGgsIDI3MHB4KTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAjY2VudGVyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChbc2xvdD0nY2VudGVyJ10pIHsKICAgICAgICBjb250YWluOiBzdHJpY3Q7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgIC50Zi1ncmFwaC1kYXNoYm9hcmQgI2NlbnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHJsPXQoW2koInRmLWRhc2hib2FyZC1sYXlvdXQiKV0scmwpO2NvbnN0IG9sPSJURi5UZW5zb3JCb2FyZC5QYWdpbmF0ZWRWaWV3LmxpbWl0IjtsZXQgYWw9bnVsbDtjb25zdCBzbD1uZXcgU2V0O2Z1bmN0aW9uIGxsKHQpe3NsLmFkZCh0KX1mdW5jdGlvbiBjbCh0KXtzbC5kZWxldGUodCl9ZnVuY3Rpb24gdWwoKXtyZXR1cm4gbnVsbD09YWwmJihhbD1VcyhvbCx7dXNlTG9jYWxTdG9yYWdlOiEwfSksKG51bGw9PWFsfHwhaXNGaW5pdGUoYWwpfHxhbDw9MCkmJihhbD0xMikpLGFsfWNsYXNzIGhsIGV4dGVuZHMgeWV7dXBkYXRlQXJyYXlQcm9wKHQsZSxuKXtsZXQgaT10aGlzLmdldCh0KTtjb25zdCByPWU7aWYoIUFycmF5LmlzQXJyYXkocikpdGhyb3cgUmFuZ2VFcnJvcihgRXhwZWN0ZWQgbmV3IHZhbHVlIHRvICcke3R9JyB0byBiZSBhbiBhcnJheS5gKTtBcnJheS5pc0FycmF5KGkpfHwoaT1bXSx0aGlzLnNldCh0LGkpKTtjb25zdCBvPW5ldyBTZXQoci5tYXAoKCh0LGUpPT5uKHQsZSkpKSk7bGV0IGE9MCxzPTA7Zm9yKDthPGkubGVuZ3RoJiZzPHIubGVuZ3RoOylvLmhhcyhuKGlbYV0sYSkpPyhuKGlbYV0sYSk9PW4ocltzXSxzKT90aGlzLnNldChgJHt0fS4ke2F9YCxyW3NdKTp0aGlzLnNwbGljZSh0LGEsMCxyW3NdKSxzKyssYSsrKTp0aGlzLnNwbGljZSh0LGEsMSk7YTxpLmxlbmd0aCYmdGhpcy5zcGxpY2UodCxhKSxzPHIubGVuZ3RoJiZ0aGlzLnB1c2godCwuLi5yLnNsaWNlKHMpKX19Y2xhc3MgZGwgZXh0ZW5kcyBobHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hcz0iaXRlbSIsdGhpcy5fY29udGVudEFjdGl2ZT0hMCx0aGlzLl9kb21Cb290c3RyYXBwZWQ9ITEsdGhpcy5fY3Rvcj1udWxsLHRoaXMuX3JlbmRlcmVkSXRlbXM9W10sdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3Q9bmV3IE1hcCx0aGlzLl9scnVDYWNoZWRJdGVtcz1uZXcgTWFwLHRoaXMuX2NhY2hlU2l6ZT0xMCx0aGlzLl9nZXRJdGVtS2V5PXQ9PkpTT04uc3RyaW5naWZ5KHQpLHRoaXMuX2lzQ29ubmVjdGVkPSExfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMH1zZXRDYWNoZVNpemUodCl7dGhpcy5fY2FjaGVTaXplPXR9c2V0R2V0SXRlbUtleSh0KXt0aGlzLl9nZXRJdGVtS2V5PXR9dXBkYXRlRG9tKHQpe3RoaXMudXBkYXRlQXJyYXlQcm9wKCJfcmVuZGVyZWRJdGVtcyIsdCx0aGlzLl9nZXRJdGVtS2V5KX1fZW5zdXJlVGVtcGxhdGl6ZWQoKXtpZighdGhpcy5pc0Nvbm5lY3RlZClyZXR1cm4hMTtpZighdGhpcy5fY3Rvcil7Y29uc3QgdD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7dGhpcy5fY3Rvcj0kcih0LHRoaXMse3BhcmVudE1vZGVsOiEwLGluc3RhbmNlUHJvcHM6e1t0aGlzLmFzXTohMCxhY3RpdmU6dGhpcy5fY29udGVudEFjdGl2ZX0sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZm9yRWFjaCgobj0+e24uZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSl9fSl9cmV0dXJuITB9X2Jvb3RzdHJhcERvbSgpe3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCkmJiF0aGlzLl9kb21Cb290c3RyYXBwZWQmJihuZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e2Zvcihjb25zdCBlIG9mIHQpaWYoImNoaWxkTGlzdCI9PT1lLnR5cGUpZm9yKGNvbnN0IHQgb2YgQXJyYXkuZnJvbShlLmFkZGVkTm9kZXMpKXQgaW5zdGFuY2VvZiBFbGVtZW50JiZ0LnNldEF0dHJpYnV0ZSgic2xvdCIsIml0ZW1zIil9KSkub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KSxBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLnJlbW92ZUNoaWxkKHQpfSkpLHRoaXMuX2xydUNhY2hlZEl0ZW1zLmNsZWFyKCksdGhpcy5fcmVuZGVyZWRJdGVtcy5mb3JFYWNoKCgodCxlKT0+dGhpcy5faW5zZXJ0SXRlbSh0LGUpKSksdGhpcy5fZG9tQm9vdHN0cmFwcGVkPSEwKX1fdXBkYXRlQWN0aXZlKCl7dGhpcy5fZG9tQm9vdHN0cmFwcGVkJiZBcnJheS5mcm9tKHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnZhbHVlcygpKS5mb3JFYWNoKCh0PT57dC5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpfSkpfV91cGRhdGVEb20odCl7aWYodGhpcy5fZG9tQm9vdHN0cmFwcGVkJiYiX3JlbmRlcmVkSXRlbXMiIT10LnBhdGgmJiJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiIT10LnBhdGgpaWYoIl9yZW5kZXJlZEl0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXQudmFsdWUuaW5kZXhTcGxpY2VzLmZvckVhY2goKHQ9Pntjb25zdHtpbmRleDplLGFkZGVkQ291bnQ6bixvYmplY3Q6aSxyZW1vdmVkOnJ9PXQ7ci5mb3JFYWNoKCh0PT57dGhpcy5fcmVtb3ZlSXRlbSh0LHRoaXMuY2hpbGRyZW5bZV0pfSkpLGkuc2xpY2UoZSxlK24pLmZvckVhY2goKCh0LG4pPT50aGlzLl9pbnNlcnRJdGVtKHQsZStuKSkpLHRoaXMuX3RyaW1DYWNoZSgpfSkpO2Vsc2V7Y29uc3QgZT10aGlzLl9nZXRJdGVtS2V5KHQudmFsdWUpO3RoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmhhcyhlKT90aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5nZXQoZSkubm90aWZ5UGF0aCh0aGlzLmFzLHQudmFsdWUpOmNvbnNvbGUud2FybihgRXhwZWN0ZWQgJyR7ZX0nIHRvIGV4aXN0IGluIHRoZSBET00gYnV0IGNvdWxkIG5vdCBmaW5kIG9uZS5gKX19X2luc2VydEl0ZW0odCxlKXtpZighdGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRlbXBsYXRpemVkIGJlZm9yZSBpbnNlcnRpbmcgYW4gaXRlbSIpO2xldCBuO2NvbnN0IGk9dGhpcy5fZ2V0SXRlbUtleSh0KTtpZih0aGlzLl9scnVDYWNoZWRJdGVtcy5oYXMoaSkpbj10aGlzLl9scnVDYWNoZWRJdGVtcy5nZXQoaSksdGhpcy5fbHJ1Q2FjaGVkSXRlbXMuZGVsZXRlKGkpLHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmdldChpKS5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpO2Vsc2V7Y29uc3QgZT1uZXcgdGhpcy5fY3Rvcih7W3RoaXMuYXNdOnQsYWN0aXZlOnRoaXMuX2NvbnRlbnRBY3RpdmV9KTtuPWUucm9vdCx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5zZXQoaSxlKX10aGlzLmNoaWxkcmVuW2VdP3RoaXMuaW5zZXJ0QmVmb3JlKG4sdGhpcy5jaGlsZHJlbltlXSk6KChuLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbShuLmNoaWxkcmVuKTpbbl0pLmZvckVhY2goKHQ9PnQuc2V0QXR0cmlidXRlKCJzbG90IiwiaXRlbXMiKSkpLHRoaXMuYXBwZW5kQ2hpbGQobikpfV9yZW1vdmVJdGVtKHQsZSl7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7Y29uc3Qgbj10aGlzLl9nZXRJdGVtS2V5KHQpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNldChuLGUpLHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmdldChuKS5ub3RpZnlQYXRoKCJhY3RpdmUiLCExKX1fdHJpbUNhY2hlKCl7Zm9yKDt0aGlzLl9scnVDYWNoZWRJdGVtcy5zaXplPnRoaXMuX2NhY2hlU2l6ZTspe2NvbnN0W3RdPXRoaXMuX2xydUNhY2hlZEl0ZW1zLmtleXMoKTt0aGlzLl9scnVDYWNoZWRJdGVtcy5kZWxldGUodCksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZGVsZXRlKHQpfX19dChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZGwucHJvdG90eXBlLCJhcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZGwucHJvdG90eXBlLCJpdGVtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGRsLnByb3RvdHlwZSwiX2NvbnRlbnRBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2RvbUJvb3RzdHJhcHBlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9jdG9yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxkbC5wcm90b3R5cGUsIl9yZW5kZXJlZEl0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX3JlbmRlcmVkVGVtcGxhdGVJbnN0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2xydUNhY2hlZEl0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2NhY2hlU2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9nZXRJdGVtS2V5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9pc0Nvbm5lY3RlZCIsdm9pZCAwKSx0KFthKCJfaXNDb25uZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX2Jvb3RzdHJhcERvbSIsbnVsbCksdChbYSgiX2NvbnRlbnRBY3RpdmUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX3VwZGF0ZUFjdGl2ZSIsbnVsbCksdChbYSgiX3JlbmRlcmVkSXRlbXMuKiIsIl9kb21Cb290c3RyYXBwZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbT2JqZWN0XSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX3VwZGF0ZURvbSIsbnVsbCksdChbYSgiX2NhY2hlU2l6ZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZGwucHJvdG90eXBlLCJfdHJpbUNhY2hlIixudWxsKTtsZXQgcGw9Y2xhc3MgZXh0ZW5kcyBkbHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hMSx0aGlzLmdldENhdGVnb3J5SXRlbUtleT10PT5KU09OLnN0cmluZ2lmeSh0KSx0aGlzLl9saW1pdD0xMix0aGlzLl9hY3RpdmVJbmRleD0wLHRoaXMuX3BhZ2VJbnB1dFJhd1ZhbHVlPSIiLHRoaXMuX3BhZ2VJbnB1dEZvY3VzZWQ9ITF9X2NvbXB1dGVDb3VudCgpe3JldHVybiB0aGlzLmNhdGVnb3J5Lml0ZW1zLmxlbmd0aH1nZXQgX2hhc011bHRpcGxlKCl7cmV0dXJuIHRoaXMuX2NvdW50PjF9X3RvZ2dsZVBhbmUoKXt0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9X2NoYW5nZUNvbnRlbnRBY3RpdmUodCl7dGhpcy5fY29udGVudEFjdGl2ZT10fV9vblBhbmVSZW5kZXJlZENoYW5nZWQodCxlKXt0JiZ0IT09ZSYmdGhpcy4kLmlmUmVuZGVyZWQucmVuZGVyKCl9X2NvbXB1dGVQYW5lUmVuZGVyZWQodCl7cmV0dXJuISh0Lm1ldGFkYXRhLnR5cGU9PT1ici5TRUFSQ0hfUkVTVUxUUyYmIiI9PT10Lm5hbWUpfWdldCBfaXRlbXNSZW5kZXJlZCgpe3JldHVybiB0aGlzLl9wYW5lUmVuZGVyZWQmJnRoaXMub3BlbmVkfV9jb21wdXRlSXNTZWFyY2hSZXN1bHRzKHQpe3JldHVybiB0PT09YnIuU0VBUkNIX1JFU1VMVFN9X2NvbXB1dGVJc0ludmFsaWRTZWFyY2hSZXN1bHRzKHQpe3JldHVybiB0LnR5cGU9PT1ici5TRUFSQ0hfUkVTVUxUUyYmIXQudmFsaWRSZWdleH1fY29tcHV0ZUlzVW5pdmVyc2FsU2VhcmNoUXVlcnkodCl7cmV0dXJuIHQudHlwZT09PWJyLlNFQVJDSF9SRVNVTFRTJiZ0LnVuaXZlcnNhbFJlZ2V4fV9pc0NvbXBvc2l0ZVNlYXJjaCgpe2NvbnN0e3R5cGU6dCxjb21wb3NpdGVTZWFyY2g6ZX09dGhpcy5jYXRlZ29yeS5tZXRhZGF0YTtyZXR1cm4gZSYmdD09PWJyLlNFQVJDSF9SRVNVTFRTfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLm9wZW5lZD1udWxsPT10aGlzLmluaXRpYWxPcGVuZWR8fHRoaXMuaW5pdGlhbE9wZW5lZCx0aGlzLl9saW1pdExpc3RlbmVyPSgpPT57dGhpcy5zZXQoIl9saW1pdCIsdWwoKSl9LGxsKHRoaXMuX2xpbWl0TGlzdGVuZXIpLHRoaXMuX2xpbWl0TGlzdGVuZXIoKX1kZXRhY2hlZCgpe2NsKHRoaXMuX2xpbWl0TGlzdGVuZXIpfV91cGRhdGVSZW5kZXJlZEl0ZW1zKCl7dmFyIHQ9dGhpcy5fbGltaXQsZT10aGlzLmRpc2FibGVQYWdpbmF0aW9uO2lmKCF0aGlzLl9pdGVtc1JlbmRlcmVkKXJldHVybjtjb25zdCBuPU1hdGguZmxvb3IodGhpcy5fYWN0aXZlSW5kZXgvdCksaT10aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSxyPWU/aTppLnNsaWNlKG4qdCwobisxKSp0KTt0aGlzLnVwZGF0ZURvbShyKX1fbGltaXRDaGFuZ2VkKHQpe3RoaXMuc2V0Q2FjaGVTaXplKDIqdCl9X2dldENhdGVnb3J5SXRlbUtleUNoYW5nZWQoKXt0aGlzLnNldEdldEl0ZW1LZXkodGhpcy5nZXRDYXRlZ29yeUl0ZW1LZXkpfWdldCBfY3VycmVudFBhZ2UoKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLl9hY3RpdmVJbmRleC90aGlzLl9saW1pdCkrMX1fY29tcHV0ZVBhZ2VDb3VudCh0LGUpe3JldHVybiB0aGlzLmNhdGVnb3J5P01hdGguY2VpbCh0aGlzLmNhdGVnb3J5Lml0ZW1zLmxlbmd0aC9lKTowfWdldCBfbXVsdGlwbGVQYWdlc0V4aXN0KCl7cmV0dXJuIXRoaXMuZGlzYWJsZVBhZ2luYXRpb24mJnRoaXMuX3BhZ2VDb3VudD4xfWdldCBfaGFzUHJldmlvdXNQYWdlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlPjF9Z2V0IF9oYXNOZXh0UGFnZSgpe3JldHVybiB0aGlzLl9jdXJyZW50UGFnZTx0aGlzLl9wYWdlQ291bnR9X2NvbXB1dGVJbnB1dFdpZHRoKHQpe3JldHVybmBjYWxjKCR7dC50b1N0cmluZygpLmxlbmd0aH1lbSArIDIwcHgpYH1fc2V0QWN0aXZlSW5kZXgodCl7Y29uc3QgZT0odGhpcy5jYXRlZ29yeS5pdGVtc3x8W10pLmxlbmd0aC0xO3Q+ZSYmKHQ9ZSksdDwwJiYodD0wKSx0aGlzLnNldCgiX2FjdGl2ZUluZGV4Iix0KX1fY2xhbXBBY3RpdmVJbmRleCgpe3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4KX1fcGVyZm9ybVByZXZpb3VzUGFnZSgpe3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4LXRoaXMuX2xpbWl0KX1fcGVyZm9ybU5leHRQYWdlKCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgrdGhpcy5fbGltaXQpfV9jb21wdXRlUGFnZUlucHV0VmFsdWUodCxlLG4pe3JldHVybiB0P2U6bi50b1N0cmluZygpfV9oYW5kbGVQYWdlSW5wdXRFdmVudCh0KXt0aGlzLnNldCgiX3BhZ2VJbnB1dFJhd1ZhbHVlIix0LnRhcmdldC52YWx1ZSk7Y29uc3QgZT1OdW1iZXIodC50YXJnZXQudmFsdWV8fE5hTik7aWYoaXNOYU4oZSkpcmV0dXJuO2NvbnN0IG49TWF0aC5tYXgoMSxNYXRoLm1pbihlLHRoaXMuX3BhZ2VDb3VudCkpLTE7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fbGltaXQqbil9X2hhbmRsZVBhZ2VDaGFuZ2VFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHRoaXMuX2N1cnJlbnRQYWdlLnRvU3RyaW5nKCkpfV9oYW5kbGVQYWdlRm9jdXNFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHRoaXMuX3BhZ2VJbnB1dFZhbHVlKSx0aGlzLnNldCgiX3BhZ2VJbnB1dEZvY3VzZWQiLCEwKX1faGFuZGxlUGFnZUJsdXJFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITEpfV91cGRhdGVQYWdlSW5wdXRWYWx1ZSh0KXtjb25zdCBlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjcGFnZS1pbnB1dCBpbnB1dCIpO2UmJihlLnZhbHVlPXQpfV91cGRhdGVJbnB1dFdpZHRoKCl7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3LXBhZ2UtaW5wdXQtd2lkdGgiOnRoaXMuX2lucHV0V2lkdGh9KX19O3BsLnRlbXBsYXRlPV9lYAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19wYW5lUmVuZGVyZWRdXSIgaWQ9ImlmUmVuZGVyZWQiPgogICAgICA8YnV0dG9uIGNsYXNzPSJoZWFkaW5nIiBvbi10YXA9Il90b2dnbGVQYW5lIiBvcGVuLWJ1dHRvbiQ9Iltbb3BlbmVkXV0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNTZWFyY2hSZXN1bHRzXV0iPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3Bhbj5UYWdzIG1hdGNoaW5nIG11bHRpcGxlIGV4cGVyaW1lbnRzPC9zcGFuPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgID4mbmJzcDs8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3BhbgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPlRhZ3MgbWF0Y2hpbmcgLzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktbmFtZSIgdGl0bGUkPSJbW2NhdGVnb3J5Lm5hbWVdXSIKICAgICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPi88L3NwYW4+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5XV0iPgogICAgICAgICAgICAgICAgPHNwYW4+IChhbGwgdGFncyk8L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzSW52YWxpZFNlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gPHN0cm9uZz4obWFsZm9ybWVkIHJlZ3VsYXIgZXhwcmVzc2lvbik8L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc1NlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1uYW1lIiB0aXRsZSQ9IltbY2F0ZWdvcnkubmFtZV1dIgogICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICA+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY291bnQiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZV1dIj4KICAgICAgICAgICAgPHNwYW4+W1tfY291bnRdXTwvc3Bhbj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImV4cGFuZC1tb3JlIiBjbGFzcz0iZXhwYW5kLWFycm93Ij48L2lyb24taWNvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8IS0tIFRPRE8oc3RlcGhhbndsZWUpOiBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBGb3Igc29tZSByZWFzb24sCiAgICAgICAgdHJhbnNpdGlvbmVuZCB0aGF0IHRoZSBpcm9uLWNvbGxhcHNlIHJlbGllcyBvbiBzb21ldGltZXMgZG9lcyBub3QKICAgICAgICB0cmlnZ2VyIHdoZW4gcmVuZGVyaW5nIGEgY2hhcnQgd2l0aCBhIHNwaW5uZXIuIEEgdG95IGV4YW1wbGUgY2Fubm90CiAgICAgICAgcmVwcm9kdWNlIHRoaXMgYnVnLiAtLT4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW29wZW5lZF1dIiBuby1hbmltYXRpb249IiI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgICA8c3BhbiBpZD0idG9wLW9mLWNvbnRhaW5lciI+PC9zcGFuPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tdWx0aXBsZVBhZ2VzRXhpc3RdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPGRpdiBpZD0iaXRlbXMiPgogICAgICAgICAgICA8c2xvdCBuYW1lPSJpdGVtcyI+PC9zbG90PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX211bHRpcGxlUGFnZXNFeGlzdF1dIj4KICAgICAgICAgICAgPGRpdiBpZD0iY29udHJvbHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDAgNXB4Ij4KICAgICAgICAgICAgICAgIFBhZ2UKICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgICBpZD0icGFnZS1pbnB1dCIKICAgICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0iIgogICAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICAgIG1heD0iW1tfcGFnZUNvdW50XV0iCiAgICAgICAgICAgICAgICAgIHZhbHVlPSJbW19wYWdlSW5wdXRWYWx1ZV1dIgogICAgICAgICAgICAgICAgICBvbi1pbnB1dD0iX2hhbmRsZVBhZ2VJbnB1dEV2ZW50IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9oYW5kbGVQYWdlQ2hhbmdlRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWZvY3VzPSJfaGFuZGxlUGFnZUZvY3VzRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWJsdXI9Il9oYW5kbGVQYWdlQmx1ckV2ZW50IgogICAgICAgICAgICAgICAgPjwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICBvZiBbW19wYWdlQ291bnRdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDAgNXB4IDFweCAxMHB4OwogICAgICB9CgogICAgICA6aG9zdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KDpsYXN0LW9mLXR5cGUpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA1cHggdmFyKC0tdGItcmFpc2VkLWJ1dHRvbi1zaGFkb3ctY29sb3IpOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAuaGVhZGluZzo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICB9CgogICAgICBbb3Blbi1idXR0b25dIHsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW29wZW4tYnV0dG9uXSAuZXhwYW5kLWFycm93IHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKICAgICAgfQoKICAgICAgLm5hbWUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5saWdodCB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgfQoKICAgICAgLmNhdGVnb3J5LW5hbWUgewogICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBwYWRkaW5nOiAycHggMDsKICAgICAgfQoKICAgICAgLmNvdW50IHsKICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9CgogICAgICAuaGVhZGluZzo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4OwogICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVkZWRlOwogICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgIH0KCiAgICAgIC5saWdodCB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciBwYXBlci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmbGV4LWJhc2lzOiAwOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbltkaXNhYmxlZF0gewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIHNsb3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChbc2xvdD0naXRlbXMnXSkgewogICAgICAgIC8qIFRvb2x0aXAgZm9yIGRlc2NyaXB0aW9ucyBhbmQgb3RoZXJzIGJyZWFrIHdpdGggbW9yZSBzdHJpY3Qgb25lcy4gKi8KICAgICAgICBjb250YWluOiBzdHlsZTsKICAgICAgfQoKICAgICAgI3BhZ2UtaW5wdXQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogdmFyKC0tdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXctcGFnZS1pbnB1dC13aWR0aCwgMTAwJSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwbC5wcm90b3R5cGUsImNhdGVnb3J5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJpbml0aWFsT3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHBsLnByb3RvdHlwZSwib3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJkaXNhYmxlUGFnaW5hdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVDb3VudChjYXRlZ29yeS5pdGVtcy4qKSJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0scGwucHJvdG90eXBlLCJfY291bnQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZVBhbmVSZW5kZXJlZChjYXRlZ29yeSkiLG9ic2VydmVyOiJfb25QYW5lUmVuZGVyZWRDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJfcGFuZVJlbmRlcmVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc1NlYXJjaFJlc3VsdHMoY2F0ZWdvcnkubWV0YWRhdGEudHlwZSkifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsIl9pc1NlYXJjaFJlc3VsdHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzSW52YWxpZFNlYXJjaFJlc3VsdHMoY2F0ZWdvcnkubWV0YWRhdGEpIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJfaXNJbnZhbGlkU2VhcmNoUmVzdWx0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeShjYXRlZ29yeS5tZXRhZGF0YSkifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsIl9pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scGwucHJvdG90eXBlLCJnZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9saW1pdENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHBsLnByb3RvdHlwZSwiX2xpbWl0Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHBsLnByb3RvdHlwZSwiX2FjdGl2ZUluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VDb3VudChjYXRlZ29yeS5pdGVtcy4qLCBfbGltaXQpIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxwbC5wcm90b3R5cGUsIl9wYWdlQ291bnQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlSW5wdXRXaWR0aChfcGFnZUNvdW50KSIsb2JzZXJ2ZXI6Il91cGRhdGVJbnB1dFdpZHRoIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxwbC5wcm90b3R5cGUsIl9pbnB1dFdpZHRoIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VJbnB1dFZhbHVlKF9wYWdlSW5wdXRGb2N1c2VkLCBfcGFnZUlucHV0UmF3VmFsdWUsIF9jdXJyZW50UGFnZSkiLG9ic2VydmVyOiJfdXBkYXRlUGFnZUlucHV0VmFsdWUifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHBsLnByb3RvdHlwZSwiX3BhZ2VJbnB1dFZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHBsLnByb3RvdHlwZSwiX3BhZ2VJbnB1dFJhd1ZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJfcGFnZUlucHV0Rm9jdXNlZCIsdm9pZCAwKSx0KFtzKCJfY291bnQiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scGwucHJvdG90eXBlLCJfaGFzTXVsdGlwbGUiLG51bGwpLHQoW2EoIm9wZW5lZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtCb29sZWFuXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHBsLnByb3RvdHlwZSwiX2NoYW5nZUNvbnRlbnRBY3RpdmUiLG51bGwpLHQoW3MoIm9wZW5lZCIsIl9wYW5lUmVuZGVyZWQiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scGwucHJvdG90eXBlLCJfaXRlbXNSZW5kZXJlZCIsbnVsbCksdChbYSgiX2l0ZW1zUmVuZGVyZWQiLCJjYXRlZ29yeS5pdGVtcy4qIiwiX2xpbWl0IiwiX2FjdGl2ZUluZGV4IiwiX3BhZ2VDb3VudCIsImRpc2FibGVQYWdpbmF0aW9uIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxwbC5wcm90b3R5cGUsIl91cGRhdGVSZW5kZXJlZEl0ZW1zIixudWxsKSx0KFtzKCJfbGltaXQiLCJfYWN0aXZlSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxwbC5wcm90b3R5cGUsIl9jdXJyZW50UGFnZSIsbnVsbCksdChbcygiX3BhZ2VDb3VudCIsImRpc2FibGVQYWdpbmF0aW9uIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHBsLnByb3RvdHlwZSwiX211bHRpcGxlUGFnZXNFeGlzdCIsbnVsbCksdChbcygiX2N1cnJlbnRQYWdlIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHBsLnByb3RvdHlwZSwiX2hhc1ByZXZpb3VzUGFnZSIsbnVsbCksdChbcygiX2N1cnJlbnRQYWdlIiwiX3BhZ2VDb3VudCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxwbC5wcm90b3R5cGUsIl9oYXNOZXh0UGFnZSIsbnVsbCksdChbYSgiY2F0ZWdvcnkuaXRlbXMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0scGwucHJvdG90eXBlLCJfY2xhbXBBY3RpdmVJbmRleCIsbnVsbCkscGw9dChbaSgidGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXciKV0scGwpO2NsYXNzIGZse2NvbnN0cnVjdG9yKHQpe3RoaXMubGlzdGVuZXI9dH19Y2xhc3MgbWx7Y29uc3RydWN0b3IoKXt0aGlzLnJlcXVlc3RNYW5hZ2VyPW5ldyBkcigxKSx0aGlzLl9saXN0ZW5lcnM9bmV3IFNldCx0aGlzLmluaXRpYWxpemVkPSExfXJlZnJlc2goKXtyZXR1cm4gdGhpcy5sb2FkKCkudGhlbigoKCk9Pnt0aGlzLmluaXRpYWxpemVkPSEwfSkpfWFkZExpc3RlbmVyKHQpe2NvbnN0IGU9bmV3IGZsKHQpO3JldHVybiB0aGlzLl9saXN0ZW5lcnMuYWRkKGUpLGV9cmVtb3ZlTGlzdGVuZXJCeUtleSh0KXt0aGlzLl9saXN0ZW5lcnMuZGVsZXRlKHQpfWVtaXRDaGFuZ2UoKXt0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaCgodD0+e3RyeXt0Lmxpc3RlbmVyKCl9Y2F0Y2godCl7fX0pKX19Y2xhc3MgZ2wgZXh0ZW5kcyBtbHtsb2FkKCl7Y29uc3QgdD1fcigpLmVudmlyb25tZW50KCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57Y29uc3QgZT17ZGF0YUxvY2F0aW9uOnQuZGF0YV9sb2NhdGlvbix3aW5kb3dUaXRsZTp0LndpbmRvd190aXRsZX07dm9pZCAwIT09dC5leHBlcmltZW50X25hbWUmJihlLmV4cGVyaW1lbnROYW1lPXQuZXhwZXJpbWVudF9uYW1lKSx2b2lkIDAhPT10LmV4cGVyaW1lbnRfZGVzY3JpcHRpb24mJihlLmV4cGVyaW1lbnREZXNjcmlwdGlvbj10LmV4cGVyaW1lbnRfZGVzY3JpcHRpb24pLHZvaWQgMCE9PXQuY3JlYXRpb25fdGltZSYmKGUuY3JlYXRpb25UaW1lPXQuY3JlYXRpb25fdGltZSksU2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuZW52aXJvbm1lbnQsZSl8fCh0aGlzLmVudmlyb25tZW50PWUsdGhpcy5lbWl0Q2hhbmdlKCkpfSkpfWdldERhdGFMb2NhdGlvbigpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZGF0YUxvY2F0aW9uOiIifWdldFdpbmRvd1RpdGxlKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC53aW5kb3dUaXRsZToiIn1nZXRFeHBlcmltZW50TmFtZSgpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZXhwZXJpbWVudE5hbWU6IiJ9Z2V0RXhwZXJpbWVudERlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50RGVzY3JpcHRpb246IiJ9Z2V0Q3JlYXRpb25UaW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5jcmVhdGlvblRpbWU6bnVsbH19Y29uc3QgX2w9bmV3IGdsO2NsYXNzIHlsIGV4dGVuZHMgbWx7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1bnM9W119bG9hZCgpe2NvbnN0IHQ9X3IoKS5ydW5zKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57U2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuX3J1bnMsdCl8fCh0aGlzLl9ydW5zPXQsdGhpcy5lbWl0Q2hhbmdlKCkpfSkpfWdldFJ1bnMoKXtyZXR1cm4gdGhpcy5fcnVucy5zbGljZSgpfX1jb25zdCB2bD1uZXcgeWw7ZnVuY3Rpb24gYmwodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24geGwodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGJsKHQoZSksbil9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik8MD9pPW8rMTpyPW99cmV0dXJuIGl9LHJpZ2h0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik+MD9yPW86aT1vKzF9cmV0dXJuIGl9fX12YXIgd2w9eGwoYmwpLFNsPXdsLnJpZ2h0LE1sPXdsLmxlZnQ7ZnVuY3Rpb24gRWwodCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBUbCh0LGUsbil7dmFyIGkscixvLGEscz10Lmxlbmd0aCxsPWUubGVuZ3RoLGM9bmV3IEFycmF5KHMqbCk7Zm9yKG51bGw9PW4mJihuPUVsKSxpPW89MDtpPHM7KytpKWZvcihhPXRbaV0scj0wO3I8bDsrK3IsKytvKWNbb109bihhLGVbcl0pO3JldHVybiBjfWZ1bmN0aW9uIENsKHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gQWwodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0wLGE9LTEscz0wLGw9MDtpZihudWxsPT1lKWZvcig7KythPHI7KWlzTmFOKG49Q2wodFthXSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7ZWxzZSBmb3IoOysrYTxyOylpc05hTihuPUNsKGUodFthXSxhLHQpKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtpZihvPjEpcmV0dXJuIGwvKG8tMSl9ZnVuY3Rpb24ga2wodCxlKXt2YXIgbj1BbCh0LGUpO3JldHVybiBuP01hdGguc3FydChuKTpufWZ1bmN0aW9uIExsKHQsZSl7dmFyIG4saSxyLG89dC5sZW5ndGgsYT0tMTtpZihudWxsPT1lKXtmb3IoOysrYTxvOylpZihudWxsIT0obj10W2FdKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPXRbYV0pJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKX1lbHNlIGZvcig7KythPG87KWlmKG51bGwhPShuPWUodFthXSxhLHQpKSYmbj49bilmb3IoaT1yPW47KythPG87KW51bGwhPShuPWUodFthXSxhLHQpKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSk7cmV0dXJuW2kscl19dmFyIFBsPUFycmF5LnByb3RvdHlwZSxObD1QbC5zbGljZSxJbD1QbC5tYXA7ZnVuY3Rpb24gUmwodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIE9sKHQpe3JldHVybiB0fWZ1bmN0aW9uIHpsKHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfXZhciBEbD1NYXRoLnNxcnQoNTApLEJsPU1hdGguc3FydCgxMCksSGw9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIEZsKHQsZSxuKXt2YXIgaSxyLG8sYSxzPS0xO2lmKG49K24sKHQ9K3QpPT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9VmwodCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gVmwodCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1EbD8xMDpvPj1CbD81Om8+PUhsPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49RGw/MTA6bz49Qmw/NTpvPj1IbD8yOjEpfWZ1bmN0aW9uIFVsKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1EbD9yKj0xMDpvPj1CbD9yKj01Om8+PUhsJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gamwodCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gR2wodCxlLG4pe2lmKG51bGw9PW4mJihuPUNsKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fWZ1bmN0aW9uIFdsKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJm4+aSYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPmkmJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIHFsKHQpe2Zvcih2YXIgZSxuLGkscj10Lmxlbmd0aCxvPS0xLGE9MDsrK288cjspYSs9dFtvXS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpOy0tcj49MDspZm9yKGU9KGk9dFtyXSkubGVuZ3RoOy0tZT49MDspblstLWFdPWlbZV07cmV0dXJuIG59ZnVuY3Rpb24gWWwodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmaT5uJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJmk+biYmKGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gWGwodCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEsbj1ZbCh0LCRsKSxpPW5ldyBBcnJheShuKTsrK2U8bjspZm9yKHZhciByLG89LTEsYT1pW2VdPW5ldyBBcnJheShyKTsrK288cjspYVtvXT10W29dW2VdO3JldHVybiBpfWZ1bmN0aW9uICRsKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgS2w9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFpsKHQpe3JldHVybiB0fXZhciBKbD0xZS02O2Z1bmN0aW9uIFFsKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gdGModCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiBlYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuK3QoZSl9fWZ1bmN0aW9uIG5jKHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIGljKCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHJjKHQsZSl7dmFyIG49W10saT1udWxsLHI9bnVsbCxvPTYsYT02LHM9MyxsPTE9PT10fHw0PT09dD8tMToxLGM9ND09PXR8fDI9PT10PyJ4IjoieSIsdT0xPT09dHx8Mz09PXQ/UWw6dGM7ZnVuY3Rpb24gaChoKXt2YXIgZD1udWxsPT1pP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6aSxwPW51bGw9PXI/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOlpsOnIsZj1NYXRoLm1heChvLDApK3MsbT1lLnJhbmdlKCksZz0rbVswXSsuNSxfPSttW20ubGVuZ3RoLTFdKy41LHk9KGUuYmFuZHdpZHRoP25jOmVjKShlLmNvcHkoKSksdj1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmgsYj12LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PXYuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZCxlKS5vcmRlcigpLHc9eC5leGl0KCksUz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLEU9eC5zZWxlY3QoInRleHQiKTtiPWIubWVyZ2UoYi5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSkseD14Lm1lcmdlKFMpLE09TS5tZXJnZShTLmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIoYysiMiIsbCpvKSksRT1FLm1lcmdlKFMuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIoYyxsKmYpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGghPT12JiYoYj1iLnRyYW5zaXRpb24oaCkseD14LnRyYW5zaXRpb24oaCksTT1NLnRyYW5zaXRpb24oaCksRT1FLnRyYW5zaXRpb24oaCksdz13LnRyYW5zaXRpb24oaCkuYXR0cigib3BhY2l0eSIsSmwpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXkodCkpP3UodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLFMuYXR0cigib3BhY2l0eSIsSmwpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHUoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOnkodCkpfSkpKSx3LnJlbW92ZSgpLGIuYXR0cigiZCIsND09PXR8fDI9PXQ/YT8iTSIrbCphKyIsIitnKyJIMC41ViIrXysiSCIrbCphOiJNMC41LCIrZysiViIrXzphPyJNIitnKyIsIitsKmErIlYwLjVIIitfKyJWIitsKmE6Ik0iK2crIiwwLjVIIitfKSx4LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1KHkodCkpfSkpLE0uYXR0cihjKyIyIixsKm8pLEUuYXR0cihjLGwqZikudGV4dChwKSx2LmZpbHRlcihpYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksdi5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPXl9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxoKTplfSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIG49S2wuY2FsbChhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1tdOktsLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOktsLmNhbGwodCksaCk6aSYmaS5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGgpOnN9LGh9ZnVuY3Rpb24gb2ModCl7cmV0dXJuIHJjKDMsdCl9ZnVuY3Rpb24gYWModCl7cmV0dXJuIHJjKDQsdCl9dmFyIHNjPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIGxjKCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IGNjKGkpfWZ1bmN0aW9uIGNjKHQpe3RoaXMuXz10fWZ1bmN0aW9uIHVjKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBoYyh0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGRjKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1zYyx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9Y2MucHJvdG90eXBlPWxjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2Msb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPXVjKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPWRjKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09ZGMoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWhjKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IGNjKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgcGM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGZjPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpwYyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIG1jKHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGZjLmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpmY1tlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIGdjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09cGMmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PXBjP2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBfYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiB5Yyh0KXt2YXIgZT1tYyh0KTtyZXR1cm4oZS5sb2NhbD9fYzpnYykoZSl9ZnVuY3Rpb24gdmMoKXt9ZnVuY3Rpb24gYmModCl7cmV0dXJuIG51bGw9PXQ/dmM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiB4Yygpe3JldHVybltdfWZ1bmN0aW9uIHdjKHQpe3JldHVybiBudWxsPT10P3hjOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gU2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gTWModCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gRWModCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gVGModCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IEVjKHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBDYyh0LGUsbixpLHIsbyxhKXt2YXIgcyxsLGMsdT17fSxoPWUubGVuZ3RoLGQ9by5sZW5ndGgscD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiYocFtzXT1jPSIkIithLmNhbGwobCxsLl9fZGF0YV9fLHMsZSksYyBpbiB1P3Jbc109bDp1W2NdPWwpO2ZvcihzPTA7czxkOysrcykobD11W2M9IiQiK2EuY2FsbCh0LG9bc10scyxvKV0pPyhpW3NdPWwsbC5fX2RhdGFfXz1vW3NdLHVbY109bnVsbCk6bltzXT1uZXcgRWModCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBBYyh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBrYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gTGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBQYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIE5jKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIEljKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBSYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBPYyh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gemModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gRGModCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBCYyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09aT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpLG4pfX1mdW5jdGlvbiBIYyh0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fE9jKHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEZjKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBWYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gVWModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gamModCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIEdjKHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IFdjKHQpfWZ1bmN0aW9uIFdjKHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1qYyh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIHFjKHQsZSl7Zm9yKHZhciBuPUdjKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5hZGQoZVtpXSl9ZnVuY3Rpb24gWWModCxlKXtmb3IodmFyIG49R2ModCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBYYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtxYyh0aGlzLHQpfX1mdW5jdGlvbiAkYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtZYyh0aGlzLHQpfX1mdW5jdGlvbiBLYyh0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9xYzpZYykodGhpcyx0KX19ZnVuY3Rpb24gWmMoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIEpjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gUWModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHR1KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gZXUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gbnUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBpdSgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBydSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIG91KCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gYXUoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBzdSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gbHUoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fUVjLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RWMsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX0sV2MucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgY3U9e30sdXU9bnVsbDtmdW5jdGlvbiBodSh0LGUsbil7cmV0dXJuIHQ9ZHUodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBkdSh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXV1O3V1PWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e3V1PXJ9fX1mdW5jdGlvbiBwdSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBmdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gbXUodCxlLG4pe3ZhciBpPWN1Lmhhc093blByb3BlcnR5KHQudHlwZSk/aHU6ZHU7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gZ3UodCxlLG4saSl7dmFyIHI9dXU7dC5zb3VyY2VFdmVudD11dSx1dT10O3RyeXtyZXR1cm4gZS5hcHBseShuLGkpfWZpbmFsbHl7dXU9cn19ZnVuY3Rpb24gX3UodCxlLG4pe3ZhciBpPU9jKHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIHl1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF91KHRoaXMsdCxlKX19ZnVuY3Rpb24gdnUodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gX3UodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoY3U9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBidT1bbnVsbF07ZnVuY3Rpb24geHUodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gd3UoKXtyZXR1cm4gbmV3IHh1KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sYnUpfWZ1bmN0aW9uIFN1KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeHUoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB4dShbW3RdXSxidSl9eHUucHJvdG90eXBlPXd1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6eHUsc2VsZWN0OmZ1bmN0aW9uIE11KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1iYyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IHh1KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBFdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9d2ModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IHh1KGkscil9LGZpbHRlcjpmdW5jdGlvbiBUdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9U2ModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IHh1KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gQ3UodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/Q2M6VGMsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyB4dShzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gQXUoKXtyZXR1cm4gbmV3IHh1KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKE1jKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBrdSgpe3JldHVybiBuZXcgeHUodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChNYyksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gTHUodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIFB1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IHh1KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIE51KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBJdSh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PUFjKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyB4dShyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gUnUoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIE91KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiB6dSgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gRHUoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIEJ1KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIEh1KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBGdSh0LGUpe3ZhciBuPW1jKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9MYzprYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP1JjOkljOm4ubG9jYWw/TmM6UGMpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBWdSh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/emM6ImZ1bmN0aW9uIj09dHlwZW9mIGU/QmM6RGMpKHQsZSxudWxsPT1uPyIiOm4pKTpIYyh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gVXUodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9GYzoiZnVuY3Rpb24iPT10eXBlb2YgZT9VYzpWYykodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24ganUodCxlKXt2YXIgbj1qYyh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1HYyh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9LYzplP1hjOiRjKShuLGUpKX0sdGV4dDpmdW5jdGlvbiBHdSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9aYzooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UWM6SmMpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBXdSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD90dTooImZ1bmN0aW9uIj09dHlwZW9mIHQ/bnU6ZXUpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIHF1KCl7cmV0dXJuIHRoaXMuZWFjaChpdSl9LGxvd2VyOmZ1bmN0aW9uIFl1KCl7cmV0dXJuIHRoaXMuZWFjaChydSl9LGFwcGVuZDpmdW5jdGlvbiBYdSh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnljKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiAkdSh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eWModCksaT1udWxsPT1lP291OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6YmMoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBLdSgpe3JldHVybiB0aGlzLmVhY2goYXUpfSxjbG9uZTpmdW5jdGlvbiBadSh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9sdTpzdSl9LGRhdHVtOmZ1bmN0aW9uIEp1KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gUXUodCxlLG4pe3ZhciBpLHIsbz1wdSh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9tdTpmdSxudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIHRoKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/dnU6eXUpKHQsZSkpfX07dmFyIGVoPTA7ZnVuY3Rpb24gbmgoKXtyZXR1cm4gbmV3IGlofWZ1bmN0aW9uIGloKCl7dGhpcy5fPSJAIisoKytlaCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHJoKCl7Zm9yKHZhciB0LGU9dXU7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gb2godCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBhaCh0KXt2YXIgZT1yaCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxvaCh0LGUpfWZ1bmN0aW9uIHNoKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeHUoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgeHUoW251bGw9PXQ/W106dF0sYnUpfWZ1bmN0aW9uIGxoKHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT1yaCgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIG9oKHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gY2goKXt1dS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB1aCgpe3V1LnByZXZlbnREZWZhdWx0KCksdXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gaGgodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1TdSh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLHVoLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLHVoLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBkaCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9U3UodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsdWgsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBwaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gZmgodCxlLG4saSxyLG8sYSxzLGwsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnN1YmplY3Q9bix0aGlzLmlkZW50aWZpZXI9aSx0aGlzLmFjdGl2ZT1yLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9cyx0aGlzLmR5PWwsdGhpcy5fPWN9ZnVuY3Rpb24gbWgoKXtyZXR1cm4hdXUuY3RybEtleSYmIXV1LmJ1dHRvbn1mdW5jdGlvbiBnaCgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gX2godCl7cmV0dXJuIG51bGw9PXQ/e3g6dXUueCx5OnV1Lnl9OnR9ZnVuY3Rpb24geWgoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gdmgoKXt2YXIgdCxlLG4saSxyPW1oLG89Z2gsYT1faCxzPXloLGw9e30sYz1sYygic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGFoLHRoaXMsYXJndW1lbnRzKTthJiYoU3UodXUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxoaCh1dS52aWV3KSxjaCgpLG49ITEsdD11dS5jbGllbnRYLGU9dXUuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKHVoKCksIW4pe3ZhciBpPXV1LmNsaWVudFgtdCxyPXV1LmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe1N1KHV1LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLGRoKHV1LnZpZXcsbiksdWgoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj11dS5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksbGgsdGhpcyxhcmd1bWVudHMpKSYmKGNoKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49dXUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKHVoKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPXV1LmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoY2goKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKGd1KG5ldyBmaChkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KHV1LnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fWd1KG5ldyBmaChkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cGgoISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnBoKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnBoKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cGgoISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH1mdW5jdGlvbiBiaCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24geGgodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gd2goKXt9aWgucHJvdG90eXBlPW5oLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aWgsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl87IShlIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0W3RoaXMuX109ZX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sZmgucHJvdG90eXBlLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fLm9uLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcy5fP3RoaXM6dH07dmFyIFNoPS43LE1oPTEvU2gsRWg9IlxccyooWystXT9cXGQrKVxccyoiLFRoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLENoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixBaD0vXiMoWzAtOWEtZl17Myw4fSkkLyxraD1uZXcgUmVnRXhwKCJecmdiXFwoIitbRWgsRWgsRWhdKyJcXCkkIiksTGg9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0NoLENoLENoXSsiXFwpJCIpLFBoPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbRWgsRWgsRWgsVGhdKyJcXCkkIiksTmg9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tDaCxDaCxDaCxUaF0rIlxcKSQiKSxJaD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVGgsQ2gsQ2hdKyJcXCkkIiksUmg9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tUaCxDaCxDaCxUaF0rIlxcKSQiKSxPaD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB6aCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIERoKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gQmgodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9QWguZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9IaChlKTozPT09bj9uZXcgamgoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0ZoKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0ZoKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9a2guZXhlYyh0KSk/bmV3IGpoKGVbMV0sZVsyXSxlWzNdLDEpOihlPUxoLmV4ZWModCkpP25ldyBqaCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1QaC5leGVjKHQpKT9GaChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1OaC5leGVjKHQpKT9GaCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1JaC5leGVjKHQpKT9ZaChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVJoLmV4ZWModCkpP1loKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6T2guaGFzT3duUHJvcGVydHkodCk/SGgoT2hbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBqaChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEhoKHQpe3JldHVybiBuZXcgamgodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIEZoKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgamgodCxlLG4saSl9ZnVuY3Rpb24gVmgodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB3aHx8KHQ9QmgodCkpLHQ/bmV3IGpoKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBqaH1mdW5jdGlvbiBVaCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VmgodCk6bmV3IGpoKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBqaCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gR2goKXtyZXR1cm4iIyIrcWgodGhpcy5yKStxaCh0aGlzLmcpK3FoKHRoaXMuYil9ZnVuY3Rpb24gV2goKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBxaCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFloKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgS2godCxlLG4saSl9ZnVuY3Rpb24gWGgodCl7aWYodCBpbnN0YW5jZW9mIEtoKXJldHVybiBuZXcgS2godC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2Ygd2h8fCh0PUJoKHQpKSwhdClyZXR1cm4gbmV3IEtoO2lmKHQgaW5zdGFuY2VvZiBLaClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IEtoKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gJGgodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1hoKHQpOm5ldyBLaCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gS2godCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFpoKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1iaCh3aCxCaCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDp6aCxmb3JtYXRIZXg6emgsZm9ybWF0SHNsOmZ1bmN0aW9uIEpoKCl7cmV0dXJuIFhoKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6RGgsdG9TdHJpbmc6RGh9KSxiaChqaCxVaCx4aCh3aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NaDpNYXRoLnBvdyhNaCx0KSxuZXcgamgodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/U2g6TWF0aC5wb3coU2gsdCksbmV3IGpoKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6R2gsZm9ybWF0SGV4OkdoLGZvcm1hdFJnYjpXaCx0b1N0cmluZzpXaH0pKSxiaChLaCwkaCx4aCh3aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9NaDpNYXRoLnBvdyhNaCx0KSxuZXcgS2godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9TaDpNYXRoLnBvdyhTaCx0KSxuZXcgS2godGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBqaChaaCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxaaCh0LHIsaSksWmgodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgUWg9TWF0aC5QSS8xODAsdGQ9MTgwL01hdGguUEksZWQ9Ljk2NDIyLG5kPS44MjUyMSxpZD00LzI5LHJkPTYvMjksb2Q9MypyZCpyZDtmdW5jdGlvbiBhZCh0KXtpZih0IGluc3RhbmNlb2YgbGQpcmV0dXJuIG5ldyBsZCh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBtZClyZXR1cm4gZ2QodCk7dCBpbnN0YW5jZW9mIGpofHwodD1WaCh0KSk7dmFyIGUsbixpPWRkKHQucikscj1kZCh0LmcpLG89ZGQodC5iKSxhPWNkKCguMjIyNTA0NSppKy43MTY4Nzg2KnIrLjA2MDYxNjkqbykvMSk7cmV0dXJuIGk9PT1yJiZyPT09bz9lPW49YTooZT1jZCgoLjQzNjA3NDcqaSsuMzg1MDY0OSpyKy4xNDMwODA0Km8pL2VkKSxuPWNkKCguMDEzOTMyMippKy4wOTcxMDQ1KnIrLjcxNDE3MzMqbykvbmQpKSxuZXcgbGQoMTE2KmEtMTYsNTAwKihlLWEpLDIwMCooYS1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHNkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9hZCh0KTpuZXcgbGQodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIGxkKHQsZSxuLGkpe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBjZCh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L29kK2lkfWZ1bmN0aW9uIHVkKHQpe3JldHVybiB0PnJkP3QqdCp0Om9kKih0LWlkKX1mdW5jdGlvbiBoZCh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGRkKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIHBkKHQpe2lmKHQgaW5zdGFuY2VvZiBtZClyZXR1cm4gbmV3IG1kKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGxkfHwodD1hZCh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IG1kKE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKnRkO3JldHVybiBuZXcgbWQoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gZmQodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3BkKHQpOm5ldyBtZCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gbWQodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGdkKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBsZCh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKlFoO3JldHVybiBuZXcgbGQodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1iaChsZCxzZCx4aCh3aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZCh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGxkKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBqaChoZCgzLjEzMzg1NjEqKGU9ZWQqdWQoZSkpLTEuNjE2ODY2NyoodD0xKnVkKHQpKS0uNDkwNjE0Nioobj1uZCp1ZChuKSkpLGhkKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksaGQoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxiaChtZCxmZCx4aCh3aCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtZCh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG1kKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIGdkKHRoaXMpLnJnYigpfX0pKTt2YXIgX2Q9LS4yOTIyNyx5ZD0tLjkwNjQ5LHZkPTEuOTcyOTQ7ZnVuY3Rpb24gYmQodCl7aWYodCBpbnN0YW5jZW9mIHdkKXJldHVybiBuZXcgd2QodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2Ygamh8fCh0PVZoKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPSgtLjY1NTc2MzY2Njc5OTk5OTkqbit0LnIvMjU1Ki0xLjc4ODQ1MDM4MDYtMy41MTcyOTgyNDM4KmUpLy01Ljk2MTUxMjI5MTIscj1uLWksbz0odmQqKGUtaSktX2QqcikveWQsYT1NYXRoLnNxcnQobypvK3IqcikvKHZkKmkqKDEtaSkpLHM9YT9NYXRoLmF0YW4yKG8scikqdGQtMTIwOk5hTjtyZXR1cm4gbmV3IHdkKHM8MD9zKzM2MDpzLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHhkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9iZCh0KTpuZXcgd2QodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHdkKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBTZCh0LGUsbixpLHIpe3ZhciBvPXQqdCxhPW8qdDtyZXR1cm4oKDEtMyp0KzMqby1hKSplKyg0LTYqbyszKmEpKm4rKDErMyp0KzMqby0zKmEpKmkrYSpyKS82fWZ1bmN0aW9uIE1kKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxyPXRbaV0sbz10W2krMV07cmV0dXJuIFNkKChuLWkvZSkqZSxpPjA/dFtpLTFdOjIqci1vLHIsbyxpPGUtMT90W2krMl06MipvLXIpfX1mdW5jdGlvbiBFZCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpO3JldHVybiBTZCgobi1pL2UpKmUsdFsoaStlLTEpJWVdLHRbaSVlXSx0WyhpKzEpJWVdLHRbKGkrMiklZV0pfX1mdW5jdGlvbiBUZCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQ2QodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBBZCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9DZCh0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6VGQoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBrZCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9DZCh0LG4pOlRkKGlzTmFOKHQpP2U6dCl9Ymgod2QseGQseGgod2gse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/TWg6TWF0aC5wb3coTWgsdCksbmV3IHdkKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/U2g6TWF0aC5wb3coU2gsdCksbmV3IHdkKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpRaCxlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgamgoMjU1KihlK24qKC0uMTQ4NjEqaSsxLjc4Mjc3KnIpKSwyNTUqKGUrbiooX2QqaSt5ZCpyKSksMjU1KihlK24qKHZkKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgTGQ9KGZ1bmN0aW9uIHQoZSl7dmFyIG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIDE9PSh0PSt0KT9rZDpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpUZChpc05hTihlKT9uOmUpfX0pKGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgaT1uKCh0PVVoKHQpKS5yLChlPVVoKGUpKS5yKSxyPW4odC5nLGUuZyksbz1uKHQuYixlLmIpLGE9a2QodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KSgxKTtmdW5jdGlvbiBQZCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4saSxyPWUubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9bmV3IEFycmF5KHIpO2ZvcihuPTA7bjxyOysrbilpPVVoKGVbbl0pLG9bbl09aS5yfHwwLGFbbl09aS5nfHwwLHNbbl09aS5ifHwwO3JldHVybiBvPXQobyksYT10KGEpLHM9dChzKSxpLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gaS5yPW8odCksaS5nPWEodCksaS5iPXModCksaSsiIn19fXZhciBOZD1QZChNZCksSWQ9UGQoRWQpO2Z1bmN0aW9uIFJkKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIE9kKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX1mdW5jdGlvbiB6ZCh0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPWpkKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gRGQodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKGkpe3JldHVybiBuLnNldFRpbWUodCooMS1pKStlKmkpLG59fWZ1bmN0aW9uIEJkKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fWZ1bmN0aW9uIEhkKHQsZSl7dmFyIG4saT17fSxyPXt9O2ZvcihuIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfHwoZT17fSksZSluIGluIHQ/aVtuXT1qZCh0W25dLGVbbl0pOnJbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gaSlyW25dPWlbbl0odCk7cmV0dXJuIHJ9fXZhciBGZD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csVmQ9bmV3IFJlZ0V4cChGZC5zb3VyY2UsImciKTtmdW5jdGlvbiBVZCh0LGUpe3ZhciBuLGkscixvPUZkLmxhc3RJbmRleD1WZC5sYXN0SW5kZXg9MCxhPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49RmQuZXhlYyh0KSkmJihpPVZkLmV4ZWMoZSkpOykocj1pLmluZGV4KT5vJiYocj1lLnNsaWNlKG8sciksc1thXT9zW2FdKz1yOnNbKythXT1yKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpCZChuLGkpfSkpLG89VmQubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGpkKHQsZSl7dmFyIG4saT10eXBlb2YgZTtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT09aT9UZChlKTooIm51bWJlciI9PT1pP0JkOiJzdHJpbmciPT09aT8obj1CaChlKSk/KGU9bixMZCk6VWQ6ZSBpbnN0YW5jZW9mIEJoP0xkOmUgaW5zdGFuY2VvZiBEYXRlP0RkOk9kKGUpP1JkOkFycmF5LmlzQXJyYXkoZSk/emQ6ImZ1bmN0aW9uIiE9dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmd8fGlzTmFOKGUpP0hkOkJkKSh0LGUpfWZ1bmN0aW9uIEdkKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLW4pK2Uqbil9fXZhciBXZCxxZCxZZCxYZCwkZD0xODAvTWF0aC5QSSxLZD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBaZCh0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSokZCxza2V3WDpNYXRoLmF0YW4obCkqJGQsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIEpkKHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6QmQodCxyKX0se2k6bC0yLHg6QmQoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpCZCh0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6QmQodCxlKX0pOmUmJm4ucHVzaChyKG4pKyJza2V3WCgiK2UraSl9KShvLnNrZXdYLGEuc2tld1gscyxsKSwoZnVuY3Rpb24gZCh0LGUsbixpLG8sYSl7aWYodCE9PW58fGUhPT1pKXt2YXIgcz1vLnB1c2gocihvKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7YS5wdXNoKHtpOnMtNCx4OkJkKHQsbil9LHtpOnMtMix4OkJkKGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBRZD1KZCgoZnVuY3Rpb24gdHAodCl7cmV0dXJuIm5vbmUiPT09dD9LZDooV2R8fChXZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxxZD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsWWQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFdkLnN0eWxlLnRyYW5zZm9ybT10LHQ9WWQuZ2V0Q29tcHV0ZWRTdHlsZShxZC5hcHBlbmRDaGlsZChXZCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikscWQucmVtb3ZlQ2hpbGQoV2QpLFpkKCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxlcD1KZCgoZnVuY3Rpb24gbnAodCl7cmV0dXJuIG51bGw9PXQ/S2Q6KFhkfHwoWGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksWGQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PVhkLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP1pkKCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOktkKX0pLCIsICIsIikiLCIpIiksaXA9TWF0aC5TUVJUMjtmdW5jdGlvbiBycCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpKzEvdCkvMn1mdW5jdGlvbiBvcCh0LGUpe3ZhciBuLGkscj10WzBdLG89dFsxXSxhPXRbMl0scz1lWzJdLGw9ZVswXS1yLGM9ZVsxXS1vLHU9bCpsK2MqYztpZih1PDFlLTEyKWk9TWF0aC5sb2cocy9hKS9pcCxuPWZ1bmN0aW9uKHQpe3JldHVybltyK3QqbCxvK3QqYyxhKk1hdGguZXhwKGlwKnQqaSldfTtlbHNle3ZhciBoPU1hdGguc3FydCh1KSxkPShzKnMtYSphKzQqdSkvKDIqYSoyKmgpLHA9KHMqcy1hKmEtNCp1KS8oMipzKjIqaCksZj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKTtpPShtLWYpL2lwLG49ZnVuY3Rpb24odCl7dmFyIGU9dCppLG49cnAoZikscz1hLygyKmgpKihuKihmdW5jdGlvbiB1KHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX0pKGlwKmUrZiktKGZ1bmN0aW9uIGQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KShmKSk7cmV0dXJuW3IrcypsLG8rcypjLGEqbi9ycChpcCplK2YpXX19cmV0dXJuIG4uZHVyYXRpb249MWUzKmksbn1mdW5jdGlvbiBhcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KChlPSRoKGUpKS5oLChuPSRoKG4pKS5oKSxyPWtkKGUucyxuLnMpLG89a2QoZS5sLG4ubCksYT1rZChlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1pKHQpLGUucz1yKHQpLGUubD1vKHQpLGUub3BhY2l0eT1hKHQpLGUrIiJ9fX12YXIgc3A9YXAoQWQpLGxwPWFwKGtkKTtmdW5jdGlvbiBjcCh0LGUpe3ZhciBuPWtkKCh0PXNkKHQpKS5sLChlPXNkKGUpKS5sKSxpPWtkKHQuYSxlLmEpLHI9a2QodC5iLGUuYiksbz1rZCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQubD1uKGUpLHQuYT1pKGUpLHQuYj1yKGUpLHQub3BhY2l0eT1vKGUpLHQrIiJ9fWZ1bmN0aW9uIHVwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9ZmQoZSkpLmgsKG49ZmQobikpLmgpLHI9a2QoZS5jLG4uYyksbz1rZChlLmwsbi5sKSxhPWtkKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5jPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBocD11cChBZCksZHA9dXAoa2QpO2Z1bmN0aW9uIHBwKHQpe3JldHVybihmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIGkoZSxpKXt2YXIgcj10KChlPXhkKGUpKS5oLChpPXhkKGkpKS5oKSxvPWtkKGUucyxpLnMpLGE9a2QoZS5sLGkubCkscz1rZChlLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1vKHQpLGUubD1hKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9ZSxpfSkoMSl9dmFyIGZwLG1wLGdwPXBwKEFkKSxfcD1wcChrZCkseXA9MCx2cD0wLGJwPTAseHA9MCx3cD0wLFNwPTAsTXA9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsRXA9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gVHAoKXtyZXR1cm4gd3B8fChFcChDcCksd3A9TXAubm93KCkrU3ApfWZ1bmN0aW9uIENwKCl7d3A9MH1mdW5jdGlvbiBBcCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24ga3AodCxlLG4pe3ZhciBpPW5ldyBBcDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIExwKCl7VHAoKSwrK3lwO2Zvcih2YXIgdCxlPWZwO2U7KSh0PXdwLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS15cH1mdW5jdGlvbiBQcCgpe3dwPSh4cD1NcC5ub3coKSkrU3AseXA9dnA9MDt0cnl7THAoKX1maW5hbGx5e3lwPTAsKGZ1bmN0aW9uIHQoKXtmb3IodmFyIHQsZSxuPWZwLGk9MS8wO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpmcD1lKTttcD10LElwKGkpfSkoKSx3cD0wfX1mdW5jdGlvbiBOcCgpe3ZhciB0PU1wLm5vdygpLGU9dC14cDtlPjFlMyYmKFNwLT1lLHhwPXQpfWZ1bmN0aW9uIElwKHQpe3lwfHwodnAmJih2cD1jbGVhclRpbWVvdXQodnApKSx0LXdwPjI0Pyh0PDEvMCYmKHZwPXNldFRpbWVvdXQoUHAsdC1NcC5ub3coKS1TcCkpLGJwJiYoYnA9Y2xlYXJJbnRlcnZhbChicCkpKTooYnB8fCh4cD1NcC5ub3coKSxicD1zZXRJbnRlcnZhbChOcCwxZTMpKSx5cD0xLEVwKFBwKSkpfWZ1bmN0aW9uIFJwKHQsZSxuKXt2YXIgaT1uZXcgQXA7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1BcC5wcm90b3R5cGU9a3AucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpBcCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/VHAoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8bXA9PT10aGlzfHwobXA/bXAuX25leHQ9dGhpczpmcD10aGlzLG1wPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sSXAoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsSXAoKSl9fTt2YXIgT3A9bGMoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksenA9W107ZnVuY3Rpb24gRHAodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyhsKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gcygpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIFJwKG8pOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYoUnAoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLGEobCkpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQocyksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkscygpKX1mdW5jdGlvbiBzKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9a3AoKGZ1bmN0aW9uIGwodCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZvKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246T3AsdHdlZW46enAsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIEJwKHQsZSl7dmFyIG49RnAodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBIcCh0LGUpe3ZhciBuPUZwKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIEZwKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gVnAodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBVcCh0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9SHAodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiBqcCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89SHAodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gR3AodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9SHAodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gRnAodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gV3AodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP0JkOmUgaW5zdGFuY2VvZiBCaD9MZDoobj1CaChlKSk/KGU9bixMZCk6VWQpKHQsZSl9ZnVuY3Rpb24gcXAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFlwKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gWHAodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gJHAodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIEtwKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIFpwKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gSnAodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIFFwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gdGYodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZRcCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gZWYodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZKcCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gbmYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtCcCh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gcmYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0JwKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gb2YodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtIcCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gYWYodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0hwKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gc2YodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7SHAodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIGxmKHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/QnA6SHA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIGNmPXd1LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiB1Zih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBoZih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24gZGYodCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJmhmKHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIHBmKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBmZih0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZwZihpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciBtZj0wO2Z1bmN0aW9uIGdmKHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBfZih0KXtyZXR1cm4gd3UoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIHlmKCl7cmV0dXJuKyttZn12YXIgdmY9d3UucHJvdG90eXBlO2Z1bmN0aW9uIGJmKHQpe3JldHVybit0fWZ1bmN0aW9uIHhmKHQpe3JldHVybiB0KnR9ZnVuY3Rpb24gd2YodCl7cmV0dXJuIHQqKDItdCl9ZnVuY3Rpb24gU2YodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQ6LS10KigyLXQpKzEpLzJ9ZnVuY3Rpb24gTWYodCl7cmV0dXJuIHQqdCp0fWZ1bmN0aW9uIEVmKHQpe3JldHVybi0tdCp0KnQrMX1mdW5jdGlvbiBUZih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn1nZi5wcm90b3R5cGU9X2YucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpnZixzZWxlY3Q6ZnVuY3Rpb24gQ2YodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1iYyh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLERwKGhbZF0sZSxuLGQsaCxGcChzLG4pKSk7cmV0dXJuIG5ldyBnZihvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIEFmKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9d2ModCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8cjsrK3MpZm9yKHZhciBsLGM9aVtzXSx1PWMubGVuZ3RoLGg9MDtoPHU7KytoKWlmKGw9Y1toXSl7Zm9yKHZhciBkLHA9dC5jYWxsKGwsbC5fX2RhdGFfXyxoLGMpLGY9RnAobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZEcChkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3IGdmKG8sYSxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24ga2YodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVNjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBnZihpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIExmKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IGdmKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIFBmKCl7cmV0dXJuIG5ldyBjZih0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gTmYoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49eWYoKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihhPXNbY10pe3ZhciB1PUZwKGEsZSk7RHAoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyBnZihpLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDp2Zi5jYWxsLG5vZGVzOnZmLm5vZGVzLG5vZGU6dmYubm9kZSxzaXplOnZmLnNpemUsZW1wdHk6dmYuZW1wdHksZWFjaDp2Zi5lYWNoLG9uOmZ1bmN0aW9uIElmKHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9GcCh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2gobGYobix0LGUpKX0sYXR0cjpmdW5jdGlvbiBSZih0LGUpe3ZhciBuPW1jKHQpLGk9InRyYW5zZm9ybSI9PT1uP2VwOldwO3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP1pwOktwKShuLGksR3AodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/WXA6cXApKG4pOihuLmxvY2FsPyRwOlhwKShuLGksZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gT2YodCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBpPW1jKHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/dGY6ZWYpKGksZSkpfSxzdHlsZTpmdW5jdGlvbiB6Zih0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/UWQ6V3A7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlKXt2YXIgbixpLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89SGModGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLEhjKHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCx1Zih0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1IYyh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1IYyh0aGlzLHQpKSxhPT09bD9udWxsOmE9PT1pJiZsPT09cj9vOihyPWwsbz1lKGk9YSxzKSl9fSkodCxpLEdwKHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIG8odCxlKXt2YXIgbixpLHIsbyxhPSJzdHlsZS4iK2Uscz0iZW5kLiIrYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1IcCh0aGlzLHQpLGM9bC5vbix1PW51bGw9PWwudmFsdWVbYV0/b3x8KG89dWYoZSkpOnZvaWQgMDtjPT09biYmcj09PXV8fChpPShuPWMpLmNvcHkoKSkub24ocyxyPXUpLGwub249aX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPUhjKHRoaXMsdCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX0pKHQsaSxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBEZih0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxkZih0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gQmYodCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoR3AodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIEhmKHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxmZih0KSl9LHJlbW92ZTpmdW5jdGlvbiBGZigpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBWZih0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9RnAodGhpcy5ub2RlKCksbikudHdlZW4sbz0wLGE9ci5sZW5ndGg7bzxhOysrbylpZigoaT1yW29dKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP1VwOmpwKShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBVZih0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P25mOnJmKShlLHQpKTpGcCh0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gamYodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9vZjphZikoZSx0KSk6RnAodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gR2YodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKHNmKGUsdCkpOkZwKHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBXZigpe3ZhciB0LGUsbj10aGlzLGk9bi5faWQscj1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYSl7dmFyIHM9e3ZhbHVlOmF9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1yJiZvKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49SHAodGhpcyxpKSxyPW4ub247ciE9PXQmJigoZT0odD1yKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIHFmPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxZZj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxlKX1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLFhmPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksJGY9TWF0aC5QSSxLZj0kZi8yO2Z1bmN0aW9uIFpmKHQpe3JldHVybiAxPT0rdD8xOjEtTWF0aC5jb3ModCpLZil9ZnVuY3Rpb24gSmYodCl7cmV0dXJuIE1hdGguc2luKHQqS2YpfWZ1bmN0aW9uIFFmKHQpe3JldHVybigxLU1hdGguY29zKCRmKnQpKS8yfWZ1bmN0aW9uIHRtKHQpe3JldHVybiAxLjAwMDk3NzUxNzEwNjU0OTQqKE1hdGgucG93KDIsLTEwKnQpLS4wMDA5NzY1NjI1KX1mdW5jdGlvbiBlbSh0KXtyZXR1cm4gdG0oMS0rdCl9ZnVuY3Rpb24gbm0odCl7cmV0dXJuIDEtdG0odCl9ZnVuY3Rpb24gaW0odCl7cmV0dXJuKCh0Kj0yKTw9MT90bSgxLXQpOjItdG0odC0xKSkvMn1mdW5jdGlvbiBybSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIG9tKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIGFtKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBzbT03LjU2MjU7ZnVuY3Rpb24gbG0odCl7cmV0dXJuIDEtY20oMS10KX1mdW5jdGlvbiBjbSh0KXtyZXR1cm4odD0rdCk8LjM2MzYzNjM2MzYzNjM2MzY1P3NtKnQqdDp0PC43MjcyNzI3MjcyNzI3MjczP3NtKih0LT0uNTQ1NDU0NTQ1NDU0NTQ1NCkqdCsuNzU6dDwuOTA5MDkwOTA5MDkwOTA5MT9zbSoodC09LjgxODE4MTgxODE4MTgxODIpKnQrLjkzNzU6c20qKHQtPS45NTQ1NDU0NTQ1NDU0NTQ2KSp0Ky45ODQzNzV9ZnVuY3Rpb24gdW0odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLWNtKDEtdCk6Y20odC0xKSsxKS8yfXZhciBobT0xLjcwMTU4LGRtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKHQ9K3QpKnQqKGUqKHQtMSkrdCl9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoaG0pLHBtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuLS10KnQqKCh0KzEpKmUrdCkrMX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShobSksZm09KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4oKHQqPTIpPDE/dCp0KigoZSsxKSp0LWUpOih0LT0yKSp0KigoZSsxKSp0K2UpKzIpLzJ9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkoaG0pLG1tPTIqTWF0aC5QSSxnbT0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89bW0pO2Z1bmN0aW9uIHIodCl7cmV0dXJuIGUqdG0oLSAtLXQpKk1hdGguc2luKChpLXQpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qbW0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksX209KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPW1tKTtmdW5jdGlvbiByKHQpe3JldHVybiAxLWUqdG0odD0rdCkqTWF0aC5zaW4oKHQraSkvbil9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbiptbSl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSx5bT0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89bW0pO2Z1bmN0aW9uIHIodCl7cmV0dXJuKCh0PTIqdC0xKTwwP2UqdG0oLXQpKk1hdGguc2luKChpLXQpL24pOjItZSp0bSh0KSpNYXRoLnNpbigoaSt0KS9uKSkvMn1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKm1tKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLHZtPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGVhc2VMaW5lYXI6YmYsZWFzZVF1YWQ6U2YsZWFzZVF1YWRJbjp4ZixlYXNlUXVhZE91dDp3ZixlYXNlUXVhZEluT3V0OlNmLGVhc2VDdWJpYzpUZixlYXNlQ3ViaWNJbjpNZixlYXNlQ3ViaWNPdXQ6RWYsZWFzZUN1YmljSW5PdXQ6VGYsZWFzZVBvbHk6WGYsZWFzZVBvbHlJbjpxZixlYXNlUG9seU91dDpZZixlYXNlUG9seUluT3V0OlhmLGVhc2VTaW46UWYsZWFzZVNpbkluOlpmLGVhc2VTaW5PdXQ6SmYsZWFzZVNpbkluT3V0OlFmLGVhc2VFeHA6aW0sZWFzZUV4cEluOmVtLGVhc2VFeHBPdXQ6bm0sZWFzZUV4cEluT3V0OmltLGVhc2VDaXJjbGU6YW0sZWFzZUNpcmNsZUluOnJtLGVhc2VDaXJjbGVPdXQ6b20sZWFzZUNpcmNsZUluT3V0OmFtLGVhc2VCb3VuY2U6Y20sZWFzZUJvdW5jZUluOmxtLGVhc2VCb3VuY2VPdXQ6Y20sZWFzZUJvdW5jZUluT3V0OnVtLGVhc2VCYWNrOmZtLGVhc2VCYWNrSW46ZG0sZWFzZUJhY2tPdXQ6cG0sZWFzZUJhY2tJbk91dDpmbSxlYXNlRWxhc3RpYzpfbSxlYXNlRWxhc3RpY0luOmdtLGVhc2VFbGFzdGljT3V0Ol9tLGVhc2VFbGFzdGljSW5PdXQ6eW19KSxibT17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6VGZ9O2Z1bmN0aW9uIHhtKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIGJtLnRpbWU9VHAoKSxibTtyZXR1cm4gbn13dS5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIHdtKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7VnAodGhpcyx0KX0pKX0sd3UucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gU20odCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgZ2Y/KGU9dC5faWQsdD10Ll9uYW1lKTooZT15ZigpLChuPWJtKS50aW1lPVRwKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmRHAoYSx0LGUsYyxzLG58fHhtKGEsZSkpO3JldHVybiBuZXcgZ2YoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBNbT1bbnVsbF07ZnVuY3Rpb24gRW0odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFRtKHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gQ20oKXt1dS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBBbSgpe3V1LnByZXZlbnREZWZhdWx0KCksdXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIGttPXtuYW1lOiJkcmFnIn0sTG09e25hbWU6InNwYWNlIn0sUG09e25hbWU6ImhhbmRsZSJ9LE5tPXtuYW1lOiJjZW50ZXIifTtmdW5jdGlvbiBJbSh0KXtyZXR1cm5bK3RbMF0sK3RbMV1dfWZ1bmN0aW9uIFJtKHQpe3JldHVybltJbSh0WzBdKSxJbSh0WzFdKV19ZnVuY3Rpb24gT20odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBsaChlLHV1LnRvdWNoZXMsdCl9fXZhciB6bT17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKEdtKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1srdFswXSxlWzBdWzFdXSxbK3RbMV0sZVsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzBdLHRbMV1bMF1dfX0sRG09e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcChHbSksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LEJtPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChHbSksaW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpSbSh0KX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sSG09e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LEZtPXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSxWbT17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sVW09e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sam09e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24gR20odCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gV20oKXtyZXR1cm4hdXUuY3RybEtleSYmIXV1LmJ1dHRvbn1mdW5jdGlvbiBxbSgpe3ZhciB0PXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgidmlld0JveCIpP1tbKHQ9dC52aWV3Qm94LmJhc2VWYWwpLngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV06W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIFltKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIFhtKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gJG0odCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBLbSh0KXt2YXIgZT10Ll9fYnJ1c2g7cmV0dXJuIGU/ZS5kaW0ub3V0cHV0KGUuc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uIFptKCl7cmV0dXJuIFFtKERtKX1mdW5jdGlvbiBKbSgpe3JldHVybiBRbShCbSl9ZnVuY3Rpb24gUW0odCl7dmFyIGUsbj1xbSxpPVdtLHI9WW0sbz0hMCxhPWxjKCJzdGFydCIsImJydXNoIiwiZW5kIikscz02O2Z1bmN0aW9uIGwoZSl7dmFyIG49ZS5wcm9wZXJ0eSgiX19icnVzaCIsbSkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmRhdGEoW0dtKCJvdmVybGF5IildKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLEhtLm92ZXJsYXkpLm1lcmdlKG4pLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9WG0odGhpcykuZXh0ZW50O1N1KHRoaXMpLmF0dHIoIngiLHRbMF1bMF0pLmF0dHIoInkiLHRbMF1bMV0pLmF0dHIoIndpZHRoIix0WzFdWzBdLXRbMF1bMF0pLmF0dHIoImhlaWdodCIsdFsxXVsxXS10WzBdWzFdKX0pKSxlLnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW0dtKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLEhtLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBpPWUuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YSh0LmhhbmRsZXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9KSk7aS5leGl0KCkucmVtb3ZlKCksaS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkpLmF0dHIoImN1cnNvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBIbVt0LnR5cGVdfSkpLGUuZWFjaChjKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikub24oIm1vdXNlZG93bi5icnVzaCIsZCkuZmlsdGVyKHIpLm9uKCJ0b3VjaHN0YXJ0LmJydXNoIixkKS5vbigidG91Y2htb3ZlLmJydXNoIixwKS5vbigidG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2giLGYpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBjKCl7dmFyIHQ9U3UodGhpcyksZT1YbSh0aGlzKS5zZWxlY3Rpb247ZT8odC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZVswXVswXSkuYXR0cigieSIsZVswXVsxXSkuYXR0cigid2lkdGgiLGVbMV1bMF0tZVswXVswXSkuYXR0cigiaGVpZ2h0IixlWzFdWzFdLWVbMF1bMV0pLHQuc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGVbdC50eXBlLmxlbmd0aC0xXT9lWzFdWzBdLXMvMjplWzBdWzBdLXMvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuInMiPT09dC50eXBlWzBdP2VbMV1bMV0tcy8yOmVbMF1bMV0tcy8yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/ZVsxXVswXS1lWzBdWzBdK3M6c30pKS5hdHRyKCJoZWlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGV8fCJ3Ij09PXQudHlwZT9lWzFdWzFdLWVbMF1bMV0rczpzfSkpKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gdSh0LGUsbil7dmFyIGk9dC5fX2JydXNoLmVtaXR0ZXI7cmV0dXJuIWl8fG4mJmkuY2xlYW4/bmV3IGgodCxlLG4pOml9ZnVuY3Rpb24gaCh0LGUsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MCx0aGlzLmNsZWFuPW59ZnVuY3Rpb24gZCgpe2lmKCghZXx8dXUudG91Y2hlcykmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLGEscyxsLGgsZCxwLGYsbSxnLF89dGhpcyx5PXV1LnRhcmdldC5fX2RhdGFfXy50eXBlLHY9InNlbGVjdGlvbiI9PT0obyYmdXUubWV0YUtleT95PSJvdmVybGF5Ijp5KT9rbTpvJiZ1dS5hbHRLZXk/Tm06UG0sYj10PT09RG0/bnVsbDpVbVt5XSx4PXQ9PT16bT9udWxsOmptW3ldLHc9WG0oXyksUz13LmV4dGVudCxNPXcuc2VsZWN0aW9uLEU9U1swXVswXSxUPVNbMF1bMV0sQz1TWzFdWzBdLEE9U1sxXVsxXSxrPTAsTD0wLFA9YiYmeCYmbyYmdXUuc2hpZnRLZXksTj11dS50b3VjaGVzP09tKHV1LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIpOmFoLEk9TihfKSxSPUksTz11KF8sYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PXk/KE0mJihmPSEwKSx3LnNlbGVjdGlvbj1NPVtbbj10PT09RG0/RTpJWzBdLGE9dD09PXptP1Q6SVsxXV0sW2w9dD09PURtP0M6bixkPXQ9PT16bT9BOmFdXSk6KG49TVswXVswXSxhPU1bMF1bMV0sbD1NWzFdWzBdLGQ9TVsxXVsxXSkscj1uLHM9YSxoPWwscD1kO3ZhciB6PVN1KF8pLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEQ9ei5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixIbVt5XSk7aWYodXUudG91Y2hlcylPLm1vdmVkPUgsTy5lbmRlZD1WO2Vsc2V7dmFyIEI9U3UodXUudmlldykub24oIm1vdXNlbW92ZS5icnVzaCIsSCwhMCkub24oIm1vdXNldXAuYnJ1c2giLFYsITApO28mJkIub24oImtleWRvd24uYnJ1c2giLFUsITApLm9uKCJrZXl1cC5icnVzaCIsaiwhMCksaGgodXUudmlldyl9Q20oKSxWcChfKSxjLmNhbGwoXyksTy5zdGFydCgpfWZ1bmN0aW9uIEgoKXt2YXIgdD1OKF8pOyFQfHxtfHxnfHwoTWF0aC5hYnModFswXS1SWzBdKT5NYXRoLmFicyh0WzFdLVJbMV0pP2c9ITA6bT0hMCksUj10LGY9ITAsQW0oKSxGKCl9ZnVuY3Rpb24gRigpe3ZhciB0O3N3aXRjaChrPVJbMF0tSVswXSxMPVJbMV0tSVsxXSx2KXtjYXNlIExtOmNhc2Uga206YiYmKGs9TWF0aC5tYXgoRS1uLE1hdGgubWluKEMtbCxrKSkscj1uK2ssaD1sK2spLHgmJihMPU1hdGgubWF4KFQtYSxNYXRoLm1pbihBLWQsTCkpLHM9YStMLHA9ZCtMKTticmVhaztjYXNlIFBtOmI8MD8oaz1NYXRoLm1heChFLW4sTWF0aC5taW4oQy1uLGspKSxyPW4rayxoPWwpOmI+MCYmKGs9TWF0aC5tYXgoRS1sLE1hdGgubWluKEMtbCxrKSkscj1uLGg9bCtrKSx4PDA/KEw9TWF0aC5tYXgoVC1hLE1hdGgubWluKEEtYSxMKSkscz1hK0wscD1kKTp4PjAmJihMPU1hdGgubWF4KFQtZCxNYXRoLm1pbihBLWQsTCkpLHM9YSxwPWQrTCk7YnJlYWs7Y2FzZSBObTpiJiYocj1NYXRoLm1heChFLE1hdGgubWluKEMsbi1rKmIpKSxoPU1hdGgubWF4KEUsTWF0aC5taW4oQyxsK2sqYikpKSx4JiYocz1NYXRoLm1heChULE1hdGgubWluKEEsYS1MKngpKSxwPU1hdGgubWF4KFQsTWF0aC5taW4oQSxkK0wqeCkpKX1oPHImJihiKj0tMSx0PW4sbj1sLGw9dCx0PXIscj1oLGg9dCx5IGluIEZtJiZELmF0dHIoImN1cnNvciIsSG1beT1GbVt5XV0pKSxwPHMmJih4Kj0tMSx0PWEsYT1kLGQ9dCx0PXMscz1wLHA9dCx5IGluIFZtJiZELmF0dHIoImN1cnNvciIsSG1beT1WbVt5XV0pKSx3LnNlbGVjdGlvbiYmKE09dy5zZWxlY3Rpb24pLG0mJihyPU1bMF1bMF0saD1NWzFdWzBdKSxnJiYocz1NWzBdWzFdLHA9TVsxXVsxXSksTVswXVswXT09PXImJk1bMF1bMV09PT1zJiZNWzFdWzBdPT09aCYmTVsxXVsxXT09PXB8fCh3LnNlbGVjdGlvbj1bW3Isc10sW2gscF1dLGMuY2FsbChfKSxPLmJydXNoKCkpfWZ1bmN0aW9uIFYoKXtpZihDbSgpLHV1LnRvdWNoZXMpe2lmKHV1LnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCl9ZWxzZSBkaCh1dS52aWV3LGYpLEIub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO3ouYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxELmF0dHIoImN1cnNvciIsSG0ub3ZlcmxheSksdy5zZWxlY3Rpb24mJihNPXcuc2VsZWN0aW9uKSwkbShNKSYmKHcuc2VsZWN0aW9uPW51bGwsYy5jYWxsKF8pKSxPLmVuZCgpfWZ1bmN0aW9uIFUoKXtzd2l0Y2godXUua2V5Q29kZSl7Y2FzZSAxNjpQPWImJng7YnJlYWs7Y2FzZSAxODp2PT09UG0mJihiJiYobD1oLWsqYixuPXIraypiKSx4JiYoZD1wLUwqeCxhPXMrTCp4KSx2PU5tLEYoKSk7YnJlYWs7Y2FzZSAzMjp2IT09UG0mJnYhPT1ObXx8KGI8MD9sPWgtazpiPjAmJihuPXItaykseDwwP2Q9cC1MOng+MCYmKGE9cy1MKSx2PUxtLEQuYXR0cigiY3Vyc29yIixIbS5zZWxlY3Rpb24pLEYoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59QW0oKX1mdW5jdGlvbiBqKCl7c3dpdGNoKHV1LmtleUNvZGUpe2Nhc2UgMTY6UCYmKG09Zz1QPSExLEYoKSk7YnJlYWs7Y2FzZSAxODp2PT09Tm0mJihiPDA/bD1oOmI+MCYmKG49cikseDwwP2Q9cDp4PjAmJihhPXMpLHY9UG0sRigpKTticmVhaztjYXNlIDMyOnY9PT1MbSYmKHV1LmFsdEtleT8oYiYmKGw9aC1rKmIsbj1yK2sqYikseCYmKGQ9cC1MKngsYT1zK0wqeCksdj1ObSk6KGI8MD9sPWg6Yj4wJiYobj1yKSx4PDA/ZD1wOng+MCYmKGE9cyksdj1QbSksRC5hdHRyKCJjdXJzb3IiLEhtW3ldKSxGKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufUFtKCl9fWZ1bmN0aW9uIHAoKXt1KHRoaXMsYXJndW1lbnRzKS5tb3ZlZCgpfWZ1bmN0aW9uIGYoKXt1KHRoaXMsYXJndW1lbnRzKS5lbmRlZCgpfWZ1bmN0aW9uIG0oKXt2YXIgZT10aGlzLl9fYnJ1c2h8fHtzZWxlY3Rpb246bnVsbH07cmV0dXJuIGUuZXh0ZW50PVJtKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxlLmRpbT10LGV9cmV0dXJuIGwubW92ZT1mdW5jdGlvbihlLG4pe2Uuc2VsZWN0aW9uP2Uub24oInN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLChmdW5jdGlvbigpe3UodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWUuX19icnVzaCxyPXUoZSxhcmd1bWVudHMpLG89aS5zZWxlY3Rpb24sYT10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4saS5leHRlbnQpLHM9amQobyxhKTtmdW5jdGlvbiBsKHQpe2kuc2VsZWN0aW9uPTE9PT10JiZudWxsPT09YT9udWxsOnModCksYy5jYWxsKGUpLHIuYnJ1c2goKX1yZXR1cm4gbnVsbCE9PW8mJm51bGwhPT1hP2w6bCgxKX0pKTplLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cyxyPWUuX19icnVzaCxvPXQuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseShlLGkpOm4sci5leHRlbnQpLGE9dShlLGkpLmJlZm9yZXN0YXJ0KCk7VnAoZSksci5zZWxlY3Rpb249bnVsbD09PW8/bnVsbDpvLGMuY2FsbChlKSxhLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pKX0sbC5jbGVhcj1mdW5jdGlvbih0KXtsLm1vdmUodCxudWxsKX0saC5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nPyh0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSk6dGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihlKXtndShuZXcgVG0obCxlLHQub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSksYS5hcHBseSxhLFtlLHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGwuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RW0oUm0odCkpLGwpOm59LGwuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RW0oISF0KSxsKTppfSxsLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkVtKCEhdCksbCk6cn0sbC5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGwpOnN9LGwua2V5TW9kaWZpZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEhdCxsKTpvfSxsLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1hP2w6dH0sbH12YXIgdGc9TWF0aC5jb3MsZWc9TWF0aC5zaW4sbmc9TWF0aC5QSSxpZz1uZy8yLHJnPTIqbmcsb2c9TWF0aC5tYXg7ZnVuY3Rpb24gYWcodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZS5zb3VyY2UudmFsdWUrZS50YXJnZXQudmFsdWUsbi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUpfX12YXIgc2c9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGxnKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgY2c9TWF0aC5QSSx1Zz0yKmNnLGhnPTFlLTYsZGc9dWctaGc7ZnVuY3Rpb24gcGcoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBmZygpe3JldHVybiBuZXcgcGd9ZnVuY3Rpb24gbWcodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIGdnKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBfZyh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24geWcodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiB2Zyh0KXtyZXR1cm4gdC5lbmRBbmdsZX1wZy5wcm90b3R5cGU9ZmcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwZyxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+aGcpaWYoTWF0aC5hYnModSpzLWwqYyk+aGcmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigoY2ctTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+aGcmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2Usbz0hIW87dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPmhnfHxNYXRoLmFicyh0aGlzLl95MS1jKT5oZykmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJXVnK3VnKSxoPmRnP3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPmhnJiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1jZykrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBiZz0iJCI7ZnVuY3Rpb24geGcoKXt9ZnVuY3Rpb24gd2codCxlKXt2YXIgbj1uZXcgeGc7aWYodCBpbnN0YW5jZW9mIHhnKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gU2coKXtyZXR1cm57fX1mdW5jdGlvbiBNZyh0LGUsbil7dFtlXT1ufWZ1bmN0aW9uIEVnKCl7cmV0dXJuIHdnKCl9ZnVuY3Rpb24gVGcodCxlLG4pe3Quc2V0KGUsbil9ZnVuY3Rpb24gQ2coKXt9eGcucHJvdG90eXBlPXdnLnByb3RvdHlwZT17Y29uc3RydWN0b3I6eGcsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBiZyt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tiZyt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbYmcrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9YmcrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09YmcmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWJnJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iZyYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWJnJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWJnJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PWJnKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iZyYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgQWc9d2cucHJvdG90eXBlO2Z1bmN0aW9uIGtnKHQsZSl7dmFyIG49bmV3IENnO2lmKHQgaW5zdGFuY2VvZiBDZyl0LmVhY2goKGZ1bmN0aW9uKHQpe24uYWRkKHQpfSkpO2Vsc2UgaWYodCl7dmFyIGk9LTEscj10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytpPHI7KW4uYWRkKHRbaV0pO2Vsc2UgZm9yKDsrK2k8cjspbi5hZGQoZSh0W2ldLGksdCkpfXJldHVybiBufWZ1bmN0aW9uIExnKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZX1DZy5wcm90b3R5cGU9a2cucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDZyxoYXM6QWcuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tiZysodCs9IiIpXT10LHRoaXN9LHJlbW92ZTpBZy5yZW1vdmUsY2xlYXI6QWcuY2xlYXIsdmFsdWVzOkFnLmtleXMsc2l6ZTpBZy5zaXplLGVtcHR5OkFnLmVtcHR5LGVhY2g6QWcuZWFjaH07dmFyIFBnPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBOZyh0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gSWcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFJnKHQsZSl7Zm9yKHZhciBuLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspaWYobj1PZyh0LGVbaV0pKXJldHVybiBuO3JldHVybiAwfWZ1bmN0aW9uIE9nKHQsZSl7Zm9yKHZhciBuPWVbMF0saT1lWzFdLHI9LTEsbz0wLGE9dC5sZW5ndGgscz1hLTE7bzxhO3M9bysrKXt2YXIgbD10W29dLGM9bFswXSx1PWxbMV0saD10W3NdLGQ9aFswXSxwPWhbMV07aWYoemcobCxoLGUpKXJldHVybiAwO3U+aSE9cD5pJiZuPChkLWMpKihpLXUpLyhwLXUpK2MmJihyPS1yKX1yZXR1cm4gcn1mdW5jdGlvbiB6Zyh0LGUsbil7dmFyIGk7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPT0oblswXS10WzBdKSooZVsxXS10WzFdKX0pKHQsZSxuKSYmKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiB0PD1lJiZlPD1ufHxuPD1lJiZlPD10fSkodFtpPSsodFswXT09PWVbMF0pXSxuW2ldLGVbaV0pfWZ1bmN0aW9uIERnKCl7fXZhciBCZz1bW10sW1tbMSwxLjVdLFsuNSwxXV1dLFtbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsuNSwxXV1dLFtbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWy41LDFdXSxbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLC41XSxbMSwxLjVdXV0sW1tbMSwuNV0sWy41LDFdXV0sW1tbLjUsMV0sWzEsLjVdXV0sW1tbMSwxLjVdLFsxLC41XV1dLFtbWy41LDFdLFsxLC41XV0sW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbMSwuNV1dXSxbW1suNSwxXSxbMS41LDFdXV0sW1tbMSwxLjVdLFsxLjUsMV1dXSxbW1suNSwxXSxbMSwxLjVdXV0sW11dO2Z1bmN0aW9uIEhnKCl7dmFyIHQ9MSxlPTEsbj1qbCxpPXM7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpO2lmKEFycmF5LmlzQXJyYXkoZSkpZT1lLnNsaWNlKCkuc29ydChOZyk7ZWxzZXt2YXIgaT1MbCh0KSxyPWlbMF0sYT1pWzFdO2U9VWwocixhLGUpLGU9emwoTWF0aC5mbG9vcihyL2UpKmUsTWF0aC5mbG9vcihhL2UpKmUsZSl9cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbyh0LGUpfSkpfWZ1bmN0aW9uIG8obixyKXt2YXIgbz1bXSxzPVtdO3JldHVybihmdW5jdGlvbiBsKG4saSxyKXt2YXIgbyxzLGwsYyx1LGg9bmV3IEFycmF5LGQ9bmV3IEFycmF5O2ZvcihvPXM9LTEsQmdbKGw9blswXT49aSk8PDFdLmZvckVhY2gocCk7KytvPHQtMTspQmdbbHwobD1uW28rMV0+PWkpPDwxXS5mb3JFYWNoKHApO2ZvcihCZ1tsPDwwXS5mb3JFYWNoKHApOysrczxlLTE7KXtmb3Iobz0tMSxCZ1sobD1uW3MqdCt0XT49aSk8PDF8KGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTsrK288dC0xOyl1PWMsQmdbbHwobD1uW3MqdCt0K28rMV0+PWkpPDwxfChjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7QmdbbHxjPDwzXS5mb3JFYWNoKHApfWZvcihvPS0xLEJnWyhjPW5bcyp0XT49aSk8PDJdLmZvckVhY2gocCk7KytvPHQtMTspdT1jLEJnWyhjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7ZnVuY3Rpb24gcCh0KXt2YXIgZSxuLGk9W3RbMF1bMF0rbyx0WzBdWzFdK3NdLGw9W3RbMV1bMF0rbyx0WzFdWzFdK3NdLGM9YShpKSx1PWEobCk7KGU9ZFtjXSk/KG49aFt1XSk/KGRlbGV0ZSBkW2UuZW5kXSxkZWxldGUgaFtuLnN0YXJ0XSxlPT09bj8oZS5yaW5nLnB1c2gobCkscihlLnJpbmcpKTpoW2Uuc3RhcnRdPWRbbi5lbmRdPXtzdGFydDplLnN0YXJ0LGVuZDpuLmVuZCxyaW5nOmUucmluZy5jb25jYXQobi5yaW5nKX0pOihkZWxldGUgZFtlLmVuZF0sZS5yaW5nLnB1c2gobCksZFtlLmVuZD11XT1lKTooZT1oW3VdKT8obj1kW2NdKT8oZGVsZXRlIGhbZS5zdGFydF0sZGVsZXRlIGRbbi5lbmRdLGU9PT1uPyhlLnJpbmcucHVzaChsKSxyKGUucmluZykpOmhbbi5zdGFydF09ZFtlLmVuZF09e3N0YXJ0Om4uc3RhcnQsZW5kOmUuZW5kLHJpbmc6bi5yaW5nLmNvbmNhdChlLnJpbmcpfSk6KGRlbGV0ZSBoW2Uuc3RhcnRdLGUucmluZy51bnNoaWZ0KGkpLGhbZS5zdGFydD1jXT1lKTpoW2NdPWRbdV09e3N0YXJ0OmMsZW5kOnUscmluZzpbaSxsXX19QmdbYzw8M10uZm9yRWFjaChwKX0pKG4sciwoZnVuY3Rpb24odCl7aSh0LG4sciksKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aCxpPXRbbi0xXVsxXSp0WzBdWzBdLXRbbi0xXVswXSp0WzBdWzFdOysrZTxuOylpKz10W2UtMV1bMV0qdFtlXVswXS10W2UtMV1bMF0qdFtlXVsxXTtyZXR1cm4gaX0pKHQpPjA/by5wdXNoKFt0XSk6cy5wdXNoKHQpfSkpLHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MCxpPW8ubGVuZ3RoO248aTsrK24paWYoLTEhPT1SZygoZT1vW25dKVswXSx0KSlyZXR1cm4gdm9pZCBlLnB1c2godCl9KSkse3R5cGU6Ik11bHRpUG9seWdvbiIsdmFsdWU6cixjb29yZGluYXRlczpvfX1mdW5jdGlvbiBhKGUpe3JldHVybiAyKmVbMF0rZVsxXSoodCsxKSo0fWZ1bmN0aW9uIHMobixpLHIpe24uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG8sYT1uWzBdLHM9blsxXSxsPTB8YSxjPTB8cyx1PWlbYyp0K2xdO2E+MCYmYTx0JiZsPT09YSYmKG5bMF09YSsoci0obz1pW2MqdCtsLTFdKSkvKHUtbyktLjUpLHM+MCYmczxlJiZjPT09cyYmKG5bMV09cysoci0obz1pWyhjLTEpKnQrbF0pKS8odS1vKS0uNSl9KSl9cmV0dXJuIHIuY29udG91cj1vLHIuc2l6ZT1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bdCxlXTt2YXIgaT1NYXRoLmNlaWwoblswXSksbz1NYXRoLmNlaWwoblsxXSk7aWYoIShpPjAmJm8+MCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpemUiKTtyZXR1cm4gdD1pLGU9byxyfSxyLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP0lnKFBnLmNhbGwodCkpOklnKHQpLHIpOm59LHIuc21vb3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQ/czpEZyxyKTppPT09c30scn1mdW5jdGlvbiBGZyh0LGUsbil7Zm9yKHZhciBpPXQud2lkdGgscj10LmhlaWdodCxvPTErKG48PDEpLGE9MDthPHI7KythKWZvcih2YXIgcz0wLGw9MDtzPGkrbjsrK3MpczxpJiYobCs9dC5kYXRhW3MrYSppXSkscz49biYmKHM+PW8mJihsLT10LmRhdGFbcy1vK2EqaV0pLGUuZGF0YVtzLW4rYSppXT1sL01hdGgubWluKHMrMSxpLTErby1zLG8pKX1mdW5jdGlvbiBWZyh0LGUsbil7Zm9yKHZhciBpPXQud2lkdGgscj10LmhlaWdodCxvPTErKG48PDEpLGE9MDthPGk7KythKWZvcih2YXIgcz0wLGw9MDtzPHIrbjsrK3MpczxyJiYobCs9dC5kYXRhW2ErcyppXSkscz49biYmKHM+PW8mJihsLT10LmRhdGFbYSsocy1vKSppXSksZS5kYXRhW2ErKHMtbikqaV09bC9NYXRoLm1pbihzKzEsci0xK28tcyxvKSl9ZnVuY3Rpb24gVWcodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gamcodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gR2coKXtyZXR1cm4gMX12YXIgV2c9e30scWc9e307ZnVuY3Rpb24gWWcodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrJ10gfHwgIiInfSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIFhnKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59ZnVuY3Rpb24gJGcodCxlKXt2YXIgbj10KyIiLGk9bi5sZW5ndGg7cmV0dXJuIGk8ZT9uZXcgQXJyYXkoZS1pKzEpLmpvaW4oMCkrbjpufWZ1bmN0aW9uIEtnKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gcWc7aWYoYylyZXR1cm4gYz0hMSxXZzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09cWc7KXtmb3IodmFyIGg9W107aSE9PVdnJiZpIT09cWc7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUsbil7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBhKGVbdF0pfSkpLmpvaW4odCl9KSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5tYXAoYSkuam9pbih0KX1mdW5jdGlvbiBhKHQpe3JldHVybiBudWxsPT10PyIiOnQgaW5zdGFuY2VvZiBEYXRlPyhmdW5jdGlvbiBuKHQpe3ZhciBlPXQuZ2V0VVRDSG91cnMoKSxuPXQuZ2V0VVRDTWludXRlcygpLGk9dC5nZXRVVENTZWNvbmRzKCkscj10LmdldFVUQ01pbGxpc2Vjb25kcygpO3JldHVybiBpc05hTih0KT8iSW52YWxpZCBEYXRlIjooZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDwwPyItIiskZygtdCw2KTp0Pjk5OTk/IisiKyRnKHQsNik6JGcodCw0KX0pKHQuZ2V0VVRDRnVsbFllYXIoKSkrIi0iKyRnKHQuZ2V0VVRDTW9udGgoKSsxLDIpKyItIiskZyh0LmdldFVUQ0RhdGUoKSwyKSsocj8iVCIrJGcoZSwyKSsiOiIrJGcobiwyKSsiOiIrJGcoaSwyKSsiLiIrJGcociwzKSsiWiI6aT8iVCIrJGcoZSwyKSsiOiIrJGcobiwyKSsiOiIrJGcoaSwyKSsiWiI6bnx8ZT8iVCIrJGcoZSwyKSsiOiIrJGcobiwyKSsiWiI6IiIpfSkodCk6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIHModCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1ZZyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpZZyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBsKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPVhnKGUpKSxbbi5tYXAoYSkuam9pbih0KV0uY29uY2F0KHIoZSxuKSkuam9pbigiXG4iKX0sZm9ybWF0Qm9keTpmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIG51bGw9PWUmJihlPVhnKHQpKSxyKHQsZSkuam9pbigiXG4iKX0sZm9ybWF0Um93czpmdW5jdGlvbiB1KHQpe3JldHVybiB0Lm1hcChvKS5qb2luKCJcbiIpfSxmb3JtYXRSb3c6byxmb3JtYXRWYWx1ZTphfX12YXIgWmc9S2coIiwiKSxKZz1aZy5wYXJzZSxRZz1aZy5wYXJzZVJvd3MsdF89WmcuZm9ybWF0LGVfPVpnLmZvcm1hdEJvZHksbl89WmcuZm9ybWF0Um93cyxpXz1aZy5mb3JtYXRSb3cscl89WmcuZm9ybWF0VmFsdWUsb189S2coIlx0IiksYV89b18ucGFyc2Usc189b18ucGFyc2VSb3dzLGxfPW9fLmZvcm1hdCxjXz1vXy5mb3JtYXRCb2R5LHVfPW9fLmZvcm1hdFJvd3MsaF89b18uZm9ybWF0Um93LGRfPW9fLmZvcm1hdFZhbHVlLHBfPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIGZfKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gbV8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gZ18odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBfXyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oZ18pfWZ1bmN0aW9uIHlfKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGk9bixuPXZvaWQgMCksX18oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLGkpfSkpfX12YXIgdl89eV8oSmcpLGJfPXlfKGFfKTtmdW5jdGlvbiB4Xyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiB3Xyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gX18oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fXZhciBTXz13XygiYXBwbGljYXRpb24veG1sIiksTV89d18oInRleHQvaHRtbCIpLEVfPXdfKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gVF8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIENfKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEFfKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24ga18odCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gTF8odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gUF8odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gTl8odCxlLG4pe3ZhciBpPW5ldyBJXyhudWxsPT1lP0xfOmUsbnVsbD09bj9QXzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBJXyh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIFJfKHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgT189Tl8ucHJvdG90eXBlPUlfLnByb3RvdHlwZTtmdW5jdGlvbiB6Xyh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gRF8odCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIEJfKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIEhfKHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIEZfKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gVl8odCl7cmV0dXJuIHQueX1PXy5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBJXyh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9Ul8oaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1SXyhlKSk7cmV0dXJuIG59LE9fLmFkZD1mdW5jdGlvbiBVXyh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIEFfKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LE9fLmFkZEFsbD1mdW5jdGlvbiBqXyh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilBXyh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sT18uY292ZXI9ZnVuY3Rpb24gR18odCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LE9fLmRhdGE9ZnVuY3Rpb24gV18oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxPXy5leHRlbnQ9ZnVuY3Rpb24gcV8odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LE9fLmZpbmQ9ZnVuY3Rpb24gWV8odCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcga18obSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBrXyhtWzNdLGcsXyxhLHMpLG5ldyBrXyhtWzJdLHIsXyxnLHMpLG5ldyBrXyhtWzFdLGcsbyxhLF8pLG5ldyBrXyhtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxPXy5yZW1vdmU9ZnVuY3Rpb24gWF8odCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LE9fLnJlbW92ZUFsbD1mdW5jdGlvbiAkXyh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LE9fLnJvb3Q9ZnVuY3Rpb24gS18oKXtyZXR1cm4gdGhpcy5fcm9vdH0sT18uc2l6ZT1mdW5jdGlvbiBaXygpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LE9fLnZpc2l0PWZ1bmN0aW9uIEpfKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBrXyhsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcga18obixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcga18obixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcga18obixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcga18obixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LE9fLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gUV8odCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IGtfKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IGtfKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IGtfKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IGtfKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IGtfKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LE9fLng9ZnVuY3Rpb24gdHkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxPXy55PWZ1bmN0aW9uIGV5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIG55PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBpeSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiByeSh0KXtyZXR1cm4odD1peShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciBveSxheT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBzeSh0KXtpZighKGU9YXkuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IGx5KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIGx5KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIGN5KHQsZSl7dmFyIG49aXkodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1zeS5wcm90b3R5cGU9bHkucHJvdG90eXBlLGx5LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciB1eT17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uIGh5KHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gY3koMTAwKnQsZSl9LHI6Y3ksczpmdW5jdGlvbiBkeSh0LGUpe3ZhciBuPWl5KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShveT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK2l5KHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIHB5KHQpe3JldHVybiB0fXZhciBmeSxteSxneSxfeT1BcnJheS5wcm90b3R5cGUubWFwLHl5PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiB2eSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9weTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKF95LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9weTooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKF95LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9c3kodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOnV5W3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PXV5W3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P3l5Wzgrb3kvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEM9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShDK3QsQy5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEM9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytDO2JyZWFrO2Nhc2UiPSI6dD1kK0MrdCtTO2JyZWFrO2Nhc2UiXiI6dD1DLnNsaWNlKDAsVD1DLmxlbmd0aD4+MSkrZCt0K1MrQy5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QytkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9c3kodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHJ5KGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz15eVs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX1mdW5jdGlvbiBieSh0KXtyZXR1cm4gZnk9dnkodCksbXk9ZnkuZm9ybWF0LGd5PWZ5LmZvcm1hdFByZWZpeCxmeX1mdW5jdGlvbiB4eSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtcnkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiB3eSh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHJ5KGUpLzMpKSktcnkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBTeSh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLHJ5KGUpLXJ5KHQpKSsxfWZ1bmN0aW9uIE15KCl7cmV0dXJuIG5ldyBFeX1mdW5jdGlvbiBFeSgpe3RoaXMucmVzZXQoKX1ieSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSksRXkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpFeSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpe0N5KFR5LHQsdGhpcy50KSxDeSh0aGlzLFR5LnMsdGhpcy5zKSx0aGlzLnM/dGhpcy50Kz1UeS50OnRoaXMucz1UeS50fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBUeT1uZXcgRXk7ZnVuY3Rpb24gQ3kodCxlLG4pe3ZhciBpPXQucz1lK24scj1pLWU7dC50PWUtKGktcikrKG4tcil9dmFyIEF5PTFlLTYsa3k9MWUtMTIsTHk9TWF0aC5QSSxQeT1MeS8yLE55PUx5LzQsSXk9MipMeSxSeT0xODAvTHksT3k9THkvMTgwLHp5PU1hdGguYWJzLER5PU1hdGguYXRhbixCeT1NYXRoLmF0YW4yLEh5PU1hdGguY29zLEZ5PU1hdGguY2VpbCxWeT1NYXRoLmV4cCxVeT1NYXRoLmxvZyxqeT1NYXRoLnBvdyxHeT1NYXRoLnNpbixXeT1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0scXk9TWF0aC5zcXJ0LFl5PU1hdGgudGFuO2Z1bmN0aW9uIFh5KHQpe3JldHVybiB0PjE/MDp0PC0xP0x5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiAkeSh0KXtyZXR1cm4gdD4xP1B5OnQ8LTE/LVB5Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBLeSh0KXtyZXR1cm4odD1HeSh0LzIpKSp0fWZ1bmN0aW9uIFp5KCl7fWZ1bmN0aW9uIEp5KHQsZSl7dCYmdHYuaGFzT3duUHJvcGVydHkodC50eXBlKSYmdHZbdC50eXBlXSh0LGUpfXZhciBReT17RmVhdHVyZTpmdW5jdGlvbih0LGUpe0p5KHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylKeShuW2ldLmdlb21ldHJ5LGUpfX0sdHY9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7ZS5wb2ludCgodD10LmNvb3JkaW5hdGVzKVswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyllLnBvaW50KCh0PW5baV0pWzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtldih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspZXYobltpXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7bnYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyludihuW2ldLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspSnkobltpXSxlKX19O2Z1bmN0aW9uIGV2KHQsZSxuKXt2YXIgaSxyPS0xLG89dC5sZW5ndGgtbjtmb3IoZS5saW5lU3RhcnQoKTsrK3I8bzspZS5wb2ludCgoaT10W3JdKVswXSxpWzFdLGlbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIG52KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK248aTspZXYodFtuXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIGl2KHQsZSl7dCYmUXkuaGFzT3duUHJvcGVydHkodC50eXBlKT9ReVt0LnR5cGVdKHQsZSk6SnkodCxlKX12YXIgcnYsb3YsYXYsc3YsbHYsY3Y9TXkoKSx1dj1NeSgpLGh2PXtwb2ludDpaeSxsaW5lU3RhcnQ6WnksbGluZUVuZDpaeSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtjdi5yZXNldCgpLGh2LmxpbmVTdGFydD1kdixodi5saW5lRW5kPXB2fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K2N2O3V2LmFkZCh0PDA/SXkrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD1aeX0sc3BoZXJlOmZ1bmN0aW9uKCl7dXYuYWRkKEl5KX19O2Z1bmN0aW9uIGR2KCl7aHYucG9pbnQ9ZnZ9ZnVuY3Rpb24gcHYoKXttdihydixvdil9ZnVuY3Rpb24gZnYodCxlKXtodi5wb2ludD1tdixydj10LG92PWUsYXY9dCo9T3ksc3Y9SHkoZT0oZSo9T3kpLzIrTnkpLGx2PUd5KGUpfWZ1bmN0aW9uIG12KHQsZSl7dmFyIG49KHQqPU95KS1hdixpPW4+PTA/MTotMSxyPWkqbixvPUh5KGU9KGUqPU95KS8yK055KSxhPUd5KGUpLHM9bHYqYSxsPXN2Km8rcypIeShyKSxjPXMqaSpHeShyKTtjdi5hZGQoQnkoYyxsKSksYXY9dCxzdj1vLGx2PWF9ZnVuY3Rpb24gZ3YodCl7cmV0dXJuW0J5KHRbMV0sdFswXSksJHkodFsyXSldfWZ1bmN0aW9uIF92KHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9SHkobik7cmV0dXJuW2kqSHkoZSksaSpHeShlKSxHeShuKV19ZnVuY3Rpb24geXYodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gdnYodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIGJ2KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24geHYodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIHd2KHQpe3ZhciBlPXF5KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgU3YsTXYsRXYsVHYsQ3YsQXYsa3YsTHYsUHYsTnYsSXYsUnYsT3YsenYsRHYsQnYsSHYsRnYsVnYsVXYsanYsR3YsV3YscXYsWXYsWHYsJHY9TXkoKSxLdj17cG9pbnQ6WnYsbGluZVN0YXJ0OlF2LGxpbmVFbmQ6dGIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7S3YucG9pbnQ9ZWIsS3YubGluZVN0YXJ0PW5iLEt2LmxpbmVFbmQ9aWIsJHYucmVzZXQoKSxodi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2h2LnBvbHlnb25FbmQoKSxLdi5wb2ludD1adixLdi5saW5lU3RhcnQ9UXYsS3YubGluZUVuZD10YixjdjwwPyhTdj0tKEV2PTE4MCksTXY9LShUdj05MCkpOiR2PkF5P1R2PTkwOiR2PC0xZS02JiYoTXY9LTkwKSxOdlswXT1TdixOdlsxXT1Fdn0sc3BoZXJlOmZ1bmN0aW9uKCl7U3Y9LShFdj0xODApLE12PS0oVHY9OTApfX07ZnVuY3Rpb24gWnYodCxlKXtQdi5wdXNoKE52PVtTdj10LEV2PXRdKSxlPE12JiYoTXY9ZSksZT5UdiYmKFR2PWUpfWZ1bmN0aW9uIEp2KHQsZSl7dmFyIG49X3YoW3QqT3ksZSpPeV0pO2lmKEx2KXt2YXIgaT12dihMdixuKSxyPXZ2KFtpWzFdLC1pWzBdLDBdLGkpO3d2KHIpLHI9Z3Yocik7dmFyIG8sYT10LUN2LHM9YT4wPzE6LTEsbD1yWzBdKlJ5KnMsYz16eShhKT4xODA7Y14ocypDdjxsJiZsPHMqdCk/KG89clsxXSpSeSk+VHYmJihUdj1vKTpjXihzKkN2PChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpSeSk8TXYmJihNdj1vKTooZTxNdiYmKE12PWUpLGU+VHYmJihUdj1lKSksYz90PEN2P3JiKFN2LHQpPnJiKFN2LEV2KSYmKEV2PXQpOnJiKHQsRXYpPnJiKFN2LEV2KSYmKFN2PXQpOkV2Pj1Tdj8odDxTdiYmKFN2PXQpLHQ+RXYmJihFdj10KSk6dD5Ddj9yYihTdix0KT5yYihTdixFdikmJihFdj10KTpyYih0LEV2KT5yYihTdixFdikmJihTdj10KX1lbHNlIFB2LnB1c2goTnY9W1N2PXQsRXY9dF0pO2U8TXYmJihNdj1lKSxlPlR2JiYoVHY9ZSksTHY9bixDdj10fWZ1bmN0aW9uIFF2KCl7S3YucG9pbnQ9SnZ9ZnVuY3Rpb24gdGIoKXtOdlswXT1TdixOdlsxXT1FdixLdi5wb2ludD1adixMdj1udWxsfWZ1bmN0aW9uIGViKHQsZSl7aWYoTHYpe3ZhciBuPXQtQ3Y7JHYuYWRkKHp5KG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgQXY9dCxrdj1lO2h2LnBvaW50KHQsZSksSnYodCxlKX1mdW5jdGlvbiBuYigpe2h2LmxpbmVTdGFydCgpfWZ1bmN0aW9uIGliKCl7ZWIoQXYsa3YpLGh2LmxpbmVFbmQoKSx6eSgkdik+QXkmJihTdj0tKEV2PTE4MCkpLE52WzBdPVN2LE52WzFdPUV2LEx2PW51bGx9ZnVuY3Rpb24gcmIodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIG9iKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBhYih0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIHNiPXtzcGhlcmU6WnkscG9pbnQ6bGIsbGluZVN0YXJ0OnViLGxpbmVFbmQ6cGIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7c2IubGluZVN0YXJ0PWZiLHNiLmxpbmVFbmQ9bWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtzYi5saW5lU3RhcnQ9dWIsc2IubGluZUVuZD1wYn19O2Z1bmN0aW9uIGxiKHQsZSl7dCo9T3k7dmFyIG49SHkoZSo9T3kpO2NiKG4qSHkodCksbipHeSh0KSxHeShlKSl9ZnVuY3Rpb24gY2IodCxlLG4peysrSXYsT3YrPSh0LU92KS9Jdix6dis9KGUtenYpL0l2LER2Kz0obi1EdikvSXZ9ZnVuY3Rpb24gdWIoKXtzYi5wb2ludD1oYn1mdW5jdGlvbiBoYih0LGUpe3QqPU95O3ZhciBuPUh5KGUqPU95KTtxdj1uKkh5KHQpLFl2PW4qR3kodCksWHY9R3koZSksc2IucG9pbnQ9ZGIsY2IocXYsWXYsWHYpfWZ1bmN0aW9uIGRiKHQsZSl7dCo9T3k7dmFyIG49SHkoZSo9T3kpLGk9bipIeSh0KSxyPW4qR3kodCksbz1HeShlKSxhPUJ5KHF5KChhPVl2Km8tWHYqcikqYSsoYT1YdippLXF2Km8pKmErKGE9cXYqci1ZdippKSphKSxxdippK1l2KnIrWHYqbyk7UnYrPWEsQnYrPWEqKHF2Kyhxdj1pKSksSHYrPWEqKFl2KyhZdj1yKSksRnYrPWEqKFh2KyhYdj1vKSksY2IocXYsWXYsWHYpfWZ1bmN0aW9uIHBiKCl7c2IucG9pbnQ9bGJ9ZnVuY3Rpb24gZmIoKXtzYi5wb2ludD1nYn1mdW5jdGlvbiBtYigpe19iKEd2LFd2KSxzYi5wb2ludD1sYn1mdW5jdGlvbiBnYih0LGUpe0d2PXQsV3Y9ZSx0Kj1PeSxlKj1PeSxzYi5wb2ludD1fYjt2YXIgbj1IeShlKTtxdj1uKkh5KHQpLFl2PW4qR3kodCksWHY9R3koZSksY2IocXYsWXYsWHYpfWZ1bmN0aW9uIF9iKHQsZSl7dCo9T3k7dmFyIG49SHkoZSo9T3kpLGk9bipIeSh0KSxyPW4qR3kodCksbz1HeShlKSxhPVl2Km8tWHYqcixzPVh2KmktcXYqbyxsPXF2KnItWXYqaSxjPXF5KGEqYStzKnMrbCpsKSx1PSR5KGMpLGg9YyYmLXUvYztWdis9aCphLFV2Kz1oKnMsanYrPWgqbCxSdis9dSxCdis9dSoocXYrKHF2PWkpKSxIdis9dSooWXYrKFl2PXIpKSxGdis9dSooWHYrKFh2PW8pKSxjYihxdixZdixYdil9ZnVuY3Rpb24geWIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHZiKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIGJiKHQsZSl7cmV0dXJuW3p5KHQpPkx5P3QrTWF0aC5yb3VuZCgtdC9JeSkqSXk6dCxlXX1mdW5jdGlvbiB4Yih0LGUsbil7cmV0dXJuKHQlPUl5KT9lfHxuP3ZiKFNiKHQpLE1iKGUsbikpOlNiKHQpOmV8fG4/TWIoZSxuKTpiYn1mdW5jdGlvbiB3Yih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPkx5P2UtSXk6ZTwtTHk/ZStJeTplLG5dfX1mdW5jdGlvbiBTYih0KXt2YXIgZT13Yih0KTtyZXR1cm4gZS5pbnZlcnQ9d2IoLXQpLGV9ZnVuY3Rpb24gTWIodCxlKXt2YXIgbj1IeSh0KSxpPUd5KHQpLHI9SHkoZSksbz1HeShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9SHkoZSkscz1IeSh0KSphLGw9R3kodCkqYSxjPUd5KGUpLHU9YypuK3MqaTtyZXR1cm5bQnkobCpyLXUqbyxzKm4tYyppKSwkeSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9SHkoZSkscz1IeSh0KSphLGw9R3kodCkqYSxjPUd5KGUpLHU9YypyLWwqbztyZXR1cm5bQnkobCpyK2MqbyxzKm4rdSppKSwkeSh1Km4tcyppKV19LGF9ZnVuY3Rpb24gRWIodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qT3ksZVsxXSpPeSkpWzBdKj1SeSxlWzFdKj1SeSxlfXJldHVybiB0PXhiKHRbMF0qT3ksdFsxXSpPeSx0Lmxlbmd0aD4yP3RbMl0qT3k6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpPeSxlWzFdKk95KSlbMF0qPVJ5LGVbMV0qPVJ5LGV9LGV9ZnVuY3Rpb24gVGIodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPUh5KGUpLHM9R3koZSksbD1pKm47bnVsbD09cj8ocj1lK2kqSXksbz1lLWwvMik6KHI9Q2IoYSxyKSxvPUNiKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqSXkpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1ndihbYSwtcypIeSh1KSwtcypHeSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gQ2IodCxlKXsoZT1fdihlKSlbMF0tPXQsd3YoZSk7dmFyIG49WHkoLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStJeS1BeSklSXl9ZnVuY3Rpb24gQWIoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4saSl7dC5wdXNoKFtlLG4saV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6WnkscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24ga2IodCxlKXtyZXR1cm4genkodFswXS1lWzBdKTxBeSYmenkodFsxXS1lWzFdKTxBeX1mdW5jdGlvbiBMYih0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIFBiKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKGtiKGksYSkpe2lmKCFpWzJdJiYhYVsyXSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyZXR1cm4gdm9pZCByLmxpbmVFbmQoKX1hWzBdKz0yZS02fXMucHVzaChuPW5ldyBMYihpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IExiKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IExiKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgTGIoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksTmIocyksTmIobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIE5iKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fWJiLmludmVydD1iYjt2YXIgSWI9TXkoKTtmdW5jdGlvbiBSYih0KXtyZXR1cm4genkodFswXSk8PUx5P3RbMF06V3kodFswXSkqKCh6eSh0WzBdKStMeSklSXktTHkpfWZ1bmN0aW9uIE9iKHQsZSl7dmFyIG49UmIoZSksaT1lWzFdLHI9R3koaSksbz1bR3kobiksLUh5KG4pLDBdLGE9MCxzPTA7SWIucmVzZXQoKSwxPT09cj9pPVB5K0F5Oi0xPT09ciYmKGk9LVB5LUF5KTtmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpaWYoaD0odT10W2xdKS5sZW5ndGgpZm9yKHZhciB1LGgsZD11W2gtMV0scD1SYihkKSxmPWRbMV0vMitOeSxtPUd5KGYpLGc9SHkoZiksXz0wO188aDsrK18scD12LG09eCxnPXcsZD15KXt2YXIgeT11W19dLHY9UmIoeSksYj15WzFdLzIrTnkseD1HeShiKSx3PUh5KGIpLFM9di1wLE09Uz49MD8xOi0xLEU9TSpTLFQ9RT5MeSxDPW0qeDtpZihJYi5hZGQoQnkoQypNKkd5KEUpLGcqdytDKkh5KEUpKSksYSs9VD9TK00qSXk6UyxUXnA+PW5edj49bil7dmFyIEE9dnYoX3YoZCksX3YoeSkpO3d2KEEpO3ZhciBrPXZ2KG8sQSk7d3Yoayk7dmFyIEw9KFReUz49MD8tMToxKSokeShrWzJdKTsoaT5MfHxpPT09TCYmKEFbMF18fEFbMV0pKSYmKHMrPVReUz49MD8xOi0xKX19cmV0dXJuKGE8LTFlLTZ8fGE8QXkmJkliPC0xZS02KV4xJnN9ZnVuY3Rpb24gemIodCxlLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvLGEscyxsPWUociksYz1BYigpLHU9ZShjKSxoPSExLGQ9e3BvaW50OnAsbGluZVN0YXJ0Om0sbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2QucG9pbnQ9XyxkLmxpbmVTdGFydD15LGQubGluZUVuZD12LGE9W10sbz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2QucG9pbnQ9cCxkLmxpbmVTdGFydD1tLGQubGluZUVuZD1nLGE9cWwoYSk7dmFyIHQ9T2IobyxpKTthLmxlbmd0aD8oaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksUGIoYSxCYix0LG4scikpOnQmJihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCkpLGgmJihyLnBvbHlnb25FbmQoKSxoPSExKSxhPW89bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7ci5wb2x5Z29uU3RhcnQoKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCksci5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKGUsbil7dChlLG4pJiZyLnBvaW50KGUsbil9ZnVuY3Rpb24gZih0LGUpe2wucG9pbnQodCxlKX1mdW5jdGlvbiBtKCl7ZC5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2QucG9pbnQ9cCxsLmxpbmVFbmQoKX1mdW5jdGlvbiBfKHQsZSl7cy5wdXNoKFt0LGVdKSx1LnBvaW50KHQsZSl9ZnVuY3Rpb24geSgpe3UubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiB2KCl7XyhzWzBdWzBdLHNbMF1bMV0pLHUubGluZUVuZCgpO3ZhciB0LGUsbixpLGw9dS5jbGVhbigpLGQ9Yy5yZXN1bHQoKSxwPWQubGVuZ3RoO2lmKHMucG9wKCksby5wdXNoKHMpLHM9bnVsbCxwKWlmKDEmbCl7aWYoKGU9KG49ZFswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KXIucG9pbnQoKGk9blt0XSlbMF0saVsxXSk7ci5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmwmJmQucHVzaChkLnBvcCgpLmNvbmNhdChkLnNoaWZ0KCkpKSxhLnB1c2goZC5maWx0ZXIoRGIpKX1yZXR1cm4gZH19ZnVuY3Rpb24gRGIodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gQmIodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tUHktQXk6UHktdFsxXSktKChlPWUueClbMF08MD9lWzFdLVB5LUF5OlB5LWVbMV0pfXZhciBIYj16YigoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiBGYih0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP0x5Oi1MeSxsPXp5KG8tbik7enkobC1MeSk8QXk/KHQucG9pbnQobixpPShpK2EpLzI+MD9QeTotUHkpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49THkmJih6eShuLXIpPEF5JiYobi09cipBeSksenkoby1zKTxBeSYmKG8tPXMqQXkpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPUd5KHQtbik7cmV0dXJuIHp5KGEpPkF5P0R5KChHeShlKSoobz1IeShpKSkqR3kobiktR3koaSkqKHI9SHkoZSkpKkd5KHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBWYih0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLUx5LHI9bipQeSksaS5wb2ludCgwLHIpLGkucG9pbnQoTHksciksaS5wb2ludChMeSwwKSxpLnBvaW50KEx5LC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLUx5LC1yKSxpLnBvaW50KC1MeSwwKSxpLnBvaW50KC1MeSxyKTtlbHNlIGlmKHp5KHRbMF0tZVswXSk+QXkpe3ZhciBvPXRbMF08ZVswXT9MeTotTHk7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1MeSwtUHldKTtmdW5jdGlvbiBVYih0KXt2YXIgZT1IeSh0KSxuPTYqT3ksaT1lPjAscj16eShlKT5BeTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIEh5KHQpKkh5KG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPXZ2KF92KHQpLF92KG4pKSxhPXl2KG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD12dihyLG8pLGQ9eHYocixjKTtidihkLHh2KG8sdSkpO3ZhciBwPWgsZj15dihkLHApLG09eXYocCxwKSxnPWYqZi1tKih5dihkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89cXkoZykseT14dihwLCgtZi1fKS9tKTtpZihidih5LGQpLHk9Z3YoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT16eShNLUx5KTxBeTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08QXk/RT93K1M+MF55WzFdPCh6eSh5WzBdLWIpPEF5P3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPkx5XihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9eHYocCwoLWYrXykvbSk7cmV0dXJuIGJ2KFQsZCksW3ksZ3YoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpMeS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiB6YihvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP0x5Oi1MeSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxrYihlLHApfHxrYihmLHApKSYmKGZbMl09MSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0sMiksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSwzKSkpfSFtfHxlJiZrYihlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXtUYihvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLUx5LHQtTHldKX12YXIgamI9MWU5LEdiPS1qYjtmdW5jdGlvbiBXYih0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiB6eShpWzBdLXQpPEF5P3I+MD8wOjM6enkoaVswXS1uKTxBeT9yPjA/MjoxOnp5KGlbMV0tZSk8QXk/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPUFiKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QyxjJiZjLnB1c2godT1bXSksXz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihDKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpLHgucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPXFsKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZQYihsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKSx2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBDKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KEdiLE1hdGgubWluKGpiLGYpKSxtPU1hdGgubWF4KEdiLE1hdGgubWluKGpiLG0pKV0sYj1bbz1NYXRoLm1heChHYixNYXRoLm1pbihqYixvKSksYT1NYXRoLm1heChHYixNYXRoLm1pbihqYixhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBxYixZYixYYiwkYj1NeSgpLEtiPXtzcGhlcmU6WnkscG9pbnQ6WnksbGluZVN0YXJ0OmZ1bmN0aW9uIFpiKCl7S2IucG9pbnQ9UWIsS2IubGluZUVuZD1KYn0sbGluZUVuZDpaeSxwb2x5Z29uU3RhcnQ6WnkscG9seWdvbkVuZDpaeX07ZnVuY3Rpb24gSmIoKXtLYi5wb2ludD1LYi5saW5lRW5kPVp5fWZ1bmN0aW9uIFFiKHQsZSl7cWI9dCo9T3ksWWI9R3koZSo9T3kpLFhiPUh5KGUpLEtiLnBvaW50PXR4fWZ1bmN0aW9uIHR4KHQsZSl7dCo9T3k7dmFyIG49R3koZSo9T3kpLGk9SHkoZSkscj16eSh0LXFiKSxvPUh5KHIpLGE9aSpHeShyKSxzPVhiKm4tWWIqaSpvLGw9WWIqbitYYippKm87JGIuYWRkKEJ5KHF5KGEqYStzKnMpLGwpKSxxYj10LFliPW4sWGI9aX1mdW5jdGlvbiBleCh0KXtyZXR1cm4gJGIucmVzZXQoKSxpdih0LEtiKSwrJGJ9dmFyIG54PVtudWxsLG51bGxdLGl4PXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpueH07ZnVuY3Rpb24gcngodCxlKXtyZXR1cm4gbnhbMF09dCxueFsxXT1lLGV4KGl4KX12YXIgb3g9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc3godC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKHN4KG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxheD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGx4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGx4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gY3godC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihjeChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHV4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYodXgobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKHN4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBzeCh0LGUpe3JldHVybiEoIXR8fCFheC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmYXhbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIGx4KHQsZSl7cmV0dXJuIDA9PT1yeCh0LGUpfWZ1bmN0aW9uIGN4KHQsZSl7Zm9yKHZhciBuLGkscixvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtpZigwPT09KGk9cngodFtvXSxlKSkpcmV0dXJuITA7aWYobz4wJiYocj1yeCh0W29dLHRbby0xXSkpPjAmJm48PXImJmk8PXImJihuK2ktcikqKDEtTWF0aC5wb3coKG4taSkvciwyKSk8a3kqcilyZXR1cm4hMDtuPWl9cmV0dXJuITF9ZnVuY3Rpb24gdXgodCxlKXtyZXR1cm4hIU9iKHQubWFwKGh4KSxkeChlKSl9ZnVuY3Rpb24gaHgodCl7cmV0dXJuKHQ9dC5tYXAoZHgpKS5wb3AoKSx0fWZ1bmN0aW9uIGR4KHQpe3JldHVyblt0WzBdKk95LHRbMV0qT3ldfWZ1bmN0aW9uIHB4KHQsZSxuKXt2YXIgaT16bCh0LGUtQXksbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiBmeCh0LGUsbil7dmFyIGk9emwodCxlLUF5LG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gbXgoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIHpsKEZ5KGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoemwoRnkocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoemwoRnkoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4genkodCVmKT5BeX0pKS5tYXAobCkpLmNvbmNhdCh6bChGeShvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB6eSh0JW0pPkF5fSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPXB4KG8sciw5MCksYz1meChlLHQsZyksdT1weChzLGEsOTApLGg9ZngoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiBneCh0KXtyZXR1cm4gdH12YXIgX3gseXgsdngsYngseHg9TXkoKSx3eD1NeSgpLFN4PXtwb2ludDpaeSxsaW5lU3RhcnQ6WnksbGluZUVuZDpaeSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtTeC5saW5lU3RhcnQ9TXgsU3gubGluZUVuZD1DeH0scG9seWdvbkVuZDpmdW5jdGlvbigpe1N4LmxpbmVTdGFydD1TeC5saW5lRW5kPVN4LnBvaW50PVp5LHh4LmFkZCh6eSh3eCkpLHd4LnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PXh4LzI7cmV0dXJuIHh4LnJlc2V0KCksdH19O2Z1bmN0aW9uIE14KCl7U3gucG9pbnQ9RXh9ZnVuY3Rpb24gRXgodCxlKXtTeC5wb2ludD1UeCxfeD12eD10LHl4PWJ4PWV9ZnVuY3Rpb24gVHgodCxlKXt3eC5hZGQoYngqdC12eCplKSx2eD10LGJ4PWV9ZnVuY3Rpb24gQ3goKXtUeChfeCx5eCl9dmFyIEF4LGt4LEx4LFB4LE54PVN4LEl4PTEvMCxSeD1JeCxPeD0tSXgseng9T3gsRHg9e3BvaW50OmZ1bmN0aW9uIEJ4KHQsZSl7dDxJeCYmKEl4PXQpLHQ+T3gmJihPeD10KSxlPFJ4JiYoUng9ZSksZT56eCYmKHp4PWUpfSxsaW5lU3RhcnQ6WnksbGluZUVuZDpaeSxwb2x5Z29uU3RhcnQ6WnkscG9seWdvbkVuZDpaeSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1bW0l4LFJ4XSxbT3gsenhdXTtyZXR1cm4gT3g9eng9LShSeD1JeD0xLzApLHR9fSxIeD0wLEZ4PTAsVng9MCxVeD0wLGp4PTAsR3g9MCxXeD0wLHF4PTAsWXg9MCxYeD17cG9pbnQ6JHgsbGluZVN0YXJ0Okt4LGxpbmVFbmQ6UXgscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WHgubGluZVN0YXJ0PXR3LFh4LmxpbmVFbmQ9ZXd9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtYeC5wb2ludD0keCxYeC5saW5lU3RhcnQ9S3gsWHgubGluZUVuZD1ReH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9WXg/W1d4L1l4LHF4L1l4XTpHeD9bVXgvR3gsangvR3hdOlZ4P1tIeC9WeCxGeC9WeF06W05hTixOYU5dO3JldHVybiBIeD1GeD1WeD1VeD1qeD1HeD1XeD1xeD1ZeD0wLHR9fTtmdW5jdGlvbiAkeCh0LGUpe0h4Kz10LEZ4Kz1lLCsrVnh9ZnVuY3Rpb24gS3goKXtYeC5wb2ludD1aeH1mdW5jdGlvbiBaeCh0LGUpe1h4LnBvaW50PUp4LCR4KEx4PXQsUHg9ZSl9ZnVuY3Rpb24gSngodCxlKXt2YXIgbj10LUx4LGk9ZS1QeCxyPXF5KG4qbitpKmkpO1V4Kz1yKihMeCt0KS8yLGp4Kz1yKihQeCtlKS8yLEd4Kz1yLCR4KEx4PXQsUHg9ZSl9ZnVuY3Rpb24gUXgoKXtYeC5wb2ludD0keH1mdW5jdGlvbiB0dygpe1h4LnBvaW50PW53fWZ1bmN0aW9uIGV3KCl7aXcoQXgsa3gpfWZ1bmN0aW9uIG53KHQsZSl7WHgucG9pbnQ9aXcsJHgoQXg9THg9dCxreD1QeD1lKX1mdW5jdGlvbiBpdyh0LGUpe3ZhciBuPXQtTHgsaT1lLVB4LHI9cXkobipuK2kqaSk7VXgrPXIqKEx4K3QpLzIsangrPXIqKFB4K2UpLzIsR3grPXIsV3grPShyPVB4KnQtTHgqZSkqKEx4K3QpLHF4Kz1yKihQeCtlKSxZeCs9MypyLCR4KEx4PXQsUHg9ZSl9dmFyIHJ3PVh4O2Z1bmN0aW9uIG93KHQpe3RoaXMuX2NvbnRleHQ9dH1vdy5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYWRpdXM9dCx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA9PT10aGlzLl9saW5lJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0K3RoaXMuX3JhZGl1cyxlKSx0aGlzLl9jb250ZXh0LmFyYyh0LGUsdGhpcy5fcmFkaXVzLDAsSXkpfX0scmVzdWx0Olp5fTt2YXIgYXcsc3csbHcsY3csdXcsaHc9TXkoKSxkdz17cG9pbnQ6WnksbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ZHcucG9pbnQ9cHd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXthdyYmZncoc3csbHcpLGR3LnBvaW50PVp5fSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXthdz0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe2F3PW51bGx9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PStodztyZXR1cm4gaHcucmVzZXQoKSx0fX07ZnVuY3Rpb24gcHcodCxlKXtkdy5wb2ludD1mdyxzdz1jdz10LGx3PXV3PWV9ZnVuY3Rpb24gZncodCxlKXtody5hZGQocXkoKGN3LT10KSpjdysodXctPWUpKnV3KSksY3c9dCx1dz1lfXZhciBtdz1kdztmdW5jdGlvbiBndygpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiBfdyh0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiB5dyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IHZ3O2Zvcih2YXIgaSBpbiB0KW5baV09dFtpXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiB2dygpe31mdW5jdGlvbiBidyh0LGUsbil7dmFyIGk9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KG51bGwpLGl2KG4sdC5zdHJlYW0oRHgpKSxlKER4LnJlc3VsdCgpKSxudWxsIT1pJiZ0LmNsaXBFeHRlbnQoaSksdH1mdW5jdGlvbiB4dyh0LGUsbil7cmV0dXJuIGJ3KHQsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxyPWVbMV1bMV0tZVswXVsxXSxvPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksci8oblsxXVsxXS1uWzBdWzFdKSksYT0rZVswXVswXSsoaS1vKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKHItbyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSksbil9ZnVuY3Rpb24gd3codCxlLG4pe3JldHVybiB4dyh0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiBTdyh0LGUsbil7cmV0dXJuIGJ3KHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVswXS1uWzBdWzBdKSxvPShpLXIqKG5bMV1bMF0rblswXVswXSkpLzIsYT0tcipuWzBdWzFdO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1mdW5jdGlvbiBNdyh0LGUsbil7cmV0dXJuIGJ3KHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVsxXS1uWzBdWzFdKSxvPS1yKm5bMF1bMF0sYT0oaS1yKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1ndy5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6X3coNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1fdyh0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LHZ3LnByb3RvdHlwZT17Y29uc3RydWN0b3I6dncscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIEV3PUh5KDMwKk95KTtmdW5jdGlvbiBUdyh0LGUpe3JldHVybitlPyhmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gbihpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGcpe3ZhciBfPWMtaSx5PXUtcix2PV8qXyt5Knk7aWYodj40KmUmJm0tLSl7dmFyIGI9YStkLHg9cytwLHc9bCtmLFM9cXkoYipiK3gqeCt3KncpLE09JHkody89UyksRT16eSh6eSh3KS0xKTxBeXx8enkoby1oKTxBeT8obytoKS8yOkJ5KHgsYiksVD10KEUsTSksQz1UWzBdLEE9VFsxXSxrPUMtaSxMPUEtcixQPXkqay1fKkw7KFAqUC92PmV8fHp5KChfKmsreSpMKS92LS41KT4uM3x8YSpkK3MqcCtsKmY8RXcpJiYobihpLHIsbyxhLHMsbCxDLEEsRSxiLz1TLHgvPVMsdyxtLGcpLGcucG9pbnQoQyxBKSxuKEMsQSxFLGIseCx3LGMsdSxoLGQscCxmLG0sZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGkscixvLGEscyxsLGMsdSxoLGQscCxmLG09e3BvaW50OmcsbGluZVN0YXJ0Ol8sbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksbS5saW5lU3RhcnQ9Yn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLG0ubGluZVN0YXJ0PV99fTtmdW5jdGlvbiBnKG4saSl7bj10KG4saSksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIF8oKXt1PU5hTixtLnBvaW50PXksZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB5KGkscil7dmFyIG89X3YoW2kscl0pLGE9dChpLHIpO24odSxoLGMsZCxwLGYsdT1hWzBdLGg9YVsxXSxjPWksZD1vWzBdLHA9b1sxXSxmPW9bMl0sMTYsZSksZS5wb2ludCh1LGgpfWZ1bmN0aW9uIHYoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gYigpe18oKSxtLnBvaW50PXgsbS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3koaT10LGUpLHI9dSxvPWgsYT1kLHM9cCxsPWYsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtuKHUsaCxjLGQscCxmLHIsbyxpLGEscyxsLDE2LGUpLG0ubGluZUVuZD12LHYoKX1yZXR1cm4gbX19KSh0LGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiB5dyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXtlPXQoZSxuKSx0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pfSkodCl9dmFyIEN3PXl3KHtwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuc3RyZWFtLnBvaW50KHQqT3ksZSpPeSl9fSk7ZnVuY3Rpb24gQXcodCxlLG4saSxyKXtmdW5jdGlvbiBvKG8sYSl7cmV0dXJuW2UrdCoobyo9aSksbi10KihhKj1yKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKG8sYSl7cmV0dXJuWyhvLWUpL3QqaSwobi1hKS90KnJdfSxvfWZ1bmN0aW9uIGt3KHQsZSxuLGkscixvKXt2YXIgYT1IeShvKSxzPUd5KG8pLGw9YSp0LGM9cyp0LHU9YS90LGg9cy90LGQ9KHMqbi1hKmUpL3QscD0ocyplK2EqbikvdDtmdW5jdGlvbiBmKHQsbyl7cmV0dXJuW2wqKHQqPWkpLWMqKG8qPXIpK2Usbi1jKnQtbCpvXX1yZXR1cm4gZi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5baSoodSp0LWgqZStkKSxyKihwLWgqdC11KmUpXX0sZn1mdW5jdGlvbiBMdyh0KXtyZXR1cm4gUHcoKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSkoKX1mdW5jdGlvbiBQdyh0KXt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoPTE1MCxkPTQ4MCxwPTI1MCxmPTAsbT0wLGc9MCxfPTAseT0wLHY9MCxiPTEseD0xLHc9bnVsbCxTPUhiLE09bnVsbCxFPWd4LFQ9LjU7ZnVuY3Rpb24gQyh0KXtyZXR1cm4gbCh0WzBdKk95LHRbMV0qT3kpfWZ1bmN0aW9uIEEodCl7cmV0dXJuKHQ9bC5pbnZlcnQodFswXSx0WzFdKSkmJlt0WzBdKlJ5LHRbMV0qUnldfWZ1bmN0aW9uIGsoKXt2YXIgdD1rdyhoLDAsMCxiLHgsdikuYXBwbHkobnVsbCxlKGYsbSkpLGk9KHY/a3c6QXcpKGgsZC10WzBdLHAtdFsxXSxiLHgsdik7cmV0dXJuIG49eGIoZyxfLHkpLHM9dmIoZSxpKSxsPXZiKG4scyksYT1UdyhzLFQpLEwoKX1mdW5jdGlvbiBMKCl7cmV0dXJuIGM9dT1udWxsLEN9cmV0dXJuIEMuc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBjJiZ1PT09dD9jOmM9Q3coKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHl3KHtwb2ludDpmdW5jdGlvbihlLG4pe3ZhciBpPXQoZSxuKTtyZXR1cm4gdGhpcy5zdHJlYW0ucG9pbnQoaVswXSxpWzFdKX19KX0pKG4pKFMoYShFKHU9dCkpKSkpfSxDLnByZWNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9dCx3PXZvaWQgMCxMKCkpOlN9LEMucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9dCxNPWk9cj1vPW51bGwsTCgpKTpFfSxDLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0rdD9VYih3PXQqT3kpOih3PW51bGwsSGIpLEwoKSk6dypSeX0sQy5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPW51bGw9PXQ/KE09aT1yPW89bnVsbCxneCk6V2IoTT0rdFswXVswXSxpPSt0WzBdWzFdLHI9K3RbMV1bMF0sbz0rdFsxXVsxXSksTCgpKTpudWxsPT1NP251bGw6W1tNLGldLFtyLG9dXX0sQy5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxrKCkpOmh9LEMudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLHA9K3RbMV0saygpKTpbZCxwXX0sQy5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9dFswXSUzNjAqT3ksbT10WzFdJTM2MCpPeSxrKCkpOltmKlJ5LG0qUnldfSxDLnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10WzBdJTM2MCpPeSxfPXRbMV0lMzYwKk95LHk9dC5sZW5ndGg+Mj90WzJdJTM2MCpPeTowLGsoKSk6W2cqUnksXypSeSx5KlJ5XX0sQy5hbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj10JTM2MCpPeSxrKCkpOnYqUnl9LEMucmVmbGVjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dD8tMToxLGsoKSk6YjwwfSxDLnJlZmxlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PXQ/LTE6MSxrKCkpOng8MH0sQy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9VHcocyxUPXQqdCksTCgpKTpxeShUKX0sQy5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4geHcoQyx0LGUpfSxDLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gd3coQyx0LGUpfSxDLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN3KEMsdCxlKX0sQy5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTXcoQyx0LGUpfSxmdW5jdGlvbigpe3JldHVybiBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLEMuaW52ZXJ0PWUuaW52ZXJ0JiZBLGsoKX19ZnVuY3Rpb24gTncodCl7dmFyIGU9MCxuPUx5LzMsaT1Qdyh0KSxyPWkoZSxuKTtyZXR1cm4gci5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aShlPXRbMF0qT3ksbj10WzFdKk95KTpbZSpSeSxuKlJ5XX0scn1mdW5jdGlvbiBJdyh0LGUpe3ZhciBuPUd5KHQpLGk9KG4rR3koZSkpLzI7aWYoenkoaSk8QXkpcmV0dXJuKGZ1bmN0aW9uIHIodCl7dmFyIGU9SHkodCk7ZnVuY3Rpb24gbih0LG4pe3JldHVyblt0KmUsR3kobikvZV19cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0aW9uKHQsbil7cmV0dXJuW3QvZSwkeShuKmUpXX0sbn0pKHQpO3ZhciBvPTErbiooMippLW4pLGE9cXkobykvaTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49cXkoby0yKmkqR3koZSkpL2k7cmV0dXJuW24qR3kodCo9aSksYS1uKkh5KHQpXX1yZXR1cm4gcy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1hLWUscj1CeSh0LHp5KG4pKSpXeShuKTtyZXR1cm4gbippPDAmJihyLT1MeSpXeSh0KSpXeShuKSksW3IvaSwkeSgoby0odCp0K24qbikqaSppKS8oMippKSldfSxzfWZ1bmN0aW9uIFJ3KCl7cmV0dXJuIE53KEl3KS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIE93KCl7cmV0dXJuIFJ3KCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gencodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9SHkoZSkscj1IeShuKSxvPXQoaSpyKTtyZXR1cm5bbypyKkd5KGUpLG8qR3kobildfX1mdW5jdGlvbiBEdyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT1xeShlKmUrbipuKSxyPXQoaSksbz1HeShyKSxhPUh5KHIpO3JldHVybltCeShlKm8saSphKSwkeShpJiZuKm8vaSldfX12YXIgQnc9encoKGZ1bmN0aW9uKHQpe3JldHVybiBxeSgyLygxK3QpKX0pKTtCdy5pbnZlcnQ9RHcoKGZ1bmN0aW9uKHQpe3JldHVybiAyKiR5KHQvMil9KSk7dmFyIEh3PXp3KChmdW5jdGlvbih0KXtyZXR1cm4odD1YeSh0KSkmJnQvR3kodCl9KSk7ZnVuY3Rpb24gRncodCxlKXtyZXR1cm5bdCxVeShZeSgoUHkrZSkvMikpXX1mdW5jdGlvbiBWdyh0KXt2YXIgZSxuLGkscj1Mdyh0KSxvPXIuY2VudGVyLGE9ci5zY2FsZSxzPXIudHJhbnNsYXRlLGw9ci5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiB1KCl7dmFyIG89THkqYSgpLHM9cihFYihyLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gbChudWxsPT1jP1tbc1swXS1vLHNbMV0tb10sW3NbMF0rbyxzWzFdK29dXTp0PT09Rnc/W1tNYXRoLm1heChzWzBdLW8sYyksZV0sW01hdGgubWluKHNbMF0rbyxuKSxpXV06W1tjLE1hdGgubWF4KHNbMV0tbyxlKV0sW24sTWF0aC5taW4oc1sxXStvLGkpXV0pfXJldHVybiByLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHUoKSk6YSgpfSxyLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSx1KCkpOnMoKX0sci5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksdSgpKTpvKCl9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPWU9bj1pPW51bGw6KGM9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHUoKSk6bnVsbD09Yz9udWxsOltbYyxlXSxbbixpXV19LHUoKX1mdW5jdGlvbiBVdyh0KXtyZXR1cm4gWXkoKFB5K3QpLzIpfWZ1bmN0aW9uIGp3KHQsZSl7dmFyIG49SHkodCksaT10PT09ZT9HeSh0KTpVeShuL0h5KGUpKS9VeShVdyhlKS9Vdyh0KSkscj1uKmp5KFV3KHQpLGkpL2k7aWYoIWkpcmV0dXJuIEZ3O2Z1bmN0aW9uIG8odCxlKXtyPjA/ZTwtUHkrQXkmJihlPS1QeStBeSk6ZT5QeS1BeSYmKGU9UHktQXkpO3ZhciBuPXIvankoVXcoZSksaSk7cmV0dXJuW24qR3koaSp0KSxyLW4qSHkoaSp0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89V3koaSkqcXkodCp0K24qbiksYT1CeSh0LHp5KG4pKSpXeShuKTtyZXR1cm4gbippPDAmJihhLT1MeSpXeSh0KSpXeShuKSksW2EvaSwyKkR5KGp5KHIvbywxL2kpKS1QeV19LG99ZnVuY3Rpb24gR3codCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBXdyh0LGUpe3ZhciBuPUh5KHQpLGk9dD09PWU/R3kodCk6KG4tSHkoZSkpLyhlLXQpLHI9bi9pK3Q7aWYoenkoaSk8QXkpcmV0dXJuIEd3O2Z1bmN0aW9uIG8odCxlKXt2YXIgbj1yLWUsbz1pKnQ7cmV0dXJuW24qR3kobyksci1uKkh5KG8pXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLWUsbz1CeSh0LHp5KG4pKSpXeShuKTtyZXR1cm4gbippPDAmJihvLT1MeSpXeSh0KSpXeShuKSksW28vaSxyLVd5KGkpKnF5KHQqdCtuKm4pXX0sb31Idy5pbnZlcnQ9RHcoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLEZ3LmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblt0LDIqRHkoVnkoZSkpLVB5XX0sR3cuaW52ZXJ0PUd3O3ZhciBxdz0xLjM0MDI2NCxZdz0tLjA4MTEwNixYdz04OTNlLTYsJHc9LjAwMzc5NixLdz1xeSgzKS8yO2Z1bmN0aW9uIFp3KHQsZSl7dmFyIG49JHkoS3cqR3koZSkpLGk9bipuLHI9aSppKmk7cmV0dXJuW3QqSHkobikvKEt3KihxdyszKll3KmkrciooNypYdys5KiR3KmkpKSksbioocXcrWXcqaStyKihYdyskdyppKSldfWZ1bmN0aW9uIEp3KHQsZSl7dmFyIG49SHkoZSksaT1IeSh0KSpuO3JldHVybltuKkd5KHQpL2ksR3koZSkvaV19ZnVuY3Rpb24gUXcodCxlKXt2YXIgbj1lKmUsaT1uKm47cmV0dXJuW3QqKC44NzA3LS4xMzE5NzkqbitpKihpKiguMDAzOTcxKm4tLjAwMTUyOSppKS0uMDEzNzkxKSksZSooMS4wMDcyMjYrbiooLjAxNTA4NStpKiguMDI4ODc0Km4tLjA0NDQ3NS0uMDA1OTE2KmkpKSldfWZ1bmN0aW9uIHRTKHQsZSl7cmV0dXJuW0h5KGUpKkd5KHQpLEd5KGUpXX1mdW5jdGlvbiBlUyh0LGUpe3ZhciBuPUh5KGUpLGk9MStIeSh0KSpuO3JldHVybltuKkd5KHQpL2ksR3koZSkvaV19ZnVuY3Rpb24gblModCxlKXtyZXR1cm5bVXkoWXkoKFB5K2UpLzIpKSwtdF19ZnVuY3Rpb24gaVModCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gclModCxlKXtyZXR1cm4gdCtlLnh9ZnVuY3Rpb24gb1ModCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlLnkpfWZ1bmN0aW9uIGFTKHQpe3ZhciBlPTAsbj10LmNoaWxkcmVuLGk9biYmbi5sZW5ndGg7aWYoaSlmb3IoOy0taT49MDspZSs9bltpXS52YWx1ZTtlbHNlIGU9MTt0LnZhbHVlPWV9ZnVuY3Rpb24gc1ModCxlKXt2YXIgbixpLHIsbyxhLHM9bmV3IGhTKHQpLGw9K3QudmFsdWUmJihzLnZhbHVlPXQudmFsdWUpLGM9W3NdO2ZvcihudWxsPT1lJiYoZT1sUyk7bj1jLnBvcCgpOylpZihsJiYobi52YWx1ZT0rbi5kYXRhLnZhbHVlKSwocj1lKG4uZGF0YSkpJiYoYT1yLmxlbmd0aCkpZm9yKG4uY2hpbGRyZW49bmV3IEFycmF5KGEpLG89YS0xO28+PTA7LS1vKWMucHVzaChpPW4uY2hpbGRyZW5bb109bmV3IGhTKHJbb10pKSxpLnBhcmVudD1uLGkuZGVwdGg9bi5kZXB0aCsxO3JldHVybiBzLmVhY2hCZWZvcmUodVMpfWZ1bmN0aW9uIGxTKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIGNTKHQpe3QuZGF0YT10LmRhdGEuZGF0YX1mdW5jdGlvbiB1Uyh0KXt2YXIgZT0wO2Rve3QuaGVpZ2h0PWV9d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0LmhlaWdodDwrK2UpfWZ1bmN0aW9uIGhTKHQpe3RoaXMuZGF0YT10LHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfVp3LmludmVydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbixpPWUscj1pKmksbz1yKnIqcixhPTA7YTwxMiYmKG89KHI9KGktPW49KGkqKHF3K1l3KnIrbyooWHcrJHcqcikpLWUpLyhxdyszKll3KnIrbyooNypYdys5KiR3KnIpKSkqaSkqcipyLCEoenkobik8a3kpKTsrK2EpO3JldHVybltLdyp0KihxdyszKll3KnIrbyooNypYdys5KiR3KnIpKS9IeShpKSwkeShHeShpKS9LdyldfSxKdy5pbnZlcnQ9RHcoRHkpLFF3LmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuLGk9ZSxyPTI1O2Rve3ZhciBvPWkqaSxhPW8qbztpLT1uPShpKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC4wMjg4NzQqby0uMDQ0NDc1LS4wMDU5MTYqYSkpKS1lKS8oMS4wMDcyMjYrbyooLjA0NTI1NSthKiguMjU5ODY2Km8tLjMxMTMyNS0uMDA1OTE2KjExKmEpKSl9d2hpbGUoenkobik+QXkmJi0tcj4wKTtyZXR1cm5bdC8oLjg3MDcrKG89aSppKSoobyoobypvKm8qKC4wMDM5NzEtLjAwMTUyOSpvKS0uMDEzNzkxKS0uMTMxOTc5KSksaV19LHRTLmludmVydD1EdygkeSksZVMuaW52ZXJ0PUR3KChmdW5jdGlvbih0KXtyZXR1cm4gMipEeSh0KX0pKSxuUy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bLWUsMipEeShWeSh0KSktUHldfSxoUy5wcm90b3R5cGU9c1MucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpoUyxjb3VudDpmdW5jdGlvbiBkUygpe3JldHVybiB0aGlzLmVhY2hBZnRlcihhUyl9LGVhY2g6ZnVuY3Rpb24gcFModCl7dmFyIGUsbixpLHIsbz10aGlzLGE9W29dO2Rve2ZvcihlPWEucmV2ZXJzZSgpLGE9W107bz1lLnBvcCgpOylpZih0KG8pLG49by5jaGlsZHJlbilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyOysraSlhLnB1c2gobltpXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24gZlModCl7Zm9yKHZhciBlLG4saSxyPXRoaXMsbz1bcl0sYT1bXTtyPW8ucG9wKCk7KWlmKGEucHVzaChyKSxlPXIuY2hpbGRyZW4pZm9yKG49MCxpPWUubGVuZ3RoO248aTsrK24pby5wdXNoKGVbbl0pO2Zvcig7cj1hLnBvcCgpOyl0KHIpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uIG1TKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPVtpXTtpPXIucG9wKCk7KWlmKHQoaSksZT1pLmNoaWxkcmVuKWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pci5wdXNoKGVbbl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24gZ1ModCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIG49K3QoZS5kYXRhKXx8MCxpPWUuY2hpbGRyZW4scj1pJiZpLmxlbmd0aDstLXI+PTA7KW4rPWlbcl0udmFsdWU7ZS52YWx1ZT1ufSkpfSxzb3J0OmZ1bmN0aW9uIF9TKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbiB5Uyh0KXtmb3IodmFyIGU9dGhpcyxuPShmdW5jdGlvbiBpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIG49dC5hbmNlc3RvcnMoKSxpPWUuYW5jZXN0b3JzKCkscj1udWxsO2Zvcih0PW4ucG9wKCksZT1pLnBvcCgpO3Q9PT1lOylyPXQsdD1uLnBvcCgpLGU9aS5wb3AoKTtyZXR1cm4gcn0pKGUsdCkscj1bZV07ZSE9PW47KXIucHVzaChlPWUucGFyZW50KTtmb3IodmFyIG89ci5sZW5ndGg7dCE9PW47KXIuc3BsaWNlKG8sMCx0KSx0PXQucGFyZW50O3JldHVybiByfSxhbmNlc3RvcnM6ZnVuY3Rpb24gdlMoKXtmb3IodmFyIHQ9dGhpcyxlPVt0XTt0PXQucGFyZW50OyllLnB1c2godCk7cmV0dXJuIGV9LGRlc2NlbmRhbnRzOmZ1bmN0aW9uIGJTKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oZSl7dC5wdXNoKGUpfSkpLHR9LGxlYXZlczpmdW5jdGlvbiB4Uygpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fHQucHVzaChlKX0pKSx0fSxsaW5rczpmdW5jdGlvbiB3Uygpe3ZhciB0PXRoaXMsZT1bXTtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbihuKXtuIT09dCYmZS5wdXNoKHtzb3VyY2U6bi5wYXJlbnQsdGFyZ2V0Om59KX0pKSxlfSxjb3B5OmZ1bmN0aW9uIFNTKCl7cmV0dXJuIHNTKHRoaXMpLmVhY2hCZWZvcmUoY1MpfX07dmFyIE1TPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBFUyh0KXtmb3IodmFyIGUsbixpPTAscj0odD0oZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUsbixpPXQubGVuZ3RoO2k7KW49TWF0aC5yYW5kb20oKSppLS18MCxlPXRbaV0sdFtpXT10W25dLHRbbl09ZTtyZXR1cm4gdH0pKE1TLmNhbGwodCkpKS5sZW5ndGgsYT1bXTtpPHI7KWU9dFtpXSxuJiZBUyhuLGUpPysraToobj1MUyhhPVRTKGEsZSkpLGk9MCk7cmV0dXJuIG59ZnVuY3Rpb24gVFModCxlKXt2YXIgbixpO2lmKGtTKGUsdCkpcmV0dXJuW2VdO2ZvcihuPTA7bjx0Lmxlbmd0aDsrK24paWYoQ1MoZSx0W25dKSYma1MoUFModFtuXSxlKSx0KSlyZXR1cm5bdFtuXSxlXTtmb3Iobj0wO248dC5sZW5ndGgtMTsrK24pZm9yKGk9bisxO2k8dC5sZW5ndGg7KytpKWlmKENTKFBTKHRbbl0sdFtpXSksZSkmJkNTKFBTKHRbbl0sZSksdFtpXSkmJkNTKFBTKHRbaV0sZSksdFtuXSkmJmtTKE5TKHRbbl0sdFtpXSxlKSx0KSlyZXR1cm5bdFtuXSx0W2ldLGVdO3Rocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBDUyh0LGUpe3ZhciBuPXQuci1lLnIsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbjwwfHxuKm48aSppK3Iqcn1mdW5jdGlvbiBBUyh0LGUpe3ZhciBuPXQuci1lLnIrMWUtNixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPjAmJm4qbj5pKmkrcipyfWZ1bmN0aW9uIGtTKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDsrK24paWYoIUFTKHQsZVtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gTFModCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJue3g6dC54LHk6dC55LHI6dC5yfX0pKHRbMF0pO2Nhc2UgMjpyZXR1cm4gUFModFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIE5TKHRbMF0sdFsxXSx0WzJdKX19ZnVuY3Rpb24gUFModCxlKXt2YXIgbj10LngsaT10Lnkscj10LnIsbz1lLngsYT1lLnkscz1lLnIsbD1vLW4sYz1hLWksdT1zLXIsaD1NYXRoLnNxcnQobCpsK2MqYyk7cmV0dXJue3g6KG4rbytsL2gqdSkvMix5OihpK2ErYy9oKnUpLzIscjooaCtyK3MpLzJ9fWZ1bmN0aW9uIE5TKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz10LnIsYT1lLngscz1lLnksbD1lLnIsYz1uLngsdT1uLnksaD1uLnIsZD1pLWEscD1pLWMsZj1yLXMsbT1yLXUsZz1sLW8sXz1oLW8seT1pKmkrcipyLW8qbyx2PXktYSphLXMqcytsKmwsYj15LWMqYy11KnUraCpoLHg9cCpmLWQqbSx3PShmKmItbSp2KS8oMip4KS1pLFM9KG0qZy1mKl8pL3gsTT0ocCp2LWQqYikvKDIqeCktcixFPShkKl8tcCpnKS94LFQ9UypTK0UqRS0xLEM9Mioobyt3KlMrTSpFKSxBPXcqdytNKk0tbypvLGs9LShUPyhDK01hdGguc3FydChDKkMtNCpUKkEpKS8oMipUKTpBL0MpO3JldHVybnt4OmkrdytTKmsseTpyK00rRSprLHI6a319ZnVuY3Rpb24gSVModCxlLG4pe3ZhciBpLHIsbyxhLHM9dC54LWUueCxsPXQueS1lLnksYz1zKnMrbCpsO2M/KHI9ZS5yK24ucixhPXQucituLnIsKHIqPXIpPihhKj1hKT8oaT0oYythLXIpLygyKmMpLG89TWF0aC5zcXJ0KE1hdGgubWF4KDAsYS9jLWkqaSkpLG4ueD10LngtaSpzLW8qbCxuLnk9dC55LWkqbCtvKnMpOihpPShjK3ItYSkvKDIqYyksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxyL2MtaSppKSksbi54PWUueCtpKnMtbypsLG4ueT1lLnkraSpsK28qcykpOihuLng9ZS54K24ucixuLnk9ZS55KX1mdW5jdGlvbiBSUyh0LGUpe3ZhciBuPXQucitlLnItMWUtNixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPjAmJm4qbj5pKmkrcipyfWZ1bmN0aW9uIE9TKHQpe3ZhciBlPXQuXyxuPXQubmV4dC5fLGk9ZS5yK24ucixyPShlLngqbi5yK24ueCplLnIpL2ksbz0oZS55Km4ucituLnkqZS5yKS9pO3JldHVybiByKnIrbypvfWZ1bmN0aW9uIHpTKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiBEUyh0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUueT0wLCEocj4xKSlyZXR1cm4gZS5yO2lmKGUueD0tKG49dFsxXSkucixuLng9ZS5yLG4ueT0wLCEocj4yKSlyZXR1cm4gZS5yK24ucjtJUyhuLGUsaT10WzJdKSxlPW5ldyB6UyhlKSxuPW5ldyB6UyhuKSxpPW5ldyB6UyhpKSxlLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1lLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9ZTt0OmZvcihzPTM7czxyOysrcyl7SVMoZS5fLG4uXyxpPXRbc10pLGk9bmV3IHpTKGkpLGw9bi5uZXh0LGM9ZS5wcmV2aW91cyx1PW4uXy5yLGg9ZS5fLnI7ZG97aWYodTw9aCl7aWYoUlMobC5fLGkuXykpe2UubmV4dD1uPWwsbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fXUrPWwuXy5yLGw9bC5uZXh0fWVsc2V7aWYoUlMoYy5fLGkuXykpeyhlPWMpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3IoaS5wcmV2aW91cz1lLGkubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49aSxvPU9TKGUpOyhpPWkubmV4dCkhPT1uOykoYT1PUyhpKSk8byYmKGU9aSxvPWEpO249ZS5uZXh0fWZvcihlPVtuLl9dLGk9bjsoaT1pLm5leHQpIT09bjspZS5wdXNoKGkuXyk7Zm9yKGk9RVMoZSkscz0wO3M8cjsrK3MpKGU9dFtzXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gQlModCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpIUyh0KX1mdW5jdGlvbiBIUyh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gRlMoKXtyZXR1cm4gMH1mdW5jdGlvbiBWUyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gVVModCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBqUyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0aW9uIEdTKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGkscixvLGE9aS5sZW5ndGgscz10KG4pKmV8fDA7aWYocylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yKz1zO2lmKG89RFMoaSkscylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yLT1zO24ucj1vK3N9fX1mdW5jdGlvbiBXUyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5wYXJlbnQ7ZS5yKj10LG4mJihlLng9bi54K3QqZS54LGUueT1uLnkrdCplLnkpfX1mdW5jdGlvbiBxUyh0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gWVModCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KytzPGw7KShvPWFbc10pLnkwPW4sby55MT1yLG8ueDA9ZSxvLngxPWUrPW8udmFsdWUqY312YXIgWFM9e2RlcHRoOi0xfSwkUz17fTtmdW5jdGlvbiBLUyh0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBaUyh0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiBKUyh0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBRUyh0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIHRNKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVtlLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gZU0odCxlLG4pe3ZhciBpPW4vKGUuaS10LmkpO2UuYy09aSxlLnMrPW4sdC5jKz1pLGUueis9bixlLm0rPW59ZnVuY3Rpb24gbk0odCxlLG4pe3JldHVybiB0LmEucGFyZW50PT09ZS5wYXJlbnQ/dC5hOm59ZnVuY3Rpb24gaU0odCxlKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9ZX1mdW5jdGlvbiByTSh0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKHItbikvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueDA9ZSxvLngxPWksby55MD1uLG8ueTE9bis9by52YWx1ZSpjfWlNLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGhTLnByb3RvdHlwZSk7dmFyIG9NPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiBhTSh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHMsbCxjLHUsaCxkLHAsZixtLGcsXz1bXSx5PWUuY2hpbGRyZW4sdj0wLGI9MCx4PXkubGVuZ3RoLHc9ZS52YWx1ZTt2PHg7KXtsPXItbixjPW8taTtkb3t1PXlbYisrXS52YWx1ZX13aGlsZSghdSYmYjx4KTtmb3IoaD1kPXUsZz11KnUqKG09TWF0aC5tYXgoYy9sLGwvYykvKHcqdCkpLGY9TWF0aC5tYXgoZC9nLGcvaCk7Yjx4OysrYil7aWYodSs9cz15W2JdLnZhbHVlLHM8aCYmKGg9cykscz5kJiYoZD1zKSxnPXUqdSptLChwPU1hdGgubWF4KGQvZyxnL2gpKT5mKXt1LT1zO2JyZWFrfWY9cH1fLnB1c2goYT17dmFsdWU6dSxkaWNlOmw8YyxjaGlsZHJlbjp5LnNsaWNlKHYsYil9KSxhLmRpY2U/WVMoYSxuLGkscix3P2krPWMqdS93Om8pOnJNKGEsbixpLHc/bis9bCp1L3c6cixvKSx3LT11LHY9Yn1yZXR1cm4gX312YXIgc009KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4saSxyLG8pe2FNKGUsdCxuLGkscixvKX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkob00pLGxNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtpZigoYT10Ll9zcXVhcmlmeSkmJmEucmF0aW89PT1lKWZvcih2YXIgYSxzLGwsYyx1LGg9LTEsZD1hLmxlbmd0aCxwPXQudmFsdWU7KytoPGQ7KXtmb3IobD0ocz1hW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/WVMocyxuLGkscixpKz0oby1pKSpzLnZhbHVlL3ApOnJNKHMsbixpLG4rPShyLW4pKnMudmFsdWUvcCxvKSxwLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1hTShlLHQsbixpLHIsbyksYS5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShvTSk7ZnVuY3Rpb24gY00odCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pLShlWzFdLXRbMV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIHVNKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIGhNKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVswLDFdLGk9MixyPTI7cjxlOysrcil7Zm9yKDtpPjEmJmNNKHRbbltpLTJdXSx0W25baS0xXV0sdFtyXSk8PTA7KS0taTtuW2krK109cn1yZXR1cm4gbi5zbGljZSgwLGkpfWZ1bmN0aW9uIGRNKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9dmFyIHBNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sMT09PWFyZ3VtZW50cy5sZW5ndGg/KG49dCx0PTApOm4tPXQsZnVuY3Rpb24oKXtyZXR1cm4gZSgpKm4rdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKGRNKSxmTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIGkscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgbztpZihudWxsIT1pKW89aSxpPW51bGw7ZWxzZSBkb3tpPTIqZSgpLTEsbz0yKmUoKS0xLHI9aSppK28qb313aGlsZSghcnx8cj4xKTtyZXR1cm4gdCtuKm8qTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoZE0pLG1NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4oKXt2YXIgdD1mTS5zb3VyY2UoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cCh0KCkpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoZE0pLGdNPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsaT0wO2k8dDsrK2kpbis9ZSgpO3JldHVybiBufX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoZE0pLF9NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49Z00uc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKGRNKSx5TT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLWUoKSkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKGRNKTtmdW5jdGlvbiB2TSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc31mdW5jdGlvbiBiTSh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMuaW50ZXJwb2xhdG9yKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5pbnRlcnBvbGF0b3IoZSkuZG9tYWluKHQpfXJldHVybiB0aGlzfXZhciB4TT1BcnJheS5wcm90b3R5cGUsd009eE0ubWFwLFNNPXhNLnNsaWNlLE1NPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIEVNKCl7dmFyIHQ9d2coKSxlPVtdLG49W10saT1NTTtmdW5jdGlvbiByKHIpe3ZhciBvPXIrIiIsYT10LmdldChvKTtpZighYSl7aWYoaSE9PU1NKXJldHVybiBpO3Quc2V0KG8sYT1lLnB1c2gocikpfXJldHVybiBuWyhhLTEpJW4ubGVuZ3RoXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9d2coKTtmb3IodmFyIGksbyxhPS0xLHM9bi5sZW5ndGg7KythPHM7KXQuaGFzKG89KGk9blthXSkrIiIpfHx0LnNldChvLGUucHVzaChpKSk7cmV0dXJuIHJ9LHIucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49U00uY2FsbCh0KSxyKTpuLnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHIpOml9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBFTShlLG4pLnVua25vd24oaSl9LHZNLmFwcGx5KHIsYXJndW1lbnRzKSxyfWZ1bmN0aW9uIFRNKCl7dmFyIHQsZSxuPUVNKCkudW5rbm93bih2b2lkIDApLGk9bi5kb21haW4scj1uLnJhbmdlLG89WzAsMV0sYT0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gdSgpe3ZhciBuPWkoKS5sZW5ndGgsdT1vWzFdPG9bMF0saD1vW3UtMF0sZD1vWzEtdV07dD0oZC1oKS9NYXRoLm1heCgxLG4tcysyKmwpLGEmJih0PU1hdGguZmxvb3IodCkpLGgrPShkLWgtdCoobi1zKSkqYyxlPXQqKDEtcyksYSYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBwPXpsKG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGgrdCplfSkpO3JldHVybiByKHU/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSBuLnVua25vd24sbi5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkodCksdSgpKTppKCl9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89Wyt0WzBdLCt0WzFdXSx1KCkpOm8uc2xpY2UoKX0sbi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvPVsrdFswXSwrdFsxXV0sYT0hMCx1KCl9LG4uYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIGV9LG4uc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhdCx1KCkpOmF9LG4ucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K3QpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSx0KSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSt0LHUoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFRNKGkoKSxvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSx2TS5hcHBseSh1KCksYXJndW1lbnRzKX1mdW5jdGlvbiBDTSh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiBDTShlKCkpfSx0fWZ1bmN0aW9uIEFNKCl7cmV0dXJuIENNKFRNLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIGtNKHQpe3JldHVybit0fXZhciBMTT1bMCwxXTtmdW5jdGlvbiBQTSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBOTSh0LGUpe3JldHVybihlLT10PSt0KT9mdW5jdGlvbihuKXtyZXR1cm4obi10KS9lfTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihlKT9OYU46LjUpfWZ1bmN0aW9uIElNKHQpe3ZhciBlLG49dFswXSxpPXRbdC5sZW5ndGgtMV07cmV0dXJuIG4+aSYmKGU9bixuPWksaT1lKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbihpLHQpKX19ZnVuY3Rpb24gUk0odCxlLG4pe3ZhciBpPXRbMF0scj10WzFdLG89ZVswXSxhPWVbMV07cmV0dXJuIHI8aT8oaT1OTShyLGkpLG89bihhLG8pKTooaT1OTShpLHIpLG89bihvLGEpKSxmdW5jdGlvbih0KXtyZXR1cm4gbyhpKHQpKX19ZnVuY3Rpb24gT00odCxlLG4pe3ZhciBpPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLHI9bmV3IEFycmF5KGkpLG89bmV3IEFycmF5KGkpLGE9LTE7Zm9yKHRbaV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrYTxpOylyW2FdPU5NKHRbYV0sdFthKzFdKSxvW2FdPW4oZVthXSxlW2ErMV0pO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1TbCh0LGUsMSxpKS0xO3JldHVybiBvW25dKHJbbl0oZSkpfX1mdW5jdGlvbiB6TSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBETSgpe3ZhciB0LGUsbixpLHIsbyxhPUxNLHM9TE0sbD1qZCxjPVBNO2Z1bmN0aW9uIHUoKXtyZXR1cm4gaT1NYXRoLm1pbihhLmxlbmd0aCxzLmxlbmd0aCk+Mj9PTTpSTSxyPW89bnVsbCxofWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP246KHJ8fChyPWkoYS5tYXAodCkscyxsKSkpKHQoYyhlKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gYyhlKChvfHwobz1pKHMsYS5tYXAodCksQmQpKSkobikpKX0saC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9d00uY2FsbCh0LGtNKSxjPT09UE18fChjPUlNKGEpKSx1KCkpOmEuc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1TTS5jYWxsKHQpLHUoKSk6cy5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHM9U00uY2FsbCh0KSxsPUdkLHUoKX0saC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz10P0lNKGEpOlBNLGgpOmMhPT1QTX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10LHUoKSk6bH0saC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaCk6bn0sZnVuY3Rpb24obixpKXtyZXR1cm4gdD1uLGU9aSx1KCl9fWZ1bmN0aW9uIEJNKHQsZSl7cmV0dXJuIERNKCkodCxlKX1mdW5jdGlvbiBITSh0LGUsbixpKXt2YXIgcixvPVVsKHQsZSxuKTtzd2l0Y2goKGk9c3kobnVsbD09aT8iLGYiOmkpKS50eXBlKXtjYXNlInMiOnZhciBhPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9d3kobyxhKSl8fChpLnByZWNpc2lvbj1yKSxneShpLGEpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPVN5KG8sTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChpLnByZWNpc2lvbj1yLSgiZSI9PT1pLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9aS5wcmVjaXNpb258fGlzTmFOKHI9eHkobykpfHwoaS5wcmVjaXNpb249ci0yKigiJSI9PT1pLnR5cGUpKX1yZXR1cm4gbXkoaSl9ZnVuY3Rpb24gRk0odCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiBGbChuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7dmFyIGk9ZSgpO3JldHVybiBITShpWzBdLGlbaS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPVZsKHMsbCxuKSk+MD9pPVZsKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9Vmwocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBWTSgpe3ZhciB0PUJNKFBNLFBNKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHpNKHQsVk0oKSl9LHZNLmFwcGx5KHQsYXJndW1lbnRzKSxGTSh0KX1mdW5jdGlvbiBVTSh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIGpNKHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBHTSh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gV00odCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBxTSh0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIFlNKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBYTSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiAkTSh0KXt2YXIgZSxuLGk9dChqTSxHTSkscj1pLmRvbWFpbixvPTEwO2Z1bmN0aW9uIGEoKXtyZXR1cm4gZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9KShvKSxuPShmdW5jdGlvbiBzKHQpe3JldHVybiAxMD09PXQ/WU06dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3codCxlKX19KShvKSxyKClbMF08MD8oZT1YTShlKSxuPVhNKG4pLHQoV00scU0pKTp0KGpNLEdNKSxpfXJldHVybiBpLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsYSgpKTpvfSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSxhKCkpOnIoKX0saS50aWNrcz1mdW5jdGlvbih0KXt2YXIgaSxhPXIoKSxzPWFbMF0sbD1hW2EubGVuZ3RoLTFdOyhpPWw8cykmJihkPXMscz1sLGw9ZCk7dmFyIGMsdSxoLGQ9ZShzKSxwPWUobCksZj1udWxsPT10PzEwOit0LG09W107aWYoIShvJTEpJiZwLWQ8Zil7aWYoZD1NYXRoLnJvdW5kKGQpLTEscD1NYXRoLnJvdW5kKHApKzEscz4wKXtmb3IoO2Q8cDsrK2QpZm9yKHU9MSxjPW4oZCk7dTxvOysrdSlpZighKChoPWMqdSk8cykpe2lmKGg+bClicmVhazttLnB1c2goaCl9fWVsc2UgZm9yKDtkPHA7KytkKWZvcih1PW8tMSxjPW4oZCk7dT49MTstLXUpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIG09RmwoZCxwLE1hdGgubWluKHAtZCxmKSkubWFwKG4pO3JldHVybiBpP20ucmV2ZXJzZSgpOm19LGkudGlja0Zvcm1hdD1mdW5jdGlvbih0LHIpe2lmKG51bGw9PXImJihyPTEwPT09bz8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiYocj1teShyKSksdD09PTEvMClyZXR1cm4gcjtudWxsPT10JiYodD0xMCk7dmFyIGE9TWF0aC5tYXgoMSxvKnQvaS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPXQvbihNYXRoLnJvdW5kKGUodCkpKTtyZXR1cm4gaSpvPG8tLjUmJihpKj1vKSxpPD1hP3IodCk6IiJ9fSxpLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcihVTShyKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguZmxvb3IoZSh0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBuKE1hdGguY2VpbChlKHQpKSl9fSkpfSxpfWZ1bmN0aW9uIEtNKCl7dmFyIHQ9JE0oRE0oKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiB6TSh0LEtNKCkpLmJhc2UodC5iYXNlKCkpfSx2TS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBaTSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmxvZzFwKE1hdGguYWJzKGUvdCkpfX1mdW5jdGlvbiBKTSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguc2lnbihlKSpNYXRoLmV4cG0xKE1hdGguYWJzKGUpKSp0fX1mdW5jdGlvbiBRTSh0KXt2YXIgZT0xLG49dChaTShlKSxKTShlKSk7cmV0dXJuIG4uY29uc3RhbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dChaTShlPStuKSxKTShlKSk6ZX0sRk0obil9ZnVuY3Rpb24gdEUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIGVFKHQpe3JldHVybiB0PDA/LU1hdGguc3FydCgtdCk6TWF0aC5zcXJ0KHQpfWZ1bmN0aW9uIG5FKHQpe3JldHVybiB0PDA/LXQqdDp0KnR9ZnVuY3Rpb24gaUUodCl7dmFyIGU9dChQTSxQTSksbj0xO2Z1bmN0aW9uIGkoKXtyZXR1cm4gMT09PW4/dChQTSxQTSk6LjU9PT1uP3QoZUUsbkUpOnQodEUobiksdEUoMS9uKSl9cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsaSgpKTpufSxGTShlKX1mdW5jdGlvbiByRSgpe3ZhciB0PWlFKERNKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gek0odCxyRSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSx2TS5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBvRSgpe3ZhciB0LGU9W10sbj1bXSxpPVtdO2Z1bmN0aW9uIHIoKXt2YXIgdD0wLHI9TWF0aC5tYXgoMSxuLmxlbmd0aCk7Zm9yKGk9bmV3IEFycmF5KHItMSk7Kyt0PHI7KWlbdC0xXT1HbChlLHQvcik7cmV0dXJuIG99ZnVuY3Rpb24gbyhlKXtyZXR1cm4gaXNOYU4oZT0rZSk/dDpuW1NsKGksZSldfXJldHVybiBvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1uLmluZGV4T2YodCk7cmV0dXJuIHI8MD9bTmFOLE5hTl06W3I+MD9pW3ItMV06ZVswXSxyPGkubGVuZ3RoP2lbcl06ZVtlLmxlbmd0aC0xXV19LG8uZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4saT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0obj10W2ldKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KGJsKSxyKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49U00uY2FsbCh0KSxyKCkpOm4uc2xpY2UoKX0sby51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsbyk6dH0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5zbGljZSgpfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gb0UoKS5kb21haW4oZSkucmFuZ2UobikudW5rbm93bih0KX0sdk0uYXBwbHkobyxhcmd1bWVudHMpfWZ1bmN0aW9uIGFFKCl7dmFyIHQsZT0wLG49MSxpPTEscj1bLjVdLG89WzAsMV07ZnVuY3Rpb24gYShlKXtyZXR1cm4gZTw9ZT9vW1NsKHIsZSwwLGkpXTp0fWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1TTS5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS51bmtub3duPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6YX0sYS50aHJlc2hvbGRzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGFFKCkuZG9tYWluKFtlLG5dKS5yYW5nZShvKS51bmtub3duKHQpfSx2TS5hcHBseShGTShhKSxhcmd1bWVudHMpfXZhciBzRT1uZXcgRGF0ZSxsRT1uZXcgRGF0ZTtmdW5jdGlvbiBjRSh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBjRSgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBzRS5zZXRUaW1lKCtlKSxsRS5zZXRUaW1lKCtpKSx0KHNFKSx0KGxFKSxNYXRoLmZsb29yKG4oc0UsbEUpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgdUU9Y0UoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTt1RS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2NFKChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOnVFOm51bGx9O3ZhciBoRT11RSxkRT11RS5yYW5nZSxwRT0xZTMsZkU9NmU0LG1FPTM2ZTUsZ0U9ODY0ZTUsX0U9NjA0OGU1LHlFPWNFKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnBFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3BFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSx2RT15RSxiRT15RS5yYW5nZSx4RT1jRSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpwRSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpmRSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9mRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksd0U9eEUsU0U9eEUucmFuZ2UsTUU9Y0UoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqcEUtdC5nZXRNaW51dGVzKCkqZkUpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqbUUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbUV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxFRT1NRSxURT1NRS5yYW5nZSxDRT1jRSgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmZFKS9nRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSxBRT1DRSxrRT1DRS5yYW5nZTtmdW5jdGlvbiBMRSh0KXtyZXR1cm4gY0UoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmZFKS9fRX0pKX12YXIgUEU9TEUoMCksTkU9TEUoMSksSUU9TEUoMiksUkU9TEUoMyksT0U9TEUoNCksekU9TEUoNSksREU9TEUoNiksQkU9UEUucmFuZ2UsSEU9TkUucmFuZ2UsRkU9SUUucmFuZ2UsVkU9UkUucmFuZ2UsVUU9T0UucmFuZ2UsakU9ekUucmFuZ2UsR0U9REUucmFuZ2UsV0U9Y0UoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxxRT1XRSxZRT1XRS5yYW5nZSxYRT1jRSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7WEUuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9jRSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyICRFPVhFLEtFPVhFLnJhbmdlLFpFPWNFKChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmZFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2ZFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKSxKRT1aRSxRRT1aRS5yYW5nZSx0VD1jRSgoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKm1FKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL21FfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSksZVQ9dFQsblQ9dFQucmFuZ2UsaVQ9Y0UoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9nRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKSxyVD1pVCxvVD1pVC5yYW5nZTtmdW5jdGlvbiBhVCh0KXtyZXR1cm4gY0UoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL19FfSkpfXZhciBzVD1hVCgwKSxsVD1hVCgxKSxjVD1hVCgyKSx1VD1hVCgzKSxoVD1hVCg0KSxkVD1hVCg1KSxwVD1hVCg2KSxmVD1zVC5yYW5nZSxtVD1sVC5yYW5nZSxnVD1jVC5yYW5nZSxfVD11VC5yYW5nZSx5VD1oVC5yYW5nZSx2VD1kVC5yYW5nZSxiVD1wVC5yYW5nZSx4VD1jRSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpLHdUPXhULFNUPXhULnJhbmdlLE1UPWNFKChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtNVC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP2NFKChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgRVQ9TVQsVFQ9TVQucmFuZ2U7ZnVuY3Rpb24gQ1QodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIGUuc2V0RnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIEFUKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIGtUKHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBMVCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1VVChyKSx1PWpUKHIpLGg9VVQobyksZD1qVChvKSxwPVVUKGEpLGY9alQoYSksbT1VVChzKSxnPWpUKHMpLF89VVQobCkseT1qVChsKSx2PXthOmZ1bmN0aW9uIGIodCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24geCh0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbiB3KHQpe3JldHVybiBsW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDp1QyxlOnVDLGY6bUMsZzpUQyxHOkFDLEg6aEMsSTpkQyxqOnBDLEw6ZkMsbTpnQyxNOl9DLHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBFKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpaQyxzOkpDLFM6eUMsdTp2QyxVOmJDLFY6d0MsdzpTQyxXOk1DLHg6bnVsbCxYOm51bGwseTpFQyxZOkNDLFo6a0MsIiUiOktDfSxUPXthOmZ1bmN0aW9uIEModCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBrKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gTCh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpMQyxlOkxDLGY6T0MsZzpxQyxHOlhDLEg6UEMsSTpOQyxqOklDLEw6UkMsbTp6QyxNOkRDLHA6ZnVuY3Rpb24gUCh0KXtyZXR1cm4gclsrKHQuZ2V0VVRDSG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBOKHQpe3JldHVybiAxK35+KHQuZ2V0VVRDTW9udGgoKS8zKX0sUTpaQyxzOkpDLFM6QkMsdTpIQyxVOkZDLFY6VUMsdzpqQyxXOkdDLHg6bnVsbCxYOm51bGwseTpXQyxZOllDLFo6JEMsIiUiOktDfSxJPXthOmZ1bmN0aW9uIFIodCxlLG4pe3ZhciBpPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWZbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1oLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1kW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGI6ZnVuY3Rpb24geih0LGUsbil7dmFyIGk9Xy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09eVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxCOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPW0uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPWdbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbiBCKHQsbixpKXtyZXR1cm4gRyh0LGUsbixpKX0sZDp0QyxlOnRDLGY6YUMsZzpLVCxHOiRULEg6bkMsSTpuQyxqOmVDLEw6b0MsbTpRVCxNOmlDLHA6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIGk9Yy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnA9dVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxxOkpULFE6bEMsczpjQyxTOnJDLHU6V1QsVTpxVCxWOllULHc6R1QsVzpYVCx4OmZ1bmN0aW9uIEYodCxlLGkpe3JldHVybiBHKHQsbixlLGkpfSxYOmZ1bmN0aW9uIFYodCxlLG4pe3JldHVybiBHKHQsaSxlLG4pfSx5OktULFk6JFQsWjpaVCwiJSI6c0N9O2Z1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvLGE9W10scz0tMSxsPTAsYz10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPGM7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoYS5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KHI9elRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPWtUKDE5MDAsdm9pZCAwLDEpO2lmKEcobyx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBvKXJldHVybiBuZXcgRGF0ZShvLlEpO2lmKCJzImluIG8pcmV0dXJuIG5ldyBEYXRlKDFlMypvLnMrKCJMImluIG8/by5MOjApKTtpZihlJiYhKCJaImluIG8pJiYoby5aPTApLCJwImluIG8mJihvLkg9by5IJTEyKzEyKm8ucCksdm9pZCAwPT09by5tJiYoby5tPSJxImluIG8/by5xOjApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPUFUKGtUKG8ueSwwLDEpKSkuZ2V0VVRDRGF5KCksaT1yPjR8fDA9PT1yP2xULmNlaWwoaSk6bFQoaSksaT1yVC5vZmZzZXQoaSw3KihvLlYtMSkpLG8ueT1pLmdldFVUQ0Z1bGxZZWFyKCksby5tPWkuZ2V0VVRDTW9udGgoKSxvLmQ9aS5nZXRVVENEYXRlKCkrKG8udys2KSU3KToocj0oaT1DVChrVChvLnksMCwxKSkpLmdldERheSgpLGk9cj40fHwwPT09cj9ORS5jZWlsKGkpOk5FKGkpLGk9QUUub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP0FUKGtUKG8ueSwwLDEpKS5nZXRVVENEYXkoKTpDVChrVChvLnksMCwxKSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxBVChvKSk6Q1Qobyl9fWZ1bmN0aW9uIEcodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPUlbciBpbiB6VD9lLmNoYXJBdChhKyspOnJdKXx8KGk9byh0LG4saSkpPDApcmV0dXJuLTF9ZWxzZSBpZihyIT1uLmNoYXJDb2RlQXQoaSsrKSlyZXR1cm4tMX1yZXR1cm4gaX1yZXR1cm4gdi54PVUobix2KSx2Llg9VShpLHYpLHYuYz1VKGUsdiksVC54PVUobixUKSxULlg9VShpLFQpLFQuYz1VKGUsVCkse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLHYpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLFQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPWoodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX12YXIgUFQsTlQsSVQsUlQsT1QselQ9eyItIjoiIixfOiIgIiwwOiIwIn0sRFQ9L15ccypcZCsvLEJUPS9eJS8sSFQ9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIEZUKHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIFZUKHQpe3JldHVybiB0LnJlcGxhY2UoSFQsIlxcJCYiKX1mdW5jdGlvbiBVVCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoVlQpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBqVCh0KXtmb3IodmFyIGU9e30sbj0tMSxpPXQubGVuZ3RoOysrbjxpOyllW3Rbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gZX1mdW5jdGlvbiBHVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBXVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBxVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBZVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVj0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBYVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiAkVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIGk/KHQueT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBLVCh0LGUsbil7dmFyIGk9RFQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQueT0raVswXSsoK2lbMF0+Njg/MTkwMDoyZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFpUKHQsZSxuKXt2YXIgaT0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuWj1pWzFdPzA6LShpWzJdKyhpWzNdfHwiMDAiKSksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSlQodCxlLG4pe3ZhciBpPURULmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnE9MyppWzBdLTMsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUVQodCxlLG4pe3ZhciBpPURULmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lm09aVswXS0xLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5tPTAsdC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG5DKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5IPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGlDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHJDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5TPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG9DKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5MPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGFDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHNDKHQsZSxuKXt2YXIgaT1CVC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT9uK2lbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIGxDKHQsZSxuKXt2YXIgaT1EVC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LlE9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gY0ModCxlLG4pe3ZhciBpPURULmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQucz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1Qyh0LGUpe3JldHVybiBGVCh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIGhDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0SG91cnMoKSxlLDIpfWZ1bmN0aW9uIGRDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBwQyh0LGUpe3JldHVybiBGVCgxK0FFLmNvdW50KCRFKHQpLHQpLGUsMyl9ZnVuY3Rpb24gZkModCxlKXtyZXR1cm4gRlQodC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIG1DKHQsZSl7cmV0dXJuIGZDKHQsZSkrIjAwMCJ9ZnVuY3Rpb24gZ0ModCxlKXtyZXR1cm4gRlQodC5nZXRNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBfQyh0LGUpe3JldHVybiBGVCh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIHlDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gdkModCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGJDKHQsZSl7cmV0dXJuIEZUKFBFLmNvdW50KCRFKHQpLTEsdCksZSwyKX1mdW5jdGlvbiB4Qyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiBlPj00fHwwPT09ZT9PRSh0KTpPRS5jZWlsKHQpfWZ1bmN0aW9uIHdDKHQsZSl7cmV0dXJuIHQ9eEModCksRlQoT0UuY291bnQoJEUodCksdCkrKDQ9PT0kRSh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBTQyh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBNQyh0LGUpe3JldHVybiBGVChORS5jb3VudCgkRSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gRUModCxlKXtyZXR1cm4gRlQodC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIFRDKHQsZSl7cmV0dXJuIEZUKCh0PXhDKHQpKS5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIENDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBBQyh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIEZUKCh0PW4+PTR8fDA9PT1uP09FKHQpOk9FLmNlaWwodCkpLmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24ga0ModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStGVChlLzYwfDAsIjAiLDIpK0ZUKGUlNjAsIjAiLDIpfWZ1bmN0aW9uIExDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gUEModCxlKXtyZXR1cm4gRlQodC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gTkModCxlKXtyZXR1cm4gRlQodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIElDKHQsZSl7cmV0dXJuIEZUKDErclQuY291bnQoRVQodCksdCksZSwzKX1mdW5jdGlvbiBSQyh0LGUpe3JldHVybiBGVCh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gT0ModCxlKXtyZXR1cm4gUkModCxlKSsiMDAwIn1mdW5jdGlvbiB6Qyh0LGUpe3JldHVybiBGVCh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIERDKHQsZSl7cmV0dXJuIEZUKHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gQkModCxlKXtyZXR1cm4gRlQodC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBIQyh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gRkModCxlKXtyZXR1cm4gRlQoc1QuY291bnQoRVQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIFZDKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP2hUKHQpOmhULmNlaWwodCl9ZnVuY3Rpb24gVUModCxlKXtyZXR1cm4gdD1WQyh0KSxGVChoVC5jb3VudChFVCh0KSx0KSsoND09PUVUKHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uIGpDKHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIEdDKHQsZSl7cmV0dXJuIEZUKGxULmNvdW50KEVUKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBXQyh0LGUpe3JldHVybiBGVCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gcUModCxlKXtyZXR1cm4gRlQoKHQ9VkModCkpLmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gRlQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIFhDKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gRlQoKHQ9bj49NHx8MD09PW4/aFQodCk6aFQuY2VpbCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiAkQygpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gS0MoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gWkModCl7cmV0dXJuK3R9ZnVuY3Rpb24gSkModCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiBRQyh0KXtyZXR1cm4gUFQ9TFQodCksTlQ9UFQuZm9ybWF0LElUPVBULnBhcnNlLFJUPVBULnV0Y0Zvcm1hdCxPVD1QVC51dGNQYXJzZSxQVH1RQyh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB0QT0iJVktJW0tJWRUJUg6JU06JVMuJUxaIixlQT1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz9mdW5jdGlvbiBuQSh0KXtyZXR1cm4gdC50b0lTT1N0cmluZygpfTpSVCh0QSksaUE9K25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9mdW5jdGlvbiByQSh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTpPVCh0QSksb0E9MzE1MzZlNjtmdW5jdGlvbiBhQSh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gc0EodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gbEEodCxlLG4saSxyLG8sYSxzLGwpe3ZhciBjPUJNKFBNLFBNKSx1PWMuaW52ZXJ0LGg9Yy5kb21haW4sZD1sKCIuJUwiKSxwPWwoIjolUyIpLGY9bCgiJUk6JU0iKSxtPWwoIiVJICVwIiksZz1sKCIlYSAlZCIpLF89bCgiJWIgJWQiKSx5PWwoIiVCIiksdj1sKCIlWSIpLGI9W1thLDEsMWUzXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLDZlNF0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSwzNmU1XSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSw4NjRlNV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsb0FdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPXhsKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj1VbChuL29BLGkvb0EsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heChVbChuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aCh3TS5jYWxsKHQsc0EpKTpoKCkubWFwKGFBKX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2goVU0obix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHpNKGMsbEEodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBjQSgpe3JldHVybiB2TS5hcHBseShsQSgkRSxxRSxQRSxBRSxFRSx3RSx2RSxoRSxOVCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdUEoKXt2YXIgdCxlLG4saSxyLG89MCxhPTEscz1QTSxsPSExO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP3I6cygwPT09bj8uNTooZT0oaShlKS10KSpuLGw/TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKTplKSl9cmV0dXJuIGMuZG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWkobz0rclswXSksZT1pKGE9K3JbMV0pLG49dD09PWU/MDoxLyhlLXQpLGMpOltvLGFdfSxjLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSEhdCxjKTpsfSxjLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGMpOnN9LGMudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGMpOnJ9LGZ1bmN0aW9uKHIpe3JldHVybiBpPXIsdD1yKG8pLGU9cihhKSxuPXQ9PT1lPzA6MS8oZS10KSxjfX1mdW5jdGlvbiBoQSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5pbnRlcnBvbGF0b3IodC5pbnRlcnBvbGF0b3IoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBkQSgpe3ZhciB0PWlFKHVBKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaEEodCxkQSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxiTS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gcEEoKXt2YXIgdCxlLG4saSxyLG8sYSxzPTAsbD0uNSxjPTEsdT1QTSxoPSExO2Z1bmN0aW9uIGQodCl7cmV0dXJuIGlzTmFOKHQ9K3QpP2E6KHQ9LjUrKCh0PStvKHQpKS1lKSoodDxlP2k6ciksdShoP01hdGgubWF4KDAsTWF0aC5taW4oMSx0KSk6dCkpfXJldHVybiBkLmRvbWFpbj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1vKHM9K2FbMF0pLGU9byhsPSthWzFdKSxuPW8oYz0rYVsyXSksaT10PT09ZT8wOi41LyhlLXQpLHI9ZT09PW4/MDouNS8obi1lKSxkKTpbcyxsLGNdfSxkLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSEhdCxkKTpofSxkLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGQpOnV9LGQudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LGQpOmF9LGZ1bmN0aW9uKGEpe3JldHVybiBvPWEsdD1hKHMpLGU9YShsKSxuPWEoYyksaT10PT09ZT8wOi41LyhlLXQpLHI9ZT09PW4/MDouNS8obi1lKSxkfX1mdW5jdGlvbiBmQSgpe3ZhciB0PWlFKHBBKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaEEodCxmQSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxiTS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gbUEodCl7Zm9yKHZhciBlPXQubGVuZ3RoLzZ8MCxuPW5ldyBBcnJheShlKSxpPTA7aTxlOyluW2ldPSIjIit0LnNsaWNlKDYqaSw2KisraSk7cmV0dXJuIG59dmFyIGdBPW1BKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxfQT1tQSgiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IikseUE9bUEoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLHZBPW1BKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxiQT1tQSgiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIikseEE9bUEoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLHdBPW1BKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxTQT1tQSgiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksTUE9bUEoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLEVBPW1BKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKTtmdW5jdGlvbiBUQSh0KXtyZXR1cm4gTmQodFt0Lmxlbmd0aC0xXSl9dmFyIENBPW5ldyBBcnJheSgzKS5jb25jYXQoImQ4YjM2NWY1ZjVmNTVhYjRhYyIsImE2NjExYWRmYzI3ZDgwY2RjMTAxODU3MSIsImE2NjExYWRmYzI3ZGY1ZjVmNTgwY2RjMTAxODU3MSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2M3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2Y1ZjVmNWM3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIpLm1hcChtQSksQUE9VEEoQ0EpLGtBPW5ldyBBcnJheSgzKS5jb25jYXQoImFmOGRjM2Y3ZjdmNzdmYmY3YiIsIjdiMzI5NGMyYTVjZmE2ZGJhMDAwODgzNyIsIjdiMzI5NGMyYTVjZmY3ZjdmN2E2ZGJhMDAwODgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGQ5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGY3ZjdmN2Q5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIpLm1hcChtQSksTEE9VEEoa0EpLFBBPW5ldyBBcnJheSgzKS5jb25jYXQoImU5YTNjOWY3ZjdmN2ExZDc2YSIsImQwMWM4YmYxYjZkYWI4ZTE4NjRkYWMyNiIsImQwMWM4YmYxYjZkYWY3ZjdmN2I4ZTE4NjRkYWMyNiIsImM1MWI3ZGU5YTNjOWZkZTBlZmU2ZjVkMGExZDc2YTRkOTIyMSIsImM1MWI3ZGU5YTNjOWZkZTBlZmY3ZjdmN2U2ZjVkMGExZDc2YTRkOTIyMSIsImM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmU2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMSIsImM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmY3ZjdmN2U2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMSIsIjhlMDE1MmM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmU2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMTI3NjQxOSIsIjhlMDE1MmM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmY3ZjdmN2U2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMTI3NjQxOSIpLm1hcChtQSksTkE9VEEoUEEpLElBPW5ldyBBcnJheSgzKS5jb25jYXQoIjk5OGVjM2Y3ZjdmN2YxYTM0MCIsIjVlM2M5OWIyYWJkMmZkYjg2M2U2NjEwMSIsIjVlM2M5OWIyYWJkMmY3ZjdmN2ZkYjg2M2U2NjEwMSIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmY3ZjdmN2ZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIpLm1hcChtQSksUkE9VEEoSUEpLE9BPW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmY3ZjdmNzY3YTljZiIsImNhMDAyMGY0YTU4MjkyYzVkZTA1NzFiMCIsImNhMDAyMGY0YTU4MmY3ZjdmNzkyYzVkZTA1NzFiMCIsImIyMTgyYmVmOGE2MmZkZGJjN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmVmOGE2MmZkZGJjN2Y3ZjdmN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIpLm1hcChtQSksekE9VEEoT0EpLERBPW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmZmZmZmZjk5OTk5OSIsImNhMDAyMGY0YTU4MmJhYmFiYTQwNDA0MCIsImNhMDAyMGY0YTU4MmZmZmZmZmJhYmFiYTQwNDA0MCIsImIyMTgyYmVmOGE2MmZkZGJjN2UwZTBlMDk5OTk5OTRkNGQ0ZCIsImIyMTgyYmVmOGE2MmZkZGJjN2ZmZmZmZmUwZTBlMDk5OTk5OTRkNGQ0ZCIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2UwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZCIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2ZmZmZmZmUwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZCIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2UwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZDFhMWExYSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2ZmZmZmZmUwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZDFhMWExYSIpLm1hcChtQSksQkE9VEEoREEpLEhBPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxYmZkYiIsImQ3MTkxY2ZkYWU2MWFiZDllOTJjN2JiNiIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZDllOTJjN2JiNiIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGZmZmZiZmUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIpLm1hcChtQSksRkE9VEEoSEEpLFZBPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxY2Y2MCIsImQ3MTkxY2ZkYWU2MWE2ZDk2YTFhOTY0MSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmE2ZDk2YTFhOTY0MSIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmZmZmZiZmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIpLm1hcChtQSksVUE9VEEoVkEpLGpBPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjk5ZDU5NCIsImQ3MTkxY2ZkYWU2MWFiZGRhNDJiODNiYSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZGRhNDJiODNiYSIsImQ1M2U0ZmZjOGQ1OWZlZTA4YmU2ZjU5ODk5ZDU5NDMyODhiZCIsImQ1M2U0ZmZjOGQ1OWZlZTA4YmZmZmZiZmU2ZjU5ODk5ZDU5NDMyODhiZCIsImQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZCIsImQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZCIsIjllMDE0MmQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZDVlNGZhMiIsIjllMDE0MmQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZDVlNGZhMiIpLm1hcChtQSksR0E9VEEoakEpLFdBPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVmOTk5ZDhjOTJjYTI1ZiIsImVkZjhmYmIyZTJlMjY2YzJhNDIzOGI0NSIsImVkZjhmYmIyZTJlMjY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChtQSkscUE9VEEoV0EpLFlBPW5ldyBBcnJheSgzKS5jb25jYXQoImUwZWNmNDllYmNkYTg4NTZhNyIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NDE5ZCIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDgxMGY3YzRkMDA0YiIpLm1hcChtQSksWEE9VEEoWUEpLCRBPW5ldyBBcnJheSgzKS5jb25jYXQoImUwZjNkYmE4ZGRiNTQzYTJjYSIsImYwZjllOGJhZTRiYzdiY2NjNDJiOGNiZSIsImYwZjllOGJhZTRiYzdiY2NjNDQzYTJjYTA4NjhhYyIsImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDQzYTJjYTA4NjhhYyIsImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZSIsImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZSIsImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NjhhYzA4NDA4MSIpLm1hcChtQSksS0E9VEEoJEEpLFpBPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZThjOGZkYmI4NGUzNGEzMyIsImZlZjBkOWZkY2M4YWZjOGQ1OWQ3MzAxZiIsImZlZjBkOWZkY2M4YWZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZmIzMDAwMDdmMDAwMCIpLm1hcChtQSksSkE9VEEoWkEpLFFBPW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTJmMGE2YmRkYjFjOTA5OSIsImY2ZWZmN2JkYzllMTY3YTljZjAyODE4YSIsImY2ZWZmN2JkYzllMTY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNmM1OTAxNDYzNiIpLm1hcChtQSksdGs9VEEoUUEpLGVrPW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTdmMmE2YmRkYjJiOGNiZSIsImYxZWVmNmJkYzllMTc0YTljZjA1NzBiMCIsImYxZWVmNmJkYzllMTc0YTljZjJiOGNiZTA0NWE4ZCIsImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjJiOGNiZTA0NWE4ZCIsImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YiIsImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YiIsImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDA0NWE4ZDAyMzg1OCIpLm1hcChtQSksbms9VEEoZWspLGlrPW5ldyBBcnJheSgzKS5jb25jYXQoImU3ZTFlZmM5OTRjN2RkMWM3NyIsImYxZWVmNmQ3YjVkOGRmNjViMGNlMTI1NiIsImYxZWVmNmQ3YjVkOGRmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1Njk4MDA0MzY3MDAxZiIpLm1hcChtQSkscms9VEEoaWspLG9rPW5ldyBBcnJheSgzKS5jb25jYXQoImZkZTBkZGZhOWZiNWM1MWI4YSIsImZlZWJlMmZiYjRiOWY3NjhhMWFlMDE3ZSIsImZlZWJlMmZiYjRiOWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NzQ5MDA2YSIpLm1hcChtQSksYWs9VEEob2spLHNrPW5ldyBBcnJheSgzKS5jb25jYXQoImVkZjhiMTdmY2RiYjJjN2ZiOCIsImZmZmZjY2ExZGFiNDQxYjZjNDIyNWVhOCIsImZmZmZjY2ExZGFiNDQxYjZjNDJjN2ZiODI1MzQ5NCIsImZmZmZjY2M3ZTliNDdmY2RiYjQxYjZjNDJjN2ZiODI1MzQ5NCIsImZmZmZjY2M3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODBjMmM4NCIsImZmZmZkOWVkZjhiMWM3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODBjMmM4NCIsImZmZmZkOWVkZjhiMWM3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODI1MzQ5NDA4MWQ1OCIpLm1hcChtQSksbGs9VEEoc2spLGNrPW5ldyBBcnJheSgzKS5jb25jYXQoImY3ZmNiOWFkZGQ4ZTMxYTM1NCIsImZmZmZjY2MyZTY5OTc4YzY3OTIzODQ0MyIsImZmZmZjY2MyZTY5OTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNjgzNzAwNDUyOSIpLm1hcChtQSksdWs9VEEoY2spLGhrPW5ldyBBcnJheSgzKS5jb25jYXQoImZmZjdiY2ZlYzQ0ZmQ5NWYwZSIsImZmZmZkNGZlZDk4ZWZlOTkyOWNjNGMwMiIsImZmZmZkNGZlZDk4ZWZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjk5MzQwNDY2MjUwNiIpLm1hcChtQSksZGs9VEEoaGspLHBrPW5ldyBBcnJheSgzKS5jb25jYXQoImZmZWRhMGZlYjI0Y2YwM2IyMCIsImZmZmZiMmZlY2M1Y2ZkOGQzY2UzMWExYyIsImZmZmZiMmZlY2M1Y2ZkOGQzY2YwM2IyMGJkMDAyNiIsImZmZmZiMmZlZDk3NmZlYjI0Y2ZkOGQzY2YwM2IyMGJkMDAyNiIsImZmZmZiMmZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2IxMDAyNiIsImZmZmZjY2ZmZWRhMGZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2IxMDAyNiIsImZmZmZjY2ZmZWRhMGZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2JkMDAyNjgwMDAyNiIpLm1hcChtQSksZms9VEEocGspLG1rPW5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChtQSksZ2s9VEEobWspLF9rPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVlMGExZDk5YjMxYTM1NCIsImVkZjhlOWJhZTRiMzc0YzQ3NjIzOGI0NSIsImVkZjhlOWJhZTRiMzc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChtQSkseWs9VEEoX2spLHZrPW5ldyBBcnJheSgzKS5jb25jYXQoImYwZjBmMGJkYmRiZDYzNjM2MyIsImY3ZjdmN2NjY2NjYzk2OTY5NjUyNTI1MiIsImY3ZjdmN2NjY2NjYzk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNTAwMDAwMCIpLm1hcChtQSksYms9VEEodmspLHhrPW5ldyBBcnJheSgzKS5jb25jYXQoImVmZWRmNWJjYmRkYzc1NmJiMSIsImYyZjBmN2NiYzllMjllOWFjODZhNTFhMyIsImYyZjBmN2NiYzllMjllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzU0Mjc4ZjNmMDA3ZCIpLm1hcChtQSksd2s9VEEoeGspLFNrPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChtQSksTWs9VEEoU2spLEVrPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTZjZWZkYWU2YmU2NTUwZCIsImZlZWRkZWZkYmU4NWZkOGQzY2Q5NDcwMSIsImZlZWRkZWZkYmU4NWZkOGQzY2U2NTUwZGE2MzYwMyIsImZlZWRkZWZkZDBhMmZkYWU2YmZkOGQzY2U2NTUwZGE2MzYwMyIsImZlZWRkZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMThjMmQwNCIsImZmZjVlYmZlZTZjZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMThjMmQwNCIsImZmZjVlYmZlZTZjZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMWE2MzYwMzdmMjcwNCIpLm1hcChtQSksVGs9VEEoRWspLENrPV9wKHhkKDMwMCwuNSwwKSx4ZCgtMjQwLC41LDEpKSxBaz1fcCh4ZCgtMTAwLC43NSwuMzUpLHhkKDgwLDEuNSwuOCkpLGtrPV9wKHhkKDI2MCwuNzUsLjM1KSx4ZCg4MCwxLjUsLjgpKSxMaz14ZCgpLFBrPVVoKCksTms9TWF0aC5QSS8zLElrPTIqTWF0aC5QSS8zO2Z1bmN0aW9uIFJrKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fXZhciBPaz1SayhtQSgiNDQwMTU0NDQwMjU2NDUwNDU3NDUwNTU5NDYwNzVhNDYwODVjNDYwYTVkNDYwYjVlNDcwZDYwNDcwZTYxNDcxMDYzNDcxMTY0NDcxMzY1NDgxNDY3NDgxNjY4NDgxNzY5NDgxODZhNDgxYTZjNDgxYjZkNDgxYzZlNDgxZDZmNDgxZjcwNDgyMDcxNDgyMTczNDgyMzc0NDgyNDc1NDgyNTc2NDgyNjc3NDgyODc4NDgyOTc5NDcyYTdhNDcyYzdhNDcyZDdiNDcyZTdjNDcyZjdkNDYzMDdlNDYzMjdlNDYzMzdmNDYzNDgwNDUzNTgxNDUzNzgxNDUzODgyNDQzOTgzNDQzYTgzNDQzYjg0NDMzZDg0NDMzZTg1NDIzZjg1NDI0MDg2NDI0MTg2NDE0Mjg3NDE0NDg3NDA0NTg4NDA0Njg4M2Y0Nzg4M2Y0ODg5M2U0OTg5M2U0YTg5M2U0YzhhM2Q0ZDhhM2Q0ZThhM2M0ZjhhM2M1MDhiM2I1MThiM2I1MjhiM2E1MzhiM2E1NDhjMzk1NThjMzk1NjhjMzg1ODhjMzg1OThjMzc1YThjMzc1YjhkMzY1YzhkMzY1ZDhkMzU1ZThkMzU1ZjhkMzQ2MDhkMzQ2MThkMzM2MjhkMzM2MzhkMzI2NDhlMzI2NThlMzE2NjhlMzE2NzhlMzE2ODhlMzA2OThlMzA2YThlMmY2YjhlMmY2YzhlMmU2ZDhlMmU2ZThlMmU2ZjhlMmQ3MDhlMmQ3MThlMmM3MThlMmM3MjhlMmM3MzhlMmI3NDhlMmI3NThlMmE3NjhlMmE3NzhlMmE3ODhlMjk3OThlMjk3YThlMjk3YjhlMjg3YzhlMjg3ZDhlMjc3ZThlMjc3ZjhlMjc4MDhlMjY4MThlMjY4MjhlMjY4MjhlMjU4MzhlMjU4NDhlMjU4NThlMjQ4NjhlMjQ4NzhlMjM4ODhlMjM4OThlMjM4YThkMjI4YjhkMjI4YzhkMjI4ZDhkMjE4ZThkMjE4ZjhkMjE5MDhkMjE5MThjMjA5MjhjMjA5MjhjMjA5MzhjMWY5NDhjMWY5NThiMWY5NjhiMWY5NzhiMWY5ODhiMWY5OThhMWY5YThhMWU5YjhhMWU5Yzg5MWU5ZDg5MWY5ZTg5MWY5Zjg4MWZhMDg4MWZhMTg4MWZhMTg3MWZhMjg3MjBhMzg2MjBhNDg2MjFhNTg1MjFhNjg1MjJhNzg1MjJhODg0MjNhOTgzMjRhYTgzMjVhYjgyMjVhYzgyMjZhZDgxMjdhZDgxMjhhZTgwMjlhZjdmMmFiMDdmMmNiMTdlMmRiMjdkMmViMzdjMmZiNDdjMzFiNTdiMzJiNjdhMzRiNjc5MzViNzc5MzdiODc4MzhiOTc3M2FiYTc2M2JiYjc1M2RiYzc0M2ZiYzczNDBiZDcyNDJiZTcxNDRiZjcwNDZjMDZmNDhjMTZlNGFjMTZkNGNjMjZjNGVjMzZiNTBjNDZhNTJjNTY5NTRjNTY4NTZjNjY3NThjNzY1NWFjODY0NWNjODYzNWVjOTYyNjBjYTYwNjNjYjVmNjVjYjVlNjdjYzVjNjljZDViNmNjZDVhNmVjZTU4NzBjZjU3NzNkMDU2NzVkMDU0NzdkMTUzN2FkMTUxN2NkMjUwN2ZkMzRlODFkMzRkODRkNDRiODZkNTQ5ODlkNTQ4OGJkNjQ2OGVkNjQ1OTBkNzQzOTNkNzQxOTVkODQwOThkODNlOWJkOTNjOWRkOTNiYTBkYTM5YTJkYTM3YTVkYjM2YThkYjM0YWFkYzMyYWRkYzMwYjBkZDJmYjJkZDJkYjVkZTJiYjhkZTI5YmFkZTI4YmRkZjI2YzBkZjI1YzJkZjIzYzVlMDIxYzhlMDIwY2FlMTFmY2RlMTFkZDBlMTFjZDJlMjFiZDVlMjFhZDhlMjE5ZGFlMzE5ZGRlMzE4ZGZlMzE4ZTJlNDE4ZTVlNDE5ZTdlNDE5ZWFlNTFhZWNlNTFiZWZlNTFjZjFlNTFkZjRlNjFlZjZlNjIwZjhlNjIxZmJlNzIzZmRlNzI1IikpLHprPVJrKG1BKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksRGs9UmsobUEoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxCaz1SayhtQSgiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIEhrKHQpe3JldHVybiBmdW5jdGlvbiBlKCl7cmV0dXJuIHR9fXZhciBGaz1NYXRoLmFicyxWaz1NYXRoLmF0YW4yLFVrPU1hdGguY29zLGprPU1hdGgubWF4LEdrPU1hdGgubWluLFdrPU1hdGguc2luLHFrPU1hdGguc3FydCxZaz0xZS0xMixYaz1NYXRoLlBJLCRrPVhrLzIsS2s9MipYaztmdW5jdGlvbiBaayh0KXtyZXR1cm4gdD4xPzA6dDwtMT9YazpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gSmsodCl7cmV0dXJuIHQ+PTE/JGs6dDw9LTE/LSRrOk1hdGguYXNpbih0KX1mdW5jdGlvbiBRayh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiB0TCh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBlTCh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIG5MKHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIGlMKHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIHJMKHQsZSxuLGkscixvLGEscyl7dmFyIGw9bi10LGM9aS1lLHU9YS1yLGg9cy1vLGQ9aCpsLXUqYztpZighKGQqZDxZaykpcmV0dXJuW3QrKGQ9KHUqKGUtbyktaCoodC1yKSkvZCkqbCxlK2QqY119ZnVuY3Rpb24gb0wodCxlLG4saSxyLG8sYSl7dmFyIHM9dC1uLGw9ZS1pLGM9KGE/bzotbykvcWsocypzK2wqbCksdT1jKmwsaD0tYypzLGQ9dCt1LHA9ZStoLGY9bit1LG09aStoLGc9KGQrZikvMixfPShwK20pLzIseT1mLWQsdj1tLXAsYj15Knkrdip2LHg9ci1vLHc9ZCptLWYqcCxTPSh2PDA/LTE6MSkqcWsoamsoMCx4KngqYi13KncpKSxNPSh3KnYteSpTKS9iLEU9KC13KnktdipTKS9iLFQ9KHcqdit5KlMpL2IsQz0oLXcqeSt2KlMpL2IsQT1NLWcsaz1FLV8sTD1ULWcsUD1DLV87cmV0dXJuIEEqQStrKms+TCpMK1AqUCYmKE09VCxFPUMpLHtjeDpNLGN5OkUseDAxOi11LHkwMTotaCx4MTE6TSooci94LTEpLHkxMTpFKihyL3gtMSl9fWZ1bmN0aW9uIGFMKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBzTCh0KXtyZXR1cm4gbmV3IGFMKHQpfWZ1bmN0aW9uIGxMKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIGNMKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIHVMKCl7dmFyIHQ9bEwsZT1jTCxuPUhrKCEwKSxpPW51bGwscj1zTCxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgcyxsLGMsdT1hLmxlbmd0aCxoPSExO2ZvcihudWxsPT1pJiYobz1yKGM9ZmcoKSkpLHM9MDtzPD11OysrcykhKHM8dSYmbihsPWFbc10scyxhKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK3QobCxzLGEpLCtlKGwscyxhKSk7aWYoYylyZXR1cm4gbz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkhrKCtlKSxhKTp0fSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIaygrdCksYSk6ZX0sYS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoISF0KSxhKTpufSxhLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9aSYmKG89cihpKSksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bz1udWxsOm89cihpPXQpLGEpOml9LGF9ZnVuY3Rpb24gaEwoKXt2YXIgdD1sTCxlPW51bGwsbj1IaygwKSxpPWNMLHI9SGsoITApLG89bnVsbCxhPXNMLHM9bnVsbDtmdW5jdGlvbiBsKGwpe3ZhciBjLHUsaCxkLHAsZj1sLmxlbmd0aCxtPSExLGc9bmV3IEFycmF5KGYpLF89bmV3IEFycmF5KGYpO2ZvcihudWxsPT1vJiYocz1hKHA9ZmcoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJnIoZD1sW2NdLGMsbCkpPT09bSlpZihtPSFtKXU9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxoPWMtMTtoPj11Oy0taClzLnBvaW50KGdbaF0sX1toXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9bSYmKGdbY109K3QoZCxjLGwpLF9bY109K24oZCxjLGwpLHMucG9pbnQoZT8rZShkLGMsbCk6Z1tjXSxpPytpKGQsYyxsKTpfW2NdKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiB1TCgpLmRlZmluZWQocikuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246SGsoK24pLGU9bnVsbCxsKTp0fSxsLngwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SGsoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxpPW51bGwsbCk6bn0sbC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxsKTppfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KGkpfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIayghIXQpLGwpOnJ9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxudWxsIT1vJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1zPW51bGw6cz1hKG89dCksbCk6b30sbH1mdW5jdGlvbiBkTCh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBwTCh0KXtyZXR1cm4gdH1hTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgZkw9Z0woc0wpO2Z1bmN0aW9uIG1MKHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gZ0wodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IG1MKHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gX0wodCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoZ0wodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24geUwoKXtyZXR1cm4gX0wodUwoKS5jdXJ2ZShmTCkpfWZ1bmN0aW9uIHZMKCl7dmFyIHQ9aEwoKS5jdXJ2ZShmTCksZT10LmN1cnZlLG49dC5saW5lWDAsaT10LmxpbmVYMSxyPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBfTChuKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gX0woaSgpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIF9MKHIoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBfTChvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKGdMKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIGJMKHQsZSl7cmV0dXJuWyhlPStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfW1MLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIHhMPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiB3TCh0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24gU0wodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIE1MKHQpe3ZhciBlPXdMLG49U0wsaT1sTCxyPWNMLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz14TC5jYWxsKGFyZ3VtZW50cyksbD1lLmFwcGx5KHRoaXMscyksYz1uLmFwcGx5KHRoaXMscyk7aWYob3x8KG89YT1mZygpKSx0KG8sK2kuYXBwbHkodGhpcywoc1swXT1sLHMpKSwrci5hcHBseSh0aGlzLHMpLCtpLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksK3IuYXBwbHkodGhpcyxzKSksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIaygrdCksYSk6aX0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfWZ1bmN0aW9uIEVMKHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZT0oZStpKS8yLG4sZSxyLGkscil9ZnVuY3Rpb24gVEwodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlLG49KG4rcikvMixpLG4saSxyKX1mdW5jdGlvbiBDTCh0LGUsbixpLHIpe3ZhciBvPWJMKGUsbiksYT1iTChlLG49KG4rcikvMikscz1iTChpLG4pLGw9YkwoaSxyKTt0Lm1vdmVUbyhvWzBdLG9bMV0pLHQuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIEFMPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvWGspO3QubW92ZVRvKG4sMCksdC5hcmMoMCwwLG4sMCxLayl9fSxrTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqbiwtbiksdC5saW5lVG8oLW4sLW4pLHQubGluZVRvKC1uLC0zKm4pLHQubGluZVRvKG4sLTMqbiksdC5saW5lVG8obiwtbiksdC5saW5lVG8oMypuLC1uKSx0LmxpbmVUbygzKm4sbiksdC5saW5lVG8obixuKSx0LmxpbmVUbyhuLDMqbiksdC5saW5lVG8oLW4sMypuKSx0LmxpbmVUbygtbixuKSx0LmxpbmVUbygtMypuLG4pLHQuY2xvc2VQYXRoKCl9fSxMTD1NYXRoLnNxcnQoMS8zKSxQTD0yKkxMLE5MPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvUEwpLGk9bipMTDt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLWksMCksdC5jbG9zZVBhdGgoKX19LElMPU1hdGguc2luKFhrLzEwKS9NYXRoLnNpbig3KlhrLzEwKSxSTD1NYXRoLnNpbihLay8xMCkqSUwsT0w9LU1hdGguY29zKEtrLzEwKSpJTCx6TD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxpPVJMKm4scj1PTCpuO3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGkscik7Zm9yKHZhciBvPTE7bzw1Oysrbyl7dmFyIGE9S2sqby81LHM9TWF0aC5jb3MoYSksbD1NYXRoLnNpbihhKTt0LmxpbmVUbyhsKm4sLXMqbiksdC5saW5lVG8ocyppLWwqcixsKmkrcypyKX10LmNsb3NlUGF0aCgpfX0sREw9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZSksaT0tbi8yO3QucmVjdChpLGksbixuKX19LEJMPU1hdGguc3FydCgzKSxITD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPS1NYXRoLnNxcnQoZS8oMypCTCkpO3QubW92ZVRvKDAsMipuKSx0LmxpbmVUbygtQkwqbiwtbiksdC5saW5lVG8oQkwqbiwtbiksdC5jbG9zZVBhdGgoKX19LEZMPS0uNSxWTD1NYXRoLnNxcnQoMykvMixVTD0xL01hdGguc3FydCgxMiksakw9MyooVUwvMisxKSxHTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL2pMKSxpPW4vMixyPW4qVUwsbz1pLGE9bipVTCtuLHM9LW8sbD1hO3QubW92ZVRvKGksciksdC5saW5lVG8obyxhKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKEZMKmktVkwqcixWTCppK0ZMKnIpLHQubGluZVRvKEZMKm8tVkwqYSxWTCpvK0ZMKmEpLHQubGluZVRvKEZMKnMtVkwqbCxWTCpzK0ZMKmwpLHQubGluZVRvKEZMKmkrVkwqcixGTCpyLVZMKmkpLHQubGluZVRvKEZMKm8rVkwqYSxGTCphLVZMKm8pLHQubGluZVRvKEZMKnMrVkwqbCxGTCpsLVZMKnMpLHQuY2xvc2VQYXRoKCl9fSxXTD1bQUwsa0wsTkwsREwsekwsSEwsR0xdO2Z1bmN0aW9uIHFMKCl7fWZ1bmN0aW9uIFlMKHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStuKS82KX1mdW5jdGlvbiBYTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gJEwodCl7cmV0dXJuIG5ldyBYTCh0KX1mdW5jdGlvbiBLTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gWkwodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEpMKHQsZSl7dGhpcy5fYmFzaXM9bmV3IFhMKHQpLHRoaXMuX2JldGE9ZX1YTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAzOllMKHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2NvbnRleHQubGluZVRvKCg1KnRoaXMuX3gwK3RoaXMuX3gxKS82LCg1KnRoaXMuX3kwK3RoaXMuX3kxKS82KTtkZWZhdWx0OllMKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxLTC5wcm90b3R5cGU9e2FyZWFTdGFydDpxTCxhcmVhRW5kOnFMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gyPXQsdGhpcy5feTI9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDQ9dCx0aGlzLl95ND1lLHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsKHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNik7YnJlYWs7ZGVmYXVsdDpZTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sWkwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7dmFyIG49KHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNixpPSh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzY7dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhuLGkpOnRoaXMuX2NvbnRleHQubW92ZVRvKG4saSk7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpZTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sSkwucHJvdG90eXBlPXtsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W10sdGhpcy5fYmFzaXMubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoLTE7aWYobj4wKWZvcih2YXIgaSxyPXRbMF0sbz1lWzBdLGE9dFtuXS1yLHM9ZVtuXS1vLGw9LTE7KytsPD1uOyl0aGlzLl9iYXNpcy5wb2ludCh0aGlzLl9iZXRhKnRbbF0rKDEtdGhpcy5fYmV0YSkqKHIrKGk9bC9uKSphKSx0aGlzLl9iZXRhKmVbbF0rKDEtdGhpcy5fYmV0YSkqKG8raSpzKSk7dGhpcy5feD10aGlzLl95PW51bGwsdGhpcy5fYmFzaXMubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19O3ZhciBRTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxPT09ZT9uZXcgWEwodCk6bmV3IEpMKHQsZSl9cmV0dXJuIG4uYmV0YT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguODUpO2Z1bmN0aW9uIHRQKHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1uKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gZVAodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWVQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0UCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95MT1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6dFAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBuUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgZVAodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIGlQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1pUC5wcm90b3R5cGU9e2FyZWFTdGFydDpxTCxhcmVhRW5kOnFMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6dFAodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciByUD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgaVAodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIG9QKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1vUC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDp0UCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGFQPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBvUCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gc1AodCxlLG4pe3ZhciBpPXQuX3gxLHI9dC5feTEsbz10Ll94MixhPXQuX3kyO2lmKHQuX2wwMV9hPllrKXt2YXIgcz0yKnQuX2wwMV8yYSszKnQuX2wwMV9hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAxX2EqKHQuX2wwMV9hK3QuX2wxMl9hKTtpPShpKnMtdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQuX2wwMV8yYSkvbCxyPShyKnMtdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkvbH1pZih0Ll9sMjNfYT5Zayl7dmFyIGM9Mip0Ll9sMjNfMmErMyp0Ll9sMjNfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsdT0zKnQuX2wyM19hKih0Ll9sMjNfYSt0Ll9sMTJfYSk7bz0obypjK3QuX3gxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvdSxhPShhKmMrdC5feTEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS91fXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpLHIsbyxhLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBsUCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfWxQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6c1AodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgY1A9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgbFAodCxlKTpuZXcgZVAodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gdVAodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX11UC5wcm90b3R5cGU9e2FyZWFTdGFydDpxTCxhcmVhRW5kOnFMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OnNQKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGhQPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IHVQKHQsZSk6bmV3IGlQKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGRQKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9ZFAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OnNQKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHBQPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IGRQKHQsZSk6bmV3IG9QKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGZQKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBtUCh0KXtyZXR1cm4gdDwwPy0xOjF9ZnVuY3Rpb24gZ1AodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4obVAobykrbVAoYSkpKk1hdGgubWluKE1hdGguYWJzKG8pLE1hdGguYWJzKGEpLC41Kk1hdGguYWJzKHMpKXx8MH1mdW5jdGlvbiBfUCh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24geVAodCxlLG4pe3ZhciBpPXQuX3gwLHI9dC5feDEsbz10Ll95MSxhPShyLWkpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGkrYSx0Ll95MCthKmUsci1hLG8tYSpuLHIsbyl9ZnVuY3Rpb24gdlAodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGJQKHQpe3RoaXMuX2NvbnRleHQ9bmV3IHhQKHQpfWZ1bmN0aW9uIHhQKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiB3UCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gU1AodCl7dmFyIGUsbixpPXQubGVuZ3RoLTEscj1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSksYT1uZXcgQXJyYXkoaSk7Zm9yKHJbMF09MCxvWzBdPTIsYVswXT10WzBdKzIqdFsxXSxlPTE7ZTxpLTE7KytlKXJbZV09MSxvW2VdPTQsYVtlXT00KnRbZV0rMip0W2UrMV07Zm9yKHJbaS0xXT0yLG9baS0xXT03LGFbaS0xXT04KnRbaS0xXSt0W2ldLGU9MTtlPGk7KytlKW9bZV0tPW49cltlXS9vW2UtMV0sYVtlXS09biphW2UtMV07Zm9yKHJbaS0xXT1hW2ktMV0vb1tpLTFdLGU9aS0yO2U+PTA7LS1lKXJbZV09KGFbZV0tcltlKzFdKS9vW2VdO2ZvcihvW2ktMV09KHRbaV0rcltpLTFdKS8yLGU9MDtlPGktMTsrK2Upb1tlXT0yKnRbZSsxXS1yW2UrMV07cmV0dXJuW3Isb119ZnVuY3Rpb24gTVAodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fdD1lfWZ1bmN0aW9uIEVQKHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBUUCh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7LS1lPj0wOyluW2VdPWU7cmV0dXJuIG59ZnVuY3Rpb24gQ1AodCxlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBBUCh0KXt2YXIgZT10Lm1hcChrUCk7cmV0dXJuIFRQKHQpLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF0tZVtuXX0pKX1mdW5jdGlvbiBrUCh0KXtmb3IodmFyIGUsbj0tMSxpPTAscj10Lmxlbmd0aCxvPS0xLzA7KytuPHI7KShlPSt0W25dWzFdKT5vJiYobz1lLGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gTFAodCl7dmFyIGU9dC5tYXAoUFApO3JldHVybiBUUCh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gUFAodCl7Zm9yKHZhciBlLG49MCxpPS0xLHI9dC5sZW5ndGg7KytpPHI7KShlPSt0W2ldWzFdKSYmKG4rPWUpO3JldHVybiBufWZ1bmN0aW9uIE5QKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBJUCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBSUCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBPUCgpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIHpQKHQpe3QuVT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gRFAodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIEJQKHQsZSl7dmFyIG49ZSxpPWUuTCxyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5MPWkuUixuLkwmJihuLkwuVT1uKSxpLlI9bn1mdW5jdGlvbiBIUCh0KXtmb3IoO3QuTDspdD10Lkw7cmV0dXJuIHR9ZnVuY3Rpb24gRlAodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz11Ti5wdXNoKHIpLTE7cmV0dXJuIHIubGVmdD10LHIucmlnaHQ9ZSxuJiZVUChyLHQsZSxuKSxpJiZVUChyLGUsdCxpKSxsTlt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxsTltlLmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxyfWZ1bmN0aW9uIFZQKHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiBVUCh0LGUsbixpKXt0WzBdfHx0WzFdP3QubGVmdD09PW4/dFsxXT1pOnRbMF09aToodFswXT1pLHQubGVmdD1lLHQucmlnaHQ9bil9ZnVuY3Rpb24galAodCxlLG4saSxyKXt2YXIgbyxhPXRbMF0scz10WzFdLGw9YVswXSxjPWFbMV0sdT0wLGg9MSxkPXNbMF0tbCxwPXNbMV0tYztpZihvPWUtbCxkfHwhKG8+MCkpe2lmKG8vPWQsZDwwKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9ZWxzZSBpZihkPjApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1pZihvPWktbCxkfHwhKG88MCkpe2lmKG8vPWQsZDwwKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9ZWxzZSBpZihkPjApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1pZihvPW4tYyxwfHwhKG8+MCkpe2lmKG8vPXAscDwwKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9ZWxzZSBpZihwPjApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1pZihvPXItYyxwfHwhKG88MCkpe2lmKG8vPXAscDwwKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9ZWxzZSBpZihwPjApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1yZXR1cm4hKHU+MHx8aDwxKXx8KHU+MCYmKHRbMF09W2wrdSpkLGMrdSpwXSksaDwxJiYodFsxXT1bbCtoKmQsYytoKnBdKSwhMCl9fX19fWZ1bmN0aW9uIEdQKHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gV1AodCxlKXt2YXIgbj10LnNpdGUsaT1lLmxlZnQscj1lLnJpZ2h0O3JldHVybiBuPT09ciYmKHI9aSxpPW4pLHI/TWF0aC5hdGFuMihyWzFdLWlbMV0sclswXS1pWzBdKToobj09PWk/KGk9ZVsxXSxyPWVbMF0pOihpPWVbMF0scj1lWzFdKSxNYXRoLmF0YW4yKGlbMF0tclswXSxyWzFdLWlbMV0pKX1mdW5jdGlvbiBxUCh0LGUpe3JldHVybiBlWysoZS5sZWZ0IT09dC5zaXRlKV19ZnVuY3Rpb24gWVAodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfWZQLnByb3RvdHlwZT17YXJlYVN0YXJ0OnFMLGFyZWFFbmQ6cUwsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sdlAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOnlQKHRoaXMsdGhpcy5fdDAsX1AodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHlQKHRoaXMsX1AodGhpcyxuPWdQKHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDp5UCh0aGlzLHRoaXMuX3QwLG49Z1AodGhpcyx0LGUpKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWUsdGhpcy5fdDA9bn19fSwoYlAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodlAucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxlKXt2UC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLGUsdCl9LHhQLnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxpLG4sbyxyKX19LHdQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGg7aWYobilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sZVswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxlWzBdKSwyPT09bil0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLGVbMV0pO2Vsc2UgZm9yKHZhciBpPVNQKHQpLHI9U1AoZSksbz0wLGE9MTthPG47KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oaVswXVtvXSxyWzBdW29dLGlbMV1bb10sclsxXVtvXSx0W2FdLGVbYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LE1QLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsZSksdGhpcy5fY29udGV4dC5saW5lVG8odCxlKTtlbHNle3ZhciBuPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKG4sdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8obixlKX19dGhpcy5feD10LHRoaXMuX3k9ZX19LE9QLnByb3RvdHlwZT17Y29uc3RydWN0b3I6T1AsaW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyO2lmKHQpe2lmKGUuUD10LGUuTj10Lk4sdC5OJiYodC5OLlA9ZSksdC5OPWUsdC5SKXtmb3IodD10LlI7dC5MOyl0PXQuTDt0Lkw9ZX1lbHNlIHQuUj1lO249dH1lbHNlIHRoaXMuXz8odD1IUCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKERQKHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLEJQKHRoaXMsaSkpOihyPWkuTCkmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uTCYmKEJQKHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLERQKHRoaXMsaSkpLG49dC5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5OJiYodC5OLlA9dC5QKSx0LlAmJih0LlAuTj10Lk4pLHQuTj10LlA9bnVsbDt2YXIgZSxuLGkscj10LlUsbz10LkwsYT10LlI7aWYobj1vP2E/SFAoYSk6bzphLHI/ci5MPT09dD9yLkw9bjpyLlI9bjp0aGlzLl89bixvJiZhPyhpPW4uQyxuLkM9dC5DLG4uTD1vLG8uVT1uLG4hPT1hPyhyPW4uVSxuLlU9dC5VLHIuTD10PW4uUixuLlI9YSxhLlU9bik6KG4uVT1yLHI9bix0PW4uUikpOihpPXQuQyx0PW4pLHQmJih0LlU9ciksIWkpaWYodCYmdC5DKXQuQz0hMTtlbHNle2Rve2lmKHQ9PT10aGlzLl8pYnJlYWs7aWYodD09PXIuTCl7aWYoKGU9ci5SKS5DJiYoZS5DPSExLHIuQz0hMCxEUCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLEJQKHRoaXMsZSksZT1yLlIpLGUuQz1yLkMsci5DPWUuUi5DPSExLERQKHRoaXMsciksdD10aGlzLl87YnJlYWt9fWVsc2UgaWYoKGU9ci5MKS5DJiYoZS5DPSExLHIuQz0hMCxCUCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLERQKHRoaXMsZSksZT1yLkwpLGUuQz1yLkMsci5DPWUuTC5DPSExLEJQKHRoaXMsciksdD10aGlzLl87YnJlYWt9ZS5DPSEwLHQ9cixyPXIuVX13aGlsZSghdC5DKTt0JiYodC5DPSExKX19fTt2YXIgWFAsJFA9W107ZnVuY3Rpb24gS1AoKXt6UCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gWlAodCl7dmFyIGU9dC5QLG49dC5OO2lmKGUmJm4pe3ZhciBpPWUuc2l0ZSxyPXQuc2l0ZSxvPW4uc2l0ZTtpZihpIT09byl7dmFyIGE9clswXSxzPXJbMV0sbD1pWzBdLWEsYz1pWzFdLXMsdT1vWzBdLWEsaD1vWzFdLXMsZD0yKihsKmgtYyp1KTtpZighKGQ+PS1kTikpe3ZhciBwPWwqbCtjKmMsZj11KnUraCpoLG09KGgqcC1jKmYpL2QsZz0obCpmLXUqcCkvZCxfPSRQLnBvcCgpfHxuZXcgS1A7Xy5hcmM9dCxfLnNpdGU9cixfLng9bSthLF8ueT0oXy5jeT1nK3MpK01hdGguc3FydChtKm0rZypnKSx0LmNpcmNsZT1fO2Zvcih2YXIgeT1udWxsLHY9Y04uXzt2OylpZihfLnk8di55fHxfLnk9PT12LnkmJl8ueDw9di54KXtpZighdi5MKXt5PXYuUDticmVha312PXYuTH1lbHNle2lmKCF2LlIpe3k9djticmVha312PXYuUn1jTi5pbnNlcnQoeSxfKSx5fHwoWFA9Xyl9fX19ZnVuY3Rpb24gSlAodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KFhQPWUuTiksY04ucmVtb3ZlKGUpLCRQLnB1c2goZSkselAoZSksdC5jaXJjbGU9bnVsbCl9dmFyIFFQPVtdO2Z1bmN0aW9uIHROKCl7elAodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIGVOKHQpe3ZhciBlPVFQLnBvcCgpfHxuZXcgdE47cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gbk4odCl7SlAodCksc04ucmVtb3ZlKHQpLFFQLnB1c2godCkselAodCl9ZnVuY3Rpb24gaU4odCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07bk4odCk7Zm9yKHZhciBsPW87bC5jaXJjbGUmJk1hdGguYWJzKG4tbC5jaXJjbGUueCk8aE4mJk1hdGguYWJzKGktbC5jaXJjbGUuY3kpPGhOOylvPWwuUCxzLnVuc2hpZnQobCksbk4obCksbD1vO3MudW5zaGlmdChsKSxKUChsKTtmb3IodmFyIGM9YTtjLmNpcmNsZSYmTWF0aC5hYnMobi1jLmNpcmNsZS54KTxoTiYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8aE47KWE9Yy5OLHMucHVzaChjKSxuTihjKSxjPWE7cy5wdXNoKGMpLEpQKGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KVVQKChjPXNbdV0pLmVkZ2UsKGw9c1t1LTFdKS5zaXRlLGMuc2l0ZSxyKTsoYz1zW2gtMV0pLmVkZ2U9RlAoKGw9c1swXSkuc2l0ZSxjLnNpdGUsbnVsbCxyKSxaUChsKSxaUChjKX1mdW5jdGlvbiByTih0KXtmb3IodmFyIGUsbixpLHIsbz10WzBdLGE9dFsxXSxzPXNOLl87czspaWYoKGk9b04ocyxhKS1vKT5oTilzPXMuTDtlbHNle2lmKCEoKHI9by1hTihzLGEpKT5oTikpe2k+LWhOPyhlPXMuUCxuPXMpOnI+LWhOPyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7bE5bdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fSkodCk7dmFyIGM9ZU4odCk7aWYoc04uaW5zZXJ0KGUsYyksZXx8bil7aWYoZT09PW4pcmV0dXJuIEpQKGUpLG49ZU4oZS5zaXRlKSxzTi5pbnNlcnQoYyxuKSxjLmVkZ2U9bi5lZGdlPUZQKGUuc2l0ZSxjLnNpdGUpLFpQKGUpLHZvaWQgWlAobik7aWYobil7SlAoZSksSlAobik7dmFyIHU9ZS5zaXRlLGg9dVswXSxkPXVbMV0scD10WzBdLWgsZj10WzFdLWQsbT1uLnNpdGUsZz1tWzBdLWgsXz1tWzFdLWQseT0yKihwKl8tZipnKSx2PXAqcCtmKmYsYj1nKmcrXypfLHg9WyhfKnYtZipiKS95K2gsKHAqYi1nKnYpL3krZF07VVAobi5lZGdlLHUsbSx4KSxjLmVkZ2U9RlAodSx0LG51bGwseCksbi5lZGdlPUZQKHQsbSxudWxsLHgpLFpQKGUpLFpQKG4pfWVsc2UgYy5lZGdlPUZQKGUuc2l0ZSxjLnNpdGUpfX1mdW5jdGlvbiBvTih0LGUpe3ZhciBuPXQuc2l0ZSxpPW5bMF0scj1uWzFdLG89ci1lO2lmKCFvKXJldHVybiBpO3ZhciBhPXQuUDtpZighYSlyZXR1cm4tMS8wO3ZhciBzPShuPWEuc2l0ZSlbMF0sbD1uWzFdLGM9bC1lO2lmKCFjKXJldHVybiBzO3ZhciB1PXMtaSxoPTEvby0xL2MsZD11L2M7cmV0dXJuIGg/KC1kK01hdGguc3FydChkKmQtMipoKih1KnUvKC0yKmMpLWwrYy8yK3Itby8yKSkpL2graTooaStzKS8yfWZ1bmN0aW9uIGFOKHQsZSl7dmFyIG49dC5OO2lmKG4pcmV0dXJuIG9OKG4sZSk7dmFyIGk9dC5zaXRlO3JldHVybiBpWzFdPT09ZT9pWzBdOjEvMH12YXIgc04sbE4sY04sdU4saE49MWUtNixkTj0xZS0xMjtmdW5jdGlvbiBwTih0LGUsbil7cmV0dXJuKHRbMF0tblswXSkqKGVbMV0tdFsxXSktKHRbMF0tZVswXSkqKG5bMV0tdFsxXSl9ZnVuY3Rpb24gZk4odCxlKXtyZXR1cm4gZVsxXS10WzFdfHxlWzBdLXRbMF19ZnVuY3Rpb24gbU4odCxlKXt2YXIgbixpLHIsbz10LnNvcnQoZk4pLnBvcCgpO2Zvcih1Tj1bXSxsTj1uZXcgQXJyYXkodC5sZW5ndGgpLHNOPW5ldyBPUCxjTj1uZXcgT1A7OylpZihyPVhQLG8mJighcnx8b1sxXTxyLnl8fG9bMV09PT1yLnkmJm9bMF08ci54KSlvWzBdPT09biYmb1sxXT09PWl8fChyTihvKSxuPW9bMF0saT1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighcilicmVhaztpTihyLmFyYyl9aWYoKGZ1bmN0aW9uIGEoKXtmb3IodmFyIHQsZSxuLGkscj0wLG89bE4ubGVuZ3RoO3I8bzsrK3IpaWYoKHQ9bE5bcl0pJiYoaT0oZT10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilhW25dPW4sc1tuXT1XUCh0LHVOW2Vbbl1dKTtmb3IoYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzW2VdLXNbdF19KSksbj0wO248aTsrK24pc1tuXT1lW2Fbbl1dO2ZvcihuPTA7bjxpOysrbillW25dPXNbbl19fSkoKSxlKXt2YXIgcz0rZVswXVswXSxsPStlWzBdWzFdLGM9K2VbMV1bMF0sdT0rZVsxXVsxXTshKGZ1bmN0aW9uIGgodCxlLG4saSl7Zm9yKHZhciByLG89dU4ubGVuZ3RoO28tLTspR1Aocj11TltvXSx0LGUsbixpKSYmalAocix0LGUsbixpKSYmKE1hdGguYWJzKHJbMF1bMF0tclsxXVswXSk+aE58fE1hdGguYWJzKHJbMF1bMV0tclsxXVsxXSk+aE4pfHxkZWxldGUgdU5bb119KShzLGwsYyx1KSwoZnVuY3Rpb24gZCh0LGUsbixpKXt2YXIgcixvLGEscyxsLGMsdSxoLGQscCxmLG0sZz1sTi5sZW5ndGgsXz0hMDtmb3Iocj0wO3I8ZzsrK3IpaWYobz1sTltyXSl7Zm9yKGE9by5zaXRlLHM9KGw9by5oYWxmZWRnZXMpLmxlbmd0aDtzLS07KXVOW2xbc11dfHxsLnNwbGljZShzLDEpO2ZvcihzPTAsYz1sLmxlbmd0aDtzPGM7KWY9KHA9WVAobyx1TltsW3NdXSkpWzBdLG09cFsxXSxoPSh1PXFQKG8sdU5bbFsrK3MlY11dKSlbMF0sZD11WzFdLChNYXRoLmFicyhmLWgpPmhOfHxNYXRoLmFicyhtLWQpPmhOKSYmKGwuc3BsaWNlKHMsMCx1Ti5wdXNoKFZQKGEscCxNYXRoLmFicyhmLXQpPGhOJiZpLW0+aE4/W3QsTWF0aC5hYnMoaC10KTxoTj9kOmldOk1hdGguYWJzKG0taSk8aE4mJm4tZj5oTj9bTWF0aC5hYnMoZC1pKTxoTj9oOm4saV06TWF0aC5hYnMoZi1uKTxoTiYmbS1lPmhOP1tuLE1hdGguYWJzKGgtbik8aE4/ZDplXTpNYXRoLmFicyhtLWUpPGhOJiZmLXQ+aE4/W01hdGguYWJzKGQtZSk8aE4/aDp0LGVdOm51bGwpKS0xKSwrK2MpO2MmJihfPSExKX1pZihfKXt2YXIgeSx2LGIseD0xLzA7Zm9yKHI9MCxfPW51bGw7cjxnOysrcikobz1sTltyXSkmJihiPSh5PShhPW8uc2l0ZSlbMF0tdCkqeSsodj1hWzFdLWUpKnYpPHgmJih4PWIsXz1vKTtpZihfKXt2YXIgdz1bdCxlXSxTPVt0LGldLE09W24saV0sRT1bbixlXTtfLmhhbGZlZGdlcy5wdXNoKHVOLnB1c2goVlAoYT1fLnNpdGUsdyxTKSktMSx1Ti5wdXNoKFZQKGEsUyxNKSktMSx1Ti5wdXNoKFZQKGEsTSxFKSktMSx1Ti5wdXNoKFZQKGEsRSx3KSktMSl9fWZvcihyPTA7cjxnOysrcikobz1sTltyXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBsTltyXSl9KShzLGwsYyx1KX10aGlzLmVkZ2VzPXVOLHRoaXMuY2VsbHM9bE4sc049Y049dU49bE49bnVsbH1mdW5jdGlvbiBnTih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gX04odCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy50cmFuc2Zvcm09bn1mdW5jdGlvbiB5Tih0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59bU4ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjptTixwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lLmhhbGZlZGdlcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBxUChlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aWYobz0ocj1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgcixvLGEscz1uLnNpdGUsbD0tMSxjPWVbcltvLTFdXSx1PWMubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQ7KytsPG87KWE9dSx1PShjPWVbcltsXV0pLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0LGEmJnUmJmk8YS5pbmRleCYmaTx1LmluZGV4JiZwTihzLGEsdSk8MCYmdC5wdXNoKFtzLmRhdGEsYS5kYXRhLHUuZGF0YV0pfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KSl9LGZpbmQ6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyLG89dGhpcyxhPW8uX2ZvdW5kfHwwLHM9by5jZWxscy5sZW5ndGg7IShyPW8uY2VsbHNbYV0pOylpZigrK2E+PXMpcmV0dXJuIG51bGw7dmFyIGw9dC1yLnNpdGVbMF0sYz1lLXIuc2l0ZVsxXSx1PWwqbCtjKmM7ZG97cj1vLmNlbGxzW2k9YV0sYT1udWxsLHIuaGFsZmVkZ2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW8uZWRnZXNbbl0scz1pLmxlZnQ7aWYocyE9PXIuc2l0ZSYmc3x8KHM9aS5yaWdodCkpe3ZhciBsPXQtc1swXSxjPWUtc1sxXSxoPWwqbCtjKmM7aDx1JiYodT1oLGE9cy5pbmRleCl9fSkpfXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gby5fZm91bmQ9aSxudWxsPT1ufHx1PD1uKm4/ci5zaXRlOm51bGx9fSx5Ti5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnlOLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyB5Tih0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3IHlOKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIHZOPW5ldyB5TigxLDAsMCk7ZnVuY3Rpb24gYk4odCl7Zm9yKDshdC5fX3pvb207KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiB2TjtyZXR1cm4gdC5fX3pvb219ZnVuY3Rpb24geE4oKXt1dS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB3Tigpe3V1LnByZXZlbnREZWZhdWx0KCksdXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gU04oKXtyZXR1cm4hdXUuY3RybEtleSYmIXV1LmJ1dHRvbn1mdW5jdGlvbiBNTigpe3ZhciB0PXRoaXM7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PXQub3duZXJTVkdFbGVtZW50fHx0KS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW3QuY2xpZW50V2lkdGgsdC5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBFTigpe3JldHVybiB0aGlzLl9fem9vbXx8dk59ZnVuY3Rpb24gVE4oKXtyZXR1cm4tdXUuZGVsdGFZKigxPT09dXUuZGVsdGFNb2RlPy4wNTp1dS5kZWx0YU1vZGU/MTouMDAyKX1mdW5jdGlvbiBDTigpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBBTih0LGUsbil7dmFyIGk9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0scj10LmludmVydFgoZVsxXVswXSktblsxXVswXSxvPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLGE9dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKHI+aT8oaStyKS8yOk1hdGgubWluKDAsaSl8fE1hdGgubWF4KDAsciksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9ZnVuY3Rpb24ga04oKXt2YXIgdCxlLG49U04saT1NTixyPUFOLG89VE4sYT1DTixzPVswLDEvMF0sbD1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSxjPTI1MCx1PW9wLGg9bGMoInN0YXJ0Iiwiem9vbSIsImVuZCIpLGQ9NTAwLHA9MDtmdW5jdGlvbiBmKHQpe3QucHJvcGVydHkoIl9fem9vbSIsRU4pLm9uKCJ3aGVlbC56b29tIix4KS5vbigibW91c2Vkb3duLnpvb20iLHcpLm9uKCJkYmxjbGljay56b29tIixTKS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuem9vbSIsTSkub24oInRvdWNobW92ZS56b29tIixFKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixUKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gbSh0LGUpe3JldHVybihlPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlKSkpPT09dC5rP3Q6bmV3IHlOKGUsdC54LHQueSl9ZnVuY3Rpb24gZyh0LGUsbil7dmFyIGk9ZVswXS1uWzBdKnQuayxyPWVbMV0tblsxXSp0Lms7cmV0dXJuIGk9PT10LngmJnI9PT10Lnk/dDpuZXcgeU4odC5rLGkscil9ZnVuY3Rpb24gXyh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB5KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7dih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsbz12KHQsciksYT1pLmFwcGx5KHQscikscz1udWxsPT1uP18oYSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LHIpOm4sbD1NYXRoLm1heChhWzFdWzBdLWFbMF1bMF0sYVsxXVsxXS1hWzBdWzFdKSxjPXQuX196b29tLGg9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LHIpOmUsZD11KGMuaW52ZXJ0KHMpLmNvbmNhdChsL2MuayksaC5pbnZlcnQocykuY29uY2F0KGwvaC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9aDtlbHNle3ZhciBlPWQodCksbj1sL2VbMl07dD1uZXcgeU4obixzWzBdLWVbMF0qbixzWzFdLWVbMV0qbil9by56b29tKG51bGwsdCl9fSkpfWZ1bmN0aW9uIHYodCxlLG4pe3JldHVybiFuJiZ0Ll9fem9vbWluZ3x8bmV3IGIodCxlKX1mdW5jdGlvbiBiKHQsZSl7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD1pLmFwcGx5KHQsZSksdGhpcy50YXBzPTB9ZnVuY3Rpb24geCgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD12KHRoaXMsYXJndW1lbnRzKSxlPXRoaXMuX196b29tLGk9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUuaypNYXRoLnBvdygyLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLGE9YWgodGhpcyk7aWYodC53aGVlbCl0Lm1vdXNlWzBdWzBdPT09YVswXSYmdC5tb3VzZVswXVsxXT09PWFbMV18fCh0Lm1vdXNlWzFdPWUuaW52ZXJ0KHQubW91c2VbMF09YSkpLGNsZWFyVGltZW91dCh0LndoZWVsKTtlbHNle2lmKGUuaz09PWkpcmV0dXJuO3QubW91c2U9W2EsZS5pbnZlcnQoYSldLFZwKHRoaXMpLHQuc3RhcnQoKX13TigpLHQud2hlZWw9c2V0VGltZW91dChjLDE1MCksdC56b29tKCJtb3VzZSIscihnKG0oZSxpKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiBjKCl7dC53aGVlbD1udWxsLHQuZW5kKCl9fWZ1bmN0aW9uIHcoKXtpZighZSYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXYodGhpcyxhcmd1bWVudHMsITApLGk9U3UodXUudmlldykub24oIm1vdXNlbW92ZS56b29tIixjLCEwKS5vbigibW91c2V1cC56b29tIix1LCEwKSxvPWFoKHRoaXMpLGE9dXUuY2xpZW50WCxzPXV1LmNsaWVudFk7aGgodXUudmlldykseE4oKSx0Lm1vdXNlPVtvLHRoaXMuX196b29tLmludmVydChvKV0sVnAodGhpcyksdC5zdGFydCgpfWZ1bmN0aW9uIGMoKXtpZih3TigpLCF0Lm1vdmVkKXt2YXIgZT11dS5jbGllbnRYLWEsbj11dS5jbGllbnRZLXM7dC5tb3ZlZD1lKmUrbipuPnB9dC56b29tKCJtb3VzZSIscihnKHQudGhhdC5fX3pvb20sdC5tb3VzZVswXT1haCh0LnRoYXQpLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiB1KCl7aS5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxkaCh1dS52aWV3LHQubW92ZWQpLHdOKCksdC5lbmQoKX19ZnVuY3Rpb24gUygpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD10aGlzLl9fem9vbSxlPWFoKHRoaXMpLG89dC5pbnZlcnQoZSksYT10LmsqKHV1LnNoaWZ0S2V5Py41OjIpLHM9cihnKG0odCxhKSxlLG8pLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGwpO3dOKCksYz4wP1N1KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjKS5jYWxsKHkscyxlKTpTdSh0aGlzKS5jYWxsKGYudHJhbnNmb3JtLHMpfX1mdW5jdGlvbiBNKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLGkscixvLGE9dXUudG91Y2hlcyxzPWEubGVuZ3RoLGw9dih0aGlzLGFyZ3VtZW50cyx1dS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1zKTtmb3IoeE4oKSxpPTA7aTxzOysraSlvPVtvPWxoKHRoaXMsYSwocj1hW2ldKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQobyksci5pZGVudGlmaWVyXSxsLnRvdWNoMD9sLnRvdWNoMXx8bC50b3VjaDBbMl09PT1vWzJdfHwobC50b3VjaDE9byxsLnRhcHM9MCk6KGwudG91Y2gwPW8sZT0hMCxsLnRhcHM9MSshIXQpO3QmJih0PWNsZWFyVGltZW91dCh0KSksZSYmKGwudGFwczwyJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Q9bnVsbH0pLGQpKSxWcCh0aGlzKSxsLnN0YXJ0KCkpfX1mdW5jdGlvbiBFKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciBlLG4saSxvLGE9dih0aGlzLGFyZ3VtZW50cykscz11dS5jaGFuZ2VkVG91Y2hlcyxjPXMubGVuZ3RoO2Zvcih3TigpLHQmJih0PWNsZWFyVGltZW91dCh0KSksYS50YXBzPTAsZT0wO2U8YzsrK2UpaT1saCh0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksYS50b3VjaDAmJmEudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2EudG91Y2gwWzBdPWk6YS50b3VjaDEmJmEudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoYS50b3VjaDFbMF09aSk7aWYobj1hLnRoYXQuX196b29tLGEudG91Y2gxKXt2YXIgdT1hLnRvdWNoMFswXSxoPWEudG91Y2gwWzFdLGQ9YS50b3VjaDFbMF0scD1hLnRvdWNoMVsxXSxmPShmPWRbMF0tdVswXSkqZisoZj1kWzFdLXVbMV0pKmYsXz0oXz1wWzBdLWhbMF0pKl8rKF89cFsxXS1oWzFdKSpfO249bShuLE1hdGguc3FydChmL18pKSxpPVsodVswXStkWzBdKS8yLCh1WzFdK2RbMV0pLzJdLG89WyhoWzBdK3BbMF0pLzIsKGhbMV0rcFsxXSkvMl19ZWxzZXtpZighYS50b3VjaDApcmV0dXJuO2k9YS50b3VjaDBbMF0sbz1hLnRvdWNoMFsxXX1hLnpvb20oInRvdWNoIixyKGcobixpLG8pLGEuZXh0ZW50LGwpKX19ZnVuY3Rpb24gVCgpe2lmKHRoaXMuX196b29taW5nKXt2YXIgdCxuLGk9dih0aGlzLGFyZ3VtZW50cykscj11dS5jaGFuZ2VkVG91Y2hlcyxvPXIubGVuZ3RoO2Zvcih4TigpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSksZCksdD0wO3Q8bzsrK3Qpbj1yW3RdLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aWYoaS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDApaS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTtlbHNlIGlmKGkuZW5kKCksMj09PWkudGFwcyl7dmFyIGE9U3UodGhpcykub24oImRibGNsaWNrLnpvb20iKTthJiZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBmLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O2kucHJvcGVydHkoIl9fem9vbSIsRU4pLHQhPT1pP3kodCxlLG4pOmkuaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0sZi5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSxuKXtmLnNjYWxlVG8odCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSksbil9LGYuc2NhbGVUbz1mdW5jdGlvbih0LGUsbil7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXRoaXMuX196b29tLGE9bnVsbD09bj9fKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4scz1vLmludmVydChhKSxjPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHIoZyhtKG8sYyksYSxzKSx0LGwpfSksbil9LGYudHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe2YudHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCl9KSl9LGYudHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4sbyl7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXRoaXMuX196b29tLHM9bnVsbD09bz9fKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBvP28uYXBwbHkodGhpcyxhcmd1bWVudHMpOm87cmV0dXJuIHIodk4udHJhbnNsYXRlKHNbMF0sc1sxXSkuc2NhbGUoYS5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/LWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1lLCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiksdCxsKX0pLG8pfSxiLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtndShuZXcgX04oZix0LHRoaXMudGhhdC5fX3pvb20pLGguYXBwbHksaCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxmLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnTigrdCksZik6b30sZi5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnTighIXQpLGYpOm59LGYudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z04oISF0KSxmKTphfSxmLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdOKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxmKTppfSxmLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzWzBdPSt0WzBdLHNbMV09K3RbMV0sZik6W3NbMF0sc1sxXV19LGYudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsWzBdWzBdPSt0WzBdWzBdLGxbMV1bMF09K3RbMV1bMF0sbFswXVsxXT0rdFswXVsxXSxsWzFdWzFdPSt0WzFdWzFdLGYpOltbbFswXVswXSxsWzBdWzFdXSxbbFsxXVswXSxsWzFdWzFdXV19LGYuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsZik6cn0sZi5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCxmKTpjfSxmLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZik6dX0sZi5vbj1mdW5jdGlvbigpe3ZhciB0PWgub24uYXBwbHkoaCxhcmd1bWVudHMpO3JldHVybiB0PT09aD9mOnR9LGYuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0odD0rdCkqdCxmKTpNYXRoLnNxcnQocCl9LGZ9Yk4ucHJvdG90eXBlPXlOLnByb3RvdHlwZTt2YXIgTE49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmVyc2lvbjoiNS43LjAiLGJpc2VjdDpTbCxiaXNlY3RSaWdodDpTbCxiaXNlY3RMZWZ0Ok1sLGFzY2VuZGluZzpibCxiaXNlY3Rvcjp4bCxjcm9zczpUbCxkZXNjZW5kaW5nOmZ1bmN0aW9uIFBOKHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxkZXZpYXRpb246a2wsZXh0ZW50OkxsLGhpc3RvZ3JhbTpmdW5jdGlvbiBOTigpe3ZhciB0PU9sLGU9TGwsbj1qbDtmdW5jdGlvbiBpKGkpe3ZhciByLG8sYT1pLmxlbmd0aCxzPW5ldyBBcnJheShhKTtmb3Iocj0wO3I8YTsrK3Ipc1tyXT10KGlbcl0scixpKTt2YXIgbD1lKHMpLGM9bFswXSx1PWxbMV0saD1uKHMsYyx1KTtBcnJheS5pc0FycmF5KGgpfHwoaD1VbChjLHUsaCksaD16bChNYXRoLmNlaWwoYy9oKSpoLHUsaCkpO2Zvcih2YXIgZD1oLmxlbmd0aDtoWzBdPD1jOyloLnNoaWZ0KCksLS1kO2Zvcig7aFtkLTFdPnU7KWgucG9wKCksLS1kO3ZhciBwLGY9bmV3IEFycmF5KGQrMSk7Zm9yKHI9MDtyPD1kOysrcikocD1mW3JdPVtdKS54MD1yPjA/aFtyLTFdOmMscC54MT1yPGQ/aFtyXTp1O2ZvcihyPTA7cjxhOysrciljPD0obz1zW3JdKSYmbzw9dSYmZltTbChoLG8sMCxkKV0ucHVzaChpW3JdKTtyZXR1cm4gZn1yZXR1cm4gaS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlJsKGUpLGkpOnR9LGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmwoW3RbMF0sdFsxXV0pLGkpOmV9LGkudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/UmwoTmwuY2FsbCh0KSk6UmwodCksaSk6bn0saX0sdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczpmdW5jdGlvbiBJTih0LGUsbil7cmV0dXJuIHQ9SWwuY2FsbCh0LENsKS5zb3J0KGJsKSxNYXRoLmNlaWwoKG4tZSkvKDIqKEdsKHQsLjc1KS1HbCh0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFNjb3R0OmZ1bmN0aW9uIFJOKHQsZSxuKXtyZXR1cm4gTWF0aC5jZWlsKChuLWUpLygzLjUqa2wodCkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU3R1cmdlczpqbCxtYXg6V2wsbWVhbjpmdW5jdGlvbiBPTih0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj1pLG89LTEsYT0wO2lmKG51bGw9PWUpZm9yKDsrK288aTspaXNOYU4obj1DbCh0W29dKSk/LS1yOmErPW47ZWxzZSBmb3IoOysrbzxpOylpc05hTihuPUNsKGUodFtvXSxvLHQpKSk/LS1yOmErPW47aWYocilyZXR1cm4gYS9yfSxtZWRpYW46ZnVuY3Rpb24gek4odCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz1bXTtpZihudWxsPT1lKWZvcig7KytyPGk7KWlzTmFOKG49Q2wodFtyXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysrcjxpOylpc05hTihuPUNsKGUodFtyXSxyLHQpKSl8fG8ucHVzaChuKTtyZXR1cm4gR2woby5zb3J0KGJsKSwuNSl9LG1lcmdlOnFsLG1pbjpZbCxwYWlyczpmdW5jdGlvbiBETih0LGUpe251bGw9PWUmJihlPUVsKTtmb3IodmFyIG49MCxpPXQubGVuZ3RoLTEscj10WzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT1lKHIscj10Wysrbl0pO3JldHVybiBvfSxwZXJtdXRlOmZ1bmN0aW9uIEJOKHQsZSl7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pO24tLTspaVtuXT10W2Vbbl1dO3JldHVybiBpfSxxdWFudGlsZTpHbCxyYW5nZTp6bCxzY2FuOmZ1bmN0aW9uIEhOKHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxyPTAsbz0wLGE9dFtvXTtmb3IobnVsbD09ZSYmKGU9YmwpOysrcjxuOykoZShpPXRbcl0sYSk8MHx8MCE9PWUoYSxhKSkmJihhPWksbz1yKTtyZXR1cm4gMD09PWUoYSxhKT9vOnZvaWQgMH19LHNodWZmbGU6ZnVuY3Rpb24gRk4odCxlLG4pe2Zvcih2YXIgaSxyLG89KG51bGw9PW4/dC5sZW5ndGg6biktKGU9bnVsbD09ZT8wOitlKTtvOylyPU1hdGgucmFuZG9tKCkqby0tfDAsaT10W28rZV0sdFtvK2VdPXRbcitlXSx0W3IrZV09aTtyZXR1cm4gdH0sc3VtOmZ1bmN0aW9uIFZOKHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPS0xLG89MDtpZihudWxsPT1lKWZvcig7KytyPGk7KShuPSt0W3JdKSYmKG8rPW4pO2Vsc2UgZm9yKDsrK3I8aTspKG49K2UodFtyXSxyLHQpKSYmKG8rPW4pO3JldHVybiBvfSx0aWNrczpGbCx0aWNrSW5jcmVtZW50OlZsLHRpY2tTdGVwOlVsLHRyYW5zcG9zZTpYbCx2YXJpYW5jZTpBbCx6aXA6ZnVuY3Rpb24gVU4oKXtyZXR1cm4gWGwoYXJndW1lbnRzKX0sYXhpc1RvcDpmdW5jdGlvbiBqTih0KXtyZXR1cm4gcmMoMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIEdOKHQpe3JldHVybiByYygyLHQpfSxheGlzQm90dG9tOm9jLGF4aXNMZWZ0OmFjLGJydXNoOkptLGJydXNoWDpmdW5jdGlvbiBXTigpe3JldHVybiBRbSh6bSl9LGJydXNoWTpabSxicnVzaFNlbGVjdGlvbjpLbSxjaG9yZDpmdW5jdGlvbiBxTigpe3ZhciB0PTAsZT1udWxsLG49bnVsbCxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHMsbCxjLHUsaD1yLmxlbmd0aCxkPVtdLHA9emwoaCksZj1bXSxtPVtdLGc9bS5ncm91cHM9bmV3IEFycmF5KGgpLF89bmV3IEFycmF5KGgqaCk7Zm9yKG89MCxjPS0xOysrYzxoOyl7Zm9yKGE9MCx1PS0xOysrdTxoOylhKz1yW2NdW3VdO2QucHVzaChhKSxmLnB1c2goemwoaCkpLG8rPWF9Zm9yKGUmJnAuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShkW3RdLGRbbl0pfSkpLG4mJmYuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIG4ocltlXVt0XSxyW2VdW2ldKX0pKX0pKSxsPShvPW9nKDAscmctdCpoKS9vKT90OnJnL2gsYT0wLGM9LTE7KytjPGg7KXtmb3Iocz1hLHU9LTE7Kyt1PGg7KXt2YXIgeT1wW2NdLHY9Zlt5XVt1XSxiPXJbeV1bdl0seD1hLHc9YSs9YipvO19bdipoK3ldPXtpbmRleDp5LHN1YmluZGV4OnYsc3RhcnRBbmdsZTp4LGVuZEFuZ2xlOncsdmFsdWU6Yn19Z1t5XT17aW5kZXg6eSxzdGFydEFuZ2xlOnMsZW5kQW5nbGU6YSx2YWx1ZTpkW3ldfSxhKz1sfWZvcihjPS0xOysrYzxoOylmb3IodT1jLTE7Kyt1PGg7KXt2YXIgUz1fW3UqaCtjXSxNPV9bYypoK3VdOyhTLnZhbHVlfHxNLnZhbHVlKSYmbS5wdXNoKFMudmFsdWU8TS52YWx1ZT97c291cmNlOk0sdGFyZ2V0OlN9Ontzb3VyY2U6Uyx0YXJnZXQ6TX0pfXJldHVybiBpP20uc29ydChpKTptfXJldHVybiByLnBhZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW9nKDAsZSkscik6dH0sci5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQscik6ZX0sci5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscik6bn0sci5zb3J0Q2hvcmRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bnVsbDooaT1hZyh0KSkuXz10LHIpOmkmJmkuX30scn0scmliYm9uOmZ1bmN0aW9uIFlOKCl7dmFyIHQ9bWcsZT1nZyxuPV9nLGk9eWcscj12ZyxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9c2cuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1pZyxkPXIuYXBwbHkodGhpcyxzKS1pZyxwPXUqdGcoaCksZj11KmVnKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1pZyxfPXIuYXBwbHkodGhpcyxzKS1pZztpZihvfHwobz1hPWZnKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qdGcoZyksbSplZyhnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bGcoK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmxnKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bGcoK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiBYTigpe3ZhciB0LGUsbixpPVtdLHI9W107ZnVuY3Rpb24gbyhuLHIsYSxzKXtpZihyPj1pLmxlbmd0aClyZXR1cm4gbnVsbCE9dCYmbi5zb3J0KHQpLG51bGwhPWU/ZShuKTpuO2Zvcih2YXIgbCxjLHUsaD0tMSxkPW4ubGVuZ3RoLHA9aVtyKytdLGY9d2coKSxtPWEoKTsrK2g8ZDspKHU9Zi5nZXQobD1wKGM9bltoXSkrIiIpKT91LnB1c2goYyk6Zi5zZXQobCxbY10pO3JldHVybiBmLmVhY2goKGZ1bmN0aW9uKHQsZSl7cyhtLGUsbyh0LHIsYSxzKSl9KSksbX1mdW5jdGlvbiBhKHQsbil7aWYoKytuPmkubGVuZ3RoKXJldHVybiB0O3ZhciBvLHM9cltuLTFdO3JldHVybiBudWxsIT1lJiZuPj1pLmxlbmd0aD9vPXQuZW50cmllcygpOihvPVtdLHQuZWFjaCgoZnVuY3Rpb24odCxlKXtvLnB1c2goe2tleTplLHZhbHVlczphKHQsbil9KX0pKSksbnVsbCE9cz9vLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHModC5rZXksZS5rZXkpfSkpOm99cmV0dXJuIG49e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAsU2csTWcpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLEVnLFRnKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gYShvKHQsMCxFZyxUZyksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoKHQpLG59LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiByW2kubGVuZ3RoLTFdPXQsbn0sc29ydFZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gdD1lLG59LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gZT10LG59fX0sc2V0OmtnLG1hcDp3ZyxrZXlzOkxnLHZhbHVlczpmdW5jdGlvbiAkTih0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2godFtuXSk7cmV0dXJuIGV9LGVudHJpZXM6ZnVuY3Rpb24gS04odCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOkJoLHJnYjpVaCxoc2w6JGgsbGFiOnNkLGhjbDpmZCxsY2g6ZnVuY3Rpb24gWk4odCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3BkKHQpOm5ldyBtZChuLGUsdCxudWxsPT1pPzE6aSl9LGdyYXk6ZnVuY3Rpb24gSk4odCxlKXtyZXR1cm4gbmV3IGxkKHQsMCwwLG51bGw9PWU/MTplKX0sY3ViZWhlbGl4OnhkLGNvbnRvdXJzOkhnLGNvbnRvdXJEZW5zaXR5OmZ1bmN0aW9uIFFOKCl7dmFyIHQ9VWcsZT1qZyxuPUdnLGk9OTYwLHI9NTAwLG89MjAsYT0yLHM9MypvLGw9aSsyKnM+PmEsYz1yKzIqcz4+YSx1PUlnKDIwKTtmdW5jdGlvbiBoKGkpe3ZhciByPW5ldyBGbG9hdDMyQXJyYXkobCpjKSxoPW5ldyBGbG9hdDMyQXJyYXkobCpjKTtpLmZvckVhY2goKGZ1bmN0aW9uKGksbyx1KXt2YXIgaD0rdChpLG8sdSkrcz4+YSxkPStlKGksbyx1KStzPj5hLHA9K24oaSxvLHUpO2g+PTAmJmg8bCYmZD49MCYmZDxjJiYocltoK2QqbF0rPXApfSkpLEZnKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSxvPj5hKSxWZyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0sbz4+YSksRmcoe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LG8+PmEpLFZnKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSxvPj5hKSxGZyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0sbz4+YSksVmcoe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LG8+PmEpO3ZhciBwPXUocik7aWYoIUFycmF5LmlzQXJyYXkocCkpe3ZhciBmPVdsKHIpO3A9VWwoMCxmLHApLChwPXpsKDAsTWF0aC5mbG9vcihmL3ApKnAscCkpLnNoaWZ0KCl9cmV0dXJuIEhnKCkudGhyZXNob2xkcyhwKS5zaXplKFtsLGNdKShyKS5tYXAoZCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdC52YWx1ZSo9TWF0aC5wb3coMiwtMiphKSx0LmNvb3JkaW5hdGVzLmZvckVhY2gocCksdH1mdW5jdGlvbiBwKHQpe3QuZm9yRWFjaChmKX1mdW5jdGlvbiBmKHQpe3QuZm9yRWFjaChtKX1mdW5jdGlvbiBtKHQpe3RbMF09dFswXSpNYXRoLnBvdygyLGEpLXMsdFsxXT10WzFdKk1hdGgucG93KDIsYSktc31mdW5jdGlvbiBnKCl7cmV0dXJuIGw9aSsyKihzPTMqbyk+PmEsYz1yKzIqcz4+YSxofXJldHVybiBoLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpJZygrZSksaCk6dH0saC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SWcoK3QpLGgpOmV9LGgud2VpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SWcoK3QpLGgpOm59LGguc2l6ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5baSxyXTt2YXIgZT1NYXRoLmNlaWwodFswXSksbj1NYXRoLmNlaWwodFsxXSk7aWYoIShlPj0wfHxlPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2l6ZSIpO3JldHVybiBpPWUscj1uLGcoKX0saC5jZWxsU2l6ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gMTw8YTtpZighKCh0PSt0KT49MSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNlbGwgc2l6ZSIpO3JldHVybiBhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLGcoKX0saC50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9JZyhQZy5jYWxsKHQpKTpJZyh0KSxoKTp1fSxoLmJhbmR3aWR0aD1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gTWF0aC5zcXJ0KG8qKG8rMSkpO2lmKCEoKHQ9K3QpPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYmFuZHdpZHRoIik7cmV0dXJuIG89TWF0aC5yb3VuZCgoTWF0aC5zcXJ0KDQqdCp0KzEpLTEpLzIpLGcoKX0saH0sZGlzcGF0Y2g6bGMsZHJhZzp2aCxkcmFnRGlzYWJsZTpoaCxkcmFnRW5hYmxlOmRoLGRzdkZvcm1hdDpLZyxjc3ZQYXJzZTpKZyxjc3ZQYXJzZVJvd3M6UWcsY3N2Rm9ybWF0OnRfLGNzdkZvcm1hdEJvZHk6ZV8sY3N2Rm9ybWF0Um93czpuXyxjc3ZGb3JtYXRSb3c6aV8sY3N2Rm9ybWF0VmFsdWU6cl8sdHN2UGFyc2U6YV8sdHN2UGFyc2VSb3dzOnNfLHRzdkZvcm1hdDpsXyx0c3ZGb3JtYXRCb2R5OmNfLHRzdkZvcm1hdFJvd3M6dV8sdHN2Rm9ybWF0Um93OmhfLHRzdkZvcm1hdFZhbHVlOmRfLGF1dG9UeXBlOmZ1bmN0aW9uIHRJKHQpe2Zvcih2YXIgZSBpbiB0KXt2YXIgbixpLHI9dFtlXS50cmltKCk7aWYocilpZigidHJ1ZSI9PT1yKXI9ITA7ZWxzZSBpZigiZmFsc2UiPT09cilyPSExO2Vsc2UgaWYoIk5hTiI9PT1yKXI9TmFOO2Vsc2UgaWYoaXNOYU4obj0rcikpe2lmKCEoaT1yLm1hdGNoKC9eKFstK11cZHsyfSk/XGR7NH0oLVxkezJ9KC1cZHsyfSk/KT8oVFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkezN9KT8pPyhafFstK11cZHsyfTpcZHsyfSk/KT8kLykpKWNvbnRpbnVlO3BfJiZpWzRdJiYhaVs3XSYmKHI9ci5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9ULywiICIpKSxyPW5ldyBEYXRlKHIpfWVsc2Ugcj1uO2Vsc2Ugcj1udWxsO3RbZV09cn1yZXR1cm4gdH0sZWFzZUxpbmVhcjpiZixlYXNlUXVhZDpTZixlYXNlUXVhZEluOnhmLGVhc2VRdWFkT3V0OndmLGVhc2VRdWFkSW5PdXQ6U2YsZWFzZUN1YmljOlRmLGVhc2VDdWJpY0luOk1mLGVhc2VDdWJpY091dDpFZixlYXNlQ3ViaWNJbk91dDpUZixlYXNlUG9seTpYZixlYXNlUG9seUluOnFmLGVhc2VQb2x5T3V0OllmLGVhc2VQb2x5SW5PdXQ6WGYsZWFzZVNpbjpRZixlYXNlU2luSW46WmYsZWFzZVNpbk91dDpKZixlYXNlU2luSW5PdXQ6UWYsZWFzZUV4cDppbSxlYXNlRXhwSW46ZW0sZWFzZUV4cE91dDpubSxlYXNlRXhwSW5PdXQ6aW0sZWFzZUNpcmNsZTphbSxlYXNlQ2lyY2xlSW46cm0sZWFzZUNpcmNsZU91dDpvbSxlYXNlQ2lyY2xlSW5PdXQ6YW0sZWFzZUJvdW5jZTpjbSxlYXNlQm91bmNlSW46bG0sZWFzZUJvdW5jZU91dDpjbSxlYXNlQm91bmNlSW5PdXQ6dW0sZWFzZUJhY2s6Zm0sZWFzZUJhY2tJbjpkbSxlYXNlQmFja091dDpwbSxlYXNlQmFja0luT3V0OmZtLGVhc2VFbGFzdGljOl9tLGVhc2VFbGFzdGljSW46Z20sZWFzZUVsYXN0aWNPdXQ6X20sZWFzZUVsYXN0aWNJbk91dDp5bSxibG9iOmZ1bmN0aW9uIGVJKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihmXyl9LGJ1ZmZlcjpmdW5jdGlvbiBuSSh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4obV8pfSxkc3Y6ZnVuY3Rpb24gaUkodCxlLG4saSl7Mz09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoaT1uLG49dm9pZCAwKTt2YXIgcj1LZyh0KTtyZXR1cm4gX18oZSxuKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gci5wYXJzZSh0LGkpfSkpfSxjc3Y6dl8sdHN2OmJfLGltYWdlOmZ1bmN0aW9uIHJJKHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciByPW5ldyBJbWFnZTtmb3IodmFyIG8gaW4gZSlyW29dPWVbb107ci5vbmVycm9yPWksci5vbmxvYWQ9ZnVuY3Rpb24oKXtuKHIpfSxyLnNyYz10fSkpfSxqc29uOmZ1bmN0aW9uIG9JKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbih4Xyl9LHRleHQ6X18seG1sOlNfLGh0bWw6TV8sc3ZnOkVfLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIGFJKHQsZSl7dmFyIG47ZnVuY3Rpb24gaSgpe3ZhciBpLHIsbz1uLmxlbmd0aCxhPTAscz0wO2ZvcihpPTA7aTxvOysraSlhKz0ocj1uW2ldKS54LHMrPXIueTtmb3IoYT1hL28tdCxzPXMvby1lLGk9MDtpPG87KytpKShyPW5baV0pLngtPWEsci55LT1zfXJldHVybiBudWxsPT10JiYodD0wKSxudWxsPT1lJiYoZT0wKSxpLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7bj10fSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2UsaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LGkpOmV9LGl9LGZvcmNlQ29sbGlkZTpmdW5jdGlvbiBzSSh0KXt2YXIgZSxuLGk9MSxyPTE7ZnVuY3Rpb24gbygpe2Zvcih2YXIgdCxvLHMsbCxjLHUsaCxkPWUubGVuZ3RoLHA9MDtwPHI7KytwKWZvcihvPU5fKGUsel8sRF8pLnZpc2l0QWZ0ZXIoYSksdD0wO3Q8ZDsrK3QpaD0odT1uWyhzPWVbdF0pLmluZGV4XSkqdSxsPXMueCtzLnZ4LGM9cy55K3Mudnksby52aXNpdChmKTtmdW5jdGlvbiBmKHQsZSxuLHIsbyl7dmFyIGE9dC5kYXRhLGQ9dC5yLHA9dStkO2lmKCFhKXJldHVybiBlPmwrcHx8cjxsLXB8fG4+YytwfHxvPGMtcDtpZihhLmluZGV4PnMuaW5kZXgpe3ZhciBmPWwtYS54LWEudngsbT1jLWEueS1hLnZ5LGc9ZipmK20qbTtnPHAqcCYmKDA9PT1mJiYoZys9KGY9Q18oKSkqZiksMD09PW0mJihnKz0obT1DXygpKSptKSxnPShwLShnPU1hdGguc3FydChnKSkpL2cqaSxzLnZ4Kz0oZio9ZykqKHA9KGQqPWQpLyhoK2QpKSxzLnZ5Kz0obSo9ZykqcCxhLnZ4LT1mKihwPTEtcCksYS52eS09bSpwKX19fWZ1bmN0aW9uIGEodCl7aWYodC5kYXRhKXJldHVybiB0LnI9blt0LmRhdGEuaW5kZXhdO2Zvcih2YXIgZT10LnI9MDtlPDQ7KytlKXRbZV0mJnRbZV0ucj50LnImJih0LnI9dFtlXS5yKX1mdW5jdGlvbiBzKCl7aWYoZSl7dmFyIGkscixvPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShvKSxpPTA7aTxvOysraSluWyhyPWVbaV0pLmluZGV4XT0rdChyLGksZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1UXyhudWxsPT10PzE6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LHMoKX0sby5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG8pOnJ9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3Qsbyk6aX0sby5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpUXygrZSkscygpLG8pOnR9LG99LGZvcmNlTGluazpmdW5jdGlvbiBsSSh0KXt2YXIgZSxuLGkscixvLGE9Ql8scz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1UXygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fENfKCksZD1jLnkrYy52eS1sLnktbC52eXx8Q18oKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD13ZyhpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1IXyhoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PUhfKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUXygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUXygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gY0koKXt2YXIgdCxlLG4saSxyPVRfKC0zMCksbz0xLGE9MS8wLHM9LjgxO2Z1bmN0aW9uIGwoaSl7dmFyIHIsbz10Lmxlbmd0aCxhPU5fKHQsRl8sVl8pLnZpc2l0QWZ0ZXIodSk7Zm9yKG49aSxyPTA7cjxvOysrcillPXRbcl0sYS52aXNpdChoKX1mdW5jdGlvbiBjKCl7aWYodCl7dmFyIGUsbixvPXQubGVuZ3RoO2ZvcihpPW5ldyBBcnJheShvKSxlPTA7ZTxvOysrZSlpWyhuPXRbZV0pLmluZGV4XT0rcihuLGUsdCl9fWZ1bmN0aW9uIHUodCl7dmFyIGUsbixyLG8sYSxzPTAsbD0wO2lmKHQubGVuZ3RoKXtmb3Iocj1vPWE9MDthPDQ7KythKShlPXRbYV0pJiYobj1NYXRoLmFicyhlLnZhbHVlKSkmJihzKz1lLnZhbHVlLGwrPW4scis9biplLngsbys9biplLnkpO3QueD1yL2wsdC55PW8vbH1lbHNleyhlPXQpLng9ZS5kYXRhLngsZS55PWUuZGF0YS55O2Rve3MrPWlbZS5kYXRhLmluZGV4XX13aGlsZShlPWUubmV4dCl9dC52YWx1ZT1zfWZ1bmN0aW9uIGgodCxyLGwsYyl7aWYoIXQudmFsdWUpcmV0dXJuITA7dmFyIHU9dC54LWUueCxoPXQueS1lLnksZD1jLXIscD11KnUraCpoO2lmKGQqZC9zPHApcmV0dXJuIHA8YSYmKDA9PT11JiYocCs9KHU9Q18oKSkqdSksMD09PWgmJihwKz0oaD1DXygpKSpoKSxwPG8mJihwPU1hdGguc3FydChvKnApKSxlLnZ4Kz11KnQudmFsdWUqbi9wLGUudnkrPWgqdC52YWx1ZSpuL3ApLCEwO2lmKCEodC5sZW5ndGh8fHA+PWEpKXsodC5kYXRhIT09ZXx8dC5uZXh0KSYmKDA9PT11JiYocCs9KHU9Q18oKSkqdSksMD09PWgmJihwKz0oaD1DXygpKSpoKSxwPG8mJihwPU1hdGguc3FydChvKnApKSk7ZG97dC5kYXRhIT09ZSYmKGUudngrPXUqKGQ9aVt0LmRhdGEuaW5kZXhdKm4vcCksZS52eSs9aCpkKX13aGlsZSh0PXQubmV4dCl9fXJldHVybiBsLmluaXRpYWxpemU9ZnVuY3Rpb24oZSl7dD1lLGMoKX0sbC5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlRfKCt0KSxjKCksbCk6cn0sbC5kaXN0YW5jZU1pbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10KnQsbCk6TWF0aC5zcXJ0KG8pfSxsLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxsKTpNYXRoLnNxcnQoYSl9LGwudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCp0LGwpOk1hdGguc3FydChzKX0sbH0sZm9yY2VSYWRpYWw6ZnVuY3Rpb24gdUkodCxlLG4pe3ZhciBpLHIsbyxhPVRfKC4xKTtmdW5jdGlvbiBzKHQpe2Zvcih2YXIgYT0wLHM9aS5sZW5ndGg7YTxzOysrYSl7dmFyIGw9aVthXSxjPWwueC1lfHwxZS02LHU9bC55LW58fDFlLTYsaD1NYXRoLnNxcnQoYypjK3UqdSksZD0ob1thXS1oKSpyW2FdKnQvaDtsLnZ4Kz1jKmQsbC52eSs9dSpkfX1mdW5jdGlvbiBsKCl7aWYoaSl7dmFyIGUsbj1pLmxlbmd0aDtmb3Iocj1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobiksZT0wO2U8bjsrK2Upb1tlXT0rdChpW2VdLGUsaSkscltlXT1pc05hTihvW2VdKT8wOithKGlbZV0sZSxpKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVRfKCt0KSksbnVsbD09ZSYmKGU9MCksbnVsbD09biYmKG49MCkscy5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2k9dCxsKCl9LHMuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUXygrdCksbCgpLHMpOmF9LHMucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6VF8oK2UpLGwoKSxzKTp0fSxzLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qscyk6ZX0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHMpOm59LHN9LGZvcmNlU2ltdWxhdGlvbjpmdW5jdGlvbiBoSSh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPXdnKCksbD1rcCh1KSxjPWxjKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaChpKXt2YXIgbCxjLHU9dC5sZW5ndGg7dm9pZCAwPT09aSYmKGk9MSk7Zm9yKHZhciBoPTA7aDxpOysraClmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksbD0wO2w8dTsrK2wpbnVsbD09KGM9dFtsXSkuZng/Yy54Kz1jLnZ4Kj1hOihjLng9Yy5meCxjLnZ4PTApLG51bGw9PWMuZnk/Yy55Kz1jLnZ5Kj1hOihjLnk9Yy5meSxjLnZ5PTApO3JldHVybiBlfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixudWxsIT1lLmZ4JiYoZS54PWUuZngpLG51bGwhPWUuZnkmJihlLnk9ZS5meSksaXNOYU4oZS54KXx8aXNOYU4oZS55KSl7dmFyIHI9MTAqTWF0aC5zcXJ0KG4pLG89bipueTtlLng9cipNYXRoLmNvcyhvKSxlLnk9cipNYXRoLnNpbihvKX0oaXNOYU4oZS52eCl8fGlzTmFOKGUudnkpKSYmKGUudng9ZS52eT0wKX19ZnVuY3Rpb24gcChlKXtyZXR1cm4gZS5pbml0aWFsaXplJiZlLmluaXRpYWxpemUodCksZX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGQoKSxlPXt0aWNrOmgscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBsLnJlc3RhcnQodSksZX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBsLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGQoKSxzLmVhY2gocCksZSk6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsZSk6bn0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsZSk6aX0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxlKTorcn0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsZSk6b30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0xLXQsZSk6MS1hfSxmb3JjZTpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PW4/cy5yZW1vdmUodCk6cy5zZXQodCxwKG4pKSxlKTpzLmdldCh0KX0sZmluZDpmdW5jdGlvbihlLG4saSl7dmFyIHIsbyxhLHMsbCxjPTAsdT10Lmxlbmd0aDtmb3IobnVsbD09aT9pPTEvMDppKj1pLGM9MDtjPHU7KytjKShhPShyPWUtKHM9dFtjXSkueCkqcisobz1uLXMueSkqbyk8aSYmKGw9cyxpPWEpO3JldHVybiBsfSxvbjpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KGMub24odCxuKSxlKTpjLm9uKHQpfX19LGZvcmNlWDpmdW5jdGlvbiBkSSh0KXt2YXIgZSxuLGkscj1UXyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9VF8obnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUXygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlRfKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIHBJKHQpe3ZhciBlLG4saSxyPVRfKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgcixvPTAsYT1lLmxlbmd0aDtvPGE7KytvKShyPWVbb10pLnZ5Kz0oaVtvXS1yLnkpKm5bb10qdH1mdW5jdGlvbiBhKCl7aWYoZSl7dmFyIG8sYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSksaT1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pbltvXT1pc05hTihpW29dPSt0KGVbb10sbyxlKSk/MDorcihlW29dLG8sZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1UXyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlRfKCt0KSxhKCksbyk6cn0sby55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6VF8oK2UpLGEoKSxvKTp0fSxvfSxmb3JtYXREZWZhdWx0TG9jYWxlOmJ5LGdldCBmb3JtYXQoKXtyZXR1cm4gbXl9LGdldCBmb3JtYXRQcmVmaXgoKXtyZXR1cm4gZ3l9LGZvcm1hdExvY2FsZTp2eSxmb3JtYXRTcGVjaWZpZXI6c3ksRm9ybWF0U3BlY2lmaWVyOmx5LHByZWNpc2lvbkZpeGVkOnh5LHByZWNpc2lvblByZWZpeDp3eSxwcmVjaXNpb25Sb3VuZDpTeSxnZW9BcmVhOmZ1bmN0aW9uIGZJKHQpe3JldHVybiB1di5yZXNldCgpLGl2KHQsaHYpLDIqdXZ9LGdlb0JvdW5kczpmdW5jdGlvbiBtSSh0KXt2YXIgZSxuLGkscixvLGEscztpZihUdj1Fdj0tKFN2PU12PTEvMCksUHY9W10saXYodCxLdiksbj1Qdi5sZW5ndGgpe2ZvcihQdi5zb3J0KG9iKSxlPTEsbz1baT1QdlswXV07ZTxuOysrZSlhYihpLChyPVB2W2VdKVswXSl8fGFiKGksclsxXSk/KHJiKGlbMF0sclsxXSk+cmIoaVswXSxpWzFdKSYmKGlbMV09clsxXSkscmIoclswXSxpWzFdKT5yYihpWzBdLGlbMV0pJiYoaVswXT1yWzBdKSk6by5wdXNoKGk9cik7Zm9yKGE9LTEvMCxlPTAsaT1vW249by5sZW5ndGgtMV07ZTw9bjtpPXIsKytlKShzPXJiKGlbMV0sKHI9b1tlXSlbMF0pKT5hJiYoYT1zLFN2PXJbMF0sRXY9aVsxXSl9cmV0dXJuIFB2PU52PW51bGwsU3Y9PT0xLzB8fE12PT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW1N2LE12XSxbRXYsVHZdXX0sZ2VvQ2VudHJvaWQ6ZnVuY3Rpb24gZ0kodCl7SXY9UnY9T3Y9enY9RHY9QnY9SHY9RnY9VnY9VXY9anY9MCxpdih0LHNiKTt2YXIgZT1WdixuPVV2LGk9anYscj1lKmUrbipuK2kqaTtyZXR1cm4gcjxreSYmKGU9QnYsbj1IdixpPUZ2LFJ2PEF5JiYoZT1PdixuPXp2LGk9RHYpLChyPWUqZStuKm4raSppKTxreSk/W05hTixOYU5dOltCeShuLGUpKlJ5LCR5KGkvcXkocikpKlJ5XX0sZ2VvQ2lyY2xlOmZ1bmN0aW9uIF9JKCl7dmFyIHQsZSxuPXliKFswLDBdKSxpPXliKDkwKSxyPXliKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPVJ5LG5bMV0qPVJ5fX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqT3ksbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpPeTtyZXR1cm4gdD1bXSxlPXhiKC1hWzBdKk95LC1hWzFdKk95LDApLmludmVydCxUYihvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eWIoWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp5YigrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp5YigrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpIYixnZW9DbGlwQ2lyY2xlOlViLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24geUkoKXt2YXIgdCxlLG4saT0wLHI9MCxvPTk2MCxhPTUwMDtyZXR1cm4gbj17c3RyZWFtOmZ1bmN0aW9uKG4pe3JldHVybiB0JiZlPT09bj90OnQ9V2IoaSxyLG8sYSkoZT1uKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStzWzBdWzBdLHI9K3NbMF1bMV0sbz0rc1sxXVswXSxhPStzWzFdWzFdLHQ9ZT1udWxsLG4pOltbaSxyXSxbbyxhXV19fX0sZ2VvQ2xpcFJlY3RhbmdsZTpXYixnZW9Db250YWluczpmdW5jdGlvbiB2SSh0LGUpe3JldHVybih0JiZveC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP294W3QudHlwZV06c3gpKHQsZSl9LGdlb0Rpc3RhbmNlOnJ4LGdlb0dyYXRpY3VsZTpteCxnZW9HcmF0aWN1bGUxMDpmdW5jdGlvbiBiSSgpe3JldHVybiBteCgpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIHhJKHQsZSl7dmFyIG49dFswXSpPeSxpPXRbMV0qT3kscj1lWzBdKk95LG89ZVsxXSpPeSxhPUh5KGkpLHM9R3koaSksbD1IeShvKSxjPUd5KG8pLHU9YSpIeShuKSxoPWEqR3kobiksZD1sKkh5KHIpLHA9bCpHeShyKSxmPTIqJHkocXkoS3koby1pKSthKmwqS3koci1uKSkpLG09R3koZiksZz1mP2Z1bmN0aW9uKHQpe3ZhciBlPUd5KHQqPWYpL20sbj1HeShmLXQpL20saT1uKnUrZSpkLHI9bipoK2UqcCxvPW4qcytlKmM7cmV0dXJuW0J5KHIsaSkqUnksQnkobyxxeShpKmkrcipyKSkqUnldfTpmdW5jdGlvbigpe3JldHVybltuKlJ5LGkqUnldfTtyZXR1cm4gZy5kaXN0YW5jZT1mLGd9LGdlb0xlbmd0aDpleCxnZW9QYXRoOmZ1bmN0aW9uIHdJKHQsZSl7dmFyIG4saSxyPTQuNTtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiYoImZ1bmN0aW9uIj09dHlwZW9mIHImJmkucG9pbnRSYWRpdXMoK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxpdih0LG4oaSkpKSxpLnJlc3VsdCgpfXJldHVybiBvLmFyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIGl2KHQsbihOeCkpLE54LnJlc3VsdCgpfSxvLm1lYXN1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIGl2KHQsbihtdykpLG13LnJlc3VsdCgpfSxvLmJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gaXYodCxuKER4KSksRHgucmVzdWx0KCl9LG8uY2VudHJvaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGl2KHQsbihydykpLHJ3LnJlc3VsdCgpfSxvLnByb2plY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09ZT8odD1udWxsLGd4KToodD1lKS5zdHJlYW0sbyk6dH0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/KGU9bnVsbCxuZXcgZ3cpOm5ldyBvdyhlPXQpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiZpLnBvaW50UmFkaXVzKHIpLG8pOmV9LG8ucG9pbnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG8pOnJ9LG8ucHJvamVjdGlvbih0KS5jb250ZXh0KGUpfSxnZW9BbGJlcnM6T3csZ2VvQWxiZXJzVXNhOmZ1bmN0aW9uIFNJKCl7dmFyIHQsZSxuLGkscixvLGE9T3coKSxzPVJ3KCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPVJ3KCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrQXksdSsuMTIqZStBeV0sW28tLjIxNCplLUF5LHUrLjIzNCplLUF5XV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZStBeSx1Ky4xNjYqZStBeV0sW28tLjExNSplLUF5LHUrLjIzNCplLUF5XV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHh3KHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd3KHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBTdyh1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE13KHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIE1JKCl7cmV0dXJuIEx3KEJ3KS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3OkJ3LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50OmZ1bmN0aW9uIEVJKCl7cmV0dXJuIEx3KEh3KS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3Okh3LGdlb0NvbmljQ29uZm9ybWFsOmZ1bmN0aW9uIFRJKCl7cmV0dXJuIE53KGp3KS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpqdyxnZW9Db25pY0VxdWFsQXJlYTpSdyxnZW9Db25pY0VxdWFsQXJlYVJhdzpJdyxnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIENJKCl7cmV0dXJuIE53KFd3KS5zY2FsZSgxMzEuMTU0KS5jZW50ZXIoWzAsMTMuOTM4OV0pfSxnZW9Db25pY0VxdWlkaXN0YW50UmF3Old3LGdlb0VxdWFsRWFydGg6ZnVuY3Rpb24gQUkoKXtyZXR1cm4gTHcoWncpLnNjYWxlKDE3Ny4xNTgpfSxnZW9FcXVhbEVhcnRoUmF3Olp3LGdlb0VxdWlyZWN0YW5ndWxhcjpmdW5jdGlvbiBrSSgpe3JldHVybiBMdyhHdykuc2NhbGUoMTUyLjYzKX0sZ2VvRXF1aXJlY3Rhbmd1bGFyUmF3Okd3LGdlb0dub21vbmljOmZ1bmN0aW9uIExJKCl7cmV0dXJuIEx3KEp3KS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpKdyxnZW9JZGVudGl0eTpmdW5jdGlvbiBQSSgpe3ZhciB0LGUsbixpLHIsbyxhLHM9MSxsPTAsYz0wLHU9MSxoPTEsZD0wLHA9bnVsbCxmPTEsbT0xLGc9eXcoe3BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49dihbdCxlXSk7dGhpcy5zdHJlYW0ucG9pbnQoblswXSxuWzFdKX19KSxfPWd4O2Z1bmN0aW9uIHkoKXtyZXR1cm4gZj1zKnUsbT1zKmgsbz1hPW51bGwsdn1mdW5jdGlvbiB2KG4pe3ZhciBpPW5bMF0qZixyPW5bMV0qbTtpZihkKXt2YXIgbz1yKnQtaSplO2k9aSp0K3IqZSxyPW99cmV0dXJuW2krbCxyK2NdfXJldHVybiB2LmludmVydD1mdW5jdGlvbihuKXt2YXIgaT1uWzBdLWwscj1uWzFdLWM7aWYoZCl7dmFyIG89cip0K2kqZTtpPWkqdC1yKmUscj1vfXJldHVybltpL2Ysci9tXX0sdi5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIG8mJmE9PT10P286bz1nKF8oYT10KSl9LHYucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dCxwPW49aT1yPW51bGwseSgpKTpffSx2LmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89bnVsbD09dD8ocD1uPWk9cj1udWxsLGd4KTpXYihwPSt0WzBdWzBdLG49K3RbMF1bMV0saT0rdFsxXVswXSxyPSt0WzFdWzFdKSx5KCkpOm51bGw9PXA/bnVsbDpbW3Asbl0sW2kscl1dfSx2LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LHkoKSk6c30sdi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3RbMF0sYz0rdFsxXSx5KCkpOltsLGNdfSx2LmFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUd5KGQ9biUzNjAqT3kpLHQ9SHkoZCkseSgpKTpkKlJ5fSx2LnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQ/LTE6MSx5KCkpOnU8MH0sdi5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD10Py0xOjEseSgpKTpoPDB9LHYuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHh3KHYsdCxlKX0sdi5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd3KHYsdCxlKX0sdi5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBTdyh2LHQsZSl9LHYuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE13KHYsdCxlKX0sdn0sZ2VvUHJvamVjdGlvbjpMdyxnZW9Qcm9qZWN0aW9uTXV0YXRvcjpQdyxnZW9NZXJjYXRvcjpmdW5jdGlvbiBOSSgpe3JldHVybiBWdyhGdykuc2NhbGUoOTYxL0l5KX0sZ2VvTWVyY2F0b3JSYXc6RncsZ2VvTmF0dXJhbEVhcnRoMTpmdW5jdGlvbiBJSSgpe3JldHVybiBMdyhRdykuc2NhbGUoMTc1LjI5NSl9LGdlb05hdHVyYWxFYXJ0aDFSYXc6UXcsZ2VvT3J0aG9ncmFwaGljOmZ1bmN0aW9uIFJJKCl7cmV0dXJuIEx3KHRTKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1Jhdzp0UyxnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIE9JKCl7cmV0dXJuIEx3KGVTKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfSxnZW9TdGVyZW9ncmFwaGljUmF3OmVTLGdlb1RyYW5zdmVyc2VNZXJjYXRvcjpmdW5jdGlvbiB6SSgpe3ZhciB0PVZ3KG5TKSxlPXQuY2VudGVyLG49dC5yb3RhdGU7cmV0dXJuIHQuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoWy10WzFdLHRbMF1dKTpbKHQ9ZSgpKVsxXSwtdFswXV19LHQucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oW3RbMF0sdFsxXSx0Lmxlbmd0aD4yP3RbMl0rOTA6OTBdKTpbKHQ9bigpKVswXSx0WzFdLHRbMl0tOTBdfSxuKFswLDAsOTBdKS5zY2FsZSgxNTkuMTU1KX0sZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3Om5TLGdlb1JvdGF0aW9uOkViLGdlb1N0cmVhbTppdixnZW9UcmFuc2Zvcm06ZnVuY3Rpb24gREkodCl7cmV0dXJue3N0cmVhbTp5dyh0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gQkkoKXt2YXIgdD1pUyxlPTEsbj0xLGk9ITE7ZnVuY3Rpb24gcihyKXt2YXIgbyxhPTA7ci5lYWNoQWZ0ZXIoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuY2hpbGRyZW47bj8oZS54PShmdW5jdGlvbiBpKHQpe3JldHVybiB0LnJlZHVjZShyUywwKS90Lmxlbmd0aH0pKG4pLGUueT0oZnVuY3Rpb24gcih0KXtyZXR1cm4gMSt0LnJlZHVjZShvUywwKX0pKG4pKTooZS54PW8/YSs9dChlLG8pOjAsZS55PTAsbz1lKX0pKTt2YXIgcz0oZnVuY3Rpb24gbCh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbMF07cmV0dXJuIHR9KShyKSxjPShmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gdH0pKHIpLGg9cy54LXQocyxjKS8yLGQ9Yy54K3QoYyxzKS8yO3JldHVybiByLmVhY2hBZnRlcihpP2Z1bmN0aW9uKHQpe3QueD0odC54LXIueCkqZSx0Lnk9KHIueS10LnkpKm59OmZ1bmN0aW9uKHQpe3QueD0odC54LWgpLyhkLWgpKmUsdC55PSgxLShyLnk/dC55L3IueToxKSkqbn0pfXJldHVybiByLnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITEsZT0rdFswXSxuPSt0WzFdLHIpOmk/bnVsbDpbZSxuXX0sci5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMCxlPSt0WzBdLG49K3RbMV0scik6aT9bZSxuXTpudWxsfSxyfSxoaWVyYXJjaHk6c1MscGFjazpmdW5jdGlvbiBISSgpe3ZhciB0PW51bGwsZT0xLG49MSxpPUZTO2Z1bmN0aW9uIHIocil7cmV0dXJuIHIueD1lLzIsci55PW4vMix0P3IuZWFjaEJlZm9yZShqUyh0KSkuZWFjaEFmdGVyKEdTKGksLjUpKS5lYWNoQmVmb3JlKFdTKDEpKTpyLmVhY2hCZWZvcmUoalMoVVMpKS5lYWNoQWZ0ZXIoR1MoRlMsMSkpLmVhY2hBZnRlcihHUyhpLHIuci9NYXRoLm1pbihlLG4pKSkuZWFjaEJlZm9yZShXUyhNYXRoLm1pbihlLG4pLygyKnIucikpKSxyfXJldHVybiByLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1CUyhlKSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxyKTpbZSxuXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VlMoK3QpLHIpOml9LHJ9LHBhY2tTaWJsaW5nczpmdW5jdGlvbiBGSSh0KXtyZXR1cm4gRFModCksdH0scGFja0VuY2xvc2U6RVMscGFydGl0aW9uOmZ1bmN0aW9uIFZJKCl7dmFyIHQ9MSxlPTEsbj0wLGk9ITE7ZnVuY3Rpb24gcihyKXt2YXIgbz1yLmhlaWdodCsxO3JldHVybiByLngwPXIueTA9bixyLngxPXQsci55MT1lL28sci5lYWNoQmVmb3JlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe2kuY2hpbGRyZW4mJllTKGksaS54MCx0KihpLmRlcHRoKzEpL2UsaS54MSx0KihpLmRlcHRoKzIpL2UpO3ZhciByPWkueDAsbz1pLnkwLGE9aS54MS1uLHM9aS55MS1uO2E8ciYmKHI9YT0ocithKS8yKSxzPG8mJihvPXM9KG8rcykvMiksaS54MD1yLGkueTA9byxpLngxPWEsaS55MT1zfX0pKGUsbykpLGkmJnIuZWFjaEJlZm9yZShxUykscn1yZXR1cm4gci5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hIXQscik6aX0sci5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStuWzBdLGU9K25bMV0scik6W3QsZV19LHIucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxyKTpufSxyfSxzdHJhdGlmeTpmdW5jdGlvbiBVSSgpe3ZhciB0PUtTLGU9WlM7ZnVuY3Rpb24gbihuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PW4ubGVuZ3RoLGg9bmV3IEFycmF5KHUpLGQ9e307Zm9yKHI9MDtyPHU7KytyKXM9aFtyXT1uZXcgaFMoaT1uW3JdKSxudWxsIT0obD10KGkscixuKSkmJihsKz0iIikmJihkW2M9IiQiKyhzLmlkPWwpXT1jIGluIGQ/JFM6cyk7Zm9yKHI9MDtyPHU7KytyKWlmKHM9aFtyXSxudWxsIT0obD1lKG5bcl0scixuKSkmJihsKz0iIikpe2lmKCEoYT1kWyIkIitsXSkpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2wpO2lmKGE9PT0kUyl0aHJvdyBuZXcgRXJyb3IoImFtYmlndW91czogIitsKTthLmNoaWxkcmVuP2EuY2hpbGRyZW4ucHVzaChzKTphLmNoaWxkcmVuPVtzXSxzLnBhcmVudD1hfWVsc2V7aWYobyl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIHJvb3RzIik7bz1zfWlmKCFvKXRocm93IG5ldyBFcnJvcigibm8gcm9vdCIpO2lmKG8ucGFyZW50PVhTLG8uZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC5kZXB0aD10LnBhcmVudC5kZXB0aCsxLC0tdX0pKS5lYWNoQmVmb3JlKHVTKSxvLnBhcmVudD1udWxsLHU+MCl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIik7cmV0dXJuIG99cmV0dXJuIG4uaWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9SFMoZSksbik6dH0sbi5wYXJlbnRJZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1IUyh0KSxuKTplfSxufSx0cmVlOmZ1bmN0aW9uIGpJKCl7dmFyIHQ9SlMsZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBpTSh0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IGlNKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBpTShudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9dE0ocyksbz1RUyhvKSxzJiZvOylsPVFTKGwpLChhPXRNKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKGVNKG5NKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiF0TShhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhUVMobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24gR0koKXt2YXIgdD1zTSxlPSExLG49MSxpPTEscj1bMF0sbz1GUyxhPUZTLHM9RlMsbD1GUyxjPUZTO2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQueDA9dC55MD0wLHQueDE9bix0LnkxPWksdC5lYWNoQmVmb3JlKGgpLHI9WzBdLGUmJnQuZWFjaEJlZm9yZShxUyksdH1mdW5jdGlvbiBoKGUpe3ZhciBuPXJbZS5kZXB0aF0saT1lLngwK24sdT1lLnkwK24saD1lLngxLW4sZD1lLnkxLW47aDxpJiYoaT1oPShpK2gpLzIpLGQ8dSYmKHU9ZD0odStkKS8yKSxlLngwPWksZS55MD11LGUueDE9aCxlLnkxPWQsZS5jaGlsZHJlbiYmKG49cltlLmRlcHRoKzFdPW8oZSkvMixpKz1jKGUpLW4sdSs9YShlKS1uLChoLT1zKGUpLW4pPGkmJihpPWg9KGkraCkvMiksKGQtPWwoZSktbik8dSYmKHU9ZD0odStkKS8yKSx0KGUsaSx1LGgsZCkpfXJldHVybiB1LnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSEhdCx1KTplfSx1LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSx1KTpbbixpXX0sdS50aWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PUhTKGUpLHUpOnR9LHUucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdJbm5lcih0KS5wYWRkaW5nT3V0ZXIodCk6dS5wYWRkaW5nSW5uZXIoKX0sdS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWUygrdCksdSk6b30sdS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nVG9wKHQpLnBhZGRpbmdSaWdodCh0KS5wYWRkaW5nQm90dG9tKHQpLnBhZGRpbmdMZWZ0KHQpOnUucGFkZGluZ1RvcCgpfSx1LnBhZGRpbmdUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWUygrdCksdSk6YX0sdS5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWUygrdCksdSk6c30sdS5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VlMoK3QpLHUpOmx9LHUucGFkZGluZ0xlZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWUygrdCksdSk6Y30sdX0sdHJlZW1hcEJpbmFyeTpmdW5jdGlvbiBXSSh0LGUsbixpLHIpe3ZhciBvLGEscz10LmNoaWxkcmVuLGw9cy5sZW5ndGgsYz1uZXcgQXJyYXkobCsxKTtmb3IoY1swXT1hPW89MDtvPGw7KytvKWNbbysxXT1hKz1zW29dLnZhbHVlOyEoZnVuY3Rpb24gdChlLG4saSxyLG8sYSxsKXtpZihlPj1uLTEpe3ZhciB1PXNbZV07cmV0dXJuIHUueDA9cix1LnkwPW8sdS54MT1hLHZvaWQodS55MT1sKX1mb3IodmFyIGg9Y1tlXSxkPWkvMitoLHA9ZSsxLGY9bi0xO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6WVMsdHJlZW1hcFNsaWNlOnJNLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gcUkodCxlLG4saSxyKXsoMSZ0LmRlcHRoP3JNOllTKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6c00sdHJlZW1hcFJlc3F1YXJpZnk6bE0saW50ZXJwb2xhdGU6amQsaW50ZXJwb2xhdGVBcnJheTpmdW5jdGlvbiBZSSh0LGUpe3JldHVybihPZChlKT9SZDp6ZCkodCxlKX0saW50ZXJwb2xhdGVCYXNpczpNZCxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOkVkLGludGVycG9sYXRlRGF0ZTpEZCxpbnRlcnBvbGF0ZURpc2NyZXRlOmZ1bmN0aW9uIFhJKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fSxpbnRlcnBvbGF0ZUh1ZTpmdW5jdGlvbiAkSSh0LGUpe3ZhciBuPUFkKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSxpbnRlcnBvbGF0ZU51bWJlcjpCZCxpbnRlcnBvbGF0ZU51bWJlckFycmF5OlJkLGludGVycG9sYXRlT2JqZWN0OkhkLGludGVycG9sYXRlUm91bmQ6R2QsaW50ZXJwb2xhdGVTdHJpbmc6VWQsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6UWQsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6ZXAsaW50ZXJwb2xhdGVab29tOm9wLGludGVycG9sYXRlUmdiOkxkLGludGVycG9sYXRlUmdiQmFzaXM6TmQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpJZCxpbnRlcnBvbGF0ZUhzbDpzcCxpbnRlcnBvbGF0ZUhzbExvbmc6bHAsaW50ZXJwb2xhdGVMYWI6Y3AsaW50ZXJwb2xhdGVIY2w6aHAsaW50ZXJwb2xhdGVIY2xMb25nOmRwLGludGVycG9sYXRlQ3ViZWhlbGl4OmdwLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpfcCxwaWVjZXdpc2U6ZnVuY3Rpb24gS0kodCxlKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoLTEscj1lWzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT10KHIscj1lWysrbl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKGktMSxNYXRoLmZsb29yKHQqPWkpKSk7cmV0dXJuIG9bZV0odC1lKX19LHF1YW50aXplOmZ1bmN0aW9uIFpJKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6ZmcscG9seWdvbkFyZWE6ZnVuY3Rpb24gSkkodCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gUUkodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89MCxhPTAscz10W3ItMV0sbD0wOysraTxyOylsKz1uPShlPXMpWzBdKihzPXRbaV0pWzFdLXNbMF0qZVsxXSxvKz0oZVswXStzWzBdKSpuLGErPShlWzFdK3NbMV0pKm47cmV0dXJuW28vKGwqPTMpLGEvbF19LHBvbHlnb25IdWxsOmZ1bmN0aW9uIHRSKHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQodU0pLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWhNKGkpLGE9aE0ocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBlUih0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24gblIodCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9b1swXSxzPW9bMV0sbD0wOysraTxyOyllPWEsbj1zLGUtPWE9KG89dFtpXSlbMF0sbi09cz1vWzFdLGwrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gbH0scXVhZHRyZWU6Tl8scmFuZG9tVW5pZm9ybTpwTSxyYW5kb21Ob3JtYWw6Zk0scmFuZG9tTG9nTm9ybWFsOm1NLHJhbmRvbUJhdGVzOl9NLHJhbmRvbUlyd2luSGFsbDpnTSxyYW5kb21FeHBvbmVudGlhbDp5TSxzY2FsZUJhbmQ6VE0sc2NhbGVQb2ludDpBTSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoZSl7dmFyIG47ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXNOYU4odD0rdCk/bjp0fXJldHVybiBpLmludmVydD1pLGkuZG9tYWluPWkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9d00uY2FsbCh0LGtNKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLnVua25vd24obil9LGU9YXJndW1lbnRzLmxlbmd0aD93TS5jYWxsKGUsa00pOlswLDFdLEZNKGkpfSxzY2FsZUxpbmVhcjpWTSxzY2FsZUxvZzpLTSxzY2FsZVN5bWxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9UU0oRE0oKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiB6TShlLHQoKSkuY29uc3RhbnQoZS5jb25zdGFudCgpKX0sdk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZU9yZGluYWw6RU0sc2NhbGVJbXBsaWNpdDpNTSxzY2FsZVBvdzpyRSxzY2FsZVNxcnQ6ZnVuY3Rpb24gaVIoKXtyZXR1cm4gckUuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVRdWFudGlsZTpvRSxzY2FsZVF1YW50aXplOmFFLHNjYWxlVGhyZXNob2xkOmZ1bmN0aW9uIHQoKXt2YXIgZSxuPVsuNV0saT1bMCwxXSxyPTE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9dD9pW1NsKG4sdCwwLHIpXTplfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1TTS5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsaS5sZW5ndGgtMSksbyk6bi5zbGljZSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPVNNLmNhbGwodCkscj1NYXRoLm1pbihuLmxlbmd0aCxpLmxlbmd0aC0xKSxvKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWkuaW5kZXhPZih0KTtyZXR1cm5bbltlLTFdLG5bZV1dfSxvLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihuKS5yYW5nZShpKS51bmtub3duKGUpfSx2TS5hcHBseShvLGFyZ3VtZW50cyl9LHNjYWxlVGltZTpjQSxzY2FsZVV0YzpmdW5jdGlvbiByUigpe3JldHVybiB2TS5hcHBseShsQShFVCx3VCxzVCxyVCxlVCxKRSx2RSxoRSxSVCkuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbDpmdW5jdGlvbiB0KCl7dmFyIGU9Rk0odUEoKShQTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaEEoZSx0KCkpfSxiTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbExvZzpmdW5jdGlvbiB0KCl7dmFyIGU9JE0odUEoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBoQShlLHQoKSkuYmFzZShlLmJhc2UoKSl9LGJNLmFwcGx5KGUsYXJndW1lbnRzKX0sc2NhbGVTZXF1ZW50aWFsUG93OmRBLHNjYWxlU2VxdWVudGlhbFNxcnQ6ZnVuY3Rpb24gb1IoKXtyZXR1cm4gZEEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVTZXF1ZW50aWFsU3ltbG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1RTSh1QSgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGhBKGUsdCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxiTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVBNO2Z1bmN0aW9uIGkodCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuKChTbChlLHQpLTEpLyhlLmxlbmd0aC0xKSl9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4scj0wLG89dC5sZW5ndGg7cjxvOysrciludWxsPT0obj10W3JdKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KGJsKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihlKX0sYk0uYXBwbHkoaSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZzpmdW5jdGlvbiB0KCl7dmFyIGU9Rk0ocEEoKShQTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaEEoZSx0KCkpfSxiTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlRGl2ZXJnaW5nTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT0kTShwQSgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGhBKGUsdCgpKS5iYXNlKGUuYmFzZSgpKX0sYk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZ1BvdzpmQSxzY2FsZURpdmVyZ2luZ1NxcnQ6ZnVuY3Rpb24gYVIoKXtyZXR1cm4gZkEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVEaXZlcmdpbmdTeW1sb2c6ZnVuY3Rpb24gdCgpe3ZhciBlPVFNKHBBKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gaEEoZSx0KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LGJNLmFwcGx5KGUsYXJndW1lbnRzKX0sdGlja0Zvcm1hdDpITSxzY2hlbWVDYXRlZ29yeTEwOmdBLHNjaGVtZUFjY2VudDpfQSxzY2hlbWVEYXJrMjp5QSxzY2hlbWVQYWlyZWQ6dkEsc2NoZW1lUGFzdGVsMTpiQSxzY2hlbWVQYXN0ZWwyOnhBLHNjaGVtZVNldDE6d0Esc2NoZW1lU2V0MjpTQSxzY2hlbWVTZXQzOk1BLHNjaGVtZVRhYmxlYXUxMDpFQSxpbnRlcnBvbGF0ZUJyQkc6QUEsc2NoZW1lQnJCRzpDQSxpbnRlcnBvbGF0ZVBSR246TEEsc2NoZW1lUFJHbjprQSxpbnRlcnBvbGF0ZVBpWUc6TkEsc2NoZW1lUGlZRzpQQSxpbnRlcnBvbGF0ZVB1T3I6UkEsc2NoZW1lUHVPcjpJQSxpbnRlcnBvbGF0ZVJkQnU6ekEsc2NoZW1lUmRCdTpPQSxpbnRlcnBvbGF0ZVJkR3k6QkEsc2NoZW1lUmRHeTpEQSxpbnRlcnBvbGF0ZVJkWWxCdTpGQSxzY2hlbWVSZFlsQnU6SEEsaW50ZXJwb2xhdGVSZFlsR246VUEsc2NoZW1lUmRZbEduOlZBLGludGVycG9sYXRlU3BlY3RyYWw6R0Esc2NoZW1lU3BlY3RyYWw6akEsaW50ZXJwb2xhdGVCdUduOnFBLHNjaGVtZUJ1R246V0EsaW50ZXJwb2xhdGVCdVB1OlhBLHNjaGVtZUJ1UHU6WUEsaW50ZXJwb2xhdGVHbkJ1OktBLHNjaGVtZUduQnU6JEEsaW50ZXJwb2xhdGVPclJkOkpBLHNjaGVtZU9yUmQ6WkEsaW50ZXJwb2xhdGVQdUJ1R246dGssc2NoZW1lUHVCdUduOlFBLGludGVycG9sYXRlUHVCdTpuayxzY2hlbWVQdUJ1OmVrLGludGVycG9sYXRlUHVSZDpyayxzY2hlbWVQdVJkOmlrLGludGVycG9sYXRlUmRQdTphayxzY2hlbWVSZFB1Om9rLGludGVycG9sYXRlWWxHbkJ1OmxrLHNjaGVtZVlsR25CdTpzayxpbnRlcnBvbGF0ZVlsR246dWssc2NoZW1lWWxHbjpjayxpbnRlcnBvbGF0ZVlsT3JCcjpkayxzY2hlbWVZbE9yQnI6aGssaW50ZXJwb2xhdGVZbE9yUmQ6Zmssc2NoZW1lWWxPclJkOnBrLGludGVycG9sYXRlQmx1ZXM6Z2ssc2NoZW1lQmx1ZXM6bWssaW50ZXJwb2xhdGVHcmVlbnM6eWssc2NoZW1lR3JlZW5zOl9rLGludGVycG9sYXRlR3JleXM6Ymssc2NoZW1lR3JleXM6dmssaW50ZXJwb2xhdGVQdXJwbGVzOndrLHNjaGVtZVB1cnBsZXM6eGssaW50ZXJwb2xhdGVSZWRzOk1rLHNjaGVtZVJlZHM6U2ssaW50ZXJwb2xhdGVPcmFuZ2VzOlRrLHNjaGVtZU9yYW5nZXM6RWssaW50ZXJwb2xhdGVDaXZpZGlzOmZ1bmN0aW9uIHNSKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6Q2ssaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIGxSKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gTGsuaD0zNjAqdC0xMDAsTGsucz0xLjUtMS41KmUsTGsubD0uOC0uOSplLExrKyIifSxpbnRlcnBvbGF0ZVdhcm06QWssaW50ZXJwb2xhdGVDb29sOmtrLGludGVycG9sYXRlU2luZWJvdzpmdW5jdGlvbiBjUih0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxQay5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxQay5nPTI1NSooZT1NYXRoLnNpbih0K05rKSkqZSxQay5iPTI1NSooZT1NYXRoLnNpbih0K0lrKSkqZSxQaysiIn0saW50ZXJwb2xhdGVUdXJibzpmdW5jdGlvbiB1Uih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZVZpcmlkaXM6T2ssaW50ZXJwb2xhdGVNYWdtYTp6ayxpbnRlcnBvbGF0ZUluZmVybm86RGssaW50ZXJwb2xhdGVQbGFzbWE6QmssY3JlYXRlOmZ1bmN0aW9uIGhSKHQpe3JldHVybiBTdSh5Yyh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOnljLGxvY2FsOm5oLG1hdGNoZXI6U2MsbW91c2U6YWgsbmFtZXNwYWNlOm1jLG5hbWVzcGFjZXM6ZmMsY2xpZW50UG9pbnQ6b2gsc2VsZWN0OlN1LHNlbGVjdEFsbDpzaCxzZWxlY3Rpb246d3Usc2VsZWN0b3I6YmMsc2VsZWN0b3JBbGw6d2Msc3R5bGU6SGMsdG91Y2g6bGgsdG91Y2hlczpmdW5jdGlvbiBkUih0LGUpe251bGw9PWUmJihlPXJoKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPW9oKHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpPYyxnZXQgZXZlbnQoKXtyZXR1cm4gdXV9LGN1c3RvbUV2ZW50Omd1LGFyYzpmdW5jdGlvbiBwUigpe3ZhciB0PVFrLGU9dEwsbj1IaygwKSxpPW51bGwscj1lTCxvPW5MLGE9aUwscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktJGsscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS0kayxmPUZrKHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1mZygpKSxoPHUmJihjPWgsaD11LHU9YyksaD5ZaylpZihmPktrLVlrKXMubW92ZVRvKGgqVWsoZCksaCpXayhkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1PllrJiYocy5tb3ZlVG8odSpVayhwKSx1KldrKHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPllrJiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6cWsodSp1K2gqaCkpLFQ9R2soRmsoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPllrKXt2YXIgaz1KayhFL3UqV2soTSkpLEw9SmsoRS9oKldrKE0pKTsody09MiprKT5Zaz8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPllrPyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCpVayh5KSxOPWgqV2soeSksST11KlVrKHgpLFI9dSpXayh4KTtpZihUPllrKXt2YXIgTyx6PWgqVWsodiksRD1oKldrKHYpLEI9dSpVayhiKSxIPXUqV2soYik7aWYoZjxYayYmKE89ckwoUCxOLEIsSCx6LEQsSSxSKSkpe3ZhciBGPVAtT1swXSxWPU4tT1sxXSxVPXotT1swXSxqPUQtT1sxXSxHPTEvV2soWmsoKEYqVStWKmopLyhxayhGKkYrVipWKSpxayhVKlUraipqKSkpLzIpLFc9cWsoT1swXSpPWzBdK09bMV0qT1sxXSk7Qz1HayhULCh1LVcpLyhHLTEpKSxBPUdrKFQsKGgtVykvKEcrMSkpfX1TPllrP0E+WWs/KGc9b0woQixILFAsTixoLEEsbSksXz1vTCh6LEQsSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxWayhnLnkwMSxnLngwMSksVmsoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsVmsoZy55MDEsZy54MDEpLFZrKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsVmsoZy5jeStnLnkxMSxnLmN4K2cueDExKSxWayhfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxWayhfLnkxMSxfLngxMSksVmsoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5ZayYmdz5Zaz9DPllrPyhnPW9MKEksUix6LEQsdSwtQyxtKSxfPW9MKFAsTixCLEgsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxWayhnLnkwMSxnLngwMSksVmsoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsVmsoZy55MDEsZy54MDEpLFZrKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsVmsoZy5jeStnLnkxMSxnLmN4K2cueDExKSxWayhfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLFZrKF8ueTExLF8ueDExKSxWayhfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItWGsvMjtyZXR1cm5bVWsoaSkqbixXayhpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkhrKCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIaygrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmhMLGxpbmU6dUwscGllOmZ1bmN0aW9uIGZSKCl7dmFyIHQ9cEwsZT1kTCxuPW51bGwsaT1IaygwKSxyPUhrKEtrKSxvPUhrKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKEtrLE1hdGgubWF4KC1LayxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SGsoK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SGsoK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIaygrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOnZMLHJhZGlhbEFyZWE6dkwsbGluZVJhZGlhbDp5TCxyYWRpYWxMaW5lOnlMLHBvaW50UmFkaWFsOmJMLGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIG1SKCl7cmV0dXJuIE1MKEVMKX0sbGlua1ZlcnRpY2FsOmZ1bmN0aW9uIGdSKCl7cmV0dXJuIE1MKFRMKX0sbGlua1JhZGlhbDpmdW5jdGlvbiBfUigpe3ZhciB0PU1MKENMKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24geVIoKXt2YXIgdD1IayhBTCksZT1Iayg2NCksbj1udWxsO2Z1bmN0aW9uIGkoKXt2YXIgaTtpZihufHwobj1pPWZnKCkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcobiwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGkpcmV0dXJuIG49bnVsbCxpKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpIayhlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIaygrdCksaSk6ZX0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDp0LGkpOm59LGl9LHN5bWJvbHM6V0wsc3ltYm9sQ2lyY2xlOkFMLHN5bWJvbENyb3NzOmtMLHN5bWJvbERpYW1vbmQ6Tkwsc3ltYm9sU3F1YXJlOkRMLHN5bWJvbFN0YXI6ekwsc3ltYm9sVHJpYW5nbGU6SEwsc3ltYm9sV3llOkdMLGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24gdlIodCl7cmV0dXJuIG5ldyBLTCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gYlIodCl7cmV0dXJuIG5ldyBaTCh0KX0sY3VydmVCYXNpczokTCxjdXJ2ZUJ1bmRsZTpRTCxjdXJ2ZUNhcmRpbmFsQ2xvc2VkOnJQLGN1cnZlQ2FyZGluYWxPcGVuOmFQLGN1cnZlQ2FyZGluYWw6blAsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOmhQLGN1cnZlQ2F0bXVsbFJvbU9wZW46cFAsY3VydmVDYXRtdWxsUm9tOmNQLGN1cnZlTGluZWFyQ2xvc2VkOmZ1bmN0aW9uIHhSKHQpe3JldHVybiBuZXcgZlAodCl9LGN1cnZlTGluZWFyOnNMLGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIHdSKHQpe3JldHVybiBuZXcgdlAodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIFNSKHQpe3JldHVybiBuZXcgYlAodCl9LGN1cnZlTmF0dXJhbDpmdW5jdGlvbiBNUih0KXtyZXR1cm4gbmV3IHdQKHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gRVIodCl7cmV0dXJuIG5ldyBNUCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gVFIodCl7cmV0dXJuIG5ldyBNUCh0LDEpfSxjdXJ2ZVN0ZXBCZWZvcmU6ZnVuY3Rpb24gQ1IodCl7cmV0dXJuIG5ldyBNUCh0LDApfSxzdGFjazpmdW5jdGlvbiBBUigpe3ZhciB0PUhrKFtdKSxlPVRQLG49RVAsaT1DUDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6SGsoeEwuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkhrKCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/VFA6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpIayh4TC5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P0VQOnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24ga1IodCxlKXtpZigoaT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT10WzBdLmxlbmd0aDtvPGE7KytvKXtmb3Iocj1uPTA7bjxpOysrbilyKz10W25dW29dWzFdfHwwO2lmKHIpZm9yKG49MDtuPGk7KytuKXRbbl1bb11bMV0vPXJ9RVAodCxlKX19LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOmZ1bmN0aW9uIExSKHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT4wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOihpWzBdPTAsaVsxXT1yKX0sc3RhY2tPZmZzZXROb25lOkVQLHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiBQUih0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfUVQKHQsZSl9fSxzdGFja09mZnNldFdpZ2dsZTpmdW5jdGlvbiBOUih0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sRVAodCxlKX19LHN0YWNrT3JkZXJBcHBlYXJhbmNlOkFQLHN0YWNrT3JkZXJBc2NlbmRpbmc6TFAsc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gSVIodCl7cmV0dXJuIExQKHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBSUih0KXt2YXIgZSxuLGk9dC5sZW5ndGgscj10Lm1hcChQUCksbz1BUCh0KSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6VFAsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gT1IodCl7cmV0dXJuIFRQKHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOmNFLHRpbWVNaWxsaXNlY29uZDpoRSx0aW1lTWlsbGlzZWNvbmRzOmRFLHV0Y01pbGxpc2Vjb25kOmhFLHV0Y01pbGxpc2Vjb25kczpkRSx0aW1lU2Vjb25kOnZFLHRpbWVTZWNvbmRzOmJFLHV0Y1NlY29uZDp2RSx1dGNTZWNvbmRzOmJFLHRpbWVNaW51dGU6d0UsdGltZU1pbnV0ZXM6U0UsdGltZUhvdXI6RUUsdGltZUhvdXJzOlRFLHRpbWVEYXk6QUUsdGltZURheXM6a0UsdGltZVdlZWs6UEUsdGltZVdlZWtzOkJFLHRpbWVTdW5kYXk6UEUsdGltZVN1bmRheXM6QkUsdGltZU1vbmRheTpORSx0aW1lTW9uZGF5czpIRSx0aW1lVHVlc2RheTpJRSx0aW1lVHVlc2RheXM6RkUsdGltZVdlZG5lc2RheTpSRSx0aW1lV2VkbmVzZGF5czpWRSx0aW1lVGh1cnNkYXk6T0UsdGltZVRodXJzZGF5czpVRSx0aW1lRnJpZGF5OnpFLHRpbWVGcmlkYXlzOmpFLHRpbWVTYXR1cmRheTpERSx0aW1lU2F0dXJkYXlzOkdFLHRpbWVNb250aDpxRSx0aW1lTW9udGhzOllFLHRpbWVZZWFyOiRFLHRpbWVZZWFyczpLRSx1dGNNaW51dGU6SkUsdXRjTWludXRlczpRRSx1dGNIb3VyOmVULHV0Y0hvdXJzOm5ULHV0Y0RheTpyVCx1dGNEYXlzOm9ULHV0Y1dlZWs6c1QsdXRjV2Vla3M6ZlQsdXRjU3VuZGF5OnNULHV0Y1N1bmRheXM6ZlQsdXRjTW9uZGF5OmxULHV0Y01vbmRheXM6bVQsdXRjVHVlc2RheTpjVCx1dGNUdWVzZGF5czpnVCx1dGNXZWRuZXNkYXk6dVQsdXRjV2VkbmVzZGF5czpfVCx1dGNUaHVyc2RheTpoVCx1dGNUaHVyc2RheXM6eVQsdXRjRnJpZGF5OmRULHV0Y0ZyaWRheXM6dlQsdXRjU2F0dXJkYXk6cFQsdXRjU2F0dXJkYXlzOmJULHV0Y01vbnRoOndULHV0Y01vbnRoczpTVCx1dGNZZWFyOkVULHV0Y1llYXJzOlRULHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOlFDLGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIE5UfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIElUfSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIFJUfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gT1R9LHRpbWVGb3JtYXRMb2NhbGU6TFQsaXNvRm9ybWF0OmVBLGlzb1BhcnNlOmlBLG5vdzpUcCx0aW1lcjprcCx0aW1lckZsdXNoOkxwLHRpbWVvdXQ6UnAsaW50ZXJ2YWw6ZnVuY3Rpb24gelIodCxlLG4pe3ZhciBpPW5ldyBBcCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP1RwKCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpfZixhY3RpdmU6ZnVuY3Rpb24gRFIodCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IGdmKFtbdF1dLE1tLGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6VnAsdm9yb25vaTpmdW5jdGlvbiBCUigpe3ZhciB0PUlQLGU9UlAsbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBtTihpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS9oTikqaE4sTWF0aC5yb3VuZChlKG4scixpKS9oTikqaE5dO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpOUCgrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TlAoK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206a04sem9vbVRyYW5zZm9ybTpiTix6b29tSWRlbnRpdHk6dk59KTtjb25zdCBIUj1bIiNmZjcwNDMiLCIjMDA3N2JiIiwiI2NjMzMxMSIsIiMzM2JiZWUiLCIjZWUzMzc3IiwiIzAwOTk4OCIsIiNiYmJiYmIiXTtjbGFzcyBGUiBleHRlbmRzIG1se2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgdD1fcigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57U2UuZXhwb3J0cy5pc0VxdWFsKHRoaXMuX2V4cGVyaW1lbnRzLHQpfHwodGhpcy5fZXhwZXJpbWVudHM9dCx0aGlzLmVtaXRDaGFuZ2UoKSl9KSl9Z2V0RXhwZXJpbWVudHMoKXtyZXR1cm4gdGhpcy5fZXhwZXJpbWVudHMuc2xpY2UoKX19Y29uc3QgVlI9bmV3IEZSO2NsYXNzIFVSe2NvbnN0cnVjdG9yKHQ9SFIpe3RoaXMucGFsZXR0ZT10LHRoaXMuaWRlbnRpZmllcnM9d2coKX1zZXREb21haW4odCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnM9d2coKSx0LmZvckVhY2goKCh0LGUpPT57dGhpcy5pZGVudGlmaWVycy5zZXQodCx0aGlzLnBhbGV0dGVbZSV0aGlzLnBhbGV0dGUubGVuZ3RoXSl9KSksdGhpc31nZXRDb2xvcih0KXtpZighdGhpcy5pZGVudGlmaWVycy5oYXModCkpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHt0fSB3YXMgbm90IGluIHRoZSBkb21haW4uYCk7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnMuZ2V0KHQpfX1mdW5jdGlvbiBqUih0LGUpe2NvbnN0IG49bmV3IFVSO2Z1bmN0aW9uIGkoKXtuLnNldERvbWFpbihlKCkpfXJldHVybiB0LmFkZExpc3RlbmVyKGkpLGkoKSx0PT5uLmdldENvbG9yKHQpfWNvbnN0IEdSPWpSKHZsLCgoKT0+dmwuZ2V0UnVucygpKSk7alIoVlIsKCgpPT5WUi5nZXRFeHBlcmltZW50cygpLm1hcCgoKHtuYW1lOnR9KT0+dCkpKSksZWwoe21vZHVsZU5hbWU6InJ1bi1jb2xvci1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBbY29sb3ItY2xhc3M9J2xpZ2h0LWJsdWUnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdyZWQnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2dyZWVuJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3B1cnBsZSddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0ndGVhbCddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3BpbmsnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdvcmFuZ2UnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2Jyb3duJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J2luZGlnbyddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7XG4gICAgfVxuICAifSk7bGV0IFdSPWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5uYW1lcz1bXSx0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjooKT0+IiJ9LHRoaXMucmVnZXg9IiIsdGhpcy5zZWxlY3Rpb25TdGF0ZT17fSx0aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ9NDAsdGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2U9dGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2VJbXBsKCl9X2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpe3ZhciB0PVNlLmV4cG9ydHMuZGVib3VuY2UoKHQ9Pnt0aGlzLnJlZ2V4PXR9KSwxNTAse2xlYWRpbmc6ITF9KTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLiQkKCIjbmFtZXMtcmVnZXgiKS52YWx1ZTsiIj09ZT90aGlzLmFzeW5jKCgoKT0+e3RoaXMucmVnZXg9ZX0pLDMwKTp0KGUpfX1nZXQgX3JlZ2V4KCl7dmFyIHQ9dGhpcy5yZWdleDt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fV9zZXRJc29sYXRvckljb24oKXt2YXIgdD10aGlzLnNlbGVjdGlvblN0YXRlLGU9U2UuZXhwb3J0cy5maWx0ZXIoU2UuZXhwb3J0cy52YWx1ZXModCkpLmxlbmd0aDtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uaWNvbj0xPT09ZSYmdFtuLm5hbWVdPyJyYWRpby1idXR0b24tY2hlY2tlZCI6InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQifSkpfWNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgodCxlKXtjb25zdCBuPXRoaXMuX3JlZ2V4O3JldHVybiBuP3RoaXMubmFtZXMuZmlsdGVyKCh0PT5uLnRlc3QodCkpKTp0aGlzLm5hbWVzfWNvbXB1dGVPdXRTZWxlY3RlZCh0LGUpe3ZhciBuPXRoaXMuc2VsZWN0aW9uU3RhdGUsaT10aGlzLm5hbWVzTWF0Y2hpbmdSZWdleC5sZW5ndGg8PXRoaXMubWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdDtyZXR1cm4gdGhpcy5uYW1lc01hdGNoaW5nUmVnZXguZmlsdGVyKCh0PT5udWxsPT1uW3RdP2k6blt0XSkpfXN5bmNocm9uaXplQ29sb3JzKHQpe3RoaXMuX3NldElzb2xhdG9ySWNvbigpLHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci1jaGVja2JveCIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuY29sb3JpbmcuZ2V0Q29sb3IodC5uYW1lKTt0LnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvciI6ZSwiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvciI6ZX0pfSkpLHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLmNvbG9yaW5nLmdldENvbG9yKHQubmFtZSk7dC5zdHlsZS5jb2xvcj1lfSkpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy51cGRhdGVTdHlsZXMoKX0pKX1faXNvbGF0ZU5hbWUodCl7dmFyIGU9dC50YXJnZXQubmFtZSxuPXt9O3RoaXMubmFtZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0XT10PT1lfSkpLHRoaXMuc2VsZWN0aW9uU3RhdGU9bn1fY2hlY2tib3hDaGFuZ2UodCl7dmFyIGU9dC50YXJnZXQ7Y29uc3Qgbj1TZS5leHBvcnRzLmNsb25lKHRoaXMuc2VsZWN0aW9uU3RhdGUpO25bZS5uYW1lXT1lLmNoZWNrZWQsdGhpcy5zZWxlY3Rpb25TdGF0ZT1ufV9pc0NoZWNrZWQodCxlKXtyZXR1cm4tMSE9dGhpcy5vdXRTZWxlY3RlZC5pbmRleE9mKHQpfXRvZ2dsZUFsbCgpe2NvbnN0IHQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZSgodD0+dGhpcy5vdXRTZWxlY3RlZC5pbmNsdWRlcyh0KSkpLGU9e307dGhpcy5uYW1lcy5mb3JFYWNoKChuPT57ZVtuXT0hdH0pKSx0aGlzLnNlbGVjdGlvblN0YXRlPWV9fTtXUi50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icnVuLWNvbG9yLXN0eWxlIj48L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dAogICAgICBpZD0ibmFtZXMtcmVnZXgiCiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJXcml0ZSBhIHJlZ2V4IHRvIGZpbHRlciBydW5zIgogICAgICB2YWx1ZT0iW1tyZWdleF1dIgogICAgICBvbi1iaW5kLXZhbHVlLWNoYW5nZWQ9Il9kZWJvdW5jZWRSZWdleENoYW5nZSIKICAgID48L3BhcGVyLWlucHV0PgogICAgPGRpdiBpZD0ib3V0ZXItY29udGFpbmVyIiBjbGFzcz0ic2Nyb2xsYmFyIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbbmFtZXNNYXRjaGluZ1JlZ2V4XV0iCiAgICAgICAgb24tZG9tLWNoYW5nZT0ic3luY2hyb25pemVDb2xvcnMiCiAgICAgID4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLXJvdyI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJpY29uLWNvbnRhaW5lciBjaGVja2JveC1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjbGFzcz0iY2hlY2tib3ggdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIGlkJD0iY2hlY2tib3gtW1tpdGVtXV0iCiAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgY2hlY2tlZCQ9IltbX2lzQ2hlY2tlZChpdGVtLCBzZWxlY3Rpb25TdGF0ZS4qKV1dIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX2NoZWNrYm94Q2hhbmdlIgogICAgICAgICAgICA+PC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iaWNvbi1jb250YWluZXIgaXNvbGF0b3ItY29udGFpbmVyIHZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgaWNvbj0icmFkaW8tYnV0dG9uLXVuY2hlY2tlZCIKICAgICAgICAgICAgICBjbGFzcz0iaXNvbGF0b3IgdmVydGljYWwtYWxpZ24tY2VudGVyIgogICAgICAgICAgICAgIG9uLXRhcD0iX2lzb2xhdGVOYW1lIgogICAgICAgICAgICAgIG5hbWU9IltbaXRlbV1dIgogICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1sYWJlbC1jb250YWluZXIiPgogICAgICAgICAgICA8c3Bhbj5bW2l0ZW1dXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAjb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBjb250YWluOiBjb250ZW50OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgfQogICAgICAubmFtZS1yb3cgewogICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOyAvKiBtYWtlcyB3cmFwcGluZyBvZiBoeXBlcnBhcmFtIHN0cmluZ3MgYmV0dGVyICovCiAgICAgIH0KICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgfQogICAgICAuY2hlY2tib3gtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuaXRlbS1sYWJlbC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogMHB4OyAvKiBoYWNrIHRvIGdldCB0aGUgZmxleC1ncm93IHRvIHdvcmsgcHJvcGVybHkgKi8KICAgICAgfQogICAgICAudG9vbHRpcC12YWx1ZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tY2VudGVyIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tdG9wIHsKICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxXUi5wcm90b3R5cGUsIm5hbWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFdSLnByb3RvdHlwZSwiY29sb3JpbmciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFdSLnByb3RvdHlwZSwicmVnZXgiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxjb21wdXRlZDoiY29tcHV0ZU5hbWVzTWF0Y2hpbmdSZWdleChuYW1lcy4qLCBfcmVnZXgpIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFdSLnByb3RvdHlwZSwibmFtZXNNYXRjaGluZ1JlZ2V4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxXUi5wcm90b3R5cGUsInNlbGVjdGlvblN0YXRlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwLGNvbXB1dGVkOiJjb21wdXRlT3V0U2VsZWN0ZWQobmFtZXNNYXRjaGluZ1JlZ2V4LiosIHNlbGVjdGlvblN0YXRlLiopIn0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFdSLnByb3RvdHlwZSwib3V0U2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sV1IucHJvdG90eXBlLCJtYXhOYW1lc1RvRW5hYmxlQnlEZWZhdWx0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFdSLnByb3RvdHlwZSwiX2RlYm91bmNlZFJlZ2V4Q2hhbmdlIix2b2lkIDApLHQoW3MoInJlZ2V4IiksZSgiZGVzaWduOnR5cGUiLFJlZ0V4cCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sV1IucHJvdG90eXBlLCJfcmVnZXgiLG51bGwpLHQoW2EoInNlbGVjdGlvblN0YXRlIiwibmFtZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFdSLnByb3RvdHlwZSwiX3NldElzb2xhdG9ySWNvbiIsbnVsbCksV1I9dChbaSgidGYtbXVsdGktY2hlY2tib3giKV0sV1IpO2xldCBxUj1jbGFzcyBleHRlbmRzIHlle2dldCBfcGFydHMoKXt2YXIgdD10aGlzLnZhbHVlLGU9dGhpcy5kZWxpbWl0ZXJQYXR0ZXJuO2NvbnN0IG49W107Zm9yKDs7KXtjb25zdCBpPW5ldyBSZWdFeHAoZSwiZyIpO2lmKGkudGVzdCh0KSwwPT09aS5sYXN0SW5kZXgpe24ucHVzaCh0KTticmVha31uLnB1c2godC5zbGljZSgwLGkubGFzdEluZGV4KSksdD10LnNsaWNlKGkubGFzdEluZGV4KX1yZXR1cm4gbn19O3FSLnRlbXBsYXRlPV9lYAogICAgPCEtLQogICAgICBUaGlzIHVnbHkgZm9ybWF0dGluZyBpcyByZXF1aXJlZCB0byBwcmV2ZW50IHNwYWNlcyBmcm9tIHNsaXBwaW5nCiAgICAgIGludG8gdGhlIEhUTUwuCiAgICAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3BhcnRzXV0iIGFzPSJwYXJ0IgogICAgICA+W1twYXJ0XV08d2JyCiAgICAvPjwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxUi5wcm90b3R5cGUsInZhbHVlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFSLnByb3RvdHlwZSwiZGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtzKCJ2YWx1ZSIsImRlbGltaXRlclBhdHRlcm4iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHFSLnByb3RvdHlwZSwiX3BhcnRzIixudWxsKSxxUj10KFtpKCJ0Zi13YnItc3RyaW5nIildLHFSKTtsZXQgWVI9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJ1blNlbGVjdGlvblN0YXRlPSRzKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLmNhbGwodGhpcyksdGhpcy5yZWdleElucHV0PVJzKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSkuY2FsbCh0aGlzKSx0aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoPTI1MCx0aGlzLl9kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuPSJbLz1fLC1dIix0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjpHUn0sdGhpcy5fc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZT1LcygicnVuU2VsZWN0aW9uU3RhdGUiLHtkZWZhdWx0VmFsdWU6e319KSx0aGlzLl9yZWdleE9ic2VydmVyPU9zKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSl9YXR0YWNoZWQoKXt0aGlzLl9ydW5TdG9yZUxpc3RlbmVyPXZsLmFkZExpc3RlbmVyKCgoKT0+e3RoaXMuc2V0KCJydW5zIix2bC5nZXRSdW5zKCkpfSkpLHRoaXMuc2V0KCJydW5zIix2bC5nZXRSdW5zKCkpLHRoaXMuX2VudlN0b3JlTGlzdGVuZXI9X2wuYWRkTGlzdGVuZXIoKCgpPT57dGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsX2wuZ2V0RGF0YUxvY2F0aW9uKCkpfSkpLHRoaXMuc2V0KCJkYXRhTG9jYXRpb24iLF9sLmdldERhdGFMb2NhdGlvbigpKX1kZXRhY2hlZCgpe3ZsLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fcnVuU3RvcmVMaXN0ZW5lciksX2wucmVtb3ZlTGlzdGVuZXJCeUtleSh0aGlzLl9lbnZTdG9yZUxpc3RlbmVyKX1fdG9nZ2xlQWxsKCl7dGhpcy4kLm11bHRpQ2hlY2tib3gudG9nZ2xlQWxsKCl9Z2V0IF9jbGlwcGVkRGF0YUxvY2F0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhTG9jYXRpb24sZT10aGlzLl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQubGVuZ3RoPmU/dC5zdWJzdHJpbmcoMCxlKTp0fV9vcGVuRGF0YUxvY2F0aW9uRGlhbG9nKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLiQkKCIjZGF0YS1sb2NhdGlvbi1kaWFsb2ciKS5vcGVuKCl9X3Nob3VsZFNob3dFeHBhbmREYXRhTG9jYXRpb25CdXR0b24odCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg+ZX19O1lSLnRlbXBsYXRlPV9lYAogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wPSIiIGlkPSJkYXRhLWxvY2F0aW9uLWRpYWxvZyI+CiAgICAgIDxoMj5EYXRhIExvY2F0aW9uPC9oMj4KICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICB2YWx1ZT0iW1tkYXRhTG9jYXRpb25dXSIKICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICA+CiAgICAgIDwvdGYtd2JyLXN0cmluZwogICAgPjwvcGFwZXItZGlhbG9nPgogICAgPGRpdiBpZD0idG9wLXRleHQiPgogICAgICA8aDMgaWQ9InRvb2x0aXAtaGVscCIgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5SdW5zPC9oMz4KICAgIDwvZGl2PgogICAgPHRmLW11bHRpLWNoZWNrYm94CiAgICAgIGlkPSJtdWx0aUNoZWNrYm94IgogICAgICBuYW1lcz0iW1tydW5zXV0iCiAgICAgIHNlbGVjdGlvbi1zdGF0ZT0ie3tydW5TZWxlY3Rpb25TdGF0ZX19IgogICAgICBvdXQtc2VsZWN0ZWQ9Int7c2VsZWN0ZWRSdW5zfX0iCiAgICAgIHJlZ2V4PSJ7e3JlZ2V4SW5wdXR9fSIKICAgICAgY29sb3Jpbmc9IltbY29sb3JpbmddXSIKICAgID48L3RmLW11bHRpLWNoZWNrYm94PgogICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIGlkPSJ0b2dnbGUtYWxsIiBvbi10YXA9Il90b2dnbGVBbGwiPgogICAgICBUb2dnbGUgQWxsIFJ1bnMKICAgIDwvcGFwZXItYnV0dG9uPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2RhdGFMb2NhdGlvbl1dIj4KICAgICAgPGRpdiBpZD0iZGF0YS1sb2NhdGlvbiI+CiAgICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICAgIHZhbHVlPSJbW19jbGlwcGVkRGF0YUxvY2F0aW9uXV0iCiAgICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICAgID48L3RmLXdici1zdHJpbmcKICAgICAgICA+PCEtLQogICAgICAgICAgV2UgdXNlIEhUTUwgY29tbWVudHMgdG8gcmVtb3ZlIHNwYWNlcyBiZWZvcmUgdGhlIGVsbGlwc2lzLgogICAgICAgIC0tPjx0ZW1wbGF0ZQogICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgIGlmPSJbW19zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKGRhdGFMb2NhdGlvbiwgX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgpXV0iCiAgICAgICAgICA+PCEtLQogICAgICAgICAgLS0+PGEgaHJlZj0iIiBvbi1jbGljaz0iX29wZW5EYXRhTG9jYXRpb25EaWFsb2ciPuKApjwvYT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgICAjdG9wLXRleHQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICB0Zi13YnItc3RyaW5nIHsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWVIucHJvdG90eXBlLCJydW5TZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3JlZ2V4T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlSLnByb3RvdHlwZSwicmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFlSLnByb3RvdHlwZSwic2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxZUi5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlSLnByb3RvdHlwZSwiZGF0YUxvY2F0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFlSLnByb3RvdHlwZSwiX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWVIucHJvdG90eXBlLCJfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxZUi5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApLHQoW3MoImRhdGFMb2NhdGlvbiIsIl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWVIucHJvdG90eXBlLCJfY2xpcHBlZERhdGFMb2NhdGlvbiIsbnVsbCksWVI9dChbaSgidGYtcnVucy1zZWxlY3RvciIpXSxZUik7Y2xhc3MgWFJ7Y29uc3RydWN0b3IoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50PTB9Y2FuY2VsbGFibGUodCl7Y29uc3QgZT10aGlzLmNhbmNlbGxhdGlvbkNvdW50O3JldHVybiBuPT50KHt2YWx1ZTpuLGNhbmNlbGxlZDp0aGlzLmNhbmNlbGxhdGlvbkNvdW50IT09ZX0pfWNhbmNlbEFsbCgpe3RoaXMuY2FuY2VsbGF0aW9uQ291bnQrK319bGV0ICRSPWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5odG1sPSIifWdldCBzYW5pdGl6ZWRIdG1sKCl7cmV0dXJuIHRoaXMuaHRtbH1hdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLm1hcmtkb3duLCEwKX0pKX19O2Z1bmN0aW9uIEtSKHQpe3JldHVybiB0P3QudG9TdHJpbmcoKS5yZXBsYWNlKC9HTVQtXGQrIFwoKFteKV0rKVwpLywiJDEiKToiIn0kUi50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9Im1hcmtkb3duIiBpbm5lci1oLXQtbS1sPSJbW3Nhbml0aXplZEh0bWxdXSI+PC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC8qCiAgICAgICAqIFJlZHVjZSB0b3Btb3N0IGFuZCBib3R0b21tb3N0IG1hcmdpbnMgZnJvbSAxNnB4IHRvIDAuM2VtIChyZW5kZXJzCiAgICAgICAqIGF0IGFib3V0IDQuOHB4KSB0byBrZWVwIHRoZSBsYXlvdXQgY29tcGFjdC4gVGhpcyBpbXByb3ZlcyB0aGUKICAgICAgICogYXBwZWFyYW5jZSB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGxpbmUgb2YgdGV4dDsgc3RhbmRhcmQgTWFya2Rvd24KICAgICAgICogcmVuZGVyZXJzIHdpbGwgc3RpbGwgaW5jbHVkZSBhIFxgPHA+XGAgZWxlbWVudC4KICAgICAgICoKICAgICAgICogQnkgdGFyZ2V0aW5nIG9ubHkgdGhlIHRvcC1sZXZlbCwgZXh0cmVtYWwgZWxlbWVudHMsIHdlIHByZXNlcnZlIGFueQogICAgICAgKiBhY3R1YWwgcGFyYWdyYXBoIGJyZWFrcyBhbmQgb25seSBjaGFuZ2UgdGhlIHBhZGRpbmcgYWdhaW5zdCB0aGUKICAgICAgICogY29tcG9uZW50IGVkZ2VzLgogICAgICAgKi8KICAgICAgI21hcmtkb3duID4gcDpmaXJzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXRvcDogMC4zZW07CiAgICAgIH0KICAgICAgI21hcmtkb3duID4gcDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjNlbTsKICAgICAgfQoKICAgICAgLyogUGxlYXNhbnQgc3R5bGVzIGZvciBNYXJrZG93biB0YWJsZXMuICovCiAgICAgICNtYXJrZG93biB0YWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdGggewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgI21hcmtkb3duIHRhYmxlIHRoLAogICAgICAjbWFya2Rvd24gdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDZweCAxM3B4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlciwgI2RmZTJlNSk7CiAgICAgIH0KICAgICAgI21hcmtkb3duIHRhYmxlIHRyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS10Yi11aS1ib3JkZXIsICNjNmNiZDEpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJFIucHJvdG90eXBlLCJodG1sIix2b2lkIDApLHQoW3MoImh0bWwiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSwkUi5wcm90b3R5cGUsInNhbml0aXplZEh0bWwiLG51bGwpLCRSPXQoW2koInRmLW1hcmtkb3duLXZpZXciKV0sJFIpLGVsKHttb2R1bGVOYW1lOiJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgZmlnY2FwdGlvbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvKiogSG9yaXpvbnRhbCBsaW5lIG9mIGxhYmVscy4gKi9cbiAgICAuaGVhZGluZy1yb3cge1xuICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cblxuICAgIC8qKiBQaWVjZSBvZiB0ZXh0IGluIHRoZSBmaWd1cmUgY2FwdGlvbi4gKi9cbiAgICAuaGVhZGluZy1sYWJlbCB7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgLyoqIE1ha2VzIGxhYmVsIHNob3cgb24gdGhlIHJpZ2h0LiAqL1xuICAgIC5oZWFkaW5nLXJpZ2h0IHtcbiAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICB9XG4gICJ9KTtsZXQgWlI9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5kaXNwbGF5TmFtZT1udWxsLHRoaXMudGFnPW51bGwsdGhpcy5ydW49bnVsbCx0aGlzLmRlc2NyaXB0aW9uPW51bGwsdGhpcy5jb2xvcj1udWxsfV91cGRhdGVIZWFkaW5nU3R5bGUoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGYtY2FyZC1oZWFkaW5nLWJhY2tncm91bmQtY29sb3IiOnRoaXMuX3J1bkJhY2tncm91bmQsIi0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yIjp0aGlzLl9ydW5Db2xvcn0pfV9jb21wdXRlUnVuQmFja2dyb3VuZCh0KXtyZXR1cm4gdHx8Im5vbmUifV9jb21wdXRlUnVuQ29sb3IodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtpZighdClyZXR1cm4gbnVsbDtsZXQgZT10Lm1hdGNoKC9eIyhbMC05YS1mXXsxLDJ9KShbMC05YS1mXXsxLDJ9KShbMC05YS1mXXsxLDJ9KSQvKTtpZighZSlyZXR1cm4gbnVsbDtpZig0PT10Lmxlbmd0aClmb3IodmFyIG49MTtuPD0zO24rKyllW25dPWVbbl0rZVtuXTtyZXR1cm5bcGFyc2VJbnQoZVsxXSwxNikscGFyc2VJbnQoZVsyXSwxNikscGFyc2VJbnQoZVszXSwxNildfSkodCk7cmV0dXJuIGU/TWF0aC5yb3VuZCgoMjk5KmVbMF0rNTg3KmVbMV0rMTE0KmVbMl0pLzFlMyk+MTI1PyJpbmhlcml0IjoiI2VlZSI6ImluaGVyaXQifSkodCl9Z2V0IF9uYW1lTGFiZWwoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZXx8dGhpcy50YWd8fCIifWdldCBfdGFnTGFiZWwoKXt2YXIgdD10aGlzLnRhZztyZXR1cm4gdCYmdCE9PXRoaXMuZGlzcGxheU5hbWU/dDoiIn1fdG9nZ2xlRGVzY3JpcHRpb25EaWFsb2codCl7Y29uc3QgZT10aGlzLiQuZGVzY3JpcHRpb25EaWFsb2c7ZS5wb3NpdGlvblRhcmdldD10LnRhcmdldCxlLnRvZ2dsZSgpfX07WlIudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZmlnY2FwdGlvbiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19uYW1lTGFiZWxdXSI+CiAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9Im5hbWUiIGNsYXNzPSJoZWFkaW5nLWxhYmVsIG5hbWUiPltbX25hbWVMYWJlbF1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3J1bl1dIj4KICAgICAgICAgICAgPCEtLSBFeHRyYSB3cmFwcGluZyBzcGFuIG5lZWRlZCB0byBhdm9pZCBmbGV4Ym94IGJsb2NraWZpY2F0aW9uLiAtLT4KICAgICAgICAgICAgPCEtLSAoc2VlIGZsZXhib3ggc3BlYywgc2VjdGlvbiA0ICJGbGV4IEl0ZW1zIikgLS0+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICBpdGVtcHJvcD0icnVuIgogICAgICAgICAgICAgICAgaWQ9ImhlYWRpbmctcnVuIgogICAgICAgICAgICAgICAgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCBydW4iCiAgICAgICAgICAgICAgICA+W1tydW5dXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3RhZ0xhYmVsXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgICB0YWc6IDxzcGFuIGl0ZW1wcm9wPSJ0YWciPltbX3RhZ0xhYmVsXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZmlnY2FwdGlvbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Rlc2NyaXB0aW9uXV0iPgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgaWNvbj0iaW5mbyIKICAgICAgICAgIG9uLXRhcD0iX3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nIgogICAgICAgICAgdGl0bGU9IlNob3cgc3VtbWFyeSBkZXNjcmlwdGlvbiIKICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHBhcGVyLWRpYWxvZwogICAgICAgIGlkPSJkZXNjcmlwdGlvbkRpYWxvZyIKICAgICAgICBuby1vdmVybGFwPSIiCiAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0iYXV0byIKICAgICAgICB2ZXJ0aWNhbC1hbGlnbj0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZT4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbZGVzY3JpcHRpb25dXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgIDwvcGFwZXItZGlhbG9nPgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIC5ydW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgcGFkZGluZzogMXB4IDRweCAycHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICBwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsKICAgICAgfQogICAgICAjaGVhZGluZy1ydW4gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBjb2xvcjogdmFyKC0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpSLnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlIucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlIucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlIucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaUi5wcm90b3R5cGUsImNvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVJ1bkJhY2tncm91bmQoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWlIucHJvdG90eXBlLCJfcnVuQmFja2dyb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihjb2xvcikiLHJlYWRPbmx5OiEwLG9ic2VydmVyOiJfdXBkYXRlSGVhZGluZ1N0eWxlIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaUi5wcm90b3R5cGUsIl9ydW5Db2xvciIsdm9pZCAwKSx0KFtzKCJkaXNwbGF5TmFtZSIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFpSLnByb3RvdHlwZSwiX25hbWVMYWJlbCIsbnVsbCksdChbcygiZGlzcGxheU5hbWUiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxaUi5wcm90b3R5cGUsIl90YWdMYWJlbCIsbnVsbCksWlI9dChbaSgidGYtY2FyZC1oZWFkaW5nIildLFpSKTtsZXQgSlI9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgWFIsdGhpcy5fc3RlcHM9W10sdGhpcy5fYXR0YWNoZWQ9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiBHUih0aGlzLnJ1bil9Z2V0IF9oYXNBdExlYXN0T25lU3RlcCgpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MH1nZXQgX2hhc011bHRpcGxlU3RlcHMoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9tYXhTdGVwSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RlcHMubGVuZ3RoLTF9Z2V0IF9jdXJyZW50RGF0dW0oKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy50b3RhbFNhbXBsZXM+MX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X3JlbG9hZE9uUnVuVGFnQ2hhbmdlKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5fYXR0YWNoZWQpcmV0dXJuO3RoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9X3IoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvYXVkaW8iLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOlN0cmluZyh0aGlzLnNhbXBsZSl9KSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXModC5xdWVyeSk7ZS5hcHBlbmQoInRzIixTdHJpbmcodC53YWxsX3RpbWUpKTtjb25zdCBuPV9yKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL2luZGl2aWR1YWxBdWRpbyIsZSk7cmV0dXJue3dhbGxfdGltZTpLUihuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpKSxzdGVwOnQuc3RlcCxsYWJlbDp0LmxhYmVsLGNvbnRlbnRUeXBlOnQuY29udGVudFR5cGUsdXJsOm59fX07SlIudGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW3RvdGFsU2FtcGxlc11dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcCA8c3Ryb25nPltbX2N1cnJlbnREYXR1bS5zdGVwXV08L3N0cm9uZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50RGF0dW0ud2FsbF90aW1lXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICAgIFtbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcz0iIgogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbwogICAgICAgIGNvbnRyb2xzPSIiCiAgICAgICAgc3JjJD0iW1tfY3VycmVudERhdHVtLnVybF1dIgogICAgICAgIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSIKICAgICAgPjwvYXVkaW8+CiAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbX2N1cnJlbnREYXR1bS5sYWJlbF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEpSLnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEpSLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpSLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpSLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpSLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsZHIpXSxKUi5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLFhSKV0sSlIucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEpSLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpSLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKUi5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEpSLnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlIucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlIucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFtzKCJfc3RlcHMiLCJfc3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlIucHJvdG90eXBlLCJfY3VycmVudERhdHVtIixudWxsKSx0KFtzKCJzYW1wbGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKUi5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJ0b3RhbFNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSlIucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpSLnByb3RvdHlwZSwiX3JlbG9hZE9uUnVuVGFnQ2hhbmdlIixudWxsKSxKUj10KFtpKCJ0Zi1hdWRpby1sb2FkZXIiKV0sSlIpO2xldCBRUj1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGRyfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PV9yKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoU2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1hcihTZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCl9KSl9X3JlbG9hZEF1ZGlvKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWF1ZGlvLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIFNlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LHRvdGFsU2FtcGxlczpufSkpKX1yZXR1cm4gTXIoU2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07UVIudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBhdWRpbyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgYXVkaW8gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWF1ZGlvLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIHRvdGFsLXNhbXBsZXM9IltbaXRlbS50b3RhbFNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWF1ZGlvLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxRUi5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFFSLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRUi5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxRUi5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUVIucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0sUVIucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxRUi5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxRUj10KFtpKCJ0Zi1hdWRpby1kYXNoYm9hcmQiKV0sUVIpO2xldCB0Tz1jbGFzcyBleHRlbmRzKGVyKHllKSl7YXR0YWNoZWQoKXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHQsInRhcCIsIl9zZWxlY3RUYXJnZXQiKX0uYmluZCh0aGlzKSl9KSl9X3NlbGVjdFRhcmdldCh0KXt0aGlzLnNlbGVjdGVkSWQ9dC5jdXJyZW50VGFyZ2V0LmlkfV9zZWxlY3RlZElkQ2hhbmdlZCgpe3ZhciB0PXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiIyIrdGhpcy5zZWxlY3RlZElkKTt0JiYodGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQiKX0pKSx0LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIikpfX07ZnVuY3Rpb24gZU8odCxlKXtsZXQgbjtjb25zdCBpPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57Y29uc3Qgcj10W2VdO3ZvaWQgMD09PW4mJihuPXIuZGlzcGxheU5hbWUpLG4hPT1yLmRpc3BsYXlOYW1lJiYobj1udWxsKSx2b2lkIDA9PT1pW3IuZGVzY3JpcHRpb25dJiYoaVtyLmRlc2NyaXB0aW9uXT1bXSksaVtyLmRlc2NyaXB0aW9uXS5wdXNoKGUpfSkpLHtkaXNwbGF5TmFtZTpudWxsIT1uP246ZSxkZXNjcmlwdGlvbjooKCk9Pntjb25zdCB0PU9iamVjdC5rZXlzKGkpO3JldHVybiAwPT09dC5sZW5ndGg/IiI6MT09PXQubGVuZ3RoP3RbMF06YDxwPjxzdHJvbmc+TXVsdGlwbGUgZGVzY3JpcHRpb25zOjwvc3Ryb25nPjwvcD48dWw+JHt0Lm1hcCgodD0+e2NvbnN0IGU9aVt0XS5tYXAoKHQ9PmA8Y29kZT4ke3QucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvJi9nLCImYW1wOyIpfTwvY29kZT5gKSksbj1lLmxlbmd0aD4yP2Uuc2xpY2UoMCxlLmxlbmd0aC0xKS5qb2luKCIsICIpKyIsIGFuZCAiK2VbZS5sZW5ndGgtMV06ZS5qb2luKCIgYW5kICIpO3JldHVybmA8bGk+PHA+Rm9yICR7KGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybiAxPT09dD9lOm59KShlLmxlbmd0aCwicnVuIiwicnVucyIpfSAke259OjwvcD4ke3R9PC9saT5gfSkpLmpvaW4oIiIpfTwvdWw+YH0pKCl9fXRPLnRlbXBsYXRlPV9lYAogICAgPGRpdiBpZD0id3JhcCI+CiAgICAgIDxoMz5bW25hbWVdXTwvaDM+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+PHNsb3Q+PC9zbG90PjwvZGl2PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC5jb250ZW50LXdyYXBwZXIgOjpzbG90dGVkKCopIHsKICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50LXdyYXBwZXIgOjpzbG90dGVkKCopIHsKICAgICAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50LXdyYXBwZXIgOjpzbG90dGVkKC5zZWxlY3RlZCkgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgaDMgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgbWFyZ2luOiAwIDAgNXB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdE8ucHJvdG90eXBlLCJuYW1lIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxvYnNlcnZlcjoiX3NlbGVjdGVkSWRDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0Ty5wcm90b3R5cGUsInNlbGVjdGVkSWQiLHZvaWQgMCksdE89dChbaSgidGYtb3B0aW9uLXNlbGVjdG9yIildLHRPKTtsZXQgbk89Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy53ZWlnaHQ9LjYsdGhpcy5fdXBkYXRlV2VpZ2h0PVNlLmV4cG9ydHMuZGVib3VuY2UoKGZ1bmN0aW9uKHQpe3RoaXMud2VpZ2h0PXR9KSwyNTApfV9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlckNoYW5nZWQoKXt0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9dGhpcy5faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXIudG9TdHJpbmcoKSx0aGlzLl91cGRhdGVXZWlnaHQuY2FsbCh0aGlzLHRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyKX1faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Q2hhbmdlZCgpeyt0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ8MD90aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjAiOit0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ+MSYmKHRoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD0iMSIpO3ZhciB0PSt0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ7aXNOYU4odCl8fHRoaXMuX3VwZGF0ZVdlaWdodC5jYWxsKHRoaXMsdCl9fTtmdW5jdGlvbiBpTyh0LGUpe2NvbnN0IG49T2JqZWN0LmtleXMoZSkuc29ydCgpLmZpbHRlcigodD0+dm9pZCAwIT09ZVt0XSkpO2lmKCFuLmxlbmd0aClyZXR1cm4gdDtjb25zdCBpPS0xIT09dC5pbmRleE9mKCI/Iik/IiYiOiI/IjtyZXR1cm4gdCtpK1tdLmNvbmNhdCguLi5uLm1hcCgodD0+e2NvbnN0IG49ZVt0XTtyZXR1cm4oQXJyYXkuaXNBcnJheShuKT9uOltuXSkubWFwKChlPT5gJHt0fT0keyhmdW5jdGlvbiBuKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvXCgvZywiJTI4IikucmVwbGFjZSgvXCkvZywiJTI5Iil9KShlKX1gKSl9KSkpLmpvaW4oIiYiKX1uTy50ZW1wbGF0ZT1fZWAKICAgIDxoMyBjbGFzcz0idGl0bGUiPlNtb290aGluZzwvaDM+CiAgICA8ZGl2IGNsYXNzPSJzbW9vdGhpbmctYmxvY2siPgogICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgaWQ9InNsaWRlciIKICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyfX0iCiAgICAgICAgbWF4PSJbW21heF1dIgogICAgICAgIG1pbj0iW1ttaW5dXSIKICAgICAgICBwaW4KICAgICAgICBzdGVwPSJbW3N0ZXBdXSIKICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgdmFsdWU9Int7d2VpZ2h0fX0iCiAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgaWQ9ImlucHV0IgogICAgICAgIGxhYmVsPSJ3ZWlnaHQiCiAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICB2YWx1ZT0ie3tfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0fX0iCiAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgIHN0ZXA9Iltbc3RlcF1dIgogICAgICAgIG1pbj0iW1ttaW5dXSIKICAgICAgICBtYXg9IltbbWF4XV0iCiAgICAgID48L3BhcGVyLWlucHV0PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC50aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAuc21vb3RoaW5nLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICBmbGV4LWdyb3c6IDI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxuTy5wcm90b3R5cGUsInN0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbk8ucHJvdG90eXBlLCJtYXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbk8ucHJvdG90eXBlLCJtaW4iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLG5PLnByb3RvdHlwZSwid2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbk8ucHJvdG90eXBlLCJfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbk8ucHJvdG90eXBlLCJfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Iix2b2lkIDApLG5PPXQoW2koInRmLXNtb290aGluZy1pbnB1dCIpXSxuTyk7dmFyIHJPPXt9LG9PPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfSxhTz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbiB0KGUpe2Zvcih2YXIgbixpPTEscj1hcmd1bWVudHMubGVuZ3RoO2k8cjtpKyspZm9yKHZhciBvIGluIG49YXJndW1lbnRzW2ldKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiYoZVtvXT1uW29dKTtyZXR1cm4gZX07Ci8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlCiAgICB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZQogICAgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBUSElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCiAgICBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVECiAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLAogICAgTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC4KCiAgICBTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICAgIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovZnVuY3Rpb24gc08odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fWZ1bmN0aW9uIGxPKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciBpLHIsbz1uLmNhbGwodCksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShpPW8ubmV4dCgpKS5kb25lOylhLnB1c2goaS52YWx1ZSl9Y2F0Y2godCl7cj17ZXJyb3I6dH19ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKG49by5yZXR1cm4pJiZuLmNhbGwobyl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIGNPKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgY08/KHRoaXMudj10LHRoaXMpOm5ldyBjTyh0KX12YXIgdU89YmUoT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsX19leHRlbmRzOmZ1bmN0aW9uIGhPKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1vTyh0LGUpLHQucHJvdG90eXBlPW51bGw9PT1lP09iamVjdC5jcmVhdGUoZSk6KG4ucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyBuKX0sX19hc3NpZ246YU8sX19yZXN0OmZ1bmN0aW9uIGRPKHQsZSl7dmFyIG49e307Zm9yKHZhciBpIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsaSkmJmUuaW5kZXhPZihpKTwwJiYobltpXT10W2ldKTtpZihudWxsIT10JiYiZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9MDtmb3IoaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO3I8aS5sZW5ndGg7cisrKWUuaW5kZXhPZihpW3JdKTwwJiYobltpW3JdXT10W2lbcl1dKX1yZXR1cm4gbn0sX19kZWNvcmF0ZTpmdW5jdGlvbiBwTyh0LGUsbixpKXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGgsYT1vPDM/ZTpudWxsPT09aT9pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxuKTppO2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpYT1SZWZsZWN0LmRlY29yYXRlKHQsZSxuLGkpO2Vsc2UgZm9yKHZhciBzPXQubGVuZ3RoLTE7cz49MDtzLS0pKHI9dFtzXSkmJihhPShvPDM/cihhKTpvPjM/cihlLG4sYSk6cihlLG4pKXx8YSk7cmV0dXJuIG8+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixhKSxhfSxfX3BhcmFtOmZ1bmN0aW9uIGZPKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7ZShuLGksdCl9fSxfX21ldGFkYXRhOmZ1bmN0aW9uIG1PKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfSxfX2F3YWl0ZXI6ZnVuY3Rpb24gZ08odCxlLG4saSl7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gYSh0KXt0cnl7bChpLm5leHQodCkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHModCl7dHJ5e2woaS50aHJvdyh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/cih0LnZhbHVlKTpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0LnZhbHVlKX0pKS50aGVuKGEscyl9bCgoaT1pLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfSxfX2dlbmVyYXRvcjpmdW5jdGlvbiBfTyh0LGUpe3ZhciBuLGkscixvLGE9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmclswXSl0aHJvdyByWzFdO3JldHVybiByWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIG89e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYob1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxvO2Z1bmN0aW9uIHMobyl7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybihmdW5jdGlvbiBsKG8pe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLiIpO2Zvcig7YTspdHJ5e2lmKG49MSxpJiYocj1pWzImb1swXT8icmV0dXJuIjpvWzBdPyJ0aHJvdyI6Im5leHQiXSkmJiEocj1yLmNhbGwoaSxvWzFdKSkuZG9uZSlyZXR1cm4gcjtzd2l0Y2goaT0wLHImJihvPVswLHIudmFsdWVdKSxvWzBdKXtjYXNlIDA6Y2FzZSAxOnI9bzticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6b1sxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLGk9b1sxXSxvPVswXTtjb250aW51ZTtjYXNlIDc6bz1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChyPShyPWEudHJ5cykubGVuZ3RoPjAmJnJbci5sZW5ndGgtMV0pfHw2IT09b1swXSYmMiE9PW9bMF0pKXthPTA7Y29udGludWV9aWYoMz09PW9bMF0mJighcnx8b1sxXT5yWzBdJiZvWzFdPHJbM10pKXthLmxhYmVsPW9bMV07YnJlYWt9aWYoNj09PW9bMF0mJmEubGFiZWw8clsxXSl7YS5sYWJlbD1yWzFdLHI9bzticmVha31pZihyJiZhLmxhYmVsPHJbMl0pe2EubGFiZWw9clsyXSxhLm9wcy5wdXNoKG8pO2JyZWFrfXJbMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1vPWUuY2FsbCh0LGEpfWNhdGNoKHQpe289WzYsdF0saT0wfWZpbmFsbHl7bj1yPTB9aWYoNSZvWzBdKXRocm93IG9bMV07cmV0dXJue3ZhbHVlOm9bMF0/b1sxXTp2b2lkIDAsZG9uZTohMH19KShbbyxzXSl9fX0sX19leHBvcnRTdGFyOmZ1bmN0aW9uIHlPKHQsZSl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9LF9fdmFsdWVzOnNPLF9fcmVhZDpsTyxfX3NwcmVhZDpmdW5jdGlvbiB2Tygpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KGxPKGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fSxfX2F3YWl0OmNPLF9fYXN5bmNHZW5lcmF0b3I6ZnVuY3Rpb24gYk8odCxlLG4pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgaSxyPW4uYXBwbHkodCxlfHxbXSksbz1bXTtyZXR1cm4gaT17fSxhKCJuZXh0IiksYSgidGhyb3ciKSxhKCJyZXR1cm4iKSxpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxpO2Z1bmN0aW9uIGEodCl7clt0XSYmKGlbdF09ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe28ucHVzaChbdCxlLG4saV0pPjF8fHModCxlKX0pKX0pfWZ1bmN0aW9uIHModCxlKXt0cnl7IShmdW5jdGlvbiBuKHQpe3QudmFsdWUgaW5zdGFuY2VvZiBjTz9Qcm9taXNlLnJlc29sdmUodC52YWx1ZS52KS50aGVuKGwsYyk6dShvWzBdWzJdLHQpfSkoclt0XShlKSl9Y2F0Y2godCl7dShvWzBdWzNdLHQpfX1mdW5jdGlvbiBsKHQpe3MoIm5leHQiLHQpfWZ1bmN0aW9uIGModCl7cygidGhyb3ciLHQpfWZ1bmN0aW9uIHUodCxlKXt0KGUpLG8uc2hpZnQoKSxvLmxlbmd0aCYmcyhvWzBdWzBdLG9bMF1bMV0pfX0sX19hc3luY0RlbGVnYXRvcjpmdW5jdGlvbiB4Tyh0KXt2YXIgZSxuO3JldHVybiBlPXt9LGkoIm5leHQiKSxpKCJ0aHJvdyIsKGZ1bmN0aW9uKHQpe3Rocm93IHR9KSksaSgicmV0dXJuIiksZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGU7ZnVuY3Rpb24gaShpLHIpe3RbaV0mJihlW2ldPWZ1bmN0aW9uKGUpe3JldHVybihuPSFuKT97dmFsdWU6Y08odFtpXShlKSksZG9uZToicmV0dXJuIj09PWl9OnI/cihlKTplfSl9fSxfX2FzeW5jVmFsdWVzOmZ1bmN0aW9uIHdPKHQpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgZT10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gZT9lLmNhbGwodCk6c08odCl9LF9fbWFrZVRlbXBsYXRlT2JqZWN0OmZ1bmN0aW9uIFNPKHQsZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmF3Iix7dmFsdWU6ZX0pOnQucmF3PWUsdH19KSk7ZnVuY3Rpb24gTU8odCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gRU8odCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIE1PKHQoZSksbil9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik8MD9pPW8rMTpyPW99cmV0dXJuIGl9LHJpZ2h0OmZ1bmN0aW9uKGUsbixpLHIpe2ZvcihudWxsPT1pJiYoaT0wKSxudWxsPT1yJiYocj1lLmxlbmd0aCk7aTxyOyl7dmFyIG89aStyPj4+MTt0KGVbb10sbik+MD9yPW86aT1vKzF9cmV0dXJuIGl9fX12YXIgVE89RU8oTU8pLENPPVRPLnJpZ2h0LEFPPVRPLmxlZnQ7ZnVuY3Rpb24ga08odCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBMTyh0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fWZ1bmN0aW9uIFBPKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89MCxhPS0xLHM9MCxsPTA7aWYobnVsbD09ZSlmb3IoOysrYTxyOylpc05hTihuPUxPKHRbYV0pKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2Vsc2UgZm9yKDsrK2E8cjspaXNOYU4obj1MTyhlKHRbYV0sYSx0KSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7aWYobz4xKXJldHVybiBsLyhvLTEpfWZ1bmN0aW9uIE5PKHQsZSl7dmFyIG49UE8odCxlKTtyZXR1cm4gbj9NYXRoLnNxcnQobik6bn1mdW5jdGlvbiBJTyh0LGUpe3ZhciBuLGkscixvPXQubGVuZ3RoLGE9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK2E8bzspaWYobnVsbCE9KG49dFthXSkmJm4+PW4pZm9yKGk9cj1uOysrYTxvOyludWxsIT0obj10W2FdKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSl9ZWxzZSBmb3IoOysrYTxvOylpZihudWxsIT0obj1lKHRbYV0sYSx0KSkmJm4+PW4pZm9yKGk9cj1uOysrYTxvOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpO3JldHVybltpLHJdfXZhciBSTz1BcnJheS5wcm90b3R5cGUsT089Uk8uc2xpY2Usek89Uk8ubWFwO2Z1bmN0aW9uIERPKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBCTyh0KXtyZXR1cm4gdH1mdW5jdGlvbiBITyh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb312YXIgRk89TWF0aC5zcXJ0KDUwKSxWTz1NYXRoLnNxcnQoMTApLFVPPU1hdGguc3FydCgyKTtmdW5jdGlvbiBqTyh0LGUsbil7dmFyIGk9KGUtdCkvTWF0aC5tYXgoMCxuKSxyPU1hdGguZmxvb3IoTWF0aC5sb2coaSkvTWF0aC5MTjEwKSxvPWkvTWF0aC5wb3coMTAscik7cmV0dXJuIHI+PTA/KG8+PUZPPzEwOm8+PVZPPzU6bz49VU8/MjoxKSpNYXRoLnBvdygxMCxyKTotTWF0aC5wb3coMTAsLXIpLyhvPj1GTz8xMDpvPj1WTz81Om8+PVVPPzI6MSl9ZnVuY3Rpb24gR08odCxlLG4pe3ZhciBpPU1hdGguYWJzKGUtdCkvTWF0aC5tYXgoMCxuKSxyPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coaSkvTWF0aC5MTjEwKSksbz1pL3I7cmV0dXJuIG8+PUZPP3IqPTEwOm8+PVZPP3IqPTU6bz49VU8mJihyKj0yKSxlPHQ/LXI6cn1mdW5jdGlvbiBXTyh0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiBxTyh0LGUsbil7aWYobnVsbD09biYmKG49TE8pLGk9dC5sZW5ndGgpe2lmKChlPStlKTw9MHx8aTwyKXJldHVybituKHRbMF0sMCx0KTtpZihlPj0xKXJldHVybituKHRbaS0xXSxpLTEsdCk7dmFyIGkscj0oaS0xKSplLG89TWF0aC5mbG9vcihyKSxhPStuKHRbb10sbyx0KTtyZXR1cm4gYSsoK24odFtvKzFdLG8rMSx0KS1hKSooci1vKX19ZnVuY3Rpb24gWU8odCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmaT5uJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJmk+biYmKGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gWE8odCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIGU9LTEsbj1ZTyh0LCRPKSxpPW5ldyBBcnJheShuKTsrK2U8bjspZm9yKHZhciByLG89LTEsYT1pW2VdPW5ldyBBcnJheShyKTsrK288cjspYVtvXT10W29dW2VdO3JldHVybiBpfWZ1bmN0aW9uICRPKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgS089QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIFpPKHQpe3JldHVybiB0fXZhciBKTz0xZS02O2Z1bmN0aW9uIFFPKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gdHoodCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiBleih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuK3QoZSl9fWZ1bmN0aW9uIG56KHQpe3ZhciBlPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihlPU1hdGgucm91bmQoZSkpLGZ1bmN0aW9uKG4pe3JldHVybit0KG4pK2V9fWZ1bmN0aW9uIGl6KCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHJ6KHQsZSl7dmFyIG49W10saT1udWxsLHI9bnVsbCxvPTYsYT02LHM9MyxsPTE9PT10fHw0PT09dD8tMToxLGM9ND09PXR8fDI9PT10PyJ4IjoieSIsdT0xPT09dHx8Mz09PXQ/UU86dHo7ZnVuY3Rpb24gaChoKXt2YXIgZD1udWxsPT1pP2UudGlja3M/ZS50aWNrcy5hcHBseShlLG4pOmUuZG9tYWluKCk6aSxwPW51bGw9PXI/ZS50aWNrRm9ybWF0P2UudGlja0Zvcm1hdC5hcHBseShlLG4pOlpPOnIsZj1NYXRoLm1heChvLDApK3MsbT1lLnJhbmdlKCksZz0rbVswXSsuNSxfPSttW20ubGVuZ3RoLTFdKy41LHk9KGUuYmFuZHdpZHRoP256OmV6KShlLmNvcHkoKSksdj1oLnNlbGVjdGlvbj9oLnNlbGVjdGlvbigpOmgsYj12LnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSx4PXYuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZCxlKS5vcmRlcigpLHc9eC5leGl0KCksUz14LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksTT14LnNlbGVjdCgibGluZSIpLEU9eC5zZWxlY3QoInRleHQiKTtiPWIubWVyZ2UoYi5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCIjMDAwIikpLHg9eC5tZXJnZShTKSxNPU0ubWVyZ2UoUy5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cihjKyIyIixsKm8pKSxFPUUubWVyZ2UoUy5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIoYyxsKmYpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGghPT12JiYoYj1iLnRyYW5zaXRpb24oaCkseD14LnRyYW5zaXRpb24oaCksTT1NLnRyYW5zaXRpb24oaCksRT1FLnRyYW5zaXRpb24oaCksdz13LnRyYW5zaXRpb24oaCkuYXR0cigib3BhY2l0eSIsSk8pLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PXkodCkpP3UodCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLFMuYXR0cigib3BhY2l0eSIsSk8pLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHUoZSYmaXNGaW5pdGUoZT1lKHQpKT9lOnkodCkpfSkpKSx3LnJlbW92ZSgpLGIuYXR0cigiZCIsND09PXR8fDI9PXQ/Ik0iK2wqYSsiLCIrZysiSDAuNVYiK18rIkgiK2wqYToiTSIrZysiLCIrbCphKyJWMC41SCIrXysiViIrbCphKSx4LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiB1KHkodCkpfSkpLE0uYXR0cihjKyIyIixsKm8pLEUuYXR0cihjLGwqZikudGV4dChwKSx2LmZpbHRlcihpeikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksdi5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPXl9KSl9cmV0dXJuIGguc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxoKTplfSxoLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIG49S08uY2FsbChhcmd1bWVudHMpLGh9LGgudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1tdOktPLmNhbGwodCksaCk6bi5zbGljZSgpfSxoLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOktPLmNhbGwodCksaCk6aSYmaS5zbGljZSgpfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxoKTpyfSxoLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsaCk6b30saC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGgpOm99LGgudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxoKTphfSxoLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGgpOnN9LGh9dmFyIG96PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIGF6KCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IHN6KGkpfWZ1bmN0aW9uIHN6KHQpe3RoaXMuXz10fWZ1bmN0aW9uIGx6KHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBjeih0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIHV6KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1veix0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9c3oucHJvdG90eXBlPWF6LnByb3RvdHlwZT17Y29uc3RydWN0b3I6c3osb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPWx6KHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPXV6KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09dXooaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWN6KGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IHN6KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgaHo9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGR6PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpoeix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIHB6KHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGR6Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpkeltlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIGZ6KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09aHomJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PWh6P2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBteih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBneih0KXt2YXIgZT1weih0KTtyZXR1cm4oZS5sb2NhbD9tejpmeikoZSl9ZnVuY3Rpb24gX3ooKXt9ZnVuY3Rpb24geXoodCl7cmV0dXJuIG51bGw9PXQ/X3o6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiB2eigpe3JldHVybltdfWZ1bmN0aW9uIGJ6KHQpe3JldHVybiBudWxsPT10P3Z6OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24geHoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gd3oodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gU3oodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gTXoodCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IFN6KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBFeih0LGUsbixpLHIsbyxhKXt2YXIgcyxsLGMsdT17fSxoPWUubGVuZ3RoLGQ9by5sZW5ndGgscD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiYocFtzXT1jPSIkIithLmNhbGwobCxsLl9fZGF0YV9fLHMsZSksYyBpbiB1P3Jbc109bDp1W2NdPWwpO2ZvcihzPTA7czxkOysrcykobD11W2M9IiQiK2EuY2FsbCh0LG9bc10scyxvKV0pPyhpW3NdPWwsbC5fX2RhdGFfXz1vW3NdLHVbY109bnVsbCk6bltzXT1uZXcgU3oodCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBUeih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBDeih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gQXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBreih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIEx6KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIFB6KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBOeih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBJeih0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gUnoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gT3oodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiB6eih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09aT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpLG4pfX1mdW5jdGlvbiBEeih0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fEl6KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEJ6KHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBIeih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gRnoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gVnoodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIFV6KHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IGp6KHQpfWZ1bmN0aW9uIGp6KHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1Weih0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIEd6KHQsZSl7Zm9yKHZhciBuPVV6KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5hZGQoZVtpXSl9ZnVuY3Rpb24gV3oodCxlKXtmb3IodmFyIG49VXoodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBxeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtHeih0aGlzLHQpfX1mdW5jdGlvbiBZeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtXeih0aGlzLHQpfX1mdW5jdGlvbiBYeih0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9HejpXeikodGhpcyx0KX19ZnVuY3Rpb24gJHooKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIEt6KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gWnoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIEp6KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gUXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gdEQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBlRCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBuRCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGlEKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gckQoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBvRCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gYUQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fVN6LnByb3RvdHlwZT17Y29uc3RydWN0b3I6U3osYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX0sanoucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgc0Q9e30sbEQ9bnVsbDtmdW5jdGlvbiBjRCh0LGUsbil7cmV0dXJuIHQ9dUQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiB1RCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPWxEO2xEPWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e2xEPXJ9fX1mdW5jdGlvbiBoRCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBkRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gcEQodCxlLG4pe3ZhciBpPXNELmhhc093blByb3BlcnR5KHQudHlwZSk/Y0Q6dUQ7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gZkQodCxlLG4pe3ZhciBpPUl6KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIG1EKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZEKHRoaXMsdCxlKX19ZnVuY3Rpb24gZ0QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZkQodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoc0Q9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBfRD1bbnVsbF07ZnVuY3Rpb24geUQodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gdkQoKXtyZXR1cm4gbmV3IHlEKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sX0QpfWZ1bmN0aW9uIGJEKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeUQoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB5RChbW3RdXSxfRCl9ZnVuY3Rpb24geEQodCl7dmFyIGU9KGZ1bmN0aW9uIG4oKXtmb3IodmFyIHQsZT1sRDt0PWUuc291cmNlRXZlbnQ7KWU9dDtyZXR1cm4gZX0pKCk7cmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMmJihlPWUuY2hhbmdlZFRvdWNoZXNbMF0pLChmdW5jdGlvbiBpKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19KSh0LGUpfWZ1bmN0aW9uIHdEKCl7bEQucHJldmVudERlZmF1bHQoKSxsRC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBTRCh0KXt2YXIgZT10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPWJEKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsd0QsITApOyJvbnNlbGVjdHN0YXJ0ImluIGU/bi5vbigic2VsZWN0c3RhcnQuZHJhZyIsd0QsITApOihlLl9fbm9zZWxlY3Q9ZS5zdHlsZS5Nb3pVc2VyU2VsZWN0LGUuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIE1EKHQsZSl7dmFyIG49dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaT1iRCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO2UmJihpLm9uKCJjbGljay5kcmFnIix3RCwhMCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLm9uKCJjbGljay5kcmFnIixudWxsKX0pLDApKSwib25zZWxlY3RzdGFydCJpbiBuP2kub24oInNlbGVjdHN0YXJ0LmRyYWciLG51bGwpOihuLnN0eWxlLk1velVzZXJTZWxlY3Q9bi5fX25vc2VsZWN0LGRlbGV0ZSBuLl9fbm9zZWxlY3QpfWZ1bmN0aW9uIEVEKHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBURCh0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgaSBpbiBlKW5baV09ZVtpXTtyZXR1cm4gbn1mdW5jdGlvbiBDRCgpe315RC5wcm90b3R5cGU9dkQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp5RCxzZWxlY3Q6ZnVuY3Rpb24gQUQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXl6KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgeUQoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIGtEKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1ieih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgeUQoaSxyKX0sZmlsdGVyOmZ1bmN0aW9uIExEKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD14eih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgeUQoaSx0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBQRCh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9FejpNeixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IHlEKHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBORCgpe3JldHVybiBuZXcgeUQodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAod3opLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIElEKCl7cmV0dXJuIG5ldyB5RCh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKHd6KSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBSRCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gT0QodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgeUQobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gekQoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIEREKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9VHopO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IHlEKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBCRCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gSEQoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uIEZEKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBWRCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gVUQoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gakQodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIEdEKHQsZSl7dmFyIG49cHoodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP0F6OkN6OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/Tno6UHo6bi5sb2NhbD9MejpreikobixlKSl9LHN0eWxlOmZ1bmN0aW9uIFdEKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9SejoiZnVuY3Rpb24iPT10eXBlb2YgZT96ejpPeikodCxlLG51bGw9PW4/IiI6bikpOkR6KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBxRCh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0J6OiJmdW5jdGlvbiI9PXR5cGVvZiBlP0Z6Okh6KSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBZRCh0LGUpe3ZhciBuPVZ6KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPVV6KHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP1h6OmU/cXo6WXopKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIFhEKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10PyR6OigiZnVuY3Rpb24iPT10eXBlb2YgdD9aejpLeikodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uICREKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P0p6OigiZnVuY3Rpb24iPT10eXBlb2YgdD90RDpReikodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gS0QoKXtyZXR1cm4gdGhpcy5lYWNoKGVEKX0sbG93ZXI6ZnVuY3Rpb24gWkQoKXtyZXR1cm4gdGhpcy5lYWNoKG5EKX0sYXBwZW5kOmZ1bmN0aW9uIEpEKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z3oodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIFFEKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpneih0KSxpPW51bGw9PWU/aUQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp5eihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIHRCKCl7cmV0dXJuIHRoaXMuZWFjaChyRCl9LGNsb25lOmZ1bmN0aW9uIGVCKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P2FEOm9EKX0sZGF0dW06ZnVuY3Rpb24gbkIodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBpQih0LGUsbil7dmFyIGkscixvPWhEKHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP3BEOmRELG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gckIodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9nRDptRCkodCxlKSl9fTt2YXIgb0I9LjcsYUI9MS9vQixzQj0iXFxzKihbKy1dP1xcZCspXFxzKiIsbEI9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsY0I9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLHVCPS9eIyhbMC05YS1mXXszLDh9KSQvLGhCPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tzQixzQixzQl0rIlxcKSQiKSxkQj1uZXcgUmVnRXhwKCJecmdiXFwoIitbY0IsY0IsY0JdKyJcXCkkIikscEI9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tzQixzQixzQixsQl0rIlxcKSQiKSxmQj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2NCLGNCLGNCLGxCXSsiXFwpJCIpLG1CPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tsQixjQixjQl0rIlxcKSQiKSxnQj1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW2xCLGNCLGNCLGxCXSsiXFwpJCIpLF9CPXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIHlCKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gdkIoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBiQih0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT11Qi5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP3hCKGUpOjM9PT1uP25ldyBFQihlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/d0IoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/d0IoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1oQi5leGVjKHQpKT9uZXcgRUIoZVsxXSxlWzJdLGVbM10sMSk6KGU9ZEIuZXhlYyh0KSk/bmV3IEVCKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPXBCLmV4ZWModCkpP3dCKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPWZCLmV4ZWModCkpP3dCKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPW1CLmV4ZWModCkpP2tCKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9Z0IuZXhlYyh0KSk/a0IoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpfQi5oYXNPd25Qcm9wZXJ0eSh0KT94QihfQlt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IEVCKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24geEIodCl7cmV0dXJuIG5ldyBFQih0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gd0IodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBFQih0LGUsbixpKX1mdW5jdGlvbiBTQih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIENEfHwodD1iQih0KSksdD9uZXcgRUIoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IEVCfWZ1bmN0aW9uIE1CKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9TQih0KTpuZXcgRUIodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIEVCKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBUQigpe3JldHVybiIjIitBQih0aGlzLnIpK0FCKHRoaXMuZykrQUIodGhpcy5iKX1mdW5jdGlvbiBDQigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIEFCKHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24ga0IodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBQQih0LGUsbixpKX1mdW5jdGlvbiBMQih0KXtpZih0IGluc3RhbmNlb2YgUEIpcmV0dXJuIG5ldyBQQih0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBDRHx8KHQ9YkIodCkpLCF0KXJldHVybiBuZXcgUEI7aWYodCBpbnN0YW5jZW9mIFBCKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxpPXQuYi8yNTUscj1NYXRoLm1pbihlLG4saSksbz1NYXRoLm1heChlLG4saSksYT1OYU4scz1vLXIsbD0obytyKS8yO3JldHVybiBzPyhhPWU9PT1vPyhuLWkpL3MrNioobjxpKTpuPT09bz8oaS1lKS9zKzI6KGUtbikvcys0LHMvPWw8LjU/bytyOjItby1yLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgUEIoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBQQih0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gTkIodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfWZ1bmN0aW9uIElCKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBSQih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj8oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSkodCxuKTpJQihpc05hTih0KT9lOnQpfUVEKENELGJCLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OnlCLGZvcm1hdEhleDp5Qixmb3JtYXRIc2w6ZnVuY3Rpb24gT0IoKXtyZXR1cm4gTEIodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjp2Qix0b1N0cmluZzp2Qn0pLEVEKEVCLE1CLFREKENELHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2FCOk1hdGgucG93KGFCLHQpLG5ldyBFQih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9vQjpNYXRoLnBvdyhvQix0KSxuZXcgRUIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpUQixmb3JtYXRIZXg6VEIsZm9ybWF0UmdiOkNCLHRvU3RyaW5nOkNCfSkpLEVEKFBCLChmdW5jdGlvbiB6Qih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/TEIodCk6bmV3IFBCKHQsZSxuLG51bGw9PWk/MTppKX0pLFREKENELHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2FCOk1hdGgucG93KGFCLHQpLG5ldyBQQih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P29COk1hdGgucG93KG9CLHQpLG5ldyBQQih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IEVCKE5CKHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLE5CKHQscixpKSxOQih0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBEQj0oZnVuY3Rpb24gdChlKXt2YXIgbj0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gMT09KHQ9K3QpP1JCOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihpKXtyZXR1cm4gTWF0aC5wb3codCtpKmUsbil9fSkoZSxuLHQpOklCKGlzTmFOKGUpP246ZSl9fSkoZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciBpPW4oKHQ9TUIodCkpLnIsKGU9TUIoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1SQih0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0pKDEpO2Z1bmN0aW9uIEJCKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIEhCKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09cUIodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBGQih0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gVkIodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gVUIodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPXFCKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIGpCPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxHQj1uZXcgUmVnRXhwKGpCLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFdCKHQsZSl7dmFyIG4saSxyLG89akIubGFzdEluZGV4PUdCLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1qQi5leGVjKHQpKSYmKGk9R0IuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OlZCKG4saSl9KSksbz1HQi5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gcUIodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP0lCKGUpOigibnVtYmVyIj09PWk/VkI6InN0cmluZyI9PT1pPyhuPWJCKGUpKT8oZT1uLERCKTpXQjplIGluc3RhbmNlb2YgYkI/REI6ZSBpbnN0YW5jZW9mIERhdGU/RkI6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/QkI6QXJyYXkuaXNBcnJheShlKT9IQjoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/VUI6VkIpKHQsZSl9dmFyIFlCLFhCLCRCLEtCLFpCPTE4MC9NYXRoLlBJLEpCPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIFFCKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlpCLHNrZXdYOk1hdGguYXRhbihsKSpaQixzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gdEgodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpWQih0LHIpfSx7aTpsLTIseDpWQihpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OlZCKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpWQih0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6VkIodCxuKX0se2k6cy0yLHg6VkIoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIGVILG5ILGlIPXRIKChmdW5jdGlvbiBySCh0KXtyZXR1cm4ibm9uZSI9PT10P0pCOihZQnx8KFlCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFhCPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwkQj1kb2N1bWVudC5kZWZhdWx0VmlldyksWUIuc3R5bGUudHJhbnNmb3JtPXQsdD0kQi5nZXRDb21wdXRlZFN0eWxlKFhCLmFwcGVuZENoaWxkKFlCKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxYQi5yZW1vdmVDaGlsZChZQiksUUIoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLG9IPXRIKChmdW5jdGlvbiBhSCh0KXtyZXR1cm4gbnVsbD09dD9KQjooS0J8fChLQj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxLQi5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9S0IudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/UUIoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6SkIpfSksIiwgIiwiKSIsIikiKSxzSD0wLGxIPTAsY0g9MCx1SD0wLGhIPTAsZEg9MCxwSD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxmSD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBtSCgpe3JldHVybiBoSHx8KGZIKGdIKSxoSD1wSC5ub3coKStkSCl9ZnVuY3Rpb24gZ0goKXtoSD0wfWZ1bmN0aW9uIF9IKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiB5SCh0LGUsbil7dmFyIGk9bmV3IF9IO3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gdkgoKXtoSD0odUg9cEgubm93KCkpK2RILHNIPWxIPTA7dHJ5eyEoZnVuY3Rpb24gdCgpe21IKCksKytzSDtmb3IodmFyIHQsZT1lSDtlOykodD1oSC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tc0h9KSgpfWZpbmFsbHl7c0g9MCwoZnVuY3Rpb24gZSgpe2Zvcih2YXIgdCxlLG49ZUgsaT0xLzA7bjspbi5fY2FsbD8oaT5uLl90aW1lJiYoaT1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOmVIPWUpO25IPXQseEgoaSl9KSgpLGhIPTB9fWZ1bmN0aW9uIGJIKCl7dmFyIHQ9cEgubm93KCksZT10LXVIO2U+MWUzJiYoZEgtPWUsdUg9dCl9ZnVuY3Rpb24geEgodCl7c0h8fChsSCYmKGxIPWNsZWFyVGltZW91dChsSCkpLHQtaEg+MjQ/KHQ8MS8wJiYobEg9c2V0VGltZW91dCh2SCx0LXBILm5vdygpLWRIKSksY0gmJihjSD1jbGVhckludGVydmFsKGNIKSkpOihjSHx8KHVIPXBILm5vdygpLGNIPXNldEludGVydmFsKGJILDFlMykpLHNIPTEsZkgodkgpKSl9ZnVuY3Rpb24gd0godCxlLG4pe3ZhciBpPW5ldyBfSDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfV9ILnByb3RvdHlwZT15SC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOl9ILHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9tSCgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxuSD09PXRoaXN8fChuSD9uSC5fbmV4dD10aGlzOmVIPXRoaXMsbkg9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bix4SCgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCx4SCgpKX19O3ZhciBTSD1heigic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxNSD1bXTtmdW5jdGlvbiBFSCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKGwpe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gd0gobyk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKX1pZih3SCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksYShsKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwodCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj15SCgoZnVuY3Rpb24gbCh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KG8sbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJm8odC1uLmRlbGF5KX0pLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4OmksZ3JvdXA6cixvbjpTSCx0d2VlbjpNSCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gVEgodCxlKXt2YXIgbj1BSCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIENIKHQsZSl7dmFyIG49QUgodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24gQUgodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBrSCh0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgb1tyXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIExIKHQsZSl7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1DSCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIFBIKHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1DSCh0aGlzLHQpLGE9by50d2VlbjtpZihhIT09aSl7cj0oaT1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPXIubGVuZ3RoO2w8YzsrK2wpaWYocltsXS5uYW1lPT09ZSl7cltsXT1zO2JyZWFrfWw9PT1jJiZyLnB1c2gocyl9by50d2Vlbj1yfX1mdW5jdGlvbiBOSCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1DSCh0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBBSCh0LGkpLnZhbHVlW2VdfX1mdW5jdGlvbiBJSCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/VkI6ZSBpbnN0YW5jZW9mIGJCP0RCOihuPWJCKGUpKT8oZT1uLERCKTpXQikodCxlKX1mdW5jdGlvbiBSSCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gT0godCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiB6SCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGUodCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBESCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gQkgodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gSEgodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBGSCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gVkgodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBVSCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJlZIKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBqSCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJkZIKHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBHSCh0LGUpe3JldHVybiBmdW5jdGlvbigpe1RIKHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBXSCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7VEgodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiBxSCh0LGUpe3JldHVybiBmdW5jdGlvbigpe0NIKHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBZSCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7Q0godGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBYSCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtDSCh0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gJEgodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9USDpDSDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsdCkscz1hLm9uO3MhPT1pJiYocj0oaT1zKS5jb3B5KCkpLm9uKGUsbiksYS5vbj1yfX12YXIgS0g9dkQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFpIKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIEpIKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLGkpLG4pfX1mdW5jdGlvbiBRSCh0LGUsbil7dmFyIGkscjtmdW5jdGlvbiBvKCl7dmFyIG89ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1yJiYoaT0ocj1vKSYmSkgodCxvLG4pKSxpfXJldHVybiBvLl92YWx1ZT1lLG99ZnVuY3Rpb24gdEYodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIGVGKHQpe3ZhciBlLG47ZnVuY3Rpb24gaSgpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBpIT09biYmKGU9KG49aSkmJnRGKGkpKSxlfXJldHVybiBpLl92YWx1ZT10LGl9dmFyIG5GPTA7ZnVuY3Rpb24gaUYodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIHJGKCl7cmV0dXJuKytuRn12YXIgb0Y9dkQucHJvdG90eXBlO2lGLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aUYsc2VsZWN0OmZ1bmN0aW9uIGFGKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9eXoodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCxFSChoW2RdLGUsbixkLGgsQUgocyxuKSkpO3JldHVybiBuZXcgaUYobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiBzRih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWJ6KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPUFIKGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmRUgoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBpRihvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIGxGKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD14eih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgaUYoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBjRih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBpRihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiB1Rigpe3JldHVybiBuZXcgS0godGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIGhGKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPXJGKCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1BSChhLGUpO0VIKGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgaUYoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6b0YuY2FsbCxub2RlczpvRi5ub2Rlcyxub2RlOm9GLm5vZGUsc2l6ZTpvRi5zaXplLGVtcHR5Om9GLmVtcHR5LGVhY2g6b0YuZWFjaCxvbjpmdW5jdGlvbiBkRih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/QUgodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKCRIKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gcEYodCxlKXt2YXIgbj1weih0KSxpPSJ0cmFuc2Zvcm0iPT09bj9vSDpJSDtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9ISDpCSCkobixpLE5IKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP09IOlJIKShuKToobi5sb2NhbD9ESDp6SCkobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIGZGKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1weih0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP1VIOmpIKShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gbUYodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP2lIOklIO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUR6KHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxEeih0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsWkgodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9RHoodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9RHoodGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxOSCh0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9Q0godGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPVpIKGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1Eeih0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gZ0YodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksUUgodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIF9GKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKE5IKHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiB5Rih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsZUYodCkpfSxyZW1vdmU6ZnVuY3Rpb24gdkYoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gYkYodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPUFIKHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9MSDpQSCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24geEYodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9HSDpXSCkoZSx0KSk6QUgodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIHdGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/cUg6WUgpKGUsdCkpOkFIKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIFNGKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChYSChlLHQpKTpBSCh0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gTUYoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUNIKHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciBFRj17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6VGZ9O2Z1bmN0aW9uIFRGKHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIEVGLnRpbWU9bUgoKSxFRjtyZXR1cm4gbn1mdW5jdGlvbiBDRih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQUYodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiBrRigpe2xELnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIExGKCl7bEQucHJldmVudERlZmF1bHQoKSxsRC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12RC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIFBGKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7a0godGhpcyx0KX0pKX0sdkQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gTkYodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgaUY/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1yRigpLChuPUVGKS50aW1lPW1IKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmRUgoYSx0LGUsYyxzLG58fFRGKGEsZSkpO3JldHVybiBuZXcgaUYoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBJRj17bmFtZToiZHJhZyJ9LFJGPXtuYW1lOiJzcGFjZSJ9LE9GPXtuYW1lOiJoYW5kbGUifSx6Rj17bmFtZToiY2VudGVyIn0sREY9e25hbWU6IngiLGhhbmRsZXM6WyJlIiwidyJdLm1hcChXRiksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmW1t0WzBdLGVbMF1bMV1dLFt0WzFdLGVbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LEJGPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoV0YpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJltbZVswXVswXSx0WzBdXSxbZVsxXVswXSx0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxIRj17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwiZSIsInMiLCJ3IiwibnciLCJuZSIsInNlIiwic3ciXS5tYXAoV0YpLGlucHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxGRj17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sVkY9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LFVGPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSxqRj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxHRj17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBXRih0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiBxRigpe3JldHVybiFsRC5idXR0b259ZnVuY3Rpb24gWUYoKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gWEYodCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiAkRih0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uIEtGKHQpe3ZhciBlLG49WUYsaT1xRixyPWF6KGEsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxvPTY7ZnVuY3Rpb24gYShlKXt2YXIgbj1lLnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbV0YoIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsRkYub3ZlcmxheSkubWVyZ2UobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1YRih0aGlzKS5leHRlbnQ7YkQodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLGUuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbV0YoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsRkYuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIGk9ZS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtpLmV4aXQoKS5yZW1vdmUoKSxpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIEZGW3QudHlwZV19KSksZS5lYWNoKHMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpLm9uKCJtb3VzZWRvd24uYnJ1c2ggdG91Y2hzdGFydC5icnVzaCIsdSl9ZnVuY3Rpb24gcygpe3ZhciB0PWJEKHRoaXMpLGU9WEYodGhpcykuc2VsZWN0aW9uO2U/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGVbMF1bMF0pLmF0dHIoInkiLGVbMF1bMV0pLmF0dHIoIndpZHRoIixlWzFdWzBdLWVbMF1bMF0pLmF0dHIoImhlaWdodCIsZVsxXVsxXS1lWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/ZVsxXVswXS1vLzI6ZVswXVswXS1vLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9lWzFdWzFdLW8vMjplWzBdWzFdLW8vMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP2VbMV1bMF0tZVswXVswXStvOm99KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/ZVsxXVsxXS1lWzBdWzFdK286b30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdC5fX2JydXNoLmVtaXR0ZXJ8fG5ldyBjKHQsZSl9ZnVuY3Rpb24gYyh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTB9ZnVuY3Rpb24gdSgpe2lmKGxELnRvdWNoZXMpe2lmKGxELmNoYW5nZWRUb3VjaGVzLmxlbmd0aDxsRC50b3VjaGVzLmxlbmd0aClyZXR1cm4gTEYoKX1lbHNlIGlmKGUpcmV0dXJuO2lmKGkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLG8sYSxjLHUsaCxkLHAsZixtLGcsXyx5PXRoaXMsdj1sRC50YXJnZXQuX19kYXRhX18udHlwZSxiPSJzZWxlY3Rpb24iPT09KGxELm1ldGFLZXk/dj0ib3ZlcmxheSI6dik/SUY6bEQuYWx0S2V5P3pGOk9GLHg9dD09PUJGP251bGw6akZbdl0sdz10PT09REY/bnVsbDpHRlt2XSxTPVhGKHkpLE09Uy5leHRlbnQsRT1TLnNlbGVjdGlvbixUPU1bMF1bMF0sQz1NWzBdWzFdLEE9TVsxXVswXSxrPU1bMV1bMV0sTD14JiZ3JiZsRC5zaGlmdEtleSxQPXhEKHkpLE49UCxJPWwoeSxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09dj9TLnNlbGVjdGlvbj1FPVtbbj10PT09QkY/VDpQWzBdLG89dD09PURGP0M6UFsxXV0sW2M9dD09PUJGP0E6bixoPXQ9PT1ERj9rOm9dXToobj1FWzBdWzBdLG89RVswXVsxXSxjPUVbMV1bMF0saD1FWzFdWzFdKSxyPW4sYT1vLHU9YyxkPWg7dmFyIFI9YkQoeSkuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksTz1SLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLEZGW3ZdKTtpZihsRC50b3VjaGVzKVIub24oInRvdWNobW92ZS5icnVzaCIsRCwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixILCEwKTtlbHNle3ZhciB6PWJEKGxELnZpZXcpLm9uKCJrZXlkb3duLmJydXNoIixGLCEwKS5vbigia2V5dXAuYnJ1c2giLFYsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLEQsITApLm9uKCJtb3VzZXVwLmJydXNoIixILCEwKTtTRChsRC52aWV3KX1rRigpLGtIKHkpLHMuY2FsbCh5KSxJLnN0YXJ0KCl9ZnVuY3Rpb24gRCgpe3ZhciB0PXhEKHkpOyFMfHxnfHxffHwoTWF0aC5hYnModFswXS1OWzBdKT5NYXRoLmFicyh0WzFdLU5bMV0pP189ITA6Zz0hMCksTj10LG09ITAsTEYoKSxCKCl9ZnVuY3Rpb24gQigpe3ZhciB0O3N3aXRjaChwPU5bMF0tUFswXSxmPU5bMV0tUFsxXSxiKXtjYXNlIFJGOmNhc2UgSUY6eCYmKHA9TWF0aC5tYXgoVC1uLE1hdGgubWluKEEtYyxwKSkscj1uK3AsdT1jK3ApLHcmJihmPU1hdGgubWF4KEMtbyxNYXRoLm1pbihrLWgsZikpLGE9bytmLGQ9aCtmKTticmVhaztjYXNlIE9GOng8MD8ocD1NYXRoLm1heChULW4sTWF0aC5taW4oQS1uLHApKSxyPW4rcCx1PWMpOng+MCYmKHA9TWF0aC5tYXgoVC1jLE1hdGgubWluKEEtYyxwKSkscj1uLHU9YytwKSx3PDA/KGY9TWF0aC5tYXgoQy1vLE1hdGgubWluKGstbyxmKSksYT1vK2YsZD1oKTp3PjAmJihmPU1hdGgubWF4KEMtaCxNYXRoLm1pbihrLWgsZikpLGE9byxkPWgrZik7YnJlYWs7Y2FzZSB6Rjp4JiYocj1NYXRoLm1heChULE1hdGgubWluKEEsbi1wKngpKSx1PU1hdGgubWF4KFQsTWF0aC5taW4oQSxjK3AqeCkpKSx3JiYoYT1NYXRoLm1heChDLE1hdGgubWluKGssby1mKncpKSxkPU1hdGgubWF4KEMsTWF0aC5taW4oayxoK2YqdykpKX11PHImJih4Kj0tMSx0PW4sbj1jLGM9dCx0PXIscj11LHU9dCx2IGluIFZGJiZPLmF0dHIoImN1cnNvciIsRkZbdj1WRlt2XV0pKSxkPGEmJih3Kj0tMSx0PW8sbz1oLGg9dCx0PWEsYT1kLGQ9dCx2IGluIFVGJiZPLmF0dHIoImN1cnNvciIsRkZbdj1VRlt2XV0pKSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLGcmJihyPUVbMF1bMF0sdT1FWzFdWzBdKSxfJiYoYT1FWzBdWzFdLGQ9RVsxXVsxXSksRVswXVswXT09PXImJkVbMF1bMV09PT1hJiZFWzFdWzBdPT09dSYmRVsxXVsxXT09PWR8fChTLnNlbGVjdGlvbj1bW3IsYV0sW3UsZF1dLHMuY2FsbCh5KSxJLmJydXNoKCkpfWZ1bmN0aW9uIEgoKXtpZihrRigpLGxELnRvdWNoZXMpe2lmKGxELnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCksUi5vbigidG91Y2htb3ZlLmJydXNoIHRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixudWxsKX1lbHNlIE1EKGxELnZpZXcsbSksei5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7Ui5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLE8uYXR0cigiY3Vyc29yIixGRi5vdmVybGF5KSxTLnNlbGVjdGlvbiYmKEU9Uy5zZWxlY3Rpb24pLCRGKEUpJiYoUy5zZWxlY3Rpb249bnVsbCxzLmNhbGwoeSkpLEkuZW5kKCl9ZnVuY3Rpb24gRigpe3N3aXRjaChsRC5rZXlDb2RlKXtjYXNlIDE2Okw9eCYmdzticmVhaztjYXNlIDE4OmI9PT1PRiYmKHgmJihjPXUtcCp4LG49citwKngpLHcmJihoPWQtZip3LG89YStmKncpLGI9ekYsQigpKTticmVhaztjYXNlIDMyOmIhPT1PRiYmYiE9PXpGfHwoeDwwP2M9dS1wOng+MCYmKG49ci1wKSx3PDA/aD1kLWY6dz4wJiYobz1hLWYpLGI9UkYsTy5hdHRyKCJjdXJzb3IiLEZGLnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1MRigpfWZ1bmN0aW9uIFYoKXtzd2l0Y2gobEQua2V5Q29kZSl7Y2FzZSAxNjpMJiYoZz1fPUw9ITEsQigpKTticmVhaztjYXNlIDE4OmI9PT16RiYmKHg8MD9jPXU6eD4wJiYobj1yKSx3PDA/aD1kOnc+MCYmKG89YSksYj1PRixCKCkpO2JyZWFrO2Nhc2UgMzI6Yj09PVJGJiYobEQuYWx0S2V5Pyh4JiYoYz11LXAqeCxuPXIrcCp4KSx3JiYoaD1kLWYqdyxvPWErZip3KSxiPXpGKTooeDwwP2M9dTp4PjAmJihuPXIpLHc8MD9oPWQ6dz4wJiYobz1hKSxiPU9GKSxPLmF0dHIoImN1cnNvciIsRkZbdl0pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59TEYoKX19ZnVuY3Rpb24gaCgpe3ZhciBlPXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gZS5leHRlbnQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS5kaW09dCxlfXJldHVybiBhLm1vdmU9ZnVuY3Rpb24oZSxuKXtlLnNlbGVjdGlvbj9lLm9uKCJzdGFydC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIiwoZnVuY3Rpb24oKXtsKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2VlbigiYnJ1c2giLChmdW5jdGlvbigpe3ZhciBlPXRoaXMsaT1lLl9fYnJ1c2gscj1sKGUsYXJndW1lbnRzKSxvPWkuc2VsZWN0aW9uLGE9dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuLGkuZXh0ZW50KSxjPXFCKG8sYSk7ZnVuY3Rpb24gdSh0KXtpLnNlbGVjdGlvbj0xPT09dCYmJEYoYSk/bnVsbDpjKHQpLHMuY2FsbChlKSxyLmJydXNoKCl9cmV0dXJuIG8mJmE/dTp1KDEpfSkpOmUuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9YXJndW1lbnRzLHI9ZS5fX2JydXNoLG89dC5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KGUsaSk6bixyLmV4dGVudCksYT1sKGUsaSkuYmVmb3Jlc3RhcnQoKTtrSChlKSxyLnNlbGVjdGlvbj1udWxsPT1vfHwkRihvKT9udWxsOm8scy5jYWxsKGUpLGEuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxjLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmcmJih0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKGUpeyEoZnVuY3Rpb24gbih0LGUsaSxyKXt2YXIgbz1sRDt0LnNvdXJjZUV2ZW50PWxELGxEPXQ7dHJ5e2UuYXBwbHkoaSxyKX1maW5hbGx5e2xEPW99fSkobmV3IEFGKGEsZSx0Lm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLHIuYXBwbHkscixbZSx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxhLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNGKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxhKTpufSxhLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNGKCEhdCksYSk6aX0sYS5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGEpOm99LGEub249ZnVuY3Rpb24oKXt2YXIgdD1yLm9uLmFwcGx5KHIsYXJndW1lbnRzKTtyZXR1cm4gdD09PXI/YTp0fSxhfWZ1bmN0aW9uIFpGKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIEpGKHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfSEoZnVuY3Rpb24gUUYodCl7MT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gWkYodChlKSxuKX19KSh0KSl9KShaRik7dmFyIHRWPU1hdGguY29zLGVWPU1hdGguc2luLG5WPU1hdGguUEksaVY9blYvMixyVj0yKm5WLG9WPU1hdGgubWF4O2Z1bmN0aW9uIGFWKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0KGUuc291cmNlLnZhbHVlK2UudGFyZ2V0LnZhbHVlLG4uc291cmNlLnZhbHVlK24udGFyZ2V0LnZhbHVlKX19dmFyIHNWPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBsVih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIGNWPU1hdGguUEksdVY9MipjVixoVj0xZS02LGRWPXVWLWhWO2Z1bmN0aW9uIHBWKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gZlYoKXtyZXR1cm4gbmV3IHBWfWZ1bmN0aW9uIG1WKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBnVih0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gX1YodCl7cmV0dXJuIHQucmFkaXVzfWZ1bmN0aW9uIHlWKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gdlYodCl7cmV0dXJuIHQuZW5kQW5nbGV9cFYucHJvdG90eXBlPWZWLnByb3RvdHlwZT17Y29uc3RydWN0b3I6cFYsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPmhWKWlmKE1hdGguYWJzKHUqcy1sKmMpPmhWJiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKGNWLU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPmhWJiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSl9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5oVnx8TWF0aC5hYnModGhpcy5feTEtYyk+aFYpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCV1Vit1ViksaD5kVj90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5oViYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49Y1YpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgYlY9IiQiO2Z1bmN0aW9uIHhWKCl7fWZ1bmN0aW9uIHdWKHQsZSl7dmFyIG49bmV3IHhWO2lmKHQgaW5zdGFuY2VvZiB4Vil0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIFNWKCl7cmV0dXJue319ZnVuY3Rpb24gTVYodCxlLG4pe3RbZV09bn1mdW5jdGlvbiBFVigpe3JldHVybiB3VigpfWZ1bmN0aW9uIFRWKHQsZSxuKXt0LnNldChlLG4pfWZ1bmN0aW9uIENWKCl7fXhWLnByb3RvdHlwZT13Vi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnhWLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gYlYrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbYlYrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW2JWK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPWJWK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PWJWJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iViYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09YlYmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iViYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iViYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1iVilyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09YlYmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIEFWPXdWLnByb3RvdHlwZTtmdW5jdGlvbiBrVih0LGUpe3ZhciBuPW5ldyBDVjtpZih0IGluc3RhbmNlb2YgQ1YpdC5lYWNoKChmdW5jdGlvbih0KXtuLmFkZCh0KX0pKTtlbHNlIGlmKHQpe3ZhciBpPS0xLHI9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxyOyluLmFkZCh0W2ldKTtlbHNlIGZvcig7KytpPHI7KW4uYWRkKGUodFtpXSxpLHQpKX1yZXR1cm4gbn1mdW5jdGlvbiBMVih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gUFYodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gTlYoKXt9Q1YucHJvdG90eXBlPWtWLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q1YsaGFzOkFWLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbYlYrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6QVYucmVtb3ZlLGNsZWFyOkFWLmNsZWFyLHZhbHVlczpBVi5rZXlzLHNpemU6QVYuc2l6ZSxlbXB0eTpBVi5lbXB0eSxlYWNoOkFWLmVhY2h9O3ZhciBJVj0uNyxSVj0xL0lWLE9WPSJcXHMqKFsrLV0/XFxkKylcXHMqIix6Vj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixEVj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsQlY9L14jKFswLTlhLWZdezN9KSQvLEhWPS9eIyhbMC05YS1mXXs2fSkkLyxGVj1uZXcgUmVnRXhwKCJecmdiXFwoIitbT1YsT1YsT1ZdKyJcXCkkIiksVlY9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0RWLERWLERWXSsiXFwpJCIpLFVWPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbT1YsT1YsT1YselZdKyJcXCkkIiksalY9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tEVixEVixEVix6Vl0rIlxcKSQiKSxHVj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbelYsRFYsRFZdKyJcXCkkIiksV1Y9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1t6VixEVixEVix6Vl0rIlxcKSQiKSxxVj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBZVih0KXt2YXIgZTtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9QlYuZXhlYyh0KSk/bmV3IEpWKChlPXBhcnNlSW50KGVbMV0sMTYpKT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOihlPUhWLmV4ZWModCkpP1hWKHBhcnNlSW50KGVbMV0sMTYpKTooZT1GVi5leGVjKHQpKT9uZXcgSlYoZVsxXSxlWzJdLGVbM10sMSk6KGU9VlYuZXhlYyh0KSk/bmV3IEpWKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPVVWLmV4ZWModCkpPyRWKGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPWpWLmV4ZWModCkpPyRWKDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPUdWLmV4ZWModCkpP1FWKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9V1YuZXhlYyh0KSk/UVYoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpxVi5oYXNPd25Qcm9wZXJ0eSh0KT9YVihxVlt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IEpWKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gWFYodCl7cmV0dXJuIG5ldyBKVih0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gJFYodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBKVih0LGUsbixpKX1mdW5jdGlvbiBLVih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE5WfHwodD1ZVih0KSksdD9uZXcgSlYoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IEpWfWZ1bmN0aW9uIFpWKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9LVih0KTpuZXcgSlYodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIEpWKHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBRVih0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IG5VKHQsZSxuLGkpfWZ1bmN0aW9uIHRVKHQpe2lmKHQgaW5zdGFuY2VvZiBuVSlyZXR1cm4gbmV3IG5VKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIE5WfHwodD1ZVih0KSksIXQpcmV0dXJuIG5ldyBuVTtpZih0IGluc3RhbmNlb2YgblUpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBuVShhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGVVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90VSh0KTpuZXcgblUodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIG5VKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBpVSh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9TFYoTlYsWVYse2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn19KSxMVihKVixaVixQVihOVix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SVjpNYXRoLnBvdyhSVix0KSxuZXcgSlYodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SVY6TWF0aC5wb3coSVYsdCksbmV3IEpWKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiAwPD10aGlzLnImJnRoaXMucjw9MjU1JiYwPD10aGlzLmcmJnRoaXMuZzw9MjU1JiYwPD10aGlzLmImJnRoaXMuYjw9MjU1JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSksTFYoblUsZVUsUFYoTlYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UlY6TWF0aC5wb3coUlYsdCksbmV3IG5VKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/SVY6TWF0aC5wb3coSVYsdCksbmV3IG5VKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgSlYoaVUodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksaVUodCxyLGkpLGlVKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9fSkpO3ZhciByVT1NYXRoLlBJLzE4MCxvVT0xODAvTWF0aC5QSSxhVT0uOTUwNDcsc1U9MS4wODg4MyxsVT00LzI5LGNVPTYvMjksdVU9MypjVSpjVTtmdW5jdGlvbiBoVSh0KXtpZih0IGluc3RhbmNlb2YgcFUpcmV0dXJuIG5ldyBwVSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBiVSl7dmFyIGU9dC5oKnJVO3JldHVybiBuZXcgcFUodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX10IGluc3RhbmNlb2YgSlZ8fCh0PUtWKHQpKTt2YXIgbj1fVSh0LnIpLGk9X1UodC5nKSxyPV9VKHQuYiksbz1mVSgoLjQxMjQ1NjQqbisuMzU3NTc2MSppKy4xODA0Mzc1KnIpL2FVKSxhPWZVKCguMjEyNjcyOSpuKy43MTUxNTIyKmkrLjA3MjE3NSpyKS8xKTtyZXR1cm4gbmV3IHBVKDExNiphLTE2LDUwMCooby1hKSwyMDAqKGEtZlUoKC4wMTkzMzM5Km4rLjExOTE5MippKy45NTAzMDQxKnIpL3NVKSksdC5vcGFjaXR5KX1mdW5jdGlvbiBkVSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/aFUodCk6bmV3IHBVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBwVSh0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gZlUodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC91VStsVX1mdW5jdGlvbiBtVSh0KXtyZXR1cm4gdD5jVT90KnQqdDp1VSoodC1sVSl9ZnVuY3Rpb24gZ1UodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBfVSh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiB5VSh0KXtpZih0IGluc3RhbmNlb2YgYlUpcmV0dXJuIG5ldyBiVSh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBwVXx8KHQ9aFUodCkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqb1U7cmV0dXJuIG5ldyBiVShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiB2VSh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/eVUodCk6bmV3IGJVKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBiVSh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9TFYocFUsZFUsUFYoTlYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcFUodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwVSh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiB0PTEqbVUodCksbmV3IEpWKGdVKDMuMjQwNDU0MiooZT1hVSptVShlKSktMS41MzcxMzg1KnQtLjQ5ODUzMTQqKG49c1UqbVUobikpKSxnVSgtLjk2OTI2NiplKzEuODc2MDEwOCp0Ky4wNDE1NTYqbiksZ1UoLjA1NTY0MzQqZS0uMjA0MDI1OSp0KzEuMDU3MjI1MipuKSx0aGlzLm9wYWNpdHkpfX0pKSxMVihiVSx2VSxQVihOVix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBiVSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGJVKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIGhVKHRoaXMpLnJnYigpfX0pKTt2YXIgeFU9LS4yOTIyNyx3VT0tLjkwNjQ5LFNVPTEuOTcyOTQ7ZnVuY3Rpb24gTVUodCl7aWYodCBpbnN0YW5jZW9mIFRVKXJldHVybiBuZXcgVFUodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgSlZ8fCh0PUtWKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPSgtLjY1NTc2MzY2Njc5OTk5OTkqbit0LnIvMjU1Ki0xLjc4ODQ1MDM4MDYtMy41MTcyOTgyNDM4KmUpLy01Ljk2MTUxMjI5MTIscj1uLWksbz0oU1UqKGUtaSkteFUqcikvd1UsYT1NYXRoLnNxcnQobypvK3IqcikvKFNVKmkqKDEtaSkpLHM9YT9NYXRoLmF0YW4yKG8scikqb1UtMTIwOk5hTjtyZXR1cm4gbmV3IFRVKHM8MD9zKzM2MDpzLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIEVVKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9NVSh0KTpuZXcgVFUodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIFRVKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1MVihUVSxFVSxQVihOVix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SVjpNYXRoLnBvdyhSVix0KSxuZXcgVFUodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9JVjpNYXRoLnBvdyhJVix0KSxuZXcgVFUodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD1pc05hTih0aGlzLmgpPzA6KHRoaXMuaCsxMjApKnJVLGU9K3RoaXMubCxuPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqZSooMS1lKSxpPU1hdGguY29zKHQpLHI9TWF0aC5zaW4odCk7cmV0dXJuIG5ldyBKVigyNTUqKGUrbiooLS4xNDg2MSppKzEuNzgyNzcqcikpLDI1NSooZStuKih4VSppK3dVKnIpKSwyNTUqKGUrbiooU1UqaSkpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBDVT17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBBVSgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcga1UoaSl9ZnVuY3Rpb24ga1UodCl7dGhpcy5fPXR9ZnVuY3Rpb24gTFUodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFBVKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gTlUodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPUNVLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1rVS5wcm90b3R5cGU9QVUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprVSxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9TFUodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09TlUoaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1OVShpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49UFUoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcga1UodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBJVT17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBSVSgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBPVShpKX1mdW5jdGlvbiBPVSh0KXt0aGlzLl89dH1mdW5jdGlvbiB6VSh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gRFUodCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBCVSh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09SVUsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fU9VLnByb3RvdHlwZT1SVS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOk9VLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj16VSh0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT1CVShpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPUJVKGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1EVShpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBPVSh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIEhVPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixGVT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6SFUseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBWVSh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxGVS5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6RlVbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBVVSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PUhVJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1IVT9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24galUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gR1UodCl7dmFyIGU9VlUodCk7cmV0dXJuKGUubG9jYWw/alU6VVUpKGUpfWZ1bmN0aW9uIFdVKCl7fWZ1bmN0aW9uIHFVKHQpe3JldHVybiBudWxsPT10P1dVOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gWVUoKXtyZXR1cm5bXX1mdW5jdGlvbiBYVSh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiAkVSh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiBLVSh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgJFUodCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIFpVKHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyAkVSh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIEpVKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIFFVKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB0aih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGVqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gbmoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gaWoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIHJqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIG9qKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBhaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBzaih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIGxqKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIGNqKHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8b2oodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gdWoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGhqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBkaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBwaih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gZmoodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgbWoodCl9ZnVuY3Rpb24gbWoodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPXBqKHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gZ2oodCxlKXtmb3IodmFyIG49ZmoodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBfaih0LGUpe2Zvcih2YXIgbj1maih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIHlqKHQpe3JldHVybiBmdW5jdGlvbigpe2dqKHRoaXMsdCl9fWZ1bmN0aW9uIHZqKHQpe3JldHVybiBmdW5jdGlvbigpe19qKHRoaXMsdCl9fWZ1bmN0aW9uIGJqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2dqOl9qKSh0aGlzLHQpfX1mdW5jdGlvbiB4aigpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gd2oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBTaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gTWooKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBFaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBUaih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIENqKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIEFqKCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24ga2ooKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBMaigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIFBqKCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBOaigpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9JFUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokVSxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSxtai5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBJaj17fSxSaj1udWxsO2Z1bmN0aW9uIE9qKHQsZSxuKXtyZXR1cm4gdD16aih0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIHpqKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIHI9Umo7Umo9aTt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7Umo9cn19fWZ1bmN0aW9uIERqKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIEJqKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4saT0wLHI9LTEsbz1lLmxlbmd0aDtpPG87KytpKW49ZVtpXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytyXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysrcj9lLmxlbmd0aD1yOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBIaih0LGUsbil7dmFyIGk9SWouaGFzT3duUHJvcGVydHkodC50eXBlKT9Pajp6ajtyZXR1cm4gZnVuY3Rpb24ocixvLGEpe3ZhciBzLGw9dGhpcy5fX29uLGM9aShlLG8sYSk7aWYobClmb3IodmFyIHU9MCxoPWwubGVuZ3RoO3U8aDsrK3UpaWYoKHM9bFt1XSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9YyxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsYyxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOmMsY2FwdHVyZTpufSxsP2wucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBGaih0LGUsbixpKXt2YXIgcj1Sajt0LnNvdXJjZUV2ZW50PVJqLFJqPXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4saSl9ZmluYWxseXtSaj1yfX1mdW5jdGlvbiBWaih0LGUsbil7dmFyIGk9b2oodCkscj1pLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiByP3I9bmV3IHIoZSxuKToocj1pLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KHIuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksci5kZXRhaWw9bi5kZXRhaWwpOnIuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQocil9ZnVuY3Rpb24gVWoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVmoodGhpcyx0LGUpfX1mdW5jdGlvbiBqaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBWaih0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChJaj17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIEdqPVtudWxsXTtmdW5jdGlvbiBXaih0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBxaih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IFdqKFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgV2ooW1t0XV0sR2opfWZ1bmN0aW9uIFlqKCl7Zm9yKHZhciB0LGU9Umo7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gWGoodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiAkaih0KXt2YXIgZT1ZaigpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxYaih0LGUpfWZ1bmN0aW9uIEtqKHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT1ZaigpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIFhqKHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gWmooKXtSai5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBKaigpe1JqLnByZXZlbnREZWZhdWx0KCksUmouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gUWoodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1xaih0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLEpqLCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLEpqLCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiB0Ryh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9cWoodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsSmosITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBlRyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbkcodCxlLG4saSxyLG8sYSxzLGwsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9ZSx0aGlzLnN1YmplY3Q9bix0aGlzLmlkZW50aWZpZXI9aSx0aGlzLmFjdGl2ZT1yLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9cyx0aGlzLmR5PWwsdGhpcy5fPWN9ZnVuY3Rpb24gaUcoKXtyZXR1cm4hUmouYnV0dG9ufWZ1bmN0aW9uIHJHKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX1mdW5jdGlvbiBvRyh0KXtyZXR1cm4gbnVsbD09dD97eDpSai54LHk6UmoueX06dH1mdW5jdGlvbiBhRygpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gdGhpc31Xai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOldqLHNlbGVjdDpmdW5jdGlvbiBzRyh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cVUodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyBXaihpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gbEcodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBudWxsPT10P1lVOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19KSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9W10sbz1bXSxhPTA7YTxpOysrYSlmb3IodmFyIHMsbD1uW2FdLGM9bC5sZW5ndGgsdT0wO3U8YzsrK3UpKHM9bFt1XSkmJihyLnB1c2godC5jYWxsKHMscy5fX2RhdGFfXyx1LGwpKSxvLnB1c2gocykpO3JldHVybiBuZXcgV2oocixvKX0sZmlsdGVyOmZ1bmN0aW9uIGNHKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX0pKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pZm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1bXSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyx1LHMpJiZjLnB1c2goYSk7cmV0dXJuIG5ldyBXaihyLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIHVHKHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP1pVOktVLGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgV2oocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGhHKCl7cmV0dXJuIG5ldyBXaih0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChYVSksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gZEcoKXtyZXR1cm4gbmV3IFdqKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoWFUpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIHBHKHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBmRyh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBXaihvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBtRygpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gZ0codCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1KVSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgV2oocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIF9HKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiB5Rygpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gdkcoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIGJHKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiB4Rygpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiB3Ryh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gU0codCxlKXt2YXIgbj1WVSh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/dGo6UVU6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9yajppajpuLmxvY2FsP25qOmVqKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gTUcodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2FqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2xqOnNqKSh0LGUsbnVsbD09bj8iIjpuKSk6Y2oodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIEVHKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/dWo6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZGo6aGopKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIFRHKHQsZSl7dmFyIG49cGoodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9ZmoodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/Ymo6ZT95ajp2aikobixlKSl9LHRleHQ6ZnVuY3Rpb24gQ0codCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/eGo6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1NqOndqKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gQUcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TWo6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1RqOkVqKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBrRygpe3JldHVybiB0aGlzLmVhY2goQ2opfSxsb3dlcjpmdW5jdGlvbiBMRygpe3JldHVybiB0aGlzLmVhY2goQWopfSxhcHBlbmQ6ZnVuY3Rpb24gUEcodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpHVSh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gTkcodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkdVKHQpLGk9bnVsbD09ZT9rajoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOnFVKGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gSUcoKXtyZXR1cm4gdGhpcy5lYWNoKExqKX0sY2xvbmU6ZnVuY3Rpb24gUkcodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/Tmo6UGopfSxkYXR1bTpmdW5jdGlvbiBPRyh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIHpHKHQsZSxuKXt2YXIgaSxyLG89RGoodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/SGo6QmosbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBERyh0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2pqOlVqKSh0LGUpKX19LG5HLnByb3RvdHlwZS5vbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuXy5vbi5hcHBseSh0aGlzLl8sYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXMuXz90aGlzOnR9O3ZhciBCRz17fSxIRz17fTtmdW5jdGlvbiBGRyh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK3QubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KSsiOiBkWyIrZSsiXSJ9KSkuam9pbigiLCIpKyJ9Iil9ZnVuY3Rpb24gVkcodCl7dmFyIGU9bmV3IFJlZ0V4cCgnWyInK3QrIlxuXHJdIiksbj10LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gaSh0LGUpe3ZhciBpLHI9W10sbz10Lmxlbmd0aCxhPTAscz0wLGw9bzw9MCxjPSExO2Z1bmN0aW9uIHUoKXtpZihsKXJldHVybiBIRztpZihjKXJldHVybiBjPSExLEJHO3ZhciBlLGkscj1hO2lmKDM0PT09dC5jaGFyQ29kZUF0KHIpKXtmb3IoO2ErKzxvJiYzNCE9PXQuY2hhckNvZGVBdChhKXx8MzQ9PT10LmNoYXJDb2RlQXQoKythKTspO3JldHVybihlPWEpPj1vP2w9ITA6MTA9PT0oaT10LmNoYXJDb2RlQXQoYSsrKSk/Yz0hMDoxMz09PWkmJihjPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2EpLHQuc2xpY2UocisxLGUtMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7YTxvOyl7aWYoMTA9PT0oaT10LmNoYXJDb2RlQXQoZT1hKyspKSljPSEwO2Vsc2UgaWYoMTM9PT1pKWM9ITAsMTA9PT10LmNoYXJDb2RlQXQoYSkmJisrYTtlbHNlIGlmKGkhPT1uKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKHIsZSl9cmV0dXJuIGw9ITAsdC5zbGljZShyLG8pfWZvcigxMD09PXQuY2hhckNvZGVBdChvLTEpJiYtLW8sMTM9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vOyhpPXUoKSkhPT1IRzspe2Zvcih2YXIgaD1bXTtpIT09QkcmJmkhPT1IRzspaC5wdXNoKGkpLGk9dSgpO2UmJm51bGw9PShoPWUoaCxzKyspKXx8ci5wdXNoKGgpfXJldHVybiByfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUubWFwKG8pLmpvaW4odCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbD09dD8iIjplLnRlc3QodCs9IiIpPyciJyt0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6dH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24gYSh0LGUpe3ZhciBuLHIsbz1pKHQsKGZ1bmN0aW9uKHQsaSl7aWYobilyZXR1cm4gbih0LGktMSk7cj10LG49ZT8oZnVuY3Rpb24gbyh0LGUpe3ZhciBuPUZHKHQpO3JldHVybiBmdW5jdGlvbihpLHIpe3JldHVybiBlKG4oaSkscix0KX19KSh0LGUpOkZHKHQpfSkpO3JldHVybiBvLmNvbHVtbnM9cnx8W10sb30scGFyc2VSb3dzOmksZm9ybWF0OmZ1bmN0aW9uIHMoZSxuKXtyZXR1cm4gbnVsbD09biYmKG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKSxuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgaSBpbiB0KWkgaW4gZXx8bi5wdXNoKGVbaV09aSl9KSksbn0pKGUpKSxbbi5tYXAobykuam9pbih0KV0uY29uY2F0KGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvKGVbdF0pfSkpLmpvaW4odCl9KSkpLmpvaW4oIlxuIil9LGZvcm1hdFJvd3M6ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC5tYXAocikuam9pbigiXG4iKX19fXZhciBVRz1WRygiLCIpLGpHPVVHLnBhcnNlLEdHPVVHLnBhcnNlUm93cyxXRz1VRy5mb3JtYXQscUc9VUcuZm9ybWF0Um93cyxZRz1WRygiXHQiKSxYRz1ZRy5wYXJzZSwkRz1ZRy5wYXJzZVJvd3MsS0c9WUcuZm9ybWF0LFpHPVlHLmZvcm1hdFJvd3M7ZnVuY3Rpb24gSkcodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQ6LS10KigyLXQpKzEpLzJ9ZnVuY3Rpb24gUUcodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9dmFyIHRXPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIE1hdGgucG93KHQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxlVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxLU1hdGgucG93KDEtdCxlKX1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLG5XPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdyh0LGUpOjItTWF0aC5wb3coMi10LGUpKS8yfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksaVc9TWF0aC5QSSxyVz1pVy8yO2Z1bmN0aW9uIG9XKHQpe3JldHVybigxLU1hdGguY29zKGlXKnQpKS8yfWZ1bmN0aW9uIGFXKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3coMiwxMCp0LTEwKToyLU1hdGgucG93KDIsMTAtMTAqdCkpLzJ9ZnVuY3Rpb24gc1codCl7cmV0dXJuKCh0Kj0yKTw9MT8xLU1hdGguc3FydCgxLXQqdCk6TWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpLzJ9dmFyIGxXPTcuNTYyNTtmdW5jdGlvbiBjVyh0KXtyZXR1cm4odD0rdCk8LjM2MzYzNjM2MzYzNjM2MzY1P2xXKnQqdDp0PC43MjcyNzI3MjcyNzI3MjczP2xXKih0LT0uNTQ1NDU0NTQ1NDU0NTQ1NCkqdCsuNzU6dDwuOTA5MDkwOTA5MDkwOTA5MT9sVyoodC09LjgxODE4MTgxODE4MTgxODIpKnQrLjkzNzU6bFcqKHQtPS45NTQ1NDU0NTQ1NDU0NTQ2KSp0Ky45ODQzNzV9dmFyIHVXPTEuNzAxNTgsaFc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdCp0KigoZSsxKSp0LWUpfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKHVXKSxkVz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybi0tdCp0KigoZSsxKSp0K2UpKzF9cmV0dXJuIGU9K2Usbi5vdmVyc2hvb3Q9dCxufSkodVcpLHBXPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuKCh0Kj0yKTwxP3QqdCooKGUrMSkqdC1lKToodC09MikqdCooKGUrMSkqdCtlKSsyKS8yfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKHVXKSxmVz0yKk1hdGguUEksbVc9KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPWZXKTtmdW5jdGlvbiByKHQpe3JldHVybiBlKk1hdGgucG93KDIsMTAqLS10KSpNYXRoLnNpbigoaS10KS9uKX1yZXR1cm4gci5hbXBsaXR1ZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSxuKmZXKX0sci5wZXJpb2Q9ZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0scn0pKDEsLjMpLGdXPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz1mVyk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gMS1lKk1hdGgucG93KDIsLTEwKih0PSt0KSkqTWF0aC5zaW4oKHQraSkvbil9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbipmVyl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxfVz0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89ZlcpO2Z1bmN0aW9uIHIodCl7cmV0dXJuKCh0PTIqdC0xKTwwP2UqTWF0aC5wb3coMiwxMCp0KSpNYXRoLnNpbigoaS10KS9uKToyLWUqTWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKGkrdCkvbikpLzJ9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbipmVyl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKTtmdW5jdGlvbiB5Vyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdlcoKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9ZnVuY3Rpb24gYlcodCxlLG4saSl7aWYoaXNOYU4oZSl8fGlzTmFOKG4pKXJldHVybiB0O3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwPXQuX3Jvb3QsZj17ZGF0YTppfSxtPXQuX3gwLGc9dC5feTAsXz10Ll94MSx5PXQuX3kxO2lmKCFwKXJldHVybiB0Ll9yb290PWYsdDtmb3IoO3AubGVuZ3RoOylpZigoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YSxyPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gcltoXT1mLHQ7aWYocz0rdC5feC5jYWxsKG51bGwscC5kYXRhKSxsPSt0Ll95LmNhbGwobnVsbCxwLmRhdGEpLGU9PT1zJiZuPT09bClyZXR1cm4gZi5uZXh0PXAscj9yW2hdPWY6dC5fcm9vdD1mLHQ7ZG97cj1yP3JbaF09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hfXdoaWxlKChoPXU8PDF8Yyk9PShkPShsPj1hKTw8MXxzPj1vKSk7cmV0dXJuIHJbZF09cCxyW2hdPWYsdH1mdW5jdGlvbiB4Vyh0LGUsbixpLHIpe3RoaXMubm9kZT10LHRoaXMueDA9ZSx0aGlzLnkwPW4sdGhpcy54MT1pLHRoaXMueTE9cn1mdW5jdGlvbiB3Vyh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBTVyh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBNVyh0LGUsbil7dmFyIGk9bmV3IEVXKG51bGw9PWU/d1c6ZSxudWxsPT1uP1NXOm4sTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9pOmkuYWRkQWxsKHQpfWZ1bmN0aW9uIEVXKHQsZSxuLGkscixvKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24gVFcodCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0sbj1lO3Q9dC5uZXh0OyluPW4ubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfXZhciBDVz1NVy5wcm90b3R5cGU9RVcucHJvdG90eXBlO2Z1bmN0aW9uIEFXKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiBrVyh0KXtyZXR1cm4gdC55K3Qudnl9Q1cuY29weT1mdW5jdGlvbigpe3ZhciB0LGUsbj1uZXcgRVcodGhpcy5feCx0aGlzLl95LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSxpPXRoaXMuX3Jvb3Q7aWYoIWkpcmV0dXJuIG47aWYoIWkubGVuZ3RoKXJldHVybiBuLl9yb290PVRXKGkpLG47Zm9yKHQ9W3tzb3VyY2U6aSx0YXJnZXQ6bi5fcm9vdD1uZXcgQXJyYXkoNCl9XTtpPXQucG9wKCk7KWZvcih2YXIgcj0wO3I8NDsrK3IpKGU9aS5zb3VyY2Vbcl0pJiYoZS5sZW5ndGg/dC5wdXNoKHtzb3VyY2U6ZSx0YXJnZXQ6aS50YXJnZXRbcl09bmV3IEFycmF5KDQpfSk6aS50YXJnZXRbcl09VFcoZSkpO3JldHVybiBufSxDVy5hZGQ9ZnVuY3Rpb24gTFcodCl7dmFyIGU9K3RoaXMuX3guY2FsbChudWxsLHQpLG49K3RoaXMuX3kuY2FsbChudWxsLHQpO3JldHVybiBiVyh0aGlzLmNvdmVyKGUsbiksZSxuLHQpfSxDVy5hZGRBbGw9ZnVuY3Rpb24gUFcodCl7dmFyIGUsbixpLHIsbz10Lmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKSxsPTEvMCxjPTEvMCx1PS0xLzAsaD0tMS8wO2ZvcihuPTA7bjxvOysrbilpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCxlPXRbbl0pKXx8aXNOYU4ocj0rdGhpcy5feS5jYWxsKG51bGwsZSkpfHwoYVtuXT1pLHNbbl09cixpPGwmJihsPWkpLGk+dSYmKHU9aSkscjxjJiYoYz1yKSxyPmgmJihoPXIpKTtpZihsPnV8fGM+aClyZXR1cm4gdGhpcztmb3IodGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCksbj0wO248bzsrK24pYlcodGhpcyxhW25dLHNbbl0sdFtuXSk7cmV0dXJuIHRoaXN9LENXLmNvdmVyPWZ1bmN0aW9uIE5XKHQsZSl7aWYoaXNOYU4odD0rdCl8fGlzTmFOKGU9K2UpKXJldHVybiB0aGlzO3ZhciBuPXRoaXMuX3gwLGk9dGhpcy5feTAscj10aGlzLl94MSxvPXRoaXMuX3kxO2lmKGlzTmFOKG4pKXI9KG49TWF0aC5mbG9vcih0KSkrMSxvPShpPU1hdGguZmxvb3IoZSkpKzE7ZWxzZXtmb3IodmFyIGEscyxsPXItbixjPXRoaXMuX3Jvb3Q7bj50fHx0Pj1yfHxpPmV8fGU+PW87KXN3aXRjaChzPShlPGkpPDwxfHQ8biwoYT1uZXcgQXJyYXkoNCkpW3NdPWMsYz1hLGwqPTIscyl7Y2FzZSAwOnI9bitsLG89aStsO2JyZWFrO2Nhc2UgMTpuPXItbCxvPWkrbDticmVhaztjYXNlIDI6cj1uK2wsaT1vLWw7YnJlYWs7Y2FzZSAzOm49ci1sLGk9by1sfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1jKX1yZXR1cm4gdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzfSxDVy5kYXRhPWZ1bmN0aW9uIElXKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3t0LnB1c2goZS5kYXRhKX13aGlsZShlPWUubmV4dCl9KSksdH0sQ1cuZXh0ZW50PWZ1bmN0aW9uIFJXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuY292ZXIoK3RbMF1bMF0sK3RbMF1bMV0pLmNvdmVyKCt0WzFdWzBdLCt0WzFdWzFdKTppc05hTih0aGlzLl94MCk/dm9pZCAwOltbdGhpcy5feDAsdGhpcy5feTBdLFt0aGlzLl94MSx0aGlzLl95MV1dfSxDVy5maW5kPWZ1bmN0aW9uIE9XKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PXRoaXMuX3gwLGg9dGhpcy5feTAsZD10aGlzLl94MSxwPXRoaXMuX3kxLGY9W10sbT10aGlzLl9yb290O2ZvcihtJiZmLnB1c2gobmV3IHhXKG0sdSxoLGQscCkpLG51bGw9PW4/bj0xLzA6KHU9dC1uLGg9ZS1uLGQ9dCtuLHA9ZStuLG4qPW4pO2w9Zi5wb3AoKTspaWYoISghKG09bC5ub2RlKXx8KHI9bC54MCk+ZHx8KG89bC55MCk+cHx8KGE9bC54MSk8dXx8KHM9bC55MSk8aCkpaWYobS5sZW5ndGgpe3ZhciBnPShyK2EpLzIsXz0obytzKS8yO2YucHVzaChuZXcgeFcobVszXSxnLF8sYSxzKSxuZXcgeFcobVsyXSxyLF8sZyxzKSxuZXcgeFcobVsxXSxnLG8sYSxfKSxuZXcgeFcobVswXSxyLG8sZyxfKSksKGM9KGU+PV8pPDwxfHQ+PWcpJiYobD1mW2YubGVuZ3RoLTFdLGZbZi5sZW5ndGgtMV09ZltmLmxlbmd0aC0xLWNdLGZbZi5sZW5ndGgtMS1jXT1sKX1lbHNle3ZhciB5PXQtK3RoaXMuX3guY2FsbChudWxsLG0uZGF0YSksdj1lLSt0aGlzLl95LmNhbGwobnVsbCxtLmRhdGEpLGI9eSp5K3YqdjtpZihiPG4pe3ZhciB4PU1hdGguc3FydChuPWIpO3U9dC14LGg9ZS14LGQ9dCt4LHA9ZSt4LGk9bS5kYXRhfX1yZXR1cm4gaX0sQ1cucmVtb3ZlPWZ1bmN0aW9uIHpXKHQpe2lmKGlzTmFOKG89K3RoaXMuX3guY2FsbChudWxsLHQpKXx8aXNOYU4oYT0rdGhpcy5feS5jYWxsKG51bGwsdCkpKXJldHVybiB0aGlzO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGgsZCxwPXRoaXMuX3Jvb3QsZj10aGlzLl94MCxtPXRoaXMuX3kwLGc9dGhpcy5feDEsXz10aGlzLl95MTtpZighcClyZXR1cm4gdGhpcztpZihwLmxlbmd0aClmb3IoOzspe2lmKChjPW8+PShzPShmK2cpLzIpKT9mPXM6Zz1zLCh1PWE+PShsPShtK18pLzIpKT9tPWw6Xz1sLGU9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiB0aGlzO2lmKCFwLmxlbmd0aClicmVhazsoZVtoKzEmM118fGVbaCsyJjNdfHxlW2grMyYzXSkmJihuPWUsZD1oKX1mb3IoO3AuZGF0YSE9PXQ7KWlmKGk9cCwhKHA9cC5uZXh0KSlyZXR1cm4gdGhpcztyZXR1cm4ocj1wLm5leHQpJiZkZWxldGUgcC5uZXh0LGk/KHI/aS5uZXh0PXI6ZGVsZXRlIGkubmV4dCx0aGlzKTplPyhyP2VbaF09cjpkZWxldGUgZVtoXSwocD1lWzBdfHxlWzFdfHxlWzJdfHxlWzNdKSYmcD09PShlWzNdfHxlWzJdfHxlWzFdfHxlWzBdKSYmIXAubGVuZ3RoJiYobj9uW2RdPXA6dGhpcy5fcm9vdD1wKSx0aGlzKToodGhpcy5fcm9vdD1yLHRoaXMpfSxDVy5yZW1vdmVBbGw9ZnVuY3Rpb24gRFcodCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXRoaXMucmVtb3ZlKHRbZV0pO3JldHVybiB0aGlzfSxDVy5yb290PWZ1bmN0aW9uIEJXKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LENXLnNpemU9ZnVuY3Rpb24gSFcoKXt2YXIgdD0wO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97Kyt0fXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxDVy52aXNpdD1mdW5jdGlvbiBGVyh0KXt2YXIgZSxuLGkscixvLGEscz1bXSxsPXRoaXMuX3Jvb3Q7Zm9yKGwmJnMucHVzaChuZXcgeFcobCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9cy5wb3AoKTspaWYoIXQobD1lLm5vZGUsaT1lLngwLHI9ZS55MCxvPWUueDEsYT1lLnkxKSYmbC5sZW5ndGgpe3ZhciBjPShpK28pLzIsdT0ocithKS8yOyhuPWxbM10pJiZzLnB1c2gobmV3IHhXKG4sYyx1LG8sYSkpLChuPWxbMl0pJiZzLnB1c2gobmV3IHhXKG4saSx1LGMsYSkpLChuPWxbMV0pJiZzLnB1c2gobmV3IHhXKG4sYyxyLG8sdSkpLChuPWxbMF0pJiZzLnB1c2gobmV3IHhXKG4saSxyLGMsdSkpfXJldHVybiB0aGlzfSxDVy52aXNpdEFmdGVyPWZ1bmN0aW9uIFZXKHQpe3ZhciBlLG49W10saT1bXTtmb3IodGhpcy5fcm9vdCYmbi5wdXNoKG5ldyB4Vyh0aGlzLl9yb290LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1uLnBvcCgpOyl7dmFyIHI9ZS5ub2RlO2lmKHIubGVuZ3RoKXt2YXIgbyxhPWUueDAscz1lLnkwLGw9ZS54MSxjPWUueTEsdT0oYStsKS8yLGg9KHMrYykvMjsobz1yWzBdKSYmbi5wdXNoKG5ldyB4VyhvLGEscyx1LGgpKSwobz1yWzFdKSYmbi5wdXNoKG5ldyB4VyhvLHUscyxsLGgpKSwobz1yWzJdKSYmbi5wdXNoKG5ldyB4VyhvLGEsaCx1LGMpKSwobz1yWzNdKSYmbi5wdXNoKG5ldyB4VyhvLHUsaCxsLGMpKX1pLnB1c2goZSl9Zm9yKDtlPWkucG9wKCk7KXQoZS5ub2RlLGUueDAsZS55MCxlLngxLGUueTEpO3JldHVybiB0aGlzfSxDVy54PWZ1bmN0aW9uIFVXKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PXQsdGhpcyk6dGhpcy5feH0sQ1cueT1mdW5jdGlvbiBqVyh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feT10LHRoaXMpOnRoaXMuX3l9O3ZhciBHVz0iJCI7ZnVuY3Rpb24gV1coKXt9ZnVuY3Rpb24gcVcodCxlKXt2YXIgbj1uZXcgV1c7aWYodCBpbnN0YW5jZW9mIFdXKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gWVcoKXt9V1cucHJvdG90eXBlPXFXLnByb3RvdHlwZT17Y29uc3RydWN0b3I6V1csaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBHVyt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tHVyt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbR1crdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9R1crdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09R1cmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUdXJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1HVyYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUdXJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUdXJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PUdXKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1HVyYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgWFc9cVcucHJvdG90eXBlO2Z1bmN0aW9uICRXKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIEtXKHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufVlXLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WVcsaGFzOlhXLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbR1crKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6WFcucmVtb3ZlLGNsZWFyOlhXLmNsZWFyLHZhbHVlczpYVy5rZXlzLHNpemU6WFcuc2l6ZSxlbXB0eTpYVy5lbXB0eSxlYWNoOlhXLmVhY2h9O3ZhciBaVz17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBKVygpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBRVyhpKX1mdW5jdGlvbiBRVyh0KXt0aGlzLl89dH1mdW5jdGlvbiB0cSh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gZXEodCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBucSh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09WlcsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fVFXLnByb3RvdHlwZT1KVy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlFXLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj10cSh0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT1ucShpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPW5xKGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1lcShpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBRVyh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIGlxLHJxLG9xPTAsYXE9MCxzcT0wLGxxPTAsY3E9MCx1cT0wLGhxPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLGRxPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHBxKCl7cmV0dXJuIGNxfHwoZHEoZnEpLGNxPWhxLm5vdygpK3VxKX1mdW5jdGlvbiBmcSgpe2NxPTB9ZnVuY3Rpb24gbXEoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIGdxKHQsZSxuKXt2YXIgaT1uZXcgbXE7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBfcSgpe2NxPShscT1ocS5ub3coKSkrdXEsb3E9YXE9MDt0cnl7IShmdW5jdGlvbiB0KCl7cHEoKSwrK29xO2Zvcih2YXIgdCxlPWlxO2U7KSh0PWNxLWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1vcX0pKCl9ZmluYWxseXtvcT0wLChmdW5jdGlvbiBlKCl7Zm9yKHZhciB0LGUsbj1pcSxpPTEvMDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6aXE9ZSk7cnE9dCx2cShpKX0pKCksY3E9MH19ZnVuY3Rpb24geXEoKXt2YXIgdD1ocS5ub3coKSxlPXQtbHE7ZT4xZTMmJih1cS09ZSxscT10KX1mdW5jdGlvbiB2cSh0KXtvcXx8KGFxJiYoYXE9Y2xlYXJUaW1lb3V0KGFxKSksdC1jcT4yND8odDwxLzAmJihhcT1zZXRUaW1lb3V0KF9xLHQtaHEubm93KCktdXEpKSxzcSYmKHNxPWNsZWFySW50ZXJ2YWwoc3EpKSk6KHNxfHwobHE9aHEubm93KCksc3E9c2V0SW50ZXJ2YWwoeXEsMWUzKSksb3E9MSxkcShfcSkpKX1mdW5jdGlvbiBicSh0KXtyZXR1cm4gdC54fWZ1bmN0aW9uIHhxKHQpe3JldHVybiB0Lnl9bXEucHJvdG90eXBlPWdxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bXEscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3BxKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fHJxPT09dGhpc3x8KHJxP3JxLl9uZXh0PXRoaXM6aXE9dGhpcyxycT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHZxKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHZxKCkpfX07dmFyIHdxLFNxPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBNcSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBFcSh0KXtyZXR1cm4odD1NcShNYXRoLmFicyh0KSkpP3RbMV06TmFOfWZ1bmN0aW9uIFRxKHQsZSl7dmFyIG49TXEodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX12YXIgQ3E9eyIiOmZ1bmN0aW9uIEFxKHQsZSl7dDpmb3IodmFyIG4saT0odD10LnRvUHJlY2lzaW9uKGUpKS5sZW5ndGgscj0xLG89LTE7cjxpOysrcilzd2l0Y2godFtyXSl7Y2FzZSIuIjpvPW49cjticmVhaztjYXNlIjAiOjA9PT1vJiYobz1yKSxuPXI7YnJlYWs7Y2FzZSJlIjpicmVhayB0O2RlZmF1bHQ6bz4wJiYobz0wKX1yZXR1cm4gbz4wP3Quc2xpY2UoMCxvKSt0LnNsaWNlKG4rMSk6dH0sIiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gVHEoMTAwKnQsZSl9LHI6VHEsczpmdW5jdGlvbiBrcSh0LGUpe3ZhciBuPU1xKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLSh3cT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK01xKHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19LExxPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLVwoIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KFthLXolXSk/JC9pO2Z1bmN0aW9uIFBxKHQpe3JldHVybiBuZXcgTnEodCl9ZnVuY3Rpb24gTnEodCl7aWYoIShlPUxxLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGUsbj1lWzFdfHwiICIsaT1lWzJdfHwiPiIscj1lWzNdfHwiLSIsbz1lWzRdfHwiIixhPSEhZVs1XSxzPWVbNl0mJitlWzZdLGw9ISFlWzddLGM9ZVs4XSYmK2VbOF0uc2xpY2UoMSksdT1lWzldfHwiIjsibiI9PT11PyhsPSEwLHU9ImciKTpDcVt1XXx8KHU9IiIpLChhfHwiMCI9PT1uJiYiPSI9PT1pKSYmKGE9ITAsbj0iMCIsaT0iPSIpLHRoaXMuZmlsbD1uLHRoaXMuYWxpZ249aSx0aGlzLnNpZ249cix0aGlzLnN5bWJvbD1vLHRoaXMuemVybz1hLHRoaXMud2lkdGg9cyx0aGlzLmNvbW1hPWwsdGhpcy5wcmVjaXNpb249Yyx0aGlzLnR5cGU9dX1mdW5jdGlvbiBJcSh0KXtyZXR1cm4gdH1QcS5wcm90b3R5cGU9TnEucHJvdG90eXBlLE5xLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyhudWxsPT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsobnVsbD09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpK3RoaXMudHlwZX07dmFyIFJxLE9xLHpxLERxPVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBCcSh0KXt2YXIgZT10Lmdyb3VwaW5nJiZ0LnRob3VzYW5kcz8oZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKHQuZ3JvdXBpbmcsdC50aG91c2FuZHMpOklxLGk9dC5jdXJyZW5jeSxyPXQuZGVjaW1hbCxvPXQubnVtZXJhbHM/KGZ1bmN0aW9uIGEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KSh0Lm51bWVyYWxzKTpJcSxzPXQucGVyY2VudHx8IiUiO2Z1bmN0aW9uIGwodCl7dmFyIG49KHQ9UHEodCkpLmZpbGwsYT10LmFsaWduLGw9dC5zaWduLGM9dC5zeW1ib2wsdT10Lnplcm8saD10LndpZHRoLGQ9dC5jb21tYSxwPXQucHJlY2lzaW9uLGY9dC50eXBlLG09IiQiPT09Yz9pWzBdOiIjIj09PWMmJi9bYm94WF0vLnRlc3QoZik/IjAiK2YudG9Mb3dlckNhc2UoKToiIixnPSIkIj09PWM/aVsxXTovWyVwXS8udGVzdChmKT9zOiIiLF89Q3FbZl0seT0hZnx8L1tkZWZncHJzJV0vLnRlc3QoZik7ZnVuY3Rpb24gdih0KXt2YXIgaSxzLGMsdj1tLGI9ZztpZigiYyI9PT1mKWI9Xyh0KStiLHQ9IiI7ZWxzZXt2YXIgeD0odD0rdCk8MDtpZih0PV8oTWF0aC5hYnModCkscCkseCYmMD09K3QmJih4PSExKSx2PSh4PyIoIj09PWw/bDoiLSI6Ii0iPT09bHx8IigiPT09bD8iIjpsKSt2LGI9KCJzIj09PWY/RHFbOCt3cS8zXToiIikrYisoeCYmIigiPT09bD8iKSI6IiIpLHkpZm9yKGk9LTEscz10Lmxlbmd0aDsrK2k8czspaWYoNDg+KGM9dC5jaGFyQ29kZUF0KGkpKXx8Yz41Nyl7Yj0oNDY9PT1jP3IrdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK2IsdD10LnNsaWNlKDAsaSk7YnJlYWt9fWQmJiF1JiYodD1lKHQsMS8wKSk7dmFyIHc9di5sZW5ndGgrdC5sZW5ndGgrYi5sZW5ndGgsUz13PGg/bmV3IEFycmF5KGgtdysxKS5qb2luKG4pOiIiO3N3aXRjaChkJiZ1JiYodD1lKFMrdCxTLmxlbmd0aD9oLWIubGVuZ3RoOjEvMCksUz0iIiksYSl7Y2FzZSI8Ijp0PXYrdCtiK1M7YnJlYWs7Y2FzZSI9Ijp0PXYrUyt0K2I7YnJlYWs7Y2FzZSJeIjp0PVMuc2xpY2UoMCx3PVMubGVuZ3RoPj4xKSt2K3QrYitTLnNsaWNlKHcpO2JyZWFrO2RlZmF1bHQ6dD1TK3YrdCtifXJldHVybiBvKHQpfXJldHVybiBwPW51bGw9PXA/Zj82OjEyOi9bZ3Byc10vLnRlc3QoZik/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxwKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxwKSksdi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx2fXJldHVybntmb3JtYXQ6bCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gYyh0LGUpe3ZhciBuPWwoKCh0PVBxKHQpKS50eXBlPSJmIix0KSksaT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihFcShlKS8zKSkpLHI9TWF0aC5wb3coMTAsLWkpLG89RHFbOCtpLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihyKnQpK299fX19ZnVuY3Rpb24gSHEodCl7cmV0dXJuIFJxPUJxKHQpLE9xPVJxLmZvcm1hdCx6cT1ScS5mb3JtYXRQcmVmaXgsUnF9ZnVuY3Rpb24gRnEoKXtyZXR1cm4gbmV3IFZxfWZ1bmN0aW9uIFZxKCl7dGhpcy5yZXNldCgpfUhxKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pLFZxLnByb3RvdHlwZT17Y29uc3RydWN0b3I6VnEscmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnM9dGhpcy50PTB9LGFkZDpmdW5jdGlvbih0KXtqcShVcSx0LHRoaXMudCksanEodGhpcyxVcS5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9VXEudDp0aGlzLnM9VXEudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgVXE9bmV3IFZxO2Z1bmN0aW9uIGpxKHQsZSxuKXt2YXIgaT10LnM9ZStuLHI9aS1lO3QudD1lLShpLXIpKyhuLXIpfXZhciBHcT0xZS02LFdxPU1hdGguUEkscXE9V3EvMixZcT1XcS80LFhxPTIqV3EsJHE9MTgwL1dxLEtxPVdxLzE4MCxacT1NYXRoLmFicyxKcT1NYXRoLmF0YW4sUXE9TWF0aC5hdGFuMix0WT1NYXRoLmNvcyxlWT1NYXRoLmNlaWwsblk9TWF0aC5leHAsaVk9TWF0aC5sb2csclk9TWF0aC5wb3csb1k9TWF0aC5zaW4sYVk9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LHNZPU1hdGguc3FydCxsWT1NYXRoLnRhbjtmdW5jdGlvbiBjWSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9XcTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gdVkodCl7cmV0dXJuIHQ+MT9xcTp0PC0xPy1xcTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gaFkodCl7cmV0dXJuKHQ9b1kodC8yKSkqdH1mdW5jdGlvbiBkWSgpe31mdW5jdGlvbiBwWSh0LGUpe3QmJm1ZLmhhc093blByb3BlcnR5KHQudHlwZSkmJm1ZW3QudHlwZV0odCxlKX12YXIgZlk9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtwWSh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspcFkobltpXS5nZW9tZXRyeSxlKX19LG1ZPXtTcGhlcmU6ZnVuY3Rpb24odCxlKXtlLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LGUpe2UucG9pbnQoKHQ9dC5jb29yZGluYXRlcylbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspZS5wb2ludCgodD1uW2ldKVswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Z1kodC5jb29yZGluYXRlcyxlLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWdZKG5baV0sZSwwKX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe19ZKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspX1kobltpXSxlKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KXBZKG5baV0sZSl9fTtmdW5jdGlvbiBnWSh0LGUsbil7dmFyIGkscj0tMSxvPXQubGVuZ3RoLW47Zm9yKGUubGluZVN0YXJ0KCk7KytyPG87KWUucG9pbnQoKGk9dFtyXSlbMF0saVsxXSxpWzJdKTtlLmxpbmVFbmQoKX1mdW5jdGlvbiBfWSh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGUucG9seWdvblN0YXJ0KCk7KytuPGk7KWdZKHRbbl0sZSwxKTtlLnBvbHlnb25FbmQoKX1mdW5jdGlvbiB5WSh0LGUpe3QmJmZZLmhhc093blByb3BlcnR5KHQudHlwZSk/ZllbdC50eXBlXSh0LGUpOnBZKHQsZSl9dmFyIHZZLGJZLHhZLHdZLFNZLE1ZPUZxKCksRVk9RnEoKSxUWT17cG9pbnQ6ZFksbGluZVN0YXJ0OmRZLGxpbmVFbmQ6ZFkscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7TVkucmVzZXQoKSxUWS5saW5lU3RhcnQ9Q1ksVFkubGluZUVuZD1BWX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStNWTtFWS5hZGQodDwwP1hxK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9ZFl9LHNwaGVyZTpmdW5jdGlvbigpe0VZLmFkZChYcSl9fTtmdW5jdGlvbiBDWSgpe1RZLnBvaW50PWtZfWZ1bmN0aW9uIEFZKCl7TFkodlksYlkpfWZ1bmN0aW9uIGtZKHQsZSl7VFkucG9pbnQ9TFksdlk9dCxiWT1lLHhZPXQqPUtxLHdZPXRZKGU9KGUqPUtxKS8yK1lxKSxTWT1vWShlKX1mdW5jdGlvbiBMWSh0LGUpe3ZhciBuPSh0Kj1LcSkteFksaT1uPj0wPzE6LTEscj1pKm4sbz10WShlPShlKj1LcSkvMitZcSksYT1vWShlKSxzPVNZKmEsbD13WSpvK3MqdFkociksYz1zKmkqb1kocik7TVkuYWRkKFFxKGMsbCkpLHhZPXQsd1k9byxTWT1hfWZ1bmN0aW9uIFBZKHQpe3JldHVybltRcSh0WzFdLHRbMF0pLHVZKHRbMl0pXX1mdW5jdGlvbiBOWSh0KXt2YXIgZT10WzBdLG49dFsxXSxpPXRZKG4pO3JldHVybltpKnRZKGUpLGkqb1koZSksb1kobildfWZ1bmN0aW9uIElZKHQsZSl7cmV0dXJuIHRbMF0qZVswXSt0WzFdKmVbMV0rdFsyXSplWzJdfWZ1bmN0aW9uIFJZKHQsZSl7cmV0dXJuW3RbMV0qZVsyXS10WzJdKmVbMV0sdFsyXSplWzBdLXRbMF0qZVsyXSx0WzBdKmVbMV0tdFsxXSplWzBdXX1mdW5jdGlvbiBPWSh0LGUpe3RbMF0rPWVbMF0sdFsxXSs9ZVsxXSx0WzJdKz1lWzJdfWZ1bmN0aW9uIHpZKHQsZSl7cmV0dXJuW3RbMF0qZSx0WzFdKmUsdFsyXSplXX1mdW5jdGlvbiBEWSh0KXt2YXIgZT1zWSh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89ZSx0WzFdLz1lLHRbMl0vPWV9dmFyIEJZLEhZLEZZLFZZLFVZLGpZLEdZLFdZLHFZLFlZLFhZLCRZLEtZLFpZLEpZLFFZLHRYLGVYLG5YLGlYLHJYLG9YLGFYLHNYLGxYLGNYLHVYPUZxKCksaFg9e3BvaW50OmRYLGxpbmVTdGFydDpmWCxsaW5lRW5kOm1YLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2hYLnBvaW50PWdYLGhYLmxpbmVTdGFydD1fWCxoWC5saW5lRW5kPXlYLHVYLnJlc2V0KCksVFkucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtUWS5wb2x5Z29uRW5kKCksaFgucG9pbnQ9ZFgsaFgubGluZVN0YXJ0PWZYLGhYLmxpbmVFbmQ9bVgsTVk8MD8oQlk9LShGWT0xODApLEhZPS0oVlk9OTApKTp1WD5HcT9WWT05MDp1WDwtMWUtNiYmKEhZPS05MCksWVlbMF09QlksWVlbMV09Rll9fTtmdW5jdGlvbiBkWCh0LGUpe3FZLnB1c2goWVk9W0JZPXQsRlk9dF0pLGU8SFkmJihIWT1lKSxlPlZZJiYoVlk9ZSl9ZnVuY3Rpb24gcFgodCxlKXt2YXIgbj1OWShbdCpLcSxlKktxXSk7aWYoV1kpe3ZhciBpPVJZKFdZLG4pLHI9UlkoW2lbMV0sLWlbMF0sMF0saSk7RFkocikscj1QWShyKTt2YXIgbyxhPXQtVVkscz1hPjA/MTotMSxsPXJbMF0qJHEqcyxjPVpxKGEpPjE4MDtjXihzKlVZPGwmJmw8cyp0KT8obz1yWzFdKiRxKT5WWSYmKFZZPW8pOmNeKHMqVVk8KGw9KGwrMzYwKSUzNjAtMTgwKSYmbDxzKnQpPyhvPS1yWzFdKiRxKTxIWSYmKEhZPW8pOihlPEhZJiYoSFk9ZSksZT5WWSYmKFZZPWUpKSxjP3Q8VVk/dlgoQlksdCk+dlgoQlksRlkpJiYoRlk9dCk6dlgodCxGWSk+dlgoQlksRlkpJiYoQlk9dCk6Rlk+PUJZPyh0PEJZJiYoQlk9dCksdD5GWSYmKEZZPXQpKTp0PlVZP3ZYKEJZLHQpPnZYKEJZLEZZKSYmKEZZPXQpOnZYKHQsRlkpPnZYKEJZLEZZKSYmKEJZPXQpfWVsc2UgcVkucHVzaChZWT1bQlk9dCxGWT10XSk7ZTxIWSYmKEhZPWUpLGU+VlkmJihWWT1lKSxXWT1uLFVZPXR9ZnVuY3Rpb24gZlgoKXtoWC5wb2ludD1wWH1mdW5jdGlvbiBtWCgpe1lZWzBdPUJZLFlZWzFdPUZZLGhYLnBvaW50PWRYLFdZPW51bGx9ZnVuY3Rpb24gZ1godCxlKXtpZihXWSl7dmFyIG49dC1VWTt1WC5hZGQoWnEobik+MTgwP24rKG4+MD8zNjA6LTM2MCk6bil9ZWxzZSBqWT10LEdZPWU7VFkucG9pbnQodCxlKSxwWCh0LGUpfWZ1bmN0aW9uIF9YKCl7VFkubGluZVN0YXJ0KCl9ZnVuY3Rpb24geVgoKXtnWChqWSxHWSksVFkubGluZUVuZCgpLFpxKHVYKT5HcSYmKEJZPS0oRlk9MTgwKSksWVlbMF09QlksWVlbMV09RlksV1k9bnVsbH1mdW5jdGlvbiB2WCh0LGUpe3JldHVybihlLT10KTwwP2UrMzYwOmV9ZnVuY3Rpb24gYlgodCxlKXtyZXR1cm4gdFswXS1lWzBdfWZ1bmN0aW9uIHhYKHQsZSl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9ZSYmZTw9dFsxXTplPHRbMF18fHRbMV08ZX12YXIgd1g9e3NwaGVyZTpkWSxwb2ludDpTWCxsaW5lU3RhcnQ6RVgsbGluZUVuZDpBWCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt3WC5saW5lU3RhcnQ9a1gsd1gubGluZUVuZD1MWH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3dYLmxpbmVTdGFydD1FWCx3WC5saW5lRW5kPUFYfX07ZnVuY3Rpb24gU1godCxlKXt0Kj1LcTt2YXIgbj10WShlKj1LcSk7TVgobip0WSh0KSxuKm9ZKHQpLG9ZKGUpKX1mdW5jdGlvbiBNWCh0LGUsbil7KytYWSxLWSs9KHQtS1kpL1hZLFpZKz0oZS1aWSkvWFksSlkrPShuLUpZKS9YWX1mdW5jdGlvbiBFWCgpe3dYLnBvaW50PVRYfWZ1bmN0aW9uIFRYKHQsZSl7dCo9S3E7dmFyIG49dFkoZSo9S3EpO3NYPW4qdFkodCksbFg9bipvWSh0KSxjWD1vWShlKSx3WC5wb2ludD1DWCxNWChzWCxsWCxjWCl9ZnVuY3Rpb24gQ1godCxlKXt0Kj1LcTt2YXIgbj10WShlKj1LcSksaT1uKnRZKHQpLHI9bipvWSh0KSxvPW9ZKGUpLGE9UXEoc1koKGE9bFgqby1jWCpyKSphKyhhPWNYKmktc1gqbykqYSsoYT1zWCpyLWxYKmkpKmEpLHNYKmkrbFgqcitjWCpvKTskWSs9YSxRWSs9YSooc1grKHNYPWkpKSx0WCs9YSoobFgrKGxYPXIpKSxlWCs9YSooY1grKGNYPW8pKSxNWChzWCxsWCxjWCl9ZnVuY3Rpb24gQVgoKXt3WC5wb2ludD1TWH1mdW5jdGlvbiBrWCgpe3dYLnBvaW50PVBYfWZ1bmN0aW9uIExYKCl7Tlgob1gsYVgpLHdYLnBvaW50PVNYfWZ1bmN0aW9uIFBYKHQsZSl7b1g9dCxhWD1lLHQqPUtxLGUqPUtxLHdYLnBvaW50PU5YO3ZhciBuPXRZKGUpO3NYPW4qdFkodCksbFg9bipvWSh0KSxjWD1vWShlKSxNWChzWCxsWCxjWCl9ZnVuY3Rpb24gTlgodCxlKXt0Kj1LcTt2YXIgbj10WShlKj1LcSksaT1uKnRZKHQpLHI9bipvWSh0KSxvPW9ZKGUpLGE9bFgqby1jWCpyLHM9Y1gqaS1zWCpvLGw9c1gqci1sWCppLGM9c1koYSphK3MqcytsKmwpLHU9dVkoYyksaD1jJiYtdS9jO25YKz1oKmEsaVgrPWgqcyxyWCs9aCpsLCRZKz11LFFZKz11KihzWCsoc1g9aSkpLHRYKz11KihsWCsobFg9cikpLGVYKz11KihjWCsoY1g9bykpLE1YKHNYLGxYLGNYKX1mdW5jdGlvbiBJWCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUlgodCxlKXtmdW5jdGlvbiBuKG4saSl7cmV0dXJuIG49dChuLGkpLGUoblswXSxuWzFdKX1yZXR1cm4gdC5pbnZlcnQmJmUuaW52ZXJ0JiYobi5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4obj1lLmludmVydChuLGkpKSYmdC5pbnZlcnQoblswXSxuWzFdKX0pLG59ZnVuY3Rpb24gT1godCxlKXtyZXR1cm5bdD5XcT90LVhxOnQ8LVdxP3QrWHE6dCxlXX1mdW5jdGlvbiB6WCh0LGUsbil7cmV0dXJuKHQlPVhxKT9lfHxuP1JYKEJYKHQpLEhYKGUsbikpOkJYKHQpOmV8fG4/SFgoZSxuKTpPWH1mdW5jdGlvbiBEWCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPldxP2UtWHE6ZTwtV3E/ZStYcTplLG5dfX1mdW5jdGlvbiBCWCh0KXt2YXIgZT1EWCh0KTtyZXR1cm4gZS5pbnZlcnQ9RFgoLXQpLGV9ZnVuY3Rpb24gSFgodCxlKXt2YXIgbj10WSh0KSxpPW9ZKHQpLHI9dFkoZSksbz1vWShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9dFkoZSkscz10WSh0KSphLGw9b1kodCkqYSxjPW9ZKGUpLHU9YypuK3MqaTtyZXR1cm5bUXEobCpyLXUqbyxzKm4tYyppKSx1WSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9dFkoZSkscz10WSh0KSphLGw9b1kodCkqYSxjPW9ZKGUpLHU9YypyLWwqbztyZXR1cm5bUXEobCpyK2MqbyxzKm4rdSppKSx1WSh1Km4tcyppKV19LGF9ZnVuY3Rpb24gRlgodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qS3EsZVsxXSpLcSkpWzBdKj0kcSxlWzFdKj0kcSxlfXJldHVybiB0PXpYKHRbMF0qS3EsdFsxXSpLcSx0Lmxlbmd0aD4yP3RbMl0qS3E6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpLcSxlWzFdKktxKSlbMF0qPSRxLGVbMV0qPSRxLGV9LGV9ZnVuY3Rpb24gVlgodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPXRZKGUpLHM9b1koZSksbD1pKm47bnVsbD09cj8ocj1lK2kqWHEsbz1lLWwvMik6KHI9VVgoYSxyKSxvPVVYKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqWHEpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1QWShbYSwtcyp0WSh1KSwtcypvWSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gVVgodCxlKXsoZT1OWShlKSlbMF0tPXQsRFkoZSk7dmFyIG49Y1koLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStYcS1HcSklWHF9ZnVuY3Rpb24galgoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4pe3QucHVzaChbZSxuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpkWSxyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBuPWU7cmV0dXJuIGU9W10sdD1udWxsLG59fX1mdW5jdGlvbiBHWCh0LGUpe3JldHVybiBacSh0WzBdLWVbMF0pPEdxJiZacSh0WzFdLWVbMV0pPEdxfWZ1bmN0aW9uIFdYKHQsZSxuLGkpe3RoaXMueD10LHRoaXMuej1lLHRoaXMubz1uLHRoaXMuZT1pLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gcVgodCxlLG4saSxyKXt2YXIgbyxhLHM9W10sbD1bXTtpZih0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCEoKGU9dC5sZW5ndGgtMSk8PTApKXt2YXIgZSxuLGk9dFswXSxhPXRbZV07aWYoR1goaSxhKSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyLmxpbmVFbmQoKX1lbHNlIHMucHVzaChuPW5ldyBXWChpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IFdYKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IFdYKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgV1goYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksWVgocyksWVgobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIFlYKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fU9YLmludmVydD1PWDt2YXIgWFg9RnEoKTtmdW5jdGlvbiAkWCh0LGUpe3ZhciBuPWVbMF0saT1lWzFdLHI9W29ZKG4pLC10WShuKSwwXSxvPTAsYT0wO1hYLnJlc2V0KCk7Zm9yKHZhciBzPTAsbD10Lmxlbmd0aDtzPGw7KytzKWlmKHU9KGM9dFtzXSkubGVuZ3RoKWZvcih2YXIgYyx1LGg9Y1t1LTFdLGQ9aFswXSxwPWhbMV0vMitZcSxmPW9ZKHApLG09dFkocCksZz0wO2c8dTsrK2csZD15LGY9YixtPXgsaD1fKXt2YXIgXz1jW2ddLHk9X1swXSx2PV9bMV0vMitZcSxiPW9ZKHYpLHg9dFkodiksdz15LWQsUz13Pj0wPzE6LTEsTT1TKncsRT1NPldxLFQ9ZipiO2lmKFhYLmFkZChRcShUKlMqb1koTSksbSp4K1QqdFkoTSkpKSxvKz1FP3crUypYcTp3LEVeZD49bl55Pj1uKXt2YXIgQz1SWShOWShoKSxOWShfKSk7RFkoQyk7dmFyIEE9UlkocixDKTtEWShBKTt2YXIgaz0oRV53Pj0wPy0xOjEpKnVZKEFbMl0pOyhpPmt8fGk9PT1rJiYoQ1swXXx8Q1sxXSkpJiYoYSs9RV53Pj0wPzE6LTEpfX1yZXR1cm4obzwtMWUtNnx8bzxHcSYmWFg8LTFlLTYpXjEmYX1mdW5jdGlvbiBLWCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBaWCh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb31mdW5jdGlvbiBKWCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufWZ1bmN0aW9uIFFYKHQsZSxuLGkpe3JldHVybiBmdW5jdGlvbihyKXt2YXIgbyxhLHMsbD1lKHIpLGM9algoKSx1PWUoYyksaD0hMSxkPXtwb2ludDpwLGxpbmVTdGFydDptLGxpbmVFbmQ6Zyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtkLnBvaW50PV8sZC5saW5lU3RhcnQ9eSxkLmxpbmVFbmQ9dixhPVtdLG89W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtkLnBvaW50PXAsZC5saW5lU3RhcnQ9bSxkLmxpbmVFbmQ9ZyxhPUpYKGEpO3ZhciB0PSRYKG8saSk7YS5sZW5ndGg/KGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLHFYKGEsZSQsdCxuLHIpKTp0JiYoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpKSxoJiYoci5wb2x5Z29uRW5kKCksaD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe3IucG9seWdvblN0YXJ0KCksci5saW5lU3RhcnQoKSxuKG51bGwsbnVsbCwxLHIpLHIubGluZUVuZCgpLHIucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChlLG4pe3QoZSxuKSYmci5wb2ludChlLG4pfWZ1bmN0aW9uIGYodCxlKXtsLnBvaW50KHQsZSl9ZnVuY3Rpb24gbSgpe2QucG9pbnQ9ZixsLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGcoKXtkLnBvaW50PXAsbC5saW5lRW5kKCl9ZnVuY3Rpb24gXyh0LGUpe3MucHVzaChbdCxlXSksdS5wb2ludCh0LGUpfWZ1bmN0aW9uIHkoKXt1LmxpbmVTdGFydCgpLHM9W119ZnVuY3Rpb24gdigpe18oc1swXVswXSxzWzBdWzFdKSx1LmxpbmVFbmQoKTt2YXIgdCxlLG4saSxsPXUuY2xlYW4oKSxkPWMucmVzdWx0KCkscD1kLmxlbmd0aDtpZihzLnBvcCgpLG8ucHVzaChzKSxzPW51bGwscClpZigxJmwpe2lmKChlPShuPWRbMF0pLmxlbmd0aC0xKT4wKXtmb3IoaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksci5saW5lU3RhcnQoKSx0PTA7dDxlOysrdClyLnBvaW50KChpPW5bdF0pWzBdLGlbMV0pO3IubGluZUVuZCgpfX1lbHNlIHA+MSYmMiZsJiZkLnB1c2goZC5wb3AoKS5jb25jYXQoZC5zaGlmdCgpKSksYS5wdXNoKGQuZmlsdGVyKHQkKSl9cmV0dXJuIGR9fWZ1bmN0aW9uIHQkKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIGUkKHQsZSl7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLXFxLUdxOnFxLXRbMV0pLSgoZT1lLngpWzBdPDA/ZVsxXS1xcS1HcTpxcS1lWzFdKX0hKGZ1bmN0aW9uIG4kKHQpezE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIEtYKHQoZSksbil9fSkodCkpfSkoS1gpO3ZhciBpJD1RWCgoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiByJCh0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP1dxOi1XcSxsPVpxKG8tbik7WnEobC1XcSk8R3E/KHQucG9pbnQobixpPShpK2EpLzI+MD9xcTotcXEpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49V3EmJihacShuLXIpPEdxJiYobi09cipHcSksWnEoby1zKTxHcSYmKG8tPXMqR3EpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPW9ZKHQtbik7cmV0dXJuIFpxKGEpPkdxP0pxKChvWShlKSoobz10WShpKSkqb1kobiktb1koaSkqKHI9dFkoZSkpKm9ZKHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBvJCh0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLVdxLHI9bipxcSksaS5wb2ludCgwLHIpLGkucG9pbnQoV3EsciksaS5wb2ludChXcSwwKSxpLnBvaW50KFdxLC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLVdxLC1yKSxpLnBvaW50KC1XcSwwKSxpLnBvaW50KC1XcSxyKTtlbHNlIGlmKFpxKHRbMF0tZVswXSk+R3Epe3ZhciBvPXRbMF08ZVswXT9XcTotV3E7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1XcSwtcXFdKTtmdW5jdGlvbiBhJCh0KXt2YXIgZT10WSh0KSxuPTYqS3EsaT1lPjAscj1acShlKT5HcTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIHRZKHQpKnRZKG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPVJZKE5ZKHQpLE5ZKG4pKSxhPUlZKG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD1SWShyLG8pLGQ9elkocixjKTtPWShkLHpZKG8sdSkpO3ZhciBwPWgsZj1JWShkLHApLG09SVkocCxwKSxnPWYqZi1tKihJWShkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89c1koZykseT16WShwLCgtZi1fKS9tKTtpZihPWSh5LGQpLHk9UFkoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT1acShNLVdxKTxHcTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08R3E/RT93K1M+MF55WzFdPChacSh5WzBdLWIpPEdxP3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPldxXihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9elkocCwoLWYrXykvbSk7cmV0dXJuIE9ZKFQsZCksW3ksUFkoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpXcS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiBRWChvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP1dxOi1XcSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxHWChlLHApfHxHWChmLHApKSYmKGZbMF0rPUdxLGZbMV0rPUdxLG09byhmWzBdLGZbMV0pKSxtIT09bCl1PTAsbT8odC5saW5lU3RhcnQoKSxwPWEoZixlKSx0LnBvaW50KHBbMF0scFsxXSkpOihwPWEoZSxmKSx0LnBvaW50KHBbMF0scFsxXSksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSkpKX0hbXx8ZSYmR1goZSxmKXx8dC5wb2ludChmWzBdLGZbMV0pLGU9ZixsPW0sbj1nfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bCYmdC5saW5lRW5kKCksZT1udWxsfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiB1fChjJiZsKTw8MX19fSksKGZ1bmN0aW9uIGMoZSxpLHIsbyl7Vlgobyx0LG4scixlLGkpfSksaT9bMCwtdF06Wy1XcSx0LVdxXSl9dmFyIHMkPTFlOSxsJD0tcyQ7ZnVuY3Rpb24gYyQodCxlLG4saSl7ZnVuY3Rpb24gcihyLG8pe3JldHVybiB0PD1yJiZyPD1uJiZlPD1vJiZvPD1pfWZ1bmN0aW9uIG8ocixvLHMsYyl7dmFyIHU9MCxoPTA7aWYobnVsbD09cnx8KHU9YShyLHMpKSE9PShoPWEobyxzKSl8fGwocixvKTwwXnM+MClkb3tjLnBvaW50KDA9PT11fHwzPT09dT90Om4sdT4xP2k6ZSl9d2hpbGUoKHU9KHUrcys0KSU0KSE9PWgpO2Vsc2UgYy5wb2ludChvWzBdLG9bMV0pfWZ1bmN0aW9uIGEoaSxyKXtyZXR1cm4gWnEoaVswXS10KTxHcT9yPjA/MDozOlpxKGlbMF0tbik8R3E/cj4wPzI6MTpacShpWzFdLWUpPEdxP3I+MD8xOjA6cj4wPzM6Mn1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuIGwodC54LGUueCl9ZnVuY3Rpb24gbCh0LGUpe3ZhciBuPWEodCwxKSxpPWEoZSwxKTtyZXR1cm4gbiE9PWk/bi1pOjA9PT1uP2VbMV0tdFsxXToxPT09bj90WzBdLWVbMF06Mj09PW4/dFsxXS1lWzFdOmVbMF0tdFswXX1yZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGwsYyx1LGgsZCxwLGYsbSxnLF8seSx2PWEsYj1qWCgpLHg9e3BvaW50OlQsbGluZVN0YXJ0OmZ1bmN0aW9uIHcoKXt4LnBvaW50PUMsYyYmYy5wdXNoKHU9W10pLF89ITAsZz0hMSxmPW09TmFOfSxsaW5lRW5kOmZ1bmN0aW9uIFMoKXtsJiYoQyhoLGQpLHAmJmcmJmIucmVqb2luKCksbC5wdXNoKGIucmVzdWx0KCkpKSx4LnBvaW50PVQsZyYmdi5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbiBNKCl7dj1iLGw9W10sYz1bXSx5PSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uIEUoKXt2YXIgZT0oZnVuY3Rpb24gbigpe2Zvcih2YXIgZT0wLG49MCxyPWMubGVuZ3RoO248cjsrK24pZm9yKHZhciBvLGEscz1jW25dLGw9MSx1PXMubGVuZ3RoLGg9c1swXSxkPWhbMF0scD1oWzFdO2w8dTsrK2wpbz1kLGE9cCxkPShoPXNbbF0pWzBdLHA9aFsxXSxhPD1pP3A+aSYmKGQtbykqKGktYSk+KHAtYSkqKHQtbykmJisrZTpwPD1pJiYoZC1vKSooaS1hKTwocC1hKSoodC1vKSYmLS1lO3JldHVybiBlfSkoKSxyPXkmJmUsaD0obD1KWChsKSkubGVuZ3RoOyhyfHxoKSYmKGEucG9seWdvblN0YXJ0KCksciYmKGEubGluZVN0YXJ0KCksbyhudWxsLG51bGwsMSxhKSxhLmxpbmVFbmQoKSksaCYmcVgobCxzLGUsbyxhKSxhLnBvbHlnb25FbmQoKSksdj1hLGw9Yz11PW51bGx9fTtmdW5jdGlvbiBUKHQsZSl7cih0LGUpJiZ2LnBvaW50KHQsZSl9ZnVuY3Rpb24gQyhvLGEpe3ZhciBzPXIobyxhKTtpZihjJiZ1LnB1c2goW28sYV0pLF8paD1vLGQ9YSxwPXMsXz0hMSxzJiYodi5saW5lU3RhcnQoKSx2LnBvaW50KG8sYSkpO2Vsc2UgaWYocyYmZyl2LnBvaW50KG8sYSk7ZWxzZXt2YXIgbD1bZj1NYXRoLm1heChsJCxNYXRoLm1pbihzJCxmKSksbT1NYXRoLm1heChsJCxNYXRoLm1pbihzJCxtKSldLGI9W289TWF0aC5tYXgobCQsTWF0aC5taW4ocyQsbykpLGE9TWF0aC5tYXgobCQsTWF0aC5taW4ocyQsYSkpXTshKGZ1bmN0aW9uIHgodCxlLG4saSxyLG8pe3ZhciBhLHM9dFswXSxsPXRbMV0sYz0wLHU9MSxoPWVbMF0tcyxkPWVbMV0tbDtpZihhPW4tcyxofHwhKGE+MCkpe2lmKGEvPWgsaDwwKXtpZihhPGMpcmV0dXJuO2E8dSYmKHU9YSl9ZWxzZSBpZihoPjApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1pZihhPXItcyxofHwhKGE8MCkpe2lmKGEvPWgsaDwwKXtpZihhPnUpcmV0dXJuO2E+YyYmKGM9YSl9ZWxzZSBpZihoPjApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1pZihhPWktbCxkfHwhKGE+MCkpe2lmKGEvPWQsZDwwKXtpZihhPGMpcmV0dXJuO2E8dSYmKHU9YSl9ZWxzZSBpZihkPjApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1pZihhPW8tbCxkfHwhKGE8MCkpe2lmKGEvPWQsZDwwKXtpZihhPnUpcmV0dXJuO2E+YyYmKGM9YSl9ZWxzZSBpZihkPjApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1yZXR1cm4gYz4wJiYodFswXT1zK2MqaCx0WzFdPWwrYypkKSx1PDEmJihlWzBdPXMrdSpoLGVbMV09bCt1KmQpLCEwfX19fX0pKGwsYix0LGUsbixpKT9zJiYodi5saW5lU3RhcnQoKSx2LnBvaW50KG8sYSkseT0hMSk6KGd8fCh2LmxpbmVTdGFydCgpLHYucG9pbnQobFswXSxsWzFdKSksdi5wb2ludChiWzBdLGJbMV0pLHN8fHYubGluZUVuZCgpLHk9ITEpfWY9byxtPWEsZz1zfXJldHVybiB4fX12YXIgdSQsaCQsZCQscCQ9RnEoKSxmJD17c3BoZXJlOmRZLHBvaW50OmRZLGxpbmVTdGFydDpmdW5jdGlvbiBtJCgpe2YkLnBvaW50PV8kLGYkLmxpbmVFbmQ9ZyR9LGxpbmVFbmQ6ZFkscG9seWdvblN0YXJ0OmRZLHBvbHlnb25FbmQ6ZFl9O2Z1bmN0aW9uIGckKCl7ZiQucG9pbnQ9ZiQubGluZUVuZD1kWX1mdW5jdGlvbiBfJCh0LGUpe3UkPXQqPUtxLGgkPW9ZKGUqPUtxKSxkJD10WShlKSxmJC5wb2ludD15JH1mdW5jdGlvbiB5JCh0LGUpe3QqPUtxO3ZhciBuPW9ZKGUqPUtxKSxpPXRZKGUpLHI9WnEodC11JCksbz10WShyKSxhPWkqb1kocikscz1kJCpuLWgkKmkqbyxsPWgkKm4rZCQqaSpvO3AkLmFkZChRcShzWShhKmErcypzKSxsKSksdSQ9dCxoJD1uLGQkPWl9ZnVuY3Rpb24gdiQodCl7cmV0dXJuIHAkLnJlc2V0KCkseVkodCxmJCksK3AkfXZhciBiJD1bbnVsbCxudWxsXSx4JD17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6YiR9O2Z1bmN0aW9uIHckKHQsZSl7cmV0dXJuIGIkWzBdPXQsYiRbMV09ZSx2JCh4JCl9dmFyIFMkPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEUkKHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihFJChuW2ldLmdlb21ldHJ5LGUpKXJldHVybiEwO3JldHVybiExfX0sTSQ9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbih0LGUpe3JldHVybiBUJCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihUJChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEMkKHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoQyQobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbih0LGUpe3JldHVybiBBJCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKEEkKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10Lmdlb21ldHJpZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihFJChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfX07ZnVuY3Rpb24gRSQodCxlKXtyZXR1cm4hKCF0fHwhTSQuaGFzT3duUHJvcGVydHkodC50eXBlKSkmJk0kW3QudHlwZV0odCxlKX1mdW5jdGlvbiBUJCh0LGUpe3JldHVybiAwPT09dyQodCxlKX1mdW5jdGlvbiBDJCh0LGUpe3ZhciBuPXckKHRbMF0sdFsxXSk7cmV0dXJuIHckKHRbMF0sZSkrdyQoZSx0WzFdKTw9bitHcX1mdW5jdGlvbiBBJCh0LGUpe3JldHVybiEhJFgodC5tYXAoayQpLEwkKGUpKX1mdW5jdGlvbiBrJCh0KXtyZXR1cm4odD10Lm1hcChMJCkpLnBvcCgpLHR9ZnVuY3Rpb24gTCQodCl7cmV0dXJuW3RbMF0qS3EsdFsxXSpLcV19ZnVuY3Rpb24gUCQodCxlLG4pe3ZhciBpPVpYKHQsZS1HcSxuKS5jb25jYXQoZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuW3QsZV19KSl9fWZ1bmN0aW9uIE4kKHQsZSxuKXt2YXIgaT1aWCh0LGUtR3EsbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybltlLHRdfSkpfX1mdW5jdGlvbiBJJCgpe3ZhciB0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkPTEwLHA9ZCxmPTkwLG09MzYwLGc9Mi41O2Z1bmN0aW9uIF8oKXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp5KCl9fWZ1bmN0aW9uIHkoKXtyZXR1cm4gWlgoZVkoaS9mKSpmLG4sZikubWFwKHUpLmNvbmNhdChaWChlWShzL20pKm0sYSxtKS5tYXAoaCkpLmNvbmNhdChaWChlWShlL2QpKmQsdCxkKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBacSh0JWYpPkdxfSkpLm1hcChsKSkuY29uY2F0KFpYKGVZKG8vcCkqcCxyLHApLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIFpxKHQlbSk+R3F9KSkubWFwKGMpKX1yZXR1cm4gXy5saW5lcz1mdW5jdGlvbigpe3JldHVybiB5KCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19KSl9LF8ub3V0bGluZT1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdShpKS5jb25jYXQoaChhKS5zbGljZSgxKSx1KG4pLnJldmVyc2UoKS5zbGljZSgxKSxoKHMpLnJldmVyc2UoKS5zbGljZSgxKSldfX0sXy5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/Xy5leHRlbnRNYWpvcih0KS5leHRlbnRNaW5vcih0KTpfLmV4dGVudE1pbm9yKCl9LF8uZXh0ZW50TWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3RbMF1bMV0sYT0rdFsxXVsxXSwoaT0rdFswXVswXSk+KG49K3RbMV1bMF0pJiYodD1pLGk9bixuPXQpLHM+YSYmKHQ9cyxzPWEsYT10KSxfLnByZWNpc2lvbihnKSk6W1tpLHNdLFtuLGFdXX0sXy5leHRlbnRNaW5vcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rblswXVsxXSxyPStuWzFdWzFdLChlPStuWzBdWzBdKT4odD0rblsxXVswXSkmJihuPWUsZT10LHQ9biksbz5yJiYobj1vLG89cixyPW4pLF8ucHJlY2lzaW9uKGcpKTpbW2Usb10sW3Qscl1dfSxfLnN0ZXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/Xy5zdGVwTWFqb3IodCkuc3RlcE1pbm9yKHQpOl8uc3RlcE1pbm9yKCl9LF8uc3RlcE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSt0WzBdLG09K3RbMV0sXyk6W2YsbV19LF8uc3RlcE1pbm9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLHA9K3RbMV0sXyk6W2QscF19LF8ucHJlY2lzaW9uPWZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPStkLGw9UCQobyxyLDkwKSxjPU4kKGUsdCxnKSx1PVAkKHMsYSw5MCksaD1OJChpLG4sZyksXyk6Z30sXy5leHRlbnRNYWpvcihbWy0xODAsLTg5Ljk5OTk5OV0sWzE4MCw4OS45OTk5OTldXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC4wMDAwMDFdLFsxODAsODAuMDAwMDAxXV0pfWZ1bmN0aW9uIFIkKHQpe3JldHVybiB0fXZhciBPJCx6JCxEJCxCJCxIJD1GcSgpLEYkPUZxKCksViQ9e3BvaW50OmRZLGxpbmVTdGFydDpkWSxsaW5lRW5kOmRZLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1YkLmxpbmVTdGFydD1VJCxWJC5saW5lRW5kPVckfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ViQubGluZVN0YXJ0PVYkLmxpbmVFbmQ9ViQucG9pbnQ9ZFksSCQuYWRkKFpxKEYkKSksRiQucmVzZXQoKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9SCQvMjtyZXR1cm4gSCQucmVzZXQoKSx0fX07ZnVuY3Rpb24gVSQoKXtWJC5wb2ludD1qJH1mdW5jdGlvbiBqJCh0LGUpe1YkLnBvaW50PUckLE8kPUQkPXQseiQ9QiQ9ZX1mdW5jdGlvbiBHJCh0LGUpe0YkLmFkZChCJCp0LUQkKmUpLEQkPXQsQiQ9ZX1mdW5jdGlvbiBXJCgpe0ckKE8kLHokKX12YXIgcSQsWSQsWCQsJCQsSyQ9MS8wLFokPUskLEokPS1LJCxRJD1KJCx0Sz17cG9pbnQ6ZnVuY3Rpb24gZUsodCxlKXt0PEskJiYoSyQ9dCksdD5KJCYmKEokPXQpLGU8WiQmJihaJD1lKSxlPlEkJiYoUSQ9ZSl9LGxpbmVTdGFydDpkWSxsaW5lRW5kOmRZLHBvbHlnb25TdGFydDpkWSxwb2x5Z29uRW5kOmRZLHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVtbSyQsWiRdLFtKJCxRJF1dO3JldHVybiBKJD1RJD0tKFokPUskPTEvMCksdH19LG5LPTAsaUs9MCxySz0wLG9LPTAsYUs9MCxzSz0wLGxLPTAsY0s9MCx1Sz0wLGhLPXtwb2ludDpkSyxsaW5lU3RhcnQ6cEssbGluZUVuZDpnSyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtoSy5saW5lU3RhcnQ9X0ssaEsubGluZUVuZD15S30scG9seWdvbkVuZDpmdW5jdGlvbigpe2hLLnBvaW50PWRLLGhLLmxpbmVTdGFydD1wSyxoSy5saW5lRW5kPWdLfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD11Sz9bbEsvdUssY0svdUtdOnNLP1tvSy9zSyxhSy9zS106cks/W25LL3JLLGlLL3JLXTpbTmFOLE5hTl07cmV0dXJuIG5LPWlLPXJLPW9LPWFLPXNLPWxLPWNLPXVLPTAsdH19O2Z1bmN0aW9uIGRLKHQsZSl7bksrPXQsaUsrPWUsKytyS31mdW5jdGlvbiBwSygpe2hLLnBvaW50PWZLfWZ1bmN0aW9uIGZLKHQsZSl7aEsucG9pbnQ9bUssZEsoWCQ9dCwkJD1lKX1mdW5jdGlvbiBtSyh0LGUpe3ZhciBuPXQtWCQsaT1lLSQkLHI9c1kobipuK2kqaSk7b0srPXIqKFgkK3QpLzIsYUsrPXIqKCQkK2UpLzIsc0srPXIsZEsoWCQ9dCwkJD1lKX1mdW5jdGlvbiBnSygpe2hLLnBvaW50PWRLfWZ1bmN0aW9uIF9LKCl7aEsucG9pbnQ9dkt9ZnVuY3Rpb24geUsoKXtiSyhxJCxZJCl9ZnVuY3Rpb24gdksodCxlKXtoSy5wb2ludD1iSyxkSyhxJD1YJD10LFkkPSQkPWUpfWZ1bmN0aW9uIGJLKHQsZSl7dmFyIG49dC1YJCxpPWUtJCQscj1zWShuKm4raSppKTtvSys9ciooWCQrdCkvMixhSys9ciooJCQrZSkvMixzSys9cixsSys9KHI9JCQqdC1YJCplKSooWCQrdCksY0srPXIqKCQkK2UpLHVLKz0zKnIsZEsoWCQ9dCwkJD1lKX1mdW5jdGlvbiB4Syh0KXt0aGlzLl9jb250ZXh0PXR9eEsucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFkaXVzPXQsdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5tb3ZlVG8odCt0aGlzLl9yYWRpdXMsZSksdGhpcy5fY29udGV4dC5hcmModCxlLHRoaXMuX3JhZGl1cywwLFhxKX19LHJlc3VsdDpkWX07dmFyIHdLLFNLLE1LLEVLLFRLLENLPUZxKCksQUs9e3BvaW50OmRZLGxpbmVTdGFydDpmdW5jdGlvbigpe0FLLnBvaW50PWtLfSxsaW5lRW5kOmZ1bmN0aW9uKCl7d0smJkxLKFNLLE1LKSxBSy5wb2ludD1kWX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7d0s9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt3Sz1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD0rQ0s7cmV0dXJuIENLLnJlc2V0KCksdH19O2Z1bmN0aW9uIGtLKHQsZSl7QUsucG9pbnQ9TEssU0s9RUs9dCxNSz1USz1lfWZ1bmN0aW9uIExLKHQsZSl7Q0suYWRkKHNZKChFSy09dCkqRUsrKFRLLT1lKSpUSykpLEVLPXQsVEs9ZX1mdW5jdGlvbiBQSygpe3RoaXMuX3N0cmluZz1bXX1mdW5jdGlvbiBOSyh0KXtyZXR1cm4ibTAsIit0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKy0yKnQrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrMip0KyJ6In1mdW5jdGlvbiBJSyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49bmV3IFJLO2Zvcih2YXIgaSBpbiB0KW5baV09dFtpXTtyZXR1cm4gbi5zdHJlYW09ZSxufX1mdW5jdGlvbiBSSygpe31mdW5jdGlvbiBPSyh0LGUsbil7dmFyIGk9dC5jbGlwRXh0ZW50JiZ0LmNsaXBFeHRlbnQoKTtyZXR1cm4gdC5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KG51bGwpLHlZKG4sdC5zdHJlYW0odEspKSxlKHRLLnJlc3VsdCgpKSxudWxsIT1pJiZ0LmNsaXBFeHRlbnQoaSksdH1mdW5jdGlvbiB6Syh0LGUsbil7cmV0dXJuIE9LKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxyPWVbMV1bMV0tZVswXVsxXSxvPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksci8oblsxXVsxXS1uWzBdWzFdKSksYT0rZVswXVswXSsoaS1vKihuWzFdWzBdK25bMF1bMF0pKS8yLHM9K2VbMF1bMV0rKHItbyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSksbil9ZnVuY3Rpb24gREsodCxlLG4pe3JldHVybiB6Syh0LFtbMCwwXSxlXSxuKX1mdW5jdGlvbiBCSyh0LGUsbil7cmV0dXJuIE9LKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVswXS1uWzBdWzBdKSxvPShpLXIqKG5bMV1bMF0rblswXVswXSkpLzIsYT0tcipuWzBdWzFdO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1mdW5jdGlvbiBISyh0LGUsbil7cmV0dXJuIE9LKHQsKGZ1bmN0aW9uKG4pe3ZhciBpPStlLHI9aS8oblsxXVsxXS1uWzBdWzFdKSxvPS1yKm5bMF1bMF0sYT0oaS1yKihuWzFdWzFdK25bMF1bMV0pKS8yO3Quc2NhbGUoMTUwKnIpLnRyYW5zbGF0ZShbbyxhXSl9KSxuKX1QSy5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6TksoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPT09dGhpcy5fbGluZSYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUpLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3N0cmluZy5wdXNoKCJMIix0LCIsIixlKTticmVhaztkZWZhdWx0Om51bGw9PXRoaXMuX2NpcmNsZSYmKHRoaXMuX2NpcmNsZT1OSyh0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpfX0scmVzdWx0OmZ1bmN0aW9uKCl7aWYodGhpcy5fc3RyaW5nLmxlbmd0aCl7dmFyIHQ9dGhpcy5fc3RyaW5nLmpvaW4oIiIpO3JldHVybiB0aGlzLl9zdHJpbmc9W10sdH1yZXR1cm4gbnVsbH19LFJLLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UksscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07dmFyIEZLPXRZKDMwKktxKTtmdW5jdGlvbiBWSyh0LGUpe3JldHVybitlPyhmdW5jdGlvbiBuKHQsZSl7ZnVuY3Rpb24gbihpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGcpe3ZhciBfPWMtaSx5PXUtcix2PV8qXyt5Knk7aWYodj40KmUmJm0tLSl7dmFyIGI9YStkLHg9cytwLHc9bCtmLFM9c1koYipiK3gqeCt3KncpLE09dVkody89UyksRT1acShacSh3KS0xKTxHcXx8WnEoby1oKTxHcT8obytoKS8yOlFxKHgsYiksVD10KEUsTSksQz1UWzBdLEE9VFsxXSxrPUMtaSxMPUEtcixQPXkqay1fKkw7KFAqUC92PmV8fFpxKChfKmsreSpMKS92LS41KT4uM3x8YSpkK3MqcCtsKmY8RkspJiYobihpLHIsbyxhLHMsbCxDLEEsRSxiLz1TLHgvPVMsdyxtLGcpLGcucG9pbnQoQyxBKSxuKEMsQSxFLGIseCx3LGMsdSxoLGQscCxmLG0sZykpfX1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGkscixvLGEscyxsLGMsdSxoLGQscCxmLG09e3BvaW50OmcsbGluZVN0YXJ0Ol8sbGluZUVuZDp2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2UucG9seWdvblN0YXJ0KCksbS5saW5lU3RhcnQ9Yn0scG9seWdvbkVuZDpmdW5jdGlvbigpe2UucG9seWdvbkVuZCgpLG0ubGluZVN0YXJ0PV99fTtmdW5jdGlvbiBnKG4saSl7bj10KG4saSksZS5wb2ludChuWzBdLG5bMV0pfWZ1bmN0aW9uIF8oKXt1PU5hTixtLnBvaW50PXksZS5saW5lU3RhcnQoKX1mdW5jdGlvbiB5KGkscil7dmFyIG89TlkoW2kscl0pLGE9dChpLHIpO24odSxoLGMsZCxwLGYsdT1hWzBdLGg9YVsxXSxjPWksZD1vWzBdLHA9b1sxXSxmPW9bMl0sMTYsZSksZS5wb2ludCh1LGgpfWZ1bmN0aW9uIHYoKXttLnBvaW50PWcsZS5saW5lRW5kKCl9ZnVuY3Rpb24gYigpe18oKSxtLnBvaW50PXgsbS5saW5lRW5kPXd9ZnVuY3Rpb24geCh0LGUpe3koaT10LGUpLHI9dSxvPWgsYT1kLHM9cCxsPWYsbS5wb2ludD15fWZ1bmN0aW9uIHcoKXtuKHUsaCxjLGQscCxmLHIsbyxpLGEscyxsLDE2LGUpLG0ubGluZUVuZD12LHYoKX1yZXR1cm4gbX19KSh0LGUpOihmdW5jdGlvbiBpKHQpe3JldHVybiBJSyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXtlPXQoZSxuKSx0aGlzLnN0cmVhbS5wb2ludChlWzBdLGVbMV0pfX0pfSkodCl9dmFyIFVLPUlLKHtwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuc3RyZWFtLnBvaW50KHQqS3EsZSpLcSl9fSk7ZnVuY3Rpb24gaksodCl7cmV0dXJuIEdLKChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gR0sodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PW51bGwsYj1pJCx4PW51bGwsdz1SJCxTPS41LE09VksoQyxTKTtmdW5jdGlvbiBFKHQpe3JldHVyblsodD1vKHRbMF0qS3EsdFsxXSpLcSkpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gVCh0KXtyZXR1cm4odD1vLmludmVydCgodFswXS1uKS9oLChpLXRbMV0pL2gpKSYmW3RbMF0qJHEsdFsxXSokcV19ZnVuY3Rpb24gQyh0LHIpe3JldHVyblsodD1lKHQscikpWzBdKmgrbixpLXRbMV0qaF19ZnVuY3Rpb24gQSgpe289Ulgocj16WChnLF8seSksZSk7dmFyIHQ9ZShmLG0pO3JldHVybiBuPWQtdFswXSpoLGk9cCt0WzFdKmgsaygpfWZ1bmN0aW9uIGsoKXtyZXR1cm4gYz11PW51bGwsRX1yZXR1cm4gRS5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGMmJnU9PT10P2M6Yz1VSygoZnVuY3Rpb24gZSh0KXtyZXR1cm4gSUsoe3BvaW50OmZ1bmN0aW9uKGUsbil7dmFyIGk9dChlLG4pO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChpWzBdLGlbMV0pfX0pfSkocikoYihNKHcodT10KSkpKSl9LEUucHJlY2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj10LHY9dm9pZCAwLGsoKSk6Yn0sRS5wb3N0Y2xpcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz10LHg9YT1zPWw9bnVsbCxrKCkpOnd9LEUuY2xpcEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPSt0P2EkKHY9dCpLcSk6KHY9bnVsbCxpJCksaygpKTp2KiRxfSxFLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9bnVsbD09dD8oeD1hPXM9bD1udWxsLFIkKTpjJCh4PSt0WzBdWzBdLGE9K3RbMF1bMV0scz0rdFsxXVswXSxsPSt0WzFdWzFdKSxrKCkpOm51bGw9PXg/bnVsbDpbW3gsYV0sW3MsbF1dfSxFLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LEEoKSk6aH0sRS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9K3RbMF0scD0rdFsxXSxBKCkpOltkLHBdfSxFLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj10WzBdJTM2MCpLcSxtPXRbMV0lMzYwKktxLEEoKSk6W2YqJHEsbSokcV19LEUucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPXRbMF0lMzYwKktxLF89dFsxXSUzNjAqS3EseT10Lmxlbmd0aD4yP3RbMl0lMzYwKktxOjAsQSgpKTpbZyokcSxfKiRxLHkqJHFdfSxFLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1WSyhDLFM9dCp0KSxrKCkpOnNZKFMpfSxFLmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiB6SyhFLHQsZSl9LEUuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiBESyhFLHQsZSl9LEUuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQksoRSx0LGUpfSxFLmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBISyhFLHQsZSl9LGZ1bmN0aW9uKCl7cmV0dXJuIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksRS5pbnZlcnQ9ZS5pbnZlcnQmJlQsQSgpfX1mdW5jdGlvbiBXSyh0KXt2YXIgZT0wLG49V3EvMyxpPUdLKHQpLHI9aShlLG4pO3JldHVybiByLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9pKGU9dFswXSpLcSxuPXRbMV0qS3EpOltlKiRxLG4qJHFdfSxyfWZ1bmN0aW9uIHFLKHQsZSl7dmFyIG49b1kodCksaT0obitvWShlKSkvMjtpZihacShpKTxHcSlyZXR1cm4oZnVuY3Rpb24gcih0KXt2YXIgZT10WSh0KTtmdW5jdGlvbiBuKHQsbil7cmV0dXJuW3QqZSxvWShuKS9lXX1yZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdC9lLHVZKG4qZSldfSxufSkodCk7dmFyIG89MStuKigyKmktbiksYT1zWShvKS9pO2Z1bmN0aW9uIHModCxlKXt2YXIgbj1zWShvLTIqaSpvWShlKSkvaTtyZXR1cm5bbipvWSh0Kj1pKSxhLW4qdFkodCldfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPWEtZTtyZXR1cm5bUXEodCxacShuKSkvaSphWShuKSx1WSgoby0odCp0K24qbikqaSppKS8oMippKSldfSxzfWZ1bmN0aW9uIFlLKCl7cmV0dXJuIFdLKHFLKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIFhLKCl7cmV0dXJuIFlLKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gJEsodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dFkoZSkscj10WShuKSxvPXQoaSpyKTtyZXR1cm5bbypyKm9ZKGUpLG8qb1kobildfX1mdW5jdGlvbiBLSyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT1zWShlKmUrbipuKSxyPXQoaSksbz1vWShyKSxhPXRZKHIpO3JldHVybltRcShlKm8saSphKSx1WShpJiZuKm8vaSldfX12YXIgWks9JEsoKGZ1bmN0aW9uKHQpe3JldHVybiBzWSgyLygxK3QpKX0pKTtaSy5pbnZlcnQ9S0soKGZ1bmN0aW9uKHQpe3JldHVybiAyKnVZKHQvMil9KSk7dmFyIEpLPSRLKChmdW5jdGlvbih0KXtyZXR1cm4odD1jWSh0KSkmJnQvb1kodCl9KSk7ZnVuY3Rpb24gUUsodCxlKXtyZXR1cm5bdCxpWShsWSgocXErZSkvMikpXX1mdW5jdGlvbiB0Wih0KXt2YXIgZSxuLGkscj1qSyh0KSxvPXIuY2VudGVyLGE9ci5zY2FsZSxzPXIudHJhbnNsYXRlLGw9ci5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiB1KCl7dmFyIG89V3EqYSgpLHM9cihGWChyLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gbChudWxsPT1jP1tbc1swXS1vLHNbMV0tb10sW3NbMF0rbyxzWzFdK29dXTp0PT09UUs/W1tNYXRoLm1heChzWzBdLW8sYyksZV0sW01hdGgubWluKHNbMF0rbyxuKSxpXV06W1tjLE1hdGgubWF4KHNbMV0tbyxlKV0sW24sTWF0aC5taW4oc1sxXStvLGkpXV0pfXJldHVybiByLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHUoKSk6YSgpfSxyLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0KSx1KCkpOnMoKX0sci5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCksdSgpKTpvKCl9LHIuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPWU9bj1pPW51bGw6KGM9K3RbMF1bMF0sZT0rdFswXVsxXSxuPSt0WzFdWzBdLGk9K3RbMV1bMV0pLHUoKSk6bnVsbD09Yz9udWxsOltbYyxlXSxbbixpXV19LHUoKX1mdW5jdGlvbiBlWih0KXtyZXR1cm4gbFkoKHFxK3QpLzIpfWZ1bmN0aW9uIG5aKHQsZSl7dmFyIG49dFkodCksaT10PT09ZT9vWSh0KTppWShuL3RZKGUpKS9pWShlWihlKS9lWih0KSkscj1uKnJZKGVaKHQpLGkpL2k7aWYoIWkpcmV0dXJuIFFLO2Z1bmN0aW9uIG8odCxlKXtyPjA/ZTwtcXErR3EmJihlPS1xcStHcSk6ZT5xcS1HcSYmKGU9cXEtR3EpO3ZhciBuPXIvclkoZVooZSksaSk7cmV0dXJuW24qb1koaSp0KSxyLW4qdFkoaSp0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89YVkoaSkqc1kodCp0K24qbik7cmV0dXJuW1FxKHQsWnEobikpL2kqYVkobiksMipKcShyWShyL28sMS9pKSktcXFdfSxvfWZ1bmN0aW9uIGlaKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gcloodCxlKXt2YXIgbj10WSh0KSxpPXQ9PT1lP29ZKHQpOihuLXRZKGUpKS8oZS10KSxyPW4vaSt0O2lmKFpxKGkpPEdxKXJldHVybiBpWjtmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKm9ZKG8pLHItbip0WShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lO3JldHVybltRcSh0LFpxKG4pKS9pKmFZKG4pLHItYVkoaSkqc1kodCp0K24qbildfSxvfWZ1bmN0aW9uIG9aKHQsZSl7dmFyIG49dFkoZSksaT10WSh0KSpuO3JldHVybltuKm9ZKHQpL2ksb1koZSkvaV19ZnVuY3Rpb24gYVoodCxlLG4saSl7cmV0dXJuIDE9PT10JiYxPT09ZSYmMD09PW4mJjA9PT1pP1IkOklLKHtwb2ludDpmdW5jdGlvbihyLG8pe3RoaXMuc3RyZWFtLnBvaW50KHIqdCtuLG8qZStpKX19KX1mdW5jdGlvbiBzWih0LGUpe3ZhciBuPWUqZSxpPW4qbjtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSpuK2kqKGkqKC4wMDM5NzEqbi0uMDAxNTI5KmkpLS4wMTM3OTEpKSxlKigxLjAwNzIyNituKiguMDE1MDg1K2kqKC4wMjg4NzQqbi0uMDQ0NDc1LS4wMDU5MTYqaSkpKV19ZnVuY3Rpb24gbFoodCxlKXtyZXR1cm5bdFkoZSkqb1kodCksb1koZSldfWZ1bmN0aW9uIGNaKHQsZSl7dmFyIG49dFkoZSksaT0xK3RZKHQpKm47cmV0dXJuW24qb1kodCkvaSxvWShlKS9pXX1mdW5jdGlvbiB1Wih0LGUpe3JldHVybltpWShsWSgocXErZSkvMikpLC10XX1mdW5jdGlvbiBoWih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBkWih0LGUpe3JldHVybiB0K2UueH1mdW5jdGlvbiBwWih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUueSl9ZnVuY3Rpb24gZloodCl7dmFyIGU9MCxuPXQuY2hpbGRyZW4saT1uJiZuLmxlbmd0aDtpZihpKWZvcig7LS1pPj0wOyllKz1uW2ldLnZhbHVlO2Vsc2UgZT0xO3QudmFsdWU9ZX1mdW5jdGlvbiBtWih0LGUpe3ZhciBuLGkscixvLGEscz1uZXcgdloodCksbD0rdC52YWx1ZSYmKHMudmFsdWU9dC52YWx1ZSksYz1bc107Zm9yKG51bGw9PWUmJihlPWdaKTtuPWMucG9wKCk7KWlmKGwmJihuLnZhbHVlPStuLmRhdGEudmFsdWUpLChyPWUobi5kYXRhKSkmJihhPXIubGVuZ3RoKSlmb3Iobi5jaGlsZHJlbj1uZXcgQXJyYXkoYSksbz1hLTE7bz49MDstLW8pYy5wdXNoKGk9bi5jaGlsZHJlbltvXT1uZXcgdloocltvXSkpLGkucGFyZW50PW4saS5kZXB0aD1uLmRlcHRoKzE7cmV0dXJuIHMuZWFjaEJlZm9yZSh5Wil9ZnVuY3Rpb24gZ1oodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gX1oodCl7dC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIHlaKHQpe3ZhciBlPTA7ZG97dC5oZWlnaHQ9ZX13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gdloodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9SksuaW52ZXJ0PUtLKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxRSy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKkpxKG5ZKGUpKS1xcV19LGlaLmludmVydD1pWixvWi5pbnZlcnQ9S0soSnEpLHNaLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuLGk9ZSxyPTI1O2Rve3ZhciBvPWkqaSxhPW8qbztpLT1uPShpKigxLjAwNzIyNitvKiguMDE1MDg1K2EqKC4wMjg4NzQqby0uMDQ0NDc1LS4wMDU5MTYqYSkpKS1lKS8oMS4wMDcyMjYrbyooLjA0NTI1NSthKiguMjU5ODY2Km8tLjMxMTMyNS0uMDA1OTE2KjExKmEpKSl9d2hpbGUoWnEobik+R3EmJi0tcj4wKTtyZXR1cm5bdC8oLjg3MDcrKG89aSppKSoobyoobypvKm8qKC4wMDM5NzEtLjAwMTUyOSpvKS0uMDEzNzkxKS0uMTMxOTc5KSksaV19LGxaLmludmVydD1LSyh1WSksY1ouaW52ZXJ0PUtLKChmdW5jdGlvbih0KXtyZXR1cm4gMipKcSh0KX0pKSx1Wi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bLWUsMipKcShuWSh0KSktcXFdfSx2Wi5wcm90b3R5cGU9bVoucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp2Wixjb3VudDpmdW5jdGlvbiBiWigpe3JldHVybiB0aGlzLmVhY2hBZnRlcihmWil9LGVhY2g6ZnVuY3Rpb24geFoodCl7dmFyIGUsbixpLHIsbz10aGlzLGE9W29dO2Rve2ZvcihlPWEucmV2ZXJzZSgpLGE9W107bz1lLnBvcCgpOylpZih0KG8pLG49by5jaGlsZHJlbilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyOysraSlhLnB1c2gobltpXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24gd1oodCl7Zm9yKHZhciBlLG4saSxyPXRoaXMsbz1bcl0sYT1bXTtyPW8ucG9wKCk7KWlmKGEucHVzaChyKSxlPXIuY2hpbGRyZW4pZm9yKG49MCxpPWUubGVuZ3RoO248aTsrK24pby5wdXNoKGVbbl0pO2Zvcig7cj1hLnBvcCgpOyl0KHIpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uIFNaKHQpe2Zvcih2YXIgZSxuLGk9dGhpcyxyPVtpXTtpPXIucG9wKCk7KWlmKHQoaSksZT1pLmNoaWxkcmVuKWZvcihuPWUubGVuZ3RoLTE7bj49MDstLW4pci5wdXNoKGVbbl0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24gTVoodCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKChmdW5jdGlvbihlKXtmb3IodmFyIG49K3QoZS5kYXRhKXx8MCxpPWUuY2hpbGRyZW4scj1pJiZpLmxlbmd0aDstLXI+PTA7KW4rPWlbcl0udmFsdWU7ZS52YWx1ZT1ufSkpfSxzb3J0OmZ1bmN0aW9uIEVaKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc29ydCh0KX0pKX0scGF0aDpmdW5jdGlvbiBUWih0KXtmb3IodmFyIGU9dGhpcyxuPShmdW5jdGlvbiBpKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIG49dC5hbmNlc3RvcnMoKSxpPWUuYW5jZXN0b3JzKCkscj1udWxsO2Zvcih0PW4ucG9wKCksZT1pLnBvcCgpO3Q9PT1lOylyPXQsdD1uLnBvcCgpLGU9aS5wb3AoKTtyZXR1cm4gcn0pKGUsdCkscj1bZV07ZSE9PW47KXIucHVzaChlPWUucGFyZW50KTtmb3IodmFyIG89ci5sZW5ndGg7dCE9PW47KXIuc3BsaWNlKG8sMCx0KSx0PXQucGFyZW50O3JldHVybiByfSxhbmNlc3RvcnM6ZnVuY3Rpb24gQ1ooKXtmb3IodmFyIHQ9dGhpcyxlPVt0XTt0PXQucGFyZW50OyllLnB1c2godCk7cmV0dXJuIGV9LGRlc2NlbmRhbnRzOmZ1bmN0aW9uIEFaKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oZSl7dC5wdXNoKGUpfSkpLHR9LGxlYXZlczpmdW5jdGlvbiBrWigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2hCZWZvcmUoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fHQucHVzaChlKX0pKSx0fSxsaW5rczpmdW5jdGlvbiBMWigpe3ZhciB0PXRoaXMsZT1bXTtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbihuKXtuIT09dCYmZS5wdXNoKHtzb3VyY2U6bi5wYXJlbnQsdGFyZ2V0Om59KX0pKSxlfSxjb3B5OmZ1bmN0aW9uIFBaKCl7cmV0dXJuIG1aKHRoaXMpLmVhY2hCZWZvcmUoX1opfX07dmFyIE5aPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBJWih0KXtmb3IodmFyIGUsbixpPTAscj0odD0oZnVuY3Rpb24gbyh0KXtmb3IodmFyIGUsbixpPXQubGVuZ3RoO2k7KW49TWF0aC5yYW5kb20oKSppLS18MCxlPXRbaV0sdFtpXT10W25dLHRbbl09ZTtyZXR1cm4gdH0pKE5aLmNhbGwodCkpKS5sZW5ndGgsYT1bXTtpPHI7KWU9dFtpXSxuJiZ6WihuLGUpPysraToobj1CWihhPVJaKGEsZSkpLGk9MCk7cmV0dXJuIG59ZnVuY3Rpb24gUloodCxlKXt2YXIgbixpO2lmKERaKGUsdCkpcmV0dXJuW2VdO2ZvcihuPTA7bjx0Lmxlbmd0aDsrK24paWYoT1ooZSx0W25dKSYmRFooSFoodFtuXSxlKSx0KSlyZXR1cm5bdFtuXSxlXTtmb3Iobj0wO248dC5sZW5ndGgtMTsrK24pZm9yKGk9bisxO2k8dC5sZW5ndGg7KytpKWlmKE9aKEhaKHRbbl0sdFtpXSksZSkmJk9aKEhaKHRbbl0sZSksdFtpXSkmJk9aKEhaKHRbaV0sZSksdFtuXSkmJkRaKEZaKHRbbl0sdFtpXSxlKSx0KSlyZXR1cm5bdFtuXSx0W2ldLGVdO3Rocm93IG5ldyBFcnJvcn1mdW5jdGlvbiBPWih0LGUpe3ZhciBuPXQuci1lLnIsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbjwwfHxuKm48aSppK3Iqcn1mdW5jdGlvbiB6Wih0LGUpe3ZhciBuPXQuci1lLnIrMWUtNixpPWUueC10Lngscj1lLnktdC55O3JldHVybiBuPjAmJm4qbj5pKmkrcipyfWZ1bmN0aW9uIERaKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDsrK24paWYoIXpaKHQsZVtuXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQloodCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJue3g6dC54LHk6dC55LHI6dC5yfX0pKHRbMF0pO2Nhc2UgMjpyZXR1cm4gSFoodFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIEZaKHRbMF0sdFsxXSx0WzJdKX19ZnVuY3Rpb24gSFoodCxlKXt2YXIgbj10LngsaT10Lnkscj10LnIsbz1lLngsYT1lLnkscz1lLnIsbD1vLW4sYz1hLWksdT1zLXIsaD1NYXRoLnNxcnQobCpsK2MqYyk7cmV0dXJue3g6KG4rbytsL2gqdSkvMix5OihpK2ErYy9oKnUpLzIscjooaCtyK3MpLzJ9fWZ1bmN0aW9uIEZaKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz10LnIsYT1lLngscz1lLnksbD1lLnIsYz1uLngsdT1uLnksaD1uLnIsZD1pLWEscD1pLWMsZj1yLXMsbT1yLXUsZz1sLW8sXz1oLW8seT1pKmkrcipyLW8qbyx2PXktYSphLXMqcytsKmwsYj15LWMqYy11KnUraCpoLHg9cCpmLWQqbSx3PShmKmItbSp2KS8oMip4KS1pLFM9KG0qZy1mKl8pL3gsTT0ocCp2LWQqYikvKDIqeCktcixFPShkKl8tcCpnKS94LFQ9UypTK0UqRS0xLEM9Mioobyt3KlMrTSpFKSxBPXcqdytNKk0tbypvLGs9LShUPyhDK01hdGguc3FydChDKkMtNCpUKkEpKS8oMipUKTpBL0MpO3JldHVybnt4OmkrdytTKmsseTpyK00rRSprLHI6a319ZnVuY3Rpb24gVloodCxlLG4pe3ZhciBpPXQueCxyPXQueSxvPWUucituLnIsYT10LnIrbi5yLHM9ZS54LWksbD1lLnktcixjPXMqcytsKmw7aWYoYyl7dmFyIHU9LjUrKChhKj1hKS0obyo9bykpLygyKmMpLGg9TWF0aC5zcXJ0KE1hdGgubWF4KDAsMipvKihhK2MpLShhLT1jKSphLW8qbykpLygyKmMpO24ueD1pK3UqcytoKmwsbi55PXIrdSpsLWgqc31lbHNlIG4ueD1pK2Esbi55PXJ9ZnVuY3Rpb24gVVoodCxlKXt2YXIgbj1lLngtdC54LGk9ZS55LXQueSxyPXQucitlLnI7cmV0dXJuIHIqci0xZS02Pm4qbitpKml9ZnVuY3Rpb24galoodCl7dmFyIGU9dC5fLG49dC5uZXh0Ll8saT1lLnIrbi5yLHI9KGUueCpuLnIrbi54KmUucikvaSxvPShlLnkqbi5yK24ueSplLnIpL2k7cmV0dXJuIHIqcitvKm99ZnVuY3Rpb24gR1oodCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIFdaKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuIDA7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaDtpZigoZT10WzBdKS54PTAsZS55PTAsIShyPjEpKXJldHVybiBlLnI7aWYoZS54PS0obj10WzFdKS5yLG4ueD1lLnIsbi55PTAsIShyPjIpKXJldHVybiBlLnIrbi5yO1ZaKG4sZSxpPXRbMl0pLGU9bmV3IEdaKGUpLG49bmV3IEdaKG4pLGk9bmV3IEdaKGkpLGUubmV4dD1pLnByZXZpb3VzPW4sbi5uZXh0PWUucHJldmlvdXM9aSxpLm5leHQ9bi5wcmV2aW91cz1lO3Q6Zm9yKHM9MztzPHI7KytzKXtWWihlLl8sbi5fLGk9dFtzXSksaT1uZXcgR1ooaSksbD1uLm5leHQsYz1lLnByZXZpb3VzLHU9bi5fLnIsaD1lLl8ucjtkb3tpZih1PD1oKXtpZihVWihsLl8saS5fKSl7ZS5uZXh0PW49bCxuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9dSs9bC5fLnIsbD1sLm5leHR9ZWxzZXtpZihVWihjLl8saS5fKSl7KGU9YykubmV4dD1uLG4ucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9fXdoaWxlKGwhPT1jLm5leHQpO2ZvcihpLnByZXZpb3VzPWUsaS5uZXh0PW4sZS5uZXh0PW4ucHJldmlvdXM9bj1pLG89alooZSk7KGk9aS5uZXh0KSE9PW47KShhPWpaKGkpKTxvJiYoZT1pLG89YSk7bj1lLm5leHR9Zm9yKGU9W24uX10saT1uOyhpPWkubmV4dCkhPT1uOyllLnB1c2goaS5fKTtmb3IoaT1JWihlKSxzPTA7czxyOysrcykoZT10W3NdKS54LT1pLngsZS55LT1pLnk7cmV0dXJuIGkucn1mdW5jdGlvbiBxWih0KXtyZXR1cm4gbnVsbD09dD9udWxsOllaKHQpfWZ1bmN0aW9uIFlaKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBYWigpe3JldHVybiAwfWZ1bmN0aW9uICRaKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBLWih0KXtyZXR1cm4gTWF0aC5zcXJ0KHQudmFsdWUpfWZ1bmN0aW9uIFpaKHQpe3JldHVybiBmdW5jdGlvbihlKXtlLmNoaWxkcmVufHwoZS5yPU1hdGgubWF4KDAsK3QoZSl8fDApKX19ZnVuY3Rpb24gSloodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7aWYoaT1uLmNoaWxkcmVuKXt2YXIgaSxyLG8sYT1pLmxlbmd0aCxzPXQobikqZXx8MDtpZihzKWZvcihyPTA7cjxhOysrcilpW3JdLnIrPXM7aWYobz1XWihpKSxzKWZvcihyPTA7cjxhOysrcilpW3JdLnItPXM7bi5yPW8rc319fWZ1bmN0aW9uIFFaKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLnBhcmVudDtlLnIqPXQsbiYmKGUueD1uLngrdCplLngsZS55PW4ueSt0KmUueSl9fWZ1bmN0aW9uIHRKKHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBlSih0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKGktZSkvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueTA9bixvLnkxPXIsby54MD1lLG8ueDE9ZSs9by52YWx1ZSpjfXZhciBuSj17ZGVwdGg6LTF9LGlKPXt9O2Z1bmN0aW9uIHJKKHQpe3JldHVybiB0LmlkfWZ1bmN0aW9uIG9KKHQpe3JldHVybiB0LnBhcmVudElkfWZ1bmN0aW9uIGFKKHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIHNKKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVswXTp0LnR9ZnVuY3Rpb24gbEoodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lW2UubGVuZ3RoLTFdOnQudH1mdW5jdGlvbiBjSih0LGUsbil7dmFyIGk9bi8oZS5pLXQuaSk7ZS5jLT1pLGUucys9bix0LmMrPWksZS56Kz1uLGUubSs9bn1mdW5jdGlvbiB1Sih0LGUsbil7cmV0dXJuIHQuYS5wYXJlbnQ9PT1lLnBhcmVudD90LmE6bn1mdW5jdGlvbiBoSih0LGUpe3RoaXMuXz10LHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1udWxsLHRoaXMuQT1udWxsLHRoaXMuYT10aGlzLHRoaXMuej0wLHRoaXMubT0wLHRoaXMuYz0wLHRoaXMucz0wLHRoaXMudD1udWxsLHRoaXMuaT1lfWZ1bmN0aW9uIGRKKHQsZSxuLGkscil7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbixzPS0xLGw9YS5sZW5ndGgsYz10LnZhbHVlJiYoci1uKS90LnZhbHVlOysrczxsOykobz1hW3NdKS54MD1lLG8ueDE9aSxvLnkwPW4sby55MT1uKz1vLnZhbHVlKmN9aEoucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodloucHJvdG90eXBlKTt2YXIgcEo9KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIGZKKHQsZSxuLGkscixvKXtmb3IodmFyIGEscyxsLGMsdSxoLGQscCxmLG0sZyxfPVtdLHk9ZS5jaGlsZHJlbix2PTAsYj0wLHg9eS5sZW5ndGgsdz1lLnZhbHVlO3Y8eDspe2w9ci1uLGM9by1pO2Rve3U9eVtiKytdLnZhbHVlfXdoaWxlKCF1JiZiPHgpO2ZvcihoPWQ9dSxnPXUqdSoobT1NYXRoLm1heChjL2wsbC9jKS8odyp0KSksZj1NYXRoLm1heChkL2csZy9oKTtiPHg7KytiKXtpZih1Kz1zPXlbYl0udmFsdWUsczxoJiYoaD1zKSxzPmQmJihkPXMpLGc9dSp1Km0sKHA9TWF0aC5tYXgoZC9nLGcvaCkpPmYpe3UtPXM7YnJlYWt9Zj1wfV8ucHVzaChhPXt2YWx1ZTp1LGRpY2U6bDxjLGNoaWxkcmVuOnkuc2xpY2UodixiKX0pLGEuZGljZT9lSihhLG4saSxyLHc/aSs9Yyp1L3c6byk6ZEooYSxuLGksdz9uKz1sKnUvdzpyLG8pLHctPXUsdj1ifXJldHVybiBffXZhciBtSj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7ZkooZSx0LG4saSxyLG8pfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShwSiksZ0o9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4saSxyLG8pe2lmKChhPXQuX3NxdWFyaWZ5KSYmYS5yYXRpbz09PWUpZm9yKHZhciBhLHMsbCxjLHUsaD0tMSxkPWEubGVuZ3RoLHA9dC52YWx1ZTsrK2g8ZDspe2ZvcihsPShzPWFbaF0pLmNoaWxkcmVuLGM9cy52YWx1ZT0wLHU9bC5sZW5ndGg7Yzx1OysrYylzLnZhbHVlKz1sW2NdLnZhbHVlO3MuZGljZT9lSihzLG4saSxyLGkrPShvLWkpKnMudmFsdWUvcCk6ZEoocyxuLGksbis9KHItbikqcy52YWx1ZS9wLG8pLHAtPXMudmFsdWV9ZWxzZSB0Ll9zcXVhcmlmeT1hPWZKKGUsdCxuLGkscixvKSxhLnJhdGlvPWV9cmV0dXJuIG4ucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0sbn0pKHBKKTtmdW5jdGlvbiBfSih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24geUoodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gdkooKXt9dmFyIGJKPS43LHhKPTEvYkosd0o9IlxccyooWystXT9cXGQrKVxccyoiLFNKPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLE1KPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixFSj0vXiMoWzAtOWEtZl17Myw4fSkkLyxUSj1uZXcgUmVnRXhwKCJecmdiXFwoIitbd0osd0osd0pdKyJcXCkkIiksQ0o9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW01KLE1KLE1KXSsiXFwpJCIpLEFKPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbd0osd0osd0osU0pdKyJcXCkkIiksa0o9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tNSixNSixNSixTSl0rIlxcKSQiKSxMSj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbU0osTUosTUpdKyJcXCkkIiksUEo9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tTSixNSixNSixTSl0rIlxcKSQiKSxOSj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBJSigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFJKKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gT0oodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9RUouZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj96SihlKTozPT09bj9uZXcgRkooZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0RKKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0RKKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9VEouZXhlYyh0KSk/bmV3IEZKKGVbMV0sZVsyXSxlWzNdLDEpOihlPUNKLmV4ZWModCkpP25ldyBGSigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1BSi5leGVjKHQpKT9ESihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1rSi5leGVjKHQpKT9ESigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1MSi5leGVjKHQpKT9HSihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVBKLmV4ZWModCkpP0dKKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6TkouaGFzT3duUHJvcGVydHkodCk/ekooTkpbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBGSihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHpKKHQpe3JldHVybiBuZXcgRkoodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIERKKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgRkoodCxlLG4saSl9ZnVuY3Rpb24gQkoodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB2Snx8KHQ9T0oodCkpLHQ/bmV3IEZKKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBGSn1mdW5jdGlvbiBISih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/QkoodCk6bmV3IEZKKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBGSih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gVkooKXtyZXR1cm4iIyIrakoodGhpcy5yKStqSih0aGlzLmcpK2pKKHRoaXMuYil9ZnVuY3Rpb24gVUooKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBqSih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIEdKKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgWUoodCxlLG4saSl9ZnVuY3Rpb24gV0oodCl7aWYodCBpbnN0YW5jZW9mIFlKKXJldHVybiBuZXcgWUoodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2Ygdkp8fCh0PU9KKHQpKSwhdClyZXR1cm4gbmV3IFlKO2lmKHQgaW5zdGFuY2VvZiBZSilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IFlKKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gcUoodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1dKKHQpOm5ldyBZSih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gWUoodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFhKKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1fSih2SixPSix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpJSixmb3JtYXRIZXg6SUosZm9ybWF0SHNsOmZ1bmN0aW9uICRKKCl7cmV0dXJuIFdKKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6UkosdG9TdHJpbmc6Ukp9KSxfSihGSixISix5Sih2Six7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD94SjpNYXRoLnBvdyh4Six0KSxuZXcgRkoodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Yko6TWF0aC5wb3coYkosdCksbmV3IEZKKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6VkosZm9ybWF0SGV4OlZKLGZvcm1hdFJnYjpVSix0b1N0cmluZzpVSn0pKSxfSihZSixxSix5Sih2Six7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD94SjpNYXRoLnBvdyh4Six0KSxuZXcgWUoodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9iSjpNYXRoLnBvdyhiSix0KSxuZXcgWUoodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBGSihYSih0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxYSih0LHIsaSksWEoodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgS0o9TWF0aC5QSS8xODAsWko9MTgwL01hdGguUEksSko9Ljk2NDIyLFFKPS44MjUyMSx0UT00LzI5LGVRPTYvMjksblE9MyplUSplUTtmdW5jdGlvbiBpUSh0KXtpZih0IGluc3RhbmNlb2Ygb1EpcmV0dXJuIG5ldyBvUSh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBkUSlyZXR1cm4gcFEodCk7dCBpbnN0YW5jZW9mIEZKfHwodD1CSih0KSk7dmFyIGUsbixpPWNRKHQucikscj1jUSh0LmcpLG89Y1EodC5iKSxhPWFRKCguMjIyNTA0NSppKy43MTY4Nzg2KnIrLjA2MDYxNjkqbykvMSk7cmV0dXJuIGk9PT1yJiZyPT09bz9lPW49YTooZT1hUSgoLjQzNjA3NDcqaSsuMzg1MDY0OSpyKy4xNDMwODA0Km8pL0pKKSxuPWFRKCguMDEzOTMyMippKy4wOTcxMDQ1KnIrLjcxNDE3MzMqbykvUUopKSxuZXcgb1EoMTE2KmEtMTYsNTAwKihlLWEpLDIwMCooYS1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHJRKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9pUSh0KTpuZXcgb1EodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIG9RKHQsZSxuLGkpe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBhUSh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L25RK3RRfWZ1bmN0aW9uIHNRKHQpe3JldHVybiB0PmVRP3QqdCp0Om5RKih0LXRRKX1mdW5jdGlvbiBsUSh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGNRKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIHVRKHQpe2lmKHQgaW5zdGFuY2VvZiBkUSlyZXR1cm4gbmV3IGRRKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIG9RfHwodD1pUSh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IGRRKE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKlpKO3JldHVybiBuZXcgZFEoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gaFEodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3VRKHQpOm5ldyBkUSh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gZFEodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIHBRKHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyBvUSh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKktKO3JldHVybiBuZXcgb1EodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1fSihvUSxyUSx5Sih2Six7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBvUSh0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG9RKHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxuPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIG5ldyBGSihsUSgzLjEzMzg1NjEqKGU9Skoqc1EoZSkpLTEuNjE2ODY2NyoodD0xKnNRKHQpKS0uNDkwNjE0Nioobj1RSipzUShuKSkpLGxRKC0uOTc4NzY4NCplKzEuOTE2MTQxNSp0Ky4wMzM0NTQqbiksbFEoLjA3MTk0NTMqZS0uMjI4OTkxNCp0KzEuNDA1MjQyNypuKSx0aGlzLm9wYWNpdHkpfX0pKSxfSihkUSxoUSx5Sih2Six7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBkUSh0aGlzLmgsdGhpcy5jLHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGRRKHRoaXMuaCx0aGlzLmMsdGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHBRKHRoaXMpLnJnYigpfX0pKTt2YXIgZlE9LS4yOTIyNyxtUT0tLjkwNjQ5LGdRPTEuOTcyOTQ7ZnVuY3Rpb24gX1EodCl7aWYodCBpbnN0YW5jZW9mIHZRKXJldHVybiBuZXcgdlEodC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgRkp8fCh0PUJKKHQpKTt2YXIgZT10LmcvMjU1LG49dC5iLzI1NSxpPSgtLjY1NTc2MzY2Njc5OTk5OTkqbit0LnIvMjU1Ki0xLjc4ODQ1MDM4MDYtMy41MTcyOTgyNDM4KmUpLy01Ljk2MTUxMjI5MTIscj1uLWksbz0oZ1EqKGUtaSktZlEqcikvbVEsYT1NYXRoLnNxcnQobypvK3IqcikvKGdRKmkqKDEtaSkpLHM9YT9NYXRoLmF0YW4yKG8scikqWkotMTIwOk5hTjtyZXR1cm4gbmV3IHZRKHM8MD9zKzM2MDpzLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHlRKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9fUSh0KTpuZXcgdlEodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHZRKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBiUSh0LGUsbixpLHIpe3ZhciBvPXQqdCxhPW8qdDtyZXR1cm4oKDEtMyp0KzMqby1hKSplKyg0LTYqbyszKmEpKm4rKDErMyp0KzMqby0zKmEpKmkrYSpyKS82fWZ1bmN0aW9uIHhRKHQpe3ZhciBlPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPW48PTA/bj0wOm4+PTE/KG49MSxlLTEpOk1hdGguZmxvb3IobiplKSxyPXRbaV0sbz10W2krMV07cmV0dXJuIGJRKChuLWkvZSkqZSxpPjA/dFtpLTFdOjIqci1vLHIsbyxpPGUtMT90W2krMl06MipvLXIpfX1mdW5jdGlvbiB3USh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9TWF0aC5mbG9vcigoKG4lPTEpPDA/KytuOm4pKmUpO3JldHVybiBiUSgobi1pL2UpKmUsdFsoaStlLTEpJWVdLHRbaSVlXSx0WyhpKzEpJWVdLHRbKGkrMiklZV0pfX1mdW5jdGlvbiBTUSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gTVEodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBFUSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9NUSh0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6U1EoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBUUSh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9NUSh0LG4pOlNRKGlzTmFOKHQpP2U6dCl9X0oodlEseVEseUoodkose2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/eEo6TWF0aC5wb3coeEosdCksbmV3IHZRKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Yko6TWF0aC5wb3coYkosdCksbmV3IHZRKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpLSixlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgRkooMjU1KihlK24qKC0uMTQ4NjEqaSsxLjc4Mjc3KnIpKSwyNTUqKGUrbiooZlEqaSttUSpyKSksMjU1KihlK24qKGdRKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgQ1E9KGZ1bmN0aW9uIHQoZSl7dmFyIG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIDE9PSh0PSt0KT9UUTpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpTUShpc05hTihlKT9uOmUpfX0pKGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgaT1uKCh0PUhKKHQpKS5yLChlPUhKKGUpKS5yKSxyPW4odC5nLGUuZyksbz1uKHQuYixlLmIpLGE9VFEodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KSgxKTtmdW5jdGlvbiBBUSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG4saSxyPWUubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9bmV3IEFycmF5KHIpO2ZvcihuPTA7bjxyOysrbilpPUhKKGVbbl0pLG9bbl09aS5yfHwwLGFbbl09aS5nfHwwLHNbbl09aS5ifHwwO3JldHVybiBvPXQobyksYT10KGEpLHM9dChzKSxpLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gaS5yPW8odCksaS5nPWEodCksaS5iPXModCksaSsiIn19fXZhciBrUT1BUSh4USksTFE9QVEod1EpO2Z1bmN0aW9uIFBRKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09QlEodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBOUSh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKGkpe3JldHVybiBuLnNldFRpbWUodCtlKmkpLG59fWZ1bmN0aW9uIElRKHQsZSl7cmV0dXJuIGUtPXQ9K3QsZnVuY3Rpb24obil7cmV0dXJuIHQrZSpufX1mdW5jdGlvbiBSUSh0LGUpe3ZhciBuLGk9e30scj17fTtmb3IobiBpbiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fHwodD17fSksbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZXx8KGU9e30pLGUpbiBpbiB0P2lbbl09QlEodFtuXSxlW25dKTpyW25dPWVbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihuIGluIGkpcltuXT1pW25dKHQpO3JldHVybiByfX12YXIgT1E9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLHpRPW5ldyBSZWdFeHAoT1Euc291cmNlLCJnIik7ZnVuY3Rpb24gRFEodCxlKXt2YXIgbixpLHIsbz1PUS5sYXN0SW5kZXg9elEubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPU9RLmV4ZWModCkpJiYoaT16US5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6SVEobixpKX0pKSxvPXpRLmxhc3RJbmRleDtyZXR1cm4gbzxlLmxlbmd0aCYmKHI9ZS5zbGljZShvKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLHMubGVuZ3RoPDI/bFswXT8oZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fSkobFswXS54KTooZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4saT0wO2k8ZTsrK2kpc1sobj1sW2ldKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBCUSh0LGUpe3ZhciBuLGk9dHlwZW9mIGU7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PWk/U1EoZSk6KCJudW1iZXIiPT09aT9JUToic3RyaW5nIj09PWk/KG49T0ooZSkpPyhlPW4sQ1EpOkRROmUgaW5zdGFuY2VvZiBPSj9DUTplIGluc3RhbmNlb2YgRGF0ZT9OUTpBcnJheS5pc0FycmF5KGUpP1BROiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9SUTpJUSkodCxlKX12YXIgSFEsRlEsVlEsVVEsalE9MTgwL01hdGguUEksR1E9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gV1EodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqalEsc2tld1g6TWF0aC5hdGFuKGwpKmpRLHNjYWxlWDphLHNjYWxlWTpzfX1mdW5jdGlvbiBxUSh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OklRKHQscil9LHtpOmwtMix4OklRKGksbyl9KX1lbHNlKHJ8fG8pJiZhLnB1c2goInRyYW5zbGF0ZSgiK3IrZStvK24pfSkoby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHMsbCksKGZ1bmN0aW9uIHUodCxlLG4sbyl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLG8ucHVzaCh7aTpuLnB1c2gocihuKSsicm90YXRlKCIsbnVsbCxpKS0yLHg6SVEodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OklRKHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpJUSh0LG4pfSx7aTpzLTIseDpJUShlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgWVE9cVEoKGZ1bmN0aW9uIFhRKHQpe3JldHVybiJub25lIj09PXQ/R1E6KEhRfHwoSFE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksRlE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFZRPWRvY3VtZW50LmRlZmF1bHRWaWV3KSxIUS5zdHlsZS50cmFuc2Zvcm09dCx0PVZRLmdldENvbXB1dGVkU3R5bGUoRlEuYXBwZW5kQ2hpbGQoSFEpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLEZRLnJlbW92ZUNoaWxkKEhRKSxXUSgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIiksJFE9cVEoKGZ1bmN0aW9uIEtRKHQpe3JldHVybiBudWxsPT10P0dROihVUXx8KFVRPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFVRLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1VUS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9XUSgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpHUSl9KSwiLCAiLCIpIiwiKSIpLFpRPU1hdGguU1FSVDI7ZnVuY3Rpb24gSlEodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24gUVEodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT1xSihlKSkuaCwobj1xSihuKSkuaCkscj1UUShlLnMsbi5zKSxvPVRRKGUubCxuLmwpLGE9VFEoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLnM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIHQxPVFRKEVRKSxlMT1RUShUUSk7ZnVuY3Rpb24gbjEodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT1oUShlKSkuaCwobj1oUShuKSkuaCkscj1UUShlLmMsbi5jKSxvPVRRKGUubCxuLmwpLGE9VFEoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLmM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIGkxPW4xKEVRKSxyMT1uMShUUSk7ZnVuY3Rpb24gbzEodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9eVEoZSkpLmgsKGk9eVEoaSkpLmgpLG89VFEoZS5zLGkucyksYT1UUShlLmwsaS5sKSxzPVRRKGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX12YXIgYTE9bzEoRVEpLHMxPW8xKFRRKSxsMT1NYXRoLlBJLGMxPTIqbDEsdTE9MWUtNixoMT1jMS11MTtmdW5jdGlvbiBkMSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIHAxKCl7cmV0dXJuIG5ldyBkMX1mdW5jdGlvbiBmMSh0LGUsbil7cmV0dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSktKGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gbTEodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gZzEodCl7Zm9yKHZhciBlPXQubGVuZ3RoLG49WzAsMV0saT0yLHI9MjtyPGU7KytyKXtmb3IoO2k+MSYmZjEodFtuW2ktMl1dLHRbbltpLTFdXSx0W3JdKTw9MDspLS1pO25baSsrXT1yfXJldHVybiBuLnNsaWNlKDAsaSl9ZnVuY3Rpb24gXzEodCxlLG4saSl7aWYoaXNOYU4oZSl8fGlzTmFOKG4pKXJldHVybiB0O3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwPXQuX3Jvb3QsZj17ZGF0YTppfSxtPXQuX3gwLGc9dC5feTAsXz10Ll94MSx5PXQuX3kxO2lmKCFwKXJldHVybiB0Ll9yb290PWYsdDtmb3IoO3AubGVuZ3RoOylpZigoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YSxyPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gcltoXT1mLHQ7aWYocz0rdC5feC5jYWxsKG51bGwscC5kYXRhKSxsPSt0Ll95LmNhbGwobnVsbCxwLmRhdGEpLGU9PT1zJiZuPT09bClyZXR1cm4gZi5uZXh0PXAscj9yW2hdPWY6dC5fcm9vdD1mLHQ7ZG97cj1yP3JbaF09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLChjPWU+PShvPShtK18pLzIpKT9tPW86Xz1vLCh1PW4+PShhPShnK3kpLzIpKT9nPWE6eT1hfXdoaWxlKChoPXU8PDF8Yyk9PShkPShsPj1hKTw8MXxzPj1vKSk7cmV0dXJuIHJbZF09cCxyW2hdPWYsdH1mdW5jdGlvbiB5MSh0LGUsbixpLHIpe3RoaXMubm9kZT10LHRoaXMueDA9ZSx0aGlzLnkwPW4sdGhpcy54MT1pLHRoaXMueTE9cn1mdW5jdGlvbiB2MSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBiMSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiB4MSh0LGUsbil7dmFyIGk9bmV3IHcxKG51bGw9PWU/djE6ZSxudWxsPT1uP2IxOm4sTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9pOmkuYWRkQWxsKHQpfWZ1bmN0aW9uIHcxKHQsZSxuLGkscixvKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24gUzEodCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0sbj1lO3Q9dC5uZXh0OyluPW4ubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfWQxLnByb3RvdHlwZT1wMS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmQxLG1vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kxPStlKX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJRIisgK3QrIiwiKyArZSsiLCIrKHRoaXMuX3gxPStuKSsiLCIrKHRoaXMuX3kxPStpKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fKz0iQyIrICt0KyIsIisgK2UrIiwiKyArbisiLCIrICtpKyIsIisodGhpcy5feDE9K3IpKyIsIisodGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX3gxLGE9dGhpcy5feTEscz0obj0rbiktKHQ9K3QpLGw9KGk9K2kpLShlPStlKSxjPW8tdCx1PWEtZSxoPWMqYyt1KnU7aWYoKHI9K3IpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrcik7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2UgaWYoaD51MSlpZihNYXRoLmFicyh1KnMtbCpjKT51MSYmcil7dmFyIGQ9bi1vLHA9aS1hLGY9cypzK2wqbCxtPWQqZCtwKnAsZz1NYXRoLnNxcnQoZiksXz1NYXRoLnNxcnQoaCkseT1yKk1hdGgudGFuKChsMS1NYXRoLmFjb3MoKGYraC1tKS8oMipnKl8pKSkvMiksdj15L18sYj15L2c7TWF0aC5hYnModi0xKT51MSYmKHRoaXMuXys9IkwiKyh0K3YqYykrIiwiKyhlK3YqdSkpLHRoaXMuXys9IkEiK3IrIiwiK3IrIiwwLDAsIisgKyh1KmQ+YypwKSsiLCIrKHRoaXMuX3gxPXQrYipzKSsiLCIrKHRoaXMuX3kxPWUrYipsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpfSxhcmM6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3Q9K3QsZT0rZTt2YXIgYT0obj0rbikqTWF0aC5jb3MoaSkscz1uKk1hdGguc2luKGkpLGw9dCthLGM9ZStzLHU9MV5vLGg9bz9pLXI6ci1pO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+dTF8fE1hdGguYWJzKHRoaXMuX3kxLWMpPnUxKSYmKHRoaXMuXys9IkwiK2wrIiwiK2MpLG4mJihoPDAmJihoPWglYzErYzEpLGg+aDE/dGhpcy5fKz0iQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0LWEpKyIsIisoZS1zKSsiQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmg+dTEmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKGg+PWwxKSsiLCIrdSsiLCIrKHRoaXMuX3gxPXQrbipNYXRoLmNvcyhyKSkrIiwiKyh0aGlzLl95MT1lK24qTWF0aC5zaW4ocikpKSl9LHJlY3Q6ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKSsiaCIrICtuKyJ2IisgK2krImgiKy1uKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIE0xPXgxLnByb3RvdHlwZT13MS5wcm90b3R5cGU7TTEuY29weT1mdW5jdGlvbigpe3ZhciB0LGUsbj1uZXcgdzEodGhpcy5feCx0aGlzLl95LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSxpPXRoaXMuX3Jvb3Q7aWYoIWkpcmV0dXJuIG47aWYoIWkubGVuZ3RoKXJldHVybiBuLl9yb290PVMxKGkpLG47Zm9yKHQ9W3tzb3VyY2U6aSx0YXJnZXQ6bi5fcm9vdD1uZXcgQXJyYXkoNCl9XTtpPXQucG9wKCk7KWZvcih2YXIgcj0wO3I8NDsrK3IpKGU9aS5zb3VyY2Vbcl0pJiYoZS5sZW5ndGg/dC5wdXNoKHtzb3VyY2U6ZSx0YXJnZXQ6aS50YXJnZXRbcl09bmV3IEFycmF5KDQpfSk6aS50YXJnZXRbcl09UzEoZSkpO3JldHVybiBufSxNMS5hZGQ9ZnVuY3Rpb24gRTEodCl7dmFyIGU9K3RoaXMuX3guY2FsbChudWxsLHQpLG49K3RoaXMuX3kuY2FsbChudWxsLHQpO3JldHVybiBfMSh0aGlzLmNvdmVyKGUsbiksZSxuLHQpfSxNMS5hZGRBbGw9ZnVuY3Rpb24gVDEodCl7dmFyIGUsbixpLHIsbz10Lmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKSxsPTEvMCxjPTEvMCx1PS0xLzAsaD0tMS8wO2ZvcihuPTA7bjxvOysrbilpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCxlPXRbbl0pKXx8aXNOYU4ocj0rdGhpcy5feS5jYWxsKG51bGwsZSkpfHwoYVtuXT1pLHNbbl09cixpPGwmJihsPWkpLGk+dSYmKHU9aSkscjxjJiYoYz1yKSxyPmgmJihoPXIpKTtmb3IodTxsJiYobD10aGlzLl94MCx1PXRoaXMuX3gxKSxoPGMmJihjPXRoaXMuX3kwLGg9dGhpcy5feTEpLHRoaXMuY292ZXIobCxjKS5jb3Zlcih1LGgpLG49MDtuPG87KytuKV8xKHRoaXMsYVtuXSxzW25dLHRbbl0pO3JldHVybiB0aGlzfSxNMS5jb3Zlcj1mdW5jdGlvbiBDMSh0LGUpe2lmKGlzTmFOKHQ9K3QpfHxpc05hTihlPStlKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl94MCxpPXRoaXMuX3kwLHI9dGhpcy5feDEsbz10aGlzLl95MTtpZihpc05hTihuKSlyPShuPU1hdGguZmxvb3IodCkpKzEsbz0oaT1NYXRoLmZsb29yKGUpKSsxO2Vsc2V7aWYoIShuPnR8fHQ+cnx8aT5lfHxlPm8pKXJldHVybiB0aGlzO3ZhciBhLHMsbD1yLW4sYz10aGlzLl9yb290O3N3aXRjaChzPShlPChpK28pLzIpPDwxfHQ8KG4rcikvMil7Y2FzZSAwOmRveyhhPW5ldyBBcnJheSg0KSlbc109YyxjPWF9d2hpbGUobz1pKyhsKj0yKSx0PihyPW4rbCl8fGU+byk7YnJlYWs7Y2FzZSAxOmRveyhhPW5ldyBBcnJheSg0KSlbc109YyxjPWF9d2hpbGUobz1pKyhsKj0yKSwobj1yLWwpPnR8fGU+byk7YnJlYWs7Y2FzZSAyOmRveyhhPW5ldyBBcnJheSg0KSlbc109YyxjPWF9d2hpbGUoaT1vLShsKj0yKSx0PihyPW4rbCl8fGk+ZSk7YnJlYWs7Y2FzZSAzOmRveyhhPW5ldyBBcnJheSg0KSlbc109YyxjPWF9d2hpbGUoaT1vLShsKj0yKSwobj1yLWwpPnR8fGk+ZSl9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LE0xLmRhdGE9ZnVuY3Rpb24gQTEoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxNMS5leHRlbnQ9ZnVuY3Rpb24gazEodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LE0xLmZpbmQ9ZnVuY3Rpb24gTDEodCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgeTEobSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyB5MShtWzNdLGcsXyxhLHMpLG5ldyB5MShtWzJdLHIsXyxnLHMpLG5ldyB5MShtWzFdLGcsbyxhLF8pLG5ldyB5MShtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxNMS5yZW1vdmU9ZnVuY3Rpb24gUDEodCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LE0xLnJlbW92ZUFsbD1mdW5jdGlvbiBOMSh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LE0xLnJvb3Q9ZnVuY3Rpb24gSTEoKXtyZXR1cm4gdGhpcy5fcm9vdH0sTTEuc2l6ZT1mdW5jdGlvbiBSMSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LE0xLnZpc2l0PWZ1bmN0aW9uIE8xKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyB5MShsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgeTEobixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgeTEobixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgeTEobixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgeTEobixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LE0xLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gejEodCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IHkxKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IHkxKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IHkxKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IHkxKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IHkxKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LE0xLng9ZnVuY3Rpb24gRDEodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxNMS55PWZ1bmN0aW9uIEIxKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIEgxPVtdLnNsaWNlLEYxPXt9O2Z1bmN0aW9uIFYxKHQpe3RoaXMuX3NpemU9dCx0aGlzLl9jYWxsPXRoaXMuX2Vycm9yPW51bGwsdGhpcy5fdGFza3M9W10sdGhpcy5fZGF0YT1bXSx0aGlzLl93YWl0aW5nPXRoaXMuX2FjdGl2ZT10aGlzLl9lbmRlZD10aGlzLl9zdGFydD0wfWZ1bmN0aW9uIFUxKHQpe2lmKCF0Ll9zdGFydCl0cnl7IShmdW5jdGlvbiBlKHQpe2Zvcig7dC5fc3RhcnQ9dC5fd2FpdGluZyYmdC5fYWN0aXZlPHQuX3NpemU7KXt2YXIgZT10Ll9lbmRlZCt0Ll9hY3RpdmUsbj10Ll90YXNrc1tlXSxpPW4ubGVuZ3RoLTEscj1uW2ldO25baV09ajEodCxlKSwtLXQuX3dhaXRpbmcsKyt0Ll9hY3RpdmUsbj1yLmFwcGx5KG51bGwsbiksdC5fdGFza3NbZV0mJih0Ll90YXNrc1tlXT1ufHxGMSl9fSkodCl9Y2F0Y2goZSl7aWYodC5fdGFza3NbdC5fZW5kZWQrdC5fYWN0aXZlLTFdKUcxKHQsZSk7ZWxzZSBpZighdC5fZGF0YSl0aHJvdyBlfX1mdW5jdGlvbiBqMSh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3QuX3Rhc2tzW2VdJiYoLS10Ll9hY3RpdmUsKyt0Ll9lbmRlZCx0Ll90YXNrc1tlXT1udWxsLG51bGw9PXQuX2Vycm9yJiYobnVsbCE9bj9HMSh0LG4pOih0Ll9kYXRhW2VdPWksdC5fd2FpdGluZz9VMSh0KTpXMSh0KSkpKX19ZnVuY3Rpb24gRzEodCxlKXt2YXIgbixpPXQuX3Rhc2tzLmxlbmd0aDtmb3IodC5fZXJyb3I9ZSx0Ll9kYXRhPXZvaWQgMCx0Ll93YWl0aW5nPU5hTjstLWk+PTA7KWlmKChuPXQuX3Rhc2tzW2ldKSYmKHQuX3Rhc2tzW2ldPW51bGwsbi5hYm9ydCkpdHJ5e24uYWJvcnQoKX1jYXRjaChlKXt9dC5fYWN0aXZlPU5hTixXMSh0KX1mdW5jdGlvbiBXMSh0KXtpZighdC5fYWN0aXZlJiZ0Ll9jYWxsKXt2YXIgZT10Ll9kYXRhO3QuX2RhdGE9dm9pZCAwLHQuX2NhbGwodC5fZXJyb3IsZSl9fWZ1bmN0aW9uIHExKHQpe2lmKG51bGw9PXQpdD0xLzA7ZWxzZSBpZighKCh0PSt0KT49MSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbmN1cnJlbmN5Iik7cmV0dXJuIG5ldyBWMSh0KX1mdW5jdGlvbiBZMSgpe3JldHVybiBNYXRoLnJhbmRvbSgpfVYxLnByb3RvdHlwZT1xMS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlYxLGRlZmVyOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJkZWZlciBhZnRlciBhd2FpdCIpO2lmKG51bGwhPXRoaXMuX2Vycm9yKXJldHVybiB0aGlzO3ZhciBlPUgxLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBlLnB1c2godCksKyt0aGlzLl93YWl0aW5nLHRoaXMuX3Rhc2tzLnB1c2goZSksVTEodGhpcyksdGhpc30sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fZXJyb3ImJkcxKHRoaXMsbmV3IEVycm9yKCJhYm9ydCIpKSx0aGlzfSxhd2FpdDpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgYXdhaXQiKTtyZXR1cm4gdGhpcy5fY2FsbD1mdW5jdGlvbihlLG4pe3QuYXBwbHkobnVsbCxbZV0uY29uY2F0KG4pKX0sVzEodGhpcyksdGhpc30sYXdhaXRBbGw6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIGF3YWl0Iik7cmV0dXJuIHRoaXMuX2NhbGw9dCxXMSh0aGlzKSx0aGlzfX07dmFyIFgxPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sMT09PWFyZ3VtZW50cy5sZW5ndGg/KG49dCx0PTApOm4tPXQsZnVuY3Rpb24oKXtyZXR1cm4gZSgpKm4rdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFkxKSwkMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7dmFyIGkscjtyZXR1cm4gdD1udWxsPT10PzA6K3Qsbj1udWxsPT1uPzE6K24sZnVuY3Rpb24oKXt2YXIgbztpZihudWxsIT1pKW89aSxpPW51bGw7ZWxzZSBkb3tpPTIqZSgpLTEsbz0yKmUoKS0xLHI9aSppK28qb313aGlsZSghcnx8cj4xKTtyZXR1cm4gdCtuKm8qTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoWTEpLEsxPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4oKXt2YXIgdD0kMS5zb3VyY2UoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cCh0KCkpfX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoWTEpLFoxPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsaT0wO2k8dDsrK2kpbis9ZSgpO3JldHVybiBufX1yZXR1cm4gbi5zb3VyY2U9dCxufSkoWTEpLEoxPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7dmFyIG49WjEuc291cmNlKGUpKHQpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuKCkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFkxKSxRMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLWUoKSkvdH19cmV0dXJuIG4uc291cmNlPXQsbn0pKFkxKTtmdW5jdGlvbiB0MCh0LGUpe3ZhciBuLGkscixvLGE9bGMoImJlZm9yZXNlbmQiLCJwcm9ncmVzcyIsImxvYWQiLCJlcnJvciIpLHM9d2coKSxsPW5ldyBYTUxIdHRwUmVxdWVzdCxjPW51bGwsdT1udWxsLGg9MDtmdW5jdGlvbiBkKHQpe3ZhciBlLGk9bC5zdGF0dXM7aWYoIWkmJihmdW5jdGlvbiBvKHQpe3ZhciBlPXQucmVzcG9uc2VUeXBlO3JldHVybiBlJiYidGV4dCIhPT1lP3QucmVzcG9uc2U6dC5yZXNwb25zZVRleHR9KShsKXx8aT49MjAwJiZpPDMwMHx8MzA0PT09aSl7aWYocil0cnl7ZT1yLmNhbGwobixsKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBhLmNhbGwoImVycm9yIixuLHQpfWVsc2UgZT1sO2EuY2FsbCgibG9hZCIsbixlKX1lbHNlIGEuY2FsbCgiZXJyb3IiLG4sdCl9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBYRG9tYWluUmVxdWVzdCYmISgid2l0aENyZWRlbnRpYWxzImluIGwpJiYvXihodHRwKHMpPzopP1wvXC8vLnRlc3QodCkmJihsPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBsP2wub25sb2FkPWwub25lcnJvcj1sLm9udGltZW91dD1kOmwub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKHQpe2wucmVhZHlTdGF0ZT4zJiZkKHQpfSxsLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7YS5jYWxsKCJwcm9ncmVzcyIsbix0KX0sbj17aGVhZGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9KHQrIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP3MuZ2V0KHQpOihudWxsPT1lP3MucmVtb3ZlKHQpOnMuc2V0KHQsZSsiIiksbil9LG1pbWVUeXBlOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDp0KyIiLG4pOml9LHJlc3BvbnNlVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10LG4pOm99LHRpbWVvdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3Qsbik6aH0sdXNlcjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP2M6KGM9bnVsbD09dD9udWxsOnQrIiIsbil9LHBhc3N3b3JkOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/dToodT1udWxsPT10P251bGw6dCsiIixuKX0scmVzcG9uc2U6ZnVuY3Rpb24odCl7cmV0dXJuIHI9dCxufSxnZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZW5kKCJHRVQiLHQsZSl9LHBvc3Q6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZW5kKCJQT1NUIix0LGUpfSxzZW5kOmZ1bmN0aW9uKGUscixkKXtyZXR1cm4gbC5vcGVuKGUsdCwhMCxjLHUpLG51bGw9PWl8fHMuaGFzKCJhY2NlcHQiKXx8cy5zZXQoImFjY2VwdCIsaSsiLCovKiIpLGwuc2V0UmVxdWVzdEhlYWRlciYmcy5lYWNoKChmdW5jdGlvbih0LGUpe2wuc2V0UmVxdWVzdEhlYWRlcihlLHQpfSkpLG51bGwhPWkmJmwub3ZlcnJpZGVNaW1lVHlwZSYmbC5vdmVycmlkZU1pbWVUeXBlKGkpLG51bGwhPW8mJihsLnJlc3BvbnNlVHlwZT1vKSxoPjAmJihsLnRpbWVvdXQ9aCksbnVsbD09ZCYmImZ1bmN0aW9uIj09dHlwZW9mIHImJihkPXIscj1udWxsKSxudWxsIT1kJiYxPT09ZC5sZW5ndGgmJihkPShmdW5jdGlvbiBwKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3QobnVsbD09ZT9uOm51bGwpfX0pKGQpKSxudWxsIT1kJiZuLm9uKCJlcnJvciIsZCkub24oImxvYWQiLChmdW5jdGlvbih0KXtkKG51bGwsdCl9KSksYS5jYWxsKCJiZWZvcmVzZW5kIixuLGwpLGwuc2VuZChudWxsPT1yP251bGw6ciksbn0sYWJvcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5hYm9ydCgpLG59LG9uOmZ1bmN0aW9uKCl7dmFyIHQ9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1hP246dH19LG51bGwhPWUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtyZXR1cm4gbi5nZXQoZSl9cmV0dXJuIG59ZnVuY3Rpb24gZTAodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgcj10MChuKS5taW1lVHlwZSh0KS5yZXNwb25zZShlKTtpZihudWxsIT1pKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgaSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIraSk7cmV0dXJuIHIuZ2V0KGkpfXJldHVybiByfX12YXIgbjA9ZTAoInRleHQvaHRtbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVSYW5nZSgpLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudCh0LnJlc3BvbnNlVGV4dCl9KSksaTA9ZTAoImFwcGxpY2F0aW9uL2pzb24iLChmdW5jdGlvbih0KXtyZXR1cm4gSlNPTi5wYXJzZSh0LnJlc3BvbnNlVGV4dCl9KSkscjA9ZTAoInRleHQvcGxhaW4iLChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXNwb25zZVRleHR9KSksbzA9ZTAoImFwcGxpY2F0aW9uL3htbCIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVzcG9uc2VYTUw7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJwYXJzZSBlcnJvciIpO3JldHVybiBlfSkpO2Z1bmN0aW9uIGEwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXthcmd1bWVudHMubGVuZ3RoPDMmJihyPWksaT1udWxsKTt2YXIgbz10MChuKS5taW1lVHlwZSh0KTtyZXR1cm4gby5yb3c9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/by5yZXNwb25zZShzMChlLGk9dCkpOml9LG8ucm93KGkpLHI/by5nZXQocik6b319ZnVuY3Rpb24gczAodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQobi5yZXNwb25zZVRleHQsZSl9fXZhciBsMD1hMCgidGV4dC9jc3YiLEpnKSxjMD1hMCgidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIsYV8pO2Z1bmN0aW9uIHUwKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGgwKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB1MCh0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19dmFyIGQwPWgwKHUwKS5yaWdodDtmdW5jdGlvbiBwMCh0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fXZhciBmMD1NYXRoLnNxcnQoNTApLG0wPU1hdGguc3FydCgxMCksZzA9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIF8wKHQsZSxuKXt2YXIgaSxyLG8sYSxzPS0xO2lmKG49K24sKHQ9K3QpPT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9eTAodCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24geTAodCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1mMD8xMDpvPj1tMD81Om8+PWcwPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49ZjA/MTA6bz49bTA/NTpvPj1nMD8yOjEpfWZ1bmN0aW9uIHYwKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1mMD9yKj0xMDpvPj1tMD9yKj01Om8+PWcwJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24gYjAodCxlLG4pe2lmKG51bGw9PW4mJihuPXAwKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fXZhciB4MD0iJCI7ZnVuY3Rpb24gdzAoKXt9ZnVuY3Rpb24gUzAodCxlKXt2YXIgbj1uZXcgdzA7aWYodCBpbnN0YW5jZW9mIHcwKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gTTAoKXt9dzAucHJvdG90eXBlPVMwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dzAsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiB4MCt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1t4MCt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbeDArdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9eDArdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09eDAmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXgwJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT14MCYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXgwJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXgwJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PXgwKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT14MCYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgRTA9UzAucHJvdG90eXBlO00wLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TTAsaGFzOkUwLmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbeDArKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6RTAucmVtb3ZlLGNsZWFyOkUwLmNsZWFyLHZhbHVlczpFMC5rZXlzLHNpemU6RTAuc2l6ZSxlbXB0eTpFMC5lbXB0eSxlYWNoOkUwLmVhY2h9O3ZhciBUMD1BcnJheS5wcm90b3R5cGUsQzA9VDAubWFwLEEwPVQwLnNsaWNlLGswPXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIEwwKHQpe3ZhciBlPVMwKCksbj1bXSxpPWswO2Z1bmN0aW9uIHIocil7dmFyIG89cisiIixhPWUuZ2V0KG8pO2lmKCFhKXtpZihpIT09azApcmV0dXJuIGk7ZS5zZXQobyxhPW4ucHVzaChyKSl9cmV0dXJuIHRbKGEtMSkldC5sZW5ndGhdfXJldHVybiB0PW51bGw9PXQ/W106QTAuY2FsbCh0KSxyLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5zbGljZSgpO249W10sZT1TMCgpO2Zvcih2YXIgaSxvLGE9LTEscz10Lmxlbmd0aDsrK2E8czspZS5oYXMobz0oaT10W2FdKSsiIil8fGUuc2V0KG8sbi5wdXNoKGkpKTtyZXR1cm4gcn0sci5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BMC5jYWxsKGUpLHIpOnQuc2xpY2UoKX0sci51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQscik6aX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEwwKCkuZG9tYWluKG4pLnJhbmdlKHQpLnVua25vd24oaSl9LHJ9ZnVuY3Rpb24gUDAoKXt2YXIgdCxlLG49TDAoKS51bmtub3duKHZvaWQgMCksaT1uLmRvbWFpbixyPW4ucmFuZ2Usbz1bMCwxXSxhPSExLHM9MCxsPTAsYz0uNTtmdW5jdGlvbiB1KCl7dmFyIG49aSgpLmxlbmd0aCx1PW9bMV08b1swXSxoPW9bdS0wXSxkPW9bMS11XTt0PShkLWgpL01hdGgubWF4KDEsbi1zKzIqbCksYSYmKHQ9TWF0aC5mbG9vcih0KSksaCs9KGQtaC10KihuLXMpKSpjLGU9dCooMS1zKSxhJiYoaD1NYXRoLnJvdW5kKGgpLGU9TWF0aC5yb3VuZChlKSk7dmFyIHA9KGZ1bmN0aW9uIGYodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99KShuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBoK3QqZX0pKTtyZXR1cm4gcih1P3AucmV2ZXJzZSgpOnApfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLHUoKSk6aSgpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPVsrdFswXSwrdFsxXV0sdSgpKTpvLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gbz1bK3RbMF0sK3RbMV1dLGE9ITAsdSgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsdSgpKTphfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6c30sbi5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSx1KCkpOnN9LG4ucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpsfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpjfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUDAoKS5kb21haW4oaSgpKS5yYW5nZShvKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSx1KCl9ZnVuY3Rpb24gTjAodCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTjAoZSgpKX0sdH1mdW5jdGlvbiBJMCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gUjAodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gTzAoKXt9dmFyIHowPS43LEQwPTEvejAsQjA9IlxccyooWystXT9cXGQrKVxccyoiLEgwPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLEYwPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixWMD0vXiMoWzAtOWEtZl17Myw4fSkkLyxVMD1uZXcgUmVnRXhwKCJecmdiXFwoIitbQjAsQjAsQjBdKyJcXCkkIiksajA9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0YwLEYwLEYwXSsiXFwpJCIpLEcwPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbQjAsQjAsQjAsSDBdKyJcXCkkIiksVzA9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tGMCxGMCxGMCxIMF0rIlxcKSQiKSxxMD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbSDAsRjAsRjBdKyJcXCkkIiksWTA9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tIMCxGMCxGMCxIMF0rIlxcKSQiKSxYMD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiAkMCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIEswKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gWjAodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9VjAuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9KMChlKTozPT09bj9uZXcgbjIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP1EwKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP1EwKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9VTAuZXhlYyh0KSk/bmV3IG4yKGVbMV0sZVsyXSxlWzNdLDEpOihlPWowLmV4ZWModCkpP25ldyBuMigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1HMC5leGVjKHQpKT9RMChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1XMC5leGVjKHQpKT9RMCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1xMC5leGVjKHQpKT9hMihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVkwLmV4ZWModCkpP2EyKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6WDAuaGFzT3duUHJvcGVydHkodCk/SjAoWDBbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBuMihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIEowKHQpe3JldHVybiBuZXcgbjIodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIFEwKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgbjIodCxlLG4saSl9ZnVuY3Rpb24gdDIodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBPMHx8KHQ9WjAodCkpLHQ/bmV3IG4yKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBuMn1mdW5jdGlvbiBlMih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dDIodCk6bmV3IG4yKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBuMih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gaTIoKXtyZXR1cm4iIyIrbzIodGhpcy5yKStvMih0aGlzLmcpK28yKHRoaXMuYil9ZnVuY3Rpb24gcjIoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBvMih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGEyKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgbDIodCxlLG4saSl9ZnVuY3Rpb24gczIodCl7aWYodCBpbnN0YW5jZW9mIGwyKXJldHVybiBuZXcgbDIodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgTzB8fCh0PVowKHQpKSwhdClyZXR1cm4gbmV3IGwyO2lmKHQgaW5zdGFuY2VvZiBsMilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IGwyKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gbDIodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGMyKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1JMChPMCxaMCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDokMCxmb3JtYXRIZXg6JDAsZm9ybWF0SHNsOmZ1bmN0aW9uIHUyKCl7cmV0dXJuIHMyKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6SzAsdG9TdHJpbmc6SzB9KSxJMChuMixlMixSMChPMCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9EMDpNYXRoLnBvdyhEMCx0KSxuZXcgbjIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ejA6TWF0aC5wb3coejAsdCksbmV3IG4yKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6aTIsZm9ybWF0SGV4OmkyLGZvcm1hdFJnYjpyMix0b1N0cmluZzpyMn0pKSxJMChsMiwoZnVuY3Rpb24gaDIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3MyKHQpOm5ldyBsMih0LGUsbixudWxsPT1pPzE6aSl9KSxSMChPMCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9EMDpNYXRoLnBvdyhEMCx0KSxuZXcgbDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD96MDpNYXRoLnBvdyh6MCx0KSxuZXcgbDIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBuMihjMih0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxjMih0LHIsaSksYzIodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgZDI9TWF0aC5QSS8xODAscDI9MTgwL01hdGguUEksZjI9LS4xNDg2MSxtMj0xLjc4Mjc3LGcyPS0uMjkyMjcsXzI9LS45MDY0OSx5Mj0xLjk3Mjk0LHYyPXkyKl8yLGIyPXkyKm0yLHgyPW0yKmcyLV8yKmYyO2Z1bmN0aW9uIHcyKHQpe2lmKHQgaW5zdGFuY2VvZiBNMilyZXR1cm4gbmV3IE0yKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIG4yfHwodD10Mih0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oeDIqbit2MioodC5yLzI1NSktYjIqZSkvKHgyK3YyLWIyKSxyPW4taSxvPSh5MiooZS1pKS1nMipyKS9fMixhPU1hdGguc3FydChvKm8rcipyKS8oeTIqaSooMS1pKSkscz1hP01hdGguYXRhbjIobyxyKSpwMi0xMjA6TmFOO3JldHVybiBuZXcgTTIoczwwP3MrMzYwOnMsYSxpLHQub3BhY2l0eSl9ZnVuY3Rpb24gUzIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3cyKHQpOm5ldyBNMih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gTTIodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIEUyKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBUMih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIEMyKHQsZSl7dmFyIG49ZS10O3JldHVybiBuP1QyKHQsbik6RTIoaXNOYU4odCk/ZTp0KX1JMChNMixTMixSMChPMCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9EMDpNYXRoLnBvdyhEMCx0KSxuZXcgTTIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD96MDpNYXRoLnBvdyh6MCx0KSxuZXcgTTIodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD1pc05hTih0aGlzLmgpPzA6KHRoaXMuaCsxMjApKmQyLGU9K3RoaXMubCxuPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqZSooMS1lKSxpPU1hdGguY29zKHQpLHI9TWF0aC5zaW4odCk7cmV0dXJuIG5ldyBuMigyNTUqKGUrbiooZjIqaSttMipyKSksMjU1KihlK24qKGcyKmkrXzIqcikpLDI1NSooZStuKih5MippKSksdGhpcy5vcGFjaXR5KX19KSk7dmFyIEEyPShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3JldHVybiAxPT0odD0rdCk/QzI6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6RTIoaXNOYU4oZSk/bjplKX19KShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIGk9bigodD1lMih0KSkuciwoZT1lMihlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPUMyKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSkoMSk7ZnVuY3Rpb24gazIodCxlKXtlfHwoZT1bXSk7dmFyIG4saT10P01hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKTowLHI9ZS5zbGljZSgpO3JldHVybiBmdW5jdGlvbihvKXtmb3Iobj0wO248aTsrK24pcltuXT10W25dKigxLW8pK2Vbbl0qbztyZXR1cm4gcn19ZnVuY3Rpb24gTDIodCxlKXt2YXIgbixpPWU/ZS5sZW5ndGg6MCxyPXQ/TWF0aC5taW4oaSx0Lmxlbmd0aCk6MCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShpKTtmb3Iobj0wO248cjsrK24pb1tuXT1EMih0W25dLGVbbl0pO2Zvcig7bjxpOysrbilhW25dPWVbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihuPTA7bjxyOysrbilhW25dPW9bbl0odCk7cmV0dXJuIGF9fWZ1bmN0aW9uIFAyKHQsZSl7dmFyIG49bmV3IERhdGU7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQqKDEtaSkrZSppKSxufX1mdW5jdGlvbiBOMih0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX1mdW5jdGlvbiBJMih0LGUpe3ZhciBuLGk9e30scj17fTtmb3IobiBpbiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fHwodD17fSksbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZXx8KGU9e30pLGUpbiBpbiB0P2lbbl09RDIodFtuXSxlW25dKTpyW25dPWVbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihuIGluIGkpcltuXT1pW25dKHQpO3JldHVybiByfX12YXIgUjI9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLE8yPW5ldyBSZWdFeHAoUjIuc291cmNlLCJnIik7ZnVuY3Rpb24gejIodCxlKXt2YXIgbixpLHIsbz1SMi5sYXN0SW5kZXg9TzIubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPVIyLmV4ZWModCkpJiYoaT1PMi5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6TjIobixpKX0pKSxvPU8yLmxhc3RJbmRleDtyZXR1cm4gbzxlLmxlbmd0aCYmKHI9ZS5zbGljZShvKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLHMubGVuZ3RoPDI/bFswXT8oZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fSkobFswXS54KTooZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4saT0wO2k8ZTsrK2kpc1sobj1sW2ldKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBEMih0LGUpe3ZhciBuLGk9dHlwZW9mIGU7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PWk/RTIoZSk6KCJudW1iZXIiPT09aT9OMjoic3RyaW5nIj09PWk/KG49WjAoZSkpPyhlPW4sQTIpOnoyOmUgaW5zdGFuY2VvZiBaMD9BMjplIGluc3RhbmNlb2YgRGF0ZT9QMjooZnVuY3Rpb24gcih0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9KShlKT9rMjpBcnJheS5pc0FycmF5KGUpP0wyOiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9JMjpOMikodCxlKX1mdW5jdGlvbiBCMih0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQodCooMS1uKStlKm4pfX1mdW5jdGlvbiBIMih0KXtyZXR1cm4oZnVuY3Rpb24gZShuKXtmdW5jdGlvbiBpKGUsaSl7dmFyIHI9dCgoZT1TMihlKSkuaCwoaT1TMihpKSkuaCksbz1DMihlLnMsaS5zKSxhPUMyKGUubCxpLmwpLHM9QzIoZS5vcGFjaXR5LGkub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9cih0KSxlLnM9byh0KSxlLmw9YShNYXRoLnBvdyh0LG4pKSxlLm9wYWNpdHk9cyh0KSxlKyIifX1yZXR1cm4gbj0rbixpLmdhbW1hPWUsaX0pKDEpfUgyKChmdW5jdGlvbiBGMih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9UMih0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6RTIoaXNOYU4odCk/ZTp0KX0pKTt2YXIgVjI9SDIoQzIpO2Z1bmN0aW9uIFUyKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBqMih0KXtyZXR1cm4rdH12YXIgRzI9WzAsMV07ZnVuY3Rpb24gVzIodCxlKXtyZXR1cm4oZS09dD0rdCk/ZnVuY3Rpb24obil7cmV0dXJuKG4tdCkvZX06VTIoZSl9ZnVuY3Rpb24gcTIodCxlLG4saSl7dmFyIHI9dFswXSxvPXRbMV0sYT1lWzBdLHM9ZVsxXTtyZXR1cm4gbzxyPyhyPW4obyxyKSxhPWkocyxhKSk6KHI9bihyLG8pLGE9aShhLHMpKSxmdW5jdGlvbih0KXtyZXR1cm4gYShyKHQpKX19ZnVuY3Rpb24gWTIodCxlLG4saSl7dmFyIHI9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLTEsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocikscz0tMTtmb3IodFtyXTx0WzBdJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7KytzPHI7KW9bc109bih0W3NdLHRbcysxXSksYVtzXT1pKGVbc10sZVtzKzFdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZDAodCxlLDEsciktMTtyZXR1cm4gYVtuXShvW25dKGUpKX19ZnVuY3Rpb24gWDIodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSl9ZnVuY3Rpb24gJDIodCxlKXt2YXIgbixpLHIsbz1HMixhPUcyLHM9RDIsbD0hMTtmdW5jdGlvbiBjKCl7cmV0dXJuIG49TWF0aC5taW4oby5sZW5ndGgsYS5sZW5ndGgpPjI/WTI6cTIsaT1yPW51bGwsdX1mdW5jdGlvbiB1KGUpe3JldHVybihpfHwoaT1uKG8sYSxsPyhmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoZT0rZSxuPStuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PWU/MDp0Pj1uPzE6aSh0KX19fSkodCk6dCxzKSkpKCtlKX1yZXR1cm4gdS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuKHJ8fChyPW4oYSxvLFcyLGw/KGZ1bmN0aW9uIGkodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dChlPStlLG49K24pO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdDw9MD9lOnQ+PTE/bjppKHQpfX19KShlKTplKSkpKCt0KX0sdS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89QzAuY2FsbCh0LGoyKSxjKCkpOm8uc2xpY2UoKX0sdS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1BMC5jYWxsKHQpLGMoKSk6YS5zbGljZSgpfSx1LnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGE9QTAuY2FsbCh0KSxzPUIyLGMoKX0sdS5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0hIXQsYygpKTpsfSx1LmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQsYygpKTpzfSxjKCl9ZnVuY3Rpb24gSzIodCxlKXtpZigobj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4saT10LnNsaWNlKDAsbik7cmV0dXJuW2kubGVuZ3RoPjE/aVswXStpLnNsaWNlKDIpOmksK3Quc2xpY2UobisxKV19ZnVuY3Rpb24gWjIodCl7cmV0dXJuKHQ9SzIoTWF0aC5hYnModCkpKT90WzFdOk5hTn12YXIgSjIsUTI9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7ZnVuY3Rpb24gdDUodCl7aWYoIShlPVEyLmV4ZWModCkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrdCk7dmFyIGU7cmV0dXJuIG5ldyBlNSh7ZmlsbDplWzFdLGFsaWduOmVbMl0sc2lnbjplWzNdLHN5bWJvbDplWzRdLHplcm86ZVs1XSx3aWR0aDplWzZdLGNvbW1hOmVbN10scHJlY2lzaW9uOmVbOF0mJmVbOF0uc2xpY2UoMSksdHJpbTplWzldLHR5cGU6ZVsxMF19KX1mdW5jdGlvbiBlNSh0KXt0aGlzLmZpbGw9dm9pZCAwPT09dC5maWxsPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT10LmFsaWduPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT10LnNpZ24/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT10LnN5bWJvbD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT10LndpZHRoP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT10LnByZWNpc2lvbj92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dm9pZCAwPT09dC50eXBlPyIiOnQudHlwZSsiIn1mdW5jdGlvbiBuNSh0LGUpe3ZhciBuPUsyKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV07cmV0dXJuIHI8MD8iMC4iK25ldyBBcnJheSgtcikuam9pbigiMCIpK2k6aS5sZW5ndGg+cisxP2kuc2xpY2UoMCxyKzEpKyIuIitpLnNsaWNlKHIrMSk6aStuZXcgQXJyYXkoci1pLmxlbmd0aCsyKS5qb2luKCIwIil9dDUucHJvdG90eXBlPWU1LnByb3RvdHlwZSxlNS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodm9pZCAwPT09dGhpcy53aWR0aD8iIjpNYXRoLm1heCgxLDB8dGhpcy53aWR0aCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHZvaWQgMD09PXRoaXMucHJlY2lzaW9uPyIiOiIuIitNYXRoLm1heCgwLDB8dGhpcy5wcmVjaXNpb24pKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTt2YXIgaTU9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbiByNSh0KXtyZXR1cm4gTWF0aC5hYnModD1NYXRoLnJvdW5kKHQpKT49MWUyMT90LnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6dC50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG41KDEwMCp0LGUpfSxyOm41LHM6ZnVuY3Rpb24gbzUodCxlKXt2YXIgbj1LMih0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBpPW5bMF0scj1uWzFdLG89ci0oSjI9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Ioci8zKSkpKSsxLGE9aS5sZW5ndGg7cmV0dXJuIG89PT1hP2k6bz5hP2krbmV3IEFycmF5KG8tYSsxKS5qb2luKCIwIik6bz4wP2kuc2xpY2UoMCxvKSsiLiIraS5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKStLMih0LE1hdGgubWF4KDAsZStvLTEpKVswXX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9fTtmdW5jdGlvbiBhNSh0KXtyZXR1cm4gdH12YXIgczUsbDUsYzUsdTU9QXJyYXkucHJvdG90eXBlLm1hcCxoNT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gZDUodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24odCl7dmFyIG49ZSgpO3JldHVybiBfMChuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe3ZhciBpLHI9dFswXSxvPXRbdC5sZW5ndGgtMV0sYT12MChyLG8sbnVsbD09ZT8xMDplKTtzd2l0Y2goKG49dDUobnVsbD09bj8iLGYiOm4pKS50eXBlKXtjYXNlInMiOnZhciBzPU1hdGgubWF4KE1hdGguYWJzKHIpLE1hdGguYWJzKG8pKTtyZXR1cm4gbnVsbCE9bi5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gTWF0aC5tYXgoMCwzKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihaMihlKS8zKSkpLVoyKE1hdGguYWJzKHQpKSl9KShhLHMpKXx8KG4ucHJlY2lzaW9uPWkpLGM1KG4scyk7Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6bnVsbCE9bi5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdD1NYXRoLmFicyh0KSxlPU1hdGguYWJzKGUpLXQsTWF0aC5tYXgoMCxaMihlKS1aMih0KSkrMX0pKGEsTWF0aC5tYXgoTWF0aC5hYnMociksTWF0aC5hYnMobykpKSl8fChuLnByZWNpc2lvbj1pLSgiZSI9PT1uLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9bi5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGgubWF4KDAsLVoyKE1hdGguYWJzKHQpKSl9KShhKSl8fChuLnByZWNpc2lvbj1pLTIqKCIlIj09PW4udHlwZSkpfXJldHVybiBsNShuKX0pKGUoKSx0LG4pfSx0Lm5pY2U9ZnVuY3Rpb24obil7bnVsbD09biYmKG49MTApO3ZhciBpLHI9ZSgpLG89MCxhPXIubGVuZ3RoLTEscz1yW29dLGw9clthXTtyZXR1cm4gbDxzJiYoaT1zLHM9bCxsPWksaT1vLG89YSxhPWkpLChpPXkwKHMsbCxuKSk+MD9pPXkwKHM9TWF0aC5mbG9vcihzL2kpKmksbD1NYXRoLmNlaWwobC9pKSppLG4pOmk8MCYmKGk9eTAocz1NYXRoLmNlaWwocyppKS9pLGw9TWF0aC5mbG9vcihsKmkpL2ksbikpLGk+MD8ocltvXT1NYXRoLmZsb29yKHMvaSkqaSxyW2FdPU1hdGguY2VpbChsL2kpKmksZShyKSk6aTwwJiYocltvXT1NYXRoLmNlaWwocyppKS9pLHJbYV09TWF0aC5mbG9vcihsKmkpL2ksZShyKSksdH0sdH1mdW5jdGlvbiBwNSh0LGUpe3ZhciBuLGk9MCxyPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W2ldLGE9dFtyXTtyZXR1cm4gYTxvJiYobj1pLGk9cixyPW4sbj1vLG89YSxhPW4pLHRbaV09ZS5mbG9vcihvKSx0W3JdPWUuY2VpbChhKSx0fWZ1bmN0aW9uIGY1KHQsZSl7cmV0dXJuKGU9TWF0aC5sb2coZS90KSk/ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4vdCkvZX06VTIoZSl9ZnVuY3Rpb24gbTUodCxlKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKG4pe3JldHVybi1NYXRoLnBvdygtZSxuKSpNYXRoLnBvdygtdCwxLW4pfTpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3coZSxuKSpNYXRoLnBvdyh0LDEtbil9fWZ1bmN0aW9uIGc1KHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBfNSh0KXtyZXR1cm4gMTA9PT10P2c1OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fWZ1bmN0aW9uIHk1KHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpL3R9KX1mdW5jdGlvbiB2NSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuLXQoLWUpfX1mdW5jdGlvbiBiNSh0LGUpe3JldHVybiB0PDA/LU1hdGgucG93KC10LGUpOk1hdGgucG93KHQsZSl9ZnVuY3Rpb24geDUoKXt2YXIgdD0xLGU9JDIoKGZ1bmN0aW9uIG4oZSxpKXtyZXR1cm4oaT1iNShpLHQpLShlPWI1KGUsdCkpKT9mdW5jdGlvbihuKXtyZXR1cm4oYjUobix0KS1lKS9pfTpVMihpKX0pLChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIG49YjUobix0KS0oZT1iNShlLHQpKSxmdW5jdGlvbihpKXtyZXR1cm4gYjUoZStuKmksMS90KX19KSkscj1lLmRvbWFpbjtyZXR1cm4gZS5leHBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxyKHIoKSkpOnR9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBYMihlLHg1KCkuZXhwb25lbnQodCkpfSxkNShlKX0hKGZ1bmN0aW9uIHc1KHQpe3M1PShmdW5jdGlvbiBlKHQpe3ZhciBlPXZvaWQgMD09PXQuZ3JvdXBpbmd8fHZvaWQgMD09PXQudGhvdXNhbmRzP2E1OihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7Zm9yKHZhciByPW4ubGVuZ3RoLG89W10sYT0wLHM9dFswXSxsPTA7cj4wJiZzPjAmJihsK3MrMT5pJiYocz1NYXRoLm1heCgxLGktbCkpLG8ucHVzaChuLnN1YnN0cmluZyhyLT1zLHIrcykpLCEoKGwrPXMrMSk+aSkpOylzPXRbYT0oYSsxKSV0Lmxlbmd0aF07cmV0dXJuIG8ucmV2ZXJzZSgpLmpvaW4oZSl9fSkodTUuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLGk9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzBdKyIiLHI9dm9pZCAwPT09dC5jdXJyZW5jeT8iIjp0LmN1cnJlbmN5WzFdKyIiLG89dm9pZCAwPT09dC5kZWNpbWFsPyIuIjp0LmRlY2ltYWwrIiIsYT12b2lkIDA9PT10Lm51bWVyYWxzP2E1OihmdW5jdGlvbiBzKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fSkodTUuY2FsbCh0Lm51bWVyYWxzLFN0cmluZykpLGw9dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIsYz12b2lkIDA9PT10Lm1pbnVzPyItIjp0Lm1pbnVzKyIiLHU9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gaCh0KXt2YXIgbj0odD10NSh0KSkuZmlsbCxzPXQuYWxpZ24saD10LnNpZ24sZD10LnN5bWJvbCxwPXQuemVybyxmPXQud2lkdGgsbT10LmNvbW1hLGc9dC5wcmVjaXNpb24sXz10LnRyaW0seT10LnR5cGU7Im4iPT09eT8obT0hMCx5PSJnIik6aTVbeV18fCh2b2lkIDA9PT1nJiYoZz0xMiksXz0hMCx5PSJnIiksKHB8fCIwIj09PW4mJiI9Ij09PXMpJiYocD0hMCxuPSIwIixzPSI9Iik7dmFyIHY9IiQiPT09ZD9pOiIjIj09PWQmJi9bYm94WF0vLnRlc3QoeSk/IjAiK3kudG9Mb3dlckNhc2UoKToiIixiPSIkIj09PWQ/cjovWyVwXS8udGVzdCh5KT9sOiIiLHg9aTVbeV0sdz0vW2RlZmdwcnMlXS8udGVzdCh5KTtmdW5jdGlvbiBTKHQpe3ZhciBpLHIsbCxkPXYsUz1iO2lmKCJjIj09PXkpUz14KHQpK1MsdD0iIjtlbHNle3ZhciBNPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP3U6eChNYXRoLmFicyh0KSxnKSxfJiYodD0oZnVuY3Rpb24gRSh0KXt0OmZvcih2YXIgZSxuPXQubGVuZ3RoLGk9MSxyPS0xO2k8bjsrK2kpc3dpdGNoKHRbaV0pe2Nhc2UiLiI6cj1lPWk7YnJlYWs7Y2FzZSIwIjowPT09ciYmKHI9aSksZT1pO2JyZWFrO2RlZmF1bHQ6aWYoISt0W2ldKWJyZWFrIHQ7cj4wJiYocj0wKX1yZXR1cm4gcj4wP3Quc2xpY2UoMCxyKSt0LnNsaWNlKGUrMSk6dH0pKHQpKSxNJiYwPT0rdCYmIisiIT09aCYmKE09ITEpLGQ9KE0/IigiPT09aD9oOmM6Ii0iPT09aHx8IigiPT09aD8iIjpoKStkLFM9KCJzIj09PXk/aDVbOCtKMi8zXToiIikrUysoTSYmIigiPT09aD8iKSI6IiIpLHcpZm9yKGk9LTEscj10Lmxlbmd0aDsrK2k8cjspaWYoNDg+KGw9dC5jaGFyQ29kZUF0KGkpKXx8bD41Nyl7Uz0oNDY9PT1sP28rdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK1MsdD10LnNsaWNlKDAsaSk7YnJlYWt9fW0mJiFwJiYodD1lKHQsMS8wKSk7dmFyIFQ9ZC5sZW5ndGgrdC5sZW5ndGgrUy5sZW5ndGgsQz1UPGY/bmV3IEFycmF5KGYtVCsxKS5qb2luKG4pOiIiO3N3aXRjaChtJiZwJiYodD1lKEMrdCxDLmxlbmd0aD9mLVMubGVuZ3RoOjEvMCksQz0iIikscyl7Y2FzZSI8Ijp0PWQrdCtTK0M7YnJlYWs7Y2FzZSI9Ijp0PWQrQyt0K1M7YnJlYWs7Y2FzZSJeIjp0PUMuc2xpY2UoMCxUPUMubGVuZ3RoPj4xKStkK3QrUytDLnNsaWNlKFQpO2JyZWFrO2RlZmF1bHQ6dD1DK2QrdCtTfXJldHVybiBhKHQpfXJldHVybiBnPXZvaWQgMD09PWc/NjovW2dwcnNdLy50ZXN0KHkpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsZykpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsZykpLFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sU31yZXR1cm57Zm9ybWF0OmgsZm9ybWF0UHJlZml4OmZ1bmN0aW9uIGQodCxlKXt2YXIgbj1oKCgodD10NSh0KSkudHlwZT0iZiIsdCkpLGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoWjIoZSkvMykpKSxyPU1hdGgucG93KDEwLC1pKSxvPWg1WzgraS8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4ocip0KStvfX19fSkodCksbDU9czUuZm9ybWF0LGM1PXM1LmZvcm1hdFByZWZpeH0pKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KTt2YXIgUzU9bmV3IERhdGUsTTU9bmV3IERhdGU7ZnVuY3Rpb24gRTUodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0sci5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0sci5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1yKHQpLG49ci5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0sci5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0sci5yYW5nZT1mdW5jdGlvbihuLGksbyl7dmFyIGEscz1bXTtpZihuPXIuY2VpbChuKSxvPW51bGw9PW8/MTpNYXRoLmZsb29yKG8pLCEobjxpJiZvPjApKXJldHVybiBzO2Rve3MucHVzaChhPW5ldyBEYXRlKCtuKSksZShuLG8pLHQobil9d2hpbGUoYTxuJiZuPGkpO3JldHVybiBzfSxyLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gRTUoKGZ1bmN0aW9uKGUpe2lmKGU+PWUpZm9yKDt0KGUpLCFuKGUpOyllLnNldFRpbWUoZS0xKX0pLChmdW5jdGlvbih0LGkpe2lmKHQ+PXQpaWYoaTwwKWZvcig7KytpPD0wOylmb3IoO2UodCwtMSksIW4odCk7KTtlbHNlIGZvcig7LS1pPj0wOylmb3IoO2UodCwxKSwhbih0KTspO30pKX0sbiYmKHIuY291bnQ9ZnVuY3Rpb24oZSxpKXtyZXR1cm4gUzUuc2V0VGltZSgrZSksTTUuc2V0VGltZSgraSksdChTNSksdChNNSksTWF0aC5mbG9vcihuKFM1LE01KSl9LHIuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9yLmZpbHRlcihpP2Z1bmN0aW9uKGUpe3JldHVybiBpKGUpJXQ9PTB9OmZ1bmN0aW9uKGUpe3JldHVybiByLmNvdW50KDAsZSkldD09MH0pOnI6bnVsbH0pLHJ9dmFyIFQ1PUU1KChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7VDUuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9FNSgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpUNTpudWxsfTt2YXIgQzU9VDUsQTU9MWUzLGs1PTZlNCxMNT0zNmU1LFA1PTg2NGU1LE41PTYwNDhlNSxJNT1FNSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpBNSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9BNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksUjU9RTUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqQTUpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqazUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvazV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLE81PUU1KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKkE1LXQuZ2V0TWludXRlcygpKms1KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkw1KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0w1fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSksejU9RTUoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSprNSkvUDV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSk7ZnVuY3Rpb24gRDUodCl7cmV0dXJuIEU1KChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSprNSkvTjV9KSl9dmFyIEI1PUQ1KDApLEg1PUQ1KDEpO0Q1KDIpLEQ1KDMpO3ZhciBGNT1ENSg0KTtENSg1KSxENSg2KTt2YXIgVjU9RTUoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMiooZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSxVNT1FNSgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7VTUuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9FNSgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGo1PVU1LEc1PUU1KChmdW5jdGlvbih0KXt0LnNldFVUQ1NlY29uZHMoMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKms1KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2s1fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01pbnV0ZXMoKX0pKSxXNT1FNSgoZnVuY3Rpb24odCl7dC5zZXRVVENNaW51dGVzKDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkw1KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0w1fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSkscTU9RTUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9QNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pKTtmdW5jdGlvbiBZNSh0KXtyZXR1cm4gRTUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL041fSkpfXZhciBYNT1ZNSgwKSwkNT1ZNSgxKTtZNSgyKSxZNSgzKTt2YXIgSzU9WTUoNCk7WTUoNSksWTUoNik7dmFyIFo1PUU1KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksSjU9RTUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO0o1LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/RTUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBRNT1KNTtmdW5jdGlvbiB0Myh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gZTModCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gbjModCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fXZhciBpMyxyMyxvMyxhMz17Ii0iOiIiLF86IiAiLDA6IjAifSxzMz0vXlxzKlxkKy8sbDM9L14lLyxjMz0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gdTModCxlLG4pe3ZhciBpPXQ8MD8iLSI6IiIscj0oaT8tdDp0KSsiIixvPXIubGVuZ3RoO3JldHVybiBpKyhvPG4/bmV3IEFycmF5KG4tbysxKS5qb2luKGUpK3I6cil9ZnVuY3Rpb24gaDModCl7cmV0dXJuIHQucmVwbGFjZShjMywiXFwkJiIpfWZ1bmN0aW9uIGQzKHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChoMykuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIHAzKHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIGYzKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC53PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIG0zKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC51PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGczKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF8zKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5WPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHkzKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5XPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHYzKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGIzKHQsZSxuKXt2YXIgaT1zMy5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC55PStpWzBdKygraVswXT42OD8xOTAwOjJlMyksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geDModCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB3Myh0LGUsbil7dmFyIGk9czMuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQucT0zKmlbMF0tMyxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBTMyh0LGUsbil7dmFyIGk9czMuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQubT1pWzBdLTEsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTTModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRTModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVDModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lkg9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQzModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lk09K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQTModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gazModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lkw9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTDModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Lkw9TWF0aC5mbG9vcihpWzBdLzFlMyksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUDModCxlLG4pe3ZhciBpPWwzLmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gTjModCxlLG4pe3ZhciBpPXMzLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJMyh0LGUsbil7dmFyIGk9czMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5zPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFIzKHQsZSl7cmV0dXJuIHUzKHQuZ2V0RGF0ZSgpLGUsMil9ZnVuY3Rpb24gTzModCxlKXtyZXR1cm4gdTModC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gejModCxlKXtyZXR1cm4gdTModC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIEQzKHQsZSl7cmV0dXJuIHUzKDErejUuY291bnQoajUodCksdCksZSwzKX1mdW5jdGlvbiBCMyh0LGUpe3JldHVybiB1Myh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gSDModCxlKXtyZXR1cm4gQjModCxlKSsiMDAwIn1mdW5jdGlvbiBGMyh0LGUpe3JldHVybiB1Myh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIFYzKHQsZSl7cmV0dXJuIHUzKHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24gVTModCxlKXtyZXR1cm4gdTModC5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBqMyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gRzModCxlKXtyZXR1cm4gdTMoQjUuY291bnQoajUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIFczKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP0Y1KHQpOkY1LmNlaWwodCl9ZnVuY3Rpb24gcTModCxlKXtyZXR1cm4gdD1XMyh0KSx1MyhGNS5jb3VudChqNSh0KSx0KSsoND09PWo1KHQpLmdldERheSgpKSxlLDIpfWZ1bmN0aW9uIFkzKHQpe3JldHVybiB0LmdldERheSgpfWZ1bmN0aW9uIFgzKHQsZSl7cmV0dXJuIHUzKEg1LmNvdW50KGo1KHQpLTEsdCksZSwyKX1mdW5jdGlvbiAkMyh0LGUpe3JldHVybiB1Myh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gSzModCxlKXtyZXR1cm4gdTMoKHQ9VzModCkpLmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gWjModCxlKXtyZXR1cm4gdTModC5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIEozKHQsZSl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gdTMoKHQ9bj49NHx8MD09PW4/RjUodCk6RjUuY2VpbCh0KSkuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBRMyh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK3UzKGUvNjB8MCwiMCIsMikrdTMoZSU2MCwiMCIsMil9ZnVuY3Rpb24gdDQodCxlKXtyZXR1cm4gdTModC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBlNCh0LGUpe3JldHVybiB1Myh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBuNCh0LGUpe3JldHVybiB1Myh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gaTQodCxlKXtyZXR1cm4gdTMoMStxNS5jb3VudChRNSh0KSx0KSxlLDMpfWZ1bmN0aW9uIHI0KHQsZSl7cmV0dXJuIHUzKHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBvNCh0LGUpe3JldHVybiByNCh0LGUpKyIwMDAifWZ1bmN0aW9uIGE0KHQsZSl7cmV0dXJuIHUzKHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gczQodCxlKXtyZXR1cm4gdTModC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBsNCh0LGUpe3JldHVybiB1Myh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIGM0KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiB1NCh0LGUpe3JldHVybiB1MyhYNS5jb3VudChRNSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gaDQodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gZT49NHx8MD09PWU/SzUodCk6SzUuY2VpbCh0KX1mdW5jdGlvbiBkNCh0LGUpe3JldHVybiB0PWg0KHQpLHUzKEs1LmNvdW50KFE1KHQpLHQpKyg0PT09UTUodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gcDQodCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gZjQodCxlKXtyZXR1cm4gdTMoJDUuY291bnQoUTUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIG00KHQsZSl7cmV0dXJuIHUzKHQuZ2V0VVRDRnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBnNCh0LGUpe3JldHVybiB1MygodD1oNCh0KSkuZ2V0VVRDRnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBfNCh0LGUpe3JldHVybiB1Myh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24geTQodCxlKXt2YXIgbj10LmdldFVUQ0RheSgpO3JldHVybiB1MygodD1uPj00fHwwPT09bj9LNSh0KTpLNS5jZWlsKHQpKS5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIHY0KCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBiNCgpe3JldHVybiIlIn1mdW5jdGlvbiB4NCh0KXtyZXR1cm4rdH1mdW5jdGlvbiB3NCh0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfSEoZnVuY3Rpb24gUzQodCl7aTM9KGZ1bmN0aW9uIGUodCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxpPXQudGltZSxyPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHM9dC5tb250aHMsbD10LnNob3J0TW9udGhzLGM9ZDMociksdT1wMyhyKSxoPWQzKG8pLGQ9cDMobykscD1kMyhhKSxmPXAzKGEpLG09ZDMocyksZz1wMyhzKSxfPWQzKGwpLHk9cDMobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6UjMsZTpSMyxmOkgzLGc6SzMsRzpKMyxIOk8zLEk6ejMsajpEMyxMOkIzLG06RjMsTTpWMyxwOmZ1bmN0aW9uIE0odCl7cmV0dXJuIHJbKyh0LmdldEhvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gRSh0KXtyZXR1cm4gMSt+fih0LmdldE1vbnRoKCkvMyl9LFE6eDQsczp3NCxTOlUzLHU6ajMsVTpHMyxWOnEzLHc6WTMsVzpYMyx4Om51bGwsWDpudWxsLHk6JDMsWTpaMyxaOlEzLCIlIjpiNH0sVD17YTpmdW5jdGlvbiBDKHQpe3JldHVybiBhW3QuZ2V0VVRDRGF5KCldfSxBOmZ1bmN0aW9uIEEodCl7cmV0dXJuIG9bdC5nZXRVVENEYXkoKV19LGI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gbFt0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uIEwodCl7cmV0dXJuIHNbdC5nZXRVVENNb250aCgpXX0sYzpudWxsLGQ6dDQsZTp0NCxmOm80LGc6ZzQsRzp5NCxIOmU0LEk6bjQsajppNCxMOnI0LG06YTQsTTpzNCxwOmZ1bmN0aW9uIFAodCl7cmV0dXJuIHJbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gTih0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6eDQsczp3NCxTOmw0LHU6YzQsVTp1NCxWOmQ0LHc6cDQsVzpmNCx4Om51bGwsWDpudWxsLHk6bTQsWTpfNCxaOnY0LCIlIjpiNH0sST17YTpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1wLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1mW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZFtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBpPV8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPXlbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbiBEKHQsZSxuKXt2YXIgaT1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT1nW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24gQih0LG4saSl7cmV0dXJuIEcodCxlLG4saSl9LGQ6TTMsZTpNMyxmOkwzLGc6YjMsRzp2MyxIOlQzLEk6VDMsajpFMyxMOmszLG06UzMsTTpDMyxwOmZ1bmN0aW9uIEgodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0scTp3MyxROk4zLHM6STMsUzpBMyx1Om0zLFU6ZzMsVjpfMyx3OmYzLFc6eTMseDpmdW5jdGlvbiBGKHQsZSxpKXtyZXR1cm4gRyh0LG4sZSxpKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LGksZSxuKX0seTpiMyxZOnYzLFo6eDMsIiUiOlAzfTtmdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbyxhPVtdLHM9LTEsbD0wLGM9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczxjOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShyPWEzW2k9dC5jaGFyQXQoKytzKV0pP2k9dC5jaGFyQXQoKytzKTpyPSJlIj09PWk/IiAiOiIwIiwobz1lW2ldKSYmKGk9byhuLHIpKSxhLnB1c2goaSksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbz1uMygxOTAwLHZvaWQgMCwxKTtpZihHKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicyJpbiBvKXJldHVybiBuZXcgRGF0ZSgxZTMqby5zKygiTCJpbiBvP28uTDowKSk7aWYoZSYmISgiWiJpbiBvKSYmKG8uWj0wKSwicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLHZvaWQgMD09PW8ubSYmKG8ubT0icSJpbiBvP28ucTowKSwiViJpbiBvKXtpZihvLlY8MXx8by5WPjUzKXJldHVybiBudWxsOyJ3ImluIG98fChvLnc9MSksIloiaW4gbz8ocj0oaT1lMyhuMyhvLnksMCwxKSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj8kNS5jZWlsKGkpOiQ1KGkpLGk9cTUub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9dDMobjMoby55LDAsMSkpKS5nZXREYXkoKSxpPXI+NHx8MD09PXI/SDUuY2VpbChpKTpINShpKSxpPXo1Lm9mZnNldChpLDcqKG8uVi0xKSksby55PWkuZ2V0RnVsbFllYXIoKSxvLm09aS5nZXRNb250aCgpLG8uZD1pLmdldERhdGUoKSsoby53KzYpJTcpfWVsc2UoIlciaW4gb3x8IlUiaW4gbykmJigidyJpbiBvfHwoby53PSJ1ImluIG8/by51JTc6IlciaW4gbz8xOjApLHI9IloiaW4gbz9lMyhuMyhvLnksMCwxKSkuZ2V0VVRDRGF5KCk6dDMobjMoby55LDAsMSkpLmdldERheSgpLG8ubT0wLG8uZD0iVyJpbiBvPyhvLncrNiklNys3Km8uVy0ocis1KSU3Om8udys3Km8uVS0ocis2KSU3KTtyZXR1cm4iWiJpbiBvPyhvLkgrPW8uWi8xMDB8MCxvLk0rPW8uWiUxMDAsZTMobykpOnQzKG8pfX1mdW5jdGlvbiBHKHQsZSxuLGkpe2Zvcih2YXIgcixvLGE9MCxzPWUubGVuZ3RoLGw9bi5sZW5ndGg7YTxzOyl7aWYoaT49bClyZXR1cm4tMTtpZigzNz09PShyPWUuY2hhckNvZGVBdChhKyspKSl7aWYocj1lLmNoYXJBdChhKyspLCEobz1JW3IgaW4gYTM/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1VKG4sdiksdi5YPVUoaSx2KSx2LmM9VShlLHYpLFQueD1VKG4sVCksVC5YPVUoaSxUKSxULmM9VShlLFQpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9VSh0Kz0iIixUKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19KSh0KSxyMz1pMy5mb3JtYXQsbzM9aTMudXRjRm9ybWF0fSkoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgTTQ9MzE1MzZlNjtmdW5jdGlvbiBFNCh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gVDQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gQzQodCxlLG4saSxyLG8sYSxzLGwpe3ZhciBjPSQyKFcyLE4yKSx1PWMuaW52ZXJ0LGg9Yy5kb21haW4sZD1sKCIuJUwiKSxwPWwoIjolUyIpLGY9bCgiJUk6JU0iKSxtPWwoIiVJICVwIiksZz1sKCIlYSAlZCIpLF89bCgiJWIgJWQiKSx5PWwoIiVCIiksdj1sKCIlWSIpLGI9W1thLDEsMWUzXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLDZlNF0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSwzNmU1XSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSw4NjRlNV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsTTRdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPWgwKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj12MChuL000LGkvTTQsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heCh2MChuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChDMC5jYWxsKHQsVDQpKTpoKCkubWFwKEU0KX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2gocDUobix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFgyKGMsQzQodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBBNCh0KXtyZXR1cm4gdC5tYXRjaCgvLns2fS9nKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIjIit0fSkpfXZhciBrND1BNCgiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIiksTDQ9QTQoIjM5M2I3OTUyNTRhMzZiNmVjZjljOWVkZTYzNzkzOThjYTI1MmI1Y2Y2YmNlZGI5YzhjNmQzMWJkOWUzOWU3YmE1MmU3Y2I5NDg0M2MzOWFkNDk0YWQ2NjE2YmU3OTY5YzdiNDE3M2E1NTE5NGNlNmRiZGRlOWVkNiIpLFA0PUE0KCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDkiKSxOND1BNCgiMWY3N2I0YWVjN2U4ZmY3ZjBlZmZiYjc4MmNhMDJjOThkZjhhZDYyNzI4ZmY5ODk2OTQ2N2JkYzViMGQ1OGM1NjRiYzQ5Yzk0ZTM3N2MyZjdiNmQyN2Y3ZjdmYzdjN2M3YmNiZDIyZGJkYjhkMTdiZWNmOWVkYWU1IiksSTQ9VjIoUzIoMzAwLC41LDApLFMyKC0yNDAsLjUsMSkpLFI0PVYyKFMyKC0xMDAsLjc1LC4zNSksUzIoODAsMS41LC44KSksTzQ9VjIoUzIoMjYwLC43NSwuMzUpLFMyKDgwLDEuNSwuOCkpLHo0PVMyKCk7ZnVuY3Rpb24gRDQodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IobiplKSkpXX19dmFyIEI0PUQ0KEE0KCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksSDQ9RDQoQTQoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxGND1ENChBNCgiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLFY0PUQ0KEE0KCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSksVTQ9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGo0PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpVNCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIEc0KHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGo0Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpqNFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIFc0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09VTQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVU0P2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBxNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBZNCh0KXt2YXIgZT1HNCh0KTtyZXR1cm4oZS5sb2NhbD9xNDpXNCkoZSl9ZnVuY3Rpb24gWDQoKXt9ZnVuY3Rpb24gJDQodCl7cmV0dXJuIG51bGw9PXQ/WDQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBLNCgpe3JldHVybltdfWZ1bmN0aW9uIFo0KHQpe3JldHVybiBudWxsPT10P0s0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19dmFyIEo0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXt2YXIgUTQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2lmKCFRNC5tYXRjaGVzKXt2YXIgdDY9UTQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxRNC5tc01hdGNoZXNTZWxlY3Rvcnx8UTQubW96TWF0Y2hlc1NlbGVjdG9yfHxRNC5vTWF0Y2hlc1NlbGVjdG9yO0o0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0Ni5jYWxsKHRoaXMsdCl9fX19dmFyIGU2PUo0O2Z1bmN0aW9uIG42KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIGk2KHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIHI2KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBpNih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gbzYodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IGk2KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gYTYodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gczYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGw2KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gYzYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiB1Nih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBoNih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gZDYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gcDYodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGY2KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIG02KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gZzYodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gXzYodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxwNih0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiB5Nih0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gdjYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGI2KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIHg2KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB3Nih0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBTNih0KX1mdW5jdGlvbiBTNih0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9eDYodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBNNih0LGUpe2Zvcih2YXIgbj13Nih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIEU2KHQsZSl7Zm9yKHZhciBuPXc2KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gVDYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7TTYodGhpcyx0KX19ZnVuY3Rpb24gQzYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7RTYodGhpcyx0KX19ZnVuY3Rpb24gQTYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/TTY6RTYpKHRoaXMsdCl9fWZ1bmN0aW9uIGs2KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBMNih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFA2KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBONigpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIEk2KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIFI2KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gTzYoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gejYoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBENigpe3JldHVybiBudWxsfWZ1bmN0aW9uIEI2KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gSDYoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMSksdGhpcy5uZXh0U2libGluZyl9ZnVuY3Rpb24gRjYoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMCksdGhpcy5uZXh0U2libGluZyl9aTYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjppNixhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSxTNi5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBWNj17fSxVNj1udWxsO2Z1bmN0aW9uIGo2KHQsZSxuKXtyZXR1cm4gdD1HNih0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIEc2KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIHI9VTY7VTY9aTt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7VTY9cn19fWZ1bmN0aW9uIFc2KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIHE2KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4saT0wLHI9LTEsbz1lLmxlbmd0aDtpPG87KytpKW49ZVtpXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytyXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysrcj9lLmxlbmd0aD1yOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBZNih0LGUsbil7dmFyIGk9VjYuaGFzT3duUHJvcGVydHkodC50eXBlKT9qNjpHNjtyZXR1cm4gZnVuY3Rpb24ocixvLGEpe3ZhciBzLGw9dGhpcy5fX29uLGM9aShlLG8sYSk7aWYobClmb3IodmFyIHU9MCxoPWwubGVuZ3RoO3U8aDsrK3UpaWYoKHM9bFt1XSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9YyxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsYyxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOmMsY2FwdHVyZTpufSxsP2wucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBYNih0LGUsbil7dmFyIGk9cDYodCkscj1pLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiByP3I9bmV3IHIoZSxuKToocj1pLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KHIuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksci5kZXRhaWw9bi5kZXRhaWwpOnIuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQocil9ZnVuY3Rpb24gJDYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWDYodGhpcyx0LGUpfX1mdW5jdGlvbiBLNih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBYNih0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChWNj17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIFo2PVtudWxsXTtmdW5jdGlvbiBKNih0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBRNigpe3JldHVybiBuZXcgSjYoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxaNil9ZnVuY3Rpb24gdDkodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBKNihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEo2KFtbdF1dLFo2KX1KNi5wcm90b3R5cGU9UTYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpKNixzZWxlY3Q6ZnVuY3Rpb24gZTkodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PSQ0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgSjYoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIG45KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1aNCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgSjYoaSxyKX0sZmlsdGVyOmZ1bmN0aW9uIGk5KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1lNih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgSjYoaSx0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiByOSh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9vNjpyNixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IEo2KHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBvOSgpe3JldHVybiBuZXcgSjYodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAobjYpLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGE5KCl7cmV0dXJuIG5ldyBKNih0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKG42KSx0aGlzLl9wYXJlbnRzKX0sbWVyZ2U6ZnVuY3Rpb24gczkodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgSjYobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gbDkoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiZhIT09aS5uZXh0U2libGluZyYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gYzkodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1hNik7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgSjYocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIHU5KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBoOSgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gZDkoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIHA5KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBmOSgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBtOSh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gZzkodCxlKXt2YXIgbj1HNCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/bDY6czY6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9kNjpoNjpuLmxvY2FsP3U2OmM2KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gXzkodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP2Y2OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2c2Om02KSh0LGUsbnVsbD09bj8iIjpuKSk6XzYodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIHk5KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/eTY6ImZ1bmN0aW9uIj09dHlwZW9mIGU/YjY6djYpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIHY5KHQsZSl7dmFyIG49eDYodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9dzYodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/QTY6ZT9UNjpDNikobixlKSl9LHRleHQ6ZnVuY3Rpb24gYjkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/azY6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1A2Okw2KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24geDkodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TjY6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1I2Okk2KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiB3OSgpe3JldHVybiB0aGlzLmVhY2goTzYpfSxsb3dlcjpmdW5jdGlvbiBTOSgpe3JldHVybiB0aGlzLmVhY2goejYpfSxhcHBlbmQ6ZnVuY3Rpb24gTTkodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpZNCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gRTkodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Olk0KHQpLGk9bnVsbD09ZT9ENjoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOiQ0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gVDkoKXtyZXR1cm4gdGhpcy5lYWNoKEI2KX0sY2xvbmU6ZnVuY3Rpb24gQzkodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/RjY6SDYpfSxkYXR1bTpmdW5jdGlvbiBBOSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIGs5KHQsZSxuKXt2YXIgaSxyLG89VzYodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/WTY6cTYsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBMOSh0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP0s2OiQ2KSh0LGUpKX19O3ZhciBQOT0wO2Z1bmN0aW9uIE45KCl7cmV0dXJuIG5ldyBJOX1mdW5jdGlvbiBJOSgpe3RoaXMuXz0iQCIrKCsrUDkpLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBSOSgpe2Zvcih2YXIgdCxlPVU2O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIE85KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19STkucHJvdG90eXBlPU45LnByb3RvdHlwZT17Y29uc3RydWN0b3I6STksZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl87IShlIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0W3RoaXMuX109ZX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIHo5PU1hdGguUEksRDk9Mip6OSxCOT0xZS02LEg5PUQ5LUI5O2Z1bmN0aW9uIEY5KCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gVjkoKXtyZXR1cm4gbmV3IEY5fWZ1bmN0aW9uIFU5KHQpe3JldHVybiBmdW5jdGlvbiBlKCl7cmV0dXJuIHR9fUY5LnByb3RvdHlwZT1WOS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkY5LG1vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kxPStlKX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJRIisgK3QrIiwiKyArZSsiLCIrKHRoaXMuX3gxPStuKSsiLCIrKHRoaXMuX3kxPStpKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fKz0iQyIrICt0KyIsIisgK2UrIiwiKyArbisiLCIrICtpKyIsIisodGhpcy5feDE9K3IpKyIsIisodGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX3gxLGE9dGhpcy5feTEscz0obj0rbiktKHQ9K3QpLGw9KGk9K2kpLShlPStlKSxjPW8tdCx1PWEtZSxoPWMqYyt1KnU7aWYoKHI9K3IpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrcik7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2UgaWYoaD5COSlpZihNYXRoLmFicyh1KnMtbCpjKT5COSYmcil7dmFyIGQ9bi1vLHA9aS1hLGY9cypzK2wqbCxtPWQqZCtwKnAsZz1NYXRoLnNxcnQoZiksXz1NYXRoLnNxcnQoaCkseT1yKk1hdGgudGFuKCh6OS1NYXRoLmFjb3MoKGYraC1tKS8oMipnKl8pKSkvMiksdj15L18sYj15L2c7TWF0aC5hYnModi0xKT5COSYmKHRoaXMuXys9IkwiKyh0K3YqYykrIiwiKyhlK3YqdSkpLHRoaXMuXys9IkEiK3IrIiwiK3IrIiwwLDAsIisgKyh1KmQ+YypwKSsiLCIrKHRoaXMuX3gxPXQrYipzKSsiLCIrKHRoaXMuX3kxPWUrYipsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpfSxhcmM6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3Q9K3QsZT0rZSxvPSEhbzt2YXIgYT0obj0rbikqTWF0aC5jb3MoaSkscz1uKk1hdGguc2luKGkpLGw9dCthLGM9ZStzLHU9MV5vLGg9bz9pLXI6ci1pO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+Qjl8fE1hdGguYWJzKHRoaXMuX3kxLWMpPkI5KSYmKHRoaXMuXys9IkwiK2wrIiwiK2MpLG4mJihoPDAmJihoPWglRDkrRDkpLGg+SDk/dGhpcy5fKz0iQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0LWEpKyIsIisoZS1zKSsiQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmg+QjkmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKGg+PXo5KSsiLCIrdSsiLCIrKHRoaXMuX3gxPXQrbipNYXRoLmNvcyhyKSkrIiwiKyh0aGlzLl95MT1lK24qTWF0aC5zaW4ocikpKSl9LHJlY3Q6ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKSsiaCIrICtuKyJ2IisgK2krImgiKy1uKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIGo5PU1hdGguYWJzLEc5PU1hdGguYXRhbjIsVzk9TWF0aC5jb3MscTk9TWF0aC5tYXgsWTk9TWF0aC5taW4sWDk9TWF0aC5zaW4sJDk9TWF0aC5zcXJ0LEs5PTFlLTEyLFo5PU1hdGguUEksSjk9WjkvMixROT0yKlo5O2Z1bmN0aW9uIHQ4KHQpe3JldHVybiB0PjE/MDp0PC0xP1o5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBlOCh0KXtyZXR1cm4gdD49MT9KOTp0PD0tMT8tSjk6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIG44KHQpe3JldHVybiB0LmlubmVyUmFkaXVzfWZ1bmN0aW9uIGk4KHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIHI4KHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gbzgodCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gYTgodCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gczgodCxlLG4saSxyLG8sYSxzKXt2YXIgbD1uLXQsYz1pLWUsdT1hLXIsaD1zLW8sZD0odSooZS1vKS1oKih0LXIpKS8oaCpsLXUqYyk7cmV0dXJuW3QrZCpsLGUrZCpjXX1mdW5jdGlvbiBsOCh0LGUsbixpLHIsbyxhKXt2YXIgcz10LW4sbD1lLWksYz0oYT9vOi1vKS8kOShzKnMrbCpsKSx1PWMqbCxoPS1jKnMsZD10K3UscD1lK2gsZj1uK3UsbT1pK2gsZz0oZCtmKS8yLF89KHArbSkvMix5PWYtZCx2PW0tcCxiPXkqeSt2KnYseD1yLW8sdz1kKm0tZipwLFM9KHY8MD8tMToxKSokOShxOSgwLHgqeCpiLXcqdykpLE09KHcqdi15KlMpL2IsRT0oLXcqeS12KlMpL2IsVD0odyp2K3kqUykvYixDPSgtdyp5K3YqUykvYixBPU0tZyxrPUUtXyxMPVQtZyxQPUMtXztyZXR1cm4gQSpBK2sqaz5MKkwrUCpQJiYoTT1ULEU9Qykse2N4Ok0sY3k6RSx4MDE6LXUseTAxOi1oLHgxMTpNKihyL3gtMSkseTExOkUqKHIveC0xKX19ZnVuY3Rpb24gYzgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHU4KHQpe3JldHVybiBuZXcgYzgodCl9ZnVuY3Rpb24gaDgodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gZDgodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gcDgoKXt2YXIgdD1oOCxlPWQ4LG49VTkoITApLGk9bnVsbCxyPXU4LG89bnVsbDtmdW5jdGlvbiBhKGEpe3ZhciBzLGwsYyx1PWEubGVuZ3RoLGg9ITE7Zm9yKG51bGw9PWkmJihvPXIoYz1WOSgpKSkscz0wO3M8PXU7KytzKSEoczx1JiZuKGw9YVtzXSxzLGEpKT09PWgmJigoaD0haCk/by5saW5lU3RhcnQoKTpvLmxpbmVFbmQoKSksaCYmby5wb2ludCgrdChsLHMsYSksK2UobCxzLGEpKTtpZihjKXJldHVybiBvPW51bGwsYysiInx8bnVsbH1yZXR1cm4gYS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6VTkoK2UpLGEpOnR9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxhKTplfSxhLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSghIXQpLGEpOm59LGEuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxudWxsIT1pJiYobz1yKGkpKSxhKTpyfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1vPW51bGw6bz1yKGk9dCksYSk6aX0sYX1mdW5jdGlvbiBmOCgpe3ZhciB0PWg4LGU9bnVsbCxuPVU5KDApLGk9ZDgscj1VOSghMCksbz1udWxsLGE9dTgscz1udWxsO2Z1bmN0aW9uIGwobCl7dmFyIGMsdSxoLGQscCxmPWwubGVuZ3RoLG09ITEsZz1uZXcgQXJyYXkoZiksXz1uZXcgQXJyYXkoZik7Zm9yKG51bGw9PW8mJihzPWEocD1WOSgpKSksYz0wO2M8PWY7KytjKXtpZighKGM8ZiYmcihkPWxbY10sYyxsKSk9PT1tKWlmKG09IW0pdT1jLHMuYXJlYVN0YXJ0KCkscy5saW5lU3RhcnQoKTtlbHNle2ZvcihzLmxpbmVFbmQoKSxzLmxpbmVTdGFydCgpLGg9Yy0xO2g+PXU7LS1oKXMucG9pbnQoZ1toXSxfW2hdKTtzLmxpbmVFbmQoKSxzLmFyZWFFbmQoKX1tJiYoZ1tjXT0rdChkLGMsbCksX1tjXT0rbihkLGMsbCkscy5wb2ludChlPytlKGQsYyxsKTpnW2NdLGk/K2koZCxjLGwpOl9bY10pKX1pZihwKXJldHVybiBzPW51bGwscCsiInx8bnVsbH1mdW5jdGlvbiBjKCl7cmV0dXJuIHA4KCkuZGVmaW5lZChyKS5jdXJ2ZShhKS5jb250ZXh0KG8pfXJldHVybiBsLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpVOSgrbiksZT1udWxsLGwpOnR9LGwueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpVOSgrZSksbCk6dH0sbC54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSgrdCksbCk6ZX0sbC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGk9bnVsbCxsKTpufSxsLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGwpOm59LGwueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGwpOml9LGwubGluZVgwPWwubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIGMoKS54KHQpLnkobil9LGwubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIGMoKS54KHQpLnkoaSl9LGwubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIGMoKS54KGUpLnkobil9LGwuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCEhdCksbCk6cn0sbC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LG51bGwhPW8mJihzPWEobykpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9vPXM9bnVsbDpzPWEobz10KSxsKTpvfSxsfWZ1bmN0aW9uIG04KHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIGc4KHQpe3JldHVybiB0fWM4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19O3ZhciBfOD12OCh1OCk7ZnVuY3Rpb24geTgodCl7dGhpcy5fY3VydmU9dH1mdW5jdGlvbiB2OCh0KXtmdW5jdGlvbiBlKGUpe3JldHVybiBuZXcgeTgodChlKSl9cmV0dXJuIGUuX2N1cnZlPXQsZX1mdW5jdGlvbiBiOCh0KXt2YXIgZT10LmN1cnZlO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZSh2OCh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiB4OCgpe3JldHVybiBiOChwOCgpLmN1cnZlKF84KSl9ZnVuY3Rpb24gdzgoKXt2YXIgdD1mOCgpLmN1cnZlKF84KSxlPXQuY3VydmUsbj10LmxpbmVYMCxpPXQubGluZVgxLHI9dC5saW5lWTAsbz10LmxpbmVZMTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnN0YXJ0QW5nbGU9dC54MCxkZWxldGUgdC54MCx0LmVuZEFuZ2xlPXQueDEsZGVsZXRlIHQueDEsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5pbm5lclJhZGl1cz10LnkwLGRlbGV0ZSB0LnkwLHQub3V0ZXJSYWRpdXM9dC55MSxkZWxldGUgdC55MSx0LmxpbmVTdGFydEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIGI4KG4oKSl9LGRlbGV0ZSB0LmxpbmVYMCx0LmxpbmVFbmRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBiOChpKCkpfSxkZWxldGUgdC5saW5lWDEsdC5saW5lSW5uZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gYjgocigpKX0sZGVsZXRlIHQubGluZVkwLHQubGluZU91dGVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIGI4KG8oKSl9LGRlbGV0ZSB0LmxpbmVZMSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UodjgodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gUzgodCxlKXtyZXR1cm5bKGU9K2UpKk1hdGguY29zKHQtPU1hdGguUEkvMiksZSpNYXRoLnNpbih0KV19eTgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VydmUucG9pbnQoZSpNYXRoLnNpbih0KSxlKi1NYXRoLmNvcyh0KSl9fTt2YXIgTTg9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEU4KHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBUOCh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gQzgodCl7dmFyIGU9RTgsbj1UOCxpPWg4LHI9ZDgsbz1udWxsO2Z1bmN0aW9uIGEoKXt2YXIgYSxzPU04LmNhbGwoYXJndW1lbnRzKSxsPWUuYXBwbHkodGhpcyxzKSxjPW4uYXBwbHkodGhpcyxzKTtpZihvfHwobz1hPVY5KCkpLHQobywraS5hcHBseSh0aGlzLChzWzBdPWwscykpLCtyLmFwcGx5KHRoaXMscyksK2kuYXBwbHkodGhpcywoc1swXT1jLHMpKSwrci5hcHBseSh0aGlzLHMpKSxhKXJldHVybiBvPW51bGwsYSsiInx8bnVsbH1yZXR1cm4gYS5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLnRhcmdldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGEpOm59LGEueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxhKTppfSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSgrdCksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PXQ/bnVsbDp0LGEpOm99LGF9ZnVuY3Rpb24gQTgodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlPShlK2kpLzIsbixlLHIsaSxyKX1mdW5jdGlvbiBrOCh0LGUsbixpLHIpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGUsbj0obityKS8yLGksbixpLHIpfWZ1bmN0aW9uIEw4KHQsZSxuLGkscil7dmFyIG89UzgoZSxuKSxhPVM4KGUsbj0obityKS8yKSxzPVM4KGksbiksbD1TOChpLHIpO3QubW92ZVRvKG9bMF0sb1sxXSksdC5iZXppZXJDdXJ2ZVRvKGFbMF0sYVsxXSxzWzBdLHNbMV0sbFswXSxsWzFdKX12YXIgUDg9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9aOSk7dC5tb3ZlVG8obiwwKSx0LmFyYygwLDAsbiwwLFE5KX19LE44PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvNSkvMjt0Lm1vdmVUbygtMypuLC1uKSx0LmxpbmVUbygtbiwtbiksdC5saW5lVG8oLW4sLTMqbiksdC5saW5lVG8obiwtMypuKSx0LmxpbmVUbyhuLC1uKSx0LmxpbmVUbygzKm4sLW4pLHQubGluZVRvKDMqbixuKSx0LmxpbmVUbyhuLG4pLHQubGluZVRvKG4sMypuKSx0LmxpbmVUbygtbiwzKm4pLHQubGluZVRvKC1uLG4pLHQubGluZVRvKC0zKm4sbiksdC5jbG9zZVBhdGgoKX19LEk4PU1hdGguc3FydCgxLzMpLFI4PTIqSTgsTzg9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9SOCksaT1uKkk4O3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGksMCksdC5saW5lVG8oMCxuKSx0LmxpbmVUbygtaSwwKSx0LmNsb3NlUGF0aCgpfX0sejg9TWF0aC5zaW4oWjkvMTApL01hdGguc2luKDcqWjkvMTApLEQ4PU1hdGguc2luKFE5LzEwKSp6OCxCOD0tTWF0aC5jb3MoUTkvMTApKno4LEg4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KC44OTA4MTMwOTE1MjkyODUyKmUpLGk9RDgqbixyPUI4Km47dC5tb3ZlVG8oMCwtbiksdC5saW5lVG8oaSxyKTtmb3IodmFyIG89MTtvPDU7KytvKXt2YXIgYT1ROSpvLzUscz1NYXRoLmNvcyhhKSxsPU1hdGguc2luKGEpO3QubGluZVRvKGwqbiwtcypuKSx0LmxpbmVUbyhzKmktbCpyLGwqaStzKnIpfXQuY2xvc2VQYXRoKCl9fSxGOD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlKSxpPS1uLzI7dC5yZWN0KGksaSxuLG4pfX0sVjg9TWF0aC5zcXJ0KDMpLFU4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49LU1hdGguc3FydChlLygzKlY4KSk7dC5tb3ZlVG8oMCwyKm4pLHQubGluZVRvKC1WOCpuLC1uKSx0LmxpbmVUbyhWOCpuLC1uKSx0LmNsb3NlUGF0aCgpfX0sajg9LS41LEc4PU1hdGguc3FydCgzKS8yLFc4PTEvTWF0aC5zcXJ0KDEyKSxxOD0zKihXOC8yKzEpLFk4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvcTgpLGk9bi8yLHI9bipXOCxvPWksYT1uKlc4K24scz0tbyxsPWE7dC5tb3ZlVG8oaSxyKSx0LmxpbmVUbyhvLGEpLHQubGluZVRvKHMsbCksdC5saW5lVG8oajgqaS1HOCpyLEc4KmkrajgqciksdC5saW5lVG8oajgqby1HOCphLEc4Km8rajgqYSksdC5saW5lVG8oajgqcy1HOCpsLEc4KnMrajgqbCksdC5saW5lVG8oajgqaStHOCpyLGo4KnItRzgqaSksdC5saW5lVG8oajgqbytHOCphLGo4KmEtRzgqbyksdC5saW5lVG8oajgqcytHOCpsLGo4KmwtRzgqcyksdC5jbG9zZVBhdGgoKX19LFg4PVtQOCxOOCxPOCxGOCxIOCxVOCxZOF07ZnVuY3Rpb24gJDgoKXt9ZnVuY3Rpb24gSzgodCxlLG4pe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbygoMip0Ll94MCt0Ll94MSkvMywoMip0Ll95MCt0Ll95MSkvMywodC5feDArMip0Ll94MSkvMywodC5feTArMip0Ll95MSkvMywodC5feDArNCp0Ll94MStlKS82LCh0Ll95MCs0KnQuX3kxK24pLzYpfWZ1bmN0aW9uIFo4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBKOCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gUTgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHQ3KHQsZSl7dGhpcy5fYmFzaXM9bmV3IFo4KHQpLHRoaXMuX2JldGE9ZX1aOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAzOks4KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2NvbnRleHQubGluZVRvKCg1KnRoaXMuX3gwK3RoaXMuX3gxKS82LCg1KnRoaXMuX3kwK3RoaXMuX3kxKS82KTtkZWZhdWx0Oks4KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxKOC5wcm90b3R5cGU9e2FyZWFTdGFydDokOCxhcmVhRW5kOiQ4LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gyPXQsdGhpcy5feTI9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDQ9dCx0aGlzLl95ND1lLHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsKHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNik7YnJlYWs7ZGVmYXVsdDpLOCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sUTgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7dmFyIG49KHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNixpPSh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzY7dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhuLGkpOnRoaXMuX2NvbnRleHQubW92ZVRvKG4saSk7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpLOCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sdDcucHJvdG90eXBlPXtsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W10sdGhpcy5fYmFzaXMubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoLTE7aWYobj4wKWZvcih2YXIgaSxyPXRbMF0sbz1lWzBdLGE9dFtuXS1yLHM9ZVtuXS1vLGw9LTE7KytsPD1uOyl0aGlzLl9iYXNpcy5wb2ludCh0aGlzLl9iZXRhKnRbbF0rKDEtdGhpcy5fYmV0YSkqKHIrKGk9bC9uKSphKSx0aGlzLl9iZXRhKmVbbF0rKDEtdGhpcy5fYmV0YSkqKG8raSpzKSk7dGhpcy5feD10aGlzLl95PW51bGwsdGhpcy5fYmFzaXMubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19O3ZhciBlNz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxPT09ZT9uZXcgWjgodCk6bmV3IHQ3KHQsZSl9cmV0dXJuIG4uYmV0YT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguODUpO2Z1bmN0aW9uIG43KHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1uKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gaTcodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fWk3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpuNyh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95MT1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6bjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciByNz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgaTcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIG83KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1vNy5wcm90b3R5cGU9e2FyZWFTdGFydDokOCxhcmVhRW5kOiQ4LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6bjcodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBhNz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgbzcodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIHM3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1zNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpuNyh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGw3PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBzNyh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gYzcodCxlLG4pe3ZhciBpPXQuX3gxLHI9dC5feTEsbz10Ll94MixhPXQuX3kyO2lmKHQuX2wwMV9hPks5KXt2YXIgcz0yKnQuX2wwMV8yYSszKnQuX2wwMV9hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAxX2EqKHQuX2wwMV9hK3QuX2wxMl9hKTtpPShpKnMtdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQuX2wwMV8yYSkvbCxyPShyKnMtdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkvbH1pZih0Ll9sMjNfYT5LOSl7dmFyIGM9Mip0Ll9sMjNfMmErMyp0Ll9sMjNfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsdT0zKnQuX2wyM19hKih0Ll9sMjNfYSt0Ll9sMTJfYSk7bz0obypjK3QuX3gxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvdSxhPShhKmMrdC5feTEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS91fXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpLHIsbyxhLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiB1Nyh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfXU3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6YzcodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgaDc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgdTcodCxlKTpuZXcgaTcodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gZDcodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1kNy5wcm90b3R5cGU9e2FyZWFTdGFydDokOCxhcmVhRW5kOiQ4LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OmM3KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIHA3PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IGQ3KHQsZSk6bmV3IG83KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGY3KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9ZjcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OmM3KHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIG03PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IGY3KHQsZSk6bmV3IHM3KHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIGc3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBfNyh0KXtyZXR1cm4gdDwwPy0xOjF9ZnVuY3Rpb24geTcodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4oXzcobykrXzcoYSkpKk1hdGgubWluKE1hdGguYWJzKG8pLE1hdGguYWJzKGEpLC41Kk1hdGguYWJzKHMpKXx8MH1mdW5jdGlvbiB2Nyh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24gYjcodCxlLG4pe3ZhciBpPXQuX3gwLHI9dC5feDEsbz10Ll95MSxhPShyLWkpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGkrYSx0Ll95MCthKmUsci1hLG8tYSpuLHIsbyl9ZnVuY3Rpb24geDcodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHc3KHQpe3RoaXMuX2NvbnRleHQ9bmV3IFM3KHQpfWZ1bmN0aW9uIFM3KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBNNyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gRTcodCl7dmFyIGUsbixpPXQubGVuZ3RoLTEscj1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSksYT1uZXcgQXJyYXkoaSk7Zm9yKHJbMF09MCxvWzBdPTIsYVswXT10WzBdKzIqdFsxXSxlPTE7ZTxpLTE7KytlKXJbZV09MSxvW2VdPTQsYVtlXT00KnRbZV0rMip0W2UrMV07Zm9yKHJbaS0xXT0yLG9baS0xXT03LGFbaS0xXT04KnRbaS0xXSt0W2ldLGU9MTtlPGk7KytlKW9bZV0tPW49cltlXS9vW2UtMV0sYVtlXS09biphW2UtMV07Zm9yKHJbaS0xXT1hW2ktMV0vb1tpLTFdLGU9aS0yO2U+PTA7LS1lKXJbZV09KGFbZV0tcltlKzFdKS9vW2VdO2ZvcihvW2ktMV09KHRbaV0rcltpLTFdKS8yLGU9MDtlPGktMTsrK2Upb1tlXT0yKnRbZSsxXS1yW2UrMV07cmV0dXJuW3Isb119ZnVuY3Rpb24gVDcodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fdD1lfWZ1bmN0aW9uIEM3KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBBNyh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7LS1lPj0wOyluW2VdPWU7cmV0dXJuIG59ZnVuY3Rpb24gazcodCxlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBMNyh0KXt2YXIgZT10Lm1hcChQNyk7cmV0dXJuIEE3KHQpLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF0tZVtuXX0pKX1mdW5jdGlvbiBQNyh0KXtmb3IodmFyIGUsbj0wLGk9LTEscj10Lmxlbmd0aDsrK2k8cjspKGU9K3RbaV1bMV0pJiYobis9ZSk7cmV0dXJuIG59ZzcucHJvdG90eXBlPXthcmVhU3RhcnQ6JDgsYXJlYUVuZDokOCxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dD0rdCxlPStlLHRoaXMuX3BvaW50P3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6KHRoaXMuX3BvaW50PTEsdGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSl9fSx4Ny5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT10aGlzLl90MD1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKTticmVhaztjYXNlIDM6YjcodGhpcyx0aGlzLl90MCx2Nyh0aGlzLHRoaXMuX3QwKSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3ZhciBuPU5hTjtpZihlPStlLCh0PSt0KSE9PXRoaXMuX3gxfHxlIT09dGhpcy5feTEpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsYjcodGhpcyx2Nyh0aGlzLG49eTcodGhpcyx0LGUpKSxuKTticmVhaztkZWZhdWx0OmI3KHRoaXMsdGhpcy5fdDAsbj15Nyh0aGlzLHQsZSkpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZSx0aGlzLl90MD1ufX19LCh3Ny5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4Ny5wcm90b3R5cGUpKS5wb2ludD1mdW5jdGlvbih0LGUpe3g3LnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsZSx0KX0sUzcucHJvdG90eXBlPXttb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oZSx0LGksbixvLHIpfX0sTTcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxlPXRoaXMuX3ksbj10Lmxlbmd0aDtpZihuKWlmKHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odFswXSxlWzBdKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0WzBdLGVbMF0pLDI9PT1uKXRoaXMuX2NvbnRleHQubGluZVRvKHRbMV0sZVsxXSk7ZWxzZSBmb3IodmFyIGk9RTcodCkscj1FNyhlKSxvPTAsYT0xO2E8bjsrK28sKythKXRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpWzBdW29dLHJbMF1bb10saVsxXVtvXSxyWzFdW29dLHRbYV0sZVthXSk7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09bikmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUsdGhpcy5feD10aGlzLl95PW51bGx9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX0sVDcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD10aGlzLl95PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MDx0aGlzLl90JiZ0aGlzLl90PDEmJjI9PT10aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCx0aGlzLl95KSwodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT49MCYmKHRoaXMuX3Q9MS10aGlzLl90LHRoaXMuX2xpbmU9MS10aGlzLl9saW5lKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OmlmKHRoaXMuX3Q8PTApdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feCxlKSx0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpO2Vsc2V7dmFyIG49dGhpcy5feCooMS10aGlzLl90KSt0KnRoaXMuX3Q7dGhpcy5fY29udGV4dC5saW5lVG8obix0aGlzLl95KSx0aGlzLl9jb250ZXh0LmxpbmVUbyhuLGUpfX10aGlzLl94PXQsdGhpcy5feT1lfX07dmFyIE43PW5ldyBEYXRlLEk3PW5ldyBEYXRlO2Z1bmN0aW9uIFI3KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9cixyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBSNygoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBONy5zZXRUaW1lKCtlKSxJNy5zZXRUaW1lKCtpKSx0KE43KSx0KEk3KSxNYXRoLmZsb29yKG4oTjcsSTcpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIgTzc9UjcoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pKTtPNy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP1I3KChmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL3QpKnQpfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRUaW1lKCtlK24qdCl9KSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4obi1lKS90fSkpOk83Om51bGx9O3ZhciB6Nz1PNy5yYW5nZSxENz0xZTMsQjc9NmU0LEg3PTM2ZTUsRjc9ODY0ZTUsVjc9NjA0OGU1LFU3PVI3KChmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L0Q3KSpENyl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpENyl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9EN30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksajc9VTcucmFuZ2UsRzc9UjcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvQjcpKkI3KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkI3KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0I3fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSxXNz1HNy5yYW5nZSxxNz1SNygoZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpKkI3JUg3O2U8MCYmKGUrPUg3KSx0LnNldFRpbWUoTWF0aC5mbG9vcigoK3QtZSkvSDcpKkg3K2UpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqSDcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvSDd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxZNz1xNy5yYW5nZSxYNz1SNygoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKkI3KS9GN30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKSwkNz1YNy5yYW5nZTtmdW5jdGlvbiBLNyh0KXtyZXR1cm4gUjcoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKkI3KS9WN30pKX12YXIgWjc9SzcoMCksSjc9SzcoMSksUTc9SzcoMiksdHR0PUs3KDMpLGV0dD1LNyg0KSxudHQ9SzcoNSksaXR0PUs3KDYpLHJ0dD1aNy5yYW5nZSxvdHQ9SjcucmFuZ2UsYXR0PVE3LnJhbmdlLHN0dD10dHQucmFuZ2UsbHR0PWV0dC5yYW5nZSxjdHQ9bnR0LnJhbmdlLHV0dD1pdHQucmFuZ2UsaHR0PVI3KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksZHR0PWh0dC5yYW5nZSxwdHQ9UjcoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO3B0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP1I3KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgZnR0PXB0dC5yYW5nZSxtdHQ9UjcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqQjcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvQjd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLGd0dD1tdHQucmFuZ2UsX3R0PVI3KChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqSDcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvSDd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSx5dHQ9X3R0LnJhbmdlLHZ0dD1SNygoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL0Y3fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpLGJ0dD12dHQucmFuZ2U7ZnVuY3Rpb24geHR0KHQpe3JldHVybiBSNygoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvVjd9KSl9dmFyIHd0dD14dHQoMCksU3R0PXh0dCgxKSxNdHQ9eHR0KDIpLEV0dD14dHQoMyksVHR0PXh0dCg0KSxDdHQ9eHR0KDUpLEF0dD14dHQoNiksa3R0PXd0dC5yYW5nZSxMdHQ9U3R0LnJhbmdlLFB0dD1NdHQucmFuZ2UsTnR0PUV0dC5yYW5nZSxJdHQ9VHR0LnJhbmdlLFJ0dD1DdHQucmFuZ2UsT3R0PUF0dC5yYW5nZSx6dHQ9UjcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxEdHQ9enR0LnJhbmdlLEJ0dD1SNygoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7QnR0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/UjcoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBIdHQ9QnR0LnJhbmdlLEZ0dD1uZXcgRGF0ZSxWdHQ9bmV3IERhdGU7ZnVuY3Rpb24gVXR0KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIFV0dCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsaSl7aWYodD49dClpZihpPDApZm9yKDsrK2k8PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLWk+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoci5jb3VudD1mdW5jdGlvbihlLGkpe3JldHVybiBGdHQuc2V0VGltZSgrZSksVnR0LnNldFRpbWUoK2kpLHQoRnR0KSx0KFZ0dCksTWF0aC5mbG9vcihuKEZ0dCxWdHQpKX0sci5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP3IuZmlsdGVyKGk/ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIHIuY291bnQoMCxlKSV0PT0wfSk6cjpudWxsfSkscn12YXIganR0PTg2NGU1LEd0dD02MDQ4ZTUsV3R0PVV0dCgoZnVuY3Rpb24odCl7dC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtNmU0KihlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvanR0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpO2Z1bmN0aW9uIHF0dCh0KXtyZXR1cm4gVXR0KChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL0d0dH0pKX12YXIgWXR0PXF0dCgwKSxYdHQ9cXR0KDEpO3F0dCgyKSxxdHQoMyk7dmFyICR0dD1xdHQoNCk7cXR0KDUpLHF0dCg2KTt2YXIgS3R0PVV0dCgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7S3R0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/VXR0KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgWnR0PUt0dCxKdHQ9VXR0KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvanR0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIFF0dCh0KXtyZXR1cm4gVXR0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9HdHR9KSl9dmFyIHRldD1RdHQoMCksZWV0PVF0dCgxKTtRdHQoMiksUXR0KDMpO3ZhciBuZXQ9UXR0KDQpO1F0dCg1KSxRdHQoNik7dmFyIGlldD1VdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO2lldC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP1V0dCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIHJldD1pZXQ7ZnVuY3Rpb24gb2V0KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBhZXQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gc2V0KHQpe3JldHVybnt5OnQsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIGNldCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz14ZXQociksdT13ZXQociksaD14ZXQobyksZD13ZXQobykscD14ZXQoYSksZj13ZXQoYSksbT14ZXQocyksZz13ZXQocyksXz14ZXQobCkseT13ZXQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6amV0LGU6amV0LGY6WGV0LEg6R2V0LEk6V2V0LGo6cWV0LEw6WWV0LG06JGV0LE06S2V0LHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUTpNbnQsczpFbnQsUzpaZXQsdTpKZXQsVTpRZXQsVjp0bnQsdzplbnQsVzpubnQseDpudWxsLFg6bnVsbCx5OmludCxZOnJudCxaOm9udCwiJSI6U250fSxFPXthOmZ1bmN0aW9uIFQodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQyh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBBKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDphbnQsZTphbnQsZjpobnQsSDpzbnQsSTpsbnQsajpjbnQsTDp1bnQsbTpkbnQsTTpwbnQscDpmdW5jdGlvbiBMKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxROk1udCxzOkVudCxTOmZudCx1Om1udCxVOmdudCxWOl9udCx3OnludCxXOnZudCx4Om51bGwsWDpudWxsLHk6Ym50LFk6eG50LFo6d250LCIlIjpTbnR9LFA9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIEkodCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBSKHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIHoodCxuLGkpe3JldHVybiBVKHQsZSxuLGkpfSxkOklldCxlOklldCxmOkhldCxIOk9ldCxJOk9ldCxqOlJldCxMOkJldCxtOk5ldCxNOnpldCxwOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sUTpWZXQsczpVZXQsUzpEZXQsdTpFZXQsVTpUZXQsVjpDZXQsdzpNZXQsVzpBZXQseDpmdW5jdGlvbiBCKHQsZSxpKXtyZXR1cm4gVSh0LG4sZSxpKX0sWDpmdW5jdGlvbiBIKHQsZSxuKXtyZXR1cm4gVSh0LGksZSxuKX0seTpMZXQsWTprZXQsWjpQZXQsIiUiOkZldH07ZnVuY3Rpb24gRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaSxyLG8sYT1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihhLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0ocj1tZXRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPXNldCgxOTAwKTtpZihVKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPWFldChzZXQoby55KSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9lZXQuY2VpbChpKTplZXQoaSksaT1KdHQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9ZShzZXQoby55KSkpLmdldERheSgpLGk9cj40fHwwPT09cj9YdHQuY2VpbChpKTpYdHQoaSksaT1XdHQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP2FldChzZXQoby55KSkuZ2V0VVRDRGF5KCk6ZShzZXQoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxhZXQobykpOmUobyl9fWZ1bmN0aW9uIFUodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPVBbciBpbiBtZXQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1GKG4sdiksdi5YPUYoaSx2KSx2LmM9RihlLHYpLEUueD1GKG4sRSksRS5YPUYoaSxFKSxFLmM9RihlLEUpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9Rih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1WKHQrPSIiLG9ldCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPUYodCs9IiIsRSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9Vih0LGFldCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fXZhciB1ZXQsaGV0LGRldCxwZXQsZmV0LG1ldD17Ii0iOiIiLF86IiAiLDA6IjAifSxnZXQ9L15ccypcZCsvLF9ldD0vXiUvLHlldD0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gdmV0KHQsZSxuKXt2YXIgaT10PDA/Ii0iOiIiLHI9KGk/LXQ6dCkrIiIsbz1yLmxlbmd0aDtyZXR1cm4gaSsobzxuP25ldyBBcnJheShuLW8rMSkuam9pbihlKStyOnIpfWZ1bmN0aW9uIGJldCh0KXtyZXR1cm4gdC5yZXBsYWNlKHlldCwiXFwkJiIpfWZ1bmN0aW9uIHhldCh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoYmV0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gd2V0KHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIE1ldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRWV0KHQsZSxuKXt2YXIgaT1nZXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQWV0KHQsZSxuKXt2YXIgaT1nZXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBrZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIExldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQZXQodCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5kPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFJldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gT2V0KHQsZSxuKXt2YXIgaT1nZXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB6ZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5NPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIERldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQmV0KHQsZSxuKXt2YXIgaT1nZXQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBIZXQodCxlLG4pe3ZhciBpPWdldC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5MPU1hdGguZmxvb3IoaVswXS8xZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEZldCh0LGUsbil7dmFyIGk9X2V0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gVmV0KHQsZSxuKXt2YXIgaT1nZXQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFVldCh0LGUsbil7dmFyIGk9Z2V0LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0xZTMqK2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gamV0KHQsZSl7cmV0dXJuIHZldCh0LmdldERhdGUoKSxlLDIpfWZ1bmN0aW9uIEdldCh0LGUpe3JldHVybiB2ZXQodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gV2V0KHQsZSl7cmV0dXJuIHZldCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gcWV0KHQsZSl7cmV0dXJuIHZldCgxK1d0dC5jb3VudChadHQodCksdCksZSwzKX1mdW5jdGlvbiBZZXQodCxlKXtyZXR1cm4gdmV0KHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBYZXQodCxlKXtyZXR1cm4gWWV0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gJGV0KHQsZSl7cmV0dXJuIHZldCh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIEtldCh0LGUpe3JldHVybiB2ZXQodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBaZXQodCxlKXtyZXR1cm4gdmV0KHQuZ2V0U2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gSmV0KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBRZXQodCxlKXtyZXR1cm4gdmV0KFl0dC5jb3VudChadHQodCksdCksZSwyKX1mdW5jdGlvbiB0bnQodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uPyR0dCh0KTokdHQuY2VpbCh0KSx2ZXQoJHR0LmNvdW50KFp0dCh0KSx0KSsoND09PVp0dCh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBlbnQodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gbm50KHQsZSl7cmV0dXJuIHZldChYdHQuY291bnQoWnR0KHQpLHQpLGUsMil9ZnVuY3Rpb24gaW50KHQsZSl7cmV0dXJuIHZldCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gcm50KHQsZSl7cmV0dXJuIHZldCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gb250KHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrdmV0KGUvNjB8MCwiMCIsMikrdmV0KGUlNjAsIjAiLDIpfWZ1bmN0aW9uIGFudCh0LGUpe3JldHVybiB2ZXQodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBzbnQodCxlKXtyZXR1cm4gdmV0KHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIGxudCh0LGUpe3JldHVybiB2ZXQodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIGNudCh0LGUpe3JldHVybiB2ZXQoMStKdHQuY291bnQocmV0KHQpLHQpLGUsMyl9ZnVuY3Rpb24gdW50KHQsZSl7cmV0dXJuIHZldCh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gaG50KHQsZSl7cmV0dXJuIHVudCh0LGUpKyIwMDAifWZ1bmN0aW9uIGRudCh0LGUpe3JldHVybiB2ZXQodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBwbnQodCxlKXtyZXR1cm4gdmV0KHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gZm50KHQsZSl7cmV0dXJuIHZldCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIG1udCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gZ250KHQsZSl7cmV0dXJuIHZldCh0ZXQuY291bnQocmV0KHQpLHQpLGUsMil9ZnVuY3Rpb24gX250KHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9uZXQodCk6bmV0LmNlaWwodCksdmV0KG5ldC5jb3VudChyZXQodCksdCkrKDQ9PT1yZXQodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24geW50KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIHZudCh0LGUpe3JldHVybiB2ZXQoZWV0LmNvdW50KHJldCh0KSx0KSxlLDIpfWZ1bmN0aW9uIGJudCh0LGUpe3JldHVybiB2ZXQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIHhudCh0LGUpe3JldHVybiB2ZXQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIHdudCgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gU250KCl7cmV0dXJuIiUifWZ1bmN0aW9uIE1udCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBFbnQodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiBUbnQodCl7cmV0dXJuIHVldD1jZXQodCksaGV0PXVldC5mb3JtYXQsZGV0PXVldC5wYXJzZSxwZXQ9dWV0LnV0Y0Zvcm1hdCxmZXQ9dWV0LnV0Y1BhcnNlLHVldH1UbnQoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgQ250LEFudCxrbnQ9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiIsTG50PURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uIFBudCh0KXtyZXR1cm4gdC50b0lTT1N0cmluZygpfTpwZXQoa250KSxObnQ9K25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9mdW5jdGlvbiBJbnQodCl7dmFyIGU9bmV3IERhdGUodCk7cmV0dXJuIGlzTmFOKGUpP251bGw6ZX06ZmV0KGtudCksUm50PTAsT250PTAsem50PTAsRG50PTAsQm50PTAsSG50PTAsRm50PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFZudD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBVbnQoKXtyZXR1cm4gQm50fHwoVm50KGpudCksQm50PUZudC5ub3coKStIbnQpfWZ1bmN0aW9uIGpudCgpe0JudD0wfWZ1bmN0aW9uIEdudCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gV250KHQsZSxuKXt2YXIgaT1uZXcgR250O3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gcW50KCl7VW50KCksKytSbnQ7Zm9yKHZhciB0LGU9Q250O2U7KSh0PUJudC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tUm50fWZ1bmN0aW9uIFludCgpe0JudD0oRG50PUZudC5ub3coKSkrSG50LFJudD1PbnQ9MDt0cnl7cW50KCl9ZmluYWxseXtSbnQ9MCwoZnVuY3Rpb24gdCgpe2Zvcih2YXIgdCxlLG49Q250LGk9MS8wO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpDbnQ9ZSk7QW50PXQsJG50KGkpfSkoKSxCbnQ9MH19ZnVuY3Rpb24gWG50KCl7dmFyIHQ9Rm50Lm5vdygpLGU9dC1EbnQ7ZT4xZTMmJihIbnQtPWUsRG50PXQpfWZ1bmN0aW9uICRudCh0KXtSbnR8fChPbnQmJihPbnQ9Y2xlYXJUaW1lb3V0KE9udCkpLHQtQm50PjI0Pyh0PDEvMCYmKE9udD1zZXRUaW1lb3V0KFludCx0LUZudC5ub3coKS1IbnQpKSx6bnQmJih6bnQ9Y2xlYXJJbnRlcnZhbCh6bnQpKSk6KHpudHx8KERudD1GbnQubm93KCksem50PXNldEludGVydmFsKFhudCwxZTMpKSxSbnQ9MSxWbnQoWW50KSkpfUdudC5wcm90b3R5cGU9V250LnByb3RvdHlwZT17Y29uc3RydWN0b3I6R250LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9VbnQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8QW50PT09dGhpc3x8KEFudD9BbnQuX25leHQ9dGhpczpDbnQ9dGhpcyxBbnQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9biwkbnQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsJG50KCkpfX07dmFyIEtudD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsWm50PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpLbnQseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBKbnQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksWm50Lmhhc093blByb3BlcnR5KGUpP3tzcGFjZTpabnRbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBRbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1LbnQmJmUuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUtudD9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gdGl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGVpdCh0KXt2YXIgZT1KbnQodCk7cmV0dXJuKGUubG9jYWw/dGl0OlFudCkoZSl9ZnVuY3Rpb24gbml0KCl7fWZ1bmN0aW9uIGlpdCh0KXtyZXR1cm4gbnVsbD09dD9uaXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiByaXQoKXtyZXR1cm5bXX1mdW5jdGlvbiBvaXQodCl7cmV0dXJuIG51bGw9PXQ/cml0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gYWl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIHNpdCh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiBsaXQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gY2l0KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBsaXQodCxvW3NdKTtmb3IoO3M8bDsrK3MpKGE9ZVtzXSkmJihyW3NdPWEpfWZ1bmN0aW9uIHVpdCh0LGUsbixpLHIsbyxhKXt2YXIgcyxsLGMsdT17fSxoPWUubGVuZ3RoLGQ9by5sZW5ndGgscD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiYocFtzXT1jPSIkIithLmNhbGwobCxsLl9fZGF0YV9fLHMsZSksYyBpbiB1P3Jbc109bDp1W2NdPWwpO2ZvcihzPTA7czxkOysrcykobD11W2M9IiQiK2EuY2FsbCh0LG9bc10scyxvKV0pPyhpW3NdPWwsbC5fX2RhdGFfXz1vW3NdLHVbY109bnVsbCk6bltzXT1uZXcgbGl0KHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gaGl0KHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGRpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gcGl0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gZml0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gbWl0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIGdpdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gX2l0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIHlpdCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gdml0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGJpdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIHhpdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09aT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpLG4pfX1mdW5jdGlvbiB3aXQodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHx5aXQodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gU2l0KHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBNaXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIEVpdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiBUaXQodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIENpdCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBBaXQodCl9ZnVuY3Rpb24gQWl0KHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1UaXQodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBraXQodCxlKXtmb3IodmFyIG49Q2l0KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5hZGQoZVtpXSl9ZnVuY3Rpb24gTGl0KHQsZSl7Zm9yKHZhciBuPUNpdCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4ucmVtb3ZlKGVbaV0pfWZ1bmN0aW9uIFBpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtraXQodGhpcyx0KX19ZnVuY3Rpb24gTml0KHQpe3JldHVybiBmdW5jdGlvbigpe0xpdCh0aGlzLHQpfX1mdW5jdGlvbiBJaXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/a2l0OkxpdCkodGhpcyx0KX19ZnVuY3Rpb24gUml0KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBPaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiB6aXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIERpdCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIEJpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBIaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBGaXQoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVml0KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gVWl0KCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gaml0KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gR2l0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBXaXQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWxpdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmxpdCxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSxBaXQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgcWl0PXt9O2Z1bmN0aW9uIFlpdCh0LGUsbil7cmV0dXJuIHQ9WGl0KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gWGl0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e319fWZ1bmN0aW9uICRpdCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBLaXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIFppdCh0LGUsbil7dmFyIGk9cWl0Lmhhc093blByb3BlcnR5KHQudHlwZSk/WWl0OlhpdDtyZXR1cm4gZnVuY3Rpb24ocixvLGEpe3ZhciBzLGw9dGhpcy5fX29uLGM9aShlLG8sYSk7aWYobClmb3IodmFyIHU9MCxoPWwubGVuZ3RoO3U8aDsrK3UpaWYoKHM9bFt1XSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9YyxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsYyxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOmMsY2FwdHVyZTpufSxsP2wucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBKaXQodCxlLG4pe3ZhciBpPXlpdCh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBRaXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSml0KHRoaXMsdCxlKX19ZnVuY3Rpb24gdHJ0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEppdCh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChxaXQ9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBlcnQ9W251bGxdO2Z1bmN0aW9uIG5ydCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBpcnQoKXtyZXR1cm4gbmV3IG5ydChbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGVydCl9bnJ0LnByb3RvdHlwZT1pcnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpucnQsc2VsZWN0OmZ1bmN0aW9uIHJydCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9aWl0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgbnJ0KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBvcnQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW9pdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgbnJ0KGkscil9LGZpbHRlcjpmdW5jdGlvbiBhcnQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWFpdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgbnJ0KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gc3J0KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP3VpdDpjaXQsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBucnQocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIGxydCgpe3JldHVybiBuZXcgbnJ0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKHNpdCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gY3J0KCl7cmV0dXJuIG5ldyBucnQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChzaXQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIHVydCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gaHJ0KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IG5ydChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBkcnQoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHBydCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWhpdCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgbnJ0KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBmcnQoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIG1ydCgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gZ3J0KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBfcnQoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHlydCgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiB2cnQodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGJydCh0LGUpe3ZhciBuPUpudCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/cGl0OmRpdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP19pdDpnaXQ6bi5sb2NhbD9taXQ6Zml0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24geHJ0KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT92aXQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/eGl0OmJpdCkodCxlLG51bGw9PW4/IiI6bikpOndpdCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gd3J0KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/U2l0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP0VpdDpNaXQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIFNydCh0LGUpe3ZhciBuPVRpdCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1DaXQodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/SWl0OmU/UGl0Ok5pdCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gTXJ0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P1JpdDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/eml0Ok9pdCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIEVydCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9EaXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0hpdDpCaXQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIFRydCgpe3JldHVybiB0aGlzLmVhY2goRml0KX0sbG93ZXI6ZnVuY3Rpb24gQ3J0KCl7cmV0dXJuIHRoaXMuZWFjaChWaXQpfSxhcHBlbmQ6ZnVuY3Rpb24gQXJ0KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZWl0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBrcnQodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmVpdCh0KSxpPW51bGw9PWU/VWl0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6aWl0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gTHJ0KCl7cmV0dXJuIHRoaXMuZWFjaChqaXQpfSxjbG9uZTpmdW5jdGlvbiBQcnQodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/V2l0OkdpdCl9LGRhdHVtOmZ1bmN0aW9uIE5ydCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIElydCh0LGUsbil7dmFyIGkscixvPSRpdCh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9aaXQ6S2l0LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gUnJ0KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/dHJ0OlFpdCkodCxlKSl9fTt2YXIgT3J0PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIHpydCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBEcnQoaSl9ZnVuY3Rpb24gRHJ0KHQpe3RoaXMuXz10fWZ1bmN0aW9uIEJydCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gSHJ0KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gRnJ0KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1PcnQsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fURydC5wcm90b3R5cGU9enJ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6RHJ0LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1CcnQodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09RnJ0KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09RnJ0KGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1IcnQoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgRHJ0KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgVnJ0LFVydCxqcnQ9MCxHcnQ9MCxXcnQ9MCxxcnQ9MCxZcnQ9MCxYcnQ9MCwkcnQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsS3J0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFpydCgpe3JldHVybiBZcnR8fChLcnQoSnJ0KSxZcnQ9JHJ0Lm5vdygpK1hydCl9ZnVuY3Rpb24gSnJ0KCl7WXJ0PTB9ZnVuY3Rpb24gUXJ0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiB0b3QodCxlLG4pe3ZhciBpPW5ldyBRcnQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBlb3QoKXtZcnQ9KHFydD0kcnQubm93KCkpK1hydCxqcnQ9R3J0PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe1pydCgpLCsranJ0O2Zvcih2YXIgdCxlPVZydDtlOykodD1ZcnQtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLWpydH0pKCl9ZmluYWxseXtqcnQ9MCwoZnVuY3Rpb24gZSgpe2Zvcih2YXIgdCxlLG49VnJ0LGk9MS8wO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpWcnQ9ZSk7VXJ0PXQsaW90KGkpfSkoKSxZcnQ9MH19ZnVuY3Rpb24gbm90KCl7dmFyIHQ9JHJ0Lm5vdygpLGU9dC1xcnQ7ZT4xZTMmJihYcnQtPWUscXJ0PXQpfWZ1bmN0aW9uIGlvdCh0KXtqcnR8fChHcnQmJihHcnQ9Y2xlYXJUaW1lb3V0KEdydCkpLHQtWXJ0PjI0Pyh0PDEvMCYmKEdydD1zZXRUaW1lb3V0KGVvdCx0LSRydC5ub3coKS1YcnQpKSxXcnQmJihXcnQ9Y2xlYXJJbnRlcnZhbChXcnQpKSk6KFdydHx8KHFydD0kcnQubm93KCksV3J0PXNldEludGVydmFsKG5vdCwxZTMpKSxqcnQ9MSxLcnQoZW90KSkpfWZ1bmN0aW9uIHJvdCh0LGUsbil7dmFyIGk9bmV3IFFydDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfVFydC5wcm90b3R5cGU9dG90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6UXJ0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9acnQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8VXJ0PT09dGhpc3x8KFVydD9VcnQuX25leHQ9dGhpczpWcnQ9dGhpcyxVcnQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bixpb3QoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsaW90KCkpfX07dmFyIG9vdD16cnQoInN0YXJ0IiwiZW5kIiwiaW50ZXJydXB0IiksYW90PVtdO2Z1bmN0aW9uIHNvdCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKGwpe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gcm90KG8pOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGRlbGV0ZSByW2NdKX1pZihyb3QoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLGEobCkpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQocyksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKG51bGwscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkscygpKX1mdW5jdGlvbiBzKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9dG90KChmdW5jdGlvbiBsKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmbyh0LW4uZGVsYXkpfSksMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOm9vdCx0d2Vlbjphb3QsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIGxvdCh0LGUpe3ZhciBuPXVvdCh0LGUpO2lmKG4uc3RhdGU+MCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBufWZ1bmN0aW9uIGNvdCh0LGUpe3ZhciBuPXVvdCh0LGUpO2lmKG4uc3RhdGU+Mil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHN0YXJ0ZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiB1b3QodCxlKXt2YXIgbj10Ll9fdHJhbnNpdGlvbjtpZighbnx8IShuPW5bZV0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gbn1mdW5jdGlvbiBob3QodCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksaSYmbi5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gZG90KHQsZSxuKXt0LnByb3RvdHlwZT1lLnByb3RvdHlwZT1uLG4uY29uc3RydWN0b3I9dH1mdW5jdGlvbiBwb3QodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gZm90KCl7fXZhciBtb3Q9LjcsZ290PTEvbW90LF9vdD0iXFxzKihbKy1dP1xcZCspXFxzKiIseW90PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLHZvdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsYm90PS9eIyhbMC05YS1mXXszLDh9KSQvLHhvdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbX290LF9vdCxfb3RdKyJcXCkkIiksd290PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1t2b3Qsdm90LHZvdF0rIlxcKSQiKSxTb3Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tfb3QsX290LF9vdCx5b3RdKyJcXCkkIiksTW90PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbdm90LHZvdCx2b3QseW90XSsiXFwpJCIpLEVvdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbeW90LHZvdCx2b3RdKyJcXCkkIiksVG90PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbeW90LHZvdCx2b3QseW90XSsiXFwpJCIpLENvdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBBb3QoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBrb3QoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBMb3QodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9Ym90LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/UG90KGUpOjM9PT1uP25ldyBPb3QoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP05vdChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9Ob3QoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT14b3QuZXhlYyh0KSk/bmV3IE9vdChlWzFdLGVbMl0sZVszXSwxKTooZT13b3QuZXhlYyh0KSk/bmV3IE9vdCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1Tb3QuZXhlYyh0KSk/Tm90KGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPU1vdC5leGVjKHQpKT9Ob3QoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9RW90LmV4ZWModCkpP0hvdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVRvdC5leGVjKHQpKT9Ib3QoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpDb3QuaGFzT3duUHJvcGVydHkodCk/UG90KENvdFt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IE9vdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFBvdCh0KXtyZXR1cm4gbmV3IE9vdCh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gTm90KHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgT290KHQsZSxuLGkpfWZ1bmN0aW9uIElvdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGZvdHx8KHQ9TG90KHQpKSx0P25ldyBPb3QoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IE9vdH1mdW5jdGlvbiBSb3QodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0lvdCh0KTpuZXcgT290KHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBPb3QodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIHpvdCgpe3JldHVybiIjIitCb3QodGhpcy5yKStCb3QodGhpcy5nKStCb3QodGhpcy5iKX1mdW5jdGlvbiBEb3QoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBCb3QodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBIb3QodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBWb3QodCxlLG4saSl9ZnVuY3Rpb24gRm90KHQpe2lmKHQgaW5zdGFuY2VvZiBWb3QpcmV0dXJuIG5ldyBWb3QodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgZm90fHwodD1Mb3QodCkpLCF0KXJldHVybiBuZXcgVm90O2lmKHQgaW5zdGFuY2VvZiBWb3QpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBWb3QoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBWb3QodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFVvdCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gam90KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBHb3QodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0pKHQsbik6am90KGlzTmFOKHQpP2U6dCl9ZG90KGZvdCxMb3Qse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6QW90LGZvcm1hdEhleDpBb3QsZm9ybWF0SHNsOmZ1bmN0aW9uIFdvdCgpe3JldHVybiBGb3QodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjprb3QsdG9TdHJpbmc6a290fSksZG90KE9vdCxSb3QscG90KGZvdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9nb3Q6TWF0aC5wb3coZ290LHQpLG5ldyBPb3QodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bW90Ok1hdGgucG93KG1vdCx0KSxuZXcgT290KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6em90LGZvcm1hdEhleDp6b3QsZm9ybWF0UmdiOkRvdCx0b1N0cmluZzpEb3R9KSksZG90KFZvdCwoZnVuY3Rpb24gcW90KHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9Gb3QodCk6bmV3IFZvdCh0LGUsbixudWxsPT1pPzE6aSl9KSxwb3QoZm90LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2dvdDpNYXRoLnBvdyhnb3QsdCksbmV3IFZvdCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P21vdDpNYXRoLnBvdyhtb3QsdCksbmV3IFZvdCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IE9vdChVb3QodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksVW90KHQscixpKSxVb3QodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgWW90PShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3JldHVybiAxPT0odD0rdCk/R290OmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihpKXtyZXR1cm4gTWF0aC5wb3codCtpKmUsbil9fSkoZSxuLHQpOmpvdChpc05hTihlKT9uOmUpfX0pKGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgaT1uKCh0PVJvdCh0KSkuciwoZT1Sb3QoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1Hb3QodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KSgxKTtmdW5jdGlvbiBYb3QodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyICRvdD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csS290PW5ldyBSZWdFeHAoJG90LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFpvdCh0LGUpe3ZhciBuLGkscixvPSRvdC5sYXN0SW5kZXg9S290Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj0kb3QuZXhlYyh0KSkmJihpPUtvdC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6WG90KG4saSl9KSksbz1Lb3QubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBKb3QsUW90LHRhdCxlYXQsbmF0PTE4MC9NYXRoLlBJLGlhdD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiByYXQodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqbmF0LHNrZXdYOk1hdGguYXRhbihsKSpuYXQsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIG9hdCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OlhvdCh0LHIpfSx7aTpsLTIseDpYb3QoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpYb3QodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OlhvdCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6WG90KHQsbil9LHtpOnMtMix4OlhvdChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgYWF0PW9hdCgoZnVuY3Rpb24gc2F0KHQpe3JldHVybiJub25lIj09PXQ/aWF0OihKb3R8fChKb3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksUW90PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0YXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLEpvdC5zdHlsZS50cmFuc2Zvcm09dCx0PXRhdC5nZXRDb21wdXRlZFN0eWxlKFFvdC5hcHBlbmRDaGlsZChKb3QpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLFFvdC5yZW1vdmVDaGlsZChKb3QpLHJhdCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIiksbGF0PW9hdCgoZnVuY3Rpb24gY2F0KHQpe3JldHVybiBudWxsPT10P2lhdDooZWF0fHwoZWF0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLGVhdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9ZWF0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP3JhdCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTppYXQpfSksIiwgIiwiKSIsIikiKTtmdW5jdGlvbiB1YXQodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPWNvdCh0aGlzLHQpLG89ci50d2VlbjtpZihvIT09bilmb3IodmFyIGE9MCxzPShpPW49bykubGVuZ3RoO2E8czsrK2EpaWYoaVthXS5uYW1lPT09ZSl7KGk9aS5zbGljZSgpKS5zcGxpY2UoYSwxKTticmVha31yLnR3ZWVuPWl9fWZ1bmN0aW9uIGhhdCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89Y290KHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIGRhdCh0LGUsbil7dmFyIGk9dC5faWQ7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1jb3QodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gdW90KHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIHBhdCh0LGUpe3ZhciBuO3JldHVybigibnVtYmVyIj09dHlwZW9mIGU/WG90OmUgaW5zdGFuY2VvZiBMb3Q/WW90OihuPUxvdChlKSk/KGU9bixZb3QpOlpvdCkodCxlKX1mdW5jdGlvbiBmYXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG1hdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGdhdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fWZ1bmN0aW9uIF9hdCh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIG89PT1uP251bGw6bz09PWk/cjpyPWUoaT1vLG4pfX1mdW5jdGlvbiB5YXQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB2YXQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPW4odGhpcyk7aWYobnVsbCE9cylyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09cz9udWxsOmE9PT1pJiZzPT09cj9vOm89ZShpPWEscj1zKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGJhdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGkoZSkpfX1yZXR1cm4gbi5fdmFsdWU9ZSxufWZ1bmN0aW9uIHhhdCh0LGUpe2Z1bmN0aW9uIG4oKXt2YXIgbj10aGlzLGk9ZS5hcHBseShuLGFyZ3VtZW50cyk7cmV0dXJuIGkmJmZ1bmN0aW9uKGUpe24uc2V0QXR0cmlidXRlKHQsaShlKSl9fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24gd2F0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7bG90KHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBTYXQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2xvdCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIE1hdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe2NvdCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gRWF0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtjb3QodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiBUYXQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7Y290KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBDYXQodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9sb3Q6Y290O3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBBYXQ9aXJ0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBrYXQodCxlLG4pe2Z1bmN0aW9uIGkoKXt2YXIgaT10aGlzLHI9ZS5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKGUpe2kuc3R5bGUuc2V0UHJvcGVydHkodCxyKGUpLG4pfX1yZXR1cm4gaS5fdmFsdWU9ZSxpfXZhciBMYXQ9MDtmdW5jdGlvbiBQYXQodCxlLG4saSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lLHRoaXMuX25hbWU9bix0aGlzLl9pZD1pfWZ1bmN0aW9uIE5hdCh0KXtyZXR1cm4gaXJ0KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBJYXQoKXtyZXR1cm4rK0xhdH12YXIgUmF0PWlydC5wcm90b3R5cGU7UGF0LnByb3RvdHlwZT1OYXQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQYXQsc2VsZWN0OmZ1bmN0aW9uIE9hdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWlpdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89bmV3IEFycmF5KHIpLGE9MDthPHI7KythKWZvcih2YXIgcyxsLGM9aVthXSx1PWMubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9Y1tkXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sZCxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXyksaFtkXT1sLHNvdChoW2RdLGUsbixkLGgsdW90KHMsbikpKTtyZXR1cm4gbmV3IFBhdChvLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIHphdCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW9pdCh0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj11b3QobCxuKSxtPTAsZz1wLmxlbmd0aDttPGc7KyttKShkPXBbbV0pJiZzb3QoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBQYXQobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBEYXQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWFpdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgUGF0KGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gQmF0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFBhdChvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBIYXQoKXtyZXR1cm4gbmV3IEFhdCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gRmF0KCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPUlhdCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9dW90KGEsZSk7c290KGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgUGF0KGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOlJhdC5jYWxsLG5vZGVzOlJhdC5ub2Rlcyxub2RlOlJhdC5ub2RlLHNpemU6UmF0LnNpemUsZW1wdHk6UmF0LmVtcHR5LGVhY2g6UmF0LmVhY2gsb246ZnVuY3Rpb24gVmF0KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj91b3QodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKENhdChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFVhdCh0LGUpe3ZhciBuPUpudCh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9sYXQ6cGF0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP3ZhdDp5YXQpKG4saSxkYXQodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/bWF0OmZhdCkobik6KG4ubG9jYWw/X2F0OmdhdCkobixpLGUrIiIpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIGphdCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9Sm50KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKGkubG9jYWw/YmF0OnhhdCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uIEdhdCh0LGUsbil7dmFyIGk9InRyYW5zZm9ybSI9PSh0Kz0iIik/YWF0OnBhdDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz13aXQodGhpcyx0KSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHdpdCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsKGZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19KSh0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT13aXQodGhpcyx0KSxzPW4odGhpcyk7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHM9d2l0KHRoaXMsdCkpLGE9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpfX0pKHQsaSxkYXQodGhpcywic3R5bGUuIit0LGUpKTooZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz13aXQodGhpcyx0KTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fSkodCxpLGUrIiIpLG4pfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIFdhdCh0LGUsbil7dmFyIGk9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxrYXQodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIHFhdCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShkYXQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0scmVtb3ZlOmZ1bmN0aW9uIFlhdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBYYXQodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPXVvdCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/dWF0OmhhdCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gJGF0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/d2F0OlNhdCkoZSx0KSk6dW90KHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBLYXQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9NYXQ6RWF0KShlLHQpKTp1b3QodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gWmF0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChUYXQoZSx0KSk6dW90KHRoaXMubm9kZSgpLGUpLmVhc2V9fTt2YXIgSmF0PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpUZn07ZnVuY3Rpb24gUWF0KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIEphdC50aW1lPVpydCgpLEphdDtyZXR1cm4gbn1pcnQucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiB0c3QodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtob3QodGhpcyx0KX0pKX0saXJ0LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIGVzdCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBQYXQ/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1JYXQoKSwobj1KYXQpLnRpbWU9WnJ0KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmc290KGEsdCxlLGMscyxufHxRYXQoYSxlKSk7cmV0dXJuIG5ldyBQYXQoaSx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBuc3Q9W251bGxdO2Z1bmN0aW9uIGlzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gcnN0KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIG9zdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBhc3QoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBzc3QodCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBsc3QodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIGNzdCh0LGUpe3ZhciBuPWUsaT1lLkwscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uTD1pLlIsbi5MJiYobi5MLlU9biksaS5SPW59ZnVuY3Rpb24gdXN0KHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBoc3QodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz1Pc3QucHVzaChyKS0xO3JldHVybiByLmxlZnQ9dCxyLnJpZ2h0PWUsbiYmcHN0KHIsdCxlLG4pLGkmJnBzdChyLGUsdCxpKSxJc3RbdC5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobyksSXN0W2UuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLHJ9ZnVuY3Rpb24gZHN0KHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiBwc3QodCxlLG4saSl7dFswXXx8dFsxXT90LmxlZnQ9PT1uP3RbMV09aTp0WzBdPWk6KHRbMF09aSx0LmxlZnQ9ZSx0LnJpZ2h0PW4pfWZ1bmN0aW9uIGZzdCh0LGUsbixpLHIpe3ZhciBvLGE9dFswXSxzPXRbMV0sbD1hWzBdLGM9YVsxXSx1PTAsaD0xLGQ9c1swXS1sLHA9c1sxXS1jO2lmKG89ZS1sLGR8fCEobz4wKSl7aWYoby89ZCxkPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKGQ+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89aS1sLGR8fCEobzwwKSl7aWYoby89ZCxkPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKGQ+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWlmKG89bi1jLHB8fCEobz4wKSl7aWYoby89cCxwPDApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1lbHNlIGlmKHA+MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWlmKG89ci1jLHB8fCEobzwwKSl7aWYoby89cCxwPDApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1lbHNlIGlmKHA+MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfXJldHVybiEodT4wfHxoPDEpfHwodT4wJiYodFswXT1bbCt1KmQsYyt1KnBdKSxoPDEmJih0WzFdPVtsK2gqZCxjK2gqcF0pLCEwKX19fX19ZnVuY3Rpb24gbXN0KHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gZ3N0KHQsZSl7dmFyIG49dC5zaXRlLGk9ZS5sZWZ0LHI9ZS5yaWdodDtyZXR1cm4gbj09PXImJihyPWksaT1uKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KG49PT1pPyhpPWVbMV0scj1lWzBdKTooaT1lWzBdLHI9ZVsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24gX3N0KHQsZSl7cmV0dXJuIGVbKyhlLmxlZnQhPT10LnNpdGUpXX1mdW5jdGlvbiB5c3QodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfWFzdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmFzdCxpbnNlcnQ6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7aWYodCl7aWYoZS5QPXQsZS5OPXQuTix0Lk4mJih0Lk4uUD1lKSx0Lk49ZSx0LlIpe2Zvcih0PXQuUjt0Lkw7KXQ9dC5MO3QuTD1lfWVsc2UgdC5SPWU7bj10fWVsc2UgdGhpcy5fPyh0PXVzdCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKGxzdCh0aGlzLG4pLG49KHQ9bikuVSksbi5DPSExLGkuQz0hMCxjc3QodGhpcyxpKSk6KHI9aS5MKSYmci5DPyhuLkM9ci5DPSExLGkuQz0hMCx0PWkpOih0PT09bi5MJiYoY3N0KHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLGxzdCh0aGlzLGkpKSxuPXQuVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3QuTiYmKHQuTi5QPXQuUCksdC5QJiYodC5QLk49dC5OKSx0Lk49dC5QPW51bGw7dmFyIGUsbixpLHI9dC5VLG89dC5MLGE9dC5SO2lmKG49bz9hP3VzdChhKTpvOmEscj9yLkw9PT10P3IuTD1uOnIuUj1uOnRoaXMuXz1uLG8mJmE/KGk9bi5DLG4uQz10LkMsbi5MPW8sby5VPW4sbiE9PWE/KHI9bi5VLG4uVT10LlUsci5MPXQ9bi5SLG4uUj1hLGEuVT1uKToobi5VPXIscj1uLHQ9bi5SKSk6KGk9dC5DLHQ9biksdCYmKHQuVT1yKSwhaSlpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09ci5MKXtpZigoZT1yLlIpLkMmJihlLkM9ITEsci5DPSEwLGxzdCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLGNzdCh0aGlzLGUpLGU9ci5SKSxlLkM9ci5DLHIuQz1lLlIuQz0hMSxsc3QodGhpcyxyKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigoZT1yLkwpLkMmJihlLkM9ITEsci5DPSEwLGNzdCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLGxzdCh0aGlzLGUpLGU9ci5MKSxlLkM9ci5DLHIuQz1lLkwuQz0hMSxjc3QodGhpcyxyKSx0PXRoaXMuXzticmVha31lLkM9ITAsdD1yLHI9ci5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19O3ZhciB2c3QsYnN0PVtdO2Z1bmN0aW9uIHhzdCgpe3NzdCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gd3N0KHQpe3ZhciBlPXQuUCxuPXQuTjtpZihlJiZuKXt2YXIgaT1lLnNpdGUscj10LnNpdGUsbz1uLnNpdGU7aWYoaSE9PW8pe3ZhciBhPXJbMF0scz1yWzFdLGw9aVswXS1hLGM9aVsxXS1zLHU9b1swXS1hLGg9b1sxXS1zLGQ9MioobCpoLWMqdSk7aWYoIShkPj0tRHN0KSl7dmFyIHA9bCpsK2MqYyxmPXUqdStoKmgsbT0oaCpwLWMqZikvZCxnPShsKmYtdSpwKS9kLF89YnN0LnBvcCgpfHxuZXcgeHN0O18uYXJjPXQsXy5zaXRlPXIsXy54PW0rYSxfLnk9KF8uY3k9ZytzKStNYXRoLnNxcnQobSptK2cqZyksdC5jaXJjbGU9Xztmb3IodmFyIHk9bnVsbCx2PVJzdC5fO3Y7KWlmKF8ueTx2Lnl8fF8ueT09PXYueSYmXy54PD12Lngpe2lmKCF2Lkwpe3k9di5QO2JyZWFrfXY9di5MfWVsc2V7aWYoIXYuUil7eT12O2JyZWFrfXY9di5SfVJzdC5pbnNlcnQoeSxfKSx5fHwodnN0PV8pfX19fWZ1bmN0aW9uIFNzdCh0KXt2YXIgZT10LmNpcmNsZTtlJiYoZS5QfHwodnN0PWUuTiksUnN0LnJlbW92ZShlKSxic3QucHVzaChlKSxzc3QoZSksdC5jaXJjbGU9bnVsbCl9dmFyIE1zdD1bXTtmdW5jdGlvbiBFc3QoKXtzc3QodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIFRzdCh0KXt2YXIgZT1Nc3QucG9wKCl8fG5ldyBFc3Q7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gQ3N0KHQpe1NzdCh0KSxOc3QucmVtb3ZlKHQpLE1zdC5wdXNoKHQpLHNzdCh0KX1mdW5jdGlvbiBBc3QodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07Q3N0KHQpO2Zvcih2YXIgbD1vO2wuY2lyY2xlJiZNYXRoLmFicyhuLWwuY2lyY2xlLngpPHpzdCYmTWF0aC5hYnMoaS1sLmNpcmNsZS5jeSk8enN0OylvPWwuUCxzLnVuc2hpZnQobCksQ3N0KGwpLGw9bztzLnVuc2hpZnQobCksU3N0KGwpO2Zvcih2YXIgYz1hO2MuY2lyY2xlJiZNYXRoLmFicyhuLWMuY2lyY2xlLngpPHpzdCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8enN0OylhPWMuTixzLnB1c2goYyksQ3N0KGMpLGM9YTtzLnB1c2goYyksU3N0KGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KXBzdCgoYz1zW3VdKS5lZGdlLChsPXNbdS0xXSkuc2l0ZSxjLnNpdGUscik7KGM9c1toLTFdKS5lZGdlPWhzdCgobD1zWzBdKS5zaXRlLGMuc2l0ZSxudWxsLHIpLHdzdChsKSx3c3QoYyl9ZnVuY3Rpb24ga3N0KHQpe2Zvcih2YXIgZSxuLGkscixvPXRbMF0sYT10WzFdLHM9TnN0Ll87czspaWYoKGk9THN0KHMsYSktbyk+enN0KXM9cy5MO2Vsc2V7aWYoISgocj1vLVBzdChzLGEpKT56c3QpKXtpPi16c3Q/KGU9cy5QLG49cyk6cj4tenN0PyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7SXN0W3QuaW5kZXhdPXtzaXRlOnQsaGFsZmVkZ2VzOltdfX0pKHQpO3ZhciBjPVRzdCh0KTtpZihOc3QuaW5zZXJ0KGUsYyksZXx8bil7aWYoZT09PW4pcmV0dXJuIFNzdChlKSxuPVRzdChlLnNpdGUpLE5zdC5pbnNlcnQoYyxuKSxjLmVkZ2U9bi5lZGdlPWhzdChlLnNpdGUsYy5zaXRlKSx3c3QoZSksdm9pZCB3c3Qobik7aWYobil7U3N0KGUpLFNzdChuKTt2YXIgdT1lLnNpdGUsaD11WzBdLGQ9dVsxXSxwPXRbMF0taCxmPXRbMV0tZCxtPW4uc2l0ZSxnPW1bMF0taCxfPW1bMV0tZCx5PTIqKHAqXy1mKmcpLHY9cCpwK2YqZixiPWcqZytfKl8seD1bKF8qdi1mKmIpL3kraCwocCpiLWcqdikveStkXTtwc3Qobi5lZGdlLHUsbSx4KSxjLmVkZ2U9aHN0KHUsdCxudWxsLHgpLG4uZWRnZT1oc3QodCxtLG51bGwseCksd3N0KGUpLHdzdChuKX1lbHNlIGMuZWRnZT1oc3QoZS5zaXRlLGMuc2l0ZSl9fWZ1bmN0aW9uIExzdCh0LGUpe3ZhciBuPXQuc2l0ZSxpPW5bMF0scj1uWzFdLG89ci1lO2lmKCFvKXJldHVybiBpO3ZhciBhPXQuUDtpZighYSlyZXR1cm4tMS8wO3ZhciBzPShuPWEuc2l0ZSlbMF0sbD1uWzFdLGM9bC1lO2lmKCFjKXJldHVybiBzO3ZhciB1PXMtaSxoPTEvby0xL2MsZD11L2M7cmV0dXJuIGg/KC1kK01hdGguc3FydChkKmQtMipoKih1KnUvKC0yKmMpLWwrYy8yK3Itby8yKSkpL2graTooaStzKS8yfWZ1bmN0aW9uIFBzdCh0LGUpe3ZhciBuPXQuTjtpZihuKXJldHVybiBMc3QobixlKTt2YXIgaT10LnNpdGU7cmV0dXJuIGlbMV09PT1lP2lbMF06MS8wfXZhciBOc3QsSXN0LFJzdCxPc3QsenN0PTFlLTYsRHN0PTFlLTEyO2Z1bmN0aW9uIEJzdCh0LGUsbil7cmV0dXJuKHRbMF0tblswXSkqKGVbMV0tdFsxXSktKHRbMF0tZVswXSkqKG5bMV0tdFsxXSl9ZnVuY3Rpb24gSHN0KHQsZSl7cmV0dXJuIGVbMV0tdFsxXXx8ZVswXS10WzBdfWZ1bmN0aW9uIEZzdCh0LGUpe3ZhciBuLGkscixvPXQuc29ydChIc3QpLnBvcCgpO2ZvcihPc3Q9W10sSXN0PW5ldyBBcnJheSh0Lmxlbmd0aCksTnN0PW5ldyBhc3QsUnN0PW5ldyBhc3Q7OylpZihyPXZzdCxvJiYoIXJ8fG9bMV08ci55fHxvWzFdPT09ci55JiZvWzBdPHIueCkpb1swXT09PW4mJm9bMV09PT1pfHwoa3N0KG8pLG49b1swXSxpPW9bMV0pLG89dC5wb3AoKTtlbHNle2lmKCFyKWJyZWFrO0FzdChyLmFyYyl9aWYoKGZ1bmN0aW9uIGEoKXtmb3IodmFyIHQsZSxuLGkscj0wLG89SXN0Lmxlbmd0aDtyPG87KytyKWlmKCh0PUlzdFtyXSkmJihpPShlPXQuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgYT1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKWFbbl09bixzW25dPWdzdCh0LE9zdFtlW25dXSk7Zm9yKGEuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gc1tlXS1zW3RdfSkpLG49MDtuPGk7KytuKXNbbl09ZVthW25dXTtmb3Iobj0wO248aTsrK24pZVtuXT1zW25dfX0pKCksZSl7dmFyIHM9K2VbMF1bMF0sbD0rZVswXVsxXSxjPStlWzFdWzBdLHU9K2VbMV1bMV07IShmdW5jdGlvbiBoKHQsZSxuLGkpe2Zvcih2YXIgcixvPU9zdC5sZW5ndGg7by0tOyltc3Qocj1Pc3Rbb10sdCxlLG4saSkmJmZzdChyLHQsZSxuLGkpJiYoTWF0aC5hYnMoclswXVswXS1yWzFdWzBdKT56c3R8fE1hdGguYWJzKHJbMF1bMV0tclsxXVsxXSk+enN0KXx8ZGVsZXRlIE9zdFtvXX0pKHMsbCxjLHUpLChmdW5jdGlvbiBkKHQsZSxuLGkpe3ZhciByLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnPUlzdC5sZW5ndGgsXz0hMDtmb3Iocj0wO3I8ZzsrK3IpaWYobz1Jc3Rbcl0pe2ZvcihhPW8uc2l0ZSxzPShsPW8uaGFsZmVkZ2VzKS5sZW5ndGg7cy0tOylPc3RbbFtzXV18fGwuc3BsaWNlKHMsMSk7Zm9yKHM9MCxjPWwubGVuZ3RoO3M8YzspZj0ocD15c3QobyxPc3RbbFtzXV0pKVswXSxtPXBbMV0saD0odT1fc3QobyxPc3RbbFsrK3MlY11dKSlbMF0sZD11WzFdLChNYXRoLmFicyhmLWgpPnpzdHx8TWF0aC5hYnMobS1kKT56c3QpJiYobC5zcGxpY2UocywwLE9zdC5wdXNoKGRzdChhLHAsTWF0aC5hYnMoZi10KTx6c3QmJmktbT56c3Q/W3QsTWF0aC5hYnMoaC10KTx6c3Q/ZDppXTpNYXRoLmFicyhtLWkpPHpzdCYmbi1mPnpzdD9bTWF0aC5hYnMoZC1pKTx6c3Q/aDpuLGldOk1hdGguYWJzKGYtbik8enN0JiZtLWU+enN0P1tuLE1hdGguYWJzKGgtbik8enN0P2Q6ZV06TWF0aC5hYnMobS1lKTx6c3QmJmYtdD56c3Q/W01hdGguYWJzKGQtZSk8enN0P2g6dCxlXTpudWxsKSktMSksKytjKTtjJiYoXz0hMSl9aWYoXyl7dmFyIHksdixiLHg9MS8wO2ZvcihyPTAsXz1udWxsO3I8ZzsrK3IpKG89SXN0W3JdKSYmKGI9KHk9KGE9by5zaXRlKVswXS10KSp5Kyh2PWFbMV0tZSkqdik8eCYmKHg9YixfPW8pO2lmKF8pe3ZhciB3PVt0LGVdLFM9W3QsaV0sTT1bbixpXSxFPVtuLGVdO18uaGFsZmVkZ2VzLnB1c2goT3N0LnB1c2goZHN0KGE9Xy5zaXRlLHcsUykpLTEsT3N0LnB1c2goZHN0KGEsUyxNKSktMSxPc3QucHVzaChkc3QoYSxNLEUpKS0xLE9zdC5wdXNoKGRzdChhLEUsdykpLTEpfX1mb3Iocj0wO3I8ZzsrK3IpKG89SXN0W3JdKSYmKG8uaGFsZmVkZ2VzLmxlbmd0aHx8ZGVsZXRlIElzdFtyXSl9KShzLGwsYyx1KX10aGlzLmVkZ2VzPU9zdCx0aGlzLmNlbGxzPUlzdCxOc3Q9UnN0PU9zdD1Jc3Q9bnVsbH1Gc3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGc3QscG9seWdvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5oYWxmZWRnZXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gX3N0KGUsdFtuXSl9KSk7cmV0dXJuIG4uZGF0YT1lLnNpdGUuZGF0YSxufSkpfSx0cmlhbmdsZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXSxlPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtpZihvPShyPW4uaGFsZmVkZ2VzKS5sZW5ndGgpZm9yKHZhciByLG8sYSxzPW4uc2l0ZSxsPS0xLGM9ZVtyW28tMV1dLHU9Yy5sZWZ0PT09cz9jLnJpZ2h0OmMubGVmdDsrK2w8bzspYT11LHU9KGM9ZVtyW2xdXSkubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQsYSYmdSYmaTxhLmluZGV4JiZpPHUuaW5kZXgmJkJzdChzLGEsdSk8MCYmdC5wdXNoKFtzLmRhdGEsYS5kYXRhLHUuZGF0YV0pfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KSl9LGZpbmQ6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyLG89dGhpcyxhPW8uX2ZvdW5kfHwwLHM9by5jZWxscy5sZW5ndGg7IShyPW8uY2VsbHNbYV0pOylpZigrK2E+PXMpcmV0dXJuIG51bGw7dmFyIGw9dC1yLnNpdGVbMF0sYz1lLXIuc2l0ZVsxXSx1PWwqbCtjKmM7ZG97cj1vLmNlbGxzW2k9YV0sYT1udWxsLHIuaGFsZmVkZ2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW8uZWRnZXNbbl0scz1pLmxlZnQ7aWYocyE9PXIuc2l0ZSYmc3x8KHM9aS5yaWdodCkpe3ZhciBsPXQtc1swXSxjPWUtc1sxXSxoPWwqbCtjKmM7aDx1JiYodT1oLGE9cy5pbmRleCl9fSkpfXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gby5fZm91bmQ9aSxudWxsPT1ufHx1PD1uKm4/ci5zaXRlOm51bGx9fTt2YXIgVnN0PXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIFVzdCgpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBqc3QoaSl9ZnVuY3Rpb24ganN0KHQpe3RoaXMuXz10fWZ1bmN0aW9uIEdzdCh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gV3N0KHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gcXN0KHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1Wc3QsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fWpzdC5wcm90b3R5cGU9VXN0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6anN0LG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1Hc3QodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09cXN0KGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09cXN0KGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1Xc3QoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcganN0KHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgWXN0PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixYc3Q9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOllzdCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uICRzdCh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxYc3QuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOlhzdFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIEtzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PVlzdCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09WXN0P2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiBac3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gSnN0KHQpe3ZhciBlPSRzdCh0KTtyZXR1cm4oZS5sb2NhbD9ac3Q6S3N0KShlKX1mdW5jdGlvbiBRc3QoKXt9ZnVuY3Rpb24gdGx0KHQpe3JldHVybiBudWxsPT10P1FzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIGVsdCgpe3JldHVybltdfWZ1bmN0aW9uIG5sdCh0KXtyZXR1cm4gbnVsbD09dD9lbHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBpbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gcmx0KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIG9sdCh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiBhbHQodCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IG9sdCh0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gc2x0KHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBvbHQodCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBsbHQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gY2x0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB1bHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBobHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBkbHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gcGx0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBmbHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gbWx0KHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBnbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gX2x0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24geWx0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIHZsdCh0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fG1sdCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBibHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIHhsdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gd2x0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIFNsdCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gTWx0KHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IEVsdCh0KX1mdW5jdGlvbiBFbHQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPVNsdCh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIFRsdCh0LGUpe2Zvcih2YXIgbj1NbHQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBDbHQodCxlKXtmb3IodmFyIG49TWx0KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gQWx0KHQpe3JldHVybiBmdW5jdGlvbigpe1RsdCh0aGlzLHQpfX1mdW5jdGlvbiBrbHQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Q2x0KHRoaXMsdCl9fWZ1bmN0aW9uIExsdCh0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9UbHQ6Q2x0KSh0aGlzLHQpfX1mdW5jdGlvbiBQbHQoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIE5sdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIElsdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gUmx0KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gT2x0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIHpsdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIERsdCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBCbHQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBIbHQoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBGbHQoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBWbHQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIFVsdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9b2x0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6b2x0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LEVsdC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBqbHQ9e30sR2x0PW51bGw7ZnVuY3Rpb24gV2x0KHQsZSxuKXtyZXR1cm4gdD1xbHQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBxbHQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1HbHQ7R2x0PWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e0dsdD1yfX19ZnVuY3Rpb24gWWx0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFhsdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gJGx0KHQsZSxuKXt2YXIgaT1qbHQuaGFzT3duUHJvcGVydHkodC50eXBlKT9XbHQ6cWx0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIEtsdCh0LGUsbil7dmFyIGk9bWx0KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIFpsdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBLbHQodGhpcyx0LGUpfX1mdW5jdGlvbiBKbHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gS2x0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KGpsdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIFFsdD1bbnVsbF07ZnVuY3Rpb24gdGN0KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIGVjdCgpe3JldHVybiBuZXcgdGN0KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sUWx0KX1mdW5jdGlvbiBuY3QodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyB0Y3QoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyB0Y3QoW1t0XV0sUWx0KX1mdW5jdGlvbiBpY3QoKXtmb3IodmFyIHQsZT1HbHQ7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gcmN0KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gb2N0KHQpe3ZhciBlPWljdCgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxyY3QodCxlKX1mdW5jdGlvbiBhY3QodCxlLG4pe2FyZ3VtZW50cy5sZW5ndGg8MyYmKG49ZSxlPWljdCgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIHJjdCh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIHNjdCgpe0dsdC5wcmV2ZW50RGVmYXVsdCgpLEdsdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBsY3QodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1uY3QodCkub24oImRyYWdzdGFydC5kcmFnIixzY3QsITApOyJvbnNlbGVjdHN0YXJ0ImluIGU/bi5vbigic2VsZWN0c3RhcnQuZHJhZyIsc2N0LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBjY3QodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPW5jdCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO2UmJihpLm9uKCJjbGljay5kcmFnIixzY3QsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiB1Y3QodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIGhjdCh0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgaSBpbiBlKW5baV09ZVtpXTtyZXR1cm4gbn1mdW5jdGlvbiBkY3QoKXt9dGN0LnByb3RvdHlwZT1lY3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0Y3Qsc2VsZWN0OmZ1bmN0aW9uIHBjdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9dGx0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgdGN0KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBmY3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PW5sdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9W10scj1bXSxvPTA7bzxuOysrbylmb3IodmFyIGEscz1lW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJihpLnB1c2godC5jYWxsKGEsYS5fX2RhdGFfXyxjLHMpKSxyLnB1c2goYSkpO3JldHVybiBuZXcgdGN0KGkscil9LGZpbHRlcjpmdW5jdGlvbiBtY3QodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWlsdCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgdGN0KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gZ2N0KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP3NsdDphbHQsaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyB0Y3QocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIF9jdCgpe3JldHVybiBuZXcgdGN0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKHJsdCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24geWN0KCl7cmV0dXJuIG5ldyB0Y3QodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChybHQpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIHZjdCh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gYmN0KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IHRjdChvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiB4Y3QoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHdjdCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PWxsdCk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgdGN0KHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBTY3QoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIE1jdCgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gRWN0KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBUY3QoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIENjdCgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBBY3QodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIGtjdCh0LGUpe3ZhciBuPSRzdCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/dWx0OmNsdDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2ZsdDpwbHQ6bi5sb2NhbD9kbHQ6aGx0KShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gTGN0KHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9nbHQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/eWx0Ol9sdCkodCxlLG51bGw9PW4/IiI6bikpOnZsdCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gUGN0KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/Ymx0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP3dsdDp4bHQpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIE5jdCh0LGUpe3ZhciBuPVNsdCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1NbHQodGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/TGx0OmU/QWx0OmtsdCkobixlKSl9LHRleHQ6ZnVuY3Rpb24gSWN0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P1BsdDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/SWx0Ok5sdCkodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIFJjdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9SbHQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P3psdDpPbHQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIE9jdCgpe3JldHVybiB0aGlzLmVhY2goRGx0KX0sbG93ZXI6ZnVuY3Rpb24gemN0KCl7cmV0dXJuIHRoaXMuZWFjaChCbHQpfSxhcHBlbmQ6ZnVuY3Rpb24gRGN0KHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SnN0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBCY3QodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkpzdCh0KSxpPW51bGw9PWU/SGx0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6dGx0KGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gSGN0KCl7cmV0dXJuIHRoaXMuZWFjaChGbHQpfSxjbG9uZTpmdW5jdGlvbiBGY3QodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/VWx0OlZsdCl9LGRhdHVtOmZ1bmN0aW9uIFZjdCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIFVjdCh0LGUsbil7dmFyIGkscixvPVlsdCh0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT8kbHQ6WGx0LG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gamN0KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/Smx0OlpsdCkodCxlKSl9fTt2YXIgR2N0PS43LFdjdD0xL0djdCxxY3Q9IlxccyooWystXT9cXGQrKVxccyoiLFljdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixYY3Q9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLCRjdD0vXiMoWzAtOWEtZl17Myw4fSkkLyxLY3Q9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3FjdCxxY3QscWN0XSsiXFwpJCIpLFpjdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbWGN0LFhjdCxYY3RdKyJcXCkkIiksSmN0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbcWN0LHFjdCxxY3QsWWN0XSsiXFwpJCIpLFFjdD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1hjdCxYY3QsWGN0LFljdF0rIlxcKSQiKSx0dXQ9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW1ljdCxYY3QsWGN0XSsiXFwpJCIpLGV1dD1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW1ljdCxYY3QsWGN0LFljdF0rIlxcKSQiKSxudXQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gaXV0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gcnV0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gb3V0KHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPSRjdC5leGVjKHQpKT8obj1lWzFdLmxlbmd0aCxlPXBhcnNlSW50KGVbMV0sMTYpLDY9PT1uP2F1dChlKTozPT09bj9uZXcgdXV0KGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9zdXQoZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwoMjU1JmUpLzI1NSk6ND09PW4/c3V0KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9S2N0LmV4ZWModCkpP25ldyB1dXQoZVsxXSxlWzJdLGVbM10sMSk6KGU9WmN0LmV4ZWModCkpP25ldyB1dXQoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9SmN0LmV4ZWModCkpP3N1dChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1RY3QuZXhlYyh0KSk/c3V0KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLGVbNF0pOihlPXR1dC5leGVjKHQpKT9mdXQoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1ldXQuZXhlYyh0KSk/ZnV0KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6bnV0Lmhhc093blByb3BlcnR5KHQpP2F1dChudXRbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyB1dXQoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBhdXQodCl7cmV0dXJuIG5ldyB1dXQodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIHN1dCh0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IHV1dCh0LGUsbixpKX1mdW5jdGlvbiBsdXQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBkY3R8fCh0PW91dCh0KSksdD9uZXcgdXV0KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyB1dXR9ZnVuY3Rpb24gY3V0KHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9sdXQodCk6bmV3IHV1dCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gdXV0KHQsZSxuLGkpe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBodXQoKXtyZXR1cm4iIyIrcHV0KHRoaXMucikrcHV0KHRoaXMuZykrcHV0KHRoaXMuYil9ZnVuY3Rpb24gZHV0KCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gcHV0KHQpe3JldHVybigodD1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHQpfHwwKSkpPDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24gZnV0KHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgZ3V0KHQsZSxuLGkpfWZ1bmN0aW9uIG11dCh0KXtpZih0IGluc3RhbmNlb2YgZ3V0KXJldHVybiBuZXcgZ3V0KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGRjdHx8KHQ9b3V0KHQpKSwhdClyZXR1cm4gbmV3IGd1dDtpZih0IGluc3RhbmNlb2YgZ3V0KXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxpPXQuYi8yNTUscj1NYXRoLm1pbihlLG4saSksbz1NYXRoLm1heChlLG4saSksYT1OYU4scz1vLXIsbD0obytyKS8yO3JldHVybiBzPyhhPWU9PT1vPyhuLWkpL3MrNioobjxpKTpuPT09bz8oaS1lKS9zKzI6KGUtbikvcys0LHMvPWw8LjU/bytyOjItby1yLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgZ3V0KGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gZ3V0KHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBfdXQodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfWZ1bmN0aW9uIHl1dCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdnV0KHQsZSl7dmFyIG49ZS10O3JldHVybiBuPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19KSh0LG4pOnl1dChpc05hTih0KT9lOnQpfXVjdChkY3Qsb3V0LHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4Oml1dCxmb3JtYXRIZXg6aXV0LGZvcm1hdEhzbDpmdW5jdGlvbiBidXQoKXtyZXR1cm4gbXV0KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6cnV0LHRvU3RyaW5nOnJ1dH0pLHVjdCh1dXQsY3V0LGhjdChkY3Qse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/V2N0Ok1hdGgucG93KFdjdCx0KSxuZXcgdXV0KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0djdDpNYXRoLnBvdyhHY3QsdCksbmV3IHV1dCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4Omh1dCxmb3JtYXRIZXg6aHV0LGZvcm1hdFJnYjpkdXQsdG9TdHJpbmc6ZHV0fSkpLHVjdChndXQsKGZ1bmN0aW9uIHh1dCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/bXV0KHQpOm5ldyBndXQodCxlLG4sbnVsbD09aT8xOmkpfSksaGN0KGRjdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9XY3Q6TWF0aC5wb3coV2N0LHQpLG5ldyBndXQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9HY3Q6TWF0aC5wb3coR2N0LHQpLG5ldyBndXQodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyB1dXQoX3V0KHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLF91dCh0LHIsaSksX3V0KHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIHd1dD0oZnVuY3Rpb24gdChlKXt2YXIgbj0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gMT09KHQ9K3QpP3Z1dDpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTp5dXQoaXNOYU4oZSk/bjplKX19KShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIGk9bigodD1jdXQodCkpLnIsKGU9Y3V0KGUpKS5yKSxyPW4odC5nLGUuZyksbz1uKHQuYixlLmIpLGE9dnV0KHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSkoMSk7ZnVuY3Rpb24gU3V0KHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fXZhciBNdXQ9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLEV1dD1uZXcgUmVnRXhwKE11dC5zb3VyY2UsImciKTtmdW5jdGlvbiBUdXQodCxlKXt2YXIgbixpLHIsbz1NdXQubGFzdEluZGV4PUV1dC5sYXN0SW5kZXg9MCxhPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49TXV0LmV4ZWModCkpJiYoaT1FdXQuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OlN1dChuLGkpfSkpLG89RXV0Lmxhc3RJbmRleDtyZXR1cm4gbzxlLmxlbmd0aCYmKHI9ZS5zbGljZShvKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLHMubGVuZ3RoPDI/bFswXT8oZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fSkobFswXS54KTooZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4saT0wO2k8ZTsrK2kpc1sobj1sW2ldKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX12YXIgQ3V0LEF1dCxrdXQsTHV0LFB1dD0xODAvTWF0aC5QSSxOdXQ9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gSXV0KHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKlB1dCxza2V3WDpNYXRoLmF0YW4obCkqUHV0LHNjYWxlWDphLHNjYWxlWTpzfX1mdW5jdGlvbiBSdXQodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpTdXQodCxyKX0se2k6bC0yLHg6U3V0KGksbyl9KX1lbHNlKHJ8fG8pJiZhLnB1c2goInRyYW5zbGF0ZSgiK3IrZStvK24pfSkoby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHMsbCksKGZ1bmN0aW9uIHUodCxlLG4sbyl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLG8ucHVzaCh7aTpuLnB1c2gocihuKSsicm90YXRlKCIsbnVsbCxpKS0yLHg6U3V0KHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpTdXQodCxlKX0pOmUmJm4ucHVzaChyKG4pKyJza2V3WCgiK2UraSl9KShvLnNrZXdYLGEuc2tld1gscyxsKSwoZnVuY3Rpb24gZCh0LGUsbixpLG8sYSl7aWYodCE9PW58fGUhPT1pKXt2YXIgcz1vLnB1c2gocihvKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7YS5wdXNoKHtpOnMtNCx4OlN1dCh0LG4pfSx7aTpzLTIseDpTdXQoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIE91dD1SdXQoKGZ1bmN0aW9uIHp1dCh0KXtyZXR1cm4ibm9uZSI9PT10P051dDooQ3V0fHwoQ3V0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLEF1dD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsa3V0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSxDdXQuc3R5bGUudHJhbnNmb3JtPXQsdD1rdXQuZ2V0Q29tcHV0ZWRTdHlsZShBdXQuYXBwZW5kQ2hpbGQoQ3V0KSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxBdXQucmVtb3ZlQ2hpbGQoQ3V0KSxJdXQoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLER1dD1SdXQoKGZ1bmN0aW9uIEJ1dCh0KXtyZXR1cm4gbnVsbD09dD9OdXQ6KEx1dHx8KEx1dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSxMdXQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PUx1dC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9JdXQoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6TnV0KX0pLCIsICIsIikiLCIpIiksSHV0PU1hdGguU1FSVDI7ZnVuY3Rpb24gRnV0KHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIFZ1dCh0LGUpe3ZhciBuLGkscj10WzBdLG89dFsxXSxhPXRbMl0scz1lWzJdLGw9ZVswXS1yLGM9ZVsxXS1vLHU9bCpsK2MqYztpZih1PDFlLTEyKWk9TWF0aC5sb2cocy9hKS9IdXQsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChIdXQqdCppKV19O2Vsc2V7dmFyIGg9TWF0aC5zcXJ0KHUpLGQ9KHMqcy1hKmErNCp1KS8oMiphKjIqaCkscD0ocypzLWEqYS00KnUpLygyKnMqMipoKSxmPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCksbT1NYXRoLmxvZyhNYXRoLnNxcnQocCpwKzEpLXApO2k9KG0tZikvSHV0LG49ZnVuY3Rpb24odCl7dmFyIGU9dCppLG49RnV0KGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShIdXQqZStmKS0oZnVuY3Rpb24gZCh0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0pKGYpKTtyZXR1cm5bcitzKmwsbytzKmMsYSpuL0Z1dChIdXQqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59dmFyIFV1dCxqdXQsR3V0PTAsV3V0PTAscXV0PTAsWXV0PTAsWHV0PTAsJHV0PTAsS3V0PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFp1dD0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBKdXQoKXtyZXR1cm4gWHV0fHwoWnV0KFF1dCksWHV0PUt1dC5ub3coKSskdXQpfWZ1bmN0aW9uIFF1dCgpe1h1dD0wfWZ1bmN0aW9uIHRodCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gZWh0KHQsZSxuKXt2YXIgaT1uZXcgdGh0O3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gbmh0KCl7WHV0PShZdXQ9S3V0Lm5vdygpKSskdXQsR3V0PVd1dD0wO3RyeXshKGZ1bmN0aW9uIHQoKXtKdXQoKSwrK0d1dDtmb3IodmFyIHQsZT1VdXQ7ZTspKHQ9WHV0LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1HdXR9KSgpfWZpbmFsbHl7R3V0PTAsKGZ1bmN0aW9uIGUoKXtmb3IodmFyIHQsZSxuPVV1dCxpPTEvMDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6VXV0PWUpO2p1dD10LHJodChpKX0pKCksWHV0PTB9fWZ1bmN0aW9uIGlodCgpe3ZhciB0PUt1dC5ub3coKSxlPXQtWXV0O2U+MWUzJiYoJHV0LT1lLFl1dD10KX1mdW5jdGlvbiByaHQodCl7R3V0fHwoV3V0JiYoV3V0PWNsZWFyVGltZW91dChXdXQpKSx0LVh1dD4yND8odDwxLzAmJihXdXQ9c2V0VGltZW91dChuaHQsdC1LdXQubm93KCktJHV0KSkscXV0JiYocXV0PWNsZWFySW50ZXJ2YWwocXV0KSkpOihxdXR8fChZdXQ9S3V0Lm5vdygpLHF1dD1zZXRJbnRlcnZhbChpaHQsMWUzKSksR3V0PTEsWnV0KG5odCkpKX1mdW5jdGlvbiBvaHQodCxlLG4pe3ZhciBpPW5ldyB0aHQ7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX10aHQucHJvdG90eXBlPWVodC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnRodCxyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/SnV0KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fGp1dD09PXRoaXN8fChqdXQ/anV0Ll9uZXh0PXRoaXM6VXV0PXRoaXMsanV0PXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4scmh0KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLHJodCgpKX19O3ZhciBhaHQ9VXN0KCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLHNodD1bXTtmdW5jdGlvbiBsaHQodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyhsKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gcygpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIG9odChvKTs0PT09ZC5zdGF0ZT8oZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSk6K2M8ZSYmKGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pfWlmKG9odCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksYShsKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwodCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj1laHQoKGZ1bmN0aW9uIGwodCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZvKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246YWh0LHR3ZWVuOnNodCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gY2h0KHQsZSl7dmFyIG49aGh0KHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gdWh0KHQsZSl7dmFyIG49aGh0KHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIGhodCh0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIGRodCh0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgb1tyXSk6YT0hMTthJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIHBodCh0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dWh0KHRoaXMsdCksbz1yLnR3ZWVuO2lmKG8hPT1uKWZvcih2YXIgYT0wLHM9KGk9bj1vKS5sZW5ndGg7YTxzOysrYSlpZihpW2FdLm5hbWU9PT1lKXsoaT1pLnNsaWNlKCkpLnNwbGljZShhLDEpO2JyZWFrfXIudHdlZW49aX19ZnVuY3Rpb24gZmh0KHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz11aHQodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gbWh0KHQsZSxuKXt2YXIgaT10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXVodCh0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBoaHQodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gZ2h0KHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9TdXQ6ZSBpbnN0YW5jZW9mIG91dD93dXQ6KG49b3V0KGUpKT8oZT1uLHd1dCk6VHV0KSh0LGUpfWZ1bmN0aW9uIF9odCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24geWh0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gdmh0KHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIGJodCh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24geGh0KHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHdodCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFNodCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gTWh0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24gRWh0KHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmTWh0KHQscikpLG59cmV0dXJuIHIuX3ZhbHVlPWUscn1mdW5jdGlvbiBUaHQodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZTaHQodCxyKSksbn1yZXR1cm4gci5fdmFsdWU9ZSxyfWZ1bmN0aW9uIENodCh0LGUpe3JldHVybiBmdW5jdGlvbigpe2NodCh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gQWh0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtjaHQodGhpcyx0KS5kZWxheT1lfX1mdW5jdGlvbiBraHQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt1aHQodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIExodCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7dWh0KHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gUGh0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3VodCh0aGlzLHQpLmVhc2U9ZX19ZnVuY3Rpb24gTmh0KHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/Y2h0OnVodDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsdCkscz1hLm9uO3MhPT1pJiYocj0oaT1zKS5jb3B5KCkpLm9uKGUsbiksYS5vbj1yfX12YXIgSWh0PWVjdC5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gUmh0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIE9odCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24gemh0KHQsZSxuKXt2YXIgaSxyO2Z1bmN0aW9uIG8oKXt2YXIgbz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PXImJihpPShyPW8pJiZPaHQodCxvLG4pKSxpfXJldHVybiBvLl92YWx1ZT1lLG99ZnVuY3Rpb24gRGh0KHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBCaHQodCl7dmFyIGUsbjtmdW5jdGlvbiBpKCl7dmFyIGk9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1uJiYoZT0obj1pKSYmRGh0KGkpKSxlfXJldHVybiBpLl92YWx1ZT10LGl9dmFyIEhodD0wO2Z1bmN0aW9uIEZodCh0LGUsbixpKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPWl9ZnVuY3Rpb24gVmh0KCl7cmV0dXJuKytIaHR9dmFyIFVodD1lY3QucHJvdG90eXBlO0ZodC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkZodCxzZWxlY3Q6ZnVuY3Rpb24gamh0KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9dGx0KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGwsYz1pW2FdLHU9Yy5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1jW2RdKSYmKGw9dC5jYWxsKHMscy5fX2RhdGFfXyxkLGMpKSYmKCJfX2RhdGFfXyJpbiBzJiYobC5fX2RhdGFfXz1zLl9fZGF0YV9fKSxoW2RdPWwsbGh0KGhbZF0sZSxuLGQsaCxoaHQocyxuKSkpO3JldHVybiBuZXcgRmh0KG8sdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24gR2h0KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bmx0KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPWhodChsLG4pLG09MCxnPXAubGVuZ3RoO208ZzsrK20pKGQ9cFttXSkmJmxodChkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3IEZodChvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIFdodCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9aWx0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBGaHQoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBxaHQodCl7aWYodC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgRmh0KG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIFlodCgpe3JldHVybiBuZXcgSWh0KHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sdHJhbnNpdGlvbjpmdW5jdGlvbiBYaHQoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49Vmh0KCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1oaHQoYSxlKTtsaHQoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyBGaHQoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6VWh0LmNhbGwsbm9kZXM6VWh0Lm5vZGVzLG5vZGU6VWh0Lm5vZGUsc2l6ZTpVaHQuc2l6ZSxlbXB0eTpVaHQuZW1wdHksZWFjaDpVaHQuZWFjaCxvbjpmdW5jdGlvbiAkaHQodCxlKXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2hodCh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goTmh0KG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gS2h0KHQsZSl7dmFyIG49JHN0KHQpLGk9InRyYW5zZm9ybSI9PT1uP0R1dDpnaHQ7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/d2h0OnhodCkobixpLG1odCh0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD95aHQ6X2h0KShuKToobi5sb2NhbD9iaHQ6dmh0KShuLGksZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gWmh0KHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT0kc3QodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoaS5sb2NhbD9FaHQ6VGh0KShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gSmh0KHQsZSxuKXt2YXIgaT0idHJhbnNmb3JtIj09KHQrPSIiKT9PdXQ6Z2h0O3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXZsdCh0aGlzLHQpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksdmx0KHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCxSaHQodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dmx0KHRoaXMsdCkscz1uKHRoaXMpLGw9cysiIjtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksbD1zPXZsdCh0aGlzLHQpKSxhPT09bD9udWxsOmE9PT1pJiZsPT09cj9vOihyPWwsbz1lKGk9YSxzKSl9fSkodCxpLG1odCh0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9dWh0KHRoaXMsdCksYz1sLm9uLHU9bnVsbD09bC52YWx1ZVthXT9vfHwobz1SaHQoZSkpOnZvaWQgMDtjPT09biYmcj09PXV8fChpPShuPWMpLmNvcHkoKSkub24ocyxyPXUpLGwub249aX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXZsdCh0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gUWh0KHQsZSxuKXt2YXIgaT0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oaT10aGlzLnR3ZWVuKGkpKSYmaS5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihpLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihpLHpodCh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gdGR0KHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKG1odCh0aGlzLCJ0ZXh0Iix0KSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0pKG51bGw9PXQ/IiI6dCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24gZWR0KHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxCaHQodCkpfSxyZW1vdmU6ZnVuY3Rpb24gbmR0KCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX0pKHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uIGlkdCh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9aGh0KHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9waHQ6Zmh0KShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiByZHQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9DaHQ6QWh0KShlLHQpKTpoaHQodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIG9kdCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P2todDpMaHQpKGUsdCkpOmhodCh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbiBhZHQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKFBodChlLHQpKTpoaHQodGhpcy5ub2RlKCksZSkuZWFzZX0sZW5kOmZ1bmN0aW9uIHNkdCgpe3ZhciB0LGUsbj10aGlzLGk9bi5faWQscj1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8sYSl7dmFyIHM9e3ZhbHVlOmF9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1yJiZvKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49dWh0KHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciBsZHQ9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOlRmfTtmdW5jdGlvbiBjZHQodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gbGR0LnRpbWU9SnV0KCksbGR0O3JldHVybiBufWZ1bmN0aW9uIHVkdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gaGR0KHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMudHJhbnNmb3JtPW59ZnVuY3Rpb24gZGR0KHQsZSxuKXt0aGlzLms9dCx0aGlzLng9ZSx0aGlzLnk9bn1lY3QucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBwZHQodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtkaHQodGhpcyx0KX0pKX0sZWN0LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIGZkdCh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBGaHQ/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1WaHQoKSwobj1sZHQpLnRpbWU9SnV0KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmbGh0KGEsdCxlLGMscyxufHxjZHQoYSxlKSk7cmV0dXJuIG5ldyBGaHQoaSx0aGlzLl9wYXJlbnRzLHQsZSl9LGRkdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmRkdCxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gMT09PXQ/dGhpczpuZXcgZGR0KHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMD09PXQmMD09PWU/dGhpczpuZXcgZGR0KHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIG1kdD1uZXcgZGR0KDEsMCwwKTtmdW5jdGlvbiBnZHQodCl7cmV0dXJuIHQuX196b29tfHxtZHR9ZnVuY3Rpb24gX2R0KCl7R2x0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHlkdCgpe0dsdC5wcmV2ZW50RGVmYXVsdCgpLEdsdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB2ZHQoKXtyZXR1cm4hR2x0LmJ1dHRvbn1mdW5jdGlvbiBiZHQoKXt2YXIgdCxlLG49dGhpcztyZXR1cm4gbiBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ/KHQ9KG49bi5vd25lclNWR0VsZW1lbnR8fG4pLndpZHRoLmJhc2VWYWwudmFsdWUsZT1uLmhlaWdodC5iYXNlVmFsLnZhbHVlKToodD1uLmNsaWVudFdpZHRoLGU9bi5jbGllbnRIZWlnaHQpLFtbMCwwXSxbdCxlXV19ZnVuY3Rpb24geGR0KCl7cmV0dXJuIHRoaXMuX196b29tfHxtZHR9ZnVuY3Rpb24gd2R0KCl7cmV0dXJuLUdsdC5kZWx0YVkqKEdsdC5kZWx0YU1vZGU/MTIwOjEpLzUwMH1mdW5jdGlvbiBTZHQoKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gTWR0KHQsZSxuKXt2YXIgaT10LmludmVydFgoZVswXVswXSktblswXVswXSxyPXQuaW52ZXJ0WChlWzFdWzBdKS1uWzFdWzBdLG89dC5pbnZlcnRZKGVbMF1bMV0pLW5bMF1bMV0sYT10LmludmVydFkoZVsxXVsxXSktblsxXVsxXTtyZXR1cm4gdC50cmFuc2xhdGUocj5pPyhpK3IpLzI6TWF0aC5taW4oMCxpKXx8TWF0aC5tYXgoMCxyKSxhPm8/KG8rYSkvMjpNYXRoLm1pbigwLG8pfHxNYXRoLm1heCgwLGEpKX1nZHQucHJvdG90eXBlPWRkdC5wcm90b3R5cGU7dmFyIEVkdD1iZShPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCx2ZXJzaW9uOiI0LjEzLjAiLGJpc2VjdDpDTyxiaXNlY3RSaWdodDpDTyxiaXNlY3RMZWZ0OkFPLGFzY2VuZGluZzpNTyxiaXNlY3RvcjpFTyxjcm9zczpmdW5jdGlvbiBUZHQodCxlLG4pe3ZhciBpLHIsbyxhLHM9dC5sZW5ndGgsbD1lLmxlbmd0aCxjPW5ldyBBcnJheShzKmwpO2ZvcihudWxsPT1uJiYobj1rTyksaT1vPTA7aTxzOysraSlmb3IoYT10W2ldLHI9MDtyPGw7KytyLCsrbyljW29dPW4oYSxlW3JdKTtyZXR1cm4gY30sZGVzY2VuZGluZzpmdW5jdGlvbiBDZHQodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59LGRldmlhdGlvbjpOTyxleHRlbnQ6SU8saGlzdG9ncmFtOmZ1bmN0aW9uIEFkdCgpe3ZhciB0PUJPLGU9SU8sbj1XTztmdW5jdGlvbiBpKGkpe3ZhciByLG8sYT1pLmxlbmd0aCxzPW5ldyBBcnJheShhKTtmb3Iocj0wO3I8YTsrK3Ipc1tyXT10KGlbcl0scixpKTt2YXIgbD1lKHMpLGM9bFswXSx1PWxbMV0saD1uKHMsYyx1KTtBcnJheS5pc0FycmF5KGgpfHwoaD1HTyhjLHUsaCksaD1ITyhNYXRoLmNlaWwoYy9oKSpoLE1hdGguZmxvb3IodS9oKSpoLGgpKTtmb3IodmFyIGQ9aC5sZW5ndGg7aFswXTw9YzspaC5zaGlmdCgpLC0tZDtmb3IoO2hbZC0xXT51OyloLnBvcCgpLC0tZDt2YXIgcCxmPW5ldyBBcnJheShkKzEpO2ZvcihyPTA7cjw9ZDsrK3IpKHA9ZltyXT1bXSkueDA9cj4wP2hbci0xXTpjLHAueDE9cjxkP2hbcl06dTtmb3Iocj0wO3I8YTsrK3IpYzw9KG89c1tyXSkmJm88PXUmJmZbQ08oaCxvLDAsZCldLnB1c2goaVtyXSk7cmV0dXJuIGZ9cmV0dXJuIGkudmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpETyhlKSxpKTp0fSxpLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkRPKFt0WzBdLHRbMV1dKSxpKTplfSxpLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP0RPKE9PLmNhbGwodCkpOkRPKHQpLGkpOm59LGl9LHRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXM6ZnVuY3Rpb24ga2R0KHQsZSxuKXtyZXR1cm4gdD16Ty5jYWxsKHQsTE8pLnNvcnQoTU8pLE1hdGguY2VpbCgobi1lKS8oMioocU8odCwuNzUpLXFPKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU2NvdHQ6ZnVuY3Rpb24gTGR0KHQsZSxuKXtyZXR1cm4gTWF0aC5jZWlsKChuLWUpLygzLjUqTk8odCkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU3R1cmdlczpXTyxtYXg6ZnVuY3Rpb24gUGR0KHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJm4+aSYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPmkmJihpPW4pO3JldHVybiBpfSxtZWFuOmZ1bmN0aW9uIE5kdCh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj1pLG89LTEsYT0wO2lmKG51bGw9PWUpZm9yKDsrK288aTspaXNOYU4obj1MTyh0W29dKSk/LS1yOmErPW47ZWxzZSBmb3IoOysrbzxpOylpc05hTihuPUxPKGUodFtvXSxvLHQpKSk/LS1yOmErPW47aWYocilyZXR1cm4gYS9yfSxtZWRpYW46ZnVuY3Rpb24gSWR0KHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPS0xLG89W107aWYobnVsbD09ZSlmb3IoOysrcjxpOylpc05hTihuPUxPKHRbcl0pKXx8by5wdXNoKG4pO2Vsc2UgZm9yKDsrK3I8aTspaXNOYU4obj1MTyhlKHRbcl0scix0KSkpfHxvLnB1c2gobik7cmV0dXJuIHFPKG8uc29ydChNTyksLjUpfSxtZXJnZTpmdW5jdGlvbiBSZHQodCl7Zm9yKHZhciBlLG4saSxyPXQubGVuZ3RoLG89LTEsYT0wOysrbzxyOylhKz10W29dLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSk7LS1yPj0wOylmb3IoZT0oaT10W3JdKS5sZW5ndGg7LS1lPj0wOyluWy0tYV09aVtlXTtyZXR1cm4gbn0sbWluOllPLHBhaXJzOmZ1bmN0aW9uIE9kdCh0LGUpe251bGw9PWUmJihlPWtPKTtmb3IodmFyIG49MCxpPXQubGVuZ3RoLTEscj10WzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT1lKHIscj10Wysrbl0pO3JldHVybiBvfSxwZXJtdXRlOmZ1bmN0aW9uIHpkdCh0LGUpe2Zvcih2YXIgbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKTtuLS07KWlbbl09dFtlW25dXTtyZXR1cm4gaX0scXVhbnRpbGU6cU8scmFuZ2U6SE8sc2NhbjpmdW5jdGlvbiBEZHQodCxlKXtpZihuPXQubGVuZ3RoKXt2YXIgbixpLHI9MCxvPTAsYT10W29dO2ZvcihudWxsPT1lJiYoZT1NTyk7KytyPG47KShlKGk9dFtyXSxhKTwwfHwwIT09ZShhLGEpKSYmKGE9aSxvPXIpO3JldHVybiAwPT09ZShhLGEpP286dm9pZCAwfX0sc2h1ZmZsZTpmdW5jdGlvbiBCZHQodCxlLG4pe2Zvcih2YXIgaSxyLG89KG51bGw9PW4/dC5sZW5ndGg6biktKGU9bnVsbD09ZT8wOitlKTtvOylyPU1hdGgucmFuZG9tKCkqby0tfDAsaT10W28rZV0sdFtvK2VdPXRbcitlXSx0W3IrZV09aTtyZXR1cm4gdH0sc3VtOmZ1bmN0aW9uIEhkdCh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj0tMSxvPTA7aWYobnVsbD09ZSlmb3IoOysrcjxpOykobj0rdFtyXSkmJihvKz1uKTtlbHNlIGZvcig7KytyPGk7KShuPStlKHRbcl0scix0KSkmJihvKz1uKTtyZXR1cm4gb30sdGlja3M6ZnVuY3Rpb24gRmR0KHQsZSxuKXt2YXIgaSxyLG8sYSxzPS0xO2lmKG49K24sKHQ9K3QpPT0oZT0rZSkmJm4+MClyZXR1cm5bdF07aWYoKGk9ZTx0KSYmKHI9dCx0PWUsZT1yKSwwPT09KGE9ak8odCxlLG4pKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxlPU1hdGguZmxvb3IoZS9hKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbChlLXQrMSkpOysrczxyOylvW3NdPSh0K3MpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksZT1NYXRoLmNlaWwoZSphKSxvPW5ldyBBcnJheShyPU1hdGguY2VpbCh0LWUrMSkpOysrczxyOylvW3NdPSh0LXMpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99LHRpY2tJbmNyZW1lbnQ6ak8sdGlja1N0ZXA6R08sdHJhbnNwb3NlOlhPLHZhcmlhbmNlOlBPLHppcDpmdW5jdGlvbiBWZHQoKXtyZXR1cm4gWE8oYXJndW1lbnRzKX0sYXhpc1RvcDpmdW5jdGlvbiBVZHQodCl7cmV0dXJuIHJ6KDEsdCl9LGF4aXNSaWdodDpmdW5jdGlvbiBqZHQodCl7cmV0dXJuIHJ6KDIsdCl9LGF4aXNCb3R0b206ZnVuY3Rpb24gR2R0KHQpe3JldHVybiByeigzLHQpfSxheGlzTGVmdDpmdW5jdGlvbiBXZHQodCl7cmV0dXJuIHJ6KDQsdCl9LGJydXNoOmZ1bmN0aW9uIHFkdCgpe3JldHVybiBLRihIRil9LGJydXNoWDpmdW5jdGlvbiBZZHQoKXtyZXR1cm4gS0YoREYpfSxicnVzaFk6ZnVuY3Rpb24gWGR0KCl7cmV0dXJuIEtGKEJGKX0sYnJ1c2hTZWxlY3Rpb246ZnVuY3Rpb24gJGR0KHQpe3ZhciBlPXQuX19icnVzaDtyZXR1cm4gZT9lLmRpbS5vdXRwdXQoZS5zZWxlY3Rpb24pOm51bGx9LGNob3JkOmZ1bmN0aW9uIEtkdCgpe3ZhciB0PTAsZT1udWxsLG49bnVsbCxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHMsbCxjLHUsaD1yLmxlbmd0aCxkPVtdLHA9SkYoaCksZj1bXSxtPVtdLGc9bS5ncm91cHM9bmV3IEFycmF5KGgpLF89bmV3IEFycmF5KGgqaCk7Zm9yKG89MCxjPS0xOysrYzxoOyl7Zm9yKGE9MCx1PS0xOysrdTxoOylhKz1yW2NdW3VdO2QucHVzaChhKSxmLnB1c2goSkYoaCkpLG8rPWF9Zm9yKGUmJnAuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShkW3RdLGRbbl0pfSkpLG4mJmYuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIG4ocltlXVt0XSxyW2VdW2ldKX0pKX0pKSxsPShvPW9WKDAsclYtdCpoKS9vKT90OnJWL2gsYT0wLGM9LTE7KytjPGg7KXtmb3Iocz1hLHU9LTE7Kyt1PGg7KXt2YXIgeT1wW2NdLHY9Zlt5XVt1XSxiPXJbeV1bdl0seD1hLHc9YSs9YipvO19bdipoK3ldPXtpbmRleDp5LHN1YmluZGV4OnYsc3RhcnRBbmdsZTp4LGVuZEFuZ2xlOncsdmFsdWU6Yn19Z1t5XT17aW5kZXg6eSxzdGFydEFuZ2xlOnMsZW5kQW5nbGU6YSx2YWx1ZTpkW3ldfSxhKz1sfWZvcihjPS0xOysrYzxoOylmb3IodT1jLTE7Kyt1PGg7KXt2YXIgUz1fW3UqaCtjXSxNPV9bYypoK3VdOyhTLnZhbHVlfHxNLnZhbHVlKSYmbS5wdXNoKFMudmFsdWU8TS52YWx1ZT97c291cmNlOk0sdGFyZ2V0OlN9Ontzb3VyY2U6Uyx0YXJnZXQ6TX0pfXJldHVybiBpP20uc29ydChpKTptfXJldHVybiByLnBhZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW9WKDAsZSkscik6dH0sci5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQscik6ZX0sci5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscik6bn0sci5zb3J0Q2hvcmRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bnVsbDooaT1hVih0KSkuXz10LHIpOmkmJmkuX30scn0scmliYm9uOmZ1bmN0aW9uIFpkdCgpe3ZhciB0PW1WLGU9Z1Ysbj1fVixpPXlWLHI9dlYsbz1udWxsO2Z1bmN0aW9uIGEoKXt2YXIgYSxzPXNWLmNhbGwoYXJndW1lbnRzKSxsPXQuYXBwbHkodGhpcyxzKSxjPWUuYXBwbHkodGhpcyxzKSx1PStuLmFwcGx5KHRoaXMsKHNbMF09bCxzKSksaD1pLmFwcGx5KHRoaXMscyktaVYsZD1yLmFwcGx5KHRoaXMscyktaVYscD11KnRWKGgpLGY9dSplVihoKSxtPStuLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksZz1pLmFwcGx5KHRoaXMscyktaVYsXz1yLmFwcGx5KHRoaXMscyktaVY7aWYob3x8KG89YT1mVigpKSxvLm1vdmVUbyhwLGYpLG8uYXJjKDAsMCx1LGgsZCksaD09PWcmJmQ9PT1ffHwoby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxtKnRWKGcpLG0qZVYoZykpLG8uYXJjKDAsMCxtLGcsXykpLG8ucXVhZHJhdGljQ3VydmVUbygwLDAscCxmKSxvLmNsb3NlUGF0aCgpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmxWKCt0KSxhKTpufSxhLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsVigrdCksYSk6aX0sYS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmxWKCt0KSxhKTpyfSxhLnNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGEpOnR9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PXQ/bnVsbDp0LGEpOm99LGF9LG5lc3Q6ZnVuY3Rpb24gSmR0KCl7dmFyIHQsZSxuLGk9W10scj1bXTtmdW5jdGlvbiBvKG4scixhLHMpe2lmKHI+PWkubGVuZ3RoKXJldHVybiBudWxsIT10JiZuLnNvcnQodCksbnVsbCE9ZT9lKG4pOm47Zm9yKHZhciBsLGMsdSxoPS0xLGQ9bi5sZW5ndGgscD1pW3IrK10sZj13VigpLG09YSgpOysraDxkOykodT1mLmdldChsPXAoYz1uW2hdKSsiIikpP3UucHVzaChjKTpmLnNldChsLFtjXSk7cmV0dXJuIGYuZWFjaCgoZnVuY3Rpb24odCxlKXtzKG0sZSxvKHQscixhLHMpKX0pKSxtfWZ1bmN0aW9uIGEodCxuKXtpZigrK24+aS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG8scz1yW24tMV07cmV0dXJuIG51bGwhPWUmJm4+PWkubGVuZ3RoP289dC5lbnRyaWVzKCk6KG89W10sdC5lYWNoKChmdW5jdGlvbih0LGUpe28ucHVzaCh7a2V5OmUsdmFsdWVzOmEodCxuKX0pfSkpKSxudWxsIT1zP28uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LmtleSxlLmtleSl9KSk6b31yZXR1cm4gbj17b2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCxTVixNVil9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAsRVYsVFYpfSxlbnRyaWVzOmZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCwwLEVWLFRWKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiBpLnB1c2godCksbn0sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIHJbaS5sZW5ndGgtMV09dCxufSxzb3J0VmFsdWVzOmZ1bmN0aW9uKGUpe3JldHVybiB0PWUsbn0scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBlPXQsbn19fSxzZXQ6a1YsbWFwOndWLGtleXM6ZnVuY3Rpb24gUWR0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uIHRwdCh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2godFtuXSk7cmV0dXJuIGV9LGVudHJpZXM6ZnVuY3Rpb24gZXB0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh7a2V5Om4sdmFsdWU6dFtuXX0pO3JldHVybiBlfSxjb2xvcjpZVixyZ2I6WlYsaHNsOmVVLGxhYjpkVSxoY2w6dlUsY3ViZWhlbGl4OkVVLGRpc3BhdGNoOkFVLGRyYWc6ZnVuY3Rpb24gbnB0KCl7dmFyIHQsZSxuLGkscj1pRyxvPXJHLGE9b0cscz1hRyxsPXt9LGM9UlUoInN0YXJ0IiwiZHJhZyIsImVuZCIpLHU9MCxoPTA7ZnVuY3Rpb24gZCh0KXt0Lm9uKCJtb3VzZWRvd24uZHJhZyIscCkuZmlsdGVyKHMpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLGcpLm9uKCJ0b3VjaG1vdmUuZHJhZyIsXykub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIseSkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIHAoKXtpZighaSYmci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBhPXYoIm1vdXNlIixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwkaix0aGlzLGFyZ3VtZW50cyk7YSYmKHFqKFJqLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyIsZiwhMCkub24oIm1vdXNldXAuZHJhZyIsbSwhMCksUWooUmoudmlldyksWmooKSxuPSExLHQ9UmouY2xpZW50WCxlPVJqLmNsaWVudFksYSgic3RhcnQiKSl9fWZ1bmN0aW9uIGYoKXtpZihKaigpLCFuKXt2YXIgaT1Sai5jbGllbnRYLXQscj1Sai5jbGllbnRZLWU7bj1pKmkrcipyPmh9bC5tb3VzZSgiZHJhZyIpfWZ1bmN0aW9uIG0oKXtxaihSai52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnIixudWxsKSx0RyhSai52aWV3LG4pLEpqKCksbC5tb3VzZSgiZW5kIil9ZnVuY3Rpb24gZygpe2lmKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdCxlLG49UmouY2hhbmdlZFRvdWNoZXMsaT1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPW4ubGVuZ3RoO2Zvcih0PTA7dDxhOysrdCkoZT12KG5bdF0uaWRlbnRpZmllcixpLEtqLHRoaXMsYXJndW1lbnRzKSkmJihaaigpLGUoInN0YXJ0IikpfX1mdW5jdGlvbiBfKCl7dmFyIHQsZSxuPVJqLmNoYW5nZWRUb3VjaGVzLGk9bi5sZW5ndGg7Zm9yKHQ9MDt0PGk7Kyt0KShlPWxbblt0XS5pZGVudGlmaWVyXSkmJihKaigpLGUoImRyYWciKSl9ZnVuY3Rpb24geSgpe3ZhciB0LGUsbj1Sai5jaGFuZ2VkVG91Y2hlcyxyPW4ubGVuZ3RoO2ZvcihpJiZjbGVhclRpbWVvdXQoaSksaT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2k9bnVsbH0pLDUwMCksdD0wO3Q8cjsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKFpqKCksZSgiZW5kIikpfWZ1bmN0aW9uIHYodCxlLG4saSxyKXt2YXIgbyxzLGgscD1uKGUsdCksZj1jLmNvcHkoKTtpZihGaihuZXcgbkcoZCwiYmVmb3Jlc3RhcnQiLG8sdCx1LHBbMF0scFsxXSwwLDAsZiksKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPShSai5zdWJqZWN0PW89YS5hcHBseShpLHIpKSYmKHM9by54LXBbMF18fDAsaD1vLnktcFsxXXx8MCwhMCl9KSkpcmV0dXJuIGZ1bmN0aW9uIGEoYyl7dmFyIG0sZz1wO3N3aXRjaChjKXtjYXNlInN0YXJ0IjpsW3RdPWEsbT11Kys7YnJlYWs7Y2FzZSJlbmQiOmRlbGV0ZSBsW3RdLC0tdTtjYXNlImRyYWciOnA9bihlLHQpLG09dX1GaihuZXcgbkcoZCxjLG8sdCxtLHBbMF0rcyxwWzFdK2gscFswXS1nWzBdLHBbMV0tZ1sxXSxmKSxmLmFwcGx5LGYsW2MsaSxyXSl9fXJldHVybiBkLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmVHKCEhdCksZCk6cn0sZC5jb250YWluZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplRyh0KSxkKTpvfSxkLnN1YmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDplRyh0KSxkKTphfSxkLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmVHKCEhdCksZCk6c30sZC5vbj1mdW5jdGlvbigpe3ZhciB0PWMub24uYXBwbHkoYyxhcmd1bWVudHMpO3JldHVybiB0PT09Yz9kOnR9LGQuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0odD0rdCkqdCxkKTpNYXRoLnNxcnQoaCl9LGR9LGRyYWdEaXNhYmxlOlFqLGRyYWdFbmFibGU6dEcsZHN2Rm9ybWF0OlZHLGNzdlBhcnNlOmpHLGNzdlBhcnNlUm93czpHRyxjc3ZGb3JtYXQ6V0csY3N2Rm9ybWF0Um93czpxRyx0c3ZQYXJzZTpYRyx0c3ZQYXJzZVJvd3M6JEcsdHN2Rm9ybWF0OktHLHRzdkZvcm1hdFJvd3M6WkcsZWFzZUxpbmVhcjpmdW5jdGlvbiBpcHQodCl7cmV0dXJuK3R9LGVhc2VRdWFkOkpHLGVhc2VRdWFkSW46ZnVuY3Rpb24gcnB0KHQpe3JldHVybiB0KnR9LGVhc2VRdWFkT3V0OmZ1bmN0aW9uIG9wdCh0KXtyZXR1cm4gdCooMi10KX0sZWFzZVF1YWRJbk91dDpKRyxlYXNlQ3ViaWM6UUcsZWFzZUN1YmljSW46ZnVuY3Rpb24gYXB0KHQpe3JldHVybiB0KnQqdH0sZWFzZUN1YmljT3V0OmZ1bmN0aW9uIHNwdCh0KXtyZXR1cm4tLXQqdCp0KzF9LGVhc2VDdWJpY0luT3V0OlFHLGVhc2VQb2x5Om5XLGVhc2VQb2x5SW46dFcsZWFzZVBvbHlPdXQ6ZVcsZWFzZVBvbHlJbk91dDpuVyxlYXNlU2luOm9XLGVhc2VTaW5JbjpmdW5jdGlvbiBscHQodCl7cmV0dXJuIDEtTWF0aC5jb3ModCpyVyl9LGVhc2VTaW5PdXQ6ZnVuY3Rpb24gY3B0KHQpe3JldHVybiBNYXRoLnNpbih0KnJXKX0sZWFzZVNpbkluT3V0Om9XLGVhc2VFeHA6YVcsZWFzZUV4cEluOmZ1bmN0aW9uIHVwdCh0KXtyZXR1cm4gTWF0aC5wb3coMiwxMCp0LTEwKX0sZWFzZUV4cE91dDpmdW5jdGlvbiBocHQodCl7cmV0dXJuIDEtTWF0aC5wb3coMiwtMTAqdCl9LGVhc2VFeHBJbk91dDphVyxlYXNlQ2lyY2xlOnNXLGVhc2VDaXJjbGVJbjpmdW5jdGlvbiBkcHQodCl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtdCp0KX0sZWFzZUNpcmNsZU91dDpmdW5jdGlvbiBwcHQodCl7cmV0dXJuIE1hdGguc3FydCgxLSAtLXQqdCl9LGVhc2VDaXJjbGVJbk91dDpzVyxlYXNlQm91bmNlOmNXLGVhc2VCb3VuY2VJbjpmdW5jdGlvbiBmcHQodCl7cmV0dXJuIDEtY1coMS10KX0sZWFzZUJvdW5jZU91dDpjVyxlYXNlQm91bmNlSW5PdXQ6ZnVuY3Rpb24gbXB0KHQpe3JldHVybigodCo9Mik8PTE/MS1jVygxLXQpOmNXKHQtMSkrMSkvMn0sZWFzZUJhY2s6cFcsZWFzZUJhY2tJbjpoVyxlYXNlQmFja091dDpkVyxlYXNlQmFja0luT3V0OnBXLGVhc2VFbGFzdGljOmdXLGVhc2VFbGFzdGljSW46bVcsZWFzZUVsYXN0aWNPdXQ6Z1csZWFzZUVsYXN0aWNJbk91dDpfVyxmb3JjZUNlbnRlcjpmdW5jdGlvbiBncHQodCxlKXt2YXIgbjtmdW5jdGlvbiBpKCl7dmFyIGkscixvPW4ubGVuZ3RoLGE9MCxzPTA7Zm9yKGk9MDtpPG87KytpKWErPShyPW5baV0pLngscys9ci55O2ZvcihhPWEvby10LHM9cy9vLWUsaT0wO2k8bzsrK2kpKHI9bltpXSkueC09YSxyLnktPXN9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PWUmJihlPTApLGkuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtuPXR9LGkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sZm9yY2VDb2xsaWRlOmZ1bmN0aW9uIF9wdCh0KXt2YXIgZSxuLGk9MSxyPTE7ZnVuY3Rpb24gbygpe2Zvcih2YXIgdCxvLHMsbCxjLHUsaCxkPWUubGVuZ3RoLHA9MDtwPHI7KytwKWZvcihvPU1XKGUsQVcsa1cpLnZpc2l0QWZ0ZXIoYSksdD0wO3Q8ZDsrK3QpaD0odT1uWyhzPWVbdF0pLmluZGV4XSkqdSxsPXMueCtzLnZ4LGM9cy55K3Mudnksby52aXNpdChmKTtmdW5jdGlvbiBmKHQsZSxuLHIsbyl7dmFyIGE9dC5kYXRhLGQ9dC5yLHA9dStkO2lmKCFhKXJldHVybiBlPmwrcHx8cjxsLXB8fG4+YytwfHxvPGMtcDtpZihhLmluZGV4PnMuaW5kZXgpe3ZhciBmPWwtYS54LWEudngsbT1jLWEueS1hLnZ5LGc9ZipmK20qbTtnPHAqcCYmKDA9PT1mJiYoZys9KGY9dlcoKSkqZiksMD09PW0mJihnKz0obT12VygpKSptKSxnPShwLShnPU1hdGguc3FydChnKSkpL2cqaSxzLnZ4Kz0oZio9ZykqKHA9KGQqPWQpLyhoK2QpKSxzLnZ5Kz0obSo9ZykqcCxhLnZ4LT1mKihwPTEtcCksYS52eS09bSpwKX19fWZ1bmN0aW9uIGEodCl7aWYodC5kYXRhKXJldHVybiB0LnI9blt0LmRhdGEuaW5kZXhdO2Zvcih2YXIgZT10LnI9MDtlPDQ7KytlKXRbZV0mJnRbZV0ucj50LnImJih0LnI9dFtlXS5yKX1mdW5jdGlvbiBzKCl7aWYoZSl7dmFyIGkscixvPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShvKSxpPTA7aTxvOysraSluWyhyPWVbaV0pLmluZGV4XT0rdChyLGksZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD15VyhudWxsPT10PzE6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LHMoKX0sby5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG8pOnJ9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3Qsbyk6aX0sby5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp5VygrZSkscygpLG8pOnR9LG99LGZvcmNlTGluazpmdW5jdGlvbiB5cHQodCl7dmFyIGUsbixpLHIsbyxhPSRXLHM9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gMS9NYXRoLm1pbihyW3Quc291cmNlLmluZGV4XSxyW3QudGFyZ2V0LmluZGV4XSl9LGM9eVcoMzApLHU9MTtmdW5jdGlvbiBoKGkpe2Zvcih2YXIgcj0wLGE9dC5sZW5ndGg7cjx1Oysrcilmb3IodmFyIHMsbCxjLGgsZCxwLGYsbT0wO208YTsrK20paD0oYz0ocz10W21dKS50YXJnZXQpLngrYy52eC0obD1zLnNvdXJjZSkueC1sLnZ4fHx2VygpLGQ9Yy55K2MudnktbC55LWwudnl8fHZXKCksZCo9cD0oKHA9TWF0aC5zcXJ0KGgqaCtkKmQpKS1uW21dKS9wKmkqZVttXSxjLnZ4LT0oaCo9cCkqKGY9b1ttXSksYy52eS09ZCpmLGwudngrPWgqKGY9MS1mKSxsLnZ5Kz1kKmZ9ZnVuY3Rpb24gZCgpe2lmKGkpe3ZhciBzLGwsYz1pLmxlbmd0aCx1PXQubGVuZ3RoLGg9cVcoaSxhKTtmb3Iocz0wLHI9bmV3IEFycmF5KGMpO3M8dTsrK3MpKGw9dFtzXSkuaW5kZXg9cywib2JqZWN0IiE9dHlwZW9mIGwuc291cmNlJiYobC5zb3VyY2U9S1coaCxsLnNvdXJjZSkpLCJvYmplY3QiIT10eXBlb2YgbC50YXJnZXQmJihsLnRhcmdldD1LVyhoLGwudGFyZ2V0KSkscltsLnNvdXJjZS5pbmRleF09KHJbbC5zb3VyY2UuaW5kZXhdfHwwKSsxLHJbbC50YXJnZXQuaW5kZXhdPShyW2wudGFyZ2V0LmluZGV4XXx8MCkrMTtmb3Iocz0wLG89bmV3IEFycmF5KHUpO3M8dTsrK3Mpb1tzXT1yWyhsPXRbc10pLnNvdXJjZS5pbmRleF0vKHJbbC5zb3VyY2UuaW5kZXhdK3JbbC50YXJnZXQuaW5kZXhdKTtlPW5ldyBBcnJheSh1KSxwKCksbj1uZXcgQXJyYXkodSksZigpfX1mdW5jdGlvbiBwKCl7aWYoaSlmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjsrK24pZVtuXT0rcyh0W25dLG4sdCl9ZnVuY3Rpb24gZigpe2lmKGkpZm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7KytlKW5bZV09K2ModFtlXSxlLHQpfXJldHVybiBudWxsPT10JiYodD1bXSksaC5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2k9dCxkKCl9LGgubGlua3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxkKCksaCk6dH0saC5pZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LGgpOmF9LGguaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rdCxoKTp1fSxoLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eVcoK3QpLHAoKSxoKTpzfSxoLmRpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eVcoK3QpLGYoKSxoKTpjfSxofSxmb3JjZU1hbnlCb2R5OmZ1bmN0aW9uIHZwdCgpe3ZhciB0LGUsbixpLHI9eVcoLTMwKSxvPTEsYT0xLzAscz0uODE7ZnVuY3Rpb24gbChpKXt2YXIgcixvPXQubGVuZ3RoLGE9TVcodCxicSx4cSkudmlzaXRBZnRlcih1KTtmb3Iobj1pLHI9MDtyPG87KytyKWU9dFtyXSxhLnZpc2l0KGgpfWZ1bmN0aW9uIGMoKXtpZih0KXt2YXIgZSxuLG89dC5sZW5ndGg7Zm9yKGk9bmV3IEFycmF5KG8pLGU9MDtlPG87KytlKWlbKG49dFtlXSkuaW5kZXhdPStyKG4sZSx0KX19ZnVuY3Rpb24gdSh0KXt2YXIgZSxuLHIsbyxhLHM9MCxsPTA7aWYodC5sZW5ndGgpe2ZvcihyPW89YT0wO2E8NDsrK2EpKGU9dFthXSkmJihuPU1hdGguYWJzKGUudmFsdWUpKSYmKHMrPWUudmFsdWUsbCs9bixyKz1uKmUueCxvKz1uKmUueSk7dC54PXIvbCx0Lnk9by9sfWVsc2V7KGU9dCkueD1lLmRhdGEueCxlLnk9ZS5kYXRhLnk7ZG97cys9aVtlLmRhdGEuaW5kZXhdfXdoaWxlKGU9ZS5uZXh0KX10LnZhbHVlPXN9ZnVuY3Rpb24gaCh0LHIsbCxjKXtpZighdC52YWx1ZSlyZXR1cm4hMDt2YXIgdT10LngtZS54LGg9dC55LWUueSxkPWMtcixwPXUqdStoKmg7aWYoZCpkL3M8cClyZXR1cm4gcDxhJiYoMD09PXUmJihwKz0odT12VygpKSp1KSwwPT09aCYmKHArPShoPXZXKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpLGUudngrPXUqdC52YWx1ZSpuL3AsZS52eSs9aCp0LnZhbHVlKm4vcCksITA7aWYoISh0Lmxlbmd0aHx8cD49YSkpeyh0LmRhdGEhPT1lfHx0Lm5leHQpJiYoMD09PXUmJihwKz0odT12VygpKSp1KSwwPT09aCYmKHArPShoPXZXKCkpKmgpLHA8byYmKHA9TWF0aC5zcXJ0KG8qcCkpKTtkb3t0LmRhdGEhPT1lJiYoZS52eCs9dSooZD1pW3QuZGF0YS5pbmRleF0qbi9wKSxlLnZ5Kz1oKmQpfXdoaWxlKHQ9dC5uZXh0KX19cmV0dXJuIGwuaW5pdGlhbGl6ZT1mdW5jdGlvbihlKXt0PWUsYygpfSxsLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eVcoK3QpLGMoKSxsKTpyfSxsLmRpc3RhbmNlTWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQqdCxsKTpNYXRoLnNxcnQobyl9LGwuZGlzdGFuY2VNYXg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCp0LGwpOk1hdGguc3FydChhKX0sbC50aGV0YT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10KnQsbCk6TWF0aC5zcXJ0KHMpfSxsfSxmb3JjZVJhZGlhbDpmdW5jdGlvbiBicHQodCxlLG4pe3ZhciBpLHIsbyxhPXlXKC4xKTtmdW5jdGlvbiBzKHQpe2Zvcih2YXIgYT0wLHM9aS5sZW5ndGg7YTxzOysrYSl7dmFyIGw9aVthXSxjPWwueC1lfHwxZS02LHU9bC55LW58fDFlLTYsaD1NYXRoLnNxcnQoYypjK3UqdSksZD0ob1thXS1oKSpyW2FdKnQvaDtsLnZ4Kz1jKmQsbC52eSs9dSpkfX1mdW5jdGlvbiBsKCl7aWYoaSl7dmFyIGUsbj1pLmxlbmd0aDtmb3Iocj1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobiksZT0wO2U8bjsrK2Upb1tlXT0rdChpW2VdLGUsaSkscltlXT1pc05hTihvW2VdKT8wOithKGlbZV0sZSxpKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXlXKCt0KSksbnVsbD09ZSYmKGU9MCksbnVsbD09biYmKG49MCkscy5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2k9dCxsKCl9LHMuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp5VygrdCksbCgpLHMpOmF9LHMucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6eVcoK2UpLGwoKSxzKTp0fSxzLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qscyk6ZX0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHMpOm59LHN9LGZvcmNlU2ltdWxhdGlvbjpmdW5jdGlvbiB4cHQodCl7dmFyIGUsbj0xLGk9LjAwMSxyPTEtTWF0aC5wb3coaSwxLzMwMCksbz0wLGE9LjYscz1xVygpLGw9Z3EodSksYz1KVygidGljayIsImVuZCIpO2Z1bmN0aW9uIHUoKXtoKCksYy5jYWxsKCJ0aWNrIixlKSxuPGkmJihsLnN0b3AoKSxjLmNhbGwoImVuZCIsZSkpfWZ1bmN0aW9uIGgoKXt2YXIgZSxpLGw9dC5sZW5ndGg7Zm9yKG4rPShvLW4pKnIscy5lYWNoKChmdW5jdGlvbih0KXt0KG4pfSkpLGU9MDtlPGw7KytlKW51bGw9PShpPXRbZV0pLmZ4P2kueCs9aS52eCo9YTooaS54PWkuZngsaS52eD0wKSxudWxsPT1pLmZ5P2kueSs9aS52eSo9YTooaS55PWkuZnksaS52eT0wKX1mdW5jdGlvbiBkKCl7Zm9yKHZhciBlLG49MCxpPXQubGVuZ3RoO248aTsrK24pe2lmKChlPXRbbl0pLmluZGV4PW4saXNOYU4oZS54KXx8aXNOYU4oZS55KSl7dmFyIHI9MTAqTWF0aC5zcXJ0KG4pLG89bipTcTtlLng9cipNYXRoLmNvcyhvKSxlLnk9cipNYXRoLnNpbihvKX0oaXNOYU4oZS52eCl8fGlzTmFOKGUudnkpKSYmKGUudng9ZS52eT0wKX19ZnVuY3Rpb24gcChlKXtyZXR1cm4gZS5pbml0aWFsaXplJiZlLmluaXRpYWxpemUodCksZX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGQoKSxlPXt0aWNrOmgscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBsLnJlc3RhcnQodSksZX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBsLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGQoKSxzLmVhY2gocCksZSk6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsZSk6bn0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsZSk6aX0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxlKTorcn0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsZSk6b30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0xLXQsZSk6MS1hfSxmb3JjZTpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PW4/cy5yZW1vdmUodCk6cy5zZXQodCxwKG4pKSxlKTpzLmdldCh0KX0sZmluZDpmdW5jdGlvbihlLG4saSl7dmFyIHIsbyxhLHMsbCxjPTAsdT10Lmxlbmd0aDtmb3IobnVsbD09aT9pPTEvMDppKj1pLGM9MDtjPHU7KytjKShhPShyPWUtKHM9dFtjXSkueCkqcisobz1uLXMueSkqbyk8aSYmKGw9cyxpPWEpO3JldHVybiBsfSxvbjpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KGMub24odCxuKSxlKTpjLm9uKHQpfX19LGZvcmNlWDpmdW5jdGlvbiB3cHQodCl7dmFyIGUsbixpLHI9eVcoLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciByLG89MCxhPWUubGVuZ3RoO288YTsrK28pKHI9ZVtvXSkudngrPShpW29dLXIueCkqbltvXSp0fWZ1bmN0aW9uIGEoKXtpZihlKXt2YXIgbyxhPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKSxpPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyluW29dPWlzTmFOKGlbb109K3QoZVtvXSxvLGUpKT8wOityKGVbb10sbyxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXlXKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eVcoK3QpLGEoKSxvKTpyfSxvLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp5VygrZSksYSgpLG8pOnR9LG99LGZvcmNlWTpmdW5jdGlvbiBTcHQodCl7dmFyIGUsbixpLHI9eVcoLjEpO2Z1bmN0aW9uIG8odCl7Zm9yKHZhciByLG89MCxhPWUubGVuZ3RoO288YTsrK28pKHI9ZVtvXSkudnkrPShpW29dLXIueSkqbltvXSp0fWZ1bmN0aW9uIGEoKXtpZihlKXt2YXIgbyxhPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKSxpPW5ldyBBcnJheShhKSxvPTA7bzxhOysrbyluW29dPWlzTmFOKGlbb109K3QoZVtvXSxvLGUpKT8wOityKGVbb10sbyxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXlXKG51bGw9PXQ/MDordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6eVcoK3QpLGEoKSxvKTpyfSxvLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp5VygrZSksYSgpLG8pOnR9LG99LGZvcm1hdERlZmF1bHRMb2NhbGU6SHEsZ2V0IGZvcm1hdCgpe3JldHVybiBPcX0sZ2V0IGZvcm1hdFByZWZpeCgpe3JldHVybiB6cX0sZm9ybWF0TG9jYWxlOkJxLGZvcm1hdFNwZWNpZmllcjpQcSxwcmVjaXNpb25GaXhlZDpmdW5jdGlvbiBNcHQodCl7cmV0dXJuIE1hdGgubWF4KDAsLUVxKE1hdGguYWJzKHQpKSl9LHByZWNpc2lvblByZWZpeDpmdW5jdGlvbiBFcHQodCxlKXtyZXR1cm4gTWF0aC5tYXgoMCwzKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihFcShlKS8zKSkpLUVxKE1hdGguYWJzKHQpKSl9LHByZWNpc2lvblJvdW5kOmZ1bmN0aW9uIFRwdCh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLEVxKGUpLUVxKHQpKSsxfSxnZW9BcmVhOmZ1bmN0aW9uIENwdCh0KXtyZXR1cm4gRVkucmVzZXQoKSx5WSh0LFRZKSwyKkVZfSxnZW9Cb3VuZHM6ZnVuY3Rpb24gQXB0KHQpe3ZhciBlLG4saSxyLG8sYSxzO2lmKFZZPUZZPS0oQlk9SFk9MS8wKSxxWT1bXSx5WSh0LGhYKSxuPXFZLmxlbmd0aCl7Zm9yKHFZLnNvcnQoYlgpLGU9MSxvPVtpPXFZWzBdXTtlPG47KytlKXhYKGksKHI9cVlbZV0pWzBdKXx8eFgoaSxyWzFdKT8odlgoaVswXSxyWzFdKT52WChpWzBdLGlbMV0pJiYoaVsxXT1yWzFdKSx2WChyWzBdLGlbMV0pPnZYKGlbMF0saVsxXSkmJihpWzBdPXJbMF0pKTpvLnB1c2goaT1yKTtmb3IoYT0tMS8wLGU9MCxpPW9bbj1vLmxlbmd0aC0xXTtlPD1uO2k9ciwrK2UpKHM9dlgoaVsxXSwocj1vW2VdKVswXSkpPmEmJihhPXMsQlk9clswXSxGWT1pWzFdKX1yZXR1cm4gcVk9WVk9bnVsbCxCWT09PTEvMHx8SFk9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbQlksSFldLFtGWSxWWV1dfSxnZW9DZW50cm9pZDpmdW5jdGlvbiBrcHQodCl7WFk9JFk9S1k9Wlk9Slk9UVk9dFg9ZVg9blg9aVg9clg9MCx5WSh0LHdYKTt2YXIgZT1uWCxuPWlYLGk9clgscj1lKmUrbipuK2kqaTtyZXR1cm4gcjwxZS0xMiYmKGU9UVksbj10WCxpPWVYLCRZPEdxJiYoZT1LWSxuPVpZLGk9SlkpLChyPWUqZStuKm4raSppKTwxZS0xMik/W05hTixOYU5dOltRcShuLGUpKiRxLHVZKGkvc1kocikpKiRxXX0sZ2VvQ2lyY2xlOmZ1bmN0aW9uIExwdCgpe3ZhciB0LGUsbj1JWChbMCwwXSksaT1JWCg5MCkscj1JWCg2KSxvPXtwb2ludDpmdW5jdGlvbiBhKG4saSl7dC5wdXNoKG49ZShuLGkpKSxuWzBdKj0kcSxuWzFdKj0kcX19O2Z1bmN0aW9uIHMoKXt2YXIgYT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxzPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpKktxLGw9ci5hcHBseSh0aGlzLGFyZ3VtZW50cykqS3E7cmV0dXJuIHQ9W10sZT16WCgtYVswXSpLcSwtYVsxXSpLcSwwKS5pbnZlcnQsVlgobyxzLGwsMSksYT17dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3RdfSx0PWU9bnVsbCxhfXJldHVybiBzLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OklYKFsrdFswXSwrdFsxXV0pLHMpOm59LHMucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SVgoK3QpLHMpOml9LHMucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SVgoK3QpLHMpOnJ9LHN9LGdlb0NsaXBBbnRpbWVyaWRpYW46aSQsZ2VvQ2xpcENpcmNsZTphJCxnZW9DbGlwRXh0ZW50OmZ1bmN0aW9uIFBwdCgpe3ZhciB0LGUsbixpPTAscj0wLG89OTYwLGE9NTAwO3JldHVybiBuPXtzdHJlYW06ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD1jJChpLHIsbyxhKShlPW4pfSxleHRlbnQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3NbMF1bMF0scj0rc1swXVsxXSxvPStzWzFdWzBdLGE9K3NbMV1bMV0sdD1lPW51bGwsbik6W1tpLHJdLFtvLGFdXX19fSxnZW9DbGlwUmVjdGFuZ2xlOmMkLGdlb0NvbnRhaW5zOmZ1bmN0aW9uIE5wdCh0LGUpe3JldHVybih0JiZTJC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP1MkW3QudHlwZV06RSQpKHQsZSl9LGdlb0Rpc3RhbmNlOnckLGdlb0dyYXRpY3VsZTpJJCxnZW9HcmF0aWN1bGUxMDpmdW5jdGlvbiBJcHQoKXtyZXR1cm4gSSQoKSgpfSxnZW9JbnRlcnBvbGF0ZTpmdW5jdGlvbiBScHQodCxlKXt2YXIgbj10WzBdKktxLGk9dFsxXSpLcSxyPWVbMF0qS3Esbz1lWzFdKktxLGE9dFkoaSkscz1vWShpKSxsPXRZKG8pLGM9b1kobyksdT1hKnRZKG4pLGg9YSpvWShuKSxkPWwqdFkocikscD1sKm9ZKHIpLGY9Mip1WShzWShoWShvLWkpK2EqbCpoWShyLW4pKSksbT1vWShmKSxnPWY/ZnVuY3Rpb24odCl7dmFyIGU9b1kodCo9ZikvbSxuPW9ZKGYtdCkvbSxpPW4qdStlKmQscj1uKmgrZSpwLG89bipzK2UqYztyZXR1cm5bUXEocixpKSokcSxRcShvLHNZKGkqaStyKnIpKSokcV19OmZ1bmN0aW9uKCl7cmV0dXJuW24qJHEsaSokcV19O3JldHVybiBnLmRpc3RhbmNlPWYsZ30sZ2VvTGVuZ3RoOnYkLGdlb1BhdGg6ZnVuY3Rpb24gT3B0KHQsZSl7dmFyIG4saSxyPTQuNTtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiYoImZ1bmN0aW9uIj09dHlwZW9mIHImJmkucG9pbnRSYWRpdXMoK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSx5WSh0LG4oaSkpKSxpLnJlc3VsdCgpfXJldHVybiBvLmFyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIHlZKHQsbihWJCkpLFYkLnJlc3VsdCgpfSxvLm1lYXN1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIHlZKHQsbihBSykpLEFLLnJlc3VsdCgpfSxvLmJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4geVkodCxuKHRLKSksdEsucmVzdWx0KCl9LG8uY2VudHJvaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHlZKHQsbihoSykpLGhLLnJlc3VsdCgpfSxvLnByb2plY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09ZT8odD1udWxsLFIkKToodD1lKS5zdHJlYW0sbyk6dH0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/KGU9bnVsbCxuZXcgUEspOm5ldyB4SyhlPXQpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiZpLnBvaW50UmFkaXVzKHIpLG8pOmV9LG8ucG9pbnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG8pOnJ9LG8ucHJvamVjdGlvbih0KS5jb250ZXh0KGUpfSxnZW9BbGJlcnM6WEssZ2VvQWxiZXJzVXNhOmZ1bmN0aW9uIHpwdCgpe3ZhciB0LGUsbixpLHIsbyxhPVhLKCkscz1ZSygpLnJvdGF0ZShbMTU0LDBdKS5jZW50ZXIoWy0yLDU4LjVdKS5wYXJhbGxlbHMoWzU1LDY1XSksbD1ZSygpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5wYXJhbGxlbHMoWzgsMThdKSxjPXtwb2ludDpmdW5jdGlvbih0LGUpe289W3QsZV19fTtmdW5jdGlvbiB1KHQpe3ZhciBlPXRbMF0sYT10WzFdO3JldHVybiBvPW51bGwsbi5wb2ludChlLGEpLG98fChpLnBvaW50KGUsYSksbyl8fChyLnBvaW50KGUsYSksbyl9ZnVuY3Rpb24gaCgpe3JldHVybiB0PWU9bnVsbCx1fXJldHVybiB1LmludmVydD1mdW5jdGlvbih0KXt2YXIgZT1hLnNjYWxlKCksbj1hLnRyYW5zbGF0ZSgpLGk9KHRbMF0tblswXSkvZSxyPSh0WzFdLW5bMV0pL2U7cmV0dXJuKHI+PS4xMiYmcjwuMjM0JiZpPj0tLjQyNSYmaTwtLjIxND9zOnI+PS4xNjYmJnI8LjIzNCYmaT49LS4yMTQmJmk8LS4xMTU/bDphKS5pbnZlcnQodCl9LHUuc3RyZWFtPWZ1bmN0aW9uKG4pe3JldHVybiB0JiZlPT09bj90OnQ9KGZ1bmN0aW9uIGkodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJue3BvaW50OmZ1bmN0aW9uKG4saSl7Zm9yKHZhciByPS0xOysrcjxlOyl0W3JdLnBvaW50KG4saSl9LHNwaGVyZTpmdW5jdGlvbigpe2Zvcih2YXIgbj0tMTsrK248ZTspdFtuXS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnBvbHlnb25FbmQoKX19fSkoW2Euc3RyZWFtKGU9bikscy5zdHJlYW0obiksbC5zdHJlYW0obildKX0sdS5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEucHJlY2lzaW9uKHQpLHMucHJlY2lzaW9uKHQpLGwucHJlY2lzaW9uKHQpLGgoKSk6YS5wcmVjaXNpb24oKX0sdS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5zY2FsZSh0KSxzLnNjYWxlKC4zNSp0KSxsLnNjYWxlKHQpLHUudHJhbnNsYXRlKGEudHJhbnNsYXRlKCkpKTphLnNjYWxlKCl9LHUudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhLnRyYW5zbGF0ZSgpO3ZhciBlPWEuc2NhbGUoKSxvPSt0WzBdLHU9K3RbMV07cmV0dXJuIG49YS50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW28tLjQ1NSplLHUtLjIzOCplXSxbbysuNDU1KmUsdSsuMjM4KmVdXSkuc3RyZWFtKGMpLGk9cy50cmFuc2xhdGUoW28tLjMwNyplLHUrLjIwMSplXSkuY2xpcEV4dGVudChbW28tLjQyNSplK0dxLHUrLjEyKmUrR3FdLFtvLS4yMTQqZS1HcSx1Ky4yMzQqZS1HcV1dKS5zdHJlYW0oYykscj1sLnRyYW5zbGF0ZShbby0uMjA1KmUsdSsuMjEyKmVdKS5jbGlwRXh0ZW50KFtbby0uMjE0KmUrR3EsdSsuMTY2KmUrR3FdLFtvLS4xMTUqZS1HcSx1Ky4yMzQqZS1HcV1dKS5zdHJlYW0oYyksaCgpfSx1LmZpdEV4dGVudD1mdW5jdGlvbih0LGUpe3JldHVybiB6Syh1LHQsZSl9LHUuZml0U2l6ZT1mdW5jdGlvbih0LGUpe3JldHVybiBESyh1LHQsZSl9LHUuZml0V2lkdGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQksodSx0LGUpfSx1LmZpdEhlaWdodD1mdW5jdGlvbih0LGUpe3JldHVybiBISyh1LHQsZSl9LHUuc2NhbGUoMTA3MCl9LGdlb0F6aW11dGhhbEVxdWFsQXJlYTpmdW5jdGlvbiBEcHQoKXtyZXR1cm4gaksoWkspLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE3OS45OTkpfSxnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6WkssZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ6ZnVuY3Rpb24gQnB0KCl7cmV0dXJuIGpLKEpLKS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3OkpLLGdlb0NvbmljQ29uZm9ybWFsOmZ1bmN0aW9uIEhwdCgpe3JldHVybiBXSyhuWikuc2NhbGUoMTA5LjUpLnBhcmFsbGVscyhbMzAsMzBdKX0sZ2VvQ29uaWNDb25mb3JtYWxSYXc6blosZ2VvQ29uaWNFcXVhbEFyZWE6WUssZ2VvQ29uaWNFcXVhbEFyZWFSYXc6cUssZ2VvQ29uaWNFcXVpZGlzdGFudDpmdW5jdGlvbiBGcHQoKXtyZXR1cm4gV0soclopLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9LGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6closZ2VvRXF1aXJlY3Rhbmd1bGFyOmZ1bmN0aW9uIFZwdCgpe3JldHVybiBqSyhpWikuc2NhbGUoMTUyLjYzKX0sZ2VvRXF1aXJlY3Rhbmd1bGFyUmF3OmlaLGdlb0dub21vbmljOmZ1bmN0aW9uIFVwdCgpe3JldHVybiBqSyhvWikuc2NhbGUoMTQ0LjA0OSkuY2xpcEFuZ2xlKDYwKX0sZ2VvR25vbW9uaWNSYXc6b1osZ2VvSWRlbnRpdHk6ZnVuY3Rpb24ganB0KCl7dmFyIHQsZSxuLGkscixvLGE9MSxzPTAsbD0wLGM9MSx1PTEsaD1SJCxkPW51bGwscD1SJDtmdW5jdGlvbiBmKCl7cmV0dXJuIGk9cj1udWxsLG99cmV0dXJuIG89e3N0cmVhbTpmdW5jdGlvbih0KXtyZXR1cm4gaSYmcj09PXQ/aTppPWgocChyPXQpKX0scG9zdGNsaXA6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9aSxkPXQ9ZT1uPW51bGwsZigpKTpwfSxjbGlwRXh0ZW50OmZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPW51bGw9PWk/KGQ9dD1lPW49bnVsbCxSJCk6YyQoZD0raVswXVswXSx0PStpWzBdWzFdLGU9K2lbMV1bMF0sbj0raVsxXVsxXSksZigpKTpudWxsPT1kP251bGw6W1tkLHRdLFtlLG5dXX0sc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9YVooKGE9K3QpKmMsYSp1LHMsbCksZigpKTphfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9YVooYSpjLGEqdSxzPSt0WzBdLGw9K3RbMV0pLGYoKSk6W3MsbF19LHJlZmxlY3RYOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWFaKGEqKGM9dD8tMToxKSxhKnUscyxsKSxmKCkpOmM8MH0scmVmbGVjdFk6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9YVooYSpjLGEqKHU9dD8tMToxKSxzLGwpLGYoKSk6dTwwfSxmaXRFeHRlbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4geksobyx0LGUpfSxmaXRTaXplOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIERLKG8sdCxlKX0sZml0V2lkdGg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gQksobyx0LGUpfSxmaXRIZWlnaHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gSEsobyx0LGUpfX19LGdlb1Byb2plY3Rpb246akssZ2VvUHJvamVjdGlvbk11dGF0b3I6R0ssZ2VvTWVyY2F0b3I6ZnVuY3Rpb24gR3B0KCl7cmV0dXJuIHRaKFFLKS5zY2FsZSg5NjEvWHEpfSxnZW9NZXJjYXRvclJhdzpRSyxnZW9OYXR1cmFsRWFydGgxOmZ1bmN0aW9uIFdwdCgpe3JldHVybiBqSyhzWikuc2NhbGUoMTc1LjI5NSl9LGdlb05hdHVyYWxFYXJ0aDFSYXc6c1osZ2VvT3J0aG9ncmFwaGljOmZ1bmN0aW9uIHFwdCgpe3JldHVybiBqSyhsWikuc2NhbGUoMjQ5LjUpLmNsaXBBbmdsZSg5MC4wMDAwMDEpfSxnZW9PcnRob2dyYXBoaWNSYXc6bFosZ2VvU3RlcmVvZ3JhcGhpYzpmdW5jdGlvbiBZcHQoKXtyZXR1cm4gaksoY1opLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9LGdlb1N0ZXJlb2dyYXBoaWNSYXc6Y1osZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yOmZ1bmN0aW9uIFhwdCgpe3ZhciB0PXRaKHVaKSxlPXQuY2VudGVyLG49dC5yb3RhdGU7cmV0dXJuIHQuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoWy10WzFdLHRbMF1dKTpbKHQ9ZSgpKVsxXSwtdFswXV19LHQucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oW3RbMF0sdFsxXSx0Lmxlbmd0aD4yP3RbMl0rOTA6OTBdKTpbKHQ9bigpKVswXSx0WzFdLHRbMl0tOTBdfSxuKFswLDAsOTBdKS5zY2FsZSgxNTkuMTU1KX0sZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3OnVaLGdlb1JvdGF0aW9uOkZYLGdlb1N0cmVhbTp5WSxnZW9UcmFuc2Zvcm06ZnVuY3Rpb24gJHB0KHQpe3JldHVybntzdHJlYW06SUsodCl9fSxjbHVzdGVyOmZ1bmN0aW9uIEtwdCgpe3ZhciB0PWhaLGU9MSxuPTEsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvLGE9MDtyLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7dmFyIG49ZS5jaGlsZHJlbjtuPyhlLng9KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVkdWNlKGRaLDApL3QubGVuZ3RofSkobiksZS55PShmdW5jdGlvbiByKHQpe3JldHVybiAxK3QucmVkdWNlKHBaLDApfSkobikpOihlLng9bz9hKz10KGUsbyk6MCxlLnk9MCxvPWUpfSkpO3ZhciBzPShmdW5jdGlvbiBsKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH0pKHIpLGM9KGZ1bmN0aW9uIHUodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lW2UubGVuZ3RoLTFdO3JldHVybiB0fSkociksaD1zLngtdChzLGMpLzIsZD1jLngrdChjLHMpLzI7cmV0dXJuIHIuZWFjaEFmdGVyKGk/ZnVuY3Rpb24odCl7dC54PSh0Lngtci54KSplLHQueT0oci55LXQueSkqbn06ZnVuY3Rpb24odCl7dC54PSh0LngtaCkvKGQtaCkqZSx0Lnk9KDEtKHIueT90Lnkvci55OjEpKSpufSl9cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LGhpZXJhcmNoeTptWixwYWNrOmZ1bmN0aW9uIFpwdCgpe3ZhciB0PW51bGwsZT0xLG49MSxpPVhaO2Z1bmN0aW9uIHIocil7cmV0dXJuIHIueD1lLzIsci55PW4vMix0P3IuZWFjaEJlZm9yZShaWih0KSkuZWFjaEFmdGVyKEpaKGksLjUpKS5lYWNoQmVmb3JlKFFaKDEpKTpyLmVhY2hCZWZvcmUoWlooS1opKS5lYWNoQWZ0ZXIoSlooWFosMSkpLmVhY2hBZnRlcihKWihpLHIuci9NYXRoLm1pbihlLG4pKSkuZWFjaEJlZm9yZShRWihNYXRoLm1pbihlLG4pLygyKnIucikpKSxyfXJldHVybiByLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1xWihlKSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxyKTpbZSxuXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6JFooK3QpLHIpOml9LHJ9LHBhY2tTaWJsaW5nczpmdW5jdGlvbiBKcHQodCl7cmV0dXJuIFdaKHQpLHR9LHBhY2tFbmNsb3NlOklaLHBhcnRpdGlvbjpmdW5jdGlvbiBRcHQoKXt2YXIgdD0xLGU9MSxuPTAsaT0hMTtmdW5jdGlvbiByKHIpe3ZhciBvPXIuaGVpZ2h0KzE7cmV0dXJuIHIueDA9ci55MD1uLHIueDE9dCxyLnkxPWUvbyxyLmVhY2hCZWZvcmUoKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gZnVuY3Rpb24oaSl7aS5jaGlsZHJlbiYmZUooaSxpLngwLHQqKGkuZGVwdGgrMSkvZSxpLngxLHQqKGkuZGVwdGgrMikvZSk7dmFyIHI9aS54MCxvPWkueTAsYT1pLngxLW4scz1pLnkxLW47YTxyJiYocj1hPShyK2EpLzIpLHM8byYmKG89cz0obytzKS8yKSxpLngwPXIsaS55MD1vLGkueDE9YSxpLnkxPXN9fSkoZSxvKSksaSYmci5lYWNoQmVmb3JlKHRKKSxyfXJldHVybiByLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxyKTppfSxyLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K25bMF0sZT0rblsxXSxyKTpbdCxlXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHIpOm59LHJ9LHN0cmF0aWZ5OmZ1bmN0aW9uIHRmdCgpe3ZhciB0PXJKLGU9b0o7ZnVuY3Rpb24gbihuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PW4ubGVuZ3RoLGg9bmV3IEFycmF5KHUpLGQ9e307Zm9yKHI9MDtyPHU7KytyKXM9aFtyXT1uZXcgdlooaT1uW3JdKSxudWxsIT0obD10KGkscixuKSkmJihsKz0iIikmJihkW2M9IiQiKyhzLmlkPWwpXT1jIGluIGQ/aUo6cyk7Zm9yKHI9MDtyPHU7KytyKWlmKHM9aFtyXSxudWxsIT0obD1lKG5bcl0scixuKSkmJihsKz0iIikpe2lmKCEoYT1kWyIkIitsXSkpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2wpO2lmKGE9PT1pSil0aHJvdyBuZXcgRXJyb3IoImFtYmlndW91czogIitsKTthLmNoaWxkcmVuP2EuY2hpbGRyZW4ucHVzaChzKTphLmNoaWxkcmVuPVtzXSxzLnBhcmVudD1hfWVsc2V7aWYobyl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIHJvb3RzIik7bz1zfWlmKCFvKXRocm93IG5ldyBFcnJvcigibm8gcm9vdCIpO2lmKG8ucGFyZW50PW5KLG8uZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC5kZXB0aD10LnBhcmVudC5kZXB0aCsxLC0tdX0pKS5lYWNoQmVmb3JlKHlaKSxvLnBhcmVudD1udWxsLHU+MCl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIik7cmV0dXJuIG99cmV0dXJuIG4uaWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9WVooZSksbik6dH0sbi5wYXJlbnRJZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1ZWih0KSxuKTplfSxufSx0cmVlOmZ1bmN0aW9uIGVmdCgpe3ZhciB0PWFKLGU9MSxuPTEsaT1udWxsO2Z1bmN0aW9uIHIocil7dmFyIGw9KGZ1bmN0aW9uIGModCl7Zm9yKHZhciBlLG4saSxyLG8sYT1uZXcgaEoodCwwKSxzPVthXTtlPXMucG9wKCk7KWlmKGk9ZS5fLmNoaWxkcmVuKWZvcihlLmNoaWxkcmVuPW5ldyBBcnJheShvPWkubGVuZ3RoKSxyPW8tMTtyPj0wOy0tcilzLnB1c2gobj1lLmNoaWxkcmVuW3JdPW5ldyBoSihpW3JdLHIpKSxuLnBhcmVudD1lO3JldHVybihhLnBhcmVudD1uZXcgaEoobnVsbCwwKSkuY2hpbGRyZW49W2FdLGF9KShyKTtpZihsLmVhY2hBZnRlcihvKSxsLnBhcmVudC5tPS1sLnosbC5lYWNoQmVmb3JlKGEpLGkpci5lYWNoQmVmb3JlKHMpO2Vsc2V7dmFyIHU9cixoPXIsZD1yO3IuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PHUueCYmKHU9dCksdC54PmgueCYmKGg9dCksdC5kZXB0aD5kLmRlcHRoJiYoZD10KX0pKTt2YXIgcD11PT09aD8xOnQodSxoKS8yLGY9cC11LngsbT1lLyhoLngrcCtmKSxnPW4vKGQuZGVwdGh8fDEpO3IuZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC54PSh0LngrZikqbSx0Lnk9dC5kZXB0aCpnfSkpfXJldHVybiByfWZ1bmN0aW9uIG8oZSl7dmFyIG49ZS5jaGlsZHJlbixpPWUucGFyZW50LmNoaWxkcmVuLHI9ZS5pP2lbZS5pLTFdOm51bGw7aWYobil7IShmdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSxuPTAsaT0wLHI9dC5jaGlsZHJlbixvPXIubGVuZ3RoOy0tbz49MDspKGU9cltvXSkueis9bixlLm0rPW4sbis9ZS5zKyhpKz1lLmMpfSkoZSk7dmFyIGE9KG5bMF0ueituW24ubGVuZ3RoLTFdLnopLzI7cj8oZS56PXIueit0KGUuXyxyLl8pLGUubT1lLnotYSk6ZS56PWF9ZWxzZSByJiYoZS56PXIueit0KGUuXyxyLl8pKTtlLnBhcmVudC5BPShmdW5jdGlvbiBzKGUsbixpKXtpZihuKXtmb3IodmFyIHIsbz1lLGE9ZSxzPW4sbD1vLnBhcmVudC5jaGlsZHJlblswXSxjPW8ubSx1PWEubSxoPXMubSxkPWwubTtzPWxKKHMpLG89c0oobykscyYmbzspbD1zSihsKSwoYT1sSihhKSkuYT1lLChyPXMueitoLW8uei1jK3Qocy5fLG8uXykpPjAmJihjSih1SihzLGUsaSksZSxyKSxjKz1yLHUrPXIpLGgrPXMubSxjKz1vLm0sZCs9bC5tLHUrPWEubTtzJiYhbEooYSkmJihhLnQ9cyxhLm0rPWgtdSksbyYmIXNKKGwpJiYobC50PW8sbC5tKz1jLWQsaT1lKX1yZXR1cm4gaX0pKGUscixlLnBhcmVudC5BfHxpWzBdKX1mdW5jdGlvbiBhKHQpe3QuXy54PXQueit0LnBhcmVudC5tLHQubSs9dC5wYXJlbnQubX1mdW5jdGlvbiBzKHQpe3QueCo9ZSx0Lnk9dC5kZXB0aCpufXJldHVybiByLnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITEsZT0rdFswXSxuPSt0WzFdLHIpOmk/bnVsbDpbZSxuXX0sci5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMCxlPSt0WzBdLG49K3RbMV0scik6aT9bZSxuXTpudWxsfSxyfSx0cmVlbWFwOmZ1bmN0aW9uIG5mdCgpe3ZhciB0PW1KLGU9ITEsbj0xLGk9MSxyPVswXSxvPVhaLGE9WFoscz1YWixsPVhaLGM9WFo7ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdC54MD10LnkwPTAsdC54MT1uLHQueTE9aSx0LmVhY2hCZWZvcmUoaCkscj1bMF0sZSYmdC5lYWNoQmVmb3JlKHRKKSx0fWZ1bmN0aW9uIGgoZSl7dmFyIG49cltlLmRlcHRoXSxpPWUueDArbix1PWUueTArbixoPWUueDEtbixkPWUueTEtbjtoPGkmJihpPWg9KGkraCkvMiksZDx1JiYodT1kPSh1K2QpLzIpLGUueDA9aSxlLnkwPXUsZS54MT1oLGUueTE9ZCxlLmNoaWxkcmVuJiYobj1yW2UuZGVwdGgrMV09byhlKS8yLGkrPWMoZSktbix1Kz1hKGUpLW4sKGgtPXMoZSktbik8aSYmKGk9aD0oaStoKS8yKSwoZC09bChlKS1uKTx1JiYodT1kPSh1K2QpLzIpLHQoZSxpLHUsaCxkKSl9cmV0dXJuIHUucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ISF0LHUpOmV9LHUuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxpPSt0WzFdLHUpOltuLGldfSx1LnRpbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9WVooZSksdSk6dH0sdS5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ0lubmVyKHQpLnBhZGRpbmdPdXRlcih0KTp1LnBhZGRpbmdJbm5lcigpfSx1LnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRaKCt0KSx1KTpvfSx1LnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdUb3AodCkucGFkZGluZ1JpZ2h0KHQpLnBhZGRpbmdCb3R0b20odCkucGFkZGluZ0xlZnQodCk6dS5wYWRkaW5nVG9wKCl9LHUucGFkZGluZ1RvcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRaKCt0KSx1KTphfSx1LnBhZGRpbmdSaWdodD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRaKCt0KSx1KTpzfSx1LnBhZGRpbmdCb3R0b209ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDokWigrdCksdSk6bH0sdS5wYWRkaW5nTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OiRaKCt0KSx1KTpjfSx1fSx0cmVlbWFwQmluYXJ5OmZ1bmN0aW9uIGlmdCh0LGUsbixpLHIpe3ZhciBvLGEscz10LmNoaWxkcmVuLGw9cy5sZW5ndGgsYz1uZXcgQXJyYXkobCsxKTtmb3IoY1swXT1hPW89MDtvPGw7KytvKWNbbysxXT1hKz1zW29dLnZhbHVlOyEoZnVuY3Rpb24gdChlLG4saSxyLG8sYSxsKXtpZihlPj1uLTEpe3ZhciB1PXNbZV07cmV0dXJuIHUueDA9cix1LnkwPW8sdS54MT1hLHZvaWQodS55MT1sKX1mb3IodmFyIGg9Y1tlXSxkPWkvMitoLHA9ZSsxLGY9bi0xO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6ZUosdHJlZW1hcFNsaWNlOmRKLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gcmZ0KHQsZSxuLGkscil7KDEmdC5kZXB0aD9kSjplSikodCxlLG4saSxyKX0sdHJlZW1hcFNxdWFyaWZ5Om1KLHRyZWVtYXBSZXNxdWFyaWZ5OmdKLGludGVycG9sYXRlOkJRLGludGVycG9sYXRlQXJyYXk6UFEsaW50ZXJwb2xhdGVCYXNpczp4USxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOndRLGludGVycG9sYXRlRGF0ZTpOUSxpbnRlcnBvbGF0ZU51bWJlcjpJUSxpbnRlcnBvbGF0ZU9iamVjdDpSUSxpbnRlcnBvbGF0ZVJvdW5kOmZ1bmN0aW9uIG9mdCh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQrZSpuKX19LGludGVycG9sYXRlU3RyaW5nOkRRLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOllRLGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOiRRLGludGVycG9sYXRlWm9vbTpmdW5jdGlvbiBhZnQodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvWlEsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChaUSp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9aUSxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPUpRKGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShaUSplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vSlEoWlEqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59LGludGVycG9sYXRlUmdiOkNRLGludGVycG9sYXRlUmdiQmFzaXM6a1EsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpMUSxpbnRlcnBvbGF0ZUhzbDp0MSxpbnRlcnBvbGF0ZUhzbExvbmc6ZTEsaW50ZXJwb2xhdGVMYWI6ZnVuY3Rpb24gc2Z0KHQsZSl7dmFyIG49VFEoKHQ9clEodCkpLmwsKGU9clEoZSkpLmwpLGk9VFEodC5hLGUuYSkscj1UUSh0LmIsZS5iKSxvPVRRKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5sPW4oZSksdC5hPWkoZSksdC5iPXIoZSksdC5vcGFjaXR5PW8oZSksdCsiIn19LGludGVycG9sYXRlSGNsOmkxLGludGVycG9sYXRlSGNsTG9uZzpyMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeDphMSxpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6czEscXVhbnRpemU6ZnVuY3Rpb24gbGZ0KHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6cDEscG9seWdvbkFyZWE6ZnVuY3Rpb24gY2Z0KHQpe2Zvcih2YXIgZSxuPS0xLGk9dC5sZW5ndGgscj10W2ktMV0sbz0wOysrbjxpOylvKz0oZT1yKVsxXSoocj10W25dKVswXS1lWzBdKnJbMV07cmV0dXJuIG8vMn0scG9seWdvbkNlbnRyb2lkOmZ1bmN0aW9uIHVmdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz0wLGE9MCxzPXRbci0xXSxsPTA7KytpPHI7KWwrPW49KGU9cylbMF0qKHM9dFtpXSlbMV0tc1swXSplWzFdLG8rPShlWzBdK3NbMF0pKm4sYSs9KGVbMV0rc1sxXSkqbjtyZXR1cm5bby8obCo9MyksYS9sXX0scG9seWdvbkh1bGw6ZnVuY3Rpb24gaGZ0KHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQobTEpLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWcxKGkpLGE9ZzEocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBkZnQodCxlKXtmb3IodmFyIG4saSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9ZVswXSxzPWVbMV0sbD1vWzBdLGM9b1sxXSx1PSExLGg9MDtoPHI7KytoKW49KG89dFtoXSlbMF0sKGk9b1sxXSk+cyE9Yz5zJiZhPChsLW4pKihzLWkpLyhjLWkpK24mJih1PSF1KSxsPW4sYz1pO3JldHVybiB1fSxwb2x5Z29uTGVuZ3RoOmZ1bmN0aW9uIHBmdCh0KXtmb3IodmFyIGUsbixpPS0xLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1vWzBdLHM9b1sxXSxsPTA7KytpPHI7KWU9YSxuPXMsZS09YT0obz10W2ldKVswXSxuLT1zPW9bMV0sbCs9TWF0aC5zcXJ0KGUqZStuKm4pO3JldHVybiBsfSxxdWFkdHJlZTp4MSxxdWV1ZTpxMSxyYW5kb21Vbmlmb3JtOlgxLHJhbmRvbU5vcm1hbDokMSxyYW5kb21Mb2dOb3JtYWw6SzEscmFuZG9tQmF0ZXM6SjEscmFuZG9tSXJ3aW5IYWxsOloxLHJhbmRvbUV4cG9uZW50aWFsOlExLHJlcXVlc3Q6dDAsaHRtbDpuMCxqc29uOmkwLHRleHQ6cjAseG1sOm8wLGNzdjpsMCx0c3Y6YzAsc2NhbGVCYW5kOlAwLHNjYWxlUG9pbnQ6ZnVuY3Rpb24gZmZ0KCl7cmV0dXJuIE4wKFAwKCkucGFkZGluZ0lubmVyKDEpKX0sc2NhbGVJZGVudGl0eTpmdW5jdGlvbiB0KCl7dmFyIGU9WzAsMV07ZnVuY3Rpb24gbih0KXtyZXR1cm4rdH1yZXR1cm4gbi5pbnZlcnQ9bixuLmRvbWFpbj1uLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUMwLmNhbGwodCxqMiksbik6ZS5zbGljZSgpfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKX0sZDUobil9LHNjYWxlTGluZWFyOmZ1bmN0aW9uIHQoKXt2YXIgZT0kMihXMixOMik7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBYMihlLHQoKSl9LGQ1KGUpfSxzY2FsZUxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9JDIoZjUsbTUpLmRvbWFpbihbMSwxMF0pLG49ZS5kb21haW4saT0xMCxyPXk1KDEwKSxvPV81KDEwKTtmdW5jdGlvbiBhKCl7cmV0dXJuIHI9eTUoaSksbz1fNShpKSxuKClbMF08MCYmKHI9djUociksbz12NShvKSksZX1yZXR1cm4gZS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSt0LGEoKSk6aX0sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4odCksYSgpKTpuKCl9LGUudGlja3M9ZnVuY3Rpb24odCl7dmFyIGUsYT1uKCkscz1hWzBdLGw9YVthLmxlbmd0aC0xXTsoZT1sPHMpJiYoZD1zLHM9bCxsPWQpO3ZhciBjLHUsaCxkPXIocykscD1yKGwpLGY9bnVsbD09dD8xMDordCxtPVtdO2lmKCEoaSUxKSYmcC1kPGYpe2lmKGQ9TWF0aC5yb3VuZChkKS0xLHA9TWF0aC5yb3VuZChwKSsxLHM+MCl7Zm9yKDtkPHA7KytkKWZvcih1PTEsYz1vKGQpO3U8aTsrK3UpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIGZvcig7ZDxwOysrZClmb3IodT1pLTEsYz1vKGQpO3U+PTE7LS11KWlmKCEoKGg9Yyp1KTxzKSl7aWYoaD5sKWJyZWFrO20ucHVzaChoKX19ZWxzZSBtPV8wKGQscCxNYXRoLm1pbihwLWQsZikpLm1hcChvKTtyZXR1cm4gZT9tLnJldmVyc2UoKTptfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtpZihudWxsPT1uJiYobj0xMD09PWk/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49bDUobikpLHQ9PT0xLzApcmV0dXJuIG47bnVsbD09dCYmKHQ9MTApO3ZhciBhPU1hdGgubWF4KDEsaSp0L2UudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT10L28oTWF0aC5yb3VuZChyKHQpKSk7cmV0dXJuIGUqaTxpLS41JiYoZSo9aSksZTw9YT9uKHQpOiIifX0sZS5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ocDUobigpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmZsb29yKHIodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbyhNYXRoLmNlaWwocih0KSkpfX0pKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFgyKGUsdCgpLmJhc2UoaSkpfSxlfSxzY2FsZU9yZGluYWw6TDAsc2NhbGVJbXBsaWNpdDprMCxzY2FsZVBvdzp4NSxzY2FsZVNxcnQ6ZnVuY3Rpb24gbWZ0KCl7cmV0dXJuIHg1KCkuZXhwb25lbnQoLjUpfSxzY2FsZVF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVtdLGk9W107ZnVuY3Rpb24gcigpe3ZhciB0PTAscj1NYXRoLm1heCgxLG4ubGVuZ3RoKTtmb3IoaT1uZXcgQXJyYXkoci0xKTsrK3Q8cjspaVt0LTFdPWIwKGUsdC9yKTtyZXR1cm4gb31mdW5jdGlvbiBvKHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gbltkMChpLHQpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9bi5pbmRleE9mKHQpO3JldHVybiByPDA/W05hTixOYU5dOltyPjA/aVtyLTFdOmVbMF0scjxpLmxlbmd0aD9pW3JdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBuLGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpbnVsbD09KG49dFtpXSl8fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydCh1MCkscigpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPUEwLmNhbGwodCkscigpKTpuLnNsaWNlKCl9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LG99LHNjYWxlUXVhbnRpemU6ZnVuY3Rpb24gdCgpe3ZhciBlPTAsbj0xLGk9MSxyPVsuNV0sbz1bMCwxXTtmdW5jdGlvbiBhKHQpe2lmKHQ8PXQpcmV0dXJuIG9bZDAocix0LDAsaSldfWZ1bmN0aW9uIHMoKXt2YXIgdD0tMTtmb3Iocj1uZXcgQXJyYXkoaSk7Kyt0PGk7KXJbdF09KCh0KzEpKm4tKHQtaSkqZSkvKGkrMSk7cmV0dXJuIGF9cmV0dXJuIGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLG49K3RbMV0scygpKTpbZSxuXX0sYS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0obz1BMC5jYWxsKHQpKS5sZW5ndGgtMSxzKCkpOm8uc2xpY2UoKX0sYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGE9by5pbmRleE9mKHQpO3JldHVybiBhPDA/W05hTixOYU5dOmE8MT9bZSxyWzBdXTphPj1pP1tyW2ktMV0sbl06W3JbYS0xXSxyW2FdXX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oW2Usbl0pLnJhbmdlKG8pfSxkNShhKX0sc2NhbGVUaHJlc2hvbGQ6ZnVuY3Rpb24gdCgpe3ZhciBlPVsuNV0sbj1bMCwxXSxpPTE7ZnVuY3Rpb24gcih0KXtpZih0PD10KXJldHVybiBuW2QwKGUsdCwwLGkpXX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9QTAuY2FsbCh0KSxpPU1hdGgubWluKGUubGVuZ3RoLG4ubGVuZ3RoLTEpLHIpOmUuc2xpY2UoKX0sci5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1BMC5jYWxsKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSkscik6bi5zbGljZSgpfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgaT1uLmluZGV4T2YodCk7cmV0dXJuW2VbaS0xXSxlW2ldXX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4oZSkucmFuZ2Uobil9LHJ9LHNjYWxlVGltZTpmdW5jdGlvbiBnZnQoKXtyZXR1cm4gQzQoajUsVjUsQjUsejUsTzUsUjUsSTUsQzUscjMpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKX0sc2NhbGVVdGM6ZnVuY3Rpb24gX2Z0KCl7cmV0dXJuIEM0KFE1LFo1LFg1LHE1LFc1LEc1LEk1LEM1LG8zKS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9LHNjaGVtZUNhdGVnb3J5MTA6azQsc2NoZW1lQ2F0ZWdvcnkyMGI6TDQsc2NoZW1lQ2F0ZWdvcnkyMGM6UDQsc2NoZW1lQ2F0ZWdvcnkyMDpONCxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6STQsaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIHlmdCh0KXsodDwwfHx0PjEpJiYodC09TWF0aC5mbG9vcih0KSk7dmFyIGU9TWF0aC5hYnModC0uNSk7cmV0dXJuIHo0Lmg9MzYwKnQtMTAwLHo0LnM9MS41LTEuNSplLHo0Lmw9LjgtLjkqZSx6NCsiIn0saW50ZXJwb2xhdGVXYXJtOlI0LGludGVycG9sYXRlQ29vbDpPNCxpbnRlcnBvbGF0ZVZpcmlkaXM6QjQsaW50ZXJwb2xhdGVNYWdtYTpINCxpbnRlcnBvbGF0ZUluZmVybm86RjQsaW50ZXJwb2xhdGVQbGFzbWE6VjQsc2NhbGVTZXF1ZW50aWFsOmZ1bmN0aW9uIHQoZSl7dmFyIG49MCxpPTEscj0hMTtmdW5jdGlvbiBvKHQpe3ZhciBvPSh0LW4pLyhpLW4pO3JldHVybiBlKHI/TWF0aC5tYXgoMCxNYXRoLm1pbigxLG8pKTpvKX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSxvKTpbbixpXX0sby5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIXQsbyk6cn0sby5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChlKS5kb21haW4oW24saV0pLmNsYW1wKHIpfSxkNShvKX0sY3JlYXRlOmZ1bmN0aW9uIHZmdCh0KXtyZXR1cm4gdDkoWTQodCkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX0sY3JlYXRvcjpZNCxsb2NhbDpOOSxtYXRjaGVyOmU2LG1vdXNlOmZ1bmN0aW9uIGJmdCh0KXt2YXIgZT1SOSgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSxPOSh0LGUpfSxuYW1lc3BhY2U6RzQsbmFtZXNwYWNlczpqNCxjbGllbnRQb2ludDpPOSxzZWxlY3Q6dDksc2VsZWN0QWxsOmZ1bmN0aW9uIHhmdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IEo2KFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEo2KFtudWxsPT10P1tdOnRdLFo2KX0sc2VsZWN0aW9uOlE2LHNlbGVjdG9yOiQ0LHNlbGVjdG9yQWxsOlo0LHN0eWxlOl82LHRvdWNoOmZ1bmN0aW9uIHdmdCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9UjkoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBPOSh0LGkpO3JldHVybiBudWxsfSx0b3VjaGVzOmZ1bmN0aW9uIFNmdCh0LGUpe251bGw9PWUmJihlPVI5KCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPU85KHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpwNixnZXQgZXZlbnQoKXtyZXR1cm4gVTZ9LGN1c3RvbUV2ZW50OmZ1bmN0aW9uIE1mdCh0LGUsbixpKXt2YXIgcj1VNjt0LnNvdXJjZUV2ZW50PVU2LFU2PXQ7dHJ5e3JldHVybiBlLmFwcGx5KG4saSl9ZmluYWxseXtVNj1yfX0sYXJjOmZ1bmN0aW9uIEVmdCgpe3ZhciB0PW44LGU9aTgsbj1VOSgwKSxpPW51bGwscj1yOCxvPW84LGE9YTgscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktSjkscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1KOSxmPWo5KHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1WOSgpKSxoPHUmJihjPWgsaD11LHU9YyksaD5LOSlpZihmPlE5LUs5KXMubW92ZVRvKGgqVzkoZCksaCpYOShkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1Pks5JiYocy5tb3ZlVG8odSpXOShwKSx1Klg5KHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPks5JiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6JDkodSp1K2gqaCkpLFQ9WTkoajkoaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQz1ULEE9VDtpZihFPks5KXt2YXIgaz1lOChFL3UqWDkoTSkpLEw9ZTgoRS9oKlg5KE0pKTsody09MiprKT5LOT8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPks5Pyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCpXOSh5KSxOPWgqWDkoeSksST11Klc5KHgpLFI9dSpYOSh4KTtpZihUPks5KXt2YXIgTz1oKlc5KHYpLHo9aCpYOSh2KSxEPXUqVzkoYiksQj11Klg5KGIpO2lmKGY8Wjkpe3ZhciBIPXc+Szk/czgoUCxOLEQsQixPLHosSSxSKTpbSSxSXSxGPVAtSFswXSxWPU4tSFsxXSxVPU8tSFswXSxqPXotSFsxXSxHPTEvWDkodDgoKEYqVStWKmopLygkOShGKkYrVipWKSokOShVKlUraipqKSkpLzIpLFc9JDkoSFswXSpIWzBdK0hbMV0qSFsxXSk7Qz1ZOShULCh1LVcpLyhHLTEpKSxBPVk5KFQsKGgtVykvKEcrMSkpfX1TPks5P0E+Szk/KGc9bDgoRCxCLFAsTixoLEEsbSksXz1sOChPLHosSSxSLGgsQSxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSxHOShnLnkwMSxnLngwMSksRzkoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEsRzkoZy55MDEsZy54MDEpLEc5KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgsRzkoZy5jeStnLnkxMSxnLmN4K2cueDExKSxHOShfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQSxHOShfLnkxMSxfLngxMSksRzkoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLE4pLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsTiksdT5LOSYmdz5LOT9DPks5PyhnPWw4KEksUixPLHosdSwtQyxtKSxfPWw4KFAsTixELEIsdSwtQyxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyxHOShnLnkwMSxnLngwMSksRzkoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMsRzkoZy55MDEsZy54MDEpLEc5KGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUsRzkoZy5jeStnLnkxMSxnLmN4K2cueDExKSxHOShfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxDLEc5KF8ueTExLF8ueDExKSxHOShfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKEksUil9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItWjkvMjtyZXR1cm5bVzkoaSkqbixYOShpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlU5KCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSgrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmY4LGxpbmU6cDgscGllOmZ1bmN0aW9uIFRmdCgpe3ZhciB0PWc4LGU9bTgsbj1udWxsLGk9VTkoMCkscj1VOShROSksbz1VOSgwKTtmdW5jdGlvbiBhKGEpe3ZhciBzLGwsYyx1LGgsZD1hLmxlbmd0aCxwPTAsZj1uZXcgQXJyYXkoZCksbT1uZXcgQXJyYXkoZCksZz0raS5hcHBseSh0aGlzLGFyZ3VtZW50cyksXz1NYXRoLm1pbihROSxNYXRoLm1heCgtUTksci5hcHBseSh0aGlzLGFyZ3VtZW50cyktZykpLHk9TWF0aC5taW4oTWF0aC5hYnMoXykvZCxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdj15KihfPDA/LTE6MSk7Zm9yKHM9MDtzPGQ7KytzKShoPW1bZltzXT1zXT0rdChhW3NdLHMsYSkpPjAmJihwKz1oKTtmb3IobnVsbCE9ZT9mLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUobVt0XSxtW25dKX0pKTpudWxsIT1uJiZmLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oYVt0XSxhW2VdKX0pKSxzPTAsYz1wPyhfLWQqdikvcDowO3M8ZDsrK3MsZz11KW1bbD1mW3NdXT17ZGF0YTphW2xdLGluZGV4OnMsdmFsdWU6aD1tW2xdLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTp1PWcrKGg+MD9oKmM6MCkrdixwYWRBbmdsZTp5fTtyZXR1cm4gbX1yZXR1cm4gYS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlU5KCtlKSxhKTp0fSxhLnNvcnRWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuPW51bGwsYSk6ZX0sYS5zb3J0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoK3QpLGEpOnJ9LGEucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSgrdCksYSk6b30sYX0sYXJlYVJhZGlhbDp3OCxyYWRpYWxBcmVhOnc4LGxpbmVSYWRpYWw6eDgscmFkaWFsTGluZTp4OCxwb2ludFJhZGlhbDpTOCxsaW5rSG9yaXpvbnRhbDpmdW5jdGlvbiBDZnQoKXtyZXR1cm4gQzgoQTgpfSxsaW5rVmVydGljYWw6ZnVuY3Rpb24gQWZ0KCl7cmV0dXJuIEM4KGs4KX0sbGlua1JhZGlhbDpmdW5jdGlvbiBrZnQoKXt2YXIgdD1DOChMOCk7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdH0sc3ltYm9sOmZ1bmN0aW9uIExmdCgpe3ZhciB0PVU5KFA4KSxlPVU5KDY0KSxuPW51bGw7ZnVuY3Rpb24gaSgpe3ZhciBpO2lmKG58fChuPWk9VjkoKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhuLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSlyZXR1cm4gbj1udWxsLGkrIiJ8fG51bGx9cmV0dXJuIGkudHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlU5KGUpLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlU5KCt0KSxpKTplfSxpLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOnQsaSk6bn0saX0sc3ltYm9sczpYOCxzeW1ib2xDaXJjbGU6UDgsc3ltYm9sQ3Jvc3M6Tjgsc3ltYm9sRGlhbW9uZDpPOCxzeW1ib2xTcXVhcmU6Rjgsc3ltYm9sU3RhcjpIOCxzeW1ib2xUcmlhbmdsZTpVOCxzeW1ib2xXeWU6WTgsY3VydmVCYXNpc0Nsb3NlZDpmdW5jdGlvbiBQZnQodCl7cmV0dXJuIG5ldyBKOCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gTmZ0KHQpe3JldHVybiBuZXcgUTgodCl9LGN1cnZlQmFzaXM6ZnVuY3Rpb24gSWZ0KHQpe3JldHVybiBuZXcgWjgodCl9LGN1cnZlQnVuZGxlOmU3LGN1cnZlQ2FyZGluYWxDbG9zZWQ6YTcsY3VydmVDYXJkaW5hbE9wZW46bDcsY3VydmVDYXJkaW5hbDpyNyxjdXJ2ZUNhdG11bGxSb21DbG9zZWQ6cDcsY3VydmVDYXRtdWxsUm9tT3BlbjptNyxjdXJ2ZUNhdG11bGxSb206aDcsY3VydmVMaW5lYXJDbG9zZWQ6ZnVuY3Rpb24gUmZ0KHQpe3JldHVybiBuZXcgZzcodCl9LGN1cnZlTGluZWFyOnU4LGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIE9mdCh0KXtyZXR1cm4gbmV3IHg3KHQpfSxjdXJ2ZU1vbm90b25lWTpmdW5jdGlvbiB6ZnQodCl7cmV0dXJuIG5ldyB3Nyh0KX0sY3VydmVOYXR1cmFsOmZ1bmN0aW9uIERmdCh0KXtyZXR1cm4gbmV3IE03KHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gQmZ0KHQpe3JldHVybiBuZXcgVDcodCwuNSl9LGN1cnZlU3RlcEFmdGVyOmZ1bmN0aW9uIEhmdCh0KXtyZXR1cm4gbmV3IFQ3KHQsMSl9LGN1cnZlU3RlcEJlZm9yZTpmdW5jdGlvbiBGZnQodCl7cmV0dXJuIG5ldyBUNyh0LDApfSxzdGFjazpmdW5jdGlvbiBWZnQoKXt2YXIgdD1VOShbXSksZT1BNyxuPUM3LGk9azc7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbD1yLmxlbmd0aCxjPXMubGVuZ3RoLHU9bmV3IEFycmF5KGMpO2ZvcihvPTA7bzxjOysrbyl7Zm9yKHZhciBoLGQ9c1tvXSxwPXVbb109bmV3IEFycmF5KGwpLGY9MDtmPGw7KytmKXBbZl09aD1bMCwraShyW2ZdLGQsZixyKV0saC5kYXRhPXJbZl07cC5rZXk9ZH1mb3Iobz0wLGE9ZSh1KTtvPGM7KytvKXVbYVtvXV0uaW5kZXg9bztyZXR1cm4gbih1LGEpLHV9cmV0dXJuIHIua2V5cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlU5KE04LmNhbGwoZSkpLHIpOnR9LHIudmFsdWU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpVOSgrdCkscik6aX0sci5vcmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P0E3OiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VTkoTTguY2FsbCh0KSkscik6ZX0sci5vZmZzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9DNzp0LHIpOm59LHJ9LHN0YWNrT2Zmc2V0RXhwYW5kOmZ1bmN0aW9uIFVmdCh0LGUpe2lmKChpPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saSxyLG89MCxhPXRbMF0ubGVuZ3RoO288YTsrK28pe2ZvcihyPW49MDtuPGk7KytuKXIrPXRbbl1bb11bMV18fDA7aWYocilmb3Iobj0wO248aTsrK24pdFtuXVtvXVsxXS89cn1DNyh0LGUpfX0sc3RhY2tPZmZzZXREaXZlcmdpbmc6ZnVuY3Rpb24gamZ0KHQsZSl7aWYoKHM9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT49MD8oaVswXT1vLGlbMV09bys9cik6cjwwPyhpWzFdPWEsaVswXT1hKz1yKTppWzBdPW99LHN0YWNrT2Zmc2V0Tm9uZTpDNyxzdGFja09mZnNldFNpbGhvdWV0dGU6ZnVuY3Rpb24gR2Z0KHQsZSl7aWYoKG49dC5sZW5ndGgpPjApe2Zvcih2YXIgbixpPTAscj10W2VbMF1dLG89ci5sZW5ndGg7aTxvOysraSl7Zm9yKHZhciBhPTAscz0wO2E8bjsrK2Epcys9dFthXVtpXVsxXXx8MDtyW2ldWzFdKz1yW2ldWzBdPS1zLzJ9QzcodCxlKX19LHN0YWNrT2Zmc2V0V2lnZ2xlOmZ1bmN0aW9uIFdmdCh0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sQzcodCxlKX19LHN0YWNrT3JkZXJBc2NlbmRpbmc6TDcsc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gcWZ0KHQpe3JldHVybiBMNyh0KS5yZXZlcnNlKCl9LHN0YWNrT3JkZXJJbnNpZGVPdXQ6ZnVuY3Rpb24gWWZ0KHQpe3ZhciBlLG4saT10Lmxlbmd0aCxyPXQubWFwKFA3KSxvPUE3KHQpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJbZV0tclt0XX0pKSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6QTcsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gWGZ0KHQpe3JldHVybiBBNyh0KS5yZXZlcnNlKCl9LHRpbWVJbnRlcnZhbDpSNyx0aW1lTWlsbGlzZWNvbmQ6TzcsdGltZU1pbGxpc2Vjb25kczp6Nyx1dGNNaWxsaXNlY29uZDpPNyx1dGNNaWxsaXNlY29uZHM6ejcsdGltZVNlY29uZDpVNyx0aW1lU2Vjb25kczpqNyx1dGNTZWNvbmQ6VTcsdXRjU2Vjb25kczpqNyx0aW1lTWludXRlOkc3LHRpbWVNaW51dGVzOlc3LHRpbWVIb3VyOnE3LHRpbWVIb3VyczpZNyx0aW1lRGF5Olg3LHRpbWVEYXlzOiQ3LHRpbWVXZWVrOlo3LHRpbWVXZWVrczpydHQsdGltZVN1bmRheTpaNyx0aW1lU3VuZGF5czpydHQsdGltZU1vbmRheTpKNyx0aW1lTW9uZGF5czpvdHQsdGltZVR1ZXNkYXk6UTcsdGltZVR1ZXNkYXlzOmF0dCx0aW1lV2VkbmVzZGF5OnR0dCx0aW1lV2VkbmVzZGF5czpzdHQsdGltZVRodXJzZGF5OmV0dCx0aW1lVGh1cnNkYXlzOmx0dCx0aW1lRnJpZGF5Om50dCx0aW1lRnJpZGF5czpjdHQsdGltZVNhdHVyZGF5Oml0dCx0aW1lU2F0dXJkYXlzOnV0dCx0aW1lTW9udGg6aHR0LHRpbWVNb250aHM6ZHR0LHRpbWVZZWFyOnB0dCx0aW1lWWVhcnM6ZnR0LHV0Y01pbnV0ZTptdHQsdXRjTWludXRlczpndHQsdXRjSG91cjpfdHQsdXRjSG91cnM6eXR0LHV0Y0RheTp2dHQsdXRjRGF5czpidHQsdXRjV2Vlazp3dHQsdXRjV2Vla3M6a3R0LHV0Y1N1bmRheTp3dHQsdXRjU3VuZGF5czprdHQsdXRjTW9uZGF5OlN0dCx1dGNNb25kYXlzOkx0dCx1dGNUdWVzZGF5Ok10dCx1dGNUdWVzZGF5czpQdHQsdXRjV2VkbmVzZGF5OkV0dCx1dGNXZWRuZXNkYXlzOk50dCx1dGNUaHVyc2RheTpUdHQsdXRjVGh1cnNkYXlzOkl0dCx1dGNGcmlkYXk6Q3R0LHV0Y0ZyaWRheXM6UnR0LHV0Y1NhdHVyZGF5OkF0dCx1dGNTYXR1cmRheXM6T3R0LHV0Y01vbnRoOnp0dCx1dGNNb250aHM6RHR0LHV0Y1llYXI6QnR0LHV0Y1llYXJzOkh0dCx0aW1lRm9ybWF0RGVmYXVsdExvY2FsZTpUbnQsZ2V0IHRpbWVGb3JtYXQoKXtyZXR1cm4gaGV0fSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIGRldH0sZ2V0IHV0Y0Zvcm1hdCgpe3JldHVybiBwZXR9LGdldCB1dGNQYXJzZSgpe3JldHVybiBmZXR9LHRpbWVGb3JtYXRMb2NhbGU6Y2V0LGlzb0Zvcm1hdDpMbnQsaXNvUGFyc2U6Tm50LG5vdzpVbnQsdGltZXI6V250LHRpbWVyRmx1c2g6cW50LHRpbWVvdXQ6ZnVuY3Rpb24gJGZ0KHQsZSxuKXt2YXIgaT1uZXcgR250O3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9LGludGVydmFsOmZ1bmN0aW9uIEtmdCh0LGUsbil7dmFyIGk9bmV3IEdudCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP1VudCgpOituLGkucmVzdGFydCgoZnVuY3Rpb24gbyhhKXthKz1yLGkucmVzdGFydChvLHIrPWUsbiksdChhKX0pLGUsbiksaSl9LHRyYW5zaXRpb246TmF0LGFjdGl2ZTpmdW5jdGlvbiBaZnQodCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IFBhdChbW3RdXSxuc3QsZSwraSk7cmV0dXJuIG51bGx9LGludGVycnVwdDpob3Qsdm9yb25vaTpmdW5jdGlvbiBKZnQoKXt2YXIgdD1yc3QsZT1vc3Qsbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBGc3QoaS5tYXAoKGZ1bmN0aW9uKG4scil7dmFyIG89W01hdGgucm91bmQodChuLHIsaSkvenN0KSp6c3QsTWF0aC5yb3VuZChlKG4scixpKS96c3QpKnpzdF07cmV0dXJuIG8uaW5kZXg9cixvLmRhdGE9bixvfSkpLG4pfXJldHVybiBpLnBvbHlnb25zPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnBvbHlnb25zKCl9LGkubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkubGlua3MoKX0saS50cmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkudHJpYW5nbGVzKCl9LGkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmlzdCgrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6aXN0KCt0KSxpKTplfSxpLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6W1srdFswXVswXSwrdFswXVsxXV0sWyt0WzFdWzBdLCt0WzFdWzFdXV0saSk6biYmW1tuWzBdWzBdLG5bMF1bMV1dLFtuWzFdWzBdLG5bMV1bMV1dXX0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWzAsMF0sWyt0WzBdLCt0WzFdXV0saSk6biYmW25bMV1bMF0tblswXVswXSxuWzFdWzFdLW5bMF1bMV1dfSxpfSx6b29tOmZ1bmN0aW9uIFFmdCgpe3ZhciB0LGUsbj12ZHQsaT1iZHQscj1NZHQsbz13ZHQsYT1TZHQscz1bMCwxLzBdLGw9W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0sYz0yNTAsdT1WdXQsaD1bXSxkPVVzdCgic3RhcnQiLCJ6b29tIiwiZW5kIikscD01MDAsZj0wO2Z1bmN0aW9uIG0odCl7dC5wcm9wZXJ0eSgiX196b29tIix4ZHQpLm9uKCJ3aGVlbC56b29tIix3KS5vbigibW91c2Vkb3duLnpvb20iLFMpLm9uKCJkYmxjbGljay56b29tIixNKS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuem9vbSIsRSkub24oInRvdWNobW92ZS56b29tIixUKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixDKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gZyh0LGUpe3JldHVybihlPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlKSkpPT09dC5rP3Q6bmV3IGRkdChlLHQueCx0LnkpfWZ1bmN0aW9uIF8odCxlLG4pe3ZhciBpPWVbMF0tblswXSp0Lmsscj1lWzFdLW5bMV0qdC5rO3JldHVybiBpPT09dC54JiZyPT09dC55P3Q6bmV3IGRkdCh0LmssaSxyKX1mdW5jdGlvbiB5KHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHYodCxlLG4pe3Qub24oInN0YXJ0Lnpvb20iLChmdW5jdGlvbigpe2IodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIiwoZnVuY3Rpb24oKXtiKHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pKS50d2Vlbigiem9vbSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxyPWFyZ3VtZW50cyxvPWIodCxyKSxhPWkuYXBwbHkodCxyKSxzPW58fHkoYSksbD1NYXRoLm1heChhWzFdWzBdLWFbMF1bMF0sYVsxXVsxXS1hWzBdWzFdKSxjPXQuX196b29tLGg9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LHIpOmUsZD11KGMuaW52ZXJ0KHMpLmNvbmNhdChsL2MuayksaC5pbnZlcnQocykuY29uY2F0KGwvaC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9aDtlbHNle3ZhciBlPWQodCksbj1sL2VbMl07dD1uZXcgZGR0KG4sc1swXS1lWzBdKm4sc1sxXS1lWzFdKm4pfW8uem9vbShudWxsLHQpfX0pKX1mdW5jdGlvbiBiKHQsZSl7Zm9yKHZhciBuLGk9MCxyPWgubGVuZ3RoO2k8cjsrK2kpaWYoKG49aFtpXSkudGhhdD09PXQpcmV0dXJuIG47cmV0dXJuIG5ldyB4KHQsZSl9ZnVuY3Rpb24geCh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuaW5kZXg9LTEsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD1pLmFwcGx5KHQsZSl9ZnVuY3Rpb24gdygpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD1iKHRoaXMsYXJndW1lbnRzKSxlPXRoaXMuX196b29tLGk9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUuaypNYXRoLnBvdygyLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLGE9b2N0KHRoaXMpO2lmKHQud2hlZWwpdC5tb3VzZVswXVswXT09PWFbMF0mJnQubW91c2VbMF1bMV09PT1hWzFdfHwodC5tb3VzZVsxXT1lLmludmVydCh0Lm1vdXNlWzBdPWEpKSxjbGVhclRpbWVvdXQodC53aGVlbCk7ZWxzZXtpZihlLms9PT1pKXJldHVybjt0Lm1vdXNlPVthLGUuaW52ZXJ0KGEpXSxkaHQodGhpcyksdC5zdGFydCgpfXlkdCgpLHQud2hlZWw9c2V0VGltZW91dChjLDE1MCksdC56b29tKCJtb3VzZSIscihfKGcoZSxpKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiBjKCl7dC53aGVlbD1udWxsLHQuZW5kKCl9fWZ1bmN0aW9uIFMoKXtpZighZSYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PWIodGhpcyxhcmd1bWVudHMpLGk9bmN0KEdsdC52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLGMsITApLm9uKCJtb3VzZXVwLnpvb20iLHUsITApLG89b2N0KHRoaXMpLGE9R2x0LmNsaWVudFgscz1HbHQuY2xpZW50WTtsY3QoR2x0LnZpZXcpLF9kdCgpLHQubW91c2U9W28sdGhpcy5fX3pvb20uaW52ZXJ0KG8pXSxkaHQodGhpcyksdC5zdGFydCgpfWZ1bmN0aW9uIGMoKXtpZih5ZHQoKSwhdC5tb3ZlZCl7dmFyIGU9R2x0LmNsaWVudFgtYSxuPUdsdC5jbGllbnRZLXM7dC5tb3ZlZD1lKmUrbipuPmZ9dC56b29tKCJtb3VzZSIscihfKHQudGhhdC5fX3pvb20sdC5tb3VzZVswXT1vY3QodC50aGF0KSx0Lm1vdXNlWzFdKSx0LmV4dGVudCxsKSl9ZnVuY3Rpb24gdSgpe2kub24oIm1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbSIsbnVsbCksY2N0KEdsdC52aWV3LHQubW92ZWQpLHlkdCgpLHQuZW5kKCl9fWZ1bmN0aW9uIE0oKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9dGhpcy5fX3pvb20sZT1vY3QodGhpcyksbz10LmludmVydChlKSxhPXQuayooR2x0LnNoaWZ0S2V5Py41OjIpLHM9cihfKGcodCxhKSxlLG8pLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGwpO3lkdCgpLGM+MD9uY3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKGMpLmNhbGwodixzLGUpOm5jdCh0aGlzKS5jYWxsKG0udHJhbnNmb3JtLHMpfX1mdW5jdGlvbiBFKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLGkscixvLGE9Yih0aGlzLGFyZ3VtZW50cykscz1HbHQuY2hhbmdlZFRvdWNoZXMsbD1zLmxlbmd0aDtmb3IoX2R0KCksaT0wO2k8bDsrK2kpbz1bbz1hY3QodGhpcyxzLChyPXNbaV0pLmlkZW50aWZpZXIpLHRoaXMuX196b29tLmludmVydChvKSxyLmlkZW50aWZpZXJdLGEudG91Y2gwP2EudG91Y2gxfHwoYS50b3VjaDE9byk6KGEudG91Y2gwPW8sZT0hMCk7aWYodCYmKHQ9Y2xlYXJUaW1lb3V0KHQpLCFhLnRvdWNoMSkpcmV0dXJuIGEuZW5kKCksdm9pZCgobz1uY3QodGhpcykub24oImRibGNsaWNrLnpvb20iKSkmJm8uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtlJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Q9bnVsbH0pLHApLGRodCh0aGlzKSxhLnN0YXJ0KCkpfX1mdW5jdGlvbiBUKCl7dmFyIGUsbixpLG8sYT1iKHRoaXMsYXJndW1lbnRzKSxzPUdsdC5jaGFuZ2VkVG91Y2hlcyxjPXMubGVuZ3RoO2Zvcih5ZHQoKSx0JiYodD1jbGVhclRpbWVvdXQodCkpLGU9MDtlPGM7KytlKWk9YWN0KHRoaXMscywobj1zW2VdKS5pZGVudGlmaWVyKSxhLnRvdWNoMCYmYS50b3VjaDBbMl09PT1uLmlkZW50aWZpZXI/YS50b3VjaDBbMF09aTphLnRvdWNoMSYmYS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJihhLnRvdWNoMVswXT1pKTtpZihuPWEudGhhdC5fX3pvb20sYS50b3VjaDEpe3ZhciB1PWEudG91Y2gwWzBdLGg9YS50b3VjaDBbMV0sZD1hLnRvdWNoMVswXSxwPWEudG91Y2gxWzFdLGY9KGY9ZFswXS11WzBdKSpmKyhmPWRbMV0tdVsxXSkqZixtPShtPXBbMF0taFswXSkqbSsobT1wWzFdLWhbMV0pKm07bj1nKG4sTWF0aC5zcXJ0KGYvbSkpLGk9Wyh1WzBdK2RbMF0pLzIsKHVbMV0rZFsxXSkvMl0sbz1bKGhbMF0rcFswXSkvMiwoaFsxXStwWzFdKS8yXX1lbHNle2lmKCFhLnRvdWNoMClyZXR1cm47aT1hLnRvdWNoMFswXSxvPWEudG91Y2gwWzFdfWEuem9vbSgidG91Y2giLHIoXyhuLGksbyksYS5leHRlbnQsbCkpfWZ1bmN0aW9uIEMoKXt2YXIgdCxuLGk9Yih0aGlzLGFyZ3VtZW50cykscj1HbHQuY2hhbmdlZFRvdWNoZXMsbz1yLmxlbmd0aDtmb3IoX2R0KCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSxwKSx0PTA7dDxvOysrdCluPXJbdF0saS50b3VjaDAmJmkudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2RlbGV0ZSBpLnRvdWNoMDppLnRvdWNoMSYmaS50b3VjaDFbMl09PT1uLmlkZW50aWZpZXImJmRlbGV0ZSBpLnRvdWNoMTtpLnRvdWNoMSYmIWkudG91Y2gwJiYoaS50b3VjaDA9aS50b3VjaDEsZGVsZXRlIGkudG91Y2gxKSxpLnRvdWNoMD9pLnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoaS50b3VjaDBbMF0pOmkuZW5kKCl9cmV0dXJuIG0udHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O24ucHJvcGVydHkoIl9fem9vbSIseGR0KSx0IT09bj92KHQsZSk6bi5pbnRlcnJ1cHQoKS5lYWNoKChmdW5jdGlvbigpe2IodGhpcyxhcmd1bWVudHMpLnN0YXJ0KCkuem9vbShudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUpLmVuZCgpfSkpfSxtLnNjYWxlQnk9ZnVuY3Rpb24odCxlKXttLnNjYWxlVG8odCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSkpfSxtLnNjYWxlVG89ZnVuY3Rpb24odCxlKXttLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG49dGhpcy5fX3pvb20sbz15KHQpLGE9bi5pbnZlcnQobykscz0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplO3JldHVybiByKF8oZyhuLHMpLG8sYSksdCxsKX0pKX0sbS50cmFuc2xhdGVCeT1mdW5jdGlvbih0LGUsbil7bS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9fem9vbS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSwiZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsKX0pKX0sbS50cmFuc2xhdGVUbz1mdW5jdGlvbih0LGUsbil7bS50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXRoaXMuX196b29tLGE9eSh0KTtyZXR1cm4gcihtZHQudHJhbnNsYXRlKGFbMF0sYVsxXSkuc2NhbGUoby5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/LWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1lLCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiksdCxsKX0pKX0seC5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLmluZGV4PWgucHVzaCh0aGlzKS0xLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdXNlJiYibW91c2UiIT09dCYmKHRoaXMubW91c2VbMV09ZS5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gwWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDFbMV09ZS5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPWUsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihoLnNwbGljZSh0aGlzLmluZGV4LDEpLHRoaXMuaW5kZXg9LTEsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXshKGZ1bmN0aW9uIGUodCxuLGkscil7dmFyIG89R2x0O3Quc291cmNlRXZlbnQ9R2x0LEdsdD10O3RyeXtuLmFwcGx5KGkscil9ZmluYWxseXtHbHQ9b319KShuZXcgaGR0KG0sdCx0aGlzLnRoYXQuX196b29tKSxkLmFwcGx5LGQsW3QsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sbS53aGVlbERlbHRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dWR0KCt0KSxtKTpvfSxtLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnVkdCghIXQpLG0pOm59LG0udG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dWR0KCEhdCksbSk6YX0sbS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp1ZHQoW1srdFswXVswXSwrdFswXVsxXV0sWyt0WzFdWzBdLCt0WzFdWzFdXV0pLG0pOml9LG0uc2NhbGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHNbMF09K3RbMF0sc1sxXT0rdFsxXSxtKTpbc1swXSxzWzFdXX0sbS50cmFuc2xhdGVFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGxbMF1bMF09K3RbMF1bMF0sbFsxXVswXT0rdFsxXVswXSxsWzBdWzFdPSt0WzBdWzFdLGxbMV1bMV09K3RbMV1bMV0sbSk6W1tsWzBdWzBdLGxbMF1bMV1dLFtsWzFdWzBdLGxbMV1bMV1dXX0sbS5jb25zdHJhaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxtKTpyfSxtLmR1cmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LG0pOmN9LG0uaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxtKTp1fSxtLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9ZC5vbi5hcHBseShkLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1kP206dH0sbS5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSh0PSt0KSp0LG0pOk1hdGguc3FydChmKX0sbX0sem9vbVRyYW5zZm9ybTpnZHQsem9vbUlkZW50aXR5Om1kdH0pKTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKgogICAgICogQGZpbGVvdmVydmlldyBtYW51YWxseSBhZGQgZDMtc2VsZWN0aW9uLW11bHRpIHRvIGQzIGRlZmF1bHQgYnVuZGxlLiBNb3N0IG9mIHRoaXMgY29kZSBpcwogICAgICogY29waWVkIGZyb20gZDMtc2VsZWN0aW9uLW11bHRpQDEuMC4wLgogICAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kMy9kMy1zZWxlY3Rpb24tbXVsdGkvaXNzdWVzLzExIGZvciB3aHkgd2UgaGF2ZSB0byBkbyB0aGlzCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdG10PUVkdCxlbXQ9RWR0O2Z1bmN0aW9uIG5tdCh0LGUpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj10bXQuc2VsZWN0KHRoaXMpO2Zvcih2YXIgaSBpbiB0KW4uYXR0cihpLHRbaV0pfSkpfWZ1bmN0aW9uIGltdCh0LGUpe2Zvcih2YXIgbiBpbiBlKXQuYXR0cihuLGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIHJtdCh0LGUsbil7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPXRtdC5zZWxlY3QodGhpcyk7Zm9yKHZhciByIGluIHQpaS5zdHlsZShyLHRbcl0sbil9KSl9ZnVuY3Rpb24gb210KHQsZSxuKXtmb3IodmFyIGkgaW4gZSl0LnN0eWxlKGksZVtpXSxuKTtyZXR1cm4gdH1mdW5jdGlvbiBhbXQodCxlKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLG49dG10LnNlbGVjdCh0aGlzKTtmb3IodmFyIGkgaW4gdCluLnByb3BlcnR5KGksdFtpXSl9KSl9ZnVuY3Rpb24gc210KHQsZSl7Zm9yKHZhciBuIGluIGUpdC5wcm9wZXJ0eShuLGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGxtdCh0LGUpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksaT10bXQuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odCk7Zm9yKHZhciByIGluIG4paS5hdHRyKHIsbltyXSl9KSl9ZnVuY3Rpb24gY210KHQsZSl7Zm9yKHZhciBuIGluIGUpdC5hdHRyKG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gdW10KHQsZSxuKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dG10LnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKHQpO2Zvcih2YXIgbyBpbiBpKXIuc3R5bGUobyxpW29dLG4pfSkpfWZ1bmN0aW9uIGhtdCh0LGUsbil7Zm9yKHZhciBpIGluIGUpdC5zdHlsZShpLGVbaV0sbik7cmV0dXJuIHR9dG10LnNlbGVjdGlvbi5wcm90b3R5cGUuYXR0cnM9ZnVuY3Rpb24gZG10KHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD9ubXQ6aW10KSh0aGlzLHQpfSx0bXQuc2VsZWN0aW9uLnByb3RvdHlwZS5zdHlsZXM9ZnVuY3Rpb24gcG10KHQsZSl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3JtdDpvbXQpKHRoaXMsdCxudWxsPT1lPyIiOmUpfSx0bXQuc2VsZWN0aW9uLnByb3RvdHlwZS5wcm9wZXJ0aWVzPWZ1bmN0aW9uIGZtdCh0KXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/YW10OnNtdCkodGhpcyx0KX0sZW10LnRyYW5zaXRpb24ucHJvdG90eXBlLmF0dHJzPWZ1bmN0aW9uIG1tdCh0KXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/bG10OmNtdCkodGhpcyx0KX0sZW10LnRyYW5zaXRpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbiBnbXQodCxlKXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/dW10OmhtdCkodGhpcyx0LG51bGw9PWU/IiI6ZSl9O3ZhciBfbXQ9e30seW10PXt9LHZtdD1iZSh2bSksYm10PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShibXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB4bXQ9RWR0O2JtdC5jb2VyY2VFeHRlcm5hbEQzPWZ1bmN0aW9uIHdtdCh0KXtpZihudWxsPT10LmF0dHJzKXtpZihudWxsPT10Lm5vZGVzKXt2YXIgZT1bXTtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe2UucHVzaCh0aGlzKX0pKSx4bXQuc2VsZWN0QWxsKGUpfXJldHVybiB4bXQuc2VsZWN0QWxsKHQubm9kZXMoKSl9cmV0dXJuIHR9O3ZhciBTbXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFNtdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksU210Lm1ha2VFbnVtPWZ1bmN0aW9uIE1tdCh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV09ZSx0fSkse30pfSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHltdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEVtdD1ibXQsVG10PXtsaW5lYXI6dm10LmVhc2VMaW5lYXIscXVhZDp2bXQuZWFzZVF1YWQscXVhZEluOnZtdC5lYXNlUXVhZEluLHF1YWRPdXQ6dm10LmVhc2VRdWFkT3V0LHF1YWRJbk91dDp2bXQuZWFzZVF1YWRJbk91dCxjdWJpYzp2bXQuZWFzZUN1YmljLGN1YmljSW46dm10LmVhc2VDdWJpY0luLGN1YmljT3V0OnZtdC5lYXNlQ3ViaWNPdXQsY3ViaWNJbk91dDp2bXQuZWFzZUN1YmljSW5PdXQscG9seTp2bXQuZWFzZVBvbHkscG9seUluOnZtdC5lYXNlUG9seUluLHBvbHlPdXQ6dm10LmVhc2VQb2x5T3V0LHBvbHlJbk91dDp2bXQuZWFzZVBvbHlJbk91dCxzaW46dm10LmVhc2VTaW4sc2luSW46dm10LmVhc2VTaW5JbixzaW5PdXQ6dm10LmVhc2VTaW5PdXQsc2luSW5PdXQ6dm10LmVhc2VTaW5Jbk91dCxleHA6dm10LmVhc2VFeHAsZXhwSW46dm10LmVhc2VFeHBJbixleHBPdXQ6dm10LmVhc2VFeHBPdXQsZXhwSW5PdXQ6dm10LmVhc2VFeHBJbk91dCxjaXJjbGU6dm10LmVhc2VDaXJjbGUsY2lyY2xlSW46dm10LmVhc2VDaXJjbGVJbixjaXJjbGVPdXQ6dm10LmVhc2VDaXJjbGVPdXQsY2lyY2xlSW5PdXQ6dm10LmVhc2VDaXJjbGVJbk91dCxib3VuY2U6dm10LmVhc2VCb3VuY2UsYm91bmNlSW46dm10LmVhc2VCb3VuY2VJbixib3VuY2VPdXQ6dm10LmVhc2VCb3VuY2VPdXQsYm91bmNlSW5PdXQ6dm10LmVhc2VCb3VuY2VJbk91dCxiYWNrOnZtdC5lYXNlQmFjayxiYWNrSW46dm10LmVhc2VCYWNrSW4sYmFja091dDp2bXQuZWFzZUJhY2tPdXQsYmFja0luT3V0OnZtdC5lYXNlQmFja0luT3V0LGVsYXN0aWM6dm10LmVhc2VFbGFzdGljLGVsYXN0aWNJbjp2bXQuZWFzZUVsYXN0aWNJbixlbGFzdGljT3V0OnZtdC5lYXNlRWxhc3RpY091dCxlbGFzdGljSW5PdXQ6dm10LmVhc2VFbGFzdGljSW5PdXR9O3ltdC5FYXNlTmFtZT1TbXQubWFrZUVudW0oWyJsaW5lYXIiLCJxdWFkIiwicXVhZEluIiwicXVhZE91dCIsInF1YWRJbk91dCIsImN1YmljIiwiY3ViaWNJbiIsImN1YmljT3V0IiwiY3ViaWNJbk91dCIsInBvbHkiLCJwb2x5SW4iLCJwb2x5T3V0IiwicG9seUluT3V0Iiwic2luIiwic2luSW4iLCJzaW5PdXQiLCJzaW5Jbk91dCIsImV4cCIsImV4cEluIiwiZXhwT3V0IiwiZXhwSW5PdXQiLCJjaXJjbGUiLCJjaXJjbGVJbiIsImNpcmNsZU91dCIsImNpcmNsZUluT3V0IiwiYm91bmNlIiwiYm91bmNlSW4iLCJib3VuY2VPdXQiLCJib3VuY2VJbk91dCIsImJhY2siLCJiYWNrSW4iLCJiYWNrT3V0IiwiYmFja0luT3V0IiwiZWxhc3RpYyIsImVsYXN0aWNJbiIsImVsYXN0aWNPdXQiLCJlbGFzdGljSW5PdXQiXSk7dmFyIENtdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3RhcnREZWxheT10Ll9ERUZBVUxUX1NUQVJUX0RFTEFZX01JTExJU0VDT05EUyx0aGlzLl9zdGVwRHVyYXRpb249dC5fREVGQVVMVF9TVEVQX0RVUkFUSU9OX01JTExJU0VDT05EUyx0aGlzLl9zdGVwRGVsYXk9dC5fREVGQVVMVF9JVEVSQVRJVkVfREVMQVlfTUlMTElTRUNPTkRTLHRoaXMuX21heFRvdGFsRHVyYXRpb249dC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTLHRoaXMuX2Vhc2luZ01vZGU9dC5fREVGQVVMVF9FQVNJTkdfTU9ERX1yZXR1cm4gdC5wcm90b3R5cGUudG90YWxUaW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXkodCk7cmV0dXJuIHRoaXMuc3RhcnREZWxheSgpK2UqTWF0aC5tYXgodC0xLDApK3RoaXMuc3RlcER1cmF0aW9uKCl9LHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9KHQ9RW10LmNvZXJjZUV4dGVybmFsRDModCkpLnNpemUoKSxyPXRoaXMuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXkoaSk7cmV0dXJuIHQudHJhbnNpdGlvbigpLmVhc2UodGhpcy5fZ2V0RWFzZUZhY3RvcnkoKSkuZHVyYXRpb24odGhpcy5zdGVwRHVyYXRpb24oKSkuZGVsYXkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc3RhcnREZWxheSgpK3IqZX0pKS5hdHRycyhlKX0sdC5wcm90b3R5cGUuc3RhcnREZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFydERlbGF5Oih0aGlzLl9zdGFydERlbGF5PXQsdGhpcyl9LHQucHJvdG90eXBlLnN0ZXBEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9NYXRoLm1pbih0aGlzLl9zdGVwRHVyYXRpb24sdGhpcy5fbWF4VG90YWxEdXJhdGlvbik6KHRoaXMuX3N0ZXBEdXJhdGlvbj10LHRoaXMpfSx0LnByb3RvdHlwZS5zdGVwRGVsYXk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RlcERlbGF5Oih0aGlzLl9zdGVwRGVsYXk9dCx0aGlzKX0sdC5wcm90b3R5cGUubWF4VG90YWxEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhUb3RhbER1cmF0aW9uOih0aGlzLl9tYXhUb3RhbER1cmF0aW9uPXQsdGhpcyl9LHQucHJvdG90eXBlLmVhc2luZ01vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZWFzaW5nTW9kZToodGhpcy5fZWFzaW5nTW9kZT10LHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RWFzZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVhc2luZ01vZGUoKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPVRtdFt0XTtyZXR1cm4gbnVsbD09ZT9UbXQubGluZWFyOmV9cmV0dXJuIHR9LHQucHJvdG90eXBlLl9nZXRBZGp1c3RlZEl0ZXJhdGl2ZURlbGF5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWF4VG90YWxEdXJhdGlvbigpLXRoaXMuc3RlcER1cmF0aW9uKCksbj0oZT1NYXRoLm1heChlLDApKS9NYXRoLm1heCh0LTEsMSk7cmV0dXJuIE1hdGgubWluKHRoaXMuc3RlcERlbGF5KCksbil9LHQuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTPTAsdC5fREVGQVVMVF9TVEVQX0RVUkFUSU9OX01JTExJU0VDT05EUz0zMDAsdC5fREVGQVVMVF9JVEVSQVRJVkVfREVMQVlfTUlMTElTRUNPTkRTPTE1LHQuX0RFRkFVTFRfTUFYX1RPVEFMX0RVUkFUSU9OX01JTExJU0VDT05EUz0xLzAsdC5fREVGQVVMVF9FQVNJTkdfTU9ERT0iZXhwT3V0Iix0fSkoKTt5bXQuRWFzaW5nPUNtdDt2YXIgQW10PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShBbXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrbXQ9Ym10LExtdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIDB9LHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4odD1rbXQuY29lcmNlRXh0ZXJuYWxEMyh0KSkuYXR0cnMoZSl9LHR9KSgpO0FtdC5OdWxsPUxtdCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT11TztlLl9fZXhwb3J0U3Rhcih5bXQsdCksZS5fX2V4cG9ydFN0YXIoQW10LHQpfSkoX210KTt2YXIgUG10PXt9LE5tdD17fSxJbXQ9e30sUm10PXt9LE9tdD17fSx6bXQ9e30sRG10PXt9LEJtdD17fSxIbXQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KEhtdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEZtdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY2FjaGU9e30sdGhpcy5jb21wdXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jYWNoZS5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuY2FjaGVbdF09dGhpcy5jb21wdXRlKHQpKSx0aGlzLmNhY2hlW3RdfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhY2hlPXt9LHRoaXN9LHR9KSgpO0htdC5DYWNoZT1GbXQ7dmFyIFZtdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoVm10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVW10PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuYXJyYXlFcT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PXR8fG51bGw9PWUpcmV0dXJuIHQ9PT1lO2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9LHQub2JqRXE9ZnVuY3Rpb24oZSxuKXtpZihudWxsPT1lfHxudWxsPT1uKXJldHVybiBlPT09bjt2YXIgaT1PYmplY3Qua2V5cyhlKS5zb3J0KCkscj1PYmplY3Qua2V5cyhuKS5zb3J0KCksbz1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSksYT1yLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19KSk7cmV0dXJuIHQuYXJyYXlFcShpLHIpJiZ0LmFycmF5RXEobyxhKX0sdC5zdHJpY3RFcT1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZX0sdC5kZWZhdWx0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO3ZhciBpPU9iamVjdCh0KTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZihudWxsIT10KWZvcih2YXIgZSBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiYoaVtlXT10W2VdKX0pKSxpfSx0fSkoKTtWbXQuTWV0aG9kcz1VbXQ7dmFyIGptdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoam10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgR210PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuY29tYmluZVdoaXRlc3BhY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvWyBcdF0rL2csIiAiKX0sdC5pc05vdEVtcHR5U3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiIiE9PXQudHJpbSgpfSx0LnRyaW1TdGFydD1mdW5jdGlvbihlLG4pe2lmKCFlKXJldHVybiBlO3ZhciBpPWUuc3BsaXQoIiIpLHI9bj9mdW5jdGlvbihlKXtyZXR1cm4gZS5zcGxpdChuKS5zb21lKHQuaXNOb3RFbXB0eVN0cmluZyl9OnQuaXNOb3RFbXB0eVN0cmluZztyZXR1cm4gaS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIodCtlKT90K2U6dH0pLCIiKX0sdC50cmltRW5kPWZ1bmN0aW9uKGUsbil7aWYoIWUpcmV0dXJuIGU7dmFyIGk9ZS5zcGxpdCgiIik7cmV0dXJuIGkucmV2ZXJzZSgpLChpPXQudHJpbVN0YXJ0KGkuam9pbigiIiksbikuc3BsaXQoIiIpKS5yZXZlcnNlKCksaS5qb2luKCIiKX0sdH0pKCk7am10LlN0cmluZ01ldGhvZHM9R210O3ZhciBXbXQ9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KFdtdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHFtdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5Xb3JkRGl2aWRlclJlZ0V4cD1uZXcgUmVnRXhwKCJcXFciKSx0aGlzLldoaXRlc3BhY2VSZWdFeHA9bmV3IFJlZ0V4cCgiXFxzIil9cmV0dXJuIHQucHJvdG90eXBlLnRva2VuaXplPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHQuc3BsaXQoIiIpLnJlZHVjZSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zbGljZSgwLC0xKS5jb25jYXQoZS5zaG91bGRDcmVhdGVOZXdUb2tlbih0W3QubGVuZ3RoLTFdLG4pKX0pLFsiIl0pfSx0LnByb3RvdHlwZS5zaG91bGRDcmVhdGVOZXdUb2tlbj1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybltlXTt2YXIgbj10W3QubGVuZ3RoLTFdO3JldHVybiB0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChuKSYmdGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3QoZSk/W3QrZV06dGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3Qobil8fHRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGUpP1t0LGVdOnRoaXMuV29yZERpdmlkZXJSZWdFeHAudGVzdChuKT9uPT09ZT9bdCtlXTpbdCxlXTpbdCtlXX0sdH0pKCk7V210LlRva2VuaXplcj1xbXQsKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZVtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUoSG10KSxlKFZtdCksZShqbXQpLGUoV210KX0pKEJtdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KERtdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFltdD1CbXQsWG10PXt0ZXh0Um90YXRpb246MCx0ZXh0U2hlYXI6MCx4QWxpZ246ImxlZnQiLHlBbGlnbjoidG9wIn0sJG10PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX21lYXN1cmVyPXQsdGhpcy5fcGVuRmFjdG9yeT1lLHRoaXMuX3dyYXBwZXI9bn1yZXR1cm4gdC5wcm90b3R5cGUubWVhc3VyZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21lYXN1cmVyPXQsdGhpc30sdC5wcm90b3R5cGUud3JhcHBlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd3JhcHBlcj10LHRoaXN9LHQucHJvdG90eXBlLnBlbkZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BlbkZhY3Rvcnk9dCx0aGlzfSx0LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLG4saSxyLG8pe2lmKHZvaWQgMD09PXImJihyPXt9KSxyPVltdC5NZXRob2RzLmRlZmF1bHRzKHt9LFhtdCxyKSwtMT09PXQuU3VwcG9ydGVkUm90YXRpb24uaW5kZXhPZihyLnRleHRSb3RhdGlvbikpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCByb3RhdGlvbiAtICIrci50ZXh0Um90YXRpb24rIi4gU3VwcG9ydGVkIHJvdGF0aW9ucyBhcmUgIit0LlN1cHBvcnRlZFJvdGF0aW9uLmpvaW4oIiwgIikpO2lmKG51bGwhPXIudGV4dFNoZWFyJiZyLnRleHRTaGVhcjwtODB8fHIudGV4dFNoZWFyPjgwKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgc2hlYXIgYW5nbGUgLSAiK3IudGV4dFNoZWFyKyIuIE11c3QgYmUgYmV0d2VlbiAtODAgYW5kIDgwIik7dmFyIGE9TWF0aC5hYnMoTWF0aC5hYnMoci50ZXh0Um90YXRpb24pLTkwKT40NSxzPWE/bjppLGw9YT9pOm4sYz1yLnRleHRTaGVhcix1PWMqTWF0aC5QSS8xODAsaD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LGQ9aCpNYXRoLnRhbih1KSxwPXMvTWF0aC5jb3ModSktTWF0aC5hYnMoZCksZj1sKk1hdGguY29zKHUpLG09WW10LlN0cmluZ01ldGhvZHMuY29tYmluZVdoaXRlc3BhY2UoZSksZz0odGhpcy5fd3JhcHBlcj90aGlzLl93cmFwcGVyLndyYXAobSx0aGlzLl9tZWFzdXJlcixwLGYpLndyYXBwZWRUZXh0Om0pLnNwbGl0KCJcbiIpLF89dC5YT2Zmc2V0RmFjdG9yW3IueEFsaWduXSpwKk1hdGguc2luKHUpLXQuWU9mZnNldEZhY3RvcltyLnlBbGlnbl0qKGYtZy5sZW5ndGgqaCkseT1bMCwwXSx2PXIudGV4dFJvdGF0aW9uK2M7c3dpdGNoKHIudGV4dFJvdGF0aW9uKXtjYXNlIDkwOnk9W24rXywwXTticmVhaztjYXNlLTkwOnk9Wy1fLGldO2JyZWFrO2Nhc2UgMTgwOnk9W24saStfXTticmVhaztkZWZhdWx0Onk9WzAsLV9dfXZhciBiPXRoaXMuX3BlbkZhY3RvcnkuY3JlYXRlUGVuKGUse3RyYW5zbGF0ZTp5LHJvdGF0ZTp2fSxvKTt0aGlzLndyaXRlTGluZXMoZyxiLHAsaCxkLHIueEFsaWduKSxudWxsIT1iLmRlc3Ryb3kmJmIuZGVzdHJveSgpfSx0LnByb3RvdHlwZS53cml0ZUxpbmVzPWZ1bmN0aW9uKHQsZSxuLGkscixvKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQsYSl7ZS53cml0ZSh0LG4sbyxyPjA/KGErMSkqcjphKnIsKGErMSkqaSl9KSl9LHR9KSgpOyRtdC5YT2Zmc2V0RmFjdG9yPXtjZW50ZXI6LjUsbGVmdDowLHJpZ2h0OjF9LCRtdC5ZT2Zmc2V0RmFjdG9yPXtib3R0b206MSxjZW50ZXI6LjUsdG9wOjB9LCRtdC5TdXBwb3J0ZWRSb3RhdGlvbj1bLTkwLDAsMTgwLDkwXSxEbXQuV3JpdGVyPSRtdCwoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLChmdW5jdGlvbiBlKG4pe2Zvcih2YXIgaSBpbiBuKXQuaGFzT3duUHJvcGVydHkoaSl8fCh0W2ldPW5baV0pfSkoRG10KX0pKHptdCk7dmFyIEttdD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoS210LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWm10PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuYXBwZW5kPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciBpPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWlbci0yXT1hcmd1bWVudHNbcl07dmFyIG89dC5jcmVhdGUuYXBwbHkodCxbbl0uY29uY2F0KGkpKTtyZXR1cm4gZS5hcHBlbmRDaGlsZChvKSxvfSx0LmNyZWF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIG49W10saT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiB0LmFkZENsYXNzZXMuYXBwbHkodCxbcl0uY29uY2F0KG4pKSxyfSx0LmFkZENsYXNzZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07ZT1lLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSksbnVsbCE9dC5jbGFzc0xpc3Q/ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmNsYXNzTGlzdC5hZGQoZSl9KSk6dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixlLmpvaW4oIiAiKSl9LHQuZ2V0RGltZW5zaW9ucz1mdW5jdGlvbih0KXtpZih0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl0cnl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9fWNhdGNoKHQpe31yZXR1cm57aGVpZ2h0OjAsd2lkdGg6MH19LHR9KSgpO0ttdC5IdG1sVXRpbHM9Wm10O3ZhciBKbXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXRoaXM7dGhpcy5lbGVtZW50PXQsdGhpcy5jbGFzc05hbWU9ZSx0aGlzLmFkZFRpdGxlPW4sdGhpcy5jcmVhdGVSdWxlcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1abXQuYXBwZW5kKGkuZWxlbWVudCwic3BhbiIsInRleHQtdG1wIixpLmNsYXNzTmFtZSk7ZS50ZXh0Q29udGVudD10O3ZhciBuPVptdC5nZXREaW1lbnNpb25zKGUpO3JldHVybiBpLmVsZW1lbnQucmVtb3ZlQ2hpbGQoZSksbn19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxuKXtudWxsPT1uJiYobj1pLmVsZW1lbnQpO3ZhciByPVptdC5hcHBlbmQobiwiZGl2IiwidGV4dC1ibG9jayIsaS5jbGFzc05hbWUpO3JldHVybiByLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsci5zdHlsZS50cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAtMWVtKSB0cmFuc2xhdGUoIitlLnRyYW5zbGF0ZVswXSsicHgsICIrZS50cmFuc2xhdGVbMV0rInB4KSByb3RhdGUoIitlLnJvdGF0ZSsiZGVnKSIsci5zdHlsZS50cmFuc2Zvcm1PcmlnaW49IjAgMS4yZW0iLGkuYWRkVGl0bGUmJnIuc2V0QXR0cmlidXRlKCJ0aXRsZSIsdCksaS5jcmVhdGVIdG1sTGluZVBlbihyKX19cmV0dXJuIHQucHJvdG90eXBlLnNldEFkZFRpdGxlPWZ1bmN0aW9uKHQpe3RoaXMuYWRkVGl0bGU9dH0sdC5wcm90b3R5cGUuY3JlYXRlSHRtbExpbmVQZW49ZnVuY3Rpb24odCl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKGUsbixpLHIsbyl7dmFyIGE9Wm10LmFwcGVuZCh0LCJkaXYiLCJ0ZXh0LWxpbmUiKTthLnRleHRDb250ZW50PWUsYS5zdHlsZS53aWR0aD1uKyJweCIsYS5zdHlsZS50ZXh0QWxpZ249aSxhLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsYS5zdHlsZS53aGl0ZVNwYWNlPSJub3dyYXAiLGEuc3R5bGUudG9wPW8rInB4IixhLnN0eWxlLmxlZnQ9cisicHgifX19LHR9KSgpO0ttdC5IdG1sQ29udGV4dD1KbXQsT2JqZWN0LmRlZmluZVByb3BlcnR5KE9tdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFFtdD16bXQsdGd0PUttdCxlZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcHBlbmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspaVtyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz10LmNyZWF0ZS5hcHBseSh0LFtuXS5jb25jYXQoaSkpO3JldHVybiBlLmFwcGVuZENoaWxkKG8pLG99LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR19OUyxlKTtyZXR1cm4gdGd0Lkh0bWxVdGlscy5hZGRDbGFzc2VzLmFwcGx5KHRndC5IdG1sVXRpbHMsW3JdLmNvbmNhdChuKSkscn0sdC5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0QkJveCl0cnl7dmFyIGU9dC5nZXRCQm94KCk7cmV0dXJue3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fX1jYXRjaCh0KXt9cmV0dXJue2hlaWdodDowLHdpZHRoOjB9fSx0fSkoKTtlZ3QuU1ZHX05TPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsT210LlN2Z1V0aWxzPWVndDt2YXIgbmd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10aGlzO3RoaXMuZWxlbWVudD10LHRoaXMuY2xhc3NOYW1lPWUsdGhpcy5hZGRUaXRsZUVsZW1lbnQ9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7dmFyIHQ9aS5nZXRUZXh0RWxlbWVudHMoaS5lbGVtZW50KSxlPXQucGFyZW50RWxlbWVudCxuPXQuY29udGFpbmVyRWxlbWVudCxyPXQudGV4dEVsZW1lbnQ7cmV0dXJuIGZ1bmN0aW9uKHQpe2UuYXBwZW5kQ2hpbGQobiksci50ZXh0Q29udGVudD10O3ZhciBpPWVndC5nZXREaW1lbnNpb25zKHIpO3JldHVybiBlLnJlbW92ZUNoaWxkKG4pLGl9fSx0aGlzLmNyZWF0ZVBlbj1mdW5jdGlvbih0LGUsbil7bnVsbD09biYmKG49aS5lbGVtZW50KTt2YXIgcj1lZ3QuYXBwZW5kKG4sImciLCJ0ZXh0LWNvbnRhaW5lciIsaS5jbGFzc05hbWUpO2kuYWRkVGl0bGVFbGVtZW50JiYoZWd0LmFwcGVuZChyLCJ0aXRsZSIpLnRleHRDb250ZW50PXQsci5zZXRBdHRyaWJ1dGUoInRpdGxlIix0KSk7dmFyIG89ZWd0LmFwcGVuZChyLCJnIiwidGV4dC1hcmVhIik7cmV0dXJuIG8uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLnRyYW5zbGF0ZVswXSsiLCIrZS50cmFuc2xhdGVbMV0rIilyb3RhdGUoIitlLnJvdGF0ZSsiKSIpLGkuY3JlYXRlU3ZnTGluZVBlbihvKX19cmV0dXJuIHQucHJvdG90eXBlLnNldEFkZFRpdGxlRWxlbWVudD1mdW5jdGlvbih0KXt0aGlzLmFkZFRpdGxlRWxlbWVudD10fSx0LnByb3RvdHlwZS5jcmVhdGVTdmdMaW5lUGVuPWZ1bmN0aW9uKGUpe3JldHVybnt3cml0ZTpmdW5jdGlvbihuLGkscixvLGEpe28rPWkqUW10LldyaXRlci5YT2Zmc2V0RmFjdG9yW3JdO3ZhciBzPWVndC5hcHBlbmQoZSwidGV4dCIsInRleHQtbGluZSIpO3MudGV4dENvbnRlbnQ9bixzLnNldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiLHQuQW5jaG9yTWFwW3JdKSxzLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbysiLCIrYSsiKSIpLHMuc2V0QXR0cmlidXRlKCJ5IiwiLTAuMjVlbSIpfX19LHQucHJvdG90eXBlLmdldFRleHRFbGVtZW50cz1mdW5jdGlvbih0KXtpZigidGV4dCI9PT10LnRhZ05hbWUpcmV0dXJuIG51bGw9PShlPXQucGFyZW50RWxlbWVudCkmJihlPXQucGFyZW50Tm9kZSksZS5yZW1vdmVDaGlsZCh0KSx7Y29udGFpbmVyRWxlbWVudDp0LHBhcmVudEVsZW1lbnQ6ZSx0ZXh0RWxlbWVudDp0fTt2YXIgZSxuPXQucXVlcnlTZWxlY3RvcigidGV4dCIpO2lmKG51bGwhPW4pcmV0dXJuIG51bGw9PShlPW4ucGFyZW50RWxlbWVudCkmJihlPW4ucGFyZW50Tm9kZSksZS5yZW1vdmVDaGlsZChuKSx7Y29udGFpbmVyRWxlbWVudDpuLHBhcmVudEVsZW1lbnQ6ZSx0ZXh0RWxlbWVudDpufTt2YXIgaT1lZ3QuY3JlYXRlKCJ0ZXh0Iix0aGlzLmNsYXNzTmFtZSk7cmV0dXJue2NvbnRhaW5lckVsZW1lbnQ6aSxwYXJlbnRFbGVtZW50OnQsdGV4dEVsZW1lbnQ6aX19LHR9KSgpO25ndC5BbmNob3JNYXA9e2NlbnRlcjoibWlkZGxlIixsZWZ0OiJzdGFydCIscmlnaHQ6ImVuZCJ9LE9tdC5TdmdDb250ZXh0PW5ndDt2YXIgaWd0PXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShpZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByZ3Q9em10LG9ndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0xMCksdm9pZCAwPT09biYmKG49e30pO3ZhciBpPXRoaXM7dGhpcy5jdHg9dCx0aGlzLmxpbmVIZWlnaHQ9ZSx0aGlzLnN0eWxlPW4sdGhpcy5jcmVhdGVSdWxlcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5jdHguZm9udD1pLnN0eWxlLmZvbnQse3dpZHRoOmkuY3R4Lm1lYXN1cmVUZXh0KHQpLndpZHRoLGhlaWdodDppLmxpbmVIZWlnaHR9fX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1uJiYobj1pLmN0eCksbi5zYXZlKCksbi50cmFuc2xhdGUoZS50cmFuc2xhdGVbMF0sZS50cmFuc2xhdGVbMV0pLG4ucm90YXRlKGUucm90YXRlKk1hdGguUEkvMTgwKSxpLmNyZWF0ZUNhbnZhc1BlbihuKX0sdm9pZCAwPT09dGhpcy5zdHlsZS5maWxsJiYodGhpcy5zdHlsZS5maWxsPSIjNDQ0Iil9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZUNhbnZhc1Blbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybntkZXN0cm95OmZ1bmN0aW9uKCl7dC5yZXN0b3JlKCl9LHdyaXRlOmZ1bmN0aW9uKG4saSxyLG8sYSl7bys9aSpyZ3QuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbcl0sdC50ZXh0QWxpZ249cixudWxsIT1lLnN0eWxlLmZvbnQmJih0LmZvbnQ9ZS5zdHlsZS5mb250KSxudWxsIT1lLnN0eWxlLmZpbGwmJih0LmZpbGxTdHlsZT1lLnN0eWxlLmZpbGwsdC5maWxsVGV4dChuLG8sYSkpLG51bGwhPWUuc3R5bGUuc3Ryb2tlJiYodC5zdHJva2VTdHlsZT1lLnN0eWxlLmZpbGwsdC5zdHJva2VUZXh0KG4sbyxhKSl9fX0sdH0pKCk7aWd0LkNhbnZhc0NvbnRleHQ9b2d0LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKE9tdCksZShpZ3QpLGUoS210KX0pKFJtdCk7dmFyIGFndD17fSxzZ3Q9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHNndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGxndD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucnVsZXI9bnVsbCE9dC5jcmVhdGVSdWxlcj90LmNyZWF0ZVJ1bGVyKCk6dH1yZXR1cm4gdC5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dC5IRUlHSFRfVEVYVCksdGhpcy5ydWxlcihlKX0sdH0pKCk7bGd0LkhFSUdIVF9URVhUPSJiZHBxbCIsc2d0LkFic3RyYWN0TWVhc3VyZXI9bGd0O3ZhciBjZ3Q9e30sdWd0PXt9LGhndD17fSxkZ3Q9dmUmJnZlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShoZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwZ3Q9c2d0LGZndD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gaS51c2VHdWFyZHM9bixpfXJldHVybiBkZ3QoZSx0KSxlLnByb3RvdHlwZS5fYWRkR3VhcmRzPWZ1bmN0aW9uKHQpe3JldHVybiBwZ3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCt0K3BndC5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUfSxlLnByb3RvdHlwZS5fbWVhc3VyZUxpbmU9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9dGhpcy51c2VHdWFyZHN8fG58fC9eW1x0IF0kLy50ZXN0KGUpLHI9aT90aGlzLl9hZGRHdWFyZHMoZSk6ZSxvPXQucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzLHIpO3JldHVybiBvLndpZHRoLT1pPzIqdGhpcy5nZXRHdWFyZFdpZHRoKCk6MCxvfSxlLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodm9pZCAwPT09dCYmKHQ9cGd0LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQpLCIiPT09dC50cmltKCkpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O3ZhciBuPXQudHJpbSgpLnNwbGl0KCJcbiIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX21lYXN1cmVMaW5lKHQpfSkpO3JldHVybntoZWlnaHQ6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5oZWlnaHR9KSwwKSx3aWR0aDpuLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlLndpZHRoKX0pLDApfX0sZS5wcm90b3R5cGUuZ2V0R3VhcmRXaWR0aD1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLmd1YXJkV2lkdGgmJih0aGlzLmd1YXJkV2lkdGg9dC5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMpLndpZHRoKSx0aGlzLmd1YXJkV2lkdGh9LGV9KShwZ3QuQWJzdHJhY3RNZWFzdXJlcik7aGd0Lk1lYXN1cmVyPWZndDt2YXIgbWd0PXZlJiZ2ZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ2d0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gbWd0KGUsdCksZS5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9tZWFzdXJlTGluZS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC5zcGxpdCgiIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbWVhc3VyZUNoYXJhY3Rlcih0KX0pKTtyZXR1cm57aGVpZ2h0Om4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUuaGVpZ2h0KX0pLDApLHdpZHRoOm4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2Uud2lkdGh9KSwwKX19LGV9KShoZ3QuTWVhc3VyZXIpO3VndC5DaGFyYWN0ZXJNZWFzdXJlcj1nZ3Q7dmFyIF9ndD12ZSYmdmUuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGNndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHlndD1CbXQsdmd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIGk9dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gaS5jYWNoZT1uZXcgeWd0LkNhY2hlKChmdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUNoYXJhY3Rlck5vdEZyb21DYWNoZSh0KX0pKSxpfXJldHVybiBfZ3QoZSx0KSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlck5vdEZyb21DYWNoZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXIuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jYWNoZS5nZXQodCl9LGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5jYWNoZS5jbGVhcigpfSxlfSkodWd0LkNoYXJhY3Rlck1lYXN1cmVyKTtjZ3QuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcj12Z3Q7dmFyIGJndD17fSx4Z3Q9dmUmJnZlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB3Z3Q9Qm10LFNndD1zZ3QsTWd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLmRpbUNhY2hlPW5ldyB3Z3QuQ2FjaGUoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9tZWFzdXJlTm90RnJvbUNhY2hlKHQpfSkpLG59cmV0dXJuIHhndChlLHQpLGUucHJvdG90eXBlLl9tZWFzdXJlTm90RnJvbUNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9U2d0LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQpLHRoaXMuZGltQ2FjaGUuZ2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGltQ2FjaGUuY2xlYXIoKSx0LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpfSxlfSkoY2d0LkNhY2hlQ2hhcmFjdGVyTWVhc3VyZXIpO2JndC5DYWNoZU1lYXN1cmVyPU1ndCwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtmb3IodmFyIG4gaW4gZSl0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lW25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZShzZ3QpLGUoY2d0KSxlKGJndCksZSh1Z3QpLGUoaGd0KX0pKGFndCk7dmFyIEVndD17fSxUZ3Q9e30sQ2d0PXt9LEFndD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIga2d0PUJtdCxMZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWF4TGluZXMoMS8wKSx0aGlzLnRleHRUcmltbWluZygiZWxsaXBzaXMiKSx0aGlzLmFsbG93QnJlYWtpbmdXb3JkcyghMSksdGhpcy5fdG9rZW5pemVyPW5ldyBrZ3QuVG9rZW5pemVyLHRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyPSItIn1yZXR1cm4gdC5wcm90b3R5cGUubWF4TGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcyl9LHQucHJvdG90eXBlLnRleHRUcmltbWluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90ZXh0VHJpbW1pbmc7aWYoImVsbGlwc2lzIiE9PXQmJiJub25lIiE9PXQpdGhyb3cgbmV3IEVycm9yKHQrIiAtIHVuc3VwcG9ydGVkIHRleHQgdHJpbW1pbmcgb3B0aW9uLiIpO3JldHVybiB0aGlzLl90ZXh0VHJpbW1pbmc9dCx0aGlzfSx0LnByb3RvdHlwZS5hbGxvd0JyZWFraW5nV29yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYWxsb3dCcmVha2luZ1dvcmRzOih0aGlzLl9hbGxvd0JyZWFraW5nV29yZHM9dCx0aGlzKX0sdC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzO3ZvaWQgMD09PWkmJihpPTEvMCk7dmFyIG89e25vQnJva2VXb3JkczowLG5vTGluZXM6MCxvcmlnaW5hbFRleHQ6dCx0cnVuY2F0ZWRUZXh0OiIiLHdyYXBwZWRUZXh0OiIifSxhPXthdmFpbGFibGVMaW5lczpNYXRoLm1pbihNYXRoLmZsb29yKGkvZS5tZWFzdXJlKCkuaGVpZ2h0KSx0aGlzLl9tYXhMaW5lcyksYXZhaWxhYmxlV2lkdGg6bixjYW5GaXRUZXh0OiEwLGN1cnJlbnRMaW5lOiIiLHdyYXBwaW5nOm99LHM9dC5zcGxpdCgiXG4iKTtyZXR1cm4gcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gci5icmVha0xpbmVUb0ZpdFdpZHRoKHQsbixpIT09cy5sZW5ndGgtMSxlKX0pLGEpLndyYXBwaW5nfSx0LnByb3RvdHlwZS5icmVha0xpbmVUb0ZpdFdpZHRoPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dC5jYW5GaXRUZXh0fHwiIj09PXQud3JhcHBpbmcudHJ1bmNhdGVkVGV4dHx8KHQud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9IlxuIiksdD10aGlzLl90b2tlbml6ZXIudG9rZW5pemUoZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiByLndyYXBOZXh0VG9rZW4oZSx0LGkpfSksdCk7dmFyIG89a2d0LlN0cmluZ01ldGhvZHMudHJpbUVuZCh0LmN1cnJlbnRMaW5lKTtyZXR1cm4gdC53cmFwcGluZy5ub0xpbmVzKz0rKCIiIT09byksdC53cmFwcGluZy5ub0xpbmVzPT09dC5hdmFpbGFibGVMaW5lcyYmIm5vbmUiIT09dGhpcy5fdGV4dFRyaW1taW5nJiZuP3QuY2FuRml0VGV4dD0hMTp0LndyYXBwaW5nLndyYXBwZWRUZXh0Kz1vLHQuY3VycmVudExpbmU9IlxuIix0fSx0LnByb3RvdHlwZS5jYW5GaXRUb2tlbj1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcyxyPXQuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gbiE9PXQubGVuZ3RoLTE/ZStpLl9icmVha2luZ0NoYXJhY3RlcjplfSkpO3JldHVybiBuLm1lYXN1cmUodCkud2lkdGg8PWV8fHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBuLm1lYXN1cmUodCkud2lkdGg8PWV9KSl9LHQucHJvdG90eXBlLmFkZEVsbGlwc2lzPWZ1bmN0aW9uKHQsZSxuKXtpZigibm9uZSI9PT10aGlzLl90ZXh0VHJpbW1pbmcpcmV0dXJue3JlbWFpbmluZ1Rva2VuOiIiLHdyYXBwZWRUb2tlbjp0fTt2YXIgaT10LnN1YnN0cmluZygwKS50cmltKCkscj1uLm1lYXN1cmUoaSkud2lkdGgsbz1uLm1lYXN1cmUoIi4uLiIpLndpZHRoLGE9dC5sZW5ndGg+MCYmIlxuIj09PXRbMF0/IlxuIjoiIjtpZihlPD1vKXt2YXIgcz1NYXRoLmZsb29yKGUvKG8vMykpO3JldHVybntyZW1haW5pbmdUb2tlbjp0LHdyYXBwZWRUb2tlbjphKyIuLi4iLnN1YnN0cigwLHMpfX1mb3IoO3Irbz5lOylpPWtndC5TdHJpbmdNZXRob2RzLnRyaW1FbmQoaS5zdWJzdHIoMCxpLmxlbmd0aC0xKSkscj1uLm1lYXN1cmUoaSkud2lkdGg7cmV0dXJue3JlbWFpbmluZ1Rva2VuOmtndC5TdHJpbmdNZXRob2RzLnRyaW1FbmQodC5zdWJzdHJpbmcoaS5sZW5ndGgpLCItIikudHJpbSgpLHdyYXBwZWRUb2tlbjphK2krIi4uLiJ9fSx0LnByb3RvdHlwZS53cmFwTmV4dFRva2VuPWZ1bmN0aW9uKHQsZSxuKXtpZighZS5jYW5GaXRUZXh0fHxlLmF2YWlsYWJsZUxpbmVzPT09ZS53cmFwcGluZy5ub0xpbmVzfHwhdGhpcy5jYW5GaXRUb2tlbih0LGUuYXZhaWxhYmxlV2lkdGgsbikpcmV0dXJuIHRoaXMuZmluaXNoV3JhcHBpbmcodCxlLG4pO2Zvcih2YXIgaT10O2k7KXt2YXIgcj10aGlzLmJyZWFrVG9rZW5Ub0ZpdEluV2lkdGgoaSxlLmN1cnJlbnRMaW5lLGUuYXZhaWxhYmxlV2lkdGgsbik7aWYoZS5jdXJyZW50TGluZT1yLmxpbmUsbnVsbCE9KGk9ci5yZW1haW5pbmdUb2tlbikpe2lmKGUud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0rci5icmVha1dvcmQsKytlLndyYXBwaW5nLm5vTGluZXMsZS5hdmFpbGFibGVMaW5lcz09PWUud3JhcHBpbmcubm9MaW5lcyl7dmFyIG89dGhpcy5hZGRFbGxpcHNpcyhlLmN1cnJlbnRMaW5lLGUuYXZhaWxhYmxlV2lkdGgsbik7cmV0dXJuIGUud3JhcHBpbmcud3JhcHBlZFRleHQrPW8ud3JhcHBlZFRva2VuLGUud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9by5yZW1haW5pbmdUb2tlbitpLGUuY3VycmVudExpbmU9IlxuIixlfWUud3JhcHBpbmcud3JhcHBlZFRleHQrPWtndC5TdHJpbmdNZXRob2RzLnRyaW1FbmQoZS5jdXJyZW50TGluZSksZS5jdXJyZW50TGluZT0iXG4ifX1yZXR1cm4gZX0sdC5wcm90b3R5cGUuZmluaXNoV3JhcHBpbmc9ZnVuY3Rpb24odCxlLG4pe2lmKGUuY2FuRml0VGV4dCYmZS5hdmFpbGFibGVMaW5lcyE9PWUud3JhcHBpbmcubm9MaW5lcyYmIm5vbmUiIT09dGhpcy5fdGV4dFRyaW1taW5nKXt2YXIgaT10aGlzLmFkZEVsbGlwc2lzKGUuY3VycmVudExpbmUrdCxlLmF2YWlsYWJsZVdpZHRoLG4pO2Uud3JhcHBpbmcud3JhcHBlZFRleHQrPWkud3JhcHBlZFRva2VuLGUud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9aS5yZW1haW5pbmdUb2tlbixlLndyYXBwaW5nLm5vQnJva2VXb3Jkcys9KyhpLnJlbWFpbmluZ1Rva2VuLmxlbmd0aDx0Lmxlbmd0aCksZS53cmFwcGluZy5ub0xpbmVzKz0rKGkud3JhcHBlZFRva2VuLmxlbmd0aD4wKSxlLmN1cnJlbnRMaW5lPSIifWVsc2UgZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz10O3JldHVybiBlLmNhbkZpdFRleHQ9ITEsZX0sdC5wcm90b3R5cGUuYnJlYWtUb2tlblRvRml0SW5XaWR0aD1mdW5jdGlvbih0LGUsbixpLHIpe2lmKHZvaWQgMD09PXImJihyPXRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyKSxpLm1lYXN1cmUoZSt0KS53aWR0aDw9bilyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSt0LHJlbWFpbmluZ1Rva2VuOm51bGx9O2lmKCIiPT09dC50cmltKCkpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOmUscmVtYWluaW5nVG9rZW46IiJ9O2lmKCF0aGlzLl9hbGxvd0JyZWFraW5nV29yZHMmJiIiIT09ZS50cmltKCkpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOmUscmVtYWluaW5nVG9rZW46dH07Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aCYmaS5tZWFzdXJlKGUrdC5zdWJzdHJpbmcoMCxvKzEpK3IpLndpZHRoPD1uOykrK287dmFyIGE9IiI7cmV0dXJuIG8+MCYmKGE9cikse2JyZWFrV29yZDpvPjAsbGluZTplK3Quc3Vic3RyaW5nKDAsbykrYSxyZW1haW5pbmdUb2tlbjp0LnN1YnN0cmluZyhvKX19LHR9KSgpO0FndC5XcmFwcGVyPUxndDt2YXIgUGd0PXZlJiZ2ZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2d0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTmd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gUGd0KGUsdCksZS5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihuLGkscixvKXt2YXIgYT10aGlzO2lmKHZvaWQgMD09PW8mJihvPTEvMCksbi5zcGxpdCgiXG4iKS5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlNpbmdsZUxpbmVXcmFwcGVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgb25seSBvbiBzaW5nbGUgbGluZSIpO3ZhciBzPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS53cmFwLmNhbGwoYSxuLGksZSxvKX0sbD1zKHIpO2lmKGwubm9MaW5lczwyKXJldHVybiBsO2Zvcih2YXIgYz0wLHU9cixoPTA7aDxlLk5PX1dSQVBfSVRFUkFUSU9OUyYmdT5jOysraCl7dmFyIGQ9KHUrYykvMixwPXMoZCk7dGhpcy5hcmVTYW1lUmVzdWx0cyhsLHApPyh1PWQsbD1wKTpjPWR9cmV0dXJuIGx9LGUucHJvdG90eXBlLmFyZVNhbWVSZXN1bHRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubm9MaW5lcz09PWUubm9MaW5lcyYmdC50cnVuY2F0ZWRUZXh0PT09ZS50cnVuY2F0ZWRUZXh0fSxlfSkoQWd0LldyYXBwZXIpO05ndC5OT19XUkFQX0lURVJBVElPTlM9NSxDZ3QuU2luZ2xlTGluZVdyYXBwZXI9Tmd0LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKENndCksZShBZ3QpfSkoVGd0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRWd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSWd0PVJtdCxSZ3Q9YWd0LE9ndD1UZ3Qsemd0PXptdCxEZ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNvbnRleHQ9dCx0aGlzLm1lYXN1cmVyPW5ldyBSZ3QuQ2FjaGVNZWFzdXJlcih0aGlzLmNvbnRleHQpLHRoaXMud3JhcHBlcj1uZXcgT2d0LldyYXBwZXIsdGhpcy53cml0ZXI9bmV3IHpndC5Xcml0ZXIodGhpcy5tZWFzdXJlcix0aGlzLmNvbnRleHQsdGhpcy53cmFwcGVyKX1yZXR1cm4gdC5zdmc9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuZXcgdChuZXcgSWd0LlN2Z0NvbnRleHQoZSxuLGkpKX0sdC5jYW52YXM9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuZXcgdChuZXcgSWd0LkNhbnZhc0NvbnRleHQoZSxuLGkpKX0sdC5odG1sPWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbmV3IHQobmV3IElndC5IdG1sQ29udGV4dChlLG4saSkpfSx0LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LGUsbixpLHIpe3RoaXMud3JpdGVyLndyaXRlKHQsZSxuLGkscil9LHQucHJvdG90eXBlLmNsZWFyTWVhc3VyZXJDYWNoZT1mdW5jdGlvbigpe3RoaXMubWVhc3VyZXIucmVzZXQoKX0sdH0pKCk7RWd0LlR5cGVzZXR0ZXI9RGd0LChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2Zvcih2YXIgbiBpbiBlKXQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWVbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlKFJtdCksZShhZ3QpLGUoRWd0KSxlKEJtdCksZShUZ3QpLGUoem10KX0pKEltdCk7dmFyIEJndD17fSxIZ3Q9e30sRmd0PXt9LFZndD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFZndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFVndD1FZHQsamd0PXdpbmRvdy5BcnJheTtWZ3QuYWRkPWZ1bmN0aW9uIEdndCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhdHRlbXB0ZWQgdG8gYWRkIGFycmF5cyBvZiB1bmVxdWFsIGxlbmd0aCIpO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gdFtpXStlW2ldfSkpfSxWZ3QudW5pcT1mdW5jdGlvbiBXZ3QodCl7dmFyIGU9VWd0LnNldCgpLG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5oYXMoU3RyaW5nKHQpKXx8KGUuYWRkKFN0cmluZyh0KSksbi5wdXNoKHQpKX0pKSxufSxWZ3QuZmxhdHRlbj1mdW5jdGlvbiBxZ3QodCl7cmV0dXJuIGpndC5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLHQpfSxWZ3QuY3JlYXRlRmlsbGVkQXJyYXk9ZnVuY3Rpb24gWWd0KHQsZSl7Zm9yKHZhciBuPVtdLGk9MDtpPGU7aSsrKW5baV09ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTp0O3JldHVybiBufTt2YXIgWGd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShYZ3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkZ3Q9RWR0LEtndD13aW5kb3cuTWF0aDtmdW5jdGlvbiBaZ3QodCl7dmFyIGU9JGd0LnJnYih0KSxuPWZ1bmN0aW9uKHQpe3JldHVybih0Lz0yNTUpPD0uMDM5Mjg/dC8xMi45MjpLZ3QucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9O3JldHVybi4yMTI2Km4oZS5yKSsuNzE1MipuKGUuZykrLjA3MjIqbihlLmIpfVhndC5jb250cmFzdD1mdW5jdGlvbiBKZ3QodCxlKXt2YXIgbj1aZ3QodCkrLjA1LGk9Wmd0KGUpKy4wNTtyZXR1cm4gbj5pP24vaTppL259LFhndC5saWdodGVuQ29sb3I9ZnVuY3Rpb24gUWd0KHQsZSl7cmV0dXJuICRndC5jb2xvcih0KS5icmlnaHRlcihlKS5yZ2IoKS50b1N0cmluZygpfSxYZ3QuY29sb3JUZXN0PWZ1bmN0aW9uIHRfdCh0LGUpe3QuY2xhc3NlZChlLCEwKTt2YXIgbj10LnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIik7aWYoInRyYW5zcGFyZW50Ij09PW4pcmV0dXJuIG51bGw7dmFyIGk9L1woKC4rKVwpLy5leGVjKG4pO2lmKCFpKXJldHVybiBudWxsO3ZhciByPWlbMV0uc3BsaXQoIiwiKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSt0LG49ZS50b1N0cmluZygxNik7cmV0dXJuIGU8MTY/IjAiK246bn0pKTtpZig0PT09ci5sZW5ndGgmJiIwMCI9PT1yWzNdKXJldHVybiBudWxsO3ZhciBvPSIjIityLmpvaW4oIiIpO3JldHVybiB0LmNsYXNzZWQoZSwhMSksb307dmFyIGVfdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9RWR0LG49d2luZG93Lk1hdGg7ZnVuY3Rpb24gaSh0KXt2YXIgZTt0cnl7ZT10Lm5vZGUoKS5nZXRCQm94KCl9Y2F0Y2godCl7ZT17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX1yZXR1cm4gZX10LmNvbnRhaW5zPWZ1bmN0aW9uIHIodCxlKXtmb3IodmFyIG49ZTtudWxsIT1uJiZuIT09dDspbj1uLnBhcmVudE5vZGU7cmV0dXJuIG49PT10fSx0LmVsZW1lbnRCQm94PWksdC5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24gbyh0KXtpZih0IGluc3RhbmNlb2YgU1ZHRWxlbWVudClyZXR1cm4gaShlLnNlbGVjdCh0KSk7aWYodCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt4Om4ubGVmdCx5Om4udG9wLHdpZHRoOm4ud2lkdGgsaGVpZ2h0Om4uaGVpZ2h0fX1yZXR1cm57eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX0sdC5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EUz0xZTMvNjAsdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVQb2x5ZmlsbD1mdW5jdGlvbiBhKGUpe251bGwhPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShlKTpzZXRUaW1lb3V0KGUsdC5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EUyl9LHQuZWxlbWVudFdpZHRoPWZ1bmN0aW9uIHModCl7dmFyIG49dCBpbnN0YW5jZW9mIGUuc2VsZWN0aW9uP3Qubm9kZSgpOnQsaT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKTtyZXR1cm4gbShpLCJ3aWR0aCIpK20oaSwicGFkZGluZy1sZWZ0IikrbShpLCJwYWRkaW5nLXJpZ2h0IikrbShpLCJib3JkZXItbGVmdC13aWR0aCIpK20oaSwiYm9yZGVyLXJpZ2h0LXdpZHRoIil9LHQuZWxlbWVudEhlaWdodD1mdW5jdGlvbiBsKHQpe3ZhciBuPXQgaW5zdGFuY2VvZiBlLnNlbGVjdGlvbj90Lm5vZGUoKTp0LGk9d2luZG93LmdldENvbXB1dGVkU3R5bGUobik7cmV0dXJuIG0oaSwiaGVpZ2h0IikrbShpLCJwYWRkaW5nLXRvcCIpK20oaSwicGFkZGluZy1ib3R0b20iKSttKGksImJvcmRlci10b3Atd2lkdGgiKSttKGksImJvcmRlci1ib3R0b20td2lkdGgiKX07dmFyIGM9Iig/OlstK10/WzAtOV0qXFwuP1swLTldKykiLHU9Iig/Oig/OlxccyssP1xccyopfCg/OixcXHMqKSkiLGg9bmV3IFJlZ0V4cCgidHJhbnNsYXRlXFxzKlxcKFxccyooIitjKyIpKD86Iit1KyIoIitjKyIpKT9cXHMqXFwpIiksZD1uZXcgUmVnRXhwKCJyb3RhdGVcXHMqXFwoXFxzKigiK2MrIilcXHMqXFwpIikscD1uZXcgUmVnRXhwKCJzY2FsZVxccypcXChcXHMqKCIrYysiKSg/OiIrdSsiKCIrYysiKSk/XFxzKlxcKSIpO2Z1bmN0aW9uIGYodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybnttaW46dCxtYXg6dH07aWYodCBpbnN0YW5jZW9mIE9iamVjdCYmIm1pbiJpbiB0JiYibWF4ImluIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJpbnB1dCAnIit0KyInIGNhbid0IGJlIHBhcnNlZCBhcyBhbiBSYW5nZSIpfWZ1bmN0aW9uIG0odCxlKXt2YXIgbj10LmdldFByb3BlcnR5VmFsdWUoZSk7cmV0dXJuIHBhcnNlRmxvYXQobil8fDB9dC5nZXRUcmFuc2xhdGVWYWx1ZXM9ZnVuY3Rpb24gZyh0KXt2YXIgZT1oLmV4ZWModC5hdHRyKCJ0cmFuc2Zvcm0iKSk7aWYobnVsbCE9ZSl7dmFyIG49ZVsyXTtyZXR1cm5bK2VbMV0sKyh2b2lkIDA9PT1uPzA6bildfXJldHVyblswLDBdfSx0LmdldFJvdGF0ZT1mdW5jdGlvbiBfKHQpe3ZhciBlPWQuZXhlYyh0LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9ZT8rZVsxXTowfSx0LmdldFNjYWxlVmFsdWVzPWZ1bmN0aW9uIHkodCl7dmFyIGU9cC5leGVjKHQuYXR0cigidHJhbnNmb3JtIikpO2lmKG51bGwhPWUpe3ZhciBuPWVbMV0saT1lWzJdO3JldHVyblsrbixudWxsPT1pPytuOitpXX1yZXR1cm5bMCwwXX0sdC5jbGllbnRSZWN0c092ZXJsYXA9ZnVuY3Rpb24gdih0LGUpe3JldHVybiEobi5mbG9vcih0LnJpZ2h0KTw9bi5jZWlsKGUubGVmdCl8fG4uY2VpbCh0LmxlZnQpPj1uLmZsb29yKGUucmlnaHQpfHxuLmZsb29yKHQuYm90dG9tKTw9bi5jZWlsKGUudG9wKXx8bi5jZWlsKHQudG9wKT49bi5mbG9vcihlLmJvdHRvbSkpfSx0LmV4cGFuZFJlY3Q9ZnVuY3Rpb24gYih0LGUpe3JldHVybntsZWZ0OnQubGVmdC1lLHRvcDp0LnRvcC1lLHJpZ2h0OnQucmlnaHQrZSxib3R0b206dC5ib3R0b20rZSx3aWR0aDp0LndpZHRoKzIqZSxoZWlnaHQ6dC5oZWlnaHQrMiplfX0sdC5jbGllbnRSZWN0SW5zaWRlPWZ1bmN0aW9uIHgodCxlKXtyZXR1cm4gbi5mbG9vcihlLmxlZnQpPD1uLmNlaWwodC5sZWZ0KSYmbi5mbG9vcihlLnRvcCk8PW4uY2VpbCh0LnRvcCkmJm4uZmxvb3IodC5yaWdodCk8PW4uY2VpbChlLnJpZ2h0KSYmbi5mbG9vcih0LmJvdHRvbSk8PW4uY2VpbChlLmJvdHRvbSl9LHQuaW50ZXJzZWN0c0JCb3g9ZnVuY3Rpb24gdyh0LGUsbixpKXt2b2lkIDA9PT1pJiYoaT0uNSk7dmFyIHI9Zih0KSxvPWYoZSk7cmV0dXJuIG4ueCtuLndpZHRoPj1yLm1pbi1pJiZuLng8PXIubWF4K2kmJm4ueStuLmhlaWdodD49by5taW4taSYmbi55PD1vLm1heCtpfSx0LmdldEh0bWxFbGVtZW50QW5jZXN0b3JzPWZ1bmN0aW9uIFModCl7Zm9yKHZhciBlPVtdO3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDspZS5wdXNoKHQpLHQ9dC5wYXJlbnRFbGVtZW50O3JldHVybiBlfSx0LmdldEVsZW1lbnRUcmFuc2Zvcm09ZnVuY3Rpb24gTSh0KXt2YXIgZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpO3JldHVybihmdW5jdGlvbiBuKHQpe2lmKG51bGw9PXR8fCJub25lIj09PXQpcmV0dXJuIG51bGw7dmFyIGU9dC5tYXRjaChFKTtpZihudWxsPT1lfHxlLmxlbmd0aDwyKXJldHVybiBudWxsO3ZhciBuPWVbMV0uc3BsaXQoVCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KX0pKTtyZXR1cm4gNiE9bi5sZW5ndGg/bnVsbDpufSkoZS5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFsdWUoIi1tb3otdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1zLXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFsdWUoIi1vLXRyYW5zZm9ybSIpfHxlLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpKX07dmFyIEU9L15tYXRyaXhcKChbXildKylcKSQvLFQ9L1ssIF0rL30pKGVfdCk7dmFyIG5fdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkobl90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaV90PUVkdCxyX3Q9ZV90LG9fdD13aW5kb3cuTWF0aCxhX3Q9WzEsMCwwLDEsMCwwXTtmdW5jdGlvbiBzX3QodCxlKXtyZXR1cm5bdFswXSplWzBdK3RbMl0qZVsxXSx0WzFdKmVbMF0rdFszXSplWzFdLHRbMF0qZVsyXSt0WzJdKmVbM10sdFsxXSplWzJdK3RbM10qZVszXSx0WzBdKmVbNF0rdFsyXSplWzVdK3RbNF0sdFsxXSplWzRdK3RbM10qZVs1XSt0WzVdXX1mdW5jdGlvbiBsX3QodCxlKXtyZXR1cm5bdFswXSx0WzFdLHRbMl0sdFszXSx0WzBdKmVbMF0rdFsyXSplWzFdK3RbNF0sdFsxXSplWzBdK3RbM10qZVsxXSt0WzVdXX1mdW5jdGlvbiBjX3QodCl7dmFyIGU9dFswXSp0WzNdLXRbMV0qdFsyXTtpZigwPT09ZSl0aHJvdyBuZXcgRXJyb3IoInNpbmd1bGFyIG1hdHJpeCIpO3ZhciBuPTEvZTtyZXR1cm5bbip0WzNdLG4qLXRbMV0sbiotdFsyXSxuKnRbMF0sbiooLXRbM10qdFs0XSt0WzJdKnRbNV0pLG4qKHRbMV0qdFs0XSstdFswXSp0WzVdKV19bl90LmluUmFuZ2U9ZnVuY3Rpb24gdV90KHQsZSxuKXtyZXR1cm4gb190Lm1pbihlLG4pPD10JiZ0PD1vX3QubWF4KGUsbil9LG5fdC5jbGFtcD1mdW5jdGlvbiBoX3QodCxlLG4pe3JldHVybiBvX3QubWluKG9fdC5tYXgoZSx0KSxuKX0sbl90Lm1heD1mdW5jdGlvbiBkX3QodCxlLG4pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCxyPW51bGw9PWk/ZTpuLG89bnVsbD09aT9pX3QubWF4KHQpOmlfdC5tYXgodCxpKTtyZXR1cm4gdm9pZCAwIT09bz9vOnJ9LG5fdC5taW49ZnVuY3Rpb24gcF90KHQsZSxuKXt2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwscj1udWxsPT1pP2U6bixvPW51bGw9PWk/aV90Lm1pbih0KTppX3QubWluKHQsaSk7cmV0dXJuIHZvaWQgMCE9PW8/bzpyfSxuX3QuaXNOYU49ZnVuY3Rpb24gZl90KHQpe3JldHVybiB0IT10fSxuX3QuaXNWYWxpZE51bWJlcj1mdW5jdGlvbiBtX3QodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0LXQ8MX0sbl90LnJhbmdlPWZ1bmN0aW9uIGdfdCh0LGUsbil7aWYodm9pZCAwPT09biYmKG49MSksMD09PW4pdGhyb3cgbmV3IEVycm9yKCJzdGVwIGNhbm5vdCBiZSAwIik7Zm9yKHZhciBpPW9fdC5tYXgob190LmNlaWwoKGUtdCkvbiksMCkscj1bXSxvPTA7bzxpOysrbylyW29dPXQrbipvO3JldHVybiByfSxuX3QuZGlzdGFuY2VTcXVhcmVkPWZ1bmN0aW9uIF9fdCh0LGUpe3JldHVybiBvX3QucG93KGUueS10LnksMikrb190LnBvdyhlLngtdC54LDIpfSxuX3QuZGVncmVlc1RvUmFkaWFucz1mdW5jdGlvbiB5X3QodCl7cmV0dXJuIHQvMzYwKm9fdC5QSSoyfSxuX3Qud2l0aGluPWZ1bmN0aW9uIHZfdCh0LGUpe3JldHVybiBlLnRvcExlZnQueDw9dC54JiZlLmJvdHRvbVJpZ2h0Lng+PXQueCYmZS50b3BMZWZ0Lnk8PXQueSYmZS5ib3R0b21SaWdodC55Pj10Lnl9LG5fdC5ib3VuZHNJbnRlcnNlY3RzPWZ1bmN0aW9uIGJfdCh0LGUsbixpLHIsbyxhLHMpe3JldHVybiB0PD1yK2EmJnI8PXQrbiYmZTw9bytzJiZvPD1lK2l9LG5fdC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtPWZ1bmN0aW9uIHhfdCh0KXtmb3IodmFyIGU9cl90LmdldEh0bWxFbGVtZW50QW5jZXN0b3JzKHQpLG49YV90LGk9bnVsbCxyPTAsbz1lO3I8by5sZW5ndGg7cisrKXt2YXIgYT1vW3JdLHM9cl90LmdldEVsZW1lbnRUcmFuc2Zvcm0oYSk7aWYobnVsbCE9cyl7dmFyIGw9YS5jbGllbnRXaWR0aC8yLGM9YS5jbGllbnRIZWlnaHQvMjtuPWxfdChuLFtsLGNdKSxuPWxfdChuPXNfdChuLGNfdChzKSksWy1sLC1jXSl9dmFyIHU9YS5zY3JvbGxMZWZ0LGg9YS5zY3JvbGxUb3A7bnVsbCE9PWkmJmEhPT1pfHwodS09YS5vZmZzZXRMZWZ0K2EuY2xpZW50TGVmdCxoLT1hLm9mZnNldFRvcCthLmNsaWVudFRvcCxpPWEub2Zmc2V0UGFyZW50KSxuPWxfdChuLFt1LGhdKX1yZXR1cm4gbn0sbl90Lm11bHRpcGx5TWF0cml4PXNfdCxuX3QucHJlbXVsdGlwbHlUcmFuc2xhdGU9ZnVuY3Rpb24gd190KHQsZSl7cmV0dXJuW2VbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSt0WzBdLGVbNV0rdFsxXV19LG5fdC5tdWx0aXBseVRyYW5zbGF0ZT1sX3Qsbl90LmludmVydE1hdHJpeD1jX3Qsbl90LmFwcGx5VHJhbnNmb3JtPWZ1bmN0aW9uIFNfdCh0LGUpe3JldHVybnt4OnRbMF0qZS54K3RbMl0qZS55K3RbNF0seTp0WzFdKmUueCt0WzNdKmUueSt0WzVdfX07dmFyIE1fdD17fSxFX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBUX3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49TWF0aC5jZWlsKHQubGVuZ3RoLzIpLGk9MDtpPG47aSsrKWVbMF0uaW5zZXJ0KHRbaV0pO2ZvcihpPW47aTx0Lmxlbmd0aDtpKyspZVsxXS5pbnNlcnQodFtpXSl9LHR9KSgpO0VfdC5TcGxpdFN0cmF0ZWd5VHJpdmlhbD1UX3Q7dmFyIENfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih0PXQuc2xpY2UoKSx0aGlzLmNob29zZUZpcnN0U3BsaXQodCxlKTt0Lmxlbmd0aD4wOyl0aGlzLmFkZE5leHQodCxlKX0sdC5wcm90b3R5cGUuY2hvb3NlRmlyc3RTcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLGk9MCxyPXQubGVuZ3RoLTEsbz10Lmxlbmd0aC0xLGE9MTthPHQubGVuZ3RoLTE7YSsrKXt2YXIgcz10W2FdO3MuYm91bmRzLnhsPnRbcl0uYm91bmRzLnhsP3I9YTpzLmJvdW5kcy54aDx0W25dLmJvdW5kcy54aCYmKG49YSkscy5ib3VuZHMueWw+dFtvXS5ib3VuZHMueWw/bz1hOnMuYm91bmRzLnloPHRbaV0uYm91bmRzLnloJiYoaT1hKX12YXIgbD1NYXRoLmFicyh0W25dLmJvdW5kcy54aC10W3JdLmJvdW5kcy54bCk+TWF0aC5hYnModFtpXS5ib3VuZHMueWgtdFtvXS5ib3VuZHMueWwpP1tuLHJdOltpLG9dLGM9bFswXSx1PWxbMV07Yz09PXUmJihjPTAsdT10Lmxlbmd0aC0xKSxlWzBdLmluc2VydCh0LnNwbGljZShNYXRoLm1heChjLHUpLDEpWzBdKSxlWzFdLmluc2VydCh0LnNwbGljZShNYXRoLm1pbihjLHUpLDEpWzBdKX0sdC5wcm90b3R5cGUuYWRkTmV4dD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1udWxsLGk9bnVsbCxyPW51bGwsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYT10W29dLHM9ZVswXS51bmlvbkFyZWFEaWZmZXJlbmNlKGEuYm91bmRzKSxsPWVbMV0udW5pb25BcmVhRGlmZmVyZW5jZShhLmJvdW5kcyk7KHM8aXx8bnVsbD09bikmJihuPW8saT1zLHI9ZVswXSksbDxpJiYobj1vLGk9bCxyPWVbMV0pfXIuaW5zZXJ0KHQuc3BsaWNlKG4sMSlbMF0pfSx0fSkoKTtFX3QuU3BsaXRTdHJhdGVneUxpbmVhcj1DX3QsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGUsbj1uZXcgRV90LlNwbGl0U3RyYXRlZ3lMaW5lYXI7ZnVuY3Rpb24gaSh0LG4saSl7dmFyIHI9MS8wLG89MS8wO3JldHVybiBmdW5jdGlvbihhKXt2YXIgcz1uKGEuYm91bmRzLHQpLGw9aShhLmJvdW5kcyx0KTtyZXR1cm4gbnVsbCE9YS52YWx1ZT9zPHI/KHI9cyxvPWwsZS5QQVNTX0FORF9PVkVSV1JJVEUpOnM9PT1yP2UuUEFTUzplLkZBSUw6cz5vP2UuRkFJTDoobz1NYXRoLm1heChsLG8pLGUuUEFTUyl9fWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gZShpLmJvdW5kcyx0KS1lKG4uYm91bmRzLHQpfX0hKGZ1bmN0aW9uKHQpe3RbdC5QQVNTPTBdPSJQQVNTIix0W3QuRkFJTD0xXT0iRkFJTCIsdFt0LlBBU1NfQU5EX09WRVJXUklURT0yXT0iUEFTU19BTkRfT1ZFUldSSVRFIn0pKGU9dC5RdWVyeVByZWRpY2F0ZVJlc3VsdHx8KHQuUXVlcnlQcmVkaWNhdGVSZXN1bHQ9e30pKSx0LmNyZWF0ZU1pbmltaXppbmdOb2RlUHJlZGljYXRlPWksdC5jcmVhdGVOb2RlU29ydD1yO3ZhciBvPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2b2lkIDA9PT10JiYodD01KSx2b2lkIDA9PT1lJiYoZT1uKSx0aGlzLm1heE5vZGVDaGlsZHJlbj10LHRoaXMuc3BsaXRTdHJhdGVneT1lLHRoaXMucm9vdD1uZXcgYSghMCksdGhpcy5zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmdldFJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290fSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMucm9vdD1uZXcgYSghMCksdGhpcy5zaXplPTB9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnJvb3Q7IW4ubGVhZjspbj1uLnN1YnRyZWUodCk7dmFyIGk9YS52YWx1ZU5vZGUodCxlKTtmb3Iobi5pbnNlcnQoaSksdGhpcy5zaXplKz0xO24ub3ZlcmZsb3codGhpcy5tYXhOb2RlQ2hpbGRyZW4pOyludWxsPT0obj1uLnNwbGl0KHRoaXMuc3BsaXRTdHJhdGVneSkpLnBhcmVudCYmKHRoaXMucm9vdD1uKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUubG9jYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb250YWlucyh0KX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT1pKHQscy5kaXN0YW5jZVNxdWFyZWRUb05lYXJFZGdlLHMuZGlzdGFuY2VTcXVhcmVkVG9GYXJFZGdlKTtyZXR1cm4gdGhpcy5xdWVyeU5vZGVzKGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHQucHJvdG90eXBlLmxvY2F0ZU5lYXJlc3RYPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCxzLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWCxzLmFic29sdXRlRGlzdGFuY2VUb0ZhckVkZ2VYKSxuPXRoaXMucXVlcnlOb2RlcyhlKTtyZXR1cm4gbi5zb3J0KHIodCxzLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWSkpLG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdFk9ZnVuY3Rpb24odCl7dmFyIGU9aSh0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZLHMuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVkpLG49dGhpcy5xdWVyeU5vZGVzKGUpO3JldHVybiBuLnNvcnQocih0LHMuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYKSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpfSx0LnByb3RvdHlwZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzLmlzQm91bmRzT3ZlcmxhcEJvdW5kcyhlLHQpfSkpfSx0LnByb3RvdHlwZS5pbnRlcnNlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gcy5pc0JvdW5kc092ZXJsYXBYKGUsdCl9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzLmlzQm91bmRzT3ZlcmxhcFkoZSx0KX0pKX0sdC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCl7dmFyIGU9W107aWYobnVsbCE9dGhpcy5yb290LmJvdW5kcyYmIXQodGhpcy5yb290LmJvdW5kcykpcmV0dXJuIGU7Zm9yKHZhciBuPVt0aGlzLnJvb3RdO24ubGVuZ3RoPjA7KWZvcih2YXIgaT1uLnNoaWZ0KCkscj0wO3I8aS5lbnRyaWVzLmxlbmd0aDtyKyspe3ZhciBvPWkuZW50cmllc1tyXTt0KG8uYm91bmRzKSYmKGkubGVhZj9lLnB1c2goby52YWx1ZSk6bi5wdXNoKG8pKX1yZXR1cm4gZX0sdC5wcm90b3R5cGUucXVlcnlOb2Rlcz1mdW5jdGlvbih0KXt2YXIgbj1bXTtpZihudWxsIT10aGlzLnJvb3QuYm91bmRzJiZ0KHRoaXMucm9vdCk9PT1lLkZBSUwpcmV0dXJuIG47Zm9yKHZhciBpPVt0aGlzLnJvb3RdO2kubGVuZ3RoPjA7KWZvcih2YXIgcj1pLnNoaWZ0KCksbz0wO288ci5lbnRyaWVzLmxlbmd0aDtvKyspe3ZhciBhPXIuZW50cmllc1tvXSxzPXQoYSk7cz09PWUuUEFTU19BTkRfT1ZFUldSSVRFJiYobj1bXSkscyE9PWUuUEFTUyYmcyE9PWUuUEFTU19BTkRfT1ZFUldSSVRFfHwoci5sZWFmP24ucHVzaChhKTppLnB1c2goYSkpfXJldHVybiBufSx0fSkoKTt0LlJUcmVlPW87dmFyIGE9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmxlYWY9dCx0aGlzLmJvdW5kcz1udWxsLHRoaXMuZW50cmllcz1bXSx0aGlzLnBhcmVudD1udWxsLHRoaXMudmFsdWU9bnVsbH1yZXR1cm4gdC52YWx1ZU5vZGU9ZnVuY3Rpb24oZSxuKXt2YXIgaT1uZXcgdCghMCk7cmV0dXJuIGkuYm91bmRzPWUsaS52YWx1ZT1uLGl9LHQucHJvdG90eXBlLm92ZXJmbG93PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVudHJpZXMubGVuZ3RoPnR9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMucHVzaCh0KSx0LnBhcmVudD10aGlzO2Zvcih2YXIgZT10aGlzO251bGwhPWU7KWUuYm91bmRzPXMudW5pb25BbGwoW2UuYm91bmRzLHQuYm91bmRzXSksZT1lLnBhcmVudDtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50cmllcy5pbmRleE9mKHQpO2lmKGU+PTApe3RoaXMuZW50cmllcy5zcGxpY2UoZSwxKTtmb3IodmFyIG49dGhpcztudWxsIT1uOyluLmJvdW5kcz1zLnVuaW9uQWxsKG4uZW50cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJvdW5kc30pKSksbj1uLnBhcmVudH1yZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc3VidHJlZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MS8wLG49bnVsbCxpPTA7aTx0aGlzLmVudHJpZXMubGVuZ3RoO2krKyl7dmFyIHI9dGhpcy5lbnRyaWVzW2ldLG89ci51bmlvbkFyZWFEaWZmZXJlbmNlKHQpOyhvPGV8fG89PT1lJiZudWxsIT1uJiZyLmVudHJpZXMubGVuZ3RoPG4uZW50cmllcy5sZW5ndGgpJiYobj1yKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnJlbW92ZSh0aGlzKTt2YXIgbj1bbmV3IHQodGhpcy5sZWFmKSxuZXcgdCh0aGlzLmxlYWYpXTtlLnNwbGl0KHRoaXMuZW50cmllcyxuKTt2YXIgaT1udWxsIT10aGlzLnBhcmVudD90aGlzLnBhcmVudDpuZXcgdCghMSk7cmV0dXJuIGkuaW5zZXJ0KG5bMF0pLGkuaW5zZXJ0KG5bMV0pLGkubGVhZj0hMSxpfSx0LnByb3RvdHlwZS51bmlvbkFyZWFEaWZmZXJlbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyhzLnVuaW9uKHRoaXMuYm91bmRzLHQpLmFyZWEoKS10aGlzLmJvdW5kcy5hcmVhKCkpfSx0LnByb3RvdHlwZS5tYXhEZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWY/MToxK3RoaXMuZW50cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1heERlcHRoKCl9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpfSx0fSkoKTt0LlJUcmVlTm9kZT1hO3ZhciBzPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7dGhpcy54bD10LHRoaXMueWw9ZSx0aGlzLnhoPW4sdGhpcy55aD1pLHRoaXMud2lkdGg9dGhpcy54aC10aGlzLnhsLHRoaXMuaGVpZ2h0PXRoaXMueWgtdGhpcy55bH1yZXR1cm4gdC54eXdoPWZ1bmN0aW9uKGUsbixpLHIpe3JldHVybiBuZXcgdChlLG4sZStpLG4rcil9LHQuZW50aXR5Qm91bmRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLngsZS55LGUueCtlLndpZHRoLGUueStlLmhlaWdodCl9LHQuYm91bmRzPWZ1bmN0aW9uKGUpe3JldHVybiB0LnBvaW50UGFpcihlLnRvcExlZnQsZS5ib3R0b21SaWdodCl9LHQucG9pbnRQYWlyPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyB0KE1hdGgubWluKGUueCxuLngpLE1hdGgubWluKGUueSxuLnkpLE1hdGgubWF4KGUueCxuLngpLE1hdGgubWF4KGUueSxuLnkpKX0sdC5wb2ludHM9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIm5lZWQgYXQgbGVhc3QgMiBwb2ludHMgdG8gY3JlYXRlIGJvdW5kcyIpO3ZhciBuPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSk7cmV0dXJuIG5ldyB0KG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LGUpfSkpLGkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LGUpfSkpLG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpLGkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpKX0sdC51bmlvbj1mdW5jdGlvbihlLG4pe3JldHVybiBuZXcgdChNYXRoLm1pbihlLnhsLG4ueGwpLE1hdGgubWluKGUueWwsbi55bCksTWF0aC5tYXgoZS54aCxuLnhoKSxNYXRoLm1heChlLnloLG4ueWgpKX0sdC51bmlvbkFsbD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSkubGVuZ3RoP251bGw6ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQudW5pb24oZSxuKX0pKX0sdC5pc0JvdW5kc092ZXJsYXBCb3VuZHM9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5pc0JvdW5kc092ZXJsYXBYKGUsbikmJnQuaXNCb3VuZHNPdmVybGFwWShlLG4pfSx0LmlzQm91bmRzT3ZlcmxhcFg9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHQueGg8ZS54bHx8dC54bD5lLnhoKX0sdC5pc0JvdW5kc092ZXJsYXBZPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISh0LnloPGUueWx8fHQueWw+ZS55aCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC53aWR0aC8yO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhlLngtKHQueGwrbikpLW4sMCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMoZS55LSh0LnlsK24pKS1uLDApfSx0LmFic29sdXRlRGlzdGFuY2VUb0ZhckVkZ2VYPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgoZSxuKTtyZXR1cm4gMD09PWk/MDppK2Uud2lkdGh9LHQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVk9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWShlLG4pO3JldHVybiAwPT09aT8wOmkrZS5oZWlnaHR9LHQuZGlzdGFuY2VTcXVhcmVkVG9OZWFyRWRnZT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYKGUsbikscj10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWShlLG4pO3JldHVybiBpKmkrcipyfSx0LmRpc3RhbmNlU3F1YXJlZFRvRmFyRWRnZT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgoZSxuKSxyPXQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVkoZSxuKTtyZXR1cm4gaSppK3Iqcn0sdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLmFyZWFDYWNoZWQmJih0aGlzLmFyZWFDYWNoZWQ9KHRoaXMueGgtdGhpcy54bCkqKHRoaXMueWgtdGhpcy55bCkpLHRoaXMuYXJlYUNhY2hlZH0sdC5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueGw8PXQueCYmdGhpcy54aD49dC54JiZ0aGlzLnlsPD10LnkmJnRoaXMueWg+PXQueX0sdH0pKCk7dC5SVHJlZUJvdW5kcz1zfSkoTV90KTt2YXIgQV90PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1FZHQsbj1TZS5leHBvcnRzLGk9Rmd0O3QuSVN0YWNraW5nT3JkZXI9U210Lm1ha2VFbnVtKFsidG9wZG93biIsImJvdHRvbXVwIl0pO3ZhciByPXdpbmRvdy5NYXRoO3Quc3RhY2s9ZnVuY3Rpb24gbyhuLHIsYSxzKXt2b2lkIDA9PT1zJiYocz0iYm90dG9tdXAiKTt2YXIgbD1lLm1hcCgpLGM9ZS5tYXAoKSx1PW5ldyBpLk1hcDsidG9wZG93biI9PT1zJiYobj1uLnNsaWNlKCkpLnJldmVyc2UoKTtmb3IodmFyIGg9MCxkPW47aDxkLmxlbmd0aDtoKyspe2Zvcih2YXIgcD1kW2hdLGY9bmV3IGkuTWFwLG09cC5kYXRhKCksZz1tLmxlbmd0aCxfPTA7XzxnO18rKyl7dmFyIHk9bVtfXSx2PXIoeSxfLHApLGI9dC5ub3JtYWxpemVLZXkodikseD0rYSh5LF8scCksdz12b2lkIDAsUz14Pj0wP2w6YztTLmhhcyhiKT8odz1TLmdldChiKSxTLnNldChiLHcreCkpOih3PTAsUy5zZXQoYix4KSksZi5zZXQoYix7b2Zmc2V0OncsdmFsdWU6eCxheGlzVmFsdWU6dixvcmlnaW5hbERhdHVtOnksb3JpZ2luYWxEYXRhc2V0OnAsb3JpZ2luYWxJbmRleDpffSl9dS5zZXQocCxmKX1yZXR1cm4gdX0sdC5zdGFja2VkRXh0ZW50cz1mdW5jdGlvbiBhKHQpe3ZhciBlPW5ldyBpLk1hcCxuPW5ldyBpLk1hcDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG89dC5vZmZzZXQrdC52YWx1ZSxhPWkuTWF0aC5tYXgoW28sdC5vZmZzZXRdLHQub2Zmc2V0KSxzPWkuTWF0aC5taW4oW28sdC5vZmZzZXRdLHQub2Zmc2V0KSxsPXQuYXhpc1ZhbHVlO2UuaGFzKHIpP2UuZ2V0KHIpLmV4dGVudDxhJiZlLnNldChyLHtleHRlbnQ6YSxheGlzVmFsdWU6bCxzdGFja2VkRGF0dW06dH0pOmUuc2V0KHIse2V4dGVudDphLGF4aXNWYWx1ZTpsLHN0YWNrZWREYXR1bTp0fSksbi5oYXMocik/bi5nZXQocikuZXh0ZW50PnMmJm4uc2V0KHIse2V4dGVudDpzLGF4aXNWYWx1ZTpsLHN0YWNrZWREYXR1bTp0fSk6bi5zZXQocix7ZXh0ZW50OnMsYXhpc1ZhbHVlOmwsc3RhY2tlZERhdHVtOnR9KX0pKX0pKSx7bWF4aW11bUV4dGVudHM6ZSxtaW5pbXVtRXh0ZW50czpufX0sdC5zdGFja2VkRXh0ZW50PWZ1bmN0aW9uIHMoZSxuLG8pe3ZhciBhPVtdO2UuZm9yRWFjaCgoZnVuY3Rpb24oZSxpKXtmb3IodmFyIHI9aS5kYXRhKCkscz1yLmxlbmd0aCxsPTA7bDxzO2wrKyl7dmFyIGM9cltsXTtpZihudWxsPT1vfHxvKGMsbCxpKSl7dmFyIHU9ZS5nZXQodC5ub3JtYWxpemVLZXkobihjLGwsaSkpKTthLnB1c2godS52YWx1ZSt1Lm9mZnNldCl9fX0pKTt2YXIgcz1pLk1hdGgubWF4KGEsMCksbD1pLk1hdGgubWluKGEsMCk7cmV0dXJuW3IubWluKGwsMCksci5tYXgoMCxzKV19LHQubm9ybWFsaXplS2V5PW4ubWVtb2l6ZSgoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KX0pKX0pKEFfdCk7dmFyIGtfdD17fSxMX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLExfdC5TSE9XX1dBUk5JTkdTPSEwLExfdC5BRERfVElUTEVfRUxFTUVOVFM9ITAsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShrX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBQX3Q9TF90O2Z1bmN0aW9uIE5fdCh0KXtQX3QuU0hPV19XQVJOSU5HUyYmY29uc29sZS53YXJuKHQpfWZ1bmN0aW9uIElfdCh0LGUpe2Zvcih2YXIgbj1bXSxpPTI7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMl09YXJndW1lbnRzW2ldO3JldHVybiAwPT09ZT8odChuKSwtMSk6d2luZG93LnNldFRpbWVvdXQodCxlLG4pfWtfdC53YXJuPU5fdCxrX3Quc2V0VGltZW91dD1JX3Qsa190LmRlYm91bmNlPWZ1bmN0aW9uIFJfdCh0LGUsbil7dmFyIGk9bnVsbCxyPVtdLG89ZnVuY3Rpb24oKXtlLmFwcGx5KG4scil9O3JldHVybiBmdW5jdGlvbigpe3I9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxjbGVhclRpbWVvdXQoaSksaT1JX3Qobyx0KX19LGtfdC5kZXByZWNhdGVkPWZ1bmN0aW9uIE9fdCh0LGUsbil7dm9pZCAwPT09biYmKG49IiIpLE5fdCgiTWV0aG9kICIrdCsiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAiK2UrIi4gUGxlYXNlIHJlZmVyIHRvIHRoZSByZWxlYXNlIG5vdGVzLiAiK24pfTt2YXIgel90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6X3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEX3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5lbnRyeUluZGV4PXQsdGhpcy5leGl0SW5kZXg9dCx0aGlzLm1pbkluZGV4PXQsdGhpcy5tYXhJbmRleD10LHRoaXMuYnVja2V0VmFsdWU9ZSx0aGlzLm1pblZhbHVlPW4sdGhpcy5tYXhWYWx1ZT1ufXJldHVybiB0LnByb3RvdHlwZS5pc0luQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT10aGlzLmJ1Y2tldFZhbHVlfSx0LnByb3RvdHlwZS5hZGRUb0J1Y2tldD1mdW5jdGlvbih0LGUpe3Q8dGhpcy5taW5WYWx1ZSYmKHRoaXMubWluVmFsdWU9dCx0aGlzLm1pbkluZGV4PWUpLHQ+dGhpcy5tYXhWYWx1ZSYmKHRoaXMubWF4VmFsdWU9dCx0aGlzLm1heEluZGV4PWUpLHRoaXMuZXhpdEluZGV4PWV9LHQucHJvdG90eXBlLmdldFVuaXF1ZUluZGljZXM9ZnVuY3Rpb24oKXt2YXIgdD1bdGhpcy5lbnRyeUluZGV4LHRoaXMubWF4SW5kZXgsdGhpcy5taW5JbmRleCx0aGlzLmV4aXRJbmRleF07cmV0dXJuIHQuZmlsdGVyKChmdW5jdGlvbihlLG4pe3JldHVybiAwPT1ufHxlIT10W24tMV19KSl9LHR9KSgpO3pfdC5CdWNrZXQ9RF90O3ZhciBCX3Q9e30sSF90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoSF90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRl90PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXsiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LlNldD90aGlzLl9lczZTZXQ9bmV3IHdpbmRvdy5TZXQ6dGhpcy5fdmFsdWVzPVtdLHRoaXMuc2l6ZT0wfXJldHVybiB0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXRoaXMuX2VzNlNldD8odGhpcy5fZXM2U2V0LmFkZCh0KSx0aGlzLnNpemU9dGhpcy5fZXM2U2V0LnNpemUsdGhpcyk6KHRoaXMuaGFzKHQpfHwodGhpcy5fdmFsdWVzLnB1c2godCksdGhpcy5zaXplPXRoaXMuX3ZhbHVlcy5sZW5ndGgpLHRoaXMpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2U2V0KXt2YXIgZT10aGlzLl9lczZTZXQuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9dGhpcy5fZXM2U2V0LnNpemUsZX12YXIgbj10aGlzLl92YWx1ZXMuaW5kZXhPZih0KTtyZXR1cm4tMSE9PW4mJih0aGlzLl92YWx1ZXMuc3BsaWNlKG4sMSksdGhpcy5zaXplPXRoaXMuX3ZhbHVlcy5sZW5ndGgsITApfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXRoaXMuX2VzNlNldD90aGlzLl9lczZTZXQuaGFzKHQpOi0xIT09dGhpcy5fdmFsdWVzLmluZGV4T2YodCl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO251bGw9PXRoaXMuX2VzNlNldD90aGlzLl92YWx1ZXMuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dC5jYWxsKGUsaSxpLG4pfSkpOnRoaXMuX2VzNlNldC5mb3JFYWNoKChmdW5jdGlvbihpLHIpe3JldHVybiB0LmNhbGwoZSxpLHIsbil9KSxlKX0sdH0pKCk7SF90LlNldD1GX3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBWX3Q9dU8sVV90PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gVl90Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNhbGxDYWxsYmFja3M9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiB0aGlzLmZvckVhY2goKGZ1bmN0aW9uKG4pe24uYXBwbHkodCxlKX0pKSx0aGlzfSxlfSkoSF90LlNldCk7Ql90LkNhbGxiYWNrU2V0PVVfdDt2YXIgal90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShqX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBHX3Q9TV90LFdfdD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZW50aXRpZXM9W10sdGhpcy5fcnRyZWU9bmV3IEdfdC5SVHJlZX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkQWxsPWZ1bmN0aW9uKHQsZSxuKXtpZih0aGlzLl9lbnRpdGllcz10aGlzLl9lbnRpdGllcy5jb25jYXQodCksdm9pZCAwIT09bilmb3IodmFyIGk9R190LlJUcmVlQm91bmRzLmJvdW5kcyhuKSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPUdfdC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMoZShhPXRbcl0pKTtHX3QuUlRyZWVCb3VuZHMuaXNCb3VuZHNPdmVybGFwQm91bmRzKGksbykmJnRoaXMuX3J0cmVlLmluc2VydChvLGEpfWVsc2UgZm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE7bz1HX3QuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKGUoYT10W3JdKSksdGhpcy5fcnRyZWUuaW5zZXJ0KG8sYSl9fSx0LnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0KHQpLnBvcCgpfSx0LnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0WD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUubG9jYXRlTmVhcmVzdFgodCkucG9wKCl9LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3RZPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0WSh0KS5wb3AoKX0sdC5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0KEdfdC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHModCkpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0WChHX3QuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKHQpKX0sdC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmludGVyc2VjdFkoR190LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LHQucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0aWVzfSx0fSkoKTtqX3QuRW50aXR5U3RvcmU9V190O3ZhciBxX3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHFfdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFlfdD1uX3QsWF90PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXsiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93Lk1hcD90aGlzLl9lczZNYXA9bmV3IHdpbmRvdy5NYXA6dGhpcy5fa2V5VmFsdWVQYWlycz1bXX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7aWYoWV90LmlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiTmFOIG1heSBub3QgYmUgdXNlZCBhcyBhIGtleSB0byB0aGUgTWFwIik7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuc2V0KHQsZSksdGhpcztmb3IodmFyIG49MDtuPHRoaXMuX2tleVZhbHVlUGFpcnMubGVuZ3RoO24rKylpZih0aGlzLl9rZXlWYWx1ZVBhaXJzW25dLmtleT09PXQpcmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnNbbl0udmFsdWU9ZSx0aGlzO3JldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnB1c2goe2tleTp0LHZhbHVlOmV9KSx0aGlzfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZ2V0KHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tlXS52YWx1ZX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX2VzNk1hcClyZXR1cm4gdGhpcy5fZXM2TWFwLmhhcyh0KTtmb3IodmFyIGU9MDtlPHRoaXMuX2tleVZhbHVlUGFpcnMubGVuZ3RoO2UrKylpZih0aGlzLl9rZXlWYWx1ZVBhaXJzW2VdLmtleT09PXQpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO251bGw9PXRoaXMuX2VzNk1hcD90aGlzLl9rZXlWYWx1ZVBhaXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3QuY2FsbChlLGkudmFsdWUsaS5rZXksbil9KSk6dGhpcy5fZXM2TWFwLmZvckVhY2goKGZ1bmN0aW9uKGkscil7cmV0dXJuIHQuY2FsbChlLGkscixuKX0pLGUpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZGVsZXRlKHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlycy5zcGxpY2UoZSwxKSwhMDtyZXR1cm4hMX0sdH0pKCk7cV90Lk1hcD1YX3Q7dmFyICRfdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoJF90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwkX3QuYXNzaWduPWZ1bmN0aW9uIEtfdCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtmb3IodmFyIG49e30saT0wLHI9dDtpPHIubGVuZ3RoO2krKylmb3IodmFyIG89cltpXSxhPU9iamVjdC5rZXlzKG8pLHM9MCxsPWE7czxsLmxlbmd0aDtzKyspe3ZhciBjPWxbc107bltjXT1vW2NdfXJldHVybiBufTt2YXIgWl90PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShaX3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBKX3Q9Rmd0LFFfdD0iX19QbG90dGFibGVfQ2xpZW50VHJhbnNsYXRvciI7Wl90LmdldFRyYW5zbGF0b3I9ZnVuY3Rpb24gdHl0KHQpe3ZhciBlPXQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLG49ZVtRX3RdO3JldHVybiBudWxsPT1uJiYobj1uZXcgZXl0KGUpLGVbUV90XT1uKSxufTt2YXIgZXl0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fcm9vdEVsZW1lbnQ9dH1yZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSl7dmFyIG49e3g6dCx5OmV9LGk9Sl90Lk1hdGguZ2V0Q3VtdWxhdGl2ZVRyYW5zZm9ybSh0aGlzLl9yb290RWxlbWVudCk7cmV0dXJuIG51bGw9PWk/bjpKX3QuTWF0aC5hcHBseVRyYW5zZm9ybShpLG4pfSx0LmlzRXZlbnRJbnNpZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gSl90LkRPTS5jb250YWlucyh0LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSxlLnRhcmdldCl9LHR9KSgpO1pfdC5UcmFuc2xhdG9yPWV5dCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT11Tzt0LkFycmF5PVZndCx0LkNvbG9yPVhndCx0LkRPTT1lX3QsdC5NYXRoPW5fdCx0LlJUcmVlPU1fdCx0LlN0YWNraW5nPUFfdCx0LldpbmRvdz1rX3QsZS5fX2V4cG9ydFN0YXIoel90LHQpLGUuX19leHBvcnRTdGFyKEJfdCx0KSxlLl9fZXhwb3J0U3RhcihibXQsdCksZS5fX2V4cG9ydFN0YXIoal90LHQpLGUuX19leHBvcnRTdGFyKHFfdCx0KSxlLl9fZXhwb3J0U3RhcigkX3QsdCksZS5fX2V4cG9ydFN0YXIoSF90LHQpLGUuX19leHBvcnRTdGFyKFpfdCx0KX0pKEZndCk7dmFyIG55dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkobnl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaXl0PUZndCxyeXQ9SGd0LG95dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyeXQuZmx1c2goKX0sdH0pKCk7bnl0LkltbWVkaWF0ZT1veXQ7dmFyIGF5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtpeXQuRE9NLnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKHJ5dC5mbHVzaCl9LHR9KSgpO255dC5BbmltYXRpb25GcmFtZT1heXQ7dmFyIHN5dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fdGltZW91dE1zZWM9aXl0LkRPTS5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EU31yZXR1cm4gdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7c2V0VGltZW91dChyeXQuZmx1c2gsdGhpcy5fdGltZW91dE1zZWMpfSx0fSkoKTtueXQuVGltZW91dD1zeXQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9Rmd0LG49U210LGk9bnl0LHI9bmV3IGUuU2V0LG89bmV3IGUuU2V0LGE9ITEscz0hMTt0LlBvbGljeT1uLm1ha2VFbnVtKFsiaW1tZWRpYXRlIiwiYW5pbWF0aW9uRnJhbWUiLCJ0aW1lb3V0Il0pO3ZhciBsPW5ldyBpLkFuaW1hdGlvbkZyYW1lO2Z1bmN0aW9uIGModCl7by5hZGQodCksci5hZGQodCksdSgpfWZ1bmN0aW9uIHUoKXthfHwoYT0hMCxsLnJlbmRlcigpKX10LnJlbmRlclBvbGljeT1mdW5jdGlvbiBoKG4pe2lmKG51bGw9PW4pcmV0dXJuIGw7c3dpdGNoKG4pe2Nhc2UgdC5Qb2xpY3kuaW1tZWRpYXRlOmw9bmV3IGkuSW1tZWRpYXRlO2JyZWFrO2Nhc2UgdC5Qb2xpY3kuYW5pbWF0aW9uRnJhbWU6bD1uZXcgaS5BbmltYXRpb25GcmFtZTticmVhaztjYXNlIHQuUG9saWN5LnRpbWVvdXQ6bD1uZXcgaS5UaW1lb3V0O2JyZWFrO2RlZmF1bHQ6ZS5XaW5kb3cud2FybigiVW5yZWNvZ25pemVkIHJlbmRlclBvbGljeTogIituKX19LHQucmVnaXN0ZXJUb1JlbmRlcj1mdW5jdGlvbiBkKHQpe3MmJmUuV2luZG93Lndhcm4oIlJlZ2lzdGVyZWQgdG8gcmVuZGVyIHdoaWxlIG90aGVyIGNvbXBvbmVudHMgYXJlIGZsdXNoaW5nOiByZXF1ZXN0IG1heSBiZSBpZ25vcmVkIiksci5hZGQodCksdSgpfSx0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyPWMsdC5yZWdpc3RlclRvQ29tcHV0ZUxheW91dD1mdW5jdGlvbiBwKHQpe2ModCl9LHQuZmx1c2g9ZnVuY3Rpb24gZigpe2lmKGEpe28uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY29tcHV0ZUxheW91dCgpfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVuZGVyKCl9KSkscz0hMDt2YXIgdD1uZXcgZS5TZXQ7ci5mb3JFYWNoKChmdW5jdGlvbihlKXt0cnl7ZS5yZW5kZXJJbW1lZGlhdGVseSgpfWNhdGNoKG4pe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IG59KSwwKSx0LmFkZChlKX19KSksbz1uZXcgZS5TZXQscj10LGE9ITEscz0hMX19fSkoSGd0KSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KEJndCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGx5dD1FZHQsY3l0PUhndCx1eXQ9Rmd0LGh5dD1TZS5leHBvcnRzLGR5dD1ibXQscHl0PVNtdDtCZ3QuWEFsaWdubWVudD1weXQubWFrZUVudW0oWyJsZWZ0IiwiY2VudGVyIiwicmlnaHQiXSksQmd0LllBbGlnbm1lbnQ9cHl0Lm1ha2VFbnVtKFsidG9wIiwiY2VudGVyIiwiYm90dG9tIl0pO3ZhciBmeXQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX292ZXJmbG93SGlkZGVuPSExLHRoaXMuX29yaWdpbj17eDowLHk6MH0sdGhpcy5feEFsaWdubWVudD0ibGVmdCIsdGhpcy5feUFsaWdubWVudD0idG9wIix0aGlzLl9pc1NldHVwPSExLHRoaXMuX2lzQW5jaG9yZWQ9ITEsdGhpcy5fY3NzQ2xhc3Nlcz1uZXcgdXl0LlNldCx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25BbmNob3JDYWxsYmFja3M9bmV3IHV5dC5DYWxsYmFja1NldCx0aGlzLl9vbkRldGFjaENhbGxiYWNrcz1uZXcgdXl0LkNhbGxiYWNrU2V0LHRoaXMuX2Nzc0NsYXNzZXMuYWRkKCJjb21wb25lbnQiKX1yZXR1cm4gdC5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKHQpe2lmKHQ9ZHl0LmNvZXJjZUV4dGVybmFsRDModCksdGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgcmV1c2UgZGVzdHJveSgpLWVkIENvbXBvbmVudHMhIik7cmV0dXJuIHRoaXMuaXNSb290KCkmJih0aGlzLl9yb290RWxlbWVudD10LHRoaXMuX3Jvb3RFbGVtZW50LmNsYXNzZWQoInBsb3R0YWJsZSIsITApKSxudWxsIT10aGlzLl9lbGVtZW50P3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQubm9kZSgpKToodGhpcy5fZWxlbWVudD10LmFwcGVuZCgiZGl2IiksdGhpcy5fc2V0dXAoKSksdGhpcy5faXNBbmNob3JlZD0hMCx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLm9uQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0KHRoaXMpLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSx0LnByb3RvdHlwZS5vZmZBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2lzU2V0dXB8fCh0aGlzLl9jc3NDbGFzc2VzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2VsZW1lbnQuY2xhc3NlZChlLCEwKX0pKSx0aGlzLl9jc3NDbGFzc2VzPW5ldyB1eXQuU2V0LHRoaXMuX2JhY2tncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImJhY2tncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fY29udGVudD10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiY29udGVudCIsITApLHRoaXMuX2ZvcmVncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImZvcmVncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fY29udGVudC5jbGFzc2VkKHRoaXMuX292ZXJmbG93SGlkZGVuPyJjb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIjoiY29tcG9uZW50LW92ZXJmbG93LXZpc2libGUiLCEwKSx0aGlzLl9pc1NldHVwPSEwKX0sdC5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm57bWluV2lkdGg6MCxtaW5IZWlnaHQ6MH19LHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe2lmKG51bGw9PWV8fG51bGw9PW58fG51bGw9PWkpe2lmKG51bGw9PXRoaXMuX2VsZW1lbnQpdGhyb3cgbmV3IEVycm9yKCJhbmNob3IoKSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgY29tcHV0ZUxheW91dCgpIik7aWYobnVsbD09dGhpcy5fcm9vdEVsZW1lbnQpdGhyb3cgbmV3IEVycm9yKCJudWxsIGFyZ3VtZW50cyBjYW5ub3QgYmUgcGFzc2VkIHRvIGNvbXB1dGVMYXlvdXQoKSBvbiBhIG5vbi1yb290LCB1bmFuY2hvcmVkIG5vZGUiKTtlPXt4OjAseTowfTt2YXIgcj10aGlzLl9yb290RWxlbWVudC5ub2RlKCk7bj11eXQuRE9NLmVsZW1lbnRXaWR0aChyKSxpPXV5dC5ET00uZWxlbWVudEhlaWdodChyKX12YXIgbz10aGlzLl9zaXplRnJvbU9mZmVyKG4saSksYT1vLmhlaWdodCxzPW8ud2lkdGg7cmV0dXJuIHRoaXMuc2V0Qm91bmRzKHMsYSxlLngrKG4tcykqdC5feEFsaWduVG9Qcm9wb3J0aW9uW3RoaXMuX3hBbGlnbm1lbnRdLGUueSsoaS1hKSp0Ll95QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feUFsaWdubWVudF0pLHRoaXN9LHQucHJvdG90eXBlLnNldEJvdW5kcz1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09aSYmKGk9MCksdGhpcy5fd2lkdGg9dCx0aGlzLl9oZWlnaHQ9ZSx0aGlzLl9vcmlnaW49e3g6bix5Oml9LG51bGwhPXRoaXMuX2VsZW1lbnQmJnRoaXMuX2VsZW1lbnQuc3R5bGVzKHtsZWZ0Om4rInB4IixoZWlnaHQ6ZSsicHgiLHRvcDppKyJweCIsd2lkdGg6dCsicHgifSksbnVsbCE9dGhpcy5fcmVzaXplSGFuZGxlciYmdGhpcy5fcmVzaXplSGFuZGxlcih7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXN9LHQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0LGUpO3JldHVybnt3aWR0aDp0aGlzLmZpeGVkV2lkdGgoKT9NYXRoLm1pbih0LG4ubWluV2lkdGgpOnQsaGVpZ2h0OnRoaXMuZml4ZWRIZWlnaHQoKT9NYXRoLm1pbihlLG4ubWluSGVpZ2h0KTplfX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJnRoaXMud2lkdGgoKT49MCYmdGhpcy5oZWlnaHQoKT49MCYmY3l0LnJlZ2lzdGVyVG9SZW5kZXIodGhpcyksdGhpc30sdC5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXIoKX0sdC5wcm90b3R5cGUuX3NjaGVkdWxlQ29tcHV0ZUxheW91dD1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJmN5dC5yZWdpc3RlclRvQ29tcHV0ZUxheW91dEFuZFJlbmRlcih0aGlzKX0sdC5wcm90b3R5cGUub25SZXNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc2l6ZUhhbmRsZXI9dCx0aGlzfSx0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNBbmNob3JlZCYmdGhpcy5faXNTZXR1cCYmKHRoaXMuaXNSb290KCk/dGhpcy5fc2NoZWR1bGVDb21wdXRlTGF5b3V0KCk6dGhpcy5wYXJlbnQoKS5yZWRyYXcoKSksdGhpc30sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5yZW5kZXJUbz1mdW5jdGlvbih0KXtpZih0aGlzLmRldGFjaCgpLG51bGwhPXQpe3ZhciBlPXZvaWQgMDtpZighKGU9InN0cmluZyI9PXR5cGVvZiB0fHxoeXQuaXNFbGVtZW50KHQpP2x5dC5zZWxlY3QodCk6ZHl0LmNvZXJjZUV4dGVybmFsRDModCkpLm5vZGUoKXx8bnVsbD09ZS5ub2RlKCkubm9kZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJQbG90dGFibGUgcmVxdWlyZXMgYSB2YWxpZCBFbGVtZW50IHRvIHJlbmRlclRvIik7aWYoInN2ZyI9PT1lLm5vZGUoKS5ub2RlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlBsb3R0YWJsZSAzLnggYW5kIGxhdGVyIGNhbiBvbmx5IHJlbmRlclRvIGFuIEhUTUwgY29tcG9uZW50OyBwYXNzIGEgZGl2IGluc3RlYWQhIik7dGhpcy5hbmNob3IoZSl9aWYobnVsbD09dGhpcy5fZWxlbWVudCl0aHJvdyBuZXcgRXJyb3IoIklmIGEgQ29tcG9uZW50IGhhcyBuZXZlciBiZWVuIHJlbmRlcmVkIGJlZm9yZSwgdGhlbiByZW5kZXJUbyBtdXN0IGJlIGdpdmVuIGEgbm9kZSB0byByZW5kZXIgdG8sIG9yIGEgZDMuU2VsZWN0aW9uLCBvciBhIHNlbGVjdG9yIHN0cmluZyIpO3JldHVybiBjeXQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXIodGhpcyksY3l0LmZsdXNoKCksdGhpc30sdC5wcm90b3R5cGUueEFsaWdubWVudD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl94QWxpZ25tZW50O2lmKGU9ZS50b0xvd2VyQ2FzZSgpLG51bGw9PXQuX3hBbGlnblRvUHJvcG9ydGlvbltlXSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGFsaWdubWVudDogIitlKTtyZXR1cm4gdGhpcy5feEFsaWdubWVudD1lLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUueUFsaWdubWVudD1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl95QWxpZ25tZW50O2lmKGU9ZS50b0xvd2VyQ2FzZSgpLG51bGw9PXQuX3lBbGlnblRvUHJvcG9ydGlvbltlXSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIGFsaWdubWVudDogIitlKTtyZXR1cm4gdGhpcy5feUFsaWdubWVudD1lLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQmJihudWxsPT10aGlzLl9lbGVtZW50P3RoaXMuX2Nzc0NsYXNzZXMuaGFzKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0KSl9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHwobnVsbD09dGhpcy5fZWxlbWVudD90aGlzLl9jc3NDbGFzc2VzLmFkZCh0KTp0aGlzLl9lbGVtZW50LmNsYXNzZWQodCwhMCkpLHRoaXN9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHwobnVsbD09dGhpcy5fZWxlbWVudD90aGlzLl9jc3NDbGFzc2VzLmRlbGV0ZSh0KTp0aGlzLl9lbGVtZW50LmNsYXNzZWQodCwhMSkpLHRoaXN9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sdC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KG51bGwpLHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2VsZW1lbnQucmVtb3ZlKCksdGhpcy5faXNBbmNob3JlZD0hMSx0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLm9uRGV0YWNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmRGV0YWNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkRldGFjaENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sdC5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIHRoaXMuX3BhcmVudDtpZihudWxsIT09dCYmIXQuaGFzKHRoaXMpKXRocm93IG5ldyBFcnJvcigiUGFzc2VkIGludmFsaWQgcGFyZW50Iik7cmV0dXJuIHRoaXMuX3BhcmVudD10LHRoaXN9LHQucHJvdG90eXBlLmJvdW5kcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3JpZ2luKCk7cmV0dXJue3RvcExlZnQ6dCxib3R0b21SaWdodDp7eDp0LngrdGhpcy53aWR0aCgpLHk6dC55K3RoaXMuaGVpZ2h0KCl9fX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmRldGFjaCgpfSx0LnByb3RvdHlwZS53aWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl93aWR0aH0sdC5wcm90b3R5cGUuaGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2hlaWdodH0sdC5wcm90b3R5cGUub3JpZ2luPWZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5fb3JpZ2luLngseTp0aGlzLl9vcmlnaW4ueX19LHQucHJvdG90eXBlLm9yaWdpblRvUm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLm9yaWdpbigpLGU9dGhpcy5wYXJlbnQoKTtudWxsIT1lOyl7dmFyIG49ZS5vcmlnaW4oKTt0LngrPW4ueCx0LnkrPW4ueSxlPWUucGFyZW50KCl9cmV0dXJuIHR9LHQucHJvdG90eXBlLnJvb3Q9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpczshdC5pc1Jvb3QoKTspdD10LnBhcmVudCgpO3JldHVybiB0fSx0LnByb3RvdHlwZS5pc1Jvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5wYXJlbnQoKX0sdC5wcm90b3R5cGUuZm9yZWdyb3VuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JlZ3JvdW5kQ29udGFpbmVyfSx0LnByb3RvdHlwZS5jb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnR9LHQucHJvdG90eXBlLmVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxlbWVudH0sdC5wcm90b3R5cGUucm9vdEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290KCkuX3Jvb3RFbGVtZW50fSx0LnByb3RvdHlwZS5iYWNrZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRDb250YWluZXJ9LHQuX3hBbGlnblRvUHJvcG9ydGlvbj17bGVmdDowLGNlbnRlcjouNSxyaWdodDoxfSx0Ll95QWxpZ25Ub1Byb3BvcnRpb249e3RvcDowLGNlbnRlcjouNSxib3R0b206MX0sdH0pKCk7Qmd0LkNvbXBvbmVudD1meXQ7dmFyIG15dD17fSxneXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShneXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBfeXQ9RWR0O2Z1bmN0aW9uIHl5dCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9Myksdnl0KHQpLGZ1bmN0aW9uKGUpe3JldHVybiBlLnRvRml4ZWQodCl9fWZ1bmN0aW9uIHZ5dCh0KXtpZih0PDB8fHQ+MjApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZvcm1hdHRlciBwcmVjaXNpb24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIik7aWYodCE9PU1hdGguZmxvb3IodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZvcm1hdHRlciBwcmVjaXNpb24gbXVzdCBiZSBhbiBpbnRlZ2VyIil9Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovZ3l0LmN1cnJlbmN5PWZ1bmN0aW9uIGJ5dCh0LGUsbil7dm9pZCAwPT09dCYmKHQ9Miksdm9pZCAwPT09ZSYmKGU9IiQiKSx2b2lkIDA9PT1uJiYobj0hMCk7dmFyIGk9eXl0KHQpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj1pKE1hdGguYWJzKHQpKTtyZXR1cm4iIiE9PXImJihuP3I9ZStyOnIrPWUsdDwwJiYocj0iLSIrcikpLHJ9fSxneXQuZml4ZWQ9eXl0LGd5dC5nZW5lcmFsPWZ1bmN0aW9uIHh5dCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9Myksdnl0KHQpLGZ1bmN0aW9uKGUpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG49TWF0aC5wb3coMTAsdCk7cmV0dXJuIFN0cmluZyhNYXRoLnJvdW5kKGUqbikvbil9cmV0dXJuIFN0cmluZyhlKX19LGd5dC5pZGVudGl0eT1mdW5jdGlvbiB3eXQoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KX19LGd5dC5wZXJjZW50YWdlPWZ1bmN0aW9uIFN5dCh0KXt2b2lkIDA9PT10JiYodD0wKTt2YXIgZT15eXQodCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPTEwMCp0LGk9dC50b1N0cmluZygpLHI9TWF0aC5wb3coMTAsaS5sZW5ndGgtKGkuaW5kZXhPZigiLiIpKzEpKTtyZXR1cm4gbj1wYXJzZUludCgobipyKS50b1N0cmluZygpLDEwKS9yLGUobikrIiUifX0sZ3l0LnNpU3VmZml4PWZ1bmN0aW9uIE15dCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9Myksdnl0KHQpLGZ1bmN0aW9uKGUpe3JldHVybiBfeXQuZm9ybWF0KCIuIit0KyJzIikoZSl9fSxneXQuc2hvcnRTY2FsZT1mdW5jdGlvbiBFeXQodCl7dm9pZCAwPT09dCYmKHQ9Myksdnl0KHQpO3ZhciBlPSJLTUJUUSIsbj1feXQuZm9ybWF0KCIuIit0KyJlIiksaT1feXQuZm9ybWF0KCIuIit0KyJmIikscj1NYXRoLnBvdygxMCwzKihlLmxlbmd0aCsxKSksbz1NYXRoLnBvdygxMCwtdCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBhPU1hdGguYWJzKHQpO2lmKChhPG98fGE+PXIpJiYwIT09YSlyZXR1cm4gbih0KTtmb3IodmFyIHM9LTE7YT49TWF0aC5wb3coMWUzLHMrMikmJnM8ZS5sZW5ndGgtMTspcysrO3ZhciBsPSIiO3JldHVybiBsPS0xPT09cz9pKHQpOmkodC9NYXRoLnBvdygxZTMscysxKSkrZVtzXSwodD4wJiYiMTAwMCI9PT1sLnN1YnN0cigwLDQpfHx0PDAmJiItMTAwMCI9PT1sLnN1YnN0cigwLDUpKSYmKHM8ZS5sZW5ndGgtMT8ocysrLGw9aSh0L01hdGgucG93KDFlMyxzKzEpKStlW3NdKTpsPW4odCkpLGx9fSxneXQubXVsdGlUaW1lPWZ1bmN0aW9uIFR5dCgpe3ZhciB0PVt7c3BlY2lmaWVyOiIuJUwiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0TWlsbGlzZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiI6JVMiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0U2Vjb25kcygpfX0se3NwZWNpZmllcjoiJUk6JU0iLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0TWludXRlcygpfX0se3NwZWNpZmllcjoiJUkgJXAiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0SG91cnMoKX19LHtzcGVjaWZpZXI6IiVhICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LmdldERheSgpJiYxIT09dC5nZXREYXRlKCl9fSx7c3BlY2lmaWVyOiIlYiAlZCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAxIT09dC5nZXREYXRlKCl9fSx7c3BlY2lmaWVyOiIlYiIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNb250aCgpfX1dO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQucHJlZGljYXRlKGUpfSkpO3JldHVybiBfeXQudGltZUZvcm1hdChuLmxlbmd0aD4wP25bMF0uc3BlY2lmaWVyOiIlWSIpKGUpfX0sZ3l0LnRpbWU9ZnVuY3Rpb24gQ3l0KHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSExKSxlP195dC51dGNGb3JtYXQodCk6X3l0LnRpbWVGb3JtYXQodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShteXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBBeXQ9dU8sa3l0PUVkdCxMeXQ9SW10LFB5dD1CZ3QsTnl0PWd5dCxJeXQ9Rmd0O215dC5BeGlzT3JpZW50YXRpb249U210Lm1ha2VFbnVtKFsiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wIl0pO3ZhciBSeXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7aWYoaS5fZW5kVGlja0xlbmd0aD01LGkuX2lubmVyVGlja0xlbmd0aD01LGkuX3RpY2tMYWJlbFBhZGRpbmc9MTAsaS5fbWFyZ2luPTE1LGkuX3Nob3dFbmRUaWNrTGFiZWxzPSExLGkuX2Fubm90YXRpb25zRW5hYmxlZD0hMSxpLl9hbm5vdGF0aW9uVGllckNvdW50PTEsbnVsbD09ZXx8bnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIkF4aXMgcmVxdWlyZXMgYSBzY2FsZSBhbmQgb3JpZW50YXRpb24iKTtyZXR1cm4gaS5fc2NhbGU9ZSxpLm9yaWVudGF0aW9uKG4pLGkuX3NldERlZmF1bHRBbGlnbm1lbnQoKSxpLmFkZENsYXNzKCJheGlzIiksaS5pc0hvcml6b250YWwoKT9pLmFkZENsYXNzKCJ4LWF4aXMiKTppLmFkZENsYXNzKCJ5LWF4aXMiKSxpLmZvcm1hdHRlcihOeXQuaWRlbnRpdHkoKSksaS5fcmVzY2FsZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9yZXNjYWxlKCl9LGkuX3NjYWxlLm9uVXBkYXRlKGkuX3Jlc2NhbGVDYWxsYmFjayksaS5fYW5ub3RhdGVkVGlja3M9W10saS5fYW5ub3RhdGlvbkZvcm1hdHRlcj1OeXQuaWRlbnRpdHkoKSxpfXJldHVybiBBeXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVzY2FsZUNhbGxiYWNrKX0sZS5wcm90b3R5cGUudGlja0xhYmVsRGF0YU9uRWxlbWVudD1mdW5jdGlvbih0KXtpZihudWxsIT10KXtmb3IodmFyIG47bnVsbCE9dCYmdC5jbGFzc0xpc3QmJnZvaWQgMD09PW47KXQuY2xhc3NMaXN0LmNvbnRhaW5zKGUuVElDS19MQUJFTF9DTEFTUyk/bj10OnQ9dC5wYXJlbnROb2RlO3JldHVybiB2b2lkIDA9PT10P3ZvaWQgMDpreXQuc2VsZWN0KHQpLmRhdHVtKCl9fSxlLnByb3RvdHlwZS5fY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxuKXt2YXIgaT0wLHI9MDtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT8ocj10aGlzLl9jb21wdXRlSGVpZ2h0KCkrdGhpcy5fbWFyZ2luLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkmJihyKz0odGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKSk6KGk9dGhpcy5fY29tcHV0ZVdpZHRoKCkrdGhpcy5fbWFyZ2luLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkmJihpKz0odGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKSkse21pbldpZHRoOmksbWluSGVpZ2h0OnJ9fSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNIb3Jpem9udGFsKCl9LGUucHJvdG90eXBlLl9yZXNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXIoKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX3NjYWxlLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pOnRoaXMuX3NjYWxlLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSx0aGlzfSxlLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMucmVxdWVzdGVkU3BhY2UodCxlKTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT97d2lkdGg6dCxoZWlnaHQ6bi5taW5IZWlnaHR9OntoZWlnaHQ6ZSx3aWR0aDpuLm1pbldpZHRofX0sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fdGlja01hcmtDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApLHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKGUuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApLHRoaXMuX2Jhc2VsaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1saW5lLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLXJlY3QtY29udGFpbmVyIiwhMCk7dmFyIG49dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWxhYmVsLWNvbnRhaW5lciIsITApLGk9bmV3IEx5dC5TdmdDb250ZXh0KG4ubm9kZSgpKTt0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXI9bmV3IEx5dC5DYWNoZU1lYXN1cmVyKGkpLHRoaXMuX2Fubm90YXRpb25Xcml0ZXI9bmV3IEx5dC5Xcml0ZXIodGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLGkpfSxlLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3JldHVybltdfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFRpY2tWYWx1ZXMoKSxuPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLmRhdGEodCksaT1uLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChlLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2Uobik7cmV0dXJuIGkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCkpLGt5dC5zZWxlY3QoaS5ub2RlcygpWzBdKS5jbGFzc2VkKGUuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSksa3l0LnNlbGVjdChpLm5vZGVzKClbdC5sZW5ndGgtMV0pLmNsYXNzZWQoZS5FTkRfVElDS19NQVJLX0NMQVNTLCEwKS5hdHRycyh0aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goITApKSxuLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9iYXNlbGluZS5hdHRycyh0aGlzLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2goKSksdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LGUucHJvdG90eXBlLmFubm90YXRlZFRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Fubm90YXRlZFRpY2tzOih0aGlzLl9hbm5vdGF0ZWRUaWNrcz10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25Gb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcjoodGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcj10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25zRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ6KHRoaXMuX2Fubm90YXRpb25zRW5hYmxlZD10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25UaWVyQ291bnQ9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbm5vdGF0aW9uVGllckNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbm5vdGF0aW9uVGllckNvdW50PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5fZHJhd0Fubm90YXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWUuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORyxpPW5ldyBJeXQuTWFwLHI9dGhpcy5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcigpO3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9dC5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUodC5hbm5vdGF0aW9uRm9ybWF0dGVyKCkoZSkpO2kuc2V0KGUse3dpZHRoOnIud2lkdGgrMipuLGhlaWdodDpyLmhlaWdodCsyKm59KX0pKTt2YXIgbz10aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCsyKm4sYT10aGlzLl9hbm5vdGF0aW9uVG9UaWVyKGkpLHM9bmV3IEl5dC5TZXQsbD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGM9dGhpcy5fY29yZVNpemUoKSx1PU1hdGgubWluKHRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpLE1hdGguZmxvb3IoKGwtYykvbykpO2EuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXsoLTE9PT10fHx0Pj11KSYmcy5hZGQoZSl9KSk7dmFyIGgsZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5zZWxlY3RBbGwoIi4iK24pLmRhdGEociksbz1pLmVudGVyKCkuYXBwZW5kKGUpLmNsYXNzZWQobiwhMCkubWVyZ2UoaSk7cmV0dXJuIGkuZXhpdCgpLnJlbW92ZSgpLG99LHA9ZnVuY3Rpb24oZSl7c3dpdGNoKHQub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOnJldHVybiBhLmdldChlKSpvK2M7Y2FzZSJ0b3AiOmNhc2UibGVmdCI6cmV0dXJuIGwtYy1hLmdldChlKSpvfX0sZj1mdW5jdGlvbihlKXtyZXR1cm4gdC5fc2NhbGUuc2NhbGUoZSl9LG09ZnVuY3Rpb24odCl7cmV0dXJuIHMuaGFzKHQpPyJoaWRkZW4iOiJ2aXNpYmxlIn07c3dpdGNoKHRoaXMub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOmg9MDticmVhaztjYXNlInRvcCI6aD10aGlzLmhlaWdodCgpO2JyZWFrO2Nhc2UibGVmdCI6aD10aGlzLndpZHRoKCl9dmFyIGc9dGhpcy5pc0hvcml6b250YWwoKTtkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1saW5lLWNvbnRhaW5lciIpLCJsaW5lIixlLkFOTk9UQVRJT05fTElORV9DTEFTUykuYXR0cnMoe3gxOmc/ZjpoLHgyOmc/ZjpwLHkxOmc/aDpmLHkyOmc/cDpmLHZpc2liaWxpdHk6bX0pLGQodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLWNpcmNsZS1jb250YWluZXIiKSwiY2lyY2xlIixlLkFOTk9UQVRJT05fQ0lSQ0xFX0NMQVNTKS5hdHRycyh7Y3g6Zz9mOmgsY3k6Zz9oOmYscjozfSk7dmFyIF89ZnVuY3Rpb24oZSl7c3dpdGNoKHQub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOnJldHVybiBwKGUpO2Nhc2UidG9wIjpjYXNlImxlZnQiOnJldHVybiBwKGUpLWkuZ2V0KGUpLmhlaWdodH19O2QodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLXJlY3QtY29udGFpbmVyIiksInJlY3QiLGUuQU5OT1RBVElPTl9SRUNUX0NMQVNTKS5hdHRycyh7eDpnP2Y6Xyx5Omc/XzpmLHdpZHRoOmc/ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLndpZHRofTpmdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkuaGVpZ2h0fSxoZWlnaHQ6Zz9mdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkuaGVpZ2h0fTpmdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkud2lkdGh9LHZpc2liaWxpdHk6bX0pO3ZhciB5PXRoaXMuX2Fubm90YXRpb25Xcml0ZXIsdj10aGlzLmFubm90YXRpb25Gb3JtYXR0ZXIoKSxiPWQodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLWxhYmVsLWNvbnRhaW5lciIpLCJnIixlLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1MpO2Iuc2VsZWN0QWxsKCIudGV4dC1jb250YWluZXIiKS5yZW1vdmUoKSxiLmF0dHJzKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhnP2YodCk6Xyh0KSkrIiwiKyhnP18odCk6Zih0KSkrIikifSx2aXNpYmlsaXR5Om19KS5lYWNoKChmdW5jdGlvbih0KXt5LndyaXRlKHYodCksZz9pLmdldCh0KS53aWR0aDppLmdldCh0KS5oZWlnaHQsZz9pLmdldCh0KS5oZWlnaHQ6aS5nZXQodCkud2lkdGgse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOmc/MDo5MH0sa3l0LnNlbGVjdCh0aGlzKS5ub2RlKCkpfSkpfSxlLnByb3RvdHlwZS5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9zY2FsZS5yYW5nZSgpO3JldHVybiBJeXQuQXJyYXkudW5pcSh0aGlzLmFubm90YXRlZFRpY2tzKCkuZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmSXl0Lk1hdGguaW5SYW5nZSh0Ll9zY2FsZS5zY2FsZShuKSxlWzBdLGVbMV0pfSkpKX0sZS5wcm90b3R5cGUuX2NvcmVTaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxlPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5fY29tcHV0ZUhlaWdodCgpOnRoaXMuX2NvbXB1dGVXaWR0aCgpO3JldHVybiBNYXRoLm1pbihlLHQpfSxlLnByb3RvdHlwZS5fYW5ub3RhdGlvblRpZXJIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkd9LGUucHJvdG90eXBlLl9hbm5vdGF0aW9uVG9UaWVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bW11dLGk9bmV3IEl5dC5NYXAscj10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9ZS5fc2NhbGUuc2NhbGUobykscz10LmdldChvKS53aWR0aDtpZihhPDB8fGErcz5yKWkuc2V0KG8sLTEpO2Vsc2V7Zm9yKHZhciBsPTA7bltsXS5zb21lKChmdW5jdGlvbihuKXt2YXIgaT1lLl9zY2FsZS5zY2FsZShuKSxyPXQuZ2V0KG4pLndpZHRoO3JldHVybiBhK3M+PWkmJmE8PWkrcn0pKTspbCsrLG4ubGVuZ3RoPT09bCYmbi5wdXNoKFtdKTtuW2xdLnB1c2gobyksaS5zZXQobyxsKX19KSksaX0sZS5wcm90b3R5cGUuX3JlbW92ZUFubm90YXRpb25zPWZ1bmN0aW9uKCl7dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxpbmUiKS5yZW1vdmUoKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tY2lyY2xlIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLXJlY3QiKS5yZW1vdmUoKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tbGFiZWwiKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaD1mdW5jdGlvbigpe3ZhciB0PXt4MTowLHkxOjAseDI6MCx5MjowfTtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0LngyPXRoaXMud2lkdGgoKTticmVhaztjYXNlInRvcCI6dC54Mj10aGlzLndpZHRoKCksdC55MT10aGlzLmhlaWdodCgpLHQueTI9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOnQueDE9dGhpcy53aWR0aCgpLHQueDI9dGhpcy53aWR0aCgpLHQueTI9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlInJpZ2h0Ijp0LnkyPXRoaXMuaGVpZ2h0KCl9cmV0dXJuIHR9LGUucHJvdG90eXBlLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49e3gxOjAseTE6MCx4MjowLHkyOjB9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NjYWxlLnNjYWxlKHQpfTt0aGlzLmlzSG9yaXpvbnRhbCgpPyhuLngxPWksbi54Mj1pKToobi55MT1pLG4ueTI9aSk7dmFyIHI9dD90aGlzLl9lbmRUaWNrTGVuZ3RoOnRoaXMuX2lubmVyVGlja0xlbmd0aDtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjpuLnkyPXI7YnJlYWs7Y2FzZSJ0b3AiOm4ueTE9dGhpcy5oZWlnaHQoKSxuLnkyPXRoaXMuaGVpZ2h0KCktcjticmVhaztjYXNlImxlZnQiOm4ueDE9dGhpcy53aWR0aCgpLG4ueDI9dGhpcy53aWR0aCgpLXI7YnJlYWs7Y2FzZSJyaWdodCI6bi54Mj1yfXJldHVybiBufSxlLnByb3RvdHlwZS5fc2V0RGVmYXVsdEFsaWdubWVudD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9vcmllbnRhdGlvbil7Y2FzZSJib3R0b20iOnRoaXMueUFsaWdubWVudCgidG9wIik7YnJlYWs7Y2FzZSJ0b3AiOnRoaXMueUFsaWdubWVudCgiYm90dG9tIik7YnJlYWs7Y2FzZSJsZWZ0Ijp0aGlzLnhBbGlnbm1lbnQoInJpZ2h0Iik7YnJlYWs7Y2FzZSJyaWdodCI6dGhpcy54QWxpZ25tZW50KCJsZWZ0Iil9fSxlLnByb3RvdHlwZS5pc0hvcml6b250YWw9ZnVuY3Rpb24oKXtyZXR1cm4idG9wIj09PXRoaXMuX29yaWVudGF0aW9ufHwiYm90dG9tIj09PXRoaXMuX29yaWVudGF0aW9ufSxlLnByb3RvdHlwZS5nZXRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuaW5uZXJUaWNrTGVuZ3RoPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2lubmVyVGlja0xlbmd0aDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJpbm5lciB0aWNrIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX2lubmVyVGlja0xlbmd0aD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZW5kVGlja0xlbmd0aD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RoO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoImVuZCB0aWNrIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX2VuZFRpY2tMZW5ndGg9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLl9tYXhMYWJlbFRpY2tMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93RW5kVGlja0xhYmVscygpP01hdGgubWF4KHRoaXMuaW5uZXJUaWNrTGVuZ3RoKCksdGhpcy5lbmRUaWNrTGVuZ3RoKCkpOnRoaXMuaW5uZXJUaWNrTGVuZ3RoKCl9LGUucHJvdG90eXBlLnRpY2tMYWJlbFBhZGRpbmc9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsUGFkZGluZztpZih0PDApdGhyb3cgbmV3IEVycm9yKCJ0aWNrIGxhYmVsIHBhZGRpbmcgbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5tYXJnaW49ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fbWFyZ2luO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoIm1hcmdpbiBzaXplIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fbWFyZ2luPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9vcmllbnRhdGlvbjt2YXIgZT10LnRvTG93ZXJDYXNlKCk7aWYoInRvcCIhPT1lJiYiYm90dG9tIiE9PWUmJiJsZWZ0IiE9PWUmJiJyaWdodCIhPT1lKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgb3JpZW50YXRpb24iKTtyZXR1cm4gdGhpcy5fb3JpZW50YXRpb249ZSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnNob3dFbmRUaWNrTGFiZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Nob3dFbmRUaWNrTGFiZWxzOih0aGlzLl9zaG93RW5kVGlja0xhYmVscz10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9zaG93QWxsVGlja01hcmtzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTUFSS19DTEFTUykuZWFjaCgoZnVuY3Rpb24oKXtreXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpfSkpfSxlLnByb3RvdHlwZS5fc2hvd0FsbFRpY2tMYWJlbHM9ZnVuY3Rpb24oKXt0aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpLmVhY2goKGZ1bmN0aW9uKCl7a3l0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pKX0sZS5wcm90b3R5cGUuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpO24uZW1wdHkoKXx8bi5lYWNoKChmdW5jdGlvbihlLG4pe0l5dC5ET00uY2xpZW50UmVjdEluc2lkZSh0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxreXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSl9LGUucHJvdG90eXBlLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTUFSS19DTEFTUyksbj10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgbj1reXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuImluaGVyaXQiPT09bnx8InZpc2libGUiPT09bn0pKS5kYXRhKCk7dC5lYWNoKChmdW5jdGlvbih0LGUpey0xPT09bi5pbmRleE9mKHQpJiZreXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5yZXNldCgpfSxlLkVORF9USUNLX01BUktfQ0xBU1M9ImVuZC10aWNrLW1hcmsiLGUuVElDS19NQVJLX0NMQVNTPSJ0aWNrLW1hcmsiLGUuVElDS19MQUJFTF9DTEFTUz0idGljay1sYWJlbCIsZS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1M9ImFubm90YXRpb24tbGluZSIsZS5BTk5PVEFUSU9OX1JFQ1RfQ0xBU1M9ImFubm90YXRpb24tcmVjdCIsZS5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUz0iYW5ub3RhdGlvbi1jaXJjbGUiLGUuQU5OT1RBVElPTl9MQUJFTF9DTEFTUz0iYW5ub3RhdGlvbi1sYWJlbCIsZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HPTQsZX0pKFB5dC5Db21wb25lbnQpO215dC5BeGlzPVJ5dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KE5tdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIE95dD11Tyx6eXQ9RWR0LER5dD1JbXQsQnl0PUJndCxIeXQ9Rmd0LEZ5dD1teXQsVnl0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dm9pZCAwPT09biYmKG49ImJvdHRvbSIpO3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkuX3RpY2tMYWJlbEFuZ2xlPTAsaS5fdGlja0xhYmVsU2hlYXJBbmdsZT0wLGkuYWRkQ2xhc3MoImNhdGVnb3J5LWF4aXMiKSxpfXJldHVybiBPeXQuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfd3JhcHBlciIse2dldDpmdW5jdGlvbigpe3ZhciB0PW5ldyBEeXQuV3JhcHBlcjtyZXR1cm4gbnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4TGluZXMmJnQubWF4TGluZXModGhpcy5fdGlja0xhYmVsTWF4TGluZXMpLHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfd3JpdGVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEeXQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0LHRoaXMuX3dyYXBwZXIpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0PW5ldyBEeXQuU3ZnQ29udGV4dCh0aGlzLl90aWNrTGFiZWxDb250YWluZXIubm9kZSgpKSx0aGlzLl9tZWFzdXJlcj1uZXcgRHl0LkNhY2hlTWVhc3VyZXIodGhpcy5fdHlwZXNldHRlckNvbnRleHQpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlZHJhdygpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuaXNIb3Jpem9udGFsKCk/MDp0aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCksaT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkrdGhpcy5tYXJnaW4oKTowO2lmKDA9PT10aGlzLl9zY2FsZS5kb21haW4oKS5sZW5ndGgpcmV0dXJue21pbldpZHRoOjAsbWluSGVpZ2h0OjB9O2lmKHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkpe3ZhciByPXRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCkqdGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCk7dGhpcy5pc0hvcml6b250YWwoKT9pKz1yOm4rPXJ9dmFyIG89dGhpcy5fbWVhc3VyZVRpY2tMYWJlbHModCxlKTtyZXR1cm57bWluV2lkdGg6by51c2VkV2lkdGgrbixtaW5IZWlnaHQ6by51c2VkSGVpZ2h0K2l9fSxlLnByb3RvdHlwZS5fY29yZVNpemU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGU9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLnJlcXVlc3RlZFNwYWNlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKS5taW5IZWlnaHQ6dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSkubWluV2lkdGgsbj10aGlzLm1hcmdpbigpK3RoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk7cmV0dXJuIE1hdGgubWluKGUtbix0KX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXREb3duc2FtcGxlSW5mbygpLmRvbWFpbn0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQnl0LkNvbXBvbmVudC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHQsZSl9LGUucHJvdG90eXBlLmdldERvd25zYW1wbGVJbmZvPWZ1bmN0aW9uKHQsbil7dm9pZCAwPT09dCYmKHQ9dGhpcy5fc2NhbGUpLHZvaWQgMD09PW4mJihuPXQuaW52ZXJ0UmFuZ2UoKSk7dmFyIGk9MD09PXRoaXMuX3RpY2tMYWJlbEFuZ2xlPzE6MS9NYXRoLmNvcyh0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlLzE4MCpNYXRoLlBJKSxyPU1hdGguY2VpbChlLl9NSU5JTVVNX1dJRFRIX1BFUl9MQUJFTF9QWCppL3Quc3RlcFdpZHRoKCkpO3JldHVybntkb21haW46bi5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlcj09MH0pKSxzdGVwV2lkdGg6cip0LnN0ZXBXaWR0aCgpfX0sZS5wcm90b3R5cGUudGlja0xhYmVsQW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU7aWYoMCE9PXQmJjkwIT09dCYmLTkwIT09dCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrdCsiIG5vdCBzdXBwb3J0ZWQ7IG9ubHkgMCwgOTAsIGFuZCAtOTAgYXJlIHZhbGlkIHZhbHVlcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxBbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsU2hlYXJBbmdsZT1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlO2lmKHQ8LTgwfHx0PjgwKXRocm93IG5ldyBFcnJvcigiQW5nbGUgIit0KyIgbm90IHN1cHBvcnRlZDsgTXVzdCBiZSBiZXR3ZWVuIFstODAsIDgwXSIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS50aWNrTGFiZWxNYXhXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fdGlja0xhYmVsTWF4V2lkdGg6KHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUudGlja0xhYmVsTWF4TGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3RpY2tMYWJlbE1heExpbmVzOih0aGlzLl90aWNrTGFiZWxNYXhMaW5lcz10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLl90aWNrU3BhY2VSZXF1aXJlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKX0sZS5wcm90b3R5cGUuX2RyYXdUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGkscj10aGlzO3N3aXRjaCh0aGlzLnRpY2tMYWJlbEFuZ2xlKCkpe2Nhc2UgMDpuPXtsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9LGk9e2xlZnQ6ImNlbnRlciIscmlnaHQ6ImNlbnRlciIsdG9wOiJib3R0b20iLGJvdHRvbToidG9wIn07YnJlYWs7Y2FzZSA5MDpuPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoicmlnaHQiLGJvdHRvbToibGVmdCJ9LGk9e2xlZnQ6InRvcCIscmlnaHQ6ImJvdHRvbSIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn07YnJlYWs7Y2FzZS05MDpuPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoibGVmdCIsYm90dG9tOiJyaWdodCJ9LGk9e2xlZnQ6ImJvdHRvbSIscmlnaHQ6InRvcCIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn19ZS5lYWNoKChmdW5jdGlvbihlKXt2YXIgbz16eXQuc2VsZWN0KHRoaXMpLGE9ci5pc0hvcml6b250YWwoKT90OnIud2lkdGgoKS1yLl90aWNrU3BhY2VSZXF1aXJlZCgpLHM9ci5pc0hvcml6b250YWwoKT9yLmhlaWdodCgpLXIuX3RpY2tTcGFjZVJlcXVpcmVkKCk6dCxsPXt4QWxpZ246bltyLm9yaWVudGF0aW9uKCldLHlBbGlnbjppW3Iub3JpZW50YXRpb24oKV0sdGV4dFJvdGF0aW9uOnIudGlja0xhYmVsQW5nbGUoKSx0ZXh0U2hlYXI6ci50aWNrTGFiZWxTaGVhckFuZ2xlKCl9O2lmKG51bGwhPXIuX3RpY2tMYWJlbE1heFdpZHRoKXtpZigibGVmdCI9PT1yLm9yaWVudGF0aW9uKCkmJmE+ci5fdGlja0xhYmVsTWF4V2lkdGgpe3ZhciBjPWEtci5fdGlja0xhYmVsTWF4V2lkdGgsdT1vLmF0dHIoInRyYW5zZm9ybSIpKyIgdHJhbnNsYXRlKCIrYysiLCAwKSI7by5hdHRyKCJ0cmFuc2Zvcm0iLHUpfWE9TWF0aC5taW4oYSxyLl90aWNrTGFiZWxNYXhXaWR0aCl9ci5fd3JpdGVyLndyaXRlKHIuZm9ybWF0dGVyKCkoZSksYSxzLGwsby5ub2RlKCkpfSkpfSxlLnByb3RvdHlwZS5fbWVhc3VyZVRpY2tMYWJlbHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9dGhpcy5fc2NhbGUuY2xvbmVXaXRob3V0UHJvdmlkZXJzKCkucmFuZ2UoWzAsdGhpcy5pc0hvcml6b250YWwoKT90OmVdKSxyPXRoaXMuZ2V0RG93bnNhbXBsZUluZm8oaSksbz1yLmRvbWFpbixhPXIuc3RlcFdpZHRoLHM9dC10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpO3RoaXMuaXNIb3Jpem9udGFsKCkmJihzPWEsMCE9PXRoaXMuX3RpY2tMYWJlbEFuZ2xlJiYocz1lLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkpLHM9TWF0aC5tYXgocywwKSk7dmFyIGw9YTt0aGlzLmlzSG9yaXpvbnRhbCgpJiYobD1lLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCksMCE9PXRoaXMuX3RpY2tMYWJlbEFuZ2xlJiYobD10LXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkpLGw9TWF0aC5tYXgobCwwKSksbnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4V2lkdGgmJihzPU1hdGgubWluKHMsdGhpcy5fdGlja0xhYmVsTWF4V2lkdGgpKTt2YXIgYyx1PW8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fd3JhcHBlci53cmFwKG4uZm9ybWF0dGVyKCkodCksbi5fbWVhc3VyZXIscyxsKX0pKSxoPXRoaXMuaXNIb3Jpem9udGFsKCkmJjA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT96eXQuc3VtOkh5dC5NYXRoLm1heCxkPXRoaXMuaXNIb3Jpem9udGFsKCkmJjA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT9IeXQuTWF0aC5tYXg6enl0LnN1bSxwPWgodSwoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVyLm1lYXN1cmUodC53cmFwcGVkVGV4dCkud2lkdGh9KSwwKSxmPWQodSwoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVyLm1lYXN1cmUodC53cmFwcGVkVGV4dCkuaGVpZ2h0fSksMCk7cmV0dXJuIDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKHA9KGM9W2YscF0pWzBdLGY9Y1sxXSkse3VzZWRXaWR0aDpwLHVzZWRIZWlnaHQ6Zn19LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuX3NjYWxlLGk9dGhpcy5nZXREb3duc2FtcGxlSW5mbyhuKSxyPWkuZG9tYWluLG89aS5zdGVwV2lkdGgsYT1vO3RoaXMuaXNIb3Jpem9udGFsKCkmJm51bGwhPXRoaXMuX3RpY2tMYWJlbE1heFdpZHRoJiYoYT1NYXRoLm1pbihhLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIHM9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrRnl0LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShyKSxsPXMuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKEZ5dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApLm1lcmdlKHMpO3MuZXhpdCgpLnJlbW92ZSgpLGwuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxpKXt2YXIgcj1uLnNjYWxlKHQpLWEvMjtyZXR1cm4idHJhbnNsYXRlKCIrKGUuaXNIb3Jpem9udGFsKCk/cjowKSsiLCIrKGUuaXNIb3Jpem9udGFsKCk/MDpyKSsiKSJ9KSksbC50ZXh0KCIiKSx0aGlzLl9kcmF3VGlja3MobyxsKTt2YXIgYz0icmlnaHQiPT09dGhpcy5vcmllbnRhdGlvbigpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MCx1PSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MDtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2MrIiwiK3UrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5fc2hvd0FsbFRpY2tMYWJlbHMoKSx0aGlzLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsKCksdGhpc30sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLmlzSG9yaXpvbnRhbCgpfHx0aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLmhlaWdodCgpXSksdGhpc30sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZS5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFg9MTUsZX0pKEZ5dC5BeGlzKTtObXQuQ2F0ZWdvcnk9Vnl0O3ZhciBVeXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFV5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGp5dD11TyxHeXQ9RWR0LFd5dD1JbXQscXl0PWd5dCxZeXQ9Rmd0LFh5dD1teXQsJHl0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIGk9dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gaS5fdGlja0xhYmVsUG9zaXRpb25pbmc9ImNlbnRlciIsaS5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249ITEsaS5mb3JtYXR0ZXIocXl0LmdlbmVyYWwoKSksaX1yZXR1cm4ganl0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBlPW5ldyBXeXQuU3ZnQ29udGV4dCh0aGlzLl90aWNrTGFiZWxDb250YWluZXIubm9kZSgpLFh5dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO3RoaXMuX21lYXN1cmVyPW5ldyBXeXQuQ2FjaGVNZWFzdXJlcihlKSx0aGlzLl93cmFwcGVyPShuZXcgV3l0LldyYXBwZXIpLm1heExpbmVzKDEpfSxlLnByb3RvdHlwZS5fY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb24/dGhpcy5fY29tcHV0ZUFwcHJveGltYXRlVGV4dFdpZHRoKCk6dGhpcy5fY29tcHV0ZUV4YWN0VGV4dFdpZHRoKCk7cmV0dXJuImNlbnRlciI9PT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZz90aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0Ok1hdGgubWF4KHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpLHRoaXMudGlja0xhYmVsUGFkZGluZygpK3QpfSxlLnByb3RvdHlwZS5fY29tcHV0ZUV4YWN0VGV4dFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dldFRpY2tWYWx1ZXMoKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZm9ybWF0dGVyKCkoZSk7cmV0dXJuIHQuX21lYXN1cmVyLm1lYXN1cmUobikud2lkdGh9KSk7cmV0dXJuIFl5dC5NYXRoLm1heChlLDApfSxlLnByb3RvdHlwZS5fY29tcHV0ZUFwcHJveGltYXRlVGV4dFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dldFRpY2tWYWx1ZXMoKSxuPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoIk0iKS53aWR0aCxpPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5mb3JtYXR0ZXIoKShlKS5sZW5ndGgqbn0pKTtyZXR1cm4gWXl0Lk1hdGgubWF4KGksMCl9LGUucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodDtyZXR1cm4iY2VudGVyIj09PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nP3RoaXMuX21heExhYmVsVGlja0xlbmd0aCgpK3RoaXMudGlja0xhYmVsUGFkZGluZygpK3Q6TWF0aC5tYXgodGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCksdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdCl9LGUucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2NhbGUsZT10LmRvbWFpbigpLG49ZVswXTw9ZVsxXT9lWzBdOmVbMV0saT1lWzBdPj1lWzFdP2VbMF06ZVsxXTtyZXR1cm4gdC50aWNrcygpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQ+PW4mJnQ8PWl9KSl9LGUucHJvdG90eXBlLl9yZXNjYWxlPWZ1bmN0aW9uKCl7aWYodGhpcy5faXNTZXR1cCl7aWYoIXRoaXMuaXNIb3Jpem9udGFsKCkpe3ZhciB0PXRoaXMuX2NvbXB1dGVXaWR0aCgpO2lmKHQ+dGhpcy53aWR0aCgpfHx0PHRoaXMud2lkdGgoKS10aGlzLm1hcmdpbigpKXJldHVybiB2b2lkIHRoaXMucmVkcmF3KCl9dGhpcy5yZW5kZXIoKX19LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3ZhciBuPXt4OjAseTowLGR4OiIwZW0iLGR5OiIwLjNlbSJ9LGk9dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkscj10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSxvPSJtaWRkbGUiLGE9MCxzPTAsbD0wLGM9MDtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXN3aXRjaCh0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyl7Y2FzZSJsZWZ0IjpvPSJlbmQiLGE9LXIsYz1yO2JyZWFrO2Nhc2UiY2VudGVyIjpjPWkrcjticmVhaztjYXNlInJpZ2h0IjpvPSJzdGFydCIsYT1yLGM9cn1lbHNlIHN3aXRjaCh0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyl7Y2FzZSJ0b3AiOm4uZHk9Ii0wLjNlbSIsbD1yLHM9LXI7YnJlYWs7Y2FzZSJjZW50ZXIiOmw9aStyO2JyZWFrO2Nhc2UiYm90dG9tIjpuLmR5PSIxZW0iLGw9cixzPXJ9dmFyIHU9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7c3dpdGNoKHRoaXMub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOm4ueD11LngxLG4uZHk9IjAuOTVlbSIscz11LnkxK2M7YnJlYWs7Y2FzZSJ0b3AiOm4ueD11LngxLG4uZHk9Ii0uMjVlbSIscz11LnkxLWM7YnJlYWs7Y2FzZSJsZWZ0IjpvPSJlbmQiLGE9dS54MS1sLG4ueT11LnkxO2JyZWFrO2Nhc2UicmlnaHQiOm89InN0YXJ0IixhPXUueDErbCxuLnk9dS55MX12YXIgaD10aGlzLl9nZXRUaWNrVmFsdWVzKCksZD10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitYeXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKGgpO3JldHVybiBkLmV4aXQoKS5yZW1vdmUoKSxkLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChYeXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKS5tZXJnZShkKS5zdHlsZSgidGV4dC1hbmNob3IiLG8pLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpLmF0dHJzKG4pLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmZvcm1hdHRlcigpKHQpfSkpLHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithKyIsICIrcysiKSIpLHRoaXMuX3Nob3dBbGxUaWNrTWFya3MoKSx0aGlzLnNob3dFbmRUaWNrTGFiZWxzKCl8fHRoaXMuX2hpZGVFbmRUaWNrTGFiZWxzKCksdGhpcy5faGlkZU92ZXJmbG93aW5nVGlja0xhYmVscygpLHRoaXMuX2hpZGVPdmVybGFwcGluZ1RpY2tMYWJlbHMoKSwiY2VudGVyIiE9PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nJiZ0aGlzLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsKCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsUG9zaXRpb249ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc7dmFyIGU9dC50b0xvd2VyQ2FzZSgpO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpe2lmKCJsZWZ0IiE9PWUmJiJjZW50ZXIiIT09ZSYmInJpZ2h0IiE9PWUpdGhyb3cgbmV3IEVycm9yKGUrIiBpcyBub3QgYSB2YWxpZCB0aWNrIGxhYmVsIHBvc2l0aW9uIGZvciBhIGhvcml6b250YWwgTnVtZXJpY0F4aXMiKX1lbHNlIGlmKCJ0b3AiIT09ZSYmImNlbnRlciIhPT1lJiYiYm90dG9tIiE9PWUpdGhyb3cgbmV3IEVycm9yKGUrIiBpcyBub3QgYSB2YWxpZCB0aWNrIGxhYmVsIHBvc2l0aW9uIGZvciBhIHZlcnRpY2FsIE51bWVyaWNBeGlzIik7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbjoodGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249dCx0aGlzKX0sZS5wcm90b3R5cGUuX2hpZGVFbmRUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrWHl0LkF4aXMuVElDS19MQUJFTF9DTEFTUyk7aWYoMCE9PWUuc2l6ZSgpKXt2YXIgbj1lLm5vZGVzKClbMF07WXl0LkRPTS5jbGllbnRSZWN0SW5zaWRlKG4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdCl8fEd5dC5zZWxlY3Qobikuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTt2YXIgaT1lLm5vZGVzKClbZS5zaXplKCktMV07WXl0LkRPTS5jbGllbnRSZWN0SW5zaWRlKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdCl8fEd5dC5zZWxlY3QoaSkuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX19LGUucHJvdG90eXBlLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK1h5dC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgbj1HeXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuImluaGVyaXQiPT09bnx8InZpc2libGUiPT09bn0pKSxlPXQubm9kZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSkpLG49MTshdGhpcy5faGFzT3ZlcmxhcFdpdGhJbnRlcnZhbChuLGUpJiZuPGUubGVuZ3RoOyluKz0xO3QuZWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgaT1HeXQuc2VsZWN0KHRoaXMpO2UlbiE9MCYmaS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSkpfSxlLnByb3RvdHlwZS5faGFzT3ZlcmxhcFdpdGhJbnRlcnZhbD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0iY2VudGVyIj09PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nP3RoaXMudGlja0xhYmVsUGFkZGluZygpOjMqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCksaT1lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFl5dC5ET00uZXhwYW5kUmVjdCh0LG4pfSkpLHI9MDtyPGkubGVuZ3RoLXQ7cis9dClpZihZeXQuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChpW3JdLGlbcit0XSkpcmV0dXJuITE7cmV0dXJuITB9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGV9KShYeXQuQXhpcyk7VXl0Lk51bWVyaWM9JHl0O3ZhciBLeXQ9e30sWnl0PXt9LEp5dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KEp5dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFF5dD1GZ3Q7Snl0LmludGVydmFsVGlja0dlbmVyYXRvcj1mdW5jdGlvbiB0dnQodCl7aWYodDw9MCl0aHJvdyBuZXcgRXJyb3IoImludGVydmFsIG11c3QgYmUgcG9zaXRpdmUgbnVtYmVyIik7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUuZG9tYWluKCksaT1NYXRoLm1pbihuWzBdLG5bMV0pLHI9TWF0aC5tYXgoblswXSxuWzFdKSxvPU1hdGguY2VpbChpL3QpKnQsYT1NYXRoLmZsb29yKChyLW8pL3QpKzEscz1pJXQ9PTA/W106W2ldLGw9UXl0Lk1hdGgucmFuZ2UoMCxhKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvK2UqdH0pKSxjPXIldD09MD9bXTpbcl07cmV0dXJuIHMuY29uY2F0KGwpLmNvbmNhdChjKX19LEp5dC5pbnRlZ2VyVGlja0dlbmVyYXRvcj1mdW5jdGlvbiBldnQoKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5kZWZhdWx0VGlja3MoKTtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQlMT09MHx8MD09PW58fG49PT1lLmxlbmd0aC0xfSkpfX07dmFyIG52dD17fSxpdnQ9e307ZnVuY3Rpb24gcnZ0KHQsZSxuKXtyZXR1cm4gbi0obi10KSplfWZ1bmN0aW9uIG92dCh0LGUsbil7cmV0dXJuKHQqZS1uKS8oZS0xKX1mdW5jdGlvbiBhdnQodCxlLG4saSl7dmFyIHI9ZT4xLG89cj9pOm47aWYobnVsbD09bylyZXR1cm4gZTt2YXIgYT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCkscz1NYXRoLmFicyhhWzFdLWFbMF0pO3JldHVybihyP01hdGgubWluOk1hdGgubWF4KShlLG8vcyl9ZnVuY3Rpb24gc3Z0KHQsZSxuLGkscil7aWYoZTw9MSlyZXR1cm57Y2VudGVyUG9pbnQ6bix6b29tQW1vdW50OmV9O2lmKG51bGw9PWkmJm51bGw9PXIpcmV0dXJue2NlbnRlclBvaW50Om4sem9vbUFtb3VudDplfTt2YXIgbz1sdnQodCksYT0oZnVuY3Rpb24gcyh0KXt2YXIgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7cmV0dXJuIGVbMV08ZVswXX0pKHQpO2k9bnVsbD09aT9hPzEvMDotMS8wOmkscj1udWxsPT1yP2E/LTEvMDoxLzA6cjt2YXIgbD10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksYz1sWzBdLHU9bFsxXSxoPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihyKSxkPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbih1KSxwPXJ2dChkLGUsbiksZj10LnNjYWxlVHJhbnNmb3JtYXRpb24oaSksbT10LnNjYWxlVHJhbnNmb3JtYXRpb24oYyksZz1ydnQobSxlLG4pLF89TWF0aC5hYnMoaC1mKTtpZihNYXRoLmFicyhwLWcpPl8pe3ZhciB5PShoLWYpLyhkLW0pO3JldHVybiAxIT09eT97Y2VudGVyUG9pbnQ6b3Z0KGQseSxoKSx6b29tQW1vdW50Onl9OntjZW50ZXJQb2ludDpuLHpvb21BbW91bnQ6eX19cmV0dXJuIHA+aCE9bz97Y2VudGVyUG9pbnQ6b3Z0KGQsZSxoKSx6b29tQW1vdW50OmV9Omc8ZiE9bz97Y2VudGVyUG9pbnQ6b3Z0KG0sZSxmKSx6b29tQW1vdW50OmV9OntjZW50ZXJQb2ludDpuLHpvb21BbW91bnQ6ZX19ZnVuY3Rpb24gbHZ0KHQpe3ZhciBlPXQucmFuZ2UoKTtyZXR1cm4gZVsxXTxlWzBdfQovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoaXZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxpdnQuem9vbU91dD1ydnQsaXZ0LmNvbnN0cmFpbmVkWm9vbT1mdW5jdGlvbiBjdnQodCxlLG4saSxyLG8sYSl7cmV0dXJuIHN2dCh0LGU9YXZ0KHQsZSxpLHIpLG4sbyxhKX0saXZ0LmNvbnN0cmFpblpvb21FeHRlbnRzPWF2dCxpdnQuY29uc3RyYWluWm9vbVZhbHVlcz1zdnQsaXZ0LmNvbnN0cmFpbmVkVHJhbnNsYXRpb249ZnVuY3Rpb24gdXZ0KHQsZSxuLGkpe3ZhciByLG89dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLGE9b1swXSxzPW9bMV0sbD1sdnQodCk7aWYoZT4wIT09bCl7aWYobnVsbCE9KHI9aSkpe3ZhciBjPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihzKSx1PXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihyKTtlPShsP01hdGgubWF4Ok1hdGgubWluKShjK2UsdSktY319ZWxzZSBpZihudWxsIT0ocj1uKSl7dmFyIGg9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKGEpLGQ9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpO2U9KGw/TWF0aC5taW46TWF0aC5tYXgpKGgrZSxkKS1ofXJldHVybiBlfTt2YXIgaHZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShodnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBkdnQ9Rmd0LHB2dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSx0aGlzLl91cGRhdGVJZD0wLHRoaXMuX2NhbGxiYWNrcz1uZXcgZHZ0LkNhbGxiYWNrU2V0LHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzPW5ldyBkdnQuU2V0fXJldHVybiB0LnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm5bXX0sdC5wcm90b3R5cGUuX2dldEFsbEluY2x1ZGVkVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBuPVtdO3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5mb3JFYWNoKChmdW5jdGlvbihpKXt2YXIgcj1pKGUsdCk7bj1uLmNvbmNhdChyKX0pKSxufSx0LnByb3RvdHlwZS5fZ2V0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5fZGlzcGF0Y2hVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVJZCsrLHRoaXMuX2NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMpfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dG9Eb21haW5BdXRvbWF0aWNhbGx5PSEwLHRoaXMuX3NldERvbWFpbih0aGlzLl9nZXRFeHRlbnQoKSksdGhpc30sdC5wcm90b3R5cGUuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZT1mdW5jdGlvbigpe3RoaXMuX2F1dG9Eb21haW5BdXRvbWF0aWNhbGx5JiZ0aGlzLmF1dG9Eb21haW4oKX0sdC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzY2FsZSIpfSx0LnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSx0LnByb3RvdHlwZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0RG9tYWluKCk6KHRoaXMuX2F1dG9Eb21haW5BdXRvbWF0aWNhbGx5PSExLHRoaXMuX3NldERvbWFpbih0KSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldERvbWFpbiIpfSx0LnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3N8fCh0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSEwLHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbih0KSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITEpfSx0LnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2JhY2tpbmdEb21haW4iKX0sdC5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0UmFuZ2UoKToodGhpcy5fc2V0UmFuZ2UodCksdGhpcyl9LHQucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldFJhbmdlIil9LHQucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9zZXRSYW5nZSIpfSx0LnByb3RvdHlwZS5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5hZGQodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlSW5jbHVkZWRWYWx1ZXNQcm92aWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnMuZGVsZXRlKHQpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LHQucHJvdG90eXBlLnVwZGF0ZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZUlkfSx0fSkoKTtodnQuU2NhbGU9cHZ0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobnZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZnZ0PXVPLG12dD1FZHQsZ3Z0PWl2dCxfdnQ9Rmd0LHl2dD1bMCwxXSx2dnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX3JhbmdlPVswLDFdLG4uX2QzU2NhbGU9bXZ0LnNjYWxlQmFuZCgpLG4uX2QzU2NhbGUucmFuZ2UoeXZ0KSxuLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGU9bXZ0LnNjYWxlTGluZWFyKCksbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih5dnQpLG4uX2lubmVyUGFkZGluZz1lLl9jb252ZXJ0VG9QbG90dGFibGVJbm5lclBhZGRpbmcoLjMpLG4uX291dGVyUGFkZGluZz1lLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmcoLjUsLjMpLG59cmV0dXJuIGZ2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jbG9uZVdpdGhvdXRQcm92aWRlcnM9ZnVuY3Rpb24oKXt2YXIgdD0obmV3IGUpLmRvbWFpbih0aGlzLmRvbWFpbigpKS5yYW5nZSh0aGlzLnJhbmdlKCkpLmlubmVyUGFkZGluZyh0aGlzLmlubmVyUGFkZGluZygpKS5vdXRlclBhZGRpbmcodGhpcy5vdXRlclBhZGRpbmcoKSk7cmV0dXJuIHQuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpKSx0fSxlLnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gX3Z0LkFycmF5LnVuaXEodCl9LGUucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gX3Z0LkFycmF5LnVuaXEodGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKSl9LGUucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuaW52ZXJ0UmFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD10aGlzLnJhbmdlKCkpO3ZhciBuPXRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCksaT10aGlzLmludmVydGVkVHJhbnNmb3JtYXRpb24odFswXSkscj10aGlzLmludmVydGVkVHJhbnNmb3JtYXRpb24odFsxXSksbz10aGlzLl9kM1NjYWxlLmRvbWFpbigpLGE9by5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kM1NjYWxlKHQpK24vMn0pKSxzPW12dC5iaXNlY3QoYSxpKSxsPW12dC5iaXNlY3QoYSxyKTtyZXR1cm4gby5zbGljZShzLGwpfSxlLnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmFuZ2UuY2FsbCh0aGlzLGUpfSxlLl9jb252ZXJ0VG9QbG90dGFibGVJbm5lclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIDEvKDEtdCktMX0sZS5fY29udmVydFRvUGxvdHRhYmxlT3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQvKDEtZSl9LGUucHJvdG90eXBlLl9zZXRCYW5kcz1mdW5jdGlvbigpe3ZhciB0PTEtMS8oMSt0aGlzLmlubmVyUGFkZGluZygpKSxlPXRoaXMub3V0ZXJQYWRkaW5nKCkvKDErdGhpcy5pbm5lclBhZGRpbmcoKSk7dGhpcy5fZDNTY2FsZS5wYWRkaW5nSW5uZXIodCksdGhpcy5fZDNTY2FsZS5wYWRkaW5nT3V0ZXIoZSl9LGUucHJvdG90eXBlLnJhbmdlQmFuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNjYWxlQmFuZCh0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpKX0sZS5wcm90b3R5cGUuc3RlcFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkqKDErdGhpcy5pbm5lclBhZGRpbmcoKSkpfSxlLnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSxlLnByb3RvdHlwZS5pbm5lclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5faW5uZXJQYWRkaW5nOih0aGlzLl9pbm5lclBhZGRpbmc9dCx0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX291dGVyUGFkZGluZzoodGhpcy5fb3V0ZXJQYWRkaW5nPXQsdGhpcy5yYW5nZSh0aGlzLnJhbmdlKCkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2QzU2NhbGUodCkrdGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKS8yO3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUoZSl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKChmdW5jdGlvbihpKXtyZXR1cm4gbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmludmVydChndnQuem9vbU91dChpLHQsZSkpfSkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5wYW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5yYW5nZSgpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGUuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQobit0KX0pKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiB5dnR9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0KSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMuX3NldEJhbmRzKCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYW5nZX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX3JhbmdlPXQsdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKHQpLHRoaXMuX3NldEJhbmRzKCl9LGUucHJvdG90eXBlLl9yZXNjYWxlQmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKHQpLXRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZSgwKSl9LGV9KShodnQuU2NhbGUpO252dC5DYXRlZ29yeT12dnQ7dmFyIGJ2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoYnZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeHZ0PXVPLHd2dD1FZHQsU3Z0PUZndCxNdnQ9aHZ0LEV2dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5jb3VudD0wLHRoaXMudHJhY2tlcj17fX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0SW5kZXg9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy50cmFja2VyW3RdKXJldHVybiB0aGlzLnRyYWNrZXJbdF07dmFyIGU9dGhpcy5jb3VudDtyZXR1cm4gdGhpcy50cmFja2VyW3RdPWUsdGhpcy5jb3VudCs9MSxlfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuY291bnQ9MCx0aGlzLnRyYWNrZXI9e319LHR9KSgpLFR2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaSxyPXQuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2goci5fcmFuZ2VMZW5ndGg9MSxyLl90cmFja2VyPW5ldyBFdnQsbil7Y2FzZSBudWxsOmNhc2Ugdm9pZCAwOm51bGw9PWUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGUmJihlLl9wbG90dGFibGVDb2xvckNhY2hlPWUuX2dldFBsb3R0YWJsZUNvbG9ycygpKSxpPXd2dC5zY2FsZU9yZGluYWwoKS5yYW5nZShlLl9wbG90dGFibGVDb2xvckNhY2hlKTticmVhaztjYXNlIkNhdGVnb3J5MTAiOmNhc2UiY2F0ZWdvcnkxMCI6Y2FzZSIxMCI6aT13dnQuc2NhbGVPcmRpbmFsKHd2dC5zY2hlbWVDYXRlZ29yeTEwKTticmVhaztjYXNlIkNhdGVnb3J5MjAiOmNhc2UiY2F0ZWdvcnkyMCI6Y2FzZSIyMCI6aT13dnQuc2NhbGVPcmRpbmFsKHd2dC5zY2hlbWVDYXRlZ29yeTIwKTticmVhaztjYXNlIkNhdGVnb3J5MjBiIjpjYXNlImNhdGVnb3J5MjBiIjpjYXNlIjIwYiI6aT13dnQuc2NhbGVPcmRpbmFsKHd2dC5zY2hlbWVDYXRlZ29yeTIwYik7YnJlYWs7Y2FzZSJDYXRlZ29yeTIwYyI6Y2FzZSJjYXRlZ29yeTIwYyI6Y2FzZSIyMGMiOmk9d3Z0LnNjYWxlT3JkaW5hbCh3dnQuc2NoZW1lQ2F0ZWdvcnkyMGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb2xvclNjYWxlIHR5cGUiKX1yZXR1cm4gci5fZDNTY2FsZT1pLHIuX3JhbmdlTGVuZ3RoPXIuX2QzU2NhbGUucmFuZ2UoKS5sZW5ndGgscn1yZXR1cm4geHZ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBTdnQuQXJyYXkudW5pcSh0KX0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiBTdnQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sZS5pbnZhbGlkYXRlQ29sb3JDYWNoZT1mdW5jdGlvbigpe2UuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9bnVsbH0sZS5fZ2V0UGxvdHRhYmxlQ29sb3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9d3Z0LnNlbGVjdCgiYm9keSIpLmFwcGVuZCgicGxvdHRhYmxlLWNvbG9yLXRlc3RlciIpLG49U3Z0LkNvbG9yLmNvbG9yVGVzdChlLCIiKSxpPTAscj1TdnQuQ29sb3IuY29sb3JUZXN0KGUsInBsb3R0YWJsZS1jb2xvcnMtMCIpO251bGwhPXImJmk8dGhpcy5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1MmJihyIT09bnx8ciE9PXRbdC5sZW5ndGgtMV0pOyl0LnB1c2gociksaSsrLHI9U3Z0LkNvbG9yLmNvbG9yVGVzdChlLCJwbG90dGFibGUtY29sb3JzLSIraSk7cmV0dXJuIGUucmVtb3ZlKCksdH0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fZDNTY2FsZSh0KSxpPXRoaXMuX3RyYWNrZXIuZ2V0SW5kZXgodCkscj1NYXRoLmZsb29yKGkvdGhpcy5fcmFuZ2VMZW5ndGgpO2lmKDA9PT1yKXJldHVybiBuO3ZhciBvPU1hdGgubG9nKHIqZS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUisxKTtyZXR1cm4gU3Z0LkNvbG9yLmxpZ2h0ZW5Db2xvcihuLG8pfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMuX3RyYWNrZXIuY2xlYXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCksdGhpcy5fcmFuZ2VMZW5ndGg9dC5sZW5ndGh9LGUuX0xPT1BfTElHSFRFTl9GQUNUT1I9MS42LGUuX01BWElNVU1fQ09MT1JTX0ZST01fQ1NTPTI1NixlfSkoTXZ0LlNjYWxlKTtidnQuQ29sb3I9VHZ0O3ZhciBDdnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEN2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEF2dD11TyxrdnQ9RWR0LEx2dD1GZ3QsUHZ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZvaWQgMD09PW4mJihuPSJsaW5lYXIiKTt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7c3dpdGNoKG4pe2Nhc2UibGluZWFyIjppLl9jb2xvclNjYWxlPWt2dC5zY2FsZUxpbmVhcigpO2JyZWFrO2Nhc2UibG9nIjppLl9jb2xvclNjYWxlPWt2dC5zY2FsZUxvZygpO2JyZWFrO2Nhc2Uic3FydCI6aS5fY29sb3JTY2FsZT1rdnQuc2NhbGVTcXJ0KCk7YnJlYWs7Y2FzZSJwb3ciOmkuX2NvbG9yU2NhbGU9a3Z0LnNjYWxlUG93KCl9aWYobnVsbD09aS5fY29sb3JTY2FsZSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gUXVhbnRpdGF0aXZlU2NhbGUgc2NhbGUgdHlwZSAiK24pO3JldHVybiBpLnJhbmdlKGUuUkVEUyksaX1yZXR1cm4gQXZ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciBlPWt2dC5leHRlbnQodCk7cmV0dXJuIG51bGw9PWVbMF18fG51bGw9PWVbMV0/W106ZX0sZS5wcm90b3R5cGUuX2QzSW50ZXJwb2xhdGVkU2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5yYW5nZShbMCwxXSkuaW50ZXJwb2xhdGUodGhpcy5faW50ZXJwb2xhdGVDb2xvcnMoKSl9LGUucHJvdG90eXBlLl9pbnRlcnBvbGF0ZUNvbG9ycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbG9yUmFuZ2U7aWYodC5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIkNvbG9yIHNjYWxlIGFycmF5cyBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGVsZW1lbnRzLiIpO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj0oZT1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpKSoodC5sZW5ndGgtMSksaT1NYXRoLmZsb29yKG4pLHI9TWF0aC5jZWlsKG4pLG89bi1pO3JldHVybiBrdnQuaW50ZXJwb2xhdGVMYWIodFtpXSx0W3JdKShvKX19fSxlLnByb3RvdHlwZS5fcmVzZXRTY2FsZT1mdW5jdGlvbigpe3RoaXMuX2QzU2NhbGU9dGhpcy5fZDNJbnRlcnBvbGF0ZWRTY2FsZSgpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LGUucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpO3JldHVybiB0Lmxlbmd0aD4wJiZ0aGlzLl9zZXREb21haW4oW0x2dC5NYXRoLm1pbih0LDApLEx2dC5NYXRoLm1heCh0LDApXSksdGhpc30sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclJhbmdlfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fY29sb3JSYW5nZT10LHRoaXMuX3Jlc2V0U2NhbGUoKX0sZS5SRURTPVsiI0ZGRkZGRiIsIiNGRkY2RTEiLCIjRkVGNEMwIiwiI0ZFRDk3NiIsIiNGRUIyNEMiLCIjRkQ4RDNDIiwiI0ZDNEUyQSIsIiNFMzFBMUMiLCIjQjEwMDI2Il0sZS5CTFVFUz1bIiNGRkZGRkYiLCIjQ0NGRkZGIiwiI0E1RkZGRCIsIiM4NUY3RkIiLCIjNkVEM0VGIiwiIzU1QTdFMCIsIiM0MTdGRDAiLCIjMjU0NUQzIiwiIzBCMDJFMSJdLGUuUE9TTkVHPVsiIzBCMDJFMSIsIiMyNTQ1RDMiLCIjNDE3RkQwIiwiIzU1QTdFMCIsIiM2RUQzRUYiLCIjODVGN0ZCIiwiI0E1RkZGRCIsIiNDQ0ZGRkYiLCIjRkZGRkZGIiwiI0ZGRjZFMSIsIiNGRUY0QzAiLCIjRkVEOTc2IiwiI0ZFQjI0QyIsIiNGRDhEM0MiLCIjRkM0RTJBIiwiI0UzMUExQyIsIiNCMTAwMjYiXSxlfSkoaHZ0LlNjYWxlKTtDdnQuSW50ZXJwb2xhdGVkQ29sb3I9UHZ0O3ZhciBOdnQ9e30sSXZ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoSXZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUnZ0PXVPLE92dD1FZHQsenZ0PWl2dCxEdnQ9Rmd0LEJ2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fdGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZWZhdWx0VGlja3MoKX0sZS5fcGFkUHJvcG9ydGlvbj0uMDUsZS5fc25hcHBpbmdEb21haW5FbmFibGVkPSEwLGUuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzPW5ldyBEdnQuU2V0LGV9cmV0dXJuIFJ2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvbWFpbk1pbj1udWxsLHRoaXMuX2RvbWFpbk1heD1udWxsLHQucHJvdG90eXBlLmF1dG9Eb21haW4uY2FsbCh0aGlzKSx0aGlzfSxlLnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5fZG9tYWluTWlufHxudWxsPT10aGlzLl9kb21haW5NYXgpe3ZhciBlPXRoaXMuX2dldEV4dGVudCgpO2lmKG51bGwhPXRoaXMuX2RvbWFpbk1pbil7dmFyIG49ZVsxXTtyZXR1cm4gdGhpcy5fZG9tYWluTWluPj1uJiYobj10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWluLHRoaXMuX2RvbWFpbk1pbl0pWzFdKSx2b2lkIHRoaXMuX3NldERvbWFpbihbdGhpcy5fZG9tYWluTWluLG5dKX1pZihudWxsIT10aGlzLl9kb21haW5NYXgpe3ZhciBpPWVbMF07cmV0dXJuIHRoaXMuX2RvbWFpbk1heDw9aSYmKGk9dGhpcy5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW4oW3RoaXMuX2RvbWFpbk1heCx0aGlzLl9kb21haW5NYXhdKVswXSksdm9pZCB0aGlzLl9zZXREb21haW4oW2ksdGhpcy5fZG9tYWluTWF4XSl9dC5wcm90b3R5cGUuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZS5jYWxsKHRoaXMpfWVsc2UgdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sdGhpcy5fZG9tYWluTWF4XSl9LGUucHJvdG90eXBlLl9nZXRVbmJvdW5kZWRFeHRlbnQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBlPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHQpLG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9W0R2dC5NYXRoLm1pbihlLG5bMF0pLER2dC5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX3BhZERvbWFpbihpKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFVuYm91bmRlZEV4dGVudCgpO3JldHVybiBudWxsIT10aGlzLl9kb21haW5NaW4mJih0WzBdPXRoaXMuX2RvbWFpbk1pbiksbnVsbCE9dGhpcy5fZG9tYWluTWF4JiYodFsxXT10aGlzLl9kb21haW5NYXgpLHR9LGUucHJvdG90eXBlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sZS5wcm90b3R5cGUucGFkUHJvcG9ydGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoInBhZFByb3BvcnRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fcGFkUHJvcG9ydGlvbj10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLl9wYWREb21haW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0WzBdLnZhbHVlT2YoKT09PXRbMV0udmFsdWVPZigpKXJldHVybiB0aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbih0KTtpZigwPT09dGhpcy5fcGFkUHJvcG9ydGlvbilyZXR1cm4gdDt2YXIgbj10aGlzLl9wYWRQcm9wb3J0aW9uLzIsaT10WzBdLHI9dFsxXSxvPSExLGE9ITE7dGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dChlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnZhbHVlT2YoKT09PWkudmFsdWVPZigpJiYobz0hMCksdC52YWx1ZU9mKCk9PT1yLnZhbHVlT2YoKSYmKGE9ITApfSkpfSkpO3ZhciBzPXRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpO3RoaXMuX2JhY2tpbmdTY2FsZURvbWFpbih0KTt2YXIgbD1vP2k6dGhpcy5pbnZlcnQodGhpcy5zY2FsZShpKS0odGhpcy5zY2FsZShyKS10aGlzLnNjYWxlKGkpKSpuKSxjPWE/cjp0aGlzLmludmVydCh0aGlzLnNjYWxlKHIpKyh0aGlzLnNjYWxlKHIpLXRoaXMuc2NhbGUoaSkpKm4pO3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4ocyksdGhpcy5fc25hcHBpbmdEb21haW5FbmFibGVkP3RoaXMuX25pY2VEb21haW4oW2wsY10pOltsLGNdfSxlLnByb3RvdHlwZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc25hcHBpbmdEb21haW5FbmFibGVkOih0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9dCx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnQiKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYodGhpcy5fZG9tYWluTWluPWVbMF0sdGhpcy5fZG9tYWluTWF4PWVbMV0pLHQucHJvdG90eXBlLmRvbWFpbi5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLmRvbWFpbk1pbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmRvbWFpbigpWzBdOih0aGlzLl9kb21haW5NaW49dCx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuZG9tYWluTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tYWluKClbMV06KHRoaXMuX2RvbWFpbk1heD10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXt2YXIgZT1PdnQuZXh0ZW50KHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gRHZ0Lk1hdGguaXNWYWxpZE51bWJlcigrdCl9KSkpO3JldHVybiBudWxsPT1lWzBdfHxudWxsPT1lWzFdP1tdOmV9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuZG9tYWluKHRoaXMucmFuZ2UoKS5tYXAoKGZ1bmN0aW9uKGkpe3JldHVybiBuLmludmVydCh6dnQuem9vbU91dChpLHQsZSkpfSkpKX0sZS5wcm90b3R5cGUucGFuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGUuaW52ZXJ0KG4rdCl9KSkpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2NhbGVUcmFuc2Zvcm1hdGlvbiIpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbiIpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQiKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGdldFRyYW5zZm9ybWF0aW9uRG9tYWluIil9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gRHZ0Lk1hdGguaXNOYU4odCl8fHQ9PT0xLzB8fHQ9PT0tMS8wfTtuKGVbMF0pfHxuKGVbMV0pP0R2dC5XaW5kb3cud2FybigiV2FybmluZzogUXVhbnRpdGF0aXZlU2NhbGVzIGNhbm5vdCB0YWtlIE5hTiBvciBJbmZpbml0eSBhcyBhIGRvbWFpbiB2YWx1ZS4gSWdub3JpbmcuIik6dC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldERlZmF1bHRUaWNrcyIpfSxlLnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90aWNrR2VuZXJhdG9yKHRoaXMpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX25pY2VEb21haW4iKX0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9kZWZhdWx0RXh0ZW50Iil9LGUucHJvdG90eXBlLnRpY2tHZW5lcmF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fdGlja0dlbmVyYXRvcjoodGhpcy5fdGlja0dlbmVyYXRvcj10LHRoaXMpfSxlLl9ERUZBVUxUX05VTV9USUNLUz0xMCxlfSkoaHZ0LlNjYWxlKTtJdnQuUXVhbnRpdGF0aXZlU2NhbGU9QnZ0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoTnZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSHZ0PXVPLEZ2dD1FZHQsVnZ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9kM1NjYWxlPUZ2dC5zY2FsZUxpbmVhcigpLGV9cmV0dXJuIEh2dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLDFdfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PT10WzFdP1t0WzBdLTEsdFsxXSsxXTp0fSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuZG9tYWluKHQpfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhpcy5fZDNTY2FsZS5yYW5nZSh0KX0sZS5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydCh0KX0sZS5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3MoZS5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4odCkubmljZShlKS5kb21haW4oKX0sZX0pKEl2dC5RdWFudGl0YXRpdmVTY2FsZSk7TnZ0LkxpbmVhcj1WdnQ7dmFyIFV2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoVXZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIganZ0PXVPLEd2dD1FZHQsV3Z0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2QzU2NhbGU9R3Z0LnNjYWxlTG9nKCkuYmFzZShlKSxuLl9zZXREb21haW4obi5fZGVmYXVsdEV4dGVudCgpKSxufXJldHVybiBqdnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMSx0aGlzLl9kM1NjYWxlLmJhc2UoKV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0vdGhpcy5fZDNTY2FsZS5iYXNlKCksdFsxXSp0aGlzLl9kM1NjYWxlLmJhc2UoKV06dH0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodCl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt0aGlzLmRvbWFpbih0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCl9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKGUuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKX0sZX0pKEl2dC5RdWFudGl0YXRpdmVTY2FsZSk7VXZ0LkxvZz1XdnQ7dmFyIHF2dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkocXZ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWXZ0PXVPLFh2dD1FZHQsJHZ0PUZndCxLdnQ9Wnl0LFp2dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0xMCk7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xvZ1RpY2tHZW5lcmF0b3I9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCxlLG4pe3JldHVyblt0LGUsbl0uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpWzFdfSxpPSR2dC5NYXRoLm1pbihuLl91bnRyYW5zZm9ybWVkRG9tYWluLDApLHI9JHZ0Lk1hdGgubWF4KG4uX3VudHJhbnNmb3JtZWREb21haW4sMCksbz1pLGE9ZShpLHIsLW4uX3Bpdm90KSxzPWUoaSxyLG4uX3Bpdm90KSxsPXIsYz1uLl9sb2dUaWNrcygtYSwtbykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKS5yZXZlcnNlKCksdT1uLl9sb2dUaWNrcyhzLGwpLGg9TWF0aC5tYXgoaSwtbi5fcGl2b3QpLGQ9TWF0aC5taW4ocixuLl9waXZvdCkscD1YdnQuc2NhbGVMaW5lYXIoKS5kb21haW4oW2gsZF0pLnRpY2tzKG4uX2hvd01hbnlUaWNrcyhoLGQpKSxmPWMuY29uY2F0KHApLmNvbmNhdCh1KTtyZXR1cm4gZi5sZW5ndGg8PTEmJihmPVh2dC5zY2FsZUxpbmVhcigpLmRvbWFpbihbaSxyXSkudGlja3MoS3Z0Lk1vZGlmaWVkTG9nLl9ERUZBVUxUX05VTV9USUNLUykpLGZ9LG4uX2QzU2NhbGU9WHZ0LnNjYWxlTGluZWFyKCksbi5fYmFzZT1lLG4uX3Bpdm90PW4uX2Jhc2Usbi5fc2V0RG9tYWluKG4uX2RlZmF1bHRFeHRlbnQoKSksbi50aWNrR2VuZXJhdG9yKG4uX2xvZ1RpY2tHZW5lcmF0b3IpLGU8PTEpdGhyb3cgbmV3IEVycm9yKCJNb2RpZmllZExvZ1NjYWxlOiBUaGUgYmFzZSBtdXN0IGJlID4gMSIpO3JldHVybiBufXJldHVybiBZdnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybih0Kj1lKTx0aGlzLl9waXZvdCYmKHQrPSh0aGlzLl9waXZvdC10KS90aGlzLl9waXZvdCksKHQ9TWF0aC5sb2codCkvTWF0aC5sb2codGhpcy5fYmFzZSkpKmV9LGUucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybiB0Kj1lLCh0PU1hdGgucG93KHRoaXMuX2Jhc2UsdCkpPHRoaXMuX3Bpdm90JiYodD10aGlzLl9waXZvdCoodC0xKS8odGhpcy5fcGl2b3QtMSkpLHQqZX0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodGhpcy5fYWRqdXN0ZWRMb2codCkpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludmVydGVkQWRqdXN0ZWRMb2codGhpcy5fZDNTY2FsZS5pbnZlcnQodCkpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihlKXt0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluPWU7dmFyIG49W3RoaXMuX2FkanVzdGVkTG9nKGVbMF0pLHRoaXMuX2FkanVzdGVkTG9nKGVbMV0pXTt0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxuKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2xvZ1RpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX2hvd01hbnlUaWNrcyh0LGUpO2lmKDA9PT1pKXJldHVybltdO3ZhciByPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2codGhpcy5fYmFzZSkpLG89TWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxhPVh2dC5yYW5nZShvLHIsLU1hdGguY2VpbCgoby1yKS9pKSkscz1YdnQucmFuZ2UodGhpcy5fYmFzZSwxLC0odGhpcy5fYmFzZS0xKSkubWFwKE1hdGguZmxvb3IpLGw9JHZ0LkFycmF5LnVuaXEocyksYz1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGwubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3cobi5fYmFzZSx0LTEpKmV9KSl9KSk7cmV0dXJuICR2dC5BcnJheS5mbGF0dGVuKGMpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIHQ8PW4mJm48PWV9KSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpfSxlLnByb3RvdHlwZS5faG93TWFueVRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYWRqdXN0ZWRMb2coJHZ0Lk1hdGgubWluKHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpLGk9dGhpcy5fYWRqdXN0ZWRMb2coJHZ0Lk1hdGgubWF4KHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpLHI9dGhpcy5fYWRqdXN0ZWRMb2codCksbz10aGlzLl9hZGp1c3RlZExvZyhlKTtyZXR1cm4gTWF0aC5jZWlsKChvLXIpLyhpLW4pKkt2dC5Nb2RpZmllZExvZy5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0fSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLHRoaXMuX2Jhc2VdfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7aWYodFswXT09PXRbMV0pe3ZhciBlPXRbMF07cmV0dXJuIGU+MD9bZS90aGlzLl9iYXNlLGUqdGhpcy5fYmFzZV06MD09PWU/Wy10aGlzLl9iYXNlLHRoaXMuX2Jhc2VdOltlKnRoaXMuX2Jhc2UsZS90aGlzLl9iYXNlXX1yZXR1cm4gdH0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKEt2dC5Nb2RpZmllZExvZy5fREVGQVVMVF9OVU1fVElDS1MpfSxlfSkoSXZ0LlF1YW50aXRhdGl2ZVNjYWxlKTtxdnQuTW9kaWZpZWRMb2c9WnZ0O3ZhciBKdnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEp2dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFF2dD11Tyx0YnQ9RWR0LGVidD1LeXQsbmJ0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9kM1NjYWxlPXRidC5zY2FsZVRpbWUoKSxlLmF1dG9Eb21haW4oKSxlfXJldHVybiBRdnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUudGlja0ludGVydmFsPWZ1bmN0aW9uKHQsbixpKXt2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIHI9dGJ0LnNjYWxlVGltZSgpLG89ZS50aW1lSW50ZXJ2YWxUb0QzVGltZSh0LGkpLmV2ZXJ5KG4pO3JldHVybiByLmRvbWFpbih0aGlzLmRvbWFpbigpKSxyLnJhbmdlKHRoaXMucmFuZ2UoKSksci50aWNrcyhvKX0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihlKXtpZihlWzFdPGVbMF0pdGhyb3cgbmV3IEVycm9yKCJTY2FsZS5UaW1lIGRvbWFpbiB2YWx1ZXMgbXVzdCBiZSBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIik7cmV0dXJuIHQucHJvdG90eXBlLl9zZXREb21haW4uY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVybltuZXcgRGF0ZSgiMTk3MC0wMS0wMSIpLG5ldyBEYXRlKCIxOTcwLTAxLTAyIildfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7dmFyIGU9dFswXS5nZXRUaW1lKCksbj10WzFdLmdldFRpbWUoKTtpZihlPT09bil7dmFyIGk9bmV3IERhdGUoZSk7aS5zZXREYXRlKGkuZ2V0RGF0ZSgpLTEpO3ZhciByPW5ldyBEYXRlKG4pO3JldHVybiByLnNldERhdGUoci5nZXREYXRlKCkrMSksW2kscl19cmV0dXJuIHR9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHQpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKG5ldyBEYXRlKHQpKX0sZS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCkuZ2V0VGltZSgpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCk7cmV0dXJuW3RbMF0udmFsdWVPZigpLHRbMV0udmFsdWVPZigpXX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRvbWFpbigpO3JldHVyblt0WzBdLnZhbHVlT2YoKSx0WzFdLnZhbHVlT2YoKV19LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMV07dGhpcy5kb21haW4oW25ldyBEYXRlKHRbMF0pLG5ldyBEYXRlKGUpXSl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhlLl9ERUZBVUxUX05VTV9USUNLUyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4odCkubmljZSgpLmRvbWFpbigpfSxlLnRpbWVJbnRlcnZhbFRvRDNUaW1lPWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQpe2Nhc2UgZWJ0LlRpbWVJbnRlcnZhbC5zZWNvbmQ6cmV0dXJuIGU/dGJ0LnV0Y1NlY29uZDp0YnQudGltZVNlY29uZDtjYXNlIGVidC5UaW1lSW50ZXJ2YWwubWludXRlOnJldHVybiBlP3RidC51dGNNaW51dGU6dGJ0LnRpbWVNaW51dGU7Y2FzZSBlYnQuVGltZUludGVydmFsLmhvdXI6cmV0dXJuIGU/dGJ0LnV0Y0hvdXI6dGJ0LnRpbWVIb3VyO2Nhc2UgZWJ0LlRpbWVJbnRlcnZhbC5kYXk6cmV0dXJuIGU/dGJ0LnV0Y0RheTp0YnQudGltZURheTtjYXNlIGVidC5UaW1lSW50ZXJ2YWwud2VlazpyZXR1cm4gZT90YnQudXRjV2Vlazp0YnQudGltZVdlZWs7Y2FzZSBlYnQuVGltZUludGVydmFsLm1vbnRoOnJldHVybiBlP3RidC51dGNNb250aDp0YnQudGltZU1vbnRoO2Nhc2UgZWJ0LlRpbWVJbnRlcnZhbC55ZWFyOnJldHVybiBlP3RidC51dGNZZWFyOnRidC50aW1lWWVhcjtkZWZhdWx0OnRocm93IEVycm9yKCJUaW1lSW50ZXJ2YWwgc3BlY2lmaWVkIGRvZXMgbm90IGV4aXN0OiAiK3QpfX0sZX0pKEl2dC5RdWFudGl0YXRpdmVTY2FsZSk7SnZ0LlRpbWU9bmJ0LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXVPO3QuVGlja0dlbmVyYXRvcnM9Snl0LGUuX19leHBvcnRTdGFyKG52dCx0KSxlLl9fZXhwb3J0U3RhcihidnQsdCksZS5fX2V4cG9ydFN0YXIoQ3Z0LHQpLGUuX19leHBvcnRTdGFyKE52dCx0KSxlLl9fZXhwb3J0U3RhcihVdnQsdCksZS5fX2V4cG9ydFN0YXIocXZ0LHQpLGUuX19leHBvcnRTdGFyKEp2dCx0KTt2YXIgbj1udnQsaT1JdnQ7dC5pc1RyYW5zZm9ybWFibGU9ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGkuUXVhbnRpdGF0aXZlU2NhbGV8fHQgaW5zdGFuY2VvZiBuLkNhdGVnb3J5fX0pKFp5dCksKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU8sbj1FZHQsaT1JbXQscj1neXQsbz1aeXQsYT1GZ3Qscz1TbXQsbD1teXQ7dC5UaW1lSW50ZXJ2YWw9cy5tYWtlRW51bShbInNlY29uZCIsIm1pbnV0ZSIsImhvdXIiLCJkYXkiLCJ3ZWVrIiwibW9udGgiLCJ5ZWFyIl0pLHQuVGltZUF4aXNPcmllbnRhdGlvbj1zLm1ha2VFbnVtKFsidG9wIiwiYm90dG9tIl0pLHQuVGllckxhYmVsUG9zaXRpb249cy5tYWtlRW51bShbImJldHdlZW4iLCJjZW50ZXIiXSk7dmFyIGMsdT0oZnVuY3Rpb24ocyl7ZnVuY3Rpb24gdSh0LGUsbil7dmFyIGk9cy5jYWxsKHRoaXMsdCxlKXx8dGhpcztyZXR1cm4gaS5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uPW51bGwsaS5fdGllckxhYmVsUG9zaXRpb25zPVtdLGkuX3VzZVVUQz1uLGkuYWRkQ2xhc3MoInRpbWUtYXhpcyIpLGkudGlja0xhYmVsUGFkZGluZyg1KSxpLmF4aXNDb25maWd1cmF0aW9ucyh1Ll9ERUZBVUxUX1RJTUVfQVhJU19DT05GSUdVUkFUSU9OUyhpLl91c2VVVEMpKSxpLmFubm90YXRpb25Gb3JtYXR0ZXIoci50aW1lKCIlYSAlYiAlZCwgJVkiLGkuX3VzZVVUQykpLGl9cmV0dXJuIGUuX19leHRlbmRzKHUscyksdS5wcm90b3R5cGUudGllckxhYmVsUG9zaXRpb25zPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RpZXJMYWJlbFBvc2l0aW9ucztpZighdC5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuImJldHdlZW4iPT09dC50b0xvd2VyQ2FzZSgpfHwiY2VudGVyIj09PXQudG9Mb3dlckNhc2UoKX0pKSl0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIHBvc2l0aW9uIGZvciB0aWVyIGxhYmVscyIpO3JldHVybiB0aGlzLl90aWVyTGFiZWxQb3NpdGlvbnM9dCx0aGlzLnJlZHJhdygpLHRoaXN9LHUucHJvdG90eXBlLm1heFRpbWVJbnRlcnZhbFByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb246KHRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbj10LHRoaXMucmVkcmF3KCksdGhpcyl9LHUucHJvdG90eXBlLmN1cnJlbnRBeGlzQ29uZmlndXJhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleF19LHUucHJvdG90eXBlLmF4aXNDb25maWd1cmF0aW9ucz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnM7dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zPXQsdGhpcy5fbnVtVGllcnM9YS5NYXRoLm1heCh0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSksMCksdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fc2V0dXBEb21FbGVtZW50cygpO2Zvcih2YXIgZT10aGlzLnRpZXJMYWJlbFBvc2l0aW9ucygpLG49W10saT0wO2k8dGhpcy5fbnVtVGllcnM7aSsrKW4ucHVzaChlW2ldfHwiYmV0d2VlbiIpO3JldHVybiB0aGlzLnRpZXJMYWJlbFBvc2l0aW9ucyhuKSx0aGlzLnJlZHJhdygpLHRoaXN9LHUucHJvdG90eXBlLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMubGVuZ3RoO3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtpPGUmJm4uZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9jaGVja1RpbWVBeGlzVGllckNvbmZpZ3VyYXRpb24oZSl9KSkmJihlPWkpfSkpLGU9PT10aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMubGVuZ3RoJiYoYS5XaW5kb3cud2Fybigiem9vbWVkIG91dCB0b28gZmFyOiBjb3VsZCBub3QgZmluZCBzdWl0YWJsZSBpbnRlcnZhbCB0byBkaXNwbGF5IGxhYmVscyIpLC0tZSksZX0sdS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24odCl7aWYodCYmKCJyaWdodCI9PT10LnRvTG93ZXJDYXNlKCl8fCJsZWZ0Ij09PXQudG9Mb3dlckNhc2UoKSkpdGhyb3cgbmV3IEVycm9yKHQrIiBpcyBub3QgYSBzdXBwb3J0ZWQgb3JpZW50YXRpb24gZm9yIFRpbWVBeGlzIC0gb25seSBob3Jpem9udGFsIG9yaWVudGF0aW9ucyBhcmUgc3VwcG9ydGVkIik7cmV0dXJuIHMucHJvdG90eXBlLm9yaWVudGF0aW9uLmNhbGwodGhpcyx0KX0sdS5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0O3RoaXMuX3RpZXJIZWlnaHRzPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5fbnVtVGllcnM7ZSsrKXRoaXMuX3RpZXJIZWlnaHRzLnB1c2godCt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSsoImJldHdlZW4iPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdPzA6dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkpKTtyZXR1cm4gbi5zdW0odGhpcy5fdGllckhlaWdodHMpfSx1LnByb3RvdHlwZS5fZ2V0SW50ZXJ2YWxMZW5ndGg9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2NhbGUuZG9tYWluKClbMF0sbj1vLlRpbWUudGltZUludGVydmFsVG9EM1RpbWUodC5pbnRlcnZhbCx0aGlzLl91c2VVVEMpLm9mZnNldChlLHQuc3RlcCk7cmV0dXJuIG4+dGhpcy5fc2NhbGUuZG9tYWluKClbMV0/dGhpcy53aWR0aCgpOk1hdGguYWJzKHRoaXMuX3NjYWxlLnNjYWxlKG4pLXRoaXMuX3NjYWxlLnNjYWxlKGUpKX0sdS5wcm90b3R5cGUuX21heFdpZHRoRm9ySW50ZXJ2YWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21lYXN1cmVyLm1lYXN1cmUodC5mb3JtYXR0ZXIodS5fTE9OR19EQVRFKSkud2lkdGh9LHUucHJvdG90eXBlLl9jaGVja1RpbWVBeGlzVGllckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uKXt2YXIgZT11Ll9TT1JURURfVElNRV9JTlRFUlZBTF9JTkRFWFt0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb25dLG49dS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdC5pbnRlcnZhbF07aWYobnVsbCE9ZSYmbnVsbCE9biYmbjxlKXJldHVybiExfXZhciBpPXRoaXMuX21heFdpZHRoRm9ySW50ZXJ2YWwodCkrMip0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTtyZXR1cm4gTWF0aC5taW4odGhpcy5fZ2V0SW50ZXJ2YWxMZW5ndGgodCksdGhpcy53aWR0aCgpKT49aX0sdS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj1zLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlci5jYWxsKHRoaXMsdCxlKSxpPXRoaXMuX3RpZXJIZWlnaHRzLnJlZHVjZSgoZnVuY3Rpb24odCxlLGkscil7cmV0dXJuIHQrZT5uLmhlaWdodD90OnQrZX0pKSxyPXRoaXMubWFyZ2luKCkrKHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCkqdGhpcy5fYW5ub3RhdGlvblRpZXJIZWlnaHQoKTowKTtyZXR1cm4gbi5oZWlnaHQ9TWF0aC5taW4obi5oZWlnaHQsaStyKSxufSx1LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtzLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9zZXR1cERvbUVsZW1lbnRzKCl9LHUucHJvdG90eXBlLl9zZXR1cERvbUVsZW1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIuIit1LlRJTUVfQVhJU19USUVSX0NMQVNTKS5yZW1vdmUoKSx0aGlzLl90aWVyTGFiZWxDb250YWluZXJzPVtdLHRoaXMuX3RpZXJNYXJrQ29udGFpbmVycz1bXSx0aGlzLl90aWVyQmFzZWxpbmVzPVtdLHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5yZW1vdmUoKSx0aGlzLl9iYXNlbGluZS5yZW1vdmUoKTtmb3IodmFyIHQ9MDt0PHRoaXMuX251bVRpZXJzOysrdCl7dmFyIGU9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCh1LlRJTUVfQVhJU19USUVSX0NMQVNTLCEwKTt0aGlzLl90aWVyTGFiZWxDb250YWluZXJzLnB1c2goZS5hcHBlbmQoImciKS5jbGFzc2VkKGwuQXhpcy5USUNLX0xBQkVMX0NMQVNTKyItY29udGFpbmVyIiwhMCkpLHRoaXMuX3RpZXJNYXJrQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChsLkF4aXMuVElDS19NQVJLX0NMQVNTKyItY29udGFpbmVyIiwhMCkpLHRoaXMuX3RpZXJCYXNlbGluZXMucHVzaChlLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCkpfXZhciBuPW5ldyBpLlN2Z0NvbnRleHQodGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1swXS5ub2RlKCkpO3RoaXMuX21lYXN1cmVyPW5ldyBpLkNhY2hlTWVhc3VyZXIobil9LHUucHJvdG90eXBlLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3NjYWxlLnRpY2tJbnRlcnZhbCh0LmludGVydmFsLHQuc3RlcCx0aGlzLl91c2VVVEMpfSx1LnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29uY2F0KHQuX2dldFRpY2tJbnRlcnZhbFZhbHVlcyhuKSl9KSxbXSl9LHUucHJvdG90eXBlLl9jbGVhblRpZXJzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLl90aWVyTGFiZWxDb250YWluZXJzLmxlbmd0aDt0KyspdGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5yZW1vdmUoKSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbdF0uc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19NQVJLX0NMQVNTKS5yZW1vdmUoKSx0aGlzLl90aWVyQmFzZWxpbmVzW3RdLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9LHUucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zY2FsZS50aWNrSW50ZXJ2YWwodC5pbnRlcnZhbCx0LnN0ZXAsdGhpcy5fdXNlVVRDKSxuPXRoaXMuX3NjYWxlLmRvbWFpbigpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlT2YoKX0pKTtyZXR1cm4tMT09PWkuaW5kZXhPZihuWzBdLnZhbHVlT2YoKSkmJmUudW5zaGlmdChuWzBdKSwtMT09PWkuaW5kZXhPZihuWzFdLnZhbHVlT2YoKSkmJmUucHVzaChuWzFdKSxlfSx1LnByb3RvdHlwZS5fcmVuZGVyVGllckxhYmVscz1mdW5jdGlvbih0LGUsaSl7dmFyIHI9dGhpcyxvPXRoaXMuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKGUpLGE9W107ImJldHdlZW4iPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2ldJiYxPT09ZS5zdGVwP28ubWFwKChmdW5jdGlvbih0LGUpe2UrMT49by5sZW5ndGh8fGEucHVzaChuZXcgRGF0ZSgob1tlKzFdLnZhbHVlT2YoKS1vW2VdLnZhbHVlT2YoKSkvMitvW2VdLnZhbHVlT2YoKSkpfSkpOmE9bzt2YXIgcz10LnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEoYSwoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0LnZhbHVlT2YoKSl9KSksYz1zLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChsLkF4aXMuVElDS19MQUJFTF9DTEFTUywhMCk7Yy5hcHBlbmQoInRleHQiKTt2YXIgdSxoPSJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2ldfHwxPT09ZS5zdGVwPzA6dGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7dT0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT9uLnN1bSh0aGlzLl90aWVySGVpZ2h0cy5zbGljZSgwLGkrMSkpLXRoaXMudGlja0xhYmVsUGFkZGluZygpOiJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2ldP3RoaXMuaGVpZ2h0KCktbi5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCktdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCk6dGhpcy5oZWlnaHQoKS1uLnN1bSh0aGlzLl90aWVySGVpZ2h0cy5zbGljZSgwLGkpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTt2YXIgZD1zLm1lcmdlKGMpLHA9ZC5zZWxlY3RBbGwoInRleHQiKTtwLnNpemUoKT4wJiZwLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2grIiwiK3UrIikiKSxzLmV4aXQoKS5yZW1vdmUoKSxkLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiJ0cmFuc2xhdGUoIityLl9zY2FsZS5zY2FsZSh0KSsiLDApIn0pKTt2YXIgZj0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXXx8MT09PWUuc3RlcD8ibWlkZGxlIjoic3RhcnQiO2Quc2VsZWN0QWxsKCJ0ZXh0IikudGV4dChlLmZvcm1hdHRlcikuc3R5bGUoInRleHQtYW5jaG9yIixmKX0sdS5wcm90b3R5cGUuX3JlbmRlclRpY2tNYXJrcz1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1tlXS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX01BUktfQ0xBU1MpLmRhdGEodCkscj1pLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChsLkF4aXMuVElDS19NQVJLX0NMQVNTLCEwKS5tZXJnZShpKSxvPXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpLGE9dGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApOyJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpPyhvLnkxPWEsby55Mj1hKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmlubmVyVGlja0xlbmd0aCgpOnRoaXMuX3RpZXJIZWlnaHRzW2VdKSk6KG8ueTE9dGhpcy5oZWlnaHQoKS1hLG8ueTI9dGhpcy5oZWlnaHQoKS0oYSsoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpKSxyLmF0dHJzKG8pLCJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpPyhvLnkxPWEsby55Mj1hKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpOihvLnkxPXRoaXMuaGVpZ2h0KCktYSxvLnkyPXRoaXMuaGVpZ2h0KCktKGErKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdP3RoaXMuZW5kVGlja0xlbmd0aCgpOnRoaXMuX3RpZXJIZWlnaHRzW2VdKSkpLG4uc2VsZWN0KHIubm9kZXMoKVswXSkuYXR0cnMobyksbi5zZWxlY3Qoci5ub2RlcygpW3Iuc2l6ZSgpLTFdKS5hdHRycyhvKSxuLnNlbGVjdChyLm5vZGVzKClbMF0pLmNsYXNzZWQobC5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApLG4uc2VsZWN0KHIubm9kZXMoKVtyLnNpemUoKS0xXSkuY2xhc3NlZChsLkF4aXMuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCksaS5leGl0KCkucmVtb3ZlKCl9LHUucHJvdG90eXBlLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitsLkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLG49ZS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobC5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2UoZSksaT10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKTtpLnkyPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP3RoaXMudGlja0xhYmVsUGFkZGluZygpOnRoaXMuaGVpZ2h0KCktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCksbi5hdHRycyhpKSxlLmV4aXQoKS5yZW1vdmUoKX0sdS5wcm90b3R5cGUuX2dlbmVyYXRlTGFiZWxsZXNzVGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleDwxP1tdOnRoaXMuX2dldFRpY2tJbnRlcnZhbFZhbHVlcyh0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleC0xXVswXSl9LHUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4PXRoaXMuX2dldE1vc3RQcmVjaXNlQ29uZmlndXJhdGlvbkluZGV4KCk7dmFyIGU9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdO3RoaXMuX2NsZWFuVGllcnMoKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuX3JlbmRlclRpZXJMYWJlbHModC5fdGllckxhYmVsQ29udGFpbmVyc1tuXSxlLG4pfSkpO2Zvcih2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb24oZSl9KSksaT0wLHI9MDtyPE1hdGgubWF4KGUubGVuZ3RoLDEpOysrcil7dmFyIG89dGhpcy5fZ2VuZXJhdGVCYXNlbGluZUF0dHJIYXNoKCk7by55MSs9ImJvdHRvbSI9PT10aGlzLm9yaWVudGF0aW9uKCk/aTotaSxvLnkyPW8ueTEsdGhpcy5fdGllckJhc2VsaW5lc1tyXS5hdHRycyhvKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKSxpKz10aGlzLl90aWVySGVpZ2h0c1tyXX12YXIgYT1bXSxzPXRoaXMuX3NjYWxlLmRvbWFpbigpLGw9dGhpcy5fc2NhbGUuc2NhbGUoc1sxXSktdGhpcy5fc2NhbGUuc2NhbGUoc1swXSk7Zm9yKDEuNSp0aGlzLl9nZXRJbnRlcnZhbExlbmd0aChlWzBdKT49bCYmKGE9dGhpcy5fZ2VuZXJhdGVMYWJlbGxlc3NUaWNrcygpKSx0aGlzLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3MoYSksdGhpcy5faGlkZU92ZXJmbG93aW5nVGllcnMoKSxyPTA7cjxlLmxlbmd0aDsrK3IpdGhpcy5fcmVuZGVyVGlja01hcmtzKG5bcl0sciksdGhpcy5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzKHIpO3JldHVybiB0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuX2RyYXdBbm5vdGF0aW9ucygpOnRoaXMuX3JlbW92ZUFubm90YXRpb25zKCksdGhpc30sdS5wcm90b3R5cGUuX2hpZGVPdmVyZmxvd2luZ1RpZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuaGVpZ2h0KCksbj0wO3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdS5USU1FX0FYSVNfVElFUl9DTEFTUykuYXR0cigidmlzaWJpbGl0eSIsKGZ1bmN0aW9uKGkscil7cmV0dXJuKG4rPXQuX3RpZXJIZWlnaHRzW3JdKTw9ZT8iaW5oZXJpdCI6ImhpZGRlbiJ9KSl9LHUucHJvdG90eXBlLl9oaWRlT3ZlcmxhcHBpbmdBbmRDdXRPZmZMYWJlbHM9ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLHI9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dGhpcy5fdGllck1hcmtDb250YWluZXJzW3RdLnNlbGVjdEFsbCgiLiIrbC5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBpPW4uc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuInZpc2libGUiPT09aXx8ImluaGVyaXQiPT09aX0pKS5ub2RlcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK2wuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4idmlzaWJsZSI9PT1pfHwiaW5oZXJpdCI9PT1pfSkpLmVhY2goKGZ1bmN0aW9uKHQscyl7dmFyIGwsYz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHU9bi5zZWxlY3QodGhpcyksaD1vW3NdLGQ9b1tzKzFdLHA9bnVsbCE9ZSYmYS5ET00uY2xpZW50UmVjdHNPdmVybGFwKGMsZSksZj1udWxsIT1oJiZhLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoYyxoKSxtPW51bGwhPWQmJmEuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChjLGQpO2w9YywhKE1hdGguZmxvb3Ioci5sZWZ0KTw9TWF0aC5jZWlsKGwubGVmdCkmJk1hdGguZmxvb3Ioci50b3ApPD1NYXRoLmNlaWwobC50b3ApJiZNYXRoLmZsb29yKGwucmlnaHQpPD1NYXRoLmNlaWwoci5sZWZ0K2kud2lkdGgoKSkmJk1hdGguZmxvb3IobC5ib3R0b20pPD1NYXRoLmNlaWwoci50b3AraS5oZWlnaHQoKSkpfHxwfHxmfHxtP3Uuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTooZT1jLHUuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IikpfSkpfSx1LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXtzLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSx1LlRJTUVfQVhJU19USUVSX0NMQVNTPSJ0aW1lLWF4aXMtdGllciIsdS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVg9KChjPXt9KVt0LlRpbWVJbnRlcnZhbC5zZWNvbmRdPTAsY1t0LlRpbWVJbnRlcnZhbC5taW51dGVdPTEsY1t0LlRpbWVJbnRlcnZhbC5ob3VyXT0yLGNbdC5UaW1lSW50ZXJ2YWwuZGF5XT0zLGNbdC5UaW1lSW50ZXJ2YWwud2Vla109NCxjW3QuVGltZUludGVydmFsLm1vbnRoXT01LGNbdC5UaW1lSW50ZXJ2YWwueWVhcl09NixjKSx1Ll9ERUZBVUxUX1RJTUVfQVhJU19DT05GSUdVUkFUSU9OUz1mdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gci50aW1lKHQsZSl9O3JldHVybltbe2ludGVydmFsOnQuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxMCxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxNSxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDozMCxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MTAsZm9ybWF0dGVyOm4oIiVJOiVNICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjEsZm9ybWF0dGVyOm4oIiVJICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjMsZm9ybWF0dGVyOm4oIiVJICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjYsZm9ybWF0dGVyOm4oIiVJICVwIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjEyLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVhICVlIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVlIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDozLGZvcm1hdHRlcjpuKCIlYiIpfSx7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6Nixmb3JtYXR0ZXI6bigiJWIiKX0se2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiV5Iil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDo1LGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDp0LlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MjUsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOnQuVGltZUludGVydmFsLnllYXIsc3RlcDo1MCxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEwMCxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjIwMCxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjUwMCxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6dC5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjFlMyxmb3JtYXR0ZXI6bigiJVkiKX1dXX0sdS5fTE9OR19EQVRFPW5ldyBEYXRlKDk5OTksOCwyOSwxMiw1OSw5OTk5KSx1fSkobC5BeGlzKTt0LlRpbWU9dX0pKEt5dCksKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU87ZS5fX2V4cG9ydFN0YXIoTm10LHQpLGUuX19leHBvcnRTdGFyKFV5dCx0KSxlLl9fZXhwb3J0U3RhcihLeXQsdCl9KShQbXQpO3ZhciBpYnQ9e30scmJ0PXt9LG9idD17fSxhYnQ9e30sc2J0PXt9LGxidD17fSxjYnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1YnQ9Rmd0LGhidD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbj17fSx0aGlzLl9ldmVudFRhcmdldD1kb2N1bWVudCx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0PXt9LHRoaXMuX2Nvbm5lY3RlZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuX2hhc05vQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKHRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXQpLGU9MDtlPHQubGVuZ3RoO2UrKylpZigwIT09dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0W2VdXS5zaXplKXJldHVybiExO3JldHVybiEwfSx0LnByb3RvdHlwZS5fY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fY29ubmVjdGVkfHwoT2JqZWN0LmtleXModGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fZXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihlLHQuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZV0sIndoZWVsIj09PWU/e3Bhc3NpdmU6ITF9OnZvaWQgMCl9KSksdGhpcy5fY29ubmVjdGVkPSEwKX0sdC5wcm90b3R5cGUuX2Rpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2Nvbm5lY3RlZCYmdGhpcy5faGFzTm9DYWxsYmFja3MoKSYmKE9iamVjdC5rZXlzKHRoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2V2ZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2VdKX0pKSx0aGlzLl9jb25uZWN0ZWQ9ITEpfSx0LnByb3RvdHlwZS5fYWRkQ2FsbGJhY2tGb3JFdmVudD1mdW5jdGlvbih0LGUpe251bGw9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF0mJih0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdPW5ldyB1YnQuQ2FsbGJhY2tTZXQpLHRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF0uYWRkKGUpLHRoaXMuX2Nvbm5lY3QoKX0sdC5wcm90b3R5cGUuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxlKXtudWxsIT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdJiZ0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmRlbGV0ZShlKSx0aGlzLl9kaXNjb25uZWN0KCl9LHQucHJvdG90eXBlLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XTtudWxsIT1pJiZpLmNhbGxDYWxsYmFja3MuYXBwbHkoaSxlKX0sdH0pKCk7Y2J0LkRpc3BhdGNoZXI9aGJ0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkobGJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZGJ0PXVPLHBidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9LRVlET1dOX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBuLl9wcm9jZXNzS2V5ZG93bih0KX0sbi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9LRVlVUF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcHJvY2Vzc0tleXVwKHQpfSxufXJldHVybiBkYnQuX19leHRlbmRzKGUsdCksZS5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnRbZS5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBudWxsPT10JiYodD1uZXcgZSxkb2N1bWVudFtlLl9ESVNQQVRDSEVSX0tFWV09dCksdH0sZS5wcm90b3R5cGUuX3Byb2Nlc3NLZXlkb3duPWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdC5rZXlDb2RlLHQpfSxlLnByb3RvdHlwZS5fcHJvY2Vzc0tleXVwPWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChlLl9LRVlVUF9FVkVOVF9OQU1FLHQua2V5Q29kZSx0KX0sZS5wcm90b3R5cGUub25LZXlEb3duPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX0tFWURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZLZXlEb3duPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0tFWURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbktleVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX0tFWVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5VXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fS0VZVVBfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLl9ESVNQQVRDSEVSX0tFWT0iX19QbG90dGFibGVfRGlzcGF0Y2hlcl9LZXkiLGUuX0tFWURPV05fRVZFTlRfTkFNRT0ia2V5ZG93biIsZS5fS0VZVVBfRVZFTlRfTkFNRT0ia2V5dXAiLGV9KShjYnQuRGlzcGF0Y2hlcik7bGJ0LktleT1wYnQ7dmFyIGZidD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoZmJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbWJ0PXVPLGdidD1GZ3QsX2J0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpLl9sYXN0TW91c2VQb3NpdGlvbj17eDotMSx5Oi0xfSxpLl90cmFuc2xhdG9yPWdidC5nZXRUcmFuc2xhdG9yKG4pO3ZhciByPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FLCJwYWdlIil9O3JldHVybiBpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFT1ZFUl9FVkVOVF9OQU1FXT1yLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VNT1ZFX0VWRU5UX05BTUVdPXIsaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRU9VVF9FVkVOVF9OQU1FXT1yLGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VET1dOX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX01PVVNFRE9XTl9FVkVOVF9OQU1FKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRVVQX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX01PVVNFVVBfRVZFTlRfTkFNRSwicGFnZSIpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX1dIRUVMX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX1dIRUVMX0VWRU5UX05BTUUpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX0RCTENMSUNLX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX0RCTENMSUNLX0VWRU5UX05BTUUpfSxpfXJldHVybiBtYnQuX19leHRlbmRzKGUsdCksZS5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKHQpe3ZhciBuPXQucm9vdCgpLnJvb3RFbGVtZW50KCksaT1uW2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09aSYmKGk9bmV3IGUodCksbltlLl9ESVNQQVRDSEVSX0tFWV09aSksaX0sZS5wcm90b3R5cGUub25Nb3VzZU1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VNT1ZFX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uTW91c2VEb3duPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFRE9XTl9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZk1vdXNlRG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRURPV05fRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vbk1vdXNlVXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZk1vdXNlVXA9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uV2hlZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fV0hFRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZXaGVlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9XSEVFTF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRGJsQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEYmxDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9EQkxDTElDS19FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLl9tZWFzdXJlQW5kRGlzcGF0Y2g9ZnVuY3Rpb24odCxlLG4saSl7aWYodm9pZCAwPT09aSYmKGk9ImVsZW1lbnQiKSwicGFnZSIhPT1pJiYiZWxlbWVudCIhPT1pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzY29wZSAnIitpKyInLCBtdXN0IGJlICdlbGVtZW50JyBvciAncGFnZSciKTtpZigicGFnZSI9PT1pfHx0aGlzLmV2ZW50SW5zaWRlKHQsZSkpe3ZhciByPXRoaXMuX3RyYW5zbGF0b3IuY29tcHV0ZVBvc2l0aW9uKGUuY2xpZW50WCxlLmNsaWVudFkpO3RoaXMuX2xhc3RNb3VzZVBvc2l0aW9uPXIsdGhpcy5fY2FsbENhbGxiYWNrc0ZvckV2ZW50KG4sdGhpcy5sYXN0TW91c2VQb3NpdGlvbigpLGUpfX0sZS5wcm90b3R5cGUuZXZlbnRJbnNpZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZ2J0LlRyYW5zbGF0b3IuaXNFdmVudEluc2lkZSh0LGUpfSxlLnByb3RvdHlwZS5sYXN0TW91c2VQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXN0TW91c2VQb3NpdGlvbn0sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfTW91c2UiLGUuX01PVVNFT1ZFUl9FVkVOVF9OQU1FPSJtb3VzZW92ZXIiLGUuX01PVVNFTU9WRV9FVkVOVF9OQU1FPSJtb3VzZW1vdmUiLGUuX01PVVNFT1VUX0VWRU5UX05BTUU9Im1vdXNlb3V0IixlLl9NT1VTRURPV05fRVZFTlRfTkFNRT0ibW91c2Vkb3duIixlLl9NT1VTRVVQX0VWRU5UX05BTUU9Im1vdXNldXAiLGUuX1dIRUVMX0VWRU5UX05BTUU9IndoZWVsIixlLl9EQkxDTElDS19FVkVOVF9OQU1FPSJkYmxjbGljayIsZX0pKGNidC5EaXNwYXRjaGVyKTtmYnQuTW91c2U9X2J0O3ZhciB5YnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHlidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZidD11TyxiYnQ9Rmd0LHhidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3RyYW5zbGF0b3I9YmJ0LmdldFRyYW5zbGF0b3IobiksaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSwicGFnZSIpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX1RPVUNITU9WRV9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX1RPVUNIRU5EX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLCJwYWdlIil9LGl9cmV0dXJuIHZidC5fX2V4dGVuZHMoZSx0KSxlLmdldERpc3BhdGNoZXI9ZnVuY3Rpb24odCl7dmFyIG49dC5yb290KCkucm9vdEVsZW1lbnQoKSxpPW5bZS5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBudWxsPT1pJiYoaT1uZXcgZSh0KSxuW2UuX0RJU1BBVENIRVJfS0VZXT1pKSxpfSxlLnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uVG91Y2hNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNITU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmVG91Y2hFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hFTkRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmVG91Y2hDYW5jZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PWkmJihpPSJlbGVtZW50IiksInBhZ2UiIT09aSYmImVsZW1lbnQiIT09aSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIraSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoImVsZW1lbnQiIT09aXx8dGhpcy5ldmVudEluc2lkZSh0LGUpKXtmb3IodmFyIHI9ZS5jaGFuZ2VkVG91Y2hlcyxvPXt9LGE9W10scz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgbD1yW3NdLGM9bC5pZGVudGlmaWVyLHU9dGhpcy5fdHJhbnNsYXRvci5jb21wdXRlUG9zaXRpb24obC5jbGllbnRYLGwuY2xpZW50WSk7bnVsbCE9dSYmKG9bY109dSxhLnB1c2goYykpfWEubGVuZ3RoPjAmJnRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChuLGEsbyxlKX19LGUucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGJidC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUodCxlKX0sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfVG91Y2giLGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRT0idG91Y2hzdGFydCIsZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUU9InRvdWNobW92ZSIsZS5fVE9VQ0hFTkRfRVZFTlRfTkFNRT0idG91Y2hlbmQiLGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUU9InRvdWNoY2FuY2VsIixlfSkoY2J0LkRpc3BhdGNoZXIpO3lidC5Ub3VjaD14YnQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU87ZS5fX2V4cG9ydFN0YXIobGJ0LHQpLGUuX19leHBvcnRTdGFyKGZidCx0KSxlLl9fZXhwb3J0U3Rhcih5YnQsdCl9KShzYnQpO3ZhciB3YnQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHdidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFNidD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9dGhpczt0aGlzLl9hbmNob3JDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdC5fYW5jaG9yKGUpfSx0aGlzLl9lbmFibGVkPSEwfXJldHVybiB0LnByb3RvdHlwZS5hdHRhY2hUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZGlzY29ubmVjdCgpLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG89dCx0aGlzLl9jb25uZWN0KCksdGhpc30sdC5wcm90b3R5cGUuZGV0YWNoRnJvbT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXRhY2goKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvPW51bGwsdGhpc30sdC5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdGhpcy5fZW5hYmxlZD90aGlzLl9jb25uZWN0KCk6dGhpcy5fZGlzY29ubmVjdCgpLHRoaXMpfSx0LnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQW5jaG9yZWQ9ITB9LHQucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQ9ITF9LHQucHJvdG90eXBlLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub3JpZ2luVG9Sb290KCk7cmV0dXJue3g6dC54LWUueCx5OnQueS1lLnl9fSx0LnByb3RvdHlwZS5faXNJbnNpZGVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA8PXQueCYmMDw9dC55JiZ0Lng8PXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ud2lkdGgoKSYmdC55PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpfSx0LnByb3RvdHlwZS5fY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZCgpJiZudWxsIT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvJiYhdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vbkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9LHQucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5fdW5hbmNob3IoKSxudWxsIT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvJiZ0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9mZkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9LHR9KSgpO3didC5JbnRlcmFjdGlvbj1TYnQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBNYnQ9dU8sRWJ0PXNidCxUYnQ9Rmd0LENidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fY2xpY2tlZERvd249ITEsZS5fZG91YmxlQ2xpY2tpbmc9ITEsZS5fb25DbGlja0NhbGxiYWNrcz1uZXcgVGJ0LkNhbGxiYWNrU2V0LGUuX29uRG91YmxlQ2xpY2tDYWxsYmFja3M9bmV3IFRidC5DYWxsYmFja1NldCxlLl9tb3VzZURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVDbGlja0Rvd24odCxuKX0sZS5fbW91c2VVcENhbGxiYWNrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX2hhbmRsZUNsaWNrVXAodCxuKX0sZS5fZGJsQ2xpY2tDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVEYmxDbGljayh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVDbGlja0Rvd24oblt0WzBdXSxpKX0sZS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbih0LG4saSl7cmV0dXJuIGUuX2hhbmRsZUNsaWNrVXAoblt0WzBdXSxpKX0sZS5fdG91Y2hDYW5jZWxDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9jbGlja2VkRG93bj0hMX0sZX1yZXR1cm4gTWJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPUVidC5Nb3VzZS5nZXREaXNwYXRjaGVyKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbkRibENsaWNrKHRoaXMuX2RibENsaWNrQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1FYnQuVG91Y2guZ2V0RGlzcGF0Y2hlcihlKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZkRibENsaWNrKHRoaXMuX2RibENsaWNrQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaENhbmNlbCh0aGlzLl90b3VjaENhbmNlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9bnVsbH0sZS5wcm90b3R5cGUuX2hhbmRsZUNsaWNrRG93bj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5faXNJbnNpZGVDb21wb25lbnQobikmJih0aGlzLl9jbGlja2VkRG93bj0hMCx0aGlzLl9jbGlja2VkUG9pbnQ9bil9LGUucHJvdG90eXBlLl9oYW5kbGVDbGlja1VwPWZ1bmN0aW9uKHQsbil7dmFyIGk9dGhpcyxyPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5fY2xpY2tlZERvd24mJmUuX3BvaW50c0VxdWFsKHIsdGhpcy5fY2xpY2tlZFBvaW50KSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLl9kb3VibGVDbGlja2luZ3x8aS5fb25DbGlja0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIsbil9KSwwKSx0aGlzLl9jbGlja2VkRG93bj0hMX0sZS5wcm90b3R5cGUuX2hhbmRsZURibENsaWNrPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5fZG91YmxlQ2xpY2tpbmc9ITAsdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKGksZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZG91YmxlQ2xpY2tpbmc9ITF9KSwwKX0sZS5fcG9pbnRzRXF1YWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9LGUucHJvdG90eXBlLm9uQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uQ2xpY2tDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRvdWJsZUNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEb3VibGVDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZX0pKHdidC5JbnRlcmFjdGlvbik7YWJ0LkNsaWNrPUNidDt2YXIgQWJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShBYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrYnQ9dU8sTGJ0PXNidCxQYnQ9Rmd0LE5idD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX2RyYWdnaW5nPSExLGkuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ9ITAsaS5fbW91c2VGaWx0ZXI9ZS5fREVGQVVMVF9NT1VTRV9GSUxURVIsaS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBQYnQuQ2FsbGJhY2tTZXQsaS5fZHJhZ0NhbGxiYWNrcz1uZXcgUGJ0LkNhbGxiYWNrU2V0LGkuX2RyYWdFbmRDYWxsYmFja3M9bmV3IFBidC5DYWxsYmFja1NldCxpLl9tb3VzZURvd25DYWxsYmFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBpLl9zdGFydERyYWcodCxlKX0saS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5fZG9EcmFnKHQsZSl9LGkuX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBpLl9lbmREcmFnKHQsZSl9LGkuX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuX3N0YXJ0RHJhZyhlW3RbMF1dLG4pfSxpLl90b3VjaE1vdmVDYWxsYmFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGkuX2RvRHJhZyhlW3RbMF1dLG4pfSxpLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5fZW5kRHJhZyhlW3RbMF1dLG4pfSxpLl9tb3VzZUJ1dHRvbj12b2lkIDAhPT1uP246MCxpfXJldHVybiBrYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9TGJ0Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9TGJ0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyPW51bGwsdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl90cmFuc2xhdGVBbmRDb25zdHJhaW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTtyZXR1cm4gdGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD97eDpQYnQuTWF0aC5jbGFtcChlLngsMCx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkpLHk6UGJ0Lk1hdGguY2xhbXAoZS55LDAsdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKSl9OmV9LGUucHJvdG90eXBlLl9zdGFydERyYWc9ZnVuY3Rpb24odCxlKXtpZighKGUgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KXx8dGhpcy5fbW91c2VGaWx0ZXIoZSkpe3ZhciBuPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5faXNJbnNpZGVDb21wb25lbnQobikmJihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZHJhZ2dpbmc9ITAsdGhpcy5fZHJhZ09yaWdpbj1uLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4pKX19LGUucHJvdG90eXBlLl9kb0RyYWc9ZnVuY3Rpb24odCxlKXt0aGlzLl9kcmFnZ2luZyYmdGhpcy5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4sdGhpcy5fdHJhbnNsYXRlQW5kQ29uc3RyYWluKHQpKX0sZS5wcm90b3R5cGUuX2VuZERyYWc9ZnVuY3Rpb24odCxlKXtlIGluc3RhbmNlb2YgTW91c2VFdmVudCYmZS5idXR0b24hPT10aGlzLl9tb3VzZUJ1dHRvbnx8dGhpcy5fZHJhZ2dpbmcmJih0aGlzLl9kcmFnZ2luZz0hMSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbix0aGlzLl90cmFuc2xhdGVBbmRDb25zdHJhaW4odCkpKX0sZS5wcm90b3R5cGUuY29uc3RyYWluZWRUb0NvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50Oih0aGlzLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50PXQsdGhpcyl9LGUucHJvdG90eXBlLm1vdXNlRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9tb3VzZUZpbHRlcjoodGhpcy5fbW91c2VGaWx0ZXI9dCx0aGlzKX0sZS5wcm90b3R5cGUub25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0NhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLl9ERUZBVUxUX01PVVNFX0ZJTFRFUj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXQuYnV0dG9ufSxlfSkod2J0LkludGVyYWN0aW9uKTtBYnQuRHJhZz1OYnQ7dmFyIElidD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoSWJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUmJ0PXVPLE9idD1zYnQsemJ0PUZndCxEYnQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX2tleVByZXNzQ2FsbGJhY2tzPXt9LGUuX2tleVJlbGVhc2VDYWxsYmFja3M9e30sZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuITF9LGUuX2Rvd25lZEtleXM9bmV3IHpidC5TZXQsZS5fa2V5RG93bkNhbGxiYWNrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX2hhbmRsZUtleURvd25FdmVudCh0LG4pfSxlLl9rZXlVcENhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBlLl9oYW5kbGVLZXlVcEV2ZW50KHQpfSxlfXJldHVybiBSYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXI9T2J0Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPU9idC5LZXkuZ2V0RGlzcGF0Y2hlcigpLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vbktleVVwKHRoaXMuX2tleVVwQ2FsbGJhY2spfSxlLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXI9bnVsbCx0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleURvd24odGhpcy5fa2V5RG93bkNhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleVVwKHRoaXMuX2tleVVwQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXI9bnVsbH0sZS5wcm90b3R5cGUuX2hhbmRsZUtleURvd25FdmVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLmxhc3RNb3VzZVBvc2l0aW9uKCkpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KG4pJiYhZS5yZXBlYXQmJih0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1t0XSYmdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uY2FsbENhbGxiYWNrcyh0KSx0aGlzLl9kb3duZWRLZXlzLmFkZCh0KSl9LGUucHJvdG90eXBlLl9oYW5kbGVLZXlVcEV2ZW50PWZ1bmN0aW9uKHQpe3RoaXMuX2Rvd25lZEtleXMuaGFzKHQpJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLmNhbGxDYWxsYmFja3ModCksdGhpcy5fZG93bmVkS2V5cy5kZWxldGUodCl9LGUucHJvdG90eXBlLm9uS2V5UHJlc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF18fCh0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1t0XT1uZXcgemJ0LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1t0XS5hZGQoZSksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5UHJlc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uZGVsZXRlKGUpLDA9PT10aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1t0XS5zaXplJiZkZWxldGUgdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0sdGhpc30sZS5wcm90b3R5cGUub25LZXlSZWxlYXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF18fCh0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdPW5ldyB6YnQuQ2FsbGJhY2tTZXQpLHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uYWRkKGUpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVJlbGVhc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XS5kZWxldGUoZSksMD09PXRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0sdGhpc30sZX0pKHdidC5JbnRlcmFjdGlvbik7SWJ0LktleT1EYnQ7dmFyIEJidD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoQmJ0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSGJ0PXVPLEZidD1FZHQsVmJ0PXNidCxVYnQ9Wnl0LGpidD1GZ3QsR2J0PW9idCxXYnQ9aXZ0LHFidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fd2hlZWxGaWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuITB9LGkuX3doZWVsQ2FsbGJhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5faGFuZGxlV2hlZWxFdmVudCh0LGUpfSxpLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9oYW5kbGVUb3VjaFN0YXJ0KHQsZSxuKX0saS5fdG91Y2hNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9oYW5kbGVQaW5jaCh0LGUsbil9LGkuX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9oYW5kbGVUb3VjaEVuZCh0LGUsbil9LGkuX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9oYW5kbGVUb3VjaEVuZCh0LGUsbil9LGkuX3BhbkVuZENhbGxiYWNrcz1uZXcgamJ0LkNhbGxiYWNrU2V0LGkuX3pvb21FbmRDYWxsYmFja3M9bmV3IGpidC5DYWxsYmFja1NldCxpLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzPW5ldyBqYnQuQ2FsbGJhY2tTZXQsaS5feFNjYWxlcz1uZXcgamJ0LlNldCxpLl95U2NhbGVzPW5ldyBqYnQuU2V0LGkuX2RyYWdJbnRlcmFjdGlvbj1uZXcgR2J0LkRyYWcsaS5fc2V0dXBEcmFnSW50ZXJhY3Rpb24oKSxpLl90b3VjaElkcz1GYnQubWFwKCksaS5fbWluRG9tYWluRXh0ZW50cz1uZXcgamJ0Lk1hcCxpLl9tYXhEb21haW5FeHRlbnRzPW5ldyBqYnQuTWFwLGkuX21pbkRvbWFpblZhbHVlcz1uZXcgamJ0Lk1hcCxpLl9tYXhEb21haW5WYWx1ZXM9bmV3IGpidC5NYXAsbnVsbCE9ZSYmaS5hZGRYU2NhbGUoZSksbnVsbCE9biYmaS5hZGRZU2NhbGUobiksaX1yZXR1cm4gSGJ0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmRyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259LGUucHJvdG90eXBlLndoZWVsRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl93aGVlbEZpbHRlcjoodGhpcy5fd2hlZWxGaWx0ZXI9dCx0aGlzKX0sZS5wcm90b3R5cGUucGFuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy54U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5wYW4oZS5fY29uc3RyYWluZWRUcmFuc2xhdGlvbihuLHQueCkpfSkpLHRoaXMueVNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24ucGFuKGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24obix0LnkpKX0pKSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUsbil7dmFyIGkscixvPXRoaXM7cmV0dXJuIHZvaWQgMD09PW4mJihuPSEwKSxudWxsIT1lJiYoaT1lLngscj1lLnksbiYmKHRoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPW8uX2NvbnN0cmFpbmVkWm9vbShlLHQsaSk7aT1uLmNlbnRlclBvaW50LHQ9bi56b29tQW1vdW50fSkpLHRoaXMueVNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPW8uX2NvbnN0cmFpbmVkWm9vbShlLHQscik7cj1uLmNlbnRlclBvaW50LHQ9bi56b29tQW1vdW50fSkpKSksdGhpcy54U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yYW5nZSgpO2Uuem9vbSh0LG51bGw9PWk/KG5bMV0rblswXSkvMjppKX0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnJhbmdlKCk7ZS56b29tKHQsbnVsbD09cj8oblsxXStuWzBdKS8yOnIpfSkpLHRoaXMuX3Bhblpvb21VcGRhdGVDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpLHt6b29tQW1vdW50OnQsY2VudGVyVmFsdWU6e2NlbnRlclg6aSxjZW50ZXJZOnJ9fX0sZS5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8oZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPVZidC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbldoZWVsKHRoaXMuX3doZWVsQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1WYnQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaENhbmNlbCh0aGlzLl90b3VjaENhbmNlbENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZldoZWVsKHRoaXMuX3doZWVsQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaENhbmNlbCh0aGlzLl90b3VjaENhbmNlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9bnVsbCx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCl9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaFN0YXJ0PWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9MDtpPHQubGVuZ3RoJiZ0aGlzLl90b3VjaElkcy5zaXplKCk8MjtpKyspe3ZhciByPXRbaV07dGhpcy5fdG91Y2hJZHMuc2V0KHIudG9TdHJpbmcoKSx0aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKGVbcl0pKX19LGUucHJvdG90eXBlLl9oYW5kbGVQaW5jaD1mdW5jdGlvbih0LG4saSl7dmFyIHI9dGhpcztpZighKHRoaXMuX3RvdWNoSWRzLnNpemUoKTwyKSl7dmFyIG89dGhpcy5fdG91Y2hJZHMudmFsdWVzKCk7aWYodGhpcy5faXNJbnNpZGVDb21wb25lbnQodGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShvWzBdKSkmJnRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uob1sxXSkpKXt2YXIgYT1lLl9wb2ludERpc3RhbmNlKG9bMF0sb1sxXSk7aWYoMCE9PWEpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7ci5fdG91Y2hJZHMuaGFzKHQudG9TdHJpbmcoKSkmJnIuX3RvdWNoSWRzLnNldCh0LnRvU3RyaW5nKCksci5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuW3RdKSl9KSk7dmFyIHM9dGhpcy5fdG91Y2hJZHMudmFsdWVzKCksbD1lLl9wb2ludERpc3RhbmNlKHNbMF0sc1sxXSk7aWYoMCE9PWwpe3ZhciBjPWEvbCx1PXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4Oih0Lngtb1tlXS54KS9jLHk6KHQueS1vW2VdLnkpL2N9fSkpLGg9ZS5jZW50ZXJQb2ludChvWzBdLG9bMV0pLGQ9dGhpcy56b29tKGMsaCkscD1kLmNlbnRlclZhbHVlLGY9ZC56b29tQW1vdW50LG09cC5jZW50ZXJYLGc9cC5jZW50ZXJZLF89by5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3g6dVtlXS54KmYrdC54LHk6dVtlXS55KmYrdC55fX0pKTt0aGlzLnBhbih7eDptLShfWzBdLngrX1sxXS54KS8yLHk6Zy0oX1swXS55K19bMV0ueSkvMn0pfX19fX0sZS5jZW50ZXJQb2ludD1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubWluKHQueCxlLngpLGk9TWF0aC5tYXgodC54LGUueCkscj1NYXRoLm1pbih0LnksZS55KTtyZXR1cm57eDoobitpKS8yLHk6KE1hdGgubWF4KHQueSxlLnkpK3IpLzJ9fSxlLl9wb2ludERpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5taW4odC54LGUueCksaT1NYXRoLm1heCh0LngsZS54KSxyPU1hdGgubWluKHQueSxlLnkpLG89TWF0aC5tYXgodC55LGUueSk7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhpLW4sMikrTWF0aC5wb3coby1yLDIpKX0sZS5wcm90b3R5cGUuX2hhbmRsZVRvdWNoRW5kPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5fdG91Y2hJZHMucmVtb3ZlKHQudG9TdHJpbmcoKSl9KSksdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPjAmJnRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSxlLnByb3RvdHlwZS5faGFuZGxlV2hlZWxFdmVudD1mdW5jdGlvbih0LG4pe2lmKHRoaXMuX3doZWVsRmlsdGVyKG4pKXt2YXIgaT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO2lmKHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KGkpKXtuLnByZXZlbnREZWZhdWx0KCk7dmFyIHI9TWF0aC5wb3coMiwoMCE9PW4uZGVsdGFZP24uZGVsdGFZOm4uZGVsdGFYKSoobi5kZWx0YU1vZGU/ZS5fUElYRUxTX1BFUl9MSU5FOjEpKi4wMDIpO3RoaXMuem9vbShyLGkpLHRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfX19LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24odCxlLG4pe3JldHVybiBXYnQuY29uc3RyYWluZWRab29tKHQsZSxuLHRoaXMubWluRG9tYWluRXh0ZW50KHQpLHRoaXMubWF4RG9tYWluRXh0ZW50KHQpLHRoaXMubWluRG9tYWluVmFsdWUodCksdGhpcy5tYXhEb21haW5WYWx1ZSh0KSl9LGUucHJvdG90eXBlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFdidC5jb25zdHJhaW5lZFRyYW5zbGF0aW9uKHQsZSx0aGlzLm1pbkRvbWFpblZhbHVlKHQpLHRoaXMubWF4RG9tYWluVmFsdWUodCkpfSxlLnByb3RvdHlwZS5fc2V0dXBEcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoITEpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydCgoZnVuY3Rpb24oKXtyZXR1cm4gdD1udWxsfSkpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcoKGZ1bmN0aW9uKG4saSl7ZS5fdG91Y2hJZHMuc2l6ZSgpPj0yfHwoZS5wYW4oe3g6KG51bGw9PXQ/bi54OnQueCktaS54LHk6KG51bGw9PXQ/bi55OnQueSktaS55fSksdD1pKX0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKChmdW5jdGlvbigpe3JldHVybiBlLl9wYW5FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSkpfSxlLnByb3RvdHlwZS5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cz1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXRoaXMubWluRG9tYWluRXh0ZW50KHQpfHxudWxsPT10aGlzLm1heERvbWFpbkV4dGVudCh0KXx8dCBpbnN0YW5jZW9mIFVidC5MaW5lYXJ8fHQgaW5zdGFuY2VvZiBVYnQuVGltZSl9LGUucHJvdG90eXBlLnhTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feFNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feFNjYWxlcz1uZXcgamJ0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWFNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLnlTY2FsZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10KXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5feVNjYWxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnB1c2godCl9KSksbn1yZXR1cm4gdGhpcy5feVNjYWxlcz1uZXcgamJ0LlNldCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuYWRkWVNjYWxlKHQpfSkpLHRoaXN9LGUucHJvdG90eXBlLmFkZFhTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feFNjYWxlcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlWFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl94U2NhbGVzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuYWRkWVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl95U2NhbGVzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVZU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3lTY2FsZXMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpbkV4dGVudHMuZGVsZXRlKHQpLHRoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5taW5Eb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9taW5Eb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTwwKXRocm93IG5ldyBFcnJvcigiZXh0ZW50IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7dmFyIG49dGhpcy5tYXhEb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmbi52YWx1ZU9mKCk8ZS52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtaW5Eb21haW5FeHRlbnQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4RG9tYWluRXh0ZW50IGZvciB0aGUgc2FtZSBTY2FsZSIpO3JldHVybiB0aGlzLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzKHQpJiZqYnQuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5zZXQodCxlKSx0aGlzfSxlLnByb3RvdHlwZS5tYXhEb21haW5FeHRlbnQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldCh0KTtpZihlLnZhbHVlT2YoKTw9MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIHBvc2l0aXZlIik7dmFyIG49dGhpcy5taW5Eb21haW5FeHRlbnQodCk7aWYobnVsbCE9biYmZS52YWx1ZU9mKCk8bi52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtYXhEb21haW5FeHRlbnQgbXVzdCBiZSBsYXJnZXIgdGhhbiBtaW5Eb21haW5FeHRlbnQgZm9yIHRoZSBzYW1lIFNjYWxlIik7cmV0dXJuIHRoaXMuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHModCkmJmpidC5XaW5kb3cud2FybigiUGFubmluZyBhbmQgem9vbWluZyB3aXRoIGV4dGVudHMgb24gYSBub25saW5lYXIgc2NhbGUgbWF5IGhhdmUgdW5pbnRlbmRlZCBiZWhhdmlvci4iKSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLnNldCh0LGUpLHRoaXN9LGUucHJvdG90eXBlLm1pbkRvbWFpblZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/dGhpcy5fbWluRG9tYWluVmFsdWVzLmdldCh0KToodGhpcy5fbWluRG9tYWluVmFsdWVzLnNldCh0LGUpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhEb21haW5WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMuX21heERvbWFpblZhbHVlcy5nZXQodCk6KHRoaXMuX21heERvbWFpblZhbHVlcy5zZXQodCxlKSx0aGlzKX0sZS5wcm90b3R5cGUuc2V0TWluTWF4RG9tYWluVmFsdWVzVG89ZnVuY3Rpb24odCl7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHQpO3ZhciBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPWVbMV07cmV0dXJuIHRoaXMubWluRG9tYWluVmFsdWUodCxlWzBdKSx0aGlzLm1heERvbWFpblZhbHVlKHQsbiksdGhpc30sZS5wcm90b3R5cGUub25QYW5FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUGFuRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmWm9vbUVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25QYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZQYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLl9QSVhFTFNfUEVSX0xJTkU9MTIwLGV9KSh3YnQuSW50ZXJhY3Rpb24pO0JidC5QYW5ab29tPXFidDt2YXIgWWJ0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShZYnQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBYYnQ9dU8sJGJ0PXNidCxLYnQ9Rmd0LFpidD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fb3ZlckNvbXBvbmVudD0hMSxlLl9wb2ludGVyRW50ZXJDYWxsYmFja3M9bmV3IEtidC5DYWxsYmFja1NldCxlLl9wb2ludGVyTW92ZUNhbGxiYWNrcz1uZXcgS2J0LkNhbGxiYWNrU2V0LGUuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzPW5ldyBLYnQuQ2FsbGJhY2tTZXQsZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlTW91c2VFdmVudCh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVUb3VjaEV2ZW50KG5bdFswXV0saSl9LGV9cmV0dXJuIFhidC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj0kYnQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj0kYnQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbW91c2VEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdG91Y2hEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVQb2ludGVyRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpLGk9dGhpcy5faXNJbnNpZGVDb21wb25lbnQobik7aSYmZT8odGhpcy5fb3ZlckNvbXBvbmVudHx8dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobiksdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSk6dGhpcy5fb3ZlckNvbXBvbmVudCYmdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9vdmVyQ29tcG9uZW50PWkmJmV9LGUucHJvdG90eXBlLm9uUG9pbnRlckVudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBvaW50ZXJFbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlfSkod2J0LkludGVyYWN0aW9uKTtZYnQuUG9pbnRlcj1aYnQsKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU87ZS5fX2V4cG9ydFN0YXIoYWJ0LHQpLGUuX19leHBvcnRTdGFyKEFidCx0KSxlLl9fZXhwb3J0U3RhcihJYnQsdCksZS5fX2V4cG9ydFN0YXIoQmJ0LHQpLGUuX19leHBvcnRTdGFyKFlidCx0KSx0Lnpvb21PdXQ9aXZ0Lnpvb21PdXR9KShvYnQpO3ZhciBKYnQ9e307IShmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLG49dU8saT1GZ3Qscj1CZ3Q7IShmdW5jdGlvbih0KXt0W3QuVkFMVUU9MF09IlZBTFVFIix0W3QuUElYRUw9MV09IlBJWEVMIn0pKGU9dC5Qcm9wZXJ0eU1vZGV8fCh0LlByb3BlcnR5TW9kZT17fSkpO3ZhciBvPShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9ib3hWaXNpYmxlPSExLG4uX2JveEJvdW5kcz17dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6MCx5OjB9fSxuLl94Qm91bmRzTW9kZT1lLlBJWEVMLG4uX3lCb3VuZHNNb2RlPWUuUElYRUwsbi5hZGRDbGFzcygic2VsZWN0aW9uLWJveC1sYXllciIpLG4uX2FkanVzdEJvdW5kc0NhbGxiYWNrPWZ1bmN0aW9uKCl7bi5yZW5kZXIoKX0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5feEV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbi5feUV4dGVudD1bdm9pZCAwLHZvaWQgMF0sbn1yZXR1cm4gbi5fX2V4dGVuZHMocix0KSxyLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9ib3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgic2VsZWN0aW9uLWJveCIsITApLnJlbW92ZSgpLHRoaXMuX2JveEFyZWE9dGhpcy5fYm94LmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInNlbGVjdGlvbi1hcmVhIiwhMCl9LHIucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3dpZHRoOnQsaGVpZ2h0OmV9fSxyLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZ2V0Qm91bmRzKCk6KHRoaXMuX3NldEJvdW5kcyh0KSx0aGlzLl94Qm91bmRzTW9kZT1lLlBJWEVMLHRoaXMuX3lCb3VuZHNNb2RlPWUuUElYRUwsdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUuX3NldEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT17eDpNYXRoLm1pbih0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5taW4odC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX0sbj17eDpNYXRoLm1heCh0LnRvcExlZnQueCx0LmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5tYXgodC50b3BMZWZ0LnksdC5ib3R0b21SaWdodC55KX07dGhpcy5fYm94Qm91bmRzPXt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn19LHIucHJvdG90eXBlLl9nZXRCb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDp0aGlzLl94Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1pbih0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTpudWxsPT10aGlzLl95U2NhbGU/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09ZS5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1heCh0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWUuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5tYXgodGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksdGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVsxXSkpfX19LHIucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7aWYodC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9ib3hWaXNpYmxlKXt2YXIgZT10aGlzLmJvdW5kcygpLG49ZS50b3BMZWZ0Lnkscj1lLmJvdHRvbVJpZ2h0Lnksbz1lLnRvcExlZnQueCxhPWUuYm90dG9tUmlnaHQueDtpZighKGkuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZpLk1hdGguaXNWYWxpZE51bWJlcihyKSYmaS5NYXRoLmlzVmFsaWROdW1iZXIobykmJmkuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6byx5Om4sd2lkdGg6YS1vLGhlaWdodDpyLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LHIucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sci5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3hTY2FsZToobnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9dCx0aGlzLl94Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3lTY2FsZToobnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl95U2NhbGU9dCx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sci5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRYRXh0ZW50KCk6KHRoaXMuX3NldFhFeHRlbnQodCksdGhpcy5feEJvdW5kc01vZGU9ZS5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSxyLnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PWUuVkFMVUU/dGhpcy5feEV4dGVudDpudWxsPT10aGlzLl94U2NhbGU/W3ZvaWQgMCx2b2lkIDBdOlt0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy50b3BMZWZ0LngpLHRoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0LngpXX0sci5wcm90b3R5cGUuX3NldFhFeHRlbnQ9ZnVuY3Rpb24odCl7dGhpcy5feEV4dGVudD10fSxyLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldFlFeHRlbnQoKToodGhpcy5fc2V0WUV4dGVudCh0KSx0aGlzLl95Qm91bmRzTW9kZT1lLlZBTFVFLHRoaXMucmVuZGVyKCksdGhpcyl9LHIucHJvdG90eXBlLl9nZXRZRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3lCb3VuZHNNb2RlPT09ZS5WQUxVRT90aGlzLl95RXh0ZW50Om51bGw9PXRoaXMuX3lTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSxyLnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbih0KXt0aGlzLl95RXh0ZW50PXR9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LHJ9KShyLkNvbXBvbmVudCk7dC5TZWxlY3Rpb25Cb3hMYXllcj1vfSkoSmJ0KSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHJidCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFFidD11Tyx0eHQ9b2J0LGV4dD1GZ3Qsbnh0PWJtdCxpeHQ9aWJ0LHJ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fZGV0ZWN0aW9uUmFkaXVzPTMsZS5fcmVzaXphYmxlPSExLGUuX21vdmFibGU9ITEsZS5faGFzQ29ybmVycz0hMCxlLmFkZENsYXNzKCJkcmFnLWJveC1sYXllciIpLGUuX2RyYWdJbnRlcmFjdGlvbj1uZXcgdHh0LkRyYWcsZS5fc2V0VXBDYWxsYmFja3MoKSxlLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8oZSksZS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBleHQuQ2FsbGJhY2tTZXQsZS5fZHJhZ0NhbGxiYWNrcz1uZXcgZXh0LkNhbGxiYWNrU2V0LGUuX2RyYWdFbmRDYWxsYmFja3M9bmV3IGV4dC5DYWxsYmFja1NldCxlfXJldHVybiBRYnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldFVwQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLG89MCxhPWZ1bmN0aW9uKGEpe3Q9ci5fZ2V0UmVzaXppbmdFZGdlcyhhKTt2YXIgcz1yLmJvdW5kcygpLGw9cy50b3BMZWZ0Lng8PWEueCYmYS54PD1zLmJvdHRvbVJpZ2h0LngmJnMudG9wTGVmdC55PD1hLnkmJmEueTw9cy5ib3R0b21SaWdodC55O3IuYm94VmlzaWJsZSgpJiYodC50b3B8fHQuYm90dG9tfHx0LmxlZnR8fHQucmlnaHQpP289MTpyLmJveFZpc2libGUoKSYmci5tb3ZhYmxlKCkmJmw/bz0yOihvPTAsci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmEsYm90dG9tUmlnaHQ6YX0pLHIuX3hCb3VuZHNNb2RlPT09aXh0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci54U2NhbGUoKSYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoYS54KSxyLnhTY2FsZSgpLmludmVydChhLngpXSksci5feUJvdW5kc01vZGU9PT1peHQuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnlTY2FsZSgpJiZyLl9zZXRZRXh0ZW50KFtyLnlTY2FsZSgpLmludmVydChhLnkpLHIueVNjYWxlKCkuaW52ZXJ0KGEueSldKSxyLnJlbmRlcigpKSxyLmJveFZpc2libGUoITApLHM9ci5ib3VuZHMoKSxlPXt4OnMudG9wTGVmdC54LHk6cy50b3BMZWZ0Lnl9LG49e3g6cy5ib3R0b21SaWdodC54LHk6cy5ib3R0b21SaWdodC55fSxpPWEsci5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3Mocyl9LHM9ZnVuY3Rpb24oYSxzKXtzd2l0Y2gobyl7Y2FzZSAwOm4ueD1zLngsbi55PXMueTticmVhaztjYXNlIDE6dC5ib3R0b20/bi55PXMueTp0LnRvcCYmKGUueT1zLnkpLHQucmlnaHQ/bi54PXMueDp0LmxlZnQmJihlLng9cy54KTticmVhaztjYXNlIDI6dmFyIGw9cy54LWkueCxjPXMueS1pLnk7ZS54Kz1sLGUueSs9YyxuLngrPWwsbi55Kz1jLGk9c31yLl9zZXRCb3VuZHMoe3RvcExlZnQ6ZSxib3R0b21SaWdodDpufSksci5feEJvdW5kc01vZGU9PT1peHQuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnhTY2FsZSgpJiZyLl9zZXRYRXh0ZW50KFtyLnhTY2FsZSgpLmludmVydChlLngpLHIueFNjYWxlKCkuaW52ZXJ0KG4ueCldKSxyLl95Qm91bmRzTW9kZT09PWl4dC5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXIueVNjYWxlKCkmJnIuX3NldFlFeHRlbnQoW3IueVNjYWxlKCkuaW52ZXJ0KGUueSksci55U2NhbGUoKS5pbnZlcnQobi55KV0pLHIucmVuZGVyKCksci5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIuYm91bmRzKCkpfSxsPWZ1bmN0aW9uKHQsZSl7MD09PW8mJnQueD09PWUueCYmdC55PT09ZS55JiZyLmJveFZpc2libGUoITEpLHIuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLmJvdW5kcygpKX07dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KGEpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcocyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChsKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KGEpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHMpLHIuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGwpLHIuX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fYm94LmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KX07aWYodGhpcy5fZGV0ZWN0aW9uRWRnZVQ9bigpLmNsYXNzZWQoImRyYWctZWRnZS10YiIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VCPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlTD1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLWxyIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZVI9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2hhc0Nvcm5lcnMpe3ZhciBpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2JveC5hcHBlbmQoImNpcmNsZSIpLnN0eWxlcyh7b3BhY2l0eTowLGZpbGw6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVGaWxsIn0pfTt0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdGwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItdHIiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCTD1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYmwiLCEwKSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUj1pKCkuY2xhc3NlZCgiZHJhZy1jb3JuZXItYnIiLCEwKX19LGUucHJvdG90eXBlLl9nZXRSZXNpemluZ0VkZ2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXt0b3A6ITEsYm90dG9tOiExLGxlZnQ6ITEscmlnaHQ6ITF9O2lmKCF0aGlzLnJlc2l6YWJsZSgpKXJldHVybiBlO3ZhciBuPXRoaXMuYm91bmRzKCksaT1uLnRvcExlZnQueSxyPW4uYm90dG9tUmlnaHQueSxvPW4udG9wTGVmdC54LGE9bi5ib3R0b21SaWdodC54LHM9dGhpcy5fZGV0ZWN0aW9uUmFkaXVzO3JldHVybiBvLXM8PXQueCYmdC54PD1hK3MmJihlLnRvcD1pLXM8PXQueSYmdC55PD1pK3MsZS5ib3R0b209ci1zPD10LnkmJnQueTw9citzKSxpLXM8PXQueSYmdC55PD1yK3MmJihlLmxlZnQ9by1zPD10LngmJnQueDw9bytzLGUucmlnaHQ9YS1zPD10LngmJnQueDw9YStzKSxlfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2lmKHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5ib3hWaXNpYmxlKCkpe3ZhciBlPXRoaXMuYm91bmRzKCksbj1lLnRvcExlZnQueSxpPWUuYm90dG9tUmlnaHQueSxyPWUudG9wTGVmdC54LG89ZS5ib3R0b21SaWdodC54O3RoaXMuX2RldGVjdGlvbkVkZ2VULmF0dHJzKHt4MTpyLHkxOm4seDI6byx5MjpuLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUIuYXR0cnMoe3gxOnIseTE6aSx4MjpvLHkyOmksInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25FZGdlTC5hdHRycyh7eDE6cix5MTpuLHgyOnIseTI6aSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkVkZ2VSLmF0dHJzKHt4MTpvLHkxOm4seDI6byx5MjppLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5faGFzQ29ybmVycyYmKHRoaXMuX2RldGVjdGlvbkNvcm5lclRMLmF0dHJzKHtjeDpyLGN5Om4scjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJUUi5hdHRycyh7Y3g6byxjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkwuYXR0cnMoe2N4OnIsY3k6aSxyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJSLmF0dHJzKHtjeDpvLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUucmVzaXphYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Jlc2l6YWJsZToodGhpcy5fcmVzaXphYmxlPXQsdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0KSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/KHRoaXMuYWRkQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5hZGRDbGFzcygieS1yZXNpemFibGUiKSk6KHRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIiksdGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKSl9LGUucHJvdG90eXBlLm1vdmFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbW92YWJsZToodGhpcy5fbW92YWJsZT10LHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0TW92YWJsZUNsYXNzPWZ1bmN0aW9uKCl7dGhpcy5tb3ZhYmxlKCkmJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoIm1vdmFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJtb3ZhYmxlIil9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuZHJhZ0ludGVyYWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYWdJbnRlcmFjdGlvbn0sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCgpOih0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCh0KSx0aGlzLl9zZXRSZXNpemFibGVDbGFzc2VzKHRoaXMucmVzaXphYmxlKCkpLHRoaXMuX3NldE1vdmFibGVDbGFzcygpLHRoaXMpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sZS5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2V0U3RhdGUoKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCksdC5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpc30sZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKGUpe3JldHVybiBlPW54dC5jb2VyY2VFeHRlcm5hbEQzKGUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9yZXNldFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5ib3VuZHMoe3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX0pfSxlfSkoSmJ0LlNlbGVjdGlvbkJveExheWVyKTtyYnQuRHJhZ0JveExheWVyPXJ4dDt2YXIgb3h0PXt9LGF4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGF4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHN4dCxseHQ9dU8sY3h0PUZndCx1eHQ9Qmd0OyEoZnVuY3Rpb24odCl7dFt0LlZBTFVFPTBdPSJWQUxVRSIsdFt0LlBJWEVMPTFdPSJQSVhFTCJ9KShzeHR8fChzeHQ9e30pKTt2YXIgaHh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztpZihpLl9tb2RlPXN4dC5WQUxVRSxuIT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTCYmbiE9PWUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTCl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBHdWlkZUxpbmVMYXllciIpO3JldHVybiBpLl9vcmllbnRhdGlvbj1uLGkuX292ZXJmbG93SGlkZGVuPSEwLGkuYWRkQ2xhc3MoImd1aWRlLWxpbmUtbGF5ZXIiKSxpLl9pc1ZlcnRpY2FsKCk/aS5hZGRDbGFzcygidmVydGljYWwiKTppLmFkZENsYXNzKCJob3Jpem9udGFsIiksaS5fc2NhbGVVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe2kuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSxpLnJlbmRlcigpfSxpfXJldHVybiBseHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZ3VpZGVMaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImd1aWRlLWxpbmUiLCEwKX0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLl9pc1ZlcnRpY2FsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPT09ZS5PUklFTlRBVElPTl9WRVJUSUNBTH0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLG51bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX2lzVmVydGljYWwoKT90aGlzLnNjYWxlKCkucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5zY2FsZSgpLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5fZ3VpZGVMaW5lLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpfSksdGhpc30sZS5wcm90b3R5cGUuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWU9ZnVuY3Rpb24oKXtudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl9tb2RlPT09c3h0LlZBTFVFJiZudWxsIT10aGlzLnZhbHVlKCk/dGhpcy5fcGl4ZWxQb3NpdGlvbj10aGlzLnNjYWxlKCkuc2NhbGUodGhpcy52YWx1ZSgpKTp0aGlzLl9tb2RlPT09c3h0LlBJWEVMJiZudWxsIT10aGlzLnBpeGVsUG9zaXRpb24oKSYmKHRoaXMuX3ZhbHVlPXRoaXMuc2NhbGUoKS5pbnZlcnQodGhpcy5waXhlbFBvc2l0aW9uKCkpKSl9LGUucHJvdG90eXBlLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZT1mdW5jdGlvbih0KXt0aGlzLl9waXhlbFBvc2l0aW9uPXQsbnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpLHRoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3NjYWxlO3ZhciBlPXRoaXMuX3NjYWxlO3JldHVybiBudWxsIT1lJiZlLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9zY2FsZT10LHRoaXMuX3NjYWxlLm9uVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3ZhbHVlOih0aGlzLl92YWx1ZT10LHRoaXMuX21vZGU9c3h0LlZBTFVFLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5waXhlbFBvc2l0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb247aWYoIWN4dC5NYXRoLmlzVmFsaWROdW1iZXIodCkpdGhyb3cgbmV3IEVycm9yKCJwaXhlbFBvc2l0aW9uIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIik7cmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb249dCx0aGlzLl9tb2RlPXN4dC5QSVhFTCx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLG51bGwhPXRoaXMuc2NhbGUoKSYmdGhpcy5zY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKX0sZS5PUklFTlRBVElPTl9WRVJUSUNBTD0idmVydGljYWwiLGUuT1JJRU5UQVRJT05fSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsZX0pKHV4dC5Db21wb25lbnQpO2F4dC5HdWlkZUxpbmVMYXllcj1oeHQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShveHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBkeHQ9dU8scHh0PW9idCxmeHQ9Rmd0LG14dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztuLl9kZXRlY3Rpb25SYWRpdXM9MyxuLl9lbmFibGVkPSEwLG4uYWRkQ2xhc3MoImRyYWctbGluZS1sYXllciIpLG4uYWRkQ2xhc3MoImVuYWJsZWQiKSxuLl9kcmFnSW50ZXJhY3Rpb249bmV3IHB4dC5EcmFnLG4uX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyhuKTt2YXIgaT0hMSxyPWZ1bmN0aW9uKHQpeyhmdW5jdGlvbih0KXtyZXR1cm4gbi5faXNWZXJ0aWNhbCgpJiZuLnBpeGVsUG9zaXRpb24oKS1uLmRldGVjdGlvblJhZGl1cygpPD10LngmJnQueDw9bi5waXhlbFBvc2l0aW9uKCkrbi5kZXRlY3Rpb25SYWRpdXMoKXx8IW4uX2lzVmVydGljYWwoKSYmbi5waXhlbFBvc2l0aW9uKCktbi5kZXRlY3Rpb25SYWRpdXMoKTw9dC55JiZ0Lnk8PW4ucGl4ZWxQb3NpdGlvbigpK24uZGV0ZWN0aW9uUmFkaXVzKCl9KSh0KSYmKGk9ITAsbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQocik7dmFyIG89ZnVuY3Rpb24odCxlKXtpJiYobi5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUobi5faXNWZXJ0aWNhbCgpP2UueDplLnkpLG4uX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcobyk7dmFyIGE9ZnVuY3Rpb24odCxlKXtpJiYoaT0hMSxuLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtyZXR1cm4gbi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChhKSxuLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtuLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KHIpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKG8pLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGEpLG4uX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX0sbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBmeHQuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgZnh0LkNhbGxiYWNrU2V0LG4uX2RyYWdFbmRDYWxsYmFja3M9bmV3IGZ4dC5DYWxsYmFja1NldCxufXJldHVybiBkeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSkuY2xhc3NlZCgiZHJhZy1lZGdlIiwhMCl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fZGV0ZWN0aW9uRWRnZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXN9LGUucHJvdG90eXBlLmRldGVjdGlvblJhZGl1cz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM7aWYodDwwKXRocm93IG5ldyBFcnJvcigiZGV0ZWN0aW9uIHJhZGl1cyBjYW5ub3QgYmUgbmVnYXRpdmUuIik7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cz10LHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdD90aGlzLmFkZENsYXNzKCJlbmFibGVkIik6dGhpcy5yZW1vdmVDbGFzcygiZW5hYmxlZCIpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LGV9KShheHQuR3VpZGVMaW5lTGF5ZXIpO294dC5EcmFnTGluZUxheWVyPW14dDt2YXIgZ3h0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShneHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBfeHQ9dU87ZnVuY3Rpb24geXh0KHQsZSxuKXt2YXIgaT17fTtpZih2b2lkIDAhPT1uKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKWlbbltyXV09bltyLTFdO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcixvPXQuc2NhbGUobik7aWYoIWUpcmV0dXJuIG87dmFyIGE9dm9pZCAwPT09aVtuXT92b2lkIDA6dC5zY2FsZShpW25dKTtyZXR1cm4gdm9pZCAwIT09YSYmKHI9YSsoby1hKS8yKSxyfX12YXIgdnh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLmFkZENsYXNzKCJncmlkbGluZXMiKSxpLl94U2NhbGU9ZSxpLl95U2NhbGU9bixpLl9yZW5kZXJDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gaS5yZW5kZXIoKX0saS5feFNjYWxlJiZpLl94U2NhbGUub25VcGRhdGUoaS5fcmVuZGVyQ2FsbGJhY2spLGkuX3lTY2FsZSYmaS5feVNjYWxlLm9uVXBkYXRlKGkuX3JlbmRlckNhbGxiYWNrKSxpfXJldHVybiBfeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuYmV0d2Vlblg9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fYmV0d2Vlblg6KHQhPT10aGlzLl9iZXR3ZWVuWCYmKHRoaXMuX2JldHdlZW5YPXQsdGhpcy5yZW5kZXIoKSksdGhpcyl9LGUucHJvdG90eXBlLmJldHdlZW5ZPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMuX2JldHdlZW5ZOih0IT09dGhpcy5fYmV0d2VlblkmJih0aGlzLl9iZXR3ZWVuWT10LHRoaXMucmVuZGVyKCkpLHRoaXMpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl94U2NhbGUmJnRoaXMuX3hTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHRoaXMuX3lTY2FsZSYmdGhpcy5feVNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdGhpc30sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5feExpbmVzQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoIngtZ3JpZGxpbmVzIiwhMCksdGhpcy5feUxpbmVzQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInktZ3JpZGxpbmVzIiwhMCl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fcmVkcmF3WExpbmVzKCksdGhpcy5fcmVkcmF3WUxpbmVzKCksdGhpc30sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSxudWxsIT10aGlzLl94U2NhbGUmJnRoaXMuX3hTY2FsZS5yYW5nZShbMCx0aGlzLndpZHRoKCldKSxudWxsIT10aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSksdGhpc30sZS5wcm90b3R5cGUuX3JlZHJhd1hMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3hTY2FsZSl7dmFyIHQ9dGhpcy5iZXR3ZWVuWCgpLGU9dGhpcy5feFNjYWxlLnRpY2tzKCkuc2xpY2UodD8xOjApLG49dGhpcy5feExpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoZSk7bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKG4pLmF0dHIoIngxIix5eHQodGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MSIsMCkuYXR0cigieDIiLHl4dCh0aGlzLl94U2NhbGUsdCx0aGlzLl94U2NhbGUudGlja3MoKSkpLmF0dHIoInkyIix0aGlzLmhlaWdodCgpKS5jbGFzc2VkKCJiZXR3ZWVubGluZSIsdCkuY2xhc3NlZCgiemVyb2xpbmUiLChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXR9KSksbi5leGl0KCkucmVtb3ZlKCl9fSxlLnByb3RvdHlwZS5fcmVkcmF3WUxpbmVzPWZ1bmN0aW9uKCl7aWYodGhpcy5feVNjYWxlKXt2YXIgdD10aGlzLmJldHdlZW5ZKCksZT10aGlzLl95U2NhbGUudGlja3MoKS5zbGljZSh0PzE6MCksbj10aGlzLl95TGluZXNDb250YWluZXIuc2VsZWN0QWxsKCJsaW5lIikuZGF0YShlKTtuLmVudGVyKCkuYXBwZW5kKCJsaW5lIikubWVyZ2UobikuYXR0cigieDEiLDApLmF0dHIoInkxIix5eHQodGhpcy5feVNjYWxlLHQsdGhpcy5feVNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ4MiIsdGhpcy53aWR0aCgpKS5hdHRyKCJ5MiIseXh0KHRoaXMuX3lTY2FsZSx0LHRoaXMuX3lTY2FsZS50aWNrcygpKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLG4uZXhpdCgpLnJlbW92ZSgpfX0sZX0pKEJndC5Db21wb25lbnQpO2d4dC5HcmlkbGluZXM9dnh0O3ZhciBieHQ9e30seHh0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoeHh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgd3h0PXVPLFN4dD1ibXQsTXh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9kZXRhY2hDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5yZW1vdmUodCl9LGV9cmV0dXJuIHd4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gZT1TeHQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFuY2hvcihuLmVsZW1lbnQoKSl9KSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbmRlcigpfSkpLHRoaXN9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoImhhcygpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKX0sZS5wcm90b3R5cGUuX2Fkb3B0QW5kQW5jaG9yPWZ1bmN0aW9uKHQpe3QucGFyZW50KHRoaXMpLHQub25EZXRhY2godGhpcy5fZGV0YWNoQ2FsbGJhY2spLHRoaXMuX2lzQW5jaG9yZWQmJnQuYW5jaG9yKHRoaXMuZWxlbWVudCgpKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhhcyh0KSYmKHQub2ZmRGV0YWNoKHRoaXMuX2RldGFjaENhbGxiYWNrKSx0aGlzLl9yZW1vdmUodCksdC5kZXRhY2goKSx0aGlzLnJlZHJhdygpKSx0aGlzfSxlLnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIl9mb3JFYWNoKCkgaXMgbm90IGltcGxlbWVudGVkIG9uIENvbXBvbmVudENvbnRhaW5lciIpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2ZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0pKX0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW52YWxpZGF0ZUNhY2hlKCl9KSl9LGV9KShCZ3QuQ29tcG9uZW50KTt4eHQuQ29tcG9uZW50Q29udGFpbmVyPU14dCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGJ4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEV4dD11TyxUeHQ9Rmd0LEN4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT1bXSk7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9jb21wb25lbnRzPVtdLG4uYWRkQ2xhc3MoImNvbXBvbmVudC1ncm91cCIpLGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBwZW5kKHQpfSkpLG59cmV0dXJuIEV4dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLmNvbXBvbmVudHMoKS5mb3JFYWNoKHQpfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuaW5kZXhPZih0KT49MH0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9jb21wb25lbnRzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVxdWVzdGVkU3BhY2UodCxlKX0pKTtyZXR1cm57bWluV2lkdGg6VHh0Lk1hdGgubWF4KG4sKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1pbldpZHRofSksMCksbWluSGVpZ2h0OlR4dC5NYXRoLm1heChuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5IZWlnaHR9KSwwKX19LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3ZhciByPXRoaXM7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNvbXB1dGVMYXlvdXQoe3g6MCx5OjB9LHIud2lkdGgoKSxyLmhlaWdodCgpKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LGUpe3JldHVybnt3aWR0aDp0LGhlaWdodDplfX0sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5maXhlZFdpZHRoKCl9KSl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpeGVkSGVpZ2h0KCl9KSl9LGUucHJvdG90eXBlLmNvbXBvbmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5zbGljZSgpfSxlLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHRoaXMuaGFzKHQpfHwodC5kZXRhY2goKSx0aGlzLl9jb21wb25lbnRzLnB1c2godCksdGhpcy5fYWRvcHRBbmRBbmNob3IodCksdGhpcy5yZWRyYXcoKSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb21wb25lbnRzLmluZGV4T2YodCk7cmV0dXJuIGU+PTAmJih0aGlzLl9jb21wb25lbnRzLnNwbGljZShlLDEpLCEwKX0sZX0pKHh4dC5Db21wb25lbnRDb250YWluZXIpO2J4dC5Hcm91cD1DeHQ7dmFyIEF4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoQXh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIga3h0PXVPLEx4dD1JbXQsUHh0PUxfdCxOeHQ9Z3l0LEl4dD1GZ3QsUnh0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztpZihuLl90ZXh0UGFkZGluZz01LG51bGw9PWUpdGhyb3cgbmV3IEVycm9yKCJJbnRlcnBvbGF0ZWRDb2xvckxlZ2VuZCByZXF1aXJlcyBhIGludGVycG9sYXRlZENvbG9yU2NhbGUiKTtyZXR1cm4gbi5fc2NhbGU9ZSxuLl9yZWRyYXdDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gbi5yZWRyYXcoKX0sbi5fc2NhbGUub25VcGRhdGUobi5fcmVkcmF3Q2FsbGJhY2spLG4uX2Zvcm1hdHRlcj1OeHQuZ2VuZXJhbCgpLG4uX29yaWVudGF0aW9uPSJob3Jpem9udGFsIixuLl9leHBhbmRzPSExLG4uYWRkQ2xhc3MoImxlZ2VuZCIpLG4uYWRkQ2xhc3MoImludGVycG9sYXRlZC1jb2xvci1sZWdlbmQiKSxufXJldHVybiBreHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfSxlLnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5leHBhbmRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2V4cGFuZHM6KHRoaXMuX2V4cGFuZHM9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLl9lbnN1cmVPcmllbnRhdGlvbj1mdW5jdGlvbih0KXtpZigiaG9yaXpvbnRhbCI9PT0odD10LnRvTG93ZXJDYXNlKCkpfHwibGVmdCI9PT10fHwicmlnaHQiPT09dClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoJyInK3QrJyIgaXMgbm90IGEgdmFsaWQgb3JpZW50YXRpb24gZm9yIEludGVycG9sYXRlZENvbG9yTGVnZW5kJyl9LGUucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX29yaWVudGF0aW9uOih0aGlzLl9vcmllbnRhdGlvbj1lLl9lbnN1cmVPcmllbnRhdGlvbih0KSx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZXhwYW5kcygpfHx0aGlzLl9pc1ZlcnRpY2FsKCl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZXhwYW5kcygpfHwhdGhpcy5faXNWZXJ0aWNhbCgpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrcz1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD1lLl9ERUZBVUxUX05VTV9TV0FUQ0hFUyk7dmFyIG49dGhpcy5fc2NhbGUuZG9tYWluKCk7aWYoMT09PXQpcmV0dXJuW25bMF1dO2Zvcih2YXIgaT0oblsxXS1uWzBdKS8odC0xKSxyPVtdLG89MDtvPHQ7bysrKXIucHVzaChuWzBdK2kqbyk7cmV0dXJuIHJ9LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3N3YXRjaENvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzd2F0Y2gtY29udGFpbmVyIiwhMCksdGhpcy5fc3dhdGNoQm91bmRpbmdCb3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic3dhdGNoLWJvdW5kaW5nLWJveCIsITApLHRoaXMuX2xvd2VyTGFiZWw9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9MQUJFTF9DTEFTUywhMCksdGhpcy5fdXBwZXJMYWJlbD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKGUuTEVHRU5EX0xBQkVMX0NMQVNTLCEwKTt2YXIgbj1uZXcgTHh0LlN2Z0NvbnRleHQodGhpcy5jb250ZW50KCkubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgTHh0Lk1lYXN1cmVyKG4pLHRoaXMuX3dyYXBwZXI9bmV3IEx4dC5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgTHh0LldyaXRlcih0aGlzLl9tZWFzdXJlcixuLHRoaXMuX3dyYXBwZXIpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LG4pe3ZhciBpLHIsbz10aGlzLGE9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxzPWEsbD10aGlzLl9zY2FsZS5kb21haW4oKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvLl9tZWFzdXJlci5tZWFzdXJlKG8uX2Zvcm1hdHRlcih0KSkud2lkdGh9KSksYz1lLl9ERUZBVUxUX05VTV9TV0FUQ0hFUztpZih0aGlzLl9pc1ZlcnRpY2FsKCkpe3ZhciB1PUl4dC5NYXRoLm1heChsLDApO3I9cythK3RoaXMuX3RleHRQYWRkaW5nK3UrdGhpcy5fdGV4dFBhZGRpbmcsaT1jKmF9ZWxzZSBpPXMrYStzLHI9dGhpcy5fdGV4dFBhZGRpbmcrbFswXStjKmErbFsxXSt0aGlzLl90ZXh0UGFkZGluZztyZXR1cm57bWluV2lkdGg6cixtaW5IZWlnaHQ6aX19LGUucHJvdG90eXBlLl9pc1ZlcnRpY2FsPWZ1bmN0aW9uKCl7cmV0dXJuImhvcml6b250YWwiIT09dGhpcy5fb3JpZW50YXRpb259LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3ZhciBuLGkscixvLGEscyxsPXRoaXMuX3NjYWxlLmRvbWFpbigpLGM9dGhpcy5fZm9ybWF0dGVyKGxbMF0pLHU9dGhpcy5fbWVhc3VyZXIubWVhc3VyZShjKS53aWR0aCxoPXRoaXMuX2Zvcm1hdHRlcihsWzFdKSxkPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoaCkud2lkdGgscD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LGY9dGhpcy5fdGV4dFBhZGRpbmcsbT17eDowLHk6MH0sZz17eDowLHk6MH0sXz17eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIix0ZXh0Um90YXRpb246MH0seT17eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIix0ZXh0Um90YXRpb246MH0sdj17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfTtpZih0aGlzLl9pc1ZlcnRpY2FsKCkpe3M9TWF0aC5mbG9vcih0aGlzLmhlaWdodCgpKTt2YXIgYj1NYXRoLm1heCh1LGQpO2E9KHRoaXMud2lkdGgoKS1iLTIqdGhpcy5fdGV4dFBhZGRpbmcpLzIsbj1NYXRoLm1heCh0aGlzLndpZHRoKCktYS0yKmYtYiwwKSxpPTEsbz1mdW5jdGlvbih0LG4pe3JldHVybiBlLmhlaWdodCgpLShuKzEpfSx5LnlBbGlnbj0idG9wIixtLnk9MCxfLnlBbGlnbj0iYm90dG9tIixnLnk9MCwibGVmdCI9PT10aGlzLl9vcmllbnRhdGlvbj8ocj1mdW5jdGlvbih0LGUpe3JldHVybiBmK2IrZn0seS54QWxpZ249InJpZ2h0IixtLng9LShhK24rZiksXy54QWxpZ249InJpZ2h0IixnLng9LShhK24rZikpOihyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGF9LHkueEFsaWduPSJsZWZ0IixtLng9YStuK2YsXy54QWxpZ249ImxlZnQiLGcueD1hK24rZiksdi53aWR0aD1uLHYuaGVpZ2h0PXMqaX1lbHNlIGE9TWF0aC5tYXgoZiwodGhpcy5oZWlnaHQoKS1wKS8yKSxzPU1hdGgubWF4KE1hdGguZmxvb3IodGhpcy53aWR0aCgpLTQqZi11LWQpLDApLG49MSxpPU1hdGgubWF4KHRoaXMuaGVpZ2h0KCktMiphLDApLHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5mbG9vcih1KzIqZikrZX0sbz1mdW5jdGlvbih0LGUpe3JldHVybiBhfSx5LnhBbGlnbj0icmlnaHQiLG0ueD0tZixfLnhBbGlnbj0ibGVmdCIsZy54PWYsdi55PWEsdi53aWR0aD1zKm4sdi5oZWlnaHQ9aTt2Lng9cihudWxsLDApLHRoaXMuX3VwcGVyTGFiZWwudGV4dCgiIiksdGhpcy5fd3JpdGVyLndyaXRlKGgsdGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkseSx0aGlzLl91cHBlckxhYmVsLm5vZGUoKSksdGhpcy5fdXBwZXJMYWJlbC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIittLngrIiwgIittLnkrIikiKSx0aGlzLl9sb3dlckxhYmVsLnRleHQoIiIpLHRoaXMuX3dyaXRlci53cml0ZShjLHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpLF8sdGhpcy5fbG93ZXJMYWJlbC5ub2RlKCkpLHRoaXMuX2xvd2VyTGFiZWwuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZy54KyIsICIrZy55KyIpIiksdGhpcy5fc3dhdGNoQm91bmRpbmdCb3guYXR0cnModik7dmFyIHg9dGhpcy5fZ2VuZXJhdGVUaWNrcyhzKSx3PXRoaXMuX3N3YXRjaENvbnRhaW5lci5zZWxlY3RBbGwoInJlY3Quc3dhdGNoIikuZGF0YSh4KSxTPXcuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzd2F0Y2giLCEwKSxNPXcubWVyZ2UoUyk7cmV0dXJuIHcuZXhpdCgpLnJlbW92ZSgpLE0uYXR0cnMoe2ZpbGw6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5fc2NhbGUuc2NhbGUodCl9LHdpZHRoOm4saGVpZ2h0OmkseDpyLHk6bywic2hhcGUtcmVuZGVyaW5nIjoiY3Jpc3BFZGdlcyJ9KSxQeHQuQUREX1RJVExFX0VMRU1FTlRTJiZTLmFwcGVuZCgidGl0bGUiKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZm9ybWF0dGVyKHQpfSkpLHRoaXN9LGUuX0RFRkFVTFRfTlVNX1NXQVRDSEVTPTExLGUuTEVHRU5EX0xBQkVMX0NMQVNTPSJsZWdlbmQtbGFiZWwiLGV9KShCZ3QuQ29tcG9uZW50KTtBeHQuSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQ9Unh0O3ZhciBPeHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KE94dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHp4dD11TyxEeHQ9SW10LEJ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PWUmJihlPSIiKSx2b2lkIDA9PT1uJiYobj0wKTt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3MoImxhYmVsIiksaS50ZXh0KGUpLGkuYW5nbGUobiksaS54QWxpZ25tZW50KCJjZW50ZXIiKS55QWxpZ25tZW50KCJjZW50ZXIiKSxpLl9wYWRkaW5nPTAsaX1yZXR1cm4genh0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbWVhc3VyZXIubWVhc3VyZSh0aGlzLl90ZXh0KTtyZXR1cm57bWluV2lkdGg6KDA9PT10aGlzLmFuZ2xlKCk/bi53aWR0aDpuLmhlaWdodCkrMip0aGlzLnBhZGRpbmcoKSxtaW5IZWlnaHQ6KDA9PT10aGlzLmFuZ2xlKCk/bi5oZWlnaHQ6bi53aWR0aCkrMip0aGlzLnBhZGRpbmcoKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3RleHRDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIik7dmFyIGU9bmV3IER4dC5TdmdDb250ZXh0KHRoaXMuX3RleHRDb250YWluZXIubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgRHh0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JhcHBlcj1uZXcgRHh0LldyYXBwZXIsdGhpcy5fd3JpdGVyPW5ldyBEeHQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLGUsdGhpcy5fd3JhcHBlciksdGhpcy50ZXh0KHRoaXMuX3RleHQpfSxlLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RleHQ7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiTGFiZWwudGV4dCgpIG9ubHkgdGFrZXMgc3RyaW5ncyBhcyBpbnB1dCIpO3JldHVybiB0aGlzLl90ZXh0PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5hbmdsZT1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9hbmdsZTtpZigodCU9MzYwKT4xODA/dC09MzYwOnQ8LTE4MCYmKHQrPTM2MCksLTkwIT09dCYmMCE9PXQmJjkwIT09dCl0aHJvdyBuZXcgRXJyb3IodCsiIGlzIG5vdCBhIHZhbGlkIGFuZ2xlIGZvciBMYWJlbCIpO3JldHVybiB0aGlzLl9hbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUucGFkZGluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wYWRkaW5nO2lmKCh0PSt0KTwwKXRocm93IG5ldyBFcnJvcih0KyIgaXMgbm90IGEgdmFsaWQgcGFkZGluZyB2YWx1ZS4gQ2Fubm90IGJlIGxlc3MgdGhhbiAwLiIpO3JldHVybiB0aGlzLl9wYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBlPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUodGhpcy5fdGV4dCksbj1NYXRoLm1heChNYXRoLm1pbigodGhpcy5oZWlnaHQoKS1lLmhlaWdodCkvMix0aGlzLnBhZGRpbmcoKSksMCksaT1NYXRoLm1heChNYXRoLm1pbigodGhpcy53aWR0aCgpLWUud2lkdGgpLzIsdGhpcy5wYWRkaW5nKCkpLDApO3RoaXMuX3RleHRDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCIrbisiKSIpO3ZhciByPXRoaXMud2lkdGgoKS0yKmksbz10aGlzLmhlaWdodCgpLTIqbixhPXt4QWxpZ246dGhpcy54QWxpZ25tZW50KCkseUFsaWduOnRoaXMueUFsaWdubWVudCgpLHRleHRSb3RhdGlvbjp0aGlzLmFuZ2xlKCl9O3JldHVybiB0aGlzLl93cml0ZXIud3JpdGUodGhpcy5fdGV4dCxyLG8sYSksdGhpc30sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKEJndC5Db21wb25lbnQpO094dC5MYWJlbD1CeHQ7dmFyIEh4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLGkpe3ZhciByPXQuY2FsbCh0aGlzLG4saSl8fHRoaXM7cmV0dXJuIHIuYWRkQ2xhc3MoZS5USVRMRV9MQUJFTF9DTEFTUykscn1yZXR1cm4genh0Ll9fZXh0ZW5kcyhlLHQpLGUuVElUTEVfTEFCRUxfQ0xBU1M9InRpdGxlLWxhYmVsIixlfSkoQnh0KTtPeHQuVGl0bGVMYWJlbD1IeHQ7dmFyIEZ4dD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLGkpe3ZhciByPXQuY2FsbCh0aGlzLG4saSl8fHRoaXM7cmV0dXJuIHIuYWRkQ2xhc3MoZS5BWElTX0xBQkVMX0NMQVNTKSxyfXJldHVybiB6eHQuX19leHRlbmRzKGUsdCksZS5BWElTX0xBQkVMX0NMQVNTPSJheGlzLWxhYmVsIixlfSkoQnh0KTtPeHQuQXhpc0xhYmVsPUZ4dDt2YXIgVnh0PXt9LFV4dD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFV4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGp4dD1FZHQ7VXh0LmNpcmNsZT1mdW5jdGlvbiBHeHQoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGp4dC5zeW1ib2woKS50eXBlKGp4dC5zeW1ib2xDaXJjbGUpLnNpemUoTWF0aC5QSSpNYXRoLnBvdyh0LzIsMikpfX0sVXh0LnNxdWFyZT1mdW5jdGlvbiBXeHQoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGp4dC5zeW1ib2woKS50eXBlKGp4dC5zeW1ib2xTcXVhcmUpLnNpemUoTWF0aC5wb3codCwyKSl9fSxVeHQuY3Jvc3M9ZnVuY3Rpb24gcXh0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBqeHQuc3ltYm9sKCkudHlwZShqeHQuc3ltYm9sQ3Jvc3MpLnNpemUoNS85Kk1hdGgucG93KHQsMikpfX0sVXh0LmRpYW1vbmQ9ZnVuY3Rpb24gWXh0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBqeHQuc3ltYm9sKCkudHlwZShqeHQuc3ltYm9sRGlhbW9uZCkuc2l6ZShNYXRoLnRhbihNYXRoLlBJLzYpKk1hdGgucG93KHQsMikvMil9fSxVeHQudHJpYW5nbGU9ZnVuY3Rpb24gWHh0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBqeHQuc3ltYm9sKCkudHlwZShqeHQuc3ltYm9sVHJpYW5nbGUpLnNpemUoTWF0aC5zcXJ0KDMpKk1hdGgucG93KHQvMiwyKSl9fSxVeHQuc3Rhcj1mdW5jdGlvbiAkeHQoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGp4dC5zeW1ib2woKS50eXBlKGp4dC5zeW1ib2xTdGFyKS5zaXplKC44OTA4MTMwOTE1MjkyODUyKk1hdGgucG93KHQvMiwyKSl9fTt2YXIgS3h0PTMqKDEvTWF0aC5zcXJ0KDEyKS8yKzEpO1V4dC53eWU9ZnVuY3Rpb24gWnh0KCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBqeHQuc3ltYm9sKCkudHlwZShqeHQuc3ltYm9sV3llKS5zaXplKEt4dCpNYXRoLnBvdyh0LzIuNCwyKSl9fSwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ4dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEp4dD11TyxReHQ9RWR0LHR3dD1JbXQsZXd0PUxfdCxud3Q9Z3l0LGl3dD1VeHQscnd0PUZndCxvd3Q9Qmd0LGF3dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT10JiYodD1bXSksdm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09biYmKG49MS8wKSx0aGlzLmNvbHVtbnM9dCx0aGlzLmJvdHRvbVBhZGRpbmc9ZSx0aGlzLm1heFdpZHRoPW59cmV0dXJuIHQucHJvdG90eXBlLmFkZENvbHVtbj1mdW5jdGlvbih0KXt2YXIgZT10LndpZHRoLG49dGhpcy5nZXRXaWR0aEF2YWlsYWJsZSgpO3Qud2lkdGg9TWF0aC5taW4obixlKSx0aGlzLmNvbHVtbnMucHVzaCh0KX0sdC5wcm90b3R5cGUuZ2V0Qm91bmRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLmNvbHVtbnNbdF0sbj0wLGk9MDtpPHQ7aSsrKW4rPXRoaXMuY29sdW1uc1tpXS53aWR0aDtyZXR1cm57dG9wTGVmdDp7eDpuLHk6MH0sYm90dG9tUmlnaHQ6e3g6bitlLndpZHRoLHk6ZS5oZWlnaHR9fX0sdC5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHJ3dC5NYXRoLm1heCh0aGlzLmNvbHVtbnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5oZWlnaHR9KSksMCkrdGhpcy5ib3R0b21QYWRkaW5nfSx0LnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLmNvbHVtbnMucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2Uud2lkdGh9KSwwKSx0aGlzLm1heFdpZHRoKX0sdC5wcm90b3R5cGUuZ2V0V2lkdGhBdmFpbGFibGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFdpZHRoKCk7cmV0dXJuIE1hdGgubWF4KHRoaXMubWF4V2lkdGgtdCwwKX0sdH0pKCksc3d0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7dm9pZCAwPT09dCYmKHQ9MS8wKSx2b2lkIDA9PT1lJiYoZT0xLzApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPVtdKSx0aGlzLm1heFdpZHRoPXQsdGhpcy5tYXhIZWlnaHQ9ZSx0aGlzLnBhZGRpbmc9bix0aGlzLnJvd3M9aX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkUm93PWZ1bmN0aW9uKHQpe3QubWF4V2lkdGg9dGhpcy5tYXhXaWR0aC0yKnRoaXMucGFkZGluZyx0aGlzLnJvd3MucHVzaCh0KX0sdC5wcm90b3R5cGUuZ2V0Q29sdW1uQm91bmRzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRSb3dCb3VuZHModCksaT10aGlzLnJvd3NbdF0uZ2V0Qm91bmRzKGUpO3JldHVybiBpLnRvcExlZnQueCs9bi50b3BMZWZ0LngsaS5ib3R0b21SaWdodC54Kz1uLnRvcExlZnQueCxpLnRvcExlZnQueSs9bi50b3BMZWZ0LnksaS5ib3R0b21SaWdodC55Kz1uLnRvcExlZnQueSxpfSx0LnByb3RvdHlwZS5nZXRSb3dCb3VuZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMucGFkZGluZyxuPXRoaXMucGFkZGluZyxpPTA7aTx0O2krKyluKz10aGlzLnJvd3NbaV0uZ2V0SGVpZ2h0KCk7cmV0dXJue3RvcExlZnQ6e3g6ZSx5Om59LGJvdHRvbVJpZ2h0Ont4OmUrdGhpcy5yb3dzW3RdLmdldFdpZHRoKCkseTpuK3RoaXMucm93c1t0XS5nZXRIZWlnaHQoKX19fSx0LnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5yb3dzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLmdldEhlaWdodCgpfSksMCkrMip0aGlzLnBhZGRpbmcsdGhpcy5tYXhIZWlnaHQpfSx0LnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbihyd3QuTWF0aC5tYXgodGhpcy5yb3dzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0V2lkdGgoKX0pKSwwKSsyKnRoaXMucGFkZGluZyx0aGlzLm1heFdpZHRoKX0sdH0pKCksbHd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztpZihuLl9wYWRkaW5nPTUsbi5fcm93Qm90dG9tUGFkZGluZz0zLG4uYWRkQ2xhc3MoImxlZ2VuZCIpLG4ubWF4RW50cmllc1BlclJvdygxKSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiTGVnZW5kIHJlcXVpcmVzIGEgY29sb3JTY2FsZSIpO3JldHVybiBuLl9jb2xvclNjYWxlPWUsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX2NvbG9yU2NhbGUub25VcGRhdGUobi5fcmVkcmF3Q2FsbGJhY2spLG4uX2Zvcm1hdHRlcj1ud3QuaWRlbnRpdHkoKSxuLm1heExpbmVzUGVyRW50cnkoMSksbi54QWxpZ25tZW50KCJyaWdodCIpLnlBbGlnbm1lbnQoInRvcCIpLG4uY29tcGFyYXRvcigoZnVuY3Rpb24odCxlKXt2YXIgaT1uLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fZm9ybWF0dGVyKHQpfSkpO3JldHVybiBpLmluZGV4T2YodCktaS5pbmRleE9mKGUpfSkpLG4uX3N5bWJvbEZhY3RvcnlBY2Nlc3Nvcj1mdW5jdGlvbigpe3JldHVybiBpd3QuY2lyY2xlKCl9LG4uX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj1mdW5jdGlvbigpe3JldHVybiAxfSxufXJldHVybiBKeHQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApO24uYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9FTlRSWV9DTEFTUywhMCkuYXBwZW5kKCJ0ZXh0Iik7dmFyIGk9bmV3IHR3dC5TdmdDb250ZXh0KG4ubm9kZSgpLG51bGwsZXd0LkFERF9USVRMRV9FTEVNRU5UUyk7dGhpcy5fbWVhc3VyZXI9bmV3IHR3dC5DYWNoZU1lYXN1cmVyKGkpLHRoaXMuX3dyYXBwZXI9KG5ldyB0d3QuV3JhcHBlcikubWF4TGluZXModGhpcy5tYXhMaW5lc1BlckVudHJ5KCkpLHRoaXMuX3dyaXRlcj1uZXcgdHd0LldyaXRlcih0aGlzLl9tZWFzdXJlcixpLHRoaXMuX3dyYXBwZXIpfSxlLnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhFbnRyaWVzUGVyUm93PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heEVudHJpZXNQZXJSb3c6KHRoaXMuX21heEVudHJpZXNQZXJSb3c9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhMaW5lc1BlckVudHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heExpbmVzUGVyRW50cnk6KHRoaXMuX21heExpbmVzUGVyRW50cnk9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhXaWR0aDoodGhpcy5fbWF4V2lkdGg9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5jb21wYXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2NvbXBhcmF0b3I6KHRoaXMuX2NvbXBhcmF0b3I9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5jb2xvclNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10Pyh0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayksdGhpcy5fY29sb3JTY2FsZT10LHRoaXMuX2NvbG9yU2NhbGUub25VcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMucmVkcmF3KCksdGhpcyk6dGhpcy5fY29sb3JTY2FsZX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayl9LGUucHJvdG90eXBlLl9idWlsZExlZ2VuZFRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQscj1uZXcgc3d0KHQsZSx0aGlzLl9wYWRkaW5nKSxvPXRoaXMuX2NvbG9yU2NhbGUuZG9tYWluKCkuc2xpY2UoKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBuLl9jb21wYXJhdG9yKG4uX2Zvcm1hdHRlcih0KSxuLl9mb3JtYXR0ZXIoZSkpfSkpLGE9bmV3IGF3dDtyZXR1cm4gci5hZGRSb3coYSksYS5ib3R0b21QYWRkaW5nPXRoaXMuX3Jvd0JvdHRvbVBhZGRpbmcsby5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2EuY29sdW1ucy5sZW5ndGgvMj09PW4ubWF4RW50cmllc1BlclJvdygpJiYoKGE9bmV3IGF3dCkuYm90dG9tUGFkZGluZz1uLl9yb3dCb3R0b21QYWRkaW5nLHIuYWRkUm93KGEpKTt2YXIgbz1hLmdldFdpZHRoQXZhaWxhYmxlKCkscz1uLl9mb3JtYXR0ZXIodCksbD1uLl9tZWFzdXJlci5tZWFzdXJlKHMpLndpZHRoO28taS1sPDAmJmEuY29sdW1ucy5sZW5ndGg+MSYmKChhPW5ldyBhd3QpLmJvdHRvbVBhZGRpbmc9bi5fcm93Qm90dG9tUGFkZGluZyxyLmFkZFJvdyhhKSksYS5hZGRDb2x1bW4oe3dpZHRoOmksaGVpZ2h0OmksZGF0YTp7bmFtZTp0LHR5cGU6InN5bWJvbCJ9fSksbz1hLmdldFdpZHRoQXZhaWxhYmxlKCk7dmFyIGM9TWF0aC5taW4obyxsKTtuLl93cmFwcGVyLm1heExpbmVzKG4ubWF4TGluZXNQZXJFbnRyeSgpKTt2YXIgdT1uLl93cmFwcGVyLndyYXAocyxuLl9tZWFzdXJlcixjKS5ub0xpbmVzO2EuYWRkQ29sdW1uKHt3aWR0aDpjLGhlaWdodDp1KmksZGF0YTp7bmFtZTp0LHR5cGU6InRleHQifX0pfSkpLHJ9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYnVpbGRMZWdlbmRUYWJsZShyd3QuTWF0aC5taW4oW3RoaXMubWF4V2lkdGgoKSx0XSx0KSxlKTtyZXR1cm57bWluSGVpZ2h0Om4uZ2V0SGVpZ2h0KCksbWluV2lkdGg6bi5nZXRXaWR0aCgpfX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO2lmKCF0aGlzLl9pc1NldHVwKXJldHVybltdO3ZhciBpPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpO3JldHVybiBpLnJvd3MucmVkdWNlKChmdW5jdGlvbihyLG8sYSl7aWYoMCE9PXIubGVuZ3RoKXJldHVybiByO3ZhciBzPWkuZ2V0Um93Qm91bmRzKGEpO3JldHVybiByd3QuTWF0aC53aXRoaW4odCxzKT9vLmNvbHVtbnMucmVkdWNlKChmdW5jdGlvbihyLG8scyl7dmFyIGw9aS5nZXRDb2x1bW5Cb3VuZHMoYSxzKTtpZihyd3QuTWF0aC53aXRoaW4odCxsKSl7dmFyIGM9bi5jb250ZW50KCkuc2VsZWN0QWxsKCIuIitlLkxFR0VORF9ST1dfQ0xBU1MpLm5vZGVzKClbYV0sdT1ReHQuc2VsZWN0KGMpLnNlbGVjdEFsbCgiLiIrZS5MRUdFTkRfRU5UUllfQ0xBU1MpLm5vZGVzKClbTWF0aC5mbG9vcihzLzIpXSxoPVF4dC5zZWxlY3QodSkuc2VsZWN0KCIuIitlLkxFR0VORF9TWU1CT0xfQ0xBU1MpLGQ9cnd0LkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoUXh0LnNlbGVjdChjKSkscD1yd3QuRE9NLmdldFRyYW5zbGF0ZVZhbHVlcyhoKTtyZXR1cm5be2JvdW5kczpyd3QuRE9NLmVsZW1lbnRCQm94KFF4dC5zZWxlY3QoYykpLGRhdHVtOm8uZGF0YS5uYW1lLHBvc2l0aW9uOnt4OmRbMF0rcFswXSx5OmRbMV0rcFsxXX0sc2VsZWN0aW9uOlF4dC5zZWxlY3QodSksY29tcG9uZW50Om59XX1yZXR1cm4gcn0pLHIpOnJ9KSxbXSl9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgbj10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTt2YXIgaT10aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoImcuIitlLkxFR0VORF9ST1dfQ0xBU1MpLmRhdGEobi5yb3dzKSxyPWkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKGUuTEVHRU5EX1JPV19DTEFTUywhMCkubWVyZ2UoaSk7aS5leGl0KCkucmVtb3ZlKCksci5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0LGUpe3ZhciBpPW4uZ2V0Um93Qm91bmRzKGUpO3JldHVybiJ0cmFuc2xhdGUoIitpLnRvcExlZnQueCsiLCAiK2kudG9wTGVmdC55KyIpIn0pKTt2YXIgbz10aGlzO3JldHVybiByLmVhY2goKGZ1bmN0aW9uKHQsaSl7Zm9yKHZhciByPVtdLGE9MDthPHQuY29sdW1ucy5sZW5ndGg7YSs9MilyLnB1c2goW3QuY29sdW1uc1thXSx0LmNvbHVtbnNbYSsxXV0pO3ZhciBzPVF4dC5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLiIrZS5MRUdFTkRfRU5UUllfQ0xBU1MpLmRhdGEociksbD1zLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9FTlRSWV9DTEFTUywhMCkubWVyZ2Uocyk7bC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwoZnVuY3Rpb24odCxlKXt2YXIgbj10WzBdO3JldHVybiBvLnN5bWJvbCgpKG4uZGF0YS5uYW1lLGkpKC42Km4uaGVpZ2h0KShudWxsKX0pKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0LGUpe3ZhciByPXRbMF0sbz1uLnJvd3NbaV0uY29sdW1ucy5pbmRleE9mKHIpO3JldHVybiJ0cmFuc2xhdGUoIisobi5nZXRDb2x1bW5Cb3VuZHMoaSxvKS50b3BMZWZ0Lngrci53aWR0aC8yKSsiLCAiK3IuaGVpZ2h0LzIrIikifSkpLmF0dHIoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gby5fY29sb3JTY2FsZS5zY2FsZSh0WzBdLmRhdGEubmFtZSl9KSkuYXR0cigib3BhY2l0eSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8uc3ltYm9sT3BhY2l0eSgpKHRbMF0uZGF0YS5uYW1lLGkpfSkpLmNsYXNzZWQoZS5MRUdFTkRfU1lNQk9MX0NMQVNTLCEwKSxsLmFwcGVuZCgiZyIpLmNsYXNzZWQoInRleHQtY29udGFpbmVyIiwhMCkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgcj1uLnJvd3NbaV0uY29sdW1ucy5pbmRleE9mKHRbMV0pO3JldHVybiJ0cmFuc2xhdGUoIituLmdldENvbHVtbkJvdW5kcyhpLHIpLnRvcExlZnQueCsiLCAwKSJ9KSkuZWFjaCgoZnVuY3Rpb24odCxlLG4pe3ZhciBpPVF4dC5zZWxlY3QodGhpcykscj10WzFdO28uX3dyaXRlci53cml0ZShvLl9mb3JtYXR0ZXIoci5kYXRhLm5hbWUpLHIud2lkdGgsby5oZWlnaHQoKSx7eEFsaWduOiJsZWZ0Iix5QWxpZ246InRvcCIsdGV4dFJvdGF0aW9uOjB9LGkubm9kZSgpKX0pKSxzLmV4aXQoKS5yZW1vdmUoKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5zeW1ib2w9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yOih0aGlzLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zeW1ib2xPcGFjaXR5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N5bWJvbE9wYWNpdHlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sT3BhY2l0eUFjY2Vzc29yPSJudW1iZXIiPT10eXBlb2YgdD9mdW5jdGlvbigpe3JldHVybiB0fTp0LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZS5MRUdFTkRfUk9XX0NMQVNTPSJsZWdlbmQtcm93IixlLkxFR0VORF9FTlRSWV9DTEFTUz0ibGVnZW5kLWVudHJ5IixlLkxFR0VORF9TWU1CT0xfQ0xBU1M9ImxlZ2VuZC1zeW1ib2wiLGV9KShvd3QuQ29tcG9uZW50KTtWeHQuTGVnZW5kPWx3dDt2YXIgY3d0PXt9LHV3dD17fSxod3Q9e307IShmdW5jdGlvbih0KXt2YXIgZTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLChlPXQuQW5pbWF0b3J8fCh0LkFuaW1hdG9yPXt9KSkuTUFJTj0ibWFpbiIsZS5SRVNFVD0icmVzZXQifSkoaHd0KTt2YXIgZHd0PXt9LHB3dD17fSxmd3Q9e307ZnVuY3Rpb24gbXd0KHQpe3JldHVybiEwPT09KGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZSYmITE9PT1BcnJheS5pc0FycmF5KGUpfSkodCkmJiJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfXZhciBnd3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShnd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBfd3Q9Rmd0LHl3dD0wLHZ3dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl91cGRhdGVJZD15d3QrKyx0aGlzLl9kYXRhPXQsdGhpcy5fbWV0YWRhdGE9ZSx0aGlzLl9jYWxsYmFja3M9bmV3IF93dC5DYWxsYmFja1NldH1yZXR1cm4gdC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLmRhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZGF0YToodGhpcy5fZGF0YT10LHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcyl9LHQucHJvdG90eXBlLm1ldGFkYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21ldGFkYXRhOih0aGlzLl9tZXRhZGF0YT10LHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcyl9LHQucHJvdG90eXBlLnVwZGF0ZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZUlkfSx0LnByb3RvdHlwZS5fZGlzcGF0Y2hVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVJZD15d3QrKyx0aGlzLl9jYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKX0sdH0pKCk7Z3d0LkRhdGFzZXQ9dnd0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqIEBmaWxlb3ZlcnZpZXcgSW1wbGVtZW50cyB0aGUgU2lnbmF0dXJlIEFQSSB0byBoZWxwIGluIGNvbXBhcmluZyB3aGVuIHR3bwogICAgICogUGxvdHRhYmxlIG9iamVjdHMgaGF2ZSAiY2hhbmdlZCIuCiAgICAgKgogICAgICogTWVtb2l6YXRpb24gaW4gUGxvdHRhYmxlIGlzIGNvbXBsaWNhdGVkIGJ5IG11dGFibGUgc2NhbGVzIGFuZCBkYXRhc2V0cy4gV2UgY2Fubm90IHNpbXBseQogICAgICogcmVmZXJlbmNlIGNvbXBhcmUgdHdvIGUuZy4gc2NhbGVzIHNpbmNlIGl0IG1heSBoYXZlIGludGVybmFsbHkgbXV0YXRlZC4gVG8gcmVzb2x2ZSB0aGlzLAogICAgICogd2Ugd3JpdGUgYSByZWN1cnNpdmUgU2lnbmF0dXJlIGludGVyZmFjZSB0aGF0IGhvbGRzIGFuIGltbXV0YWJsZSBzbmFwc2hvdCBvZiB3aGF0ZXZlcgogICAgICogc3RhdGUgdGhlIHNjYWxlL2RhdGEgd2FzIGluIGF0IHRoZSB0aW1lLiBUaGVuIG9uIG1lbW9pemVkIGZ1bmN0aW9uIGludm9jYXRpb24gd2Ugc2lnbiB0aGUKICAgICAqIG5ldyBpbnB1dHMgYW5kIGNvbXBhcmUgdGhlIHNpZ25hdHVyZXMgdG8gZGVjaWRlIGlmIHdlIHNob3VsZCByZWNvbXB1dGUuCiAgICAgKgogICAgICogV2UgbXVzdCBoYW5kLXdyaXRlIGEgc2lnbmF0dXJlIGZvciBlYWNoIGN1c3RvbSBjbGFzcyB3ZSB3aXNoIHRvIHN1cHBvcnQuCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGJ3dD11Tyx4d3Q9Z3d0LHd3dD1odnQ7ZnVuY3Rpb24gU3d0KHQpe3JldHVybiB0IGluc3RhbmNlb2Yga3d0P3Q6dCBpbnN0YW5jZW9mIERhdGU/VHd0KHQudmFsdWVPZigpKTp0IGluc3RhbmNlb2Ygd3d0LlNjYWxlP013dCh0KTp0IGluc3RhbmNlb2YgeHd0LkRhdGFzZXQ/RXd0KHQpOihmdW5jdGlvbiB0KGUpe3ZhciBuLGk7cmV0dXJuITEhPT1td3QoZSkmJiJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiYhMSE9PW13dChpPW4ucHJvdG90eXBlKSYmITEhPT1pLmhhc093blByb3BlcnR5KCJpc1Byb3RvdHlwZU9mIil9KSh0KT9Bd3QodCk6QXJyYXkuaXNBcnJheSh0KT9Dd3QodCk6VHd0KHQpfWZ1bmN0aW9uIE13dCh0KXtyZXR1cm4gQXd0KHtkb21haW46dC5kb21haW4oKSxyYW5nZTp0LnJhbmdlKCksdXBkYXRlSWQ6dC51cGRhdGVJZCgpLHJlZjpUd3QodCl9KX1mdW5jdGlvbiBFd3QodCl7cmV0dXJuIEF3dCh7cmVmOlR3dCh0KSx1cGRhdGVJZDp0LnVwZGF0ZUlkKCl9KX1mdW5jdGlvbiBUd3QodCl7cmV0dXJuIG5ldyBQd3QodCl9ZnVuY3Rpb24gQ3d0KHQpe3JldHVybiBuZXcgTHd0KHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gU3d0KHQpfSkpKX1mdW5jdGlvbiBBd3QodCl7dmFyIGU9e307Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKGVbbl09U3d0KHRbbl0pKTtyZXR1cm4gbmV3IE53dChlKX1md3Quc2lnbj1Td3QsZnd0LnNpZ25TY2FsZT1Nd3QsZnd0LnNpZ25EYXRhc2V0PUV3dCxmd3Quc2lnblJlZj1Ud3QsZnd0LnNpZ25BcnJheT1Dd3QsZnd0LnNpZ25PYmo9QXd0O3ZhciBrd3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuaXNEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuISh0IGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcil8fHRoaXMuaXNTaWduYXR1cmVEaWZmZXJlbnQodCl9LHR9KSgpO2Z3dC5TaWduYXR1cmU9a3d0O3ZhciBMd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLmFycmF5PWUsbn1yZXR1cm4gYnd0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmlzU2lnbmF0dXJlRGlmZmVyZW50PWZ1bmN0aW9uKHQpe2lmKHQuYXJyYXkubGVuZ3RoIT09dGhpcy5hcnJheS5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBlPTA7ZTx0aGlzLmFycmF5Lmxlbmd0aDtlKyspaWYodGhpcy5hcnJheVtlXS5pc0RpZmZlcmVudCh0LmFycmF5W2VdKSlyZXR1cm4hMDtyZXR1cm4hMX0sZX0pKGt3dCk7Znd0LkFycmF5U2lnbmF0dXJlPUx3dDt2YXIgUHd0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5yZWY9ZSxufXJldHVybiBid3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmIT09dC5yZWZ9LGV9KShrd3QpO2Z3dC5SZWZlcmVuY2VTaWduYXR1cmU9UHd0O3ZhciBOd3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLm9iaj1lLG59cmV0dXJuIGJ3dC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLm9iaiksbj1PYmplY3Qua2V5cyh0Lm9iaik7aWYoZS5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGk9MCxyPWU7aTxyLmxlbmd0aDtpKyspe3ZhciBvPXJbaV07aWYoIXQub2JqLmhhc093blByb3BlcnR5KG8pKXJldHVybiEwO2lmKHRoaXMub2JqW29dLmlzRGlmZmVyZW50KHQub2JqW29dKSlyZXR1cm4hMH1yZXR1cm4hMX0sZX0pKGt3dCk7Znd0Lk9iamVjdFNpZ25hdHVyZT1Od3QsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgZnVuY3Rpb24gbWVtb2l6ZXIgdXNpbmcgdGhlIFNpZ25hdHVyZSBBUEkuCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHB3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEl3dD1md3Q7cHd0Lm1lbW9pemU9ZnVuY3Rpb24gUnd0KHQpe3ZhciBlLG49dm9pZCAwLGk9ITEscj0hMSxvPWZ1bmN0aW9uKCl7Zm9yKHZhciBvPVtdLGE9MDthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKW9bYV09YXJndW1lbnRzW2FdO2lmKGkpcmV0dXJuIGU7dmFyIHM9SXd0LnNpZ25BcnJheShvKTtyZXR1cm4gdm9pZCAwPT09bnx8bi5pc0RpZmZlcmVudChzKT8ociYmY29uc29sZS53YXJuKCJjYWNoZSBtaXNzISBjb21wdXRpbmciKSxuPXMsZT10LmFwcGx5KHRoaXMsbykpOnImJmNvbnNvbGUud2FybigiY2FjaGUgaGl0ISIpLGV9O3JldHVybiBvLmRvTG9ja2VkPWZ1bmN0aW9uKHQpe2lmKGkpdGhyb3cgbmV3IEVycm9yKCJMb2NraW5nIGFuIGFscmVhZHkgbG9ja2VkIG1lbW9pemUgZnVuY3Rpb24hIik7aT0hMDt2YXIgZT10LmFwcGx5KHRoaXMpO3JldHVybiBpPSExLGV9LG8ubG9nUGVyZm9ybWFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSEwKSxyPXQsdGhpc30sb307dmFyIE93dD17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoT3d0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgend0PVNlLmV4cG9ydHMsRHd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZXhpc3RzPU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMubWFwW3RdLGRlbGV0ZSB0aGlzLmV4aXN0c1t0XSwhMH0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcFt0XX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiEhdGhpcy5leGlzdHNbdF19LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1hcFt0XT1lLHRoaXMuZXhpc3RzW3RdPSEwLHRoaXN9LHR9KSgpLEJ3dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5tYXA9bmV3IER3dH1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcC5nZXQodFswXSkuZ2V0KHRbMV0pfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmhhcyh0WzBdKSYmdGhpcy5tYXAuZ2V0KHRbMF0pLmhhcyh0WzFdKX0sdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWFwLmhhcyh0WzBdKXx8dGhpcy5tYXAuc2V0KHRbMF0sbmV3IER3dCksdGhpcy5tYXAuZ2V0KHRbMF0pLnNldCh0WzFdLGUpLHRoaXN9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuZGVsZXRlKHRbMV0pLCEwfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubWFwPW5ldyBEd3R9LHQucmVzb2x2ZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybltuLnVwZGF0ZUlkKCksZV19LHR9KSgpO2Z1bmN0aW9uIEh3dCh0KXt2YXIgZT16d3QubWVtb2l6ZSh0LEJ3dC5yZXNvbHZlcik7cmV0dXJuIGUuY2FjaGU9bmV3IEJ3dCxlfU93dC5tZW1vaXplUHJvamVjdG9yPUh3dCxPd3QubWVtb2l6ZVByb2plY3RvcnM9ZnVuY3Rpb24gRnd0KHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2VdPUh3dCh0W2VdKX0pKSx0fTt2YXIgVnd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqIEBmaWxlb3ZlcnZpZXcgSW1wbGVtZW50cyBhIGNvbnZlbmllbnQgdGh1bmsgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBjb21tb24gY2FzZQogICAgICogb2YgY3JlYXRpbmcgYSBtZW1vaXplZCBmdW5jdGlvbiB0aGF0IHRha2VzIGl0cyBpbnB1dHMgZnJvbSBtdXRhYmxlIGNsYXNzIHByb3BlcnRpZXMuCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoVnd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVXd0PWR3dDtWd3QubWVtVGh1bms9ZnVuY3Rpb24gand0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPXQuc2xpY2UoMCwtMSksaT10W3QubGVuZ3RoLTFdLHI9VXd0Lm1lbW9pemUoaSksbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXBwbHkodCl9KSk7cmV0dXJuIHIuYXBwbHkodm9pZCAwLGUpfTtyZXR1cm4gb30sKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU87ZS5fX2V4cG9ydFN0YXIocHd0LHQpLGUuX19leHBvcnRTdGFyKE93dCx0KSxlLl9fZXhwb3J0U3RhcihWd3QsdCksdC5zaWduPWZ3dC5zaWdufSkoZHd0KTt2YXIgR3d0PXt9OyEoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1FZHQsbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2RyYXdTdGVwPWV9cmV0dXJuIHQucHJvdG90eXBlLmdldERyYXdTdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RyYXdTdGVwfSx0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSl7dmFyIG49ZVtlLmxlbmd0aC0xXS5hdHRyVG9BcHBsaWVkUHJvamVjdG9yO3RoaXMuX2NvbnRleHQuc2F2ZSgpLHRoaXMuX2RyYXdTdGVwKHRoaXMuX2NvbnRleHQsdCxuKSx0aGlzLl9jb250ZXh0LnJlc3RvcmUoKX0sdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybltdfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt9LHR9KSgpO2Z1bmN0aW9uIGkodCxlLG4saSl7Zm9yKHZhciByPXt9LG89MCxhPWU7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb107dC5oYXNPd25Qcm9wZXJ0eShzKSYmKHJbc109dFtzXShuLGkpKX1yZXR1cm4gcn1mdW5jdGlvbiByKHQpe3JldHVybiBudWxsIT10WyJzdHJva2Utd2lkdGgiXT9wYXJzZUZsb2F0KHRbInN0cm9rZS13aWR0aCJdKToxfWZ1bmN0aW9uIG8odCl7dmFyIGU9dFsic3Ryb2tlLWRhc2hhcnJheSJdO2lmKG51bGwhPWUpdHJ5e3JldHVybiBlLnNwbGl0KC9bICxdKy8pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfSkpfWNhdGNoKHQpe3JldHVybiBjb25zb2xlLmVycm9yKCJnZXRTdHJva2VEYXNoQXJyYXkgZmFpbGVkIHdpdGg6ICIrdCksW119cmV0dXJuW119ZnVuY3Rpb24gYSh0LG4pe2lmKG4uc3Ryb2tlKXt0LmxpbmVXaWR0aD1yKG4pO3ZhciBpPWUuY29sb3Iobi5zdHJva2UpLGE9byhuKTt0LnNldExpbmVEYXNoKGEpLGkub3BhY2l0eSo9KGZ1bmN0aW9uIHModCl7dmFyIGU9bnVsbCE9dC5vcGFjaXR5P3BhcnNlRmxvYXQodC5vcGFjaXR5KToxO3JldHVybihudWxsIT10WyJzdHJva2Utb3BhY2l0eSJdP3BhcnNlRmxvYXQodFsic3Ryb2tlLW9wYWNpdHkiXSk6MSkqZX0pKG4pLHQuc3Ryb2tlU3R5bGU9aS50b1N0cmluZygpLHQuc3Ryb2tlKCl9aWYobi5maWxsKXt2YXIgbD1lLmNvbG9yKG4uZmlsbCk7bC5vcGFjaXR5Kj0oZnVuY3Rpb24gYyh0KXt2YXIgZT1udWxsIT10Lm9wYWNpdHk/cGFyc2VGbG9hdCh0Lm9wYWNpdHkpOjE7cmV0dXJuKG51bGwhPXRbImZpbGwtb3BhY2l0eSJdP3BhcnNlRmxvYXQodFsiZmlsbC1vcGFjaXR5Il0pOjEpKmV9KShuKSx0LmZpbGxTdHlsZT1sLnRvU3RyaW5nKCksdC5maWxsKCl9fXQuQ2FudmFzRHJhd2VyPW4sdC5Db250ZXh0U3R5bGVBdHRycz1bImZpbGwtb3BhY2l0eSIsImZpbGwiLCJvcGFjaXR5Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2Utd2lkdGgiLCJzdHJva2UiLCJzdHJva2UtZGFzaGFycmF5Il0sdC5yZXNvbHZlQXR0cmlidXRlc1N1YnNldFdpdGhTdHlsZXM9ZnVuY3Rpb24gcyhlLG4scixvKXtyZXR1cm4gaShlLHQuQ29udGV4dFN0eWxlQXR0cnMuY29uY2F0KG4pLHIsbyl9LHQucmVzb2x2ZUF0dHJpYnV0ZXM9aSx0LmdldFN0cm9rZVdpZHRoPXIsdC5nZXRTdHJva2VEYXNoQXJyYXk9byx0LnJlbmRlckFyZWE9ZnVuY3Rpb24gbCh0LGUsbixpKXt0LnNhdmUoKSx0LmJlZ2luUGF0aCgpLGUuY29udGV4dCh0KSxlKG4pLHQubGluZUpvaW49InJvdW5kIixhKHQsaSksdC5yZXN0b3JlKCl9LHQucmVuZGVyTGluZT1mdW5jdGlvbiBjKHQsZSxuLGkpe3Quc2F2ZSgpLHQuYmVnaW5QYXRoKCksZS5jb250ZXh0KHQpLGUobiksdC5saW5lSm9pbj0icm91bmQiLGEodCxpKSx0LnJlc3RvcmUoKX0sdC5yZW5kZXJQYXRoV2l0aFN0eWxlPWF9KShHd3QpO3ZhciBXd3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFd3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHF3dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fc3ZnRHJhd2VyRmFjdG9yeT10LHRoaXMuX2NhbnZhc0RyYXdlckZhY3Rvcnk9ZX1yZXR1cm4gdC5wcm90b3R5cGUudXNlU1ZHPWZ1bmN0aW9uKHQpe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCk7dmFyIGU9dGhpcy5fc3ZnRHJhd2VyRmFjdG9yeSgpO2UuYXR0YWNoVG8odCksdGhpcy5fY3VycmVudERyYXdlcj1lfSx0LnByb3RvdHlwZS51c2VDYW52YXM9ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKSx0aGlzLl9jdXJyZW50RHJhd2VyPXRoaXMuX2NhbnZhc0RyYXdlckZhY3RvcnkodC5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKSl9LHQucHJvdG90eXBlLmdldERyYXdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtudWxsIT10aGlzLl9jdXJyZW50RHJhd2VyJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpfSx0LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VycmVudERyYXdlci5kcmF3KHQsZSl9LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVzKCl9LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleCh0KX0sdH0pKCk7V3d0LlByb3h5RHJhd2VyPXF3dDt2YXIgWXd0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShZd3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBYd3Q9RWR0LCR3dD1GZ3QsS3d0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9yb290PVh3dC5zZWxlY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksdGhpcy5fY2xhc3NOYW1lPWUsdGhpcy5fc3ZnRWxlbWVudE5hbWU9dH1yZXR1cm4gdC5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzKHQpO2Zvcih2YXIgaT0wLHI9ZS5sZW5ndGgsbz1mdW5jdGlvbihyKXt2YXIgbz1lW3JdOyR3dC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZHJhd1N0ZXAobyl9KSxpKSxpKz1vLmFuaW1hdG9yLnRvdGFsVGltZSh0Lmxlbmd0aCl9LGE9MDthPHI7YSsrKW8oYSl9LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVzJiYodGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVzPXRoaXMuX3NlbGVjdGlvbi5ub2RlcygpKSx0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXN9LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlTWFwP251bGw6dGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXAuZ2V0KHQpfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9yb290LnJlbW92ZSgpfSx0LnByb3RvdHlwZS5hdHRhY2hUbz1mdW5jdGlvbih0KXt0Lm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9yb290Lm5vZGUoKSl9LHQucHJvdG90eXBlLmdldFJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH0sdC5wcm90b3R5cGUuc2VsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3ZnRWxlbWVudE5hbWV9LHQucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuX2NyZWF0ZUFuZERlc3Ryb3lET01FbGVtZW50cz1mdW5jdGlvbih0KXt2YXIgZT10Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dD97ZDp0LGk6ZX06bnVsbH0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpLG49dGhpcy5fcm9vdC5zZWxlY3RBbGwodGhpcy5zZWxlY3RvcigpKS5kYXRhKGUpO3RoaXMuX3NlbGVjdGlvbj1uLmVudGVyKCkuYXBwZW5kKHRoaXMuX3N2Z0VsZW1lbnROYW1lKS5tZXJnZShuKSxuLmV4aXQoKS5yZW1vdmUoKTt2YXIgaT1uZXcgJHd0Lk1hcDt0aGlzLl9zZWxlY3Rpb24uZWFjaCgoZnVuY3Rpb24odCl7aS5zZXQodC5pLHRoaXMpfSkpLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlTWFwPWksdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVzPW51bGwsdGhpcy5fc2VsZWN0aW9uLmRhdGEodGhpcy5fc2VsZWN0aW9uLmRhdGEoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmR9KSkpLG51bGwhPXRoaXMuX2NsYXNzTmFtZSYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKSx0aGlzLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzKHRoaXMuX3NlbGVjdGlvbil9LHQucHJvdG90eXBlLl9kcmF3U3RlcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO1siZmlsbCIsInN0cm9rZSJdLmZvckVhY2goKGZ1bmN0aW9uKG4pe251bGwhPXQuYXR0clRvQXBwbGllZFByb2plY3RvcltuXSYmZS5fc2VsZWN0aW9uLmF0dHIobix0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3Jbbl0pfSkpLHQuYW5pbWF0b3IuYW5pbWF0ZSh0aGlzLl9zZWxlY3Rpb24sdC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yKSxudWxsIT10aGlzLl9jbGFzc05hbWUmJnRoaXMuX3NlbGVjdGlvbi5jbGFzc2VkKHRoaXMuX2NsYXNzTmFtZSwhMCl9LHR9KSgpO1l3dC5TVkdEcmF3ZXI9S3d0O3ZhciBad3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFp3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEp3dD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9dGhpczt0aGlzLnNjYWxlPTAsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj1bbnVsbCxudWxsXSx0aGlzLmxhc3RTZWVuRG9tYWluPVtudWxsLG51bGxdLHRoaXMudXBkYXRlRG9tYWluPWZ1bmN0aW9uKGUpe3QubGFzdFNlZW5Eb21haW49ZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpO3ZhciBuPWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0LmNhY2hlZERvbWFpblsxXSktZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzBdKSxpPWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzFdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5sYXN0U2VlbkRvbWFpblswXSk7dC5zY2FsZT1uL2l8fDEsdC50cmFuc2xhdGU9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzBdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5sYXN0U2VlbkRvbWFpblswXSkqdC5zY2FsZXx8MH19cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5zY2FsZT0xLHRoaXMudHJhbnNsYXRlPTAsdGhpcy5jYWNoZWREb21haW49dGhpcy5sYXN0U2VlbkRvbWFpbn0sdC5wcm90b3R5cGUuc2V0RG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuY2FjaGVkRG9tYWluPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKX0sdH0pKCksUXd0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuKXt2YXIgaT10aGlzO3RoaXMucmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLmFwcGx5VHJhbnNmb3JtQ2FsbGJhY2s9bix0aGlzLmRvbWFpblRyYW5zZm9ybVg9bmV3IEp3dCx0aGlzLmRvbWFpblRyYW5zZm9ybVk9bmV3IEp3dCx0aGlzLnJlbmRlckRlZmVycmVkPWZ1bmN0aW9uKCl7aS5hcHBseVRyYW5zZm9ybSgpLGNsZWFyVGltZW91dChpLnRpbWVvdXRUb2tlbiksaS50aW1lb3V0VG9rZW49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLnJlbmRlckNhbGxiYWNrKCl9KSx0LkRFRkVSUkVEX1JFTkRFUklOR19ERUxBWSl9fXJldHVybiB0LnByb3RvdHlwZS5zZXREb21haW5zPWZ1bmN0aW9uKHQsZSl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNldERvbWFpbih0KSxlJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkuc2V0RG9tYWluKGUpLHRoaXMucmVuZGVyRGVmZXJyZWQoKX0sdC5wcm90b3R5cGUudXBkYXRlRG9tYWlucz1mdW5jdGlvbih0LGUpe3QmJnRoaXMuZG9tYWluVHJhbnNmb3JtWC51cGRhdGVEb21haW4odCksZSYmdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnVwZGF0ZURvbWFpbihlKSx0aGlzLnJlbmRlckRlZmVycmVkKCl9LHQucHJvdG90eXBlLnJlc2V0VHJhbnNmb3Jtcz1mdW5jdGlvbigpe3RoaXMuZG9tYWluVHJhbnNmb3JtWC5yZXNldCgpLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5yZXNldCgpLHRoaXMuYXBwbHlUcmFuc2Zvcm0oKX0sdC5wcm90b3R5cGUuYXBwbHlUcmFuc2Zvcm09ZnVuY3Rpb24oKXt0aGlzLmFwcGx5VHJhbnNmb3JtQ2FsbGJhY2sodGhpcy5kb21haW5UcmFuc2Zvcm1YLnRyYW5zbGF0ZSx0aGlzLmRvbWFpblRyYW5zZm9ybVkudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWC5zY2FsZSx0aGlzLmRvbWFpblRyYW5zZm9ybVkuc2NhbGUpfSx0LkRFRkVSUkVEX1JFTkRFUklOR19ERUxBWT0yMDAsdH0pKCk7Wnd0LkRlZmVycmVkUmVuZGVyZXI9UXd0LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodXd0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdFN0PXVPLGVTdD1FZHQsblN0PV9tdCxpU3Q9Rmd0LHJTdD1od3Qsb1N0PWR3dCxhU3Q9Qmd0LHNTdD1Hd3QsbFN0PVd3dCxjU3Q9WXd0LHVTdD1ibXQsaFN0PVp3dDt1d3QuUmVuZGVyZXI9U210Lm1ha2VFbnVtKFsic3ZnIiwiY2FudmFzIl0pO3ZhciBkU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7bi5fZGF0YUNoYW5nZWQ9ITEsbi5fYXR0ckV4dGVudHM9e30sbi5fYW5pbWF0ZT0hMSxuLl9hbmltYXRvcnM9e30sbi5fcHJvcGVydHlFeHRlbnRzPXt9LG4uX3Jlc2V0RW50aXR5U3RvcmU9ZnVuY3Rpb24oKXtuLl9jYWNoZWRFbnRpdHlTdG9yZT12b2lkIDB9LG4uX292ZXJmbG93SGlkZGVuPSEwLG4uYWRkQ2xhc3MoInBsb3QiKSxuLl9kYXRhc2V0VG9EcmF3ZXI9bmV3IGlTdC5NYXAsbi5fYXR0ckJpbmRpbmdzPWVTdC5tYXAoKSxuLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uX2luY2x1ZGVkVmFsdWVzRm9yU2NhbGUodCxlKX0sbi5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZW5kZXIoKX0sbi5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbi5fb25EYXRhc2V0VXBkYXRlKCl9LG4uX3Byb3BlcnR5QmluZGluZ3M9ZVN0Lm1hcCgpO3ZhciBpPShuZXcgblN0LkVhc2luZykubWF4VG90YWxEdXJhdGlvbihlLl9BTklNQVRJT05fTUFYX0RVUkFUSU9OKTtyZXR1cm4gbi5hbmltYXRvcihyU3QuQW5pbWF0b3IuTUFJTixpKSxuLmFuaW1hdG9yKHJTdC5BbmltYXRvci5SRVNFVCxuZXcgblN0Lk51bGwpLG4uX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZT1pU3QuV2luZG93LmRlYm91bmNlKGhTdC5EZWZlcnJlZFJlbmRlcmVyLkRFRkVSUkVEX1JFTkRFUklOR19ERUxBWSxuLl9yZXNldEVudGl0eVN0b3JlKSxufXJldHVybiB0U3QuX19leHRlbmRzKGUsdCksZS5nZXRUb3RhbERyYXdUaW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlK24uYW5pbWF0b3IudG90YWxUaW1lKHQubGVuZ3RoKX0pLDApfSxlLmFwcGx5RHJhd1N0ZXBzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXt2YXIgbj10LmF0dHJUb1Byb2plY3RvcixpPXt9O3JldHVybiBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpW3RdPWZ1bmN0aW9uKGkscil7cmV0dXJuIG5bdF0oaSxyLGUpfX0pKSx7YXR0clRvQXBwbGllZFByb2plY3RvcjppLGFuaW1hdG9yOnQuYW5pbWF0b3J9fSkpfSxlLnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9dVN0LmNvZXJjZUV4dGVybmFsRDMoZSksdC5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5fdXBkYXRlRXh0ZW50cygpLHRoaXN9LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5faXNTZXR1cHx8KHQucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLG51bGwhPXRoaXMuX2NhbnZhcyYmdGhpcy5fYXBwZW5kQ2FudmFzTm9kZSgpLHRoaXMuX3JlbmRlckFyZWE9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmVuZGVyLWFyZWEiLCEwKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldCh0KX0pKSl9LGUucHJvdG90eXBlLl9hcHBlbmRDYW52YXNOb2RlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50KCkuc2VsZWN0KCIucGxvdC1jYW52YXMtY29udGFpbmVyIik7dC5lbXB0eSgpJiYodD10aGlzLmVsZW1lbnQoKS5hcHBlbmQoImRpdiIpLmNsYXNzZWQoInBsb3QtY2FudmFzLWNvbnRhaW5lciIsITApKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fY2FudmFzLm5vZGUoKSl9LGUucHJvdG90eXBlLnNldEJvdW5kcz1mdW5jdGlvbihlLG4saSxyKXtpZih0LnByb3RvdHlwZS5zZXRCb3VuZHMuY2FsbCh0aGlzLGUsbixpLHIpLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSxudWxsIT10aGlzLl9jYW52YXMpe2lmKHRoaXMuX2J1ZmZlckNhbnZhcyYmIXRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkKXt0aGlzLl9idWZmZXJDYW52YXMuYXR0cigid2lkdGgiLHRoaXMuX2NhbnZhcy5hdHRyKCJ3aWR0aCIpKSx0aGlzLl9idWZmZXJDYW52YXMuYXR0cigiaGVpZ2h0Iix0aGlzLl9jYW52YXMuYXR0cigiaGVpZ2h0IikpO3ZhciBvPXRoaXMuX2J1ZmZlckNhbnZhcy5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKTtpZihvKXt2YXIgYT10aGlzLl9jYW52YXMubm9kZSgpO2Eud2lkdGg+MCYmYS5oZWlnaHQ+MD9vLmNhbnZhcy53aWR0aD4wJiZvLmNhbnZhcy5oZWlnaHQ+MCYmby5kcmF3SW1hZ2UoYSwwLDApOmNvbnNvbGUud2FybigiRmFpbGVkIHRvIGZpbGwgYnVmZmVyIGNhbnZhcyB3aXRoIHdpdGggMHgwIGNhbnZhcyIpfXRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkPSEwfXZhciBzPW51bGwhPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvP3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOjE7dGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIixlKnMpLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiLG4qcyk7dmFyIGw9dGhpcy5fY2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKGwmJihsLnNldFRyYW5zZm9ybShzLDAsMCxzLDAsMCksdGhpcy5fYnVmZmVyQ2FudmFzKSl7dmFyIGM9dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKTtjLndpZHRoPjAmJmMuaGVpZ2h0PjA/bC5jYW52YXMud2lkdGg+MCYmbC5jYW52YXMuaGVpZ2h0PjAmJmwuZHJhd0ltYWdlKGMsMCwwLGUsbik6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBjYW52YXMgd2l0aCAweDAgYnVmZmVyIGNhbnZhcyIpfX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9mZlVwZGF0ZShlLl9yZW5kZXJDYWxsYmFjayl9KSksdGhpcy5kYXRhc2V0cyhbXSl9LGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZGF0YXNldFRvRHJhd2VyLmdldCh0KTtyZXR1cm4ic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9lLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTplLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLGV9LGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsU3QuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjU3QuU1ZHRHJhd2VyKCJwYXRoIiwiIil9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzU3QuQ2FudmFzRHJhd2VyKHQsKGZ1bmN0aW9uKCl7fSkpfSkpfSxlLnByb3RvdHlwZS5fZ2V0QW5pbWF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSYmdGhpcy5fYW5pbWF0b3JzW3RdfHxuZXcgblN0Lk51bGx9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpcy5fZGF0YUNoYW5nZWQ9ITAsdGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMucmVuZGVyTG93UHJpb3JpdHkoKX0sZS5wcm90b3R5cGUuYXR0cj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG51bGw9PWU/dGhpcy5fYXR0ckJpbmRpbmdzLmdldCh0KToodGhpcy5fYmluZEF0dHIodCxlLG4pLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9iaW5kUHJvcGVydHk9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodCksbz1udWxsIT1yP3Iuc2NhbGU6bnVsbDt0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLnNldCh0LHthY2Nlc3NvcjoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNjYWxlOm4scG9zdFNjYWxlOml9KSxudWxsIT1vJiZ0aGlzLl91bmluc3RhbGxTY2FsZUZvcktleShvLHQpLG51bGwhPW4mJnRoaXMuX2luc3RhbGxTY2FsZUZvcktleShuLHQpLHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKX0sZS5wcm90b3R5cGUuX2JpbmRBdHRyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9hdHRyQmluZGluZ3MuZ2V0KHQpLHI9bnVsbCE9aT9pLnNjYWxlOm51bGw7dGhpcy5fYXR0ckJpbmRpbmdzLnNldCh0LHthY2Nlc3NvcjoiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmZ1bmN0aW9uKCl7cmV0dXJuIGV9LHNjYWxlOm59KSxudWxsIT1yJiZ0aGlzLl91bmluc3RhbGxTY2FsZUZvcktleShyLHQpLG51bGwhPW4mJnRoaXMuX2luc3RhbGxTY2FsZUZvcktleShuLHQpLHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKX0sZS5wcm90b3R5cGUuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGU9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yfSxlLnByb3RvdHlwZS5fZ2V0QXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yKXt2YXIgdD10aGlzLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3RvcigpO2UuT1BUSU1JWkVfTUVNT0laRV9QUk9KRUNUT1JTJiYodD1vU3QubWVtb2l6ZVByb2plY3RvcnModCkpLHRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3Rvcj10fXJldHVybiBpU3QuYXNzaWduKHt9LHRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3Rvcil9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciB0PXt9O3RoaXMuX2F0dHJCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihuLGkpe3RbaV09ZS5fc2NhbGVkQWNjZXNzb3Iobil9KSk7dmFyIG49dGhpcy5fcHJvcGVydHlQcm9qZWN0b3JzKCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe251bGw9PXRbZV0mJih0W2VdPW5bZV0pfSkpLHR9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5faXNBbmNob3JlZCYmKHRoaXMuX3BhaW50KCksdGhpcy5fZGF0YUNoYW5nZWQ9ITEpLHRoaXN9LGUucHJvdG90eXBlLnJlbmRlckxvd1ByaW9yaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlckNhbGxiYWNrKCksdGhpc30sZS5wcm90b3R5cGUuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5pbWF0ZToodGhpcy5fYW5pbWF0ZT10LHRoaXMpfSxlLnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpcy5fdXBkYXRlRXh0ZW50cygpLHRoaXN9LGUucHJvdG90eXBlLl9zY2FsZXM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKGUsbil7dmFyIGk9ZS5zY2FsZTtudWxsIT1pJiYtMT09PXQuaW5kZXhPZihpKSYmdC5wdXNoKGkpfSkpLHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLnNjYWxlO251bGwhPWkmJi0xPT09dC5pbmRleE9mKGkpJiZ0LnB1c2goaSl9KSksdH0sZS5wcm90b3R5cGUuX3VwZGF0ZUV4dGVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKSx0aGlzLl9zY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHQuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSkpfSxlLnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JBdHRyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYobnVsbD09dGhpcy5fYXR0ckV4dGVudHNbdF0pe3ZhciBuPW9TdC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2F0dHJCaW5kaW5ncy5nZXQodCl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZXx8bnVsbD09ZS5hY2Nlc3Nvcj9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcFN0KHQsZSxudWxsKX0pKX0pKTt0aGlzLl9hdHRyRXh0ZW50c1t0XT1ufXJldHVybiB0aGlzLl9hdHRyRXh0ZW50c1t0XSgpfSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF0pe3ZhciBuPW9TdC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpbHRlckZvclByb3BlcnR5KHQpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZXx8bnVsbD09ZS5hY2Nlc3Nvcj9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcFN0KHQsZSxuKX0pKX0pKTt0aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF09bn1yZXR1cm4gdGhpcy5fcHJvcGVydHlFeHRlbnRzW3RdKCl9LGUucHJvdG90eXBlLl9pbmNsdWRlZFZhbHVlc0ZvclNjYWxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZighdGhpcy5faXNBbmNob3JlZCYmIWUpcmV0dXJuW107dmFyIGk9W107cmV0dXJuIHRoaXMuX2F0dHJCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLHIpe2lmKGUuc2NhbGU9PT10KXt2YXIgbz1uLmdldEV4dGVudHNGb3JBdHRyKHIpO251bGwhPW8mJihpPWkuY29uY2F0KGVTdC5tZXJnZShvKSkpfX0pKSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKGUscil7aWYoZS5zY2FsZT09PXQpe3ZhciBvPW4uZ2V0RXh0ZW50c0ZvclByb3BlcnR5KHIpO251bGwhPW8mJihpPWkuY29uY2F0KGVTdC5tZXJnZShvKSkpfX0pKSxpfSxlLnByb3RvdHlwZS5hbmltYXRvcj1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lP3RoaXMuX2FuaW1hdG9yc1t0XToodGhpcy5fYW5pbWF0b3JzW3RdPWUsdGhpcyl9LGUucHJvdG90eXBlLnJlbmRlcmVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHZvaWQgMD09PXQ/bnVsbD09dGhpcy5fY2FudmFzPyJzdmciOiJjYW52YXMiOihudWxsPT10aGlzLl9jYW52YXMmJiJjYW52YXMiPT09dD8odGhpcy5fY2FudmFzPWVTdC5zZWxlY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLmNsYXNzZWQoInBsb3QtY2FudmFzIiwhMCksdGhpcy5fYnVmZmVyQ2FudmFzPWVTdC5zZWxlY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLG51bGwhPXRoaXMuZWxlbWVudCgpJiZ0aGlzLl9hcHBlbmRDYW52YXNOb2RlKCksdGhpcy5fZGF0YXNldFRvRHJhd2VyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudXNlQ2FudmFzKGUuX2NhbnZhcyl9KSksdGhpcy5yZW5kZXIoKSk6bnVsbCE9dGhpcy5fY2FudmFzJiYic3ZnIj09dCYmKHRoaXMuX2NhbnZhcy5yZW1vdmUoKSx0aGlzLl9jYW52YXM9bnVsbCx0aGlzLl9idWZmZXJDYW52YXM9bnVsbCx0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC51c2VTVkcoZS5fcmVuZGVyQXJlYSl9KSksdGhpcy5yZW5kZXIoKSksdGhpcyl9LGUucHJvdG90eXBlLmFkZERhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZERhdGFzZXQodCksdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpc30sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24odCl7dGhpcy5fcmVtb3ZlRGF0YXNldCh0KTt2YXIgZT10aGlzLl9jcmVhdGVEcmF3ZXIodCk7cmV0dXJuIHRoaXMuX2RhdGFzZXRUb0RyYXdlci5zZXQodCxlKSx0aGlzLl9pc1NldHVwJiZ0aGlzLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQodCksdC5vblVwZGF0ZSh0aGlzLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjayksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlRGF0YXNldCh0KSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzfSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4tMT09PXRoaXMuZGF0YXNldHMoKS5pbmRleE9mKHQpfHwodGhpcy5fcmVtb3ZlRGF0YXNldE5vZGVzKHQpLHQub2ZmVXBkYXRlKHRoaXMuX29uRGF0YXNldFVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZGVsZXRlKHQpKSx0aGlzfSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKHQpe3RoaXMuX2RhdGFzZXRUb0RyYXdlci5nZXQodCkucmVtb3ZlKCl9LGUucHJvdG90eXBlLmRhdGFzZXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bXTtyZXR1cm4gdGhpcy5fZGF0YXNldFRvRHJhd2VyLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4ucHVzaChlKX0pKSxudWxsPT10P246KG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX3JlbW92ZURhdGFzZXQodCl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRkRGF0YXNldCh0KX0pKSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IG5TdC5OdWxsfV19LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtmb3IodmFyIHI9ZS5fZGF0YXNldFRvRHJhd2VyLmdldCh0KSxvPTAsYT10LmRhdGEoKSxzPWEubGVuZ3RoLGw9ZnVuY3Rpb24ocyl7dmFyIGw9YVtzXSxjPWUuX3BpeGVsUG9pbnQobCxzLHQpO2lmKGlTdC5NYXRoLmlzTmFOKGMueCl8fGlTdC5NYXRoLmlzTmFOKGMueSkpcmV0dXJuImNvbnRpbnVlIjt2YXIgdT1lO24ucHVzaCh7ZGF0dW06bCxnZXQgcG9zaXRpb24oKXtyZXR1cm4gdS5fcGl4ZWxQb2ludC5jYWxsKHUsbCxzLHQpfSxpbmRleDpzLGRhdGFzZXQ6dCxkYXRhc2V0SW5kZXg6aSxjb21wb25lbnQ6ZSxkcmF3ZXI6cix2YWxpZERhdHVtSW5kZXg6b30pLG8rK30sYz0wO2M8cztjKyspbChjKX0pKSxufSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciB0PW5ldyBpU3QuTWFwO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2V0KGUsZS5kYXRhKCkpfSkpLHR9LGUucHJvdG90eXBlLl9wYWludD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7ZGVsZXRlIHRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3Rvcjt2YXIgbj10aGlzLl9nZW5lcmF0ZURyYXdTdGVwcygpLGk9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLHI9dGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2RhdGFzZXRUb0RyYXdlci5nZXQoZSl9KSk7aWYoImNhbnZhcyI9PT10aGlzLnJlbmRlcmVyKCkpe3ZhciBvPXRoaXMuX2NhbnZhcy5ub2RlKCk7by5nZXRDb250ZXh0KCIyZCIpLmNsZWFyUmVjdCgwLDAsby5jbGllbnRXaWR0aCxvLmNsaWVudEhlaWdodCksdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITF9dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGE9ZS5hcHBseURyYXdTdGVwcyhuLHQpO3Jbb10uZHJhdyhpLmdldCh0KSxhKX0pKTt2YXIgYT10aGlzLmRhdGFzZXRzKCkubWFwKChmdW5jdGlvbih0LHIpe3JldHVybiBlLmdldFRvdGFsRHJhd1RpbWUoaS5nZXQodCksbil9KSkscz1pU3QuTWF0aC5tYXgoYSwwKTt0aGlzLl9hZGRpdGlvbmFsUGFpbnQocyl9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih2b2lkIDA9PT10JiYodD10aGlzLmRhdGFzZXRzKCkpLCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBlU3Quc2VsZWN0QWxsKCk7dmFyIG49W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGk9ZS5fZGF0YXNldFRvRHJhd2VyLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldFZpc3VhbFByaW1pdGl2ZXMoKTtuLnB1c2guYXBwbHkobixyKX19KSksZVN0LnNlbGVjdEFsbChuKX0sZS5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fZ2V0RW50aXR5U3RvcmUodCkuZW50aXRpZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLmZpbHRlckVudGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXMoKS5maWx0ZXIodCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5fZ2V0RW50aXR5U3RvcmU9ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLGk9ZnVuY3Rpb24odCl7cmV0dXJuIG4uX2VudGl0eUJvdW5kcyh0KX07cmV0dXJuIHZvaWQgMCE9PXQ/KChlPW5ldyBpU3QuRW50aXR5U3RvcmUpLmFkZEFsbCh0aGlzLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzKHQpLGksdGhpcy5fbG9jYWxPcmlnaW5Cb3VuZHMoKSksZSk6KHZvaWQgMD09PXRoaXMuX2NhY2hlZEVudGl0eVN0b3JlJiYoKGU9bmV3IGlTdC5FbnRpdHlTdG9yZSkuYWRkQWxsKHRoaXMuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXModGhpcy5kYXRhc2V0cygpKSxpLHRoaXMuX2xvY2FsT3JpZ2luQm91bmRzKCkpLHRoaXMuX2NhY2hlZEVudGl0eVN0b3JlPWUpLHRoaXMuX2NhY2hlZEVudGl0eVN0b3JlKX0sZS5wcm90b3R5cGUuX2xvY2FsT3JpZ2luQm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJue3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OnRoaXMud2lkdGgoKSx5OnRoaXMuaGVpZ2h0KCl9fX0sZS5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9waXhlbFBvaW50KHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpO3JldHVybnt4OmUueCx5OmUueSx3aWR0aDowLGhlaWdodDowfX0sZS5wcm90b3R5cGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eT1mdW5jdGlvbih0KXtyZXR1cm57Ym91bmRzOnRoaXMuX2VudGl0eUJvdW5kcyh0KSxjb21wb25lbnQ6dC5jb21wb25lbnQsZGF0YXNldDp0LmRhdGFzZXQsZGF0YXNldEluZGV4OnQuZGF0YXNldEluZGV4LGRhdHVtOnQuZGF0dW0saW5kZXg6dC5pbmRleCxwb3NpdGlvbjp0LnBvc2l0aW9uLHNlbGVjdGlvbjplU3Quc2VsZWN0KHQuZHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodC52YWxpZERhdHVtSW5kZXgpKX19LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwbG90cyBtdXN0IGltcGxlbWVudCBlbnRpdGllc0F0Iil9LGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdHlOZWFyZXN0KHQpO3JldHVybiB2b2lkIDA9PT1lP3ZvaWQgMDp0aGlzLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoZSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lbnRpdGllc0luQm91bmRzKG51bGw9PWU/e3g6dC50b3BMZWZ0LngseTp0LnRvcExlZnQueSx3aWR0aDp0LmJvdHRvbVJpZ2h0LngtdC50b3BMZWZ0LngsaGVpZ2h0OnQuYm90dG9tUmlnaHQueS10LnRvcExlZnQueX06e3g6dC5taW4seTplLm1pbix3aWR0aDp0Lm1heC10Lm1pbixoZWlnaHQ6ZS5tYXgtZS5taW59KX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luQm91bmRzKHQpO2lmKG4pcmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWEJvdW5kcyh0KTtpZihuKXJldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXNJbllCb3VuZHModCk7aWYobilyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbih0LGUpe3Qub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0Lm9mZlVwZGF0ZSh0aGlzLl9kZWZlcnJlZFJlc2V0RW50aXR5U3RvcmUpLHQucmVtb3ZlSW5jbHVkZWRWYWx1ZXNQcm92aWRlcih0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0sZS5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbih0LGUpe3Qub25VcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHQub25VcGRhdGUodGhpcy5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlKSx0LmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm57fX0sZS5fc2NhbGVkQWNjZXNzb3I9ZnVuY3Rpb24odCl7dmFyIGU9dC5zY2FsZSxuPXQuYWNjZXNzb3IsaT10LnBvc3RTY2FsZSxyPW51bGw9PWU/bjpmdW5jdGlvbih0LGkscil7cmV0dXJuIGUuc2NhbGUobih0LGkscikpfTtyZXR1cm4gbnVsbD09aT9yOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaShyKHQsZSxuKSx0LGUsbil9fSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LGUsbil7cmV0dXJue3g6MCx5OjB9fSxlLnByb3RvdHlwZS5fYW5pbWF0ZU9uTmV4dFJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbmltYXRlJiZ0aGlzLl9kYXRhQ2hhbmdlZH0sZS5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlM9ITEsZS5fQU5JTUFUSU9OX01BWF9EVVJBVElPTj02MDAsZX0pKGFTdC5Db21wb25lbnQpO2Z1bmN0aW9uIHBTdCh0LGUsbil7dmFyIGk9ZS5hY2Nlc3NvcixyPWUuc2NhbGU7aWYobnVsbD09cilyZXR1cm5bXTt2YXIgbz10LmRhdGEoKTtudWxsIT1uJiYobz1vLmZpbHRlcigoZnVuY3Rpb24oZSxpKXtyZXR1cm4gbihlLGksdCl9KSkpO3ZhciBhPW8ubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBpKGUsbix0KX0pKTtyZXR1cm4gci5leHRlbnRPZlZhbHVlcyhhKX0KLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi91d3QuUGxvdD1kU3QsT2JqZWN0LmRlZmluZVByb3BlcnR5KGN3dCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGZTdD11TyxtU3Q9dXd0LGdTdD1GZ3QsX1N0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZlN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGUsbj0xLzA7cmV0dXJuIHRoaXMuY29tcG9uZW50cygpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkuZW50aXR5TmVhcmVzdCh0KTtpZihudWxsIT1yKXt2YXIgbz1nU3QuTWF0aC5kaXN0YW5jZVNxdWFyZWQoci5wb3NpdGlvbix0KTtvPD1uJiYobj1vLGU9cil9fSkpLGV9LGUucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtpZihudWxsIT1lJiYhKGUgaW5zdGFuY2VvZiBtU3QuUGxvdCkpdGhyb3cgbmV3IEVycm9yKCJQbG90IEdyb3VwIG9ubHkgYWNjZXB0cyBwbG90cyIpO3JldHVybiB0LnByb3RvdHlwZS5hcHBlbmQuY2FsbCh0aGlzLGUpLHRoaXN9LGV9KShieHQuR3JvdXApO2N3dC5QbG90R3JvdXA9X1N0O3ZhciB5U3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KHlTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHZTdD11TyxiU3Q9RWR0LHhTdD1GZ3Qsd1N0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX3Jvd1BhZGRpbmc9MCxuLl9jb2x1bW5QYWRkaW5nPTAsbi5fcm93cz1bXSxuLl9yb3dXZWlnaHRzPVtdLG4uX2NvbHVtbldlaWdodHM9W10sbi5fblJvd3M9MCxuLl9uQ29scz0wLG4uX2NhbGN1bGF0ZWRMYXlvdXQ9bnVsbCxuLmFkZENsYXNzKCJ0YWJsZSIpLGUuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bnVsbCE9dCYmbi5hZGQodCxlLGkpfSkpfSkpLG59cmV0dXJuIHZTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKyludWxsIT10aGlzLl9yb3dzW2VdW25dJiZ0KHRoaXMuX3Jvd3NbZV1bbl0pfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9uUm93cztlKyspZm9yKHZhciBuPTA7bjx0aGlzLl9uQ29scztuKyspaWYodGhpcy5fcm93c1tlXVtuXT09PXQpcmV0dXJuITA7cmV0dXJuITF9LGUucHJvdG90eXBlLmNvbXBvbmVudEF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8MHx8dD49dGhpcy5fblJvd3N8fGU8MHx8ZT49dGhpcy5fbkNvbHM/bnVsbDp0aGlzLl9yb3dzW3RdW2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCxlLG4pe2lmKG51bGw9PXQpdGhyb3cgRXJyb3IoIkNhbm5vdCBhZGQgbnVsbCB0byBhIHRhYmxlIGNlbGwiKTtpZighdGhpcy5oYXModCkpe2lmKG51bGwhPSh0aGlzLl9yb3dzW2VdJiZ0aGlzLl9yb3dzW2VdW25dKSl0aHJvdyBuZXcgRXJyb3IoImNlbGwgaXMgb2NjdXBpZWQiKTt0LmRldGFjaCgpLHRoaXMuX25Sb3dzPU1hdGgubWF4KGUrMSx0aGlzLl9uUm93cyksdGhpcy5fbkNvbHM9TWF0aC5tYXgobisxLHRoaXMuX25Db2xzKSx0aGlzLl9wYWRUYWJsZVRvU2l6ZSh0aGlzLl9uUm93cyx0aGlzLl9uQ29scyksdGhpcy5fcm93c1tlXVtuXT10LHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHQpLHRoaXMucmVkcmF3KCl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9uUm93cztlKyspZm9yKHZhciBuPTA7bjx0aGlzLl9uQ29scztuKyspaWYodGhpcy5fcm93c1tlXVtuXT09PXQpcmV0dXJuIHRoaXMuX3Jvd3NbZV1bbl09bnVsbCwhMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuX2l0ZXJhdGVMYXlvdXQ9ZnVuY3Rpb24odCxuLGkpe3ZvaWQgMD09PWkmJihpPSExKTtmb3IodmFyIHIsbyxhLHMsbCxjPXRoaXMuX3Jvd3MsdT1iU3QudHJhbnNwb3NlKHRoaXMuX3Jvd3MpLGg9dC10aGlzLl9jb2x1bW5QYWRkaW5nKih0aGlzLl9uQ29scy0xKSxkPW4tdGhpcy5fcm93UGFkZGluZyoodGhpcy5fblJvd3MtMSkscD1lLl9jYWxjQ29tcG9uZW50V2VpZ2h0cyh0aGlzLl9yb3dXZWlnaHRzLGMsKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0LmZpeGVkSGVpZ2h0KCl9KSksZj1lLl9jYWxjQ29tcG9uZW50V2VpZ2h0cyh0aGlzLl9jb2x1bW5XZWlnaHRzLHUsKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0LmZpeGVkV2lkdGgoKX0pKSxtPWYubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQ/LjU6dH0pKSxnPXAubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQ/LjU6dH0pKSxfPWUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZShtLGgpLHk9ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGcsZCksdj14U3QuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scyksYj14U3QuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cykseD0wOzspe3ZhciB3PXhTdC5BcnJheS5hZGQoYix5KSxTPXhTdC5BcnJheS5hZGQodixfKTt2PShhPXRoaXMuX2RldGVybWluZUd1YXJhbnRlZXMoUyx3LGkpKS5ndWFyYW50ZWVkV2lkdGhzLGI9YS5ndWFyYW50ZWVkSGVpZ2h0cyxzPWEud2FudHNXaWR0aEFyci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxsPWEud2FudHNIZWlnaHRBcnIuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSk7dmFyIE09cixFPW87cj1oLWJTdC5zdW0oYS5ndWFyYW50ZWVkV2lkdGhzKSxvPWQtYlN0LnN1bShhLmd1YXJhbnRlZWRIZWlnaHRzKTt2YXIgVD12b2lkIDA7cz8oVD1hLndhbnRzV2lkdGhBcnIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdD8uMTowfSkpLFQ9eFN0LkFycmF5LmFkZChULGYpKTpUPWY7dmFyIEM9dm9pZCAwO2lmKGw/KEM9YS53YW50c0hlaWdodEFyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Py4xOjB9KSksQz14U3QuQXJyYXkuYWRkKEMscCkpOkM9cCxfPWUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZShULHIpLHk9ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKEMsbykseCsrLCEocj4wJiZyIT09TXx8bz4wJiZvIT09RSkpYnJlYWs7aWYoeD41KWJyZWFrfXJldHVybiByPWgtYlN0LnN1bShhLmd1YXJhbnRlZWRXaWR0aHMpLG89ZC1iU3Quc3VtKGEuZ3VhcmFudGVlZEhlaWdodHMpLHtjb2xQcm9wb3J0aW9uYWxTcGFjZTpfPWUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZShmLHIpLHJvd1Byb3BvcnRpb25hbFNwYWNlOnk9ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKHAsbyksZ3VhcmFudGVlZFdpZHRoczphLmd1YXJhbnRlZWRXaWR0aHMsZ3VhcmFudGVlZEhlaWdodHM6YS5ndWFyYW50ZWVkSGVpZ2h0cyx3YW50c1dpZHRoOnMsd2FudHNIZWlnaHQ6bH19LGUucHJvdG90eXBlLl9kZXRlcm1pbmVHdWFyYW50ZWVzPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSk7dmFyIGk9eFN0LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsdGhpcy5fbkNvbHMpLHI9eFN0LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsdGhpcy5fblJvd3MpLG89eFN0LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Db2xzKSxhPXhTdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSghMSx0aGlzLl9uUm93cyk7cmV0dXJuIHRoaXMuX3Jvd3MuZm9yRWFjaCgoZnVuY3Rpb24ocyxsKXtzLmZvckVhY2goKGZ1bmN0aW9uKHMsYyl7dmFyIHU7dT1udWxsIT1zP3MucmVxdWVzdGVkU3BhY2UodFtjXSxlW2xdKTp7bWluV2lkdGg6MCxtaW5IZWlnaHQ6MH07dmFyIGg9bj9NYXRoLm1pbih1Lm1pbldpZHRoLHRbY10pOnUubWluV2lkdGg7aVtjXT1NYXRoLm1heChpW2NdLGgpO3ZhciBkPW4/TWF0aC5taW4odS5taW5IZWlnaHQsZVtsXSk6dS5taW5IZWlnaHQ7cltsXT1NYXRoLm1heChyW2xdLGQpLG9bY109b1tjXXx8dS5taW5XaWR0aD50W2NdLGFbbF09YVtsXXx8dS5taW5IZWlnaHQ+ZVtsXX0pKX0pKSx7Z3VhcmFudGVlZFdpZHRoczppLGd1YXJhbnRlZWRIZWlnaHRzOnIsd2FudHNXaWR0aEFycjpvLHdhbnRzSGVpZ2h0QXJyOmF9fSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxjdWxhdGVkTGF5b3V0PXRoaXMuX2l0ZXJhdGVMYXlvdXQodCxlKSx7bWluV2lkdGg6YlN0LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRXaWR0aHMpLG1pbkhlaWdodDpiU3Quc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpfX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dmFyIHI9dGhpczt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSk7dmFyIG89YlN0LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRXaWR0aHMpLGE9YlN0LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRIZWlnaHRzKSxzPXRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ7KG8+dGhpcy53aWR0aCgpfHxhPnRoaXMuaGVpZ2h0KCkpJiYocz10aGlzLl9pdGVyYXRlTGF5b3V0KHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpLCEwKSk7dmFyIGw9MCxjPXhTdC5BcnJheS5hZGQocy5yb3dQcm9wb3J0aW9uYWxTcGFjZSxzLmd1YXJhbnRlZWRIZWlnaHRzKSx1PXhTdC5BcnJheS5hZGQocy5jb2xQcm9wb3J0aW9uYWxTcGFjZSxzLmd1YXJhbnRlZWRXaWR0aHMpO3JldHVybiB0aGlzLl9yb3dzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIG49MDt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7bnVsbCE9dCYmdC5jb21wdXRlTGF5b3V0KHt4Om4seTpsfSx1W2ldLGNbZV0pLG4rPXVbaV0rci5fY29sdW1uUGFkZGluZ30pKSxsKz1jW2VdK3IuX3Jvd1BhZGRpbmd9KSksdGhpc30sZS5wcm90b3R5cGUucm93UGFkZGluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9yb3dQYWRkaW5nO2lmKCF4U3QuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpfHx0PDApdGhyb3cgRXJyb3IoInJvd1BhZGRpbmcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTtyZXR1cm4gdGhpcy5fcm93UGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuY29sdW1uUGFkZGluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9jb2x1bW5QYWRkaW5nO2lmKCF4U3QuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpfHx0PDApdGhyb3cgRXJyb3IoImNvbHVtblBhZGRpbmcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTtyZXR1cm4gdGhpcy5fY29sdW1uUGFkZGluZz10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUucm93V2VpZ2h0PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5fcm93V2VpZ2h0c1t0XTtpZigheFN0Lk1hdGguaXNWYWxpZE51bWJlcihlKXx8ZTwwKXRocm93IEVycm9yKCJyb3dXZWlnaHQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTtyZXR1cm4gdGhpcy5fcm93V2VpZ2h0c1t0XT1lLHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuY29sdW1uV2VpZ2h0PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5fY29sdW1uV2VpZ2h0c1t0XTtpZigheFN0Lk1hdGguaXNWYWxpZE51bWJlcihlKXx8ZTwwKXRocm93IEVycm9yKCJjb2x1bW5XZWlnaHQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTtyZXR1cm4gdGhpcy5fY29sdW1uV2VpZ2h0c1t0XT1lLHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3ZhciB0PWJTdC50cmFuc3Bvc2UodGhpcy5fcm93cyk7cmV0dXJuIGUuX2ZpeGVkU3BhY2UodCwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRXaWR0aCgpfSkpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBlLl9maXhlZFNwYWNlKHRoaXMuX3Jvd3MsKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0LmZpeGVkSGVpZ2h0KCl9KSl9LGUucHJvdG90eXBlLl9wYWRUYWJsZVRvU2l6ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wO248dDtuKyspe3ZvaWQgMD09PXRoaXMuX3Jvd3Nbbl0mJih0aGlzLl9yb3dzW25dPVtdLHRoaXMuX3Jvd1dlaWdodHNbbl09bnVsbCk7Zm9yKHZhciBpPTA7aTxlO2krKyl2b2lkIDA9PT10aGlzLl9yb3dzW25dW2ldJiYodGhpcy5fcm93c1tuXVtpXT1udWxsKX1mb3IoaT0wO2k8ZTtpKyspdm9pZCAwPT09dGhpcy5fY29sdW1uV2VpZ2h0c1tpXSYmKHRoaXMuX2NvbHVtbldlaWdodHNbaV09bnVsbCl9LGUuX2NhbGNDb21wb25lbnRXZWlnaHRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIG51bGwhPXQ/dDplW2ldLm1hcChuKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJmV9KSwhMCk/MDoxfSkpfSxlLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1iU3Quc3VtKHQpO3JldHVybiAwPT09bj94U3QuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0Lmxlbmd0aCk6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlKnQvbn0pKX0sZS5fZml4ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZX0pLCEwKX07cmV0dXJuIG4odC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQubWFwKGUpKX0pKSl9LGV9KSh4eHQuQ29tcG9uZW50Q29udGFpbmVyKTt5U3QuVGFibGU9d1N0O3ZhciBTU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFNTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIE1TdD11TyxFU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT1udWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIGUuX21heExpbmVzPTIsZX1yZXR1cm4gTVN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fd3JhcHBlci5tYXhMaW5lcyh0aGlzLl9tYXhMaW5lcyk7dmFyIG49MD09PXRoaXMuYW5nbGUoKT90OmU7MD09PW4mJihuPTEvMCk7dmFyIGk9dGhpcy5fd3JhcHBlci53cmFwKHRoaXMuX3RleHQsdGhpcy5fbWVhc3VyZXIsbikscj10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGkud3JhcHBlZFRleHQpO3JldHVybnttaW5XaWR0aDooMD09PXRoaXMuYW5nbGUoKT9yLndpZHRoOnIuaGVpZ2h0KSsyKnRoaXMucGFkZGluZygpLG1pbkhlaWdodDooMD09PXRoaXMuYW5nbGUoKT9yLmhlaWdodDpyLndpZHRoKSsyKnRoaXMucGFkZGluZygpfX0sZS5wcm90b3R5cGUubWF4TGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX21heExpbmVzOih0aGlzLl9tYXhMaW5lcz10LHRoaXMucmVkcmF3KCksdGhpcyl9LGV9KShPeHQuTGFiZWwpO1NTdC5XcmFwcGVkTGFiZWw9RVN0O3ZhciBUU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KFRTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIENTdD11TyxBU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoIngtZHJhZy1ib3gtbGF5ZXIiKSxlLl9oYXNDb3JuZXJzPSExLGV9cmV0dXJuIENTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldEJvdW5kcyh0aGlzLmJvdW5kcygpKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OmUudG9wTGVmdC54LHk6MH0sYm90dG9tUmlnaHQ6e3g6ZS5ib3R0b21SaWdodC54LHk6dGhpcy5oZWlnaHQoKX19KX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/dGhpcy5hZGRDbGFzcygieC1yZXNpemFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJ4LXJlc2l6YWJsZSIpfSxlLnByb3RvdHlwZS55U2NhbGU9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueVNjYWxlLmNhbGwodGhpcyk7dGhyb3cgbmV3IEVycm9yKCJ5U2NhbGVzIGNhbm5vdCBiZSBzZXQgb24gYW4gWERyYWdCb3hMYXllciIpfSxlLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHQucHJvdG90eXBlLnlFeHRlbnQuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoIlhEcmFnQm94TGF5ZXIgaGFzIG5vIHlFeHRlbnQiKX0sZX0pKHJidC5EcmFnQm94TGF5ZXIpO1RTdC5YRHJhZ0JveExheWVyPUFTdDt2YXIga1N0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShrU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBMU3Q9dU8sUFN0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLmFkZENsYXNzKCJ5LWRyYWctYm94LWxheWVyIiksZS5faGFzQ29ybmVycz0hMSxlfXJldHVybiBMU3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9zZXRCb3VuZHModGhpcy5ib3VuZHMoKSksdGhpc30sZS5wcm90b3R5cGUuX3NldEJvdW5kcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fc2V0Qm91bmRzLmNhbGwodGhpcyx7dG9wTGVmdDp7eDowLHk6ZS50b3BMZWZ0Lnl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMud2lkdGgoKSx5OmUuYm90dG9tUmlnaHQueX19KX0sZS5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24odCl7dCYmdGhpcy5lbmFibGVkKCk/dGhpcy5hZGRDbGFzcygieS1yZXNpemFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJ5LXJlc2l6YWJsZSIpfSxlLnByb3RvdHlwZS54U2NhbGU9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueFNjYWxlLmNhbGwodGhpcyk7dGhyb3cgbmV3IEVycm9yKCJ4U2NhbGVzIGNhbm5vdCBiZSBzZXQgb24gYW4gWURyYWdCb3hMYXllciIpfSxlLnByb3RvdHlwZS54RXh0ZW50PWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIHQucHJvdG90eXBlLnhFeHRlbnQuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoIllEcmFnQm94TGF5ZXIgaGFzIG5vIHhFeHRlbnQiKX0sZX0pKHJidC5EcmFnQm94TGF5ZXIpO2tTdC5ZRHJhZ0JveExheWVyPVBTdCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT11TztlLl9fZXhwb3J0U3RhcihyYnQsdCksZS5fX2V4cG9ydFN0YXIob3h0LHQpLGUuX19leHBvcnRTdGFyKGd4dCx0KSxlLl9fZXhwb3J0U3RhcihieHQsdCksZS5fX2V4cG9ydFN0YXIoYXh0LHQpLGUuX19leHBvcnRTdGFyKEF4dCx0KSxlLl9fZXhwb3J0U3RhcihPeHQsdCksZS5fX2V4cG9ydFN0YXIoVnh0LHQpLGUuX19leHBvcnRTdGFyKGN3dCx0KSxlLl9fZXhwb3J0U3RhcihKYnQsdCksZS5fX2V4cG9ydFN0YXIoeVN0LHQpLGUuX19leHBvcnRTdGFyKFNTdCx0KSxlLl9fZXhwb3J0U3RhcihUU3QsdCksZS5fX2V4cG9ydFN0YXIoa1N0LHQpfSkoaWJ0KTt2YXIgTlN0PXt9LElTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KElTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFJTdD11TyxPU3Q9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJhcmMgZmlsbCIpfHx0aGlzfXJldHVybiBSU3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSxlfSkoWXd0LlNWR0RyYXdlcik7SVN0LkFyY1NWR0RyYXdlcj1PU3Q7dmFyIHpTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoelN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRFN0PXVPLEJTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBvdXRsaW5lIil8fHRoaXN9cmV0dXJuIERTdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlfSkoWXd0LlNWR0RyYXdlcik7elN0LkFyY091dGxpbmVTVkdEcmF3ZXI9QlN0O3ZhciBIU3Q9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KEhTdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEZTdD11TyxWU3Q9R3d0LFVTdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyZWEiKXx8dGhpc31yZXR1cm4gRlN0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHQpe3Quc3R5bGUoInN0cm9rZSIsIm5vbmUiKX0sZS5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleC5jYWxsKHRoaXMsMCl9LGV9KShZd3QuU1ZHRHJhd2VyKTtIU3QuQXJlYVNWR0RyYXdlcj1VU3Q7dmFyIGpTdD1bIm9wYWNpdHkiLCJmaWxsIiwiZmlsbC1vcGFjaXR5Il0sR1N0PVsib3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCJdO0hTdC5tYWtlQXJlYUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIFdTdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkscil7dmFyIG89VlN0LnJlc29sdmVBdHRyaWJ1dGVzKHIsalN0LGlbMF0sMCk7VlN0LnJlbmRlckFyZWEobix0KCksaVswXSxvKTt2YXIgYT1WU3QucmVzb2x2ZUF0dHJpYnV0ZXMocixHU3QsaVswXSwwKTtWU3QucmVuZGVyTGluZShuLGUoKSxpWzBdLGEpfX07dmFyIHFTdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkocVN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWVN0PXVPLFhTdD1Hd3QsJFN0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwibGluZSIpfHx0aGlzfXJldHVybiBZU3QuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgiZmlsbCIsIm5vbmUiKX0sZS5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleC5jYWxsKHRoaXMsMCl9LGV9KShZd3QuU1ZHRHJhd2VyKTtxU3QuTGluZVNWR0RyYXdlcj0kU3Q7dmFyIEtTdD1bIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXTtxU3QubWFrZUxpbmVDYW52YXNEcmF3U3RlcD1mdW5jdGlvbiBaU3QodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcj1YU3QucmVzb2x2ZUF0dHJpYnV0ZXMoaSxLU3QsblswXSwwKTtYU3QucmVuZGVyTGluZShlLHQoKSxuWzBdLHIpfX07dmFyIEpTdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU8sbj1Hd3QsaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlKXt2b2lkIDA9PT1lJiYoZT0iIik7dmFyIG49dC5jYWxsKHRoaXMsInJlY3QiLCIiKXx8dGhpcztyZXR1cm4gbi5fcm9vdENsYXNzTmFtZT1lLG4uX3Jvb3QuY2xhc3NlZChuLl9yb290Q2xhc3NOYW1lLCEwKSxufXJldHVybiBlLl9fZXh0ZW5kcyhuLHQpLG59KShZd3QuU1ZHRHJhd2VyKTt0LlJlY3RhbmdsZVNWR0RyYXdlcj1pO3ZhciByPW4uQ29udGV4dFN0eWxlQXR0cnMuY29uY2F0KFsieCIsInkiLCJ3aWR0aCIsImhlaWdodCJdKTt0LlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uKHQsZSxpKXt0LnNhdmUoKTtmb3IodmFyIG89ZS5sZW5ndGgsYT0wO2E8bzthKyspe3ZhciBzPWVbYV07aWYobnVsbCE9cyl7dmFyIGw9bi5yZXNvbHZlQXR0cmlidXRlcyhpLHIscyxhKTt0LmJlZ2luUGF0aCgpLHQucmVjdChsLngsbC55LGwud2lkdGgsbC5oZWlnaHQpLG4ucmVuZGVyUGF0aFdpdGhTdHlsZSh0LGwpfX10LnJlc3RvcmUoKX07dmFyIG89KGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGkoZSl7cmV0dXJuIG4uY2FsbCh0aGlzLGUsdC5SZWN0YW5nbGVDYW52YXNEcmF3U3RlcCl8fHRoaXN9cmV0dXJuIGUuX19leHRlbmRzKGksbiksaX0pKG4uQ2FudmFzRHJhd2VyKTt0LlJlY3RhbmdsZUNhbnZhc0RyYXdlcj1vfSkoSlN0KTt2YXIgUVN0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShRU3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0TXQ9dU8sZU10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJsaW5lIiwiIil8fHRoaXN9cmV0dXJuIHRNdC5fX2V4dGVuZHMoZSx0KSxlfSkoWXd0LlNWR0RyYXdlcik7UVN0LlNlZ21lbnRTVkdEcmF3ZXI9ZU10O3ZhciBuTXQ9e30saU10PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoaU10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgck10PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxuLGkpe3ZvaWQgMD09PWkmJihpPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLnNjcmVlbldpZHRoPWUsdGhpcy5zY3JlZW5IZWlnaHQ9bix0aGlzLmRldmljZVBpeGVsUmF0aW89aSx0aGlzLnBpeGVsV2lkdGg9ZSppLHRoaXMucGl4ZWxIZWlnaHQ9bippLHRoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIiksdC5zaXplUGl4ZWxzKHRoaXMuY3R4LGUsbixpKX1yZXR1cm4gdC5zaXplUGl4ZWxzPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQuY2FudmFzO3Iud2lkdGg9ZSppLHIuaGVpZ2h0PW4qaSxyLnN0eWxlLndpZHRoPWUrInB4IixyLnN0eWxlLmhlaWdodD1uKyJweCIsdC5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLHQuc2NhbGUoaSxpKX0sdC5wcm90b3R5cGUuYmxpdD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09biYmKG49MCksdC5kcmF3SW1hZ2UodGhpcy5jYW52YXMsZSxuLHRoaXMuc2NyZWVuV2lkdGgsdGhpcy5zY3JlZW5IZWlnaHQpfSx0LnByb3RvdHlwZS5ibGl0Q2VudGVyPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0wKSx0aGlzLmJsaXQodCxNYXRoLmZsb29yKGUtdGhpcy5zY3JlZW5XaWR0aC8yKSxNYXRoLmZsb29yKG4tdGhpcy5zY3JlZW5IZWlnaHQvMikpfSx0LnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oZSxuLGkpe3ZvaWQgMD09PWkmJihpPSExKTt2YXIgcj10aGlzLmRldmljZVBpeGVsUmF0aW87cmV0dXJuIHRoaXMuc2NyZWVuV2lkdGg9ZSx0aGlzLnNjcmVlbkhlaWdodD1uLHRoaXMucGl4ZWxXaWR0aD1lKnIsdGhpcy5waXhlbEhlaWdodD1uKnIsdC5zaXplUGl4ZWxzKHRoaXMuY3R4LGUsbixyKSxpJiZ0aGlzLmN0eC50cmFuc2xhdGUoZS8yLGUvMiksdGhpc30sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUucGl4ZWxXaWR0aCxpPWUucGl4ZWxIZWlnaHQscj1lLmN0eDtyZXR1cm4gci5zYXZlKCksci5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApLG51bGw9PXQ/ci5jbGVhclJlY3QoMCwwLG4saSk6KHIuZmlsbFN0eWxlPXQsci5maWxsUmVjdCgwLDAsbixpKSksci5yZXN0b3JlKCksdGhpc30sdC5wcm90b3R5cGUuZ2V0SW1hZ2VEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3R4LmdldEltYWdlRGF0YSgwLDAsdGhpcy5waXhlbFdpZHRoLHRoaXMucGl4ZWxIZWlnaHQpfSx0fSkoKTtpTXQuQ2FudmFzQnVmZmVyPXJNdCwKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KG5NdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG9NdD11TyxhTXQ9R3d0LHNNdD1pTXQsbE10PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJwYXRoIiwic3ltYm9sIil8fHRoaXN9cmV0dXJuIG9NdC5fX2V4dGVuZHMoZSx0KSxlfSkoWXd0LlNWR0RyYXdlcik7bk10LlN5bWJvbFNWR0RyYXdlcj1sTXQ7dmFyIGNNdD1hTXQuQ29udGV4dFN0eWxlQXR0cnMuY29uY2F0KFsieCIsInkiXSk7ZnVuY3Rpb24gdU10KHQsZSxuLGkscil7cmV0dXJuIG4rcj49MCYmbi1yPD10JiZpK3I+PTAmJmktcjw9ZX1mdW5jdGlvbiBoTXQodCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuITE7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciByPW5baV07aWYodFtyXSE9ZVtyXSlyZXR1cm4hMX1yZXR1cm4hMH1uTXQubWFrZVN5bWJvbENhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIGRNdCh0LGUsbixpKXt2YXIgcj10aGlzO3JldHVybiBmdW5jdGlvbihvLGEscyl7Zm9yKHZhciBsPW8uY2FudmFzLGM9bC5jbGllbnRXaWR0aCx1PWwuY2xpZW50SGVpZ2h0LGg9dm9pZCAwPT09aT9uZXcgc010LkNhbnZhc0J1ZmZlcigwLDApOmksZD1lKCkscD1uKCksZj1udWxsLG09bnVsbCxnPW51bGwsXz0wO188YS5sZW5ndGg7XysrKXt2YXIgeT1hW19dO2lmKG51bGwhPXkpe3ZhciB2PWFNdC5yZXNvbHZlQXR0cmlidXRlcyhzLGNNdCx5LF8pLGI9cCh5LF8sdCk7aWYodU10KGMsdSx2Lngsdi55LGIpKXt2YXIgeD1oTXQoZix2LGFNdC5Db250ZXh0U3R5bGVBdHRycyksdz1kKHksXyxyLl9kYXRhc2V0KTtpZih4JiZnPT1iJiZtPT13KTtlbHNle3ZhciBTPWIrYU10LmdldFN0cm9rZVdpZHRoKHYpKzE7KFM+aC5zY3JlZW5XaWR0aHx8Uz5oLnNjcmVlbkhlaWdodCkmJmgucmVzaXplKFMsUywhMCksaC5jbGVhcigpO3ZhciBNPWguY3R4O00uYmVnaW5QYXRoKCksdyhiKS5jb250ZXh0KE0pKG51bGwpLE0uY2xvc2VQYXRoKCksYU10LnJlbmRlclBhdGhXaXRoU3R5bGUoTSx2KSxtPXcsZz1iLGY9dn1oLmJsaXRDZW50ZXIobyx2Lngsdi55KX19fX19LChmdW5jdGlvbih0KXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlPXVPO2UuX19leHBvcnRTdGFyKElTdCx0KSxlLl9fZXhwb3J0U3Rhcih6U3QsdCksZS5fX2V4cG9ydFN0YXIoSFN0LHQpLGUuX19leHBvcnRTdGFyKEd3dCx0KSxlLl9fZXhwb3J0U3RhcihXd3QsdCksZS5fX2V4cG9ydFN0YXIocVN0LHQpLGUuX19leHBvcnRTdGFyKEpTdCx0KSxlLl9fZXhwb3J0U3RhcihRU3QsdCksZS5fX2V4cG9ydFN0YXIoWXd0LHQpLGUuX19leHBvcnRTdGFyKG5NdCx0KX0pKE5TdCk7dmFyIHBNdD17fSxmTXQ9e30sbU10PXt9LGdNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGdNdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIF9NdD11Tyx5TXQ9Wnl0LHZNdD1GZ3QsYk10PVp3dCx4TXQ9dXd0LHdNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSxlLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSExLGUuX2RlZmVycmVkUmVuZGVyaW5nPSExLGUuX2FwcGx5RGVmZXJyZWRSZW5kZXJpbmdUcmFuc2Zvcm09ZnVuY3Rpb24odCxuLGkscil7ZS5faXNBbmNob3JlZCYmKG51bGwhPWUuX3JlbmRlckFyZWEmJmUuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdCsiLCAiK24rIikgc2NhbGUoIitpKyIsICIrcisiKSIpLG51bGwhPWUuX2NhbnZhcyYmZS5fY2FudmFzLnN0eWxlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyJweCwgIituKyJweCkgc2NhbGUoIitpKyIsICIrcisiKSIpKX0sZS5hZGRDbGFzcygieHktcGxvdCIpLGUuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCl9LGUuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZKCl9LGUuX3JlbmRlckNhbGxiYWNrPWZ1bmN0aW9uKCl7aWYoZS5kZWZlcnJlZFJlbmRlcmluZygpKXt2YXIgdD1lLngoKSYmZS54KCkuc2NhbGUsbj1lLnkoKSYmZS55KCkuc2NhbGU7ZS5fZGVmZXJyZWRSZW5kZXJlci51cGRhdGVEb21haW5zKHQsbil9ZWxzZSBlLnJlbmRlcigpfSxlLl9kZWZlcnJlZFJlbmRlcmVyPW5ldyBiTXQuRGVmZXJyZWRSZW5kZXJlcigoZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW5kZXIoKX0pLGUuX2FwcGx5RGVmZXJyZWRSZW5kZXJpbmdUcmFuc2Zvcm0pLGV9cmV0dXJuIF9NdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWZlcnJlZFJlbmRlcmluZygpJiZ0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnJlc2V0VHJhbnNmb3JtcygpLHQucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5kZWZlcnJlZFJlbmRlcmluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9kZWZlcnJlZFJlbmRlcmluZztpZih0KXt2YXIgZT10aGlzLngoKSYmdGhpcy54KCkuc2NhbGUsbj10aGlzLnkoKSYmdGhpcy55KCkuc2NhbGU7dGhpcy5fZGVmZXJyZWRSZW5kZXJlci5zZXREb21haW5zKGUsbil9cmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nPXQsdGhpc30sZS5wcm90b3R5cGUueD1mdW5jdGlvbih0LG4saSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWF9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShlLl9YX0tFWSx0LG4saSk7dmFyIHI9dGhpcy53aWR0aCgpO3JldHVybiBudWxsIT1uJiZudWxsIT1yJiZuLnJhbmdlKFswLHJdKSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLnk9ZnVuY3Rpb24odCxuLGkpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1lfS0VZKTt0aGlzLl9iaW5kUHJvcGVydHkoZS5fWV9LRVksdCxuLGkpO3ZhciByPXRoaXMuaGVpZ2h0KCk7cmV0dXJuIG51bGwhPW4mJm51bGwhPXImJm4ucmFuZ2UobiBpbnN0YW5jZW9mIHlNdC5DYXRlZ29yeT9bMCxyXTpbciwwXSksdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24odCl7cmV0dXJuIngiPT09dCYmdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj90aGlzLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eSgieSIpOiJ5IiE9PXQmJiJ5MCIhPT10fHwhdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj9udWxsOnRoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ4Iil9LGUucHJvdG90eXBlLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0KTtpZihudWxsIT1lKXt2YXIgbj1lLmFjY2Vzc29yLGk9ZS5zY2FsZTtpZihudWxsIT1pKXJldHVybiBmdW5jdGlvbih0LGUscil7dmFyIG89aS5yYW5nZSgpO3JldHVybiB2TXQuTWF0aC5pblJhbmdlKGkuc2NhbGUobih0LGUscikpLG9bMF0sb1sxXSl9fXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24obixpKXt0LnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLG4saSksbi5vZmZVcGRhdGUoaT09PWUuX1hfS0VZP3RoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s6dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjayl9LGUucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24obixpKXt0LnByb3RvdHlwZS5faW5zdGFsbFNjYWxlRm9yS2V5LmNhbGwodGhpcyxuLGkpLG4ub25VcGRhdGUoaT09PWUuX1hfS0VZP3RoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s6dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjayl9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMueCgpLnNjYWxlJiZ0aGlzLngoKS5zY2FsZS5vZmZVcGRhdGUodGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjayksdGhpcy55KCkuc2NhbGUmJnRoaXMueSgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKSx0aGlzfSxlLnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW4/IngiOnRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4/InkiOiJub25lIjtzd2l0Y2godCl7Y2FzZSJ4Ijp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSEwLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITEsdGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKTticmVhaztjYXNlInkiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITEsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMCx0aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWCgpO2JyZWFrO2Nhc2Uibm9uZSI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSExO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjYWxlIG5hbWUgJyIrdCsiJywgbXVzdCBiZSAneCcsICd5JyBvciAnbm9uZSciKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpO3ZhciByPXRoaXMueCgpLG89ciYmci5zY2FsZTtudWxsIT1vJiZvLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pO3ZhciBhPXRoaXMueSgpLHM9YSYmYS5zY2FsZTtyZXR1cm4gbnVsbCE9cyYmcy5yYW5nZShzIGluc3RhbmNlb2YgeU10LkNhdGVnb3J5P1swLHRoaXMuaGVpZ2h0KCldOlt0aGlzLmhlaWdodCgpLDBdKSx0aGlzfSxlLnByb3RvdHlwZS5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy54KCkuc2NhbGU7bnVsbCE9dCYmdC5hdXRvRG9tYWluKCl9LGUucHJvdG90eXBlLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnkoKS5zY2FsZTtudWxsIT10JiZ0LmF1dG9Eb21haW4oKX0sZS5wcm90b3R5cGUuc2hvd0FsbERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCksdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCksdGhpc30sZS5wcm90b3R5cGUuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YPWZ1bmN0aW9uKCl7dGhpcy5fcHJvamVjdG9yc1JlYWR5KCkmJnRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpfSxlLnByb3RvdHlwZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVk9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCl9LGUucHJvdG90eXBlLl9wcm9qZWN0b3JzUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngoKSxlPXRoaXMueSgpO3JldHVybiBudWxsIT10JiZudWxsIT10LmFjY2Vzc29yJiZudWxsIT1lJiZudWxsIT1lLmFjY2Vzc29yfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LGUsbil7dmFyIGk9eE10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPXhNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJue3g6aSh0LGUsbikseTpyKHQsZSxuKX19LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3LmNhbGwodGhpcyksaT10aGlzLmF0dHIoImRlZmluZWQiKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe24uc2V0KHQsbi5nZXQodCkuZmlsdGVyKChmdW5jdGlvbihuLHIpe3JldHVybihmdW5jdGlvbih0LG4scil7dmFyIG89eE10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKGUueCgpKSh0LG4sciksYT14TXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS55KCkpKHQsbixyKTtyZXR1cm4oIWl8fCExIT09aS5hY2Nlc3Nvcih0LG4scikpJiZ2TXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZ2TXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfSkobixyLHQpfSkpKX0pKSxufSxlLl9YX0tFWT0ieCIsZS5fWV9LRVk9InkiLGV9KSh4TXQuUGxvdCk7Z010LlhZUGxvdD13TXQsCi8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBTTXQ9dU8sTU10PUVkdCxFTXQ9X210LFRNdD1OU3QsQ010PVd3dCxBTXQ9cVN0LGtNdD1aeXQsTE10PUl2dCxQTXQ9Rmd0LE5NdD1wTXQsSU10PXV3dCxSTXQ9Z010LE9NdD17bGluZWFyOk1NdC5jdXJ2ZUxpbmVhcixsaW5lYXJDbG9zZWQ6TU10LmN1cnZlTGluZWFyQ2xvc2VkLHN0ZXA6TU10LmN1cnZlU3RlcCxzdGVwQmVmb3JlOk1NdC5jdXJ2ZVN0ZXBCZWZvcmUsc3RlcEFmdGVyOk1NdC5jdXJ2ZVN0ZXBBZnRlcixiYXNpczpNTXQuY3VydmVCYXNpcyxiYXNpc09wZW46TU10LmN1cnZlQmFzaXNPcGVuLGJhc2lzQ2xvc2VkOk1NdC5jdXJ2ZUJhc2lzQ2xvc2VkLGJ1bmRsZTpNTXQuY3VydmVCdW5kbGUsY2FyZGluYWw6TU10LmN1cnZlQ2FyZGluYWwsY2FyZGluYWxPcGVuOk1NdC5jdXJ2ZUNhcmRpbmFsT3BlbixjYXJkaW5hbENsb3NlZDpNTXQuY3VydmVDYXJkaW5hbENsb3NlZCxtb25vdG9uZTpNTXQuY3VydmVNb25vdG9uZVh9O21NdC5DdXJ2ZU5hbWU9U210Lm1ha2VFbnVtKFsibGluZWFyIiwibGluZWFyQ2xvc2VkIiwic3RlcCIsInN0ZXBCZWZvcmUiLCJzdGVwQWZ0ZXIiLCJiYXNpcyIsImJhc2lzT3BlbiIsImJhc2lzQ2xvc2VkIiwiYnVuZGxlIiwiY2FyZGluYWwiLCJjYXJkaW5hbE9wZW4iLCJjYXJkaW5hbENsb3NlZCIsIm1vbm90b25lIl0pO3ZhciB6TXQ9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7ZS5fY3VydmU9ImxpbmVhciIsZS5fYXV0b3JhbmdlU21vb3RoPSExLGUuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkPSEwLGUuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZD0hMSxlLl9kb3duc2FtcGxpbmdFbmFibGVkPSExLGUuYWRkQ2xhc3MoImxpbmUtcGxvdCIpO3ZhciBuPW5ldyBFTXQuRWFzaW5nO3JldHVybiBuLnN0ZXBEdXJhdGlvbihJTXQuUGxvdC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTiksbi5lYXNpbmdNb2RlKCJleHBJbk91dCIpLG4ubWF4VG90YWxEdXJhdGlvbihJTXQuUGxvdC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTiksZS5hbmltYXRvcihOTXQuQW5pbWF0b3IuTUFJTixuKSxlLmF0dHIoInN0cm9rZSIsKG5ldyBrTXQuQ29sb3IpLnJhbmdlKClbMF0pLGUuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4IiksZX1yZXR1cm4gU010Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnguY2FsbCh0aGlzKToodC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUueS5jYWxsKHRoaXMpOih0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmF1dG9yYW5nZU1vZGUuY2FsbCh0aGlzKToodC5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZS5jYWxsKHRoaXMsZSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS5hdXRvcmFuZ2VTbW9vdGg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYXV0b3JhbmdlU21vb3RoOih0aGlzLl9hdXRvcmFuZ2VTbW9vdGg9dCx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLl9zZXRTY2FsZVNuYXBwaW5nPWZ1bmN0aW9uKCl7IngiPT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkmJnRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSYmdGhpcy54KCkuc2NhbGUgaW5zdGFuY2VvZiBMTXQuUXVhbnRpdGF0aXZlU2NhbGUmJnRoaXMueCgpLnNjYWxlLnNuYXBwaW5nRG9tYWluRW5hYmxlZCghdGhpcy5hdXRvcmFuZ2VTbW9vdGgoKSksInkiPT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkmJnRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZSYmdGhpcy55KCkuc2NhbGUgaW5zdGFuY2VvZiBMTXQuUXVhbnRpdGF0aXZlU2NhbGUmJnRoaXMueSgpLnNjYWxlLnNuYXBwaW5nRG9tYWluRW5hYmxlZCghdGhpcy5hdXRvcmFuZ2VTbW9vdGgoKSl9LGUucHJvdG90eXBlLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2N1cnZlOih0aGlzLl9jdXJ2ZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZG93bnNhbXBsaW5nRW5hYmxlZDoodGhpcy5fZG93bnNhbXBsaW5nRW5hYmxlZD10LHRoaXMpfSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZDoodGhpcy5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5jb2xsYXBzZURlbnNlTGluZXNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZDoodGhpcy5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgQ010LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgQU10LkxpbmVTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBUTXQuQ2FudmFzRHJhd2VyKG4sQU10Lm1ha2VMaW5lQ2FudmFzRHJhd1N0ZXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2QzTGluZUZhY3RvcnkodCl9KSkpfSkpfSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7dmFyIG49dC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5LmNhbGwodGhpcyxlKTtpZighdGhpcy5fYXV0b3JhbmdlU21vb3RoKXJldHVybiBuO2lmKHRoaXMuYXV0b3JhbmdlTW9kZSgpIT09ZSlyZXR1cm4gbjtpZigieCIhPT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmInkiIT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkpcmV0dXJuIG47dmFyIGkscj10aGlzLl9nZXRFZGdlSW50ZXJzZWN0aW9uUG9pbnRzKCk7cmV0dXJuIGk9InkiPT09dGhpcy5hdXRvcmFuZ2VNb2RlKCk/ci5sZWZ0LmNvbmNhdChyLnJpZ2h0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSk6ci50b3AuY29uY2F0KHIuYm90dG9tKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnh9KSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNTXQuZXh0ZW50KE1NdC5tZXJnZShbdCxpXSkpfSkpfSxlLnByb3RvdHlwZS5fZ2V0RWRnZUludGVyc2VjdGlvblBvaW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoISh0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIExNdC5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy54KCkuc2NhbGUgaW5zdGFuY2VvZiBMTXQuUXVhbnRpdGF0aXZlU2NhbGUpKXJldHVybntsZWZ0OltdLHJpZ2h0OltdLHRvcDpbXSxib3R0b206W119O3ZhciBlPXRoaXMueSgpLnNjYWxlLG49dGhpcy54KCkuc2NhbGUsaT17bGVmdDpbXSxyaWdodDpbXSx0b3A6W10sYm90dG9tOltdfSxyPW4uc2NhbGUobi5kb21haW4oKVswXSksbz1uLnNjYWxlKG4uZG9tYWluKClbMV0pLGE9ZS5zY2FsZShlLmRvbWFpbigpWzBdKSxzPWUuc2NhbGUoZS5kb21haW4oKVsxXSk7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihsKXtmb3IodmFyIGMsdSxoLGQscD1sLmRhdGEoKSxmPTE7ZjxwLmxlbmd0aDtmKyspYz1ofHxuLnNjYWxlKHQueCgpLmFjY2Vzc29yKHBbZi0xXSxmLTEsbCkpLHU9ZHx8ZS5zY2FsZSh0LnkoKS5hY2Nlc3NvcihwW2YtMV0sZi0xLGwpKSxoPW4uc2NhbGUodC54KCkuYWNjZXNzb3IocFtmXSxmLGwpKSxkPWUuc2NhbGUodC55KCkuYWNjZXNzb3IocFtmXSxmLGwpKSxjPHI9PXI8PWgmJmkubGVmdC5wdXNoKHt4OnIseTplLmludmVydCh1KyhyLWMpKihkLXUpLyhoLWMpKX0pLGM8bz09bzw9aCYmaS5yaWdodC5wdXNoKHt4Om8seTplLmludmVydCh1KyhvLWMpKihkLXUpLyhoLWMpKX0pLHU8cz09czw9ZCYmaS50b3AucHVzaCh7eDpuLmludmVydChjKyhzLXUpKihoLWMpLyhkLXUpKSx5OnN9KSx1PGE9PWE8PWQmJmkuYm90dG9tLnB1c2goe3g6bi5pbnZlcnQoYysoYS11KSooaC1jKS8oZC11KSkseTphfSl9KSksaX0sZS5wcm90b3R5cGUuX2dldFJlc2V0WUZ1bmN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuZG9tYWluKCksZT1NYXRoLm1heCh0WzBdLHRbMV0pLG49TWF0aC5taW4odFswXSx0WzFdKSxpPWU8MCYmZXx8bj4wJiZufHwwLHI9dGhpcy55KCkuc2NhbGUuc2NhbGUoaSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcn19LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7ZS5kPXRoaXMuX2NvbnN0cnVjdExpbmVQcm9qZWN0b3IoSU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpKSx0LnB1c2goe2F0dHJUb1Byb2plY3RvcjplLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKE5NdC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoTk10LkFuaW1hdG9yLk1BSU4pfSksdH0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCJkIiE9PXQpe3ZhciBuPWVbdF07ZVt0XT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQubGVuZ3RoPjA/bih0WzBdLGUsaSk6bnVsbH19fSkpLGV9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbnRpdHlOZWFyZXN0QnlYVGhlblkodCk7cmV0dXJuIG51bGwhPWU/W2VdOltdfSxlLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0QnlYVGhlblk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MS8wLGk9MS8wLHI9dGhpcy5ib3VuZHMoKSxvPXRoaXMuZW50aXRpZXMoKSxhPW8ubGVuZ3RoLHM9MDtzPGE7cysrKXt2YXIgbD1vW3NdO2lmKFBNdC5NYXRoLndpdGhpbihsLnBvc2l0aW9uLHIpKXt2YXIgYz1NYXRoLmFicyh0LngtbC5wb3NpdGlvbi54KSx1PU1hdGguYWJzKHQueS1sLnBvc2l0aW9uLnkpOyhjPG58fGM9PT1uJiZ1PGkpJiYoZT1sLG49YyxpPXUpfX1yZXR1cm4gZX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdExpbmVQcm9qZWN0b3IoSU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxJTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKSxlfSxlLnByb3RvdHlwZS5fY29uc3RydWN0TGluZVByb2plY3Rvcj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKGkscixvKXtyZXR1cm4gbi5fZDNMaW5lRmFjdG9yeShvLHQsZSkoaSl9fSxlLnByb3RvdHlwZS5fZDNMaW5lRmFjdG9yeT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPUlNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkpLHZvaWQgMD09PW4mJihuPUlNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLE1NdC5saW5lKCkueCgoZnVuY3Rpb24obixpKXtyZXR1cm4gZShuLGksdCl9KSkueSgoZnVuY3Rpb24oZSxpKXtyZXR1cm4gbihlLGksdCl9KSkuY3VydmUodGhpcy5fZ2V0Q3VydmVGYWN0b3J5KCkpLmRlZmluZWQoKGZ1bmN0aW9uKGkscil7cmV0dXJuKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1lKHQsaSxyKSxhPW4odCxpLHIpO3JldHVybiBQTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZQTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfSkoaSxyLHQpfSkpfSxlLnByb3RvdHlwZS5fZ2V0Q3VydmVGYWN0b3J5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJ2ZSgpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGU9T010W3RdO3JldHVybiBudWxsPT1lP09NdC5saW5lYXI6ZX1yZXR1cm4gdH0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IFBNdC5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uLmRhdGEoKTtpZih0Ll9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZHx8dC5fZG93bnNhbXBsaW5nRW5hYmxlZCl7Zm9yKHZhciByPVtdLG89aS5sZW5ndGgsYT0wO2E8bzthKyspclthXT1hO3QuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkJiYocj10Ll9maWx0ZXJDcm9wcGVkUmVuZGVyaW5nKG4scikpLHQuX2Rvd25zYW1wbGluZ0VuYWJsZWQmJihyPXQuX2ZpbHRlckRvd25zYW1wbGluZyhuLHIpKSx0Ll9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQmJihyPXQuX2ZpbHRlckRlbnNlTGluZXMobixyKSk7dmFyIHM9W10sbD1yLmxlbmd0aDtmb3IoYT0wO2E8bDthKyspc1thXT1pW3JbYV1dO2Uuc2V0KG4sW3NdKX1lbHNlIGUuc2V0KG4sW2ldKX0pKSxlfSxlLnByb3RvdHlwZS5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9SU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPUlNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz10LmRhdGEoKSxhPVtdLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUE10Lk1hdGguaW5SYW5nZSh0LDAsbi53aWR0aCgpKSYmUE10Lk1hdGguaW5SYW5nZShlLDAsbi5oZWlnaHQoKSl9LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cyhpKG9bZVtsXV0sZVtsXSx0KSxyKG9bZVtsXV0sZVtsXSx0KSk7aWYoIWMmJm51bGwhPWVbbC0xXSYmbnVsbCE9b1tlW2wtMV1dKXt2YXIgdT1pKG9bZVtsLTFdXSxlW2wtMV0sdCksaD1yKG9bZVtsLTFdXSxlW2wtMV0sdCk7Yz1jfHxzKHUsaCl9aWYoIWMmJm51bGwhPWVbbCsxXSYmbnVsbCE9b1tlW2wrMV1dKXt2YXIgZD1pKG9bZVtsKzFdXSxlW2wrMV0sdCkscD1yKG9bZVtsKzFdXSxlW2wrMV0sdCk7Yz1jfHxzKGQscCl9YyYmYS5wdXNoKGVbbF0pfXJldHVybiBhfSxlLnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgbj10LmRhdGEoKSxpPUlNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscj1JTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLG89W2VbMF1dLGE9ZnVuY3Rpb24obyxhKXt2YXIgcz1pKG5bZVtvXV0sZVtvXSx0KSxsPXIobltlW29dXSxlW29dLHQpLGM9aShuW2VbbysxXV0sZVtvKzFdLHQpLHU9cihuW2VbbysxXV0sZVtvKzFdLHQpO2lmKGE9PT0xLzApcmV0dXJuIE1hdGguZmxvb3Iocyk9PT1NYXRoLmZsb29yKGMpO3ZhciBoPWwrKGMtcykqYTtyZXR1cm4gTWF0aC5mbG9vcih1KT09PU1hdGguZmxvb3IoaCl9LHM9MDtzPGUubGVuZ3RoLTE7KXtmb3IodmFyIGw9ZVtzXSxjPWkobltlW3NdXSxlW3NdLHQpLHU9cihuW2Vbc11dLGVbc10sdCksaD1pKG5bZVtzKzFdXSxlW3MrMV0sdCksZD1yKG5bZVtzKzFdXSxlW3MrMV0sdCkscD1NYXRoLmZsb29yKGMpPT09TWF0aC5mbG9vcihoKT8xLzA6KGQtdSkvKGgtYyksZj1lW3NdLG09cD09PTEvMD91OmMsZz1mLF89bSx5PSEwO3M8ZS5sZW5ndGgtMSYmKHl8fGEocyxwKSk7KXtzKysseT0hMTt2YXIgdj1wPT09MS8wP3IobltlW3NdXSxlW3NdLHQpOmkobltlW3NdXSxlW3NdLHQpO3Y+XyYmKF89dixnPWVbc10pLHY8bSYmKG09dixmPWVbc10pfXZhciBiPWVbc107ZiE9PWwmJm8ucHVzaChmKSxnIT09ZiYmZyE9PWwmJm8ucHVzaChnKSxiIT09bCYmYiE9PWYmJmIhPT1nJiZvLnB1c2goYil9cmV0dXJuIG99LGUucHJvdG90eXBlLl9maWx0ZXJEZW5zZUxpbmVzPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciBuPXQuZGF0YSgpLGk9SU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPUlNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WCh0LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpKG5bZV0sZSx0KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihuW2VdLGUsdCl9KSl9LGUucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKHZhciByPVtdLG89dC5kYXRhKCksYT1udWxsLHM9ZS5sZW5ndGgsbD0wO2w8PXM7KytsKXt2YXIgYz1lW2xdO2lmKG51bGwhPW9bY10pe3ZhciB1PU1hdGguZmxvb3IobihjKSksaD1pKGMpO251bGw9PWE/YT1uZXcgUE10LkJ1Y2tldChjLHUsaCk6YS5pc0luQnVja2V0KHUpP2EuYWRkVG9CdWNrZXQoaCxjKTooci5wdXNoLmFwcGx5KHIsYS5nZXRVbmlxdWVJbmRpY2VzKCkpLGE9bmV3IFBNdC5CdWNrZXQoYyx1LGgpKX19cmV0dXJuIG51bGwhPWEmJnIucHVzaC5hcHBseShyLGEuZ2V0VW5pcXVlSW5kaWNlcygpKSxyfSxlfSkoUk10LlhZUGxvdCk7bU10LkxpbmU9ek10LAovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZk10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRE10PXVPLEJNdD1FZHQsSE10PVp5dCxGTXQ9Rmd0LFZNdD1OU3QsVU10PUhTdCxqTXQ9V3d0LEdNdD1xU3QsV010PXBNdCxxTXQ9dXd0LFlNdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygiYXJlYS1wbG90IiksZS55MCgwKSxlLmF0dHIoImZpbGwtb3BhY2l0eSIsLjI1KSxlLmF0dHIoImZpbGwiLChuZXcgSE10LkNvbG9yKS5yYW5nZSgpWzBdKSxlLl9saW5lRHJhd2Vycz1uZXcgRk10Lk1hcCxlfXJldHVybiBETXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4saSksbnVsbCE9aSl7dmFyIHI9dGhpcy55MCgpLmFjY2Vzc29yO251bGwhPXImJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMF9LRVkscixpKSx0aGlzLl91cGRhdGVZU2NhbGUoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueTA9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWTBfS0VZKTt2YXIgbj10aGlzLnkoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1kwX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMuX3VwZGF0ZVlTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVZU2NhbGUoKX0sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fbGluZURyYXdlcnMuc2V0KGUsbmV3IFZNdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdNdC5MaW5lU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVk10LkNhbnZhc0RyYXdlcih0LEdNdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3ZhciB0PXFNdC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLngoKSksaT1xTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi55KCkpO3JldHVybiBuLl9kM0xpbmVGYWN0b3J5KGUsdCxpKX0pKSl9KSkpLHQucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzfSxlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xpbmVEcmF3ZXJzLmdldChlKTtyZXR1cm4ic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9uLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpuLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLG59LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSksdGhpcy5fbGluZURyYXdlcnMuZ2V0KGUpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dlbmVyYXRlTGluZURyYXdTdGVwcygpLG49dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihpKXt2YXIgcj1xTXQuUGxvdC5hcHBseURyYXdTdGVwcyhlLGkpO3QuX2xpbmVEcmF3ZXJzLmdldChpKS5kcmF3KG4uZ2V0KGkpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihxTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoV010LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihXTXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHQuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKHFNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSksdH0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcgak10LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgVU10LkFyZWFTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBWTXQuQ2FudmFzRHJhd2VyKG4sVU10Lm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXAoKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89blsyXSxhPWUuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoaSxyKTtyZXR1cm4gZS5fY3JlYXRlQXJlYUdlbmVyYXRvcihpLHIsbyxhLHQpfSksKGZ1bmN0aW9uKCl7dmFyIG49ZS5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxpPW5bMF0scj1uWzFdLG89ZS5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihpLHIpO3JldHVybiBlLl9jcmVhdGVUb3BMaW5lR2VuZXJhdG9yKGkscixvLHQpfSkpKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtlLmQ9dGhpcy5fY29uc3RydWN0QXJlYVByb2plY3RvcihxTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCkscU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpLHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoV010LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihXTXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRFeHRlbnRzRm9yUHJvcGVydHkoInkwIiksZT1GTXQuQXJyYXkuZmxhdHRlbih0KSxuPUZNdC5BcnJheS51bmlxKGUpLGk9MT09PW4ubGVuZ3RoP25bMF06bnVsbCxyPXRoaXMueSgpLG89ciYmci5zY2FsZTtudWxsIT1vJiYobnVsbCE9dGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXImJihvLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpLHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPW51bGwpLG51bGwhPWkmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltpXX0sby5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSkpfSxlLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gcU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3JldHVybltxTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHFNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkscU10LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSldfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49dGhpcy5fY29vcmRpbmF0ZVByb2plY3RvcnMoKTtyZXR1cm4gZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IoblswXSxuWzFdLG5bMl0pLGV9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBCTXQuc2VsZWN0QWxsKCk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLl9saW5lRHJhd2Vycy5nZXQodCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoLmFwcGx5KGksdC5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSkpLEJNdC5zZWxlY3RBbGwoaSl9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dGhpcy5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihxTXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHFNdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3JldHVybiBmdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2NyZWF0ZUFyZWFHZW5lcmF0b3IodCxlLG4scixzKShvKX19LGUucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSxyKXt2YXIgbz10KG4saSxyKSxhPWUobixpLHIpO3JldHVybiBGTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pJiZGTXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpfX0sZS5wcm90b3R5cGUuX2NyZWF0ZUFyZWFHZW5lcmF0b3I9ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gQk10LmFyZWEoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixyKX0pKS55MSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4scil9KSkueTAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4odCxlLHIpfSkpLmN1cnZlKG8pLmRlZmluZWQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkodCxlLHIpfSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gQk10LmxpbmUoKS54KChmdW5jdGlvbihlLG4pe3JldHVybiB0KGUsbixpKX0pKS55KChmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsbixpKX0pKS5jdXJ2ZShyKS5kZWZpbmVkKChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSxpKX0pKX0sZS5fWTBfS0VZPSJ5MCIsZX0pKG1NdC5MaW5lKTtmTXQuQXJlYT1ZTXQ7dmFyIFhNdD17fTshKGZ1bmN0aW9uKHQpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU8sbj1FZHQsaT1JbXQscj1fbXQsbz1neXQsYT1OU3Qscz1Xd3QsbD1KU3QsYz1kd3QsdT1aeXQsaD1JdnQsZD1GZ3QscD1TbXQsZj1wTXQsbT11d3QsZz1nTXQ7dC5CYXJPcmllbnRhdGlvbj1wLm1ha2VFbnVtKFsidmVydGljYWwiLCJob3Jpem9udGFsIl0pLHQuTGFiZWxzUG9zaXRpb249cC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIiwib3V0c2lkZSJdKSx0LkJhckFsaWdubWVudD1wLm1ha2VFbnVtKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSk7dmFyIF89KGZ1bmN0aW9uKHApe2Z1bmN0aW9uIGcoZSl7dm9pZCAwPT09ZSYmKGU9InZlcnRpY2FsIik7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xhYmVsRm9ybWF0dGVyPW8uaWRlbnRpdHkoKSxuLl9sYWJlbHNFbmFibGVkPSExLG4uX2xhYmVsc1Bvc2l0aW9uPXQuTGFiZWxzUG9zaXRpb24uZW5kLG4uX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlPSEwLG4uX2JhckFsaWdubWVudD0ibWlkZGxlIixuLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3M9Yy5tZW1vaXplKHkpLG4uX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsbi5hZGRDbGFzcygiYmFyLXBsb3QiKSwidmVydGljYWwiIT09ZSYmImhvcml6b250YWwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBQbG90cy5CYXIiKTtyZXR1cm4gbi5faXNWZXJ0aWNhbD0idmVydGljYWwiPT09ZSxuLmFuaW1hdG9yKCJiYXNlbGluZSIsbmV3IHIuTnVsbCksbi5hdHRyKCJmaWxsIiwobmV3IHUuQ29sb3IpLnJhbmdlKClbMF0pLG4uYXR0cihnLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSxuLl9sYWJlbENvbmZpZz1uZXcgZC5NYXAsbi5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuW24uYmFzZWxpbmVWYWx1ZSgpXX0sbn1yZXR1cm4gZS5fX2V4dGVuZHMoZyxwKSxnLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzfSxnLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/cC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihudWxsPT1lP3AucHJvdG90eXBlLnguY2FsbCh0aGlzLHQpOnAucHJvdG90eXBlLnguY2FsbCh0aGlzLHQsZSksdGhpcy5fdXBkYXRlVGhpY2tuZXNzQXR0cigpLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LGcucHJvdG90eXBlLnk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9wLnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG51bGw9PWU/cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCk6cC5wcm90b3R5cGUueS5jYWxsKHRoaXMsdCxlKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMpfSxnLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKTp0aGlzLngoKX0sZy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLngoKTp0aGlzLnkoKX0sZy5wcm90b3R5cGUuYmFyRW5kPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGcuX0JBUl9FTkRfS0VZKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShnLl9CQVJfRU5EX0tFWSx0LGUmJmUuc2NhbGUpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LGcucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHMuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLlJlY3RhbmdsZVNWR0RyYXdlcihnLl9CQVJfQVJFQV9DTEFTUyl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBhLlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sZy5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSxnLnByb3RvdHlwZS5iYXNlbGluZVZhbHVlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwO3ZhciBlPXRoaXMubGVuZ3RoKCkuc2NhbGU7cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiB1LlRpbWU/bmV3IERhdGUoMCk6MH1yZXR1cm4gdGhpcy5fYmFzZWxpbmVWYWx1ZT10LHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpc30sZy5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsdCksdGhpc30sZy5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHAucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBwLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyx0KSx0aGlzfSxnLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbih0KXtyZXR1cm4gcC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQuY2FsbCh0aGlzLHQpLHRoaXN9LGcucHJvdG90eXBlLmRhdGFzZXRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3AucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyk6KHAucHJvdG90eXBlLmRhdGFzZXRzLmNhbGwodGhpcyx0KSx0aGlzKX0sZy5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCxudWxsIT1lJiYodGhpcy5fbGFiZWxzUG9zaXRpb249ZSksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LGcucHJvdG90eXBlLmxhYmVsRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsRm9ybWF0dGVyOih0aGlzLl9sYWJlbEZvcm1hdHRlcj10LHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxnLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXAucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLHQpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGcuX0xBQkVMX0FSRUFfQ0xBU1MsITApLHI9bmV3IGkuU3ZnQ29udGV4dChuLm5vZGUoKSksbz1uZXcgaS5DYWNoZU1lYXN1cmVyKHIpLGE9bmV3IGkuV3JpdGVyKG8scik7cmV0dXJuIHRoaXMuX2xhYmVsQ29uZmlnLnNldCh0LHtsYWJlbEFyZWE6bixtZWFzdXJlcjpvLHdyaXRlcjphfSksZX0sZy5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbih0KXtwLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyx0KTt2YXIgZT10aGlzLl9sYWJlbENvbmZpZy5nZXQodCk7bnVsbCE9ZSYmKGUubGFiZWxBcmVhLnJlbW92ZSgpLHRoaXMuX2xhYmVsQ29uZmlnLmRlbGV0ZSh0KSl9LGcucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7dmFyIG49ZS5faXNWZXJ0aWNhbD9lLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3RYKHQpOmUuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdFkodCk7cmV0dXJuIHZvaWQgMD09PW4/dm9pZCAwOmUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShuKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKG4pOm4oKX0sZy5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gZS5fZW50aXRpZXNJbnRlcnNlY3RpbmcodC54LHQueSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChuKTpuKCl9LGcucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHMuY2FsbChlLHQpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxnLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkscj1pLmxlbmd0aCxvPTA7bzxyO28rKyl7dmFyIGE9aVtvXTtkLkRPTS5pbnRlcnNlY3RzQkJveCh0LGUsdGhpcy5fZW50aXR5Qm91bmRzKGEpKSYmbi5wdXNoKHRoaXMuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShhKSl9cmV0dXJuIG59LGcucHJvdG90eXBlLl91cGRhdGVMZW5ndGhTY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXt2YXIgdD10aGlzLmxlbmd0aCgpLnNjYWxlO3QgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlJiYodC5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sZy5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZCgoZnVuY3Rpb24oKXtyZXR1cm4gcC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0KX0pKX0sZy5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOm4seTE6dGhpcy5faXNWZXJ0aWNhbD9uOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6bix5Mjp0aGlzLl9pc1ZlcnRpY2FsP246dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxpKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmZC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCl9LGcucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMscj1wLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLHQpO2lmKCJ4Ij09PXQmJnRoaXMuX2lzVmVydGljYWwpZT10aGlzLngoKTtlbHNle2lmKCJ5IiE9PXR8fHRoaXMuX2lzVmVydGljYWwpcmV0dXJuIHI7ZT10aGlzLnkoKX1pZighKGUmJmUuc2NhbGUmJmUuc2NhbGUgaW5zdGFuY2VvZiBoLlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm4gcjt2YXIgbz1lLnNjYWxlLGE9dGhpcy5fYmFyUGl4ZWxUaGlja25lc3MoKTtyZXR1cm4gci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmV4dGVudChbby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFswXSksYSkpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMF0pLGEpK2EpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMV0pLGEpKSxvLmludmVydChpLl9nZXRQb3NpdGlvbkF0dHIoby5zY2FsZSh0WzFdKSxhKSthKV0pfSkpfSxnLnByb3RvdHlwZS5fZ2V0UG9zaXRpb25BdHRyPWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX2lzVmVydGljYWx8fCh0LT1lLGUqPS0xKSx0aGlzLl9iYXJBbGlnbm1lbnQpe2Nhc2Uic3RhcnQiOnJldHVybiB0O2Nhc2UiZW5kIjpyZXR1cm4gdC1lO2Nhc2UibWlkZGxlIjpkZWZhdWx0OnJldHVybiB0LWUvMn19LGcucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dldERhdGFUb0RyYXcoKSxuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGk9dGhpcy5kYXRhc2V0cygpLnNvbWUoKGZ1bmN0aW9uKGkpe3JldHVybiBlLmdldChpKS5zb21lKChmdW5jdGlvbihlLHIpe3JldHVybiBudWxsIT1lJiZ0Ll9kcmF3TGFiZWwoZSxyLGksbil9KSl9KSk7dGhpcy5faGlkZUJhcnNJZkFueUFyZVRvb1dpZGUmJmkmJnRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGFiZWxDb25maWcuZ2V0KGUpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pKX0sZy5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9sYWJlbENvbmZpZy5nZXQobiksbz1yLmxhYmVsQXJlYSxhPXIubWVhc3VyZXIscz1yLndyaXRlcixsPSgwLHRoaXMubGVuZ3RoKCkuYWNjZXNzb3IpKHQsZSxuKSxjPXRoaXMubGVuZ3RoKCkuc2NhbGUsdT1udWxsIT1jP2Muc2NhbGUobCk6bCxoPW51bGwhPWM/Yy5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk6dGhpcy5iYXNlbGluZVZhbHVlKCksZD17eDppLngodCxlLG4pLHk6aS55KHQsZSxuKX0scD17d2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX0sZj10aGlzLl9sYWJlbEZvcm1hdHRlcihsLHQsZSxuKSxtPWEubWVhc3VyZShmKSxnPXRoaXMuX3Nob3VsZFNob3dMYWJlbE9uQmFyKGQscCxtKSxfPXRoaXMuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcyhkLHAsbSxnLHRoaXMuX2lzVmVydGljYWw/dTw9aDp1PGgpLHk9Xy5jb250YWluZXJEaW1lbnNpb25zLHY9Xy5sYWJlbENvbnRhaW5lck9yaWdpbixiPV8ubGFiZWxPcmlnaW4seD1fLmFsaWdubWVudCx3PWkuZmlsbCh0LGUsbiksUz10aGlzLl9jcmVhdGVMYWJlbENvbnRhaW5lcihvLHYsYixtLGcsdyk7cmV0dXJuIHMud3JpdGUoZix5LndpZHRoLHkuaGVpZ2h0LHt4QWxpZ246eC54LHlBbGlnbjp4Lnl9LFMubm9kZSgpKSx0aGlzLl9pc1ZlcnRpY2FsP3Aud2lkdGg8bS53aWR0aDpwLmhlaWdodDxtLmhlaWdodH0sZy5wcm90b3R5cGUuX3Nob3VsZFNob3dMYWJlbE9uQmFyPWZ1bmN0aW9uKGUsbixpKXtpZih0aGlzLl9sYWJlbHNQb3NpdGlvbj09PXQuTGFiZWxzUG9zaXRpb24ub3V0c2lkZSlyZXR1cm4hMTt2YXIgcj10aGlzLl9pc1ZlcnRpY2FsP2UueTplLngsbz10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgsYT10aGlzLl9pc1ZlcnRpY2FsP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLHM9citvLGw9bztyZXR1cm4gcz5hP2w9YS1yOnI8MCYmKGw9cyksKHRoaXMuX2lzVmVydGljYWw/aS5oZWlnaHQ6aS53aWR0aCkrZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI8PWx9LGcucHJvdG90eXBlLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXM9ZnVuY3Rpb24oZSxuLGkscixvKXt2YXIgYT10aGlzLHM9dGhpcy5faXNWZXJ0aWNhbD9lLnk6ZS54LGw9dGhpcy5faXNWZXJ0aWNhbD9uLmhlaWdodDpuLndpZHRoLGM9dGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoLHU9ImNlbnRlciIsaD1sLGQ9cyxwPXMsZj1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJ0b3BMZWZ0IjpyZXR1cm4gdT1hLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixkKz1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUix2b2lkKHArPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtjYXNlImNlbnRlciI6cmV0dXJuIHZvaWQocCs9KGwrYykvMik7Y2FzZSJib3R0b21SaWdodCI6cmV0dXJuIHU9YS5faXNWZXJ0aWNhbD8iYm90dG9tIjoicmlnaHQiLGQtPWcuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLHZvaWQocCs9aC1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUi1jKX19O2lmKHIpc3dpdGNoKHRoaXMuX2xhYmVsc1Bvc2l0aW9uKXtjYXNlIHQuTGFiZWxzUG9zaXRpb24uc3RhcnQ6ZihvPyJib3R0b21SaWdodCI6InRvcExlZnQiKTticmVhaztjYXNlIHQuTGFiZWxzUG9zaXRpb24ubWlkZGxlOmYoImNlbnRlciIpO2JyZWFrO2Nhc2UgdC5MYWJlbHNQb3NpdGlvbi5lbmQ6ZihvPyJ0b3BMZWZ0IjoiYm90dG9tUmlnaHQiKX1lbHNlIG8/KHU9dGhpcy5faXNWZXJ0aWNhbD8idG9wIjoibGVmdCIsaD1sK2cuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2MsZC09Zy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrYyxwLT1nLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUitjKToodT10aGlzLl9pc1ZlcnRpY2FsPyJib3R0b20iOiJyaWdodCIsaD1sK2cuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2MscCs9bCtnLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUik7cmV0dXJue2NvbnRhaW5lckRpbWVuc2lvbnM6e3dpZHRoOnRoaXMuX2lzVmVydGljYWw/bi53aWR0aDpoLGhlaWdodDp0aGlzLl9pc1ZlcnRpY2FsP2g6bi5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/ZS54OmQseTp0aGlzLl9pc1ZlcnRpY2FsP2Q6ZS55fSxsYWJlbE9yaWdpbjp7eDp0aGlzLl9pc1ZlcnRpY2FsP2UueCtuLndpZHRoLzItaS53aWR0aC8yOnAseTp0aGlzLl9pc1ZlcnRpY2FsP3A6ZS55K24uaGVpZ2h0LzItaS5oZWlnaHQvMn0sYWxpZ25tZW50Ont4OnRoaXMuX2lzVmVydGljYWw/ImNlbnRlciI6dSx5OnRoaXMuX2lzVmVydGljYWw/dToiY2VudGVyIn19fSxnLnByb3RvdHlwZS5fY3JlYXRlTGFiZWxDb250YWluZXI9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhPXQuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZS54KyIsICIrZS55KyIpIik7aWYocil7YS5jbGFzc2VkKCJvbi1iYXItbGFiZWwiLCEwKTt2YXIgcz0xLjYqZC5Db2xvci5jb250cmFzdCgid2hpdGUiLG8pPGQuQ29sb3IuY29udHJhc3QoImJsYWNrIixvKTthLmNsYXNzZWQocz8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCl9ZWxzZSBhLmNsYXNzZWQoIm9mZi1iYXItbGFiZWwiLCEwKTtyZXR1cm4gYX0sZy5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPXRoaXMubGVuZ3RoKCkuc2NhbGUuc2NhbGUodGhpcy5iYXNlbGluZVZhbHVlKCkpLGk9dGhpcy5faXNWZXJ0aWNhbD8iaGVpZ2h0Ijoid2lkdGgiO2VbdGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiXT1mdW5jdGlvbigpe3JldHVybiBufSxlW2ldPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoZi5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoZi5BbmltYXRvci5NQUlOKX0pLHR9LGcucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1wLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxuPXRoaXMubGVuZ3RoKCkuc2NhbGUuc2NhbGUodGhpcy5iYXNlbGluZVZhbHVlKCkpLGk9dGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiLHI9dGhpcy5faXNWZXJ0aWNhbD8ieCI6InkiLG89bS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnBvc2l0aW9uKCkpLGE9bS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLmxlbmd0aCgpKSxzPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gTWF0aC5hYnMobi1hKHQsZSxpKSl9LGw9ZVtnLl9CQVJfVEhJQ0tORVNTX0tFWV0sYz1lLmdhcCx1PW51bGw9PWM/bDpmdW5jdGlvbih0LGUsbil7dmFyIGk9bCh0LGUsbik7cmV0dXJuIGk8Zy5fQkFSX0dBUExFU1NfVEhSRVNIT0xEX1BYP2k6aS1jKHQsZSxuKX07cmV0dXJuIGUud2lkdGg9dGhpcy5faXNWZXJ0aWNhbD91OnMsZS5oZWlnaHQ9dGhpcy5faXNWZXJ0aWNhbD9zOnUsZVtpXT1mdW5jdGlvbih0LGUsaSl7dmFyIHI9YSh0LGUsaSk7cmV0dXJuIHI+bj9uOnJ9LGVbcl09ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0Ll9nZXRQb3NpdGlvbkF0dHIobyhlLG4saSksbChlLG4saSkpfSxlfSxnLnByb3RvdHlwZS5fdXBkYXRlVGhpY2tuZXNzQXR0cj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnBvc2l0aW9uKCksbj10aGlzLmJhckVuZCgpO251bGwhPWUmJm51bGwhPW4/KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITEsdGhpcy5hdHRyKGcuX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbih0LGkscil7dmFyIG89ZS5hY2Nlc3Nvcih0LGksciksYT1uLmFjY2Vzc29yKHQsaSxyKTtyZXR1cm4gbz1lLnNjYWxlP2Uuc2NhbGUuc2NhbGUobyk6byxhPW4uc2NhbGU/bi5zY2FsZS5zY2FsZShhKTphLE1hdGguYWJzKGEtbyl9KSkpOih0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSEwLHRoaXMuYXR0cihnLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gdC5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSl9LGcucHJvdG90eXBlLl9iYXJQaXhlbFRoaWNrbmVzcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzJiZ0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3ModGhpcy5wb3NpdGlvbigpLHRoaXMuZGF0YXNldHMoKSx0aGlzLl9pc1ZlcnRpY2FsP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpKTowfSxnLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGhpcy5kYXRhc2V0cygpKSx0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT9wLnByb3RvdHlwZS5lbnRpdGllcy5jYWxsKHRoaXMsdCk6W119LGcucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BpeGVsQm91bmRzKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpfSxnLnByb3RvdHlwZS5fcGl4ZWxCb3VuZHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVybnt4OmkueCh0LGUsbikseTppLnkodCxlLG4pLHdpZHRoOmkud2lkdGgodCxlLG4pLGhlaWdodDppLmhlaWdodCh0LGUsbil9fSxnLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fcGl4ZWxCb3VuZHModCxlLG4pLHI9bS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpOnRoaXMueCgpKSh0LGUsbiksbz0odGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKS5zY2FsZTp0aGlzLngoKS5zY2FsZSkuc2NhbGUodGhpcy5iYXNlbGluZVZhbHVlKCkpO3JldHVybiB0aGlzLl9waXhlbFBvaW50QmFyKHIsbyxpKX0sZy5wcm90b3R5cGUuX3BpeGVsUG9pbnRCYXI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHI7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/KGk9bi54K24ud2lkdGgvMixyPXQ8PWU/bi55Om4ueStuLmhlaWdodCk6KGk9dD49ZT9uLngrbi53aWR0aDpuLngscj1uLnkrbi5oZWlnaHQvMikse3g6aSx5OnJ9fSxnLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24odCxlKXtwLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLHQsZSl9LGcucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW5ldyBkLk1hcCxuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGk9dGhpcy53aWR0aCgpLHI9dGhpcy5oZWlnaHQoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG8pe3ZhciBhPW8uZGF0YSgpLm1hcCgoZnVuY3Rpb24oZSxhKXtyZXR1cm4gdC5faXNEYXR1bU9uU2NyZWVuKG4saSxyLGUsYSxvKT9lOm51bGx9KSk7ZS5zZXQobyxhKX0pKSxlfSxnLnByb3RvdHlwZS5faXNEYXR1bU9uU2NyZWVuPWZ1bmN0aW9uKHQsZSxuLGkscixvKXt2YXIgYT10LngoaSxyLG8pLHM9dC55KGkscixvKSxsPXQud2lkdGgoaSxyLG8pLGM9dC5oZWlnaHQoaSxyLG8pO3JldHVybiEhKGQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpJiZkLk1hdGguaXNWYWxpZE51bWJlcihzKSYmZC5NYXRoLmlzVmFsaWROdW1iZXIobCkmJmQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKSYmZC5NYXRoLmJvdW5kc0ludGVyc2VjdHMoYSxzLGwsYywwLDAsZSxuKX0sZy5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztwLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2xhYmVsQ29uZmlnLmdldChlKS5tZWFzdXJlci5yZXNldCgpfSkpfSxnLl9CQVJfVEhJQ0tORVNTX1JBVElPPS45NSxnLl9CQVJfR0FQTEVTU19USFJFU0hPTERfUFg9MyxnLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTz0uNCxnLl9CQVJfQVJFQV9DTEFTUz0iYmFyLWFyZWEiLGcuX0JBUl9FTkRfS0VZPSJiYXJFbmQiLGcuX0JBUl9USElDS05FU1NfS0VZPSJ3aWR0aCIsZy5fTEFCRUxfQVJFQV9DTEFTUz0iYmFyLWxhYmVsLXRleHQtYXJlYSIsZy5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI9MTAsZ30pKGcuWFlQbG90KTtmdW5jdGlvbiB5KHQsZSxpKXt2YXIgcixvPXQuc2NhbGU7aWYobyBpbnN0YW5jZW9mIHUuQ2F0ZWdvcnkpcj1vLnJhbmdlQmFuZCgpO2Vsc2V7dmFyIGE9dC5hY2Nlc3NvcixzPW4uc2V0KGQuQXJyYXkuZmxhdHRlbihlLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSgpLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gYShlLG4sdCl9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlT2YoKX0pKX0pKSkpLnZhbHVlcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuK3R9KSk7cy5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSk7dmFyIGw9cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBvLnNjYWxlKHQpfSkpLGM9bi5wYWlycyhsKTtyPWQuTWF0aC5taW4oYywoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5hYnModFsxXS10WzBdKX0pLGkqXy5fU0lOR0xFX0JBUl9ESU1FTlNJT05fUkFUSU8pLHIqPV8uX0JBUl9USElDS05FU1NfUkFUSU99cmV0dXJuIHJ9dC5CYXI9X30pKFhNdCk7dmFyICRNdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoJE10LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS010PXVPLFpNdD1aeXQsSk10PUZndCxRTXQ9WE10LHRFdD11d3QsZUV0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPSJ2ZXJ0aWNhbCIpO3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLl9jbHVzdGVyT2Zmc2V0cz1uZXcgSk10Lk1hcCxufXJldHVybiBLTXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLGk9dGhpcy5fbWFrZUlubmVyU2NhbGUoKSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkucmFuZ2VCYW5kKCl9O24ud2lkdGg9dGhpcy5faXNWZXJ0aWNhbD9yOm4ud2lkdGgsbi5oZWlnaHQ9dGhpcy5faXNWZXJ0aWNhbD9uLmhlaWdodDpyO3ZhciBvPW4ueCxhPW4ueTtyZXR1cm4gbi54PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24odCxuLGkpe3JldHVybiBvKHQsbixpKStlLl9jbHVzdGVyT2Zmc2V0cy5nZXQoaSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbyh0LGUsbil9LG4ueT10aGlzLl9pc1ZlcnRpY2FsP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbil9OmZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gYSh0LG4saSkrZS5fY2x1c3Rlck9mZnNldHMuZ2V0KGkpfSxufSxlLnByb3RvdHlwZS5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX21ha2VJbm5lclNjYWxlKCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2NsdXN0ZXJPZmZzZXRzLnNldChuLGUuc2NhbGUoU3RyaW5nKGkpKS1lLnJhbmdlQmFuZCgpLzIpfSkpfSxlLnByb3RvdHlwZS5fbWFrZUlubmVyU2NhbGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgWk10LkNhdGVnb3J5O3QuZG9tYWluKHRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pKSk7dmFyIGU9dEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuYXR0cihRTXQuQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpO3JldHVybiB0LnJhbmdlKFswLGUobnVsbCwwLG51bGwpXSksdH0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uKCksdC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKX0sZX0pKFFNdC5CYXIpOyRNdC5DbHVzdGVyZWRCYXI9ZUV0O3ZhciBuRXQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KG5FdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGlFdD11TyxyRXQ9RWR0LG9FdD1JbXQsYUV0PV9tdCxzRXQ9Z3l0LGxFdD1aeXQsY0V0PUZndCx1RXQ9SVN0LGhFdD16U3QsZEV0PVd3dCxwRXQ9a190LGZFdD11d3QsbUV0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9zdGFydEFuZ2xlPTAsZS5fZW5kQW5nbGU9MipNYXRoLlBJLGUuX2xhYmVsRm9ybWF0dGVyPXNFdC5pZGVudGl0eSgpLGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5pbm5lclJhZGl1cygwKSxlLm91dGVyUmFkaXVzKChmdW5jdGlvbigpe3ZhciB0PWUuX3BpZUNlbnRlcigpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLndpZHRoKCktdC54LHQueCksTWF0aC5tYXgoZS5oZWlnaHQoKS10LnksdC55KSl9KSksZS5hZGRDbGFzcygicGllLXBsb3QiKSxlLmF0dHIoImZpbGwiLChmdW5jdGlvbih0LGUpe3JldHVybiBTdHJpbmcoZSl9KSxuZXcgbEV0LkNvbG9yKSxlLl9zdHJva2VEcmF3ZXJzPW5ldyBjRXQuTWFwLGV9cmV0dXJuIGlFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3N0cm9rZURyYXdlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXR0YWNoVG8oZS5fcmVuZGVyQXJlYSl9KSl9LGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKTt2YXIgcj10aGlzLl9waWVDZW50ZXIoKTt0aGlzLl9yZW5kZXJBcmVhLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3IueCsiLCIrci55KyIpIik7dmFyIG89TWF0aC5taW4oTWF0aC5tYXgodGhpcy53aWR0aCgpLXIueCxyLngpLE1hdGgubWF4KHRoaXMuaGVpZ2h0KCktci55LHIueSkpO3JldHVybiBudWxsIT10aGlzLmlubmVyUmFkaXVzKCkuc2NhbGUmJnRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxvXSksbnVsbCE9dGhpcy5vdXRlclJhZGl1cygpLnNjYWxlJiZ0aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUucmFuZ2UoWzAsb10pLHRoaXN9LGUucHJvdG90eXBlLmFkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLmFkZERhdGFzZXQuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9hZGREYXRhc2V0PWZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLmRhdGFzZXRzKCkubGVuZ3RoKXJldHVybiBjRXQuV2luZG93Lndhcm4oIk9ubHkgb25lIGRhdGFzZXQgaXMgc3VwcG9ydGVkIGluIFBpZSBwbG90cyIpLHRoaXM7dGhpcy5fdXBkYXRlUGllQW5nbGVzKCksdC5wcm90b3R5cGUuX2FkZERhdGFzZXQuY2FsbCh0aGlzLGUpO3ZhciBuPW5ldyBoRXQuQXJjT3V0bGluZVNWR0RyYXdlcjtyZXR1cm4gdGhpcy5faXNTZXR1cCYmbi5hdHRhY2hUbyh0aGlzLl9yZW5kZXJBcmVhKSx0aGlzLl9zdHJva2VEcmF3ZXJzLnNldChlLG4pLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLnJlbW92ZURhdGFzZXQuY2FsbCh0aGlzLGUpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSksdGhpcy5fc3Ryb2tlRHJhd2Vycy5nZXQoZSkucmVtb3ZlKCl9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpcy5fc3Ryb2tlRHJhd2Vycy5kZWxldGUoZSksdGhpcy5fc3RhcnRBbmdsZXM9W10sdGhpcy5fZW5kQW5nbGVzPVtdLHRoaXN9LGUucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpO3ZhciBpPXQucHJvdG90eXBlLnNlbGVjdGlvbnMuY2FsbCh0aGlzLGUpLm5vZGVzKCk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9bi5fc3Ryb2tlRHJhd2Vycy5nZXQodCk7bnVsbCE9ZSYmaS5wdXNoLmFwcGx5KGksZS5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSkpLHJFdC5zZWxlY3RBbGwoaSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlLmNhbGwodGhpcyksdGhpcy5fdXBkYXRlUGllQW5nbGVzKCksdGhpcy5yZW5kZXIoKX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgZEV0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgdUV0LkFyY1NWR0RyYXdlcn0pLChmdW5jdGlvbigpe3JldHVybiBwRXQud2FybigiY2FudmFzIHJlbmRlcmVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gUGllIFBsb3QhIiksbnVsbH0pKX0sZS5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5kYXRhc2V0cygpKSx0LnByb3RvdHlwZS5lbnRpdGllcy5jYWxsKHRoaXMsZSkubWFwKChmdW5jdGlvbih0KXt0LnBvc2l0aW9uLngrPW4ud2lkdGgoKS8yLHQucG9zaXRpb24ueSs9bi5oZWlnaHQoKS8yO3ZhciBlPXJFdC5zZWxlY3Qobi5fc3Ryb2tlRHJhd2Vycy5nZXQodC5kYXRhc2V0KS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KHQuaW5kZXgpKSxpPXQ7cmV0dXJuIGkuc3Ryb2tlU2VsZWN0aW9uPWUsaX0pKX0sZS5wcm90b3R5cGUuc2VjdG9yVmFsdWU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9TRUNUT1JfVkFMVUVfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX1NFQ1RPUl9WQUxVRV9LRVksdCxuKSx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5pbm5lclJhZGl1cz1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX0lOTkVSX1JBRElVU19LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fSU5ORVJfUkFESVVTX0tFWSx0LG4pLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fT1VURVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9PVVRFUl9SQURJVVNfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFydEFuZ2xlOih0aGlzLl9zdGFydEFuZ2xlPXQsdGhpcy5fdXBkYXRlUGllQW5nbGVzKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZW5kQW5nbGU6KHRoaXMuX2VuZEFuZ2xlPXQsdGhpcy5fdXBkYXRlUGllQW5nbGVzKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWxGb3JtYXR0ZXI6KHRoaXMuX2xhYmVsRm9ybWF0dGVyPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLndpZHRoKCkvMixuPXRoaXMuaGVpZ2h0KCkvMixpPXRoaXMuX3NsaWNlSW5kZXhGb3JQb2ludCh7eDp0LngtZSx5OnQueS1ufSk7cmV0dXJuIG51bGw9PWk/W106W3RoaXMuZW50aXRpZXMoKVtpXV19LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLGk9ZkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuaW5uZXJSYWRpdXMoKSkscj1mRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5vdXRlclJhZGl1cygpKTtyZXR1cm4gbi5kPWZ1bmN0aW9uKHQsbixvKXtyZXR1cm4gckV0LmFyYygpLmlubmVyUmFkaXVzKGkodCxuLG8pKS5vdXRlclJhZGl1cyhyKHQsbixvKSkuc3RhcnRBbmdsZShlLl9zdGFydEFuZ2xlc1tuXSkuZW5kQW5nbGUoZS5fZW5kQW5nbGVzW25dKSh0LG4pfSxufSxlLnByb3RvdHlwZS5fdXBkYXRlUGllQW5nbGVzPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5zZWN0b3JWYWx1ZSgpJiYwIT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aCl7dmFyIHQ9ZkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSksZT10aGlzLmRhdGFzZXRzKClbMF0sbj10aGlzLl9nZXREYXRhVG9EcmF3KCkuZ2V0KGUpLGk9ckV0LnBpZSgpLnNvcnQobnVsbCkuc3RhcnRBbmdsZSh0aGlzLl9zdGFydEFuZ2xlKS5lbmRBbmdsZSh0aGlzLl9lbmRBbmdsZSkudmFsdWUoKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQobixpLGUpfSkpKG4pO3RoaXMuX3N0YXJ0QW5nbGVzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfSkpLHRoaXMuX2VuZEFuZ2xlcz1pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZW5kQW5nbGV9KSl9fSxlLnByb3RvdHlwZS5fcGllQ2VudGVyPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLl9zdGFydEFuZ2xlPHRoaXMuX2VuZEFuZ2xlP3RoaXMuX3N0YXJ0QW5nbGU6dGhpcy5fZW5kQW5nbGUsbz10aGlzLl9zdGFydEFuZ2xlPHRoaXMuX2VuZEFuZ2xlP3RoaXMuX2VuZEFuZ2xlOnRoaXMuX3N0YXJ0QW5nbGUsYT1NYXRoLnNpbihyKSxzPU1hdGguY29zKHIpLGw9TWF0aC5zaW4obyksYz1NYXRoLmNvcyhvKTtyZXR1cm4gYT49MCYmbD49MD9zPj0wJiZjPj0wPyh0PXMsZT0wLGk9MCxuPWwpOnM8MCYmYzwwPyh0PTAsZT0tYyxpPTAsbj1hKTpzPj0wJiZjPDA/KHQ9cyxlPS1jLGk9MCxuPWEpOnM8MCYmYz49MCYmKHQ9MSxlPTEsaT0xLG49TWF0aC5tYXgoYSxsKSk6YT49MCYmbDwwP3M+PTAmJmM+PTA/KHQ9TWF0aC5tYXgocyxjKSxlPTEsaT0xLG49MSk6czwwJiZjPDA/KHQ9MCxlPTEsaT0tbCxuPWEpOnM+PTAmJmM8MD8odD1zLGU9MSxpPS1sLG49MSk6czwwJiZjPj0wJiYodD1jLGU9MSxpPTEsbj1hKTphPDAmJmw+PTA/cz49MCYmYz49MD8odD0xLGU9MCxpPS1hLG49bCk6czwwJiZjPDA/KHQ9MSxlPU1hdGgubWF4KC1zLC1jKSxpPTEsbj0xKTpzPj0wJiZjPDA/KHQ9MSxlPS1jLGk9LWEsbj0xKTpzPDAmJmM+PTAmJih0PTEsZT0tcyxpPTEsbj1sKTphPDAmJmw8MCYmKHM+PTAmJmM+PTA/KHQ9YyxlPTAsaT0tYSxuPTApOnM8MCYmYzwwPyh0PTAsZT0tcyxpPS1sLG49MCk6cz49MCYmYzwwPyh0PTEsZT0xLGk9TWF0aC5tYXgocywtYyksbj0xKTpzPDAmJmM+PTAmJih0PWMsZT0tcyxpPTEsbj0wKSkse3g6aStuPT0wPzA6aS8oaStuKSp0aGlzLndpZHRoKCkseTp0K2U9PTA/MDp0Lyh0K2UpKnRoaXMuaGVpZ2h0KCl9fSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciBuPXQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3LmNhbGwodGhpcyk7aWYoMD09PXRoaXMuZGF0YXNldHMoKS5sZW5ndGgpcmV0dXJuIG47dmFyIGk9ZkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSkscj10aGlzLmRhdGFzZXRzKClbMF0sbz1uLmdldChyKS5maWx0ZXIoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX2lzVmFsaWREYXRhKGkodCxuLHIpKX0pKTtyZXR1cm4gbi5zZXQocixvKSxufSxlLl9pc1ZhbGlkRGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gY0V0Lk1hdGguaXNWYWxpZE51bWJlcih0KSYmdD49MH0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxuLGkpe3ZhciByPWZFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNlY3RvclZhbHVlKCkpO2lmKCFlLl9pc1ZhbGlkRGF0YShyKHQsbixpKSkpcmV0dXJue3g6TmFOLHk6TmFOfTt2YXIgbz0oZkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuaW5uZXJSYWRpdXMoKSkodCxuLGkpK2ZFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpKHQsbixpKSkvMixhPXJFdC5waWUoKS5zb3J0KG51bGwpLnZhbHVlKChmdW5jdGlvbih0LG4pe3ZhciBvPXIodCxuLGkpO3JldHVybiBlLl9pc1ZhbGlkRGF0YShvKT9vOjB9KSkuc3RhcnRBbmdsZSh0aGlzLl9zdGFydEFuZ2xlKS5lbmRBbmdsZSh0aGlzLl9lbmRBbmdsZSkoaS5kYXRhKCkpLHM9KGFbbl0uc3RhcnRBbmdsZSthW25dLmVuZEFuZ2xlKS8yO3JldHVybnt4Om8qTWF0aC5zaW4ocykseTotbypNYXRoLmNvcyhzKX19LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZW5kZXJBcmVhLnNlbGVjdCgiLmxhYmVsLWFyZWEiKS5yZW1vdmUoKSx0aGlzLl9sYWJlbHNFbmFibGVkJiZjRXQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpO3ZhciBuPXRoaXMuX2dlbmVyYXRlU3Ryb2tlRHJhd1N0ZXBzKCksaT10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPWZFdC5QbG90LmFwcGx5RHJhd1N0ZXBzKG4sdCk7ZS5fc3Ryb2tlRHJhd2Vycy5nZXQodCkuZHJhdyhpLmdldCh0KSxyKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlU3Ryb2tlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IGFFdC5OdWxsfV19LGUucHJvdG90eXBlLl9zbGljZUluZGV4Rm9yUG9pbnQ9ZnVuY3Rpb24odCl7dmFyIGUsbj1NYXRoLnNxcnQoTWF0aC5wb3codC54LDIpK01hdGgucG93KHQueSwyKSksaT1NYXRoLmFjb3MoLXQueS9uKTt0Lng8MCYmKGk9MipNYXRoLlBJLWkpO2Zvcih2YXIgcj0wO3I8dGhpcy5fc3RhcnRBbmdsZXMubGVuZ3RoO3IrKylpZih0aGlzLl9zdGFydEFuZ2xlc1tyXTxpJiZ0aGlzLl9lbmRBbmdsZXNbcl0+aSl7ZT1yO2JyZWFrfWlmKHZvaWQgMCE9PWUpe3ZhciBvPXRoaXMuZGF0YXNldHMoKVswXSxhPW8uZGF0YSgpW2VdLHM9dGhpcy5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGEsZSxvKSxsPXRoaXMub3V0ZXJSYWRpdXMoKS5hY2Nlc3NvcihhLGUsbyk7aWYobj5zJiZuPGwpcmV0dXJuIGV9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLGk9bmV3IG9FdC5TdmdDb250ZXh0KG4ubm9kZSgpKSxyPW5ldyBvRXQuQ2FjaGVNZWFzdXJlcihpKSxvPW5ldyBvRXQuV3JpdGVyKHIsaSksYT10aGlzLmRhdGFzZXRzKClbMF0scz10aGlzLl9nZXREYXRhVG9EcmF3KCkuZ2V0KGEpLGw9cy5sZW5ndGgsYz1mdW5jdGlvbihpKXt2YXIgbD1zW2ldLGM9dS5zZWN0b3JWYWx1ZSgpLmFjY2Vzc29yKGwsaSxhKTtpZighY0V0Lk1hdGguaXNWYWxpZE51bWJlcihjKSlyZXR1cm4iY29udGludWUiO2M9dS5fbGFiZWxGb3JtYXR0ZXIoYyxsLGksYSk7dmFyIGg9ci5tZWFzdXJlKGMpLGQ9KHUuX2VuZEFuZ2xlc1tpXSt1Ll9zdGFydEFuZ2xlc1tpXSkvMixwPXUub3V0ZXJSYWRpdXMoKS5hY2Nlc3NvcihsLGksYSk7dS5vdXRlclJhZGl1cygpLnNjYWxlJiYocD11Lm91dGVyUmFkaXVzKCkuc2NhbGUuc2NhbGUocCkpO3ZhciBmPXUuaW5uZXJSYWRpdXMoKS5hY2Nlc3NvcihsLGksYSk7dS5pbm5lclJhZGl1cygpLnNjYWxlJiYoZj11LmlubmVyUmFkaXVzKCkuc2NhbGUuc2NhbGUoZikpO3ZhciBtPShwK2YpLzIsZz1NYXRoLnNpbihkKSptLWgud2lkdGgvMixfPS1NYXRoLmNvcyhkKSptLWguaGVpZ2h0LzIseT1be3g6Zyx5Ol99LHt4OmcseTpfK2guaGVpZ2h0fSx7eDpnK2gud2lkdGgseTpffSx7eDpnK2gud2lkdGgseTpfK2guaGVpZ2h0fV0sdj15LmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoZS54KTw9dC53aWR0aCgpLzImJk1hdGguYWJzKGUueSk8PXQuaGVpZ2h0KCkvMn0pKTt2JiYodj15Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX3NsaWNlSW5kZXhGb3JQb2ludChlKX0pKS5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1pfSkpKTt2YXIgYj1lLmZpbGwobCxpLGEpLHg9MS42KmNFdC5Db2xvci5jb250cmFzdCgid2hpdGUiLGIpPGNFdC5Db2xvci5jb250cmFzdCgiYmxhY2siLGIpLHc9bi5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitnKyIsIitfKyIpIik7dy5jbGFzc2VkKHg/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCIsITApLHcuc3R5bGUoInZpc2liaWxpdHkiLHY/ImluaGVyaXQiOiJoaWRkZW4iKSxvLndyaXRlKGMsaC53aWR0aCxoLmhlaWdodCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIn0sdy5ub2RlKCkpfSx1PXRoaXMsaD0wO2g8bDtoKyspYyhoKX0sZS5fSU5ORVJfUkFESVVTX0tFWT0iaW5uZXItcmFkaXVzIixlLl9PVVRFUl9SQURJVVNfS0VZPSJvdXRlci1yYWRpdXMiLGUuX1NFQ1RPUl9WQUxVRV9LRVk9InNlY3Rvci12YWx1ZSIsZX0pKGZFdC5QbG90KTtuRXQuUGllPW1FdDt2YXIgZ0V0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShnRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBfRXQ9dU8seUV0PUVkdCx2RXQ9SW10LGJFdD1fbXQseEV0PU5TdCx3RXQ9V3d0LFNFdD1KU3QsTUV0PVp5dCxFRXQ9Rmd0LFRFdD11d3QsQ0V0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9sYWJlbHNFbmFibGVkPSExLGUuX2xhYmVsPW51bGwsZS5hbmltYXRvcigicmVjdGFuZ2xlcyIsbmV3IGJFdC5OdWxsKSxlLmFkZENsYXNzKCJyZWN0YW5nbGUtcGxvdCIpLGUuYXR0cigiZmlsbCIsKG5ldyBNRXQuQ29sb3IpLnJhbmdlKClbMF0pLGV9cmV0dXJuIF9FdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB3RXQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTRXQuUmVjdGFuZ2xlU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeEV0LlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIG49dGhpcyxpPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLHI9VEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxvPWlbZS5fWDJfS0VZXSxhPVRFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkscz1pW2UuX1kyX0tFWV0sbD10aGlzLngoKS5zY2FsZSxjPXRoaXMueSgpLnNjYWxlO3JldHVybiBudWxsIT1vPyhpLndpZHRoPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5hYnMobyh0LGUsbiktcih0LGUsbikpfSxpLng9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLm1pbihvKHQsZSxuKSxyKHQsZSxuKSl9KTooaS53aWR0aD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG4uX3JlY3RhbmdsZVdpZHRoKGwpfSxpLng9ZnVuY3Rpb24odCxlLG4pe3JldHVybiByKHQsZSxuKS0uNSppLndpZHRoKHQsZSxuKX0pLG51bGwhPXM/KGkuaGVpZ2h0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5hYnMocyh0LGUsbiktYSh0LGUsbikpfSxpLnk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLm1heChzKHQsZSxuKSxhKHQsZSxuKSktaS5oZWlnaHQodCxlLG4pfSk6KGkuaGVpZ2h0PWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbi5fcmVjdGFuZ2xlV2lkdGgoYyl9LGkueT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGEodCxlLG4pLS41KmkuaGVpZ2h0KHQsZSxuKX0pLGRlbGV0ZSBpW2UuX1gyX0tFWV0sZGVsZXRlIGlbZS5fWTJfS0VZXSxpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcigicmVjdGFuZ2xlcyIpfV19LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieDIiPT09ZT8ieCI6InkyIj09PWU/InkiOmUpfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKG4saSxyKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS54LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS54LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS54LmNhbGwodGhpcyxuLGksciksbnVsbCE9aSl7dmFyIG89dGhpcy54MigpLGE9byYmby5hY2Nlc3NvcjtudWxsIT1hJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWDJfS0VZLGEsaSxvLnBvc3RTY2FsZSl9cmV0dXJuIGkgaW5zdGFuY2VvZiBNRXQuQ2F0ZWdvcnkmJmkuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSxlLnByb3RvdHlwZS54Mj1mdW5jdGlvbih0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1gyX0tFWSk7dmFyIGk9dGhpcy54KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksdCxpJiZpLnNjYWxlLG4pLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkscil7aWYobnVsbD09bilyZXR1cm4gdC5wcm90b3R5cGUueS5jYWxsKHRoaXMpO2lmKG51bGw9PWk/dC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbik6dC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbixpLHIpLG51bGwhPWkpe3ZhciBvPXRoaXMueTIoKSxhPW8mJm8uYWNjZXNzb3I7bnVsbCE9YSYmdGhpcy5fYmluZFByb3BlcnR5KGUuX1kyX0tFWSxhLGksby5wb3N0U2NhbGUpfXJldHVybiBpIGluc3RhbmNlb2YgTUV0LkNhdGVnb3J5JiZpLmlubmVyUGFkZGluZygwKS5vdXRlclBhZGRpbmcoMCksdGhpc30sZS5wcm90b3R5cGUueTI9ZnVuY3Rpb24odCxuKXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9ZMl9LRVkpO3ZhciBpPXRoaXMueSgpO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLHQsaSYmaS5zY2FsZSxuKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHRoaXMuZW50aXRpZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0dW0scj1uLmluZGV4LG89bi5kYXRhc2V0LGE9ZS54KGkscixvKSxzPWUueShpLHIsbyksbD1lLndpZHRoKGkscixvKSxjPWUuaGVpZ2h0KGkscixvKTtyZXR1cm4gYTw9dC54JiZ0Lng8PWErbCYmczw9dC55JiZ0Lnk8PXMrY30pKX0sZS5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW50aXR5QkJveCh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0LHRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpKX0sZS5wcm90b3R5cGUuX2VudGl0eUJCb3g9ZnVuY3Rpb24odCxlLG4saSl7cmV0dXJue3g6aS54KHQsZSxuKSx5OmkueSh0LGUsbiksd2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX19LGUucHJvdG90eXBlLmxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsOih0aGlzLl9sYWJlbD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmxhYmVsc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWxzRW5hYmxlZDoodGhpcy5fbGFiZWxzRW5hYmxlZD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyk7cmV0dXJuIG51bGwhPXRoaXMueDIoKSYmKGUueDI9VEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueDIoKSkpLG51bGwhPXRoaXMueTIoKSYmKGUueTI9VEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTIoKSkpLGV9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPWkueCh0LGUsbiksbz1pLnkodCxlLG4pO3JldHVybnt4OnIraS53aWR0aCh0LGUsbikvMix5Om8raS5oZWlnaHQodCxlLG4pLzJ9fSxlLnByb3RvdHlwZS5fcmVjdGFuZ2xlV2lkdGg9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIE1FdC5DYXRlZ29yeSlyZXR1cm4gdC5yYW5nZUJhbmQoKTt2YXIgZT10PT09dGhpcy54KCkuc2NhbGU/dGhpcy54KCkuYWNjZXNzb3I6dGhpcy55KCkuYWNjZXNzb3Isbj15RXQuc2V0KEVFdC5BcnJheS5mbGF0dGVuKHRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEoKS5tYXAoKGZ1bmN0aW9uKG4saSl7cmV0dXJuIGUobixpLHQpLnZhbHVlT2YoKX0pKX0pKSkpLnZhbHVlcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuK3R9KSksaT1FRXQuTWF0aC5taW4obiwwKSxyPUVFdC5NYXRoLm1heChuLDApLG89dC5zY2FsZShpKTtyZXR1cm4odC5zY2FsZShyKS1vKS9NYXRoLmFicyhyLWkpfSxlLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciB0PW5ldyBFRXQuTWFwLGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uLmRhdGEoKS5tYXAoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIEVFdC5NYXRoLmlzVmFsaWROdW1iZXIoZS54KHQsaSxuKSkmJkVFdC5NYXRoLmlzVmFsaWROdW1iZXIoZS55KHQsaSxuKSkmJkVFdC5NYXRoLmlzVmFsaWROdW1iZXIoZS53aWR0aCh0LGksbikpJiZFRXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUuaGVpZ2h0KHQsaSxuKSk/dDpudWxsfSkpO3Quc2V0KG4saSl9KSksdH0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlbmRlckFyZWEuc2VsZWN0QWxsKCIubGFiZWwtYXJlYSIpLnJlbW92ZSgpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJm51bGwhPXRoaXMubGFiZWwoKSYmRUV0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLl9kcmF3TGFiZWxzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihuLGkpe3JldHVybiB0Ll9kcmF3TGFiZWwoZSxuLGkpfSkpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkscj10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxhYmVsLWFyZWEiLCEwKSxvPW5ldyB2RXQuU3ZnQ29udGV4dChyLm5vZGUoKSksYT1uZXcgdkV0LkNhY2hlTWVhc3VyZXIobykscz1uZXcgdkV0LldyaXRlcihhLG8pLGw9dGhpcy54KCkuc2NhbGUucmFuZ2UoKSxjPXRoaXMueSgpLnNjYWxlLnJhbmdlKCksdT1NYXRoLm1pbi5hcHBseShudWxsLGwpLGg9TWF0aC5tYXguYXBwbHkobnVsbCxsKSxkPU1hdGgubWluLmFwcGx5KG51bGwsYykscD1NYXRoLm1heC5hcHBseShudWxsLGMpLGY9dC5nZXQoZSksbT1mLmxlbmd0aCxnPTA7ZzxtO2crKyl7dmFyIF89ZltnXTtpZihudWxsIT1fKXt2YXIgeT0iIit0aGlzLmxhYmVsKCkoXyxnLGUpLHY9YS5tZWFzdXJlKHkpLGI9aS54KF8sZyxlKSx4PWkueShfLGcsZSksdz1pLndpZHRoKF8sZyxlKSxTPWkuaGVpZ2h0KF8sZyxlKTtpZih2LmhlaWdodDw9UyYmdi53aWR0aDw9dyl7dmFyIE09e21pbjpiKz0ody12LndpZHRoKS8yLG1heDpiK3Yud2lkdGh9LEU9e21pbjp4Kz0oUy12LmhlaWdodCkvMixtYXg6eCt2LmhlaWdodH07aWYoTS5taW48dXx8TS5tYXg+aHx8RS5taW48ZHx8RS5tYXg+cCljb250aW51ZTtpZih0aGlzLl9vdmVybGF5TGFiZWwoTSxFLGcsbix0KSljb250aW51ZTt2YXIgVD1pLmZpbGwoXyxnLGUpLEM9MS42KkVFdC5Db2xvci5jb250cmFzdCgid2hpdGUiLFQpPEVFdC5Db2xvci5jb250cmFzdCgiYmxhY2siLFQpLEE9ci5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitiKyIsIit4KyIpIik7QS5jbGFzc2VkKEM/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCIsITApLHMud3JpdGUoeSx2LndpZHRoLHYuaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSxBLm5vZGUoKSl9fX19LGUucHJvdG90eXBlLl9vdmVybGF5TGFiZWw9ZnVuY3Rpb24odCxlLG4saSxyKXtmb3IodmFyIG89dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYT10aGlzLmRhdGFzZXRzKCkscz1pO3M8YS5sZW5ndGg7cysrKWZvcih2YXIgbD1hW3NdLGM9ci5nZXQobCksdT1jLmxlbmd0aCxoPXM9PT1pP24rMTowO2g8dTtoKyspaWYoRUV0LkRPTS5pbnRlcnNlY3RzQkJveCh0LGUsdGhpcy5fZW50aXR5QkJveChjW2hdLGgsbCxvKSkpcmV0dXJuITA7cmV0dXJuITF9LGUuX1gyX0tFWT0ieDIiLGUuX1kyX0tFWT0ieTIiLGV9KShnTXQuWFlQbG90KTtnRXQuUmVjdGFuZ2xlPUNFdDt2YXIgQUV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShBRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrRXQ9dU8sTEV0PUltdCxQRXQ9Z3l0LE5FdD1VeHQsSUV0PVd3dCxSRXQ9bk10LE9FdD1fbXQsekV0PU5TdCxERXQ9Wnl0LEJFdD1GZ3QsSEV0PXBNdCxGRXQ9dXd0LFZFdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztlLl9sYWJlbEZvcm1hdHRlcj1QRXQuaWRlbnRpdHkoKSxlLl9sYWJlbHNFbmFibGVkPSExLGUuYWRkQ2xhc3MoInNjYXR0ZXItcGxvdCIpO3ZhciBuPW5ldyBPRXQuRWFzaW5nO24uc3RhcnREZWxheSg1KSxuLnN0ZXBEdXJhdGlvbigyNTApLG4ubWF4VG90YWxEdXJhdGlvbihGRXQuUGxvdC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTiksZS5hbmltYXRvcihIRXQuQW5pbWF0b3IuTUFJTixuKSxlLmF0dHIoIm9wYWNpdHkiLC42KSxlLmF0dHIoImZpbGwiLChuZXcgREV0LkNvbG9yKS5yYW5nZSgpWzBdKSxlLnNpemUoNik7dmFyIGk9TkV0LmNpcmNsZSgpO3JldHVybiBlLnN5bWJvbCgoZnVuY3Rpb24oKXtyZXR1cm4gaX0pKSxlLl9sYWJlbENvbmZpZz1uZXcgQkV0Lk1hcCxlfXJldHVybiBrRXQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXM9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcztyZXR1cm4gdC5wcm90b3R5cGUuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXMuY2FsbCh0aGlzLGUpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9RkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4uc2l6ZSgpKSh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtyZXR1cm4gdC5kaWFtZXRlcj1lLHR9KSl9LGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IElFdC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJFdC5TeW1ib2xTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24obil7cmV0dXJuIG5ldyB6RXQuQ2FudmFzRHJhd2VyKG4sUkV0Lm1ha2VTeW1ib2xDYW52YXNEcmF3U3RlcCh0LChmdW5jdGlvbigpe3JldHVybiBGRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS5zeW1ib2woKSl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gRkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKGUuc2l6ZSgpKX0pKSl9KSl9LGUucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9TSVpFX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9TSVpFX0tFWSx0LG4pLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLnN5bWJvbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9TWU1CT0xfS0VZKToodGhpcy5fcHJvcGVydHlCaW5kaW5ncy5zZXQoZS5fU1lNQk9MX0tFWSx7YWNjZXNzb3I6dH0pLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksbj1GRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zeW1ib2woKSk7ZS5kPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbih0LGUsaSkoMCkobnVsbCl9LHQucHVzaCh7YXR0clRvUHJvamVjdG9yOmUsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoSEV0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiB0LnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihIRXQuQW5pbWF0b3IuTUFJTil9KSx0fSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIGU9dC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpLG49RkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxpPUZFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIGUueD1uLGUueT1pLGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4idHJhbnNsYXRlKCIrbih0LGUscikrIiwiK2kodCxlLHIpKyIpIn0sZS5kPXRoaXMuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcigpLGV9LGUucHJvdG90eXBlLl9jb25zdHJ1Y3RTeW1ib2xHZW5lcmF0b3I9ZnVuY3Rpb24oKXt2YXIgdD1GRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zeW1ib2woKSksZT1GRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zaXplKCkpO3JldHVybiBmdW5jdGlvbihuLGkscil7cmV0dXJuIHQobixpLHIpKGUobixpLHIpKShudWxsKX19LGUucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJue3g6dC5wb3NpdGlvbi54LXQuZGlhbWV0ZXIvMix5OnQucG9zaXRpb24ueS10LmRpYW1ldGVyLzIsd2lkdGg6dC5kaWFtZXRlcixoZWlnaHQ6dC5kaWFtZXRlcn19LGUucHJvdG90eXBlLl9lbnRpdHlWaXNpYmxlT25QbG90PWZ1bmN0aW9uKHQsZSl7dmFyIG49e21pbjplLnRvcExlZnQueCxtYXg6ZS5ib3R0b21SaWdodC54fSxpPXttaW46ZS50b3BMZWZ0LnksbWF4OmUuYm90dG9tUmlnaHQueX0scj10aGlzLl9lbnRpdHlCb3VuZHModCk7cmV0dXJuIEJFdC5ET00uaW50ZXJzZWN0c0JCb3gobixpLHIpfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPUZFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksbj1GRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLGk9RkV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcigoZnVuY3Rpb24ocil7dmFyIG89ci5kYXR1bSxhPXIuaW5kZXgscz1yLmRhdGFzZXQsbD1lKG8sYSxzKSxjPW4obyxhLHMpLHU9aShvLGEscyk7cmV0dXJuIGwtdS8yPD10LngmJnQueDw9bCt1LzImJmMtdS8yPD10LnkmJnQueTw9Yyt1LzJ9KSl9LGUucHJvdG90eXBlLmxhYmVsc0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWxzRW5hYmxlZDoodGhpcy5fbGFiZWxzRW5hYmxlZD10LHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKG4pe3ZhciBpPXQucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLG4pLHI9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGUuX0xBQkVMX0FSRUFfQ0xBU1MsITApLG89bmV3IExFdC5TdmdDb250ZXh0KHIubm9kZSgpKSxhPW5ldyBMRXQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyBMRXQuV3JpdGVyKGEsbyk7cmV0dXJuIHRoaXMuX2xhYmVsQ29uZmlnLnNldChuLHtsYWJlbEFyZWE6cixtZWFzdXJlcjphLHdyaXRlcjpzfSksaX0sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyxlKTt2YXIgbj10aGlzLl9sYWJlbENvbmZpZy5nZXQoZSk7bnVsbCE9biYmKG4ubGFiZWxBcmVhLnJlbW92ZSgpLHRoaXMuX2xhYmVsQ29uZmlnLmRlbGV0ZShlKSl9LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmQkV0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLl9kcmF3TGFiZWxzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj1lLmdldChpKSxvPXIubGVuZ3RoLGE9MDthPG87YSsrKXt2YXIgcz1yW2FdO251bGwhPXMmJnQuX2RyYXdMYWJlbChzLGEsaSxuKX19KSl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLG4saSl7aWYobnVsbCE9dC5sYWJlbCl7dmFyIHI9dGhpcy5fbGFiZWxDb25maWcuZ2V0KG4pLG89ci5sYWJlbEFyZWEsYT1yLm1lYXN1cmVyLHM9ci53cml0ZXIsbD17eDppLngodCxlLG4pLHk6aS55KHQsZSxuKX0sYz1GRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zaXplKCkpKHQsZSxuKSx1PXRoaXMuX2xhYmVsRm9ybWF0dGVyKHQubGFiZWwsdCxlLG4pLGg9YS5tZWFzdXJlKHUpLGQ9dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGwsYyxoKSxwPWQuY29udGFpbmVyRGltZW5zaW9ucyxmPWQuYWxpZ25tZW50LG09dGhpcy5fY3JlYXRlTGFiZWxDb250YWluZXIobyxkLmxhYmVsQ29udGFpbmVyT3JpZ2luLGQubGFiZWxPcmlnaW4saCk7cy53cml0ZSh1LHAud2lkdGgscC5oZWlnaHQse3hBbGlnbjpmLngseUFsaWduOmYueX0sbS5ub2RlKCkpfX0sZS5wcm90b3R5cGUuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcz1mdW5jdGlvbih0LG4saSl7cmV0dXJue2NvbnRhaW5lckRpbWVuc2lvbnM6e3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxsYWJlbENvbnRhaW5lck9yaWdpbjp7eDp0LngtaS53aWR0aC8yLHk6dC55LWkuaGVpZ2h0LzIrKG48aS5oZWlnaHQ/bi8yK2UuX0xBQkVMX01BUkdJTl9GUk9NX0JVQkJMRTowKX0sbGFiZWxPcmlnaW46e3g6dC54LHk6dC55fSxhbGlnbm1lbnQ6e3g6ImNlbnRlciIseToiY2VudGVyIn19fSxlLnByb3RvdHlwZS5fY3JlYXRlTGFiZWxDb250YWluZXI9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLngrIiwgIitlLnkrIikiKTtyZXR1cm4gci5jbGFzc2VkKCJvbi1iYXItbGFiZWwiLCEwKSxyfSxlLl9TSVpFX0tFWT0ic2l6ZSIsZS5fU1lNQk9MX0tFWT0ic3ltYm9sIixlLl9MQUJFTF9BUkVBX0NMQVNTPSJzY2F0dGVyLWxhYmVsLXRleHQtYXJlYSIsZS5fTEFCRUxfTUFSR0lOX0ZST01fQlVCQkxFPTE1LGV9KShnTXQuWFlQbG90KTtBRXQuU2NhdHRlcj1WRXQ7dmFyIFVFdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkoVUV0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgakV0PXVPLEdFdD1fbXQsV0V0PVd3dCxxRXQ9UVN0LFlFdD1aeXQsWEV0PWtfdCwkRXQ9dXd0LEtFdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygic2VnbWVudC1wbG90IiksZS5hdHRyKCJzdHJva2UiLChuZXcgWUV0LkNvbG9yKS5yYW5nZSgpWzBdKSxlLmF0dHIoInN0cm9rZS13aWR0aCIsIjJweCIpLGV9cmV0dXJuIGpFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBXRXQuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBxRXQuU2VnbWVudFNWR0RyYXdlcn0pLChmdW5jdGlvbigpe3JldHVybiBYRXQud2FybigiY2FudmFzIHJlbmRlcmVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gU2VnbWVudCBQbG90ISIpLG51bGx9KSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOm5ldyBHRXQuTnVsbH1dfSxlLnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsIngyIj09PWU/IngiOiJ5MiI9PT1lPyJ5IjplKX0sZS5wcm90b3R5cGUueD1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihudWxsPT1pKXQucHJvdG90eXBlLnguY2FsbCh0aGlzLG4pO2Vsc2V7dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsbixpKTt2YXIgcj10aGlzLngyKCksbz1yJiZyLmFjY2Vzc29yO251bGwhPW8mJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksbyxpKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueDI9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWDJfS0VZKTt2YXIgbj10aGlzLngoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihudWxsPT1pKXQucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4pO2Vsc2V7dC5wcm90b3R5cGUueS5jYWxsKHRoaXMsbixpKTt2YXIgcj10aGlzLnkyKCksbz1yJiZyLmFjY2Vzc29yO251bGwhPW8mJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksbyxpKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUueTI9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWTJfS0VZKTt2YXIgbj10aGlzLnkoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1kyX0tFWSx0LG4mJm4uc2NhbGUpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gZS54MT0kRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLGUueDI9bnVsbD09dGhpcy54MigpPyRFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSk6JEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueDIoKSksZS55MT0kRXQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLGUueTI9bnVsbD09dGhpcy55MigpPyRFdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk6JEV0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTIoKSksZX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmVudGl0eU5lYXJlc3QodCk7cmV0dXJuIG51bGwhPWU/W2VdOltdfSxlLnByb3RvdHlwZS5lbnRpdGllc0luPWZ1bmN0aW9uKHQsZSl7dmFyIG4saTtyZXR1cm4gbnVsbD09ZT8obj17bWluOnQudG9wTGVmdC54LG1heDp0LmJvdHRvbVJpZ2h0Lnh9LGk9e21pbjp0LnRvcExlZnQueSxtYXg6dC5ib3R0b21SaWdodC55fSk6KG49dCxpPWUpLHRoaXMuX2VudGl0aWVzSW50ZXJzZWN0aW5nKG4saSl9LGUucHJvdG90eXBlLl9lbnRpdGllc0ludGVyc2VjdGluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bXSxpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLHI9dGhpcy5lbnRpdGllcygpLG89ci5sZW5ndGgsYT0wO2E8bzthKyspe3ZhciBzPXJbYV07dGhpcy5fbGluZUludGVyc2VjdHNCb3gocyx0LGUsaSkmJm4ucHVzaChzKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzQm94PWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXMsbz1pLngxKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpLGE9aS54Mih0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KSxzPWkueTEodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCksbD1pLnkyKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpO2lmKGUubWluPD1vJiZvPD1lLm1heCYmbi5taW48PXMmJnM8PW4ubWF4fHxlLm1pbjw9YSYmYTw9ZS5tYXgmJm4ubWluPD1sJiZsPD1uLm1heClyZXR1cm4hMDt2YXIgYz17eDpvLHk6c30sdT17eDphLHk6bH0saD1be3g6ZS5taW4seTpuLm1pbn0se3g6ZS5taW4seTpuLm1heH0se3g6ZS5tYXgseTpuLm1heH0se3g6ZS5tYXgseTpuLm1pbn1dO3JldHVybiBoLmZpbHRlcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gMCE9PWUmJnIuX2xpbmVJbnRlcnNlY3RzU2VnbWVudChjLHUsdCxoW2UtMV0pJiZyLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQodCxoW2UtMV0sYyx1KX0pKS5sZW5ndGg+MH0sZS5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzU2VnbWVudD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuKGUueC10LngpKihuLnktZS55KS0oZS55LXQueSkqKG4ueC1lLngpfTtyZXR1cm4gcih0LGUsbikqcih0LGUsaSk8MH0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKGdNdC5YWVBsb3QpO1VFdC5TZWdtZW50PUtFdDt2YXIgWkV0PXt9OwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqL09iamVjdC5kZWZpbmVQcm9wZXJ0eShaRXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBKRXQ9dU8sUUV0PUVkdCx0VHQ9X210LGVUdD1kd3QsblR0PUZndCxpVHQ9dXd0LHJUdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fc3RhY2tpbmdSZXN1bHQ9ZVR0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS54KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS55KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RhY2tpbmdPcmRlcn0pLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gblR0LlN0YWNraW5nLnN0YWNrKHQsZSxuLGkpfSkpLGUuX3N0YWNrZWRFeHRlbnQ9ZVR0Lm1lbVRodW5rKGUuX3N0YWNraW5nUmVzdWx0LChmdW5jdGlvbigpe3JldHVybiBlLngoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBlLl9maWx0ZXJGb3JQcm9wZXJ0eSgieSIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gblR0LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLGUuX2Jhc2VsaW5lVmFsdWU9MCxlLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsZS5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxlLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bZS5fYmFzZWxpbmVWYWx1ZV19LGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLGV9cmV0dXJuIEpFdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMpOmU/KG5UdC5XaW5kb3cud2FybigiV2FybmluZzogU3RhY2tlZCBBcmVhIFBsb3QgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGVkIHJlbmRlcmluZy4iKSx0aGlzKTp0LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHRUdC5OdWxsfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobnVsbD09bj90LnByb3RvdHlwZS55LmNhbGwodGhpcyxlKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4pLHRoaXMuX2NoZWNrU2FtZURvbWFpbigpLHRoaXMpfSxlLnByb3RvdHlwZS55T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtpZihudWxsIT1uKXt2YXIgaT1uLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldChTdHJpbmcoZSkpO2lmKG51bGwhPXIpcmV0dXJuIHIub2Zmc2V0fX19LGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQuY2FsbCh0aGlzKTooblR0LldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksZT17eDE6MCx5MTp0LHgyOnRoaXMud2lkdGgoKSx5Mjp0fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGUpfSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCksZT10JiZ0LnNjYWxlO251bGwhPWUmJihlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5kYXRhc2V0cygpLG49dGhpcy54KCkuYWNjZXNzb3IsaT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFFFdC5zZXQodC5kYXRhKCkubWFwKChmdW5jdGlvbihlLGkpe3JldHVybiBuVHQuU3RhY2tpbmcubm9ybWFsaXplS2V5KG4oZSxpLHQpKX0pKSkudmFsdWVzKCl9KSkscj1lLl9kb21haW5LZXlzKHQsbik7aS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGghPT1yLmxlbmd0aH0pKSYmblR0LldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LGUuX2RvbWFpbktleXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1RRXQuc2V0KCk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpPXQuZGF0YSgpLHI9aS5sZW5ndGgsbz0wO288cjtvKyspbi5hZGQoZShpW29dLG8sdCkpfSkpLG4udmFsdWVzKCl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1pVHQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG49dGhpcy55KCkuYWNjZXNzb3IsaT10aGlzLngoKS5hY2Nlc3NvcixyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gblR0LlN0YWNraW5nLm5vcm1hbGl6ZUtleShpKHQsZSxuKSl9LG89dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtyZXR1cm5bZSxmdW5jdGlvbihlLGksYSl7dmFyIHM9K24oZSxpLGEpLGw9by5nZXQoYSkuZ2V0KHIoZSxpLGEpKS5vZmZzZXQ7cmV0dXJuIHQueSgpLnNjYWxlLnNjYWxlKHMrbCl9LGZ1bmN0aW9uKGUsbixpKXt2YXIgYT1vLmdldChpKS5nZXQocihlLG4saSkpLm9mZnNldDtyZXR1cm4gdC55KCkuc2NhbGUuc2NhbGUoYSl9XX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXRoaXMuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCk7cmV0dXJuIGUuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKG5bMF0sblsxXSxuWzJdKSxlfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihlLG4saSl7dmFyIHI9dC5wcm90b3R5cGUuX3BpeGVsUG9pbnQuY2FsbCh0aGlzLGUsbixpKSxvPXRoaXMueCgpLmFjY2Vzc29yKGUsbixpKSxhPXRoaXMueSgpLmFjY2Vzc29yKGUsbixpKSxzPXRoaXMueSgpLnNjYWxlLnNjYWxlKCthK3RoaXMuX3N0YWNraW5nUmVzdWx0KCkuZ2V0KGkpLmdldChuVHQuU3RhY2tpbmcubm9ybWFsaXplS2V5KG8pKS5vZmZzZXQpO3JldHVybnt4OnIueCx5OnN9fSxlfSkoZk10LkFyZWEpO1pFdC5TdGFja2VkQXJlYT1yVHQ7dmFyIG9UdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkob1R0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYVR0PXVPLHNUdD1JbXQsbFR0PWd5dCxjVHQ9ZHd0LHVUdD1GZ3QsaFR0PVhNdCxkVHQ9dXd0LHBUdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0idmVydGljYWwiKTt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gbi5fZXh0cmVtYUZvcm1hdHRlcj1sVHQuaWRlbnRpdHkoKSxuLl9zdGFja2luZ1Jlc3VsdD1jVHQubWVtVGh1bmsoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZGF0YXNldHMoKX0pLChmdW5jdGlvbigpe3JldHVybiBuLnBvc2l0aW9uKCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5sZW5ndGgoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLl9zdGFja2luZ09yZGVyfSksKGZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB1VHQuU3RhY2tpbmcuc3RhY2sodCxlLG4saSl9KSksbi5fc3RhY2tlZEV4dGVudD1jVHQubWVtVGh1bmsobi5fc3RhY2tpbmdSZXN1bHQsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucG9zaXRpb24oKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLl9maWx0ZXJGb3JQcm9wZXJ0eShuLl9pc1ZlcnRpY2FsPyJ5IjoieCIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdVR0LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLG4uYWRkQ2xhc3MoInN0YWNrZWQtYmFyLXBsb3QiKSxuLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsbn1yZXR1cm4gYVR0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5leHRyZW1hRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9leHRyZW1hRm9ybWF0dGVyOih0aGlzLl9leHRyZW1hRm9ybWF0dGVyPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZChoVHQuQmFyLl9MQUJFTF9BUkVBX0NMQVNTLCEwKTt2YXIgZT1uZXcgc1R0LlN2Z0NvbnRleHQodGhpcy5fbGFiZWxBcmVhLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IHNUdC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyaXRlcj1uZXcgc1R0LldyaXRlcih0aGlzLl9tZWFzdXJlcixlKX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3QucHJvdG90eXBlLl9kcmF3TGFiZWxzLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBpPSt0aGlzLmJhc2VsaW5lVmFsdWUoKSxyPXRoaXMucG9zaXRpb24oKS5zY2FsZSxvPXRoaXMubGVuZ3RoKCkuc2NhbGUsYT11VHQuU3RhY2tpbmcuc3RhY2tlZEV4dGVudHModGhpcy5fc3RhY2tpbmdSZXN1bHQoKSkscz1hLm1pbmltdW1FeHRlbnRzLGw9W10sYz1mdW5jdGlvbih0LGUpe3ZhciBhPW4uX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCkscz1uLndpZHRoKCksYz1uLmhlaWdodCgpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodC5leHRlbnQhPT1pKXt2YXIgdT1uLmV4dHJlbWFGb3JtYXR0ZXIoKSh0LmV4dGVudCksaD1uLl9tZWFzdXJlci5tZWFzdXJlKHUpLGQ9dC5zdGFja2VkRGF0dW0scD1kLm9yaWdpbmFsRGF0dW0sZj1kLm9yaWdpbmFsSW5kZXgsbT1kLm9yaWdpbmFsRGF0YXNldDtpZighbi5faXNEYXR1bU9uU2NyZWVuKGEscyxjLHAsZixtKSlyZXR1cm47dmFyIGc9ZFR0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4uYXR0cihoVHQuQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpKHAsZixtKSxfPW8uc2NhbGUodC5leHRlbnQpLHk9bi5fZ2V0UG9zaXRpb25BdHRyKHIuc2NhbGUodC5heGlzVmFsdWUpLGcpK2cvMix2PWUobi5faXNWZXJ0aWNhbD97eDp5LHk6X306e3g6Xyx5Onl9LGgsZyksYj0oZnVuY3Rpb24odCxlLGkpe3ZhciByPWUudG9wTGVmdCxvPXIueCxhPXIueSxzPWUuYm90dG9tUmlnaHQueC1lLnRvcExlZnQueCxsPWUuYm90dG9tUmlnaHQueS1lLnRvcExlZnQueSxjPW4uX2lzVmVydGljYWw/cz5pOmw+aTtpZighYyl7dmFyIHU9bi5fbGFiZWxBcmVhLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28rIiwgIithKyIpIik7dS5jbGFzc2VkKCJzdGFja2VkLWJhci1sYWJlbCIsITApLG4uX3dyaXRlci53cml0ZSh0LHMsbCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIn0sdS5ub2RlKCkpfXJldHVybiBjfSkodSx7dG9wTGVmdDp2LGJvdHRvbVJpZ2h0Ont4OnYueCtoLndpZHRoLHk6di55K2guaGVpZ2h0fX0sZyk7bC5wdXNoKGIpfX0pKX07YyhhLm1heGltdW1FeHRlbnRzLChmdW5jdGlvbih0LGkscil7dmFyIG89bi5faXNWZXJ0aWNhbD9pLndpZHRoOmkuaGVpZ2h0O3JldHVybnt4Om4uX2lzVmVydGljYWw/dC54LW8vMjp0LngrZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVIseTpuLl9pc1ZlcnRpY2FsP3QueS0obi5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKTp0Lnktby8yfX0pKSxjKHMsKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1uLl9pc1ZlcnRpY2FsP2kud2lkdGg6aS5oZWlnaHQ7cmV0dXJue3g6bi5faXNWZXJ0aWNhbD90Lngtby8yOnQueC0obi5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKSx5Om4uX2lzVmVydGljYWw/dC55K2UuX0VYVFJFTUFfTEFCRUxfTUFSR0lOX0ZST01fQkFSOnQueS1vLzJ9fSkpLGwuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkmJnRoaXMuX2xhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLGk9dGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiLHI9dGhpcy5sZW5ndGgoKS5zY2FsZSxvPXRoaXMubGVuZ3RoKCkuYWNjZXNzb3IsYT10aGlzLnBvc2l0aW9uKCkuYWNjZXNzb3Iscz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHVUdC5TdGFja2luZy5ub3JtYWxpemVLZXkoYSh0LGUsbikpfSxsPXRoaXMuX3N0YWNraW5nUmVzdWx0KCksYz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuc2NhbGUobC5nZXQobikuZ2V0KHModCxlLG4pKS5vZmZzZXQpfSx1PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5zY2FsZSgrbyh0LGUsbikrbC5nZXQobikuZ2V0KHModCxlLG4pKS5vZmZzZXQpfSxoPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5hYnModSh0LGUsbiktYyh0LGUsbikpfTtuW3RoaXMuX2lzVmVydGljYWw/ImhlaWdodCI6IndpZHRoIl09aDt2YXIgZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuK28odCxlLG4pPDA/Yyh0LGUsbik6dSh0LGUsbil9O3JldHVybiBuW2ldPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gZS5faXNWZXJ0aWNhbD9kKHQsbixpKTpkKHQsbixpKS1oKHQsbixpKX0sbn0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiBlPT09KHRoaXMuX2lzVmVydGljYWw/InkiOiJ4Iik/W3RoaXMuX3N0YWNrZWRFeHRlbnQoKV06dC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI9NSxlfSkoaFR0LkJhcik7b1R0LlN0YWNrZWRCYXI9cFR0O3ZhciBmVHQ9e307Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovT2JqZWN0LmRlZmluZVByb3BlcnR5KGZUdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG1UdD11TyxnVHQ9Rmd0LF9UdD11d3QseVR0PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9jb25uZWN0b3JzRW5hYmxlZD0hMSxlLmFkZENsYXNzKCJ3YXRlcmZhbGwtcGxvdCIpLGV9cmV0dXJuIG1UdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb25uZWN0b3JzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb25uZWN0b3JzRW5hYmxlZDoodGhpcy5fY29ubmVjdG9yc0VuYWJsZWQ9dCx0aGlzKX0sZS5wcm90b3R5cGUudG90YWw9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fVE9UQUxfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX1RPVEFMX0tFWSx0LG51bGwpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fY29ubmVjdG9yQXJlYS5zZWxlY3RBbGwoImxpbmUiKS5yZW1vdmUoKSx0aGlzLl9jb25uZWN0b3JzRW5hYmxlZCYmZ1R0LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLl9kcmF3Q29ubmVjdG9ycygpfSksdCl9LGUucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24obil7dmFyIGk9dC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsbik7cmV0dXJuIHRoaXMuX2Nvbm5lY3RvckFyZWE9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKGUuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTLCEwKSxpfSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oZSl7cmV0dXJuInkiPT09ZT9bdGhpcy5fZXh0ZW50XTp0LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLGUpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcykscj10aGlzLnkoKS5zY2FsZSxvPV9UdC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnRvdGFsKCkpO3JldHVybiBudWxsPT10aGlzLmF0dHIoInkiKSYmKGkueT1mdW5jdGlvbih0LGUsaSl7dmFyIGE9bi55KCkuYWNjZXNzb3IodCxlLGkpO2lmKG8odCxlLGkpKXJldHVybiBNYXRoLm1pbihyLnNjYWxlKGEpLHIuc2NhbGUoMCkpO3ZhciBzPW4uX3N1YnRvdGFsc1tlXTtpZigwPT09ZSlyZXR1cm4gci5zY2FsZShhPDA/cy1hOnMpO3ZhciBsPW4uX3N1YnRvdGFsc1tlLTFdO3JldHVybiByLnNjYWxlKHM+bD9zOmwpfSksbnVsbD09dGhpcy5hdHRyKCJoZWlnaHQiKSYmKGkuaGVpZ2h0PWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1vKHQsZSxpKSxzPW4ueSgpLmFjY2Vzc29yKHQsZSxpKTtpZihhKXJldHVybiBNYXRoLmFicyhyLnNjYWxlKHMpLXIuc2NhbGUoMCkpO3ZhciBsPW4uX3N1YnRvdGFsc1tlXTtpZigwPT09ZSlyZXR1cm4gTWF0aC5hYnMoci5zY2FsZShsKS1yLnNjYWxlKGwtcykpO3ZhciBjPW4uX3N1YnRvdGFsc1tlLTFdO3JldHVybiBNYXRoLmFicyhyLnNjYWxlKGwpLXIuc2NhbGUoYykpfSksaS5jbGFzcz1mdW5jdGlvbih0LGkscil7dmFyIGE9IiI7cmV0dXJuIG51bGwhPW4uYXR0cigiY2xhc3MiKSYmKGE9bi5hdHRyKCJjbGFzcyIpLmFjY2Vzc29yKHQsaSxyKSsiICIpLG8odCxpLHIpP2ErZS5fQkFSX1RPVEFMX0NMQVNTOmErKG4ueSgpLmFjY2Vzc29yKHQsaSxyKT4wP2UuX0JBUl9HUk9XVEhfQ0xBU1M6ZS5fQkFSX0RFQ0xJTkVfQ0xBU1MpfSxpfSxlLnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVN1YnRvdGFscygpLHQucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzfSxlLnByb3RvdHlwZS5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1JTl9WQUxVRSxpPTAscj0hMSxvPXQuZGF0YSgpLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc10sYz10aGlzLnkoKS5hY2Nlc3NvcihsLHMsdCksdT10aGlzLnRvdGFsKCkuYWNjZXNzb3IobCxzLHQpO2lmKHUmJjAhPT1zfHwoaSs9YyksdGhpcy5fc3VidG90YWxzLnB1c2goaSksaTxlJiYoZT1pKSxpPm4mJihuPWkpLHUmJihjPGUmJihlPWMpLGM+biYmKG49YykpLCFyJiZ1KXtmb3IodmFyIGg9Yy1pLGQ9MDtkPHRoaXMuX3N1YnRvdGFscy5sZW5ndGg7ZCsrKXRoaXMuX3N1YnRvdGFsc1tkXSs9aDtyPSEwLGkrPWgsZSs9aCxuKz1ofX10aGlzLl9leHRlbnQ9W2Usbl19LGUucHJvdG90eXBlLl9kcmF3Q29ubmVjdG9ycz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxuPXRoaXMuZGF0YXNldHMoKVswXSxpPTE7aTxuLmRhdGEoKS5sZW5ndGg7aSsrKXt2YXIgcj1pLTEsbz1uLmRhdGEoKVtpXSxhPW4uZGF0YSgpW3JdLHM9dC54KGEscixuKSxsPXQueChvLGksbikrdC53aWR0aChvLGksbiksYz10LnkobyxpLG4pOyh0aGlzLl9zdWJ0b3RhbHNbaV0+MCYmdGhpcy5fc3VidG90YWxzW2ldPnRoaXMuX3N1YnRvdGFsc1tyXXx8dGhpcy5fc3VidG90YWxzW2ldPDAmJnRoaXMuX3N1YnRvdGFsc1tpXT49dGhpcy5fc3VidG90YWxzW3JdKSYmKGM9dC55KG8saSxuKSt0LmhlaWdodChvLGksbikpLHRoaXMuX2Nvbm5lY3RvckFyZWEuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChlLl9DT05ORUNUT1JfQ0xBU1MsITApLmF0dHIoIngxIixzKS5hdHRyKCJ4MiIsbCkuYXR0cigieTEiLGMpLmF0dHIoInkyIixjKX19LGUucHJvdG90eXBlLl91cGRhdGVTdWJ0b3RhbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRhdGFzZXRzKCk7aWYodC5sZW5ndGg+MCl7dmFyIGU9dFt0Lmxlbmd0aC0xXTt0aGlzLl9zdWJ0b3RhbHM9bmV3IEFycmF5LHRoaXMuX2NhbGN1bGF0ZVN1YnRvdGFsc0FuZEV4dGVudChlKX19LGUuX0JBUl9ERUNMSU5FX0NMQVNTPSJ3YXRlcmZhbGwtZGVjbGluZSIsZS5fQkFSX0dST1dUSF9DTEFTUz0id2F0ZXJmYWxsLWdyb3d0aCIsZS5fQkFSX1RPVEFMX0NMQVNTPSJ3YXRlcmZhbGwtdG90YWwiLGUuX0NPTk5FQ1RPUl9DTEFTUz0iY29ubmVjdG9yIixlLl9DT05ORUNUT1JfQVJFQV9DTEFTUz0iY29ubmVjdG9yLWFyZWEiLGUuX1RPVEFMX0tFWT0idG90YWwiLGV9KShYTXQuQmFyKTtmVHQuV2F0ZXJmYWxsPXlUdCwoZnVuY3Rpb24odCl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT11TztlLl9fZXhwb3J0U3RhcihmTXQsdCksZS5fX2V4cG9ydFN0YXIoWE10LHQpLGUuX19leHBvcnRTdGFyKGh3dCx0KSxlLl9fZXhwb3J0U3RhcigkTXQsdCksZS5fX2V4cG9ydFN0YXIobU10LHQpLGUuX19leHBvcnRTdGFyKG5FdCx0KSxlLl9fZXhwb3J0U3RhcihnRXQsdCksZS5fX2V4cG9ydFN0YXIoQUV0LHQpLGUuX19leHBvcnRTdGFyKFVFdCx0KSxlLl9fZXhwb3J0U3RhcihaRXQsdCksZS5fX2V4cG9ydFN0YXIob1R0LHQpLGUuX19leHBvcnRTdGFyKGZUdCx0KX0pKHBNdCk7dmFyIHZUdD17fTsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi9PYmplY3QuZGVmaW5lUHJvcGVydHkodlR0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx2VHQudmVyc2lvbj0iMy45LjAiLChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGU9dU87dC5BbmltYXRvcnM9X210LHQuQXhlcz1QbXQsdC5Db21wb25lbnRzPWlidCx0LkNvbmZpZ3M9TF90LHQuRm9ybWF0dGVycz1neXQsdC5SZW5kZXJDb250cm9sbGVyPUhndCx0LlJlbmRlclBvbGljaWVzPW55dCx0LlN5bWJvbEZhY3Rvcmllcz1VeHQsdC5EaXNwYXRjaGVycz1zYnQsdC5EcmF3ZXJzPU5TdCx0LkludGVyYWN0aW9ucz1vYnQsdC5QbG90cz1wTXQsdC5TY2FsZXM9Wnl0LHQuVXRpbHM9Rmd0LGUuX19leHBvcnRTdGFyKG15dCx0KSx0LlRpbWVJbnRlcnZhbD1LeXQuVGltZUludGVydmFsLGUuX19leHBvcnRTdGFyKEJndCx0KSxlLl9fZXhwb3J0U3Rhcih4eHQsdCksZS5fX2V4cG9ydFN0YXIoZ3d0LHQpLHQudmVyc2lvbj12VHQudmVyc2lvbixlLl9fZXhwb3J0U3RhcihjYnQsdCksZS5fX2V4cG9ydFN0YXIoV3d0LHQpLGUuX19leHBvcnRTdGFyKHdidCx0KSxlLl9fZXhwb3J0U3RhcihJYnQsdCksZS5fX2V4cG9ydFN0YXIoZ010LHQpLGUuX19leHBvcnRTdGFyKHV3dCx0KSxlLl9fZXhwb3J0U3RhcihJdnQsdCksZS5fX2V4cG9ydFN0YXIoaHZ0LHQpfSkock8pO2NvbnN0IGJUdD1be2NoYXJhY3Rlcjoi4pe8IixtZXRob2Q6ck8uU3ltYm9sRmFjdG9yaWVzLnNxdWFyZX0se2NoYXJhY3Rlcjoi4peGIixtZXRob2Q6ck8uU3ltYm9sRmFjdG9yaWVzLmRpYW1vbmR9LHtjaGFyYWN0ZXI6IuKWsiIsbWV0aG9kOnJPLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZX0se2NoYXJhY3Rlcjoi4piFIixtZXRob2Q6ck8uU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6IuKcmiIsbWV0aG9kOnJPLlN5bWJvbEZhY3Rvcmllcy5jcm9zc31dO3ZhciB4VHQ7ZnVuY3Rpb24gd1R0KHQpe3JldHVybiBlPT57bGV0IG4saT1NYXRoLmFicyhlKTtyZXR1cm4gaTwxZS0xNSYmKGk9MCksbj1teShpPj0xZTR8fGk+MCYmaTwuMDE/Ii4iK3QrIn5lIjoiLiIrdCsifmciKSxuKGUpfX0hKGZ1bmN0aW9uKHQpe3QuU1RFUD0ic3RlcCIsdC5SRUxBVElWRT0icmVsYXRpdmUiLHQuV0FMTF9USU1FPSJ3YWxsX3RpbWUifSkoeFR0fHwoeFR0PXt9KSk7Y29uc3QgU1R0PW15KCIuNH5zIik7ZnVuY3Rpb24gTVR0KCl7bGV0IHQ9bmV3IHJPLlNjYWxlcy5MaW5lYXI7dC50aWNrR2VuZXJhdG9yKHJPLlNjYWxlcy5UaWNrR2VuZXJhdG9ycy5pbnRlZ2VyVGlja0dlbmVyYXRvcigpKTtsZXQgZT1uZXcgck8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpO3JldHVybiBlLmZvcm1hdHRlcihTVHQpLHtzY2FsZTp0LGF4aXM6ZSxhY2Nlc3Nvcjp0PT50LnN0ZXB9fWxldCBFVHQ9ck8uRm9ybWF0dGVycy50aW1lKCIlYSAlYiAlZSwgJUg6JU06JVMiKSxUVHQ9KHQsZSxuKT0+e2lmKG51bGwhPXQucmVsYXRpdmUpcmV0dXJuIHQucmVsYXRpdmU7bGV0IGk9bi5kYXRhKCk7cmV0dXJuKCt0LndhbGxfdGltZS0oaS5sZW5ndGg+MD8raVswXS53YWxsX3RpbWU6MCkpLzM2ZTV9LENUdD10PT57bGV0IGU9IiIsbj1NYXRoLmZsb29yKHQvMjQpO3QtPTI0Km4sbiYmKGUrPW4rImQgIik7bGV0IGk9TWF0aC5mbG9vcih0KTt0LT1pLHQqPTYwLChpfHxuKSYmKGUrPWkrImggIik7bGV0IHI9TWF0aC5mbG9vcih0KTtyZXR1cm4gdC09cix0Kj02MCwocnx8aXx8bikmJihlKz1yKyJtICIpLGUrTWF0aC5mbG9vcih0KSsicyJ9O2Z1bmN0aW9uIEFUdCh0KXtzd2l0Y2godCl7Y2FzZSB4VHQuU1RFUDpyZXR1cm4gTVR0KCk7Y2FzZSB4VHQuV0FMTF9USU1FOnJldHVybihmdW5jdGlvbiBlKCl7bGV0IHQ9bmV3IHJPLlNjYWxlcy5UaW1lO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IHJPLkF4ZXMuVGltZSh0LCJib3R0b20iKSxhY2Nlc3Nvcjp0PT50LndhbGxfdGltZX19KSgpO2Nhc2UgeFR0LlJFTEFUSVZFOnJldHVybihmdW5jdGlvbiBuKCl7bGV0IHQ9bmV3IHJPLlNjYWxlcy5MaW5lYXI7cmV0dXJue3NjYWxlOnQsYXhpczpuZXcgck8uQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpLGFjY2Vzc29yOlRUdH19KSgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHhUeXBlOiAiK3QpfX12YXIga1R0O2Z1bmN0aW9uIExUdCh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmxvYWRLZXk9IiIsdGhpcy5kYXRhVG9Mb2FkPVtdLHRoaXMuZ2V0RGF0YUxvYWROYW1lPXQ9PlN0cmluZyh0KSx0aGlzLmRhdGFMb2FkaW5nPSExLHRoaXMuZGF0YUxvYWRlZEF0TGVhc3RPbmNlPSExLHRoaXMuX2lzQ29ubmVjdGVkPSExLHRoaXMuX2RhdGFMb2FkU3RhdGU9bmV3IE1hcCx0aGlzLl9jYW5jZWxsZXI9bmV3IFhSLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCx0aGlzLl9sb2FkRGF0YT1TZS5leHBvcnRzLnRocm90dGxlKHRoaXMuX2xvYWREYXRhSW1wbCwxMDAse2xlYWRpbmc6ITAsdHJhaWxpbmc6ITB9KX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5faXNDb25uZWN0ZWQ9ITB9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSExfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnthY3RpdmU6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2xvYWREYXRhSWZBY3RpdmUifSxfaXNDb25uZWN0ZWQ6e3R5cGU6Qm9vbGVhbn0sbG9hZEtleTp7dHlwZTpTdHJpbmd9LGRhdGFUb0xvYWQ6e3R5cGU6QXJyYXl9LGdldERhdGFMb2FkTmFtZTp7dHlwZTpPYmplY3R9LGxvYWREYXRhQ2FsbGJhY2s6e3R5cGU6T2JqZWN0fSxyZXF1ZXN0RGF0YTp7dHlwZTpPYmplY3R9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2RhdGFUb0xvYWRDaGFuZ2VkKF9pc0Nvbm5lY3RlZCwgZGF0YVRvTG9hZC4qKSJdfW9uTG9hZEZpbmlzaCgpe31yZWxvYWQoKXt0aGlzLl9kYXRhTG9hZFN0YXRlLmNsZWFyKCksdGhpcy5fbG9hZERhdGEoKX1yZXNldCgpe251bGwhPXRoaXMuX2xvYWREYXRhQXN5bmMmJihjbGVhclRpbWVvdXQodGhpcy5fbG9hZERhdGFBc3luYyksdGhpcy5fbG9hZERhdGFBc3luYz1udWxsKSx0aGlzLl9jYW5jZWxsZXImJnRoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKSx0aGlzLl9kYXRhTG9hZFN0YXRlJiZ0aGlzLl9kYXRhTG9hZFN0YXRlLmNsZWFyKCksdGhpcy5faXNDb25uZWN0ZWQmJnRoaXMuX2xvYWREYXRhKCl9X2RhdGFUb0xvYWRDaGFuZ2VkKCl7dGhpcy5faXNDb25uZWN0ZWQmJnRoaXMuX2xvYWREYXRhKCl9ZGV0YWNoZWQoKXtudWxsIT10aGlzLl9sb2FkRGF0YUFzeW5jJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCl9X2xvYWREYXRhSWZBY3RpdmUoKXt0aGlzLmFjdGl2ZSYmdGhpcy5fbG9hZERhdGEoKX1fbG9hZERhdGFJbXBsKCl7dGhpcy5hY3RpdmUmJihudWxsIT09dGhpcy5fbG9hZERhdGFBc3luYyYmY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9c2V0VGltZW91dCh0aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZih0LmNhbmNlbGxlZClyZXR1cm47dGhpcy5kYXRhTG9hZGluZz0hMDtjb25zdCBlPXRoaXMuZGF0YVRvTG9hZC5maWx0ZXIoKHQ9Pntjb25zdCBlPXRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpO3JldHVybiF0aGlzLl9kYXRhTG9hZFN0YXRlLmhhcyhlKX0pKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpO3RoaXMuX2RhdGFMb2FkU3RhdGUuc2V0KGUsa1R0LkxPQURJTkcpfWNvbnN0IG49dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO2NvbnN0e2l0ZW06ZSxkYXRhOm59PXQudmFsdWUsaT10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChpLGtUdC5MT0FERUQpLHRoaXMubG9hZERhdGFDYWxsYmFjayh0aGlzLGUsbil9KSksaT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PntpZighdC5jYW5jZWxsZWQpe2NvbnN0IHQ9bmV3IFNldChlLm1hcCgodD0+dGhpcy5nZXREYXRhTG9hZE5hbWUodCkpKSk7dGhpcy5kYXRhVG9Mb2FkLnNvbWUoKGU9PnQuaGFzKHRoaXMuZ2V0RGF0YUxvYWROYW1lKGUpKSkpJiZ0aGlzLm9uTG9hZEZpbmlzaCgpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCx0aGlzLmRhdGFMb2FkZWRBdExlYXN0T25jZT0hMH1BcnJheS5mcm9tKHRoaXMuX2RhdGFMb2FkU3RhdGUudmFsdWVzKCkpLmluY2x1ZGVzKGtUdC5MT0FESU5HKXx8KHRoaXMuZGF0YUxvYWRpbmc9ITEpfSkpO3RoaXMucmVxdWVzdERhdGEoZSxuLCgoKT0+aSh2b2lkIDApKSl9KSkpKX19fSEoZnVuY3Rpb24odCl7dFt0LkxPQURJTkc9MF09IkxPQURJTkciLHRbdC5MT0FERUQ9MV09IkxPQURFRCJ9KShrVHR8fChrVHQ9e30pKSxlbCh7bW9kdWxlTmFtZToicGxvdHRhYmxlLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIFxuLnBsb3R0YWJsZS1jb2xvcnMtMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1Mjc5Yzc7IC8qIElORElHTyAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0xIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkMzczZTsgLyogQ09SQUxfUkVEICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjNjMjYxOyAvKiBGRVJOICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFkNDE5OyAvKiBCUklHSFRfU1VOICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmMyYjZmOyAvKiBKQUNBUlRBICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3OTM5OyAvKiBCVVJOSU5HX09SQU5HRSAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy02IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiMmU2NTsgLyogQ0VSSVNFX1JFRCAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy03IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk5Y2U1MDsgLyogQ09OSUZFUiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy04IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzk2MjU2NTsgLyogUk9ZQUxfSEVBVEggKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtOSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwNmNjY2M7IC8qIFJPQklOU19FR0dfQkxVRSAqL1xufVxuXG4vKipcbiAqIFVzZXItc3VwcGxpZWQgcmVuZGVyVG8gZWxlbWVudC5cbiAqL1xuLnBsb3R0YWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrOyAvKiBtdXN0IGJlIGJsb2NrIGVsZW1lbnRzIGZvciB3aWR0aC9oZWlnaHQgY2FsY3VsYXRpb25zIHRvIHdvcmsgaW4gRmlyZWZveC4gKi9cbiAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxsO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qKlxuICAgKiBQcmUgMy4wLCB1c2VycyBjb3VsZCBzZXQgdGhlIGRpbWVuc2lvbiBvZiB0aGUgcm9vdCBlbGVtZW50IGluIHR3byB3YXlzOiBlaXRoZXIgdXNpbmcgQ1NTXG4gICAqIChpbmxpbmUgb3IgdGhyb3VnaCBhIHN0eWxlc2hlZXQpLCBvciB1c2luZyB0aGUgU1ZHIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGVzLiBCeSBkZWZhdWx0LCB3ZVxuICAgKiBzZXQgdGhlIFNWRyB3aWR0aC9oZWlnaHQgYXR0cmlidXRlcyB0byAxMDAlLlxuICAgKlxuICAgKiBQb3N0IDMuMCB0aGUgcm9vdCBlbGVtZW50IGlzIGFsd2F5cyBhIG5vcm1hbCBkaXYgYW5kIHRoZSBvbmx5IHdheSB0byBzZXQgdGhlIGRpbWVuc2lvbnMgaXNcbiAgICogdG8gdXNlIENTUy4gVG8gcmVwbGljYXRlIHRoZSBcIjEwMCUtYnktZGVmYXVsdFwiIGJlaGF2aW9yLCB3ZSBhcHBseSB3aWR0aC9oZWlnaHQgMTAwJS5cbiAgICovXG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qKlxuICogVGhlIF9lbGVtZW50IHRoYXQgcm9vdHMgZWFjaCBDb21wb25lbnQncyBET00uXG4gKi9cbi5wbG90dGFibGUgLmNvbXBvbmVudCB7XG4gIC8qIEFsbG93IGNvbXBvbmVudHMgdG8gYmUgcG9zaXRpb25lZCB3aXRoIGV4cGxpY2l0IGxlZnQvdG9wL3dpZHRoL2hlaWdodCBzdHlsZXMgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuXG4ucGxvdHRhYmxlIC5iYWNrZ3JvdW5kLWNvbnRhaW5lcixcbi5wbG90dGFibGUgLmNvbnRlbnQsXG4ucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLyoqXG4gKiBEb24ndCBhbGxvdyBzdmcgZWxlbWVudHMgYWJvdmUgdGhlIGNvbnRlbnQgdG8gc3RlYWwgZXZlbnRzXG4gKi9cbi5wbG90dGFibGUgLmZvcmVncm91bmQtY29udGFpbmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4ge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGxvdHRhYmxlIC5jb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ucGxvdHRhYmxlIC5wbG90LWNhbnZhcy1jb250YWluZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGxvdHRhYmxlIC5wbG90LWNhbnZhcyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC8qKlxuICAgKiBQbGF5IHdlbGwgd2l0aCBkZWZlcnJlZCByZW5kZXJpbmcuXG4gICAqL1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAwcHggMHB4IDBweDtcbn1cblxuLnBsb3R0YWJsZSB0ZXh0IHtcbiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjtcbn1cblxuLnBsb3R0YWJsZSAubGFiZWwgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG59XG5cbi5wbG90dGFibGUgLmJhci1sYWJlbC10ZXh0LWFyZWEgdGV4dCxcbi5wbG90dGFibGUgLnNjYXR0ZXItbGFiZWwtdGV4dC1hcmVhIHRleHQge1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi5wbG90dGFibGUgLmxhYmVsLWFyZWEgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnBsb3R0YWJsZSAubGlnaHQtbGFiZWwgdGV4dCB7XG4gIGZpbGw6IHdoaXRlO1xufVxuXG4ucGxvdHRhYmxlIC5kYXJrLWxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5vZmYtYmFyLWxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5zdGFja2VkLWJhci1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4ucGxvdHRhYmxlIC5zdGFja2VkLWJhci1wbG90IC5vZmYtYmFyLWxhYmVsIHtcbiAgLyogSEFDS0hBQ0sgIzI3OTU6IGNvcnJlY3Qgb2ZmLWJhciBsYWJlbCBsb2dpYyB0byBiZSBpbXBsZW1lbnRlZCBvbiBTdGFja2VkQmFyICovXG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4ucGxvdHRhYmxlIC5heGlzLWxhYmVsIHRleHQge1xuICBmb250LXNpemU6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ucGxvdHRhYmxlIC50aXRsZS1sYWJlbCB0ZXh0IHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcyBsaW5lLmJhc2VsaW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcyBsaW5lLnRpY2stbWFyayB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1jaXJjbGUge1xuICBmaWxsOiB3aGl0ZTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIHN0cm9rZTogI0NDQztcbn1cblxuLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1saW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1yZWN0IHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgZmlsbDogd2hpdGU7XG59XG5cbi5wbG90dGFibGUgLmJhci1wbG90IC5iYXNlbGluZSB7XG4gIHN0cm9rZTogIzk5OTtcbn1cblxuLnBsb3R0YWJsZSAuZ3JpZGxpbmVzIGxpbmUge1xuICBzdHJva2U6ICMzQzNDM0M7IC8qIGhhY2toYWNrOiBncmlkbGluZXMgc2hvdWxkIGJlIHNvbGlkOyBzZWUgIzgyMCAqL1xuICBvcGFjaXR5OiAwLjI1O1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuc2VsZWN0aW9uLWJveC1sYXllciAuc2VsZWN0aW9uLWFyZWEge1xuICBmaWxsOiBibGFjaztcbiAgZmlsbC1vcGFjaXR5OiAwLjAzO1xuICBzdHJva2U6ICNDQ0M7XG59XG4vKiBEcmFnQm94TGF5ZXIgKi9cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlIC5kcmFnLWVkZ2UtbHIge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLnktcmVzaXphYmxlIC5kcmFnLWVkZ2UtdGIge1xuICBjdXJzb3I6IG5zLXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLXRsIHtcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci10ciB7XG4gIGN1cnNvcjogbmVzdy1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItYmwge1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLWJyIHtcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIubW92YWJsZSAuc2VsZWN0aW9uLWFyZWEge1xuICBjdXJzb3I6IG1vdmU7IC8qIElFIGZhbGxiYWNrICovXG4gIGN1cnNvcjogLW1vei1ncmFiO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci5tb3ZhYmxlIC5zZWxlY3Rpb24tYXJlYTphY3RpdmUge1xuICBjdXJzb3I6IC1tb3otZ3JhYmJpbmc7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZztcbiAgY3Vyc29yOiBncmFiYmluZztcbn1cbi8qIC9EcmFnQm94TGF5ZXIgKi9cblxuLnBsb3R0YWJsZSAuZ3VpZGUtbGluZS1sYXllciBsaW5lLmd1aWRlLWxpbmUge1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5kcmFnLWxpbmUtbGF5ZXIuZW5hYmxlZC52ZXJ0aWNhbCBsaW5lLmRyYWctZWRnZSB7XG4gIGN1cnNvcjogZXctcmVzaXplO1xufVxuXG4ucGxvdHRhYmxlIC5kcmFnLWxpbmUtbGF5ZXIuZW5hYmxlZC5ob3Jpem9udGFsIGxpbmUuZHJhZy1lZGdlIHtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmxlZ2VuZCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCByZWN0LnN3YXRjaC1ib3VuZGluZy1ib3gge1xuICBmaWxsOiBub25lO1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLnBsb3R0YWJsZSAud2F0ZXJmYWxsLXBsb3QgbGluZS5jb25uZWN0b3Ige1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5waWUtcGxvdCAuYXJjLm91dGxpbmUge1xuICBzdHJva2UtbGluZWpvaW46IHJvdW5kO1xufVxuXG4ifSk7Y29uc3QgUFR0PVsxLDAsMCwxLDAsMF07Y2xhc3MgTlR0IGV4dGVuZHMgck8uVXRpbHMuVHJhbnNsYXRvcntjb21wdXRlUG9zaXRpb24odCxlKXtjb25zdCBuPXt4OnQseTplfSxpPShmdW5jdGlvbiByKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1bXTtmb3IoO3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDspaWYoZS5wdXNoKHQpLHQuYXNzaWduZWRTbG90KXQ9dC5hc3NpZ25lZFNsb3Q7ZWxzZSBpZih0LnBhcmVudEVsZW1lbnQpdD10LnBhcmVudEVsZW1lbnQ7ZWxzZXtjb25zdCBlPXQucGFyZW50Tm9kZTt0PWUgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P2UuaG9zdDplIT09dD9lOm51bGx9cmV0dXJuIGV9KSh0KTtsZXQgaT1QVHQscj1udWxsO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9ck8uVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0odCk7aWYobnVsbCE9ZSl7Y29uc3Qgbj10LmNsaWVudFdpZHRoLzIscj10LmNsaWVudEhlaWdodC8yO2k9ck8uVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFtuLHJdKSxpPXJPLlV0aWxzLk1hdGgubXVsdGlwbHlNYXRyaXgoaSxyTy5VdGlscy5NYXRoLmludmVydE1hdHJpeChlKSksaT1yTy5VdGlscy5NYXRoLm11bHRpcGx5VHJhbnNsYXRlKGksWy1uLC1yXSl9bGV0IG49dC5zY3JvbGxMZWZ0LG89dC5zY3JvbGxUb3A7bnVsbCE9PXImJnQhPT1yfHwobi09dC5vZmZzZXRMZWZ0K3QuY2xpZW50TGVmdCxvLT10Lm9mZnNldFRvcCt0LmNsaWVudFRvcCxyPXQub2Zmc2V0UGFyZW50KSxpPXJPLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUoaSxbbixvXSl9cmV0dXJuIGl9KSh0aGlzLl9yb290RWxlbWVudCk7cmV0dXJuIG51bGw9PWk/bjpyTy5VdGlscy5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9fWNsYXNzIElUdCBleHRlbmRzIHJPLkRpc3BhdGNoZXJzLk1vdXNle2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX2V2ZW50VGFyZ2V0PXQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLHRoaXMuX3RyYW5zbGF0b3I9bmV3IE5UdCh0LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSl9c3RhdGljIGdldERpc3BhdGNoZXIodCl7Y29uc3QgZT10LnJvb3QoKS5yb290RWxlbWVudCgpO2xldCBuPWVbSVR0Ll9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIG58fChuPW5ldyBJVHQodCksZVtJVHQuX0RJU1BBVENIRVJfS0VZXT1uKSxufX1jbGFzcyBSVHQgZXh0ZW5kcyByTy5EaXNwYXRjaGVycy5Ub3VjaHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyBOVHQodC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCkpfXN0YXRpYyBnZXREaXNwYXRjaGVyKHQpe2NvbnN0IGU9dC5yb290KCkucm9vdEVsZW1lbnQoKTtsZXQgbj1lW1JUdC5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBufHwobj1uZXcgUlR0KHQpLGVbUlR0Ll9ESVNQQVRDSEVSX0tFWV09biksbn19ck8uSW50ZXJhY3Rpb24ucHJvdG90eXBlLl9pc0luc2lkZUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gMDw9dC54JiYwPD10LnkmJnQueDx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJnQueTx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpfTtjbGFzcyBPVHQgZXh0ZW5kcyByTy5JbnRlcmFjdGlvbnMuUG9pbnRlcntfYW5jaG9yKHQpe2NvbnN0IGU9dGhpcztlLl9pc0FuY2hvcmVkPSEwLGUuX21vdXNlRGlzcGF0Y2hlcj1JVHQuZ2V0RGlzcGF0Y2hlcihlLl9jb21wb25lbnRBdHRhY2hlZFRvKSxlLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUoZS5fbW91c2VNb3ZlQ2FsbGJhY2spLGUuX3RvdWNoRGlzcGF0Y2hlcj1SVHQuZ2V0RGlzcGF0Y2hlcihlLl9jb21wb25lbnRBdHRhY2hlZFRvKSxlLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KGUuX3RvdWNoU3RhcnRDYWxsYmFjayl9fXZhciB6VHQ7IShmdW5jdGlvbih0KXt0LkFVVE89ImF1dG8iLHQuQk9UVE9NPSJib3R0b20iLHQuUklHSFQ9InJpZ2h0In0pKHpUdHx8KHpUdD17fSkpO2NvbnN0IERUdD17Ym94U2hhZG93OiIwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAuMykiLG9wYWNpdHk6MCxwb3NpdGlvbjoiZml4ZWQiLHdpbGxDaGFuZ2U6InRyYW5zZm9ybSIsekluZGV4OjV9O2xldCBCVHQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnBvc2l0aW9uPXpUdC5BVVRPLHRoaXMubWluRGlzdEZyb21FZGdlPTE1LHRoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl9yYWY9bnVsbCx0aGlzLl90dW5uZWw9bnVsbH1yZWFkeSgpe3RoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl9yYWY9bnVsbCx0aGlzLl90dW5uZWw9bnVsbH1hdHRhY2hlZCgpe3RoaXMuX3R1bm5lbD10aGlzLl9jcmVhdGVUdW5uZWwoKSx0aGlzLl9oaWRlT25CbHVyPSgpPT57ZG9jdW1lbnQuaGlkZGVuJiZ0aGlzLmhpZGUoKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuX2hpZGVPbkJsdXIpfWRldGFjaGVkKCl7dGhpcy5oaWRlKCksdGhpcy5fcmVtb3ZlVHVubmVsKHRoaXMuX3R1bm5lbCksdGhpcy5fdHVubmVsPW51bGwsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuX2hpZGVPbkJsdXIpfWNvbnRlbnQoKXtyZXR1cm4gdGhpcy5fdHVubmVsLnNoYWRvd1Jvb3R9aGlkZSgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpLHRoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl90dW5uZWwuc3R5bGUub3BhY2l0eT0wfXVwZGF0ZUFuZFBvc2l0aW9uKHQpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpLHRoaXMuX3JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuaXNBdHRhY2hlZCYmdGhpcy5fcmVwb3NpdGlvbkltcGwodCl9KSl9X3JlcG9zaXRpb25JbXBsKHQpe2NvbnN0IGU9dGhpcy5fdHVubmVsLG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj13aW5kb3cuaW5uZXJIZWlnaHQsbz1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLGE9bi50b3Ascz1hK24uaGVpZ2h0LGw9aS5oZWlnaHQrMjA7bGV0IGM9bnVsbCx1PU1hdGgubWF4KHRoaXMubWluRGlzdEZyb21FZGdlLG4ubGVmdCksaD1udWxsLGQ9YTt0aGlzLnBvc2l0aW9uPT16VHQuUklHSFQ/dT1uLnJpZ2h0OihkPXMrMjAsbzx1K2kud2lkdGgrdGhpcy5taW5EaXN0RnJvbUVkZ2UmJih1PW51bGwsaD10aGlzLm1pbkRpc3RGcm9tRWRnZSkpLHRoaXMucG9zaXRpb249PXpUdC5BVVRPJiZuLnRvcC1sPjAmJnI8bi50b3Arbi5oZWlnaHQrbCYmKGQ9bnVsbCxjPXItYSsyMCk7Y29uc3QgcD17Y29udGFpbjoiY29udGVudCIsb3BhY2l0eToxLGxlZnQ6dT9gJHt1fXB4YDpudWxsLHJpZ2h0Omg/YCR7aH1weGA6bnVsbCx0b3A6ZD9gJHtkfXB4YDpudWxsLGJvdHRvbTpjP2Ake2N9cHhgOm51bGx9O1NlLmV4cG9ydHMuaXNFcXVhbCh0aGlzLl9zdHlsZUNhY2hlLHApfHwoT2JqZWN0LmFzc2lnbihlLnN0eWxlLHApLHRoaXMuX3N0eWxlQ2FjaGU9cCl9X2NyZWF0ZVR1bm5lbCgpe2lmKCF0aGlzLmNvbnRlbnRDb21wb25lbnROYW1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZXF1aXJlIGBjb250ZW50Q29tcG9uZW50TmFtZWAgdG8gYmUgYSBuYW1lIG9mIGEgUG9seW1lciBjb21wb25lbnQiKTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5jb250ZW50Q29tcG9uZW50TmFtZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24odC5zdHlsZSxEVHQpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksdH1fcmVtb3ZlVHVubmVsKHQpe2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCl9fTt0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxCVHQucHJvdG90eXBlLCJjb250ZW50Q29tcG9uZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxCVHQucHJvdG90eXBlLCJwb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCVHQucHJvdG90eXBlLCJtaW5EaXN0RnJvbUVkZ2UiLHZvaWQgMCksQlR0PXQoW2koInZ6LWNoYXJ0LXRvb2x0aXAiKV0sQlR0KTtjb25zdCBIVHQ9bXkoIi4yfmUiKSxGVHQ9bXkoIi40fnIiKSxWVHQ9bXkoIix+Iik7ZnVuY3Rpb24gVVR0KHQpe2lmKDA9PT10KXJldHVybiIwIjtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0xZTR8fGU8LjAwMT9IVHQodCk6RlR0KHQpfWNvbnN0IGpUdD17Zm9ybWF0VGljazpVVHQsZm9ybWF0U2hvcnQ6VVR0LGZvcm1hdFJlYWRhYmxlKHQpe2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PTFlNHx8ZTwuMDAxP0hUdCh0KTpWVHQodCl9LGZvcm1hdExvbmc6VlR0fTtteSgiMC4zfnMiKSxteSgiLC4zfmYiKSxteSgiLjR+Iik7Y29uc3QgR1R0PWNBKCkudGlja0Zvcm1hdCgpO2xldCBXVHQ7Y29uc3QgcVR0PXtmb3JtYXRUaWNrOnQ9PkdUdChuZXcgRGF0ZSh0KSksZm9ybWF0U2hvcnQ6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoV1R0LHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMifSksZm9ybWF0UmVhZGFibGU6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoV1R0LHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMiLHRpbWVab25lTmFtZToic2hvcnQifSksZm9ybWF0TG9uZzp0PT5uZXcgRGF0ZSh0KS50b0xvY2FsZVN0cmluZyhXVHQse3llYXI6Im51bWVyaWMiLG1vbnRoOiJsb25nIixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0IixmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOjN9KX07dmFyIFlUdDshKGZ1bmN0aW9uKHQpe3RbdC5MSU5FQVI9MF09IkxJTkVBUiIsdFt0LkxPRzEwPTFdPSJMT0cxMCIsdFt0LlRJTUU9Ml09IlRJTUUifSkoWVR0fHwoWVR0PXt9KSk7Y2xhc3MgWFR0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPWpUdH10cmFuc2Zvcm0odCxlLG4pe2NvbnN0W2kscl09dCxvPXItaSxbYSxzXT1lO3JldHVybiAwPT09bz9hOihzLWEpL28qKG4taSkrYX1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0odCxlLG4pfXJldmVyc2UodCxlLG4pe3JldHVybiB0aGlzLnRyYW5zZm9ybShlLHQsbil9bmljZURvbWFpbih0KXtsZXRbZSxuXT10O2lmKG48ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtpZihuPT09ZSlyZXR1cm4gMD09PWU/Wy0xLDFdOmU8MD9bMiplLDBdOlswLDIqZV07Y29uc3QgaT1WTSgpLHI9LjA1KihuLWUrTnVtYmVyLkVQU0lMT04pLFtvLGFdPWkuZG9tYWluKFtlLXIsbityXSkubmljZSgpLmRvbWFpbigpO3JldHVybltvLGFdfXRpY2tzKHQsZSl7cmV0dXJuIFZNKCkuZG9tYWluKHQpLnRpY2tzKGUpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jbGFzcyAkVHR7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9alR0fXRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5sb2cxMCh0PjA/dDpOdW1iZXIuTUlOX1ZBTFVFKX11bnRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5leHAodC9NYXRoLkxPRzEwRSl9Zm9yd2FyZCh0LGUsbil7aWYobjw9MClyZXR1cm4gZVswXTtjb25zdFtpLHJdPXQsW28sYV09ZSxzPXRoaXMudHJhbnNmb3JtKGkpLGw9dGhpcy50cmFuc2Zvcm0ociktcyxjPWEtbztyZXR1cm4gbj10aGlzLnRyYW5zZm9ybShuKSxjLyhsK051bWJlci5FUFNJTE9OKSoobi1zKStvfXJldmVyc2UodCxlLG4pe2NvbnN0W2kscl09dCxbbyxhXT1lLHM9dGhpcy50cmFuc2Zvcm0oaSksbD10aGlzLnRyYW5zZm9ybShyKTtyZXR1cm4gdGhpcy51bnRyYW5zZm9ybSgobC1zKS8oYS1vK051bWJlci5FUFNJTE9OKSoobi1vKStzKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dDtpZihlPm4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7Y29uc3QgaT1NYXRoLm1heChlLE51bWJlci5NSU5fVkFMVUUpLHI9TWF0aC5tYXgobixOdW1iZXIuTUlOX1ZBTFVFKTtyZXR1cm4gbjw9MD9bTnVtYmVyLk1JTl9WQUxVRSwxXTpbTWF0aC5tYXgoTnVtYmVyLk1JTl9WQUxVRSwuNSppKSwyKnJdfXRpY2tzKHQsZSl7Y29uc3Qgbj10WzBdPD0wP051bWJlci5NSU5fVkFMVUU6dFswXSxpPXRbMV08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzFdLHI9S00oKS5kb21haW4oW24saV0pLnRpY2tzKGUpO3JldHVybiByLmxlbmd0aD9yOnR9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJnQ+MH19Y2xhc3MgS1R0e2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT1jQSgpLHRoaXMuZGVmYXVsdEZvcm1hdHRlcj1xVHR9Zm9yd2FyZCh0LGUsbil7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKGUpKG4pfXJldmVyc2UodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKS5pbnZlcnQobikuZ2V0VGltZSgpfW5pY2VEb21haW4odCl7Y29uc3RbZSxuXT10aGlzLnNjYWxlLmRvbWFpbih0KS5uaWNlKCkuZG9tYWluKCk7cmV0dXJuW2UuZ2V0VGltZSgpLG4uZ2V0VGltZSgpXX10aWNrcyh0LGUpe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS50aWNrcyhlKS5tYXAoKHQ9PnQuZ2V0VGltZSgpKSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNsYXNzIFpUdCBleHRlbmRzIHJPLlNjYWxlcy5MaW5lYXJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2lnbm9yZU91dGxpZXI9ITEsdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dDtyZXR1cm4oZnVuY3Rpb24gcih0KXtzd2l0Y2godCl7Y2FzZSBZVHQuTElORUFSOnJldHVybiBuZXcgWFR0O2Nhc2UgWVR0LkxPRzEwOnJldHVybiBuZXcgJFR0O2Nhc2UgWVR0LlRJTUU6cmV0dXJuIG5ldyBLVHQ7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19KShZVHQuTElORUFSKS5uaWNlRG9tYWluKFtuLGldKX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bck8uVXRpbHMuTWF0aC5taW4oZSxuWzBdKSxyTy5VdGlscy5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX25pY2VEb21haW4odCl9cmV0dXJuIG59X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe2NvbnN0IGU9dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj90aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluKCk6W107cmV0dXJuIHRoaXMuZXh0ZW50T2ZWYWx1ZXMoZSl9ZXh0ZW50T2ZWYWx1ZXModCl7Y29uc3QgZT10LmZpbHRlcigodD0+ck8uVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpKSk7bGV0IG49ZTtpZih0aGlzLmlnbm9yZU91dGxpZXIoKSl7Y29uc3QgdD1lLnNvcnQoKCh0LGUpPT50LWUpKSxpPUdsKHQsLjA1KSxyPUdsKHQsLjk1KTtuPWUuZmlsdGVyKCh0PT50Pj1pJiZ0PD1yKSl9Y29uc3QgaT1MbChuKTtyZXR1cm4gbnVsbD09aVswXXx8bnVsbD09aVsxXT9bXTppfWlnbm9yZU91dGxpZXIodCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD8odGhpcy5faWdub3JlT3V0bGllcj10LHRoaXMpOnRoaXMuX2lnbm9yZU91dGxpZXJ9fWNsYXNzIEpUdCBleHRlbmRzIHJPLlF1YW50aXRhdGl2ZVNjYWxle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9pZ25vcmVPdXRsaWVyPSExfXNldFZhbHVlUHJvdmlkZXJGb3JEb21haW4odCl7cmV0dXJuIHRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW49dCx0aGlzfWlnbm9yZU91dGxpZXIodCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD8odGhpcy5faWdub3JlT3V0bGllcj10LHRoaXMpOnRoaXMuX2lnbm9yZU91dGxpZXJ9X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe2NvbnN0IGU9dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj90aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluKCk6W107cmV0dXJuIHRoaXMuZXh0ZW50T2ZWYWx1ZXMoZSl9fWNvbnN0IFFUdD1NYXRoLnBvdygyLC0xMDc0KTtmdW5jdGlvbiB0Q3QodCl7cmV0dXJuIE1hdGgubG9nMTAodCl9ZnVuY3Rpb24gZUN0KHQpe3JldHVybiBNYXRoLnBvdygxMCx0KX1jbGFzcyBuQ3QgZXh0ZW5kcyBKVHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2QzTG9nU2NhbGU9S00oKSx0aGlzLnBhZFByb3BvcnRpb24oLjIpfXNjYWxlKHQpe3JldHVybiB0PD0wP05hTjp0aGlzLl9kM0xvZ1NjYWxlKHQpfWludmVydCh0KXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS5pbnZlcnQodCl9c2NhbGVUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5zY2FsZSh0KX1pbnZlcnRlZFRyYW5zZm9ybWF0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX1nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpe3JldHVybiB0aGlzLmRvbWFpbigpfXNldFRyYW5zZm9ybWF0aW9uRG9tYWluKHQpe3RoaXMuZG9tYWluKHQpfWdldFRyYW5zZm9ybWF0aW9uRXh0ZW50KCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9X2dldERvbWFpbigpe3JldHVybiB0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWlufV9zZXREb21haW4odCl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj10O2NvbnN0W2Usbl09dDtzdXBlci5fc2V0RG9tYWluKFtNYXRoLm1heChRVHQsZSksbl0pfV9uaWNlRG9tYWluKHQsZSl7Y29uc3RbbixpXT10LHI9TWF0aC5tYXgodEN0KFFUdCksdEN0KG4pKSxvPXRDdChpKSxhPW8tcixzPWE/YSp0aGlzLnBhZFByb3BvcnRpb24oKToxO3JldHVybltlQ3QoTWF0aC5tYXgodEN0KFFUdCksci1zKSksZUN0KG8rcyldfV9nZXRVbmJvdW5kZWRFeHRlbnQodCl7Y29uc3QgZT10aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0KTtsZXQgbj10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYoMCE9PWUubGVuZ3RoKXtjb25zdCB0PVtyTy5VdGlscy5NYXRoLm1pbihlLG5bMF0pLHJPLlV0aWxzLk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fbmljZURvbWFpbih0KX1yZXR1cm4gbn1fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModD0hMSl7cmV0dXJuIHN1cGVyLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpLm1hcCgodD0+dD4wP3Q6UVR0KSl9X2RlZmF1bHRFeHRlbnQoKXtyZXR1cm5bMSwxMF19X2JhY2tpbmdTY2FsZURvbWFpbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbih0KSx0aGlzKX1fZ2V0UmFuZ2UoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS5yYW5nZSgpfV9zZXRSYW5nZSh0KXt0aGlzLl9kM0xvZ1NjYWxlLnJhbmdlKHQpfWRlZmF1bHRUaWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKDEpfXRpY2tzKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUudGlja3MoKX1leHRlbnRPZlZhbHVlcyh0KXtjb25zdCBlPXQuZmlsdGVyKCh0PT5yTy5VdGlscy5NYXRoLmlzVmFsaWROdW1iZXIodCkmJnQ+MCkpO2xldCBuPWU7aWYodGhpcy5pZ25vcmVPdXRsaWVyKCkpe2NvbnN0IHQ9ZS5tYXAodEN0KS5zb3J0KCgodCxlKT0+dC1lKSksaT1HbCh0LC4wNSkscj1HbCh0LC45NSk7bj10LmZpbHRlcigodD0+dD49aSYmdDw9cikpLm1hcChlQ3QpfWNvbnN0IGk9TGwobik7cmV0dXJuIG51bGw9PWlbMF18fG51bGw9PWlbMV0/W106aX19Y2xhc3MgaUN0IGV4dGVuZHMgck8uQ29tcG9uZW50cy5TZWxlY3Rpb25Cb3hMYXllcntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLmVhc2VGbj1UZix0aGlzLl9hbmltYXRpb25UaW1lPTc1MCx0aGlzLnhTY2FsZSh0KSx0aGlzLnlTY2FsZShlKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb249bmV3IHJPLkludGVyYWN0aW9ucy5EcmFnLHRoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb249bmV3IHJPLkludGVyYWN0aW9ucy5DbGljayx0aGlzLnNldHVwQ2FsbGJhY2tzKCksdGhpcy51bnpvb21NZXRob2Q9bix0aGlzLm9uRGV0YWNoKCgoKT0+e3RoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0aGlzKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0aGlzKX0pKSx0aGlzLm9uQW5jaG9yKCgoKT0+e3RoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24uYXR0YWNoVG8odGhpcyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpfSkpfWludGVyYWN0aW9uU3RhcnQodCl7dGhpcy5vblN0YXJ0PXR9aW50ZXJhY3Rpb25FbmQodCl7dGhpcy5vbkVuZD10fWRyYWdJbnRlcmFjdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259c2V0dXBDYWxsYmFja3MoKXtsZXQgdD0hMTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQoKHQ9Pnt0aGlzLmJvdW5kcyh7dG9wTGVmdDp0LGJvdHRvbVJpZ2h0OnR9KSx0aGlzLm9uU3RhcnQoKX0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKCgoZSxuKT0+e3RoaXMuYm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHRoaXMuYm94VmlzaWJsZSghMCksdD0hMH0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKCgoZSxuKT0+e3RoaXMuYm94VmlzaWJsZSghMSksdGhpcy5ib3VuZHMoe3RvcExlZnQ6ZSxib3R0b21SaWdodDpufSksdD90aGlzLnpvb20oKTp0aGlzLm9uRW5kKCksdD0hMX0pKSx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLm9uRG91YmxlQ2xpY2sodGhpcy51bnpvb20uYmluZCh0aGlzKSl9YW5pbWF0aW9uVGltZSh0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9hbmltYXRpb25UaW1lO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoImFuaW1hdGlvblRpbWUgY2Fubm90IGJlIG5lZ2F0aXZlIik7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblRpbWU9dCx0aGlzfWVhc2UodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJlYXNlIGZ1bmN0aW9uIG11c3QgYmUgYSBmdW5jdGlvbiIpO3JldHVybiAwPT09dCgwKSYmMT09PXQoMSl8fHJPLlV0aWxzLldpbmRvdy53YXJuKCJFYXNpbmcgZnVuY3Rpb24gZG9lcyBub3QgbWFpbnRhaW4gaW52YXJpYW50IGYoMCk9PTAgJiYgZigxKT09MS4gQmFkIGJlaGF2aW9yIG1heSByZXN1bHQuIiksdGhpcy5lYXNlRm49dCx0aGlzfXpvb20oKXtsZXQgdD10aGlzLnhFeHRlbnQoKVswXS52YWx1ZU9mKCksZT10aGlzLnhFeHRlbnQoKVsxXS52YWx1ZU9mKCksbj10aGlzLnlFeHRlbnQoKVsxXS52YWx1ZU9mKCksaT10aGlzLnlFeHRlbnQoKVswXS52YWx1ZU9mKCk7dCE9PWUmJm4hPT1pJiZ0aGlzLmludGVycG9sYXRlWm9vbSh0LGUsbixpKX11bnpvb20oKXtsZXQgdD10aGlzLnhTY2FsZSgpO3QuX2RvbWFpbk1pbj1udWxsLHQuX2RvbWFpbk1heD1udWxsO2xldCBlPXQuX2dldEV4dGVudCgpO3RoaXMueFNjYWxlKCkuZG9tYWluKGUpLHRoaXMudW56b29tTWV0aG9kKCl9aXNab29taW5nKHQpe3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKCF0KSx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmVuYWJsZWQoIXQpfWludGVycG9sYXRlWm9vbSh0LGUsbixpKXtsZXQgcj10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzBdLnZhbHVlT2YoKSxvPXRoaXMueFNjYWxlKCkuZG9tYWluKClbMV0udmFsdWVPZigpLGE9dGhpcy55U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCkscz10aGlzLnlTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxsPXRoaXMuZWFzZUZuLGM9KHQsZSxuKT0+QmQodCxlKShsKG4pKTt0aGlzLmlzWm9vbWluZyghMCk7bGV0IHU9RGF0ZS5ub3coKSxoPSgpPT57bGV0IGw9RGF0ZS5ub3coKSxkPTA9PT10aGlzLl9hbmltYXRpb25UaW1lPzE6TWF0aC5taW4oMSwobC11KS90aGlzLl9hbmltYXRpb25UaW1lKSxwPWMocix0LGQpLGY9YyhvLGUsZCksbT1jKGEsbixkKSxnPWMocyxpLGQpO3RoaXMueFNjYWxlKCkuZG9tYWluKFtwLGZdKSx0aGlzLnlTY2FsZSgpLmRvbWFpbihbbSxnXSksZDwxP3JPLlV0aWxzLkRPTS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVQb2x5ZmlsbChoKToodGhpcy5vbkVuZCgpLHRoaXMuaXNab29taW5nKCExKSl9O2goKX19dmFyIHJDdCxvQ3QsYUN0LHNDdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKHJDdHx8KHJDdD17fSkpO2NsYXNzIGxDdCBleHRlbmRzIHJPLkNvbXBvbmVudHMuR3JvdXB7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5zdGF0ZT1yQ3QuTk9ORSx0aGlzLnBhblN0YXJ0Q2FsbGJhY2s9bmV3IHJPLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuRW5kQ2FsbGJhY2s9bmV3IHJPLlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuWm9vbT1uZXcgck8uSW50ZXJhY3Rpb25zLlBhblpvb20odCxlKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkubW91c2VGaWx0ZXIoKHQ9PmxDdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5wYW5ab29tLndoZWVsRmlsdGVyKHRoaXMuY2FuU2Nyb2xsWm9vbSksdGhpcy5kcmFnWm9vbUxheWVyPW5ldyBpQ3QodCxlLG4pLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcigodD0+IWxDdC5pc1BhbktleSh0KSYmMD09PXQuYnV0dG9uKSksdGhpcy5hcHBlbmQodGhpcy5kcmFnWm9vbUxheWVyKTtjb25zdCBpPXRoaXMub25XaGVlbC5iaW5kKHRoaXMpO3RoaXMub25BbmNob3IoKCgpPT57dGhpcy5fbW91c2VEaXNwYXRjaGVyPXJPLkRpc3BhdGNoZXJzLk1vdXNlLmdldERpc3BhdGNoZXIodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uV2hlZWwoaSksdGhpcy5wYW5ab29tLmF0dGFjaFRvKHRoaXMpfSkpLHRoaXMub25EZXRhY2goKCgpPT57dGhpcy5wYW5ab29tLmRldGFjaEZyb20odGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyJiYodGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZldoZWVsKGkpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsKX0pKSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCgpPT57dGhpcy5zdGF0ZT09ckN0Lk5PTkUmJnRoaXMuc2V0U3RhdGUockN0LlBBTk5JTkcpfSkpLHRoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCgpPT57dGhpcy5zdGF0ZT09ckN0LlBBTk5JTkcmJnRoaXMuc2V0U3RhdGUockN0Lk5PTkUpfSkpLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdTdGFydCgoKCk9Pnt0aGlzLnN0YXRlPT1yQ3QuTk9ORSYmdGhpcy5zZXRTdGF0ZShyQ3QuRFJBR19aT09NSU5HKX0pKSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnRW5kKCgoKT0+e3RoaXMuc3RhdGU9PXJDdC5EUkFHX1pPT01JTkcmJnRoaXMuc2V0U3RhdGUockN0Lk5PTkUpfSkpfW9uV2hlZWwodCxlKXtpZih0aGlzLmNhblNjcm9sbFpvb20oZSkpcmV0dXJuO2NvbnN0IG49dGhpcy5lbGVtZW50KCk7aWYoIW4uc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpcmV0dXJuO2NvbnN0IGk9bi5hcHBlbmQoImRpdiIpLmNsYXNzZWQoImhlbHAiLCEwKTtpLmFwcGVuZCgic3BhbiIpLnRleHQoIkFsdCArIFNjcm9sbCB0byBab29tIiksaS5vbigiYW5pbWF0aW9uZW5kIiwoKCk9PntpLnJlbW92ZSgpfSkpfXN0YXRpYyBpc1BhbktleSh0KXtyZXR1cm4gQm9vbGVhbih0LmFsdEtleSl8fEJvb2xlYW4odC5zaGlmdEtleSl9Y2FuU2Nyb2xsWm9vbSh0KXtyZXR1cm4gdC5hbHRLZXl9c2V0U3RhdGUodCl7aWYodGhpcy5zdGF0ZT09dClyZXR1cm47Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGU9dCx0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGUpKSx0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHQpKSxlPT1yQ3QuUEFOTklORyYmdGhpcy5wYW5FbmRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCksdD09ckN0LlBBTk5JTkcmJnRoaXMucGFuU3RhcnRDYWxsYmFjay5jYWxsQ2FsbGJhY2tzKCl9c3RhdGVDbGFzc05hbWUodCl7c3dpdGNoKHQpe2Nhc2UgckN0LlBBTk5JTkc6cmV0dXJuInBhbm5pbmciO2Nhc2UgckN0LkRSQUdfWk9PTUlORzpyZXR1cm4iZHJhZy16b29taW5nIjtjYXNlIHJDdC5OT05FOmRlZmF1bHQ6cmV0dXJuIiJ9fW9uUGFuU3RhcnQodCl7dGhpcy5wYW5TdGFydENhbGxiYWNrLmFkZCh0KX1vblBhbkVuZCh0KXt0aGlzLnBhbkVuZENhbGxiYWNrLmFkZCh0KX1vblNjcm9sbFpvb20odCl7dGhpcy5wYW5ab29tLm9uWm9vbUVuZCh0KX1vbkRyYWdab29tU3RhcnQodCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uU3RhcnQodCl9b25EcmFnWm9vbUVuZCh0KXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25FbmQodCl9fSEoZnVuY3Rpb24odCl7dFt0LlRFWFQ9MF09IlRFWFQiLHRbdC5ET009MV09IkRPTSJ9KShvQ3R8fChvQ3Q9e30pKSwoZnVuY3Rpb24odCl7dC5MT0c9ImxvZyIsdC5MSU5FQVI9ImxpbmVhciJ9KShhQ3R8fChhQ3Q9e30pKTtjbGFzcyBjQ3R7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyx1KXt0aGlzLmRpcnR5RGF0YXNldHM9bmV3IFNldCx0aGlzLnNlcmllc05hbWVzPVtdLHRoaXMubmFtZTJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9aSx0aGlzLnRvb2x0aXA9cix0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX2lnbm9yZVlPdXRsaWVycz0hMSx0aGlzLmxhc3RQb2ludHNEYXRhc2V0PW5ldyByTy5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgck8uRGF0YXNldCx0aGlzLnlWYWx1ZUFjY2Vzc29yPWUsdGhpcy5zeW1ib2xGdW5jdGlvbj1jLHRoaXMuX2RlZmF1bHRYUmFuZ2U9cyx0aGlzLl9kZWZhdWx0WVJhbmdlPWwsdGhpcy50b29sdGlwQ29sdW1ucz1vLHRoaXMuYnVpbGRDaGFydCh0LGUsbixhLHUpfWJ1aWxkQ2hhcnQodCxlLG4saSxyKXt0aGlzLmRlc3Ryb3koKTtjb25zdCBvPXQoKTt0aGlzLnhBY2Nlc3Nvcj1vLmFjY2Vzc29yLHRoaXMueFNjYWxlPW8uc2NhbGUsdGhpcy54QXhpcz1vLmF4aXMsdGhpcy54QXhpcy5tYXJnaW4oMSkudGlja0xhYmVsUGFkZGluZygzKSxyJiZ0aGlzLnhBeGlzLmZvcm1hdHRlcihyKSx0aGlzLnlTY2FsZT1jQ3QuZ2V0WVNjYWxlRnJvbVR5cGUobiksdGhpcy55U2NhbGUuc2V0VmFsdWVQcm92aWRlckZvckRvbWFpbigoKCk9PnRoaXMuZ2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCkpKSx0aGlzLnlBeGlzPW5ldyByTy5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgYT13VHQoMyk7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIoYSksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCksdGhpcy5maWxsQXJlYT1pO2NvbnN0IHM9bmV3IGxDdCh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSwoKCk9PnRoaXMucmVzZXREb21haW4oKSkpO3RoaXMudG9vbHRpcEludGVyYWN0aW9uPXRoaXMuY3JlYXRlVG9vbHRpcEludGVyYWN0aW9uKHMpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudD1uZXcgck8uQ29tcG9uZW50O2NvbnN0IGw9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IHJPLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtsZXQgYz1udWxsO24hPT1hQ3QuTE9HJiYoYz1uZXcgck8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigiaG9yaXpvbnRhbCIpLGMuc2NhbGUodGhpcy55U2NhbGUpLnZhbHVlKDApKTtsZXQgdT1uZXcgck8uQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigidmVydGljYWwiKTt1LnNjYWxlKHRoaXMueFNjYWxlKS52YWx1ZSgwKSx0aGlzLmNlbnRlcj1uZXcgck8uQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsYyx1LGwsdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LHNdKSx0aGlzLmNlbnRlci5hZGRDbGFzcygibWFpbiIpLHRoaXMub3V0ZXI9bmV3IHJPLkNvbXBvbmVudHMuVGFibGUoW1t0aGlzLnlBeGlzLHRoaXMuY2VudGVyXSxbbnVsbCx0aGlzLnhBeGlzXV0pfWJ1aWxkUGxvdCh0LGUsbil7biYmKHRoaXMubWFyZ2luQXJlYVBsb3Q9bmV3IHJPLlBsb3RzLkFyZWEsdGhpcy5tYXJnaW5BcmVhUGxvdC54KHRoaXMueEFjY2Vzc29yLHQpLHRoaXMubWFyZ2luQXJlYVBsb3QueShuLmhpZ2hlckFjY2Vzc29yLGUpLHRoaXMubWFyZ2luQXJlYVBsb3QueTAobi5sb3dlckFjY2Vzc29yKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj10PT50LnNtb290aGVkO2xldCBpPW5ldyByTy5QbG90cy5MaW5lO2kueCh0aGlzLnhBY2Nlc3Nvcix0KSxpLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxpLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkubmFtZSkpKSx0aGlzLmxpbmVQbG90PWksdGhpcy5zZXR1cFRvb2x0aXBzKGkpO2xldCByPW5ldyByTy5QbG90cy5MaW5lO2lmKHIueCh0aGlzLnhBY2Nlc3Nvcix0KSxyLnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLGUpLHIuYXR0cigic3Ryb2tlIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5uYW1lKSkpLHRoaXMuc21vb3RoTGluZVBsb3Q9cix0aGlzLnN5bWJvbEZ1bmN0aW9uKXtjb25zdCBuPW5ldyByTy5QbG90cy5TY2F0dGVyO24ueCh0aGlzLnhBY2Nlc3Nvcix0KSxuLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxuLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksbi5hdHRyKCJvcGFjaXR5IiwxKSxuLnNpemUoOCksbi5zeW1ib2woKCh0LGUsbik9PnRoaXMuc3ltYm9sRnVuY3Rpb24obi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3Q9bn1sZXQgbz1uZXcgck8uUGxvdHMuU2NhdHRlcjtvLngodGhpcy54QWNjZXNzb3IsdCksby55KHRoaXMueVZhbHVlQWNjZXNzb3IsZSksby5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQubmFtZSkpKSxvLmF0dHIoIm9wYWNpdHkiLDEpLG8uc2l6ZSg4KSxvLmRhdGFzZXRzKFt0aGlzLmxhc3RQb2ludHNEYXRhc2V0XSksdGhpcy5zY2F0dGVyUGxvdD1vO2xldCBhPW5ldyByTy5QbG90cy5TY2F0dGVyO2EueCh0aGlzLnhBY2Nlc3Nvcix0KSxhLnkoKHQ9PnQuZGlzcGxheVkpLGUpLGEuYXR0cigiZmlsbCIsKHQ9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh0Lm5hbWUpKSksYS5hdHRyKCJvcGFjaXR5IiwxKSxhLnNpemUoMTIpLGEuZGF0YXNldHMoW3RoaXMubmFuRGF0YXNldF0pLGEuc3ltYm9sKHJPLlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZSksdGhpcy5uYW5EaXNwbGF5PWE7Y29uc3Qgcz1bYSxvLHIsaV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJnMucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmcy5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgck8uQ29tcG9uZW50cy5Hcm91cChzKX1pZ25vcmVZT3V0bGllcnModCl7dCE9PXRoaXMuX2lnbm9yZVlPdXRsaWVycyYmKHRoaXMuX2lnbm9yZVlPdXRsaWVycz10LHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy55U2NhbGUuaWdub3JlT3V0bGllcih0KSx0aGlzLnJlc2V0WURvbWFpbigpKX1nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKXtjb25zdCB0PXRoaXMuZ2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCk7cmV0dXJuIFNlLmV4cG9ydHMuZmxhdHRlbkRlZXAodGhpcy5kYXRhc2V0cy5tYXAoKGU9PnQubWFwKCh0PT5lLmRhdGEoKS5tYXAoKG49PnQobiwtMSxlKSkpKSkpKSkuZmlsdGVyKGlzRmluaXRlKX11cGRhdGVTcGVjaWFsRGF0YXNldHMoKXtjb25zdCB0PXRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpO2xldCBlPXRoaXMuZGF0YXNldHMubWFwKChlPT57bGV0IG49bnVsbCxpPWUuZGF0YSgpLmZpbHRlcigobj0+IWlzTmFOKHQobiwtMSxlKSkpKTtyZXR1cm4gaS5sZW5ndGg+MCYmKG49aVtpLmxlbmd0aC0xXSxuLm5hbWU9ZS5tZXRhZGF0YSgpLm5hbWUsbi5yZWxhdGl2ZT1UVHQobiwwLGUpKSxufSkpLmZpbHRlcigodD0+bnVsbCE9dCkpO3RoaXMubGFzdFBvaW50c0RhdGFzZXQuZGF0YShlKSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cy5tYXAodGhpcy5jcmVhdGVTYW1wbGVkRGF0YXNldEZvck1hcmtlcnMpKTtsZXQgbj1TZS5leHBvcnRzLmZsYXR0ZW4odGhpcy5kYXRhc2V0cy5tYXAoKGU9PntsZXQgbj1udWxsLGk9ZS5kYXRhKCkscj0wO2Zvcig7cjxpLmxlbmd0aCYmbnVsbD09bjspaXNOYU4odChpW3JdLC0xLGUpKXx8KG49dChpW3JdLC0xLGUpKSxyKys7bnVsbD09biYmKG49MCk7bGV0IG89W107Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKylpc05hTih0KGlbcl0sLTEsZSkpPyhpW3JdLm5hbWU9ZS5tZXRhZGF0YSgpLm5hbWUsaVtyXS5kaXNwbGF5WT1uLGlbcl0ucmVsYXRpdmU9VFR0KGlbcl0sMCxlKSxvLnB1c2goaVtyXSkpOm49dChpW3JdLC0xLGUpO3JldHVybiBvfSkpKTt0aGlzLm5hbkRhdGFzZXQuZGF0YShuKX1yZXNldERvbWFpbigpe3RoaXMucmVzZXRYRG9tYWluKCksdGhpcy5yZXNldFlEb21haW4oKX1yZXNldFhEb21haW4oKXtsZXQgdDtpZihudWxsIT10aGlzLl9kZWZhdWx0WFJhbmdlKXQ9dGhpcy5fZGVmYXVsdFhSYW5nZTtlbHNle2NvbnN0IGU9dGhpcy54U2NhbGU7ZS5fZG9tYWluTWluPW51bGwsZS5fZG9tYWluTWF4PW51bGwsdD1lLl9nZXRFeHRlbnQoKX10aGlzLnhTY2FsZS5kb21haW4odCl9cmVzZXRZRG9tYWluKCl7bnVsbCE9dGhpcy5fZGVmYXVsdFlSYW5nZT90aGlzLnlTY2FsZS5kb21haW4odGhpcy5fZGVmYXVsdFlSYW5nZSk6KHRoaXMueVNjYWxlLmF1dG9Eb21haW4oKSx0aGlzLnlTY2FsZS5kb21haW4odGhpcy55U2NhbGUuZG9tYWluKCkpKX1nZXRBY2Nlc3NvcnNGb3JDb21wdXRpbmdZUmFuZ2UoKXtjb25zdCB0PVt0aGlzLmdldFlBeGlzQWNjZXNzb3IoKV07cmV0dXJuIHRoaXMuZmlsbEFyZWEmJnQucHVzaCh0aGlzLmZpbGxBcmVhLmxvd2VyQWNjZXNzb3IsdGhpcy5maWxsQXJlYS5oaWdoZXJBY2Nlc3NvciksdH1nZXRZQXhpc0FjY2Vzc29yKCl7cmV0dXJuIHRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcn1jcmVhdGVUb29sdGlwSW50ZXJhY3Rpb24odCl7Y29uc3QgZT1uZXcgT1R0LG49KCk9PntlLmVuYWJsZWQoITEpLHRoaXMuaGlkZVRvb2x0aXBzKCl9LGk9KCk9PmUuZW5hYmxlZCghMCk7cmV0dXJuIHQub25QYW5TdGFydChuKSx0Lm9uRHJhZ1pvb21TdGFydChuKSx0Lm9uUGFuRW5kKGkpLHQub25EcmFnWm9vbUVuZChpKSx0Lm9uU2Nyb2xsWm9vbSgoKCk9PnRoaXMudXBkYXRlVG9vbHRpcENvbnRlbnQodGhpcy5fbGFzdE1vdXNlUG9zaXRpb24pKSksZS5vblBvaW50ZXJNb3ZlKCh0PT57dGhpcy5fbGFzdE1vdXNlUG9zaXRpb249dCx0aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHQpfSkpLGUub25Qb2ludGVyRXhpdCgoKCk9PnRoaXMuaGlkZVRvb2x0aXBzKCkpKSxlfXVwZGF0ZVRvb2x0aXBDb250ZW50KHQpe3RoaXMubGluZVBsb3QmJih3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lKSx0aGlzLl90b29sdGlwVXBkYXRlQW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntsZXQgZT17eDp0LngseTp0LnksZGF0dW06bnVsbCxkYXRhc2V0Om51bGx9LG49dGhpcy5ncmlkbGluZXMuY29udGVudCgpLm5vZGUoKS5nZXRCQm94KCksaT10aGlzLmxpbmVQbG90LmRhdGFzZXRzKCkubWFwKCh0PT50aGlzLmZpbmRDbG9zZXN0UG9pbnQoZSx0KSkpLmZpbHRlcihCb29sZWFuKSxyPXJPLlV0aWxzLkRPTS5pbnRlcnNlY3RzQkJveCxvPWkuZmlsdGVyKCh0PT5yKHQueCx0Lnksbil8fGlzTmFOKHRoaXMueVZhbHVlQWNjZXNzb3IodC5kYXR1bSwwLHQuZGF0YXNldCkpKSksYT1vLmZpbHRlcigodD0+IWlzTmFOKHRoaXMueVZhbHVlQWNjZXNzb3IodC5kYXR1bSwwLHQuZGF0YXNldCkpKSk7aWYoMCE9PWkubGVuZ3RoKXt0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJub25lIik7Y29uc3QgdD10aGlzLnRvb2x0aXBQb2ludHNDb21wb25lbnQuY29udGVudCgpLnNlbGVjdEFsbCgiLnBvaW50IikuZGF0YShhLCh0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSk7dC5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuY2xhc3NlZCgicG9pbnQiLCEwKSx0LmF0dHIoInIiLDQpLmF0dHIoImN4IiwodD0+dC54KSkuYXR0cigiY3kiLCh0PT50LnkpKS5zdHlsZSgic3Ryb2tlIiwibm9uZSIpLmF0dHIoImZpbGwiLCh0PT50aGlzLmNvbG9yU2NhbGUuc2NhbGUodC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpKSx0LmV4aXQoKS5yZW1vdmUoKSx0aGlzLmRyYXdUb29sdGlwcyhvLGUsdGhpcy50b29sdGlwQ29sdW1ucyl9ZWxzZSB0aGlzLmhpZGVUb29sdGlwcygpfSkpKX1oaWRlVG9vbHRpcHMoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lKSx0aGlzLnRvb2x0aXAuaGlkZSgpLHRoaXMuc2NhdHRlclBsb3QuYXR0cigiZGlzcGxheSIsImJsb2NrIiksdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLnJlbW92ZSgpfXNldHVwVG9vbHRpcHModCl7dC5vbkRldGFjaCgoKCk9Pnt0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5kZXRhY2hGcm9tKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITEpfSkpLHQub25BbmNob3IoKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uYXR0YWNoVG8odCksdGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZW5hYmxlZCghMCl9KSl9ZHJhd1Rvb2x0aXBzKHQsZSxuKXtpZighdC5sZW5ndGgpcmV0dXJuIHZvaWQgdGhpcy50b29sdGlwLmhpZGUoKTtjb25zdHtjb2xvclNjYWxlOml9PXRoaXM7bj1be3RpdGxlOiIiLHN0YXRpYzohMSxldmFsVHlwZTpvQ3QuRE9NLGV2YWx1YXRlKHQpe3JldHVybiBTdSh0aGlzKS5zZWxlY3QoInNwYW4iKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCgpPT5pLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSksIiJ9LGVudGVyKHQpe1N1KHRoaXMpLmFwcGVuZCgic3BhbiIpLmNsYXNzZWQoInN3YXRjaCIsITApLnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwoKCk9Pmkuc2NhbGUodC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpKX19LC4uLm5dO2NvbnN0IHI9dD0+TWF0aC5wb3codC54LWUueCwyKStNYXRoLnBvdyh0LnktZS55LDIpLG89U2UuZXhwb3J0cy5taW4odC5tYXAocikpLGE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3Nvcjp0aGlzLnlWYWx1ZUFjY2Vzc29yO3Q9ImFzY2VuZGluZyI9PT10aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kP1NlLmV4cG9ydHMuc29ydEJ5KHQsKHQ9PmEodC5kYXR1bSwtMSx0LmRhdGFzZXQpKSk6ImRlc2NlbmRpbmciPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD9TZS5leHBvcnRzLnNvcnRCeSh0LCh0PT5hKHQuZGF0dW0sLTEsdC5kYXRhc2V0KSkpLnJldmVyc2UoKToibmVhcmVzdCI9PT10aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kP1NlLmV4cG9ydHMuc29ydEJ5KHQscik6dC5zbGljZSgwKS5yZXZlcnNlKCk7Y29uc3Qgcz10aGlzLGw9U3UodGhpcy50b29sdGlwLmNvbnRlbnQoKSkuc2VsZWN0KCJ0YWJsZSIpLGM9bC5zZWxlY3QoInRoZWFkIikuc2VsZWN0QWxsKCJ0aCIpLmRhdGEobiwoKHQsZSxuKT0+dC50aXRsZSkpO2MuZW50ZXIoKS5hcHBlbmQoInRoIikudGV4dCgodD0+dC50aXRsZSkpLm5vZGVzKCksYy5leGl0KCkucmVtb3ZlKCk7Y29uc3QgdT1sLnNlbGVjdCgidGJvZHkiKS5zZWxlY3RBbGwoInRyIikuZGF0YSh0LCgodCxlLG4pPT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSk7dS5jbGFzc2VkKCJkaXN0YW50IiwodD0+e2xldCBuPXQuZGF0YXNldC5kYXRhKClbMF0saT1TZS5leHBvcnRzLmxhc3QodC5kYXRhc2V0LmRhdGEoKSkscj10aGlzLnhTY2FsZS5zY2FsZSh0aGlzLnhBY2Nlc3NvcihuLDAsdC5kYXRhc2V0KSksbz10aGlzLnhTY2FsZS5zY2FsZSh0aGlzLnhBY2Nlc3NvcihpLDAsdC5kYXRhc2V0KSksYT10aGlzLnNtb290aGluZ0VuYWJsZWQ/dC5kYXR1bS5zbW9vdGhlZDp0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpO3JldHVybiBlLng8cnx8ZS54Pm98fGlzTmFOKGEpfSkpLmNsYXNzZWQoImNsb3Nlc3QiLCh0PT5yKHQpPT09bykpLmVhY2goKGZ1bmN0aW9uKHQpe3MuZHJhd1Rvb2x0aXBSb3codGhpcyxuLHQpfSkpLm9yZGVyKCksdS5leGl0KCkucmVtb3ZlKCksdS5lbnRlcigpLmFwcGVuZCgidHIiKS5lYWNoKChmdW5jdGlvbih0KXtzLmRyYXdUb29sdGlwUm93KHRoaXMsbix0KX0pKS5ub2RlcygpLHRoaXMudG9vbHRpcC51cGRhdGVBbmRQb3NpdGlvbih0aGlzLnRhcmdldFNWRy5ub2RlKCkpfWRyYXdUb29sdGlwUm93KHQsZSxuKXtjb25zdCBpPXRoaXMscj1TdSh0KS5zZWxlY3RBbGwoInRkIikuZGF0YShlKTtyLmVhY2goKGZ1bmN0aW9uKHQpe3Quc3RhdGljfHxpLmRyYXdUb29sdGlwQ29sdW1uLmNhbGwoaSx0aGlzLHQsbil9KSksci5leGl0KCkucmVtb3ZlKCksci5lbnRlcigpLmFwcGVuZCgidGQiKS5lYWNoKChmdW5jdGlvbih0KXsiZW50ZXIiaW4gdCYmdC5lbnRlciYmdC5lbnRlci5jYWxsKHRoaXMsbiksaS5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKGksdGhpcyx0LG4pfSkpfWRyYXdUb29sdGlwQ29sdW1uKHQsZSxuKXtjb25zdHtzbW9vdGhpbmdFbmFibGVkOml9PXRoaXM7ImV2YWxUeXBlImluIGUmJmUuZXZhbFR5cGU9PW9DdC5ET00/ZS5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSk6U3UodCkudGV4dChlLmV2YWx1YXRlLmNhbGwodCxuLHtzbW9vdGhpbmdFbmFibGVkOml9KSl9ZmluZENsb3Nlc3RQb2ludCh0LGUpe2NvbnN0IG49ZS5kYXRhKCkubWFwKCgodCxuKT0+dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IodCxuLGUpKSkpO2xldCBpPVNlLmV4cG9ydHMuc29ydGVkSW5kZXgobix0LngpO2lmKDA9PW4ubGVuZ3RoKXJldHVybiBudWxsO2k9PT1uLmxlbmd0aD9pLT0xOjAhPT1pJiYoaT1NYXRoLmFicyhuW2ktMV0tdC54KTxNYXRoLmFicyhuW2ldLXQueCk/aS0xOmkpO2NvbnN0IHI9ZS5kYXRhKClbaV0sbz10aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5zbW9vdGhlZEFjY2Vzc29yKHIsaSxlKTp0aGlzLnlWYWx1ZUFjY2Vzc29yKHIsaSxlKTtyZXR1cm57eDpuW2ldLHk6dGhpcy55U2NhbGUuc2NhbGUobyksZGF0dW06cixkYXRhc2V0OmV9fXJlc21vb3RoRGF0YXNldCh0KXtsZXQgZT10LmRhdGEoKTtjb25zdCBuPXRoaXMuc21vb3RoaW5nV2VpZ2h0O2xldCBpPWUubGVuZ3RoPjA/MDpOYU4scj0wO2NvbnN0IG89ZS5tYXAoKChlLG4pPT50aGlzLnlWYWx1ZUFjY2Vzc29yKGUsbix0KSkpLGE9by5ldmVyeSgodD0+dD09b1swXSkpO2UuZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBzPW9bZV07aWYoYXx8IU51bWJlci5pc0Zpbml0ZShzKSl0LnNtb290aGVkPXM7ZWxzZXtpPWkqbisoMS1uKSpzLHIrKztsZXQgZT0xOzEhPT1uJiYoZT0xLU1hdGgucG93KG4scikpLHQuc21vb3RoZWQ9aS9lfX0pKX1nZXREYXRhc2V0KHQpe3JldHVybiB2b2lkIDA9PT10aGlzLm5hbWUyZGF0YXNldHNbdF0mJih0aGlzLm5hbWUyZGF0YXNldHNbdF09bmV3IHJPLkRhdGFzZXQoW10se25hbWU6dCxtZXRhOm51bGx9KSksdGhpcy5uYW1lMmRhdGFzZXRzW3RdfXN0YXRpYyBnZXRZU2NhbGVGcm9tVHlwZSh0KXtpZih0PT09YUN0LkxPRylyZXR1cm4gbmV3IG5DdDtpZih0PT09YUN0LkxJTkVBUilyZXR1cm4gbmV3IFpUdDt0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB5U2NhbGUgdHlwZSAiK3QpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5kaXNhYmxlQ2hhbmdlcygpLCh0PXQuc29ydCgpKS5yZXZlcnNlKCksdGhpcy5zZXJpZXNOYW1lcz10fWRpc2FibGVDaGFuZ2VzKCl7dGhpcy5kaXJ0eURhdGFzZXRzLnNpemV8fCh0aGlzLmxpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aExpbmVQbG90JiZ0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLm1hcmdpbkFyZWFQbG90JiZ0aGlzLm1hcmdpbkFyZWFQbG90LmRhdGFzZXRzKFtdKSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuZGF0YXNldHM9dGhpcy5zZXJpZXNOYW1lcy5tYXAoKHQ9PnRoaXMuZ2V0RGF0YXNldCh0KSkpLFsuLi50aGlzLmRpcnR5RGF0YXNldHNdLmZvckVhY2goKHQ9Pnt0aGlzLnNtb290aGluZ0VuYWJsZWQmJnRoaXMucmVzbW9vdGhEYXRhc2V0KHRoaXMuZ2V0RGF0YXNldCh0KSl9KSksdGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKSx0aGlzLmxpbmVQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpLHRoaXMuc21vb3RoaW5nRW5hYmxlZCYmdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSx0aGlzLm1hcmdpbkFyZWFQbG90JiZ0aGlzLm1hcmdpbkFyZWFQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpLHRoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpLHRoaXMuZGlydHlEYXRhc2V0cy5jbGVhcigpfWNyZWF0ZVNhbXBsZWREYXRhc2V0Rm9yTWFya2Vycyh0KXtjb25zdCBlPXQuZGF0YSgpO2lmKGUubGVuZ3RoPD0yMClyZXR1cm4gdDtjb25zdCBuPU1hdGguY2VpbChlLmxlbmd0aC8yMCksaT1uZXcgQXJyYXkoTWF0aC5mbG9vcihlLmxlbmd0aC9uKSk7Zm9yKGxldCB0PTAscj0wO3Q8aS5sZW5ndGg7dCsrLHIrPW4paVt0XT1lW3JdO3JldHVybiBuZXcgck8uRGF0YXNldChpLHQubWV0YWRhdGEoKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKSx0aGlzLmRpcnR5RGF0YXNldHMuYWRkKHQpfXNldFNlcmllc01ldGFkYXRhKHQsZSl7dGhpcy5kaXNhYmxlQ2hhbmdlcygpLHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5nZXREYXRhc2V0KHQpLm1ldGFkYXRhKCkpLHttZXRhOmV9KSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zbW9vdGhpbmdVcGRhdGUodCl7dGhpcy5zbW9vdGhpbmdXZWlnaHQ9dCx0aGlzLmRhdGFzZXRzLmZvckVhY2goKHQ9PnRoaXMucmVzbW9vdGhEYXRhc2V0KHQpKSksdGhpcy5zbW9vdGhpbmdFbmFibGVkfHwodGhpcy5saW5lUGxvdC5hZGRDbGFzcygiZ2hvc3QiKSx0aGlzLnNjYXR0ZXJQbG90LnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITAsdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpLHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCl9c21vb3RoaW5nRGlzYWJsZSgpe3RoaXMuc21vb3RoaW5nRW5hYmxlZCYmKHRoaXMubGluZVBsb3QucmVtb3ZlQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMueVZhbHVlQWNjZXNzb3IsdGhpcy55U2NhbGUpLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHMoW10pLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpKSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QueSh0aGlzLmdldFlBeGlzQWNjZXNzb3IoKSx0aGlzLnlTY2FsZSl9c2V0Q29sb3JTY2FsZSh0KXt0aGlzLmNvbG9yU2NhbGU9dH1zZXRUb29sdGlwQ29sdW1ucyh0KXt0aGlzLnRvb2x0aXBDb2x1bW5zPXR9c2V0VG9vbHRpcFNvcnRpbmdNZXRob2QodCl7dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD10fXJlbmRlclRvKHQpe3RoaXMudGFyZ2V0U1ZHPXQsdGhpcy5vdXRlci5yZW5kZXJUbyh0KSxudWxsIT10aGlzLl9kZWZhdWx0WFJhbmdlJiZ0aGlzLnJlc2V0WERvbWFpbigpLG51bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2UmJnRoaXMucmVzZXRZRG9tYWluKCksdGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl9cmVkcmF3KCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZiksdGhpcy5fcmVkcmF3UmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpLHRoaXMub3V0ZXIucmVkcmF3KCl9KSl9bWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpfSkpfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0KCl7aWYodGhpcy5fbGFzdERyYXdCQm94KXtjb25zdHt3aWR0aDp0fT10aGlzLl9sYXN0RHJhd0JCb3gse3dpZHRoOmV9PXRoaXMudGFyZ2V0U1ZHLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTswPT10JiZ0PGUmJnRoaXMub3V0ZXIuaW52YWxpZGF0ZUNhY2hlKCl9dGhpcy5fbGFzdERyYXdCQm94PXRoaXMudGFyZ2V0U1ZHLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1kZXN0cm95KCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZiksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWYpLHRoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpfW9uQW5jaG9yKHQpe3RoaXMub3V0ZXImJnRoaXMub3V0ZXIub25BbmNob3IodCl9aXNEYXRhRml0VG9Eb21haW4oKXtyZXR1cm4gdCh0aGlzLnhBeGlzLmdldFNjYWxlKCkpJiZ0KHRoaXMueUF4aXMuZ2V0U2NhbGUoKSk7ZnVuY3Rpb24gdCh0KXtjb25zdCBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPXQuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQoKTtyZXR1cm4gblswXT09PWVbMF0mJm5bMV09PT1lWzFdfX19IShmdW5jdGlvbih0KXt0LkdST1VQPSJHIix0LkRJVj0iRElWIix0LlNWRz0iU1ZHIix0LlRFWFQ9IlRFWFQifSkoc0N0fHwoc0N0PXt9KSk7Y2xhc3MgdUN0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy51bmlxdWVJZD0wLHRoaXMucm9vdD10fWV4cG9ydEFzU3RyaW5nKCl7Y29uc3QgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtjb25zdCBlPXRoaXMuY3JlYXRlUm9vdFN2ZygpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUub3V0ZXJIVE1MfWNyZWF0ZVVuaXF1ZUlkKHQpe3JldHVybmAke3R9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksZT10aGlzLmdldFNpemUoKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUygic3ZnIiwidmlld0JveCIsYDAgMCAke2Uud2lkdGh9ICR7ZS5oZWlnaHR9YCksdC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSx0fWNvbnZlcnQodCl7bGV0IGU9bnVsbDtjb25zdCBuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtpZih0Lm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERXx8biE9c0N0LkRJViYmbiE9c0N0LlNWRyllPXQuY2xvbmVOb2RlKCk7ZWxzZXtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc0N0LkdST1VQKTtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cGFyc2VJbnQobi5sZWZ0LDEwKSxyPXBhcnNlSW50KG4udG9wLDEwKTtpZihpfHxyKXtjb25zdCB0PXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7aX0sICR7cn0pYCksZS5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHt0fSlgKTtjb25zdCBvPXBhcnNlSW50KG4ud2lkdGgsMTApLGE9cGFyc2VJbnQobi5oZWlnaHQsMTApLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKG8pKSxzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpO2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJzdmciLCJjbGlwUGF0aCIpO2wuaWQ9dCxsLmFwcGVuZENoaWxkKHMpLGUuYXBwZW5kQ2hpbGQobCl9fXJldHVybiBBcnJheS5mcm9tKHQuY2hpbGROb2RlcykubWFwKCh0PT50aGlzLmNvbnZlcnQodCkpKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaCgodD0+ZS5hcHBlbmRDaGlsZCh0KSkpLGUubm9kZU5hbWUudG9VcHBlckNhc2UoKT09c0N0LkdST1VQJiYhZS5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQsZSkpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxlKXtpZihlLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gZTtjb25zdCBuPWUsaT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gaT09c0N0LlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpyLmZvbnRGYW1pbHksZm9udFNpemU6ci5mb250U2l6ZSxmb250V2VpZ2h0OnIuZm9udFdlaWdodH0pLGkhPXNDdC5HUk9VUCYmKG4uc2V0QXR0cmlidXRlKCJmaWxsIixyLmZpbGwpLG4uc2V0QXR0cmlidXRlKCJzdHJva2UiLHIuc3Ryb2tlKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyLnN0cm9rZVdpZHRoKSksIjEiIT1yLm9wYWNpdHkmJm4uc2V0QXR0cmlidXRlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGV9c2hvdWxkT21pdE5vZGUodCl7cmV0dXJuITF9fXtzaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY2F0dGVyLXBsb3QiKX19ZWwoe21vZHVsZU5hbWU6InZ6LXBhbi16b29tLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIC5oZWxwIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAuaGVscCA+IHNwYW4ge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y29uc3QgaEN0PXdUdCg0KSxkQ3Q9dD0+aXNOYU4odCk/Ik5hTiI6aEN0KHQpLHBDdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZSh0LGUpe2NvbnN0e3Ntb290aGluZ0VuYWJsZWQ6bn09ZTtyZXR1cm4gZEN0KG4/dC5kYXR1bS5zbW9vdGhlZDp0LmRhdHVtLnNjYWxhcil9fSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5kQ3QodC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9PlNUdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PkVUdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkNUdChUVHQodC5kYXR1bSwwLHQuZGF0YXNldCkpfV07bGV0IGZDdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IHJPLlNjYWxlcy5Db2xvcikucmFuZ2UoZ0Euc2xpY2UoMCkpLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnNtb290aGluZ1dlaWdodD0uNix0aGlzLnhUeXBlPW51bGwsdGhpcy54Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPW51bGwsdGhpcy55VmFsdWVBY2Nlc3Nvcj10PT50LnNjYWxhcix0aGlzLnRvb2x0aXBDb2x1bW5zPXBDdCx0aGlzLnlTY2FsZVR5cGU9YUN0LkxJTkVBUix0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPSJkZWZhdWx0Iix0aGlzLnRvb2x0aXBQb3NpdGlvbj16VHQuQk9UVE9NLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX1hdHRhY2hlZCgpe2NvbnN0IHQ9e2NhcHR1cmU6ITAscGFzc2l2ZTohMH07dGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZURvd24uYmluZCh0aGlzKSx0KSx0aGlzLl9saXN0ZW4odGhpcywibW91c2V1cCIsdGhpcy5fb25Nb3VzZVVwLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5ZG93biIsdGhpcy5fb25LZXlEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHdpbmRvdywia2V5dXAiLHRoaXMuX29uS2V5VXAuYmluZCh0aGlzKSx0KX1kZXRhY2hlZCgpe3RoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LmRlc3Ryb3koKSx0aGlzLl9jaGFydD12b2lkIDApLHRoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCgoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4saSl9KSksdGhpcy5fbGlzdGVuZXJzLmNsZWFyKCkpfV9saXN0ZW4odCxlLG4saT17fSl7dGhpcy5fbGlzdGVuZXJzfHwodGhpcy5fbGlzdGVuZXJzPW5ldyBTZXQpLHRoaXMuX2xpc3RlbmVycy5hZGQoe25vZGU6dCxldmVudE5hbWU6ZSxmdW5jOm4sb3B0aW9uOml9KSx0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLGkpfV9vbktleURvd24odCl7dGhpcy50b2dnbGVDbGFzcygicGFua2V5IixsQ3QuaXNQYW5LZXkodCkpfV9vbktleVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsbEN0LmlzUGFuS2V5KHQpKX1fb25Nb3VzZURvd24odCl7dGhpcy50b2dnbGVDbGFzcygibW91c2Vkb3duIiwhMCl9X29uTW91c2VVcCh0KXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCExKX1pc0RhdGFGaXRUb0RvbWFpbigpe3JldHVybiF0aGlzLl9jaGFydHx8dGhpcy5fY2hhcnQuaXNEYXRhRml0VG9Eb21haW4oKX1zZXRWaXNpYmxlU2VyaWVzKHQpe1NlLmV4cG9ydHMuaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsdCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1lLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc01ldGFkYXRhKHQsZSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5jb21taXRDaGFuZ2VzKCl9cmVzZXREb21haW4oKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVkcmF3KCl9X21ha2VDaGFydCgpe251bGwhPT10aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsO2xldCB0PXRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDtpZih0aGlzLnhUeXBlfHx0P3RoaXMueFR5cGUmJih0PSgpPT5BVHQodGhpcy54VHlwZSkpOnQ9TVR0LHQmJnRoaXMueVZhbHVlQWNjZXNzb3ImJnRoaXMudG9vbHRpcENvbHVtbnMpe3ZhciBlPW5ldyBjQ3QodCx0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlVHlwZSx0aGlzLmNvbG9yU2NhbGUsdGhpcy4kLnRvb2x0aXAsdGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmZpbGxBcmVhLHRoaXMuZGVmYXVsdFhSYW5nZSx0aGlzLmRlZmF1bHRZUmFuZ2UsdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxuPVN1KHRoaXMuJC5jaGFydGRpdik7ZS5yZW5kZXJUbyhuKSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpLHRoaXMuX2NoYXJ0PWUsdGhpcy5fY2hhcnQub25BbmNob3IoKCgpPT50aGlzLmZpcmUoImNoYXJ0LWF0dGFjaGVkIikpKX19KSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfSkpLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5maWx0ZXIoKHQ9PnRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pKS5mb3JFYWNoKCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEodCx0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdKX0pKSx0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksdGhpcy5fY2hhcnQuY29tbWl0Q2hhbmdlcygpKX1fc21vb3RoaW5nQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiYodGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuX2NoYXJ0LnNtb290aGluZ1VwZGF0ZSh0aGlzLnNtb290aGluZ1dlaWdodCk6dGhpcy5fY2hhcnQuc21vb3RoaW5nRGlzYWJsZSgpKX1fb3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0Lmlnbm9yZVlPdXRsaWVycyh0aGlzLmlnbm9yZVlPdXRsaWVycyl9X2NvbG9yU2NhbGVDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRDb2xvclNjYWxlKHRoaXMuY29sb3JTY2FsZSksdGhpcy5fY2hhcnQucmVkcmF3KCkpfV90b29sdGlwQ29sdW1uc0NoYW5nZWQoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0VG9vbHRpcENvbHVtbnModGhpcy50b29sdGlwQ29sdW1ucyl9X3Rvb2x0aXBTb3J0aW5nTWV0aG9kQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRUb29sdGlwU29ydGluZ01ldGhvZCh0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kKX1nZXRFeHBvcnRlcigpe3JldHVybiBuZXcgdUN0KHRoaXMuJC5jaGFydGRpdil9fTtmQ3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8dnotY2hhcnQtdG9vbHRpcAogICAgICBpZD0idG9vbHRpcCIKICAgICAgcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgIGNvbnRlbnQtY29tcG9uZW50LW5hbWU9InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCIKICAgID48L3Z6LWNoYXJ0LXRvb2x0aXA+CiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZ6LXBhbi16b29tLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiAubWFpbiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICA6aG9zdCgucGFua2V5KSAjY2hhcnRkaXYgOm5vdCguZHJhZy16b29taW5nKSAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICB9CgogICAgICA6aG9zdCgubW91c2Vkb3duKSAjY2hhcnRkaXYgLnBhbm5pbmcgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICB9CgogICAgICAjY2hhcnRkaXYgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIC5tYWluIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHJPLlNjYWxlcy5Db2xvcildLGZDdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQ3QucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmQ3QucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGZDdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQ3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZDdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxmQ3QucHJvdG90eXBlLCJ4QXhpc0Zvcm1hdHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGZDdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxmQ3QucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQ3QucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkN0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZkN0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmQ3QucHJvdG90eXBlLCJ5U2NhbGVUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZkN0LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZDdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGZDdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQ3QucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGZDdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZkN0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmQ3QucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmQ3QucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl9yZWxvYWRGcm9tQ2FjaGUiLG51bGwpLHQoW2EoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdDaGFuZ2VkIixudWxsKSx0KFthKCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl9vdXRsaWVyc0NoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yU2NhbGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlQ2hhbmdlZCIsbnVsbCksdChbYSgidG9vbHRpcENvbHVtbnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZDdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1uc0NoYW5nZWQiLG51bGwpLHQoW2EoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxmQ3QucHJvdG90eXBlLCJfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkIixudWxsKSxmQ3Q9dChbaSgidnotbGluZS1jaGFydDIiKV0sZkN0KTtsZXQgbUN0PWNsYXNzIGV4dGVuZHMgeWV7fTttQ3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLG1DdD10KFtpKCJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiKV0sbUN0KTtjb25zdCBnQ3Q9W10sX0N0PVNlLmV4cG9ydHMudGhyb3R0bGUoKGZ1bmN0aW9uIHQoKXtpZigwPT1nQ3QubGVuZ3RoKXJldHVybjtjb25zdCBlPWdDdC5zaGlmdCgpO2UmJmUuYWN0aXZlJiYoZS5yZWRyYXcoKSxlLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMSksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKDApLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCl9KSwxMDApO2xldCB5Q3Q9Y2xhc3MgZXh0ZW5kcyhMVHQoZXIoeWUpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlZHJhd1JhZj1udWxsLHRoaXMuYWN0aXZlPSExLHRoaXMubG9nU2NhbGVBY3RpdmU9ITEsdGhpcy5jb2xvclNjYWxlPXtzY2FsZTpHUn0sdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwLHRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSExfW9uTG9hZEZpbmlzaCgpe3RoaXMuY29tbWl0Q2hhbmdlcygpLHRoaXMuZGF0YVRvTG9hZC5sZW5ndGg+MCYmdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkJiYodGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSExLHRoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpKSx0aGlzLnJlZHJhdygpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpfWV4cG9ydEFzU3ZnU3RyaW5nKCl7cmV0dXJuIHRoaXMuZ2V0Q2hhcnQoKS5nZXRFeHBvcnRlcigpLmV4cG9ydEFzU3RyaW5nKCl9Z2V0Q2hhcnQoKXtyZXR1cm4gdGhpcy4kLmNoYXJ0fXJlc2V0RG9tYWluKCl7dGhpcy5nZXRDaGFydCgpLnJlc2V0RG9tYWluKCl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRTZXJpZXNEYXRhKHQsZSl9c2V0U2VyaWVzTWV0YWRhdGEodCxlKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzTWV0YWRhdGEodCxlKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5nZXRDaGFydCgpLmNvbW1pdENoYW5nZXMoKX1yZWRyYXcoKXtudWxsIT09dGhpcy5fcmVkcmF3UmFmJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuYWN0aXZlP3RoaXMuZ2V0Q2hhcnQoKS5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pKX1fbG9hZEtleUNoYW5nZWQoKXt0aGlzLnJlc2V0KCksdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwfV9kYXRhU2VyaWVzQ2hhbmdlZCgpe3RoaXMuZ2V0Q2hhcnQoKS5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuZGF0YVNlcmllcyl9X2xvZ1NjYWxlQ2hhbmdlZCh0KXt0aGlzLmdldENoYXJ0KCkueVNjYWxlVHlwZT10P2FDdC5MT0c6YUN0LkxJTkVBUix0aGlzLnJlZHJhdygpfV9maXhCYWRTdGF0ZVdoZW5BY3RpdmUoKXt0aGlzLmFjdGl2ZSYmdGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUmJihnQ3QucHVzaCh0aGlzKSxfQ3QoKSl9X29uQ2hhcnRBdHRhY2hlZCgpe3RoaXMuYWN0aXZlfHwodGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITApfX07eUN0LnRlbXBsYXRlPV9lYAogICAgPGRpdiBpZD0iY2hhcnQtYW5kLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgPHZ6LWxpbmUtY2hhcnQyCiAgICAgICAgaWQ9ImNoYXJ0IgogICAgICAgIGRhdGEtbG9hZGluZyQ9IltbZGF0YUxvYWRpbmddXSIKICAgICAgICBkYXRhLWxvYWRlZC1vbmNlJD0iW1tkYXRhTG9hZGVkQXRMZWFzdE9uY2VdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tjb2xvclNjYWxlXV0iCiAgICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgICBkZWZhdWx0LXktcmFuZ2U9IltbZGVmYXVsdFlSYW5nZV1dIgogICAgICAgIGZpbGwtYXJlYT0iW1tmaWxsQXJlYV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIG9uLWNoYXJ0LWF0dGFjaGVkPSJfb25DaGFydEF0dGFjaGVkIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tzeW1ib2xGdW5jdGlvbl1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1t0b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPSIiPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUN0LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5Q3QucHJvdG90eXBlLCJkYXRhU2VyaWVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0seUN0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9nU2NhbGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUN0LnByb3RvdHlwZSwibG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seUN0LnByb3RvdHlwZSwieENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5Q3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlDdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlDdC5wcm90b3R5cGUsImZpbGxBcmVhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seUN0LnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5Q3QucHJvdG90eXBlLCJzbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHlDdC5wcm90b3R5cGUsInRvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlDdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlDdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlDdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUN0LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0seUN0LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHlDdC5wcm90b3R5cGUsInN5bWJvbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlDdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx5Q3QucHJvdG90eXBlLCJfcmVzZXREb21haW5Pbk5leHRMb2FkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHlDdC5wcm90b3R5cGUsIl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSIsdm9pZCAwKSx0KFthKCJsb2FkS2V5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5Q3QucHJvdG90eXBlLCJfbG9hZEtleUNoYW5nZWQiLG51bGwpLHQoW2EoImRhdGFTZXJpZXMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0seUN0LnByb3RvdHlwZSwiX2RhdGFTZXJpZXNDaGFuZ2VkIixudWxsKSx5Q3Q9dChbaSgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpXSx5Q3QpLGVsKHttb2R1bGVOYW1lOiJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgOmhvc3Qge1xuICAgICAgbWFyZ2luOiA1cHggMTBweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHdpZHRoOiAzMzBweDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgICB9XG5cbiAgICA6aG9zdChbX2V4cGFuZGVkXSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDQwMHB4O1xuICAgIH1cblxuICAgIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuXG4gICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogMjAwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAjYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbiB7XG4gICAgICBjb2xvcjogIzIxOTZmMztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4gICAgICB3aWR0aDogMzJweDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIHBhZGRpbmc6IDRweDtcbiAgICB9XG5cbiAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0ge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3Mge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgYSB7XG4gICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICBtYXJnaW46IDJweDtcbiAgICB9XG5cbiAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDoge1xuICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y2xhc3MgdkN0e2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5ydW49dCx0aGlzLnRhZz1lLHRoaXMubmFtZT1uLHRoaXMuc2NhbGFyRGF0YT1pLHRoaXMuc3ltYm9sPXJ9Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9c2V0RGF0YSh0KXt0aGlzLnNjYWxhckRhdGE9dH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuc2NhbGFyRGF0YX1nZXRSdW4oKXtyZXR1cm4gdGhpcy5ydW59Z2V0VGFnKCl7cmV0dXJuIHRoaXMudGFnfWdldFN5bWJvbCgpe3JldHVybiB0aGlzLnN5bWJvbH19ZnVuY3Rpb24gYkN0KHQsZSl7cmV0dXJuYCR7ZX0gKCR7dH0pYH1jbGFzcyB4Q3R7Y29uc3RydWN0b3IodCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9dH1zY2FsZSh0KXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUodCkpfXBhcnNlUnVuTmFtZSh0KXtjb25zdCBlPXQubWF0Y2goL1woKC4qKVwpJC8pO3JldHVybiBlP2VbMV06IiJ9fWxldCB3Q3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyB4Q3Qoe3NjYWxlOkdSfSksdGhpcy5fbmFtZVRvRGF0YVNlcmllcz17fSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1fcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPWlPKGkse3RhZzp0aGlzLl90YWdGaWx0ZXIscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMSx0aGlzLl9maWxsQXJlYT17bG93ZXJBY2Nlc3Nvcjp0PT50Lmxvd2VyLGhpZ2hlckFjY2Vzc29yOnQ9PnQudXBwZXJ9LHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9d1R0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0uc2NhbGFyKX0se3RpdGxlOiJMb3dlciBNYXJnaW4iLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5sb3dlcil9LHt0aXRsZToiVXBwZXIgTWFyZ2luIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udXBwZXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9PlNUdCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PkVUdCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PkNUdChUVHQodC5kYXR1bSwwLHQuZGF0YXNldCkpfV19KSgpLHRoaXMuX21pc3NpbmdUYWdzPVtdLHRoaXMuX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQ9ITF9cmVsb2FkKCl7dGhpcy4kLmxvYWRlci5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLiQubG9hZGVyLnJlZHJhdygpfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX1fcmVzZXREb21haW4oKXtjb25zdCB0PXRoaXMuJC5sb2FkZXI7dCYmdC5yZXNldERvbWFpbigpfV9jc3ZVcmwodCxlKXtyZXR1cm4gZT9pTyh0aGlzLl9kb3dubG9hZERhdGFVcmwodCxlKSx7Zm9ybWF0OiJjc3YifSk6IiJ9X2pzb25VcmwodCxlKXtyZXR1cm4gZT9pTyh0aGlzLl9kb3dubG9hZERhdGFVcmwodCxlKSx7Zm9ybWF0OiJqc29uIn0pOiIifV9kb3dubG9hZERhdGFVcmwodCxlKXtjb25zdCBuPXRbZV0saT17dGFnOm4uZ2V0VGFnKCkscnVuOm4uZ2V0UnVuKCl9O3JldHVybiBpTyhfcigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9kb3dubG9hZF9kYXRhIiksaSl9X2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24odCl7cmV0dXJuKGUsbixpKT0+e2lmKCFpLnJlZ2V4X3ZhbGlkKXJldHVybiB2b2lkIHRoaXMuc2V0KCJfdGFnRmlsdGVySW52YWxpZCIsITApO2NvbnN0IHI9U2UuZXhwb3J0cy5jbG9uZSh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKSxvPVtdO1NlLmV4cG9ydHMuZm9yRWFjaCh0LCh0PT57bGV0IGU9ITE7Y29uc3QgYT1pLnRhZ190b19ldmVudHNbdC52YWx1ZV0scz1pLnRhZ190b19ldmVudHNbdC5sb3dlcl0sbD1pLnRhZ190b19ldmVudHNbdC51cHBlcl07aWYoU2UuZXhwb3J0cy5pc1VuZGVmaW5lZChhKSYmKG8ucHVzaCh0LnZhbHVlKSxlPSEwKSxTZS5leHBvcnRzLmlzVW5kZWZpbmVkKHMpJiYoby5wdXNoKHQubG93ZXIpLGU9ITApLFNlLmV4cG9ydHMuaXNVbmRlZmluZWQobCkmJihvLnB1c2godC51cHBlciksZT0hMCksZSlyZXR1cm47Y29uc3QgYz10PT50WzFdLHU9dGhpcy5fZmluZFN0ZXBNaXNtYXRjaCh0LGEubWFwKGMpLHMubWFwKGMpLGwubWFwKGMpKTtpZih1KXJldHVybiB2b2lkIHRoaXMuc2V0KCJfc3RlcHNNaXNtYXRjaCIsdSk7Y29uc3QgaD10PT50WzJdLGQ9YS5tYXAoKCh0LGUpPT4oe3dhbGxfdGltZTpuZXcgRGF0ZSgxZTMqdFswXSksc3RlcDpjKHQpLHNjYWxhcjpoKHQpLGxvd2VyOmgoc1tlXSksdXBwZXI6aChsW2VdKX0pKSkscD1iQ3Qobix0LnZhbHVlKSxmPXJbcF07aWYoZilmLnNldERhdGEoZCk7ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZU5ld0RhdGFTZXJpZXMobix0LnZhbHVlLHAsZCk7cltwXT1lfX0pKSx0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHIpO2NvbnN0IGE9U2UuZXhwb3J0cy5maW5kSW5kZXgodGhpcy5fbWlzc2luZ1RhZ3MsKHQ9PnQucnVuPT09bikpO2lmKG8ubGVuZ3RoJiYzIT1vLmxlbmd0aCl7Y29uc3QgdD17cnVuOm4sdGFnczpvfTthPj0wP3RoaXMuc3BsaWNlKCJfbWlzc2luZ1RhZ3MiLGEsMSx0KTp0aGlzLnB1c2goIl9taXNzaW5nVGFncyIsdCl9ZWxzZSBhPj0wJiZ0aGlzLnNwbGljZSgiX21pc3NpbmdUYWdzIixhLDEpfX1fZmluZFN0ZXBNaXNtYXRjaCh0LGUsbixpKXtyZXR1cm4gU2UuZXhwb3J0cy5pc0VxdWFsKG4sZSkmJlNlLmV4cG9ydHMuaXNFcXVhbChpLGUpP251bGw6e3Nlcmllc09iamVjdDp0LHZhbHVlU3RlcHM6ZSxsb3dlclN0ZXBzOm4sdXBwZXJTdGVwczppfX1fY3JlYXRlTmV3RGF0YVNlcmllcyh0LGUsbixpKXt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XXw9MDtjb25zdCByPW5ldyB2Q3QodCxlLG4saSxiVHRbdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF1dKTtyZXR1cm4gdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdKzEpJWJUdC5sZW5ndGgscn1fdXBkYXRlQ2hhcnQoKXtTZS5leHBvcnRzLmZvck93bih0aGlzLl9uYW1lVG9EYXRhU2VyaWVzLCh0PT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKHQuZ2V0TmFtZSgpLHQuZ2V0RGF0YSgpKX0pKSx0aGlzLiQubG9hZGVyLmNvbW1pdENoYW5nZXMoKX1nZXQgX3Nlcmllc05hbWVzKCl7Y29uc3QgdD1uZXcgU2V0KHRoaXMucnVucyk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLmZpbHRlcigoKFtlLG5dKT0+dC5oYXMobi5ydW4pKSkubWFwKCgoW3RdKT0+dCkpfV9kZXRlcm1pbmVDb2xvcih0LGUpe3JldHVybiB0LnNjYWxlKGUpfV9yZWZyZXNoRGF0YVNlcmllcygpe3RoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIse30pfV9jcmVhdGVTeW1ib2xGdW5jdGlvbigpe3JldHVybiB0PT50aGlzLl9uYW1lVG9EYXRhU2VyaWVzW3RdLmdldFN5bWJvbCgpLm1ldGhvZCgpfV9kZXRlcm1pbmVTeW1ib2wodCxlKXtyZXR1cm4gdFtlXS5nZXRTeW1ib2woKS5jaGFyYWN0ZXJ9Z2V0IF90YWdGaWx0ZXIoKXtyZXR1cm4gU2UuZXhwb3J0cy5mbGF0dGVuKHRoaXMubWFyZ2luQ2hhcnRTZXJpZXMubWFwKCh0PT5bdC52YWx1ZSx0Lmxvd2VyLHQudXBwZXJdKSkpLm1hcCgodD0+IigiK3RoaXMuX2VzY2FwZVJlZ2V4Q2hhcmFjdGVycyh0KSsiKSIpKS5qb2luKCJ8Iil9X2VzY2FwZVJlZ2V4Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfV9nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV90b2dnbGVNYXRjaGVzT3Blbigpe3RoaXMuc2V0KCJfbWF0Y2hlc0xpc3RPcGVuZWQiLCF0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZCl9Z2V0IF90aXRsZURpc3BsYXlTdHJpbmcoKXtyZXR1cm4gdGhpcy50aXRsZXx8InVudGl0bGVkIn1fc2VwYXJhdGVXaXRoQ29tbWFzKHQpe3JldHVybiB0LmpvaW4oIiwgIil9X3RvZ2dsZU1pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuKCl7dGhpcy5zZXQoIl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkIiwhdGhpcy5fbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCl9X21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkKCl7Y29uc3QgdD10aGlzLiQkKCIjbWF0Y2gtbGlzdC1yZXBlYXQiKTt0JiZ0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLm1hdGNoLWxpc3QtZW50cnkiKS5mb3JFYWNoKChlPT57Y29uc3Qgbj10Lml0ZW1Gb3JFbGVtZW50KGUpO2Uuc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxuKX0pKX19O3dDdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICBmaWxsLWFyZWE9IltbX2ZpbGxBcmVhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1rZXk9IltbX3RhZ0ZpbHRlcl1dIgogICAgICAgIGRhdGEtdG8tbG9hZD0iW1tydW5zXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICAgIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKG1hcmdpbkNoYXJ0U2VyaWVzKV1dIgogICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKV1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1tfdG9vbHRpcENvbHVtbnNdXSIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICBsYWJlbD0ic2VyaWVzIHRvIGRvd25sb2FkIgogICAgICAgICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWR9fSIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICAgIGFzPSJkYXRhU2VyaWVzTmFtZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgPltbZGF0YVNlcmllc05hbWVdXTwvcGFwZXItaXRlbQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDxhCiAgICAgICAgICAgIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5jc3YiCiAgICAgICAgICAgIGhyZWY9IltbX2NzdlVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkNTVjwvYQogICAgICAgICAgPgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmpzb24iCiAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iCiAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KCiAgICA8IS0tIGhlcmUgLS0+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX21pc3NpbmdUYWdzLmxlbmd0aF1dIj4KICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2libGUtbGlzdC10aXRsZSI+CiAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24oX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQpXV0iCiAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuIgogICAgICAgICAgY2xhc3M9InRvZ2dsZS1jb2xsYXBzaWJsZS1idXR0b24iCiAgICAgICAgPgogICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbGxhcHNpYmxlLXRpdGxlLXRleHQiPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+IE1pc3NpbmcgVGFncwogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICAgIDxpcm9uLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX21pc3NpbmdUYWdzXV0iIGFzPSJtaXNzaW5nRW50cnkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaXNzaW5nLXRhZ3MtZm9yLXJ1bi1jb250YWluZXIiPgogICAgICAgICAgICAgIFJ1biAiW1ttaXNzaW5nRW50cnkucnVuXV0iIGxhY2tzIGRhdGEgZm9yIHRhZ3MKICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICAgIGl0ZW1zPSJbW21pc3NpbmdFbnRyeS50YWdzXV0iCiAgICAgICAgICAgICAgICAgIGFzPSJ0YWciCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxsaT5bW3RhZ11dPC9saT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfdGFnRmlsdGVySW52YWxpZF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoaXMgcmVndWxhciBleHByZXNpb24gaXMgaW52YWxpZDo8YnIgLz4KICAgICAgICA8c3BhbiBjbGFzcz0iaW52YWxpZC1yZWdleCI+W1tfdGFnRmlsdGVyXV08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0ZXBzTWlzbWF0Y2hdXSI+CiAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgIDxpcm9uLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4KICAgICAgICBUaGUgc3RlcHMgZm9yIHZhbHVlLCBsb3dlciwgYW5kIHVwcGVyIHRhZ3MgZG8gbm90IG1hdGNoOgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC52YWx1ZV1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLnZhbHVlU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QubG93ZXJdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC5sb3dlclN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0LnVwcGVyXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gudXBwZXJTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPGRpdiBpZD0ibWF0Y2hlcy1jb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24oX21hdGNoZXNMaXN0T3BlbmVkKV1dIgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1hdGNoZXNPcGVuIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLW1hdGNoZXMtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICBNYXRjaGVzIChbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSkKICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9IltbX21hdGNoZXNMaXN0T3BlbmVkXV0iPgogICAgICAgICAgPGRpdiBpZD0ibWF0Y2hlcy1saXN0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgYXM9InNlcmllc05hbWUiCiAgICAgICAgICAgICAgaWQ9Im1hdGNoLWxpc3QtcmVwZWF0IgogICAgICAgICAgICAgIG9uLWRvbS1jaGFuZ2U9Il9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdGNoLWxpc3QtZW50cnkiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoLWVudHJ5LXN5bWJvbCI+CiAgICAgICAgICAgICAgICAgIFtbX2RldGVybWluZVN5bWJvbChfbmFtZVRvRGF0YVNlcmllcywgc2VyaWVzTmFtZSldXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgW1tzZXJpZXNOYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5lcnJvci1jb250ZW50IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQoKICAgICAgLmVycm9yLWljb24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gNXB4IGF1dG87CiAgICAgIH0KCiAgICAgIC5pbnZhbGlkLXJlZ2V4IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmVycm9yLWNvbnRlbnQgdWwgewogICAgICAgIG1hcmdpbjogMXB4IDAgMCAwOwogICAgICAgIHBhZGRpbmc6IDAgMCAwIDE5cHg7CiAgICAgIH0KCiAgICAgIC50YWctbmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzaWJsZS1saXN0LXRpdGxlIHsKICAgICAgICBtYXJnaW46IDEwcHggMCA1cHggMDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLXRpdGxlLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0N0LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3Q3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdDdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3Q3QucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0N0LnByb3RvdHlwZSwibWFyZ2luQ2hhcnRTZXJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3Q3QucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsZHIpXSx3Q3QucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdDdC5wcm90b3R5cGUsInNob3dEb3dubG9hZExpbmtzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdDdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdDdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdDdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0N0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlckludmFsaWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0N0LnByb3RvdHlwZSwiX25hbWVUb0RhdGFTZXJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0N0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0N0LnByb3RvdHlwZSwiX2xvZ1NjYWxlQWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sd0N0LnByb3RvdHlwZSwiX3JlcXVlc3REYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdDdC5wcm90b3R5cGUsIl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdDdC5wcm90b3R5cGUsIl9tYXRjaGVzTGlzdE9wZW5lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3Q3QucHJvdG90eXBlLCJfZmlsbEFyZWEiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHdDdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd0N0LnByb3RvdHlwZSwiX21pc3NpbmdUYWdzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd0N0LnByb3RvdHlwZSwiX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0N0LnByb3RvdHlwZSwiX3N0ZXBzTWlzbWF0Y2giLHZvaWQgMCksdChbYSgiX25hbWVUb0RhdGFTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHdDdC5wcm90b3R5cGUsIl91cGRhdGVDaGFydCIsbnVsbCksdChbcygiX25hbWVUb0RhdGFTZXJpZXMiLCJydW5zIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd0N0LnByb3RvdHlwZSwiX3Nlcmllc05hbWVzIixudWxsKSx0KFthKCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx3Q3QucHJvdG90eXBlLCJfcmVmcmVzaERhdGFTZXJpZXMiLG51bGwpLHQoW3MoIm1hcmdpbkNoYXJ0U2VyaWVzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd0N0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsbnVsbCksdChbcygidGl0bGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3Q3QucHJvdG90eXBlLCJfdGl0bGVEaXNwbGF5U3RyaW5nIixudWxsKSx3Q3Q9dChbaSgidGYtY3VzdG9tLXNjYWxhci1tYXJnaW4tY2hhcnQtY2FyZCIpXSx3Q3QpO3ZhciBTQ3Q9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsVFlQRVM6W10sZ2V0UnVuc05hbWVkOmZ1bmN0aW9uIE1DdCh0KXtyZXR1cm4gU2UuZXhwb3J0cy5rZXlzKHQpLnNvcnQobnIpfSxnZXRUYWdzOmFyLGZpbHRlclRhZ3M6ZnVuY3Rpb24gRUN0KHQsZSl7bGV0IG49W107cmV0dXJuIGUuZm9yRWFjaCgoZT0+bj1uLmNvbmNhdCh0W2VdKSkpLFNlLmV4cG9ydHMudW5pcShuKS5zb3J0KG5yKX0sTGlzdGVuS2V5OmZsLEJhc2VTdG9yZTptbCxDYW5jZWxsZXI6WFIsRW52aXJvbm1lbnRTdG9yZTpnbCxlbnZpcm9ubWVudFN0b3JlOl9sLEV4cGVyaW1lbnRzU3RvcmU6RlIsZXhwZXJpbWVudHNTdG9yZTpWUixSZXF1ZXN0Q2FuY2VsbGF0aW9uRXJyb3I6c3IsSW52YWxpZFJlcXVlc3RPcHRpb25zRXJyb3I6bHIsUmVxdWVzdE5ldHdvcmtFcnJvcjpjcixnZXQgSHR0cE1ldGhvZFR5cGUoKXtyZXR1cm4gdXJ9LFJlcXVlc3RPcHRpb25zOmhyLFJlcXVlc3RNYW5hZ2VyOmRyLGNyZWF0ZVJvdXRlcjpncixnZXRSb3V0ZXI6X3Isc2V0Um91dGVyOmZ1bmN0aW9uIFRDdCh0KXtpZihudWxsPT10KXRocm93IG5ldyBFcnJvcigiUm91dGVyIHJlcXVpcmVkLCBidXQgZ290OiAiK3QpO21yPXR9LGNyZWF0ZVNlYXJjaFBhcmFtOnZyLFJ1bnNTdG9yZTp5bCxydW5zU3RvcmU6dmwsYWRkUGFyYW1zOmlPfSk7bGV0IENDdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWN0aXZlPSEwLHRoaXMuX2NvbG9yU2NhbGU9bmV3IHhDdCh7c2NhbGU6R1J9KSx0aGlzLl9uYW1lVG9EYXRhU2VyaWVzPXt9LHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3JlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPV9yKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49aU8oaSx7dGFnOnRoaXMuX3RhZ0ZpbHRlcixydW46dH0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4PXt9LHRoaXMuX21hdGNoZXNMaXN0T3BlbmVkPSExfXJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy4kLmxvYWRlci5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLiQubG9hZGVyO3QmJnQucmVzZXREb21haW4oKX1fY3N2VXJsKHQsZSl7cmV0dXJuIGU/aU8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pOiIifV9qc29uVXJsKHQsZSl7cmV0dXJuIGU/aU8odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoianNvbiJ9KToiIn1fZG93bmxvYWREYXRhVXJsKHQsZSl7Y29uc3Qgbj10W2VdLGk9e3RhZzpuLmdldFRhZygpLHJ1bjpuLmdldFJ1bigpfTtyZXR1cm4gaU8oX3IoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvZG93bmxvYWRfZGF0YSIpLGkpfV9jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCl7cmV0dXJuKHQsZSxuKT0+e2lmKG4ucmVnZXhfdmFsaWQpe2NvbnN0IHQ9U2UuZXhwb3J0cy5jbG9uZSh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKTtTZS5leHBvcnRzLmZvck93bihuLnRhZ190b19ldmVudHMsKChuLGkpPT57Y29uc3Qgcj1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSksbz1iQ3QoZSxpKSxhPXRbb107aWYoYSlhLnNldERhdGEocik7ZWxzZXtTZS5leHBvcnRzLmlzVW5kZWZpbmVkKHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2VdKSYmKHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2VdPTApO2NvbnN0IG49bmV3IHZDdChlLGksbyxyLGJUdFt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXV0pO3Rbb109bix0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXT0odGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV0rMSklYlR0Lmxlbmd0aH19KSksdGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIix0KX19fV91cGRhdGVDaGFydCgpe09iamVjdC5lbnRyaWVzKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLmZvckVhY2goKChbdCxlXSk9Pnt0aGlzLiQubG9hZGVyLnNldFNlcmllc0RhdGEodCxlLmdldERhdGEoKSl9KSksdGhpcy4kLmxvYWRlci5jb21taXRDaGFuZ2VzKCl9X2NvbXB1dGVTZWxlY3RlZFJ1bnNTZXQodCl7Y29uc3QgZT17fTtyZXR1cm4gU2UuZXhwb3J0cy5mb3JFYWNoKHQsKHQ9PntlW3RdPTF9KSksZX1nZXQgX3Nlcmllc05hbWVzKCl7Y29uc3QgdD1uZXcgU2V0KHRoaXMucnVucyk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLmZpbHRlcigoKFtlLG5dKT0+dC5oYXMobi5ydW4pKSkubWFwKCgoW3RdKT0+dCkpfV9kZXRlcm1pbmVDb2xvcih0LGUpe3JldHVybiB0LnNjYWxlKGUpfV9yZWZyZXNoRGF0YVNlcmllcygpe3RoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIse30pfV9jcmVhdGVTeW1ib2xGdW5jdGlvbigpe3JldHVybiB0PT50aGlzLl9uYW1lVG9EYXRhU2VyaWVzW3RdLmdldFN5bWJvbCgpLm1ldGhvZCgpfV9kZXRlcm1pbmVTeW1ib2wodCxlKXtyZXR1cm4gdFtlXS5nZXRTeW1ib2woKS5jaGFyYWN0ZXJ9Z2V0IF90YWdGaWx0ZXIoKXt2YXIgdD10aGlzLnRhZ1JlZ2V4ZXM7cmV0dXJuIDE9PT10Lmxlbmd0aD90WzBdOnQubWFwKCh0PT4iKCIrdCsiKSIpKS5qb2luKCJ8Iil9X2dldFRvZ2dsZU1hdGNoZXNJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fdG9nZ2xlTWF0Y2hlc09wZW4oKXt0aGlzLnNldCgiX21hdGNoZXNMaXN0T3BlbmVkIiwhdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQpfWdldCBfdGl0bGVEaXNwbGF5U3RyaW5nKCl7cmV0dXJuIHRoaXMudGl0bGV8fCJ1bnRpdGxlZCJ9X21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkKHQpe2NvbnN0IGU9dGhpcy4kJCgiI21hdGNoLWxpc3QtcmVwZWF0Iik7ZSYmdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXRjaC1saXN0LWVudHJ5IikuZm9yRWFjaCgodD0+e2NvbnN0IG49ZS5pdGVtRm9yRWxlbWVudCh0KTt0LnN0eWxlLmNvbG9yPXRoaXMuX2RldGVybWluZUNvbG9yKHRoaXMuX2NvbG9yU2NhbGUsbil9KSl9fTtDQ3QudGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nIGRpc3BsYXktbmFtZT0iW1tfdGl0bGVEaXNwbGF5U3RyaW5nXV0iPjwvdGYtY2FyZC1oZWFkaW5nPgogICAgPGRpdiBpZD0idGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIiPgogICAgICA8dGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcgogICAgICAgIGlkPSJsb2FkZXIiCiAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlXV0iCiAgICAgICAgZGF0YS1zZXJpZXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1rZXk9IltbX3RhZ0ZpbHRlcl1dIgogICAgICAgIGRhdGEtdG8tbG9hZD0iW1tydW5zXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICAgIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCldXSIKICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICBzeW1ib2wtZnVuY3Rpb249IltbX2NyZWF0ZVN5bWJvbEZ1bmN0aW9uKCldXSIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICBsYWJlbD0ic2VyaWVzIHRvIGRvd25sb2FkIgogICAgICAgICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWR9fSIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICAgIGFzPSJkYXRhU2VyaWVzTmFtZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgPltbZGF0YVNlcmllc05hbWVdXTwvcGFwZXItaXRlbQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDxhCiAgICAgICAgICAgIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5jc3YiCiAgICAgICAgICAgIGhyZWY9IltbX2NzdlVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkNTVjwvYQogICAgICAgICAgPgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmpzb24iCiAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iCiAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9Im1hdGNoZXMtY29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ibWF0Y2hlcy1saXN0LXRpdGxlIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVNYXRjaGVzSWNvbihfbWF0Y2hlc0xpc3RPcGVuZWQpXV0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWF0Y2hlc09wZW4iCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtbWF0Y2hlcy1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJtYXRjaGVzLXRleHQiPiBNYXRjaGVzIChbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSkgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSI+CiAgICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19tYXRjaGVzTGlzdE9wZW5lZF1dIj4KICAgICAgICAgIDxkaXYgaWQ9Im1hdGNoZXMtbGlzdCI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgIGFzPSJzZXJpZXNOYW1lIgogICAgICAgICAgICAgIGlkPSJtYXRjaC1saXN0LXJlcGVhdCIKICAgICAgICAgICAgICBvbi1kb20tY2hhbmdlPSJfbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXRjaC1saXN0LWVudHJ5Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJtYXRjaC1lbnRyeS1zeW1ib2wiPgogICAgICAgICAgICAgICAgICBbW19kZXRlcm1pbmVTeW1ib2woX25hbWVUb0RhdGFTZXJpZXMsIHNlcmllc05hbWUpXV0KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIFtbc2VyaWVzTmFtZV1dCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY3VzdG9tLXNjYWxhci1jYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAjbWF0Y2hlcy1saXN0LXRpdGxlIHsKICAgICAgICBtYXJnaW46IDEwcHggMCA1cHggMDsKICAgICAgfQoKICAgICAgI21hdGNoZXMtbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLm1hdGNoLWxpc3QtZW50cnkgewogICAgICAgIG1hcmdpbjogMCAwIDVweCAwOwogICAgICB9CgogICAgICAubWF0Y2gtZW50cnktc3ltYm9sIHsKICAgICAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAubWF0Y2hlcy10ZXh0IHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLENDdC5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ0N0LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQ3QucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ0N0LnByb3RvdHlwZSwidGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLENDdC5wcm90b3R5cGUsInRhZ1JlZ2V4ZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxDQ3QucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsZHIpXSxDQ3QucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENDdC5wcm90b3R5cGUsInNob3dEb3dubG9hZExpbmtzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0N0LnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxDQ3QucHJvdG90eXBlLCJzbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQ0N0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ0N0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIseEN0KV0sQ0N0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQ0N0LnByb3RvdHlwZSwiX25hbWVUb0RhdGFTZXJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0N0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQ0N0LnByb3RvdHlwZSwiX2xvZ1NjYWxlQWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sQ0N0LnByb3RvdHlwZSwiX3JlcXVlc3REYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLENDdC5wcm90b3R5cGUsIl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLENDdC5wcm90b3R5cGUsIl9tYXRjaGVzTGlzdE9wZW5lZCIsdm9pZCAwKSx0KFthKCJfbmFtZVRvRGF0YVNlcmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQ0N0LnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKSx0KFtzKCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDQ3QucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpLHQoW2EoIl90YWdGaWx0ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLENDdC5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCksdChbcygidGFnUmVnZXhlcyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENDdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLG51bGwpLHQoW3MoInRpdGxlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sQ0N0LnByb3RvdHlwZSwiX3RpdGxlRGlzcGxheVN0cmluZyIsbnVsbCksQ0N0PXQoW2koInRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkIildLENDdCk7bGV0IEFDdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgZHIoNTApLHRoaXMuX2NhbmNlbGxlcj1uZXcgWFIsdGhpcy5fc2hvd0Rvd25sb2FkTGlua3M9SHMoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3Ntb290aGluZ1dlaWdodD1HcygiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLmNhbGwodGhpcyksdGhpcy5faWdub3JlWU91dGxpZXJzPUhzKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5feFR5cGU9InN0ZXAiLHRoaXMuX2FjdGl2ZT0hMCx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlcj1GcygiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLHRoaXMuX3Ntb290aGluZ1dlaWdodE9ic2VydmVyPVdzKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSksdGhpcy5faWdub3JlWU91dGxpZXJzT2JzZXJ2ZXI9RnMoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSl9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtjb25zdCB0PV9yKCkucGx1Z2luc0xpc3RpbmcoKSxlPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e3QuY2FuY2VsbGVkfHwodGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLCF0LnZhbHVlLmN1c3RvbV9zY2FsYXJzKSx0aGlzLl9kYXRhTm90Rm91bmR8fHRoaXMuX3JldHJpZXZlTGF5b3V0QW5kRGF0YSgpKX0pKTt0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X3JlbG9hZENoYXJ0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkLCB0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZCIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9yZXRyaWV2ZUxheW91dEFuZERhdGEoKXtjb25zdCB0PV9yKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2xheW91dCIpLGU9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57dC5jYW5jZWxsZWR8fCh0aGlzLnNldCgiX2xheW91dCIsdC52YWx1ZSksdGhpcy5fZGF0YU5vdEZvdW5kfHx0aGlzLl9yZWxvYWRDaGFydHMoKSl9KSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKGUpfWdldCBfc21vb3RoaW5nRW5hYmxlZCgpe3JldHVybiB0aGlzLl9zbW9vdGhpbmdXZWlnaHQ+MH1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9sYXlvdXQ7aWYoIXQuY2F0ZWdvcnkpcmV0dXJuW107bGV0IGU9ITE7cmV0dXJuIHRoaXMuX29wZW5lZENhdGVnb3JpZXN8fChlPSEwLHRoaXMuX29wZW5lZENhdGVnb3JpZXM9e30pLHQuY2F0ZWdvcnkubWFwKCh0PT4oZSYmIXQuY2xvc2VkJiYodGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1t0LnRpdGxlXT0hMCkse25hbWU6dC50aXRsZSxpdGVtczp0LmNoYXJ0LG1ldGFkYXRhOnt0eXBlOmJyLlBSRUZJWF9HUk9VUCxvcGVuZWQ6ISF0aGlzLl9vcGVuZWRDYXRlZ29yaWVzW3QudGl0bGVdfX0pKSl9X2NhdGVnb3J5T3BlbmVkVG9nZ2xlZCh0KXtjb25zdCBlPXQudGFyZ2V0O2Uub3BlbmVkP3RoaXMuX29wZW5lZENhdGVnb3JpZXNbZS5jYXRlZ29yeS5uYW1lXT0hMDpkZWxldGUgdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1tlLmNhdGVnb3J5Lm5hbWVdfX07QUN0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X3Nob3dEb3dubG9hZExpbmtzfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBkYXRhIGRvd25sb2FkIGxpbmtzPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319IgogICAgICAgICAgICAgICAgPklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgICAgPGRpdiBpZD0idG9vbHRpcC1zb3J0aW5nLWxhYmVsIj5Ub29sdGlwIHNvcnRpbmcgbWV0aG9kOjwvZGl2PgogICAgICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0iIgogICAgICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9IjAiCiAgICAgICAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0CiAgICAgICAgICAgICAgd2VpZ2h0PSJ7e19zbW9vdGhpbmdXZWlnaHR9fSIKICAgICAgICAgICAgICBzdGVwPSIwLjAwMSIKICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgbWF4PSIxIgogICAgICAgICAgICA+PC90Zi1zbW9vdGhpbmctaW5wdXQ+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0ieC10eXBlLXNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgQXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPjwhLS0KICAgICAgICAgICAgLS0+PHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiIGlkPSJjYXRlZ29yaWVzLWNvbnRhaW5lciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+VGhlIGN1c3RvbSBzY2FsYXJzIGRhc2hib2FyZCBpcyBpbmFjdGl2ZS48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8b2w+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbid0IGxhaWQgb3V0IHRoZSBkYXNoYm9hcmQuPC9saT4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBzY2FsYXIgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvb2w+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBUbyBsYXkgb3V0IHRoZSBkYXNoYm9hcmQsIHBhc3MgYSA8Y29kZT5MYXlvdXQ8L2NvZGU+IHByb3RvYnVmZmVyCiAgICAgICAgICAgICAgdG8gdGhlIDxjb2RlPnNldF9sYXlvdXQ8L2NvZGU+IG1ldGhvZC4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHByZT4KZnJvbSB0ZW5zb3Jib2FyZCBpbXBvcnQgc3VtbWFyeQpmcm9tIHRlbnNvcmJvYXJkLnBsdWdpbnMuY3VzdG9tX3NjYWxhciBpbXBvcnQgbGF5b3V0X3BiMgouLi4KIyBUaGlzIGFjdGlvbiBkb2VzIG5vdCBoYXZlIHRvIGJlIHBlcmZvcm1lZCBhdCBldmVyeSBzdGVwLCBzbyB0aGUgYWN0aW9uIGlzIG5vdAojIHRha2VuIGNhcmUgb2YgYnkgYW4gb3AgaW4gdGhlIGdyYXBoLiBXZSBvbmx5IG5lZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9uY2UKIyAoaW5zdGVhZCBvZiBwZXIgc3RlcCkuCmxheW91dF9zdW1tYXJ5ID0gc3VtbWFyeV9saWIuY3VzdG9tX3NjYWxhcl9wYihsYXlvdXRfcGIyLkxheW91dCgKICBjYXRlZ29yeT1bCiAgICBsYXlvdXRfcGIyLkNhdGVnb3J5KAogICAgICB0aXRsZT0nbG9zc2VzJywKICAgICAgY2hhcnQ9WwogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nbG9zc2VzJywKICAgICAgICAgICAgICBtdWx0aWxpbmU9bGF5b3V0X3BiMi5NdWx0aWxpbmVDaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICB0YWc9W3InbG9zcy4qJ10sCiAgICAgICAgICAgICAgKSksCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSdiYXonLAogICAgICAgICAgICAgIG1hcmdpbj1sYXlvdXRfcGIyLk1hcmdpbkNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHNlcmllcz1bCiAgICAgICAgICAgICAgICAgIGxheW91dF9wYjIuTWFyZ2luQ2hhcnRDb250ZW50LlNlcmllcygKICAgICAgICAgICAgICAgICAgICB2YWx1ZT0nbG9zcy9iYXovc2NhbGFyX3N1bW1hcnknLAogICAgICAgICAgICAgICAgICAgIGxvd2VyPSdiYXpfbG93ZXIvYmF6L3NjYWxhcl9zdW1tYXJ5JywKICAgICAgICAgICAgICAgICAgICB1cHBlcj0nYmF6X3VwcGVyL2Jhei9zY2FsYXJfc3VtbWFyeScpLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICApKSwKICAgICAgXSksCiAgICBsYXlvdXRfcGIyLkNhdGVnb3J5KAogICAgICB0aXRsZT0ndHJpZyBmdW5jdGlvbnMnLAogICAgICBjaGFydD1bCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSd3YXZlIHRyaWcgZnVuY3Rpb25zJywKICAgICAgICAgICAgICBtdWx0aWxpbmU9bGF5b3V0X3BiMi5NdWx0aWxpbmVDaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICB0YWc9W3IndHJpZ0Z1bmN0aW9ucy9jb3NpbmUnLCByJ3RyaWdGdW5jdGlvbnMvc2luZSddLAogICAgICAgICAgICAgICkpLAogICAgICAgICAgIyBUaGUgcmFuZ2Ugb2YgdGFuZ2VudCBpcyBkaWZmZXJlbnQuIExldCdzIGdpdmUgaXQgaXRzIG93biBjaGFydC4KICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J3RhbicsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ3RyaWdGdW5jdGlvbnMvdGFuZ2VudCddLAogICAgICAgICAgICAgICkpLAogICAgICBdLAogICAgICAjIFRoaXMgY2F0ZWdvcnkgd2UgY2FyZSBsZXNzIGFib3V0LiBMZXQncyBtYWtlIGl0IGluaXRpYWxseSBjbG9zZWQuCiAgICAgIGNsb3NlZD1UcnVlKSwKICBdKSkKd3JpdGVyLmFkZF9zdW1tYXJ5KGxheW91dF9zdW1tYXJ5KQo8L3ByZQogICAgICAgICAgICA+CiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgYXM9ImNoYXJ0IgogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgZGlzYWJsZS1wYWdpbmF0aW9uCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbY2F0ZWdvcnkubWV0YWRhdGEub3BlbmVkXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbY2hhcnQubXVsdGlsaW5lXV0iPgogICAgICAgICAgICAgICAgICA8dGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQKICAgICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICAgIHJ1bnM9IltbX3NlbGVjdGVkUnVuc11dIgogICAgICAgICAgICAgICAgICAgIHRpdGxlPSJbW2NoYXJ0LnRpdGxlXV0iCiAgICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tfc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgICAgICAgICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW19pZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICAgICAgICAgICAgICBzaG93LWRvd25sb2FkLWxpbmtzPSJbW19zaG93RG93bmxvYWRMaW5rc11dIgogICAgICAgICAgICAgICAgICAgIHRhZy1yZWdleGVzPSJbW2NoYXJ0Lm11bHRpbGluZS50YWddXSIKICAgICAgICAgICAgICAgICAgPjwvdGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQ+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJ0Lm1hcmdpbl1dIj4KICAgICAgICAgICAgICAgICAgPHRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQKICAgICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICAgIHJ1bnM9IltbX3NlbGVjdGVkUnVuc11dIgogICAgICAgICAgICAgICAgICAgIHRpdGxlPSJbW2NoYXJ0LnRpdGxlXV0iCiAgICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tY2hhcnQtc2VyaWVzPSJbW2NoYXJ0Lm1hcmdpbi5zZXJpZXNdXSIKICAgICAgICAgICAgICAgICAgPjwvdGYtY3VzdG9tLXNjYWxhci1tYXJnaW4tY2hhcnQtY2FyZD4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI3Rvb2x0aXAtc29ydGluZyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CiAgICAgICN0b29sdGlwLXNvcnRpbmcgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHdpZHRoOiAxMDVweDsKICAgICAgfQogICAgICAubGluZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsZHIpXSxBQ3QucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsWFIpXSxBQ3QucHJvdG90eXBlLCJfY2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxBQ3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUN0LnByb3RvdHlwZSwiX3Nob3dEb3dubG9hZExpbmtzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Ntb290aGluZ1dlaWdodE9ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxBQ3QucHJvdG90eXBlLCJfc21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUN0LnByb3RvdHlwZSwiX2lnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxBQ3QucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQUN0LnByb3RvdHlwZSwiX2xheW91dCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEFDdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQUN0LnByb3RvdHlwZSwiX29wZW5lZENhdGVnb3JpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxBQ3QucHJvdG90eXBlLCJfYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQUN0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtzKCJfc21vb3RoaW5nV2VpZ2h0IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEFDdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIixudWxsKSx0KFtzKCJfbGF5b3V0IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxBQ3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksQUN0PXQoW2koInRmLWN1c3RvbS1zY2FsYXItZGFzaGJvYXJkIildLEFDdCk7Y2xhc3Mga0N0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5ydW4yZGF0YXNldHM9e30sdGhpcy5jb2xvclNjYWxlPWUsdGhpcy5idWlsZENoYXJ0KHQpfWdldERhdGFzZXQodCl7cmV0dXJuIHZvaWQgMD09PXRoaXMucnVuMmRhdGFzZXRzW3RdJiYodGhpcy5ydW4yZGF0YXNldHNbdF09bmV3IHJPLkRhdGFzZXQoW10se3J1bjp0fSkpLHRoaXMucnVuMmRhdGFzZXRzW3RdfWJ1aWxkQ2hhcnQodCl7dGhpcy5vdXRlciYmdGhpcy5vdXRlci5kZXN0cm95KCk7bGV0IGU9QVR0KHQpO3RoaXMueEFjY2Vzc29yPWUuYWNjZXNzb3IsdGhpcy54U2NhbGU9ZS5zY2FsZSx0aGlzLnhBeGlzPWUuYXhpcyx0aGlzLnhBeGlzLm1hcmdpbigwKSx0aGlzLnhBeGlzLnRpY2tMYWJlbFBhZGRpbmcoMyksdGhpcy55U2NhbGU9bmV3IHJPLlNjYWxlcy5MaW5lYXIsdGhpcy55QXhpcz1uZXcgck8uQXhlcy5OdW1lcmljKHRoaXMueVNjYWxlLCJsZWZ0Iik7bGV0IG49d1R0KDMpO3RoaXMueUF4aXMubWFyZ2luKDApLnRpY2tMYWJlbFBhZGRpbmcoNSkuZm9ybWF0dGVyKG4pLHRoaXMueUF4aXMudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb24oITApO2xldCBpPXRoaXMuYnVpbGRQbG90KHRoaXMueEFjY2Vzc29yLHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTt0aGlzLmdyaWRsaW5lcz1uZXcgck8uQ29tcG9uZW50cy5HcmlkbGluZXModGhpcy54U2NhbGUsdGhpcy55U2NhbGUpLHRoaXMuY2VudGVyPW5ldyByTy5Db21wb25lbnRzLkdyb3VwKFt0aGlzLmdyaWRsaW5lcyxpXSksdGhpcy5vdXRlcj1uZXcgck8uQ29tcG9uZW50cy5UYWJsZShbW3RoaXMueUF4aXMsdGhpcy5jZW50ZXJdLFtudWxsLHRoaXMueEF4aXNdXSl9YnVpbGRQbG90KHQsZSxuKXtsZXQgaT1bMCwyMjgsMTU4NywzMDg1LDVlMyw2OTE1LDg0MTMsOTc3MiwxZTRdLHI9U2UuZXhwb3J0cy5yYW5nZShpLmxlbmd0aC0xKS5tYXAoKHQ9PihpW3QrMV0taVt0XSkvMjUwMCkpLG89aS5tYXAoKCh0LGUpPT50PT50W2VdWzFdKSksYT1vWzRdLHM9U2UuZXhwb3J0cy5yYW5nZShvLmxlbmd0aC0xKS5tYXAoKGk9PntsZXQgYT1uZXcgck8uUGxvdHMuQXJlYTthLngodCxlKTtsZXQgcz1pPjQ/b1tpXTpvW2krMV07cmV0dXJuIGEueShpPjQ/b1tpKzFdOm9baV0sbiksYS55MChzKSxhLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLnJ1bikpKSxhLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkucnVuKSkpLGEuYXR0cigic3Ryb2tlLXdlaWdodCIsKCh0LGUsbik9PiIwLjVweCIpKSxhLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwoKCk9PnJbaV0pKSxhLmF0dHIoImZpbGwtb3BhY2l0eSIsKCgpPT5yW2ldKSksYX0pKSxsPW5ldyByTy5QbG90cy5MaW5lO3JldHVybiBsLngodCxlKSxsLnkoYSxuKSxsLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLnJ1bikpKSx0aGlzLnBsb3RzPXMsbmV3IHJPLkNvbXBvbmVudHMuR3JvdXAocyl9c2V0VmlzaWJsZVNlcmllcyh0KXt0aGlzLnJ1bnM9dDtsZXQgZT10Lm1hcCgodD0+dGhpcy5nZXREYXRhc2V0KHQpKSk7dGhpcy5wbG90cy5mb3JFYWNoKCh0PT50LmRhdGFzZXRzKGUpKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZ2V0RGF0YXNldCh0KS5kYXRhKGUpfXJlbmRlclRvKHQpe3RoaXMudGFyZ2V0U1ZHPXQsdGhpcy5vdXRlci5yZW5kZXJUbyh0KX1yZWRyYXcoKXt0aGlzLm91dGVyLnJlZHJhdygpfWRlc3Ryb3koKXt0aGlzLm91dGVyLmRlc3Ryb3koKX19bGV0IExDdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IHJPLlNjYWxlcy5Db2xvcikucmFuZ2UoZ0Euc2xpY2UoKSksdGhpcy54VHlwZT0ic3RlcCIsdGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlPVtdLHRoaXMuX3Nlcmllc0RhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1zZXRWaXNpYmxlU2VyaWVzKHQpe3RoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT10LHRoaXMuX2NoYXJ0JiYodGhpcy5fY2hhcnQuc2V0VmlzaWJsZVNlcmllcyh0KSx0aGlzLnJlZHJhdygpKX1zZXRTZXJpZXNEYXRhKHQsZSl7dGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc0RhdGEodCxlKX1yZWRyYXcoKXt0aGlzLl9jaGFydC5yZWRyYXcoKX1fbWFrZUNoYXJ0KCl7dmFyIHQ9dGhpcy54VHlwZSxlPXRoaXMuY29sb3JTY2FsZSxuPXRoaXMuX2F0dGFjaGVkO251bGw9PT10aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQmJnRoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9dGhpcy5hc3luYygoZnVuY3Rpb24oKXtpZih0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbCxuKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpO3ZhciBpPW5ldyBrQ3QodCxlKSxyPVN1KHRoaXMuJC5jaGFydGRpdik7aS5yZW5kZXJUbyhyKSx0aGlzLl9jaGFydD1pfX0pLDM1MCl9X3JlbG9hZEZyb21DYWNoZSgpe3RoaXMuX2NoYXJ0JiYodGhpcy5fY2hhcnQuc2V0VmlzaWJsZVNlcmllcyh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUpLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuX2NoYXJ0LnNldFNlcmllc0RhdGEodCx0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbdF18fFtdKX0uYmluZCh0aGlzKSkpfWF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITB9ZGV0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMX19O0xDdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwbG90dGFibGUtc3R5bGUiPjwvc3R5bGU+CiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2IHsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICB9CiAgICAgIC5wbG90dGFibGUgLmF4aXMgdGV4dCB7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsck8uU2NhbGVzLkNvbG9yKV0sTEN0LnByb3RvdHlwZSwiY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxMQ3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLExDdC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixrQ3QpXSxMQ3QucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLExDdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTEN0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxMQ3QucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhUeXBlIiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTEN0LnByb3RvdHlwZSwiX21ha2VDaGFydCIsbnVsbCksdChbYSgiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxMQ3QucHJvdG90eXBlLCJfcmVsb2FkRnJvbUNhY2hlIixudWxsKSxMQ3Q9dChbaSgidnotZGlzdHJpYnV0aW9uLWNoYXJ0IildLExDdCk7bGV0IFBDdD1jbGFzcyBleHRlbmRzKExUdChlcih5ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9X3IoKS5wbHVnaW5Sb3V0ZSgiZGlzdHJpYnV0aW9ucyIsIi9kaXN0cmlidXRpb25zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPWlPKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9bi5tYXAoKHQ9Pntjb25zdFtlLG4saV09dDtyZXR1cm4gaS53YWxsX3RpbWU9bmV3IERhdGUoMWUzKmUpLGkuc3RlcD1uLGl9KSkscj10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShyLGkpLHRoaXMuJC5jaGFydC5zZXRWaXNpYmxlU2VyaWVzKFtyXSl9LHRoaXMuX2NvbG9yU2NhbGU9e3NjYWxlOkdSfSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9jYW5jZWxsZXI9bmV3IFhSfV9yZWxvYWRPblJ1blRhZ0NoYW5nZSgpe3RoaXMucmVsb2FkKCl9X3VwZGF0ZURhdGFUb0xvYWQoKXt0aGlzLmRhdGFUb0xvYWQ9W3tydW46dGhpcy5ydW4sdGFnOnRoaXMudGFnfV19Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnNjYWxlKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O1BDdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gZGlzdHJpYnV0aW9uIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotZGlzdHJpYnV0aW9uLWNoYXJ0CiAgICAgIGlkPSJjaGFydCIKICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlXV0iCiAgICA+PC92ei1kaXN0cmlidXRpb24tY2hhcnQ+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxQQ3QucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUEN0LnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFBDdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBDdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFBDdC5wcm90b3R5cGUsImdldERhdGFMb2FkTmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQQ3QucHJvdG90eXBlLCJsb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFBDdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBDdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLFBDdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLFhSKV0sUEN0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFBDdC5wcm90b3R5cGUsIl9yZWxvYWRPblJ1blRhZ0NoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxQQ3QucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUEN0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSxQQ3Q9dChbaSgidGYtZGlzdHJpYnV0aW9uLWxvYWRlciIpXSxQQ3QpO2xldCBOQ3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5feFR5cGU9InN0ZXAiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkRGlzdHJpYnV0aW9ucygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PV9yKCkucGx1Z2luUm91dGUoImRpc3RyaWJ1dGlvbnMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZihTZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtjb25zdCBlPVNlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksbj1hcihlKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PW4ubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnIixlKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWREaXN0cmlidXRpb25zKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1nZXQgX2NhdGVnb3JpZXMoKXtyZXR1cm4gTXIodGhpcy5fcnVuVG9UYWcsdGhpcy5fc2VsZWN0ZWRSdW5zLHRoaXMuX3RhZ0ZpbHRlcil9X3RhZ01ldGFkYXRhKHQsZSxuKXtyZXR1cm4gdFtlXVtuXX19O05DdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9InhUeXBlU2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSG9yaXpvbnRhbCBheGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e194VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gZGlzdHJpYnV0aW9uIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhpc3RvZ3JhbSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgICAoSGlzdG9ncmFtcyBhbmQgZGlzdHJpYnV0aW9ucyBib3RoIHVzZSB0aGUgaGlzdG9ncmFtIHN1bW1hcnkKICAgICAgICAgICAgICAgIG9wZXJhdGlvbi4pCiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoX3J1blRvVGFnSW5mbywgaXRlbS5ydW4sIGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWRpc3RyaWJ1dGlvbi1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5DdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTkN0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxOQ3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE5DdC5wcm90b3R5cGUsIl9ydW5Ub1RhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxOQ3QucHJvdG90eXBlLCJfcnVuVG9UYWdJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTkN0LnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxOQ3QucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTkN0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLE5DdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWciLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLE5DdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxOQ3Q9dChbaSgidGYtZGlzdHJpYnV0aW9uLWRhc2hib2FyZCIpXSxOQ3QpO3ZhciBJQ3Q9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsTGlzdGVuS2V5OmRzLGFkZEhhc2hMaXN0ZW5lcjptcyxhZGRTdG9yYWdlTGlzdGVuZXI6Z3MsZmlyZVN0b3JhZ2VDaGFuZ2VkOl9zLHJlbW92ZUhhc2hMaXN0ZW5lckJ5S2V5OnlzLHJlbW92ZVN0b3JhZ2VMaXN0ZW5lckJ5S2V5OnZzLGdldFVybEhhc2hEaWN0OmZ1bmN0aW9uIFJDdCgpe3JldHVybiBDc30sRElTQU1CSUdVQVRPUjoiZGlzYW1iaWd1YXRvciIsZ2V0U3RyaW5nOk5zLHNldFN0cmluZzpJcyxnZXRTdHJpbmdJbml0aWFsaXplcjpScyxnZXRTdHJpbmdPYnNlcnZlcjpPcyxkaXNwb3NlU3RyaW5nQmluZGluZzp6cyxnZXRCb29sZWFuOkRzLHNldEJvb2xlYW46QnMsZ2V0Qm9vbGVhbkluaXRpYWxpemVyOkhzLGdldEJvb2xlYW5PYnNlcnZlcjpGcyxkaXNwb3NlQm9vbGVhbkJpbmRpbmc6VnMsZ2V0TnVtYmVyOlVzLHNldE51bWJlcjpqcyxnZXROdW1iZXJJbml0aWFsaXplcjpHcyxnZXROdW1iZXJPYnNlcnZlcjpXcyxkaXNwb3NlTnVtYmVyQmluZGluZzpxcyxnZXRPYmplY3Q6WXMsc2V0T2JqZWN0OlhzLGdldE9iamVjdEluaXRpYWxpemVyOiRzLGdldE9iamVjdE9ic2VydmVyOktzLGRpc3Bvc2VPYmplY3RCaW5kaW5nOlpzLG1ha2VCaW5kaW5nczpKcyxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOmZ1bmN0aW9uIE9DdCgpe2NvbnN0IHQ9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksZT1rcyhBcygpKTtpZigid2hhdGlmIj09PWUuX190YWJfXylmb3IobGV0IG4gb2YgdCluIGluIGUmJihlW2BwLndoYXRpZi4ke259YF09ZVtuXSk7THMoUHMoZSkpLChmdW5jdGlvbiBuKHQpe0NzPXR9KShlKX19KSx6Q3Q9ZnVuY3Rpb24gREN0KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSxCQ3Q9ekN0LEhDdD1mdW5jdGlvbiBGQ3QodCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tOylpZihCQ3QodFtuXVswXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX0sVkN0PUhDdCxVQ3Q9QXJyYXkucHJvdG90eXBlLnNwbGljZSxqQ3Q9SEN0LEdDdD1IQ3QsV0N0PUhDdDtmdW5jdGlvbiBxQ3QodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19cUN0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBZQ3QoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxxQ3QucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBYQ3QodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPVZDdChlLHQpO3JldHVybiEobjwwfHwobj09ZS5sZW5ndGgtMT9lLnBvcCgpOlVDdC5jYWxsKGUsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LHFDdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uICRDdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49akN0KGUsdCk7cmV0dXJuIG48MD92b2lkIDA6ZVtuXVsxXX0scUN0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gS0N0KHQpe3JldHVybiBHQ3QodGhpcy5fX2RhdGFfXyx0KT4tMX0scUN0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gWkN0KHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPVdDdChuLHQpO3JldHVybiBpPDA/KCsrdGhpcy5zaXplLG4ucHVzaChbdCxlXSkpOm5baV1bMV09ZSx0aGlzfTt2YXIgSkN0LFFDdD1xQ3QsdEF0PVFDdCxlQXQ9Im9iamVjdCI9PXR5cGVvZiB2ZSYmdmUmJnZlLk9iamVjdD09PU9iamVjdCYmdmUsbkF0PSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaUF0PWVBdHx8bkF0fHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHJBdD1pQXQuU3ltYm9sLG9BdD1PYmplY3QucHJvdG90eXBlLGFBdD1vQXQuaGFzT3duUHJvcGVydHksc0F0PW9BdC50b1N0cmluZyxsQXQ9ckF0P3JBdC50b1N0cmluZ1RhZzp2b2lkIDAsY0F0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsdUF0PXJBdD9yQXQudG9TdHJpbmdUYWc6dm9pZCAwLGhBdD1mdW5jdGlvbiBkQXQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6dUF0JiZ1QXQgaW4gT2JqZWN0KHQpPyhmdW5jdGlvbiBlKHQpe3ZhciBlPWFBdC5jYWxsKHQsbEF0KSxuPXRbbEF0XTt0cnl7dFtsQXRdPXZvaWQgMDt2YXIgaT0hMH1jYXRjaCh0KXt9dmFyIHI9c0F0LmNhbGwodCk7cmV0dXJuIGkmJihlP3RbbEF0XT1uOmRlbGV0ZSB0W2xBdF0pLHJ9KSh0KTooZnVuY3Rpb24gbih0KXtyZXR1cm4gY0F0LmNhbGwodCl9KSh0KX0scEF0PWZ1bmN0aW9uIGZBdCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX0sbUF0PWhBdCxnQXQ9cEF0LF9BdD1mdW5jdGlvbiB5QXQodCl7aWYoIWdBdCh0KSlyZXR1cm4hMTt2YXIgZT1tQXQodCk7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBQcm94eV0iPT1lfSx2QXQ9aUF0WyJfX2NvcmUtanNfc2hhcmVkX18iXSxiQXQ9KEpDdD0vW14uXSskLy5leGVjKHZBdCYmdkF0LmtleXMmJnZBdC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrSkN0OiIiLHhBdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsd0F0PWZ1bmN0aW9uIFNBdCh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIHhBdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0sTUF0PV9BdCxFQXQ9cEF0LFRBdD13QXQsQ0F0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLEFBdD1SZWdFeHAoIl4iK0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLGtBdD1mdW5jdGlvbiBMQXQodCxlKXt2YXIgbj0oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSkodCxlKTtyZXR1cm4oZnVuY3Rpb24gcih0KXtyZXR1cm4hKCFFQXQodCl8fChmdW5jdGlvbiBlKHQpe3JldHVybiEhYkF0JiZiQXQgaW4gdH0pKHQpKSYmKE1BdCh0KT9BQXQ6Q0F0KS50ZXN0KFRBdCh0KSl9KShuKT9uOnZvaWQgMH0sUEF0PWtBdChpQXQsIk1hcCIpLE5BdD1rQXQoT2JqZWN0LCJjcmVhdGUiKSxJQXQ9TkF0LFJBdD1OQXQsT0F0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksekF0PU5BdCxEQXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxCQXQ9TkF0O2Z1bmN0aW9uIEhBdCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1IQXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIEZBdCgpe3RoaXMuX19kYXRhX189SUF0P0lBdChudWxsKTp7fSx0aGlzLnNpemU9MH0sSEF0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gVkF0KHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxIQXQucHJvdG90eXBlLmdldD1mdW5jdGlvbiBVQXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihSQXQpe3ZhciBuPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09bj92b2lkIDA6bn1yZXR1cm4gT0F0LmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sSEF0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gakF0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIHpBdD92b2lkIDAhPT1lW3RdOkRBdC5jYWxsKGUsdCl9LEhBdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIEdBdCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLG5bdF09QkF0JiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBXQXQ9SEF0LHFBdD1RQ3QsWUF0PVBBdCxYQXQ9ZnVuY3Rpb24gJEF0KHQsZSl7dmFyIG49dC5fX2RhdGFfXztyZXR1cm4oZnVuY3Rpb24gaSh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09ZXx8Im51bWJlciI9PWV8fCJzeW1ib2wiPT1lfHwiYm9vbGVhbiI9PWU/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fSkoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH0sS0F0PVhBdCxaQXQ9WEF0LEpBdD1YQXQsUUF0PVhBdDtmdW5jdGlvbiB0a3QodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19dGt0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBla3QoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBXQXQsbWFwOm5ldyhZQXR8fHFBdCksc3RyaW5nOm5ldyBXQXR9fSx0a3QucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBua3QodCl7dmFyIGU9S0F0KHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LHRrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIGlrdCh0KXtyZXR1cm4gWkF0KHRoaXMsdCkuZ2V0KHQpfSx0a3QucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBya3QodCl7cmV0dXJuIEpBdCh0aGlzLHQpLmhhcyh0KX0sdGt0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gb2t0KHQsZSl7dmFyIG49UUF0KHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9O3ZhciBha3Q9dGt0LHNrdD1RQ3QsbGt0PVBBdCxja3Q9YWt0LHVrdD1RQ3Q7ZnVuY3Rpb24gaGt0KHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IHVrdCh0KTt0aGlzLnNpemU9ZS5zaXplfWhrdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gZGt0KCl7dGhpcy5fX2RhdGFfXz1uZXcgdEF0LHRoaXMuc2l6ZT0wfSxoa3QucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBwa3QodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPWUuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9ZS5zaXplLG59LGhrdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIGZrdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhrdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIG1rdCh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LGhrdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIGdrdCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187aWYobiBpbnN0YW5jZW9mIHNrdCl7dmFyIGk9bi5fX2RhdGFfXztpZighbGt0fHxpLmxlbmd0aDwxOTkpcmV0dXJuIGkucHVzaChbdCxlXSksdGhpcy5zaXplPSsrbi5zaXplLHRoaXM7bj10aGlzLl9fZGF0YV9fPW5ldyBja3QoaSl9cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplPW4uc2l6ZSx0aGlzfTt2YXIgX2t0PWhrdCx5a3Q9ZnVuY3Rpb24gdmt0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpJiYhMSE9PWUodFtuXSxuLHQpOyk7cmV0dXJuIHR9LGJrdD1rQXQseGt0PShmdW5jdGlvbigpe3RyeXt2YXIgdD1ia3QoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KSgpLHdrdD14a3QsU2t0PWZ1bmN0aW9uIE1rdCh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJndrdD93a3QodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpuLHdyaXRhYmxlOiEwfSk6dFtlXT1ufSxFa3Q9U2t0LFRrdD16Q3QsQ2t0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQWt0PWZ1bmN0aW9uIGtrdCh0LGUsbil7dmFyIGk9dFtlXTtDa3QuY2FsbCh0LGUpJiZUa3QoaSxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fEVrdCh0LGUsbil9LExrdD1Ba3QsUGt0PVNrdCxOa3Q9ZnVuY3Rpb24gSWt0KHQsZSxuLGkpe3ZhciByPSFuO258fChuPXt9KTtmb3IodmFyIG89LTEsYT1lLmxlbmd0aDsrK288YTspe3ZhciBzPWVbb10sbD1pP2kobltzXSx0W3NdLHMsbix0KTp2b2lkIDA7dm9pZCAwPT09bCYmKGw9dFtzXSkscj9Qa3QobixzLGwpOkxrdChuLHMsbCl9cmV0dXJuIG59LFJrdD1mdW5jdGlvbiBPa3QodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH0semt0PWhBdCxEa3Q9Umt0LEJrdD1mdW5jdGlvbiBIa3QodCl7cmV0dXJuIERrdCh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PXprdCh0KX0sRmt0PVJrdCxWa3Q9T2JqZWN0LnByb3RvdHlwZSxVa3Q9Vmt0Lmhhc093blByb3BlcnR5LGprdD1Wa3QucHJvcGVydHlJc0VudW1lcmFibGUsR2t0PUJrdCgoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSkoKSk/Qmt0OmZ1bmN0aW9uKHQpe3JldHVybiBGa3QodCkmJlVrdC5jYWxsKHQsImNhbGxlZSIpJiYhamt0LmNhbGwodCwiY2FsbGVlIil9LFdrdD1BcnJheS5pc0FycmF5LHFrdD17ZXhwb3J0czp7fX0sWWt0PWZ1bmN0aW9uIFhrdCgpe3JldHVybiExfTshKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/aUF0LkJ1ZmZlcjp2b2lkIDA7dC5leHBvcnRzPShyP3IuaXNCdWZmZXI6dm9pZCAwKXx8WWt0fSkocWt0LHFrdC5leHBvcnRzKTt2YXIgJGt0PS9eKD86MHxbMS05XVxkKikkLyxLa3Q9ZnVuY3Rpb24gWmt0KHQsZSl7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISEoZT1udWxsPT1lPzkwMDcxOTkyNTQ3NDA5OTE6ZSkmJigibnVtYmVyIj09bnx8InN5bWJvbCIhPW4mJiRrdC50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9LEprdD1mdW5jdGlvbiBRa3QodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9LHRMdD1oQXQsZUx0PUprdCxuTHQ9Umt0LGlMdD17fTtpTHRbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWlMdFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09aUx0WyJbb2JqZWN0IEludDhBcnJheV0iXT1pTHRbIltvYmplY3QgSW50MTZBcnJheV0iXT1pTHRbIltvYmplY3QgSW50MzJBcnJheV0iXT1pTHRbIltvYmplY3QgVWludDhBcnJheV0iXT1pTHRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09aUx0WyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPWlMdFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxpTHRbIltvYmplY3QgQXJndW1lbnRzXSJdPWlMdFsiW29iamVjdCBBcnJheV0iXT1pTHRbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09aUx0WyJbb2JqZWN0IEJvb2xlYW5dIl09aUx0WyJbb2JqZWN0IERhdGFWaWV3XSJdPWlMdFsiW29iamVjdCBEYXRlXSJdPWlMdFsiW29iamVjdCBFcnJvcl0iXT1pTHRbIltvYmplY3QgRnVuY3Rpb25dIl09aUx0WyJbb2JqZWN0IE1hcF0iXT1pTHRbIltvYmplY3QgTnVtYmVyXSJdPWlMdFsiW29iamVjdCBPYmplY3RdIl09aUx0WyJbb2JqZWN0IFJlZ0V4cF0iXT1pTHRbIltvYmplY3QgU2V0XSJdPWlMdFsiW29iamVjdCBTdHJpbmddIl09aUx0WyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIHJMdD1mdW5jdGlvbiBvTHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX0sYUx0PXtleHBvcnRzOnt9fTshKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4mJmVBdC5wcm9jZXNzLG89KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBpJiZpLnJlcXVpcmUmJmkucmVxdWlyZSgidXRpbCIpLnR5cGVzfHxyJiZyLmJpbmRpbmcmJnIuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpO3QuZXhwb3J0cz1vfSkoYUx0LGFMdC5leHBvcnRzKTt2YXIgc0x0PWFMdC5leHBvcnRzLGxMdD1zTHQmJnNMdC5pc1R5cGVkQXJyYXksY0x0PWxMdD9yTHQobEx0KTpmdW5jdGlvbiB1THQodCl7cmV0dXJuIG5MdCh0KSYmZUx0KHQubGVuZ3RoKSYmISFpTHRbdEx0KHQpXX0saEx0PUdrdCxkTHQ9V2t0LHBMdD1xa3QuZXhwb3J0cyxmTHQ9S2t0LG1MdD1jTHQsZ0x0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksX0x0PWZ1bmN0aW9uIHlMdCh0LGUpe3ZhciBuPWRMdCh0KSxpPSFuJiZoTHQodCkscj0hbiYmIWkmJnBMdCh0KSxvPSFuJiYhaSYmIXImJm1MdCh0KSxhPW58fGl8fHJ8fG8scz1hPyhmdW5jdGlvbiBsKHQsZSl7Zm9yKHZhciBuPS0xLGk9QXJyYXkodCk7KytuPHQ7KWlbbl09ZShuKTtyZXR1cm4gaX0pKHQubGVuZ3RoLFN0cmluZyk6W10sYz1zLmxlbmd0aDtmb3IodmFyIHUgaW4gdCkhZSYmIWdMdC5jYWxsKHQsdSl8fGEmJigibGVuZ3RoIj09dXx8ciYmKCJvZmZzZXQiPT11fHwicGFyZW50Ij09dSl8fG8mJigiYnVmZmVyIj09dXx8ImJ5dGVMZW5ndGgiPT11fHwiYnl0ZU9mZnNldCI9PXUpfHxmTHQodSxjKSl8fHMucHVzaCh1KTtyZXR1cm4gc30sdkx0PU9iamVjdC5wcm90b3R5cGUsYkx0PWZ1bmN0aW9uIHhMdCh0KXt2YXIgZT10JiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0PT09KCJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLnByb3RvdHlwZXx8dkx0KX0sd0x0PWZ1bmN0aW9uIFNMdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChlKG4pKX19LE1MdD13THQoT2JqZWN0LmtleXMsT2JqZWN0KSxFTHQ9Ykx0LFRMdD1NTHQsQ0x0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQUx0PWZ1bmN0aW9uIGtMdCh0KXtpZighRUx0KHQpKXJldHVybiBUTHQodCk7dmFyIGU9W107Zm9yKHZhciBuIGluIE9iamVjdCh0KSlDTHQuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9LExMdD1fQXQsUEx0PUprdCxOTHQ9ZnVuY3Rpb24gSUx0KHQpe3JldHVybiBudWxsIT10JiZQTHQodC5sZW5ndGgpJiYhTEx0KHQpfSxSTHQ9X0x0LE9MdD1BTHQsekx0PU5MdCxETHQ9ZnVuY3Rpb24gQkx0KHQpe3JldHVybiB6THQodCk/Ukx0KHQpOk9MdCh0KX0sSEx0PU5rdCxGTHQ9REx0LFZMdD1wQXQsVUx0PWJMdCxqTHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxHTHQ9X0x0LFdMdD1OTHQscUx0PWZ1bmN0aW9uIFlMdCh0KXtyZXR1cm4gV0x0KHQpP0dMdCh0LCEwKTooZnVuY3Rpb24gZSh0KXtpZighVkx0KHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIE9iamVjdCh0KSllLnB1c2gobik7cmV0dXJuIGV9KSh0KTt2YXIgbj1VTHQodCksaT1bXTtmb3IodmFyIHIgaW4gdCkoImNvbnN0cnVjdG9yIiE9cnx8IW4mJmpMdC5jYWxsKHQscikpJiZpLnB1c2gocik7cmV0dXJuIGl9KSh0KX0sWEx0PU5rdCwkTHQ9cUx0LEtMdD17ZXhwb3J0czp7fX07IShmdW5jdGlvbih0LGUpe3ZhciBuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmdCYmIXQubm9kZVR5cGUmJnQscj1pJiZpLmV4cG9ydHM9PT1uP2lBdC5CdWZmZXI6dm9pZCAwLG89cj9yLmFsbG9jVW5zYWZlOnZvaWQgMDt0LmV4cG9ydHM9ZnVuY3Rpb24gYSh0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxpPW8/byhuKTpuZXcgdC5jb25zdHJ1Y3RvcihuKTtyZXR1cm4gdC5jb3B5KGkpLGl9fSkoS0x0LEtMdC5leHBvcnRzKTt2YXIgWkx0PWZ1bmN0aW9uIEpMdCh0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPUFycmF5KGkpKTsrK248aTspZVtuXT10W25dO3JldHVybiBlfSxRTHQ9ZnVuY3Rpb24gdFB0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb30sZVB0PWZ1bmN0aW9uIG5QdCgpe3JldHVybltdfSxpUHQ9UUx0LHJQdD1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLG9QdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGFQdD1vUHQ/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9T2JqZWN0KHQpLGlQdChvUHQodCksKGZ1bmN0aW9uKGUpe3JldHVybiByUHQuY2FsbCh0LGUpfSkpKX06ZVB0LHNQdD1Oa3QsbFB0PWFQdCxjUHQ9ZnVuY3Rpb24gdVB0KHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9LGhQdD13THQoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCksZFB0PWNQdCxwUHQ9aFB0LGZQdD1hUHQsbVB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdO3Q7KWRQdChlLGZQdCh0KSksdD1wUHQodCk7cmV0dXJuIGV9OmVQdCxnUHQ9Tmt0LF9QdD1tUHQseVB0PWNQdCx2UHQ9V2t0LGJQdD1mdW5jdGlvbiB4UHQodCxlLG4pe3ZhciBpPWUodCk7cmV0dXJuIHZQdCh0KT9pOnlQdChpLG4odCkpfSx3UHQ9YlB0LFNQdD1hUHQsTVB0PURMdCxFUHQ9ZnVuY3Rpb24gVFB0KHQpe3JldHVybiB3UHQodCxNUHQsU1B0KX0sQ1B0PWJQdCxBUHQ9bVB0LGtQdD1xTHQsTFB0PWtBdChpQXQsIkRhdGFWaWV3IiksUFB0PWtBdChpQXQsIlByb21pc2UiKSxOUHQ9a0F0KGlBdCwiU2V0IiksSVB0PUxQdCxSUHQ9UEF0LE9QdD1QUHQselB0PU5QdCxEUHQ9a0F0KGlBdCwiV2Vha01hcCIpLEJQdD1oQXQsSFB0PXdBdCxGUHQ9IltvYmplY3QgTWFwXSIsVlB0PSJbb2JqZWN0IFByb21pc2VdIixVUHQ9IltvYmplY3QgU2V0XSIsalB0PSJbb2JqZWN0IFdlYWtNYXBdIixHUHQ9IltvYmplY3QgRGF0YVZpZXddIixXUHQ9SFB0KElQdCkscVB0PUhQdChSUHQpLFlQdD1IUHQoT1B0KSxYUHQ9SFB0KHpQdCksJFB0PUhQdChEUHQpLEtQdD1CUHQ7KElQdCYmS1B0KG5ldyBJUHQobmV3IEFycmF5QnVmZmVyKDEpKSkhPUdQdHx8UlB0JiZLUHQobmV3IFJQdCkhPUZQdHx8T1B0JiZLUHQoT1B0LnJlc29sdmUoKSkhPVZQdHx8elB0JiZLUHQobmV3IHpQdCkhPVVQdHx8RFB0JiZLUHQobmV3IERQdCkhPWpQdCkmJihLUHQ9ZnVuY3Rpb24odCl7dmFyIGU9QlB0KHQpLG49IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsaT1uP0hQdChuKToiIjtpZihpKXN3aXRjaChpKXtjYXNlIFdQdDpyZXR1cm4gR1B0O2Nhc2UgcVB0OnJldHVybiBGUHQ7Y2FzZSBZUHQ6cmV0dXJuIFZQdDtjYXNlIFhQdDpyZXR1cm4gVVB0O2Nhc2UgJFB0OnJldHVybiBqUHR9cmV0dXJuIGV9KTt2YXIgWlB0PUtQdCxKUHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxRUHQ9aUF0LlVpbnQ4QXJyYXksdE50PVFQdCxlTnQ9ZnVuY3Rpb24gbk50KHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyB0TnQoZSkuc2V0KG5ldyB0TnQodCkpLGV9LGlOdD1lTnQsck50PS9cdyokLyxvTnQ9ckF0P3JBdC5wcm90b3R5cGU6dm9pZCAwLGFOdD1vTnQ/b050LnZhbHVlT2Y6dm9pZCAwLHNOdD1lTnQsbE50PWZ1bmN0aW9uIGNOdCh0LGUpe3ZhciBuPWU/c050KHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfSx1TnQ9ZU50LGhOdD1sTnQsZE50PXBBdCxwTnQ9T2JqZWN0LmNyZWF0ZSxmTnQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24oZSl7aWYoIWROdChlKSlyZXR1cm57fTtpZihwTnQpcmV0dXJuIHBOdChlKTt0LnByb3RvdHlwZT1lO3ZhciBuPW5ldyB0O3JldHVybiB0LnByb3RvdHlwZT12b2lkIDAsbn19KSgpLG1OdD1mTnQsZ050PWhQdCxfTnQ9Ykx0LHlOdD1mdW5jdGlvbiB2TnQodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fF9OdCh0KT97fTptTnQoZ050KHQpKX0sYk50PVpQdCx4TnQ9Umt0LHdOdD1hTHQuZXhwb3J0cyxTTnQ9d050JiZ3TnQuaXNNYXAsTU50PVNOdD9yTHQoU050KTpmdW5jdGlvbiBFTnQodCl7cmV0dXJuIHhOdCh0KSYmIltvYmplY3QgTWFwXSI9PWJOdCh0KX0sVE50PVpQdCxDTnQ9Umt0LEFOdD1hTHQuZXhwb3J0cyxrTnQ9QU50JiZBTnQuaXNTZXQsTE50PWtOdD9yTHQoa050KTpmdW5jdGlvbiBQTnQodCl7cmV0dXJuIENOdCh0KSYmIltvYmplY3QgU2V0XSI9PVROdCh0KX0sTk50PV9rdCxJTnQ9eWt0LFJOdD1Ba3QsT050PUtMdC5leHBvcnRzLHpOdD1aTHQsRE50PUVQdCxCTnQ9ZnVuY3Rpb24gSE50KHQpe3JldHVybiBDUHQodCxrUHQsQVB0KX0sRk50PVpQdCxWTnQ9eU50LFVOdD1Xa3Qsak50PXFrdC5leHBvcnRzLEdOdD1NTnQsV050PXBBdCxxTnQ9TE50LFlOdD1ETHQsWE50PXFMdCwkTnQ9IltvYmplY3QgQXJndW1lbnRzXSIsS050PSJbb2JqZWN0IEZ1bmN0aW9uXSIsWk50PSJbb2JqZWN0IE9iamVjdF0iLEpOdD17fTtKTnRbJE50XT1KTnRbIltvYmplY3QgQXJyYXldIl09Sk50WyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPUpOdFsiW29iamVjdCBEYXRhVmlld10iXT1KTnRbIltvYmplY3QgQm9vbGVhbl0iXT1KTnRbIltvYmplY3QgRGF0ZV0iXT1KTnRbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPUpOdFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09Sk50WyJbb2JqZWN0IEludDhBcnJheV0iXT1KTnRbIltvYmplY3QgSW50MTZBcnJheV0iXT1KTnRbIltvYmplY3QgSW50MzJBcnJheV0iXT1KTnRbIltvYmplY3QgTWFwXSJdPUpOdFsiW29iamVjdCBOdW1iZXJdIl09Sk50W1pOdF09Sk50WyJbb2JqZWN0IFJlZ0V4cF0iXT1KTnRbIltvYmplY3QgU2V0XSJdPUpOdFsiW29iamVjdCBTdHJpbmddIl09Sk50WyJbb2JqZWN0IFN5bWJvbF0iXT1KTnRbIltvYmplY3QgVWludDhBcnJheV0iXT1KTnRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09Sk50WyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPUpOdFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxKTnRbIltvYmplY3QgRXJyb3JdIl09Sk50W0tOdF09Sk50WyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIFFOdD1mdW5jdGlvbiB0KGUsbixpLHIsbyxhKXt2YXIgcyxsPTEmbixjPTImbix1PTQmbjtpZihpJiYocz1vP2koZSxyLG8sYSk6aShlKSksdm9pZCAwIT09cylyZXR1cm4gcztpZighV050KGUpKXJldHVybiBlO3ZhciBoPVVOdChlKTtpZihoKXtpZihzPShmdW5jdGlvbiBkKHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmSlB0LmNhbGwodCwiaW5kZXgiKSYmKG4uaW5kZXg9dC5pbmRleCxuLmlucHV0PXQuaW5wdXQpLG59KShlKSwhbClyZXR1cm4gek50KGUscyl9ZWxzZXt2YXIgcD1GTnQoZSksZj1wPT1LTnR8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PXA7aWYoak50KGUpKXJldHVybiBPTnQoZSxsKTtpZihwPT1aTnR8fHA9PSROdHx8ZiYmIW8pe2lmKHM9Y3x8Zj97fTpWTnQoZSksIWwpcmV0dXJuIGM/KGZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZ1B0KHQsX1B0KHQpLGUpfSkoZSwoZnVuY3Rpb24gbSh0LGUpe3JldHVybiB0JiZYTHQoZSwkTHQoZSksdCl9KShzLGUpKTooZnVuY3Rpb24geSh0LGUpe3JldHVybiBzUHQodCxsUHQodCksZSl9KShlLChmdW5jdGlvbiBfKHQsZSl7cmV0dXJuIHQmJkhMdChlLEZMdChlKSx0KX0pKHMsZSkpfWVsc2V7aWYoIUpOdFtwXSlyZXR1cm4gbz9lOnt9O3M9KGZ1bmN0aW9uIHYodCxlLG4pe3ZhciBpPXQuY29uc3RydWN0b3I7c3dpdGNoKGUpe2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiB1TnQodCk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOnJldHVybiBuZXcgaSgrdCk7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6cmV0dXJuKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1lP2lOdCh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9KSh0LG4pO2Nhc2UiW29iamVjdCBGbG9hdDMyQXJyYXldIjpjYXNlIltvYmplY3QgRmxvYXQ2NEFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDhBcnJheV0iOmNhc2UiW29iamVjdCBJbnQxNkFycmF5XSI6Y2FzZSJbb2JqZWN0IEludDMyQXJyYXldIjpjYXNlIltvYmplY3QgVWludDhBcnJheV0iOmNhc2UiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBVaW50MzJBcnJheV0iOnJldHVybiBoTnQodCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBpKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4oZnVuY3Rpb24gbyh0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LnNvdXJjZSxyTnQuZXhlYyh0KSk7cmV0dXJuIGUubGFzdEluZGV4PXQubGFzdEluZGV4LGV9KSh0KTtjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4oZnVuY3Rpb24gYSh0KXtyZXR1cm4gYU50P09iamVjdChhTnQuY2FsbCh0KSk6e319KSh0KX19KShlLHAsbCl9fWF8fChhPW5ldyBOTnQpO3ZhciBiPWEuZ2V0KGUpO2lmKGIpcmV0dXJuIGI7YS5zZXQoZSxzKSxxTnQoZSk/ZS5mb3JFYWNoKChmdW5jdGlvbihyKXtzLmFkZCh0KHIsbixpLHIsZSxhKSl9KSk6R050KGUpJiZlLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7cy5zZXQobyx0KHIsbixpLG8sZSxhKSl9KSk7dmFyIHg9aD92b2lkIDA6KHU/Yz9CTnQ6RE50OmM/WE50OllOdCkoZSk7cmV0dXJuIElOdCh4fHxlLChmdW5jdGlvbihyLG8pe3gmJihyPWVbbz1yXSksUk50KHMsbyx0KHIsbixpLG8sZSxhKSl9KSksc30sdEl0PVFOdCxlSXQ9ZnVuY3Rpb24gbkl0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0saUl0PShmdW5jdGlvbiBySXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXtmb3IodmFyIHI9LTEsbz1PYmplY3QoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX0pKCksb0l0PWlJdCxhSXQ9REx0LHNJdD1mdW5jdGlvbiBsSXQodCxlKXtyZXR1cm4gdCYmb0l0KHQsZSxhSXQpfSxjSXQ9Tkx0LHVJdD0oZnVuY3Rpb24gaEl0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZighY0l0KG4pKXJldHVybiB0KG4saSk7Zm9yKHZhciByPW4ubGVuZ3RoLG89ZT9yOi0xLGE9T2JqZWN0KG4pOyhlP28tLTorK288cikmJiExIT09aShhW29dLG8sYSk7KTtyZXR1cm4gbn19KShzSXQpLGRJdD1mdW5jdGlvbiBwSXQodCl7cmV0dXJuIHR9LGZJdD1kSXQsbUl0PWZ1bmN0aW9uIGdJdCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OmZJdH0sX0l0PXlrdCx5SXQ9dUl0LHZJdD1tSXQsYkl0PVdrdCx4SXQ9ZnVuY3Rpb24gd0l0KHQsZSl7cmV0dXJuKGJJdCh0KT9fSXQ6eUl0KSh0LHZJdChlKSl9LFNJdD14SXQsTUl0PXVJdCxFSXQ9YWt0O2Z1bmN0aW9uIFRJdCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgRUl0OysrZTxuOyl0aGlzLmFkZCh0W2VdKX1USXQucHJvdG90eXBlLmFkZD1USXQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gQ0l0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc30sVEl0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gQUl0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGtJdD1USXQsTEl0PWZ1bmN0aW9uIFBJdCh0LGUpe3JldHVybiB0LmhhcyhlKX0sTkl0PWtJdCxJSXQ9ZnVuY3Rpb24gUkl0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX0sT0l0PUxJdCx6SXQ9ZnVuY3Rpb24gREl0KHQsZSxuLGkscixvKXt2YXIgYT0xJm4scz10Lmxlbmd0aCxsPWUubGVuZ3RoO2lmKHMhPWwmJiEoYSYmbD5zKSlyZXR1cm4hMTt2YXIgYz1vLmdldCh0KSx1PW8uZ2V0KGUpO2lmKGMmJnUpcmV0dXJuIGM9PWUmJnU9PXQ7dmFyIGg9LTEsZD0hMCxwPTImbj9uZXcgTkl0OnZvaWQgMDtmb3Ioby5zZXQodCxlKSxvLnNldChlLHQpOysraDxzOyl7dmFyIGY9dFtoXSxtPWVbaF07aWYoaSl2YXIgZz1hP2kobSxmLGgsZSx0LG8pOmkoZixtLGgsdCxlLG8pO2lmKHZvaWQgMCE9PWcpe2lmKGcpY29udGludWU7ZD0hMTticmVha31pZihwKXtpZighSUl0KGUsKGZ1bmN0aW9uKHQsZSl7aWYoIU9JdChwLGUpJiYoZj09PXR8fHIoZix0LG4saSxvKSkpcmV0dXJuIHAucHVzaChlKX0pKSl7ZD0hMTticmVha319ZWxzZSBpZihmIT09bSYmIXIoZixtLG4saSxvKSl7ZD0hMTticmVha319cmV0dXJuIG8uZGVsZXRlKHQpLG8uZGVsZXRlKGUpLGR9LEJJdD1mdW5jdGlvbiBISXQodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59LEZJdD1RUHQsVkl0PXpDdCxVSXQ9ekl0LGpJdD1mdW5jdGlvbiBHSXQodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7blsrK2VdPVtpLHRdfSkpLG59LFdJdD1CSXQscUl0PXJBdD9yQXQucHJvdG90eXBlOnZvaWQgMCxZSXQ9cUl0P3FJdC52YWx1ZU9mOnZvaWQgMCxYSXQ9RVB0LCRJdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEtJdD1fa3QsWkl0PXpJdCxKSXQ9WlB0LFFJdD1Xa3QsdFJ0PXFrdC5leHBvcnRzLGVSdD1jTHQsblJ0PSJbb2JqZWN0IEFyZ3VtZW50c10iLGlSdD0iW29iamVjdCBBcnJheV0iLHJSdD0iW29iamVjdCBPYmplY3RdIixvUnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhUnQ9Umt0LHNSdD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7cmV0dXJuIGU9PT1ufHwobnVsbD09ZXx8bnVsbD09bnx8IWFSdChlKSYmIWFSdChuKT9lIT1lJiZuIT1uOihmdW5jdGlvbiBhKHQsZSxuLGkscixvKXt2YXIgYT1RSXQodCkscz1RSXQoZSksbD1hP2lSdDpKSXQodCksYz1zP2lSdDpKSXQoZSksdT0obD1sPT1uUnQ/clJ0OmwpPT1yUnQsaD0oYz1jPT1uUnQ/clJ0OmMpPT1yUnQsZD1sPT1jO2lmKGQmJnRSdCh0KSl7aWYoIXRSdChlKSlyZXR1cm4hMTthPSEwLHU9ITF9aWYoZCYmIXUpcmV0dXJuIG98fChvPW5ldyBLSXQpLGF8fGVSdCh0KT9aSXQodCxlLG4saSxyLG8pOihmdW5jdGlvbiBwKHQsZSxuLGkscixvLGEpe3N3aXRjaChuKXtjYXNlIltvYmplY3QgRGF0YVZpZXddIjppZih0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8dC5ieXRlT2Zmc2V0IT1lLmJ5dGVPZmZzZXQpcmV0dXJuITE7dD10LmJ1ZmZlcixlPWUuYnVmZmVyO2Nhc2UiW29iamVjdCBBcnJheUJ1ZmZlcl0iOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCFvKG5ldyBGSXQodCksbmV3IEZJdChlKSkpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpjYXNlIltvYmplY3QgTnVtYmVyXSI6cmV0dXJuIFZJdCgrdCwrZSk7Y2FzZSJbb2JqZWN0IEVycm9yXSI6cmV0dXJuIHQubmFtZT09ZS5uYW1lJiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIltvYmplY3QgUmVnRXhwXSI6Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVybiB0PT1lKyIiO2Nhc2UiW29iamVjdCBNYXBdIjp2YXIgcz1qSXQ7Y2FzZSJbb2JqZWN0IFNldF0iOmlmKHN8fChzPVdJdCksdC5zaXplIT1lLnNpemUmJiEoMSZpKSlyZXR1cm4hMTt2YXIgbD1hLmdldCh0KTtpZihsKXJldHVybiBsPT1lO2l8PTIsYS5zZXQodCxlKTt2YXIgYz1VSXQocyh0KSxzKGUpLGkscixvLGEpO3JldHVybiBhLmRlbGV0ZSh0KSxjO2Nhc2UiW29iamVjdCBTeW1ib2xdIjppZihZSXQpcmV0dXJuIFlJdC5jYWxsKHQpPT1ZSXQuY2FsbChlKX1yZXR1cm4hMX0pKHQsZSxsLG4saSxyLG8pO2lmKCEoMSZuKSl7dmFyIGY9dSYmb1J0LmNhbGwodCwiX193cmFwcGVkX18iKSxtPWgmJm9SdC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoZnx8bSl7dmFyIGc9Zj90LnZhbHVlKCk6dCxfPW0/ZS52YWx1ZSgpOmU7cmV0dXJuIG98fChvPW5ldyBLSXQpLHIoZyxfLG4saSxvKX19cmV0dXJuISFkJiYob3x8KG89bmV3IEtJdCksKGZ1bmN0aW9uIHkodCxlLG4saSxyLG8pe3ZhciBhPTEmbixzPVhJdCh0KSxsPXMubGVuZ3RoO2lmKGwhPVhJdChlKS5sZW5ndGgmJiFhKXJldHVybiExO2Zvcih2YXIgYz1sO2MtLTspe3ZhciB1PXNbY107aWYoIShhP3UgaW4gZTokSXQuY2FsbChlLHUpKSlyZXR1cm4hMX12YXIgaD1vLmdldCh0KSxkPW8uZ2V0KGUpO2lmKGgmJmQpcmV0dXJuIGg9PWUmJmQ9PXQ7dmFyIHA9ITA7by5zZXQodCxlKSxvLnNldChlLHQpO2Zvcih2YXIgZj1hOysrYzxsOyl7dmFyIG09dFt1PXNbY11dLGc9ZVt1XTtpZihpKXZhciBfPWE/aShnLG0sdSxlLHQsbyk6aShtLGcsdSx0LGUsbyk7aWYoISh2b2lkIDA9PT1fP209PT1nfHxyKG0sZyxuLGksbyk6Xykpe3A9ITE7YnJlYWt9Znx8KGY9ImNvbnN0cnVjdG9yIj09dSl9aWYocCYmIWYpe3ZhciB5PXQuY29uc3RydWN0b3Isdj1lLmNvbnN0cnVjdG9yO3k9PXZ8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIHkmJnkgaW5zdGFuY2VvZiB5JiYiZnVuY3Rpb24iPT10eXBlb2YgdiYmdiBpbnN0YW5jZW9mIHZ8fChwPSExKX1yZXR1cm4gby5kZWxldGUodCksby5kZWxldGUoZSkscH0pKHQsZSxuLGkscixvKSl9KShlLG4saSxyLHQsbykpfSxsUnQ9X2t0LGNSdD1zUnQsdVJ0PXBBdCxoUnQ9ZnVuY3Rpb24gZFJ0KHQpe3JldHVybiB0PT10JiYhdVJ0KHQpfSxwUnQ9aFJ0LGZSdD1ETHQsbVJ0PWZ1bmN0aW9uIGdSdCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmblt0XT09PWUmJih2b2lkIDAhPT1lfHx0IGluIE9iamVjdChuKSl9fSxfUnQ9bVJ0LHlSdD1oQXQsdlJ0PVJrdCxiUnQ9ZnVuY3Rpb24geFJ0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8dlJ0KHQpJiYiW29iamVjdCBTeW1ib2xdIj09eVJ0KHQpfSx3UnQ9V2t0LFNSdD1iUnQsTVJ0PS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLEVSdD0vXlx3KiQvLFRSdD1mdW5jdGlvbiBDUnQodCxlKXtpZih3UnQodCkpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9biYmInN5bWJvbCIhPW4mJiJib29sZWFuIiE9biYmbnVsbCE9dCYmIVNSdCh0KSl8fEVSdC50ZXN0KHQpfHwhTVJ0LnRlc3QodCl8fG51bGwhPWUmJnQgaW4gT2JqZWN0KGUpfSxBUnQ9YWt0O2Z1bmN0aW9uIGtSdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7dmFyIG49ZnVuY3Rpb24oKXt2YXIgaT1hcmd1bWVudHMscj1lP2UuYXBwbHkodGhpcyxpKTppWzBdLG89bi5jYWNoZTtpZihvLmhhcyhyKSlyZXR1cm4gby5nZXQocik7dmFyIGE9dC5hcHBseSh0aGlzLGkpO3JldHVybiBuLmNhY2hlPW8uc2V0KHIsYSl8fG8sYX07cmV0dXJuIG4uY2FjaGU9bmV3KGtSdC5DYWNoZXx8QVJ0KSxufWtSdC5DYWNoZT1BUnQ7dmFyIExSdCxQUnQ9a1J0LE5SdD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxJUnQ9L1xcKFxcKT8vZyxSUnQ9KGZ1bmN0aW9uIE9SdCh0KXt2YXIgZT1QUnQodCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoTlJ0LChmdW5jdGlvbih0LG4saSxyKXtlLnB1c2goaT9yLnJlcGxhY2UoSVJ0LCIkMSIpOm58fHQpfSkpLGV9KSkselJ0PWZ1bmN0aW9uIERSdCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfSxCUnQ9elJ0LEhSdD1Xa3QsRlJ0PWJSdCxWUnQ9ckF0P3JBdC5wcm90b3R5cGU6dm9pZCAwLFVSdD1WUnQ/VlJ0LnRvU3RyaW5nOnZvaWQgMCxqUnQ9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoSFJ0KGUpKXJldHVybiBCUnQoZSx0KSsiIjtpZihGUnQoZSkpcmV0dXJuIFVSdD9VUnQuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tMS8wPyItMCI6bn0sR1J0PWZ1bmN0aW9uIFdSdCh0KXtyZXR1cm4gbnVsbD09dD8iIjpqUnQodCl9LHFSdD1Xa3QsWVJ0PVRSdCxYUnQ9UlJ0LCRSdD1HUnQsS1J0PWZ1bmN0aW9uIFpSdCh0LGUpe3JldHVybiBxUnQodCk/dDpZUnQodCxlKT9bdF06WFJ0KCRSdCh0KSl9LEpSdD1iUnQsUVJ0PWZ1bmN0aW9uIHRPdCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fEpSdCh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX0sZU90PUtSdCxuT3Q9UVJ0LGlPdD1mdW5jdGlvbiByT3QodCxlKXtmb3IodmFyIG49MCxpPShlPWVPdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmbjxpOyl0PXRbbk90KGVbbisrXSldO3JldHVybiBuJiZuPT1pP3Q6dm9pZCAwfSxvT3Q9aU90LGFPdD1LUnQsc090PUdrdCxsT3Q9V2t0LGNPdD1La3QsdU90PUprdCxoT3Q9UVJ0LGRPdD1mdW5jdGlvbiBwT3QodCxlLG4pe2Zvcih2YXIgaT0tMSxyPShlPWFPdChlLHQpKS5sZW5ndGgsbz0hMTsrK2k8cjspe3ZhciBhPWhPdChlW2ldKTtpZighKG89bnVsbCE9dCYmbih0LGEpKSlicmVhazt0PXRbYV19cmV0dXJuIG98fCsraSE9cj9vOiEhKHI9bnVsbD09dD8wOnQubGVuZ3RoKSYmdU90KHIpJiZjT3QoYSxyKSYmKGxPdCh0KXx8c090KHQpKX0sZk90PWZ1bmN0aW9uIG1PdCh0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX0sZ090PWRPdCxfT3Q9ZnVuY3Rpb24geU90KHQsZSl7cmV0dXJuIG51bGwhPXQmJmdPdCh0LGUsZk90KX0sdk90PXNSdCxiT3Q9X090LHhPdD1UUnQsd090PWhSdCxTT3Q9bVJ0LE1PdD1RUnQsRU90PWZ1bmN0aW9uIFRPdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxDT3Q9aU90LEFPdD1FT3Qsa090PVRSdCxMT3Q9UVJ0LFBPdD1kSXQsTk90PVdrdCxJT3Q9ZnVuY3Rpb24gUk90KHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD9QT3Q6Im9iamVjdCI9PXR5cGVvZiB0P05PdCh0KT8oZnVuY3Rpb24gZSh0LG4pe3JldHVybiB4T3QodCkmJndPdChuKT9TT3QoTU90KHQpLG4pOmZ1bmN0aW9uKGUpe3ZhciBpPShmdW5jdGlvbiByKHQsZSxuKXt2YXIgaT1udWxsPT10P3ZvaWQgMDpvT3QodCxlKTtyZXR1cm4gdm9pZCAwPT09aT9uOml9KShlLHQpO3JldHVybiB2b2lkIDA9PT1pJiZpPT09bj9iT3QoZSx0KTp2T3QobixpLDMpfX0pKHRbMF0sdFsxXSk6KGZ1bmN0aW9uIG4odCl7dmFyIGU9KGZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPWZSdCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixwUnQocildfXJldHVybiBlfSkodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP19SdChlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8KGZ1bmN0aW9uIGkodCxlLG4scil7dmFyIG89bi5sZW5ndGgsYT1vLHM9IXI7aWYobnVsbD09dClyZXR1cm4hYTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGw9bltvXTtpZihzJiZsWzJdP2xbMV0hPT10W2xbMF1dOiEobFswXWluIHQpKXJldHVybiExfWZvcig7KytvPGE7KXt2YXIgYz0obD1uW29dKVswXSx1PXRbY10saD1sWzFdO2lmKHMmJmxbMl0pe2lmKHZvaWQgMD09PXUmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyBsUnQ7aWYocil2YXIgcD1yKHUsaCxjLHQsZSxkKTtpZighKHZvaWQgMD09PXA/Y1J0KGgsdSwzLHIsZCk6cCkpcmV0dXJuITF9fXJldHVybiEwfSkobix0LGUpfX0pKHQpOihmdW5jdGlvbiBpKHQpe3JldHVybiBrT3QodCk/QU90KExPdCh0KSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBDT3QoZSx0KX19KSh0KX0pKHQpfSxPT3Q9UUx0LHpPdD1mdW5jdGlvbiBET3QodCxlKXt2YXIgbj1bXTtyZXR1cm4gTUl0KHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59LEJPdD1JT3QsSE90PVdrdCxGT3Q9ZnVuY3Rpb24gVk90KHQsZSl7cmV0dXJuKEhPdCh0KT9PT3Q6ek90KSh0LEJPdChlKSl9LFVPdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGpPdD1mdW5jdGlvbiBHT3QodCxlKXtyZXR1cm4gbnVsbCE9dCYmVU90LmNhbGwodCxlKX0sV090PWRPdCxxT3Q9ZnVuY3Rpb24gWU90KHQsZSl7cmV0dXJuIG51bGwhPXQmJldPdCh0LGUsak90KX0sWE90PUFMdCwkT3Q9WlB0LEtPdD1Ha3QsWk90PVdrdCxKT3Q9Tkx0LFFPdD1xa3QuZXhwb3J0cyx0enQ9Ykx0LGV6dD1jTHQsbnp0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaXp0PWZ1bmN0aW9uIHJ6dCh0KXtyZXR1cm4gdm9pZCAwPT09dH0sb3p0PXVJdCxhenQ9Tkx0LHN6dD1mdW5jdGlvbiBsenQodCxlKXt2YXIgbj0tMSxpPWF6dCh0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIG96dCh0LChmdW5jdGlvbih0LHIsbyl7aVsrK25dPWUodCxyLG8pfSkpLGl9LGN6dD16UnQsdXp0PUlPdCxoenQ9c3p0LGR6dD1Xa3QscHp0PWZ1bmN0aW9uIGZ6dCh0LGUpe3JldHVybihkenQodCk/Y3p0Omh6dCkodCx1enQoZSkpfSxtenQ9ZnVuY3Rpb24gZ3p0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LF96dD11SXQseXp0PUlPdCx2enQ9ZnVuY3Rpb24gYnp0KHQsZSxuLGkscil7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxyLG8pe249aT8oaT0hMSx0KTplKG4sdCxyLG8pfSkpLG59LHh6dD1Xa3Qsd3p0PWZ1bmN0aW9uIFN6dCh0LGUsbil7dmFyIGk9eHp0KHQpP216dDp2enQscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCx5enQoZSksbixyLF96dCl9LE16dD1oQXQsRXp0PVdrdCxUenQ9Umt0LEN6dD1FT3QoImxlbmd0aCIpLEF6dD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXFx1ZmUwZVxcdWZlMGZdIiksa3p0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsTHp0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFB6dD0iW15cXHVkODAwLVxcdWRmZmZdIixOenQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEl6dD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsUnp0PSIoPzoiK2t6dCsifCIrTHp0KyIpPyIsT3p0PSJbXFx1ZmUwZVxcdWZlMGZdPyIsenp0PU96dCtSenQrIig/OlxcdTIwMGQoPzoiK1tQenQsTnp0LEl6dF0uam9pbigifCIpKyIpIitPenQrUnp0KyIpKiIsRHp0PSIoPzoiK1tQenQra3p0KyI/IixrenQsTnp0LEl6dCwiW1xcdWQ4MDAtXFx1ZGZmZl0iXS5qb2luKCJ8IikrIikiLEJ6dD1SZWdFeHAoTHp0KyIoPz0iK0x6dCsiKXwiK0R6dCt6enQsImciKSxIenQ9Q3p0LEZ6dD1BTHQsVnp0PVpQdCxVenQ9Tkx0LGp6dD1mdW5jdGlvbiBHenQodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIEF6dC50ZXN0KHQpfSkodCk/KGZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPUJ6dC5sYXN0SW5kZXg9MDtCenQudGVzdCh0KTspKytlO3JldHVybiBlfSkodCk6SHp0KHQpfSxXenQ9eWt0LHF6dD1mTnQsWXp0PXNJdCxYenQ9SU90LCR6dD1oUHQsS3p0PVdrdCxaenQ9cWt0LmV4cG9ydHMsSnp0PV9BdCxRenQ9cEF0LHREdD1jTHQsZUR0PUdrdCxuRHQ9V2t0LGlEdD1yQXQ/ckF0LmlzQ29uY2F0U3ByZWFkYWJsZTp2b2lkIDAsckR0PWNQdCxvRHQ9ZnVuY3Rpb24gYUR0KHQpe3JldHVybiBuRHQodCl8fGVEdCh0KXx8ISEoaUR0JiZ0JiZ0W2lEdF0pfSxzRHQ9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3ZhciBhPS0xLHM9ZS5sZW5ndGg7Zm9yKGl8fChpPW9EdCksb3x8KG89W10pOysrYTxzOyl7dmFyIGw9ZVthXTtuPjAmJmkobCk/bj4xP3QobCxuLTEsaSxyLG8pOnJEdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb30sbER0PWZ1bmN0aW9uIGNEdCh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfSx1RHQ9TWF0aC5tYXgsaER0PWZ1bmN0aW9uIGREdCh0LGUsbil7cmV0dXJuIGU9dUR0KHZvaWQgMD09PWU/dC5sZW5ndGgtMTplLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBpPWFyZ3VtZW50cyxyPS0xLG89dUR0KGkubGVuZ3RoLWUsMCksYT1BcnJheShvKTsrK3I8bzspYVtyXT1pW2Urcl07cj0tMTtmb3IodmFyIHM9QXJyYXkoZSsxKTsrK3I8ZTspc1tyXT1pW3JdO3JldHVybiBzW2VdPW4oYSksbER0KHQsdGhpcyxzKX19LHBEdD1lSXQsZkR0PXhrdCxtRHQ9RGF0ZS5ub3csZ0R0PShmdW5jdGlvbiBfRHQodCl7dmFyIGU9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9bUR0KCkscj0xNi0oaS1uKTtpZihuPWkscj4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0pKGZEdD9mdW5jdGlvbih0LGUpe3JldHVybiBmRHQodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpwRHQoZSksd3JpdGFibGU6ITB9KX06ZEl0KSx5RHQ9ZEl0LHZEdD1oRHQsYkR0PWdEdCx4RHQ9ZnVuY3Rpb24gd0R0KHQsZSl7cmV0dXJuIGJEdCh2RHQodCxlLHlEdCksdCsiIil9LFNEdD1mdW5jdGlvbiBNRHQodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9LEVEdD1TRHQsVER0PWZ1bmN0aW9uIENEdCh0KXtyZXR1cm4gdCE9dH0sQUR0PU5QdCxrRHQ9QUR0JiYxL0JJdChuZXcgQUR0KFssLTBdKSlbMV09PTEvMD9mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEFEdCh0KX06ZnVuY3Rpb24gTER0KCl7fSxQRHQ9a0l0LE5EdD1mdW5jdGlvbiBJRHQodCxlKXtyZXR1cm4hKG51bGw9PXR8fCF0Lmxlbmd0aCkmJihmdW5jdGlvbiBuKHQsZSxpKXtyZXR1cm4gZT09ZT8oZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBpPW4tMSxyPXQubGVuZ3RoOysraTxyOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX0pKHQsZSxpKTpFRHQodCxURHQsaSl9KSh0LGUsMCk+LTF9LFJEdD1mdW5jdGlvbiBPRHQodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2k8cjspaWYobihlLHRbaV0pKXJldHVybiEwO3JldHVybiExfSx6RHQ9TEl0LEREdD1rRHQsQkR0PUJJdCxIRHQ9Tkx0LEZEdD1Sa3QsVkR0PWZ1bmN0aW9uIFVEdCh0KXtyZXR1cm4gRkR0KHQpJiZIRHQodCl9LGpEdD1zRHQsR0R0PVZEdCxXRHQ9eER0KChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4saSl7dmFyIHI9LTEsbz1ORHQsYT10Lmxlbmd0aCxzPSEwLGw9W10sYz1sO2lmKGkpcz0hMSxvPVJEdDtlbHNlIGlmKGE+PTIwMCl7dmFyIHU9bj9udWxsOkREdCh0KTtpZih1KXJldHVybiBCRHQodSk7cz0hMSxvPXpEdCxjPW5ldyBQRHR9ZWxzZSBjPW4/W106bDt0OmZvcig7KytyPGE7KXt2YXIgaD10W3JdLGQ9bj9uKGgpOmg7aWYoaD1pfHwwIT09aD9oOjAscyYmZD09ZCl7Zm9yKHZhciBwPWMubGVuZ3RoO3AtLTspaWYoY1twXT09PWQpY29udGludWUgdDtuJiZjLnB1c2goZCksbC5wdXNoKGgpfWVsc2UgbyhjLGQsaSl8fChjIT09bCYmYy5wdXNoKGQpLGwucHVzaChoKSl9cmV0dXJuIGx9KShqRHQodCwxLEdEdCwhMCkpfSkpLHFEdD16UnQsWUR0PURMdCxYRHQ9ZnVuY3Rpb24gJER0KHQpe3JldHVybiBudWxsPT10P1tdOihmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHFEdChuLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX0pKHQsWUR0KHQpKX07dHJ5e0xSdD17Y2xvbmU6ZnVuY3Rpb24gS0R0KHQpe3JldHVybiB0SXQodCw0KX0sY29uc3RhbnQ6ZUl0LGVhY2g6U0l0LGZpbHRlcjpGT3QsaGFzOnFPdCxpc0FycmF5OldrdCxpc0VtcHR5OmZ1bmN0aW9uIFpEdCh0KXtpZihudWxsPT10KXJldHVybiEwO2lmKEpPdCh0KSYmKFpPdCh0KXx8InN0cmluZyI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdC5zcGxpY2V8fFFPdCh0KXx8ZXp0KHQpfHxLT3QodCkpKXJldHVybiF0Lmxlbmd0aDt2YXIgZT0kT3QodCk7aWYoIltvYmplY3QgTWFwXSI9PWV8fCJbb2JqZWN0IFNldF0iPT1lKXJldHVybiF0LnNpemU7aWYodHp0KHQpKXJldHVybiFYT3QodCkubGVuZ3RoO2Zvcih2YXIgbiBpbiB0KWlmKG56dC5jYWxsKHQsbikpcmV0dXJuITE7cmV0dXJuITB9LGlzRnVuY3Rpb246X0F0LGlzVW5kZWZpbmVkOml6dCxrZXlzOkRMdCxtYXA6cHp0LHJlZHVjZTp3enQsc2l6ZTpmdW5jdGlvbiBKRHQodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihVenQodCkpcmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHwhRXp0KHQpJiZUenQodCkmJiJbb2JqZWN0IFN0cmluZ10iPT1NenQodCl9KSh0KT9qenQodCk6dC5sZW5ndGg7dmFyIG49Vnp0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1ufHwiW29iamVjdCBTZXRdIj09bj90LnNpemU6Rnp0KHQpLmxlbmd0aH0sdHJhbnNmb3JtOmZ1bmN0aW9uIFFEdCh0LGUsbil7dmFyIGk9S3p0KHQpLHI9aXx8Wnp0KHQpfHx0RHQodCk7aWYoZT1YenQoZSksbnVsbD09bil7dmFyIG89dCYmdC5jb25zdHJ1Y3RvcjtuPXI/aT9uZXcgbzpbXTpRenQodCkmJkp6dChvKT9xenQoJHp0KHQpKTp7fX1yZXR1cm4ocj9XenQ6WXp0KSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIGUobix0LGkscil9KSksbn0sdW5pb246V0R0LHZhbHVlczpYRHR9fWNhdGNoKHQpe31MUnR8fChMUnQ9d2luZG93Ll8pO3ZhciB0QnQ9TFJ0LGVCdD10QnQsbkJ0PXJCdCxpQnQ9IlwwIjtmdW5jdGlvbiByQnQodCl7dGhpcy5faXNEaXJlY3RlZD0hZUJ0Lmhhcyh0LCJkaXJlY3RlZCIpfHx0LmRpcmVjdGVkLHRoaXMuX2lzTXVsdGlncmFwaD0hIWVCdC5oYXModCwibXVsdGlncmFwaCIpJiZ0Lm11bHRpZ3JhcGgsdGhpcy5faXNDb21wb3VuZD0hIWVCdC5oYXModCwiY29tcG91bmQiKSYmdC5jb21wb3VuZCx0aGlzLl9sYWJlbD12b2lkIDAsdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPWVCdC5jb25zdGFudCh2b2lkIDApLHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbj1lQnQuY29uc3RhbnQodm9pZCAwKSx0aGlzLl9ub2Rlcz17fSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcGFyZW50PXt9LHRoaXMuX2NoaWxkcmVuPXt9LHRoaXMuX2NoaWxkcmVuWyJcMCJdPXt9KSx0aGlzLl9pbj17fSx0aGlzLl9wcmVkcz17fSx0aGlzLl9vdXQ9e30sdGhpcy5fc3Vjcz17fSx0aGlzLl9lZGdlT2Jqcz17fSx0aGlzLl9lZGdlTGFiZWxzPXt9fWZ1bmN0aW9uIG9CdCh0LGUpe3RbZV0/dFtlXSsrOnRbZV09MX1mdW5jdGlvbiBhQnQodCxlKXstLXRbZV18fGRlbGV0ZSB0W2VdfWZ1bmN0aW9uIHNCdCh0LGUsbixpKXt2YXIgcj0iIitlLG89IiIrbjtpZighdCYmcj5vKXt2YXIgYT1yO3I9byxvPWF9cmV0dXJuIHIrIgEiK28rIgEiKyhlQnQuaXNVbmRlZmluZWQoaSk/IlwwIjppKX1mdW5jdGlvbiBsQnQodCxlLG4saSl7dmFyIHI9IiIrZSxvPSIiK247aWYoIXQmJnI+byl7dmFyIGE9cjtyPW8sbz1hfXZhciBzPXt2OnIsdzpvfTtyZXR1cm4gaSYmKHMubmFtZT1pKSxzfWZ1bmN0aW9uIGNCdCh0LGUpe3JldHVybiBzQnQodCxlLnYsZS53LGUubmFtZSl9ckJ0LnByb3RvdHlwZS5fbm9kZUNvdW50PTAsckJ0LnByb3RvdHlwZS5fZWRnZUNvdW50PTAsckJ0LnByb3RvdHlwZS5pc0RpcmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWR9LHJCdC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaH0sckJ0LnByb3RvdHlwZS5pc0NvbXBvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQ29tcG91bmR9LHJCdC5wcm90b3R5cGUuc2V0R3JhcGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhYmVsPXQsdGhpc30sckJ0LnByb3RvdHlwZS5ncmFwaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYWJlbH0sckJ0LnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBlQnQuaXNGdW5jdGlvbih0KXx8KHQ9ZUJ0LmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49dCx0aGlzfSxyQnQucHJvdG90eXBlLm5vZGVDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlQ291bnR9LHJCdC5wcm90b3R5cGUubm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZUJ0LmtleXModGhpcy5fbm9kZXMpfSxyQnQucHJvdG90eXBlLnNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBlQnQuZmlsdGVyKHRoaXMubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIGVCdC5pc0VtcHR5KHQuX2luW2VdKX0pKX0sckJ0LnByb3RvdHlwZS5zaW5rcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIGVCdC5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gZUJ0LmlzRW1wdHkodC5fb3V0W2VdKX0pKX0sckJ0LnByb3RvdHlwZS5zZXROb2Rlcz1mdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cyxpPXRoaXM7cmV0dXJuIGVCdC5lYWNoKHQsKGZ1bmN0aW9uKHQpe24ubGVuZ3RoPjE/aS5zZXROb2RlKHQsZSk6aS5zZXROb2RlKHQpfSkpLHRoaXN9LHJCdC5wcm90b3R5cGUuc2V0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybiBlQnQuaGFzKHRoaXMuX25vZGVzLHQpPyhhcmd1bWVudHMubGVuZ3RoPjEmJih0aGlzLl9ub2Rlc1t0XT1lKSx0aGlzKToodGhpcy5fbm9kZXNbdF09YXJndW1lbnRzLmxlbmd0aD4xP2U6dGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHQpLHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnRbdF09aUJ0LHRoaXMuX2NoaWxkcmVuW3RdPXt9LHRoaXMuX2NoaWxkcmVuWyJcMCJdW3RdPSEwKSx0aGlzLl9pblt0XT17fSx0aGlzLl9wcmVkc1t0XT17fSx0aGlzLl9vdXRbdF09e30sdGhpcy5fc3Vjc1t0XT17fSwrK3RoaXMuX25vZGVDb3VudCx0aGlzKX0sckJ0LnByb3RvdHlwZS5ub2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ub2Rlc1t0XX0sckJ0LnByb3RvdHlwZS5oYXNOb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBlQnQuaGFzKHRoaXMuX25vZGVzLHQpfSxyQnQucHJvdG90eXBlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihlQnQuaGFzKHRoaXMuX25vZGVzLHQpKXt2YXIgbj1mdW5jdGlvbih0KXtlLnJlbW92ZUVkZ2UoZS5fZWRnZU9ianNbdF0pfTtkZWxldGUgdGhpcy5fbm9kZXNbdF0sdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHQpLGRlbGV0ZSB0aGlzLl9wYXJlbnRbdF0sZUJ0LmVhY2godGhpcy5jaGlsZHJlbih0KSwoZnVuY3Rpb24odCl7ZS5zZXRQYXJlbnQodCl9KSksZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RdKSxlQnQuZWFjaChlQnQua2V5cyh0aGlzLl9pblt0XSksbiksZGVsZXRlIHRoaXMuX2luW3RdLGRlbGV0ZSB0aGlzLl9wcmVkc1t0XSxlQnQuZWFjaChlQnQua2V5cyh0aGlzLl9vdXRbdF0pLG4pLGRlbGV0ZSB0aGlzLl9vdXRbdF0sZGVsZXRlIHRoaXMuX3N1Y3NbdF0sLS10aGlzLl9ub2RlQ291bnR9cmV0dXJuIHRoaXN9LHJCdC5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2lzQ29tcG91bmQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaCIpO2lmKGVCdC5pc1VuZGVmaW5lZChlKSllPWlCdDtlbHNle2Zvcih2YXIgbj1lKz0iIjshZUJ0LmlzVW5kZWZpbmVkKG4pO249dGhpcy5wYXJlbnQobikpaWYobj09PXQpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nICIrZSsiIGFzIHBhcmVudCBvZiAiK3QrIiB3b3VsZCBjcmVhdGUgYSBjeWNsZSIpO3RoaXMuc2V0Tm9kZShlKX1yZXR1cm4gdGhpcy5zZXROb2RlKHQpLHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHQpLHRoaXMuX3BhcmVudFt0XT1lLHRoaXMuX2NoaWxkcmVuW2VdW3RdPSEwLHRoaXN9LHJCdC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0PWZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdF1dW3RdfSxyQnQucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih0aGlzLl9pc0NvbXBvdW5kKXt2YXIgZT10aGlzLl9wYXJlbnRbdF07aWYoZSE9PWlCdClyZXR1cm4gZX19LHJCdC5wcm90b3R5cGUuY2hpbGRyZW49ZnVuY3Rpb24odCl7aWYoZUJ0LmlzVW5kZWZpbmVkKHQpJiYodD1pQnQpLHRoaXMuX2lzQ29tcG91bmQpe3ZhciBlPXRoaXMuX2NoaWxkcmVuW3RdO2lmKGUpcmV0dXJuIGVCdC5rZXlzKGUpfWVsc2V7aWYodD09PWlCdClyZXR1cm4gdGhpcy5ub2RlcygpO2lmKHRoaXMuaGFzTm9kZSh0KSlyZXR1cm5bXX19LHJCdC5wcm90b3R5cGUucHJlZGVjZXNzb3JzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ByZWRzW3RdO2lmKGUpcmV0dXJuIGVCdC5rZXlzKGUpfSxyQnQucHJvdG90eXBlLnN1Y2Nlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3Vjc1t0XTtpZihlKXJldHVybiBlQnQua2V5cyhlKX0sckJ0LnByb3RvdHlwZS5uZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wcmVkZWNlc3NvcnModCk7aWYoZSlyZXR1cm4gZUJ0LnVuaW9uKGUsdGhpcy5zdWNjZXNzb3JzKHQpKX0sckJ0LnByb3RvdHlwZS5pc0xlYWY9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT0odGhpcy5pc0RpcmVjdGVkKCk/dGhpcy5zdWNjZXNzb3JzKHQpOnRoaXMubmVpZ2hib3JzKHQpKS5sZW5ndGh9LHJCdC5wcm90b3R5cGUuZmlsdGVyTm9kZXM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3Ioe2RpcmVjdGVkOnRoaXMuX2lzRGlyZWN0ZWQsbXVsdGlncmFwaDp0aGlzLl9pc011bHRpZ3JhcGgsY29tcG91bmQ6dGhpcy5faXNDb21wb3VuZH0pO2Uuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTt2YXIgbj10aGlzO2VCdC5lYWNoKHRoaXMuX25vZGVzLChmdW5jdGlvbihuLGkpe3QoaSkmJmUuc2V0Tm9kZShpLG4pfSkpLGVCdC5lYWNoKHRoaXMuX2VkZ2VPYmpzLChmdW5jdGlvbih0KXtlLmhhc05vZGUodC52KSYmZS5oYXNOb2RlKHQudykmJmUuc2V0RWRnZSh0LG4uZWRnZSh0KSl9KSk7dmFyIGk9e307ZnVuY3Rpb24gcih0KXt2YXIgbz1uLnBhcmVudCh0KTtyZXR1cm4gdm9pZCAwPT09b3x8ZS5oYXNOb2RlKG8pPyhpW3RdPW8sbyk6byBpbiBpP2lbb106cihvKX1yZXR1cm4gdGhpcy5faXNDb21wb3VuZCYmZUJ0LmVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0LHIodCkpfSkpLGV9LHJCdC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbD1mdW5jdGlvbih0KXtyZXR1cm4gZUJ0LmlzRnVuY3Rpb24odCl8fCh0PWVCdC5jb25zdGFudCh0KSksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPXQsdGhpc30sckJ0LnByb3RvdHlwZS5lZGdlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUNvdW50fSxyQnQucHJvdG90eXBlLmVkZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIGVCdC52YWx1ZXModGhpcy5fZWRnZU9ianMpfSxyQnQucHJvdG90eXBlLnNldFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9YXJndW1lbnRzO3JldHVybiBlQnQucmVkdWNlKHQsKGZ1bmN0aW9uKHQscil7cmV0dXJuIGkubGVuZ3RoPjE/bi5zZXRFZGdlKHQscixlKTpuLnNldEVkZ2UodCxyKSxyfSkpLHRoaXN9LHJCdC5wcm90b3R5cGUuc2V0RWRnZT1mdW5jdGlvbigpe3ZhciB0LGUsbixpLHI9ITEsbz1hcmd1bWVudHNbMF07Im9iamVjdCI9PXR5cGVvZiBvJiZudWxsIT09byYmInYiaW4gbz8odD1vLnYsZT1vLncsbj1vLm5hbWUsMj09PWFyZ3VtZW50cy5sZW5ndGgmJihpPWFyZ3VtZW50c1sxXSxyPSEwKSk6KHQ9byxlPWFyZ3VtZW50c1sxXSxuPWFyZ3VtZW50c1szXSxhcmd1bWVudHMubGVuZ3RoPjImJihpPWFyZ3VtZW50c1syXSxyPSEwKSksdD0iIit0LGU9IiIrZSxlQnQuaXNVbmRlZmluZWQobil8fChuPSIiK24pO3ZhciBhPXNCdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtpZihlQnQuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsYSkpcmV0dXJuIHImJih0aGlzLl9lZGdlTGFiZWxzW2FdPWkpLHRoaXM7aWYoIWVCdC5pc1VuZGVmaW5lZChuKSYmIXRoaXMuX2lzTXVsdGlncmFwaCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgYSBuYW1lZCBlZGdlIHdoZW4gaXNNdWx0aWdyYXBoID0gZmFsc2UiKTt0aGlzLnNldE5vZGUodCksdGhpcy5zZXROb2RlKGUpLHRoaXMuX2VkZ2VMYWJlbHNbYV09cj9pOnRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbih0LGUsbik7dmFyIHM9bEJ0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiB0PXMudixlPXMudyxPYmplY3QuZnJlZXplKHMpLHRoaXMuX2VkZ2VPYmpzW2FdPXMsb0J0KHRoaXMuX3ByZWRzW2VdLHQpLG9CdCh0aGlzLl9zdWNzW3RdLGUpLHRoaXMuX2luW2VdW2FdPXMsdGhpcy5fb3V0W3RdW2FdPXMsdGhpcy5fZWRnZUNvdW50KyssdGhpc30sckJ0LnByb3RvdHlwZS5lZGdlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xPT09YXJndW1lbnRzLmxlbmd0aD9jQnQodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOnNCdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tpXX0sckJ0LnByb3RvdHlwZS5oYXNFZGdlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xPT09YXJndW1lbnRzLmxlbmd0aD9jQnQodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOnNCdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gZUJ0Lmhhcyh0aGlzLl9lZGdlTGFiZWxzLGkpfSxyQnQucHJvdG90eXBlLnJlbW92ZUVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP2NCdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6c0J0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pLHI9dGhpcy5fZWRnZU9ianNbaV07cmV0dXJuIHImJih0PXIudixlPXIudyxkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tpXSxkZWxldGUgdGhpcy5fZWRnZU9ianNbaV0sYUJ0KHRoaXMuX3ByZWRzW2VdLHQpLGFCdCh0aGlzLl9zdWNzW3RdLGUpLGRlbGV0ZSB0aGlzLl9pbltlXVtpXSxkZWxldGUgdGhpcy5fb3V0W3RdW2ldLHRoaXMuX2VkZ2VDb3VudC0tKSx0aGlzfSxyQnQucHJvdG90eXBlLmluRWRnZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pblt0XTtpZihuKXt2YXIgaT1lQnQudmFsdWVzKG4pO3JldHVybiBlP2VCdC5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudj09PWV9KSk6aX19LHJCdC5wcm90b3R5cGUub3V0RWRnZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9vdXRbdF07aWYobil7dmFyIGk9ZUJ0LnZhbHVlcyhuKTtyZXR1cm4gZT9lQnQuZmlsdGVyKGksKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnc9PT1lfSkpOml9fSxyQnQucHJvdG90eXBlLm5vZGVFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuaW5FZGdlcyh0LGUpO2lmKG4pcmV0dXJuIG4uY29uY2F0KHRoaXMub3V0RWRnZXModCxlKSl9O3ZhciB1QnQ9e0dyYXBoOm5CdCx2ZXJzaW9uOiIyLjEuOCJ9LGhCdD10QnQsZEJ0PW5CdCxwQnQ9e3dyaXRlOmZ1bmN0aW9uIGZCdCh0KXt2YXIgZT17b3B0aW9uczp7ZGlyZWN0ZWQ6dC5pc0RpcmVjdGVkKCksbXVsdGlncmFwaDp0LmlzTXVsdGlncmFwaCgpLGNvbXBvdW5kOnQuaXNDb21wb3VuZCgpfSxub2RlczpnQnQodCksZWRnZXM6X0J0KHQpfTtyZXR1cm4gaEJ0LmlzVW5kZWZpbmVkKHQuZ3JhcGgoKSl8fChlLnZhbHVlPWhCdC5jbG9uZSh0LmdyYXBoKCkpKSxlfSxyZWFkOmZ1bmN0aW9uIG1CdCh0KXt2YXIgZT1uZXcgZEJ0KHQub3B0aW9ucykuc2V0R3JhcGgodC52YWx1ZSk7cmV0dXJuIGhCdC5lYWNoKHQubm9kZXMsKGZ1bmN0aW9uKHQpe2Uuc2V0Tm9kZSh0LnYsdC52YWx1ZSksdC5wYXJlbnQmJmUuc2V0UGFyZW50KHQudix0LnBhcmVudCl9KSksaEJ0LmVhY2godC5lZGdlcywoZnVuY3Rpb24odCl7ZS5zZXRFZGdlKHt2OnQudix3OnQudyxuYW1lOnQubmFtZX0sdC52YWx1ZSl9KSksZX19O2Z1bmN0aW9uIGdCdCh0KXtyZXR1cm4gaEJ0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQubm9kZShlKSxpPXQucGFyZW50KGUpLHI9e3Y6ZX07cmV0dXJuIGhCdC5pc1VuZGVmaW5lZChuKXx8KHIudmFsdWU9biksaEJ0LmlzVW5kZWZpbmVkKGkpfHwoci5wYXJlbnQ9aSkscn0pKX1mdW5jdGlvbiBfQnQodCl7cmV0dXJuIGhCdC5tYXAodC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSksaT17djplLnYsdzplLnd9O3JldHVybiBoQnQuaXNVbmRlZmluZWQoZS5uYW1lKXx8KGkubmFtZT1lLm5hbWUpLGhCdC5pc1VuZGVmaW5lZChuKXx8KGkudmFsdWU9biksaX0pKX12YXIgeUJ0PXRCdCx2QnQ9dEJ0LGJCdD14QnQ7ZnVuY3Rpb24geEJ0KCl7dGhpcy5fYXJyPVtdLHRoaXMuX2tleUluZGljZXM9e319eEJ0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5sZW5ndGh9LHhCdC5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXl9KSl9LHhCdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB2QnQuaGFzKHRoaXMuX2tleUluZGljZXMsdCl9LHhCdC5wcm90b3R5cGUucHJpb3JpdHk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fa2V5SW5kaWNlc1t0XTtpZih2b2lkIDAhPT1lKXJldHVybiB0aGlzLl9hcnJbZV0ucHJpb3JpdHl9LHhCdC5wcm90b3R5cGUubWluPWZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuc2l6ZSgpKXRocm93IG5ldyBFcnJvcigiUXVldWUgdW5kZXJmbG93Iik7cmV0dXJuIHRoaXMuX2FyclswXS5rZXl9LHhCdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlcztpZih0PVN0cmluZyh0KSwhdkJ0LmhhcyhuLHQpKXt2YXIgaT10aGlzLl9hcnIscj1pLmxlbmd0aDtyZXR1cm4gblt0XT1yLGkucHVzaCh7a2V5OnQscHJpb3JpdHk6ZX0pLHRoaXMuX2RlY3JlYXNlKHIpLCEwfXJldHVybiExfSx4QnQucHJvdG90eXBlLnJlbW92ZU1pbj1mdW5jdGlvbigpe3RoaXMuX3N3YXAoMCx0aGlzLl9hcnIubGVuZ3RoLTEpO3ZhciB0PXRoaXMuX2Fyci5wb3AoKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2tleUluZGljZXNbdC5rZXldLHRoaXMuX2hlYXBpZnkoMCksdC5rZXl9LHhCdC5wcm90b3R5cGUuZGVjcmVhc2U9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9rZXlJbmRpY2VzW3RdO2lmKGU+dGhpcy5fYXJyW25dLnByaW9yaXR5KXRocm93IG5ldyBFcnJvcigiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBLZXk6ICIrdCsiIE9sZDogIit0aGlzLl9hcnJbbl0ucHJpb3JpdHkrIiBOZXc6ICIrZSk7dGhpcy5fYXJyW25dLnByaW9yaXR5PWUsdGhpcy5fZGVjcmVhc2Uobil9LHhCdC5wcm90b3R5cGUuX2hlYXBpZnk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYXJyLG49Mip0LGk9bisxLHI9dDtuPGUubGVuZ3RoJiYocj1lW25dLnByaW9yaXR5PGVbcl0ucHJpb3JpdHk/bjpyLGk8ZS5sZW5ndGgmJihyPWVbaV0ucHJpb3JpdHk8ZVtyXS5wcmlvcml0eT9pOnIpLHIhPT10JiYodGhpcy5fc3dhcCh0LHIpLHRoaXMuX2hlYXBpZnkocikpKX0seEJ0LnByb3RvdHlwZS5fZGVjcmVhc2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49dGhpcy5fYXJyLGk9blt0XS5wcmlvcml0eTswIT09dCYmIShuW2U9dD4+MV0ucHJpb3JpdHk8aSk7KXRoaXMuX3N3YXAodCxlKSx0PWV9LHhCdC5wcm90b3R5cGUuX3N3YXA9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9hcnIsaT10aGlzLl9rZXlJbmRpY2VzLHI9blt0XSxvPW5bZV07blt0XT1vLG5bZV09cixpW28ua2V5XT10LGlbci5rZXldPWV9O3ZhciB3QnQ9YkJ0LFNCdD1mdW5jdGlvbiBNQnQodCxlLG4saSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4saSl7dmFyIHIsbyxhPXt9LHM9bmV3IHdCdCxsPWZ1bmN0aW9uKHQpe3ZhciBlPXQudiE9PXI/dC52OnQudyxpPWFbZV0sbD1uKHQpLGM9by5kaXN0YW5jZStsO2lmKGw8MCl0aHJvdyBuZXcgRXJyb3IoImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gQmFkIGVkZ2U6ICIrdCsiIFdlaWdodDogIitsKTtjPGkuZGlzdGFuY2UmJihpLmRpc3RhbmNlPWMsaS5wcmVkZWNlc3Nvcj1yLHMuZGVjcmVhc2UoZSxjKSl9O2Zvcih0Lm5vZGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49dD09PWU/MDpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7YVt0XT17ZGlzdGFuY2U6bn0scy5hZGQodCxuKX0pKTtzLnNpemUoKT4wJiYocj1zLnJlbW92ZU1pbigpLChvPWFbcl0pLmRpc3RhbmNlIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTspaShyKS5mb3JFYWNoKGwpO3JldHVybiBhfSkodCxTdHJpbmcoZSksbnx8RUJ0LGl8fGZ1bmN0aW9uKGUpe3JldHVybiB0Lm91dEVkZ2VzKGUpfSl9LEVCdD10QnQuY29uc3RhbnQoMSksVEJ0PVNCdCxDQnQ9dEJ0LEFCdD10QnQsa0J0PWZ1bmN0aW9uIExCdCh0KXt2YXIgZT0wLG49W10saT17fSxyPVtdO2Z1bmN0aW9uIG8oYSl7dmFyIHM9aVthXT17b25TdGFjazohMCxsb3dsaW5rOmUsaW5kZXg6ZSsrfTtpZihuLnB1c2goYSksdC5zdWNjZXNzb3JzKGEpLmZvckVhY2goKGZ1bmN0aW9uKHQpe0FCdC5oYXMoaSx0KT9pW3RdLm9uU3RhY2smJihzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0uaW5kZXgpKToobyh0KSxzLmxvd2xpbms9TWF0aC5taW4ocy5sb3dsaW5rLGlbdF0ubG93bGluaykpfSkpLHMubG93bGluaz09PXMuaW5kZXgpe3ZhciBsLGM9W107ZG97bD1uLnBvcCgpLGlbbF0ub25TdGFjaz0hMSxjLnB1c2gobCl9d2hpbGUoYSE9PWwpO3IucHVzaChjKX19cmV0dXJuIHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtBQnQuaGFzKGksdCl8fG8odCl9KSkscn0sUEJ0PXRCdCxOQnQ9a0J0LElCdD10QnQuY29uc3RhbnQoMSksUkJ0PXRCdCxPQnQ9ekJ0O2Z1bmN0aW9uIHpCdCh0KXt2YXIgZT17fSxuPXt9LGk9W107aWYoUkJ0LmVhY2godC5zaW5rcygpLChmdW5jdGlvbiByKG8pe2lmKFJCdC5oYXMobixvKSl0aHJvdyBuZXcgREJ0O1JCdC5oYXMoZSxvKXx8KG5bb109ITAsZVtvXT0hMCxSQnQuZWFjaCh0LnByZWRlY2Vzc29ycyhvKSxyKSxkZWxldGUgbltvXSxpLnB1c2gobykpfSkpLFJCdC5zaXplKGUpIT09dC5ub2RlQ291bnQoKSl0aHJvdyBuZXcgREJ0O3JldHVybiBpfWZ1bmN0aW9uIERCdCgpe316QnQuQ3ljbGVFeGNlcHRpb249REJ0LERCdC5wcm90b3R5cGU9bmV3IEVycm9yO3ZhciBCQnQ9T0J0LEhCdD10QnQsRkJ0PWZ1bmN0aW9uIFZCdCh0LGUsbil7SEJ0LmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIGk9KHQuaXNEaXJlY3RlZCgpP3Quc3VjY2Vzc29yczp0Lm5laWdoYm9ycykuYmluZCh0KSxyPVtdLG89e307cmV0dXJuIEhCdC5lYWNoKGUsKGZ1bmN0aW9uKGUpe2lmKCF0Lmhhc05vZGUoZSkpdGhyb3cgbmV3IEVycm9yKCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6ICIrZSk7VUJ0KHQsZSwicG9zdCI9PT1uLG8saSxyKX0pKSxyfTtmdW5jdGlvbiBVQnQodCxlLG4saSxyLG8pe0hCdC5oYXMoaSxlKXx8KGlbZV09ITAsbnx8by5wdXNoKGUpLEhCdC5lYWNoKHIoZSksKGZ1bmN0aW9uKGUpe1VCdCh0LGUsbixpLHIsbyl9KSksbiYmby5wdXNoKGUpKX12YXIgakJ0LEdCdD1GQnQsV0J0PUZCdCxxQnQ9dEJ0LFlCdD1uQnQsWEJ0PWJCdCwkQnQ9e0dyYXBoOnVCdC5HcmFwaCxqc29uOnBCdCxhbGc6e2NvbXBvbmVudHM6ZnVuY3Rpb24gS0J0KHQpe3ZhciBlLG49e30saT1bXTtmdW5jdGlvbiByKGkpe3lCdC5oYXMobixpKXx8KG5baV09ITAsZS5wdXNoKGkpLHlCdC5lYWNoKHQuc3VjY2Vzc29ycyhpKSxyKSx5QnQuZWFjaCh0LnByZWRlY2Vzc29ycyhpKSxyKSl9cmV0dXJuIHlCdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZT1bXSxyKHQpLGUubGVuZ3RoJiZpLnB1c2goZSl9KSksaX0sZGlqa3N0cmE6U0J0LGRpamtzdHJhQWxsOmZ1bmN0aW9uIFpCdCh0LGUsbil7cmV0dXJuIENCdC50cmFuc2Zvcm0odC5ub2RlcygpLChmdW5jdGlvbihpLHIpe2lbcl09VEJ0KHQscixlLG4pfSkse30pfSxmaW5kQ3ljbGVzOmZ1bmN0aW9uIEpCdCh0KXtyZXR1cm4gUEJ0LmZpbHRlcihOQnQodCksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4xfHwxPT09ZS5sZW5ndGgmJnQuaGFzRWRnZShlWzBdLGVbMF0pfSkpfSxmbG95ZFdhcnNoYWxsOmZ1bmN0aW9uIFFCdCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe3ZhciBpPXt9LHI9dC5ub2RlcygpO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09e30saVt0XVt0XT17ZGlzdGFuY2U6MH0sci5mb3JFYWNoKChmdW5jdGlvbihlKXt0IT09ZSYmKGlbdF1bZV09e2Rpc3RhbmNlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX0pfSkpLG4odCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9bi52PT09dD9uLnc6bi52LG89ZShuKTtpW3RdW3JdPXtkaXN0YW5jZTpvLHByZWRlY2Vzc29yOnR9fSkpfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9aVt0XTtyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPWlbbl07ci5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1lW25dLHI9b1tuXSxhPW9bdF0uZGlzdGFuY2UraS5kaXN0YW5jZTthPHIuZGlzdGFuY2UmJihyLmRpc3RhbmNlPWEsci5wcmVkZWNlc3Nvcj1pLnByZWRlY2Vzc29yKX0pKX0pKX0pKSxpfSkodCxlfHxJQnQsbnx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0saXNBY3ljbGljOmZ1bmN0aW9uIHRIdCh0KXt0cnl7QkJ0KHQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBCQnQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH0scG9zdG9yZGVyOmZ1bmN0aW9uIGVIdCh0LGUpe3JldHVybiBHQnQodCxlLCJwb3N0Iil9LHByZW9yZGVyOmZ1bmN0aW9uIG5IdCh0LGUpe3JldHVybiBXQnQodCxlLCJwcmUiKX0scHJpbTpmdW5jdGlvbiBpSHQodCxlKXt2YXIgbixpPW5ldyBZQnQscj17fSxvPW5ldyBYQnQ7ZnVuY3Rpb24gYSh0KXt2YXIgaT10LnY9PT1uP3Qudzp0LnYsYT1vLnByaW9yaXR5KGkpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPWUodCk7czxhJiYocltpXT1uLG8uZGVjcmVhc2UoaSxzKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBpO3FCdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7by5hZGQodCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGkuc2V0Tm9kZSh0KX0pKSxvLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTtmb3IodmFyIHM9ITE7by5zaXplKCk+MDspe2lmKG49by5yZW1vdmVNaW4oKSxxQnQuaGFzKHIsbikpaS5zZXRFZGdlKG4scltuXSk7ZWxzZXtpZihzKXRocm93IG5ldyBFcnJvcigiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogIit0KTtzPSEwfXQubm9kZUVkZ2VzKG4pLmZvckVhY2goYSl9cmV0dXJuIGl9LHRhcmphbjprQnQsdG9wc29ydDpPQnR9LHZlcnNpb246dUJ0LnZlcnNpb259O3RyeXtqQnQ9JEJ0fWNhdGNoKHQpe31qQnR8fChqQnQ9d2luZG93LmdyYXBobGliKTt2YXIgckh0LG9IdD1qQnQsYUh0PVFOdCxzSHQ9ekN0LGxIdD1OTHQsY0h0PUtrdCx1SHQ9cEF0LGhIdD1mdW5jdGlvbiBkSHQodCxlLG4pe2lmKCF1SHQobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/bEh0KG4pJiZjSHQoZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJnNIdChuW2VdLHQpfSxwSHQ9ekN0LGZIdD1oSHQsbUh0PXFMdCxnSHQ9T2JqZWN0LnByb3RvdHlwZSxfSHQ9Z0h0Lmhhc093blByb3BlcnR5LHlIdD14RHQoKGZ1bmN0aW9uKHQsZSl7dD1PYmplY3QodCk7dmFyIG49LTEsaT1lLmxlbmd0aCxyPWk+Mj9lWzJdOnZvaWQgMDtmb3IociYmZkh0KGVbMF0sZVsxXSxyKSYmKGk9MSk7KytuPGk7KWZvcih2YXIgbz1lW25dLGE9bUh0KG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT10W2NdOyh2b2lkIDA9PT11fHxwSHQodSxnSHRbY10pJiYhX0h0LmNhbGwodCxjKSkmJih0W2NdPW9bY10pfXJldHVybiB0fSkpLHZIdD1JT3QsYkh0PU5MdCx4SHQ9REx0LHdIdD0vXHMvLFNIdD0vXlxzKy8sTUh0PXBBdCxFSHQ9YlJ0LFRIdD0vXlstK10weFswLTlhLWZdKyQvaSxDSHQ9L14wYlswMV0rJC9pLEFIdD0vXjBvWzAtN10rJC9pLGtIdD1wYXJzZUludCxMSHQ9ZnVuY3Rpb24gUEh0KHQpe3JldHVybiB0PzEvMD09PSh0PShmdW5jdGlvbiBlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihFSHQodCkpcmV0dXJuIE5hTjtpZihNSHQodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PU1IdChlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQ/dC5zbGljZSgwLChmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJndIdC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSkodCkrMSkucmVwbGFjZShTSHQsIiIpOnR9KSh0KTt2YXIgaT1DSHQudGVzdCh0KTtyZXR1cm4gaXx8QUh0LnRlc3QodCk/a0h0KHQuc2xpY2UoMiksaT8yOjgpOlRIdC50ZXN0KHQpP05hTjordH0pKHQpKXx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfSxOSHQ9TEh0LElIdD1TRHQsUkh0PUlPdCxPSHQ9TWF0aC5tYXgsekh0PShmdW5jdGlvbiBCSHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcj1PYmplY3QoZSk7aWYoIWJIdChlKSl7dmFyIG89dkh0KG4pO2U9eEh0KGUpLG49ZnVuY3Rpb24odCl7cmV0dXJuIG8oclt0XSx0LHIpfX12YXIgYT10KGUsbixpKTtyZXR1cm4gYT4tMT9yW28/ZVthXTphXTp2b2lkIDB9fSkoKGZ1bmN0aW9uIERIdCh0LGUsbil7dmFyIGk9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFpKXJldHVybi0xO3ZhciByPW51bGw9PW4/MDooZnVuY3Rpb24gbyh0KXt2YXIgZT1OSHQodCksbj1lJTE7cmV0dXJuIGU9PWU/bj9lLW46ZTowfSkobik7cmV0dXJuIHI8MCYmKHI9T0h0KGkrciwwKSksSUh0KHQsUkh0KGUpLHIpfSkpLEhIdD1zRHQsRkh0PWZ1bmN0aW9uIFZIdCh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/SEh0KHQsMSk6W119LFVIdD1pSXQsakh0PW1JdCxHSHQ9cUx0LFdIdD1Ta3QscUh0PXNJdCxZSHQ9SU90LFhIdD1iUnQsJEh0PWZ1bmN0aW9uIEtIdCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5sZW5ndGg7KytpPHI7KXt2YXIgbz10W2ldLGE9ZShvKTtpZihudWxsIT1hJiYodm9pZCAwPT09cz9hPT1hJiYhWEh0KGEpOm4oYSxzKSkpdmFyIHM9YSxsPW99cmV0dXJuIGx9LFpIdD0kSHQsSkh0PWZ1bmN0aW9uIFFIdCh0LGUpe3JldHVybiB0PmV9LHRGdD1kSXQsZUZ0PVNrdCxuRnQ9ekN0LGlGdD1mdW5jdGlvbiByRnQodCxlLG4peyh2b2lkIDAhPT1uJiYhbkZ0KHRbZV0sbil8fHZvaWQgMD09PW4mJiEoZSBpbiB0KSkmJmVGdCh0LGUsbil9LG9GdD1oQXQsYUZ0PWhQdCxzRnQ9Umt0LGxGdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsY0Z0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksdUZ0PWxGdC5jYWxsKE9iamVjdCksaEZ0PWZ1bmN0aW9uIGRGdCh0LGUpe2lmKCgiY29uc3RydWN0b3IiIT09ZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRbZV0pJiYiX19wcm90b19fIiE9ZSlyZXR1cm4gdFtlXX0scEZ0PU5rdCxmRnQ9cUx0LG1GdD1pRnQsZ0Z0PUtMdC5leHBvcnRzLF9GdD1sTnQseUZ0PVpMdCx2RnQ9eU50LGJGdD1Ha3QseEZ0PVdrdCx3RnQ9VkR0LFNGdD1xa3QuZXhwb3J0cyxNRnQ9X0F0LEVGdD1wQXQsVEZ0PWNMdCxDRnQ9aEZ0LEFGdD1fa3Qsa0Z0PWlGdCxMRnQ9aUl0LFBGdD1wQXQsTkZ0PXFMdCxJRnQ9aEZ0LFJGdD14RHQsT0Z0PWhIdCx6RnQ9ZnVuY3Rpb24gdChlLG4saSxyLG8pe2UhPT1uJiZMRnQobiwoZnVuY3Rpb24oYSxzKXtpZihvfHwobz1uZXcgQUZ0KSxQRnQoYSkpIShmdW5jdGlvbiBsKHQsZSxuLGkscixvLGEpe3ZhciBzPUNGdCh0LG4pLGw9Q0Z0KGUsbiksYz1hLmdldChsKTtpZihjKW1GdCh0LG4sYyk7ZWxzZXt2YXIgdT1vP28ocyxsLG4rIiIsdCxlLGEpOnZvaWQgMCxoPXZvaWQgMD09PXU7aWYoaCl7dmFyIGQ9eEZ0KGwpLHA9IWQmJlNGdChsKSxmPSFkJiYhcCYmVEZ0KGwpO3U9bCxkfHxwfHxmP3hGdChzKT91PXM6d0Z0KHMpP3U9eUZ0KHMpOnA/KGg9ITEsdT1nRnQobCwhMCkpOmY/KGg9ITEsdT1fRnQobCwhMCkpOnU9W106KGZ1bmN0aW9uIG0odCl7aWYoIXNGdCh0KXx8IltvYmplY3QgT2JqZWN0XSIhPW9GdCh0KSlyZXR1cm4hMTt2YXIgZT1hRnQodCk7aWYobnVsbD09PWUpcmV0dXJuITA7dmFyIG49Y0Z0LmNhbGwoZSwiY29uc3RydWN0b3IiKSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJmxGdC5jYWxsKG4pPT11RnR9KShsKXx8YkZ0KGwpPyh1PXMsYkZ0KHMpP3U9KGZ1bmN0aW9uIGcodCl7cmV0dXJuIHBGdCh0LGZGdCh0KSl9KShzKTpFRnQocykmJiFNRnQocyl8fCh1PXZGdChsKSkpOmg9ITF9aCYmKGEuc2V0KGwsdSkscih1LGwsaSxvLGEpLGEuZGVsZXRlKGwpKSxtRnQodCxuLHUpfX0pKGUsbixzLGksdCxyLG8pO2Vsc2V7dmFyIGM9cj9yKElGdChlLHMpLGEscysiIixlLG4sbyk6dm9pZCAwO3ZvaWQgMD09PWMmJihjPWEpLGtGdChlLHMsYyl9fSksTkZ0KX0sREZ0PShmdW5jdGlvbiBCRnQodCl7cmV0dXJuIFJGdCgoZnVuY3Rpb24oZSxuKXt2YXIgaT0tMSxyPW4ubGVuZ3RoLG89cj4xP25bci0xXTp2b2lkIDAsYT1yPjI/blsyXTp2b2lkIDA7Zm9yKG89dC5sZW5ndGg+MyYmImZ1bmN0aW9uIj09dHlwZW9mIG8/KHItLSxvKTp2b2lkIDAsYSYmT0Z0KG5bMF0sblsxXSxhKSYmKG89cjwzP3ZvaWQgMDpvLHI9MSksZT1PYmplY3QoZSk7KytpPHI7KXt2YXIgcz1uW2ldO3MmJnQoZSxzLGksbyl9cmV0dXJuIGV9KSl9KSgoZnVuY3Rpb24odCxlLG4pe3pGdCh0LGUsbil9KSksSEZ0PWZ1bmN0aW9uIEZGdCh0LGUpe3JldHVybiB0PGV9LFZGdD0kSHQsVUZ0PUhGdCxqRnQ9ZEl0LEdGdD0kSHQsV0Z0PUlPdCxxRnQ9SEZ0LFlGdD1pQXQsWEZ0PUFrdCwkRnQ9S1J0LEtGdD1La3QsWkZ0PXBBdCxKRnQ9UVJ0LFFGdD1pT3QsdFZ0PWZ1bmN0aW9uIGVWdCh0LGUsbixpKXtpZighWkZ0KHQpKXJldHVybiB0O2Zvcih2YXIgcj0tMSxvPShlPSRGdChlLHQpKS5sZW5ndGgsYT1vLTEscz10O251bGwhPXMmJisrcjxvOyl7dmFyIGw9SkZ0KGVbcl0pLGM9bjtpZigiX19wcm90b19fIj09PWx8fCJjb25zdHJ1Y3RvciI9PT1sfHwicHJvdG90eXBlIj09PWwpcmV0dXJuIHQ7aWYociE9YSl7dmFyIHU9c1tsXTt2b2lkIDA9PT0oYz1pP2kodSxsLHMpOnZvaWQgMCkmJihjPVpGdCh1KT91OktGdChlW3IrMV0pP1tdOnt9KX1YRnQocyxsLGMpLHM9c1tsXX1yZXR1cm4gdH0sblZ0PUtSdCxpVnQ9X090LHJWdD1GSHQsb1Z0PWhEdCxhVnQ9Z0R0LHNWdD0oZnVuY3Rpb24gbFZ0KHQpe3JldHVybiBhVnQob1Z0KHQsdm9pZCAwLHJWdCksdCsiIil9KSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD97fTooZnVuY3Rpb24gbih0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSxpKXtmb3IodmFyIHI9LTEsbz1lLmxlbmd0aCxhPXt9OysrcjxvOyl7dmFyIHM9ZVtyXSxsPVFGdCh0LHMpO2kobCxzKSYmdFZ0KGEsblZ0KHMsdCksbCl9cmV0dXJuIGF9KSh0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGlWdCh0LG4pfSkpfSkodCxlKX0pKSxjVnQ9TWF0aC5jZWlsLHVWdD1NYXRoLm1heCxoVnQ9aEh0LGRWdD1MSHQscFZ0PShmdW5jdGlvbiBmVnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gaSYmIm51bWJlciIhPXR5cGVvZiBpJiZoVnQoZSxuLGkpJiYobj1pPXZvaWQgMCksZT1kVnQoZSksdm9pZCAwPT09bj8obj1lLGU9MCk6bj1kVnQobiksKGZ1bmN0aW9uIHIodCxlLG4saSl7Zm9yKHZhciByPS0xLG89dVZ0KGNWdCgoZS10KS8obnx8MSkpLDApLGE9QXJyYXkobyk7by0tOylhW2k/bzorK3JdPXQsdCs9bjtyZXR1cm4gYX0pKGUsbixpPXZvaWQgMD09PWk/ZTxuPzE6LTE6ZFZ0KGkpLHQpfX0pKCksbVZ0PWJSdCxnVnQ9ZnVuY3Rpb24gX1Z0KHQsZSl7aWYodCE9PWUpe3ZhciBuPXZvaWQgMCE9PXQsaT1udWxsPT09dCxyPXQ9PXQsbz1tVnQodCksYT12b2lkIDAhPT1lLHM9bnVsbD09PWUsbD1lPT1lLGM9bVZ0KGUpO2lmKCFzJiYhYyYmIW8mJnQ+ZXx8byYmYSYmbCYmIXMmJiFjfHxpJiZhJiZsfHwhbiYmbHx8IXIpcmV0dXJuIDE7aWYoIWkmJiFvJiYhYyYmdDxlfHxjJiZuJiZyJiYhaSYmIW98fHMmJm4mJnJ8fCFhJiZyfHwhbClyZXR1cm4tMX1yZXR1cm4gMH0seVZ0PXpSdCx2VnQ9aU90LGJWdD1JT3QseFZ0PXN6dCx3VnQ9ckx0LFNWdD1kSXQsTVZ0PVdrdCxFVnQ9c0R0LFRWdD1oSHQsQ1Z0PXhEdCgoZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybltdO3ZhciBuPWUubGVuZ3RoO3JldHVybiBuPjEmJlRWdCh0LGVbMF0sZVsxXSk/ZT1bXTpuPjImJlRWdChlWzBdLGVbMV0sZVsyXSkmJihlPVtlWzBdXSksKGZ1bmN0aW9uIGkodCxlLG4pe2U9ZS5sZW5ndGg/eVZ0KGUsKGZ1bmN0aW9uKHQpe3JldHVybiBNVnQodCk/ZnVuY3Rpb24oZSl7cmV0dXJuIHZWdChlLDE9PT10Lmxlbmd0aD90WzBdOnQpfTp0fSkpOltTVnRdO3ZhciBpPS0xO3JldHVybiBlPXlWdChlLHdWdChiVnQpKSwoZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9KSh4VnQodCwoZnVuY3Rpb24odCxuLHIpe3JldHVybntjcml0ZXJpYTp5VnQoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUodCl9KSksaW5kZXg6KytpLHZhbHVlOnR9fSkpLChmdW5jdGlvbih0LGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9LTEscj10LmNyaXRlcmlhLG89ZS5jcml0ZXJpYSxhPXIubGVuZ3RoLHM9bi5sZW5ndGg7KytpPGE7KXt2YXIgbD1nVnQocltpXSxvW2ldKTtpZihsKXJldHVybiBpPj1zP2w6bCooImRlc2MiPT1uW2ldPy0xOjEpfXJldHVybiB0LmluZGV4LWUuaW5kZXh9KSh0LGUsbil9KSl9KSh0LEVWdChlLDEpLFtdKX0pKSxBVnQ9R1J0LGtWdD0wLExWdD1Ba3Q7dHJ5e3JIdD17Y2xvbmVEZWVwOmZ1bmN0aW9uIFBWdCh0KXtyZXR1cm4gYUh0KHQsNSl9LGNvbnN0YW50OmVJdCxkZWZhdWx0czp5SHQsZWFjaDpTSXQsZmlsdGVyOkZPdCxmaW5kOnpIdCxmbGF0dGVuOkZIdCxmb3JFYWNoOnhJdCxmb3JJbjpmdW5jdGlvbiBOVnQodCxlKXtyZXR1cm4gbnVsbD09dD90OlVIdCh0LGpIdChlKSxHSHQpfSxoYXM6cU90LGlzVW5kZWZpbmVkOml6dCxsYXN0OmZ1bmN0aW9uIElWdCh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOnZvaWQgMH0sbWFwOnB6dCxtYXBWYWx1ZXM6ZnVuY3Rpb24gUlZ0KHQsZSl7dmFyIG49e307cmV0dXJuIGU9WUh0KGUpLHFIdCh0LChmdW5jdGlvbih0LGkscil7V0h0KG4saSxlKHQsaSxyKSl9KSksbn0sbWF4OmZ1bmN0aW9uIE9WdCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/Wkh0KHQsdEZ0LEpIdCk6dm9pZCAwfSxtZXJnZTpERnQsbWluOmZ1bmN0aW9uIHpWdCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/VkZ0KHQsakZ0LFVGdCk6dm9pZCAwfSxtaW5CeTpmdW5jdGlvbiBEVnQodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/R0Z0KHQsV0Z0KGUpLHFGdCk6dm9pZCAwfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4gWUZ0LkRhdGUubm93KCl9LHBpY2s6c1Z0LHJhbmdlOnBWdCxyZWR1Y2U6d3p0LHNvcnRCeTpDVnQsdW5pcXVlSWQ6ZnVuY3Rpb24gQlZ0KHQpe3ZhciBlPSsra1Z0O3JldHVybiBBVnQodCkrZX0sdmFsdWVzOlhEdCx6aXBPYmplY3Q6ZnVuY3Rpb24gSFZ0KHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGkpe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGE9ZS5sZW5ndGgscz17fTsrK3I8bzspaShzLHRbcl0scjxhP2Vbcl06dm9pZCAwKTtyZXR1cm4gc30pKHR8fFtdLGV8fFtdLExWdCl9fX1jYXRjaCh0KXt9ckh0fHwockh0PXdpbmRvdy5fKTt2YXIgRlZ0PXJIdCxWVnQ9VVZ0O2Z1bmN0aW9uIFVWdCgpe3ZhciB0PXt9O3QuX25leHQ9dC5fcHJldj10LHRoaXMuX3NlbnRpbmVsPXR9ZnVuY3Rpb24galZ0KHQpe3QuX3ByZXYuX25leHQ9dC5fbmV4dCx0Ll9uZXh0Ll9wcmV2PXQuX3ByZXYsZGVsZXRlIHQuX25leHQsZGVsZXRlIHQuX3ByZXZ9ZnVuY3Rpb24gR1Z0KHQsZSl7aWYoIl9uZXh0IiE9PXQmJiJfcHJldiIhPT10KXJldHVybiBlfVVWdC5wcm90b3R5cGUuZGVxdWV1ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NlbnRpbmVsLGU9dC5fcHJldjtpZihlIT09dClyZXR1cm4galZ0KGUpLGV9LFVWdC5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zZW50aW5lbDt0Ll9wcmV2JiZ0Ll9uZXh0JiZqVnQodCksdC5fbmV4dD1lLl9uZXh0LGUuX25leHQuX3ByZXY9dCxlLl9uZXh0PXQsdC5fcHJldj1lfSxVVnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9dGhpcy5fc2VudGluZWwsbj1lLl9wcmV2O24hPT1lOyl0LnB1c2goSlNPTi5zdHJpbmdpZnkobixHVnQpKSxuPW4uX3ByZXY7cmV0dXJuIlsiK3Quam9pbigiLCAiKSsiXSJ9O3ZhciBXVnQ9RlZ0LHFWdD1vSHQuR3JhcGgsWVZ0PVZWdCxYVnQ9V1Z0LmNvbnN0YW50KDEpO2Z1bmN0aW9uICRWdCh0LGUsbixpLHIpe3ZhciBvPXI/W106dm9pZCAwO3JldHVybiBXVnQuZm9yRWFjaCh0LmluRWRnZXMoaS52KSwoZnVuY3Rpb24oaSl7dmFyIGE9dC5lZGdlKGkpLHM9dC5ub2RlKGkudik7ciYmby5wdXNoKHt2Omkudix3Omkud30pLHMub3V0LT1hLEtWdChlLG4scyl9KSksV1Z0LmZvckVhY2godC5vdXRFZGdlcyhpLnYpLChmdW5jdGlvbihpKXt2YXIgcj10LmVkZ2UoaSksbz10Lm5vZGUoaS53KTtvLmluLT1yLEtWdChlLG4sbyl9KSksdC5yZW1vdmVOb2RlKGkudiksb31mdW5jdGlvbiBLVnQodCxlLG4pe24ub3V0P24uaW4/dFtuLm91dC1uLmluK2VdLmVucXVldWUobik6dFt0Lmxlbmd0aC0xXS5lbnF1ZXVlKG4pOnRbMF0uZW5xdWV1ZShuKX12YXIgWlZ0PUZWdCxKVnQ9e3J1bjpmdW5jdGlvbiBRVnQodCl7dmFyIGU9ImdyZWVkeSI9PT10LmdyYXBoKCkuYWN5Y2xpY2VyPyhmdW5jdGlvbiBpKHQsZSl7aWYodC5ub2RlQ291bnQoKTw9MSlyZXR1cm5bXTt2YXIgbj0oZnVuY3Rpb24gaSh0LGUpe3ZhciBuPW5ldyBxVnQsaT0wLHI9MDtXVnQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe24uc2V0Tm9kZSh0LHt2OnQsaW46MCxvdXQ6MH0pfSkpLFdWdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG89bi5lZGdlKHQudix0LncpfHwwLGE9ZSh0KTtuLnNldEVkZ2UodC52LHQudyxvK2EpLHI9TWF0aC5tYXgocixuLm5vZGUodC52KS5vdXQrPWEpLGk9TWF0aC5tYXgoaSxuLm5vZGUodC53KS5pbis9YSl9KSk7dmFyIG89V1Z0LnJhbmdlKHIraSszKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBZVnR9KSksYT1pKzE7cmV0dXJuIFdWdC5mb3JFYWNoKG4ubm9kZXMoKSwoZnVuY3Rpb24odCl7S1Z0KG8sYSxuLm5vZGUodCkpfSkpLHtncmFwaDpuLGJ1Y2tldHM6byx6ZXJvSWR4OmF9fSkodCxlfHxYVnQpLHI9KGZ1bmN0aW9uIG8odCxlLG4pe2Zvcih2YXIgaSxyPVtdLG89ZVtlLmxlbmd0aC0xXSxhPWVbMF07dC5ub2RlQ291bnQoKTspe2Zvcig7aT1hLmRlcXVldWUoKTspJFZ0KHQsZSxuLGkpO2Zvcig7aT1vLmRlcXVldWUoKTspJFZ0KHQsZSxuLGkpO2lmKHQubm9kZUNvdW50KCkpZm9yKHZhciBzPWUubGVuZ3RoLTI7cz4wOy0tcylpZihpPWVbc10uZGVxdWV1ZSgpKXtyPXIuY29uY2F0KCRWdCh0LGUsbixpLCEwKSk7YnJlYWt9fXJldHVybiByfSkobi5ncmFwaCxuLmJ1Y2tldHMsbi56ZXJvSWR4KTtyZXR1cm4gV1Z0LmZsYXR0ZW4oV1Z0Lm1hcChyLChmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlLnYsZS53KX0pKSwhMCl9KSh0LChmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5lZGdlKGUpLndlaWdodH19KSh0KSk6KGZ1bmN0aW9uIHIodCl7dmFyIGU9W10sbj17fSxpPXt9O3JldHVybiBaVnQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uIHIobyl7WlZ0LmhhcyhpLG8pfHwoaVtvXT0hMCxuW29dPSEwLFpWdC5mb3JFYWNoKHQub3V0RWRnZXMobyksKGZ1bmN0aW9uKHQpe1pWdC5oYXMobix0LncpP2UucHVzaCh0KTpyKHQudyl9KSksZGVsZXRlIG5bb10pfSkpLGV9KSh0KTtaVnQuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7dC5yZW1vdmVFZGdlKGUpLG4uZm9yd2FyZE5hbWU9ZS5uYW1lLG4ucmV2ZXJzZWQ9ITAsdC5zZXRFZGdlKGUudyxlLnYsbixaVnQudW5pcXVlSWQoInJldiIpKX0pKX0sdW5kbzpmdW5jdGlvbiB0VXQodCl7WlZ0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt2YXIgbj10LmVkZ2UoZSk7aWYobi5yZXZlcnNlZCl7dC5yZW1vdmVFZGdlKGUpO3ZhciBpPW4uZm9yd2FyZE5hbWU7ZGVsZXRlIG4ucmV2ZXJzZWQsZGVsZXRlIG4uZm9yd2FyZE5hbWUsdC5zZXRFZGdlKGUudyxlLnYsbixpKX19KSl9fSxlVXQ9RlZ0LG5VdD1vSHQuR3JhcGgsaVV0PXthZGREdW1teU5vZGU6Z1V0LHNpbXBsaWZ5OmZ1bmN0aW9uIHJVdCh0KXt2YXIgZT0obmV3IG5VdCkuc2V0R3JhcGgodC5ncmFwaCgpKTtyZXR1cm4gZVV0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXtlLnNldE5vZGUobix0Lm5vZGUobikpfSkpLGVVdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9ZS5lZGdlKG4udixuLncpfHx7d2VpZ2h0OjAsbWlubGVuOjF9LHI9dC5lZGdlKG4pO2Uuc2V0RWRnZShuLnYsbi53LHt3ZWlnaHQ6aS53ZWlnaHQrci53ZWlnaHQsbWlubGVuOk1hdGgubWF4KGkubWlubGVuLHIubWlubGVuKX0pfSkpLGV9LGFzTm9uQ29tcG91bmRHcmFwaDpmdW5jdGlvbiBvVXQodCl7dmFyIGU9bmV3IG5VdCh7bXVsdGlncmFwaDp0LmlzTXVsdGlncmFwaCgpfSkuc2V0R3JhcGgodC5ncmFwaCgpKTtyZXR1cm4gZVV0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt0LmNoaWxkcmVuKG4pLmxlbmd0aHx8ZS5zZXROb2RlKG4sdC5ub2RlKG4pKX0pKSxlVXQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2Uuc2V0RWRnZShuLHQuZWRnZShuKSl9KSksZX0sc3VjY2Vzc29yV2VpZ2h0czpmdW5jdGlvbiBhVXQodCl7dmFyIGU9ZVV0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXt9O3JldHVybiBlVXQuZm9yRWFjaCh0Lm91dEVkZ2VzKGUpLChmdW5jdGlvbihlKXtuW2Uud109KG5bZS53XXx8MCkrdC5lZGdlKGUpLndlaWdodH0pKSxufSkpO3JldHVybiBlVXQuemlwT2JqZWN0KHQubm9kZXMoKSxlKX0scHJlZGVjZXNzb3JXZWlnaHRzOmZ1bmN0aW9uIHNVdCh0KXt2YXIgZT1lVXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49e307cmV0dXJuIGVVdC5mb3JFYWNoKHQuaW5FZGdlcyhlKSwoZnVuY3Rpb24oZSl7bltlLnZdPShuW2Uudl18fDApK3QuZWRnZShlKS53ZWlnaHR9KSksbn0pKTtyZXR1cm4gZVV0LnppcE9iamVjdCh0Lm5vZGVzKCksZSl9LGludGVyc2VjdFJlY3Q6ZnVuY3Rpb24gbFV0KHQsZSl7dmFyIG4saSxyPXQueCxvPXQueSxhPWUueC1yLHM9ZS55LW8sbD10LndpZHRoLzIsYz10LmhlaWdodC8yO2lmKCFhJiYhcyl0aHJvdyBuZXcgRXJyb3IoIk5vdCBwb3NzaWJsZSB0byBmaW5kIGludGVyc2VjdGlvbiBpbnNpZGUgb2YgdGhlIHJlY3RhbmdsZSIpO3JldHVybiBNYXRoLmFicyhzKSpsPk1hdGguYWJzKGEpKmM/KHM8MCYmKGM9LWMpLG49YyphL3MsaT1jKTooYTwwJiYobD0tbCksbj1sLGk9bCpzL2EpLHt4OnIrbix5Om8raX19LGJ1aWxkTGF5ZXJNYXRyaXg6ZnVuY3Rpb24gY1V0KHQpe3ZhciBlPWVVdC5tYXAoZVV0LnJhbmdlKF9VdCh0KSsxKSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pKTtyZXR1cm4gZVV0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT10Lm5vZGUobikscj1pLnJhbms7ZVV0LmlzVW5kZWZpbmVkKHIpfHwoZVtyXVtpLm9yZGVyXT1uKX0pKSxlfSxub3JtYWxpemVSYW5rczpmdW5jdGlvbiB1VXQodCl7dmFyIGU9ZVV0Lm1pbihlVXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKTtlVXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKTtlVXQuaGFzKGksInJhbmsiKSYmKGkucmFuay09ZSl9KSl9LHJlbW92ZUVtcHR5UmFua3M6ZnVuY3Rpb24gaFV0KHQpe3ZhciBlPWVVdC5taW4oZVV0Lm1hcCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSksbj1bXTtlVXQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGkpe3ZhciByPXQubm9kZShpKS5yYW5rLWU7bltyXXx8KG5bcl09W10pLG5bcl0ucHVzaChpKX0pKTt2YXIgaT0wLHI9dC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yO2VVdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUsbil7ZVV0LmlzVW5kZWZpbmVkKGUpJiZuJXIhPTA/LS1pOmkmJmVVdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS5yYW5rKz1pfSkpfSkpfSxhZGRCb3JkZXJOb2RlOmZ1bmN0aW9uIGRVdCh0LGUsbixpKXt2YXIgcj17d2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTQmJihyLnJhbms9bixyLm9yZGVyPWkpLGdVdCh0LCJib3JkZXIiLHIsZSl9LG1heFJhbms6X1V0LHBhcnRpdGlvbjpmdW5jdGlvbiBwVXQodCxlKXt2YXIgbj17bGhzOltdLHJoczpbXX07cmV0dXJuIGVVdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe2UodCk/bi5saHMucHVzaCh0KTpuLnJocy5wdXNoKHQpfSkpLG59LHRpbWU6ZnVuY3Rpb24gZlV0KHQsZSl7dmFyIG49ZVV0Lm5vdygpO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7Y29uc29sZS5sb2codCsiIHRpbWU6ICIrKGVVdC5ub3coKS1uKSsibXMiKX19LG5vdGltZTpmdW5jdGlvbiBtVXQodCxlKXtyZXR1cm4gZSgpfX07ZnVuY3Rpb24gZ1V0KHQsZSxuLGkpe3ZhciByO2Rve3I9ZVV0LnVuaXF1ZUlkKGkpfXdoaWxlKHQuaGFzTm9kZShyKSk7cmV0dXJuIG4uZHVtbXk9ZSx0LnNldE5vZGUocixuKSxyfWZ1bmN0aW9uIF9VdCh0KXtyZXR1cm4gZVV0Lm1heChlVXQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLnJhbms7aWYoIWVVdC5pc1VuZGVmaW5lZChuKSlyZXR1cm4gbn0pKSl9dmFyIHlVdD1GVnQsdlV0PWlVdCxiVXQ9e3J1bjpmdW5jdGlvbiB4VXQodCl7dC5ncmFwaCgpLmR1bW15Q2hhaW5zPVtdLHlVdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7IShmdW5jdGlvbiBuKHQsZSl7dmFyIG4saSxyLG89ZS52LGE9dC5ub2RlKG8pLnJhbmsscz1lLncsbD10Lm5vZGUocykucmFuayxjPWUubmFtZSx1PXQuZWRnZShlKSxoPXUubGFiZWxSYW5rO2lmKGwhPT1hKzEpe2Zvcih0LnJlbW92ZUVkZ2UoZSkscj0wLCsrYTthPGw7KytyLCsrYSl1LnBvaW50cz1bXSxuPXZVdC5hZGREdW1teU5vZGUodCwiZWRnZSIsaT17d2lkdGg6MCxoZWlnaHQ6MCxlZGdlTGFiZWw6dSxlZGdlT2JqOmUscmFuazphfSwiX2QiKSxhPT09aCYmKGkud2lkdGg9dS53aWR0aCxpLmhlaWdodD11LmhlaWdodCxpLmR1bW15PSJlZGdlLWxhYmVsIixpLmxhYmVscG9zPXUubGFiZWxwb3MpLHQuc2V0RWRnZShvLG4se3dlaWdodDp1LndlaWdodH0sYyksMD09PXImJnQuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKG4pLG89bjt0LnNldEVkZ2UobyxzLHt3ZWlnaHQ6dS53ZWlnaHR9LGMpfX0pKHQsZSl9KSl9LHVuZG86ZnVuY3Rpb24gd1V0KHQpe3lVdC5mb3JFYWNoKHQuZ3JhcGgoKS5kdW1teUNoYWlucywoZnVuY3Rpb24oZSl7dmFyIG4saT10Lm5vZGUoZSkscj1pLmVkZ2VMYWJlbDtmb3IodC5zZXRFZGdlKGkuZWRnZU9iaixyKTtpLmR1bW15OyluPXQuc3VjY2Vzc29ycyhlKVswXSx0LnJlbW92ZU5vZGUoZSksci5wb2ludHMucHVzaCh7eDppLngseTppLnl9KSwiZWRnZS1sYWJlbCI9PT1pLmR1bW15JiYoci54PWkueCxyLnk9aS55LHIud2lkdGg9aS53aWR0aCxyLmhlaWdodD1pLmhlaWdodCksaT10Lm5vZGUoZT1uKX0pKX19LFNVdD1GVnQsTVV0PWZ1bmN0aW9uIEVVdCh0KXt2YXIgZT17fTtTVXQuZm9yRWFjaCh0LnNvdXJjZXMoKSwoZnVuY3Rpb24gbihpKXt2YXIgcj10Lm5vZGUoaSk7aWYoU1V0LmhhcyhlLGkpKXJldHVybiByLnJhbms7ZVtpXT0hMDt2YXIgbz1TVXQubWluKFNVdC5tYXAodC5vdXRFZGdlcyhpKSwoZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS53KS10LmVkZ2UoZSkubWlubGVufSkpKTtyZXR1cm4gbyE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmbnVsbCE9b3x8KG89MCksci5yYW5rPW99KSl9LFRVdD1mdW5jdGlvbiBDVXQodCxlKXtyZXR1cm4gdC5ub2RlKGUudykucmFuay10Lm5vZGUoZS52KS5yYW5rLXQuZWRnZShlKS5taW5sZW59LEFVdD1GVnQsa1V0PW9IdC5HcmFwaCxMVXQ9VFV0LFBVdD1mdW5jdGlvbiBOVXQodCl7dmFyIGUsbixpPW5ldyBrVXQoe2RpcmVjdGVkOiExfSkscj10Lm5vZGVzKClbMF0sbz10Lm5vZGVDb3VudCgpO2ZvcihpLnNldE5vZGUocix7fSk7SVV0KGksdCk8bzspZT1SVXQoaSx0KSxuPWkuaGFzTm9kZShlLnYpP0xVdCh0LGUpOi1MVXQodCxlKSxPVXQoaSx0LG4pO3JldHVybiBpfTtmdW5jdGlvbiBJVXQodCxlKXtyZXR1cm4gQVV0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbiBuKGkpe0FVdC5mb3JFYWNoKGUubm9kZUVkZ2VzKGkpLChmdW5jdGlvbihyKXt2YXIgbz1yLnYsYT1pPT09bz9yLnc6bzt0Lmhhc05vZGUoYSl8fExVdChlLHIpfHwodC5zZXROb2RlKGEse30pLHQuc2V0RWRnZShpLGEse30pLG4oYSkpfSkpfSkpLHQubm9kZUNvdW50KCl9ZnVuY3Rpb24gUlV0KHQsZSl7cmV0dXJuIEFVdC5taW5CeShlLmVkZ2VzKCksKGZ1bmN0aW9uKG4pe2lmKHQuaGFzTm9kZShuLnYpIT09dC5oYXNOb2RlKG4udykpcmV0dXJuIExVdChlLG4pfSkpfWZ1bmN0aW9uIE9VdCh0LGUsbil7QVV0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbih0KXtlLm5vZGUodCkucmFuays9bn0pKX12YXIgelV0PUZWdCxEVXQ9UFV0LEJVdD1UVXQsSFV0PU1VdCxGVXQ9b0h0LmFsZy5wcmVvcmRlcixWVXQ9b0h0LmFsZy5wb3N0b3JkZXIsVVV0PWlVdC5zaW1wbGlmeSxqVXQ9R1V0O2Z1bmN0aW9uIEdVdCh0KXt0PVVVdCh0KSxIVXQodCk7dmFyIGUsbj1EVXQodCk7Zm9yKFlVdChuKSxXVXQobix0KTtlPSRVdChuKTspWlV0KG4sdCxlLEtVdChuLHQsZSkpfWZ1bmN0aW9uIFdVdCh0LGUpe3ZhciBuPVZVdCh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSkselV0LmZvckVhY2gobiwoZnVuY3Rpb24obil7IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT10Lm5vZGUobik7dC5lZGdlKG4saS5wYXJlbnQpLmN1dHZhbHVlPXFVdCh0LGUsbil9KSh0LGUsbil9KSl9ZnVuY3Rpb24gcVV0KHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LHI9ITAsbz1lLmVkZ2UobixpKSxhPTA7cmV0dXJuIG98fChyPSExLG89ZS5lZGdlKGksbikpLGE9by53ZWlnaHQselV0LmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKG8pe3ZhciBzPW8udj09PW4sbD1zP28udzpvLnY7aWYobCE9PWkpe3ZhciBjPXM9PT1yLHU9ZS5lZGdlKG8pLndlaWdodDtpZihhKz1jP3U6LXUsKGZ1bmN0aW9uIGgodCxlLG4pe3JldHVybiB0Lmhhc0VkZ2UoZSxuKX0pKHQsbixsKSl7dmFyIGQ9dC5lZGdlKG4sbCkuY3V0dmFsdWU7YSs9Yz8tZDpkfX19KSksYX1mdW5jdGlvbiBZVXQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSksWFV0KHQse30sMSxlKX1mdW5jdGlvbiBYVXQodCxlLG4saSxyKXt2YXIgbz1uLGE9dC5ub2RlKGkpO3JldHVybiBlW2ldPSEwLHpVdC5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihyKXt6VXQuaGFzKGUscil8fChuPVhVdCh0LGUsbixyLGkpKX0pKSxhLmxvdz1vLGEubGltPW4rKyxyP2EucGFyZW50PXI6ZGVsZXRlIGEucGFyZW50LG59ZnVuY3Rpb24gJFV0KHQpe3JldHVybiB6VXQuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBLVXQodCxlLG4pe3ZhciBpPW4udixyPW4udztlLmhhc0VkZ2UoaSxyKXx8KGk9bi53LHI9bi52KTt2YXIgbz10Lm5vZGUoaSksYT10Lm5vZGUocikscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9elV0LmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09SlV0KDAsdC5ub2RlKGUudikscykmJmwhPT1KVXQoMCx0Lm5vZGUoZS53KSxzKX0pKTtyZXR1cm4gelV0Lm1pbkJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBCVXQoZSx0KX0pKX1mdW5jdGlvbiBaVXQodCxlLG4saSl7dC5yZW1vdmVFZGdlKG4udixuLncpLHQuc2V0RWRnZShpLnYsaS53LHt9KSxZVXQodCksV1V0KHQsZSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj16VXQuZmluZCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe3JldHVybiFlLm5vZGUodCkucGFyZW50fSkpLGk9RlV0KHQsbik7aT1pLnNsaWNlKDEpLHpVdC5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQscj1lLmVkZ2UobixpKSxvPSExO3J8fChyPWUuZWRnZShpLG4pLG89ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShpKS5yYW5rKyhvP3IubWlubGVuOi1yLm1pbmxlbil9KSl9KSh0LGUpfWZ1bmN0aW9uIEpVdCh0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfUdVdC5pbml0TG93TGltVmFsdWVzPVlVdCxHVXQuaW5pdEN1dFZhbHVlcz1XVXQsR1V0LmNhbGNDdXRWYWx1ZT1xVXQsR1V0LmxlYXZlRWRnZT0kVXQsR1V0LmVudGVyRWRnZT1LVXQsR1V0LmV4Y2hhbmdlRWRnZXM9WlV0O3ZhciBRVXQ9TVV0LHRqdD1QVXQsZWp0PWpVdCxuanQ9UVV0O2Z1bmN0aW9uIGlqdCh0KXtlanQodCl9dmFyIHJqdD1GVnQsb2p0PUZWdCxhanQ9aVV0O2Z1bmN0aW9uIHNqdCh0LGUsbixpLHIsbyxhKXt2YXIgcz10LmNoaWxkcmVuKGEpO2lmKHMubGVuZ3RoKXt2YXIgbD1hanQuYWRkQm9yZGVyTm9kZSh0LCJfYnQiKSxjPWFqdC5hZGRCb3JkZXJOb2RlKHQsIl9iYiIpLHU9dC5ub2RlKGEpO3Quc2V0UGFyZW50KGwsYSksdS5ib3JkZXJUb3A9bCx0LnNldFBhcmVudChjLGEpLHUuYm9yZGVyQm90dG9tPWMsb2p0LmZvckVhY2gocywoZnVuY3Rpb24ocyl7c2p0KHQsZSxuLGkscixvLHMpO3ZhciB1PXQubm9kZShzKSxoPXUuYm9yZGVyVG9wP3UuYm9yZGVyVG9wOnMsZD11LmJvcmRlckJvdHRvbT91LmJvcmRlckJvdHRvbTpzLHA9dS5ib3JkZXJUb3A/aToyKmksZj1oIT09ZD8xOnItb1thXSsxO3Quc2V0RWRnZShsLGgse3dlaWdodDpwLG1pbmxlbjpmLG5lc3RpbmdFZGdlOiEwfSksdC5zZXRFZGdlKGQsYyx7d2VpZ2h0OnAsbWlubGVuOmYsbmVzdGluZ0VkZ2U6ITB9KX0pKSx0LnBhcmVudChhKXx8dC5zZXRFZGdlKGUsbCx7d2VpZ2h0OjAsbWlubGVuOnIrb1thXX0pfWVsc2UgYSE9PWUmJnQuc2V0RWRnZShlLGEse3dlaWdodDowLG1pbmxlbjpufSl9dmFyIGxqdD1GVnQsY2p0PWlVdDtmdW5jdGlvbiB1anQodCxlLG4saSxyLG8pe3ZhciBhPXJbZV1bby0xXSxzPWNqdC5hZGREdW1teU5vZGUodCwiYm9yZGVyIix7d2lkdGg6MCxoZWlnaHQ6MCxyYW5rOm8sYm9yZGVyVHlwZTplfSxuKTtyW2VdW29dPXMsdC5zZXRQYXJlbnQocyxpKSxhJiZ0LnNldEVkZ2UoYSxzLHt3ZWlnaHQ6MX0pfXZhciBoanQ9RlZ0O2Z1bmN0aW9uIGRqdCh0KXtoanQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe3BqdCh0Lm5vZGUoZSkpfSkpLGhqdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7cGp0KHQuZWRnZShlKSl9KSl9ZnVuY3Rpb24gcGp0KHQpe3ZhciBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodCx0LmhlaWdodD1lfWZ1bmN0aW9uIGZqdCh0KXt0Lnk9LXQueX1mdW5jdGlvbiBtanQodCl7dmFyIGU9dC54O3QueD10LnksdC55PWV9dmFyIGdqdD1GVnQsX2p0PUZWdDtmdW5jdGlvbiB5anQodCxlLG4pe2Zvcih2YXIgaT1fanQuemlwT2JqZWN0KG4sX2p0Lm1hcChuLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSkpKSxyPV9qdC5mbGF0dGVuKF9qdC5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIF9qdC5zb3J0QnkoX2p0Lm1hcCh0Lm91dEVkZ2VzKGUpLChmdW5jdGlvbihlKXtyZXR1cm57cG9zOmlbZS53XSx3ZWlnaHQ6dC5lZGdlKGUpLndlaWdodH19KSksInBvcyIpfSkpLCEwKSxvPTE7bzxuLmxlbmd0aDspbzw8PTE7dmFyIGE9MipvLTE7by09MTt2YXIgcz1fanQubWFwKG5ldyBBcnJheShhKSwoZnVuY3Rpb24oKXtyZXR1cm4gMH0pKSxsPTA7cmV0dXJuIF9qdC5mb3JFYWNoKHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5wb3MrbztzW2VdKz10LndlaWdodDtmb3IodmFyIG49MDtlPjA7KWUlMiYmKG4rPXNbZSsxXSksc1tlPWUtMT4+MV0rPXQud2VpZ2h0O2wrPXQud2VpZ2h0Km59KSkpLGx9dmFyIHZqdD1GVnQsYmp0PUZWdCx4anQ9RlZ0LHdqdD1pVXQ7ZnVuY3Rpb24gU2p0KHQsZSxuKXtmb3IodmFyIGk7ZS5sZW5ndGgmJihpPXhqdC5sYXN0KGUpKS5pPD1uOyllLnBvcCgpLHQucHVzaChpLnZzKSxuKys7cmV0dXJuIG59dmFyIE1qdD1GVnQsRWp0PUZWdCxUanQ9b0h0LkdyYXBoLENqdD1GVnQsQWp0PUZWdCxranQ9ZnVuY3Rpb24gTGp0KHQsZSl7Zm9yKHZhciBuPTAsaT0xO2k8ZS5sZW5ndGg7KytpKW4rPXlqdCh0LGVbaS0xXSxlW2ldKTtyZXR1cm4gbn0sUGp0PWZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89ZS5jaGlsZHJlbihuKSxhPWUubm9kZShuKSxzPWE/YS5ib3JkZXJMZWZ0OnZvaWQgMCxsPWE/YS5ib3JkZXJSaWdodDp2b2lkIDAsYz17fTtzJiYobz1NanQuZmlsdGVyKG8sKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09cyYmdCE9PWx9KSkpO3ZhciB1PShmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIHZqdC5tYXAoZSwoZnVuY3Rpb24oZSl7dmFyIG49dC5pbkVkZ2VzKGUpO2lmKG4ubGVuZ3RoKXt2YXIgaT12anQucmVkdWNlKG4sKGZ1bmN0aW9uKGUsbil7dmFyIGk9dC5lZGdlKG4pLHI9dC5ub2RlKG4udik7cmV0dXJue3N1bTplLnN1bStpLndlaWdodCpyLm9yZGVyLHdlaWdodDplLndlaWdodCtpLndlaWdodH19KSx7c3VtOjAsd2VpZ2h0OjB9KTtyZXR1cm57djplLGJhcnljZW50ZXI6aS5zdW0vaS53ZWlnaHQsd2VpZ2h0Omkud2VpZ2h0fX1yZXR1cm57djplfX0pKX0pKGUsbyk7TWp0LmZvckVhY2godSwoZnVuY3Rpb24obil7aWYoZS5jaGlsZHJlbihuLnYpLmxlbmd0aCl7dmFyIG89dChlLG4udixpLHIpO2Nbbi52XT1vLE1qdC5oYXMobywiYmFyeWNlbnRlciIpJiYoZnVuY3Rpb24gYSh0LGUpe01qdC5pc1VuZGVmaW5lZCh0LmJhcnljZW50ZXIpPyh0LmJhcnljZW50ZXI9ZS5iYXJ5Y2VudGVyLHQud2VpZ2h0PWUud2VpZ2h0KToodC5iYXJ5Y2VudGVyPSh0LmJhcnljZW50ZXIqdC53ZWlnaHQrZS5iYXJ5Y2VudGVyKmUud2VpZ2h0KS8odC53ZWlnaHQrZS53ZWlnaHQpLHQud2VpZ2h0Kz1lLndlaWdodCl9KShuLG8pfX0pKTt2YXIgZD0oZnVuY3Rpb24gcCh0LGUpe3ZhciBuPXt9O3JldHVybiBianQuZm9yRWFjaCh0LChmdW5jdGlvbih0LGUpe3ZhciBpPW5bdC52XT17aW5kZWdyZWU6MCxpbjpbXSxvdXQ6W10sdnM6W3Qudl0saTplfTtianQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKXx8KGkuYmFyeWNlbnRlcj10LmJhcnljZW50ZXIsaS53ZWlnaHQ9dC53ZWlnaHQpfSkpLGJqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGU9blt0LnZdLGk9blt0LnddO2JqdC5pc1VuZGVmaW5lZChlKXx8Ymp0LmlzVW5kZWZpbmVkKGkpfHwoaS5pbmRlZ3JlZSsrLGUub3V0LnB1c2goblt0LnddKSl9KSksKGZ1bmN0aW9uIGkodCl7dmFyIGU9W107ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5tZXJnZWR8fChianQuaXNVbmRlZmluZWQoZS5iYXJ5Y2VudGVyKXx8Ymp0LmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fGUuYmFyeWNlbnRlcj49dC5iYXJ5Y2VudGVyKSYmKGZ1bmN0aW9uIG4odCxlKXt2YXIgbj0wLGk9MDt0LndlaWdodCYmKG4rPXQuYmFyeWNlbnRlcip0LndlaWdodCxpKz10LndlaWdodCksZS53ZWlnaHQmJihuKz1lLmJhcnljZW50ZXIqZS53ZWlnaHQsaSs9ZS53ZWlnaHQpLHQudnM9ZS52cy5jb25jYXQodC52cyksdC5iYXJ5Y2VudGVyPW4vaSx0LndlaWdodD1pLHQuaT1NYXRoLm1pbihlLmksdC5pKSxlLm1lcmdlZD0hMH0pKHQsZSl9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uaW4ucHVzaChlKSwwPT0tLW4uaW5kZWdyZWUmJnQucHVzaChuKX19Zm9yKDt0Lmxlbmd0aDspe3ZhciByPXQucG9wKCk7ZS5wdXNoKHIpLGJqdC5mb3JFYWNoKHIuaW4ucmV2ZXJzZSgpLG4ocikpLGJqdC5mb3JFYWNoKHIub3V0LGkocikpfXJldHVybiBianQubWFwKGJqdC5maWx0ZXIoZSwoZnVuY3Rpb24odCl7cmV0dXJuIXQubWVyZ2VkfSkpLChmdW5jdGlvbih0KXtyZXR1cm4gYmp0LnBpY2sodCxbInZzIiwiaSIsImJhcnljZW50ZXIiLCJ3ZWlnaHQiXSl9KSl9KShianQuZmlsdGVyKG4sKGZ1bmN0aW9uKHQpe3JldHVybiF0LmluZGVncmVlfSkpKX0pKHUsaSk7IShmdW5jdGlvbiBmKHQsZSl7TWp0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dC52cz1NanQuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0pKGQsYyk7dmFyIG09KGZ1bmN0aW9uIGcodCxlKXt2YXIgbj13anQucGFydGl0aW9uKHQsKGZ1bmN0aW9uKHQpe3JldHVybiB4anQuaGFzKHQsImJhcnljZW50ZXIiKX0pKSxpPW4ubGhzLHI9eGp0LnNvcnRCeShuLnJocywoZnVuY3Rpb24odCl7cmV0dXJuLXQuaX0pKSxvPVtdLGE9MCxzPTAsbD0wO2kuc29ydCgoZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5iYXJ5Y2VudGVyPG4uYmFyeWNlbnRlcj8tMTplLmJhcnljZW50ZXI+bi5iYXJ5Y2VudGVyPzE6dD9uLmktZS5pOmUuaS1uLml9fSkoISFlKSksbD1TanQobyxyLGwpLHhqdC5mb3JFYWNoKGksKGZ1bmN0aW9uKHQpe2wrPXQudnMubGVuZ3RoLG8ucHVzaCh0LnZzKSxhKz10LmJhcnljZW50ZXIqdC53ZWlnaHQscys9dC53ZWlnaHQsbD1TanQobyxyLGwpfSkpO3ZhciB1PXt2czp4anQuZmxhdHRlbihvLCEwKX07cmV0dXJuIHMmJih1LmJhcnljZW50ZXI9YS9zLHUud2VpZ2h0PXMpLHV9KShkLHIpO2lmKHMmJihtLnZzPU1qdC5mbGF0dGVuKFtzLG0udnMsbF0sITApLGUucHJlZGVjZXNzb3JzKHMpLmxlbmd0aCkpe3ZhciBfPWUubm9kZShlLnByZWRlY2Vzc29ycyhzKVswXSkseT1lLm5vZGUoZS5wcmVkZWNlc3NvcnMobClbMF0pO01qdC5oYXMobSwiYmFyeWNlbnRlciIpfHwobS5iYXJ5Y2VudGVyPTAsbS53ZWlnaHQ9MCksbS5iYXJ5Y2VudGVyPShtLmJhcnljZW50ZXIqbS53ZWlnaHQrXy5vcmRlcit5Lm9yZGVyKS8obS53ZWlnaHQrMiksbS53ZWlnaHQrPTJ9cmV0dXJuIG19LE5qdD1vSHQuR3JhcGgsSWp0PWlVdDtmdW5jdGlvbiBSanQodCxlLG4pe3JldHVybiBBanQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT0oZnVuY3Rpb24gcih0KXtmb3IodmFyIGU7dC5oYXNOb2RlKGU9RWp0LnVuaXF1ZUlkKCJfcm9vdCIpKTspO3JldHVybiBlfSkodCksbz1uZXcgVGp0KHtjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyb290Oml9KS5zZXREZWZhdWx0Tm9kZUxhYmVsKChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpfSkpO3JldHVybiBFanQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHIpe3ZhciBhPXQubm9kZShyKSxzPXQucGFyZW50KHIpOyhhLnJhbms9PT1lfHxhLm1pblJhbms8PWUmJmU8PWEubWF4UmFuaykmJihvLnNldE5vZGUociksby5zZXRQYXJlbnQocixzfHxpKSxFanQuZm9yRWFjaCh0W25dKHIpLChmdW5jdGlvbihlKXt2YXIgbj1lLnY9PT1yP2UudzplLnYsaT1vLmVkZ2UobixyKSxhPUVqdC5pc1VuZGVmaW5lZChpKT8wOmkud2VpZ2h0O28uc2V0RWRnZShuLHIse3dlaWdodDp0LmVkZ2UoZSkud2VpZ2h0K2F9KX0pKSxFanQuaGFzKGEsIm1pblJhbmsiKSYmby5zZXROb2RlKHIse2JvcmRlckxlZnQ6YS5ib3JkZXJMZWZ0W2VdLGJvcmRlclJpZ2h0OmEuYm9yZGVyUmlnaHRbZV19KSl9KSksb30pKHQsZSxuKX0pKX1mdW5jdGlvbiBPanQodCxlKXt2YXIgbj1uZXcgTmp0O0FqdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe3ZhciBpPXQuZ3JhcGgoKS5yb290LHI9UGp0KHQsaSxuLGUpO0FqdC5mb3JFYWNoKHIudnMsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSksKGZ1bmN0aW9uIG8odCxlLG4pe3ZhciBpLHI9e307Q2p0LmZvckVhY2gobiwoZnVuY3Rpb24obil7Zm9yKHZhciBvLGEscz10LnBhcmVudChuKTtzOyl7aWYoKG89dC5wYXJlbnQocykpPyhhPXJbb10scltvXT1zKTooYT1pLGk9cyksYSYmYSE9PXMpcmV0dXJuIHZvaWQgZS5zZXRFZGdlKGEscyk7cz1vfX0pKX0pKHQsbixyLnZzKX0pKX1mdW5jdGlvbiB6anQodCxlKXtBanQuZm9yRWFjaChlLChmdW5jdGlvbihlKXtBanQuZm9yRWFjaChlLChmdW5jdGlvbihlLG4pe3Qubm9kZShlKS5vcmRlcj1ufSkpfSkpfXZhciBEanQ9RlZ0LEJqdD1vSHQuR3JhcGgsSGp0PWlVdDtmdW5jdGlvbiBGanQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXZhciByPXRbZV07cnx8KHRbZV09cj17fSkscltuXT0hMH1mdW5jdGlvbiBWanQodCxlLG4pe2lmKGU+bil7dmFyIGk9ZTtlPW4sbj1pfXJldHVybiBEanQuaGFzKHRbZV0sbil9dmFyIFVqdD1GVnQsamp0PWlVdCxHanQ9RlZ0LFdqdD1KVnQscWp0PWJVdCxZanQ9aVV0Lm5vcm1hbGl6ZVJhbmtzLFhqdD1pVXQucmVtb3ZlRW1wdHlSYW5rcywkanQ9ZnVuY3Rpb24gS2p0KHQpe3ZhciBlPWFqdC5hZGREdW1teU5vZGUodCwicm9vdCIse30sIl9yb290Iiksbj0oZnVuY3Rpb24gaSh0KXt2YXIgZT17fTtmdW5jdGlvbiBuKGkscil7dmFyIG89dC5jaGlsZHJlbihpKTtvJiZvLmxlbmd0aCYmb2p0LmZvckVhY2gobywoZnVuY3Rpb24odCl7bih0LHIrMSl9KSksZVtpXT1yfXJldHVybiBvanQuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uKHQpe24odCwxKX0pKSxlfSkodCkscj1vanQubWF4KG9qdC52YWx1ZXMobikpLTEsbz0yKnIrMTt0LmdyYXBoKCkubmVzdGluZ1Jvb3Q9ZSxvanQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3QuZWRnZShlKS5taW5sZW4qPW99KSk7dmFyIGE9KGZ1bmN0aW9uIHModCl7cmV0dXJuIG9qdC5yZWR1Y2UodC5lZGdlcygpLChmdW5jdGlvbihlLG4pe3JldHVybiBlK3QuZWRnZShuKS53ZWlnaHR9KSwwKX0pKHQpKzE7b2p0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbihpKXtzanQodCxlLG8sYSxyLG4saSl9KSksdC5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yPW99LFpqdD1pVXQsSmp0PW9IdC5HcmFwaCxRanQ9WyJub2Rlc2VwIiwiZWRnZXNlcCIsInJhbmtzZXAiLCJtYXJnaW54IiwibWFyZ2lueSJdLHRHdD17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxlR3Q9WyJhY3ljbGljZXIiLCJyYW5rZXIiLCJyYW5rZGlyIiwiYWxpZ24iXSxuR3Q9WyJ3aWR0aCIsImhlaWdodCJdLGlHdD17d2lkdGg6MCxoZWlnaHQ6MH0sckd0PVsibWlubGVuIiwid2VpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbG9mZnNldCJdLG9HdD17bWlubGVuOjEsd2VpZ2h0OjEsd2lkdGg6MCxoZWlnaHQ6MCxsYWJlbG9mZnNldDoxMCxsYWJlbHBvczoiciJ9LGFHdD1bImxhYmVscG9zIl07ZnVuY3Rpb24gc0d0KHQsZSl7cmV0dXJuIEdqdC5tYXBWYWx1ZXMoR2p0LnBpY2sodCxlKSxOdW1iZXIpfWZ1bmN0aW9uIGxHdCh0KXt2YXIgZT17fTtyZXR1cm4gR2p0LmZvckVhY2godCwoZnVuY3Rpb24odCxuKXtlW24udG9Mb3dlckNhc2UoKV09dH0pKSxlfXZhciBjR3QsdUd0LGhHdD1GVnQsZEd0PWlVdCxwR3Q9b0h0LkdyYXBoLGZHdD17Z3JhcGhsaWI6b0h0LGxheW91dDpmdW5jdGlvbiBtR3QodCxlKXt2YXIgbj1lJiZlLmRlYnVnVGltaW5nP1pqdC50aW1lOlpqdC5ub3RpbWU7bigibGF5b3V0IiwoZnVuY3Rpb24oKXt2YXIgZT1uKCIgIGJ1aWxkTGF5b3V0R3JhcGgiLChmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPW5ldyBKanQoe211bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITB9KSxuPWxHdCh0LmdyYXBoKCkpO3JldHVybiBlLnNldEdyYXBoKEdqdC5tZXJnZSh7fSx0R3Qsc0d0KG4sUWp0KSxHanQucGljayhuLGVHdCkpKSxHanQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPWxHdCh0Lm5vZGUobikpO2Uuc2V0Tm9kZShuLEdqdC5kZWZhdWx0cyhzR3QoaSxuR3QpLGlHdCkpLGUuc2V0UGFyZW50KG4sdC5wYXJlbnQobikpfSkpLEdqdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9bEd0KHQuZWRnZShuKSk7ZS5zZXRFZGdlKG4sR2p0Lm1lcmdlKHt9LG9HdCxzR3QoaSxyR3QpLEdqdC5waWNrKGksYUd0KSkpfSkpLGV9KSh0KX0pKTtuKCIgIHJ1bkxheW91dCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUsbil7bigiICAgIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCk7bi5yYW5rc2VwLz0yLEdqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO2kubWlubGVuKj0yLCJjIiE9PWkubGFiZWxwb3MudG9Mb3dlckNhc2UoKSYmKCJUQiI9PT1uLnJhbmtkaXJ8fCJCVCI9PT1uLnJhbmtkaXI/aS53aWR0aCs9aS5sYWJlbG9mZnNldDppLmhlaWdodCs9aS5sYWJlbG9mZnNldCl9KSl9KShlKX0pKSxuKCIgICAgcmVtb3ZlU2VsZkVkZ2VzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7R2p0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXtpZih0LnY9PT10Lncpe3ZhciBuPWUubm9kZSh0LnYpO24uc2VsZkVkZ2VzfHwobi5zZWxmRWRnZXM9W10pLG4uc2VsZkVkZ2VzLnB1c2goe2U6dCxsYWJlbDplLmVkZ2UodCl9KSxlLnJlbW92ZUVkZ2UodCl9fSkpfSkoZSl9KSksbigiICAgIGFjeWNsaWMiLChmdW5jdGlvbigpe1dqdC5ydW4oZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5ydW4iLChmdW5jdGlvbigpeyRqdChlKX0pKSxuKCIgICAgcmFuayIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3N3aXRjaChlLmdyYXBoKCkucmFua2VyKXtjYXNlIm5ldHdvcmstc2ltcGxleCI6aWp0KGUpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6IShmdW5jdGlvbiBuKHQpe1FVdCh0KSx0anQodCl9KShlKTticmVhaztjYXNlImxvbmdlc3QtcGF0aCI6bmp0KGUpO2JyZWFrO2RlZmF1bHQ6aWp0KGUpfX0pKFpqdC5hc05vbkNvbXBvdW5kR3JhcGgoZSkpfSkpLG4oIiAgICBpbmplY3RFZGdlTGFiZWxQcm94aWVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7R2p0LmZvckVhY2goZS5lZGdlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7aWYobi53aWR0aCYmbi5oZWlnaHQpe3ZhciBpPWUubm9kZSh0LnYpLHI9ZS5ub2RlKHQudyk7Wmp0LmFkZER1bW15Tm9kZShlLCJlZGdlLXByb3h5Iix7cmFuazooci5yYW5rLWkucmFuaykvMitpLnJhbmssZTp0fSwiX2VwIil9fSkpfSkoZSl9KSksbigiICAgIHJlbW92ZUVtcHR5UmFua3MiLChmdW5jdGlvbigpe1hqdChlKX0pKSxuKCIgICAgbmVzdGluZ0dyYXBoLmNsZWFudXAiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCk7ZS5yZW1vdmVOb2RlKG4ubmVzdGluZ1Jvb3QpLGRlbGV0ZSBuLm5lc3RpbmdSb290LG9qdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7ZS5lZGdlKHQpLm5lc3RpbmdFZGdlJiZlLnJlbW92ZUVkZ2UodCl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplUmFua3MiLChmdW5jdGlvbigpe1lqdChlKX0pKSxuKCIgICAgYXNzaWduUmFua01pbk1heCIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPTA7R2p0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgaT1lLm5vZGUodCk7aS5ib3JkZXJUb3AmJihpLm1pblJhbms9ZS5ub2RlKGkuYm9yZGVyVG9wKS5yYW5rLGkubWF4UmFuaz1lLm5vZGUoaS5ib3JkZXJCb3R0b20pLnJhbmssbj1HanQubWF4KG4saS5tYXhSYW5rKSl9KSksZS5ncmFwaCgpLm1heFJhbms9bn0pKGUpfSkpLG4oIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7R2p0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXt2YXIgbj1lLm5vZGUodCk7ImVkZ2UtcHJveHkiPT09bi5kdW1teSYmKGUuZWRnZShuLmUpLmxhYmVsUmFuaz1uLnJhbmssZS5yZW1vdmVOb2RlKHQpKX0pKX0pKGUpfSkpLG4oIiAgICBub3JtYWxpemUucnVuIiwoZnVuY3Rpb24oKXtxanQucnVuKGUpfSkpLG4oIiAgICBwYXJlbnREdW1teUNoYWlucyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3ZhciBlPXt9LG49MDtyZXR1cm4gcmp0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbiBpKHIpe3ZhciBvPW47cmp0LmZvckVhY2godC5jaGlsZHJlbihyKSxpKSxlW3JdPXtsb3c6byxsaW06bisrfX0pKSxlfSkoZSk7cmp0LmZvckVhY2goZS5ncmFwaCgpLmR1bW15Q2hhaW5zLChmdW5jdGlvbih0KXtmb3IodmFyIGk9ZS5ub2RlKHQpLHI9aS5lZGdlT2JqLG89KGZ1bmN0aW9uIGEodCxlLG4saSl7dmFyIHIsbyxhPVtdLHM9W10sbD1NYXRoLm1pbihlW25dLmxvdyxlW2ldLmxvdyksYz1NYXRoLm1heChlW25dLmxpbSxlW2ldLmxpbSk7cj1uO2Rve3I9dC5wYXJlbnQociksYS5wdXNoKHIpfXdoaWxlKHImJihlW3JdLmxvdz5sfHxjPmVbcl0ubGltKSk7Zm9yKG89cixyPWk7KHI9dC5wYXJlbnQocikpIT09bzspcy5wdXNoKHIpO3JldHVybntwYXRoOmEuY29uY2F0KHMucmV2ZXJzZSgpKSxsY2E6b319KShlLG4sci52LHIudykscz1vLnBhdGgsbD1vLmxjYSxjPTAsdT1zW2NdLGg9ITA7dCE9PXIudzspe2lmKGk9ZS5ub2RlKHQpLGgpe2Zvcig7KHU9c1tjXSkhPT1sJiZlLm5vZGUodSkubWF4UmFuazxpLnJhbms7KWMrKzt1PT09bCYmKGg9ITEpfWlmKCFoKXtmb3IoO2M8cy5sZW5ndGgtMSYmZS5ub2RlKHU9c1tjKzFdKS5taW5SYW5rPD1pLnJhbms7KWMrKzt1PXNbY119ZS5zZXRQYXJlbnQodCx1KSx0PWUuc3VjY2Vzc29ycyh0KVswXX19KSl9KShlKX0pKSxuKCIgICAgYWRkQm9yZGVyU2VnbWVudHMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtsanQuZm9yRWFjaChlLmNoaWxkcmVuKCksKGZ1bmN0aW9uIHQobil7dmFyIGk9ZS5jaGlsZHJlbihuKSxyPWUubm9kZShuKTtpZihpLmxlbmd0aCYmbGp0LmZvckVhY2goaSx0KSxsanQuaGFzKHIsIm1pblJhbmsiKSl7ci5ib3JkZXJMZWZ0PVtdLHIuYm9yZGVyUmlnaHQ9W107Zm9yKHZhciBvPXIubWluUmFuayxhPXIubWF4UmFuaysxO288YTsrK28pdWp0KGUsImJvcmRlckxlZnQiLCJfYmwiLG4scixvKSx1anQoZSwiYm9yZGVyUmlnaHQiLCJfYnIiLG4scixvKX19KSl9KShlKX0pKSxuKCIgICAgb3JkZXIiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1JanQubWF4UmFuayhlKSxpPVJqdChlLEFqdC5yYW5nZSgxLG4rMSksImluRWRnZXMiKSxyPVJqdChlLEFqdC5yYW5nZShuLTEsLTEsLTEpLCJvdXRFZGdlcyIpLG89KGZ1bmN0aW9uIGEodCl7dmFyIGU9e30sbj1nanQuZmlsdGVyKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIXQuY2hpbGRyZW4oZSkubGVuZ3RofSkpLGk9Z2p0Lm1heChnanQubWFwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKSkscj1nanQubWFwKGdqdC5yYW5nZShpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpLG89Z2p0LnNvcnRCeShuLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLnJhbmt9KSk7cmV0dXJuIGdqdC5mb3JFYWNoKG8sKGZ1bmN0aW9uIG4oaSl7aWYoIWdqdC5oYXMoZSxpKSl7ZVtpXT0hMDt2YXIgbz10Lm5vZGUoaSk7cltvLnJhbmtdLnB1c2goaSksZ2p0LmZvckVhY2godC5zdWNjZXNzb3JzKGkpLG4pfX0pKSxyfSkoZSk7emp0KGUsbyk7Zm9yKHZhciBzLGw9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGM9MCx1PTA7dTw0OysrYywrK3Upe09qdChjJTI/aTpyLGMlND49Miksbz1JanQuYnVpbGRMYXllck1hdHJpeChlKTt2YXIgaD1ranQoZSxvKTtoPGwmJih1PTAscz1BanQuY2xvbmVEZWVwKG8pLGw9aCl9emp0KGUscyl9KShlKX0pKSxuKCIgICAgaW5zZXJ0U2VsZkVkZ2VzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7dmFyIG49Wmp0LmJ1aWxkTGF5ZXJNYXRyaXgoZSk7R2p0LmZvckVhY2gobiwoZnVuY3Rpb24odCl7dmFyIG49MDtHanQuZm9yRWFjaCh0LChmdW5jdGlvbih0LGkpe3ZhciByPWUubm9kZSh0KTtyLm9yZGVyPWkrbixHanQuZm9yRWFjaChyLnNlbGZFZGdlcywoZnVuY3Rpb24odCl7Wmp0LmFkZER1bW15Tm9kZShlLCJzZWxmZWRnZSIse3dpZHRoOnQubGFiZWwud2lkdGgsaGVpZ2h0OnQubGFiZWwuaGVpZ2h0LHJhbms6ci5yYW5rLG9yZGVyOmkrICsrbixlOnQuZSxsYWJlbDp0LmxhYmVsfSwiX3NlIil9KSksZGVsZXRlIHIuc2VsZkVkZ2VzfSkpfSkpfSkoZSl9KSksbigiICAgIGFkanVzdENvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJsciIhPT1uJiYicmwiIT09bnx8ZGp0KGUpfSkoZSl9KSksbigiICAgIHBvc2l0aW9uIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7KGZ1bmN0aW9uIG4odCl7dmFyIGU9amp0LmJ1aWxkTGF5ZXJNYXRyaXgodCksbj10LmdyYXBoKCkucmFua3NlcCxpPTA7VWp0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIHI9VWp0Lm1heChVanQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkuaGVpZ2h0fSkpKTtVanQuZm9yRWFjaChlLChmdW5jdGlvbihlKXt0Lm5vZGUoZSkueT1pK3IvMn0pKSxpKz1yK259KSl9KShlPWpqdC5hc05vbkNvbXBvdW5kR3JhcGgoZSkpLFVqdC5mb3JFYWNoKChmdW5jdGlvbiBpKHQpe3ZhciBlLG49SGp0LmJ1aWxkTGF5ZXJNYXRyaXgodCksaT1EanQubWVyZ2UoKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj17fTtyZXR1cm4gRGp0LnJlZHVjZShlLChmdW5jdGlvbiBpKGUscil7dmFyIG89MCxhPTAscz1lLmxlbmd0aCxsPURqdC5sYXN0KHIpO3JldHVybiBEanQuZm9yRWFjaChyLChmdW5jdGlvbihlLGkpe3ZhciBjPShmdW5jdGlvbiB1KHQsZSl7aWYodC5ub2RlKGUpLmR1bW15KXJldHVybiBEanQuZmluZCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5kdW1teX0pKX0pKHQsZSksaD1jP3Qubm9kZShjKS5vcmRlcjpzOyhjfHxlPT09bCkmJihEanQuZm9yRWFjaChyLnNsaWNlKGEsaSsxKSwoZnVuY3Rpb24oZSl7RGp0LmZvckVhY2godC5wcmVkZWNlc3NvcnMoZSksKGZ1bmN0aW9uKGkpe3ZhciByPXQubm9kZShpKSxhPXIub3JkZXI7IShhPG98fGg8YSl8fHIuZHVtbXkmJnQubm9kZShlKS5kdW1teXx8Rmp0KG4saSxlKX0pKX0pKSxhPWkrMSxvPWgpfSkpLHJ9KSksbn0pKHQsbiksKGZ1bmN0aW9uIG8odCxlKXt2YXIgbj17fTtmdW5jdGlvbiBpKGUsaSxyLG8sYSl7dmFyIHM7RGp0LmZvckVhY2goRGp0LnJhbmdlKGksciksKGZ1bmN0aW9uKGkpe3Qubm9kZShzPWVbaV0pLmR1bW15JiZEanQuZm9yRWFjaCh0LnByZWRlY2Vzc29ycyhzKSwoZnVuY3Rpb24oZSl7dmFyIGk9dC5ub2RlKGUpO2kuZHVtbXkmJihpLm9yZGVyPG98fGkub3JkZXI+YSkmJkZqdChuLGUscyl9KSl9KSl9cmV0dXJuIERqdC5yZWR1Y2UoZSwoZnVuY3Rpb24gcihlLG4pe3ZhciByLG89LTEsYT0wO3JldHVybiBEanQuZm9yRWFjaChuLChmdW5jdGlvbihzLGwpe2lmKCJib3JkZXIiPT09dC5ub2RlKHMpLmR1bW15KXt2YXIgYz10LnByZWRlY2Vzc29ycyhzKTtjLmxlbmd0aCYmKHI9dC5ub2RlKGNbMF0pLm9yZGVyLGkobixhLGwsbyxyKSxhPWwsbz1yKX1pKG4sYSxuLmxlbmd0aCxyLGUubGVuZ3RoKX0pKSxufSkpLG59KSh0LG4pKSxhPXt9O0RqdC5mb3JFYWNoKFsidSIsImQiXSwoZnVuY3Rpb24ocil7ZT0idSI9PT1yP246RGp0LnZhbHVlcyhuKS5yZXZlcnNlKCksRGp0LmZvckVhY2goWyJsIiwiciJdLChmdW5jdGlvbihuKXsiciI9PT1uJiYoZT1EanQubWFwKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBEanQudmFsdWVzKHQpLnJldmVyc2UoKX0pKSk7dmFyIG89KCJ1Ij09PXI/dC5wcmVkZWNlc3NvcnM6dC5zdWNjZXNzb3JzKS5iaW5kKHQpLHM9KGZ1bmN0aW9uIGwodCxlLG4saSl7dmFyIHI9e30sbz17fSxhPXt9O3JldHVybiBEanQuZm9yRWFjaChlLChmdW5jdGlvbih0KXtEanQuZm9yRWFjaCh0LChmdW5jdGlvbih0LGUpe3JbdF09dCxvW3RdPXQsYVt0XT1lfSkpfSkpLERqdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQpe3ZhciBlPS0xO0RqdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe3ZhciBzPWkodCk7aWYocy5sZW5ndGgpZm9yKHZhciBsPSgocz1EanQuc29ydEJ5KHMsKGZ1bmN0aW9uKHQpe3JldHVybiBhW3RdfSkpKS5sZW5ndGgtMSkvMixjPU1hdGguZmxvb3IobCksdT1NYXRoLmNlaWwobCk7Yzw9dTsrK2Mpe3ZhciBoPXNbY107b1t0XT09PXQmJmU8YVtoXSYmIVZqdChuLHQsaCkmJihvW2hdPXQsb1t0XT1yW3RdPXJbaF0sZT1hW2hdKX19KSl9KSkse3Jvb3Q6cixhbGlnbjpvfX0pKDAsZSxpLG8pLGM9KGZ1bmN0aW9uIHUodCxlLG4saSxyKXt2YXIgbz17fSxhPShmdW5jdGlvbiBzKHQsZSxuLGkpe3ZhciByPW5ldyBCanQsbz10LmdyYXBoKCksYT0oZnVuY3Rpb24gcyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkscixvKXt2YXIgYSxzPWkubm9kZShyKSxsPWkubm9kZShvKSxjPTA7aWYoYys9cy53aWR0aC8yLERqdC5oYXMocywibGFiZWxwb3MiKSlzd2l0Y2gocy5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKXtjYXNlImwiOmE9LXMud2lkdGgvMjticmVhaztjYXNlInIiOmE9cy53aWR0aC8yfWlmKGEmJihjKz1uP2E6LWEpLGE9MCxjKz0ocy5kdW1teT9lOnQpLzIsYys9KGwuZHVtbXk/ZTp0KS8yLGMrPWwud2lkdGgvMixEanQuaGFzKGwsImxhYmVscG9zIikpc3dpdGNoKGwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjphPWwud2lkdGgvMjticmVhaztjYXNlInIiOmE9LWwud2lkdGgvMn1yZXR1cm4gYSYmKGMrPW4/YTotYSksYT0wLGN9fSkoby5ub2Rlc2VwLG8uZWRnZXNlcCxpKTtyZXR1cm4gRGp0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIGk7RGp0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dmFyIG89bltlXTtpZihyLnNldE5vZGUobyksaSl7dmFyIHM9bltpXSxsPXIuZWRnZShzLG8pO3Iuc2V0RWRnZShzLG8sTWF0aC5tYXgoYSh0LGUsaSksbHx8MCkpfWk9ZX0pKX0pKSxyfSkodCxlLG4sciksbD1yPyJib3JkZXJMZWZ0IjoiYm9yZGVyUmlnaHQiO2Z1bmN0aW9uIGModCxlKXtmb3IodmFyIG49YS5ub2RlcygpLGk9bi5wb3AoKSxyPXt9O2k7KXJbaV0/dChpKToocltpXT0hMCxuLnB1c2goaSksbj1uLmNvbmNhdChlKGkpKSksaT1uLnBvcCgpfXJldHVybiBjKChmdW5jdGlvbiB1KHQpe29bdF09YS5pbkVkZ2VzKHQpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5tYXgodCxvW2Uudl0rYS5lZGdlKGUpKX0pLDApfSksYS5wcmVkZWNlc3NvcnMuYmluZChhKSksYygoZnVuY3Rpb24gaChlKXt2YXIgbj1hLm91dEVkZ2VzKGUpLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gTWF0aC5taW4odCxvW2Uud10tYS5lZGdlKGUpKX0pLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksaT10Lm5vZGUoZSk7biE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmaS5ib3JkZXJUeXBlIT09bCYmKG9bZV09TWF0aC5tYXgob1tlXSxuKSl9KSxhLnN1Y2Nlc3NvcnMuYmluZChhKSksRGp0LmZvckVhY2goaSwoZnVuY3Rpb24odCl7b1t0XT1vW25bdF1dfSkpLG99KSh0LGUscy5yb290LHMuYWxpZ24sInIiPT09bik7InIiPT09biYmKGM9RGp0Lm1hcFZhbHVlcyhjLChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKSksYVtyK25dPWN9KSl9KSk7dmFyIHM9KGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gRGp0Lm1pbkJ5KERqdC52YWx1ZXMoZSksKGZ1bmN0aW9uKGUpe3ZhciBuPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXR1cm4gRGp0LmZvckluKGUsKGZ1bmN0aW9uKGUscil7dmFyIG89KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC5ub2RlKGUpLndpZHRofSkodCxyKS8yO249TWF0aC5tYXgoZStvLG4pLGk9TWF0aC5taW4oZS1vLGkpfSkpLG4taX0pKX0pKHQsYSk7cmV0dXJuKGZ1bmN0aW9uIGModCxlKXt2YXIgbj1EanQudmFsdWVzKGUpLGk9RGp0Lm1pbihuKSxyPURqdC5tYXgobik7RGp0LmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihuKXtEanQuZm9yRWFjaChbImwiLCJyIl0sKGZ1bmN0aW9uKG8pe3ZhciBhLHM9bitvLGw9dFtzXTtpZihsIT09ZSl7dmFyIGM9RGp0LnZhbHVlcyhsKTsoYT0ibCI9PT1vP2ktRGp0Lm1pbihjKTpyLURqdC5tYXgoYykpJiYodFtzXT1EanQubWFwVmFsdWVzKGwsKGZ1bmN0aW9uKHQpe3JldHVybiB0K2F9KSkpfX0pKX0pKX0pKGEscyksKGZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gRGp0Lm1hcFZhbHVlcyh0LnVsLChmdW5jdGlvbihuLGkpe2lmKGUpcmV0dXJuIHRbZS50b0xvd2VyQ2FzZSgpXVtpXTt2YXIgcj1EanQuc29ydEJ5KERqdC5tYXAodCxpKSk7cmV0dXJuKHJbMV0rclsyXSkvMn0pKX0pKGEsdC5ncmFwaCgpLmFsaWduKX0pKGUpLChmdW5jdGlvbih0LG4pe2Uubm9kZShuKS54PXR9KSl9KShlKX0pKSxuKCIgICAgcG9zaXRpb25TZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtHanQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBuPWUubm9kZSh0KTtpZigic2VsZmVkZ2UiPT09bi5kdW1teSl7dmFyIGk9ZS5ub2RlKG4uZS52KSxyPWkueCtpLndpZHRoLzIsbz1pLnksYT1uLngtcixzPWkuaGVpZ2h0LzI7ZS5zZXRFZGdlKG4uZSxuLmxhYmVsKSxlLnJlbW92ZU5vZGUodCksbi5sYWJlbC5wb2ludHM9W3t4OnIrMiphLzMseTpvLXN9LHt4OnIrNSphLzYseTpvLXN9LHt4OnIrYSx5Om99LHt4OnIrNSphLzYseTpvK3N9LHt4OnIrMiphLzMseTpvK3N9XSxuLmxhYmVsLng9bi54LG4ubGFiZWwueT1uLnl9fSkpfSkoZSl9KSksbigiICAgIHJlbW92ZUJvcmRlck5vZGVzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7R2p0LmZvckVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtpZihlLmNoaWxkcmVuKHQpLmxlbmd0aCl7dmFyIG49ZS5ub2RlKHQpLGk9ZS5ub2RlKG4uYm9yZGVyVG9wKSxyPWUubm9kZShuLmJvcmRlckJvdHRvbSksbz1lLm5vZGUoR2p0Lmxhc3Qobi5ib3JkZXJMZWZ0KSksYT1lLm5vZGUoR2p0Lmxhc3Qobi5ib3JkZXJSaWdodCkpO24ud2lkdGg9TWF0aC5hYnMoYS54LW8ueCksbi5oZWlnaHQ9TWF0aC5hYnMoci55LWkueSksbi54PW8ueCtuLndpZHRoLzIsbi55PWkueStuLmhlaWdodC8yfX0pKSxHanQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpeyJib3JkZXIiPT09ZS5ub2RlKHQpLmR1bW15JiZlLnJlbW92ZU5vZGUodCl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplLnVuZG8iLChmdW5jdGlvbigpe3FqdC51bmRvKGUpfSkpLG4oIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0dqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKEdqdC5oYXMobiwieCIpKXN3aXRjaCgibCIhPT1uLmxhYmVscG9zJiYiciIhPT1uLmxhYmVscG9zfHwobi53aWR0aC09bi5sYWJlbG9mZnNldCksbi5sYWJlbHBvcyl7Y2FzZSJsIjpuLngtPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6bi54Kz1uLndpZHRoLzIrbi5sYWJlbG9mZnNldH19KSl9KShlKX0pKSxuKCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJidCIhPT1uJiYicmwiIT09bnx8KGZ1bmN0aW9uIGkodCl7aGp0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtmanQodC5ub2RlKGUpKX0pKSxoanQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtoanQuZm9yRWFjaChuLnBvaW50cyxmanQpLGhqdC5oYXMobiwieSIpJiZmanQobil9KSl9KShlKSwibHIiIT09biYmInJsIiE9PW58fCgoZnVuY3Rpb24gcih0KXtoanQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe21qdCh0Lm5vZGUoZSkpfSkpLGhqdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO2hqdC5mb3JFYWNoKG4ucG9pbnRzLG1qdCksaGp0LmhhcyhuLCJ4IikmJm1qdChuKX0pKX0pKGUpLGRqdChlKSl9KShlKX0pKSxuKCIgICAgdHJhbnNsYXRlR3JhcGgiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaT0wLHI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG89MCxhPWUuZ3JhcGgoKSxzPWEubWFyZ2lueHx8MCxsPWEubWFyZ2lueXx8MDtmdW5jdGlvbiBjKHQpe3ZhciBlPXQueCxhPXQueSxzPXQud2lkdGgsbD10LmhlaWdodDtuPU1hdGgubWluKG4sZS1zLzIpLGk9TWF0aC5tYXgoaSxlK3MvMikscj1NYXRoLm1pbihyLGEtbC8yKSxvPU1hdGgubWF4KG8sYStsLzIpfUdqdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7YyhlLm5vZGUodCkpfSkpLEdqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO0dqdC5oYXMobiwieCIpJiZjKG4pfSkpLG4tPXMsci09bCxHanQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBpPWUubm9kZSh0KTtpLngtPW4saS55LT1yfSkpLEdqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO0dqdC5mb3JFYWNoKGkucG9pbnRzLChmdW5jdGlvbih0KXt0LngtPW4sdC55LT1yfSkpLEdqdC5oYXMoaSwieCIpJiYoaS54LT1uKSxHanQuaGFzKGksInkiKSYmKGkueS09cil9KSksYS53aWR0aD1pLW4rcyxhLmhlaWdodD1vLXIrbH0pKGUpfSkpLG4oIiAgICBhc3NpZ25Ob2RlSW50ZXJzZWN0cyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0dqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG4saSxyPWUuZWRnZSh0KSxvPWUubm9kZSh0LnYpLGE9ZS5ub2RlKHQudyk7ci5wb2ludHM/KG49ci5wb2ludHNbMF0saT1yLnBvaW50c1tyLnBvaW50cy5sZW5ndGgtMV0pOihyLnBvaW50cz1bXSxuPWEsaT1vKSxyLnBvaW50cy51bnNoaWZ0KFpqdC5pbnRlcnNlY3RSZWN0KG8sbikpLHIucG9pbnRzLnB1c2goWmp0LmludGVyc2VjdFJlY3QoYSxpKSl9KSl9KShlKX0pKSxuKCIgICAgcmV2ZXJzZVBvaW50cyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0dqdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO24ucmV2ZXJzZWQmJm4ucG9pbnRzLnJldmVyc2UoKX0pKX0pKGUpfSkpLG4oIiAgICBhY3ljbGljLnVuZG8iLChmdW5jdGlvbigpe1dqdC51bmRvKGUpfSkpfSkoZSxuKX0pKSxuKCIgIHVwZGF0ZUlucHV0R3JhcGgiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gbih0LGUpe0dqdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pLHI9ZS5ub2RlKG4pO2kmJihpLng9ci54LGkueT1yLnksZS5jaGlsZHJlbihuKS5sZW5ndGgmJihpLndpZHRoPXIud2lkdGgsaS5oZWlnaHQ9ci5oZWlnaHQpKX0pKSxHanQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQuZWRnZShuKSxyPWUuZWRnZShuKTtpLnBvaW50cz1yLnBvaW50cyxHanQuaGFzKHIsIngiKSYmKGkueD1yLngsaS55PXIueSl9KSksdC5ncmFwaCgpLndpZHRoPWUuZ3JhcGgoKS53aWR0aCx0LmdyYXBoKCkuaGVpZ2h0PWUuZ3JhcGgoKS5oZWlnaHR9KSh0LGUpfSkpfSkpfSxkZWJ1Zzp7ZGVidWdPcmRlcmluZzpmdW5jdGlvbiBnR3QodCl7dmFyIGU9ZEd0LmJ1aWxkTGF5ZXJNYXRyaXgodCksbj1uZXcgcEd0KHtjb21wb3VuZDohMCxtdWx0aWdyYXBoOiEwfSkuc2V0R3JhcGgoe30pO3JldHVybiBoR3QuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe24uc2V0Tm9kZShlLHtsYWJlbDplfSksbi5zZXRQYXJlbnQoZSwibGF5ZXIiK3Qubm9kZShlKS5yYW5rKX0pKSxoR3QuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKHQpe24uc2V0RWRnZSh0LnYsdC53LHt9LHQubmFtZSl9KSksaEd0LmZvckVhY2goZSwoZnVuY3Rpb24odCxlKXtuLnNldE5vZGUoImxheWVyIitlLHtyYW5rOiJzYW1lIn0pLGhHdC5yZWR1Y2UodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZXRFZGdlKHQsZSx7c3R5bGU6ImludmlzIn0pLGV9KSl9KSksbn19LHV0aWw6e3RpbWU6aVV0LnRpbWUsbm90aW1lOmlVdC5ub3RpbWV9LHZlcnNpb246IjAuOC41In07IShmdW5jdGlvbih0KXt0LkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLHQuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIix0LkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLHQuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIix0LkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLHQuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLHQuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLHQuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsdC5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIix0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIix0LkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsdC5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkoY0d0fHwoY0d0PXt9KSksKGZ1bmN0aW9uKHQpe3QuTk9ERV9FWFBBTlNJT05fVE9HR0xFRD0iTk9ERV9FWFBBTlNJT05fVE9HR0xFRCIsdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRD0iTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUQiLHQuTk9ERV9BVVhJTElBUllfRVhUUkFDVElPTl9DSEFOR0VEPSJOT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQiLHQuR1JBUEhfVFlQRV9DSEFOR0VEPSJHUkFQSF9UWVBFX0NIQU5HRUQiLHQuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEPSJUUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQiLHQuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQ9Ik5PREVfQ09MT1JfTU9ERV9DSEFOR0VEIix0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTT0iVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNIn0pKHVHdHx8KHVHdD17fSkpO2NvbnN0IF9HdD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sY0d0KSx1R3QpO3ZhciB5R3Q7IShmdW5jdGlvbih0KXt0Lk9QX0dSQVBIPSJvcF9ncmFwaCIsdC5DT05DRVBUVUFMX0dSQVBIPSJjb25jZXB0dWFsX2dyYXBoIix0LlBST0ZJTEU9InByb2ZpbGUifSkoeUd0fHwoeUd0PXt9KSk7bGV0IHZHdD17Tm9kZTp7Q09OVEFJTkVSOiJub2RlcyIsR1JPVVA6Im5vZGUiLFNIQVBFOiJub2Rlc2hhcGUiLENPTE9SX1RBUkdFVDoibm9kZWNvbG9ydGFyZ2V0IixMQUJFTDoibm9kZWxhYmVsIixCVVRUT05fQ09OVEFJTkVSOiJidXR0b25jb250YWluZXIiLEJVVFRPTl9DSVJDTEU6ImJ1dHRvbmNpcmNsZSIsRVhQQU5EX0JVVFRPTjoiZXhwYW5kYnV0dG9uIixDT0xMQVBTRV9CVVRUT046ImNvbGxhcHNlYnV0dG9uIn0sRWRnZTp7Q09OVEFJTkVSOiJlZGdlcyIsR1JPVVA6ImVkZ2UiLExJTkU6ImVkZ2VsaW5lIixSRUZFUkVOQ0VfRURHRToicmVmZXJlbmNlZWRnZSIsUkVGX0xJTkU6InJlZmxpbmUiLFNFTEVDVEFCTEU6InNlbGVjdGFibGVlZGdlIixTRUxFQ1RFRDoic2VsZWN0ZWRlZGdlIixTVFJVQ1RVUkFMOiJzdHJ1Y3R1cmFsIn0sQW5ub3RhdGlvbjp7T1VUQk9YOiJvdXQtYW5ub3RhdGlvbnMiLElOQk9YOiJpbi1hbm5vdGF0aW9ucyIsR1JPVVA6ImFubm90YXRpb24iLE5PREU6ImFubm90YXRpb24tbm9kZSIsRURHRToiYW5ub3RhdGlvbi1lZGdlIixDT05UUk9MX0VER0U6ImFubm90YXRpb24tY29udHJvbC1lZGdlIixMQUJFTDoiYW5ub3RhdGlvbi1sYWJlbCIsRUxMSVBTSVM6ImFubm90YXRpb24tZWxsaXBzaXMifSxTY2VuZTp7R1JPVVA6InNjZW5lIixDT1JFOiJjb3JlIixGVU5DVElPTl9MSUJSQVJZOiJmdW5jdGlvbi1saWJyYXJ5IixJTkVYVFJBQ1Q6ImluLWV4dHJhY3QiLE9VVEVYVFJBQ1Q6Im91dC1leHRyYWN0In0sU3Vic2NlbmU6e0dST1VQOiJzdWJzY2VuZSJ9LE9QTk9ERToib3AiLE1FVEFOT0RFOiJtZXRhIixTRVJJRVNOT0RFOiJzZXJpZXMiLEJSSURHRU5PREU6ImJyaWRnZSIsRUxMSVBTSVNOT0RFOiJlbGxpcHNpcyJ9O2NvbnN0IGJHdD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2Z1bmN0aW9uIHhHdCh0LGUsbil7bGV0IGk9dC5ub2RlKCkuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IHI9aVt0XTtpZihyLnRhZ05hbWU9PT1lKWlmKG4gaW5zdGFuY2VvZiBBcnJheSl7bGV0IHQ9ITA7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspdD10JiZyLmNsYXNzTGlzdC5jb250YWlucyhuW2VdKTtpZih0KXJldHVybiBTdShyKX1lbHNlIGlmKCFufHxyLmNsYXNzTGlzdC5jb250YWlucyhuKSlyZXR1cm4gU3Uocil9cmV0dXJuIFN1KG51bGwpfWZ1bmN0aW9uIHdHdCh0LGUsbixpKXtsZXQgcj14R3QodCxlLG4pO2lmKCFyLmVtcHR5KCkpcmV0dXJuIHI7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZSk7aWYobiBpbnN0YW5jZW9mIEFycmF5KWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW8uY2xhc3NMaXN0LmFkZChuW3RdKTtlbHNlIG8uY2xhc3NMaXN0LmFkZChuKTtyZXR1cm4gaT90Lm5vZGUoKS5pbnNlcnRCZWZvcmUobyxpKTp0Lm5vZGUoKS5hcHBlbmRDaGlsZChvKSxTdShvKS5kYXR1bSh0LmRhdHVtKCkpfWNsYXNzIFNHdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRvdGFsQnl0ZXM9MCx0aGlzLm91dHB1dFNpemU9dH1hZGRFeGVjdXRpb25UaW1lKHQsZSl7dGhpcy5zdGFydFRpbWU9bnVsbCE9dGhpcy5zdGFydFRpbWU/TWF0aC5taW4odGhpcy5zdGFydFRpbWUsdCk6dCx0aGlzLmVuZFRpbWU9bnVsbCE9dGhpcy5lbmRUaW1lP01hdGgubWF4KHRoaXMuZW5kVGltZSxlKTplfWFkZEJ5dGVzQWxsb2NhdGlvbih0KXt0aGlzLnRvdGFsQnl0ZXM9bnVsbCE9dGhpcy50b3RhbEJ5dGVzP01hdGgubWF4KHRoaXMudG90YWxCeXRlcyx0KTp0fWNvbWJpbmUodCl7bnVsbCE9dC50b3RhbEJ5dGVzJiYodGhpcy50b3RhbEJ5dGVzKz10LnRvdGFsQnl0ZXMpLG51bGwhPXQuZ2V0VG90YWxNaWNyb3MoKSYmdGhpcy5hZGRFeGVjdXRpb25UaW1lKHQuc3RhcnRUaW1lLHQuZW5kVGltZSl9Z2V0VG90YWxNaWNyb3MoKXtyZXR1cm4gbnVsbD09dGhpcy5zdGFydFRpbWV8fG51bGw9PXRoaXMuZW5kVGltZT9udWxsOnRoaXMuZW5kVGltZS10aGlzLnN0YXJ0VGltZX19Y29uc3QgTUd0PS43NSxFR3Q9ckUoKS5leHBvbmVudCguMykuZG9tYWluKFsxLDVlNl0pLnJhbmdlKFtNR3QsMTJdKS5jbGFtcCghMCk7ZnVuY3Rpb24gVEd0KHQpeyEoZnVuY3Rpb24gZSh0KXt0Lmhhc093blByb3BlcnR5KCJ0aW1pbmdJZCIpfSkodCl9ZnVuY3Rpb24gQ0d0KHQsZSxuKXtsZXQgaT1EYXRlLm5vdygpLHI9ZSgpO2NvbnN0IG89RGF0ZS5ub3coKS1pO3JldHVybiBjb25zb2xlLmxvZyh0LCI6IixvLCJtcyIpLG4mJlRHdCh7dGltaW5nSWQ6bixldmVudFZhbHVlOm99KSxyfWZ1bmN0aW9uIEFHdCh0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihlKXt0LnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTp0LnByb2dyZXNzLnZhbHVlLG1zZzplfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3Quc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUrZSxtc2c6dC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxuKXtjb25zb2xlLmVycm9yKG4uc3RhY2spLHQuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUsbXNnOmUsZXJyb3I6ITB9KX19fWZ1bmN0aW9uIGtHdCh0LGUsbil7cmV0dXJue3NldE1lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zZXRNZXNzYWdlKG4rIjogIitlKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obil7dC51cGRhdGVQcm9ncmVzcyhuKmUvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxpKXt0LnJlcG9ydEVycm9yKG4rIjogIitlLGkpfX19ZnVuY3Rpb24gTEd0KHQsZSxuLGkscil7cmV0dXJuIG5ldyBQcm9taXNlKCgobyxhKT0+e2kuc2V0TWVzc2FnZSh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXtsZXQgYT1DR3QodCxuLHIpO2kudXBkYXRlUHJvZ3Jlc3MoZSksbyhhKX1jYXRjaChlKXtpLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pLDIwKX0pKX1mdW5jdGlvbiBQR3QodCxlLG4saSxyKXtyZXR1cm4gbmV3IFByb21pc2UoKChvLGEpPT57bGV0IHM9ZnVuY3Rpb24oZSl7aS5yZXBvcnRFcnJvcigiRmFpbGVkICIrdCxlKSxhKGUpfTtpLnNldE1lc3NhZ2UodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bGV0IGE9RGF0ZS5ub3coKTtuKCkudGhlbigoZnVuY3Rpb24obil7Y29uc3Qgcz1EYXRlLm5vdygpLWE7Y29uc29sZS5sb2codCwiOiIscywibXMiKSxpLnVwZGF0ZVByb2dyZXNzKGUpLFRHdCh7dGltaW5nSWQ6cixldmVudFZhbHVlOnN9KSxvKG4pfSkpLmNhdGNoKHMpfWNhdGNoKHQpe3ModCl9fSksMjApfSkpfWNvbnN0IE5HdD1be3N5bWJvbDoiQiJ9LHtzeW1ib2w6IktCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJNQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiR0IiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlRCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJQQiIsbnVtVW5pdHM6MTAyNH1dLElHdD1be3N5bWJvbDoiwrVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFlM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07ZnVuY3Rpb24gUkd0KHQsZSxuPTApe3JldHVybiBuKzE8ZS5sZW5ndGgmJnQ+PWVbbisxXS5udW1Vbml0cz9SR3QodC9lW24rMV0ubnVtVW5pdHMsZSxuKzEpOk51bWJlcih0LnRvUHJlY2lzaW9uKDMpKSsiICIrZVtuXS5zeW1ib2x9ZnVuY3Rpb24gT0d0KHQpe3JldHVybiEoIXR8fCEodC50b3RhbEJ5dGVzPjB8fHQuZ2V0VG90YWxNaWNyb3MoKT4wfHx0Lm91dHB1dFNpemUpKX1mdW5jdGlvbiB6R3QodCl7aWYodC5sZW5ndGg8MilyZXR1cm4gdDtsZXQgZT0wLG49MCxpPVNlLmV4cG9ydHMubWluKFNlLmV4cG9ydHMubWFwKHQsKHQ9PnQubGVuZ3RoKSkpO2Zvcig7Oyl7ZSsrO2xldCByPVNlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKDAsZSkpKTtpZighci5ldmVyeSgoKHQsZSk9PjA9PT1lfHx0PT09cltlLTFdKSkpYnJlYWs7aWYoZT49aSlyZXR1cm4gdDtuPWV9cmV0dXJuIFNlLmV4cG9ydHMubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKG4pKSl9Y29uc3QgREd0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gQkd0KHQsZSl7cmV0dXJuIERHdC5mb250PWAke2V9cHggUm9ib3RvLCBzYW5zLXNlcmlmYCxER3QubWVhc3VyZVRleHQodCkud2lkdGh9Y29uc3QgSEd0PSIvIixGR3Q9Il9fcm9vdF9fIixWR3Q9Il9fZnVuY3Rpb25fbGlicmFyeV9fIjt2YXIgVUd0LGpHdCxHR3QsV0d0OyEoZnVuY3Rpb24odCl7dFt0LkZVTEw9MF09IkZVTEwiLHRbdC5FTUJFRERFRD0xXT0iRU1CRURERUQiLHRbdC5NRVRBPTJdPSJNRVRBIix0W3QuU0VSSUVTPTNdPSJTRVJJRVMiLHRbdC5DT1JFPTRdPSJDT1JFIix0W3QuU0hBRE9XPTVdPSJTSEFET1ciLHRbdC5CUklER0U9Nl09IkJSSURHRSIsdFt0LkVER0U9N109IkVER0UifSkoVUd0fHwoVUd0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRBPTBdPSJNRVRBIix0W3QuT1A9MV09Ik9QIix0W3QuU0VSSUVTPTJdPSJTRVJJRVMiLHRbdC5CUklER0U9M109IkJSSURHRSIsdFt0LkVMTElQU0lTPTRdPSJFTExJUFNJUyJ9KShqR3R8fChqR3Q9e30pKSwoZnVuY3Rpb24odCl7dFt0LklOQ0xVREU9MF09IklOQ0xVREUiLHRbdC5FWENMVURFPTFdPSJFWENMVURFIix0W3QuVU5TUEVDSUZJRUQ9Ml09IlVOU1BFQ0lGSUVEIn0pKEdHdHx8KEdHdD17fSkpLChmdW5jdGlvbih0KXt0W3QuR1JPVVA9MF09IkdST1VQIix0W3QuVU5HUk9VUD0xXT0iVU5HUk9VUCJ9KShXR3R8fChXR3Q9e30pKTtjbGFzcyBxR3R7Y29uc3RydWN0b3IoKXt0aGlzLm5vZGVzPXt9LHRoaXMuZWRnZXM9W119fWNsYXNzIFlHdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9akd0LkVMTElQU0lTLHRoaXMuaXNHcm91cE5vZGU9ITEsdGhpcy5jYXJkaW5hbGl0eT0xLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuc3RhdHM9bnVsbCx0aGlzLnNldE51bU1vcmVOb2Rlcyh0KSx0aGlzLmluY2x1ZGU9R0d0LlVOU1BFQ0lGSUVEfXNldE51bU1vcmVOb2Rlcyh0KXt0aGlzLm51bU1vcmVOb2Rlcz10LHRoaXMubmFtZT0iLi4uICIrdCsiIG1vcmUifX1jbGFzcyBYR3R7Y29uc3RydWN0b3IodCl7dGhpcy5vcD10Lm9wLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5kZXZpY2U9dC5kZXZpY2UsdGhpcy5hdHRyPXQuYXR0cix0aGlzLmlucHV0cz0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdO2xldCBuPW51bGw7Zm9yKGxldCBpIG9mIHR8fFtdKXtjb25zdCB0PWkuc3RhcnRzV2l0aCgiXiIpO3QmJihpPWkuc3Vic3RyaW5nKDEpKTtsZXQgcj1pLG89IjAiO2NvbnN0IGE9aS5pbmNsdWRlcygiOiIpJiZpLm1hdGNoKG5XdCk7YSYmKHI9YVsxXSxvPWFbMl0pLG4hPT1yJiYobj1yLGUucHVzaCh7bmFtZTpyLG91dHB1dFRlbnNvcktleTpvLGlzQ29udHJvbERlcGVuZGVuY3k6dH0pKX1yZXR1cm4gZX0pKHQuaW5wdXQpLHRoaXMub3V0cHV0U2hhcGVzPShmdW5jdGlvbiBuKHQpe2lmKCF0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXR7a2V5Om4sdmFsdWU6aX09dFtlXTtpZigiX291dHB1dF9zaGFwZXMiPT09bil7aWYoIWkubGlzdHx8IWkubGlzdC5zaGFwZSlyZXR1cm4gbnVsbDtsZXQgbj1pLmxpc3Quc2hhcGUubWFwKCh0PT50LnVua25vd25fcmFuaz9udWxsOm51bGw9PXQuZGltfHwxPT09dC5kaW0ubGVuZ3RoJiZudWxsPT10LmRpbVswXS5zaXplP1tdOnQuZGltLm1hcCgodD0+dC5zaXplKSkpKTtyZXR1cm4gdC5zcGxpY2UoZSwxKSxufX1yZXR1cm4gbnVsbH0pKHQuYXR0ciksdGhpcy54bGFDbHVzdGVyPShmdW5jdGlvbiBpKHQpe2lmKCF0KXJldHVybiBudWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCJfWGxhQ2x1c3RlciI9PT10W2VdLmtleSlyZXR1cm4gdFtlXS52YWx1ZS5zfHxudWxsO3JldHVybiBudWxsfSkodC5hdHRyKSx0aGlzLmNvbXBhdGlibGU9ITEsdGhpcy50eXBlPWpHdC5PUCx0aGlzLmlzR3JvdXBOb2RlPSExLHRoaXMuY2FyZGluYWxpdHk9MSx0aGlzLmluRW1iZWRkaW5ncz1bXSx0aGlzLm91dEVtYmVkZGluZ3M9W10sdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5pbmNsdWRlPUdHdC5VTlNQRUNJRklFRCx0aGlzLm93bmluZ1Nlcmllcz1udWxsfX1mdW5jdGlvbiAkR3QodCxlPXt9KXtyZXR1cm4gbmV3IEtHdCh0LGUpfWNsYXNzIEtHdHtjb25zdHJ1Y3Rvcih0LGU9e30pe3RoaXMubmFtZT10LHRoaXMudHlwZT1qR3QuTUVUQSx0aGlzLmRlcHRoPTEsdGhpcy5pc0dyb3VwTm9kZT0hMCx0aGlzLmNhcmRpbmFsaXR5PTAsdGhpcy5tZXRhZ3JhcGg9b1d0KHQsVUd0Lk1FVEEsZSksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMub3BIaXN0b2dyYW09e30sdGhpcy5kZXZpY2VIaXN0b2dyYW09e30sdGhpcy54bGFDbHVzdGVySGlzdG9ncmFtPXt9LHRoaXMuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbT17Y29tcGF0aWJsZTowLGluY29tcGF0aWJsZTowfSx0aGlzLnRlbXBsYXRlSWQ9bnVsbCx0aGlzLnBhcmVudE5vZGU9bnVsbCx0aGlzLmhhc05vbkNvbnRyb2xFZGdlcz0hMSx0aGlzLmluY2x1ZGU9R0d0LlVOU1BFQ0lGSUVELHRoaXMuYXNzb2NpYXRlZEZ1bmN0aW9uPSIifWdldEZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5tZXRhZ3JhcGgubm9kZSh0aGlzLm1ldGFncmFwaC5ub2RlcygpWzBdKX1nZXRSb290T3AoKXtsZXQgdD10aGlzLm5hbWUuc3BsaXQoIi8iKTtyZXR1cm4gdGhpcy5tZXRhZ3JhcGgubm9kZSh0aGlzLm5hbWUrIi8oIit0W3QubGVuZ3RoLTFdKyIpIil9bGVhdmVzKCl7bGV0IHQsZT1bXSxuPVt0aGlzXTtmb3IoO24ubGVuZ3RoOyl7bGV0IGk9bi5zaGlmdCgpO2kuaXNHcm91cE5vZGU/KHQ9aS5tZXRhZ3JhcGgsU2UuZXhwb3J0cy5lYWNoKHQubm9kZXMoKSwoZT0+bi5wdXNoKHQubm9kZShlKSkpKSk6ZS5wdXNoKGkubmFtZSl9cmV0dXJuIGV9fWZ1bmN0aW9uIFpHdCh0LGUpe3JldHVybiBuZXcgSkd0KHQsZSl9Y2xhc3MgSkd0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52PXQsdGhpcy53PWUsdGhpcy5iYXNlRWRnZUxpc3Q9W10sdGhpcy5pbmJvdW5kPW51bGwsdGhpcy5udW1SZWd1bGFyRWRnZXM9MCx0aGlzLm51bUNvbnRyb2xFZGdlcz0wLHRoaXMubnVtUmVmRWRnZXM9MCx0aGlzLnRvdGFsU2l6ZT0wfWFkZEJhc2VFZGdlKHQsZSl7dGhpcy5iYXNlRWRnZUxpc3QucHVzaCh0KSx0LmlzQ29udHJvbERlcGVuZGVuY3k/dGhpcy5udW1Db250cm9sRWRnZXMrPTE6dGhpcy5udW1SZWd1bGFyRWRnZXMrPTEsdC5pc1JlZmVyZW5jZUVkZ2UmJih0aGlzLm51bVJlZkVkZ2VzKz0xKSx0aGlzLnRvdGFsU2l6ZSs9Skd0LmNvbXB1dGVTaXplT2ZFZGdlKHQsZSksZS5tYXhNZXRhRWRnZVNpemU9TWF0aC5tYXgoZS5tYXhNZXRhRWRnZVNpemUsdGhpcy50b3RhbFNpemUpfXN0YXRpYyBjb21wdXRlU2l6ZU9mRWRnZSh0LGUpe2xldCBuPWUubm9kZSh0LnYpO2lmKCFuLm91dHB1dFNoYXBlcylyZXR1cm4gMTtlLmhhc1NoYXBlSW5mbz0hMDtjb25zdCBpPU9iamVjdC5rZXlzKG4ub3V0cHV0U2hhcGVzKS5tYXAoKHQ9Pm4ub3V0cHV0U2hhcGVzW3RdKSkubWFwKCh0PT5udWxsPT10PzE6dC5yZWR1Y2UoKCh0LGUpPT4oLTE9PT1lJiYoZT0xKSx0KmUpKSwxKSkpO3JldHVybiBTZS5leHBvcnRzLnN1bShpKX19ZnVuY3Rpb24gUUd0KHQsZSxuLGkscixvKXtyZXR1cm4gbmV3IGVXdCh0LGUsbixpLHIsbyl9ZnVuY3Rpb24gdFd0KHQsZSxuLGkscil7cmV0dXJuKG4/bisiLyI6IiIpK3QrKHZvaWQgMCE9PWkmJnZvaWQgMCE9PXI/IlsiK2krIi0iK3IrIl0iOiIjIikrZX1jbGFzcyBlV3R7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMubmFtZT1yfHx0V3QodCxlLG4pLHRoaXMudHlwZT1qR3QuU0VSSUVTLHRoaXMuaGFzTG9vcD0hMSx0aGlzLnByZWZpeD10LHRoaXMuc3VmZml4PWUsdGhpcy5jbHVzdGVySWQ9aSx0aGlzLmlkcz1bXSx0aGlzLnBhcmVudD1uLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPW9XdChyLFVHdC5TRVJJRVMsbyksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPUdHdC5VTlNQRUNJRklFRH19Y29uc3Qgbld0PS9eKFteOl0rKTooKFx3Kzp8KVxkKykkLztmdW5jdGlvbiBpV3QodCxlLG4saSxyLG8pe2UhPT1uLm5hbWUmJnQuZWRnZXMucHVzaCh7djplLHc6bi5uYW1lLG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1yLnJlZkVkZ2VzW24ub3ArIiAiK29dfSl9Y29uc3Qgcld0PXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsIlNjYXR0ZXJVcGRhdGUgMCI6ITAsInNjYXR0ZXJfYWRkIDAiOiEwLCJzY2F0dGVyX3N1YiAwIjohMCwic2NhdHRlcl91cGRhdGUgMCI6ITB9fTtmdW5jdGlvbiBvV3QodCxlLG49e30pe2NvbnN0IGk9bmV3IGZHdC5ncmFwaGxpYi5HcmFwaChuKTtyZXR1cm4gaS5zZXRHcmFwaCh7bmFtZTp0LHJhbmtkaXI6bi5yYW5rZGlyfHwiQlQiLHR5cGU6ZX0pLGl9ZnVuY3Rpb24gYVd0KHQpe3JldHVybiBmdW5jdGlvbihlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9bmV3IFJlZ0V4cCh0W25dKTtpZigic3RyaW5nIj09dHlwZW9mIGUub3AmJmUub3AubWF0Y2goaSkpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHNXdCh0KXtsZXQgZT10LnNwbGl0KEhHdCk7cmV0dXJuIHQrSEd0KyIoIitlW2UubGVuZ3RoLTFdKyIpIn1mdW5jdGlvbiBsV3QodCl7bGV0IGU9dC5ub2RlcygpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQubmVpZ2hib3JzKGUpLmxlbmd0aH0pKTtyZXR1cm4gZS5zb3J0KCksZX1mdW5jdGlvbiBjV3QodCxlKXtsZXQgbj1bXSxpPXQuaW5kZXhPZihIR3QpO2Zvcig7aT49MDspbi5wdXNoKHQuc3Vic3RyaW5nKDAsaSkpLGk9dC5pbmRleE9mKEhHdCxpKzEpO2lmKGUpe2xldCBpPWVbdF07aSYmbi5wdXNoKGkpfXJldHVybiBuLnB1c2godCksbn1mdW5jdGlvbiB1V3QodCl7cmV0dXJuIHQ9PT1HR3QuRVhDTFVERT8iQWRkIHRvIG1haW4gZ3JhcGgiOiJSZW1vdmUgZnJvbSBtYWluIGdyYXBoIn1sZXQgaFd0PSIjMGY5ZDU4IixkV3Q9IiNkYjQ0MzciLHBXdD17REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKHQsZSl7bGV0IG49cFd0LkhVRVMsaT1uW3Qlbi5sZW5ndGhdLHI9TWF0aC5zaW4oaSpNYXRoLlBJLzM2MCk7cmV0dXJuICRoKGksLjAxKihlPzMwOjkwLTYwKnIpLC4wMSooZT85NTo4MCkpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFOnQ9PnBXdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxYTEFfQ0xVU1RFUl9QQUxFVFRFOnQ9PnBXdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxVTktOT1dOOiIjZWVlIixHUkFESUVOVF9PVVRMSU5FOiIjODg4In07Y29uc3QgZld0PVsiTm9PcCJdLG1XdD1bXSxnV3Q9WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLF9XdD1uZXcgUmVnRXhwKCJeKD86X19mdW5jdGlvbl9saWJyYXJ5X18pPyhcXHcrKV9bYS16MC05XXs4fSg/Ol9cXGQrKT8kIik7Y2xhc3MgeVd0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPWUsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IFRXdCh0LnJvb3QsdC5ncmFwaE9wdGlvbnMpLHRoaXMuaW5kZXhbdC5yb290Lm5hbWVdPXRoaXMucm9vdCx0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQucm9vdC5uYW1lKSx0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KHQucm9vdC5uYW1lKSx0aGlzLnJvb3QuZXhwYW5kZWQ9ITAsdGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1FTSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzKS5yYW5nZShTZS5leHBvcnRzLm1hcCh6bCh0aGlzLmhpZXJhcmNoeS5kZXZpY2VzLmxlbmd0aCkscFd0LkRFVklDRV9QQUxFVFRFKSksdGhpcy54bGFDbHVzdGVyQ29sb3JNYXA9RU0oKS5kb21haW4odGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMpLnJhbmdlKFNlLmV4cG9ydHMubWFwKHpsKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCkscFd0LlhMQV9DTFVTVEVSX1BBTEVUVEUpKTtsZXQgdD10aGlzLmhpZXJhcmNoeS5yb290Lm1ldGFncmFwaCxlPVdsKHQubm9kZXMoKSwoKGUsbik9PntsZXQgaT10Lm5vZGUoZSk7aWYobnVsbCE9aS5zdGF0cylyZXR1cm4gaS5zdGF0cy50b3RhbEJ5dGVzfSkpO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT1WTSgpLmRvbWFpbihbMCxlXSkucmFuZ2UoZ1d0KTtsZXQgbj1XbCh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKGUpO2lmKG51bGwhPWkuc3RhdHMpcmV0dXJuIGkuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKX0pKTt0aGlzLmNvbXB1dGVUaW1lU2NhbGU9Vk0oKS5kb21haW4oWzAsbl0pLnJhbmdlKGdXdCksdGhpcy5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGU9dGhpcy5oaWVyYXJjaHkuaGFzU2hhcGVJbmZvP0VHdDpWTSgpLmRvbWFpbihbMSx0aGlzLmhpZXJhcmNoeS5tYXhNZXRhRWRnZVNpemVdKS5yYW5nZShbTUd0LDEyXSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1nZXROb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKHQpfWNvbG9ySGlzdG9ncmFtKHQsZSl7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPjApe2NvbnN0IG49U2UuZXhwb3J0cy5zdW0oT2JqZWN0LmtleXModCkubWFwKChlPT50W2VdKSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGk9Pih7Y29sb3I6ZShpKSxwcm9wb3J0aW9uOnRbaV0vbn0pKSl9cmV0dXJuIG51bGx9Z2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5pbmRleClyZXR1cm4gdGhpcy5pbmRleFt0XTtsZXQgZT10aGlzLmhpZXJhcmNoeS5ub2RlKHQpO2lmKCFlKXJldHVybiBudWxsO2xldCBuPWUuaXNHcm91cE5vZGU/bmV3IFRXdChlLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IHdXdChlKTt0aGlzLmluZGV4W3RdPW4sdGhpcy5yZW5kZXJlZE9wTmFtZXMucHVzaCh0KSxlLnN0YXRzJiYobi5tZW1vcnlDb2xvcj10aGlzLm1lbW9yeVVzYWdlU2NhbGUoZS5zdGF0cy50b3RhbEJ5dGVzKSxuLmNvbXB1dGVUaW1lQ29sb3I9dGhpcy5jb21wdXRlVGltZVNjYWxlKGUuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKSkpLG4uaXNGYWRlZE91dD10aGlzLmRpc3BsYXlpbmdTdGF0cyYmIU9HdChlLnN0YXRzKTt2YXIgaT1udWxsLHI9bnVsbCxvPW51bGw7aWYoZS5pc0dyb3VwTm9kZSl7aT1lLmRldmljZUhpc3RvZ3JhbSxyPWUueGxhQ2x1c3Rlckhpc3RvZ3JhbTtsZXQgdD1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZSxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU7MD09dCYmMD09bnx8KG89dC8odCtuKSl9ZWxzZXtsZXQgdD1uLm5vZGUuZGV2aWNlO3QmJihpPXtbdF06MX0pO2xldCBlPW4ubm9kZS54bGFDbHVzdGVyO2UmJihyPXtbZV06MX0pLG4ubm9kZS50eXBlPT09akd0Lk9QJiYobz1uLm5vZGUuY29tcGF0aWJsZT8xOjApfXJldHVybiBpJiYobi5kZXZpY2VDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShpLHRoaXMuZGV2aWNlQ29sb3JNYXApKSxyJiYobi54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0ocix0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcCkpLG51bGwhPW8mJihuLmNvbXBhdGliaWxpdHlDb2xvcnM9W3tjb2xvcjpoV3QscHJvcG9ydGlvbjpvfSx7Y29sb3I6ZFd0LHByb3BvcnRpb246MS1vfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgZT1jV3QodCksbj0wLGk9bnVsbCxyPXQ7Zm9yKDtuPGUubGVuZ3RoJiYocj1lW25dLGk9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHIpLGkuZXhwYW5kZWQpO24rKyk7aWYobj09ZS5sZW5ndGgtMil7bGV0IHQ9ZVtuKzFdO2lmKGkuaW5Bbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHQ7aWYoaS5vdXRBbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHR9cmV0dXJuIHJ9c2V0RGVwdGgodCl7Q1d0KHRoaXMucm9vdCwrdCl9aXNOb2RlQXV4aWxpYXJ5KHQpe2xldCBlPXRoaXMuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0Lm5vZGUucGFyZW50Tm9kZS5uYW1lKSxuPVNlLmV4cG9ydHMuZmluZChlLmlzb2xhdGVkSW5FeHRyYWN0LChlPT5lLm5vZGUubmFtZT09PXQubm9kZS5uYW1lKSk7cmV0dXJuISFufHwobj1TZS5leHBvcnRzLmZpbmQoZS5pc29sYXRlZE91dEV4dHJhY3QsKGU9PmUubm9kZS5uYW1lPT09dC5ub2RlLm5hbWUpKSwhIW4pfWdldE5hbWVzT2ZSZW5kZXJlZE9wcygpe3JldHVybiB0aGlzLnJlbmRlcmVkT3BOYW1lc31jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKHQsZSxuLGkpe2NvbnN0IHI9bi5uYW1lLnJlcGxhY2UoZSxpKTtsZXQgbz10Lm1ldGFncmFwaC5ub2RlKHIpO2lmKG8pcmV0dXJuIG87bz1uZXcgWEd0KHtuYW1lOnIsaW5wdXQ6W10sZGV2aWNlOm4uZGV2aWNlLG9wOm4ub3AsYXR0cjpTZS5leHBvcnRzLmNsb25lRGVlcChuLmF0dHIpfSksby5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LG8uaW5jbHVkZT1uLmluY2x1ZGUsby5vdXRwdXRTaGFwZXM9U2UuZXhwb3J0cy5jbG9uZURlZXAobi5vdXRwdXRTaGFwZXMpLG8ueGxhQ2x1c3Rlcj1uLnhsYUNsdXN0ZXIsby5mdW5jdGlvbklucHV0SW5kZXg9bi5mdW5jdGlvbklucHV0SW5kZXgsby5mdW5jdGlvbk91dHB1dEluZGV4PW4uZnVuY3Rpb25PdXRwdXRJbmRleCxvLmlucHV0cz1uLmlucHV0cy5tYXAoKHQ9Pntjb25zdCBuPVNlLmV4cG9ydHMuY2xvbmUodCk7cmV0dXJuIG4ubmFtZT10Lm5hbWUucmVwbGFjZShlLGkpLG59KSksby5wYXJlbnROb2RlPXQsdC5tZXRhZ3JhcGguc2V0Tm9kZShvLm5hbWUsbyksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShvLm5hbWUsbyk7Y29uc3QgYT1uPT50aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxlLG4saSk7cmV0dXJuIG8uaW5FbWJlZGRpbmdzPW4uaW5FbWJlZGRpbmdzLm1hcChhKSxvLm91dEVtYmVkZGluZ3M9bi5vdXRFbWJlZGRpbmdzLm1hcChhKSxvfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUodCxlLG4saSxyKXtjb25zdCBvPXt9LGE9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKTtyZXR1cm4gU2UuZXhwb3J0cy5pc0VtcHR5KG8pfHx0aGlzLnBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKGUsbyksYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKXtjb25zdCBhPSRHdChuLm5hbWUucmVwbGFjZShpLHIpKTtyZXR1cm4gYS5kZXB0aD1uLmRlcHRoLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLnRlbXBsYXRlSWQ9bi50ZW1wbGF0ZUlkLGEub3BIaXN0b2dyYW09U2UuZXhwb3J0cy5jbG9uZShuLm9wSGlzdG9ncmFtKSxhLmRldmljZUhpc3RvZ3JhbT1TZS5leHBvcnRzLmNsb25lKG4uZGV2aWNlSGlzdG9ncmFtKSxhLnhsYUNsdXN0ZXJIaXN0b2dyYW09U2UuZXhwb3J0cy5jbG9uZShuLnhsYUNsdXN0ZXJIaXN0b2dyYW0pLGEuaGFzTm9uQ29udHJvbEVkZ2VzPW4uaGFzTm9uQ29udHJvbEVkZ2VzLGEuaW5jbHVkZT1uLmluY2x1ZGUsYS5ub2RlQXR0cmlidXRlcz1TZS5leHBvcnRzLmNsb25lKG4ubm9kZUF0dHJpYnV0ZXMpLGEuYXNzb2NpYXRlZEZ1bmN0aW9uPW4uYXNzb2NpYXRlZEZ1bmN0aW9uLFNlLmV4cG9ydHMuZWFjaChuLm1ldGFncmFwaC5ub2RlcygpLChzPT57Y29uc3QgbD1uLm1ldGFncmFwaC5ub2RlKHMpO3N3aXRjaChsLnR5cGUpe2Nhc2Ugakd0Lk1FVEE6Y29uc3Qgbj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxlLGwsaSxyLG8pO24ucGFyZW50Tm9kZT1hLGEubWV0YWdyYXBoLnNldE5vZGUobi5uYW1lLG4pLHRoaXMuaGllcmFyY2h5LnNldE5vZGUobi5uYW1lLG4pO2JyZWFrO2Nhc2Ugakd0Lk9QOmNvbnN0IHM9dGhpcy5jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKGEsaSxsLHIpO1NlLmV4cG9ydHMuaXNOdW1iZXIocy5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoZSxzKSxTZS5leHBvcnRzLmlzTnVtYmVyKHMuZnVuY3Rpb25PdXRwdXRJbmRleCkmJihvW3MuZnVuY3Rpb25PdXRwdXRJbmRleF09cyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4obC5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSkpLHRoaXMuY2xvbmVMaWJyYXJ5TWV0YW5vZGVFZGdlcyhuLGEsaSxyKSxhfWNsb25lTGlicmFyeU1ldGFub2RlRWRnZXModCxlLG4saSl7U2UuZXhwb3J0cy5lYWNoKHQubWV0YWdyYXBoLmVkZ2VzKCksKHI9Pntjb25zdCBvPXQubWV0YWdyYXBoLmVkZ2UociksYT1vLnYucmVwbGFjZShuLGkpLHM9by53LnJlcGxhY2UobixpKSxsPW5ldyBKR3QoYSxzKTtsLmluYm91bmQ9by5pbmJvdW5kLGwubnVtUmVndWxhckVkZ2VzPW8ubnVtUmVndWxhckVkZ2VzLGwubnVtQ29udHJvbEVkZ2VzPW8ubnVtQ29udHJvbEVkZ2VzLGwubnVtUmVmRWRnZXM9by5udW1SZWZFZGdlcyxsLnRvdGFsU2l6ZT1vLnRvdGFsU2l6ZSxvLmJhc2VFZGdlTGlzdCYmKGwuYmFzZUVkZ2VMaXN0PW8uYmFzZUVkZ2VMaXN0Lm1hcCgodD0+e2NvbnN0IGU9U2UuZXhwb3J0cy5jbG9uZSh0KTtyZXR1cm4gZS52PXQudi5yZXBsYWNlKG4saSksZS53PXQudy5yZXBsYWNlKG4saSksZX0pKSksZS5tZXRhZ3JhcGgubm9kZShzKT9lLm1ldGFncmFwaC5zZXRFZGdlKGEscyxsKTplLm1ldGFncmFwaC5zZXRFZGdlKHMsYSxsKX0pKX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKHQsZSl7bGV0IG49TWF0aC5taW4oZS5mdW5jdGlvbklucHV0SW5kZXgsdC5pbnB1dHMubGVuZ3RoLTEpLGk9U2UuZXhwb3J0cy5jbG9uZSh0LmlucHV0c1tuXSk7Zm9yKDtpLmlzQ29udHJvbERlcGVuZGVuY3k7KW4rKyxpPXQuaW5wdXRzW25dO2UuaW5wdXRzLnB1c2goaSk7Y29uc3Qgcj10aGlzLmhpZXJhcmNoeS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKTtsZXQgbyxhPTA7U2UuZXhwb3J0cy5lYWNoKHIucmVndWxhciwodD0+e2lmKGErPXQubnVtUmVndWxhckVkZ2VzLGE+bilyZXR1cm4gbz10LCExfSkpLFNlLmV4cG9ydHMuZWFjaChvLmJhc2VFZGdlTGlzdCwobj0+e24udz09PXQubmFtZSYmKG4udz1lLm5hbWUpLG4udj09PXQubmFtZSYmKG4udj1lLm5hbWUpfSkpfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQsZSl7Y29uc3Qgbj10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKHQubmFtZSk7U2UuZXhwb3J0cy5lYWNoKG4ucmVndWxhciwobj0+e1NlLmV4cG9ydHMuZWFjaChuLmJhc2VFZGdlTGlzdCwobj0+e2NvbnN0IGk9dGhpcy5oaWVyYXJjaHkubm9kZShuLncpO1NlLmV4cG9ydHMuZWFjaChpLmlucHV0cywoaT0+e2kubmFtZT09PXQubmFtZSYmKGkubmFtZT1lW2kub3V0cHV0VGVuc29yS2V5XS5uYW1lLGkub3V0cHV0VGVuc29yS2V5PW4ub3V0cHV0VGVuc29yS2V5KX0pKX0pKSxTZS5leHBvcnRzLmVhY2gobi5iYXNlRWRnZUxpc3QsKHQ9Pnt0LnY9ZVt0Lm91dHB1dFRlbnNvcktleV0ubmFtZSx0Lm91dHB1dFRlbnNvcktleT0iMCJ9KSl9KSl9YnVpbGRTdWJoaWVyYXJjaHkodCl7aWYodCBpbiB0aGlzLmhhc1N1YmhpZXJhcmNoeSlyZXR1cm47dGhpcy5oYXNTdWJoaWVyYXJjaHlbdF09ITA7bGV0IGU9dGhpcy5pbmRleFt0XTtpZihlLm5vZGUudHlwZSE9PWpHdC5NRVRBJiZlLm5vZGUudHlwZSE9PWpHdC5TRVJJRVMpcmV0dXJuO2xldCBuPWUsaT1uLm5vZGUubWV0YWdyYXBoLHI9bi5jb3JlR3JhcGg7Y29uc3Qgbz1bXSxhPVtdO1NlLmV4cG9ydHMuaXNFbXB0eSh0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zKXx8KFNlLmV4cG9ydHMuZWFjaChpLm5vZGVzKCksKHQ9Pntjb25zdCBlPWkubm9kZSh0KSxuPXRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnNbZS5vcF07aWYoIW4pcmV0dXJuO2lmKDA9PT10LmluZGV4T2YoVkd0KSlyZXR1cm47Y29uc3Qgcj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUoaSxlLG4ubm9kZSxuLm5vZGUubmFtZSxlLm5hbWUpO28ucHVzaChlKSxhLnB1c2gocil9KSksU2UuZXhwb3J0cy5lYWNoKGEsKCh0LGUpPT57Y29uc3Qgbj1vW2VdO3QucGFyZW50Tm9kZT1uLnBhcmVudE5vZGUsaS5zZXROb2RlKG4ubmFtZSx0KSx0aGlzLmhpZXJhcmNoeS5zZXROb2RlKG4ubmFtZSx0KX0pKSksU2UuZXhwb3J0cy5lYWNoKGkubm9kZXMoKSwodD0+e2xldCBlPXRoaXMuZ2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpLG49ZS5ub2RlO3Iuc2V0Tm9kZSh0LGUpLG4uaXNHcm91cE5vZGV8fChTZS5leHBvcnRzLmVhY2gobi5pbkVtYmVkZGluZ3MsKHQ9PntsZXQgbj1uZXcgU1d0KG51bGwpLGk9bmV3IHdXdCh0KTtNV3QoZSx0LGksbixiV3QuQ09OU1RBTlQpLHRoaXMuaW5kZXhbdC5uYW1lXT1pfSkpLFNlLmV4cG9ydHMuZWFjaChuLm91dEVtYmVkZGluZ3MsKHQ9PntsZXQgbj1uZXcgU1d0KG51bGwpLGk9bmV3IHdXdCh0KTtFV3QoZSx0LGksbixiV3QuU1VNTUFSWSksdGhpcy5pbmRleFt0Lm5hbWVdPWl9KSkpfSkpLFNlLmV4cG9ydHMuZWFjaChpLmVkZ2VzKCksKHQ9PntsZXQgZT1pLmVkZ2UodCksbj1uZXcgU1d0KGUpO24uaXNGYWRlZE91dD10aGlzLmluZGV4W3Qudl0uaXNGYWRlZE91dHx8dGhpcy5pbmRleFt0LnddLmlzRmFkZWRPdXQsci5zZXRFZGdlKHQudix0Lncsbil9KSksbi5ub2RlLnR5cGU9PT1qR3QuTUVUQSYmKGZ1bmN0aW9uIHModCxlKXsoZnVuY3Rpb24gbih0KXtsZXQgZT10LmNvcmVHcmFwaDtTZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLChuPT57ZS5ub2RlKG4pLm5vZGUuaW5jbHVkZSE9PUdHdC5FWENMVURFfHxuLnN0YXJ0c1dpdGgoVkd0KXx8KHQuY29yZUdyYXBoLm91dEVkZ2VzKG4pLmxlbmd0aD50LmNvcmVHcmFwaC5pbkVkZ2VzKG4pLmxlbmd0aD9rV3QodCxuKTpMV3QodCxuKSl9KSl9KSh0KSxmV3QubGVuZ3RoJiYoZnVuY3Rpb24gaSh0KXtsZXQgZT10LmNvcmVHcmFwaDtTZS5leHBvcnRzLmVhY2goZS5ub2RlcygpLChuPT57bGV0IGk9ZS5ub2RlKG4pO2kubm9kZS5pbmNsdWRlPT09R0d0LlVOU1BFQ0lGSUVEJiZQV3QoaS5ub2RlLGZXdCkmJmtXdCh0LG4pfSkpfSkodCksbVd0Lmxlbmd0aCYmKGZ1bmN0aW9uIHIodCl7bGV0IGU9dC5jb3JlR3JhcGg7U2UuZXhwb3J0cy5lYWNoKGUubm9kZXMoKSwobj0+e2xldCBpPWUubm9kZShuKTtpLm5vZGUuaW5jbHVkZT09PUdHdC5VTlNQRUNJRklFRCYmUFd0KGkubm9kZSxtV3QpJiZMV3QodCxuKX0pKX0pKHQpLGUmJihmdW5jdGlvbiBvKHQpe2xldCBlPXQuY29yZUdyYXBoLG49e30saT17fSxyPTA7aWYoU2UuZXhwb3J0cy5lYWNoKGUubm9kZXMoKSwodD0+e2lmKGUubm9kZSh0KS5ub2RlLmluY2x1ZGUhPT1HR3QuVU5TUEVDSUZJRUQpcmV0dXJuO2xldCBvPVNlLmV4cG9ydHMucmVkdWNlKGUucHJlZGVjZXNzb3JzKHQpLCgobixpKT0+bisoZS5lZGdlKGksdCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzPzE6MCkpLDApOzA9PT1vJiZlLnByZWRlY2Vzc29ycyh0KS5sZW5ndGg+MCYmKG89ZS5wcmVkZWNlc3NvcnModCkubGVuZ3RoKTtsZXQgYT1TZS5leHBvcnRzLnJlZHVjZShlLnN1Y2Nlc3NvcnModCksKChuLGkpPT5uKyhlLmVkZ2UodCxpKS5tZXRhZWRnZS5udW1SZWd1bGFyRWRnZXM/MTowKSksMCk7MD09PWEmJmUuc3VjY2Vzc29ycyh0KS5sZW5ndGg+MCYmKGE9ZS5zdWNjZXNzb3JzKHQpLmxlbmd0aCksblt0XT1vLGlbdF09YSxyKyt9KSkscjwxNSlyZXR1cm47bGV0IG89TWF0aC5yb3VuZCguNzUqciksYT1NYXRoLnJvdW5kKC4yNSpyKSxzPU9iamVjdC5rZXlzKG4pLnNvcnQoKCh0LGUpPT5uW3RdLW5bZV0pKSxsPW5bc1tvXV0sYz1sK2wtbltzW2FdXTtjPU1hdGgubWF4KGMsNCk7Zm9yKGxldCBlPXItMTtuW3NbZV1dPmM7ZS0tKUxXdCh0LHNbZV0pO2xldCB1PU9iamVjdC5rZXlzKGkpLnNvcnQoKCh0LGUpPT5pW3RdLWlbZV0pKSxoPWlbdVtvXV0sZD1oKzQqKGgtaVt1W2FdXSk7ZD1NYXRoLm1heChkLDQpO2ZvcihsZXQgbj1yLTE7aVt1W25dXT5kO24tLSl7bGV0IGk9ZS5ub2RlKHVbbl0pO2kmJiFpLmlzSW5FeHRyYWN0JiZrV3QodCx1W25dKX19KSh0KSwoZnVuY3Rpb24gYSh0KXtsZXQgZT10LmNvcmVHcmFwaCxuPXt9O1NlLmV4cG9ydHMuZWFjaChlLmVkZ2VzKCksKHQ9PntlLmVkZ2UodCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzfHwoKG5bdC52XT1uW3Qudl18fFtdKS5wdXNoKHQpLChuW3Qud109blt0LnddfHxbXSkucHVzaCh0KSl9KSksU2UuZXhwb3J0cy5lYWNoKG4sKCh0LG4pPT57dC5sZW5ndGg+NCYmU2UuZXhwb3J0cy5lYWNoKHQsKHQ9PkFXdChlLHQudix0LncpKSl9KSl9KSh0KTtsZXQgcz10LmNvcmVHcmFwaDtTZS5leHBvcnRzLmVhY2gocy5ub2RlcygpLChlPT57bGV0IG49cy5ub2RlKGUpLGk9cy5uZWlnaGJvcnMoZSkubGVuZ3RoO2lmKG4ubm9kZS5pbmNsdWRlPT09R0d0LlVOU1BFQ0lGSUVEJiYwPT09aSl7bGV0IGk9bi5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wLHI9bi5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjA7bi5pc0luRXh0cmFjdD8odC5pc29sYXRlZEluRXh0cmFjdC5wdXNoKG4pLG4ubm9kZS5pbmNsdWRlPUdHdC5FWENMVURFLHMucmVtb3ZlTm9kZShlKSk6bi5pc091dEV4dHJhY3Q/KHQuaXNvbGF0ZWRPdXRFeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9R0d0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTppJiYhcj8obi5pc0luRXh0cmFjdD0hMCx0Lmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9R0d0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTpyJiYhaSYmKG4uaXNPdXRFeHRyYWN0PSEwLHQuaXNvbGF0ZWRPdXRFeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9R0d0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKX19KSl9KShuLHRoaXMuYXV0b0V4dHJhY3ROb2RlcyksU2UuZXhwb3J0cy5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHx0aGlzLmJ1aWxkU3ViaGllcmFyY2hpZXNGb3JOZWVkZWRGdW5jdGlvbnMoaSksdD09PUZHdCYmU2UuZXhwb3J0cy5mb3JPd24odGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucywoKHQsZSk9Pntjb25zdCBpPXQubm9kZSxvPXRoaXMuZ2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKGkubmFtZSk7bi5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5wdXNoKG8pLG8ubm9kZS5pbmNsdWRlPUdHdC5FWENMVURFLHIucmVtb3ZlTm9kZShpLm5hbWUpfSkpO2xldCBsPW4ubm9kZS5wYXJlbnROb2RlO2lmKCFsKXJldHVybjtsZXQgYz10aGlzLmluZGV4W2wubmFtZV0sdT0odCwuLi5lKT0+ZS5jb25jYXQoW3Q/IklOIjoiT1VUIl0pLmpvaW4oIn5+IiksaD10aGlzLmhpZXJhcmNoeS5nZXRCcmlkZ2VncmFwaCh0KSxkPXtpbjp7fSxvdXQ6e30sY29udHJvbDp7fX07U2UuZXhwb3J0cy5lYWNoKGguZWRnZXMoKSwodD0+e2xldCBlPSEhaS5ub2RlKHQudyksbj1lP3Qudjp0Lnc7aC5lZGdlKHQpLm51bVJlZ3VsYXJFZGdlcz9lP2Qub3V0W25dPShkLm91dFtuXXx8MCkrMTpkLmluW25dPShkLmluW25dfHwwKSsxOmQuY29udHJvbFtuXT0oZC5jb250cm9sW25dfHwwKSsxfSkpO2xldCBwPXRoaXMuaGllcmFyY2h5LmdldE5vZGVNYXAoKTtTZS5leHBvcnRzLmVhY2goaC5lZGdlcygpLChuPT57bGV0IG89aC5lZGdlKG4pLGE9ISFpLm5vZGUobi53KSxbcyxmXT1hP1tuLncsbi52XTpbbi52LG4ud10sbT10aGlzLmluZGV4W3NdLGc9dGhpcy5pbmRleFtmXSxfPWc/Zy5ub2RlOnBbZl0seT0hby5udW1SZWd1bGFyRWRnZXMmJmQuY29udHJvbFtmXT40LFssdl09YT9bZS5pbkFubm90YXRpb25zLG0uaW5Bbm5vdGF0aW9uc106W2Uub3V0QW5ub3RhdGlvbnMsbS5vdXRBbm5vdGF0aW9uc10sYj1udWxsLHg9ITE7aWYoISgoYT9kLm91dDpkLmluKVtmXT40KSYmIXkmJm0uaXNJbkNvcmUoKSl7bGV0IGU9ZT0+Yy5jb3JlR3JhcGguZWRnZShhP3t2OmUsdzp0fTp7djp0LHc6ZX0pO2I9ZShmKSxifHwoYj1lKHUoYSxmLGwubmFtZSkpKSx4PSEhYn1sZXQgdz0hMTtpZihiJiYhby5udW1SZWd1bGFyRWRnZXMpe2xldCB0PWIsZT1jLm5vZGU7Zm9yKDt0LmFkam9pbmluZ01ldGFlZGdlOyl0PXQuYWRqb2luaW5nTWV0YWVkZ2UsZT1lLnBhcmVudE5vZGU7bGV0IG49dGhpcy5oaWVyYXJjaHkuZ2V0VG9wb2xvZ2ljYWxPcmRlcmluZyhlLm5hbWUpLGk9dC5tZXRhZWRnZTt3PW5baS52XT5uW2kud119aWYoeD14JiYhdywheClyZXR1cm4gdm9pZCB2LnB1c2gobmV3IHZXdChfLGcsbmV3IFNXdChvKSxiV3QuU0hPUlRDVVQsYSkpO2xldCBTPXUoYSx0KSxNPXUoYSxmLHQpLEU9ci5ub2RlKE0pO2lmKCFFKXtsZXQgdD1yLm5vZGUoUyk7dHx8KHQ9bmV3IHdXdCh7bmFtZTpTLHR5cGU6akd0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6R0d0LlVOU1BFQ0lGSUVELGluYm91bmQ6YSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbU109dCxyLnNldE5vZGUoUyx0KSksRT1uZXcgd1d0KHtuYW1lOk0sdHlwZTpqR3QuQlJJREdFLGlzR3JvdXBOb2RlOiExLGNhcmRpbmFsaXR5OjEscGFyZW50Tm9kZTpudWxsLHN0YXRzOm51bGwsaW5jbHVkZTpHR3QuVU5TUEVDSUZJRUQsaW5ib3VuZDphLG5vZGVBdHRyaWJ1dGVzOnt9fSksdGhpcy5pbmRleFtNXT1FLHIuc2V0Tm9kZShNLEUpLHIuc2V0UGFyZW50KE0sUyksdC5ub2RlLmNhcmRpbmFsaXR5Kyt9bGV0IFQ9bmV3IFNXdChvKTtULmFkam9pbmluZ01ldGFlZGdlPWIsYT9yLnNldEVkZ2UoTSxzLFQpOnIuc2V0RWRnZShzLE0sVCl9KSksU2UuZXhwb3J0cy5lYWNoKFshMCwhMV0sKGU9PntsZXQgbj11KGUsdCksaT1yLm5vZGUobik7aSYmU2UuZXhwb3J0cy5lYWNoKHIubm9kZXMoKSwobz0+e2lmKHIubm9kZShvKS5ub2RlLnR5cGU9PT1qR3QuQlJJREdFKXJldHVybjtpZighKGU/IXIucHJlZGVjZXNzb3JzKG8pLmxlbmd0aDohci5zdWNjZXNzb3JzKG8pLmxlbmd0aCkpcmV0dXJuO2xldCBhPXUoZSx0LCJTVFJVQ1RVUkFMX1RBUkdFVCIpLHM9ci5ub2RlKGEpO3N8fChzPW5ldyB3V3Qoe25hbWU6YSx0eXBlOmpHdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOkdHdC5VTlNQRUNJRklFRCxpbmJvdW5kOmUsbm9kZUF0dHJpYnV0ZXM6e319KSxzLnN0cnVjdHVyYWw9ITAsdGhpcy5pbmRleFthXT1zLHIuc2V0Tm9kZShhLHMpLGkubm9kZS5jYXJkaW5hbGl0eSsrLHIuc2V0UGFyZW50KGEsbikpO2xldCBsPW5ldyBTV3QobnVsbCk7bC5zdHJ1Y3R1cmFsPSEwLGwud2VpZ2h0LS0sZT9yLnNldEVkZ2UoYSxvLGwpOnIuc2V0RWRnZShvLGEsbCl9KSl9KSl9YnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyh0KXtTZS5leHBvcnRzLmVhY2godC5lZGdlcygpLChlPT57bGV0IG49dC5lZGdlKGUpLGk9bmV3IFNXdChuKTtTZS5leHBvcnRzLmZvckVhY2goaS5tZXRhZWRnZS5iYXNlRWRnZUxpc3QsKHQ9Pntjb25zdCBlPXQudi5zcGxpdChIR3QpO2ZvcihsZXQgdD1lLmxlbmd0aDt0Pj0wO3QtLSl7Y29uc3Qgbj1lLnNsaWNlKDAsdCksaT10aGlzLmhpZXJhcmNoeS5ub2RlKG4uam9pbihIR3QpKTtpZihpKXtpZihpLnR5cGU9PT1qR3QuT1AmJnRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnNbaS5vcF0pZm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGU9bi5zbGljZSgwLHQpLmpvaW4oSEd0KTtlJiZ0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KGUpfWJyZWFrfX19KSl9KSl9fWNsYXNzIHZXdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIpe3RoaXMubm9kZT10LHRoaXMucmVuZGVyTm9kZUluZm89ZSx0aGlzLnJlbmRlck1ldGFlZGdlSW5mbz1uLHRoaXMuYW5ub3RhdGlvblR5cGU9aSx0aGlzLmR4PTAsdGhpcy5keT0wLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLG4mJm4ubWV0YWVkZ2UmJih0aGlzLnY9bi5tZXRhZWRnZS52LHRoaXMudz1uLm1ldGFlZGdlLncpLHRoaXMuaXNJbj1yLHRoaXMucG9pbnRzPVtdfX12YXIgYld0OyEoZnVuY3Rpb24odCl7dFt0LlNIT1JUQ1VUPTBdPSJTSE9SVENVVCIsdFt0LkNPTlNUQU5UPTFdPSJDT05TVEFOVCIsdFt0LlNVTU1BUlk9Ml09IlNVTU1BUlkiLHRbdC5FTExJUFNJUz0zXT0iRUxMSVBTSVMifSkoYld0fHwoYld0PXt9KSk7Y2xhc3MgeFd0e2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0PVtdLHRoaXMubm9kZU5hbWVzPXt9fXB1c2godCl7aWYodC5ub2RlLm5hbWUgaW4gdGhpcy5ub2RlTmFtZXMpcmV0dXJuO2lmKHRoaXMubm9kZU5hbWVzW3Qubm9kZS5uYW1lXT0hMCx0aGlzLmxpc3QubGVuZ3RoPDUpcmV0dXJuIHZvaWQgdGhpcy5saXN0LnB1c2godCk7bGV0IGU9dGhpcy5saXN0W3RoaXMubGlzdC5sZW5ndGgtMV07aWYoZS5hbm5vdGF0aW9uVHlwZT09PWJXdC5FTExJUFNJUyl7bGV0IHQ9ZS5ub2RlO3JldHVybiB2b2lkIHQuc2V0TnVtTW9yZU5vZGVzKCsrdC5udW1Nb3JlTm9kZXMpfWxldCBuPW5ldyBZR3QoMSk7dGhpcy5saXN0LnB1c2gobmV3IHZXdChuLG5ldyB3V3QobiksbnVsbCxiV3QuRUxMSVBTSVMsdC5pc0luKSl9fWNsYXNzIHdXdHtjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLm5vZGU9dCx0aGlzLmV4cGFuZGVkPSExLHRoaXMuaW5Bbm5vdGF0aW9ucz1uZXcgeFd0LHRoaXMub3V0QW5ub3RhdGlvbnM9bmV3IHhXdCx0aGlzLng9MCx0aGlzLnk9MCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLmluYm94V2lkdGg9MCx0aGlzLm91dGJveFdpZHRoPTAsdGhpcy5leGNsdWRlZD0hMSx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy5sYWJlbE9mZnNldD0wLHRoaXMucmFkaXVzPTAsdGhpcy5sYWJlbEhlaWdodD0wLHRoaXMucGFkZGluZ1RvcD0wLHRoaXMucGFkZGluZ0xlZnQ9MCx0aGlzLnBhZGRpbmdSaWdodD0wLHRoaXMucGFkZGluZ0JvdHRvbT0wLHRoaXMuaXNJbkV4dHJhY3Q9ITEsdGhpcy5pc091dEV4dHJhY3Q9ITEsdGhpcy5jb3JlQm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLmlzRmFkZWRPdXQ9ITEsdGhpcy5kaXNwbGF5TmFtZT10Lm5hbWUuc3Vic3RyaW5nKHQubmFtZS5sYXN0SW5kZXhPZihIR3QpKzEpLHQudHlwZT09PWpHdC5NRVRBJiZ0LmFzc29jaWF0ZWRGdW5jdGlvbil7Y29uc3QgdD10aGlzLmRpc3BsYXlOYW1lLm1hdGNoKF9XdCk7dD90aGlzLmRpc3BsYXlOYW1lPXRbMV06U2UuZXhwb3J0cy5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsVkd0KSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoVkd0Lmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1jbGFzcyBTV3R7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fWZ1bmN0aW9uIE1XdCh0LGUsbixpLHIpe2xldCBvPW5ldyB2V3QoZSxuLGksciwhMCk7dC5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gRVd0KHQsZSxuLGkscil7bGV0IG89bmV3IHZXdChlLG4saSxyLCExKTt0Lm91dEFubm90YXRpb25zLnB1c2gobyl9Y2xhc3MgVFd0IGV4dGVuZHMgd1d0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCk7bGV0IG49dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD1vV3Qobi5uYW1lLFVHdC5DT1JFLGUpLHRoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXSx0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mdW5jdGlvbiBDV3QodCxlKXt0LmNvcmVHcmFwaCYmKGZ1bmN0aW9uIG4odCxlKXtTZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChuPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkuZXhwYW5kZWQ9ZT4xLGU+MClzd2l0Y2goaS5ub2RlLnR5cGUpe2Nhc2Ugakd0Lk1FVEE6Y2FzZSBqR3QuU0VSSUVTOkNXdChpLGUtMSl9fSkpfSkodC5jb3JlR3JhcGgsZSl9ZnVuY3Rpb24gQVd0KHQsZSxuKXtsZXQgaT10Lm5vZGUoZSkscj10Lm5vZGUobiksbz10LmVkZ2UoZSxuKTsoaS5ub2RlLmluY2x1ZGUhPT1HR3QuSU5DTFVERSYmci5ub2RlLmluY2x1ZGUhPT1HR3QuSU5DTFVERXx8aS5ub2RlLmluY2x1ZGU9PT1HR3QuRVhDTFVERXx8ci5ub2RlLmluY2x1ZGU9PT1HR3QuRVhDTFVERSkmJihFV3QoaSxyLm5vZGUscixvLGJXdC5TSE9SVENVVCksTVd0KHIsaS5ub2RlLGksbyxiV3QuU0hPUlRDVVQpLHQucmVtb3ZlRWRnZShlLG4pKX1mdW5jdGlvbiBrV3QodCxlLG4pe2xldCBpPXQuY29yZUdyYXBoLHI9aS5ub2RlKGUpO3IuaXNPdXRFeHRyYWN0PSEwLFNlLmV4cG9ydHMuZWFjaChpLnByZWRlY2Vzc29ycyhlKSwoKHQsbik9PntBV3QoaSx0LGUpfSkpLFNlLmV4cG9ydHMuZWFjaChpLnN1Y2Nlc3NvcnMoZSksKCh0LG4pPT57QVd0KGksZSx0KX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9R0d0LkVYQ0xVREUsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIExXdCh0LGUsbil7bGV0IGk9dC5jb3JlR3JhcGgscj1pLm5vZGUoZSk7ci5pc0luRXh0cmFjdD0hMCxTZS5leHBvcnRzLmVhY2goaS5zdWNjZXNzb3JzKGUpLCgodCxuKT0+e0FXdChpLGUsdCl9KSksU2UuZXhwb3J0cy5lYWNoKGkucHJlZGVjZXNzb3JzKGUpLCgodCxuKT0+e0FXdChpLHQsZSl9KSksMD09PWkubmVpZ2hib3JzKGUpLmxlbmd0aCYmKHIubm9kZS5pbmNsdWRlPUdHdC5FWENMVURFLHQuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIFBXdCh0LGUpe2lmKHQudHlwZT09PWpHdC5PUCl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspaWYodC5vcD09PWVbbl0pcmV0dXJuITB9ZWxzZSBpZih0LnR5cGU9PT1qR3QuTUVUQSl7bGV0IG49dC5nZXRSb290T3AoKTtpZihuKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKG4ub3A9PT1lW3RdKXJldHVybiEwfXJldHVybiExfWNvbnN0IE5XdD17YW5pbWF0aW9uOntkdXJhdGlvbjoyNTB9LGdyYXBoOnttZXRhOntub2RlU2VwOjUscmFua1NlcDoyNSxlZGdlU2VwOjV9LHNlcmllczp7bm9kZVNlcDo1LHJhbmtTZXA6MjUsZWRnZVNlcDo1fSxwYWRkaW5nOntwYWRkaW5nVG9wOjQwLHBhZGRpbmdMZWZ0OjIwfX0sc3Vic2NlbmU6e21ldGE6e3BhZGRpbmdUb3A6MTAscGFkZGluZ0JvdHRvbToxMCxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsbGFiZWxIZWlnaHQ6MjAsZXh0cmFjdFhPZmZzZXQ6MTUsZXh0cmFjdFlPZmZzZXQ6MjB9LHNlcmllczp7cGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHBhZGRpbmdMZWZ0OjEwLHBhZGRpbmdSaWdodDoxMCxsYWJlbEhlaWdodDoxMH19LG5vZGVTaXplOnttZXRhOntyYWRpdXM6NSx3aWR0aDo2MCxtYXhMYWJlbFdpZHRoOjUyLGhlaWdodDpWTSgpLmRvbWFpbihbMSwyMDBdKS5yYW5nZShbMTUsNjBdKS5jbGFtcCghMCksZXhwYW5kQnV0dG9uUmFkaXVzOjN9LG9wOnt3aWR0aDoxNSxoZWlnaHQ6NixyYWRpdXM6MyxsYWJlbE9mZnNldDotOCxtYXhMYWJlbFdpZHRoOjMwfSxzZXJpZXM6e2V4cGFuZGVkOntyYWRpdXM6MTAsbGFiZWxPZmZzZXQ6MH0sdmVydGljYWw6e3dpZHRoOjE2LGhlaWdodDoxMyxsYWJlbE9mZnNldDotMTN9LGhvcml6b250YWw6e3dpZHRoOjI0LGhlaWdodDo4LHJhZGl1czoxMCxsYWJlbE9mZnNldDotMTB9fSxicmlkZ2U6e3dpZHRoOjIwLGhlaWdodDoyMCxyYWRpdXM6MixsYWJlbE9mZnNldDowfX0sc2hvcnRjdXRTaXplOntvcDp7d2lkdGg6MTAsaGVpZ2h0OjR9LG1ldGE6e3dpZHRoOjEyLGhlaWdodDo0LHJhZGl1czoxfSxzZXJpZXM6e3dpZHRoOjE0LGhlaWdodDo0fX0sYW5ub3RhdGlvbnM6e2luYm94V2lkdGg6NTAsb3V0Ym94V2lkdGg6NTAseE9mZnNldDoxMCx5T2Zmc2V0OjMsbGFiZWxPZmZzZXQ6MixtYXhMYWJlbFdpZHRoOjQwfSxjb25zdGFudDp7c2l6ZTp7d2lkdGg6NCxoZWlnaHQ6NH19LHNlcmllczp7bWF4U3RhY2tDb3VudDozLHBhcmFsbGVsU3RhY2tPZmZzZXRSYXRpbzouMix0b3dlclN0YWNrT2Zmc2V0UmF0aW86LjV9LG1pbmltYXA6e3NpemU6MTUwfX0sSVd0PTE0MDtmdW5jdGlvbiBSV3QodCl7dC5ub2RlLmlzR3JvdXBOb2RlJiYoZnVuY3Rpb24gZSh0KXtsZXQgZT10LmNvcmVHcmFwaC5ub2RlcygpLm1hcCgoZT0+dC5jb3JlR3JhcGgubm9kZShlKSkpLmNvbmNhdCh0Lmlzb2xhdGVkSW5FeHRyYWN0LHQuaXNvbGF0ZWRPdXRFeHRyYWN0LHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QpO1NlLmV4cG9ydHMuZWFjaChlLCh0PT57c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIGpHdC5PUDpTZS5leHBvcnRzLmV4dGVuZCh0LE5XdC5ub2RlU2l6ZS5vcCk7YnJlYWs7Y2FzZSBqR3QuQlJJREdFOlNlLmV4cG9ydHMuZXh0ZW5kKHQsTld0Lm5vZGVTaXplLmJyaWRnZSk7YnJlYWs7Y2FzZSBqR3QuTUVUQTp0LmV4cGFuZGVkP1JXdCh0KTooU2UuZXhwb3J0cy5leHRlbmQodCxOV3Qubm9kZVNpemUubWV0YSksdC5oZWlnaHQ9Tld0Lm5vZGVTaXplLm1ldGEuaGVpZ2h0KHQubm9kZS5jYXJkaW5hbGl0eSkpO2JyZWFrO2Nhc2Ugakd0LlNFUklFUzp0LmV4cGFuZGVkPyhTZS5leHBvcnRzLmV4dGVuZCh0LE5XdC5ub2RlU2l6ZS5zZXJpZXMuZXhwYW5kZWQpLFJXdCh0KSk6U2UuZXhwb3J0cy5leHRlbmQodCx0Lm5vZGUuaGFzTm9uQ29udHJvbEVkZ2VzP05XdC5ub2RlU2l6ZS5zZXJpZXMudmVydGljYWw6Tld0Lm5vZGVTaXplLnNlcmllcy5ob3Jpem9udGFsKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgbm9kZSB0eXBlOiAiK3Qubm9kZS50eXBlKX10LmV4cGFuZGVkfHwoZnVuY3Rpb24gZSh0KXt0LmluYm94V2lkdGg9dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjA/Tld0LmFubm90YXRpb25zLmluYm94V2lkdGg6MCx0Lm91dGJveFdpZHRoPXQub3V0QW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MD9OV3QuYW5ub3RhdGlvbnMub3V0Ym94V2lkdGg6MCx0LmNvcmVCb3gud2lkdGg9dC53aWR0aCx0LmNvcmVCb3guaGVpZ2h0PXQuaGVpZ2h0LHQud2lkdGg9TWF0aC5tYXgodC5jb3JlQm94LndpZHRoK3QuaW5ib3hXaWR0aCt0Lm91dGJveFdpZHRoLDMqdC5kaXNwbGF5TmFtZS5sZW5ndGgpfSkodCksKGZ1bmN0aW9uIG4odCl7aWYodC5leHBhbmRlZClyZXR1cm47bGV0IGU9dC5pbkFubm90YXRpb25zLmxpc3Qsbj10Lm91dEFubm90YXRpb25zLmxpc3Q7U2UuZXhwb3J0cy5lYWNoKGUsKHQ9PnpXdCh0KSkpLFNlLmV4cG9ydHMuZWFjaChuLCh0PT56V3QodCkpKTtsZXQgaT1OV3QuYW5ub3RhdGlvbnMscj1TZS5leHBvcnRzLnJlZHVjZShlLCgoZSxuLHIpPT57bGV0IG89cj4wP2kueU9mZnNldDowO3JldHVybiBuLmR4PS0odC5jb3JlQm94LndpZHRoK24ud2lkdGgpLzItaS54T2Zmc2V0LG4uZHk9ZStvK24uaGVpZ2h0LzIsZStvK24uaGVpZ2h0fSksMCk7U2UuZXhwb3J0cy5lYWNoKGUsKHQ9Pnt0LmR5LT1yLzIsdC5sYWJlbE9mZnNldD1pLmxhYmVsT2Zmc2V0fSkpO2xldCBvPVNlLmV4cG9ydHMucmVkdWNlKG4sKChlLG4scik9PntsZXQgbz1yPjA/aS55T2Zmc2V0OjA7cmV0dXJuIG4uZHg9KHQuY29yZUJveC53aWR0aCtuLndpZHRoKS8yK2kueE9mZnNldCxuLmR5PWUrbytuLmhlaWdodC8yLGUrbytuLmhlaWdodH0pLDApO1NlLmV4cG9ydHMuZWFjaChuLCh0PT57dC5keS09by8yLHQubGFiZWxPZmZzZXQ9aS5sYWJlbE9mZnNldH0pKTtsZXQgYT1NYXRoLm1pbih0LmhlaWdodC8yLXQucmFkaXVzLHIvMik7YT1hPDA/MDphO2xldCBzPVZNKCkuZG9tYWluKFswLGUubGVuZ3RoLTFdKS5yYW5nZShbLWEsYV0pO1NlLmV4cG9ydHMuZWFjaChlLCgobixpKT0+e24ucG9pbnRzPVt7ZHg6bi5keCtuLndpZHRoLzIsZHk6bi5keX0se2R4Oi10LmNvcmVCb3gud2lkdGgvMixkeTplLmxlbmd0aD4xP3MoaSk6MH1dfSkpO2xldCBsPU1hdGgubWluKHQuaGVpZ2h0LzItdC5yYWRpdXMsby8yKTtsPWw8MD8wOmw7bGV0IGM9Vk0oKS5kb21haW4oWzAsbi5sZW5ndGgtMV0pLnJhbmdlKFstbCxsXSk7U2UuZXhwb3J0cy5lYWNoKG4sKChlLGkpPT57ZS5wb2ludHM9W3tkeDp0LmNvcmVCb3gud2lkdGgvMixkeTpuLmxlbmd0aD4xP2MoaSk6MH0se2R4OmUuZHgtZS53aWR0aC8yLGR5OmUuZHl9XX0pKSx0LmhlaWdodD1NYXRoLm1heCh0LmhlaWdodCxyLG8pfSkodCl9KSl9KSh0KSx0Lm5vZGUudHlwZT09PWpHdC5NRVRBPyhmdW5jdGlvbiBuKHQpe2xldCBlPU5XdC5zdWJzY2VuZS5tZXRhO1NlLmV4cG9ydHMuZXh0ZW5kKHQsZSksU2UuZXhwb3J0cy5leHRlbmQodC5jb3JlQm94LE9XdCh0LmNvcmVHcmFwaCxOV3QuZ3JhcGgubWV0YSkpO2xldCBuPXQuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoP1NlLmV4cG9ydHMubWF4QnkodC5pc29sYXRlZEluRXh0cmFjdCwodD0+dC53aWR0aCkpLndpZHRoOm51bGw7dC5pbkV4dHJhY3RCb3gud2lkdGg9bnVsbCE9bj9uOjAsdC5pbkV4dHJhY3RCb3guaGVpZ2h0PVNlLmV4cG9ydHMucmVkdWNlKHQuaXNvbGF0ZWRJbkV4dHJhY3QsKCh0LG4saSk9PntsZXQgcj1pPjA/ZS5leHRyYWN0WU9mZnNldDowO3JldHVybiBuLng9MCxuLnk9dCtyK24uaGVpZ2h0LzIsdCtyK24uaGVpZ2h0fSksMCk7bGV0IGk9dC5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoP1NlLmV4cG9ydHMubWF4QnkodC5pc29sYXRlZE91dEV4dHJhY3QsKHQ9PnQud2lkdGgpKS53aWR0aDpudWxsO3Qub3V0RXh0cmFjdEJveC53aWR0aD1udWxsIT1pP2k6MCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0PVNlLmV4cG9ydHMucmVkdWNlKHQuaXNvbGF0ZWRPdXRFeHRyYWN0LCgodCxuLGkpPT57bGV0IHI9aT4wP2UuZXh0cmFjdFlPZmZzZXQ6MDtyZXR1cm4gbi54PTAsbi55PXQrcituLmhlaWdodC8yLHQrcituLmhlaWdodH0pLDApO2xldCByPXQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoP1NlLmV4cG9ydHMubWF4QnkodC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCwodD0+dC53aWR0aCkpLndpZHRoOm51bGw7dC5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoPW51bGwhPXI/cjowLHQubGlicmFyeUZ1bmN0aW9uc0JveC5oZWlnaHQ9U2UuZXhwb3J0cy5yZWR1Y2UodC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgbz0wO3QuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPjAmJm8rKyx0Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg+MCYmbysrLHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPjAmJm8rKyx0LmNvcmVHcmFwaC5ub2RlQ291bnQoKT4wJiZvKys7bGV0IGE9bzw9MT8wOm8qTld0LnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQ7Y29uc3Qgcz1NYXRoLm1heChJV3QsdC5pbkV4dHJhY3RCb3gud2lkdGgrdC5vdXRFeHRyYWN0Qm94LndpZHRoKTt0LmNvcmVCb3gud2lkdGgrPXMrYSt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgrYSx0LmNvcmVCb3guaGVpZ2h0PWUubGFiZWxIZWlnaHQrTWF0aC5tYXgodC5pbkV4dHJhY3RCb3guaGVpZ2h0LHQuY29yZUJveC5oZWlnaHQsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0KSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtlLnBhZGRpbmdMZWZ0K2UucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQucGFkZGluZ1RvcCt0LmNvcmVCb3guaGVpZ2h0K3QucGFkZGluZ0JvdHRvbX0pKHQpOnQubm9kZS50eXBlPT09akd0LlNFUklFUyYmKGZ1bmN0aW9uIGkodCl7bGV0IGU9dC5jb3JlR3JhcGgsbj1OV3Quc3Vic2NlbmUuc2VyaWVzO1NlLmV4cG9ydHMuZXh0ZW5kKHQsbiksU2UuZXhwb3J0cy5leHRlbmQodC5jb3JlQm94LE9XdCh0LmNvcmVHcmFwaCxOV3QuZ3JhcGguc2VyaWVzKSksU2UuZXhwb3J0cy5lYWNoKGUubm9kZXMoKSwodD0+e2Uubm9kZSh0KS5leGNsdWRlZD0hMX0pKSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtuLnBhZGRpbmdMZWZ0K24ucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQuY29yZUJveC5oZWlnaHQrbi5wYWRkaW5nVG9wK24ucGFkZGluZ0JvdHRvbX0pKHQpfWZ1bmN0aW9uIE9XdCh0LGUpe1NlLmV4cG9ydHMuZXh0ZW5kKHQuZ3JhcGgoKSx7bm9kZXNlcDplLm5vZGVTZXAscmFua3NlcDplLnJhbmtTZXAsZWRnZXNlcDplLmVkZ2VTZXB9KTtsZXQgbj1bXTtpZihTZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57dC5ub2RlKGUpLm5vZGUudHlwZT09PWpHdC5CUklER0V8fG4ucHVzaChlKX0pKSwhbi5sZW5ndGgpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O2ZHdC5sYXlvdXQodCk7bGV0IGk9MS8wLHI9MS8wLG89LTEvMCxhPS0xLzA7cmV0dXJuIFNlLmV4cG9ydHMuZWFjaChuLChlPT57bGV0IG49dC5ub2RlKGUpLHM9LjUqbi53aWR0aCxsPW4ueC1zLGM9bi54K3M7aT1sPGk/bDppLG89Yz5vP2M6bztsZXQgdT0uNSpuLmhlaWdodCxoPW4ueS11LGQ9bi55K3U7cj1oPHI/aDpyLGE9ZD5hP2Q6YX0pKSxTZS5leHBvcnRzLmVhY2godC5lZGdlcygpLChlPT57bGV0IG49dC5lZGdlKGUpO2lmKG4uc3RydWN0dXJhbClyZXR1cm47bGV0IHM9dC5ub2RlKG4ubWV0YWVkZ2UudiksbD10Lm5vZGUobi5tZXRhZWRnZS53KTtpZigzPT09bi5wb2ludHMubGVuZ3RoJiYoZnVuY3Rpb24gYyh0KXtsZXQgZT1CV3QodFswXSx0WzFdKTtmb3IobGV0IG49MTtuPHQubGVuZ3RoLTE7bisrKXtsZXQgaT1CV3QodFtuXSx0W24rMV0pO2lmKE1hdGguYWJzKGktZSk+MSlyZXR1cm4hMTtlPWl9cmV0dXJuITB9KShuLnBvaW50cykpe2lmKG51bGwhPXMpe2xldCB0PXMuZXhwYW5kZWQ/cy54OkRXdChzKTtuLnBvaW50c1swXS54PXR9aWYobnVsbCE9bCl7bGV0IHQ9bC5leHBhbmRlZD9sLng6RFd0KGwpO24ucG9pbnRzWzJdLng9dH1uLnBvaW50cz1bbi5wb2ludHNbMF0sbi5wb2ludHNbMV1dfW51bGwhPWwmJihuLnBvaW50c1tuLnBvaW50cy5sZW5ndGgtMV09SFd0KG4ucG9pbnRzW24ucG9pbnRzLmxlbmd0aC0yXSxsKSksbnVsbCE9cyYmKG4ucG9pbnRzWzBdPUhXdChuLnBvaW50c1sxXSxzKSksU2UuZXhwb3J0cy5lYWNoKG4ucG9pbnRzLCh0PT57aT10Lng8aT90Lng6aSxvPXQueD5vP3QueDpvLHI9dC55PHI/dC55OnIsYT10Lnk+YT90Lnk6YX0pKX0pKSxTZS5leHBvcnRzLmVhY2godC5ub2RlcygpLChlPT57bGV0IG49dC5ub2RlKGUpO24ueC09aSxuLnktPXJ9KSksU2UuZXhwb3J0cy5lYWNoKHQuZWRnZXMoKSwoZT0+e1NlLmV4cG9ydHMuZWFjaCh0LmVkZ2UoZSkucG9pbnRzLCh0PT57dC54LT1pLHQueS09cn0pKX0pKSx7d2lkdGg6by1pLGhlaWdodDphLXJ9fWZ1bmN0aW9uIHpXdCh0KXtzd2l0Y2godC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBiV3QuQ09OU1RBTlQ6U2UuZXhwb3J0cy5leHRlbmQodCxOV3QuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSBiV3QuU0hPUlRDVVQ6aWYodC5ub2RlLnR5cGU9PT1qR3QuT1ApU2UuZXhwb3J0cy5leHRlbmQodCxOV3Quc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKHQubm9kZS50eXBlPT09akd0Lk1FVEEpU2UuZXhwb3J0cy5leHRlbmQodCxOV3Quc2hvcnRjdXRTaXplLm1ldGEpO2Vsc2V7aWYodC5ub2RlLnR5cGUhPT1qR3QuU0VSSUVTKXRocm93IEVycm9yKCJJbnZhbGlkIG5vZGUgdHlwZTogIit0Lm5vZGUudHlwZSk7U2UuZXhwb3J0cy5leHRlbmQodCxOV3Quc2hvcnRjdXRTaXplLnNlcmllcyl9YnJlYWs7Y2FzZSBiV3QuU1VNTUFSWTpTZS5leHBvcnRzLmV4dGVuZCh0LE5XdC5jb25zdGFudC5zaXplKX19ZnVuY3Rpb24gRFd0KHQpe3JldHVybiB0LmV4cGFuZGVkP3QueDp0LngtdC53aWR0aC8yKyh0LmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg/dC5pbmJveFdpZHRoOjApK3QuY29yZUJveC53aWR0aC8yfWZ1bmN0aW9uIEJXdCh0LGUpe3JldHVybiAxODAqTWF0aC5hdGFuKChlLnktdC55KS8oZS54LXQueCkpL01hdGguUEl9ZnVuY3Rpb24gSFd0KHQsZSl7bGV0IG4saSxyPWUuZXhwYW5kZWQ/ZS54OkRXdChlKSxvPWUueSxhPXQueC1yLHM9dC55LW8sbD1lLmV4cGFuZGVkP2Uud2lkdGg6ZS5jb3JlQm94LndpZHRoLGM9ZS5leHBhbmRlZD9lLmhlaWdodDplLmNvcmVCb3guaGVpZ2h0O3JldHVybiBNYXRoLmFicyhzKSpsLzI+TWF0aC5hYnMoYSkqYy8yPyhzPDAmJihjPS1jKSxuPTA9PT1zPzA6Yy8yKmEvcyxpPWMvMik6KGE8MCYmKGw9LWwpLG49bC8yLGk9MD09PWE/MDpsLzIqcy9hKSx7eDpyK24seTpvK2l9fWNvbnN0IEZXdD14R3QsVld0PXZHdDtsZXQgVVd0PVt7YmFja2dyb3VuZF9jb2xvcjoiI0NDMkYyQyIsbGFiZWw6Ik5hTiJ9LHtiYWNrZ3JvdW5kX2NvbG9yOiIjRkY4RDAwIixsYWJlbDoiLeKIniJ9LHtiYWNrZ3JvdW5kX2NvbG9yOiIjRUFFQUVBIixsYWJlbDoiLSJ9LHtiYWNrZ3JvdW5kX2NvbG9yOiIjQTVBNUE1IixsYWJlbDoiMCJ9LHtiYWNrZ3JvdW5kX2NvbG9yOiIjMjYyNjI2IixsYWJlbDoiKyJ9LHtiYWNrZ3JvdW5kX2NvbG9yOiIjMDAzRUQ0IixsYWJlbDoiK+KIniJ9XTtmdW5jdGlvbiBqV3QodCxlLG4pe251bGwhPXQuYXR0cigidHJhbnNmb3JtIikmJih0PXQudHJhbnNpdGlvbigicG9zaXRpb24iKSksdC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlKyIsIituKyIpIil9ZnVuY3Rpb24gR1d0KHQsZSxuLGkscil7dC50cmFuc2l0aW9uKCkuYXR0cigieCIsZS1pLzIpLmF0dHIoInkiLG4tci8yKS5hdHRyKCJ3aWR0aCIsaSkuYXR0cigiaGVpZ2h0IixyKX1mdW5jdGlvbiBXV3QodCxlLG4saSxyKXt0LnRyYW5zaXRpb24oKS5hdHRyKCJjeCIsZSkuYXR0cigiY3kiLG4pLmF0dHIoInJ4IixpLzIpLmF0dHIoInJ5IixyLzIpfWZ1bmN0aW9uIHFXdCh0LGUpe3JldHVybiBlP3QudG9GaXhlZCgwKTpNYXRoLmFicyh0KT49MT90LnRvRml4ZWQoMSk6dC50b0V4cG9uZW50aWFsKDEpfWxldCBZV3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmhlYWx0aFBpbGxFbnRyaWVzPVVXdH1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7dmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW5Db250YWluZXIiKSxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRmLWRhc2hib2FyZC1sYXlvdXQgLnNjcm9sbGJhciIpO3QmJmUmJih0LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpfV9oZWFsdGhQaWxsc0F2YWlsYWJsZSh0LGUpe3JldHVybiB0JiZlfV9jb21wdXRlVGVuc29yQ291bnRTdHJpbmcodCxlKXtyZXR1cm4gdD90W2VdLnRvRml4ZWQoMCk6IiJ9Z2V0IGhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGUoKXt2YXIgdD10aGlzLnNlbGVjdGVkTm9kZTtpZih0aGlzLmFyZUhlYWx0aFBpbGxzTG9hZGluZylyZXR1cm4gbnVsbDtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxsc1t0XTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBuPWVbdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPzA6dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4XTtyZXR1cm4gbj9uLnZhbHVlLnNsaWNlKDIsOCk6bnVsbH1nZXQgX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLGU9dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4LG49dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYodGhpcy5hbGxTdGVwc01vZGVFbmFibGVkKXJldHVybiB0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXAudG9GaXhlZCgwKTtpZihuKXJldHVybiAwO2ZvcihsZXQgbiBpbiB0KXJldHVybiB0W25dW2VdLnN0ZXAudG9GaXhlZCgwKTtyZXR1cm4gMH1nZXQgX2JpZ2dlc3RTdGVwRXZlclNlZW4oKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHM7Zm9yKGxldCBuIGluIHQpe3ZhciBlPXRbbl07cmV0dXJuIE1hdGgubWF4KHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW4sZVtlLmxlbmd0aC0xXS5zdGVwKX1yZXR1cm4gdGhpcy5fYmlnZ2VzdFN0ZXBFdmVyU2Vlbnx8MH1nZXQgX21heFN0ZXBJbmRleCgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscztmb3IobGV0IGUgaW4gdClyZXR1cm4gdFtlXS5sZW5ndGgtMTtyZXR1cm4gMH1faGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKHQpe3JldHVybiB0JiZ0Lmxlbmd0aH1fdXBkYXRlQWxlcnRzTGlzdCgpe3ZhciB0PXRoaXMuZGVidWdnZXJOdW1lcmljQWxlcnRzLGU9dGhpcy4kJCgiI251bWVyaWMtYWxlcnRzLWJvZHkiKTtpZihlKXtlLmlubmVyVGV4dD0iIjtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO28uaW5uZXJUZXh0PShmPWkuZmlyc3RfdGltZXN0YW1wLChtPStuZXcgRGF0ZS0rbmV3IERhdGUoZi8xZTMpKTwzZTQ/Imp1c3Qgbm93IjptPDZlND9NYXRoLmZsb29yKG0vMWUzKSsiIHNlY29uZHMgYWdvIjptPDEyZTQ/ImEgbWludXRlIGFnbyI6bTwzNmU1P01hdGguZmxvb3IobS82ZTQpKyIgbWludXRlcyBhZ28iOjE9PU1hdGguZmxvb3IobS8zNmU1KT8iYW4gaG91ciBhZ28iOm08ODY0ZTU/TWF0aC5mbG9vcihtLzM2ZTUpKyIgaG91cnMgYWdvIjptPDE3MjhlNT8ieWVzdGVyZGF5IjpNYXRoLmZsb29yKG0vODY0ZTUpKyIgZGF5cyBhZ28iKSxvLmNsYXNzTGlzdC5hZGQoImZpcnN0LW9mZmVuc2UtdGQiKSxyLmFwcGVuZENoaWxkKG8pO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7YS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3ItZGV2aWNlLXRkIik7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cy5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUiKSxzLmlubmVyVGV4dD1pLnRlbnNvcl9uYW1lLHRoaXMuX2FkZE9wRXhwYW5zaW9uTGlzdGVuZXIocyxpLnRlbnNvcl9uYW1lKSxhLmFwcGVuZENoaWxkKHMpO3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2wuY2xhc3NMaXN0LmFkZCgiZGV2aWNlLXNlY3Rpb24td2l0aGluLXRhYmxlIiksbC5pbm5lclRleHQ9IigiK2kuZGV2aWNlX25hbWUrIikiLGEuYXBwZW5kQ2hpbGQobCksci5hcHBlbmRDaGlsZChhKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmNsYXNzTGlzdC5hZGQoIm1pbmktaGVhbHRoLXBpbGwiKTt2YXIgdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2lmKHUuY2xhc3NMaXN0LmFkZCgibWluaS1oZWFsdGgtcGlsbC10ZCIpLHUuYXBwZW5kQ2hpbGQoYyksci5hcHBlbmRDaGlsZCh1KSxpLm5lZ19pbmZfZXZlbnRfY291bnQpe3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2guY2xhc3NMaXN0LmFkZCgibmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLGguaW5uZXJUZXh0PWkubmVnX2luZl9ldmVudF9jb3VudCxoLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkubmVnX2luZl9ldmVudF9jb3VudCsiIGV2ZW50cyB3aXRoIC3iiJ4iKSxjLmFwcGVuZENoaWxkKGgpfWlmKGkucG9zX2luZl9ldmVudF9jb3VudCl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc0xpc3QuYWRkKCJwb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksZC5pbm5lclRleHQ9aS5wb3NfaW5mX2V2ZW50X2NvdW50LGQuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5wb3NfaW5mX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggK+KIniIpLGMuYXBwZW5kQ2hpbGQoZCl9aWYoaS5uYW5fZXZlbnRfY291bnQpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3AuY2xhc3NMaXN0LmFkZCgibmFuLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLHAuaW5uZXJUZXh0PWkubmFuX2V2ZW50X2NvdW50LHAuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5uYW5fZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCBOYU4iKSxjLmFwcGVuZENoaWxkKHApfVlpKGUpLmFwcGVuZENoaWxkKHIpfXZhciBmLG19fV9hZGRPcEV4cGFuc2lvbkxpc3RlbmVyKHQsZSl7dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCgpPT57dmFyIHQsbj0oZnVuY3Rpb24gaSh0LGUsbil7Y29uc3QgaT1uLnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLm1hdGNoKC8oLiopOlx3Ky8pOzI9PT1yLmxlbmd0aCYmKGlbaS5sZW5ndGgtMV09clsxXSk7bGV0IG89aVswXSxhPWUuZ2V0UmVuZGVyTm9kZUJ5TmFtZShvKTtmb3IobGV0IG49MTtuPGkubGVuZ3RoJiZhLm5vZGUudHlwZSE9PWpHdC5PUDtuKyspZS5idWlsZFN1YmhpZXJhcmNoeShvKSxhLmV4cGFuZGVkPSEwLHQuc2V0Tm9kZUV4cGFuZGVkKGEpLG8rPSIvIitpW25dLGE9ZS5nZXRSZW5kZXJOb2RlQnlOYW1lKG8pO3JldHVybiBhLm5vZGUubmFtZX0pKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2VuZSIpLHRoaXMucmVuZGVySGllcmFyY2h5LGUpLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGYtZ3JhcGgtaW5mbyNncmFwaC1pbmZvIik7ciYmKHQ9ci5zY3JvbGxIZWlnaHQtci5zY3JvbGxUb3ApO3ZhciBvPXRoaXMuc2VsZWN0ZWROb2RlO3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG4pO3ZhciBhPSgpPT57ci5zY3JvbGxUb3A9ci5zY3JvbGxIZWlnaHQtdH07ciYmKG8/YSgpOndpbmRvdy5zZXRUaW1lb3V0KGEsMjApKX0pKX19O3ZhciBYV3Q7WVd0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIHsKICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgewogICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC5jb2xvci1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItbGFiZWwsCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAudGVuc29yLWNvdW50IHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBsaW5lLWhlaWdodDogMjZweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyogMzEgY29tZXMgZnJvbSBhZGRpbmcgYSBwYWRkaW5nIG9mIDE1cHggZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nCiAgICogMXB4IHNvIHRoYXQgdGhlIHNsaWRlciB3aWR0aCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwKICAgKiBhbmQgYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICogQXBwYXJlbnRseSwgdGhlIHBhcGVyLXNsaWRlciBsYWNrcyBhIG1peGluIGZvciB0aG9zZSBwYWRkaW5nIHZhbHVlcy4gKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIHRkIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICB9CgogICAgICAudGVuc29yLWRldmljZS10ZCB7CiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5kZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCB7CiAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCA+IGRpdiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgI2V2ZW50LWNvdW50cy10aCB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsIDE0MSwgMCk7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMCwgNjIsIDIxMik7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjA0LCA0NywgNDQpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiwKICAgICAgLnBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIGhlYWx0aC1waWxsLWxlZ2VuZCI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICBFbmFibGUgYWxsIChub3QganVzdCBzYW1wbGVkKSBzdGVwcy4gUmVxdWlyZXMgc2xvdyBkaXNrIHJlYWQuCiAgICAgIDwvZGl2PgogICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgIGlkPSJlbmFibGVBbGxTdGVwc01vZGVUb2dnbGUiCiAgICAgICAgY2hlY2tlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgID4KICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICA8aDI+CiAgICAgICAgU3RlcCBvZiBIZWFsdGggUGlsbHM6CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc3RlcC1udW1iZXItaW5wdXQiCiAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgbWF4PSJbW19iaWdnZXN0U3RlcEV2ZXJTZWVuXV0iCiAgICAgICAgICAgIHZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXA6OmlucHV0fX0iCiAgICAgICAgICAvPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgW1tfY3VycmVudFN0ZXBEaXNwbGF5VmFsdWVdXQogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHBhcGVyLXNwaW5uZXItbGl0ZQogICAgICAgICAgYWN0aXZlCiAgICAgICAgICBoaWRkZW4kPSJbWyFhcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIgogICAgICAgID48L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgPC9oMj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIgogICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICAgIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIgogICAgICAgICAgc25hcHMKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWFsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tYXhTdGVwSW5kZXhdXSI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zdGVwLXNsaWRlciIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxoMj4KICAgICAgICBIZWFsdGggUGlsbAogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlXV0iPgogICAgICAgICAgQ291bnRzIGZvciBTZWxlY3RlZCBOb2RlCiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGVdXSI+CiAgICAgICAgICBMZWdlbmQKICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2gyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2hlYWx0aFBpbGxFbnRyaWVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWx0aC1waWxsLWVudHJ5Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImNvbG9yLXByZXZpZXciCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbaXRlbS5iYWNrZ3JvdW5kX2NvbG9yXV0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sYWJlbCI+W1tpdGVtLmxhYmVsXV08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRlbnNvci1jb3VudCI+CiAgICAgICAgICAgIFtbX2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyhoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlLAogICAgICAgICAgICBpbmRleCldXQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgaGlkZGVuJD0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iPgogICAgICAgIDxoMiBpZD0ibnVtZXJpYy1hbGVydHMtaGVhZGVyIj5OdW1lcmljIEFsZXJ0czwvaDI+CiAgICAgICAgPHA+QWxlcnRzIGFyZSBzb3J0ZWQgZnJvbSB0b3AgdG8gYm90dG9tIGJ5IGluY3JlYXNpbmcgdGltZXN0YW1wLjwvcD4KICAgICAgICA8ZGl2IGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZS1jb250YWluZXIiPgogICAgICAgICAgPHRhYmxlIGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZSI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+Rmlyc3QgT2ZmZW5zZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+VGVuc29yIChEZXZpY2UpPC90aD4KICAgICAgICAgICAgICAgIDx0aCBpZD0iZXZlbnQtY291bnRzLXRoIj5FdmVudCBDb3VudHM8L3RoPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keSBpZD0ibnVtZXJpYy1hbGVydHMtYm9keSI+PC90Ym9keT4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgIGlmPSJbWyFfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyldXSIKICAgICAgPgogICAgICAgIDxwIGNsYXNzPSJuby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24iPgogICAgICAgICAgTm8gbnVtZXJpYyBhbGVydHMgc28gZmFyLiBUaGF0IGlzIGxpa2VseSBnb29kLiBBbGVydHMgaW5kaWNhdGUgdGhlCiAgICAgICAgICBwcmVzZW5jZSBvZiBOYU4gb3IgKCsvLSkgSW5maW5pdHkgdmFsdWVzLCB3aGljaCBtYXkgYmUgY29uY2VybmluZy4KICAgICAgICA8L3A+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIseVd0KV0sWVd0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFlXdC5wcm90b3R5cGUsImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxZV3QucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxZV3QucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxZV3QucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxZV3QucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFlXdC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWVd0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWVd0LnByb3RvdHlwZSwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxZV3QucHJvdG90eXBlLCJoZWFsdGhQaWxsRW50cmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFlXdC5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCksdChbcygibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsImhlYWx0aFBpbGxTdGVwSW5kZXgiLCJzZWxlY3RlZE5vZGUiLCJhbGxTdGVwc01vZGVFbmFibGVkIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZV3QucHJvdG90eXBlLCJoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIiwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWVd0LnByb3RvdHlwZSwiX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWVd0LnByb3RvdHlwZSwiX2JpZ2dlc3RTdGVwRXZlclNlZW4iLG51bGwpLHQoW3MoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZV3QucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFthKCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFlXdC5wcm90b3R5cGUsIl91cGRhdGVBbGVydHNMaXN0IixudWxsKSxZV3Q9dChbaSgidGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkIildLFlXdCksKGZ1bmN0aW9uKHQpe3QuQ09OU1Q9IkNPTlNUIix0Lk1FVEE9Ik1FVEEiLHQuT1A9Ik9QIix0LlNFUklFUz0iU0VSSUVTIix0LlNVTU1BUlk9IlNVTU1BUlkifSkoWFd0fHwoWFd0PXt9KSk7bGV0ICRXdD1jbGFzcyBleHRlbmRzKGVyKGlsKHllKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZlcnRpY2FsPSExLHRoaXMuZmlsbE92ZXJyaWRlPW51bGwsdGhpcy5zdHJva2VPdmVycmlkZT1udWxsLHRoaXMuaGVpZ2h0PTIwLHRoaXMuZmFkZWQ9ITF9Z2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc31nZXQgX2ZpbGwoKXt2YXIgdD10aGlzLmZpbGxPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgWFd0Lk1FVEE6cmV0dXJuIHBXdC5ERUZBVUxUX0ZJTEw7Y2FzZSBYV3QuU0VSSUVTOnJldHVybiJ3aGl0ZSI7ZGVmYXVsdDpyZXR1cm4iI2ZmZmZmZiJ9fWdldCBfc3Ryb2tlKCl7dmFyIHQ9dGhpcy5zdHJva2VPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgWFd0Lk1FVEE6cmV0dXJuIHBXdC5ERUZBVUxUX1NUUk9LRTtjYXNlIFhXdC5TRVJJRVM6ZGVmYXVsdDpyZXR1cm4iI2IyYjJiMiJ9fV9pc1R5cGUodCxlKXtyZXR1cm4gdD09PWV9X2ZhZGVkQ2xhc3ModCxlKXtyZXR1cm4gdD8iZmFkZWQtIitlOiIifX07JFd0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAwOwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSBzdmcgewogICAgICAgIGZpbHRlcjogaW52ZXJ0KDEpOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCB7CiAgICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtZWxsaXBzZSB7CiAgICAgICAgZmlsbDogdXJsKCNlbGxpcHNlSGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCwKICAgICAgLmZhZGVkLWVsbGlwc2UsCiAgICAgIC5mYWRlZC1zZXJpZXMgewogICAgICAgIHN0cm9rZTogdmFyKC0tdGItZ3JhcGgtZmFkZWQpICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgI3JlY3RIYXRjaCBsaW5lLAogICAgICAjZWxsaXBzZUhhdGNoIGxpbmUgewogICAgICAgIGNvbG9yOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8IS0tIFNWRyBmb3IgZGVmaW5pdGlvbnMgLS0+CiAgICA8c3ZnIGhlaWdodD0iMCIgd2lkdGg9IjAiIGlkPSJzdmdEZWZzIj4KICAgICAgPGRlZnM+CiAgICAgICAgPCEtLSBIYXRjaCBwYXR0ZXJucyBmb3IgZmFkZWQgb3V0IG5vZGVzLiAtLT4KICAgICAgICA8cGF0dGVybgogICAgICAgICAgaWQ9InJlY3RIYXRjaCIKICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgICAgd2lkdGg9IjUiCiAgICAgICAgICBoZWlnaHQ9IjUiCiAgICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgID4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDxwYXR0ZXJuCiAgICAgICAgICBpZD0iZWxsaXBzZUhhdGNoIgogICAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgICB3aWR0aD0iMiIKICAgICAgICAgIGhlaWdodD0iMiIKICAgICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgPgogICAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjIiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiPjwvbGluZT4KICAgICAgICA8L3BhdHRlcm4+CiAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBlbGxpcHNlLiAtLT4KICAgICAgICA8ZWxsaXBzZQogICAgICAgICAgaWQ9Im9wLW5vZGUtc3RhbXAiCiAgICAgICAgICByeD0iNy41IgogICAgICAgICAgcnk9IjMiCiAgICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICAgID48L2VsbGlwc2U+CiAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBhbm5vdGF0aW9uIGVsbGlwc2UgKHNtYWxsZXIpLiAtLT4KICAgICAgICA8ZWxsaXBzZQogICAgICAgICAgaWQ9Im9wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIKICAgICAgICAgIHJ4PSI1IgogICAgICAgICAgcnk9IjIiCiAgICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICAgID48L2VsbGlwc2U+CiAgICAgICAgPCEtLSBWZXJ0aWNhbGx5IHN0YWNrZWQgc2VyaWVzIG9mIE9wIG5vZGVzIHdoZW4gdW5leHBhbmRlZC4gLS0+CiAgICAgICAgPGcgaWQ9Im9wLXNlcmllcy12ZXJ0aWNhbC1zdGFtcCI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI5Ij48L3VzZT4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjYiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iMyI+PC91c2U+CiAgICAgICAgPC9nPgogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxNiIgeT0iNCI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI0Ij48L3VzZT4KICAgICAgICA8L2c+CiAgICAgICAgPGcKICAgICAgICAgIGlkPSJzdW1tYXJ5LWljb24iCiAgICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICAgIHdpZHRoPSIxMiIKICAgICAgICA+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6IgogICAgICAgICAgPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICAgIDwvZGVmcz4KICAgIDwvc3ZnPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ0NPTlNUJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICA+CiAgICAgICAgPGNpcmNsZQogICAgICAgICAgY3g9IjUiCiAgICAgICAgICBjeT0iNSIKICAgICAgICAgIHI9IjMiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgPjwvY2lyY2xlPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnU1VNTUFSWScpXV0iPgogICAgICA8c3ZnCiAgICAgICAgd2lkdGgkPSJbW2hlaWdodF1dIgogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgdmlld0JveD0iMCAwIDI0IDI0IgogICAgICAgIGZpbGw9IiM4NDg0ODQiCiAgICAgID4KICAgICAgICA8cGF0aAogICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICA+PC9wYXRoPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnT1AnKV1dIj4KICAgICAgPHN2ZwogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTYgOCIKICAgICAgPgogICAgICAgIDx1c2UKICAgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgICAgICAgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdlbGxpcHNlJyl9fSIKICAgICAgICAgIHg9IjgiCiAgICAgICAgICB5PSI0IgogICAgICAgID48L3VzZT4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ01FVEEnKV1dIj4KICAgICAgPHN2ZwogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICB2aWV3Qm94PSIwIDAgMzcgMTYiCiAgICAgID4KICAgICAgICA8cmVjdAogICAgICAgICAgeD0iMSIKICAgICAgICAgIHk9IjEiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdyZWN0Jyl9fSIKICAgICAgICAgIHN0cm9rZS13aWR0aD0iMnB4IgogICAgICAgICAgaGVpZ2h0PSIxNCIKICAgICAgICAgIHdpZHRoPSIzNSIKICAgICAgICAgIHJ4PSI1IgogICAgICAgICAgcnk9IjUiCiAgICAgICAgPjwvcmVjdD4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ1NFUklFUycpXV0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbdmVydGljYWxdXSI+CiAgICAgICAgPHN2ZwogICAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMTYgMTUiCiAgICAgICAgPgogICAgICAgICAgPHVzZQogICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgeGxpbms6aHJlZj0iI29wLXNlcmllcy12ZXJ0aWNhbC1zdGFtcCIKICAgICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICAgIGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhmYWRlZCwgJ3NlcmllcycpfX0iCiAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgIHk9IjIiCiAgICAgICAgICA+PC91c2U+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shdmVydGljYWxdXSI+CiAgICAgICAgPHN2ZwogICAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMTAiCiAgICAgICAgPgogICAgICAgICAgPHVzZQogICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgeGxpbms6aHJlZj0iI29wLXNlcmllcy1ob3Jpem9udGFsLXN0YW1wIgogICAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgICBzdHJva2UkPSJbW19zdHJva2VdXSIKICAgICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnc2VyaWVzJyl9fSIKICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgeT0iMSIKICAgICAgICAgID48L3VzZT4KICAgICAgICA8L3N2Zz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSwkV3QucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sJFd0LnByb3RvdHlwZSwidmVydGljYWwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJFd0LnByb3RvdHlwZSwiZmlsbE92ZXJyaWRlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRXdC5wcm90b3R5cGUsInN0cm9rZU92ZXJyaWRlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLCRXdC5wcm90b3R5cGUsImhlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLCRXdC5wcm90b3R5cGUsImZhZGVkIix2b2lkIDApLHQoW3MoInR5cGUiLCJmaWxsT3ZlcnJpZGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSwkV3QucHJvdG90eXBlLCJfZmlsbCIsbnVsbCksdChbcygidHlwZSIsInN0cm9rZU92ZXJyaWRlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJFd0LnByb3RvdHlwZSwiX3N0cm9rZSIsbnVsbCksJFd0PXQoW2koInRmLWdyYXBoLWljb24iKV0sJFd0KTt2YXIgS1d0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGdldCBHcmFwaEljb25UeXBlKCl7cmV0dXJuIFhXdH19KTtmdW5jdGlvbiBaV3QodCxlKXtjb25zdCBuPXQuZ2V0Q29udGV4dE1lbnUoKSxpPVN1KHQuZ2V0Q29udGV4dE1lbnUoKSk7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7bGV0IGE9dXU7Y29uc3Qgcz0oZnVuY3Rpb24gbCh0KXtsZXQgZT0wLG49MCxpPXQ7Zm9yKDtpJiZpLm9mZnNldExlZnQ+PTAmJmkub2Zmc2V0VG9wPj0wOyllKz1pLm9mZnNldExlZnQtaS5zY3JvbGxMZWZ0LG4rPWkub2Zmc2V0VG9wLWkuc2Nyb2xsVG9wLGk9aS5vZmZzZXRQYXJlbnQ7cmV0dXJue2xlZnQ6ZSx0b3A6bn19KSh0KTtmdW5jdGlvbiBjKHQpe3QmJnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMobil8fChpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixjLHtjYXB0dXJlOiEwfSkpfWkuc3R5bGUoImRpc3BsYXkiLCJibG9jayIpLnN0eWxlKCJsZWZ0IixhLmNsaWVudFgtcy5sZWZ0KzErInB4Iikuc3R5bGUoInRvcCIsYS5jbGllbnRZLXMudG9wKzErInB4IiksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGMse2NhcHR1cmU6ITB9KSxpLmh0bWwoIiIpLGkuYXBwZW5kKCJ1bCIpLnNlbGVjdEFsbCgibGkiKS5kYXRhKGUpLmVudGVyKCkuYXBwZW5kKCJsaSIpLm9uKCJjbGljayIsKCh0LGUpPT57dC5hY3Rpb24odGhpcyxyLG8pLGMoKX0pKS5odG1sKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZShyKX0pKX19bGV0IEpXdD1hRSgpLmRvbWFpbihbTUd0LDEyXSkucmFuZ2UoWyJzbWFsbCIsIm1lZGl1bSIsImxhcmdlIiwieGxhcmdlIl0pO2Z1bmN0aW9uIFFXdCh0KXtyZXR1cm4gdC52KyItLSIrdC53fWZ1bmN0aW9uIHRxdCh0LGUpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0LnYpO2lmKG51bGw9PW4ub3V0cHV0U2hhcGVzfHxTZS5leHBvcnRzLmlzRW1wdHkobi5vdXRwdXRTaGFwZXMpKXJldHVybiBudWxsO2xldCBpPW4ub3V0cHV0U2hhcGVzW3Qub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbnVsbD09aT9udWxsOjA9PT1pLmxlbmd0aD8ic2NhbGFyIjppLm1hcCgodD0+LTE9PT10PyI/Ijp0KSkuam9pbigiw5ciKX1mdW5jdGlvbiBlcXQodCxlKXtyZXR1cm4gZS5lZGdlTGFiZWxGdW5jdGlvbj9lLmVkZ2VMYWJlbEZ1bmN0aW9uKHQsZSk6dC5iYXNlRWRnZUxpc3QubGVuZ3RoPjE/dC5iYXNlRWRnZUxpc3QubGVuZ3RoKyIgdGVuc29ycyI6dHF0KHQuYmFzZUVkZ2VMaXN0WzBdLGUpfWZ1bmN0aW9uIG5xdCh0LGUsbil7Y29uc3QgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoYkd0LCJwYXRoIik7Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspaWYoaS5zZXRBdHRyaWJ1dGUoImQiLG4odC5zbGljZSgwLHIpKSksaS5nZXRUb3RhbExlbmd0aCgpPmUpcmV0dXJuIHItMTtyZXR1cm4gdC5sZW5ndGgtMX1mdW5jdGlvbiBpcXQodCxlLG4pe2xldCBpPXVMKCkueCgodD0+dC54KSkueSgodD0+dC55KSkscj1TdShkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpKS5hdHRyKCJkIixpKHQpKSxvPStlLmF0dHIoIm1hcmtlcldpZHRoIiksYT1lLmF0dHIoInZpZXdCb3giKS5zcGxpdCgiICIpLm1hcChOdW1iZXIpLHM9YVsyXS1hWzBdLGw9K2UuYXR0cigicmVmWCIpLGM9ci5ub2RlKCk7aWYobil7Y29uc3QgZT1vKigxLWwvcyksbj1jLmdldFBvaW50QXRMZW5ndGgoZSkscj1ucXQodCxlLGkpO3JldHVybiB0W3ItMV09e3g6bi54LHk6bi55fSx0LnNsaWNlKHItMSl9e2NvbnN0IGU9MS1sL3Msbj1jLmdldFRvdGFsTGVuZ3RoKCktbyplLHI9Yy5nZXRQb2ludEF0TGVuZ3RoKG4pLGE9bnF0KHQsbixpKTtyZXR1cm4gdFthXT17eDpyLngseTpyLnl9LHQuc2xpY2UoMCxhKzEpfX1mdW5jdGlvbiBycXQodCxlLG4saSl7aT1pfHx2R3QuRWRnZS5MSU5FLGUubGFiZWwmJmUubGFiZWwuc3RydWN0dXJhbCYmKGkrPSIgIit2R3QuRWRnZS5TVFJVQ1RVUkFMKSxlLmxhYmVsJiZlLmxhYmVsLm1ldGFlZGdlJiZlLmxhYmVsLm1ldGFlZGdlLm51bVJlZkVkZ2VzJiYoaSs9IiAiK3ZHdC5FZGdlLlJFRkVSRU5DRV9FREdFKSxuLmhhbmRsZUVkZ2VTZWxlY3RlZCYmKGkrPSIgIit2R3QuRWRnZS5TRUxFQ1RBQkxFKTtsZXQgcixvPSJwYXRoXyIrUVd0KGUpO2lmKG4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aEZ1bmN0aW9uKXI9bi5yZW5kZXJIaWVyYXJjaHkuZWRnZVdpZHRoRnVuY3Rpb24oZSxpKTtlbHNle2xldCB0PTE7bnVsbCE9ZS5sYWJlbCYmbnVsbCE9ZS5sYWJlbC5tZXRhZWRnZSYmKHQ9ZS5sYWJlbC5tZXRhZWRnZS50b3RhbFNpemUpLHI9bi5yZW5kZXJIaWVyYXJjaHkuZWRnZVdpZHRoU2l6ZWRCYXNlZFNjYWxlKHQpfWxldCBhPXQuYXBwZW5kKCJwYXRoIikuYXR0cigiaWQiLG8pLmF0dHIoImNsYXNzIixpKS5zdHlsZSgic3Ryb2tlLXdpZHRoIixyKyJweCIpO2lmKGUubGFiZWwmJmUubGFiZWwubWV0YWVkZ2UpaWYoZS5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcyl7Y29uc3QgdD1gcmVmZXJlbmNlLWFycm93aGVhZC0ke0pXdChyKX1gO2Euc3R5bGUoIm1hcmtlci1zdGFydCIsYHVybCgjJHt0fSlgKSxlLmxhYmVsLnN0YXJ0TWFya2VySWQ9dH1lbHNle2NvbnN0IHQ9YGRhdGFmbG93LWFycm93aGVhZC0ke0pXdChyKX1gO2Euc3R5bGUoIm1hcmtlci1lbmQiLGB1cmwoIyR7dH0pYCksZS5sYWJlbC5lbmRNYXJrZXJJZD10fWlmKG51bGw9PWUubGFiZWx8fG51bGw9PWUubGFiZWwubWV0YWVkZ2UpcmV0dXJuO2xldCBzPWVxdChlLmxhYmVsLm1ldGFlZGdlLG4ucmVuZGVySGllcmFyY2h5KTtudWxsIT1zJiZ0LmFwcGVuZCgidGV4dCIpLmFwcGVuZCgidGV4dFBhdGgiKS5hdHRyKCJ4bGluazpocmVmIiwiIyIrbykuYXR0cigic3RhcnRPZmZzZXQiLCI1MCUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLnRleHQocyl9bGV0IG9xdD11TCgpLmN1cnZlKCRMKS54KCh0PT50LngpKS55KCh0PT50LnkpKTt2YXIgYXF0O2Z1bmN0aW9uIHNxdCh0LGUsbil7bGV0IGk9d0d0KHQsImciLHZHdC5Ob2RlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShlLCh0PT50Lm5vZGUubmFtZSsiOiIrdC5ub2RlLnR5cGUpKTtyZXR1cm4gaS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsKHQ9PnQubm9kZS5uYW1lKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9U3UodGhpcyk7bi5hZGROb2RlR3JvdXAodC5ub2RlLm5hbWUsZSl9KSkubWVyZ2UoaSkuYXR0cigiY2xhc3MiLCh0PT52R3QuTm9kZS5HUk9VUCsiICIreXF0KHQpKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9U3UodGhpcyk7QXF0KHdHdChlLCJnIix2R3QuQW5ub3RhdGlvbi5JTkJPWCksdC5pbkFubm90YXRpb25zLHQsbiksQXF0KHdHdChlLCJnIix2R3QuQW5ub3RhdGlvbi5PVVRCT1gpLHQub3V0QW5ub3RhdGlvbnMsdCxuKTtsZXQgaT1fcXQoZSx0LHZHdC5Ob2RlLlNIQVBFKTt0Lm5vZGUuaXNHcm91cE5vZGUmJihmdW5jdGlvbiByKHQsZSxuKXtsZXQgaT13R3QodCwiZyIsdkd0Lk5vZGUuQlVUVE9OX0NPTlRBSU5FUik7d0d0KGksImNpcmNsZSIsdkd0Lk5vZGUuQlVUVE9OX0NJUkNMRSksd0d0KGksInBhdGgiLHZHdC5Ob2RlLkVYUEFORF9CVVRUT04pLmF0dHIoImQiLCJNMCwtMi4yIFYyLjIgTS0yLjIsMCBIMi4yIiksd0d0KGksInBhdGgiLHZHdC5Ob2RlLkNPTExBUFNFX0JVVFRPTikuYXR0cigiZCIsIk0tMi4yLDAgSDIuMiIpLGkub24oImNsaWNrIiwodD0+e3V1LnN0b3BQcm9wYWdhdGlvbigpLG4uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLChmdW5jdGlvbiByKHQsZSl7bGV0IG49RFd0KGUpKyhlLmV4cGFuZGVkP2Uud2lkdGg6ZS5jb3JlQm94LndpZHRoKS8yLTYsaT1lLnktKGUuZXhwYW5kZWQ/ZS5oZWlnaHQ6ZS5jb3JlQm94LmhlaWdodCkvMis2O2Uubm9kZS50eXBlIT09akd0LlNFUklFU3x8ZS5leHBhbmRlZHx8KG4rPTEwLGktPTIpO2xldCByPSJ0cmFuc2xhdGUoIituKyIsIitpKyIpIjt0LnNlbGVjdEFsbCgicGF0aCIpLnRyYW5zaXRpb24oKS5hdHRyKCJ0cmFuc2Zvcm0iLHIpLHQuc2VsZWN0KCJjaXJjbGUiKS50cmFuc2l0aW9uKCkuYXR0cih7Y3g6bixjeTppLHI6Tld0Lm5vZGVTaXplLm1ldGEuZXhwYW5kQnV0dG9uUmFkaXVzfSl9KShpLGUpfSkoaSx0LG4pLGNxdChpLHQsbiksKGZ1bmN0aW9uIG8odCxlLG4pe2lmKGUubm9kZS5pc0dyb3VwTm9kZSl7aWYoZS5leHBhbmRlZClyZXR1cm4gTHF0KHQsZSxuLHZHdC5TdWJzY2VuZS5HUk9VUCk7Rld0KHQsImciLHZHdC5TdWJzY2VuZS5HUk9VUCkucmVtb3ZlKCl9fSkoZSx0LG4pLGNxdCgoZnVuY3Rpb24gYSh0LGUsbil7bGV0IGk9ZS5kaXNwbGF5TmFtZSxyPWUubm9kZS50eXBlPT09akd0Lk1FVEEmJiFlLmV4cGFuZGVkLG89d0d0KHQsInRleHQiLHZHdC5Ob2RlLkxBQkVMKSxhPW8ubm9kZSgpO2EucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChhKSxvLmF0dHIoImR5IiwiLjM1ZW0iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpO2xldCBzPTg7c3dpdGNoKGUubm9kZS50eXBlKXtjYXNlIGpHdC5NRVRBOnM9ZS5leHBhbmRlZD85Ojg7YnJlYWs7Y2FzZSBqR3QuT1A6cz02fWlmKHIpe2kubGVuZ3RoPm4ubWF4TWV0YW5vZGVMYWJlbExlbmd0aCYmKGk9aS5zdWJzdHIoMCxuLm1heE1ldGFub2RlTGFiZWxMZW5ndGgtMikrIuKApiIpO2xldCB0PShmdW5jdGlvbiBsKHQpe3JldHVybiBtcXR8fChtcXQ9Vk0oKS5kb21haW4oW3QubWF4TWV0YW5vZGVMYWJlbExlbmd0aExhcmdlRm9udCx0Lm1heE1ldGFub2RlTGFiZWxMZW5ndGhdKS5yYW5nZShbdC5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemUsdC5taW5NZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemVdKS5jbGFtcCghMCkpLG1xdH0pKG4pO28uYXR0cigiZm9udC1zaXplIix0KGkubGVuZ3RoKSsicHgiKSxzPXQoaS5sZW5ndGgpfXJldHVybiBmcXQoby50ZXh0KGkpLGUubm9kZS50eXBlLHMsZSksb30pKGUsdCxuKSx0LG4sdC5ub2RlLnR5cGU9PT1qR3QuTUVUQSksd3F0KGUsdCxuKSwoZnVuY3Rpb24gcyh0LGUpe2xldCBuPUZXdCh0LCJnIix2R3QuTm9kZS5TSEFQRSksaT1EV3QoZSk7c3dpdGNoKGUubm9kZS50eXBlKXtjYXNlIGpHdC5PUDp7Y29uc3Qgcj1lLm5vZGU7U2UuZXhwb3J0cy5pc051bWJlcihyLmZ1bmN0aW9uSW5wdXRJbmRleCl8fFNlLmV4cG9ydHMuaXNOdW1iZXIoci5mdW5jdGlvbk91dHB1dEluZGV4KT8oZnVuY3Rpb24gcih0LGUsbixpLG8pe2NvbnN0IGE9by8yLHM9aS8yLGw9W1tlLG4tYV0sW2UrcyxuK2FdLFtlLXMsbithXV07dC50cmFuc2l0aW9uKCkuYXR0cigicG9pbnRzIixsLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCIgIikpfSkoRld0KG4sInBvbHlnb24iKSxlLngsZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KTpXV3QoRld0KG4sImVsbGlwc2UiKSxpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCksZ3F0KHQsaSxlLnksZS5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBqR3QuTUVUQTp7bGV0IHI9bi5zZWxlY3RBbGwoInJlY3QiKTtlLmV4cGFuZGVkPyhHV3QocixlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpLGxxdCh0LGUpLGdxdCh0LGksZS55LC1lLmhlaWdodC8yK2UubGFiZWxIZWlnaHQvMikpOihHV3QocixpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCksZ3F0KHQsaSxlLnksMCkpO2JyZWFrfWNhc2Ugakd0LlNFUklFUzp7bGV0IHI9Rld0KG4sInVzZSIpO2UuZXhwYW5kZWQ/KEdXdChyLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCksbHF0KHQsZSksZ3F0KHQsaSxlLnksLWUuaGVpZ2h0LzIrZS5sYWJlbEhlaWdodC8yKSk6KEdXdChyLGksZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KSxncXQodCxpLGUueSxlLmxhYmVsT2Zmc2V0KSk7YnJlYWt9Y2FzZSBqR3QuQlJJREdFOkdXdChGV3QobiwicmVjdCIpLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSl9fSkoZSx0KX0pKSxpLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtuLnJlbW92ZU5vZGVHcm91cCh0Lm5vZGUubmFtZSk7bGV0IGU9U3UodGhpcyk7dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAmJmUuc2VsZWN0KCIuIit2R3QuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIit2R3QuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaCgoZT0+e24ucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKGUsdCl9KSksdC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZlLnNlbGVjdCgiLiIrdkd0LkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iK3ZHdC5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKChlPT57bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoZSx0KX0pKX0pKS5yZW1vdmUoKSxpfWZ1bmN0aW9uIGxxdCh0LGUpe2xldCBuPWUueC1lLndpZHRoLzIrZS5wYWRkaW5nTGVmdCxpPWUueS1lLmhlaWdodC8yK2UucGFkZGluZ1RvcDtqV3QoRld0KHQsImciLHZHdC5TdWJzY2VuZS5HUk9VUCksbixpKX1mdW5jdGlvbiBjcXQodCxlLG4saSl7aWYoaSlyZXR1cm4gdm9pZCB0LmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO2xldCByPVpXdChuLHVxdChlLm5vZGUsbikpO3Qub24oImRibGNsaWNrIiwodD0+e24uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJtb3VzZW92ZXIiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjb250ZXh0bWVudSIsKCh0LGUpPT57bi5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWV9KSxyLmNhbGwodCxlKX0pKX1mdW5jdGlvbiB1cXQodCxlKXtsZXQgbj1be3RpdGxlOmU9PnVXdCh0LmluY2x1ZGUpLGFjdGlvbjoobixpLHIpPT57ZS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTp0Lm5hbWV9KX19XTtyZXR1cm4gZS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKG49bi5jb25jYXQoZS5ub2RlQ29udGV4dE1lbnVJdGVtcykpLGhxdCh0KSYmbi5wdXNoKHt0aXRsZTplPT5wcXQodCksYWN0aW9uOihuLGkscik9PntlLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpkcXQodCl9KX19KSxufWZ1bmN0aW9uIGhxdCh0KXtyZXR1cm4gbnVsbCE9PWRxdCh0KX1mdW5jdGlvbiBkcXQodCl7cmV0dXJuIHQ/dC50eXBlPT09akd0LlNFUklFUz90Lm5hbWU6dC50eXBlPT09akd0Lk9QP3Qub3duaW5nU2VyaWVzOm51bGw6bnVsbH1mdW5jdGlvbiBwcXQodCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQ9PT1XR3QuR1JPVVA/IlVuZ3JvdXAgdGhpcyBzZXJpZXMgb2Ygbm9kZXMiOiJHcm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyJ9KShudWxsIT09KGZ1bmN0aW9uIGUodCl7bGV0IGU9bnVsbDtyZXR1cm4gdD8odC50eXBlPT09akd0LlNFUklFUz9lPXQ6dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUudHlwZT09PWpHdC5TRVJJRVMmJihlPXQucGFyZW50Tm9kZSksZSk6bnVsbH0pKHQpP1dHdC5HUk9VUDpXR3QuVU5HUk9VUCl9ZnVuY3Rpb24gZnF0KHQsZSxuLGkpe2xldCByPXQubm9kZSgpLG89ci50ZXh0Q29udGVudCxhPW51bGw7c3dpdGNoKGUpe2Nhc2Ugakd0Lk1FVEE6aSYmIWkuZXhwYW5kZWQmJihhPU5XdC5ub2RlU2l6ZS5tZXRhLm1heExhYmVsV2lkdGgpO2JyZWFrO2Nhc2Ugakd0Lk9QOmE9Tld0Lm5vZGVTaXplLm9wLm1heExhYmVsV2lkdGg7YnJlYWs7Y2FzZS0xOmE9Tld0LmFubm90YXRpb25zLm1heExhYmVsV2lkdGh9aWYobnVsbCE9PWEpcmV0dXJuIHIudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIHModCxlLG4pe2lmKCF0KXJldHVybiIiO2lmKEJHdCh0LGUpPD1uKXJldHVybiB0O2xldCBpPTAscj10Lmxlbmd0aDtmb3IoO2k8cjspe2NvbnN0IG89aStNYXRoLnJvdW5kKChyLWkpLzIpO0JHdCh0LnNsaWNlKDAsbykrIuKApiIsZSk8PW4/aT1vOnI9by0xfXJldHVybiAwPT09aT90WzBdOnQuc2xpY2UoMCxpKSsi4oCmIn0pKHIudGV4dENvbnRlbnQsbixhKSx0LmFwcGVuZCgidGl0bGUiKS50ZXh0KG8pfSEoZnVuY3Rpb24odCl7dC5OT05FPSJub25lIix0LkNPTVBVVEVfVElNRT0iY29tcHV0ZV90aW1lIix0LkRFVklDRT0iZGV2aWNlIix0Lk1FTU9SWT0ibWVtb3J5Iix0Lk9QX0NPTVBBVElCSUxJVFk9Im9wX2NvbXBhdGliaWxpdHkiLHQuU1RSVUNUVVJFPSJzdHJ1Y3R1cmUiLHQuWExBX0NMVVNURVI9InhsYV9jbHVzdGVyIn0pKGFxdHx8KGFxdD17fSkpO2xldCBtcXQ9bnVsbDtmdW5jdGlvbiBncXQodCxlLG4saSl7Rld0KHQsInRleHQiLHZHdC5Ob2RlLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIsZSkuYXR0cigieSIsbitpKX1mdW5jdGlvbiBfcXQodCxlLG4pe2xldCBpPXdHdCh0LCJnIixuKTtzd2l0Y2goZS5ub2RlLnR5cGUpe2Nhc2Ugakd0Lk9QOmNvbnN0IHQ9ZS5ub2RlO2lmKFNlLmV4cG9ydHMuaXNOdW1iZXIodC5mdW5jdGlvbklucHV0SW5kZXgpfHxTZS5leHBvcnRzLmlzTnVtYmVyKHQuZnVuY3Rpb25PdXRwdXRJbmRleCkpe3dHdChpLCJwb2x5Z29uIix2R3QuTm9kZS5DT0xPUl9UQVJHRVQpO2JyZWFrfXdHdChpLCJlbGxpcHNlIix2R3QuTm9kZS5DT0xPUl9UQVJHRVQpO2JyZWFrO2Nhc2Ugakd0LlNFUklFUzpsZXQgbj0iYW5ub3RhdGlvbiIscj1lO3IuY29yZUdyYXBoJiYobj1yLm5vZGUuaGFzTm9uQ29udHJvbEVkZ2VzPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwiKTtsZXQgbz1bdkd0Lk5vZGUuQ09MT1JfVEFSR0VUXTtyLmlzRmFkZWRPdXQmJm8ucHVzaCgiZmFkZWQtZWxsaXBzZSIpLHdHdChpLCJ1c2UiLG8pLmF0dHIoInhsaW5rOmhyZWYiLCIjb3Atc2VyaWVzLSIrbisiLXN0YW1wIiksd0d0KGksInJlY3QiLHZHdC5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGUucmFkaXVzKS5hdHRyKCJyeSIsZS5yYWRpdXMpO2JyZWFrO2Nhc2Ugakd0LkJSSURHRTpjYXNlIGpHdC5NRVRBOndHdChpLCJyZWN0Iix2R3QuTm9kZS5DT0xPUl9UQVJHRVQpLmF0dHIoInJ4IixlLnJhZGl1cykuYXR0cigicnkiLGUucmFkaXVzKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgbm9kZSB0eXBlOiAiK2Uubm9kZS50eXBlKX1yZXR1cm4gaX1mdW5jdGlvbiB5cXQodCl7c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIGpHdC5PUDpyZXR1cm4gdkd0Lk9QTk9ERTtjYXNlIGpHdC5NRVRBOnJldHVybiB2R3QuTUVUQU5PREU7Y2FzZSBqR3QuU0VSSUVTOnJldHVybiB2R3QuU0VSSUVTTk9ERTtjYXNlIGpHdC5CUklER0U6cmV0dXJuIHZHdC5CUklER0VOT0RFO2Nhc2Ugakd0LkVMTElQU0lTOnJldHVybiB2R3QuRUxMSVBTSVNOT0RFfXRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgbm9kZSB0eXBlOiAiK3Qubm9kZS50eXBlKX1mdW5jdGlvbiB2cXQodCxlLG4pe2xldCBpPShmdW5jdGlvbiByKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbOi5cW1xdLC9cXFwoXCldKS9nLCJcXCQxIil9KSh0KTtpZighbilyZXR1cm5gdXJsKCMke2l9KWA7bGV0IG89U3UobiksYT1vLnNlbGVjdCgiZGVmcyNfZ3JhcGgtZ3JhZGllbnRzIik7YS5lbXB0eSgpJiYoYT1vLmFwcGVuZCgiZGVmcyIpLmF0dHIoImlkIiwiX2dyYXBoLWdyYWRpZW50cyIpKTtsZXQgcz1hLnNlbGVjdCgibGluZWFyR3JhZGllbnQjIitpKTtpZihzLmVtcHR5KCkpe3M9YS5hcHBlbmQoImxpbmVhckdyYWRpZW50IikuYXR0cigiaWQiLHQpLHMuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7bGV0IG49MDtTZS5leHBvcnRzLmVhY2goZSwodD0+e2xldCBlPXQuY29sb3I7cy5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLG4pLmF0dHIoInN0b3AtY29sb3IiLGUpLHMuYXBwZW5kKCJzdG9wIikuYXR0cigib2Zmc2V0IixuK3QucHJvcG9ydGlvbikuYXR0cigic3RvcC1jb2xvciIsZSksbis9dC5wcm9wb3J0aW9ufSkpfXJldHVybmB1cmwoIyR7aX0pYH1mdW5jdGlvbiBicXQodCl7U3UodCkuc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKS5yZW1vdmUoKX1mdW5jdGlvbiB4cXQodCxlLG4saSxyKXtsZXQgbz1wV3Q7c3dpdGNoKHQ9dHx8KCgpPT4wKSxlKXtjYXNlIGFxdC5OT05FOmNhc2UgYXF0LlNUUlVDVFVSRTppZihuLm5vZGUudHlwZT09PWpHdC5NRVRBKXtsZXQgcj1uLm5vZGUudGVtcGxhdGVJZDtyZXR1cm4gZT09PWFxdC5TVFJVQ1RVUkUmJm51bGwhPT1yP28uU1RSVUNUVVJFX1BBTEVUVEUodChyKSxpKTpvLlVOS05PV059cmV0dXJuIG4ubm9kZS50eXBlPT09akd0LlNFUklFUz9pP28uRVhQQU5ERURfQ09MT1I6IndoaXRlIjpuLm5vZGUudHlwZT09PWpHdC5CUklER0U/bi5zdHJ1Y3R1cmFsPyIjZjBlIjpuLm5vZGUuaW5ib3VuZD8iIzBlZiI6IiNmZTAiOlNlLmV4cG9ydHMuaXNOdW1iZXIobi5ub2RlLmZ1bmN0aW9uSW5wdXRJbmRleCk/IiM3OTU1NDgiOlNlLmV4cG9ydHMuaXNOdW1iZXIobi5ub2RlLmZ1bmN0aW9uT3V0cHV0SW5kZXgpPyIjMDA5Njg4Ijoid2hpdGUiO2Nhc2UgYXF0LkRFVklDRTpyZXR1cm4gbnVsbD09bi5kZXZpY2VDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjp2cXQoImRldmljZS0iK24ubm9kZS5uYW1lLG4uZGV2aWNlQ29sb3JzLHIpO2Nhc2UgYXF0LlhMQV9DTFVTVEVSOnJldHVybiBudWxsPT1uLnhsYUNsdXN0ZXJDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjp2cXQoInhsYS0iK24ubm9kZS5uYW1lLG4ueGxhQ2x1c3RlckNvbG9ycyxyKTtjYXNlIGFxdC5DT01QVVRFX1RJTUU6cmV0dXJuIGk/by5FWFBBTkRFRF9DT0xPUjpuLmNvbXB1dGVUaW1lQ29sb3J8fG8uVU5LTk9XTjtjYXNlIGFxdC5NRU1PUlk6cmV0dXJuIGk/by5FWFBBTkRFRF9DT0xPUjpuLm1lbW9yeUNvbG9yfHxvLlVOS05PV047Y2FzZSBhcXQuT1BfQ09NUEFUSUJJTElUWTpyZXR1cm4gbnVsbD09bi5jb21wYXRpYmlsaXR5Q29sb3JzP28uVU5LTk9XTjppP28uRVhQQU5ERURfQ09MT1I6dnF0KCJvcC1jb21wYXQtIituLm5vZGUubmFtZSxuLmNvbXBhdGliaWxpdHlDb2xvcnMscik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2FzZSB0byBjb2xvciBub2RlcyBieSIpfX1mdW5jdGlvbiB3cXQodCxlLG4saSl7aT1pfHx2R3QuTm9kZS5TSEFQRTtjb25zdCByPW4uaXNOb2RlSGlnaGxpZ2h0ZWQoZS5ub2RlLm5hbWUpLG89bi5pc05vZGVTZWxlY3RlZChlLm5vZGUubmFtZSksYT1lLmlzSW5FeHRyYWN0fHxlLmlzT3V0RXh0cmFjdHx8ZS5pc0xpYnJhcnlGdW5jdGlvbixzPWUuZXhwYW5kZWQmJmkhPT12R3QuQW5ub3RhdGlvbi5OT0RFLGw9ZS5pc0ZhZGVkT3V0O3QuY2xhc3NlZCgiaGlnaGxpZ2h0ZWQiLHIpLHQuY2xhc3NlZCgic2VsZWN0ZWQiLG8pLHQuY2xhc3NlZCgiZXh0cmFjdCIsYSksdC5jbGFzc2VkKCJleHBhbmRlZCIscyksdC5jbGFzc2VkKCJmYWRlZCIsbCk7Y29uc3QgYz10LnNlbGVjdCgiLiIraSsiIC4iK3ZHdC5Ob2RlLkNPTE9SX1RBUkdFVCksdT14cXQobi50ZW1wbGF0ZUluZGV4LG4uY29sb3JCeSxlLHMsbi5nZXRHcmFwaFN2Z1Jvb3QoKSk7Yy5zdHlsZSgiZmlsbCIsdSksYy5zdHlsZSgic3Ryb2tlIixvP251bGw6U3F0KHUpKX1mdW5jdGlvbiBTcXQodCl7cmV0dXJuInVybCI9PT10LnN1YnN0cmluZygwLDMpP3BXdC5HUkFESUVOVF9PVVRMSU5FOlVoKHQpLmRhcmtlcigpLnRvU3RyaW5nKCl9ZnVuY3Rpb24gTXF0KHQsZSxuLGkpe2NvbnN0IHI9U3UodCk7aWYoci5zZWxlY3RBbGwoIi5pbnB1dC1oaWdobGlnaHQiKS5jbGFzc2VkKCJpbnB1dC1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLm5vbi1pbnB1dCIpLmNsYXNzZWQoIm5vbi1pbnB1dCIsITEpLHIuc2VsZWN0QWxsKCIuaW5wdXQtcGFyZW50IikuY2xhc3NlZCgiaW5wdXQtcGFyZW50IiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1jaGlsZCIpLmNsYXNzZWQoImlucHV0LWNoaWxkIiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMSksci5zZWxlY3RBbGwoIi5ub24taW5wdXQtZWRnZS1oaWdobGlnaHQiKS5jbGFzc2VkKCJub24taW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodC1zZWxlY3RlZCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodC1zZWxlY3RlZCIsITEpLCFlfHwhaXx8IW4pcmV0dXJuO2xldCBvPUVxdChuLGUpLGE9e307U2UuZXhwb3J0cy5lYWNoKG8sKGZ1bmN0aW9uKG4pe2E9VHF0KHQsZSxuLGEpfSkpO2xldCBzPU9iamVjdC5rZXlzKGEpLGw9KGZ1bmN0aW9uIGModCxlKXtsZXQgbj17fTtyZXR1cm4gU2UuZXhwb3J0cy5lYWNoKGUsKGZ1bmN0aW9uKGUpe2xldCBpPXQuZ2V0Tm9kZUJ5TmFtZShlKSxyPUNxdCh0LGkpO25bci5uYW1lXT1yfSkpLG59KShlLHMpOyEoZnVuY3Rpb24gdSh0LGUpe1NlLmV4cG9ydHMuZm9yT3duKGUsKGZ1bmN0aW9uKGUpe2xldCBuPWU7Zm9yKDtuLm5hbWUhPT1GR3Q7KXtjb25zdCBlPVN1KHQpLnNlbGVjdChgLm5vZGVbZGF0YS1uYW1lPSIke24ubmFtZX0iXWApOyFlLm5vZGVzKCkubGVuZ3RofHxlLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIpfHxlLmNsYXNzZWQoInNlbGVjdGVkIil8fGUuY2xhc3NlZCgib3AiKXx8ZS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCEwKSxuPW4ucGFyZW50Tm9kZX19KSl9KSh0LGwpLHIuc2VsZWN0QWxsKCJnLm5vZGU6bm90KC5zZWxlY3RlZCk6bm90KC5pbnB1dC1oaWdobGlnaHQpOm5vdCguaW5wdXQtcGFyZW50KTpub3QoLmlucHV0LWNoaWxkcmVuKSIpLmNsYXNzZWQoIm5vbi1pbnB1dCIsITApLmVhY2goKGZ1bmN0aW9uKHQpe3Iuc2VsZWN0QWxsKGBbZGF0YS1uYW1lPSIke3Qubm9kZS5uYW1lfSJdYCkuY2xhc3NlZCgibm9uLWlucHV0IiwhMCl9KSksci5zZWxlY3RBbGwoImcuZWRnZTpub3QoLmlucHV0LWVkZ2UtaGlnaGxpZ2h0KSIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfWZ1bmN0aW9uIEVxdCh0LGUpe2xldCBuPVtdLGk9ZS5nZXROb2RlQnlOYW1lKHQpO2lmKGkgaW5zdGFuY2VvZiBYR3QpcmV0dXJuW2ldLmNvbmNhdChpLmluRW1iZWRkaW5ncyk7bGV0IHI9aS5tZXRhZ3JhcGgubm9kZXMoKTtyZXR1cm4gU2UuZXhwb3J0cy5lYWNoKHIsKGZ1bmN0aW9uKHQpe249bi5jb25jYXQoRXF0KHQsZSkpfSkpLG59ZnVuY3Rpb24gVHF0KHQsZSxuLGkpe2lmKGlbbi5uYW1lXSlyZXR1cm4gaTtpW24ubmFtZV09ITA7bGV0IHI9bi5pbnB1dHMsbz1DcXQoZSxuKTtTdSh0KS5zZWxlY3QoYC5ub2RlW2RhdGEtbmFtZT0iJHtvLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1oaWdobGlnaHQiLCEwKTtsZXQgYT17fTtTZS5leHBvcnRzLmVhY2gociwoZnVuY3Rpb24odCl7bGV0IG49ZS5nZXROb2RlQnlOYW1lKHQubmFtZSk7aWYodm9pZCAwPT09bilyZXR1cm47aWYobiBpbnN0YW5jZW9mIEtHdCl7bGV0IHQ9c1d0KG4ubmFtZSk7bj1lLmdldE5vZGVCeU5hbWUodCl9bGV0IGk9Q3F0KGUsbikscj1hW2kubmFtZV07cj9yLm9wTm9kZXMucHVzaChuKTphW2kubmFtZV09e3Zpc2libGVQYXJlbnQ6aSxvcE5vZGVzOltuXX19KSk7bGV0IHM9e30sbD1bb107c1tvLm5hbWVdPXt0cmFjZWQ6ITEsaW5kZXg6MCxjb25uZWN0aW9uRW5kcG9pbnRzOltdfTtsZXQgYz1vO2ZvcihsZXQgdD0xO2MubmFtZSE9PUZHdDt0KyspYz1jLnBhcmVudE5vZGUsc1tjLm5hbWVdPXt0cmFjZWQ6ITEsaW5kZXg6dCxjb25uZWN0aW9uRW5kcG9pbnRzOltdfSxsW3RdPWM7cmV0dXJuIFNlLmV4cG9ydHMuZm9yT3duKGEsKGZ1bmN0aW9uKG4scil7bGV0IGE9bi52aXNpYmxlUGFyZW50O1NlLmV4cG9ydHMuZWFjaChuLm9wTm9kZXMsKGZ1bmN0aW9uKG4pe2k9VHF0KHQsZSxuLGkpfSkpLGEubmFtZSE9PW8ubmFtZSYmKGZ1bmN0aW9uIGModCxlLG4saSl7bGV0IHI9ZSxvPWUsYT1bXTtmb3IoOyFuW3IubmFtZV07KW8ubmFtZSE9PXIubmFtZSYmYS5wdXNoKFtvLHJdKSxvPXIscj1yLnBhcmVudE5vZGU7bGV0IHM9bltyLm5hbWVdLmluZGV4LGw9aVtNYXRoLm1heChzLTEsMCldLm5hbWUsYz1sLHU9by5uYW1lLGg9by5uYW1lO2NvbnN0IGQ9U3UodCk7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7aH0tLSR7bH0iXWApLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCksU2UuZXhwb3J0cy5lYWNoKGEsKGZ1bmN0aW9uKHQpe2Quc2VsZWN0QWxsKGBbZGF0YS1lZGdlPSIke3RbMF0ubmFtZX0tLSR7Y31+fiR7dFsxXS5uYW1lfX5+T1VUIl1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfSkpO2ZvcihsZXQgdD0xO3Q8czt0KyspZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7dX1+fiR7aVt0XS5uYW1lfX5+SU4tLSR7aVt0LTFdLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfSkodCxhLHMsbCl9KSksaX1mdW5jdGlvbiBDcXQodCxlKXtsZXQgbj0hMSxpPWU7Zm9yKDshbjspaWYoaT0oZT1pKS5wYXJlbnROb2RlLHZvaWQgMD09PWkpbj0hMDtlbHNle2xldCBlPXQuZ2V0UmVuZGVyTm9kZUJ5TmFtZShpLm5hbWUpO2UmJihlLmV4cGFuZGVkfHxpIGluc3RhbmNlb2YgWEd0KSYmKG49ITApfXJldHVybiBlfWZ1bmN0aW9uIEFxdCh0LGUsbixpKXtsZXQgcj10LnNlbGVjdEFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfSkpLmRhdGEoZS5saXN0LCh0PT50Lm5vZGUubmFtZSkpO3JldHVybiByLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIiwodD0+dC5ub2RlLm5hbWUpKS5lYWNoKChmdW5jdGlvbih0KXtsZXQgZT1TdSh0aGlzKTtpLmFkZEFubm90YXRpb25Hcm91cCh0LG4sZSk7bGV0IHI9dkd0LkFubm90YXRpb24uRURHRSxvPXQucmVuZGVyTWV0YWVkZ2VJbmZvJiZ0LnJlbmRlck1ldGFlZGdlSW5mby5tZXRhZWRnZTtvJiYhby5udW1SZWd1bGFyRWRnZXMmJihyKz0iICIrdkd0LkFubm90YXRpb24uQ09OVFJPTF9FREdFKSxvJiZvLm51bVJlZkVkZ2VzJiYocis9IiAiK3ZHdC5FZGdlLlJFRl9MSU5FKSxycXQoZSx0LGksciksdC5hbm5vdGF0aW9uVHlwZSE9PWJXdC5FTExJUFNJUz8oKGZ1bmN0aW9uIGEodCxlKXtsZXQgbj1lLm5vZGUubmFtZS5zcGxpdCgiLyIpO2txdCh0LG5bbi5sZW5ndGgtMV0sZSxudWxsKX0pKGUsdCksKGZ1bmN0aW9uIHModCxlKXtlLmFubm90YXRpb25UeXBlPT09Yld0LlNVTU1BUlk/d0d0KHQsInVzZSIpLmF0dHIoImNsYXNzIiwic3VtbWFyeSIpLmF0dHIoInhsaW5rOmhyZWYiLCIjc3VtbWFyeS1pY29uIikuYXR0cigiY3Vyc29yIiwicG9pbnRlciIpOndHdChfcXQodCxlLHZHdC5Bbm5vdGF0aW9uLk5PREUpLCJ0aXRsZSIpLnRleHQoZS5ub2RlLm5hbWUpfSkoZSx0KSk6a3F0KGUsdC5ub2RlLm5hbWUsdCx2R3QuQW5ub3RhdGlvbi5FTExJUFNJUyl9KSkubWVyZ2UocikuYXR0cigiY2xhc3MiLCh0PT52R3QuQW5ub3RhdGlvbi5HUk9VUCsiICIrKGZ1bmN0aW9uIGUodCl7cmV0dXJuKGJXdFt0XXx8IiIpLnRvTG93ZXJDYXNlKCl8fG51bGx9KSh0LmFubm90YXRpb25UeXBlKSsiICIreXF0KHQpKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9U3UodGhpcyk7IShmdW5jdGlvbiByKHQsZSxuLGkpe2xldCByPURXdChlKTtuLnJlbmRlck5vZGVJbmZvJiZuLmFubm90YXRpb25UeXBlIT09Yld0LkVMTElQU0lTJiZ3cXQodCxuLnJlbmRlck5vZGVJbmZvLGksdkd0LkFubm90YXRpb24uTk9ERSksbi5hbm5vdGF0aW9uVHlwZT09PWJXdC5TVU1NQVJZJiYobi53aWR0aCs9MTApLHQuc2VsZWN0KCJ0ZXh0LiIrdkd0LkFubm90YXRpb24uTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixyK24uZHgrKG4uaXNJbj8tMToxKSoobi53aWR0aC8yK24ubGFiZWxPZmZzZXQpKS5hdHRyKCJ5IixlLnkrbi5keSksdC5zZWxlY3QoInVzZS5zdW1tYXJ5IikudHJhbnNpdGlvbigpLmF0dHIoIngiLHIrbi5keC0zKS5hdHRyKCJ5IixlLnkrbi5keS02KSxXV3QodC5zZWxlY3QoIi4iK3ZHdC5Bbm5vdGF0aW9uLk5PREUrIiBlbGxpcHNlIikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLEdXdCh0LnNlbGVjdCgiLiIrdkd0LkFubm90YXRpb24uTk9ERSsiIHJlY3QiKSxyK24uZHgsZS55K24uZHksbi53aWR0aCxuLmhlaWdodCksR1d0KHQuc2VsZWN0KCIuIit2R3QuQW5ub3RhdGlvbi5OT0RFKyIgdXNlIikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLHQuc2VsZWN0KCJwYXRoLiIrdkd0LkFubm90YXRpb24uRURHRSkudHJhbnNpdGlvbigpLmF0dHIoImQiLCh0PT57bGV0IG49dC5wb2ludHMubWFwKCh0PT4oe3g6dC5keCtyLHk6dC5keStlLnl9KSkpO3JldHVybiBvcXQobil9KSl9KShlLG4sdCxpKSx0LmFubm90YXRpb25UeXBlIT09Yld0LkVMTElQU0lTJiYoZnVuY3Rpb24gbyh0LGUsbixpKXt0Lm9uKCJtb3VzZW92ZXIiLCh0PT57aS5maXJlKCJhbm5vdGF0aW9uLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57aS5maXJlKCJhbm5vdGF0aW9uLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZSxob3N0TmFtZTplLm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxpLmZpcmUoImFubm90YXRpb24tc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZSxob3N0TmFtZTplLm5vZGUubmFtZX0pfSkpLG4uYW5ub3RhdGlvblR5cGUhPT1iV3QuU1VNTUFSWSYmbi5hbm5vdGF0aW9uVHlwZSE9PWJXdC5DT05TVEFOVCYmdC5vbigiY29udGV4dG1lbnUiLFpXdChpLHVxdChuLm5vZGUsaSkpKX0pKGUsbix0LGkpfSkpLHIuZXhpdCgpLmVhY2goKGZ1bmN0aW9uKHQpe2kucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKHQsbil9KSkucmVtb3ZlKCkscn1mdW5jdGlvbiBrcXQodCxlLG4saSl7bGV0IHI9dkd0LkFubm90YXRpb24uTEFCRUw7cmV0dXJuIGkmJihyKz0iICIraSksZnF0KHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLHIpLmF0dHIoImR5IiwiLjM1ZW0iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsbi5pc0luPyJlbmQiOiJzdGFydCIpLnRleHQoZSksLTEsNSl9ZnVuY3Rpb24gTHF0KHQsZSxuLGkpe2xldCByPXhHdCh0LCJnIixpPWl8fHZHdC5TY2VuZS5HUk9VUCkuZW1wdHkoKSxvPXdHdCh0LCJnIixpKSxhPXdHdChvLCJnIix2R3QuU2NlbmUuQ09SRSkscz1TZS5leHBvcnRzLnJlZHVjZShlLmNvcmVHcmFwaC5ub2RlcygpLCgodCxuKT0+e2xldCBpPWUuY29yZUdyYXBoLm5vZGUobik7cmV0dXJuIGkuZXhjbHVkZWR8fHQucHVzaChpKSx0fSksW10pO3JldHVybiBlLm5vZGUudHlwZT09PWpHdC5TRVJJRVMmJnMucmV2ZXJzZSgpLChmdW5jdGlvbiBsKHQsZSxuKXtjb25zdCBpPW47bGV0IHI9W107cj1TZS5leHBvcnRzLnJlZHVjZShlLmVkZ2VzKCksKCh0LG4pPT57bGV0IGk9ZS5lZGdlKG4pO3JldHVybiB0LnB1c2goe3Y6bi52LHc6bi53LGxhYmVsOml9KSx0fSkscik7bGV0IG89d0d0KHQsImciLHZHdC5FZGdlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShyLFFXdCk7by5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIix2R3QuRWRnZS5HUk9VUCkuYXR0cigiZGF0YS1lZGdlIixRV3QpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPVN1KHRoaXMpO3QubGFiZWwuZWRnZUdyb3VwPWUsaS5fZWRnZUdyb3VwSW5kZXhbUVd0KHQpXT1lLGkuaGFuZGxlRWRnZVNlbGVjdGVkJiZlLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxpLmZpcmUoImVkZ2Utc2VsZWN0Iix7ZWRnZURhdGE6dCxlZGdlR3JvdXA6ZX0pfSkpLHJxdChlLHQsaSl9KSkubWVyZ2UobykuZWFjaCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSxuKXtTdShuKS5zZWxlY3QoInBhdGguIit2R3QuRWRnZS5MSU5FKS50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJkIiwoZnVuY3Rpb24odCxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGksbyl7bGV0IGE9bi5sYWJlbCxzPWEuYWRqb2luaW5nTWV0YWVkZ2UsbD1hLnBvaW50cztjb25zdHtzaGFkb3dSb290OmN9PXQ7aWYobi5sYWJlbC5zdGFydE1hcmtlcklkJiYobD1pcXQobCxTdShjLnF1ZXJ5U2VsZWN0b3IoIiMiK24ubGFiZWwuc3RhcnRNYXJrZXJJZCkpLCEwKSksbi5sYWJlbC5lbmRNYXJrZXJJZCYmKGw9aXF0KGwsU3UoYy5xdWVyeVNlbGVjdG9yKCIjIituLmxhYmVsLmVuZE1hcmtlcklkKSksITEpKSwhcylyZXR1cm4gamQobyxvcXQobCkpO2xldCB1PXMuZWRnZUdyb3VwLm5vZGUoKS5maXJzdENoaWxkLGg9YS5tZXRhZWRnZS5pbmJvdW5kO3JldHVybiBmdW5jdGlvbih0KXtsZXQgbj11LmdldFBvaW50QXRMZW5ndGgoaD91LmdldFRvdGFsTGVuZ3RoKCk6MCkubWF0cml4VHJhbnNmb3JtKHUuZ2V0Q1RNKCkpLm1hdHJpeFRyYW5zZm9ybShlLmdldENUTSgpLmludmVyc2UoKSksaT1oPzA6bC5sZW5ndGgtMTtyZXR1cm4gbFtpXS54PW4ueCxsW2ldLnk9bi55LG9xdChsKX19KShlLHRoaXMsdCwwLGkpfSkpfSkobix0aGlzKX0pKS5lYWNoKChmdW5jdGlvbih0KXshKGZ1bmN0aW9uIGUodCxuLGkpe3QuY2xhc3NlZCgiZmFkZWQiLG4ubGFiZWwuaXNGYWRlZE91dCk7bGV0IHI9bi5sYWJlbC5tZXRhZWRnZTt0LnNlbGVjdCgicGF0aC4iK3ZHdC5FZGdlLkxJTkUpLmNsYXNzZWQoImNvbnRyb2wtZGVwIixyJiYhci5udW1SZWd1bGFyRWRnZXMpfSkoU3UodGhpcyksdCl9KSksby5leGl0KCkuZWFjaCgodD0+e2RlbGV0ZSBpLl9lZGdlR3JvdXBJbmRleFtRV3QodCldfSkpLnJlbW92ZSgpfSkoYSxlLmNvcmVHcmFwaCxuKSxzcXQoYSxzLG4pLGUuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPjA/c3F0KHdHdChvLCJnIix2R3QuU2NlbmUuSU5FWFRSQUNUKSxlLmlzb2xhdGVkSW5FeHRyYWN0LG4pOnhHdChvLCJnIix2R3QuU2NlbmUuSU5FWFRSQUNUKS5yZW1vdmUoKSxlLmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg+MD9zcXQod0d0KG8sImciLHZHdC5TY2VuZS5PVVRFWFRSQUNUKSxlLmlzb2xhdGVkT3V0RXh0cmFjdCxuKTp4R3QobywiZyIsdkd0LlNjZW5lLk9VVEVYVFJBQ1QpLnJlbW92ZSgpLGUubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPjA/c3F0KHdHdChvLCJnIix2R3QuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSksZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCxuKTp4R3QobywiZyIsdkd0LlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLnJlbW92ZSgpLChmdW5jdGlvbiBjKHQsZSl7bGV0IG49ZS5ub2RlLnR5cGU9PT1qR3QuU0VSSUVTPzA6Tld0LnN1YnNjZW5lLm1ldGEubGFiZWxIZWlnaHQ7ald0KEZXdCh0LCJnIixWV3QuU2NlbmUuQ09SRSksMCxuKTtsZXQgaT1lLmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wLHI9ZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjAsbz1lLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wLGE9Tld0LnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQscz0wO2lmKGkmJihzKz1lLm91dEV4dHJhY3RCb3gud2lkdGgpLHImJihzKz1lLm91dEV4dHJhY3RCb3gud2lkdGgpLGkpe2xldCBpPWUuY29yZUJveC53aWR0aDtpPXM8SVd0P2ktSVd0K2UuaW5FeHRyYWN0Qm94LndpZHRoLzI6aS1lLmluRXh0cmFjdEJveC53aWR0aC8yLWUub3V0RXh0cmFjdEJveC53aWR0aC0ocj9hOjApLGk9aS1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKG8/YTowKSxqV3QoRld0KHQsImciLFZXdC5TY2VuZS5JTkVYVFJBQ1QpLGksbil9aWYocil7bGV0IGk9ZS5jb3JlQm94LndpZHRoO3M8SVd0P2k9aS1JV3QrZS5vdXRFeHRyYWN0Qm94LndpZHRoLzI6aS09ZS5vdXRFeHRyYWN0Qm94LndpZHRoLzIsaT1pLWUubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC0obz9hOjApLGpXdChGV3QodCwiZyIsVld0LlNjZW5lLk9VVEVYVFJBQ1QpLGksbil9aWYobyl7bGV0IGk9ZS5jb3JlQm94LndpZHRoLWUubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC8yO2pXdChGV3QodCwiZyIsVld0LlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLGksbil9fSkobyxlKSxyJiZvLmF0dHIoIm9wYWNpdHkiLDApLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5IiwxKSxvfWxldCBQcXQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm5vZGU9bnVsbCx0aGlzLnJlbmRlckluZm89bnVsbCx0aGlzLmNvbG9yQnk9YXF0LlNUUlVDVFVSRSx0aGlzLnRlbXBsYXRlSW5kZXg9bnVsbCx0aGlzLnR5cGU9bnVsbCx0aGlzLnZlcnRpY2FsPSExLHRoaXMuY29uc3Q9ITEsdGhpcy5zdW1tYXJ5PSExLHRoaXMuZmlsbD1udWxsLHRoaXMuaGVpZ2h0PTIwfV9jb21wdXRlRmlsbE92ZXJyaWRlKHQsZSxuLGkscil7cmV0dXJuIHQmJmUmJmk/eHF0KGksbixlLCExKTpyfV9nZXRTdHJva2VPdmVycmlkZSh0KXtyZXR1cm4gdD9TcXQodCk6bnVsbH1fZ2V0VHlwZSh0LGUsbixpKXtjb25zdHtHcmFwaEljb25UeXBlOnJ9PUtXdDtpZih0KXN3aXRjaCh0LnR5cGUpe2Nhc2Ugakd0Lk9QOntjb25zdCBpPXQub3A7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpP3IuT1A6IkNvbnN0Ij09PWl8fG4/ci5DT05TVDppLmVuZHNXaXRoKCJTdW1tYXJ5Iil8fGU/ci5TVU1NQVJZOnIuT1B9Y2FzZSBqR3QuTUVUQTpyZXR1cm4gci5NRVRBO2Nhc2Ugakd0LlNFUklFUzpyZXR1cm4gci5TRVJJRVN9cmV0dXJuIGl9X2lzVmVydGljYWwodCxlKXtyZXR1cm4gdD90Lmhhc05vbkNvbnRyb2xFZGdlczohIWV9X2dldEZhZGVkKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXR9X29uRmlsbE92ZXJyaWRlQ2hhbmdlZCh0LGUpe2NvbnN0e25vZGU6bixyZW5kZXJJbmZvOmksY29sb3JCeTpyLHRlbXBsYXRlSW5kZXg6b309dGhpczt0IT09ZSYmYnF0KHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSksbiYmaSYmbyYmeHF0KG8scixpLCExLHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSl9fTtQcXQudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIHRmLWdyYXBoLWljb24gewogICAgICAgIC0tdGItZ3JhcGgtZmFkZWQ6IHZhcigtLXRiLWdyYXBoLWZhZGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgIGlkPSJpY29uIgogICAgICB0eXBlPSJbW19nZXRUeXBlKG5vZGUsIHN1bW1hcnksIGNvbnN0LCB0eXBlKV1dIgogICAgICBoZWlnaHQ9IltbaGVpZ2h0XV0iCiAgICAgIGZpbGwtb3ZlcnJpZGU9IltbX2ZpbGxPdmVycmlkZV1dIgogICAgICBzdHJva2Utb3ZlcnJpZGU9IltbX2dldFN0cm9rZU92ZXJyaWRlKF9maWxsT3ZlcnJpZGUpXV0iCiAgICAgIGZhZGVkPSJbW19nZXRGYWRlZChyZW5kZXJJbmZvKV1dIgogICAgICB2ZXJ0aWNhbD0iW1tfaXNWZXJ0aWNhbChub2RlLCB2ZXJ0aWNhbCldXSIKICAgID48L3RmLWdyYXBoLWljb24+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQcXQucHJvdG90eXBlLCJub2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFBxdC5wcm90b3R5cGUsInJlbmRlckluZm8iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUHF0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFBxdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUHF0LnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBxdC5wcm90b3R5cGUsInZlcnRpY2FsIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sUHF0LnByb3RvdHlwZSwiY29uc3QiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxQcXQucHJvdG90eXBlLCJzdW1tYXJ5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBxdC5wcm90b3R5cGUsImZpbGwiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUHF0LnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUZpbGxPdmVycmlkZShub2RlLCByZW5kZXJJbmZvLCBjb2xvckJ5LCB0ZW1wbGF0ZUluZGV4LCBmaWxsKSIsb2JzZXJ2ZXI6Il9vbkZpbGxPdmVycmlkZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBxdC5wcm90b3R5cGUsIl9maWxsT3ZlcnJpZGUiLHZvaWQgMCksUHF0PXQoW2koInRmLW5vZGUtaWNvbiIpXSxQcXQpO2xldCBOcXQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe19pdGVtVHlwZUNoYW5nZWQoKXsic3Vibm9kZSIhPT10aGlzLml0ZW1UeXBlP3RoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LmFkZCgiY2xpY2thYmxlIik6dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QucmVtb3ZlKCJjbGlja2FibGUiKX1fbm9kZUxpc3RlbmVyKHQpe3RoaXMuZmlyZSgibm9kZS1saXN0LWl0ZW0tIit0LnR5cGUse25vZGVOYW1lOnRoaXMubmFtZSx0eXBlOnRoaXMuaXRlbVR5cGV9KX1fZmFkZWRDbGFzcyh0KXtyZXR1cm4gdCYmdC5pc0ZhZGVkT3V0PyJmYWRlZCI6IiJ9fTtmdW5jdGlvbiBJcXQodCxlLG4pe3JldHVybiBTZS5leHBvcnRzLnNvcnRCeSh0LFt0PT5lLm5vZGUodCkub3AsdD0+ZS5ub2RlKHQpLnRlbXBsYXRlSWQsdD0+ZS5uZWlnaGJvcnModCkubGVuZ3RoLHQ9PmUucHJlZGVjZXNzb3JzKHQpLmxlbmd0aCx0PT5lLnN1Y2Nlc3NvcnModCkubGVuZ3RoLHQ9PnQuc3Vic3RyKG4ubGVuZ3RoKV0pfWZ1bmN0aW9uIFJxdCh0LGUpe2lmKCEoZnVuY3Rpb24gbih0LGUpe2xldCBuPWxXdCh0KSxpPWxXdChlKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdIT09aVt0XSlyZXR1cm4hMTtyZXR1cm4hMH0pKHQsZSkpcmV0dXJuITE7bGV0IGk9dC5ncmFwaCgpLm5hbWUscj1lLmdyYXBoKCkubmFtZSxvPXt9LGE9e30scz1bXTtmdW5jdGlvbiBsKHQsZSl7bGV0IG49dC5zdWJzdHIoaS5sZW5ndGgpLGw9ZS5zdWJzdHIoci5sZW5ndGgpO3JldHVybiBvW25dXmFbbF0/KGNvbnNvbGUud2FybigiZGlmZmVyZW50IHZpc2l0IHBhdHRlcm4iLCJbIitpKyJdIixuLCJbIityKyJdIixsKSwhMCk6KG9bbl18fChvW25dPWFbbF09ITAscy5wdXNoKHtuMTp0LG4yOmV9KSksITEpfWxldCBjPXQuc291cmNlcygpLHU9ZS5zb3VyY2VzKCk7aWYoYy5sZW5ndGghPT11Lmxlbmd0aClyZXR1cm4gY29uc29sZS5sb2coImRpZmZlcmVudCBzb3VyY2UgbGVuZ3RoIiksITE7Yz1JcXQoYyx0LGkpLHU9SXF0KHUsZSxyKTtmb3IobGV0IHQ9MDt0PGMubGVuZ3RoO3QrKylpZihsKGNbdF0sdVt0XSkpcmV0dXJuITE7Zm9yKDtzLmxlbmd0aD4wOyl7bGV0IG49cy5wb3AoKTtpZighT3F0KHQubm9kZShuLm4xKSxlLm5vZGUobi5uMikpKXJldHVybiExO2xldCBvPXQuc3VjY2Vzc29ycyhuLm4xKSxhPWUuc3VjY2Vzc29ycyhuLm4yKTtpZihvLmxlbmd0aCE9PWEubGVuZ3RoKXJldHVybiBjb25zb2xlLmxvZygiIyBvZiBzdWNjZXNzb3JzIG1pc21hdGNoIixvLGEpLCExO289SXF0KG8sdCxpKSxhPUlxdChhLGUscik7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0KyspaWYobChvW3RdLGFbdF0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIE9xdCh0LGUpe2lmKHQudHlwZT09PWpHdC5NRVRBKXtsZXQgbj10LGk9ZTtyZXR1cm4gbi50ZW1wbGF0ZUlkJiZpLnRlbXBsYXRlSWQmJm4udGVtcGxhdGVJZD09PWkudGVtcGxhdGVJZH1pZih0LnR5cGU9PT1qR3QuT1AmJmUudHlwZT09PWpHdC5PUClyZXR1cm4gdC5vcD09PWUub3A7aWYodC50eXBlPT09akd0LlNFUklFUyYmZS50eXBlPT09akd0LlNFUklFUyl7bGV0IG49dCxpPWUscj1uLm1ldGFncmFwaC5ub2RlQ291bnQoKTtyZXR1cm4gcj09PWkubWV0YWdyYXBoLm5vZGVDb3VudCgpJiYoMD09PXJ8fG4ubWV0YWdyYXBoLm5vZGUobi5tZXRhZ3JhcGgubm9kZXMoKVswXSkub3A9PT1pLm1ldGFncmFwaC5ub2RlKGkubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wKX1yZXR1cm4hMX12YXIgenF0O05xdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdgogICAgICBpZD0ibGlzdC1pdGVtIgogICAgICBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciIKICAgID4KICAgICAgPGRpdiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoaXRlbVJlbmRlckluZm8pfX0iPgogICAgICAgIDx0Zi1ub2RlLWljb24KICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIKICAgICAgICAgIG5vZGU9IltbaXRlbU5vZGVdXSIKICAgICAgICAgIHJlbmRlci1pbmZvPSJbW2l0ZW1SZW5kZXJJbmZvXV0iCiAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTnF0LnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTnF0LnByb3RvdHlwZSwiaXRlbU5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTnF0LnByb3RvdHlwZSwiZWRnZUxhYmVsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE5xdC5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5xdC5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5xdC5wcm90b3R5cGUsIml0ZW1UeXBlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5xdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTnF0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLE5xdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksTnF0PXQoW2koInRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0iKV0sTnF0KSwoZnVuY3Rpb24odCl7dFt0LlRFTVBMQVRFU19VUERBVEVEPTBdPSJURU1QTEFURVNfVVBEQVRFRCJ9KSh6cXR8fCh6cXQ9e30pKTtjbGFzcyBEcXQgZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnM9bmV3IE1hcH1nZXRMaXN0ZW5lcnModCl7cmV0dXJuIHRoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnMuaGFzKHQpfHx0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLnNldCh0LFtdKSx0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLmdldCh0KX1hZGRMaXN0ZW5lcih0LGUpe3RoaXMuZ2V0TGlzdGVuZXJzKHQpLnB1c2goZSl9cmVtb3ZlTGlzdGVuZXIodCxlKXtjb25zdCBuPXRoaXMuZ2V0TGlzdGVuZXJzKHQpLmZpbHRlcigodD0+dCE9PWUpKTt0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLnNldCh0LG4pfWRpc3BhdGNoRXZlbnQodCxlKXtmb3IoY29uc3QgbiBvZiB0aGlzLmdldExpc3RlbmVycyh0KSluKGUpfX17Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmhhc1NoYXBlSW5mbz0hMSx0aGlzLm1heE1ldGFFZGdlU2l6ZT0xLHRoaXMuZ3JhcGhPcHRpb25zPXt9LHRoaXMudGVtcGxhdGVzPW51bGwsdGhpcy5ncmFwaE9wdGlvbnMuY29tcG91bmQ9ITAsdGhpcy5ncmFwaE9wdGlvbnMucmFua2Rpcj10LnJhbmtEaXJlY3Rpb24sdGhpcy5yb290PSRHdChGR3QsdGhpcy5ncmFwaE9wdGlvbnMpLHRoaXMubGlicmFyeUZ1bmN0aW9ucz17fSx0aGlzLnNlcmllc0dyb3VwTWFwPW5ldyBNYXAodC5zZXJpZXNNYXApLHRoaXMuZGV2aWNlcz1udWxsLHRoaXMueGxhQ2x1c3RlcnM9bnVsbCx0aGlzLnZlcmlmeVRlbXBsYXRlPXQudmVyaWZ5VGVtcGxhdGUsdGhpcy5pbmRleD17fSx0aGlzLmluZGV4Ll9fcm9vdF9fPXRoaXMucm9vdCx0aGlzLm9yZGVyaW5ncz17fX1nZXRTZXJpZXNHcm91cFR5cGUodCl7dmFyIGU7cmV0dXJuIG51bGwhPT0oZT10aGlzLnNlcmllc0dyb3VwTWFwLmdldCh0KSkmJnZvaWQgMCE9PWU/ZTpXR3QuR1JPVVB9c2V0U2VyaWVzR3JvdXBUeXBlKHQsZSl7cmV0dXJuIHRoaXMuc2VyaWVzR3JvdXBNYXAuc2V0KHQsZSl9YnVpbGRTZXJpZXNHcm91cE1hcFRvZ2dsZWQodCl7Y29uc3QgZT10aGlzLmdldFNlcmllc0dyb3VwVHlwZSh0KT09PVdHdC5HUk9VUD9XR3QuVU5HUk9VUDpXR3QuR1JPVVA7cmV0dXJuIG5ldyBNYXAoWy4uLnRoaXMuc2VyaWVzR3JvdXBNYXAsW3QsZV1dKX1nZXROb2RlTWFwKCl7cmV0dXJuIHRoaXMuaW5kZXh9bm9kZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1zZXROb2RlKHQsZSl7dGhpcy5pbmRleFt0XT1lfWdldEJyaWRnZWdyYXBoKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgaW4gaGllcmFyY2h5OiAiK3QpO2lmKCEoIm1ldGFncmFwaCJpbiBlKSlyZXR1cm4gbnVsbDtpZihlLmJyaWRnZWdyYXBoKXJldHVybiBlLmJyaWRnZWdyYXBoO2xldCBuPWUuYnJpZGdlZ3JhcGg9b1d0KCJCUklER0VHUkFQSCIsVUd0LkJSSURHRSx0aGlzLmdyYXBoT3B0aW9ucyk7aWYoIWUucGFyZW50Tm9kZXx8ISgibWV0YWdyYXBoImluIGUucGFyZW50Tm9kZSkpcmV0dXJuIG47bGV0IGk9ZS5wYXJlbnROb2RlLHI9aS5tZXRhZ3JhcGgsbz10aGlzLmdldEJyaWRnZWdyYXBoKGkubmFtZSk7cmV0dXJuIFNlLmV4cG9ydHMuZWFjaChbcixvXSwoZT0+e2UuZWRnZXMoKS5maWx0ZXIoKGU9PmUudj09PXR8fGUudz09PXQpKS5mb3JFYWNoKChpPT57bGV0IHI9aS53PT09dCxvPWUuZWRnZShpKTtTZS5leHBvcnRzLmVhY2goby5iYXNlRWRnZUxpc3QsKGU9PntsZXRbbyxhXT1yP1tlLncsaS52XTpbZS52LGkud10scz10aGlzLmdldENoaWxkTmFtZSh0LG8pLGw9e3Y6cj9hOnMsdzpyP3M6YX0sYz1uLmVkZ2UobCk7Y3x8KGM9Wkd0KGwudixsLncpLGMuaW5ib3VuZD1yLG4uc2V0RWRnZShsLnYsbC53LGMpKSxjLmFkZEJhc2VFZGdlKGUsdGhpcyl9KSl9KSl9KSksbn1nZXRDaGlsZE5hbWUodCxlKXtsZXQgbj10aGlzLmluZGV4W2VdO2Zvcig7bjspe2lmKG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLm5hbWU9PT10KXJldHVybiBuLm5hbWU7bj1uLnBhcmVudE5vZGV9dGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGltbWVkaWF0ZSBjaGlsZCBmb3IgZGVzY2VuZGFudDogIitlKX1nZXRQcmVkZWNlc3NvcnModCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7bGV0IG49dGhpcy5nZXRPbmVXYXlFZGdlcyhlLCEwKTtyZXR1cm4gZS5pc0dyb3VwTm9kZXx8U2UuZXhwb3J0cy5lYWNoKGUuaW5FbWJlZGRpbmdzLChpPT57U2UuZXhwb3J0cy5lYWNoKGUuaW5wdXRzLChlPT57aWYoZS5uYW1lPT09aS5uYW1lKXtsZXQgcj1uZXcgSkd0KGkubmFtZSx0KTtyLmFkZEJhc2VFZGdlKHtpc0NvbnRyb2xEZXBlbmRlbmN5OmUuaXNDb250cm9sRGVwZW5kZW5jeSxvdXRwdXRUZW5zb3JLZXk6ZS5vdXRwdXRUZW5zb3JLZXksaXNSZWZlcmVuY2VFZGdlOiExLHY6aS5uYW1lLHc6dH0sdGhpcyksbi5yZWd1bGFyLnB1c2gocil9fSkpfSkpLG59Z2V0U3VjY2Vzc29ycyh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIHdpdGggbmFtZTogIit0KTtsZXQgbj10aGlzLmdldE9uZVdheUVkZ2VzKGUsITEpO3JldHVybiBlLmlzR3JvdXBOb2RlfHxTZS5leHBvcnRzLmVhY2goZS5vdXRFbWJlZGRpbmdzLChlPT57U2UuZXhwb3J0cy5lYWNoKGUuaW5wdXRzLChpPT57aWYoaS5uYW1lPT09dCl7bGV0IHI9bmV3IEpHdCh0LGUubmFtZSk7ci5hZGRCYXNlRWRnZSh7aXNDb250cm9sRGVwZW5kZW5jeTppLmlzQ29udHJvbERlcGVuZGVuY3ksb3V0cHV0VGVuc29yS2V5Omkub3V0cHV0VGVuc29yS2V5LGlzUmVmZXJlbmNlRWRnZTohMSx2OnQsdzplLm5hbWV9LHRoaXMpLG4ucmVndWxhci5wdXNoKHIpfX0pKX0pKSxufWdldE9uZVdheUVkZ2VzKHQsZSl7bGV0IG49e2NvbnRyb2w6W10scmVndWxhcjpbXX07aWYoIXQucGFyZW50Tm9kZXx8IXQucGFyZW50Tm9kZS5pc0dyb3VwTm9kZSlyZXR1cm4gbjtsZXQgaT10LnBhcmVudE5vZGUscj1pLm1ldGFncmFwaCxvPXRoaXMuZ2V0QnJpZGdlZ3JhcGgoaS5uYW1lKTtyZXR1cm4gQnF0KHIsdCxlLG4pLEJxdChvLHQsZSxuKSxufWdldFRvcG9sb2dpY2FsT3JkZXJpbmcodCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7aWYoIWUuaXNHcm91cE5vZGUpcmV0dXJuIG51bGw7aWYodCBpbiB0aGlzLm9yZGVyaW5ncylyZXR1cm4gdGhpcy5vcmRlcmluZ3NbdF07bGV0IG49e30saT17fSxyPWUubWV0YWdyYXBoO1NlLmV4cG9ydHMuZWFjaChyLmVkZ2VzKCksKHQ9PntyLmVkZ2UodCkubnVtUmVndWxhckVkZ2VzJiYodC52IGluIG58fChuW3Qudl09W10pLG5bdC52XS5wdXNoKHQudyksaVt0LnddPSEwKX0pKTtsZXQgbz1TZS5leHBvcnRzLmRpZmZlcmVuY2UoU2UuZXhwb3J0cy5rZXlzKG4pLFNlLmV4cG9ydHMua2V5cyhpKSksYT10aGlzLm9yZGVyaW5nc1t0XT17fSxzPTA7Zm9yKDtvLmxlbmd0aDspe2xldCB0PW8uc2hpZnQoKTthW3RdPXMrKyxTZS5leHBvcnRzLmVhY2goblt0XSwodD0+by5wdXNoKHQpKSksZGVsZXRlIG5bdF19cmV0dXJuIGF9Z2V0VGVtcGxhdGVJbmRleCgpe2lmKCF0aGlzLnRlbXBsYXRlcylyZXR1cm4gbnVsbDtsZXQgdD1MZyh0aGlzLnRlbXBsYXRlcyk7aWYoIXQubGVuZ3RoKXJldHVybiBudWxsO2xldCBlPUVNKCkuZG9tYWluKHQpLnJhbmdlKHpsKDAsdC5sZW5ndGgpKTtyZXR1cm4gdD0+ZSh0KX11cGRhdGVUZW1wbGF0ZXMoKXtDR3QoIkZpbmRpbmcgc2ltaWxhciBzdWJncmFwaHMiLCgoKT0+e3RoaXMudGVtcGxhdGVzPShmdW5jdGlvbiB0KGUsbil7bGV0IGk9KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gU2UuZXhwb3J0cy5yZWR1Y2UodCwoZnVuY3Rpb24odCxuKXtsZXQgaT1uWzBdLHI9W107cmV0dXJuIG5bMV0ubm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspaWYoIWV8fFJxdChyW25dLm1ldGFub2RlLm1ldGFncmFwaCx0Lm1ldGFncmFwaCkpcmV0dXJuIHQudGVtcGxhdGVJZD1yW25dLm1ldGFub2RlLnRlbXBsYXRlSWQsdm9pZCByW25dLm1lbWJlcnMucHVzaCh0Lm5hbWUpO3QudGVtcGxhdGVJZD1pKyJbIityLmxlbmd0aCsiXSIsci5wdXNoKHttZXRhbm9kZTp0LG1lbWJlcnM6W3QubmFtZV19KX0pKSxyLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZS5tZXRhbm9kZS50ZW1wbGF0ZUlkXT17bGV2ZWw6blsxXS5sZXZlbCxub2RlczplLm1lbWJlcnN9fSkpLHR9KSx7fSl9KSgoZnVuY3Rpb24gcih0KXtjb25zdCBlPXQuZ2V0Tm9kZU1hcCgpO2xldCBuPU9iamVjdC5rZXlzKGUpLnJlZHVjZSgoKHQsbik9Pntjb25zdCBpPWVbbl07aWYoaS50eXBlIT09akd0Lk1FVEEpcmV0dXJuIHQ7bGV0IHI9bi5zcGxpdCgiLyIpLmxlbmd0aC0xLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuIFNlLmV4cG9ydHMubWFwKHtkZXB0aDp0LmRlcHRoLCJ8VnwiOnQubWV0YWdyYXBoLm5vZGVzKCkubGVuZ3RoLCJ8RXwiOnQubWV0YWdyYXBoLmVkZ2VzKCkubGVuZ3RofSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsiPSIrdH0pKS5qb2luKCIgIikrIiBbb3BzXSAiK1NlLmV4cG9ydHMubWFwKHQub3BIaXN0b2dyYW0sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrIj0iK3R9KSkuam9pbigiLCIpfSkoaSkscz10W29dfHx7bm9kZXM6W10sbGV2ZWw6cn07cmV0dXJuIHRbb109cyxzLm5vZGVzLnB1c2goaSkscy5sZXZlbD5yJiYocy5sZXZlbD1yKSx0fSkse30pO3JldHVybiBPYmplY3Qua2V5cyhuKS5tYXAoKHQ9Plt0LG5bdF1dKSkuZmlsdGVyKCgoW3QsZV0pPT57Y29uc3R7bm9kZXM6bn09ZTtpZihuLmxlbmd0aD4xKXJldHVybiEwO2NvbnN0IGk9blswXTtyZXR1cm4gaS50eXBlPT09akd0Lk1FVEEmJmkuYXNzb2NpYXRlZEZ1bmN0aW9ufSkpLnNvcnQoKChbdCxlXSk9PmUubm9kZXNbMF0uZGVwdGgpKX0pKGUpLG4pO3JldHVybiBPYmplY3Qua2V5cyhpKS5zb3J0KCh0PT5pW3RdLmxldmVsKSkucmVkdWNlKCgodCxlKT0+KHRbZV09aVtlXSx0KSkse30pfSkodGhpcyx0aGlzLnZlcmlmeVRlbXBsYXRlKSx0aGlzLmRpc3BhdGNoRXZlbnQoenF0LlRFTVBMQVRFU19VUERBVEVEKX0pLF9HdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUyl9fWZ1bmN0aW9uIEJxdCh0LGUsbixpKXtsZXQgcj1uP3QuaW5FZGdlcyhlLm5hbWUpOnQub3V0RWRnZXMoZS5uYW1lKTtTZS5leHBvcnRzLmVhY2gociwoZT0+e2xldCBuPXQuZWRnZShlKTsobi5udW1SZWd1bGFyRWRnZXM/aS5yZWd1bGFyOmkuY29udHJvbCkucHVzaChuKX0pKX1jb25zdCBIcXQ9e3ZlcmlmeVRlbXBsYXRlOiEwLHNlcmllc05vZGVNaW5TaXplOjUsc2VyaWVzTWFwOm5ldyBNYXAscmFua0RpcmVjdGlvbjoiQlQiLHVzZUdlbmVyYWxpemVkU2VyaWVzUGF0dGVybnM6ITF9O2Z1bmN0aW9uIEZxdCh0LGUsbil7Y29uc3QgaT1uZXcgRHF0KGUpLHI9e307cmV0dXJuIExHdCgiQWRkaW5nIG5vZGVzIiwzMCwoKCk9PntsZXQgZT17fSxuPXt9O1NlLmV4cG9ydHMuZWFjaCh0Lm5vZGVzLCgodCxpKT0+e3QuZGV2aWNlJiYoZVt0LmRldmljZV09ITApLHQueGxhQ2x1c3RlciYmKG5bdC54bGFDbHVzdGVyXT0hMCl9KSksaS5kZXZpY2VzPVNlLmV4cG9ydHMua2V5cyhlKSxpLnhsYUNsdXN0ZXJzPVNlLmV4cG9ydHMua2V5cyhuKSwoZnVuY3Rpb24gcih0LGUpe2NvbnN0IG49e307U2UuZXhwb3J0cy5lYWNoKGUubm9kZXMsKChlLGkpPT57bGV0IHI9Y1d0KGUubmFtZSksbz10LnJvb3Q7by5kZXB0aD1NYXRoLm1heChyLmxlbmd0aCxvLmRlcHRoKSxuW2Uub3BdfHwobltlLm9wXT1bXSksbltlLm9wXS5wdXNoKGUpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgmJihvLmRlcHRoPU1hdGgubWF4KG8uZGVwdGgsci5sZW5ndGgtaSksby5jYXJkaW5hbGl0eSs9ZS5jYXJkaW5hbGl0eSxvLm9wSGlzdG9ncmFtW2Uub3BdPShvLm9wSGlzdG9ncmFtW2Uub3BdfHwwKSsxLG51bGwhPWUuZGV2aWNlJiYoby5kZXZpY2VIaXN0b2dyYW1bZS5kZXZpY2VdPShvLmRldmljZUhpc3RvZ3JhbVtlLmRldmljZV18fDApKzEpLG51bGwhPWUueGxhQ2x1c3RlciYmKG8ueGxhQ2x1c3Rlckhpc3RvZ3JhbVtlLnhsYUNsdXN0ZXJdPShvLnhsYUNsdXN0ZXJIaXN0b2dyYW1bZS54bGFDbHVzdGVyXXx8MCkrMSksZS5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLFNlLmV4cG9ydHMuZWFjaChlLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZT9vLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oby5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxTZS5leHBvcnRzLmVhY2goZS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxfSkpLGkhPT1yLmxlbmd0aC0xKTtpKyspe2xldCBlPXJbaV0sYT10Lm5vZGUoZSk7aWYoIWEmJihhPSRHdChlLHQuZ3JhcGhPcHRpb25zKSxhLnBhcmVudE5vZGU9byx0LnNldE5vZGUoZSxhKSxvLm1ldGFncmFwaC5zZXROb2RlKGUsYSksMD09PWUuaW5kZXhPZihWR3QpJiZvLm5hbWU9PT1GR3QpKXtjb25zdCBpPWUuc3Vic3RyaW5nKFZHdC5sZW5ndGgpO25baV18fChuW2ldPVtdKSx0LmxpYnJhcnlGdW5jdGlvbnNbaV09e25vZGU6YSx1c2FnZXM6bltpXX0sYS5hc3NvY2lhdGVkRnVuY3Rpb249aX1vPWF9dC5zZXROb2RlKGUubmFtZSxlKSxlLnBhcmVudE5vZGU9byxvLm1ldGFncmFwaC5zZXROb2RlKGUubmFtZSxlKSxTZS5leHBvcnRzLmVhY2goZS5pbkVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSksU2UuZXhwb3J0cy5lYWNoKGUub3V0RW1iZWRkaW5ncywoZnVuY3Rpb24obil7dC5zZXROb2RlKG4ubmFtZSxuKSxuLnBhcmVudE5vZGU9ZX0pKX0pKX0pKGksdCl9KSxuLF9HdC5ISUVSQVJDSFlfQUREX05PREVTKS50aGVuKCgoKT0+TEd0KCJEZXRlY3Qgc2VyaWVzIiwzMCwoKCk9PntlLnNlcmllc05vZGVNaW5TaXplPjAmJlZxdChpLnJvb3QsaSxyLGUuc2VyaWVzTm9kZU1pblNpemUsZS5zZXJpZXNNYXAsZS51c2VHZW5lcmFsaXplZFNlcmllc1BhdHRlcm5zKX0pLG4sX0d0LkhJRVJBUkNIWV9ERVRFQ1RfU0VSSUVTKSkpLnRoZW4oKCgpPT5MR3QoIkFkZGluZyBlZGdlcyIsNDAsKCgpPT57IShmdW5jdGlvbiBlKHQsbixpKXtsZXQgcj10LmdldE5vZGVNYXAoKSxvPVtdLGE9W10scz0odCxlKT0+e2xldCBuPTA7Zm9yKDt0OyllW24rK109dC5uYW1lLHQ9dC5wYXJlbnROb2RlO3JldHVybiBuLTF9O1NlLmV4cG9ydHMuZWFjaChuLmVkZ2VzLChlPT57bGV0IGk9cyhuLm5vZGVzW2Uudl0sbyksbD1zKG4ubm9kZXNbZS53XSxhKTtpZigtMT09PWl8fC0xPT09bClyZXR1cm47Zm9yKDtvW2ldPT09YVtsXTspaWYoaS0tLGwtLSxpPDB8fGw8MCl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO2xldCBjPXJbb1tpKzFdXSx1PW9baV0saD1hW2xdLGQ9Yy5tZXRhZ3JhcGguZWRnZSh1LGgpO2R8fChkPVpHdCh1LGgpLGMubWV0YWdyYXBoLnNldEVkZ2UodSxoLGQpKSxjLmhhc05vbkNvbnRyb2xFZGdlc3x8ZS5pc0NvbnRyb2xEZXBlbmRlbmN5fHwoYy5oYXNOb25Db250cm9sRWRnZXM9ITApLGQuYWRkQmFzZUVkZ2UoZSx0KX0pKX0pKGksdCl9KSxuLF9HdC5ISUVSQVJDSFlfQUREX0VER0VTKSkpLnRoZW4oKCgpPT5pKSl9ZnVuY3Rpb24gVnF0KHQsZSxuLGkscixvKXtsZXQgYT10Lm1ldGFncmFwaDtTZS5leHBvcnRzLmVhY2goYS5ub2RlcygpLCh0PT57bGV0IHM9YS5ub2RlKHQpO3MudHlwZT09PWpHdC5NRVRBJiZWcXQocyxlLG4saSxyLG8pfSkpO2xldCBzPShmdW5jdGlvbiBsKHQpe3JldHVybiBTZS5leHBvcnRzLnJlZHVjZSh0Lm5vZGVzKCksKChlLG4pPT57bGV0IGk9dC5ub2RlKG4pO2lmKGkudHlwZT09PWpHdC5NRVRBKXJldHVybiBlO2xldCByPWkub3A7cmV0dXJuIHImJihlW3JdPWVbcl18fFtdLGVbcl0ucHVzaChpLm5hbWUpKSxlfSkse30pfSkoYSksYz0obz9qcXQ6VXF0KShzLGEsZS5ncmFwaE9wdGlvbnMpO1NlLmV4cG9ydHMuZWFjaChjLChmdW5jdGlvbih0LHIpe2xldCBvPXQubWV0YWdyYXBoLm5vZGVzKCk7U2UuZXhwb3J0cy5lYWNoKG8sKHQ9PntsZXQgZT1hLm5vZGUodCk7ZS5vd25pbmdTZXJpZXN8fChlLm93bmluZ1Nlcmllcz1yKX0pKSxvLmxlbmd0aDxpJiZlLmdldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUpPT09V0d0LkdST1VQJiZlLnNldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUsV0d0LlVOR1JPVVApLGUuZ2V0U2VyaWVzR3JvdXBUeXBlKHQubmFtZSkhPT1XR3QuVU5HUk9VUCYmKGUuc2V0Tm9kZShyLHQpLGEuc2V0Tm9kZShyLHQpLFNlLmV4cG9ydHMuZWFjaChvLChlPT57bGV0IGk9YS5ub2RlKGUpO3QubWV0YWdyYXBoLnNldE5vZGUoZSxpKSx0LnBhcmVudE5vZGU9aS5wYXJlbnROb2RlLHQuY2FyZGluYWxpdHkrKyxudWxsIT1pLmRldmljZSYmKHQuZGV2aWNlSGlzdG9ncmFtW2kuZGV2aWNlXT0odC5kZXZpY2VIaXN0b2dyYW1baS5kZXZpY2VdfHwwKSsxKSxudWxsIT1pLnhsYUNsdXN0ZXImJih0LnhsYUNsdXN0ZXJIaXN0b2dyYW1baS54bGFDbHVzdGVyXT0odC54bGFDbHVzdGVySGlzdG9ncmFtW2kueGxhQ2x1c3Rlcl18fDApKzEpLGkuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMSxTZS5leHBvcnRzLmVhY2goaS5pbkVtYmVkZGluZ3MsKGU9PntlLmNvbXBhdGlibGU/dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksU2UuZXhwb3J0cy5lYWNoKGkub3V0RW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxpLnBhcmVudE5vZGU9dCxuW2VdPXIsYS5yZW1vdmVOb2RlKGUpfSkpKX0pKX1mdW5jdGlvbiBVcXQodCxlLG4pe2xldCBpPXt9O3JldHVybiBTZS5leHBvcnRzLmVhY2godCwoZnVuY3Rpb24odCxyKXtpZih0Lmxlbmd0aDw9MSlyZXR1cm47bGV0IG89e307U2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9IioiPT09dC5jaGFyQXQodC5sZW5ndGgtMSksaT10LnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLGE9aS5zbGljZSgwLGkubGVuZ3RoLTEpLmpvaW4oIi8iKSxzPXIubWF0Y2goL14oXEQqKShcZCspJC8pO2xldCBsLGMsdT0iIjtzPyhsPXNbMV0sYz1zWzJdKToobD1lP3Iuc3Vic3RyKDAsci5sZW5ndGgtMSk6cixjPTAsdT1lPyIqIjoiIik7Y29uc3QgaD10V3QobCx1LGEpO29baF09b1toXXx8W107Y29uc3QgZD1RR3QobCx1LGEsK2MsdCxuKTtvW2hdLnB1c2goZCl9KSksU2UuZXhwb3J0cy5lYWNoKG8sKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oR3F0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9R3F0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24ganF0KHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gU2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYodC5sZW5ndGg8PTEpcmV0dXJuO2xldCBvPXt9LGE9e307U2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2xldCBlPSIqIj09PXQuY2hhckF0KHQubGVuZ3RoLTEpLGk9dC5zcGxpdCgiLyIpLHI9aVtpLmxlbmd0aC0xXSxzPWkuc2xpY2UoMCxpLmxlbmd0aC0xKS5qb2luKCIvIik7Y29uc3QgbD0vKFxkKykvZztsZXQgYyx1LGgsZCxwLGY9MDtmb3IoO2M9bC5leGVjKHIpOykrK2YsdT1yLnNsaWNlKDAsYy5pbmRleCksaD1jWzBdLGQ9ci5zbGljZShjLmluZGV4K2NbMF0ubGVuZ3RoKSxwPXRXdCh1LGQscyksb1twXT1vW3BdLG9bcF18fChvW3BdPVFHdCh1LGQscywraCx0LG4pKSxvW3BdLmlkcy5wdXNoKGgpLGFbdF09YVt0XXx8W10sYVt0XS5wdXNoKFtwLGhdKTtmPDEmJih1PWU/ci5zdWJzdHIoMCxyLmxlbmd0aC0xKTpyLGg9MCxkPWU/IioiOiIiLHA9dFd0KHUsZCxzKSxvW3BdPW9bcF0sb1twXXx8KG9bcF09UUd0KHUsZCxzLCtoLHQsbikpLG9bcF0uaWRzLnB1c2goaCksYVt0XT1hW3RdfHxbXSxhW3RdLnB1c2goW3AsaF0pKX0pKTt2YXIgcz17fTtTZS5leHBvcnRzLmVhY2goYSwoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZVswXV0uaWRzLmxlbmd0aC1vW3RbMF1dLmlkcy5sZW5ndGh9KSk7dmFyIGk9dFswXVswXSxyPXRbMF1bMV07c1tpXT1zW2ldfHxbXTtjb25zdCBhPWUuc3BsaXQoIi8iKSxsPWEuc2xpY2UoMCxhLmxlbmd0aC0xKS5qb2luKCIvIik7dmFyIGM9UUd0KG9baV0ucHJlZml4LG9baV0uc3VmZml4LGwsK3IsZSxuKTtzW2ldLnB1c2goYyl9KSksU2UuZXhwb3J0cy5lYWNoKHMsKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8oR3F0KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9R3F0KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gR3F0KHQsZSxuLGkscil7aWYodC5sZW5ndGg+MSl7bGV0IG89dFd0KHRbMF0ucHJlZml4LHRbMF0uc3VmZml4LHRbMF0ucGFyZW50LHRbMF0uY2x1c3RlcklkLHRbdC5sZW5ndGgtMV0uY2x1c3RlcklkKSxhPVFHdCh0WzBdLnByZWZpeCx0WzBdLnN1ZmZpeCx0WzBdLnBhcmVudCxuLG8scik7U2UuZXhwb3J0cy5lYWNoKHQsKGZ1bmN0aW9uKHQpe2EuaWRzLnB1c2godC5jbHVzdGVySWQpLGEubWV0YWdyYXBoLnNldE5vZGUodC5uYW1lLGkubm9kZSh0Lm5hbWUpKX0pKSxlW29dPWF9fWxldCBXcXQ9Y2xhc3MgZXh0ZW5kcyhlcihpbCh5ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZXhwYW5kZWQ9ITAsdGhpcy5fb3BDb21wYXRDb2xvcj1oV3QsdGhpcy5fb3BJbmNvbXBhdENvbG9yPWRXdCx0aGlzLl90ZW1wbGF0ZUluZGV4PW51bGx9X2dldE5vZGUodCxlKXtyZXR1cm4gZS5ub2RlKHQpfV9nZXRSZW5kZXJJbmZvKHQsZSl7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZSh0KX1fdG9nZ2xlRXhwYW5kZWQoKXt0aGlzLl9leHBhbmRlZD0hdGhpcy5fZXhwYW5kZWR9X2dldFRvZ2dsZUljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV9yZXNpemVMaXN0KHQpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7ZSYmZS5maXJlKCJpcm9uLXJlc2l6ZSIpfWdldCBfaW5jb21wYXRpYmxlT3BOb2Rlcygpe2NvbnN0IHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdCYmdC5yb290Pyh0aGlzLmFzeW5jKHRoaXMuX3Jlc2l6ZUxpc3QuYmluZCh0aGlzLCIjaW5jb21wYXRpYmxlT3BzTGlzdCIpKSwoZnVuY3Rpb24gZSh0KXtjb25zdCBlPVtdLG49e307cmV0dXJuIFNlLmV4cG9ydHMuZWFjaCh0LnJvb3QubGVhdmVzKCksKGk9PntsZXQgcj10Lm5vZGUoaSk7aWYoci50eXBlPT1qR3QuT1Ape2xldCBpPXI7aWYoIWkuY29tcGF0aWJsZSlpZihpLm93bmluZ1Nlcmllcyl7aWYodC5nZXRTZXJpZXNHcm91cFR5cGUoaS5vd25pbmdTZXJpZXMpPT09V0d0LlVOR1JPVVApZS5wdXNoKGkpO2Vsc2UgaWYoIW5baS5vd25pbmdTZXJpZXNdKXtsZXQgcj10Lm5vZGUoaS5vd25pbmdTZXJpZXMpO3ImJihuW2kub3duaW5nU2VyaWVzXT1yLGUucHVzaChyKSl9fWVsc2UgZS5wdXNoKGkpO1NlLmV4cG9ydHMuZWFjaChpLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZXx8ZS5wdXNoKHQpfSkpLFNlLmV4cG9ydHMuZWFjaChpLm91dEVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGV8fGUucHVzaCh0KX0pKX19KSksZX0pKHQpKTpbXX1nZXQgX29wQ29tcGF0U2NvcmUoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O2lmKHQmJnQucm9vdCl7dmFyIGU9dC5yb290LG49ZS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGUsaT1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlO3JldHVybiAwPT1uJiYwPT1pPzA6TWF0aC5mbG9vcigxMDAqbi8obitpKSkvMTAwfXJldHVybiAwfWdldCBfb3BDb21wYXRTY29yZUxhYmVsKCl7dmFyIHQ9dGhpcy5fb3BDb21wYXRTY29yZTtyZXR1cm4gbXkoIi4wJSIpKHQpfWdldCBfdG90YWxJbmNvbXBhdE9wcygpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHQmJnQucm9vdD90LnJvb3QuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU6MH1fZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkKCl7dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSx0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKHpxdC5URU1QTEFURVNfVVBEQVRFRCwoKCk9Pnt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfSkpfX07V3F0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIC5pbmNvbXBhdGlibGUtb3BzLWxpc3QgewogICAgICAgIGhlaWdodDogMzUwcHg7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgaXJvbi1saXN0IHsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0tYm9keVt0d28tbGluZV0gewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNHB4OwogICAgICB9CgogICAgICAuZXhwYW5kZWRJbmZvIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vZGUtbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLm5vbi1jb250cm9sLWxpc3QtaXRlbSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LWRpc3BsYXkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAvKioKICAgICAgICogU2FkbHksIGJlY2F1c2UgdGhlIHdob2xlIGJvZHkgaXMgaW52ZXJ0ZWQgaW4gY29sb3IsIGxlZ2VuZHMgYWxzbyBuZWVkCiAgICAgICAqIHRvIGJlIGludmVydGVkLgogICAgICAgKiovCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIGRpdi5vcC1jb21wYXQtZGlzcGxheSB7CiAgICAgICAgZmlsdGVyOiBpbnZlcnQoMSk7CiAgICAgIH0KCiAgICAgIHN2Zy5vcC1jb21wYXQgewogICAgICAgIHdpZHRoOiAyNTBweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KCiAgICAgIGRpdi5vcC1jb21wYXQtdmFsdWUgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaXRlbT4KICAgICAgPHBhcGVyLWl0ZW0tYm9keSB0d28tbGluZT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX2V4cGFuZGVkKX19IgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub2RlLW5hbWUiIGlkPSJub2RldGl0bGUiPltbbm9kZVRpdGxlXV08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtY29tcGF0LWRpc3BsYXkiPgogICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgIGNsYXNzPSJvcC1jb21wYXQiCiAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDI1MCAyNSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJvcC1jb21wYXQtZmlsbCI+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCQ9IltbX29wQ29tcGF0U2NvcmVdXSIKICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19vcENvbXBhdENvbG9yXV0iCiAgICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0JD0iW1tfb3BDb21wYXRTY29yZV1dIgogICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvciQ9IltbX29wSW5jb21wYXRDb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yJD0iW1tfb3BJbmNvbXBhdENvbG9yIF1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICA8cmVjdAogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjI1IgogICAgICAgICAgICAgICAgICB3aWR0aD0iMjUwIgogICAgICAgICAgICAgICAgICByeD0iNSIKICAgICAgICAgICAgICAgICAgcnk9IjUiCiAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiB1cmwoJyNvcC1jb21wYXQtZmlsbCcpOyIKICAgICAgICAgICAgICAgID48L3JlY3Q+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtY29tcGF0LXZhbHVlIj5bW19vcENvbXBhdFNjb3JlTGFiZWxdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3BhcGVyLWl0ZW0tYm9keT4KICAgIDwvcGFwZXItaXRlbT4KCiAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X2V4cGFuZGVkfX0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2V4cGFuZGVkfX0iIHJlc3RhbXA9InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9ImV4cGFuZGVkSW5mbyI+CiAgICAgICAgICBJbmNvbXBhdGlibGUgT3BlcmF0aW9uczogKDxzcGFuPltbX3RvdGFsSW5jb21wYXRPcHNdXTwvc3Bhbj4pCiAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgIGNsYXNzPSJpbmNvbXBhdGlibGUtb3BzLWxpc3QiCiAgICAgICAgICAgIGlkPSJpbmNvbXBhdGlibGVPcHNMaXN0IgogICAgICAgICAgICBpdGVtcz0iW1tfaW5jb21wYXRpYmxlT3BOb2Rlc11dIgogICAgICAgICAgPgogICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0KICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbV1dIgogICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tfZ2V0UmVuZGVySW5mbyhpdGVtLm5hbWUsIHJlbmRlckhpZXJhcmNoeSldXSIKICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgaXRlbS10eXBlPSJpbmNvbXBhdGlibGUtb3BzIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvaXJvbi1jb2xsYXBzZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLERxdCldLFdxdC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHlXdCldLFdxdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxXcXQucHJvdG90eXBlLCJub2RlVGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXcXQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sV3F0LnByb3RvdHlwZSwiX29wQ29tcGF0Q29sb3IiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sV3F0LnByb3RvdHlwZSwiX29wSW5jb21wYXRDb2xvciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFdxdC5wcm90b3R5cGUsIl90ZW1wbGF0ZUluZGV4Iix2b2lkIDApLHQoW3MoImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxXcXQucHJvdG90eXBlLCJfaW5jb21wYXRpYmxlT3BOb2RlcyIsbnVsbCksdChbcygiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxXcXQucHJvdG90eXBlLCJfb3BDb21wYXRTY29yZSIsbnVsbCksdChbcygiX29wQ29tcGF0U2NvcmUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxXcXQucHJvdG90eXBlLCJfb3BDb21wYXRTY29yZUxhYmVsIixudWxsKSx0KFtzKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFdxdC5wcm90b3R5cGUsIl90b3RhbEluY29tcGF0T3BzIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sV3F0LnByb3RvdHlwZSwiX2dyYXBoSGllcmFyY2h5Q2hhbmdlZCIsbnVsbCksV3F0PXQoW2koInRmLWdyYXBoLW9wLWNvbXBhdC1jYXJkIildLFdxdCk7bGV0IHFxdD1jbGFzcyBleHRlbmRzKGVyKGlsKHllKSkpe19pdGVtVHlwZUNoYW5nZWQoKXsic3Vibm9kZSIhPT10aGlzLml0ZW1UeXBlP3RoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LmFkZCgiY2xpY2thYmxlIik6dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QucmVtb3ZlKCJjbGlja2FibGUiKX1fbm9kZUxpc3RlbmVyKHQpe3RoaXMuZmlyZSgibm9kZS1saXN0LWl0ZW0tIit0LnR5cGUse2NhcmROb2RlOnRoaXMuY2FyZE5vZGUubmFtZSxub2RlTmFtZTp0aGlzLm5hbWUsdHlwZTp0aGlzLml0ZW1UeXBlfSl9X2ZhZGVkQ2xhc3ModCl7cmV0dXJuIHQmJnQuaXNGYWRlZE91dD8iZmFkZWQiOiIifX07cXF0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICAjbGlzdC1pdGVtIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdvb2dsZS15ZWxsb3ctMTAwKTsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgI2xpc3QtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXIteWVsbG93LTkwMCk7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2CiAgICAgIGlkPSJsaXN0LWl0ZW0iCiAgICAgIG9uLW1vdXNlb3Zlcj0iX25vZGVMaXN0ZW5lciIKICAgICAgb24tbW91c2VvdXQ9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLWNsaWNrPSJfbm9kZUxpc3RlbmVyIgogICAgPgogICAgICA8ZGl2IGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhpdGVtUmVuZGVySW5mbyl9fSI+CiAgICAgICAgPHRmLW5vZGUtaWNvbgogICAgICAgICAgY2xhc3M9Im5vZGUtaWNvbiIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9IltbY29sb3JCeVBhcmFtc11dIgogICAgICAgICAgbm9kZT0iW1tpdGVtTm9kZV1dIgogICAgICAgICAgcmVuZGVyLWluZm89IltbaXRlbVJlbmRlckluZm9dXSIKICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICA+PC90Zi1ub2RlLWljb24+CiAgICAgICAgPHNwYW4gdGl0bGUkPSJbW25hbWVdXSI+W1tuYW1lXV08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImVkZ2UtbGFiZWwiPltbZWRnZUxhYmVsXV08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxcXQucHJvdG90eXBlLCJjYXJkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxcXQucHJvdG90eXBlLCJpdGVtTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxcXQucHJvdG90eXBlLCJlZGdlTGFiZWwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scXF0LnByb3RvdHlwZSwiaXRlbVJlbmRlckluZm8iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scXF0LnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2l0ZW1UeXBlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scXF0LnByb3RvdHlwZSwiaXRlbVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scXF0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxcXQucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHFxdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCkscXF0PXQoW2koInRmLW5vZGUtbGlzdC1pdGVtIildLHFxdCk7bGV0IFlxdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wZW5lZENvbnRyb2xQcmVkPSExLHRoaXMuX29wZW5lZENvbnRyb2xTdWNjPSExLHRoaXMuX3RlbXBsYXRlSW5kZXg9bnVsbH1leHBhbmROb2RlKCl7dGhpcy5maXJlKCJfbm9kZS5leHBhbmQiLHRoaXMubm9kZSl9X2dldE5vZGUodCxlKXtyZXR1cm4gZS5ub2RlKHQpfV9nZXROb2RlU3RhdHModCxlKXt2YXIgbj10aGlzLl9nZXROb2RlKHQsZSk7cmV0dXJuIG4/bi5zdGF0czpudWxsfV9nZXRUb3RhbE1pY3Jvcyh0KXtyZXR1cm4gdD90LmdldFRvdGFsTWljcm9zKCk6MH1nZXQgX2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzKCl7cmV0dXJuIE9HdCh0aGlzLl9ub2RlU3RhdHMpfWdldCBfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7aWYodCYmdC50b3RhbEJ5dGVzKXJldHVybiBSR3QodC50b3RhbEJ5dGVzLE5HdCl9Z2V0IF9ub2RlU3RhdHNGb3JtYXR0ZWRDb21wdXRlVGltZSgpe3ZhciB0PXRoaXMuX25vZGVTdGF0cztpZih0JiZ0LmdldFRvdGFsTWljcm9zKCkpcmV0dXJuIFJHdCh0LmdldFRvdGFsTWljcm9zKCksSUd0KX1nZXQgX25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzKCl7dmFyIHQ9dGhpcy5fbm9kZVN0YXRzO2lmKHQmJnQub3V0cHV0U2l6ZSYmdC5vdXRwdXRTaXplLmxlbmd0aClyZXR1cm4gU2UuZXhwb3J0cy5tYXAodC5vdXRwdXRTaXplLChmdW5jdGlvbih0KXtyZXR1cm4gMD09PXQubGVuZ3RoPyJzY2FsYXIiOiJbIit0LmpvaW4oIiwgIikrIl0ifSkpfV9nZXRSZW5kZXJJbmZvKHQsZSl7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZSh0KX1nZXQgX2F0dHJpYnV0ZXMoKXt2YXIgdD10aGlzLl9ub2RlO2lmKHRoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsIiNhdHRyaWJ1dGVzTGlzdCIpKSwhdHx8IXQuYXR0cilyZXR1cm5bXTt2YXIgZT1bXTtyZXR1cm4gU2UuZXhwb3J0cy5lYWNoKHQuYXR0ciwoZnVuY3Rpb24odCl7Il90b29fbGFyZ2VfYXR0cnMiPT09dC5rZXk/ZT1lLmNvbmNhdCh0LnZhbHVlLmxpc3Qucy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntrZXk6dCx2YWx1ZToiVG9vIGxhcmdlIHRvIHNob3cuLi4ifX0pKSk6ZS5wdXNoKHtrZXk6dC5rZXksdmFsdWU6SlNPTi5zdHJpbmdpZnkodC52YWx1ZSl9KX0pKSxlfWdldCBfZGV2aWNlKCl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdD90LmRldmljZTpudWxsfWdldCBfc3VjY2Vzc29ycygpe3ZhciB0PXRoaXMuX25vZGUsZT10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJpbnB1dHNMaXN0IiksdD90aGlzLl9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdChlLmdldFN1Y2Nlc3NvcnModC5uYW1lKSwhMSx0LmlzR3JvdXBOb2RlKTp7cmVndWxhcjpbXSxjb250cm9sOltdfX1nZXQgX3ByZWRlY2Vzc29ycygpe3ZhciB0PXRoaXMuX25vZGUsZT10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJvdXRwdXRzTGlzdCIpLHQ/dGhpcy5fY29udmVydEVkZ2VMaXN0VG9FZGdlSW5mb0xpc3QoZS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKSwhMCx0LmlzR3JvdXBOb2RlKTp7cmVndWxhcjpbXSxjb250cm9sOltdfX1nZXQgX2Z1bmN0aW9uVXNhZ2VzKCl7dmFyIHQ9dGhpcy5fbm9kZSxlPXRoaXMuZ3JhcGhIaWVyYXJjaHk7aWYodGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgiZnVuY3Rpb25Vc2FnZXNMaXN0IiksIXR8fHQudHlwZSE9PWpHdC5NRVRBKXJldHVybltdO2NvbnN0IG49ZS5saWJyYXJ5RnVuY3Rpb25zW3QuYXNzb2NpYXRlZEZ1bmN0aW9uXTtyZXR1cm4gbj9uLnVzYWdlczpbXX1fcmVmcmVzaE5vZGVJdGVtTGlzdCh0KXt0aGlzLmFzeW5jKHRoaXMuX3Jlc2l6ZUxpc3QuYmluZCh0aGlzLGAjJHt0fWApKX1fY29udmVydEVkZ2VMaXN0VG9FZGdlSW5mb0xpc3QodCxlLG4pe3ZhciBpPXQ9PlNlLmV4cG9ydHMubWFwKHQuYmFzZUVkZ2VMaXN0LCh0PT57dmFyIG49ZT90LnY6dC53O3JldHVybntuYW1lOm4sbm9kZTp0aGlzLl9nZXROb2RlKG4sdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOnRxdCh0LHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obix0aGlzLnJlbmRlckhpZXJhcmNoeSl9fSkpLHI9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIFNlLmV4cG9ydHMuZWFjaCh0LCh0PT57dmFyIG89ZT90LnY6dC53O24mJjEhPXQuYmFzZUVkZ2VMaXN0Lmxlbmd0aD9yLnB1c2goe25hbWU6byxub2RlOnRoaXMuX2dldE5vZGUobyx0aGlzLmdyYXBoSGllcmFyY2h5KSxlZGdlTGFiZWw6ZXF0KHQsdGhpcy5yZW5kZXJIaWVyYXJjaHkpLHJlbmRlckluZm86dGhpcy5fZ2V0UmVuZGVySW5mbyhvLHRoaXMucmVuZGVySGllcmFyY2h5KX0pOnI9ci5jb25jYXQoaSh0KSl9KSkscn0uYmluZCh0aGlzKTtyZXR1cm57cmVndWxhcjpyKHQucmVndWxhciksY29udHJvbDpyKHQuY29udHJvbCl9fWdldCBfc3Vibm9kZXMoKXt2YXIgdD10aGlzLl9ub2RlO3JldHVybiB0JiZ0Lm1ldGFncmFwaD90Lm1ldGFncmFwaC5ub2RlcygpOm51bGx9Z2V0IF90b3RhbFByZWRlY2Vzc29ycygpe3ZhciB0PXRoaXMuX3ByZWRlY2Vzc29ycztyZXR1cm4gdC5yZWd1bGFyLmxlbmd0aCt0LmNvbnRyb2wubGVuZ3RofWdldCBfdG90YWxTdWNjZXNzb3JzKCl7dmFyIHQ9dGhpcy5fc3VjY2Vzc29ycztyZXR1cm4gdC5yZWd1bGFyLmxlbmd0aCt0LmNvbnRyb2wubGVuZ3RofV90b2dnbGVDb250cm9sUHJlZCgpe3RoaXMuX29wZW5lZENvbnRyb2xQcmVkPSF0aGlzLl9vcGVuZWRDb250cm9sUHJlZH1fdG9nZ2xlQ29udHJvbFN1Y2MoKXt0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hdGhpcy5fb3BlbmVkQ29udHJvbFN1Y2N9X3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5fZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfV9nZXRUb2dnbGVJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fcmVzZXRTdGF0ZSgpe3RoaXMuX29wZW5lZENvbnRyb2xQcmVkPSExLHRoaXMuX29wZW5lZENvbnRyb2xTdWNjPSExLHRoaXMuc2V0KCJfZ3JvdXBCdXR0b25UZXh0IixwcXQodGhpcy5fbm9kZSkpfV9yZXNpemVMaXN0KHQpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7ZSYmZS5maXJlKCJpcm9uLXJlc2l6ZSIpfV90b2dnbGVJbmNsdWRlKCl7dGhpcy5maXJlKCJub2RlLXRvZ2dsZS1pbmNsdXNpb24iLHtuYW1lOnRoaXMuZ3JhcGhOb2RlTmFtZX0pfV9ub2RlSW5jbHVkZVN0YXRlQ2hhbmdlZCh0LGUpe3RoaXMuc2V0KCJfYXV4QnV0dG9uVGV4dCIsdVd0KHQpKX1fdG9nZ2xlR3JvdXAoKXt2YXIgdD1kcXQodGhpcy5fbm9kZSk7dGhpcy5maXJlKCJub2RlLXRvZ2dsZS1zZXJpZXNncm91cCIse25hbWU6dH0pfV9pc0xpYnJhcnlGdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5uYW1lLnN0YXJ0c1dpdGgoVkd0KX1faXNJblNlcmllcyh0KXtyZXR1cm4gaHF0KHQpfV9ncmFwaEhpZXJhcmNoeUNoYW5nZWQoKXt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLHRoaXMuZ3JhcGhIaWVyYXJjaHkuYWRkTGlzdGVuZXIoenF0LlRFTVBMQVRFU19VUERBVEVELCgoKT0+e3RoaXMuX3RlbXBsYXRlSW5kZXg9dGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCl9KSl9fTtZcXQudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIC5zdWItbGlzdC1ncm91cCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0IHsKICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgICAgIH0KCiAgICAgIC5hdHRyLWxlZnQgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIHdpZHRoOiAzMCU7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIC5hdHRyLXJpZ2h0IHsKICAgICAgICBtYXJnaW4tbGVmdDogMzAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZSB7CiAgICAgICAgZGlzcGxheTogdGFibGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdzsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLXJvdyAuc3ViLWxpc3QtdGFibGUtY2VsbDpsYXN0LWNoaWxkIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLWNlbGwgewogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBtYXgtd2lkdGg6IDIwMHB4OwogICAgICAgIHBhZGRpbmc6IDAgNHB4OwogICAgICB9CgogICAgICBwYXBlci1pdGVtIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0tYm9keVt0d28tbGluZV0gewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNHB4OwogICAgICB9CgogICAgICAuZXhwYW5kZWRJbmZvIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgfQoKICAgICAgLmNvbnRyb2xEZXBzIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMCA4cHg7CiAgICAgIH0KCiAgICAgIC5ub2RlLW5hbWUgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGZvbnQtc2l6ZTogMTRwdDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICAubm9kZS1pY29uIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgIH0KCiAgICAgIC5jb250cm9sTGluZSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmNvbnRyb2wtdG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmNsdWRlLWdyb3VwIHsKICAgICAgICBwYWRkaW5nLXRvcDogNHB4OwogICAgICB9CgogICAgICAudG9nZ2xlLWluY2x1ZGUgewogICAgICAgIG1hcmdpbjogNXB4IDZweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICBwYWRkaW5nOiA0cHggNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhOwogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAudG9nZ2xlLWluY2x1ZGU6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdvb2dsZS15ZWxsb3ctMTAwKTsKICAgICAgfQoKICAgICAgLm5vbi1jb250cm9sLWxpc3QtaXRlbSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHBhcGVyLWl0ZW0+CiAgICAgIDxwYXBlci1pdGVtLWJvZHkgdHdvLWxpbmU+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9leHBhbmRlZCl9fSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm9kZS1uYW1lIj4KICAgICAgICAgICAgPHRmLXdici1zdHJpbmcgdmFsdWU9IltbX25vZGUubmFtZV1dIiBkZWxpbWl0ZXItcGF0dGVybj0iLyI+CiAgICAgICAgICAgIDwvdGYtd2JyLXN0cmluZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc2Vjb25kYXJ5PgogICAgICAgICAgPHRmLW5vZGUtaWNvbgogICAgICAgICAgICBjbGFzcz0ibm9kZS1pY29uIgogICAgICAgICAgICBub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgIHJlbmRlci1pbmZvPSJbW19nZXRSZW5kZXJJbmZvKGdyYXBoTm9kZU5hbWUsIHJlbmRlckhpZXJhcmNoeSldXSIKICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgPjwvdGYtbm9kZS1pY29uPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlLm9wfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgICAgT3BlcmF0aW9uOgogICAgICAgICAgICAgIDxzcGFuPltbX25vZGUub3BdXTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlLm1ldGFncmFwaH19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VidGl0bGUiPgogICAgICAgICAgICAgIFN1YmdyYXBoOgogICAgICAgICAgICAgIDxzcGFuPltbX25vZGUuY2FyZGluYWxpdHldXTwvc3Bhbj4gbm9kZXMKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3BhcGVyLWl0ZW0tYm9keT4KICAgIDwvcGFwZXItaXRlbT4KICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0ie3tfZXhwYW5kZWR9fSI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfZXhwYW5kZWR9fSIgcmVzdGFtcD0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZXhwYW5kZWRJbmZvIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIGF0dHJpYnV0ZXMiPgogICAgICAgICAgICBBdHRyaWJ1dGVzICg8c3Bhbj5bW19hdHRyaWJ1dGVzLmxlbmd0aF1dPC9zcGFuPikKICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICBpZD0iYXR0cmlidXRlc0xpc3QiCiAgICAgICAgICAgICAgaXRlbXM9IltbX2F0dHJpYnV0ZXNdXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItbGVmdCI+W1tpdGVtLmtleV1dPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItcmlnaHQiPltbaXRlbS52YWx1ZV1dPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfZGV2aWNlfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBkZXZpY2UiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItbGVmdCI+RGV2aWNlPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1yaWdodCI+W1tfZGV2aWNlXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIHByZWRlY2Vzc29ycyI+CiAgICAgICAgICAgIElucHV0cyAoPHNwYW4+W1tfdG90YWxQcmVkZWNlc3NvcnNdXTwvc3Bhbj4pCiAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgaWQ9ImlucHV0c0xpc3QiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3ByZWRlY2Vzc29ycy5yZWd1bGFyXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgY2xhc3M9Im5vbi1jb250cm9sLWxpc3QtaXRlbSIKICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgZWRnZS1sYWJlbD0iW1tpdGVtLmVkZ2VMYWJlbF1dIgogICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InByZWRlY2Vzc29ycyIKICAgICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19wcmVkZWNlc3NvcnMuY29udHJvbC5sZW5ndGhdXSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbERlcHMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbExpbmUiPgogICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9vcGVuZWRDb250cm9sUHJlZCl9fSIKICAgICAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUNvbnRyb2xQcmVkIgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjb250cm9sLXRvZ2dsZS1idXR0b24iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19vcGVuZWRDb250cm9sUHJlZH19IiBuby1hbmltYXRpb24+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgIGlzPSJkb20taWYiCiAgICAgICAgICAgICAgICAgICAgaWY9Int7X29wZW5lZENvbnRyb2xQcmVkfX0iCiAgICAgICAgICAgICAgICAgICAgcmVzdGFtcD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19wcmVkZWNlc3NvcnMuY29udHJvbF1dIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZC1ub2RlPSJbW19ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9InByZWRlY2Vzc29ycyIKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIHN1Y2Nlc3NvcnMiPgogICAgICAgICAgICBPdXRwdXRzICg8c3Bhbj5bW190b3RhbFN1Y2Nlc3NvcnNdXTwvc3Bhbj4pCiAgICAgICAgICAgIDxpcm9uLWxpc3QKICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgaWQ9Im91dHB1dHNMaXN0IgogICAgICAgICAgICAgIGl0ZW1zPSJbW19zdWNjZXNzb3JzLnJlZ3VsYXJdXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICBlZGdlLWxhYmVsPSJbW2l0ZW0uZWRnZUxhYmVsXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0ic3VjY2Vzc29yIgogICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N1Y2Nlc3NvcnMuY29udHJvbC5sZW5ndGhdXSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbERlcHMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbExpbmUiPgogICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9vcGVuZWRDb250cm9sU3VjYyl9fSIKICAgICAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUNvbnRyb2xTdWNjIgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjb250cm9sLXRvZ2dsZS1idXR0b24iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19vcGVuZWRDb250cm9sU3VjY319IiBuby1hbmltYXRpb24+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgIGlzPSJkb20taWYiCiAgICAgICAgICAgICAgICAgICAgaWY9Int7X29wZW5lZENvbnRyb2xTdWNjfX0iCiAgICAgICAgICAgICAgICAgICAgcmVzdGFtcD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxpcm9uLWxpc3QgY2xhc3M9InN1Yi1saXN0IiBpdGVtcz0iW1tfc3VjY2Vzc29ycy5jb250cm9sXV0iPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0ic3VjY2Vzc29ycyIKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19oYXNEaXNwbGF5YWJsZU5vZGVTdGF0c319Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgbm9kZS1zdGF0cyI+CiAgICAgICAgICAgICAgTm9kZSBTdGF0cwogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlIj4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZVN0YXRzLnRvdGFsQnl0ZXN9fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+TWVtb3J5PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICBbW19ub2RlU3RhdHNGb3JtYXR0ZWRCeXRlc11dCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfZ2V0VG90YWxNaWNyb3MoX25vZGVTdGF0cyl9fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+Q29tcHV0ZSBUaW1lPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICBbW19ub2RlU3RhdHNGb3JtYXR0ZWRDb21wdXRlVGltZV1dCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfbm9kZVN0YXRzLm91dHB1dFNpemV9fSI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+VGVuc29yIE91dHB1dCBTaXplczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgICAgICAgICAgICBpdGVtcz0ie3tfbm9kZVN0YXRzRm9ybWF0dGVkT3V0cHV0U2l6ZXN9fSIKICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgW1tpdGVtXV0gPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2Z1bmN0aW9uVXNhZ2VzLmxlbmd0aF1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgcHJlZGVjZXNzb3JzIj4KICAgICAgICAgICAgICBVc2FnZXMgb2YgdGhlIEZ1bmN0aW9uICg8c3Bhbj5bW19mdW5jdGlvblVzYWdlcy5sZW5ndGhdXTwvc3Bhbj4pCiAgICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgICAgaWQ9ImZ1bmN0aW9uVXNhZ2VzTGlzdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19mdW5jdGlvblVzYWdlc11dIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5vbi1jb250cm9sLWxpc3QtaXRlbSIKICAgICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbV1dIgogICAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJmdW5jdGlvblVzYWdlcyIKICAgICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzTGlicmFyeUZ1bmN0aW9uKF9ub2RlKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLWluY2x1ZGUtZ3JvdXAiPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIHJhaXNlZAogICAgICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1pbmNsdWRlIgogICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVJbmNsdWRlIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxzcGFuPltbX2F1eEJ1dHRvblRleHRdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfaXNJblNlcmllcyhfbm9kZSl9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1pbmNsdWRlLWdyb3VwIj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtaW5jbHVkZSIKICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlR3JvdXAiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHNwYW4+W1tfZ3JvdXBCdXR0b25UZXh0XV08L3NwYW4+CiAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvaXJvbi1jb2xsYXBzZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlxdC5wcm90b3R5cGUsImdyYXBoTm9kZU5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRHF0KV0sWXF0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWXF0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlxdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXROb2RlKGdyYXBoTm9kZU5hbWUsIGdyYXBoSGllcmFyY2h5KSIsb2JzZXJ2ZXI6Il9yZXNldFN0YXRlIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxZcXQucHJvdG90eXBlLCJfbm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldE5vZGVTdGF0cyhncmFwaE5vZGVOYW1lLCBncmFwaEhpZXJhcmNoeSkiLG9ic2VydmVyOiJfcmVzZXRTdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWXF0LnByb3RvdHlwZSwiX25vZGVTdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX25vZGVJbmNsdWRlU3RhdGVDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxZcXQucHJvdG90eXBlLCJub2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlxdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlxdC5wcm90b3R5cGUsIl9vcGVuZWRDb250cm9sUHJlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlxdC5wcm90b3R5cGUsIl9vcGVuZWRDb250cm9sU3VjYyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxZcXQucHJvdG90eXBlLCJfYXV4QnV0dG9uVGV4dCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxZcXQucHJvdG90eXBlLCJfZ3JvdXBCdXR0b25UZXh0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sWXF0LnByb3RvdHlwZSwiX3RlbXBsYXRlSW5kZXgiLHZvaWQgMCksdChbcygiX25vZGVTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZcXQucHJvdG90eXBlLCJfaGFzRGlzcGxheWFibGVOb2RlU3RhdHMiLG51bGwpLHQoW3MoIl9ub2RlU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZcXQucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMiLG51bGwpLHQoW3MoIl9ub2RlU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZcXQucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWUiLG51bGwpLHQoW3MoIl9ub2RlU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9ub2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplcyIsbnVsbCksdChbcygiX25vZGUiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9hdHRyaWJ1dGVzIixudWxsKSx0KFtzKCJfbm9kZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9kZXZpY2UiLG51bGwpLHQoW3MoIl9ub2RlIiwiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZcXQucHJvdG90eXBlLCJfc3VjY2Vzc29ycyIsbnVsbCksdChbcygiX25vZGUiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9wcmVkZWNlc3NvcnMiLG51bGwpLHQoW3MoIl9ub2RlIiwiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9mdW5jdGlvblVzYWdlcyIsbnVsbCksdChbcygiX25vZGUiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl9zdWJub2RlcyIsbnVsbCksdChbcygiX3ByZWRlY2Vzc29ycyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlxdC5wcm90b3R5cGUsIl90b3RhbFByZWRlY2Vzc29ycyIsbnVsbCksdChbcygiX3N1Y2Nlc3NvcnMiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZcXQucHJvdG90eXBlLCJfdG90YWxTdWNjZXNzb3JzIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sWXF0LnByb3RvdHlwZSwiX2dyYXBoSGllcmFyY2h5Q2hhbmdlZCIsbnVsbCksWXF0PXQoW2koInRmLW5vZGUtaW5mbyIpXSxZcXQpO2xldCBYcXQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe3JlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtbGlzdC1pdGVtLWNsaWNrIix0aGlzLl9ub2RlTGlzdEl0ZW1DbGlja2VkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1saXN0LWl0ZW0tbW91c2VvdmVyIix0aGlzLl9ub2RlTGlzdEl0ZW1Nb3VzZW92ZXIuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWxpc3QtaXRlbS1tb3VzZW91dCIsdGhpcy5fbm9kZUxpc3RJdGVtTW91c2VvdXQuYmluZCh0aGlzKSl9X25vZGVMaXN0SXRlbUNsaWNrZWQodCl7dGhpcy5zZWxlY3RlZE5vZGU9dC5kZXRhaWwubm9kZU5hbWV9X25vZGVMaXN0SXRlbU1vdXNlb3Zlcih0KXt0aGlzLmhpZ2hsaWdodGVkTm9kZT10LmRldGFpbC5ub2RlTmFtZX1fbm9kZUxpc3RJdGVtTW91c2VvdXQoKXt0aGlzLmhpZ2hsaWdodGVkTm9kZT1udWxsfV9oZWFsdGhQaWxsc0F2YWlsYWJsZSh0LGUpe3JldHVybiB0JiZlJiZPYmplY3Qua2V5cyhlKS5sZW5ndGg+MH1fZXF1YWxzKHQsZSl7cmV0dXJuIHQ9PT1lfX07WHF0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXgtaGVpZ2h0OiA2NTBweDsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgaDIgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tzZWxlY3RlZE5vZGV9fSI+CiAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIj4KICAgICAgICA8dGYtbm9kZS1pbmZvCiAgICAgICAgICBncmFwaC1oaWVyYXJjaHk9IltbZ3JhcGhIaWVyYXJjaHldXSIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgICBmbGF0LWdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBncmFwaC1ub2RlLW5hbWU9Iltbc2VsZWN0ZWROb2RlXV0iCiAgICAgICAgICBub2RlLWluY2x1ZGU9Iltbc2VsZWN0ZWROb2RlSW5jbHVkZV1dIgogICAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0ie3toaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICA+CiAgICAgICAgPC90Zi1ub2RlLWluZm8+CiAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ29wX2NvbXBhdGliaWxpdHknKV1dIj4KICAgICAgPHRmLWdyYXBoLW9wLWNvbXBhdC1jYXJkCiAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgbm9kZS10aXRsZT0iW1tjb21wYXROb2RlVGl0bGVdXSIKICAgICAgPgogICAgICA8L3RmLWdyYXBoLW9wLWNvbXBhdC1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZQogICAgICBpcz0iZG9tLWlmIgogICAgICBpZj0iW1tfaGVhbHRoUGlsbHNBdmFpbGFibGUoZGVidWdnZXJEYXRhRW5hYmxlZCwgbm9kZU5hbWVzVG9IZWFsdGhQaWxscyldXSIKICAgID4KICAgICAgPHRmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZAogICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbZGVidWdnZXJOdW1lcmljQWxlcnRzXV0iCiAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0ie3toaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICBhcmUtaGVhbHRoLXBpbGxzLWxvYWRpbmc9IltbYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgYWxsLXN0ZXBzLW1vZGUtZW5hYmxlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iCiAgICAgID4KICAgICAgPC90Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQ+CiAgICA8L3RlbXBsYXRlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWHF0LnByb3RvdHlwZSwidGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRHF0KV0sWHF0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIscUd0KV0sWHF0LnByb3RvdHlwZSwiZ3JhcGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIseVd0KV0sWHF0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhxdC5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFhxdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWHF0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYcXQucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFhxdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWHF0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYcXQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGVJbmNsdWRlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWHF0LnByb3RvdHlwZSwiZGVidWdnZXJEYXRhRW5hYmxlZCIsdm9pZCAwKSxYcXQ9dChbaSgidGYtZ3JhcGgtaW5mbyIpXSxYcXQpO2NsYXNzICRxdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyl7dGhpcy5zdmc9dCx0aGlzLmxhYmVsUGFkZGluZz1vLHRoaXMuem9vbUc9ZSx0aGlzLm1haW5ab29tPW4sdGhpcy5tYXhXYW5kSD1yO2xldCBhPVN1KGkuc2hhZG93Um9vdCkscz1hLnNlbGVjdCgic3ZnIiksbD1zLnNlbGVjdCgicmVjdCIpO3RoaXMudmlld3BvaW50Q29vcmQ9e3g6MCx5OjB9O2xldCBjPXZoKCkuc3ViamVjdChPYmplY3QpLm9uKCJkcmFnIiwodD0+e3RoaXMudmlld3BvaW50Q29vcmQueD11dS54LHRoaXMudmlld3BvaW50Q29vcmQueT11dS55LHRoaXMudXBkYXRlVmlld3BvaW50KCl9KSk7bC5kYXR1bSh0aGlzLnZpZXdwb2ludENvb3JkKS5jYWxsKGMpLHMub24oImNsaWNrIiwoKCk9PntpZih1dS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtsZXQgdD1OdW1iZXIobC5hdHRyKCJ3aWR0aCIpKSxlPU51bWJlcihsLmF0dHIoImhlaWdodCIpKSxuPWFoKHMubm9kZSgpKTt0aGlzLnZpZXdwb2ludENvb3JkLng9blswXS10LzIsdGhpcy52aWV3cG9pbnRDb29yZC55PW5bMV0tZS8yLHRoaXMudXBkYXRlVmlld3BvaW50KCl9KSksdGhpcy52aWV3cG9pbnQ9bC5ub2RlKCksdGhpcy5taW5pbWFwU3ZnPXMubm9kZSgpLHRoaXMubWluaW1hcD1pLHRoaXMuY2FudmFzPWEuc2VsZWN0KCJjYW52YXMuZmlyc3QiKS5ub2RlKCksdGhpcy5jYW52YXNCdWZmZXI9YS5zZWxlY3QoImNhbnZhcy5zZWNvbmQiKS5ub2RlKCksdGhpcy5kb3dubG9hZENhbnZhcz1hLnNlbGVjdCgiY2FudmFzLmRvd25sb2FkIikubm9kZSgpLFN1KHRoaXMuZG93bmxvYWRDYW52YXMpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLHRoaXMudXBkYXRlKCl9dXBkYXRlVmlld3BvaW50KCl7U3UodGhpcy52aWV3cG9pbnQpLmF0dHIoIngiLHRoaXMudmlld3BvaW50Q29vcmQueCkuYXR0cigieSIsdGhpcy52aWV3cG9pbnRDb29yZC55KTtsZXQgdD0tdGhpcy52aWV3cG9pbnRDb29yZC54KnRoaXMuc2NhbGVNYWluL3RoaXMuc2NhbGVNaW5pbWFwLGU9LXRoaXMudmlld3BvaW50Q29vcmQueSp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcDtTdSh0aGlzLnN2ZykuY2FsbCh0aGlzLm1haW5ab29tLnRyYW5zZm9ybSx2Ti50cmFuc2xhdGUodCxlKS5zY2FsZSh0aGlzLnNjYWxlTWFpbikpfWdldEltYWdlQmxvYigpe3JldHVybiBuZXcgUHJvbWlzZSgodD0+e3RoaXMuZG93bmxvYWRDYW52YXMudG9CbG9iKChlPT57dChlKX0pLCJpbWFnZS9wbmciKX0pKX11cGRhdGUoKXtsZXQgdD1udWxsO3RyeXtpZih0PXRoaXMuem9vbUcuZ2V0QkJveCgpLDA9PT10LndpZHRoKXJldHVybn1jYXRjaCh0KXtyZXR1cm59bGV0IGU9U3UodGhpcy5zdmcpLG49IiI7Y29uc3QgaT10aGlzLnN2ZyxyPShpLmdldFJvb3ROb2RlP2kuZ2V0Um9vdE5vZGUoKTp0aGlzLnN2Zy5wYXJlbnROb2RlKS5zdHlsZVNoZWV0cztmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl0cnl7bGV0IGU9clt0XS5jc3NSdWxlc3x8clt0XS5ydWxlcztpZihudWxsPT1lKWNvbnRpbnVlO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4rPWVbdF0uY3NzVGV4dC5yZXBsYWNlKC8gP3RmLVtcdy1dKyA/L2csIiIpKyJcbiJ9Y2F0Y2godCl7aWYoIlNlY3VyaXR5RXJyb3IiIT09dC5uYW1lKXRocm93IHR9bGV0IG89ZS5hcHBlbmQoInN0eWxlIik7by50ZXh0KG4pO2xldCBhPVN1KHRoaXMuem9vbUcpLHM9YS5hdHRyKCJ0cmFuc2Zvcm0iKTthLmF0dHIoInRyYW5zZm9ybSIsbnVsbCksdC5oZWlnaHQrPXQueSx0LndpZHRoKz10LngsdC5oZWlnaHQrPTIqdGhpcy5sYWJlbFBhZGRpbmcsdC53aWR0aCs9Mip0aGlzLmxhYmVsUGFkZGluZyxlLmF0dHIoIndpZHRoIix0LndpZHRoKS5hdHRyKCJoZWlnaHQiLHQuaGVpZ2h0KSx0aGlzLnNjYWxlTWluaW1hcD10aGlzLm1heFdhbmRIL01hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpLHRoaXMubWluaW1hcFNpemU9e3dpZHRoOnQud2lkdGgqdGhpcy5zY2FsZU1pbmltYXAsaGVpZ2h0OnQuaGVpZ2h0KnRoaXMuc2NhbGVNaW5pbWFwfSxTdSh0aGlzLm1pbmltYXBTdmcpLmF0dHIodGhpcy5taW5pbWFwU2l6ZSksU3UodGhpcy5jYW52YXNCdWZmZXIpLmF0dHIodGhpcy5taW5pbWFwU2l6ZSk7Y29uc3QgbD1TdSh0aGlzLmRvd25sb2FkQ2FudmFzKTtsLnN0eWxlKCJ3aWR0aCIsdC53aWR0aCksbC5zdHlsZSgiaGVpZ2h0Iix0LmhlaWdodCksbC5hdHRyKCJ3aWR0aCIsMyp0LndpZHRoKSxsLmF0dHIoImhlaWdodCIsMyp0LmhlaWdodCksbnVsbCE9dGhpcy50cmFuc2xhdGUmJm51bGwhPXRoaXMuem9vbSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy56b29tKCkpKTtsZXQgYz0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKHRoaXMuc3ZnKTtvLnJlbW92ZSgpLGUuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCksYS5hdHRyKCJ0cmFuc2Zvcm0iLHMpO2xldCB1PW5ldyBJbWFnZTt1Lm9ubG9hZD0oKT0+e2xldCB0PXRoaXMuY2FudmFzQnVmZmVyLmdldENvbnRleHQoIjJkIik7dC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzQnVmZmVyLndpZHRoLHRoaXMuY2FudmFzQnVmZmVyLmhlaWdodCksdC5kcmF3SW1hZ2UodSwwLDAsdGhpcy5taW5pbWFwU2l6ZS53aWR0aCx0aGlzLm1pbmltYXBTaXplLmhlaWdodCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e1N1KHRoaXMuY2FudmFzQnVmZmVyKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksU3UodGhpcy5jYW52YXMpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLFt0aGlzLmNhbnZhcyx0aGlzLmNhbnZhc0J1ZmZlcl09W3RoaXMuY2FudmFzQnVmZmVyLHRoaXMuY2FudmFzXX0pKTtsZXQgZT10aGlzLmRvd25sb2FkQ2FudmFzLmdldENvbnRleHQoIjJkIik7ZS5jbGVhclJlY3QoMCwwLHRoaXMuZG93bmxvYWRDYW52YXMud2lkdGgsdGhpcy5kb3dubG9hZENhbnZhcy5oZWlnaHQpLGUuZHJhd0ltYWdlKHUsMCwwLHRoaXMuZG93bmxvYWRDYW52YXMud2lkdGgsdGhpcy5kb3dubG9hZENhbnZhcy5oZWlnaHQpfSx1Lm9uZXJyb3I9KCk9PntsZXQgdD1uZXcgQmxvYihbY10se3R5cGU6ImltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCJ9KTt1LnNyYz1VUkwuY3JlYXRlT2JqZWN0VVJMKHQpfSx1LnNyYz0iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQoYyl9em9vbSh0KXtpZihudWxsPT10aGlzLnNjYWxlTWluaW1hcClyZXR1cm47dCYmKHRoaXMudHJhbnNsYXRlPVt0LngsdC55XSx0aGlzLnNjYWxlTWFpbj10LmspO2xldCBlPXRoaXMuc3ZnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49U3UodGhpcy52aWV3cG9pbnQpO3RoaXMudmlld3BvaW50Q29vcmQueD0tdGhpcy50cmFuc2xhdGVbMF0qdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW4sdGhpcy52aWV3cG9pbnRDb29yZC55PS10aGlzLnRyYW5zbGF0ZVsxXSp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbjtsZXQgaT1lLndpZHRoKnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluLHI9ZS5oZWlnaHQqdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47bi5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSkuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIscik7bGV0IG89dGhpcy5taW5pbWFwU2l6ZS53aWR0aCxhPXRoaXMubWluaW1hcFNpemUuaGVpZ2h0LHM9dGhpcy52aWV3cG9pbnRDb29yZC54LGw9dGhpcy52aWV3cG9pbnRDb29yZC55OyhNYXRoLm1pbihNYXRoLm1heCgwLHMraSksbyktTWF0aC5taW4oTWF0aC5tYXgoMCxzKSxvKSkqKE1hdGgubWluKE1hdGgubWF4KDAsbCtyKSxhKS1NYXRoLm1pbihNYXRoLm1heCgwLGwpLGEpKS8obyphKTwuOD90aGlzLm1pbmltYXAuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfX1sZXQgS3F0PWNsYXNzIGV4dGVuZHMgeWV7aW5pdCh0LGUsbixpLHIpe3JldHVybiBuZXcgJHF0KHQsZSxuLHRoaXMsaSxyKX19O0txdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBsaW5lYXI7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KC5oaWRkZW4pIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICBjYW52YXMgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgICAgIH0KCiAgICAgIHJlY3QgewogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICAgIHN0cm9rZTogIzExMTExMTsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiB1cmwoI21pbmltYXBEcm9wU2hhZG93KTsKICAgICAgICBjdXJzb3I6IG1vdmU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHN2Zz4KICAgICAgPGRlZnM+CiAgICAgICAgPGZpbHRlcgogICAgICAgICAgaWQ9Im1pbmltYXBEcm9wU2hhZG93IgogICAgICAgICAgeD0iLTIwJSIKICAgICAgICAgIHk9Ii0yMCUiCiAgICAgICAgICB3aWR0aD0iMTUwJSIKICAgICAgICAgIGhlaWdodD0iMTUwJSIKICAgICAgICA+CiAgICAgICAgICA8ZmVPZmZzZXQgcmVzdWx0PSJvZmZPdXQiIGluPSJTb3VyY2VHcmFwaGljIiBkeD0iMSIgZHk9IjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICA8ZmVDb2xvck1hdHJpeAogICAgICAgICAgICByZXN1bHQ9Im1hdHJpeE91dCIKICAgICAgICAgICAgaW49Im9mZk91dCIKICAgICAgICAgICAgdHlwZT0ibWF0cml4IgogICAgICAgICAgICB2YWx1ZXM9IjAuMSAwIDAgMCAwIDAgMC4xIDAgMCAwIDAgMCAwLjEgMCAwIDAgMCAwIDAuNSAwIgogICAgICAgICAgPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICAgICByZXN1bHQ9ImJsdXJPdXQiCiAgICAgICAgICAgIGluPSJtYXRyaXhPdXQiCiAgICAgICAgICAgIHN0ZERldmlhdGlvbj0iMiIKICAgICAgICAgID48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgPGZlQmxlbmQgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iYmx1ck91dCIgbW9kZT0ibm9ybWFsIj48L2ZlQmxlbmQ+CiAgICAgICAgPC9maWx0ZXI+CiAgICAgIDwvZGVmcz4KICAgICAgPHJlY3Q+PC9yZWN0PgogICAgPC9zdmc+CiAgICA8Y2FudmFzIGNsYXNzPSJmaXJzdCI+PC9jYW52YXM+CiAgICA8IS0tIEFkZGl0aW9uYWwgY2FudmFzIHRvIHVzZSBhcyBidWZmZXIgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3ZWVuIHVwZGF0ZXMgLS0+CiAgICA8Y2FudmFzIGNsYXNzPSJzZWNvbmQiPjwvY2FudmFzPgogICAgPGNhbnZhcyBjbGFzcz0iZG93bmxvYWQiPjwvY2FudmFzPgogIGAsS3F0PXQoW2koInRmLWdyYXBoLW1pbmltYXAiKV0sS3F0KTtjb25zdCBacXQ9X2VgCiAgPHN0eWxlPgogICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICBmaWx0ZXI6IGludmVydCgxKTsKICAgIH0KCiAgICA6aG9zdCB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICAjc3ZnIHsKICAgICAgZmxleDogMTsKICAgICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICAjaGlkZGVuIHsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB0b3A6IDBweDsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIHRleHQgewogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gTm9kZSBhbmQgYW5ub3RhdGlvbi1ub2RlIGZvciBNZXRhbm9kZSAtLS0gKi8KCiAgICAubWV0YSA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm1ldGEgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogaHNsKDAsIDAlLCA3MCUpOwogICAgfQogICAgLm5vZGUubWV0YS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm5vZGUubWV0YS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxOwogICAgfQogICAgLm1ldGEuc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5tZXRhLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMzsKICAgIH0KICAgIC5hbm5vdGF0aW9uLm1ldGEuc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5hbm5vdGF0aW9uLm1ldGEuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CiAgICAubm9kZS5tZXRhLnNlbGVjdGVkLmV4cGFuZGVkLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubm9kZS5tZXRhLnNlbGVjdGVkLmV4cGFuZGVkLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiA0OwogICAgfQoKICAgIC5mYWRlZCwKICAgIC5mYWRlZCByZWN0LAogICAgLmZhZGVkIGVsbGlwc2UsCiAgICAuZmFkZWQgcGF0aCwKICAgIC5mYWRlZCB1c2UsCiAgICAjcmVjdEhhdGNoIGxpbmUsCiAgICAjZWxsaXBzZUhhdGNoIGxpbmUgewogICAgICBjb2xvcjogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLmZhZGVkIHBhdGggewogICAgICBzdHJva2Utd2lkdGg6IDFweCAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCByZWN0IHsKICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLmZhZGVkIGVsbGlwc2UsCiAgICAuZmFkZWQgdXNlIHsKICAgICAgZmlsbDogdXJsKCNlbGxpcHNlSGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLmZhZGVkIHRleHQgewogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIC8qIFJ1bGVzIHVzZWQgZm9yIGlucHV0LXRyYWNpbmcuICovCiAgICAuaW5wdXQtaGlnaGxpZ2h0ID4gKiA+IHJlY3QsCiAgICAuaW5wdXQtaGlnaGxpZ2h0ID4gKiA+IGVsbGlwc2UsCiAgICAuaW5wdXQtaGlnaGxpZ2h0ID4gKiA+IHVzZSB7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6ICNmZjk4MDAgIWltcG9ydGFudDsKICAgIH0KCiAgICAvKiAgLSBGYWRlZCBub24taW5wdXQgc3R5bGluZyAqLwogICAgLm5vbi1pbnB1dCA+ICogPiByZWN0LAoubm9uLWlucHV0ID4gKiA+IGVsbGlwc2UsCi5ub24taW5wdXQgPiAqID4gdXNlLAovKiBGb3IgQ29uc3Qgbm9kZXMuICovCi5ub24taW5wdXQgPiAqID4gLmNvbnN0YW50Om5vdChbY2xhc3MqPSJpbnB1dC1oaWdobGlnaHQiXSkgPgogIC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlLAovKiBGb3Igc3R5bGluZyBvZiBhbm5vdGF0aW9uIG5vZGVzIG9mIG5vbi1pbnB1dCBub2Rlcy4gKi8KLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIHN0cm9rZS13aWR0aDogaW5oZXJpdDsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogaW5oZXJpdDsKICAgIH0KCiAgICAubm9uLWlucHV0IHBhdGggewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgLm5vbi1pbnB1dCA+IC5ub2Rlc2hhcGUgPiByZWN0LAoubm9uLWlucHV0ID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QsCi8qIEZvciBzdHlsaW5nIG9mIGFubm90YXRpb24gbm9kZXMgb2Ygbm9uLWlucHV0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gZyA+IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBmaWxsOiB1cmwoI3JlY3RIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAubm9uLWlucHV0IGVsbGlwc2UsCiAgICAubm9uLWlucHV0IHVzZSB7CiAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5ub24taW5wdXQgPiB0ZXh0IHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAubm9uLWlucHV0IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC5ub24taW5wdXQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLnJlZmxpbmUgewogICAgICBtYXJrZXItc3RhcnQ6IHVybCgjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAvKiBJbnB1dCBlZGdlcy4gKi8KICAgIC5pbnB1dC1lZGdlLWhpZ2hsaWdodCA+IHRleHQgewogICAgICBmaWxsOiBibGFjayAhaW1wb3J0YW50OwogICAgfQogICAgLmlucHV0LWhpZ2hsaWdodCA+IC5pbi1hbm5vdGF0aW9ucyA+IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSwKICAgIC5pbnB1dC1oaWdobGlnaHQtc2VsZWN0ZWQKICAgICAgPiAuaW4tYW5ub3RhdGlvbnMKICAgICAgPiAuYW5ub3RhdGlvbgogICAgICA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBzdHJva2U6ICM5OTkgIWltcG9ydGFudDsKICAgIH0KCiAgICAvKiBOb24taW5wdXQgZWRnZXMuICovCiAgICAubm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0LAoubm9uLWlucHV0ID4gZyA+IC5hbm5vdGF0aW9uID4gcGF0aCwKLyogQW5ub3RhdGlvbiBzdHlsZXMgKGxhYmVsIGFuZCBlZGdlcyByZXNwZWN0aXZlbHkpLiAqLwoubm9uLWlucHV0ID4gZyA+Ci5hbm5vdGF0aW9uOm5vdCguaW5wdXQtaGlnaGxpZ2h0KTpub3QoLmlucHV0LWhpZ2hsaWdodC1zZWxlY3RlZCkgPgouYW5ub3RhdGlvbi1sYWJlbAovKi5hbm5vdGF0aW9uLWVkZ2UqLyB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAvKiAtLS0gT3AgTm9kZSAtLS0gKi8KCiAgICAub3AgPiAubm9kZXNoYXBlID4gLm5vZGVjb2xvcnRhcmdldCwKICAgIC5vcCA+IC5hbm5vdGF0aW9uLW5vZGUgPiAubm9kZWNvbG9ydGFyZ2V0IHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjZmZmOwogICAgICBzdHJva2U6ICNjY2M7CiAgICB9CgogICAgLm9wLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAub3Auc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLm9wLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAub3AuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAvKiAtLS0gU2VyaWVzIE5vZGUgLS0tICovCgogICAgLyogQnkgZGVmYXVsdCwgZG9uJ3Qgc2hvdyB0aGUgc2VyaWVzIGJhY2tncm91bmQgPHJlY3Q+LiAqLwogICAgLnNlcmllcyA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgZmlsbDogaHNsKDAsIDAlLCA3MCUpOwogICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDUsIDU7CiAgICAgIHN0cm9rZS1vcGFjaXR5OiAwOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLyogT25jZSBleHBhbmRlZCwgc2hvdyB0aGUgc2VyaWVzIGJhY2tncm91bmQgPHJlY3Q+IGFuZCBoaWRlIHRoZSA8dXNlPi4gKi8KICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIGZpbGwtb3BhY2l0eTogMC4xNTsKICAgICAgc3Ryb2tlOiBoc2woMCwgMCUsIDcwJSk7CiAgICAgIHN0cm9rZS1vcGFjaXR5OiAxOwogICAgfQogICAgLnNlcmllcy5leHBhbmRlZCA+IC5ub2Rlc2hhcGUgPiB1c2UgewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgLyoqCiAqIFRPRE86IFNpbXBsaWZ5IHRoaXMgYnkgYXBwbHlpbmcgYSBzdGFibGUgY2xhc3MgbmFtZSB0byBhbGwgPGc+CiAqIGVsZW1lbnRzIHRoYXQgY3VycmVudGx5IGhhdmUgZWl0aGVyIHRoZSBub2Rlc2hhcGUgb3IgYW5ub3RhdGlvbi1ub2RlIGNsYXNzZXMuCiAqLwogICAgLnNlcmllcyA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAuc2VyaWVzID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZTogI2NjYzsKICAgIH0KICAgIC5zZXJpZXMuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gdXNlLAogICAgLnNlcmllcy5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CiAgICAuc2VyaWVzLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHVzZSwKICAgIC5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAuc2VyaWVzLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC5hbm5vdGF0aW9uLnNlcmllcy5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC8qIC0tLSBCcmlkZ2UgTm9kZSAtLS0gKi8KICAgIC5icmlkZ2UgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogI2YwZjsKICAgICAgb3BhY2l0eTogMC4yOwogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBTdHJ1Y3R1cmFsIEVsZW1lbnRzIC0tLSAqLwogICAgLmVkZ2UgPiBwYXRoLmVkZ2VsaW5lLnN0cnVjdHVyYWwgewogICAgICBzdHJva2U6ICNmMGY7CiAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiBSZWZlcmVuY2UgRWRnZSAqLwogICAgLmVkZ2UgPiBwYXRoLmVkZ2VsaW5lLnJlZmVyZW5jZWVkZ2UgewogICAgICBzdHJva2U6ICNmZmI3NGQ7CiAgICAgIG9wYWNpdHk6IDE7CiAgICB9CgogICAgLyogLS0tIFNlcmllcyBOb2RlcyAtLS0gKi8KCiAgICAvKiBIaWRlIHRoZSByZWN0IGZvciBhIHNlcmllcycgYW5ub3RhdGlvbi4gKi8KICAgIC5zZXJpZXMgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIE5vZGUgbGFiZWwgLS0tICovCgogICAgLm5vZGUgewogICAgICAvKiBQcm92aWRlIGEgaGludCB0byBicm93c2VycyB0byBhdm9pZCB1c2luZyB0aGVpciBzdGF0aWMgcmFzdGVyaXphdGlvbgogICAgICBhdCBpbml0aWFsIHNjYWxlLCB3aGljaCBsb29rcyB2ZXJ5IHBpeGVsYXRlZCBvbiBDaHJvbWl1bSB3aGVuIHpvb21lZCBpbi4KICAgICAgTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZG8gKm5vdCogdXNlICd3aWxsLWNoYW5nZTogdHJhbnNmb3JtJyBhbmQKICAgICAgJ3RyYW5zbGF0ZVooMCkgaGVyZSwgd2hpY2ggaW50cm9kdWNlIGJsdXJyaW5lc3Mgb24gRmlyZWZveC4KICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy80NzQ0ICovCiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigxcHgpOwogICAgfQoKICAgIC5ub2RlID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6ICM0NDQ7CiAgICB9CgogICAgLm1ldGEuZXhwYW5kZWQgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgfQoKICAgIC5zZXJpZXMgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogOHB4OwogICAgfQoKICAgIC5vcCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA2cHg7CiAgICB9CgogICAgLmJyaWRnZSA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAubm9kZS5tZXRhLmV4cGFuZGVkID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBjdXJzb3I6IG5vcm1hbDsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5tZXRhLmhpZ2hsaWdodGVkID4gdGV4dC5hbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgZmlsbDogIzUwYTNmNzsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gdGV4dC5hbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgZmlsbDogIzQyODVmNDsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbiAtLS0gKi8KCiAgICAvKiBvbmx5IGFwcGxpZWQgZm9yIGFubm90YXRpb25zIHRoYXQgYXJlIG5vdCBzdW1tYXJ5IG9yIGNvbnN0YW50LgooLnN1bW1hcnksIC5jb25zdGFudCBnZXRzIG92ZXJyaWRkZW4gYmVsb3cpICovCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiAqIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAwLjU7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEsIDE7CiAgICB9CgogICAgLmFubm90YXRpb24uc3VtbWFyeSA+IC5hbm5vdGF0aW9uLW5vZGUgPiAqLAogICAgLmFubm90YXRpb24uY29uc3RhbnQgPiAuYW5ub3RhdGlvbi1ub2RlID4gKiB7CiAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogbm9uZTsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBmaWxsOiBub25lOwogICAgICBzdHJva2U6ICNhYWE7CiAgICAgIHN0cm9rZS13aWR0aDogMC41OwogICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkKTsKICAgIH0KCiAgICAuZmFkZWQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgbWFya2VyLWVuZDogdXJsKCNhbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLnJlZmxpbmUgewogICAgICBtYXJrZXItc3RhcnQ6IHVybCgjcmVmLWFubm90YXRpb24tYXJyb3doZWFkKTsKICAgIH0KCiAgICAuZmFkZWQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLnJlZmxpbmUgewogICAgICBtYXJrZXItc3RhcnQ6IHVybCgjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSB7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEsIDE7CiAgICB9CgogICAgI2Fubm90YXRpb24tYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2FhYTsKICAgIH0KCiAgICAjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQgewogICAgICBmaWxsOiAjZTBkNGIzOwogICAgfQoKICAgICNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQgewogICAgICBmaWxsOiAjYWFhOwogICAgfQoKICAgICNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQgewogICAgICBmaWxsOiAjZTBkNGIzOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbGFiZWwgewogICAgICBmb250LXNpemU6IDVweDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1sYWJlbC5hbm5vdGF0aW9uLWVsbGlwc2lzIHsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgfQoKICAgIC8qIEhpZGUgYW5ub3RhdGlvbnMgb24gZXhwYW5kZWQgbWV0YSBub2RlcyBzaW5jZSB0aGV5J3JlIHJlZHVuZGFudC4gKi8KICAgIC5leHBhbmRlZCA+IC5pbi1hbm5vdGF0aW9ucywKICAgIC5leHBhbmRlZCA+IC5vdXQtYW5ub3RhdGlvbnMgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBBbm5vdGF0aW9uOiBDb25zdGFudCAtLS0gKi8KCiAgICAuY29uc3RhbnQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogIzg0ODQ4NDsKICAgIH0KCiAgICAuY29uc3RhbnQuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6IHJlZDsKICAgIH0KCiAgICAuY29uc3RhbnQuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIHN0cm9rZS13aWR0aDogMS41OwogICAgfQoKICAgIC8qIC0tLSBBbm5vdGF0aW9uOiBTdW1tYXJ5IC0tLSAqLwoKICAgIC5zdW1tYXJ5ID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6ICNkYjQ0Mzc7CiAgICAgIHN0cm9rZTogI2RiNDQzNzsKICAgIH0KCiAgICAuc3VtbWFyeS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgZmlsbDogI2E1MjcxNDsKICAgICAgc3Ryb2tlOiAjYTUyNzE0OwogICAgfQoKICAgIC5zdW1tYXJ5LmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgIH0KCiAgICAvKiAtLS0gRWRnZSAtLS0gKi8KCiAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUgewogICAgICBmaWxsOiBub25lOwogICAgICBzdHJva2U6ICNiYmI7CiAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAwLjc1OwogICAgfQoKICAgIC5lZGdlIC5zZWxlY3RhYmxlZWRnZSB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KCiAgICAuc2VsZWN0ZWRlZGdlID4gcGF0aC5lZGdlbGluZSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgc3Ryb2tlOiAjZjAwOwogICAgfQoKICAgIC5lZGdlLnNlbGVjdGVkZWRnZSB0ZXh0IHsKICAgICAgZmlsbDogIzAwMDsKICAgIH0KCiAgICAvKiBMYWJlbHMgc2hvd2luZyB0ZW5zb3Igc2hhcGVzIG9uIGVkZ2VzICovCiAgICAuZWRnZSA+IHRleHQgewogICAgICBmb250LXNpemU6IDMuNXB4OwogICAgICBmaWxsOiAjNjY2OwogICAgfQoKICAgIC5kYXRhZmxvdy1hcnJvd2hlYWQgewogICAgICBmaWxsOiAjYmJiOwogICAgfQoKICAgIC5yZWZlcmVuY2UtYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2ZmYjc0ZDsKICAgIH0KCiAgICAuc2VsZWN0ZWQtYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2YwMDsKICAgIH0KCiAgICAuZWRnZSAuY29udHJvbC1kZXAgewogICAgICBzdHJva2UtZGFzaGFycmF5OiAyLCAyOwogICAgfQoKICAgIC8qIC0tLSBHcm91cCBub2RlIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gLS0tICovCgogICAgLyogSGlkZXMgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbnMgd2hlbiBhIG5vZGUgaXNuJ3QgZXhwYW5kZWQgb3IgaGlnaGxpZ2h0ZWQuIFVzaW5nCiAgIGluY3JlZGlibHkgc21hbGwgb3BhY2l0eSBzbyB0aGF0IHRoZSBib3VuZGluZyBib3ggb2YgdGhlIDxnPiBwYXJlbnQgc3RpbGwgdGFrZXMKICAgdGhpcyBjb250YWluZXIgaW50byBhY2NvdW50IGV2ZW4gd2hlbiBpdCBpc24ndCB2aXNpYmxlICovCiAgICAubm9kZTpub3QoLmhpZ2hsaWdodGVkKTpub3QoLmV4cGFuZGVkKSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyIHsKICAgICAgb3BhY2l0eTogMC4wMTsKICAgIH0KICAgIC5ub2RlLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CiAgICAuYnV0dG9uY2lyY2xlIHsKICAgICAgZmlsbDogI2U3ODExZDsKICAgIH0KICAgIC5idXR0b25jaXJjbGU6aG92ZXIgewogICAgICBmaWxsOiAjYjk2NzE3OwogICAgfQogICAgLmV4cGFuZGJ1dHRvbiwKICAgIC5jb2xsYXBzZWJ1dHRvbiB7CiAgICAgIHN0cm9rZTogd2hpdGU7CiAgICB9CiAgICAvKiBEbyBub3QgbGV0IHRoZSBwYXRoIGVsZW1lbnRzIGluIHRoZSBidXR0b24gdGFrZSBwb2ludGVyIGZvY3VzICovCiAgICAubm9kZSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmV4cGFuZGJ1dHRvbiwKICAgIC5ub2RlID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuY29sbGFwc2VidXR0b24gewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgIC8qIE9ubHkgc2hvdyB0aGUgZXhwYW5kIGJ1dHRvbiB3aGVuIGEgbm9kZSBpcyBjb2xsYXBzZWQgYW5kIG9ubHkgc2hvdyB0aGUKICAgY29sbGFwc2UgYnV0dG9uIHdoZW4gYSBub2RlIGlzIGV4cGFuZGVkLiAqLwogICAgLm5vZGUuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5leHBhbmRidXR0b24gewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQogICAgLm5vZGU6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5jb2xsYXBzZWJ1dHRvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLmhlYWx0aC1waWxsLXN0YXRzIHsKICAgICAgZm9udC1zaXplOiA0cHg7CiAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICB9CgogICAgLmhlYWx0aC1waWxsIHJlY3QgewogICAgICBmaWx0ZXI6IHVybCgjaGVhbHRoLXBpbGwtc2hhZG93KTsKICAgICAgcng6IDM7CiAgICAgIHJ5OiAzOwogICAgfQoKICAgIC50aXRsZUNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgdG9wOiAyMHB4OwogICAgfQoKICAgIC50aXRsZSwKICAgIC5hdXhUaXRsZSwKICAgIC5mdW5jdGlvbkxpYnJhcnlUaXRsZSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIH0KCiAgICAjbWluaW1hcCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgcmlnaHQ6IDIwcHg7CiAgICAgIGJvdHRvbTogMjBweDsKICAgIH0KCiAgICAuY29udGV4dC1tZW51IHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBkaXNwbGF5OiBub25lOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyOwogICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgbWluLXdpZHRoOiAxNTBweDsKICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgIH0KCiAgICAuY29udGV4dC1tZW51IHVsIHsKICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KCiAgICAuY29udGV4dC1tZW51IHVsIGxpIHsKICAgICAgcGFkZGluZzogNHB4IDE2cHg7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCBsaTpob3ZlciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgIGNvbG9yOiB3aGl0ZTsKICAgIH0KICA8L3N0eWxlPgogIDxkaXYgY2xhc3M9InRpdGxlQ29udGFpbmVyIj4KICAgIDxkaXYgaWQ9InRpdGxlIiBjbGFzcz0idGl0bGUiPk1haW4gR3JhcGg8L2Rpdj4KICAgIDxkaXYgaWQ9ImF1eFRpdGxlIiBjbGFzcz0iYXV4VGl0bGUiPkF1eGlsaWFyeSBOb2RlczwvZGl2PgogICAgPGRpdiBpZD0iZnVuY3Rpb25MaWJyYXJ5VGl0bGUiIGNsYXNzPSJmdW5jdGlvbkxpYnJhcnlUaXRsZSI+RnVuY3Rpb25zPC9kaXY+CiAgPC9kaXY+CiAgPHN2ZyBpZD0ic3ZnIj4KICAgIDxkZWZzPgogICAgICA8IS0tIEFycm93IGhlYWRzIGZvciByZWZlcmVuY2UgZWRnZSBwYXRocyBvZiBkaWZmZXJlbnQgcHJlZGVmaW5lZCBzaXplcyBwZXIgY29sb3IuIC0tPgogICAgICA8cGF0aAogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiCiAgICAgICAgZD0iTSAwLDAgTCAxMCw1IEwgMCwxMCBDIDMsNyAzLDMgMCwwIgogICAgICA+PC9wYXRoPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtc21hbGwiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1tZWRpdW0iCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxMyIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjEzIgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLWxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTYiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxNiIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC14bGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIyMCIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjIwIgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KCiAgICAgIDwhLS0gQXJyb3cgaGVhZHMgZm9yIGRhdGFmbG93IGVkZ2UgcGF0aHMgb2YgZGlmZmVyZW50IHByZWRlZmluZWQgc2l6ZXMgcGVyIGNvbG9yLiAtLT4KICAgICAgPHBhdGgKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiCiAgICAgICAgZD0iTSAwLDAgTCAxMCw1IEwgMCwxMCBDIDMsNyAzLDMgMCwwIgogICAgICA+PC9wYXRoPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXNtYWxsIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbWVkaXVtIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTMiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxMyIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1sYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjE2IgogICAgICAgIG1hcmtlckhlaWdodD0iMTYiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQteGxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMjAiCiAgICAgICAgbWFya2VySGVpZ2h0PSIyMCIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KCiAgICAgIDwhLS0gQXJyb3cgaGVhZCBmb3IgYW5ub3RhdGlvbiBlZGdlIHBhdGhzLiAtLT4KICAgICAgPG1hcmtlcgogICAgICAgIGlkPSJhbm5vdGF0aW9uLWFycm93aGVhZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iNSIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSAwLDAgTCA1LDIuNSBMIDAsNSBMIDAsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGlkPSJhbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iNSIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSAwLDAgTCA1LDIuNSBMIDAsNSBMIDAsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGlkPSJyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjAiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gNSwwIEwgMCwyLjUgTCA1LDUgTCA1LDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0icmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIwIgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDUsMCBMIDAsMi41IEwgNSw1IEwgNSwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8IS0tIFRlbXBsYXRlIGZvciBhbiBPcCBub2RlIGVsbGlwc2UuIC0tPgogICAgICA8ZWxsaXBzZQogICAgICAgIGlkPSJvcC1ub2RlLXN0YW1wIgogICAgICAgIHJ4PSI3LjUiCiAgICAgICAgcnk9IjMiCiAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgIGZpbGw9ImluaGVyaXQiCiAgICAgID48L2VsbGlwc2U+CiAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgYW5ub3RhdGlvbiBlbGxpcHNlIChzbWFsbGVyKS4gLS0+CiAgICAgIDxlbGxpcHNlCiAgICAgICAgaWQ9Im9wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIKICAgICAgICByeD0iNSIKICAgICAgICByeT0iMiIKICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgPjwvZWxsaXBzZT4KICAgICAgPCEtLSBWZXJ0aWNhbGx5IHN0YWNrZWQgc2VyaWVzIG9mIE9wIG5vZGVzIHdoZW4gdW5leHBhbmRlZC4gLS0+CiAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjkiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjYiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjMiPjwvdXNlPgogICAgICA8L2c+CiAgICAgIDwhLS0gSG9yaXpvbnRhbGx5IHN0YWNrZWQgc2VyaWVzIG9mIE9wIG5vZGVzIHdoZW4gdW5leHBhbmRlZC4gLS0+CiAgICAgIDxnIGlkPSJvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCI+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjEyIiB5PSI0Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI0Ij48L3VzZT4KICAgICAgPC9nPgogICAgICA8IS0tIEhvcml6b250YWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyBmb3IgYW5ub3RhdGlvbi4gLS0+CiAgICAgIDxnIGlkPSJvcC1zZXJpZXMtYW5ub3RhdGlvbi1zdGFtcCI+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIiB4PSI5IiB5PSIyIj48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjciIHk9IjIiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIgeD0iNSIgeT0iMiI+PC91c2U+CiAgICAgIDwvZz4KICAgICAgPHN2ZwogICAgICAgIGlkPSJzdW1tYXJ5LWljb24iCiAgICAgICAgZmlsbD0iIzg0ODQ4NCIKICAgICAgICBoZWlnaHQ9IjEyIgogICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICB3aWR0aD0iMTIiCiAgICAgID4KICAgICAgICA8cGF0aAogICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICA+PC9wYXRoPgogICAgICA8L3N2Zz4KCiAgICAgIDwhLS0gSGF0Y2ggcGF0dGVybnMgZm9yIGZhZGVkIG91dCBub2Rlcy4gLS0+CiAgICAgIDxwYXR0ZXJuCiAgICAgICAgaWQ9InJlY3RIYXRjaCIKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICB3aWR0aD0iNSIKICAgICAgICBoZWlnaHQ9IjUiCiAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgIDwvcGF0dGVybj4KICAgICAgPHBhdHRlcm4KICAgICAgICBpZD0iZWxsaXBzZUhhdGNoIgogICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgIHdpZHRoPSIyIgogICAgICAgIGhlaWdodD0iMiIKICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjIiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiPjwvbGluZT4KICAgICAgPC9wYXR0ZXJuPgoKICAgICAgPCEtLSBBIHNoYWRvdyBmb3IgaGVhbHRoIHBpbGxzLiAtLT4KICAgICAgPGZpbHRlcgogICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zaGFkb3ciCiAgICAgICAgeD0iLTQwJSIKICAgICAgICB5PSItNDAlIgogICAgICAgIHdpZHRoPSIxODAlIgogICAgICAgIGhlaWdodD0iMTgwJSIKICAgICAgPgogICAgICAgIDxmZUdhdXNzaWFuQmx1ciBpbj0iU291cmNlQWxwaGEiIHN0ZERldmlhdGlvbj0iMC44Ij48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjAiIHJlc3VsdD0ib2Zmc2V0Ymx1ciI+PC9mZU9mZnNldD4KICAgICAgICA8ZmVGbG9vZCBmbG9vZC1jb2xvcj0iIzAwMDAwMCI+PC9mZUZsb29kPgogICAgICAgIDxmZUNvbXBvc2l0ZSBpbjI9Im9mZnNldGJsdXIiIG9wZXJhdG9yPSJpbiI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICA8ZmVNZXJnZT4KICAgICAgICAgIDxmZU1lcmdlTm9kZT48L2ZlTWVyZ2VOb2RlPgogICAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPgogICAgICAgIDwvZmVNZXJnZT4KICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8IS0tIE1ha2UgYSBsYXJnZSByZWN0YW5nbGUgdGhhdCBmaWxscyB0aGUgc3ZnIHNwYWNlIHNvIHRoYXQKICB6b29tIGV2ZW50cyBnZXQgY2FwdHVyZWQgb24gc2FmYXJpIC0tPgogICAgPHJlY3QgZmlsbD0id2hpdGUiIHdpZHRoPSIxMDAwMCIgaGVpZ2h0PSIxMDAwMCI+PC9yZWN0PgogICAgPGcgaWQ9InJvb3QiPjwvZz4KICA8L3N2Zz4KICA8dGYtZ3JhcGgtbWluaW1hcCBpZD0ibWluaW1hcCI+PC90Zi1ncmFwaC1taW5pbWFwPgogIDxkaXYgaWQ9ImNvbnRleHRNZW51IiBjbGFzcz0iY29udGV4dC1tZW51Ij48L2Rpdj4KYDtsZXQgSnF0PWNsYXNzIGV4dGVuZHMoZXIoaWwoeWUpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3pvb21lZD0hMSx0aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbCx0aGlzLl96b29tVHJhbnNmb3JtPW51bGwsdGhpcy5fbWF4Wm9vbURpc3RhbmNlRm9yQ2xpY2s9MjAsdGhpcy5fbm9kZUdyb3VwSW5kZXg9e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e30sdGhpcy5fZWRnZUdyb3VwSW5kZXg9e30sdGhpcy5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemU9OSx0aGlzLm1pbk1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZT02LHRoaXMubWF4TWV0YW5vZGVMYWJlbExlbmd0aExhcmdlRm9udD0xMSx0aGlzLm1heE1ldGFub2RlTGFiZWxMZW5ndGg9MTh9Z2V0Tm9kZSh0KXtyZXR1cm4gdGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0KX1pc05vZGVFeHBhbmRlZCh0KXtyZXR1cm4gdC5leHBhbmRlZH1zZXROb2RlRXhwYW5kZWQodCl7dGhpcy5fYnVpbGQodGhpcy5yZW5kZXJIaWVyYXJjaHkpLHRoaXMuX3VwZGF0ZUxhYmVscyghdGhpcy5fem9vbWVkKX1wYW5Ub05vZGUodCl7KGZ1bmN0aW9uIGUodCxuLGkscil7Y29uc3Qgbz1TdShuKS5zZWxlY3QoYFtkYXRhLW5hbWU9IiR7dH0iXWApLm5vZGUoKTtpZighbylyZXR1cm4gY29uc29sZS53YXJuKGBwYW5Ub05vZGUoKSBmYWlsZWQgZm9yIG5vZGUgbmFtZSAiJHt0fSJgKSwhMTtsZXQgYT1vLmdldEJCb3goKSxzPW8uZ2V0U2NyZWVuQ1RNKCksbD1uLmNyZWF0ZVNWR1BvaW50KCksYz1uLmNyZWF0ZVNWR1BvaW50KCk7bC54PWEueCxsLnk9YS55LGMueD1hLngrYS53aWR0aCxjLnk9YS55K2EuaGVpZ2h0LGw9bC5tYXRyaXhUcmFuc2Zvcm0ocyksYz1jLm1hdHJpeFRyYW5zZm9ybShzKTtsZXQgdT0odCxlLG4saSk9PiEodD5uJiZlPGkpLGg9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCBkPWgudG9wK2guaGVpZ2h0LTE1MDtpZih1KGwueCxjLngsaC5sZWZ0LGgubGVmdCtoLndpZHRoLTMyMCl8fHUobC55LGMueSxoLnRvcCxkKSl7bGV0IHQ9aC5sZWZ0K2gud2lkdGgvMi0obC54K2MueCkvMixlPWgudG9wK2guaGVpZ2h0LzItKGwueStjLnkpLzI7Y29uc3QgaT1iTihuKTtyZXR1cm4gU3UobikudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuY2FsbChyLnRyYW5zbGF0ZUJ5LHQvaS5rLGUvaS5rKSwhMH1yZXR1cm4hMX0pKHQsdGhpcy4kLnN2ZywwLHRoaXMuX3pvb20pJiYodGhpcy5fem9vbWVkPSEwKX1nZXRHcmFwaFN2Z1Jvb3QoKXtyZXR1cm4gdGhpcy4kLnN2Z31nZXRDb250ZXh0TWVudSgpe3JldHVybiB0aGlzLiQuY29udGV4dE1lbnV9X3Jlc2V0U3RhdGUoKXt0aGlzLl9ub2RlR3JvdXBJbmRleD17fSx0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleD17fSx0aGlzLl9lZGdlR3JvdXBJbmRleD17fSx0aGlzLl91cGRhdGVMYWJlbHMoITEpLFN1KHRoaXMuJC5zdmcpLnNlbGVjdCgiI3Jvb3QiKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKSxicXQodGhpcy4kLnN2Zyl9X2J1aWxkKHQpe3RoaXMudGVtcGxhdGVJbmRleD10LmhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCksQ0d0KCJ0Zi1ncmFwaC1zY2VuZSAobGF5b3V0KToiLGZ1bmN0aW9uKCl7Uld0KHQucm9vdCl9LmJpbmQodGhpcyksX0d0LlJFTkRFUl9TQ0VORV9MQVlPVVQpLENHdCgidGYtZ3JhcGgtc2NlbmUgKGJ1aWxkIHNjZW5lKToiLGZ1bmN0aW9uKCl7THF0KFN1KHRoaXMuJC5yb290KSx0LnJvb3QsdGhpcyksKGZ1bmN0aW9uIGUodCxuKXtTdSh0KS5vbigiY2xpY2siLCgoKT0+e24uZmlyZSgiZ3JhcGgtc2VsZWN0Iil9KSl9KSh0aGlzLiQuc3ZnLHRoaXMpLHRoaXMuX3VwZGF0ZUlucHV0VHJhY2UoKX0uYmluZCh0aGlzKSxfR3QuUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSGVhbHRoUGlsbHModGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLHRoaXMuaGVhbHRoUGlsbFN0ZXBJbmRleCksdGhpcy5taW5pbWFwLnVwZGF0ZSgpfS5iaW5kKHRoaXMpLE5XdC5hbmltYXRpb24uZHVyYXRpb24pfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLl96b29tPWtOKCkub24oImVuZCIsZnVuY3Rpb24oKXt0aGlzLl96b29tU3RhcnRDb29yZHMmJihNYXRoLnNxcnQoTWF0aC5wb3codGhpcy5fem9vbVN0YXJ0Q29vcmRzLngtdGhpcy5fem9vbVRyYW5zZm9ybS54LDIpK01hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy55LXRoaXMuX3pvb21UcmFuc2Zvcm0ueSwyKSk8dGhpcy5fbWF4Wm9vbURpc3RhbmNlRm9yQ2xpY2s/dGhpcy5fZmlyZUVuYWJsZUNsaWNrKCk6c2V0VGltZW91dCh0aGlzLl9maXJlRW5hYmxlQ2xpY2suYmluZCh0aGlzKSw1MCkpLHRoaXMuX3pvb21TdGFydENvb3Jkcz1udWxsfS5iaW5kKHRoaXMpKS5vbigiem9vbSIsZnVuY3Rpb24oKXt0aGlzLl96b29tVHJhbnNmb3JtPXV1LnRyYW5zZm9ybSx0aGlzLl96b29tU3RhcnRDb29yZHN8fCh0aGlzLl96b29tU3RhcnRDb29yZHM9dGhpcy5fem9vbVRyYW5zZm9ybSx0aGlzLmZpcmUoImRpc2FibGUtY2xpY2siKSksdGhpcy5fem9vbWVkPSEwLFN1KHRoaXMuJC5yb290KS5hdHRyKCJ0cmFuc2Zvcm0iLHV1LnRyYW5zZm9ybSksdGhpcy5taW5pbWFwLnpvb20odXUudHJhbnNmb3JtKX0uYmluZCh0aGlzKSksU3UodGhpcy4kLnN2ZykuY2FsbCh0aGlzLl96b29tKS5vbigiZGJsY2xpY2suem9vbSIsbnVsbCksU3Uod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpe3RoaXMubWluaW1hcC56b29tKCl9LmJpbmQodGhpcykpLHRoaXMubWluaW1hcD10aGlzLiQubWluaW1hcC5pbml0KHRoaXMuJC5zdmcsdGhpcy4kLnJvb3QsdGhpcy5fem9vbSxOV3QubWluaW1hcC5zaXplLE5XdC5zdWJzY2VuZS5tZXRhLmxhYmVsSGVpZ2h0KX1hdHRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITApfWRldGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMSl9X3JlbmRlckhpZXJhcmNoeUNoYW5nZWQoKXt2YXIgdD10aGlzLnJlbmRlckhpZXJhcmNoeTt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMSx0aGlzLl9yZXNldFN0YXRlKCksdGhpcy5fYnVpbGQodCl9X2FuaW1hdGVBbmRGaXQoKXshdGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2UmJnRoaXMuX2lzQXR0YWNoZWQmJnNldFRpbWVvdXQodGhpcy5maXQuYmluZCh0aGlzKSxOV3QuYW5pbWF0aW9uLmR1cmF0aW9uKX1fdXBkYXRlTGFiZWxzKHQpe3ZhciBlPXRoaXMuJCQoIi50aXRsZSIpLG49ZS5zdHlsZSxpPXRoaXMuJCQoIi5hdXhUaXRsZSIpLHI9aS5zdHlsZSxvPXRoaXMuJCQoIi5mdW5jdGlvbkxpYnJhcnlUaXRsZSIpLnN0eWxlO2NvbnN0IGE9U3UodGhpcy4kLnN2Zyk7dmFyIHM9YS5zZWxlY3QoIi4iK1ZXdC5TY2VuZS5HUk9VUCsiPi4iK1ZXdC5TY2VuZS5DT1JFKS5ub2RlKCk7aWYodCYmcyYmdGhpcy5wcm9ncmVzcyYmMTAwPT09dGhpcy5wcm9ncmVzcy52YWx1ZSl7dmFyIGw9YS5zZWxlY3QoIi4iK1ZXdC5TY2VuZS5HUk9VUCsiPi4iK1ZXdC5TY2VuZS5JTkVYVFJBQ1QpLm5vZGUoKXx8YS5zZWxlY3QoIi4iK1ZXdC5TY2VuZS5HUk9VUCsiPi4iK1ZXdC5TY2VuZS5PVVRFWFRSQUNUKS5ub2RlKCksYz1zLmdldENUTSgpLmUsdT1sP2wuZ2V0Q1RNKCkuZTpudWxsO24uZGlzcGxheT0iaW5saW5lIixuLmxlZnQ9YysicHgiLG51bGwhPT11JiZ1IT09Yz8oci5kaXNwbGF5PSJpbmxpbmUiLHU9TWF0aC5tYXgoYytlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHUpLHIubGVmdD11KyJweCIpOnIuZGlzcGxheT0ibm9uZSI7bGV0IHQ9YS5zZWxlY3QoIi4iK1ZXdC5TY2VuZS5HUk9VUCsiPi4iK1ZXdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKS5ub2RlKCksaD10P3QuZ2V0Q1RNKCkuZTpudWxsO251bGwhPT1oJiZoIT09dT8oby5kaXNwbGF5PSJpbmxpbmUiLGg9TWF0aC5tYXgodStpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLGgpLG8ubGVmdD1oKyJweCIpOm8uZGlzcGxheT0ibm9uZSJ9ZWxzZSBuLmRpc3BsYXk9Im5vbmUiLHIuZGlzcGxheT0ibm9uZSIsby5kaXNwbGF5PSJub25lIn1ub2RlQ29sb3JzQ2hhbmdlZCgpe251bGwhPXRoaXMucmVuZGVySGllcmFyY2h5JiYodGhpcy50ZW1wbGF0ZUluZGV4PXRoaXMucmVuZGVySGllcmFyY2h5LmhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCksU2UuZXhwb3J0cy5lYWNoKHRoaXMuX25vZGVHcm91cEluZGV4LCgodCxlKT0+e3RoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKX0pKSx0aGlzLm1pbmltYXAudXBkYXRlKCkpfWZpdCgpe3RoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlPSEwLChmdW5jdGlvbiB0KGUsbixpLHIpe2xldCBvPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1udWxsO3RyeXtpZihhPW4uZ2V0QkJveCgpLDA9PT1hLndpZHRoKXJldHVybn1jYXRjaCh0KXtyZXR1cm59bGV0IHM9LjkqTWF0aC5taW4oby53aWR0aC9hLndpZHRoLG8uaGVpZ2h0L2EuaGVpZ2h0LDIpLGw9Tld0LmdyYXBoO2NvbnN0IGM9dk4uc2NhbGUocykudHJhbnNsYXRlKGwucGFkZGluZy5wYWRkaW5nTGVmdCxsLnBhZGRpbmcucGFkZGluZ1RvcCk7U3UoZSkudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuY2FsbChpLnRyYW5zZm9ybSxjKS5vbigiZW5kLmZpdHRlZCIsKCgpPT57aS5vbigiZW5kLmZpdHRlZCIsbnVsbCkscigpfSkpfSkodGhpcy4kLnN2Zyx0aGlzLiQucm9vdCx0aGlzLl96b29tLGZ1bmN0aW9uKCl7dGhpcy5fem9vbWVkPSExfS5iaW5kKHRoaXMpKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy5taW5pbWFwLmdldEltYWdlQmxvYigpfWlzTm9kZVNlbGVjdGVkKHQpe3JldHVybiB0PT09dGhpcy5zZWxlY3RlZE5vZGV9aXNOb2RlSGlnaGxpZ2h0ZWQodCl7cmV0dXJuIHQ9PT10aGlzLmhpZ2hsaWdodGVkTm9kZX1hZGRBbm5vdGF0aW9uR3JvdXAodCxlLG4pe3ZhciBpPXQubm9kZS5uYW1lO3RoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2ldPXRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2ldfHx7fSx0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXVtlLm5vZGUubmFtZV09bn1nZXRBbm5vdGF0aW9uR3JvdXBzSW5kZXgodCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W3RdfXJlbW92ZUFubm90YXRpb25Hcm91cCh0LGUpe2RlbGV0ZSB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFt0Lm5vZGUubmFtZV1bZS5ub2RlLm5hbWVdfWFkZE5vZGVHcm91cCh0LGUpe3RoaXMuX25vZGVHcm91cEluZGV4W3RdPWV9Z2V0Tm9kZUdyb3VwKHQpe3JldHVybiB0aGlzLl9ub2RlR3JvdXBJbmRleFt0XX1yZW1vdmVOb2RlR3JvdXAodCl7ZGVsZXRlIHRoaXMuX25vZGVHcm91cEluZGV4W3RdfWFkZEVkZ2VHcm91cCh0LGUpe3RoaXMuX2VkZ2VHcm91cEluZGV4W3RdPWV9Z2V0RWRnZUdyb3VwKHQpe3JldHVybiB0aGlzLl9lZGdlR3JvdXBJbmRleFt0XX1fdXBkYXRlSGVhbHRoUGlsbHMoKXshKGZ1bmN0aW9uIHQoZSxuLGkpe2lmKCFuKXJldHVybjtsZXQgcj0xO1N1KGUpLnNlbGVjdEFsbCgiZy5ub2Rlc2hhcGUiKS5lYWNoKChmdW5jdGlvbih0KXtjb25zdCBlPW5bdC5ub2RlLm5hbWVdOyEoZnVuY3Rpb24gbyh0LGUsbixpLHI9NjAsYT0xMCxzPTAsbCl7aWYoU3UodC5wYXJlbnROb2RlKS5zZWxlY3RBbGwoIi5oZWFsdGgtcGlsbCIpLnJlbW92ZSgpLCFlKXJldHVybjtjb25zdCBjPWUudmFsdWUsdT1jLnNsaWNlKDIsOCksaD11WzBdLGQ9dVsxXSxwPXVbNV07bGV0IGY9Y1sxXTtjb25zdCBtPXttaW46Y1s4XSxtYXg6Y1s5XSxtZWFuOmNbMTBdLHN0ZGRldjpNYXRoLnNxcnQoY1sxMV0pfTtudWxsPT1yJiYocj02MCksbnVsbD09YSYmKGE9MTApLG51bGw9PXMmJihzPTApLG51bGwhPW4mJm4ubm9kZS50eXBlPT09akd0Lk9QJiYoci89MixhLz0yKTtsZXQgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoYkd0LCJnIik7Zy5jbGFzc0xpc3QuYWRkKCJoZWFsdGgtcGlsbCIpO2xldCBfPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhiR3QsImRlZnMiKTtnLmFwcGVuZENoaWxkKF8pO2xldCB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhiR3QsImxpbmVhckdyYWRpZW50Iik7Y29uc3Qgdj0iaGVhbHRoLXBpbGwtZ3JhZGllbnQtIitpO3kuc2V0QXR0cmlidXRlKCJpZCIsdik7bGV0IGI9MCx4PSIwJSI7Zm9yKGxldCB0PTA7dDx1Lmxlbmd0aDt0Kyspe2lmKCF1W3RdKWNvbnRpbnVlO2IrPXVbdF07bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGJHdCwic3RvcCIpO2Uuc2V0QXR0cmlidXRlKCJvZmZzZXQiLHgpLGUuc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIixVV3RbdF0uYmFja2dyb3VuZF9jb2xvcikseS5hcHBlbmRDaGlsZChlKTtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoYkd0LCJzdG9wIiksaT0xMDAqYi9mKyIlIjtuLnNldEF0dHJpYnV0ZSgib2Zmc2V0IixpKSxuLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsVVd0W3RdLmJhY2tncm91bmRfY29sb3IpLHkuYXBwZW5kQ2hpbGQobikseD1pfV8uYXBwZW5kQ2hpbGQoeSk7bGV0IHc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGJHdCwicmVjdCIpO3cuc2V0QXR0cmlidXRlKCJmaWxsIiwidXJsKCMiK3YrIikiKSx3LnNldEF0dHJpYnV0ZSgid2lkdGgiLFN0cmluZyhyKSksdy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsU3RyaW5nKGEpKSx3LnNldEF0dHJpYnV0ZSgieSIsU3RyaW5nKHMpKSxnLmFwcGVuZENoaWxkKHcpO2xldCBTPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhiR3QsInRpdGxlIik7Uy50ZXh0Q29udGVudD0oZnVuY3Rpb24gTSh0LGUsbixpKXtsZXQgcj0iRGV2aWNlOiAiK3QuZGV2aWNlX25hbWUrIlxuIjtyKz0iZHR5cGU6ICIrdC5kdHlwZSsiXG4iO2xldCBvPSIoc2NhbGFyKSI7dC5zaGFwZS5sZW5ndGg+MCYmKG89IigiK3Quc2hhcGUuam9pbigiLCIpKyIpIikscis9Ilxuc2hhcGU6ICIrbysiXG5cbiIscis9IiMoZWxlbWVudHMpOiAiK2UrIlxuIjtjb25zdCBhPVtdO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0+MCYmYS5wdXNoKCIjKCIrVVd0W3RdLmxhYmVsKyIpOiAiK25bdF0pO3JldHVybiByKz1hLmpvaW4oIiwgIikrIlxuXG4iLGkubWF4Pj1pLm1pbiYmKHIrPSJtaW46ICIraS5taW4rIiwgbWF4OiAiK2kubWF4KyJcbiIscis9Im1lYW46ICIraS5tZWFuKyIsIHN0ZGRldjogIitpLnN0ZGRldikscn0pKGUsZix1LG0pLGcuYXBwZW5kQ2hpbGQoUyk7bGV0IEU9ITE7aWYobnVsbCE9bil7bGV0IHQ9bi55LWEtbi5oZWlnaHQvMi0yO2lmKG4ubGFiZWxPZmZzZXQ8MCYmKHQrPW4ubGFiZWxPZmZzZXQpLGcuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisobi54LXIvMikrIiwgIit0KyIpIiksdVsyXXx8dVszXXx8dVs0XSl7bGV0IHQ9bi5ub2RlLmF0dHI7aWYodCYmdC5sZW5ndGgpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoIlQiPT09dFtlXS5rZXkpe2xldCBuPXRbZV0udmFsdWUudHlwZTtFPW4mJi9eRFRfKEJPT0x8SU5UfFVJTlQpLy50ZXN0KG4pO2JyZWFrfX19bGV0IFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGJHdCwidGV4dCIpO2lmKE51bWJlci5pc0Zpbml0ZShtLm1pbikmJk51bWJlci5pc0Zpbml0ZShtLm1heCkpe2NvbnN0IHQ9cVd0KG0ubWluLEUpLGU9cVd0KG0ubWF4LEUpO2lmKFQudGV4dENvbnRlbnQ9Zj4xP3QrIiB+ICIrZTp0LGg+MHx8ZD4wfHxwPjApe1QudGV4dENvbnRlbnQrPSIgKCI7Y29uc3QgdD1bXTtoPjAmJnQucHVzaChgTmFOw5cke2h9YCksZD4wJiZ0LnB1c2goYC3iiJ7DlyR7ZH1gKSxwPjAmJnQucHVzaChgK+KInsOXJHtwfWApLFQudGV4dENvbnRlbnQrPXQuam9pbigiOyAiKSsiKSJ9fWVsc2UgVC50ZXh0Q29udGVudD0iKE5vIGZpbml0ZSBlbGVtZW50cykiO1QuY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwtc3RhdHMiKSxudWxsPT1sJiYobD1yLzIpLFQuc2V0QXR0cmlidXRlKCJ4IixTdHJpbmcobCkpLFQuc2V0QXR0cmlidXRlKCJ5IixTdHJpbmcocy0yKSksZy5hcHBlbmRDaGlsZChUKSxZaSh0LnBhcmVudE5vZGUpLmFwcGVuZENoaWxkKGcpfSkodGhpcyxlP2VbaV06bnVsbCx0LHIrKyl9KSl9KSh0aGlzLiQuc3ZnLHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpfV91cGRhdGVOb2RlU3RhdGUodCl7dmFyIGU9dGhpcy5nZXROb2RlKHQpLG49dGhpcy5nZXROb2RlR3JvdXAodCk7biYmd3F0KG4sZSx0aGlzKSxlLm5vZGUudHlwZT09PWpHdC5NRVRBJiZlLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uJiYhZS5pc0xpYnJhcnlGdW5jdGlvbiYmd3F0KFN1KCIuIitWV3QuU2NlbmUuR1JPVVArIj4uIitWV3QuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSsnIGdbZGF0YS1uYW1lPSInKyhWR3QrZS5ub2RlLmFzc29jaWF0ZWRGdW5jdGlvbikrJyJdJyksZSx0aGlzKTt2YXIgaT10aGlzLmdldEFubm90YXRpb25Hcm91cHNJbmRleCh0KTtTZS5leHBvcnRzLmVhY2goaSwoKHQsbik9Pnt3cXQodCxlLHRoaXMsVld0LkFubm90YXRpb24uTk9ERSl9KSl9X3NlbGVjdGVkTm9kZUNoYW5nZWQodCxlKXtpZih0IT09ZSYmKGUmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKSx0KSl7dGhpcy5taW5pbWFwLnVwZGF0ZSgpO2Zvcih2YXIgbixpPXRoaXMucmVuZGVySGllcmFyY2h5LmhpZXJhcmNoeS5ub2RlKHQpLHI9W107bnVsbCE9aS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUubmFtZSE9Rkd0OylyLnB1c2goKGk9aS5wYXJlbnROb2RlKS5uYW1lKTtTZS5leHBvcnRzLmZvckVhY2hSaWdodChyLCh0PT57dGhpcy5yZW5kZXJIaWVyYXJjaHkuYnVpbGRTdWJoaWVyYXJjaHkodCk7dmFyIGU9dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0KTtlLm5vZGUuaXNHcm91cE5vZGUmJiFlLmV4cGFuZGVkJiYoZS5leHBhbmRlZD0hMCxufHwobj1lKSl9KSksbiYmKHRoaXMuc2V0Tm9kZUV4cGFuZGVkKG4pLHRoaXMuX3pvb21lZD0hMCksdCYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHQpLHNldFRpbWVvdXQoKCgpPT57dGhpcy5wYW5Ub05vZGUodCl9KSxOV3QuYW5pbWF0aW9uLmR1cmF0aW9uKX19X2hpZ2hsaWdodGVkTm9kZUNoYW5nZWQodCxlKXt0IT09ZSYmKHQmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZSh0KSxlJiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUoZSkpfV9vblpvb21DaGFuZ2VkKCl7dGhpcy5fdXBkYXRlTGFiZWxzKCF0aGlzLl96b29tZWQpfV9maXJlRW5hYmxlQ2xpY2soKXt0aGlzLmZpcmUoImVuYWJsZS1jbGljayIpfV91cGRhdGVJbnB1dFRyYWNlKCl7TXF0KHRoaXMuZ2V0R3JhcGhTdmdSb290KCksdGhpcy5yZW5kZXJIaWVyYXJjaHksdGhpcy5zZWxlY3RlZE5vZGUsdGhpcy50cmFjZUlucHV0cyl9fTtKcXQudGVtcGxhdGU9WnF0LHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHlXdCldLEpxdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKcXQucHJvdG90eXBlLCJuYW1lIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEpxdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKcXQucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEpxdC5wcm90b3R5cGUsIl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEpxdC5wcm90b3R5cGUsIl9pc0F0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpxdC5wcm90b3R5cGUsIl96b29tIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfaGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSnF0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfc2VsZWN0ZWROb2RlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSnF0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpxdC5wcm90b3R5cGUsImhhbmRsZUVkZ2VTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9vblpvb21DaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSnF0LnByb3RvdHlwZSwiX3pvb21lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKcXQucHJvdG90eXBlLCJfem9vbVN0YXJ0Q29vcmRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpxdC5wcm90b3R5cGUsIl96b29tVHJhbnNmb3JtIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpxdC5wcm90b3R5cGUsIl9tYXhab29tRGlzdGFuY2VGb3JDbGljayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLEpxdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSnF0LnByb3RvdHlwZSwiX25vZGVHcm91cEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpxdC5wcm90b3R5cGUsIl9hbm5vdGF0aW9uR3JvdXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKcXQucHJvdG90eXBlLCJfZWRnZUdyb3VwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSnF0LnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpxdC5wcm90b3R5cGUsIm1pbk1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxKcXQucHJvdG90eXBlLCJtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoTGFyZ2VGb250Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpxdC5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSnF0LnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEpxdC5wcm90b3R5cGUsIm5vZGVDb250ZXh0TWVudUl0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEpxdC5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSnF0LnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKSx0KFthKCJyZW5kZXJIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpxdC5wcm90b3R5cGUsIl9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkIixudWxsKSx0KFthKCJfaXNBdHRhY2hlZCIsInJlbmRlckhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSnF0LnByb3RvdHlwZSwiX2FuaW1hdGVBbmRGaXQiLG51bGwpLHQoW2EoImNvbG9yQnkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpxdC5wcm90b3R5cGUsIm5vZGVDb2xvcnNDaGFuZ2VkIixudWxsKSx0KFthKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwiaGVhbHRoUGlsbFN0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSnF0LnByb3RvdHlwZSwiX3VwZGF0ZUhlYWx0aFBpbGxzIixudWxsKSx0KFthKCJ0cmFjZUlucHV0cyIsInNlbGVjdGVkTm9kZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSnF0LnByb3RvdHlwZSwiX3VwZGF0ZUlucHV0VHJhY2UiLG51bGwpLEpxdD10KFtpKCJ0Zi1ncmFwaC1zY2VuZSIpXSxKcXQpO2xldCBRcXQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yZW5kZXJEZXB0aD0xLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITAsdGhpcy5lZGdlV2lkdGhGdW5jdGlvbj0iIix0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZD0iIix0aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uPSIiLHRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkPSIifXBhblRvTm9kZSh0KXt0aGlzLiQkKCJ0Zi1ncmFwaC1zY2VuZSIpLnBhblRvTm9kZSh0KX1fYXV0b0V4dHJhY3ROb2Rlc0NoYW5nZWQoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O2lmKHQpe2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5nZXROb2RlTWFwKCkpKWUuaW5jbHVkZT1HR3QuVU5TUEVDSUZJRUQ7dGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkodCl9fV9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSgpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7dCYmdGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkodCl9X3N0YXRzQ2hhbmdlZCgpe3ZhciB0PXRoaXMuc3RhdHMsZT10aGlzLmRldmljZXNGb3JTdGF0czt0aGlzLmdyYXBoSGllcmFyY2h5JiYodCYmZSYmKChmdW5jdGlvbiBuKHQsZSxpKXtTZS5leHBvcnRzLmVhY2godC5ub2RlcywodD0+e3Quc3RhdHM9bnVsbH0pKSxTZS5leHBvcnRzLmVhY2goZS5kZXZfc3RhdHMsKGU9PntpJiYhaVtlLmRldmljZV18fFNlLmV4cG9ydHMuZWFjaChlLm5vZGVfc3RhdHMsKG49PntsZXQgaT1uLm5vZGVfbmFtZSBpbiB0Lm5vZGVzP24ubm9kZV9uYW1lOnNXdChuLm5vZGVfbmFtZSk7aWYoIShpIGluIHQubm9kZXMpKXJldHVybjtsZXQgcj0wO24ubWVtb3J5JiZTZS5leHBvcnRzLmVhY2gobi5tZW1vcnksKHQ9Pnt0LnRvdGFsX2J5dGVzJiYodC50b3RhbF9ieXRlcz4wP3IrPU51bWJlcih0LnRvdGFsX2J5dGVzKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgbWVtb3J5IGFsbG9jYXRpb24gZm9yICIraSkpfSkpO2xldCBvPW51bGw7bi5vdXRwdXQmJihvPVNlLmV4cG9ydHMubWFwKG4ub3V0cHV0LCh0PT5TZS5leHBvcnRzLm1hcCh0LnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0sKHQ9Pk51bWJlcih0LnNpemUpKSkpKSksdC5ub2Rlc1tpXS5kZXZpY2U9ZS5kZXZpY2UsbnVsbD09dC5ub2Rlc1tpXS5zdGF0cyYmKHQubm9kZXNbaV0uc3RhdHM9bmV3IFNHdChvKSksdC5ub2Rlc1tpXS5zdGF0cy5hZGRCeXRlc0FsbG9jYXRpb24ociksbi5hbGxfZW5kX3JlbF9taWNyb3MmJihuLmFsbF9lbmRfcmVsX21pY3Jvcz4wP3Qubm9kZXNbaV0uc3RhdHMuYWRkRXhlY3V0aW9uVGltZShuLmFsbF9zdGFydF9taWNyb3Msbi5hbGxfc3RhcnRfbWljcm9zK24uYWxsX2VuZF9yZWxfbWljcm9zKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgcnVudGltZSBmb3IgIitpKSl9KSl9KSl9KSh0aGlzLmJhc2ljR3JhcGgsdCxlKSwoZnVuY3Rpb24gaSh0LGUpe2xldCBuPXt9LGk9e307U2UuZXhwb3J0cy5lYWNoKHQucm9vdC5sZWF2ZXMoKSwoZT0+e2xldCByPXQubm9kZShlKTtudWxsIT1yLmRldmljZSYmKG5bci5kZXZpY2VdPSEwKSxudWxsIT1yLnhsYUNsdXN0ZXImJihpW3IueGxhQ2x1c3Rlcl09ITApfSkpLHQuZGV2aWNlcz1TZS5leHBvcnRzLmtleXMobiksdC54bGFDbHVzdGVycz1TZS5leHBvcnRzLmtleXMoaSksU2UuZXhwb3J0cy5lYWNoKHQuZ2V0Tm9kZU1hcCgpLCgodCxlKT0+e3QuaXNHcm91cE5vZGUmJih0LnN0YXRzPW5ldyBTR3QobnVsbCksdC5kZXZpY2VIaXN0b2dyYW09e30pfSkpLFNlLmV4cG9ydHMuZWFjaCh0LnJvb3QubGVhdmVzKCksKGU9PntsZXQgbj10Lm5vZGUoZSksaT1uO2Zvcig7bnVsbCE9aS5wYXJlbnROb2RlOyl7aWYobnVsbCE9bi5kZXZpY2Upe2xldCB0PWkucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07dFtuLmRldmljZV09KHRbbi5kZXZpY2VdfHwwKSsxfWlmKG51bGwhPW4ueGxhQ2x1c3Rlcil7bGV0IHQ9aS5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW07dFtuLnhsYUNsdXN0ZXJdPSh0W24ueGxhQ2x1c3Rlcl18fDApKzF9bnVsbCE9bi5zdGF0cyYmaS5wYXJlbnROb2RlLnN0YXRzLmNvbWJpbmUobi5zdGF0cyksaT1pLnBhcmVudE5vZGV9fSkpfSkodGhpcy5ncmFwaEhpZXJhcmNoeSkpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJncmFwaC1zZWxlY3QiLHRoaXMuX2dyYXBoU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJkaXNhYmxlLWNsaWNrIix0aGlzLl9kaXNhYmxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2xpY2siLHRoaXMuX2VuYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9ub2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtaGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4dHJhY3QiLHRoaXMuX25vZGVUb2dnbGVFeHRyYWN0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHRoaXMuX25vZGVUb2dnbGVTZXJpZXNHcm91cC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImVkZ2Utc2VsZWN0Iix0aGlzLl9lZGdlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXNlbGVjdCIsdGhpcy5fbm9kZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHRoaXMuX25vZGVIaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHRoaXMuX25vZGVVbmhpZ2hsaWdodGVkLmJpbmQodGhpcykpfV9idWlsZFJlbmRlckhpZXJhcmNoeSh0KXtpZih0LnJvb3QudHlwZSE9PWpHdC5NRVRBKXJldHVybjtjb25zdCBlPXRoaXMsbj1DR3QoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKCk9Pntjb25zdCBuPW5ldyB5V3QodCwhIXRoaXMuc3RhdHMsdGhpcy5hdXRvRXh0cmFjdE5vZGVzKTtmdW5jdGlvbiBpKHQpe3JldHVybnttaW5WYWx1ZTp0LmRvbWFpbigpWzBdLG1heFZhbHVlOnQuZG9tYWluKClbMV0sc3RhcnRDb2xvcjp0LnJhbmdlKClbMF0sZW5kQ29sb3I6dC5yYW5nZSgpWzFdfX1yZXR1cm4gbi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uLG4uZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbixlLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6aShuLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTppKG4ubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOlNlLmV4cG9ydHMubWFwKG4uZGV2aWNlQ29sb3JNYXAuZG9tYWluKCksKGZ1bmN0aW9uKHQpe3JldHVybntkZXZpY2U6dCxjb2xvcjpuLmRldmljZUNvbG9yTWFwKHQpfX0pKSx4bGFfY2x1c3RlcjpTZS5leHBvcnRzLm1hcChuLnhsYUNsdXN0ZXJDb2xvck1hcC5kb21haW4oKSwoZnVuY3Rpb24odCl7cmV0dXJue3hsYV9jbHVzdGVyOnQsY29sb3I6bi54bGFDbHVzdGVyQ29sb3JNYXAodCl9fSkpfSksbn0pLF9HdC5SRU5ERVJfQlVJTERfSElFUkFSQ0hZKTtlLl9zZXRSZW5kZXJIaWVyYXJjaHkobil9X2dldFZpc2libGUodCl7cmV0dXJuIHQ/dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KTp0fWZpdCgpe3RoaXMuJC5zY2VuZS5maXQoKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy4kLnNjZW5lLmdldEltYWdlQmxvYigpfV9ncmFwaENoYW5nZWQoKXt0aGlzLmdyYXBoSGllcmFyY2h5JiYodGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcih6cXQuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy4kLnNjZW5lLm5vZGVDb2xvcnNDaGFuZ2VkKCl9KSksdGhpcy5maXJlKCJncmFwaC1zZWxlY3QiKSl9X2dyYXBoU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG51bGwpLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLG51bGwpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9kaXNhYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMX1fZW5hYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fc2VsZWN0ZWROb2RlQ2hhbmdlZCgpe3RoaXMuaGFuZGxlTm9kZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCh0aGlzLnNlbGVjdGVkTm9kZSl9X3NlbGVjdGVkRWRnZUNoYW5nZWQoKXt2YXIgdD10aGlzLnNlbGVjdGVkRWRnZTt0aGlzLl9kZXNlbGVjdFByZXZpb3VzRWRnZSgpLHQmJih0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuY2xhc3NlZChWV3QuRWRnZS5TRUxFQ1RFRCwhMCksdGhpcy5fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCkpLHRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCh0KX1fbm9kZVNlbGVjdGVkKHQpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJnRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQuZGV0YWlsLm5hbWUpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X2VkZ2VTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLHQuZGV0YWlsLmVkZ2VHcm91cCksdGhpcy5zZXQoInNlbGVjdGVkRWRnZSIsdC5kZXRhaWwuZWRnZURhdGEpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9ub2RlSGlnaGxpZ2h0ZWQodCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsdC5kZXRhaWwubmFtZSl9X25vZGVVbmhpZ2hsaWdodGVkKHQpe3RoaXMuc2V0KCJoaWdobGlnaHRlZE5vZGUiLG51bGwpfV9ub2RlVG9nZ2xlRXhwYW5kKHQpe3RoaXMuX25vZGVTZWxlY3RlZCh0KTt2YXIgZT10LmRldGFpbC5uYW1lLG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShlKTtuLm5vZGUudHlwZSE9PWpHdC5PUCYmKHRoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGUpLG4uZXhwYW5kZWQ9IW4uZXhwYW5kZWQsdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLiQuc2NlbmUuc2V0Tm9kZUV4cGFuZGVkKG4pfSksNzUpLFRHdCh7YWN0aW9uSWQ6X0d0Lk5PREVfRVhQQU5TSU9OX1RPR0dMRUQsZXZlbnRMYWJlbDpuLmV4cGFuZGVkPyJleHBhbmRlZCI6ImNvbGxhcHNlZCJ9KSl9X25vZGVUb2dnbGVFeHRyYWN0KHQpe3RoaXMubm9kZVRvZ2dsZUV4dHJhY3QodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZUV4dHJhY3QodCl7Y29uc3QgZT10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpO2Uubm9kZS5pbmNsdWRlPWUubm9kZS5pbmNsdWRlPT1HR3QuSU5DTFVERT9HR3QuRVhDTFVERTplLm5vZGUuaW5jbHVkZT09R0d0LkVYQ0xVREV8fHRoaXMucmVuZGVySGllcmFyY2h5LmlzTm9kZUF1eGlsaWFyeShlKT9HR3QuSU5DTFVERTpHR3QuRVhDTFVERSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KSxUR3Qoe2FjdGlvbklkOl9HdC5OT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQsZXZlbnRMYWJlbDplLm5vZGUuaW5jbHVkZT09PUdHdC5JTkNMVURFPyJBdXhpbGlhcnkgdG8gTWFpbiI6Ik1haW4gdG8gQXV4aWxpYXJ5In0pfV9ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodCl7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodC5kZXRhaWwubmFtZSl9bm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7dmFyIGU9a0d0KEFHdCh0aGlzKSwxMDAsIk5hbWVzcGFjZSBoaWVyYXJjaHkiKTtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmhpZXJhcmNoeVBhcmFtcykse3Nlcmllc01hcDp0aGlzLmdyYXBoSGllcmFyY2h5LmJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpfSk7RnF0KHRoaXMuYmFzaWNHcmFwaCxuLGUpLnRoZW4oZnVuY3Rpb24odCl7dGhpcy5zZXQoImdyYXBoSGllcmFyY2h5Iix0KSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KX0uYmluZCh0aGlzKSl9X2Rlc2VsZWN0UHJldmlvdXNFZGdlKCl7U3UoIi4iK1ZXdC5FZGdlLlNFTEVDVEVEKS5jbGFzc2VkKFZXdC5FZGdlLlNFTEVDVEVELCExKS5lYWNoKCgodCxlKT0+e2lmKHQubGFiZWwpe2NvbnN0IGU9U3UodGhpcykuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIik7dC5sYWJlbC5zdGFydE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dC5sYWJlbC5zdGFydE1hcmtlcklkfSlgKSx0LmxhYmVsLmVuZE1hcmtlcklkJiZlLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3QubGFiZWwuZW5kTWFya2VySWR9KWApfX0pKX1fdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UodCl7aWYodC5sYWJlbCl7Y29uc3QgZT10LmxhYmVsLnN0YXJ0TWFya2VySWR8fHQubGFiZWwuZW5kTWFya2VySWQ7aWYoZSl7Y29uc3Qgbj1lLnJlcGxhY2UoImRhdGFmbG93LSIsInNlbGVjdGVkLSIpO2xldCBpPXRoaXMuJCQoIiMiK24pO2lmKCFpKXtjb25zdCB0PXRoaXMuJC5zY2VuZS5xdWVyeVNlbGVjdG9yKCIjIitlKTtpPXQuY2xvbmVOb2RlKCEwKSxpLnNldEF0dHJpYnV0ZSgiaWQiLG4pLGkuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQtYXJyb3doZWFkIiksdC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGkpfWNvbnN0IHI9dC5sYWJlbC5zdGFydE1hcmtlcklkPyJtYXJrZXItc3RhcnQiOiJtYXJrZXItZW5kIjt0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIikuc3R5bGUocixgdXJsKCMke259KWApfX19bm90KHQpe3JldHVybiF0fX07UXF0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgfQoKICAgICAgLnZlcnRpY2FsIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICAuYXV0byB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJ2ZXJ0aWNhbCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3RpdGxlXV0iPgogICAgICAgICAgPGgyPltbdGl0bGVdXTwvaDI+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGYtZ3JhcGgtc2NlbmUKICAgICAgICAgIGlkPSJzY2VuZSIKICAgICAgICAgIGNsYXNzPSJhdXRvIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9IltbX2dldFZpc2libGUoaGlnaGxpZ2h0ZWROb2RlKV1dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHNlbGVjdGVkLWVkZ2U9Int7c2VsZWN0ZWRFZGdlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBwcm9ncmVzcz0iW1twcm9ncmVzc11dIgogICAgICAgICAgbm9kZS1jb250ZXh0LW1lbnUtaXRlbXM9Iltbbm9kZUNvbnRleHRNZW51SXRlbXNdXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgaGFuZGxlLWVkZ2Utc2VsZWN0ZWQ9IltbaGFuZGxlRWRnZVNlbGVjdGVkXV0iCiAgICAgICAgICB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSIKICAgICAgICA+PC90Zi1ncmFwaC1zY2VuZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxvYnNlcnZlcjoiX2dyYXBoQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsRHF0KV0sUXF0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIscUd0KV0sUXF0LnByb3RvdHlwZSwiYmFzaWNHcmFwaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJkZXZpY2VzRm9yU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUXF0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxRcXQucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUXF0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJzZWxlY3RlZEVkZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUXF0LnByb3RvdHlwZSwiX2xhc3RTZWxlY3RlZEVkZ2VHcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUXF0LnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFFxdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFxdC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLHlXdCldLFFxdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFFxdC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sUXF0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sUXF0LnByb3RvdHlwZSwibm9kZUNvbnRleHRNZW51SXRlbXMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUXF0LnByb3RvdHlwZSwiX3JlbmRlckRlcHRoIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sUXF0LnByb3RvdHlwZSwiX2FsbG93R3JhcGhTZWxlY3QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUXF0LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxRcXQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFxdC5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFFxdC5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJlZGdlTGFiZWxGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxRcXQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbYSgiYXV0b0V4dHJhY3ROb2RlcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUXF0LnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkIixudWxsKSx0KFthKCJncmFwaEhpZXJhcmNoeSIsImVkZ2VXaWR0aEZ1bmN0aW9uIiwiaGFuZGxlTm9kZVNlbGVjdGVkIiwiZWRnZUxhYmVsRnVuY3Rpb24iLCJoYW5kbGVFZGdlU2VsZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFxdC5wcm90b3R5cGUsIl9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSIsbnVsbCksdChbYSgic3RhdHMiLCJkZXZpY2VzRm9yU3RhdHMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFFxdC5wcm90b3R5cGUsIl9zdGF0c0NoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkTm9kZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUXF0LnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUNoYW5nZWQiLG51bGwpLHQoW2EoInNlbGVjdGVkRWRnZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sUXF0LnByb3RvdHlwZSwiX3NlbGVjdGVkRWRnZUNoYW5nZWQiLG51bGwpLFFxdD10KFtpKCJ0Zi1ncmFwaCIpXSxRcXQpO2NvbnN0IHRZdD17TUFYX05PREVfQ09VTlQ6MWU0LE1BWF9FREdFX0NPVU5UOjFlNH07bGV0IGVZdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaGllcmFyY2h5UGFyYW1zPUhxdCx0aGlzLmFsbFN0ZXBzTW9kZUVuYWJsZWQ9ITEsdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5jb21wYXROb2RlVGl0bGU9IlRQVSBDb21wYXRpYmlsaXR5In1maXQoKXt0aGlzLiQuZ3JhcGguZml0KCl9ZG93bmxvYWRBc0ltYWdlKHQpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgZT15aWVsZCB0aGlzLiQuZ3JhcGguZ2V0SW1hZ2VCbG9iKCksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7bi5ocmVmPVVSTC5jcmVhdGVPYmplY3RVUkwoZSksbi5kb3dubG9hZD10LG4uY2xpY2soKSxVUkwucmV2b2tlT2JqZWN0VVJMKG4uaHJlZil9KSl9X2lzTm90Q29tcGxldGUodCl7cmV0dXJuIHQudmFsdWU8MTAwfV9nZXRDb250YWluZXJDbGFzcyh0KXt2YXIgZT0iY29udGFpbmVyIjtyZXR1cm4gdC5lcnJvciYmKGUrPSIgZXJyb3IiKSx0aGlzLl9pc05vdENvbXBsZXRlKHQpJiYoZSs9IiBsb2FkaW5nIiksZX1fb25Ob2RlSW5jbHVzaW9uVG9nZ2xlZCh0KXt0aGlzLiQuZ3JhcGgubm9kZVRvZ2dsZUV4dHJhY3QodC5kZXRhaWwubmFtZSl9X29uTm9kZVNlcmllc0dyb3VwVG9nZ2xlZCh0KXt0aGlzLiQuZ3JhcGgubm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQuZGV0YWlsLm5hbWUpfV91cGRhdGVOb2RlSW5jbHVkZSgpe2NvbnN0IHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHk/dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0Tm9kZUJ5TmFtZSh0aGlzLnNlbGVjdGVkTm9kZSk6bnVsbDt0aGlzLl9zZWxlY3RlZE5vZGVJbmNsdWRlPXQ/dC5pbmNsdWRlOkdHdC5VTlNQRUNJRklFRH1fc2xpbUdyYXBoQ2hhbmdlZCgpe2lmKCF0aGlzLmdyYXBoKXJldHVybjtjb25zdHtNQVhfTk9ERV9DT1VOVDp0LE1BWF9FREdFX0NPVU5UOmV9PXRZdDtPYmplY3Qua2V5cyh0aGlzLmdyYXBoLm5vZGVzKS5sZW5ndGg+dCYmdGhpcy5ncmFwaC5lZGdlcy5sZW5ndGg+ZSYmdGhpcy5jb2xvckJ5PT09YXF0LlNUUlVDVFVSRSYmKHRoaXMuY29sb3JCeT1hcXQuTk9ORSl9X2Vuc3VyZVRlbXBsYXRlcygpe3RoaXMuZ3JhcGhIaWVyYXJjaHkmJnRoaXMuY29sb3JCeT09PWFxdC5TVFJVQ1RVUkUmJih0aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKXx8dGhpcy5ncmFwaEhpZXJhcmNoeS51cGRhdGVUZW1wbGF0ZXMoKSl9fTtlWXQudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIDo6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY2xvc2UgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgbGVmdDogMTVweDsKICAgICAgICBib3R0b206IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuY29udGFpbmVyLmxvYWRpbmcgewogICAgICAgIGN1cnNvcjogcHJvZ3Jlc3M7CiAgICAgICAgb3BhY2l0eTogMC4xOwogICAgICB9CgogICAgICAuY29udGFpbmVyLmxvYWRpbmcuZXJyb3IgewogICAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgfQoKICAgICAgI2luZm8gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogNXB4OwogICAgICAgIHRvcDogNXB4OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgICBtYXgtd2lkdGg6IDM4MHB4OwogICAgICAgIG1pbi13aWR0aDogMzIwcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwogICAgICB9CgogICAgICAjbWFpbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAjcHJvZ3Jlc3MtYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA0MHB4OwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3MtbXNnIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwOwogICAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgfQoKICAgICAgcGFwZXItcHJvZ3Jlc3MgewogICAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLWhlaWdodDogNnB4OwogICAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtYWN0aXZlLWNvbG9yOiAjZjM5MTNlOwogICAgICB9CgogICAgICAuY29udGV4dC1tZW51IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWluLXdpZHRoOiAxNTBweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDRkNGQ0OwogICAgICB9CgogICAgICAvZGVlcC8gLmNvbnRleHQtbWVudSB1bCB7CiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgbGkgewogICAgICAgIHBhZGRpbmc6IDRweCAxNnB4OwogICAgICB9CgogICAgICAvZGVlcC8gLmNvbnRleHQtbWVudSB1bCBsaTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzOTEzZTsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzTm90Q29tcGxldGUocHJvZ3Jlc3MpXV0iPgogICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1iYXIiPgogICAgICAgIDxkaXYgaWQ9InByb2dyZXNzLW1zZyI+W1twcm9ncmVzcy5tc2ddXTwvZGl2PgogICAgICAgIDxwYXBlci1wcm9ncmVzcyB2YWx1ZT0iW1twcm9ncmVzcy52YWx1ZV1dIj48L3BhcGVyLXByb2dyZXNzPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzJD0iW1tfZ2V0Q29udGFpbmVyQ2xhc3MocHJvZ3Jlc3MpXV0iPgogICAgICA8ZGl2IGlkPSJtYWluIj4KICAgICAgICA8dGYtZ3JhcGgKICAgICAgICAgIGlkPSJncmFwaCIKICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0ie3tncmFwaEhpZXJhcmNoeX19IgogICAgICAgICAgYmFzaWMtZ3JhcGg9IltbZ3JhcGhdXSIKICAgICAgICAgIGhpZXJhcmNoeS1wYXJhbXM9IltbaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJ7e3JlbmRlckhpZXJhcmNoeX19IgogICAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9IltbZGV2aWNlc0ZvclN0YXRzXV0iCiAgICAgICAgICBzdGF0cz0iW1tzdGF0c11dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7X2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJ7e2NvbG9yQnlQYXJhbXN9fSIKICAgICAgICAgIHByb2dyZXNzPSJ7e3Byb2dyZXNzfX0iCiAgICAgICAgICBlZGdlLWxhYmVsLWZ1bmN0aW9uPSJbW2VkZ2VMYWJlbEZ1bmN0aW9uXV0iCiAgICAgICAgICBlZGdlLXdpZHRoLWZ1bmN0aW9uPSJbW2VkZ2VXaWR0aEZ1bmN0aW9uXV0iCiAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iCiAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJbW2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIKICAgICAgICAgIGhhbmRsZS1ub2RlLXNlbGVjdGVkPSJbW2hhbmRsZU5vZGVTZWxlY3RlZF1dIgogICAgICAgICAgaGFuZGxlLWVkZ2Utc2VsZWN0ZWQ9IltbaGFuZGxlRWRnZVNlbGVjdGVkXV0iCiAgICAgICAgICB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSIKICAgICAgICAgIGF1dG8tZXh0cmFjdC1ub2Rlcz0iW1thdXRvRXh0cmFjdE5vZGVzXV0iCiAgICAgICAgPjwvdGYtZ3JhcGg+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJpbmZvIj4KICAgICAgICA8dGYtZ3JhcGgtaW5mbwogICAgICAgICAgaWQ9ImdyYXBoLWluZm8iCiAgICAgICAgICB0aXRsZT0ic2VsZWN0ZWQiCiAgICAgICAgICBncmFwaC1oaWVyYXJjaHk9IltbZ3JhcGhIaWVyYXJjaHldXSIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgICBncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGUtaW5jbHVkZT0ie3tfc2VsZWN0ZWROb2RlSW5jbHVkZX19IgogICAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0ie3tfaGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9IltbY29sb3JCeVBhcmFtc11dIgogICAgICAgICAgZGVidWdnZXItZGF0YS1lbmFibGVkPSJbW2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICAgIGFyZS1oZWFsdGgtcGlsbHMtbG9hZGluZz0iW1thcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgYWxsLXN0ZXBzLW1vZGUtZW5hYmxlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgICAgICBzcGVjaWZpYy1oZWFsdGgtcGlsbC1zdGVwPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgY29tcGF0LW5vZGUtdGl0bGU9IltbY29tcGF0Tm9kZVRpdGxlXV0iCiAgICAgICAgICBvbi1ub2RlLXRvZ2dsZS1pbmNsdXNpb249Il9vbk5vZGVJbmNsdXNpb25Ub2dnbGVkIgogICAgICAgICAgb24tbm9kZS10b2dnbGUtc2VyaWVzZ3JvdXA9Il9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQiCiAgICAgICAgPjwvdGYtZ3JhcGgtaW5mbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLERxdCldLGVZdC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLHFHdCldLGVZdC5wcm90b3R5cGUsImdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVZdC5wcm90b3R5cGUsImhpZXJhcmNoeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJzdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVZdC5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZVl0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZVl0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZVl0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIseVd0KV0sZVl0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZVl0LnByb3RvdHlwZSwiZGVidWdnZXJEYXRhRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVZdC5wcm90b3R5cGUsImFyZUhlYWx0aFBpbGxzTG9hZGluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGVZdC5wcm90b3R5cGUsImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGVZdC5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVZdC5wcm90b3R5cGUsInNwZWNpZmljSGVhbHRoUGlsbFN0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZVl0LnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZVl0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVZdC5wcm90b3R5cGUsImNvbXBhdE5vZGVUaXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJlZGdlV2lkdGhGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxlWXQucHJvdG90eXBlLCJfc2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlWXQucHJvdG90eXBlLCJfaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVZdC5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJlZGdlTGFiZWxGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlWXQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbYSgic2VsZWN0ZWROb2RlIiwicmVuZGVySGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlWXQucHJvdG90eXBlLCJfdXBkYXRlTm9kZUluY2x1ZGUiLG51bGwpLHQoW2EoImdyYXBoIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlWXQucHJvdG90eXBlLCJfc2xpbUdyYXBoQ2hhbmdlZCIsbnVsbCksdChbYSgiY29sb3JCeSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlWXQucHJvdG90eXBlLCJfZW5zdXJlVGVtcGxhdGVzIixudWxsKSxlWXQ9dChbaSgidGYtZ3JhcGgtYm9hcmQiKV0sZVl0KTtsZXQgbll0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmF3UmVnZXhJbnB1dD0iIix0aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ9IiIsdGhpcy5fc2VhcmNoVGltZW91dERlbGF5PTE1MCx0aGlzLl9tYXhSZWdleFJlc3VsdHM9NDJ9Z2V0IF9yZWdleElucHV0KCl7cmV0dXJuIHRoaXMuX3Jhd1JlZ2V4SW5wdXQudHJpbSgpfV9yZWdleElucHV0Q2hhbmdlZCgpe3RoaXMuX3JlcXVlc3RTZWFyY2goKX1fY2xlYXJTZWFyY2hSZXN1bHRzKCl7dGhpcy5zZXQoIl9yZWdleE1hdGNoZXMiLFtdKX1fcmVxdWVzdFNlYXJjaCgpe3RoaXMuX3NlYXJjaFBlbmRpbmd8fCh0aGlzLl9yZWdleElucHV0IT09dGhpcy5fcHJldmlvdXNSZWdleElucHV0Pyh0aGlzLl9zZWFyY2hQZW5kaW5nPSEwLHRoaXMuX2V4ZWN1dGVTZWFyY2goKSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuX3NlYXJjaFBlbmRpbmc9ITEsdGhpcy5fcmVxdWVzdFNlYXJjaCgpfSksdGhpcy5fc2VhcmNoVGltZW91dERlbGF5KSk6dGhpcy5fc2VhcmNoUGVuZGluZz0hMSl9X2V4ZWN1dGVTZWFyY2goKXtpZih0aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ9dGhpcy5fcmVnZXhJbnB1dCwhdGhpcy5fcmVnZXhJbnB1dClyZXR1cm4gdm9pZCB0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKTt0cnl7dmFyIHQ9bmV3IFJlZ0V4cCh0aGlzLl9yZWdleElucHV0KX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKX1jb25zdCBlPVtdLG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5LmdldE5vZGVNYXAoKTtTZS5leHBvcnRzLmVhY2gobiwoKG4saSk9PntpZihlLmxlbmd0aD49dGhpcy5fbWF4UmVnZXhSZXN1bHRzKXJldHVybiExO3QudGVzdChpKSYmZS5wdXNoKGkpfSkpLHRoaXMuc2V0KCJfcmVnZXhNYXRjaGVzIixlKX1fbWF0Y2hDbGlja2VkKHQpe3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQubW9kZWwuaXRlbSksVEd0KHthY3Rpb25JZDpfR3QuTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUR9KX19O25ZdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9InNlYXJjaC1jb250YWluZXIiPgogICAgICA8cGFwZXItaW5wdXQKICAgICAgICBpZD0icnVucy1yZWdleCIKICAgICAgICBsYWJlbD0iU2VhcmNoIG5vZGVzIChyZWdleCkiCiAgICAgICAgdmFsdWU9Int7X3Jhd1JlZ2V4SW5wdXR9fSIKICAgICAgPgogICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cy1hbmNob3IiPgogICAgICAgIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3JlZ2V4TWF0Y2hlc11dIj4KICAgICAgICAgICAgPGRpdiBpZD0ic2VhcmNoLW1hdGNoIiBvbi1jbGljaz0iX21hdGNoQ2xpY2tlZCI+W1tpdGVtXV08L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgICNzZWFyY2gtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgI3J1bnMtcmVnZXggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjc2VhcmNoLXJlc3VsdHMtYW5jaG9yIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtcmVzdWx0cyB7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAjc2VhcmNoLW1hdGNoIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlyZWN0aW9uOiBydGw7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtbWF0Y2g6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLW9yYW5nZS13ZWFrKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxuWXQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLG5ZdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxuWXQucHJvdG90eXBlLCJfcmF3UmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxuWXQucHJvdG90eXBlLCJfcHJldmlvdXNSZWdleElucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLG5ZdC5wcm90b3R5cGUsIl9zZWFyY2hUaW1lb3V0RGVsYXkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxuWXQucHJvdG90eXBlLCJfc2VhcmNoUGVuZGluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxuWXQucHJvdG90eXBlLCJfbWF4UmVnZXhSZXN1bHRzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxuWXQucHJvdG90eXBlLCJfcmVnZXhNYXRjaGVzIix2b2lkIDApLHQoW3MoInJlbmRlckhpZXJhcmNoeSIsIl9yYXdSZWdleElucHV0IiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbll0LnByb3RvdHlwZSwiX3JlZ2V4SW5wdXQiLG51bGwpLHQoW2EoIl9yZWdleElucHV0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxuWXQucHJvdG90eXBlLCJfcmVnZXhJbnB1dENoYW5nZWQiLG51bGwpLG5ZdD10KFtpKCJ0Zi1ncmFwaC1ub2RlLXNlYXJjaCIpXSxuWXQpO2NvbnN0IGlZdD0vZGV2aWNlOihbXjpdKzpbMC05XSspJC8scll0PVt7cmVnZXg6aVl0fV0sb1l0PVtdLGFZdD1uZXcgU2V0KFthcXQuQ09NUFVURV9USU1FLGFxdC5NRU1PUlldKTtsZXQgc1l0PWNsYXNzIGV4dGVuZHMoZXIoaWwoeWUpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuQ29sb3JCeT1hcXQsdGhpcy5zdGF0cz1udWxsLHRoaXMuZGV2aWNlc0ZvclN0YXRzPW51bGwsdGhpcy5jb2xvckJ5PWFxdC5TVFJVQ1RVUkUsdGhpcy5kYXRhc2V0cz1bXSx0aGlzLl9zZWxlY3RlZFJ1bkluZGV4PTAsdGhpcy50cmFjZUlucHV0cz0hMSx0aGlzLmF1dG9FeHRyYWN0Tm9kZXM9ITAsdGhpcy5fc2VsZWN0ZWRUYWdJbmRleD0wLHRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXlHdC5PUF9HUkFQSCx0aGlzLnNob3dTZXNzaW9uUnVuc0Ryb3Bkb3duPSEwLHRoaXMuc2hvd1VwbG9hZEJ1dHRvbj0hMCx0aGlzLl9sZWdlbmRPcGVuZWQ9ITAsdGhpcy5fZG93bmxvYWRGaWxlbmFtZT0iZ3JhcGgucG5nIn1fb25HcmFwaFR5cGVDaGFuZ2VkQnlVc2VyR2VzdHVyZSgpe1RHdCh7YWN0aW9uSWQ6X0d0LkdSQVBIX1RZUEVfQ0hBTkdFRCxldmVudExhYmVsOnRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlfSl9X29uQ29sb3JCeUNoYW5nZWRCeVVzZXJHZXN0dXJlKCl7VEd0KHthY3Rpb25JZDpfR3QuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQsZXZlbnRMYWJlbDp0aGlzLmNvbG9yQnl9KX1fb25UcmFjZUlucHV0c0NoYW5nZWRCeVVzZXJHZXN0dXJlKCl7VEd0KHthY3Rpb25JZDpfR3QuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEfSl9X3hsYUNsdXN0ZXJzUHJvdmlkZWQodCl7cmV0dXJuIHQmJnQuaGllcmFyY2h5JiZ0LmhpZXJhcmNoeS54bGFDbHVzdGVycy5sZW5ndGg+MH1fc3RhdHNDaGFuZ2VkKHQpe2lmKG51bGwhPXQpe3ZhciBlPXt9O1NlLmV4cG9ydHMuZWFjaCh0LmRldl9zdGF0cywoZnVuY3Rpb24odCl7dmFyIG49U2UuZXhwb3J0cy5zb21lKHJZdCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVnZXgudGVzdCh0LmRldmljZSl9KSksaT1TZS5leHBvcnRzLnNvbWUob1l0LChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdleC50ZXN0KHQuZGV2aWNlKX0pKTtuJiYhaSYmKGVbdC5kZXZpY2VdPSEwKX0pKSx0aGlzLnNldCgiZGV2aWNlc0ZvclN0YXRzIixlKX19Z2V0IF9jdXJyZW50RGV2aWNlcygpe3ZhciB0PXRoaXMuZGV2aWNlc0ZvclN0YXRzO2NvbnN0IGU9dGhpcy5zdGF0cyxuPShlP2UuZGV2X3N0YXRzOltdKS5tYXAoKHQ9PnQuZGV2aWNlKSkuZmlsdGVyKCh0PT5yWXQuc29tZSgoZT0+ZS5yZWdleC50ZXN0KHQpKSkpKSxpPXpHdChuKTtpZigxPT1pLmxlbmd0aCl7Y29uc3QgdD1pWzBdLm1hdGNoKGlZdCk7dCYmKGlbMF09dFsxXSl9cmV0dXJuIG4ubWFwKCgoZSxuKT0+e2xldCByPW51bGw7cmV0dXJuIG9ZdC5mb3JFYWNoKCh0PT57dC5yZWdleC50ZXN0KGUpJiYocj10Lm1zZyl9KSkse2RldmljZTplLHN1ZmZpeDppW25dLHVzZWQ6dFtlXSxpZ25vcmVkTXNnOnJ9fSkpfV9kZXZpY2VDaGVja2JveENsaWNrZWQodCl7Y29uc3QgZT10LnRhcmdldCxuPU9iamVjdC5hc3NpZ24oe30sdGhpcy5kZXZpY2VzRm9yU3RhdHMpLGk9ZS52YWx1ZTtlLmNoZWNrZWQ/bltpXT0hMDpkZWxldGUgbltpXSx0aGlzLnNldCgiZGV2aWNlc0ZvclN0YXRzIixuKX1fbnVtVGFncyh0LGUpe3JldHVybiB0aGlzLl9nZXRUYWdzKHQsZSkubGVuZ3RofV9nZXRUYWdzKHQsZSl7cmV0dXJuIHQmJnRbZV0/dFtlXS50YWdzOltdfV9maXQoKXt0aGlzLmZpcmUoImZpdC10YXAiKX1faXNHcmFkaWVudENvbG9yaW5nKHQsZSl7cmV0dXJuIGFZdC5oYXMoZSkmJm51bGwhPXR9X2VxdWFscyh0LGUpe3JldHVybiB0PT09ZX1nZXQgX2N1cnJlbnREZXZpY2VQYXJhbXMoKXtjb25zdCB0PXRoaXMuY29sb3JCeVBhcmFtcy5kZXZpY2UuZmlsdGVyKCh0PT5yWXQuc29tZSgoZT0+ZS5yZWdleC50ZXN0KHQuZGV2aWNlKSkpKSksZT16R3QodC5tYXAoKHQ9PnQuZGV2aWNlKSkpO2lmKDE9PWUubGVuZ3RoKXt2YXIgbj1lWzBdLm1hdGNoKGlZdCk7biYmKGVbMF09blsxXSl9cmV0dXJuIHQubWFwKCgodCxuKT0+KHtkZXZpY2U6ZVtuXSxjb2xvcjp0LmNvbG9yfSkpKX1nZXQgX2N1cnJlbnRYbGFDbHVzdGVyUGFyYW1zKCl7cmV0dXJuIHRoaXMuY29sb3JCeVBhcmFtcy54bGFfY2x1c3Rlcn1nZXQgX2N1cnJlbnRHcmFkaWVudFBhcmFtcygpe3ZhciB0PXRoaXMuY29sb3JCeVBhcmFtcyxlPXRoaXMuY29sb3JCeTtpZighdGhpcy5faXNHcmFkaWVudENvbG9yaW5nKHRoaXMuc3RhdHMsZSkpcmV0dXJuO2NvbnN0IG49dFtlXTtsZXQgaT1uLm1pblZhbHVlLHI9bi5tYXhWYWx1ZTtyZXR1cm4gZT09PWFxdC5NRU1PUlk/KGk9Ukd0KGksTkd0KSxyPVJHdChyLE5HdCkpOmU9PT1hcXQuQ09NUFVURV9USU1FJiYoaT1SR3QoaSxJR3QpLHI9Ukd0KHIsSUd0KSkse21pblZhbHVlOmksbWF4VmFsdWU6cixzdGFydENvbG9yOm4uc3RhcnRDb2xvcixlbmRDb2xvcjpuLmVuZENvbG9yfX1kb3dubG9hZCgpe3RoaXMuZmlyZSgiZG93bmxvYWQtaW1hZ2UtcmVxdWVzdGVkIix0aGlzLl9kb3dubG9hZEZpbGVuYW1lKX1fdXBkYXRlRmlsZUlucHV0KHQpe2NvbnN0IGU9dC50YXJnZXQuZmlsZXNbMF07aWYoIWUpcmV0dXJuO2xldCBuPWUubmFtZTtjb25zdCBpPW4ubGFzdEluZGV4T2YoIi4iKTtpPj0wJiYobj1uLnN1YnN0cmluZygwLGkpKTtjb25zdCByPW4ubGFzdEluZGV4T2YoIi8iKTtyPj0wJiYobj1uLnN1YnN0cmluZyhyKzEpKSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKG4pLHRoaXMuc2V0KCJzZWxlY3RlZEZpbGUiLHQpLFRHdCh7YWN0aW9uSWQ6X0d0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTX0pfV9kYXRhc2V0c0NoYW5nZWQodCxlKXt2YXIgbjtudWxsIT1lJiYodGhpcy5fc2VsZWN0ZWRSdW5JbmRleD0wKSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKG51bGw9PT0obj10aGlzLmRhdGFzZXRzW3RoaXMuX3NlbGVjdGVkUnVuSW5kZXhdKXx8dm9pZCAwPT09bj92b2lkIDA6bi5uYW1lKX1fY29tcHV0ZVNlbGVjdGlvbih0LGUsbixpKXtyZXR1cm4gdFtlXSYmdFtlXS50YWdzW25dP3tydW46dFtlXS5uYW1lLHRhZzp0W2VdLnRhZ3Nbbl0udGFnLHR5cGU6aX06bnVsbH1fc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQodCl7dmFyIGU7dGhpcy5kYXRhc2V0cyYmKHRoaXMuY29sb3JCeT1hcXQuU1RSVUNUVVJFLHRoaXMuX3NlbGVjdGVkVGFnSW5kZXg9MCx0aGlzLl9zZWxlY3RlZEdyYXBoVHlwZT10aGlzLl9nZXREZWZhdWx0U2VsZWN0aW9uVHlwZSgpLHRoaXMudHJhY2VJbnB1dHM9ITEsdGhpcy5fc2V0RG93bmxvYWRGaWxlbmFtZShudWxsPT09KGU9dGhpcy5kYXRhc2V0c1t0XSl8fHZvaWQgMD09PWU/dm9pZCAwOmUubmFtZSkpfV9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCgpe3RoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCl9X2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCl7Y29uc3R7ZGF0YXNldHM6dCxfc2VsZWN0ZWRSdW5JbmRleDplLF9zZWxlY3RlZFRhZ0luZGV4Om59PXRoaXM7aWYoIXR8fCF0W2VdfHwhdFtlXS50YWdzW25dfHx0W2VdLnRhZ3Nbbl0ub3BHcmFwaClyZXR1cm4geUd0Lk9QX0dSQVBIO2NvbnN0IGk9dFtlXTtyZXR1cm4gaS50YWdzW25dLnByb2ZpbGU/eUd0LlBST0ZJTEU6aS50YWdzW25dLmNvbmNlcHR1YWxHcmFwaD95R3QuQ09OQ0VQVFVBTF9HUkFQSDp5R3QuT1BfR1JBUEh9X2dldEZpbGUoKXt0aGlzLiQkKCIjZmlsZSIpLmNsaWNrKCl9X3NldERvd25sb2FkRmlsZW5hbWUodCl7dGhpcy5fZG93bmxvYWRGaWxlbmFtZT0odHx8ImdyYXBoIikrIi5wbmcifV9zdGF0c05vdE51bGwodCl7cmV0dXJuIG51bGwhPT10fV90b2dnbGVMZWdlbmRPcGVuKCl7dGhpcy5zZXQoIl9sZWdlbmRPcGVuZWQiLCF0aGlzLl9sZWdlbmRPcGVuZWQpfV9nZXRUb2dnbGVMZWdlbmRJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbW9yZSI6ImV4cGFuZC1sZXNzIn1fZ2V0U2VsZWN0aW9uT3BHcmFwaERpc2FibGVkKHQsZSxuKXtyZXR1cm4hdFtlXXx8IXRbZV0udGFnc1tuXXx8IXRbZV0udGFnc1tuXS5vcEdyYXBofV9nZXRTZWxlY3Rpb25Qcm9maWxlRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLnByb2ZpbGV9X2dldFNlbGVjdGlvbkNvbmNlcHR1YWxHcmFwaERpc2FibGVkKHQsZSxuKXtyZXR1cm4hdFtlXXx8IXRbZV0udGFnc1tuXXx8IXRbZV0udGFnc1tuXS5jb25jZXB0dWFsR3JhcGh9fTtzWXQudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtY29sb3I6ICMwMDA7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy1sZWdlbmQtdGV4dC1jb2xvcjogIzAwMDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3I6ICM1NTU7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlXy1fZm9udC1zaXplOiAxNHB4OwogICAgICAgIC0tcGFwZXItZm9udC1zdWJoZWFkXy1fZm9udC1zaXplOiAxNHB4OwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1jb2xvcjogI2ZmZjsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLWxlZ2VuZC10ZXh0LWNvbG9yOiAjZjNmM2YzOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcjogI2VlZTsKICAgICAgfQoKICAgICAgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgLS1wYXBlci1kcm9wZG93bi1tZW51LWlucHV0OiB7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgfQogICAgICAgIC0taXJvbi1pY29uLXdpZHRoOiAxNXB4OwogICAgICAgIC0taXJvbi1pY29uLWhlaWdodDogMTVweDsKICAgICAgICAtLXByaW1hcnktdGV4dC1jb2xvcjogZ3JheTsKICAgICAgICAtLXBhcGVyLWl0ZW0tbWluLWhlaWdodDogMzBweDsKICAgICAgfQoKICAgICAgcGFwZXItYnV0dG9uW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC5ydW4tZHJvcGRvd24gewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyOiB7CiAgICAgICAgICBwYWRkaW5nOiA1cHggMCA1cHggNXB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7CiAgICAgIH0KCiAgICAgIHRhYmxlIHRyIHsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIHRhYmxlIHRkIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIHsKICAgICAgICBwYWRkaW5nOiAwIDIwcHggMjBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1ob2xkZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNlY29uZGFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yKTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmxlZ2VuZC10b29sYmFyIHsKICAgICAgICBhcHBlYXJhbmNlOiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtbGVnZW5kLXRleHQtY29sb3IpOwogICAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmxlZ2VuZC10b29sYmFyLAogICAgICAubGVnZW5kLWNvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDhweCAyMHB4OwogICAgICB9CgogICAgICAudG9nZ2xlLWxlZ2VuZC1idXR0b24gewogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLXRleHQgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplKTsKICAgICAgfQoKICAgICAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgIH0KICAgICAgc3ZnLmljb24sCiAgICAgIHRmLWdyYXBoLWljb24gewogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgfQogICAgICAuZG9tYWluVmFsdWVzIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIHdpZHRoOiAxNjVweDsKICAgICAgfQogICAgICAuZG9tYWluU3RhcnQgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICAgIC5kb21haW5FbmQgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgfQogICAgICAuY29sb3JCb3ggewogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAuaW1hZ2UtaWNvbiB7CiAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICB9CgogICAgICAuaGVscC1pY29uIHsKICAgICAgICBoZWlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5ncmF5IHsKICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgfQoKICAgICAgLnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWZvbnQtc2l6ZSk7CiAgICAgICAgbWFyZ2luOiA4cHggNXB4IDhweCAwOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1jb2xvcik7CiAgICAgIH0KICAgICAgLnRpdGxlIHNtYWxsIHsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICB9CiAgICAgIC5kZXZpY2VMaXN0LAogICAgICAueGxhQ2x1c3Rlckxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNmaWxlIHsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICB9CgogICAgICAuY29sb3ItbGVnZW5kLXJvdyAubGFiZWwsCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IHN2ZywKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgZmxleDogMCAwIDQwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogICAgICB9CgogICAgICAuZGV2aWNlcy1jaGVja2JveCBpbnB1dCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICAuY29udHJvbC1ob2xkZXIgLmljb24tYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZSk7CiAgICAgICAgbWFyZ2luOiAwIC01cHg7CiAgICAgICAgcGFkZGluZzogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yKTsKICAgICAgfQoKICAgICAgLmJ1dHRvbi10ZXh0IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgIH0KCiAgICAgIC51cGxvYWQtYnV0dG9uIHsKICAgICAgICB3aWR0aDogMTY1cHg7CiAgICAgICAgaGVpZ2h0OiAyNXB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgfQoKICAgICAgLmJ1dHRvbi1pY29uIHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApOwogICAgICB9CgogICAgICAuaGlkZGVuLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyIHsKICAgICAgICBjbGVhcjogYm90aDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC5jb250cm9sLWhvbGRlci5jb250cm9sLW9wdGlvbnMgewogICAgICAgIHBhZGRpbmc6IDAgMCAxNXB4IDE1cHg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC5jb250cm9sLWhvbGRlciBwYXBlci10b2dnbGUtYnV0dG9uIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KCiAgICAgIHNwYW4uY291bnRlciB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICAgIGNvbG9yOiBncmF5OwogICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICAgIH0KCiAgICAgIC5ydW5zLXJvdyAudGl0bGUsCiAgICAgIC50YWdzLXJvdyAudGl0bGUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAucnVucy1yb3cgcGFwZXItaXRlbSwKICAgICAgLnRhZ3Mtcm93IHBhcGVyLWl0ZW0gewogICAgICAgIC0tcGFwZXItaXRlbTogewogICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHRhYmxlLmNvbnRyb2wtaG9sZGVyIHsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgfQoKICAgICAgdGFibGUudGYtZ3JhcGgtY29udHJvbHMgdGQuaW5wdXQtZWxlbWVudC10YWJsZS1kYXRhIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAyMHB4OwogICAgICB9CgogICAgICAuc3BhY2VyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KCiAgICAgIC5jb2xvci10ZXh0IHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuY29sb3ItdGV4dC5ncmFkaWVudC1jb250YWluZXIgewogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgIH0KCiAgICAgIC8qKiBPdmVycmlkZSBpbmxpbmUgc3R5bGVzIHRoYXQgc3VwcHJlc3MgcG9pbnRlciBldmVudHMgZm9yIGRpc2FibGVkIGJ1dHRvbnMuIE90aGVyd2lzZSwgdGhlICovCiAgICAgIC8qICB0b29sdGlwcyBkbyBub3QgYXBwZWFyLiAqLwogICAgICBwYXBlci1yYWRpby1ncm91cCBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtY2xhcmlmaWVyIHsKICAgICAgICBjb2xvcjogIzI2NjIzNjsKICAgICAgICBjdXJzb3I6IGhlbHA7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAubGVnZW5kLWNsYXJpZmllciBwYXBlci10b29sdGlwIHsKICAgICAgICB3aWR0aDogMTUwcHg7CiAgICAgIH0KCiAgICAgIC8qKiBPdGhlcndpc2UsIHBvbHltZXIgVUkgY29udHJvbHMgYXBwZWFyIGF0b3Agbm9kZSBzZWFyY2guICovCiAgICAgIHRmLWdyYXBoLW5vZGUtc2VhcmNoIHsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iYWxsY29udHJvbHMiPgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgPHRmLWdyYXBoLW5vZGUtc2VhcmNoCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICA+PC90Zi1ncmFwaC1ub2RlLXNlYXJjaD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8cGFwZXItYnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgb24tdGFwPSJfZml0IiBhbHQ9IkZpdCB0byBzY3JlZW4iPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJhc3BlY3QtcmF0aW8iIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPkZpdCB0byBzY3JlZW48L3NwYW4+CiAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgY2xhc3M9Imljb24tYnV0dG9uIgogICAgICAgICAgb24tY2xpY2s9ImRvd25sb2FkIgogICAgICAgICAgYWx0PSJEb3dubG9hZCBQTkciCiAgICAgICAgPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJmaWxlLWRvd25sb2FkIiBjbGFzcz0iYnV0dG9uLWljb24iPjwvaXJvbi1pY29uPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0Ij5Eb3dubG9hZCBQTkc8L3NwYW4+CiAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd1VwbG9hZEJ1dHRvbl1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgIGNsYXNzPSJpY29uLWJ1dHRvbiIKICAgICAgICAgICAgb24tY2xpY2s9Il9nZXRGaWxlIgogICAgICAgICAgICBhbHQ9IlVwbG9hZCBmaWxlIgogICAgICAgICAgICB0aXRsZT0iVXBsb2FkIGEgcGJ0eHQgZmlsZSB0byB2aWV3IGEgZ3JhcGggZnJvbSB0aGUgbG9jYWwgZmlsZXN5c3RlbSIKICAgICAgICAgID4KICAgICAgICAgICAgPGlyb24taWNvbiBpY29uPSJmaWxlLXVwbG9hZCIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0Ij5VcGxvYWQgZmlsZTwvc3Bhbj4KICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgoKICAgICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbi1pbnB1dCI+CiAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgIHR5cGU9ImZpbGUiCiAgICAgICAgICAgICAgaWQ9ImZpbGUiCiAgICAgICAgICAgICAgbmFtZT0iZmlsZSIKICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il91cGRhdGVGaWxlSW5wdXQiCiAgICAgICAgICAgICAgYWNjZXB0PSIucGJ0eHQiCiAgICAgICAgICAgIC8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgcnVucy1yb3ciPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICAgIFJ1biA8c3BhbiBjbGFzcz0iY291bnRlciI+KFtbZGF0YXNldHMubGVuZ3RoXV0pPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgbm8tYW5pbWF0aW9ucwogICAgICAgICAgbm9pbmsKICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgICBjbGFzcz0icnVuLWRyb3Bkb3duIgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRSdW5JbmRleH19IgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2RhdGFzZXRzXV0iPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPltbaXRlbS5uYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dTZXNzaW9uUnVuc0Ryb3Bkb3duXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIHRhZ3Mtcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICAgICAgVGFnCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudGVyIgogICAgICAgICAgICAgID4oW1tfbnVtVGFncyhkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgpXV0pPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICAgICAgbm8tYW5pbWF0aW9ucwogICAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgICAgICBub2luawogICAgICAgICAgICBjbGFzcz0icnVuLWRyb3Bkb3duIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFRhZ0luZGV4fX0iCiAgICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfZ2V0VGFncyhkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgpXV0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+W1tpdGVtLmRpc3BsYXlOYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+R3JhcGggdHlwZTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBjb250cm9sLW9wdGlvbnMiPgogICAgICAgIDxwYXBlci1yYWRpby1ncm91cAogICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkR3JhcGhUeXBlfX0iCiAgICAgICAgICBvbi1wYXBlci1yYWRpby1ncm91cC1jaGFuZ2VkPSJfb25HcmFwaFR5cGVDaGFuZ2VkQnlVc2VyR2VzdHVyZSIKICAgICAgICA+CiAgICAgICAgICA8IS0tIE5vdGUgdGhhdCB0aGUgbmFtZSBoYXMgdG8gbWF0Y2ggdGhhdCBvZiB0Zl9ncmFwaF9jb21tb24uU2VsZWN0aW9uVHlwZS4gLS0+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIG5hbWU9Im9wX2dyYXBoIgogICAgICAgICAgICBkaXNhYmxlZD0iW1tfZ2V0U2VsZWN0aW9uT3BHcmFwaERpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iCiAgICAgICAgICAgID5PcCBncmFwaDwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIG5hbWU9ImNvbmNlcHR1YWxfZ3JhcGgiCiAgICAgICAgICAgIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25Db25jZXB0dWFsR3JhcGhEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIgogICAgICAgICAgICA+Q29uY2VwdHVhbCBncmFwaDwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIG5hbWU9InByb2ZpbGUiCiAgICAgICAgICAgIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25Qcm9maWxlRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSIKICAgICAgICAgICAgPlByb2ZpbGU8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Tm9kZSBvcHRpb25zPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIGNvbnRyb2wtb3B0aW9ucyI+CiAgICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24KICAgICAgICAgIGNoZWNrZWQ9Int7dHJhY2VJbnB1dHN9fSIKICAgICAgICAgIG9uLWNoYW5nZT0iX29uVHJhY2VJbnB1dHNDaGFuZ2VkQnlVc2VyR2VzdHVyZSIKICAgICAgICA+CiAgICAgICAgICBUcmFjZSBpbnB1dHMKICAgICAgICA8L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24gY2hlY2tlZD0ie3thdXRvRXh0cmFjdE5vZGVzfX0iPgogICAgICAgICAgQXV0by1leHRyYWN0IGhpZ2gtZGVncmVlIG5vZGVzCiAgICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hlYWx0aFBpbGxzRmVhdHVyZUVuYWJsZWRdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24gY2hlY2tlZD0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IgogICAgICAgICAgICA+U2hvdyBoZWFsdGggcGlsbHM8L3BhcGVyLXRvZ2dsZS1idXR0b24KICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPkNvbG9yIGJ5PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIGNvbnRyb2wtb3B0aW9ucyI+CiAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICBzZWxlY3RlZD0ie3tjb2xvckJ5fX0iCiAgICAgICAgICBvbi1wYXBlci1yYWRpby1ncm91cC1jaGFuZ2VkPSJfb25Db2xvckJ5Q2hhbmdlZEJ5VXNlckdlc3R1cmUiCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJbW0NvbG9yQnkuTk9ORV1dIj5Ob25lPC9wYXBlci1yYWRpby1idXR0b24+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJbW0NvbG9yQnkuU1RSVUNUVVJFXV0iCiAgICAgICAgICAgID5TdHJ1Y3R1cmU8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iW1tDb2xvckJ5LkRFVklDRV1dIgogICAgICAgICAgICA+RGV2aWNlPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJ4bGEtY2x1c3Rlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgIG5hbWU9IltbQ29sb3JCeS5YTEFfQ0xVU1RFUl1dIgogICAgICAgICAgICBkaXNhYmxlZD0iW1shX3hsYUNsdXN0ZXJzUHJvdmlkZWQocmVuZGVySGllcmFyY2h5KV1dIgogICAgICAgICAgPgogICAgICAgICAgICBYTEEgY2x1c3RlcgogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgIGZvcj0ieGxhLWNsdXN0ZXItcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgWExBIGNsdXN0ZXIgaXMgb25seSBlbmFibGVkIGlmIGF0IGxlYXN0IDEgb3Agc3BlY2lmaWVzCiAgICAgICAgICAgIGFuIFhMQSBjbHVzdGVyLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9ImNvbXB1dGUtdGltZS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIG5hbWU9IltbQ29sb3JCeS5DT01QVVRFX1RJTUVdXSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbIXN0YXRzXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbXB1dGUgdGltZQogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgIGZvcj0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IGNvbXB1dGUgdGltZSBpcyBvbmx5IGVuYWJsZWQgaWYgdGhlIFJ1bk1ldGFkYXRhIHByb3RvIGlzCiAgICAgICAgICAgIHBhc3NlZCB0byB0aGUgRmlsZVdyaXRlciB3aGVuIGEgc3BlY2lmaWMgc2Vzc2lvbiBpcyBydW4uCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0ibWVtb3J5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5Lk1FTU9SWV1dIgogICAgICAgICAgICBkaXNhYmxlZD0iW1shc3RhdHNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgTWVtb3J5CiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJtZW1vcnktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgbWVtb3J5IGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgUnVuTWV0YWRhdGEgcHJvdG8gaXMKICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBGaWxlV3JpdGVyIHdoZW4gYSBzcGVjaWZpYyBzZXNzaW9uIGlzIHJ1bi4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJ0cHUtY29tcGF0aWJpbGl0eS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIG5hbWU9IltbQ29sb3JCeS5PUF9DT01QQVRJQklMSVRZXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIFRQVSBjb21wYXRpYmlsaXR5CiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJ0cHUtY29tcGF0aWJpbGl0eS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSB3aGV0aGVyIGFuIG9wZXJhdGlvbiBpcyBjb21wYXRpYmxlIGZvciB0aGUgVFBVIGRldmljZS4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgIDxzcGFuIGNsYXNzPSJzcGFjZXIiPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1ob2xkZXIiPgogICAgICA8YnV0dG9uIGNsYXNzPSJsZWdlbmQtdG9vbGJhciIgb24tY2xpY2s9Il90b2dnbGVMZWdlbmRPcGVuIj4KICAgICAgICA8c3BhbiBjbGFzcz0idG9nZ2xlLWxlZ2VuZC10ZXh0Ij5MZWdlbmQ8L3NwYW4+CiAgICAgICAgPGlyb24taWNvbgogICAgICAgICAgaWNvbj0iW1tfZ2V0VG9nZ2xlTGVnZW5kSWNvbihfbGVnZW5kT3BlbmVkKV1dIgogICAgICAgICAgY2xhc3M9InRvZ2dsZS1sZWdlbmQtYnV0dG9uIgogICAgICAgID4KICAgICAgICA8L2lyb24taWNvbj4KICAgICAgPC9idXR0b24+CiAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbGVnZW5kT3BlbmVkXV0iIGNsYXNzPSJsZWdlbmQtY29udGVudCI+CiAgICAgICAgPCEtLSBDb2xvci1tb2RlLXNwZWNpZmljIGxlZ2VuZCBpdGVtcyAtLT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc0dyYWRpZW50Q29sb3Jpbmcoc3RhdHMsIGNvbG9yQnkpXV0iPgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNDAiIGhlaWdodD0iMjAiIGNsYXNzPSJjb2xvci10ZXh0IGdyYWRpZW50LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgICAgICAgICAgaWQ9ImxpbmVhckdyYWRpZW50IgogICAgICAgICAgICAgICAgICB4MT0iMCUiCiAgICAgICAgICAgICAgICAgIHkxPSIwJSIKICAgICAgICAgICAgICAgICAgeDI9IjEwMCUiCiAgICAgICAgICAgICAgICAgIHkyPSIwJSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICBjbGFzcz0ic3RhcnQiCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwJSIKICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yJD0iW1tfY3VycmVudEdyYWRpZW50UGFyYW1zLnN0YXJ0Q29sb3JdXSIKICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iZW5kIgogICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMTAwJSIKICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yJD0iW1tfY3VycmVudEdyYWRpZW50UGFyYW1zLmVuZENvbG9yXV0iCiAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICA8cmVjdAogICAgICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICB3aWR0aD0iMTM1IgogICAgICAgICAgICAgICAgaGVpZ2h0PSIyMCIKICAgICAgICAgICAgICAgIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQpIgogICAgICAgICAgICAgICAgc3Ryb2tlPSJibGFjayIKICAgICAgICAgICAgICA+PC9yZWN0PgogICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluVmFsdWVzIGNvbG9yLXRleHQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpblN0YXJ0Ij5bW19jdXJyZW50R3JhZGllbnRQYXJhbXMubWluVmFsdWVdXTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpbkVuZCI+W1tfY3VycmVudEdyYWRpZW50UGFyYW1zLm1heFZhbHVlXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxiciBzdHlsZT0iY2xlYXI6IGJvdGgiIC8+CiAgICAgICAgICAgIDxkaXY+RGV2aWNlcyBpbmNsdWRlZCBpbiBzdGF0czo8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZGV2aWNlTGlzdCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudERldmljZXNdXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93IGRldmljZXMtY2hlY2tib3giPgogICAgICAgICAgICAgICAgICA8c3BhbgogICAgICAgICAgICAgICAgICAgID48aW5wdXQKICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ImNoZWNrYm94IgogICAgICAgICAgICAgICAgICAgICAgdmFsdWUkPSJbW2l0ZW0uZGV2aWNlXV0iCiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkJD0iW1tpdGVtLnVzZWRdXSIKICAgICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfZGV2aWNlQ2hlY2tib3hDbGlja2VkIgogICAgICAgICAgICAgICAgICAvPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHNwYW4+W1tpdGVtLnN1ZmZpeF1dPC9zcGFuPgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaXRlbS5pZ25vcmVkTXNnXV0iPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgICAgaWNvbj0iaGVscCIKICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJoZWxwLWljb24iCiAgICAgICAgICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgID5bW2l0ZW0uaWdub3JlZE1zZ11dPC9wYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ3N0cnVjdHVyZScpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci10ZXh0Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+IGNvbG9ycyA8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5zYW1lIHN1YnN0cnVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNlZWUiCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmlxdWUgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnZGV2aWNlJyldXSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudERldmljZVBhcmFtc11dIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSJbW2l0ZW0uY29sb3JdXSIKICAgICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNhNmE2YTYiCiAgICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPltbaXRlbS5kZXZpY2VdXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJNRVRBIgogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSIjZWVlIgogICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNhNmE2YTYiCiAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBkZXZpY2U8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICd4bGFfY2x1c3RlcicpXV0iPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2N1cnJlbnRYbGFDbHVzdGVyUGFyYW1zXV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICAgIDxzdmc+CiAgICAgICAgICAgICAgICAgICAgPHVzZQogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgICAgICAgICAgICB4bGluazpocmVmPSIjdW5maWxsZWQtcmVjdCIKICAgICAgICAgICAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImZpbGw6W1tpdGVtLmNvbG9yXV0iCiAgICAgICAgICAgICAgICAgICAgPjwvdXNlPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+W1tpdGVtLnhsYV9jbHVzdGVyXV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgICAgPHVzZQogICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNncmV5LXJlY3QiCiAgICAgICAgICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgICAgICA+PC91c2U+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVua25vd24gWExBIGNsdXN0ZXI8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdvcF9jb21wYXRpYmlsaXR5JyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXRleHQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iT1AiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiMwZjlkNTgiCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2NjYyIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5WYWxpZCBPcDwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik9QIgogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSIjZGI0NDM3IgogICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNjY2MiCiAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+SW52YWxpZCBPcDwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zdGF0c05vdE51bGwoc3RhdHMpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJNRVRBIiBoZWlnaHQ9IjE2IiBmYWRlZD48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW51c2VkIHN1YnN0cnVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIENvbW1vbiBsZWdlbmQgaXRlbXMgLS0+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDx0YWJsZT4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD48L3RkPgogICAgICAgICAgICAgICAgPHRkPigqID0gZXhwYW5kYWJsZSk8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSIjZDlkOWQ5IgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2NjYyIKICAgICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIE5hbWVzcGFjZTxzcGFuIGNsYXNzPSJncmF5Ij4qPC9zcGFuPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgRW5jYXBzdWxhdGVzIGEgc2V0IG9mIG5vZGVzLiBOYW1lc3BhY2UgaXMgaGllcmFyY2hpY2FsIGFuZAogICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gc2NvcGUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik9QIiBoZWlnaHQ9IjE2Ij48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBPcE5vZGUKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBwZXJmb3JtcyBhbiBvcGVyYXRpb24uIFRoZXNlIG5vZGVzIGNhbm5vdAogICAgICAgICAgICAgICAgICAgICAgZXhwYW5kLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJTRVJJRVMiIGhlaWdodD0iMTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIFVuY29ubmVjdGVkIHNlcmllczxzcGFuIGNsYXNzPSJncmF5Ij4qPC9zcGFuPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2Ugb2YgbnVtYmVyZWQgbm9kZXMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byBlYWNoCiAgICAgICAgICAgICAgICAgICAgICBvdGhlci4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgICB0eXBlPSJTRVJJRVMiCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbAogICAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkIHNlcmllczxzcGFuIGNsYXNzPSJncmF5Ij4qPC9zcGFuPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2Ugb2YgbnVtYmVyZWQgbm9kZXMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIGVhY2gKICAgICAgICAgICAgICAgICAgICAgIG90aGVyLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJpY29uIj4KICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlCiAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJ3aGl0ZSIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iIzg0ODQ4NCIKICAgICAgICAgICAgICAgICAgICAgIGN4PSIxMCIKICAgICAgICAgICAgICAgICAgICAgIGN5PSIxMCIKICAgICAgICAgICAgICAgICAgICAgIHI9IjUiCiAgICAgICAgICAgICAgICAgICAgPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIENvbnN0YW50CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBOb2RlIHRoYXQgb3V0cHV0cyBhIGNvbnN0YW50IHZhbHVlLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJTVU1NQVJZIiBoZWlnaHQ9IjIwIj48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBTdW1tYXJ5CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBOb2RlIHRoYXQgY29sbGVjdHMgZGF0YSBmb3IgdmlzdWFsaXphdGlvbiB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgIFRlbnNvckJvYXJkLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imljb24iCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNXB4IgogICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDE1IDE1IgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgICA8bWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbGVnZW5kIgogICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJXaWR0aD0iMTAiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckhlaWdodD0iMTAiCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZlg9IjkiCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZlk9IjUiCiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNIDAsMCBMIDEwLDUgTCAwLDEwIEMgMyw3IDMsMyAwLDAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgIDwvbWFya2VyPgogICAgICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgbWFya2VyLWVuZD0idXJsKCNkYXRhZmxvdy1hcnJvd2hlYWQtbGVnZW5kKSIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iI2JiYiIKICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yIDkgbCAyOSAwIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgRGF0YWZsb3cgZWRnZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgRWRnZSBzaG93aW5nIHRoZSBkYXRhIGZsb3cgYmV0d2VlbiBvcGVyYXRpb25zLiBFZGdlcyBmbG93CiAgICAgICAgICAgICAgICAgICAgICB1cHdhcmRzIHVubGVzcyBhcnJvd2hlYWRzIHNwZWNpZnkgb3RoZXJ3aXNlLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imljb24iCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNXB4IgogICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDE1IDE1IgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iI2JiYiIKICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yIDkgbCAyOSAwIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hhcnJheT0iMiwgMiIKICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIENvbnRyb2wgZGVwZW5kZW5jeSBlZGdlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFZGdlIHNob3dpbmcgdGhlIGNvbnRyb2wgZGVwZW5kZW5jeSBiZXR3ZWVuIG9wZXJhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgIDxtYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtbGVnZW5kIgogICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSIjRkZCNzREIgogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJXaWR0aD0iMTAiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlckhlaWdodD0iMTAiCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZlg9IjkiCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZlk9IjUiCiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNIDAsMCBMIDEwLDUgTCAwLDEwIEMgMyw3IDMsMyAwLDAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgIDwvbWFya2VyPgogICAgICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgbWFya2VyLWVuZD0idXJsKCNyZWZlcmVuY2UtYXJyb3doZWFkLWxlZ2VuZCkiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9IiNGRkI3NEQiCiAgICAgICAgICAgICAgICAgICAgICBkPSJNMiA5IGwgMjkgMCIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBlZGdlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFZGdlIHNob3dpbmcgdGhhdCB0aGUgb3V0Z29pbmcgb3BlcmF0aW9uIG5vZGUgY2FuIG11dGF0ZQogICAgICAgICAgICAgICAgICAgICAgdGhlIGluY29taW5nIHRlbnNvci4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX3N0YXRzQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc1l0LnByb3RvdHlwZSwic3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHNZdC5wcm90b3R5cGUsImRldmljZXNGb3JTdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc1l0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc1l0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG9ic2VydmVyOiJfZGF0YXNldHNDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzWXQucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIix5V3QpXSxzWXQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVNlbGVjdGlvbihkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4LCBfc2VsZWN0ZWRHcmFwaFR5cGUpIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzWXQucHJvdG90eXBlLCJzZWxlY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHNZdC5wcm90b3R5cGUsInNlbGVjdGVkRmlsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX3NlbGVjdGVkUnVuSW5kZXhDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxzWXQucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5JbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxzWXQucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxzWXQucHJvdG90eXBlLCJhdXRvRXh0cmFjdE5vZGVzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG9ic2VydmVyOiJfc2VsZWN0ZWRUYWdJbmRleENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHNZdC5wcm90b3R5cGUsIl9zZWxlY3RlZFRhZ0luZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHNZdC5wcm90b3R5cGUsIl9zZWxlY3RlZEdyYXBoVHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc1l0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc1l0LnByb3RvdHlwZSwic2hvd1Nlc3Npb25SdW5zRHJvcGRvd24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxzWXQucHJvdG90eXBlLCJzaG93VXBsb2FkQnV0dG9uIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc1l0LnByb3RvdHlwZSwiaGVhbHRoUGlsbHNGZWF0dXJlRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxzWXQucHJvdG90eXBlLCJoZWFsdGhQaWxsc1RvZ2dsZWRPbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHNZdC5wcm90b3R5cGUsIl9sZWdlbmRPcGVuZWQiLHZvaWQgMCksdChbcygiZGV2aWNlc0ZvclN0YXRzIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxzWXQucHJvdG90eXBlLCJfY3VycmVudERldmljZXMiLG51bGwpLHQoW3MoImNvbG9yQnlQYXJhbXMiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHNZdC5wcm90b3R5cGUsIl9jdXJyZW50RGV2aWNlUGFyYW1zIixudWxsKSx0KFtzKCJjb2xvckJ5UGFyYW1zIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxzWXQucHJvdG90eXBlLCJfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXMiLG51bGwpLHQoW3MoImNvbG9yQnlQYXJhbXMiLCJjb2xvckJ5IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sc1l0LnByb3RvdHlwZSwiX2N1cnJlbnRHcmFkaWVudFBhcmFtcyIsbnVsbCksc1l0PXQoW2koInRmLWdyYXBoLWNvbnRyb2xzIildLHNZdCk7Y2xhc3MgbFl0e2lzTm90VHB1T3AodCl7cmV0dXJuLTEhPXQudG9Mb3dlckNhc2UoKS5zZWFyY2goImNwdToiKXx8LTEhPXQudG9Mb3dlckNhc2UoKS5zZWFyY2goImdwdToiKXx8LTE9PXQudG9Mb3dlckNhc2UoKS5zZWFyY2goInRwdSIpfW9wVmFsaWQodCl7cmV0dXJuIDA9PXQubmFtZS5zZWFyY2goVkd0KXx8IXQub3B8fCEoIXQuZGV2aWNlfHwhdGhpcy5pc05vdFRwdU9wKHQuZGV2aWNlKSl8fCEoIXQuZGV2aWNlfHwtMT09dC5kZXZpY2Uuc2VhcmNoKCJUUFVfU1lTVEVNIikpfHxTZS5leHBvcnRzLmluY2x1ZGVzKGxZdC5XSElURUxJU1QsdC5vcCl9fWZ1bmN0aW9uIGNZdCh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLG4pPT57ZmV0Y2godCkudGhlbigodD0+e3Qub2s/dC5hcnJheUJ1ZmZlcigpLnRoZW4oZSxuKTp0LnRleHQoKS50aGVuKG4sbil9KSl9KSl9bFl0LldISVRFTElTVD1bIkFicyIsIkFjb3MiLCJBY29zaCIsIkFkZCIsIkFkZE4iLCJBZGRWMiIsIkFkanVzdENvbnRyYXN0djIiLCJBZGp1c3RIdWUiLCJBZGp1c3RTYXR1cmF0aW9uIiwiQWxsIiwiQWxsVG9BbGwiLCJBbmdsZSIsIkFueSIsIkFwcHJveGltYXRlRXF1YWwiLCJBcmdNYXgiLCJBcmdNaW4iLCJBc2luIiwiQXNpbmgiLCJBc3NlcnQiLCJBc3NpZ25BZGRWYXJpYWJsZU9wIiwiQXNzaWduU3ViVmFyaWFibGVPcCIsIkFzc2lnblZhcmlhYmxlT3AiLCJBdGFuIiwiQXRhbjIiLCJBdGFuaCIsIkF2Z1Bvb2wiLCJBdmdQb29sM0QiLCJBdmdQb29sM0RHcmFkIiwiQXZnUG9vbEdyYWQiLCJCYXRjaE1hdE11bCIsIkJhdGNoTWF0TXVsVjIiLCJCYXRjaFRvU3BhY2UiLCJCYXRjaFRvU3BhY2VORCIsIkJlc3NlbEkwZSIsIkJlc3NlbEkxZSIsIkJldGFpbmMiLCJCaWFzQWRkIiwiQmlhc0FkZEdyYWQiLCJCaWFzQWRkVjEiLCJCaXRjYXN0IiwiQml0d2lzZUFuZCIsIkJpdHdpc2VPciIsIkJpdHdpc2VYb3IiLCJCcm9hZGNhc3RBcmdzIiwiQnJvYWRjYXN0R3JhZGllbnRBcmdzIiwiQnJvYWRjYXN0VG8iLCJCdWNrZXRpemUiLCJDYXNlIiwiQ2FzdCIsIkNlaWwiLCJDaGVja051bWVyaWNzIiwiQ2hvbGVza3kiLCJDbGlwQnlWYWx1ZSIsIkNvbGxlY3RpdmVQZXJtdXRlIiwiQ29sbGVjdGl2ZVJlZHVjZVYyIiwiQ29tcGxleCIsIkNvbXBsZXhBYnMiLCJDb25jYXQiLCJDb25jYXRPZmZzZXQiLCJDb25jYXRWMiIsIkNvbmoiLCJDb25qdWdhdGVUcmFuc3Bvc2UiLCJDb25zdCIsIkNvbnRyb2xUcmlnZ2VyIiwiQ29udjJEIiwiQ29udjJEQmFja3Byb3BGaWx0ZXIiLCJDb252MkRCYWNrcHJvcElucHV0IiwiQ29udjNEIiwiQ29udjNEQmFja3Byb3BGaWx0ZXJWMiIsIkNvbnYzREJhY2twcm9wSW5wdXRWMiIsIkNvcyIsIkNvc2giLCJDcm9zcyIsIkNyb3NzUmVwbGljYVN1bSIsIkN1bXByb2QiLCJDdW1zdW0iLCJEYXRhRm9ybWF0RGltTWFwIiwiRGF0YUZvcm1hdFZlY1Blcm11dGUiLCJEZXB0aFRvU3BhY2UiLCJEZXB0aHdpc2VDb252MmROYXRpdmUiLCJEZXB0aHdpc2VDb252MmROYXRpdmVCYWNrcHJvcEZpbHRlciIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZUJhY2twcm9wSW5wdXQiLCJEZXF1YW50aXplIiwiRGV2aWNlSW5kZXgiLCJEaWFnIiwiRGlhZ1BhcnQiLCJEaWdhbW1hIiwiRGl2IiwiRGl2Tm9OYW4iLCJEeW5hbWljU3RpdGNoIiwiRWluc3VtIiwiRWx1IiwiRWx1R3JhZCIsIkVtcHR5IiwiRW1wdHlUZW5zb3JMaXN0IiwiRW5zdXJlU2hhcGUiLCJFcXVhbCIsIkVyZiIsIkVyZmMiLCJFcmZpbnYiLCJFeHAiLCJFeHBhbmREaW1zIiwiRXhwbTEiLCJFeHRyYWN0SW1hZ2VQYXRjaGVzIiwiRkZUIiwiRkZUMkQiLCJGRlQzRCIsIkZha2VQYXJhbSIsIkZha2VRdWFudFdpdGhNaW5NYXhBcmdzIiwiRmFrZVF1YW50V2l0aE1pbk1heEFyZ3NHcmFkaWVudCIsIkZha2VRdWFudFdpdGhNaW5NYXhWYXJzIiwiRmFrZVF1YW50V2l0aE1pbk1heFZhcnNHcmFkaWVudCIsIkZpbGwiLCJGbG9vciIsIkZsb29yRGl2IiwiRmxvb3JNb2QiLCJGdXNlZEJhdGNoTm9ybSIsIkZ1c2VkQmF0Y2hOb3JtR3JhZCIsIkZ1c2VkQmF0Y2hOb3JtR3JhZFYyIiwiRnVzZWRCYXRjaE5vcm1HcmFkVjMiLCJGdXNlZEJhdGNoTm9ybVYyIiwiRnVzZWRCYXRjaE5vcm1WMyIsIkdhdGhlciIsIkdhdGhlck5kIiwiR2F0aGVyVjIiLCJHZXRJdGVtIiwiR3JlYXRlciIsIkdyZWF0ZXJFcXVhbCIsIkhTVlRvUkdCIiwiSUZGVCIsIklGRlQyRCIsIklGRlQzRCIsIklSRkZUIiwiSVJGRlQyRCIsIklSRkZUM0QiLCJJZGVudGl0eSIsIklkZW50aXR5TiIsIklmIiwiSWdhbW1hIiwiSWdhbW1hR3JhZEEiLCJJZ2FtbWFjIiwiSW1hZyIsIkluVG9wS1YyIiwiSW5mZWVkRGVxdWV1ZSIsIkluZmVlZERlcXVldWVUdXBsZSIsIklucGxhY2VBZGQiLCJJbnBsYWNlVXBkYXRlIiwiSW52IiwiSW52ZXJ0IiwiSW52ZXJ0UGVybXV0YXRpb24iLCJJc0Zpbml0ZSIsIklzSW5mIiwiSXNOYW4iLCJLdGhPcmRlclN0YXRpc3RpYyIsIkwyTG9zcyIsIkxSTiIsIkxSTkdyYWQiLCJMZWFreVJlbHUiLCJMZWFreVJlbHVHcmFkIiwiTGVmdFNoaWZ0IiwiTGVzcyIsIkxlc3NFcXVhbCIsIkxnYW1tYSIsIkxpblNwYWNlIiwiTGlzdERpZmYiLCJMb2ciLCJMb2cxcCIsIkxvZ1NvZnRtYXgiLCJMb2dpY2FsQW5kIiwiTG9naWNhbE5vdCIsIkxvZ2ljYWxPciIsIkxvd2VyQm91bmQiLCJNYWtlVW5pcXVlIiwiTWF0TXVsIiwiTWF0cml4QmFuZFBhcnQiLCJNYXRyaXhEaWFnIiwiTWF0cml4RGlhZ1BhcnQiLCJNYXRyaXhEaWFnUGFydFYyIiwiTWF0cml4RGlhZ1BhcnRWMyIsIk1hdHJpeERpYWdWMiIsIk1hdHJpeERpYWdWMyIsIk1hdHJpeEludmVyc2UiLCJNYXRyaXhTZXREaWFnIiwiTWF0cml4U2V0RGlhZ1YyIiwiTWF0cml4U2V0RGlhZ1YzIiwiTWF0cml4U29sdmUiLCJNYXRyaXhUcmlhbmd1bGFyU29sdmUiLCJNYXgiLCJNYXhQb29sIiwiTWF4UG9vbDNEIiwiTWF4UG9vbDNER3JhZCIsIk1heFBvb2wzREdyYWRHcmFkIiwiTWF4UG9vbEdyYWQiLCJNYXhQb29sR3JhZEdyYWQiLCJNYXhQb29sR3JhZEdyYWRWMiIsIk1heFBvb2xHcmFkVjIiLCJNYXhQb29sVjIiLCJNYXhpbXVtIiwiTWVhbiIsIk1pbiIsIk1pbmltdW0iLCJNaXJyb3JQYWQiLCJNaXJyb3JQYWRHcmFkIiwiTW9kIiwiTXVsIiwiTXVsTm9OYW4iLCJNdWx0aW5vbWlhbCIsIk5kdHJpIiwiTmVnIiwiTmV4dEFmdGVyIiwiTm9PcCIsIk5vbk1heFN1cHByZXNzaW9uVjQiLCJOb3RFcXVhbCIsIk9uZUhvdCIsIk9uZXNMaWtlIiwiT3V0ZmVlZEVucXVldWUiLCJPdXRmZWVkRW5xdWV1ZVR1cGxlIiwiUGFjayIsIlBhZCIsIlBhZFYyIiwiUGFyYWxsZWxEeW5hbWljU3RpdGNoIiwiUGFyYW1ldGVyaXplZFRydW5jYXRlZE5vcm1hbCIsIlBhcnRpdGlvbmVkQ2FsbCIsIlBsYWNlaG9sZGVyV2l0aERlZmF1bHQiLCJQb2x5Z2FtbWEiLCJQb3B1bGF0aW9uQ291bnQiLCJQb3ciLCJQcmV2ZW50R3JhZGllbnQiLCJQcm9kIiwiUXIiLCJRdWFudGl6ZUFuZERlcXVhbnRpemVWMiIsIlF1YW50aXplQW5kRGVxdWFudGl6ZVYzIiwiUkZGVCIsIlJGRlQyRCIsIlJGRlQzRCIsIlJHQlRvSFNWIiwiUmFuZG9tR2FtbWFHcmFkIiwiUmFuZG9tU2h1ZmZsZSIsIlJhbmRvbVN0YW5kYXJkTm9ybWFsIiwiUmFuZG9tVW5pZm9ybSIsIlJhbmRvbVVuaWZvcm1JbnQiLCJSYW5nZSIsIlJhbmsiLCJSZWFkVmFyaWFibGVPcCIsIlJlYWwiLCJSZWFsRGl2IiwiUmVjaXByb2NhbCIsIlJlY2lwcm9jYWxHcmFkIiwiUmVsdSIsIlJlbHU2IiwiUmVsdTZHcmFkIiwiUmVsdUdyYWQiLCJSZXNoYXBlIiwiUmVzaXplQmlsaW5lYXIiLCJSZXNpemVCaWxpbmVhckdyYWQiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3IiLCJSZXNpemVOZWFyZXN0TmVpZ2hib3JHcmFkIiwiUmVzb3VyY2VBcHBseUFkYU1heCIsIlJlc291cmNlQXBwbHlBZGFkZWx0YSIsIlJlc291cmNlQXBwbHlBZGFncmFkIiwiUmVzb3VyY2VBcHBseUFkYWdyYWREQSIsIlJlc291cmNlQXBwbHlBZGFncmFkVjIiLCJSZXNvdXJjZUFwcGx5QWRhbSIsIlJlc291cmNlQXBwbHlBZGRTaWduIiwiUmVzb3VyY2VBcHBseUNlbnRlcmVkUk1TUHJvcCIsIlJlc291cmNlQXBwbHlGdHJsIiwiUmVzb3VyY2VBcHBseUZ0cmxWMiIsIlJlc291cmNlQXBwbHlHcmFkaWVudERlc2NlbnQiLCJSZXNvdXJjZUFwcGx5S2VyYXNNb21lbnR1bSIsIlJlc291cmNlQXBwbHlNb21lbnR1bSIsIlJlc291cmNlQXBwbHlQb3dlclNpZ24iLCJSZXNvdXJjZUFwcGx5UHJveGltYWxBZGFncmFkIiwiUmVzb3VyY2VBcHBseVByb3hpbWFsR3JhZGllbnREZXNjZW50IiwiUmVzb3VyY2VBcHBseVJNU1Byb3AiLCJSZXNvdXJjZUdhdGhlciIsIlJlc291cmNlU2NhdHRlckFkZCIsIlJlc291cmNlU2NhdHRlckRpdiIsIlJlc291cmNlU2NhdHRlck1heCIsIlJlc291cmNlU2NhdHRlck1pbiIsIlJlc291cmNlU2NhdHRlck11bCIsIlJlc291cmNlU2NhdHRlck5kQWRkIiwiUmVzb3VyY2VTY2F0dGVyTmRTdWIiLCJSZXNvdXJjZVNjYXR0ZXJOZFVwZGF0ZSIsIlJlc291cmNlU2NhdHRlclN1YiIsIlJlc291cmNlU2NhdHRlclVwZGF0ZSIsIlJlc291cmNlU3RyaWRlZFNsaWNlQXNzaWduIiwiUmV2ZXJzZSIsIlJldmVyc2VTZXF1ZW5jZSIsIlJldmVyc2VWMiIsIlJpZ2h0U2hpZnQiLCJSaW50IiwiUm5nUmVhZEFuZFNraXAiLCJSbmdTa2lwIiwiUm9sbCIsIlJvdW5kIiwiUnNxcnQiLCJSc3FydEdyYWQiLCJTY2F0dGVyTmQiLCJTZWxlY3QiLCJTZWxlY3RWMiIsIlNlbGZBZGpvaW50RWlnVjIiLCJTZWx1IiwiU2VsdUdyYWQiLCJTaGFwZSIsIlNoYXBlTiIsIlNpZ21vaWQiLCJTaWdtb2lkR3JhZCIsIlNpZ24iLCJTaW4iLCJTaW5oIiwiU2l6ZSIsIlNsaWNlIiwiU25hcHNob3QiLCJTb2Z0bWF4IiwiU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMiLCJTb2Z0cGx1cyIsIlNvZnRwbHVzR3JhZCIsIlNvZnRzaWduIiwiU29mdHNpZ25HcmFkIiwiU3BhY2VUb0JhdGNoIiwiU3BhY2VUb0JhdGNoTkQiLCJTcGFjZVRvRGVwdGgiLCJTcGFyc2VNYXRNdWwiLCJTcGFyc2VTb2Z0bWF4Q3Jvc3NFbnRyb3B5V2l0aExvZ2l0cyIsIlNwYXJzZVRvRGVuc2UiLCJTcGxpdCIsIlNwbGl0ViIsIlNxcnQiLCJTcXJ0R3JhZCIsIlNxdWFyZSIsIlNxdWFyZWREaWZmZXJlbmNlIiwiU3F1ZWV6ZSIsIlN0YWNrQ2xvc2VWMiIsIlN0YWNrUG9wVjIiLCJTdGFja1B1c2hWMiIsIlN0YWNrVjIiLCJTdGF0ZWZ1bFBhcnRpdGlvbmVkQ2FsbCIsIlN0YXRlZnVsU3RhbmRhcmROb3JtYWxWMiIsIlN0YXRlZnVsVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVmdWxVbmlmb3JtIiwiU3RhdGVmdWxVbmlmb3JtRnVsbEludCIsIlN0YXRlZnVsVW5pZm9ybUludCIsIlN0YXRlbGVzc0Nhc2UiLCJTdGF0ZWxlc3NJZiIsIlN0YXRlbGVzc011bHRpbm9taWFsIiwiU3RhdGVsZXNzUmFuZG9tR2V0QWxnIiwiU3RhdGVsZXNzUmFuZG9tR2V0S2V5Q291bnRlciIsIlN0YXRlbGVzc1JhbmRvbUdldEtleUNvdW50ZXJBbGciLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWwiLCJTdGF0ZWxlc3NSYW5kb21Ob3JtYWxWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm0iLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtRnVsbEludCIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1GdWxsSW50VjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtSW50IiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUludFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybVYyIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsIiwiU3RhdGVsZXNzVHJ1bmNhdGVkTm9ybWFsVjIiLCJTdGF0ZWxlc3NXaGlsZSIsIlN0b3BHcmFkaWVudCIsIlN0cmlkZWRTbGljZSIsIlN0cmlkZWRTbGljZUdyYWQiLCJTdWIiLCJTdW0iLCJTdmQiLCJTeW1ib2xpY0dyYWRpZW50IiwiVFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJUYW4iLCJUYW5oIiwiVGFuaEdyYWQiLCJUZW5zb3JBcnJheUNsb3NlVjMiLCJUZW5zb3JBcnJheUNvbmNhdFYzIiwiVGVuc29yQXJyYXlHYXRoZXJWMyIsIlRlbnNvckFycmF5R3JhZFYzIiwiVGVuc29yQXJyYXlSZWFkVjMiLCJUZW5zb3JBcnJheVNjYXR0ZXJWMyIsIlRlbnNvckFycmF5U2l6ZVYzIiwiVGVuc29yQXJyYXlTcGxpdFYzIiwiVGVuc29yQXJyYXlWMyIsIlRlbnNvckFycmF5V3JpdGVWMyIsIlRlbnNvckxpc3RDb25jYXRWMiIsIlRlbnNvckxpc3RFbGVtZW50U2hhcGUiLCJUZW5zb3JMaXN0RnJvbVRlbnNvciIsIlRlbnNvckxpc3RHYXRoZXIiLCJUZW5zb3JMaXN0R2V0SXRlbSIsIlRlbnNvckxpc3RMZW5ndGgiLCJUZW5zb3JMaXN0UG9wQmFjayIsIlRlbnNvckxpc3RQdXNoQmFjayIsIlRlbnNvckxpc3RSZXNlcnZlIiwiVGVuc29yTGlzdFNldEl0ZW0iLCJUZW5zb3JMaXN0U3BsaXQiLCJUZW5zb3JMaXN0U3RhY2siLCJUZW5zb3JTY2F0dGVyQWRkIiwiVGVuc29yU2NhdHRlck1heCIsIlRlbnNvclNjYXR0ZXJNaW4iLCJUZW5zb3JTY2F0dGVyU3ViIiwiVGVuc29yU2NhdHRlclVwZGF0ZSIsIlRlbnNvclN0cmlkZWRTbGljZVVwZGF0ZSIsIlRpbGUiLCJUb3BLVW5pcXVlIiwiVG9wS1YyIiwiVG9wS1dpdGhVbmlxdWUiLCJUcmFuc3Bvc2UiLCJUcmlkaWFnb25hbFNvbHZlIiwiVHJ1bmNhdGVEaXYiLCJUcnVuY2F0ZU1vZCIsIlRydW5jYXRlZE5vcm1hbCIsIlVuaXF1ZSIsIlVucGFjayIsIlVuc29ydGVkU2VnbWVudE1heCIsIlVuc29ydGVkU2VnbWVudE1pbiIsIlVuc29ydGVkU2VnbWVudFByb2QiLCJVbnNvcnRlZFNlZ21lbnRTdW0iLCJVcHBlckJvdW5kIiwiVmFySXNJbml0aWFsaXplZE9wIiwiVmFyaWFibGVTaGFwZSIsIldoZXJlIiwiV2hpbGUiLCJYZGl2eSIsIlhsYUJyb2FkY2FzdEhlbHBlciIsIlhsYUNvbnYiLCJYbGFDb252VjIiLCJYbGFEZXF1YW50aXplIiwiWGxhRG90IiwiWGxhRG90VjIiLCJYbGFEeW5hbWljU2xpY2UiLCJYbGFEeW5hbWljVXBkYXRlU2xpY2UiLCJYbGFFaW5zdW0iLCJYbGFHYXRoZXIiLCJYbGFIb3N0Q29tcHV0ZSIsIlhsYUlmIiwiWGxhS2V5VmFsdWVTb3J0IiwiWGxhUGFkIiwiWGxhUmVjdiIsIlhsYVJlY3ZGcm9tSG9zdCIsIlhsYVJlZHVjZSIsIlhsYVJlZHVjZVdpbmRvdyIsIlhsYVJlcGxpY2FJZCIsIlhsYVNjYXR0ZXIiLCJYbGFTZWxlY3RBbmRTY2F0dGVyIiwiWGxhU2VsZkFkam9pbnRFaWciLCJYbGFTZW5kIiwiWGxhU2VuZFRvSG9zdCIsIlhsYVNldEJvdW5kIiwiWGxhU2V0RHluYW1pY0RpbWVuc2lvblNpemUiLCJYbGFTaGFyZGluZyIsIlhsYVNvcnQiLCJYbGFTcG1kRnVsbFRvU2hhcmRTaGFwZSIsIlhsYVNwbWRTaGFyZFRvRnVsbFNoYXBlIiwiWGxhU3ZkIiwiWGxhVmFyaWFkaWNSZWR1Y2UiLCJYbGFWYXJpYWRpY1NvcnQiLCJYbGFXaGlsZSIsIlhsb2cxcHkiLCJYbG9neSIsIlplcm9zTGlrZSIsIlpldGEiLCJFbnRlciIsIkV4aXQiLCJMb29wQ29uZCIsIk1lcmdlIiwiTmV4dEl0ZXJhdGlvbiIsIlN3aXRjaCIsIl9BcmciLCJfQXJyYXlUb0xpc3QiLCJfRnVzZWRCYXRjaE5vcm1FeCIsIl9MaXN0VG9BcnJheSIsIl9QYXJhbGxlbENvbmNhdFVwZGF0ZSIsIl9SZWN2VFBVRW1iZWRkaW5nQWN0aXZhdGlvbnMiLCJfUmVjdlRQVUVtYmVkZGluZ0RlZHVwbGljYXRpb25EYXRhIiwiX1JldHZhbCIsIl9TZW5kVFBVRW1iZWRkaW5nR3JhZGllbnRzIiwiX1RQVUNvbXBpbGUiLCJfVFBVRXhlY3V0ZSIsIl9VbmFyeU9wc0NvbXBvc2l0aW9uIiwiVFBVQ29tcGlsYXRpb25SZXN1bHQiLCJUUFVSZXBsaWNhdGVkSW5wdXQiLCJUUFVSZXBsaWNhdGVkT3V0cHV0IiwiVFBVUmVwbGljYXRlTWV0YWRhdGEiLCJNZXJnZVYyQ2hlY2twb2ludHMiLCJSZXN0b3JlVjIiLCJTYXZlVjIiLCJBYm9ydCIsIkFzc2VydCIsIkFzc2lnbiIsIlBsYWNlaG9sZGVyIiwiUGxhY2Vob2xkZXJWMiIsIlNoYXJkZWRGaWxlbmFtZSIsIlN0cmluZ0pvaW4iLCJWYXJpYWJsZSIsIlZhcmlhYmxlVjIiLCJWYXJIYW5kbGVPcCIsIkF1ZGlvU3VtbWFyeSIsIkF1ZGlvU3VtbWFyeVYyIiwiRGVidWdOdW1lcmljU3VtbWFyeSIsIkhpc3RvZ3JhbVN1bW1hcnkiLCJJbWFnZVN1bW1hcnkiLCJNZXJnZVN1bW1hcnkiLCJTY2FsYXJTdW1tYXJ5IiwiU3RhdHNBZ2dyZWdhdG9yU3VtbWFyeSJdO2NvbnN0IHVZdD17ImxpYnJhcnkuZnVuY3Rpb24iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5pbnB1dCI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ciI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmIiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5mIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuZnVuYyI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmkiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5zIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3Quc2hhcGUiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5zaGFwZS5kaW0iOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC50ZW5zb3IiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC50eXBlIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnNoYXBlLmRpbSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS50ZW5zb3Iuc3RyaW5nX3ZhbCI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS50ZW5zb3IudGVuc29yX3NoYXBlLmRpbSI6ITAsImxpYnJhcnkuZnVuY3Rpb24uc2lnbmF0dXJlLmlucHV0X2FyZyI6ITAsImxpYnJhcnkuZnVuY3Rpb24uc2lnbmF0dXJlLm91dHB1dF9hcmciOiEwLCJsaWJyYXJ5LnZlcnNpb25zIjohMCxub2RlOiEwLCJub2RlLmlucHV0IjohMCwibm9kZS5hdHRyIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuYiI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmYiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5mdW5jIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuaSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnMiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zaGFwZSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnNoYXBlLmRpbSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnRlbnNvciI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnR5cGUiOiEwLCJub2RlLmF0dHIudmFsdWUuc2hhcGUuZGltIjohMCwibm9kZS5hdHRyLnZhbHVlLnRlbnNvci5zdHJpbmdfdmFsIjohMCwibm9kZS5hdHRyLnZhbHVlLnRlbnNvci50ZW5zb3Jfc2hhcGUuZGltIjohMH0saFl0PXsic3RlcF9zdGF0cy5kZXZfc3RhdHMiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzIjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5vdXRwdXQiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm1lbW9yeSI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMub3V0cHV0LnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0iOiEwfTtmdW5jdGlvbiBkWXQodCxlKXtsZXQgbj17fSxpPVtdLHI9W10sbz1uO2Z1bmN0aW9uIGEodCxuLGkscil7bGV0IG89dFtuXTtudWxsPT1vP3Rbbl09ci5qb2luKCIuIilpbiBlP1tpXTppOkFycmF5LmlzQXJyYXkobyk/by5wdXNoKGkpOnRbbl09W28saV19cmV0dXJuKGZ1bmN0aW9uIHModCxlLG49MWU2LGk9IlxuIil7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyEoZnVuY3Rpb24gYShzLGwsYyl7Y29uc3QgdT1jPj10LmJ5dGVMZW5ndGgsaD1sLnNwbGl0KGkpO2hbMF09cytoWzBdO2NvbnN0IGQ9dT8iIjpoLnBvcCgpO2ZvcihsZXQgdCBvZiBoKXRyeXtlKHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIG8odCl9aWYodSlyZXR1cm4gdm9pZCByKCEwKTtjb25zdCBwPW5ldyBCbG9iKFt0LnNsaWNlKGMsYytuKV0pLGY9bmV3IEZpbGVSZWFkZXI7Zi5vbmxvYWQ9ZnVuY3Rpb24odCl7YShkLHQudGFyZ2V0LnJlc3VsdCxjK24pfSxmLnJlYWRBc1RleHQocCl9KSgiIiwiIiwwKX0pKX0pKHQsKGZ1bmN0aW9uKHQpe2lmKHQ9dC50cmltKCkpc3dpdGNoKHRbdC5sZW5ndGgtMV0pe2Nhc2UieyI6bGV0IGU9dC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKS50cmltKCksbj17fTtpLnB1c2gobyksci5wdXNoKGUpLGEobyxlLG4sciksbz1uO2JyZWFrO2Nhc2UifSI6bz1pLnBvcCgpLHIucG9wKCk7YnJlYWs7ZGVmYXVsdDpsZXQgcz0oZnVuY3Rpb24gZSh0KXtsZXQgZT10LmluZGV4T2YoIjoiKTtyZXR1cm57bmFtZTp0LnN1YnN0cmluZygwLGUpLnRyaW0oKSx2YWx1ZTooZnVuY3Rpb24gbih0KXtpZigidHJ1ZSI9PT10KXJldHVybiEwO2lmKCJmYWxzZSI9PT10KXJldHVybiExO2lmKCciJz09PXRbMF0pcmV0dXJuIHQuc3Vic3RyaW5nKDEsdC5sZW5ndGgtMSk7bGV0IGU9cGFyc2VGbG9hdCh0KTtyZXR1cm4gaXNOYU4oZSk/dDplfSkodC5zdWJzdHJpbmcoZSsyKS50cmltKCkpfX0pKHQpO2EobyxzLm5hbWUscy52YWx1ZSxyLmNvbmNhdChzLm5hbWUpKX19KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKX1sZXQgcFl0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jb21wYXRpYmlsaXR5UHJvdmlkZXI9bmV3IGxZdCx0aGlzLmhpZXJhcmNoeVBhcmFtcz1IcXQsdGhpcy5fdGVtcGxhdGU9bnVsbH1fc2VsZWN0aW9uQ2hhbmdlZCgpe3RoaXMuc2VsZWN0aW9uJiZ0aGlzLmRlYm91bmNlKCJzZWxlY3Rpb25jaGFuZ2UiLCgoKT0+e3RoaXMuX2xvYWQodGhpcy5zZWxlY3Rpb24pfSkpfV9sb2FkKHQpe2NvbnN0e3J1bjplLHRhZzpuLHR5cGU6aX09dDtzd2l0Y2goaSl7Y2FzZSB5R3QuT1BfR1JBUEg6Y2FzZSB5R3QuQ09OQ0VQVFVBTF9HUkFQSDp7KGZ1bmN0aW9uKCl7dGhpcy5fc2V0T3V0U3RhdHMobnVsbCl9KS5iaW5kKHRoaXMpKCk7Y29uc3QgdD1uZXcgVVJMU2VhcmNoUGFyYW1zO3Quc2V0KCJydW4iLGUpLHQuc2V0KCJjb25jZXB0dWFsIixTdHJpbmcoaT09PXlHdC5DT05DRVBUVUFMX0dSQVBIKSksbiYmdC5zZXQoInRhZyIsbik7Y29uc3Qgcj1fcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvZ3JhcGgiLHQpO3JldHVybiB0aGlzLl9mZXRjaEFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKHIpLnRoZW4oKCgpPT57dGhpcy5fZ3JhcGhSdW5UYWc9e3J1bjplLHRhZzpufX0pKX1jYXNlIHlHdC5QUk9GSUxFOntjb25zdHt0YWdzOnR9PXRoaXMuZGF0YXNldHMuZmluZCgoKHtuYW1lOnR9KT0+dD09PWUpKSxpPXQuZmluZCgodD0+dC50YWc9PT1uKSkub3BHcmFwaD9uOm51bGw7Y29uc29sZS5hc3NlcnQodC5maW5kKCh0PT50LnRhZz09PWkpKSxgUmVxdWlyZWQgdGFnICgke2l9KSBpcyBtaXNzaW5nLmApO2NvbnN0IHI9dGhpcy5fZ3JhcGhSdW5UYWcmJnRoaXMuX2dyYXBoUnVuVGFnLnJ1bj09PWUmJnRoaXMuX2dyYXBoUnVuVGFnLnRhZz09PWk/UHJvbWlzZS5yZXNvbHZlKCk6dGhpcy5fbG9hZCh7cnVuOmUsdGFnOmksdHlwZTp5R3QuT1BfR1JBUEh9KSxvPW5ldyBVUkxTZWFyY2hQYXJhbXM7by5zZXQoInRhZyIsbiksby5zZXQoInJ1biIsZSk7Y29uc3QgYT1fcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvcnVuX21ldGFkYXRhIixvKTtyZXR1cm4gci50aGVuKCgoKT0+dGhpcy5fcmVhZEFuZFBhcnNlTWV0YWRhdGEoYSkpKX1kZWZhdWx0OnJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYFVua25vd24gc2VsZWN0aW9uIHR5cGU6ICR7aX1gKSl9fV9yZWFkQW5kUGFyc2VNZXRhZGF0YSh0KXt0aGlzLnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTowLG1zZzoiIn0pLChmdW5jdGlvbiBlKHQsbil7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4scixvKXtyLnNldE1lc3NhZ2UodCk7dHJ5e2xldCBpPUNHdCh0LG4sbyk7cmV0dXJuIHIudXBkYXRlUHJvZ3Jlc3MoZSksaX1jYXRjaChlKXtyLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pKCJSZWFkaW5nIG1ldGFkYXRhIHBidHh0Iiw0MCwoKCk9Pm51bGw9PXQ/UHJvbWlzZS5yZXNvbHZlKG51bGwpOmNZdCh0KSksbixfR3QuRkVUQ0hfTUVUQURBVEFfUEJUWFRfQllURVMpLnRoZW4oKHQ9PlBHdCgiUGFyc2luZyBtZXRhZGF0YS5wYnR4dCIsNjAsKCgpPT5udWxsIT10PyhmdW5jdGlvbiBlKHQpe3JldHVybiBkWXQodCxoWXQpLnRoZW4oKHQ9PnQuc3RlcF9zdGF0cykpfSkodCk6UHJvbWlzZS5yZXNvbHZlKG51bGwpKSxuLF9HdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVCkpKX0pKHQsQUd0KHRoaXMpKS50aGVuKGZ1bmN0aW9uKHQpe3RoaXMuX3NldE91dFN0YXRzKHQpfS5iaW5kKHRoaXMpKX1fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaCh0LGUpe3JldHVybiB0aGlzLnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTowLG1zZzoiIn0pLChmdW5jdGlvbiBpKHQsZSxyLG89bmV3IGxZdCxhPUhxdCl7Y29uc3Qgcz1rR3QodCwzMCwiRGF0YSIpLGw9a0d0KHQsMjAsIkdyYXBoIiksYz1rR3QodCw1MCwiTmFtZXNwYWNlIGhpZXJhcmNoeSIpLHU9RGF0ZS5ub3coKTtyZXR1cm4oZnVuY3Rpb24gaCh0LGUsaSl7cmV0dXJuIFBHdCgiUmVhZGluZyBncmFwaCBwYnR4dCIsNDAsKCgpPT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3Qgbj1EYXRlLm5vdygpO2lmKGUpe2NvbnN0IHQ9eWllbGQgbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7bGV0IGk9bmV3IEZpbGVSZWFkZXI7aS5vbmxvYWQ9KCk9PnQoaS5yZXN1bHQpLGkub25lcnJvcj0oKT0+bihpLmVycm9yKSxpLnJlYWRBc0FycmF5QnVmZmVyKGUpfSkpO3JldHVybiBUR3Qoe3RpbWluZ0lkOl9HdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU0sZXZlbnRWYWx1ZTpEYXRlLm5vdygpLW59KSx0fWNvbnN0IGk9eWllbGQgY1l0KHQpO3JldHVybiBUR3Qoe3RpbWluZ0lkOl9HdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUixldmVudFZhbHVlOkRhdGUubm93KCktbn0pLGl9KSkpLGksX0d0LkZFVENIX1BCVFhUX0JZVEVTKS50aGVuKCh0PT5QR3QoIlBhcnNpbmcgZ3JhcGgucGJ0eHQiLDYwLCgoKT0+KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGRZdCh0LHVZdCl9KSh0KSksaSxfR3QuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1QpKSl9KShlLHIscykudGhlbigoZnVuY3Rpb24odCl7aWYoIXQubm9kZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBncmFwaCBpcyBlbXB0eS4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gVGVuc29yRmxvdyBjb3VsZCBub3QgdHJhY2UgYW55IGdyYXBoLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzE5NjEgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLGkpe2xldCByPXt9LG89e30sYT17fSxzPWFXdChuLmluRW1iZWRkaW5nVHlwZXMpLGw9YVd0KG4ub3V0RW1iZWRkaW5nVHlwZXMpLGM9W10sdT10Lm5vZGUsaD1uZXcgQXJyYXkodS5sZW5ndGgpO3JldHVybiBMR3QoIk5vcm1hbGl6aW5nIG5hbWVzIiwzMCwoKCk9PntsZXQgZT1uZXcgQXJyYXkodS5sZW5ndGgpLG49MDtjb25zdCBpPXQ9PntsZXQgaT1uZXcgWEd0KHQpO3JldHVybiBzKGkpPyhjLnB1c2goaS5uYW1lKSxyW2kubmFtZV09aSxpKTpsKGkpPyhjLnB1c2goaS5uYW1lKSxvW2kubmFtZV09aSxTZS5leHBvcnRzLmVhY2goaS5pbnB1dHMsKHQ9PntsZXQgZT10Lm5hbWU7YVtlXT1hW2VdfHxbXSxhW2VdLnB1c2goaSl9KSksaSk6KGVbbl09aSxoW25dPWkubmFtZSxuKyssaSl9O3JldHVybiBTZS5leHBvcnRzLmVhY2godSxpKSx0LmxpYnJhcnkmJnQubGlicmFyeS5mdW5jdGlvbiYmU2UuZXhwb3J0cy5lYWNoKHQubGlicmFyeS5mdW5jdGlvbiwodD0+e2NvbnN0IGU9Vkd0K3Quc2lnbmF0dXJlLm5hbWU7aWYoaSh7bmFtZTplLGlucHV0OltdLGRldmljZToiIixvcDoiIixhdHRyOltdfSksdC5zaWduYXR1cmUuaW5wdXRfYXJnKXtsZXQgbj0wO2NvbnN0IHI9dD0+e2koe25hbWU6ZStIR3QrdC5uYW1lLGlucHV0OltdLGRldmljZToiIixvcDoiaW5wdXRfYXJnIixhdHRyOlt7a2V5OiJUIix2YWx1ZTp7dHlwZTp0LnR5cGV9fV19KS5mdW5jdGlvbklucHV0SW5kZXg9bixuKyt9O3Quc2lnbmF0dXJlLmlucHV0X2FyZy5uYW1lP3IodC5zaWduYXR1cmUuaW5wdXRfYXJnKTpTZS5leHBvcnRzLmVhY2godC5zaWduYXR1cmUuaW5wdXRfYXJnLHIpfWxldCBuPTA7Y29uc3Qgcj17fTtpZih0LnNpZ25hdHVyZS5vdXRwdXRfYXJnKXtjb25zdCBpPXQ9PntyW2UrSEd0K3QubmFtZV09bixuKyt9O3Quc2lnbmF0dXJlLm91dHB1dF9hcmcubmFtZT9pKHQuc2lnbmF0dXJlLm91dHB1dF9hcmcpOlNlLmV4cG9ydHMuZWFjaCh0LnNpZ25hdHVyZS5vdXRwdXRfYXJnLGkpfVNlLmV4cG9ydHMuZWFjaCh0Lm5vZGVfZGVmLCh0PT57dC5uYW1lPWUrIi8iK3QubmFtZSwic3RyaW5nIj09dHlwZW9mIHQuaW5wdXQmJih0LmlucHV0PVt0LmlucHV0XSk7Y29uc3Qgbj1pKHQpO1NlLmV4cG9ydHMuaXNOdW1iZXIoclt0Lm5hbWVdKSYmKG4uZnVuY3Rpb25PdXRwdXRJbmRleD1yW3QubmFtZV0pLFNlLmV4cG9ydHMuZWFjaChuLmlucHV0cywodD0+e3QubmFtZT1lK0hHdCt0Lm5hbWV9KSl9KSl9KSksZS5zcGxpY2UobiksaC5zcGxpY2UobiksZX0pLGksX0d0Lk5PUk1BTElaSU5HX05BTUVTKS50aGVuKCh0PT5MR3QoIkJ1aWxkaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSIsNzAsKCgpPT57bGV0IGU9KGZ1bmN0aW9uIGkodCxlKXtsZXQgbj17fSxpPXt9O3Quc29ydCgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGgtMTsrK2Upe2xldCByPXRbZV07U2UuZXhwb3J0cy5lYWNoKGNXdChyKS5zbGljZSgwLC0xKSwodD0+e2lbdF09ITB9KSk7Zm9yKGxldCBpPWUrMTtpPHQubGVuZ3RoOysraSl7bGV0IGU9dFtpXTtpZighU2UuZXhwb3J0cy5zdGFydHNXaXRoKGUscikpYnJlYWs7aWYoZS5sZW5ndGg+ci5sZW5ndGgmJmUuY2hhckF0KHIubGVuZ3RoKT09PUhHdCl7bltyXT1zV3Qocik7YnJlYWt9fX1yZXR1cm4gU2UuZXhwb3J0cy5lYWNoKGUsKHQ9Pnt0IGluIGkmJihuW3RdPXNXdCh0KSl9KSksbn0pKGgsYykscz1uZXcgcUd0O3JldHVybiBTZS5leHBvcnRzLmVhY2godCwodD0+e2xldCBuPWVbdC5uYW1lXXx8dC5uYW1lO3Mubm9kZXNbbl09dCx0Lm5hbWUgaW4gYSYmKHQub3V0RW1iZWRkaW5ncz1hW3QubmFtZV0sU2UuZXhwb3J0cy5lYWNoKHQub3V0RW1iZWRkaW5ncywodD0+e3QubmFtZT1lW3QubmFtZV18fHQubmFtZX0pKSksdC5uYW1lPW59KSksU2UuZXhwb3J0cy5lYWNoKHQsKHQ9PntTZS5leHBvcnRzLmVhY2godC5pbnB1dHMsKChpLGEpPT57bGV0IGw9aS5uYW1lO2lmKGwgaW4gcil7bGV0IGk9cltsXTt0LmluRW1iZWRkaW5ncy5wdXNoKGkpO2ZvcihsZXQgciBvZiBpLmlucHV0cylpV3QocyxlW3IubmFtZV18fHIubmFtZSx0LHIsbixhKX1lbHNlIGlmKGwgaW4gbyl7bGV0IHI9b1tsXTtmb3IobGV0IG8gb2Ygci5pbnB1dHMpaVd0KHMsZVtvLm5hbWVdfHxvLm5hbWUsdCxpLG4sYSl9ZWxzZSBpV3QocyxlW2xdfHxsLHQsaSxuLGEpfSkpfSkpLFNlLmV4cG9ydHMuZWFjaChyLCgodCxuKT0+e3QubmFtZT1lW3QubmFtZV18fHQubmFtZX0pKSxzfSksaSxfR3QuQlVJTERfU0xJTV9HUkFQSCkpKX0pKHQscld0LGwpfSksKCgpPT57dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgR3JhcGhEZWYuIFRoaXMgY2FuIHNvbWV0aW1lcyBiZSBjYXVzZWQgYnkgYSBiYWQgbmV0d29yayBjb25uZWN0aW9uIG9yIGRpZmZpY3VsdHkgcmVjb25jaWxpbmcgbXVsdGlwbGUgR3JhcGhEZWZzOyBmb3IgdGhlIGxhdHRlciBjYXNlLCBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzE5MjkuIil9KSkudGhlbigodD0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpeyEoZnVuY3Rpb24gZSh0LG4pe2lmKG51bGw9PT1uKXRocm93IG5ldyBFcnJvcigiQ29tcGF0aWJpbGl0eSBwcm92aWRlciByZXF1aXJlZCwgYnV0IGdvdDogIituKTtTZS5leHBvcnRzLmVhY2godC5ub2RlcywodD0+e3QuY29tcGF0aWJsZT1uLm9wVmFsaWQodCksU2UuZXhwb3J0cy5lYWNoKHQuaW5FbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlPW4ub3BWYWxpZCh0KX0pKSxTZS5leHBvcnRzLmVhY2godC5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlPW4ub3BWYWxpZCh0KX0pKX0pKX0pKHQsbyk7Y29uc3Qgbj15aWVsZCBGcXQodCxhLGMpO3JldHVybiBUR3Qoe3RpbWluZ0lkOl9HdC5HUkFQSF9MT0FEX1NVQ0NFRURFRCxldmVudFZhbHVlOkRhdGUubm93KCktdX0pLHtncmFwaDp0LGdyYXBoSGllcmFyY2h5Om59fSkpKSkuY2F0Y2goKGU9Pnt0aHJvdyB0LnJlcG9ydEVycm9yKGBHcmFwaCB2aXN1YWxpemF0aW9uIGZhaWxlZC5cblxuJHtlfWAsZSksVEd0KHt0aW1pbmdJZDpfR3QuR1JBUEhfTE9BRF9GQUlMRUQsZXZlbnRWYWx1ZTpEYXRlLm5vdygpLXV9KSxlfSkpfSkoQUd0KHRoaXMpLHQsZSx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcix0aGlzLmhpZXJhcmNoeVBhcmFtcykudGhlbihmdW5jdGlvbih7Z3JhcGg6dCxncmFwaEhpZXJhcmNoeTplfSl7dGhpcy5fc2V0T3V0R3JhcGgodCksdGhpcy5fc2V0T3V0R3JhcGhIaWVyYXJjaHkoZSl9LmJpbmQodGhpcykpfV9zZWxlY3RlZEZpbGVDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zZWxlY3RlZEZpbGU7aWYoIXQpcmV0dXJuO2NvbnN0IGU9dC50YXJnZXQsbj1lLmZpbGVzWzBdO24mJihlLnZhbHVlPSIiLHRoaXMuX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgobnVsbCxuKSl9fTt0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0scFl0LnByb3RvdHlwZSwiZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHBZdC5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHBZdC5wcm90b3R5cGUsInNlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwWXQucHJvdG90eXBlLCJzZWxlY3RlZEZpbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scFl0LnByb3RvdHlwZSwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHBZdC5wcm90b3R5cGUsImhpZXJhcmNoeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsRHF0KV0scFl0LnByb3RvdHlwZSwib3V0R3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLHFHdCldLHBZdC5wcm90b3R5cGUsIm91dEdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwWXQucHJvdG90eXBlLCJvdXRTdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwWXQucHJvdG90eXBlLCJfZ3JhcGhSdW5UYWciLHZvaWQgMCksdChbYSgic2VsZWN0aW9uIiwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxwWXQucHJvdG90eXBlLCJfc2VsZWN0aW9uQ2hhbmdlZCIsbnVsbCksdChbYSgic2VsZWN0ZWRGaWxlIiwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxwWXQucHJvdG90eXBlLCJfc2VsZWN0ZWRGaWxlQ2hhbmdlZCIsbnVsbCkscFl0PXQoW2koInRmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXIiKV0scFl0KTtsZXQgZll0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZGF0YXNldHM9W10sdGhpcy5fZGF0YXNldHNGZXRjaGVkPSExLHRoaXMuX3NlbGVjdGVkRGF0YXNldD0wLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcix0aGlzLl9jYW5jZWxsZXI9bmV3IFhSLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT249ITEsdGhpcy5fZGVidWdnZXJOdW1lcmljQWxlcnRzPVtdLHRoaXMuX25vZGVOYW1lc1RvSGVhbHRoUGlsbHM9e30sdGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZD0xLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXk9NTAwLHRoaXMucnVuPVJzKCJydW4iLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExfSkuY2FsbCh0aGlzKSx0aGlzLl9ydW5PYnNlcnZlcj1PcygicnVuIix7ZGVmYXVsdFZhbHVlOiIiLHBvbHltZXJQcm9wZXJ0eToicnVuIix1c2VMb2NhbFN0b3JhZ2U6ITF9KX1hdHRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITApfWRldGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMSl9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpfXJlbG9hZCgpe3RoaXMuX2RlYnVnZ2VyRGF0YUVuYWJsZWR8fHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoX3IoKS5wbHVnaW5zTGlzdGluZygpKS50aGVuKHRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e3QuY2FuY2VsbGVkfHx0LnZhbHVlLmRlYnVnZ2VyJiZ0aGlzLnNldCgiX2RlYnVnZ2VyRGF0YUVuYWJsZWQiLCEwKX0pKSksdGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9X2ZpdCgpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZml0KCl9X29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCh0KXt0aGlzLiQkKCIjZ3JhcGhib2FyZCIpLmRvd25sb2FkQXNJbWFnZSh0LmRldGFpbCl9X2dldEdyYXBoRGlzcGxheUNsYXNzTmFtZSh0LGUpe3JldHVybiB0fHxlLmxlbmd0aD8iIjoibm8tZ3JhcGgifV9mZXRjaERhdGFzZXQoKXtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChfcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvaW5mbyIpKX1fZmV0Y2hIZWFsdGhQaWxscyh0LGUpe2NvbnN0IG49e25vZGVfbmFtZXM6SlNPTi5zdHJpbmdpZnkodCkscnVuOiJfX2RlYnVnZ2VyX2RhdGFfXyJ9O3ZvaWQgMCE9PWUmJihuLnN0ZXA9ZSk7Y29uc3QgaT1fcigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi9oZWFsdGhfcGlsbHMiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChpLG4pfV9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKXtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChfcigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi9udW1lcmljc19hbGVydF9yZXBvcnQiKSl9X2dyYXBoVXJsKHQsZSxuKXtyZXR1cm4gX3IoKS5wbHVnaW5Sb3V0ZSgiZ3JhcGhzIiwiL2dyYXBoIixuZXcgVVJMU2VhcmNoUGFyYW1zKHtydW46dCxsaW1pdF9hdHRyX3NpemU6ZSxsYXJnZV9hdHRyc19rZXk6bn0pKX1fc2hvdWxkUmVxdWVzdEhlYWx0aFBpbGxzKCl7cmV0dXJuIHRoaXMuX2RlYnVnZ2VyRGF0YUVuYWJsZWQmJnRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT24mJnRoaXMuX3JlbmRlckhpZXJhcmNoeSYmdGhpcy5fZGF0YXNldHNTdGF0ZSh0aGlzLl9kYXRhc2V0c0ZldGNoZWQsdGhpcy5fZGF0YXNldHMsIlBSRVNFTlQiKX1fbWF5YmVJbml0aWFsaXplRGFzaGJvYXJkKCl7IXRoaXMuX2luaXRpYWxpemVkJiZ0aGlzLl9pc0F0dGFjaGVkJiYodGhpcy5zZXQoIl9jb21wYXRpYmlsaXR5UHJvdmlkZXIiLG5ldyBsWXQpLHRoaXMuX2luaXRpYWxpemVkPSEwLHRoaXMuX2ZldGNoRGF0YXNldCgpLnRoZW4oKHQ9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpO3RoaXMuX2RhdGFzZXRzPWUuc29ydChucikubWFwKChlPT57Y29uc3Qgbj10W2VdLGk9T2JqZWN0LmtleXMobi50YWdzKS5zb3J0KG5yKS5tYXAoKHQ9Pm4udGFnc1t0XSkpLm1hcCgoKHt0YWc6dCxjb25jZXB0dWFsX2dyYXBoOmUsb3BfZ3JhcGg6bixwcm9maWxlOml9KT0+KHt0YWc6dCxkaXNwbGF5TmFtZTp0LGNvbmNlcHR1YWxHcmFwaDplLG9wR3JhcGg6bixwcm9maWxlOml9KSkpO3JldHVybntuYW1lOmUsdGFnczpuLnJ1bl9ncmFwaD9be3RhZzpudWxsLGRpc3BsYXlOYW1lOiJEZWZhdWx0Iixjb25jZXB0dWFsR3JhcGg6ITEsb3BHcmFwaDohMCxwcm9maWxlOiExfSwuLi5pXTppfX0pKSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITB9KSkpfV9kZXRlcm1pbmVTZWxlY3RlZERhdGFzZXQoKXt2YXIgdD10aGlzLl9kYXRhc2V0c0ZldGNoZWQsZT10aGlzLl9kYXRhc2V0cyxuPXRoaXMucnVuO2lmKCFuKXJldHVybiB2b2lkIHRoaXMuc2V0KCJfc2VsZWN0ZWREYXRhc2V0IiwwKTtjb25zdCBpPWUuZmluZEluZGV4KCh0PT50Lm5hbWU9PT1uKSk7aWYoLTEhPT1pKXRoaXMuc2V0KCJfc2VsZWN0ZWREYXRhc2V0IixpKTtlbHNlIGlmKHQpe2NvbnN0IHQ9dGhpcy4kJCgiI2Vycm9yLWRpYWxvZyIpO3QudGV4dENvbnRlbnQ9YE5vIGRhdGFzZXQgbmFtZWQgIiR7bn0iIGNvdWxkIGJlIGZvdW5kLmAsdC5vcGVuKCl9fV91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lKCl7dmFyIHQ9dGhpcy5fZGF0YXNldHMsZT10aGlzLl9zZWxlY3RlZERhdGFzZXQ7dGhpcy5fZGF0YXNldHNGZXRjaGVkJiYodC5sZW5ndGg8PWV8fHRoaXMuc2V0KCJydW4iLHRbZV0ubmFtZSkpfV9yZXF1ZXN0SGVhbHRoUGlsbHMoKXt0aGlzLnNldCgiX2FyZUhlYWx0aFBpbGxzTG9hZGluZyIsITApO3ZhciB0PSsrdGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZDtudWxsIT09dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCksdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1udWxsKSx0aGlzLmFsbFN0ZXBzTW9kZUVuYWJsZWQ/dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1udWxsLHRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KX0uYmluZCh0aGlzKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5KTp0aGlzLl9pbml0aWF0ZU5ldHdvcmtSZXF1ZXN0Rm9ySGVhbHRoUGlsbHModCl9X2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KXtpZih0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkIT09dClyZXR1cm47Y29uc3QgZT10aGlzLmFsbFN0ZXBzTW9kZUVuYWJsZWQ/dGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwOnZvaWQgMCxuPXRoaXMuX2ZldGNoSGVhbHRoUGlsbHModGhpcy5fcmVuZGVySGllcmFyY2h5LmdldE5hbWVzT2ZSZW5kZXJlZE9wcygpLGUpLGk9dGhpcy5fZmV0Y2hEZWJ1Z2dlck51bWVyaWNzQWxlcnRzKCk7UHJvbWlzZS5hbGwoW24saV0pLnRoZW4oZnVuY3Rpb24oZSl7dmFyIG49ZVswXSxpPWVbMV07aWYodGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdD09PXRoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQpe2Zvcih2YXIgciBpbiBuKXt0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwSW5kZXgiLG5bcl0ubGVuZ3RoLTEpO2JyZWFrfXRoaXMuc2V0KCJfZGVidWdnZXJOdW1lcmljQWxlcnRzIixpKSx0aGlzLnNldCgiX25vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLG4pLHRoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMSksdGhpcy5zZXQoIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkIixudWxsKX19LmJpbmQodGhpcykpfV9kYXRhc2V0c1N0YXRlKHQsZSxuKXtyZXR1cm4gdD9lJiZlLmxlbmd0aD8iUFJFU0VOVCI9PT1uOiJFTVBUWSI9PT1uOiJOT1RfTE9BREVEIj09PW59X3JlbmRlckhpZXJhcmNoeUNoYW5nZWQodCl7dGhpcy5yZWxvYWQoKX1faGFuZGxlTm9kZVRvZ2dsZUV4cGFuZCgpe3RoaXMuX21heWJlRmV0Y2hIZWFsdGhQaWxscygpfV9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQodCl7dD90aGlzLnJlbG9hZCgpOnRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIse30pfV9tYXliZUZldGNoSGVhbHRoUGlsbHMoKXt0aGlzLl9zaG91bGRSZXF1ZXN0SGVhbHRoUGlsbHMoKSYmdGhpcy5fcmVxdWVzdEhlYWx0aFBpbGxzKCl9fTtmWXQudGVtcGxhdGU9X2VgCiAgICA8cGFwZXItZGlhbG9nIGlkPSJlcnJvci1kaWFsb2ciIHdpdGgtYmFja2Ryb3A+PC9wYXBlci1kaWFsb2c+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPHRmLWdyYXBoLWNvbnRyb2xzCiAgICAgICAgaWQ9ImNvbnRyb2xzIgogICAgICAgIGNsYXNzPSJzaWRlYmFyIgogICAgICAgIHNsb3Q9InNpZGViYXIiCiAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9Int7X2RldmljZXNGb3JTdGF0c319IgogICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tfY29sb3JCeVBhcmFtc11dIgogICAgICAgIHN0YXRzPSJbW19zdGF0c11dIgogICAgICAgIGNvbG9yLWJ5PSJ7e19jb2xvckJ5fX0iCiAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tfcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgc2VsZWN0aW9uPSJ7e19zZWxlY3Rpb259fSIKICAgICAgICBzZWxlY3RlZC1maWxlPSJ7e19zZWxlY3RlZEZpbGV9fSIKICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e19zZWxlY3RlZE5vZGV9fSIKICAgICAgICBoZWFsdGgtcGlsbHMtZmVhdHVyZS1lbmFibGVkPSJbW19kZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgaGVhbHRoLXBpbGxzLXRvZ2dsZWQtb249Int7aGVhbHRoUGlsbHNUb2dnbGVkT259fSIKICAgICAgICBvbi1maXQtdGFwPSJfZml0IgogICAgICAgIHRyYWNlLWlucHV0cz0ie3tfdHJhY2VJbnB1dHN9fSIKICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9Int7X2F1dG9FeHRyYWN0Tm9kZXN9fSIKICAgICAgICBvbi1kb3dubG9hZC1pbWFnZS1yZXF1ZXN0ZWQ9Il9vbkRvd25sb2FkSW1hZ2VSZXF1ZXN0ZWQiCiAgICAgID48L3RmLWdyYXBoLWNvbnRyb2xzPgogICAgICA8ZGl2CiAgICAgICAgY2xhc3MkPSJjZW50ZXIgW1tfZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKF9zZWxlY3RlZEZpbGUsIF9kYXRhc2V0cyldXSIKICAgICAgICBzbG90PSJjZW50ZXIiCiAgICAgID4KICAgICAgICA8dGYtZ3JhcGgtZGFzaGJvYXJkLWxvYWRlcgogICAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICAgIGRhdGFzZXRzPSJbW19kYXRhc2V0c11dIgogICAgICAgICAgc2VsZWN0aW9uPSJbW19zZWxlY3Rpb25dXSIKICAgICAgICAgIHNlbGVjdGVkLWZpbGU9IltbX3NlbGVjdGVkRmlsZV1dIgogICAgICAgICAgb3V0LWdyYXBoLWhpZXJhcmNoeT0ie3tfZ3JhcGhIaWVyYXJjaHl9fSIKICAgICAgICAgIG91dC1ncmFwaD0ie3tfZ3JhcGh9fSIKICAgICAgICAgIG91dC1zdGF0cz0ie3tfc3RhdHN9fSIKICAgICAgICAgIHByb2dyZXNzPSJ7e19wcm9ncmVzc319IgogICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICBjb21wYXRpYmlsaXR5LXByb3ZpZGVyPSJbW19jb21wYXRpYmlsaXR5UHJvdmlkZXJdXSIKICAgICAgICA+PC90Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyPgogICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtbWVzc2FnZSI+CiAgICAgICAgICA8aDM+Tm8gZ3JhcGggZGVmaW5pdGlvbiBmaWxlcyB3ZXJlIGZvdW5kLjwvaDM+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgVG8gc3RvcmUgYSBncmFwaCwgY3JlYXRlIGEKICAgICAgICAgICAgPGNvZGU+dGYuc3VtbWFyeS5GaWxlV3JpdGVyPC9jb2RlPgogICAgICAgICAgICBhbmQgcGFzcyB0aGUgZ3JhcGggZWl0aGVyIHZpYSB0aGUgY29uc3RydWN0b3IsIG9yIGJ5IGNhbGxpbmcgaXRzCiAgICAgICAgICAgIDxjb2RlPmFkZF9ncmFwaCgpPC9jb2RlPiBtZXRob2QuIFlvdSBtYXkgd2FudCB0byBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL3RlbnNvcmJvYXJkL2dyYXBocyIKICAgICAgICAgICAgICA+ZXhhbWluaW5nIHRoZSBUZW5zb3JGbG93IGdyYXBoIHR1dG9yaWFsPC9hCiAgICAgICAgICAgID4uCiAgICAgICAgICA8L3A+CgogICAgICAgICAgPHA+CiAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvIGFkZAogICAgICAgICAgICBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JhcGhib2FyZCI+CiAgICAgICAgICA8dGYtZ3JhcGgtYm9hcmQKICAgICAgICAgICAgaWQ9ImdyYXBoYm9hcmQiCiAgICAgICAgICAgIGRldmljZXMtZm9yLXN0YXRzPSJbW19kZXZpY2VzRm9yU3RhdHNdXSIKICAgICAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJ7e19jb2xvckJ5UGFyYW1zfX0iCiAgICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tfZ3JhcGhIaWVyYXJjaHldXSIKICAgICAgICAgICAgZ3JhcGg9IltbX2dyYXBoXV0iCiAgICAgICAgICAgIGhpZXJhcmNoeS1wYXJhbXM9IltbX2hpZXJhcmNoeVBhcmFtc11dIgogICAgICAgICAgICBwcm9ncmVzcz0iW1tfcHJvZ3Jlc3NdXSIKICAgICAgICAgICAgZGVidWdnZXItZGF0YS1lbmFibGVkPSJbW19kZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgICAgIGFyZS1oZWFsdGgtcGlsbHMtbG9hZGluZz0iW1tfYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW19kZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9IltbX25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgICAgYWxsLXN0ZXBzLW1vZGUtZW5hYmxlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJbW19oZWFsdGhQaWxsU3RlcEluZGV4XV0iCiAgICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9Int7X3JlbmRlckhpZXJhcmNoeX19IgogICAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e19zZWxlY3RlZE5vZGV9fSIKICAgICAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgICAgIHRyYWNlLWlucHV0cz0iW1tfdHJhY2VJbnB1dHNdXSIKICAgICAgICAgICAgYXV0by1leHRyYWN0LW5vZGVzPSJbW19hdXRvRXh0cmFjdE5vZGVzXV0iCiAgICAgICAgICA+PC90Zi1ncmFwaC1ib2FyZD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IC9kZWVwLyB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5jZW50ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRpYWxvZyB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgfQoKICAgICAgLm5vLWRhdGEtbWVzc2FnZSB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KCiAgICAgIC5ncmFwaGJvYXJkIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5uby1ncmFwaCAuZ3JhcGhib2FyZCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmNlbnRlcjpub3QoLm5vLWdyYXBoKSAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICBhIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7CiAgICAgIH0KCiAgICAgIGE6dmlzaXRlZCB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmstdmlzaXRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZll0LnByb3RvdHlwZSwiX2RhdGFzZXRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZll0LnByb3RvdHlwZSwiX2RhdGFzZXRzRmV0Y2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmWXQucHJvdG90eXBlLCJfc2VsZWN0ZWREYXRhc2V0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfcmVuZGVySGllcmFyY2h5Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIseVd0KV0sZll0LnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLGZZdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixYUildLGZZdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmWXQucHJvdG90eXBlLCJfZGVidWdnZXJEYXRhRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGZZdC5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZll0LnByb3RvdHlwZSwic3BlY2lmaWNIZWFsdGhQaWxsU3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmWXQucHJvdG90eXBlLCJoZWFsdGhQaWxsc1RvZ2dsZWRPbiIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZll0LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZll0LnByb3RvdHlwZSwiX2lzQXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmWXQucHJvdG90eXBlLCJfaW5pdGlhbGl6ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxmWXQucHJvdG90eXBlLCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZll0LnByb3RvdHlwZSwiX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmWXQucHJvdG90eXBlLCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmWXQucHJvdG90eXBlLCJfaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmWXQucHJvdG90eXBlLCJfaGVhbHRoUGlsbFJlcXVlc3RJZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmWXQucHJvdG90eXBlLCJfaGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxmWXQucHJvdG90eXBlLCJfaGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZll0LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9ydW5PYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZll0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGZZdC5wcm90b3R5cGUsIl9zZWxlY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZll0LnByb3RvdHlwZSwiX2NvbXBhdGliaWxpdHlQcm92aWRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGZZdC5wcm90b3R5cGUsIl90cmFjZUlucHV0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGZZdC5wcm90b3R5cGUsIl9hdXRvRXh0cmFjdE5vZGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGZZdC5wcm90b3R5cGUsIl9zZWxlY3RlZEZpbGUiLHZvaWQgMCksdChbYSgiX2lzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZZdC5wcm90b3R5cGUsIl9tYXliZUluaXRpYWxpemVEYXNoYm9hcmQiLG51bGwpLHQoW2EoIl9kYXRhc2V0c0ZldGNoZWQiLCJfZGF0YXNldHMiLCJydW4iKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGZZdC5wcm90b3R5cGUsIl9kZXRlcm1pbmVTZWxlY3RlZERhdGFzZXQiLG51bGwpLHQoW2EoIl9kYXRhc2V0c0ZldGNoZWQiLCJfZGF0YXNldHMiLCJfc2VsZWN0ZWREYXRhc2V0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxmWXQucHJvdG90eXBlLCJfdXBkYXRlU2VsZWN0ZWREYXRhc2V0TmFtZSIsbnVsbCksZll0PXQoW2koInRmLWdyYXBoLWRhc2hib2FyZCIpXSxmWXQpO2NvbnN0IG1ZdD1MTjtsZXQgZ1l0PWNsYXNzIGV4dGVuZHMoZXIoaWwoeWUpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubW9kZT0ib2Zmc2V0Iix0aGlzLnRpbWVQcm9wZXJ0eT0ic3RlcCIsdGhpcy5iaW5zPSJiaW5zIix0aGlzLng9IngiLHRoaXMuZHg9ImR4Iix0aGlzLnk9InkiLHRoaXMuY29sb3JTY2FsZT1tWXQuc2NhbGVPcmRpbmFsKG1ZdC5zY2hlbWVDYXRlZ29yeTEwKSx0aGlzLm1vZGVUcmFuc2l0aW9uRHVyYXRpb249NTAwLHRoaXMuX25hbWU9bnVsbCx0aGlzLl9kYXRhPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuc2NvcGVTdWJ0cmVlKHRoaXMuJC5zdmcsITApfWF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITB9ZGV0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMX1zZXRTZXJpZXNEYXRhKHQsZSl7dGhpcy5fbmFtZT10LHRoaXMuX2RhdGE9ZSx0aGlzLnJlZHJhdygpfV9yZWRyYXdPbkNoYW5nZSgpe3RoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy5fZHJhdygwKX1fbW9kZVJlZHJhdygpe3RoaXMuX2RyYXcodGhpcy5tb2RlVHJhbnNpdGlvbkR1cmF0aW9uKX1fZHJhdyh0KXtpZighdGhpcy5fYXR0YWNoZWR8fCF0aGlzLl9kYXRhKXJldHVybjtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigidnotaGlzdG9ncmFtLXRpbWVzZXJpZXMgX2RyYXcgbmVlZHMgZHVyYXRpb24iKTtpZih0aGlzLl9kYXRhLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBlbm91Z2ggc3RlcHMgaW4gdGhlIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmJpbnMpKXRocm93IG5ldyBFcnJvcigiTm8gYmlucyBwcm9wZXJ0eSBvZiAnIit0aGlzLmJpbnMrIicgaW4gZGF0YSIpO2lmKHRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXS5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGJpbiBpbiBiaW5zIGluIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMueCkpdGhyb3cgbmV3IEVycm9yKCJObyB4IHByb3BlcnR5ICciK3RoaXMueCsiJyBvbiBiaW5zIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMuZHgpKXRocm93IG5ldyBFcnJvcigiTm8gZHggcHJvcGVydHkgJyIrdGhpcy5keCsiJyBvbiBiaW5zIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMueSkpdGhyb3cgbmV3IEVycm9yKCJObyB5IHByb3BlcnR5ICciK3RoaXMueSsiJyBvbiBiaW5zIGRhdGEiKTt2YXIgZT10aGlzLnRpbWVQcm9wZXJ0eSxuPXRoaXMueCxpPXRoaXMuYmlucyxyPXRoaXMuZHgsbz10aGlzLnksYT10aGlzLl9kYXRhLHM9dGhpcy5tb2RlLGw9bVl0LmhjbCh0aGlzLmNvbG9yU2NhbGUodGhpcy5fbmFtZSkpLGM9bVl0LnNlbGVjdCh0aGlzLiQudG9vbHRpcCksdT1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXX0saD1mdW5jdGlvbih0KXtyZXR1cm4gdFtvXX0sZD1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXSt0W3JdfSxwPWZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfTsicmVsYXRpdmUiPT09ZSYmKHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQud2FsbF90aW1lLWFbMF0ud2FsbF90aW1lfSk7dmFyIGYsbT10aGlzLiQuc3ZnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9bS53aWR0aCxfPW0uaGVpZ2h0LHk9e3RvcDo1LHJpZ2h0OjYwLGJvdHRvbToyMCxsZWZ0OjI0fTsib2Zmc2V0Ij09PXM/eS50b3A9NSsoZj1fLzIuNSk6Zj1fLXkudG9wLXkuYm90dG9tO3ZhciB2PWcteS5sZWZ0LXkucmlnaHQsYj1fLXkudG9wLXkuYm90dG9tO21ZdC5taW4oYSx1KSxtWXQubWF4KGEsZCk7dmFyIHg9bVl0LmZvcm1hdCgiLjNuIiksdz1tWXQuZm9ybWF0KCIuMGYiKTsid2FsbF90aW1lIj09PWU/dz1tWXQudGltZUZvcm1hdCgiJW0vJWQgJVgiKToicmVsYXRpdmUiPT09ZSYmKHc9ZnVuY3Rpb24odCl7cmV0dXJuIG1ZdC5mb3JtYXQoIi4xciIpKHQvMzZlNSkrImgifSk7dmFyIFM9YS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW21ZdC5taW4odFtpXSx1KSxtWXQubWF4KHRbaV0sZCldfSkpLE09YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBtWXQuZXh0ZW50KHRbaV0saCl9KSksRT01MDAsVD1tWXQuZXh0ZW50KGEscCksQz0oIndhbGxfdGltZSI9PT1lP21ZdC5zY2FsZVRpbWUoKTptWXQuc2NhbGVMaW5lYXIoKSkuZG9tYWluKFQpLnJhbmdlKFswLCJvZmZzZXQiPT09cz9iOjBdKSxBPW1ZdC5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxtWXQubWF4KGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1bZV1bMV19KSldKS5yYW5nZShbZiwwXSksaz1tWXQuc2NhbGVMaW5lYXIoKS5kb21haW4oQS5kb21haW4oKSkucmFuZ2UoW0UsMF0pLEw9bVl0LnNjYWxlTGluZWFyKCkuZG9tYWluKFttWXQubWluKGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNbZV1bMF19KSksbVl0Lm1heChhLChmdW5jdGlvbih0LGUpe3JldHVybiBTW2VdWzFdfSkpXSkubmljZSgpLnJhbmdlKFswLHZdKSxQPW1ZdC5zY2FsZUxpbmVhcigpLmRvbWFpbihMLmRvbWFpbigpKS5yYW5nZShbMCxFXSk7Y29uc3QgTj1tWXQuc2NhbGVMaW5lYXIoKS5kb21haW4obVl0LmV4dGVudChhLHApKS5yYW5nZShbbC5icmlnaHRlcigpLGwuZGFya2VyKCldKS5pbnRlcnBvbGF0ZShtWXQuaW50ZXJwb2xhdGVIY2wpO3ZhciBJPW1ZdC5heGlzQm90dG9tKEwpLnRpY2tzKE1hdGgubWF4KDIsdi8yMCkpLFI9bVl0LmF4aXNSaWdodChDKS50aWNrcyhNYXRoLm1heCgyLGIvMTUpKS50aWNrRm9ybWF0KHcpLE89bVl0LmF4aXNSaWdodChBKS50aWNrcyhNYXRoLm1heCgyLGIvMTUpKS50aWNrU2l6ZSh2KzUpLnRpY2tGb3JtYXQoeCksej1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXSt0W3JdLzJ9LEQ9bVl0LmxpbmUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gUCh6KHQpKX0pKS55KChmdW5jdGlvbih0KXtyZXR1cm4gayh0W29dKX0pKSxCPXRoaXMuJC5zdmcsSD1tWXQuc2VsZWN0KEIpLEY9SC50cmFuc2l0aW9uKCkuZHVyYXRpb24odCksVj1ILnNlbGVjdCgiZyIpLmNsYXNzZWQoInNtYWxsIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4wJiZ2PD0xNTB9KSkuY2xhc3NlZCgibWVkaXVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4xNTAmJnY8PTMwMH0pKS5jbGFzc2VkKCJsYXJnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHY+MzAwfSkpLFU9Ri5zZWxlY3QoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit5LmxlZnQrIiwiK3kudG9wKyIpIiksaj1tWXQuYmlzZWN0b3IoZCkubGVmdCxHPVYuc2VsZWN0KCIuc3RhZ2UiKS5vbigibW91c2VvdmVyIiwoZnVuY3Rpb24oKXtKLnN0eWxlKCJvcGFjaXR5IiwxKSxldC5zdHlsZSgib3BhY2l0eSIsMSkscnQuc3R5bGUoIm9wYWNpdHkiLDEpLHN0LnN0eWxlKCJvcGFjaXR5IiwxKSxjLnN0eWxlKCJvcGFjaXR5IiwxKX0pKS5vbigibW91c2VvdXQiLChmdW5jdGlvbigpe0ouc3R5bGUoIm9wYWNpdHkiLDApLGV0LnN0eWxlKCJvcGFjaXR5IiwwKSxydC5zdHlsZSgib3BhY2l0eSIsMCksc3Quc3R5bGUoIm9wYWNpdHkiLDApLEouY2xhc3NlZCgiaG92ZXItY2xvc2VzdCIsITEpLEsuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsITEpLGMuc3R5bGUoIm9wYWNpdHkiLDApfSkpLm9uKCJtb3VzZW1vdmUiLChmdW5jdGlvbiBXKCl7dmFyIHQsYT1tWXQubW91c2UodGhpcyksbD1MLmludmVydChhWzBdKTtmdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1pbih0W2ldLmxlbmd0aC0xLGoodFtpXSxsKSl9Qy5pbnZlcnQoYVsxXSk7dmFyIGgsZD0xLzA7Si5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlLGwpe3ZhciBjPXUoZSk7aD1lO3ZhciBtPUwoZVtpXVtjXVtuXStlW2ldW2NdW3JdLzIpLGc9QShlW2ldW2NdW29dKSxfPSJvZmZzZXQiPT09cz9DKHAoZSkpLShmLWcpOmcseT1NYXRoLmFicyhhWzFdLV8pO3JldHVybiB5PGQmJihkPXksdD1lKSwidHJhbnNsYXRlKCIrbSsiLCIrZysiKSJ9KSksSi5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbih0KXt2YXIgZT11KHQpO3JldHVybiB0W2ldW2VdW29dfSkpLEouY2xhc3NlZCgiaG92ZXItY2xvc2VzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pKSxLLmNsYXNzZWQoIm91dGxpbmUtaG92ZXIiLChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSk7dmFyIG09dShoKTtldC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrTChoW2ldW21dW25dK2hbaV1bbV1bcl0vMikrIiwgIitiKyIpIn0pKS5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4geChoW2ldW21dW25dK2hbaV1bbV1bcl0vMil9KSk7dmFyIGc9Ui50aWNrRm9ybWF0KCk7cnQuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zP0MocCh0KSk6MCkrIikifSkpLnN0eWxlKCJkaXNwbGF5Iiwib2Zmc2V0Ij09PXM/IiI6Im5vbmUiKS5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbihlKXtyZXR1cm4gZyhwKHQpKX0pKTt2YXIgXz1PLnRpY2tGb3JtYXQoKTtzdC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrdisiLCAiKygib2Zmc2V0Ij09PXM/MDpBKHRbaV1bbV1bb10pKSsiKSJ9KSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cz8ibm9uZSI6IiIpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKGUpe3JldHVybiBfKHRbaV1bbV1bb10pfSkpO3ZhciB5PW1ZdC5tb3VzZShCKTtjLnN0eWxlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoeVswXSsxNSkrInB4LCIrKHlbMV0tMTUpKyJweCkiKS5zZWxlY3QoInNwYW4iKS50ZXh0KCJvZmZzZXQiPT09cz9fKHRbaV1bbV1bb10pOigic3RlcCI9PT1lPyJzdGVwICI6IiIpK2cocCh0KSkpfSkpO0cuc2VsZWN0KCIuYmFja2dyb3VuZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy15LmxlZnQrIiwiKy15LnRvcCsiKSIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLF8pO3ZhciBxPUcuc2VsZWN0QWxsKCIuaGlzdG9ncmFtIikuZGF0YShhKTtxLmV4aXQoKS5yZW1vdmUoKTt2YXIgWT1xLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJoaXN0b2dyYW0iKSxYPVkubWVyZ2UocSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcCh0KS1wKGUpfSkpLCQ9VS5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKDAsICIrKCJvZmZzZXQiPT09cz9DKHAodCkpLWY6MCkrIikifSkpO1kuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJiYXNlbGluZSIpLCQuc2VsZWN0KCIuYmFzZWxpbmUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4ib2Zmc2V0Ij09PXM/LjE6MH0pKS5hdHRyKCJ5MSIsZikuYXR0cigieTIiLGYpLmF0dHIoIngyIix2KSxZLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwib3V0bGluZSIpO3ZhciBLPVguc2VsZWN0KCIub3V0bGluZSIpLmF0dHIoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKS5hdHRyKCJkIiwoZnVuY3Rpb24odCl7cmV0dXJuKGZ1bmN0aW9uKHQpe3JldHVybiJNIitQKHoodFswXSkpKyIsIitrKDApKyJMIitEKHQpLnNsaWNlKDEpKyJMIitQKHoodFt0Lmxlbmd0aC0xXSkpKyIsIitrKDApfSkodFtpXSl9KSkuc3R5bGUoInN0cm9rZS13aWR0aCIsMSk7JC5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidHJhbnNmb3JtIiwic2NhbGUoIit2L0UrIiwgIitmL0UrIikiKS5zdHlsZSgic3Ryb2tlIiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPyIiOk4ocCh0KSl9KSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsKGZ1bmN0aW9uKHQpe3JldHVybiJvZmZzZXQiPT09cz8xOjB9KSkuc3R5bGUoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gTihwKHQpKX0pKTt2YXIgWj1ZLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiaG92ZXIiKSxKPVguc2VsZWN0KCIuaG92ZXIiKS5zdHlsZSgiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBOKHAodCkpfSkpO1ouYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJyIiwyKSxaLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoImR4Iiw0KTt2YXIgUT1WLnNlbGVjdCgiLngtYXhpcy1ob3ZlciIpLnNlbGVjdEFsbCgiLmxhYmVsIikuZGF0YShbIngiXSksdHQ9US5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxldD1RLm1lcmdlKHR0KTt0dC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtMjApLmF0dHIoInkiLDYpLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IiwxNCksdHQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDYpLHR0LmFwcGVuZCgidGV4dCIpLmF0dHIoImR5IiwxOCk7dmFyIG50PVYuc2VsZWN0KCIueS1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieSJdKSxpdD1udC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxydD1udC5tZXJnZShpdCk7aXQuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsOCkuYXR0cigieSIsLTYpLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IiwxNCksaXQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiw2KS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDApLGl0LmFwcGVuZCgidGV4dCIpLmF0dHIoImR4Iiw4KS5hdHRyKCJkeSIsNCk7dmFyIG90PVYuc2VsZWN0KCIueS1zbGljZS1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieSJdKSxhdD1vdC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxzdD1vdC5tZXJnZShhdCk7YXQuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsOCkuYXR0cigieSIsLTYpLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IiwxNCksYXQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiw2KS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDApLGF0LmFwcGVuZCgidGV4dCIpLmF0dHIoImR4Iiw4KS5hdHRyKCJkeSIsNCksVS5zZWxlY3QoIi55LmF4aXMuc2xpY2UiKS5zdHlsZSgib3BhY2l0eSIsIm9mZnNldCI9PT1zPzA6MSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsICIrKCJvZmZzZXQiPT09cz8tZjowKSsiKSIpLmNhbGwoTyksVS5zZWxlY3QoIi54LmF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIitiKyIpIikuY2FsbChJKSxVLnNlbGVjdCgiLnkuYXhpcyIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXM/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit2KyIsICIrKCJvZmZzZXQiPT09cz8wOmIpKyIpIikuY2FsbChSKSxVLnNlbGVjdEFsbCgiLnRpY2sgdGV4dCIpLmF0dHIoImZpbGwiLCIjYWFhIiksVS5zZWxlY3RBbGwoIi5heGlzIHBhdGguZG9tYWluIikuYXR0cigic3Ryb2tlIiwibm9uZSIpfX07ZnVuY3Rpb24gX1l0KHQpe2NvbnN0W2UsbixpXT10O3JldHVybnt3YWxsX3RpbWU6ZSxzdGVwOm4sbWluOllsKGkubWFwKCgoW3QsLF0pPT50KSkpLG1heDpXbChpLm1hcCgoKFssdF0pPT50KSkpLGJ1Y2tldHM6aS5tYXAoKChbdCxlLG5dKT0+KHtsZWZ0OnQscmlnaHQ6ZSxjb3VudDpufSkpKX19ZnVuY3Rpb24geVl0KHQsZSxuLGk9MzApe249PT1lJiYobj0xLjEqZSsxLGU9ZS8xLjEtMSk7Y29uc3Qgcj0obi1lKS9pO2xldCBvPTA7cmV0dXJuIHpsKGUsbixyKS5tYXAoKGk9Pntjb25zdCBhPWkrcjtsZXQgcz0wO2Zvcig7bzx0LmJ1Y2tldHMubGVuZ3RoOyl7Y29uc3Qgcj1NYXRoLm1pbihuLHQuYnVja2V0c1tvXS5yaWdodCksbD1NYXRoLm1heChlLHQuYnVja2V0c1tvXS5sZWZ0KSxjPU1hdGgubWluKHIsYSktTWF0aC5tYXgobCxpKSx1PWMvKHItbCkqdC5idWNrZXRzW29dLmNvdW50O2lmKHMrPWM+MD91OjAscj5hKWJyZWFrO28rK31yZXR1cm57eDppLGR4OnIseTpzfX0pKX1nWXQudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJ0b29sdGlwIj48c3Bhbj48L3NwYW4+PC9kaXY+CiAgICA8c3ZnIGlkPSJzdmciPgogICAgICA8Zz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB4Ij48L2c+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeSI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkgc2xpY2UiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ic3RhZ2UiPgogICAgICAgICAgPHJlY3QgY2xhc3M9ImJhY2tncm91bmQiPjwvcmVjdD4KICAgICAgICA8L2c+CiAgICAgICAgPGcgY2xhc3M9IngtYXhpcy1ob3ZlciI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJ5LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1zbGljZS1heGlzLWhvdmVyIj48L2c+CiAgICAgIDwvZz4KICAgIDwvc3ZnPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjYWFhOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6ICNmZmY7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcjogIzAwMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3I6IHZhcigKICAgICAgICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yCiAgICAgICAgKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLW91dGxpbmUtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNjAwKTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgewogICAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgICBmaWxsOiByZWQ7CiAgICAgIH0KCiAgICAgIC5oaXN0b2dyYW0gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaG92ZXIgewogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGRvbWluYW50LWJhc2VsaW5lOiBtaWRkbGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyIGNpcmNsZSB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuaG92ZXIgdGV4dCB7CiAgICAgICAgZmlsbDogYmxhY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgY2lyY2xlIHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaG92ZXIuaG92ZXItY2xvc2VzdCB0ZXh0IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuYmFzZWxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLm91dGxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yKTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAub3V0bGluZS5vdXRsaW5lLWhvdmVyIHsKICAgICAgICBzdHJva2U6IHZhcigtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3IpICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIsCiAgICAgIC55LWF4aXMtaG92ZXIsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIC5sYWJlbCwKICAgICAgLnktYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgLmxhYmVsIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LWFuY2hvcjogZW5kOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHRleHQgewogICAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktYXhpcy1ob3ZlciBsaW5lLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIGxpbmUgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciByZWN0IHsKICAgICAgICBmaWxsOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1iZy1jb2xvcik7CiAgICAgIH0KCiAgICAgICN0b29sdGlwLAogICAgICAueC1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICBjb2xvcjogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5heGlzIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5heGlzIHBhdGguZG9tYWluIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICB9CgogICAgICAuYXhpcyAudGljayBsaW5lIHsKICAgICAgICBzdHJva2U6ICNkZGQ7CiAgICAgIH0KCiAgICAgIC5heGlzLnNsaWNlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSAudGljayBsaW5lIHsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAyOwogICAgICB9CgogICAgICAuc21hbGwgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6Zmlyc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuc21hbGwgLmF4aXMgLnRpY2s6bGFzdC1vZi10eXBlIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5tZWRpdW0gLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIC50aWNrOm50aC1jaGlsZCgybiArIDEpIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5sYXJnZSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGdZdC5wcm90b3R5cGUsIm1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZ1l0LnByb3RvdHlwZSwidGltZVByb3BlcnR5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGdZdC5wcm90b3R5cGUsImJpbnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZ1l0LnByb3RvdHlwZSwieCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnWXQucHJvdG90eXBlLCJkeCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnWXQucHJvdG90eXBlLCJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdZdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1l0LnByb3RvdHlwZSwibW9kZVRyYW5zaXRpb25EdXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGdZdC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxnWXQucHJvdG90eXBlLCJfbmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZ1l0LnByb3RvdHlwZSwiX2RhdGEiLHZvaWQgMCksdChbYSgidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZ1l0LnByb3RvdHlwZSwiX3JlZHJhd09uQ2hhbmdlIixudWxsKSx0KFthKCJtb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxnWXQucHJvdG90eXBlLCJfbW9kZVJlZHJhdyIsbnVsbCksZ1l0PXQoW2koInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIildLGdZdCk7bGV0IHZZdD1jbGFzcyBleHRlbmRzKExUdChlcih5ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9X3IoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi9oaXN0b2dyYW1zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPWlPKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT10Lm1hcChfWXQpLG49WWwoZSwodD0+dC5taW4pKSxpPVdsKGUsKHQ9PnQubWF4KSk7cmV0dXJuIGUubWFwKCh0PT4oe3dhbGxfdGltZTp0LndhbGxfdGltZSxzdGVwOnQuc3RlcCxiaW5zOnlZdCh0LG4saSl9KSkpfSkobiksbz10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShvLGkpfSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249R1IsdGhpcy5fZXhwYW5kZWQ9ITF9X3JlbG9hZE9uUnVuVGFnUmVxdWVzdE1hbmFnZXJDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dGhpcy5kYXRhVG9Mb2FkPVt7cnVuOnRoaXMucnVuLHRhZzp0aGlzLnRhZ31dfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O3ZZdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gaGlzdG9ncmFtIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMKICAgICAgaWQ9ImNoYXJ0IgogICAgICB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIgogICAgICBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgPjwvdnotaGlzdG9ncmFtLXRpbWVzZXJpZXM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHZZdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2WXQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdll0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0sdll0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdll0LnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx2WXQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2WXQucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdll0LnByb3RvdHlwZSwiaGlzdG9ncmFtTW9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHZZdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdll0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW2EoInJ1biIsInRhZyIsInJlcXVlc3RNYW5hZ2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx2WXQucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdSZXF1ZXN0TWFuYWdlckNoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx2WXQucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sdll0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSx2WXQ9dChbaSgidGYtaGlzdG9ncmFtLWxvYWRlciIpXSx2WXQpO2xldCBiWXQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5faGlzdG9ncmFtTW9kZT0ib2Zmc2V0Iix0aGlzLl90aW1lUHJvcGVydHk9InN0ZXAiLHRoaXMuX3Jlc3RhbXA9ITEsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGRyfV9yZWRyYXdDYXRlZ29yeVBhbmUodCxlKXtlJiZ0LnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaCgodD0+dC5yZWRyYXcoKSkpfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRIaXN0b2dyYW1zKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9X3IoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKFNlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9U2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxuPWFyKGUpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09bi5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLGUpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZEhpc3RvZ3JhbXMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtaGlzdG9ncmFtLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBNcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07ZnVuY3Rpb24geFl0KHQpe3JldHVybiIiIT09dC5kaXNwbGF5TmFtZSYmdm9pZCAwIT09dC5kaXNwbGF5TmFtZT90LmRpc3BsYXlOYW1lOnQubmFtZX1mdW5jdGlvbiB3WXQodCl7aWYoIiIhPT10LmRpc3BsYXlOYW1lJiZ2b2lkIDAhPT10LmRpc3BsYXlOYW1lKXJldHVybiB0LmRpc3BsYXlOYW1lO2xldCBlPXQubmFtZS5ncm91cCxuPXQubmFtZS50YWc7cmV0dXJuIHZvaWQgMD09PWUmJihlPSIiKSx2b2lkIDA9PT1uJiYobj0iIiksIiI9PT1lP246ZSsiLiIrbn1mdW5jdGlvbiBTWXQodCxlKXtyZXR1cm4gZTx0LmhwYXJhbUNvbHVtbnMubGVuZ3RoP3hZdCh0LmhwYXJhbUNvbHVtbnNbZV0uaHBhcmFtSW5mbyk6d1l0KHQubWV0cmljQ29sdW1uc1tlLXQuaHBhcmFtQ29sdW1ucy5sZW5ndGhdLm1ldHJpY0luZm8pfWZ1bmN0aW9uIE1ZdCh0KXtyZXR1cm4gdC5ocGFyYW1Db2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBFWXQodCl7cmV0dXJuIHQubWV0cmljQ29sdW1ucy5sZW5ndGh9ZnVuY3Rpb24gVFl0KHQpe3JldHVybiBNWXQodCkrRVl0KHQpfWZ1bmN0aW9uIENZdCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIEFZdCh0LGUpe3JldHVybiB0LmZpbmQoKHQ9PlNlLmV4cG9ydHMuaXNFcXVhbCh0Lm5hbWUsZSkpKX1mdW5jdGlvbiBrWXQodCxlLG4pe3JldHVybiBlLmhwYXJhbXNbdC5ocGFyYW1Db2x1bW5zW25dLmhwYXJhbUluZm8ubmFtZV19ZnVuY3Rpb24gTFl0KHQsZSxuKXtjb25zdCBpPUFZdChlLm1ldHJpY1ZhbHVlcyx0Lm1ldHJpY0NvbHVtbnNbbl0ubWV0cmljSW5mby5uYW1lKTtyZXR1cm4gdm9pZCAwPT09aT92b2lkIDA6aS52YWx1ZX1mdW5jdGlvbiBQWXQodCxlLG4pe3JldHVybiBuPHQuaHBhcmFtQ29sdW1ucy5sZW5ndGg/a1l0KHQsZSxuKTpMWXQodCxlLG4tdC5ocGFyYW1Db2x1bW5zLmxlbmd0aCl9ZnVuY3Rpb24gTll0KHQsZSxuKXtyZXR1cm4gTGwoZSwoZT0+UFl0KHQsZSxuKSkpfWZ1bmN0aW9uIElZdCh0LGUsbil7bGV0IGk7aWYobjxlLmhwYXJhbUluZm9zLmxlbmd0aClpPXQuaHBhcmFtQ29sdW1ucy5maW5kSW5kZXgoKHQ9PnQuaHBhcmFtSW5mby5uYW1lPT09ZS5ocGFyYW1JbmZvc1tuXS5uYW1lKSk7ZWxzZXtjb25zdCByPWUubWV0cmljSW5mb3Nbbi1lLmhwYXJhbUluZm9zLmxlbmd0aF0ubmFtZTtpPXQuaHBhcmFtQ29sdW1ucy5sZW5ndGgrdC5tZXRyaWNDb2x1bW5zLmZpbmRJbmRleCgodD0+dC5tZXRyaWNJbmZvLm5hbWU9PT1yKSl9cmV0dXJuIGNvbnNvbGUuYXNzZXJ0KC0xIT09aSksaX1mdW5jdGlvbiBSWXQodCl7cmV0dXJuIHQuaHBhcmFtSW5mb3MubGVuZ3RofWZ1bmN0aW9uIE9ZdCh0KXtyZXR1cm4gdC5tZXRyaWNJbmZvcy5sZW5ndGh9ZnVuY3Rpb24gell0KHQsZSxuKXtyZXR1cm4gTGwoZSwoZT0+Rll0KHQsZSxuKSkpfWZ1bmN0aW9uIERZdCh0LGUpe3JldHVybiB0LmZpbmQoKHQ9PnQubmFtZT09PWUpKX1mdW5jdGlvbiBCWXQodCxlLG4pe3JldHVybiBlLmhwYXJhbXNbdC5ocGFyYW1JbmZvc1tuXS5uYW1lXX1mdW5jdGlvbiBIWXQodCxlLG4pe2NvbnN0IGk9QVl0KGUubWV0cmljVmFsdWVzLHQubWV0cmljSW5mb3Nbbl0ubmFtZSk7cmV0dXJuIHZvaWQgMD09PWk/dm9pZCAwOmkudmFsdWV9ZnVuY3Rpb24gRll0KHQsZSxuKXtyZXR1cm4gbjx0LmhwYXJhbUluZm9zLmxlbmd0aD9CWXQodCxlLG4pOkhZdCh0LGUsbi10LmhwYXJhbUluZm9zLmxlbmd0aCl9ZnVuY3Rpb24gVll0KHQpe3JldHVybiBTZS5leHBvcnRzLmlzTnVtYmVyKHQpP3QudG9QcmVjaXNpb24oNSk6dm9pZCAwPT09dD8iIjp0LnRvU3RyaW5nKCl9ZnVuY3Rpb24gVVl0KHQsZSl7cmV0dXJuIHQqdCtlKmV9ZnVuY3Rpb24gall0KHQsZSxuLGkpe3JldHVybiBNYXRoLnNxcnQoVVl0KHQtbixlLWkpKX1mdW5jdGlvbiBHWXQodCxlLG4saSxyLG8pe2lmKHQ8biYmZTxpKXJldHVybiBqWXQodCxlLG4saSk7aWYobjw9dCYmdDxyJiZlPGkpcmV0dXJuIGktZTtpZihyPD10JiZlPGkpcmV0dXJuIGpZdCh0LGUscixpKTtpZih0PG4mJmk8PWUmJmU8bylyZXR1cm4gbi10O2lmKG48PXQmJnQ8ciYmaTw9ZSYmZTxvKXJldHVybiAwO2lmKHI8PXQmJmk8PWUmJmU8bylyZXR1cm4gdC1yO2lmKHQ8biYmbzw9ZSlyZXR1cm4gall0KHQsZSxuLG8pO2lmKG48PXQmJnQ8ciYmbzw9ZSlyZXR1cm4gZS1vO2lmKHI8PXQmJm88PWUpcmV0dXJuIGpZdCh0LGUscixvKTt0aHJvdyJQb2ludCAoeCx5KSBtdXN0IGJlIGluIG9uZSBvZiB0aGUgcmVnaW9ucyBkZWZpbmVkIGFib3ZlLiJ9ZnVuY3Rpb24gV1l0KHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/InRyYW5zbGF0ZSgiK3QrIikiOiJ0cmFuc2xhdGUoIit0KyIsIitlKyIpIn1mdW5jdGlvbiBxWXQodCxlLG4pe2NvbnN0IGk9dC5nZXQoZSx0KTtBcnJheS5pc0FycmF5KGkpP3Quc3BsaWNlLmFwcGx5KHQsW2UsMCxpLmxlbmd0aF0uY29uY2F0KG4pKTp0LnNldChlLG4pfWZ1bmN0aW9uIFlZdCh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7KytuKWU9MzEqZSt0LmNoYXJDb2RlQXQobikmNDI5NDk2NzI5NTtyZXR1cm4gZStNYXRoLnBvdygyLDMxKX1iWXQudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9Imhpc3RvZ3JhbU1vZGVTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIaXN0b2dyYW0gbW9kZSIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfaGlzdG9ncmFtTW9kZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ib3ZlcmxheSI+b3ZlcmxheTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im9mZnNldCI+b2Zmc2V0PC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9InRpbWVQcm9wZXJ0eVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ik9mZnNldCB0aW1lIGF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3RpbWVQcm9wZXJ0eX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBoaXN0b2dyYW0gZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaGlzdG9ncmFtIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1oaXN0b2dyYW0tbG9hZGVyCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgdGltZS1wcm9wZXJ0eT0iW1tfdGltZVByb3BlcnR5XV0iCiAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbS1tb2RlPSJbW19oaXN0b2dyYW1Nb2RlXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWhpc3RvZ3JhbS1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGJZdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYll0LnByb3RvdHlwZSwiX2hpc3RvZ3JhbU1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYll0LnByb3RvdHlwZSwiX3RpbWVQcm9wZXJ0eSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sYll0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxiWXQucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYll0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGJZdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYll0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGJZdC5wcm90b3R5cGUsIl9yZXN0YW1wIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sYll0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLGJZdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWciLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGJZdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxiWXQ9dChbaSgidGYtaGlzdG9ncmFtLWRhc2hib2FyZCIpXSxiWXQpO3ZhciBYWXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaHBhcmFtTmFtZTp4WXQsbWV0cmljTmFtZTp3WXQsc2NoZW1hQ29sdW1uTmFtZTpTWXQsbnVtSFBhcmFtczpNWXQsbnVtTWV0cmljczpFWXQsbnVtQ29sdW1uczpUWXQsaHBhcmFtVmFsdWVCeU5hbWU6Q1l0LG1ldHJpY1ZhbHVlQnlOYW1lOkFZdCxocGFyYW1WYWx1ZUJ5SW5kZXg6a1l0LG1ldHJpY1ZhbHVlQnlJbmRleDpMWXQsY29sdW1uVmFsdWVCeUluZGV4OlBZdCxudW1lcmljQ29sdW1uRXh0ZW50Ok5ZdCxnZXRBYnNvbHV0ZUNvbHVtbkluZGV4OklZdCxzY2hlbWFWaXNpYmxlQ29sdW1uTmFtZTpmdW5jdGlvbiAkWXQodCxlKXtyZXR1cm4gZTx0LmhwYXJhbUluZm9zLmxlbmd0aD94WXQodC5ocGFyYW1JbmZvc1tlXSk6d1l0KHQubWV0cmljSW5mb3NbZS10LmhwYXJhbUluZm9zLmxlbmd0aF0pfSxudW1WaXNpYmxlSFBhcmFtczpSWXQsbnVtVmlzaWJsZU1ldHJpY3M6T1l0LG51bVZpc2libGVDb2x1bW5zOmZ1bmN0aW9uIEtZdCh0KXtyZXR1cm4gUll0KHQpK09ZdCh0KX0sdmlzaWJsZU51bWVyaWNDb2x1bW5FeHRlbnQ6ell0LHByZXR0eVByaW50SFBhcmFtVmFsdWVCeU5hbWU6ZnVuY3Rpb24gWll0KHQsZSl7cmV0dXJuIFZZdChDWXQodCxlKSl9LHByZXR0eVByaW50TWV0cmljVmFsdWVCeU5hbWU6ZnVuY3Rpb24gSll0KHQsZSl7cmV0dXJuIFZZdChBWXQodCxlKSl9LHNlc3Npb25Hcm91cFdpdGhOYW1lOkRZdCxocGFyYW1WYWx1ZUJ5VmlzaWJsZUluZGV4OkJZdCxtZXRyaWNWYWx1ZUJ5VmlzaWJsZUluZGV4OkhZdCxjb2x1bW5WYWx1ZUJ5VmlzaWJsZUluZGV4OkZZdCxwcmV0dHlQcmludDpWWXQsbDJOb3JtU3F1YXJlZDpVWXQsZXVjbGlkZWFuRGlzdDpqWXQscG9pbnRUb1JlY3RhbmdsZURpc3Q6R1l0LHRyYW5zbGF0ZVN0cjpXWXQscm90YXRlU3RyOmZ1bmN0aW9uIFFZdCh0LGUsbil7bGV0IGk9InJvdGF0ZSgiK3Q7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PW4mJihpPWkrIiwiK2UrIiwiK24pLGkrPSIpIixpfSxpc051bGxPclVuZGVmaW5lZDpmdW5jdGlvbiB0WHQodCl7cmV0dXJuIG51bGw9PXR9LHF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3Q6ZnVuY3Rpb24gZVh0KHQsZSxuLGkscixvKXt0LnZpc2l0KCgoYSxzLGwsYyx1KT0+e2lmKHZvaWQgMD09PWEubGVuZ3RoKXtkb3tjb25zdCBzPXQueCgpKGEuZGF0YSksbD10LnkoKShhLmRhdGEpO2U8PXMmJnM8aSYmbjw9bCYmbDxyJiZvKGEuZGF0YSl9d2hpbGUoYT1hLm5leHQpO3JldHVybiEwfXJldHVybiBzPj1pfHxjPD1lfHxsPj1yfHx1PD1ufSkpfSxxdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrOmZ1bmN0aW9uIG5YdCh0LGUsbixpLHIpe3QudmlzaXQoKChvLGEscyxsLGMpPT57aWYodm9pZCAwPT09by5sZW5ndGgpe2Rve2NvbnN0IGE9dC54KCkoby5kYXRhKSxzPXQueSgpKG8uZGF0YSksbD1qWXQoZSxuLGEscyk7bDw9aSYmcihvLmRhdGEsbCl9d2hpbGUobz1vLm5leHQpO3JldHVybiEwfXJldHVybiBHWXQoZSxuLGEscyxsLGMpPml9KSl9LGZpbHRlclNldDpmdW5jdGlvbiBpWHQodCxlKXtjb25zdCBuPW5ldyBTZXQ7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2UodCkmJm4uYWRkKHQpfSkpLG59LHNldEFycmF5T2JzZXJ2YWJseTpxWXQsaGFzaE9mU3RyaW5nOllZdH0pO2xldCByWHQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCJ9fTtyWHQudGVtcGxhdGU9X2VgCiAgICA8c2xvdCBuYW1lPSJjb250ZW50Ij48L3Nsb3Q+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0IHNsb3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKikgewogICAgICAgIGZsZXg6IDAgMCBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIHNsb3QgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QgOjpzbG90dGVkKCo6bm90KDpsYXN0LWNoaWxkKSkgewogICAgICAgIGJvcmRlcjogMCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCAjY2NjKTsKICAgICAgfQoKICAgICAgOmhvc3QoW29yaWVudGF0aW9uPSd2ZXJ0aWNhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogNXB4OwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgOjpzbG90dGVkKCo6bm90KDpsYXN0LWNoaWxkKSkgewogICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogNXB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmcscmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHJYdC5wcm90b3R5cGUsIm9yaWVudGF0aW9uIix2b2lkIDApLHJYdD10KFtpKCJocGFyYW1zLXNwbGl0LWxheW91dCIpXSxyWHQpO2xldCBvWHQ9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbmZpZ3VyYXRpb249e3NjaGVtYTp7aHBhcmFtQ29sdW1uczpbXSxtZXRyaWNDb2x1bW5zOltdfSxjb2x1bW5zVmlzaWJpbGl0eTpbXSx2aXNpYmxlU2NoZW1hOntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX19LHRoaXMuc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLmRhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zPSExLHRoaXMuZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXM9ITEsdGhpcy5fc3RhdHVzZXM9W3t2YWx1ZToiU1RBVFVTX1VOS05PV04iLGRpc3BsYXlOYW1lOiJVbmtub3duIixhbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19TVUNDRVNTIixkaXNwbGF5TmFtZToiU3VjY2VzcyIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfRkFJTFVSRSIsZGlzcGxheU5hbWU6IkZhaWx1cmUiLGFsbG93ZWQ6ITB9LHt2YWx1ZToiU1RBVFVTX1JVTk5JTkciLGRpc3BsYXlOYW1lOiJSdW5uaW5nIixhbGxvd2VkOiEwfV0sdGhpcy5fZ2V0RXhwZXJpbWVudFJlc29sdmVkPW5ldyBQcm9taXNlKCh0PT57dGhpcy5fcmVzb2x2ZUdldEV4cGVyaW1lbnQ9dH0pKSx0aGlzLl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlcj1uZXcgWFIsdGhpcy5fcGFnZVNpemVJbnB1dD17dmFsdWU6IjEwMCIsaW52YWxpZDohMX0sdGhpcy5fcGFnZU51bWJlcklucHV0PXt2YWx1ZToiMSIsaW52YWxpZDohMX0sdGhpcy5fcGFnZUNvdW50U3RyPSI/Iix0aGlzLl9ocGFyYW1OYW1lPXhZdCx0aGlzLl9tZXRyaWNOYW1lPXdZdCx0aGlzLl9wcmV0dHlQcmludD1WWXR9cmVsb2FkKCl7dGhpcy5fcXVlcnlTZXJ2ZXIoKX1fY3N2VXJsKHQsZSl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUsImNzdiIpfV9qc29uVXJsKHQsZSl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUsImpzb24iKX1fbGF0ZXhVcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwibGF0ZXgiKX1fZG93bmxvYWREYXRhVXJsKHQsZSxuKXtyZXR1cm4gdGhpcy5iYWNrZW5kLmdldERvd25sb2FkVXJsKG4sdCxlLmNvbHVtbnNWaXNpYmlsaXR5KX1fY29tcHV0ZUV4cGVyaW1lbnRBbmRSZWxhdGVkUHJvcHMoKXtjb25zdCB0PVhZdDt0LmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYmFja2VuZCl8fHQuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5leHBlcmltZW50TmFtZSl8fHRoaXMuYmFja2VuZC5nZXRFeHBlcmltZW50KHtleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lfSkudGhlbigodD0+e1NlLmV4cG9ydHMuaXNFcXVhbCh0LHRoaXMuX2V4cGVyaW1lbnQpfHwodGhpcy5zZXQoIl9leHBlcmltZW50Iix0KSx0aGlzLl9jb21wdXRlSFBhcmFtcygpLHRoaXMuX2NvbXB1dGVNZXRyaWNzKCksdGhpcy5fcXVlcnlTZXJ2ZXIoKSx0aGlzLl9yZXNvbHZlR2V0RXhwZXJpbWVudCgpKX0pKS5maW5hbGx5KCgoKT0+e3RoaXMuX2NvbXB1dGVEYXRhRm91bmQoKX0pKX1fY29tcHV0ZURhdGFGb3VuZCgpe2NvbnN0IHQ9Qm9vbGVhbih0aGlzLl9leHBlcmltZW50JiZ0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zJiZ0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zLmxlbmd0aD4wJiZ0aGlzLl9leHBlcmltZW50Lm1ldHJpY0luZm9zJiZ0aGlzLl9leHBlcmltZW50Lm1ldHJpY0luZm9zLmxlbmd0aD4wKTt0aGlzLnNldCgiZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHQpLHRoaXMuc2V0KCJkYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsIXQpfV9jb21wdXRlSFBhcmFtcygpe2NvbnN0IHQ9W107dGhpcy5fZXhwZXJpbWVudC5ocGFyYW1JbmZvcy5mb3JFYWNoKCgoZSxuKT0+e2NvbnN0IGk9e2luZm86ZSxkaXNwbGF5ZWQ6bjw1LGZpbHRlcjp7fX07aS5pbmZvLmhhc093blByb3BlcnR5KCJkb21haW5EaXNjcmV0ZSIpPyhpLmZpbHRlci5kb21haW5EaXNjcmV0ZT1bXSxpLmluZm8uZG9tYWluRGlzY3JldGUuZm9yRWFjaCgodD0+e2kuZmlsdGVyLmRvbWFpbkRpc2NyZXRlLnB1c2goe3ZhbHVlOnQsY2hlY2tlZDohMH0pfSkpKToiREFUQV9UWVBFX0JPT0wiPT09aS5pbmZvLnR5cGU/aS5maWx0ZXIuZG9tYWluRGlzY3JldGU9W3t2YWx1ZTohMSxjaGVja2VkOiEwfSx7dmFsdWU6ITAsY2hlY2tlZDohMH1dOiJEQVRBX1RZUEVfRkxPQVQ2NCI9PT1pLmluZm8udHlwZT9pLmZpbHRlci5pbnRlcnZhbD17bWluOnt2YWx1ZToiIixpbnZhbGlkOiExfSxtYXg6e3ZhbHVlOiIiLGludmFsaWQ6ITF9fToiREFUQV9UWVBFX1NUUklORyI9PT1pLmluZm8udHlwZT9pLmZpbHRlci5yZWdleHA9IiI6Y29uc29sZS53YXJuKCJ1bmtub3duIGhwYXJhbS5pbmZvLnR5cGU6ICVzIixpLmluZm8udHlwZSksdC5wdXNoKGkpfSkpLHRoaXMuc2V0KCJfaHBhcmFtcyIsdCl9X2NvbXB1dGVNZXRyaWNzKCl7Y29uc3QgdD1bXTt0aGlzLl9leHBlcmltZW50Lm1ldHJpY0luZm9zLmZvckVhY2goKChlLG4pPT57dC5wdXNoKHtpbmZvOmUsZmlsdGVyOntpbnRlcnZhbDp7bWluOnt2YWx1ZToiIixpbnZhbGlkOiExfSxtYXg6e3ZhbHVlOiIiLGludmFsaWQ6ITF9fX0sZGlzcGxheWVkOm48NX0pfSkpLHRoaXMuc2V0KCJfbWV0cmljcyIsdCl9X2NvbXB1dGVTY2hlbWEoKXtyZXR1cm4gdGhpcy5faHBhcmFtcyYmdGhpcy5fbWV0cmljcz97aHBhcmFtQ29sdW1uczp0aGlzLl9ocGFyYW1zLm1hcCgodD0+KHtocGFyYW1JbmZvOnQuaW5mb30pKSksbWV0cmljQ29sdW1uczp0aGlzLl9tZXRyaWNzLm1hcCgodD0+KHttZXRyaWNJbmZvOnQuaW5mb30pKSl9OntocGFyYW1Db2x1bW5zOltdLG1ldHJpY0NvbHVtbnM6W119fV91cGRhdGVDb25maWd1cmF0aW9uKCl7dGhpcy5kZWJvdW5jZSgiX3VwZGF0ZUNvbmZpZ3VyYXRpb24iLCgoKT0+e3RoaXMuY29uZmlndXJhdGlvbj17c2NoZW1hOnRoaXMuX2NvbXB1dGVTY2hlbWEoKSxjb2x1bW5zVmlzaWJpbGl0eTp0aGlzLl9jb21wdXRlQ29sdW1uc1Zpc2liaWxpdHkoKSx2aXNpYmxlU2NoZW1hOnRoaXMuX2NvbXB1dGVWaXNpYmxlU2NoZW1hKCl9fSkpfV9jb21wdXRlQ29sdW1uc1Zpc2liaWxpdHkoKXtyZXR1cm4gdGhpcy5faHBhcmFtcyYmdGhpcy5fbWV0cmljcz90aGlzLl9ocGFyYW1zLm1hcCgodD0+dC5kaXNwbGF5ZWQpKS5jb25jYXQodGhpcy5fbWV0cmljcy5tYXAoKHQ9PnQuZGlzcGxheWVkKSkpOltdfV9jb21wdXRlVmlzaWJsZVNjaGVtYSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3tocGFyYW1JbmZvczp0aGlzLl9ocGFyYW1zLmZpbHRlcigodD0+dC5kaXNwbGF5ZWQpKS5tYXAoKHQ9PnQuaW5mbykpLG1ldHJpY0luZm9zOnRoaXMuX21ldHJpY3MuZmlsdGVyKCh0PT50LmRpc3BsYXllZCkpLm1hcCgodD0+dC5pbmZvKSl9OntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX19X3F1ZXJ5U2VydmVyKCl7dGhpcy5kZWJvdW5jZSgicXVlcnlTZXJ2ZXIiLCgoKT0+dGhpcy5fcXVlcnlTZXJ2ZXJOb0RlYm91bmNlKCkpLDEwMCl9X3F1ZXJ5U2VydmVyTm9EZWJvdW5jZSgpe2lmKHRoaXMuX2hwYXJhbXMmJnRoaXMuX21ldHJpY3MpcmV0dXJuIHRoaXMuX3NlbmRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKS50aGVuKHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCgoe3ZhbHVlOnQsY2FuY2VsbGVkOmV9KT0+e2V8fCh0LnRvdGFsU2l6ZT49MD8odGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLFN0cmluZyhNYXRoLmNlaWwodC50b3RhbFNpemUvK3RoaXMuX3BhZ2VTaXplSW5wdXQudmFsdWUpKSksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsdC50b3RhbFNpemUpKToodGhpcy5zZXQoIl9wYWdlQ291bnRTdHIiLCI/IiksdGhpcy5zZXQoIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsIlVua25vd24iKSkscVl0KHRoaXMsInNlc3Npb25Hcm91cHMiLHQuc2Vzc2lvbkdyb3VwcykpfSkpKX1fc2VuZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpe2NvbnN0IHQ9dGhpcy5fYnVpbGRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKTtpZihudWxsIT09dClyZXR1cm4gdGhpcy5zZXQoIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsdCksdGhpcy5fbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5iYWNrZW5kLmxpc3RTZXNzaW9uR3JvdXBzKHQpfV9idWlsZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpe2NvbnN0IHQ9dGhpcztsZXQgZT0hMDtmdW5jdGlvbiBuKG4pe2NvbnN0IGk9dC5nZXQobisiLm1pbi52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KHZvaWQgMCE9PWkpO2NvbnN0IHI9IiI9PT1pPyItSW5maW5pdHkiOitpO3Quc2V0KG4rIi5taW4uaW52YWxpZCIsaXNOYU4ocikpLGU9ZSYmIWlzTmFOKHIpO2NvbnN0IG89dC5nZXQobisiLm1heC52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KHZvaWQgMCE9PW8pO2NvbnN0IGE9IiI9PT1vPyJJbmZpbml0eSI6K287cmV0dXJuIHQuc2V0KG4rIi5tYXguaW52YWxpZCIsaXNOYU4oYSkpLGU9ZSYmIWlzTmFOKGEpLGlzTmFOKHIpfHxpc05hTihhKT9udWxsOnttaW5WYWx1ZTpyLG1heFZhbHVlOmF9fWZ1bmN0aW9uIGkobil7Y29uc3QgaT10LmdldChuKyIudmFsdWUiKTtjb25zb2xlLmFzc2VydCh2b2lkIDAhPT1pKTtjb25zdCByPStpLG89TnVtYmVyLmlzSW50ZWdlcihyKSYmcj4wO3JldHVybiB0LnNldChuKyIuaW52YWxpZCIsIW8pLGU9ZSYmbyxvP3I6bnVsbH1jb25zdCByPXRoaXMuX3N0YXR1c2VzLmZpbHRlcigodD0+dC5hbGxvd2VkKSkubWFwKCh0PT50LnZhbHVlKSk7bGV0IG89W107aWYodGhpcy5faHBhcmFtcy5mb3JFYWNoKCgodCxlKT0+e2xldCBpPXtocGFyYW06dC5pbmZvLm5hbWV9O2lmKHQuZmlsdGVyLmRvbWFpbkRpc2NyZXRlKWkuZmlsdGVyRGlzY3JldGU9W10sdC5maWx0ZXIuZG9tYWluRGlzY3JldGUuZm9yRWFjaCgodD0+e3QuY2hlY2tlZCYmaS5maWx0ZXJEaXNjcmV0ZS5wdXNoKHQudmFsdWUpfSkpO2Vsc2UgaWYodC5maWx0ZXIuaW50ZXJ2YWwpaS5maWx0ZXJJbnRlcnZhbD1uKCJfaHBhcmFtcy4iK2UrIi5maWx0ZXIuaW50ZXJ2YWwiKTtlbHNle2lmKCF0LmZpbHRlci5yZWdleHApcmV0dXJuIGNvbnNvbGUuZXJyb3IoImhwYXJhbS5maWx0ZXIgd2l0aCBubyBkb21haW5EaXNjcmV0ZSwgaW50ZXJ2YWwgb3IgcmVnZXhwIHByb3BlcnRpZXMgc2V0OiAlcyIsdCksbnVsbDtpLmZpbHRlclJlZ2V4cD10LmZpbHRlci5yZWdleHB9by5wdXNoKGkpfSkpLHRoaXMuX21ldHJpY3MuZm9yRWFjaCgoKHQsZSk9PntsZXQgaT17bWV0cmljOnQuaW5mby5uYW1lLGZpbHRlckludGVydmFsOm4oIl9tZXRyaWNzLiIrZSsiLmZpbHRlci5pbnRlcnZhbCIpfTtvLnB1c2goaSl9KSksdm9pZCAwIT09dGhpcy5fc29ydEJ5SW5kZXgmJnZvaWQgMCE9PXRoaXMuX3NvcnREaXJlY3Rpb24pe2lmKCEodGhpcy5fc29ydEJ5SW5kZXggaW4gbykpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIk5vIGNvbHVtbiBpbiBjb2xQYXJhbXMgd2l0aCBpbmRleCBzb3J0QnlJbmRleDogJXMiLHRoaXMuX3NvcnRCeUluZGV4KSxudWxsO29bdGhpcy5fc29ydEJ5SW5kZXhdLm9yZGVyPTA9PT10aGlzLl9zb3J0RGlyZWN0aW9uPyJPUkRFUl9BU0MiOiJPUkRFUl9ERVNDIn1jb25zdCBhPWkoIl9wYWdlTnVtYmVySW5wdXQiKSxzPWkoIl9wYWdlU2l6ZUlucHV0Iik7cmV0dXJuIGU/e2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsYWxsb3dlZFN0YXR1c2VzOnIsY29sUGFyYW1zOm8sc3RhcnRJbmRleDpzKihhLTEpLHNsaWNlU2l6ZTpzfTpudWxsfV9tZXRyaWNTb3J0QnlJbmRleCh0KXtyZXR1cm4gdCt0aGlzLl9ocGFyYW1zLmxlbmd0aH19O29YdC50ZW1wbGF0ZT1fZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIGh5cGVycGFyYW1ldGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+SHlwZXJwYXJhbWV0ZXJzPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tfaHBhcmFtc319IiBhcz0iaHBhcmFtIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhwYXJhbSI+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgIGNoZWNrZWQ9Int7aHBhcmFtLmRpc3BsYXllZH19IgogICAgICAgICAgICAgIGNsYXNzPSJocGFyYW0tY2hlY2tib3giCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbS5pbmZvKV1dCiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgIDwhLS0gUHJlY2lzZWx5IG9uZSBvZiB0aGUgdGVtcGxhdGVzIGJlbG93IHdpbGwgYmUgc3RhbXBlZC4tLT4KICAgICAgICAgICAgPCEtLSAxLiBBIGxpc3Qgb2YgY2hlY2tib3hlcyAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICAgICAgY2hlY2tlZD0ie3tpdGVtLmNoZWNrZWR9fSIKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRpc2NyZXRlLXZhbHVlLWNoZWNrYm94IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgW1tfcHJldHR5UHJpbnQoaXRlbS52YWx1ZSldXQogICAgICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8IS0tIDIuIEEgbnVtZXJpYyBpbnRlcnZhbCAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWxdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJbW2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWRdXSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwhLS0gMy4gQSByZWdleHAgLS0+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tocGFyYW0uZmlsdGVyLnJlZ2V4cF1dIj4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJSZWd1bGFyIGV4cHJlc3Npb24iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLnJlZ2V4cH19IgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gbWV0cmljcyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+TWV0cmljczwvZGl2PgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7X21ldHJpY3N9fSIgYXM9Im1ldHJpYyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZXRyaWMiPgogICAgICAgICAgICA8IS0tIFRPRE8oZXJleik6IE1ha2UgaXQgZWFzaWVyIHRvIGhhbmRsZSBhIGxhcmdlIG51bWJlciBvZgogICAgICAgICAgICAgICAgICBtZXRyaWNzOgogICAgICAgICAgICAgICAgICAxLiBBZGQgYW4gJ2lzb2xhdG9yJyByYWRpby1idXR0b24gdG8gc2VsZWN0IGp1c3Qgb25lCiAgICAgICAgICAgICAgICAgIG1ldHJpYyBhbmQKICAgICAgICAgICAgICAgICAgaGlkZSBhbGwgdGhlIHJlc3QKICAgICAgICAgICAgICAgICAgMi4gQWRkIGEgJ3RvZ2dsZS1hbGwnIGJ1dHRvbiB0aGF0IHdpbGwgaGlkZS91bmhpZGUKICAgICAgICAgICAgICAgICAgICBhbGwgdGhlCiAgICAgICAgICAgICAgICAgIG1ldHJpY3MuCiAgICAgICAgICAgICAgICAgIFVzZSBzaW1pbGFyIGxvZ2ljL2FwcGVhcmFuY2UgdG8gdGhlIHJ1bi1zZWxlY3RvciBvZgogICAgICAgICAgICAgICAgICBzY2FsYXJzLi0tPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjaGVja2VkPSJ7e21ldHJpYy5kaXNwbGF5ZWR9fSIKICAgICAgICAgICAgICBjbGFzcz0ibWV0cmljLWNoZWNrYm94IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWMuaW5mbyldXQogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWluIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIKICAgICAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iTWF4IgogICAgICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgdmFsdWU9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5tYXgudmFsdWV9fSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgICAgICBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWF4LmludmFsaWR9fSIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gc3RhdHVzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5TdGF0dXM8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zdGF0dXNlc11dIiBhcz0ic3RhdHVzIj4KICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e3N0YXR1cy5hbGxvd2VkfX0iIG9uLWNoYW5nZT0iX3F1ZXJ5U2VydmVyIj4KICAgICAgICAgICAgW1tzdGF0dXMuZGlzcGxheU5hbWVdXQogICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBzb3J0aW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5Tb3J0aW5nPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJTb3J0IGJ5IgogICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzZWxlY3RlZD0ie3tfc29ydEJ5SW5kZXh9fSIKICAgICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2hwYXJhbXNdXSIgYXM9ImhwYXJhbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+IFtbX2hwYXJhbU5hbWUoaHBhcmFtLmluZm8pXV0gPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19tZXRyaWNzXV0iIGFzPSJtZXRyaWMiPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPiBbW19tZXRyaWNOYW1lKG1ldHJpYy5pbmZvKV1dIDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIGxhYmVsPSJEaXJlY3Rpb24iCiAgICAgICAgICBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zb3J0RGlyZWN0aW9ufX0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPkFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+RGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIHBhZ2luZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+UGFnaW5nPC9kaXY+CiAgICAgICAgPGRpdj4KICAgICAgICAgIE51bWJlciBvZiBtYXRjaGluZyBzZXNzaW9uIGdyb3VwczogW1tfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHJdXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2UtbnVtYmVyLWlucHV0Ij4KICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICBsYWJlbD0iUGFnZSAjIgogICAgICAgICAgICB2YWx1ZT0ie3tfcGFnZU51bWJlcklucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VOdW1iZXJJbnB1dC5pbnZhbGlkXV0iCiAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgID4KICAgICAgICAgICAgPGRpdiBzbG90PSJzdWZmaXgiIGNsYXNzPSJwYWdlLXN1ZmZpeCI+LyBbW19wYWdlQ291bnRTdHJdXTwvZGl2PgogICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCBwYWdlLXNpemUtaW5wdXQiPgogICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgIGxhYmVsPSJNYXggIyBvZiBzZXNzaW9uIGdyb3VwcyBwZXIgcGFnZToiCiAgICAgICAgICAgIHZhbHVlPSJ7e19wYWdlU2l6ZUlucHV0LnZhbHVlfX0iCiAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iCiAgICAgICAgICAgIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiCiAgICAgICAgICAgIGludmFsaWQ9IltbX3BhZ2VTaXplSW5wdXQuaW52YWxpZF1dIgogICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBkb3dubG9hZCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXNzaW9uR3JvdXBzUmVxdWVzdF1dIj4KICAgICAgICAgIERvd25sb2FkIGRhdGEgYXMKICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJjc3ZMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLmNzdiIKICAgICAgICAgICAgICBocmVmPSJbW19jc3ZVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5DU1Y8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJqc29uTGluayIKICAgICAgICAgICAgICBkb3dubG9hZD0iaHBhcmFtc190YWJsZS5qc29uIgogICAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBpZD0ibGF0ZXhMaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLnRleCIKICAgICAgICAgICAgICBocmVmPSJbW19sYXRleFVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iCiAgICAgICAgICAgICAgPkxhVGVYPC9hCiAgICAgICAgICAgID4KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7CiAgICAgIH0KICAgICAgLmRpc2NyZXRlLXZhbHVlLWNoZWNrYm94LAogICAgICAubWV0cmljLWNoZWNrYm94LAogICAgICAuaHBhcmFtLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuZGlzY3JldGUtdmFsdWUtY2hlY2tib3ggewogICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICB9CiAgICAgIC5ocGFyYW0sCiAgICAgIC5tZXRyaWMgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5pbmxpbmUtZWxlbWVudCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiA0MCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgICAgLnBhZ2UtbnVtYmVyLWlucHV0IHsKICAgICAgICB3aWR0aDogMjAlOwogICAgICB9CiAgICAgIC5wYWdlLXNpemUtaW5wdXQgewogICAgICAgIHdpZHRoOiA2MCU7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIHBhcGVyLWxpc3Rib3ggewogICAgICAgIG1heC1oZWlnaHQ6IDE1ZW07CiAgICAgIH0KICAgICAgLnBhZ2Utc3VmZml4IHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sb1h0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG9YdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sb1h0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxvWHQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxvWHQucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxvWHQucHJvdG90eXBlLCJfZXhwZXJpbWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sb1h0LnByb3RvdHlwZSwiX2hwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG9YdC5wcm90b3R5cGUsIl9tZXRyaWNzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sb1h0LnByb3RvdHlwZSwiX3N0YXR1c2VzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG9YdC5wcm90b3R5cGUsIl9nZXRFeHBlcmltZW50UmVzb2x2ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxvWHQucHJvdG90eXBlLCJfcmVzb2x2ZUdldEV4cGVyaW1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sb1h0LnByb3RvdHlwZSwiX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLG9YdC5wcm90b3R5cGUsIl9zb3J0QnlJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxvWHQucHJvdG90eXBlLCJfc29ydERpcmVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxvWHQucHJvdG90eXBlLCJfcGFnZVNpemVJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxvWHQucHJvdG90eXBlLCJfcGFnZU51bWJlcklucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLG9YdC5wcm90b3R5cGUsIl9wYWdlQ291bnRTdHIiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sb1h0LnByb3RvdHlwZSwiX3RvdGFsU2Vzc2lvbkdyb3Vwc0NvdW50U3RyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG9YdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsdm9pZCAwKSx0KFthKCJiYWNrZW5kIiwiZXhwZXJpbWVudE5hbWUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLG9YdC5wcm90b3R5cGUsIl9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcyIsbnVsbCksdChbYSgiX2hwYXJhbXMuKiIsIl9tZXRyaWNzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLG9YdC5wcm90b3R5cGUsIl91cGRhdGVDb25maWd1cmF0aW9uIixudWxsKSxvWHQ9dChbaSgidGYtaHBhcmFtcy1xdWVyeS1wYW5lIildLG9YdCk7bGV0IGFYdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9wdGlvbnM9bnVsbH1fY29uZmlndXJhdGlvbkNoYW5nZWQoKXtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLGU9dGhpcy5jb25maWd1cmF0aW9uLnNjaGVtYSxuPXtjb2x1bW5zOnQuaHBhcmFtSW5mb3MubWFwKCgobixpKT0+KHtuYW1lOnhZdChuKSxpbmRleDppLGFic29sdXRlSW5kZXg6SVl0KGUsdCxpKSxzY2FsZTp0aGlzLl9pc051bWVyaWNDb2x1bW4oaSk/IkxJTkVBUiI6Ik5PTl9OVU1FUklDIn0pKSkuY29uY2F0KHQubWV0cmljSW5mb3MubWFwKCgobixpKT0+e2NvbnN0IHI9aSt0LmhwYXJhbUluZm9zLmxlbmd0aDtyZXR1cm57c2NhbGU6IkxJTkVBUiIsbmFtZTp3WXQobiksaW5kZXg6cixhYnNvbHV0ZUluZGV4OklZdChlLHQscil9fSkpKSxtaW5Db2xvcjoiIzAwMDBGRiIsbWF4Q29sb3I6IiNGRjAwMDAiLGNvbmZpZ3VyYXRpb246dGhpcy5jb25maWd1cmF0aW9ufTt0aGlzLnNldCgib3B0aW9ucyIsbiksRGkoKSx0aGlzLnNldCgib3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgiLHRoaXMuX2RlZmF1bHRDb2xvckJ5Q29sdW1uSW5kZXgoKSl9X3Vuc2VsZWN0RGlzYWJsZWRMb2dTY2FsZXMoKXtudWxsIT09dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMuY29sdW1ucy5mb3JFYWNoKCh0PT57Y29uc3QgZT0ib3B0aW9ucy5jb2x1bW5zLiIrdC5pbmRleDt0aGlzLl9hbGxvd0xvZ1NjYWxlKHQpfHwiTE9HIiE9PXQuc2NhbGV8fHRoaXMuc2V0KGUrIi5zY2FsZSIsIkxJTkVBUiIpfSkpfV9hbGxvd0xvZ1NjYWxlKHQpe2lmKCF0aGlzLl9pc051bWVyaWNDb2x1bW4odC5pbmRleCl8fCF0aGlzLnNlc3Npb25Hcm91cHMpcmV0dXJuITE7Y29uc3RbZSxuXT16WXQodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEsdGhpcy5zZXNzaW9uR3JvdXBzLHQuaW5kZXgpO3JldHVybiBlPjB8fG48MH1faXNOdW1lcmljQ29sdW1uKHQpe3JldHVybiB0Pj10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5sZW5ndGh8fCJEQVRBX1RZUEVfRkxPQVQ2NCI9PT10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc1t0XS50eXBlfV9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCl7aWYodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoPjApcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aDtjb25zdCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmZpbmRJbmRleCgodD0+IkRBVEFfVFlQRV9GTE9BVDY0Ij09PXQudHlwZSkpO3JldHVybi0xIT09dD90OnZvaWQgMH19O2FYdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFuZWwiPgogICAgICA8IS0tICdDb2xvciBieScgZHJvcCBkb3duIG1lbnUgLS0+CiAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgbGFiZWw9IkNvbG9yIGJ5IgogICAgICAgIGlkPSJjb2xvckJ5RHJvcERvd25NZW51IgogICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgID4KICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgc2VsZWN0ZWQ9Int7b3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXh9fSIKICAgICAgICAgIGlkPSJjb2xvckJ5TGlzdEJveCIKICAgICAgICA+CiAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgIGl0ZW1zPSJbW29wdGlvbnMuY29sdW1uc11dIgogICAgICAgICAgICBhcz0iY29sdW1uIgogICAgICAgICAgICBpZD0iY29sb3JCeUNvbHVtblRlbXBsYXRlIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItaXRlbSBkaXNhYmxlZD0iW1shX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICAgIFtbY29sdW1uLm5hbWVdXQogICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgoKICAgICAgPCEtLSBDb2x1bW5zIHNjYWxlcyAtLT4KICAgICAgPGRpdiBjbGFzcz0iY29sdW1ucy1jb250YWluZXIiPgogICAgICAgIDwhLS0gU2NhbGUgb3B0aW9ucyBmb3IgZWFjaCBudW1lcmljIGZlYXR1cmUgLS0+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tvcHRpb25zLmNvbHVtbnN9fSIgYXM9ImNvbHVtbiI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi10aXRsZSI+W1tjb2x1bW4ubmFtZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1ncm91cAogICAgICAgICAgICAgICAgICBjbGFzcz0ic2NhbGUtcmFkaW8tZ3JvdXAiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbHVtbi5zY2FsZX19IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IkxJTkVBUiI+CiAgICAgICAgICAgICAgICAgICAgTGluZWFyCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8IS0tIFRoZSBpZCBoZXJlIGlzIHVzZWQgdG8gYWNjZXNzIHRoaXMgYnV0dG9uIGluIHVuaXQKICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy4tLT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGlkPSJsb2dTY2FsZUJ1dHRvbl9bW2NvbHVtbi5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgbmFtZT0iTE9HIgogICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfYWxsb3dMb2dTY2FsZShjb2x1bW4sIHNlc3Npb25Hcm91cHMuKildXSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIExvZ2FyaXRobWljCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IlFVQU5USUxFIj4KICAgICAgICAgICAgICAgICAgICBRdWFudGlsZQogICAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5jb250cm9sLXBhbmVsIHsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQogICAgICAuY29sdW1uIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAxcHggZGFya2dyYXk7CiAgICAgICAgcGFkZGluZzogM3B4OwogICAgICB9CiAgICAgIC5jb2x1bW4tdGl0bGUgewogICAgICAgIC8qIEZpdCBldmVyeSB0aXRsZSBpbiBvbmUgbGluZSBzbyB0aGUgcmFkaW8gYm94ZXMgYWxpZ24gdmVydGljYWxseS4gKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CiAgICAgIC5jb2x1bW5zLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CiAgICAgIC5zY2FsZS1yYWRpby1ncm91cCBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICBwYXBlci1saXN0Ym94IHsKICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYVh0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sYVh0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYVh0LnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKSx0KFthKCJjb25maWd1cmF0aW9uLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGFYdC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uQ2hhbmdlZCIsbnVsbCksdChbYSgic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxhWHQucHJvdG90eXBlLCJfdW5zZWxlY3REaXNhYmxlZExvZ1NjYWxlcyIsbnVsbCksYVh0PXQoW2koInRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzIildLGFYdCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KY29uc3Qgc1h0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZudWxsIT13aW5kb3cuY3VzdG9tRWxlbWVudHMmJnZvaWQgMCE9PXdpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrLGxYdD0odCxlLG49bnVsbCk9Pntmb3IoO2UhPT1uOyl7Y29uc3Qgbj1lLm5leHRTaWJsaW5nO3QucmVtb3ZlQ2hpbGQoZSksZT1ufX0sY1h0PWB7e2xpdC0ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKX19fWAsdVh0PWBceDNjIS0tJHtjWHR9LS1ceDNlYCxoWHQ9bmV3IFJlZ0V4cChgJHtjWHR9fCR7dVh0fWApLGRYdD0iJGxpdCQiO2NsYXNzIHBYdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucGFydHM9W10sdGhpcy5lbGVtZW50PWU7Y29uc3Qgbj1bXSxpPVtdLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLmNvbnRlbnQsMTMzLG51bGwsITEpO2xldCBvPTAsYT0tMSxzPTA7Y29uc3R7c3RyaW5nczpsLHZhbHVlczp7bGVuZ3RoOmN9fT10O2Zvcig7czxjOyl7Y29uc3QgdD1yLm5leHROb2RlKCk7aWYobnVsbCE9PXQpe2lmKGErKywxPT09dC5ub2RlVHlwZSl7aWYodC5oYXNBdHRyaWJ1dGVzKCkpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLHtsZW5ndGg6bn09ZTtsZXQgaT0wO2ZvcihsZXQgdD0wO3Q8bjt0KyspZlh0KGVbdF0ubmFtZSxkWHQpJiZpKys7Zm9yKDtpLS0gPjA7KXtjb25zdCBlPV9YdC5leGVjKGxbc10pWzJdLG49ZS50b0xvd2VyQ2FzZSgpK2RYdCxpPXQuZ2V0QXR0cmlidXRlKG4pO3QucmVtb3ZlQXR0cmlidXRlKG4pO2NvbnN0IHI9aS5zcGxpdChoWHQpO3RoaXMucGFydHMucHVzaCh7dHlwZToiYXR0cmlidXRlIixpbmRleDphLG5hbWU6ZSxzdHJpbmdzOnJ9KSxzKz1yLmxlbmd0aC0xfX0iVEVNUExBVEUiPT09dC50YWdOYW1lJiYoaS5wdXNoKHQpLHIuY3VycmVudE5vZGU9dC5jb250ZW50KX1lbHNlIGlmKDM9PT10Lm5vZGVUeXBlKXtjb25zdCBlPXQuZGF0YTtpZihlLmluZGV4T2YoY1h0KT49MCl7Y29uc3QgaT10LnBhcmVudE5vZGUscj1lLnNwbGl0KGhYdCksbz1yLmxlbmd0aC0xO2ZvcihsZXQgZT0wO2U8bztlKyspe2xldCBuLG89cltlXTtpZigiIj09PW8pbj1nWHQoKTtlbHNle2NvbnN0IHQ9X1h0LmV4ZWMobyk7bnVsbCE9PXQmJmZYdCh0WzJdLGRYdCkmJihvPW8uc2xpY2UoMCx0LmluZGV4KSt0WzFdK3RbMl0uc2xpY2UoMCwtZFh0Lmxlbmd0aCkrdFszXSksbj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShvKX1pLmluc2VydEJlZm9yZShuLHQpLHRoaXMucGFydHMucHVzaCh7dHlwZToibm9kZSIsaW5kZXg6KythfSl9IiI9PT1yW29dPyhpLmluc2VydEJlZm9yZShnWHQoKSx0KSxuLnB1c2godCkpOnQuZGF0YT1yW29dLHMrPW99fWVsc2UgaWYoOD09PXQubm9kZVR5cGUpaWYodC5kYXRhPT09Y1h0KXtjb25zdCBlPXQucGFyZW50Tm9kZTtudWxsIT09dC5wcmV2aW91c1NpYmxpbmcmJmEhPT1vfHwoYSsrLGUuaW5zZXJ0QmVmb3JlKGdYdCgpLHQpKSxvPWEsdGhpcy5wYXJ0cy5wdXNoKHt0eXBlOiJub2RlIixpbmRleDphfSksbnVsbD09PXQubmV4dFNpYmxpbmc/dC5kYXRhPSIiOihuLnB1c2godCksYS0tKSxzKyt9ZWxzZXtsZXQgZT0tMTtmb3IoOy0xIT09KGU9dC5kYXRhLmluZGV4T2YoY1h0LGUrMSkpOyl0aGlzLnBhcnRzLnB1c2goe3R5cGU6Im5vZGUiLGluZGV4Oi0xfSkscysrfX1lbHNlIHIuY3VycmVudE5vZGU9aS5wb3AoKX1mb3IoY29uc3QgdCBvZiBuKXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19Y29uc3QgZlh0PSh0LGUpPT57Y29uc3Qgbj10Lmxlbmd0aC1lLmxlbmd0aDtyZXR1cm4gbj49MCYmdC5zbGljZShuKT09PWV9LG1YdD10PT4tMSE9PXQuaW5kZXgsZ1h0PSgpPT5kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSxfWHQ9LyhbIFx4MDlceDBhXHgwY1x4MGRdKShbXlwwLVx4MUZceDdGLVx4OUYgIic+PS9dKykoWyBceDA5XHgwYVx4MGNceDBkXSo9WyBceDA5XHgwYVx4MGNceDBkXSooPzpbXiBceDA5XHgwYVx4MGNceDBkIidgPD49XSp8IlteIl0qfCdbXiddKikpJC87ZnVuY3Rpb24geVh0KHQsZSl7Y29uc3R7ZWxlbWVudDp7Y29udGVudDpufSxwYXJ0czppfT10LHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihuLDEzMyxudWxsLCExKTtsZXQgbz1iWHQoaSksYT1pW29dLHM9LTEsbD0wO2NvbnN0IGM9W107bGV0IHU9bnVsbDtmb3IoO3IubmV4dE5vZGUoKTspe3MrKztjb25zdCB0PXIuY3VycmVudE5vZGU7Zm9yKHQucHJldmlvdXNTaWJsaW5nPT09dSYmKHU9bnVsbCksZS5oYXModCkmJihjLnB1c2godCksbnVsbD09PXUmJih1PXQpKSxudWxsIT09dSYmbCsrO3ZvaWQgMCE9PWEmJmEuaW5kZXg9PT1zOylhLmluZGV4PW51bGwhPT11Py0xOmEuaW5kZXgtbCxvPWJYdChpLG8pLGE9aVtvXX1jLmZvckVhY2goKHQ9PnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSkpfWNvbnN0IHZYdD10PT57bGV0IGU9MTE9PT10Lm5vZGVUeXBlPzA6MTtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSk7Zm9yKDtuLm5leHROb2RlKCk7KWUrKztyZXR1cm4gZX0sYlh0PSh0LGU9LTEpPT57Zm9yKGxldCBuPWUrMTtuPHQubGVuZ3RoO24rKylpZihtWHQodFtuXSkpcmV0dXJuIG47cmV0dXJuLTF9LHhYdD1uZXcgV2Vha01hcCx3WHQ9e30sU1h0PXt9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovCmNsYXNzIE1YdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fX3BhcnRzPVtdLHRoaXMudGVtcGxhdGU9dCx0aGlzLnByb2Nlc3Nvcj1lLHRoaXMub3B0aW9ucz1ufXVwZGF0ZSh0KXtsZXQgZT0wO2Zvcihjb25zdCBuIG9mIHRoaXMuX19wYXJ0cyl2b2lkIDAhPT1uJiZuLnNldFZhbHVlKHRbZV0pLGUrKztmb3IoY29uc3QgdCBvZiB0aGlzLl9fcGFydHMpdm9pZCAwIT09dCYmdC5jb21taXQoKX1fY2xvbmUoKXtjb25zdCB0PXNYdD90aGlzLnRlbXBsYXRlLmVsZW1lbnQuY29udGVudC5jbG9uZU5vZGUoITApOmRvY3VtZW50LmltcG9ydE5vZGUodGhpcy50ZW1wbGF0ZS5lbGVtZW50LmNvbnRlbnQsITApLGU9W10sbj10aGlzLnRlbXBsYXRlLnBhcnRzLGk9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih0LDEzMyxudWxsLCExKTtsZXQgcixvPTAsYT0wLHM9aS5uZXh0Tm9kZSgpO2Zvcig7bzxuLmxlbmd0aDspaWYocj1uW29dLG1YdChyKSl7Zm9yKDthPHIuaW5kZXg7KWErKywiVEVNUExBVEUiPT09cy5ub2RlTmFtZSYmKGUucHVzaChzKSxpLmN1cnJlbnROb2RlPXMuY29udGVudCksbnVsbD09PShzPWkubmV4dE5vZGUoKSkmJihpLmN1cnJlbnROb2RlPWUucG9wKCkscz1pLm5leHROb2RlKCkpO2lmKCJub2RlIj09PXIudHlwZSl7Y29uc3QgdD10aGlzLnByb2Nlc3Nvci5oYW5kbGVUZXh0RXhwcmVzc2lvbih0aGlzLm9wdGlvbnMpO3QuaW5zZXJ0QWZ0ZXJOb2RlKHMucHJldmlvdXNTaWJsaW5nKSx0aGlzLl9fcGFydHMucHVzaCh0KX1lbHNlIHRoaXMuX19wYXJ0cy5wdXNoKC4uLnRoaXMucHJvY2Vzc29yLmhhbmRsZUF0dHJpYnV0ZUV4cHJlc3Npb25zKHMsci5uYW1lLHIuc3RyaW5ncyx0aGlzLm9wdGlvbnMpKTtvKyt9ZWxzZSB0aGlzLl9fcGFydHMucHVzaCh2b2lkIDApLG8rKztyZXR1cm4gc1h0JiYoZG9jdW1lbnQuYWRvcHROb2RlKHQpLGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodCkpLHR9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovY29uc3QgRVh0PXdpbmRvdy50cnVzdGVkVHlwZXMmJnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImxpdC1odG1sIix7Y3JlYXRlSFRNTDp0PT50fSksVFh0PWAgJHtjWHR9IGA7Y2xhc3MgQ1h0e2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dm9pZCAwLHRoaXMuX19wZW5kaW5nVmFsdWU9dm9pZCAwLHRoaXMub3B0aW9ucz10fWFwcGVuZEludG8odCl7dGhpcy5zdGFydE5vZGU9dC5hcHBlbmRDaGlsZChnWHQoKSksdGhpcy5lbmROb2RlPXQuYXBwZW5kQ2hpbGQoZ1h0KCkpfWluc2VydEFmdGVyTm9kZSh0KXt0aGlzLnN0YXJ0Tm9kZT10LHRoaXMuZW5kTm9kZT10Lm5leHRTaWJsaW5nfWFwcGVuZEludG9QYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9Z1h0KCkpLHQuX19pbnNlcnQodGhpcy5lbmROb2RlPWdYdCgpKX1pbnNlcnRBZnRlclBhcnQodCl7dC5fX2luc2VydCh0aGlzLnN0YXJ0Tm9kZT1nWHQoKSksdGhpcy5lbmROb2RlPXQuZW5kTm9kZSx0LmVuZE5vZGU9dGhpcy5zdGFydE5vZGV9c2V0VmFsdWUodCl7dGhpcy5fX3BlbmRpbmdWYWx1ZT10fWNvbW1pdCgpe2lmKG51bGw9PT10aGlzLnN0YXJ0Tm9kZS5wYXJlbnROb2RlKXJldHVybjtmb3IoOyJmdW5jdGlvbiI9PXR5cGVvZih0PXRoaXMuX19wZW5kaW5nVmFsdWUpJiZ4WHQuaGFzKHQpOyl7Y29uc3QgdD10aGlzLl9fcGVuZGluZ1ZhbHVlO3RoaXMuX19wZW5kaW5nVmFsdWU9d1h0LHQodGhpcyl9dmFyIHQ7Y29uc3QgZT10aGlzLl9fcGVuZGluZ1ZhbHVlO2UhPT13WHQmJigodD0+bnVsbD09PXR8fCEoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpKGUpP2UhPT10aGlzLnZhbHVlJiZ0aGlzLl9fY29tbWl0VGV4dChlKTplIGluc3RhbmNlb2YgY2xhc3N7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5zdHJpbmdzPXQsdGhpcy52YWx1ZXM9ZSx0aGlzLnR5cGU9bix0aGlzLnByb2Nlc3Nvcj1pfWdldEhUTUwoKXtjb25zdCB0PXRoaXMuc3RyaW5ncy5sZW5ndGgtMTtsZXQgZT0iIixuPSExO2ZvcihsZXQgaT0wO2k8dDtpKyspe2NvbnN0IHQ9dGhpcy5zdHJpbmdzW2ldLHI9dC5sYXN0SW5kZXhPZigiXHgzYyEtLSIpO249KHI+LTF8fG4pJiYtMT09PXQuaW5kZXhPZigiLS1ceDNlIixyKzEpO2NvbnN0IG89X1h0LmV4ZWModCk7ZSs9bnVsbD09PW8/dCsobj9UWHQ6dVh0KTp0LnN1YnN0cigwLG8uaW5kZXgpK29bMV0rb1syXStkWHQrb1szXStjWHR9cmV0dXJuIGUrPXRoaXMuc3RyaW5nc1t0XSxlfWdldFRlbXBsYXRlRWxlbWVudCgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtsZXQgZT10aGlzLmdldEhUTUwoKTtyZXR1cm4gdm9pZCAwIT09RVh0JiYoZT1FWHQuY3JlYXRlSFRNTChlKSksdC5pbm5lckhUTUw9ZSx0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLz90aGlzLl9fY29tbWl0VGVtcGxhdGVSZXN1bHQoZSk6ZSBpbnN0YW5jZW9mIE5vZGU/dGhpcy5fX2NvbW1pdE5vZGUoZSk6KHQ9PkFycmF5LmlzQXJyYXkodCl8fCEoIXR8fCF0W1N5bWJvbC5pdGVyYXRvcl0pKShlKT90aGlzLl9fY29tbWl0SXRlcmFibGUoZSk6ZT09PVNYdD8odGhpcy52YWx1ZT1TWHQsdGhpcy5jbGVhcigpKTp0aGlzLl9fY29tbWl0VGV4dChlKSl9X19pbnNlcnQodCl7dGhpcy5lbmROb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsdGhpcy5lbmROb2RlKX1fX2NvbW1pdE5vZGUodCl7dGhpcy52YWx1ZSE9PXQmJih0aGlzLmNsZWFyKCksdGhpcy5fX2luc2VydCh0KSx0aGlzLnZhbHVlPXQpfV9fY29tbWl0VGV4dCh0KXtjb25zdCBlPXRoaXMuc3RhcnROb2RlLm5leHRTaWJsaW5nLG49InN0cmluZyI9PXR5cGVvZih0PW51bGw9PXQ/IiI6dCk/dDpTdHJpbmcodCk7ZT09PXRoaXMuZW5kTm9kZS5wcmV2aW91c1NpYmxpbmcmJjM9PT1lLm5vZGVUeXBlP2UuZGF0YT1uOnRoaXMuX19jb21taXROb2RlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKSx0aGlzLnZhbHVlPXR9X19jb21taXRUZW1wbGF0ZVJlc3VsdCh0KXtjb25zdCBlPXRoaXMub3B0aW9ucy50ZW1wbGF0ZUZhY3RvcnkodCk7aWYodGhpcy52YWx1ZSBpbnN0YW5jZW9mIE1YdCYmdGhpcy52YWx1ZS50ZW1wbGF0ZT09PWUpdGhpcy52YWx1ZS51cGRhdGUodC52YWx1ZXMpO2Vsc2V7Y29uc3Qgbj1uZXcgTVh0KGUsdC5wcm9jZXNzb3IsdGhpcy5vcHRpb25zKSxpPW4uX2Nsb25lKCk7bi51cGRhdGUodC52YWx1ZXMpLHRoaXMuX19jb21taXROb2RlKGkpLHRoaXMudmFsdWU9bn19X19jb21taXRJdGVyYWJsZSh0KXtBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpfHwodGhpcy52YWx1ZT1bXSx0aGlzLmNsZWFyKCkpO2NvbnN0IGU9dGhpcy52YWx1ZTtsZXQgbixpPTA7Zm9yKGNvbnN0IHIgb2YgdCluPWVbaV0sdm9pZCAwPT09biYmKG49bmV3IENYdCh0aGlzLm9wdGlvbnMpLGUucHVzaChuKSwwPT09aT9uLmFwcGVuZEludG9QYXJ0KHRoaXMpOm4uaW5zZXJ0QWZ0ZXJQYXJ0KGVbaS0xXSkpLG4uc2V0VmFsdWUociksbi5jb21taXQoKSxpKys7aTxlLmxlbmd0aCYmKGUubGVuZ3RoPWksdGhpcy5jbGVhcihuJiZuLmVuZE5vZGUpKX1jbGVhcih0PXRoaXMuc3RhcnROb2RlKXtsWHQodGhpcy5zdGFydE5vZGUucGFyZW50Tm9kZSx0Lm5leHRTaWJsaW5nLHRoaXMuZW5kTm9kZSl9fWxldCBBWHQ9ITE7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KZnVuY3Rpb24ga1h0KHQpe2xldCBlPUxYdC5nZXQodC50eXBlKTt2b2lkIDA9PT1lJiYoZT17c3RyaW5nc0FycmF5Om5ldyBXZWFrTWFwLGtleVN0cmluZzpuZXcgTWFwfSxMWHQuc2V0KHQudHlwZSxlKSk7bGV0IG49ZS5zdHJpbmdzQXJyYXkuZ2V0KHQuc3RyaW5ncyk7aWYodm9pZCAwIT09bilyZXR1cm4gbjtjb25zdCBpPXQuc3RyaW5ncy5qb2luKGNYdCk7cmV0dXJuIG49ZS5rZXlTdHJpbmcuZ2V0KGkpLHZvaWQgMD09PW4mJihuPW5ldyBwWHQodCx0LmdldFRlbXBsYXRlRWxlbWVudCgpKSxlLmtleVN0cmluZy5zZXQoaSxuKSksZS5zdHJpbmdzQXJyYXkuc2V0KHQuc3RyaW5ncyxuKSxufSgoKT0+e3RyeXtjb25zdCB0PXtnZXQgY2FwdHVyZSgpe3JldHVybiBBWHQ9ITAsITF9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsdCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsdCx0KX1jYXRjaCh0KXt9fSkoKTtjb25zdCBMWHQ9bmV3IE1hcCxQWHQ9bmV3IFdlYWtNYXA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5saXRIdG1sVmVyc2lvbnN8fCh3aW5kb3cubGl0SHRtbFZlcnNpb25zPVtdKSkucHVzaCgiMS40LjEiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgICAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICAgKiBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqL2NvbnN0IE5YdD0odCxlKT0+YCR7dH0tLSR7ZX1gO2xldCBJWHQ9ITA7dm9pZCAwPT09d2luZG93LlNoYWR5Q1NTP0lYdD0hMTp2b2lkIDA9PT13aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlRG9tJiYoY29uc29sZS53YXJuKCJJbmNvbXBhdGlibGUgU2hhZHlDU1MgdmVyc2lvbiBkZXRlY3RlZC4gUGxlYXNlIHVwZGF0ZSB0byBhdCBsZWFzdCBAd2ViY29tcG9uZW50cy93ZWJjb21wb25lbnRzanNAMi4wLjIgYW5kIEB3ZWJjb21wb25lbnRzL3NoYWR5Y3NzQDEuMy4xLiIpLElYdD0hMSk7Y29uc3QgUlh0PXQ9PmU9Pntjb25zdCBuPU5YdChlLnR5cGUsdCk7bGV0IGk9TFh0LmdldChuKTt2b2lkIDA9PT1pJiYoaT17c3RyaW5nc0FycmF5Om5ldyBXZWFrTWFwLGtleVN0cmluZzpuZXcgTWFwfSxMWHQuc2V0KG4saSkpO2xldCByPWkuc3RyaW5nc0FycmF5LmdldChlLnN0cmluZ3MpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHI7Y29uc3Qgbz1lLnN0cmluZ3Muam9pbihjWHQpO2lmKHI9aS5rZXlTdHJpbmcuZ2V0KG8pLHZvaWQgMD09PXIpe2NvbnN0IG49ZS5nZXRUZW1wbGF0ZUVsZW1lbnQoKTtJWHQmJndpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVEb20obix0KSxyPW5ldyBwWHQoZSxuKSxpLmtleVN0cmluZy5zZXQobyxyKX1yZXR1cm4gaS5zdHJpbmdzQXJyYXkuc2V0KGUuc3RyaW5ncyxyKSxyfSxPWHQ9WyJodG1sIiwic3ZnIl0selh0PW5ldyBTZXQ7d2luZG93LkpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHk9KHQsZSk9PnQ7Y29uc3QgRFh0PXt0b0F0dHJpYnV0ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIHQ/IiI6bnVsbDtjYXNlIE9iamVjdDpjYXNlIEFycmF5OnJldHVybiBudWxsPT10P3Q6SlNPTi5zdHJpbmdpZnkodCl9cmV0dXJuIHR9LGZyb21BdHRyaWJ1dGUodCxlKXtzd2l0Y2goZSl7Y2FzZSBCb29sZWFuOnJldHVybiBudWxsIT09dDtjYXNlIE51bWJlcjpyZXR1cm4gbnVsbD09PXQ/bnVsbDpOdW1iZXIodCk7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTpyZXR1cm4gSlNPTi5wYXJzZSh0KX1yZXR1cm4gdH19LEJYdD0odCxlKT0+ZSE9PXQmJihlPT1lfHx0PT10KSxIWHQ9e2F0dHJpYnV0ZTohMCx0eXBlOlN0cmluZyxjb252ZXJ0ZXI6RFh0LHJlZmxlY3Q6ITEsaGFzQ2hhbmdlZDpCWHR9O2NsYXNzIEZYdCBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmluaXRpYWxpemUoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtjb25zdCB0PVtdO3JldHVybiB0aGlzLl9jbGFzc1Byb3BlcnRpZXMuZm9yRWFjaCgoKGUsbik9Pntjb25zdCBpPXRoaXMuX2F0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShuLGUpO3ZvaWQgMCE9PWkmJih0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLnNldChpLG4pLHQucHVzaChpKSl9KSksdH1zdGF0aWMgX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9jbGFzc1Byb3BlcnRpZXMiLHRoaXMpKSl7dGhpcy5fY2xhc3NQcm9wZXJ0aWVzPW5ldyBNYXA7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2NsYXNzUHJvcGVydGllczt2b2lkIDAhPT10JiZ0LmZvckVhY2goKCh0LGUpPT50aGlzLl9jbGFzc1Byb3BlcnRpZXMuc2V0KGUsdCkpKX19c3RhdGljIGNyZWF0ZVByb3BlcnR5KHQsZT1IWHQpe2lmKHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2NsYXNzUHJvcGVydGllcy5zZXQodCxlKSxlLm5vQWNjZXNzb3J8fHRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KHQpKXJldHVybjtjb25zdCBuPSJzeW1ib2wiPT10eXBlb2YgdD9TeW1ib2woKTpgX18ke3R9YCxpPXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsbixlKTt2b2lkIDAhPT1pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wcm90b3R5cGUsdCxpKX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsZSxuKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbZV19LHNldChpKXtjb25zdCByPXRoaXNbdF07dGhpc1tlXT1pLHRoaXMucmVxdWVzdFVwZGF0ZUludGVybmFsKHQscixuKX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9fXN0YXRpYyBnZXRQcm9wZXJ0eU9wdGlvbnModCl7cmV0dXJuIHRoaXMuX2NsYXNzUHJvcGVydGllcyYmdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLmdldCh0KXx8SFh0fXN0YXRpYyBmaW5hbGl6ZSgpe2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO2lmKHQuaGFzT3duUHJvcGVydHkoImZpbmFsaXplZCIpfHx0LmZpbmFsaXplKCksdGhpcy5maW5hbGl6ZWQ9ITAsdGhpcy5fZW5zdXJlQ2xhc3NQcm9wZXJ0aWVzKCksdGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcD1uZXcgTWFwLHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgicHJvcGVydGllcyIsdGhpcykpKXtjb25zdCB0PXRoaXMucHJvcGVydGllcyxlPVsuLi5PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KSwuLi4iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpOltdXTtmb3IoY29uc3QgbiBvZiBlKXRoaXMuY3JlYXRlUHJvcGVydHkobix0W25dKX19c3RhdGljIF9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCxlKXtjb25zdCBuPWUuYXR0cmlidXRlO3JldHVybiExPT09bj92b2lkIDA6InN0cmluZyI9PXR5cGVvZiBuP246InN0cmluZyI9PXR5cGVvZiB0P3QudG9Mb3dlckNhc2UoKTp2b2lkIDB9c3RhdGljIF92YWx1ZUhhc0NoYW5nZWQodCxlLG49Qlh0KXtyZXR1cm4gbih0LGUpfXN0YXRpYyBfcHJvcGVydHlWYWx1ZUZyb21BdHRyaWJ1dGUodCxlKXtjb25zdCBuPWUuY29udmVydGVyfHxEWHQsaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOm4uZnJvbUF0dHJpYnV0ZTtyZXR1cm4gaT9pKHQsZS50eXBlKTp0fXN0YXRpYyBfcHJvcGVydHlWYWx1ZVRvQXR0cmlidXRlKHQsZSl7aWYodm9pZCAwPT09ZS5yZWZsZWN0KXJldHVybjtjb25zdCBuPWUuY29udmVydGVyO3JldHVybihuJiZuLnRvQXR0cmlidXRlfHxEWHQudG9BdHRyaWJ1dGUpKHQsZS50eXBlKX1pbml0aWFsaXplKCl7dGhpcy5fdXBkYXRlU3RhdGU9MCx0aGlzLl91cGRhdGVQcm9taXNlPW5ldyBQcm9taXNlKCh0PT50aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyPXQpKSx0aGlzLl9jaGFuZ2VkUHJvcGVydGllcz1uZXcgTWFwLHRoaXMuX3NhdmVJbnN0YW5jZVByb3BlcnRpZXMoKSx0aGlzLnJlcXVlc3RVcGRhdGVJbnRlcm5hbCgpfV9zYXZlSW5zdGFuY2VQcm9wZXJ0aWVzKCl7dGhpcy5jb25zdHJ1Y3Rvci5fY2xhc3NQcm9wZXJ0aWVzLmZvckVhY2goKCh0LGUpPT57aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgdD10aGlzW2VdO2RlbGV0ZSB0aGlzW2VdLHRoaXMuX2luc3RhbmNlUHJvcGVydGllc3x8KHRoaXMuX2luc3RhbmNlUHJvcGVydGllcz1uZXcgTWFwKSx0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXMuc2V0KGUsdCl9fSkpfV9hcHBseUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuX2luc3RhbmNlUHJvcGVydGllcy5mb3JFYWNoKCgodCxlKT0+dGhpc1tlXT10KSksdGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzPXZvaWQgMH1jb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuZW5hYmxlVXBkYXRpbmcoKX1lbmFibGVVcGRhdGluZygpe3ZvaWQgMCE9PXRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXImJih0aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyKCksdGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcj12b2lkIDApfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7fWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbil7ZSE9PW4mJnRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHkodCxuKX1fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbj1IWHQpe2NvbnN0IGk9dGhpcy5jb25zdHJ1Y3RvcixyPWkuX2F0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0LG4pO2lmKHZvaWQgMCE9PXIpe2NvbnN0IHQ9aS5fcHJvcGVydHlWYWx1ZVRvQXR0cmlidXRlKGUsbik7aWYodm9pZCAwPT09dClyZXR1cm47dGhpcy5fdXBkYXRlU3RhdGU9OHx0aGlzLl91cGRhdGVTdGF0ZSxudWxsPT10P3RoaXMucmVtb3ZlQXR0cmlidXRlKHIpOnRoaXMuc2V0QXR0cmlidXRlKHIsdCksdGhpcy5fdXBkYXRlU3RhdGU9LTkmdGhpcy5fdXBkYXRlU3RhdGV9fV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSl7aWYoOCZ0aGlzLl91cGRhdGVTdGF0ZSlyZXR1cm47Y29uc3Qgbj10aGlzLmNvbnN0cnVjdG9yLGk9bi5fYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5nZXQodCk7aWYodm9pZCAwIT09aSl7Y29uc3QgdD1uLmdldFByb3BlcnR5T3B0aW9ucyhpKTt0aGlzLl91cGRhdGVTdGF0ZT0xNnx0aGlzLl91cGRhdGVTdGF0ZSx0aGlzW2ldPW4uX3Byb3BlcnR5VmFsdWVGcm9tQXR0cmlidXRlKGUsdCksdGhpcy5fdXBkYXRlU3RhdGU9LTE3JnRoaXMuX3VwZGF0ZVN0YXRlfX1yZXF1ZXN0VXBkYXRlSW50ZXJuYWwodCxlLG4pe2xldCBpPSEwO2lmKHZvaWQgMCE9PXQpe2NvbnN0IHI9dGhpcy5jb25zdHJ1Y3RvcjtuPW58fHIuZ2V0UHJvcGVydHlPcHRpb25zKHQpLHIuX3ZhbHVlSGFzQ2hhbmdlZCh0aGlzW3RdLGUsbi5oYXNDaGFuZ2VkKT8odGhpcy5fY2hhbmdlZFByb3BlcnRpZXMuaGFzKHQpfHx0aGlzLl9jaGFuZ2VkUHJvcGVydGllcy5zZXQodCxlKSwhMCE9PW4ucmVmbGVjdHx8MTYmdGhpcy5fdXBkYXRlU3RhdGV8fCh2b2lkIDA9PT10aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcyYmKHRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzPW5ldyBNYXApLHRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzLnNldCh0LG4pKSk6aT0hMX0hdGhpcy5faGFzUmVxdWVzdGVkVXBkYXRlJiZpJiYodGhpcy5fdXBkYXRlUHJvbWlzZT10aGlzLl9lbnF1ZXVlVXBkYXRlKCkpfXJlcXVlc3RVcGRhdGUodCxlKXtyZXR1cm4gdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwodCxlKSx0aGlzLnVwZGF0ZUNvbXBsZXRlfWFzeW5jIF9lbnF1ZXVlVXBkYXRlKCl7dGhpcy5fdXBkYXRlU3RhdGU9NHx0aGlzLl91cGRhdGVTdGF0ZTt0cnl7YXdhaXQgdGhpcy5fdXBkYXRlUHJvbWlzZX1jYXRjaCh0KXt9Y29uc3QgdD10aGlzLnBlcmZvcm1VcGRhdGUoKTtyZXR1cm4gbnVsbCE9dCYmYXdhaXQgdCwhdGhpcy5faGFzUmVxdWVzdGVkVXBkYXRlfWdldCBfaGFzUmVxdWVzdGVkVXBkYXRlKCl7cmV0dXJuIDQmdGhpcy5fdXBkYXRlU3RhdGV9Z2V0IGhhc1VwZGF0ZWQoKXtyZXR1cm4gMSZ0aGlzLl91cGRhdGVTdGF0ZX1wZXJmb3JtVXBkYXRlKCl7aWYoIXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZSlyZXR1cm47dGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzJiZ0aGlzLl9hcHBseUluc3RhbmNlUHJvcGVydGllcygpO2xldCB0PSExO2NvbnN0IGU9dGhpcy5fY2hhbmdlZFByb3BlcnRpZXM7dHJ5e3Q9dGhpcy5zaG91bGRVcGRhdGUoZSksdD90aGlzLnVwZGF0ZShlKTp0aGlzLl9tYXJrVXBkYXRlZCgpfWNhdGNoKGUpe3Rocm93IHQ9ITEsdGhpcy5fbWFya1VwZGF0ZWQoKSxlfXQmJigxJnRoaXMuX3VwZGF0ZVN0YXRlfHwodGhpcy5fdXBkYXRlU3RhdGU9MXx0aGlzLl91cGRhdGVTdGF0ZSx0aGlzLmZpcnN0VXBkYXRlZChlKSksdGhpcy51cGRhdGVkKGUpKX1fbWFya1VwZGF0ZWQoKXt0aGlzLl9jaGFuZ2VkUHJvcGVydGllcz1uZXcgTWFwLHRoaXMuX3VwZGF0ZVN0YXRlPS01JnRoaXMuX3VwZGF0ZVN0YXRlfWdldCB1cGRhdGVDb21wbGV0ZSgpe3JldHVybiB0aGlzLl9nZXRVcGRhdGVDb21wbGV0ZSgpfV9nZXRVcGRhdGVDb21wbGV0ZSgpe3JldHVybiB0aGlzLmdldFVwZGF0ZUNvbXBsZXRlKCl9Z2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fdXBkYXRlUHJvbWlzZX1zaG91bGRVcGRhdGUodCl7cmV0dXJuITB9dXBkYXRlKHQpe3ZvaWQgMCE9PXRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzJiZ0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcy5zaXplPjAmJih0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcy5mb3JFYWNoKCgodCxlKT0+dGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZShlLHRoaXNbZV0sdCkpKSx0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcz12b2lkIDApLHRoaXMuX21hcmtVcGRhdGVkKCl9dXBkYXRlZCh0KXt9Zmlyc3RVcGRhdGVkKHQpe319Rlh0LmZpbmFsaXplZD0hMDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFZYdD13aW5kb3cuU2hhZG93Um9vdCYmKHZvaWQgMD09PXdpbmRvdy5TaGFkeUNTU3x8d2luZG93LlNoYWR5Q1NTLm5hdGl2ZVNoYWRvdykmJiJhZG9wdGVkU3R5bGVTaGVldHMiaW4gRG9jdW1lbnQucHJvdG90eXBlJiYicmVwbGFjZSJpbiBDU1NTdHlsZVNoZWV0LnByb3RvdHlwZSxVWHQ9U3ltYm9sKCk7Y2xhc3Mgalh0e2NvbnN0cnVjdG9yKHQsZSl7aWYoZSE9PVVYdCl0aHJvdyBuZXcgRXJyb3IoIkNTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuIik7dGhpcy5jc3NUZXh0PXR9Z2V0IHN0eWxlU2hlZXQoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fc3R5bGVTaGVldCYmKFZYdD8odGhpcy5fc3R5bGVTaGVldD1uZXcgQ1NTU3R5bGVTaGVldCx0aGlzLl9zdHlsZVNoZWV0LnJlcGxhY2VTeW5jKHRoaXMuY3NzVGV4dCkpOnRoaXMuX3N0eWxlU2hlZXQ9bnVsbCksdGhpcy5fc3R5bGVTaGVldH10b1N0cmluZygpe3JldHVybiB0aGlzLmNzc1RleHR9fWNvbnN0IEdYdD0odCwuLi5lKT0+e2NvbnN0IG49ZS5yZWR1Y2UoKChlLG4saSk9PmUrKHQ9PntpZih0IGluc3RhbmNlb2Ygalh0KXJldHVybiB0LmNzc1RleHQ7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcihgVmFsdWUgcGFzc2VkIHRvICdjc3MnIGZ1bmN0aW9uIG11c3QgYmUgYSAnY3NzJyBmdW5jdGlvbiByZXN1bHQ6ICR7dH0uIFVzZSAndW5zYWZlQ1NTJyB0byBwYXNzIG5vbi1saXRlcmFsIHZhbHVlcywgYnV0XG4gICAgICAgICAgICB0YWtlIGNhcmUgdG8gZW5zdXJlIHBhZ2Ugc2VjdXJpdHkuYCl9KShuKSt0W2krMV0pLHRbMF0pO3JldHVybiBuZXcgalh0KG4sVVh0KX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICAgKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICAgKiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi8KKHdpbmRvdy5saXRFbGVtZW50VmVyc2lvbnN8fCh3aW5kb3cubGl0RWxlbWVudFZlcnNpb25zPVtdKSkucHVzaCgiMi41LjEiKTtjb25zdCBXWHQ9e307Y2xhc3MgcVh0IGV4dGVuZHMgRlh0e3N0YXRpYyBnZXRTdHlsZXMoKXtyZXR1cm4gdGhpcy5zdHlsZXN9c3RhdGljIF9nZXRVbmlxdWVTdHlsZXMoKXtpZih0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9zdHlsZXMiLHRoaXMpKSlyZXR1cm47Y29uc3QgdD10aGlzLmdldFN0eWxlcygpO2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9KHQsbik9PnQucmVkdWNlUmlnaHQoKCh0LG4pPT5BcnJheS5pc0FycmF5KG4pP2Uobix0KToodC5hZGQobiksdCkpLG4pLG49ZSh0LG5ldyBTZXQpLGk9W107bi5mb3JFYWNoKCh0PT5pLnVuc2hpZnQodCkpKSx0aGlzLl9zdHlsZXM9aX1lbHNlIHRoaXMuX3N0eWxlcz12b2lkIDA9PT10P1tdOlt0XTt0aGlzLl9zdHlsZXM9dGhpcy5fc3R5bGVzLm1hcCgodD0+dCBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQmJiFWWHQ/KHQ9Pm5ldyBqWHQoU3RyaW5nKHQpLFVYdCkpKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuY3NzUnVsZXMpLnJlZHVjZSgoKHQsZSk9PnQrZS5jc3NUZXh0KSwiIikpOnQpKX1pbml0aWFsaXplKCl7c3VwZXIuaW5pdGlhbGl6ZSgpLHRoaXMuY29uc3RydWN0b3IuX2dldFVuaXF1ZVN0eWxlcygpLHRoaXMucmVuZGVyUm9vdD10aGlzLmNyZWF0ZVJlbmRlclJvb3QoKSx3aW5kb3cuU2hhZG93Um9vdCYmdGhpcy5yZW5kZXJSb290IGluc3RhbmNlb2Ygd2luZG93LlNoYWRvd1Jvb3QmJnRoaXMuYWRvcHRTdHlsZXMoKX1jcmVhdGVSZW5kZXJSb290KCl7cmV0dXJuIHRoaXMuYXR0YWNoU2hhZG93KHRoaXMuY29uc3RydWN0b3Iuc2hhZG93Um9vdE9wdGlvbnMpfWFkb3B0U3R5bGVzKCl7Y29uc3QgdD10aGlzLmNvbnN0cnVjdG9yLl9zdHlsZXM7MCE9PXQubGVuZ3RoJiYodm9pZCAwPT09d2luZG93LlNoYWR5Q1NTfHx3aW5kb3cuU2hhZHlDU1MubmF0aXZlU2hhZG93P1ZYdD90aGlzLnJlbmRlclJvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPXQubWFwKCh0PT50IGluc3RhbmNlb2YgQ1NTU3R5bGVTaGVldD90OnQuc3R5bGVTaGVldCkpOnRoaXMuX25lZWRzU2hpbUFkb3B0ZWRTdHlsZVNoZWV0cz0hMDp3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0ucHJlcGFyZUFkb3B0ZWRDc3NUZXh0KHQubWFwKCh0PT50LmNzc1RleHQpKSx0aGlzLmxvY2FsTmFtZSkpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc1VwZGF0ZWQmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlRWxlbWVudCh0aGlzKX11cGRhdGUodCl7Y29uc3QgZT10aGlzLnJlbmRlcigpO3N1cGVyLnVwZGF0ZSh0KSxlIT09V1h0JiZ0aGlzLmNvbnN0cnVjdG9yLnJlbmRlcihlLHRoaXMucmVuZGVyUm9vdCx7c2NvcGVOYW1lOnRoaXMubG9jYWxOYW1lLGV2ZW50Q29udGV4dDp0aGlzfSksdGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzJiYodGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzPSExLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlcy5mb3JFYWNoKCh0PT57Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2UudGV4dENvbnRlbnQ9dC5jc3NUZXh0LHRoaXMucmVuZGVyUm9vdC5hcHBlbmRDaGlsZChlKX0pKSl9cmVuZGVyKCl7cmV0dXJuIFdYdH19cVh0LmZpbmFsaXplZD0hMCxxWHQucmVuZGVyPSh0LGUsbik9PntpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHwhbi5zY29wZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJUaGUgYHNjb3BlTmFtZWAgb3B0aW9uIGlzIHJlcXVpcmVkLiIpO2NvbnN0IGk9bi5zY29wZU5hbWUscj1QWHQuaGFzKGUpLG89SVh0JiYxMT09PWUubm9kZVR5cGUmJiEhZS5ob3N0LGE9byYmIXpYdC5oYXMoaSkscz1hP2RvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTplO2lmKCgodCxlLG4pPT57bGV0IGk9UFh0LmdldChlKTt2b2lkIDA9PT1pJiYobFh0KGUsZS5maXJzdENoaWxkKSxQWHQuc2V0KGUsaT1uZXcgQ1h0KE9iamVjdC5hc3NpZ24oe3RlbXBsYXRlRmFjdG9yeTprWHR9LG4pKSksaS5hcHBlbmRJbnRvKGUpKSxpLnNldFZhbHVlKHQpLGkuY29tbWl0KCl9KSh0LHMsT2JqZWN0LmFzc2lnbih7dGVtcGxhdGVGYWN0b3J5OlJYdChpKX0sbikpLGEpe2NvbnN0IHQ9UFh0LmdldChzKTtQWHQuZGVsZXRlKHMpLCgodCxlLG4pPT57elh0LmFkZCh0KTtjb25zdCBpPW4/bi5lbGVtZW50OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIikscj1lLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikse2xlbmd0aDpvfT1yO2lmKDA9PT1vKXJldHVybiB2b2lkIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVTdHlsZXMoaSx0KTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3QgZT1yW3RdO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxhLnRleHRDb250ZW50Kz1lLnRleHRDb250ZW50fSh0PT57T1h0LmZvckVhY2goKGU9Pntjb25zdCBuPUxYdC5nZXQoTlh0KGUsdCkpO3ZvaWQgMCE9PW4mJm4ua2V5U3RyaW5nLmZvckVhY2goKHQ9Pntjb25zdHtlbGVtZW50Ontjb250ZW50OmV9fT10LG49bmV3IFNldDtBcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSkuZm9yRWFjaCgodD0+e24uYWRkKHQpfSkpLHlYdCh0LG4pfSkpfSkpfSkodCk7Y29uc3Qgcz1pLmNvbnRlbnQ7bj8oZnVuY3Rpb24gbCh0LGUsbj1udWxsKXtjb25zdHtlbGVtZW50Ontjb250ZW50Oml9LHBhcnRzOnJ9PXQ7aWYobnVsbD09bilyZXR1cm4gdm9pZCBpLmFwcGVuZENoaWxkKGUpO2NvbnN0IG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihpLDEzMyxudWxsLCExKTtsZXQgYT1iWHQocikscz0wLGw9LTE7Zm9yKDtvLm5leHROb2RlKCk7KWZvcihsKyssby5jdXJyZW50Tm9kZT09PW4mJihzPXZYdChlKSxuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsbikpOy0xIT09YSYmclthXS5pbmRleD09PWw7KXtpZihzPjApe2Zvcig7LTEhPT1hOylyW2FdLmluZGV4Kz1zLGE9Ylh0KHIsYSk7cmV0dXJufWE9Ylh0KHIsYSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgICAqIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgICAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovKShuLGEscy5maXJzdENoaWxkKTpzLmluc2VydEJlZm9yZShhLHMuZmlyc3RDaGlsZCksd2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZVN0eWxlcyhpLHQpO2NvbnN0IGM9cy5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO2lmKHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cmJm51bGwhPT1jKWUuaW5zZXJ0QmVmb3JlKGMuY2xvbmVOb2RlKCEwKSxlLmZpcnN0Q2hpbGQpO2Vsc2UgaWYobil7cy5pbnNlcnRCZWZvcmUoYSxzLmZpcnN0Q2hpbGQpO2NvbnN0IHQ9bmV3IFNldDt0LmFkZChhKSx5WHQobix0KX19KShpLHMsdC52YWx1ZSBpbnN0YW5jZW9mIE1YdD90LnZhbHVlLnRlbXBsYXRlOnZvaWQgMCksbFh0KGUsZS5maXJzdENoaWxkKSxlLmFwcGVuZENoaWxkKHMpLFBYdC5zZXQoZSx0KX0hciYmbyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlRWxlbWVudChlLmhvc3QpfSxxWHQuc2hhZG93Um9vdE9wdGlvbnM9e21vZGU6Im9wZW4ifTtsZXQgWVh0PTA7Y29uc3QgWFh0PXt9LCRYdD0odCxlLG4pPT57Y29uc3QgaT1uJiZuLm1vZHVsZUlkfHwiY3VzdG9tLXN0eWxlLW1vZHVsZS0iK1lYdCsrO0FycmF5LmlzQXJyYXkoZSl8fChlPWU/W2VdOltdKSxlLmZvckVhY2goKHQ9PntpZighKHQgaW5zdGFuY2VvZiBqWHQpKXRocm93IG5ldyBFcnJvcigiQW4gaXRlbSBpbiBzdHlsZXMgaXMgbm90IG9mIHR5cGUgQ1NTUmVzdWx0LiBVc2UgYHVuc2FmZUNTU2Agb3IgYGNzc2AuIik7aWYoIVhYdFt0XSl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkb20tbW9kdWxlIik7ZS5pbm5lckhUTUw9YFxuICAgICAgICA8dGVtcGxhdGU+XG4gICAgICAgICAgPHN0eWxlPiR7dC50b1N0cmluZygpfTwvc3R5bGU+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICBgO2NvbnN0IG49ImN1c3RvbS1zdHlsZS1tb2R1bGUtIitZWHQrKztlLnJlZ2lzdGVyKG4pLFhYdFt0XT1ufX0pKTtjb25zdCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtpZih0KXtjb25zdCBlPWN1c3RvbUVsZW1lbnRzLmdldCh0KTtlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX19maW5hbGl6ZWQiKSYmY29uc29sZS53YXJuKGBUaGUgY3VzdG9tIGVsZW1lbnQgZGVmaW5pdGlvbiBmb3IgIiR7dH0iXG4gICAgICB3YXMgZmluYWxpemVkIGJlZm9yZSBhIHN0eWxlIG1vZHVsZSB3YXMgcmVnaXN0ZXJlZC5cbiAgICAgIE1ha2Ugc3VyZSB0byBhZGQgY29tcG9uZW50IHNwZWNpZmljIHN0eWxlIG1vZHVsZXMgYmVmb3JlXG4gICAgICBpbXBvcnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgY3VzdG9tIGVsZW1lbnQuYCksci5zZXRBdHRyaWJ1dGUoInRoZW1lLWZvciIsdCl9ci5pbm5lckhUTUw9YFxuICAgIDx0ZW1wbGF0ZT5cbiAgICAgICR7KG4mJm4uaW5jbHVkZXx8W10pLm1hcCgodD0+YDxzdHlsZSBpbmNsdWRlPSR7dH0+PC9zdHlsZT5gKSl9XG4gICAgICAke2UubWFwKCh0PT5gPHN0eWxlIGluY2x1ZGU9JHtYWHRbdF19Pjwvc3R5bGU+YCkpfVxuICAgIDwvdGVtcGxhdGU+XG4gIGAsci5yZWdpc3RlcihpKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNsYXNzIEtYdCBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyMC4wLjIifX1jdXN0b21FbGVtZW50cy5kZWZpbmUoInZhYWRpbi1sdW1vLXN0eWxlcyIsS1h0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgWlh0PUdYdGAKICA6aG9zdCB7CiAgICAvKiBCYXNlIChiYWNrZ3JvdW5kKSAqLwogICAgLS1sdW1vLWJhc2UtY29sb3I6ICNmZmY7CgogICAgLyogVGludCAqLwogICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC4zKTsKICAgIC0tbHVtby10aW50LTEwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjM3KTsKICAgIC0tbHVtby10aW50LTIwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjQ0KTsKICAgIC0tbHVtby10aW50LTMwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjUpOwogICAgLS1sdW1vLXRpbnQtNDBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNTcpOwogICAgLS1sdW1vLXRpbnQtNTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNjQpOwogICAgLS1sdW1vLXRpbnQtNjBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNyk7CiAgICAtLWx1bW8tdGludC03MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC43Nyk7CiAgICAtLWx1bW8tdGludC04MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC44NCk7CiAgICAtLWx1bW8tdGludC05MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC45KTsKICAgIC0tbHVtby10aW50OiAjZmZmOwoKICAgIC8qIFNoYWRlICovCiAgICAtLWx1bW8tc2hhZGUtNXBjdDogaHNsYSgyMTQsIDYxJSwgMjUlLCAwLjA1KTsKICAgIC0tbHVtby1zaGFkZS0xMHBjdDogaHNsYSgyMTQsIDU3JSwgMjQlLCAwLjEpOwogICAgLS1sdW1vLXNoYWRlLTIwcGN0OiBoc2xhKDIxNCwgNTMlLCAyMyUsIDAuMTYpOwogICAgLS1sdW1vLXNoYWRlLTMwcGN0OiBoc2xhKDIxNCwgNTAlLCAyMiUsIDAuMjYpOwogICAgLS1sdW1vLXNoYWRlLTQwcGN0OiBoc2xhKDIxNCwgNDclLCAyMSUsIDAuMzgpOwogICAgLS1sdW1vLXNoYWRlLTUwcGN0OiBoc2xhKDIxNCwgNDUlLCAyMCUsIDAuNSk7CiAgICAtLWx1bW8tc2hhZGUtNjBwY3Q6IGhzbGEoMjE0LCA0MyUsIDE5JSwgMC42MSk7CiAgICAtLWx1bW8tc2hhZGUtNzBwY3Q6IGhzbGEoMjE0LCA0MiUsIDE4JSwgMC43Mik7CiAgICAtLWx1bW8tc2hhZGUtODBwY3Q6IGhzbGEoMjE0LCA0MSUsIDE3JSwgMC44Myk7CiAgICAtLWx1bW8tc2hhZGUtOTBwY3Q6IGhzbGEoMjE0LCA0MCUsIDE2JSwgMC45NCk7CiAgICAtLWx1bW8tc2hhZGU6IGhzbCgyMTQsIDM1JSwgMTUlKTsKCiAgICAvKiBDb250cmFzdCAqLwogICAgLS1sdW1vLWNvbnRyYXN0LTVwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNXBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTIwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0zMHBjdDogdmFyKC0tbHVtby1zaGFkZS0zMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNDBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTUwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTUwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC02MHBjdDogdmFyKC0tbHVtby1zaGFkZS02MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNzBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTgwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTgwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC05MHBjdDogdmFyKC0tbHVtby1zaGFkZS05MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3Q6IHZhcigtLWx1bW8tc2hhZGUpOwoKICAgIC8qIFRleHQgKi8KICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7CiAgICAtLWx1bW8tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTkwcGN0KTsKICAgIC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC03MHBjdCk7CiAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7CiAgICAtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CgogICAgLyogUHJpbWFyeSAqLwogICAgLS1sdW1vLXByaW1hcnktY29sb3I6IGhzbCgyMTQsIDkwJSwgNTIlKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0OiBoc2xhKDIxNCwgOTAlLCA1MiUsIDAuNSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdDogaHNsYSgyMTQsIDkwJSwgNTIlLCAwLjEpOwogICAgLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yKTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yOiAjZmZmOwoKICAgIC8qIEVycm9yICovCiAgICAtLWx1bW8tZXJyb3ItY29sb3I6IGhzbCgzLCAxMDAlLCA2MSUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTUwcGN0OiBoc2xhKDMsIDEwMCUsIDYwJSwgMC41KTsKICAgIC0tbHVtby1lcnJvci1jb2xvci0xMHBjdDogaHNsYSgzLCAxMDAlLCA2MCUsIDAuMSk7CiAgICAtLWx1bW8tZXJyb3ItdGV4dC1jb2xvcjogaHNsKDMsIDkyJSwgNTMlKTsKICAgIC0tbHVtby1lcnJvci1jb250cmFzdC1jb2xvcjogI2ZmZjsKCiAgICAvKiBTdWNjZXNzICovCiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvcjogaHNsKDE0NSwgODAlLCA0MiUpOyAvKiBoc2woMTQ0LDgyJSwzNyUpOyAqLwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3ItNTBwY3Q6IGhzbGEoMTQ1LCA3NiUsIDQ0JSwgMC41NSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci0xMHBjdDogaHNsYSgxNDUsIDc2JSwgNDQlLCAwLjEyKTsKICAgIC0tbHVtby1zdWNjZXNzLXRleHQtY29sb3I6IGhzbCgxNDUsIDEwMCUsIDMyJSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb250cmFzdC1jb2xvcjogI2ZmZjsKICB9CmAsSlh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Slh0LmlubmVySFRNTD1gPHN0eWxlPiR7Wlh0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoSlh0LmNvbnRlbnQpLCRYdCgiIixHWHRgCiAgW3RoZW1lfj0nZGFyayddIHsKICAgIC8qIEJhc2UgKGJhY2tncm91bmQpICovCiAgICAtLWx1bW8tYmFzZS1jb2xvcjogaHNsKDIxNCwgMzUlLCAyMSUpOwoKICAgIC8qIFRpbnQgKi8KICAgIC0tbHVtby10aW50LTVwY3Q6IGhzbGEoMjE0LCA2NSUsIDg1JSwgMC4wNik7CiAgICAtLWx1bW8tdGludC0xMHBjdDogaHNsYSgyMTQsIDYwJSwgODAlLCAwLjE0KTsKICAgIC0tbHVtby10aW50LTIwcGN0OiBoc2xhKDIxNCwgNjQlLCA4MiUsIDAuMjMpOwogICAgLS1sdW1vLXRpbnQtMzBwY3Q6IGhzbGEoMjE0LCA2OSUsIDg0JSwgMC4zMik7CiAgICAtLWx1bW8tdGludC00MHBjdDogaHNsYSgyMTQsIDczJSwgODYlLCAwLjQxKTsKICAgIC0tbHVtby10aW50LTUwcGN0OiBoc2xhKDIxNCwgNzglLCA4OCUsIDAuNSk7CiAgICAtLWx1bW8tdGludC02MHBjdDogaHNsYSgyMTQsIDgyJSwgOTAlLCAwLjYpOwogICAgLS1sdW1vLXRpbnQtNzBwY3Q6IGhzbGEoMjE0LCA4NyUsIDkyJSwgMC43KTsKICAgIC0tbHVtby10aW50LTgwcGN0OiBoc2xhKDIxNCwgOTElLCA5NCUsIDAuOCk7CiAgICAtLWx1bW8tdGludC05MHBjdDogaHNsYSgyMTQsIDk2JSwgOTYlLCAwLjkpOwogICAgLS1sdW1vLXRpbnQ6IGhzbCgyMTQsIDEwMCUsIDk4JSk7CgogICAgLyogU2hhZGUgKi8KICAgIC0tbHVtby1zaGFkZS01cGN0OiBoc2xhKDIxNCwgMCUsIDAlLCAwLjA3KTsKICAgIC0tbHVtby1zaGFkZS0xMHBjdDogaHNsYSgyMTQsIDQlLCAyJSwgMC4xNSk7CiAgICAtLWx1bW8tc2hhZGUtMjBwY3Q6IGhzbGEoMjE0LCA4JSwgNCUsIDAuMjMpOwogICAgLS1sdW1vLXNoYWRlLTMwcGN0OiBoc2xhKDIxNCwgMTIlLCA2JSwgMC4zMik7CiAgICAtLWx1bW8tc2hhZGUtNDBwY3Q6IGhzbGEoMjE0LCAxNiUsIDglLCAwLjQxKTsKICAgIC0tbHVtby1zaGFkZS01MHBjdDogaHNsYSgyMTQsIDIwJSwgMTAlLCAwLjUpOwogICAgLS1sdW1vLXNoYWRlLTYwcGN0OiBoc2xhKDIxNCwgMjQlLCAxMiUsIDAuNik7CiAgICAtLWx1bW8tc2hhZGUtNzBwY3Q6IGhzbGEoMjE0LCAyOCUsIDEzJSwgMC43KTsKICAgIC0tbHVtby1zaGFkZS04MHBjdDogaHNsYSgyMTQsIDMyJSwgMTMlLCAwLjgpOwogICAgLS1sdW1vLXNoYWRlLTkwcGN0OiBoc2xhKDIxNCwgMzMlLCAxMyUsIDAuOSk7CiAgICAtLWx1bW8tc2hhZGU6IGhzbCgyMTQsIDMzJSwgMTMlKTsKCiAgICAvKiBDb250cmFzdCAqLwogICAgLS1sdW1vLWNvbnRyYXN0LTVwY3Q6IHZhcigtLWx1bW8tdGludC01cGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby10aW50LTEwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0yMHBjdDogdmFyKC0tbHVtby10aW50LTIwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0zMHBjdDogdmFyKC0tbHVtby10aW50LTMwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby10aW50LTQwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC01MHBjdDogdmFyKC0tbHVtby10aW50LTUwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC02MHBjdDogdmFyKC0tbHVtby10aW50LTYwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby10aW50LTcwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC04MHBjdDogdmFyKC0tbHVtby10aW50LTgwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC05MHBjdDogdmFyKC0tbHVtby10aW50LTkwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby10aW50KTsKCiAgICAvKiBUZXh0ICovCiAgICAtLWx1bW8taGVhZGVyLXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QpOwogICAgLS1sdW1vLWJvZHktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC05MHBjdCk7CiAgICAtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtNzBwY3QpOwogICAgLS1sdW1vLXRlcnRpYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtNTBwY3QpOwogICAgLS1sdW1vLWRpc2FibGVkLXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwoKICAgIC8qIFByaW1hcnkgKi8KICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yOiBoc2woMjE0LCA4NiUsIDU1JSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdDogaHNsYSgyMTQsIDg2JSwgNTUlLCAwLjUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItMTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDYzJSwgMC4xKTsKICAgIC0tbHVtby1wcmltYXJ5LXRleHQtY29sb3I6IGhzbCgyMTQsIDEwMCUsIDcwJSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcjogI2ZmZjsKCiAgICAvKiBFcnJvciAqLwogICAgLS1sdW1vLWVycm9yLWNvbG9yOiBoc2woMywgOTAlLCA2MyUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTUwcGN0OiBoc2xhKDMsIDkwJSwgNjMlLCAwLjUpOwogICAgLS1sdW1vLWVycm9yLWNvbG9yLTEwcGN0OiBoc2xhKDMsIDkwJSwgNjMlLCAwLjEpOwogICAgLS1sdW1vLWVycm9yLXRleHQtY29sb3I6IGhzbCgzLCAxMDAlLCA2NyUpOwoKICAgIC8qIFN1Y2Nlc3MgKi8KICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yOiBoc2woMTQ1LCA2NSUsIDQyJSk7CiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci01MHBjdDogaHNsYSgxNDUsIDY1JSwgNDIlLCAwLjUpOwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3ItMTBwY3Q6IGhzbGEoMTQ1LCA2NSUsIDQyJSwgMC4xKTsKICAgIC0tbHVtby1zdWNjZXNzLXRleHQtY29sb3I6IGhzbCgxNDUsIDg1JSwgNDclKTsKICB9CgogIGh0bWwgewogICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgfQoKICBbdGhlbWV+PSdkYXJrJ10gewogICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgfQoKICBoMSwKICBoMiwKICBoMywKICBoNCwKICBoNSwKICBoNiB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcik7CiAgfQoKICBhIHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcik7CiAgfQoKICBibG9ja3F1b3RlIHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICB9CgogIGNvZGUsCiAgcHJlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pOwogIH0KYCx7bW9kdWxlSWQ6Imx1bW8tY29sb3IifSksJFh0KCIiLEdYdGAKICA6aG9zdCB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpICFpbXBvcnRhbnQ7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpICFpbXBvcnRhbnQ7CiAgfQpgLHttb2R1bGVJZDoibHVtby1jb2xvci1sZWdhY3kiLGluY2x1ZGU6WyJsdW1vLWNvbG9yIl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgUVh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7UVh0LmlubmVySFRNTD0nXG4gIDxzdHlsZT5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcJ2x1bW8taWNvbnNcJztcbiAgICAgIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFCRWNBQXNBQUFBQUlpd0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSFUxVkNBQUFCQ0FBQUFEc0FBQUJVSUlzbGVrOVRMeklBQUFGRUFBQUFRd0FBQUZaQUlVdUtZMjFoY0FBQUFZZ0FBQUQ0QUFBRHJzQ1U4ZDVuYkhsbUFBQUNnQUFBQzJNQUFCZDRoOVRvMldobFlXUUFBQTNrQUFBQU1BQUFBRFphLzZTc2FHaGxZUUFBRGhRQUFBQWRBQUFBSkFicEEzNW9iWFI0QUFBT05BQUFBQkFBQUFDc3BCQUFBR3h2WTJFQUFBNUVBQUFBV0FBQUFGaDU1SUFzYldGNGNBQUFEcHdBQUFBZkFBQUFJQUZLQVhCdVlXMWxBQUFPdkFBQUFURUFBQUl1VVVKWkNIQnZjM1FBQUEvd0FBQUJLd0FBQWVsbThTelZlSnhqWUdSZ1lPQmlNR0N3WTJCeWNmTUpZZURMU1N6Slk1QmlZR0dBQUpBOE1wc3hKek05a1lFRHhnUEtzWUJwRGlCbWc0Z0NBQ1k3QlVnQWVKeGpZR1MreURpQmdaV0JnYW1LYVE4REEwTVBoR1o4d0dESXlBUVVaV0JsWnNBS0F0SmNVeGdjWGpHKzBtSU8rcC9GRU1VY3hEQU5LTXdJa2dNQUJuOE1MUUI0bk8zU1dXNkRNQUJGMFV0d0NFbklQTS96aExLOExxaGZYUnliU1AxNFhVWXRIVjloR1lRd1FCTklvM2NVSVBraFFlTTdyaWIxZWtxblhnOTgxWHVDMXF2eTg0bHpvamxlaDNwdXhMMGhQakdqUlU0NzN0ZWxvRWVmQVVOR2pKa3daY2FjQlV0V3JObXdaY2VlQTBkT25MbHc1Y2FkQjA5ZWxQR2hHZitqME5USS82NUtmWGVyVDZKaHFLbnBSS3RnT3B1cWFUcnRLalBVbHFIbWh0bzIxSTdwTDZpNmhscVkzcTdxR1dyZlVBZUdPalRVa2FHT0RYVmlxRk5EblJucTNGQVhocm8wMUpXaHJnMTFZNmhiUTkwWjZ0NVFENFo2Tk5TVG9aNE45V0tvVjBPOUdlcmRVQitHK2pUVWw2R1dSdmtMMjRCa0VYaWN0Vmg5YkZ2VkZiL254dmJ6KzdSZi9ONnpIY2QyYkNmUCtXZ2MxWjlOMGpwTm5FTDZrYlJWUzZIQTJoUVlHaDlUR1IxQ2JDcWEyclhyV09rUUUvc0hOSmdtdFp2b1ZOWnFFMUIxRE5IeHpUUXhDZWhVVFlpSlRReUVOdWkwcVNMZXpyM1BkdXlRZmdtUldPZmRlOCs5NTUxejdybm4vTzRqTG9KL2JSUDBVYUtRTUxGSmpwQkF2cGhMWkMzRGswb2s3V0J6UjIvdXBKczdSeXcvbmZGYmxuL3V1Ti9hcEN2d3JLTHJTdlVxUnVmYm01cG4wZnMwdzRnWXhuR1ZQNnFIbk80YldpRFFHUWd3dFM2bG0zbEIzUW9YMU0ydndFbXV6aXJGMzl5K0VzMitESjhkMXBreXFCSXFvemUzRDErWno0RHJGb2F6eEk4ZFd3TXJEbFoyRE1xUUFSOUFST3NKVSsyY21sVFBhelRjbzUyRjF4VGEyYTIrSzh2dnE5MmRWSG10TG9QZVFYL0FaUFJZR3RoRFlPZVpqQmpLb0ZzVkd1bFIzbFdVOTVXZUNLNDRxSFU3TWhXVUdVS1pEVDNvS1VjRzJHV3VoK0VERGZVWUEvamhBaGwwVE9zSk5ZU0V1N21RbWkzVXpmWHdaS0E0QnNWc0hMWFFZR2dSVzk1dUV0cEoxVmZuOVhpTHJpUkJsRkVxeHNEakEwOXlDTlVvUXh4d2Q3S1dTVHQyeTNHVEtpZmxxSFJTb1daYzNtMTFXYS9mSmRGZ1hENHNTWWZsZUpCS2Q4R016N0o4ZFpuL2NHUkNjS0dEbkEyR2UzZkt6Y3ZsblRETnRoR1dMWHpYL1dhWHRVQW1SZ2VMbEhTcjMwcjBHOVVUWE1iMEF0bXd6T295NzNma1NsSFprZHV3L1RZdVU5Y0FENFl1dFBveFRUc0EzNzk3d1ZyNFovMU5DNXpBUkhyNHZ0eEpqeElmaVpNaE1rYldrKzE0Qm5KWkt3cUdad0Rmc3dMeXhXRFNnMTFyRkxKRjdOb3B4amQxaDEvUU9UK29lemdmdTNZcStIaytkdWY1eCs0MG8xR1RrYUlnaWtLL0lFbkM2YVl4Q1VCYVpKU040WFRZRmpVL1lNTklLcUp3aERHT0NDSThGRFhuWG1YanRHaEdKeVNocWpBT25CT2tXMkpHOVM3R2dZZU1XQVU1SnpobldtQk9hT00rQ0tFUG9xU2ZGREMyVW5xK0RMbFVnVVZVRkZMWkdKZzZqdGxvanNkc2E4a1BPYlB1SmRpNWRuQmRCc0xKTUdUV0RhNHQySnZ0d3VQbzlzK1k4NnN1di9XMzNRRzFyQWFPQVVWK3Z4NEs2ZjJEMDRQVktsQzdXTFNyWnpBaTQ1WlY2bElDN1dvWHFtUnl2VXFvVndyelVvVnNJamVUWFdRditSSDVHVGxCWGlCL0luOGxuMEliQkNBRk9hakFKcmdaWXlPSFdxT2ZVZS9hSGpJMTJSNk9RbzFqQ2d0MjE1bCs0ZjZYUGIrME1Ob3UwVis0M24yRjc3dFNmUmIyNGQ3eml0Z25LbXZZSHM2OXp1Z2FQdkJ3djZpb1hrYjJMZEw2NUF0dzUxdUxrWGx1MWJoTU1SY1hTUGNZb3FLSVJsaDM0bFFQOC81SmJ1VUZ5ZTR2eEQ2LzZNeEZGMTFDMHVWTHI5VWxndzQ0dFMzcE1WaU5MVUV4YnljRmdMSWN0K1FETWliUmlteDF5ZFV6OEZYWml1T0lEQk9NVlgyblVaYytodU5FNVhVSjgxdWlKb2lhYndxYVZGMHVhY0tiYXUvcGw0UjJWVzBYWGxKcmE2Ym9WcllHNjQ2VEY1Tll6d3k0dmpFTlZyRGxjTnBaUGw4REg2WFg4WFdDeDBtdldWWlk2S0ZMcnZzWTY2L3pQaWN0NUZueGFOVVIvanV2WkNNM1R2RDYwRTJXMXRaaXpiWFRQRHVhYmNtMG5iYnpwV0twbUExYXlCUThnaWVkTFVNK0Ewa05qQmpRam11WXo3WXJnSVhZdm1GNjNaTEJ3U1hycG45VGI5d3dkZC9VMUgwUE1RSzNYY084dWwzV1Q3UHlQUGRweTBUZW1LeE5SY0pOYXVpWEpublVEcFVwcFFXczRTblVJeTBFRVNHWXFKWVFMR0h4emFHV3dWSWFTNlk3bVFGTThaallEUTNheGpmNjFTV2pVMzNKd09aQTFwd2FHMUw5bXpmNzFhSFJkWDFKSHc2RnAwYVhoTndicXllR05nNE5iZHpHQ0J4b3o0WlhqeTROdTY5WnI2c0RZNnZNckxVNW5BMVA4SmtiZFdYSjZFUmZNcnl2TmgxSmZROStUNGRJaEd2Szl3M2R4akJCemF0c1EvTWxPSFZJRG5ZcER6Nm9kQVhsUTAxdDJQYTVJYWZkOE1NcHhBZURLUDBDNkNqZ1ZMVDVvc0I2aWNVeDAxbFdqWHh6VC9HeVJGMndlbEVNNVovN2pHM1ZqUTFTck5uNUlieXpPRzVkb2JCMy9RSHh5WnZzWGNvejhJb0V3UzdwbENnK3p4SFFrNDI0cTlCZkVwa0VTSmJGSFF1c0RCU1dGa3VCa29QTzBrTEt3UlZZanhHWGxIVGNURFFNSi9INlRYOWFma083bW5yYVRPMWZlVG5aQVhMdTRjcDdIQVhNbU5HMXllRms5VGdTL05IaFpSLzRRb0JUci9aQis2aENneWwxNU5xMVViTjZuRTEvWm5QMVUyY2l6Q0JwdnM4Y0pRWko0TGtZeDVOL3laUEFVWk5RUTBWNGYzQlFsbFdySzNZUnpsMzBkT1Q2UlZuMnVwTnVyNndvU2E4Q3FwZFQvYUtuQk00bzNqTnVyOWQ5eHF0VVQ2dmVCRXQ5Q2E5YXQrRVJ6RUVoVWtSOHNhNW1RNGFWdkpvVmVFQTh6STRlaTVtVUxYRkd5VTd6LzZUQWVZTFZjcHpTV1pZOFBZWUY1eXJUVjYwc1QwK1hWMTQxdlgrK1dmMTZWMmJGZUdWUFpYeEZwa3Z5ZUtUV0xsemZXMG1uS3hzWTZZMzI5NC8wOTk4U0NmWDFibG01cGJjdkZHbHEvcjA3TVJBTWhZSURpVzVKRktXVzN2ZHJFcENzWlNKRytvbTdadS9QU1NjWkpoTmtMYm1XNVdzcjEycFdxVzV6S3Rsd1JTNGJGT3hVdzE3bUN6eTZsc2tDRGwxV1lPR1dEWXJBRHJNQTdCRER3ZVdXTmQ1a29pSm5SMWR6K3l0TFAycTBTcVBCMWxuSzJjY0I3UlllNEZTb1BrczNpQjN0NHR4VFNIY3RiMnN5MWl2azBwdkh1Q05tNncxZjZ3eHYzK09DZ043OExxZFFuVVZoN1Iwb1RBcDB6T2YycmJXNzcwVnU1QzJkSXlHZFRuSG84elNqaTdkcHBqMFVTb1ZDeitsaFJNVGg1M1RlcTlWYkdmYmp1U2JBb29TZFhheVk0UFlIZzM3NEM2ZjdnbDFCL0RYdUo0L1FYeE9CZEpGSnNwRnNJM2VncG9XVVVDamxUSUZuTllObCtaeVpLbUJlWUtHSGtEMVF5RGxoYUtiS3dLY0lKcUo0VExKMk9tZFkvSldYYWU0RGRHQnc4SFo3ZVhjZ0ZGMnpyMlNvYWxEcnk1aUtxb2EwUHVoZTNoUFEyczNlbFRZTStNSStuM3JLMEtnTDcvTGEzR2VNTHQ2bTd1OTEydkdudnRPUmlJYTBxQm1ocVZpK1hXOVhOQm1xYjhlVmdLeklIZkdJNWJOb0c3WDBVQ3plSVNtcUljTy9uWThGSDdVOGF2WDlmeC9TVCtoeDBzZXpQdzlReThNdW0zR1dmMk40VXkveUlZR1ZCWGJKSFdJWnA3ZGZUY3B0ZE1UcjlRbXE3RGFpSy91a3FDTDRrdDRSVWZTNVhQbk10bVQyMi9tUUZxRjdlbVNxdHJsdThTVkVseERSSnJaT0RrcHV3ZTBWZlRmamRFcDFmN0E3ditmb3pOQlhVSi82V1R1SzJUdEZscEZWWkFaM0xjRnZVaTFaMnAyWVQrRU1Ba0dKVlN0T3pMVEFQZzRJcVdJQWx6UlNqT0JrbDJ6eGozVEt5Y3B6VC9NbnZYM3VhU01XTStnVTBya1hqb2hoZWZWUk1hcHMzL2tMTVNLdjIzbFQyM3V4UXJrUWp5T0psZU1Ec2RoQW5ENlpHRWxXWjVNakNYekNFL2hrV1grV0Y0a256R2hWT3lLMmVRWmVrVjNleW8wekw4a3VZV0NuREN2ampoQWtjVFBPQkRYVmRvYXYzSFZjRm5Rakx2dFY5UzJwMHpBNkplZ1B3TVF4dCt5RmIzbGw5ekdscS81ZFJLYjNjRXlRWW9hTllwaGFySjd4Q0I3QVd4c0xZM2pqWlhZMFhzWmowV2p3YzlJNlBQL2RLQUJuQ1phcUhwYVpFQUN4azRaZUxaU0tOZ1pBQmwrbFlRWDFzSlFPU1gzbjZyNDEwZXZjb3VkNUplQUdVWFZQOUgxdFpPS2VqVHE0T25vMHowZXJybzFGcm5PcG9odmExZC9oVGR0VnNRZEtONVc5UmxUM05qRDBuem55S05UZ0tBTWZXTldjeW9kVjBJR0xQSUhPRjBvNEp5cXVmYUs0ejZXSUl6dUdoM2Q4Yzhjd1FnOEVSK09WeHlyamRtOHZOdWh0czRMb09paEd4SU11VWRnendpWU43eGhoMStvWm5KTnVURzdnUVp2dTRYV1o5R0FaWmpHRXVid2VQcVlodEtEVEgrOVZRa2wxNy9pR3lic25KKzgrc0t0eVByY2xsOXR5NjVac2RzdC85aXFwRUtoN001VmRCeGgzY3NPZE5jNnRXM0kxdXlNMVB6T1hlZ1NPckxGc0ZOSTJPMjdNK1RGMkFwbk45TVV2NXVkNkxqeEl2RVFuSFJ6eEl1NElzQTlNTEZrSm4ydGNab1o3T043ZFhlN3VqcmM4SHJ1c1BLYW1scVh3ZDc3bFFVdUxwaWxhdTRQVU1hcHVlQmI3aXJVNFJvVVhFWVh1VnVJR2xSR21PcCsybE5rYVJQVnppT3FtbGFadmFxRzRkRmdTajBqeEVKV3J2MTJJVVdudG13K3JmUWFyUkUwQXBoNG9jSTZubFVsR3FzK3UzLytUL2V0aFc2MlBwSHAyZUhiWnN0bmgvd09POTV5REFIaWNZMkJrWUdBQTRwbUo2UUh4L0RaZkdiaVpYd0JGR0dwVU56UWk2UCt2bWFjeTNRSnlPUmlZUUtJQU5vVUxWWGljWTJCa1lHQU8rcDhGSkY4d0FBSHpWQVpHQmxTZ0RRQlc5Z052QUFBQWVKeGpZR0JnWUg0eE5EQUF6d1FtandBQUFBQUFUZ0NhQU9nQkNnRXNBVTRCY0FHYUFjUUI3Z0lhQXB3QzZBU2FCTHdFMWdUeUJRNEZLZ1Y2QmRBRi9nWkVCbVlHdGdjWUI1QUlHQWhTQ0dvSS9nbEdDYjRKMmdvRUNqd0tnZ3E0Q3ZBTFVBdVdDN3g0bkdOZ1pHQmcwR1pNWVJCbEFBRW1JT1lDUWdhRy8yQStBd0FZbEFHOEFIaWNiWkU5VHNNd0dJYmY5QS9SU2dnRVltSHhBZ3RxK2pOMlpHajNEdDNUMUdsVE9YSGt1Qlc5QXlmZ0VCeUNnVE53Q0E3QlcvTkpsVkJ0eWQvangrOFhLd21BYTN3aHduRkU2SWIxT0JxNDRPNlBtNlFiNFJiNVFiaU5IaDZGTy9SRDRTNmVNUkh1NFJhYVQ0aGFselIzZUJWdTRBcHZ3azM2ZCtFVytVTzRqWHQ4Q25mb3Y0VzdXT0JIdUllbjZNWHNDdHZQVTF2V2M3M2VtY1NkeElrVzJ0VzVMZFVvSHA3a1RKZmFKVjZ2MVBLZzZ2MTY3SDJtTW1jTE5iV2wxOFpZVlRtNzFhbVBOOTVYazhFZ0V4K250b0RCRGdVcytzaVJzcGFvTWVmN3J1a05Fcml6aVhOdXdTN0htb2U5d2dneHYrZTU1SXpKTXFRVGVOWVYwMHNjdU5iWTgrWXhyVWZHZmNhTVpiL0NOUFFlMDRiVDBsVGhiRXVUMHNmWWhLNksvMjNBbWYzTHgrSDI0aGNqNEdTY0FBQUFlSnh0anRsdWd6QVFSYmtKVUVKSXV1Lzd2cVI4bEdOUEFjV3gwWUFiNWUvTGtsUjk2RWdlblN1ZkdZMDM4UHFLdmY5cmhnR0c4QkVneEE0aWpCQmpqQVFUVExHTFBlempBSWM0d2pGT2NJb3puT01DbDdqQ05XNXdpenZjNHdHUGVNSXpYdkNLTjd6akF6Tjhlb25RUldaU1NhWW1qdnVnNmFzZTk4aEZsdGV4TUptbVZObVYyV0J2ZE5nWlVjK3VqQVd6WFczVURudTF3NDNhc1N0SGM4R3B6QVhYL3B5MGpxVFFaSlRna2N4SkxwYUNGMGxEMzJ4TnQrNDN0QXNuMjlEZnQwMnVES1MyY2pHVU5nc2syNnFLMmxGdGhZb1UyN0lOUHFtaURxZzVnb2UwcHFSNXFTb3FNZGVrL0NVWkZ5d0w0NnJFc2lJbWxlcWlxb015dDRiYVhsdS8xR0xkTkZmNXpiY05tZHIxWVVXQ1plNDdvK3pVbWIvRG9TdGJ3M2NWc2VmOUFMamppUFFBKSBmb3JtYXQoXCd3b2ZmXCcpO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBodG1sIHtcbiAgICAgIC0tbHVtby1pY29ucy1hbGlnbi1jZW50ZXI6ICJcXGVhMDEiO1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLWxlZnQ6ICJcXGVhMDIiO1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLXJpZ2h0OiAiXFxlYTAzIjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1kb3duOiAiXFxlYTA0IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1sZWZ0OiAiXFxlYTA1IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1yaWdodDogIlxcZWEwNiI7XG4gICAgICAtLWx1bW8taWNvbnMtYW5nbGUtdXA6ICJcXGVhMDciO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LWRvd246ICJcXGVhMDgiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LWxlZnQ6ICJcXGVhMDkiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LXJpZ2h0OiAiXFxlYTBhIjtcbiAgICAgIC0tbHVtby1pY29ucy1hcnJvdy11cDogIlxcZWEwYiI7XG4gICAgICAtLWx1bW8taWNvbnMtYmFyLWNoYXJ0OiAiXFxlYTBjIjtcbiAgICAgIC0tbHVtby1pY29ucy1iZWxsOiAiXFxlYTBkIjtcbiAgICAgIC0tbHVtby1pY29ucy1jYWxlbmRhcjogIlxcZWEwZSI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hlY2ttYXJrOiAiXFxlYTBmIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLWRvd246ICJcXGVhMTAiO1xuICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tbGVmdDogIlxcZWExMSI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1yaWdodDogIlxcZWExMiI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi11cDogIlxcZWExMyI7XG4gICAgICAtLWx1bW8taWNvbnMtY2xvY2s6ICJcXGVhMTQiO1xuICAgICAgLS1sdW1vLWljb25zLWNvZzogIlxcZWExNSI7XG4gICAgICAtLWx1bW8taWNvbnMtY3Jvc3M6ICJcXGVhMTYiO1xuICAgICAgLS1sdW1vLWljb25zLWRvd25sb2FkOiAiXFxlYTE3IjtcbiAgICAgIC0tbHVtby1pY29ucy1kcm9wZG93bjogIlxcZWExOCI7XG4gICAgICAtLWx1bW8taWNvbnMtZWRpdDogIlxcZWExOSI7XG4gICAgICAtLWx1bW8taWNvbnMtZXJyb3I6ICJcXGVhMWEiO1xuICAgICAgLS1sdW1vLWljb25zLWV5ZTogIlxcZWExYiI7XG4gICAgICAtLWx1bW8taWNvbnMtZXllLWRpc2FibGVkOiAiXFxlYTFjIjtcbiAgICAgIC0tbHVtby1pY29ucy1tZW51OiAiXFxlYTFkIjtcbiAgICAgIC0tbHVtby1pY29ucy1taW51czogIlxcZWExZSI7XG4gICAgICAtLWx1bW8taWNvbnMtb3JkZXJlZC1saXN0OiAiXFxlYTFmIjtcbiAgICAgIC0tbHVtby1pY29ucy1waG9uZTogIlxcZWEyMCI7XG4gICAgICAtLWx1bW8taWNvbnMtcGhvdG86ICJcXGVhMjEiO1xuICAgICAgLS1sdW1vLWljb25zLXBsYXk6ICJcXGVhMjIiO1xuICAgICAgLS1sdW1vLWljb25zLXBsdXM6ICJcXGVhMjMiO1xuICAgICAgLS1sdW1vLWljb25zLXJlZG86ICJcXGVhMjQiO1xuICAgICAgLS1sdW1vLWljb25zLXJlbG9hZDogIlxcZWEyNSI7XG4gICAgICAtLWx1bW8taWNvbnMtc2VhcmNoOiAiXFxlYTI2IjtcbiAgICAgIC0tbHVtby1pY29ucy11bmRvOiAiXFxlYTI3IjtcbiAgICAgIC0tbHVtby1pY29ucy11bm9yZGVyZWQtbGlzdDogIlxcZWEyOCI7XG4gICAgICAtLWx1bW8taWNvbnMtdXBsb2FkOiAiXFxlYTI5IjtcbiAgICAgIC0tbHVtby1pY29ucy11c2VyOiAiXFxlYTJhIjtcbiAgICB9XG4gIDwvc3R5bGU+XG4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoUVh0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCB0JHQ9R1h0YAogIDpob3N0IHsKICAgIC0tbHVtby1zaXplLXhzOiAxLjYyNXJlbTsKICAgIC0tbHVtby1zaXplLXM6IDEuODc1cmVtOwogICAgLS1sdW1vLXNpemUtbTogMi4yNXJlbTsKICAgIC0tbHVtby1zaXplLWw6IDIuNzVyZW07CiAgICAtLWx1bW8tc2l6ZS14bDogMy41cmVtOwoKICAgIC8qIEljb25zICovCiAgICAtLWx1bW8taWNvbi1zaXplLXM6IDEuMjVlbTsKICAgIC0tbHVtby1pY29uLXNpemUtbTogMS41ZW07CiAgICAtLWx1bW8taWNvbi1zaXplLWw6IDIuMjVlbTsKICAgIC8qIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLwogICAgLS1sdW1vLWljb24tc2l6ZTogdmFyKC0tbHVtby1pY29uLXNpemUtbSk7CiAgfQpgLGUkdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2UkdC5pbm5lckhUTUw9YDxzdHlsZT4ke3QkdC50b1N0cmluZygpLnJlcGxhY2UoIjpob3N0IiwiaHRtbCIpfTwvc3R5bGU+YCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUkdC5jb250ZW50KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgbiR0PUdYdGAKICA6aG9zdCB7CiAgICAvKiBTcXVhcmUgKi8KICAgIC0tbHVtby1zcGFjZS14czogMC4yNXJlbTsKICAgIC0tbHVtby1zcGFjZS1zOiAwLjVyZW07CiAgICAtLWx1bW8tc3BhY2UtbTogMXJlbTsKICAgIC0tbHVtby1zcGFjZS1sOiAxLjVyZW07CiAgICAtLWx1bW8tc3BhY2UteGw6IDIuNXJlbTsKCiAgICAvKiBXaWRlICovCiAgICAtLWx1bW8tc3BhY2Utd2lkZS14czogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhzKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteHMpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUtczogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS1zKTsKICAgIC0tbHVtby1zcGFjZS13aWRlLW06IGNhbGModmFyKC0tbHVtby1zcGFjZS1tKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbSk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS1sOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtbCkgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLWwpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUteGw6IGNhbGModmFyKC0tbHVtby1zcGFjZS14bCkgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXhsKTsKCiAgICAvKiBUYWxsICovCiAgICAtLWx1bW8tc3BhY2UtdGFsbC14czogdmFyKC0tbHVtby1zcGFjZS14cykgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhzKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwtczogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKTsKICAgIC0tbHVtby1zcGFjZS10YWxsLW06IHZhcigtLWx1bW8tc3BhY2UtbSkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC1sOiB2YXIoLS1sdW1vLXNwYWNlLWwpIGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwteGw6IHZhcigtLWx1bW8tc3BhY2UteGwpIGNhbGModmFyKC0tbHVtby1zcGFjZS14bCkgLyAyKTsKICB9CmAsaSR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aSR0LmlubmVySFRNTD1gPHN0eWxlPiR7biR0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSR0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCByJHQ9R1h0YAogIDpob3N0IHsKICAgIC8qIEJvcmRlciByYWRpdXMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLXM6IDAuMjVlbTsgLyogQ2hlY2tib3gsIGJhZGdlLCBkYXRlLXBpY2tlciB5ZWFyIGluZGljYXRvciwgZXRjICovCiAgICAtLWx1bW8tYm9yZGVyLXJhZGl1cy1tOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMsIDAuMjVlbSk7IC8qIEJ1dHRvbiwgdGV4dCBmaWVsZCwgbWVudSBvdmVybGF5LCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLWw6IDAuNWVtOyAvKiBEaWFsb2csIG5vdGlmaWNhdGlvbiwgZXRjICovCiAgICAtLWx1bW8tYm9yZGVyLXJhZGl1czogMC4yNWVtOyAvKiBEZXByZWNhdGVkICovCgogICAgLyogU2hhZG93ICovCiAgICAtLWx1bW8tYm94LXNoYWRvdy14czogMCAxcHggNHB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS01MHBjdCk7CiAgICAtLWx1bW8tYm94LXNoYWRvdy1zOiAwIDJweCA0cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAzcHggMTJweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMzBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3ctbTogMCAycHggNnB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIDAgOHB4IDI0cHggLTRweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LWw6IDAgM3B4IDE4cHggLTJweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAxMnB4IDQ4cHggLTZweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LXhsOiAwIDRweCAyNHB4IC0zcHggdmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIDAgMThweCA2NHB4IC04cHggdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7CgogICAgLyogQ2xpY2thYmxlIGVsZW1lbnQgY3Vyc29yICovCiAgICAtLWx1bW8tY2xpY2thYmxlLWN1cnNvcjogZGVmYXVsdDsKICB9CmAsbyR0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7byR0LmlubmVySFRNTD1gPHN0eWxlPiR7ciR0LnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyR0LmNvbnRlbnQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLwpjb25zdCBhJHQ9R1h0YAogIDpob3N0IHsKICAgIC8qIHByZXR0aWVyLWlnbm9yZSAqLwogICAgLS1sdW1vLWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdSb2JvdG8nLCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmLCAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJzsKCiAgICAvKiBGb250IHNpemVzICovCiAgICAtLWx1bW8tZm9udC1zaXplLXh4czogMC43NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteHM6IDAuODEyNXJlbTsKICAgIC0tbHVtby1mb250LXNpemUtczogMC44NzVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLW06IDFyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLWw6IDEuMTI1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14bDogMS4zNzVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXh4bDogMS43NXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteHh4bDogMi41cmVtOwoKICAgIC8qIExpbmUgaGVpZ2h0cyAqLwogICAgLS1sdW1vLWxpbmUtaGVpZ2h0LXhzOiAxLjI1OwogICAgLS1sdW1vLWxpbmUtaGVpZ2h0LXM6IDEuMzc1OwogICAgLS1sdW1vLWxpbmUtaGVpZ2h0LW06IDEuNjI1OwogIH0KYCxzJHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtzJHQuaW5uZXJIVE1MPWA8c3R5bGU+JHthJHQudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmAsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzJHQuY29udGVudCksJFh0KCIiLEdYdGAKICBodG1sIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1sdW1vLWZvbnQtZmFtaWx5KTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUsIHZhcigtLWx1bW8tZm9udC1zaXplLW0pKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LW0pOwogICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogIH0KCiAgLyogQ2Fu4oCZdCBjb21iaW5lIHdpdGggdGhlIGFib3ZlIHNlbGVjdG9yIGJlY2F1c2UgdGhhdCBkb2VzbuKAmXQgd29yayBpbiBicm93c2VycyB3aXRob3V0IG5hdGl2ZSBzaGFkb3cgZG9tICovCiAgOmhvc3QgewogICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZSwgdmFyKC0tbHVtby1mb250LXNpemUtbSkpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7CiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgfQoKICBzbWFsbCwKICBbdGhlbWV+PSdmb250LXNpemUtcyddIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtcyk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1zKTsKICB9CgogIFt0aGVtZX49J2ZvbnQtc2l6ZS14cyddIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHMpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQteHMpOwogIH0KCiAgaDEsCiAgaDIsCiAgaDMsCiAgaDQsCiAgaDUsCiAgaDYgewogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXhzKTsKICAgIG1hcmdpbi10b3A6IDEuMjVlbTsKICB9CgogIGgxIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHh4bCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjc1ZW07CiAgfQoKICBoMiB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXh4bCk7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKICB9CgogIGgzIHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteGwpOwogICAgbWFyZ2luLWJvdHRvbTogMC41ZW07CiAgfQoKICBoNCB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLWwpOwogICAgbWFyZ2luLWJvdHRvbTogMC41ZW07CiAgfQoKICBoNSB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtOwogIH0KCiAgaDYgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14cyk7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07CiAgfQoKICBwLAogIGJsb2NrcXVvdGUgewogICAgbWFyZ2luLXRvcDogMC41ZW07CiAgICBtYXJnaW4tYm90dG9tOiAwLjc1ZW07CiAgfQoKICBhIHsKICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB9CgogIGE6aG92ZXIgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQoKICBociB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICBoZWlnaHQ6IDFweDsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBtYXJnaW46IHZhcigtLWx1bW8tc3BhY2UtcykgY2FsYyh2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSkgLyAyKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogIH0KCiAgYmxvY2txdW90ZSB7CiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwogIH0KCiAgYiwKICBzdHJvbmcgewogICAgZm9udC13ZWlnaHQ6IDYwMDsKICB9CgogIC8qIFJUTCBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgYmxvY2txdW90ZVtkaXI9J3J0bCddIHsKICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgfQpgLHttb2R1bGVJZDoibHVtby10eXBvZ3JhcGh5In0pLCRYdCgidmFhZGluLWNoZWNrYm94IixHWHRgCiAgICA6aG9zdCB7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CgogICAgW3BhcnQ9J2xhYmVsJ106bm90KFtlbXB0eV0pIHsKICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjg3NWVtIDAuMTg3NWVtIDAuMzc1ZW07CiAgICB9CgogICAgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICB3aWR0aDogY2FsYygxZW0gKyAycHgpOwogICAgICBoZWlnaHQ6IGNhbGMoMWVtICsgMnB4KTsKICAgICAgbWFyZ2luOiAwLjE4NzVlbTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcyk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoMC4xMiwgMC4zMiwgMC41NCwgMiksIGJhY2tncm91bmQtY29sb3IgMC4xNXM7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgfQoKICAgIDpob3N0KFtpbmRldGVybWluYXRlXSkgW3BhcnQ9J2NoZWNrYm94J10sCiAgICA6aG9zdChbY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yKTsKICAgIH0KCiAgICAvKiBOZWVkZWQgdG8gYWxpZ24gdGhlIGNoZWNrYm94IG5pY2VseSBvbiB0aGUgYmFzZWxpbmUgKi8KICAgIFtwYXJ0PSdjaGVja2JveCddOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnXFwyMDAzJzsKICAgIH0KCiAgICAvKiBDaGVja21hcmsgKi8KICAgIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiAwOwogICAgICBoZWlnaHQ6IDA7CiAgICAgIGJvcmRlcjogMCBzb2xpZCB2YXIoLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3IpOwogICAgICBib3JkZXItd2lkdGg6IDAuMTg3NWVtIDAgMCAwLjE4NzVlbTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMC44MTI1ZW07CiAgICAgIGxlZnQ6IDAuNWVtOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNTUpIHJvdGF0ZSgtMTM1ZGVnKTsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICA6aG9zdChbY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICAgIHdpZHRoOiAwLjYyNWVtOwogICAgICBoZWlnaHQ6IDEuMDYyNWVtOwogICAgfQoKICAgIC8qIEluZGV0ZXJtaW5hdGUgY2hlY2ttYXJrICovCiAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdG9wOiA0NSU7CiAgICAgIGhlaWdodDogMTAlOwogICAgICBsZWZ0OiAyMiU7CiAgICAgIHJpZ2h0OiAyMiU7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBib3JkZXI6IDA7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXM7CiAgICB9CgogICAgLyogRm9jdXMgcmluZyAqLwogICAgOmhvc3QoW2ZvY3VzLXJpbmddKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIC8qIERpc2FibGVkICovCiAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBjb2xvcjogdmFyKC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdKSBbcGFydD0nbGFiZWwnXSA6OnNsb3R0ZWQoKikgewogICAgICBjb2xvcjogaW5oZXJpdDsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdW2Rpc2FibGVkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0PSdsYWJlbCddOm5vdChbZW1wdHldKSB7CiAgICAgIG1hcmdpbjogMC4xODc1ZW0gMC4zNzVlbSAwLjE4NzVlbSAwLjg3NWVtOwogICAgfQoKICAgIC8qIFRyYW5zaXRpb24gdGhlIGNoZWNrbWFyayBpZiBhY3RpdmF0ZWQgd2l0aCB0aGUgbW91c2UgKGRpc2FibGVkIGZvciBncmlkIHNlbGVjdC1hbGwgdGhpcyB3YXkpICovCiAgICA6aG9zdCg6aG92ZXIpIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXMsIGhlaWdodCAwLjI1czsKICAgIH0KCiAgICAvKiBVc2VkIGZvciBhY3RpdmF0aW9uICJoYWxvIiAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNCk7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzLCBvcGFjaXR5IDAuOHM7CiAgICB9CgogICAgLyogSG92ZXIgKi8KICAgIDpob3N0KDpub3QoW2NoZWNrZWRdKTpub3QoW2luZGV0ZXJtaW5hdGVdKTpub3QoW2Rpc2FibGVkXSk6aG92ZXIpIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgLyogRGlzYWJsZSBob3ZlciBmb3IgdG91Y2ggZGV2aWNlcyAqLwogICAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHsKICAgICAgOmhvc3QoOm5vdChbY2hlY2tlZF0pOm5vdChbaW5kZXRlcm1pbmF0ZV0pOm5vdChbZGlzYWJsZWRdKTpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICB9CiAgICB9CgogICAgLyogQWN0aXZlICovCiAgICA6aG9zdChbYWN0aXZlXSkgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDVzOwogICAgfQoKICAgIDpob3N0KFthY3RpdmVdW2NoZWNrZWRdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIH0KCiAgICA6aG9zdChbYWN0aXZlXTpub3QoW2NoZWNrZWRdKSkgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDFzLCAwLjAxczsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgb3BhY2l0eTogMC40OwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWNoZWNrYm94In0pO2NvbnN0IGwkdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3RoZW1lOnt0eXBlOlN0cmluZyxyZWFkT25seTohMH19fWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbil7c3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKSwidGhlbWUiPT09dCYmdGhpcy5fc2V0VGhlbWUobil9fSxjJHQ9dD0+Y2xhc3MgZXh0ZW5kcyhsJHQodCkpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7Y29uc3QgdD10aGlzLnByb3RvdHlwZS5fdGVtcGxhdGUsZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5wcm90b3R5cGUpLl90ZW1wbGF0ZTtlJiZBcnJheS5mcm9tKGUuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZVtpbmNsdWRlXSIpKS5mb3JFYWNoKChlPT57dGhpcy5faW5jbHVkZVN0eWxlKGUuZ2V0QXR0cmlidXRlKCJpbmNsdWRlIiksdCl9KSksdGhpcy5faW5jbHVkZU1hdGNoaW5nVGhlbWVzKHQpfXN0YXRpYyBfaW5jbHVkZU1hdGNoaW5nVGhlbWVzKHQpe2NvbnN0IGU9Qi5wcm90b3R5cGUubW9kdWxlcztsZXQgbj0hMTtjb25zdCBpPXRoaXMuaXMrIi1kZWZhdWx0LXRoZW1lIjtPYmplY3Qua2V5cyhlKS5zb3J0KCgodCxlKT0+e2NvbnN0IG49MD09PXQuaW5kZXhPZigidmFhZGluLSIpLGk9MD09PWUuaW5kZXhPZigidmFhZGluLSIpLHI9WyJsdW1vLSIsIm1hdGVyaWFsLSJdLG89ci5maWx0ZXIoKGU9PjA9PT10LmluZGV4T2YoZSkpKS5sZW5ndGg+MCxhPXIuZmlsdGVyKCh0PT4wPT09ZS5pbmRleE9mKHQpKSkubGVuZ3RoPjA7cmV0dXJuIG4hPT1pP24/LTE6MTpvIT09YT9vPy0xOjE6MH0pKS5mb3JFYWNoKChyPT57aWYociE9PWkpe2NvbnN0IGk9ZVtyXS5nZXRBdHRyaWJ1dGUoInRoZW1lLWZvciIpO2kmJmkuc3BsaXQoIiAiKS5mb3JFYWNoKChlPT57bmV3IFJlZ0V4cCgiXiIrZS5zcGxpdCgiKiIpLmpvaW4oIi4qIikrIiQiKS50ZXN0KHRoaXMuaXMpJiYobj0hMCx0aGlzLl9pbmNsdWRlU3R5bGUocix0KSl9KSl9fSkpLCFuJiZlW2ldJiZ0aGlzLl9pbmNsdWRlU3R5bGUoaSx0KX1zdGF0aWMgX2luY2x1ZGVTdHlsZSh0LGUpe2lmKGUmJiFlLmNvbnRlbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbaW5jbHVkZT0iJHt0fSJdYCkpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtuLnNldEF0dHJpYnV0ZSgiaW5jbHVkZSIsdCksZS5jb250ZW50LmFwcGVuZENoaWxkKG4pfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2xldCB1JHQ9ITE7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCgoKT0+e3UkdD0hMH0pLHtjYXB0dXJlOiEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKCgpPT57dSR0PSExfSkse2NhcHR1cmU6ITB9KTtjb25zdCBoJHQ9dD0+Y2xhc3MgZXh0ZW5kcygodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnt0YWJpbmRleDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il90YWJpbmRleENoYW5nZWQifX19fSkodCkpe3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnthdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbn0sX3ByZXZpb3VzVGFiSW5kZXg6e3R5cGU6TnVtYmVyfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZGlzYWJsZWRDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9pc1NoaWZ0VGFiYmluZzp7dHlwZTpCb29sZWFufX19cmVhZHkoKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLCh0PT57dC5jb21wb3NlZFBhdGgoKVswXT09PXRoaXM/dGhpcy5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpfHx0aGlzLl9mb2N1cygpOi0xPT09dC5jb21wb3NlZFBhdGgoKS5pbmRleE9mKHRoaXMuZm9jdXNFbGVtZW50KXx8dGhpcy5kaXNhYmxlZHx8dGhpcy5fc2V0Rm9jdXNlZCghMCl9KSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCgpPT50aGlzLl9zZXRGb2N1c2VkKCExKSkpLHN1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+eyF0LmRlZmF1bHRQcmV2ZW50ZWQmJjk9PT10LmtleUNvZGUmJnQuc2hpZnRLZXkmJih0aGlzLl9pc1NoaWZ0VGFiYmluZz0hMCxIVE1MRWxlbWVudC5wcm90b3R5cGUuZm9jdXMuYXBwbHkodGhpcyksdGhpcy5fc2V0Rm9jdXNlZCghMSksc2V0VGltZW91dCgoKCk9PnRoaXMuX2lzU2hpZnRUYWJiaW5nPSExKSwwKSl9KSksdGhpcy5hdXRvZm9jdXMmJiF0aGlzLmRpc2FibGVkJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2ZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCksdGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzLXJpbmciLCIiKX0pKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYXNBdHRyaWJ1dGUoImZvY3VzZWQiKSYmdGhpcy5fc2V0Rm9jdXNlZCghMSl9X3NldEZvY3VzZWQodCl7dD90aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXNlZCIsIiIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJmb2N1c2VkIiksdCYmdSR0P3RoaXMuc2V0QXR0cmlidXRlKCJmb2N1cy1yaW5nIiwiIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImZvY3VzLXJpbmciKX1nZXQgZm9jdXNFbGVtZW50KCl7cmV0dXJuIHdpbmRvdy5jb25zb2xlLndhcm4oYFBsZWFzZSBpbXBsZW1lbnQgdGhlICdmb2N1c0VsZW1lbnQnIHByb3BlcnR5IGluIDwke3RoaXMubG9jYWxOYW1lfT5gKSx0aGlzfV9mb2N1cygpe3RoaXMuZm9jdXNFbGVtZW50JiYhdGhpcy5faXNTaGlmdFRhYmJpbmcmJih0aGlzLmZvY3VzRWxlbWVudC5mb2N1cygpLHRoaXMuX3NldEZvY3VzZWQoITApKX1mb2N1cygpe3RoaXMuZm9jdXNFbGVtZW50JiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuZm9jdXNFbGVtZW50LmZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCkpfWJsdXIoKXt0aGlzLmZvY3VzRWxlbWVudCYmKHRoaXMuZm9jdXNFbGVtZW50LmJsdXIoKSx0aGlzLl9zZXRGb2N1c2VkKCExKSl9X2Rpc2FibGVkQ2hhbmdlZCh0KXt0aGlzLmZvY3VzRWxlbWVudC5kaXNhYmxlZD10LHQ/KHRoaXMuYmx1cigpLHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy50YWJpbmRleCx0aGlzLnRhYmluZGV4PS0xLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpKToodm9pZCAwIT09dGhpcy5fcHJldmlvdXNUYWJJbmRleCYmKHRoaXMudGFiaW5kZXg9dGhpcy5fcHJldmlvdXNUYWJJbmRleCksdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiKSl9X3RhYmluZGV4Q2hhbmdlZCh0KXt2b2lkIDAhPT10JiYodGhpcy5mb2N1c0VsZW1lbnQudGFiSW5kZXg9dCksdGhpcy5kaXNhYmxlZCYmdGhpcy50YWJpbmRleCYmKC0xIT09dGhpcy50YWJpbmRleCYmKHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy50YWJpbmRleCksdGhpcy50YWJpbmRleD10PXZvaWQgMCl9Y2xpY2soKXt0aGlzLmRpc2FibGVkfHxzdXBlci5jbGljaygpfX0sZCR0PS9cL1wqXCpccyt2YWFkaW4tZGV2LW1vZGU6c3RhcnQoW1xzXFNdKil2YWFkaW4tZGV2LW1vZGU6ZW5kXHMrXCpcKlwvL2kscCR0PXdpbmRvdy5WYWFkaW4mJndpbmRvdy5WYWFkaW4uRmxvdyYmd2luZG93LlZhYWRpbi5GbG93LmNsaWVudHM7ZnVuY3Rpb24gZiR0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpcmV0dXJuO2NvbnN0IG49ZCR0LmV4ZWModC50b1N0cmluZygpKTtpZihuKXRyeXt0PW5ldyBGdW5jdGlvbihuWzFdKX1jYXRjaCh0KXtjb25zb2xlLmxvZygidmFhZGluLWRldmVsb3BtZW50LW1vZGUtZGV0ZWN0b3I6IHVuY29tbWVudEFuZFJ1bigpIGZhaWxlZCIsdCl9cmV0dXJuIHQoZSl9ZnVuY3Rpb24gbSR0KCl7fXdpbmRvdy5WYWFkaW49d2luZG93LlZhYWRpbnx8e30sdm9pZCAwPT09d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGUmJih3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZT0oZnVuY3Rpb24gZyR0KCl7dHJ5e3JldHVybiEhKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInZhYWRpbi5kZXZlbG9wbWVudG1vZGUuZm9yY2UiKX0pKCl8fCEhKGZ1bmN0aW9uIGUoKXtyZXR1cm5bImxvY2FsaG9zdCIsIjEyNy4wLjAuMSJdLmluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKT49MH0pKCkmJihwJHQ/IShmdW5jdGlvbiBuKCl7cmV0dXJuISEocCR0JiZPYmplY3Qua2V5cyhwJHQpLm1hcCgodD0+cCR0W3RdKSkuZmlsdGVyKCh0PT50LnByb2R1Y3Rpb25Nb2RlKSkubGVuZ3RoPjApfSkoKTohKGZ1bmN0aW9uIGkoKXtyZXR1cm4gZiR0KChmdW5jdGlvbiB0KCl7cmV0dXJuITB9KSl9KSgpKX1jYXRjaCh0KXtyZXR1cm4hMX19KSgpKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY2xhc3MgXyR0e3N0YXRpYyBkZXRlY3RTY3JvbGxUeXBlKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnRleHRDb250ZW50PSJBQkNEIix0LmRpcj0icnRsIix0LnN0eWxlLmZvbnRTaXplPSIxNHB4Iix0LnN0eWxlLndpZHRoPSI0cHgiLHQuc3R5bGUuaGVpZ2h0PSIxcHgiLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLnRvcD0iLTEwMDBweCIsdC5zdHlsZS5vdmVyZmxvdz0ic2Nyb2xsIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO2xldCBlPSJyZXZlcnNlIjtyZXR1cm4gdC5zY3JvbGxMZWZ0PjA/ZT0iZGVmYXVsdCI6KHQuc2Nyb2xsTGVmdD0yLHQuc2Nyb2xsTGVmdDwyJiYoZT0ibmVnYXRpdmUiKSksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxlfXN0YXRpYyBnZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0LGUsbil7Y29uc3R7c2Nyb2xsTGVmdDppfT1uO2lmKCJydGwiIT09ZXx8IXQpcmV0dXJuIGk7c3dpdGNoKHQpe2Nhc2UibmVnYXRpdmUiOnJldHVybiBuLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGgraTtjYXNlInJldmVyc2UiOnJldHVybiBuLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGgtaX1yZXR1cm4gaX1zdGF0aWMgc2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxlLG4saSl7aWYoInJ0bCI9PT1lJiZ0KXN3aXRjaCh0KXtjYXNlIm5lZ2F0aXZlIjpuLnNjcm9sbExlZnQ9bi5jbGllbnRXaWR0aC1uLnNjcm9sbFdpZHRoK2k7YnJlYWs7Y2FzZSJyZXZlcnNlIjpuLnNjcm9sbExlZnQ9bi5zY3JvbGxXaWR0aC1uLmNsaWVudFdpZHRoLWk7YnJlYWs7ZGVmYXVsdDpuLnNjcm9sbExlZnQ9aX1lbHNlIG4uc2Nyb2xsTGVmdD1pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi9jb25zdCB5JHQ9W107bGV0IHYkdDtuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oKXtjb25zdCB0PXgkdCgpO3kkdC5mb3JFYWNoKChlPT57YiR0KGUsdCl9KSl9KSkub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiZGlyIl19KTtjb25zdCBiJHQ9ZnVuY3Rpb24odCxlLG49dC5nZXRBdHRyaWJ1dGUoImRpciIpKXtlP3Quc2V0QXR0cmlidXRlKCJkaXIiLGUpOm51bGwhPW4mJnQucmVtb3ZlQXR0cmlidXRlKCJkaXIiKX0seCR0PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoImRpciIpfSx3JHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkaXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19fXN0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCksdiR0fHwodiR0PV8kdC5kZXRlY3RTY3JvbGxUeXBlKCkpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZGlyIil8fCh0aGlzLl9fc3Vic2NyaWJlKCksYiR0KHRoaXMseCR0KCksbnVsbCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbil7aWYoc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKSwiZGlyIiE9PXQpcmV0dXJuO2NvbnN0IGk9eCR0KCkscj1uPT09aSYmLTE9PT15JHQuaW5kZXhPZih0aGlzKSxvPSFuJiZlJiYtMT09PXkkdC5pbmRleE9mKHRoaXMpLGE9biE9PWkmJmU9PT1pO3J8fG8/KHRoaXMuX19zdWJzY3JpYmUoKSxiJHQodGhpcyxpLG4pKTphJiZ0aGlzLl9fc3Vic2NyaWJlKCExKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fX3N1YnNjcmliZSghMSksdGhpcy5yZW1vdmVBdHRyaWJ1dGUoImRpciIpfV92YWx1ZVRvTm9kZUF0dHJpYnV0ZSh0LGUsbil7KCJkaXIiIT09bnx8IiIhPT1lfHx0Lmhhc0F0dHJpYnV0ZSgiZGlyIikpJiZzdXBlci5fdmFsdWVUb05vZGVBdHRyaWJ1dGUodCxlLG4pfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKXsiZGlyIiE9PXR8fGU/c3VwZXIuX2F0dHJpYnV0ZVRvUHJvcGVydHkodCxlLG4pOnRoaXMuZGlyPSIifV9fc3Vic2NyaWJlKHQ9ITApe3Q/LTE9PT15JHQuaW5kZXhPZih0aGlzKSYmeSR0LnB1c2godGhpcyk6eSR0LmluZGV4T2YodGhpcyk+LTEmJnkkdC5zcGxpY2UoeSR0LmluZGV4T2YodGhpcyksMSl9X19nZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0KXtyZXR1cm4gXyR0LmdldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHYkdCx0aGlzLmdldEF0dHJpYnV0ZSgiZGlyIil8fCJsdHIiLHQpfV9fc2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxlKXtyZXR1cm4gXyR0LnNldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHYkdCx0aGlzLmdldEF0dHJpYnV0ZSgiZGlyIil8fCJsdHIiLHQsZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLztsZXQgUyR0O3dpbmRvdy5WYWFkaW49d2luZG93LlZhYWRpbnx8e30sd2luZG93LlZhYWRpbi5yZWdpc3RyYXRpb25zPXdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9uc3x8W10sd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFjaz13aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrfHx7fSx3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrWyJ2YWFkaW4tdXNhZ2Utc3RhdGlzdGljcyJdPWZ1bmN0aW9uKCl7dmFyIHQ7dD1tJHQsd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGUmJmYkdCh0LHZvaWQgMCl9O2NvbnN0IE0kdD1uZXcgU2V0LEUkdD10PT5jbGFzcyBleHRlbmRzKHckdCh0KSl7c3RhdGljIGZpbmFsaXplKCl7c3VwZXIuZmluYWxpemUoKTtjb25zdHtpczp0fT10aGlzO3QmJiFNJHQuaGFzKHQpJiYod2luZG93LlZhYWRpbi5yZWdpc3RyYXRpb25zLnB1c2godGhpcyksTSR0LmFkZCh0KSx3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrJiYoUyR0PVRuLmRlYm91bmNlKFMkdCx5dCwoKCk9Pnt3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrWyJ2YWFkaW4tdXNhZ2Utc3RhdGlzdGljcyJdKCl9KSksQW4oUyR0KSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxudWxsPT09ZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCdWYWFkaW4gY29tcG9uZW50cyByZXF1aXJlIHRoZSAic3RhbmRhcmRzIG1vZGUiIGRlY2xhcmF0aW9uLiBQbGVhc2UgYWRkIDwhRE9DVFlQRSBodG1sPiB0byB0aGUgSFRNTCBkb2N1bWVudC4nKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2NsYXNzIFQkdCBleHRlbmRzKEUkdChoJHQoYyR0KHBpKHllKSkpKSl7c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBfZWAKICAgICAgPHN0eWxlPgogICAgICAgIDpob3N0IHsKICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBsYWJlbCB7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICBmbGV4OiBub25lOwogICAgICAgIH0KCiAgICAgICAgaW5wdXRbdHlwZT0nY2hlY2tib3gnXSB7CiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICBjdXJzb3I6IGluaGVyaXQ7CiAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgfQoKICAgICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIH0KICAgICAgPC9zdHlsZT4KCiAgICAgIDxsYWJlbD4KICAgICAgICA8c3BhbiBwYXJ0PSJjaGVja2JveCI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCiAgICAgICAgICAgIGNoZWNrZWQ9Int7Y2hlY2tlZDo6Y2hhbmdlfX0iCiAgICAgICAgICAgIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIgogICAgICAgICAgICBpbmRldGVybWluYXRlPSJ7e2luZGV0ZXJtaW5hdGU6OmNoYW5nZX19IgogICAgICAgICAgICByb2xlPSJwcmVzZW50YXRpb24iCiAgICAgICAgICAgIHRhYmluZGV4PSItMSIKICAgICAgICAgIC8+CiAgICAgICAgPC9zcGFuPgoKICAgICAgICA8c3BhbiBwYXJ0PSJsYWJlbCI+CiAgICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2xhYmVsPgogICAgYH1zdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1jaGVja2JveCJ9c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9jaGVja2VkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxpbmRldGVybWluYXRlOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfaW5kZXRlcm1pbmF0ZUNoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvbiJ9LF9uYXRpdmVDaGVja2JveDp7dHlwZTpPYmplY3R9fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCl9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5jaGVja2VkP3RoaXMuX3N0b3JlZE5hbWU6IiJ9c2V0IG5hbWUodCl7dGhpcy5fc3RvcmVkTmFtZT10fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsImNoZWNrYm94IiksdGhpcy5fbmF0aXZlQ2hlY2tib3g9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKSx0aGlzLl9hZGRBY3RpdmVMaXN0ZW5lcnMoKTtjb25zdCB0PXRoaXMuZ2V0QXR0cmlidXRlKCJuYW1lIik7dCYmKHRoaXMubmFtZT10KSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnR+PSJsYWJlbCJdJykucXVlcnlTZWxlY3Rvcigic2xvdCIpLmFkZEV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX3VwZGF0ZUxhYmVsQXR0cmlidXRlLmJpbmQodGhpcykpLHRoaXMuX3VwZGF0ZUxhYmVsQXR0cmlidXRlKCl9X3VwZGF0ZUxhYmVsQXR0cmlidXRlKCl7Y29uc3QgdD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnR+PSJsYWJlbCJdJyksZT10LmZpcnN0RWxlbWVudENoaWxkLmFzc2lnbmVkTm9kZXMoKTt0aGlzLl9pc0Fzc2lnbmVkTm9kZXNFbXB0eShlKT90LnNldEF0dHJpYnV0ZSgiZW1wdHkiLCIiKTp0LnJlbW92ZUF0dHJpYnV0ZSgiZW1wdHkiKX1faXNBc3NpZ25lZE5vZGVzRW1wdHkodCl7cmV0dXJuIDA9PT10Lmxlbmd0aHx8MT09dC5sZW5ndGgmJnRbMF0ubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYiIj09PXRbMF0udGV4dENvbnRlbnQudHJpbSgpfV9jaGVja2VkQ2hhbmdlZCh0KXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIix0aGlzLmluZGV0ZXJtaW5hdGU/Im1peGVkIjpCb29sZWFuKHQpKX1faW5kZXRlcm1pbmF0ZUNoYW5nZWQodCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsdD8ibWl4ZWQiOnRoaXMuY2hlY2tlZCl9X2FkZEFjdGl2ZUxpc3RlbmVycygpe3RoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcywiZG93biIsKHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpfSkpLHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcywidXAiLCgoKT0+dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFjdGl2ZSIpKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYzMj09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLnNldEF0dHJpYnV0ZSgiYWN0aXZlIiwiIikpfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCh0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJjMyPT09dC5rZXlDb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYWN0aXZlIiksdGhpcy5pbmRldGVybWluYXRlJiYodGhpcy5pbmRldGVybWluYXRlPSExKSl9KSl9Z2V0IGZvY3VzRWxlbWVudCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKX1fX2ludGVyYWN0aW9uc0FsbG93ZWQodCl7cmV0dXJuIXRoaXMuZGlzYWJsZWQmJiJhIiE9PXQudGFyZ2V0LmxvY2FsTmFtZX1faGFuZGxlQ2xpY2sodCl7dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJih0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuaW5kZXRlcm1pbmF0ZT0hMSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlQ2hlY2tlZCgpKTp0LmNvbXBvc2VkUGF0aCgpWzBdIT09dGhpcy5fbmF0aXZlQ2hlY2tib3gmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlQ2hlY2tlZCgpKSl9X3RvZ2dsZUNoZWNrZWQoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZCx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtjb21wb3NlZDohMSxidWJibGVzOiEwfSkpfX1jdXN0b21FbGVtZW50cy5kZWZpbmUoVCR0LmlzLFQkdCksJFh0KCJ2YWFkaW4tZ3JpZCIsR1h0YAogICAgOmhvc3QgewogICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpOwogICAgICBjb2xvcjogdmFyKC0tbHVtby1ib2R5LXRleHQtY29sb3IpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwoKICAgICAgLyogRm9yIGludGVybmFsIHVzZSBvbmx5ICovCiAgICAgIC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICAtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7CiAgICAgIC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGg6IDFweDsKICAgICAgLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0KTsKICAgIH0KCiAgICAvKiBObyAob3V0ZXIpIGJvcmRlciAqLwoKICAgIDpob3N0KDpub3QoW3RoZW1lfj0nbm8tYm9yZGVyJ10pKSB7CiAgICAgIGJvcmRlcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBDZWxsIHN0eWxlcyAqLwoKICAgIFtwYXJ0fj0nY2VsbCddIHsKICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLW0pOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICBwYWRkaW5nOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSB2YXIoLS1sdW1vLXNwYWNlLW0pOwogICAgfQoKICAgIC8qIEFwcGx5IHJvdyBib3JkZXJzIGJ5IGRlZmF1bHQgYW5kIGludHJvZHVjZSB0aGUgIm5vLXJvdy1ib3JkZXJzIiB2YXJpYW50ICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItdG9wOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBIaWRlIGZpcnN0IGJvZHkgcm93IHRvcCBib3JkZXIgKi8KICAgIDpob3N0KDpub3QoW3RoZW1lfj0nbm8tcm93LWJvcmRlcnMnXSkpIFtwYXJ0PSdyb3cnXVtmaXJzdF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1sdW1vLXNpemUtbSkgLSB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkpOwogICAgfQoKICAgIC8qIEZvY3VzLXJpbmcgKi8KCiAgICBbcGFydH49J2NlbGwnXTpmb2N1cyB7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CgogICAgOmhvc3QoW25hdmlnYXRpbmddKSBbcGFydH49J2NlbGwnXTpmb2N1czo6YmVmb3JlIHsKICAgICAgY29udGVudDogJyc7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBsZWZ0OiAwOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgLyogRHJhZyBhbmQgRHJvcCBzdHlsZXMgKi8KICAgIDpob3N0KFtkcmFnb3Zlcl0pOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBsZWZ0OiAwOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcl0gewogICAgICB6LWluZGV4OiAxMDAgIWltcG9ydGFudDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdvdmVyXSBbcGFydH49J2NlbGwnXSB7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSArIDJweCk7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIDpob3N0KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pIFtkcmFnb3Zlcl0gW3BhcnR+PSdjZWxsJ106OmFmdGVyIHsKICAgICAgaGVpZ2h0OiAycHg7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcj0nYmVsb3cnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICB0b3A6IDEwMCU7CiAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgbWFyZ2luLXRvcDogLTFweDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdvdmVyPSdhYm92ZSddIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIHRvcDogYXV0bzsKICAgICAgYm90dG9tOiAxMDAlOwogICAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZGV0YWlscy1vcGVuZWRdW2RyYWdvdmVyPSdiZWxvdyddIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKTo6YWZ0ZXIsCiAgICBbcGFydH49J3JvdyddW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0nYWJvdmUnXSBbcGFydH49J2RldGFpbHMtY2VsbCddOjphZnRlciB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcl1bZHJhZ292ZXI9J29uLXRvcCddIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIGhlaWdodDogMTAwJTsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gewogICAgICAvKiBBZGQgYm90dG9tLXNwYWNlIHRvIHRoZSByb3cgc28gdGhlIGRyYWcgbnVtYmVyIGRvZXNuJ3QgZ2V0IGNsaXBwZWQuIE5lZWRlZCBmb3IgSUUvRWRnZSAqLwogICAgICBib3JkZXItYm90dG9tOiAxMDBweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgei1pbmRleDogMTAwICFpbXBvcnRhbnQ7CiAgICAgIG9wYWNpdHk6IDAuOTsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ10gewogICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XSBbcGFydH49J2NlbGwnXVtsYXN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ11bZmlyc3QtY29sdW1uXSB7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSAwIDAgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpOwogICAgfQoKICAgIFtpb3NdIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XSBbcGFydH49J2NlbGwnXSB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICB9CgogICAgI3Njcm9sbGVyOm5vdChbaW9zXSkgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdOm5vdChbZHJhZ3N0YXJ0PScnXSk6OmFmdGVyIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgbGVmdDogdmFyKC0tX2dyaWQtZHJhZy1zdGFydC14KTsKICAgICAgdG9wOiB2YXIoLS1fZ3JpZC1kcmFnLXN0YXJ0LXkpOwogICAgICB6LWluZGV4OiAxMDA7CiAgICAgIGNvbnRlbnQ6IGF0dHIoZHJhZ3N0YXJ0KTsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBhZGRpbmc6IGNhbGModmFyKC0tbHVtby1zcGFjZS14cykgKiAwLjgpOwogICAgICBjb2xvcjogdmFyKC0tbHVtby1lcnJvci1jb250cmFzdC1jb2xvcik7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tZXJyb3ItY29sb3IpOwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSk7CiAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1sdW1vLWZvbnQtZmFtaWx5KTsKICAgICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14eHMpOwogICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgdGV4dC10cmFuc2Zvcm06IGluaXRpYWw7CiAgICAgIGxldHRlci1zcGFjaW5nOiBpbml0aWFsOwogICAgICBtaW4td2lkdGg6IGNhbGModmFyKC0tbHVtby1zaXplLXMpICogMC43KTsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQoKICAgIC8qIEhlYWRlcnMgYW5kIGZvb3RlcnMgKi8KCiAgICBbcGFydH49J2hlYWRlci1jZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCksCiAgICBbcGFydH49J2Zvb3Rlci1jZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCksCiAgICBbcGFydH49J3Jlb3JkZXItZ2hvc3QnXSB7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtcyk7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB9CgogICAgW3BhcnR+PSdmb290ZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIH0KCiAgICBbcGFydD0ncm93J106b25seS1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBtaW4taGVpZ2h0OiB2YXIoLS1sdW1vLXNpemUteGwpOwogICAgfQoKICAgIC8qIEhlYWRlciBib3JkZXJzICovCgogICAgLyogSGlkZSBmaXJzdCBoZWFkZXIgcm93IHRvcCBib3JkZXIgKi8KICAgIDpob3N0KDpub3QoW3RoZW1lfj0nbm8tcm93LWJvcmRlcnMnXSkpIFtwYXJ0PSdyb3cnXTpmaXJzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItdG9wOiAwOwogICAgfQoKICAgIFtwYXJ0PSdyb3cnXTpsYXN0LWNoaWxkIFtwYXJ0fj0naGVhZGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106bGFzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIE92ZXJmbG93IHVzZXMgYSBzdHJvbmdlciBib3JkZXIgY29sb3IgKi8KICAgIDpob3N0KFtvdmVyZmxvd349J3RvcCddKSBbcGFydD0ncm93J106bGFzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogRm9vdGVyIGJvcmRlcnMgKi8KCiAgICBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdmb290ZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50OwogICAgfQoKICAgIDpob3N0KDpub3QoW3RoZW1lfj0nbm8tcm93LWJvcmRlcnMnXSkpIFtwYXJ0PSdyb3cnXTpmaXJzdC1jaGlsZCBbcGFydH49J2Zvb3Rlci1jZWxsJ10gewogICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIE92ZXJmbG93IHVzZXMgYSBzdHJvbmdlciBib3JkZXIgY29sb3IgKi8KICAgIDpob3N0KFtvdmVyZmxvd349J2JvdHRvbSddKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdmb290ZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIENvbHVtbiByZW9yZGVyaW5nICovCgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgdmFyKC0tbHVtby1zaGFkZS0yMHBjdCkpIHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICB9CgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXVtyZW9yZGVyLXN0YXR1cz0nYWxsb3dlZCddIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0nY2VsbCddW3Jlb3JkZXItc3RhdHVzPSdkcmFnZ2luZyddIHsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHZhcigtLWx1bW8tY29udHJhc3QtNXBjdCksIHZhcigtLWx1bW8tY29udHJhc3QtNXBjdCkpIHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICB9CgogICAgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBvcGFjaXR5OiAwLjg1OwogICAgICBib3gtc2hhZG93OiB2YXIoLS1sdW1vLWJveC1zaGFkb3ctcyk7CiAgICAgIC8qIFRPRE8gVXNlIHRoZSBzYW1lIHN0eWxlcyBhcyBmb3IgdGhlIGNlbGwgZWxlbWVudCAocmVvcmRlci1naG9zdCBjb3BpZXMgc3R5bGVzIGZyb20gdGhlIGNlbGwgZWxlbWVudCkgKi8KICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS1zKSB2YXIoLS1sdW1vLXNwYWNlLW0pICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogQ29sdW1uIHJlc2l6aW5nICovCgogICAgW3BhcnQ9J3Jlc2l6ZS1oYW5kbGUnXSB7CiAgICAgIHdpZHRoOiAzcHg7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsKICAgIH0KCiAgICA6aG9zdCg6bm90KFtyZW9yZGVyaW5nXSkpICo6bm90KFtjb2x1bW4tcmVzaXppbmddKSBbcGFydH49J2NlbGwnXTpob3ZlciBbcGFydD0ncmVzaXplLWhhbmRsZSddLAogICAgW3BhcnQ9J3Jlc2l6ZS1oYW5kbGUnXTphY3RpdmUgewogICAgICBvcGFjaXR5OiAxOwogICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwLjE1czsKICAgIH0KCiAgICAvKiBDb2x1bW4gYm9yZGVycyAqLwoKICAgIDpob3N0KFt0aGVtZX49J2NvbHVtbi1ib3JkZXJzJ10pIFtwYXJ0fj0nY2VsbCddOm5vdChbbGFzdC1jb2x1bW5dKTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIEZyb3plbiBjb2x1bW5zICovCgogICAgW2xhc3QtZnJvemVuXSB7CiAgICAgIGJvcmRlci1yaWdodDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIDpob3N0KFtvdmVyZmxvd349J2xlZnQnXSkgW3BhcnR+PSdjZWxsJ11bbGFzdC1mcm96ZW5dOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIFJvdyBzdHJpcGVzICovCgogICAgOmhvc3QoW3RoZW1lfj0ncm93LXN0cmlwZXMnXSkgW3BhcnR+PSdyb3cnXTpub3QoW29kZF0pIFtwYXJ0fj0nYm9keS1jZWxsJ10sCiAgICA6aG9zdChbdGhlbWV+PSdyb3ctc3RyaXBlcyddKSBbcGFydH49J3JvdyddOm5vdChbb2RkXSkgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpLCB2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpKTsKICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwogICAgfQoKICAgIC8qIFNlbGVjdGVkIHJvdyAqLwoKICAgIC8qIFJhaXNlIHRoZSBzZWxlY3RlZCByb3dzIGFib3ZlIHVuc2VsZWN0ZWQgcm93cyAoc28gdGhhdCBib3gtc2hhZG93IGNhbiBjb3ZlciB1bnNlbGVjdGVkIHJvd3MpICovCiAgICA6aG9zdCg6bm90KFtyZW9yZGVyaW5nXSkpIFtwYXJ0fj0ncm93J11bc2VsZWN0ZWRdIHsKICAgICAgei1pbmRleDogMTsKICAgIH0KCiAgICA6aG9zdCg6bm90KFtyZW9yZGVyaW5nXSkpIFtwYXJ0fj0ncm93J11bc2VsZWN0ZWRdIFtwYXJ0fj0nYm9keS1jZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKSwgdmFyKC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3IpKTsKICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsKICAgIH0KCiAgICAvKiBDb3ZlciB0aGUgYm9yZGVyIG9mIGFuIHVuc2VsZWN0ZWQgcm93ICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3gtc2hhZG93OiAwIHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSAwIDAgdmFyKC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3IpOwogICAgfQoKICAgIC8qIENvbXBhY3QgKi8KCiAgICA6aG9zdChbdGhlbWV+PSdjb21wYWN0J10pIFtwYXJ0PSdyb3cnXTpvbmx5LWNoaWxkIFtwYXJ0fj0naGVhZGVyLWNlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSdjb21wYWN0J10pIFtwYXJ0fj0nY2VsbCddIHsKICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLXMpOwogICAgfQoKICAgIDpob3N0KFt0aGVtZX49J2NvbXBhY3QnXSkgW3BhcnQ9J3JvdyddW2ZpcnN0XSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLWx1bW8tc2l6ZS1zKSAtIHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSk7CiAgICB9CgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UteHMpIHZhcigtLWx1bW8tc3BhY2Utcyk7CiAgICB9CgogICAgLyogV3JhcCBjZWxsIGNvbnRlbnRzICovCgogICAgOmhvc3QoW3RoZW1lfj0nd3JhcC1jZWxsLWNvbnRlbnQnXSkgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgfQoKICAgIC8qIFJUTCBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2xhc3QtY29sdW1uXSB7CiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSAwIDAgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpOwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddKSBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ11bZmlyc3QtY29sdW1uXSB7CiAgICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSAwOwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddW3RoZW1lfj0nY29sdW1uLWJvcmRlcnMnXSkgW3BhcnR+PSdjZWxsJ106bm90KFtsYXN0LWNvbHVtbl0pOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddKSBbbGFzdC1mcm96ZW5dIHsKICAgICAgYm9yZGVyLXJpZ2h0OiBub25lOwogICAgICBib3JkZXItbGVmdDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50OwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddW292ZXJmbG93fj0ncmlnaHQnXSkgW3BhcnR+PSdjZWxsJ11bbGFzdC1mcm96ZW5dOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CiAgYCx7bW9kdWxlSWQ6Imx1bW8tZ3JpZCJ9KSwkWHQoInZhYWRpbi1jaGVja2JveCIsR1h0YAogICAgOmhvc3QoLnZhYWRpbi1ncmlkLXNlbGVjdC1hbGwtY2hlY2tib3gpIHsKICAgICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKTsKICAgIH0KICBgLHttb2R1bGVJZDoidmFhZGluLWdyaWQtc2VsZWN0LWFsbC1jaGVja2JveC1sdW1vIn0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBDJHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpob25lfGFkOyg/OiBVOyk/IENQVSkgT1MgKFxkKykvKSxBJHQ9QyR0JiZDJHRbMV0+PTgsayR0PUlyKHtiZWhhdmlvcnM6W2dvLERvXSxfcmF0aW86LjUsX3Njcm9sbGVyUGFkZGluZ1RvcDowLF9zY3JvbGxQb3NpdGlvbjowLF9waHlzaWNhbFNpemU6MCxfcGh5c2ljYWxBdmVyYWdlOjAsX3BoeXNpY2FsQXZlcmFnZUNvdW50OjAsX3BoeXNpY2FsVG9wOjAsX3ZpcnR1YWxDb3VudDowLF9lc3RTY3JvbGxIZWlnaHQ6MCxfc2Nyb2xsSGVpZ2h0OjAsX3ZpZXdwb3J0SGVpZ2h0OjAsX3ZpZXdwb3J0V2lkdGg6MCxfcGh5c2ljYWxJdGVtczpudWxsLF9waHlzaWNhbFNpemVzOm51bGwsX2ZpcnN0VmlzaWJsZUluZGV4VmFsOm51bGwsX2xhc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbWF4UGFnZXM6MixfZm9jdXNlZFZpcnR1YWxJbmRleDotMSxfdGVtcGxhdGVDb3N0OjAsZ2V0IF9waHlzaWNhbEJvdHRvbSgpe3JldHVybiB0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9waHlzaWNhbFNpemV9LGdldCBfc2Nyb2xsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX3ZpcnR1YWxFbmQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMX0sZ2V0IF9oaWRkZW5Db250ZW50U2l6ZSgpe3JldHVybiB0aGlzLl9waHlzaWNhbFNpemUtdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfbWF4U2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl92aWV3cG9ydEhlaWdodCt0aGlzLl9zY3JvbGxPZmZzZXR9LGdldCBfbWF4VmlydHVhbFN0YXJ0KCl7cmV0dXJuIE1hdGgubWF4KDAsdGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3BoeXNpY2FsQ291bnQpfSxzZXQgX3ZpcnR1YWxTdGFydCh0KXt0PXRoaXMuX2NsYW1wKHQsMCx0aGlzLl9tYXhWaXJ0dWFsU3RhcnQpLHRoaXMuX3ZpcnR1YWxTdGFydFZhbD10fSxnZXQgX3ZpcnR1YWxTdGFydCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnRWYWx8fDB9LHNldCBfcGh5c2ljYWxTdGFydCh0KXsodCU9dGhpcy5fcGh5c2ljYWxDb3VudCk8MCYmKHQ9dGhpcy5fcGh5c2ljYWxDb3VudCt0KSx0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPXR9LGdldCBfcGh5c2ljYWxTdGFydCgpe3JldHVybiB0aGlzLl9waHlzaWNhbFN0YXJ0VmFsfHwwfSxnZXQgX3BoeXNpY2FsRW5kKCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQodCl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD10fSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gMD09PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0PzEvMDp0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9pc1Zpc2libGUoKXtyZXR1cm4gQm9vbGVhbih0aGlzLm9mZnNldFdpZHRofHx0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe2xldCB0PXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PXQpe2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0PXRoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxuKXtpZihlKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLGU+dGhpcy5fc2Nyb2xsUG9zaXRpb24pcmV0dXJuIG59KSl8fDAsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKXtsZXQgdD10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PXQpe2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7ZTx0aGlzLl9zY3JvbGxCb3R0b20mJih0PWkpLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbbl19KSksdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD10fXJldHVybiB0fSxnZXQgX3Njcm9sbE9mZnNldCgpe3JldHVybiB0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3B9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCksdGhpcy5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpfSx1cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXM6ZnVuY3Rpb24oKXtjb25zdCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpO3RoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcD10aGlzLnNjcm9sbFRhcmdldD09PXRoaXM/MDpwYXJzZUludCh0WyJwYWRkaW5nLXRvcCJdLDEwKSx0aGlzLl9pc1JUTD1Cb29sZWFuKCJydGwiPT09dC5kaXJlY3Rpb24pLHRoaXMuX3ZpZXdwb3J0V2lkdGg9dGhpcy4kLml0ZW1zLm9mZnNldFdpZHRoLHRoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodH0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXtjb25zdCB0PU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5fbWF4U2Nyb2xsVG9wLHRoaXMuX3Njcm9sbFRvcCkpO2xldCBlPXQtdGhpcy5fc2Nyb2xsUG9zaXRpb247Y29uc3Qgbj1lPj0wO2lmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPXQsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsTWF0aC5hYnMoZSk+dGhpcy5fcGh5c2ljYWxTaXplJiZ0aGlzLl9waHlzaWNhbFNpemU+MCl7ZS09dGhpcy5fc2Nyb2xsT2Zmc2V0O2NvbnN0IHQ9TWF0aC5yb3VuZChlL3RoaXMuX3BoeXNpY2FsQXZlcmFnZSk7dGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCt0LHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCt0LHRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2UsdGhpcy5fdXBkYXRlKCl9ZWxzZSBpZih0aGlzLl9waHlzaWNhbENvdW50PjApe2NvbnN0e3BoeXNpY2FsVG9wOnQsaW5kZXhlczplfT10aGlzLl9nZXRSZXVzYWJsZXMobik7bj8odGhpcy5fcGh5c2ljYWxUb3A9dCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2UubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtlLmxlbmd0aCk6KHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQtZS5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0LWUubGVuZ3RoKSx0aGlzLl91cGRhdGUoZSxuP251bGw6ZSksdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLDApLHZ0KX19LF9nZXRSZXVzYWJsZXM6ZnVuY3Rpb24odCl7bGV0IGUsbixpO2NvbnN0IHI9W10sbz10aGlzLl9oaWRkZW5Db250ZW50U2l6ZSp0aGlzLl9yYXRpbyxhPXRoaXMuX3ZpcnR1YWxTdGFydCxzPXRoaXMuX3ZpcnR1YWxFbmQsbD10aGlzLl9waHlzaWNhbENvdW50O2xldCBjPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDtjb25zdCB1PXRoaXMuX3Njcm9sbFRvcCxoPXRoaXMuX3Njcm9sbEJvdHRvbTtmb3IodD8oZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dS1jKTooZT10aGlzLl9waHlzaWNhbEVuZCxuPXRoaXMuX3BoeXNpY2FsQm90dG9tK3RoaXMuX3Njcm9sbE9mZnNldC1oKTtpPXRoaXMuX3BoeXNpY2FsU2l6ZXNbZV0sbi09aSwhKHIubGVuZ3RoPj1sfHxuPD1vKTspaWYodCl7aWYocytyLmxlbmd0aCsxPj10aGlzLl92aXJ0dWFsQ291bnQpYnJlYWs7aWYoYytpPj11LXRoaXMuX3Njcm9sbE9mZnNldClicmVhaztyLnB1c2goZSksYys9aSxlPShlKzEpJWx9ZWxzZXtpZihhLXIubGVuZ3RoPD0wKWJyZWFrO2lmKGMrdGhpcy5fcGh5c2ljYWxTaXplLWk8PWgpYnJlYWs7ci5wdXNoKGUpLGMtPWksZT0wPT09ZT9sLTE6ZS0xfXJldHVybntpbmRleGVzOnIscGh5c2ljYWxUb3A6Yy10aGlzLl9zY3JvbGxPZmZzZXR9fSxfdXBkYXRlOmZ1bmN0aW9uKHQsZSl7aWYoISh0JiYwPT09dC5sZW5ndGh8fDA9PT10aGlzLl9waHlzaWNhbENvdW50KSl7aWYodGhpcy5fYXNzaWduTW9kZWxzKHQpLHRoaXMuX3VwZGF0ZU1ldHJpY3ModCksZSlmb3IoO2UubGVuZ3RoOyl7Y29uc3QgdD1lLnBvcCgpO3RoaXMuX3BoeXNpY2FsVG9wLT10aGlzLl9waHlzaWNhbFNpemVzW3RdfXRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX19LF9pc0NsaWVudEZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbEJvdHRvbS0xPj10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsVG9wPD10aGlzLl9zY3JvbGxQb3NpdGlvbn0sX2luY3JlYXNlUG9vbElmTmVlZGVkOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fY2xhbXAodGhpcy5fcGh5c2ljYWxDb3VudCt0LDMsdGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCktdGhpcy5fcGh5c2ljYWxDb3VudDtsZXQgbj1NYXRoLnJvdW5kKC41KnRoaXMuX3BoeXNpY2FsQ291bnQpO2lmKCEoZTwwKSl7aWYoZT4wKXtjb25zdCB0PXdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtbXS5wdXNoLmFwcGx5KHRoaXMuX3BoeXNpY2FsSXRlbXMsdGhpcy5fY3JlYXRlUG9vbChlKSk7Zm9yKGxldCB0PTA7dDxlO3QrKyl0aGlzLl9waHlzaWNhbFNpemVzLnB1c2goMCk7dGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50K2UsdGhpcy5fcGh5c2ljYWxTdGFydD50aGlzLl9waHlzaWNhbEVuZCYmdGhpcy5faXNJbmRleFJlbmRlcmVkKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpJiZ0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpPHRoaXMuX3BoeXNpY2FsRW5kJiYodGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K2UpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3RlbXBsYXRlQ29zdD0od2luZG93LnBlcmZvcm1hbmNlLm5vdygpLXQpL2Usbj1NYXRoLnJvdW5kKC41KnRoaXMuX3BoeXNpY2FsQ291bnQpfXRoaXMuX3ZpcnR1YWxFbmQ+PXRoaXMuX3ZpcnR1YWxDb3VudC0xfHwwPT09bnx8KHRoaXMuX2lzQ2xpZW50RnVsbCgpP3RoaXMuX3BoeXNpY2FsU2l6ZTx0aGlzLl9vcHRQaHlzaWNhbFNpemUmJnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyx0aGlzLl9jbGFtcChNYXRoLnJvdW5kKDUwL3RoaXMuX3RlbXBsYXRlQ29zdCksMSxuKSkseXQpOnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyxuKSx2dCkpfX0sX3JlbmRlcjpmdW5jdGlvbigpe2lmKHRoaXMuaXNBdHRhY2hlZCYmdGhpcy5faXNWaXNpYmxlKWlmKDAhPT10aGlzLl9waHlzaWNhbENvdW50KXtjb25zdHtwaHlzaWNhbFRvcDp0LGluZGV4ZXM6ZX09dGhpcy5fZ2V0UmV1c2FibGVzKCEwKTt0aGlzLl9waHlzaWNhbFRvcD10LHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrZS5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K2UubGVuZ3RoLHRoaXMuX3VwZGF0ZShlKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKX1lbHNlIHRoaXMuX3ZpcnR1YWxDb3VudD4wJiYodGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgzKSl9LF9pdGVtc0NoYW5nZWQ6ZnVuY3Rpb24odCl7Iml0ZW1zIj09PXQucGF0aCYmKHRoaXMuX3ZpcnR1YWxTdGFydD0wLHRoaXMuX3BoeXNpY2FsVG9wPTAsdGhpcy5fdmlydHVhbENvdW50PXRoaXMuaXRlbXM/dGhpcy5pdGVtcy5sZW5ndGg6MCx0aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5PXt9LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudHx8MCx0aGlzLl9waHlzaWNhbEl0ZW1zPXRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdLHRoaXMuX3BoeXNpY2FsU2l6ZXM9dGhpcy5fcGh5c2ljYWxTaXplc3x8W10sdGhpcy5fcGh5c2ljYWxTdGFydD0wLHRoaXMuX3Njcm9sbFRvcD50aGlzLl9zY3JvbGxPZmZzZXQmJnRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24oMCksdGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCkpfSxfaXRlcmF0ZUl0ZW1zOmZ1bmN0aW9uKHQsZSl7bGV0IG4saSxyLG87aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJmUpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspaWYobj1lW29dLGk9dGhpcy5fY29tcHV0ZVZpZHgobiksbnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9ZWxzZXtmb3Iobj10aGlzLl9waHlzaWNhbFN0YXJ0LGk9dGhpcy5fdmlydHVhbFN0YXJ0O248dGhpcy5fcGh5c2ljYWxDb3VudDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByO2ZvcihuPTA7bjx0aGlzLl9waHlzaWNhbFN0YXJ0O24rKyxpKyspaWYobnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9fSxfY29tcHV0ZVZpZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3BoeXNpY2FsU3RhcnQ/dGhpcy5fdmlydHVhbFN0YXJ0Kyh0LXRoaXMuX3BoeXNpY2FsU3RhcnQpOnRoaXMuX3ZpcnR1YWxTdGFydCsodGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl9waHlzaWNhbFN0YXJ0KSt0fSxfdXBkYXRlTWV0cmljczpmdW5jdGlvbih0KXtpZighdGhpcy5faXNWaXNpYmxlKXJldHVybjtEaSgpO2xldCBlPTAsbj0wO2NvbnN0IGk9dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQscj10aGlzLl9waHlzaWNhbEF2ZXJhZ2U7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0KXtuKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLHRoaXMuX3BoeXNpY2FsU2l6ZXNbdF09dGhpcy5fcGh5c2ljYWxJdGVtc1t0XS5vZmZzZXRIZWlnaHQsZSs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCs9dGhpcy5fcGh5c2ljYWxTaXplc1t0XT8xOjB9KSx0KSx0aGlzLl9waHlzaWNhbFNpemU9dGhpcy5fcGh5c2ljYWxTaXplK2Utbix0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCE9PWkmJih0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9TWF0aC5yb3VuZCgocippK2UpL3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50KSl9LF9wb3NpdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKTtsZXQgdD10aGlzLl9waHlzaWNhbFRvcDt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKGUpe3RoaXMudHJhbnNsYXRlM2QoMCx0KyJweCIsMCx0aGlzLl9waHlzaWNhbEl0ZW1zW2VdKSx0Kz10aGlzLl9waHlzaWNhbFNpemVzW2VdfSkpfSxfYWRqdXN0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtjb25zdCB0PTA9PT10aGlzLl92aXJ0dWFsU3RhcnQ/dGhpcy5fcGh5c2ljYWxUb3A6TWF0aC5taW4odGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fcGh5c2ljYWxUb3AsMCk7aWYoMCE9PXQpe3RoaXMuX3BoeXNpY2FsVG9wPXRoaXMuX3BoeXNpY2FsVG9wLXQ7Y29uc3QgZT10aGlzLl9zY3JvbGxUb3A7IUEkdCYmZT4wJiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKGUtdCl9fSxfcmVzZXRTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbih0KXt0aGlzLnNjcm9sbFRhcmdldCYmdD49MCYmKHRoaXMuX3Njcm9sbFRvcD10LHRoaXMuX3Njcm9sbFBvc2l0aW9uPXRoaXMuX3Njcm9sbFRvcCl9LF91cGRhdGVTY3JvbGxlclNpemU6ZnVuY3Rpb24odCl7dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0PXRoaXMuX3BoeXNpY2FsQm90dG9tK01hdGgubWF4KHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCwwKSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2UsKCh0PSh0PXR8fDA9PT10aGlzLl9zY3JvbGxIZWlnaHQpfHx0aGlzLl9zY3JvbGxQb3NpdGlvbj49dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3BoeXNpY2FsU2l6ZSl8fE1hdGguYWJzKHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9zY3JvbGxIZWlnaHQpPj10aGlzLl92aWV3cG9ydEhlaWdodCkmJih0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCsicHgiLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQpfSxzY3JvbGxUb0luZGV4OmZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdHx8dDwwfHx0PnRoaXMuaXRlbXMubGVuZ3RoLTEpcmV0dXJuO2lmKERpKCksMD09PXRoaXMuX3BoeXNpY2FsQ291bnQpcmV0dXJuO3Q9dGhpcy5fY2xhbXAodCwwLHRoaXMuX3ZpcnR1YWxDb3VudC0xKSwoIXRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KXx8dD49dGhpcy5fbWF4VmlydHVhbFN0YXJ0KSYmKHRoaXMuX3ZpcnR1YWxTdGFydD10LTEpLHRoaXMuX2Fzc2lnbk1vZGVscygpLHRoaXMuX3VwZGF0ZU1ldHJpY3MoKSx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlO2xldCBlPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj10aGlzLl92aXJ0dWFsU3RhcnQsaT0wO2NvbnN0IHI9dGhpcy5faGlkZGVuQ29udGVudFNpemU7Zm9yKDtuPHQmJmk8PXI7KWkrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbZV0sZT0oZSsxKSV0aGlzLl9waHlzaWNhbENvdW50LG4rKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCtpKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbH0sX3Jlc2V0QXZlcmFnZTpmdW5jdGlvbigpe3RoaXMuX3BoeXNpY2FsQXZlcmFnZT0wLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50PTB9LF9yZXNpemVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLChmdW5jdGlvbigpe3RoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faXNWaXNpYmxlPyh0aGlzLnRvZ2dsZVNjcm9sbExpc3RlbmVyKCEwKSx0aGlzLl9yZXNldEF2ZXJhZ2UoKSx0aGlzLl9yZW5kZXIoKSk6dGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMSl9KSxfdCl9LF9pc0luZGV4UmVuZGVyZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdDw9dGhpcy5fdmlydHVhbEVuZH0sX2dldFBoeXNpY2FsSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrKHQtdGhpcy5fdmlydHVhbFN0YXJ0KSkldGhpcy5fcGh5c2ljYWxDb3VudH0sX2NsYW1wOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heChlLHQpKX0sX2RlYm91bmNlOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9LHRoaXMuX2RlYm91bmNlcnNbdF09VG4uZGVib3VuY2UodGhpcy5fZGVib3VuY2Vyc1t0XSxuLGUuYmluZCh0aGlzKSksQW4odGhpcy5fZGVib3VuY2Vyc1t0XSl9fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCmNsYXNzIEwkdCBleHRlbmRzIGskdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57c2l6ZTp7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSxfdmlkeE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MH19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZWZmZWN0aXZlU2l6ZUNoYW5nZWQoX2VmZmVjdGl2ZVNpemUpIl19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX3Njcm9sbEhhbmRsZXIoKX1fdXBkYXRlU2Nyb2xsZXJJdGVtKCl7fV9hZnRlclNjcm9sbCgpe31fZ2V0Um93VGFyZ2V0KCl7fV9jcmVhdGVTY3JvbGxlclJvd3MoKXt9X2NhblBvcHVsYXRlKCl7fXNjcm9sbFRvSW5kZXgodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3MoInNjcm9sbFRvSW5kZXgiKSx0aGlzLl9zY3JvbGxpbmdUb0luZGV4PSEwLHQ9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9lZmZlY3RpdmVTaXplLTEpLHRoaXMuJC50YWJsZS5zY3JvbGxUb3A9dC90aGlzLl9lZmZlY3RpdmVTaXplKih0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSx0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnRoaXMuX21heFNjcm9sbFRvcCkpJiZ0aGlzLl92aXJ0dWFsQ291bnQ8dGhpcy5fZWZmZWN0aXZlU2l6ZSYmdGhpcy5fYWRqdXN0VmlydHVhbEluZGV4T2Zmc2V0KDFlNiksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5zY3JvbGxUb0luZGV4KHQtdGhpcy5fdmlkeE9mZnNldCkpKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCk7Y29uc3QgZT1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChlPT5lLmluZGV4PT09dCkpWzBdO2lmKGUpe2NvbnN0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtdGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207TWF0aC5hYnModCk+MSYmKHRoaXMuJC50YWJsZS5zY3JvbGxUb3ArPXQsdGhpcy5fc2Nyb2xsSGFuZGxlcigpKX10aGlzLl9zY3JvbGxpbmdUb0luZGV4PSExfV9lZmZlY3RpdmVTaXplQ2hhbmdlZCh0KXtsZXQgZSxuPTA7dGhpcy5faXRlcmF0ZUl0ZW1zKCgodCxpKT0+e2lmKGk9PT10aGlzLl9maXJzdFZpc2libGVJbmRleCl7Y29uc3QgaT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdO2U9aS5pbmRleCxuPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wfX0pKSx0aGlzLml0ZW1zJiZ0PHRoaXMuaXRlbXMubGVuZ3RoJiYodGhpcy5fc2Nyb2xsVG9wPTApLEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcyl8fCh0aGlzLml0ZW1zPXtsZW5ndGg6TWF0aC5taW4odCwxZTUpfSksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5faXRlbXNDaGFuZ2VkKHtwYXRoOiJpdGVtcyJ9KSkpLHRoaXMuX3ZpcnR1YWxDb3VudD1NYXRoLm1pbih0aGlzLml0ZW1zLmxlbmd0aCx0KXx8MCwwPT09dGhpcy5fc2Nyb2xsVG9wJiYodGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9zY3JvbGxUb0luZGV4KE1hdGgubWluKHQtMSxlKSkpKSx0aGlzLl9pdGVyYXRlSXRlbXMoKHQ9Pntjb25zdCBpPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoaS5pbmRleD09PWUmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxpLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2NvbnN0IHQ9QXJyYXkuZnJvbSh0aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKTtpLmNoaWxkcmVuW3RdLmZvY3VzKCl9fSkpKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl91cGRhdGUoKSkpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9wb3NpdGlvbkl0ZW1zKCl7bGV0IHQ7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKSxpc05hTih0aGlzLl9waHlzaWNhbFRvcCkmJih0PSEwLHRoaXMuX3BoeXNpY2FsVG9wPTApO2xldCBlPXRoaXMuX3BoeXNpY2FsVG9wO3RoaXMuX2l0ZXJhdGVJdGVtcygodD0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbdF0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZX1weClgLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KSksdCYmdGhpcy5fc2Nyb2xsVG9JbmRleCgwKX1faW5jcmVhc2VQb29sSWZOZWVkZWQodCl7MD09PXQmJnRoaXMuX3Njcm9sbGluZ1RvSW5kZXh8fCF0aGlzLl9jYW5Qb3B1bGF0ZSgpfHwhdGhpcy5fZWZmZWN0aXZlU2l6ZXx8KHRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZD90aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJih0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbD1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCxfdCwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCk7bGV0IHQ9TWF0aC5jZWlsKCh0aGlzLl9vcHRQaHlzaWNhbFNpemUtdGhpcy5fcGh5c2ljYWxTaXplKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrdD50aGlzLl9lZmZlY3RpdmVTaXplJiYodD1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmdD4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQodCksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpKToodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkPSEwLHN1cGVyLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgyNSkpKX1fX3Jlb3JkZXJDaGlsZE5vZGVzKCl7Y29uc3QgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTt0LnJlZHVjZSgoKHQsZSxuLGkpPT57aWYoMD09PW58fGlbbi0xXS5pbmRleD09PWUuaW5kZXgtMSlyZXR1cm4gdH0pLCEwKXx8dC5zb3J0KCgodCxlKT0+dC5pbmRleC1lLmluZGV4KSkuZm9yRWFjaCgodD0+dGhpcy4kLml0ZW1zLmFwcGVuZENoaWxkKHQpKSl9X2NyZWF0ZVBvb2wodCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj10aGlzLl9jcmVhdGVTY3JvbGxlclJvd3ModCk7bi5mb3JFYWNoKCh0PT5lLmFwcGVuZENoaWxkKHQpKSksdGhpcy5fZ2V0Um93VGFyZ2V0KCkuYXBwZW5kQ2hpbGQoZSk7Y29uc3QgaT10aGlzLnF1ZXJ5U2VsZWN0b3IoIltzbG90XSIpO2lmKGkpe2NvbnN0IHQ9aS5nZXRBdHRyaWJ1dGUoInNsb3QiKTtpLnNldEF0dHJpYnV0ZSgic2xvdCIsImZvby1iYXIiKSxpLnNldEF0dHJpYnV0ZSgic2xvdCIsdCl9cmV0dXJuIExpKHRoaXMsKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSksbn1fYXNzaWduTW9kZWxzKHQpe3RoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9Pntjb25zdCBuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJoaWRkZW4iLGU+PXRoaXMuX2VmZmVjdGl2ZVNpemUsbiksdGhpcy5fdXBkYXRlU2Nyb2xsZXJJdGVtKG4sZSsodGhpcy5fdmlkeE9mZnNldHx8MCkpfSksdCl9X3Njcm9sbEhhbmRsZXIoKXtjb25zdCB0PXRoaXMuJC50YWJsZS5zY3JvbGxUb3AtdGhpcy5fc2Nyb2xsUG9zaXRpb247dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoc3VwZXIuX3Njcm9sbEhhbmRsZXIpO2NvbnN0IGU9dGhpcy5fdmlkeE9mZnNldDt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnRoaXMuX21heFNjcm9sbFRvcCkpJiZ0aGlzLl92aXJ0dWFsQ291bnQ8dGhpcy5fZWZmZWN0aXZlU2l6ZT90aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCk6dGhpcy5fdmlkeE9mZnNldD0wLHRoaXMuX3ZpZHhPZmZzZXQhPT1lJiZ0aGlzLl91cGRhdGUoKSx0aGlzLl9hZnRlclNjcm9sbCgpfV9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCl7aWYoTWF0aC5hYnModCk+MWU0KXtpZih0aGlzLl9ub1NjYWxlKXJldHVybiB2b2lkKHRoaXMuX25vU2NhbGU9ITEpO2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcC8odGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KTt0aGlzLl92aWR4T2Zmc2V0PU1hdGgucm91bmQodCp0aGlzLl9lZmZlY3RpdmVTaXplLXQqdGhpcy5fdmlydHVhbENvdW50KX1lbHNle2NvbnN0IHQ9dGhpcy5fdmlkeE9mZnNldHx8MCxlPTFlMyxuPTEwMDswPT09dGhpcy5fc2Nyb2xsVG9wPyh0aGlzLl92aWR4T2Zmc2V0PTAsdCE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgoMCkpOnRoaXMuZmlyc3RWaXNpYmxlSW5kZXg8ZSYmdGhpcy5fdmlkeE9mZnNldD4wJiYodGhpcy5fdmlkeE9mZnNldC09TWF0aC5taW4odGhpcy5fdmlkeE9mZnNldCxuKSx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCh0aGlzLmZpcnN0VmlzaWJsZUluZGV4Kyh0LXRoaXMuX3ZpZHhPZmZzZXQpKSx0aGlzLl9ub1NjYWxlPSEwKTtjb25zdCBpPXRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fdmlydHVhbENvdW50O3RoaXMuX3Njcm9sbFRvcD49dGhpcy5fbWF4U2Nyb2xsVG9wJiZ0aGlzLl9tYXhTY3JvbGxUb3A+MD8odGhpcy5fdmlkeE9mZnNldD1pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuX3ZpcnR1YWxDb3VudCkpOnRoaXMuZmlyc3RWaXNpYmxlSW5kZXg+dGhpcy5fdmlydHVhbENvdW50LWUmJnRoaXMuX3ZpZHhPZmZzZXQ8aSYmKHRoaXMuX3ZpZHhPZmZzZXQrPU1hdGgubWluKGktdGhpcy5fdmlkeE9mZnNldCxuKSx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCh0aGlzLmZpcnN0VmlzaWJsZUluZGV4LSh0aGlzLl92aWR4T2Zmc2V0LXQpKSx0aGlzLl9ub1NjYWxlPSEwKX19X2FjY2Vzc0lyb25MaXN0QVBJKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSExO2NvbnN0IGU9dC5hcHBseSh0aGlzKTtyZXR1cm4gdGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3M9VG4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3MsX3QsKCgpPT50aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2Vzc0FzeW5jRW5hYmxlZD0hMCkpLGV9X2RlYm91bmNlUmVuZGVyKHQsZSl7c3VwZXIuX2RlYm91bmNlUmVuZGVyKCgoKT0+dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkodCkpLGUpfV93YXJuUHJpdmF0ZUFQSUFjY2Vzcyh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2Vzc0FzeW5jRW5hYmxlZCYmY29uc29sZS53YXJuKGBBY2Nlc3NpbmcgcHJpdmF0ZSBBUEkgKCR7dH0pIWApfV9yZW5kZXIoKXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fcmVuZGVyKX1faXRlbXNDaGFuZ2VkKCl7fWdldCBfZmlyc3RWaXNpYmxlSW5kZXgoKXtyZXR1cm4gdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT5zdXBlci5maXJzdFZpc2libGVJbmRleCkpfWdldCBfbGFzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLmxhc3RWaXNpYmxlSW5kZXgpKX1fc2Nyb2xsVG9JbmRleCh0KXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnRoaXMuc2Nyb2xsVG9JbmRleCh0KSkpfWdldCBmaXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleH1zZXQgZmlyc3RWaXNpYmxlSW5kZXgodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3MoImZpcnN0VmlzaWJsZUluZGV4Iiksc3VwZXIuZmlyc3RWaXNpYmxlSW5kZXg9dH1nZXQgbGFzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXh9c2V0IGxhc3RWaXNpYmxlSW5kZXgodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3MoImxhc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5sYXN0VmlzaWJsZUluZGV4PXR9dXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3MoInVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcyIpLHN1cGVyLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9X3Jlc2l6ZUhhbmRsZXIoKXtzdXBlci5fcmVzaXplSGFuZGxlcigpLERpKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqL2NvbnN0IFAkdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9hMTF5VXBkYXRlR3JpZFNpemUoc2l6ZSwgX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19X2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PnQuc29tZSgodD0+dC5faGVhZGVyVGVtcGxhdGV8fHQuaGVhZGVyUmVuZGVyZXJ8fHQucGF0aHx8dC5oZWFkZXIpKSkpLmxlbmd0aH1fYTExeUdldEZvb3RlclJvd0NvdW50KHQpe3JldHVybiB0LmZpbHRlcigodD0+dC5zb21lKCh0PT50Ll9oZWFkZXJUZW1wbGF0ZXx8dC5oZWFkZXJSZW5kZXJlcikpKSkubGVuZ3RofV9hMTF5VXBkYXRlR3JpZFNpemUodCxlKXtpZih2b2lkIDA9PT10fHx2b2lkIDA9PT1lKXJldHVybjtjb25zdCBuPWVbZS5sZW5ndGgtMV07dGhpcy4kLnRhYmxlLnNldEF0dHJpYnV0ZSgiYXJpYS1yb3djb3VudCIsdCt0aGlzLl9hMTF5R2V0SGVhZGVyUm93Q291bnQoZSkrdGhpcy5fYTExeUdldEZvb3RlclJvd0NvdW50KGUpKSx0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLWNvbGNvdW50IixuJiZuLmxlbmd0aHx8MCksdGhpcy5fYTExeVVwZGF0ZUhlYWRlclJvd3MoKSx0aGlzLl9hMTF5VXBkYXRlRm9vdGVyUm93cygpfV9hMTF5VXBkYXRlSGVhZGVyUm93cygpe0FycmF5LmZyb20odGhpcy4kLmhlYWRlci5jaGlsZHJlbikuZm9yRWFjaCgoKHQsZSk9PnQuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixlKzEpKSl9X2ExMXlVcGRhdGVGb290ZXJSb3dzKCl7QXJyYXkuZnJvbSh0aGlzLiQuZm9vdGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgodCxlKT0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLHRoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSt0aGlzLnNpemUrZSsxKSkpfV9hMTF5VXBkYXRlUm93Um93aW5kZXgodCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3dpbmRleCIsZSt0aGlzLl9hMTF5R2V0SGVhZGVyUm93Q291bnQodGhpcy5fY29sdW1uVHJlZSkrMSl9X2ExMXlVcGRhdGVSb3dTZWxlY3RlZCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIixCb29sZWFuKGUpKSxBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIixCb29sZWFuKGUpKSkpfV9hMTF5VXBkYXRlUm93TGV2ZWwodCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1sZXZlbCIsZSsxKX1fYTExeVVwZGF0ZVJvd0RldGFpbHNPcGVuZWQodCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnsiYm9vbGVhbiI9PXR5cGVvZiBlP3Quc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixlKTp0Lmhhc0F0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpfSkpfV9hMTF5U2V0Um93RGV0YWlsc0NlbGwodCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0IT09ZSYmdC5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLGUuaWQpfSkpfV9hMTF5VXBkYXRlQ2VsbENvbHNwYW4odCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb2xzcGFuIixOdW1iZXIoZSkpfV9hMTF5VXBkYXRlU29ydGVycygpe0FycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiKSkuZm9yRWFjaCgodD0+e2xldCBlPXQucGFyZW50Tm9kZTtmb3IoO2UmJiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiIT09ZS5sb2NhbE5hbWU7KWU9ZS5wYXJlbnROb2RlO2UmJmUuYXNzaWduZWRTbG90JiZlLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlLnNldEF0dHJpYnV0ZSgiYXJpYS1zb3J0Iix7YXNjOiJhc2NlbmRpbmciLGRlc2M6ImRlc2NlbmRpbmcifVtTdHJpbmcodC5kaXJlY3Rpb24pXXx8Im5vbmUiKX0pKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLE4kdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2FjdGl2ZUl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTpudWxsfX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fb25DbGljay5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNlbGwtYWN0aXZhdGUiLHRoaXMuX2FjdGl2YXRlSXRlbS5iaW5kKHRoaXMpKX1fYWN0aXZhdGVJdGVtKHQpe2NvbnN0IGU9dC5kZXRhaWwubW9kZWwsbj1lP2UuaXRlbTpudWxsO24mJih0aGlzLmFjdGl2ZUl0ZW09dGhpcy5faXRlbXNFcXVhbCh0aGlzLmFjdGl2ZUl0ZW0sbik/bnVsbDpuKX1fb25DbGljayh0KXtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC50YWJsZSktM107aWYoIW58fG4uZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik+LTEpcmV0dXJuO2NvbnN0IGk9bi5fY29udGVudCxyPXRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50O2kuY29udGFpbnMocil8fHRoaXMuX2lzRm9jdXNhYmxlKHQudGFyZ2V0KXx8dGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1hY3RpdmF0ZSIse2RldGFpbDp7bW9kZWw6dGhpcy5fX2dldFJvd01vZGVsKG4ucGFyZW50RWxlbWVudCl9fSkpfV9pc0ZvY3VzYWJsZSh0KXtyZXR1cm4gSSR0KHQpfX0sSSR0PXQ9PntpZighdC5wYXJlbnROb2RlKXJldHVybiExO2NvbnN0IGU9LTEhPT1BcnJheS5mcm9tKHQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBvYmplY3QsIGlmcmFtZSwgbGFiZWwsIGFbaHJlZl0sIGFyZWFbaHJlZl0iKSkuZmlsdGVyKCh0PT4iY2VsbCBib2R5LWNlbGwiIT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKSkpLmluZGV4T2YodCk7cmV0dXJuIXQuZGlzYWJsZWQmJmV9LFIkdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOkFycmF5fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKiwgaXNBdHRhY2hlZCkiXX1faXRlbXNDaGFuZ2VkKHQsZSxuKXtpZihuKXtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gbnVsbD09dCYmKHRoaXMuc2l6ZT0wKSx2b2lkKHRoaXMuZGF0YVByb3ZpZGVyPT09dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXImJih0aGlzLmRhdGFQcm92aWRlcj12b2lkIDApKTt0aGlzLnNpemU9dC5sZW5ndGgsdGhpcy5kYXRhUHJvdmlkZXI9dGhpcy5kYXRhUHJvdmlkZXJ8fHRoaXMuX2FycmF5RGF0YVByb3ZpZGVyLHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfX1fYXJyYXlEYXRhUHJvdmlkZXIodCxlKXtsZXQgbj0oQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKT90aGlzLml0ZW1zOltdKS5zbGljZSgwKTt0aGlzLl9maWx0ZXJzJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX2ZpbHRlcnMsImZpbHRlcmluZyIsbikmJihuPXRoaXMuX2ZpbHRlcihuKSksdGhpcy5zaXplPW4ubGVuZ3RoLHQuc29ydE9yZGVycy5sZW5ndGgmJnRoaXMuX2NoZWNrUGF0aHModGhpcy5fc29ydGVycywic29ydGluZyIsbikmJihuPW4uc29ydCh0aGlzLl9tdWx0aVNvcnQuYmluZCh0aGlzKSkpO2NvbnN0IGk9dC5wYWdlKnQucGFnZVNpemU7ZShuLnNsaWNlKGksaSt0LnBhZ2VTaXplKSxuLmxlbmd0aCl9X2NoZWNrUGF0aHModCxlLG4pe2lmKCFuLmxlbmd0aClyZXR1cm4hMTtsZXQgaT0hMDtmb3IobGV0IHIgaW4gdCl7Y29uc3Qgbz10W3JdLnBhdGg7aWYoIW98fC0xPT09by5pbmRleE9mKCIuIikpY29udGludWU7Y29uc3QgYT1vLnJlcGxhY2UoL1wuW14uXSokLywiIik7dm9pZCAwPT09Zm8uZ2V0KGEsblswXSkmJihjb25zb2xlLndhcm4oYFBhdGggIiR7b30iIHVzZWQgZm9yICR7ZX0gZG9lcyBub3QgZXhpc3QgaW4gYWxsIG9mIHRoZSBpdGVtcywgJHtlfSBpcyBkaXNhYmxlZC5gKSxpPSExKX1yZXR1cm4gaX1fbXVsdGlTb3J0KHQsZSl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKChuPT4iYXNjIj09PW4uZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUoZm8uZ2V0KG4ucGF0aCx0KSxmby5nZXQobi5wYXRoLGUpKToiZGVzYyI9PT1uLmRpcmVjdGlvbj90aGlzLl9jb21wYXJlKGZvLmdldChuLnBhdGgsZSksZm8uZ2V0KG4ucGF0aCx0KSk6MCkpLnJlZHVjZSgoKHQsZSk9PnR8fGUpLDApfV9ub3JtYWxpemVFbXB0eVZhbHVlKHQpe3JldHVyblt2b2lkIDAsbnVsbF0uaW5kZXhPZih0KT49MD8iIjppc05hTih0KT90LnRvU3RyaW5nKCk6dH1fY29tcGFyZSh0LGUpe3JldHVybih0PXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUodCkpPChlPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZSkpPy0xOnQ+ZT8xOjB9X2ZpbHRlcih0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PjA9PT10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+e2NvbnN0IG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShmby5nZXQoZS5wYXRoLHQpKSxpPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpKX0pKS5sZW5ndGgpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLE8kdD10PT5jbGFzcyBleHRlbmRzKHBpKHQpKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCk7Y29uc3QgdD10aGlzLiQuc2Nyb2xsZXI7aWkodCwidHJhY2siLHRoaXMuX29uSGVhZGVyVHJhY2suYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLChlPT50Lmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikmJmUucHJldmVudERlZmF1bHQoKSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCh0PT4icmVzaXplLWhhbmRsZSI9PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKHQ9PiJyZXNpemUtaGFuZGxlIj09PXQudGFyZ2V0LmdldEF0dHJpYnV0ZSgicGFydCIpJiZ0LnByZXZlbnREZWZhdWx0KCkpKX1fb25IZWFkZXJUcmFjayh0KXtjb25zdCBlPXQudGFyZ2V0O2lmKCJyZXNpemUtaGFuZGxlIj09PWUuZ2V0QXR0cmlidXRlKCJwYXJ0Iikpe2xldCBuPWUucGFyZW50RWxlbWVudC5fY29sdW1uO2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImNvbHVtbi1yZXNpemluZyIsITAsdGhpcy4kLnNjcm9sbGVyKTsidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PW4ubG9jYWxOYW1lOyluPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4uX2NoaWxkQ29sdW1ucywwKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9vcmRlci1lLl9vcmRlcn0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LmhpZGRlbn0pKS5wb3AoKTtjb25zdCBpPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49InJvdyJdOmxhc3QtY2hpbGQgW3BhcnR+PSJjZWxsIl0nKSkscj1pLmZpbHRlcigodD0+dC5fY29sdW1uPT09bikpWzBdO2lmKHIub2Zmc2V0V2lkdGgpe2NvbnN0IGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUociksaT0xMCtwYXJzZUludChlLnBhZGRpbmdMZWZ0KStwYXJzZUludChlLnBhZGRpbmdSaWdodCkrcGFyc2VJbnQoZS5ib3JkZXJMZWZ0V2lkdGgpK3BhcnNlSW50KGUuYm9yZGVyUmlnaHRXaWR0aCkrcGFyc2VJbnQoZS5tYXJnaW5MZWZ0KStwYXJzZUludChlLm1hcmdpblJpZ2h0KSxvPXIub2Zmc2V0V2lkdGgrKHRoaXMuX19pc1JUTD9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdC5kZXRhaWwueDp0LmRldGFpbC54LXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpO24ud2lkdGg9TWF0aC5tYXgoaSxvKSsicHgiLG4uZmxleEdyb3c9MH1pLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NvbHVtbi5fb3JkZXItZS5fY29sdW1uLl9vcmRlcn0pKS5mb3JFYWNoKChmdW5jdGlvbih0LGUsbil7ZTxuLmluZGV4T2YocikmJih0Ll9jb2x1bW4ud2lkdGg9dC5vZmZzZXRXaWR0aCsicHgiLHQuX2NvbHVtbi5mbGV4R3Jvdz0wKX0pKSwiZW5kIj09PXQuZGV0YWlsLnN0YXRlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29sdW1uLXJlc2l6ZSIse2RldGFpbDp7cmVzaXplZENvbHVtbjpufX0pKSksdGhpcy5fcmVzaXplSGFuZGxlcigpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLHokdD1jbGFzcyB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPWUsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIoKHQ9PnRoaXMuaXRlbUNhY2hlc1t0XS5pc0xvYWRpbmcoKSkpWzBdKX1nZXRJdGVtRm9ySW5kZXgodCl7Y29uc3R7Y2FjaGU6ZSxzY2FsZWRJbmRleDpufT10aGlzLmdldENhY2hlQW5kSW5kZXgodCk7cmV0dXJuIGUuaXRlbXNbbl19dXBkYXRlU2l6ZSgpe3RoaXMuZWZmZWN0aXZlU2l6ZT0hdGhpcy5wYXJlbnRJdGVtfHx0aGlzLmdyaWQuX2lzRXhwYW5kZWQodGhpcy5wYXJlbnRJdGVtKT90aGlzLnNpemUrT2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj10aGlzLml0ZW1DYWNoZXNbZV07cmV0dXJuIG4udXBkYXRlU2l6ZSgpLHQrbi5lZmZlY3RpdmVTaXplfSksMCk6MH1lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KGUpe2lmKCF0aGlzLml0ZW1DYWNoZXNbZV0pe2NvbnN0IG49bmV3IHQodGhpcy5ncmlkLHRoaXMsdGhpcy5pdGVtc1tlXSk7dGhpcy5pdGVtQ2FjaGVzW2VdPW4sdGhpcy5ncmlkLl9sb2FkUGFnZSgwLG4pfX1nZXRDYWNoZUFuZEluZGV4KHQpe2xldCBlPXQ7Y29uc3Qgbj1PYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBpPU51bWJlcihuW3RdKSxyPXRoaXMuaXRlbUNhY2hlc1tpXTtpZihlPD1pKXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OmV9O2lmKGU8PWkrci5lZmZlY3RpdmVTaXplKXJldHVybiByLmdldENhY2hlQW5kSW5kZXgoZS1pLTEpO2UtPXIuZWZmZWN0aXZlU2l6ZX1yZXR1cm57Y2FjaGU6dGhpcyxzY2FsZWRJbmRleDplfX19LEQkdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3BhZ2VTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo1MCxvYnNlcnZlcjoiX3BhZ2VTaXplQ2hhbmdlZCJ9LGRhdGFQcm92aWRlcjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGF0YVByb3ZpZGVyQ2hhbmdlZCJ9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB6JHQodGhpcyl9fSxpdGVtSWRQYXRoOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxleHBhbmRlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zaXplQ2hhbmdlZChzaXplKSIsIl9pdGVtSWRQYXRoQ2hhbmdlZChpdGVtSWRQYXRoKSIsIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiopIl19X3NpemVDaGFuZ2VkKHQpe2NvbnN0IGU9dC10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPWUsdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9ZSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0odCxlKXtpZih0Pj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtlLmluZGV4PXQ7Y29uc3R7Y2FjaGU6bixzY2FsZWRJbmRleDppfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLHI9bi5pdGVtc1tpXTtyPyh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCExLGUpLHRoaXMuX3VwZGF0ZUl0ZW0oZSxyKSx0aGlzLl9pc0V4cGFuZGVkKHIpJiZuLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgoaSkpOih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCEwLGUpLHRoaXMuX2xvYWRQYWdlKHRoaXMuX2dldFBhZ2VGb3JJbmRleChpKSxuKSl9X2V4cGFuZGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXt2b2lkIDAhPT10Lml0ZW0mJihlP3RoaXMuZXhwYW5kSXRlbSh0Lml0ZW0pOnRoaXMuY29sbGFwc2VJdGVtKHQuaXRlbSkpfWdldEl0ZW1JZCh0KXtyZXR1cm4gdGhpcy5pdGVtSWRQYXRoP3RoaXMuZ2V0KHRoaXMuaXRlbUlkUGF0aCx0KTp0fV9pc0V4cGFuZGVkKHQpe3JldHVybiB0aGlzLl9fZXhwYW5kZWRLZXlzLmhhcyh0aGlzLmdldEl0ZW1JZCh0KSl9X2V4cGFuZGVkSXRlbXNDaGFuZ2VkKCl7dGhpcy5fX2NhY2hlRXhwYW5kZWRLZXlzKCksdGhpcy5fY2FjaGUudXBkYXRlU2l6ZSgpLHRoaXMuX2VmZmVjdGl2ZVNpemU9dGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSx0aGlzLl9hc3NpZ25Nb2RlbHMoKX1faXRlbUlkUGF0aENoYW5nZWQoKXt0aGlzLl9fY2FjaGVFeHBhbmRlZEtleXMoKX1fX2NhY2hlRXhwYW5kZWRLZXlzKCl7dGhpcy5leHBhbmRlZEl0ZW1zJiYodGhpcy5fX2V4cGFuZGVkS2V5cz1uZXcgU2V0LHRoaXMuZXhwYW5kZWRJdGVtcy5mb3JFYWNoKCh0PT57dGhpcy5fX2V4cGFuZGVkS2V5cy5hZGQodGhpcy5nZXRJdGVtSWQodCkpfSkpKX1leHBhbmRJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCl8fCh0aGlzLmV4cGFuZGVkSXRlbXM9Wy4uLnRoaXMuZXhwYW5kZWRJdGVtcyx0XSl9Y29sbGFwc2VJdGVtKHQpe3RoaXMuX2lzRXhwYW5kZWQodCkmJih0aGlzLmV4cGFuZGVkSXRlbXM9dGhpcy5leHBhbmRlZEl0ZW1zLmZpbHRlcigoZT0+IXRoaXMuX2l0ZW1zRXF1YWwoZSx0KSkpKX1fZ2V0SW5kZXhMZXZlbCh0KXtsZXR7Y2FjaGU6ZX09dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleCh0KSxuPTA7Zm9yKDtlLnBhcmVudENhY2hlOyllPWUucGFyZW50Q2FjaGUsbisrO3JldHVybiBufV9jYW5Qb3B1bGF0ZSgpe3JldHVybiBCb29sZWFuKHRoaXMuX2hhc0RhdGEmJnRoaXMuX2NvbHVtblRyZWUpfV9sb2FkUGFnZSh0LGUpe2lmKCFlLnBlbmRpbmdSZXF1ZXN0c1t0XSYmdGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuX3NldExvYWRpbmcoITApLGUucGVuZGluZ1JlcXVlc3RzW3RdPSEwO2NvbnN0IG49e3BhZ2U6dCxwYWdlU2l6ZTp0aGlzLnBhZ2VTaXplLHNvcnRPcmRlcnM6dGhpcy5fbWFwU29ydGVycygpLGZpbHRlcnM6dGhpcy5fbWFwRmlsdGVycygpLHBhcmVudEl0ZW06ZS5wYXJlbnRJdGVtfTt0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCYmdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wuZmx1c2goKSx0aGlzLmRhdGFQcm92aWRlcihuLCgoaSxyKT0+e3ZvaWQgMCE9PXI/ZS5zaXplPXI6bi5wYXJlbnRJdGVtJiYoZS5zaXplPWkubGVuZ3RoKTtjb25zdCBvPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5tYXAoKHQ9PnQuX2l0ZW0pKTtpLmZvckVhY2goKChuLGkpPT57Y29uc3Qgcj10KnRoaXMucGFnZVNpemUraTtlLml0ZW1zW3JdPW4sdGhpcy5faXNFeHBhbmRlZChuKSYmby5pbmRleE9mKG4pPi0xJiZlLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgocil9KSksdGhpcy5faGFzRGF0YT0hMCxkZWxldGUgZS5wZW5kaW5nUmVxdWVzdHNbdF0sdGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhPVRuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YSxndC5hZnRlcigwKSwoKCk9Pnt0aGlzLl9zZXRMb2FkaW5nKCExKSx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5fZWZmZWN0aXZlU2l6ZT10aGlzLl9jYWNoZS5lZmZlY3RpdmVTaXplLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9Pnt0aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgodC5pbmRleCkmJnRoaXMuX2dldEl0ZW0odC5pbmRleCx0KX0pKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKX0pKSx0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKXx8dGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhLmZsdXNoKCksdGhpcy5fX2l0ZW1zUmVjZWl2ZWQoKX0pKX19X2dldFBhZ2VGb3JJbmRleCh0KXtyZXR1cm4gTWF0aC5mbG9vcih0L3RoaXMucGFnZVNpemUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9jYWNoZT1uZXcgeiR0KHRoaXMpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dC5faW5zdGFuY2UmJnQuX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoIml0ZW0iLHt9LCExKX0pKX0pKSx0aGlzLl9jYWNoZS5zaXplPXRoaXMuc2l6ZXx8MCx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5faGFzRGF0YT0hMSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSx0aGlzLl9lZmZlY3RpdmVTaXplJiZ0aGlzLl9pbml0aWFsUG9vbENyZWF0ZWR8fHRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9wYWdlU2l6ZUNoYW5nZWQodCxlKXt2b2lkIDAhPT1lJiZ0IT09ZSYmdGhpcy5jbGVhckNhY2hlKCl9X2NoZWNrU2l6ZSgpe3ZvaWQgMD09PXRoaXMuc2l6ZSYmMD09PXRoaXMuX2VmZmVjdGl2ZVNpemUmJmNvbnNvbGUud2FybigiVGhlIDx2YWFkaW4tZ3JpZD4gbmVlZHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiBvcmRlciB0byBkaXNwbGF5IHJvd3MuIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIHRoZSBgc2l6ZWAgcHJvcGVydHksIG9yIHByb3ZpZGUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBgZGF0YVByb3ZpZGVyYOKAmXMgYGNhbGxiYWNrYCBjYWxsLiIpfV9kYXRhUHJvdmlkZXJDaGFuZ2VkKHQsZSl7dm9pZCAwIT09ZSYmdGhpcy5jbGVhckNhY2hlKCksdCYmdGhpcy5pdGVtcyYmdGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMuX3Njcm9sbFRvSW5kZXgodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpLHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZT1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDaGVja1NpemUsZ3QuYWZ0ZXIoMmUzKSx0aGlzLl9jaGVja1NpemUuYmluZCh0aGlzKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfV9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKXt0aGlzLl9oYXNEYXRhfHx0aGlzLl9sb2FkUGFnZSgwLHRoaXMuX2NhY2hlKX1faXRlbXNFcXVhbCh0LGUpe3JldHVybiB0aGlzLmdldEl0ZW1JZCh0KT09PXRoaXMuZ2V0SXRlbUlkKGUpfV9nZXRJdGVtSW5kZXhJbkFycmF5KHQsZSl7bGV0IG49LTE7cmV0dXJuIGUuZm9yRWFjaCgoKGUsaSk9Pnt0aGlzLl9pdGVtc0VxdWFsKGUsdCkmJihuPWkpfSkpLG59c2Nyb2xsVG9JbmRleCh0KXtzdXBlci5zY3JvbGxUb0luZGV4KHQpLGlzTmFOKHQpfHwhdGhpcy5fY2FjaGUuaXNMb2FkaW5nKCkmJnRoaXMuY2xpZW50SGVpZ2h0fHwodGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4PXQpfV9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKXtpZih0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgmJnRoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4O2RlbGV0ZSB0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXgsdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCksdGhpcy5zY3JvbGxUb0luZGV4KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEIkdD10PT5jbGFzcyBleHRlbmRzIHR7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2FkZE5vZGVPYnNlcnZlcigpfV9oYXNDb2x1bW5Hcm91cHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10W2VdLmxvY2FsTmFtZSlyZXR1cm4hMDtyZXR1cm4hMX1fZ2V0Q2hpbGRDb2x1bW5zKHQpe3JldHVybiB6aS5nZXRGbGF0dGVuZWROb2Rlcyh0KS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KX1fZmxhdHRlbkNvbHVtbkdyb3Vwcyh0KXtyZXR1cm4gdC5tYXAoKHQ9PiJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dC5sb2NhbE5hbWU/dGhpcy5fZ2V0Q2hpbGRDb2x1bW5zKHQpOlt0XSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSxbXSl9X2dldENvbHVtblRyZWUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT16aS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KTt0LnB1c2goZSksdGhpcy5faGFzQ29sdW1uR3JvdXBzKGUpOyllPXRoaXMuX2ZsYXR0ZW5Db2x1bW5Hcm91cHMoZSk7cmV0dXJuIHR9X3VwZGF0ZUNvbHVtblRyZWUoKXtjb25zdCB0PXRoaXMuX2dldENvbHVtblRyZWUoKTt0aGlzLl9hcnJheUVxdWFscyh0LHRoaXMuX2NvbHVtblRyZWUpfHwodGhpcy5fY29sdW1uVHJlZT10KX1fYWRkTm9kZU9ic2VydmVyKCl7dGhpcy5fb2JzZXJ2ZXI9bmV3IHppKHRoaXMsKHQ9Pntjb25zdCBlPXQuYWRkZWROb2Rlcy5maWx0ZXIoKHQ9PiJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZSYmdC5jbGFzc0xpc3QuY29udGFpbnMoInJvdy1kZXRhaWxzIikpKVswXTtlJiZ0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUhPT1lJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlPWUpO2NvbnN0IG49dD0+dC5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MDtpZihuKHQuYWRkZWROb2Rlcyl8fG4odC5yZW1vdmVkTm9kZXMpKXtjb25zdCBlPXQucmVtb3ZlZE5vZGVzLmZsYXRNYXAoKHQ9PnQuX2FsbENlbGxzKSksbj10PT5lLmZpbHRlcigoZT0+ZS5fY29udGVudC5jb250YWlucyh0KSkpLmxlbmd0aDt0aGlzLl9fcmVtb3ZlU29ydGVycyh0aGlzLl9zb3J0ZXJzLmZpbHRlcihuKSksdGhpcy5fX3JlbW92ZUZpbHRlcnModGhpcy5fZmlsdGVycy5maWx0ZXIobikpLHRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKX10aGlzLl9kZWJvdW5jZXJDaGVja0ltcG9ydHM9VG4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzLGd0LmFmdGVyKDJlMyksdGhpcy5fY2hlY2tJbXBvcnRzLmJpbmQodGhpcykpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfSkpfV9hcnJheUVxdWFscyh0LGUpe2lmKCF0fHwhZXx8dC5sZW5ndGghPWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25daW5zdGFuY2VvZiBBcnJheSYmZVtuXWluc3RhbmNlb2YgQXJyYXkpe2lmKCF0aGlzLl9hcnJheUVxdWFscyh0W25dLGVbbl0pKXJldHVybiExfWVsc2UgaWYodFtuXSE9ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1fY2hlY2tJbXBvcnRzKCl7WyJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiLCJ2YWFkaW4tZ3JpZC1maWx0ZXIiLCJ2YWFkaW4tZ3JpZC1maWx0ZXItY29sdW1uIiwidmFhZGluLWdyaWQtdHJlZS10b2dnbGUiLCJ2YWFkaW4tZ3JpZC1zZWxlY3Rpb24tY29sdW1uIiwidmFhZGluLWdyaWQtc29ydC1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiXS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLnF1ZXJ5U2VsZWN0b3IodCk7IWV8fGUgaW5zdGFuY2VvZiB5ZXx8Y29uc29sZS53YXJuKGBNYWtlIHN1cmUgeW91IGhhdmUgaW1wb3J0ZWQgdGhlIHJlcXVpcmVkIG1vZHVsZSBmb3IgPCR7dH0+IGVsZW1lbnQuYCl9KSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpe0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIikpLmZvckVhY2goKHQ9PnRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KSkpfV91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl7QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKScpKS5zb3J0KCgodCxlKT0+dC5fY29sdW1uLl9vcmRlci1lLl9jb2x1bW4uX29yZGVyKSkuZm9yRWFjaCgoKHQsZSxuKT0+e3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QtY29sdW1uIiwwPT09ZSx0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtY29sdW1uIixlPT09bi5sZW5ndGgtMSx0KX0pKX1faXNDb2x1bW5FbGVtZW50KHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJi9cYmNvbHVtblxiLy50ZXN0KHQubG9jYWxOYW1lKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEgkdD10PT5jbGFzcyBleHRlbmRzIHR7Z2V0RXZlbnRDb250ZXh0KHQpe2NvbnN0IGU9e30sbj10LmNvbXBvc2VkUGF0aCgpLGk9bltuLmluZGV4T2YodGhpcy4kLnRhYmxlKS0zXTtyZXR1cm4gaT8oZS5zZWN0aW9uPVsiYm9keSIsImhlYWRlciIsImZvb3RlciIsImRldGFpbHMiXS5maWx0ZXIoKHQ9PmkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZih0KT4tMSkpWzBdLGkuX2NvbHVtbiYmKGUuY29sdW1uPWkuX2NvbHVtbiksImJvZHkiIT09ZS5zZWN0aW9uJiYiZGV0YWlscyIhPT1lLnNlY3Rpb258fE9iamVjdC5hc3NpZ24oZSx0aGlzLl9fZ2V0Um93TW9kZWwoaS5wYXJlbnRFbGVtZW50KSksZSk6ZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLEYkdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19maWx0ZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyLWNoYW5nZWQiLHRoaXMuX2ZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSl9X2ZpbHRlckNoYW5nZWQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fYWRkRmlsdGVyKHQudGFyZ2V0KSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCl9X19yZW1vdmVGaWx0ZXJzKHQpezAhPXQubGVuZ3RoJiYodGhpcy5fZmlsdGVycz10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+dC5pbmRleE9mKGUpPDApKSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCkpfV9fYWRkRmlsdGVyKHQpey0xPT09dGhpcy5fZmlsdGVycy5pbmRleE9mKHQpJiZ0aGlzLl9maWx0ZXJzLnB1c2godCl9X19hcHBseUZpbHRlcnMoKXt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fbWFwRmlsdGVycygpe3JldHVybiB0aGlzLl9maWx0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCx2YWx1ZTp0LnZhbHVlfSkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovO2NsYXNzIFYkdCBleHRlbmRzIHlle3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtdGVtcGxhdGl6ZXIifXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkYXRhSG9zdDpPYmplY3QsdGVtcGxhdGU6T2JqZWN0LF90ZW1wbGF0ZUluc3RhbmNlczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3BhcmVudFBhdGhWYWx1ZXM6e3ZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fSxfZ3JpZDpPYmplY3R9fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkKF90ZW1wbGF0ZUluc3RhbmNlcy4qLCBfcGFyZW50UGF0aFZhbHVlcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9pbnN0YW5jZVByb3BzPXtkZXRhaWxzT3BlbmVkOiEwLGluZGV4OiEwLGl0ZW06ITAsc2VsZWN0ZWQ6ITAsZXhwYW5kZWQ6ITAsbGV2ZWw6ITB9fWNyZWF0ZUluc3RhbmNlKCl7dGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKTtjb25zdCB0PW5ldyB0aGlzLl9UZW1wbGF0ZUNsYXNzKHt9KTtyZXR1cm4gdGhpcy5hZGRJbnN0YW5jZSh0KSx0fWFkZEluc3RhbmNlKHQpey0xPT09dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KSYmKHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLnB1c2godCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+dGhpcy5ub3RpZnlQYXRoKCJfdGVtcGxhdGVJbnN0YW5jZXMuKiIsdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMpKSkpfXJlbW92ZUluc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KTt0aGlzLnNwbGljZSgiX3RlbXBsYXRlSW5zdGFuY2VzIixlLDEpfV9lbnN1cmVUZW1wbGF0aXplZCgpe3RoaXMuX1RlbXBsYXRlQ2xhc3N8fCh0aGlzLl9UZW1wbGF0ZUNsYXNzPSRyKHRoaXMudGVtcGxhdGUsdGhpcyx7aW5zdGFuY2VQcm9wczp0aGlzLl9pbnN0YW5jZVByb3BzLHBhcmVudE1vZGVsOiEwLGZvcndhcmRIb3N0UHJvcDpmdW5jdGlvbih0LGUpe3RoaXMuX2ZvcndhcmRQYXJlbnRQcm9wKHQsZSksdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMmJnRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goKG49Pm4ubm90aWZ5UGF0aCh0LGUpKSl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbih0LGUsbil7aWYoImluZGV4Ij09PWV8fCJpdGVtIj09PWUpcmV0dXJuO2NvbnN0IGk9YF9fJHtlfV9fYDtpZih0W2ldPT09bilyZXR1cm47dFtpXT1uO2NvbnN0IHI9QXJyYXkuZnJvbSh0aGlzLl9ncmlkLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+dGhpcy5fZ3JpZC5faXRlbXNFcXVhbChlLl9pdGVtLHQuaXRlbSkpKVswXTtyJiZBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0Ll9pbnN0YW5jZSYmKHQuX2luc3RhbmNlW2ldPW4sdC5faW5zdGFuY2Uubm90aWZ5UGF0aChlLG4pKX0pKTtjb25zdCBvPSJpdGVtLiI7aWYoQXJyYXkuaXNBcnJheSh0aGlzLl9ncmlkLml0ZW1zKSYmMD09PWUuaW5kZXhPZihvKSl7Y29uc3QgaT10aGlzLl9ncmlkLml0ZW1zLmluZGV4T2YodC5pdGVtKSxyPWUuc2xpY2Uoby5sZW5ndGgpO3RoaXMuX2dyaWQubm90aWZ5UGF0aChgaXRlbXMuJHtpfS4ke3J9YCxuKX1jb25zdCBhPWBfJHtlfUluc3RhbmNlQ2hhbmdlZENhbGxiYWNrYDt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkW2FdJiZ0aGlzLl9ncmlkW2FdKHQsbil9fSkpfV9mb3J3YXJkUGFyZW50UHJvcCh0LGUpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF09ZSx0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKChuPT5uLm5vdGlmeVBhdGgodCxlKSkpfV90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQodCl7bGV0IGUsbjtpZigiX3RlbXBsYXRlSW5zdGFuY2VzIj09PXQucGF0aCllPTAsbj10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5sZW5ndGg7ZWxzZXtpZigiX3RlbXBsYXRlSW5zdGFuY2VzLnNwbGljZXMiIT09dC5wYXRoKXJldHVybjtlPXQudmFsdWUuaW5kZXgsbj10LnZhbHVlLmFkZGVkQ291bnR9T2JqZWN0LmtleXModGhpcy5fcGFyZW50UGF0aFZhbHVlc3x8e30pLmZvckVhY2goKHQ9Pntmb3IobGV0IGk9ZTtpPGUrbjtpKyspdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXNbaV0uc2V0KHQsdGhpcy5fcGFyZW50UGF0aFZhbHVlc1t0XSl9KSl9fWN1c3RvbUVsZW1lbnRzLmRlZmluZShWJHQuaXMsViR0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgVSR0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHQsZSl7aWYodCYmZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZih0fHxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7Y29uc3QgZT1uZXcgViR0O2UuX2dyaWQ9dGhpcyxlLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3QsZS50ZW1wbGF0ZT10LHQudGVtcGxhdGl6ZXI9ZX10aGlzLl9jb2x1bW5UcmVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QucXVlcnlTZWxlY3RvcigiW3BhcnR+PWRldGFpbHMtY2VsbF0iKXx8KHRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsITEpKSxkZWxldGUgdC5xdWVyeVNlbGVjdG9yKCJbcGFydH49ZGV0YWlscy1jZWxsXSIpLl9pbnN0YW5jZX0pKSx0aGlzLmRldGFpbHNPcGVuZWRJdGVtcy5sZW5ndGgmJihBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCh0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCx0aGlzKSx0aGlzLl91cGRhdGUoKSl9fV9kZXRhaWxzT3BlbmVkSXRlbXNDaGFuZ2VkKHQpeyJkZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoIiE9PXQucGF0aCYmdC52YWx1ZSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCh0LHQuX2l0ZW0pLHRoaXMuX2ExMXlVcGRhdGVSb3dEZXRhaWxzT3BlbmVkKHQsdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQuX2l0ZW0pKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRldGFpbHMtb3BlbmVkIix0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSksdCl9KSl9X2NvbmZpZ3VyZURldGFpbHNDZWxsKHQpe3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBkZXRhaWxzLWNlbGwiKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsITAsdCl9X3RvZ2dsZURldGFpbHNDZWxsKHQsZSl7Y29uc3Qgbj10LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKTtpZighbilyZXR1cm47Y29uc3QgaT0hdGhpcy5faXNEZXRhaWxzT3BlbmVkKGUpLHI9ISFuLmhpZGRlbiE9PWk7KG4uX2luc3RhbmNlfHxuLl9yZW5kZXJlcikmJm4uaGlkZGVuPT09aXx8KG4uaGlkZGVuPWksaT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIpOih0aGlzLnJvd0RldGFpbHNSZW5kZXJlcj8obi5fcmVuZGVyZXI9dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIsbi5fcmVuZGVyZXIuY2FsbCh0aGlzLG4uX2NvbnRlbnQsdGhpcyx7aW5kZXg6dC5pbmRleCxpdGVtOmV9KSk6dGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlJiYhbi5faW5zdGFuY2UmJihuLl9pbnN0YW5jZT10aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSxuLl9jb250ZW50LmlubmVySFRNTD0iIixuLl9jb250ZW50LmFwcGVuZENoaWxkKG4uX2luc3RhbmNlLnJvb3QpLHRoaXMuX3VwZGF0ZUl0ZW0odCxlKSksRGkoKSx0LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7bi5vZmZzZXRIZWlnaHR9cHhgKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSkpKSxyJiYodGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSl9X3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl06bm90KFtoaWRkZW5dKScpKS5mb3JFYWNoKCh0PT57dC5wYXJlbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJwYWRkaW5nLWJvdHRvbSIsYCR7dC5vZmZzZXRIZWlnaHR9cHhgKX0pKX1faXNEZXRhaWxzT3BlbmVkKHQpe3JldHVybiB0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyYmLTEhPT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMpfW9wZW5JdGVtRGV0YWlscyh0KXt0aGlzLl9pc0RldGFpbHNPcGVuZWQodCl8fCh0aGlzLmRldGFpbHNPcGVuZWRJdGVtcz1bLi4udGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMsdF0pfWNsb3NlSXRlbURldGFpbHModCl7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpJiYodGhpcy5kZXRhaWxzT3BlbmVkSXRlbXM9dGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMuZmlsdGVyKChlPT4hdGhpcy5faXRlbXNFcXVhbChlLHQpKSkpfV9kZXRhaWxzT3BlbmVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtlP3RoaXMub3Blbkl0ZW1EZXRhaWxzKHQuaXRlbSk6dGhpcy5jbG9zZUl0ZW1EZXRhaWxzKHQuaXRlbSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxqJHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntfZnJvemVuQ2VsbHM6e3R5cGU6QXJyYXksdmFsdWU6KCk9PltdfSxfcm93V2l0aEZvY3VzZWRFbGVtZW50OkVsZW1lbnQsX2RlbHRhWUFjYzp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sX3VzZVN0aWNreTp7dHlwZTpCb29sZWFuLHZhbHVlOndpbmRvdy5DU1MmJndpbmRvdy5DU1Muc3VwcG9ydHMmJih3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsInN0aWNreSIpfHx3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsIi13ZWJraXQtc3RpY2t5IikpfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zY3JvbGxWaWV3cG9ydEhlaWdodFVwZGF0ZWQoX3ZpZXdwb3J0SGVpZ2h0KSJdfXNldCBfc2Nyb2xsVG9wKHQpe3RoaXMuJC50YWJsZS5zY3JvbGxUb3A9dH1nZXQgX3Njcm9sbFRvcCgpe3JldHVybiB0aGlzLiQudGFibGUuc2Nyb2xsVG9wfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9zY3JvbGxMaW5lSGVpZ2h0PXRoaXMuX2dldFNjcm9sbExpbmVIZWlnaHQoKX1fZ2V0U2Nyb2xsTGluZUhlaWdodCgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5zdHlsZS5mb250U2l6ZT0iaW5pdGlhbCIsdC5zdHlsZS5kaXNwbGF5PSJub25lIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO2NvbnN0IGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZm9udFNpemU7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksZT93aW5kb3cucGFyc2VJbnQoZSk6dm9pZCAwfV9zY3JvbGxWaWV3cG9ydEhlaWdodFVwZGF0ZWQodCl7dGhpcy5fc2Nyb2xsUGFnZUhlaWdodD10LXRoaXMuJC5oZWFkZXIuY2xpZW50SGVpZ2h0LXRoaXMuJC5mb290ZXIuY2xpZW50SGVpZ2h0LXRoaXMuX3Njcm9sbExpbmVIZWlnaHR9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuJC5vdXRlcnNjcm9sbGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuc2Nyb2xsVGFyZ2V0PXRoaXMuJC50YWJsZSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIix0aGlzLl9vbldoZWVsKSx0aGlzLiQuaXRlbXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsKHQ9Pntjb25zdCBlPXQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLiQuaXRlbXMpO3RoaXMuX3Jvd1dpdGhGb2N1c2VkRWxlbWVudD10LmNvbXBvc2VkUGF0aCgpW2UtMV19KSksdGhpcy4kLml0ZW1zLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0IiwoKCk9PnRoaXMuX3Jvd1dpdGhGb2N1c2VkRWxlbWVudD12b2lkIDApKSx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCgoKT0+dGhpcy5fX21vdXNlRG93bj0hMCkpLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCgoKT0+e3RoaXMuX19tb3VzZURvd249ITEsdGhpcy5fX3BlbmRpbmdSZW9yZGVyJiYodGhpcy5fX3BlbmRpbmdSZW9yZGVyPSExLHNldFRpbWVvdXQoKCgpPT50aGlzLl9yZW9yZGVyUm93cygpKSw1MDApKX0pKX1zY3JvbGxUb0luZGV4KHQpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIuc2Nyb2xsVG9JbmRleCh0KSkpfV9vbldoZWVsKHQpe2lmKHQuY3RybEtleXx8dGhpcy5faGFzU2Nyb2xsZWRBbmNlc3Rvcih0LnRhcmdldCx0LmRlbHRhWCx0LmRlbHRhWSkpcmV0dXJuO2NvbnN0IGU9dGhpcy4kLnRhYmxlO2xldCBuPXQuZGVsdGFZO2lmKHQuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfTElORT9uKj10aGlzLl9zY3JvbGxMaW5lSGVpZ2h0OnQuZGVsdGFNb2RlPT09V2hlZWxFdmVudC5ET01fREVMVEFfUEFHRSYmKG4qPXRoaXMuX3Njcm9sbFBhZ2VIZWlnaHQpLHRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWUpcmV0dXJuIHRoaXMuX2RlbHRhWUFjYys9bix2b2lkIHQucHJldmVudERlZmF1bHQoKTtuKz10aGlzLl9kZWx0YVlBY2MsdGhpcy5fZGVsdGFZQWNjPTAsdGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMCx0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lPVRuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcldoZWVsQW5pbWF0aW9uRnJhbWUsX3QsKCgpPT50aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lPSExKSk7Y29uc3QgaT1NYXRoLmFicyh0LmRlbHRhWCkrTWF0aC5hYnMobik7dGhpcy5fY2FuU2Nyb2xsKGUsdC5kZWx0YVgsbik/KHQucHJldmVudERlZmF1bHQoKSxlLnNjcm9sbFRvcCs9bixlLnNjcm9sbExlZnQrPXQuZGVsdGFYLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSx0aGlzLl9oYXNSZXNpZHVhbE1vbWVudHVtPSEwLHRoaXMuX2lnbm9yZU5ld1doZWVsPSEwLHRoaXMuX2RlYm91bmNlcklnbm9yZU5ld1doZWVsPVRuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcklnbm9yZU5ld1doZWVsLGd0LmFmdGVyKDUwMCksKCgpPT50aGlzLl9pZ25vcmVOZXdXaGVlbD0hMSkpKTp0aGlzLl9oYXNSZXNpZHVhbE1vbWVudHVtJiZpPD10aGlzLl9wcmV2aW91c01vbWVudHVtfHx0aGlzLl9pZ25vcmVOZXdXaGVlbD90LnByZXZlbnREZWZhdWx0KCk6aT50aGlzLl9wcmV2aW91c01vbWVudHVtJiYodGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bT0hMSksdGhpcy5fcHJldmlvdXNNb21lbnR1bT1pfV9oYXNTY3JvbGxlZEFuY2VzdG9yKHQsZSxuKXtyZXR1cm4idmFhZGluLWdyaWQtY2VsbC1jb250ZW50IiE9PXQubG9jYWxOYW1lJiYoISghdGhpcy5fY2FuU2Nyb2xsKHQsZSxuKXx8LTE9PT1bImF1dG8iLCJzY3JvbGwiXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUodCkub3ZlcmZsb3cpKXx8KHQhPT10aGlzJiZ0LnBhcmVudEVsZW1lbnQ/dGhpcy5faGFzU2Nyb2xsZWRBbmNlc3Rvcih0LnBhcmVudEVsZW1lbnQsZSxuKTp2b2lkIDApKX1fY2FuU2Nyb2xsKHQsZSxuKXtyZXR1cm4gbj4wJiZ0LnNjcm9sbFRvcDx0LnNjcm9sbEhlaWdodC10Lm9mZnNldEhlaWdodHx8bjwwJiZ0LnNjcm9sbFRvcD4wfHxlPjAmJnQuc2Nyb2xsTGVmdDx0LnNjcm9sbFdpZHRoLXQub2Zmc2V0V2lkdGh8fGU8MCYmdC5zY3JvbGxMZWZ0PjB9X3NjaGVkdWxlU2Nyb2xsaW5nKCl7dGhpcy5fc2Nyb2xsaW5nRnJhbWV8fCh0aGlzLl9zY3JvbGxpbmdGcmFtZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoInNjcm9sbGluZyIsITAsdGhpcy4kLnNjcm9sbGVyKSkpKSx0aGlzLl9kZWJvdW5jZVNjcm9sbGluZz1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZVNjcm9sbGluZyxndC5hZnRlcig1MDApLCgoKT0+e2NhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Njcm9sbGluZ0ZyYW1lKSxkZWxldGUgdGhpcy5fc2Nyb2xsaW5nRnJhbWUsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzY3JvbGxpbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5fcmVvcmRlclJvd3MoKX0pKX1fYWZ0ZXJTY3JvbGwoKXt0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKSx0aGlzLmhhc0F0dHJpYnV0ZSgicmVvcmRlcmluZyIpfHx0aGlzLl9zY2hlZHVsZVNjcm9sbGluZygpLHRoaXMuX3VwZGF0ZU92ZXJmbG93KCl9X3VwZGF0ZU92ZXJmbG93KCl7bGV0IHQ9IiI7Y29uc3QgZT10aGlzLiQudGFibGU7ZS5zY3JvbGxUb3A8ZS5zY3JvbGxIZWlnaHQtZS5jbGllbnRIZWlnaHQmJih0Kz0iIGJvdHRvbSIpLGUuc2Nyb2xsVG9wPjAmJih0Kz0iIHRvcCIpLGUuc2Nyb2xsTGVmdDxlLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgmJih0Kz0iIHJpZ2h0IiksZS5zY3JvbGxMZWZ0PjAmJih0Kz0iIGxlZnQiKSx0aGlzLl9kZWJvdW5jZU92ZXJmbG93PVRuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlT3ZlcmZsb3csX3QsKCgpPT57Y29uc3QgZT10LnRyaW0oKTtlLmxlbmd0aD4wJiZ0aGlzLmdldEF0dHJpYnV0ZSgib3ZlcmZsb3ciKSE9PWU/dGhpcy5zZXRBdHRyaWJ1dGUoIm92ZXJmbG93IixlKTowPT1lLmxlbmd0aCYmdGhpcy5oYXNBdHRyaWJ1dGUoIm92ZXJmbG93IikmJnRoaXMucmVtb3ZlQXR0cmlidXRlKCJvdmVyZmxvdyIpfSkpfV9yZW9yZGVyUm93cygpe2lmKHRoaXMuX19tb3VzZURvd24pcmV0dXJuIHZvaWQodGhpcy5fX3BlbmRpbmdSZW9yZGVyPSEwKTtjb25zdCB0PXRoaXMuJC5pdGVtcyxlPXQucXVlcnlTZWxlY3RvckFsbCgidHIiKTtpZighZS5sZW5ndGgpcmV0dXJuO2NvbnN0IG49dGhpcy5fdmlydHVhbFN0YXJ0K3RoaXMuX3ZpZHhPZmZzZXQsaT10aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnR8fEFycmF5LmZyb20oZSkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXTtpZighaSlyZXR1cm47Y29uc3Qgcj1pLmluZGV4LW4sbz1BcnJheS5mcm9tKGUpLmluZGV4T2YoaSktcjtpZihvPjApZm9yKGxldCBuPTA7bjxvO24rKyl0LmFwcGVuZENoaWxkKGVbbl0pO2Vsc2UgaWYobzwwKWZvcihsZXQgbj1lLmxlbmd0aCtvO248ZS5sZW5ndGg7bisrKXQuaW5zZXJ0QmVmb3JlKGVbbl0sZVswXSk7aWYodGhpcy5fc2FmYXJpKXtjb25zdHt0cmFuc2Zvcm06dH09dGhpcy4kLmhlYWRlci5zdHlsZTt0aGlzLiQuaGVhZGVyLnN0eWxlLnRyYW5zZm9ybT0iIixzZXRUaW1lb3V0KCgoKT0+dGhpcy4kLmhlYWRlci5zdHlsZS50cmFuc2Zvcm09dCkpfX1fZnJvemVuQ2VsbHNDaGFuZ2VkKCl7dGhpcy5fZGVib3VuY2VyQ2FjaGVFbGVtZW50cz1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDYWNoZUVsZW1lbnRzLHZ0LCgoKT0+e0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0iY2VsbCJdJykpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3Quc3R5bGUudHJhbnNmb3JtPSIifSkpLHRoaXMuX2Zyb3plbkNlbGxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuJC50YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCJbZnJvemVuXSIpKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX3RyYW5zbGF0ZVN0YXRpb25hcnlFbGVtZW50cygpfSkpLHRoaXMuX3VwZGF0ZUxhc3RGcm96ZW4oKX1fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKXt0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg+MCYmdGhpcy5fX2lzUlRMJiYodGhpcy5fX3Njcm9sbGVyTWV0cmljcz17c2Nyb2xsV2lkdGg6dGhpcy4kLnRhYmxlLnNjcm9sbFdpZHRoLGNsaWVudFdpZHRoOnRoaXMuJC50YWJsZS5jbGllbnRXaWR0aH0pfV91cGRhdGVMYXN0RnJvemVuKCl7aWYoIXRoaXMuX2NvbHVtblRyZWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fY29sdW1uVHJlZVt0aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xXS5zbGljZSgwKTt0LnNvcnQoKCh0LGUpPT50Ll9vcmRlci1lLl9vcmRlcikpO2NvbnN0IGU9dC5yZWR1Y2UoKCh0LGUsbik9PihlLl9sYXN0RnJvemVuPSExLGUuZnJvemVuJiYhZS5oaWRkZW4/bjp0KSksdm9pZCAwKTt2b2lkIDAhPT1lJiYodFtlXS5fbGFzdEZyb3plbj0hMCl9X3RyYW5zbGF0ZVN0YXRpb25hcnlFbGVtZW50cygpe2NvbnN0IHQ9TWF0aC5tYXgoMCx0aGlzLl9zY3JvbGxMZWZ0KSxlPU1hdGgubWF4KDAsdGhpcy5fc2Nyb2xsVG9wKTtsZXQgbj0wLGk9MCxyPTA7aWYodGhpcy5fdXNlU3RpY2t5fHwobj10LGk9ZSxyPXRoaXMuJC50YWJsZS5jbGllbnRIZWlnaHQtdGhpcy4kLmZvb3Rlci5vZmZzZXRIZWlnaHQtdGhpcy4kLmZvb3Rlci5vZmZzZXRUb3ApLHRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtdCtuLGkpLHRoaXMuJC5mb290ZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtdCtuLGkrciksdGhpcy4kLml0ZW1zLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXQrbiwwKSx0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg+MCl7Y29uc3QgdD10aGlzLl9faXNSVEw/dGhpcy5fX2dldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHRoaXMuJC50YWJsZSkrdGhpcy5fX3Njcm9sbGVyTWV0cmljcy5jbGllbnRXaWR0aC10aGlzLl9fc2Nyb2xsZXJNZXRyaWNzLnNjcm9sbFdpZHRoOnRoaXMuX3Njcm9sbExlZnQsZT10aGlzLl9nZXRUcmFuc2xhdGUodCwwKTtmb3IobGV0IHQ9MDt0PHRoaXMuX2Zyb3plbkNlbGxzLmxlbmd0aDt0KyspdGhpcy5fZnJvemVuQ2VsbHNbdF0uc3R5bGUudHJhbnNmb3JtPWV9fV9nZXRUcmFuc2xhdGUodCxlKXtyZXR1cm5gdHJhbnNsYXRlKCR7dH1weCwgJHtlfXB4KWB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxHJHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntzZWxlY3RlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zZWxlY3RlZEl0ZW1zQ2hhbmdlZChzZWxlY3RlZEl0ZW1zLiopIl19X2lzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5fZ2V0SXRlbUluZGV4SW5BcnJheSh0LHRoaXMuc2VsZWN0ZWRJdGVtcyk+LTF9c2VsZWN0SXRlbSh0KXt0aGlzLl9pc1NlbGVjdGVkKHQpfHwodGhpcy5zZWxlY3RlZEl0ZW1zPVsuLi50aGlzLnNlbGVjdGVkSXRlbXMsdF0pfWRlc2VsZWN0SXRlbSh0KXt0aGlzLl9pc1NlbGVjdGVkKHQpJiYodGhpcy5zZWxlY3RlZEl0ZW1zPXRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGU9PiF0aGlzLl9pdGVtc0VxdWFsKGUsdCkpKSl9X3RvZ2dsZUl0ZW0odCl7LTE9PT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5zZWxlY3RlZEl0ZW1zKT90aGlzLnNlbGVjdEl0ZW0odCk6dGhpcy5kZXNlbGVjdEl0ZW0odCl9X3NlbGVjdGVkSXRlbXNDaGFuZ2VkKHQpeyF0aGlzLiQuaXRlbXMuY2hpbGRyZW4ubGVuZ3RofHwic2VsZWN0ZWRJdGVtcyIhPT10LnBhdGgmJiJzZWxlY3RlZEl0ZW1zLnNwbGljZXMiIT09dC5wYXRofHxBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3RoaXMuX3VwZGF0ZUl0ZW0odCx0Ll9pdGVtKX0pKX1fc2VsZWN0ZWRJbnN0YW5jZUNoYW5nZWRDYWxsYmFjayh0LGUpe2U/dGhpcy5zZWxlY3RJdGVtKHQuaXRlbSk6dGhpcy5kZXNlbGVjdEl0ZW0odC5pdGVtKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovLFckdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue211bHRpU29ydDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfc29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3ByZXZpb3VzU29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRlci1jaGFuZ2VkIix0aGlzLl9vblNvcnRlckNoYW5nZWQpfV9vblNvcnRlckNoYW5nZWQodCl7Y29uc3QgZT10LnRhcmdldDt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX191cGRhdGVTb3J0ZXIoZSksdGhpcy5fX2FwcGx5U29ydGVycygpfV9fcmVtb3ZlU29ydGVycyh0KXswIT10Lmxlbmd0aCYmKHRoaXMuX3NvcnRlcnM9dGhpcy5fc29ydGVycy5maWx0ZXIoKGU9PnQuaW5kZXhPZihlKTwwKSksdGhpcy5tdWx0aVNvcnQmJnRoaXMuX191cGRhdGVTb3J0T3JkZXJzKCksdGhpcy5fX2FwcGx5U29ydGVycygpKX1fX3VwZGF0ZVNvcnRPcmRlcnMoKXt0aGlzLl9zb3J0ZXJzLmZvckVhY2goKCh0LGUpPT50Ll9vcmRlcj10aGlzLl9zb3J0ZXJzLmxlbmd0aD4xP2U6bnVsbCksdGhpcyl9X191cGRhdGVTb3J0ZXIodCl7aWYodC5kaXJlY3Rpb258fC0xIT09dGhpcy5fc29ydGVycy5pbmRleE9mKHQpKWlmKHQuX29yZGVyPW51bGwsdGhpcy5tdWx0aVNvcnQpdGhpcy5fcmVtb3ZlQXJyYXlJdGVtKHRoaXMuX3NvcnRlcnMsdCksdC5kaXJlY3Rpb24mJnRoaXMuX3NvcnRlcnMudW5zaGlmdCh0KSx0aGlzLl9fdXBkYXRlU29ydE9yZGVycygpO2Vsc2UgaWYodC5kaXJlY3Rpb24pe2NvbnN0IGU9dGhpcy5fc29ydGVycy5maWx0ZXIoKGU9PmUhPXQpKTt0aGlzLl9zb3J0ZXJzPVt0XSxlLmZvckVhY2goKHQ9Pnt0Ll9vcmRlcj1udWxsLHQuZGlyZWN0aW9uPW51bGx9KSl9fV9fYXBwbHlTb3J0ZXJzKCl7dGhpcy5kYXRhUHJvdmlkZXImJnRoaXMuaXNBdHRhY2hlZCYmSlNPTi5zdHJpbmdpZnkodGhpcy5fcHJldmlvdXNTb3J0ZXJzKSE9PUpTT04uc3RyaW5naWZ5KHRoaXMuX21hcFNvcnRlcnMoKSkmJnRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2ExMXlVcGRhdGVTb3J0ZXJzKCksdGhpcy5fcHJldmlvdXNTb3J0ZXJzPXRoaXMuX21hcFNvcnRlcnMoKX1fbWFwU29ydGVycygpe3JldHVybiB0aGlzLl9zb3J0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCxkaXJlY3Rpb246dC5kaXJlY3Rpb259KSkpfV9yZW1vdmVBcnJheUl0ZW0odCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8scSR0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57Y2VsbENsYXNzTmFtZUdlbmVyYXRvcjpGdW5jdGlvbn19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9fY2VsbENsYXNzTmFtZUdlbmVyYXRvckNoYW5nZWQoY2VsbENsYXNzTmFtZUdlbmVyYXRvcikiXX1fX2NlbGxDbGFzc05hbWVHZW5lcmF0b3JDaGFuZ2VkKCl7dGhpcy5nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKCl9Z2VuZXJhdGVDZWxsQ2xhc3NOYW1lcygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9PnRoaXMuX2dlbmVyYXRlQ2VsbENsYXNzTmFtZXModCx0aGlzLl9fZ2V0Um93TW9kZWwodCkpKSl9X2dlbmVyYXRlQ2VsbENsYXNzTmFtZXModCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PntpZih0Ll9fZ2VuZXJhdGVkQ2xhc3NlcyYmdC5fX2dlbmVyYXRlZENsYXNzZXMuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QucmVtb3ZlKGUpKSksdGhpcy5jZWxsQ2xhc3NOYW1lR2VuZXJhdG9yKXtjb25zdCBuPXRoaXMuY2VsbENsYXNzTmFtZUdlbmVyYXRvcih0Ll9jb2x1bW4sZSk7dC5fX2dlbmVyYXRlZENsYXNzZXM9biYmbi5zcGxpdCgiICIpLmZpbHRlcigodD0+dC5sZW5ndGg+MCkpLHQuX19nZW5lcmF0ZWRDbGFzc2VzJiZ0Ll9fZ2VuZXJhdGVkQ2xhc3Nlcy5mb3JFYWNoKChlPT50LmNsYXNzTGlzdC5hZGQoZSkpKX19KSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxZJHQ9ImJldHdlZW4iLFgkdD0ib24tdG9wLW9yLWJldHdlZW4iLCQkdD0iYWJvdmUiLEskdD0iYmVsb3ciLFokdD0iZW1wdHkiLEokdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2Ryb3BNb2RlOlN0cmluZyxyb3dzRHJhZ2dhYmxlOkJvb2xlYW4sZHJhZ0ZpbHRlcjpGdW5jdGlvbixkcm9wRmlsdGVyOkZ1bmN0aW9uLF9fZG5kQXV0b1Njcm9sbFRocmVzaG9sZDp7dmFsdWU6NTB9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2RyYWdEcm9wQWNjZXNzQ2hhbmdlZChyb3dzRHJhZ2dhYmxlLCBkcm9wTW9kZSwgZHJhZ0ZpbHRlciwgZHJvcEZpbHRlcikiXX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsdGhpcy5fb25EcmFnU3RhcnQuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLHRoaXMuX29uRHJhZ0VuZC5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLHRoaXMuX29uRHJhZ092ZXIuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2ZSIsdGhpcy5fb25EcmFnTGVhdmUuYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLHRoaXMuX29uRHJvcC5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwodD0+e3RoaXMuZHJvcE1vZGUmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSl9KSl9X29uRHJhZ1N0YXJ0KHQpe2lmKHRoaXMucm93c0RyYWdnYWJsZSl7bGV0IGU9dC50YXJnZXQ7aWYoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCI9PT1lLmxvY2FsTmFtZSYmKGU9ZS5hc3NpZ25lZFNsb3QucGFyZW50Tm9kZS5wYXJlbnROb2RlKSxlLnBhcmVudE5vZGUhPT10aGlzLiQuaXRlbXMpcmV0dXJuO2lmKHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnZ2luZy1yb3dzIiwhMCx0aGlzKSx0aGlzLl9zYWZhcmkpe2NvbnN0IHQ9ZS5zdHlsZS50cmFuc2Zvcm07ZS5zdHlsZS50b3A9L3RyYW5zbGF0ZVlcKCguKilcKS8uZXhlYyh0KVsxXSxlLnN0eWxlLnRyYW5zZm9ybT0ibm9uZSIscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e2Uuc3R5bGUudG9wPSIiLGUuc3R5bGUudHJhbnNmb3JtPXR9KSl9Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2lvcz90LmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoZSk6dC5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGUsdC5jbGllbnRYLW4ubGVmdCx0LmNsaWVudFktbi50b3ApO2xldCBpPVtlXTt0aGlzLl9pc1NlbGVjdGVkKGUuX2l0ZW0pJiYoaT10aGlzLl9fZ2V0Vmlld3BvcnRSb3dzKCkuZmlsdGVyKCh0PT50aGlzLl9pc1NlbGVjdGVkKHQuX2l0ZW0pKSkuZmlsdGVyKCh0PT4hdGhpcy5kcmFnRmlsdGVyfHx0aGlzLmRyYWdGaWx0ZXIodGhpcy5fX2dldFJvd01vZGVsKHQpKSkpKSx0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0Iix0aGlzLl9fZm9ybWF0RGVmYXVsdFRyYW5zZmVyRGF0YShpKSksZS5zZXRBdHRyaWJ1dGUoImRyYWdzdGFydCIsaS5sZW5ndGg+MT9pLmxlbmd0aDoiIiksdGhpcy51cGRhdGVTdHlsZXMoeyItLV9ncmlkLWRyYWctc3RhcnQteCI6dC5jbGllbnRYLW4ubGVmdCsyMCsicHgiLCItLV9ncmlkLWRyYWctc3RhcnQteSI6dC5jbGllbnRZLW4udG9wKzEwKyJweCJ9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57ZS5yZW1vdmVBdHRyaWJ1dGUoImRyYWdzdGFydCIpLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1fZ3JpZC1kcmFnLXN0YXJ0LXgiOiIiLCItLV9ncmlkLWRyYWctc3RhcnQteSI6IiJ9KX0pKTtjb25zdCByPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcmFnc3RhcnQiLHtkZXRhaWw6e2RyYWdnZWRJdGVtczppLm1hcCgodD0+dC5faXRlbSkpLHNldERyYWdEYXRhOihlLG4pPT50LmRhdGFUcmFuc2Zlci5zZXREYXRhKGUsbiksc2V0RHJhZ2dlZEl0ZW1zQ291bnQ6dD0+ZS5zZXRBdHRyaWJ1dGUoImRyYWdzdGFydCIsdCl9fSk7ci5vcmlnaW5hbEV2ZW50PXQsdGhpcy5kaXNwYXRjaEV2ZW50KHIpfX1fb25EcmFnRW5kKHQpe3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZ2dpbmctcm93cyIsITEsdGhpcyksdC5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBlPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcmFnZW5kIik7ZS5vcmlnaW5hbEV2ZW50PXQsdGhpcy5kaXNwYXRjaEV2ZW50KGUpfV9vbkRyYWdMZWF2ZSh0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX2NsZWFyRHJhZ1N0eWxlcygpfV9vbkRyYWdPdmVyKHQpe2lmKHRoaXMuZHJvcE1vZGUpe2lmKHRoaXMuX2Ryb3BMb2NhdGlvbj12b2lkIDAsdGhpcy5fZHJhZ092ZXJJdGVtPXZvaWQgMCx0aGlzLl9fZG5kQXV0b1Njcm9sbCh0LmNsaWVudFkpKXJldHVybiB2b2lkIHRoaXMuX2NsZWFyRHJhZ1N0eWxlcygpO2xldCBlPXQuY29tcG9zZWRQYXRoKCkuZmlsdGVyKCh0PT4idHIiPT09dC5sb2NhbE5hbWUpKVswXTtpZih0aGlzLl9lZmZlY3RpdmVTaXplJiYib24tZ3JpZCIhPT10aGlzLmRyb3BNb2RlKWlmKGUmJmUucGFyZW50Tm9kZT09PXRoaXMuJC5pdGVtcyl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2Ryb3BMb2NhdGlvbj0ib24tdG9wIix0aGlzLmRyb3BNb2RlPT09WSR0P3RoaXMuX2Ryb3BMb2NhdGlvbj10LmNsaWVudFktbi50b3A8bi5ib3R0b20tdC5jbGllbnRZPyQkdDpLJHQ6dGhpcy5kcm9wTW9kZT09PVgkdCYmKHQuY2xpZW50WS1uLnRvcDxuLmhlaWdodC8zP3RoaXMuX2Ryb3BMb2NhdGlvbj0kJHQ6dC5jbGllbnRZLW4udG9wPm4uaGVpZ2h0LzMqMiYmKHRoaXMuX2Ryb3BMb2NhdGlvbj1LJHQpKX1lbHNle2lmKGUpcmV0dXJuO2lmKHRoaXMuZHJvcE1vZGUhPT1ZJHQmJnRoaXMuZHJvcE1vZGUhPT1YJHQpcmV0dXJuO2U9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+IXQuaGlkZGVuKSkucG9wKCksdGhpcy5fZHJvcExvY2F0aW9uPUskdH1lbHNlIHRoaXMuX2Ryb3BMb2NhdGlvbj1aJHQ7aWYoZSYmZS5oYXNBdHRyaWJ1dGUoImRyb3AtZGlzYWJsZWQiKSlyZXR1cm4gdm9pZCh0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwKTt0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcm9wTG9jYXRpb249PT1aJHQ/dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnb3ZlciIsITAsdGhpcyk6ZT8odGhpcy5fZHJhZ092ZXJJdGVtPWUuX2l0ZW0sZS5nZXRBdHRyaWJ1dGUoImRyYWdvdmVyIikhPT10aGlzLl9kcm9wTG9jYXRpb24mJmUuc2V0QXR0cmlidXRlKCJkcmFnb3ZlciIsdGhpcy5fZHJvcExvY2F0aW9uKSk6dGhpcy5fY2xlYXJEcmFnU3R5bGVzKCl9fV9fZG5kQXV0b1Njcm9sbCh0KXtpZih0aGlzLl9fZG5kQXV0b1Njcm9sbGluZylyZXR1cm4hMDtjb25zdCBlPXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLG49dGhpcy4kLmZvb3Rlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsaT1lLXQrdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQscj10LW4rdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQ7bGV0IG89MDtpZihyPjA/bz0yKnI6aT4wJiYobz0yKi1pKSxvKXtjb25zdCB0PXRoaXMuJC50YWJsZS5zY3JvbGxUb3A7aWYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9byx0IT09dGhpcy4kLnRhYmxlLnNjcm9sbFRvcClyZXR1cm4gdGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITAsc2V0VGltZW91dCgoKCk9PnRoaXMuX19kbmRBdXRvU2Nyb2xsaW5nPSExKSwyMCksdGhpcy5fc2Nyb2xsSGFuZGxlcigpLCEwfX1fX2dldFZpZXdwb3J0Um93cygpe2NvbnN0IHQ9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sZT10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigobj0+e2NvbnN0IGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gaS5ib3R0b20+dCYmaS50b3A8ZX0pKX1fY2xlYXJEcmFnU3R5bGVzKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImRyYWdvdmVyIiksQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQucmVtb3ZlQXR0cmlidXRlKCJkcmFnb3ZlciIpKSl9X29uRHJvcCh0KXtpZih0aGlzLmRyb3BNb2RlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKTtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLnR5cGVzJiZBcnJheS5mcm9tKHQuZGF0YVRyYW5zZmVyLnR5cGVzKS5tYXAoKGU9Pih7dHlwZTplLGRhdGE6dC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShlKX0pKSk7dGhpcy5fY2xlYXJEcmFnU3R5bGVzKCk7Y29uc3Qgbj1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJvcCIse2J1YmJsZXM6dC5idWJibGVzLGNhbmNlbGFibGU6dC5jYW5jZWxhYmxlLGRldGFpbDp7ZHJvcFRhcmdldEl0ZW06dGhpcy5fZHJhZ092ZXJJdGVtLGRyb3BMb2NhdGlvbjp0aGlzLl9kcm9wTG9jYXRpb24sZHJhZ0RhdGE6ZX19KTtuLm9yaWdpbmFsRXZlbnQ9dCx0aGlzLmRpc3BhdGNoRXZlbnQobil9fV9fZm9ybWF0RGVmYXVsdFRyYW5zZmVyRGF0YSh0KXtyZXR1cm4gdC5tYXAoKHQ9PkFycmF5LmZyb20odC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4mJi0xPT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKS5pbmRleE9mKCJkZXRhaWxzLWNlbGwiKSkpLnNvcnQoKCh0LGUpPT50Ll9jb2x1bW4uX29yZGVyPmUuX2NvbHVtbi5fb3JkZXI/MTotMSkpLm1hcCgodD0+dC5fY29udGVudC50ZXh0Q29udGVudC50cmltKCkpKS5maWx0ZXIoKHQ9PnQpKS5qb2luKCJcdCIpKSkuam9pbigiXG4iKX1fZHJhZ0Ryb3BBY2Nlc3NDaGFuZ2VkKCl7dGhpcy5maWx0ZXJEcmFnQW5kRHJvcCgpfWZpbHRlckRyYWdBbmREcm9wKCl7QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+IXQuaGlkZGVuKSkuZm9yRWFjaCgodD0+e3RoaXMuX2ZpbHRlckRyYWdBbmREcm9wKHQsdGhpcy5fX2dldFJvd01vZGVsKHQpKX0pKX1fZmlsdGVyRHJhZ0FuZERyb3AodCxlKXtjb25zdCBuPSF0aGlzLnJvd3NEcmFnZ2FibGV8fHRoaXMuZHJhZ0ZpbHRlciYmIXRoaXMuZHJhZ0ZpbHRlcihlKSxpPSF0aGlzLmRyb3BNb2RlfHx0aGlzLmRyb3BGaWx0ZXImJiF0aGlzLmRyb3BGaWx0ZXIoZSk7QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5tYXAoKHQ9PnQuX2NvbnRlbnQpKS5mb3JFYWNoKCh0PT57bj90LnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ2dhYmxlIik6dC5zZXRBdHRyaWJ1dGUoImRyYWdnYWJsZSIsITApfSkpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZy1kaXNhYmxlZCIsbix0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyb3AtZGlzYWJsZWQiLGksdCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxRJHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntfaGVhZGVyRm9jdXNhYmxlOnt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX2ZvY3VzYWJsZUNoYW5nZWQifSxfaXRlbXNGb2N1c2FibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZm9jdXNhYmxlQ2hhbmdlZCJ9LF9mb290ZXJGb2N1c2FibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZm9jdXNhYmxlQ2hhbmdlZCJ9LF9uYXZpZ2F0aW5nSXNIaWRkZW46Qm9vbGVhbixfZm9jdXNlZEl0ZW1JbmRleDp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sX2ZvY3VzZWRDb2x1bW5PcmRlcjpOdW1iZXIsaW50ZXJhY3Rpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAscmVhZE9ubHk6ITAsb2JzZXJ2ZXI6Il9pbnRlcmFjdGluZ0NoYW5nZWQifX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2lvc3x8dGhpcy5fYW5kcm9pZHx8KHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlEb3duKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0aGlzLl9vbktleVVwKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuX29uRm9jdXNJbiksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsdGhpcy5fb25Gb2N1c091dCksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLHRoaXMuX29uQ2VsbEZvY3VzSW4uYmluZCh0aGlzKSksdGhpcy4kLnRhYmxlLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLl9vbkNlbGxGb2N1c091dC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKCgpPT57dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMSx0aGlzKSx0aGlzLl9pc01vdXNlZG93bj0hMH0pKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCgoKT0+dGhpcy5faXNNb3VzZWRvd249ITEpKSl9X2ZvY3VzYWJsZUNoYW5nZWQodCxlKXtlJiZlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHQmJnRoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodCl9X2ludGVyYWN0aW5nQ2hhbmdlZCgpe3RoaXMuX3VwZGF0ZUdyaWRTZWN0aW9uRm9jdXNUYXJnZXQodGhpcy5faGVhZGVyRm9jdXNhYmxlKSx0aGlzLl91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHRoaXMuX2l0ZW1zRm9jdXNhYmxlKSx0aGlzLl91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHRoaXMuX2Zvb3RlckZvY3VzYWJsZSl9X29uS2V5RG93bih0KXtjb25zdCBlPXQua2V5O2xldCBuO3N3aXRjaChlKXtjYXNlIkFycm93VXAiOmNhc2UiQXJyb3dEb3duIjpjYXNlIkFycm93TGVmdCI6Y2FzZSJBcnJvd1JpZ2h0IjpjYXNlIlBhZ2VVcCI6Y2FzZSJQYWdlRG93biI6Y2FzZSJIb21lIjpjYXNlIkVuZCI6bj0iTmF2aWdhdGlvbiI7YnJlYWs7Y2FzZSJFbnRlciI6Y2FzZSJFc2NhcGUiOmNhc2UiRjIiOm49IkludGVyYWN0aW9uIjticmVhaztjYXNlIlRhYiI6bj0iVGFiIjticmVhaztjYXNlIiAiOm49IlNwYWNlIn10aGlzLl9kZXRlY3RJbnRlcmFjdGluZyh0KSx0aGlzLmludGVyYWN0aW5nJiYiSW50ZXJhY3Rpb24iIT09biYmKG49dm9pZCAwKSxuJiZ0aGlzW2Bfb24ke259S2V5RG93bmBdKHQsZSl9X2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0KXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChlPT5lLmluZGV4PT09dCkpWzBdfHx0aGlzLl9zY3JvbGxUb0luZGV4KHQpfV9vbk5hdmlnYXRpb25LZXlEb3duKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LnBhcmVudE5vZGUuY2hpbGRyZW4sdCl9dGhpcy5fc2Nyb2xsSGFuZGxlcigpLHQucHJldmVudERlZmF1bHQoKTtjb25zdCBpPXRoaXMuX2xhc3RWaXNpYmxlSW5kZXgtdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgtMTtsZXQgcj0wLG89MDtzd2l0Y2goZSl7Y2FzZSJBcnJvd1JpZ2h0IjpyPXRoaXMuX19pc1JUTD8tMToxO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0IjpyPXRoaXMuX19pc1JUTD8xOi0xO2JyZWFrO2Nhc2UiSG9tZSI6cj0tMS8wLHQuY3RybEtleSYmKG89LTEvMCk7YnJlYWs7Y2FzZSJFbmQiOnI9MS8wLHQuY3RybEtleSYmKG89MS8wKTticmVhaztjYXNlIkFycm93RG93biI6bz0xO2JyZWFrO2Nhc2UiQXJyb3dVcCI6bz0tMTticmVhaztjYXNlIlBhZ2VEb3duIjpvPWk7YnJlYWs7Y2FzZSJQYWdlVXAiOm89LWl9Y29uc3QgYT10LmNvbXBvc2VkUGF0aCgpWzBdLHM9bihhKSxsPXRoaXMuX2VsZW1lbnRNYXRjaGVzKGEsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSxjPWEucGFyZW50Tm9kZSx1PWMucGFyZW50Tm9kZSxoPSh1PT09dGhpcy4kLml0ZW1zP3RoaXMuX2VmZmVjdGl2ZVNpemU6dS5jaGlsZHJlbi5sZW5ndGgpLTEsZD11PT09dGhpcy4kLml0ZW1zP3ZvaWQgMCE9PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXg/dGhpcy5fZm9jdXNlZEl0ZW1JbmRleDpjLmluZGV4Om4oYyk7bGV0IHA9TWF0aC5tYXgoMCxNYXRoLm1pbihkK28saCkpLGY9ITE7aWYodT09PXRoaXMuJC5pdGVtcyl7Y29uc3QgdD1jLl9pdGVtLGU9dGhpcy5fY2FjaGUuZ2V0SXRlbUZvckluZGV4KHApO2Y9bD8wPT09bzoxPT09byYmdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpfHwtMT09PW8mJnAhPT1kJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQoZSksZiE9PWwmJigxPT09byYmZnx8LTE9PT1vJiYhZikmJihwPWQpfWlmKHUhPT10aGlzLiQuaXRlbXMpaWYocD5kKWZvcig7cDxoJiZ1LmNoaWxkcmVuW3BdLmhpZGRlbjspcCsrO2Vsc2UgaWYocDxkKWZvcig7cD4wJiZ1LmNoaWxkcmVuW3BdLmhpZGRlbjspcC0tO3ZvaWQgMD09PXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlciYmKHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj1sPzA6dGhpcy5fZ2V0Q29sdW1ucyh1LGQpLmZpbHRlcigodD0+IXQuaGlkZGVuKSlbc10uX29yZGVyKTtjb25zdCBtPXRoaXMuX2dldENvbHVtbnModSxwKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLGc9bS5tYXAoKHQ9PnQuX29yZGVyKSkuc29ydCgoKHQsZSk9PnQtZSkpLF89Zy5sZW5ndGgtMSx5PWcuaW5kZXhPZihnLnNsaWNlKDApLnNvcnQoKCh0LGUpPT5NYXRoLmFicyh0LXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlciktTWF0aC5hYnMoZS10aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXIpKSlbMF0pLHY9MD09PW8mJmw/eTpNYXRoLm1heCgwLE1hdGgubWluKHkrcixfKSk7diE9PXkmJih0aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXI9dm9pZCAwKSx1PT09dGhpcy4kLml0ZW1zJiZ0aGlzLl9lbnN1cmVTY3JvbGxlZFRvSW5kZXgocCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtjb25zdCBiPW0ucmVkdWNlKCgodCxlLG4pPT4odFtlLl9vcmRlcl09bix0KSkse30pW2dbdl1dLHg9dT09PXRoaXMuJC5pdGVtcz9BcnJheS5mcm9tKHUuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5pbmRleD09PXApKVswXTp1LmNoaWxkcmVuW3BdO2lmKCF4KXJldHVybjtjb25zdCB3PWY/QXJyYXkuZnJvbSh4LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PnRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSkpWzBdOnguY2hpbGRyZW5bYl07aWYodGhpcy5fc2Nyb2xsSG9yaXpvbnRhbGx5VG9DZWxsKHcpLHU9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PXApLHU9PT10aGlzLiQuaXRlbXMpe2NvbnN0IHQ9dy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLG49dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207dC5ib3R0b20+ZT8odGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9dC5ib3R0b20tZSx0aGlzLl9zY3JvbGxIYW5kbGVyKCkpOnQudG9wPG4mJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wLT1uLXQudG9wLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dy5mb2N1cygpfV9vbkludGVyYWN0aW9uS2V5RG93bih0LGUpe2NvbnN0IG49dC5jb21wb3NlZFBhdGgoKVswXSxpPSJpbnB1dCI9PT1uLmxvY2FsTmFtZSYmIS9eKGJ1dHRvbnxjaGVja2JveHxjb2xvcnxmaWxlfGltYWdlfHJhZGlvfHJhbmdlfHJlc2V0fHN1Ym1pdCkkL2kudGVzdChuLnR5cGUpO2xldCByO3N3aXRjaChlKXtjYXNlIkVudGVyIjpyPSF0aGlzLmludGVyYWN0aW5nfHwhaTticmVhaztjYXNlIkVzY2FwZSI6cj0hMTticmVhaztjYXNlIkYyIjpyPSF0aGlzLmludGVyYWN0aW5nfWNvbnN0e2NlbGw6b309dGhpcy5fZ2V0R3JpZEV2ZW50TG9jYXRpb24odCk7aWYodGhpcy5pbnRlcmFjdGluZyE9PXImJm51bGwhPT1vKWlmKHIpe2NvbnN0IGU9by5fY29udGVudC5xdWVyeVNlbGVjdG9yKCJbZm9jdXMtdGFyZ2V0XSIpfHxvLl9jb250ZW50LmZpcnN0RWxlbWVudENoaWxkO2UmJih0LnByZXZlbnREZWZhdWx0KCksZS5mb2N1cygpLHRoaXMuX3NldEludGVyYWN0aW5nKCEwKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpKX1lbHNlIHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXI9dm9pZCAwLG8uZm9jdXMoKSx0aGlzLl9zZXRJbnRlcmFjdGluZyghMSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKX1fcHJlZGljdEZvY3VzU3RlcFRhcmdldCh0LGUpe2NvbnN0IG49W3RoaXMuJC50YWJsZSx0aGlzLl9oZWFkZXJGb2N1c2FibGUsdGhpcy5faXRlbXNGb2N1c2FibGUsdGhpcy5fZm9vdGVyRm9jdXNhYmxlLHRoaXMuJC5mb2N1c2V4aXRdO2xldCBpPW4uaW5kZXhPZih0KTtmb3IoaSs9ZTtpPj0wJiZpPD1uLmxlbmd0aC0xJiYoIW5baV18fG5baV0ucGFyZW50Tm9kZS5oaWRkZW4pOylpKz1lO3JldHVybiBuW2ldfV9vblRhYktleURvd24odCl7Y29uc3QgZT10aGlzLl9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KHQuY29tcG9zZWRQYXRoKClbMF0sdC5zaGlmdEtleT8tMToxKTtpZihlPT09dGhpcy4kLnRhYmxlKXRoaXMuJC50YWJsZS5mb2N1cygpO2Vsc2UgaWYoZT09PXRoaXMuJC5mb2N1c2V4aXQpdGhpcy4kLmZvY3VzZXhpdC5mb2N1cygpO2Vsc2UgaWYoZT09PXRoaXMuX2l0ZW1zRm9jdXNhYmxlKXtsZXQgbj1lO2NvbnN0IGk9dGhpcy5faXRlbXNGb2N1c2FibGUucGFyZW50Tm9kZTtpZih0aGlzLl9lbnN1cmVTY3JvbGxlZFRvSW5kZXgodGhpcy5fZm9jdXNlZEl0ZW1JbmRleCksaS5pbmRleCE9PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgpe2NvbnN0IHQ9QXJyYXkuZnJvbShpLmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKSxlPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PnQuaW5kZXg9PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4KSlbMF07ZSYmKG49ZS5jaGlsZHJlblt0XSl9dC5wcmV2ZW50RGVmYXVsdCgpLG4uZm9jdXMoKX1lbHNlIHQucHJldmVudERlZmF1bHQoKSxlLmZvY3VzKCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKX1fb25TcGFjZUtleURvd24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKVswXTtlLl9jb250ZW50JiZlLl9jb250ZW50LmZpcnN0RWxlbWVudENoaWxkfHx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWFjdGl2YXRlIix7ZGV0YWlsOnttb2RlbDp0aGlzLl9fZ2V0Um93TW9kZWwoZS5wYXJlbnRFbGVtZW50KX19KSl9X29uS2V5VXAodCl7aWYoIS9eKCB8U3BhY2VCYXIpJC8udGVzdCh0LmtleSkpcmV0dXJuO3QucHJldmVudERlZmF1bHQoKTtjb25zdCBlPXQuY29tcG9zZWRQYXRoKClbMF07aWYoZS5fY29udGVudCYmZS5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZCl7Y29uc3QgdD10aGlzLmhhc0F0dHJpYnV0ZSgibmF2aWdhdGluZyIpO2UuX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xpY2soKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLHQsdGhpcyl9fV9vbkZvY3VzSW4odCl7dGhpcy5faXNNb3VzZWRvd258fHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITAsdGhpcyk7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpWzBdO2U9PT10aGlzLiQudGFibGV8fGU9PT10aGlzLiQuZm9jdXNleGl0Pyh0aGlzLl9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KGUsZT09PXRoaXMuJC50YWJsZT8xOi0xKS5mb2N1cygpLHRoaXMuX3NldEludGVyYWN0aW5nKCExKSk6dGhpcy5fZGV0ZWN0SW50ZXJhY3RpbmcodCl9X29uRm9jdXNPdXQodCl7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMSx0aGlzKSx0aGlzLl9kZXRlY3RJbnRlcmFjdGluZyh0KX1fb25DZWxsRm9jdXNJbih0KXtjb25zdHtzZWN0aW9uOmUsY2VsbDpufT10aGlzLl9nZXRHcmlkRXZlbnRMb2NhdGlvbih0KTt0aGlzLl9kZXRlY3RJbnRlcmFjdGluZyh0KSxlJiZuJiYodGhpcy5fYWN0aXZlUm93R3JvdXA9ZSx0aGlzLiQuaGVhZGVyPT09ZT90aGlzLl9oZWFkZXJGb2N1c2FibGU9bjp0aGlzLiQuaXRlbXM9PT1lP3RoaXMuX2l0ZW1zRm9jdXNhYmxlPW46dGhpcy4kLmZvb3Rlcj09PWUmJih0aGlzLl9mb290ZXJGb2N1c2FibGU9biksbi5fY29udGVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1mb2N1c2luIix7YnViYmxlczohMX0pKSxuLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWZvY3VzIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKSksdGhpcy5fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleCh0KX1fb25DZWxsRm9jdXNPdXQodCl7Mz09PXQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLiQudGFibGUpJiZ0LmNvbXBvc2VkUGF0aCgpWzBdLl9jb250ZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWZvY3Vzb3V0Iix7YnViYmxlczohMX0pKX1fZGV0ZWN0SW50ZXJhY3RpbmcodCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLnNvbWUoKHQ9PiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiPT09dC5sb2NhbE5hbWUpKTt0aGlzLl9zZXRJbnRlcmFjdGluZyhlKX1fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleCh0KXtjb25zdHtzZWN0aW9uOmUscm93Om59PXRoaXMuX2dldEdyaWRFdmVudExvY2F0aW9uKHQpO2U9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PW4uaW5kZXgpfV91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHQpe2lmKCF0KXJldHVybjtjb25zdCBlPXRoaXMuX2dldEdyaWRTZWN0aW9uRnJvbUZvY3VzVGFyZ2V0KHQpO3QudGFiSW5kZXg9dGhpcy5pbnRlcmFjdGluZyYmZT09PXRoaXMuX2FjdGl2ZVJvd0dyb3VwPy0xOjB9X3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSl7dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgmJnRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIikmJnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fbmF2aWdhdGluZ0lzSGlkZGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpLGU9PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4JiZ0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW4mJih0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW49ITEsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKSl9X2dldENvbHVtbnModCxlKXtsZXQgbj10aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xO3JldHVybiB0PT09dGhpcy4kLmhlYWRlcj9uPWU6dD09PXRoaXMuJC5mb290ZXImJihuPXRoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTEtZSksdGhpcy5fY29sdW1uVHJlZVtuXX1fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKXtpZih0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5faGVhZGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSksdGhpcy4kLml0ZW1zLmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9PntpZih0aGlzLl9maXJzdFZpc2libGVJbmRleD09PWUpcmV0dXJuIHRoaXMuJC5pdGVtcy5jaGlsZHJlblt0XX0pKTt0JiYodGhpcy5faXRlbXNGb2N1c2FibGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpWzBdKX10aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSl9X3Njcm9sbEhvcml6b250YWxseVRvQ2VsbCh0KXtpZih0Lmhhc0F0dHJpYnV0ZSgiZnJvemVuIil8fHRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSlyZXR1cm47Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC5wYXJlbnROb2RlLGk9QXJyYXkuZnJvbShuLmNoaWxkcmVuKS5pbmRleE9mKHQpLHI9dGhpcy4kLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBvPXIubGVmdCxhPXIucmlnaHQ7Zm9yKGxldCB0PWktMTt0Pj0wO3QtLSl7Y29uc3QgZT1uLmNoaWxkcmVuW3RdO2lmKCFlLmhhc0F0dHJpYnV0ZSgiaGlkZGVuIikmJiF0aGlzLl9lbGVtZW50TWF0Y2hlcyhlLCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykmJmUuaGFzQXR0cmlidXRlKCJmcm96ZW4iKSl7bz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0O2JyZWFrfX1mb3IobGV0IHQ9aSsxO3Q8bi5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uY2hpbGRyZW5bdF07aWYoIWUuaGFzQXR0cmlidXRlKCJoaWRkZW4iKSYmIXRoaXMuX2VsZW1lbnRNYXRjaGVzKGUsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSYmZS5oYXNBdHRyaWJ1dGUoImZyb3plbiIpKXthPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDticmVha319ZS5sZWZ0PG8mJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9TWF0aC5yb3VuZChlLmxlZnQtbykpLGUucmlnaHQ+YSYmKHRoaXMuJC50YWJsZS5zY3JvbGxMZWZ0Kz1NYXRoLnJvdW5kKGUucmlnaHQtYSkpfV9lbGVtZW50TWF0Y2hlcyh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOi0xIT09QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChlKSkuaW5kZXhPZih0KX1fZ2V0R3JpZEV2ZW50TG9jYXRpb24odCl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLG49ZS5pbmRleE9mKHRoaXMuJC50YWJsZSk7cmV0dXJue3NlY3Rpb246bj49MT9lW24tMV06bnVsbCxyb3c6bj49Mj9lW24tMl06bnVsbCxjZWxsOm4+PTM/ZVtuLTNdOm51bGx9fV9nZXRHcmlkU2VjdGlvbkZyb21Gb2N1c1RhcmdldCh0KXtyZXR1cm4gdD09PXRoaXMuX2hlYWRlckZvY3VzYWJsZT90aGlzLiQuaGVhZGVyOnQ9PT10aGlzLl9pdGVtc0ZvY3VzYWJsZT90aGlzLiQuaXRlbXM6dD09PXRoaXMuX2Zvb3RlckZvY3VzYWJsZT90aGlzLiQuZm9vdGVyOm51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyx0S3Q9dD0+Y2xhc3MgZXh0ZW5kcyhwaSh0KSl7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9vcmRlckJhc2VTY29wZTp7dHlwZTpOdW1iZXIsdmFsdWU6MWU3fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl91cGRhdGVPcmRlcnMoX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19cmVhZHkoKXtzdXBlci5yZWFkeSgpLGlpKHRoaXMsInRyYWNrIix0aGlzLl9vblRyYWNrRXZlbnQpLHRoaXMuX3Jlb3JkZXJHaG9zdD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnQ9InJlb3JkZXItZ2hvc3QiXScpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaFN0YXJ0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZS5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuX29uQ29udGV4dE1lbnUuYmluZCh0aGlzKSl9X29uQ29udGV4dE1lbnUodCl7dGhpcy5oYXNBdHRyaWJ1dGUoInJlb3JkZXJpbmciKSYmdC5wcmV2ZW50RGVmYXVsdCgpfV9vblRvdWNoU3RhcnQodCl7dGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT57dGhpcy5fb25UcmFja1N0YXJ0KHtkZXRhaWw6e3g6dC50b3VjaGVzWzBdLmNsaWVudFgseTp0LnRvdWNoZXNbMF0uY2xpZW50WX19KX0pLDEwMCl9X29uVG91Y2hNb3ZlKHQpe3RoaXMuX2RyYWdnZWRDb2x1bW4mJnQucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0KX1fb25Ub3VjaEVuZCgpe2NsZWFyVGltZW91dCh0aGlzLl9zdGFydFRvdWNoUmVvcmRlclRpbWVvdXQpLHRoaXMuX29uVHJhY2tFbmQoKX1fb25UcmFja0V2ZW50KHQpe2lmKCJzdGFydCI9PT10LmRldGFpbC5zdGF0ZSl7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLG49ZVtlLmluZGV4T2YodGhpcy4kLmhlYWRlciktMl07aWYoIW58fCFuLl9jb250ZW50KXJldHVybjtpZihuLl9jb250ZW50LmNvbnRhaW5zKHRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50KSlyZXR1cm47aWYodGhpcy4kLnNjcm9sbGVyLmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikpcmV0dXJuO3RoaXMuX3RvdWNoRGV2aWNlfHx0aGlzLl9vblRyYWNrU3RhcnQodCl9ZWxzZSJ0cmFjayI9PT10LmRldGFpbC5zdGF0ZT90aGlzLl9vblRyYWNrKHQpOiJlbmQiPT09dC5kZXRhaWwuc3RhdGUmJnRoaXMuX29uVHJhY2tFbmQodCl9X29uVHJhY2tTdGFydCh0KXtpZighdGhpcy5jb2x1bW5SZW9yZGVyaW5nQWxsb3dlZClyZXR1cm47Y29uc3QgZT10LmNvbXBvc2VkUGF0aCYmdC5jb21wb3NlZFBhdGgoKTtpZihlJiZlLmZpbHRlcigodD0+dC5oYXNBdHRyaWJ1dGUmJnQuaGFzQXR0cmlidXRlKCJkcmFnZ2FibGUiKSkpWzBdKXJldHVybjtjb25zdCBuPXRoaXMuX2NlbGxGcm9tUG9pbnQodC5kZXRhaWwueCx0LmRldGFpbC55KTtpZihuJiYtMSE9PW4uZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiaGVhZGVyLWNlbGwiKSl7Zm9yKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgicmVvcmRlcmluZyIsITAsdGhpcyksdGhpcy5fZHJhZ2dlZENvbHVtbj1uLl9jb2x1bW47MT09PXRoaXMuX2RyYWdnZWRDb2x1bW4ucGFyZW50RWxlbWVudC5jaGlsZEVsZW1lbnRDb3VudDspdGhpcy5fZHJhZ2dlZENvbHVtbj10aGlzLl9kcmFnZ2VkQ29sdW1uLnBhcmVudEVsZW1lbnQ7dGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sImFsbG93ZWQiKSx0aGlzLl9kcmFnZ2VkQ29sdW1uLl9yZW9yZGVyU3RhdHVzPSJkcmFnZ2luZyIsdGhpcy5fdXBkYXRlR2hvc3QobiksdGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiLHRoaXMuX3VwZGF0ZUdob3N0UG9zaXRpb24odC5kZXRhaWwueCx0aGlzLl90b3VjaERldmljZT90LmRldGFpbC55LTUwOnQuZGV0YWlsLnkpLHRoaXMuX2F1dG9TY3JvbGxlcigpfX1fb25UcmFjayh0KXtpZighdGhpcy5fZHJhZ2dlZENvbHVtbilyZXR1cm47Y29uc3QgZT10aGlzLl9jZWxsRnJvbVBvaW50KHQuZGV0YWlsLngsdC5kZXRhaWwueSk7aWYoIWUpcmV0dXJuO2NvbnN0IG49dGhpcy5fZ2V0VGFyZ2V0Q29sdW1uKGUsdGhpcy5fZHJhZ2dlZENvbHVtbik7dGhpcy5faXNTd2FwQWxsb3dlZCh0aGlzLl9kcmFnZ2VkQ29sdW1uLG4pJiZ0aGlzLl9pc1N3YXBwYWJsZUJ5UG9zaXRpb24obix0LmRldGFpbC54KSYmdGhpcy5fc3dhcENvbHVtbk9yZGVycyh0aGlzLl9kcmFnZ2VkQ29sdW1uLG4pLHRoaXMuX3VwZGF0ZUdob3N0UG9zaXRpb24odC5kZXRhaWwueCx0aGlzLl90b3VjaERldmljZT90LmRldGFpbC55LTUwOnQuZGV0YWlsLnkpLHRoaXMuX2xhc3REcmFnQ2xpZW50WD10LmRldGFpbC54fV9vblRyYWNrRW5kKCl7dGhpcy5fZHJhZ2dlZENvbHVtbiYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgicmVvcmRlcmluZyIsITEsdGhpcyksdGhpcy5fZHJhZ2dlZENvbHVtbi5fcmVvcmRlclN0YXR1cz0iIix0aGlzLl9zZXRTaWJsaW5nc1Jlb3JkZXJTdGF0dXModGhpcy5fZHJhZ2dlZENvbHVtbiwiIiksdGhpcy5fZHJhZ2dlZENvbHVtbj1udWxsLHRoaXMuX2xhc3REcmFnQ2xpZW50WD1udWxsLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbHVtbi1yZW9yZGVyIix7ZGV0YWlsOntjb2x1bW5zOnRoaXMuX2dldENvbHVtbnNJbk9yZGVyKCl9fSkpKX1fZ2V0Q29sdW1uc0luT3JkZXIoKXtyZXR1cm4gdGhpcy5fY29sdW1uVHJlZS5zbGljZSgwKS5wb3AoKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLnNvcnQoKCh0LGUpPT50Ll9vcmRlci1lLl9vcmRlcikpfV9jZWxsRnJvbVBvaW50KHQsZSl7dD10fHwwLGU9ZXx8MCx0aGlzLl9kcmFnZ2VkQ29sdW1ufHx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCEwLHRoaXMuJC5zY3JvbGxlcik7Y29uc3Qgbj10aGlzLnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludCh0LGUpO2lmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibm8tY29udGVudC1wb2ludGVyLWV2ZW50cyIsITEsdGhpcy4kLnNjcm9sbGVyKSxuJiZuLl9jb2x1bW4pcmV0dXJuIG59X3VwZGF0ZUdob3N0UG9zaXRpb24odCxlKXtjb25zdCBuPXRoaXMuX3Jlb3JkZXJHaG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXQtbi53aWR0aC8yLHI9ZS1uLmhlaWdodC8yLG89cGFyc2VJbnQodGhpcy5fcmVvcmRlckdob3N0Ll9sZWZ0fHwwKSxhPXBhcnNlSW50KHRoaXMuX3Jlb3JkZXJHaG9zdC5fdG9wfHwwKTt0aGlzLl9yZW9yZGVyR2hvc3QuX2xlZnQ9by0obi5sZWZ0LWkpLHRoaXMuX3Jlb3JkZXJHaG9zdC5fdG9wPWEtKG4udG9wLXIpLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS50cmFuc2Zvcm09YHRyYW5zbGF0ZSgke3RoaXMuX3Jlb3JkZXJHaG9zdC5fbGVmdH1weCwgJHt0aGlzLl9yZW9yZGVyR2hvc3QuX3RvcH1weClgfV91cGRhdGVHaG9zdCh0KXtjb25zdCBlPXRoaXMuX3Jlb3JkZXJHaG9zdDtlLnRleHRDb250ZW50PXQuX2NvbnRlbnQuaW5uZXJUZXh0O2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuWyJib3hTaXppbmciLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kIiwiYWxpZ25JdGVtcyIsInBhZGRpbmciLCJib3JkZXIiLCJmbGV4LWRpcmVjdGlvbiIsIm92ZXJmbG93Il0uZm9yRWFjaCgodD0+ZS5zdHlsZVt0XT1uW3RdKSksZX1fdXBkYXRlT3JkZXJzKHQsZSl7dm9pZCAwIT09dCYmdm9pZCAwIT09ZSYmKHRbMF0uZm9yRWFjaCgodD0+dC5fb3JkZXI9MCkpLChmdW5jdGlvbiBuKHQsZSxpKXtsZXQgcj0xO3QuZm9yRWFjaCgodD0+e3IlMTA9PTAmJnIrKyx0Ll9vcmRlcj1pK3IqZSxyKyt9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovKSh0WzBdLHRoaXMuX29yZGVyQmFzZVNjb3BlLDApKX1fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHQsZSl7QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUuY2hpbGRyZW4pLmZpbHRlcigoZT0+L2NvbHVtbi8udGVzdChlLmxvY2FsTmFtZSkmJnRoaXMuX2lzU3dhcEFsbG93ZWQoZSx0KSkpLmZvckVhY2goKHQ9PnQuX3Jlb3JkZXJTdGF0dXM9ZSkpfV9hdXRvU2Nyb2xsZXIoKXtpZih0aGlzLl9sYXN0RHJhZ0NsaWVudFgpe2NvbnN0IHQ9dGhpcy5fbGFzdERyYWdDbGllbnRYLXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrNTAsZT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdGhpcy5fbGFzdERyYWdDbGllbnRYKzUwO3Q+MD90aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9dC8xMDplPjAmJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdC09ZS8xMCksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfXRoaXMuX2RyYWdnZWRDb2x1bW4mJnRoaXMuYXN5bmModGhpcy5fYXV0b1Njcm9sbGVyLDEwKX1faXNTd2FwQWxsb3dlZCh0LGUpe2lmKHQmJmUpe2NvbnN0IG49dC5wYXJlbnRFbGVtZW50PT09ZS5wYXJlbnRFbGVtZW50LGk9dC5mcm96ZW49PT1lLmZyb3plbjtyZXR1cm4gdCE9PWUmJm4mJml9fV9pc1N3YXBwYWJsZUJ5UG9zaXRpb24odCxlKXtjb25zdCBuPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCd0cjpub3QoW2hpZGRlbl0pIFtwYXJ0fj0iY2VsbCJdJykpLmZpbHRlcigoZT0+dC5jb250YWlucyhlLl9jb2x1bW4pKSlbMF0saT10aGlzLiQuaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoInRyOm5vdChbaGlkZGVuXSkgW3Jlb3JkZXItc3RhdHVzPWRyYWdnaW5nXSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gci5sZWZ0PmkubGVmdD9lPnIucmlnaHQtaS53aWR0aDplPHIubGVmdCtpLndpZHRofV9zd2FwQ29sdW1uT3JkZXJzKHQsZSl7Y29uc3Qgbj10Ll9vcmRlcjt0Ll9vcmRlcj1lLl9vcmRlcixlLl9vcmRlcj1uLHRoaXMuX3VwZGF0ZUxhc3RGcm96ZW4oKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW4oKX1fZ2V0VGFyZ2V0Q29sdW1uKHQsZSl7aWYodCYmZSl7bGV0IG49dC5fY29sdW1uO2Zvcig7bi5wYXJlbnRFbGVtZW50IT09ZS5wYXJlbnRFbGVtZW50JiZuIT09dGhpczspbj1uLnBhcmVudEVsZW1lbnQ7cmV0dXJuIG4ucGFyZW50RWxlbWVudD09PWUucGFyZW50RWxlbWVudD9uOnQuX2NvbHVtbn19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICAgICAqIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICAqLyxlS3Q9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntyZXNpemFibGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTpmdW5jdGlvbigpe2lmKCJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dGhpcy5sb2NhbE5hbWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYXJlbnROb2RlO3JldHVybiB0JiYidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PXQubG9jYWxOYW1lJiZ0LnJlc2l6YWJsZXx8ITF9fSxfaGVhZGVyVGVtcGxhdGU6e3R5cGU6T2JqZWN0fSxfZm9vdGVyVGVtcGxhdGU6e3R5cGU6T2JqZWN0fSxmcm96ZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saGlkZGVuOnt0eXBlOkJvb2xlYW59LGhlYWRlcjp7dHlwZTpTdHJpbmd9LHRleHRBbGlnbjp7dHlwZTpTdHJpbmd9LF9sYXN0RnJvemVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9vcmRlcjpOdW1iZXIsX3Jlb3JkZXJTdGF0dXM6Qm9vbGVhbixfZW1wdHlDZWxsczpBcnJheSxfaGVhZGVyQ2VsbDpPYmplY3QsX2Zvb3RlckNlbGw6T2JqZWN0LF9ncmlkOk9iamVjdCxoZWFkZXJSZW5kZXJlcjpGdW5jdGlvbixmb290ZXJSZW5kZXJlcjpGdW5jdGlvbn19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl93aWR0aENoYW5nZWQod2lkdGgsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2Zyb3plbkNoYW5nZWQoZnJvemVuLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9mbGV4R3Jvd0NoYW5nZWQoZmxleEdyb3csIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX3BhdGhPckhlYWRlckNoYW5nZWQocGF0aCwgaGVhZGVyLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qLCByZW5kZXJlciwgaGVhZGVyUmVuZGVyZXIsIF9ib2R5VGVtcGxhdGUsIF9oZWFkZXJUZW1wbGF0ZSkiLCJfdGV4dEFsaWduQ2hhbmdlZCh0ZXh0QWxpZ24sIF9jZWxscy4qLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwpIiwiX29yZGVyQ2hhbmdlZChfb3JkZXIsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2xhc3RGcm96ZW5DaGFuZ2VkKF9sYXN0RnJvemVuKSIsIl9zZXRCb2R5VGVtcGxhdGVPclJlbmRlcmVyKF9ib2R5VGVtcGxhdGUsIHJlbmRlcmVyLCBfY2VsbHMsIF9jZWxscy4qKSIsIl9zZXRIZWFkZXJUZW1wbGF0ZU9yUmVuZGVyZXIoX2hlYWRlclRlbXBsYXRlLCBoZWFkZXJSZW5kZXJlciwgX2hlYWRlckNlbGwpIiwiX3NldEZvb3RlclRlbXBsYXRlT3JSZW5kZXJlcihfZm9vdGVyVGVtcGxhdGUsIGZvb3RlclJlbmRlcmVyLCBfZm9vdGVyQ2VsbCkiLCJfcmVzaXphYmxlQ2hhbmdlZChyZXNpemFibGUsIF9oZWFkZXJDZWxsKSIsIl9yZW9yZGVyU3RhdHVzQ2hhbmdlZChfcmVvcmRlclN0YXR1cywgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfaGlkZGVuQ2hhbmdlZChoaWRkZW4sIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIl19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2JvZHlUZW1wbGF0ZSYmKHRoaXMuX2JvZHlUZW1wbGF0ZS50ZW1wbGF0aXplci5fZ3JpZD10aGlzLl9ncmlkKSx0aGlzLl9oZWFkZXJUZW1wbGF0ZSYmKHRoaXMuX2hlYWRlclRlbXBsYXRlLnRlbXBsYXRpemVyLl9ncmlkPXRoaXMuX2dyaWQpLHRoaXMuX2Zvb3RlclRlbXBsYXRlJiYodGhpcy5fZm9vdGVyVGVtcGxhdGUudGVtcGxhdGl6ZXIuX2dyaWQ9dGhpcy5fZ3JpZCksdGhpcy5fdGVtcGxhdGVPYnNlcnZlci5mbHVzaCgpLHRoaXMuX2JvZHlUZW1wbGF0ZXx8dGhpcy5fdGVtcGxhdGVPYnNlcnZlci5jYWxsYmFjaygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKCh0PT57dC5fY29udGVudC5wYXJlbnROb2RlfHx0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLmFwcGVuZENoaWxkKHQuX2NvbnRlbnQpfSkpfSkpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fZmluZEhvc3RHcmlkKCl8fHRoaXMuX2FsbENlbGxzLmZvckVhY2goKHQ9Pnt0Ll9jb250ZW50LnBhcmVudE5vZGUmJnQuX2NvbnRlbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0Ll9jb250ZW50KX0pKX0pKSx0aGlzLl9ncmlkVmFsdWU9dm9pZCAwfV9maW5kSG9zdEdyaWQoKXtsZXQgdD10aGlzO2Zvcig7dCYmIS9edmFhZGluLipncmlkKC1wcm8pPyQvLnRlc3QodC5sb2NhbE5hbWUpOyl0PXQuYXNzaWduZWRTbG90P3QuYXNzaWduZWRTbG90LnBhcmVudE5vZGU6dC5wYXJlbnROb2RlO3JldHVybiB0fHx2b2lkIDB9Z2V0IF9ncmlkKCl7cmV0dXJuIHRoaXMuX2dyaWRWYWx1ZXx8KHRoaXMuX2dyaWRWYWx1ZT10aGlzLl9maW5kSG9zdEdyaWQoKSksdGhpcy5fZ3JpZFZhbHVlfWdldCBfYWxsQ2VsbHMoKXtyZXR1cm5bXS5jb25jYXQodGhpcy5fY2VsbHN8fFtdKS5jb25jYXQodGhpcy5fZW1wdHlDZWxsc3x8W10pLmNvbmNhdCh0aGlzLl9oZWFkZXJDZWxsKS5jb25jYXQodGhpcy5fZm9vdGVyQ2VsbCkuZmlsdGVyKCh0PT50KSl9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXI9bmV3IHppKHRoaXMsKCgpPT57dGhpcy5faGVhZGVyVGVtcGxhdGU9dGhpcy5fcHJlcGFyZUhlYWRlclRlbXBsYXRlKCksdGhpcy5fZm9vdGVyVGVtcGxhdGU9dGhpcy5fcHJlcGFyZUZvb3RlclRlbXBsYXRlKCksdGhpcy5fYm9keVRlbXBsYXRlPXRoaXMuX3ByZXBhcmVCb2R5VGVtcGxhdGUoKX0pKX1fcHJlcGFyZUhlYWRlclRlbXBsYXRlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmVUZW1wbGF0aXplcih0aGlzLl9maW5kVGVtcGxhdGUoITApfHxudWxsLHt9KX1fcHJlcGFyZUZvb3RlclRlbXBsYXRlKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmVUZW1wbGF0aXplcih0aGlzLl9maW5kVGVtcGxhdGUoITEsITApfHxudWxsLHt9KX1fcHJlcGFyZUJvZHlUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCl8fG51bGwpfV9wcmVwYXJlVGVtcGxhdGl6ZXIodCxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7Y29uc3Qgbj1uZXcgViR0O24uX2dyaWQ9dGhpcy5fZ3JpZCxuLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3Qsbi5faW5zdGFuY2VQcm9wcz1lfHxuLl9pbnN0YW5jZVByb3BzLG4udGVtcGxhdGU9dCx0LnRlbXBsYXRpemVyPW59cmV0dXJuIHR9X3JlbmRlckhlYWRlckFuZEZvb3Rlcigpe3RoaXMuaGVhZGVyUmVuZGVyZXImJnRoaXMuX2hlYWRlckNlbGwmJnRoaXMuX19ydW5SZW5kZXJlcih0aGlzLmhlYWRlclJlbmRlcmVyLHRoaXMuX2hlYWRlckNlbGwpLHRoaXMuZm9vdGVyUmVuZGVyZXImJnRoaXMuX2Zvb3RlckNlbGwmJnRoaXMuX19ydW5SZW5kZXJlcih0aGlzLmZvb3RlclJlbmRlcmVyLHRoaXMuX2Zvb3RlckNlbGwpfV9fcnVuUmVuZGVyZXIodCxlLG4pe2NvbnN0IGk9W2UuX2NvbnRlbnQsdGhpc107biYmbi5pdGVtJiZpLnB1c2gobiksdC5hcHBseSh0aGlzLGkpfV9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxuKXtpZighdGhpcy5oaWRkZW4pe2lmKHQmJmUpdGhyb3cgbmV3IEVycm9yKCJZb3Ugc2hvdWxkIG9ubHkgdXNlIGVpdGhlciBhIHJlbmRlcmVyIG9yIGEgdGVtcGxhdGUiKTtuLmZvckVhY2goKG49Pntjb25zdCBpPXRoaXMuX2dyaWQuX19nZXRSb3dNb2RlbChuLnBhcmVudEVsZW1lbnQpO2lmKGUpbi5fcmVuZGVyZXI9ZSwoaS5pdGVtfHxlPT09dGhpcy5oZWFkZXJSZW5kZXJlcnx8ZT09PXRoaXMuZm9vdGVyUmVuZGVyZXIpJiZ0aGlzLl9fcnVuUmVuZGVyZXIoZSxuLGkpO2Vsc2UgaWYobi5fdGVtcGxhdGUhPT10KXtuLl90ZW1wbGF0ZT10LG4uX2NvbnRlbnQuaW5uZXJIVE1MPSIiLHQudGVtcGxhdGl6ZXIuX2dyaWQ9dC50ZW1wbGF0aXplci5fZ3JpZHx8dGhpcy5fZ3JpZDtjb25zdCBlPXQudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKTtuLl9jb250ZW50LmFwcGVuZENoaWxkKGUucm9vdCksbi5faW5zdGFuY2U9ZSxpLml0ZW0mJm4uX2luc3RhbmNlLnNldFByb3BlcnRpZXMoaSl9fSkpfX1fc2V0Qm9keVRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7KHR8fGUpJiZuJiZ0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxuKX1fc2V0SGVhZGVyVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxuKXsodHx8ZSkmJm4mJnRoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodCxlLFtuXSl9X3NldEZvb3RlclRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7KHR8fGUpJiZuJiYodGhpcy5fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsW25dKSx0aGlzLl9ncmlkLl9fdXBkYXRlSGVhZGVyRm9vdGVyUm93VmlzaWJpbGl0eShuLnBhcmVudEVsZW1lbnQpKX1fc2VsZWN0Rmlyc3RUZW1wbGF0ZSh0PSExLGU9ITEpe3JldHVybiB6aS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIoKG49PiJ0ZW1wbGF0ZSI9PT1uLmxvY2FsTmFtZSYmbi5jbGFzc0xpc3QuY29udGFpbnMoImhlYWRlciIpPT09dCYmbi5jbGFzc0xpc3QuY29udGFpbnMoImZvb3RlciIpPT09ZSkpWzBdfV9maW5kVGVtcGxhdGUodCxlKXtjb25zdCBuPXRoaXMuX3NlbGVjdEZpcnN0VGVtcGxhdGUodCxlKTtyZXR1cm4gbiYmdGhpcy5kYXRhSG9zdCYmKG4uX3Jvb3REYXRhSG9zdD10aGlzLmRhdGFIb3N0Ll9yb290RGF0YUhvc3R8fHRoaXMuZGF0YUhvc3QpLG59X2ZsZXhHcm93Q2hhbmdlZCh0KXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImZsZXhHcm93IiksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS5mbGV4R3Jvdz10KSl9X29yZGVyQ2hhbmdlZCh0KXt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT5lLnN0eWxlLm9yZGVyPXQpKX1fd2lkdGhDaGFuZ2VkKHQpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgid2lkdGgiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT5lLnN0eWxlLndpZHRoPXQpKSx0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLl9fZm9yY2VSZWZsb3cmJnRoaXMuX2dyaWQuX19mb3JjZVJlZmxvdygpfV9mcm96ZW5DaGFuZ2VkKHQpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgiZnJvemVuIix0KSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsdCxlKSkpLHRoaXMuX2dyaWQmJnRoaXMuX2dyaWQuX2Zyb3plbkNlbGxzQ2hhbmdlZCYmdGhpcy5fZ3JpZC5fZnJvemVuQ2VsbHNDaGFuZ2VkKCl9X2xhc3RGcm96ZW5DaGFuZ2VkKHQpe3RoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PnRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibGFzdC1mcm96ZW4iLHQsZSkpKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJih0aGlzLnBhcmVudEVsZW1lbnQuX2xhc3RGcm96ZW49dCl9X3BhdGhPckhlYWRlckNoYW5nZWQodCxlLG4saSxyLG8sYSxzLGwpe2NvbnN0IGM9dm9pZCAwIT09ZTshYSYmIWwmJmMmJm4mJnRoaXMuX19zZXRUZXh0Q29udGVudChuLl9jb250ZW50LGUpLHQmJnIudmFsdWUmJihvfHxzfHx0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHZvaWQgMCwoKGUsbix7aXRlbTppfSk9PnRoaXMuX19zZXRUZXh0Q29udGVudChlLHRoaXMuZ2V0KHQsaSkpKSxyLnZhbHVlKSxhfHxsfHxjfHwhbnx8bnVsbD09PWV8fHRoaXMuX19zZXRUZXh0Q29udGVudChuLl9jb250ZW50LHRoaXMuX2dlbmVyYXRlSGVhZGVyKHQpKSksbiYmdGhpcy5fZ3JpZC5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkobi5wYXJlbnRFbGVtZW50KX1fX3NldFRleHRDb250ZW50KHQsZSl7dC50ZXh0Q29udGVudCE9PWUmJih0LnRleHRDb250ZW50PWUpfV9nZW5lcmF0ZUhlYWRlcih0KXtyZXR1cm4gdC5zdWJzdHIodC5sYXN0SW5kZXhPZigiLiIpKzEpLnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tL2csIiAiKS5yZXBsYWNlKC9eLi8sKHQ9PnQudG9VcHBlckNhc2UoKSkpfV90b2dnbGVBdHRyaWJ1dGUodCxlLG4pe24uaGFzQXR0cmlidXRlKHQpPT09IWUmJihlP24uc2V0QXR0cmlidXRlKHQsIiIpOm4ucmVtb3ZlQXR0cmlidXRlKHQpKX1fcmVvcmRlclN0YXR1c0NoYW5nZWQodCl7dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zZXRBdHRyaWJ1dGUoInJlb3JkZXItc3RhdHVzIix0KSkpfV9yZXNpemFibGVDaGFuZ2VkKHQsZSl7dm9pZCAwIT09dCYmdm9pZCAwIT09ZSYmZSYmW2VdLmNvbmNhdCh0aGlzLl9lbXB0eUNlbGxzKS5mb3JFYWNoKChlPT57aWYoZSl7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0icmVzaXplLWhhbmRsZSJdJyk7aWYobiYmZS5yZW1vdmVDaGlsZChuKSx0KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwicmVzaXplLWhhbmRsZSIpLGUuYXBwZW5kQ2hpbGQodCl9fX0pKX1fdGV4dEFsaWduQ2hhbmdlZCh0KXtpZih2b2lkIDA9PT10KXJldHVybjtpZigtMT09PVsic3RhcnQiLCJlbmQiLCJjZW50ZXIiXS5pbmRleE9mKHQpKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigndGV4dEFsaWduIGNhbiBvbmx5IGJlIHNldCBhcyAic3RhcnQiLCAiZW5kIiBvciAiY2VudGVyIicpO2xldCBlOyJsdHIiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ncmlkKS5kaXJlY3Rpb24/InN0YXJ0Ij09PXQ/ZT0ibGVmdCI6ImVuZCI9PT10JiYoZT0icmlnaHQiKToic3RhcnQiPT09dD9lPSJyaWdodCI6ImVuZCI9PT10JiYoZT0ibGVmdCIpLHRoaXMuX2FsbENlbGxzLmZvckVhY2goKG49PntuLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj10LGdldENvbXB1dGVkU3R5bGUobi5fY29udGVudCkudGV4dEFsaWduIT09dCYmKG4uX2NvbnRlbnQuc3R5bGUudGV4dEFsaWduPWUpfSkpfV9oaWRkZW5DaGFuZ2VkKHQpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgiaGlkZGVuIix0KSwhIXQhPSEhdGhpcy5fcHJldmlvdXNIaWRkZW4mJnRoaXMuX2dyaWQmJighMD09PXQmJnRoaXMuX2FsbENlbGxzLmZvckVhY2goKHQ9Pnt0Ll9jb250ZW50LnBhcmVudE5vZGUmJnQuX2NvbnRlbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0Ll9jb250ZW50KX0pKSx0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkPVRuLmRlYm91bmNlKHRoaXMuX2dyaWQuX2RlYm91bmNlckhpZGRlbkNoYW5nZWQsX3QsKCgpPT57dGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fcmVuZGVyQ29sdW1uVHJlZSYmdGhpcy5fZ3JpZC5fcmVuZGVyQ29sdW1uVHJlZSh0aGlzLl9ncmlkLl9jb2x1bW5UcmVlKX0pKSx0aGlzLl9ncmlkLl91cGRhdGVMYXN0RnJvemVuJiZ0aGlzLl9ncmlkLl91cGRhdGVMYXN0RnJvemVuKCksdGhpcy5fZ3JpZC5ub3RpZnlSZXNpemUmJnRoaXMuX2dyaWQubm90aWZ5UmVzaXplKCksdGhpcy5fZ3JpZC5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24mJnRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCkpLHRoaXMuX3ByZXZpb3VzSGlkZGVuPXR9fTtjbGFzcyBuS3QgZXh0ZW5kcyhlS3QodyR0KHllKSkpe3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtY29sdW1uIn1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57d2lkdGg6e3R5cGU6U3RyaW5nLHZhbHVlOiIxMDBweCJ9LGZsZXhHcm93Ont0eXBlOk51bWJlcix2YWx1ZToxfSxyZW5kZXJlcjpGdW5jdGlvbixwYXRoOnt0eXBlOlN0cmluZ30sYXV0b1dpZHRoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9ib2R5VGVtcGxhdGU6e3R5cGU6T2JqZWN0fSxfY2VsbHM6QXJyYXl9fX1jdXN0b21FbGVtZW50cy5kZWZpbmUobkt0LmlzLG5LdCksCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBWYWFkaW4gTHRkLgogICAgICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgICovCiRYdCgidmFhZGluLWdyaWQiLEdYdGAKICAgIEBrZXlmcmFtZXMgdmFhZGluLWdyaWQtYXBwZWFyIHsKICAgICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KICAgIH0KCiAgICA6aG9zdCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBhbmltYXRpb246IDFtcyB2YWFkaW4tZ3JpZC1hcHBlYXI7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzY3JvbGxlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBsZWZ0OiAwOwogICAgfQoKICAgIDpob3N0KFtoZWlnaHQtYnktcm93c10pIHsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIDpob3N0KFtoZWlnaHQtYnktcm93c10pICNzY3JvbGxlciB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAjdGFibGUgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdXRsaW5lOiBub25lOwogICAgICAvKiBXb3JrYXJvdW5kIGZvciBhIERlc2t0b3AgU2FmYXJpIGJ1ZzogbmV3IHN0YWNraW5nIGNvbnRleHQgaGVyZSBwcmV2ZW50cyB0aGUgc2Nyb2xsYmFyIGZyb20gZ2V0dGluZyBoaWRkZW4gKi8KICAgICAgei1pbmRleDogMDsKICAgIH0KCiAgICAjaGVhZGVyLAogICAgI2Zvb3RlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CiAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgei1pbmRleDogMTsKICAgIH0KCiAgICAjaGVhZGVyIHsKICAgICAgdG9wOiAwOwogICAgfQoKICAgIHRoIHsKICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgIH0KCiAgICAvKiBTYWZhcmkgZG9lc24ndCB3b3JrIHdpdGggImluaGVyaXQiICovCiAgICBbc2FmYXJpXSB0aCB7CiAgICAgIHRleHQtYWxpZ246IGluaXRpYWw7CiAgICB9CgogICAgI2Zvb3RlciB7CiAgICAgIGJvdHRvbTogMDsKICAgIH0KCiAgICAjaXRlbXMgewogICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbGVmdDogMDsKICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBtYXJnaW46IDA7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtsb2FkaW5nXSBbcGFydH49J2JvZHktY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAjaXRlbXMgW3BhcnR+PSdyb3cnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIH0KCiAgICAjaXRlbXMgW3BhcnR+PSdyb3cnXTplbXB0eSB7CiAgICAgIGhlaWdodDogMWVtOwogICAgfQoKICAgIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CgogICAgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgYm90dG9tOiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgcGFkZGluZzogMDsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB9CgogICAgW2hpZGRlbl0gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgW2Zyb3plbl0gewogICAgICB6LWluZGV4OiAyOwogICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgfQoKICAgIFtuby1zY3JvbGxiYXJzXVtzYWZhcmldICN0YWJsZSwKICAgIFtuby1zY3JvbGxiYXJzXVtmaXJlZm94XSAjdGFibGUgewogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC8qIFJlb3JkZXJpbmcgc3R5bGVzICovCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXSwKICAgICNzY3JvbGxlcltuby1jb250ZW50LXBvaW50ZXItZXZlbnRzXSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBvcGFjaXR5OiAwLjU7CgogICAgICAvKiBQcmV2ZW50IG92ZXJmbG93aW5nIHRoZSBncmlkIGluIEZpcmVmb3ggKi8KICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgfQoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgewogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAvKiBSZXNpemluZyBzdHlsZXMgKi8KICAgIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgei1pbmRleDogMTsKICAgIH0KCiAgICBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBjb250ZW50OiAnJzsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB3aWR0aDogMzVweDsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgfQoKICAgIFtsYXN0LWNvbHVtbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSwKICAgIFtsYXN0LWZyb3plbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHdpZHRoOiAxOHB4OwogICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgIHJpZ2h0OiAwOwogICAgfQoKICAgICNzY3JvbGxlcltjb2x1bW4tcmVzaXppbmddIHsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAvKiBTaXplciBzdHlsZXMgKi8KICAgICNzaXplciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgICNzaXplciBbcGFydH49J2RldGFpbHMtY2VsbCddIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzaXplciBbcGFydH49J2NlbGwnXVtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzaXplciBbcGFydH49J2NlbGwnXSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBmbGV4LXNocmluazogMDsKICAgICAgbGluZS1oZWlnaHQ6IDA7CiAgICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1heC1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ106OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICAgIDpob3N0KFtkaXI9J3J0bCddKSAjaXRlbXMsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2hlYWRlciwKICAgIDpob3N0KFtkaXI9J3J0bCddKSAjZm9vdGVyIHsKICAgICAgbGVmdDogYXV0bzsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBsZWZ0OiBhdXRvOwogICAgICByaWdodDogMDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ10gewogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogYXV0bzsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpOwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddKSBbbGFzdC1jb2x1bW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtZnJvemVuXSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlIHsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CiAgYCx7bW9kdWxlSWQ6InZhYWRpbi1ncmlkLXN0eWxlcyJ9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IChjKSAyMDIxIFZhYWRpbiBMdGQuCiAgICAgKiBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAgKi8KY29uc3QgaUt0PSgoKT0+e3RyeXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIlRvdWNoRXZlbnQiKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KSgpO2NsYXNzIHJLdCBleHRlbmRzKEUkdChjJHQoRCR0KFIkdChCJHQoTiR0KGokdChHJHQoVyR0KFUkdChRJHQoUCR0KEYkdCh0S3QoTyR0KEgkdChKJHQocSR0KEwkdCkpKSkpKSkpKSkpKSkpKSkpKSl7c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBfZWAKICAgICAgPGRpdgogICAgICAgIGlkPSJzY3JvbGxlciIKICAgICAgICBzYWZhcmkkPSJbW19zYWZhcmldXSIKICAgICAgICBpb3MkPSJbW19pb3NdXSIKICAgICAgICBsb2FkaW5nJD0iW1tsb2FkaW5nXV0iCiAgICAgICAgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZCQ9IltbY29sdW1uUmVvcmRlcmluZ0FsbG93ZWRdXSIKICAgICAgPgogICAgICAgIDx0YWJsZSBpZD0idGFibGUiIHJvbGU9ImdyaWQiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPSJ0cnVlIiB0YWJpbmRleD0iMCI+CiAgICAgICAgICA8Y2FwdGlvbiBpZD0ic2l6ZXIiIHBhcnQ9InJvdyI+PC9jYXB0aW9uPgogICAgICAgICAgPHRoZWFkIGlkPSJoZWFkZXIiIHJvbGU9InJvd2dyb3VwIj48L3RoZWFkPgogICAgICAgICAgPHRib2R5IGlkPSJpdGVtcyIgcm9sZT0icm93Z3JvdXAiPjwvdGJvZHk+CiAgICAgICAgICA8dGZvb3QgaWQ9ImZvb3RlciIgcm9sZT0icm93Z3JvdXAiPjwvdGZvb3Q+CiAgICAgICAgPC90YWJsZT4KCiAgICAgICAgPGRpdiBwYXJ0PSJyZW9yZGVyLWdob3N0Ij48L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGlkPSJmb2N1c2V4aXQiIHRhYmluZGV4PSIwIj48L2Rpdj4KICAgIGB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tZ3JpZCJ9c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9jb2x1bW5UcmVlQ2hhbmdlZChfY29sdW1uVHJlZSwgX2NvbHVtblRyZWUuKikiXX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X3NhZmFyaTp7dHlwZTpCb29sZWFuLHZhbHVlOi9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LF9pb3M6e3R5cGU6Qm9vbGVhbix2YWx1ZTovaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXdpbmRvdy5NU1N0cmVhbXx8Ik1hY0ludGVsIj09PW5hdmlnYXRvci5wbGF0Zm9ybSYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjF9LF9maXJlZm94Ont0eXBlOkJvb2xlYW4sdmFsdWU6bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKT4tMX0sX2FuZHJvaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTovYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LF90b3VjaERldmljZTp7dHlwZTpCb29sZWFuLHZhbHVlOmlLdH0saGVpZ2h0QnlSb3dzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfaGVpZ2h0QnlSb3dzQ2hhbmdlZCJ9LF9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIix0aGlzLl9vbkFuaW1hdGlvbkVuZCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe3N1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbiksImRpciI9PT10JiYodGhpcy5fX2lzUlRMPSJydGwiPT09bix0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpKX1fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCl7cmV0dXJuISFBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT50LmNsaWVudEhlaWdodCkpLmxlbmd0aH1fX2l0ZW1zUmVjZWl2ZWQoKXt0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZCYmIXRoaXMuX2NhY2hlLmlzTG9hZGluZygpJiZ0aGlzLl9faGFzUm93c1dpdGhDbGllbnRIZWlnaHQoKSYmKHRoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhPbmNlTG9hZGluZ0ZpbmlzaGVkPSExLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKSl9X3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHQpe3QuZm9yRWFjaCgodD0+e3Qud2lkdGg9ImF1dG8iLHQuX29yaWdGbGV4R3Jvdz10LmZsZXhHcm93LHQuZmxleEdyb3c9MH0pKSx0LmZvckVhY2goKHQ9Pnt0Ll9jdXJyZW50V2lkdGg9MCx0Ll9hbGxDZWxscy5mb3JFYWNoKChlPT57dC5fY3VycmVudFdpZHRoPU1hdGgubWF4KHQuX2N1cnJlbnRXaWR0aCxlLm9mZnNldFdpZHRoKzEpfSkpfSkpLHQuZm9yRWFjaCgodD0+e3Qud2lkdGg9YCR7dC5fY3VycmVudFdpZHRofXB4YCx0LmZsZXhHcm93PXQuX29yaWdGbGV4R3Jvdyx0Ll9jdXJyZW50V2lkdGg9dm9pZCAwLHQuX29yaWdGbGV4R3Jvdz12b2lkIDB9KSl9cmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKXtpZih0aGlzLl9jb2x1bW5UcmVlKWlmKHRoaXMuX2NhY2hlLmlzTG9hZGluZygpKXRoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhPbmNlTG9hZGluZ0ZpbmlzaGVkPSEwO2Vsc2V7Y29uc3QgdD10aGlzLl9nZXRDb2x1bW5zKCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4mJnQuYXV0b1dpZHRoKSk7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aHModCl9fV9jcmVhdGVTY3JvbGxlclJvd3ModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQ7bisrKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuX2NvbHVtblRyZWUmJnRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0sImJvZHkiLCExLCEwKSxlLnB1c2godCl9cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUmJnRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0uZm9yRWFjaCgodD0+dC5pc0Nvbm5lY3RlZCYmdC5ub3RpZnlQYXRoJiZ0Lm5vdGlmeVBhdGgoIl9jZWxscy4qIix0Ll9jZWxscykpKSwoZnVuY3Rpb24gbih0LGUsaSl7RWl8fEFpKCksVGkucHVzaChbdCxlLGldKX0pKHRoaXMsKCgpPT57dGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCksdGhpcy5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKX0pKSxlfV9nZXRSb3dUYXJnZXQoKXtyZXR1cm4gdGhpcy4kLml0ZW1zfV9jcmVhdGVDZWxsKHQpe2NvbnN0IGU9InZhYWRpbi1ncmlkLWNlbGwtY29udGVudC0iKyh0aGlzLl9jb250ZW50SW5kZXg9dGhpcy5fY29udGVudEluZGV4KzF8fDApLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmFhZGluLWdyaWQtY2VsbC1jb250ZW50Iik7bi5zZXRBdHRyaWJ1dGUoInNsb3QiLGUpO2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtpLmlkPWUucmVwbGFjZSgiLWNvbnRlbnQtIiwiLSIpLGkuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZCI9PT10PyJncmlkY2VsbCI6ImNvbHVtbmhlYWRlciIpO2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2xvdCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSgibmFtZSIsZSksaS5hcHBlbmRDaGlsZChyKSxpLl9jb250ZW50PW4sbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCgoKT0+e2lmKHdpbmRvdy5jaHJvbWUpe2NvbnN0IHQ9KCk9PntuLmNvbnRhaW5zKHRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50KXx8aS5mb2N1cygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQsITApfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKX1lbHNlIHNldFRpbWVvdXQoKCgpPT57bi5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fGkuZm9jdXMoKX0pKX0pKSxpfV91cGRhdGVSb3codCxlLG4saSxyKXtuPW58fCJib2R5Ijtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQuX3ZhY2FudD0hMCkpLHQuaW5uZXJIVE1MPSIiLCJzaXplciIhPT10LmlkJiYodC5oaWRkZW49ITApLGUuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCgoZSxhLHMpPT57bGV0IGw7aWYoImJvZHkiPT09bil7aWYoZS5fY2VsbHM9ZS5fY2VsbHN8fFtdLGw9ZS5fY2VsbHMuZmlsdGVyKCh0PT50Ll92YWNhbnQpKVswXSxsfHwobD10aGlzLl9jcmVhdGVDZWxsKCJ0ZCIpLGUuX2NlbGxzLnB1c2gobCkpLGwuc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBib2R5LWNlbGwiKSx0LmFwcGVuZENoaWxkKGwpLGE9PT1zLmxlbmd0aC0xJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikpe3RoaXMuX2RldGFpbHNDZWxscz10aGlzLl9kZXRhaWxzQ2VsbHN8fFtdO2NvbnN0IGU9dGhpcy5fZGV0YWlsc0NlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF18fHRoaXMuX2NyZWF0ZUNlbGwoInRkIik7LTE9PT10aGlzLl9kZXRhaWxzQ2VsbHMuaW5kZXhPZihlKSYmdGhpcy5fZGV0YWlsc0NlbGxzLnB1c2goZSksZS5fY29udGVudC5wYXJlbnRFbGVtZW50fHxvLmFwcGVuZENoaWxkKGUuX2NvbnRlbnQpLHRoaXMuX2NvbmZpZ3VyZURldGFpbHNDZWxsKGUpLHQuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYTExeVNldFJvd0RldGFpbHNDZWxsKHQsZSksZS5fdmFjYW50PSExfWUubm90aWZ5UGF0aCYmIXImJmUubm90aWZ5UGF0aCgiX2NlbGxzLioiLGUuX2NlbGxzKX1lbHNle2NvbnN0IHI9ImhlYWRlciI9PT1uPyJ0aCI6InRkIjtpfHwidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PWUubG9jYWxOYW1lPyhsPWVbYF8ke259Q2VsbGBdfHx0aGlzLl9jcmVhdGVDZWxsKHIpLGwuX2NvbHVtbj1lLHQuYXBwZW5kQ2hpbGQobCksZVtgXyR7bn1DZWxsYF09bCk6KGUuX2VtcHR5Q2VsbHM9ZS5fZW1wdHlDZWxsc3x8W10sbD1lLl9lbXB0eUNlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF18fHRoaXMuX2NyZWF0ZUNlbGwociksbC5fY29sdW1uPWUsdC5hcHBlbmRDaGlsZChsKSwtMT09PWUuX2VtcHR5Q2VsbHMuaW5kZXhPZihsKSYmZS5fZW1wdHlDZWxscy5wdXNoKGwpKSxsLnNldEF0dHJpYnV0ZSgicGFydCIsYGNlbGwgJHtufS1jZWxsYCksdGhpcy5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkodCl9bC5fY29udGVudC5wYXJlbnRFbGVtZW50fHxvLmFwcGVuZENoaWxkKGwuX2NvbnRlbnQpLGwuX3ZhY2FudD0hMSxsLl9jb2x1bW49ZX0pKSx0aGlzLmFwcGVuZENoaWxkKG8pLHRoaXMuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpLHRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KX1fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKGU9Pntjb25zdCBuPWUuX2NvbHVtbjtpZihuLl9lbXB0eUNlbGxzJiZuLl9lbXB0eUNlbGxzLmluZGV4T2YoZSk+LTEpcmV0dXJuITE7aWYodC5wYXJlbnRFbGVtZW50PT09dGhpcy4kLmhlYWRlcil7aWYobi5oZWFkZXJSZW5kZXJlcnx8bi5faGVhZGVyVGVtcGxhdGUpcmV0dXJuITA7aWYobnVsbD09PW4uaGVhZGVyKXJldHVybiExO2lmKG4ucGF0aHx8dm9pZCAwIT09bi5oZWFkZXIpcmV0dXJuITB9ZWxzZSBpZihuLmZvb3RlclJlbmRlcmVyfHxuLl9mb290ZXJUZW1wbGF0ZSlyZXR1cm4hMH0pKTt0LmhpZGRlbiE9PSFlLmxlbmd0aCYmKHQuaGlkZGVuPSFlLmxlbmd0aCx0aGlzLm5vdGlmeVJlc2l6ZSgpKX1fdXBkYXRlU2Nyb2xsZXJJdGVtKHQsZSl7dGhpcy5fcHJldmVudFNjcm9sbGVyUm90YXRpbmdDZWxsRm9jdXModCxlKSx0aGlzLl9jb2x1bW5UcmVlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJmaXJzdCIsMD09PWUsdCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJvZGQiLGUlMix0KSx0aGlzLl9hMTF5VXBkYXRlUm93Um93aW5kZXgodCxlKSx0aGlzLl9nZXRJdGVtKGUsdCkpfV9jb2x1bW5UcmVlQ2hhbmdlZCh0KXt0aGlzLl9yZW5kZXJDb2x1bW5UcmVlKHQpLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKX1fcmVuZGVyQ29sdW1uVHJlZSh0KXtmb3IoQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKGU9PnRoaXMuX3VwZGF0ZVJvdyhlLHRbdC5sZW5ndGgtMV0sbnVsbCwhMSwhMCkpKTt0aGlzLiQuaGVhZGVyLmNoaWxkcmVuLmxlbmd0aDx0Lmxlbmd0aDspe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTt0LnNldEF0dHJpYnV0ZSgicGFydCIsInJvdyIpLHQuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93IiksdGhpcy4kLmhlYWRlci5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7ZS5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSxlLnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuJC5mb290ZXIuYXBwZW5kQ2hpbGQoZSl9Zm9yKDt0aGlzLiQuaGVhZGVyLmNoaWxkcmVuLmxlbmd0aD50Lmxlbmd0aDspdGhpcy4kLmhlYWRlci5yZW1vdmVDaGlsZCh0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkKSx0aGlzLiQuZm9vdGVyLnJlbW92ZUNoaWxkKHRoaXMuJC5mb290ZXIuZmlyc3RFbGVtZW50Q2hpbGQpO0FycmF5LmZyb20odGhpcy4kLmhlYWRlci5jaGlsZHJlbikuZm9yRWFjaCgoKGUsbik9PnRoaXMuX3VwZGF0ZVJvdyhlLHRbbl0sImhlYWRlciIsbj09PXQubGVuZ3RoLTEpKSksQXJyYXkuZnJvbSh0aGlzLiQuZm9vdGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgoZSxuKT0+dGhpcy5fdXBkYXRlUm93KGUsdFt0Lmxlbmd0aC0xLW5dLCJmb290ZXIiLDA9PT1uKSkpLHRoaXMuX3VwZGF0ZVJvdyh0aGlzLiQuc2l6ZXIsdFt0Lmxlbmd0aC0xXSksdGhpcy5fcmVzaXplSGFuZGxlcigpLHRoaXMuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpLHRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpLHRoaXMuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCksdGhpcy5fYTExeVVwZGF0ZUhlYWRlclJvd3MoKSx0aGlzLl9hMTF5VXBkYXRlRm9vdGVyUm93cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKXt0aGlzLl9maXJlZm94JiYodGhpcy4kLml0ZW1zLnN0eWxlLnBhZGRpbmdCb3R0b209MCx0aGlzLmhlaWdodEJ5Um93c3x8KHRoaXMuJC5pdGVtcy5zdHlsZS5wYWRkaW5nQm90dG9tPWAke3RoaXMuJC5mb290ZXIub2Zmc2V0SGVpZ2h0fXB4YCkpLHRoaXMuX2lvcyYmIXdpbmRvdy5DU1Muc3VwcG9ydHMoInBvc2l0aW9uIiwic3RpY2t5IikmJih0aGlzLiQudGFibGUuc3R5bGUuaGVpZ2h0PSIiLHRoaXMuJC50YWJsZS5zdHlsZS5taW5IZWlnaHQ9IjEwMCUiLHRoaXMuJC50YWJsZS5zdHlsZS5tYXhIZWlnaHQ9IjEwMCUiLHNldFRpbWVvdXQoKCgpPT50aGlzLiQudGFibGUuc3R5bGUuaGVpZ2h0PWAke3RoaXMuJC5zY3JvbGxlci5vZmZzZXRIZWlnaHR9cHhgKSkpfV91cGRhdGVJdGVtKHQsZSl7dC5faXRlbT1lO2NvbnN0IG49dGhpcy5fX2dldFJvd01vZGVsKHQpO3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2VsZWN0ZWQiLG4uc2VsZWN0ZWQsdCksdGhpcy5fYTExeVVwZGF0ZVJvd1NlbGVjdGVkKHQsbi5zZWxlY3RlZCksdGhpcy5fYTExeVVwZGF0ZVJvd0xldmVsKHQsbi5sZXZlbCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJleHBhbmRlZCIsbi5leHBhbmRlZCx0KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRldGFpbHMtb3BlbmVkIix0aGlzLl9pc0RldGFpbHNPcGVuZWQoZSksdCksKHRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZXx8dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpJiZ0aGlzLl90b2dnbGVEZXRhaWxzQ2VsbCh0LGUpLHRoaXMuX2dlbmVyYXRlQ2VsbENsYXNzTmFtZXModCxuKSx0aGlzLl9maWx0ZXJEcmFnQW5kRHJvcCh0LG4pLEFycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaCgodD0+e2lmKHQuX3JlbmRlcmVyKXtjb25zdCBlPXQuX2NvbHVtbnx8dGhpczt0Ll9yZW5kZXJlci5jYWxsKGUsdC5fY29udGVudCxlLG4pfWVsc2UgdC5faW5zdGFuY2UmJih0Ll9pbnN0YW5jZS5fX2RldGFpbHNPcGVuZWRfXz1uLmRldGFpbHNPcGVuZWQsdC5faW5zdGFuY2UuX19zZWxlY3RlZF9fPW4uc2VsZWN0ZWQsdC5faW5zdGFuY2UuX19sZXZlbF9fPW4ubGV2ZWwsdC5faW5zdGFuY2UuX19leHBhbmRlZF9fPW4uZXhwYW5kZWQsdC5faW5zdGFuY2Uuc2V0UHJvcGVydGllcyhuKSl9KSksdGhpcy5fZGVib3VuY2VyVXBkYXRlSGVpZ2h0cz1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJVcGRhdGVIZWlnaHRzLGd0LmFmdGVyKDEpLCgoKT0+e3RoaXMuX3VwZGF0ZU1ldHJpY3MoKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9KSl9X3Jlc2l6ZUhhbmRsZXIoKXt0aGlzLl91cGRhdGVEZXRhaWxzQ2VsbEhlaWdodHMoKSx0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fcmVzaXplSGFuZGxlciwhMCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJNZWFzdXJlbWVudHMoKSx0aGlzLl9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKX1fb25BbmltYXRpb25FbmQodCl7MD09PXQuYW5pbWF0aW9uTmFtZS5pbmRleE9mKCJ2YWFkaW4tZ3JpZC1hcHBlYXIiKSYmKHRoaXMuX3JlbmRlcigpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9faXRlbXNSZWNlaXZlZCgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9fc2Nyb2xsVG9QZW5kaW5nSW5kZXgoKSx0aGlzLiQudGFibGUuc3R5bGUud2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc9InRvdWNoIn0pKSl9X3RvZ2dsZUF0dHJpYnV0ZSh0LGUsbil7bi5oYXNBdHRyaWJ1dGUodCk9PT0hZSYmKGU/bi5zZXRBdHRyaWJ1dGUodCwiIik6bi5yZW1vdmVBdHRyaWJ1dGUodCkpfV9fZ2V0Um93TW9kZWwodCl7cmV0dXJue2luZGV4OnQuaW5kZXgsaXRlbTp0Ll9pdGVtLGxldmVsOnRoaXMuX2dldEluZGV4TGV2ZWwodC5pbmRleCksZXhwYW5kZWQ6dGhpcy5faXNFeHBhbmRlZCh0Ll9pdGVtKSxzZWxlY3RlZDp0aGlzLl9pc1NlbGVjdGVkKHQuX2l0ZW0pLGRldGFpbHNPcGVuZWQ6ISghdGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlJiYhdGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSl9fXJlbmRlcigpe3RoaXMuX2NvbHVtblRyZWUmJih0aGlzLl9jb2x1bW5UcmVlLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9PnQuX3JlbmRlckhlYWRlckFuZEZvb3RlcigpKSl9KSksdGhpcy5fdXBkYXRlKCkpfW5vdGlmeVJlc2l6ZSgpe3N1cGVyLm5vdGlmeVJlc2l6ZSgpfV9oZWlnaHRCeVJvd3NDaGFuZ2VkKHQsZSl7KHR8fGUpJiZ0aGlzLm5vdGlmeVJlc2l6ZSgpfV9fZm9yY2VSZWZsb3coKXt0aGlzLl9kZWJvdW5jZXJGb3JjZVJlZmxvdz1Ubi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJGb3JjZVJlZmxvdyxfdCwoKCk9Pnt0aGlzLiQuc2Nyb2xsZXIuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsc2V0VGltZW91dCgoKCk9PnRoaXMuJC5zY3JvbGxlci5zdHlsZS5vdmVyZmxvdz0iIikpfSkpfX1jdXN0b21FbGVtZW50cy5kZWZpbmUockt0LmlzLHJLdCk7bGV0IG9LdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ydW49IiJ9X2NzdlVybCh0LGUsbil7cmV0dXJuIGU/aU8obih0LGUpLHtmb3JtYXQ6ImNzdiJ9KToiIn1fanNvblVybCh0LGUsbil7cmV0dXJuIGU/bih0LGUpOiIifV9jc3ZOYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9LmNzdmA6IiJ9X2pzb25OYW1lKHQsZSl7cmV0dXJuIGU/YHJ1bi0ke2V9LXRhZy0ke3R9Lmpzb25gOiIifX07b0t0LnRlbXBsYXRlPV9lYAogICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgIGxhYmVsPSJydW4gdG8gZG93bmxvYWQiCiAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3J1bn19IgogICAgPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iCiAgICAgICAgPkNTVjwvYQogICAgICA+PCEtLQogICAgICAtLT48YQogICAgICAgIGRvd25sb2FkPSJbW19qc29uTmFtZSh0YWcsIF9ydW4pXV0iCiAgICAgICAgaHJlZj0iW1tfanNvblVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5KU09OPC9hCiAgICAgID4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICBhIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDAuMmVtOwogICAgICB9CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxvS3QucHJvdG90eXBlLCJfcnVuIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxvS3QucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLG9LdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxvS3QucHJvdG90eXBlLCJ1cmxGbiIsdm9pZCAwKSxvS3Q9dChbaSgidGYtZG93bmxvYWRlciIpXSxvS3QpLG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7bGV0IGFLdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9bnVsbCx0aGlzLl9sb2FkRGF0YUNhbGxiYWNrPSh0LGUsbik9PntpZihudWxsPT1uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIGRhdGEgZm9yOiIsZSk7Y29uc3QgaT1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSkscj10aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGUpO3Quc2V0U2VyaWVzTWV0YWRhdGEocixlKSx0LnNldFNlcmllc0RhdGEocixpKX0sdGhpcy5nZXREYXRhTG9hZFVybD0oe3RhZzp0LHJ1bjplfSk9Pl9yKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOmV9KSksdGhpcy5fZG93bmxvYWRVcmxGbj0odCxlKT0+dGhpcy5nZXREYXRhTG9hZFVybCh7dGFnOnQscnVuOmV9KSx0aGlzLnJlcXVlc3REYXRhPSh0LGUsbik9PnRoaXMuaW5Db2xhYj90aGlzLl9yZXF1ZXN0RGF0YUdldCh0LGUsbik6dGhpcy5fcmVxdWVzdERhdGFQb3N0KHQsZSxuKSx0aGlzLl9yZXF1ZXN0RGF0YUdldD0odCxlLG4pPT57Y29uc3QgaT1fcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49aU8oaSx7dGFnOnQudGFnLHJ1bjp0LnJ1bn0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3JlcXVlc3REYXRhUG9zdD0odCxlLG4pPT57dmFyIGk7Y29uc3Qgcj1fcigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnNfbXVsdGlydW4iKSxvPW5ldyBNYXA7Zm9yKGNvbnN0e3RhZzplLHJ1bjpufW9mIHQpe2xldCB0PW8uZ2V0KGUpO251bGw9PXQmJm8uc2V0KGUsdD1bXSksdC5wdXNoKG4pfWNvbnN0IGE9bnVsbCE9PShpPXRoaXMuYmF0Y2hTaXplKSYmdm9pZCAwIT09aT9pOjY0LHM9W107Zm9yKGNvbnN0W3QsZV1vZiBvKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9YSlzLnB1c2goe3RhZzp0LHJ1bnM6ZS5zbGljZShuLG4rYSl9KTtQcm9taXNlLmFsbChzLm1hcCgoKHt0YWc6dCxydW5zOm59KT0+dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHIse3RhZzp0LHJ1bnM6bn0pLnRoZW4oKGk9Pntmb3IoY29uc3QgciBvZiBuKXtjb25zdCBuPXt0YWc6dCxydW46cn07T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscik/ZSh7aXRlbTpuLGRhdGE6aVtyXX0pOmUoe2l0ZW06bixkYXRhOm51bGx9KX19KSkpKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX2dldERhdGFMb2FkTmFtZT10PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9cEN0LnNsaWNlKCksZT10LmZpbmRJbmRleCgodD0+Ik5hbWUiPT10LnRpdGxlKSk7cmV0dXJuIHQuc3BsaWNlKGUsMSx7dGl0bGU6Ik5hbWUiLGV2YWx1YXRlOnQ9Pntjb25zdCBlPXQuZGF0YXNldC5tZXRhZGF0YSgpLm1ldGE7cmV0dXJuIHRoaXMuX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGUpfX0pLHR9KSgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKX1yZWxvYWQoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWxvYWQoKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTt0JiZ0LnJlc2V0RG9tYWluKCl9X3VwZGF0ZURvd25sb2FkTGluaygpe2NvbnN0IHQ9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkuZXhwb3J0QXNTdmdTdHJpbmcoKTt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiI3N2Z0xpbmsiKS5ocmVmPWBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YnRvYSh0KX1gfV9ydW5zRnJvbURhdGEodCl7cmV0dXJuIHQubWFwKCh0PT50LnJ1bikpfV9nZXREYXRhU2VyaWVzKCl7cmV0dXJuIHRoaXMuZGF0YVRvTG9hZC5tYXAoKHQ9PnRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0odCkpKX1fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bSh7cnVuOnQsZXhwZXJpbWVudDplPXtuYW1lOiJfZGVmYXVsdCJ9fSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFtlLm5hbWUsdF0pfV9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bSh0KXtyZXR1cm4gdC5ydW59X2dldENvbG9yU2NhbGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuY29sb3JTY2FsZT90aGlzLmNvbG9yU2NhbGU6e3NjYWxlOnQ9Pntjb25zdFssZV09SlNPTi5wYXJzZSh0KTtyZXR1cm4gR1IoZSl9fX19O2FLdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2dldENvbG9yU2NhbGUoY29sb3JTY2FsZSldXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfZ2V0RGF0YVNlcmllcyhkYXRhVG9Mb2FkLiopXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW2RhdGFUb0xvYWRdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLW5hbWU9IltbX2dldERhdGFMb2FkTmFtZV1dIgogICAgICAgIGdldC1kYXRhLWxvYWQtdXJsPSJbW2dldERhdGFMb2FkVXJsXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW3JlcXVlc3REYXRhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19sb2FkRGF0YUNhbGxiYWNrXV0iCiAgICAgICAgbG9hZC1rZXk9IltbdGFnXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICB0YWctbWV0YWRhdGE9IltbdGFnTWV0YWRhdGFdXSIKICAgICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj0iYXV0byIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8cGFwZXItbWVudS1idXR0b24gb24tcGFwZXItZHJvcGRvd24tb3Blbj0iX3VwZGF0ZURvd25sb2FkTGluayI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiCiAgICAgICAgICAgIGljb249ImZpbGUtZG93bmxvYWQiCiAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPGEgaWQ9InN2Z0xpbmsiIGRvd25sb2FkPSJbW3RhZ11dLnN2ZyI+CiAgICAgICAgICAgICAgICBEb3dubG9hZCBDdXJyZW50IENoYXJ0IGFzIFNWRwogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItbWVudS1idXR0b24+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDx0Zi1kb3dubG9hZGVyCiAgICAgICAgICAgIHJ1bnM9IltbX3J1bnNGcm9tRGF0YShkYXRhVG9Mb2FkKV1dIgogICAgICAgICAgICB0YWc9IltbdGFnXV0iCiAgICAgICAgICAgIHVybC1mbj0iW1tfZG93bmxvYWRVcmxGbl1dIgogICAgICAgICAgPjwvdGYtZG93bmxvYWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWFyZ2luOiA1cHg7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB9CgogICAgICAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQoKICAgICAgI2J1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW46IDJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgICAgcGFwZXItaXRlbSBhIHsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGFLdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sYUt0LnByb3RvdHlwZSwiZGF0YVRvTG9hZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhS3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGFLdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGFLdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLGFLdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sYUt0LnByb3RvdHlwZSwic2hvd0Rvd25MaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGFLdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sYUt0LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGFLdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGFLdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYUt0LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sYUt0LnByb3RvdHlwZSwiYmF0Y2hTaXplIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxhS3QucHJvdG90eXBlLCJpbkNvbGFiIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGFLdC5wcm90b3R5cGUsIl9sb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sYUt0LnByb3RvdHlwZSwiZ2V0RGF0YUxvYWRVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYUt0LnByb3RvdHlwZSwiX2Rvd25sb2FkVXJsRm4iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxhS3QucHJvdG90eXBlLCJyZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxhS3QucHJvdG90eXBlLCJfZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGFLdC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGFLdC5wcm90b3R5cGUsIl9sb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sYUt0LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLGFLdD10KFtpKCJ0Zi1zY2FsYXItY2FyZCIpXSxhS3QpO2xldCBzS3Q9Y2xhc3MgZXh0ZW5kcygoZnVuY3Rpb24gdChlLG4pe3JldHVybihmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIE5yKHt9LGVyKGUpLHQpfSkoZSxuKX0pKFtfb10seWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZXNzaW9uR3JvdXA9bnVsbCx0aGlzLl94VHlwZT14VHQuU1RFUCx0aGlzLl9ub011bHRpRXhwZXJpbWVudHM9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e1Byb21pc2UuYWxsKHQubWFwKCh0PT50aGlzLmJhY2tlbmQubGlzdE1ldHJpY0V2YWxzKHtleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lLHNlc3Npb25OYW1lOnQucnVuLG1ldHJpY05hbWU6dC50YWd9KS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpKSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTp0PT57Y29uc3QgZT1KU09OLnBhcnNlKHQpWzFdLG49dGhpcy5faW5kZXhPZlNlc3Npb24uZ2V0KGUpO3JldHVybiBIUlsodGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2grbiklSFIubGVuZ3RoXX19fWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImlyb24tcmVzaXplIix0aGlzLnJlZHJhdy5iaW5kKHRoaXMpKX1yZWRyYXcoKXt0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT50LnJlZHJhdygpKSl9X3Nlc3Npb25Hcm91cENoYW5nZWQoKXt0aGlzLnNlc3Npb25Hcm91cCYmMCE9T2JqZWN0LmtleXModGhpcy5zZXNzaW9uR3JvdXApLmxlbmd0aD8odGhpcy5faW5kZXhPZlNlc3Npb249bmV3IE1hcCh0aGlzLnNlc3Npb25Hcm91cC5zZXNzaW9ucy5tYXAoKCh0LGUpPT5bdC5uYW1lLGVdKSkpLHRoaXMuX3Nlc3Npb25Hcm91cE5hbWVIYXNoPVlZdCh0aGlzLnNlc3Npb25Hcm91cC5uYW1lKSk6KHRoaXMuX2luZGV4T2ZTZXNzaW9uPW5ldyBNYXAsdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9MCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXNjYWxhci1jYXJkIikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dCxuPWUuZ2V0KCJ0YWciKTtlLnNldCgidGFnIiwiIiksZS5zZXQoInRhZyIsbil9KSl9X2hhdmVNZXRyaWNzKCl7cmV0dXJuIHRoaXMudmlzaWJsZVNjaGVtYSYmQXJyYXkuaXNBcnJheSh0aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MpJiZ0aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoPjB9X2hhdmVNZXRyaWNzQW5kU2Vzc2lvbkdyb3VwKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbkdyb3VwJiZ0aGlzLl9oYXZlTWV0cmljcygpfV9jb21wdXRlU2VyaWVzRm9yU2Vzc2lvbkdyb3VwTWV0cmljKHQsZSl7cmV0dXJuIG51bGw9PT10fHwwPT1PYmplY3Qua2V5cyh0KS5sZW5ndGh8fG51bGw9PT1lP1tdOnQuc2Vzc2lvbnMuZmlsdGVyKCh0PT52b2lkIDAhPT1BWXQodC5tZXRyaWNWYWx1ZXMsZS5uYW1lKSkpLm1hcCgodD0+KHt0YWc6ZS5uYW1lLHJ1bjp0Lm5hbWV9KSkpfV9jb21wdXRlVGFnTWV0YWRhdGEodCl7cmV0dXJue2Rpc3BsYXlOYW1lOndZdCh0KSxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufHwiIn19fTtzS3QudGVtcGxhdGU9X2VgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIXNlc3Npb25Hcm91cF1dIj4KICAgICAgPGRpdj4KICAgICAgICA8aDM+Tm8gc2Vzc2lvbiBncm91cCBzZWxlY3RlZDwvaDM+CiAgICAgICAgPHA+UGxlYXNlIHNlbGVjdCBhIHNlc3Npb24gZ3JvdXAgdG8gc2VlIGl0cyBtZXRyaWMtZ3JhcGhzIGhlcmUuPC9wPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9oYXZlTWV0cmljcyh2aXNpYmxlU2NoZW1hLiopXV0iPgogICAgICA8ZGl2PgogICAgICAgIDxoMz5ObyBtZXRyaWNzIGFyZSBlbmFibGVkPC9oMz4KICAgICAgICA8cD5QbGVhc2UgZW5hYmxlIHNvbWUgbWV0cmljcyB0byBzZWUgY29udGVudCBoZXJlLjwvcD4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBjbGFzcz0ibGF5b3V0IGhvcml6b250YWwgd3JhcCBzZXNzaW9uLWdyb3VwLWRldGFpbHMiPgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgIGlmPSJbW19oYXZlTWV0cmljc0FuZFNlc3Npb25Hcm91cCh2aXNpYmxlU2NoZW1hLiosIHNlc3Npb25Hcm91cCldXSIKICAgICAgPgogICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICBpdGVtcz0iW1t2aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zXV0iCiAgICAgICAgICBhcz0ibWV0cmljSW5mbyIKICAgICAgICA+CiAgICAgICAgICA8IS0tIE5vdGUgdGhhdCB3ZSBkbyBub3QgcHJvdmlkZSBhIHJlcXVlc3QtbWFuYWdlciBhdHRyaWJ1dGUgc2luY2UKICAgICAgICAgICAgICAgd2UgcHJvdmlkZSBhIGZ1bmN0aW9uIGluIHJlcXVlc3QtZGF0YSBmb3IgY2FsbGluZyB0aGUgYmFja2VuZAogICAgICAgICAgICAgICB0byBnZXQgdGhlIG1ldHJpY3MgZGF0YS4KICAgICAgICAgICAgLS0+CiAgICAgICAgICA8dGYtc2NhbGFyLWNhcmQKICAgICAgICAgICAgY2xhc3M9InNjYWxhci1jYXJkIgogICAgICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgICAgICBkYXRhLXRvLWxvYWQ9IltbX2NvbXB1dGVTZXJpZXNGb3JTZXNzaW9uR3JvdXBNZXRyaWMoc2Vzc2lvbkdyb3VwLCBtZXRyaWNJbmZvKV1dIgogICAgICAgICAgICB0YWc9IltbbWV0cmljSW5mby5uYW1lLnRhZ11dIgogICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX2NvbXB1dGVUYWdNZXRhZGF0YShtZXRyaWNJbmZvKV1dIgogICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgIG11bHRpLWV4cGVyaW1lbnRzPSJbW19ub011bHRpRXhwZXJpbWVudHNdXSIKICAgICAgICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICAgICAgICBhY3RpdmUKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtc2NhbGFyLWNhcmQ+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPCEtLSAiaXJvbi1mbGV4IiBpcyBuZWVkZWQgdG8gdXNlIHRoZSBsYXlvdXQgY2xhc3NlcyBpbiB0aGUgZGl2IGFib3ZlIC0tPgogICAgPHN0eWxlIGluY2x1ZGU9Imlyb24tZmxleCI+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHNLdC5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc0t0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc0t0LnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzS3QucHJvdG90eXBlLCJzZXNzaW9uR3JvdXAiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sc0t0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc0t0LnByb3RvdHlwZSwiX25vTXVsdGlFeHBlcmltZW50cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzS3QucHJvdG90eXBlLCJfaW5kZXhPZlNlc3Npb24iLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sc0t0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cE5hbWVIYXNoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sc0t0LnByb3RvdHlwZSwiX3JlcXVlc3REYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHNLdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW2EoInNlc3Npb25Hcm91cC4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxzS3QucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwQ2hhbmdlZCIsbnVsbCksc0t0PXQoW2koInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzIildLHNLdCk7bGV0IGxLdD1jbGFzcyBleHRlbmRzKGVyKGlsKHllKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ocGFyYW1OYW1lPXhZdCx0aGlzLl9tZXRyaWNOYW1lPXdZdH1fdmlzaWJsZVNjaGVtYU9yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtjb25zdCB0PXRoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuZ2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiKTt0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZGV0YWlsc09wZW5lZEl0ZW1zIixbXSksRGkoKTtjb25zdCBlPW5ldyBNYXA7dGhpcy5zZXNzaW9uR3JvdXBzLmZvckVhY2goKHQ9PntlLnNldCh0Lm5hbWUsdCl9KSksdGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5zZXQoImRldGFpbHNPcGVuZWRJdGVtcyIsdC5tYXAoKHQ9PmUuZ2V0KHQubmFtZSkpKS5maWx0ZXIoQm9vbGVhbikpfV9zZXNzaW9uR3JvdXBIUGFyYW0odCxlKXtyZXR1cm4gbnVsbCE9dCYmMCE9T2JqZWN0LmtleXModCkubGVuZ3RoJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodC5ocGFyYW1zLGUpP1ZZdCh0LmhwYXJhbXNbZV0pOiIifV9zZXNzaW9uR3JvdXBNZXRyaWModCxlKXtpZihudWxsPT10fHwwPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuIiI7Zm9yKGxldCBuPTA7bjx0Lm1ldHJpY1ZhbHVlcy5sZW5ndGg7KytuKXtsZXQgaT10Lm1ldHJpY1ZhbHVlc1tuXTtpZihpLm5hbWUuZ3JvdXA9PT1lLmdyb3VwJiZpLm5hbWUudGFnPT1lLnRhZylyZXR1cm4gVll0KGkudmFsdWUpfXJldHVybiIifV9yb3dOdW1iZXIodCl7cmV0dXJuIHQrMX19O2xLdC50ZW1wbGF0ZT1fZWAKICAgIDx2YWFkaW4tZ3JpZAogICAgICBjbGFzcz0ic2Vzc2lvbi1ncm91cC10YWJsZSIKICAgICAgaWQ9InNlc3Npb25Hcm91cHNUYWJsZSIKICAgICAgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZD0iIgogICAgICBpdGVtcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICA+CiAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIwIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj5UcmlhbCBJRDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+W1tpdGVtLm5hbWVdXTwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZW5hYmxlU2hvd01ldHJpY3NdXSI+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjAiIGF1dG9XaWR0aD0iIiByZXNpemFibGU9IiI+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj5TaG93IE1ldHJpY3M8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjbGFzcz0idGFibGUtY2VsbCIgY2hlY2tlZD0ie3tkZXRhaWxzT3BlbmVkfX0iPgogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbdmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc11dIgogICAgICAgIGFzPSJocGFyYW1JbmZvIgogICAgICAgIGluZGV4LWFzPSJocGFyYW1JbmRleCIKICAgICAgPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIyIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfaHBhcmFtTmFtZShocGFyYW1JbmZvKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfc2Vzc2lvbkdyb3VwSFBhcmFtKGl0ZW0sIGhwYXJhbUluZm8ubmFtZSldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZQogICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgIGl0ZW1zPSJ7e3Zpc2libGVTY2hlbWEubWV0cmljSW5mb3N9fSIKICAgICAgICBhcz0ibWV0cmljSW5mbyIKICAgICAgICBpbmRleC1hcz0ibWV0cmljSW5kZXgiCiAgICAgID4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMiIgd2lkdGg9IjEwZW0iIHJlc2l6YWJsZT0iIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX21ldHJpY05hbWUobWV0cmljSW5mbyldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX3Nlc3Npb25Hcm91cE1ldHJpYyhpdGVtLCBtZXRyaWNJbmZvLm5hbWUpXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgY2xhc3M9InJvdy1kZXRhaWxzIj4KICAgICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW2l0ZW1dXSIKICAgICAgICAgIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIKICAgICAgICAgIGNsYXNzPSJzZXNzaW9uLWdyb3VwLWRldGFpbHMiCiAgICAgICAgPgogICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHM+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3ZhYWRpbi1ncmlkPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgewogICAgICAgIC0tbHVtby1iYXNlLWNvbG9yOiAjMzAzMDMwOwogICAgICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6ICNmZmY7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHZhYWRpbi1ncmlkIHsKICAgICAgICAtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogIzUwNTA1MDsKICAgICAgfQoKICAgICAgLnRhYmxlLWNlbGwgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAudGFibGUtaGVhZGVyIHsKICAgICAgICAvKiBsaW5lLWJyZWFrIG92ZXJmbG93aW5nIGNvbHVtbiBoZWFkZXJzICovCiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zZXNzaW9uLWdyb3VwLXRhYmxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtZGV0YWlscyB7CiAgICAgICAgaGVpZ2h0OiAzNjBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbEt0LnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sbEt0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGxLdC5wcm90b3R5cGUsImVuYWJsZVNob3dNZXRyaWNzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGxLdC5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbEt0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbYSgidmlzaWJsZVNjaGVtYS4qIiwic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxsS3QucHJvdG90eXBlLCJfdmlzaWJsZVNjaGVtYU9yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpLGxLdD10KFtpKCJ0Zi1ocGFyYW1zLXRhYmxlLXZpZXciKV0sbEt0KTtsZXQgY0t0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2Vzc2lvbkdyb3VwPW51bGwsdGhpcy52aXNpYmxlU2NoZW1hPW51bGx9X3Byb3BlcnRpZXNBcmVQb3B1bGF0ZWQodCxlKXtyZXR1cm4gbnVsbCE9dCYmbnVsbCE9ZX1fc2luZ2xldG9uU2Vzc2lvbkdyb3Vwcyh0KXtyZXR1cm4gbnVsbD09dD9bXTpbdF19fTtmdW5jdGlvbiB1S3QodCxlLG4pe2Z1bmN0aW9uIGkoKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuWzEsMl07Y29uc3RbZSxuXT1MbCh0KTtyZXR1cm4gZSE9PW4/W2Usbl06ZT4wP1suNSplLDEuNSplXTplPDA/WzEuNSplLC41KmVdOlstMSwxXX1pZigiTElORUFSIj09PW4pcmV0dXJuIFZNKCkuZG9tYWluKGkoKSkucmFuZ2UoW2UsMF0pO2lmKCJMT0ciPT09bil7Y29uc3Qgbj1pKCk7cmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/dUt0KHQsZSwiTElORUFSIik6S00oKS5kb21haW4obikucmFuZ2UoW2UsMF0pfWlmKCJRVUFOVElMRSI9PT1uKXtjb25zdCBuPTIwLGk9emwobikubWFwKCh0PT5lLXQqZS8obi0xKSkpO3JldHVybiAwPT09dC5sZW5ndGgmJih0PVsxXSksb0UoKS5kb21haW4oU2UuZXhwb3J0cy51bmlxKHQpKS5yYW5nZShpKX1pZigiTk9OX05VTUVSSUMiPT09bilyZXR1cm4gQU0oKS5kb21haW4oU2UuZXhwb3J0cy51bmlxKHQuc29ydCgpKSkucmFuZ2UoW2UsMF0pLnBhZGRpbmcoLjEpO3Rocm93IFJhbmdlRXJyb3IoIlVua25vd24gc2NhbGU6ICIrbil9dmFyIGhLdCxkS3Q7Y0t0LnRlbXBsYXRlPV9lYAogICAgPCEtLSBJZiBzZXNzaW9uR3JvdXAgb3IgdmlzaWJsZVNjaGVtYSBhcmUgbm90IHBvcHVsYXRlZCwgZG8gbm90IGRpc3BsYXkKICAgICAgICAgYW55dGhpbmcuCiAgICAgIC0tPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbW19wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHZpc2libGVTY2hlbWEsIHNlc3Npb25Hcm91cCldXSIKICAgID4KICAgICAgPCEtLSBEaXNwbGF5IG9uZSByb3cgd2l0aG91dCBhICJzaG93LW1ldHJpY3MiIGNvbHVtbiAtLT4KICAgICAgPHRmLWhwYXJhbXMtdGFibGUtdmlldwogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tfc2luZ2xldG9uU2Vzc2lvbkdyb3VwcyhzZXNzaW9uR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbWyFfcHJvcGVydGllc0FyZVBvcHVsYXRlZCh2aXNpYmxlU2NoZW1hLCBzZXNzaW9uR3JvdXApXV0iCiAgICA+CiAgICAgIDxkaXY+Q2xpY2sgb3IgaG92ZXIgb3ZlciBhIHNlc3Npb24gZ3JvdXAgdG8gZGlzcGxheSBpdHMgdmFsdWVzIGhlcmUuPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY0t0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNLdC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCksY0t0PXQoW2koInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMiKV0sY0t0KSwoZnVuY3Rpb24odCl7dC5MSU5FQVI9IkxJTkVBUiIsdC5MT0c9IkxPRyIsdC5RVUFOVElMRT0iUVVBTlRJTEUiLHQuTk9OX05VTUVSSUM9Ik5PTl9OVU1FUklDIn0pKGhLdHx8KGhLdD17fSkpO2NsYXNzIHBLdHtpc1Bhc3NpbmcodCl7cmV0dXJuITB9fWNsYXNzIGZLdHtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLl9sb3dlcj10LHRoaXMuX3VwcGVyPWUsdGhpcy5fbG93ZXJPcGVuPW4sdGhpcy5fdXBwZXJPcGVuPWl9aXNQYXNzaW5nKHQpe2NvbnN0IGU9dDtyZXR1cm4gdGhpcy5fYmVmb3JlKHRoaXMuX2xvd2VyLGUsIXRoaXMuX2xvd2VyT3BlbikmJnRoaXMuX2JlZm9yZShlLHRoaXMuX3VwcGVyLCF0aGlzLl91cHBlck9wZW4pfV9iZWZvcmUodCxlLG4pe3JldHVybiBuP3Q8PWU6dDxlfX1jbGFzcyBtS3R7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9tYWluU2V0PXR9aXNQYXNzaW5nKHQpe3JldHVybi0xIT09dGhpcy5fZG9tYWluU2V0LmZpbmRJbmRleCgoZT0+ZT09PXQpKX19Y2xhc3MgZ0t0e2NvbnN0cnVjdG9yKHQsZSxuLGkpe3RoaXMuX3N2Z1Byb3BzPXQsdGhpcy5fc2NoZW1hPWUsdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyPW4sdGhpcy5fY29sSW5kZXg9aSx0aGlzLl9pc0Rpc3BsYXllZD0hMSx0aGlzLl95U2NhbGU9bnVsbCx0aGlzLl9zY2FsZVR5cGU9bnVsbCx0aGlzLnNldEJydXNoU2VsZWN0aW9uKG51bGwpfWNvbEluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbEluZGV4fXlTY2FsZSgpe3JldHVybiB0aGlzLl95U2NhbGV9c2NhbGVUeXBlKCl7cmV0dXJuIHRoaXMuX3NjYWxlVHlwZX1icnVzaFNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9icnVzaFNlbGVjdGlvbn1pc0Rpc3BsYXllZCgpe3JldHVybiB0aGlzLl9pc0Rpc3BsYXllZH1zZXRCcnVzaFNlbGVjdGlvbih0KXt0aGlzLl9icnVzaFNlbGVjdGlvbj10LHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9c2V0RG9tYWluQW5kU2NhbGUodCxlKXt0aGlzLl9zY2FsZVR5cGU9ZSx0aGlzLl95U2NhbGU9dUt0KHQuc2xpY2UoKSx0aGlzLl9zdmdQcm9wcy5oZWlnaHQsdGhpcy5zY2FsZVR5cGUoKSksdGhpcy5fYnJ1c2hGaWx0ZXI9dGhpcy5fYnVpbGRCcnVzaEZpbHRlcih0aGlzLmJydXNoU2VsZWN0aW9uKCksdGhpcy5zY2FsZVR5cGUoKSx0aGlzLnlTY2FsZSgpKX1icnVzaEZpbHRlcigpe3JldHVybiB0aGlzLl9icnVzaEZpbHRlcn11cGRhdGVET00odCl7bGV0IGU9YWModGhpcy55U2NhbGUoKSk7dGhpcy5zY2FsZVR5cGUoKT09PWhLdC5RVUFOVElMRSYmKGU9ZS50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQobXkoIi0uNmciKSkpO2NvbnN0IG49U3UodCk7bi5zZWxlY3RBbGwoImciKS5yZW1vdmUoKSxuLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXMiLCEwKS5jYWxsKGUpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoImF4aXMtdGl0bGUiLCEwKS5zdHlsZSgiY3Vyc29yIiwibW92ZSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInkiLC05KS50ZXh0KCh0PT5TWXQodGhpcy5fc2NoZW1hLHQpKSksbi5jYWxsKHZoKCkub24oInN0YXJ0IiwoKCk9Pnt0LnNldEF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciLCIiKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnU3RhcnQodGhpcy5jb2xJbmRleCgpKX0pKS5vbigiZHJhZyIsKCgpPT50aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnKHV1LngpKSkub24oImVuZCIsKCgpPT57dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ0VuZCgpLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1kcmFnZ2luZyIpfSkpKTtjb25zdCBpPVptKCkuZXh0ZW50KFtbLTgsMF0sWzgsdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0KzFdXSkub24oInN0YXJ0IiwoKCk9Pnt5S3QodXUpJiYodC5zZXRBdHRyaWJ1dGUoImlzLWJydXNoaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSx1dS5zZWxlY3Rpb24pKX0pKS5vbigiYnJ1c2giLCgoKT0+e3lLdCh1dSkmJnRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksdXUuc2VsZWN0aW9uKX0pKS5vbigiZW5kIiwoKCk9Pnt5S3QodXUpJiYodGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSx1dS5zZWxlY3Rpb24pLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1icnVzaGluZyIpKX0pKSxyPVN1KHQpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJydXNoIiwhMCk7ci5jYWxsKGkpLGkubW92ZShyLHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSl9c2V0RGlzcGxheWVkKHQpe3RoaXMuX2lzRGlzcGxheWVkPXR9X2J1aWxkQnJ1c2hGaWx0ZXIodCxlLG4pe2lmKG51bGw9PT10KXJldHVybiBuZXcgcEt0O2lmKG51bGw9PT1lKXJldHVybiBjb25zb2xlLmVycm9yKCJTY2FsZSB0eXBlIGlzIG51bGwsIGJ1dCBicnVzaFNlbGVjdGlvbiBpc24ndDogIix0KSxuZXcgcEt0O3N3aXRjaChlKXtjYXNlIGhLdC5MSU5FQVI6Y2FzZSBoS3QuTE9HOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm5bdC5pbnZlcnQoZSksdC5pbnZlcnQobildLnNvcnQoKCh0LGUpPT50LWUpKX0pKG4sdFswXSx0WzFdKTtyZXR1cm4gbmV3IGZLdChlLGksITEsITEpfWNhc2UgaEt0LlFVQU5USUxFOntjb25zdFtlLGldPShmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBpPXQucmFuZ2UoKSxyPWkuZmlsdGVyKCh0PT5lPD10JiZ0PD1uKSkubWFwKChlPT57Y29uc3Qgbj10LmludmVydEV4dGVudChlKTtyZXR1cm4gZT09PWlbaS5sZW5ndGgtMV0/W25bMF0sblsxXSsxXTpufSkpO3JldHVybiAwPT1yLmxlbmd0aD9bMCwwXTpMbChxbChyKSl9KShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyBmS3QoZSxpLCExLCEwKX1jYXNlIGhLdC5OT05fTlVNRVJJQzpyZXR1cm4gbmV3IG1LdCgoZnVuY3Rpb24gZSh0LG4saSl7cmV0dXJuIHQuZG9tYWluKCkuZmlsdGVyKChlPT57Y29uc3Qgcj10KGUpO3JldHVybiBuPD1yJiZyPD1pfSkpfSkobix0WzBdLHRbMV0pKX1yZXR1cm4gY29uc29sZS5lcnJvcigiVW5rbm93biBzY2FsZSB0eXBlOiAiLGUpLG5ldyBwS3R9fWNsYXNzIF9LdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9heGVzPXRoaXMuX2NyZWF0ZUF4ZXMobiksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnM9QU0oKS5yYW5nZShbMSx0aGlzLl9zdmdQcm9wcy53aWR0aC0xXSkucGFkZGluZyguNSksdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5heGlzLXBhcmVudCIpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoIi5heGlzLXBhcmVudCIpfXVwZGF0ZUF4ZXModCxlKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtjb25zdCBuPW5ldyBTZXQ7dC5jb2x1bW5zLmZvckVhY2goKHQ9Pntjb25zdCBpPXQuYWJzb2x1dGVJbmRleDtsZXQgcj10aGlzLl9heGVzW2ldO3Iuc2V0RGlzcGxheWVkKCEwKTtjb25zdCBvPWUubWFwKCh0PT5QWXQodGhpcy5fc2NoZW1hLHQsaSkpKTtyLnNldERvbWFpbkFuZFNjYWxlKG8sdC5zY2FsZSksbi5hZGQoaSl9KSksdGhpcy5fYXhlcy5mb3JFYWNoKCh0PT57bi5oYXModC5jb2xJbmRleCgpKXx8dC5zZXREaXNwbGF5ZWQoITEpfSkpLHRoaXMuX3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKG4pLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5kYXRhKEFycmF5LmZyb20obiksKHQ9PnQpKSx0aGlzLl9wYXJlbnRzU2VsLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzLXBhcmVudCIsITApLm1lcmdlKHRoaXMuX3BhcmVudHNTZWwpO2NvbnN0IGk9dGhpczt0aGlzLl9wYXJlbnRzU2VsLmNhbGwoKHQ9PnRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2kuX2F4ZXNbdF0udXBkYXRlRE9NKHRoaXMpfSkpfW1hcFZpc2libGVBeGVzKHQpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5tYXAoKGU9PnQodGhpcy5nZXRBeGlzUG9zaXRpb24oZSksdGhpcy5fYXhlc1tlXSkpKX1hbGxWaXNpYmxlQXhlc1NhdGlzZnkodCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmV2ZXJ5KChlPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpLHRoaXMuX2F4ZXNbZV0pKSl9Z2V0QXhpc0ZvckNvbEluZGV4KHQpe3JldHVybiB0aGlzLl9heGVzW3RdfWRyYWdTdGFydCh0KXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKSxjb25zb2xlLmFzc2VydCh0aGlzLl9heGVzW3RdLmlzRGlzcGxheWVkKCkpLHRoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2F4ZXNbdF0sdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KX1kcmFnKHQpe3Q9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9zdmdQcm9wcy53aWR0aCksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10O2xldCBlPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpO2Uuc29ydCgoKHQsZSk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHQpLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpKSksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKGUpLHRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0aGlzLl9wYXJlbnRzU2VsKX1kcmFnRW5kKHQpe2NvbnNvbGUuYXNzZXJ0KHRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksdGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj1udWxsLHRoaXMuX2RyYWdnZWRBeGlzPW51bGwsdGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwudHJhbnNpdGlvbigpLmR1cmF0aW9uKHQpKX1pc0F4aXNEcmFnZ2luZygpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXN9Z2V0QXhpc1Bvc2l0aW9uKHQpe3JldHVybiBudWxsIT09dGhpcy5fZHJhZ2dlZEF4aXMmJnRoaXMuX2RyYWdnZWRBeGlzLmNvbEluZGV4KCk9PT10P3RoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb246dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9X3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKHQpe2NvbnN0IGU9dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKChlPT50LmhhcyhlKSkpLG49QXJyYXkuZnJvbShuZXcgU2V0KFsuLi5lLC4uLkFycmF5LmZyb20odCldKSk7dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKG4pfV91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odCl7dC5hdHRyKCJ0cmFuc2Zvcm0iLCh0PT5XWXQodGhpcy5nZXRBeGlzUG9zaXRpb24odCkpKSl9X2NyZWF0ZUF4ZXModCl7cmV0dXJuIHpsKFRZdCh0aGlzLl9zY2hlbWEpKS5tYXAoKGU9Pm5ldyBnS3QodGhpcy5fc3ZnUHJvcHMsdGhpcy5fc2NoZW1hLHQsZSkpKX19ZnVuY3Rpb24geUt0KHQpe3JldHVybiBudWxsIT09dC5zb3VyY2VFdmVudH0hKGZ1bmN0aW9uKHQpe3RbdC5GT1JFR1JPVU5EPTBdPSJGT1JFR1JPVU5EIix0W3QuQkFDS0dST1VORD0xXT0iQkFDS0dST1VORCJ9KShkS3R8fChkS3Q9e30pKTtjbGFzcyB2S3R7Y29uc3RydWN0b3IodCl7dm9pZCAwPT09dCYmKHQ9c2gobnVsbCkpLGNvbnNvbGUuYXNzZXJ0KHQuc2l6ZSgpPD0xKSx0aGlzLl9zZXNzaW9uR3JvdXBTZWw9dH1zZXNzaW9uR3JvdXAoKXtyZXR1cm4gMT09PXRoaXMuX3Nlc3Npb25Hcm91cFNlbC5zaXplKCk/dGhpcy5fc2Vzc2lvbkdyb3VwU2VsLmRhdHVtKCk6bnVsbH1pc051bGwoKXtyZXR1cm4gbnVsbD09PXRoaXMuc2Vzc2lvbkdyb3VwKCl9c2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX3Nlc3Npb25Hcm91cFNlbH1lcXVhbHNUbyh0KXtyZXR1cm4gdGhpcy5pc051bGwoKT90LmlzTnVsbCgpOiF0LmlzTnVsbCgpJiZ0LnNlc3Npb25Hcm91cCgpLm5hbWU9PXRoaXMuc2Vzc2lvbkdyb3VwKCkubmFtZX19Y2xhc3MgYkt0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW4sdGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCksdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgdkt0LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPW5ldyB2S3QsdGhpcy5fZDNsaW5lPXVMKCkuY3VydmUoc0wpfWdldFNlc3Npb25Hcm91cEhhbmRsZSh0KXtyZXR1cm4gbnVsbD09dD9uZXcgdkt0Om5ldyB2S3QodGhpcy5fZmdQYXRoc1NlbC5maWx0ZXIoKGU9PmUubmFtZT09PXQubmFtZSkpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKHQsZT0wKXsodD09PWRLdC5GT1JFR1JPVU5EP3RoaXMuX2ZnUGF0aHNTZWw6dGhpcy5fYmdQYXRoc1NlbCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKGUpLmF0dHIoImQiLCh0PT50aGlzLl9wYXRoREF0dHJpYnV0ZSh0KSkpLHQ9PT1kS3QuRk9SRUdST1VORCYmd2luZG93LnNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzO3RoaXMuX2ZnUGF0aHNTZWwuZWFjaCgoZnVuY3Rpb24oZSl7dC5fc2V0Q29udHJvbFBvaW50c1Byb3BlcnR5KHRoaXMsZSl9KSl9KSl9cmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpe3RoaXMuX2ZnUGF0aHNTZWwuY2xhc3NlZCgiaW52aXNpYmxlLXBhdGgiLCh0PT4hdGhpcy5fYXhlc0NvbGxlY3Rpb24uYWxsVmlzaWJsZUF4ZXNTYXRpc2Z5KCgoZSxuKT0+bi5icnVzaEZpbHRlcigpLmlzUGFzc2luZyhQWXQodGhpcy5fc2NoZW1hLHQsbi5jb2xJbmRleCgpKSkpKSkpLHRoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IodCxlLG4pe2NvbnN0IGk9dGhpcy5fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxlLG4pO3RoaXMuX2ZnUGF0aHNTZWwuYXR0cigic3Ryb2tlIixpKX1yZWRyYXcodCxlLG4saSl7Y29uc3Qgcj10aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCksbz10aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZXNzaW9uR3JvdXAoKTt0aGlzLl9zZXNzaW9uR3JvdXBzPXQsdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHRoaXMuX2ZnUGF0aHNTZWwpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9iZ1BhdGhzU2VsKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUociksdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9dGhpcy5nZXRTZXNzaW9uR3JvdXBIYW5kbGUobyksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKGRLdC5GT1JFR1JPVU5EKSx0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoZEt0LkJBQ0tHUk9VTkQpLHRoaXMucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpLHRoaXMuc2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IoZSxuLGkpfXVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCExKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCEwKX1jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpe3RoaXMudXBkYXRlUGVha2VkU2Vzc2lvbkdyb3VwKG5ldyB2S3QpfXVwZGF0ZVNlbGVjdGVkU2Vzc2lvbkdyb3VwKHQpe3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCExKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT10LHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCEwKX1maW5kQ2xvc2VzdFNlc3Npb25Hcm91cCh0LGUpe2NvbnN0IG49dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKCh0LGUpPT50KSksaT0oZnVuY3Rpb24gcih0LGUsbixpKXtpZihlLmxlbmd0aDwyKXJldHVybiBjb25zb2xlLmVycm9yKCJMZXNzIHRoYW4gdHdvIGF4ZXMgaW4gcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdC4iKSxudWxsO2NvbnN0IHI9blswXSxvPW5bMV07aWYocjw9ZVswXXx8cj49ZVtlLmxlbmd0aC0xXSlyZXR1cm4gbnVsbDtjb25zdCBhPVNlLmV4cG9ydHMuc29ydGVkSW5kZXgoZSxyKTtjb25zb2xlLmFzc2VydChhPjApLGNvbnNvbGUuYXNzZXJ0KGE8ZS5sZW5ndGgpO2NvbnN0IHM9YS0xO2xldCBsPW51bGwsYz1udWxsO3JldHVybiB0LmZvckVhY2goKHQ9Pntjb25zdCBlPShmdW5jdGlvbiBuKHQsZSxpLGEpe2NvbnN0IHM9dC1pLGw9ZS1hLGM9ci1pLHU9by1hLGg9KHMqYytsKnUpLyhzKnMrbCpsKTtyZXR1cm4gaDw9MD9VWXQoYyx1KTpoPj0xP1VZdCh0LXIsZS1vKTpVWXQoYy1oKnMsdS1oKmwpfSkodC5jb250cm9sUG9pbnRzW3NdWzBdLHQuY29udHJvbFBvaW50c1tzXVsxXSx0LmNvbnRyb2xQb2ludHNbYV1bMF0sdC5jb250cm9sUG9pbnRzW2FdWzFdKTtlPml8fChudWxsPT09bHx8ZTxsKSYmKGw9ZSxjPXQpfSkpLGN9KSh0aGlzLl92aXNpYmxlRmdQYXRoc1NlbC5ub2RlcygpLG4sW3QsZV0sMTAwKTtyZXR1cm4gbnVsbD09PWk/bmV3IHZLdDpuZXcgdkt0KFN1KGkpKX1fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxlLG4pe2lmKG51bGw9PT10KXJldHVybigpPT4icmVkIjtjb25zdCBpPVZNKCkuZG9tYWluKE5ZdCh0aGlzLl9zY2hlbWEsdGhpcy5fc2Vzc2lvbkdyb3Vwcyx0KSkucmFuZ2UoW2Usbl0pLmludGVycG9sYXRlKGNwKTtyZXR1cm4gZT0+aShQWXQodGhpcy5fc2NoZW1hLGUsdCkpfV9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHQpe3JldHVybih0PXQuZGF0YSh0aGlzLl9zZXNzaW9uR3JvdXBzLCh0PT50Lm5hbWUpKSkuZXhpdCgpLnJlbW92ZSgpLHQuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5tZXJnZSh0KX1fc2V0Q29udHJvbFBvaW50c1Byb3BlcnR5KHQsZSl7dC5jb250cm9sUG9pbnRzPXRoaXMuX2NvbXB1dGVDb250cm9sUG9pbnRzKGUpfV9jb21wdXRlQ29udHJvbFBvaW50cyh0KXtyZXR1cm4gdGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKChlLG4pPT5bZSxuLnlTY2FsZSgpKFBZdCh0aGlzLl9zY2hlbWEsdCxuLmNvbEluZGV4KCkpKV0pKX1fcGF0aERBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuX2QzbGluZSh0aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyh0KSl9X3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl7dGhpcy5fdmlzaWJsZUZnUGF0aHNTZWw9dGhpcy5fZmdQYXRoc1NlbC5maWx0ZXIoIjpub3QoLmludmlzaWJsZS1wYXRoKSIpfX1jbGFzcyB4S3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN2Zz1TdSh0KTtjb25zdCBuPTEwMCplKzEwKzEwO3RoaXMuc3ZnLmF0dHIoInZpZXdCb3giLGAwIDAgJHtufSAyNDBgKSx0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKSx0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIixuKyJweCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IiwiMjQwcHgiKSx0aGlzLndpZHRoPW4tMTAtMTAsdGhpcy5oZWlnaHQ9MjAwLHRoaXMuc3ZnRz10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLFdZdCgxMCwzMCkpfX1jbGFzcyB3S3R7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0I9bix0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1pLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBfS3QodCxlLHRoaXMpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbj1uZXcgYkt0KHQsZSx0aGlzLl9heGVzQ29sbGVjdGlvbiksdGhpcy5fc3ZnUHJvcHMuc3ZnLm9uKCJjbGljayIsKCgpPT50aGlzLm9uQ2xpY2soKSkpLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsKCgpPT57Y29uc3RbdCxlXT1haCh0aGlzLl9zdmdQcm9wcy5zdmdHLm5vZGUoKSk7dGhpcy5vbk1vdXNlTW92ZWQodCxlKX0pKS5vbigibW91c2VsZWF2ZSIsKCgpPT50aGlzLm9uTW91c2VMZWF2ZSgpKSl9b25EcmFnU3RhcnQodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ1N0YXJ0KHQpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5oaWRlQmFja2dyb3VuZExpbmVzKCl9b25EcmFnKHQpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWcodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoZEt0LkZPUkVHUk9VTkQpfW9uRHJhZ0VuZCgpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWdFbmQoNTAwKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhkS3QuRk9SRUdST1VORCw1MDApLHdpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKGRLdC5CQUNLR1JPVU5EKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2hvd0JhY2tncm91bmRMaW5lcygpfSksNTAwKX1vbkJydXNoQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmdldEF4aXNGb3JDb2xJbmRleCh0KS5zZXRCcnVzaFNlbGVjdGlvbihlKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LGUpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQsZSkpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8KHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQihudWxsKSl9b25DbGljaygpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT09PXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpP3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cChuZXcgdkt0KTp0aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0LGUpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLnVwZGF0ZUF4ZXModCxlKTtjb25zdCBuPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSxpPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWRyYXcoZSx2b2lkIDAhPT10LmNvbG9yQnlDb2x1bW5JbmRleD90LmNvbHVtbnNbdC5jb2xvckJ5Q29sdW1uSW5kZXhdLmFic29sdXRlSW5kZXg6bnVsbCx0Lm1pbkNvbG9yLHQubWF4Q29sb3IpLG4uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSksaS5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1zY2hlbWEoKXtyZXR1cm4gdGhpcy5fc2NoZW1hfX1sZXQgU0t0PWNsYXNzIGV4dGVuZHMoZXIoaWwoeWUpKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnJlZHJhd0NvdW50PTB9X29wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKCl7dmFyIHQ7aWYoIXRoaXMub3B0aW9ucylyZXR1cm47Y29uc3R7Y29uZmlndXJhdGlvbjplfT1udWxsIT09KHQ9dGhpcy5fcHJldk9wdGlvbnMpJiZ2b2lkIDAhPT10P3Q6e30se2NvbmZpZ3VyYXRpb246bn09dGhpcy5vcHRpb25zO2lmKHZvaWQgMD09PXRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcnx8IVNlLmV4cG9ydHMuaXNFcXVhbChlLnNjaGVtYSxuLnNjaGVtYSl8fCFTZS5leHBvcnRzLmlzRXF1YWwoZS5jb2x1bW5zVmlzaWJpbGl0eSxuLmNvbHVtbnNWaXNpYmlsaXR5KSl7U3UodGhpcy4kLnN2Zykuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7Y29uc3QgdD1uZXcgeEt0KHRoaXMuJC5zdmcsbi5jb2x1bW5zVmlzaWJpbGl0eS5maWx0ZXIoQm9vbGVhbikubGVuZ3RoKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IHdLdCh0LG4uc2NoZW1hLCh0PT50aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpKSwodD0+dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCkpKX10aGlzLl9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uT3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQodGhpcy5vcHRpb25zLHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3VwcyksdGhpcy5yZWRyYXdDb3VudCsrLHRoaXMuX3ByZXZPcHRpb25zPXRoaXMub3B0aW9uc31jbG9zZXN0U2Vzc2lvbkdyb3VwQ2hhbmdlZCh0KXt0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9dH1zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCl7dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cD10fV9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCl7Y29uc3QgdD1YWXQ7aWYodm9pZCAwPT09dGhpcy5zZXNzaW9uR3JvdXBzKXJldHVybiB2b2lkKHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz12b2lkIDApO2NvbnN0IGU9dGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uc2NoZW1hO3RoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz10aGlzLnNlc3Npb25Hcm91cHMuZmlsdGVyKChuPT57Zm9yKGxldCBpPTA7aTx0Lm51bUNvbHVtbnMoZSk7KytpKWlmKHRoaXMub3B0aW9ucy5jb25maWd1cmF0aW9uLmNvbHVtbnNWaXNpYmlsaXR5W2ldJiZ2b2lkIDA9PT10LmNvbHVtblZhbHVlQnlJbmRleChlLG4saSkpcmV0dXJuITE7cmV0dXJuITB9KSl9fTtTS3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAtLXRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QtYXhpcy1zaGFkb3c6IDAgMXB4IDAgI2ZmZiwKICAgICAgICAgIDFweCAwIDAgI2ZmZiwgMCAtMXB4IDAgI2ZmZiwgLTFweCAwIDAgI2ZmZjsKICAgICAgfQogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS10Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90LWF4aXMtc2hhZG93OiAwIDFweCAwICMwMDAsCiAgICAgICAgICAxcHggMCAwICMwMDAsIDAgLTFweCAwICMwMDAsIC0xcHggMCAwICMwMDA7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5iYWNrZ3JvdW5kIHBhdGggewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjZGRkOwogICAgICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKICAgICAgfQoKICAgICAgLmZvcmVncm91bmQgcGF0aCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC43OwogICAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgfQoKICAgICAgLyogV2lsbCBiZSBzZXQgb24gZm9yZWdyb3VuZCBwYXRocyB0aGF0IGFyZSBub3QgImNvbnRhaW5lZCIgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgYXhlcyBicnVzaGVzLiBJZiBubyBicnVzaGVzIGFyZSBzZXQsIG5vIHBhdGggd2lsbCBoYXZlIHRoaXMgY2xhc3MuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5pbnZpc2libGUtcGF0aCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogU3R5bGUgZm9yIHRoZSBwYXRoIGNsb3Nlc3QgdG8gdGhlIG1vdXNlIHBvaW50ZXIgKHR5cGljYWxseSB3aWxsIGJlY29tZQogICAgICB0aGUgc2VsZWN0ZWQgcGF0aCB3aGVuIHRoZSB1c2VyIGNsaWNrcykuICovCiAgICAgIC5mb3JlZ3JvdW5kIC5wZWFrZWQtcGF0aCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgICB9CgogICAgICAvKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHBhdGggY2xhc3MuIFdlIHVzZSAhaW1wb3J0YW50IHRvIG92ZXJyaWRlIHRoZQogICAgICAgICBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIGNvbG9yIG9mIGEgcGF0aC4gKi8KICAgICAgLmZvcmVncm91bmQgLnNlbGVjdGVkLXBhdGggewogICAgICAgIHN0cm9rZS13aWR0aDogMyAhaW1wb3J0YW50OwogICAgICAgIHN0cm9rZTogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAuYXhpcyB0ZXh0IHsKICAgICAgICB0ZXh0LXNoYWRvdzogdmFyKC0tdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC1heGlzLXNoYWRvdyk7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICAgIGN1cnNvcjogbW92ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxTS3QucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNLdC5wcm90b3R5cGUsIm9wdGlvbnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNLdC5wcm90b3R5cGUsInNlbGVjdGVkU2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxTS3QucHJvdG90eXBlLCJjbG9zZXN0U2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFNLdC5wcm90b3R5cGUsInJlZHJhd0NvdW50Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxTS3QucHJvdG90eXBlLCJfdmFsaWRTZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNLdC5wcm90b3R5cGUsIl9pbnRlcmFjdGlvbk1hbmFnZXIiLHZvaWQgMCksdChbYSgib3B0aW9ucy4qIiwic2Vzc2lvbkdyb3Vwcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxTS3QucHJvdG90eXBlLCJfb3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpLFNLdD10KFtpKCJ0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90IildLFNLdCk7bGV0IE1LdD1jbGFzcyBleHRlbmRzIHlle19jbG9zZXN0T3JTZWxlY3RlZCh0LGUpe3JldHVybiBudWxsIT09dD90OmV9fTtNS3QudGVtcGxhdGU9X2VgCiAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QKICAgICAgICAgb3V0cHV0cyBzZXQgb3B0aW9ucyB0byB0aGUgX29wdGlvbnMgcHJvcGVydHkuCiAgICAgIC0tPgogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0IG9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CiAgICAgIDwhLS0gVGhlIHNjYWxlIGFuZCBjb2xvciBjb250cm9scy4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scwogICAgICAgIGlkPSJjb250cm9scyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBvcHRpb25zPSJ7e19vcHRpb25zfX0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgPCEtLSBUaGUgYWN0dWFsIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QgLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90CiAgICAgICAgaWQ9InBsb3QiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdD4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cD0iW1tfY2xvc2VzdE9yU2VsZWN0ZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3Nlc3RHcm91cCwgX3NlbGVjdGVkR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBpZD0iZGV0YWlscyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KCiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgICN2YWx1ZXMgewogICAgICAgIGhlaWdodDogMTE1cHg7CiAgICAgIH0KICAgICAgI2RldGFpbHMgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE1LdC5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTUt0LnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTUt0LnByb3RvdHlwZSwiY29uZmlndXJhdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sTUt0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSxNS3Q9dChbaSgidGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldyIpXSxNS3QpO2xldCBFS3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3ZnPW51bGwsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fYnJ1c2hlZENlbGxJbmRleD1udWxsLHRoaXMuX2JydXNoU2VsZWN0aW9uPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2NvbnRhaW5lcj10aGlzLiQuY29udGFpbmVyLHRoaXMuX3N2Zz1TdSh0aGlzLiQuc3ZnKSx0aGlzLl9yZWRyYXcoKX1fc2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9RFl0KHRoaXMuc2Vzc2lvbkdyb3Vwcyx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwLm5hbWUpfHxudWxsKSx0aGlzLl9yZWRyYXcoKX1fdmlzaWJsZVNjaGVtYUNoYW5nZWQoKXt0aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGwsdGhpcy5fYnJ1c2hTZWxlY3Rpb249bnVsbCx0aGlzLl9yZWRyYXcoKX1fcmVkcmF3KCl7dGhpcy5kZWJvdW5jZSgiX3JlZHJhdyIsKCgpPT57Y29uc3QgdD1YWXQ7dGhpcy53aWR0aD1NYXRoLm1heCgxNTAqdC5udW1WaXNpYmxlQ29sdW1ucyh0aGlzLnZpc2libGVTY2hlbWEpLDEyMDApLHRoaXMuaGVpZ2h0PU1hdGgubWF4KDExMi41KnQubnVtVmlzaWJsZU1ldHJpY3ModGhpcy52aXNpYmxlU2NoZW1hKSw0ODApLHRoaXMuX2NvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLndpZHRoKyJweCIsdGhpcy5fY29udGFpbmVyLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCsicHgiLHRoaXMuX3N2Zy5hdHRyKCJ3aWR0aCIsdGhpcy53aWR0aCkuYXR0cigiaGVpZ2h0Iix0aGlzLmhlaWdodCksdGhpcy5fc3ZnLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpLHRoaXMuX2RyYXcoKX0pLDEwMCl9X2RyYXcoKXtjb25zdCB0PVhZdCxlPXRoaXM7aWYoIXRoaXMuc2Vzc2lvbkdyb3Vwc3x8MD09dGhpcy5zZXNzaW9uR3JvdXBzLmxlbmd0aHx8IXRoaXMudmlzaWJsZVNjaGVtYXx8MD09dGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aClyZXR1cm47Y29uc3Qgbj16bCh0Lm51bVZpc2libGVDb2x1bW5zKGUudmlzaWJsZVNjaGVtYSkpLGk9emwodC5udW1WaXNpYmxlTWV0cmljcyhlLnZpc2libGVTY2hlbWEpKSxyPVRNKCkuZG9tYWluKG4pLnJhbmdlKFs4NSx0aGlzLndpZHRoLTEtNV0pLnBhZGRpbmdJbm5lciguMSksbz1UTSgpLmRvbWFpbihpKS5yYW5nZShbdGhpcy5oZWlnaHQtMS01LTUwLDVdKS5wYWRkaW5nSW5uZXIoLjEpLGE9ci5iYW5kd2lkdGgoKSxzPW8uYmFuZHdpZHRoKCksbD1uLm1hcCgodD0+ZS5fY2VsbFNjYWxlKHQsWzAsYS0xXSkpKSxjPWkubWFwKChuPT5lLl9jZWxsU2NhbGUobit0Lm51bVZpc2libGVIUGFyYW1zKGUudmlzaWJsZVNjaGVtYSksW3MtMSwwXSkpKSx1PXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi54LWF4aXMiKS5kYXRhKG4pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwoZT0+dC50cmFuc2xhdGVTdHIocihlKSwwKSkpO2Z1bmN0aW9uIGgodCl7cmV0dXJuIngtYXhpcy1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIGQodCl7cmV0dXJuIngtbGFiZWwtY2xpcC1wYXRoLSIrdH11LmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsaCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTUpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIixhKzEwKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0LTI1KSx1LmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsZCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsZS5oZWlnaHQtMjUpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLDI1KSx1LmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIraCh0KSsiKSIpKS5lYWNoKChmdW5jdGlvbih0KXtTdSh0aGlzKS5jYWxsKGcsb2MobFt0XSkudGlja1NpemUoZS5oZWlnaHQtNTApLGEsNDAsZS5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpfSkpLHUuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzLWxhYmVsIiwhMCkuYXR0cigiY2xpcC1wYXRoIiwodD0+InVybCgjIitkKHQpKyIpIikpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieCIsYS8yKS5hdHRyKCJ5IixlLmhlaWdodC0xLTEyLjUpLnRleHQoKG49PnQuc2NoZW1hVmlzaWJsZUNvbHVtbk5hbWUoZS52aXNpYmxlU2NoZW1hLG4pKSkuYXBwZW5kKCJ0aXRsZSIpLnRleHQoKG49PnQuc2NoZW1hVmlzaWJsZUNvbHVtbk5hbWUoZS52aXNpYmxlU2NoZW1hLG4pKSk7Y29uc3QgcD10aGlzLl9zdmcuc2VsZWN0QWxsKCIueS1heGlzIikuZGF0YShpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInktYXhpcyIsITApLmF0dHIoInRyYW5zZm9ybSIsKG49PnQudHJhbnNsYXRlU3RyKGUud2lkdGgtMSxvKG4pKSkpO2Z1bmN0aW9uIGYodCl7cmV0dXJuInktYXhpcy1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIG0odCl7cmV0dXJuInktbGFiZWwtY2xpcC1wYXRoLSIrdH1mdW5jdGlvbiBnKHQsZSxuLGkscil7Y29uc3Qgbz1NYXRoLmZsb29yKG4vaSksYT1lLnNjYWxlKCk7aWYoIlFVQU5USUxFIj09PXIpe2xldCB0PWEucXVhbnRpbGVzKCk7Y29uc3Qgbj1NYXRoLmNlaWwodC5sZW5ndGgvbyk7dD16bCgwLHQubGVuZ3RoLG4pLm1hcCgoZT0+dFtlXSkpLGUudGlja1ZhbHVlcyh0KS50aWNrRm9ybWF0KG15KCItLjJnIikpfSJMSU5FQVIiIT09ciYmIkxPRyIhPT1yfHxlLnRpY2tzKG8pLHQuY2FsbChlKSx0LnNlbGVjdEFsbCgiLmRvbWFpbiIpLnJlbW92ZSgpLHQuc2VsZWN0QWxsKCIudGljayBsaW5lIikuYXR0cigic3Ryb2tlIiwiI2RkZCIpfXAuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixmKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtKGUud2lkdGgtNDAtMSkpLmF0dHIoInkiLC01KS5hdHRyKCJ3aWR0aCIsZS53aWR0aC00MCkuYXR0cigiaGVpZ2h0IixzKzEwKSxwLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsbSkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLShlLndpZHRoLTEpKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsNDApLmF0dHIoImhlaWdodCIscykscC5hcHBlbmQoImciKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK2YodCkrIikiKSkuZWFjaCgoZnVuY3Rpb24obil7U3UodGhpcykuY2FsbChnLGFjKGNbbl0pLnRpY2tTaXplKGUud2lkdGgtODApLHMsMjAsZS5vcHRpb25zLmNvbHVtbnNbbit0Lm51bVZpc2libGVIUGFyYW1zKGUudmlzaWJsZVNjaGVtYSldLnNjYWxlKX0pKSxwLmFwcGVuZCgiZyIpLmNsYXNzZWQoInktYXhpcy1sYWJlbCIsITApLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrbSh0KSsiKSIpKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoIngiLC0oZS53aWR0aC0yMC0xKSkuYXR0cigieSIscy8yKS5hdHRyKCJ0cmFuc2Zvcm0iLHQucm90YXRlU3RyKDkwLC0oZS53aWR0aC0yMC0xKSxzLzIpKS50ZXh0KChuPT50Lm1ldHJpY05hbWUoZS52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zW25dKSkpLmFwcGVuZCgidGl0bGUiKS50ZXh0KChuPT50Lm1ldHJpY05hbWUoZS52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zW25dKSkpO2NvbnN0IF89dGhpcy5fc3ZnLnNlbGVjdEFsbCgiLmNlbGwiKS5kYXRhKFRsKG4saSkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiY2VsbCIsITApLmF0dHIoInRyYW5zZm9ybSIsKChbZSxuXSk9PnQudHJhbnNsYXRlU3RyKHIoZSksbyhuKSkpKTtfLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZyYW1lIiwhMCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTUpLmF0dHIoInkiLC01KS5hdHRyKCJ3aWR0aCIsYSsxMCkuYXR0cigiaGVpZ2h0IixzKzEwKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7bGV0IHk9bnVsbDt2b2lkIDAhPT1lLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4JiYoeT1WTSgpLmRvbWFpbih0aGlzLl9jb2xFeHRlbnQodGhpcy5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCkpLnJhbmdlKFt0aGlzLm9wdGlvbnMubWluQ29sb3IsdGhpcy5vcHRpb25zLm1heENvbG9yXSkuaW50ZXJwb2xhdGUoY3ApKTtjb25zdCB2PXZvaWQgMD09PWUub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXg/KCk9PiJyZWQiOih7c2Vzc2lvbkdyb3VwOnR9KT0+eSh0aGlzLl9jb2xWYWx1ZSh0LGUub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgpKTtmdW5jdGlvbiBiKHQsbil7cmV0dXJuIGxbbl0oZS5fY29sVmFsdWUodCxuKSl9ZnVuY3Rpb24geCh0LG4pe3JldHVybiBjW25dKGUuX21ldHJpY1ZhbHVlKHQsbikpfWNvbnN0W3csUyxNXT0oZnVuY3Rpb24gRSh0LHIpe2NvbnN0IG89dC5zZWxlY3RBbGwoIi5kYXRhLW1hcmtlciIpLmRhdGEoKChbdCxuXSk9PmUuc2Vzc2lvbkdyb3Vwcy5maWx0ZXIoKGk9PnZvaWQgMCE9PWUuX2NvbFZhbHVlKGksdCkmJnZvaWQgMCE9PWUuX21ldHJpY1ZhbHVlKGksbikpKS5tYXAoKGU9Pih7Y29sOnQsbWV0cmljOm4sc2Vzc2lvbkdyb3VwOmUseDpiKGUsdCkseTp4KGUsbiksc2Vzc2lvbkdyb3VwTWFya2VyczpudWxsfSkpKSkpLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5jbGFzc2VkKCJkYXRhLW1hcmtlciIsITApLmF0dHIoImN4IiwoKHt4OnR9KT0+dCkpLmF0dHIoImN5IiwoKHt5OnR9KT0+dCkpLmF0dHIoInIiLDIpLmF0dHIoImZpbGwiLHIpLGE9bmV3IE1hcDtlLnNlc3Npb25Hcm91cHMuZm9yRWFjaCgodD0+e2Euc2V0KHQsW10pfSkpLG8uZWFjaCgoZnVuY3Rpb24odCl7YS5nZXQodC5zZXNzaW9uR3JvdXApLnB1c2godGhpcyl9KSksby5lYWNoKCh0PT57Y29uc3QgZT1hLmdldCh0LnNlc3Npb25Hcm91cCk7dC5zZXNzaW9uR3JvdXBNYXJrZXJzPW5ldyBTZXQoZSl9KSk7Y29uc3Qgcz1uLm1hcCgodD0+aS5tYXAoKGU9Pm8uZmlsdGVyKChuPT5uLmNvbD09dCYmbi5tZXRyaWM9PWUpKSkpKSk7cmV0dXJuW28scyxhXX0pKF8uYXBwZW5kKCJnIiksdiksVD1uLm1hcCgodD0+aS5tYXAoKGU9PihmdW5jdGlvbiBuKHQsZSl7Y29uc3Qgbj1bXTtyZXR1cm4gU1t0XVtlXS5lYWNoKChmdW5jdGlvbigpe24ucHVzaCh0aGlzKX0pKSxOXygpLngoKHQ9PlN1KHQpLmRhdHVtKCkueCkpLnkoKHQ9PlN1KHQpLmRhdHVtKCkueSkpLmFkZEFsbChuKX0pKHQsZSkpKSkpO2xldCBDPW51bGw7TigpJiYoQz1fLmZpbHRlcigodD0+U2UuZXhwb3J0cy5pc0VxdWFsKHQsZS5fYnJ1c2hlZENlbGxJbmRleCkpKSxjb25zb2xlLmFzc2VydCgxPT1DLnNpemUoKSxDKSk7bGV0IEE9bmV3IFNldCh3Lm5vZGVzKCkpO2Z1bmN0aW9uIGsoKXtsZXQgbj1uZXcgU2V0KHcubm9kZXMoKSk7KGZ1bmN0aW9uIGkoKXtyZXR1cm4hTigpfHxlLl9icnVzaFNlbGVjdGlvblswXVswXT09PWUuX2JydXNoU2VsZWN0aW9uWzFdWzBdfHxlLl9icnVzaFNlbGVjdGlvblswXVsxXT09PWUuX2JydXNoU2VsZWN0aW9uWzFdWzFdfSkoKXx8KG49KGZ1bmN0aW9uIHIoZSxuKXtjb25zb2xlLmFzc2VydChudWxsIT09ZSksY29uc29sZS5hc3NlcnQobnVsbCE9PW4pO2NvbnN0W2kscl09ZSxvPW5ldyBTZXQ7cmV0dXJuIHQucXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdChUW2ldW3JdLG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0sKHQ9PntTdSh0KS5kYXR1bSgpLnNlc3Npb25Hcm91cE1hcmtlcnMuZm9yRWFjaCgodD0+e28uYWRkKHQpfSkpfSkpLG99KShlLl9icnVzaGVkQ2VsbEluZGV4LGUuX2JydXNoU2VsZWN0aW9uKSksc2goQXJyYXkuZnJvbSh0LmZpbHRlclNldChuLCh0PT4hQS5oYXModCkpKSkpLmF0dHIoImZpbGwiLHYpLHNoKEFycmF5LmZyb20odC5maWx0ZXJTZXQoQSwodD0+IW4uaGFzKHQpKSkpKS5hdHRyKCJmaWxsIiwiI2RkZCIpLEE9bn1rKCk7Y29uc3QgTD1KbSgpLmV4dGVudChbWy00LC00XSxbYS0xKzUtMSxzLTErNS0xXV0pLm9uKCJzdGFydCIsKGZ1bmN0aW9uKCl7TigpJiZDLm5vZGUoKSE9dGhpcyYmTC5tb3ZlKEMsbnVsbCksUCh0aGlzKX0pKS5vbigiYnJ1c2giLChmdW5jdGlvbigpe1AodGhpcyl9KSkub24oImVuZCIsKGZ1bmN0aW9uKCl7UCh0aGlzKX0pKTtmdW5jdGlvbiBQKHQpe2NvbnN0IG49S20odCk7IU4oKSYmbnVsbD09PW58fE4oKSYmdD09PUMubm9kZSgpJiZTZS5leHBvcnRzLmlzRXF1YWwobixlLl9icnVzaFNlbGVjdGlvbil8fChlLl9icnVzaFNlbGVjdGlvbj1uLG51bGwhPT1uPyhDPVN1KHQpLGUuX2JydXNoZWRDZWxsSW5kZXg9Qy5kYXR1bSgpKTooQz1udWxsLGUuX2JydXNoZWRDZWxsSW5kZXg9bnVsbCksaygpKX1mdW5jdGlvbiBOKCl7cmV0dXJuIG51bGwhPT1lLl9icnVzaGVkQ2VsbEluZGV4JiZudWxsIT09ZS5fYnJ1c2hTZWxlY3Rpb259Xy5jYWxsKEwpLE4oKSYmTC5tb3ZlKEMsZS5fYnJ1c2hTZWxlY3Rpb24pO2xldCBJPW51bGwsUj1udWxsO251bGwhPT10aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwJiYoUj1zaChNLmdldCh0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwKSkuY2xhc3NlZCgic2VsZWN0ZWQtbWFya2VyIiwhMCkpLF8ub24oImNsaWNrIiwoZnVuY3Rpb24oKXtjb25zdCB0PUk9PT1SP251bGw6STtpZih0PT09UilyZXR1cm47bnVsbCE9PVImJlIuY2xhc3NlZCgic2VsZWN0ZWQtbWFya2VyIiwhMSksUj10LG51bGwhPT1SJiZSLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApO2NvbnN0IG49bnVsbD09PVI/bnVsbDpSLmRhdHVtKCkuc2Vzc2lvbkdyb3VwO2Uuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bn0pKS5vbigibW91c2Vtb3ZlIG1vdXNlZW50ZXIiLChmdW5jdGlvbihbbixpXSl7Y29uc3RbcixvXT1haCh0aGlzKSxhPShmdW5jdGlvbiBzKGUsbixpLHIsbyl7bGV0IGE9MS8wLHM9bnVsbDtyZXR1cm4gdC5xdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrKFRbZV1bbl0saSxyLG8sKCh0LGUpPT57aWYoQS5oYXModCkmJmU8YSl7Y29uc3Qgbj1TdSh0KS5kYXR1bSgpO2E9ZSxzPW4uc2Vzc2lvbkdyb3VwfX0pKSxudWxsPT09cz9udWxsOnNoKE0uZ2V0KHMpKX0pKG4saSxyLG8sMjApO0khPT1hJiYobnVsbCE9PUkmJkkuY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCExKSxJPWEsbnVsbCE9PUk/KEkuY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCEwKSxlLmNsb3Nlc3RTZXNzaW9uR3JvdXA9SS5kYXR1bSgpLnNlc3Npb25Hcm91cCk6ZS5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwpfSkpLm9uKCJtb3VzZWxlYXZlIiwoZnVuY3Rpb24oW3Qsbl0pe251bGwhPT1JJiYoSS5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITEpLEk9bnVsbCxlLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCl9KSksdGhpcy5fc3ZnLnNlbGVjdEFsbCgiKiIpLmNsYXNzZWQoInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90IiwhMCl9X2NlbGxTY2FsZSh0LGUpe2NvbnN0IG49dGhpcy5fY29sRXh0ZW50KHQpLGk9Vk0oKS5kb21haW4obikucmFuZ2UoZSk7aWYoIkxJTkVBUiI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSlyZXR1cm4gaTtpZigiTE9HIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBuWzBdPD0wJiZuWzFdPj0wP2k6S00oKS5kb21haW4obikucmFuZ2UoZSk7aWYoIlFVQU5USUxFIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXtjb25zdCBuPShlWzFdLWVbMF0pLzE5LGk9emwoMjApLm1hcCgodD0+ZVswXStuKnQpKTtyZXR1cm4gb0UoKS5kb21haW4oU2UuZXhwb3J0cy51bmlxKHRoaXMuc2Vzc2lvbkdyb3Vwcy5tYXAoKGU9PnRoaXMuX2NvbFZhbHVlKGUsdCkpKSkpLnJhbmdlKGkpfWlmKCJOT05fTlVNRVJJQyI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSlyZXR1cm4gQU0oKS5kb21haW4oU2UuZXhwb3J0cy51bmlxKHRoaXMuc2Vzc2lvbkdyb3Vwcy5tYXAoKGU9PnRoaXMuX2NvbFZhbHVlKGUsdCkpKS5zb3J0KCkpKS5yYW5nZShlKS5wYWRkaW5nKC4xKTt0aHJvdyJVbmtub3duIHNjYWxlIGZvciBjb2x1bW46ICIrdCsiLiBvcHRpb25zOiAiK3RoaXMub3B0aW9uc31fY29sVmFsdWUodCxlKXtyZXR1cm4gRll0KHRoaXMudmlzaWJsZVNjaGVtYSx0LGUpfV9tZXRyaWNWYWx1ZSh0LGUpe3JldHVybiBIWXQodGhpcy52aXNpYmxlU2NoZW1hLHQsZSl9X2NvbEV4dGVudCh0KXtyZXR1cm4gell0KHRoaXMudmlzaWJsZVNjaGVtYSx0aGlzLnNlc3Npb25Hcm91cHMsdCl9fTtFS3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLmZyYW1lIHJlY3QgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAvKiBUaGUgY2xvc2VzdCBkYXRhIHBvaW50IG1hcmtlciB0byB0aGUgbW91c2UgcG9pbnRlci4gV2UgdXNlICFpbXBvcnRhbnQKICAgICAgICAgdG8gb3ZlcnJpZGUgdGhlIGlubGluZSBzdHlsZSB0aGF0IHNldHMgdGhlIHJlZ3VsYXIgc3R5bGUgb2YgYSBtYXJrZXIuCiAgICAgICovCiAgICAgIC5jbG9zZXN0LW1hcmtlciB7CiAgICAgICAgcjogNiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAvKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGEgcG9pbnQgbWFya2VyLiBXZSB1c2UgIWltcG9ydGFudCB0bwogICAgICAgICBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4gKi8KICAgICAgLnNlbGVjdGVkLW1hcmtlciB7CiAgICAgICAgcjogNiAhaW1wb3J0YW50OwogICAgICAgIGZpbGw6ICMwZjAgIWltcG9ydGFudDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEVLdC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEVLdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRUt0LnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRUt0LnByb3RvdHlwZSwic2VsZWN0ZWRTZXNzaW9uR3JvdXAiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEVLdC5wcm90b3R5cGUsImNsb3Nlc3RTZXNzaW9uR3JvdXAiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsSFRNTEVsZW1lbnQpXSxFS3QucHJvdG90eXBlLCJfY29udGFpbmVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEVLdC5wcm90b3R5cGUsIl9zdmciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRUt0LnByb3RvdHlwZSwid2lkdGgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sRUt0LnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEVLdC5wcm90b3R5cGUsIl9icnVzaGVkQ2VsbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEVLdC5wcm90b3R5cGUsIl9icnVzaFNlbGVjdGlvbiIsdm9pZCAwKSx0KFthKCJzZXNzaW9uR3JvdXBzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEVLdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCksdChbYSgidmlzaWJsZVNjaGVtYS4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxFS3QucHJvdG90eXBlLCJfdmlzaWJsZVNjaGVtYUNoYW5nZWQiLG51bGwpLHQoW2EoIm9wdGlvbnMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sRUt0LnByb3RvdHlwZSwiX3JlZHJhdyIsbnVsbCksRUt0PXQoW2koInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90IildLEVLdCk7bGV0IFRLdD1jbGFzcyBleHRlbmRzIHlle19jbG9zZXN0T3JTZWxlY3RlZCh0LGUpe3JldHVybiBudWxsIT09dD90OmV9fTtUS3QudGVtcGxhdGU9X2VgCiAgICA8aHBhcmFtcy1zcGxpdC1sYXlvdXQgb3JpZW50YXRpb249InZlcnRpY2FsIj4KICAgICAgPCEtLSBDb250cm9scyBiZWhhdmlvciBvZiB0aGUgc2NhdHRlciBwbG90IG1hdHJpeAogICAgICAgICAgICAgb3V0cHV0cyB0aGUgY29uZmlndXJlZCBvcHRpb25zIHRvIHRoZSBfb3B0aW9ucyBwcm9wZXJ0eS4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scwogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9ImNvbnRyb2xzIgogICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBvcHRpb25zPSJ7e19vcHRpb25zfX0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgPCEtLSBUaGUgYWN0dWFsIHNjYXR0ZXIgcGxvdCBtYXRyaXggLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdAogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9InBsb3QiCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIHNlbGVjdGVkLXNlc3Npb24tZ3JvdXA9Int7X3NlbGVjdGVkR3JvdXB9fSIKICAgICAgICBjbG9zZXN0LXNlc3Npb24tZ3JvdXA9Int7X2Nsb3Nlc3RHcm91cH19IgogICAgICAgIG9wdGlvbnM9IltbX29wdGlvbnNdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90PgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcwogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9InZhbHVlcyIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19jbG9zZXN0T3JTZWxlY3RlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3Nlc3RHcm91cCwgX3NlbGVjdGVkR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzPgogICAgICA8IS0tIFNob3dzIHNlc3Npb24gZ3JvdXAgZGV0YWlscyBmb3IgdGhlIGNsaWNrZWQgbWFya2VyLiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0iZGV0YWlscyIKICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19zZWxlY3RlZEdyb3VwXV0iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgICNjb250cm9scyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgI3Bsb3QgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICN2YWx1ZXMgewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogMTE1cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjZGV0YWlscyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVEt0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxUS3QucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxUS3QucHJvdG90eXBlLCJjb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxUS3QucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLFRLdD10KFtpKCJ0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldyIpXSxUS3QpO2xldCBDS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fc2VsZWN0ZWRUYWI9MH19O0NLdC50ZW1wbGF0ZT1fZWAKICAgIDxwYXBlci1oZWFkZXItcGFuZWw+CiAgICAgIDxwYXBlci10b29sYmFyIHNsb3Q9ImhlYWRlciIgY2xhc3M9InRhYi1iYXIiPgogICAgICAgIDxwYXBlci10YWJzIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFRhYn19IiBzbG90PSJ0b3AiPgogICAgICAgICAgPCEtLSB2aWV3LWlkIGNhbiBiZSB1c2VkIGJ5IGludGVncmF0aW9uIHRlc3RzIHRvIGxvY2F0ZSBhIHRhYi4KICAgICAgICAgICAgICAgSXQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSByb290IGVsZW1lbnQgaW1wbGVtZW50aW5nIHRoZSB2aWV3CiAgICAgICAgICAgICAgIHdpdGhvdXQgdGhlICd0Zi1ocGFyYW1zLScgcHJlZml4LiAtLT4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0idGFibGUtdmlldyI+IFRBQkxFIFZJRVcgPC9wYXBlci10YWI+CiAgICAgICAgICA8cGFwZXItdGFiIHZpZXctaWQ9InBhcmFsbGVsLWNvb3Jkcy12aWV3Ij4KICAgICAgICAgICAgUEFSQUxMRUwgQ09PUkRJTkFURVMgVklFVwogICAgICAgICAgPC9wYXBlci10YWI+CiAgICAgICAgICA8cGFwZXItdGFiIHZpZXctaWQ9InNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldyI+CiAgICAgICAgICAgIFNDQVRURVIgUExPVCBNQVRSSVggVklFVwogICAgICAgICAgPC9wYXBlci10YWI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWFuZC1mZWVkYmFjayI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tidWdSZXBvcnRVcmxdXSI+CiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWYkPSJbW2J1Z1JlcG9ydFVybF1dIgogICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgICBpZD0iYnVnLXJlcG9ydCIKICAgICAgICAgICAgICAgICAgcmFpc2VkCiAgICAgICAgICAgICAgICAgIHRpdGxlPSJTZW5kIGEgYnVnIHJlcG9ydCBvciBmZWF0dXJlIHJlcXVlc3QiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIEJ1ZyBSZXBvcnQgLyBGZWF0dXJlIFJlcXVlc3QKICAgICAgICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hlbHBVcmxdXSI+CiAgICAgICAgICAgICAgPGEgaHJlZiQ9IltbaGVscFVybF1dIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj4KICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICBpY29uPSJoZWxwLW91dGxpbmUiCiAgICAgICAgICAgICAgICAgIHRpdGxlPSJWaWV3IGRvY3VtZW50YXRpb24iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvcGFwZXItdGFicz4KICAgICAgPC9wYXBlci10b29sYmFyPgogICAgICA8aXJvbi1wYWdlcyBzZWxlY3RlZD0iW1tfc2VsZWN0ZWRUYWJdXSIgY2xhc3M9ImZpdCB0YWItdmlldyI+CiAgICAgICAgPGRpdiBpZD0iMCIgY2xhc3M9InRhYiI+CiAgICAgICAgICA8dGYtaHBhcmFtcy10YWJsZS12aWV3CiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgICAgZW5hYmxlLXNob3ctbWV0cmljcwogICAgICAgICAgPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iMSIgY2xhc3M9InRhYiI+CiAgICAgICAgICA8dGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldwogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iMiIgY2xhc3M9InRhYiI+CiAgICAgICAgICA8dGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXZpZXcKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICBjb25maWd1cmF0aW9uPSJbW2NvbmZpZ3VyYXRpb25dXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgPC9pcm9uLXBhZ2VzPgogICAgPC9wYXBlci1oZWFkZXItcGFuZWw+CgogICAgPHN0eWxlPgogICAgICAudGFiLXZpZXcgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAudGFiLWJhciB7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKAogICAgICAgICAgLS10Yi10b29sYmFyLWJhY2tncm91bmQtY29sb3IsCiAgICAgICAgICB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKQogICAgICAgICk7CiAgICAgIH0KICAgICAgLnRhYiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIHBhcGVyLXRhYnMgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgLS1wYXBlci10YWJzLXNlbGVjdGlvbi1iYXItY29sb3I6IHdoaXRlOwogICAgICAgIC0tcGFwZXItdGFicy1jb250ZW50OiB7CiAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGYtaHBhcmFtcy10YWJsZS12aWV3IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLmhlbHAtYW5kLWZlZWRiYWNrIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgLyogRW5zdXJlIHRoYXQgaWNvbnMgc3RheSBhbGlnbmVkICovCiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQogICAgICAjYnVnLXJlcG9ydCB7CiAgICAgICAgYm9yZGVyOiBzb2xpZCBibGFjazsKICAgICAgICBiYWNrZ3JvdW5kOiByZWQ7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkczsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CiAgICAgIC5oZWxwLWFuZC1mZWVkYmFjayBhIHsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQ0t0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxDS3QucHJvdG90eXBlLCJoZWxwVXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENLdC5wcm90b3R5cGUsImJ1Z1JlcG9ydFVybCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxDS3QucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxDS3QucHJvdG90eXBlLCJjb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxDS3QucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLENLdC5wcm90b3R5cGUsIl9zZWxlY3RlZFRhYiIsdm9pZCAwKSxDS3Q9dChbaSgidGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lIildLENLdCk7Y2xhc3MgQUt0e2NvbnN0cnVjdG9yKHQsZSxuPSEwKXt0aGlzLl9hcGlVcmw9dCx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1lLHRoaXMuX3VzZUh0dHBHZXQ9bn1nZXRFeHBlcmltZW50KHQpe3JldHVybiB0aGlzLl9zZW5kUmVxdWVzdCgiZXhwZXJpbWVudCIsdCl9Z2V0RG93bmxvYWRVcmwodCxlLG4pe3JldHVybiB0aGlzLl9hcGlVcmwrIi9kb3dubG9hZF9kYXRhPyIrbmV3IFVSTFNlYXJjaFBhcmFtcyh7Zm9ybWF0OnQsY29sdW1uc1Zpc2liaWxpdHk6SlNPTi5zdHJpbmdpZnkobikscmVxdWVzdDpKU09OLnN0cmluZ2lmeShlKX0pfWxpc3RTZXNzaW9uR3JvdXBzKHQpe3JldHVybiB0aGlzLl9zZW5kUmVxdWVzdCgic2Vzc2lvbl9ncm91cHMiLHQpfWxpc3RNZXRyaWNFdmFscyh0KXtyZXR1cm4gdGhpcy5fc2VuZFJlcXVlc3QoIm1ldHJpY19ldmFscyIsdCl9X3NlbmRSZXF1ZXN0KHQsZSl7aWYodGhpcy5fdXNlSHR0cEdldCl7Y29uc3Qgbj1lbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHRoaXMuX2FwaVVybCsiLyIrdCsiP3JlcXVlc3Q9IituKX1jb25zdCBuPW5ldyBocjtyZXR1cm4gbi53aXRoQ3JlZGVudGlhbHM9ITAsbi5tZXRob2RUeXBlPXVyLlBPU1Qsbi5jb250ZW50VHlwZT0idGV4dC9wbGFpbiIsbi5ib2R5PUpTT04uc3RyaW5naWZ5KGUpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3RXaXRoT3B0aW9ucyh0aGlzLl9hcGlVcmwrIi8iK3Qsbil9fWxldCBrS3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe3JlbG9hZCgpe3RoaXMuJFsicXVlcnktcGFuZSJdLnJlbG9hZCgpfX07a0t0LnRlbXBsYXRlPV9lYAogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzaWRlYmFyIj4KICAgICAgICA8dGYtaHBhcmFtcy1xdWVyeS1wYW5lCiAgICAgICAgICBpZD0icXVlcnktcGFuZSIKICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICBjb25maWd1cmF0aW9uPSJ7e19jb25maWd1cmF0aW9ufX0iCiAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0ie3tfc2Vzc2lvbkdyb3Vwc319IgogICAgICAgICAgZGF0YS1sb2FkZWQtd2l0aC1ub24tZW1wdHktaHBhcmFtcz0ie3tfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXN9fSIKICAgICAgICAgIGRhdGEtbG9hZGVkLXdpdGgtZW1wdHktaHBhcmFtcz0ie3tfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXN9fSIKICAgICAgICA+CiAgICAgICAgPC90Zi1ocGFyYW1zLXF1ZXJ5LXBhbmU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXNdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gaHBhcmFtcyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaHBhcmFtcyBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBFdmVudCBmaWxlcyBhcmUgc3RpbGwgYmVpbmcgbG9hZGVkICh0cnkgcmVsb2FkaW5nIHRoaXMgcGFnZSkuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXNdXSI+CiAgICAgICAgICA8dGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lCiAgICAgICAgICAgIGlkPSJzZXNzaW9ucy1wYW5lIgogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgaGVscC11cmw9IltbaGVscFVybF1dIgogICAgICAgICAgICBidWctcmVwb3J0LXVybD0iW1tidWdSZXBvcnRVcmxdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbX2NvbmZpZ3VyYXRpb25dXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9IltbX3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgaHBhcmFtcy1zcGxpdC1sYXlvdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgd2lkdGg6IDIwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG1pbi13aWR0aDogMTAlOwogICAgICB9CgogICAgICAuY2VudGVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CgogICAgICBhIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7CiAgICAgIH0KCiAgICAgIGE6dmlzaXRlZCB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmstdmlzaXRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixBS3QpXSxrS3QucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGtLdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGtLdC5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sa0t0LnByb3RvdHlwZSwiYnVnUmVwb3J0VXJsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGtLdC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxrS3QucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGtLdC5wcm90b3R5cGUsIl9kYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGtLdC5wcm90b3R5cGUsIl9kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKSxrS3Q9dChbaSgidGYtaHBhcmFtcy1tYWluIildLGtLdCk7Y29uc3QgTEt0PSJ0cnVlIj09PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ0ZW5zb3Jib2FyZENvbGFiIik7bGV0IFBLdD1jbGFzcyBleHRlbmRzKGVyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2JhY2tlbmQ9bmV3IEFLdChfcigpLnBsdWdpblJvdXRlKCJocGFyYW1zIiwiIiksbmV3IGRyLExLdCl9cmVsb2FkKCl7dGhpcy4kWyJocGFyYW1zLW1haW4iXS5yZWxvYWQoKX19O1BLdC50ZW1wbGF0ZT1fZWAKICAgIDwhLS0gVGVuc29yQm9hcmQgZG9lcyBub3Qgc3BlY2lmeSBhbiBleHBlcmltZW50TmFtZS4gQ3VycmVudGx5IGl0IG9ubHkKICAgICAgICAgc3VwcG9ydHMgb25lIGV4cGVyaW1lbnQgcGVyIGludm9jYXRpb24uIC0tPgogICAgPHRmLWhwYXJhbXMtbWFpbgogICAgICBpZD0iaHBhcmFtcy1tYWluIgogICAgICBiYWNrZW5kPSJbW19iYWNrZW5kXV0iCiAgICAgIGV4cGVyaW1lbnQtbmFtZT0iIgogICAgPgogICAgPC90Zi1ocGFyYW1zLW1haW4+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQS3QucHJvdG90eXBlLCJfYmFja2VuZCIsdm9pZCAwKSxQS3Q9dChbaSgidGYtaHBhcmFtcy1kYXNoYm9hcmQiKV0sUEt0KTtsZXQgTkt0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3R1YWxTaXplPSExLHRoaXMuYnJpZ2h0bmVzc0FkanVzdG1lbnQ9LjUsdGhpcy5jb250cmFzdFBlcmNlbnRhZ2U9MCx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgWFIsdGhpcy5faW1hZ2VDYW5jZWxsZXI9bmV3IFhSLHRoaXMuX3N0ZXBzPVtdLHRoaXMuX2lzSW1hZ2VMb2FkaW5nPSExfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4gR1IodGhpcy5ydW4pfWdldCBfaGFzQXRMZWFzdE9uZVN0ZXAoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjB9Z2V0IF9oYXNNdWx0aXBsZVN0ZXBzKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4xfWdldCBfY3VycmVudFN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XXx8bnVsbH1nZXQgX3N0ZXBWYWx1ZSgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P3Quc3RlcDowfWdldCBfY3VycmVudFdhbGxUaW1lKCl7dmFyIHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/S1IodC53YWxsX3RpbWUpOiIifWdldCBfbWF4U3RlcEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0ZXBzLmxlbmd0aC0xfWdldCBfc2FtcGxlVGV4dCgpe3JldHVybmAke3RoaXMuc2FtcGxlKzF9YH1nZXQgX2hhc011bHRpcGxlU2FtcGxlcygpe3JldHVybiB0aGlzLm9mU2FtcGxlcz4xfV9nZXRBcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5hY3R1YWxTaXplPyJ0cnVlIjoiZmFsc2UifWF0dGFjaGVkKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5pc0F0dGFjaGVkKXJldHVybjt0aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxBbGwoKTtjb25zdCB0PWlPKF9yKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi9pbWFnZXMiKSx7dGFnOnRoaXMudGFnLHJ1bjp0aGlzLnJ1bixzYW1wbGU6dGhpcy5zYW1wbGV9KSxlPXRoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO2NvbnN0IGU9dC52YWx1ZS5tYXAodGhpcy5fY3JlYXRlU3RlcERhdHVtLmJpbmQodGhpcykpO3RoaXMuc2V0KCJfc3RlcHMiLGUpLHRoaXMuc2V0KCJfc3RlcEluZGV4IixlLmxlbmd0aC0xKX0pKTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1fY3JlYXRlU3RlcERhdHVtKHQpe2xldCBlPV9yKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi9pbmRpdmlkdWFsSW1hZ2UiKTtyZXR1cm4gZT1pTyhlLHt0czp0LndhbGxfdGltZX0pLGUrPSImIit0LnF1ZXJ5LHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQud2FsbF90aW1lKSxzdGVwOnQuc3RlcCx1cmw6ZX19X3VwZGF0ZUltYWdlVXJsKCl7dmFyIHQ9dGhpcy5fY3VycmVudFN0ZXAsZT10aGlzLmJyaWdodG5lc3NBZGp1c3RtZW50LG49dGhpcy5jb250cmFzdFBlcmNlbnRhZ2U7aWYoIXQpcmV0dXJuO2NvbnN0IGk9bmV3IEltYWdlO3RoaXMuX2ltYWdlQ2FuY2VsbGVyLmNhbmNlbEFsbCgpLGkub25sb2FkPWkub25lcnJvcj10aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXRoaXMuJCQoIiNtYWluLWltYWdlLWNvbnRhaW5lciIpO2UudGV4dENvbnRlbnQ9IiIsWWkoZSkuYXBwZW5kQ2hpbGQoaSksdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITEpfSkpLmJpbmQodGhpcyksaS5zdHlsZS5maWx0ZXI9YGNvbnRyYXN0KCR7bn0lKSBgLGkuc3R5bGUuZmlsdGVyKz1gYnJpZ2h0bmVzcygke2V9KWAsdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITApLGkuc3JjPXQudXJsfV9oYW5kbGVUYXAodCl7dGhpcy5zZXQoImFjdHVhbFNpemUiLCF0aGlzLmFjdHVhbFNpemUpfV90b0xvY2FsZVN0cmluZyh0KXtyZXR1cm4gdC50b0xvY2FsZVN0cmluZygpfX07Tkt0LnRlbXBsYXRlPV9lYAogICAgPHRmLWNhcmQtaGVhZGluZwogICAgICB0YWc9IltbdGFnXV0iCiAgICAgIHJ1bj0iW1tydW5dXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICAgIGNvbG9yPSJbW19ydW5Db2xvcl1dIgogICAgPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU2FtcGxlc11dIj4KICAgICAgICA8ZGl2PnNhbXBsZTogW1tfc2FtcGxlVGV4dF1dIG9mIFtbb2ZTYW1wbGVzXV08L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiCiAgICAgICAgICAgICAgPltbX3RvTG9jYWxlU3RyaW5nKF9zdGVwVmFsdWUpXV08L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQgZGF0ZXRpbWUiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc0ltYWdlTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzXV0iPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcwogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KCiAgICA8IS0tIFNlbWFudGljYWxseSBhIGJ1dHRvbiBidXQgPGltZz4gaW5zaWRlIGEgPGJ1dHRvbj4gZGlzYWxsb3dzIHVzZXIgdG8gZG8KICAgIGFuIGludGVyZXN0aW5nIG9wZXJhdGlvbiBsaWtlICJDb3B5IEltYWdlIiBpbiBub24tQ2hyb21pdW0gYnJvd3NlcnMuIC0tPgogICAgPGEKICAgICAgaWQ9Im1haW4taW1hZ2UtY29udGFpbmVyIgogICAgICByb2xlPSJidXR0b24iCiAgICAgIGFyaWEtbGFiZWw9IlRvZ2dsZSBhY3R1YWwgc2l6ZSIKICAgICAgYXJpYS1leHBhbmRlZCQ9IltbX2dldEFyaWFFeHBhbmRlZChhY3R1YWxTaXplKV1dIgogICAgICBvbi10YXA9Il9oYW5kbGVUYXAiCiAgICA+PC9hPgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICAvKiogTWFrZSBidXR0b24gYSBkaXYuICovCiAgICAgIGJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IEdldCByaWQgb2YgZG90dGVkIGxpbmUgaW5zaWRlIGJ1dHRvbi4gKi8KICAgICAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IFNpbXVsYXRlIENocm9tZSdzIG91dGVyIGdsb3cgb24gYnV0dG9uIHdoZW4gZm9jdXNlZC4gKi8KICAgICAgYnV0dG9uOi1tb3otZm9jdXNyaW5nIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMXB4IDJweCBIaWdobGlnaHQ7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMzUwcHg7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDAgMTVweCA0MHB4IDA7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLyoqIFdoZW4gYWN0dWFsIHNpemUgc2hvd24gaXMgb24sIHVzZSB0aGUgYWN0dWFsIGltYWdlIHdpZHRoLiAqLwogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFthY3R1YWwtc2l6ZV0pICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1zcGlubmVyLWxpdGUgewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207CiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI3N0ZXBzIHsKICAgICAgICBoZWlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luOiAwIDAgMCAtMTVweDsKICAgICAgICAvKgogICAgICAgICAqIDMxIGNvbWVzIGZyb20gYWRkaW5nIGEgcGFkZGluZyBvZiAxNXB4IGZyb20gYm90aCBzaWRlcyBvZiB0aGUKICAgICAgICAgKiBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nIDFweCBzbyB0aGF0IHRoZSBzbGlkZXIgd2lkdGggYWxpZ25zCiAgICAgICAgICogd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwgYW5kCiAgICAgICAgICogYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZgogICAgICAgICAqIHRoZSBpbWFnZS4gMzAgLSAxICsgMi4KICAgICAgICAgKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CgogICAgICAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDEwMjRweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIGltZyB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTkt0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5LdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxOS3QucHJvdG90eXBlLCJzYW1wbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTkt0LnByb3RvdHlwZSwib2ZTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE5LdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5LdC5wcm90b3R5cGUsImFjdHVhbFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTkt0LnByb3RvdHlwZSwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTkt0LnByb3RvdHlwZSwiY29udHJhc3RQZXJjZW50YWdlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0sTkt0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTkt0LnByb3RvdHlwZSwiX21ldGFkYXRhQ2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE5LdC5wcm90b3R5cGUsIl9pbWFnZUNhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLE5LdC5wcm90b3R5cGUsIl9zdGVwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTkt0LnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5LdC5wcm90b3R5cGUsIl9pc0ltYWdlTG9hZGluZyIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOS3QucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOS3QucHJvdG90eXBlLCJfaGFzQXRMZWFzdE9uZVN0ZXAiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOS3QucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLE5LdC5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTkt0LnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTkt0LnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTkt0LnByb3RvdHlwZSwiX21heFN0ZXBJbmRleCIsbnVsbCksdChbcygic2FtcGxlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTkt0LnByb3RvdHlwZSwiX3NhbXBsZVRleHQiLG51bGwpLHQoW3MoIm9mU2FtcGxlcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxOS3QucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLE5LdC5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX2N1cnJlbnRTdGVwIiwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLCJjb250cmFzdFBlcmNlbnRhZ2UiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLE5LdC5wcm90b3R5cGUsIl91cGRhdGVJbWFnZVVybCIsbnVsbCksTkt0PXQoW2koInRmLWltYWdlLWxvYWRlciIpXSxOS3QpO2xldCBJS3Q9Y2xhc3MgZXh0ZW5kcyhlcih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50PTEsdGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZT0xMDAsdGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9MSx0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9MTAwLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkSW1hZ2VzKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9X3IoKS5wbHVnaW5Sb3V0ZSgiaW1hZ2VzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoU2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1hcihTZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRJbWFnZXMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtaW1hZ2UtbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9X3Jlc2V0QnJpZ2h0bmVzcygpe3RoaXMuX2JyaWdodG5lc3NBZGp1c3RtZW50PXRoaXMuX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudH1fcmVzZXRDb250cmFzdCgpe3RoaXMuX2NvbnRyYXN0UGVyY2VudGFnZT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfWdldCBfYnJpZ2h0bmVzc0lzRGVmYXVsdCgpe3JldHVybiB0aGlzLl9icmlnaHRuZXNzQWRqdXN0bWVudD09PXRoaXMuX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudH1nZXQgX2NvbnRyYXN0SXNEZWZhdWx0KCl7cmV0dXJuIHRoaXMuX2NvbnRyYXN0UGVyY2VudGFnZT09PXRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2V9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLGU9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyO2Z1bmN0aW9uIGkoZSl7Y29uc3Qgbj10W2UucnVuXVtlLnRhZ10uc2FtcGxlcztyZXR1cm4gU2UuZXhwb3J0cy5yYW5nZShuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sZSx7c2FtcGxlOnQsb2ZTYW1wbGVzOm59KSkpfXJldHVybiBNcihTZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpLGUsbikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LHQse2l0ZW1zOltdLmNvbmNhdC5hcHBseShbXSx0Lml0ZW1zLm1hcChpKSl9KSkpfV90YWdNZXRhZGF0YSh0LGUsbil7cmV0dXJuIHRbZV1bbl19fTt2YXIgUkt0LE9LdCx6S3Q7SUt0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X2FjdHVhbFNpemV9fSIKICAgICAgICAgICAgICAgID5TaG93IGFjdHVhbCBpbWFnZSBzaXplPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMyBjbGFzcz0idG9vbHRpcC1jb250YWluZXIiPkJyaWdodG5lc3MgYWRqdXN0bWVudDwvaDM+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSIyIgogICAgICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgICAgIHBpbgogICAgICAgICAgICAgICAgc3RlcD0iMC4wMSIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e19icmlnaHRuZXNzQWRqdXN0bWVudH19IgogICAgICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19icmlnaHRuZXNzQWRqdXN0bWVudH19IgogICAgICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0ieC1idXR0b24iCiAgICAgICAgICAgICAgICBvbi10YXA9Il9yZXNldEJyaWdodG5lc3MiCiAgICAgICAgICAgICAgICBkaXNhYmxlZD0iW1tfYnJpZ2h0bmVzc0lzRGVmYXVsdF1dIgogICAgICAgICAgICAgICAgPlJlc2V0PC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5Db250cmFzdCBhZGp1c3RtZW50PC9oMz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIj4KICAgICAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgICBtYXg9IjUwMCIKICAgICAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgICAgICBwaW4KICAgICAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tfY29udHJhc3RQZXJjZW50YWdlfX0iCiAgICAgICAgICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IgogICAgICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0ieC1idXR0b24iCiAgICAgICAgICAgICAgICBvbi10YXA9Il9yZXNldENvbnRyYXN0IgogICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2NvbnRyYXN0SXNEZWZhdWx0XV0iCiAgICAgICAgICAgICAgICA+UmVzZXQ8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvcgogICAgICAgICAgICBpZD0icnVucy1zZWxlY3RvciIKICAgICAgICAgICAgc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iCiAgICAgICAgICA+PC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGltYWdlIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBpbWFnZSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtaW1hZ2UtbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIKICAgICAgICAgICAgICAgICAgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBhY3R1YWwtc2l6ZT0iW1tfYWN0dWFsU2l6ZV1dIgogICAgICAgICAgICAgICAgICBicmlnaHRuZXNzLWFkanVzdG1lbnQ9IltbX2JyaWdodG5lc3NBZGp1c3RtZW50XV0iCiAgICAgICAgICAgICAgICAgIGNvbnRyYXN0LXBlcmNlbnRhZ2U9IltbX2NvbnRyYXN0UGVyY2VudGFnZV1dIgogICAgICAgICAgICAgICAgPjwvdGYtaW1hZ2UtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLXNsaWRlciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItYnV0dG9uIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1idXR0b25bZGlzYWJsZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDsKICAgICAgfQogICAgICAueC1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgIH0KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLElLdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLElLdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSUt0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLElLdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJS3QucHJvdG90eXBlLCJfYWN0dWFsU2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxJS3QucHJvdG90eXBlLCJfZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLElLdC5wcm90b3R5cGUsIl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLElLdC5wcm90b3R5cGUsIl9icmlnaHRuZXNzQWRqdXN0bWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxJS3QucHJvdG90eXBlLCJfY29udHJhc3RQZXJjZW50YWdlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLElLdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJS3QucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLElLdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfYnJpZ2h0bmVzc0FkanVzdG1lbnQiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSUt0LnByb3RvdHlwZSwiX2JyaWdodG5lc3NJc0RlZmF1bHQiLG51bGwpLHQoW3MoIl9jb250cmFzdFBlcmNlbnRhZ2UiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSUt0LnByb3RvdHlwZSwiX2NvbnRyYXN0SXNEZWZhdWx0IixudWxsKSx0KFtzKCJfcnVuVG9UYWdJbmZvIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxJS3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksSUt0PXQoW2koInRmLWltYWdlLWRhc2hib2FyZCIpXSxJS3QpLChmdW5jdGlvbih0KXt0W3QuQ0FOQ0VMTEVEPTFdPSJDQU5DRUxMRUQifSkoUkt0fHwoUkt0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5WRVJURVg9MV09IlZFUlRFWCIsdFt0LkZBQ0U9Ml09IkZBQ0UiLHRbdC5DT0xPUj0zXT0iQ09MT1IifSkoT0t0fHwoT0t0PXt9KSksKGZ1bmN0aW9uKHQpe3QuVkVSVEVYPSJmbG9hdDMyIix0LkZBQ0U9ImludDMyIix0LkNPTE9SPSJ1aW50OCJ9KSh6S3R8fCh6S3Q9e30pKTtjbGFzcyBES3R7Y29uc3RydWN0b3IodCl7dGhpcy5fY2FuY2VsbGVyPW5ldyBYUix0aGlzLl9yZXF1ZXN0TWFuYWdlcj10fXJlbG9hZCh0LGUsbil7cmV0dXJuIHRoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKSx0aGlzLl9mZXRjaE1ldGFkYXRhKHQsZSxuKX1fZmV0Y2hEYXRhQnlTdGVwKHQsZSxuLGkscixvKXtjb25zdCBhPV9yKCkucGx1Z2luUm91dGUoIm1lc2giLCIvZGF0YSIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOnQsY29udGVudF90eXBlOm4sc2FtcGxlOlN0cmluZyhpKSxzdGVwOlN0cmluZyhyKX0pKSxzPWZ1bmN0aW9uKHQpe2xldCBlPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGgvMztuKyspe2xldCBpPVtdO2ZvcihsZXQgZT0wO2U8MztlKyspaS5wdXNoKHRbMypuK2VdKTtlLnB1c2goaSl9cmV0dXJuIGV9LGw9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuIFByb21pc2UucmVqZWN0KHtjb2RlOlJLdC5DQU5DRUxMRUQsbWVzc2FnZToiUmVzcG9uc2Ugd2FzIGludmFsaWRhdGVkLiJ9KTtsZXQgZT10LnZhbHVlO3N3aXRjaChuKXtjYXNlIlZFUlRFWCI6by52ZXJ0aWNlcz1zKG5ldyBGbG9hdDMyQXJyYXkoZSkpO2JyZWFrO2Nhc2UiRkFDRSI6by5mYWNlcz1zKG5ldyBJbnQzMkFycmF5KGUpKTticmVhaztjYXNlIkNPTE9SIjpvLmNvbG9ycz1zKG5ldyBVaW50OEFycmF5KGUpKX1yZXR1cm4gb30pKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIuZmV0Y2goYSx7bWV0aG9kOiJHRVQiLGhlYWRlcnM6e3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLGNvbnRlbnRUeXBlOnpLdFtuXX19KS50aGVuKCh0PT50LmFycmF5QnVmZmVyKCkpKS50aGVuKGwpfWZldGNoRGF0YSh0LGUsbixpKXtsZXQgcj1bXSxvPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5rZXlzKE9LdCkuZm9yRWFjaCgoYT0+e3QuY29tcG9uZW50cyYxPDxPS3RbYV0mJnIucHVzaCh0aGlzLl9mZXRjaERhdGFCeVN0ZXAoZSxuLGEsaSx0LnN0ZXAsbykpfSkpLFByb21pc2UuYWxsKHIpfV9mZXRjaE1ldGFkYXRhKHQsZSxuKXt0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCk7Y29uc3QgaT1fcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL21lc2hlcyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOnQsc2FtcGxlOm59KSkscj10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9PnQuY2FuY2VsbGVkP1Byb21pc2UucmVqZWN0KHtjb2RlOlJLdC5DQU5DRUxMRUQsbWVzc2FnZToiUmVzcG9uc2Ugd2FzIGludmFsaWRhdGVkLiJ9KTp0LnZhbHVlKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGkpLnRoZW4oKHQ9PnQuanNvbigpKSkudGhlbihyKS50aGVuKHRoaXMuX3Byb2Nlc3NNZXRhZGF0YS5iaW5kKHRoaXMpKX1fcHJvY2Vzc01ldGFkYXRhKHQpe2lmKCF0KXJldHVybjtjb25zdCBlPW5ldyBNYXA7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl07ZS5oYXMoaS5zdGVwKXx8ZS5zZXQoaS5zdGVwLFtdKSxlLmdldChpLnN0ZXApLnB1c2goaSl9bGV0IG49W107cmV0dXJuIGUuZm9yRWFjaCgodD0+e2xldCBlPXRoaXMuX2NyZWF0ZVN0ZXBEYXR1bSh0WzBdKTtuLnB1c2goZSl9KSksbn1fY3JlYXRlU3RlcERhdHVtKHQpe3JldHVybnt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQud2FsbF90aW1lKSxzdGVwOnQuc3RlcCxjb25maWc6dC5jb25maWcsY29udGVudF90eXBlOnQuY29udGVudF90eXBlLGNvbXBvbmVudHM6dC5jb21wb25lbnRzfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCAyMDEwLTIwMjEgVGhyZWUuanMgQXV0aG9ycwogICAgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogICAgICovY29uc3QgQkt0PSIxMzEiLEhLdD17TEVGVDowLE1JRERMRToxLFJJR0hUOjIsUk9UQVRFOjAsRE9MTFk6MSxQQU46Mn0sRkt0PXtST1RBVEU6MCxQQU46MSxET0xMWV9QQU46MixET0xMWV9ST1RBVEU6M30sVkt0PTEwMCxVS3Q9MzAwLGpLdD0zMDEsR0t0PTMwMixXS3Q9MzAzLHFLdD0zMDQsWUt0PTMwNixYS3Q9MzA3LCRLdD0xZTMsS0t0PTEwMDEsWkt0PTEwMDIsSkt0PTEwMDMsUUt0PTEwMDQsdFp0PTEwMDUsZVp0PTEwMDYsblp0PTEwMDcsaVp0PTEwMDgsclp0PTEwMDksb1p0PTEwMTIsYVp0PTEwMTQsc1p0PTEwMTUsbFp0PTEwMTYsY1p0PTEwMjAsdVp0PTEwMjIsaFp0PTEwMjMsZFp0PTEwMjYscFp0PTEwMjcsZlp0PTMzNzc2LG1adD0zMzc3NyxnWnQ9MzM3NzgsX1p0PTMzNzc5LHladD0zNTg0MCx2WnQ9MzU4NDEsYlp0PTM1ODQyLHhadD0zNTg0Myx3WnQ9Mzc0OTIsU1p0PTM3NDk2LE1adD0yMzAwLEVadD0yMzAxLFRadD0yMzAyLENadD0yNDAwLEFadD0yNDAxLGtadD0yNDAyLExadD0yNTAwLFBadD0yNTAxLE5adD0zZTMsSVp0PTMwMDEsUlp0PTMwMDcsT1p0PTMwMDIselp0PTMwMDQsRFp0PTMwMDUsQlp0PTMwMDYsSFp0PTc2ODAsRlp0PTM1MDQ0LFZadD0zNTA0OCxVWnQ9IjMwMCBlcyI7Y2xhc3Mgalp0e2FkZEV2ZW50TGlzdGVuZXIodCxlKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3ZvaWQgMD09PW5bdF0mJihuW3RdPVtdKSwtMT09PW5bdF0uaW5kZXhPZihlKSYmblt0XS5wdXNoKGUpfWhhc0V2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9saXN0ZW5lcnM7cmV0dXJuIHZvaWQgMCE9PW5bdF0mJi0xIT09blt0XS5pbmRleE9mKGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHZvaWQgMCE9PW4pe2NvbnN0IHQ9bi5pbmRleE9mKGUpOy0xIT09dCYmbi5zcGxpY2UodCwxKX19ZGlzcGF0Y2hFdmVudCh0KXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYodm9pZCAwIT09ZSl7dC50YXJnZXQ9dGhpcztjb25zdCBuPWUuc2xpY2UoMCk7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKW5bZV0uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX1jb25zdCBHWnQ9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKUdadFt0XT0odDwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpO2xldCBXWnQ9MTIzNDU2Nztjb25zdCBxWnQ9TWF0aC5QSS8xODAsWVp0PTE4MC9NYXRoLlBJO2Z1bmN0aW9uIFhadCgpe2NvbnN0IHQ9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsZT00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxuPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGk9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDA7cmV0dXJuKEdadFsyNTUmdF0rR1p0W3Q+PjgmMjU1XStHWnRbdD4+MTYmMjU1XStHWnRbdD4+MjQmMjU1XSsiLSIrR1p0WzI1NSZlXStHWnRbZT4+OCYyNTVdKyItIitHWnRbZT4+MTYmMTV8NjRdK0dadFtlPj4yNCYyNTVdKyItIitHWnRbNjMmbnwxMjhdK0dadFtuPj44JjI1NV0rIi0iK0dadFtuPj4xNiYyNTVdK0dadFtuPj4yNCYyNTVdK0dadFsyNTUmaV0rR1p0W2k+PjgmMjU1XStHWnRbaT4+MTYmMjU1XStHWnRbaT4+MjQmMjU1XSkudG9VcHBlckNhc2UoKX1mdW5jdGlvbiAkWnQodCxlLG4pe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKG4sdCkpfWZ1bmN0aW9uIEtadCh0LGUpe3JldHVybih0JWUrZSklZX1mdW5jdGlvbiBaWnQodCxlLG4pe3JldHVybigxLW4pKnQrbiplfWZ1bmN0aW9uIEpadCh0KXtyZXR1cm4gMD09KHQmdC0xKSYmMCE9PXR9ZnVuY3Rpb24gUVp0KHQpe3JldHVybiBNYXRoLnBvdygyLE1hdGguY2VpbChNYXRoLmxvZyh0KS9NYXRoLkxOMikpfWZ1bmN0aW9uIHRKdCh0KXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSl9dmFyIGVKdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxERUcyUkFEOnFadCxSQUQyREVHOlladCxnZW5lcmF0ZVVVSUQ6WFp0LGNsYW1wOiRadCxldWNsaWRlYW5Nb2R1bG86S1p0LG1hcExpbmVhcjpmdW5jdGlvbiBuSnQodCxlLG4saSxyKXtyZXR1cm4gaSsodC1lKSooci1pKS8obi1lKX0saW52ZXJzZUxlcnA6ZnVuY3Rpb24gaUp0KHQsZSxuKXtyZXR1cm4gdCE9PWU/KG4tdCkvKGUtdCk6MH0sbGVycDpaWnQsZGFtcDpmdW5jdGlvbiBySnQodCxlLG4saSl7cmV0dXJuIFpadCh0LGUsMS1NYXRoLmV4cCgtbippKSl9LHBpbmdwb25nOmZ1bmN0aW9uIG9KdCh0LGU9MSl7cmV0dXJuIGUtTWF0aC5hYnMoS1p0KHQsMiplKS1lKX0sc21vb3Roc3RlcDpmdW5jdGlvbiBhSnQodCxlLG4pe3JldHVybiB0PD1lPzA6dD49bj8xOih0PSh0LWUpLyhuLWUpKSp0KigzLTIqdCl9LHNtb290aGVyc3RlcDpmdW5jdGlvbiBzSnQodCxlLG4pe3JldHVybiB0PD1lPzA6dD49bj8xOih0PSh0LWUpLyhuLWUpKSp0KnQqKHQqKDYqdC0xNSkrMTApfSxyYW5kSW50OmZ1bmN0aW9uIGxKdCh0LGUpe3JldHVybiB0K01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooZS10KzEpKX0scmFuZEZsb2F0OmZ1bmN0aW9uIGNKdCh0LGUpe3JldHVybiB0K01hdGgucmFuZG9tKCkqKGUtdCl9LHJhbmRGbG9hdFNwcmVhZDpmdW5jdGlvbiB1SnQodCl7cmV0dXJuIHQqKC41LU1hdGgucmFuZG9tKCkpfSxzZWVkZWRSYW5kb206ZnVuY3Rpb24gaEp0KHQpe3JldHVybiB2b2lkIDAhPT10JiYoV1p0PXQlMjE0NzQ4MzY0NyksV1p0PTE2ODA3KldadCUyMTQ3NDgzNjQ3LChXWnQtMSkvMjE0NzQ4MzY0Nn0sZGVnVG9SYWQ6ZnVuY3Rpb24gZEp0KHQpe3JldHVybiB0KnFadH0scmFkVG9EZWc6ZnVuY3Rpb24gcEp0KHQpe3JldHVybiB0KlladH0saXNQb3dlck9mVHdvOkpadCxjZWlsUG93ZXJPZlR3bzpRWnQsZmxvb3JQb3dlck9mVHdvOnRKdCxzZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyOmZ1bmN0aW9uIGZKdCh0LGUsbixpLHIpe2NvbnN0IG89TWF0aC5jb3MsYT1NYXRoLnNpbixzPW8obi8yKSxsPWEobi8yKSxjPW8oKGUraSkvMiksdT1hKChlK2kpLzIpLGg9bygoZS1pKS8yKSxkPWEoKGUtaSkvMikscD1vKChpLWUpLzIpLGY9YSgoaS1lKS8yKTtzd2l0Y2gocil7Y2FzZSJYWVgiOnQuc2V0KHMqdSxsKmgsbCpkLHMqYyk7YnJlYWs7Y2FzZSJZWlkiOnQuc2V0KGwqZCxzKnUsbCpoLHMqYyk7YnJlYWs7Y2FzZSJaWFoiOnQuc2V0KGwqaCxsKmQscyp1LHMqYyk7YnJlYWs7Y2FzZSJYWlgiOnQuc2V0KHMqdSxsKmYsbCpwLHMqYyk7YnJlYWs7Y2FzZSJZWFkiOnQuc2V0KGwqcCxzKnUsbCpmLHMqYyk7YnJlYWs7Y2FzZSJaWVoiOnQuc2V0KGwqZixsKnAscyp1LHMqYyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLk1hdGhVdGlsczogLnNldFF1YXRlcm5pb25Gcm9tUHJvcGVyRXVsZXIoKSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIG9yZGVyOiAiK3IpfX19KTtjbGFzcyBtSnR7Y29uc3RydWN0b3IodD0wLGU9MCl7dGhpcy54PXQsdGhpcy55PWV9Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMueH1zZXQgd2lkdGgodCl7dGhpcy54PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnl9c2V0IGhlaWdodCh0KXt0aGlzLnk9dH1zZXQodCxlKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PWUsdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1hcHBseU1hdHJpeDModCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9aVswXSplK2lbM10qbitpWzZdLHRoaXMueT1pWzFdKmUraVs0XSpuK2lbN10sdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7Y29uc3Qgbj10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihufHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbikpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueX1jcm9zcyh0KXtyZXR1cm4gdGhpcy54KnQueS10aGlzLnkqdC54fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueX1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9YW5nbGUoKXtyZXR1cm4gTWF0aC5hdGFuMigtdGhpcy55LC10aGlzLngpK01hdGguUEl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IGU9dGhpcy54LXQueCxuPXRoaXMueS10Lnk7cmV0dXJuIGUqZStuKm59bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpc31yb3RhdGVBcm91bmQodCxlKXtjb25zdCBuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSkscj10aGlzLngtdC54LG89dGhpcy55LXQueTtyZXR1cm4gdGhpcy54PXIqbi1vKmkrdC54LHRoaXMueT1yKmkrbypuK3QueSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzfX1tSnQucHJvdG90eXBlLmlzVmVjdG9yMj0hMDtjbGFzcyBnSnR7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDEsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixpLHIsbyxhLHMsbCl7Y29uc3QgYz10aGlzLmVsZW1lbnRzO3JldHVybiBjWzBdPXQsY1sxXT1pLGNbMl09YSxjWzNdPWUsY1s0XT1yLGNbNV09cyxjWzZdPW4sY1s3XT1vLGNbOF09bCx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMSwwLDAsMCwxKSx0aGlzfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sdGhpc31leHRyYWN0QmFzaXModCxlLG4pe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzRdLGVbOF0sZVsxXSxlWzVdLGVbOV0sZVsyXSxlWzZdLGVbMTBdKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bM10scz1uWzZdLGw9blsxXSxjPW5bNF0sdT1uWzddLGg9blsyXSxkPW5bNV0scD1uWzhdLGY9aVswXSxtPWlbM10sZz1pWzZdLF89aVsxXSx5PWlbNF0sdj1pWzddLGI9aVsyXSx4PWlbNV0sdz1pWzhdO3JldHVybiByWzBdPW8qZithKl8rcypiLHJbM109byptK2EqeStzKngscls2XT1vKmcrYSp2K3MqdyxyWzFdPWwqZitjKl8rdSpiLHJbNF09bCptK2MqeSt1Kngscls3XT1sKmcrYyp2K3UqdyxyWzJdPWgqZitkKl8rcCpiLHJbNV09aCptK2QqeStwKngscls4XT1oKmcrZCp2K3Aqdyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzNdKj10LGVbNl0qPXQsZVsxXSo9dCxlWzRdKj10LGVbN10qPXQsZVsyXSo9dCxlWzVdKj10LGVbOF0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XTtyZXR1cm4gZSpvKmMtZSphKmwtbipyKmMrbiphKnMraSpyKmwtaSpvKnN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9YypvLWEqbCxoPWEqcy1jKnIsZD1sKnItbypzLHA9ZSp1K24qaCtpKmQ7aWYoMD09PXApcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCBmPTEvcDtyZXR1cm4gdFswXT11KmYsdFsxXT0oaSpsLWMqbikqZix0WzJdPShhKm4taSpvKSpmLHRbM109aCpmLHRbNF09KGMqZS1pKnMpKmYsdFs1XT0oaSpyLWEqZSkqZix0WzZdPWQqZix0WzddPShuKnMtbCplKSpmLHRbOF09KG8qZS1uKnIpKmYsdGhpc310cmFuc3Bvc2UoKXtsZXQgdDtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQ9ZVsxXSxlWzFdPWVbM10sZVszXT10LHQ9ZVsyXSxlWzJdPWVbNl0sZVs2XT10LHQ9ZVs1XSxlWzVdPWVbN10sZVs3XT10LHRoaXN9Z2V0Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLnNldEZyb21NYXRyaXg0KHQpLmludmVydCgpLnRyYW5zcG9zZSgpfXRyYW5zcG9zZUludG9BcnJheSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbMF09ZVswXSx0WzFdPWVbM10sdFsyXT1lWzZdLHRbM109ZVsxXSx0WzRdPWVbNF0sdFs1XT1lWzddLHRbNl09ZVsyXSx0WzddPWVbNV0sdFs4XT1lWzhdLHRoaXN9c2V0VXZUcmFuc2Zvcm0odCxlLG4saSxyLG8sYSl7Y29uc3Qgcz1NYXRoLmNvcyhyKSxsPU1hdGguc2luKHIpO3JldHVybiB0aGlzLnNldChuKnMsbipsLC1uKihzKm8rbCphKStvK3QsLWkqbCxpKnMsLWkqKC1sKm8rcyphKSthK2UsMCwwLDEpLHRoaXN9c2NhbGUodCxlKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0qPXQsblszXSo9dCxuWzZdKj10LG5bMV0qPWUsbls0XSo9ZSxuWzddKj1lLHRoaXN9cm90YXRlKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KSxpPXRoaXMuZWxlbWVudHMscj1pWzBdLG89aVszXSxhPWlbNl0scz1pWzFdLGw9aVs0XSxjPWlbN107cmV0dXJuIGlbMF09ZSpyK24qcyxpWzNdPWUqbytuKmwsaVs2XT1lKmErbipjLGlbMV09LW4qcitlKnMsaVs0XT0tbipvK2UqbCxpWzddPS1uKmErZSpjLHRoaXN9dHJhbnNsYXRlKHQsZSl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiBuWzBdKz10Km5bMl0sblszXSs9dCpuWzVdLG5bNl0rPXQqbls4XSxuWzFdKz1lKm5bMl0sbls0XSs9ZSpuWzVdLG5bN10rPWUqbls4XSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8OTt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuZWxlbWVudHNbbl09dFtuK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtlXT1uWzBdLHRbZSsxXT1uWzFdLHRbZSsyXT1uWzJdLHRbZSszXT1uWzNdLHRbZSs0XT1uWzRdLHRbZSs1XT1uWzVdLHRbZSs2XT1uWzZdLHRbZSs3XT1uWzddLHRbZSs4XT1uWzhdLHR9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX19bGV0IF9KdDtnSnQucHJvdG90eXBlLmlzTWF0cml4Mz0hMDtjbGFzcyB5SnR7c3RhdGljIGdldERhdGFVUkwodCl7aWYoL15kYXRhOi9pLnRlc3QodC5zcmMpKXJldHVybiB0LnNyYztpZigidW5kZWZpbmVkIj09dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50KXJldHVybiB0LnNyYztsZXQgZTtpZih0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpZT10O2Vsc2V7dm9pZCAwPT09X0p0JiYoX0p0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpKSxfSnQud2lkdGg9dC53aWR0aCxfSnQuaGVpZ2h0PXQuaGVpZ2h0O2NvbnN0IG49X0p0LmdldENvbnRleHQoIjJkIik7dCBpbnN0YW5jZW9mIEltYWdlRGF0YT9uLnB1dEltYWdlRGF0YSh0LDAsMCk6bi5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCksZT1fSnR9cmV0dXJuIGUud2lkdGg+MjA0OHx8ZS5oZWlnaHQ+MjA0OD8oY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmdldERhdGFVUkw6IEltYWdlIGNvbnZlcnRlZCB0byBqcGcgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMiLHQpLGUudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNikpOmUudG9EYXRhVVJMKCJpbWFnZS9wbmciKX19bGV0IHZKdD0wO2NsYXNzIGJKdCBleHRlbmRzIGpadHtjb25zdHJ1Y3Rvcih0PWJKdC5ERUZBVUxUX0lNQUdFLGU9Ykp0LkRFRkFVTFRfTUFQUElORyxuPTEwMDEsaT0xMDAxLHI9MTAwNixvPTEwMDgsYT0xMDIzLHM9MTAwOSxsPTEsYz0zZTMpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6dkp0Kyt9KSx0aGlzLnV1aWQ9WFp0KCksdGhpcy5uYW1lPSIiLHRoaXMuaW1hZ2U9dCx0aGlzLm1pcG1hcHM9W10sdGhpcy5tYXBwaW5nPWUsdGhpcy53cmFwUz1uLHRoaXMud3JhcFQ9aSx0aGlzLm1hZ0ZpbHRlcj1yLHRoaXMubWluRmlsdGVyPW8sdGhpcy5hbmlzb3Ryb3B5PWwsdGhpcy5mb3JtYXQ9YSx0aGlzLmludGVybmFsRm9ybWF0PW51bGwsdGhpcy50eXBlPXMsdGhpcy5vZmZzZXQ9bmV3IG1KdCgwLDApLHRoaXMucmVwZWF0PW5ldyBtSnQoMSwxKSx0aGlzLmNlbnRlcj1uZXcgbUp0KDAsMCksdGhpcy5yb3RhdGlvbj0wLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMCx0aGlzLm1hdHJpeD1uZXcgZ0p0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSEwLHRoaXMucHJlbXVsdGlwbHlBbHBoYT0hMSx0aGlzLmZsaXBZPSEwLHRoaXMudW5wYWNrQWxpZ25tZW50PTQsdGhpcy5lbmNvZGluZz1jLHRoaXMudmVyc2lvbj0wLHRoaXMub25VcGRhdGU9bnVsbCx0aGlzLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5zZXRVdlRyYW5zZm9ybSh0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnksdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55LHRoaXMucm90YXRpb24sdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55KX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdDtpZighZSYmdm9pZCAwIT09dC50ZXh0dXJlc1t0aGlzLnV1aWRdKXJldHVybiB0LnRleHR1cmVzW3RoaXMudXVpZF07Y29uc3Qgbj17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IlRleHR1cmUiLGdlbmVyYXRvcjoiVGV4dHVyZS50b0pTT04ifSx1dWlkOnRoaXMudXVpZCxuYW1lOnRoaXMubmFtZSxtYXBwaW5nOnRoaXMubWFwcGluZyxyZXBlYXQ6W3RoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueV0sb2Zmc2V0Olt0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnldLGNlbnRlcjpbdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55XSxyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHdyYXA6W3RoaXMud3JhcFMsdGhpcy53cmFwVF0sZm9ybWF0OnRoaXMuZm9ybWF0LHR5cGU6dGhpcy50eXBlLGVuY29kaW5nOnRoaXMuZW5jb2RpbmcsbWluRmlsdGVyOnRoaXMubWluRmlsdGVyLG1hZ0ZpbHRlcjp0aGlzLm1hZ0ZpbHRlcixhbmlzb3Ryb3B5OnRoaXMuYW5pc290cm9weSxmbGlwWTp0aGlzLmZsaXBZLHByZW11bHRpcGx5QWxwaGE6dGhpcy5wcmVtdWx0aXBseUFscGhhLHVucGFja0FsaWdubWVudDp0aGlzLnVucGFja0FsaWdubWVudH07aWYodm9pZCAwIT09dGhpcy5pbWFnZSl7Y29uc3QgaT10aGlzLmltYWdlO2lmKHZvaWQgMD09PWkudXVpZCYmKGkudXVpZD1YWnQoKSksIWUmJnZvaWQgMD09PXQuaW1hZ2VzW2kudXVpZF0pe2xldCBlO2lmKEFycmF5LmlzQXJyYXkoaSkpe2U9W107Zm9yKGxldCB0PTAsbj1pLmxlbmd0aDt0PG47dCsrKWUucHVzaCh4SnQoaVt0XS5pc0RhdGFUZXh0dXJlP2lbdF0uaW1hZ2U6aVt0XSkpfWVsc2UgZT14SnQoaSk7dC5pbWFnZXNbaS51dWlkXT17dXVpZDppLnV1aWQsdXJsOmV9fW4uaW1hZ2U9aS51dWlkfXJldHVybiBlfHwodC50ZXh0dXJlc1t0aGlzLnV1aWRdPW4pLG59ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX10cmFuc2Zvcm1Vdih0KXtpZih0aGlzLm1hcHBpbmchPT1VS3QpcmV0dXJuIHQ7aWYodC5hcHBseU1hdHJpeDModGhpcy5tYXRyaXgpLHQueDwwfHx0Lng+MSlzd2l0Y2godGhpcy53cmFwUyl7Y2FzZSAkS3Q6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWs7Y2FzZSBLS3Q6dC54PXQueDwwPzA6MTticmVhaztjYXNlIFpLdDp0Lng9MT09PU1hdGguYWJzKE1hdGguZmxvb3IodC54KSUyKT9NYXRoLmNlaWwodC54KS10Lng6dC54LU1hdGguZmxvb3IodC54KX1pZih0Lnk8MHx8dC55PjEpc3dpdGNoKHRoaXMud3JhcFQpe2Nhc2UgJEt0OnQueT10LnktTWF0aC5mbG9vcih0LnkpO2JyZWFrO2Nhc2UgS0t0OnQueT10Lnk8MD8wOjE7YnJlYWs7Y2FzZSBaS3Q6dC55PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueSklMik/TWF0aC5jZWlsKHQueSktdC55OnQueS1NYXRoLmZsb29yKHQueSl9cmV0dXJuIHRoaXMuZmxpcFkmJih0Lnk9MS10LnkpLHR9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fWZ1bmN0aW9uIHhKdCh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcD95SnQuZ2V0RGF0YVVSTCh0KTp0LmRhdGE/e2RhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodCx0eXBlOnQuZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTooY29uc29sZS53YXJuKCJUSFJFRS5UZXh0dXJlOiBVbmFibGUgdG8gc2VyaWFsaXplIFRleHR1cmUuIikse30pfWJKdC5ERUZBVUxUX0lNQUdFPXZvaWQgMCxiSnQuREVGQVVMVF9NQVBQSU5HPVVLdCxiSnQucHJvdG90eXBlLmlzVGV4dHVyZT0hMDtjbGFzcyB3SnR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzLnc9aX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy56fXNldCB3aWR0aCh0KXt0aGlzLno9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMud31zZXQgaGVpZ2h0KHQpe3RoaXMudz10fXNldCh0LGUsbixpKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpcy53PWksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXMudz10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Vyh0KXtyZXR1cm4gdGhpcy53PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7Y2FzZSAzOnRoaXMudz1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueix0aGlzLncpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXMudz12b2lkIDAhPT10Lnc/dC53OjEsdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzLncrPXQudyx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXMudys9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpcy53PXQudytlLncsdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpcy53Kz10LncqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMudy09dC53LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpcy53LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzLnc9dC53LWUudyx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzLncqPXQudyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzLncqPXQsdGhpc31hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10aGlzLncsbz10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9b1swXSplK29bNF0qbitvWzhdKmkrb1sxMl0qcix0aGlzLnk9b1sxXSplK29bNV0qbitvWzldKmkrb1sxM10qcix0aGlzLno9b1syXSplK29bNl0qbitvWzEwXSppK29bMTRdKnIsdGhpcy53PW9bM10qZStvWzddKm4rb1sxMV0qaStvWzE1XSpyLHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9c2V0QXhpc0FuZ2xlRnJvbVF1YXRlcm5pb24odCl7dGhpcy53PTIqTWF0aC5hY29zKHQudyk7Y29uc3QgZT1NYXRoLnNxcnQoMS10LncqdC53KTtyZXR1cm4gZTwxZS00Pyh0aGlzLng9MSx0aGlzLnk9MCx0aGlzLno9MCk6KHRoaXMueD10LngvZSx0aGlzLnk9dC55L2UsdGhpcy56PXQuei9lKSx0aGlzfXNldEF4aXNBbmdsZUZyb21Sb3RhdGlvbk1hdHJpeCh0KXtsZXQgZSxuLGkscjtjb25zdCBvPS4wMSxhPS4xLHM9dC5lbGVtZW50cyxsPXNbMF0sYz1zWzRdLHU9c1s4XSxoPXNbMV0sZD1zWzVdLHA9c1s5XSxmPXNbMl0sbT1zWzZdLGc9c1sxMF07aWYoTWF0aC5hYnMoYy1oKTxvJiZNYXRoLmFicyh1LWYpPG8mJk1hdGguYWJzKHAtbSk8byl7aWYoTWF0aC5hYnMoYytoKTxhJiZNYXRoLmFicyh1K2YpPGEmJk1hdGguYWJzKHArbSk8YSYmTWF0aC5hYnMobCtkK2ctMyk8YSlyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCksdGhpcztlPU1hdGguUEk7Y29uc3QgdD0obCsxKS8yLHM9KGQrMSkvMixfPShnKzEpLzIseT0oYytoKS80LHY9KHUrZikvNCxiPShwK20pLzQ7cmV0dXJuIHQ+cyYmdD5fP3Q8bz8obj0wLGk9LjcwNzEwNjc4MSxyPS43MDcxMDY3ODEpOihuPU1hdGguc3FydCh0KSxpPXkvbixyPXYvbik6cz5fP3M8bz8obj0uNzA3MTA2NzgxLGk9MCxyPS43MDcxMDY3ODEpOihpPU1hdGguc3FydChzKSxuPXkvaSxyPWIvaSk6XzxvPyhuPS43MDcxMDY3ODEsaT0uNzA3MTA2NzgxLHI9MCk6KHI9TWF0aC5zcXJ0KF8pLG49di9yLGk9Yi9yKSx0aGlzLnNldChuLGkscixlKSx0aGlzfWxldCBfPU1hdGguc3FydCgobS1wKSoobS1wKSsodS1mKSoodS1mKSsoaC1jKSooaC1jKSk7cmV0dXJuIE1hdGguYWJzKF8pPC4wMDEmJihfPTEpLHRoaXMueD0obS1wKS9fLHRoaXMueT0odS1mKS9fLHRoaXMuej0oaC1jKS9fLHRoaXMudz1NYXRoLmFjb3MoKGwrZCtnLTEpLzIpLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5taW4odGhpcy53LHQudyksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1heCh0aGlzLncsdC53KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LncsTWF0aC5taW4oZS53LHRoaXMudykpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLncpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7Y29uc3Qgbj10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihufHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbikpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzLnc9TWF0aC5jZWlsKHRoaXMudyksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzLnc9TWF0aC5yb3VuZCh0aGlzLncpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpcy53PXRoaXMudzwwP01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzLnc9LXRoaXMudyx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0LnordGhpcy53KnQud31sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopK01hdGguYWJzKHRoaXMudyl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXMudys9KHQudy10aGlzLncpKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzLno9dC56KyhlLnotdC56KSpuLHRoaXMudz10LncrKGUudy10LncpKm4sdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnomJnQudz09PXRoaXMud31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpcy53PXRbZSszXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdFtlKzNdPXRoaXMudyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzLnc9dC5nZXRXKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXMudz1NYXRoLnJhbmRvbSgpLHRoaXN9fXdKdC5wcm90b3R5cGUuaXNWZWN0b3I0PSEwO2NsYXNzIFNKdCBleHRlbmRzIGpadHtjb25zdHJ1Y3Rvcih0LGUsbj17fSl7c3VwZXIoKSx0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPTEsdGhpcy5zY2lzc29yPW5ldyB3SnQoMCwwLHQsZSksdGhpcy5zY2lzc29yVGVzdD0hMSx0aGlzLnZpZXdwb3J0PW5ldyB3SnQoMCwwLHQsZSksdGhpcy50ZXh0dXJlPW5ldyBiSnQodm9pZCAwLG4ubWFwcGluZyxuLndyYXBTLG4ud3JhcFQsbi5tYWdGaWx0ZXIsbi5taW5GaWx0ZXIsbi5mb3JtYXQsbi50eXBlLG4uYW5pc290cm9weSxuLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDoxfSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPXZvaWQgMCE9PW4uZ2VuZXJhdGVNaXBtYXBzJiZuLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPXZvaWQgMCE9PW4ubWluRmlsdGVyP24ubWluRmlsdGVyOmVadCx0aGlzLmRlcHRoQnVmZmVyPXZvaWQgMD09PW4uZGVwdGhCdWZmZXJ8fG4uZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXZvaWQgMCE9PW4uc3RlbmNpbEJ1ZmZlciYmbi5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXZvaWQgMCE9PW4uZGVwdGhUZXh0dXJlP24uZGVwdGhUZXh0dXJlOm51bGx9c2V0VGV4dHVyZSh0KXt0LmltYWdlPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCxkZXB0aDp0aGlzLmRlcHRofSx0aGlzLnRleHR1cmU9dH1zZXRTaXplKHQsZSxuPTEpe3RoaXMud2lkdGg9PT10JiZ0aGlzLmhlaWdodD09PWUmJnRoaXMuZGVwdGg9PT1ufHwodGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PWUsdGhpcy5kZXB0aD1uLHRoaXMudGV4dHVyZS5pbWFnZS53aWR0aD10LHRoaXMudGV4dHVyZS5pbWFnZS5oZWlnaHQ9ZSx0aGlzLnRleHR1cmUuaW1hZ2UuZGVwdGg9bix0aGlzLmRpc3Bvc2UoKSksdGhpcy52aWV3cG9ydC5zZXQoMCwwLHQsZSksdGhpcy5zY2lzc29yLnNldCgwLDAsdCxlKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuY29weSh0LnZpZXdwb3J0KSx0aGlzLnRleHR1cmU9dC50ZXh0dXJlLmNsb25lKCksdGhpcy50ZXh0dXJlLmltYWdlPXsuLi50aGlzLnRleHR1cmUuaW1hZ2V9LHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19U0p0LnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0PSEwO2NsYXNzIE1KdCBleHRlbmRzIFNKdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKTtjb25zdCBpPXRoaXMudGV4dHVyZTt0aGlzLnRleHR1cmU9W107Zm9yKGxldCB0PTA7dDxuO3QrKyl0aGlzLnRleHR1cmVbdF09aS5jbG9uZSgpfXNldFNpemUodCxlLG49MSl7aWYodGhpcy53aWR0aCE9PXR8fHRoaXMuaGVpZ2h0IT09ZXx8dGhpcy5kZXB0aCE9PW4pe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9bjtmb3IobGV0IGk9MCxyPXRoaXMudGV4dHVyZS5sZW5ndGg7aTxyO2krKyl0aGlzLnRleHR1cmVbaV0uaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmVbaV0uaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmRlcHRoPW47dGhpcy5kaXNwb3NlKCl9cmV0dXJuIHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSksdGhpc31jb3B5KHQpe3RoaXMuZGlzcG9zZSgpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXMudGV4dHVyZS5sZW5ndGg9MDtmb3IobGV0IGU9MCxuPXQudGV4dHVyZS5sZW5ndGg7ZTxuO2UrKyl0aGlzLnRleHR1cmVbZV09dC50ZXh0dXJlW2VdLmNsb25lKCk7cmV0dXJuIHRoaXN9fU1KdC5wcm90b3R5cGUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz0hMDtjbGFzcyBFSnQgZXh0ZW5kcyBTSnR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKSx0aGlzLnNhbXBsZXM9NH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnNhbXBsZXM9dC5zYW1wbGVzLHRoaXN9fUVKdC5wcm90b3R5cGUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PSEwO2NsYXNzIFRKdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPTEpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9aX1zdGF0aWMgc2xlcnAodCxlLG4saSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogU3RhdGljIC5zbGVycCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBxbS5zbGVycFF1YXRlcm5pb25zKCBxYSwgcWIsIHQgKSBpbnN0ZWFkLiIpLG4uc2xlcnBRdWF0ZXJuaW9ucyh0LGUsaSl9c3RhdGljIHNsZXJwRmxhdCh0LGUsbixpLHIsbyxhKXtsZXQgcz1uW2krMF0sbD1uW2krMV0sYz1uW2krMl0sdT1uW2krM107Y29uc3QgaD1yW28rMF0sZD1yW28rMV0scD1yW28rMl0sZj1yW28rM107aWYoMD09PWEpcmV0dXJuIHRbZSswXT1zLHRbZSsxXT1sLHRbZSsyXT1jLHZvaWQodFtlKzNdPXUpO2lmKDE9PT1hKXJldHVybiB0W2UrMF09aCx0W2UrMV09ZCx0W2UrMl09cCx2b2lkKHRbZSszXT1mKTtpZih1IT09Znx8cyE9PWh8fGwhPT1kfHxjIT09cCl7bGV0IHQ9MS1hO2NvbnN0IGU9cypoK2wqZCtjKnArdSpmLG49ZT49MD8xOi0xLGk9MS1lKmU7aWYoaT5OdW1iZXIuRVBTSUxPTil7Y29uc3Qgcj1NYXRoLnNxcnQoaSksbz1NYXRoLmF0YW4yKHIsZSpuKTt0PU1hdGguc2luKHQqbykvcixhPU1hdGguc2luKGEqbykvcn1jb25zdCByPWEqbjtpZihzPXMqdCtoKnIsbD1sKnQrZCpyLGM9Yyp0K3Aqcix1PXUqdCtmKnIsdD09PTEtYSl7Y29uc3QgdD0xL01hdGguc3FydChzKnMrbCpsK2MqYyt1KnUpO3MqPXQsbCo9dCxjKj10LHUqPXR9fXRbZV09cyx0W2UrMV09bCx0W2UrMl09Yyx0W2UrM109dX1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxlLG4saSxyLG8pe2NvbnN0IGE9bltpXSxzPW5baSsxXSxsPW5baSsyXSxjPW5baSszXSx1PXJbb10saD1yW28rMV0sZD1yW28rMl0scD1yW28rM107cmV0dXJuIHRbZV09YSpwK2MqdStzKmQtbCpoLHRbZSsxXT1zKnArYypoK2wqdS1hKmQsdFtlKzJdPWwqcCtjKmQrYSpoLXMqdSx0W2UrM109YypwLWEqdS1zKmgtbCpkLHR9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHcoKXtyZXR1cm4gdGhpcy5fd31zZXQgdyh0KXt0aGlzLl93PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbixpKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fdz1pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX3cpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC54LHRoaXMuX3k9dC55LHRoaXMuX3o9dC56LHRoaXMuX3c9dC53LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21FdWxlcih0LGUpe2lmKCF0fHwhdC5pc0V1bGVyKXRocm93IG5ldyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3Qgbj10Ll94LGk9dC5feSxyPXQuX3osbz10Ll9vcmRlcixhPU1hdGguY29zLHM9TWF0aC5zaW4sbD1hKG4vMiksYz1hKGkvMiksdT1hKHIvMiksaD1zKG4vMiksZD1zKGkvMikscD1zKHIvMik7c3dpdGNoKG8pe2Nhc2UiWFlaIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitvKX1yZXR1cm4hMSE9PWUmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21BeGlzQW5nbGUodCxlKXtjb25zdCBuPWUvMixpPU1hdGguc2luKG4pO3JldHVybiB0aGlzLl94PXQueCppLHRoaXMuX3k9dC55KmksdGhpcy5fej10LnoqaSx0aGlzLl93PU1hdGguY29zKG4pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KXtjb25zdCBlPXQuZWxlbWVudHMsbj1lWzBdLGk9ZVs0XSxyPWVbOF0sbz1lWzFdLGE9ZVs1XSxzPWVbOV0sbD1lWzJdLGM9ZVs2XSx1PWVbMTBdLGg9bithK3U7aWYoaD4wKXtjb25zdCB0PS41L01hdGguc3FydChoKzEpO3RoaXMuX3c9LjI1L3QsdGhpcy5feD0oYy1zKSp0LHRoaXMuX3k9KHItbCkqdCx0aGlzLl96PShvLWkpKnR9ZWxzZSBpZihuPmEmJm4+dSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK24tYS11KTt0aGlzLl93PShjLXMpL3QsdGhpcy5feD0uMjUqdCx0aGlzLl95PShpK28pL3QsdGhpcy5fej0ocitsKS90fWVsc2UgaWYoYT51KXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErYS1uLXUpO3RoaXMuX3c9KHItbCkvdCx0aGlzLl94PShpK28pL3QsdGhpcy5feT0uMjUqdCx0aGlzLl96PShzK2MpL3R9ZWxzZXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErdS1uLWEpO3RoaXMuX3c9KG8taSkvdCx0aGlzLl94PShyK2wpL3QsdGhpcy5feT0ocytjKS90LHRoaXMuX3o9LjI1KnR9cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Vbml0VmVjdG9ycyh0LGUpe2xldCBuPXQuZG90KGUpKzE7cmV0dXJuIG48TnVtYmVyLkVQU0lMT04/KG49MCxNYXRoLmFicyh0LngpPk1hdGguYWJzKHQueik/KHRoaXMuX3g9LXQueSx0aGlzLl95PXQueCx0aGlzLl96PTAsdGhpcy5fdz1uKToodGhpcy5feD0wLHRoaXMuX3k9LXQueix0aGlzLl96PXQueSx0aGlzLl93PW4pKToodGhpcy5feD10LnkqZS56LXQueiplLnksdGhpcy5feT10LnoqZS54LXQueCplLnosdGhpcy5fej10LngqZS55LXQueSplLngsdGhpcy5fdz1uKSx0aGlzLm5vcm1hbGl6ZSgpfWFuZ2xlVG8odCl7cmV0dXJuIDIqTWF0aC5hY29zKE1hdGguYWJzKCRadCh0aGlzLmRvdCh0KSwtMSwxKSkpfXJvdGF0ZVRvd2FyZHModCxlKXtjb25zdCBuPXRoaXMuYW5nbGVUbyh0KTtpZigwPT09bilyZXR1cm4gdGhpcztjb25zdCBpPU1hdGgubWluKDEsZS9uKTtyZXR1cm4gdGhpcy5zbGVycCh0LGkpLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMSl9aW52ZXJ0KCl7cmV0dXJuIHRoaXMuY29uanVnYXRlKCl9Y29uanVnYXRlKCl7cmV0dXJuIHRoaXMuX3gqPS0xLHRoaXMuX3kqPS0xLHRoaXMuX3oqPS0xLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy5feCp0Ll94K3RoaXMuX3kqdC5feSt0aGlzLl96KnQuX3ordGhpcy5fdyp0Ll93fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fd31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fdyl9bm9ybWFsaXplKCl7bGV0IHQ9dGhpcy5sZW5ndGgoKTtyZXR1cm4gMD09PXQ/KHRoaXMuX3g9MCx0aGlzLl95PTAsdGhpcy5fej0wLHRoaXMuX3c9MSk6KHQ9MS90LHRoaXMuX3g9dGhpcy5feCp0LHRoaXMuX3k9dGhpcy5feSp0LHRoaXMuX3o9dGhpcy5feip0LHRoaXMuX3c9dGhpcy5fdyp0KSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5UXVhdGVybmlvbnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpKTp0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsdGhpcyl9bXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpe2NvbnN0IG49dC5feCxpPXQuX3kscj10Ll96LG89dC5fdyxhPWUuX3gscz1lLl95LGw9ZS5feixjPWUuX3c7cmV0dXJuIHRoaXMuX3g9bipjK28qYStpKmwtcipzLHRoaXMuX3k9aSpjK28qcytyKmEtbipsLHRoaXMuX3o9cipjK28qbCtuKnMtaSphLHRoaXMuX3c9bypjLW4qYS1pKnMtcipsLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwKHQsZSl7aWYoMD09PWUpcmV0dXJuIHRoaXM7aWYoMT09PWUpcmV0dXJuIHRoaXMuY29weSh0KTtjb25zdCBuPXRoaXMuX3gsaT10aGlzLl95LHI9dGhpcy5feixvPXRoaXMuX3c7bGV0IGE9byp0Ll93K24qdC5feCtpKnQuX3krcip0Ll96O2lmKGE8MD8odGhpcy5fdz0tdC5fdyx0aGlzLl94PS10Ll94LHRoaXMuX3k9LXQuX3ksdGhpcy5fej0tdC5feixhPS1hKTp0aGlzLmNvcHkodCksYT49MSlyZXR1cm4gdGhpcy5fdz1vLHRoaXMuX3g9bix0aGlzLl95PWksdGhpcy5fej1yLHRoaXM7Y29uc3Qgcz0xLWEqYTtpZihzPD1OdW1iZXIuRVBTSUxPTil7Y29uc3QgdD0xLWU7cmV0dXJuIHRoaXMuX3c9dCpvK2UqdGhpcy5fdyx0aGlzLl94PXQqbitlKnRoaXMuX3gsdGhpcy5feT10KmkrZSp0aGlzLl95LHRoaXMuX3o9dCpyK2UqdGhpcy5feix0aGlzLm5vcm1hbGl6ZSgpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNvbnN0IGw9TWF0aC5zcXJ0KHMpLGM9TWF0aC5hdGFuMihsLGEpLHU9TWF0aC5zaW4oKDEtZSkqYykvbCxoPU1hdGguc2luKGUqYykvbDtyZXR1cm4gdGhpcy5fdz1vKnUrdGhpcy5fdypoLHRoaXMuX3g9bip1K3RoaXMuX3gqaCx0aGlzLl95PWkqdSt0aGlzLl95KmgsdGhpcy5fej1yKnUrdGhpcy5feipoLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwUXVhdGVybmlvbnModCxlLG4pe3RoaXMuY29weSh0KS5zbGVycChlLG4pfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fdz09PXRoaXMuX3d9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy5feD10W2VdLHRoaXMuX3k9dFtlKzFdLHRoaXMuX3o9dFtlKzJdLHRoaXMuX3c9dFtlKzNdLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX3csdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMuX3g9dC5nZXRYKGUpLHRoaXMuX3k9dC5nZXRZKGUpLHRoaXMuX3o9dC5nZXRaKGUpLHRoaXMuX3c9dC5nZXRXKGUpLHRoaXN9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319VEp0LnByb3RvdHlwZS5pc1F1YXRlcm5pb249ITA7Y2xhc3MgQ0p0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0wKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bn1zZXQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj10aGlzLnopLHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnopfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5VmVjdG9ycyh0LGUpKToodGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcyl9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXN9bXVsdGlwbHlWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngqZS54LHRoaXMueT10LnkqZS55LHRoaXMuej10LnoqZS56LHRoaXN9YXBwbHlFdWxlcih0KXtyZXR1cm4gdCYmdC5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIiksdGhpcy5hcHBseVF1YXRlcm5pb24oa0p0LnNldEZyb21FdWxlcih0KSl9YXBwbHlBeGlzQW5nbGUodCxlKXtyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oa0p0LnNldEZyb21BeGlzQW5nbGUodCxlKSl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PXJbMF0qZStyWzNdKm4rcls2XSppLHRoaXMueT1yWzFdKmUrcls0XSpuK3JbN10qaSx0aGlzLno9clsyXSplK3JbNV0qbityWzhdKmksdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDModCkubm9ybWFsaXplKCl9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dC5lbGVtZW50cyxvPTEvKHJbM10qZStyWzddKm4rclsxMV0qaStyWzE1XSk7cmV0dXJuIHRoaXMueD0oclswXSplK3JbNF0qbityWzhdKmkrclsxMl0pKm8sdGhpcy55PShyWzFdKmUrcls1XSpuK3JbOV0qaStyWzEzXSkqbyx0aGlzLno9KHJbMl0qZStyWzZdKm4rclsxMF0qaStyWzE0XSkqbyx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXQueCxvPXQueSxhPXQueixzPXQudyxsPXMqZStvKmktYSpuLGM9cypuK2EqZS1yKmksdT1zKmkrcipuLW8qZSxoPS1yKmUtbypuLWEqaTtyZXR1cm4gdGhpcy54PWwqcytoKi1yK2MqLWEtdSotbyx0aGlzLnk9YypzK2gqLW8rdSotci1sKi1hLHRoaXMuej11KnMraCotYStsKi1vLWMqLXIsdGhpc31wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkSW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeCl9dW5wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCl9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PXJbMF0qZStyWzRdKm4rcls4XSppLHRoaXMueT1yWzFdKmUrcls1XSpuK3JbOV0qaSx0aGlzLno9clsyXSplK3JbNl0qbityWzEwXSppLHRoaXMubm9ybWFsaXplKCl9ZGl2aWRlKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzLnovPXQueix0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7Y29uc3Qgbj10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihufHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbikpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQuen1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMuen1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueil9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXN9bGVycFZlY3RvcnModCxlLG4pe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSpuLHRoaXMueT10LnkrKGUueS10LnkpKm4sdGhpcy56PXQueisoZS56LXQueikqbix0aGlzfWNyb3NzKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmNyb3NzKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuY3Jvc3NWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmNyb3NzVmVjdG9ycyh0LGUpKTp0aGlzLmNyb3NzVmVjdG9ycyh0aGlzLHQpfWNyb3NzVmVjdG9ycyh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56LG89ZS54LGE9ZS55LHM9ZS56O3JldHVybiB0aGlzLng9aSpzLXIqYSx0aGlzLnk9cipvLW4qcyx0aGlzLno9biphLWkqbyx0aGlzfXByb2plY3RPblZlY3Rvcih0KXtjb25zdCBlPXQubGVuZ3RoU3EoKTtpZigwPT09ZSlyZXR1cm4gdGhpcy5zZXQoMCwwLDApO2NvbnN0IG49dC5kb3QodGhpcykvZTtyZXR1cm4gdGhpcy5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKG4pfXByb2plY3RPblBsYW5lKHQpe3JldHVybiBBSnQuY29weSh0aGlzKS5wcm9qZWN0T25WZWN0b3IodCksdGhpcy5zdWIoQUp0KX1yZWZsZWN0KHQpe3JldHVybiB0aGlzLnN1YihBSnQuY29weSh0KS5tdWx0aXBseVNjYWxhcigyKnRoaXMuZG90KHQpKSl9YW5nbGVUbyh0KXtjb25zdCBlPU1hdGguc3FydCh0aGlzLmxlbmd0aFNxKCkqdC5sZW5ndGhTcSgpKTtpZigwPT09ZSlyZXR1cm4gTWF0aC5QSS8yO2NvbnN0IG49dGhpcy5kb3QodCkvZTtyZXR1cm4gTWF0aC5hY29zKCRadChuLC0xLDEpKX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7Y29uc3QgZT10aGlzLngtdC54LG49dGhpcy55LXQueSxpPXRoaXMuei10Lno7cmV0dXJuIGUqZStuKm4raSppfW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpK01hdGguYWJzKHRoaXMuei10LnopfXNldEZyb21TcGhlcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnBoaSx0LnRoZXRhKX1zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQsZSxuKXtjb25zdCBpPU1hdGguc2luKGUpKnQ7cmV0dXJuIHRoaXMueD1pKk1hdGguc2luKG4pLHRoaXMueT1NYXRoLmNvcyhlKSp0LHRoaXMuej1pKk1hdGguY29zKG4pLHRoaXN9c2V0RnJvbUN5bGluZHJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnRoZXRhLHQueSl9c2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQqTWF0aC5zaW4oZSksdGhpcy55PW4sdGhpcy56PXQqTWF0aC5jb3MoZSksdGhpc31zZXRGcm9tTWF0cml4UG9zaXRpb24odCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9ZVsxMl0sdGhpcy55PWVbMTNdLHRoaXMuej1lWzE0XSx0aGlzfXNldEZyb21NYXRyaXhTY2FsZSh0KXtjb25zdCBlPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLG49dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksaT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gdGhpcy54PWUsdGhpcy55PW4sdGhpcy56PWksdGhpc31zZXRGcm9tTWF0cml4Q29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsNCplKX1zZXRGcm9tTWF0cml4M0NvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDMqZSl9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpc319Q0p0LnByb3RvdHlwZS5pc1ZlY3RvcjM9ITA7Y29uc3QgQUp0PW5ldyBDSnQsa0p0PW5ldyBUSnQ7Y2xhc3MgTEp0e2NvbnN0cnVjdG9yKHQ9bmV3IENKdCgxLzAsMS8wLDEvMCksZT1uZXcgQ0p0KC0xLzAsLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tQXJyYXkodCl7bGV0IGU9MS8wLG49MS8wLGk9MS8wLHI9LTEvMCxvPS0xLzAsYT0tMS8wO2ZvcihsZXQgcz0wLGw9dC5sZW5ndGg7czxsO3MrPTMpe2NvbnN0IGw9dFtzXSxjPXRbcysxXSx1PXRbcysyXTtsPGUmJihlPWwpLGM8biYmKG49YyksdTxpJiYoaT11KSxsPnImJihyPWwpLGM+byYmKG89YyksdT5hJiYoYT11KX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixpKSx0aGlzLm1heC5zZXQocixvLGEpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgZT0xLzAsbj0xLzAsaT0xLzAscj0tMS8wLG89LTEvMCxhPS0xLzA7Zm9yKGxldCBzPTAsbD10LmNvdW50O3M8bDtzKyspe2NvbnN0IGw9dC5nZXRYKHMpLGM9dC5nZXRZKHMpLHU9dC5nZXRaKHMpO2w8ZSYmKGU9bCksYzxuJiYobj1jKSx1PGkmJihpPXUpLGw+ciYmKHI9bCksYz5vJiYobz1jKSx1PmEmJihhPXUpfXJldHVybiB0aGlzLm1pbi5zZXQoZSxuLGkpLHRoaXMubWF4LnNldChyLG8sYSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49Tkp0LmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0KX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen1nZXRDZW50ZXIodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31leHBhbmRCeU9iamVjdCh0KXt0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCExKTtjb25zdCBlPXQuZ2VvbWV0cnk7dm9pZCAwIT09ZSYmKG51bGw9PT1lLmJvdW5kaW5nQm94JiZlLmNvbXB1dGVCb3VuZGluZ0JveCgpLElKdC5jb3B5KGUuYm91bmRpbmdCb3gpLElKdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy51bmlvbihJSnQpKTtjb25zdCBuPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1uLmxlbmd0aDt0PGU7dCsrKXRoaXMuZXhwYW5kQnlPYmplY3Qoblt0XSk7cmV0dXJuIHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55fHx0Lno8dGhpcy5taW4uenx8dC56PnRoaXMubWF4LnopfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55JiZ0aGlzLm1pbi56PD10Lm1pbi56JiZ0Lm1heC56PD10aGlzLm1heC56fWdldFBhcmFtZXRlcih0LGUpe3JldHVybiBlLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSksKHQuei10aGlzLm1pbi56KS8odGhpcy5tYXguei10aGlzLm1pbi56KSl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4hKHQubWF4Lng8dGhpcy5taW4ueHx8dC5taW4ueD50aGlzLm1heC54fHx0Lm1heC55PHRoaXMubWluLnl8fHQubWluLnk+dGhpcy5tYXgueXx8dC5tYXguejx0aGlzLm1pbi56fHx0Lm1pbi56PnRoaXMubWF4LnopfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHRoaXMuY2xhbXBQb2ludCh0LmNlbnRlcixOSnQpLE5KdC5kaXN0YW5jZVRvU3F1YXJlZCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWludGVyc2VjdHNQbGFuZSh0KXtsZXQgZSxuO3JldHVybiB0Lm5vcm1hbC54PjA/KGU9dC5ub3JtYWwueCp0aGlzLm1pbi54LG49dC5ub3JtYWwueCp0aGlzLm1heC54KTooZT10Lm5vcm1hbC54KnRoaXMubWF4Lngsbj10Lm5vcm1hbC54KnRoaXMubWluLngpLHQubm9ybWFsLnk+MD8oZSs9dC5ub3JtYWwueSp0aGlzLm1pbi55LG4rPXQubm9ybWFsLnkqdGhpcy5tYXgueSk6KGUrPXQubm9ybWFsLnkqdGhpcy5tYXgueSxuKz10Lm5vcm1hbC55KnRoaXMubWluLnkpLHQubm9ybWFsLno+MD8oZSs9dC5ub3JtYWwueip0aGlzLm1pbi56LG4rPXQubm9ybWFsLnoqdGhpcy5tYXgueik6KGUrPXQubm9ybWFsLnoqdGhpcy5tYXgueixuKz10Lm5vcm1hbC56KnRoaXMubWluLnopLGU8PS10LmNvbnN0YW50JiZuPj0tdC5jb25zdGFudH1pbnRlcnNlY3RzVHJpYW5nbGUodCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuITE7dGhpcy5nZXRDZW50ZXIoRkp0KSxWSnQuc3ViVmVjdG9ycyh0aGlzLm1heCxGSnQpLFJKdC5zdWJWZWN0b3JzKHQuYSxGSnQpLE9KdC5zdWJWZWN0b3JzKHQuYixGSnQpLHpKdC5zdWJWZWN0b3JzKHQuYyxGSnQpLERKdC5zdWJWZWN0b3JzKE9KdCxSSnQpLEJKdC5zdWJWZWN0b3JzKHpKdCxPSnQpLEhKdC5zdWJWZWN0b3JzKFJKdCx6SnQpO2xldCBlPVswLC1ESnQueixESnQueSwwLC1CSnQueixCSnQueSwwLC1ISnQueixISnQueSxESnQueiwwLC1ESnQueCxCSnQueiwwLC1CSnQueCxISnQueiwwLC1ISnQueCwtREp0LnksREp0LngsMCwtQkp0LnksQkp0LngsMCwtSEp0LnksSEp0LngsMF07cmV0dXJuISFHSnQoZSxSSnQsT0p0LHpKdCxWSnQpJiYoZT1bMSwwLDAsMCwxLDAsMCwwLDFdLCEhR0p0KGUsUkp0LE9KdCx6SnQsVkp0KSYmKFVKdC5jcm9zc1ZlY3RvcnMoREp0LEJKdCksZT1bVUp0LngsVUp0LnksVUp0LnpdLEdKdChlLFJKdCxPSnQsekp0LFZKdCkpKX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBOSnQuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWdldEJvdW5kaW5nU3BoZXJlKHQpe3JldHVybiB0aGlzLmdldENlbnRlcih0LmNlbnRlciksdC5yYWRpdXM9LjUqdGhpcy5nZXRTaXplKE5KdCkubGVuZ3RoKCksdH1pbnRlcnNlY3QodCl7cmV0dXJuIHRoaXMubWluLm1heCh0Lm1pbiksdGhpcy5tYXgubWluKHQubWF4KSx0aGlzLmlzRW1wdHkoKSYmdGhpcy5tYWtlRW1wdHkoKSx0aGlzfXVuaW9uKHQpe3JldHVybiB0aGlzLm1pbi5taW4odC5taW4pLHRoaXMubWF4Lm1heCh0Lm1heCksdGhpc31hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpfHwoUEp0WzBdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFBKdFsxXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxQSnRbMl0uc2V0KHRoaXMubWluLngsdGhpcy5tYXgueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksUEp0WzNdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFBKdFs0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxQSnRbNV0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksUEp0WzZdLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFBKdFs3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldEZyb21Qb2ludHMoUEp0KSksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMubWluLmFkZCh0KSx0aGlzLm1heC5hZGQodCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubWluLmVxdWFscyh0aGlzLm1pbikmJnQubWF4LmVxdWFscyh0aGlzLm1heCl9fUxKdC5wcm90b3R5cGUuaXNCb3gzPSEwO2NvbnN0IFBKdD1bbmV3IENKdCxuZXcgQ0p0LG5ldyBDSnQsbmV3IENKdCxuZXcgQ0p0LG5ldyBDSnQsbmV3IENKdCxuZXcgQ0p0XSxOSnQ9bmV3IENKdCxJSnQ9bmV3IExKdCxSSnQ9bmV3IENKdCxPSnQ9bmV3IENKdCx6SnQ9bmV3IENKdCxESnQ9bmV3IENKdCxCSnQ9bmV3IENKdCxISnQ9bmV3IENKdCxGSnQ9bmV3IENKdCxWSnQ9bmV3IENKdCxVSnQ9bmV3IENKdCxqSnQ9bmV3IENKdDtmdW5jdGlvbiBHSnQodCxlLG4saSxyKXtmb3IobGV0IG89MCxhPXQubGVuZ3RoLTM7bzw9YTtvKz0zKXtqSnQuZnJvbUFycmF5KHQsbyk7Y29uc3QgYT1yLngqTWF0aC5hYnMoakp0LngpK3IueSpNYXRoLmFicyhqSnQueSkrci56Kk1hdGguYWJzKGpKdC56KSxzPWUuZG90KGpKdCksbD1uLmRvdChqSnQpLGM9aS5kb3Qoakp0KTtpZihNYXRoLm1heCgtTWF0aC5tYXgocyxsLGMpLE1hdGgubWluKHMsbCxjKSk+YSlyZXR1cm4hMX1yZXR1cm4hMH1jb25zdCBXSnQ9bmV3IExKdCxxSnQ9bmV3IENKdCxZSnQ9bmV3IENKdCxYSnQ9bmV3IENKdDtjbGFzcyAkSnR7Y29uc3RydWN0b3IodD1uZXcgQ0p0LGU9LTEpe3RoaXMuY2VudGVyPXQsdGhpcy5yYWRpdXM9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0KSx0aGlzLnJhZGl1cz1lLHRoaXN9c2V0RnJvbVBvaW50cyh0LGUpe2NvbnN0IG49dGhpcy5jZW50ZXI7dm9pZCAwIT09ZT9uLmNvcHkoZSk6V0p0LnNldEZyb21Qb2ludHModCkuZ2V0Q2VudGVyKG4pO2xldCBpPTA7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKWk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKHRbZV0pKTtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KGkpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMucmFkaXVzPDB9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMuY2VudGVyLnNldCgwLDAsMCksdGhpcy5yYWRpdXM9LTEsdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG8odGhpcy5jZW50ZXIpLXRoaXMucmFkaXVzfWludGVyc2VjdHNTcGhlcmUodCl7Y29uc3QgZT10aGlzLnJhZGl1cyt0LnJhZGl1cztyZXR1cm4gdC5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD1lKmV9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzU3BoZXJlKHRoaXMpfWludGVyc2VjdHNQbGFuZSh0KXtyZXR1cm4gTWF0aC5hYnModC5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9Y2xhbXBQb2ludCh0LGUpe2NvbnN0IG49dGhpcy5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodCk7cmV0dXJuIGUuY29weSh0KSxuPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYoZS5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLGUubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpLGV9Z2V0Qm91bmRpbmdCb3godCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpPyh0Lm1ha2VFbXB0eSgpLHQpOih0LnNldCh0aGlzLmNlbnRlcix0aGlzLmNlbnRlciksdC5leHBhbmRCeVNjYWxhcih0aGlzLnJhZGl1cyksdCl9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmNlbnRlci5hcHBseU1hdHJpeDQodCksdGhpcy5yYWRpdXM9dGhpcy5yYWRpdXMqdC5nZXRNYXhTY2FsZU9uQXhpcygpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNlbnRlci5hZGQodCksdGhpc31leHBhbmRCeVBvaW50KHQpe1hKdC5zdWJWZWN0b3JzKHQsdGhpcy5jZW50ZXIpO2NvbnN0IGU9WEp0Lmxlbmd0aFNxKCk7aWYoZT50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyl7Y29uc3QgdD1NYXRoLnNxcnQoZSksbj0uNSoodC10aGlzLnJhZGl1cyk7dGhpcy5jZW50ZXIuYWRkKFhKdC5tdWx0aXBseVNjYWxhcihuL3QpKSx0aGlzLnJhZGl1cys9bn1yZXR1cm4gdGhpc311bmlvbih0KXtyZXR1cm4gWUp0LnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQucmFkaXVzKSx0aGlzLmV4cGFuZEJ5UG9pbnQocUp0LmNvcHkodC5jZW50ZXIpLmFkZChZSnQpKSx0aGlzLmV4cGFuZEJ5UG9pbnQocUp0LmNvcHkodC5jZW50ZXIpLnN1YihZSnQpKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmdC5yYWRpdXM9PT10aGlzLnJhZGl1c31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y29uc3QgS0p0PW5ldyBDSnQsWkp0PW5ldyBDSnQsSkp0PW5ldyBDSnQsUUp0PW5ldyBDSnQsdFF0PW5ldyBDSnQsZVF0PW5ldyBDSnQsblF0PW5ldyBDSnQ7Y2xhc3MgaVF0e2NvbnN0cnVjdG9yKHQ9bmV3IENKdCxlPW5ldyBDSnQoMCwwLC0xKSl7dGhpcy5vcmlnaW49dCx0aGlzLmRpcmVjdGlvbj1lfXNldCh0LGUpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQpLHRoaXMuZGlyZWN0aW9uLmNvcHkoZSksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQub3JpZ2luKSx0aGlzLmRpcmVjdGlvbi5jb3B5KHQuZGlyZWN0aW9uKSx0aGlzfWF0KHQsZSl7cmV0dXJuIGUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMub3JpZ2luKX1sb29rQXQodCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9uLmNvcHkodCkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzfXJlY2FzdCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KHQsS0p0KSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7ZS5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pO2NvbnN0IG49ZS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBuPDA/ZS5jb3B5KHRoaXMub3JpZ2luKTplLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKG4pLmFkZCh0aGlzLm9yaWdpbil9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVNxVG9Qb2ludCh0KSl9ZGlzdGFuY2VTcVRvUG9pbnQodCl7Y29uc3QgZT1LSnQuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBlPDA/dGhpcy5vcmlnaW4uZGlzdGFuY2VUb1NxdWFyZWQodCk6KEtKdC5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihlKS5hZGQodGhpcy5vcmlnaW4pLEtKdC5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VTcVRvU2VnbWVudCh0LGUsbixpKXtaSnQuY29weSh0KS5hZGQoZSkubXVsdGlwbHlTY2FsYXIoLjUpLEpKdC5jb3B5KGUpLnN1Yih0KS5ub3JtYWxpemUoKSxRSnQuY29weSh0aGlzLm9yaWdpbikuc3ViKFpKdCk7Y29uc3Qgcj0uNSp0LmRpc3RhbmNlVG8oZSksbz0tdGhpcy5kaXJlY3Rpb24uZG90KEpKdCksYT1RSnQuZG90KHRoaXMuZGlyZWN0aW9uKSxzPS1RSnQuZG90KEpKdCksbD1RSnQubGVuZ3RoU3EoKSxjPU1hdGguYWJzKDEtbypvKTtsZXQgdSxoLGQscDtpZihjPjApaWYodT1vKnMtYSxoPW8qYS1zLHA9cipjLHU+PTApaWYoaD49LXApaWYoaDw9cCl7Y29uc3QgdD0xL2M7dSo9dCxoKj10LGQ9dSoodStvKmgrMiphKStoKihvKnUraCsyKnMpK2x9ZWxzZSBoPXIsdT1NYXRoLm1heCgwLC0obypoK2EpKSxkPS11KnUraCooaCsyKnMpK2w7ZWxzZSBoPS1yLHU9TWF0aC5tYXgoMCwtKG8qaCthKSksZD0tdSp1K2gqKGgrMipzKStsO2Vsc2UgaDw9LXA/KHU9TWF0aC5tYXgoMCwtKC1vKnIrYSkpLGg9dT4wPy1yOk1hdGgubWluKE1hdGgubWF4KC1yLC1zKSxyKSxkPS11KnUraCooaCsyKnMpK2wpOmg8PXA/KHU9MCxoPU1hdGgubWluKE1hdGgubWF4KC1yLC1zKSxyKSxkPWgqKGgrMipzKStsKToodT1NYXRoLm1heCgwLC0obypyK2EpKSxoPXU+MD9yOk1hdGgubWluKE1hdGgubWF4KC1yLC1zKSxyKSxkPS11KnUraCooaCsyKnMpK2wpO2Vsc2UgaD1vPjA/LXI6cix1PU1hdGgubWF4KDAsLShvKmgrYSkpLGQ9LXUqdStoKihoKzIqcykrbDtyZXR1cm4gbiYmbi5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcih1KS5hZGQodGhpcy5vcmlnaW4pLGkmJmkuY29weShKSnQpLm11bHRpcGx5U2NhbGFyKGgpLmFkZChaSnQpLGR9aW50ZXJzZWN0U3BoZXJlKHQsZSl7S0p0LnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5vcmlnaW4pO2NvbnN0IG49S0p0LmRvdCh0aGlzLmRpcmVjdGlvbiksaT1LSnQuZG90KEtKdCktbipuLHI9dC5yYWRpdXMqdC5yYWRpdXM7aWYoaT5yKXJldHVybiBudWxsO2NvbnN0IG89TWF0aC5zcXJ0KHItaSksYT1uLW8scz1uK287cmV0dXJuIGE8MCYmczwwP251bGw6dGhpcy5hdChhPDA/czphLGUpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31kaXN0YW5jZVRvUGxhbmUodCl7Y29uc3QgZT10Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pO2lmKDA9PT1lKXJldHVybiAwPT09dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pPzA6bnVsbDtjb25zdCBuPS0odGhpcy5vcmlnaW4uZG90KHQubm9ybWFsKSt0LmNvbnN0YW50KS9lO3JldHVybiBuPj0wP246bnVsbH1pbnRlcnNlY3RQbGFuZSh0LGUpe2NvbnN0IG49dGhpcy5kaXN0YW5jZVRvUGxhbmUodCk7cmV0dXJuIG51bGw9PT1uP251bGw6dGhpcy5hdChuLGUpfWludGVyc2VjdHNQbGFuZSh0KXtjb25zdCBlPXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKTtyZXR1cm4gMD09PWV8fHQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbikqZTwwfWludGVyc2VjdEJveCh0LGUpe2xldCBuLGkscixvLGEscztjb25zdCBsPTEvdGhpcy5kaXJlY3Rpb24ueCxjPTEvdGhpcy5kaXJlY3Rpb24ueSx1PTEvdGhpcy5kaXJlY3Rpb24ueixoPXRoaXMub3JpZ2luO3JldHVybiBsPj0wPyhuPSh0Lm1pbi54LWgueCkqbCxpPSh0Lm1heC54LWgueCkqbCk6KG49KHQubWF4LngtaC54KSpsLGk9KHQubWluLngtaC54KSpsKSxjPj0wPyhyPSh0Lm1pbi55LWgueSkqYyxvPSh0Lm1heC55LWgueSkqYyk6KHI9KHQubWF4LnktaC55KSpjLG89KHQubWluLnktaC55KSpjKSxuPm98fHI+aT9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKG88aXx8aSE9aSkmJihpPW8pLHU+PTA/KGE9KHQubWluLnotaC56KSp1LHM9KHQubWF4LnotaC56KSp1KTooYT0odC5tYXguei1oLnopKnUscz0odC5taW4uei1oLnopKnUpLG4+c3x8YT5pP251bGw6KChhPm58fG4hPW4pJiYobj1hKSwoczxpfHxpIT1pKSYmKGk9cyksaTwwP251bGw6dGhpcy5hdChuPj0wP246aSxlKSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIG51bGwhPT10aGlzLmludGVyc2VjdEJveCh0LEtKdCl9aW50ZXJzZWN0VHJpYW5nbGUodCxlLG4saSxyKXt0UXQuc3ViVmVjdG9ycyhlLHQpLGVRdC5zdWJWZWN0b3JzKG4sdCksblF0LmNyb3NzVmVjdG9ycyh0UXQsZVF0KTtsZXQgbyxhPXRoaXMuZGlyZWN0aW9uLmRvdChuUXQpO2lmKGE+MCl7aWYoaSlyZXR1cm4gbnVsbDtvPTF9ZWxzZXtpZighKGE8MCkpcmV0dXJuIG51bGw7bz0tMSxhPS1hfVFKdC5zdWJWZWN0b3JzKHRoaXMub3JpZ2luLHQpO2NvbnN0IHM9byp0aGlzLmRpcmVjdGlvbi5kb3QoZVF0LmNyb3NzVmVjdG9ycyhRSnQsZVF0KSk7aWYoczwwKXJldHVybiBudWxsO2NvbnN0IGw9byp0aGlzLmRpcmVjdGlvbi5kb3QodFF0LmNyb3NzKFFKdCkpO2lmKGw8MClyZXR1cm4gbnVsbDtpZihzK2w+YSlyZXR1cm4gbnVsbDtjb25zdCBjPS1vKlFKdC5kb3QoblF0KTtyZXR1cm4gYzwwP251bGw6dGhpcy5hdChjL2Escil9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQodCksdGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LmRpcmVjdGlvbi5lcXVhbHModGhpcy5kaXJlY3Rpb24pfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jbGFzcyByUXR7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoLGQscCxmLG0pe2NvbnN0IGc9dGhpcy5lbGVtZW50cztyZXR1cm4gZ1swXT10LGdbNF09ZSxnWzhdPW4sZ1sxMl09aSxnWzFdPXIsZ1s1XT1vLGdbOV09YSxnWzEzXT1zLGdbMl09bCxnWzZdPWMsZ1sxMF09dSxnWzE0XT1oLGdbM109ZCxnWzddPXAsZ1sxMV09ZixnWzE1XT1tLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgclF0KS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzBdPW5bMF0sZVsxXT1uWzFdLGVbMl09blsyXSxlWzNdPW5bM10sZVs0XT1uWzRdLGVbNV09bls1XSxlWzZdPW5bNl0sZVs3XT1uWzddLGVbOF09bls4XSxlWzldPW5bOV0sZVsxMF09blsxMF0sZVsxMV09blsxMV0sZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sZVsxNV09blsxNV0sdGhpc31jb3B5UG9zaXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVsxMl09blsxMl0sZVsxM109blsxM10sZVsxNF09blsxNF0sdGhpc31zZXRGcm9tTWF0cml4Myh0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVszXSxlWzZdLDAsZVsxXSxlWzRdLGVbN10sMCxlWzJdLGVbNV0sZVs4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxlLG4pe3JldHVybiB0aGlzLnNldCh0LngsZS54LG4ueCwwLHQueSxlLnksbi55LDAsdC56LGUueixuLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzLGk9MS9vUXQuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLHI9MS9vUXQuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLG89MS9vUXQuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiBlWzBdPW5bMF0qaSxlWzFdPW5bMV0qaSxlWzJdPW5bMl0qaSxlWzNdPTAsZVs0XT1uWzRdKnIsZVs1XT1uWzVdKnIsZVs2XT1uWzZdKnIsZVs3XT0wLGVbOF09bls4XSpvLGVbOV09bls5XSpvLGVbMTBdPW5bMTBdKm8sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbUV1bGVyKHQpe3QmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm1ha2VSb3RhdGlvbkZyb21FdWxlcigpIG5vdyBleHBlY3RzIGEgRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lnosbz1NYXRoLmNvcyhuKSxhPU1hdGguc2luKG4pLHM9TWF0aC5jb3MoaSksbD1NYXRoLnNpbihpKSxjPU1hdGguY29zKHIpLHU9TWF0aC5zaW4ocik7aWYoIlhZWiI9PT10Lm9yZGVyKXtjb25zdCB0PW8qYyxuPW8qdSxpPWEqYyxyPWEqdTtlWzBdPXMqYyxlWzRdPS1zKnUsZVs4XT1sLGVbMV09bitpKmwsZVs1XT10LXIqbCxlWzldPS1hKnMsZVsyXT1yLXQqbCxlWzZdPWkrbipsLGVbMTBdPW8qc31lbHNlIGlmKCJZWFoiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10K3IqYSxlWzRdPWkqYS1uLGVbOF09bypsLGVbMV09byp1LGVbNV09bypjLGVbOV09LWEsZVsyXT1uKmEtaSxlWzZdPXIrdCphLGVbMTBdPW8qc31lbHNlIGlmKCJaWFkiPT09dC5vcmRlcil7Y29uc3QgdD1zKmMsbj1zKnUsaT1sKmMscj1sKnU7ZVswXT10LXIqYSxlWzRdPS1vKnUsZVs4XT1pK24qYSxlWzFdPW4raSphLGVbNV09bypjLGVbOV09ci10KmEsZVsyXT0tbypsLGVbNl09YSxlWzEwXT1vKnN9ZWxzZSBpZigiWllYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypjLG49byp1LGk9YSpjLHI9YSp1O2VbMF09cypjLGVbNF09aSpsLW4sZVs4XT10KmwrcixlWzFdPXMqdSxlWzVdPXIqbCt0LGVbOV09bipsLWksZVsyXT0tbCxlWzZdPWEqcyxlWzEwXT1vKnN9ZWxzZSBpZigiWVpYIj09PXQub3JkZXIpe2NvbnN0IHQ9bypzLG49bypsLGk9YSpzLHI9YSpsO2VbMF09cypjLGVbNF09ci10KnUsZVs4XT1pKnUrbixlWzFdPXUsZVs1XT1vKmMsZVs5XT0tYSpjLGVbMl09LWwqYyxlWzZdPW4qdStpLGVbMTBdPXQtcip1fWVsc2UgaWYoIlhaWSI9PT10Lm9yZGVyKXtjb25zdCB0PW8qcyxuPW8qbCxpPWEqcyxyPWEqbDtlWzBdPXMqYyxlWzRdPS11LGVbOF09bCpjLGVbMV09dCp1K3IsZVs1XT1vKmMsZVs5XT1uKnUtaSxlWzJdPWkqdS1uLGVbNl09YSpjLGVbMTBdPXIqdSt0fXJldHVybiBlWzNdPTAsZVs3XT0wLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLmNvbXBvc2Uoc1F0LHQsbFF0KX1sb29rQXQodCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gaFF0LnN1YlZlY3RvcnModCxlKSwwPT09aFF0Lmxlbmd0aFNxKCkmJihoUXQuej0xKSxoUXQubm9ybWFsaXplKCksY1F0LmNyb3NzVmVjdG9ycyhuLGhRdCksMD09PWNRdC5sZW5ndGhTcSgpJiYoMT09PU1hdGguYWJzKG4ueik/aFF0LngrPTFlLTQ6aFF0LnorPTFlLTQsaFF0Lm5vcm1hbGl6ZSgpLGNRdC5jcm9zc1ZlY3RvcnMobixoUXQpKSxjUXQubm9ybWFsaXplKCksdVF0LmNyb3NzVmVjdG9ycyhoUXQsY1F0KSxpWzBdPWNRdC54LGlbNF09dVF0LngsaVs4XT1oUXQueCxpWzFdPWNRdC55LGlbNV09dVF0LnksaVs5XT1oUXQueSxpWzJdPWNRdC56LGlbNl09dVF0LnosaVsxMF09aFF0LnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5TWF0cmljZXMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LGUpKTp0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bNF0scz1uWzhdLGw9blsxMl0sYz1uWzFdLHU9bls1XSxoPW5bOV0sZD1uWzEzXSxwPW5bMl0sZj1uWzZdLG09blsxMF0sZz1uWzE0XSxfPW5bM10seT1uWzddLHY9blsxMV0sYj1uWzE1XSx4PWlbMF0sdz1pWzRdLFM9aVs4XSxNPWlbMTJdLEU9aVsxXSxUPWlbNV0sQz1pWzldLEE9aVsxM10saz1pWzJdLEw9aVs2XSxQPWlbMTBdLE49aVsxNF0sST1pWzNdLFI9aVs3XSxPPWlbMTFdLHo9aVsxNV07cmV0dXJuIHJbMF09byp4K2EqRStzKmsrbCpJLHJbNF09byp3K2EqVCtzKkwrbCpSLHJbOF09bypTK2EqQytzKlArbCpPLHJbMTJdPW8qTSthKkErcypOK2wqeixyWzFdPWMqeCt1KkUraCprK2QqSSxyWzVdPWMqdyt1KlQraCpMK2QqUixyWzldPWMqUyt1KkMraCpQK2QqTyxyWzEzXT1jKk0rdSpBK2gqTitkKnosclsyXT1wKngrZipFK20qaytnKkkscls2XT1wKncrZipUK20qTCtnKlIsclsxMF09cCpTK2YqQyttKlArZypPLHJbMTRdPXAqTStmKkErbSpOK2cqeixyWzNdPV8qeCt5KkUrdiprK2IqSSxyWzddPV8qdyt5KlQrdipMK2IqUixyWzExXT1fKlMreSpDK3YqUCtiKk8sclsxNV09XypNK3kqQSt2Kk4rYip6LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbNF0qPXQsZVs4XSo9dCxlWzEyXSo9dCxlWzFdKj10LGVbNV0qPXQsZVs5XSo9dCxlWzEzXSo9dCxlWzJdKj10LGVbNl0qPXQsZVsxMF0qPXQsZVsxNF0qPXQsZVszXSo9dCxlWzddKj10LGVbMTFdKj10LGVbMTVdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFs0XSxpPXRbOF0scj10WzEyXSxvPXRbMV0sYT10WzVdLHM9dFs5XSxsPXRbMTNdLGM9dFsyXSx1PXRbNl0saD10WzEwXSxkPXRbMTRdO3JldHVybiB0WzNdKigrcipzKnUtaSpsKnUtciphKmgrbipsKmgraSphKmQtbipzKmQpK3RbN10qKCtlKnMqZC1lKmwqaCtyKm8qaC1pKm8qZCtpKmwqYy1yKnMqYykrdFsxMV0qKCtlKmwqdS1lKmEqZC1yKm8qdStuKm8qZCtyKmEqYy1uKmwqYykrdFsxNV0qKC1pKmEqYy1lKnMqdStlKmEqaCtpKm8qdS1uKm8qaCtuKnMqYyl9dHJhbnNwb3NlKCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzO2xldCBlO3JldHVybiBlPXRbMV0sdFsxXT10WzRdLHRbNF09ZSxlPXRbMl0sdFsyXT10WzhdLHRbOF09ZSxlPXRbNl0sdFs2XT10WzldLHRbOV09ZSxlPXRbM10sdFszXT10WzEyXSx0WzEyXT1lLGU9dFs3XSx0WzddPXRbMTNdLHRbMTNdPWUsZT10WzExXSx0WzExXT10WzE0XSx0WzE0XT1lLHRoaXN9c2V0UG9zaXRpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdC5pc1ZlY3RvcjM/KGlbMTJdPXQueCxpWzEzXT10LnksaVsxNF09dC56KTooaVsxMl09dCxpWzEzXT1lLGlbMTRdPW4pLHRoaXN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9dFs5XSxoPXRbMTBdLGQ9dFsxMV0scD10WzEyXSxmPXRbMTNdLG09dFsxNF0sZz10WzE1XSxfPXUqbSpsLWYqaCpsK2YqcypkLWEqbSpkLXUqcypnK2EqaCpnLHk9cCpoKmwtYyptKmwtcCpzKmQrbyptKmQrYypzKmctbypoKmcsdj1jKmYqbC1wKnUqbCtwKmEqZC1vKmYqZC1jKmEqZytvKnUqZyxiPXAqdSpzLWMqZipzLXAqYSpoK28qZipoK2MqYSptLW8qdSptLHg9ZSpfK24qeStpKnYrcipiO2lmKDA9PT14KXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCB3PTEveDtyZXR1cm4gdFswXT1fKncsdFsxXT0oZipoKnItdSptKnItZippKmQrbiptKmQrdSppKmctbipoKmcpKncsdFsyXT0oYSptKnItZipzKnIrZippKmwtbiptKmwtYSppKmcrbipzKmcpKncsdFszXT0odSpzKnItYSpoKnItdSppKmwrbipoKmwrYSppKmQtbipzKmQpKncsdFs0XT15KncsdFs1XT0oYyptKnItcCpoKnIrcCppKmQtZSptKmQtYyppKmcrZSpoKmcpKncsdFs2XT0ocCpzKnItbyptKnItcCppKmwrZSptKmwrbyppKmctZSpzKmcpKncsdFs3XT0obypoKnItYypzKnIrYyppKmwtZSpoKmwtbyppKmQrZSpzKmQpKncsdFs4XT12KncsdFs5XT0ocCp1KnItYypmKnItcCpuKmQrZSpmKmQrYypuKmctZSp1KmcpKncsdFsxMF09KG8qZipyLXAqYSpyK3AqbipsLWUqZipsLW8qbipnK2UqYSpnKSp3LHRbMTFdPShjKmEqci1vKnUqci1jKm4qbCtlKnUqbCtvKm4qZC1lKmEqZCkqdyx0WzEyXT1iKncsdFsxM109KGMqZippLXAqdSppK3AqbipoLWUqZipoLWMqbiptK2UqdSptKSp3LHRbMTRdPShwKmEqaS1vKmYqaS1wKm4qcytlKmYqcytvKm4qbS1lKmEqbSkqdyx0WzE1XT0obyp1KmktYyphKmkrYypuKnMtZSp1KnMtbypuKmgrZSphKmgpKncsdGhpc31zY2FsZSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LngsaT10Lnkscj10Lno7cmV0dXJuIGVbMF0qPW4sZVs0XSo9aSxlWzhdKj1yLGVbMV0qPW4sZVs1XSo9aSxlWzldKj1yLGVbMl0qPW4sZVs2XSo9aSxlWzEwXSo9cixlWzNdKj1uLGVbN10qPWksZVsxMV0qPXIsdGhpc31nZXRNYXhTY2FsZU9uQXhpcygpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdLHRbNF0qdFs0XSt0WzVdKnRbNV0rdFs2XSp0WzZdLHRbOF0qdFs4XSt0WzldKnRbOV0rdFsxMF0qdFsxMF0pKX1tYWtlVHJhbnNsYXRpb24odCxlLG4pe3JldHVybiB0aGlzLnNldCgxLDAsMCx0LDAsMSwwLGUsMCwwLDEsbiwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblgodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsZSwtbiwwLDAsbixlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25ZKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwwLG4sMCwwLDEsMCwwLC1uLDAsZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWih0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbkF4aXModCxlKXtjb25zdCBuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSkscj0xLW4sbz10LngsYT10Lnkscz10LnosbD1yKm8sYz1yKmE7cmV0dXJuIHRoaXMuc2V0KGwqbytuLGwqYS1pKnMsbCpzK2kqYSwwLGwqYStpKnMsYyphK24sYypzLWkqbywwLGwqcy1pKmEsYypzK2kqbyxyKnMqcytuLDAsMCwwLDAsMSksdGhpc31tYWtlU2NhbGUodCxlLG4pe3JldHVybiB0aGlzLnNldCh0LDAsMCwwLDAsZSwwLDAsMCwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VTaGVhcih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuc2V0KDEsbixyLDAsdCwxLG8sMCxlLGksMSwwLDAsMCwwLDEpLHRoaXN9Y29tcG9zZSh0LGUsbil7Y29uc3QgaT10aGlzLmVsZW1lbnRzLHI9ZS5feCxvPWUuX3ksYT1lLl96LHM9ZS5fdyxsPXIrcixjPW8rbyx1PWErYSxoPXIqbCxkPXIqYyxwPXIqdSxmPW8qYyxtPW8qdSxnPWEqdSxfPXMqbCx5PXMqYyx2PXMqdSxiPW4ueCx4PW4ueSx3PW4uejtyZXR1cm4gaVswXT0oMS0oZitnKSkqYixpWzFdPShkK3YpKmIsaVsyXT0ocC15KSpiLGlbM109MCxpWzRdPShkLXYpKngsaVs1XT0oMS0oaCtnKSkqeCxpWzZdPShtK18pKngsaVs3XT0wLGlbOF09KHAreSkqdyxpWzldPShtLV8pKncsaVsxMF09KDEtKGgrZikpKncsaVsxMV09MCxpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueixpWzE1XT0xLHRoaXN9ZGVjb21wb3NlKHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7bGV0IHI9b1F0LnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCk7Y29uc3Qgbz1vUXQuc2V0KGlbNF0saVs1XSxpWzZdKS5sZW5ndGgoKSxhPW9RdC5zZXQoaVs4XSxpWzldLGlbMTBdKS5sZW5ndGgoKTt0aGlzLmRldGVybWluYW50KCk8MCYmKHI9LXIpLHQueD1pWzEyXSx0Lnk9aVsxM10sdC56PWlbMTRdLGFRdC5jb3B5KHRoaXMpO2NvbnN0IHM9MS9yLGw9MS9vLGM9MS9hO3JldHVybiBhUXQuZWxlbWVudHNbMF0qPXMsYVF0LmVsZW1lbnRzWzFdKj1zLGFRdC5lbGVtZW50c1syXSo9cyxhUXQuZWxlbWVudHNbNF0qPWwsYVF0LmVsZW1lbnRzWzVdKj1sLGFRdC5lbGVtZW50c1s2XSo9bCxhUXQuZWxlbWVudHNbOF0qPWMsYVF0LmVsZW1lbnRzWzldKj1jLGFRdC5lbGVtZW50c1sxMF0qPWMsZS5zZXRGcm9tUm90YXRpb25NYXRyaXgoYVF0KSxuLng9cixuLnk9byxuLno9YSx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LGUsbixpLHIsbyl7dm9pZCAwPT09byYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MipyLyhuLWkpLGw9KGUrdCkvKGUtdCksYz0obitpKS8obi1pKSx1PS0obytyKS8oby1yKSxoPS0yKm8qci8oby1yKTtyZXR1cm4gYVswXT0yKnIvKGUtdCksYVs0XT0wLGFbOF09bCxhWzEyXT0wLGFbMV09MCxhWzVdPXMsYVs5XT1jLGFbMTNdPTAsYVsyXT0wLGFbNl09MCxhWzEwXT11LGFbMTRdPWgsYVszXT0wLGFbN109MCxhWzExXT0tMSxhWzE1XT0wLHRoaXN9bWFrZU9ydGhvZ3JhcGhpYyh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLmVsZW1lbnRzLHM9MS8oZS10KSxsPTEvKG4taSksYz0xLyhvLXIpLHU9KGUrdCkqcyxoPShuK2kpKmwsZD0obytyKSpjO3JldHVybiBhWzBdPTIqcyxhWzRdPTAsYVs4XT0wLGFbMTJdPS11LGFbMV09MCxhWzVdPTIqbCxhWzldPTAsYVsxM109LWgsYVsyXT0wLGFbNl09MCxhWzEwXT0tMipjLGFbMTRdPS1kLGFbM109MCxhWzddPTAsYVsxMV09MCxhWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDwxNjt0KyspaWYoZVt0XSE9PW5bdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IG49MDtuPDE2O24rKyl0aGlzLmVsZW1lbnRzW25dPXRbbitlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09blswXSx0W2UrMV09blsxXSx0W2UrMl09blsyXSx0W2UrM109blszXSx0W2UrNF09bls0XSx0W2UrNV09bls1XSx0W2UrNl09bls2XSx0W2UrN109bls3XSx0W2UrOF09bls4XSx0W2UrOV09bls5XSx0W2UrMTBdPW5bMTBdLHRbZSsxMV09blsxMV0sdFtlKzEyXT1uWzEyXSx0W2UrMTNdPW5bMTNdLHRbZSsxNF09blsxNF0sdFtlKzE1XT1uWzE1XSx0fX1yUXQucHJvdG90eXBlLmlzTWF0cml4ND0hMDtjb25zdCBvUXQ9bmV3IENKdCxhUXQ9bmV3IHJRdCxzUXQ9bmV3IENKdCgwLDAsMCksbFF0PW5ldyBDSnQoMSwxLDEpLGNRdD1uZXcgQ0p0LHVRdD1uZXcgQ0p0LGhRdD1uZXcgQ0p0LGRRdD1uZXcgclF0LHBRdD1uZXcgVEp0O2NsYXNzIGZRdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPWZRdC5EZWZhdWx0T3JkZXIpe3RoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWl9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IG9yZGVyKCl7cmV0dXJuIHRoaXMuX29yZGVyfXNldCBvcmRlcih0KXt0aGlzLl9vcmRlcj10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4saT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX29yZGVyPWksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LGU9dGhpcy5fb3JkZXIsbj0hMCl7Y29uc3QgaT10LmVsZW1lbnRzLHI9aVswXSxvPWlbNF0sYT1pWzhdLHM9aVsxXSxsPWlbNV0sYz1pWzldLHU9aVsyXSxoPWlbNl0sZD1pWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKCRadChhLC0xLDEpKSxNYXRoLmFicyhhKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxyKSk6KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9TWF0aC5hc2luKC0kWnQoYywtMSwxKSksTWF0aC5hYnMoYyk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMihhLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLGwpKToodGhpcy5feT1NYXRoLmF0YW4yKC11LHIpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJaWFkiOnRoaXMuX3g9TWF0aC5hc2luKCRadChoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC11LGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIocyxyKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC0kWnQodSwtMSwxKSksTWF0aC5hYnModSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGQpLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKToodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxsKSk7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3o9TWF0aC5hc2luKCRadChzLC0xLDEpKSxNYXRoLmFicyhzKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1jLGwpLHRoaXMuX3k9TWF0aC5hdGFuMigtdSxyKSk6KHRoaXMuX3g9MCx0aGlzLl95PU1hdGguYXRhbjIoYSxkKSk7YnJlYWs7Y2FzZSJYWlkiOnRoaXMuX3o9TWF0aC5hc2luKC0kWnQobywtMSwxKSksTWF0aC5hYnMobyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihoLGwpLHRoaXMuX3k9TWF0aC5hdGFuMihhLHIpKToodGhpcy5feD1NYXRoLmF0YW4yKC1jLGQpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSwhMD09PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxuKXtyZXR1cm4gZFF0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGRRdCxlLG4pfXNldEZyb21WZWN0b3IzKHQsZT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGUpfXJlb3JkZXIodCl7cmV0dXJuIHBRdC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihwUXQsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdm9pZCAwIT09dFszXSYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgQ0p0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1mUXQucHJvdG90eXBlLmlzRXVsZXI9ITAsZlF0LkRlZmF1bHRPcmRlcj0iWFlaIixmUXQuUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTtjbGFzcyBtUXR7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPTE8PHR8MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybiAwIT0odGhpcy5tYXNrJnQubWFzayl9fWxldCBnUXQ9MDtjb25zdCBfUXQ9bmV3IENKdCx5UXQ9bmV3IFRKdCx2UXQ9bmV3IHJRdCxiUXQ9bmV3IENKdCx4UXQ9bmV3IENKdCx3UXQ9bmV3IENKdCxTUXQ9bmV3IFRKdCxNUXQ9bmV3IENKdCgxLDAsMCksRVF0PW5ldyBDSnQoMCwxLDApLFRRdD1uZXcgQ0p0KDAsMCwxKSxDUXQ9e3R5cGU6ImFkZGVkIn0sQVF0PXt0eXBlOiJyZW1vdmVkIn07Y2xhc3Mga1F0IGV4dGVuZHMgalp0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpnUXQrK30pLHRoaXMudXVpZD1YWnQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJPYmplY3QzRCIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMudXA9a1F0LkRlZmF1bHRVcC5jbG9uZSgpO2NvbnN0IHQ9bmV3IENKdCxlPW5ldyBmUXQsbj1uZXcgVEp0LGk9bmV3IENKdCgxLDEsMSk7ZS5fb25DaGFuZ2UoKGZ1bmN0aW9uIHIoKXtuLnNldEZyb21FdWxlcihlLCExKX0pKSxuLl9vbkNoYW5nZSgoZnVuY3Rpb24gbygpe2Uuc2V0RnJvbVF1YXRlcm5pb24obix2b2lkIDAsITEpfSkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZX0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bn0sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOml9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IHJRdH0sbm9ybWFsTWF0cml4Ont2YWx1ZTpuZXcgZ0p0fX0pLHRoaXMubWF0cml4PW5ldyByUXQsdGhpcy5tYXRyaXhXb3JsZD1uZXcgclF0LHRoaXMubWF0cml4QXV0b1VwZGF0ZT1rUXQuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHRoaXMubGF5ZXJzPW5ldyBtUXQsdGhpcy52aXNpYmxlPSEwLHRoaXMuY2FzdFNoYWRvdz0hMSx0aGlzLnJlY2VpdmVTaGFkb3c9ITEsdGhpcy5mcnVzdHVtQ3VsbGVkPSEwLHRoaXMucmVuZGVyT3JkZXI9MCx0aGlzLmFuaW1hdGlvbnM9W10sdGhpcy51c2VyRGF0YT17fX1vbkJlZm9yZVJlbmRlcigpe31vbkFmdGVyUmVuZGVyKCl7fWFwcGx5TWF0cml4NCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlKHQsZSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUodCxlKX1zZXRSb3RhdGlvbkZyb21FdWxlcih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfXNldFJvdGF0aW9uRnJvbU1hdHJpeCh0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfXNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkodCl9cm90YXRlT25BeGlzKHQsZSl7cmV0dXJuIHlRdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSksdGhpcy5xdWF0ZXJuaW9uLm11bHRpcGx5KHlRdCksdGhpc31yb3RhdGVPbldvcmxkQXhpcyh0LGUpe3JldHVybiB5UXQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh5UXQpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoTVF0LHQpfXJvdGF0ZVkodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKEVRdCx0KX1yb3RhdGVaKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhUUXQsdCl9dHJhbnNsYXRlT25BeGlzKHQsZSl7cmV0dXJuIF9RdC5jb3B5KHQpLmFwcGx5UXVhdGVybmlvbih0aGlzLnF1YXRlcm5pb24pLHRoaXMucG9zaXRpb24uYWRkKF9RdC5tdWx0aXBseVNjYWxhcihlKSksdGhpc310cmFuc2xhdGVYKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhNUXQsdCl9dHJhbnNsYXRlWSh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoRVF0LHQpfXRyYW5zbGF0ZVoodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKFRRdCx0KX1sb2NhbFRvV29ybGQodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfXdvcmxkVG9Mb2NhbCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQodlF0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCkpfWxvb2tBdCh0LGUsbil7dC5pc1ZlY3RvcjM/YlF0LmNvcHkodCk6YlF0LnNldCh0LGUsbik7Y29uc3QgaT10aGlzLnBhcmVudDt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx4UXQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpLHRoaXMuaXNDYW1lcmF8fHRoaXMuaXNMaWdodD92UXQubG9va0F0KHhRdCxiUXQsdGhpcy51cCk6dlF0Lmxvb2tBdChiUXQseFF0LHRoaXMudXApLHRoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgodlF0KSxpJiYodlF0LmV4dHJhY3RSb3RhdGlvbihpLm1hdHJpeFdvcmxkKSx5UXQuc2V0RnJvbVJvdGF0aW9uTWF0cml4KHZRdCksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHlRdC5pbnZlcnQoKSkpfWFkZCh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5hZGQoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31yZXR1cm4gdD09PXRoaXM/KGNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IGNhbid0IGJlIGFkZGVkIGFzIGEgY2hpbGQgb2YgaXRzZWxmLiIsdCksdGhpcyk6KHQmJnQuaXNPYmplY3QzRD8obnVsbCE9PXQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCksdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcmVuLnB1c2godCksdC5kaXNwYXRjaEV2ZW50KENRdCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfXJlbW92ZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31jb25zdCBlPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksdC5kaXNwYXRjaEV2ZW50KEFRdCkpLHRoaXN9cmVtb3ZlRnJvbVBhcmVudCgpe2NvbnN0IHQ9dGhpcy5wYXJlbnQ7cmV0dXJuIG51bGwhPT10JiZ0LnJlbW92ZSh0aGlzKSx0aGlzfWNsZWFyKCl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2NvbnN0IGU9dGhpcy5jaGlsZHJlblt0XTtlLnBhcmVudD1udWxsLGUuZGlzcGF0Y2hFdmVudChBUXQpfXJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD0wLHRoaXN9YXR0YWNoKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx2UXQuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxudWxsIT09dC5wYXJlbnQmJih0LnBhcmVudC51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdlF0Lm11bHRpcGx5KHQucGFyZW50Lm1hdHJpeFdvcmxkKSksdC5hcHBseU1hdHJpeDQodlF0KSx0aGlzLmFkZCh0KSx0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKSx0aGlzfWdldE9iamVjdEJ5SWQodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLHQpfWdldE9iamVjdEJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIix0KX1nZXRPYmplY3RCeVByb3BlcnR5KHQsZSl7aWYodGhpc1t0XT09PWUpcmV0dXJuIHRoaXM7Zm9yKGxldCBuPTAsaT10aGlzLmNoaWxkcmVuLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRoaXMuY2hpbGRyZW5bbl0uZ2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGl9fWdldFdvcmxkUG9zaXRpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfWdldFdvcmxkUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoeFF0LHQsd1F0KSx0fWdldFdvcmxkU2NhbGUodCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKHhRdCxTUXQsdCksdH1nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtjb25zdCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KGVbOF0sZVs5XSxlWzEwXSkubm9ybWFsaXplKCl9cmF5Y2FzdCgpe310cmF2ZXJzZSh0KXt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS50cmF2ZXJzZSh0KX10cmF2ZXJzZVZpc2libGUodCl7aWYoITE9PT10aGlzLnZpc2libGUpcmV0dXJuO3QodGhpcyk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyllW25dLnRyYXZlcnNlVmlzaWJsZSh0KX10cmF2ZXJzZUFuY2VzdG9ycyh0KXtjb25zdCBlPXRoaXMucGFyZW50O251bGwhPT1lJiYodChlKSxlLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH11cGRhdGVNYXRyaXhXb3JsZCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8dCkmJihudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0PSEwKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udXBkYXRlTWF0cml4V29ybGQodCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtjb25zdCBuPXRoaXMucGFyZW50O2lmKCEwPT09dCYmbnVsbCE9PW4mJm4udXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSxudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLCEwPT09ZSl7Y29uc3QgdD10aGlzLmNoaWxkcmVuO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0LG49e307ZSYmKHQ9e2dlb21ldHJpZXM6e30sbWF0ZXJpYWxzOnt9LHRleHR1cmVzOnt9LGltYWdlczp7fSxzaGFwZXM6e30sc2tlbGV0b25zOnt9LGFuaW1hdGlvbnM6e319LG4ubWV0YWRhdGE9e3ZlcnNpb246NC41LHR5cGU6Ik9iamVjdCIsZ2VuZXJhdG9yOiJPYmplY3QzRC50b0pTT04ifSk7Y29uc3QgaT17fTtmdW5jdGlvbiByKGUsbil7cmV0dXJuIHZvaWQgMD09PWVbbi51dWlkXSYmKGVbbi51dWlkXT1uLnRvSlNPTih0KSksbi51dWlkfWlmKGkudXVpZD10aGlzLnV1aWQsaS50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKGkubmFtZT10aGlzLm5hbWUpLCEwPT09dGhpcy5jYXN0U2hhZG93JiYoaS5jYXN0U2hhZG93PSEwKSwhMD09PXRoaXMucmVjZWl2ZVNoYWRvdyYmKGkucmVjZWl2ZVNoYWRvdz0hMCksITE9PT10aGlzLnZpc2libGUmJihpLnZpc2libGU9ITEpLCExPT09dGhpcy5mcnVzdHVtQ3VsbGVkJiYoaS5mcnVzdHVtQ3VsbGVkPSExKSwwIT09dGhpcy5yZW5kZXJPcmRlciYmKGkucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlciksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoaS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxpLmxheWVycz10aGlzLmxheWVycy5tYXNrLGkubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKSwhMT09PXRoaXMubWF0cml4QXV0b1VwZGF0ZSYmKGkubWF0cml4QXV0b1VwZGF0ZT0hMSksdGhpcy5pc0luc3RhbmNlZE1lc2gmJihpLnR5cGU9Ikluc3RhbmNlZE1lc2giLGkuY291bnQ9dGhpcy5jb3VudCxpLmluc3RhbmNlTWF0cml4PXRoaXMuaW5zdGFuY2VNYXRyaXgudG9KU09OKCksbnVsbCE9PXRoaXMuaW5zdGFuY2VDb2xvciYmKGkuaW5zdGFuY2VDb2xvcj10aGlzLmluc3RhbmNlQ29sb3IudG9KU09OKCkpKSx0aGlzLmlzU2NlbmUpdGhpcy5iYWNrZ3JvdW5kJiYodGhpcy5iYWNrZ3JvdW5kLmlzQ29sb3I/aS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oKTp0aGlzLmJhY2tncm91bmQuaXNUZXh0dXJlJiYoaS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04odCkudXVpZCkpLHRoaXMuZW52aXJvbm1lbnQmJnRoaXMuZW52aXJvbm1lbnQuaXNUZXh0dXJlJiYoaS5lbnZpcm9ubWVudD10aGlzLmVudmlyb25tZW50LnRvSlNPTih0KS51dWlkKTtlbHNlIGlmKHRoaXMuaXNNZXNofHx0aGlzLmlzTGluZXx8dGhpcy5pc1BvaW50cyl7aS5nZW9tZXRyeT1yKHQuZ2VvbWV0cmllcyx0aGlzLmdlb21ldHJ5KTtjb25zdCBlPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZih2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnNoYXBlcyl7Y29uc3Qgbj1lLnNoYXBlcztpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKylyKHQuc2hhcGVzLG5bZV0pO2Vsc2Ugcih0LnNoYXBlcyxuKX19aWYodGhpcy5pc1NraW5uZWRNZXNoJiYoaS5iaW5kTW9kZT10aGlzLmJpbmRNb2RlLGkuYmluZE1hdHJpeD10aGlzLmJpbmRNYXRyaXgudG9BcnJheSgpLHZvaWQgMCE9PXRoaXMuc2tlbGV0b24mJihyKHQuc2tlbGV0b25zLHRoaXMuc2tlbGV0b24pLGkuc2tlbGV0b249dGhpcy5za2VsZXRvbi51dWlkKSksdm9pZCAwIT09dGhpcy5tYXRlcmlhbClpZihBcnJheS5pc0FycmF5KHRoaXMubWF0ZXJpYWwpKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dGhpcy5tYXRlcmlhbC5sZW5ndGg7bjxpO24rKyllLnB1c2gocih0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsW25dKSk7aS5tYXRlcmlhbD1lfWVsc2UgaS5tYXRlcmlhbD1yKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWwpO2lmKHRoaXMuY2hpbGRyZW4ubGVuZ3RoPjApe2kuY2hpbGRyZW49W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNoaWxkcmVuLmxlbmd0aDtlKyspaS5jaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5bZV0udG9KU09OKHQpLm9iamVjdCl9aWYodGhpcy5hbmltYXRpb25zLmxlbmd0aD4wKXtpLmFuaW1hdGlvbnM9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmFuaW1hdGlvbnMubGVuZ3RoO2UrKylpLmFuaW1hdGlvbnMucHVzaChyKHQuYW5pbWF0aW9ucyx0aGlzLmFuaW1hdGlvbnNbZV0pKX1pZihlKXtjb25zdCBlPW8odC5nZW9tZXRyaWVzKSxpPW8odC5tYXRlcmlhbHMpLHI9byh0LnRleHR1cmVzKSxhPW8odC5pbWFnZXMpLHM9byh0LnNoYXBlcyksbD1vKHQuc2tlbGV0b25zKSxjPW8odC5hbmltYXRpb25zKTtlLmxlbmd0aD4wJiYobi5nZW9tZXRyaWVzPWUpLGkubGVuZ3RoPjAmJihuLm1hdGVyaWFscz1pKSxyLmxlbmd0aD4wJiYobi50ZXh0dXJlcz1yKSxhLmxlbmd0aD4wJiYobi5pbWFnZXM9YSkscy5sZW5ndGg+MCYmKG4uc2hhcGVzPXMpLGwubGVuZ3RoPjAmJihuLnNrZWxldG9ucz1sKSxjLmxlbmd0aD4wJiYobi5hbmltYXRpb25zPWMpfXJldHVybiBuLm9iamVjdD1pLG47ZnVuY3Rpb24gbyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTtkZWxldGUgaS5tZXRhZGF0YSxlLnB1c2goaSl9cmV0dXJuIGV9fWNsb25lKHQpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzLHQpfWNvcHkodCxlPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksITA9PT1lKWZvcihsZXQgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKXRoaXMuYWRkKHQuY2hpbGRyZW5bZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXN9fWtRdC5EZWZhdWx0VXA9bmV3IENKdCgwLDEsMCksa1F0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlPSEwLGtRdC5wcm90b3R5cGUuaXNPYmplY3QzRD0hMDtjb25zdCBMUXQ9bmV3IENKdCxQUXQ9bmV3IENKdCxOUXQ9bmV3IENKdCxJUXQ9bmV3IENKdCxSUXQ9bmV3IENKdCxPUXQ9bmV3IENKdCx6UXQ9bmV3IENKdCxEUXQ9bmV3IENKdCxCUXQ9bmV3IENKdCxIUXQ9bmV3IENKdDtjbGFzcyBGUXR7Y29uc3RydWN0b3IodD1uZXcgQ0p0LGU9bmV3IENKdCxuPW5ldyBDSnQpe3RoaXMuYT10LHRoaXMuYj1lLHRoaXMuYz1ufXN0YXRpYyBnZXROb3JtYWwodCxlLG4saSl7aS5zdWJWZWN0b3JzKG4sZSksTFF0LnN1YlZlY3RvcnModCxlKSxpLmNyb3NzKExRdCk7Y29uc3Qgcj1pLmxlbmd0aFNxKCk7cmV0dXJuIHI+MD9pLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KHIpKTppLnNldCgwLDAsMCl9c3RhdGljIGdldEJhcnljb29yZCh0LGUsbixpLHIpe0xRdC5zdWJWZWN0b3JzKGksZSksUFF0LnN1YlZlY3RvcnMobixlKSxOUXQuc3ViVmVjdG9ycyh0LGUpO2NvbnN0IG89TFF0LmRvdChMUXQpLGE9TFF0LmRvdChQUXQpLHM9TFF0LmRvdChOUXQpLGw9UFF0LmRvdChQUXQpLGM9UFF0LmRvdChOUXQpLHU9bypsLWEqYTtpZigwPT09dSlyZXR1cm4gci5zZXQoLTIsLTEsLTEpO2NvbnN0IGg9MS91LGQ9KGwqcy1hKmMpKmgscD0obypjLWEqcykqaDtyZXR1cm4gci5zZXQoMS1kLXAscCxkKX1zdGF0aWMgY29udGFpbnNQb2ludCh0LGUsbixpKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4saSxJUXQpLElRdC54Pj0wJiZJUXQueT49MCYmSVF0LngrSVF0Lnk8PTF9c3RhdGljIGdldFVWKHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLGksSVF0KSxzLnNldCgwLDApLHMuYWRkU2NhbGVkVmVjdG9yKHIsSVF0LngpLHMuYWRkU2NhbGVkVmVjdG9yKG8sSVF0LnkpLHMuYWRkU2NhbGVkVmVjdG9yKGEsSVF0LnopLHN9c3RhdGljIGlzRnJvbnRGYWNpbmcodCxlLG4saSl7cmV0dXJuIExRdC5zdWJWZWN0b3JzKG4sZSksUFF0LnN1YlZlY3RvcnModCxlKSxMUXQuY3Jvc3MoUFF0KS5kb3QoaSk8MH1zZXQodCxlLG4pe3JldHVybiB0aGlzLmEuY29weSh0KSx0aGlzLmIuY29weShlKSx0aGlzLmMuY29weShuKSx0aGlzfXNldEZyb21Qb2ludHNBbmRJbmRpY2VzKHQsZSxuLGkpe3JldHVybiB0aGlzLmEuY29weSh0W2VdKSx0aGlzLmIuY29weSh0W25dKSx0aGlzLmMuY29weSh0W2ldKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYS5jb3B5KHQuYSksdGhpcy5iLmNvcHkodC5iKSx0aGlzLmMuY29weSh0LmMpLHRoaXN9Z2V0QXJlYSgpe3JldHVybiBMUXQuc3ViVmVjdG9ycyh0aGlzLmMsdGhpcy5iKSxQUXQuc3ViVmVjdG9ycyh0aGlzLmEsdGhpcy5iKSwuNSpMUXQuY3Jvc3MoUFF0KS5sZW5ndGgoKX1nZXRNaWRwb2ludCh0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLmFkZCh0aGlzLmMpLm11bHRpcGx5U2NhbGFyKDEvMyl9Z2V0Tm9ybWFsKHQpe3JldHVybiBGUXQuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWdldFBsYW5lKHQpe3JldHVybiB0LnNldEZyb21Db3BsYW5hclBvaW50cyh0aGlzLmEsdGhpcy5iLHRoaXMuYyl9Z2V0QmFyeWNvb3JkKHQsZSl7cmV0dXJuIEZRdC5nZXRCYXJ5Y29vcmQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxlKX1nZXRVVih0LGUsbixpLHIpe3JldHVybiBGUXQuZ2V0VVYodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxlLG4saSxyKX1jb250YWluc1BvaW50KHQpe3JldHVybiBGUXQuY29udGFpbnNQb2ludCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1pc0Zyb250RmFjaW5nKHQpe3JldHVybiBGUXQuaXNGcm9udEZhY2luZyh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNUcmlhbmdsZSh0aGlzKX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmEsaT10aGlzLmIscj10aGlzLmM7bGV0IG8sYTtSUXQuc3ViVmVjdG9ycyhpLG4pLE9RdC5zdWJWZWN0b3JzKHIsbiksRFF0LnN1YlZlY3RvcnModCxuKTtjb25zdCBzPVJRdC5kb3QoRFF0KSxsPU9RdC5kb3QoRFF0KTtpZihzPD0wJiZsPD0wKXJldHVybiBlLmNvcHkobik7QlF0LnN1YlZlY3RvcnModCxpKTtjb25zdCBjPVJRdC5kb3QoQlF0KSx1PU9RdC5kb3QoQlF0KTtpZihjPj0wJiZ1PD1jKXJldHVybiBlLmNvcHkoaSk7Y29uc3QgaD1zKnUtYypsO2lmKGg8PTAmJnM+PTAmJmM8PTApcmV0dXJuIG89cy8ocy1jKSxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKFJRdCxvKTtIUXQuc3ViVmVjdG9ycyh0LHIpO2NvbnN0IGQ9UlF0LmRvdChIUXQpLHA9T1F0LmRvdChIUXQpO2lmKHA+PTAmJmQ8PXApcmV0dXJuIGUuY29weShyKTtjb25zdCBmPWQqbC1zKnA7aWYoZjw9MCYmbD49MCYmcDw9MClyZXR1cm4gYT1sLyhsLXApLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoT1F0LGEpO2NvbnN0IG09YypwLWQqdTtpZihtPD0wJiZ1LWM+PTAmJmQtcD49MClyZXR1cm4gelF0LnN1YlZlY3RvcnMocixpKSxhPSh1LWMpLyh1LWMrKGQtcCkpLGUuY29weShpKS5hZGRTY2FsZWRWZWN0b3IoelF0LGEpO2NvbnN0IGc9MS8obStmK2gpO3JldHVybiBvPWYqZyxhPWgqZyxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKFJRdCxvKS5hZGRTY2FsZWRWZWN0b3IoT1F0LGEpfWVxdWFscyh0KXtyZXR1cm4gdC5hLmVxdWFscyh0aGlzLmEpJiZ0LmIuZXF1YWxzKHRoaXMuYikmJnQuYy5lcXVhbHModGhpcy5jKX19bGV0IFZRdD0wO2NsYXNzIFVRdCBleHRlbmRzIGpadHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6VlF0Kyt9KSx0aGlzLnV1aWQ9WFp0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iTWF0ZXJpYWwiLHRoaXMuZm9nPSEwLHRoaXMuYmxlbmRpbmc9MSx0aGlzLnNpZGU9MCx0aGlzLnZlcnRleENvbG9ycz0hMSx0aGlzLm9wYWNpdHk9MSx0aGlzLnRyYW5zcGFyZW50PSExLHRoaXMuYmxlbmRTcmM9MjA0LHRoaXMuYmxlbmREc3Q9MjA1LHRoaXMuYmxlbmRFcXVhdGlvbj1WS3QsdGhpcy5ibGVuZFNyY0FscGhhPW51bGwsdGhpcy5ibGVuZERzdEFscGhhPW51bGwsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9bnVsbCx0aGlzLmRlcHRoRnVuYz0zLHRoaXMuZGVwdGhUZXN0PSEwLHRoaXMuZGVwdGhXcml0ZT0hMCx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9MjU1LHRoaXMuc3RlbmNpbEZ1bmM9NTE5LHRoaXMuc3RlbmNpbFJlZj0wLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGYWlsPUhadCx0aGlzLnN0ZW5jaWxaRmFpbD1IWnQsdGhpcy5zdGVuY2lsWlBhc3M9SFp0LHRoaXMuc3RlbmNpbFdyaXRlPSExLHRoaXMuY2xpcHBpbmdQbGFuZXM9bnVsbCx0aGlzLmNsaXBJbnRlcnNlY3Rpb249ITEsdGhpcy5jbGlwU2hhZG93cz0hMSx0aGlzLnNoYWRvd1NpZGU9bnVsbCx0aGlzLmNvbG9yV3JpdGU9ITAsdGhpcy5wcmVjaXNpb249bnVsbCx0aGlzLnBvbHlnb25PZmZzZXQ9ITEsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPTAsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9MCx0aGlzLmRpdGhlcmluZz0hMSx0aGlzLmFscGhhVGVzdD0wLHRoaXMuYWxwaGFUb0NvdmVyYWdlPSExLHRoaXMucHJlbXVsdGlwbGllZEFscGhhPSExLHRoaXMudmlzaWJsZT0hMCx0aGlzLnRvbmVNYXBwZWQ9ITAsdGhpcy51c2VyRGF0YT17fSx0aGlzLnZlcnNpb249MH1vbkJ1aWxkKCl7fW9uQmVmb3JlQ29tcGlsZSgpe31jdXN0b21Qcm9ncmFtQ2FjaGVLZXkoKXtyZXR1cm4gdGhpcy5vbkJlZm9yZUNvbXBpbGUudG9TdHJpbmcoKX1zZXRWYWx1ZXModCl7aWYodm9pZCAwIT09dClmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBuPXRbZV07aWYodm9pZCAwPT09bil7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrZSsiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWlmKCJzaGFkaW5nIj09PWUpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9MT09PW47Y29udGludWV9Y29uc3QgaT10aGlzW2VdO3ZvaWQgMCE9PWk/aSYmaS5pc0NvbG9yP2kuc2V0KG4pOmkmJmkuaXNWZWN0b3IzJiZuJiZuLmlzVmVjdG9yMz9pLmNvcHkobik6dGhpc1tlXT1uOmNvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogJyIrZSsiJyBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGlzIG1hdGVyaWFsLiIpfX10b0pTT04odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7ZSYmKHQ9e3RleHR1cmVzOnt9LGltYWdlczp7fX0pO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJNYXRlcmlhbCIsZ2VuZXJhdG9yOiJNYXRlcmlhbC50b0pTT04ifX07ZnVuY3Rpb24gaSh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTtkZWxldGUgaS5tZXRhZGF0YSxlLnB1c2goaSl9cmV0dXJuIGV9aWYobi51dWlkPXRoaXMudXVpZCxuLnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYobi5uYW1lPXRoaXMubmFtZSksdGhpcy5jb2xvciYmdGhpcy5jb2xvci5pc0NvbG9yJiYobi5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnJvdWdobmVzcyYmKG4ucm91Z2huZXNzPXRoaXMucm91Z2huZXNzKSx2b2lkIDAhPT10aGlzLm1ldGFsbmVzcyYmKG4ubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKSx0aGlzLnNoZWVuJiZ0aGlzLnNoZWVuLmlzQ29sb3ImJihuLnNoZWVuPXRoaXMuc2hlZW4uZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmUmJnRoaXMuZW1pc3NpdmUuaXNDb2xvciYmKG4uZW1pc3NpdmU9dGhpcy5lbWlzc2l2ZS5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmMSE9PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJihuLmVtaXNzaXZlSW50ZW5zaXR5PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXImJnRoaXMuc3BlY3VsYXIuaXNDb2xvciYmKG4uc3BlY3VsYXI9dGhpcy5zcGVjdWxhci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zcGVjdWxhckludGVuc2l0eSYmKG4uc3BlY3VsYXJJbnRlbnNpdHk9dGhpcy5zcGVjdWxhckludGVuc2l0eSksdGhpcy5zcGVjdWxhclRpbnQmJnRoaXMuc3BlY3VsYXJUaW50LmlzQ29sb3ImJihuLnNwZWN1bGFyVGludD10aGlzLnNwZWN1bGFyVGludC5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaGluaW5lc3MmJihuLnNoaW5pbmVzcz10aGlzLnNoaW5pbmVzcyksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXQmJihuLmNsZWFyY29hdD10aGlzLmNsZWFyY29hdCksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MmJihuLmNsZWFyY29hdFJvdWdobmVzcz10aGlzLmNsZWFyY29hdFJvdWdobmVzcyksdGhpcy5jbGVhcmNvYXRNYXAmJnRoaXMuY2xlYXJjb2F0TWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0TWFwPXRoaXMuY2xlYXJjb2F0TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcCYmdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiZ0aGlzLmNsZWFyY29hdE5vcm1hbE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE5vcm1hbE1hcD10aGlzLmNsZWFyY29hdE5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLmNsZWFyY29hdE5vcm1hbFNjYWxlPXRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLm1hcCYmdGhpcy5tYXAuaXNUZXh0dXJlJiYobi5tYXA9dGhpcy5tYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWF0Y2FwJiZ0aGlzLm1hdGNhcC5pc1RleHR1cmUmJihuLm1hdGNhcD10aGlzLm1hdGNhcC50b0pTT04odCkudXVpZCksdGhpcy5hbHBoYU1hcCYmdGhpcy5hbHBoYU1hcC5pc1RleHR1cmUmJihuLmFscGhhTWFwPXRoaXMuYWxwaGFNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubGlnaHRNYXAmJnRoaXMubGlnaHRNYXAuaXNUZXh0dXJlJiYobi5saWdodE1hcD10aGlzLmxpZ2h0TWFwLnRvSlNPTih0KS51dWlkLG4ubGlnaHRNYXBJbnRlbnNpdHk9dGhpcy5saWdodE1hcEludGVuc2l0eSksdGhpcy5hb01hcCYmdGhpcy5hb01hcC5pc1RleHR1cmUmJihuLmFvTWFwPXRoaXMuYW9NYXAudG9KU09OKHQpLnV1aWQsbi5hb01hcEludGVuc2l0eT10aGlzLmFvTWFwSW50ZW5zaXR5KSx0aGlzLmJ1bXBNYXAmJnRoaXMuYnVtcE1hcC5pc1RleHR1cmUmJihuLmJ1bXBNYXA9dGhpcy5idW1wTWFwLnRvSlNPTih0KS51dWlkLG4uYnVtcFNjYWxlPXRoaXMuYnVtcFNjYWxlKSx0aGlzLm5vcm1hbE1hcCYmdGhpcy5ub3JtYWxNYXAuaXNUZXh0dXJlJiYobi5ub3JtYWxNYXA9dGhpcy5ub3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5ub3JtYWxNYXBUeXBlPXRoaXMubm9ybWFsTWFwVHlwZSxuLm5vcm1hbFNjYWxlPXRoaXMubm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLmRpc3BsYWNlbWVudE1hcCYmdGhpcy5kaXNwbGFjZW1lbnRNYXAuaXNUZXh0dXJlJiYobi5kaXNwbGFjZW1lbnRNYXA9dGhpcy5kaXNwbGFjZW1lbnRNYXAudG9KU09OKHQpLnV1aWQsbi5kaXNwbGFjZW1lbnRTY2FsZT10aGlzLmRpc3BsYWNlbWVudFNjYWxlLG4uZGlzcGxhY2VtZW50Qmlhcz10aGlzLmRpc3BsYWNlbWVudEJpYXMpLHRoaXMucm91Z2huZXNzTWFwJiZ0aGlzLnJvdWdobmVzc01hcC5pc1RleHR1cmUmJihuLnJvdWdobmVzc01hcD10aGlzLnJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5tZXRhbG5lc3NNYXAmJnRoaXMubWV0YWxuZXNzTWFwLmlzVGV4dHVyZSYmKG4ubWV0YWxuZXNzTWFwPXRoaXMubWV0YWxuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVtaXNzaXZlTWFwJiZ0aGlzLmVtaXNzaXZlTWFwLmlzVGV4dHVyZSYmKG4uZW1pc3NpdmVNYXA9dGhpcy5lbWlzc2l2ZU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhck1hcCYmdGhpcy5zcGVjdWxhck1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyTWFwPXRoaXMuc3BlY3VsYXJNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhckludGVuc2l0eU1hcD10aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyVGludE1hcCYmdGhpcy5zcGVjdWxhclRpbnRNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhclRpbnRNYXA9dGhpcy5zcGVjdWxhclRpbnRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW52TWFwJiZ0aGlzLmVudk1hcC5pc1RleHR1cmUmJihuLmVudk1hcD10aGlzLmVudk1hcC50b0pTT04odCkudXVpZCx2b2lkIDAhPT10aGlzLmNvbWJpbmUmJihuLmNvbWJpbmU9dGhpcy5jb21iaW5lKSksdm9pZCAwIT09dGhpcy5lbnZNYXBJbnRlbnNpdHkmJihuLmVudk1hcEludGVuc2l0eT10aGlzLmVudk1hcEludGVuc2l0eSksdm9pZCAwIT09dGhpcy5yZWZsZWN0aXZpdHkmJihuLnJlZmxlY3Rpdml0eT10aGlzLnJlZmxlY3Rpdml0eSksdm9pZCAwIT09dGhpcy5yZWZyYWN0aW9uUmF0aW8mJihuLnJlZnJhY3Rpb25SYXRpbz10aGlzLnJlZnJhY3Rpb25SYXRpbyksdGhpcy5ncmFkaWVudE1hcCYmdGhpcy5ncmFkaWVudE1hcC5pc1RleHR1cmUmJihuLmdyYWRpZW50TWFwPXRoaXMuZ3JhZGllbnRNYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMudHJhbnNtaXNzaW9uJiYobi50cmFuc21pc3Npb249dGhpcy50cmFuc21pc3Npb24pLHRoaXMudHJhbnNtaXNzaW9uTWFwJiZ0aGlzLnRyYW5zbWlzc2lvbk1hcC5pc1RleHR1cmUmJihuLnRyYW5zbWlzc2lvbk1hcD10aGlzLnRyYW5zbWlzc2lvbk1hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy50aGlja25lc3MmJihuLnRoaWNrbmVzcz10aGlzLnRoaWNrbmVzcyksdGhpcy50aGlja25lc3NNYXAmJnRoaXMudGhpY2tuZXNzTWFwLmlzVGV4dHVyZSYmKG4udGhpY2tuZXNzTWFwPXRoaXMudGhpY2tuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UmJihuLmF0dGVudWF0aW9uRGlzdGFuY2U9dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlKSx2b2lkIDAhPT10aGlzLmF0dGVudWF0aW9uVGludCYmKG4uYXR0ZW51YXRpb25UaW50PXRoaXMuYXR0ZW51YXRpb25UaW50LmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNpemUmJihuLnNpemU9dGhpcy5zaXplKSxudWxsIT09dGhpcy5zaGFkb3dTaWRlJiYobi5zaGFkb3dTaWRlPXRoaXMuc2hhZG93U2lkZSksdm9pZCAwIT09dGhpcy5zaXplQXR0ZW51YXRpb24mJihuLnNpemVBdHRlbnVhdGlvbj10aGlzLnNpemVBdHRlbnVhdGlvbiksMSE9PXRoaXMuYmxlbmRpbmcmJihuLmJsZW5kaW5nPXRoaXMuYmxlbmRpbmcpLDAhPT10aGlzLnNpZGUmJihuLnNpZGU9dGhpcy5zaWRlKSx0aGlzLnZlcnRleENvbG9ycyYmKG4udmVydGV4Q29sb3JzPSEwKSx0aGlzLm9wYWNpdHk8MSYmKG4ub3BhY2l0eT10aGlzLm9wYWNpdHkpLCEwPT09dGhpcy50cmFuc3BhcmVudCYmKG4udHJhbnNwYXJlbnQ9dGhpcy50cmFuc3BhcmVudCksbi5kZXB0aEZ1bmM9dGhpcy5kZXB0aEZ1bmMsbi5kZXB0aFRlc3Q9dGhpcy5kZXB0aFRlc3Qsbi5kZXB0aFdyaXRlPXRoaXMuZGVwdGhXcml0ZSxuLmNvbG9yV3JpdGU9dGhpcy5jb2xvcldyaXRlLG4uc3RlbmNpbFdyaXRlPXRoaXMuc3RlbmNpbFdyaXRlLG4uc3RlbmNpbFdyaXRlTWFzaz10aGlzLnN0ZW5jaWxXcml0ZU1hc2ssbi5zdGVuY2lsRnVuYz10aGlzLnN0ZW5jaWxGdW5jLG4uc3RlbmNpbFJlZj10aGlzLnN0ZW5jaWxSZWYsbi5zdGVuY2lsRnVuY01hc2s9dGhpcy5zdGVuY2lsRnVuY01hc2ssbi5zdGVuY2lsRmFpbD10aGlzLnN0ZW5jaWxGYWlsLG4uc3RlbmNpbFpGYWlsPXRoaXMuc3RlbmNpbFpGYWlsLG4uc3RlbmNpbFpQYXNzPXRoaXMuc3RlbmNpbFpQYXNzLHRoaXMucm90YXRpb24mJjAhPT10aGlzLnJvdGF0aW9uJiYobi5yb3RhdGlvbj10aGlzLnJvdGF0aW9uKSwhMD09PXRoaXMucG9seWdvbk9mZnNldCYmKG4ucG9seWdvbk9mZnNldD0hMCksMCE9PXRoaXMucG9seWdvbk9mZnNldEZhY3RvciYmKG4ucG9seWdvbk9mZnNldEZhY3Rvcj10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IpLDAhPT10aGlzLnBvbHlnb25PZmZzZXRVbml0cyYmKG4ucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldFVuaXRzKSx0aGlzLmxpbmV3aWR0aCYmMSE9PXRoaXMubGluZXdpZHRoJiYobi5saW5ld2lkdGg9dGhpcy5saW5ld2lkdGgpLHZvaWQgMCE9PXRoaXMuZGFzaFNpemUmJihuLmRhc2hTaXplPXRoaXMuZGFzaFNpemUpLHZvaWQgMCE9PXRoaXMuZ2FwU2l6ZSYmKG4uZ2FwU2l6ZT10aGlzLmdhcFNpemUpLHZvaWQgMCE9PXRoaXMuc2NhbGUmJihuLnNjYWxlPXRoaXMuc2NhbGUpLCEwPT09dGhpcy5kaXRoZXJpbmcmJihuLmRpdGhlcmluZz0hMCksdGhpcy5hbHBoYVRlc3Q+MCYmKG4uYWxwaGFUZXN0PXRoaXMuYWxwaGFUZXN0KSwhMD09PXRoaXMuYWxwaGFUb0NvdmVyYWdlJiYobi5hbHBoYVRvQ292ZXJhZ2U9dGhpcy5hbHBoYVRvQ292ZXJhZ2UpLCEwPT09dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEmJihuLnByZW11bHRpcGxpZWRBbHBoYT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSksITA9PT10aGlzLndpcmVmcmFtZSYmKG4ud2lyZWZyYW1lPXRoaXMud2lyZWZyYW1lKSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD4xJiYobi53aXJlZnJhbWVMaW5ld2lkdGg9dGhpcy53aXJlZnJhbWVMaW5ld2lkdGgpLCJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVjYXAmJihuLndpcmVmcmFtZUxpbmVjYXA9dGhpcy53aXJlZnJhbWVMaW5lY2FwKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lam9pbiYmKG4ud2lyZWZyYW1lTGluZWpvaW49dGhpcy53aXJlZnJhbWVMaW5lam9pbiksITA9PT10aGlzLmZsYXRTaGFkaW5nJiYobi5mbGF0U2hhZGluZz10aGlzLmZsYXRTaGFkaW5nKSwhMT09PXRoaXMudmlzaWJsZSYmKG4udmlzaWJsZT0hMSksITE9PT10aGlzLnRvbmVNYXBwZWQmJihuLnRvbmVNYXBwZWQ9ITEpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG4udXNlckRhdGE9dGhpcy51c2VyRGF0YSksZSl7Y29uc3QgZT1pKHQudGV4dHVyZXMpLHI9aSh0LmltYWdlcyk7ZS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9ZSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpfXJldHVybiBufWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5uYW1lPXQubmFtZSx0aGlzLmZvZz10LmZvZyx0aGlzLmJsZW5kaW5nPXQuYmxlbmRpbmcsdGhpcy5zaWRlPXQuc2lkZSx0aGlzLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycyx0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCx0aGlzLmJsZW5kU3JjPXQuYmxlbmRTcmMsdGhpcy5ibGVuZERzdD10LmJsZW5kRHN0LHRoaXMuYmxlbmRFcXVhdGlvbj10LmJsZW5kRXF1YXRpb24sdGhpcy5ibGVuZFNyY0FscGhhPXQuYmxlbmRTcmNBbHBoYSx0aGlzLmJsZW5kRHN0QWxwaGE9dC5ibGVuZERzdEFscGhhLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXQuYmxlbmRFcXVhdGlvbkFscGhhLHRoaXMuZGVwdGhGdW5jPXQuZGVwdGhGdW5jLHRoaXMuZGVwdGhUZXN0PXQuZGVwdGhUZXN0LHRoaXMuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayx0aGlzLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMsdGhpcy5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZix0aGlzLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayx0aGlzLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwsdGhpcy5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwsdGhpcy5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MsdGhpcy5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGU7Y29uc3QgZT10LmNsaXBwaW5nUGxhbmVzO2xldCBuPW51bGw7aWYobnVsbCE9PWUpe2NvbnN0IHQ9ZS5sZW5ndGg7bj1uZXcgQXJyYXkodCk7Zm9yKGxldCBpPTA7aSE9PXQ7KytpKW5baV09ZVtpXS5jbG9uZSgpfXJldHVybiB0aGlzLmNsaXBwaW5nUGxhbmVzPW4sdGhpcy5jbGlwSW50ZXJzZWN0aW9uPXQuY2xpcEludGVyc2VjdGlvbix0aGlzLmNsaXBTaGFkb3dzPXQuY2xpcFNoYWRvd3MsdGhpcy5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSx0aGlzLmNvbG9yV3JpdGU9dC5jb2xvcldyaXRlLHRoaXMucHJlY2lzaW9uPXQucHJlY2lzaW9uLHRoaXMucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvcix0aGlzLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyx0aGlzLmRpdGhlcmluZz10LmRpdGhlcmluZyx0aGlzLmFscGhhVGVzdD10LmFscGhhVGVzdCx0aGlzLmFscGhhVG9Db3ZlcmFnZT10LmFscGhhVG9Db3ZlcmFnZSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fVVRdC5wcm90b3R5cGUuaXNNYXRlcmlhbD0hMDtjb25zdCBqUXQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH0sR1F0PXtoOjAsczowLGw6MH0sV1F0PXtoOjAsczowLGw6MH07ZnVuY3Rpb24gcVF0KHQsZSxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/dCs2KihlLXQpKm46bjwuNT9lOm48Mi8zP3QrNiooZS10KSooMi8zLW4pOnR9ZnVuY3Rpb24gWVF0KHQpe3JldHVybiB0PC4wNDA0NT8uMDc3Mzk5MzgwOCp0Ok1hdGgucG93KC45NDc4NjcyOTg2KnQrLjA1MjEzMjcwMTQsMi40KX1mdW5jdGlvbiBYUXQodCl7cmV0dXJuIHQ8LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LC40MTY2NiktLjA1NX1jbGFzcyAkUXR7Y29uc3RydWN0b3IodCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiZ2b2lkIDA9PT1uP3RoaXMuc2V0KHQpOnRoaXMuc2V0UkdCKHQsZSxuKX1zZXQodCl7cmV0dXJuIHQmJnQuaXNDb2xvcj90aGlzLmNvcHkodCk6Im51bWJlciI9PXR5cGVvZiB0P3RoaXMuc2V0SGV4KHQpOiJzdHJpbmciPT10eXBlb2YgdCYmdGhpcy5zZXRTdHlsZSh0KSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPXQsdGhpcy5iPXQsdGhpc31zZXRIZXgodCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSx0aGlzLnI9KHQ+PjE2JjI1NSkvMjU1LHRoaXMuZz0odD4+OCYyNTUpLzI1NSx0aGlzLmI9KDI1NSZ0KS8yNTUsdGhpc31zZXRSR0IodCxlLG4pe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9ZSx0aGlzLmI9bix0aGlzfXNldEhTTCh0LGUsbil7aWYodD1LWnQodCwxKSxlPSRadChlLDAsMSksbj0kWnQobiwwLDEpLDA9PT1lKXRoaXMucj10aGlzLmc9dGhpcy5iPW47ZWxzZXtjb25zdCBpPW48PS41P24qKDErZSk6bitlLW4qZSxyPTIqbi1pO3RoaXMucj1xUXQocixpLHQrMS8zKSx0aGlzLmc9cVF0KHIsaSx0KSx0aGlzLmI9cVF0KHIsaSx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gZShlKXt2b2lkIDAhPT1lJiZwYXJzZUZsb2F0KGUpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG47aWYobj0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IHQ7Y29uc3QgaT1uWzJdO3N3aXRjaChuWzFdKXtjYXNlInJnYiI6Y2FzZSJyZ2JhIjppZih0PS9eXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMoaSkpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsxXSwxMCkpLzI1NSx0aGlzLmc9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMl0sMTApKS8yNTUsdGhpcy5iPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzNdLDEwKSkvMjU1LGUodFs0XSksdGhpcztpZih0PS9eXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMoaSkpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzNdLDEwKSkvMTAwLGUodFs0XSksdGhpczticmVhaztjYXNlImhzbCI6Y2FzZSJoc2xhIjppZih0PS9eXHMqKFxkKlwuP1xkKylccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGkpKXtjb25zdCBuPXBhcnNlRmxvYXQodFsxXSkvMzYwLGk9cGFyc2VJbnQodFsyXSwxMCkvMTAwLHI9cGFyc2VJbnQodFszXSwxMCkvMTAwO3JldHVybiBlKHRbNF0pLHRoaXMuc2V0SFNMKG4saSxyKX19fWVsc2UgaWYobj0vXlwjKFtBLUZhLWZcZF0rKSQvLmV4ZWModCkpe2NvbnN0IHQ9blsxXSxlPXQubGVuZ3RoO2lmKDM9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMCksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMSkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMiksMTYpLzI1NSx0aGlzO2lmKDY9PT1lKXJldHVybiB0aGlzLnI9cGFyc2VJbnQodC5jaGFyQXQoMCkrdC5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQodC5jaGFyQXQoMikrdC5jaGFyQXQoMyksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQodC5jaGFyQXQoNCkrdC5jaGFyQXQoNSksMTYpLzI1NSx0aGlzfXJldHVybiB0JiZ0Lmxlbmd0aD4wP3RoaXMuc2V0Q29sb3JOYW1lKHQpOnRoaXN9c2V0Q29sb3JOYW1lKHQpe2NvbnN0IGU9alF0W3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weUdhbW1hVG9MaW5lYXIodCxlPTIpe3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLGUpLHRoaXMuZz1NYXRoLnBvdyh0LmcsZSksdGhpcy5iPU1hdGgucG93KHQuYixlKSx0aGlzfWNvcHlMaW5lYXJUb0dhbW1hKHQsZT0yKXtjb25zdCBuPWU+MD8xL2U6MTtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixuKSx0aGlzLmc9TWF0aC5wb3codC5nLG4pLHRoaXMuYj1NYXRoLnBvdyh0LmIsbiksdGhpc31jb252ZXJ0R2FtbWFUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLHQpLHRoaXN9Y29udmVydExpbmVhclRvR2FtbWEodCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvR2FtbWEodGhpcyx0KSx0aGlzfWNvcHlTUkdCVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMucj1ZUXQodC5yKSx0aGlzLmc9WVF0KHQuZyksdGhpcy5iPVlRdCh0LmIpLHRoaXN9Y29weUxpbmVhclRvU1JHQih0KXtyZXR1cm4gdGhpcy5yPVhRdCh0LnIpLHRoaXMuZz1YUXQodC5nKSx0aGlzLmI9WFF0KHQuYiksdGhpc31jb252ZXJ0U1JHQlRvTGluZWFyKCl7cmV0dXJuIHRoaXMuY29weVNSR0JUb0xpbmVhcih0aGlzKSx0aGlzfWNvbnZlcnRMaW5lYXJUb1NSR0IoKXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpLHRoaXN9Z2V0SGV4KCl7cmV0dXJuIDI1NSp0aGlzLnI8PDE2XjI1NSp0aGlzLmc8PDheMjU1KnRoaXMuYjw8MH1nZXRIZXhTdHJpbmcoKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX1nZXRIU0wodCl7Y29uc3QgZT10aGlzLnIsbj10aGlzLmcsaT10aGlzLmIscj1NYXRoLm1heChlLG4saSksbz1NYXRoLm1pbihlLG4saSk7bGV0IGEscztjb25zdCBsPShvK3IpLzI7aWYobz09PXIpYT0wLHM9MDtlbHNle2NvbnN0IHQ9ci1vO3N3aXRjaChzPWw8PS41P3QvKHIrbyk6dC8oMi1yLW8pLHIpe2Nhc2UgZTphPShuLWkpL3QrKG48aT82OjApO2JyZWFrO2Nhc2UgbjphPShpLWUpL3QrMjticmVhaztjYXNlIGk6YT0oZS1uKS90KzR9YS89Nn1yZXR1cm4gdC5oPWEsdC5zPXMsdC5sPWwsdH1nZXRTdHlsZSgpe3JldHVybiJyZ2IoIisoMjU1KnRoaXMucnwwKSsiLCIrKDI1NSp0aGlzLmd8MCkrIiwiKygyNTUqdGhpcy5ifDApKyIpIn1vZmZzZXRIU0wodCxlLG4pe3JldHVybiB0aGlzLmdldEhTTChHUXQpLEdRdC5oKz10LEdRdC5zKz1lLEdRdC5sKz1uLHRoaXMuc2V0SFNMKEdRdC5oLEdRdC5zLEdRdC5sKSx0aGlzfWFkZCh0KXtyZXR1cm4gdGhpcy5yKz10LnIsdGhpcy5nKz10LmcsdGhpcy5iKz10LmIsdGhpc31hZGRDb2xvcnModCxlKXtyZXR1cm4gdGhpcy5yPXQucitlLnIsdGhpcy5nPXQuZytlLmcsdGhpcy5iPXQuYitlLmIsdGhpc31hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMucis9dCx0aGlzLmcrPXQsdGhpcy5iKz10LHRoaXN9c3ViKHQpe3JldHVybiB0aGlzLnI9TWF0aC5tYXgoMCx0aGlzLnItdC5yKSx0aGlzLmc9TWF0aC5tYXgoMCx0aGlzLmctdC5nKSx0aGlzLmI9TWF0aC5tYXgoMCx0aGlzLmItdC5iKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLnIqPXQucix0aGlzLmcqPXQuZyx0aGlzLmIqPXQuYix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLnIqPXQsdGhpcy5nKj10LHRoaXMuYio9dCx0aGlzfWxlcnAodCxlKXtyZXR1cm4gdGhpcy5yKz0odC5yLXRoaXMucikqZSx0aGlzLmcrPSh0LmctdGhpcy5nKSplLHRoaXMuYis9KHQuYi10aGlzLmIpKmUsdGhpc31sZXJwQ29sb3JzKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQucisoZS5yLXQucikqbix0aGlzLmc9dC5nKyhlLmctdC5nKSpuLHRoaXMuYj10LmIrKGUuYi10LmIpKm4sdGhpc31sZXJwSFNMKHQsZSl7dGhpcy5nZXRIU0woR1F0KSx0LmdldEhTTChXUXQpO2NvbnN0IG49Wlp0KEdRdC5oLFdRdC5oLGUpLGk9Wlp0KEdRdC5zLFdRdC5zLGUpLHI9Wlp0KEdRdC5sLFdRdC5sLGUpO3JldHVybiB0aGlzLnNldEhTTChuLGksciksdGhpc31lcXVhbHModCl7cmV0dXJuIHQucj09PXRoaXMuciYmdC5nPT09dGhpcy5nJiZ0LmI9PT10aGlzLmJ9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy5yPXRbZV0sdGhpcy5nPXRbZSsxXSx0aGlzLmI9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5yLHRbZSsxXT10aGlzLmcsdFtlKzJdPXRoaXMuYix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5yPXQuZ2V0WChlKSx0aGlzLmc9dC5nZXRZKGUpLHRoaXMuYj10LmdldFooZSksITA9PT10Lm5vcm1hbGl6ZWQmJih0aGlzLnIvPTI1NSx0aGlzLmcvPTI1NSx0aGlzLmIvPTI1NSksdGhpc310b0pTT04oKXtyZXR1cm4gdGhpcy5nZXRIZXgoKX19JFF0Lk5BTUVTPWpRdCwkUXQucHJvdG90eXBlLmlzQ29sb3I9ITAsJFF0LnByb3RvdHlwZS5yPTEsJFF0LnByb3RvdHlwZS5nPTEsJFF0LnByb3RvdHlwZS5iPTE7Y2xhc3MgS1F0IGV4dGVuZHMgVVF0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJFF0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX1LUXQucHJvdG90eXBlLmlzTWVzaEJhc2ljTWF0ZXJpYWw9ITA7Y29uc3QgWlF0PW5ldyBDSnQsSlF0PW5ldyBtSnQ7Y2xhc3MgUVF0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5jb3VudD12b2lkIDAhPT10P3QubGVuZ3RoL2U6MCx0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1uLHRoaXMudXNhZ2U9Rlp0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MH1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5pdGVtU2l6ZT10Lml0ZW1TaXplLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLm5vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfWNvcHlBdCh0LGUsbil7dCo9dGhpcy5pdGVtU2l6ZSxuKj1lLml0ZW1TaXplO2ZvcihsZXQgaT0wLHI9dGhpcy5pdGVtU2l6ZTtpPHI7aSsrKXRoaXMuYXJyYXlbdCtpXT1lLmFycmF5W24raV07cmV0dXJuIHRoaXN9Y29weUFycmF5KHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfWNvcHlDb2xvcnNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlDb2xvcnNBcnJheSgpOiBjb2xvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3ICRRdCksZVtuKytdPXIucixlW24rK109ci5nLGVbbisrXT1yLmJ9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjJzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yMnNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBtSnQpLGVbbisrXT1yLngsZVtuKytdPXIueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IENKdCksZVtuKytdPXIueCxlW24rK109ci55LGVbbisrXT1yLnp9cmV0dXJuIHRoaXN9Y29weVZlY3RvcjRzQXJyYXkodCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yNHNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyB3SnQpLGVbbisrXT1yLngsZVtuKytdPXIueSxlW24rK109ci56LGVbbisrXT1yLnd9cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXgzKHQpe2lmKDI9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUpRdC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksSlF0LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZKGUsSlF0LngsSlF0LnkpO2Vsc2UgaWYoMz09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspWlF0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxaUXQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKGUsWlF0LngsWlF0LnksWlF0LnopO3JldHVybiB0aGlzfWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylaUXQueD10aGlzLmdldFgoZSksWlF0Lnk9dGhpcy5nZXRZKGUpLFpRdC56PXRoaXMuZ2V0WihlKSxaUXQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsWlF0LngsWlF0LnksWlF0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKVpRdC54PXRoaXMuZ2V0WChlKSxaUXQueT10aGlzLmdldFkoZSksWlF0Lno9dGhpcy5nZXRaKGUpLFpRdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLFpRdC54LFpRdC55LFpRdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspWlF0Lng9dGhpcy5nZXRYKGUpLFpRdC55PXRoaXMuZ2V0WShlKSxaUXQuej10aGlzLmdldFooZSksWlF0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLFpRdC54LFpRdC55LFpRdC56KTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdfXNldFgodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPWUsdGhpc31nZXRZKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX1zZXRZKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdPWUsdGhpc31nZXRaKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX1zZXRaKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPWUsdGhpc31nZXRXKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXX1zZXRXKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPWUsdGhpc31zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuYXJyYXlbMCsodCo9dGhpcy5pdGVtU2l6ZSldPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxlLG4saSl7cmV0dXJuIHRoaXMuYXJyYXlbMCsodCo9dGhpcy5pdGVtU2l6ZSldPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQsZSxuLGkscil7cmV0dXJuIHRoaXMuYXJyYXlbMCsodCo9dGhpcy5pdGVtU2l6ZSldPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPWksdGhpcy5hcnJheVt0KzNdPXIsdGhpc31vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFycmF5KSxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH07cmV0dXJuIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSx0aGlzLnVzYWdlIT09Rlp0JiYodC51c2FnZT10aGlzLnVzYWdlKSwwPT09dGhpcy51cGRhdGVSYW5nZS5vZmZzZXQmJi0xPT09dGhpcy51cGRhdGVSYW5nZS5jb3VudHx8KHQudXBkYXRlUmFuZ2U9dGhpcy51cGRhdGVSYW5nZSksdH19UVF0LnByb3RvdHlwZS5pc0J1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyB0MXQgZXh0ZW5kcyBRUXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBJbnQ4QXJyYXkodCksZSxuKX19Y2xhc3MgZTF0IGV4dGVuZHMgUVF0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDhBcnJheSh0KSxlLG4pfX1jbGFzcyBuMXQgZXh0ZW5kcyBRUXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxlLG4pfX1jbGFzcyBpMXQgZXh0ZW5kcyBRUXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBJbnQxNkFycmF5KHQpLGUsbil9fWNsYXNzIHIxdCBleHRlbmRzIFFRdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbil9fWNsYXNzIG8xdCBleHRlbmRzIFFRdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEludDMyQXJyYXkodCksZSxuKX19Y2xhc3MgYTF0IGV4dGVuZHMgUVF0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDMyQXJyYXkodCksZSxuKX19Y2xhc3MgczF0IGV4dGVuZHMgUVF0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgVWludDE2QXJyYXkodCksZSxuKX19czF0LnByb3RvdHlwZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgbDF0IGV4dGVuZHMgUVF0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihuZXcgRmxvYXQzMkFycmF5KHQpLGUsbil9fWNsYXNzIGMxdCBleHRlbmRzIFFRdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IEZsb2F0NjRBcnJheSh0KSxlLG4pfX1mdW5jdGlvbiB1MXQodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xLzA7bGV0IGU9dFswXTtmb3IobGV0IG49MSxpPXQubGVuZ3RoO248aTsrK24pdFtuXT5lJiYoZT10W25dKTtyZXR1cm4gZX1jb25zdCBoMXQ9e0ludDhBcnJheTpJbnQ4QXJyYXksVWludDhBcnJheTpVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5OlVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXk6SW50MTZBcnJheSxVaW50MTZBcnJheTpVaW50MTZBcnJheSxJbnQzMkFycmF5OkludDMyQXJyYXksVWludDMyQXJyYXk6VWludDMyQXJyYXksRmxvYXQzMkFycmF5OkZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXk6RmxvYXQ2NEFycmF5fTtmdW5jdGlvbiBkMXQodCxlKXtyZXR1cm4gbmV3IGgxdFt0XShlKX1sZXQgcDF0PTA7Y29uc3QgZjF0PW5ldyByUXQsbTF0PW5ldyBrUXQsZzF0PW5ldyBDSnQsXzF0PW5ldyBMSnQseTF0PW5ldyBMSnQsdjF0PW5ldyBDSnQ7Y2xhc3MgYjF0IGV4dGVuZHMgalp0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpwMXQrK30pLHRoaXMudXVpZD1YWnQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbmRleD1udWxsLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm1vcnBoQXR0cmlidXRlcz17fSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSExLHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGwsdGhpcy5kcmF3UmFuZ2U9e3N0YXJ0OjAsY291bnQ6MS8wfSx0aGlzLnVzZXJEYXRhPXt9fWdldEluZGV4KCl7cmV0dXJuIHRoaXMuaW5kZXh9c2V0SW5kZXgodCl7cmV0dXJuIHRoaXMuaW5kZXg9QXJyYXkuaXNBcnJheSh0KT9uZXcodTF0KHQpPjY1NTM1P2ExdDpyMXQpKHQsMSk6dCx0aGlzfWdldEF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdfXNldEF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF09ZSx0aGlzfWRlbGV0ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gZGVsZXRlIHRoaXMuYXR0cmlidXRlc1t0XSx0aGlzfWhhc0F0dHJpYnV0ZSh0KXtyZXR1cm4gdm9pZCAwIT09dGhpcy5hdHRyaWJ1dGVzW3RdfWFkZEdyb3VwKHQsZSxuPTApe3RoaXMuZ3JvdXBzLnB1c2goe3N0YXJ0OnQsY291bnQ6ZSxtYXRlcmlhbEluZGV4Om59KX1jbGVhckdyb3Vwcygpe3RoaXMuZ3JvdXBzPVtdfXNldERyYXdSYW5nZSh0LGUpe3RoaXMuZHJhd1JhbmdlLnN0YXJ0PXQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9ZX1hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb247dm9pZCAwIT09ZSYmKGUuYXBwbHlNYXRyaXg0KHQpLGUubmVlZHNVcGRhdGU9ITApO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtpZih2b2lkIDAhPT1uKXtjb25zdCBlPShuZXcgZ0p0KS5nZXROb3JtYWxNYXRyaXgodCk7bi5hcHBseU5vcm1hbE1hdHJpeChlKSxuLm5lZWRzVXBkYXRlPSEwfWNvbnN0IGk9dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7cmV0dXJuIHZvaWQgMCE9PWkmJihpLnRyYW5zZm9ybURpcmVjdGlvbih0KSxpLm5lZWRzVXBkYXRlPSEwKSxudWxsIT09dGhpcy5ib3VuZGluZ0JveCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSxudWxsIT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gZjF0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuYXBwbHlNYXRyaXg0KGYxdCksdGhpc31yb3RhdGVYKHQpe3JldHVybiBmMXQubWFrZVJvdGF0aW9uWCh0KSx0aGlzLmFwcGx5TWF0cml4NChmMXQpLHRoaXN9cm90YXRlWSh0KXtyZXR1cm4gZjF0Lm1ha2VSb3RhdGlvblkodCksdGhpcy5hcHBseU1hdHJpeDQoZjF0KSx0aGlzfXJvdGF0ZVoodCl7cmV0dXJuIGYxdC5tYWtlUm90YXRpb25aKHQpLHRoaXMuYXBwbHlNYXRyaXg0KGYxdCksdGhpc310cmFuc2xhdGUodCxlLG4pe3JldHVybiBmMXQubWFrZVRyYW5zbGF0aW9uKHQsZSxuKSx0aGlzLmFwcGx5TWF0cml4NChmMXQpLHRoaXN9c2NhbGUodCxlLG4pe3JldHVybiBmMXQubWFrZVNjYWxlKHQsZSxuKSx0aGlzLmFwcGx5TWF0cml4NChmMXQpLHRoaXN9bG9va0F0KHQpe3JldHVybiBtMXQubG9va0F0KHQpLG0xdC51cGRhdGVNYXRyaXgoKSx0aGlzLmFwcGx5TWF0cml4NChtMXQubWF0cml4KSx0aGlzfWNlbnRlcigpe3JldHVybiB0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKGcxdCkubmVnYXRlKCksdGhpcy50cmFuc2xhdGUoZzF0LngsZzF0LnksZzF0LnopLHRoaXN9c2V0RnJvbVBvaW50cyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10W25dO2UucHVzaChpLngsaS55LGkuenx8MCl9cmV0dXJuIHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdChlLDMpKSx0aGlzfWNvbXB1dGVCb3VuZGluZ0JveCgpe251bGw9PT10aGlzLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1uZXcgTEp0KTtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSlyZXR1cm4gY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIGJveC4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHZvaWQgdGhpcy5ib3VuZGluZ0JveC5zZXQobmV3IENKdCgtMS8wLC0xLzAsLTEvMCksbmV3IENKdCgxLzAsMS8wLDEvMCkpO2lmKHZvaWQgMCE9PXQpe2lmKHRoaXMuYm91bmRpbmdCb3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylfMXQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyh2MXQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixfMXQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQodjF0KSx2MXQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxfMXQubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQodjF0KSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChfMXQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoXzF0Lm1heCkpfWVsc2UgdGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTsoaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX1jb21wdXRlQm91bmRpbmdTcGhlcmUoKXtudWxsPT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmKHRoaXMuYm91bmRpbmdTcGhlcmU9bmV3ICRKdCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBzcGhlcmUuIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdTcGhlcmUuc2V0KG5ldyBDSnQsMS8wKTtpZih0KXtjb25zdCBuPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKF8xdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXkxdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KHYxdC5hZGRWZWN0b3JzKF8xdC5taW4seTF0Lm1pbiksXzF0LmV4cGFuZEJ5UG9pbnQodjF0KSx2MXQuYWRkVmVjdG9ycyhfMXQubWF4LHkxdC5tYXgpLF8xdC5leHBhbmRCeVBvaW50KHYxdCkpOihfMXQuZXhwYW5kQnlQb2ludCh5MXQubWluKSxfMXQuZXhwYW5kQnlQb2ludCh5MXQubWF4KSk7XzF0LmdldENlbnRlcihuKTtsZXQgaT0wO2ZvcihsZXQgZT0wLHI9dC5jb3VudDtlPHI7ZSsrKXYxdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksaT1NYXRoLm1heChpLG4uZGlzdGFuY2VUb1NxdWFyZWQodjF0KSk7aWYoZSlmb3IobGV0IHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89ZVtyXSxhPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Zm9yKGxldCBlPTAscj1vLmNvdW50O2U8cjtlKyspdjF0LmZyb21CdWZmZXJBdHRyaWJ1dGUobyxlKSxhJiYoZzF0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSx2MXQuYWRkKGcxdCkpLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKHYxdCkpfXRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzPU1hdGguc3FydChpKSxpc05hTih0aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cykmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfX1jb21wdXRlRmFjZU5vcm1hbHMoKXt9Y29tcHV0ZVRhbmdlbnRzKCl7Y29uc3QgdD10aGlzLmluZGV4LGU9dGhpcy5hdHRyaWJ1dGVzO2lmKG51bGw9PT10fHx2b2lkIDA9PT1lLnBvc2l0aW9ufHx2b2lkIDA9PT1lLm5vcm1hbHx8dm9pZCAwPT09ZS51dilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVUYW5nZW50cygpIGZhaWxlZC4gTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGVzIChpbmRleCwgcG9zaXRpb24sIG5vcm1hbCBvciB1dikiKTtjb25zdCBuPXQuYXJyYXksaT1lLnBvc2l0aW9uLmFycmF5LHI9ZS5ub3JtYWwuYXJyYXksbz1lLnV2LmFycmF5LGE9aS5sZW5ndGgvMzt2b2lkIDA9PT1lLnRhbmdlbnQmJnRoaXMuc2V0QXR0cmlidXRlKCJ0YW5nZW50IixuZXcgUVF0KG5ldyBGbG9hdDMyQXJyYXkoNCphKSw0KSk7Y29uc3Qgcz1lLnRhbmdlbnQuYXJyYXksbD1bXSxjPVtdO2ZvcihsZXQgdD0wO3Q8YTt0KyspbFt0XT1uZXcgQ0p0LGNbdF09bmV3IENKdDtjb25zdCB1PW5ldyBDSnQsaD1uZXcgQ0p0LGQ9bmV3IENKdCxwPW5ldyBtSnQsZj1uZXcgbUp0LG09bmV3IG1KdCxnPW5ldyBDSnQsXz1uZXcgQ0p0O2Z1bmN0aW9uIHkodCxlLG4pe3UuZnJvbUFycmF5KGksMyp0KSxoLmZyb21BcnJheShpLDMqZSksZC5mcm9tQXJyYXkoaSwzKm4pLHAuZnJvbUFycmF5KG8sMip0KSxmLmZyb21BcnJheShvLDIqZSksbS5mcm9tQXJyYXkobywyKm4pLGguc3ViKHUpLGQuc3ViKHUpLGYuc3ViKHApLG0uc3ViKHApO2NvbnN0IHI9MS8oZi54Km0ueS1tLngqZi55KTtpc0Zpbml0ZShyKSYmKGcuY29weShoKS5tdWx0aXBseVNjYWxhcihtLnkpLmFkZFNjYWxlZFZlY3RvcihkLC1mLnkpLm11bHRpcGx5U2NhbGFyKHIpLF8uY29weShkKS5tdWx0aXBseVNjYWxhcihmLngpLmFkZFNjYWxlZFZlY3RvcihoLC1tLngpLm11bHRpcGx5U2NhbGFyKHIpLGxbdF0uYWRkKGcpLGxbZV0uYWRkKGcpLGxbbl0uYWRkKGcpLGNbdF0uYWRkKF8pLGNbZV0uYWRkKF8pLGNbbl0uYWRkKF8pKX1sZXQgdj10aGlzLmdyb3VwczswPT09di5sZW5ndGgmJih2PVt7c3RhcnQ6MCxjb3VudDpuLmxlbmd0aH1dKTtmb3IobGV0IHQ9MCxlPXYubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IGU9dlt0XSxpPWUuc3RhcnQ7Zm9yKGxldCB0PWkscj1pK2UuY291bnQ7dDxyO3QrPTMpeShuW3QrMF0sblt0KzFdLG5bdCsyXSl9Y29uc3QgYj1uZXcgQ0p0LHg9bmV3IENKdCx3PW5ldyBDSnQsUz1uZXcgQ0p0O2Z1bmN0aW9uIE0odCl7dy5mcm9tQXJyYXkociwzKnQpLFMuY29weSh3KTtjb25zdCBlPWxbdF07Yi5jb3B5KGUpLGIuc3ViKHcubXVsdGlwbHlTY2FsYXIody5kb3QoZSkpKS5ub3JtYWxpemUoKSx4LmNyb3NzVmVjdG9ycyhTLGUpO2NvbnN0IG49eC5kb3QoY1t0XSk8MD8tMToxO3NbNCp0XT1iLngsc1s0KnQrMV09Yi55LHNbNCp0KzJdPWIueixzWzQqdCszXT1ufWZvcihsZXQgdD0wLGU9di5sZW5ndGg7dDxlOysrdCl7Y29uc3QgZT12W3RdLGk9ZS5zdGFydDtmb3IobGV0IHQ9aSxyPWkrZS5jb3VudDt0PHI7dCs9MylNKG5bdCswXSksTShuW3QrMV0pLE0oblt0KzJdKX19Y29tcHV0ZVZlcnRleE5vcm1hbHMoKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtpZih2b2lkIDAhPT1lKXtsZXQgbj10aGlzLmdldEF0dHJpYnV0ZSgibm9ybWFsIik7aWYodm9pZCAwPT09biluPW5ldyBRUXQobmV3IEZsb2F0MzJBcnJheSgzKmUuY291bnQpLDMpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG4pO2Vsc2UgZm9yKGxldCB0PTAsZT1uLmNvdW50O3Q8ZTt0Kyspbi5zZXRYWVoodCwwLDAsMCk7Y29uc3QgaT1uZXcgQ0p0LHI9bmV3IENKdCxvPW5ldyBDSnQsYT1uZXcgQ0p0LHM9bmV3IENKdCxsPW5ldyBDSnQsYz1uZXcgQ0p0LHU9bmV3IENKdDtpZih0KWZvcihsZXQgaD0wLGQ9dC5jb3VudDtoPGQ7aCs9Myl7Y29uc3QgZD10LmdldFgoaCswKSxwPXQuZ2V0WChoKzEpLGY9dC5nZXRYKGgrMik7aS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZCksci5mcm9tQnVmZmVyQXR0cmlidXRlKGUscCksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZiksYy5zdWJWZWN0b3JzKG8sciksdS5zdWJWZWN0b3JzKGksciksYy5jcm9zcyh1KSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUobixkKSxzLmZyb21CdWZmZXJBdHRyaWJ1dGUobixwKSxsLmZyb21CdWZmZXJBdHRyaWJ1dGUobixmKSxhLmFkZChjKSxzLmFkZChjKSxsLmFkZChjKSxuLnNldFhZWihkLGEueCxhLnksYS56KSxuLnNldFhZWihwLHMueCxzLnkscy56KSxuLnNldFhZWihmLGwueCxsLnksbC56KX1lbHNlIGZvcihsZXQgdD0wLGE9ZS5jb3VudDt0PGE7dCs9MylpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzApLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMSksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsyKSxjLnN1YlZlY3RvcnMobyxyKSx1LnN1YlZlY3RvcnMoaSxyKSxjLmNyb3NzKHUpLG4uc2V0WFlaKHQrMCxjLngsYy55LGMueiksbi5zZXRYWVoodCsxLGMueCxjLnksYy56KSxuLnNldFhZWih0KzIsYy54LGMueSxjLnopO3RoaXMubm9ybWFsaXplTm9ybWFscygpLG4ubmVlZHNVcGRhdGU9ITB9fW1lcmdlKHQsZSl7aWYoIXR8fCF0LmlzQnVmZmVyR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogZ2VvbWV0cnkgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkJ1ZmZlckdlb21ldHJ5LiIsdCk7dm9pZCAwPT09ZSYmKGU9MCxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IE92ZXJ3cml0aW5nIG9yaWdpbmFsIGdlb21ldHJ5LCBzdGFydGluZyBhdCBvZmZzZXQ9MC4gVXNlIEJ1ZmZlckdlb21ldHJ5VXRpbHMubWVyZ2VCdWZmZXJHZW9tZXRyaWVzKCkgZm9yIGxvc3NsZXNzIG1lcmdlLiIpKTtjb25zdCBuPXRoaXMuYXR0cmlidXRlcztmb3IoY29uc3QgaSBpbiBuKXtpZih2b2lkIDA9PT10LmF0dHJpYnV0ZXNbaV0pY29udGludWU7Y29uc3Qgcj1uW2ldLmFycmF5LG89dC5hdHRyaWJ1dGVzW2ldLGE9by5hcnJheSxzPW8uaXRlbVNpemUqZSxsPU1hdGgubWluKGEubGVuZ3RoLHIubGVuZ3RoLXMpO2ZvcihsZXQgdD0wLGU9czt0PGw7dCsrLGUrKylyW2VdPWFbdF19cmV0dXJuIHRoaXN9bm9ybWFsaXplTm9ybWFscygpe2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtmb3IobGV0IGU9MCxuPXQuY291bnQ7ZTxuO2UrKyl2MXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLHYxdC5ub3JtYWxpemUoKSx0LnNldFhZWihlLHYxdC54LHYxdC55LHYxdC56KX10b05vbkluZGV4ZWQoKXtmdW5jdGlvbiB0KHQsZSl7Y29uc3Qgbj10LmFycmF5LGk9dC5pdGVtU2l6ZSxyPXQubm9ybWFsaXplZCxvPW5ldyBuLmNvbnN0cnVjdG9yKGUubGVuZ3RoKmkpO2xldCBhPTAscz0wO2ZvcihsZXQgcj0wLGw9ZS5sZW5ndGg7cjxsO3IrKyl7YT10LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ZVtyXSp0LmRhdGEuc3RyaWRlK3Qub2Zmc2V0OmVbcl0qaTtmb3IobGV0IHQ9MDt0PGk7dCsrKW9bcysrXT1uW2ErK119cmV0dXJuIG5ldyBRUXQobyxpLHIpfWlmKG51bGw9PT10aGlzLmluZGV4KXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LnRvTm9uSW5kZXhlZCgpOiBCdWZmZXJHZW9tZXRyeSBpcyBhbHJlYWR5IG5vbi1pbmRleGVkLiIpLHRoaXM7Y29uc3QgZT1uZXcgYjF0LG49dGhpcy5pbmRleC5hcnJheSxpPXRoaXMuYXR0cmlidXRlcztmb3IoY29uc3QgciBpbiBpKXtjb25zdCBvPXQoaVtyXSxuKTtlLnNldEF0dHJpYnV0ZShyLG8pfWNvbnN0IHI9dGhpcy5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gcil7Y29uc3Qgbz1bXSxhPXJbaV07Zm9yKGxldCBlPTAsaT1hLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPXQoYVtlXSxuKTtvLnB1c2goaSl9ZS5tb3JwaEF0dHJpYnV0ZXNbaV09b31lLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Y29uc3Qgbz10aGlzLmdyb3Vwcztmb3IobGV0IHQ9MCxuPW8ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49b1t0XTtlLmFkZEdyb3VwKG4uc3RhcnQsbi5jb3VudCxuLm1hdGVyaWFsSW5kZXgpfXJldHVybiBlfXRvSlNPTigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJCdWZmZXJHZW9tZXRyeSIsZ2VuZXJhdG9yOiJCdWZmZXJHZW9tZXRyeS50b0pTT04ifX07aWYodC51dWlkPXRoaXMudXVpZCx0LnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYodC5uYW1lPXRoaXMubmFtZSksT2JqZWN0LmtleXModGhpcy51c2VyRGF0YSkubGVuZ3RoPjAmJih0LnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLHZvaWQgMCE9PXRoaXMucGFyYW1ldGVycyl7Y29uc3QgZT10aGlzLnBhcmFtZXRlcnM7Zm9yKGNvbnN0IG4gaW4gZSl2b2lkIDAhPT1lW25dJiYodFtuXT1lW25dKTtyZXR1cm4gdH10LmRhdGE9e2F0dHJpYnV0ZXM6e319O2NvbnN0IGU9dGhpcy5pbmRleDtudWxsIT09ZSYmKHQuZGF0YS5pbmRleD17dHlwZTplLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZS5hcnJheSl9KTtjb25zdCBuPXRoaXMuYXR0cmlidXRlcztmb3IoY29uc3QgZSBpbiBuKXQuZGF0YS5hdHRyaWJ1dGVzW2VdPW5bZV0udG9KU09OKHQuZGF0YSk7Y29uc3QgaT17fTtsZXQgcj0hMTtmb3IoY29uc3QgZSBpbiB0aGlzLm1vcnBoQXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLm1vcnBoQXR0cmlidXRlc1tlXSxvPVtdO2ZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKylvLnB1c2gobltlXS50b0pTT04odC5kYXRhKSk7by5sZW5ndGg+MCYmKGlbZV09byxyPSEwKX1yJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtjb25zdCBvPXRoaXMuZ3JvdXBzO28ubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtjb25zdCBhPXRoaXMuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1hJiYodC5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6YS5jZW50ZXIudG9BcnJheSgpLHJhZGl1czphLnJhZGl1c30pLHR9Y2xvbmUoKXtyZXR1cm4obmV3IGIxdCkuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbDtjb25zdCBlPXt9O3RoaXMubmFtZT10Lm5hbWU7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZ0aGlzLnNldEluZGV4KG4uY2xvbmUoZSkpO2NvbnN0IGk9dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGkpdGhpcy5zZXRBdHRyaWJ1dGUodCxpW3RdLmNsb25lKGUpKTtjb25zdCByPXQubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIHIpe2NvbnN0IG49W10saT1yW3RdO2ZvcihsZXQgdD0wLHI9aS5sZW5ndGg7dDxyO3QrKyluLnB1c2goaVt0XS5jbG9uZShlKSk7dGhpcy5tb3JwaEF0dHJpYnV0ZXNbdF09bn10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPXQubW9ycGhUYXJnZXRzUmVsYXRpdmU7Y29uc3Qgbz10Lmdyb3Vwcztmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9b1t0XTt0aGlzLmFkZEdyb3VwKGUuc3RhcnQsZS5jb3VudCxlLm1hdGVyaWFsSW5kZXgpfWNvbnN0IGE9dC5ib3VuZGluZ0JveDtudWxsIT09YSYmKHRoaXMuYm91bmRpbmdCb3g9YS5jbG9uZSgpKTtjb25zdCBzPXQuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1zJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1zLmNsb25lKCkpLHRoaXMuZHJhd1JhbmdlLnN0YXJ0PXQuZHJhd1JhbmdlLnN0YXJ0LHRoaXMuZHJhd1JhbmdlLmNvdW50PXQuZHJhd1JhbmdlLmNvdW50LHRoaXMudXNlckRhdGE9dC51c2VyRGF0YSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fWIxdC5wcm90b3R5cGUuaXNCdWZmZXJHZW9tZXRyeT0hMDtjb25zdCB4MXQ9bmV3IHJRdCx3MXQ9bmV3IGlRdCxTMXQ9bmV3ICRKdCxNMXQ9bmV3IENKdCxFMXQ9bmV3IENKdCxUMXQ9bmV3IENKdCxDMXQ9bmV3IENKdCxBMXQ9bmV3IENKdCxrMXQ9bmV3IENKdCxMMXQ9bmV3IENKdCxQMXQ9bmV3IENKdCxOMXQ9bmV3IENKdCxJMXQ9bmV3IG1KdCxSMXQ9bmV3IG1KdCxPMXQ9bmV3IG1KdCx6MXQ9bmV3IENKdCxEMXQ9bmV3IENKdDtjbGFzcyBCMXQgZXh0ZW5kcyBrUXR7Y29uc3RydWN0b3IodD1uZXcgYjF0LGU9bmV3IEtRdCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2giLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSksdm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnkmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LHQubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC51cGRhdGVNb3JwaFRhcmdldHMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX1yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LGk9dGhpcy5tYXRlcmlhbCxyPXRoaXMubWF0cml4V29ybGQ7aWYodm9pZCAwPT09aSlyZXR1cm47aWYobnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksUzF0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSksUzF0LmFwcGx5TWF0cml4NChyKSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoUzF0KSlyZXR1cm47aWYoeDF0LmNvcHkocikuaW52ZXJ0KCksdzF0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NCh4MXQpLG51bGwhPT1uLmJvdW5kaW5nQm94JiYhMT09PXcxdC5pbnRlcnNlY3RzQm94KG4uYm91bmRpbmdCb3gpKXJldHVybjtsZXQgbztpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHI9bi5pbmRleCxhPW4uYXR0cmlidXRlcy5wb3NpdGlvbixzPW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLGw9bi5tb3JwaFRhcmdldHNSZWxhdGl2ZSxjPW4uYXR0cmlidXRlcy51dix1PW4uYXR0cmlidXRlcy51djIsaD1uLmdyb3VwcyxkPW4uZHJhd1JhbmdlO2lmKG51bGwhPT1yKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBuPTAscD1oLmxlbmd0aDtuPHA7bisrKXtjb25zdCBwPWhbbl0sZj1pW3AubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KHAuc3RhcnQsZC5zdGFydCksaT1NYXRoLm1pbihwLnN0YXJ0K3AuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPGk7bis9Myl7Y29uc3QgaT1yLmdldFgobiksaD1yLmdldFgobisxKSxkPXIuZ2V0WChuKzIpO289SDF0KHRoaXMsZix0LHcxdCxhLHMsbCxjLHUsaSxoLGQpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksby5mYWNlLm1hdGVyaWFsSW5kZXg9cC5tYXRlcmlhbEluZGV4LGUucHVzaChvKSl9fWVsc2UgZm9yKGxldCBuPU1hdGgubWF4KDAsZC5zdGFydCksaD1NYXRoLm1pbihyLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7bjxoO24rPTMpe2NvbnN0IGg9ci5nZXRYKG4pLGQ9ci5nZXRYKG4rMSkscD1yLmdldFgobisyKTtvPUgxdCh0aGlzLGksdCx3MXQsYSxzLGwsYyx1LGgsZCxwKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChvKSl9ZWxzZSBpZih2b2lkIDAhPT1hKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBuPTAscj1oLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWhbbl0scD1pW3IubWF0ZXJpYWxJbmRleF07Zm9yKGxldCBuPU1hdGgubWF4KHIuc3RhcnQsZC5zdGFydCksaT1NYXRoLm1pbihyLnN0YXJ0K3IuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPGk7bis9MylvPUgxdCh0aGlzLHAsdCx3MXQsYSxzLGwsYyx1LG4sbisxLG4rMiksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1yLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX1lbHNlIGZvcihsZXQgbj1NYXRoLm1heCgwLGQuc3RhcnQpLHI9TWF0aC5taW4oYS5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248cjtuKz0zKW89SDF0KHRoaXMsaSx0LHcxdCxhLHMsbCxjLHUsbixuKzEsbisyKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGUucHVzaChvKSl9ZWxzZSBuLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fWZ1bmN0aW9uIEgxdCh0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCl7TTF0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixjKSxFMXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLHUpLFQxdC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsaCk7Y29uc3QgZD10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZihvJiZkKXtMMXQuc2V0KDAsMCwwKSxQMXQuc2V0KDAsMCwwKSxOMXQuc2V0KDAsMCwwKTtmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9ZFt0XSxuPW9bdF07MCE9PWUmJihDMXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGMpLEExdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdSksazF0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixoKSxhPyhMMXQuYWRkU2NhbGVkVmVjdG9yKEMxdCxlKSxQMXQuYWRkU2NhbGVkVmVjdG9yKEExdCxlKSxOMXQuYWRkU2NhbGVkVmVjdG9yKGsxdCxlKSk6KEwxdC5hZGRTY2FsZWRWZWN0b3IoQzF0LnN1YihNMXQpLGUpLFAxdC5hZGRTY2FsZWRWZWN0b3IoQTF0LnN1YihFMXQpLGUpLE4xdC5hZGRTY2FsZWRWZWN0b3IoazF0LnN1YihUMXQpLGUpKSl9TTF0LmFkZChMMXQpLEUxdC5hZGQoUDF0KSxUMXQuYWRkKE4xdCl9dC5pc1NraW5uZWRNZXNoJiYodC5ib25lVHJhbnNmb3JtKGMsTTF0KSx0LmJvbmVUcmFuc2Zvcm0odSxFMXQpLHQuYm9uZVRyYW5zZm9ybShoLFQxdCkpO2NvbnN0IHA9KGZ1bmN0aW9uIGYodCxlLG4saSxyLG8sYSxzKXtsZXQgbDtpZihsPTE9PT1lLnNpZGU/aS5pbnRlcnNlY3RUcmlhbmdsZShhLG8sciwhMCxzKTppLmludGVyc2VjdFRyaWFuZ2xlKHIsbyxhLDIhPT1lLnNpZGUscyksbnVsbD09PWwpcmV0dXJuIG51bGw7RDF0LmNvcHkocyksRDF0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKTtjb25zdCBjPW4ucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEQxdCk7cmV0dXJuIGM8bi5uZWFyfHxjPm4uZmFyP251bGw6e2Rpc3RhbmNlOmMscG9pbnQ6RDF0LmNsb25lKCksb2JqZWN0OnR9fSkodCxlLG4saSxNMXQsRTF0LFQxdCx6MXQpO2lmKHApe3MmJihJMXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGMpLFIxdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsdSksTzF0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxoKSxwLnV2PUZRdC5nZXRVVih6MXQsTTF0LEUxdCxUMXQsSTF0LFIxdCxPMXQsbmV3IG1KdCkpLGwmJihJMXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLGMpLFIxdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsdSksTzF0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxoKSxwLnV2Mj1GUXQuZ2V0VVYoejF0LE0xdCxFMXQsVDF0LEkxdCxSMXQsTzF0LG5ldyBtSnQpKTtjb25zdCB0PXthOmMsYjp1LGM6aCxub3JtYWw6bmV3IENKdCxtYXRlcmlhbEluZGV4OjB9O0ZRdC5nZXROb3JtYWwoTTF0LEUxdCxUMXQsdC5ub3JtYWwpLHAuZmFjZT10fXJldHVybiBwfUIxdC5wcm90b3R5cGUuaXNNZXNoPSEwO2NsYXNzIEYxdCBleHRlbmRzIGIxdHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49MSxpPTEscj0xLG89MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkJveEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsZGVwdGg6bix3aWR0aFNlZ21lbnRzOmksaGVpZ2h0U2VnbWVudHM6cixkZXB0aFNlZ21lbnRzOm99O2NvbnN0IGE9dGhpcztpPU1hdGguZmxvb3IoaSkscj1NYXRoLmZsb29yKHIpLG89TWF0aC5mbG9vcihvKTtjb25zdCBzPVtdLGw9W10sYz1bXSx1PVtdO2xldCBoPTAsZD0wO2Z1bmN0aW9uIHAodCxlLG4saSxyLG8scCxmLG0sZyxfKXtjb25zdCB5PW8vbSx2PXAvZyxiPW8vMix4PXAvMix3PWYvMixTPW0rMSxNPWcrMTtsZXQgRT0wLFQ9MDtjb25zdCBDPW5ldyBDSnQ7Zm9yKGxldCBvPTA7bzxNO28rKyl7Y29uc3QgYT1vKnYteDtmb3IobGV0IHM9MDtzPFM7cysrKUNbdF09KHMqeS1iKSppLENbZV09YSpyLENbbl09dyxsLnB1c2goQy54LEMueSxDLnopLENbdF09MCxDW2VdPTAsQ1tuXT1mPjA/MTotMSxjLnB1c2goQy54LEMueSxDLnopLHUucHVzaChzL20pLHUucHVzaCgxLW8vZyksRSs9MX1mb3IobGV0IHQ9MDt0PGc7dCsrKWZvcihsZXQgZT0wO2U8bTtlKyspe2NvbnN0IG49aCtlK1MqKHQrMSksaT1oKyhlKzEpK1MqKHQrMSkscj1oKyhlKzEpK1MqdDtzLnB1c2goaCtlK1MqdCxuLHIpLHMucHVzaChuLGksciksVCs9Nn1hLmFkZEdyb3VwKGQsVCxfKSxkKz1ULGgrPUV9cCgieiIsInkiLCJ4IiwtMSwtMSxuLGUsdCxvLHIsMCkscCgieiIsInkiLCJ4IiwxLC0xLG4sZSwtdCxvLHIsMSkscCgieCIsInoiLCJ5IiwxLDEsdCxuLGUsaSxvLDIpLHAoIngiLCJ6IiwieSIsMSwtMSx0LG4sLWUsaSxvLDMpLHAoIngiLCJ5IiwieiIsMSwtMSx0LGUsbixpLHIsNCkscCgieCIsInkiLCJ6IiwtMSwtMSx0LGUsLW4saSxyLDUpLHRoaXMuc2V0SW5kZXgocyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBsMXQoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgbDF0KHUsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEYxdCh0LndpZHRoLHQuaGVpZ2h0LHQuZGVwdGgsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5kZXB0aFNlZ21lbnRzKX19ZnVuY3Rpb24gVjF0KHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdCl7ZVtuXT17fTtmb3IoY29uc3QgaSBpbiB0W25dKXtjb25zdCByPXRbbl1baV07ZVtuXVtpXT1yJiYoci5pc0NvbG9yfHxyLmlzTWF0cml4M3x8ci5pc01hdHJpeDR8fHIuaXNWZWN0b3IyfHxyLmlzVmVjdG9yM3x8ci5pc1ZlY3RvcjR8fHIuaXNUZXh0dXJlfHxyLmlzUXVhdGVybmlvbik/ci5jbG9uZSgpOkFycmF5LmlzQXJyYXkocik/ci5zbGljZSgpOnJ9fXJldHVybiBlfWZ1bmN0aW9uIFUxdCh0KXtjb25zdCBlPXt9O2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPVYxdCh0W25dKTtmb3IoY29uc3QgdCBpbiBpKWVbdF09aVt0XX1yZXR1cm4gZX1jb25zdCBqMXQ9e2Nsb25lOlYxdCxtZXJnZTpVMXR9O2NsYXNzIEcxdCBleHRlbmRzIFVRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLHRoaXMuZnJhZ21lbnRTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMS4wLCAwLjAsIDAuMCwgMS4wICk7XG59Iix0aGlzLmxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5saWdodHM9ITEsdGhpcy5jbGlwcGluZz0hMSx0aGlzLmV4dGVuc2lvbnM9e2Rlcml2YXRpdmVzOiExLGZyYWdEZXB0aDohMSxkcmF3QnVmZmVyczohMSxzaGFkZXJUZXh0dXJlTE9EOiExfSx0aGlzLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM9e2NvbG9yOlsxLDEsMV0sdXY6WzAsMF0sdXYyOlswLDBdfSx0aGlzLmluZGV4MEF0dHJpYnV0ZU5hbWU9dm9pZCAwLHRoaXMudW5pZm9ybXNOZWVkVXBkYXRlPSExLHRoaXMuZ2xzbFZlcnNpb249bnVsbCx2b2lkIDAhPT10JiYodm9pZCAwIT09dC5hdHRyaWJ1dGVzJiZjb25zb2xlLmVycm9yKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogYXR0cmlidXRlcyBzaG91bGQgbm93IGJlIGRlZmluZWQgaW4gVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKSx0aGlzLnNldFZhbHVlcyh0KSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIsdGhpcy52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIsdGhpcy51bmlmb3Jtcz1WMXQodC51bmlmb3JtcyksdGhpcy5kZWZpbmVzPU9iamVjdC5hc3NpZ24oe30sdC5kZWZpbmVzKSx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmxpZ2h0cz10LmxpZ2h0cyx0aGlzLmNsaXBwaW5nPXQuY2xpcHBpbmcsdGhpcy5leHRlbnNpb25zPU9iamVjdC5hc3NpZ24oe30sdC5leHRlbnNpb25zKSx0aGlzLmdsc2xWZXJzaW9uPXQuZ2xzbFZlcnNpb24sdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ZS5nbHNsVmVyc2lvbj10aGlzLmdsc2xWZXJzaW9uLGUudW5pZm9ybXM9e307Zm9yKGNvbnN0IG4gaW4gdGhpcy51bmlmb3Jtcyl7Y29uc3QgaT10aGlzLnVuaWZvcm1zW25dLnZhbHVlO2UudW5pZm9ybXNbbl09aSYmaS5pc1RleHR1cmU/e3R5cGU6InQiLHZhbHVlOmkudG9KU09OKHQpLnV1aWR9OmkmJmkuaXNDb2xvcj97dHlwZToiYyIsdmFsdWU6aS5nZXRIZXgoKX06aSYmaS5pc1ZlY3RvcjI/e3R5cGU6InYyIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjM/e3R5cGU6InYzIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc1ZlY3RvcjQ/e3R5cGU6InY0Iix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDM/e3R5cGU6Im0zIix2YWx1ZTppLnRvQXJyYXkoKX06aSYmaS5pc01hdHJpeDQ/e3R5cGU6Im00Iix2YWx1ZTppLnRvQXJyYXkoKX06e3ZhbHVlOml9fU9iamVjdC5rZXlzKHRoaXMuZGVmaW5lcykubGVuZ3RoPjAmJihlLmRlZmluZXM9dGhpcy5kZWZpbmVzKSxlLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcixlLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7Y29uc3Qgbj17fTtmb3IoY29uc3QgdCBpbiB0aGlzLmV4dGVuc2lvbnMpITA9PT10aGlzLmV4dGVuc2lvbnNbdF0mJihuW3RdPSEwKTtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPjAmJihlLmV4dGVuc2lvbnM9biksZX19RzF0LnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO2NsYXNzIFcxdCBleHRlbmRzIGtRdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDYW1lcmEiLHRoaXMubWF0cml4V29ybGRJbnZlcnNlPW5ldyByUXQsdGhpcy5wcm9qZWN0aW9uTWF0cml4PW5ldyByUXQsdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZT1uZXcgclF0fWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KHQucHJvamVjdGlvbk1hdHJpeCksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLHRoaXN9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldCgtZVs4XSwtZVs5XSwtZVsxMF0pLm5vcm1hbGl6ZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dXBkYXRlV29ybGRNYXRyaXgodCxlKXtzdXBlci51cGRhdGVXb3JsZE1hdHJpeCh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fVcxdC5wcm90b3R5cGUuaXNDYW1lcmE9ITA7Y2xhc3MgcTF0IGV4dGVuZHMgVzF0e2NvbnN0cnVjdG9yKHQ9NTAsZT0xLG49LjEsaT0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSIsdGhpcy5mb3Y9dCx0aGlzLnpvb209MSx0aGlzLm5lYXI9bix0aGlzLmZhcj1pLHRoaXMuZm9jdXM9MTAsdGhpcy5hc3BlY3Q9ZSx0aGlzLnZpZXc9bnVsbCx0aGlzLmZpbG1HYXVnZT0zNSx0aGlzLmZpbG1PZmZzZXQ9MCx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmZvdj10LmZvdix0aGlzLnpvb209dC56b29tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy5mb2N1cz10LmZvY3VzLHRoaXMuYXNwZWN0PXQuYXNwZWN0LHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXMuZmlsbUdhdWdlPXQuZmlsbUdhdWdlLHRoaXMuZmlsbU9mZnNldD10LmZpbG1PZmZzZXQsdGhpc31zZXRGb2NhbExlbmd0aCh0KXtjb25zdCBlPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3Q7dGhpcy5mb3Y9MipZWnQqTWF0aC5hdGFuKGUpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldEZvY2FsTGVuZ3RoKCl7Y29uc3QgdD1NYXRoLnRhbiguNSpxWnQqdGhpcy5mb3YpO3JldHVybi41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3R9Z2V0RWZmZWN0aXZlRk9WKCl7cmV0dXJuIDIqWVp0Kk1hdGguYXRhbihNYXRoLnRhbiguNSpxWnQqdGhpcy5mb3YpL3RoaXMuem9vbSl9Z2V0RmlsbVdpZHRoKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlKk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfWdldEZpbG1IZWlnaHQoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9c2V0Vmlld09mZnNldCh0LGUsbixpLHIsbyl7dGhpcy5hc3BlY3Q9dC9lLG51bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9aSx0aGlzLnZpZXcud2lkdGg9cix0aGlzLnZpZXcuaGVpZ2h0PW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7Y29uc3QgdD10aGlzLm5lYXI7bGV0IGU9dCpNYXRoLnRhbiguNSpxWnQqdGhpcy5mb3YpL3RoaXMuem9vbSxuPTIqZSxpPXRoaXMuYXNwZWN0Km4scj0tLjUqaTtjb25zdCBvPXRoaXMudmlldztpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD1vLmZ1bGxXaWR0aCxhPW8uZnVsbEhlaWdodDtyKz1vLm9mZnNldFgqaS90LGUtPW8ub2Zmc2V0WSpuL2EsaSo9by53aWR0aC90LG4qPW8uaGVpZ2h0L2F9Y29uc3QgYT10aGlzLmZpbG1PZmZzZXQ7MCE9PWEmJihyKz10KmEvdGhpcy5nZXRGaWxtV2lkdGgoKSksdGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShyLHIraSxlLGUtbix0LHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmZvdj10aGlzLmZvdixlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsZS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxlLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2UsZS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsZX19cTF0LnByb3RvdHlwZS5pc1BlcnNwZWN0aXZlQ2FtZXJhPSEwO2NvbnN0IFkxdD05MDtjbGFzcyBYMXQgZXh0ZW5kcyBrUXR7Y29uc3RydWN0b3IodCxlLG4pe2lmKHN1cGVyKCksdGhpcy50eXBlPSJDdWJlQ2FtZXJhIiwhMCE9PW4uaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQ3ViZUNhbWVyYTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIGFuIGluc3RhbmNlIG9mIFdlYkdMQ3ViZVJlbmRlclRhcmdldCBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7dGhpcy5yZW5kZXJUYXJnZXQ9bjtjb25zdCBpPW5ldyBxMXQoWTF0LDEsdCxlKTtpLmxheWVycz10aGlzLmxheWVycyxpLnVwLnNldCgwLC0xLDApLGkubG9va0F0KG5ldyBDSnQoMSwwLDApKSx0aGlzLmFkZChpKTtjb25zdCByPW5ldyBxMXQoWTF0LDEsdCxlKTtyLmxheWVycz10aGlzLmxheWVycyxyLnVwLnNldCgwLC0xLDApLHIubG9va0F0KG5ldyBDSnQoLTEsMCwwKSksdGhpcy5hZGQocik7Y29uc3Qgbz1uZXcgcTF0KFkxdCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwwLDEpLG8ubG9va0F0KG5ldyBDSnQoMCwxLDApKSx0aGlzLmFkZChvKTtjb25zdCBhPW5ldyBxMXQoWTF0LDEsdCxlKTthLmxheWVycz10aGlzLmxheWVycyxhLnVwLnNldCgwLDAsLTEpLGEubG9va0F0KG5ldyBDSnQoMCwtMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcz1uZXcgcTF0KFkxdCwxLHQsZSk7cy5sYXllcnM9dGhpcy5sYXllcnMscy51cC5zZXQoMCwtMSwwKSxzLmxvb2tBdChuZXcgQ0p0KDAsMCwxKSksdGhpcy5hZGQocyk7Y29uc3QgbD1uZXcgcTF0KFkxdCwxLHQsZSk7bC5sYXllcnM9dGhpcy5sYXllcnMsbC51cC5zZXQoMCwtMSwwKSxsLmxvb2tBdChuZXcgQ0p0KDAsMCwtMSkpLHRoaXMuYWRkKGwpfXVwZGF0ZSh0LGUpe251bGw9PT10aGlzLnBhcmVudCYmdGhpcy51cGRhdGVNYXRyaXhXb3JsZCgpO2NvbnN0IG49dGhpcy5yZW5kZXJUYXJnZXQsW2kscixvLGEscyxsXT10aGlzLmNoaWxkcmVuLGM9dC54ci5lbmFibGVkLHU9dC5nZXRSZW5kZXJUYXJnZXQoKTt0LnhyLmVuYWJsZWQ9ITE7Y29uc3QgaD1uLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzO24udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ITEsdC5zZXRSZW5kZXJUYXJnZXQobiwwKSx0LnJlbmRlcihlLGkpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMSksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDIpLHQucmVuZGVyKGUsbyksdC5zZXRSZW5kZXJUYXJnZXQobiwzKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNCksdC5yZW5kZXIoZSxzKSxuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWgsdC5zZXRSZW5kZXJUYXJnZXQobiw1KSx0LnJlbmRlcihlLGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHUpLHQueHIuZW5hYmxlZD1jfX1jbGFzcyAkMXQgZXh0ZW5kcyBiSnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8sYSxzLGwsYyl7c3VwZXIodD12b2lkIDAhPT10P3Q6W10sZT12b2lkIDAhPT1lP2U6akt0LG4saSxyLG8sYT12b2lkIDAhPT1hP2E6dVp0LHMsbCxjKSx0aGlzLmZsaXBZPSExfWdldCBpbWFnZXMoKXtyZXR1cm4gdGhpcy5pbWFnZX1zZXQgaW1hZ2VzKHQpe3RoaXMuaW1hZ2U9dH19JDF0LnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlPSEwO2NsYXNzIEsxdCBleHRlbmRzIFNKdHtjb25zdHJ1Y3Rvcih0LGUsbil7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApIiksZT1uKSxzdXBlcih0LHQsZSksdGhpcy50ZXh0dXJlPW5ldyAkMXQodm9pZCAwLChlPWV8fHt9KS5tYXBwaW5nLGUud3JhcFMsZS53cmFwVCxlLm1hZ0ZpbHRlcixlLm1pbkZpbHRlcixlLmZvcm1hdCxlLnR5cGUsZS5hbmlzb3Ryb3B5LGUuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz12b2lkIDAhPT1lLmdlbmVyYXRlTWlwbWFwcyYmZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1lLm1pbkZpbHRlcj9lLm1pbkZpbHRlcjplWnQsdGhpcy50ZXh0dXJlLl9uZWVkc0ZsaXBFbnZNYXA9ITF9ZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxlKXt0aGlzLnRleHR1cmUudHlwZT1lLnR5cGUsdGhpcy50ZXh0dXJlLmZvcm1hdD1oWnQsdGhpcy50ZXh0dXJlLmVuY29kaW5nPWUuZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1lLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPWUubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZS5tYWdGaWx0ZXI7Y29uc3Qgbj1uZXcgRjF0KDUsNSw1KSxpPW5ldyBHMXQoe25hbWU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOlYxdCh7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0pLHZlcnRleFNoYWRlcjoiXG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHR2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXG5cdFx0XHRcdFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cblx0XHRcdFx0XHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHRcdFx0XHRcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblxuXHRcdFx0XHR9XG5cdFx0XHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXG5cdFx0XHRcdH1cblx0XHRcdCIsc2lkZToxLGJsZW5kaW5nOjB9KTtpLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1lO2NvbnN0IHI9bmV3IEIxdChuLGkpLG89ZS5taW5GaWx0ZXI7cmV0dXJuIGUubWluRmlsdGVyPT09aVp0JiYoZS5taW5GaWx0ZXI9ZVp0KSxuZXcgWDF0KDEsMTAsdGhpcykudXBkYXRlKHQsciksZS5taW5GaWx0ZXI9byxyLmdlb21ldHJ5LmRpc3Bvc2UoKSxyLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzfWNsZWFyKHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtmb3IobGV0IHI9MDtyPDY7cisrKXQuc2V0UmVuZGVyVGFyZ2V0KHRoaXMsciksdC5jbGVhcihlLG4saSk7dC5zZXRSZW5kZXJUYXJnZXQocil9fUsxdC5wcm90b3R5cGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9ITA7Y29uc3QgWjF0PW5ldyBDSnQsSjF0PW5ldyBDSnQsUTF0PW5ldyBnSnQ7Y2xhc3MgdDB0e2NvbnN0cnVjdG9yKHQ9bmV3IENKdCgxLDAsMCksZT0wKXt0aGlzLm5vcm1hbD10LHRoaXMuY29uc3RhbnQ9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PWUsdGhpc31zZXRDb21wb25lbnRzKHQsZSxuLGkpe3JldHVybiB0aGlzLm5vcm1hbC5zZXQodCxlLG4pLHRoaXMuY29uc3RhbnQ9aSx0aGlzfXNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD0tZS5kb3QodGhpcy5ub3JtYWwpLHRoaXN9c2V0RnJvbUNvcGxhbmFyUG9pbnRzKHQsZSxuKXtjb25zdCBpPVoxdC5zdWJWZWN0b3JzKG4sZSkuY3Jvc3MoSjF0LnN1YlZlY3RvcnModCxlKSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuc2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQoaSx0KSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodC5ub3JtYWwpLHRoaXMuY29uc3RhbnQ9dC5jb25zdGFudCx0aGlzfW5vcm1hbGl6ZSgpe2NvbnN0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxlKXtjb25zdCBuPXQuZGVsdGEoWjF0KSxpPXRoaXMubm9ybWFsLmRvdChuKTtpZigwPT09aSlyZXR1cm4gMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpP2UuY29weSh0LnN0YXJ0KTpudWxsO2NvbnN0IHI9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvaTtyZXR1cm4gcjwwfHxyPjE/bnVsbDplLmNvcHkobikubXVsdGlwbHlTY2FsYXIocikuYWRkKHQuc3RhcnQpfWludGVyc2VjdHNMaW5lKHQpe2NvbnN0IGU9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCksbj10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmVuZCk7cmV0dXJuIGU8MCYmbj4wfHxuPDAmJmU+MH1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1jb3BsYW5hclBvaW50KHQpe3JldHVybiB0LmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX1hcHBseU1hdHJpeDQodCxlKXtjb25zdCBuPWV8fFExdC5nZXROb3JtYWxNYXRyaXgodCksaT10aGlzLmNvcGxhbmFyUG9pbnQoWjF0KS5hcHBseU1hdHJpeDQodCkscj10aGlzLm5vcm1hbC5hcHBseU1hdHJpeDMobikubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuY29uc3RhbnQ9LWkuZG90KHIpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNvbnN0YW50LT10LmRvdCh0aGlzLm5vcm1hbCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubm9ybWFsLmVxdWFscyh0aGlzLm5vcm1hbCkmJnQuY29uc3RhbnQ9PT10aGlzLmNvbnN0YW50fWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX10MHQucHJvdG90eXBlLmlzUGxhbmU9ITA7Y29uc3QgZTB0PW5ldyAkSnQsbjB0PW5ldyBDSnQ7Y2xhc3MgaTB0e2NvbnN0cnVjdG9yKHQ9bmV3IHQwdCxlPW5ldyB0MHQsbj1uZXcgdDB0LGk9bmV3IHQwdCxyPW5ldyB0MHQsbz1uZXcgdDB0KXt0aGlzLnBsYW5lcz1bdCxlLG4saSxyLG9dfXNldCh0LGUsbixpLHIsbyl7Y29uc3QgYT10aGlzLnBsYW5lcztyZXR1cm4gYVswXS5jb3B5KHQpLGFbMV0uY29weShlKSxhWzJdLmNvcHkobiksYVszXS5jb3B5KGkpLGFbNF0uY29weShyKSxhWzVdLmNvcHkobyksdGhpc31jb3B5KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyllW25dLmNvcHkodC5wbGFuZXNbbl0pO3JldHVybiB0aGlzfXNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmVsZW1lbnRzLGk9blswXSxyPW5bMV0sbz1uWzJdLGE9blszXSxzPW5bNF0sbD1uWzVdLGM9bls2XSx1PW5bN10saD1uWzhdLGQ9bls5XSxwPW5bMTBdLGY9blsxMV0sbT1uWzEyXSxnPW5bMTNdLF89blsxNF0seT1uWzE1XTtyZXR1cm4gZVswXS5zZXRDb21wb25lbnRzKGEtaSx1LXMsZi1oLHktbSkubm9ybWFsaXplKCksZVsxXS5zZXRDb21wb25lbnRzKGEraSx1K3MsZitoLHkrbSkubm9ybWFsaXplKCksZVsyXS5zZXRDb21wb25lbnRzKGErcix1K2wsZitkLHkrZykubm9ybWFsaXplKCksZVszXS5zZXRDb21wb25lbnRzKGEtcix1LWwsZi1kLHktZykubm9ybWFsaXplKCksZVs0XS5zZXRDb21wb25lbnRzKGEtbyx1LWMsZi1wLHktXykubm9ybWFsaXplKCksZVs1XS5zZXRDb21wb25lbnRzKGErbyx1K2MsZitwLHkrXykubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2NvbnN0IGU9dC5nZW9tZXRyeTtyZXR1cm4gbnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksZTB0LmNvcHkoZS5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShlMHQpfWludGVyc2VjdHNTcHJpdGUodCl7cmV0dXJuIGUwdC5jZW50ZXIuc2V0KDAsMCwwKSxlMHQucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LGUwdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKGUwdCl9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5jZW50ZXIsaT0tdC5yYWRpdXM7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihlW3RdLmRpc3RhbmNlVG9Qb2ludChuKTxpKXJldHVybiExO3JldHVybiEwfWludGVyc2VjdHNCb3godCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKXtjb25zdCBpPWVbbl07aWYobjB0Lng9aS5ub3JtYWwueD4wP3QubWF4Lng6dC5taW4ueCxuMHQueT1pLm5vcm1hbC55PjA/dC5tYXgueTp0Lm1pbi55LG4wdC56PWkubm9ybWFsLno+MD90Lm1heC56OnQubWluLnosaS5kaXN0YW5jZVRvUG9pbnQobjB0KTwwKXJldHVybiExfXJldHVybiEwfWNvbnRhaW5zUG9pbnQodCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKWlmKGVbbl0uZGlzdGFuY2VUb1BvaW50KHQpPDApcmV0dXJuITE7cmV0dXJuITB9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWZ1bmN0aW9uIHIwdCgpe2xldCB0PW51bGwsZT0hMSxuPW51bGwsaT1udWxsO2Z1bmN0aW9uIHIoZSxvKXtuKGUsbyksaT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShyKX1yZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXshMCE9PWUmJm51bGwhPT1uJiYoaT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShyKSxlPSEwKX0sc3RvcDpmdW5jdGlvbigpe3QuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaSksZT0hMX0sc2V0QW5pbWF0aW9uTG9vcDpmdW5jdGlvbih0KXtuPXR9LHNldENvbnRleHQ6ZnVuY3Rpb24oZSl7dD1lfX19ZnVuY3Rpb24gbzB0KHQsZSl7Y29uc3Qgbj1lLmlzV2ViR0wyLGk9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiByKHQpe3JldHVybiB0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJih0PXQuZGF0YSksaS5nZXQodCl9LHJlbW92ZTpmdW5jdGlvbiBvKGUpe2UuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBuPWkuZ2V0KGUpO24mJih0LmRlbGV0ZUJ1ZmZlcihuLmJ1ZmZlciksaS5kZWxldGUoZSkpfSx1cGRhdGU6ZnVuY3Rpb24gYShlLHIpe2lmKGUuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3QgdD1pLmdldChlKTtyZXR1cm4gdm9pZCgoIXR8fHQudmVyc2lvbjxlLnZlcnNpb24pJiZpLnNldChlLHtidWZmZXI6ZS5idWZmZXIsdHlwZTplLnR5cGUsYnl0ZXNQZXJFbGVtZW50OmUuZWxlbWVudFNpemUsdmVyc2lvbjplLnZlcnNpb259KSl9ZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZT1lLmRhdGEpO2NvbnN0IG89aS5nZXQoZSk7dm9pZCAwPT09bz9pLnNldChlLChmdW5jdGlvbiBhKGUsaSl7Y29uc3Qgcj1lLmFycmF5LG89ZS51c2FnZSxhPXQuY3JlYXRlQnVmZmVyKCk7dC5iaW5kQnVmZmVyKGksYSksdC5idWZmZXJEYXRhKGkscixvKSxlLm9uVXBsb2FkQ2FsbGJhY2soKTtsZXQgcz01MTI2O3JldHVybiByIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5P3M9NTEyNjpyIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4iKTpyIGluc3RhbmNlb2YgVWludDE2QXJyYXk/ZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU/bj9zPTUxMzE6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVzYWdlIG9mIEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgV2ViR0wyLiIpOnM9NTEyMzpyIGluc3RhbmNlb2YgSW50MTZBcnJheT9zPTUxMjI6ciBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P3M9NTEyNTpyIGluc3RhbmNlb2YgSW50MzJBcnJheT9zPTUxMjQ6ciBpbnN0YW5jZW9mIEludDhBcnJheT9zPTUxMjA6KHIgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpJiYocz01MTIxKSx7YnVmZmVyOmEsdHlwZTpzLGJ5dGVzUGVyRWxlbWVudDpyLkJZVEVTX1BFUl9FTEVNRU5ULHZlcnNpb246ZS52ZXJzaW9ufX0pKGUscikpOm8udmVyc2lvbjxlLnZlcnNpb24mJigoZnVuY3Rpb24gcyhlLGkscil7Y29uc3Qgbz1pLmFycmF5LGE9aS51cGRhdGVSYW5nZTt0LmJpbmRCdWZmZXIocixlKSwtMT09PWEuY291bnQ/dC5idWZmZXJTdWJEYXRhKHIsMCxvKToobj90LmJ1ZmZlclN1YkRhdGEocixhLm9mZnNldCpvLkJZVEVTX1BFUl9FTEVNRU5ULG8sYS5vZmZzZXQsYS5jb3VudCk6dC5idWZmZXJTdWJEYXRhKHIsYS5vZmZzZXQqby5CWVRFU19QRVJfRUxFTUVOVCxvLnN1YmFycmF5KGEub2Zmc2V0LGEub2Zmc2V0K2EuY291bnQpKSxhLmNvdW50PS0xKX0pKG8uYnVmZmVyLGUsciksby52ZXJzaW9uPWUudmVyc2lvbil9fX1jbGFzcyBhMHQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsaT0xKXtzdXBlcigpLHRoaXMudHlwZT0iUGxhbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLHdpZHRoU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppfTtjb25zdCByPXQvMixvPWUvMixhPU1hdGguZmxvb3Iobikscz1NYXRoLmZsb29yKGkpLGw9YSsxLGM9cysxLHU9dC9hLGg9ZS9zLGQ9W10scD1bXSxmPVtdLG09W107Zm9yKGxldCB0PTA7dDxjO3QrKyl7Y29uc3QgZT10Kmgtbztmb3IobGV0IG49MDtuPGw7bisrKXAucHVzaChuKnUtciwtZSwwKSxmLnB1c2goMCwwLDEpLG0ucHVzaChuL2EpLG0ucHVzaCgxLXQvcyl9Zm9yKGxldCB0PTA7dDxzO3QrKylmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBuPWUrbCoodCsxKSxpPWUrMStsKih0KzEpLHI9ZSsxK2wqdDtkLnB1c2goZStsKnQsbixyKSxkLnB1c2gobixpLHIpfXRoaXMuc2V0SW5kZXgoZCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KHAsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBsMXQoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgbDF0KG0sMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGEwdCh0LndpZHRoLHQuaGVpZ2h0LHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzKX19Y29uc3QgczB0PXthbHBoYW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB2VXYgKS5nO1xuI2VuZGlmIixhbHBoYW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixhbHBoYXRlc3RfZnJhZ21lbnQ6IiNpZmRlZiBBTFBIQVRFU1Rcblx0aWYgKCBkaWZmdXNlQ29sb3IuYSA8IEFMUEhBVEVTVCApIGRpc2NhcmQ7XG4jZW5kaWYiLGFvbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FPTUFQXG5cdGZsb2F0IGFtYmllbnRPY2NsdXNpb24gPSAoIHRleHR1cmUyRCggYW9NYXAsIHZVdjIgKS5yIC0gMS4wICkgKiBhb01hcEludGVuc2l0eSArIDEuMDtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGFtYmllbnRPY2NsdXNpb247XG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKVxuXHRcdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICo9IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggZG90TlYsIGFtYmllbnRPY2NsdXNpb24sIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICk7XG5cdCNlbmRpZlxuI2VuZGlmIixhb21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FPTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFvTWFwO1xuXHR1bmlmb3JtIGZsb2F0IGFvTWFwSW50ZW5zaXR5O1xuI2VuZGlmIixiZWdpbl92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApOyIsYmVnaW5ub3JtYWxfdmVydGV4OiJ2ZWMzIG9iamVjdE5vcm1hbCA9IHZlYzMoIG5vcm1hbCApO1xuI2lmZGVmIFVTRV9UQU5HRU5UXG5cdHZlYzMgb2JqZWN0VGFuZ2VudCA9IHZlYzMoIHRhbmdlbnQueHl6ICk7XG4jZW5kaWYiLGJzZGZzOiJ2ZWMyIGludGVncmF0ZVNwZWN1bGFyQlJERiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0Y29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7XG5cdGNvbnN0IHZlYzQgYzEgPSB2ZWM0KCAxLCAwLjA0MjUsIDEuMDQsIC0gMC4wNCApO1xuXHR2ZWM0IHIgPSByb3VnaG5lc3MgKiBjMCArIGMxO1xuXHRmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTtcblx0cmV0dXJuIHZlYzIoIC0xLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dztcbn1cbmZsb2F0IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGNvbnN0IGluIGZsb2F0IGxpZ2h0RGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGN1dG9mZkRpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBkZWNheUV4cG9uZW50ICkge1xuI2lmIGRlZmluZWQgKCBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIClcblx0ZmxvYXQgZGlzdGFuY2VGYWxsb2ZmID0gMS4wIC8gbWF4KCBwb3coIGxpZ2h0RGlzdGFuY2UsIGRlY2F5RXhwb25lbnQgKSwgMC4wMSApO1xuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgKSB7XG5cdFx0ZGlzdGFuY2VGYWxsb2ZmICo9IHBvdzIoIHNhdHVyYXRlKCAxLjAgLSBwb3c0KCBsaWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKSApICk7XG5cdH1cblx0cmV0dXJuIGRpc3RhbmNlRmFsbG9mZjtcbiNlbHNlXG5cdGlmKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCAmJiBkZWNheUV4cG9uZW50ID4gMC4wICkge1xuXHRcdHJldHVybiBwb3coIHNhdHVyYXRlKCAtbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICsgMS4wICksIGRlY2F5RXhwb25lbnQgKTtcblx0fVxuXHRyZXR1cm4gMS4wO1xuI2VuZGlmXG59XG52ZWMzIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBkaWZmdXNlQ29sb3I7XG59XG52ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBmMCwgY29uc3QgaW4gdmVjMyBmOTAsIGNvbnN0IGluIGZsb2F0IGRvdFZIICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtNS41NTQ3MyAqIGRvdFZIIC0gNi45ODMxNiApICogZG90VkggKTtcblx0cmV0dXJuICggZjkwIC0gZjAgKSAqIGZyZXNuZWwgKyBmMDtcbn1cbnZlYzMgRl9TY2hsaWNrX1JvdWdobmVzc0RlcGVuZGVudCggY29uc3QgaW4gdmVjMyBGMCwgY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3ROViAtIDYuOTgzMTYgKSAqIGRvdE5WICk7XG5cdHZlYzMgRnIgPSBtYXgoIHZlYzMoIDEuMCAtIHJvdWdobmVzcyApLCBGMCApIC0gRjA7XG5cdHJldHVybiBGciAqIGZyZXNuZWwgKyBGMDtcbn1cbmZsb2F0IEdfR0dYX1NtaXRoKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGdsID0gZG90TkwgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcblx0ZmxvYXQgZ3YgPSBkb3ROViArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApO1xuXHRyZXR1cm4gMS4wIC8gKCBnbCAqIGd2ICk7XG59XG5mbG9hdCBHX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ3YgPSBkb3ROTCAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApO1xuXHRmbG9hdCBnbCA9IGRvdE5WICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdHJldHVybiAwLjUgLyBtYXgoIGd2ICsgZ2wsIEVQU0lMT04gKTtcbn1cbmZsb2F0IERfR0dYKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZGVub20gPSBwb3cyKCBkb3ROSCApICogKCBhMiAtIDEuMCApICsgMS4wO1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGEyIC8gcG93MiggZGVub20gKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1goIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyBmMCwgY29uc3QgaW4gdmVjMyBmOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiArIHZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2soIGYwLCBmOTAsIGRvdExIICk7XG5cdGZsb2F0IEcgPSBHX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGFscGhhLCBkb3ROTCwgZG90TlYgKTtcblx0ZmxvYXQgRCA9IERfR0dYKCBhbHBoYSwgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG52ZWMyIExUQ19VdiggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0Y29uc3QgZmxvYXQgTFVUX1NJWkUgPSA2NC4wO1xuXHRjb25zdCBmbG9hdCBMVVRfU0NBTEUgPSAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTtcblx0Y29uc3QgZmxvYXQgTFVUX0JJQVMgPSAwLjUgLyBMVVRfU0laRTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBOLCBWICkgKTtcblx0dmVjMiB1diA9IHZlYzIoIHJvdWdobmVzcywgc3FydCggMS4wIC0gZG90TlYgKSApO1xuXHR1diA9IHV2ICogTFVUX1NDQUxFICsgTFVUX0JJQVM7XG5cdHJldHVybiB1djtcbn1cbmZsb2F0IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyBmICkge1xuXHRmbG9hdCBsID0gbGVuZ3RoKCBmICk7XG5cdHJldHVybiBtYXgoICggbCAqIGwgKyBmLnogKSAvICggbCArIDEuMCApLCAwLjAgKTtcbn1cbnZlYzMgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIHYxLCBjb25zdCBpbiB2ZWMzIHYyICkge1xuXHRmbG9hdCB4ID0gZG90KCB2MSwgdjIgKTtcblx0ZmxvYXQgeSA9IGFicyggeCApO1xuXHRmbG9hdCBhID0gMC44NTQzOTg1ICsgKCAwLjQ5NjUxNTUgKyAwLjAxNDUyMDYgKiB5ICkgKiB5O1xuXHRmbG9hdCBiID0gMy40MTc1OTQwICsgKCA0LjE2MTY3MjQgKyB5ICkgKiB5O1xuXHRmbG9hdCB2ID0gYSAvIGI7XG5cdGZsb2F0IHRoZXRhX3NpbnRoZXRhID0gKCB4ID4gMC4wICkgPyB2IDogMC41ICogaW52ZXJzZXNxcnQoIG1heCggMS4wIC0geCAqIHgsIDFlLTcgKSApIC0gdjtcblx0cmV0dXJuIGNyb3NzKCB2MSwgdjIgKSAqIHRoZXRhX3NpbnRoZXRhO1xufVxudmVjMyBMVENfRXZhbHVhdGUoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiB2ZWMzIFAsIGNvbnN0IGluIG1hdDMgbUludiwgY29uc3QgaW4gdmVjMyByZWN0Q29vcmRzWyA0IF0gKSB7XG5cdHZlYzMgdjEgPSByZWN0Q29vcmRzWyAxIF0gLSByZWN0Q29vcmRzWyAwIF07XG5cdHZlYzMgdjIgPSByZWN0Q29vcmRzWyAzIF0gLSByZWN0Q29vcmRzWyAwIF07XG5cdHZlYzMgbGlnaHROb3JtYWwgPSBjcm9zcyggdjEsIHYyICk7XG5cdGlmKCBkb3QoIGxpZ2h0Tm9ybWFsLCBQIC0gcmVjdENvb3Jkc1sgMCBdICkgPCAwLjAgKSByZXR1cm4gdmVjMyggMC4wICk7XG5cdHZlYzMgVDEsIFQyO1xuXHRUMSA9IG5vcm1hbGl6ZSggViAtIE4gKiBkb3QoIFYsIE4gKSApO1xuXHRUMiA9IC0gY3Jvc3MoIE4sIFQxICk7XG5cdG1hdDMgbWF0ID0gbUludiAqIHRyYW5zcG9zZU1hdDMoIG1hdDMoIFQxLCBUMiwgTiApICk7XG5cdHZlYzMgY29vcmRzWyA0IF07XG5cdGNvb3Jkc1sgMCBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAwIF0gLSBQICk7XG5cdGNvb3Jkc1sgMSBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAxIF0gLSBQICk7XG5cdGNvb3Jkc1sgMiBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAyIF0gLSBQICk7XG5cdGNvb3Jkc1sgMyBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAzIF0gLSBQICk7XG5cdGNvb3Jkc1sgMCBdID0gbm9ybWFsaXplKCBjb29yZHNbIDAgXSApO1xuXHRjb29yZHNbIDEgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAxIF0gKTtcblx0Y29vcmRzWyAyIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMiBdICk7XG5cdGNvb3Jkc1sgMyBdID0gbm9ybWFsaXplKCBjb29yZHNbIDMgXSApO1xuXHR2ZWMzIHZlY3RvckZvcm1GYWN0b3IgPSB2ZWMzKCAwLjAgKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMCBdLCBjb29yZHNbIDEgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAxIF0sIGNvb3Jkc1sgMiBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDIgXSwgY29vcmRzWyAzIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMyBdLCBjb29yZHNbIDAgXSApO1xuXHRmbG9hdCByZXN1bHQgPSBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIHZlY3RvckZvcm1GYWN0b3IgKTtcblx0cmV0dXJuIHZlYzMoIHJlc3VsdCApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogYnJkZi54ICsgYnJkZi55O1xufVxudm9pZCBCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGlub3V0IHZlYzMgc2luZ2xlU2NhdHRlciwgaW5vdXQgdmVjMyBtdWx0aVNjYXR0ZXIgKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrX1JvdWdobmVzc0RlcGVuZGVudCggc3BlY3VsYXJDb2xvciwgZG90TlYsIHJvdWdobmVzcyApO1xuXHR2ZWMyIGJyZGYgPSBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMyBGc3NFc3MgPSBGICogYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFc3MgPSBicmRmLnggKyBicmRmLnk7XG5cdGZsb2F0IEVtcyA9IDEuMCAtIEVzcztcblx0dmVjMyBGYXZnID0gc3BlY3VsYXJDb2xvciArICggMS4wIC0gc3BlY3VsYXJDb2xvciApICogMC4wNDc2MTk7XHR2ZWMzIEZtcyA9IEZzc0VzcyAqIEZhdmcgLyAoIDEuMCAtIEVtcyAqIEZhdmcgKTtcblx0c2luZ2xlU2NhdHRlciArPSBGc3NFc3M7XG5cdG11bHRpU2NhdHRlciArPSBGbXMgKiBFbXM7XG59XG5mbG9hdCBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICkge1xuXHRyZXR1cm4gMC4yNTtcbn1cbmZsb2F0IERfQmxpbm5QaG9uZyggY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiAoIHNoaW5pbmVzcyAqIDAuNSArIDEuMCApICogcG93KCBkb3ROSCwgc2hpbmluZXNzICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcyApIHtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiArIGdlb21ldHJ5LnZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCB2ZWMzKCAxLjAgKSwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKTtcblx0ZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbmZsb2F0IEdHWFJvdWdobmVzc1RvQmxpbm5FeHBvbmVudCggY29uc3QgaW4gZmxvYXQgZ2d4Um91Z2huZXNzICkge1xuXHRyZXR1cm4gKCAyLjAgLyBwb3cyKCBnZ3hSb3VnaG5lc3MgKyAwLjAwMDEgKSAtIDIuMCApO1xufVxuZmxvYXQgQmxpbm5FeHBvbmVudFRvR0dYUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCBibGlubkV4cG9uZW50ICkge1xuXHRyZXR1cm4gc3FydCggMi4wIC8gKCBibGlubkV4cG9uZW50ICsgMi4wICkgKTtcbn1cbiNpZiBkZWZpbmVkKCBVU0VfU0hFRU4gKVxuZmxvYXQgRF9DaGFybGllKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgTm9IKSB7XG5cdGZsb2F0IGludkFscGhhID0gMS4wIC8gcm91Z2huZXNzO1xuXHRmbG9hdCBjb3MyaCA9IE5vSCAqIE5vSDtcblx0ZmxvYXQgc2luMmggPSBtYXgoMS4wIC0gY29zMmgsIDAuMDA3ODEyNSk7XHRyZXR1cm4gKDIuMCArIGludkFscGhhKSAqIHBvdyhzaW4yaCwgaW52QWxwaGEgKiAwLjUpIC8gKDIuMCAqIFBJKTtcbn1cbmZsb2F0IFZfTmV1YmVsdChmbG9hdCBOb1YsIGZsb2F0IE5vTCkge1xuXHRyZXR1cm4gc2F0dXJhdGUoMS4wIC8gKDQuMCAqIChOb0wgKyBOb1YgLSBOb0wgKiBOb1YpKSk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfU2hlZW4oIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBMLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCB2ZWMzIHNwZWN1bGFyQ29sb3IgKSB7XG5cdHZlYzMgTiA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0dmVjMyBWID0gZ2VvbWV0cnkudmlld0Rpcjtcblx0dmVjMyBIID0gbm9ybWFsaXplKCBWICsgTCApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIE4sIEggKSApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIERfQ2hhcmxpZSggcm91Z2huZXNzLCBkb3ROSCApICogVl9OZXViZWx0KCBkb3QoTiwgViksIGRvdChOLCBMKSApO1xufVxuI2VuZGlmIixidW1wbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQlVNUE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBidW1wTWFwO1xuXHR1bmlmb3JtIGZsb2F0IGJ1bXBTY2FsZTtcblx0dmVjMiBkSGR4eV9md2QoKSB7XG5cdFx0dmVjMiBkU1RkeCA9IGRGZHgoIHZVdiApO1xuXHRcdHZlYzIgZFNUZHkgPSBkRmR5KCB2VXYgKTtcblx0XHRmbG9hdCBIbGwgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiApLng7XG5cdFx0ZmxvYXQgZEJ4ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeCApLnggLSBIbGw7XG5cdFx0ZmxvYXQgZEJ5ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeSApLnggLSBIbGw7XG5cdFx0cmV0dXJuIHZlYzIoIGRCeCwgZEJ5ICk7XG5cdH1cblx0dmVjMyBwZXJ0dXJiTm9ybWFsQXJiKCB2ZWMzIHN1cmZfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMiBkSGR4eSwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcblx0XHR2ZWMzIHZTaWdtYVggPSB2ZWMzKCBkRmR4KCBzdXJmX3Bvcy54ICksIGRGZHgoIHN1cmZfcG9zLnkgKSwgZEZkeCggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2U2lnbWFZID0gdmVjMyggZEZkeSggc3VyZl9wb3MueCApLCBkRmR5KCBzdXJmX3Bvcy55ICksIGRGZHkoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdk4gPSBzdXJmX25vcm07XG5cdFx0dmVjMyBSMSA9IGNyb3NzKCB2U2lnbWFZLCB2TiApO1xuXHRcdHZlYzMgUjIgPSBjcm9zcyggdk4sIHZTaWdtYVggKTtcblx0XHRmbG9hdCBmRGV0ID0gZG90KCB2U2lnbWFYLCBSMSApICogZmFjZURpcmVjdGlvbjtcblx0XHR2ZWMzIHZHcmFkID0gc2lnbiggZkRldCApICogKCBkSGR4eS54ICogUjEgKyBkSGR4eS55ICogUjIgKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKCBhYnMoIGZEZXQgKSAqIHN1cmZfbm9ybSAtIHZHcmFkICk7XG5cdH1cbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmVjNCBwbGFuZTtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBVTklPTl9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0cGxhbmUgPSBjbGlwcGluZ1BsYW5lc1sgaSBdO1xuXHRcdGlmICggZG90KCB2Q2xpcFBvc2l0aW9uLCBwbGFuZS54eXogKSA+IHBsYW5lLncgKSBkaXNjYXJkO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNpZiBVTklPTl9DTElQUElOR19QTEFORVMgPCBOVU1fQ0xJUFBJTkdfUExBTkVTXG5cdFx0Ym9vbCBjbGlwcGVkID0gdHJ1ZTtcblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdFx0Zm9yICggaW50IGkgPSBVTklPTl9DTElQUElOR19QTEFORVM7IGkgPCBOVU1fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdFx0cGxhbmUgPSBjbGlwcGluZ1BsYW5lc1sgaSBdO1xuXHRcdFx0Y2xpcHBlZCA9ICggZG90KCB2Q2xpcFBvc2l0aW9uLCBwbGFuZS54eXogKSA+IHBsYW5lLncgKSAmJiBjbGlwcGVkO1xuXHRcdH1cblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHRcdGlmICggY2xpcHBlZCApIGRpc2NhcmQ7XG5cdCNlbmRpZlxuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuXHR1bmlmb3JtIHZlYzQgY2xpcHBpbmdQbGFuZXNbIE5VTV9DTElQUElOR19QTEFORVMgXTtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2Q2xpcFBvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbiNlbmRpZiIsY29sb3JfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKVxuXHRkaWZmdXNlQ29sb3IgKj0gdkNvbG9yO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SIClcblx0ZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKVxuXHR2YXJ5aW5nIHZlYzQgdkNvbG9yO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKVxuXHR2YXJ5aW5nIHZlYzQgdkNvbG9yO1xuI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKVxuXHR2Q29sb3IgPSB2ZWM0KCAxLjAgKTtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dkNvbG9yID0gdmVjMyggMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ09MT1Jcblx0dkNvbG9yICo9IGNvbG9yO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1Jcblx0dkNvbG9yLnh5eiAqPSBpbnN0YW5jZUNvbG9yLnh5ejtcbiNlbmRpZiIsY29tbW9uOiIjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzXG4jZGVmaW5lIFBJMiA2LjI4MzE4NTMwNzE3OTU4NlxuI2RlZmluZSBQSV9IQUxGIDEuNTcwNzk2MzI2Nzk0ODk2NlxuI2RlZmluZSBSRUNJUFJPQ0FMX1BJIDAuMzE4MzA5ODg2MTgzNzkwN1xuI2RlZmluZSBSRUNJUFJPQ0FMX1BJMiAwLjE1OTE1NDk0MzA5MTg5NTM1XG4jZGVmaW5lIEVQU0lMT04gMWUtNlxuI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG4jZGVmaW5lIHdoaXRlQ29tcGxlbWVudChhKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKVxuZmxvYXQgcG93MiggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeDsgfVxuZmxvYXQgcG93MyggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeCp4OyB9XG5mbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiA9IHgqeDsgcmV0dXJuIHgyKngyOyB9XG5mbG9hdCBhdmVyYWdlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkgeyByZXR1cm4gZG90KCBjb2xvciwgdmVjMyggMC4zMzMzICkgKTsgfVxuaGlnaHAgZmxvYXQgcmFuZCggY29uc3QgaW4gdmVjMiB1diApIHtcblx0Y29uc3QgaGlnaHAgZmxvYXQgYSA9IDEyLjk4OTgsIGIgPSA3OC4yMzMsIGMgPSA0Mzc1OC41NDUzO1xuXHRoaWdocCBmbG9hdCBkdCA9IGRvdCggdXYueHksIHZlYzIoIGEsYiApICksIHNuID0gbW9kKCBkdCwgUEkgKTtcblx0cmV0dXJuIGZyYWN0KHNpbihzbikgKiBjKTtcbn1cbiNpZmRlZiBISUdIX1BSRUNJU0lPTlxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7IHJldHVybiBsZW5ndGgoIHYgKTsgfVxuI2Vsc2Vcblx0ZmxvYXQgbWF4MyggdmVjMyB2ICkgeyByZXR1cm4gbWF4KCBtYXgoIHYueCwgdi55ICksIHYueiApOyB9XG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHtcblx0XHRmbG9hdCBtYXhDb21wb25lbnQgPSBtYXgzKCBhYnMoIHYgKSApO1xuXHRcdHJldHVybiBsZW5ndGgoIHYgLyBtYXhDb21wb25lbnQgKSAqIG1heENvbXBvbmVudDtcblx0fVxuI2VuZGlmXG5zdHJ1Y3QgSW5jaWRlbnRMaWdodCB7XG5cdHZlYzMgY29sb3I7XG5cdHZlYzMgZGlyZWN0aW9uO1xuXHRib29sIHZpc2libGU7XG59O1xuc3RydWN0IFJlZmxlY3RlZExpZ2h0IHtcblx0dmVjMyBkaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGRpcmVjdFNwZWN1bGFyO1xuXHR2ZWMzIGluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBpbmRpcmVjdFNwZWN1bGFyO1xufTtcbnN0cnVjdCBHZW9tZXRyaWNDb250ZXh0IHtcblx0dmVjMyBwb3NpdGlvbjtcblx0dmVjMyBub3JtYWw7XG5cdHZlYzMgdmlld0RpcjtcbiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbn07XG52ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcbn1cbnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbn1cbnZlYzMgcHJvamVjdE9uUGxhbmUoaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdGZsb2F0IGRpc3RhbmNlID0gZG90KCBwbGFuZU5vcm1hbCwgcG9pbnQgLSBwb2ludE9uUGxhbmUgKTtcblx0cmV0dXJuIC0gZGlzdGFuY2UgKiBwbGFuZU5vcm1hbCArIHBvaW50O1xufVxuZmxvYXQgc2lkZU9mUGxhbmUoIGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gc2lnbiggZG90KCBwb2ludCAtIHBvaW50T25QbGFuZSwgcGxhbmVOb3JtYWwgKSApO1xufVxudmVjMyBsaW5lUGxhbmVJbnRlcnNlY3QoIGluIHZlYzMgcG9pbnRPbkxpbmUsIGluIHZlYzMgbGluZURpcmVjdGlvbiwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBsaW5lRGlyZWN0aW9uICogKCBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludE9uUGxhbmUgLSBwb2ludE9uTGluZSApIC8gZG90KCBwbGFuZU5vcm1hbCwgbGluZURpcmVjdGlvbiApICkgKyBwb2ludE9uTGluZTtcbn1cbm1hdDMgdHJhbnNwb3NlTWF0MyggY29uc3QgaW4gbWF0MyBtICkge1xuXHRtYXQzIHRtcDtcblx0dG1wWyAwIF0gPSB2ZWMzKCBtWyAwIF0ueCwgbVsgMSBdLngsIG1bIDIgXS54ICk7XG5cdHRtcFsgMSBdID0gdmVjMyggbVsgMCBdLnksIG1bIDEgXS55LCBtWyAyIF0ueSApO1xuXHR0bXBbIDIgXSA9IHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTtcblx0cmV0dXJuIHRtcDtcbn1cbmZsb2F0IGxpbmVhclRvUmVsYXRpdmVMdW1pbmFuY2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7XG5cdHZlYzMgd2VpZ2h0cyA9IHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTtcblx0cmV0dXJuIGRvdCggd2VpZ2h0cywgY29sb3IucmdiICk7XG59XG5ib29sIGlzUGVyc3BlY3RpdmVNYXRyaXgoIG1hdDQgbSApIHtcblx0cmV0dXJuIG1bIDIgXVsgMyBdID09IC0gMS4wO1xufVxudmVjMiBlcXVpcmVjdFV2KCBpbiB2ZWMzIGRpciApIHtcblx0ZmxvYXQgdSA9IGF0YW4oIGRpci56LCBkaXIueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XG5cdGZsb2F0IHYgPSBhc2luKCBjbGFtcCggZGlyLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTtcblx0cmV0dXJuIHZlYzIoIHUsIHYgKTtcbn0iLGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudDoiI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0I2RlZmluZSBjdWJlVVZfbWF4TWlwTGV2ZWwgOC4wXG5cdCNkZWZpbmUgY3ViZVVWX21pbk1pcExldmVsIDQuMFxuXHQjZGVmaW5lIGN1YmVVVl9tYXhUaWxlU2l6ZSAyNTYuMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5UaWxlU2l6ZSAxNi4wXG5cdGZsb2F0IGdldEZhY2UoIHZlYzMgZGlyZWN0aW9uICkge1xuXHRcdHZlYzMgYWJzRGlyZWN0aW9uID0gYWJzKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmYWNlID0gLSAxLjA7XG5cdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi56ICkge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi54ID4gMC4wID8gMC4wIDogMy4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnogPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueiA+IDAuMCA/IDIuMCA6IDUuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZTtcblx0fVxuXHR2ZWMyIGdldFVWKCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgZmFjZSApIHtcblx0XHR2ZWMyIHV2O1xuXHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCAtIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fVxuXHRcdHJldHVybiAwLjUgKiAoIHV2ICsgMS4wICk7XG5cdH1cblx0dmVjMyBiaWxpbmVhckN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IG1pcEludCApIHtcblx0XHRmbG9hdCBmYWNlID0gZ2V0RmFjZSggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmlsdGVySW50ID0gbWF4KCBjdWJlVVZfbWluTWlwTGV2ZWwgLSBtaXBJbnQsIDAuMCApO1xuXHRcdG1pcEludCA9IG1heCggbWlwSW50LCBjdWJlVVZfbWluTWlwTGV2ZWwgKTtcblx0XHRmbG9hdCBmYWNlU2l6ZSA9IGV4cDIoIG1pcEludCApO1xuXHRcdGZsb2F0IHRleGVsU2l6ZSA9IDEuMCAvICggMy4wICogY3ViZVVWX21heFRpbGVTaXplICk7XG5cdFx0dmVjMiB1diA9IGdldFVWKCBkaXJlY3Rpb24sIGZhY2UgKSAqICggZmFjZVNpemUgLSAxLjAgKTtcblx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKTtcblx0XHR1diArPSAwLjUgLSBmO1xuXHRcdGlmICggZmFjZSA+IDIuMCApIHtcblx0XHRcdHV2LnkgKz0gZmFjZVNpemU7XG5cdFx0XHRmYWNlIC09IDMuMDtcblx0XHR9XG5cdFx0dXYueCArPSBmYWNlICogZmFjZVNpemU7XG5cdFx0aWYgKCBtaXBJbnQgPCBjdWJlVVZfbWF4TWlwTGV2ZWwgKSB7XG5cdFx0XHR1di55ICs9IDIuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZTtcblx0XHR9XG5cdFx0dXYueSArPSBmaWx0ZXJJbnQgKiAyLjAgKiBjdWJlVVZfbWluVGlsZVNpemU7XG5cdFx0dXYueCArPSAzLjAgKiBtYXgoIDAuMCwgY3ViZVVWX21heFRpbGVTaXplIC0gMi4wICogZmFjZVNpemUgKTtcblx0XHR1diAqPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyB0bCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggKz0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdHIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di55ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIGJyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueCAtPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBibCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0dmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTtcblx0XHRyZXR1cm4gbWl4KCB0bSwgYm0sIGYueSApO1xuXHR9XG5cdCNkZWZpbmUgcjAgMS4wXG5cdCNkZWZpbmUgdjAgMC4zMzlcblx0I2RlZmluZSBtMCAtIDIuMFxuXHQjZGVmaW5lIHIxIDAuOFxuXHQjZGVmaW5lIHYxIDAuMjc2XG5cdCNkZWZpbmUgbTEgLSAxLjBcblx0I2RlZmluZSByNCAwLjRcblx0I2RlZmluZSB2NCAwLjA0NlxuXHQjZGVmaW5lIG00IDIuMFxuXHQjZGVmaW5lIHI1IDAuMzA1XG5cdCNkZWZpbmUgdjUgMC4wMTZcblx0I2RlZmluZSBtNSAzLjBcblx0I2RlZmluZSByNiAwLjIxXG5cdCNkZWZpbmUgdjYgMC4wMDM4XG5cdCNkZWZpbmUgbTYgNC4wXG5cdGZsb2F0IHJvdWdobmVzc1RvTWlwKCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdFx0ZmxvYXQgbWlwID0gMC4wO1xuXHRcdGlmICggcm91Z2huZXNzID49IHIxICkge1xuXHRcdFx0bWlwID0gKCByMCAtIHJvdWdobmVzcyApICogKCBtMSAtIG0wICkgLyAoIHIwIC0gcjEgKSArIG0wO1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNCApIHtcblx0XHRcdG1pcCA9ICggcjEgLSByb3VnaG5lc3MgKSAqICggbTQgLSBtMSApIC8gKCByMSAtIHI0ICkgKyBtMTtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjUgKSB7XG5cdFx0XHRtaXAgPSAoIHI0IC0gcm91Z2huZXNzICkgKiAoIG01IC0gbTQgKSAvICggcjQgLSByNSApICsgbTQ7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI2ICkge1xuXHRcdFx0bWlwID0gKCByNSAtIHJvdWdobmVzcyApICogKCBtNiAtIG01ICkgLyAoIHI1IC0gcjYgKSArIG01O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtaXAgPSAtIDIuMCAqIGxvZzIoIDEuMTYgKiByb3VnaG5lc3MgKTtcdFx0fVxuXHRcdHJldHVybiBtaXA7XG5cdH1cblx0dmVjNCB0ZXh0dXJlQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHNhbXBsZURpciwgZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IGNsYW1wKCByb3VnaG5lc3NUb01pcCggcm91Z2huZXNzICksIG0wLCBjdWJlVVZfbWF4TWlwTGV2ZWwgKTtcblx0XHRmbG9hdCBtaXBGID0gZnJhY3QoIG1pcCApO1xuXHRcdGZsb2F0IG1pcEludCA9IGZsb29yKCBtaXAgKTtcblx0XHR2ZWMzIGNvbG9yMCA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICk7XG5cdFx0aWYgKCBtaXBGID09IDAuMCApIHtcblx0XHRcdHJldHVybiB2ZWM0KCBjb2xvcjAsIDEuMCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2ZWMzIGNvbG9yMSA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICsgMS4wICk7XG5cdFx0XHRyZXR1cm4gdmVjNCggbWl4KCBjb2xvcjAsIGNvbG9yMSwgbWlwRiApLCAxLjAgKTtcblx0XHR9XG5cdH1cbiNlbmRpZiIsZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWROb3JtYWwgPSBvYmplY3ROb3JtYWw7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0bWF0MyBtID0gbWF0MyggaW5zdGFuY2VNYXRyaXggKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgLz0gdmVjMyggZG90KCBtWyAwIF0sIG1bIDAgXSApLCBkb3QoIG1bIDEgXSwgbVsgMSBdICksIGRvdCggbVsgMiBdLCBtWyAyIF0gKSApO1xuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IG0gKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNlbmRpZlxudHJhbnNmb3JtZWROb3JtYWwgPSBub3JtYWxNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNpZmRlZiBGTElQX1NJREVEXG5cdHRyYW5zZm9ybWVkTm9ybWFsID0gLSB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9UQU5HRU5UXG5cdHZlYzMgdHJhbnNmb3JtZWRUYW5nZW50ID0gKCBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHR0cmFuc2Zvcm1lZFRhbmdlbnQgPSAtIHRyYW5zZm9ybWVkVGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWYiLGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZGlzcGxhY2VtZW50TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudFNjYWxlO1xuXHR1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudEJpYXM7XG4jZW5kaWYiLGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHRyYW5zZm9ybWVkICs9IG5vcm1hbGl6ZSggb2JqZWN0Tm9ybWFsICkgKiAoIHRleHR1cmUyRCggZGlzcGxhY2VtZW50TWFwLCB2VXYgKS54ICogZGlzcGxhY2VtZW50U2NhbGUgKyBkaXNwbGFjZW1lbnRCaWFzICk7XG4jZW5kaWYiLGVtaXNzaXZlbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXG5cdHZlYzQgZW1pc3NpdmVDb2xvciA9IHRleHR1cmUyRCggZW1pc3NpdmVNYXAsIHZVdiApO1xuXHRlbWlzc2l2ZUNvbG9yLnJnYiA9IGVtaXNzaXZlTWFwVGV4ZWxUb0xpbmVhciggZW1pc3NpdmVDb2xvciApLnJnYjtcblx0dG90YWxFbWlzc2l2ZVJhZGlhbmNlICo9IGVtaXNzaXZlQ29sb3IucmdiO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGVtaXNzaXZlTWFwO1xuI2VuZGlmIixlbmNvZGluZ3NfZnJhZ21lbnQ6ImdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApOyIsZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6IlxudmVjNCBMaW5lYXJUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZhbHVlO1xufVxudmVjNCBHYW1tYVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcblx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCBnYW1tYUZhY3RvciApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9HYW1tYSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMS4wIC8gZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IHNSR0JUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgdmFsdWUucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDQwNDUgKSApICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAwLjQxNjY2ICkgKSAqIDEuMDU1IC0gdmVjMyggMC4wNTUgKSwgdmFsdWUucmdiICogMTIuOTIsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wMDMxMzA4ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgUkdCRVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogZXhwMiggdmFsdWUuYSAqIDI1NS4wIC0gMTI4LjAgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRSggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4KCBtYXgoIHZhbHVlLnIsIHZhbHVlLmcgKSwgdmFsdWUuYiApO1xuXHRmbG9hdCBmRXhwID0gY2xhbXAoIGNlaWwoIGxvZzIoIG1heENvbXBvbmVudCApICksIC0xMjguMCwgMTI3LjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvIGV4cDIoIGZFeHAgKSwgKCBmRXhwICsgMTI4LjAgKSAvIDI1NS4wICk7XG59XG52ZWM0IFJHQk1Ub0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiB2YWx1ZS5hICogbWF4UmFuZ2UsIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQk0oIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IE0gPSBjbGFtcCggbWF4UkdCIC8gbWF4UmFuZ2UsIDAuMCwgMS4wICk7XG5cdE0gPSBjZWlsKCBNICogMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiIC8gKCBNICogbWF4UmFuZ2UgKSwgTSApO1xufVxudmVjNCBSR0JEVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCAoIG1heFJhbmdlIC8gMjU1LjAgKSAvIHZhbHVlLmEgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRCggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdGZsb2F0IG1heFJHQiA9IG1heCggdmFsdWUuciwgbWF4KCB2YWx1ZS5nLCB2YWx1ZS5iICkgKTtcblx0ZmxvYXQgRCA9IG1heCggbWF4UmFuZ2UgLyBtYXhSR0IsIDEuMCApO1xuXHREID0gY2xhbXAoIGZsb29yKCBEICkgLyAyNTUuMCwgMC4wLCAxLjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggRCAqICggMjU1LjAgLyBtYXhSYW5nZSApICksIEQgKTtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dk0gPSBtYXQzKCAwLjIyMDksIDAuMzM5MCwgMC40MTg0LCAwLjExMzgsIDAuNjc4MCwgMC43MzE5LCAwLjAxMDIsIDAuMTEzMCwgMC4yOTY5ICk7XG52ZWM0IExpbmVhclRvTG9nTHV2KCBpbiB2ZWM0IHZhbHVlICkge1xuXHR2ZWMzIFhwX1lfWFlacCA9IGNMb2dMdXZNICogdmFsdWUucmdiO1xuXHRYcF9ZX1hZWnAgPSBtYXgoIFhwX1lfWFlacCwgdmVjMyggMWUtNiwgMWUtNiwgMWUtNiApICk7XG5cdHZlYzQgdlJlc3VsdDtcblx0dlJlc3VsdC54eSA9IFhwX1lfWFlacC54eSAvIFhwX1lfWFlacC56O1xuXHRmbG9hdCBMZSA9IDIuMCAqIGxvZzIoWHBfWV9YWVpwLnkpICsgMTI3LjA7XG5cdHZSZXN1bHQudyA9IGZyYWN0KCBMZSApO1xuXHR2UmVzdWx0LnogPSAoIExlIC0gKCBmbG9vciggdlJlc3VsdC53ICogMjU1LjAgKSApIC8gMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdlJlc3VsdDtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dkludmVyc2VNID0gbWF0MyggNi4wMDE0LCAtMi43MDA4LCAtMS43OTk2LCAtMS4zMzIwLCAzLjEwMjksIC01Ljc3MjEsIDAuMzAwOCwgLTEuMDg4MiwgNS42MjY4ICk7XG52ZWM0IExvZ0x1dlRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRmbG9hdCBMZSA9IHZhbHVlLnogKiAyNTUuMCArIHZhbHVlLnc7XG5cdHZlYzMgWHBfWV9YWVpwO1xuXHRYcF9ZX1hZWnAueSA9IGV4cDIoICggTGUgLSAxMjcuMCApIC8gMi4wICk7XG5cdFhwX1lfWFlacC56ID0gWHBfWV9YWVpwLnkgLyB2YWx1ZS55O1xuXHRYcF9ZX1hZWnAueCA9IHZhbHVlLnggKiBYcF9ZX1hZWnAuejtcblx0dmVjMyB2UkdCID0gY0xvZ0x1dkludmVyc2VNICogWHBfWV9YWVpwLnJnYjtcblx0cmV0dXJuIHZlYzQoIG1heCggdlJHQiwgMC4wICksIDEuMCApO1xufSIsZW52bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmVjMyBjYW1lcmFUb0ZyYWc7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdH1cblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbHNlXG5cdFx0dmVjMyByZWZsZWN0VmVjID0gdlJlZmxlY3Q7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgMC4wICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBlbnZDb2xvciA9IHZlYzQoIDAuMCApO1xuXHQjZW5kaWZcblx0I2lmbmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdFx0ZW52Q29sb3IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZDb2xvciApO1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9CTEVORElOR19NVUxUSVBMWVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIG91dGdvaW5nTGlnaHQgKiBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX01JWCApXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19BREQgKVxuXHRcdG91dGdvaW5nTGlnaHQgKz0gZW52Q29sb3IueHl6ICogc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eTtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCBlbnZNYXBJbnRlbnNpdHk7XG5cdHVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDtcblx0dW5pZm9ybSBpbnQgbWF4TWlwTGV2ZWw7XG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHQjZW5kaWZcblx0XG4jZW5kaWYiLGVudm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcblx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdFxuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKVxuXHQjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTlxuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCB3b3JsZE5vcm1hbCwgMS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gUEkgKiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cblx0ZmxvYXQgZ2V0U3BlY3VsYXJNSVBMZXZlbCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0ZmxvYXQgbWF4TUlQTGV2ZWxTY2FsYXIgPSBmbG9hdCggbWF4TUlQTGV2ZWwgKTtcblx0XHRmbG9hdCBzaWdtYSA9IFBJICogcm91Z2huZXNzICogcm91Z2huZXNzIC8gKCAxLjAgKyByb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBkZXNpcmVkTUlQTGV2ZWwgPSBtYXhNSVBMZXZlbFNjYWxhciArIGxvZzIoIHNpZ21hICk7XG5cdFx0cmV0dXJuIGNsYW1wKCBkZXNpcmVkTUlQTGV2ZWwsIDAuMCwgbWF4TUlQTGV2ZWxTY2FsYXIgKTtcblx0fVxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggLXZpZXdEaXIsIG5vcm1hbCApO1xuXHRcdFx0cmVmbGVjdFZlYyA9IG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggLXZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdFx0cmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTtcblx0XHRmbG9hdCBzcGVjdWxhck1JUExldmVsID0gZ2V0U3BlY3VsYXJNSVBMZXZlbCggcm91Z2huZXNzLCBtYXhNSVBMZXZlbCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5UmVmbGVjdFZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIHJvdWdobmVzcyApO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cbiNlbmRpZiIsZW52bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG5cdCNlbHNlXG5cdFx0dmVjMyBjYW1lcmFUb1ZlcnRleDtcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggd29ybGRQb3NpdGlvbi54eXogLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdH1cblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dlJlZmxlY3QgPSByZWZsZWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dlJlZmxlY3QgPSByZWZyYWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZiIsZm9nX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0Zm9nRGVwdGggPSAtIG12UG9zaXRpb24uejtcbiNlbmRpZiIsZm9nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuI2VuZGlmIixmb2dfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdCNpZmRlZiBGT0dfRVhQMlxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IDEuMCAtIGV4cCggLSBmb2dEZW5zaXR5ICogZm9nRGVuc2l0eSAqIGZvZ0RlcHRoICogZm9nRGVwdGggKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSBzbW9vdGhzdGVwKCBmb2dOZWFyLCBmb2dGYXIsIGZvZ0RlcHRoICk7XG5cdCNlbmRpZlxuXHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCBnbF9GcmFnQ29sb3IucmdiLCBmb2dDb2xvciwgZm9nRmFjdG9yICk7XG4jZW5kaWYiLGZvZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHR1bmlmb3JtIHZlYzMgZm9nQ29sb3I7XG5cdHZhcnlpbmcgZmxvYXQgZm9nRGVwdGg7XG5cdCNpZmRlZiBGT0dfRVhQMlxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRGVuc2l0eTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ05lYXI7XG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dGYXI7XG5cdCNlbmRpZlxuI2VuZGlmIixncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGdyYWRpZW50TWFwO1xuI2VuZGlmXG52ZWMzIGdldEdyYWRpZW50SXJyYWRpYW5jZSggdmVjMyBub3JtYWwsIHZlYzMgbGlnaHREaXJlY3Rpb24gKSB7XG5cdGZsb2F0IGRvdE5MID0gZG90KCBub3JtYWwsIGxpZ2h0RGlyZWN0aW9uICk7XG5cdHZlYzIgY29vcmQgPSB2ZWMyKCBkb3ROTCAqIDAuNSArIDAuNSwgMC4wICk7XG5cdCNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0XHRyZXR1cm4gdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yZ2I7XG5cdCNlbHNlXG5cdFx0cmV0dXJuICggY29vcmQueCA8IDAuNyApID8gdmVjMyggMC43ICkgOiB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG59IixsaWdodG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IFBJICogbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbGlnaHRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDoidmVjMyBkaWZmdXNlID0gdmVjMyggMS4wICk7XG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSBtdlBvc2l0aW9uLnh5ejtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIC1tdlBvc2l0aW9uLnh5eiApO1xuR2VvbWV0cmljQ29udGV4dCBiYWNrR2VvbWV0cnk7XG5iYWNrR2VvbWV0cnkucG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcbmJhY2tHZW9tZXRyeS5ub3JtYWwgPSAtZ2VvbWV0cnkubm9ybWFsO1xuYmFja0dlb21ldHJ5LnZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xudkxpZ2h0RnJvbnQgPSB2ZWMzKCAwLjAgKTtcbnZJbmRpcmVjdEZyb250ID0gdmVjMyggMC4wICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZMaWdodEJhY2sgPSB2ZWMzKCAwLjAgKTtcblx0dkluZGlyZWN0QmFjayA9IHZlYzMoIDAuMCApO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuZmxvYXQgZG90Tkw7XG52ZWMzIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcbnZJbmRpcmVjdEZyb250ICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG52SW5kaXJlY3RGcm9udCArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dkluZGlyZWN0QmFjayArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xuXHR2SW5kaXJlY3RCYWNrICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBiYWNrR2VvbWV0cnkgKTtcbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9ESVJfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdHZJbmRpcmVjdEZyb250ICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2SW5kaXJlY3RCYWNrICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgYmFja0dlb21ldHJ5ICk7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZiIsbGlnaHRzX3BhcnNfYmVnaW46InVuaWZvcm0gYm9vbCByZWNlaXZlU2hhZG93O1xudW5pZm9ybSB2ZWMzIGFtYmllbnRMaWdodENvbG9yO1xudW5pZm9ybSB2ZWMzIGxpZ2h0UHJvYmVbIDkgXTtcbnZlYzMgc2hHZXRJcnJhZGlhbmNlQXQoIGluIHZlYzMgbm9ybWFsLCBpbiB2ZWMzIHNoQ29lZmZpY2llbnRzWyA5IF0gKSB7XG5cdGZsb2F0IHggPSBub3JtYWwueCwgeSA9IG5vcm1hbC55LCB6ID0gbm9ybWFsLno7XG5cdHZlYzMgcmVzdWx0ID0gc2hDb2VmZmljaWVudHNbIDAgXSAqIDAuODg2MjI3O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDEgXSAqIDIuMCAqIDAuNTExNjY0ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAyIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMyBdICogMi4wICogMC41MTE2NjQgKiB4O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDQgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNSBdICogMi4wICogMC40MjkwNDMgKiB5ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA2IF0gKiAoIDAuNzQzMTI1ICogeiAqIHogLSAwLjI0NzcwOCApO1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDcgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgOCBdICogMC40MjkwNDMgKiAoIHggKiB4IC0geSAqIHkgKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cbnZlYzMgZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbGlnaHRQcm9iZVsgOSBdLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5ICkge1xuXHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggZ2VvbWV0cnkubm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgbGlnaHRQcm9iZSApO1xuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdH07XG5cdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTtcblx0dm9pZCBnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHRkaXJlY3RMaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBQb2ludExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdH07XG5cdHVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gKCBkaXJlY3RMaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBTcG90TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0XHRmbG9hdCBjb25lQ29zO1xuXHRcdGZsb2F0IHBlbnVtYnJhQ29zO1xuXHR9O1xuXHR1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBzcG90TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgYW5nbGVDb3MgPSBkb3QoIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgc3BvdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGlmICggYW5nbGVDb3MgPiBzcG90TGlnaHQuY29uZUNvcyApIHtcblx0XHRcdGZsb2F0IHNwb3RFZmZlY3QgPSBzbW9vdGhzdGVwKCBzcG90TGlnaHQuY29uZUNvcywgc3BvdExpZ2h0LnBlbnVtYnJhQ29zLCBhbmdsZUNvcyApO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBzcG90TGlnaHQuY29sb3I7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBzcG90RWZmZWN0ICogcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgc3BvdExpZ2h0LmRpc3RhbmNlLCBzcG90TGlnaHQuZGVjYXkgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHZlYzMoIDAuMCApO1xuXHRcdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuI2VuZGlmXG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXG5cdHN0cnVjdCBSZWN0QXJlYUxpZ2h0IHtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBoYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0O1xuXHR9O1xuXHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMTtcdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18yO1xuXHR1bmlmb3JtIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodHNbIE5VTV9SRUNUX0FSRUFfTElHSFRTIF07XG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXG5cdHN0cnVjdCBIZW1pc3BoZXJlTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgc2t5Q29sb3I7XG5cdFx0dmVjMyBncm91bmRDb2xvcjtcblx0fTtcblx0dW5pZm9ybSBIZW1pc3BoZXJlTGlnaHQgaGVtaXNwaGVyZUxpZ2h0c1sgTlVNX0hFTUlfTElHSFRTIF07XG5cdHZlYzMgZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gSGVtaXNwaGVyZUxpZ2h0IGhlbWlMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0XHRmbG9hdCBkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgPSAwLjUgKiBkb3ROTCArIDAuNTtcblx0XHR2ZWMzIGlycmFkaWFuY2UgPSBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApO1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gaXJyYWRpYW5jZTtcblx0fVxuI2VuZGlmIixsaWdodHNfdG9vbl9mcmFnbWVudDoiVG9vbk1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjsiLGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ6InZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuc3RydWN0IFRvb25NYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xufTtcbnZvaWQgUkVfRGlyZWN0X1Rvb24oIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGdldEdyYWRpZW50SXJyYWRpYW5jZSggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfVG9vbiggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfVG9vblxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1Rvb25cbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGhvbmdfZnJhZ21lbnQ6IkJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5tYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7XG5tYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyA9IHNoaW5pbmVzcztcbm1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGggPSBzcGVjdWxhclN0cmVuZ3RoOyIsbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ6InZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuc3RydWN0IEJsaW5uUGhvbmdNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyU2hpbmluZXNzO1xuXHRmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xufTtcbnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9CbGlublBob25nKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzICkgKiBtYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZyggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfQmxpbm5QaG9uZ1xuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmdcbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6IlBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiICogKCAxLjAgLSBtZXRhbG5lc3NGYWN0b3IgKTtcbnZlYzMgZHh5ID0gbWF4KCBhYnMoIGRGZHgoIGdlb21ldHJ5Tm9ybWFsICkgKSwgYWJzKCBkRmR5KCBnZW9tZXRyeU5vcm1hbCApICkgKTtcbmZsb2F0IGdlb21ldHJ5Um91Z2huZXNzID0gbWF4KCBtYXgoIGR4eS54LCBkeHkueSApLCBkeHkueiApO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtYXgoIHJvdWdobmVzc0ZhY3RvciwgMC4wNTI1ICk7bWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIDEuMCApO1xuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHQjaWZkZWYgU1BFQ1VMQVJcblx0XHR2ZWMzIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gdmVjMyggc3BlY3VsYXJJbnRlbnNpdHkgKTtcblx0XHR2ZWMzIHNwZWN1bGFyVGludEZhY3RvciA9IHNwZWN1bGFyVGludDtcblx0XHQjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQXG5cdFx0XHRzcGVjdWxhckludGVuc2l0eUZhY3RvciAqPSB0ZXh0dXJlMkQoIHNwZWN1bGFySW50ZW5zaXR5TWFwLCB2VXYgKS5hO1xuXHRcdCNlbmRpZlxuXHRcdCNpZmRlZiBVU0VfU1BFQ1VMQVJUSU5UTUFQXG5cdFx0XHRzcGVjdWxhclRpbnRGYWN0b3IgKj0gc3BlY3VsYXJUaW50TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBzcGVjdWxhclRpbnRNYXAsIHZVdiApICkucmdiO1xuXHRcdCNlbmRpZlxuXHRcdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAgPSBtaXgoIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCB2ZWMzKCAxLjAgKSwgbWV0YWxuZXNzRmFjdG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjMyBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHZlYzMoIDEuMCApO1xuXHRcdHZlYzMgc3BlY3VsYXJUaW50RmFjdG9yID0gdmVjMyggMS4wICk7XG5cdFx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvckY5MCA9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggbWluKCB2ZWMzKCBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UICogcG93MiggcmVmbGVjdGl2aXR5ICkgKSAqIHNwZWN1bGFyVGludEZhY3RvciwgdmVjMyggMS4wICkgKSAqIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcbiNlbHNlXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAgPSB2ZWMzKCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBjbGVhcmNvYXQ7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IGNsZWFyY29hdFJvdWdobmVzcztcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXQgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRNYXAsIHZVdiApLng7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRSb3VnaG5lc3NNYXAsIHZVdiApLnk7XG5cdCNlbmRpZlxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBzYXR1cmF0ZSggbWF0ZXJpYWwuY2xlYXJjb2F0ICk7XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtYXgoIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMC4wNTI1ICk7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdG1hdGVyaWFsLnNoZWVuQ29sb3IgPSBzaGVlbjtcbiNlbmRpZiIsbGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6InN0cnVjdCBQaHlzaWNhbE1hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyUm91Z2huZXNzO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdHZlYzMgc3BlY3VsYXJDb2xvckY5MDtcbiNpZmRlZiBDTEVBUkNPQVRcblx0ZmxvYXQgY2xlYXJjb2F0O1xuXHRmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dmVjMyBzaGVlbkNvbG9yO1xuI2VuZGlmXG59O1xuI2RlZmluZSBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMTZcbiNkZWZpbmUgREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjA0XG5mbG9hdCBjbGVhcmNvYXRESFJBcHByb3goIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkwgKSB7XG5cdHJldHVybiBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICsgKCAxLjAgLSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICkgKiAoIHBvdyggMS4wIC0gZG90TkwsIDUuMCApICogcG93KCAxLjAgLSByb3VnaG5lc3MsIDIuMCApICk7XG59XG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXG5cdHZvaWQgUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsKCBjb25zdCBpbiBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRcdHZlYzMgbm9ybWFsID0gZ2VvbWV0cnkubm9ybWFsO1xuXHRcdHZlYzMgdmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdFx0dmVjMyBwb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdHZlYzMgbGlnaHRQb3MgPSByZWN0QXJlYUxpZ2h0LnBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoID0gcmVjdEFyZWFMaWdodC5oYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0ID0gcmVjdEFyZWFMaWdodC5oYWxmSGVpZ2h0O1xuXHRcdHZlYzMgbGlnaHRDb2xvciA9IHJlY3RBcmVhTGlnaHQuY29sb3I7XG5cdFx0ZmxvYXQgcm91Z2huZXNzID0gbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3M7XG5cdFx0dmVjMyByZWN0Q29vcmRzWyA0IF07XG5cdFx0cmVjdENvb3Jkc1sgMCBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1x0XHRyZWN0Q29vcmRzWyAxIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMiBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDMgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHR2ZWMyIHV2ID0gTFRDX1V2KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xuXHRcdHZlYzQgdDEgPSB0ZXh0dXJlMkQoIGx0Y18xLCB1diApO1xuXHRcdHZlYzQgdDIgPSB0ZXh0dXJlMkQoIGx0Y18yLCB1diApO1xuXHRcdG1hdDMgbUludiA9IG1hdDMoXG5cdFx0XHR2ZWMzKCB0MS54LCAwLCB0MS55ICksXG5cdFx0XHR2ZWMzKCAgICAwLCAxLCAgICAwICksXG5cdFx0XHR2ZWMzKCB0MS56LCAwLCB0MS53IClcblx0XHQpO1xuXHRcdHZlYzMgZnJlc25lbCA9ICggbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciAqIHQyLnggKyAoIHZlYzMoIDEuMCApIC0gbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciApICogdDIueSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGxpZ2h0Q29sb3IgKiBmcmVzbmVsICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtSW52LCByZWN0Q29vcmRzICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBsaWdodENvbG9yICogbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtYXQzKCAxLjAgKSwgcmVjdENvb3JkcyApO1xuXHR9XG4jZW5kaWZcbnZvaWQgUkVfRGlyZWN0X1BoeXNpY2FsKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0XHR2ZWMzIGNjSXJyYWRpYW5jZSA9IGNjRG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGNjSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGNjSXJyYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIHZlYzMoIDEuMCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX1NoZWVuKFxuXHRcdFx0bWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsXG5cdFx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24sXG5cdFx0XHRnZW9tZXRyeSxcblx0XHRcdG1hdGVyaWFsLnNoZWVuQ29sb3Jcblx0XHQpO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzKTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQpIHtcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0UmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHRcdGZsb2F0IGNjRG90TkwgPSBjY0RvdE5WO1xuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IG1hdGVyaWFsLmNsZWFyY29hdCAqIGNsZWFyY29hdERIUkFwcHJveCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBjY0RvdE5MICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0ZmxvYXQgY2xlYXJjb2F0SW52ID0gMS4wIC0gY2xlYXJjb2F0REhSO1xuXHR2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBtdWx0aVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2UgPSBpcnJhZGlhbmNlICogUkVDSVBST0NBTF9QSTtcblx0QlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgc2luZ2xlU2NhdHRlcmluZywgbXVsdGlTY2F0dGVyaW5nICk7XG5cdHZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRJbnYgKiByYWRpYW5jZSAqIHNpbmdsZVNjYXR0ZXJpbmc7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gbXVsdGlTY2F0dGVyaW5nICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfUGh5c2ljYWxcbiNkZWZpbmUgUkVfRGlyZWN0X1JlY3RBcmVhXHRcdFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0U3BlY3VsYXJcdFx0UkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbFxuZmxvYXQgY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgYW1iaWVudE9jY2x1c2lvbiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApO1xufSIsbGlnaHRzX2ZyYWdtZW50X2JlZ2luOiJcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiA9IC0gdlZpZXdQb3NpdGlvbjtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbDtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcbiNpZmRlZiBDTEVBUkNPQVRcblx0Z2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsID0gY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuI2lmICggTlVNX1BPSU5UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRQb2ludExpZ2h0IHBvaW50TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodHNbIGkgXTtcblx0XHRnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyApXG5cdFx0cG9pbnRMaWdodFNoYWRvdyA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9TUE9UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRTcG90TGlnaHQgc3BvdExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRzWyBpIF07XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHNwb3RMaWdodFNoYWRvdyA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fRElSX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHREaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUyApXG5cdFx0ZGlyZWN0aW9uYWxMaWdodFNoYWRvdyA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3RfUmVjdEFyZWEgKVxuXHRSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1JFQ1RfQVJFQV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cmVjdEFyZWFMaWdodCA9IHJlY3RBcmVhTGlnaHRzWyBpIF07XG5cdFx0UkVfRGlyZWN0X1JlY3RBcmVhKCByZWN0QXJlYUxpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdHZlYzMgaWJsSXJyYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xuXHRpcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeSApO1xuXHQjaWYgKCBOVU1fSEVNSV9MSUdIVFMgPiAwIClcblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdFx0aXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjbGVhcmNvYXRSYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfbWFwczoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHR2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0bGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdGlycmFkaWFuY2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlO1xuXHQjZW5kaWZcblx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApICYmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdGlibElycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggZ2VvbWV0cnksIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgbWF4TWlwTGV2ZWwgKTtcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGNsZWFyY29hdFJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9lbmQ6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHRSRV9JbmRpcmVjdERpZmZ1c2UoIGlycmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRSRV9JbmRpcmVjdFNwZWN1bGFyKCByYWRpYW5jZSwgaWJsSXJyYWRpYW5jZSwgY2xlYXJjb2F0UmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0Z2xfRnJhZ0RlcHRoRVhUID0gdklzUGVyc3BlY3RpdmUgPT0gMC4wID8gZ2xfRnJhZ0Nvb3JkLnogOiBsb2cyKCB2RnJhZ0RlcHRoICkgKiBsb2dEZXB0aEJ1ZkZDICogMC41O1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0XHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0I2VuZGlmXG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53O1xuXHRcdHZJc1BlcnNwZWN0aXZlID0gZmxvYXQoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApO1xuXHQjZWxzZVxuXHRcdGlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkge1xuXHRcdFx0Z2xfUG9zaXRpb24ueiA9IGxvZzIoIG1heCggRVBTSUxPTiwgZ2xfUG9zaXRpb24udyArIDEuMCApICkgKiBsb2dEZXB0aEJ1ZkZDIC0gMS4wO1xuXHRcdFx0Z2xfUG9zaXRpb24ueiAqPSBnbF9Qb3NpdGlvbi53O1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dmVjNCB0ZXhlbENvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVdiApO1xuXHR0ZXhlbENvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4ZWxDb2xvciApO1xuXHRkaWZmdXNlQ29sb3IgKj0gdGV4ZWxDb2xvcjtcbiNlbmRpZiIsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZiIsbWFwX3BhcnRpY2xlX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHZlYzIgdXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggZ2xfUG9pbnRDb29yZC54LCAxLjAgLSBnbF9Qb2ludENvb3JkLnksIDEgKSApLnh5O1xuI2VuZGlmXG4jaWZkZWYgVVNFX01BUFxuXHR2ZWM0IG1hcFRleGVsID0gdGV4dHVyZTJEKCBtYXAsIHV2ICk7XG5cdGRpZmZ1c2VDb2xvciAqPSBtYXBUZXhlbFRvTGluZWFyKCBtYXBUZXhlbCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHV2ICkuZztcbiNlbmRpZiIsbWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmXG4jaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9mcmFnbWVudDoiZmxvYXQgbWV0YWxuZXNzRmFjdG9yID0gbWV0YWxuZXNzO1xuI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dmVjNCB0ZXhlbE1ldGFsbmVzcyA9IHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTtcblx0bWV0YWxuZXNzRmFjdG9yICo9IHRleGVsTWV0YWxuZXNzLmI7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtZXRhbG5lc3NNYXA7XG4jZW5kaWYiLG1vcnBobm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0b2JqZWN0Tm9ybWFsICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuI2VuZGlmIixtb3JwaHRhcmdldF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcblx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA4IF07XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG1vcnBodGFyZ2V0X3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcblx0dHJhbnNmb3JtZWQgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcblx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ0ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ1ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ2ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA2IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ3ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA3IF07XG5cdCNlbmRpZlxuI2VuZGlmIixub3JtYWxfZnJhZ21lbnRfYmVnaW46ImZsb2F0IGZhY2VEaXJlY3Rpb24gPSBnbF9Gcm9udEZhY2luZyA/IDEuMCA6IC0gMS4wO1xuI2lmZGVmIEZMQVRfU0hBREVEXG5cdHZlYzMgZmR4ID0gdmVjMyggZEZkeCggdlZpZXdQb3NpdGlvbi54ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIGZkeSA9IHZlYzMoIGRGZHkoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeSggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIGNyb3NzKCBmZHgsIGZkeSApICk7XG4jZWxzZVxuXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggdk5vcm1hbCApO1xuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0bm9ybWFsID0gbm9ybWFsICogZmFjZURpcmVjdGlvbjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSggdlRhbmdlbnQgKTtcblx0XHR2ZWMzIGJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggdkJpdGFuZ2VudCApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHRhbmdlbnQgPSB0YW5nZW50ICogZmFjZURpcmVjdGlvbjtcblx0XHRcdGJpdGFuZ2VudCA9IGJpdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247XG5cdFx0I2VuZGlmXG5cdFx0I2lmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCApXG5cdFx0XHRtYXQzIHZUQk4gPSBtYXQzKCB0YW5nZW50LCBiaXRhbmdlbnQsIG5vcm1hbCApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZlxudmVjMyBnZW9tZXRyeU5vcm1hbCA9IG5vcm1hbDsiLG5vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdG5vcm1hbCA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0bm9ybWFsID0gLSBub3JtYWw7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0bm9ybWFsID0gbm9ybWFsICogZmFjZURpcmVjdGlvbjtcblx0I2VuZGlmXG5cdG5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XG4jZWxpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmVjMyBtYXBOID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0bWFwTi54eSAqPSBub3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0bm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogbWFwTiApO1xuXHQjZWxzZVxuXHRcdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOLCBmYWNlRGlyZWN0aW9uICk7XG5cdCNlbmRpZlxuI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKVxuXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBkSGR4eV9md2QoKSwgZmFjZURpcmVjdGlvbiApO1xuI2VuZGlmIixub3JtYWxtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9OT1JNQUxNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbm9ybWFsTWFwO1xuXHR1bmlmb3JtIHZlYzIgbm9ybWFsU2NhbGU7XG4jZW5kaWZcbiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0dW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDtcbiNlbmRpZlxuI2lmICEgZGVmaW5lZCAoIFVTRV9UQU5HRU5UICkgJiYgKCBkZWZpbmVkICggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQgKCBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCApIClcblx0dmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMyBtYXBOLCBmbG9hdCBmYWNlRGlyZWN0aW9uICkge1xuXHRcdHZlYzMgcTAgPSB2ZWMzKCBkRmR4KCBleWVfcG9zLnggKSwgZEZkeCggZXllX3Bvcy55ICksIGRGZHgoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMyBxMSA9IHZlYzMoIGRGZHkoIGV5ZV9wb3MueCApLCBkRmR5KCBleWVfcG9zLnkgKSwgZEZkeSggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMyIHN0MCA9IGRGZHgoIHZVdi5zdCApO1xuXHRcdHZlYzIgc3QxID0gZEZkeSggdlV2LnN0ICk7XG5cdFx0dmVjMyBOID0gc3VyZl9ub3JtO1xuXHRcdHZlYzMgcTFwZXJwID0gY3Jvc3MoIHExLCBOICk7XG5cdFx0dmVjMyBxMHBlcnAgPSBjcm9zcyggTiwgcTAgKTtcblx0XHR2ZWMzIFQgPSBxMXBlcnAgKiBzdDAueCArIHEwcGVycCAqIHN0MS54O1xuXHRcdHZlYzMgQiA9IHExcGVycCAqIHN0MC55ICsgcTBwZXJwICogc3QxLnk7XG5cdFx0ZmxvYXQgZGV0ID0gbWF4KCBkb3QoIFQsIFQgKSwgZG90KCBCLCBCICkgKTtcblx0XHRmbG9hdCBzY2FsZSA9ICggZGV0ID09IDAuMCApID8gMC4wIDogZmFjZURpcmVjdGlvbiAqIGludmVyc2VzcXJ0KCBkZXQgKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKCBUICogKCBtYXBOLnggKiBzY2FsZSApICsgQiAqICggbWFwTi55ICogc2NhbGUgKSArIE4gKiBtYXBOLnogKTtcblx0fVxuI2VuZGlmIixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiIjaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsID0gZ2VvbWV0cnlOb3JtYWw7XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHZlYzMgY2xlYXJjb2F0TWFwTiA9IHRleHR1cmUyRCggY2xlYXJjb2F0Tm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdGNsZWFyY29hdE1hcE4ueHkgKj0gY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIGNsZWFyY29hdE1hcE4gKTtcblx0I2Vsc2Vcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBjbGVhcmNvYXROb3JtYWwsIGNsZWFyY29hdE1hcE4sIGZhY2VEaXJlY3Rpb24gKTtcblx0I2VuZGlmXG4jZW5kaWYiLGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRSb3VnaG5lc3NNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBjbGVhcmNvYXROb3JtYWxTY2FsZTtcbiNlbmRpZiIscGFja2luZzoidmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCBub3JtYWwgKSAqIDAuNSArIDAuNTtcbn1cbnZlYzMgdW5wYWNrUkdCVG9Ob3JtYWwoIGNvbnN0IGluIHZlYzMgcmdiICkge1xuXHRyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDtcbn1cbmNvbnN0IGZsb2F0IFBhY2tVcHNjYWxlID0gMjU2LiAvIDI1NS47Y29uc3QgZmxvYXQgVW5wYWNrRG93bnNjYWxlID0gMjU1LiAvIDI1Ni47XG5jb25zdCB2ZWMzIFBhY2tGYWN0b3JzID0gdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgMjU2LiApO1xuY29uc3QgdmVjNCBVbnBhY2tGYWN0b3JzID0gVW5wYWNrRG93bnNjYWxlIC8gdmVjNCggUGFja0ZhY3RvcnMsIDEuICk7XG5jb25zdCBmbG9hdCBTaGlmdFJpZ2h0OCA9IDEuIC8gMjU2LjtcbnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCBmcmFjdCggdiAqIFBhY2tGYWN0b3JzICksIHYgKTtcblx0ci55encgLT0gci54eXogKiBTaGlmdFJpZ2h0ODtcdHJldHVybiByICogUGFja1Vwc2NhbGU7XG59XG5mbG9hdCB1bnBhY2tSR0JBVG9EZXB0aCggY29uc3QgaW4gdmVjNCB2ICkge1xuXHRyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7XG59XG52ZWM0IHBhY2sySGFsZlRvUkdCQSggdmVjMiB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCB2LngsIGZyYWN0KCB2LnggKiAyNTUuMCApLCB2LnksIGZyYWN0KCB2LnkgKiAyNTUuMCApKTtcblx0cmV0dXJuIHZlYzQoIHIueCAtIHIueSAvIDI1NS4wLCByLnksIHIueiAtIHIudyAvIDI1NS4wLCByLncpO1xufVxudmVjMiB1bnBhY2tSR0JBVG8ySGFsZiggdmVjNCB2ICkge1xuXHRyZXR1cm4gdmVjMiggdi54ICsgKCB2LnkgLyAyNTUuMCApLCB2LnogKyAoIHYudyAvIDI1NS4wICkgKTtcbn1cbmZsb2F0IHZpZXdaVG9PcnRob2dyYXBoaWNEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTtcbn1cbmZsb2F0IG9ydGhvZ3JhcGhpY0RlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgbGluZWFyQ2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuIGxpbmVhckNsaXBaICogKCBuZWFyIC0gZmFyICkgLSBuZWFyO1xufVxuZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoKCBuZWFyICsgdmlld1ogKSAqIGZhciApIC8gKCggZmFyIC0gbmVhciApICogdmlld1ogKTtcbn1cbmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCBuZWFyICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogaW52Q2xpcFogLSBmYXIgKTtcbn0iLHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ6IiNpZmRlZiBQUkVNVUxUSVBMSUVEX0FMUEhBXG5cdGdsX0ZyYWdDb2xvci5yZ2IgKj0gZ2xfRnJhZ0NvbG9yLmE7XG4jZW5kaWYiLHByb2plY3RfdmVydGV4OiJ2ZWM0IG12UG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0bXZQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogbXZQb3NpdGlvbjtcbiNlbmRpZlxubXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIG12UG9zaXRpb247XG5nbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uOyIsZGl0aGVyaW5nX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSBkaXRoZXJpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0dmVjMyBkaXRoZXJpbmcoIHZlYzMgY29sb3IgKSB7XG5cdFx0ZmxvYXQgZ3JpZF9wb3NpdGlvbiA9IHJhbmQoIGdsX0ZyYWdDb29yZC54eSApO1xuXHRcdHZlYzMgZGl0aGVyX3NoaWZ0X1JHQiA9IHZlYzMoIDAuMjUgLyAyNTUuMCwgLTAuMjUgLyAyNTUuMCwgMC4yNSAvIDI1NS4wICk7XG5cdFx0ZGl0aGVyX3NoaWZ0X1JHQiA9IG1peCggMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgLTIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIGdyaWRfcG9zaXRpb24gKTtcblx0XHRyZXR1cm4gY29sb3IgKyBkaXRoZXJfc2hpZnRfUkdCO1xuXHR9XG4jZW5kaWYiLHJvdWdobmVzc21hcF9mcmFnbWVudDoiZmxvYXQgcm91Z2huZXNzRmFjdG9yID0gcm91Z2huZXNzO1xuI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dmVjNCB0ZXhlbFJvdWdobmVzcyA9IHRleHR1cmUyRCggcm91Z2huZXNzTWFwLCB2VXYgKTtcblx0cm91Z2huZXNzRmFjdG9yICo9IHRleGVsUm91Z2huZXNzLmc7XG4jZW5kaWYiLHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCByb3VnaG5lc3NNYXA7XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwb3RTaGFkb3dNYXBbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRTaGFkb3dNYXBbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdGZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7XG5cdFx0cmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7XG5cdH1cblx0dmVjMiB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYgKSB7XG5cdFx0cmV0dXJuIHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvdywgdXYgKSApO1xuXHR9XG5cdGZsb2F0IFZTTVNoYWRvdyAoc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApe1xuXHRcdGZsb2F0IG9jY2x1c2lvbiA9IDEuMDtcblx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2hhZG93LCB1diApO1xuXHRcdGZsb2F0IGhhcmRfc2hhZG93ID0gc3RlcCggY29tcGFyZSAsIGRpc3RyaWJ1dGlvbi54ICk7XG5cdFx0aWYgKGhhcmRfc2hhZG93ICE9IDEuMCApIHtcblx0XHRcdGZsb2F0IGRpc3RhbmNlID0gY29tcGFyZSAtIGRpc3RyaWJ1dGlvbi54IDtcblx0XHRcdGZsb2F0IHZhcmlhbmNlID0gbWF4KCAwLjAwMDAwLCBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICk7XG5cdFx0XHRmbG9hdCBzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IHZhcmlhbmNlIC8gKHZhcmlhbmNlICsgZGlzdGFuY2UgKiBkaXN0YW5jZSApO1x0XHRcdHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gY2xhbXAoICggc29mdG5lc3NfcHJvYmFiaWxpdHkgLSAwLjMgKSAvICggMC45NSAtIDAuMyApLCAwLjAsIDEuMCApO1x0XHRcdG9jY2x1c2lvbiA9IGNsYW1wKCBtYXgoIGhhcmRfc2hhZG93LCBzb2Z0bmVzc19wcm9iYWJpbGl0eSApLCAwLjAsIDEuMCApO1xuXHRcdH1cblx0XHRyZXR1cm4gb2NjbHVzaW9uO1xuXHR9XG5cdGZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7XG5cdFx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHRcdHNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53O1xuXHRcdHNoYWRvd0Nvb3JkLnogKz0gc2hhZG93Qmlhcztcblx0XHRidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7XG5cdFx0Ym9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApO1xuXHRcdGJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTtcblx0XHRib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApO1xuXHRcdGlmICggZnJ1c3R1bVRlc3QgKSB7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4MCA9IC0gdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MSA9ICsgdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDIgPSBkeDAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTIgPSBkeTAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeDMgPSBkeDEgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTMgPSBkeTEgLyAyLjA7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MSApLCBzaGFkb3dDb29yZC56IClcblx0XHRcdCkgKiAoIDEuMCAvIDE3LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4ID0gdGV4ZWxTaXplLng7XG5cdFx0XHRmbG9hdCBkeSA9IHRleGVsU2l6ZS55O1xuXHRcdFx0dmVjMiB1diA9IHNoYWRvd0Nvb3JkLnh5O1xuXHRcdFx0dmVjMiBmID0gZnJhY3QoIHV2ICogc2hhZG93TWFwU2l6ZSArIDAuNSApO1xuXHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgZHkgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHRleGVsU2l6ZSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgZi55IClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHRzaGFkb3cgPSBWU01TaGFkb3coIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZWxzZVxuXHRcdFx0c2hhZG93ID0gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbmRpZlxuXHRcdH1cblx0XHRyZXR1cm4gc2hhZG93O1xuXHR9XG5cdHZlYzIgY3ViZVRvVVYoIHZlYzMgdiwgZmxvYXQgdGV4ZWxTaXplWSApIHtcblx0XHR2ZWMzIGFic1YgPSBhYnMoIHYgKTtcblx0XHRmbG9hdCBzY2FsZVRvQ3ViZSA9IDEuMCAvIG1heCggYWJzVi54LCBtYXgoIGFic1YueSwgYWJzVi56ICkgKTtcblx0XHRhYnNWICo9IHNjYWxlVG9DdWJlO1xuXHRcdHYgKj0gc2NhbGVUb0N1YmUgKiAoIDEuMCAtIDIuMCAqIHRleGVsU2l6ZVkgKTtcblx0XHR2ZWMyIHBsYW5hciA9IHYueHk7XG5cdFx0ZmxvYXQgYWxtb3N0QVRleGVsID0gMS41ICogdGV4ZWxTaXplWTtcblx0XHRmbG9hdCBhbG1vc3RPbmUgPSAxLjAgLSBhbG1vc3RBVGV4ZWw7XG5cdFx0aWYgKCBhYnNWLnogPj0gYWxtb3N0T25lICkge1xuXHRcdFx0aWYgKCB2LnogPiAwLjAgKVxuXHRcdFx0XHRwbGFuYXIueCA9IDQuMCAtIHYueDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnggPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblggPSBzaWduKCB2LnggKTtcblx0XHRcdHBsYW5hci54ID0gdi56ICogc2lnblggKyAyLjAgKiBzaWduWDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnkgPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblkgPSBzaWduKCB2LnkgKTtcblx0XHRcdHBsYW5hci54ID0gdi54ICsgMi4wICogc2lnblkgKyAyLjA7XG5cdFx0XHRwbGFuYXIueSA9IHYueiAqIHNpZ25ZIC0gMi4wO1xuXHRcdH1cblx0XHRyZXR1cm4gdmVjMiggMC4xMjUsIDAuMjUgKSAqIHBsYW5hciArIHZlYzIoIDAuMzc1LCAwLjc1ICk7XG5cdH1cblx0ZmxvYXQgZ2V0UG9pbnRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkLCBmbG9hdCBzaGFkb3dDYW1lcmFOZWFyLCBmbG9hdCBzaGFkb3dDYW1lcmFGYXIgKSB7XG5cdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvICggc2hhZG93TWFwU2l6ZSAqIHZlYzIoIDQuMCwgMi4wICkgKTtcblx0XHR2ZWMzIGxpZ2h0VG9Qb3NpdGlvbiA9IHNoYWRvd0Nvb3JkLnh5ejtcblx0XHRmbG9hdCBkcCA9ICggbGVuZ3RoKCBsaWdodFRvUG9zaXRpb24gKSAtIHNoYWRvd0NhbWVyYU5lYXIgKSAvICggc2hhZG93Q2FtZXJhRmFyIC0gc2hhZG93Q2FtZXJhTmVhciApO1x0XHRkcCArPSBzaGFkb3dCaWFzO1xuXHRcdHZlYzMgYmQzRCA9IG5vcm1hbGl6ZSggbGlnaHRUb1Bvc2l0aW9uICk7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHZlYzIgb2Zmc2V0ID0gdmVjMiggLSAxLCAxICkgKiBzaGFkb3dSYWRpdXMgKiB0ZXhlbFNpemUueTtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh4LCB0ZXhlbFNpemUueSApLCBkcCApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICk7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgc3BvdFNoYWRvd01hdHJpeFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgcG9pbnRTaGFkb3dNYXRyaXhbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHZlYzMgc2hhZG93V29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdHZlYzQgc2hhZG93V29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdID0gZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHNwb3RMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlNwb3RTaGFkb3dDb29yZFsgaSBdID0gc3BvdFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBwb2ludExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2UG9pbnRTaGFkb3dDb29yZFsgaSBdID0gcG9pbnRTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hc2tfcGFyc19mcmFnbWVudDoiZmxvYXQgZ2V0U2hhZG93TWFzaygpIHtcblx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHQjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodC5zaGFkb3dCaWFzLCBzcG90TGlnaHQuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNlbmRpZlxuXHRyZXR1cm4gc2hhZG93O1xufSIsc2tpbmJhc2VfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgYm9uZU1hdFggPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueCApO1xuXHRtYXQ0IGJvbmVNYXRZID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnkgKTtcblx0bWF0NCBib25lTWF0WiA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC56ICk7XG5cdG1hdDQgYm9uZU1hdFcgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgudyApO1xuI2VuZGlmIixza2lubmluZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXhJbnZlcnNlO1xuXHQjaWZkZWYgQk9ORV9URVhUVVJFXG5cdFx0dW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgYm9uZVRleHR1cmU7XG5cdFx0dW5pZm9ybSBpbnQgYm9uZVRleHR1cmVTaXplO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdGZsb2F0IGogPSBpICogNC4wO1xuXHRcdFx0ZmxvYXQgeCA9IG1vZCggaiwgZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCB5ID0gZmxvb3IoIGogLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IGR4ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0ZmxvYXQgZHkgPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHR5ID0gZHkgKiAoIHkgKyAwLjUgKTtcblx0XHRcdHZlYzQgdjEgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDAuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjIgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDEuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjMgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDIuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjQgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDMuNSApLCB5ICkgKTtcblx0XHRcdG1hdDQgYm9uZSA9IG1hdDQoIHYxLCB2MiwgdjMsIHY0ICk7XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBtYXQ0IGJvbmVNYXRyaWNlc1sgTUFYX0JPTkVTIF07XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0bWF0NCBib25lID0gYm9uZU1hdHJpY2VzWyBpbnQoaSkgXTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLHNraW5uaW5nX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR2ZWM0IHNraW5WZXJ0ZXggPSBiaW5kTWF0cml4ICogdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHR2ZWM0IHNraW5uZWQgPSB2ZWM0KCAwLjAgKTtcblx0c2tpbm5lZCArPSBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFkgKiBza2luVmVydGV4ICogc2tpbldlaWdodC55O1xuXHRza2lubmVkICs9IGJvbmVNYXRaICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQuejtcblx0c2tpbm5lZCArPSBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7XG5cdHRyYW5zZm9ybWVkID0gKCBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5uZWQgKS54eXo7XG4jZW5kaWYiLHNraW5ub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgc2tpbk1hdHJpeCA9IG1hdDQoIDAuMCApO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueCAqIGJvbmVNYXRYO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueSAqIGJvbmVNYXRZO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueiAqIGJvbmVNYXRaO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQudyAqIGJvbmVNYXRXO1xuXHRza2luTWF0cml4ID0gYmluZE1hdHJpeEludmVyc2UgKiBza2luTWF0cml4ICogYmluZE1hdHJpeDtcblx0b2JqZWN0Tm9ybWFsID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG9iamVjdFRhbmdlbnQgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNlbmRpZlxuI2VuZGlmIixzcGVjdWxhcm1hcF9mcmFnbWVudDoiZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dmVjNCB0ZXhlbFNwZWN1bGFyID0gdGV4dHVyZTJEKCBzcGVjdWxhck1hcCwgdlV2ICk7XG5cdHNwZWN1bGFyU3RyZW5ndGggPSB0ZXhlbFNwZWN1bGFyLnI7XG4jZWxzZVxuXHRzcGVjdWxhclN0cmVuZ3RoID0gMS4wO1xuI2VuZGlmIixzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyTWFwO1xuI2VuZGlmIix0b25lbWFwcGluZ19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFRPTkVfTUFQUElORyApXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSB0b25lTWFwcGluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIix0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIjaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTtcbnZlYzMgTGluZWFyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdHJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7XG59XG52ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApO1xufVxudmVjMyBPcHRpbWl6ZWRDaW5lb25Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0Y29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7XG5cdHJldHVybiBwb3coICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMC41ICkgKSAvICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMS43ICkgKyAwLjA2ICksIHZlYzMoIDIuMiApICk7XG59XG52ZWMzIFJSVEFuZE9EVEZpdCggdmVjMyB2ICkge1xuXHR2ZWMzIGEgPSB2ICogKCB2ICsgMC4wMjQ1Nzg2ICkgLSAwLjAwMDA5MDUzNztcblx0dmVjMyBiID0gdiAqICggMC45ODM3MjkgKiB2ICsgMC40MzI5NTEwICkgKyAwLjIzODA4MTtcblx0cmV0dXJuIGEgLyBiO1xufVxudmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbnN0IG1hdDMgQUNFU0lucHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAwLjU5NzE5LCAwLjA3NjAwLCAwLjAyODQwICksXHRcdHZlYzMoIDAuMzU0NTgsIDAuOTA4MzQsIDAuMTMzODMgKSxcblx0XHR2ZWMzKCAwLjA0ODIzLCAwLjAxNTY2LCAwLjgzNzc3IClcblx0KTtcblx0Y29uc3QgbWF0MyBBQ0VTT3V0cHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAgMS42MDQ3NSwgLTAuMTAyMDgsIC0wLjAwMzI3ICksXHRcdHZlYzMoIC0wLjUzMTA4LCAgMS4xMDgxMywgLTAuMDcyNzYgKSxcblx0XHR2ZWMzKCAtMC4wNzM2NywgLTAuMDA2MDUsICAxLjA3NjAyIClcblx0KTtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZSAvIDAuNjtcblx0Y29sb3IgPSBBQ0VTSW5wdXRNYXQgKiBjb2xvcjtcblx0Y29sb3IgPSBSUlRBbmRPRFRGaXQoIGNvbG9yICk7XG5cdGNvbG9yID0gQUNFU091dHB1dE1hdCAqIGNvbG9yO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yICk7XG59XG52ZWMzIEN1c3RvbVRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gY29sb3I7IH0iLHRyYW5zbWlzc2lvbl9mcmFnbWVudDoiI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0ZmxvYXQgdHJhbnNtaXNzaW9uRmFjdG9yID0gdHJhbnNtaXNzaW9uO1xuXHRmbG9hdCB0aGlja25lc3NGYWN0b3IgPSB0aGlja25lc3M7XG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dHJhbnNtaXNzaW9uRmFjdG9yICo9IHRleHR1cmUyRCggdHJhbnNtaXNzaW9uTWFwLCB2VXYgKS5yO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR0aGlja25lc3NGYWN0b3IgKj0gdGV4dHVyZTJEKCB0aGlja25lc3NNYXAsIHZVdiApLmc7XG5cdCNlbmRpZlxuXHR2ZWMzIHBvcyA9IHZXb3JsZFBvc2l0aW9uLnh5eiAvIHZXb3JsZFBvc2l0aW9uLnc7XG5cdHZlYzMgdiA9IG5vcm1hbGl6ZSggY2FtZXJhUG9zaXRpb24gLSBwb3MgKTtcblx0dmVjMyBuID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdGZsb2F0IGlvciA9ICggMS4wICsgMC40ICogcmVmbGVjdGl2aXR5ICkgLyAoIDEuMCAtIDAuNCAqIHJlZmxlY3Rpdml0eSApO1xuXHR2ZWMzIHRyYW5zbWlzc2lvbiA9IHRyYW5zbWlzc2lvbkZhY3RvciAqIGdldElCTFZvbHVtZVJlZnJhY3Rpb24oXG5cdFx0biwgdiwgcm91Z2huZXNzRmFjdG9yLCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsXG5cdFx0cG9zLCBtb2RlbE1hdHJpeCwgdmlld01hdHJpeCwgcHJvamVjdGlvbk1hdHJpeCwgaW9yLCB0aGlja25lc3NGYWN0b3IsXG5cdFx0YXR0ZW51YXRpb25UaW50LCBhdHRlbnVhdGlvbkRpc3RhbmNlICk7XG5cdHRvdGFsRGlmZnVzZSA9IG1peCggdG90YWxEaWZmdXNlLCB0cmFuc21pc3Npb24sIHRyYW5zbWlzc2lvbkZhY3RvciApO1xuI2VuZGlmIix0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0I2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25NYXA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RISUNLTkVTU01BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRoaWNrbmVzc01hcDtcblx0I2VuZGlmXG5cdHVuaWZvcm0gdmVjMiB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uU2FtcGxlck1hcDtcblx0dW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDtcblx0dmFyeWluZyB2ZWM0IHZXb3JsZFBvc2l0aW9uO1xuXHR2ZWMzIGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSh2ZWMzIG4sIHZlYzMgdiwgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBpb3IsIG1hdDQgbW9kZWxNYXRyaXgpIHtcblx0XHR2ZWMzIHJlZnJhY3Rpb25WZWN0b3IgPSByZWZyYWN0KC12LCBub3JtYWxpemUobiksIDEuMCAvIGlvcik7XG5cdFx0dmVjMyBtb2RlbFNjYWxlO1xuXHRcdG1vZGVsU2NhbGUueCA9IGxlbmd0aCh2ZWMzKG1vZGVsTWF0cml4WzBdLnh5eikpO1xuXHRcdG1vZGVsU2NhbGUueSA9IGxlbmd0aCh2ZWMzKG1vZGVsTWF0cml4WzFdLnh5eikpO1xuXHRcdG1vZGVsU2NhbGUueiA9IGxlbmd0aCh2ZWMzKG1vZGVsTWF0cml4WzJdLnh5eikpO1xuXHRcdHJldHVybiBub3JtYWxpemUocmVmcmFjdGlvblZlY3RvcikgKiB0aGlja25lc3MgKiBtb2RlbFNjYWxlO1xuXHR9XG5cdGZsb2F0IGFwcGx5SW9yVG9Sb3VnaG5lc3MoZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBpb3IpIHtcblx0XHRyZXR1cm4gcm91Z2huZXNzICogY2xhbXAoaW9yICogMi4wIC0gMi4wLCAwLjAsIDEuMCk7XG5cdH1cblx0dmVjMyBnZXRUcmFuc21pc3Npb25TYW1wbGUodmVjMiBmcmFnQ29vcmQsIGZsb2F0IHJvdWdobmVzcywgZmxvYXQgaW9yKSB7XG5cdFx0ZmxvYXQgZnJhbWVidWZmZXJMb2QgPSBsb2cyKHRyYW5zbWlzc2lvblNhbXBsZXJTaXplLngpICogYXBwbHlJb3JUb1JvdWdobmVzcyhyb3VnaG5lc3MsIGlvcik7XG5cdFx0cmV0dXJuIHRleHR1cmUyRExvZEVYVCh0cmFuc21pc3Npb25TYW1wbGVyTWFwLCBmcmFnQ29vcmQueHksIGZyYW1lYnVmZmVyTG9kKS5yZ2I7XG5cdH1cblx0dmVjMyBhcHBseVZvbHVtZUF0dGVudWF0aW9uKHZlYzMgcmFkaWFuY2UsIGZsb2F0IHRyYW5zbWlzc2lvbkRpc3RhbmNlLCB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UpIHtcblx0XHRpZiAoYXR0ZW51YXRpb25EaXN0YW5jZSA9PSAwLjApIHtcblx0XHRcdHJldHVybiByYWRpYW5jZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ID0gLWxvZyhhdHRlbnVhdGlvbkNvbG9yKSAvIGF0dGVudWF0aW9uRGlzdGFuY2U7XG5cdFx0XHR2ZWMzIHRyYW5zbWl0dGFuY2UgPSBleHAoLWF0dGVudWF0aW9uQ29lZmZpY2llbnQgKiB0cmFuc21pc3Npb25EaXN0YW5jZSk7XHRcdFx0cmV0dXJuIHRyYW5zbWl0dGFuY2UgKiByYWRpYW5jZTtcblx0XHR9XG5cdH1cblx0dmVjMyBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKHZlYzMgbiwgdmVjMyB2LCBmbG9hdCBwZXJjZXB0dWFsUm91Z2huZXNzLCB2ZWMzIGJhc2VDb2xvciwgdmVjMyBzcGVjdWxhckNvbG9yLFxuXHRcdHZlYzMgcG9zaXRpb24sIG1hdDQgbW9kZWxNYXRyaXgsIG1hdDQgdmlld01hdHJpeCwgbWF0NCBwcm9qTWF0cml4LCBmbG9hdCBpb3IsIGZsb2F0IHRoaWNrbmVzcyxcblx0XHR2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UpIHtcblx0XHR2ZWMzIHRyYW5zbWlzc2lvblJheSA9IGdldFZvbHVtZVRyYW5zbWlzc2lvblJheShuLCB2LCB0aGlja25lc3MsIGlvciwgbW9kZWxNYXRyaXgpO1xuXHRcdHZlYzMgcmVmcmFjdGVkUmF5RXhpdCA9IHBvc2l0aW9uICsgdHJhbnNtaXNzaW9uUmF5O1xuXHRcdHZlYzQgbmRjUG9zID0gcHJvak1hdHJpeCAqIHZpZXdNYXRyaXggKiB2ZWM0KHJlZnJhY3RlZFJheUV4aXQsIDEuMCk7XG5cdFx0dmVjMiByZWZyYWN0aW9uQ29vcmRzID0gbmRjUG9zLnh5IC8gbmRjUG9zLnc7XG5cdFx0cmVmcmFjdGlvbkNvb3JkcyArPSAxLjA7XG5cdFx0cmVmcmFjdGlvbkNvb3JkcyAvPSAyLjA7XG5cdFx0dmVjMyB0cmFuc21pdHRlZExpZ2h0ID0gZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKHJlZnJhY3Rpb25Db29yZHMsIHBlcmNlcHR1YWxSb3VnaG5lc3MsIGlvcik7XG5cdFx0dmVjMyBhdHRlbnVhdGVkQ29sb3IgPSBhcHBseVZvbHVtZUF0dGVudWF0aW9uKHRyYW5zbWl0dGVkTGlnaHQsIGxlbmd0aCh0cmFuc21pc3Npb25SYXkpLCBhdHRlbnVhdGlvbkNvbG9yLCBhdHRlbnVhdGlvbkRpc3RhbmNlKTtcblx0XHRyZXR1cm4gKDEuMCAtIHNwZWN1bGFyQ29sb3IpICogYXR0ZW51YXRlZENvbG9yICogYmFzZUNvbG9yO1xuXHR9XG4jZW5kaWYiLHV2X3BhcnNfZnJhZ21lbnQ6IiNpZiAoIGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2O1xuI2VuZGlmIix1dl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHQjaWZkZWYgVVZTX1ZFUlRFWF9PTkxZXG5cdFx0dmVjMiB2VXY7XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMyIHZVdjtcblx0I2VuZGlmXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZiIsdXZfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG4jZW5kaWYiLHV2Ml9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG4jZW5kaWYiLHV2Ml9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdGF0dHJpYnV0ZSB2ZWMyIHV2Mjtcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG5cdHVuaWZvcm0gbWF0MyB1djJUcmFuc2Zvcm07XG4jZW5kaWYiLHV2Ml92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2VXYyID0gKCB1djJUcmFuc2Zvcm0gKiB2ZWMzKCB1djIsIDEgKSApLnh5O1xuI2VuZGlmIix3b3JsZHBvc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCggRElTVEFOQ0UgKSB8fCBkZWZpbmVkICggVVNFX1NIQURPV01BUCApIHx8IGRlZmluZWQgKCBVU0VfVFJBTlNNSVNTSU9OIClcblx0dmVjNCB3b3JsZFBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHQjaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0XHR3b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0d29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiNlbmRpZiIsYmFja2dyb3VuZF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7XG52YXJ5aW5nIHZlYzIgdlV2O1xudm9pZCBtYWluKCkge1xuXHR2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKCB0MkQsIHZVdiApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixiYWNrZ3JvdW5kX3ZlcnQ6InZhcnlpbmcgdmVjMiB2VXY7XG51bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG52b2lkIG1haW4oKSB7XG5cdHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24ueHksIDEuMCwgMS4wICk7XG59IixjdWJlX2ZyYWc6IiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyB2UmVmbGVjdCA9IHZXb3JsZERpcmVjdGlvbjtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gZW52Q29sb3I7XG5cdGdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGN1YmVfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0Z2xfUG9zaXRpb24ueiA9IGdsX1Bvc2l0aW9uLnc7XG59IixkZXB0aF9mcmFnOiIjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50PlxudmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XG5cdCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0XHRkaWZmdXNlQ29sb3IuYSA9IG9wYWNpdHk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0ZmxvYXQgZnJhZ0Nvb3JkWiA9IDAuNSAqIHZIaWdoUHJlY2lzaW9uWldbMF0gLyB2SGlnaFByZWNpc2lvblpXWzFdICsgMC41O1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggMS4wIC0gZnJhZ0Nvb3JkWiApLCBvcGFjaXR5ICk7XG5cdCNlbGlmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMVxuXHRcdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZnJhZ0Nvb3JkWiApO1xuXHQjZW5kaWZcbn0iLGRlcHRoX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dkhpZ2hQcmVjaXNpb25aVyA9IGdsX1Bvc2l0aW9uLnp3O1xufSIsZGlzdGFuY2VSR0JBX2ZyYWc6IiNkZWZpbmUgRElTVEFOQ0VcbnVuaWZvcm0gdmVjMyByZWZlcmVuY2VQb3NpdGlvbjtcbnVuaWZvcm0gZmxvYXQgbmVhckRpc3RhbmNlO1xudW5pZm9ybSBmbG9hdCBmYXJEaXN0YW5jZTtcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4gKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdGZsb2F0IGRpc3QgPSBsZW5ndGgoIHZXb3JsZFBvc2l0aW9uIC0gcmVmZXJlbmNlUG9zaXRpb24gKTtcblx0ZGlzdCA9ICggZGlzdCAtIG5lYXJEaXN0YW5jZSApIC8gKCBmYXJEaXN0YW5jZSAtIG5lYXJEaXN0YW5jZSApO1xuXHRkaXN0ID0gc2F0dXJhdGUoIGRpc3QgKTtcblx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBkaXN0ICk7XG59IixkaXN0YW5jZVJHQkFfdmVydDoiI2RlZmluZSBESVNUQU5DRVxudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbn0iLGVxdWlyZWN0X2ZyYWc6InVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixlcXVpcmVjdF92ZXJ0OiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxufSIsbGluZWRhc2hlZF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gZmxvYXQgZGFzaFNpemU7XG51bmlmb3JtIGZsb2F0IHRvdGFsU2l6ZTtcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHRpZiAoIG1vZCggdkxpbmVEaXN0YW5jZSwgdG90YWxTaXplICkgPiBkYXNoU2l6ZSApIHtcblx0XHRkaXNjYXJkO1xuXHR9XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxufSIsbGluZWRhc2hlZF92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNjYWxlO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVEaXN0YW5jZTtcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0dkxpbmVEaXN0YW5jZSA9IHNjYWxlICogbGluZURpc3RhbmNlO1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hiYXNpY19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdmVjMyggMS4wICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBkaWZmdXNlQ29sb3IucmdiO1xuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNoYmFzaWNfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaWYgZGVmaW5lZCAoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkICggVVNFX1NLSU5OSU5HIClcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaGxhbWJlcnRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9ICggZ2xfRnJvbnRGYWNpbmcgKSA/IHZJbmRpcmVjdEZyb250IDogdkluZGlyZWN0QmFjaztcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdkluZGlyZWN0RnJvbnQ7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bGlnaHRtYXBfZnJhZ21lbnQ+XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApO1xuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9ICggZ2xfRnJvbnRGYWNpbmcgKSA/IHZMaWdodEZyb250IDogdkxpZ2h0QmFjaztcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gdkxpZ2h0RnJvbnQ7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICo9IEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICkgKiBnZXRTaGFkb3dNYXNrKCk7XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hsYW1iZXJ0X3ZlcnQ6IiNkZWZpbmUgTEFNQkVSVFxudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGxpZ2h0c19sYW1iZXJ0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaG1hdGNhcF9mcmFnOiIjZGVmaW5lIE1BVENBUFxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIHNhbXBsZXIyRCBtYXRjYXA7XG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdHZlYzMgdmlld0RpciA9IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuXHR2ZWMzIHggPSBub3JtYWxpemUoIHZlYzMoIHZpZXdEaXIueiwgMC4wLCAtIHZpZXdEaXIueCApICk7XG5cdHZlYzMgeSA9IGNyb3NzKCB2aWV3RGlyLCB4ICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCBkb3QoIHgsIG5vcm1hbCApLCBkb3QoIHksIG5vcm1hbCApICkgKiAwLjQ5NSArIDAuNTtcblx0I2lmZGVmIFVTRV9NQVRDQVBcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdGV4dHVyZTJEKCBtYXRjYXAsIHV2ICk7XG5cdFx0bWF0Y2FwQ29sb3IgPSBtYXRjYXBUZXhlbFRvTGluZWFyKCBtYXRjYXBDb2xvciApO1xuXHQjZWxzZVxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2VuZGlmXG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2IgKiBtYXRjYXBDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobWF0Y2FwX3ZlcnQ6IiNkZWZpbmUgTUFUQ0FQXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaWZuZGVmIEZMQVRfU0hBREVEXG5cdFx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0XHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xufSIsbWVzaHRvb25fZnJhZzoiI2RlZmluZSBUT09OXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c190b29uX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNodG9vbl92ZXJ0OiIjZGVmaW5lIFRPT05cbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNocGhvbmdfZnJhZzoiI2RlZmluZSBQSE9OR1xudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIHZlYzMgc3BlY3VsYXI7XG51bmlmb3JtIGZsb2F0IHNoaW5pbmVzcztcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3Bob25nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNocGhvbmdfdmVydDoiI2RlZmluZSBQSE9OR1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBoeXNpY2FsX2ZyYWc6IiNkZWZpbmUgU1RBTkRBUkRcbiNpZmRlZiBQSFlTSUNBTFxuXHQjZGVmaW5lIFJFRkxFQ1RJVklUWVxuXHQjZGVmaW5lIENMRUFSQ09BVFxuXHQjZGVmaW5lIFNQRUNVTEFSXG4jZW5kaWZcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCByb3VnaG5lc3M7XG51bmlmb3JtIGZsb2F0IG1ldGFsbmVzcztcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdHVuaWZvcm0gZmxvYXQgdHJhbnNtaXNzaW9uO1xuXHR1bmlmb3JtIGZsb2F0IHRoaWNrbmVzcztcblx0dW5pZm9ybSBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHR1bmlmb3JtIHZlYzMgYXR0ZW51YXRpb25UaW50O1xuI2VuZGlmXG4jaWZkZWYgUkVGTEVDVElWSVRZXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuI2VuZGlmXG4jaWZkZWYgU1BFQ1VMQVJcblx0dW5pZm9ybSBmbG9hdCBzcGVjdWxhckludGVuc2l0eTtcblx0dW5pZm9ybSB2ZWMzIHNwZWN1bGFyVGludDtcblx0I2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFySW50ZW5zaXR5TWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9TUEVDVUxBUlRJTlRNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhclRpbnRNYXA7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0O1xuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdFJvdWdobmVzcztcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHR1bmlmb3JtIHZlYzMgc2hlZW47XG4jZW5kaWZcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cm91Z2huZXNzbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWV0YWxuZXNzbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyB0b3RhbERpZmZ1c2UgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHR2ZWMzIHRvdGFsU3BlY3VsYXIgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXI7XG5cdCNpbmNsdWRlIDx0cmFuc21pc3Npb25fZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHRvdGFsRGlmZnVzZSArIHRvdGFsU3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNocGh5c2ljYWxfdmVydDoiI2RlZmluZSBTVEFOREFSRFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR2YXJ5aW5nIHZlYzQgdldvcmxkUG9zaXRpb247XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0I2VuZGlmXG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb247XG4jZW5kaWZcbn0iLG5vcm1hbF9mcmFnOiIjZGVmaW5lIE5PUk1BTFxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBwYWNrTm9ybWFsVG9SR0IoIG5vcm1hbCApLCBvcGFjaXR5ICk7XG59Iixub3JtYWxfdmVydDoiI2RlZmluZSBOT1JNQUxcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0I2VuZGlmXG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbiNlbmRpZlxufSIscG9pbnRzX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX3BhcnRpY2xlX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxufSIscG9pbnRzX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2l6ZTtcbnVuaWZvcm0gZmxvYXQgc2NhbGU7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0Z2xfUG9pbnRTaXplID0gc2l6ZTtcblx0I2lmZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgZ2xfUG9pbnRTaXplICo9ICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc2hhZG93X2ZyYWc6InVuaWZvcm0gdmVjMyBjb2xvcjtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIGNvbG9yLCBvcGFjaXR5ICogKCAxLjAgLSBnZXRTaGFkb3dNYXNrKCkgKSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzaGFkb3dfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixzcHJpdGVfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc3ByaXRlX3ZlcnQ6InVuaWZvcm0gZmxvYXQgcm90YXRpb247XG51bmlmb3JtIHZlYzIgY2VudGVyO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHR2ZWM0IG12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0dmVjMiBzY2FsZTtcblx0c2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54LCBtb2RlbE1hdHJpeFsgMCBdLnksIG1vZGVsTWF0cml4WyAwIF0ueiApICk7XG5cdHNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueCwgbW9kZWxNYXRyaXhbIDEgXS55LCBtb2RlbE1hdHJpeFsgMSBdLnogKSApO1xuXHQjaWZuZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgc2NhbGUgKj0gLSBtdlBvc2l0aW9uLno7XG5cdCNlbmRpZlxuXHR2ZWMyIGFsaWduZWRQb3NpdGlvbiA9ICggcG9zaXRpb24ueHkgLSAoIGNlbnRlciAtIHZlYzIoIDAuNSApICkgKSAqIHNjYWxlO1xuXHR2ZWMyIHJvdGF0ZWRQb3NpdGlvbjtcblx0cm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRyb3RhdGVkUG9zaXRpb24ueSA9IHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54ICsgY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdG12UG9zaXRpb24ueHkgKz0gcm90YXRlZFBvc2l0aW9uO1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59In0sbDB0PXtjb21tb246e2RpZmZ1c2U6e3ZhbHVlOm5ldyAkUXQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgZ0p0fSx1djJUcmFuc2Zvcm06e3ZhbHVlOm5ldyBnSnR9LGFscGhhTWFwOnt2YWx1ZTpudWxsfX0sc3BlY3VsYXJtYXA6e3NwZWN1bGFyTWFwOnt2YWx1ZTpudWxsfX0sZW52bWFwOntlbnZNYXA6e3ZhbHVlOm51bGx9LGZsaXBFbnZNYXA6e3ZhbHVlOi0xfSxyZWZsZWN0aXZpdHk6e3ZhbHVlOjF9LHJlZnJhY3Rpb25SYXRpbzp7dmFsdWU6Ljk4fSxtYXhNaXBMZXZlbDp7dmFsdWU6MH19LGFvbWFwOnthb01hcDp7dmFsdWU6bnVsbH0sYW9NYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxsaWdodG1hcDp7bGlnaHRNYXA6e3ZhbHVlOm51bGx9LGxpZ2h0TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sZW1pc3NpdmVtYXA6e2VtaXNzaXZlTWFwOnt2YWx1ZTpudWxsfX0sYnVtcG1hcDp7YnVtcE1hcDp7dmFsdWU6bnVsbH0sYnVtcFNjYWxlOnt2YWx1ZToxfX0sbm9ybWFsbWFwOntub3JtYWxNYXA6e3ZhbHVlOm51bGx9LG5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgbUp0KDEsMSl9fSxkaXNwbGFjZW1lbnRtYXA6e2Rpc3BsYWNlbWVudE1hcDp7dmFsdWU6bnVsbH0sZGlzcGxhY2VtZW50U2NhbGU6e3ZhbHVlOjF9LGRpc3BsYWNlbWVudEJpYXM6e3ZhbHVlOjB9fSxyb3VnaG5lc3NtYXA6e3JvdWdobmVzc01hcDp7dmFsdWU6bnVsbH19LG1ldGFsbmVzc21hcDp7bWV0YWxuZXNzTWFwOnt2YWx1ZTpudWxsfX0sZ3JhZGllbnRtYXA6e2dyYWRpZW50TWFwOnt2YWx1ZTpudWxsfX0sZm9nOntmb2dEZW5zaXR5Ont2YWx1ZToyNWUtNX0sZm9nTmVhcjp7dmFsdWU6MX0sZm9nRmFyOnt2YWx1ZToyZTN9LGZvZ0NvbG9yOnt2YWx1ZTpuZXcgJFF0KDE2Nzc3MjE1KX19LGxpZ2h0czp7YW1iaWVudExpZ2h0Q29sb3I6e3ZhbHVlOltdfSxsaWdodFByb2JlOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxjb2xvcjp7fX19LGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxkaXJlY3Rpb25hbFNoYWRvd01hcDp7dmFsdWU6W119LGRpcmVjdGlvbmFsU2hhZG93TWF0cml4Ont2YWx1ZTpbXX0sc3BvdExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGlyZWN0aW9uOnt9LGRpc3RhbmNlOnt9LGNvbmVDb3M6e30scGVudW1icmFDb3M6e30sZGVjYXk6e319fSxzcG90TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxzcG90U2hhZG93TWFwOnt2YWx1ZTpbXX0sc3BvdFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHBvaW50TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkZWNheTp7fSxkaXN0YW5jZTp7fX19LHBvaW50TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e30sc2hhZG93Q2FtZXJhTmVhcjp7fSxzaGFkb3dDYW1lcmFGYXI6e319fSxwb2ludFNoYWRvd01hcDp7dmFsdWU6W119LHBvaW50U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0saGVtaXNwaGVyZUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LHNreUNvbG9yOnt9LGdyb3VuZENvbG9yOnt9fX0scmVjdEFyZWFMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LHdpZHRoOnt9LGhlaWdodDp7fX19LGx0Y18xOnt2YWx1ZTpudWxsfSxsdGNfMjp7dmFsdWU6bnVsbH19LHBvaW50czp7ZGlmZnVzZTp7dmFsdWU6bmV3ICRRdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LHNpemU6e3ZhbHVlOjF9LHNjYWxlOnt2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IGdKdH19LHNwcml0ZTp7ZGlmZnVzZTp7dmFsdWU6bmV3ICRRdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LGNlbnRlcjp7dmFsdWU6bmV3IG1KdCguNSwuNSl9LHJvdGF0aW9uOnt2YWx1ZTowfSxtYXA6e3ZhbHVlOm51bGx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IGdKdH19fSxjMHQ9e2Jhc2ljOnt1bmlmb3JtczpVMXQoW2wwdC5jb21tb24sbDB0LnNwZWN1bGFybWFwLGwwdC5lbnZtYXAsbDB0LmFvbWFwLGwwdC5saWdodG1hcCxsMHQuZm9nXSksdmVydGV4U2hhZGVyOnMwdC5tZXNoYmFzaWNfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQubWVzaGJhc2ljX2ZyYWd9LGxhbWJlcnQ6e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuc3BlY3VsYXJtYXAsbDB0LmVudm1hcCxsMHQuYW9tYXAsbDB0LmxpZ2h0bWFwLGwwdC5lbWlzc2l2ZW1hcCxsMHQuZm9nLGwwdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgJFF0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6czB0Lm1lc2hsYW1iZXJ0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0Lm1lc2hsYW1iZXJ0X2ZyYWd9LHBob25nOnt1bmlmb3JtczpVMXQoW2wwdC5jb21tb24sbDB0LnNwZWN1bGFybWFwLGwwdC5lbnZtYXAsbDB0LmFvbWFwLGwwdC5saWdodG1hcCxsMHQuZW1pc3NpdmVtYXAsbDB0LmJ1bXBtYXAsbDB0Lm5vcm1hbG1hcCxsMHQuZGlzcGxhY2VtZW50bWFwLGwwdC5mb2csbDB0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyAkUXQoMCl9LHNwZWN1bGFyOnt2YWx1ZTpuZXcgJFF0KDExMTg0ODEpfSxzaGluaW5lc3M6e3ZhbHVlOjMwfX1dKSx2ZXJ0ZXhTaGFkZXI6czB0Lm1lc2hwaG9uZ192ZXJ0LGZyYWdtZW50U2hhZGVyOnMwdC5tZXNocGhvbmdfZnJhZ30sc3RhbmRhcmQ6e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuZW52bWFwLGwwdC5hb21hcCxsMHQubGlnaHRtYXAsbDB0LmVtaXNzaXZlbWFwLGwwdC5idW1wbWFwLGwwdC5ub3JtYWxtYXAsbDB0LmRpc3BsYWNlbWVudG1hcCxsMHQucm91Z2huZXNzbWFwLGwwdC5tZXRhbG5lc3NtYXAsbDB0LmZvZyxsMHQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3ICRRdCgwKX0scm91Z2huZXNzOnt2YWx1ZToxfSxtZXRhbG5lc3M6e3ZhbHVlOjB9LGVudk1hcEludGVuc2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnMwdC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQubWVzaHBoeXNpY2FsX2ZyYWd9LHRvb246e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuYW9tYXAsbDB0LmxpZ2h0bWFwLGwwdC5lbWlzc2l2ZW1hcCxsMHQuYnVtcG1hcCxsMHQubm9ybWFsbWFwLGwwdC5kaXNwbGFjZW1lbnRtYXAsbDB0LmdyYWRpZW50bWFwLGwwdC5mb2csbDB0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyAkUXQoMCl9fV0pLHZlcnRleFNoYWRlcjpzMHQubWVzaHRvb25fdmVydCxmcmFnbWVudFNoYWRlcjpzMHQubWVzaHRvb25fZnJhZ30sbWF0Y2FwOnt1bmlmb3JtczpVMXQoW2wwdC5jb21tb24sbDB0LmJ1bXBtYXAsbDB0Lm5vcm1hbG1hcCxsMHQuZGlzcGxhY2VtZW50bWFwLGwwdC5mb2cse21hdGNhcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOnMwdC5tZXNobWF0Y2FwX3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0Lm1lc2htYXRjYXBfZnJhZ30scG9pbnRzOnt1bmlmb3JtczpVMXQoW2wwdC5wb2ludHMsbDB0LmZvZ10pLHZlcnRleFNoYWRlcjpzMHQucG9pbnRzX3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0LnBvaW50c19mcmFnfSxkYXNoZWQ6e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuZm9nLHtzY2FsZTp7dmFsdWU6MX0sZGFzaFNpemU6e3ZhbHVlOjF9LHRvdGFsU2l6ZTp7dmFsdWU6Mn19XSksdmVydGV4U2hhZGVyOnMwdC5saW5lZGFzaGVkX3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0LmxpbmVkYXNoZWRfZnJhZ30sZGVwdGg6e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuZGlzcGxhY2VtZW50bWFwXSksdmVydGV4U2hhZGVyOnMwdC5kZXB0aF92ZXJ0LGZyYWdtZW50U2hhZGVyOnMwdC5kZXB0aF9mcmFnfSxub3JtYWw6e3VuaWZvcm1zOlUxdChbbDB0LmNvbW1vbixsMHQuYnVtcG1hcCxsMHQubm9ybWFsbWFwLGwwdC5kaXNwbGFjZW1lbnRtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpzMHQubm9ybWFsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0Lm5vcm1hbF9mcmFnfSxzcHJpdGU6e3VuaWZvcm1zOlUxdChbbDB0LnNwcml0ZSxsMHQuZm9nXSksdmVydGV4U2hhZGVyOnMwdC5zcHJpdGVfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQuc3ByaXRlX2ZyYWd9LGJhY2tncm91bmQ6e3VuaWZvcm1zOnt1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IGdKdH0sdDJEOnt2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOnMwdC5iYWNrZ3JvdW5kX3ZlcnQsZnJhZ21lbnRTaGFkZXI6czB0LmJhY2tncm91bmRfZnJhZ30sY3ViZTp7dW5pZm9ybXM6VTF0KFtsMHQuZW52bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6czB0LmN1YmVfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQuY3ViZV9mcmFnfSxlcXVpcmVjdDp7dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpzMHQuZXF1aXJlY3RfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQuZXF1aXJlY3RfZnJhZ30sZGlzdGFuY2VSR0JBOnt1bmlmb3JtczpVMXQoW2wwdC5jb21tb24sbDB0LmRpc3BsYWNlbWVudG1hcCx7cmVmZXJlbmNlUG9zaXRpb246e3ZhbHVlOm5ldyBDSnR9LG5lYXJEaXN0YW5jZTp7dmFsdWU6MX0sZmFyRGlzdGFuY2U6e3ZhbHVlOjFlM319XSksdmVydGV4U2hhZGVyOnMwdC5kaXN0YW5jZVJHQkFfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQuZGlzdGFuY2VSR0JBX2ZyYWd9LHNoYWRvdzp7dW5pZm9ybXM6VTF0KFtsMHQubGlnaHRzLGwwdC5mb2cse2NvbG9yOnt2YWx1ZTpuZXcgJFF0KDApfSxvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6czB0LnNoYWRvd192ZXJ0LGZyYWdtZW50U2hhZGVyOnMwdC5zaGFkb3dfZnJhZ319O2Z1bmN0aW9uIHUwdCh0LGUsbixpLHIpe2NvbnN0IG89bmV3ICRRdCgwKTtsZXQgYSxzLGw9MCxjPW51bGwsdT0wLGg9bnVsbDtmdW5jdGlvbiBkKHQsZSl7bi5idWZmZXJzLmNvbG9yLnNldENsZWFyKHQucix0LmcsdC5iLGUscil9cmV0dXJue2dldENsZWFyQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gb30sc2V0Q2xlYXJDb2xvcjpmdW5jdGlvbih0LGU9MSl7by5zZXQodCksbD1lLGQobyxsKX0sZ2V0Q2xlYXJBbHBoYTpmdW5jdGlvbigpe3JldHVybiBsfSxzZXRDbGVhckFscGhhOmZ1bmN0aW9uKHQpe2w9dCxkKG8sbCl9LHJlbmRlcjpmdW5jdGlvbiBwKG4scil7bGV0IHA9ITEsZj0hMD09PXIuaXNTY2VuZT9yLmJhY2tncm91bmQ6bnVsbDtmJiZmLmlzVGV4dHVyZSYmKGY9ZS5nZXQoZikpO2NvbnN0IG09dC54cixnPW0uZ2V0U2Vzc2lvbiYmbS5nZXRTZXNzaW9uKCk7ZyYmImFkZGl0aXZlIj09PWcuZW52aXJvbm1lbnRCbGVuZE1vZGUmJihmPW51bGwpLG51bGw9PT1mP2QobyxsKTpmJiZmLmlzQ29sb3ImJihkKGYsMSkscD0hMCksKHQuYXV0b0NsZWFyfHxwKSYmdC5jbGVhcih0LmF1dG9DbGVhckNvbG9yLHQuYXV0b0NsZWFyRGVwdGgsdC5hdXRvQ2xlYXJTdGVuY2lsKSxmJiYoZi5pc0N1YmVUZXh0dXJlfHxmLm1hcHBpbmc9PT1ZS3QpPyh2b2lkIDA9PT1zJiYocz1uZXcgQjF0KG5ldyBGMXQoMSwxLDEpLG5ldyBHMXQoe25hbWU6IkJhY2tncm91bmRDdWJlTWF0ZXJpYWwiLHVuaWZvcm1zOlYxdChjMHQuY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOmMwdC5jdWJlLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpjMHQuY3ViZS5mcmFnbWVudFNoYWRlcixzaWRlOjEsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLHMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgidXYiKSxzLm9uQmVmb3JlUmVuZGVyPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLm1hdHJpeFdvcmxkLmNvcHlQb3NpdGlvbihuLm1hdHJpeFdvcmxkKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHMubWF0ZXJpYWwsImVudk1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLmVudk1hcC52YWx1ZX19KSxpLnVwZGF0ZShzKSkscy5tYXRlcmlhbC51bmlmb3Jtcy5lbnZNYXAudmFsdWU9ZixzLm1hdGVyaWFsLnVuaWZvcm1zLmZsaXBFbnZNYXAudmFsdWU9Zi5pc0N1YmVUZXh0dXJlJiYhMT09PWYuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPy0xOjEsYz09PWYmJnU9PT1mLnZlcnNpb24mJmg9PT10LnRvbmVNYXBwaW5nfHwocy5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxjPWYsdT1mLnZlcnNpb24saD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQocyxzLmdlb21ldHJ5LHMubWF0ZXJpYWwsMCwwLG51bGwpKTpmJiZmLmlzVGV4dHVyZSYmKHZvaWQgMD09PWEmJihhPW5ldyBCMXQobmV3IGEwdCgyLDIpLG5ldyBHMXQoe25hbWU6IkJhY2tncm91bmRNYXRlcmlhbCIsdW5pZm9ybXM6VjF0KGMwdC5iYWNrZ3JvdW5kLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6YzB0LmJhY2tncm91bmQudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOmMwdC5iYWNrZ3JvdW5kLmZyYWdtZW50U2hhZGVyLHNpZGU6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksYS5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLm1hdGVyaWFsLCJtYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy50MkQudmFsdWV9fSksaS51cGRhdGUoYSkpLGEubWF0ZXJpYWwudW5pZm9ybXMudDJELnZhbHVlPWYsITA9PT1mLm1hdHJpeEF1dG9VcGRhdGUmJmYudXBkYXRlTWF0cml4KCksYS5tYXRlcmlhbC51bmlmb3Jtcy51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KGYubWF0cml4KSxjPT09ZiYmdT09PWYudmVyc2lvbiYmaD09PXQudG9uZU1hcHBpbmd8fChhLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLGM9Zix1PWYudmVyc2lvbixoPXQudG9uZU1hcHBpbmcpLG4udW5zaGlmdChhLGEuZ2VvbWV0cnksYS5tYXRlcmlhbCwwLDAsbnVsbCkpfX19ZnVuY3Rpb24gaDB0KHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLG89aS5pc1dlYkdMMj9udWxsOmUuZ2V0KCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLGE9aS5pc1dlYkdMMnx8bnVsbCE9PW8scz17fSxsPWQobnVsbCk7bGV0IGM9bDtmdW5jdGlvbiB1KGUpe3JldHVybiBpLmlzV2ViR0wyP3QuYmluZFZlcnRleEFycmF5KGUpOm8uYmluZFZlcnRleEFycmF5T0VTKGUpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGkuaXNXZWJHTDI/dC5kZWxldGVWZXJ0ZXhBcnJheShlKTpvLmRlbGV0ZVZlcnRleEFycmF5T0VTKGUpfWZ1bmN0aW9uIGQodCl7Y29uc3QgZT1bXSxuPVtdLGk9W107Zm9yKGxldCB0PTA7dDxyO3QrKyllW3RdPTAsblt0XT0wLGlbdF09MDtyZXR1cm57Z2VvbWV0cnk6bnVsbCxwcm9ncmFtOm51bGwsd2lyZWZyYW1lOiExLG5ld0F0dHJpYnV0ZXM6ZSxlbmFibGVkQXR0cmlidXRlczpuLGF0dHJpYnV0ZURpdmlzb3JzOmksb2JqZWN0OnQsYXR0cmlidXRlczp7fSxpbmRleDpudWxsfX1mdW5jdGlvbiBwKCl7Y29uc3QgdD1jLm5ld0F0dHJpYnV0ZXM7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV09MH1mdW5jdGlvbiBmKHQpe20odCwwKX1mdW5jdGlvbiBtKG4scil7Y29uc3Qgbz1jLmVuYWJsZWRBdHRyaWJ1dGVzLGE9Yy5hdHRyaWJ1dGVEaXZpc29ycztjLm5ld0F0dHJpYnV0ZXNbbl09MSwwPT09b1tuXSYmKHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobiksb1tuXT0xKSxhW25dIT09ciYmKChpLmlzV2ViR0wyP3Q6ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbaS5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKG4sciksYVtuXT1yKX1mdW5jdGlvbiBnKCl7Y29uc3QgZT1jLm5ld0F0dHJpYnV0ZXMsbj1jLmVuYWJsZWRBdHRyaWJ1dGVzO2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldIT09ZVtpXSYmKHQuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGkpLG5baV09MCl9ZnVuY3Rpb24gXyhlLG4scixvLGEscyl7ITAhPT1pLmlzV2ViR0wyfHw1MTI0IT09ciYmNTEyNSE9PXI/dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGUsbixyLG8sYSxzKTp0LnZlcnRleEF0dHJpYklQb2ludGVyKGUsbixyLGEscyl9ZnVuY3Rpb24geSgpe3YoKSxjIT09bCYmKGM9bCx1KGMub2JqZWN0KSl9ZnVuY3Rpb24gdigpe2wuZ2VvbWV0cnk9bnVsbCxsLnByb2dyYW09bnVsbCxsLndpcmVmcmFtZT0hMX1yZXR1cm57c2V0dXA6ZnVuY3Rpb24gYihyLGwsaCx5LHYpe2xldCBiPSExO2lmKGEpe2NvbnN0IGU9KGZ1bmN0aW9uIHgoZSxuLHIpe2NvbnN0IGE9ITA9PT1yLndpcmVmcmFtZTtsZXQgbD1zW2UuaWRdO3ZvaWQgMD09PWwmJihsPXt9LHNbZS5pZF09bCk7bGV0IGM9bFtuLmlkXTt2b2lkIDA9PT1jJiYoYz17fSxsW24uaWRdPWMpO2xldCB1PWNbYV07cmV0dXJuIHZvaWQgMD09PXUmJih1PWQoKGZ1bmN0aW9uIGgoKXtyZXR1cm4gaS5pc1dlYkdMMj90LmNyZWF0ZVZlcnRleEFycmF5KCk6by5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpfSkoKSksY1thXT11KSx1fSkoeSxoLGwpO2MhPT1lJiYoYz1lLHUoYy5vYmplY3QpKSxiPShmdW5jdGlvbiB3KHQsZSl7Y29uc3Qgbj1jLmF0dHJpYnV0ZXMsaT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPW5bdF0sbz1pW3RdO2lmKHZvaWQgMD09PWUpcmV0dXJuITA7aWYoZS5hdHRyaWJ1dGUhPT1vKXJldHVybiEwO2lmKGUuZGF0YSE9PW8uZGF0YSlyZXR1cm4hMDtyKyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PXJ8fGMuaW5kZXghPT1lfSkoeSx2KSxiJiYoZnVuY3Rpb24gUyh0LGUpe2NvbnN0IG49e30saT10LmF0dHJpYnV0ZXM7bGV0IHI9MDtmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPWlbdF0sbz17fTtvLmF0dHJpYnV0ZT1lLGUuZGF0YSYmKG8uZGF0YT1lLmRhdGEpLG5bdF09byxyKyt9Yy5hdHRyaWJ1dGVzPW4sYy5hdHRyaWJ1dGVzTnVtPXIsYy5pbmRleD1lfSkoeSx2KX1lbHNle2NvbnN0IHQ9ITA9PT1sLndpcmVmcmFtZTtjLmdlb21ldHJ5PT09eS5pZCYmYy5wcm9ncmFtPT09aC5pZCYmYy53aXJlZnJhbWU9PT10fHwoYy5nZW9tZXRyeT15LmlkLGMucHJvZ3JhbT1oLmlkLGMud2lyZWZyYW1lPXQsYj0hMCl9ITA9PT1yLmlzSW5zdGFuY2VkTWVzaCYmKGI9ITApLG51bGwhPT12JiZuLnVwZGF0ZSh2LDM0OTYzKSxiJiYoKGZ1bmN0aW9uIE0ocixvLGEscyl7aWYoITE9PT1pLmlzV2ViR0wyJiYoci5pc0luc3RhbmNlZE1lc2h8fHMuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSkmJm51bGw9PT1lLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKXJldHVybjtwKCk7Y29uc3QgbD1zLmF0dHJpYnV0ZXMsYz1hLmdldEF0dHJpYnV0ZXMoKSx1PW8uZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcztmb3IoY29uc3QgZSBpbiBjKXtjb25zdCBpPWNbZV07aWYoaT49MCl7Y29uc3Qgbz1sW2VdO2lmKHZvaWQgMCE9PW8pe2NvbnN0IGU9by5ub3JtYWxpemVkLHI9by5pdGVtU2l6ZSxhPW4uZ2V0KG8pO2lmKHZvaWQgMD09PWEpY29udGludWU7Y29uc3QgbD1hLmJ1ZmZlcixjPWEudHlwZSx1PWEuYnl0ZXNQZXJFbGVtZW50O2lmKG8uaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3Qgbj1vLmRhdGEsYT1uLnN0cmlkZSxoPW8ub2Zmc2V0O24mJm4uaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj8obShpLG4ubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9bi5tZXNoUGVyQXR0cmlidXRlKm4uY291bnQpKTpmKGkpLHQuYmluZEJ1ZmZlcigzNDk2MixsKSxfKGkscixjLGUsYSp1LGgqdSl9ZWxzZSBvLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPyhtKGksby5tZXNoUGVyQXR0cmlidXRlKSx2b2lkIDA9PT1zLl9tYXhJbnN0YW5jZUNvdW50JiYocy5fbWF4SW5zdGFuY2VDb3VudD1vLm1lc2hQZXJBdHRyaWJ1dGUqby5jb3VudCkpOmYoaSksdC5iaW5kQnVmZmVyKDM0OTYyLGwpLF8oaSxyLGMsZSwwLDApfWVsc2UgaWYoImluc3RhbmNlTWF0cml4Ij09PWUpe2NvbnN0IGU9bi5nZXQoci5pbnN0YW5jZU1hdHJpeCk7aWYodm9pZCAwPT09ZSljb250aW51ZTtjb25zdCBvPWUuYnVmZmVyLGE9ZS50eXBlO20oaSswLDEpLG0oaSsxLDEpLG0oaSsyLDEpLG0oaSszLDEpLHQuYmluZEJ1ZmZlcigzNDk2MixvKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSswLDQsYSwhMSw2NCwwKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSsxLDQsYSwhMSw2NCwxNiksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMiw0LGEsITEsNjQsMzIpLHQudmVydGV4QXR0cmliUG9pbnRlcihpKzMsNCxhLCExLDY0LDQ4KX1lbHNlIGlmKCJpbnN0YW5jZUNvbG9yIj09PWUpe2NvbnN0IGU9bi5nZXQoci5pbnN0YW5jZUNvbG9yKTtpZih2b2lkIDA9PT1lKWNvbnRpbnVlO2NvbnN0IG89ZS5idWZmZXIsYT1lLnR5cGU7bShpLDEpLHQuYmluZEJ1ZmZlcigzNDk2MixvKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSwzLGEsITEsMTIsMCl9ZWxzZSBpZih2b2lkIDAhPT11KXtjb25zdCBuPXVbZV07aWYodm9pZCAwIT09bilzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMjp0LnZlcnRleEF0dHJpYjJmdihpLG4pO2JyZWFrO2Nhc2UgMzp0LnZlcnRleEF0dHJpYjNmdihpLG4pO2JyZWFrO2Nhc2UgNDp0LnZlcnRleEF0dHJpYjRmdihpLG4pO2JyZWFrO2RlZmF1bHQ6dC52ZXJ0ZXhBdHRyaWIxZnYoaSxuKX19fX1nKCl9KShyLGwsaCx5KSxudWxsIT09diYmdC5iaW5kQnVmZmVyKDM0OTYzLG4uZ2V0KHYpLmJ1ZmZlcikpfSxyZXNldDp5LHJlc2V0RGVmYXVsdFN0YXRlOnYsZGlzcG9zZTpmdW5jdGlvbiB4KCl7eSgpO2Zvcihjb25zdCB0IGluIHMpe2NvbnN0IGU9c1t0XTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbiloKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0XX19LHJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5OmZ1bmN0aW9uIHcodCl7aWYodm9pZCAwPT09c1t0LmlkXSlyZXR1cm47Y29uc3QgZT1zW3QuaWRdO2Zvcihjb25zdCB0IGluIGUpe2NvbnN0IG49ZVt0XTtmb3IoY29uc3QgdCBpbiBuKWgoblt0XS5vYmplY3QpLGRlbGV0ZSBuW3RdO2RlbGV0ZSBlW3RdfWRlbGV0ZSBzW3QuaWRdfSxyZWxlYXNlU3RhdGVzT2ZQcm9ncmFtOmZ1bmN0aW9uIFModCl7Zm9yKGNvbnN0IGUgaW4gcyl7Y29uc3Qgbj1zW2VdO2lmKHZvaWQgMD09PW5bdC5pZF0pY29udGludWU7Y29uc3QgaT1uW3QuaWRdO2Zvcihjb25zdCB0IGluIGkpaChpW3RdLm9iamVjdCksZGVsZXRlIGlbdF07ZGVsZXRlIG5bdC5pZF19fSxpbml0QXR0cmlidXRlczpwLGVuYWJsZUF0dHJpYnV0ZTpmLGRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzOmd9fWZ1bmN0aW9uIGQwdCh0LGUsbixpKXtjb25zdCByPWkuaXNXZWJHTDI7bGV0IG87dGhpcy5zZXRNb2RlPWZ1bmN0aW9uIGEodCl7bz10fSx0aGlzLnJlbmRlcj1mdW5jdGlvbiBzKGUsaSl7dC5kcmF3QXJyYXlzKG8sZSxpKSxuLnVwZGF0ZShpLG8sMSl9LHRoaXMucmVuZGVySW5zdGFuY2VzPWZ1bmN0aW9uIGwoaSxhLHMpe2lmKDA9PT1zKXJldHVybjtsZXQgbCxjO2lmKHIpbD10LGM9ImRyYXdBcnJheXNJbnN0YW5jZWQiO2Vsc2UgaWYobD1lLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGM9ImRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PWwpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7bFtjXShvLGksYSxzKSxuLnVwZGF0ZShhLG8scyl9fWZ1bmN0aW9uIHAwdCh0LGUsbil7bGV0IGk7ZnVuY3Rpb24gcihlKXtpZigiaGlnaHAiPT09ZSl7aWYodC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzgpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzOCkucHJlY2lzaW9uPjApcmV0dXJuImhpZ2hwIjtlPSJtZWRpdW1wIn1yZXR1cm4ibWVkaXVtcCI9PT1lJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzNykucHJlY2lzaW9uPjAmJnQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM3KS5wcmVjaXNpb24+MD8ibWVkaXVtcCI6Imxvd3AifWNvbnN0IG89InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiZ0IGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dHx8InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0O2xldCBhPXZvaWQgMCE9PW4ucHJlY2lzaW9uP24ucHJlY2lzaW9uOiJoaWdocCI7Y29uc3Qgcz1yKGEpO3MhPT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiIsYSwibm90IHN1cHBvcnRlZCwgdXNpbmciLHMsImluc3RlYWQuIiksYT1zKTtjb25zdCBsPW98fGUuaGFzKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKSxjPSEwPT09bi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyLHU9dC5nZXRQYXJhbWV0ZXIoMzQ5MzApLGg9dC5nZXRQYXJhbWV0ZXIoMzU2NjApLGQ9dC5nZXRQYXJhbWV0ZXIoMzM3OSkscD10LmdldFBhcmFtZXRlcigzNDA3NiksZj10LmdldFBhcmFtZXRlcigzNDkyMSksbT10LmdldFBhcmFtZXRlcigzNjM0NyksZz10LmdldFBhcmFtZXRlcigzNjM0OCksXz10LmdldFBhcmFtZXRlcigzNjM0OSkseT1oPjAsdj1vfHxlLmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKTtyZXR1cm57aXNXZWJHTDI6byxkcmF3QnVmZmVyczpsLGdldE1heEFuaXNvdHJvcHk6ZnVuY3Rpb24gYigpe2lmKHZvaWQgMCE9PWkpcmV0dXJuIGk7aWYoITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IG49ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2k9dC5nZXRQYXJhbWV0ZXIobi5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpfWVsc2UgaT0wO3JldHVybiBpfSxnZXRNYXhQcmVjaXNpb246cixwcmVjaXNpb246YSxsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmMsbWF4VGV4dHVyZXM6dSxtYXhWZXJ0ZXhUZXh0dXJlczpoLG1heFRleHR1cmVTaXplOmQsbWF4Q3ViZW1hcFNpemU6cCxtYXhBdHRyaWJ1dGVzOmYsbWF4VmVydGV4VW5pZm9ybXM6bSxtYXhWYXJ5aW5nczpnLG1heEZyYWdtZW50VW5pZm9ybXM6Xyx2ZXJ0ZXhUZXh0dXJlczp5LGZsb2F0RnJhZ21lbnRUZXh0dXJlczp2LGZsb2F0VmVydGV4VGV4dHVyZXM6eSYmdixtYXhTYW1wbGVzOm8/dC5nZXRQYXJhbWV0ZXIoMzYxODMpOjB9fWZ1bmN0aW9uIGYwdCh0KXtjb25zdCBlPXRoaXM7bGV0IG49bnVsbCxpPTAscj0hMSxvPSExO2NvbnN0IGE9bmV3IHQwdCxzPW5ldyBnSnQsbD17dmFsdWU6bnVsbCxuZWVkc1VwZGF0ZTohMX07ZnVuY3Rpb24gYygpe2wudmFsdWUhPT1uJiYobC52YWx1ZT1uLGwubmVlZHNVcGRhdGU9aT4wKSxlLm51bVBsYW5lcz1pLGUubnVtSW50ZXJzZWN0aW9uPTB9ZnVuY3Rpb24gdSh0LG4saSxyKXtjb25zdCBvPW51bGwhPT10P3QubGVuZ3RoOjA7bGV0IGM9bnVsbDtpZigwIT09byl7aWYoYz1sLnZhbHVlLCEwIT09cnx8bnVsbD09PWMpe2NvbnN0IGU9aSs0Km8scj1uLm1hdHJpeFdvcmxkSW52ZXJzZTtzLmdldE5vcm1hbE1hdHJpeChyKSwobnVsbD09PWN8fGMubGVuZ3RoPGUpJiYoYz1uZXcgRmxvYXQzMkFycmF5KGUpKTtmb3IobGV0IGU9MCxuPWk7ZSE9PW87KytlLG4rPTQpYS5jb3B5KHRbZV0pLmFwcGx5TWF0cml4NChyLHMpLGEubm9ybWFsLnRvQXJyYXkoYyxuKSxjW24rM109YS5jb25zdGFudH1sLnZhbHVlPWMsbC5uZWVkc1VwZGF0ZT0hMH1yZXR1cm4gZS5udW1QbGFuZXM9byxlLm51bUludGVyc2VjdGlvbj0wLGN9dGhpcy51bmlmb3JtPWwsdGhpcy5udW1QbGFuZXM9MCx0aGlzLm51bUludGVyc2VjdGlvbj0wLHRoaXMuaW5pdD1mdW5jdGlvbih0LGUsbyl7Y29uc3QgYT0wIT09dC5sZW5ndGh8fGV8fDAhPT1pfHxyO3JldHVybiByPWUsbj11KHQsbywwKSxpPXQubGVuZ3RoLGF9LHRoaXMuYmVnaW5TaGFkb3dzPWZ1bmN0aW9uKCl7bz0hMCx1KG51bGwpfSx0aGlzLmVuZFNoYWRvd3M9ZnVuY3Rpb24oKXtvPSExLGMoKX0sdGhpcy5zZXRTdGF0ZT1mdW5jdGlvbihlLGEscyl7Y29uc3QgaD1lLmNsaXBwaW5nUGxhbmVzLGQ9ZS5jbGlwSW50ZXJzZWN0aW9uLHA9ZS5jbGlwU2hhZG93cyxmPXQuZ2V0KGUpO2lmKCFyfHxudWxsPT09aHx8MD09PWgubGVuZ3RofHxvJiYhcClvP3UobnVsbCk6YygpO2Vsc2V7Y29uc3QgdD1vPzA6aSxlPTQqdDtsZXQgcj1mLmNsaXBwaW5nU3RhdGV8fG51bGw7bC52YWx1ZT1yLHI9dShoLGEsZSxzKTtmb3IobGV0IHQ9MDt0IT09ZTsrK3Qpclt0XT1uW3RdO2YuY2xpcHBpbmdTdGF0ZT1yLHRoaXMubnVtSW50ZXJzZWN0aW9uPWQ/dGhpcy5udW1QbGFuZXM6MCx0aGlzLm51bVBsYW5lcys9dH19fWZ1bmN0aW9uIG0wdCh0KXtsZXQgZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGU9PT1XS3Q/dC5tYXBwaW5nPWpLdDplPT09cUt0JiYodC5tYXBwaW5nPUdLdCksdH1mdW5jdGlvbiBpKHQpe2NvbnN0IG49dC50YXJnZXQ7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKTtjb25zdCByPWUuZ2V0KG4pO3ZvaWQgMCE9PXImJihlLmRlbGV0ZShuKSxyLmRpc3Bvc2UoKSl9cmV0dXJue2dldDpmdW5jdGlvbiByKG8pe2lmKG8mJm8uaXNUZXh0dXJlJiYhMT09PW8uaXNSZW5kZXJUYXJnZXRUZXh0dXJlKXtjb25zdCByPW8ubWFwcGluZztpZihyPT09V0t0fHxyPT09cUt0KXtpZihlLmhhcyhvKSlyZXR1cm4gbihlLmdldChvKS50ZXh0dXJlLG8ubWFwcGluZyk7e2NvbnN0IHI9by5pbWFnZTtpZihyJiZyLmhlaWdodD4wKXtjb25zdCBhPXQuZ2V0UmVuZGVyVGFyZ2V0KCkscz1uZXcgSzF0KHIuaGVpZ2h0LzIpO3JldHVybiBzLmZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsbyksZS5zZXQobyxzKSx0LnNldFJlbmRlclRhcmdldChhKSxvLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGkpLG4ocy50ZXh0dXJlLG8ubWFwcGluZyl9cmV0dXJuIG51bGx9fX1yZXR1cm4gb30sZGlzcG9zZTpmdW5jdGlvbiBvKCl7ZT1uZXcgV2Vha01hcH19fWMwdC5waHlzaWNhbD17dW5pZm9ybXM6VTF0KFtjMHQuc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBtSnQoMSwxKX0sY2xlYXJjb2F0Tm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxzaGVlbjp7dmFsdWU6bmV3ICRRdCgwKX0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgbUp0fSx0cmFuc21pc3Npb25TYW1wbGVyTWFwOnt2YWx1ZTpudWxsfSx0aGlja25lc3M6e3ZhbHVlOjB9LHRoaWNrbmVzc01hcDp7dmFsdWU6bnVsbH0sYXR0ZW51YXRpb25EaXN0YW5jZTp7dmFsdWU6MH0sYXR0ZW51YXRpb25UaW50Ont2YWx1ZTpuZXcgJFF0KDApfSxzcGVjdWxhckludGVuc2l0eTp7dmFsdWU6MH0sc3BlY3VsYXJJbnRlbnNpdHlNYXA6e3ZhbHVlOm51bGx9LHNwZWN1bGFyVGludDp7dmFsdWU6bmV3ICRRdCgxLDEsMSl9LHNwZWN1bGFyVGludE1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOnMwdC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpzMHQubWVzaHBoeXNpY2FsX2ZyYWd9O2NsYXNzIGcwdCBleHRlbmRzIFcxdHtjb25zdHJ1Y3Rvcih0PS0xLGU9MSxuPTEsaT0tMSxyPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9bix0aGlzLmJvdHRvbT1pLHRoaXMubmVhcj1yLHRoaXMuZmFyPW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy50b3A9dC50b3AsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLnpvb209dC56b29tLHRoaXMudmlldz1udWxsPT09dC52aWV3P251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXN9c2V0Vmlld09mZnNldCh0LGUsbixpLHIsbyl7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1pLHRoaXMudmlldy53aWR0aD1yLHRoaXMudmlldy5oZWlnaHQ9byx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxuPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixpPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMjtsZXQgcj1uLXQsbz1uK3QsYT1pK2Uscz1pLWU7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS90aGlzLnZpZXcuZnVsbFdpZHRoL3RoaXMuem9vbSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmZ1bGxIZWlnaHQvdGhpcy56b29tO3IrPXQqdGhpcy52aWV3Lm9mZnNldFgsbz1yK3QqdGhpcy52aWV3LndpZHRoLGEtPWUqdGhpcy52aWV3Lm9mZnNldFkscz1hLWUqdGhpcy52aWV3LmhlaWdodH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhyLG8sYSxzLHRoaXMubmVhcix0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxlLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LGUub2JqZWN0LnRvcD10aGlzLnRvcCxlLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZX19ZzB0LnByb3RvdHlwZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT0hMDtjbGFzcyBfMHQgZXh0ZW5kcyBHMXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50eXBlPSJSYXdTaGFkZXJNYXRlcmlhbCJ9fV8wdC5wcm90b3R5cGUuaXNSYXdTaGFkZXJNYXRlcmlhbD0hMDtjb25zdCB5MHQ9TWF0aC5wb3coMiw4KSx2MHQ9Wy4xMjUsLjIxNSwuMzUsLjQ0NiwuNTI2LC41ODJdLGIwdD01K3YwdC5sZW5ndGgseDB0PXtbTlp0XTowLFtJWnRdOjEsW09adF06Mixbelp0XTozLFtEWnRdOjQsW0JadF06NSxbUlp0XTo2fSx3MHQ9bmV3IEtRdCh7c2lkZToxLGRlcHRoV3JpdGU6ITEsZGVwdGhUZXN0OiExfSksUzB0PW5ldyBCMXQobmV3IEYxdCx3MHQpLE0wdD1uZXcgZzB0LHtfbG9kUGxhbmVzOkUwdCxfc2l6ZUxvZHM6VDB0LF9zaWdtYXM6QzB0fT16MHQoKSxBMHQ9bmV3ICRRdDtsZXQgazB0PW51bGw7Y29uc3QgTDB0PSgxK01hdGguc3FydCg1KSkvMixQMHQ9MS9MMHQsTjB0PVtuZXcgQ0p0KDEsMSwxKSxuZXcgQ0p0KC0xLDEsMSksbmV3IENKdCgxLDEsLTEpLG5ldyBDSnQoLTEsMSwtMSksbmV3IENKdCgwLEwwdCxQMHQpLG5ldyBDSnQoMCxMMHQsLVAwdCksbmV3IENKdChQMHQsMCxMMHQpLG5ldyBDSnQoLVAwdCwwLEwwdCksbmV3IENKdChMMHQsUDB0LDApLG5ldyBDSnQoLUwwdCxQMHQsMCldO2Z1bmN0aW9uIEkwdCh0KXtjb25zdCBlPU1hdGgubWF4KHQucix0LmcsdC5iKSxuPU1hdGgubWluKE1hdGgubWF4KE1hdGguY2VpbChNYXRoLmxvZzIoZSkpLC0xMjgpLDEyNyk7cmV0dXJuIHQubXVsdGlwbHlTY2FsYXIoTWF0aC5wb3coMiwtbikpLChuKzEyOCkvMjU1fWNsYXNzIFIwdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW51bGwsdGhpcy5fYmx1ck1hdGVyaWFsPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KSxuPW5ldyBDSnQoMCwxLDApO3JldHVybiBuZXcgXzB0KHtuYW1lOiJTcGhlcmljYWxHYXVzc2lhbkJsdXIiLGRlZmluZXM6e246dH0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6ZX0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOm59LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOngwdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6eDB0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0YXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cdFx0YXR0cmlidXRlIHZlYzIgdXY7XG5cdFx0YXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDtcblxuXHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0Ly8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvblxuXHRcdHZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkge1xuXG5cdFx0XHR1diA9IDIuMCAqIHV2IC0gMS4wO1xuXG5cdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTtcblxuXHRcdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHpcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh5ICo9IC0xLjA7IC8vICggLXUsIC0xLCB2ICkgbmVnIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpcmVjdGlvbjtcblxuXHRcdH1cblxuXHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0dk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApO1xuXHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cblx0XHR9XG5cdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gaW50IHNhbXBsZXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IHdlaWdodHNbIG4gXTtcblx0XHRcdHVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZFRoZXRhO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBtaXBJbnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzMgcG9sZUF4aXM7XG5cblx0XHRcdFxuXG5cdFx0dW5pZm9ybSBpbnQgaW5wdXRFbmNvZGluZztcblx0XHR1bmlmb3JtIGludCBvdXRwdXRFbmNvZGluZztcblxuXHRcdCNpbmNsdWRlIDxlbmNvZGluZ3NfcGFyc19mcmFnbWVudD5cblxuXHRcdHZlYzQgaW5wdXRUZXhlbFRvTGluZWFyKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIGlucHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gc1JHQlRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkVUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRFRvTGluZWFyKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gR2FtbWFUb0xpbmVhciggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGxpbmVhclRvT3V0cHV0VGV4ZWwoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvc1JHQiggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JFKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkQoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb0dhbW1hKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgZW52TWFwVGV4ZWxUb0xpbmVhciggdmVjNCBjb2xvciApIHtcblxuXHRcdFx0cmV0dXJuIGlucHV0VGV4ZWxUb0xpbmVhciggY29sb3IgKTtcblxuXHRcdH1cblx0XG5cblx0XHRcdCNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdFx0I2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cblxuXHRcdFx0dmVjMyBnZXRTYW1wbGUoIGZsb2F0IHRoZXRhLCB2ZWMzIGF4aXMgKSB7XG5cblx0XHRcdFx0ZmxvYXQgY29zVGhldGEgPSBjb3MoIHRoZXRhICk7XG5cdFx0XHRcdC8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvblxuXHRcdFx0XHR2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YVxuXHRcdFx0XHRcdCsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKVxuXHRcdFx0XHRcdCsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApO1xuXG5cdFx0XHRcdHJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHR2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0aWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7XG5cblx0XHRcdFx0XHRheGlzID0gdmVjMyggdk91dHB1dERpcmVjdGlvbi56LCAwLjAsIC0gdk91dHB1dERpcmVjdGlvbi54ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGF4aXMgPSBub3JtYWxpemUoIGF4aXMgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHtcblxuXHRcdFx0XHRcdGlmICggaSA+PSBzYW1wbGVzICkge1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9KSgyMCksdGhpcy5fZXF1aXJlY3RTaGFkZXI9bnVsbCx0aGlzLl9jdWJlbWFwU2hhZGVyPW51bGwsdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2JsdXJNYXRlcmlhbCl9ZnJvbVNjZW5lKHQsZT0wLG49LjEsaT0xMDApe2swdD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCByPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cygpO3JldHVybiB0aGlzLl9zY2VuZVRvQ3ViZVVWKHQsbixpLHIpLGU+MCYmdGhpcy5fYmx1cihyLDAsMCxlKSx0aGlzLl9hcHBseVBNUkVNKHIpLHRoaXMuX2NsZWFudXAocikscn1mcm9tRXF1aXJlY3Rhbmd1bGFyKHQpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0KX1mcm9tQ3ViZW1hcCh0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9Y29tcGlsZUN1YmVtYXBTaGFkZXIoKXtudWxsPT09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9RjB0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2N1YmVtYXBTaGFkZXIpKX1jb21waWxlRXF1aXJlY3Rhbmd1bGFyU2hhZGVyKCl7bnVsbD09PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9SDB0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2VxdWlyZWN0U2hhZGVyKSl9ZGlzcG9zZSgpe3RoaXMuX2JsdXJNYXRlcmlhbC5kaXNwb3NlKCksbnVsbCE9PXRoaXMuX2N1YmVtYXBTaGFkZXImJnRoaXMuX2N1YmVtYXBTaGFkZXIuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9lcXVpcmVjdFNoYWRlciYmdGhpcy5fZXF1aXJlY3RTaGFkZXIuZGlzcG9zZSgpO2ZvcihsZXQgdD0wO3Q8RTB0Lmxlbmd0aDt0KyspRTB0W3RdLmRpc3Bvc2UoKX1fY2xlYW51cCh0KXt0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldC5kaXNwb3NlKCksdGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KGswdCksdC5zY2lzc29yVGVzdD0hMSxCMHQodCwwLDAsdC53aWR0aCx0LmhlaWdodCl9X2Zyb21UZXh0dXJlKHQpe2swdD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCBlPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsZSksdGhpcy5fYXBwbHlQTVJFTShlKSx0aGlzLl9jbGVhbnVwKGUpLGV9X2FsbG9jYXRlVGFyZ2V0cyh0KXtjb25zdCBlPXttYWdGaWx0ZXI6Skt0LG1pbkZpbHRlcjpKS3QsZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6clp0LGZvcm1hdDoxMDIzLGVuY29kaW5nOk8wdCh0KT90LmVuY29kaW5nOk9adCxkZXB0aEJ1ZmZlcjohMX0sbj1EMHQoZSk7cmV0dXJuIG4uZGVwdGhCdWZmZXI9IXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9RDB0KGUpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtjb25zdCBlPW5ldyBCMXQoRTB0WzBdLHQpO3RoaXMuX3JlbmRlcmVyLmNvbXBpbGUoZSxNMHQpfV9zY2VuZVRvQ3ViZVVWKHQsZSxuLGkpe2NvbnN0IHI9bmV3IHExdCg5MCwxLGUsbiksbz1bMSwtMSwxLDEsMSwxXSxhPVsxLDEsMSwtMSwtMSwtMV0scz10aGlzLl9yZW5kZXJlcixsPXMuYXV0b0NsZWFyLGM9cy5vdXRwdXRFbmNvZGluZyx1PXMudG9uZU1hcHBpbmc7cy5nZXRDbGVhckNvbG9yKEEwdCkscy50b25lTWFwcGluZz0wLHMub3V0cHV0RW5jb2Rpbmc9Tlp0LHMuYXV0b0NsZWFyPSExO2xldCBoPSExO2NvbnN0IGQ9dC5iYWNrZ3JvdW5kO2lmKGQpe2lmKGQuaXNDb2xvcil7dzB0LmNvbG9yLmNvcHkoZCkuY29udmVydFNSR0JUb0xpbmVhcigpLHQuYmFja2dyb3VuZD1udWxsO2NvbnN0IGU9STB0KHcwdC5jb2xvcik7dzB0Lm9wYWNpdHk9ZSxoPSEwfX1lbHNle3cwdC5jb2xvci5jb3B5KEEwdCkuY29udmVydFNSR0JUb0xpbmVhcigpO2NvbnN0IHQ9STB0KHcwdC5jb2xvcik7dzB0Lm9wYWNpdHk9dCxoPSEwfWZvcihsZXQgZT0wO2U8NjtlKyspe2NvbnN0IG49ZSUzOzA9PW4/KHIudXAuc2V0KDAsb1tlXSwwKSxyLmxvb2tBdChhW2VdLDAsMCkpOjE9PW4/KHIudXAuc2V0KDAsMCxvW2VdKSxyLmxvb2tBdCgwLGFbZV0sMCkpOihyLnVwLnNldCgwLG9bZV0sMCksci5sb29rQXQoMCwwLGFbZV0pKSxCMHQoaSxuKnkwdCxlPjI/eTB0OjAseTB0LHkwdCkscy5zZXRSZW5kZXJUYXJnZXQoaSksaCYmcy5yZW5kZXIoUzB0LHIpLHMucmVuZGVyKHQscil9cy50b25lTWFwcGluZz11LHMub3V0cHV0RW5jb2Rpbmc9YyxzLmF1dG9DbGVhcj1sfV90ZXh0dXJlVG9DdWJlVVYodCxlKXtjb25zdCBuPXRoaXMuX3JlbmRlcmVyO3QuaXNDdWJlVGV4dHVyZT9udWxsPT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1GMHQoKSk6bnVsbD09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1IMHQoKSk7Y29uc3QgaT10LmlzQ3ViZVRleHR1cmU/dGhpcy5fY3ViZW1hcFNoYWRlcjp0aGlzLl9lcXVpcmVjdFNoYWRlcixyPW5ldyBCMXQoRTB0WzBdLGkpLG89aS51bmlmb3JtcztvLmVudk1hcC52YWx1ZT10LHQuaXNDdWJlVGV4dHVyZXx8by50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxvLmlucHV0RW5jb2RpbmcudmFsdWU9eDB0W3QuZW5jb2RpbmddLG8ub3V0cHV0RW5jb2RpbmcudmFsdWU9eDB0W2UudGV4dHVyZS5lbmNvZGluZ10sQjB0KGUsMCwwLDMqeTB0LDIqeTB0KSxuLnNldFJlbmRlclRhcmdldChlKSxuLnJlbmRlcihyLE0wdCl9X2FwcGx5UE1SRU0odCl7Y29uc3QgZT10aGlzLl9yZW5kZXJlcixuPWUuYXV0b0NsZWFyO2UuYXV0b0NsZWFyPSExO2ZvcihsZXQgZT0xO2U8YjB0O2UrKyl7Y29uc3Qgbj1NYXRoLnNxcnQoQzB0W2VdKkMwdFtlXS1DMHRbZS0xXSpDMHRbZS0xXSk7dGhpcy5fYmx1cih0LGUtMSxlLG4sTjB0WyhlLTEpJU4wdC5sZW5ndGhdKX1lLmF1dG9DbGVhcj1ufV9ibHVyKHQsZSxuLGkscil7Y29uc3Qgbz10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LG8sZSxuLGksImxhdGl0dWRpbmFsIixyKSx0aGlzLl9oYWxmQmx1cihvLHQsbixuLGksImxvbmdpdHVkaW5hbCIscil9X2hhbGZCbHVyKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9dGhpcy5fcmVuZGVyZXIsbD10aGlzLl9ibHVyTWF0ZXJpYWw7ImxhdGl0dWRpbmFsIiE9PW8mJiJsb25naXR1ZGluYWwiIT09byYmY29uc29sZS5lcnJvcigiYmx1ciBkaXJlY3Rpb24gbXVzdCBiZSBlaXRoZXIgbGF0aXR1ZGluYWwgb3IgbG9uZ2l0dWRpbmFsISIpO2NvbnN0IGM9bmV3IEIxdChFMHRbaV0sbCksdT1sLnVuaWZvcm1zLGg9VDB0W25dLTEsZD1pc0Zpbml0ZShyKT9NYXRoLlBJLygyKmgpOjIqTWF0aC5QSS8zOSxwPXIvZCxmPWlzRmluaXRlKHIpPzErTWF0aC5mbG9vcigzKnApOjIwO2Y+MjAmJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke3J9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7Zn0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAyMGApO2NvbnN0IG09W107bGV0IGc9MDtmb3IobGV0IHQ9MDt0PDIwOysrdCl7Y29uc3QgZT10L3Asbj1NYXRoLmV4cCgtZSplLzIpO20ucHVzaChuKSwwPT10P2crPW46dDxmJiYoZys9MipuKX1mb3IobGV0IHQ9MDt0PG0ubGVuZ3RoO3QrKyltW3RdPW1bdF0vZzt1LmVudk1hcC52YWx1ZT10LnRleHR1cmUsdS5zYW1wbGVzLnZhbHVlPWYsdS53ZWlnaHRzLnZhbHVlPW0sdS5sYXRpdHVkaW5hbC52YWx1ZT0ibGF0aXR1ZGluYWwiPT09byxhJiYodS5wb2xlQXhpcy52YWx1ZT1hKSx1LmRUaGV0YS52YWx1ZT1kLHUubWlwSW50LnZhbHVlPTgtbix1LmlucHV0RW5jb2RpbmcudmFsdWU9eDB0W3QudGV4dHVyZS5lbmNvZGluZ10sdS5vdXRwdXRFbmNvZGluZy52YWx1ZT14MHRbdC50ZXh0dXJlLmVuY29kaW5nXTtjb25zdCBfPVQwdFtpXTtCMHQoZSwzKk1hdGgubWF4KDAseTB0LTIqXyksKDA9PT1pPzA6Mip5MHQpKzIqXyooaT40P2ktOCs0OjApLDMqXywyKl8pLHMuc2V0UmVuZGVyVGFyZ2V0KGUpLHMucmVuZGVyKGMsTTB0KX19ZnVuY3Rpb24gTzB0KHQpe3JldHVybiB2b2lkIDAhPT10JiZ0LnR5cGU9PT1yWnQmJih0LmVuY29kaW5nPT09Tlp0fHx0LmVuY29kaW5nPT09SVp0fHx0LmVuY29kaW5nPT09Ulp0KX1mdW5jdGlvbiB6MHQoKXtjb25zdCB0PVtdLGU9W10sbj1bXTtsZXQgaT04O2ZvcihsZXQgcj0wO3I8YjB0O3IrKyl7Y29uc3Qgbz1NYXRoLnBvdygyLGkpO2UucHVzaChvKTtsZXQgYT0xL287cj40P2E9djB0W3ItOCs0LTFdOjA9PXImJihhPTApLG4ucHVzaChhKTtjb25zdCBzPTEvKG8tMSksbD0tcy8yLGM9MStzLzIsdT1bbCxsLGMsbCxjLGMsbCxsLGMsYyxsLGNdLGg9NixkPTYscD0zLGY9MixtPTEsZz1uZXcgRmxvYXQzMkFycmF5KHAqZCpoKSxfPW5ldyBGbG9hdDMyQXJyYXkoZipkKmgpLHk9bmV3IEZsb2F0MzJBcnJheShtKmQqaCk7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgZT10JTMqMi8zLTEsbj10PjI/MDotMTtnLnNldChbZSxuLDAsZSsyLzMsbiwwLGUrMi8zLG4rMSwwLGUsbiwwLGUrMi8zLG4rMSwwLGUsbisxLDBdLHAqZCp0KSxfLnNldCh1LGYqZCp0KSx5LnNldChbdCx0LHQsdCx0LHRdLG0qZCp0KX1jb25zdCB2PW5ldyBiMXQ7di5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUVF0KGcscCkpLHYuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFFRdChfLGYpKSx2LnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgUVF0KHksbSkpLHQucHVzaCh2KSxpPjQmJmktLX1yZXR1cm57X2xvZFBsYW5lczp0LF9zaXplTG9kczplLF9zaWdtYXM6bn19ZnVuY3Rpb24gRDB0KHQpe2NvbnN0IGU9bmV3IFNKdCgzKnkwdCwzKnkwdCx0KTtyZXR1cm4gZS50ZXh0dXJlLm1hcHBpbmc9WUt0LGUudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLGUuc2Npc3NvclRlc3Q9ITAsZX1mdW5jdGlvbiBCMHQodCxlLG4saSxyKXt0LnZpZXdwb3J0LnNldChlLG4saSxyKSx0LnNjaXNzb3Iuc2V0KGUsbixpLHIpfWZ1bmN0aW9uIEgwdCgpe2NvbnN0IHQ9bmV3IG1KdCgxLDEpO3JldHVybiBuZXcgXzB0KHtuYW1lOiJFcXVpcmVjdGFuZ3VsYXJUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sdGV4ZWxTaXplOnt2YWx1ZTp0fSxpbnB1dEVuY29kaW5nOnt2YWx1ZTp4MHRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOngwdFszZTNdfX0sdmVydGV4U2hhZGVyOiJcblxuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXHRcdGF0dHJpYnV0ZSB2ZWMyIHV2O1xuXHRcdGF0dHJpYnV0ZSBmbG9hdCBmYWNlSW5kZXg7XG5cblx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdC8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb25cblx0XHR2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHtcblxuXHRcdFx0dXYgPSAyLjAgKiB1diAtIDEuMDtcblxuXHRcdFx0dmVjMyBkaXJlY3Rpb24gPSB2ZWMzKCB1diwgMS4wICk7XG5cblx0XHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLXUsIDEsIC12ICkgcG9zIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC0xLCB2LCAtdSApIG5lZyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi56ICo9IC0xLjA7IC8vICggdSwgdiwgLTEgKSBuZWcgelxuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkaXJlY3Rpb247XG5cblx0XHR9XG5cblx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdHZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTtcblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xuXG5cdFx0fVxuXHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdFx0XHR1bmlmb3JtIHZlYzIgdGV4ZWxTaXplO1xuXG5cdFx0XHRcblxuXHRcdHVuaWZvcm0gaW50IGlucHV0RW5jb2Rpbmc7XG5cdFx0dW5pZm9ybSBpbnQgb3V0cHV0RW5jb2Rpbmc7XG5cblx0XHQjaW5jbHVkZSA8ZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ+XG5cblx0XHR2ZWM0IGlucHV0VGV4ZWxUb0xpbmVhciggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBpbnB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHNSR0JUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JFVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkRUb0xpbmVhciggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIEdhbW1hVG9MaW5lYXIoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBsaW5lYXJUb091dHB1dFRleGVsKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIG91dHB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb3NSR0IoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRSggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JEKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9HYW1tYSggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGVudk1hcFRleGVsVG9MaW5lYXIoIHZlYzQgY29sb3IgKSB7XG5cblx0XHRcdHJldHVybiBpbnB1dFRleGVsVG9MaW5lYXIoIGNvbG9yICk7XG5cblx0XHR9XG5cdFxuXG5cdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cblx0XHRcdFx0dmVjMyBvdXRwdXREaXJlY3Rpb24gPSBub3JtYWxpemUoIHZPdXRwdXREaXJlY3Rpb24gKTtcblx0XHRcdFx0dmVjMiB1diA9IGVxdWlyZWN0VXYoIG91dHB1dERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAvIHRleGVsU2l6ZSAtIDAuNSApO1xuXHRcdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0XHR2ZWMzIHRsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54ICs9IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di55ICs9IHRleGVsU2l6ZS55O1xuXHRcdFx0XHR2ZWMzIGJyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXHRcdFx0XHR1di54IC09IHRleGVsU2l6ZS54O1xuXHRcdFx0XHR2ZWMzIGJsID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEICggZW52TWFwLCB1diApICkucmdiO1xuXG5cdFx0XHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0XHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHQiLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBGMHQoKXtyZXR1cm4gbmV3IF8wdCh7bmFtZToiQ3ViZW1hcFRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxpbnB1dEVuY29kaW5nOnt2YWx1ZTp4MHRbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOngwdFszZTNdfX0sdmVydGV4U2hhZGVyOiJcblxuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXHRcdGF0dHJpYnV0ZSB2ZWMyIHV2O1xuXHRcdGF0dHJpYnV0ZSBmbG9hdCBmYWNlSW5kZXg7XG5cblx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdC8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb25cblx0XHR2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHtcblxuXHRcdFx0dXYgPSAyLjAgKiB1diAtIDEuMDtcblxuXHRcdFx0dmVjMyBkaXJlY3Rpb24gPSB2ZWMzKCB1diwgMS4wICk7XG5cblx0XHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLXUsIDEsIC12ICkgcG9zIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC0xLCB2LCAtdSApIG5lZyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi56ICo9IC0xLjA7IC8vICggdSwgdiwgLTEgKSBuZWcgelxuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkaXJlY3Rpb247XG5cblx0XHR9XG5cblx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdHZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTtcblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xuXG5cdFx0fVxuXHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblxuXHRcdFx0XG5cblx0XHR1bmlmb3JtIGludCBpbnB1dEVuY29kaW5nO1xuXHRcdHVuaWZvcm0gaW50IG91dHB1dEVuY29kaW5nO1xuXG5cdFx0I2luY2x1ZGUgPGVuY29kaW5nc19wYXJzX2ZyYWdtZW50PlxuXG5cdFx0dmVjNCBpbnB1dFRleGVsVG9MaW5lYXIoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggaW5wdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBzUkdCVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRVRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JEVG9MaW5lYXIoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBHYW1tYVRvTGluZWFyKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgbGluZWFyVG9PdXRwdXRUZXhlbCggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBvdXRwdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9zUkdCKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkUoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRCggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvR2FtbWEoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBlbnZNYXBUZXhlbFRvTGluZWFyKCB2ZWM0IGNvbG9yICkge1xuXG5cdFx0XHRyZXR1cm4gaW5wdXRUZXhlbFRvTGluZWFyKCBjb2xvciApO1xuXG5cdFx0fVxuXHRcblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggLSB2T3V0cHV0RGlyZWN0aW9uLngsIHZPdXRwdXREaXJlY3Rpb24ueXogKSApICkucmdiO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcblxuXHRcdFx0fVxuXHRcdCIsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIFYwdCh0KXtsZXQgZT1uZXcgV2Vha01hcCxuPW51bGw7ZnVuY3Rpb24gaSh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSk7Y29uc3Qgcj1lLmdldChuKTt2b2lkIDAhPT1yJiYoci5kZWxldGUobiksci5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gcihvKXtpZihvJiZvLmlzVGV4dHVyZSYmITE9PT1vLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3Qgcj1vLm1hcHBpbmcsYT1yPT09V0t0fHxyPT09cUt0LHM9cj09PWpLdHx8cj09PUdLdDtpZihhfHxzKXtpZihlLmhhcyhvKSlyZXR1cm4gZS5nZXQobykudGV4dHVyZTt7Y29uc3Qgcj1vLmltYWdlO2lmKGEmJnImJnIuaGVpZ2h0PjB8fHMmJnImJihmdW5jdGlvbiBhKHQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjw2O24rKyl2b2lkIDAhPT10W25dJiZlKys7cmV0dXJuIDY9PT1lfSkocikpe2NvbnN0IHI9dC5nZXRSZW5kZXJUYXJnZXQoKTtudWxsPT09biYmKG49bmV3IFIwdCh0KSk7Y29uc3Qgcz1hP24uZnJvbUVxdWlyZWN0YW5ndWxhcihvKTpuLmZyb21DdWJlbWFwKG8pO3JldHVybiBlLnNldChvLHMpLHQuc2V0UmVuZGVyVGFyZ2V0KHIpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSkscy50ZXh0dXJlfXJldHVybiBudWxsfX19cmV0dXJuIG99LGRpc3Bvc2U6ZnVuY3Rpb24gbygpe2U9bmV3IFdlYWtNYXAsbnVsbCE9PW4mJihuLmRpc3Bvc2UoKSxuPW51bGwpfX19ZnVuY3Rpb24gVTB0KHQpe2NvbnN0IGU9e307ZnVuY3Rpb24gbihuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2xldCBpO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOmk9dC5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjppPXQuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjppPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6aT10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDppPXQuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiBlW25dPWksaX1yZXR1cm57aGFzOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bih0KX0saW5pdDpmdW5jdGlvbih0KXt0LmlzV2ViR0wyP24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToobigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG4oIk9FU190ZXh0dXJlX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiksbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLG4oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxuKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxuKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKX0sZ2V0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9bih0KTtyZXR1cm4gbnVsbD09PWUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0KyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIiksZX19fWZ1bmN0aW9uIGowdCh0LGUsbixpKXtjb25zdCByPXt9LG89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBzPXQudGFyZ2V0O251bGwhPT1zLmluZGV4JiZlLnJlbW92ZShzLmluZGV4KTtmb3IoY29uc3QgdCBpbiBzLmF0dHJpYnV0ZXMpZS5yZW1vdmUocy5hdHRyaWJ1dGVzW3RdKTtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGRlbGV0ZSByW3MuaWRdO2NvbnN0IGw9by5nZXQocyk7bCYmKGUucmVtb3ZlKGwpLG8uZGVsZXRlKHMpKSxpLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHMpLCEwPT09cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5JiZkZWxldGUgcy5fbWF4SW5zdGFuY2VDb3VudCxuLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyh0KXtjb25zdCBuPVtdLGk9dC5pbmRleCxyPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtsZXQgYT0wO2lmKG51bGwhPT1pKXtjb25zdCB0PWkuYXJyYXk7YT1pLnZlcnNpb247Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSs9Myl7Y29uc3QgaT10W2UrMF0scj10W2UrMV0sbz10W2UrMl07bi5wdXNoKGkscixyLG8sbyxpKX19ZWxzZXthPXIudmVyc2lvbjtmb3IobGV0IHQ9MCxlPXIuYXJyYXkubGVuZ3RoLzMtMTt0PGU7dCs9Myl7Y29uc3QgZT10KzAsaT10KzEscj10KzI7bi5wdXNoKGUsaSxpLHIscixlKX19Y29uc3Qgcz1uZXcodTF0KG4pPjY1NTM1P2ExdDpyMXQpKG4sMSk7cy52ZXJzaW9uPWE7Y29uc3QgbD1vLmdldCh0KTtsJiZlLnJlbW92ZShsKSxvLnNldCh0LHMpfXJldHVybntnZXQ6ZnVuY3Rpb24gbCh0LGUpe3JldHVybiEwPT09cltlLmlkXXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSkscltlLmlkXT0hMCxuLm1lbW9yeS5nZW9tZXRyaWVzKyspLGV9LHVwZGF0ZTpmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG4pZS51cGRhdGUoblt0XSwzNDk2Mik7Y29uc3QgaT10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBuPWlbdF07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKWUudXBkYXRlKG5bdF0sMzQ5NjIpfX0sZ2V0V2lyZWZyYW1lQXR0cmlidXRlOmZ1bmN0aW9uIHUodCl7Y29uc3QgZT1vLmdldCh0KTtpZihlKXtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJmUudmVyc2lvbjxuLnZlcnNpb24mJnModCl9ZWxzZSBzKHQpO3JldHVybiBvLmdldCh0KX19fWZ1bmN0aW9uIEcwdCh0LGUsbixpKXtjb25zdCByPWkuaXNXZWJHTDI7bGV0IG8sYSxzO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBsKHQpe289dH0sdGhpcy5zZXRJbmRleD1mdW5jdGlvbiBjKHQpe2E9dC50eXBlLHM9dC5ieXRlc1BlckVsZW1lbnR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHUoZSxpKXt0LmRyYXdFbGVtZW50cyhvLGksYSxlKnMpLG4udXBkYXRlKGksbywxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gaChpLGwsYyl7aWYoMD09PWMpcmV0dXJuO2xldCB1LGg7aWYocil1PXQsaD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKHU9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxoPSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PXUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3VbaF0obyxsLGEsaSpzLGMpLG4udXBkYXRlKGwsbyxjKX19ZnVuY3Rpb24gVzB0KHQpe2NvbnN0IGU9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24gbigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH0sdXBkYXRlOmZ1bmN0aW9uIGkodCxuLHIpe3N3aXRjaChlLmNhbGxzKyssbil7Y2FzZSA0OmUudHJpYW5nbGVzKz1yKih0LzMpO2JyZWFrO2Nhc2UgMTplLmxpbmVzKz1yKih0LzIpO2JyZWFrO2Nhc2UgMzplLmxpbmVzKz1yKih0LTEpO2JyZWFrO2Nhc2UgMjplLmxpbmVzKz1yKnQ7YnJlYWs7Y2FzZSAwOmUucG9pbnRzKz1yKnQ7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZm86IFVua25vd24gZHJhdyBtb2RlOiIsbil9fX19ZnVuY3Rpb24gcTB0KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBZMHQodCxlKXtyZXR1cm4gTWF0aC5hYnMoZVsxXSktTWF0aC5hYnModFsxXSl9ZnVuY3Rpb24gWDB0KHQpe2NvbnN0IGU9e30sbj1uZXcgRmxvYXQzMkFycmF5KDgpLGk9W107Zm9yKGxldCB0PTA7dDw4O3QrKylpW3RdPVt0LDBdO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24gcihvLGEscyxsKXtjb25zdCBjPW8ubW9ycGhUYXJnZXRJbmZsdWVuY2VzLHU9dm9pZCAwPT09Yz8wOmMubGVuZ3RoO2xldCBoPWVbYS5pZF07aWYodm9pZCAwPT09aHx8aC5sZW5ndGghPT11KXtoPVtdO2ZvcihsZXQgdD0wO3Q8dTt0KyspaFt0XT1bdCwwXTtlW2EuaWRdPWh9Zm9yKGxldCB0PTA7dDx1O3QrKyl7Y29uc3QgZT1oW3RdO2VbMF09dCxlWzFdPWNbdF19aC5zb3J0KFkwdCk7Zm9yKGxldCB0PTA7dDw4O3QrKyl0PHUmJmhbdF1bMV0/KGlbdF1bMF09aFt0XVswXSxpW3RdWzFdPWhbdF1bMV0pOihpW3RdWzBdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGlbdF1bMV09MCk7aS5zb3J0KHEwdCk7Y29uc3QgZD1hLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixwPWEubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtsZXQgZj0wO2ZvcihsZXQgdD0wO3Q8ODt0Kyspe2NvbnN0IGU9aVt0XSxyPWVbMF0sbz1lWzFdO3IhPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmbz8oZCYmYS5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSE9PWRbcl0mJmEuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCxkW3JdKSxwJiZhLmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpIT09cFtyXSYmYS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0LHBbcl0pLG5bdF09byxmKz1vKTooZCYmITA9PT1hLmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpJiZhLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpLHAmJiEwPT09YS5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSYmYS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSxuW3RdPTApfWNvbnN0IG09YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtZjtsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixtKSxsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixuKX19fWZ1bmN0aW9uICQwdCh0LGUsbixpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuLnJlbW92ZShlLmluc3RhbmNlTWF0cml4KSxudWxsIT09ZS5pbnN0YW5jZUNvbG9yJiZuLnJlbW92ZShlLmluc3RhbmNlQ29sb3IpfXJldHVybnt1cGRhdGU6ZnVuY3Rpb24gYSh0KXtjb25zdCBhPWkucmVuZGVyLmZyYW1lLHM9ZS5nZXQodCx0Lmdlb21ldHJ5KTtyZXR1cm4gci5nZXQocykhPT1hJiYoZS51cGRhdGUocyksci5zZXQocyxhKSksdC5pc0luc3RhbmNlZE1lc2gmJighMT09PXQuaGFzRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbykmJnQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbi51cGRhdGUodC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbnVsbCE9PXQuaW5zdGFuY2VDb2xvciYmbi51cGRhdGUodC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksc30sZGlzcG9zZTpmdW5jdGlvbiBzKCl7cj1uZXcgV2Vha01hcH19fWNsYXNzIEswdCBleHRlbmRzIGJKdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPUpLdCx0aGlzLm1pbkZpbHRlcj1KS3QsdGhpcy53cmFwUj1LS3QsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fUswdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTJEQXJyYXk9ITA7Y2xhc3MgWjB0IGV4dGVuZHMgYkp0e2NvbnN0cnVjdG9yKHQ9bnVsbCxlPTEsbj0xLGk9MSl7c3VwZXIobnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6aX0sdGhpcy5tYWdGaWx0ZXI9Skt0LHRoaXMubWluRmlsdGVyPUpLdCx0aGlzLndyYXBSPUtLdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTEsdGhpcy5uZWVkc1VwZGF0ZT0hMH19WjB0LnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlM0Q9ITA7Y29uc3QgSjB0PW5ldyBiSnQsUTB0PW5ldyBLMHQsdDJ0PW5ldyBaMHQsZTJ0PW5ldyAkMXQsbjJ0PVtdLGkydD1bXSxyMnQ9bmV3IEZsb2F0MzJBcnJheSgxNiksbzJ0PW5ldyBGbG9hdDMyQXJyYXkoOSksYTJ0PW5ldyBGbG9hdDMyQXJyYXkoNCk7ZnVuY3Rpb24gczJ0KHQsZSxuKXtjb25zdCBpPXRbMF07aWYoaTw9MHx8aT4wKXJldHVybiB0O2NvbnN0IHI9ZSpuO2xldCBvPW4ydFtyXTtpZih2b2lkIDA9PT1vJiYobz1uZXcgRmxvYXQzMkFycmF5KHIpLG4ydFtyXT1vKSwwIT09ZSl7aS50b0FycmF5KG8sMCk7Zm9yKGxldCBpPTEscj0wO2khPT1lOysraSlyKz1uLHRbaV0udG9BcnJheShvLHIpfXJldHVybiBvfWZ1bmN0aW9uIGwydCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGMydCh0LGUpe2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7bjxpO24rKyl0W25dPWVbbl19ZnVuY3Rpb24gdTJ0KHQsZSl7bGV0IG49aTJ0W2VdO3ZvaWQgMD09PW4mJihuPW5ldyBJbnQzMkFycmF5KGUpLGkydFtlXT1uKTtmb3IobGV0IGk9MDtpIT09ZTsrK2kpbltpXT10LmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtyZXR1cm4gbn1mdW5jdGlvbiBoMnQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7blswXSE9PWUmJih0LnVuaWZvcm0xZih0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBkMnQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnl8fCh0LnVuaWZvcm0yZih0aGlzLmFkZHIsZS54LGUueSksblswXT1lLngsblsxXT1lLnkpO2Vsc2V7aWYobDJ0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsZSksYzJ0KG4sZSl9fWZ1bmN0aW9uIHAydCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1lLngpblswXT09PWUueCYmblsxXT09PWUueSYmblsyXT09PWUuenx8KHQudW5pZm9ybTNmKHRoaXMuYWRkcixlLngsZS55LGUueiksblswXT1lLngsblsxXT1lLnksblsyXT1lLnopO2Vsc2UgaWYodm9pZCAwIT09ZS5yKW5bMF09PT1lLnImJm5bMV09PT1lLmcmJm5bMl09PT1lLmJ8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS5yLGUuZyxlLmIpLG5bMF09ZS5yLG5bMV09ZS5nLG5bMl09ZS5iKTtlbHNle2lmKGwydChuLGUpKXJldHVybjt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLGUpLGMydChuLGUpfX1mdW5jdGlvbiBmMnQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnomJm5bM109PT1lLnd8fCh0LnVuaWZvcm00Zih0aGlzLmFkZHIsZS54LGUueSxlLnosZS53KSxuWzBdPWUueCxuWzFdPWUueSxuWzJdPWUueixuWzNdPWUudyk7ZWxzZXtpZihsMnQobixlKSlyZXR1cm47dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixlKSxjMnQobixlKX19ZnVuY3Rpb24gbTJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihsMnQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxlKSxjMnQobixlKX1lbHNle2lmKGwydChuLGkpKXJldHVybjthMnQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsYTJ0KSxjMnQobixpKX19ZnVuY3Rpb24gZzJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihsMnQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxlKSxjMnQobixlKX1lbHNle2lmKGwydChuLGkpKXJldHVybjtvMnQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsbzJ0KSxjMnQobixpKX19ZnVuY3Rpb24gXzJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlLGk9ZS5lbGVtZW50cztpZih2b2lkIDA9PT1pKXtpZihsMnQobixlKSlyZXR1cm47dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxlKSxjMnQobixlKX1lbHNle2lmKGwydChuLGkpKXJldHVybjtyMnQuc2V0KGkpLHQudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEscjJ0KSxjMnQobixpKX19ZnVuY3Rpb24geTJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gdjJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2wydChuLGUpfHwodC51bmlmb3JtMml2KHRoaXMuYWRkcixlKSxjMnQobixlKSl9ZnVuY3Rpb24gYjJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2wydChuLGUpfHwodC51bmlmb3JtM2l2KHRoaXMuYWRkcixlKSxjMnQobixlKSl9ZnVuY3Rpb24geDJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2wydChuLGUpfHwodC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKSxjMnQobixlKSl9ZnVuY3Rpb24gdzJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMXVpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIFMydCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtsMnQobixlKXx8KHQudW5pZm9ybTJ1aXYodGhpcy5hZGRyLGUpLGMydChuLGUpKX1mdW5jdGlvbiBNMnQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7bDJ0KG4sZSl8fCh0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKSxjMnQobixlKSl9ZnVuY3Rpb24gRTJ0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2wydChuLGUpfHwodC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSksYzJ0KG4sZSkpfWZ1bmN0aW9uIFQydCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlMkQoZXx8SjB0LHIpfWZ1bmN0aW9uIEMydCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNldFRleHR1cmUzRChlfHx0MnQscil9ZnVuY3Rpb24gQTJ0KHQsZSxuKXtjb25zdCBpPXRoaXMuY2FjaGUscj1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtpWzBdIT09ciYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixyKSxpWzBdPXIpLG4uc2FmZVNldFRleHR1cmVDdWJlKGV8fGUydCxyKX1mdW5jdGlvbiBrMnQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zZXRUZXh0dXJlMkRBcnJheShlfHxRMHQscil9ZnVuY3Rpb24gTDJ0KHQsZSl7dC51bmlmb3JtMWZ2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBQMnQodCxlKXtjb25zdCBuPXMydChlLHRoaXMuc2l6ZSwyKTt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIE4ydCh0LGUpe2NvbnN0IG49czJ0KGUsdGhpcy5zaXplLDMpO3QudW5pZm9ybTNmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gSTJ0KHQsZSl7Y29uc3Qgbj1zMnQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBSMnQodCxlKXtjb25zdCBuPXMydChlLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIE8ydCh0LGUpe2NvbnN0IG49czJ0KGUsdGhpcy5zaXplLDkpO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gejJ0KHQsZSl7Y29uc3Qgbj1zMnQoZSx0aGlzLnNpemUsMTYpO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gRDJ0KHQsZSl7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBCMnQodCxlKXt0LnVuaWZvcm0yaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIEgydCh0LGUpe3QudW5pZm9ybTNpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gRjJ0KHQsZSl7dC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBWMnQodCxlKXt0LnVuaWZvcm0xdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBVMnQodCxlKXt0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBqMnQodCxlKXt0LnVuaWZvcm0zdWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBHMnQodCxlKXt0LnVuaWZvcm00dWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBXMnQodCxlLG4pe2NvbnN0IGk9ZS5sZW5ndGgscj11MnQobixpKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCluLnNhZmVTZXRUZXh0dXJlMkQoZVt0XXx8SjB0LHJbdF0pfWZ1bmN0aW9uIHEydCh0LGUsbil7Y29uc3QgaT1lLmxlbmd0aCxyPXUydChuLGkpO3QudW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KW4uc2FmZVNldFRleHR1cmVDdWJlKGVbdF18fGUydCxyW3RdKX1mdW5jdGlvbiBZMnQodCxlLG4pe3RoaXMuaWQ9dCx0aGlzLmFkZHI9bix0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gaDJ0O2Nhc2UgMzU2NjQ6cmV0dXJuIGQydDtjYXNlIDM1NjY1OnJldHVybiBwMnQ7Y2FzZSAzNTY2NjpyZXR1cm4gZjJ0O2Nhc2UgMzU2NzQ6cmV0dXJuIG0ydDtjYXNlIDM1Njc1OnJldHVybiBnMnQ7Y2FzZSAzNTY3NjpyZXR1cm4gXzJ0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiB5MnQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiB2MnQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBiMnQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiB4MnQ7Y2FzZSA1MTI1OnJldHVybiB3MnQ7Y2FzZSAzNjI5NDpyZXR1cm4gUzJ0O2Nhc2UgMzYyOTU6cmV0dXJuIE0ydDtjYXNlIDM2Mjk2OnJldHVybiBFMnQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBUMnQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIEMydDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBBMnQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gazJ0fX0pKGUudHlwZSl9ZnVuY3Rpb24gWDJ0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9ZS5zaXplLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gTDJ0O2Nhc2UgMzU2NjQ6cmV0dXJuIFAydDtjYXNlIDM1NjY1OnJldHVybiBOMnQ7Y2FzZSAzNTY2NjpyZXR1cm4gSTJ0O2Nhc2UgMzU2NzQ6cmV0dXJuIFIydDtjYXNlIDM1Njc1OnJldHVybiBPMnQ7Y2FzZSAzNTY3NjpyZXR1cm4gejJ0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBEMnQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBCMnQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBIMnQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBGMnQ7Y2FzZSA1MTI1OnJldHVybiBWMnQ7Y2FzZSAzNjI5NDpyZXR1cm4gVTJ0O2Nhc2UgMzYyOTU6cmV0dXJuIGoydDtjYXNlIDM2Mjk2OnJldHVybiBHMnQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBXMnQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gcTJ0fX0pKGUudHlwZSl9ZnVuY3Rpb24gJDJ0KHQpe3RoaXMuaWQ9dCx0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1YMnQucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5jYWNoZTt0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZlLmxlbmd0aCE9PXQubGVuZ3RoJiYodGhpcy5jYWNoZT1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKSksYzJ0KGUsdCl9LCQydC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5zZXE7Zm9yKGxldCByPTAsbz1pLmxlbmd0aDtyIT09bzsrK3Ipe2NvbnN0IG89aVtyXTtvLnNldFZhbHVlKHQsZVtvLmlkXSxuKX19O2NvbnN0IEsydD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24gWjJ0KHQsZSl7dC5zZXEucHVzaChlKSx0Lm1hcFtlLmlkXT1lfWZ1bmN0aW9uIEoydCh0LGUsbil7Y29uc3QgaT10Lm5hbWUscj1pLmxlbmd0aDtmb3IoSzJ0Lmxhc3RJbmRleD0wOzspe2NvbnN0IG89SzJ0LmV4ZWMoaSksYT1LMnQubGFzdEluZGV4O2xldCBzPW9bMV07Y29uc3QgbD1vWzNdO2lmKCJdIj09PW9bMl0mJihzfD0wKSx2b2lkIDA9PT1sfHwiWyI9PT1sJiZhKzI9PT1yKXtaMnQobix2b2lkIDA9PT1sP25ldyBZMnQocyx0LGUpOm5ldyBYMnQocyx0LGUpKTticmVha317bGV0IHQ9bi5tYXBbc107dm9pZCAwPT09dCYmKHQ9bmV3ICQydChzKSxaMnQobix0KSksbj10fX19ZnVuY3Rpb24gUTJ0KHQsZSl7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307Y29uc3Qgbj10LmdldFByb2dyYW1QYXJhbWV0ZXIoZSwzNTcxOCk7Zm9yKGxldCBpPTA7aTxuOysraSl7Y29uc3Qgbj10LmdldEFjdGl2ZVVuaWZvcm0oZSxpKTtKMnQobix0LmdldFVuaWZvcm1Mb2NhdGlvbihlLG4ubmFtZSksdGhpcyl9fWZ1bmN0aW9uIHQ1dCh0LGUsbil7Y29uc3QgaT10LmNyZWF0ZVNoYWRlcihlKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2UoaSxuKSx0LmNvbXBpbGVTaGFkZXIoaSksaX1RMnQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5tYXBbZV07dm9pZCAwIT09ciYmci5zZXRWYWx1ZSh0LG4saSl9LFEydC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9ZVtuXTt2b2lkIDAhPT1pJiZ0aGlzLnNldFZhbHVlKHQsbixpKX0sUTJ0LnVwbG9hZD1mdW5jdGlvbih0LGUsbixpKXtmb3IobGV0IHI9MCxvPWUubGVuZ3RoO3IhPT1vOysrcil7Y29uc3Qgbz1lW3JdLGE9bltvLmlkXTshMSE9PWEubmVlZHNVcGRhdGUmJm8uc2V0VmFsdWUodCxhLnZhbHVlLGkpfX0sUTJ0LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpIT09cjsrK2kpe2NvbnN0IHI9dFtpXTtyLmlkIGluIGUmJm4ucHVzaChyKX1yZXR1cm4gbn07bGV0IGU1dD0wO2Z1bmN0aW9uIG41dCh0KXtzd2l0Y2godCl7Y2FzZSBOWnQ6cmV0dXJuWyJMaW5lYXIiLCIoIHZhbHVlICkiXTtjYXNlIEladDpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtjYXNlIE9adDpyZXR1cm5bIlJHQkUiLCIoIHZhbHVlICkiXTtjYXNlIHpadDpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCA3LjAgKSJdO2Nhc2UgRFp0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgQlp0OnJldHVyblsiUkdCRCIsIiggdmFsdWUsIDI1Ni4wICkiXTtjYXNlIFJadDpyZXR1cm5bIkdhbW1hIiwiKCB2YWx1ZSwgZmxvYXQoIEdBTU1BX0ZBQ1RPUiApICkiXTtjYXNlIDMwMDM6cmV0dXJuWyJMb2dMdXYiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6Iix0KSxbIkxpbmVhciIsIiggdmFsdWUgKSJdfX1mdW5jdGlvbiBpNXQodCxlLG4pe2NvbnN0IGk9dC5nZXRTaGFkZXJQYXJhbWV0ZXIoZSwzNTcxMykscj10LmdldFNoYWRlckluZm9Mb2coZSkudHJpbSgpO3JldHVybiBpJiYiIj09PXI/IiI6IlRIUkVFLldlYkdMU2hhZGVyOiBnbC5nZXRTaGFkZXJJbmZvTG9nKCkgIituKyJcbiIrcisoZnVuY3Rpb24gbyh0KXtjb25zdCBlPXQuc3BsaXQoIlxuIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT10KzErIjogIitlW3RdO3JldHVybiBlLmpvaW4oIlxuIil9KSh0LmdldFNoYWRlclNvdXJjZShlKSl9ZnVuY3Rpb24gcjV0KHQsZSl7Y29uc3Qgbj1uNXQoZSk7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiAiK25bMF0rIlRvTGluZWFyIituWzFdKyI7IH0ifWZ1bmN0aW9uIG81dCh0LGUpe2NvbnN0IG49bjV0KGUpO3JldHVybiJ2ZWM0ICIrdCsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8iK25bMF0rblsxXSsiOyB9In1mdW5jdGlvbiBhNXQodCxlKXtsZXQgbjtzd2l0Y2goZSl7Y2FzZSAxOm49IkxpbmVhciI7YnJlYWs7Y2FzZSAyOm49IlJlaW5oYXJkIjticmVhaztjYXNlIDM6bj0iT3B0aW1pemVkQ2luZW9uIjticmVhaztjYXNlIDQ6bj0iQUNFU0ZpbG1pYyI7YnJlYWs7Y2FzZSA1Om49IkN1c3RvbSI7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6IixlKSxuPSJMaW5lYXIifXJldHVybiJ2ZWMzICIrdCsiKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gIituKyJUb25lTWFwcGluZyggY29sb3IgKTsgfSJ9ZnVuY3Rpb24gczV0KHQpe3JldHVybiIiIT09dH1mdW5jdGlvbiBsNXQodCxlKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fRElSX0xJR0hUUy9nLGUubnVtRGlyTGlnaHRzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVFMvZyxlLm51bVNwb3RMaWdodHMpLnJlcGxhY2UoL05VTV9SRUNUX0FSRUFfTElHSFRTL2csZS5udW1SZWN0QXJlYUxpZ2h0cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUUy9nLGUubnVtUG9pbnRMaWdodHMpLnJlcGxhY2UoL05VTV9IRU1JX0xJR0hUUy9nLGUubnVtSGVtaUxpZ2h0cykucmVwbGFjZSgvTlVNX0RJUl9MSUdIVF9TSEFET1dTL2csZS5udW1EaXJMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUX1NIQURPV1MvZyxlLm51bVNwb3RMaWdodFNoYWRvd3MpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVF9TSEFET1dTL2csZS5udW1Qb2ludExpZ2h0U2hhZG93cyl9ZnVuY3Rpb24gYzV0KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMpLnJlcGxhY2UoL1VOSU9OX0NMSVBQSU5HX1BMQU5FUy9nLGUubnVtQ2xpcHBpbmdQbGFuZXMtZS5udW1DbGlwSW50ZXJzZWN0aW9uKX1jb25zdCB1NXQ9L15bIFx0XSojaW5jbHVkZSArPChbXHdcZC4vXSspPi9nbTtmdW5jdGlvbiBoNXQodCl7cmV0dXJuIHQucmVwbGFjZSh1NXQsZDV0KX1mdW5jdGlvbiBkNXQodCxlKXtjb25zdCBuPXMwdFtlXTtpZih2b2lkIDA9PT1uKXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwiK2UrIj4iKTtyZXR1cm4gaDV0KG4pfWNvbnN0IHA1dD0vI3ByYWdtYSB1bnJvbGxfbG9vcFtcc10rP2ZvciBcKCBpbnQgaSBcPSAoXGQrKVw7IGkgPCAoXGQrKVw7IGkgXCtcKyBcKSBceyhbXHNcU10rPykoPz1cfSlcfS9nLGY1dD0vI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxzK2ZvclxzKlwoXHMqaW50XHMraVxzKj1ccyooXGQrKVxzKjtccyppXHMqPFxzKihcZCspXHMqO1xzKmlccypcK1wrXHMqXClccyp7KFtcc1xTXSs/KX1ccysjcHJhZ21hIHVucm9sbF9sb29wX2VuZC9nO2Z1bmN0aW9uIG01dCh0KXtyZXR1cm4gdC5yZXBsYWNlKGY1dCxfNXQpLnJlcGxhY2UocDV0LGc1dCl9ZnVuY3Rpb24gZzV0KHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIldlYkdMUHJvZ3JhbTogI3ByYWdtYSB1bnJvbGxfbG9vcCBzaGFkZXIgc3ludGF4IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydCBzeW50YXggaW5zdGVhZC4iKSxfNXQoMCxlLG4saSl9ZnVuY3Rpb24gXzV0KHQsZSxuLGkpe2xldCByPSIiO2ZvcihsZXQgdD1wYXJzZUludChlKTt0PHBhcnNlSW50KG4pO3QrKylyKz1pLnJlcGxhY2UoL1xbXHMqaVxzKlxdL2csIlsgIit0KyIgXSIpLnJlcGxhY2UoL1VOUk9MTEVEX0xPT1BfSU5ERVgvZyx0KTtyZXR1cm4gcn1mdW5jdGlvbiB5NXQodCl7bGV0IGU9InByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgZmxvYXQ7XG5wcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGludDsiO3JldHVybiJoaWdocCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIEhJR0hfUFJFQ0lTSU9OIjoibWVkaXVtcCI9PT10LnByZWNpc2lvbj9lKz0iXG4jZGVmaW5lIE1FRElVTV9QUkVDSVNJT04iOiJsb3dwIj09PXQucHJlY2lzaW9uJiYoZSs9IlxuI2RlZmluZSBMT1dfUFJFQ0lTSU9OIiksZX1mdW5jdGlvbiB2NXQodCxlLG4saSl7Y29uc3Qgcj10LmdldENvbnRleHQoKSxvPW4uZGVmaW5lcztsZXQgYT1uLnZlcnRleFNoYWRlcixzPW4uZnJhZ21lbnRTaGFkZXI7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtsZXQgZT0iU0hBRE9XTUFQX1RZUEVfQkFTSUMiO3JldHVybiAxPT09dC5zaGFkb3dNYXBUeXBlP2U9IlNIQURPV01BUF9UWVBFX1BDRiI6Mj09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6Mz09PXQuc2hhZG93TWFwVHlwZSYmKGU9IlNIQURPV01BUF9UWVBFX1ZTTSIpLGV9KShuKSx1PShmdW5jdGlvbiBoKHQpe2xldCBlPSJFTlZNQVBfVFlQRV9DVUJFIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIGpLdDpjYXNlIEdLdDplPSJFTlZNQVBfVFlQRV9DVUJFIjticmVhaztjYXNlIFlLdDpjYXNlIFhLdDplPSJFTlZNQVBfVFlQRV9DVUJFX1VWIn1yZXR1cm4gZX0pKG4pLGQ9KGZ1bmN0aW9uIHAodCl7bGV0IGU9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2UgR0t0OmNhc2UgWEt0OmU9IkVOVk1BUF9NT0RFX1JFRlJBQ1RJT04ifXJldHVybiBlfSkobiksZj0oZnVuY3Rpb24gbSh0KXtsZXQgZT0iRU5WTUFQX0JMRU5ESU5HX05PTkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmNvbWJpbmUpe2Nhc2UgMDplPSJFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFkiO2JyZWFrO2Nhc2UgMTplPSJFTlZNQVBfQkxFTkRJTkdfTUlYIjticmVhaztjYXNlIDI6ZT0iRU5WTUFQX0JMRU5ESU5HX0FERCJ9cmV0dXJuIGV9KShuKSxnPXQuZ2FtbWFGYWN0b3I+MD90LmdhbW1hRmFjdG9yOjEsXz1uLmlzV2ViR0wyPyIiOihmdW5jdGlvbiB5KHQpe3JldHVyblt0LmV4dGVuc2lvbkRlcml2YXRpdmVzfHx0LmVudk1hcEN1YmVVVnx8dC5idW1wTWFwfHx0LnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8dC5jbGVhcmNvYXROb3JtYWxNYXB8fHQuZmxhdFNoYWRpbmd8fCJwaHlzaWNhbCI9PT10LnNoYWRlcklEPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKHQuZXh0ZW5zaW9uRnJhZ0RlcHRofHx0LmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIix0LmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLCh0LmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fHQuZW52TWFwfHx0LnRyYW5zbWlzc2lvbj4wKSYmdC5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZSI6IiJdLmZpbHRlcihzNXQpLmpvaW4oIlxuIil9KShuKSx2PShmdW5jdGlvbiBiKHQpe2NvbnN0IGU9W107Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgaT10W25dOyExIT09aSYmZS5wdXNoKCIjZGVmaW5lICIrbisiICIraSl9cmV0dXJuIGUuam9pbigiXG4iKX0pKG8pLHg9ci5jcmVhdGVQcm9ncmFtKCk7bGV0IHcsUyxNPW4uZ2xzbFZlcnNpb24/IiN2ZXJzaW9uICIrbi5nbHNsVmVyc2lvbisiXG4iOiIiO24uaXNSYXdTaGFkZXJNYXRlcmlhbD8odz1bdl0uZmlsdGVyKHM1dCkuam9pbigiXG4iKSx3Lmxlbmd0aD4wJiYodys9IlxuIiksUz1bXyx2XS5maWx0ZXIoczV0KS5qb2luKCJcbiIpLFMubGVuZ3RoPjAmJihTKz0iXG4iKSk6KHc9W3k1dChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSx2LG4uaW5zdGFuY2luZz8iI2RlZmluZSBVU0VfSU5TVEFOQ0lORyI6IiIsbi5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkdfQ09MT1IiOiIiLG4uc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2csIiNkZWZpbmUgTUFYX0JPTkVTICIrbi5tYXhCb25lcyxuLnVzZUZvZyYmbi5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsbi51c2VGb2cmJm4uZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsbi5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIitkOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLmRpc3BsYWNlbWVudE1hcCYmbi5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFVTRV9ESVNQTEFDRU1FTlRNQVAiOiIiLG4uc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixuLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsbi5zcGVjdWxhclRpbnRNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSVElOVE1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4udHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLG4udHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLG4udGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLG4uc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixuLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixuLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixuLm1vcnBoTm9ybWFscyYmITE9PT1uLmZsYXRTaGFkaW5nPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLG4uZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixuLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixuLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkciLCJcdGF0dHJpYnV0ZSBtYXQ0IGluc3RhbmNlTWF0cml4OyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUiIsIlx0YXR0cmlidXRlIHZlYzMgaW5zdGFuY2VDb2xvcjsiLCIjZW5kaWYiLCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBub3JtYWw7IiwiYXR0cmlidXRlIHZlYzIgdXY7IiwiI2lmZGVmIFVTRV9UQU5HRU5UIiwiXHRhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKSIsIlx0YXR0cmlidXRlIHZlYzQgY29sb3I7IiwiI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkiLCJcdGF0dHJpYnV0ZSB2ZWMzIGNvbG9yOyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTIiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiXHQjZWxzZSIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NTsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiXHQjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luSW5kZXg7IiwiXHRhdHRyaWJ1dGUgdmVjNCBza2luV2VpZ2h0OyIsIiNlbmRpZiIsIlxuIl0uZmlsdGVyKHM1dCkuam9pbigiXG4iKSxTPVtfLHk1dChuKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK24uc2hhZGVyTmFtZSx2LG4uYWxwaGFUZXN0PyIjZGVmaW5lIEFMUEhBVEVTVCAiK24uYWxwaGFUZXN0KyhuLmFscGhhVGVzdCUxPyIiOiIuMCIpOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2csbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4ubWF0Y2FwPyIjZGVmaW5lIFVTRV9NQVRDQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrdToiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIitmOiIiLG4ubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixuLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsbi5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLG4uYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsbi5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4ub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixuLm5vcm1hbE1hcCYmbi50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsbi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLG4uY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLG4uc3BlY3VsYXJUaW50TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUlRJTlRNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsbi50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnN8fG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixuLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLG4udXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLG4uZ3JhZGllbnRNYXA/IiNkZWZpbmUgVVNFX0dSQURJRU5UTUFQIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5wcmVtdWx0aXBsaWVkQWxwaGE/IiNkZWZpbmUgUFJFTVVMVElQTElFRF9BTFBIQSI6IiIsbi5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz8iI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKG4uZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8bi5lbnZNYXApJiZuLnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2RlZmluZSBURVhUVVJFX0xPRF9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsMCE9PW4udG9uZU1hcHBpbmc/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIiwwIT09bi50b25lTWFwcGluZz9zMHQudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIiwwIT09bi50b25lTWFwcGluZz9hNXQoInRvbmVNYXBwaW5nIixuLnRvbmVNYXBwaW5nKToiIixuLmRpdGhlcmluZz8iI2RlZmluZSBESVRIRVJJTkciOiIiLHMwdC5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxuLm1hcD9yNXQoIm1hcFRleGVsVG9MaW5lYXIiLG4ubWFwRW5jb2RpbmcpOiIiLG4ubWF0Y2FwP3I1dCgibWF0Y2FwVGV4ZWxUb0xpbmVhciIsbi5tYXRjYXBFbmNvZGluZyk6IiIsbi5lbnZNYXA/cjV0KCJlbnZNYXBUZXhlbFRvTGluZWFyIixuLmVudk1hcEVuY29kaW5nKToiIixuLmVtaXNzaXZlTWFwP3I1dCgiZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyIixuLmVtaXNzaXZlTWFwRW5jb2RpbmcpOiIiLG4uc3BlY3VsYXJUaW50TWFwP3I1dCgic3BlY3VsYXJUaW50TWFwVGV4ZWxUb0xpbmVhciIsbi5zcGVjdWxhclRpbnRNYXBFbmNvZGluZyk6IiIsbi5saWdodE1hcD9yNXQoImxpZ2h0TWFwVGV4ZWxUb0xpbmVhciIsbi5saWdodE1hcEVuY29kaW5nKToiIixvNXQoImxpbmVhclRvT3V0cHV0VGV4ZWwiLG4ub3V0cHV0RW5jb2RpbmcpLG4uZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIituLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIoczV0KS5qb2luKCJcbiIpKSxhPWg1dChhKSxhPWw1dChhLG4pLGE9YzV0KGEsbikscz1oNXQocykscz1sNXQocyxuKSxzPWM1dChzLG4pLGE9bTV0KGEpLHM9bTV0KHMpLG4uaXNXZWJHTDImJiEwIT09bi5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoTT0iI3ZlcnNpb24gMzAwIGVzXG4iLHc9WyIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbigiXG4iKSsiXG4iK3csUz1bIiNkZWZpbmUgdmFyeWluZyBpbiIsbi5nbHNsVmVyc2lvbj09PVVadD8iIjoib3V0IGhpZ2hwIHZlYzQgcGNfZnJhZ0NvbG9yOyIsbi5nbHNsVmVyc2lvbj09PVVadD8iIjoiI2RlZmluZSBnbF9GcmFnQ29sb3IgcGNfZnJhZ0NvbG9yIiwiI2RlZmluZSBnbF9GcmFnRGVwdGhFWFQgZ2xfRnJhZ0RlcHRoIiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvaiB0ZXh0dXJlUHJvaiIsIiNkZWZpbmUgdGV4dHVyZTJETG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2QiLCIjZGVmaW5lIHRleHR1cmVDdWJlTG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyREdyYWRFWFQgdGV4dHVyZUdyYWQiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVHcmFkRVhUIHRleHR1cmVHcmFkIl0uam9pbigiXG4iKSsiXG4iK1MpO2NvbnN0IEU9TStTK3MsVD10NXQociwzNTYzMyxNK3crYSksQz10NXQociwzNTYzMixFKTtpZihyLmF0dGFjaFNoYWRlcih4LFQpLHIuYXR0YWNoU2hhZGVyKHgsQyksdm9pZCAwIT09bi5pbmRleDBBdHRyaWJ1dGVOYW1lP3IuYmluZEF0dHJpYkxvY2F0aW9uKHgsMCxuLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09bi5tb3JwaFRhcmdldHMmJnIuYmluZEF0dHJpYkxvY2F0aW9uKHgsMCwicG9zaXRpb24iKSxyLmxpbmtQcm9ncmFtKHgpLHQuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2NvbnN0IHQ9ci5nZXRQcm9ncmFtSW5mb0xvZyh4KS50cmltKCksZT1yLmdldFNoYWRlckluZm9Mb2coVCkudHJpbSgpLG49ci5nZXRTaGFkZXJJbmZvTG9nKEMpLnRyaW0oKTtsZXQgaT0hMCxvPSEwO2lmKCExPT09ci5nZXRQcm9ncmFtUGFyYW1ldGVyKHgsMzU3MTQpKXtpPSExO2NvbnN0IGU9aTV0KHIsVCwidmVydGV4Iiksbj1pNXQocixDLCJmcmFnbWVudCIpO2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogc2hhZGVyIGVycm9yOiAiLHIuZ2V0RXJyb3IoKSwiMzU3MTUiLHIuZ2V0UHJvZ3JhbVBhcmFtZXRlcih4LDM1NzE1KSwiZ2wuZ2V0UHJvZ3JhbUluZm9Mb2ciLHQsZSxuKX1lbHNlIiIhPT10P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBnbC5nZXRQcm9ncmFtSW5mb0xvZygpIix0KToiIiE9PWUmJiIiIT09bnx8KG89ITEpO28mJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTppLHByb2dyYW1Mb2c6dCx2ZXJ0ZXhTaGFkZXI6e2xvZzplLHByZWZpeDp3fSxmcmFnbWVudFNoYWRlcjp7bG9nOm4scHJlZml4OlN9fSl9bGV0IEEsaztyZXR1cm4gci5kZWxldGVTaGFkZXIoVCksci5kZWxldGVTaGFkZXIoQyksdGhpcy5nZXRVbmlmb3Jtcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1BJiYoQT1uZXcgUTJ0KHIseCkpLEF9LHRoaXMuZ2V0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1rJiYoaz0oZnVuY3Rpb24gdChlLG4pe2NvbnN0IGk9e30scj1lLmdldFByb2dyYW1QYXJhbWV0ZXIobiwzNTcyMSk7Zm9yKGxldCB0PTA7dDxyO3QrKyl7Y29uc3Qgcj1lLmdldEFjdGl2ZUF0dHJpYihuLHQpLm5hbWU7aVtyXT1lLmdldEF0dHJpYkxvY2F0aW9uKG4scil9cmV0dXJuIGl9KShyLHgpKSxrfSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpLnJlbGVhc2VTdGF0ZXNPZlByb2dyYW0odGhpcyksci5kZWxldGVQcm9ncmFtKHgpLHRoaXMucHJvZ3JhbT12b2lkIDB9LHRoaXMubmFtZT1uLnNoYWRlck5hbWUsdGhpcy5pZD1lNXQrKyx0aGlzLmNhY2hlS2V5PWUsdGhpcy51c2VkVGltZXM9MSx0aGlzLnByb2dyYW09eCx0aGlzLnZlcnRleFNoYWRlcj1ULHRoaXMuZnJhZ21lbnRTaGFkZXI9Qyx0aGlzfWZ1bmN0aW9uIGI1dCh0LGUsbixpLHIsbyxhKXtjb25zdCBzPVtdLGw9ci5pc1dlYkdMMixjPXIubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcix1PXIuZmxvYXRWZXJ0ZXhUZXh0dXJlcyxoPXIubWF4VmVydGV4VW5pZm9ybXMsZD1yLnZlcnRleFRleHR1cmVzO2xldCBwPXIucHJlY2lzaW9uO2NvbnN0IGY9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifSxtPVsicHJlY2lzaW9uIiwiaXNXZWJHTDIiLCJzdXBwb3J0c1ZlcnRleFRleHR1cmVzIiwib3V0cHV0RW5jb2RpbmciLCJpbnN0YW5jaW5nIiwiaW5zdGFuY2luZ0NvbG9yIiwibWFwIiwibWFwRW5jb2RpbmciLCJtYXRjYXAiLCJtYXRjYXBFbmNvZGluZyIsImVudk1hcCIsImVudk1hcE1vZGUiLCJlbnZNYXBFbmNvZGluZyIsImVudk1hcEN1YmVVViIsImxpZ2h0TWFwIiwibGlnaHRNYXBFbmNvZGluZyIsImFvTWFwIiwiZW1pc3NpdmVNYXAiLCJlbWlzc2l2ZU1hcEVuY29kaW5nIiwiYnVtcE1hcCIsIm5vcm1hbE1hcCIsIm9iamVjdFNwYWNlTm9ybWFsTWFwIiwidGFuZ2VudFNwYWNlTm9ybWFsTWFwIiwiY2xlYXJjb2F0TWFwIiwiY2xlYXJjb2F0Um91Z2huZXNzTWFwIiwiY2xlYXJjb2F0Tm9ybWFsTWFwIiwiZGlzcGxhY2VtZW50TWFwIiwic3BlY3VsYXJNYXAiLCJzcGVjdWxhckludGVuc2l0eU1hcCIsInNwZWN1bGFyVGludE1hcCIsInNwZWN1bGFyVGludE1hcEVuY29kaW5nIiwicm91Z2huZXNzTWFwIiwibWV0YWxuZXNzTWFwIiwiZ3JhZGllbnRNYXAiLCJhbHBoYU1hcCIsImNvbWJpbmUiLCJ2ZXJ0ZXhDb2xvcnMiLCJ2ZXJ0ZXhBbHBoYXMiLCJ2ZXJ0ZXhUYW5nZW50cyIsInZlcnRleFV2cyIsInV2c1ZlcnRleE9ubHkiLCJmb2ciLCJ1c2VGb2ciLCJmb2dFeHAyIiwiZmxhdFNoYWRpbmciLCJzaXplQXR0ZW51YXRpb24iLCJsb2dhcml0aG1pY0RlcHRoQnVmZmVyIiwic2tpbm5pbmciLCJtYXhCb25lcyIsInVzZVZlcnRleFRleHR1cmUiLCJtb3JwaFRhcmdldHMiLCJtb3JwaE5vcm1hbHMiLCJwcmVtdWx0aXBsaWVkQWxwaGEiLCJudW1EaXJMaWdodHMiLCJudW1Qb2ludExpZ2h0cyIsIm51bVNwb3RMaWdodHMiLCJudW1IZW1pTGlnaHRzIiwibnVtUmVjdEFyZWFMaWdodHMiLCJudW1EaXJMaWdodFNoYWRvd3MiLCJudW1Qb2ludExpZ2h0U2hhZG93cyIsIm51bVNwb3RMaWdodFNoYWRvd3MiLCJzaGFkb3dNYXBFbmFibGVkIiwic2hhZG93TWFwVHlwZSIsInRvbmVNYXBwaW5nIiwicGh5c2ljYWxseUNvcnJlY3RMaWdodHMiLCJhbHBoYVRlc3QiLCJkb3VibGVTaWRlZCIsImZsaXBTaWRlZCIsIm51bUNsaXBwaW5nUGxhbmVzIiwibnVtQ2xpcEludGVyc2VjdGlvbiIsImRlcHRoUGFja2luZyIsImRpdGhlcmluZyIsInNoZWVuIiwidHJhbnNtaXNzaW9uIiwidHJhbnNtaXNzaW9uTWFwIiwidGhpY2tuZXNzTWFwIl07ZnVuY3Rpb24gZyh0KXtsZXQgZTtyZXR1cm4gdCYmdC5pc1RleHR1cmU/ZT10LmVuY29kaW5nOnQmJnQuaXNXZWJHTFJlbmRlclRhcmdldD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW1zLmdldFRleHR1cmVFbmNvZGluZ0Zyb21NYXA6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksZT10LnRleHR1cmUuZW5jb2RpbmcpOmU9Tlp0LGV9cmV0dXJue2dldFBhcmFtZXRlcnM6ZnVuY3Rpb24gXyhvLHMsbSx5LHYpe2NvbnN0IGI9eS5mb2cseD0oby5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP246ZSkuZ2V0KG8uZW52TWFwfHwoby5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP3kuZW52aXJvbm1lbnQ6bnVsbCkpLHc9ZltvLnR5cGVdLFM9di5pc1NraW5uZWRNZXNoPyhmdW5jdGlvbiBNKHQpe2NvbnN0IGU9dC5za2VsZXRvbi5ib25lcztpZih1KXJldHVybiAxMDI0O3tjb25zdCB0PU1hdGguZmxvb3IoKGgtMjApLzQpLG49TWF0aC5taW4odCxlLmxlbmd0aCk7cmV0dXJuIG48ZS5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrZS5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIituKyIuIiksMCk6bn19KSh2KTowO2xldCBFLFQ7aWYobnVsbCE9PW8ucHJlY2lzaW9uJiYocD1yLmdldE1heFByZWNpc2lvbihvLnByZWNpc2lvbikscCE9PW8ucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsby5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixwLCJpbnN0ZWFkLiIpKSx3KXtjb25zdCB0PWMwdFt3XTtFPXQudmVydGV4U2hhZGVyLFQ9dC5mcmFnbWVudFNoYWRlcn1lbHNlIEU9by52ZXJ0ZXhTaGFkZXIsVD1vLmZyYWdtZW50U2hhZGVyO2NvbnN0IEM9dC5nZXRSZW5kZXJUYXJnZXQoKTtyZXR1cm57aXNXZWJHTDI6bCxzaGFkZXJJRDp3LHNoYWRlck5hbWU6by50eXBlLHZlcnRleFNoYWRlcjpFLGZyYWdtZW50U2hhZGVyOlQsZGVmaW5lczpvLmRlZmluZXMsaXNSYXdTaGFkZXJNYXRlcmlhbDohMD09PW8uaXNSYXdTaGFkZXJNYXRlcmlhbCxnbHNsVmVyc2lvbjpvLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpwLGluc3RhbmNpbmc6ITA9PT12LmlzSW5zdGFuY2VkTWVzaCxpbnN0YW5jaW5nQ29sb3I6ITA9PT12LmlzSW5zdGFuY2VkTWVzaCYmbnVsbCE9PXYuaW5zdGFuY2VDb2xvcixzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmQsb3V0cHV0RW5jb2Rpbmc6bnVsbCE9PUM/ZyhDLnRleHR1cmUpOnQub3V0cHV0RW5jb2RpbmcsbWFwOiEhby5tYXAsbWFwRW5jb2Rpbmc6ZyhvLm1hcCksbWF0Y2FwOiEhby5tYXRjYXAsbWF0Y2FwRW5jb2Rpbmc6ZyhvLm1hdGNhcCksZW52TWFwOiEheCxlbnZNYXBNb2RlOngmJngubWFwcGluZyxlbnZNYXBFbmNvZGluZzpnKHgpLGVudk1hcEN1YmVVVjohIXgmJih4Lm1hcHBpbmc9PT1ZS3R8fHgubWFwcGluZz09PVhLdCksbGlnaHRNYXA6ISFvLmxpZ2h0TWFwLGxpZ2h0TWFwRW5jb2Rpbmc6ZyhvLmxpZ2h0TWFwKSxhb01hcDohIW8uYW9NYXAsZW1pc3NpdmVNYXA6ISFvLmVtaXNzaXZlTWFwLGVtaXNzaXZlTWFwRW5jb2Rpbmc6ZyhvLmVtaXNzaXZlTWFwKSxidW1wTWFwOiEhby5idW1wTWFwLG5vcm1hbE1hcDohIW8ubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOjE9PT1vLm5vcm1hbE1hcFR5cGUsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOjA9PT1vLm5vcm1hbE1hcFR5cGUsY2xlYXJjb2F0TWFwOiEhby5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOiEhby5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOiEhby5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEhby5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEhby5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhby5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFvLnNwZWN1bGFyTWFwLHNwZWN1bGFySW50ZW5zaXR5TWFwOiEhby5zcGVjdWxhckludGVuc2l0eU1hcCxzcGVjdWxhclRpbnRNYXA6ISFvLnNwZWN1bGFyVGludE1hcCxzcGVjdWxhclRpbnRNYXBFbmNvZGluZzpnKG8uc3BlY3VsYXJUaW50TWFwKSxhbHBoYU1hcDohIW8uYWxwaGFNYXAsZ3JhZGllbnRNYXA6ISFvLmdyYWRpZW50TWFwLHNoZWVuOiEhby5zaGVlbix0cmFuc21pc3Npb246ISFvLnRyYW5zbWlzc2lvbix0cmFuc21pc3Npb25NYXA6ISFvLnRyYW5zbWlzc2lvbk1hcCx0aGlja25lc3NNYXA6ISFvLnRoaWNrbmVzc01hcCxjb21iaW5lOm8uY29tYmluZSx2ZXJ0ZXhUYW5nZW50czohIW8ubm9ybWFsTWFwJiYhIXYuZ2VvbWV0cnkmJiEhdi5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsdmVydGV4Q29sb3JzOm8udmVydGV4Q29sb3JzLHZlcnRleEFscGhhczohMD09PW8udmVydGV4Q29sb3JzJiYhIXYuZ2VvbWV0cnkmJiEhdi5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiY0PT09di5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplLHZlcnRleFV2czohIShvLm1hcHx8by5idW1wTWFwfHxvLm5vcm1hbE1hcHx8by5zcGVjdWxhck1hcHx8by5hbHBoYU1hcHx8by5lbWlzc2l2ZU1hcHx8by5yb3VnaG5lc3NNYXB8fG8ubWV0YWxuZXNzTWFwfHxvLmNsZWFyY29hdE1hcHx8by5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fG8uY2xlYXJjb2F0Tm9ybWFsTWFwfHxvLmRpc3BsYWNlbWVudE1hcHx8by50cmFuc21pc3Npb25NYXB8fG8udGhpY2tuZXNzTWFwfHxvLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxvLnNwZWN1bGFyVGludE1hcCksdXZzVmVydGV4T25seTohKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0Tm9ybWFsTWFwfHxvLnRyYW5zbWlzc2lvbnx8by50cmFuc21pc3Npb25NYXB8fG8udGhpY2tuZXNzTWFwfHxvLnNwZWN1bGFySW50ZW5zaXR5TWFwfHxvLnNwZWN1bGFyVGludE1hcHx8IW8uZGlzcGxhY2VtZW50TWFwKSxmb2c6ISFiLHVzZUZvZzpvLmZvZyxmb2dFeHAyOmImJmIuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOiEhby5mbGF0U2hhZGluZyxzaXplQXR0ZW51YXRpb246by5zaXplQXR0ZW51YXRpb24sbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLHNraW5uaW5nOiEwPT09di5pc1NraW5uZWRNZXNoJiZTPjAsbWF4Qm9uZXM6Uyx1c2VWZXJ0ZXhUZXh0dXJlOnUsbW9ycGhUYXJnZXRzOiEhdi5nZW9tZXRyeSYmISF2Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixtb3JwaE5vcm1hbHM6ISF2Lmdlb21ldHJ5JiYhIXYuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxudW1EaXJMaWdodHM6cy5kaXJlY3Rpb25hbC5sZW5ndGgsbnVtUG9pbnRMaWdodHM6cy5wb2ludC5sZW5ndGgsbnVtU3BvdExpZ2h0czpzLnNwb3QubGVuZ3RoLG51bVJlY3RBcmVhTGlnaHRzOnMucmVjdEFyZWEubGVuZ3RoLG51bUhlbWlMaWdodHM6cy5oZW1pLmxlbmd0aCxudW1EaXJMaWdodFNoYWRvd3M6cy5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGgsbnVtUG9pbnRMaWdodFNoYWRvd3M6cy5wb2ludFNoYWRvd01hcC5sZW5ndGgsbnVtU3BvdExpZ2h0U2hhZG93czpzLnNwb3RTaGFkb3dNYXAubGVuZ3RoLG51bUNsaXBwaW5nUGxhbmVzOmEubnVtUGxhbmVzLG51bUNsaXBJbnRlcnNlY3Rpb246YS5udW1JbnRlcnNlY3Rpb24sZGl0aGVyaW5nOm8uZGl0aGVyaW5nLHNoYWRvd01hcEVuYWJsZWQ6dC5zaGFkb3dNYXAuZW5hYmxlZCYmbS5sZW5ndGg+MCxzaGFkb3dNYXBUeXBlOnQuc2hhZG93TWFwLnR5cGUsdG9uZU1hcHBpbmc6by50b25lTWFwcGVkP3QudG9uZU1hcHBpbmc6MCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czp0LnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTpvLnByZW11bHRpcGxpZWRBbHBoYSxhbHBoYVRlc3Q6by5hbHBoYVRlc3QsZG91YmxlU2lkZWQ6Mj09PW8uc2lkZSxmbGlwU2lkZWQ6MT09PW8uc2lkZSxkZXB0aFBhY2tpbmc6dm9pZCAwIT09by5kZXB0aFBhY2tpbmcmJm8uZGVwdGhQYWNraW5nLGluZGV4MEF0dHJpYnV0ZU5hbWU6by5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6by5leHRlbnNpb25zJiZvLmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOmx8fGkuaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6bHx8aS5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDpsfHxpLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTpvLmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX0sZ2V0UHJvZ3JhbUNhY2hlS2V5OmZ1bmN0aW9uIHkoZSl7Y29uc3Qgbj1bXTtpZihlLnNoYWRlcklEP24ucHVzaChlLnNoYWRlcklEKToobi5wdXNoKGUuZnJhZ21lbnRTaGFkZXIpLG4ucHVzaChlLnZlcnRleFNoYWRlcikpLHZvaWQgMCE9PWUuZGVmaW5lcylmb3IoY29uc3QgdCBpbiBlLmRlZmluZXMpbi5wdXNoKHQpLG4ucHVzaChlLmRlZmluZXNbdF0pO2lmKCExPT09ZS5pc1Jhd1NoYWRlck1hdGVyaWFsKXtmb3IobGV0IHQ9MDt0PG0ubGVuZ3RoO3QrKyluLnB1c2goZVttW3RdXSk7bi5wdXNoKHQub3V0cHV0RW5jb2RpbmcpLG4ucHVzaCh0LmdhbW1hRmFjdG9yKX1yZXR1cm4gbi5wdXNoKGUuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxuLmpvaW4oKX0sZ2V0VW5pZm9ybXM6ZnVuY3Rpb24gdih0KXtjb25zdCBlPWZbdC50eXBlXTtsZXQgbjtyZXR1cm4gbj1lP2oxdC5jbG9uZShjMHRbZV0udW5pZm9ybXMpOnQudW5pZm9ybXMsbn0sYWNxdWlyZVByb2dyYW06ZnVuY3Rpb24gYihlLG4pe2xldCBpO2ZvcihsZXQgdD0wLGU9cy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1zW3RdO2lmKGUuY2FjaGVLZXk9PT1uKXtpPWUsKytpLnVzZWRUaW1lczticmVha319cmV0dXJuIHZvaWQgMD09PWkmJihpPW5ldyB2NXQodCxuLGUsbykscy5wdXNoKGkpKSxpfSxyZWxlYXNlUHJvZ3JhbTpmdW5jdGlvbiB4KHQpe2lmKDA9PS0tdC51c2VkVGltZXMpe2NvbnN0IGU9cy5pbmRleE9mKHQpO3NbZV09c1tzLmxlbmd0aC0xXSxzLnBvcCgpLHQuZGVzdHJveSgpfX0scHJvZ3JhbXM6c319ZnVuY3Rpb24geDV0KCl7bGV0IHQ9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBlKG4pe2xldCBpPXQuZ2V0KG4pO3JldHVybiB2b2lkIDA9PT1pJiYoaT17fSx0LnNldChuLGkpKSxpfSxyZW1vdmU6ZnVuY3Rpb24gbihlKXt0LmRlbGV0ZShlKX0sdXBkYXRlOmZ1bmN0aW9uIGkoZSxuLHIpe3QuZ2V0KGUpW25dPXJ9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe3Q9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiB3NXQodCxlKXtyZXR1cm4gdC5ncm91cE9yZGVyIT09ZS5ncm91cE9yZGVyP3QuZ3JvdXBPcmRlci1lLmdyb3VwT3JkZXI6dC5yZW5kZXJPcmRlciE9PWUucmVuZGVyT3JkZXI/dC5yZW5kZXJPcmRlci1lLnJlbmRlck9yZGVyOnQucHJvZ3JhbSE9PWUucHJvZ3JhbT90LnByb2dyYW0uaWQtZS5wcm9ncmFtLmlkOnQubWF0ZXJpYWwuaWQhPT1lLm1hdGVyaWFsLmlkP3QubWF0ZXJpYWwuaWQtZS5tYXRlcmlhbC5pZDp0LnohPT1lLno/dC56LWUuejp0LmlkLWUuaWR9ZnVuY3Rpb24gUzV0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnohPT1lLno/ZS56LXQuejp0LmlkLWUuaWR9ZnVuY3Rpb24gTTV0KHQpe2NvbnN0IGU9W107bGV0IG49MDtjb25zdCBpPVtdLHI9W10sbz1bXSxhPXtpZDotMX07ZnVuY3Rpb24gcyhpLHIsbyxzLGwsYyl7bGV0IHU9ZVtuXTtjb25zdCBoPXQuZ2V0KG8pO3JldHVybiB2b2lkIDA9PT11Pyh1PXtpZDppLmlkLG9iamVjdDppLGdlb21ldHJ5OnIsbWF0ZXJpYWw6byxwcm9ncmFtOmgucHJvZ3JhbXx8YSxncm91cE9yZGVyOnMscmVuZGVyT3JkZXI6aS5yZW5kZXJPcmRlcix6OmwsZ3JvdXA6Y30sZVtuXT11KToodS5pZD1pLmlkLHUub2JqZWN0PWksdS5nZW9tZXRyeT1yLHUubWF0ZXJpYWw9byx1LnByb2dyYW09aC5wcm9ncmFtfHxhLHUuZ3JvdXBPcmRlcj1zLHUucmVuZGVyT3JkZXI9aS5yZW5kZXJPcmRlcix1Lno9bCx1Lmdyb3VwPWMpLG4rKyx1fXJldHVybntvcGFxdWU6aSx0cmFuc21pc3NpdmU6cix0cmFuc3BhcmVudDpvLGluaXQ6ZnVuY3Rpb24gbCgpe249MCxpLmxlbmd0aD0wLHIubGVuZ3RoPTAsby5sZW5ndGg9MH0scHVzaDpmdW5jdGlvbiBjKHQsZSxuLGEsbCx1KXtjb25zdCBoPXModCxlLG4sYSxsLHUpO24udHJhbnNtaXNzaW9uPjA/ci5wdXNoKGgpOiEwPT09bi50cmFuc3BhcmVudD9vLnB1c2goaCk6aS5wdXNoKGgpfSx1bnNoaWZ0OmZ1bmN0aW9uIHUodCxlLG4sYSxsLGMpe2NvbnN0IHU9cyh0LGUsbixhLGwsYyk7bi50cmFuc21pc3Npb24+MD9yLnVuc2hpZnQodSk6ITA9PT1uLnRyYW5zcGFyZW50P28udW5zaGlmdCh1KTppLnVuc2hpZnQodSl9LGZpbmlzaDpmdW5jdGlvbiBoKCl7Zm9yKGxldCB0PW4saT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBuPWVbdF07aWYobnVsbD09PW4uaWQpYnJlYWs7bi5pZD1udWxsLG4ub2JqZWN0PW51bGwsbi5nZW9tZXRyeT1udWxsLG4ubWF0ZXJpYWw9bnVsbCxuLnByb2dyYW09bnVsbCxuLmdyb3VwPW51bGx9fSxzb3J0OmZ1bmN0aW9uIGQodCxlKXtpLmxlbmd0aD4xJiZpLnNvcnQodHx8dzV0KSxyLmxlbmd0aD4xJiZyLnNvcnQoZXx8UzV0KSxvLmxlbmd0aD4xJiZvLnNvcnQoZXx8UzV0KX19fWZ1bmN0aW9uIEU1dCh0KXtsZXQgZT1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIG4oaSxyKXtsZXQgbztyZXR1cm4hMT09PWUuaGFzKGkpPyhvPW5ldyBNNXQodCksZS5zZXQoaSxbb10pKTpyPj1lLmdldChpKS5sZW5ndGg/KG89bmV3IE01dCh0KSxlLmdldChpKS5wdXNoKG8pKTpvPWUuZ2V0KGkpW3JdLG99LGRpc3Bvc2U6ZnVuY3Rpb24gaSgpe2U9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBUNXQoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgQ0p0LGNvbG9yOm5ldyAkUXR9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgQ0p0LGRpcmVjdGlvbjpuZXcgQ0p0LGNvbG9yOm5ldyAkUXQsZGlzdGFuY2U6MCxjb25lQ29zOjAscGVudW1icmFDb3M6MCxkZWNheTowfTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyBDSnQsY29sb3I6bmV3ICRRdCxkaXN0YW5jZTowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiSGVtaXNwaGVyZUxpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IENKdCxza3lDb2xvcjpuZXcgJFF0LGdyb3VuZENvbG9yOm5ldyAkUXR9O2JyZWFrO2Nhc2UiUmVjdEFyZWFMaWdodCI6bj17Y29sb3I6bmV3ICRRdCxwb3NpdGlvbjpuZXcgQ0p0LGhhbGZXaWR0aDpuZXcgQ0p0LGhhbGZIZWlnaHQ6bmV3IENKdH19cmV0dXJuIHRbZS5pZF09bixufX19bGV0IEM1dD0wO2Z1bmN0aW9uIEE1dCh0LGUpe3JldHVybihlLmNhc3RTaGFkb3c/MTowKS0odC5jYXN0U2hhZG93PzE6MCl9ZnVuY3Rpb24gazV0KHQsZSl7Y29uc3Qgbj1uZXcgVDV0LGk9KGZ1bmN0aW9uIHIoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOmNhc2UiU3BvdExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IG1KdH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IG1KdCxzaGFkb3dDYW1lcmFOZWFyOjEsc2hhZG93Q2FtZXJhRmFyOjFlM319cmV0dXJuIHRbZS5pZF09bixufX19KSgpLG89e3ZlcnNpb246MCxoYXNoOntkaXJlY3Rpb25hbExlbmd0aDotMSxwb2ludExlbmd0aDotMSxzcG90TGVuZ3RoOi0xLHJlY3RBcmVhTGVuZ3RoOi0xLGhlbWlMZW5ndGg6LTEsbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYW1iaWVudDpbMCwwLDBdLHByb2JlOltdLGRpcmVjdGlvbmFsOltdLGRpcmVjdGlvbmFsU2hhZG93OltdLGRpcmVjdGlvbmFsU2hhZG93TWFwOltdLGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OltdLHNwb3Q6W10sc3BvdFNoYWRvdzpbXSxzcG90U2hhZG93TWFwOltdLHNwb3RTaGFkb3dNYXRyaXg6W10scmVjdEFyZWE6W10scmVjdEFyZWFMVEMxOm51bGwscmVjdEFyZWFMVEMyOm51bGwscG9pbnQ6W10scG9pbnRTaGFkb3c6W10scG9pbnRTaGFkb3dNYXA6W10scG9pbnRTaGFkb3dNYXRyaXg6W10saGVtaTpbXX07Zm9yKGxldCB0PTA7dDw5O3QrKylvLnByb2JlLnB1c2gobmV3IENKdCk7Y29uc3QgYT1uZXcgQ0p0LHM9bmV3IHJRdCxsPW5ldyByUXQ7cmV0dXJue3NldHVwOmZ1bmN0aW9uIGMocil7bGV0IGE9MCxzPTAsbD0wO2ZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZVt0XS5zZXQoMCwwLDApO2xldCBjPTAsdT0wLGg9MCxkPTAscD0wLGY9MCxtPTAsZz0wO3Iuc29ydChBNXQpO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1yW3RdLF89ZS5jb2xvcix5PWUuaW50ZW5zaXR5LHY9ZS5kaXN0YW5jZSxiPWUuc2hhZG93JiZlLnNoYWRvdy5tYXA/ZS5zaGFkb3cubWFwLnRleHR1cmU6bnVsbDtpZihlLmlzQW1iaWVudExpZ2h0KWErPV8ucip5LHMrPV8uZyp5LGwrPV8uYip5O2Vsc2UgaWYoZS5pc0xpZ2h0UHJvYmUpZm9yKGxldCB0PTA7dDw5O3QrKylvLnByb2JlW3RdLmFkZFNjYWxlZFZlY3RvcihlLnNoLmNvZWZmaWNpZW50c1t0XSx5KTtlbHNlIGlmKGUuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQuY29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihlLmludGVuc2l0eSksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsby5kaXJlY3Rpb25hbFNoYWRvd1tjXT1uLG8uZGlyZWN0aW9uYWxTaGFkb3dNYXBbY109YixvLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4W2NdPWUuc2hhZG93Lm1hdHJpeCxmKyt9by5kaXJlY3Rpb25hbFtjXT10LGMrK31lbHNlIGlmKGUuaXNTcG90TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdC5jb2xvci5jb3B5KF8pLm11bHRpcGx5U2NhbGFyKHkpLHQuZGlzdGFuY2U9dix0LmNvbmVDb3M9TWF0aC5jb3MoZS5hbmdsZSksdC5wZW51bWJyYUNvcz1NYXRoLmNvcyhlLmFuZ2xlKigxLWUucGVudW1icmEpKSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsby5zcG90U2hhZG93W2hdPW4sby5zcG90U2hhZG93TWFwW2hdPWIsby5zcG90U2hhZG93TWF0cml4W2hdPWUuc2hhZG93Lm1hdHJpeCxnKyt9by5zcG90W2hdPXQsaCsrfWVsc2UgaWYoZS5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5jb2xvci5jb3B5KF8pLm11bHRpcGx5U2NhbGFyKHkpLHQuaGFsZldpZHRoLnNldCguNSplLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41KmUuaGVpZ2h0LDApLG8ucmVjdEFyZWFbZF09dCxkKyt9ZWxzZSBpZihlLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkpLHQuZGlzdGFuY2U9ZS5kaXN0YW5jZSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsbi5zaGFkb3dDYW1lcmFOZWFyPXQuY2FtZXJhLm5lYXIsbi5zaGFkb3dDYW1lcmFGYXI9dC5jYW1lcmEuZmFyLG8ucG9pbnRTaGFkb3dbdV09bixvLnBvaW50U2hhZG93TWFwW3VdPWIsby5wb2ludFNoYWRvd01hdHJpeFt1XT1lLnNoYWRvdy5tYXRyaXgsbSsrfW8ucG9pbnRbdV09dCx1Kyt9ZWxzZSBpZihlLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3Quc2t5Q29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcih5KSx0Lmdyb3VuZENvbG9yLmNvcHkoZS5ncm91bmRDb2xvcikubXVsdGlwbHlTY2FsYXIoeSksby5oZW1pW3BdPXQscCsrfX1kPjAmJihlLmlzV2ViR0wyfHwhMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9bDB0LkxUQ19GTE9BVF8xLG8ucmVjdEFyZWFMVEMyPWwwdC5MVENfRkxPQVRfMik6ITA9PT10LmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9bDB0LkxUQ19IQUxGXzEsby5yZWN0QXJlYUxUQzI9bDB0LkxUQ19IQUxGXzIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVuYWJsZSB0byB1c2UgUmVjdEFyZWFMaWdodC4gTWlzc2luZyBXZWJHTCBleHRlbnNpb25zLiIpKSxvLmFtYmllbnRbMF09YSxvLmFtYmllbnRbMV09cyxvLmFtYmllbnRbMl09bDtjb25zdCBfPW8uaGFzaDtfLmRpcmVjdGlvbmFsTGVuZ3RoPT09YyYmXy5wb2ludExlbmd0aD09PXUmJl8uc3BvdExlbmd0aD09PWgmJl8ucmVjdEFyZWFMZW5ndGg9PT1kJiZfLmhlbWlMZW5ndGg9PT1wJiZfLm51bURpcmVjdGlvbmFsU2hhZG93cz09PWYmJl8ubnVtUG9pbnRTaGFkb3dzPT09bSYmXy5udW1TcG90U2hhZG93cz09PWd8fChvLmRpcmVjdGlvbmFsLmxlbmd0aD1jLG8uc3BvdC5sZW5ndGg9aCxvLnJlY3RBcmVhLmxlbmd0aD1kLG8ucG9pbnQubGVuZ3RoPXUsby5oZW1pLmxlbmd0aD1wLG8uZGlyZWN0aW9uYWxTaGFkb3cubGVuZ3RoPWYsby5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGg9ZixvLnBvaW50U2hhZG93Lmxlbmd0aD1tLG8ucG9pbnRTaGFkb3dNYXAubGVuZ3RoPW0sby5zcG90U2hhZG93Lmxlbmd0aD1nLG8uc3BvdFNoYWRvd01hcC5sZW5ndGg9ZyxvLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4Lmxlbmd0aD1mLG8ucG9pbnRTaGFkb3dNYXRyaXgubGVuZ3RoPW0sby5zcG90U2hhZG93TWF0cml4Lmxlbmd0aD1nLF8uZGlyZWN0aW9uYWxMZW5ndGg9YyxfLnBvaW50TGVuZ3RoPXUsXy5zcG90TGVuZ3RoPWgsXy5yZWN0QXJlYUxlbmd0aD1kLF8uaGVtaUxlbmd0aD1wLF8ubnVtRGlyZWN0aW9uYWxTaGFkb3dzPWYsXy5udW1Qb2ludFNoYWRvd3M9bSxfLm51bVNwb3RTaGFkb3dzPWcsby52ZXJzaW9uPUM1dCsrKX0sc2V0dXBWaWV3OmZ1bmN0aW9uIHUodCxlKXtsZXQgbj0wLGk9MCxyPTAsYz0wLHU9MDtjb25zdCBoPWUubWF0cml4V29ybGRJbnZlcnNlO2ZvcihsZXQgZT0wLGQ9dC5sZW5ndGg7ZTxkO2UrKyl7Y29uc3QgZD10W2VdO2lmKGQuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW8uZGlyZWN0aW9uYWxbbl07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLGEuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQudGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIoYSksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGgpLG4rK31lbHNlIGlmKGQuaXNTcG90TGlnaHQpe2NvbnN0IHQ9by5zcG90W3JdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLHQuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSxhLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKGEpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihoKSxyKyt9ZWxzZSBpZihkLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1vLnJlY3RBcmVhW2NdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGwuaWRlbnRpdHkoKSxzLmNvcHkoZC5tYXRyaXhXb3JsZCkscy5wcmVtdWx0aXBseShoKSxsLmV4dHJhY3RSb3RhdGlvbihzKSx0LmhhbGZXaWR0aC5zZXQoLjUqZC53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSpkLmhlaWdodCwwKSx0LmhhbGZXaWR0aC5hcHBseU1hdHJpeDQobCksdC5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NChsKSxjKyt9ZWxzZSBpZihkLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1vLnBvaW50W2ldO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGkrK31lbHNlIGlmKGQuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9by5oZW1pW3VdO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oaCksdC5kaXJlY3Rpb24ubm9ybWFsaXplKCksdSsrfX19LHN0YXRlOm99fWZ1bmN0aW9uIEw1dCh0LGUpe2NvbnN0IG49bmV3IGs1dCh0LGUpLGk9W10scj1bXTtyZXR1cm57aW5pdDpmdW5jdGlvbiBvKCl7aS5sZW5ndGg9MCxyLmxlbmd0aD0wfSxzdGF0ZTp7bGlnaHRzQXJyYXk6aSxzaGFkb3dzQXJyYXk6cixsaWdodHM6bn0sc2V0dXBMaWdodHM6ZnVuY3Rpb24gYSgpe24uc2V0dXAoaSl9LHNldHVwTGlnaHRzVmlldzpmdW5jdGlvbiBzKHQpe24uc2V0dXBWaWV3KGksdCl9LHB1c2hMaWdodDpmdW5jdGlvbiBsKHQpe2kucHVzaCh0KX0scHVzaFNoYWRvdzpmdW5jdGlvbiBjKHQpe3IucHVzaCh0KX19fWZ1bmN0aW9uIFA1dCh0LGUpe2xldCBuPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gaShyLG89MCl7bGV0IGE7cmV0dXJuITE9PT1uLmhhcyhyKT8oYT1uZXcgTDV0KHQsZSksbi5zZXQocixbYV0pKTpvPj1uLmdldChyKS5sZW5ndGg/KGE9bmV3IEw1dCh0LGUpLG4uZ2V0KHIpLnB1c2goYSkpOmE9bi5nZXQocilbb10sYX0sZGlzcG9zZTpmdW5jdGlvbiByKCl7bj1uZXcgV2Vha01hcH19fWNsYXNzIE41dCBleHRlbmRzIFVRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERlcHRoTWF0ZXJpYWwiLHRoaXMuZGVwdGhQYWNraW5nPTMyMDAsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVwdGhQYWNraW5nPXQuZGVwdGhQYWNraW5nLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzfX1ONXQucHJvdG90eXBlLmlzTWVzaERlcHRoTWF0ZXJpYWw9ITA7Y2xhc3MgSTV0IGV4dGVuZHMgVVF0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCIsdGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgQ0p0LHRoaXMubmVhckRpc3RhbmNlPTEsdGhpcy5mYXJEaXN0YW5jZT0xZTMsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnJlZmVyZW5jZVBvc2l0aW9uLmNvcHkodC5yZWZlcmVuY2VQb3NpdGlvbiksdGhpcy5uZWFyRGlzdGFuY2U9dC5uZWFyRGlzdGFuY2UsdGhpcy5mYXJEaXN0YW5jZT10LmZhckRpc3RhbmNlLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzfX1mdW5jdGlvbiBSNXQodCxlLG4pe2xldCBpPW5ldyBpMHQ7Y29uc3Qgcj1uZXcgbUp0LG89bmV3IG1KdCxhPW5ldyB3SnQscz1uZXcgTjV0KHtkZXB0aFBhY2tpbmc6MzIwMX0pLGw9bmV3IEk1dCxjPXt9LHU9bi5tYXhUZXh0dXJlU2l6ZSxoPXswOjEsMTowLDI6Mn0sZD1uZXcgRzF0KHtkZWZpbmVzOntTQU1QTEVfUkFURToyLzgsSEFMRl9TQU1QTEVfUkFURToxLzh9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IG1KdH0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBtZWFuID0gMC4wO1xuXHRmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7XG5cdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICkgLyByZXNvbHV0aW9uICkgKTtcblx0Zm9yICggZmxvYXQgaSA9IC0xLjA7IGkgPCAxLjAgOyBpICs9IFNBTVBMRV9SQVRFKSB7XG5cdFx0I2lmZGVmIEhPUklaT05UQUxfUEFTU1xuXHRcdFx0dmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCBpLCAwLjAgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG5cdFx0XHRtZWFuICs9IGRpc3RyaWJ1dGlvbi54O1xuXHRcdFx0c3F1YXJlZF9tZWFuICs9IGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKyBkaXN0cmlidXRpb24ueCAqIGRpc3RyaWJ1dGlvbi54O1xuXHRcdCNlbHNlXG5cdFx0XHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIDAuMCwgaSApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGVwdGg7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDtcblx0XHQjZW5kaWZcblx0fVxuXHRtZWFuID0gbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdHNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdGZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSxwPWQuY2xvbmUoKTtwLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7Y29uc3QgZj1uZXcgYjF0O2Yuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFFRdChuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwuNSwzLC0xLC41LC0xLDMsLjVdKSwzKSk7Y29uc3QgbT1uZXcgQjF0KGYsZCksZz10aGlzO2Z1bmN0aW9uIF8obixpKXtjb25zdCByPWUudXBkYXRlKG0pO2QudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXAudGV4dHVyZSxkLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9bi5tYXBTaXplLGQudW5pZm9ybXMucmFkaXVzLnZhbHVlPW4ucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KG4ubWFwUGFzcyksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGksbnVsbCxyLGQsbSxudWxsKSxwLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPW4ubWFwUGFzcy50ZXh0dXJlLHAudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUscC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXApLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChpLG51bGwscixwLG0sbnVsbCl9ZnVuY3Rpb24geShlLG4saSxyLG8sYSx1KXtsZXQgZD1udWxsO2NvbnN0IHA9ITA9PT1yLmlzUG9pbnRMaWdodD9lLmN1c3RvbURpc3RhbmNlTWF0ZXJpYWw6ZS5jdXN0b21EZXB0aE1hdGVyaWFsO2lmKGQ9dm9pZCAwIT09cD9wOiEwPT09ci5pc1BvaW50TGlnaHQ/bDpzLHQubG9jYWxDbGlwcGluZ0VuYWJsZWQmJiEwPT09aS5jbGlwU2hhZG93cyYmMCE9PWkuY2xpcHBpbmdQbGFuZXMubGVuZ3RoKXtjb25zdCB0PWQudXVpZCxlPWkudXVpZDtsZXQgbj1jW3RdO3ZvaWQgMD09PW4mJihuPXt9LGNbdF09bik7bGV0IHI9bltlXTt2b2lkIDA9PT1yJiYocj1kLmNsb25lKCksbltlXT1yKSxkPXJ9cmV0dXJuIGQudmlzaWJsZT1pLnZpc2libGUsZC53aXJlZnJhbWU9aS53aXJlZnJhbWUsZC5zaWRlPTM9PT11P251bGwhPT1pLnNoYWRvd1NpZGU/aS5zaGFkb3dTaWRlOmkuc2lkZTpudWxsIT09aS5zaGFkb3dTaWRlP2kuc2hhZG93U2lkZTpoW2kuc2lkZV0sZC5jbGlwU2hhZG93cz1pLmNsaXBTaGFkb3dzLGQuY2xpcHBpbmdQbGFuZXM9aS5jbGlwcGluZ1BsYW5lcyxkLmNsaXBJbnRlcnNlY3Rpb249aS5jbGlwSW50ZXJzZWN0aW9uLGQud2lyZWZyYW1lTGluZXdpZHRoPWkud2lyZWZyYW1lTGluZXdpZHRoLGQubGluZXdpZHRoPWkubGluZXdpZHRoLCEwPT09ci5pc1BvaW50TGlnaHQmJiEwPT09ZC5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYoZC5yZWZlcmVuY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oci5tYXRyaXhXb3JsZCksZC5uZWFyRGlzdGFuY2U9byxkLmZhckRpc3RhbmNlPWEpLGR9ZnVuY3Rpb24gdihuLHIsbyxhLHMpe2lmKCExPT09bi52aXNpYmxlKXJldHVybjtpZihuLmxheWVycy50ZXN0KHIubGF5ZXJzKSYmKG4uaXNNZXNofHxuLmlzTGluZXx8bi5pc1BvaW50cykmJihuLmNhc3RTaGFkb3d8fG4ucmVjZWl2ZVNoYWRvdyYmMz09PXMpJiYoIW4uZnJ1c3R1bUN1bGxlZHx8aS5pbnRlcnNlY3RzT2JqZWN0KG4pKSl7bi5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhvLm1hdHJpeFdvcmxkSW52ZXJzZSxuLm1hdHJpeFdvcmxkKTtjb25zdCBpPWUudXBkYXRlKG4pLHI9bi5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPWkuZ3JvdXBzO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLHU9cltjLm1hdGVyaWFsSW5kZXhdO2lmKHUmJnUudmlzaWJsZSl7Y29uc3QgZT15KG4sMCx1LGEsby5uZWFyLG8uZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KG8sbnVsbCxpLGUsbixjKX19fWVsc2UgaWYoci52aXNpYmxlKXtjb25zdCBlPXkobiwwLHIsYSxvLm5lYXIsby5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksZSxuLG51bGwpfX1jb25zdCBsPW4uY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0PGU7dCsrKXYobFt0XSxyLG8sYSxzKX10aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPTEsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oZSxuLHMpe2lmKCExPT09Zy5lbmFibGVkKXJldHVybjtpZighMT09PWcuYXV0b1VwZGF0ZSYmITE9PT1nLm5lZWRzVXBkYXRlKXJldHVybjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGw9dC5nZXRSZW5kZXJUYXJnZXQoKSxjPXQuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxoPXQuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxkPXQuc3RhdGU7ZC5zZXRCbGVuZGluZygwKSxkLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSksZC5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLGQuc2V0U2Npc3NvclRlc3QoITEpO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLGg9Yy5zaGFkb3c7aWYodm9pZCAwPT09aCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLGMsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoITE9PT1oLmF1dG9VcGRhdGUmJiExPT09aC5uZWVkc1VwZGF0ZSljb250aW51ZTtyLmNvcHkoaC5tYXBTaXplKTtjb25zdCBwPWguZ2V0RnJhbWVFeHRlbnRzKCk7aWYoci5tdWx0aXBseShwKSxvLmNvcHkoaC5tYXBTaXplKSwoci54PnV8fHIueT51KSYmKHIueD51JiYoby54PU1hdGguZmxvb3IodS9wLngpLHIueD1vLngqcC54LGgubWFwU2l6ZS54PW8ueCksci55PnUmJihvLnk9TWF0aC5mbG9vcih1L3AueSksci55PW8ueSpwLnksaC5tYXBTaXplLnk9by55KSksbnVsbD09PWgubWFwJiYhaC5pc1BvaW50TGlnaHRTaGFkb3cmJjM9PT10aGlzLnR5cGUpe2NvbnN0IHQ9e21pbkZpbHRlcjplWnQsbWFnRmlsdGVyOmVadCxmb3JtYXQ6aFp0fTtoLm1hcD1uZXcgU0p0KHIueCxyLnksdCksaC5tYXAudGV4dHVyZS5uYW1lPWMubmFtZSsiLnNoYWRvd01hcCIsaC5tYXBQYXNzPW5ldyBTSnQoci54LHIueSx0KSxoLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9bnVsbD09PWgubWFwJiYoaC5tYXA9bmV3IFNKdChyLngsci55LHttaW5GaWx0ZXI6Skt0LG1hZ0ZpbHRlcjpKS3QsZm9ybWF0OmhadH0pLGgubWFwLnRleHR1cmUubmFtZT1jLm5hbWUrIi5zaGFkb3dNYXAiLGguY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksdC5zZXRSZW5kZXJUYXJnZXQoaC5tYXApLHQuY2xlYXIoKTtjb25zdCBmPWguZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9aC5nZXRWaWV3cG9ydCh0KTthLnNldChvLngqZS54LG8ueSplLnksby54KmUueixvLnkqZS53KSxkLnZpZXdwb3J0KGEpLGgudXBkYXRlTWF0cmljZXMoYyx0KSxpPWguZ2V0RnJ1c3R1bSgpLHYobixzLGguY2FtZXJhLGMsdGhpcy50eXBlKX1oLmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8XyhoLHMpLGgubmVlZHNVcGRhdGU9ITF9Zy5uZWVkc1VwZGF0ZT0hMSx0LnNldFJlbmRlclRhcmdldChsLGMsaCl9fWZ1bmN0aW9uIE81dCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyLHI9bmV3KGZ1bmN0aW9uIG8oKXtsZXQgZT0hMTtjb25zdCBuPW5ldyB3SnQ7bGV0IGk9bnVsbDtjb25zdCByPW5ldyB3SnQoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24obil7aT09PW58fGV8fCh0LmNvbG9yTWFzayhuLG4sbixuKSxpPW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlLGksbyxhLHMpeyEwPT09cyYmKGUqPWEsaSo9YSxvKj1hKSxuLnNldChlLGksbyxhKSwhMT09PXIuZXF1YWxzKG4pJiYodC5jbGVhckNvbG9yKGUsaSxvLGEpLHIuY29weShuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxpPW51bGwsci5zZXQoLTEsMCwwLDApfX19KSxhPW5ldyhmdW5jdGlvbiBzKCl7bGV0IGU9ITEsbj1udWxsLGk9bnVsbCxyPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7dD9GKDI5MjkpOlYoMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaSl7bj09PWl8fGV8fCh0LmRlcHRoTWFzayhpKSxuPWkpfSxzZXRGdW5jOmZ1bmN0aW9uKGUpe2lmKGkhPT1lKXtpZihlKXN3aXRjaChlKXtjYXNlIDA6dC5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIDE6dC5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIDI6dC5kZXB0aEZ1bmMoNTEzKTticmVhaztjYXNlIDM6dC5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIDQ6dC5kZXB0aEZ1bmMoNTE0KTticmVhaztjYXNlIDU6dC5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIDY6dC5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIDc6dC5kZXB0aEZ1bmMoNTE3KTticmVhaztkZWZhdWx0OnQuZGVwdGhGdW5jKDUxNSl9ZWxzZSB0LmRlcHRoRnVuYyg1MTUpO2k9ZX19LHNldExvY2tlZDpmdW5jdGlvbih0KXtlPXR9LHNldENsZWFyOmZ1bmN0aW9uKGUpe3IhPT1lJiYodC5jbGVhckRlcHRoKGUpLHI9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbH19fSksbD1uZXcoZnVuY3Rpb24gYygpe2xldCBlPSExLG49bnVsbCxpPW51bGwscj1udWxsLG89bnVsbCxhPW51bGwscz1udWxsLGw9bnVsbCxjPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7ZXx8KHQ/RigyOTYwKTpWKDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihpKXtuPT09aXx8ZXx8KHQuc3RlbmNpbE1hc2soaSksbj1pKX0sc2V0RnVuYzpmdW5jdGlvbihlLG4sYSl7aT09PWUmJnI9PT1uJiZvPT09YXx8KHQuc3RlbmNpbEZ1bmMoZSxuLGEpLGk9ZSxyPW4sbz1hKX0sc2V0T3A6ZnVuY3Rpb24oZSxuLGkpe2E9PT1lJiZzPT09biYmbD09PWl8fCh0LnN0ZW5jaWxPcChlLG4saSksYT1lLHM9bixsPWkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtjIT09ZSYmKHQuY2xlYXJTdGVuY2lsKGUpLGM9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbCxvPW51bGwsYT1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsfX19KTtsZXQgdT17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsO2NvbnN0IEE9dC5nZXRQYXJhbWV0ZXIoMzU2NjEpO2xldCBrPSExLEw9MDtjb25zdCBQPXQuZ2V0UGFyYW1ldGVyKDc5MzgpOy0xIT09UC5pbmRleE9mKCJXZWJHTCIpPyhMPXBhcnNlRmxvYXQoL15XZWJHTCAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTEpOi0xIT09UC5pbmRleE9mKCJPcGVuR0wgRVMiKSYmKEw9cGFyc2VGbG9hdCgvXk9wZW5HTCBFUyAoXGQpLy5leGVjKFApWzFdKSxrPUw+PTIpO2xldCBOPW51bGwsST17fTtjb25zdCBSPXQuZ2V0UGFyYW1ldGVyKDMwODgpLE89dC5nZXRQYXJhbWV0ZXIoMjk3OCksej0obmV3IHdKdCkuZnJvbUFycmF5KFIpLEQ9KG5ldyB3SnQpLmZyb21BcnJheShPKTtmdW5jdGlvbiBCKGUsbixpKXtjb25zdCByPW5ldyBVaW50OEFycmF5KDQpLG89dC5jcmVhdGVUZXh0dXJlKCk7dC5iaW5kVGV4dHVyZShlLG8pLHQudGV4UGFyYW1ldGVyaShlLDEwMjQxLDk3MjgpLHQudGV4UGFyYW1ldGVyaShlLDEwMjQwLDk3MjgpO2ZvcihsZXQgZT0wO2U8aTtlKyspdC50ZXhJbWFnZTJEKG4rZSwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLHIpO3JldHVybiBvfWNvbnN0IEg9e307ZnVuY3Rpb24gRihlKXshMCE9PXVbZV0mJih0LmVuYWJsZShlKSx1W2VdPSEwKX1mdW5jdGlvbiBWKGUpeyExIT09dVtlXSYmKHQuZGlzYWJsZShlKSx1W2VdPSExKX1IWzM1NTNdPUIoMzU1MywzNTUzLDEpLEhbMzQwNjddPUIoMzQwNjcsMzQwNjksNiksci5zZXRDbGVhcigwLDAsMCwxKSxhLnNldENsZWFyKDEpLGwuc2V0Q2xlYXIoMCksRigyOTI5KSxhLnNldEZ1bmMoMyksVyghMSkscSgxKSxGKDI4ODQpLEcoMCk7Y29uc3QgVT17W1ZLdF06MzI3NzQsMTAxOjMyNzc4LDEwMjozMjc3OX07aWYoaSlVWzEwM109MzI3NzUsVVsxMDRdPTMyNzc2O2Vsc2V7Y29uc3QgdD1lLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO251bGwhPT10JiYoVVsxMDNdPXQuTUlOX0VYVCxVWzEwNF09dC5NQVhfRVhUKX1jb25zdCBqPXsyMDA6MCwyMDE6MSwyMDI6NzY4LDIwNDo3NzAsMjEwOjc3NiwyMDg6Nzc0LDIwNjo3NzIsMjAzOjc2OSwyMDU6NzcxLDIwOTo3NzUsMjA3Ojc3M307ZnVuY3Rpb24gRyhlLG4saSxyLG8sYSxzLGwpe2lmKDAhPT1lKXtpZighMT09PWYmJihGKDMwNDIpLGY9ITApLDU9PT1lKW89b3x8bixhPWF8fGkscz1zfHxyLG49PT1nJiZvPT09dnx8KHQuYmxlbmRFcXVhdGlvblNlcGFyYXRlKFVbbl0sVVtvXSksZz1uLHY9byksaT09PV8mJnI9PT15JiZhPT09YiYmcz09PXh8fCh0LmJsZW5kRnVuY1NlcGFyYXRlKGpbaV0saltyXSxqW2FdLGpbc10pLF89aSx5PXIsYj1hLHg9cyksbT1lLHc9bnVsbDtlbHNlIGlmKGUhPT1tfHxsIT09dyl7aWYoZz09PVZLdCYmdj09PVZLdHx8KHQuYmxlbmRFcXVhdGlvbigzMjc3NCksZz1WS3Qsdj1WS3QpLGwpc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDAsNzY5LDc3MSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixlKX1lbHNlIHN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgMzp0LmJsZW5kRnVuYygwLDc2OSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jKDAsNzY4KTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9Xz1udWxsLHk9bnVsbCxiPW51bGwseD1udWxsLG09ZSx3PWx9fWVsc2UhMD09PWYmJihWKDMwNDIpLGY9ITEpfWZ1bmN0aW9uIFcoZSl7UyE9PWUmJih0LmZyb250RmFjZShlPzIzMDQ6MjMwNSksUz1lKX1mdW5jdGlvbiBxKGUpezAhPT1lPyhGKDI4ODQpLGUhPT1NJiZ0LmN1bGxGYWNlKDE9PT1lPzEwMjk6Mj09PWU/MTAyODoxMDMyKSk6VigyODg0KSxNPWV9ZnVuY3Rpb24gWShlLG4saSl7ZT8oRigzMjgyMyksVD09PW4mJkM9PT1pfHwodC5wb2x5Z29uT2Zmc2V0KG4saSksVD1uLEM9aSkpOlYoMzI4MjMpfWZ1bmN0aW9uIFgoZSl7dm9pZCAwPT09ZSYmKGU9MzM5ODQrQS0xKSxOIT09ZSYmKHQuYWN0aXZlVGV4dHVyZShlKSxOPWUpfXJldHVybntidWZmZXJzOntjb2xvcjpyLGRlcHRoOmEsc3RlbmNpbDpsfSxlbmFibGU6RixkaXNhYmxlOlYsYmluZEZyYW1lYnVmZmVyOmZ1bmN0aW9uICQoZSxuKXtyZXR1cm4gbnVsbD09PW4mJm51bGwhPT1oJiYobj1oKSxkW2VdIT09biYmKHQuYmluZEZyYW1lYnVmZmVyKGUsbiksZFtlXT1uLGkmJigzNjAwOT09PWUmJihkWzM2MTYwXT1uKSwzNjE2MD09PWUmJihkWzM2MDA5XT1uKSksITApfSxiaW5kWFJGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBLKGUpe2UhPT1oJiYodC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksaD1lKX0sdXNlUHJvZ3JhbTpmdW5jdGlvbiBaKGUpe3JldHVybiBwIT09ZSYmKHQudXNlUHJvZ3JhbShlKSxwPWUsITApfSxzZXRCbGVuZGluZzpHLHNldE1hdGVyaWFsOmZ1bmN0aW9uIEoodCxlKXsyPT09dC5zaWRlP1YoMjg4NCk6RigyODg0KTtsZXQgbj0xPT09dC5zaWRlO2UmJihuPSFuKSxXKG4pLDE9PT10LmJsZW5kaW5nJiYhMT09PXQudHJhbnNwYXJlbnQ/RygwKTpHKHQuYmxlbmRpbmcsdC5ibGVuZEVxdWF0aW9uLHQuYmxlbmRTcmMsdC5ibGVuZERzdCx0LmJsZW5kRXF1YXRpb25BbHBoYSx0LmJsZW5kU3JjQWxwaGEsdC5ibGVuZERzdEFscGhhLHQucHJlbXVsdGlwbGllZEFscGhhKSxhLnNldEZ1bmModC5kZXB0aEZ1bmMpLGEuc2V0VGVzdCh0LmRlcHRoVGVzdCksYS5zZXRNYXNrKHQuZGVwdGhXcml0ZSksci5zZXRNYXNrKHQuY29sb3JXcml0ZSk7Y29uc3QgaT10LnN0ZW5jaWxXcml0ZTtsLnNldFRlc3QoaSksaSYmKGwuc2V0TWFzayh0LnN0ZW5jaWxXcml0ZU1hc2spLGwuc2V0RnVuYyh0LnN0ZW5jaWxGdW5jLHQuc3RlbmNpbFJlZix0LnN0ZW5jaWxGdW5jTWFzayksbC5zZXRPcCh0LnN0ZW5jaWxGYWlsLHQuc3RlbmNpbFpGYWlsLHQuc3RlbmNpbFpQYXNzKSksWSh0LnBvbHlnb25PZmZzZXQsdC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHQucG9seWdvbk9mZnNldFVuaXRzKSwhMD09PXQuYWxwaGFUb0NvdmVyYWdlP0YoMzI5MjYpOlYoMzI5MjYpfSxzZXRGbGlwU2lkZWQ6VyxzZXRDdWxsRmFjZTpxLHNldExpbmVXaWR0aDpmdW5jdGlvbiBRKGUpe2UhPT1FJiYoayYmdC5saW5lV2lkdGgoZSksRT1lKX0sc2V0UG9seWdvbk9mZnNldDpZLHNldFNjaXNzb3JUZXN0OmZ1bmN0aW9uIHR0KHQpe3Q/RigzMDg5KTpWKDMwODkpfSxhY3RpdmVUZXh0dXJlOlgsYmluZFRleHR1cmU6ZnVuY3Rpb24gZXQoZSxuKXtudWxsPT09TiYmWCgpO2xldCBpPUlbTl07dm9pZCAwPT09aSYmKGk9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxJW05dPWkpLGkudHlwZT09PWUmJmkudGV4dHVyZT09PW58fCh0LmJpbmRUZXh0dXJlKGUsbnx8SFtlXSksaS50eXBlPWUsaS50ZXh0dXJlPW4pfSx1bmJpbmRUZXh0dXJlOmZ1bmN0aW9uIG50KCl7Y29uc3QgZT1JW05dO3ZvaWQgMCE9PWUmJnZvaWQgMCE9PWUudHlwZSYmKHQuYmluZFRleHR1cmUoZS50eXBlLG51bGwpLGUudHlwZT12b2lkIDAsZS50ZXh0dXJlPXZvaWQgMCl9LGNvbXByZXNzZWRUZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QuY29tcHJlc3NlZFRleEltYWdlMkQuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHRleEltYWdlMkQ6ZnVuY3Rpb24gcnQoKXt0cnl7dC50ZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uIG90KCl7dHJ5e3QudGV4SW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sc2Npc3NvcjpmdW5jdGlvbiBhdChlKXshMT09PXouZXF1YWxzKGUpJiYodC5zY2lzc29yKGUueCxlLnksZS56LGUudyksei5jb3B5KGUpKX0sdmlld3BvcnQ6ZnVuY3Rpb24gc3QoZSl7ITE9PT1ELmVxdWFscyhlKSYmKHQudmlld3BvcnQoZS54LGUueSxlLnosZS53KSxELmNvcHkoZSkpfSxyZXNldDpmdW5jdGlvbiBsdCgpe3QuZGlzYWJsZSgzMDQyKSx0LmRpc2FibGUoMjg4NCksdC5kaXNhYmxlKDI5MjkpLHQuZGlzYWJsZSgzMjgyMyksdC5kaXNhYmxlKDMwODkpLHQuZGlzYWJsZSgyOTYwKSx0LmRpc2FibGUoMzI5MjYpLHQuYmxlbmRFcXVhdGlvbigzMjc3NCksdC5ibGVuZEZ1bmMoMSwwKSx0LmJsZW5kRnVuY1NlcGFyYXRlKDEsMCwxLDApLHQuY29sb3JNYXNrKCEwLCEwLCEwLCEwKSx0LmNsZWFyQ29sb3IoMCwwLDAsMCksdC5kZXB0aE1hc2soITApLHQuZGVwdGhGdW5jKDUxMyksdC5jbGVhckRlcHRoKDEpLHQuc3RlbmNpbE1hc2soNDI5NDk2NzI5NSksdC5zdGVuY2lsRnVuYyg1MTksMCw0Mjk0OTY3Mjk1KSx0LnN0ZW5jaWxPcCg3NjgwLDc2ODAsNzY4MCksdC5jbGVhclN0ZW5jaWwoMCksdC5jdWxsRmFjZSgxMDI5KSx0LmZyb250RmFjZSgyMzA1KSx0LnBvbHlnb25PZmZzZXQoMCwwKSx0LmFjdGl2ZVRleHR1cmUoMzM5ODQpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpLCEwPT09aSYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MDA5LG51bGwpLHQuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG51bGwpKSx0LnVzZVByb2dyYW0obnVsbCksdC5saW5lV2lkdGgoMSksdC5zY2lzc29yKDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHQudmlld3BvcnQoMCwwLHQuY2FudmFzLndpZHRoLHQuY2FudmFzLmhlaWdodCksdT17fSxOPW51bGwsST17fSxoPW51bGwsZD17fSxwPW51bGwsZj0hMSxtPW51bGwsZz1udWxsLF89bnVsbCx5PW51bGwsdj1udWxsLGI9bnVsbCx4PW51bGwsdz0hMSxTPW51bGwsTT1udWxsLEU9bnVsbCxUPW51bGwsQz1udWxsLHouc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLEQuc2V0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLHIucmVzZXQoKSxhLnJlc2V0KCksbC5yZXNldCgpfX19ZnVuY3Rpb24gejV0KHQsZSxuLGkscixvLGEpe2NvbnN0IHM9ci5pc1dlYkdMMixsPXIubWF4VGV4dHVyZXMsYz1yLm1heEN1YmVtYXBTaXplLHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXIubWF4U2FtcGxlcyxkPW5ldyBXZWFrTWFwO2xldCBwLGY9ITE7dHJ5e2Y9InVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMmJm51bGwhPT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXt9ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBmP25ldyBPZmZzY3JlZW5DYW52YXModCxlKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKX1mdW5jdGlvbiBnKHQsZSxuLGkpe2xldCByPTE7aWYoKHQud2lkdGg+aXx8dC5oZWlnaHQ+aSkmJihyPWkvTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCkpLHI8MXx8ITA9PT1lKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7Y29uc3QgaT1lP3RKdDpNYXRoLmZsb29yLG89aShyKnQud2lkdGgpLGE9aShyKnQuaGVpZ2h0KTt2b2lkIDA9PT1wJiYocD1tKG8sYSkpO2NvbnN0IHM9bj9tKG8sYSk6cDtyZXR1cm4gcy53aWR0aD1vLHMuaGVpZ2h0PWEscy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0LDAsMCxvLGEpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikgdG8gKCIrbysieCIrYSsiKS4iKSxzfXJldHVybiJkYXRhImluIHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKS4iKSx0fXJldHVybiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJuIEpadCh0LndpZHRoKSYmSlp0KHQuaGVpZ2h0KX1mdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHQuZ2VuZXJhdGVNaXBtYXBzJiZlJiZ0Lm1pbkZpbHRlciE9PUpLdCYmdC5taW5GaWx0ZXIhPT1lWnR9ZnVuY3Rpb24gdihlLG4scixvLGE9MSl7dC5nZW5lcmF0ZU1pcG1hcChlKSxpLmdldChuKS5fX21heE1pcExldmVsPU1hdGgubG9nMihNYXRoLm1heChyLG8sYSkpfWZ1bmN0aW9uIGIobixpLHIpe2lmKCExPT09cylyZXR1cm4gaTtpZihudWxsIT09bil7aWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrbisiJyIpfWxldCBvPWk7cmV0dXJuIDY0MDM9PT1pJiYoNTEyNj09PXImJihvPTMzMzI2KSw1MTMxPT09ciYmKG89MzMzMjUpLDUxMjE9PT1yJiYobz0zMzMyMSkpLDY0MDc9PT1pJiYoNTEyNj09PXImJihvPTM0ODM3KSw1MTMxPT09ciYmKG89MzQ4NDMpLDUxMjE9PT1yJiYobz0zMjg0OSkpLDY0MDg9PT1pJiYoNTEyNj09PXImJihvPTM0ODM2KSw1MTMxPT09ciYmKG89MzQ4NDIpLDUxMjE9PT1yJiYobz0zMjg1NikpLDMzMzI1IT09byYmMzMzMjYhPT1vJiYzNDg0MiE9PW8mJjM0ODM2IT09b3x8ZS5nZXQoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSxvfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ9PT1KS3R8fHQ9PT1RS3R8fHQ9PT10WnQ/OTcyODo5NzI5fWZ1bmN0aW9uIHcoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSk7dm9pZCAwIT09bi5fX3dlYmdsSW5pdCYmKHQuZGVsZXRlVGV4dHVyZShuLl9fd2ViZ2xUZXh0dXJlKSxpLnJlbW92ZShlKSl9KShuKSxuLmlzVmlkZW9UZXh0dXJlJiZkLmRlbGV0ZShuKSxhLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIFMoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFMpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49ZS50ZXh0dXJlLHI9aS5nZXQoZSksbz1pLmdldChuKTtpZihlKXtpZih2b2lkIDAhPT1vLl9fd2ViZ2xUZXh0dXJlJiYodC5kZWxldGVUZXh0dXJlKG8uX193ZWJnbFRleHR1cmUpLGEubWVtb3J5LnRleHR1cmVzLS0pLGUuZGVwdGhUZXh0dXJlJiZlLmRlcHRoVGV4dHVyZS5kaXNwb3NlKCksZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldClmb3IobGV0IGU9MDtlPDY7ZSsrKXQuZGVsZXRlRnJhbWVidWZmZXIoci5fX3dlYmdsRnJhbWVidWZmZXJbZV0pLHIuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xEZXB0aGJ1ZmZlcltlXSk7ZWxzZSB0LmRlbGV0ZUZyYW1lYnVmZmVyKHIuX193ZWJnbEZyYW1lYnVmZmVyKSxyLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoci5fX3dlYmdsRGVwdGhidWZmZXIpLHIuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyJiZ0LmRlbGV0ZUZyYW1lYnVmZmVyKHIuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxyLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoci5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpLHIuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihyLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcik7aWYoZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKWZvcihsZXQgZT0wLHI9bi5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj1pLmdldChuW2VdKTtyLl9fd2ViZ2xUZXh0dXJlJiYodC5kZWxldGVUZXh0dXJlKHIuX193ZWJnbFRleHR1cmUpLGEubWVtb3J5LnRleHR1cmVzLS0pLGkucmVtb3ZlKG5bZV0pfWkucmVtb3ZlKG4pLGkucmVtb3ZlKGUpfX0pKG4pfWxldCBNPTA7ZnVuY3Rpb24gRSh0LGUpe2NvbnN0IHI9aS5nZXQodCk7aWYodC5pc1ZpZGVvVGV4dHVyZSYmKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT1hLnJlbmRlci5mcmFtZTtkLmdldCh0KSE9PWUmJihkLnNldCh0LGUpLHQudXBkYXRlKCkpfSkodCksdC52ZXJzaW9uPjAmJnIuX192ZXJzaW9uIT09dC52ZXJzaW9uKXtjb25zdCBuPXQuaW1hZ2U7aWYodm9pZCAwPT09biljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIHVuZGVmaW5lZCIpO2Vsc2V7aWYoITEhPT1uLmNvbXBsZXRlKXJldHVybiB2b2lkIFAocix0LGUpO2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgaW5jb21wbGV0ZSIpfX1uLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTUzLHIuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIFQoZSxyKXtjb25zdCBhPWkuZ2V0KGUpO2UudmVyc2lvbj4wJiZhLl9fdmVyc2lvbiE9PWUudmVyc2lvbj8oZnVuY3Rpb24gbChlLGkscil7aWYoNiE9PWkuaW1hZ2UubGVuZ3RoKXJldHVybjtMKGUsaSksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoMzQwNjcsZS5fX3dlYmdsVGV4dHVyZSksdC5waXhlbFN0b3JlaSgzNzQ0MCxpLmZsaXBZKSx0LnBpeGVsU3RvcmVpKDM3NDQxLGkucHJlbXVsdGlwbHlBbHBoYSksdC5waXhlbFN0b3JlaSgzMzE3LGkudW5wYWNrQWxpZ25tZW50KSx0LnBpeGVsU3RvcmVpKDM3NDQzLDApO2NvbnN0IGE9aSYmKGkuaXNDb21wcmVzc2VkVGV4dHVyZXx8aS5pbWFnZVswXS5pc0NvbXByZXNzZWRUZXh0dXJlKSxsPWkuaW1hZ2VbMF0mJmkuaW1hZ2VbMF0uaXNEYXRhVGV4dHVyZSx1PVtdO2ZvcihsZXQgdD0wO3Q8Njt0KyspdVt0XT1hfHxsP2w/aS5pbWFnZVt0XS5pbWFnZTppLmltYWdlW3RdOmcoaS5pbWFnZVt0XSwhMSwhMCxjKTtjb25zdCBoPXVbMF0sZD1fKGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0KSxmPW8uY29udmVydChpLnR5cGUpLG09YihpLmludGVybmFsRm9ybWF0LHAsZik7bGV0IHg7aWYoaygzNDA2NyxpLGQpLGEpe2ZvcihsZXQgdD0wO3Q8Njt0Kyspe3g9dVt0XS5taXBtYXBzO2ZvcihsZXQgZT0wO2U8eC5sZW5ndGg7ZSsrKXtjb25zdCByPXhbZV07aS5mb3JtYXQhPT1oWnQmJmkuZm9ybWF0IT09dVp0P251bGwhPT1wP24uY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrdCxlLG0sci53aWR0aCxyLmhlaWdodCwwLHIuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOm4udGV4SW1hZ2UyRCgzNDA2OSt0LGUsbSxyLndpZHRoLHIuaGVpZ2h0LDAscCxmLHIuZGF0YSl9fWUuX19tYXhNaXBMZXZlbD14Lmxlbmd0aC0xfWVsc2V7eD1pLm1pcG1hcHM7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihsKXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLG0sdVt0XS53aWR0aCx1W3RdLmhlaWdodCwwLHAsZix1W3RdLmRhdGEpO2ZvcihsZXQgZT0wO2U8eC5sZW5ndGg7ZSsrKXtjb25zdCBpPXhbZV0uaW1hZ2VbdF0uaW1hZ2U7bi50ZXhJbWFnZTJEKDM0MDY5K3QsZSsxLG0saS53aWR0aCxpLmhlaWdodCwwLHAsZixpLmRhdGEpfX1lbHNle24udGV4SW1hZ2UyRCgzNDA2OSt0LDAsbSxwLGYsdVt0XSk7Zm9yKGxldCBlPTA7ZTx4Lmxlbmd0aDtlKyspbi50ZXhJbWFnZTJEKDM0MDY5K3QsZSsxLG0scCxmLHhbZV0uaW1hZ2VbdF0pfWUuX19tYXhNaXBMZXZlbD14Lmxlbmd0aH15KGksZCkmJnYoMzQwNjcsaSxoLndpZHRoLGguaGVpZ2h0KSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX0pKGEsZSxyKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoMzQwNjcsYS5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IEM9e1skS3RdOjEwNDk3LFtLS3RdOjMzMDcxLFtaS3RdOjMzNjQ4fSxBPXtbSkt0XTo5NzI4LFtRS3RdOjk5ODQsW3RadF06OTk4NixbZVp0XTo5NzI5LFtuWnRdOjk5ODUsW2ladF06OTk4N307ZnVuY3Rpb24gayhuLG8sYSl7aWYoYT8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsQ1tvLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsQ1tvLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLENbby53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLEFbby5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxBW28ubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksby53cmFwUz09PUtLdCYmby53cmFwVD09PUtLdHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLHgoby5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSx4KG8ubWluRmlsdGVyKSksby5taW5GaWx0ZXIhPT1KS3QmJm8ubWluRmlsdGVyIT09ZVp0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IGE9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKG8udHlwZT09PXNadCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmby50eXBlPT09bFp0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoby5hbmlzb3Ryb3B5PjF8fGkuZ2V0KG8pLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sYS5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihvLmFuaXNvdHJvcHksci5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxpLmdldChvKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PW8uYW5pc290cm9weSl9fWZ1bmN0aW9uIEwoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gUChlLGkscil7bGV0IGE9MzU1MztpLmlzRGF0YVRleHR1cmUyREFycmF5JiYoYT0zNTg2NiksaS5pc0RhdGFUZXh0dXJlM0QmJihhPTMyODc5KSxMKGUsaSksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K3IpLG4uYmluZFRleHR1cmUoYSxlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLGkuZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsaS5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1LS3R8fHQud3JhcFQhPT1LS3R8fHQubWluRmlsdGVyIT09Skt0JiZ0Lm1pbkZpbHRlciE9PWVadCl9KShpKSYmITE9PT1fKGkuaW1hZ2UpLGg9ZyhpLmltYWdlLGwsITEsdSksZD1fKGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0KTtsZXQgZixtPW8uY29udmVydChpLnR5cGUpLHg9YihpLmludGVybmFsRm9ybWF0LHAsbSk7ayhhLGksZCk7Y29uc3Qgdz1pLm1pcG1hcHM7aWYoaS5pc0RlcHRoVGV4dHVyZSl4PTY0MDIscz94PWkudHlwZT09PXNadD8zNjAxMjppLnR5cGU9PT1hWnQ/MzMxOTA6aS50eXBlPT09Y1p0PzM1MDU2OjMzMTg5OmkudHlwZT09PXNadCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksaS5mb3JtYXQ9PT1kWnQmJjY0MDI9PT14JiZpLnR5cGUhPT1vWnQmJmkudHlwZSE9PWFadCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGkudHlwZT1vWnQsbT1vLmNvbnZlcnQoaS50eXBlKSksaS5mb3JtYXQ9PT1wWnQmJjY0MDI9PT14JiYoeD0zNDA0MSxpLnR5cGUhPT1jWnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksaS50eXBlPWNadCxtPW8uY29udmVydChpLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0sbnVsbCk7ZWxzZSBpZihpLmlzRGF0YVRleHR1cmUpaWYody5sZW5ndGg+MCYmZCl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2kuZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKGkuaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxpLmZvcm1hdCE9PWhadCYmaS5mb3JtYXQhPT11WnQ/bnVsbCE9PXA/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQseCxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2UuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2UgaWYoaS5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCx4LGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoaS5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAseCxoLndpZHRoLGguaGVpZ2h0LGguZGVwdGgsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHcubGVuZ3RoPjAmJmQpe2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKylmPXdbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCx4LHAsbSxmKTtpLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9dy5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAseCxwLG0saCksZS5fX21heE1pcExldmVsPTA7eShpLGQpJiZ2KGEsaSxoLndpZHRoLGguaGVpZ2h0KSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX1mdW5jdGlvbiBOKGUscixhLHMsbCl7Y29uc3QgYz1vLmNvbnZlcnQoYS5mb3JtYXQpLHU9by5jb252ZXJ0KGEudHlwZSksaD1iKGEuaW50ZXJuYWxGb3JtYXQsYyx1KTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLGgsci53aWR0aCxyLmhlaWdodCxyLmRlcHRoLDAsYyx1LG51bGwpOm4udGV4SW1hZ2UyRChsLDAsaCxyLndpZHRoLHIuaGVpZ2h0LDAsYyx1LG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLGkuZ2V0KGEpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIEkoZSxuLGkpe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgcj0zMzE4OTtpZihpKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT1zWnQ/cj0zNjAxMjplLnR5cGU9PT1hWnQmJihyPTMzMTkwKSk7Y29uc3QgaT1SKG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGkscixuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxyLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKGkpe2NvbnN0IGU9UihuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUscj1vLmNvbnZlcnQoZS5mb3JtYXQpLGE9by5jb252ZXJ0KGUudHlwZSkscz1iKGUuaW50ZXJuYWxGb3JtYXQscixhKTtpZihpKXtjb25zdCBlPVIobik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIFIodCl7cmV0dXJuIHMmJnQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P01hdGgubWluKGgsdC5zYW1wbGVzKTowfWxldCBPPSExLHo9ITE7dGhpcy5hbGxvY2F0ZVRleHR1cmVVbml0PWZ1bmN0aW9uIEQoKXtjb25zdCB0PU07cmV0dXJuIHQ+PWwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK3QrIiB0ZXh0dXJlIHVuaXRzIHdoaWxlIHRoaXMgR1BVIHN1cHBvcnRzIG9ubHkgIitsKSxNKz0xLHR9LHRoaXMucmVzZXRUZXh0dXJlVW5pdHM9ZnVuY3Rpb24gQigpe009MH0sdGhpcy5zZXRUZXh0dXJlMkQ9RSx0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uIEgodCxlKXtjb25zdCByPWkuZ2V0KHQpO3QudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9QKHIsdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU4NjYsci5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmUzRD1mdW5jdGlvbiBGKHQsZSl7Y29uc3Qgcj1pLmdldCh0KTt0LnZlcnNpb24+MCYmci5fX3ZlcnNpb24hPT10LnZlcnNpb24/UChyLHQsZSk6KG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSxuLmJpbmRUZXh0dXJlKDMyODc5LHIuX193ZWJnbFRleHR1cmUpKX0sdGhpcy5zZXRUZXh0dXJlQ3ViZT1ULHRoaXMuc2V0dXBSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVihlKXtjb25zdCBsPWUudGV4dHVyZSxjPWkuZ2V0KGUpLHU9aS5nZXQobCk7ZS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixTKSwhMCE9PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyYmKHUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksdS5fX3ZlcnNpb249bC52ZXJzaW9uLGEubWVtb3J5LnRleHR1cmVzKyspO2NvbnN0IGg9ITA9PT1lLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0LGQ9ITA9PT1lLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMscD0hMD09PWUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0LGY9bC5pc0RhdGFUZXh0dXJlM0R8fGwuaXNEYXRhVGV4dHVyZTJEQXJyYXksbT1fKGUpfHxzO2lmKCFzfHxsLmZvcm1hdCE9PXVadHx8bC50eXBlIT09c1p0JiZsLnR5cGUhPT1sWnR8fChsLmZvcm1hdD1oWnQsY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBSZW5kZXJpbmcgdG8gdGV4dHVyZXMgd2l0aCBSR0IgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuIFVzaW5nIFJHQkEgZm9ybWF0IGluc3RlYWQuIikpLGgpe2MuX193ZWJnbEZyYW1lYnVmZmVyPVtdO2ZvcihsZXQgZT0wO2U8NjtlKyspYy5fX3dlYmdsRnJhbWVidWZmZXJbZV09dC5jcmVhdGVGcmFtZWJ1ZmZlcigpfWVsc2UgaWYoYy5fX3dlYmdsRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLGQpaWYoci5kcmF3QnVmZmVycyl7Y29uc3Qgbj1lLnRleHR1cmU7Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPWkuZ2V0KG5bZV0pO3ZvaWQgMD09PXIuX193ZWJnbFRleHR1cmUmJihyLl9fd2ViZ2xUZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLGEubWVtb3J5LnRleHR1cmVzKyspfX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMiBvciBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uLiIpO2Vsc2UgaWYocClpZihzKXtjLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksYy5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXI9dC5jcmVhdGVSZW5kZXJidWZmZXIoKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsYy5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2NvbnN0IGk9by5jb252ZXJ0KGwuZm9ybWF0KSxyPW8uY29udmVydChsLnR5cGUpLGE9YihsLmludGVybmFsRm9ybWF0LGkscikscz1SKGUpO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHMsYSxlLndpZHRoLGUuaGVpZ2h0KSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxjLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA2NCwzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLGUuZGVwdGhCdWZmZXImJihjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLEkoYy5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIsZSwhMCkpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7aWYoaCl7bi5iaW5kVGV4dHVyZSgzNDA2Nyx1Ll9fd2ViZ2xUZXh0dXJlKSxrKDM0MDY3LGwsbSk7Zm9yKGxldCB0PTA7dDw2O3QrKylOKGMuX193ZWJnbEZyYW1lYnVmZmVyW3RdLGUsbCwzNjA2NCwzNDA2OSt0KTt5KGwsbSkmJnYoMzQwNjcsbCxlLndpZHRoLGUuaGVpZ2h0KSxuLmJpbmRUZXh0dXJlKDM0MDY3LG51bGwpfWVsc2UgaWYoZCl7Y29uc3QgdD1lLnRleHR1cmU7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87cisrKXtjb25zdCBvPXRbcl0sYT1pLmdldChvKTtuLmJpbmRUZXh0dXJlKDM1NTMsYS5fX3dlYmdsVGV4dHVyZSksaygzNTUzLG8sbSksTihjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLG8sMzYwNjQrciwzNTUzKSx5KG8sbSkmJnYoMzU1MyxvLGUud2lkdGgsZS5oZWlnaHQpfW4uYmluZFRleHR1cmUoMzU1MyxudWxsKX1lbHNle2xldCB0PTM1NTM7ZiYmKHM/dD1sLmlzRGF0YVRleHR1cmUzRD8zMjg3OTozNTg2Njpjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKSksbi5iaW5kVGV4dHVyZSh0LHUuX193ZWJnbFRleHR1cmUpLGsodCxsLG0pLE4oYy5fX3dlYmdsRnJhbWVidWZmZXIsZSxsLDM2MDY0LHQpLHkobCxtKSYmdih0LGwsZS53aWR0aCxlLmhlaWdodCxlLmRlcHRoKSxuLmJpbmRUZXh0dXJlKHQsbnVsbCl9ZS5kZXB0aEJ1ZmZlciYmKGZ1bmN0aW9uIGcoZSl7Y29uc3Qgcj1pLmdldChlKSxvPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYobyl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiBhKGUscil7aWYociYmci5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhci5kZXB0aFRleHR1cmV8fCFyLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtpLmdldChyLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJnIuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09ci53aWR0aCYmci5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09ci5oZWlnaHR8fChyLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1yLndpZHRoLHIuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1yLmhlaWdodCxyLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksRShyLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBvPWkuZ2V0KHIuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1kWnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLG8sMCk7ZWxzZXtpZihyLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1wWnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsbywwKX19KShyLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKG8pe3IuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgaT0wO2k8NjtpKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsci5fX3dlYmdsRnJhbWVidWZmZXJbaV0pLHIuX193ZWJnbERlcHRoYnVmZmVyW2ldPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksSShyLl9fd2ViZ2xEZXB0aGJ1ZmZlcltpXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLHIuX193ZWJnbEZyYW1lYnVmZmVyKSxyLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLEkoci5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9KShlKX0sdGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA9ZnVuY3Rpb24gVSh0KXtjb25zdCBlPV8odCl8fHMscj0hMD09PXQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz90LnRleHR1cmU6W3QudGV4dHVyZV07Zm9yKGxldCBvPTAsYT1yLmxlbmd0aDtvPGE7bysrKXtjb25zdCBhPXJbb107aWYoeShhLGUpKXtjb25zdCBlPXQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/MzQwNjc6MzU1MyxyPWkuZ2V0KGEpLl9fd2ViZ2xUZXh0dXJlO24uYmluZFRleHR1cmUoZSxyKSx2KGUsYSx0LndpZHRoLHQuaGVpZ2h0KSxuLmJpbmRUZXh0dXJlKGUsbnVsbCl9fX0sdGhpcy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldD1mdW5jdGlvbiBqKGUpe2lmKGUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KWlmKHMpe2NvbnN0IHI9ZS53aWR0aCxvPWUuaGVpZ2h0O2xldCBhPTE2Mzg0O2UuZGVwdGhCdWZmZXImJihhfD0yNTYpLGUuc3RlbmNpbEJ1ZmZlciYmKGF8PTEwMjQpO2NvbnN0IHM9aS5nZXQoZSk7bi5iaW5kRnJhbWVidWZmZXIoMzYwMDgscy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbEZyYW1lYnVmZmVyKSx0LmJsaXRGcmFtZWJ1ZmZlcigwLDAscixvLDAsMCxyLG8sYSw5NzI4KSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcil9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKX0sdGhpcy5zYWZlU2V0VGV4dHVyZTJEPWZ1bmN0aW9uIEcodCxlKXt0JiZ0LmlzV2ViR0xSZW5kZXJUYXJnZXQmJighMT09PU8mJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmUyRDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxPPSEwKSx0PXQudGV4dHVyZSksRSh0LGUpfSx0aGlzLnNhZmVTZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbiBXKHQsZSl7dCYmdC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKCExPT09eiYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZUN1YmU6IGRvbid0IHVzZSBjdWJlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSx6PSEwKSx0PXQudGV4dHVyZSksVCh0LGUpfX1mdW5jdGlvbiBENXQodCxlLG4pe2NvbnN0IGk9bi5pc1dlYkdMMjtyZXR1cm57Y29udmVydDpmdW5jdGlvbiByKHQpe2xldCBuO2lmKHQ9PT1yWnQpcmV0dXJuIDUxMjE7aWYoMTAxNz09PXQpcmV0dXJuIDMyODE5O2lmKDEwMTg9PT10KXJldHVybiAzMjgyMDtpZigxMDE5PT09dClyZXR1cm4gMzM2MzU7aWYoMTAxMD09PXQpcmV0dXJuIDUxMjA7aWYoMTAxMT09PXQpcmV0dXJuIDUxMjI7aWYodD09PW9adClyZXR1cm4gNTEyMztpZigxMDEzPT09dClyZXR1cm4gNTEyNDtpZih0PT09YVp0KXJldHVybiA1MTI1O2lmKHQ9PT1zWnQpcmV0dXJuIDUxMjY7aWYodD09PWxadClyZXR1cm4gaT81MTMxOihuPWUuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksbnVsbCE9PW4/bi5IQUxGX0ZMT0FUX09FUzpudWxsKTtpZigxMDIxPT09dClyZXR1cm4gNjQwNjtpZih0PT09dVp0KXJldHVybiA2NDA3O2lmKHQ9PT1oWnQpcmV0dXJuIDY0MDg7aWYoMTAyND09PXQpcmV0dXJuIDY0MDk7aWYoMTAyNT09PXQpcmV0dXJuIDY0MTA7aWYodD09PWRadClyZXR1cm4gNjQwMjtpZih0PT09cFp0KXJldHVybiAzNDA0MTtpZigxMDI4PT09dClyZXR1cm4gNjQwMztpZigxMDI5PT09dClyZXR1cm4gMzYyNDQ7aWYoMTAzMD09PXQpcmV0dXJuIDMzMzE5O2lmKDEwMzE9PT10KXJldHVybiAzMzMyMDtpZigxMDMyPT09dClyZXR1cm4gMzYyNDg7aWYoMTAzMz09PXQpcmV0dXJuIDM2MjQ5O2lmKHQ9PT1mWnR8fHQ9PT1tWnR8fHQ9PT1nWnR8fHQ9PT1fWnQpe2lmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIiksbnVsbD09PW4pcmV0dXJuIG51bGw7aWYodD09PWZadClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUO2lmKHQ9PT1tWnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYodD09PWdadClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDtpZih0PT09X1p0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUfWlmKHQ9PT15WnR8fHQ9PT12WnR8fHQ9PT1iWnR8fHQ9PT14WnQpe2lmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLG51bGw9PT1uKXJldHVybiBudWxsO2lmKHQ9PT15WnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRztpZih0PT09dlp0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYodD09PWJadClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztpZih0PT09eFp0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HfWlmKDM2MTk2PT09dClyZXR1cm4gbj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiKSxudWxsIT09bj9uLkNPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w6bnVsbDtpZigodD09PXdadHx8dD09PVNadCkmJihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiksbnVsbCE9PW4pKXtpZih0PT09d1p0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCOF9FVEMyO2lmKHQ9PT1TWnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQ31yZXR1cm4gMzc4MDg9PT10fHwzNzgwOT09PXR8fDM3ODEwPT09dHx8Mzc4MTE9PT10fHwzNzgxMj09PXR8fDM3ODEzPT09dHx8Mzc4MTQ9PT10fHwzNzgxNT09PXR8fDM3ODE2PT09dHx8Mzc4MTc9PT10fHwzNzgxOD09PXR8fDM3ODE5PT09dHx8Mzc4MjA9PT10fHwzNzgyMT09PXR8fDM3ODQwPT09dHx8Mzc4NDE9PT10fHwzNzg0Mj09PXR8fDM3ODQzPT09dHx8Mzc4NDQ9PT10fHwzNzg0NT09PXR8fDM3ODQ2PT09dHx8Mzc4NDc9PT10fHwzNzg0OD09PXR8fDM3ODQ5PT09dHx8Mzc4NTA9PT10fHwzNzg1MT09PXR8fDM3ODUyPT09dHx8Mzc4NTM9PT10PyhuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIpLG51bGwhPT1uP3Q6bnVsbCk6MzY0OTI9PT10PyhuPWUuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIiksbnVsbCE9PW4/dDpudWxsKTp0PT09Y1p0P2k/MzQwNDI6KG49ZS5nZXQoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxudWxsIT09bj9uLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGwpOnZvaWQgMH19fUk1dC5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMDtjbGFzcyBCNXQgZXh0ZW5kcyBxMXR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLmNhbWVyYXM9dH19QjV0LnByb3RvdHlwZS5pc0FycmF5Q2FtZXJhPSEwO2NsYXNzIEg1dCBleHRlbmRzIGtRdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJHcm91cCJ9fUg1dC5wcm90b3R5cGUuaXNHcm91cD0hMDtjb25zdCBGNXQ9e3R5cGU6Im1vdmUifTtjbGFzcyBWNXR7Y29uc3RydWN0b3IoKXt0aGlzLl90YXJnZXRSYXk9bnVsbCx0aGlzLl9ncmlwPW51bGwsdGhpcy5faGFuZD1udWxsfWdldEhhbmRTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQ9bmV3IEg1dCx0aGlzLl9oYW5kLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5faGFuZC52aXNpYmxlPSExLHRoaXMuX2hhbmQuam9pbnRzPXt9LHRoaXMuX2hhbmQuaW5wdXRTdGF0ZT17cGluY2hpbmc6ITF9KSx0aGlzLl9oYW5kfWdldFRhcmdldFJheVNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXk9bmV3IEg1dCx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBDSnQsdGhpcy5fdGFyZ2V0UmF5Lmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl90YXJnZXRSYXkuYW5ndWxhclZlbG9jaXR5PW5ldyBDSnQpLHRoaXMuX3RhcmdldFJheX1nZXRHcmlwU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwPW5ldyBINXQsdGhpcy5fZ3JpcC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2dyaXAudmlzaWJsZT0hMSx0aGlzLl9ncmlwLmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAubGluZWFyVmVsb2NpdHk9bmV3IENKdCx0aGlzLl9ncmlwLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmFuZ3VsYXJWZWxvY2l0eT1uZXcgQ0p0KSx0aGlzLl9ncmlwfWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuIG51bGwhPT10aGlzLl90YXJnZXRSYXkmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9ncmlwJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2hhbmQmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfWRpc2Nvbm5lY3QodCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOnR9KSxudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcC52aXNpYmxlPSExKSxudWxsIT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQudmlzaWJsZT0hMSksdGhpc311cGRhdGUodCxlLG4pe2xldCBpPW51bGwscj1udWxsLG89bnVsbDtjb25zdCBhPXRoaXMuX3RhcmdldFJheSxzPXRoaXMuX2dyaXAsbD10aGlzLl9oYW5kO2lmKHQmJiJ2aXNpYmxlLWJsdXJyZWQiIT09ZS5zZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSlpZihudWxsIT09YSYmKGk9ZS5nZXRQb3NlKHQudGFyZ2V0UmF5U3BhY2UsbiksbnVsbCE9PWkmJihhLm1hdHJpeC5mcm9tQXJyYXkoaS50cmFuc2Zvcm0ubWF0cml4KSxhLm1hdHJpeC5kZWNvbXBvc2UoYS5wb3NpdGlvbixhLnJvdGF0aW9uLGEuc2NhbGUpLGkubGluZWFyVmVsb2NpdHk/KGEuaGFzTGluZWFyVmVsb2NpdHk9ITAsYS5saW5lYXJWZWxvY2l0eS5jb3B5KGkubGluZWFyVmVsb2NpdHkpKTphLmhhc0xpbmVhclZlbG9jaXR5PSExLGkuYW5ndWxhclZlbG9jaXR5PyhhLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxhLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KGkuYW5ndWxhclZlbG9jaXR5KSk6YS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KEY1dCkpKSxsJiZ0LmhhbmQpe289ITA7Zm9yKGNvbnN0IGkgb2YgdC5oYW5kLnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0Sm9pbnRQb3NlKGksbik7aWYodm9pZCAwPT09bC5qb2ludHNbaS5qb2ludE5hbWVdKXtjb25zdCB0PW5ldyBINXQ7dC5tYXRyaXhBdXRvVXBkYXRlPSExLHQudmlzaWJsZT0hMSxsLmpvaW50c1tpLmpvaW50TmFtZV09dCxsLmFkZCh0KX1jb25zdCByPWwuam9pbnRzW2kuam9pbnROYW1lXTtudWxsIT09dCYmKHIubWF0cml4LmZyb21BcnJheSh0LnRyYW5zZm9ybS5tYXRyaXgpLHIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucm90YXRpb24sci5zY2FsZSksci5qb2ludFJhZGl1cz10LnJhZGl1cyksci52aXNpYmxlPW51bGwhPT10fWNvbnN0IGk9bC5qb2ludHNbImluZGV4LWZpbmdlci10aXAiXS5wb3NpdGlvbi5kaXN0YW5jZVRvKGwuam9pbnRzWyJ0aHVtYi10aXAiXS5wb3NpdGlvbikscj0uMDIsYT0uMDA1O2wuaW5wdXRTdGF0ZS5waW5jaGluZyYmaT5yK2E/KGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoZW5kIixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKTohbC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZpPD1yLWEmJihsLmlucHV0U3RhdGUucGluY2hpbmc9ITAsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaHN0YXJ0IixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKX1lbHNlIG51bGwhPT1zJiZ0LmdyaXBTcGFjZSYmKHI9ZS5nZXRQb3NlKHQuZ3JpcFNwYWNlLG4pLG51bGwhPT1yJiYocy5tYXRyaXguZnJvbUFycmF5KHIudHJhbnNmb3JtLm1hdHJpeCkscy5tYXRyaXguZGVjb21wb3NlKHMucG9zaXRpb24scy5yb3RhdGlvbixzLnNjYWxlKSxyLmxpbmVhclZlbG9jaXR5PyhzLmhhc0xpbmVhclZlbG9jaXR5PSEwLHMubGluZWFyVmVsb2NpdHkuY29weShyLmxpbmVhclZlbG9jaXR5KSk6cy5oYXNMaW5lYXJWZWxvY2l0eT0hMSxyLmFuZ3VsYXJWZWxvY2l0eT8ocy5oYXNBbmd1bGFyVmVsb2NpdHk9ITAscy5hbmd1bGFyVmVsb2NpdHkuY29weShyLmFuZ3VsYXJWZWxvY2l0eSkpOnMuaGFzQW5ndWxhclZlbG9jaXR5PSExKSk7cmV0dXJuIG51bGwhPT1hJiYoYS52aXNpYmxlPW51bGwhPT1pKSxudWxsIT09cyYmKHMudmlzaWJsZT1udWxsIT09ciksbnVsbCE9PWwmJihsLnZpc2libGU9bnVsbCE9PW8pLHRoaXN9fWNsYXNzIFU1dCBleHRlbmRzIGpadHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCk7Y29uc3Qgbj10aGlzLGk9dC5zdGF0ZTtsZXQgcj1udWxsLG89MSxhPW51bGwscz0ibG9jYWwtZmxvb3IiLGw9bnVsbCxjPW51bGwsdT1udWxsLGg9bnVsbCxkPW51bGw7Y29uc3QgcD1bXSxmPW5ldyBNYXAsbT1uZXcgcTF0O20ubGF5ZXJzLmVuYWJsZSgxKSxtLnZpZXdwb3J0PW5ldyB3SnQ7Y29uc3QgZz1uZXcgcTF0O2cubGF5ZXJzLmVuYWJsZSgyKSxnLnZpZXdwb3J0PW5ldyB3SnQ7Y29uc3QgXz1bbSxnXSx5PW5ldyBCNXQ7eS5sYXllcnMuZW5hYmxlKDEpLHkubGF5ZXJzLmVuYWJsZSgyKTtsZXQgdj1udWxsLGI9bnVsbDtmdW5jdGlvbiB4KHQpe2NvbnN0IGU9Zi5nZXQodC5pbnB1dFNvdXJjZSk7ZSYmZS5kaXNwYXRjaEV2ZW50KHt0eXBlOnQudHlwZSxkYXRhOnQuaW5wdXRTb3VyY2V9KX1mdW5jdGlvbiB3KCl7Zi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZGlzY29ubmVjdChlKX0pKSxmLmNsZWFyKCksdj1udWxsLGI9bnVsbCxpLmJpbmRYUkZyYW1lYnVmZmVyKG51bGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHQuZ2V0UmVuZGVyVGFyZ2V0KCkpLEEuc3RvcCgpLG4uaXNQcmVzZW50aW5nPSExLG4uZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX1mdW5jdGlvbiBTKHQpe2NvbnN0IGU9ci5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxwLmxlbmd0aDt0KyspZi5zZXQoZVt0XSxwW3RdKTtmb3IobGV0IGU9MDtlPHQucmVtb3ZlZC5sZW5ndGg7ZSsrKXtjb25zdCBuPXQucmVtb3ZlZFtlXSxpPWYuZ2V0KG4pO2kmJihpLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTpufSksZi5kZWxldGUobikpfWZvcihsZXQgZT0wO2U8dC5hZGRlZC5sZW5ndGg7ZSsrKXtjb25zdCBuPXQuYWRkZWRbZV0saT1mLmdldChuKTtpJiZpLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImNvbm5lY3RlZCIsZGF0YTpufSl9fXRoaXMuY2FtZXJhQXV0b1VwZGF0ZT0hMCx0aGlzLmVuYWJsZWQ9ITEsdGhpcy5pc1ByZXNlbnRpbmc9ITEsdGhpcy5nZXRDb250cm9sbGVyPWZ1bmN0aW9uKHQpe2xldCBlPXBbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBWNXQscFt0XT1lKSxlLmdldFRhcmdldFJheVNwYWNlKCl9LHRoaXMuZ2V0Q29udHJvbGxlckdyaXA9ZnVuY3Rpb24odCl7bGV0IGU9cFt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IFY1dCxwW3RdPWUpLGUuZ2V0R3JpcFNwYWNlKCl9LHRoaXMuZ2V0SGFuZD1mdW5jdGlvbih0KXtsZXQgZT1wW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgVjV0LHBbdF09ZSksZS5nZXRIYW5kU3BhY2UoKX0sdGhpcy5zZXRGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yPWZ1bmN0aW9uKHQpe289dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSBmcmFtZWJ1ZmZlciBzY2FsZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLnNldFJlZmVyZW5jZVNwYWNlVHlwZT1mdW5jdGlvbih0KXtzPXQsITA9PT1uLmlzUHJlc2VudGluZyYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgcmVmZXJlbmNlIHNwYWNlIHR5cGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5nZXRSZWZlcmVuY2VTcGFjZT1mdW5jdGlvbigpe3JldHVybiBhfSx0aGlzLmdldFNlc3Npb249ZnVuY3Rpb24oKXtyZXR1cm4gcn0sdGhpcy5zZXRTZXNzaW9uPWFzeW5jIGZ1bmN0aW9uKHQpe2lmKHI9dCxudWxsIT09cil7ci5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3QiLHgpLHIuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0c3RhcnQiLHgpLHIuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZW5kIix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemUiLHgpLHIuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZXN0YXJ0Iix4KSxyLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVlbmQiLHgpLHIuYWRkRXZlbnRMaXN0ZW5lcigiZW5kIix3KSxyLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0c291cmNlc2NoYW5nZSIsUyk7Y29uc3QgdD1lLmdldENvbnRleHRBdHRyaWJ1dGVzKCk7aWYoITAhPT10LnhyQ29tcGF0aWJsZSYmYXdhaXQgZS5tYWtlWFJDb21wYXRpYmxlKCksdm9pZCAwPT09ci5yZW5kZXJTdGF0ZS5sYXllcnMpZD1uZXcgWFJXZWJHTExheWVyKHIsZSx7YW50aWFsaWFzOnQuYW50aWFsaWFzLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOm99KSxyLnVwZGF0ZVJlbmRlclN0YXRlKHtiYXNlTGF5ZXI6ZH0pO2Vsc2V7bGV0IG49MDtpZih0LmFudGlhbGlhcylkPW5ldyBYUldlYkdMTGF5ZXIocixlLHthbnRpYWxpYXM6ITAsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pLHIudXBkYXRlUmVuZGVyU3RhdGUoe2xheWVyczpbZF19KTtlbHNle3QuZGVwdGgmJihuPXQuc3RlbmNpbD8zNDA0MTo2NDAyKTtjb25zdCBpPXtjb2xvckZvcm1hdDp0LmFscGhhPzY0MDg6NjQwNyxkZXB0aEZvcm1hdDpuLHNjYWxlRmFjdG9yOm99O2M9bmV3IFhSV2ViR0xCaW5kaW5nKHIsZSksaD1jLmNyZWF0ZVByb2plY3Rpb25MYXllcihpKSx1PWUuY3JlYXRlRnJhbWVidWZmZXIoKSxyLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2hdfSl9fWE9YXdhaXQgci5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UocyksQS5zZXRDb250ZXh0KHIpLEEuc3RhcnQoKSxuLmlzUHJlc2VudGluZz0hMCxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25zdGFydCJ9KX19O2NvbnN0IE09bmV3IENKdCxFPW5ldyBDSnQ7ZnVuY3Rpb24gVCh0LGUpe251bGw9PT1lP3QubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeCk6dC5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKGUubWF0cml4V29ybGQsdC5tYXRyaXgpLHQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dGhpcy51cGRhdGVDYW1lcmE9ZnVuY3Rpb24odCl7aWYobnVsbD09PXIpcmV0dXJuO3kubmVhcj1nLm5lYXI9bS5uZWFyPXQubmVhcix5LmZhcj1nLmZhcj1tLmZhcj10LmZhcix2PT09eS5uZWFyJiZiPT09eS5mYXJ8fChyLnVwZGF0ZVJlbmRlclN0YXRlKHtkZXB0aE5lYXI6eS5uZWFyLGRlcHRoRmFyOnkuZmFyfSksdj15Lm5lYXIsYj15LmZhcik7Y29uc3QgZT10LnBhcmVudCxuPXkuY2FtZXJhcztUKHksZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspVChuW3RdLGUpO3kubWF0cml4V29ybGQuZGVjb21wb3NlKHkucG9zaXRpb24seS5xdWF0ZXJuaW9uLHkuc2NhbGUpLHQucG9zaXRpb24uY29weSh5LnBvc2l0aW9uKSx0LnF1YXRlcm5pb24uY29weSh5LnF1YXRlcm5pb24pLHQuc2NhbGUuY29weSh5LnNjYWxlKSx0Lm1hdHJpeC5jb3B5KHkubWF0cml4KSx0Lm1hdHJpeFdvcmxkLmNvcHkoeS5tYXRyaXhXb3JsZCk7Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKylpW3RdLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTsyPT09bi5sZW5ndGg/KGZ1bmN0aW9uIG8odCxlLG4pe00uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLEUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG4ubWF0cml4V29ybGQpO2NvbnN0IGk9TS5kaXN0YW5jZVRvKEUpLHI9ZS5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLG89bi5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGE9clsxNF0vKHJbMTBdLTEpLHM9clsxNF0vKHJbMTBdKzEpLGw9KHJbOV0rMSkvcls1XSxjPShyWzldLTEpL3JbNV0sdT0ocls4XS0xKS9yWzBdLGg9KG9bOF0rMSkvb1swXSxkPWEqdSxwPWEqaCxmPWkvKC11K2gpLG09ZiotdTtlLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0LnRyYW5zbGF0ZVgobSksdC50cmFuc2xhdGVaKGYpLHQubWF0cml4V29ybGQuY29tcG9zZSh0LnBvc2l0aW9uLHQucXVhdGVybmlvbix0LnNjYWxlKSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpO2NvbnN0IGc9YStmLF89cytmO3QucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoZC1tLHArKGktbSksbCpzL18qZyxjKnMvXypnLGcsXyl9KSh5LG0sZyk6eS5wcm9qZWN0aW9uTWF0cml4LmNvcHkobS5wcm9qZWN0aW9uTWF0cml4KX0sdGhpcy5nZXRDYW1lcmE9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRGb3ZlYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PWg/aC5maXhlZEZvdmVhdGlvbjpudWxsIT09ZD9kLmZpeGVkRm92ZWF0aW9uOnZvaWQgMH0sdGhpcy5zZXRGb3ZlYXRpb249ZnVuY3Rpb24odCl7bnVsbCE9PWgmJihoLmZpeGVkRm92ZWF0aW9uPXQpLG51bGwhPT1kJiZ2b2lkIDAhPT1kLmZpeGVkRm92ZWF0aW9uJiYoZC5maXhlZEZvdmVhdGlvbj10KX07bGV0IEM9bnVsbDtjb25zdCBBPW5ldyByMHQ7QS5zZXRBbmltYXRpb25Mb29wKChmdW5jdGlvbiBrKHQsbil7aWYobD1uLmdldFZpZXdlclBvc2UoYSksbnVsbCE9PWwpe2NvbnN0IHQ9bC52aWV3cztudWxsIT09ZCYmaS5iaW5kWFJGcmFtZWJ1ZmZlcihkLmZyYW1lYnVmZmVyKTtsZXQgbj0hMTt0Lmxlbmd0aCE9PXkuY2FtZXJhcy5sZW5ndGgmJih5LmNhbWVyYXMubGVuZ3RoPTAsbj0hMCk7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2NvbnN0IG89dFtyXTtsZXQgYT1udWxsO2lmKG51bGwhPT1kKWE9ZC5nZXRWaWV3cG9ydChvKTtlbHNle2NvbnN0IHQ9Yy5nZXRWaWV3U3ViSW1hZ2UoaCxvKTtpLmJpbmRYUkZyYW1lYnVmZmVyKHUpLHZvaWQgMCE9PXQuZGVwdGhTdGVuY2lsVGV4dHVyZSYmZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLHQuZGVwdGhTdGVuY2lsVGV4dHVyZSwwKSxlLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM1NTMsdC5jb2xvclRleHR1cmUsMCksYT10LnZpZXdwb3J0fWNvbnN0IHM9X1tyXTtzLm1hdHJpeC5mcm9tQXJyYXkoby50cmFuc2Zvcm0ubWF0cml4KSxzLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KG8ucHJvamVjdGlvbk1hdHJpeCkscy52aWV3cG9ydC5zZXQoYS54LGEueSxhLndpZHRoLGEuaGVpZ2h0KSwwPT09ciYmeS5tYXRyaXguY29weShzLm1hdHJpeCksITA9PT1uJiZ5LmNhbWVyYXMucHVzaChzKX19Y29uc3Qgbz1yLmlucHV0U291cmNlcztmb3IobGV0IHQ9MDt0PHAubGVuZ3RoO3QrKylwW3RdLnVwZGF0ZShvW3RdLG4sYSk7QyYmQyh0LG4pfSkpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXtDPXR9LHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe319fWZ1bmN0aW9uIGo1dCh0KXtmdW5jdGlvbiBlKGUsbil7ZS5vcGFjaXR5LnZhbHVlPW4ub3BhY2l0eSxuLmNvbG9yJiZlLmRpZmZ1c2UudmFsdWUuY29weShuLmNvbG9yKSxuLmVtaXNzaXZlJiZlLmVtaXNzaXZlLnZhbHVlLmNvcHkobi5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIobi5lbWlzc2l2ZUludGVuc2l0eSksbi5tYXAmJihlLm1hcC52YWx1ZT1uLm1hcCksbi5hbHBoYU1hcCYmKGUuYWxwaGFNYXAudmFsdWU9bi5hbHBoYU1hcCksbi5zcGVjdWxhck1hcCYmKGUuc3BlY3VsYXJNYXAudmFsdWU9bi5zcGVjdWxhck1hcCk7Y29uc3QgaT10LmdldChuKS5lbnZNYXA7aWYoaSl7ZS5lbnZNYXAudmFsdWU9aSxlLmZsaXBFbnZNYXAudmFsdWU9aS5pc0N1YmVUZXh0dXJlJiYhMT09PWkuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPy0xOjEsZS5yZWZsZWN0aXZpdHkudmFsdWU9bi5yZWZsZWN0aXZpdHksZS5yZWZyYWN0aW9uUmF0aW8udmFsdWU9bi5yZWZyYWN0aW9uUmF0aW87Y29uc3Qgcj10LmdldChpKS5fX21heE1pcExldmVsO3ZvaWQgMCE9PXImJihlLm1heE1pcExldmVsLnZhbHVlPXIpfWxldCByLG87bi5saWdodE1hcCYmKGUubGlnaHRNYXAudmFsdWU9bi5saWdodE1hcCxlLmxpZ2h0TWFwSW50ZW5zaXR5LnZhbHVlPW4ubGlnaHRNYXBJbnRlbnNpdHkpLG4uYW9NYXAmJihlLmFvTWFwLnZhbHVlPW4uYW9NYXAsZS5hb01hcEludGVuc2l0eS52YWx1ZT1uLmFvTWFwSW50ZW5zaXR5KSxuLm1hcD9yPW4ubWFwOm4uc3BlY3VsYXJNYXA/cj1uLnNwZWN1bGFyTWFwOm4uZGlzcGxhY2VtZW50TWFwP3I9bi5kaXNwbGFjZW1lbnRNYXA6bi5ub3JtYWxNYXA/cj1uLm5vcm1hbE1hcDpuLmJ1bXBNYXA/cj1uLmJ1bXBNYXA6bi5yb3VnaG5lc3NNYXA/cj1uLnJvdWdobmVzc01hcDpuLm1ldGFsbmVzc01hcD9yPW4ubWV0YWxuZXNzTWFwOm4uYWxwaGFNYXA/cj1uLmFscGhhTWFwOm4uZW1pc3NpdmVNYXA/cj1uLmVtaXNzaXZlTWFwOm4uY2xlYXJjb2F0TWFwP3I9bi5jbGVhcmNvYXRNYXA6bi5jbGVhcmNvYXROb3JtYWxNYXA/cj1uLmNsZWFyY29hdE5vcm1hbE1hcDpuLmNsZWFyY29hdFJvdWdobmVzc01hcD9yPW4uY2xlYXJjb2F0Um91Z2huZXNzTWFwOm4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/cj1uLnNwZWN1bGFySW50ZW5zaXR5TWFwOm4uc3BlY3VsYXJUaW50TWFwJiYocj1uLnNwZWN1bGFyVGludE1hcCksdm9pZCAwIT09ciYmKHIuaXNXZWJHTFJlbmRlclRhcmdldCYmKHI9ci50ZXh0dXJlKSwhMD09PXIubWF0cml4QXV0b1VwZGF0ZSYmci51cGRhdGVNYXRyaXgoKSxlLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoci5tYXRyaXgpKSxuLmFvTWFwP289bi5hb01hcDpuLmxpZ2h0TWFwJiYobz1uLmxpZ2h0TWFwKSx2b2lkIDAhPT1vJiYoby5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYobz1vLnRleHR1cmUpLCEwPT09by5tYXRyaXhBdXRvVXBkYXRlJiZvLnVwZGF0ZU1hdHJpeCgpLGUudXYyVHJhbnNmb3JtLnZhbHVlLmNvcHkoby5tYXRyaXgpKX1mdW5jdGlvbiBuKGUsbil7ZS5yb3VnaG5lc3MudmFsdWU9bi5yb3VnaG5lc3MsZS5tZXRhbG5lc3MudmFsdWU9bi5tZXRhbG5lc3Msbi5yb3VnaG5lc3NNYXAmJihlLnJvdWdobmVzc01hcC52YWx1ZT1uLnJvdWdobmVzc01hcCksbi5tZXRhbG5lc3NNYXAmJihlLm1ldGFsbmVzc01hcC52YWx1ZT1uLm1ldGFsbmVzc01hcCksbi5lbWlzc2l2ZU1hcCYmKGUuZW1pc3NpdmVNYXAudmFsdWU9bi5lbWlzc2l2ZU1hcCksbi5idW1wTWFwJiYoZS5idW1wTWFwLnZhbHVlPW4uYnVtcE1hcCxlLmJ1bXBTY2FsZS52YWx1ZT1uLmJ1bXBTY2FsZSwxPT09bi5zaWRlJiYoZS5idW1wU2NhbGUudmFsdWUqPS0xKSksbi5ub3JtYWxNYXAmJihlLm5vcm1hbE1hcC52YWx1ZT1uLm5vcm1hbE1hcCxlLm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkobi5ub3JtYWxTY2FsZSksMT09PW4uc2lkZSYmZS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksbi5kaXNwbGFjZW1lbnRNYXAmJihlLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1uLmRpc3BsYWNlbWVudE1hcCxlLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPW4uZGlzcGxhY2VtZW50U2NhbGUsZS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPW4uZGlzcGxhY2VtZW50QmlhcyksdC5nZXQobikuZW52TWFwJiYoZS5lbnZNYXBJbnRlbnNpdHkudmFsdWU9bi5lbnZNYXBJbnRlbnNpdHkpfXJldHVybntyZWZyZXNoRm9nVW5pZm9ybXM6ZnVuY3Rpb24gaSh0LGUpe3QuZm9nQ29sb3IudmFsdWUuY29weShlLmNvbG9yKSxlLmlzRm9nPyh0LmZvZ05lYXIudmFsdWU9ZS5uZWFyLHQuZm9nRmFyLnZhbHVlPWUuZmFyKTplLmlzRm9nRXhwMiYmKHQuZm9nRGVuc2l0eS52YWx1ZT1lLmRlbnNpdHkpfSxyZWZyZXNoTWF0ZXJpYWxVbmlmb3JtczpmdW5jdGlvbiByKHQsaSxvLGEscyl7aS5pc01lc2hCYXNpY01hdGVyaWFsP2UodCxpKTppLmlzTWVzaExhbWJlcnRNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBsKHQsZSl7ZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCl9KSh0LGkpKTppLmlzTWVzaFRvb25NYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBjKHQsZSl7ZS5ncmFkaWVudE1hcCYmKHQuZ3JhZGllbnRNYXAudmFsdWU9ZS5ncmFkaWVudE1hcCksZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCksZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaFBob25nTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gdSh0LGUpe3Quc3BlY3VsYXIudmFsdWUuY29weShlLnNwZWN1bGFyKSx0LnNoaW5pbmVzcy52YWx1ZT1NYXRoLm1heChlLnNoaW5pbmVzcywxZS00KSxlLmVtaXNzaXZlTWFwJiYodC5lbWlzc2l2ZU1hcC52YWx1ZT1lLmVtaXNzaXZlTWFwKSxlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD8oZSh0LGkpLGkuaXNNZXNoUGh5c2ljYWxNYXRlcmlhbD8oZnVuY3Rpb24gaCh0LGUsaSl7bih0LGUpLHQucmVmbGVjdGl2aXR5LnZhbHVlPWUucmVmbGVjdGl2aXR5LHQuY2xlYXJjb2F0LnZhbHVlPWUuY2xlYXJjb2F0LHQuY2xlYXJjb2F0Um91Z2huZXNzLnZhbHVlPWUuY2xlYXJjb2F0Um91Z2huZXNzLGUuc2hlZW4mJnQuc2hlZW4udmFsdWUuY29weShlLnNoZWVuKSxlLmNsZWFyY29hdE1hcCYmKHQuY2xlYXJjb2F0TWFwLnZhbHVlPWUuY2xlYXJjb2F0TWFwKSxlLmNsZWFyY29hdFJvdWdobmVzc01hcCYmKHQuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnZhbHVlPWUuY2xlYXJjb2F0Um91Z2huZXNzTWFwKSxlLmNsZWFyY29hdE5vcm1hbE1hcCYmKHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weShlLmNsZWFyY29hdE5vcm1hbFNjYWxlKSx0LmNsZWFyY29hdE5vcm1hbE1hcC52YWx1ZT1lLmNsZWFyY29hdE5vcm1hbE1hcCwxPT09ZS5zaWRlJiZ0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSx0LnRyYW5zbWlzc2lvbi52YWx1ZT1lLnRyYW5zbWlzc2lvbixlLnRyYW5zbWlzc2lvbk1hcCYmKHQudHJhbnNtaXNzaW9uTWFwLnZhbHVlPWUudHJhbnNtaXNzaW9uTWFwKSxlLnRyYW5zbWlzc2lvbj4wJiYodC50cmFuc21pc3Npb25TYW1wbGVyTWFwLnZhbHVlPWkudGV4dHVyZSx0LnRyYW5zbWlzc2lvblNhbXBsZXJTaXplLnZhbHVlLnNldChpLndpZHRoLGkuaGVpZ2h0KSksdC50aGlja25lc3MudmFsdWU9ZS50aGlja25lc3MsZS50aGlja25lc3NNYXAmJih0LnRoaWNrbmVzc01hcC52YWx1ZT1lLnRoaWNrbmVzc01hcCksdC5hdHRlbnVhdGlvbkRpc3RhbmNlLnZhbHVlPWUuYXR0ZW51YXRpb25EaXN0YW5jZSx0LmF0dGVudWF0aW9uVGludC52YWx1ZS5jb3B5KGUuYXR0ZW51YXRpb25UaW50KSx0LnNwZWN1bGFySW50ZW5zaXR5LnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHksdC5zcGVjdWxhclRpbnQudmFsdWUuY29weShlLnNwZWN1bGFyVGludCksZS5zcGVjdWxhckludGVuc2l0eU1hcCYmKHQuc3BlY3VsYXJJbnRlbnNpdHlNYXAudmFsdWU9ZS5zcGVjdWxhckludGVuc2l0eU1hcCksZS5zcGVjdWxhclRpbnRNYXAmJih0LnNwZWN1bGFyVGludE1hcC52YWx1ZT1lLnNwZWN1bGFyVGludE1hcCl9KSh0LGkscyk6bih0LGkpKTppLmlzTWVzaE1hdGNhcE1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGQodCxlKXtlLm1hdGNhcCYmKHQubWF0Y2FwLnZhbHVlPWUubWF0Y2FwKSxlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNNZXNoRGVwdGhNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBwKHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gZih0LGUpe2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpLHQucmVmZXJlbmNlUG9zaXRpb24udmFsdWUuY29weShlLnJlZmVyZW5jZVBvc2l0aW9uKSx0Lm5lYXJEaXN0YW5jZS52YWx1ZT1lLm5lYXJEaXN0YW5jZSx0LmZhckRpc3RhbmNlLnZhbHVlPWUuZmFyRGlzdGFuY2V9KSh0LGkpKTppLmlzTWVzaE5vcm1hbE1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIG0odCxlKXtlLmJ1bXBNYXAmJih0LmJ1bXBNYXAudmFsdWU9ZS5idW1wTWFwLHQuYnVtcFNjYWxlLnZhbHVlPWUuYnVtcFNjYWxlLDE9PT1lLnNpZGUmJih0LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxlLm5vcm1hbE1hcCYmKHQubm9ybWFsTWFwLnZhbHVlPWUubm9ybWFsTWFwLHQubm9ybWFsU2NhbGUudmFsdWUuY29weShlLm5vcm1hbFNjYWxlKSwxPT09ZS5zaWRlJiZ0Lm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNMaW5lQmFzaWNNYXRlcmlhbD8oKGZ1bmN0aW9uIGcodCxlKXt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5fSkodCxpKSxpLmlzTGluZURhc2hlZE1hdGVyaWFsJiYoZnVuY3Rpb24gXyh0LGUpe3QuZGFzaFNpemUudmFsdWU9ZS5kYXNoU2l6ZSx0LnRvdGFsU2l6ZS52YWx1ZT1lLmRhc2hTaXplK2UuZ2FwU2l6ZSx0LnNjYWxlLnZhbHVlPWUuc2NhbGV9KSh0LGkpKTppLmlzUG9pbnRzTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlLG4saSl7bGV0IHI7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnNpemUudmFsdWU9ZS5zaXplKm4sdC5zY2FsZS52YWx1ZT0uNSppLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApLGUuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApLGUubWFwP3I9ZS5tYXA6ZS5hbHBoYU1hcCYmKHI9ZS5hbHBoYU1hcCksdm9pZCAwIT09ciYmKCEwPT09ci5tYXRyaXhBdXRvVXBkYXRlJiZyLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShyLm1hdHJpeCkpfSkodCxpLG8sYSk6aS5pc1Nwcml0ZU1hdGVyaWFsPyhmdW5jdGlvbiB2KHQsZSl7bGV0IG47dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSx0LnJvdGF0aW9uLnZhbHVlPWUucm90YXRpb24sZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCksZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCksZS5tYXA/bj1lLm1hcDplLmFscGhhTWFwJiYobj1lLmFscGhhTWFwKSx2b2lkIDAhPT1uJiYoITA9PT1uLm1hdHJpeEF1dG9VcGRhdGUmJm4udXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KG4ubWF0cml4KSl9KSh0LGkpOmkuaXNTaGFkb3dNYXRlcmlhbD8odC5jb2xvci52YWx1ZS5jb3B5KGkuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1pLm9wYWNpdHkpOmkuaXNTaGFkZXJNYXRlcmlhbCYmKGkudW5pZm9ybXNOZWVkVXBkYXRlPSExKX19fWZ1bmN0aW9uIEc1dCh0PXt9KXtjb25zdCBlPXZvaWQgMCE9PXQuY2FudmFzP3QuY2FudmFzOihmdW5jdGlvbiBuKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdH0pKCksaT12b2lkIDAhPT10LmNvbnRleHQ/dC5jb250ZXh0Om51bGwscj12b2lkIDAhPT10LmFscGhhJiZ0LmFscGhhLG89dm9pZCAwPT09dC5kZXB0aHx8dC5kZXB0aCxhPXZvaWQgMD09PXQuc3RlbmNpbHx8dC5zdGVuY2lsLHM9dm9pZCAwIT09dC5hbnRpYWxpYXMmJnQuYW50aWFsaWFzLGw9dm9pZCAwPT09dC5wcmVtdWx0aXBsaWVkQWxwaGF8fHQucHJlbXVsdGlwbGllZEFscGhhLGM9dm9pZCAwIT09dC5wcmVzZXJ2ZURyYXdpbmdCdWZmZXImJnQucHJlc2VydmVEcmF3aW5nQnVmZmVyLHU9dm9pZCAwIT09dC5wb3dlclByZWZlcmVuY2U/dC5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLGg9dm9pZCAwIT09dC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0JiZ0LmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ7bGV0IGQ9bnVsbCxwPW51bGw7Y29uc3QgZj1bXSxtPVtdO3RoaXMuZG9tRWxlbWVudD1lLHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMuZ2FtbWFGYWN0b3I9Mix0aGlzLm91dHB1dEVuY29kaW5nPU5adCx0aGlzLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPSExLHRoaXMudG9uZU1hcHBpbmc9MCx0aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9MTtjb25zdCBnPXRoaXM7bGV0IF89ITEseT0wLHY9MCxiPW51bGwseD0tMSx3PW51bGw7Y29uc3QgUz1uZXcgd0p0LE09bmV3IHdKdDtsZXQgRT1udWxsLFQ9ZS53aWR0aCxDPWUuaGVpZ2h0LEE9MSxrPW51bGwsTD1udWxsO2NvbnN0IFA9bmV3IHdKdCgwLDAsVCxDKSxOPW5ldyB3SnQoMCwwLFQsQyk7bGV0IEk9ITE7Y29uc3QgUj1bXSxPPW5ldyBpMHQ7bGV0IHo9ITEsRD0hMSxCPW51bGw7Y29uc3QgSD1uZXcgclF0LEY9bmV3IENKdCxWPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gVSgpe3JldHVybiBudWxsPT09Yj9BOjF9bGV0IGosRyxXLHEsWSxYLCQsSyxaLEosUSx0dCxldCxudCxpdCxydCxvdCxhdCxzdCxsdCxjdCx1dCxodCxkdD1pO2Z1bmN0aW9uIHB0KHQsbil7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspe2NvbnN0IHI9ZS5nZXRDb250ZXh0KHRbaV0sbik7aWYobnVsbCE9PXIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9dHJ5e2NvbnN0IHQ9e2FscGhhOnIsZGVwdGg6byxzdGVuY2lsOmEsYW50aWFsaWFzOnMscHJlbXVsdGlwbGllZEFscGhhOmwscHJlc2VydmVEcmF3aW5nQnVmZmVyOmMscG93ZXJQcmVmZXJlbmNlOnUsZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDpofTtpZihlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGd0LCExKSxlLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixfdCwhMSksbnVsbD09PWR0KXtjb25zdCBlPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZighMD09PWcuaXNXZWJHTDFSZW5kZXJlciYmZS5zaGlmdCgpLGR0PXB0KGUsdCksbnVsbD09PWR0KXRocm93IHB0KGUpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9dm9pZCAwPT09ZHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYoZHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaCh0KXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QubWVzc2FnZSksdH1mdW5jdGlvbiBmdCgpe2o9bmV3IFUwdChkdCksRz1uZXcgcDB0KGR0LGosdCksai5pbml0KEcpLHV0PW5ldyBENXQoZHQsaixHKSxXPW5ldyBPNXQoZHQsaixHKSxSWzBdPTEwMjkscT1uZXcgVzB0KGR0KSxZPW5ldyB4NXQsWD1uZXcgejV0KGR0LGosVyxZLEcsdXQscSksJD1uZXcgbTB0KGcpLEs9bmV3IFYwdChnKSxaPW5ldyBvMHQoZHQsRyksaHQ9bmV3IGgwdChkdCxqLFosRyksSj1uZXcgajB0KGR0LFoscSxodCksUT1uZXcgJDB0KGR0LEosWixxKSxzdD1uZXcgWDB0KGR0KSxydD1uZXcgZjB0KFkpLHR0PW5ldyBiNXQoZywkLEssaixHLGh0LHJ0KSxldD1uZXcgajV0KFkpLG50PW5ldyBFNXQoWSksaXQ9bmV3IFA1dChqLEcpLGF0PW5ldyB1MHQoZywkLFcsUSxsKSxvdD1uZXcgUjV0KGcsUSxHKSxsdD1uZXcgZDB0KGR0LGoscSxHKSxjdD1uZXcgRzB0KGR0LGoscSxHKSxxLnByb2dyYW1zPXR0LnByb2dyYW1zLGcuY2FwYWJpbGl0aWVzPUcsZy5leHRlbnNpb25zPWosZy5wcm9wZXJ0aWVzPVksZy5yZW5kZXJMaXN0cz1udCxnLnNoYWRvd01hcD1vdCxnLnN0YXRlPVcsZy5pbmZvPXF9ZnQoKTtjb25zdCBtdD1uZXcgVTV0KGcsZHQpO2Z1bmN0aW9uIGd0KHQpe3QucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLF89ITB9ZnVuY3Rpb24gX3QoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxfPSExO2NvbnN0IHQ9cS5hdXRvUmVzZXQsZT1vdC5lbmFibGVkLG49b3QuYXV0b1VwZGF0ZSxpPW90Lm5lZWRzVXBkYXRlLHI9b3QudHlwZTtmdCgpLHEuYXV0b1Jlc2V0PXQsb3QuZW5hYmxlZD1lLG90LmF1dG9VcGRhdGU9bixvdC5uZWVkc1VwZGF0ZT1pLG90LnR5cGU9cn1mdW5jdGlvbiB5dCh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLChmdW5jdGlvbiBuKHQpeyhmdW5jdGlvbiBlKHQpe2NvbnN0IGU9WS5nZXQodCkucHJvZ3JhbXM7dm9pZCAwIT09ZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0dC5yZWxlYXNlUHJvZ3JhbSh0KX0pKX0pKHQpLFkucmVtb3ZlKHQpfSkoZSl9dGhpcy54cj1tdCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZHR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gZHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1qLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PWouZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBBfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKEE9dCx0aGlzLnNldFNpemUoVCxDLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQoVCxDKX0sdGhpcy5zZXRTaXplPWZ1bmN0aW9uKHQsbixpKXttdC5pc1ByZXNlbnRpbmc/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKTooVD10LEM9bixlLndpZHRoPU1hdGguZmxvb3IodCpBKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qQSksITEhPT1pJiYoZS5zdHlsZS53aWR0aD10KyJweCIsZS5zdHlsZS5oZWlnaHQ9bisicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pKX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5zZXQoVCpBLEMqQSkuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbih0LG4saSl7VD10LEM9bixBPWksZS53aWR0aD1NYXRoLmZsb29yKHQqaSksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKmkpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbil9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoUyl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShQKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixpKXt0LmlzVmVjdG9yND9QLnNldCh0LngsdC55LHQueix0LncpOlAuc2V0KHQsZSxuLGkpLFcudmlld3BvcnQoUy5jb3B5KFApLm11bHRpcGx5U2NhbGFyKEEpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShOKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLGkpe3QuaXNWZWN0b3I0P04uc2V0KHQueCx0LnksdC56LHQudyk6Ti5zZXQodCxlLG4saSksVy5zY2lzc29yKE0uY29weShOKS5tdWx0aXBseVNjYWxhcihBKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBJfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe1cuc2V0U2Npc3NvclRlc3QoST10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe2s9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7TD10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShhdC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXthdC5zZXRDbGVhckNvbG9yLmFwcGx5KGF0LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBhdC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe2F0LnNldENsZWFyQWxwaGEuYXBwbHkoYXQsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IGk9MDsodm9pZCAwPT09dHx8dCkmJihpfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYoaXw9MjU2KSwodm9pZCAwPT09bnx8bikmJihpfD0xMDI0KSxkdC5jbGVhcihpKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGd0LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixfdCwhMSksbnQuZGlzcG9zZSgpLGl0LmRpc3Bvc2UoKSxZLmRpc3Bvc2UoKSwkLmRpc3Bvc2UoKSxLLmRpc3Bvc2UoKSxRLmRpc3Bvc2UoKSxodC5kaXNwb3NlKCksbXQuZGlzcG9zZSgpLG10LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsYnQpLG10LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLHh0KSxCJiYoQi5kaXNwb3NlKCksQj1udWxsKSx3dC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPWZ1bmN0aW9uKHQsZSl7aHQuaW5pdEF0dHJpYnV0ZXMoKTtjb25zdCBuPVkuZ2V0KHQpO3QuaGFzUG9zaXRpb25zJiYhbi5wb3NpdGlvbiYmKG4ucG9zaXRpb249ZHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzTm9ybWFscyYmIW4ubm9ybWFsJiYobi5ub3JtYWw9ZHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzVXZzJiYhbi51diYmKG4udXY9ZHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzQ29sb3JzJiYhbi5jb2xvciYmKG4uY29sb3I9ZHQuY3JlYXRlQnVmZmVyKCkpO2NvbnN0IGk9ZS5nZXRBdHRyaWJ1dGVzKCk7dC5oYXNQb3NpdGlvbnMmJihkdC5iaW5kQnVmZmVyKDM0OTYyLG4ucG9zaXRpb24pLGR0LmJ1ZmZlckRhdGEoMzQ5NjIsdC5wb3NpdGlvbkFycmF5LDM1MDQ4KSxodC5lbmFibGVBdHRyaWJ1dGUoaS5wb3NpdGlvbiksZHQudmVydGV4QXR0cmliUG9pbnRlcihpLnBvc2l0aW9uLDMsNTEyNiwhMSwwLDApKSx0Lmhhc05vcm1hbHMmJihkdC5iaW5kQnVmZmVyKDM0OTYyLG4ubm9ybWFsKSxkdC5idWZmZXJEYXRhKDM0OTYyLHQubm9ybWFsQXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLm5vcm1hbCksZHQudmVydGV4QXR0cmliUG9pbnRlcihpLm5vcm1hbCwzLDUxMjYsITEsMCwwKSksdC5oYXNVdnMmJihkdC5iaW5kQnVmZmVyKDM0OTYyLG4udXYpLGR0LmJ1ZmZlckRhdGEoMzQ5NjIsdC51dkFycmF5LDM1MDQ4KSxodC5lbmFibGVBdHRyaWJ1dGUoaS51diksZHQudmVydGV4QXR0cmliUG9pbnRlcihpLnV2LDIsNTEyNiwhMSwwLDApKSx0Lmhhc0NvbG9ycyYmKGR0LmJpbmRCdWZmZXIoMzQ5NjIsbi5jb2xvciksZHQuYnVmZmVyRGF0YSgzNDk2Mix0LmNvbG9yQXJyYXksMzUwNDgpLGh0LmVuYWJsZUF0dHJpYnV0ZShpLmNvbG9yKSxkdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkuY29sb3IsMyw1MTI2LCExLDAsMCkpLGh0LmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCksZHQuZHJhd0FycmF5cyg0LDAsdC5jb3VudCksdC5jb3VudD0wfSx0aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbih0LGUsbixpLHIsbyl7bnVsbD09PWUmJihlPVYpO2NvbnN0IGE9ci5pc01lc2gmJnIubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLHM9QXQodCxlLGkscik7Vy5zZXRNYXRlcmlhbChpLGEpO2xldCBsPW4uaW5kZXg7Y29uc3QgYz1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbD09PWwpe2lmKHZvaWQgMD09PWN8fDA9PT1jLmNvdW50KXJldHVybn1lbHNlIGlmKDA9PT1sLmNvdW50KXJldHVybjtsZXQgdSxoPTE7ITA9PT1pLndpcmVmcmFtZSYmKGw9Si5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUobiksaD0yKSx2b2lkIDA9PT1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiYmdm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsfHxzdC51cGRhdGUocixuLGkscyksaHQuc2V0dXAocixpLHMsbixsKTtsZXQgZD1sdDtudWxsIT09bCYmKHU9Wi5nZXQobCksZD1jdCxkLnNldEluZGV4KHUpKTtjb25zdCBwPW51bGwhPT1sP2wuY291bnQ6Yy5jb3VudCxmPW4uZHJhd1JhbmdlLnN0YXJ0KmgsbT1uLmRyYXdSYW5nZS5jb3VudCpoLGc9bnVsbCE9PW8/by5zdGFydCpoOjAsXz1udWxsIT09bz9vLmNvdW50Kmg6MS8wLHk9TWF0aC5tYXgoZixnKSx2PU1hdGgubWluKHAsZittLGcrXyktMSxiPU1hdGgubWF4KDAsdi15KzEpO2lmKDAhPT1iKXtpZihyLmlzTWVzaCkhMD09PWkud2lyZWZyYW1lPyhXLnNldExpbmVXaWR0aChpLndpcmVmcmFtZUxpbmV3aWR0aCpVKCkpLGQuc2V0TW9kZSgxKSk6ZC5zZXRNb2RlKDQpO2Vsc2UgaWYoci5pc0xpbmUpe2xldCB0PWkubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLFcuc2V0TGluZVdpZHRoKHQqVSgpKSxkLnNldE1vZGUoci5pc0xpbmVTZWdtZW50cz8xOnIuaXNMaW5lTG9vcD8yOjMpfWVsc2Ugci5pc1BvaW50cz9kLnNldE1vZGUoMCk6ci5pc1Nwcml0ZSYmZC5zZXRNb2RlKDQpO2lmKHIuaXNJbnN0YW5jZWRNZXNoKWQucmVuZGVySW5zdGFuY2VzKHksYixyLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7ZC5yZW5kZXJJbnN0YW5jZXMoeSxiLHQpfWVsc2UgZC5yZW5kZXIoeSxiKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe3A9aXQuZ2V0KHQpLHAuaW5pdCgpLG0ucHVzaChwKSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmKHAucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmcC5wdXNoU2hhZG93KHQpKX0pKSxwLnNldHVwTGlnaHRzKCksdC50cmF2ZXJzZSgoZnVuY3Rpb24oZSl7Y29uc3Qgbj1lLm1hdGVyaWFsO2lmKG4paWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKylUdChuW2ldLHQsZSk7ZWxzZSBUdChuLHQsZSl9KSksbS5wb3AoKSxwPW51bGx9O2xldCB2dD1udWxsO2Z1bmN0aW9uIGJ0KCl7d3Quc3RvcCgpfWZ1bmN0aW9uIHh0KCl7d3Quc3RhcnQoKX1jb25zdCB3dD1uZXcgcjB0O2Z1bmN0aW9uIFN0KHQsZSxuLGkpe2lmKCExPT09dC52aXNpYmxlKXJldHVybjtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSlpZih0LmlzR3JvdXApbj10LnJlbmRlck9yZGVyO2Vsc2UgaWYodC5pc0xPRCkhMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGUoZSk7ZWxzZSBpZih0LmlzTGlnaHQpcC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCk7ZWxzZSBpZih0LmlzU3ByaXRlKXtpZighdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNTcHJpdGUodCkpe2kmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKTtjb25zdCBlPVEudXBkYXRlKHQpLHI9dC5tYXRlcmlhbDtyLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX19ZWxzZSBpZih0LmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0KWkmJkYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChIKSxkLnB1c2godCxudWxsLHQubWF0ZXJpYWwsbixGLnosbnVsbCk7ZWxzZSBpZigodC5pc01lc2h8fHQuaXNMaW5lfHx0LmlzUG9pbnRzKSYmKHQuaXNTa2lubmVkTWVzaCYmdC5za2VsZXRvbi5mcmFtZSE9PXEucmVuZGVyLmZyYW1lJiYodC5za2VsZXRvbi51cGRhdGUoKSx0LnNrZWxldG9uLmZyYW1lPXEucmVuZGVyLmZyYW1lKSwhdC5mcnVzdHVtQ3VsbGVkfHxPLmludGVyc2VjdHNPYmplY3QodCkpKXtpJiZGLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoSCk7Y29uc3QgZT1RLnVwZGF0ZSh0KSxyPXQubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgaT1lLmdyb3Vwcztmb3IobGV0IG89MCxhPWkubGVuZ3RoO288YTtvKyspe2NvbnN0IGE9aVtvXSxzPXJbYS5tYXRlcmlhbEluZGV4XTtzJiZzLnZpc2libGUmJmQucHVzaCh0LGUscyxuLEYueixhKX19ZWxzZSByLnZpc2libGUmJmQucHVzaCh0LGUscixuLEYueixudWxsKX1jb25zdCByPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsbz1yLmxlbmd0aDt0PG87dCsrKVN0KHJbdF0sZSxuLGkpfWZ1bmN0aW9uIE10KHQsZSxuKXtjb25zdCBpPSEwPT09ZS5pc1NjZW5lP2Uub3ZlcnJpZGVNYXRlcmlhbDpudWxsO2lmKG4uaXNBcnJheUNhbWVyYSl7Y29uc3Qgcj1uLmNhbWVyYXM7Zm9yKGxldCBuPTAsbz1yLmxlbmd0aDtuPG87bisrKXtjb25zdCBvPXJbbl07Vy52aWV3cG9ydChTLmNvcHkoby52aWV3cG9ydCkpLHAuc2V0dXBMaWdodHNWaWV3KG8pO2ZvcihsZXQgbj0wLHI9dC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj10W25dLGE9ci5vYmplY3Qscz1yLmdlb21ldHJ5LGw9bnVsbD09PWk/ci5tYXRlcmlhbDppLGM9ci5ncm91cDthLmxheWVycy50ZXN0KG8ubGF5ZXJzKSYmRXQoYSxlLG8scyxsLGMpfX19ZWxzZSBmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtFdChvLm9iamVjdCxlLG4sby5nZW9tZXRyeSxudWxsPT09aT9vLm1hdGVyaWFsOmksby5ncm91cCl9fWZ1bmN0aW9uIEV0KHQsZSxuLGkscixvKXtpZih0Lm9uQmVmb3JlUmVuZGVyKGcsZSxuLGkscixvKSx0Lm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG4ubWF0cml4V29ybGRJbnZlcnNlLHQubWF0cml4V29ybGQpLHQubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeCh0Lm1vZGVsVmlld01hdHJpeCksdC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCl7Y29uc3QgaT1BdChuLGUscix0KTtXLnNldE1hdGVyaWFsKHIpLGh0LnJlc2V0KCksKGZ1bmN0aW9uIGEodCxlKXt0LnJlbmRlcigoZnVuY3Rpb24odCl7Zy5yZW5kZXJCdWZmZXJJbW1lZGlhdGUodCxlKX0pKX0pKHQsaSl9ZWxzZSEwPT09ci50cmFuc3BhcmVudCYmMj09PXIuc2lkZT8oci5zaWRlPTEsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTAsci5uZWVkc1VwZGF0ZT0hMCxnLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyksci5zaWRlPTIpOmcucmVuZGVyQnVmZmVyRGlyZWN0KG4sZSxpLHIsdCxvKTt0Lm9uQWZ0ZXJSZW5kZXIoZyxlLG4saSxyLG8pfWZ1bmN0aW9uIFR0KHQsZSxuKXshMCE9PWUuaXNTY2VuZSYmKGU9Vik7Y29uc3QgaT1ZLmdldCh0KSxyPXAuc3RhdGUubGlnaHRzLG89ci5zdGF0ZS52ZXJzaW9uLGE9dHQuZ2V0UGFyYW1ldGVycyh0LHIuc3RhdGUscC5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPXR0LmdldFByb2dyYW1DYWNoZUtleShhKTtsZXQgbD1pLnByb2dyYW1zO2kuZW52aXJvbm1lbnQ9dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCxpLmZvZz1lLmZvZyxpLmVudk1hcD0odC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KHQuZW52TWFwfHxpLmVudmlyb25tZW50KSx2b2lkIDA9PT1sJiYodC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix5dCksbD1uZXcgTWFwLGkucHJvZ3JhbXM9bCk7bGV0IGM9bC5nZXQocyk7aWYodm9pZCAwIT09Yyl7aWYoaS5jdXJyZW50UHJvZ3JhbT09PWMmJmkubGlnaHRzU3RhdGVWZXJzaW9uPT09bylyZXR1cm4gQ3QodCxhKSxjfWVsc2UgYS51bmlmb3Jtcz10dC5nZXRVbmlmb3Jtcyh0KSx0Lm9uQnVpbGQoYSxnKSx0Lm9uQmVmb3JlQ29tcGlsZShhLGcpLGM9dHQuYWNxdWlyZVByb2dyYW0oYSxzKSxsLnNldChzLGMpLGkudW5pZm9ybXM9YS51bmlmb3Jtcztjb25zdCB1PWkudW5pZm9ybXM7KHQuaXNTaGFkZXJNYXRlcmlhbHx8dC5pc1Jhd1NoYWRlck1hdGVyaWFsKSYmITAhPT10LmNsaXBwaW5nfHwodS5jbGlwcGluZ1BsYW5lcz1ydC51bmlmb3JtKSxDdCh0LGEpLGkubmVlZHNMaWdodHM9KGZ1bmN0aW9uIGgodCl7cmV0dXJuIHQuaXNNZXNoTGFtYmVydE1hdGVyaWFsfHx0LmlzTWVzaFRvb25NYXRlcmlhbHx8dC5pc01lc2hQaG9uZ01hdGVyaWFsfHx0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHQuaXNTaGFkb3dNYXRlcmlhbHx8dC5pc1NoYWRlck1hdGVyaWFsJiYhMD09PXQubGlnaHRzfSkodCksaS5saWdodHNTdGF0ZVZlcnNpb249byxpLm5lZWRzTGlnaHRzJiYodS5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1yLnN0YXRlLmFtYmllbnQsdS5saWdodFByb2JlLnZhbHVlPXIuc3RhdGUucHJvYmUsdS5kaXJlY3Rpb25hbExpZ2h0cy52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsLHUuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvdyx1LnNwb3RMaWdodHMudmFsdWU9ci5zdGF0ZS5zcG90LHUuc3BvdExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3csdS5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhLHUubHRjXzEudmFsdWU9ci5zdGF0ZS5yZWN0QXJlYUxUQzEsdS5sdGNfMi52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhTFRDMix1LnBvaW50TGlnaHRzLnZhbHVlPXIuc3RhdGUucG9pbnQsdS5wb2ludExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93LHUuaGVtaXNwaGVyZUxpZ2h0cy52YWx1ZT1yLnN0YXRlLmhlbWksdS5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwLHUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCx1LnNwb3RTaGFkb3dNYXAudmFsdWU9ci5zdGF0ZS5zcG90U2hhZG93TWFwLHUuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsdS5wb2ludFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93TWFwLHUucG9pbnRTaGFkb3dNYXRyaXgudmFsdWU9ci5zdGF0ZS5wb2ludFNoYWRvd01hdHJpeCk7Y29uc3QgZD1jLmdldFVuaWZvcm1zKCksZj1RMnQuc2VxV2l0aFZhbHVlKGQuc2VxLHUpO3JldHVybiBpLmN1cnJlbnRQcm9ncmFtPWMsaS51bmlmb3Jtc0xpc3Q9ZixjfWZ1bmN0aW9uIEN0KHQsZSl7Y29uc3Qgbj1ZLmdldCh0KTtuLm91dHB1dEVuY29kaW5nPWUub3V0cHV0RW5jb2Rpbmcsbi5pbnN0YW5jaW5nPWUuaW5zdGFuY2luZyxuLnNraW5uaW5nPWUuc2tpbm5pbmcsbi5tb3JwaFRhcmdldHM9ZS5tb3JwaFRhcmdldHMsbi5tb3JwaE5vcm1hbHM9ZS5tb3JwaE5vcm1hbHMsbi5udW1DbGlwcGluZ1BsYW5lcz1lLm51bUNsaXBwaW5nUGxhbmVzLG4ubnVtSW50ZXJzZWN0aW9uPWUubnVtQ2xpcEludGVyc2VjdGlvbixuLnZlcnRleEFscGhhcz1lLnZlcnRleEFscGhhcyxuLnZlcnRleFRhbmdlbnRzPWUudmVydGV4VGFuZ2VudHN9ZnVuY3Rpb24gQXQodCxlLG4saSl7ITAhPT1lLmlzU2NlbmUmJihlPVYpLFgucmVzZXRUZXh0dXJlVW5pdHMoKTtjb25zdCByPWUuZm9nLG89bnVsbD09PWI/Zy5vdXRwdXRFbmNvZGluZzpiLnRleHR1cmUuZW5jb2RpbmcsYT0obi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0s6JCkuZ2V0KG4uZW52TWFwfHwobi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCkpLHM9ITA9PT1uLnZlcnRleENvbG9ycyYmISFpLmdlb21ldHJ5JiYhIWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvciYmND09PWkuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5pdGVtU2l6ZSxsPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5LmF0dHJpYnV0ZXMudGFuZ2VudCxjPSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbix1PSEhaS5nZW9tZXRyeSYmISFpLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsaD1ZLmdldChuKSxkPXAuc3RhdGUubGlnaHRzOyEwIT09enx8ITAhPT1EJiZ0PT09d3x8cnQuc2V0U3RhdGUobix0LHQ9PT13JiZuLmlkPT09eCk7bGV0IGY9ITE7bi52ZXJzaW9uPT09aC5fX3ZlcnNpb24/aC5uZWVkc0xpZ2h0cyYmaC5saWdodHNTdGF0ZVZlcnNpb24hPT1kLnN0YXRlLnZlcnNpb258fGgub3V0cHV0RW5jb2RpbmchPT1vfHxpLmlzSW5zdGFuY2VkTWVzaCYmITE9PT1oLmluc3RhbmNpbmc/Zj0hMDppLmlzSW5zdGFuY2VkTWVzaHx8ITAhPT1oLmluc3RhbmNpbmc/aS5pc1NraW5uZWRNZXNoJiYhMT09PWguc2tpbm5pbmc/Zj0hMDppLmlzU2tpbm5lZE1lc2h8fCEwIT09aC5za2lubmluZz9oLmVudk1hcCE9PWF8fG4uZm9nJiZoLmZvZyE9PXI/Zj0hMDp2b2lkIDA9PT1oLm51bUNsaXBwaW5nUGxhbmVzfHxoLm51bUNsaXBwaW5nUGxhbmVzPT09cnQubnVtUGxhbmVzJiZoLm51bUludGVyc2VjdGlvbj09PXJ0Lm51bUludGVyc2VjdGlvbj8oaC52ZXJ0ZXhBbHBoYXMhPT1zfHxoLnZlcnRleFRhbmdlbnRzIT09bHx8aC5tb3JwaFRhcmdldHMhPT1jfHxoLm1vcnBoTm9ybWFscyE9PXUpJiYoZj0hMCk6Zj0hMDpmPSEwOmY9ITA6KGY9ITAsaC5fX3ZlcnNpb249bi52ZXJzaW9uKTtsZXQgbT1oLmN1cnJlbnRQcm9ncmFtOyEwPT09ZiYmKG09VHQobixlLGkpKTtsZXQgXz0hMSx5PSExLHY9ITE7Y29uc3QgUz1tLmdldFVuaWZvcm1zKCksTT1oLnVuaWZvcm1zO2lmKFcudXNlUHJvZ3JhbShtLnByb2dyYW0pJiYoXz0hMCx5PSEwLHY9ITApLG4uaWQhPT14JiYoeD1uLmlkLHk9ITApLF98fHchPT10KXtpZihTLnNldFZhbHVlKGR0LCJwcm9qZWN0aW9uTWF0cml4Iix0LnByb2plY3Rpb25NYXRyaXgpLEcubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmUy5zZXRWYWx1ZShkdCwibG9nRGVwdGhCdWZGQyIsMi8oTWF0aC5sb2codC5mYXIrMSkvTWF0aC5MTjIpKSx3IT09dCYmKHc9dCx5PSEwLHY9ITApLG4uaXNTaGFkZXJNYXRlcmlhbHx8bi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmVudk1hcCl7Y29uc3QgZT1TLm1hcC5jYW1lcmFQb3NpdGlvbjt2b2lkIDAhPT1lJiZlLnNldFZhbHVlKGR0LEYuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpKX0obi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWwpJiZTLnNldFZhbHVlKGR0LCJpc09ydGhvZ3JhcGhpYyIsITA9PT10LmlzT3J0aG9ncmFwaGljQ2FtZXJhKSwobi5pc01lc2hQaG9uZ01hdGVyaWFsfHxuLmlzTWVzaFRvb25NYXRlcmlhbHx8bi5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fG4uaXNNZXNoQmFzaWNNYXRlcmlhbHx8bi5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxuLmlzU2hhZGVyTWF0ZXJpYWx8fG4uaXNTaGFkb3dNYXRlcmlhbHx8aS5pc1NraW5uZWRNZXNoKSYmUy5zZXRWYWx1ZShkdCwidmlld01hdHJpeCIsdC5tYXRyaXhXb3JsZEludmVyc2UpfWlmKGkuaXNTa2lubmVkTWVzaCl7Uy5zZXRPcHRpb25hbChkdCxpLCJiaW5kTWF0cml4IiksUy5zZXRPcHRpb25hbChkdCxpLCJiaW5kTWF0cml4SW52ZXJzZSIpO2NvbnN0IHQ9aS5za2VsZXRvbjt0JiYoRy5mbG9hdFZlcnRleFRleHR1cmVzPyhudWxsPT09dC5ib25lVGV4dHVyZSYmdC5jb21wdXRlQm9uZVRleHR1cmUoKSxTLnNldFZhbHVlKGR0LCJib25lVGV4dHVyZSIsdC5ib25lVGV4dHVyZSxYKSxTLnNldFZhbHVlKGR0LCJib25lVGV4dHVyZVNpemUiLHQuYm9uZVRleHR1cmVTaXplKSk6Uy5zZXRPcHRpb25hbChkdCx0LCJib25lTWF0cmljZXMiKSl9cmV0dXJuKHl8fGgucmVjZWl2ZVNoYWRvdyE9PWkucmVjZWl2ZVNoYWRvdykmJihoLnJlY2VpdmVTaGFkb3c9aS5yZWNlaXZlU2hhZG93LFMuc2V0VmFsdWUoZHQsInJlY2VpdmVTaGFkb3ciLGkucmVjZWl2ZVNoYWRvdykpLHkmJihTLnNldFZhbHVlKGR0LCJ0b25lTWFwcGluZ0V4cG9zdXJlIixnLnRvbmVNYXBwaW5nRXhwb3N1cmUpLGgubmVlZHNMaWdodHMmJihmdW5jdGlvbiBFKHQsZSl7dC5hbWJpZW50TGlnaHRDb2xvci5uZWVkc1VwZGF0ZT1lLHQubGlnaHRQcm9iZS5uZWVkc1VwZGF0ZT1lLHQuZGlyZWN0aW9uYWxMaWdodHMubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnNwb3RMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9ZSx0LnJlY3RBcmVhTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5oZW1pc3BoZXJlTGlnaHRzLm5lZWRzVXBkYXRlPWV9KShNLHYpLHImJm4uZm9nJiZldC5yZWZyZXNoRm9nVW5pZm9ybXMoTSxyKSxldC5yZWZyZXNoTWF0ZXJpYWxVbmlmb3JtcyhNLG4sQSxDLEIpLFEydC51cGxvYWQoZHQsaC51bmlmb3Jtc0xpc3QsTSxYKSksbi5pc1NoYWRlck1hdGVyaWFsJiYhMD09PW4udW5pZm9ybXNOZWVkVXBkYXRlJiYoUTJ0LnVwbG9hZChkdCxoLnVuaWZvcm1zTGlzdCxNLFgpLG4udW5pZm9ybXNOZWVkVXBkYXRlPSExKSxuLmlzU3ByaXRlTWF0ZXJpYWwmJlMuc2V0VmFsdWUoZHQsImNlbnRlciIsaS5jZW50ZXIpLFMuc2V0VmFsdWUoZHQsIm1vZGVsVmlld01hdHJpeCIsaS5tb2RlbFZpZXdNYXRyaXgpLFMuc2V0VmFsdWUoZHQsIm5vcm1hbE1hdHJpeCIsaS5ub3JtYWxNYXRyaXgpLFMuc2V0VmFsdWUoZHQsIm1vZGVsTWF0cml4IixpLm1hdHJpeFdvcmxkKSxtfXd0LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIGt0KHQpe3Z0JiZ2dCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd3Quc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXt2dD10LG10LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/d3Quc3RvcCgpOnd0LnN0YXJ0KCl9LG10LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsYnQpLG10LmFkZEV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLHh0KSx0aGlzLnJlbmRlcj1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1fKXJldHVybjshMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1lLnBhcmVudCYmZS51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09bXQuZW5hYmxlZCYmITA9PT1tdC5pc1ByZXNlbnRpbmcmJighMD09PW10LmNhbWVyYUF1dG9VcGRhdGUmJm10LnVwZGF0ZUNhbWVyYShlKSxlPW10LmdldENhbWVyYSgpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihnLHQsZSxiKSxwPWl0LmdldCh0LG0ubGVuZ3RoKSxwLmluaXQoKSxtLnB1c2gocCksSC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksTy5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChIKSxEPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsej1ydC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsRCxlKSxkPW50LmdldCh0LGYubGVuZ3RoKSxkLmluaXQoKSxmLnB1c2goZCksU3QodCxlLDAsZy5zb3J0T2JqZWN0cyksZC5maW5pc2goKSwhMD09PWcuc29ydE9iamVjdHMmJmQuc29ydChrLEwpLCEwPT09eiYmcnQuYmVnaW5TaGFkb3dzKCksb3QucmVuZGVyKHAuc3RhdGUuc2hhZG93c0FycmF5LHQsZSkscC5zZXR1cExpZ2h0cygpLHAuc2V0dXBMaWdodHNWaWV3KGUpLCEwPT09eiYmcnQuZW5kU2hhZG93cygpLCEwPT09dGhpcy5pbmZvLmF1dG9SZXNldCYmdGhpcy5pbmZvLnJlc2V0KCksYXQucmVuZGVyKGQsdCk7Y29uc3Qgbj1kLm9wYXF1ZSxpPWQudHJhbnNtaXNzaXZlLHI9ZC50cmFuc3BhcmVudDtuLmxlbmd0aD4wJiZNdChuLHQsZSksaS5sZW5ndGg+MCYmKGZ1bmN0aW9uIG8odCxlLG4saSl7bnVsbD09PUImJihCPW5ldyghMD09PXMmJiEwPT09Ry5pc1dlYkdMMj9FSnQ6U0p0KSgxMDI0LDEwMjQse2dlbmVyYXRlTWlwbWFwczohMCx0eXBlOm51bGwhPT11dC5jb252ZXJ0KGxadCk/bFp0OnJadCxtaW5GaWx0ZXI6aVp0LG1hZ0ZpbHRlcjpKS3Qsd3JhcFM6S0t0LHdyYXBUOktLdH0pKTtjb25zdCByPWcuZ2V0UmVuZGVyVGFyZ2V0KCk7Zy5zZXRSZW5kZXJUYXJnZXQoQiksZy5jbGVhcigpO2NvbnN0IG89Zy50b25lTWFwcGluZztnLnRvbmVNYXBwaW5nPTAsTXQodCxuLGkpLGcudG9uZU1hcHBpbmc9byxYLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEIpLFgudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEIpLGcuc2V0UmVuZGVyVGFyZ2V0KHIpLE10KGUsbixpKX0pKG4saSx0LGUpLHIubGVuZ3RoPjAmJk10KHIsdCxlKSxudWxsIT09YiYmKFgudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoYiksWC51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAoYikpLCEwPT09dC5pc1NjZW5lJiZ0Lm9uQWZ0ZXJSZW5kZXIoZyx0LGUpLFcuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxXLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayghMCksVy5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLFcuc2V0UG9seWdvbk9mZnNldCghMSksaHQucmVzZXREZWZhdWx0U3RhdGUoKSx4PS0xLHc9bnVsbCxtLnBvcCgpLHA9bS5sZW5ndGg+MD9tW20ubGVuZ3RoLTFdOm51bGwsZi5wb3AoKSxkPWYubGVuZ3RoPjA/ZltmLmxlbmd0aC0xXTpudWxsfSx0aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdn0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24odCxlPTAsbj0wKXtiPXQseT1lLHY9bix0JiZ2b2lkIDA9PT1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXImJlguc2V0dXBSZW5kZXJUYXJnZXQodCk7bGV0IGk9bnVsbCxyPSExLG89ITE7aWYodCl7Y29uc3Qgbj10LnRleHR1cmU7KG4uaXNEYXRhVGV4dHVyZTNEfHxuLmlzRGF0YVRleHR1cmUyREFycmF5KSYmKG89ITApO2NvbnN0IGE9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO3QuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KGk9YVtlXSxyPSEwKTppPXQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P1kuZ2V0KHQpLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjphLFMuY29weSh0LnZpZXdwb3J0KSxNLmNvcHkodC5zY2lzc29yKSxFPXQuc2Npc3NvclRlc3R9ZWxzZSBTLmNvcHkoUCkubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxNLmNvcHkoTikubXVsdGlwbHlTY2FsYXIoQSkuZmxvb3IoKSxFPUk7aWYoVy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaSkmJkcuZHJhd0J1ZmZlcnMpe2xldCBlPSExO2lmKHQpaWYodC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKXtjb25zdCBuPXQudGV4dHVyZTtpZihSLmxlbmd0aCE9PW4ubGVuZ3RofHwzNjA2NCE9PVJbMF0pe2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKylSW3RdPTM2MDY0K3Q7Ui5sZW5ndGg9bi5sZW5ndGgsZT0hMH19ZWxzZSAxPT09Ui5sZW5ndGgmJjM2MDY0PT09UlswXXx8KFJbMF09MzYwNjQsUi5sZW5ndGg9MSxlPSEwKTtlbHNlIDE9PT1SLmxlbmd0aCYmMTAyOT09PVJbMF18fChSWzBdPTEwMjksUi5sZW5ndGg9MSxlPSEwKTtlJiYoRy5pc1dlYkdMMj9kdC5kcmF3QnVmZmVycyhSKTpqLmdldCgiV0VCR0xfZHJhd19idWZmZXJzIikuZHJhd0J1ZmZlcnNXRUJHTChSKSl9aWYoVy52aWV3cG9ydChTKSxXLnNjaXNzb3IoTSksVy5zZXRTY2lzc29yVGVzdChFKSxyKXtjb25zdCBpPVkuZ2V0KHQudGV4dHVyZSk7ZHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzQwNjkrZSxpLl9fd2ViZ2xUZXh0dXJlLG4pfWVsc2UgaWYobyl7Y29uc3QgaT1ZLmdldCh0LnRleHR1cmUpO2R0LmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LGkuX193ZWJnbFRleHR1cmUsbnx8MCxlfHwwKX19LHRoaXMucmVhZFJlbmRlclRhcmdldFBpeGVscz1mdW5jdGlvbih0LGUsbixpLHIsbyxhKXtpZighdHx8IXQuaXNXZWJHTFJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuIik7bGV0IHM9WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO2lmKHQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJnZvaWQgMCE9PWEmJihzPXNbYV0pLHMpe1cuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHMpO3RyeXtjb25zdCBhPXQudGV4dHVyZSxzPWEuZm9ybWF0LGw9YS50eXBlO2lmKHMhPT1oWnQmJnV0LmNvbnZlcnQocykhPT1kdC5nZXRQYXJhbWV0ZXIoMzU3MzkpKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBSR0JBIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgZm9ybWF0LiIpO2NvbnN0IGM9bD09PWxadCYmKGouaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8Ry5pc1dlYkdMMiYmai5oYXMoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7aWYoIShsPT09clp0fHx1dC5jb252ZXJ0KGwpPT09ZHQuZ2V0UGFyYW1ldGVyKDM1NzM4KXx8bD09PXNadCYmKEcuaXNXZWJHTDJ8fGouaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHxqLmhhcygiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IikpfHxjKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIik7MzYwNTM9PT1kdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT9lPj0wJiZlPD10LndpZHRoLWkmJm4+PTAmJm48PXQuaGVpZ2h0LXImJmR0LnJlYWRQaXhlbHMoZSxuLGkscix1dC5jb252ZXJ0KHMpLHV0LmNvbnZlcnQobCksbyk6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZWFkUGl4ZWxzIGZyb20gcmVuZGVyVGFyZ2V0IGZhaWxlZC4gRnJhbWVidWZmZXIgbm90IGNvbXBsZXRlLiIpfWZpbmFsbHl7Y29uc3QgdD1udWxsIT09Yj9ZLmdldChiKS5fX3dlYmdsRnJhbWVidWZmZXI6bnVsbDtXLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0KX19fSx0aGlzLmNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbj0wKXtjb25zdCBpPU1hdGgucG93KDIsLW4pLHI9TWF0aC5mbG9vcihlLmltYWdlLndpZHRoKmkpLG89TWF0aC5mbG9vcihlLmltYWdlLmhlaWdodCppKTtsZXQgYT11dC5jb252ZXJ0KGUuZm9ybWF0KTtHLmlzV2ViR0wyJiYoNjQwNz09PWEmJihhPTMyODQ5KSw2NDA4PT09YSYmKGE9MzI4NTYpKSxYLnNldFRleHR1cmUyRChlLDApLGR0LmNvcHlUZXhJbWFnZTJEKDM1NTMsbixhLHQueCx0LnkscixvLDApLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKHQsZSxuLGk9MCl7Y29uc3Qgcj1lLmltYWdlLndpZHRoLG89ZS5pbWFnZS5oZWlnaHQsYT11dC5jb252ZXJ0KG4uZm9ybWF0KSxzPXV0LmNvbnZlcnQobi50eXBlKTtYLnNldFRleHR1cmUyRChuLDApLGR0LnBpeGVsU3RvcmVpKDM3NDQwLG4uZmxpcFkpLGR0LnBpeGVsU3RvcmVpKDM3NDQxLG4ucHJlbXVsdGlwbHlBbHBoYSksZHQucGl4ZWxTdG9yZWkoMzMxNyxuLnVucGFja0FsaWdubWVudCksZS5pc0RhdGFUZXh0dXJlP2R0LnRleFN1YkltYWdlMkQoMzU1MyxpLHQueCx0LnkscixvLGEscyxlLmltYWdlLmRhdGEpOmUuaXNDb21wcmVzc2VkVGV4dHVyZT9kdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLGksdC54LHQueSxlLm1pcG1hcHNbMF0ud2lkdGgsZS5taXBtYXBzWzBdLmhlaWdodCxhLGUubWlwbWFwc1swXS5kYXRhKTpkdC50ZXhTdWJJbWFnZTJEKDM1NTMsaSx0LngsdC55LGEscyxlLmltYWdlKSwwPT09aSYmbi5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKDM1NTMpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q9ZnVuY3Rpb24odCxlLG4saSxyPTApe2lmKGcuaXNXZWJHTDFSZW5kZXJlcilyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtjb25zdCBvPXQubWF4LngtdC5taW4ueCsxLGE9dC5tYXgueS10Lm1pbi55KzEscz10Lm1heC56LXQubWluLnorMSxsPXV0LmNvbnZlcnQoaS5mb3JtYXQpLGM9dXQuY29udmVydChpLnR5cGUpO2xldCB1O2lmKGkuaXNEYXRhVGV4dHVyZTNEKVguc2V0VGV4dHVyZTNEKGksMCksdT0zMjg3OTtlbHNle2lmKCFpLmlzRGF0YVRleHR1cmUyREFycmF5KXJldHVybiB2b2lkIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBvbmx5IHN1cHBvcnRzIFRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheS4iKTtYLnNldFRleHR1cmUyREFycmF5KGksMCksdT0zNTg2Nn1kdC5waXhlbFN0b3JlaSgzNzQ0MCxpLmZsaXBZKSxkdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLGR0LnBpeGVsU3RvcmVpKDMzMTcsaS51bnBhY2tBbGlnbm1lbnQpO2NvbnN0IGg9ZHQuZ2V0UGFyYW1ldGVyKDMzMTQpLGQ9ZHQuZ2V0UGFyYW1ldGVyKDMyODc4KSxwPWR0LmdldFBhcmFtZXRlcigzMzE2KSxmPWR0LmdldFBhcmFtZXRlcigzMzE1KSxtPWR0LmdldFBhcmFtZXRlcigzMjg3NyksXz1uLmlzQ29tcHJlc3NlZFRleHR1cmU/bi5taXBtYXBzWzBdOm4uaW1hZ2U7ZHQucGl4ZWxTdG9yZWkoMzMxNCxfLndpZHRoKSxkdC5waXhlbFN0b3JlaSgzMjg3OCxfLmhlaWdodCksZHQucGl4ZWxTdG9yZWkoMzMxNix0Lm1pbi54KSxkdC5waXhlbFN0b3JlaSgzMzE1LHQubWluLnkpLGR0LnBpeGVsU3RvcmVpKDMyODc3LHQubWluLnopLG4uaXNEYXRhVGV4dHVyZXx8bi5pc0RhdGFUZXh0dXJlM0Q/ZHQudGV4U3ViSW1hZ2UzRCh1LHIsZS54LGUueSxlLnosbyxhLHMsbCxjLF8uZGF0YSk6bi5pc0NvbXByZXNzZWRUZXh0dXJlPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogdW50ZXN0ZWQgc3VwcG9ydCBmb3IgY29tcHJlc3NlZCBzcmNUZXh0dXJlLiIpLGR0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKHUscixlLngsZS55LGUueixvLGEscyxsLF8uZGF0YSkpOmR0LnRleFN1YkltYWdlM0QodSxyLGUueCxlLnksZS56LG8sYSxzLGwsYyxfKSxkdC5waXhlbFN0b3JlaSgzMzE0LGgpLGR0LnBpeGVsU3RvcmVpKDMyODc4LGQpLGR0LnBpeGVsU3RvcmVpKDMzMTYscCksZHQucGl4ZWxTdG9yZWkoMzMxNSxmKSxkdC5waXhlbFN0b3JlaSgzMjg3NyxtKSwwPT09ciYmaS5nZW5lcmF0ZU1pcG1hcHMmJmR0LmdlbmVyYXRlTWlwbWFwKHUpLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmluaXRUZXh0dXJlPWZ1bmN0aW9uKHQpe1guc2V0VGV4dHVyZTJEKHQsMCksVy51bmJpbmRUZXh0dXJlKCl9LHRoaXMucmVzZXRTdGF0ZT1mdW5jdGlvbigpe3k9MCx2PTAsYj1udWxsLFcucmVzZXQoKSxodC5yZXNldCgpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y2xhc3MgVzV0IGV4dGVuZHMgRzV0e31XNXQucHJvdG90eXBlLmlzV2ViR0wxUmVuZGVyZXI9ITA7Y2xhc3MgcTV0e2NvbnN0cnVjdG9yKHQsZT0yNWUtNSl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3ICRRdCh0KSx0aGlzLmRlbnNpdHk9ZX1jbG9uZSgpe3JldHVybiBuZXcgcTV0KHRoaXMuY29sb3IsdGhpcy5kZW5zaXR5KX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nRXhwMiIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxkZW5zaXR5OnRoaXMuZGVuc2l0eX19fXE1dC5wcm90b3R5cGUuaXNGb2dFeHAyPSEwO2NsYXNzIFk1dHtjb25zdHJ1Y3Rvcih0LGU9MSxuPTFlMyl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3ICRRdCh0KSx0aGlzLm5lYXI9ZSx0aGlzLmZhcj1ufWNsb25lKCl7cmV0dXJuIG5ldyBZNXQodGhpcy5jb2xvcix0aGlzLm5lYXIsdGhpcy5mYXIpfXRvSlNPTigpe3JldHVybnt0eXBlOiJGb2ciLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksbmVhcjp0aGlzLm5lYXIsZmFyOnRoaXMuZmFyfX19WTV0LnByb3RvdHlwZS5pc0ZvZz0hMDtjbGFzcyBYNXQgZXh0ZW5kcyBrUXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fVg1dC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyAkNXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9Rlp0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9WFp0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IGk9MCxyPXRoaXMuc3RyaWRlO2k8cjtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbitpXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1YWnQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1YWnQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fSQ1dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBLNXQ9bmV3IENKdDtjbGFzcyBaNXR7Y29uc3RydWN0b3IodCxlLG4saT0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PWl9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKylLNXQueD10aGlzLmdldFgoZSksSzV0Lnk9dGhpcy5nZXRZKGUpLEs1dC56PXRoaXMuZ2V0WihlKSxLNXQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsSzV0LngsSzV0LnksSzV0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUs1dC54PXRoaXMuZ2V0WChlKSxLNXQueT10aGlzLmdldFkoZSksSzV0Lno9dGhpcy5nZXRaKGUpLEs1dC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLEs1dC54LEs1dC55LEs1dC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspSzV0Lng9dGhpcy5nZXRYKGUpLEs1dC55PXRoaXMuZ2V0WShlKSxLNXQuej10aGlzLmdldFooZSksSzV0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEs1dC54LEs1dC55LEs1dC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixpKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQsZSxuLGkscil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1pLHRoaXMuZGF0YS5hcnJheVt0KzNdPXIsdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyBRUXQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgWjV0KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fVo1dC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBKNXQgZXh0ZW5kcyBVUXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkUXQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IFE1dDtKNXQucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgdDN0PW5ldyBDSnQsZTN0PW5ldyBDSnQsbjN0PW5ldyBDSnQsaTN0PW5ldyBtSnQscjN0PW5ldyBtSnQsbzN0PW5ldyByUXQsYTN0PW5ldyBDSnQsczN0PW5ldyBDSnQsbDN0PW5ldyBDSnQsYzN0PW5ldyBtSnQsdTN0PW5ldyBtSnQsaDN0PW5ldyBtSnQ7Y2xhc3MgZDN0IGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PVE1dCl7UTV0PW5ldyBiMXQ7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyAkNXQodCw1KTtRNXQuc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksUTV0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBaNXQoZSwzLDAsITEpKSxRNXQuc2V0QXR0cmlidXRlKCJ1diIsbmV3IFo1dChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9UTV0LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBKNXQsdGhpcy5jZW50ZXI9bmV3IG1KdCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLGUzdC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksbzN0LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLG4zdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJmUzdC5tdWx0aXBseVNjYWxhcigtbjN0LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgaSxyOzAhPT1uJiYocj1NYXRoLmNvcyhuKSxpPU1hdGguc2luKG4pKTtjb25zdCBvPXRoaXMuY2VudGVyO3AzdChhM3Quc2V0KC0uNSwtLjUsMCksbjN0LG8sZTN0LGkscikscDN0KHMzdC5zZXQoLjUsLS41LDApLG4zdCxvLGUzdCxpLHIpLHAzdChsM3Quc2V0KC41LC41LDApLG4zdCxvLGUzdCxpLHIpLGMzdC5zZXQoMCwwKSx1M3Quc2V0KDEsMCksaDN0LnNldCgxLDEpO2xldCBhPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKGEzdCxzM3QsbDN0LCExLHQzdCk7aWYobnVsbD09PWEmJihwM3QoczN0LnNldCgtLjUsLjUsMCksbjN0LG8sZTN0LGksciksdTN0LnNldCgwLDEpLGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoYTN0LGwzdCxzM3QsITEsdDN0KSxudWxsPT09YSkpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8odDN0KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50OnQzdC5jbG9uZSgpLHV2OkZRdC5nZXRVVih0M3QsYTN0LHMzdCxsM3QsYzN0LHUzdCxoM3QsbmV3IG1KdCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fWZ1bmN0aW9uIHAzdCh0LGUsbixpLHIsbyl7aTN0LnN1YlZlY3RvcnModCxuKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KGkpLHZvaWQgMCE9PXI/KHIzdC54PW8qaTN0LngtcippM3QueSxyM3QueT1yKmkzdC54K28qaTN0LnkpOnIzdC5jb3B5KGkzdCksdC5jb3B5KGUpLHQueCs9cjN0LngsdC55Kz1yM3QueSx0LmFwcGx5TWF0cml4NChvM3QpfWQzdC5wcm90b3R5cGUuaXNTcHJpdGU9ITA7Y29uc3QgZjN0PW5ldyBDSnQsbTN0PW5ldyBDSnQ7Y2xhc3MgZzN0IGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9jdXJyZW50TGV2ZWw9MCx0aGlzLnR5cGU9IkxPRCIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7bGV2ZWxzOntlbnVtZXJhYmxlOiEwLHZhbHVlOltdfSxpc0xPRDp7dmFsdWU6ITB9fSksdGhpcy5hdXRvVXBkYXRlPSEwfWNvcHkodCl7c3VwZXIuY29weSh0LCExKTtjb25zdCBlPXQubGV2ZWxzO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1lW3RdO3RoaXMuYWRkTGV2ZWwobi5vYmplY3QuY2xvbmUoKSxuLmRpc3RhbmNlKX1yZXR1cm4gdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzfWFkZExldmVsKHQsZT0wKXtlPU1hdGguYWJzKGUpO2NvbnN0IG49dGhpcy5sZXZlbHM7bGV0IGk7Zm9yKGk9MDtpPG4ubGVuZ3RoJiYhKGU8bltpXS5kaXN0YW5jZSk7aSsrKTtyZXR1cm4gbi5zcGxpY2UoaSwwLHtkaXN0YW5jZTplLG9iamVjdDp0fSksdGhpcy5hZGQodCksdGhpc31nZXRDdXJyZW50TGV2ZWwoKXtyZXR1cm4gdGhpcy5fY3VycmVudExldmVsfWdldE9iamVjdEZvckRpc3RhbmNlKHQpe2NvbnN0IGU9dGhpcy5sZXZlbHM7aWYoZS5sZW5ndGg+MCl7bGV0IG4saTtmb3Iobj0xLGk9ZS5sZW5ndGg7bjxpJiYhKHQ8ZVtuXS5kaXN0YW5jZSk7bisrKTtyZXR1cm4gZVtuLTFdLm9iamVjdH1yZXR1cm4gbnVsbH1yYXljYXN0KHQsZSl7aWYodGhpcy5sZXZlbHMubGVuZ3RoPjApe2YzdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhmM3QpO3RoaXMuZ2V0T2JqZWN0Rm9yRGlzdGFuY2UobikucmF5Y2FzdCh0LGUpfX11cGRhdGUodCl7Y29uc3QgZT10aGlzLmxldmVscztpZihlLmxlbmd0aD4xKXtmM3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLG0zdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj1mM3QuZGlzdGFuY2VUbyhtM3QpL3Quem9vbTtsZXQgaSxyO2ZvcihlWzBdLm9iamVjdC52aXNpYmxlPSEwLGk9MSxyPWUubGVuZ3RoO2k8ciYmbj49ZVtpXS5kaXN0YW5jZTtpKyspZVtpLTFdLm9iamVjdC52aXNpYmxlPSExLGVbaV0ub2JqZWN0LnZpc2libGU9ITA7Zm9yKHRoaXMuX2N1cnJlbnRMZXZlbD1pLTE7aTxyO2krKyllW2ldLm9iamVjdC52aXNpYmxlPSExfX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7ITE9PT10aGlzLmF1dG9VcGRhdGUmJihlLm9iamVjdC5hdXRvVXBkYXRlPSExKSxlLm9iamVjdC5sZXZlbHM9W107Y29uc3Qgbj10aGlzLmxldmVscztmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtlLm9iamVjdC5sZXZlbHMucHVzaCh7b2JqZWN0Omkub2JqZWN0LnV1aWQsZGlzdGFuY2U6aS5kaXN0YW5jZX0pfXJldHVybiBlfX1jb25zdCBfM3Q9bmV3IENKdCx5M3Q9bmV3IHdKdCx2M3Q9bmV3IHdKdCxiM3Q9bmV3IENKdCx4M3Q9bmV3IHJRdDtjbGFzcyB3M3QgZXh0ZW5kcyBCMXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IHJRdCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyByUXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9YmluZCh0LGUpe3RoaXMuc2tlbGV0b249dCx2b2lkIDA9PT1lJiYodGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCksdGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpLGU9dGhpcy5tYXRyaXhXb3JsZCksdGhpcy5iaW5kTWF0cml4LmNvcHkoZSksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KGUpLmludmVydCgpfXBvc2UoKXt0aGlzLnNrZWxldG9uLnBvc2UoKX1ub3JtYWxpemVTa2luV2VpZ2h0cygpe2NvbnN0IHQ9bmV3IHdKdCxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbj0wLGk9ZS5jb3VudDtuPGk7bisrKXt0Lng9ZS5nZXRYKG4pLHQueT1lLmdldFkobiksdC56PWUuZ2V0WihuKSx0Lnc9ZS5nZXRXKG4pO2NvbnN0IGk9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO2khPT0xLzA/dC5tdWx0aXBseVNjYWxhcihpKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcobix0LngsdC55LHQueix0LncpfX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwiYXR0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk6ImRldGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuYmluZE1hdHJpeCkuaW52ZXJ0KCk6Y29uc29sZS53YXJuKCJUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAiK3RoaXMuYmluZE1vZGUpfWJvbmVUcmFuc2Zvcm0odCxlKXtjb25zdCBuPXRoaXMuc2tlbGV0b24saT10aGlzLmdlb21ldHJ5O3kzdC5mcm9tQnVmZmVyQXR0cmlidXRlKGkuYXR0cmlidXRlcy5za2luSW5kZXgsdCksdjN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsdCksXzN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHQpLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXgpLGUuc2V0KDAsMCwwKTtmb3IobGV0IHQ9MDt0PDQ7dCsrKXtjb25zdCBpPXYzdC5nZXRDb21wb25lbnQodCk7aWYoMCE9PWkpe2NvbnN0IHI9eTN0LmdldENvbXBvbmVudCh0KTt4M3QubXVsdGlwbHlNYXRyaWNlcyhuLmJvbmVzW3JdLm1hdHJpeFdvcmxkLG4uYm9uZUludmVyc2VzW3JdKSxlLmFkZFNjYWxlZFZlY3RvcihiM3QuY29weShfM3QpLmFwcGx5TWF0cml4NCh4M3QpLGkpfX1yZXR1cm4gZS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4SW52ZXJzZSl9fXczdC5wcm90b3R5cGUuaXNTa2lubmVkTWVzaD0hMDtjbGFzcyBTM3QgZXh0ZW5kcyBrUXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQm9uZSJ9fVMzdC5wcm90b3R5cGUuaXNCb25lPSEwO2NsYXNzIE0zdCBleHRlbmRzIGJKdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxpLHIsbyxhLHMsbD0xMDAzLGM9MTAwMyx1LGgpe3N1cGVyKG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fU0zdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDtjb25zdCBFM3Q9bmV3IHJRdCxUM3Q9bmV3IHJRdDtjbGFzcyBDM3R7Y29uc3RydWN0b3IodD1bXSxlPVtdKXt0aGlzLnV1aWQ9WFp0KCksdGhpcy5ib25lcz10LnNsaWNlKDApLHRoaXMuYm9uZUludmVyc2VzPWUsdGhpcy5ib25lTWF0cmljZXM9bnVsbCx0aGlzLmJvbmVUZXh0dXJlPW51bGwsdGhpcy5ib25lVGV4dHVyZVNpemU9MCx0aGlzLmZyYW1lPS0xLHRoaXMuaW5pdCgpfWluaXQoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcztpZih0aGlzLmJvbmVNYXRyaWNlcz1uZXcgRmxvYXQzMkFycmF5KDE2KnQubGVuZ3RoKSwwPT09ZS5sZW5ndGgpdGhpcy5jYWxjdWxhdGVJbnZlcnNlcygpO2Vsc2UgaWYodC5sZW5ndGghPT1lLmxlbmd0aCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTnVtYmVyIG9mIGludmVyc2UgYm9uZSBtYXRyaWNlcyBkb2VzIG5vdCBtYXRjaCBhbW91bnQgb2YgYm9uZXMuIiksdGhpcy5ib25lSW52ZXJzZXM9W107Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IHJRdCl9fWNhbGN1bGF0ZUludmVyc2VzKCl7dGhpcy5ib25lSW52ZXJzZXMubGVuZ3RoPTA7Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW5ldyByUXQ7dGhpcy5ib25lc1t0XSYmZS5jb3B5KHRoaXMuYm9uZXNbdF0ubWF0cml4V29ybGQpLmludmVydCgpLHRoaXMuYm9uZUludmVyc2VzLnB1c2goZSl9fXBvc2UoKXtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dGhpcy5ib25lc1t0XTtlJiZlLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5ib25lSW52ZXJzZXNbdF0pLmludmVydCgpfWZvcihsZXQgdD0wLGU9dGhpcy5ib25lcy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT10aGlzLmJvbmVzW3RdO2UmJihlLnBhcmVudCYmZS5wYXJlbnQuaXNCb25lPyhlLm1hdHJpeC5jb3B5KGUucGFyZW50Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxlLm1hdHJpeC5tdWx0aXBseShlLm1hdHJpeFdvcmxkKSk6ZS5tYXRyaXguY29weShlLm1hdHJpeFdvcmxkKSxlLm1hdHJpeC5kZWNvbXBvc2UoZS5wb3NpdGlvbixlLnF1YXRlcm5pb24sZS5zY2FsZSkpfX11cGRhdGUoKXtjb25zdCB0PXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcyxuPXRoaXMuYm9uZU1hdHJpY2VzLGk9dGhpcy5ib25lVGV4dHVyZTtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspRTN0Lm11bHRpcGx5TWF0cmljZXModFtpXT90W2ldLm1hdHJpeFdvcmxkOlQzdCxlW2ldKSxFM3QudG9BcnJheShuLDE2KmkpO251bGwhPT1pJiYoaS5uZWVkc1VwZGF0ZT0hMCl9Y2xvbmUoKXtyZXR1cm4gbmV3IEMzdCh0aGlzLmJvbmVzLHRoaXMuYm9uZUludmVyc2VzKX1jb21wdXRlQm9uZVRleHR1cmUoKXtsZXQgdD1NYXRoLnNxcnQoNCp0aGlzLmJvbmVzLmxlbmd0aCk7dD1RWnQodCksdD1NYXRoLm1heCh0LDQpO2NvbnN0IGU9bmV3IEZsb2F0MzJBcnJheSh0KnQqNCk7ZS5zZXQodGhpcy5ib25lTWF0cmljZXMpO2NvbnN0IG49bmV3IE0zdChlLHQsdCxoWnQsc1p0KTtyZXR1cm4gdGhpcy5ib25lTWF0cmljZXM9ZSx0aGlzLmJvbmVUZXh0dXJlPW4sdGhpcy5ib25lVGV4dHVyZVNpemU9dCx0aGlzfWdldEJvbmVCeU5hbWUodCl7Zm9yKGxldCBlPTAsbj10aGlzLmJvbmVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRoaXMuYm9uZXNbZV07aWYobi5uYW1lPT09dClyZXR1cm4gbn19ZGlzcG9zZSgpe251bGwhPT10aGlzLmJvbmVUZXh0dXJlJiYodGhpcy5ib25lVGV4dHVyZS5kaXNwb3NlKCksdGhpcy5ib25lVGV4dHVyZT1udWxsKX1mcm9tSlNPTih0LGUpe3RoaXMudXVpZD10LnV1aWQ7Zm9yKGxldCBuPTAsaT10LmJvbmVzLmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXQuYm9uZXNbbl07bGV0IHI9ZVtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTm8gYm9uZSBmb3VuZCB3aXRoIFVVSUQ6IixpKSxyPW5ldyBTM3QpLHRoaXMuYm9uZXMucHVzaChyKSx0aGlzLmJvbmVJbnZlcnNlcy5wdXNoKChuZXcgclF0KS5mcm9tQXJyYXkodC5ib25lSW52ZXJzZXNbbl0pKX1yZXR1cm4gdGhpcy5pbml0KCksdGhpc310b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiU2tlbGV0b24iLGdlbmVyYXRvcjoiU2tlbGV0b24udG9KU09OIn0sYm9uZXM6W10sYm9uZUludmVyc2VzOltdfTt0LnV1aWQ9dGhpcy51dWlkO2NvbnN0IGU9dGhpcy5ib25lcyxuPXRoaXMuYm9uZUludmVyc2VzO2ZvcihsZXQgaT0wLHI9ZS5sZW5ndGg7aTxyO2krKyl0LmJvbmVzLnB1c2goZVtpXS51dWlkKSx0LmJvbmVJbnZlcnNlcy5wdXNoKG5baV0udG9BcnJheSgpKTtyZXR1cm4gdH19Y29uc3QgQTN0PW5ldyByUXQsazN0PW5ldyByUXQsTDN0PVtdLFAzdD1uZXcgQjF0O2NsYXNzIE4zdCBleHRlbmRzIEIxdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBRUXQobmV3IEZsb2F0MzJBcnJheSgxNipuKSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc31nZXRDb2xvckF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9Z2V0TWF0cml4QXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMubWF0cml4V29ybGQsaT10aGlzLmNvdW50O2lmKFAzdC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LFAzdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHZvaWQgMCE9PVAzdC5tYXRlcmlhbClmb3IobGV0IHI9MDtyPGk7cisrKXt0aGlzLmdldE1hdHJpeEF0KHIsQTN0KSxrM3QubXVsdGlwbHlNYXRyaWNlcyhuLEEzdCksUDN0Lm1hdHJpeFdvcmxkPWszdCxQM3QucmF5Y2FzdCh0LEwzdCk7Zm9yKGxldCB0PTAsbj1MM3QubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49TDN0W3RdO24uaW5zdGFuY2VJZD1yLG4ub2JqZWN0PXRoaXMsZS5wdXNoKG4pfUwzdC5sZW5ndGg9MH19c2V0Q29sb3JBdCh0LGUpe251bGw9PT10aGlzLmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IFFRdChuZXcgRmxvYXQzMkFycmF5KDMqdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3VudCksMykpLGUudG9BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1zZXRNYXRyaXhBdCh0LGUpe2UudG9BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LDE2KnQpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1OM3QucHJvdG90eXBlLmlzSW5zdGFuY2VkTWVzaD0hMDtjbGFzcyBJM3QgZXh0ZW5kcyBVUXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkUXQoMTY3NzcyMTUpLHRoaXMubGluZXdpZHRoPTEsdGhpcy5saW5lY2FwPSJyb3VuZCIsdGhpcy5saW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubGluZXdpZHRoPXQubGluZXdpZHRoLHRoaXMubGluZWNhcD10LmxpbmVjYXAsdGhpcy5saW5lam9pbj10LmxpbmVqb2luLHRoaXN9fUkzdC5wcm90b3R5cGUuaXNMaW5lQmFzaWNNYXRlcmlhbD0hMDtjb25zdCBSM3Q9bmV3IENKdCxPM3Q9bmV3IENKdCx6M3Q9bmV3IHJRdCxEM3Q9bmV3IGlRdCxCM3Q9bmV3ICRKdDtjbGFzcyBIM3QgZXh0ZW5kcyBrUXR7Y29uc3RydWN0b3IodD1uZXcgYjF0LGU9bmV3IEkzdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmUiLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc31jb21wdXRlTGluZURpc3RhbmNlcygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49WzBdO2ZvcihsZXQgdD0xLGk9ZS5jb3VudDt0PGk7dCsrKVIzdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdC0xKSxPM3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQpLG5bdF09blt0LTFdLG5bdF0rPVIzdC5kaXN0YW5jZVRvKE8zdCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IGwxdChuLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLHI9dC5wYXJhbXMuTGluZS50aHJlc2hvbGQsbz1uLmRyYXdSYW5nZTtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxCM3QuY29weShuLmJvdW5kaW5nU3BoZXJlKSxCM3QuYXBwbHlNYXRyaXg0KGkpLEIzdC5yYWRpdXMrPXIsITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKEIzdCkpcmV0dXJuO3ozdC5jb3B5KGkpLmludmVydCgpLEQzdC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoejN0KTtjb25zdCBhPXIvKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMykscz1hKmEsbD1uZXcgQ0p0LGM9bmV3IENKdCx1PW5ldyBDSnQsaD1uZXcgQ0p0LGQ9dGhpcy5pc0xpbmVTZWdtZW50cz8yOjE7aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBpPW4uaW5kZXgscj1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbCE9PWkpZm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksYT1NYXRoLm1pbihpLmNvdW50LG8uc3RhcnQrby5jb3VudCktMTtuPGE7bis9ZCl7Y29uc3Qgbz1pLmdldFgobiksYT1pLmdldFgobisxKTtpZihsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixvKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhKSxEM3QuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMsaCx1KT5zKWNvbnRpbnVlO2guYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oaCk7ZDx0Lm5lYXJ8fGQ+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6ZCxwb2ludDp1LmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9ZWxzZSBmb3IobGV0IG49TWF0aC5tYXgoMCxvLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsby5zdGFydCtvLmNvdW50KS0xO248aTtuKz1kKXtpZihsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixuKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUocixuKzEpLEQzdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxoLHUpPnMpY29udGludWU7aC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgaT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhoKTtpPHQubmVhcnx8aT50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTppLHBvaW50OnUuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZSBuLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9dXBkYXRlTW9ycGhUYXJnZXRzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19SDN0LnByb3RvdHlwZS5pc0xpbmU9ITA7Y29uc3QgRjN0PW5ldyBDSnQsVjN0PW5ldyBDSnQ7Y2xhc3MgVTN0IGV4dGVuZHMgSDN0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVTZWdtZW50cyJ9Y29tcHV0ZUxpbmVEaXN0YW5jZXMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT10LmluZGV4KXtjb25zdCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVtdO2ZvcihsZXQgdD0wLGk9ZS5jb3VudDt0PGk7dCs9MilGM3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQpLFYzdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsxKSxuW3RdPTA9PT10PzA6blt0LTFdLG5bdCsxXT1uW3RdK0YzdC5kaXN0YW5jZVRvKFYzdCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IGwxdChuLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZVNlZ21lbnRzLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZVNlZ21lbnRzLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc319VTN0LnByb3RvdHlwZS5pc0xpbmVTZWdtZW50cz0hMDtjbGFzcyBqM3QgZXh0ZW5kcyBIM3R7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iTGluZUxvb3AifX1qM3QucHJvdG90eXBlLmlzTGluZUxvb3A9ITA7Y2xhc3MgRzN0IGV4dGVuZHMgVVF0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQb2ludHNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJFF0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLnNpemU9MSx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5zaXplPXQuc2l6ZSx0aGlzLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbix0aGlzfX1HM3QucHJvdG90eXBlLmlzUG9pbnRzTWF0ZXJpYWw9ITA7Y29uc3QgVzN0PW5ldyByUXQscTN0PW5ldyBpUXQsWTN0PW5ldyAkSnQsWDN0PW5ldyBDSnQ7Y2xhc3MgJDN0IGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQ9bmV3IGIxdCxlPW5ldyBHM3Qpe3N1cGVyKCksdGhpcy50eXBlPSJQb2ludHMiLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc31yYXljYXN0KHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LGk9dGhpcy5tYXRyaXhXb3JsZCxyPXQucGFyYW1zLlBvaW50cy50aHJlc2hvbGQsbz1uLmRyYXdSYW5nZTtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxZM3QuY29weShuLmJvdW5kaW5nU3BoZXJlKSxZM3QuYXBwbHlNYXRyaXg0KGkpLFkzdC5yYWRpdXMrPXIsITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKFkzdCkpcmV0dXJuO1czdC5jb3B5KGkpLmludmVydCgpLHEzdC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoVzN0KTtjb25zdCBhPXIvKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMykscz1hKmE7aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCByPW4uaW5kZXgsYT1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbCE9PXIpZm9yKGxldCBuPU1hdGgubWF4KDAsby5zdGFydCksbD1NYXRoLm1pbihyLmNvdW50LG8uc3RhcnQrby5jb3VudCk7bjxsO24rKyl7Y29uc3Qgbz1yLmdldFgobik7WDN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxvKSxLM3QoWDN0LG8scyxpLHQsZSx0aGlzKX1lbHNlIGZvcihsZXQgbj1NYXRoLm1heCgwLG8uc3RhcnQpLHI9TWF0aC5taW4oYS5jb3VudCxvLnN0YXJ0K28uY291bnQpO248cjtuKyspWDN0LmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxuKSxLM3QoWDN0LG4scyxpLHQsZSx0aGlzKX1lbHNlIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fWZ1bmN0aW9uIEszdCh0LGUsbixpLHIsbyxhKXtjb25zdCBzPXEzdC5kaXN0YW5jZVNxVG9Qb2ludCh0KTtpZihzPG4pe2NvbnN0IG49bmV3IENKdDtxM3QuY2xvc2VzdFBvaW50VG9Qb2ludCh0LG4pLG4uYXBwbHlNYXRyaXg0KGkpO2NvbnN0IGw9ci5yYXkub3JpZ2luLmRpc3RhbmNlVG8obik7aWYobDxyLm5lYXJ8fGw+ci5mYXIpcmV0dXJuO28ucHVzaCh7ZGlzdGFuY2U6bCxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChzKSxwb2ludDpuLGluZGV4OmUsZmFjZTpudWxsLG9iamVjdDphfSl9fSQzdC5wcm90b3R5cGUuaXNQb2ludHM9ITA7Y2xhc3MgWjN0IGV4dGVuZHMgYkp0e2NvbnN0cnVjdG9yKHQsZSxuLGkscixvLGEscyxsKXtzdXBlcih0LGUsbixpLHIsbyxhLHMsbCksdGhpcy5mb3JtYXQ9dm9pZCAwIT09YT9hOnVadCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1vP286ZVp0LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PXI/cjplWnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITE7Y29uc3QgYz10aGlzOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygoZnVuY3Rpb24gZSgpe2MubmVlZHNVcGRhdGU9ITAsdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGUpfSkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuaW1hZ2UpLmNvcHkodGhpcyl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmltYWdlOzA9PSJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVhZHlTdGF0ZT49dC5IQVZFX0NVUlJFTlRfREFUQSYmKHRoaXMubmVlZHNVcGRhdGU9ITApfX1aM3QucHJvdG90eXBlLmlzVmlkZW9UZXh0dXJlPSEwO2NsYXNzIEozdCBleHRlbmRzIGJKdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCl7c3VwZXIobnVsbCxvLGEscyxsLGMsaSxyLHUsaCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19SjN0LnByb3RvdHlwZS5pc0NvbXByZXNzZWRUZXh0dXJlPSEwO2NsYXNzIFEzdCBleHRlbmRzIGJKdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCl7c3VwZXIodCxlLG4saSxyLG8sYSxzLGwpLHRoaXMubmVlZHNVcGRhdGU9ITB9fVEzdC5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwO2NsYXNzIHQ0dCBleHRlbmRzIGJKdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCxjKXtpZigoYz12b2lkIDAhPT1jP2M6ZFp0KSE9PWRadCYmYyE9PXBadCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoVGV4dHVyZSBmb3JtYXQgbXVzdCBiZSBlaXRoZXIgVEhSRUUuRGVwdGhGb3JtYXQgb3IgVEhSRUUuRGVwdGhTdGVuY2lsRm9ybWF0Iik7dm9pZCAwPT09biYmYz09PWRadCYmKG49b1p0KSx2b2lkIDA9PT1uJiZjPT09cFp0JiYobj1jWnQpLHN1cGVyKG51bGwsaSxyLG8sYSxzLGMsbixsKSx0aGlzLmltYWdlPXt3aWR0aDp0LGhlaWdodDplfSx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1hP2E6Skt0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PXM/czpKS3QsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19dDR0LnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDtjbGFzcyBlNHQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodD0xLGU9OCxuPTAsaT0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDaXJjbGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxzZWdtZW50czplLHRoZXRhU3RhcnQ6bix0aGV0YUxlbmd0aDppfSxlPU1hdGgubWF4KDMsZSk7Y29uc3Qgcj1bXSxvPVtdLGE9W10scz1bXSxsPW5ldyBDSnQsYz1uZXcgbUp0O28ucHVzaCgwLDAsMCksYS5wdXNoKDAsMCwxKSxzLnB1c2goLjUsLjUpO2ZvcihsZXQgcj0wLHU9MztyPD1lO3IrKyx1Kz0zKXtjb25zdCBoPW4rci9lKmk7bC54PXQqTWF0aC5jb3MoaCksbC55PXQqTWF0aC5zaW4oaCksby5wdXNoKGwueCxsLnksbC56KSxhLnB1c2goMCwwLDEpLGMueD0ob1t1XS90KzEpLzIsYy55PShvW3UrMV0vdCsxKS8yLHMucHVzaChjLngsYy55KX1mb3IobGV0IHQ9MTt0PD1lO3QrKylyLnB1c2godCx0KzEsMCk7dGhpcy5zZXRJbmRleChyKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGwxdChhLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBsMXQocywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgZTR0KHQucmFkaXVzLHQuc2VnbWVudHMsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1jbGFzcyBuNHQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsaT04LHI9MSxvPSExLGE9MCxzPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkN5bGluZGVyR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzVG9wOnQscmFkaXVzQm90dG9tOmUsaGVpZ2h0Om4scmFkaWFsU2VnbWVudHM6aSxoZWlnaHRTZWdtZW50czpyLG9wZW5FbmRlZDpvLHRoZXRhU3RhcnQ6YSx0aGV0YUxlbmd0aDpzfTtjb25zdCBsPXRoaXM7aT1NYXRoLmZsb29yKGkpLHI9TWF0aC5mbG9vcihyKTtjb25zdCBjPVtdLHU9W10saD1bXSxkPVtdO2xldCBwPTA7Y29uc3QgZj1bXSxtPW4vMjtsZXQgZz0wO2Z1bmN0aW9uIF8obil7Y29uc3Qgcj1wLG89bmV3IG1KdCxmPW5ldyBDSnQ7bGV0IF89MDtjb25zdCB5PSEwPT09bj90OmUsdj0hMD09PW4/MTotMTtmb3IobGV0IHQ9MTt0PD1pO3QrKyl1LnB1c2goMCxtKnYsMCksaC5wdXNoKDAsdiwwKSxkLnB1c2goLjUsLjUpLHArKztjb25zdCBiPXA7Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pKnMrYSxuPU1hdGguY29zKGUpLHI9TWF0aC5zaW4oZSk7Zi54PXkqcixmLnk9bSp2LGYuej15Km4sdS5wdXNoKGYueCxmLnksZi56KSxoLnB1c2goMCx2LDApLG8ueD0uNSpuKy41LG8ueT0uNSpyKnYrLjUsZC5wdXNoKG8ueCxvLnkpLHArK31mb3IobGV0IHQ9MDt0PGk7dCsrKXtjb25zdCBlPXIrdCxpPWIrdDshMD09PW4/Yy5wdXNoKGksaSsxLGUpOmMucHVzaChpKzEsaSxlKSxfKz0zfWwuYWRkR3JvdXAoZyxfLCEwPT09bj8xOjIpLGcrPV99IShmdW5jdGlvbiB5KCl7Y29uc3Qgbz1uZXcgQ0p0LF89bmV3IENKdDtsZXQgeT0wO2NvbnN0IHY9KGUtdCkvbjtmb3IobGV0IGw9MDtsPD1yO2wrKyl7Y29uc3QgYz1bXSxnPWwvcix5PWcqKGUtdCkrdDtmb3IobGV0IHQ9MDt0PD1pO3QrKyl7Y29uc3QgZT10L2kscj1lKnMrYSxsPU1hdGguc2luKHIpLGY9TWF0aC5jb3Mocik7Xy54PXkqbCxfLnk9LWcqbittLF8uej15KmYsdS5wdXNoKF8ueCxfLnksXy56KSxvLnNldChsLHYsZikubm9ybWFsaXplKCksaC5wdXNoKG8ueCxvLnksby56KSxkLnB1c2goZSwxLWcpLGMucHVzaChwKyspfWYucHVzaChjKX1mb3IobGV0IHQ9MDt0PGk7dCsrKWZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IG49ZltlKzFdW3RdLGk9ZltlKzFdW3QrMV0scj1mW2VdW3QrMV07Yy5wdXNoKGZbZV1bdF0sbixyKSxjLnB1c2gobixpLHIpLHkrPTZ9bC5hZGRHcm91cChnLHksMCksZys9eX0pKCksITE9PT1vJiYodD4wJiZfKCEwKSxlPjAmJl8oITEpKSx0aGlzLnNldEluZGV4KGMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgbDF0KGgsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGwxdChkLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBuNHQodC5yYWRpdXNUb3AsdC5yYWRpdXNCb3R0b20sdC5oZWlnaHQsdC5yYWRpYWxTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQub3BlbkVuZGVkLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgaTR0IGV4dGVuZHMgbjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj04LGk9MSxyPSExLG89MCxhPTIqTWF0aC5QSSl7c3VwZXIoMCx0LGUsbixpLHIsbyxhKSx0aGlzLnR5cGU9IkNvbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxoZWlnaHQ6ZSxyYWRpYWxTZWdtZW50czpuLGhlaWdodFNlZ21lbnRzOmksb3BlbkVuZGVkOnIsdGhldGFTdGFydDpvLHRoZXRhTGVuZ3RoOmF9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGk0dCh0LnJhZGl1cyx0LmhlaWdodCx0LnJhZGlhbFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5vcGVuRW5kZWQsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX1jbGFzcyByNHQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodCxlLG49MSxpPTApe3N1cGVyKCksdGhpcy50eXBlPSJQb2x5aGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17dmVydGljZXM6dCxpbmRpY2VzOmUscmFkaXVzOm4sZGV0YWlsOml9O2NvbnN0IHI9W10sbz1bXTtmdW5jdGlvbiBhKHQsZSxuLGkpe2NvbnN0IHI9aSsxLG89W107Zm9yKGxldCBpPTA7aTw9cjtpKyspe29baV09W107Y29uc3QgYT10LmNsb25lKCkubGVycChuLGkvcikscz1lLmNsb25lKCkubGVycChuLGkvciksbD1yLWk7Zm9yKGxldCB0PTA7dDw9bDt0Kyspb1tpXVt0XT0wPT09dCYmaT09PXI/YTphLmNsb25lKCkubGVycChzLHQvbCl9Zm9yKGxldCB0PTA7dDxyO3QrKylmb3IobGV0IGU9MDtlPDIqKHItdCktMTtlKyspe2NvbnN0IG49TWF0aC5mbG9vcihlLzIpO2UlMj09MD8ocyhvW3RdW24rMV0pLHMob1t0KzFdW25dKSxzKG9bdF1bbl0pKToocyhvW3RdW24rMV0pLHMob1t0KzFdW24rMV0pLHMob1t0KzFdW25dKSl9fWZ1bmN0aW9uIHModCl7ci5wdXNoKHQueCx0LnksdC56KX1mdW5jdGlvbiBsKGUsbil7Y29uc3QgaT0zKmU7bi54PXRbaSswXSxuLnk9dFtpKzFdLG4uej10W2krMl19ZnVuY3Rpb24gYyh0LGUsbixpKXtpPDAmJjE9PT10LngmJihvW2VdPXQueC0xKSwwPT09bi54JiYwPT09bi56JiYob1tlXT1pLzIvTWF0aC5QSSsuNSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gTWF0aC5hdGFuMih0LnosLXQueCl9IShmdW5jdGlvbiBoKHQpe2NvbnN0IG49bmV3IENKdCxpPW5ldyBDSnQscj1uZXcgQ0p0O2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bys9MylsKGVbbyswXSxuKSxsKGVbbysxXSxpKSxsKGVbbysyXSxyKSxhKG4saSxyLHQpfSkoaSksKGZ1bmN0aW9uIGQodCl7Y29uc3QgZT1uZXcgQ0p0O2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bis9MyllLng9cltuKzBdLGUueT1yW24rMV0sZS56PXJbbisyXSxlLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpLHJbbiswXT1lLngscltuKzFdPWUueSxyW24rMl09ZS56fSkobiksKGZ1bmN0aW9uIHAoKXtjb25zdCB0PW5ldyBDSnQ7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKz0zKXt0Lng9cltuKzBdLHQueT1yW24rMV0sdC56PXJbbisyXTtjb25zdCBpPXUodCkvMi9NYXRoLlBJKy41LGE9KGU9dCxNYXRoLmF0YW4yKC1lLnksTWF0aC5zcXJ0KGUueCplLngrZS56KmUueikpL01hdGguUEkrLjUpO28ucHVzaChpLDEtYSl9dmFyIGU7KGZ1bmN0aW9uIG4oKXtjb25zdCB0PW5ldyBDSnQsZT1uZXcgQ0p0LG49bmV3IENKdCxpPW5ldyBDSnQsYT1uZXcgbUp0LHM9bmV3IG1KdCxsPW5ldyBtSnQ7Zm9yKGxldCBoPTAsZD0wO2g8ci5sZW5ndGg7aCs9OSxkKz02KXt0LnNldChyW2grMF0scltoKzFdLHJbaCsyXSksZS5zZXQocltoKzNdLHJbaCs0XSxyW2grNV0pLG4uc2V0KHJbaCs2XSxyW2grN10scltoKzhdKSxhLnNldChvW2QrMF0sb1tkKzFdKSxzLnNldChvW2QrMl0sb1tkKzNdKSxsLnNldChvW2QrNF0sb1tkKzVdKSxpLmNvcHkodCkuYWRkKGUpLmFkZChuKS5kaXZpZGVTY2FsYXIoMyk7Y29uc3QgcD11KGkpO2MoYSxkKzAsdCxwKSxjKHMsZCsyLGUscCksYyhsLGQrNCxuLHApfX0pKCksKGZ1bmN0aW9uIGkoKXtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrPTYpe2NvbnN0IGU9b1t0KzBdLG49b1t0KzJdLGk9b1t0KzRdLHI9TWF0aC5tYXgoZSxuLGkpLGE9TWF0aC5taW4oZSxuLGkpO3I+LjkmJmE8LjEmJihlPC4yJiYob1t0KzBdKz0xKSxuPC4yJiYob1t0KzJdKz0xKSxpPC4yJiYob1t0KzRdKz0xKSl9fSkoKX0pKCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBsMXQoci5zbGljZSgpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBsMXQobywyKSksMD09PWk/dGhpcy5jb21wdXRlVmVydGV4Tm9ybWFscygpOnRoaXMubm9ybWFsaXplTm9ybWFscygpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IHI0dCh0LnZlcnRpY2VzLHQuaW5kaWNlcyx0LnJhZGl1cyx0LmRldGFpbHMpfX1jbGFzcyBvNHQgZXh0ZW5kcyByNHR7Y29uc3RydWN0b3IodD0xLGU9MCl7Y29uc3Qgbj0oMStNYXRoLnNxcnQoNSkpLzIsaT0xL247c3VwZXIoWy0xLC0xLC0xLC0xLC0xLDEsLTEsMSwtMSwtMSwxLDEsMSwtMSwtMSwxLC0xLDEsMSwxLC0xLDEsMSwxLDAsLWksLW4sMCwtaSxuLDAsaSwtbiwwLGksbiwtaSwtbiwwLC1pLG4sMCxpLC1uLDAsaSxuLDAsLW4sMCwtaSxuLDAsLWksLW4sMCxpLG4sMCxpXSxbMywxMSw3LDMsNywxNSwzLDE1LDEzLDcsMTksMTcsNywxNyw2LDcsNiwxNSwxNyw0LDgsMTcsOCwxMCwxNywxMCw2LDgsMCwxNiw4LDE2LDIsOCwyLDEwLDAsMTIsMSwwLDEsMTgsMCwxOCwxNiw2LDEwLDIsNiwyLDEzLDYsMTMsMTUsMiwxNiwxOCwyLDE4LDMsMiwzLDEzLDE4LDEsOSwxOCw5LDExLDE4LDExLDMsNCwxNCwxMiw0LDEyLDAsNCwwLDgsMTEsOSw1LDExLDUsMTksMTEsMTksNywxOSw1LDE0LDE5LDE0LDQsMTksNCwxNywxLDEyLDE0LDEsMTQsNSwxLDUsOV0sdCxlKSx0aGlzLnR5cGU9IkRvZGVjYWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBvNHQodC5yYWRpdXMsdC5kZXRhaWwpfX1jb25zdCBhNHQ9bmV3IENKdCxzNHQ9bmV3IENKdCxsNHQ9bmV3IENKdCxjNHQ9bmV3IEZRdDtjbGFzcyB1NHQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodCxlKXtpZihzdXBlcigpLHRoaXMudHlwZT0iRWRnZXNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt0aHJlc2hvbGRBbmdsZTplfSxlPXZvaWQgMCE9PWU/ZToxLCEwPT09dC5pc0dlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkVkZ2VzR2VvbWV0cnkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtjb25zdCBuPU1hdGguY29zKHFadCplKSxpPXQuZ2V0SW5kZXgoKSxyPXQuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLG89aT9pLmNvdW50OnIuY291bnQsYT1bMCwwLDBdLHM9WyJhIiwiYiIsImMiXSxsPW5ldyBBcnJheSgzKSxjPXt9LHU9W107Zm9yKGxldCB0PTA7dDxvO3QrPTMpe2k/KGFbMF09aS5nZXRYKHQpLGFbMV09aS5nZXRYKHQrMSksYVsyXT1pLmdldFgodCsyKSk6KGFbMF09dCxhWzFdPXQrMSxhWzJdPXQrMik7Y29uc3R7YTplLGI6byxjOmh9PWM0dDtpZihlLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhWzBdKSxvLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhWzFdKSxoLmZyb21CdWZmZXJBdHRyaWJ1dGUocixhWzJdKSxjNHQuZ2V0Tm9ybWFsKGw0dCksbFswXT1gJHtlLnh9LCR7ZS55fSwke2Uuen1gLGxbMV09YCR7by54fSwke28ueX0sJHtvLnp9YCxsWzJdPWAke2gueH0sJHtoLnl9LCR7aC56fWAsbFswXSE9PWxbMV0mJmxbMV0hPT1sWzJdJiZsWzJdIT09bFswXSlmb3IobGV0IHQ9MDt0PDM7dCsrKXtjb25zdCBlPSh0KzEpJTMsaT1sW3RdLHI9bFtlXSxvPWM0dFtzW3RdXSxoPWM0dFtzW2VdXSxkPWAke2l9XyR7cn1gLHA9YCR7cn1fJHtpfWA7cCBpbiBjJiZjW3BdPyhsNHQuZG90KGNbcF0ubm9ybWFsKTw9biYmKHUucHVzaChvLngsby55LG8ueiksdS5wdXNoKGgueCxoLnksaC56KSksY1twXT1udWxsKTpkIGluIGN8fChjW2RdPXtpbmRleDA6YVt0XSxpbmRleDE6YVtlXSxub3JtYWw6bDR0LmNsb25lKCl9KX19Zm9yKGNvbnN0IHQgaW4gYylpZihjW3RdKXtjb25zdHtpbmRleDA6ZSxpbmRleDE6bn09Y1t0XTthNHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGUpLHM0dC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksdS5wdXNoKGE0dC54LGE0dC55LGE0dC56KSx1LnB1c2goczR0LngsczR0LnksczR0LnopfXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdCh1LDMpKX19Y2xhc3MgaDR0e2NvbnN0cnVjdG9yKCl7dGhpcy50eXBlPSJDdXJ2ZSIsdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9MjAwfWdldFBvaW50KCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3VydmU6IC5nZXRQb2ludCgpIG5vdCBpbXBsZW1lbnRlZC4iKSxudWxsfWdldFBvaW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0UG9pbnQobixlKX1nZXRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiBlfWdldFNwYWNlZFBvaW50cyh0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnRBdChuL3QpKTtyZXR1cm4gZX1nZXRMZW5ndGgoKXtjb25zdCB0PXRoaXMuZ2V0TGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfWdldExlbmd0aHModD10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyl7aWYodGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PXQrMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzO3RoaXMubmVlZHNVcGRhdGU9ITE7Y29uc3QgZT1bXTtsZXQgbixpPXRoaXMuZ2V0UG9pbnQoMCkscj0wO2UucHVzaCgwKTtmb3IobGV0IG89MTtvPD10O28rKyluPXRoaXMuZ2V0UG9pbnQoby90KSxyKz1uLmRpc3RhbmNlVG8oaSksZS5wdXNoKHIpLGk9bjtyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM9ZSxlfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuZ2V0TGVuZ3RocygpfWdldFV0b1RtYXBwaW5nKHQsZSl7Y29uc3Qgbj10aGlzLmdldExlbmd0aHMoKTtsZXQgaT0wO2NvbnN0IHI9bi5sZW5ndGg7bGV0IG87bz1lfHx0Km5bci0xXTtsZXQgYSxzPTAsbD1yLTE7Zm9yKDtzPD1sOylpZihpPU1hdGguZmxvb3IocysobC1zKS8yKSxhPW5baV0tbyxhPDApcz1pKzE7ZWxzZXtpZighKGE+MCkpe2w9aTticmVha31sPWktMX1pZihpPWwsbltpXT09PW8pcmV0dXJuIGkvKHItMSk7Y29uc3QgYz1uW2ldO3JldHVybihpKyhvLWMpLyhuW2krMV0tYykpLyhyLTEpfWdldFRhbmdlbnQodCxlKXtjb25zdCBuPTFlLTQ7bGV0IGk9dC1uLHI9dCtuO2k8MCYmKGk9MCkscj4xJiYocj0xKTtjb25zdCBvPXRoaXMuZ2V0UG9pbnQoaSksYT10aGlzLmdldFBvaW50KHIpLHM9ZXx8KG8uaXNWZWN0b3IyP25ldyBtSnQ6bmV3IENKdCk7cmV0dXJuIHMuY29weShhKS5zdWIobykubm9ybWFsaXplKCksc31nZXRUYW5nZW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChuLGUpfWNvbXB1dGVGcmVuZXRGcmFtZXModCxlKXtjb25zdCBuPW5ldyBDSnQsaT1bXSxyPVtdLG89W10sYT1uZXcgQ0p0LHM9bmV3IHJRdDtmb3IobGV0IGU9MDtlPD10O2UrKylpW2VdPXRoaXMuZ2V0VGFuZ2VudEF0KGUvdCxuZXcgQ0p0KSxpW2VdLm5vcm1hbGl6ZSgpO3JbMF09bmV3IENKdCxvWzBdPW5ldyBDSnQ7bGV0IGw9TnVtYmVyLk1BWF9WQUxVRTtjb25zdCBjPU1hdGguYWJzKGlbMF0ueCksdT1NYXRoLmFicyhpWzBdLnkpLGg9TWF0aC5hYnMoaVswXS56KTtjPD1sJiYobD1jLG4uc2V0KDEsMCwwKSksdTw9bCYmKGw9dSxuLnNldCgwLDEsMCkpLGg8PWwmJm4uc2V0KDAsMCwxKSxhLmNyb3NzVmVjdG9ycyhpWzBdLG4pLm5vcm1hbGl6ZSgpLHJbMF0uY3Jvc3NWZWN0b3JzKGlbMF0sYSksb1swXS5jcm9zc1ZlY3RvcnMoaVswXSxyWzBdKTtmb3IobGV0IGU9MTtlPD10O2UrKyl7aWYocltlXT1yW2UtMV0uY2xvbmUoKSxvW2VdPW9bZS0xXS5jbG9uZSgpLGEuY3Jvc3NWZWN0b3JzKGlbZS0xXSxpW2VdKSxhLmxlbmd0aCgpPk51bWJlci5FUFNJTE9OKXthLm5vcm1hbGl6ZSgpO2NvbnN0IHQ9TWF0aC5hY29zKCRadChpW2UtMV0uZG90KGlbZV0pLC0xLDEpKTtyW2VdLmFwcGx5TWF0cml4NChzLm1ha2VSb3RhdGlvbkF4aXMoYSx0KSl9b1tlXS5jcm9zc1ZlY3RvcnMoaVtlXSxyW2VdKX1pZighMD09PWUpe2xldCBlPU1hdGguYWNvcygkWnQoclswXS5kb3Qoclt0XSksLTEsMSkpO2UvPXQsaVswXS5kb3QoYS5jcm9zc1ZlY3RvcnMoclswXSxyW3RdKSk+MCYmKGU9LWUpO2ZvcihsZXQgbj0xO248PXQ7bisrKXJbbl0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhpW25dLGUqbikpLG9bbl0uY3Jvc3NWZWN0b3JzKGlbbl0scltuXSl9cmV0dXJue3RhbmdlbnRzOmksbm9ybWFsczpyLGJpbm9ybWFsczpvfX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJDdXJ2ZSIsZ2VuZXJhdG9yOiJDdXJ2ZS50b0pTT04ifX07cmV0dXJuIHQuYXJjTGVuZ3RoRGl2aXNpb25zPXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zLHQudHlwZT10aGlzLnR5cGUsdH1mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc319Y2xhc3MgZDR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0xLGk9MSxyPTAsbz0yKk1hdGguUEksYT0hMSxzPTApe3N1cGVyKCksdGhpcy50eXBlPSJFbGxpcHNlQ3VydmUiLHRoaXMuYVg9dCx0aGlzLmFZPWUsdGhpcy54UmFkaXVzPW4sdGhpcy55UmFkaXVzPWksdGhpcy5hU3RhcnRBbmdsZT1yLHRoaXMuYUVuZEFuZ2xlPW8sdGhpcy5hQ2xvY2t3aXNlPWEsdGhpcy5hUm90YXRpb249c31nZXRQb2ludCh0LGUpe2NvbnN0IG49ZXx8bmV3IG1KdCxpPTIqTWF0aC5QSTtsZXQgcj10aGlzLmFFbmRBbmdsZS10aGlzLmFTdGFydEFuZ2xlO2NvbnN0IG89TWF0aC5hYnMocik8TnVtYmVyLkVQU0lMT047Zm9yKDtyPDA7KXIrPWk7Zm9yKDtyPmk7KXItPWk7cjxOdW1iZXIuRVBTSUxPTiYmKHI9bz8wOmkpLCEwIT09dGhpcy5hQ2xvY2t3aXNlfHxvfHwocj09PWk/cj0taTpyLT1pKTtjb25zdCBhPXRoaXMuYVN0YXJ0QW5nbGUrdCpyO2xldCBzPXRoaXMuYVgrdGhpcy54UmFkaXVzKk1hdGguY29zKGEpLGw9dGhpcy5hWSt0aGlzLnlSYWRpdXMqTWF0aC5zaW4oYSk7aWYoMCE9PXRoaXMuYVJvdGF0aW9uKXtjb25zdCB0PU1hdGguY29zKHRoaXMuYVJvdGF0aW9uKSxlPU1hdGguc2luKHRoaXMuYVJvdGF0aW9uKSxuPXMtdGhpcy5hWCxpPWwtdGhpcy5hWTtzPW4qdC1pKmUrdGhpcy5hWCxsPW4qZStpKnQrdGhpcy5hWX1yZXR1cm4gbi5zZXQocyxsKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5hWD10aGlzLmFYLHQuYVk9dGhpcy5hWSx0LnhSYWRpdXM9dGhpcy54UmFkaXVzLHQueVJhZGl1cz10aGlzLnlSYWRpdXMsdC5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlLHQuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlLHQuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2UsdC5hUm90YXRpb249dGhpcy5hUm90YXRpb24sdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc319ZDR0LnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMDtjbGFzcyBwNHQgZXh0ZW5kcyBkNHR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3N1cGVyKHQsZSxuLG4saSxyLG8pLHRoaXMudHlwZT0iQXJjQ3VydmUifX1mdW5jdGlvbiBmNHQoKXtsZXQgdD0wLGU9MCxuPTAsaT0wO2Z1bmN0aW9uIHIocixvLGEscyl7dD1yLGU9YSxuPS0zKnIrMypvLTIqYS1zLGk9MipyLTIqbythK3N9cmV0dXJue2luaXRDYXRtdWxsUm9tOmZ1bmN0aW9uKHQsZSxuLGksbyl7cihlLG4sbyoobi10KSxvKihpLWUpKX0saW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tOmZ1bmN0aW9uKHQsZSxuLGksbyxhLHMpe2xldCBsPShlLXQpL28tKG4tdCkvKG8rYSkrKG4tZSkvYSxjPShuLWUpL2EtKGktZSkvKGErcykrKGktbikvcztsKj1hLGMqPWEscihlLG4sbCxjKX0sY2FsYzpmdW5jdGlvbihyKXtjb25zdCBvPXIqcjtyZXR1cm4gdCtlKnIrbipvK2kqKG8qcil9fX1wNHQucHJvdG90eXBlLmlzQXJjQ3VydmU9ITA7Y29uc3QgbTR0PW5ldyBDSnQsZzR0PW5ldyBmNHQsXzR0PW5ldyBmNHQseTR0PW5ldyBmNHQ7Y2xhc3MgdjR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQ9W10sZT0hMSxuPSJjZW50cmlwZXRhbCIsaT0uNSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNhdG11bGxSb21DdXJ2ZTMiLHRoaXMucG9pbnRzPXQsdGhpcy5jbG9zZWQ9ZSx0aGlzLmN1cnZlVHlwZT1uLHRoaXMudGVuc2lvbj1pfWdldFBvaW50KHQsZT1uZXcgQ0p0KXtjb25zdCBuPWUsaT10aGlzLnBvaW50cyxyPWkubGVuZ3RoLG89KHItKHRoaXMuY2xvc2VkPzA6MSkpKnQ7bGV0IGEscyxsPU1hdGguZmxvb3IobyksYz1vLWw7dGhpcy5jbG9zZWQ/bCs9bD4wPzA6KE1hdGguZmxvb3IoTWF0aC5hYnMobCkvcikrMSkqcjowPT09YyYmbD09PXItMSYmKGw9ci0yLGM9MSksdGhpcy5jbG9zZWR8fGw+MD9hPWlbKGwtMSklcl06KG00dC5zdWJWZWN0b3JzKGlbMF0saVsxXSkuYWRkKGlbMF0pLGE9bTR0KTtjb25zdCB1PWlbbCVyXSxoPWlbKGwrMSklcl07aWYodGhpcy5jbG9zZWR8fGwrMjxyP3M9aVsobCsyKSVyXToobTR0LnN1YlZlY3RvcnMoaVtyLTFdLGlbci0yXSkuYWRkKGlbci0xXSkscz1tNHQpLCJjZW50cmlwZXRhbCI9PT10aGlzLmN1cnZlVHlwZXx8ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGUpe2NvbnN0IHQ9ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGU/LjU6LjI1O2xldCBlPU1hdGgucG93KGEuZGlzdGFuY2VUb1NxdWFyZWQodSksdCksbj1NYXRoLnBvdyh1LmRpc3RhbmNlVG9TcXVhcmVkKGgpLHQpLGk9TWF0aC5wb3coaC5kaXN0YW5jZVRvU3F1YXJlZChzKSx0KTtuPDFlLTQmJihuPTEpLGU8MWUtNCYmKGU9biksaTwxZS00JiYoaT1uKSxnNHQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGEueCx1LngsaC54LHMueCxlLG4saSksXzR0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShhLnksdS55LGgueSxzLnksZSxuLGkpLHk0dC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYS56LHUueixoLnoscy56LGUsbixpKX1lbHNlImNhdG11bGxyb20iPT09dGhpcy5jdXJ2ZVR5cGUmJihnNHQuaW5pdENhdG11bGxSb20oYS54LHUueCxoLngscy54LHRoaXMudGVuc2lvbiksXzR0LmluaXRDYXRtdWxsUm9tKGEueSx1LnksaC55LHMueSx0aGlzLnRlbnNpb24pLHk0dC5pbml0Q2F0bXVsbFJvbShhLnosdS56LGgueixzLnosdGhpcy50ZW5zaW9uKSk7cmV0dXJuIG4uc2V0KGc0dC5jYWxjKGMpLF80dC5jYWxjKGMpLHk0dC5jYWxjKGMpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXRoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspdC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpO3JldHVybiB0LmNsb3NlZD10aGlzLmNsb3NlZCx0LmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZSx0LnRlbnNpb249dGhpcy50ZW5zaW9uLHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgQ0p0KS5mcm9tQXJyYXkobikpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9fWZ1bmN0aW9uIGI0dCh0LGUsbixpLHIpe2NvbnN0IG89LjUqKGktZSksYT0uNSooci1uKSxzPXQqdDtyZXR1cm4oMipuLTIqaStvK2EpKih0KnMpKygtMypuKzMqaS0yKm8tYSkqcytvKnQrbn1mdW5jdGlvbiB4NHQodCxlLG4saSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIDIqKDEtdCkqdCplfSkodCxuKSsoZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0KnQqZX0pKHQsaSl9ZnVuY3Rpb24gdzR0KHQsZSxuLGkscil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKm4qZX0pKHQsZSkrKGZ1bmN0aW9uIGEodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gMypuKm4qdCplfSkodCxuKSsoZnVuY3Rpb24gcyh0LGUpe3JldHVybiAzKigxLXQpKnQqdCplfSkodCxpKSsoZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0KnQqdCplfSkodCxyKX12NHQucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMz0hMDtjbGFzcyBTNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodD1uZXcgbUp0LGU9bmV3IG1KdCxuPW5ldyBtSnQsaT1uZXcgbUp0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1pfWdldFBvaW50KHQsZT1uZXcgbUp0KXtjb25zdCBuPWUsaT10aGlzLnYwLHI9dGhpcy52MSxvPXRoaXMudjIsYT10aGlzLnYzO3JldHVybiBuLnNldCh3NHQodCxpLngsci54LG8ueCxhLngpLHc0dCh0LGkueSxyLnksby55LGEueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fVM0dC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlPSEwO2NsYXNzIE00dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0PW5ldyBDSnQsZT1uZXcgQ0p0LG49bmV3IENKdCxpPW5ldyBDSnQpe3N1cGVyKCksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1pfWdldFBvaW50KHQsZT1uZXcgQ0p0KXtjb25zdCBuPWUsaT10aGlzLnYwLHI9dGhpcy52MSxvPXRoaXMudjIsYT10aGlzLnYzO3JldHVybiBuLnNldCh3NHQodCxpLngsci54LG8ueCxhLngpLHc0dCh0LGkueSxyLnksby55LGEueSksdzR0KHQsaS56LHIueixvLnosYS56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHQudjM9dGhpcy52My50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpcy52My5mcm9tQXJyYXkodC52MyksdGhpc319TTR0LnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIEU0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0PW5ldyBtSnQsZT1uZXcgbUp0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlIix0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgbUp0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn1nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgbUp0O3JldHVybiBuLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLm5vcm1hbGl6ZSgpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fUU0dC5wcm90b3R5cGUuaXNMaW5lQ3VydmU9ITA7Y2xhc3MgVDR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQ9bmV3IENKdCxlPW5ldyBDSnQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLmlzTGluZUN1cnZlMz0hMCx0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgQ0p0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn1nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319Y2xhc3MgQzR0IGV4dGVuZHMgaDR0e2NvbnN0cnVjdG9yKHQ9bmV3IG1KdCxlPW5ldyBtSnQsbj1uZXcgbUp0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgbUp0KXtjb25zdCBuPWUsaT10aGlzLnYwLHI9dGhpcy52MSxvPXRoaXMudjI7cmV0dXJuIG4uc2V0KHg0dCh0LGkueCxyLngsby54KSx4NHQodCxpLnksci55LG8ueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fUM0dC5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyBBNHQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IodD1uZXcgQ0p0LGU9bmV3IENKdCxuPW5ldyBDSnQpe3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgQ0p0KXtjb25zdCBuPWUsaT10aGlzLnYwLHI9dGhpcy52MSxvPXRoaXMudjI7cmV0dXJuIG4uc2V0KHg0dCh0LGkueCxyLngsby54KSx4NHQodCxpLnksci55LG8ueSkseDR0KHQsaS56LHIueixvLnopKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX1BNHQucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIGs0dCBleHRlbmRzIGg0dHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMudHlwZT0iU3BsaW5lQ3VydmUiLHRoaXMucG9pbnRzPXR9Z2V0UG9pbnQodCxlPW5ldyBtSnQpe2NvbnN0IG49ZSxpPXRoaXMucG9pbnRzLHI9KGkubGVuZ3RoLTEpKnQsbz1NYXRoLmZsb29yKHIpLGE9ci1vLHM9aVswPT09bz9vOm8tMV0sbD1pW29dLGM9aVtvPmkubGVuZ3RoLTI/aS5sZW5ndGgtMTpvKzFdLHU9aVtvPmkubGVuZ3RoLTM/aS5sZW5ndGgtMTpvKzJdO3JldHVybiBuLnNldChiNHQoYSxzLngsbC54LGMueCx1LngpLGI0dChhLHMueSxsLnksYy55LHUueSkpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspdGhpcy5wb2ludHMucHVzaCh0LnBvaW50c1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspdC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpO3JldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IG1KdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319azR0LnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBMNHQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6cDR0LENhdG11bGxSb21DdXJ2ZTM6djR0LEN1YmljQmV6aWVyQ3VydmU6UzR0LEN1YmljQmV6aWVyQ3VydmUzOk00dCxFbGxpcHNlQ3VydmU6ZDR0LExpbmVDdXJ2ZTpFNHQsTGluZUN1cnZlMzpUNHQsUXVhZHJhdGljQmV6aWVyQ3VydmU6QzR0LFF1YWRyYXRpY0JlemllckN1cnZlMzpBNHQsU3BsaW5lQ3VydmU6azR0fSk7ZnVuY3Rpb24gUDR0KHQsZSxuLGkscil7bGV0IG8sYTtpZihyPT09KGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9MDtmb3IobGV0IG89ZSxhPW4taTtvPG47bys9aSlyKz0odFthXS10W29dKSoodFtvKzFdK3RbYSsxXSksYT1vO3JldHVybiByfSkodCxlLG4saSk+MClmb3Iobz1lO288bjtvKz1pKWE9SjR0KG8sdFtvXSx0W28rMV0sYSk7ZWxzZSBmb3Iobz1uLWk7bz49ZTtvLT1pKWE9SjR0KG8sdFtvXSx0W28rMV0sYSk7cmV0dXJuIGEmJnE0dChhLGEubmV4dCkmJihRNHQoYSksYT1hLm5leHQpLGF9ZnVuY3Rpb24gTjR0KHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7bGV0IG4saT10O2Rve2lmKG49ITEsaS5zdGVpbmVyfHwhcTR0KGksaS5uZXh0KSYmMCE9PVc0dChpLnByZXYsaSxpLm5leHQpKWk9aS5uZXh0O2Vsc2V7aWYoUTR0KGkpLGk9ZT1pLnByZXYsaT09PWkubmV4dClicmVhaztuPSEwfX13aGlsZShufHxpIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gSTR0KHQsZSxuLGkscixvLGEpe2lmKCF0KXJldHVybjshYSYmbyYmKGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9dDtkb3tudWxsPT09ci56JiYoci56PVY0dChyLngsci55LGUsbixpKSksci5wcmV2Wj1yLnByZXYsci5uZXh0Wj1yLm5leHQscj1yLm5leHR9d2hpbGUociE9PXQpO3IucHJldloubmV4dFo9bnVsbCxyLnByZXZaPW51bGwsKGZ1bmN0aW9uIG8odCl7bGV0IGUsbixpLHIsbyxhLHMsbCxjPTE7ZG97Zm9yKG49dCx0PW51bGwsbz1udWxsLGE9MDtuOyl7Zm9yKGErKyxpPW4scz0wLGU9MDtlPGMmJihzKyssaT1pLm5leHRaLGkpO2UrKyk7Zm9yKGw9YztzPjB8fGw+MCYmaTspMCE9PXMmJigwPT09bHx8IWl8fG4uejw9aS56KT8ocj1uLG49bi5uZXh0WixzLS0pOihyPWksaT1pLm5leHRaLGwtLSksbz9vLm5leHRaPXI6dD1yLHIucHJldlo9byxvPXI7bj1pfW8ubmV4dFo9bnVsbCxjKj0yfXdoaWxlKGE+MSl9KShyKX0pKHQsaSxyLG8pO2xldCBsLGMsdT10O2Zvcig7dC5wcmV2IT09dC5uZXh0OylpZihsPXQucHJldixjPXQubmV4dCxvP080dCh0LGkscixvKTpSNHQodCkpZS5wdXNoKGwuaS9uKSxlLnB1c2godC5pL24pLGUucHVzaChjLmkvbiksUTR0KHQpLHQ9Yy5uZXh0LHU9Yy5uZXh0O2Vsc2UgaWYoKHQ9Yyk9PT11KXthPzE9PT1hP0k0dCh0PXo0dChONHQodCksZSxuKSxlLG4saSxyLG8sMik6Mj09PWEmJkQ0dCh0LGUsbixpLHIsbyk6STR0KE40dCh0KSxlLG4saSxyLG8sMSk7YnJlYWt9fWZ1bmN0aW9uIFI0dCh0KXtjb25zdCBlPXQucHJldixuPXQsaT10Lm5leHQ7aWYoVzR0KGUsbixpKT49MClyZXR1cm4hMTtsZXQgcj10Lm5leHQubmV4dDtmb3IoO3IhPT10LnByZXY7KXtpZihqNHQoZS54LGUueSxuLngsbi55LGkueCxpLnksci54LHIueSkmJlc0dChyLnByZXYscixyLm5leHQpPj0wKXJldHVybiExO3I9ci5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIE80dCh0LGUsbixpKXtjb25zdCByPXQucHJldixvPXQsYT10Lm5leHQ7aWYoVzR0KHIsbyxhKT49MClyZXR1cm4hMTtjb25zdCBzPXIueD5vLng/ci54PmEueD9yLng6YS54Om8ueD5hLng/by54OmEueCxsPXIueT5vLnk/ci55PmEueT9yLnk6YS55Om8ueT5hLnk/by55OmEueSxjPVY0dChyLng8by54P3IueDxhLng/ci54OmEueDpvLng8YS54P28ueDphLngsci55PG8ueT9yLnk8YS55P3IueTphLnk6by55PGEueT9vLnk6YS55LGUsbixpKSx1PVY0dChzLGwsZSxuLGkpO2xldCBoPXQucHJldlosZD10Lm5leHRaO2Zvcig7aCYmaC56Pj1jJiZkJiZkLno8PXU7KXtpZihoIT09dC5wcmV2JiZoIT09dC5uZXh0JiZqNHQoci54LHIueSxvLngsby55LGEueCxhLnksaC54LGgueSkmJlc0dChoLnByZXYsaCxoLm5leHQpPj0wKXJldHVybiExO2lmKGg9aC5wcmV2WixkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZqNHQoci54LHIueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJlc0dChkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1mb3IoO2gmJmguej49Yzspe2lmKGghPT10LnByZXYmJmghPT10Lm5leHQmJmo0dChyLngsci55LG8ueCxvLnksYS54LGEueSxoLngsaC55KSYmVzR0KGgucHJldixoLGgubmV4dCk+PTApcmV0dXJuITE7aD1oLnByZXZafWZvcig7ZCYmZC56PD11Oyl7aWYoZCE9PXQucHJldiYmZCE9PXQubmV4dCYmajR0KHIueCxyLnksby54LG8ueSxhLngsYS55LGQueCxkLnkpJiZXNHQoZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQubmV4dFp9cmV0dXJuITB9ZnVuY3Rpb24gejR0KHQsZSxuKXtsZXQgaT10O2Rve2NvbnN0IHI9aS5wcmV2LG89aS5uZXh0Lm5leHQ7IXE0dChyLG8pJiZZNHQocixpLGkubmV4dCxvKSYmSzR0KHIsbykmJks0dChvLHIpJiYoZS5wdXNoKHIuaS9uKSxlLnB1c2goaS5pL24pLGUucHVzaChvLmkvbiksUTR0KGkpLFE0dChpLm5leHQpLGk9dD1vKSxpPWkubmV4dH13aGlsZShpIT09dCk7cmV0dXJuIE40dChpKX1mdW5jdGlvbiBENHQodCxlLG4saSxyLG8pe2xldCBhPXQ7ZG97bGV0IHQ9YS5uZXh0Lm5leHQ7Zm9yKDt0IT09YS5wcmV2Oyl7aWYoYS5pIT09dC5pJiZHNHQoYSx0KSl7bGV0IHM9WjR0KGEsdCk7cmV0dXJuIGE9TjR0KGEsYS5uZXh0KSxzPU40dChzLHMubmV4dCksSTR0KGEsZSxuLGkscixvKSx2b2lkIEk0dChzLGUsbixpLHIsbyl9dD10Lm5leHR9YT1hLm5leHR9d2hpbGUoYSE9PXQpfWZ1bmN0aW9uIEI0dCh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIEg0dCh0LGUpe2lmKGU9KGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1lO2NvbnN0IGk9dC54LHI9dC55O2xldCBvLGE9LTEvMDtkb3tpZihyPD1uLnkmJnI+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7Y29uc3QgdD1uLngrKHItbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZih0PD1pJiZ0PmEpe2lmKGE9dCx0PT09aSl7aWYocj09PW4ueSlyZXR1cm4gbjtpZihyPT09bi5uZXh0LnkpcmV0dXJuIG4ubmV4dH1vPW4ueDxuLm5leHQueD9uOm4ubmV4dH19bj1uLm5leHR9d2hpbGUobiE9PWUpO2lmKCFvKXJldHVybiBudWxsO2lmKGk9PT1hKXJldHVybiBvO2NvbnN0IHM9byxsPW8ueCxjPW8ueTtsZXQgdSxoPTEvMDtuPW87ZG97aT49bi54JiZuLng+PWwmJmkhPT1uLngmJmo0dChyPGM/aTphLHIsbCxjLHI8Yz9hOmkscixuLngsbi55KSYmKHU9TWF0aC5hYnMoci1uLnkpLyhpLW4ueCksSzR0KG4sdCkmJih1PGh8fHU9PT1oJiYobi54Pm8ueHx8bi54PT09by54JiZGNHQobyxuKSkpJiYobz1uLGg9dSkpLG49bi5uZXh0fXdoaWxlKG4hPT1zKTtyZXR1cm4gb30pKHQsZSkpe2NvbnN0IG49WjR0KGUsdCk7TjR0KGUsZS5uZXh0KSxONHQobixuLm5leHQpfX1mdW5jdGlvbiBGNHQodCxlKXtyZXR1cm4gVzR0KHQucHJldix0LGUucHJldik8MCYmVzR0KGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBWNHQodCxlLG4saSxyKXtyZXR1cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0NTEzNSYoKHQ9MTY3MTE5MzUmKCh0PTMyNzY3Kih0LW4pKnIpfHQ8PDgpKXx0PDw0KSl8dDw8MikpfHQ8PDEpKXwoZT0xNDMxNjU1NzY1JigoZT04NTg5OTM0NTkmKChlPTI1MjY0NTEzNSYoKGU9MTY3MTE5MzUmKChlPTMyNzY3KihlLWkpKnIpfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX1mdW5jdGlvbiBVNHQodCl7bGV0IGU9dCxuPXQ7ZG97KGUueDxuLnh8fGUueD09PW4ueCYmZS55PG4ueSkmJihuPWUpLGU9ZS5uZXh0fXdoaWxlKGUhPT10KTtyZXR1cm4gbn1mdW5jdGlvbiBqNHQodCxlLG4saSxyLG8sYSxzKXtyZXR1cm4oci1hKSooZS1zKS0odC1hKSooby1zKT49MCYmKHQtYSkqKGktcyktKG4tYSkqKGUtcyk+PTAmJihuLWEpKihvLXMpLShyLWEpKihpLXMpPj0wfWZ1bmN0aW9uIEc0dCh0LGUpe3JldHVybiB0Lm5leHQuaSE9PWUuaSYmdC5wcmV2LmkhPT1lLmkmJiEoZnVuY3Rpb24gbih0LGUpe2xldCBuPXQ7ZG97aWYobi5pIT09dC5pJiZuLm5leHQuaSE9PXQuaSYmbi5pIT09ZS5pJiZuLm5leHQuaSE9PWUuaSYmWTR0KG4sbi5uZXh0LHQsZSkpcmV0dXJuITA7bj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiExfSkodCxlKSYmKEs0dCh0LGUpJiZLNHQoZSx0KSYmKGZ1bmN0aW9uIGkodCxlKXtsZXQgbj10LGk9ITE7Y29uc3Qgcj0odC54K2UueCkvMixvPSh0LnkrZS55KS8yO2Rve24ueT5vIT1uLm5leHQueT5vJiZuLm5leHQueSE9PW4ueSYmcjwobi5uZXh0Lngtbi54KSooby1uLnkpLyhuLm5leHQueS1uLnkpK24ueCYmKGk9IWkpLG49bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4gaX0pKHQsZSkmJihXNHQodC5wcmV2LHQsZS5wcmV2KXx8VzR0KHQsZS5wcmV2LGUpKXx8cTR0KHQsZSkmJlc0dCh0LnByZXYsdCx0Lm5leHQpPjAmJlc0dChlLnByZXYsZSxlLm5leHQpPjApfWZ1bmN0aW9uIFc0dCh0LGUsbil7cmV0dXJuKGUueS10LnkpKihuLngtZS54KS0oZS54LXQueCkqKG4ueS1lLnkpfWZ1bmN0aW9uIHE0dCh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBZNHQodCxlLG4saSl7Y29uc3Qgcj0kNHQoVzR0KHQsZSxuKSksbz0kNHQoVzR0KHQsZSxpKSksYT0kNHQoVzR0KG4saSx0KSkscz0kNHQoVzR0KG4saSxlKSk7cmV0dXJuIHIhPT1vJiZhIT09c3x8ISgwIT09cnx8IVg0dCh0LG4sZSkpfHwhKDAhPT1vfHwhWDR0KHQsaSxlKSl8fCEoMCE9PWF8fCFYNHQobix0LGkpKXx8ISgwIT09c3x8IVg0dChuLGUsaSkpfWZ1bmN0aW9uIFg0dCh0LGUsbil7cmV0dXJuIGUueDw9TWF0aC5tYXgodC54LG4ueCkmJmUueD49TWF0aC5taW4odC54LG4ueCkmJmUueTw9TWF0aC5tYXgodC55LG4ueSkmJmUueT49TWF0aC5taW4odC55LG4ueSl9ZnVuY3Rpb24gJDR0KHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBLNHQodCxlKXtyZXR1cm4gVzR0KHQucHJldix0LHQubmV4dCk8MD9XNHQodCxlLHQubmV4dCk+PTAmJlc0dCh0LHQucHJldixlKT49MDpXNHQodCxlLHQucHJldik8MHx8VzR0KHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gWjR0KHQsZSl7Y29uc3Qgbj1uZXcgdDZ0KHQuaSx0LngsdC55KSxpPW5ldyB0NnQoZS5pLGUueCxlLnkpLHI9dC5uZXh0LG89ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxuLm5leHQ9cixyLnByZXY9bixpLm5leHQ9bixuLnByZXY9aSxvLm5leHQ9aSxpLnByZXY9byxpfWZ1bmN0aW9uIEo0dCh0LGUsbixpKXtjb25zdCByPW5ldyB0NnQodCxlLG4pO3JldHVybiBpPyhyLm5leHQ9aS5uZXh0LHIucHJldj1pLGkubmV4dC5wcmV2PXIsaS5uZXh0PXIpOihyLnByZXY9cixyLm5leHQ9cikscn1mdW5jdGlvbiBRNHQodCl7dC5uZXh0LnByZXY9dC5wcmV2LHQucHJldi5uZXh0PXQubmV4dCx0LnByZXZaJiYodC5wcmV2Wi5uZXh0Wj10Lm5leHRaKSx0Lm5leHRaJiYodC5uZXh0Wi5wcmV2Wj10LnByZXZaKX1mdW5jdGlvbiB0NnQodCxlLG4pe3RoaXMuaT10LHRoaXMueD1lLHRoaXMueT1uLHRoaXMucHJldj1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMuej1udWxsLHRoaXMucHJldlo9bnVsbCx0aGlzLm5leHRaPW51bGwsdGhpcy5zdGVpbmVyPSExfWNsYXNzIGU2dHtzdGF0aWMgYXJlYSh0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBuPTA7Zm9yKGxldCBpPWUtMSxyPTA7cjxlO2k9cisrKW4rPXRbaV0ueCp0W3JdLnktdFtyXS54KnRbaV0ueTtyZXR1cm4uNSpufXN0YXRpYyBpc0Nsb2NrV2lzZSh0KXtyZXR1cm4gZTZ0LmFyZWEodCk8MH1zdGF0aWMgdHJpYW5ndWxhdGVTaGFwZSh0LGUpe2NvbnN0IG49W10saT1bXSxyPVtdO242dCh0KSxpNnQobix0KTtsZXQgbz10Lmxlbmd0aDtlLmZvckVhY2gobjZ0KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpLnB1c2gobyksbys9ZVt0XS5sZW5ndGgsaTZ0KG4sZVt0XSk7Y29uc3QgYT0oZnVuY3Rpb24odCxlLG49Mil7Y29uc3QgaT1lJiZlLmxlbmd0aCxyPWk/ZVswXSpuOnQubGVuZ3RoO2xldCBvPVA0dCh0LDAscixuLCEwKTtjb25zdCBhPVtdO2lmKCFvfHxvLm5leHQ9PT1vLnByZXYpcmV0dXJuIGE7bGV0IHMsbCxjLHUsaCxkLHA7aWYoaSYmKG89KGZ1bmN0aW9uIGYodCxlLG4saSl7Y29uc3Qgcj1bXTtsZXQgbyxhLHMsbCxjO2ZvcihvPTAsYT1lLmxlbmd0aDtvPGE7bysrKXM9ZVtvXSppLGw9bzxhLTE/ZVtvKzFdKmk6dC5sZW5ndGgsYz1QNHQodCxzLGwsaSwhMSksYz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksci5wdXNoKFU0dChjKSk7Zm9yKHIuc29ydChCNHQpLG89MDtvPHIubGVuZ3RoO28rKylINHQocltvXSxuKSxuPU40dChuLG4ubmV4dCk7cmV0dXJuIG59KSh0LGUsbyxuKSksdC5sZW5ndGg+ODAqbil7cz1jPXRbMF0sbD11PXRbMV07Zm9yKGxldCBlPW47ZTxyO2UrPW4paD10W2VdLGQ9dFtlKzFdLGg8cyYmKHM9aCksZDxsJiYobD1kKSxoPmMmJihjPWgpLGQ+dSYmKHU9ZCk7cD1NYXRoLm1heChjLXMsdS1sKSxwPTAhPT1wPzEvcDowfXJldHVybiBJNHQobyxhLG4scyxsLHApLGF9KShuLGkpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCs9MylyLnB1c2goYS5zbGljZSh0LHQrMykpO3JldHVybiByfX1mdW5jdGlvbiBuNnQodCl7Y29uc3QgZT10Lmxlbmd0aDtlPjImJnRbZS0xXS5lcXVhbHModFswXSkmJnQucG9wKCl9ZnVuY3Rpb24gaTZ0KHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKGVbbl0ueCksdC5wdXNoKGVbbl0ueSl9Y2xhc3MgcjZ0IGV4dGVuZHMgYjF0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtjb25zdCBuPXRoaXMsaT1bXSxyPVtdO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylvKHRbZV0pO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbz1bXSxhPXZvaWQgMCE9PWUuY3VydmVTZWdtZW50cz9lLmN1cnZlU2VnbWVudHM6MTIscz12b2lkIDAhPT1lLnN0ZXBzP2Uuc3RlcHM6MTtsZXQgbD12b2lkIDAhPT1lLmRlcHRoP2UuZGVwdGg6MTAwLGM9dm9pZCAwPT09ZS5iZXZlbEVuYWJsZWR8fGUuYmV2ZWxFbmFibGVkLHU9dm9pZCAwIT09ZS5iZXZlbFRoaWNrbmVzcz9lLmJldmVsVGhpY2tuZXNzOjYsaD12b2lkIDAhPT1lLmJldmVsU2l6ZT9lLmJldmVsU2l6ZTp1LTIsZD12b2lkIDAhPT1lLmJldmVsT2Zmc2V0P2UuYmV2ZWxPZmZzZXQ6MCxwPXZvaWQgMCE9PWUuYmV2ZWxTZWdtZW50cz9lLmJldmVsU2VnbWVudHM6Mztjb25zdCBmPWUuZXh0cnVkZVBhdGgsbT12b2lkIDAhPT1lLlVWR2VuZXJhdG9yP2UuVVZHZW5lcmF0b3I6bzZ0O3ZvaWQgMCE9PWUuYW1vdW50JiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGw9ZS5hbW91bnQpO2xldCBnLF8seSx2LGIseD0hMTtmJiYoZz1mLmdldFNwYWNlZFBvaW50cyhzKSx4PSEwLGM9ITEsXz1mLmNvbXB1dGVGcmVuZXRGcmFtZXMocywhMSkseT1uZXcgQ0p0LHY9bmV3IENKdCxiPW5ldyBDSnQpLGN8fChwPTAsdT0wLGg9MCxkPTApO2NvbnN0IHc9dC5leHRyYWN0UG9pbnRzKGEpO2xldCBTPXcuc2hhcGU7Y29uc3QgTT13LmhvbGVzO2lmKCFlNnQuaXNDbG9ja1dpc2UoUykpe1M9Uy5yZXZlcnNlKCk7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07ZTZ0LmlzQ2xvY2tXaXNlKGUpJiYoTVt0XT1lLnJldmVyc2UoKSl9fWNvbnN0IEU9ZTZ0LnRyaWFuZ3VsYXRlU2hhcGUoUyxNKSxUPVM7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKVM9Uy5jb25jYXQoTVt0XSk7ZnVuY3Rpb24gQyh0LGUsbil7cmV0dXJuIGV8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogdmVjIGRvZXMgbm90IGV4aXN0IiksZS5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKG4pLmFkZCh0KX1jb25zdCBBPVMubGVuZ3RoLGs9RS5sZW5ndGg7ZnVuY3Rpb24gTCh0LGUsbil7bGV0IGkscixvO2NvbnN0IGE9dC54LWUueCxzPXQueS1lLnksbD1uLngtdC54LGM9bi55LXQueSx1PWEqYStzKnM7aWYoTWF0aC5hYnMoYSpjLXMqbCk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IGg9TWF0aC5zcXJ0KHUpLGQ9TWF0aC5zcXJ0KGwqbCtjKmMpLHA9ZS54LXMvaCxmPWUueSthL2gsbT0oKG4ueC1jL2QtcCkqYy0obi55K2wvZC1mKSpsKS8oYSpjLXMqbCk7aT1wK2EqbS10Lngscj1mK3MqbS10Lnk7Y29uc3QgZz1pKmkrcipyO2lmKGc8PTIpcmV0dXJuIG5ldyBtSnQoaSxyKTtvPU1hdGguc3FydChnLzIpfWVsc2V7bGV0IHQ9ITE7YT5OdW1iZXIuRVBTSUxPTj9sPk51bWJlci5FUFNJTE9OJiYodD0hMCk6YTwtTnVtYmVyLkVQU0lMT04/bDwtTnVtYmVyLkVQU0lMT04mJih0PSEwKTpNYXRoLnNpZ24ocyk9PT1NYXRoLnNpZ24oYykmJih0PSEwKSx0PyhpPS1zLHI9YSxvPU1hdGguc3FydCh1KSk6KGk9YSxyPXMsbz1NYXRoLnNxcnQodS8yKSl9cmV0dXJuIG5ldyBtSnQoaS9vLHIvbyl9Y29uc3QgUD1bXTtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoLG49ZS0xLGk9dCsxO3Q8ZTt0KyssbisrLGkrKyluPT09ZSYmKG49MCksaT09PWUmJihpPTApLFBbdF09TChUW3RdLFRbbl0sVFtpXSk7Y29uc3QgTj1bXTtsZXQgSSxSPVAuY29uY2F0KCk7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07ST1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoLGk9bi0xLHI9dCsxO3Q8bjt0KyssaSsrLHIrKylpPT09biYmKGk9MCkscj09PW4mJihyPTApLElbdF09TChlW3RdLGVbaV0sZVtyXSk7Ti5wdXNoKEkpLFI9Ui5jb25jYXQoSSl9Zm9yKGxldCB0PTA7dDxwO3QrKyl7Y29uc3QgZT10L3Asbj11Kk1hdGguY29zKGUqTWF0aC5QSS8yKSxpPWgqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK2Q7Zm9yKGxldCB0PTAsZT1ULmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPUMoVFt0XSxQW3RdLGkpO0QoZS54LGUueSwtbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07ST1OW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1DKGVbdF0sSVt0XSxpKTtEKHIueCxyLnksLW4pfX19Y29uc3QgTz1oK2Q7Zm9yKGxldCB0PTA7dDxBO3QrKyl7Y29uc3QgZT1jP0MoU1t0XSxSW3RdLE8pOlNbdF07eD8odi5jb3B5KF8ubm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS54KSx5LmNvcHkoXy5iaW5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueSksYi5jb3B5KGdbMF0pLmFkZCh2KS5hZGQoeSksRChiLngsYi55LGIueikpOkQoZS54LGUueSwwKX1mb3IobGV0IHQ9MTt0PD1zO3QrKylmb3IobGV0IGU9MDtlPEE7ZSsrKXtjb25zdCBuPWM/QyhTW2VdLFJbZV0sTyk6U1tlXTt4Pyh2LmNvcHkoXy5ub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLngpLHkuY29weShfLmJpbm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi55KSxiLmNvcHkoZ1t0XSkuYWRkKHYpLmFkZCh5KSxEKGIueCxiLnksYi56KSk6RChuLngsbi55LGwvcyp0KX1mb3IobGV0IHQ9cC0xO3Q+PTA7dC0tKXtjb25zdCBlPXQvcCxuPXUqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLGk9aCpNYXRoLnNpbihlKk1hdGguUEkvMikrZDtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9QyhUW3RdLFBbdF0saSk7RChlLngsZS55LGwrbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07ST1OW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1DKGVbdF0sSVt0XSxpKTt4P0Qoci54LHIueStnW3MtMV0ueSxnW3MtMV0ueCtuKTpEKHIueCxyLnksbCtuKX19fWZ1bmN0aW9uIHoodCxlKXtsZXQgbj10Lmxlbmd0aDtmb3IoOy0tbj49MDspe2NvbnN0IGk9bjtsZXQgcj1uLTE7cjwwJiYocj10Lmxlbmd0aC0xKTtmb3IobGV0IHQ9MCxuPXMrMipwO3Q8bjt0Kyspe2NvbnN0IG49QSp0LG89QSoodCsxKTtIKGUraStuLGUrcituLGUrcitvLGUraStvKX19fWZ1bmN0aW9uIEQodCxlLG4pe28ucHVzaCh0KSxvLnB1c2goZSksby5wdXNoKG4pfWZ1bmN0aW9uIEIodCxlLHIpe0YodCksRihlKSxGKHIpO2NvbnN0IG89aS5sZW5ndGgvMyxhPW0uZ2VuZXJhdGVUb3BVVihuLGksby0zLG8tMixvLTEpO1YoYVswXSksVihhWzFdKSxWKGFbMl0pfWZ1bmN0aW9uIEgodCxlLHIsbyl7Rih0KSxGKGUpLEYobyksRihlKSxGKHIpLEYobyk7Y29uc3QgYT1pLmxlbmd0aC8zLHM9bS5nZW5lcmF0ZVNpZGVXYWxsVVYobixpLGEtNixhLTMsYS0yLGEtMSk7VihzWzBdKSxWKHNbMV0pLFYoc1szXSksVihzWzFdKSxWKHNbMl0pLFYoc1szXSl9ZnVuY3Rpb24gRih0KXtpLnB1c2gob1szKnQrMF0pLGkucHVzaChvWzMqdCsxXSksaS5wdXNoKG9bMyp0KzJdKX1mdW5jdGlvbiBWKHQpe3IucHVzaCh0LngpLHIucHVzaCh0LnkpfSEoZnVuY3Rpb24gVSgpe2NvbnN0IHQ9aS5sZW5ndGgvMztpZihjKXtsZXQgdD0wLGU9QSp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMl0rZSxuWzFdK2UsblswXStlKX10PXMrMipwLGU9QSp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMF0rZSxuWzFdK2UsblsyXStlKX19ZWxzZXtmb3IobGV0IHQ9MDt0PGs7dCsrKXtjb25zdCBlPUVbdF07QihlWzJdLGVbMV0sZVswXSl9Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgZT1FW3RdO0IoZVswXStBKnMsZVsxXStBKnMsZVsyXStBKnMpfX1uLmFkZEdyb3VwKHQsaS5sZW5ndGgvMy10LDApfSkoKSwoZnVuY3Rpb24gaigpe2NvbnN0IHQ9aS5sZW5ndGgvMztsZXQgZT0wO3ooVCxlKSxlKz1ULmxlbmd0aDtmb3IobGV0IHQ9MCxuPU0ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49TVt0XTt6KG4sZSksZSs9bi5sZW5ndGh9bi5hZGRHcm91cCh0LGkubGVuZ3RoLzMtdCwxKX0pKCl9dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGwxdChyLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4saSl7aWYoaS5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaS5zaGFwZXMucHVzaCh0W2VdLnV1aWQpO2Vsc2UgaS5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiB2b2lkIDAhPT1uLmV4dHJ1ZGVQYXRoJiYoaS5vcHRpb25zLmV4dHJ1ZGVQYXRoPW4uZXh0cnVkZVBhdGgudG9KU09OKCkpLGl9KSh0aGlzLnBhcmFtZXRlcnMuc2hhcGVzLHRoaXMucGFyYW1ldGVycy5vcHRpb25zLHQpfXN0YXRpYyBmcm9tSlNPTih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBpPTAscj10LnNoYXBlcy5sZW5ndGg7aTxyO2krKyluLnB1c2goZVt0LnNoYXBlc1tpXV0pO2NvbnN0IGk9dC5vcHRpb25zLmV4dHJ1ZGVQYXRoO3JldHVybiB2b2lkIDAhPT1pJiYodC5vcHRpb25zLmV4dHJ1ZGVQYXRoPShuZXcgTDR0W2kudHlwZV0pLmZyb21KU09OKGkpKSxuZXcgcjZ0KG4sdC5vcHRpb25zKX19Y29uc3QgbzZ0PXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKHQsZSxuLGkscil7Y29uc3Qgbz1lWzMqaV0sYT1lWzMqaSsxXSxzPWVbMypyXSxsPWVbMypyKzFdO3JldHVybltuZXcgbUp0KGVbMypuXSxlWzMqbisxXSksbmV3IG1KdChvLGEpLG5ldyBtSnQocyxsKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbih0LGUsbixpLHIsbyl7Y29uc3QgYT1lWzMqbl0scz1lWzMqbisxXSxsPWVbMypuKzJdLGM9ZVszKmldLHU9ZVszKmkrMV0saD1lWzMqaSsyXSxkPWVbMypyXSxwPWVbMypyKzFdLGY9ZVszKnIrMl0sbT1lWzMqb10sZz1lWzMqbysxXSxfPWVbMypvKzJdO3JldHVybiBNYXRoLmFicyhzLXUpPE1hdGguYWJzKGEtYyk/W25ldyBtSnQoYSwxLWwpLG5ldyBtSnQoYywxLWgpLG5ldyBtSnQoZCwxLWYpLG5ldyBtSnQobSwxLV8pXTpbbmV3IG1KdChzLDEtbCksbmV3IG1KdCh1LDEtaCksbmV3IG1KdChwLDEtZiksbmV3IG1KdChnLDEtXyldfX07Y2xhc3MgYTZ0IGV4dGVuZHMgcjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTApe2NvbnN0IG49KDErTWF0aC5zcXJ0KDUpKS8yO3N1cGVyKFstMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLDAsMCwtMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLG4sMCwtMSxuLDAsMSwtbiwwLC0xLC1uLDAsMV0sWzAsMTEsNSwwLDUsMSwwLDEsNywwLDcsMTAsMCwxMCwxMSwxLDUsOSw1LDExLDQsMTEsMTAsMiwxMCw3LDYsNywxLDgsMyw5LDQsMyw0LDIsMywyLDYsMyw2LDgsMyw4LDksNCw5LDUsMiw0LDExLDYsMiwxMCw4LDYsNyw5LDgsMV0sdCxlKSx0aGlzLnR5cGU9Ikljb3NhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGE2dCh0LnJhZGl1cyx0LmRldGFpbCl9fWNsYXNzIHM2dCBleHRlbmRzIGIxdHtjb25zdHJ1Y3Rvcih0LGU9MTIsbj0wLGk9MipNYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iTGF0aGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtwb2ludHM6dCxzZWdtZW50czplLHBoaVN0YXJ0Om4scGhpTGVuZ3RoOml9LGU9TWF0aC5mbG9vcihlKSxpPSRadChpLDAsMipNYXRoLlBJKTtjb25zdCByPVtdLG89W10sYT1bXSxzPTEvZSxsPW5ldyBDSnQsYz1uZXcgbUp0O2ZvcihsZXQgcj0wO3I8PWU7cisrKXtjb25zdCB1PW4rcipzKmksaD1NYXRoLnNpbih1KSxkPU1hdGguY29zKHUpO2ZvcihsZXQgbj0wO248PXQubGVuZ3RoLTE7bisrKWwueD10W25dLngqaCxsLnk9dFtuXS55LGwuej10W25dLngqZCxvLnB1c2gobC54LGwueSxsLnopLGMueD1yL2UsYy55PW4vKHQubGVuZ3RoLTEpLGEucHVzaChjLngsYy55KX1mb3IobGV0IG49MDtuPGU7bisrKWZvcihsZXQgZT0wO2U8dC5sZW5ndGgtMTtlKyspe2NvbnN0IGk9ZStuKnQubGVuZ3RoLG89aSt0Lmxlbmd0aCxhPWkrdC5sZW5ndGgrMSxzPWkrMTtyLnB1c2goaSxvLHMpLHIucHVzaChvLGEscyl9aWYodGhpcy5zZXRJbmRleChyKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgbDF0KGEsMikpLHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKSxpPT09MipNYXRoLlBJKXtjb25zdCBuPXRoaXMuYXR0cmlidXRlcy5ub3JtYWwuYXJyYXksaT1uZXcgQ0p0LHI9bmV3IENKdCxvPW5ldyBDSnQsYT1lKnQubGVuZ3RoKjM7Zm9yKGxldCBlPTAscz0wO2U8dC5sZW5ndGg7ZSsrLHMrPTMpaS54PW5bcyswXSxpLnk9bltzKzFdLGkuej1uW3MrMl0sci54PW5bYStzKzBdLHIueT1uW2ErcysxXSxyLno9blthK3MrMl0sby5hZGRWZWN0b3JzKGkscikubm9ybWFsaXplKCksbltzKzBdPW5bYStzKzBdPW8ueCxuW3MrMV09blthK3MrMV09by55LG5bcysyXT1uW2ErcysyXT1vLnp9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IHM2dCh0LnBvaW50cyx0LnNlZ21lbnRzLHQucGhpU3RhcnQsdC5waGlMZW5ndGgpfX1jbGFzcyBsNnQgZXh0ZW5kcyByNHR7Y29uc3RydWN0b3IodD0xLGU9MCl7c3VwZXIoWzEsMCwwLC0xLDAsMCwwLDEsMCwwLC0xLDAsMCwwLDEsMCwwLC0xXSxbMCwyLDQsMCw0LDMsMCwzLDUsMCw1LDIsMSwyLDUsMSw1LDMsMSwzLDQsMSw0LDJdLHQsZSksdGhpcy50eXBlPSJPY3RhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGw2dCh0LnJhZGl1cyx0LmRldGFpbCl9fWNsYXNzIGM2dCBleHRlbmRzIGIxdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLnR5cGU9IlBhcmFtZXRyaWNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtmdW5jOnQsc2xpY2VzOmUsc3RhY2tzOm59O2NvbnN0IGk9W10scj1bXSxvPVtdLGE9W10scz0xZS01LGw9bmV3IENKdCxjPW5ldyBDSnQsdT1uZXcgQ0p0LGg9bmV3IENKdCxkPW5ldyBDSnQ7dC5sZW5ndGg8MyYmY29uc29sZS5lcnJvcigiVEhSRUUuUGFyYW1ldHJpY0dlb21ldHJ5OiBGdW5jdGlvbiBtdXN0IG5vdyBtb2RpZnkgYSBWZWN0b3IzIGFzIHRoaXJkIHBhcmFtZXRlci4iKTtjb25zdCBwPWUrMTtmb3IobGV0IGk9MDtpPD1uO2krKyl7Y29uc3QgcD1pL247Zm9yKGxldCBuPTA7bjw9ZTtuKyspe2NvbnN0IGk9bi9lO3QoaSxwLGMpLHIucHVzaChjLngsYy55LGMueiksaS1zPj0wPyh0KGktcyxwLHUpLGguc3ViVmVjdG9ycyhjLHUpKToodChpK3MscCx1KSxoLnN1YlZlY3RvcnModSxjKSkscC1zPj0wPyh0KGkscC1zLHUpLGQuc3ViVmVjdG9ycyhjLHUpKToodChpLHArcyx1KSxkLnN1YlZlY3RvcnModSxjKSksbC5jcm9zc1ZlY3RvcnMoaCxkKS5ub3JtYWxpemUoKSxvLnB1c2gobC54LGwueSxsLnopLGEucHVzaChpLHApfX1mb3IobGV0IHQ9MDt0PG47dCsrKWZvcihsZXQgbj0wO248ZTtuKyspe2NvbnN0IGU9dCpwK24rMSxyPSh0KzEpKnArbisxLG89KHQrMSkqcCtuO2kucHVzaCh0KnArbixlLG8pLGkucHVzaChlLHIsbyl9dGhpcy5zZXRJbmRleChpKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGwxdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBsMXQoYSwyKSl9fWNsYXNzIHU2dCBleHRlbmRzIGIxdHtjb25zdHJ1Y3Rvcih0PS41LGU9MSxuPTgsaT0xLHI9MCxvPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IlJpbmdHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtpbm5lclJhZGl1czp0LG91dGVyUmFkaXVzOmUsdGhldGFTZWdtZW50czpuLHBoaVNlZ21lbnRzOmksdGhldGFTdGFydDpyLHRoZXRhTGVuZ3RoOm99LG49TWF0aC5tYXgoMyxuKTtjb25zdCBhPVtdLHM9W10sbD1bXSxjPVtdO2xldCB1PXQ7Y29uc3QgaD0oZS10KS8oaT1NYXRoLm1heCgxLGkpKSxkPW5ldyBDSnQscD1uZXcgbUp0O2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtmb3IobGV0IHQ9MDt0PD1uO3QrKyl7Y29uc3QgaT1yK3QvbipvO2QueD11Kk1hdGguY29zKGkpLGQueT11Kk1hdGguc2luKGkpLHMucHVzaChkLngsZC55LGQueiksbC5wdXNoKDAsMCwxKSxwLng9KGQueC9lKzEpLzIscC55PShkLnkvZSsxKS8yLGMucHVzaChwLngscC55KX11Kz1ofWZvcihsZXQgdD0wO3Q8aTt0Kyspe2NvbnN0IGU9dCoobisxKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCBpPXQrZSxyPWkrbisxLG89aStuKzIscz1pKzE7YS5wdXNoKGkscixzKSxhLnB1c2gocixvLHMpfX10aGlzLnNldEluZGV4KGEpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgbDF0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGwxdChjLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB1NnQodC5pbm5lclJhZGl1cyx0Lm91dGVyUmFkaXVzLHQudGhldGFTZWdtZW50cyx0LnBoaVNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgaDZ0IGV4dGVuZHMgYjF0e2NvbnN0cnVjdG9yKHQsZT0xMil7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsY3VydmVTZWdtZW50czplfTtjb25zdCBuPVtdLGk9W10scj1bXSxvPVtdO2xldCBhPTAscz0wO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlsKHQpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbCh0W2VdKSx0aGlzLmFkZEdyb3VwKGEscyxlKSxhKz1zLHM9MDtmdW5jdGlvbiBsKHQpe2NvbnN0IGE9aS5sZW5ndGgvMyxsPXQuZXh0cmFjdFBvaW50cyhlKTtsZXQgYz1sLnNoYXBlO2NvbnN0IHU9bC5ob2xlczshMT09PWU2dC5pc0Nsb2NrV2lzZShjKSYmKGM9Yy5yZXZlcnNlKCkpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT11W3RdOyEwPT09ZTZ0LmlzQ2xvY2tXaXNlKGUpJiYodVt0XT1lLnJldmVyc2UoKSl9Y29uc3QgaD1lNnQudHJpYW5ndWxhdGVTaGFwZShjLHUpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyljPWMuY29uY2F0KHVbdF0pO2ZvcihsZXQgdD0wLGU9Yy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1jW3RdO2kucHVzaChlLngsZS55LDApLHIucHVzaCgwLDAsMSksby5wdXNoKGUueCxlLnkpfWZvcihsZXQgdD0wLGU9aC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1oW3RdO24ucHVzaChlWzBdK2EsZVsxXSthLGVbMl0rYSkscys9M319dGhpcy5zZXRJbmRleChuKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGwxdChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBsMXQobywyKSl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4pe2lmKG4uc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKW4uc2hhcGVzLnB1c2godFtlXS51dWlkKTtlbHNlIG4uc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gbn0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IGk9MCxyPXQuc2hhcGVzLmxlbmd0aDtpPHI7aSsrKW4ucHVzaChlW3Quc2hhcGVzW2ldXSk7cmV0dXJuIG5ldyBoNnQobix0LmN1cnZlU2VnbWVudHMpfX1jbGFzcyBkNnQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodD0xLGU9MzIsbj0xNixpPTAscj0yKk1hdGguUEksbz0wLGE9TWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwaGVyZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHdpZHRoU2VnbWVudHM6ZSxoZWlnaHRTZWdtZW50czpuLHBoaVN0YXJ0OmkscGhpTGVuZ3RoOnIsdGhldGFTdGFydDpvLHRoZXRhTGVuZ3RoOmF9LGU9TWF0aC5tYXgoMyxNYXRoLmZsb29yKGUpKSxuPU1hdGgubWF4KDIsTWF0aC5mbG9vcihuKSk7Y29uc3Qgcz1NYXRoLm1pbihvK2EsTWF0aC5QSSk7bGV0IGw9MDtjb25zdCBjPVtdLHU9bmV3IENKdCxoPW5ldyBDSnQsZD1bXSxwPVtdLGY9W10sbT1bXTtmb3IobGV0IGQ9MDtkPD1uO2QrKyl7Y29uc3QgZz1bXSxfPWQvbjtsZXQgeT0wOzA9PWQmJjA9PW8/eT0uNS9lOmQ9PW4mJnM9PU1hdGguUEkmJih5PS0uNS9lKTtmb3IobGV0IG49MDtuPD1lO24rKyl7Y29uc3Qgcz1uL2U7dS54PS10Kk1hdGguY29zKGkrcypyKSpNYXRoLnNpbihvK18qYSksdS55PXQqTWF0aC5jb3MobytfKmEpLHUuej10Kk1hdGguc2luKGkrcypyKSpNYXRoLnNpbihvK18qYSkscC5wdXNoKHUueCx1LnksdS56KSxoLmNvcHkodSkubm9ybWFsaXplKCksZi5wdXNoKGgueCxoLnksaC56KSxtLnB1c2gocyt5LDEtXyksZy5wdXNoKGwrKyl9Yy5wdXNoKGcpfWZvcihsZXQgdD0wO3Q8bjt0KyspZm9yKGxldCBpPTA7aTxlO2krKyl7Y29uc3QgZT1jW3RdW2krMV0scj1jW3RdW2ldLGE9Y1t0KzFdW2ldLGw9Y1t0KzFdW2krMV07KDAhPT10fHxvPjApJiZkLnB1c2goZSxyLGwpLCh0IT09bi0xfHxzPE1hdGguUEkpJiZkLnB1c2gocixhLGwpfXRoaXMuc2V0SW5kZXgoZCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KHAsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBsMXQoZiwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgbDF0KG0sMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGQ2dCh0LnJhZGl1cyx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0LnBoaVN0YXJ0LHQucGhpTGVuZ3RoLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19Y2xhc3MgcDZ0IGV4dGVuZHMgcjR0e2NvbnN0cnVjdG9yKHQ9MSxlPTApe3N1cGVyKFsxLDEsMSwtMSwtMSwxLC0xLDEsLTEsMSwtMSwtMV0sWzIsMSwwLDAsMywyLDEsMywwLDIsMywxXSx0LGUpLHRoaXMudHlwZT0iVGV0cmFoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgcDZ0KHQucmFkaXVzLHQuZGV0YWlsKX19Y2xhc3MgZjZ0IGV4dGVuZHMgcjZ0e2NvbnN0cnVjdG9yKHQsZT17fSl7Y29uc3Qgbj1lLmZvbnQ7aWYoIW58fCFuLmlzRm9udClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuVGV4dEdlb21ldHJ5OiBmb250IHBhcmFtZXRlciBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuRm9udC4iKSxuZXcgYjF0O2NvbnN0IGk9bi5nZW5lcmF0ZVNoYXBlcyh0LGUuc2l6ZSk7ZS5kZXB0aD12b2lkIDAhPT1lLmhlaWdodD9lLmhlaWdodDo1MCx2b2lkIDA9PT1lLmJldmVsVGhpY2tuZXNzJiYoZS5iZXZlbFRoaWNrbmVzcz0xMCksdm9pZCAwPT09ZS5iZXZlbFNpemUmJihlLmJldmVsU2l6ZT04KSx2b2lkIDA9PT1lLmJldmVsRW5hYmxlZCYmKGUuYmV2ZWxFbmFibGVkPSExKSxzdXBlcihpLGUpLHRoaXMudHlwZT0iVGV4dEdlb21ldHJ5In19Y2xhc3MgbTZ0IGV4dGVuZHMgYjF0e2NvbnN0cnVjdG9yKHQ9MSxlPS40LG49OCxpPTYscj0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJUb3J1c0dlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6ZSxyYWRpYWxTZWdtZW50czpuLHR1YnVsYXJTZWdtZW50czppLGFyYzpyfSxuPU1hdGguZmxvb3IobiksaT1NYXRoLmZsb29yKGkpO2NvbnN0IG89W10sYT1bXSxzPVtdLGw9W10sYz1uZXcgQ0p0LHU9bmV3IENKdCxoPW5ldyBDSnQ7Zm9yKGxldCBvPTA7bzw9bjtvKyspZm9yKGxldCBkPTA7ZDw9aTtkKyspe2NvbnN0IHA9ZC9pKnIsZj1vL24qTWF0aC5QSSoyO3UueD0odCtlKk1hdGguY29zKGYpKSpNYXRoLmNvcyhwKSx1Lnk9KHQrZSpNYXRoLmNvcyhmKSkqTWF0aC5zaW4ocCksdS56PWUqTWF0aC5zaW4oZiksYS5wdXNoKHUueCx1LnksdS56KSxjLng9dCpNYXRoLmNvcyhwKSxjLnk9dCpNYXRoLnNpbihwKSxoLnN1YlZlY3RvcnModSxjKS5ub3JtYWxpemUoKSxzLnB1c2goaC54LGgueSxoLnopLGwucHVzaChkL2kpLGwucHVzaChvL24pfWZvcihsZXQgdD0xO3Q8PW47dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKih0LTEpK2UtMSxyPShpKzEpKih0LTEpK2UsYT0oaSsxKSp0K2U7by5wdXNoKChpKzEpKnQrZS0xLG4sYSksby5wdXNoKG4scixhKX10aGlzLnNldEluZGV4KG8pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdChhLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgbDF0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGwxdChsLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBtNnQodC5yYWRpdXMsdC50dWJlLHQucmFkaWFsU2VnbWVudHMsdC50dWJ1bGFyU2VnbWVudHMsdC5hcmMpfX1jbGFzcyBnNnQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodD0xLGU9LjQsbj02NCxpPTgscj0yLG89Myl7c3VwZXIoKSx0aGlzLnR5cGU9IlRvcnVzS25vdEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6ZSx0dWJ1bGFyU2VnbWVudHM6bixyYWRpYWxTZWdtZW50czppLHA6cixxOm99LG49TWF0aC5mbG9vcihuKSxpPU1hdGguZmxvb3IoaSk7Y29uc3QgYT1bXSxzPVtdLGw9W10sYz1bXSx1PW5ldyBDSnQsaD1uZXcgQ0p0LGQ9bmV3IENKdCxwPW5ldyBDSnQsZj1uZXcgQ0p0LG09bmV3IENKdCxnPW5ldyBDSnQ7Zm9yKGxldCBhPTA7YTw9bjsrK2Epe2NvbnN0IHk9YS9uKnIqTWF0aC5QSSoyO18oeSxyLG8sdCxkKSxfKHkrLjAxLHIsbyx0LHApLG0uc3ViVmVjdG9ycyhwLGQpLGcuYWRkVmVjdG9ycyhwLGQpLGYuY3Jvc3NWZWN0b3JzKG0sZyksZy5jcm9zc1ZlY3RvcnMoZixtKSxmLm5vcm1hbGl6ZSgpLGcubm9ybWFsaXplKCk7Zm9yKGxldCB0PTA7dDw9aTsrK3Qpe2NvbnN0IHI9dC9pKk1hdGguUEkqMixvPS1lKk1hdGguY29zKHIpLHA9ZSpNYXRoLnNpbihyKTt1Lng9ZC54KyhvKmcueCtwKmYueCksdS55PWQueSsobypnLnkrcCpmLnkpLHUuej1kLnorKG8qZy56K3AqZi56KSxzLnB1c2godS54LHUueSx1LnopLGguc3ViVmVjdG9ycyh1LGQpLm5vcm1hbGl6ZSgpLGwucHVzaChoLngsaC55LGgueiksYy5wdXNoKGEvbiksYy5wdXNoKHQvaSl9fWZvcihsZXQgdD0xO3Q8PW47dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKnQrKGUtMSkscj0oaSsxKSp0K2Usbz0oaSsxKSoodC0xKStlO2EucHVzaCgoaSsxKSoodC0xKSsoZS0xKSxuLG8pLGEucHVzaChuLHIsbyl9ZnVuY3Rpb24gXyh0LGUsbixpLHIpe2NvbnN0IG89TWF0aC5jb3ModCksYT1NYXRoLnNpbih0KSxzPW4vZSp0LGw9TWF0aC5jb3Mocyk7ci54PWkqKDIrbCkqLjUqbyxyLnk9aSooMitsKSphKi41LHIuej1pKk1hdGguc2luKHMpKi41fXRoaXMuc2V0SW5kZXgoYSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBsMXQobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgbDF0KGMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGc2dCh0LnJhZGl1cyx0LnR1YmUsdC50dWJ1bGFyU2VnbWVudHMsdC5yYWRpYWxTZWdtZW50cyx0LnAsdC5xKX19Y2xhc3MgXzZ0IGV4dGVuZHMgYjF0e2NvbnN0cnVjdG9yKHQsZT02NCxuPTEsaT04LHI9ITEpe3N1cGVyKCksdGhpcy50eXBlPSJUdWJlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cGF0aDp0LHR1YnVsYXJTZWdtZW50czplLHJhZGl1czpuLHJhZGlhbFNlZ21lbnRzOmksY2xvc2VkOnJ9O2NvbnN0IG89dC5jb21wdXRlRnJlbmV0RnJhbWVzKGUscik7dGhpcy50YW5nZW50cz1vLnRhbmdlbnRzLHRoaXMubm9ybWFscz1vLm5vcm1hbHMsdGhpcy5iaW5vcm1hbHM9by5iaW5vcm1hbHM7Y29uc3QgYT1uZXcgQ0p0LHM9bmV3IENKdCxsPW5ldyBtSnQ7bGV0IGM9bmV3IENKdDtjb25zdCB1PVtdLGg9W10sZD1bXSxwPVtdO2Z1bmN0aW9uIGYocil7Yz10LmdldFBvaW50QXQoci9lLGMpO2NvbnN0IGw9by5ub3JtYWxzW3JdLGQ9by5iaW5vcm1hbHNbcl07Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pKk1hdGguUEkqMixyPU1hdGguc2luKGUpLG89LU1hdGguY29zKGUpO3MueD1vKmwueCtyKmQueCxzLnk9bypsLnkrcipkLnkscy56PW8qbC56K3IqZC56LHMubm9ybWFsaXplKCksaC5wdXNoKHMueCxzLnkscy56KSxhLng9Yy54K24qcy54LGEueT1jLnkrbipzLnksYS56PWMueituKnMueix1LnB1c2goYS54LGEueSxhLnopfX0hKGZ1bmN0aW9uIG0oKXtmb3IobGV0IHQ9MDt0PGU7dCsrKWYodCk7ZighMT09PXI/ZTowKSwoZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8PWU7dCsrKWZvcihsZXQgbj0wO248PWk7bisrKWwueD10L2UsbC55PW4vaSxkLnB1c2gobC54LGwueSl9KSgpLChmdW5jdGlvbiBuKCl7Zm9yKGxldCB0PTE7dDw9ZTt0KyspZm9yKGxldCBlPTE7ZTw9aTtlKyspe2NvbnN0IG49KGkrMSkqdCsoZS0xKSxyPShpKzEpKnQrZSxvPShpKzEpKih0LTEpK2U7cC5wdXNoKChpKzEpKih0LTEpKyhlLTEpLG4sbykscC5wdXNoKG4scixvKX19KSgpfSkoKSx0aGlzLnNldEluZGV4KHApLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgbDF0KGgsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGwxdChkLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnBhdGg9dGhpcy5wYXJhbWV0ZXJzLnBhdGgudG9KU09OKCksdH1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBfNnQoKG5ldyBMNHRbdC5wYXRoLnR5cGVdKS5mcm9tSlNPTih0LnBhdGgpLHQudHVidWxhclNlZ21lbnRzLHQucmFkaXVzLHQucmFkaWFsU2VnbWVudHMsdC5jbG9zZWQpfX1jbGFzcyB5NnQgZXh0ZW5kcyBiMXR7Y29uc3RydWN0b3IodCl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IldpcmVmcmFtZUdlb21ldHJ5IiwhMD09PXQuaXNHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XaXJlZnJhbWVHZW9tZXRyeSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO2NvbnN0IGU9W10sbj1uZXcgU2V0LGk9bmV3IENKdCxyPW5ldyBDSnQ7aWYobnVsbCE9PXQuaW5kZXgpe2NvbnN0IG89dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLGE9dC5pbmRleDtsZXQgcz10Lmdyb3VwczswPT09cy5sZW5ndGgmJihzPVt7c3RhcnQ6MCxjb3VudDphLmNvdW50LG1hdGVyaWFsSW5kZXg6MH1dKTtmb3IobGV0IHQ9MCxsPXMubGVuZ3RoO3Q8bDsrK3Qpe2NvbnN0IGw9c1t0XSxjPWwuc3RhcnQ7Zm9yKGxldCB0PWMscz1jK2wuY291bnQ7dDxzO3QrPTMpZm9yKGxldCBzPTA7czwzO3MrKyl7Y29uc3QgbD1hLmdldFgodCtzKSxjPWEuZ2V0WCh0KyhzKzEpJTMpO2kuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGwpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGMpLCEwPT09djZ0KGkscixuKSYmKGUucHVzaChpLngsaS55LGkueiksZS5wdXNoKHIueCxyLnksci56KSl9fX1lbHNle2NvbnN0IG89dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgdD0wLGE9by5jb3VudC8zO3Q8YTt0KyspZm9yKGxldCBhPTA7YTwzO2ErKyl7Y29uc3Qgcz0zKnQrKGErMSklMztpLmZyb21CdWZmZXJBdHRyaWJ1dGUobywzKnQrYSksci5mcm9tQnVmZmVyQXR0cmlidXRlKG8scyksITA9PT12NnQoaSxyLG4pJiYoZS5wdXNoKGkueCxpLnksaS56KSxlLnB1c2goci54LHIueSxyLnopKX19dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KGUsMykpfX1mdW5jdGlvbiB2NnQodCxlLG4pe2NvbnN0IGk9YCR7dC54fSwke3QueX0sJHt0Lnp9LSR7ZS54fSwke2UueX0sJHtlLnp9YCxyPWAke2UueH0sJHtlLnl9LCR7ZS56fS0ke3QueH0sJHt0Lnl9LCR7dC56fWA7cmV0dXJuITAhPT1uLmhhcyhpKSYmITAhPT1uLmhhcyhyKSYmKG4uYWRkKGksciksITApfXZhciBiNnQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQm94R2VvbWV0cnk6RjF0LEJveEJ1ZmZlckdlb21ldHJ5OkYxdCxDaXJjbGVHZW9tZXRyeTplNHQsQ2lyY2xlQnVmZmVyR2VvbWV0cnk6ZTR0LENvbmVHZW9tZXRyeTppNHQsQ29uZUJ1ZmZlckdlb21ldHJ5Omk0dCxDeWxpbmRlckdlb21ldHJ5Om40dCxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5Om40dCxEb2RlY2FoZWRyb25HZW9tZXRyeTpvNHQsRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6bzR0LEVkZ2VzR2VvbWV0cnk6dTR0LEV4dHJ1ZGVHZW9tZXRyeTpyNnQsRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OnI2dCxJY29zYWhlZHJvbkdlb21ldHJ5OmE2dCxJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmE2dCxMYXRoZUdlb21ldHJ5OnM2dCxMYXRoZUJ1ZmZlckdlb21ldHJ5OnM2dCxPY3RhaGVkcm9uR2VvbWV0cnk6bDZ0LE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTpsNnQsUGFyYW1ldHJpY0dlb21ldHJ5OmM2dCxQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnk6YzZ0LFBsYW5lR2VvbWV0cnk6YTB0LFBsYW5lQnVmZmVyR2VvbWV0cnk6YTB0LFBvbHloZWRyb25HZW9tZXRyeTpyNHQsUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnI0dCxSaW5nR2VvbWV0cnk6dTZ0LFJpbmdCdWZmZXJHZW9tZXRyeTp1NnQsU2hhcGVHZW9tZXRyeTpoNnQsU2hhcGVCdWZmZXJHZW9tZXRyeTpoNnQsU3BoZXJlR2VvbWV0cnk6ZDZ0LFNwaGVyZUJ1ZmZlckdlb21ldHJ5OmQ2dCxUZXRyYWhlZHJvbkdlb21ldHJ5OnA2dCxUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnA2dCxUZXh0R2VvbWV0cnk6ZjZ0LFRleHRCdWZmZXJHZW9tZXRyeTpmNnQsVG9ydXNHZW9tZXRyeTptNnQsVG9ydXNCdWZmZXJHZW9tZXRyeTptNnQsVG9ydXNLbm90R2VvbWV0cnk6ZzZ0LFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Omc2dCxUdWJlR2VvbWV0cnk6XzZ0LFR1YmVCdWZmZXJHZW9tZXRyeTpfNnQsV2lyZWZyYW1lR2VvbWV0cnk6eTZ0fSk7Y2xhc3MgeDZ0IGV4dGVuZHMgVVF0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFkb3dNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJFF0KDApLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpc319eDZ0LnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO2NsYXNzIHc2dCBleHRlbmRzIFVRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMudHlwZT0iTWVzaFN0YW5kYXJkTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3ICRRdCgxNjc3NzIxNSksdGhpcy5yb3VnaG5lc3M9MSx0aGlzLm1ldGFsbmVzcz0wLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3ICRRdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBtSnQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnJvdWdobmVzc01hcD1udWxsLHRoaXMubWV0YWxuZXNzTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5lbnZNYXBJbnRlbnNpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fXc2dC5wcm90b3R5cGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD0hMDtjbGFzcyBTNnQgZXh0ZW5kcyB3NnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLnR5cGU9Ik1lc2hQaHlzaWNhbE1hdGVyaWFsIix0aGlzLmNsZWFyY29hdD0wLHRoaXMuY2xlYXJjb2F0TWFwPW51bGwsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9MCx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD1udWxsLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IG1KdCgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5yZWZsZWN0aXZpdHk9LjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlvciIse2dldDpmdW5jdGlvbigpe3JldHVybigxKy40KnRoaXMucmVmbGVjdGl2aXR5KS8oMS0uNCp0aGlzLnJlZmxlY3Rpdml0eSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlZmxlY3Rpdml0eT0kWnQoMi41Kih0LTEpLyh0KzEpLDAsMSl9fSksdGhpcy5zaGVlbj1udWxsLHRoaXMudHJhbnNtaXNzaW9uPTAsdGhpcy50cmFuc21pc3Npb25NYXA9bnVsbCx0aGlzLnRoaWNrbmVzcz0uMDEsdGhpcy50aGlja25lc3NNYXA9bnVsbCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9MCx0aGlzLmF0dGVudWF0aW9uVGludD1uZXcgJFF0KDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJUaW50PW5ldyAkUXQoMSwxLDEpLHRoaXMuc3BlY3VsYXJUaW50TWFwPW51bGwsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5zaGVlbj10LnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgJFF0KS5jb3B5KHQuc2hlZW4pOm51bGwsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpcy50aGlja25lc3M9dC50aGlja25lc3MsdGhpcy50aGlja25lc3NNYXA9dC50aGlja25lc3NNYXAsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPXQuYXR0ZW51YXRpb25EaXN0YW5jZSx0aGlzLmF0dGVudWF0aW9uVGludC5jb3B5KHQuYXR0ZW51YXRpb25UaW50KSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD10LnNwZWN1bGFySW50ZW5zaXR5TWFwLHRoaXMuc3BlY3VsYXJUaW50LmNvcHkodC5zcGVjdWxhclRpbnQpLHRoaXMuc3BlY3VsYXJUaW50TWFwPXQuc3BlY3VsYXJUaW50TWFwLHRoaXN9fVM2dC5wcm90b3R5cGUuaXNNZXNoUGh5c2ljYWxNYXRlcmlhbD0hMDtjbGFzcyBNNnQgZXh0ZW5kcyBVUXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkUXQoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3ICRRdCgxMTE4NDgxKSx0aGlzLnNoaW5pbmVzcz0zMCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkUXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgbUp0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5zcGVjdWxhci5jb3B5KHQuc3BlY3VsYXIpLHRoaXMuc2hpbmluZXNzPXQuc2hpbmluZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319TTZ0LnByb3RvdHlwZS5pc01lc2hQaG9uZ01hdGVyaWFsPSEwO2NsYXNzIEU2dCBleHRlbmRzIFVRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17VE9PTjoiIn0sdGhpcy50eXBlPSJNZXNoVG9vbk1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyAkUXQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5ncmFkaWVudE1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkUXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgbUp0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuZ3JhZGllbnRNYXA9dC5ncmFkaWVudE1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319RTZ0LnByb3RvdHlwZS5pc01lc2hUb29uTWF0ZXJpYWw9ITA7Y2xhc3MgVDZ0IGV4dGVuZHMgVVF0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBtSnQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX1UNnQucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwO2NsYXNzIEM2dCBleHRlbmRzIFVRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgJFF0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyAkUXQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX1DNnQucHJvdG90eXBlLmlzTWVzaExhbWJlcnRNYXRlcmlhbD0hMDtjbGFzcyBBNnQgZXh0ZW5kcyBVUXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy50eXBlPSJNZXNoTWF0Y2FwTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3ICRRdCgxNjc3NzIxNSksdGhpcy5tYXRjYXA9bnVsbCx0aGlzLm1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBtSnQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXRjYXA9dC5tYXRjYXAsdGhpcy5tYXA9dC5tYXAsdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fUE2dC5wcm90b3R5cGUuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw9ITA7Y2xhc3MgazZ0IGV4dGVuZHMgSTN0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lRGFzaGVkTWF0ZXJpYWwiLHRoaXMuc2NhbGU9MSx0aGlzLmRhc2hTaXplPTMsdGhpcy5nYXBTaXplPTEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNjYWxlPXQuc2NhbGUsdGhpcy5kYXNoU2l6ZT10LmRhc2hTaXplLHRoaXMuZ2FwU2l6ZT10LmdhcFNpemUsdGhpc319azZ0LnByb3RvdHlwZS5pc0xpbmVEYXNoZWRNYXRlcmlhbD0hMDt2YXIgTDZ0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLFNoYWRvd01hdGVyaWFsOng2dCxTcHJpdGVNYXRlcmlhbDpKNXQsUmF3U2hhZGVyTWF0ZXJpYWw6XzB0LFNoYWRlck1hdGVyaWFsOkcxdCxQb2ludHNNYXRlcmlhbDpHM3QsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6UzZ0LE1lc2hTdGFuZGFyZE1hdGVyaWFsOnc2dCxNZXNoUGhvbmdNYXRlcmlhbDpNNnQsTWVzaFRvb25NYXRlcmlhbDpFNnQsTWVzaE5vcm1hbE1hdGVyaWFsOlQ2dCxNZXNoTGFtYmVydE1hdGVyaWFsOkM2dCxNZXNoRGVwdGhNYXRlcmlhbDpONXQsTWVzaERpc3RhbmNlTWF0ZXJpYWw6STV0LE1lc2hCYXNpY01hdGVyaWFsOktRdCxNZXNoTWF0Y2FwTWF0ZXJpYWw6QTZ0LExpbmVEYXNoZWRNYXRlcmlhbDprNnQsTGluZUJhc2ljTWF0ZXJpYWw6STN0LE1hdGVyaWFsOlVRdH0pO2NvbnN0IFA2dD17YXJyYXlTbGljZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIFA2dC5pc1R5cGVkQXJyYXkodCk/bmV3IHQuY29uc3RydWN0b3IodC5zdWJhcnJheShlLHZvaWQgMCE9PW4/bjp0Lmxlbmd0aCkpOnQuc2xpY2UoZSxuKX0sY29udmVydEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hdHx8IW4mJnQuY29uc3RydWN0b3I9PT1lP3Q6Im51bWJlciI9PXR5cGVvZiBlLkJZVEVTX1BFUl9FTEVNRU5UP25ldyBlKHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfSxpc1R5cGVkQXJyYXk6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxnZXRLZXlmcmFtZU9yZGVyOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KW5bdF09dDtyZXR1cm4gbi5zb3J0KChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIHRbZV0tdFtuXX0pKSxufSxzb3J0ZWRBcnJheTpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT10Lmxlbmd0aCxyPW5ldyB0LmNvbnN0cnVjdG9yKGkpO2ZvcihsZXQgbz0wLGE9MDthIT09aTsrK28pe2NvbnN0IGk9bltvXSplO2ZvcihsZXQgbj0wO24hPT1lOysrbilyW2ErK109dFtpK25dfXJldHVybiByfSxmbGF0dGVuSlNPTjpmdW5jdGlvbih0LGUsbixpKXtsZXQgcj0xLG89dFswXTtmb3IoO3ZvaWQgMCE9PW8mJnZvaWQgMD09PW9baV07KW89dFtyKytdO2lmKHZvaWQgMD09PW8pcmV0dXJuO2xldCBhPW9baV07aWYodm9pZCAwIT09YSlpZihBcnJheS5pc0FycmF5KGEpKWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoLmFwcGx5KG4sYSkpLG89dFtyKytdfXdoaWxlKHZvaWQgMCE9PW8pO2Vsc2UgaWYodm9pZCAwIT09YS50b0FycmF5KWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksYS50b0FycmF5KG4sbi5sZW5ndGgpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKTtlbHNlIGRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoKGEpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKX0sc3ViY2xpcDpmdW5jdGlvbih0LGUsbixpLHI9MzApe2NvbnN0IG89dC5jbG9uZSgpO28ubmFtZT1lO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxvLnRyYWNrcy5sZW5ndGg7Kyt0KXtjb25zdCBlPW8udHJhY2tzW3RdLHM9ZS5nZXRWYWx1ZVNpemUoKSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxlLnRpbWVzLmxlbmd0aDsrK3Qpe2NvbnN0IG89ZS50aW1lc1t0XSpyO2lmKCEobzxufHxvPj1pKSl7bC5wdXNoKGUudGltZXNbdF0pO2ZvcihsZXQgbj0wO248czsrK24pYy5wdXNoKGUudmFsdWVzW3QqcytuXSl9fTAhPT1sLmxlbmd0aCYmKGUudGltZXM9UDZ0LmNvbnZlcnRBcnJheShsLGUudGltZXMuY29uc3RydWN0b3IpLGUudmFsdWVzPVA2dC5jb252ZXJ0QXJyYXkoYyxlLnZhbHVlcy5jb25zdHJ1Y3RvciksYS5wdXNoKGUpKX1vLnRyYWNrcz1hO2xldCBzPTEvMDtmb3IobGV0IHQ9MDt0PG8udHJhY2tzLmxlbmd0aDsrK3Qpcz5vLnRyYWNrc1t0XS50aW1lc1swXSYmKHM9by50cmFja3NbdF0udGltZXNbMF0pO2ZvcihsZXQgdD0wO3Q8by50cmFja3MubGVuZ3RoOysrdClvLnRyYWNrc1t0XS5zaGlmdCgtMSpzKTtyZXR1cm4gby5yZXNldER1cmF0aW9uKCksb30sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbih0LGU9MCxuPXQsaT0zMCl7aTw9MCYmKGk9MzApO2NvbnN0IHI9bi50cmFja3MubGVuZ3RoLG89ZS9pO2ZvcihsZXQgZT0wO2U8cjsrK2Upe2NvbnN0IGk9bi50cmFja3NbZV0scj1pLlZhbHVlVHlwZU5hbWU7aWYoImJvb2wiPT09cnx8InN0cmluZyI9PT1yKWNvbnRpbnVlO2NvbnN0IGE9dC50cmFja3MuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWkubmFtZSYmdC5WYWx1ZVR5cGVOYW1lPT09cn0pKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2xldCBzPTA7Y29uc3QgbD1pLmdldFZhbHVlU2l6ZSgpO2kuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihzPWwvMyk7bGV0IGM9MDtjb25zdCB1PWEuZ2V0VmFsdWVTaXplKCk7YS5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKGM9dS8zKTtjb25zdCBoPWkudGltZXMubGVuZ3RoLTE7bGV0IGQ7aWYobzw9aS50aW1lc1swXSlkPVA2dC5hcnJheVNsaWNlKGkudmFsdWVzLHMsbC1zKTtlbHNlIGlmKG8+PWkudGltZXNbaF0pe2NvbnN0IHQ9aCpsK3M7ZD1QNnQuYXJyYXlTbGljZShpLnZhbHVlcyx0LHQrbC1zKX1lbHNle2NvbnN0IHQ9aS5jcmVhdGVJbnRlcnBvbGFudCgpLGU9cyxuPWwtczt0LmV2YWx1YXRlKG8pLGQ9UDZ0LmFycmF5U2xpY2UodC5yZXN1bHRCdWZmZXIsZSxuKX0icXVhdGVybmlvbiI9PT1yJiYobmV3IFRKdCkuZnJvbUFycmF5KGQpLm5vcm1hbGl6ZSgpLmNvbmp1Z2F0ZSgpLnRvQXJyYXkoZCk7Y29uc3QgcD1hLnRpbWVzLmxlbmd0aDtmb3IobGV0IHQ9MDt0PHA7Kyt0KXtjb25zdCBlPXQqdStjO2lmKCJxdWF0ZXJuaW9uIj09PXIpVEp0Lm11bHRpcGx5UXVhdGVybmlvbnNGbGF0KGEudmFsdWVzLGUsZCwwLGEudmFsdWVzLGUpO2Vsc2V7Y29uc3QgdD11LTIqYztmb3IobGV0IG49MDtuPHQ7KytuKWEudmFsdWVzW2Urbl0tPWRbbl19fX1yZXR1cm4gdC5ibGVuZE1vZGU9UFp0LHR9fTtjbGFzcyBONnR7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9dCx0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMucmVzdWx0QnVmZmVyPXZvaWQgMCE9PWk/aTpuZXcgZS5jb25zdHJ1Y3RvcihuKSx0aGlzLnNhbXBsZVZhbHVlcz1lLHRoaXMudmFsdWVTaXplPW4sdGhpcy5zZXR0aW5ncz1udWxsLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17fX1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCBuPXRoaXMuX2NhY2hlZEluZGV4LGk9ZVtuXSxyPWVbbi0xXTt0OntlOntsZXQgbztuOntpOmlmKCEodDxpKSl7Zm9yKGxldCBvPW4rMjs7KXtpZih2b2lkIDA9PT1pKXtpZih0PHIpYnJlYWsgaTtyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSx0LHIpfWlmKG49PT1vKWJyZWFrO2lmKHI9aSxpPWVbKytuXSx0PGkpYnJlYWsgZX1vPWUubGVuZ3RoO2JyZWFrIG59aWYodD49cilicmVhayB0O3tjb25zdCBhPWVbMV07dDxhJiYobj0yLHI9YSk7Zm9yKGxldCBvPW4tMjs7KXtpZih2b2lkIDA9PT1yKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxpKTtpZihuPT09bylicmVhaztpZihpPXIscj1lWy0tbi0xXSx0Pj1yKWJyZWFrIGV9bz1uLG49MH19Zm9yKDtuPG87KXtjb25zdCBpPW4rbz4+PjE7dDxlW2ldP289aTpuPWkrMX1pZihpPWVbbl0scj1lW24tMV0sdm9pZCAwPT09cilyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsaSk7aWYodm9pZCAwPT09aSlyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSxyLHQpfXRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5pbnRlcnZhbENoYW5nZWRfKG4scixpKX1yZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZV8obixyLHQsaSl9Z2V0U2V0dGluZ3NfKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N8fHRoaXMuRGVmYXVsdFNldHRpbmdzX31jb3B5U2FtcGxlVmFsdWVfKHQpe2NvbnN0IGU9dGhpcy5yZXN1bHRCdWZmZXIsbj10aGlzLnNhbXBsZVZhbHVlcyxpPXRoaXMudmFsdWVTaXplLHI9dCppO2ZvcihsZXQgdD0wO3QhPT1pOysrdCllW3RdPW5bcit0XTtyZXR1cm4gZX1pbnRlcnBvbGF0ZV8oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9aW50ZXJ2YWxDaGFuZ2VkXygpe319TjZ0LnByb3RvdHlwZS5iZWZvcmVTdGFydF89TjZ0LnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLE42dC5wcm90b3R5cGUuYWZ0ZXJFbmRfPU42dC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXztjbGFzcyBJNnQgZXh0ZW5kcyBONnR7Y29uc3RydWN0b3IodCxlLG4saSl7c3VwZXIodCxlLG4saSksdGhpcy5fd2VpZ2h0UHJldj0tMCx0aGlzLl9vZmZzZXRQcmV2PS0wLHRoaXMuX3dlaWdodE5leHQ9LTAsdGhpcy5fb2Zmc2V0TmV4dD0tMCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e2VuZGluZ1N0YXJ0OkNadCxlbmRpbmdFbmQ6Q1p0fX1pbnRlcnZhbENoYW5nZWRfKHQsZSxuKXtjb25zdCBpPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCByPXQtMixvPXQrMSxhPWlbcl0scz1pW29dO2lmKHZvaWQgMD09PWEpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nU3RhcnQpe2Nhc2UgQVp0OnI9dCxhPTIqZS1uO2JyZWFrO2Nhc2Uga1p0OnI9aS5sZW5ndGgtMixhPWUraVtyXS1pW3IrMV07YnJlYWs7ZGVmYXVsdDpyPXQsYT1ufWlmKHZvaWQgMD09PXMpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nRW5kKXtjYXNlIEFadDpvPXQscz0yKm4tZTticmVhaztjYXNlIGtadDpvPTEscz1uK2lbMV0taVswXTticmVhaztkZWZhdWx0Om89dC0xLHM9ZX1jb25zdCBsPS41KihuLWUpLGM9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1sLyhlLWEpLHRoaXMuX3dlaWdodE5leHQ9bC8ocy1uKSx0aGlzLl9vZmZzZXRQcmV2PXIqYyx0aGlzLl9vZmZzZXROZXh0PW8qY31pbnRlcnBvbGF0ZV8odCxlLG4saSl7Y29uc3Qgcj10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUscz10KmEsbD1zLWEsYz10aGlzLl9vZmZzZXRQcmV2LHU9dGhpcy5fb2Zmc2V0TmV4dCxoPXRoaXMuX3dlaWdodFByZXYsZD10aGlzLl93ZWlnaHROZXh0LHA9KG4tZSkvKGktZSksZj1wKnAsbT1mKnAsZz0taCptKzIqaCpmLWgqcCxfPSgxK2gpKm0rKC0xLjUtMipoKSpmKygtLjUraCkqcCsxLHk9KC0xLWQpKm0rKDEuNStkKSpmKy41KnAsdj1kKm0tZCpmO2ZvcihsZXQgdD0wO3QhPT1hOysrdClyW3RdPWcqb1tjK3RdK18qb1tsK3RdK3kqb1tzK3RdK3Yqb1t1K3RdO3JldHVybiByfX1jbGFzcyBSNnQgZXh0ZW5kcyBONnR7Y29uc3RydWN0b3IodCxlLG4saSl7c3VwZXIodCxlLG4saSl9aW50ZXJwb2xhdGVfKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxhPXRoaXMudmFsdWVTaXplLHM9dCphLGw9cy1hLGM9KG4tZSkvKGktZSksdT0xLWM7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KXJbdF09b1tsK3RdKnUrb1tzK3RdKmM7cmV0dXJuIHJ9fWNsYXNzIE82dCBleHRlbmRzIE42dHtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKX1pbnRlcnBvbGF0ZV8odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX1jbGFzcyB6NnR7Y29uc3RydWN0b3IodCxlLG4saSl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYodm9pZCAwPT09ZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz1QNnQuY29udmVydEFycmF5KGUsdGhpcy5UaW1lQnVmZmVyVHlwZSksdGhpcy52YWx1ZXM9UDZ0LmNvbnZlcnRBcnJheShuLHRoaXMuVmFsdWVCdWZmZXJUeXBlKSx0aGlzLnNldEludGVycG9sYXRpb24oaXx8dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPXQuY29uc3RydWN0b3I7bGV0IG47aWYoZS50b0pTT04hPT10aGlzLnRvSlNPTiluPWUudG9KU09OKHQpO2Vsc2V7bj17bmFtZTp0Lm5hbWUsdGltZXM6UDZ0LmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6UDZ0LmNvbnZlcnRBcnJheSh0LnZhbHVlcyxBcnJheSl9O2NvbnN0IGU9dC5nZXRJbnRlcnBvbGF0aW9uKCk7ZSE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihuLmludGVycG9sYXRpb249ZSl9cmV0dXJuIG4udHlwZT10LlZhbHVlVHlwZU5hbWUsbn1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZSh0KXtyZXR1cm4gbmV3IE82dCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgUjZ0KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGgodCl7cmV0dXJuIG5ldyBJNnQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfXNldEludGVycG9sYXRpb24odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgTVp0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTticmVhaztjYXNlIEVadDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyO2JyZWFrO2Nhc2UgVFp0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09ZSl7Y29uc3QgZT0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KXtpZih0PT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aHJvdyBuZXcgRXJyb3IoZSk7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixlKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PWUsdGhpc31nZXRJbnRlcnBvbGF0aW9uKCl7c3dpdGNoKHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpyZXR1cm4gTVp0O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIEVadDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnJldHVybiBUWnR9fWdldFZhbHVlU2l6ZSgpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9c2hpZnQodCl7aWYoMCE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxpPWUubGVuZ3RoO24hPT1pOysrbillW25dKz10fXJldHVybiB0aGlzfXNjYWxlKHQpe2lmKDEhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuIT09aTsrK24pZVtuXSo9dH1yZXR1cm4gdGhpc310cmltKHQsZSl7Y29uc3Qgbj10aGlzLnRpbWVzLGk9bi5sZW5ndGg7bGV0IHI9MCxvPWktMTtmb3IoO3IhPT1pJiZuW3JdPHQ7KSsrcjtmb3IoOy0xIT09byYmbltvXT5lOyktLW87aWYoKytvLDAhPT1yfHxvIT09aSl7cj49byYmKG89TWF0aC5tYXgobywxKSxyPW8tMSk7Y29uc3QgdD10aGlzLmdldFZhbHVlU2l6ZSgpO3RoaXMudGltZXM9UDZ0LmFycmF5U2xpY2UobixyLG8pLHRoaXMudmFsdWVzPVA2dC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLHIqdCxvKnQpfXJldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITA7Y29uc3QgZT10aGlzLmdldFZhbHVlU2l6ZSgpO2UtTWF0aC5mbG9vcihlKSE9MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLHQ9ITEpO2NvbnN0IG49dGhpcy50aW1lcyxpPXRoaXMudmFsdWVzLHI9bi5sZW5ndGg7MD09PXImJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCBvPW51bGw7Zm9yKGxldCBlPTA7ZSE9PXI7ZSsrKXtjb25zdCBpPW5bZV07aWYoIm51bWJlciI9PXR5cGVvZiBpJiZpc05hTihpKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsaSksdD0hMTticmVha31pZihudWxsIT09byYmbz5pKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMsZSxpLG8pLHQ9ITE7YnJlYWt9bz1pfWlmKHZvaWQgMCE9PWkmJlA2dC5pc1R5cGVkQXJyYXkoaSkpZm9yKGxldCBlPTAsbj1pLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49aVtlXTtpZihpc05hTihuKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG4pLHQ9ITE7YnJlYWt9fXJldHVybiB0fW9wdGltaXplKCl7Y29uc3QgdD1QNnQuYXJyYXlTbGljZSh0aGlzLnRpbWVzKSxlPVA2dC5hcnJheVNsaWNlKHRoaXMudmFsdWVzKSxuPXRoaXMuZ2V0VmFsdWVTaXplKCksaT10aGlzLmdldEludGVycG9sYXRpb24oKT09PVRadCxyPXQubGVuZ3RoLTE7bGV0IG89MTtmb3IobGV0IGE9MTthPHI7KythKXtsZXQgcj0hMTtjb25zdCBzPXRbYV07aWYocyE9PXRbYSsxXSYmKDEhPT1hfHxzIT09dFswXSkpaWYoaSlyPSEwO2Vsc2V7Y29uc3QgdD1hKm4saT10LW4sbz10K247Zm9yKGxldCBhPTA7YSE9PW47KythKXtjb25zdCBuPWVbdCthXTtpZihuIT09ZVtpK2FdfHxuIT09ZVtvK2FdKXtyPSEwO2JyZWFrfX19aWYocil7aWYoYSE9PW8pe3Rbb109dFthXTtjb25zdCBpPWEqbixyPW8qbjtmb3IobGV0IHQ9MDt0IT09bjsrK3QpZVtyK3RdPWVbaSt0XX0rK299fWlmKHI+MCl7dFtvXT10W3JdO2ZvcihsZXQgdD1yKm4saT1vKm4sYT0wO2EhPT1uOysrYSllW2krYV09ZVt0K2FdOysrb31yZXR1cm4gbyE9PXQubGVuZ3RoPyh0aGlzLnRpbWVzPVA2dC5hcnJheVNsaWNlKHQsMCxvKSx0aGlzLnZhbHVlcz1QNnQuYXJyYXlTbGljZShlLDAsbypuKSk6KHRoaXMudGltZXM9dCx0aGlzLnZhbHVlcz1lKSx0aGlzfWNsb25lKCl7Y29uc3QgdD1QNnQuYXJyYXlTbGljZSh0aGlzLnRpbWVzLDApLGU9UDZ0LmFycmF5U2xpY2UodGhpcy52YWx1ZXMsMCksbj1uZXcoMCx0aGlzLmNvbnN0cnVjdG9yKSh0aGlzLm5hbWUsdCxlKTtyZXR1cm4gbi5jcmVhdGVJbnRlcnBvbGFudD10aGlzLmNyZWF0ZUludGVycG9sYW50LG59fXo2dC5wcm90b3R5cGUuVGltZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5LHo2dC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSx6NnQucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUVadDtjbGFzcyBENnQgZXh0ZW5kcyB6NnR7fUQ2dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iYm9vbCIsRDZ0LnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXksRDZ0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1NWnQsRDZ0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwLEQ2dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyBCNnQgZXh0ZW5kcyB6NnR7fUI2dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iY29sb3IiO2NsYXNzIEg2dCBleHRlbmRzIHo2dHt9SDZ0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJudW1iZXIiO2NsYXNzIEY2dCBleHRlbmRzIE42dHtjb25zdHJ1Y3Rvcih0LGUsbixpKXtzdXBlcih0LGUsbixpKX1pbnRlcnBvbGF0ZV8odCxlLG4saSl7Y29uc3Qgcj10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUscz0obi1lKS8oaS1lKTtsZXQgbD10KmE7Zm9yKGxldCB0PWwrYTtsIT09dDtsKz00KVRKdC5zbGVycEZsYXQociwwLG8sbC1hLG8sbCxzKTtyZXR1cm4gcn19Y2xhc3MgVjZ0IGV4dGVuZHMgejZ0e0ludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IEY2dCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9fVY2dC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0icXVhdGVybmlvbiIsVjZ0LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1FWnQsVjZ0LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIFU2dCBleHRlbmRzIHo2dHt9VTZ0LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJzdHJpbmciLFU2dC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LFU2dC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249TVp0LFU2dC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxVNnQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgajZ0IGV4dGVuZHMgejZ0e31qNnQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InZlY3RvciI7Y2xhc3MgRzZ0e2NvbnN0cnVjdG9yKHQsZT0tMSxuLGk9MjUwMCl7dGhpcy5uYW1lPXQsdGhpcy50cmFja3M9bix0aGlzLmR1cmF0aW9uPWUsdGhpcy5ibGVuZE1vZGU9aSx0aGlzLnV1aWQ9WFp0KCksdGhpcy5kdXJhdGlvbjwwJiZ0aGlzLnJlc2V0RHVyYXRpb24oKX1zdGF0aWMgcGFyc2UodCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLGk9MS8odC5mcHN8fDEpO2ZvcihsZXQgdD0wLHI9bi5sZW5ndGg7dCE9PXI7Kyt0KWUucHVzaChXNnQoblt0XSkuc2NhbGUoaSkpO2NvbnN0IHI9bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24sZSx0LmJsZW5kTW9kZSk7cmV0dXJuIHIudXVpZD10LnV1aWQscn1zdGF0aWMgdG9KU09OKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxpPXtuYW1lOnQubmFtZSxkdXJhdGlvbjp0LmR1cmF0aW9uLHRyYWNrczplLHV1aWQ6dC51dWlkLGJsZW5kTW9kZTp0LmJsZW5kTW9kZX07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0IT09aTsrK3QpZS5wdXNoKHo2dC50b0pTT04oblt0XSkpO3JldHVybiBpfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGUsbixpKXtjb25zdCByPWUubGVuZ3RoLG89W107Zm9yKGxldCB0PTA7dDxyO3QrKyl7bGV0IGE9W10scz1bXTthLnB1c2goKHQrci0xKSVyLHQsKHQrMSklcikscy5wdXNoKDAsMSwwKTtjb25zdCBsPVA2dC5nZXRLZXlmcmFtZU9yZGVyKGEpO2E9UDZ0LnNvcnRlZEFycmF5KGEsMSxsKSxzPVA2dC5zb3J0ZWRBcnJheShzLDEsbCksaXx8MCE9PWFbMF18fChhLnB1c2gocikscy5wdXNoKHNbMF0pKSxvLnB1c2gobmV3IEg2dCgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1siK2VbdF0ubmFtZSsiXSIsYSxzKS5zY2FsZSgxL24pKX1yZXR1cm4gbmV3IHRoaXModCwtMSxvKX1zdGF0aWMgZmluZEJ5TmFtZSh0LGUpe2xldCBuPXQ7aWYoIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9dDtuPWUuZ2VvbWV0cnkmJmUuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8ZS5hbmltYXRpb25zfWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKG5bdF0ubmFtZT09PWUpcmV0dXJuIG5bdF07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQsZSxuKXtjb25zdCBpPXt9LHI9L14oW1x3LV0qPykoW1xkXSspJC87Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0sbz1uLm5hbWUubWF0Y2gocik7aWYobyYmby5sZW5ndGg+MSl7Y29uc3QgdD1vWzFdO2xldCBlPWlbdF07ZXx8KGlbdF09ZT1bXSksZS5wdXNoKG4pfX1jb25zdCBvPVtdO2Zvcihjb25zdCB0IGluIGkpby5wdXNoKHRoaXMuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxpW3RdLGUsbikpO3JldHVybiBvfXN0YXRpYyBwYXJzZUFuaW1hdGlvbih0LGUpe2lmKCF0KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLiIpLG51bGw7Y29uc3Qgbj1mdW5jdGlvbih0LGUsbixpLHIpe2lmKDAhPT1uLmxlbmd0aCl7Y29uc3Qgbz1bXSxhPVtdO1A2dC5mbGF0dGVuSlNPTihuLG8sYSxpKSwwIT09by5sZW5ndGgmJnIucHVzaChuZXcgdChlLG8sYSkpfX0saT1bXSxyPXQubmFtZXx8ImRlZmF1bHQiLG89dC5mcHN8fDMwLGE9dC5ibGVuZE1vZGU7bGV0IHM9dC5sZW5ndGh8fC0xO2NvbnN0IGw9dC5oaWVyYXJjaHl8fFtdO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtjb25zdCByPWxbdF0ua2V5cztpZihyJiYwIT09ci5sZW5ndGgpaWYoclswXS5tb3JwaFRhcmdldHMpe2NvbnN0IHQ9e307bGV0IGU7Zm9yKGU9MDtlPHIubGVuZ3RoO2UrKylpZihyW2VdLm1vcnBoVGFyZ2V0cylmb3IobGV0IG49MDtuPHJbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDtuKyspdFtyW2VdLm1vcnBoVGFyZ2V0c1tuXV09LTE7Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgdD1bXSxvPVtdO2ZvcihsZXQgaT0wO2khPT1yW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7KytpKXtjb25zdCBpPXJbZV07dC5wdXNoKGkudGltZSksby5wdXNoKGkubW9ycGhUYXJnZXQ9PT1uPzE6MCl9aS5wdXNoKG5ldyBINnQoIi5tb3JwaFRhcmdldEluZmx1ZW5jZVsiK24rIl0iLHQsbykpfXM9dC5sZW5ndGgqKG98fDEpfWVsc2V7Y29uc3Qgbz0iLmJvbmVzWyIrZVt0XS5uYW1lKyJdIjtuKGo2dCxvKyIucG9zaXRpb24iLHIsInBvcyIsaSksbihWNnQsbysiLnF1YXRlcm5pb24iLHIsInJvdCIsaSksbihqNnQsbysiLnNjYWxlIixyLCJzY2wiLGkpfX1yZXR1cm4gMD09PWkubGVuZ3RoP251bGw6bmV3IHRoaXMocixzLGksYSl9cmVzZXREdXJhdGlvbigpe2xldCB0PTA7Zm9yKGxldCBlPTAsbj10aGlzLnRyYWNrcy5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPXRoaXMudHJhY2tzW2VdO3Q9TWF0aC5tYXgodCxuLnRpbWVzW24udGltZXMubGVuZ3RoLTFdKX1yZXR1cm4gdGhpcy5kdXJhdGlvbj10LHRoaXN9dHJpbSgpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdD10JiZ0aGlzLnRyYWNrc1tlXS52YWxpZGF0ZSgpO3JldHVybiB0fW9wdGltaXplKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLm9wdGltaXplKCk7cmV0dXJuIHRoaXN9Y2xvbmUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19ZnVuY3Rpb24gVzZ0KHQpe2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBINnQ7Y2FzZSJ2ZWN0b3IiOmNhc2UidmVjdG9yMiI6Y2FzZSJ2ZWN0b3IzIjpjYXNlInZlY3RvcjQiOnJldHVybiBqNnQ7Y2FzZSJjb2xvciI6cmV0dXJuIEI2dDtjYXNlInF1YXRlcm5pb24iOnJldHVybiBWNnQ7Y2FzZSJib29sIjpjYXNlImJvb2xlYW4iOnJldHVybiBENnQ7Y2FzZSJzdHJpbmciOnJldHVybiBVNnR9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIit0KX0pKHQudHlwZSk7aWYodm9pZCAwPT09dC50aW1lcyl7Y29uc3QgZT1bXSxuPVtdO1A2dC5mbGF0dGVuSlNPTih0LmtleXMsZSxuLCJ2YWx1ZSIpLHQudGltZXM9ZSx0LnZhbHVlcz1ufXJldHVybiB2b2lkIDAhPT1lLnBhcnNlP2UucGFyc2UodCk6bmV3IGUodC5uYW1lLHQudGltZXMsdC52YWx1ZXMsdC5pbnRlcnBvbGF0aW9uKX1jb25zdCBxNnQ9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKHQsZSl7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW3RdPWUpfSxnZXQ6ZnVuY3Rpb24odCl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbdF19LHJlbW92ZTpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5maWxlc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPXt9fX07Y2xhc3MgWTZ0e2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBpPXRoaXM7bGV0IHIsbz0hMSxhPTAscz0wO2NvbnN0IGw9W107dGhpcy5vblN0YXJ0PXZvaWQgMCx0aGlzLm9uTG9hZD10LHRoaXMub25Qcm9ncmVzcz1lLHRoaXMub25FcnJvcj1uLHRoaXMuaXRlbVN0YXJ0PWZ1bmN0aW9uKHQpe3MrKywhMT09PW8mJnZvaWQgMCE9PWkub25TdGFydCYmaS5vblN0YXJ0KHQsYSxzKSxvPSEwfSx0aGlzLml0ZW1FbmQ9ZnVuY3Rpb24odCl7YSsrLHZvaWQgMCE9PWkub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKHQsYSxzKSxhPT09cyYmKG89ITEsdm9pZCAwIT09aS5vbkxvYWQmJmkub25Mb2FkKCkpfSx0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbih0KXt2b2lkIDAhPT1pLm9uRXJyb3ImJmkub25FcnJvcih0KX0sdGhpcy5yZXNvbHZlVVJMPWZ1bmN0aW9uKHQpe3JldHVybiByP3IodCk6dH0sdGhpcy5zZXRVUkxNb2RpZmllcj1mdW5jdGlvbih0KXtyZXR1cm4gcj10LHRoaXN9LHRoaXMuYWRkSGFuZGxlcj1mdW5jdGlvbih0LGUpe3JldHVybiBsLnB1c2godCxlKSx0aGlzfSx0aGlzLnJlbW92ZUhhbmRsZXI9ZnVuY3Rpb24odCl7Y29uc3QgZT1sLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiZsLnNwbGljZShlLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPWwubGVuZ3RoO2U8bjtlKz0yKXtjb25zdCBuPWxbZV0saT1sW2UrMV07aWYobi5nbG9iYWwmJihuLmxhc3RJbmRleD0wKSxuLnRlc3QodCkpcmV0dXJuIGl9cmV0dXJuIG51bGx9fX1jb25zdCBYNnQ9bmV3IFk2dDtjbGFzcyAkNnR7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PXQ/dDpYNnQsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQsZSl7Y29uc3Qgbj10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxyKXtuLmxvYWQodCxpLGUscil9KSl9cGFyc2UoKXt9c2V0Q3Jvc3NPcmlnaW4odCl7cmV0dXJuIHRoaXMuY3Jvc3NPcmlnaW49dCx0aGlzfXNldFdpdGhDcmVkZW50aWFscyh0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfXNldFBhdGgodCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9c2V0UmVzb3VyY2VQYXRoKHQpe3JldHVybiB0aGlzLnJlc291cmNlUGF0aD10LHRoaXN9c2V0UmVxdWVzdEhlYWRlcih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319Y29uc3QgSzZ0PXt9O2NsYXNzIFo2dCBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPXE2dC5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2lmKHZvaWQgMCE9PUs2dFt0XSlyZXR1cm4gdm9pZCBLNnRbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pO2NvbnN0IGE9dC5tYXRjaCgvXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLyk7bGV0IHM7aWYoYSl7Y29uc3Qgbj1hWzFdLG89ISFhWzJdO2xldCBzPWFbM107cz1kZWNvZGVVUklDb21wb25lbnQocyksbyYmKHM9YXRvYihzKSk7dHJ5e2xldCBpO2NvbnN0IG89KHRoaXMucmVzcG9uc2VUeXBlfHwiIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gobyl7Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJibG9iIjpjb25zdCB0PW5ldyBVaW50OEFycmF5KHMubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKyl0W2VdPXMuY2hhckNvZGVBdChlKTtpPSJibG9iIj09PW8/bmV3IEJsb2IoW3QuYnVmZmVyXSx7dHlwZTpufSk6dC5idWZmZXI7YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y29uc3QgZT1uZXcgRE9NUGFyc2VyO2k9ZS5wYXJzZUZyb21TdHJpbmcocyxuKTticmVhaztjYXNlImpzb24iOmk9SlNPTi5wYXJzZShzKTticmVhaztkZWZhdWx0Omk9c31zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUoaSksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX1jYXRjaChlKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApfX1lbHNle0s2dFt0XT1bXSxLNnRbdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczpuLG9uRXJyb3I6aX0pLHM9bmV3IFhNTEh0dHBSZXF1ZXN0LHMub3BlbigiR0VUIix0LCEwKSxzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLChmdW5jdGlvbihlKXtjb25zdCBuPXRoaXMucmVzcG9uc2UsaT1LNnRbdF07aWYoZGVsZXRlIEs2dFt0XSwyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSxxNnQuYWRkKHQsbik7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWlbdF07ZS5vbkxvYWQmJmUub25Mb2FkKG4pfXIubWFuYWdlci5pdGVtRW5kKHQpfWVsc2V7Zm9yKGxldCB0PTAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWlbdF07bi5vbkVycm9yJiZuLm9uRXJyb3IoZSl9ci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49SzZ0W3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25Qcm9ncmVzcyYmaS5vblByb2dyZXNzKGUpfX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1LNnRbdF07ZGVsZXRlIEs2dFt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtpLm9uRXJyb3ImJmkub25FcnJvcihlKX1yLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLChmdW5jdGlvbihlKXtjb25zdCBuPUs2dFt0XTtkZWxldGUgSzZ0W3RdO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dDxpO3QrKyl7Y29uc3QgaT1uW3RdO2kub25FcnJvciYmaS5vbkVycm9yKGUpfXIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwhMSksdm9pZCAwIT09dGhpcy5yZXNwb25zZVR5cGUmJihzLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVHlwZSksdm9pZCAwIT09dGhpcy53aXRoQ3JlZGVudGlhbHMmJihzLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscykscy5vdmVycmlkZU1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKGNvbnN0IHQgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKXMuc2V0UmVxdWVzdEhlYWRlcih0LHRoaXMucmVxdWVzdEhlYWRlclt0XSk7cy5zZW5kKG51bGwpfXJldHVybiByLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHN9c2V0UmVzcG9uc2VUeXBlKHQpe3JldHVybiB0aGlzLnJlc3BvbnNlVHlwZT10LHRoaXN9c2V0TWltZVR5cGUodCl7cmV0dXJuIHRoaXMubWltZVR5cGU9dCx0aGlzfX1jbGFzcyBKNnQgZXh0ZW5kcyAkNnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXt2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPXE2dC5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiaW1nIik7ZnVuY3Rpb24gcygpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSkscTZ0LmFkZCh0LHRoaXMpLGUmJmUodGhpcyksci5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gbChlKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLGkmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX1yZXR1cm4gYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSwiZGF0YToiIT09dC5zdWJzdHIoMCw1KSYmdm9pZCAwIT09dGhpcy5jcm9zc09yaWdpbiYmKGEuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbiksci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxhLnNyYz10LGF9fWNsYXNzIFE2dCBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3ICQxdCxvPW5ldyBKNnQodGhpcy5tYW5hZ2VyKTtvLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLG8uc2V0UGF0aCh0aGlzLnBhdGgpO2xldCBhPTA7ZnVuY3Rpb24gcyhuKXtvLmxvYWQodFtuXSwoZnVuY3Rpb24odCl7ci5pbWFnZXNbbl09dCxhKyssNj09PWEmJihyLm5lZWRzVXBkYXRlPSEwLGUmJmUocikpfSksdm9pZCAwLGkpfWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXMoZSk7cmV0dXJuIHJ9fWNsYXNzIHQ5dCBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBNM3QsYT1uZXcgWjZ0KHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24odCl7Y29uc3Qgbj1yLnBhcnNlKHQpO24mJih2b2lkIDAhPT1uLmltYWdlP28uaW1hZ2U9bi5pbWFnZTp2b2lkIDAhPT1uLmRhdGEmJihvLmltYWdlLndpZHRoPW4ud2lkdGgsby5pbWFnZS5oZWlnaHQ9bi5oZWlnaHQsby5pbWFnZS5kYXRhPW4uZGF0YSksby53cmFwUz12b2lkIDAhPT1uLndyYXBTP24ud3JhcFM6S0t0LG8ud3JhcFQ9dm9pZCAwIT09bi53cmFwVD9uLndyYXBUOktLdCxvLm1hZ0ZpbHRlcj12b2lkIDAhPT1uLm1hZ0ZpbHRlcj9uLm1hZ0ZpbHRlcjplWnQsby5taW5GaWx0ZXI9dm9pZCAwIT09bi5taW5GaWx0ZXI/bi5taW5GaWx0ZXI6ZVp0LG8uYW5pc290cm9weT12b2lkIDAhPT1uLmFuaXNvdHJvcHk/bi5hbmlzb3Ryb3B5OjEsdm9pZCAwIT09bi5lbmNvZGluZyYmKG8uZW5jb2Rpbmc9bi5lbmNvZGluZyksdm9pZCAwIT09bi5mbGlwWSYmKG8uZmxpcFk9bi5mbGlwWSksdm9pZCAwIT09bi5mb3JtYXQmJihvLmZvcm1hdD1uLmZvcm1hdCksdm9pZCAwIT09bi50eXBlJiYoby50eXBlPW4udHlwZSksdm9pZCAwIT09bi5taXBtYXBzJiYoby5taXBtYXBzPW4ubWlwbWFwcyxvLm1pbkZpbHRlcj1pWnQpLDE9PT1uLm1pcG1hcENvdW50JiYoby5taW5GaWx0ZXI9ZVp0KSx2b2lkIDAhPT1uLmdlbmVyYXRlTWlwbWFwcyYmKG8uZ2VuZXJhdGVNaXBtYXBzPW4uZ2VuZXJhdGVNaXBtYXBzKSxvLm5lZWRzVXBkYXRlPSEwLGUmJmUobyxuKSl9KSxuLGkpLG99fWNsYXNzIGU5dCBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9bmV3IGJKdCxvPW5ldyBKNnQodGhpcy5tYW5hZ2VyKTtyZXR1cm4gby5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxvLnNldFBhdGgodGhpcy5wYXRoKSxvLmxvYWQodCwoZnVuY3Rpb24obil7ci5pbWFnZT1uO2NvbnN0IGk9dC5zZWFyY2goL1wuanBlP2coJHxcPykvaSk+MHx8MD09PXQuc2VhcmNoKC9eZGF0YVw6aW1hZ2VcL2pwZWcvKTtyLmZvcm1hdD1pP3VadDpoWnQsci5uZWVkc1VwZGF0ZT0hMCx2b2lkIDAhPT1lJiZlKHIpfSksbixpKSxyfX1jbGFzcyBuOXQgZXh0ZW5kcyBoNHR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ3VydmVQYXRoIix0aGlzLmN1cnZlcz1bXSx0aGlzLmF1dG9DbG9zZT0hMX1hZGQodCl7dGhpcy5jdXJ2ZXMucHVzaCh0KX1jbG9zZVBhdGgoKXtjb25zdCB0PXRoaXMuY3VydmVzWzBdLmdldFBvaW50KDApLGU9dGhpcy5jdXJ2ZXNbdGhpcy5jdXJ2ZXMubGVuZ3RoLTFdLmdldFBvaW50KDEpO3QuZXF1YWxzKGUpfHx0aGlzLmN1cnZlcy5wdXNoKG5ldyBFNHQoZSx0KSl9Z2V0UG9pbnQodCl7Y29uc3QgZT10KnRoaXMuZ2V0TGVuZ3RoKCksbj10aGlzLmdldEN1cnZlTGVuZ3RocygpO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7aWYobltpXT49ZSl7Y29uc3QgdD1uW2ldLWUscj10aGlzLmN1cnZlc1tpXSxvPXIuZ2V0TGVuZ3RoKCk7cmV0dXJuIHIuZ2V0UG9pbnRBdCgwPT09bz8wOjEtdC9vKX1pKyt9cmV0dXJuIG51bGx9Z2V0TGVuZ3RoKCl7Y29uc3QgdD10aGlzLmdldEN1cnZlTGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuY2FjaGVMZW5ndGhzPW51bGwsdGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX1nZXRDdXJ2ZUxlbmd0aHMoKXtpZih0aGlzLmNhY2hlTGVuZ3RocyYmdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoPT09dGhpcy5jdXJ2ZXMubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlTGVuZ3Rocztjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGxldCBuPTAsaT10aGlzLmN1cnZlcy5sZW5ndGg7bjxpO24rKyllKz10aGlzLmN1cnZlc1tuXS5nZXRMZW5ndGgoKSx0LnB1c2goZSk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPXQsdH1nZXRTcGFjZWRQb2ludHModD00MCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPD10O24rKyllLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUucHVzaChlWzBdKSxlfWdldFBvaW50cyh0PTEyKXtjb25zdCBlPVtdO2xldCBuO2ZvcihsZXQgaT0wLHI9dGhpcy5jdXJ2ZXM7aTxyLmxlbmd0aDtpKyspe2NvbnN0IG89cltpXSxhPW8uZ2V0UG9pbnRzKG8mJm8uaXNFbGxpcHNlQ3VydmU/Mip0Om8mJihvLmlzTGluZUN1cnZlfHxvLmlzTGluZUN1cnZlMyk/MTpvJiZvLmlzU3BsaW5lQ3VydmU/dCpvLnBvaW50cy5sZW5ndGg6dCk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGk9YVt0XTtuJiZuLmVxdWFscyhpKXx8KGUucHVzaChpKSxuPWkpfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUubGVuZ3RoPjEmJiFlW2UubGVuZ3RoLTFdLmVxdWFscyhlWzBdKSYmZS5wdXNoKGVbMF0pLGV9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspdGhpcy5jdXJ2ZXMucHVzaCh0LmN1cnZlc1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QuYXV0b0Nsb3NlPXRoaXMuYXV0b0Nsb3NlLHQuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspdC5jdXJ2ZXMucHVzaCh0aGlzLmN1cnZlc1tlXS50b0pTT04oKSk7cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10LmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmN1cnZlc1tlXTt0aGlzLmN1cnZlcy5wdXNoKChuZXcgTDR0W24udHlwZV0pLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgaTl0IGV4dGVuZHMgbjl0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQYXRoIix0aGlzLmN1cnJlbnRQb2ludD1uZXcgbUp0LHQmJnRoaXMuc2V0RnJvbVBvaW50cyh0KX1zZXRGcm9tUG9pbnRzKHQpe3RoaXMubW92ZVRvKHRbMF0ueCx0WzBdLnkpO2ZvcihsZXQgZT0xLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmxpbmVUbyh0W2VdLngsdFtlXS55KTtyZXR1cm4gdGhpc31tb3ZlVG8odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31saW5lVG8odCxlKXtjb25zdCBuPW5ldyBFNHQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgbUp0KHQsZSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9cXVhZHJhdGljQ3VydmVUbyh0LGUsbixpKXtjb25zdCByPW5ldyBDNHQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgbUp0KHQsZSksbmV3IG1KdChuLGkpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChyKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobixpKSx0aGlzfWJlemllckN1cnZlVG8odCxlLG4saSxyLG8pe2NvbnN0IGE9bmV3IFM0dCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBtSnQodCxlKSxuZXcgbUp0KG4saSksbmV3IG1KdChyLG8pKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChhKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQocixvKSx0aGlzfXNwbGluZVRocnUodCl7Y29uc3QgZT1bdGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKV0uY29uY2F0KHQpLG49bmV3IGs0dChlKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHRbdC5sZW5ndGgtMV0pLHRoaXN9YXJjKHQsZSxuLGkscixvKXtyZXR1cm4gdGhpcy5hYnNhcmModCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLGkscixvKSx0aGlzfWFic2FyYyh0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0LGUsbixuLGkscixvKSx0aGlzfWVsbGlwc2UodCxlLG4saSxyLG8sYSxzKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQrdGhpcy5jdXJyZW50UG9pbnQueCxlK3RoaXMuY3VycmVudFBvaW50LnksbixpLHIsbyxhLHMpLHRoaXN9YWJzZWxsaXBzZSh0LGUsbixpLHIsbyxhLHMpe2NvbnN0IGw9bmV3IGQ0dCh0LGUsbixpLHIsbyxhLHMpO2lmKHRoaXMuY3VydmVzLmxlbmd0aD4wKXtjb25zdCB0PWwuZ2V0UG9pbnQoMCk7dC5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyh0LngsdC55KX10aGlzLmN1cnZlcy5wdXNoKGwpO2NvbnN0IGM9bC5nZXRQb2ludCgxKTtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuY29weShjKSx0aGlzfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0LmN1cnJlbnRQb2ludCksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KHQuY3VycmVudFBvaW50KSx0aGlzfX1jbGFzcyByOXQgZXh0ZW5kcyBpOXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy51dWlkPVhadCgpLHRoaXMudHlwZT0iU2hhcGUiLHRoaXMuaG9sZXM9W119Z2V0UG9pbnRzSG9sZXModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXRoaXMuaG9sZXMubGVuZ3RoO248aTtuKyspZVtuXT10aGlzLmhvbGVzW25dLmdldFBvaW50cyh0KTtyZXR1cm4gZX1leHRyYWN0UG9pbnRzKHQpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyh0KSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKHQpfX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspdGhpcy5ob2xlcy5wdXNoKHQuaG9sZXNbZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtlPG47ZSsrKXQuaG9sZXMucHVzaCh0aGlzLmhvbGVzW2VdLnRvSlNPTigpKTtyZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLnV1aWQ9dC51dWlkLHRoaXMuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10LmhvbGVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuaG9sZXNbZV07dGhpcy5ob2xlcy5wdXNoKChuZXcgaTl0KS5mcm9tSlNPTihuKSl9cmV0dXJuIHRoaXN9fWNsYXNzIG85dCBleHRlbmRzIGtRdHtjb25zdHJ1Y3Rvcih0LGU9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpZ2h0Iix0aGlzLmNvbG9yPW5ldyAkUXQodCksdGhpcy5pbnRlbnNpdHk9ZX1kaXNwb3NlKCl7fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpLGUub2JqZWN0LmludGVuc2l0eT10aGlzLmludGVuc2l0eSx2b2lkIDAhPT10aGlzLmdyb3VuZENvbG9yJiYoZS5vYmplY3QuZ3JvdW5kQ29sb3I9dGhpcy5ncm91bmRDb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5kaXN0YW5jZSYmKGUub2JqZWN0LmRpc3RhbmNlPXRoaXMuZGlzdGFuY2UpLHZvaWQgMCE9PXRoaXMuYW5nbGUmJihlLm9iamVjdC5hbmdsZT10aGlzLmFuZ2xlKSx2b2lkIDAhPT10aGlzLmRlY2F5JiYoZS5vYmplY3QuZGVjYXk9dGhpcy5kZWNheSksdm9pZCAwIT09dGhpcy5wZW51bWJyYSYmKGUub2JqZWN0LnBlbnVtYnJhPXRoaXMucGVudW1icmEpLHZvaWQgMCE9PXRoaXMuc2hhZG93JiYoZS5vYmplY3Quc2hhZG93PXRoaXMuc2hhZG93LnRvSlNPTigpKSxlfX1vOXQucHJvdG90eXBlLmlzTGlnaHQ9ITA7Y2xhc3MgYTl0IGV4dGVuZHMgbzl0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LG4pLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoa1F0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLmdyb3VuZENvbG9yPW5ldyAkUXQoZSl9Y29weSh0KXtyZXR1cm4gbzl0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmdyb3VuZENvbG9yLmNvcHkodC5ncm91bmRDb2xvciksdGhpc319YTl0LnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDtjb25zdCBzOXQ9bmV3IHJRdCxsOXQ9bmV3IENKdCxjOXQ9bmV3IENKdDtjbGFzcyB1OXR7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMubWFwU2l6ZT1uZXcgbUp0KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IHJRdCx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLl9mcnVzdHVtPW5ldyBpMHQsdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBtSnQoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgd0p0KDAsMCwxLDEpXX1nZXRWaWV3cG9ydENvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9Z2V0RnJ1c3R1bSgpe3JldHVybiB0aGlzLl9mcnVzdHVtfXVwZGF0ZU1hdHJpY2VzKHQpe2NvbnN0IGU9dGhpcy5jYW1lcmEsbj10aGlzLm1hdHJpeDtsOXQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGUucG9zaXRpb24uY29weShsOXQpLGM5dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLGUubG9va0F0KGM5dCksZS51cGRhdGVNYXRyaXhXb3JsZCgpLHM5dC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChzOXQpLG4uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG4ubXVsdGlwbHkoZS5wcm9qZWN0aW9uTWF0cml4KSxuLm11bHRpcGx5KGUubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD17fTtyZXR1cm4gMCE9PXRoaXMuYmlhcyYmKHQuYmlhcz10aGlzLmJpYXMpLDAhPT10aGlzLm5vcm1hbEJpYXMmJih0Lm5vcm1hbEJpYXM9dGhpcy5ub3JtYWxCaWFzKSwxIT09dGhpcy5yYWRpdXMmJih0LnJhZGl1cz10aGlzLnJhZGl1cyksNTEyPT09dGhpcy5tYXBTaXplLngmJjUxMj09PXRoaXMubWFwU2l6ZS55fHwodC5tYXBTaXplPXRoaXMubWFwU2l6ZS50b0FycmF5KCkpLHQuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0LGRlbGV0ZSB0LmNhbWVyYS5tYXRyaXgsdH19Y2xhc3MgaDl0IGV4dGVuZHMgdTl0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IHExdCg1MCwxLC41LDUwMCkpLHRoaXMuZm9jdXM9MX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49MipZWnQqdC5hbmdsZSp0aGlzLmZvY3VzLGk9dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQscj10LmRpc3RhbmNlfHxlLmZhcjtuPT09ZS5mb3YmJmk9PT1lLmFzcGVjdCYmcj09PWUuZmFyfHwoZS5mb3Y9bixlLmFzcGVjdD1pLGUuZmFyPXIsZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHN1cGVyLnVwZGF0ZU1hdHJpY2VzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mb2N1cz10LmZvY3VzLHRoaXN9fWg5dC5wcm90b3R5cGUuaXNTcG90TGlnaHRTaGFkb3c9ITA7Y2xhc3MgZDl0IGV4dGVuZHMgbzl0e2NvbnN0cnVjdG9yKHQsZSxuPTAsaT1NYXRoLlBJLzMscj0wLG89MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KGtRdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IGtRdCx0aGlzLmRpc3RhbmNlPW4sdGhpcy5hbmdsZT1pLHRoaXMucGVudW1icmE9cix0aGlzLmRlY2F5PW8sdGhpcy5zaGFkb3c9bmV3IGg5dH1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fWQ5dC5wcm90b3R5cGUuaXNTcG90TGlnaHQ9ITA7Y29uc3QgcDl0PW5ldyByUXQsZjl0PW5ldyBDSnQsbTl0PW5ldyBDSnQ7Y2xhc3MgZzl0IGV4dGVuZHMgdTl0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IHExdCg5MCwxLC41LDUwMCkpLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgbUp0KDQsMiksdGhpcy5fdmlld3BvcnRDb3VudD02LHRoaXMuX3ZpZXdwb3J0cz1bbmV3IHdKdCgyLDEsMSwxKSxuZXcgd0p0KDAsMSwxLDEpLG5ldyB3SnQoMywxLDEsMSksbmV3IHdKdCgxLDEsMSwxKSxuZXcgd0p0KDMsMCwxLDEpLG5ldyB3SnQoMSwwLDEsMSldLHRoaXMuX2N1YmVEaXJlY3Rpb25zPVtuZXcgQ0p0KDEsMCwwKSxuZXcgQ0p0KC0xLDAsMCksbmV3IENKdCgwLDAsMSksbmV3IENKdCgwLDAsLTEpLG5ldyBDSnQoMCwxLDApLG5ldyBDSnQoMCwtMSwwKV0sdGhpcy5fY3ViZVVwcz1bbmV3IENKdCgwLDEsMCksbmV3IENKdCgwLDEsMCksbmV3IENKdCgwLDEsMCksbmV3IENKdCgwLDEsMCksbmV3IENKdCgwLDAsMSksbmV3IENKdCgwLDAsLTEpXX11cGRhdGVNYXRyaWNlcyh0LGU9MCl7Y29uc3Qgbj10aGlzLmNhbWVyYSxpPXRoaXMubWF0cml4LHI9dC5kaXN0YW5jZXx8bi5mYXI7ciE9PW4uZmFyJiYobi5mYXI9cixuLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksZjl0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxuLnBvc2l0aW9uLmNvcHkoZjl0KSxtOXQuY29weShuLnBvc2l0aW9uKSxtOXQuYWRkKHRoaXMuX2N1YmVEaXJlY3Rpb25zW2VdKSxuLnVwLmNvcHkodGhpcy5fY3ViZVVwc1tlXSksbi5sb29rQXQobTl0KSxuLnVwZGF0ZU1hdHJpeFdvcmxkKCksaS5tYWtlVHJhbnNsYXRpb24oLWY5dC54LC1mOXQueSwtZjl0LnopLHA5dC5tdWx0aXBseU1hdHJpY2VzKG4ucHJvamVjdGlvbk1hdHJpeCxuLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChwOXQpfX1nOXQucHJvdG90eXBlLmlzUG9pbnRMaWdodFNoYWRvdz0hMDtjbGFzcyBfOXQgZXh0ZW5kcyBvOXR7Y29uc3RydWN0b3IodCxlLG49MCxpPTEpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJQb2ludExpZ2h0Iix0aGlzLmRpc3RhbmNlPW4sdGhpcy5kZWNheT1pLHRoaXMuc2hhZG93PW5ldyBnOXR9Z2V0IHBvd2VyKCl7cmV0dXJuIDQqdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8oNCpNYXRoLlBJKX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuZGVjYXk9dC5kZWNheSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fV85dC5wcm90b3R5cGUuaXNQb2ludExpZ2h0PSEwO2NsYXNzIHk5dCBleHRlbmRzIHU5dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBnMHQoLTUsNSw1LC01LC41LDUwMCkpfX15OXQucHJvdG90eXBlLmlzRGlyZWN0aW9uYWxMaWdodFNoYWRvdz0hMDtjbGFzcyB2OXQgZXh0ZW5kcyBvOXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iRGlyZWN0aW9uYWxMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KGtRdC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IGtRdCx0aGlzLnNoYWRvdz1uZXcgeTl0fWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnRhcmdldD10LnRhcmdldC5jbG9uZSgpLHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319djl0LnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7Y2xhc3MgYjl0IGV4dGVuZHMgbzl0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fWI5dC5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHQ9ITA7Y2xhc3MgeDl0IGV4dGVuZHMgbzl0e2NvbnN0cnVjdG9yKHQsZSxuPTEwLGk9MTApe3N1cGVyKHQsZSksdGhpcy50eXBlPSJSZWN0QXJlYUxpZ2h0Iix0aGlzLndpZHRoPW4sdGhpcy5oZWlnaHQ9aX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Qud2lkdGg9dGhpcy53aWR0aCxlLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQsZX19eDl0LnByb3RvdHlwZS5pc1JlY3RBcmVhTGlnaHQ9ITA7Y2xhc3Mgdzl0e2NvbnN0cnVjdG9yKCl7dGhpcy5jb2VmZmljaWVudHM9W107Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50cy5wdXNoKG5ldyBDSnQpfXNldCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmNvcHkodFtlXSk7cmV0dXJuIHRoaXN9emVybygpe2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHNbdF0uc2V0KDAsMCwwKTtyZXR1cm4gdGhpc31nZXRBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56LG89dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShvWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KSxlLmFkZFNjYWxlZFZlY3RvcihvWzFdLC40ODg2MDMqaSksZS5hZGRTY2FsZWRWZWN0b3Iob1syXSwuNDg4NjAzKnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bM10sLjQ4ODYwMypuKSxlLmFkZFNjYWxlZFZlY3RvcihvWzRdLG4qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3Iob1s1XSxpKnIqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNl0sLjMxNTM5MiooMypyKnItMSkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bN10sbipyKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC41NDYyNzQqKG4qbi1pKmkpKSxlfWdldElycmFkaWFuY2VBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56LG89dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShvWzBdKS5tdWx0aXBseVNjYWxhciguODg2MjI3KSxlLmFkZFNjYWxlZFZlY3RvcihvWzFdLDEuMDIzMzI4KmkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMl0sMS4wMjMzMjgqciksZS5hZGRTY2FsZWRWZWN0b3Iob1szXSwxLjAyMzMyOCpuKSxlLmFkZFNjYWxlZFZlY3RvcihvWzRdLC44NTgwODYqbippKSxlLmFkZFNjYWxlZFZlY3RvcihvWzVdLC44NTgwODYqaSpyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzZdLC43NDMxMjUqcipyLS4yNDc3MDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bN10sLjg1ODA4NipuKnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bOF0sLjQyOTA0MyoobipuLWkqaSkpLGV9YWRkKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uYWRkKHQuY29lZmZpY2llbnRzW2VdKTtyZXR1cm4gdGhpc31hZGRTY2FsZWRTSCh0LGUpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0uYWRkU2NhbGVkVmVjdG9yKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfXNjYWxlKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0ubXVsdGlwbHlTY2FsYXIodCk7cmV0dXJuIHRoaXN9bGVycCh0LGUpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0ubGVycCh0LmNvZWZmaWNpZW50c1tuXSxlKTtyZXR1cm4gdGhpc31lcXVhbHModCl7Zm9yKGxldCBlPTA7ZTw5O2UrKylpZighdGhpcy5jb2VmZmljaWVudHNbZV0uZXF1YWxzKHQuY29lZmZpY2llbnRzW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1jb3B5KHQpe3JldHVybiB0aGlzLnNldCh0LmNvZWZmaWNpZW50cyl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9ZnJvbUFycmF5KHQsZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgaT0wO2k8OTtpKyspbltpXS5mcm9tQXJyYXkodCxlKzMqaSk7cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKW5baV0udG9BcnJheSh0LGUrMyppKTtyZXR1cm4gdH1zdGF0aWMgZ2V0QmFzaXNBdCh0LGUpe2NvbnN0IG49dC54LGk9dC55LHI9dC56O2VbMF09LjI4MjA5NSxlWzFdPS40ODg2MDMqaSxlWzJdPS40ODg2MDMqcixlWzNdPS40ODg2MDMqbixlWzRdPTEuMDkyNTQ4Km4qaSxlWzVdPTEuMDkyNTQ4KmkqcixlWzZdPS4zMTUzOTIqKDMqcipyLTEpLGVbN109MS4wOTI1NDgqbipyLGVbOF09LjU0NjI3NCoobipuLWkqaSl9fXc5dC5wcm90b3R5cGUuaXNTcGhlcmljYWxIYXJtb25pY3MzPSEwO2NsYXNzIFM5dCBleHRlbmRzIG85dHtjb25zdHJ1Y3Rvcih0PW5ldyB3OXQsZT0xKXtzdXBlcih2b2lkIDAsZSksdGhpcy5zaD10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zaC5jb3B5KHQuc2gpLHRoaXN9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5zaD10aGlzLnNoLnRvQXJyYXkoKSxlfX1TOXQucHJvdG90eXBlLmlzTGlnaHRQcm9iZT0hMDtjbGFzcyBNOXQgZXh0ZW5kcyAkNnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50ZXh0dXJlcz17fX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBaNnQoci5tYW5hZ2VyKTtvLnNldFBhdGgoci5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIoci5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3RyeXtlKHIucGFyc2UoSlNPTi5wYXJzZShuKSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX1wYXJzZSh0KXtjb25zdCBlPXRoaXMudGV4dHVyZXM7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdm9pZCAwPT09ZVt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbExvYWRlcjogVW5kZWZpbmVkIHRleHR1cmUiLHQpLGVbdF19Y29uc3QgaT1uZXcgTDZ0W3QudHlwZV07aWYodm9pZCAwIT09dC51dWlkJiYoaS51dWlkPXQudXVpZCksdm9pZCAwIT09dC5uYW1lJiYoaS5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5jb2xvciYmdm9pZCAwIT09aS5jb2xvciYmaS5jb2xvci5zZXRIZXgodC5jb2xvciksdm9pZCAwIT09dC5yb3VnaG5lc3MmJihpLnJvdWdobmVzcz10LnJvdWdobmVzcyksdm9pZCAwIT09dC5tZXRhbG5lc3MmJihpLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyksdm9pZCAwIT09dC5zaGVlbiYmKGkuc2hlZW49KG5ldyAkUXQpLnNldEhleCh0LnNoZWVuKSksdm9pZCAwIT09dC5lbWlzc2l2ZSYmdm9pZCAwIT09aS5lbWlzc2l2ZSYmaS5lbWlzc2l2ZS5zZXRIZXgodC5lbWlzc2l2ZSksdm9pZCAwIT09dC5zcGVjdWxhciYmdm9pZCAwIT09aS5zcGVjdWxhciYmaS5zcGVjdWxhci5zZXRIZXgodC5zcGVjdWxhciksdm9pZCAwIT09dC5zcGVjdWxhckludGVuc2l0eSYmKGkuc3BlY3VsYXJJbnRlbnNpdHk9dC5zcGVjdWxhckludGVuc2l0eSksdm9pZCAwIT09dC5zcGVjdWxhclRpbnQmJnZvaWQgMCE9PWkuc3BlY3VsYXJUaW50JiZpLnNwZWN1bGFyVGludC5zZXRIZXgodC5zcGVjdWxhclRpbnQpLHZvaWQgMCE9PXQuc2hpbmluZXNzJiYoaS5zaGluaW5lc3M9dC5zaGluaW5lc3MpLHZvaWQgMCE9PXQuY2xlYXJjb2F0JiYoaS5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Um91Z2huZXNzJiYoaS5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MpLHZvaWQgMCE9PXQudHJhbnNtaXNzaW9uJiYoaS50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24pLHZvaWQgMCE9PXQudGhpY2tuZXNzJiYoaS50aGlja25lc3M9dC50aGlja25lc3MpLHZvaWQgMCE9PXQuYXR0ZW51YXRpb25EaXN0YW5jZSYmKGkuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UpLHZvaWQgMCE9PXQuYXR0ZW51YXRpb25UaW50JiZ2b2lkIDAhPT1pLmF0dGVudWF0aW9uVGludCYmaS5hdHRlbnVhdGlvblRpbnQuc2V0SGV4KHQuYXR0ZW51YXRpb25UaW50KSx2b2lkIDAhPT10LmZvZyYmKGkuZm9nPXQuZm9nKSx2b2lkIDAhPT10LmZsYXRTaGFkaW5nJiYoaS5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nKSx2b2lkIDAhPT10LmJsZW5kaW5nJiYoaS5ibGVuZGluZz10LmJsZW5kaW5nKSx2b2lkIDAhPT10LmNvbWJpbmUmJihpLmNvbWJpbmU9dC5jb21iaW5lKSx2b2lkIDAhPT10LnNpZGUmJihpLnNpZGU9dC5zaWRlKSx2b2lkIDAhPT10LnNoYWRvd1NpZGUmJihpLnNoYWRvd1NpZGU9dC5zaGFkb3dTaWRlKSx2b2lkIDAhPT10Lm9wYWNpdHkmJihpLm9wYWNpdHk9dC5vcGFjaXR5KSx2b2lkIDAhPT10LnRyYW5zcGFyZW50JiYoaS50cmFuc3BhcmVudD10LnRyYW5zcGFyZW50KSx2b2lkIDAhPT10LmFscGhhVGVzdCYmKGkuYWxwaGFUZXN0PXQuYWxwaGFUZXN0KSx2b2lkIDAhPT10LmRlcHRoVGVzdCYmKGkuZGVwdGhUZXN0PXQuZGVwdGhUZXN0KSx2b2lkIDAhPT10LmRlcHRoV3JpdGUmJihpLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlKSx2b2lkIDAhPT10LmNvbG9yV3JpdGUmJihpLmNvbG9yV3JpdGU9dC5jb2xvcldyaXRlKSx2b2lkIDAhPT10LnN0ZW5jaWxXcml0ZSYmKGkuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlKSx2b2lkIDAhPT10LnN0ZW5jaWxXcml0ZU1hc2smJihpLnN0ZW5jaWxXcml0ZU1hc2s9dC5zdGVuY2lsV3JpdGVNYXNrKSx2b2lkIDAhPT10LnN0ZW5jaWxGdW5jJiYoaS5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jKSx2b2lkIDAhPT10LnN0ZW5jaWxSZWYmJihpLnN0ZW5jaWxSZWY9dC5zdGVuY2lsUmVmKSx2b2lkIDAhPT10LnN0ZW5jaWxGdW5jTWFzayYmKGkuc3RlbmNpbEZ1bmNNYXNrPXQuc3RlbmNpbEZ1bmNNYXNrKSx2b2lkIDAhPT10LnN0ZW5jaWxGYWlsJiYoaS5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsKSx2b2lkIDAhPT10LnN0ZW5jaWxaRmFpbCYmKGkuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsKSx2b2lkIDAhPT10LnN0ZW5jaWxaUGFzcyYmKGkuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzKSx2b2lkIDAhPT10LndpcmVmcmFtZSYmKGkud2lyZWZyYW1lPXQud2lyZWZyYW1lKSx2b2lkIDAhPT10LndpcmVmcmFtZUxpbmV3aWR0aCYmKGkud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoKSx2b2lkIDAhPT10LndpcmVmcmFtZUxpbmVjYXAmJihpLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwKSx2b2lkIDAhPT10LndpcmVmcmFtZUxpbmVqb2luJiYoaS53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luKSx2b2lkIDAhPT10LnJvdGF0aW9uJiYoaS5yb3RhdGlvbj10LnJvdGF0aW9uKSwxIT09dC5saW5ld2lkdGgmJihpLmxpbmV3aWR0aD10LmxpbmV3aWR0aCksdm9pZCAwIT09dC5kYXNoU2l6ZSYmKGkuZGFzaFNpemU9dC5kYXNoU2l6ZSksdm9pZCAwIT09dC5nYXBTaXplJiYoaS5nYXBTaXplPXQuZ2FwU2l6ZSksdm9pZCAwIT09dC5zY2FsZSYmKGkuc2NhbGU9dC5zY2FsZSksdm9pZCAwIT09dC5wb2x5Z29uT2Zmc2V0JiYoaS5wb2x5Z29uT2Zmc2V0PXQucG9seWdvbk9mZnNldCksdm9pZCAwIT09dC5wb2x5Z29uT2Zmc2V0RmFjdG9yJiYoaS5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvciksdm9pZCAwIT09dC5wb2x5Z29uT2Zmc2V0VW5pdHMmJihpLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyksdm9pZCAwIT09dC5kaXRoZXJpbmcmJihpLmRpdGhlcmluZz10LmRpdGhlcmluZyksdm9pZCAwIT09dC5hbHBoYVRvQ292ZXJhZ2UmJihpLmFscGhhVG9Db3ZlcmFnZT10LmFscGhhVG9Db3ZlcmFnZSksdm9pZCAwIT09dC5wcmVtdWx0aXBsaWVkQWxwaGEmJihpLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSksdm9pZCAwIT09dC52aXNpYmxlJiYoaS52aXNpYmxlPXQudmlzaWJsZSksdm9pZCAwIT09dC50b25lTWFwcGVkJiYoaS50b25lTWFwcGVkPXQudG9uZU1hcHBlZCksdm9pZCAwIT09dC51c2VyRGF0YSYmKGkudXNlckRhdGE9dC51c2VyRGF0YSksdm9pZCAwIT09dC52ZXJ0ZXhDb2xvcnMmJihpLnZlcnRleENvbG9ycz0ibnVtYmVyIj09dHlwZW9mIHQudmVydGV4Q29sb3JzP3QudmVydGV4Q29sb3JzPjA6dC52ZXJ0ZXhDb2xvcnMpLHZvaWQgMCE9PXQudW5pZm9ybXMpZm9yKGNvbnN0IGUgaW4gdC51bmlmb3Jtcyl7Y29uc3Qgcj10LnVuaWZvcm1zW2VdO3N3aXRjaChpLnVuaWZvcm1zW2VdPXt9LHIudHlwZSl7Y2FzZSJ0IjppLnVuaWZvcm1zW2VdLnZhbHVlPW4oci52YWx1ZSk7YnJlYWs7Y2FzZSJjIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgJFF0KS5zZXRIZXgoci52YWx1ZSk7YnJlYWs7Y2FzZSJ2MiI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IG1KdCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UidjMiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBDSnQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlInY0IjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgd0p0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJtMyI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IGdKdCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UibTQiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyByUXQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztkZWZhdWx0OmkudW5pZm9ybXNbZV0udmFsdWU9ci52YWx1ZX19aWYodm9pZCAwIT09dC5kZWZpbmVzJiYoaS5kZWZpbmVzPXQuZGVmaW5lcyksdm9pZCAwIT09dC52ZXJ0ZXhTaGFkZXImJihpLnZlcnRleFNoYWRlcj10LnZlcnRleFNoYWRlciksdm9pZCAwIT09dC5mcmFnbWVudFNoYWRlciYmKGkuZnJhZ21lbnRTaGFkZXI9dC5mcmFnbWVudFNoYWRlciksdm9pZCAwIT09dC5leHRlbnNpb25zKWZvcihjb25zdCBlIGluIHQuZXh0ZW5zaW9ucylpLmV4dGVuc2lvbnNbZV09dC5leHRlbnNpb25zW2VdO2lmKHZvaWQgMCE9PXQuc2hhZGluZyYmKGkuZmxhdFNoYWRpbmc9MT09PXQuc2hhZGluZyksdm9pZCAwIT09dC5zaXplJiYoaS5zaXplPXQuc2l6ZSksdm9pZCAwIT09dC5zaXplQXR0ZW51YXRpb24mJihpLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbiksdm9pZCAwIT09dC5tYXAmJihpLm1hcD1uKHQubWFwKSksdm9pZCAwIT09dC5tYXRjYXAmJihpLm1hdGNhcD1uKHQubWF0Y2FwKSksdm9pZCAwIT09dC5hbHBoYU1hcCYmKGkuYWxwaGFNYXA9bih0LmFscGhhTWFwKSksdm9pZCAwIT09dC5idW1wTWFwJiYoaS5idW1wTWFwPW4odC5idW1wTWFwKSksdm9pZCAwIT09dC5idW1wU2NhbGUmJihpLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSksdm9pZCAwIT09dC5ub3JtYWxNYXAmJihpLm5vcm1hbE1hcD1uKHQubm9ybWFsTWFwKSksdm9pZCAwIT09dC5ub3JtYWxNYXBUeXBlJiYoaS5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSksdm9pZCAwIT09dC5ub3JtYWxTY2FsZSl7bGV0IGU9dC5ub3JtYWxTY2FsZTshMT09PUFycmF5LmlzQXJyYXkoZSkmJihlPVtlLGVdKSxpLm5vcm1hbFNjYWxlPShuZXcgbUp0KS5mcm9tQXJyYXkoZSl9cmV0dXJuIHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50TWFwJiYoaS5kaXNwbGFjZW1lbnRNYXA9bih0LmRpc3BsYWNlbWVudE1hcCkpLHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50U2NhbGUmJihpLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUpLHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50QmlhcyYmKGkuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMpLHZvaWQgMCE9PXQucm91Z2huZXNzTWFwJiYoaS5yb3VnaG5lc3NNYXA9bih0LnJvdWdobmVzc01hcCkpLHZvaWQgMCE9PXQubWV0YWxuZXNzTWFwJiYoaS5tZXRhbG5lc3NNYXA9bih0Lm1ldGFsbmVzc01hcCkpLHZvaWQgMCE9PXQuZW1pc3NpdmVNYXAmJihpLmVtaXNzaXZlTWFwPW4odC5lbWlzc2l2ZU1hcCkpLHZvaWQgMCE9PXQuZW1pc3NpdmVJbnRlbnNpdHkmJihpLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHkpLHZvaWQgMCE9PXQuc3BlY3VsYXJNYXAmJihpLnNwZWN1bGFyTWFwPW4odC5zcGVjdWxhck1hcCkpLHZvaWQgMCE9PXQuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJihpLnNwZWN1bGFySW50ZW5zaXR5TWFwPW4odC5zcGVjdWxhckludGVuc2l0eU1hcCkpLHZvaWQgMCE9PXQuc3BlY3VsYXJUaW50TWFwJiYoaS5zcGVjdWxhclRpbnRNYXA9bih0LnNwZWN1bGFyVGludE1hcCkpLHZvaWQgMCE9PXQuZW52TWFwJiYoaS5lbnZNYXA9bih0LmVudk1hcCkpLHZvaWQgMCE9PXQuZW52TWFwSW50ZW5zaXR5JiYoaS5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQucmVmbGVjdGl2aXR5JiYoaS5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXQucmVmcmFjdGlvblJhdGlvJiYoaS5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8pLHZvaWQgMCE9PXQubGlnaHRNYXAmJihpLmxpZ2h0TWFwPW4odC5saWdodE1hcCkpLHZvaWQgMCE9PXQubGlnaHRNYXBJbnRlbnNpdHkmJihpLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQuYW9NYXAmJihpLmFvTWFwPW4odC5hb01hcCkpLHZvaWQgMCE9PXQuYW9NYXBJbnRlbnNpdHkmJihpLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQuZ3JhZGllbnRNYXAmJihpLmdyYWRpZW50TWFwPW4odC5ncmFkaWVudE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0TWFwJiYoaS5jbGVhcmNvYXRNYXA9bih0LmNsZWFyY29hdE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYoaS5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bih0LmNsZWFyY29hdFJvdWdobmVzc01hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Tm9ybWFsTWFwJiYoaS5jbGVhcmNvYXROb3JtYWxNYXA9bih0LmNsZWFyY29hdE5vcm1hbE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUmJihpLmNsZWFyY29hdE5vcm1hbFNjYWxlPShuZXcgbUp0KS5mcm9tQXJyYXkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSkpLHZvaWQgMCE9PXQudHJhbnNtaXNzaW9uTWFwJiYoaS50cmFuc21pc3Npb25NYXA9bih0LnRyYW5zbWlzc2lvbk1hcCkpLHZvaWQgMCE9PXQudGhpY2tuZXNzTWFwJiYoaS50aGlja25lc3NNYXA9bih0LnRoaWNrbmVzc01hcCkpLGl9c2V0VGV4dHVyZXModCl7cmV0dXJuIHRoaXMudGV4dHVyZXM9dCx0aGlzfX1jbGFzcyBFOXR7c3RhdGljIGRlY29kZVRleHQodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2RlcilyZXR1cm4obmV3IFRleHREZWNvZGVyKS5kZWNvZGUodCk7bGV0IGU9IiI7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUodFtuXSk7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX1jYXRjaCh0KXtyZXR1cm4gZX19c3RhdGljIGV4dHJhY3RVcmxCYXNlKHQpe2NvbnN0IGU9dC5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09ZT8iLi8iOnQuc3Vic3RyKDAsZSsxKX19Y2xhc3MgVDl0IGV4dGVuZHMgYjF0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluc3RhbmNlQ291bnQ9MS8wfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZUNvdW50PXQuaW5zdGFuY2VDb3VudCx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKHRoaXMpO3JldHVybiB0Lmluc3RhbmNlQ291bnQ9dGhpcy5pbnN0YW5jZUNvdW50LHQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMCx0fX1UOXQucHJvdG90eXBlLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITA7Y2xhc3MgQzl0IGV4dGVuZHMgUVF0e2NvbnN0cnVjdG9yKHQsZSxuLGk9MSl7Im51bWJlciI9PXR5cGVvZiBuJiYoaT1uLG49ITEsY29uc29sZS5lcnJvcigiVEhSRUUuSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgbm9ybWFsaXplZCBhcyB0aGUgdGhpcmQgYXJndW1lbnQuIikpLHN1cGVyKHQsZSxuKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9aX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0Lm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLHQuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITAsdH19Qzl0LnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBBOXQgZXh0ZW5kcyAkNnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgWjZ0KHIubWFuYWdlcik7by5zZXRQYXRoKHIucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHIucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9cGFyc2UodCl7Y29uc3QgZT17fSxuPXt9O2Z1bmN0aW9uIGkodCxpKXtpZih2b2lkIDAhPT1lW2ldKXJldHVybiBlW2ldO2NvbnN0IHI9dC5pbnRlcmxlYXZlZEJ1ZmZlcnNbaV0sbz0oZnVuY3Rpb24gYSh0LGUpe2lmKHZvaWQgMCE9PW5bZV0pcmV0dXJuIG5bZV07Y29uc3QgaT1uZXcgVWludDMyQXJyYXkodC5hcnJheUJ1ZmZlcnNbZV0pLmJ1ZmZlcjtyZXR1cm4gbltlXT1pLGl9KSh0LHIuYnVmZmVyKSxzPWQxdChyLnR5cGUsbyksbD1uZXcgJDV0KHMsci5zdHJpZGUpO3JldHVybiBsLnV1aWQ9ci51dWlkLGVbaV09bCxsfWNvbnN0IHI9dC5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5P25ldyBUOXQ6bmV3IGIxdCxvPXQuZGF0YS5pbmRleDtpZih2b2lkIDAhPT1vKXtjb25zdCB0PWQxdChvLnR5cGUsby5hcnJheSk7ci5zZXRJbmRleChuZXcgUVF0KHQsMSkpfWNvbnN0IGE9dC5kYXRhLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGUgaW4gYSl7Y29uc3Qgbj1hW2VdO2xldCBvO2lmKG4uaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3QgZT1pKHQuZGF0YSxuLmRhdGEpO289bmV3IFo1dChlLG4uaXRlbVNpemUsbi5vZmZzZXQsbi5ub3JtYWxpemVkKX1lbHNle2NvbnN0IHQ9ZDF0KG4udHlwZSxuLmFycmF5KTtvPW5ldyhuLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlP0M5dDpRUXQpKHQsbi5pdGVtU2l6ZSxuLm5vcm1hbGl6ZWQpfXZvaWQgMCE9PW4ubmFtZSYmKG8ubmFtZT1uLm5hbWUpLHZvaWQgMCE9PW4udXNhZ2UmJm8uc2V0VXNhZ2Uobi51c2FnZSksdm9pZCAwIT09bi51cGRhdGVSYW5nZSYmKG8udXBkYXRlUmFuZ2Uub2Zmc2V0PW4udXBkYXRlUmFuZ2Uub2Zmc2V0LG8udXBkYXRlUmFuZ2UuY291bnQ9bi51cGRhdGVSYW5nZS5jb3VudCksci5zZXRBdHRyaWJ1dGUoZSxvKX1jb25zdCBzPXQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM7aWYocylmb3IoY29uc3QgZSBpbiBzKXtjb25zdCBuPXNbZV0sbz1bXTtmb3IobGV0IGU9MCxyPW4ubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9bltlXTtsZXQgYTtpZihyLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IGU9aSh0LmRhdGEsci5kYXRhKTthPW5ldyBaNXQoZSxyLml0ZW1TaXplLHIub2Zmc2V0LHIubm9ybWFsaXplZCl9ZWxzZXtjb25zdCB0PWQxdChyLnR5cGUsci5hcnJheSk7YT1uZXcgUVF0KHQsci5pdGVtU2l6ZSxyLm5vcm1hbGl6ZWQpfXZvaWQgMCE9PXIubmFtZSYmKGEubmFtZT1yLm5hbWUpLG8ucHVzaChhKX1yLm1vcnBoQXR0cmlidXRlc1tlXT1vfXQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZSYmKHIubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITApO2NvbnN0IGw9dC5kYXRhLmdyb3Vwc3x8dC5kYXRhLmRyYXdjYWxsc3x8dC5kYXRhLm9mZnNldHM7aWYodm9pZCAwIT09bClmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3QhPT1lOysrdCl7Y29uc3QgZT1sW3RdO3IuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3QgYz10LmRhdGEuYm91bmRpbmdTcGhlcmU7aWYodm9pZCAwIT09Yyl7Y29uc3QgdD1uZXcgQ0p0O3ZvaWQgMCE9PWMuY2VudGVyJiZ0LmZyb21BcnJheShjLmNlbnRlciksci5ib3VuZGluZ1NwaGVyZT1uZXcgJEp0KHQsYy5yYWRpdXMpfXJldHVybiB0Lm5hbWUmJihyLm5hbWU9dC5uYW1lKSx0LnVzZXJEYXRhJiYoci51c2VyRGF0YT10LnVzZXJEYXRhKSxyfX1jb25zdCBrOXQ9e1VWTWFwcGluZzpVS3QsQ3ViZVJlZmxlY3Rpb25NYXBwaW5nOmpLdCxDdWJlUmVmcmFjdGlvbk1hcHBpbmc6R0t0LEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nOldLdCxFcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZzpxS3QsQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmc6WUt0LEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOlhLdH0sTDl0PXtSZXBlYXRXcmFwcGluZzokS3QsQ2xhbXBUb0VkZ2VXcmFwcGluZzpLS3QsTWlycm9yZWRSZXBlYXRXcmFwcGluZzpaS3R9LFA5dD17TmVhcmVzdEZpbHRlcjpKS3QsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6UUt0LE5lYXJlc3RNaXBtYXBMaW5lYXJGaWx0ZXI6dFp0LExpbmVhckZpbHRlcjplWnQsTGluZWFyTWlwbWFwTmVhcmVzdEZpbHRlcjpuWnQsTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyOmladH07Y2xhc3MgTjl0IGV4dGVuZHMgJDZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLCJ1bmRlZmluZWQiPT10eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGNyZWF0ZUltYWdlQml0bWFwKCkgbm90IHN1cHBvcnRlZC4iKSwidW5kZWZpbmVkIj09dHlwZW9mIGZldGNoJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBmZXRjaCgpIG5vdCBzdXBwb3J0ZWQuIiksdGhpcy5vcHRpb25zPXtwcmVtdWx0aXBseUFscGhhOiJub25lIn19c2V0T3B0aW9ucyh0KXtyZXR1cm4gdGhpcy5vcHRpb25zPXQsdGhpc31sb2FkKHQsZSxuLGkpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IHI9dGhpcyxvPXE2dC5nZXQodCk7aWYodm9pZCAwIT09bylyZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJmUobyksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxvO2NvbnN0IGE9e307YS5jcmVkZW50aWFscz0iYW5vbnltb3VzIj09PXRoaXMuY3Jvc3NPcmlnaW4/InNhbWUtb3JpZ2luIjoiaW5jbHVkZSIsYS5oZWFkZXJzPXRoaXMucmVxdWVzdEhlYWRlcixmZXRjaCh0LGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJsb2IoKX0pKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAodCxPYmplY3QuYXNzaWduKHIub3B0aW9ucyx7Y29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSkpfSkpLnRoZW4oKGZ1bmN0aW9uKG4pe3E2dC5hZGQodCxuKSxlJiZlKG4pLHIubWFuYWdlci5pdGVtRW5kKHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtpJiZpKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSksci5tYW5hZ2VyLml0ZW1TdGFydCh0KX19Tjl0LnByb3RvdHlwZS5pc0ltYWdlQml0bWFwTG9hZGVyPSEwO2NsYXNzIEk5dHtjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iU2hhcGVQYXRoIix0aGlzLmNvbG9yPW5ldyAkUXQsdGhpcy5zdWJQYXRocz1bXSx0aGlzLmN1cnJlbnRQYXRoPW51bGx9bW92ZVRvKHQsZSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGg9bmV3IGk5dCx0aGlzLnN1YlBhdGhzLnB1c2godGhpcy5jdXJyZW50UGF0aCksdGhpcy5jdXJyZW50UGF0aC5tb3ZlVG8odCxlKSx0aGlzfWxpbmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmxpbmVUbyh0LGUpLHRoaXN9cXVhZHJhdGljQ3VydmVUbyh0LGUsbixpKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxuLGkpLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGguYmV6aWVyQ3VydmVUbyh0LGUsbixpLHIsbyksdGhpc31zcGxpbmVUaHJ1KHQpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLnNwbGluZVRocnUodCksdGhpc310b1NoYXBlcyh0LGUpe2Z1bmN0aW9uIG4odCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXSxyPW5ldyByOXQ7ci5jdXJ2ZXM9aS5jdXJ2ZXMsZS5wdXNoKHIpfXJldHVybiBlfWZ1bmN0aW9uIGkodCxlKXtjb25zdCBuPWUubGVuZ3RoO2xldCBpPSExO2ZvcihsZXQgcj1uLTEsbz0wO288bjtyPW8rKyl7bGV0IG49ZVtyXSxhPWVbb10scz1hLngtbi54LGw9YS55LW4ueTtpZihNYXRoLmFicyhsKT5OdW1iZXIuRVBTSUxPTil7aWYobDwwJiYobj1lW29dLHM9LXMsYT1lW3JdLGw9LWwpLHQueTxuLnl8fHQueT5hLnkpY29udGludWU7aWYodC55PT09bi55KXtpZih0Lng9PT1uLngpcmV0dXJuITB9ZWxzZXtjb25zdCBlPWwqKHQueC1uLngpLXMqKHQueS1uLnkpO2lmKDA9PT1lKXJldHVybiEwO2lmKGU8MCljb250aW51ZTtpPSFpfX1lbHNle2lmKHQueSE9PW4ueSljb250aW51ZTtpZihhLng8PXQueCYmdC54PD1uLnh8fG4ueDw9dC54JiZ0Lng8PWEueClyZXR1cm4hMH19cmV0dXJuIGl9Y29uc3Qgcj1lNnQuaXNDbG9ja1dpc2Usbz10aGlzLnN1YlBhdGhzO2lmKDA9PT1vLmxlbmd0aClyZXR1cm5bXTtpZighMD09PWUpcmV0dXJuIG4obyk7bGV0IGEscyxsO2NvbnN0IGM9W107aWYoMT09PW8ubGVuZ3RoKXJldHVybiBzPW9bMF0sbD1uZXcgcjl0LGwuY3VydmVzPXMuY3VydmVzLGMucHVzaChsKSxjO2xldCB1PSFyKG9bMF0uZ2V0UG9pbnRzKCkpO3U9dD8hdTp1O2NvbnN0IGg9W10sZD1bXTtsZXQgcCxmLG09W10sZz0wO2RbZ109dm9pZCAwLG1bZ109W107Zm9yKGxldCBlPTAsbj1vLmxlbmd0aDtlPG47ZSsrKXM9b1tlXSxwPXMuZ2V0UG9pbnRzKCksYT1yKHApLGE9dD8hYTphLGE/KCF1JiZkW2ddJiZnKyssZFtnXT17czpuZXcgcjl0LHA6cH0sZFtnXS5zLmN1cnZlcz1zLmN1cnZlcyx1JiZnKyssbVtnXT1bXSk6bVtnXS5wdXNoKHtoOnMscDpwWzBdfSk7aWYoIWRbMF0pcmV0dXJuIG4obyk7aWYoZC5sZW5ndGg+MSl7bGV0IHQ9ITE7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxlPWQubGVuZ3RoO3Q8ZTt0KyspaFt0XT1bXTtmb3IobGV0IG49MCxyPWQubGVuZ3RoO248cjtuKyspe2NvbnN0IHI9bVtuXTtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7Y29uc3QgYT1yW29dO2xldCBzPSEwO2ZvcihsZXQgcj0wO3I8ZC5sZW5ndGg7cisrKWkoYS5wLGRbcl0ucCkmJihuIT09ciYmZS5wdXNoKHtmcm9tczpuLHRvczpyLGhvbGU6b30pLHM/KHM9ITEsaFtyXS5wdXNoKGEpKTp0PSEwKTtzJiZoW25dLnB1c2goYSl9fWUubGVuZ3RoPjAmJih0fHwobT1oKSl9Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKXtsPWRbdF0ucyxjLnB1c2gobCksZj1tW3RdO2ZvcihsZXQgdD0wLGU9Zi5sZW5ndGg7dDxlO3QrKylsLmhvbGVzLnB1c2goZlt0XS5oKX1yZXR1cm4gY319Y2xhc3MgUjl0e2NvbnN0cnVjdG9yKHQpe3RoaXMudHlwZT0iRm9udCIsdGhpcy5kYXRhPXR9Z2VuZXJhdGVTaGFwZXModCxlPTEwMCl7Y29uc3Qgbj1bXSxpPShmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBpPUFycmF5LmZyb20odCkscj1lL24ucmVzb2x1dGlvbixvPShuLmJvdW5kaW5nQm94LnlNYXgtbi5ib3VuZGluZ0JveC55TWluK24udW5kZXJsaW5lVGhpY2tuZXNzKSpyLGE9W107bGV0IHM9MCxsPTA7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XTtpZigiXG4iPT09ZSlzPTAsbC09bztlbHNle2NvbnN0IHQ9Tzl0KGUscixzLGwsbik7cys9dC5vZmZzZXRYLGEucHVzaCh0LnBhdGgpfX1yZXR1cm4gYX0pKHQsZSx0aGlzLmRhdGEpO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShuLGlbdF0udG9TaGFwZXMoKSk7cmV0dXJuIG59fWZ1bmN0aW9uIE85dCh0LGUsbixpLHIpe2NvbnN0IG89ci5nbHlwaHNbdF18fHIuZ2x5cGhzWyI/Il07aWYoIW8pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcignVEhSRUUuRm9udDogY2hhcmFjdGVyICInK3QrJyIgZG9lcyBub3QgZXhpc3RzIGluIGZvbnQgZmFtaWx5ICcrci5mYW1pbHlOYW1lKyIuIik7Y29uc3QgYT1uZXcgSTl0O2xldCBzLGwsYyx1LGgsZCxwLGY7aWYoby5vKXtjb25zdCB0PW8uX2NhY2hlZE91dGxpbmV8fChvLl9jYWNoZWRPdXRsaW5lPW8uby5zcGxpdCgiICIpKTtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bzspc3dpdGNoKHRbcisrXSl7Y2FzZSJtIjpzPXRbcisrXSplK24sbD10W3IrK10qZStpLGEubW92ZVRvKHMsbCk7YnJlYWs7Y2FzZSJsIjpzPXRbcisrXSplK24sbD10W3IrK10qZStpLGEubGluZVRvKHMsbCk7YnJlYWs7Y2FzZSJxIjpjPXRbcisrXSplK24sdT10W3IrK10qZStpLGg9dFtyKytdKmUrbixkPXRbcisrXSplK2ksYS5xdWFkcmF0aWNDdXJ2ZVRvKGgsZCxjLHUpO2JyZWFrO2Nhc2UiYiI6Yz10W3IrK10qZStuLHU9dFtyKytdKmUraSxoPXRbcisrXSplK24sZD10W3IrK10qZStpLHA9dFtyKytdKmUrbixmPXRbcisrXSplK2ksYS5iZXppZXJDdXJ2ZVRvKGgsZCxwLGYsYyx1KX19cmV0dXJue29mZnNldFg6by5oYSplLHBhdGg6YX19bGV0IHo5dDtSOXQucHJvdG90eXBlLmlzRm9udD0hMDtjb25zdCBEOXQ9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09ejl0JiYoejl0PW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksejl0fSxzZXRDb250ZXh0OmZ1bmN0aW9uKHQpe3o5dD10fX07Y2xhc3MgQjl0IGV4dGVuZHMgJDZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IFo2dCh0aGlzLm1hbmFnZXIpO28uc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLG8uc2V0UGF0aCh0aGlzLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTtEOXQuZ2V0Q29udGV4dCgpLmRlY29kZUF1ZGlvRGF0YSh0LChmdW5jdGlvbih0KXtlKHQpfSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX19Y2xhc3MgSDl0IGV4dGVuZHMgUzl0e2NvbnN0cnVjdG9yKHQsZSxuPTEpe3N1cGVyKHZvaWQgMCxuKTtjb25zdCBpPShuZXcgJFF0KS5zZXQodCkscj0obmV3ICRRdCkuc2V0KGUpLG89bmV3IENKdChpLnIsaS5nLGkuYiksYT1uZXcgQ0p0KHIucixyLmcsci5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShvKS5hZGQoYSkubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShvKS5zdWIoYSkubXVsdGlwbHlTY2FsYXIobCl9fUg5dC5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHRQcm9iZT0hMDtjbGFzcyBGOXQgZXh0ZW5kcyBTOXR7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtjb25zdCBuPShuZXcgJFF0KS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KG4ucixuLmcsbi5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fUY5dC5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDtjb25zdCBWOXQ9bmV3IHJRdCxVOXQ9bmV3IHJRdDtjbGFzcyBqOXR7Y29uc3RydWN0b3IodD0hMCl7dGhpcy5hdXRvU3RhcnQ9dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT1HOXQoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7Y29uc3QgZT1HOXQoKTt0PShlLXRoaXMub2xkVGltZSkvMWUzLHRoaXMub2xkVGltZT1lLHRoaXMuZWxhcHNlZFRpbWUrPXR9cmV0dXJuIHR9fWZ1bmN0aW9uIEc5dCgpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpfWNvbnN0IFc5dD1uZXcgQ0p0LHE5dD1uZXcgVEp0LFk5dD1uZXcgQ0p0LFg5dD1uZXcgQ0p0O2NsYXNzICQ5dCBleHRlbmRzIGtRdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fWNvbnN0IEs5dD1uZXcgQ0p0LFo5dD1uZXcgVEp0LEo5dD1uZXcgQ0p0LFE5dD1uZXcgQ0p0O2NsYXNzIHQ4dHtjb25zdHJ1Y3Rvcih0LGU9MjA0OCl7dGhpcy5hbmFseXNlcj10LmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKSx0aGlzLmFuYWx5c2VyLmZmdFNpemU9ZSx0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCksdC5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWdldEZyZXF1ZW5jeURhdGEoKXtyZXR1cm4gdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGEpLHRoaXMuZGF0YX1nZXRBdmVyYWdlRnJlcXVlbmN5KCl7bGV0IHQ9MDtjb25zdCBlPXRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWVbbl07cmV0dXJuIHQvZS5sZW5ndGh9fWNsYXNzIGU4dHtjb25zdHJ1Y3Rvcih0LGUsbil7bGV0IGkscixvO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6aT10aGlzLl9zbGVycCxyPXRoaXMuX3NsZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6aT10aGlzLl9zZWxlY3Qscj10aGlzLl9zZWxlY3Qsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDppPXRoaXMuX2xlcnAscj10aGlzLl9sZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9cix0aGlzLl9zZXRJZGVudGl0eT1vLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfWFjY3VtdWxhdGUodCxlKXtjb25zdCBuPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUscj10KmkraTtsZXQgbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQ7aWYoMD09PW8pe2ZvcihsZXQgdD0wO3QhPT1pOysrdCluW3IrdF09blt0XTtvPWV9ZWxzZSBvKz1lLHRoaXMuX21peEJ1ZmZlclJlZ2lvbihuLHIsMCxlL28saSk7dGhpcy5jdW11bGF0aXZlV2VpZ2h0PW99YWNjdW11bGF0ZUFkZGl0aXZlKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxpPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsaSwwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9YXBwbHkodCl7Y29uc3QgZT10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLGk9dCplK2Uscj10aGlzLmN1bXVsYXRpdmVXZWlnaHQsbz10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxhPXRoaXMuYmluZGluZzt0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHI8MSYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSxlKnRoaXMuX29yaWdJbmRleCwxLXIsZSksbz4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShuLGksdGhpcy5fYWRkSW5kZXgqZSwxLGUpO2ZvcihsZXQgdD1lLHI9ZStlO3QhPT1yOysrdClpZihuW3RdIT09blt0K2VdKXthLnNldFZhbHVlKG4saSk7YnJlYWt9fXNhdmVPcmlnaW5hbFN0YXRlKCl7Y29uc3QgdD10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLG49ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5iaW5kaW5nLmdldFZhbHVlKHQsbik7Zm9yKGxldCBpPWUscj1uO2khPT1yOysraSl0W2ldPXRbbitpJWVdO3RoaXMuX3NldElkZW50aXR5KCksdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MH1yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLGU9dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IG49dDtuPGU7bisrKXRoaXMuYnVmZmVyW25dPTB9X3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uKCl7dGhpcy5fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKSx0aGlzLmJ1ZmZlclt0aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSszXT0xfV9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIoKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX1fc2VsZWN0KHQsZSxuLGkscil7aWYoaT49LjUpZm9yKGxldCBpPTA7aSE9PXI7KytpKXRbZStpXT10W24raV19X3NsZXJwKHQsZSxuLGkpe1RKdC5zbGVycEZsYXQodCxlLHQsZSx0LG4saSl9X3NsZXJwQWRkaXRpdmUodCxlLG4saSxyKXtjb25zdCBvPXRoaXMuX3dvcmtJbmRleCpyO1RKdC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LG8sdCxlLHQsbiksVEp0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxpKX1fbGVycCh0LGUsbixpLHIpe2NvbnN0IG89MS1pO2ZvcihsZXQgYT0wO2EhPT1yOysrYSl7Y29uc3Qgcj1lK2E7dFtyXT10W3JdKm8rdFtuK2FdKml9fV9sZXJwQWRkaXRpdmUodCxlLG4saSxyKXtmb3IobGV0IG89MDtvIT09cjsrK28pe2NvbnN0IHI9ZStvO3Rbcl09dFtyXSt0W24rb10qaX19fWNvbnN0IG44dD1uZXcgUmVnRXhwKCJbXFxbXFxdXFwuOlxcL10iLCJnIiksaTh0PSJbXlxcW1xcXVxcLjpcXC9dIixyOHQ9IlteIisiXFxbXFxdXFwuOlxcLyIucmVwbGFjZSgiXFwuIiwiIikrIl0iLG84dD0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLGk4dCksYTh0PS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLHI4dCksczh0PS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGk4dCksbDh0PS9cLihXQyspKD86XFsoLispXF0pPy8uc291cmNlLnJlcGxhY2UoIldDIixpOHQpLGM4dD1uZXcgUmVnRXhwKCJeIitvOHQrYTh0K3M4dCtsOHQrIiQiKSx1OHQ9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl07Y2xhc3MgaDh0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLnBhdGg9ZSx0aGlzLnBhcnNlZFBhdGg9bnx8aDh0LnBhcnNlVHJhY2tOYW1lKGUpLHRoaXMubm9kZT1oOHQuZmluZE5vZGUodCx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHx0LHRoaXMucm9vdE5vZGU9dCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfXN0YXRpYyBjcmVhdGUodCxlLG4pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IGg4dC5Db21wb3NpdGUodCxlLG4pOm5ldyBoOHQodCxlLG4pfXN0YXRpYyBzYW5pdGl6ZU5vZGVOYW1lKHQpe3JldHVybiB0LnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKG44dCwiIil9c3RhdGljIHBhcnNlVHJhY2tOYW1lKHQpe2NvbnN0IGU9Yzh0LmV4ZWModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IENhbm5vdCBwYXJzZSB0cmFja05hbWU6ICIrdCk7Y29uc3Qgbj17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LGk9bi5ub2RlTmFtZSYmbi5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHZvaWQgMCE9PWkmJi0xIT09aSl7Y29uc3QgdD1uLm5vZGVOYW1lLnN1YnN0cmluZyhpKzEpOy0xIT09dTh0LmluZGV4T2YodCkmJihuLm5vZGVOYW1lPW4ubm9kZU5hbWUuc3Vic3RyaW5nKDAsaSksbi5vYmplY3ROYW1lPXQpfWlmKG51bGw9PT1uLnByb3BlcnR5TmFtZXx8MD09PW4ucHJvcGVydHlOYW1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrdCk7cmV0dXJuIG59c3RhdGljIGZpbmROb2RlKHQsZSl7aWYoIWV8fCIiPT09ZXx8Ii4iPT09ZXx8LTE9PT1lfHxlPT09dC5uYW1lfHxlPT09dC51dWlkKXJldHVybiB0O2lmKHQuc2tlbGV0b24pe2NvbnN0IG49dC5za2VsZXRvbi5nZXRCb25lQnlOYW1lKGUpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59aWYodC5jaGlsZHJlbil7Y29uc3Qgbj1mdW5jdGlvbih0KXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcj10W2ldO2lmKHIubmFtZT09PWV8fHIudXVpZD09PWUpcmV0dXJuIHI7Y29uc3Qgbz1uKHIuY2hpbGRyZW4pO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9LGk9bih0LmNoaWxkcmVuKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfV9nZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fc2V0VmFsdWVfdW5hdmFpbGFibGUoKXt9X2dldFZhbHVlX2RpcmVjdCh0LGUpe3RbZV09dGhpcy5ub2RlW3RoaXMucHJvcGVydHlOYW1lXX1fZ2V0VmFsdWVfYXJyYXkodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSl0W2UrK109bltpXX1fZ2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dFtlXT10aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XX1fZ2V0VmFsdWVfdG9BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS50b0FycmF5KHQsZSl9X3NldFZhbHVlX2RpcmVjdCh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aSE9PXI7KytpKW5baV09dFtlKytdfV9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLHI9bi5sZW5ndGg7aSE9PXI7KytpKW5baV09dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBpPTAscj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXX1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKX1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9nZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5nZXRWYWx1ZSh0LGUpfV9zZXRWYWx1ZV91bmJvdW5kKHQsZSl7dGhpcy5iaW5kKCksdGhpcy5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtsZXQgdD10aGlzLm5vZGU7Y29uc3QgZT10aGlzLnBhcnNlZFBhdGgsbj1lLm9iamVjdE5hbWUsaT1lLnByb3BlcnR5TmFtZTtsZXQgcj1lLnByb3BlcnR5SW5kZXg7aWYodHx8KHQ9aDh0LmZpbmROb2RlKHRoaXMucm9vdE5vZGUsZS5ub2RlTmFtZSl8fHRoaXMucm9vdE5vZGUsdGhpcy5ub2RlPXQpLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5hdmFpbGFibGUsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZSwhdClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgbm9kZSBmb3IgdHJhY2s6ICIrdGhpcy5wYXRoKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iKTtpZihuKXtsZXQgaT1lLm9iamVjdEluZGV4O3N3aXRjaChuKXtjYXNlIm1hdGVyaWFscyI6aWYoIXQubWF0ZXJpYWwpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtpZighdC5tYXRlcmlhbC5tYXRlcmlhbHMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwubWF0ZXJpYWxzIGFzIG5vZGUubWF0ZXJpYWwgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFscyBhcnJheS4iLHRoaXMpO3Q9dC5tYXRlcmlhbC5tYXRlcmlhbHM7YnJlYWs7Y2FzZSJib25lcyI6aWYoIXQuc2tlbGV0b24pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gYm9uZXMgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgc2tlbGV0b24uIix0aGlzKTt0PXQuc2tlbGV0b24uYm9uZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5uYW1lPT09aSl7aT1lO2JyZWFrfWJyZWFrO2RlZmF1bHQ6aWYodm9pZCAwPT09dFtuXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7dD10W25dfWlmKHZvaWQgMCE9PWkpe2lmKHZvaWQgMD09PXRbaV0pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gYmluZCB0byBvYmplY3RJbmRleCBvZiBvYmplY3ROYW1lLCBidXQgaXMgdW5kZWZpbmVkLiIsdGhpcyx0KTt0PXRbaV19fWNvbnN0IG89dFtpXTtpZih2b2lkIDA9PT1vKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBwcm9wZXJ0eSBmb3IgdHJhY2s6ICIrZS5ub2RlTmFtZSsiLiIraSsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIix0KTtsZXQgYT10aGlzLlZlcnNpb25pbmcuTm9uZTt0aGlzLnRhcmdldE9iamVjdD10LHZvaWQgMCE9PXQubmVlZHNVcGRhdGU/YT10aGlzLlZlcnNpb25pbmcuTmVlZHNVcGRhdGU6dm9pZCAwIT09dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlJiYoYT10aGlzLlZlcnNpb25pbmcuTWF0cml4V29ybGROZWVkc1VwZGF0ZSk7bGV0IHM9dGhpcy5CaW5kaW5nVHlwZS5EaXJlY3Q7aWYodm9pZCAwIT09cil7aWYoIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyI9PT1pKXtpZighdC5nZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIG9uIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iLHRoaXMpO2lmKCF0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMuIix0aGlzKTt2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtyXSYmKHI9dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbcl0pfXM9dGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQsdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8sdGhpcy5wcm9wZXJ0eUluZGV4PXJ9ZWxzZSB2b2lkIDAhPT1vLmZyb21BcnJheSYmdm9pZCAwIT09by50b0FycmF5PyhzPXRoaXMuQmluZGluZ1R5cGUuSGFzRnJvbVRvQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8pOkFycmF5LmlzQXJyYXkobyk/KHM9dGhpcy5CaW5kaW5nVHlwZS5FbnRpcmVBcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9byk6dGhpcy5wcm9wZXJ0eU5hbWU9aTt0aGlzLmdldFZhbHVlPXRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVtzXSx0aGlzLnNldFZhbHVlPXRoaXMuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmdbc11bYV19dW5iaW5kKCl7dGhpcy5ub2RlPW51bGwsdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19aDh0LkNvbXBvc2l0ZT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbil7Y29uc3QgaT1ufHxoOHQucGFyc2VUcmFja05hbWUoZSk7dGhpcy5fdGFyZ2V0R3JvdXA9dCx0aGlzLl9iaW5kaW5ncz10LnN1YnNjcmliZV8oZSxpKX1nZXRWYWx1ZSh0LGUpe3RoaXMuYmluZCgpO2NvbnN0IG49dGhpcy5fYmluZGluZ3NbdGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfXTt2b2lkIDAhPT1uJiZuLmdldFZhbHVlKHQsZSl9c2V0VmFsdWUodCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgaT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18scj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXS5zZXRWYWx1ZSh0LGUpfWJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS5iaW5kKCl9dW5iaW5kKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0udW5iaW5kKCl9fSxoOHQucHJvdG90eXBlLkJpbmRpbmdUeXBlPXtEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9LGg4dC5wcm90b3R5cGUuVmVyc2lvbmluZz17Tm9uZTowLE5lZWRzVXBkYXRlOjEsTWF0cml4V29ybGROZWVkc1VwZGF0ZToyfSxoOHQucHJvdG90eXBlLkdldHRlckJ5QmluZGluZ1R5cGU9W2g4dC5wcm90b3R5cGUuX2dldFZhbHVlX2RpcmVjdCxoOHQucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheSxoOHQucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheUVsZW1lbnQsaDh0LnByb3RvdHlwZS5fZ2V0VmFsdWVfdG9BcnJheV0saDh0LnByb3RvdHlwZS5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZz1bW2g4dC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdCxoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUsaDh0LnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheSxoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSxoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbaDh0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50LGg4dC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSxoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW2g4dC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheSxoOHQucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUsaDh0LnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdXTtjbGFzcyBkOHR7Y29uc3RydWN0b3IoKXt0aGlzLnV1aWQ9WFp0KCksdGhpcy5fb2JqZWN0cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHRoaXMubkNhY2hlZE9iamVjdHNfPTA7Y29uc3QgdD17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPXQ7Zm9yKGxldCBlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2UhPT1uOysrZSl0W2FyZ3VtZW50c1tlXS51dWlkXT1lO3RoaXMuX3BhdGhzPVtdLHRoaXMuX3BhcnNlZFBhdGhzPVtdLHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTtjb25zdCBlPXRoaXM7dGhpcy5zdGF0cz17b2JqZWN0czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGUuX29iamVjdHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdGhpcy50b3RhbC1lLm5DYWNoZWRPYmplY3RzX319LGdldCBiaW5kaW5nc1Blck9iamVjdCgpe3JldHVybiBlLl9iaW5kaW5ncy5sZW5ndGh9fX1hZGQoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fcGF0aHMsaT10aGlzLl9wYXJzZWRQYXRocyxyPXRoaXMuX2JpbmRpbmdzLG89ci5sZW5ndGg7bGV0IGEscz10Lmxlbmd0aCxsPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgYz0wLHU9YXJndW1lbnRzLmxlbmd0aDtjIT09dTsrK2Mpe2NvbnN0IHU9YXJndW1lbnRzW2NdLGg9dS51dWlkO2xldCBkPWVbaF07aWYodm9pZCAwPT09ZCl7ZD1zKyssZVtoXT1kLHQucHVzaCh1KTtmb3IobGV0IHQ9MCxlPW87dCE9PWU7Kyt0KXJbdF0ucHVzaChuZXcgaDh0KHUsblt0XSxpW3RdKSl9ZWxzZSBpZihkPGwpe2E9dFtkXTtjb25zdCBzPS0tbCxjPXRbc107ZVtjLnV1aWRdPWQsdFtkXT1jLGVbaF09cyx0W3NdPXU7Zm9yKGxldCB0PTAsZT1vO3QhPT1lOysrdCl7Y29uc3QgZT1yW3RdO2xldCBvPWVbZF07ZVtkXT1lW3NdLHZvaWQgMD09PW8mJihvPW5ldyBoOHQodSxuW3RdLGlbdF0pKSxlW3NdPW99fWVsc2UgdFtkXSE9PWEmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189bH1yZW1vdmUoKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fYmluZGluZ3MsaT1uLmxlbmd0aDtsZXQgcj10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IG89MCxhPWFyZ3VtZW50cy5sZW5ndGg7byE9PWE7KytvKXtjb25zdCBhPWFyZ3VtZW50c1tvXSxzPWEudXVpZCxsPWVbc107aWYodm9pZCAwIT09bCYmbD49cil7Y29uc3Qgbz1yKyssYz10W29dO2VbYy51dWlkXT1sLHRbbF09YyxlW3NdPW8sdFtvXT1hO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbbF07ZVtsXT1lW29dLGVbb109aX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXJ9dW5jYWNoZSgpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoO2xldCByPXRoaXMubkNhY2hlZE9iamVjdHNfLG89dC5sZW5ndGg7Zm9yKGxldCBhPTAscz1hcmd1bWVudHMubGVuZ3RoO2EhPT1zOysrYSl7Y29uc3Qgcz1hcmd1bWVudHNbYV0udXVpZCxsPWVbc107aWYodm9pZCAwIT09bClpZihkZWxldGUgZVtzXSxsPHIpe2NvbnN0IGE9LS1yLHM9dFthXSxjPS0tbyx1PXRbY107ZVtzLnV1aWRdPWwsdFtsXT1zLGVbdS51dWlkXT1hLHRbYV09dSx0LnBvcCgpO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbY107ZVtsXT1lW2FdLGVbYV09aSxlLnBvcCgpfX1lbHNle2NvbnN0IHI9LS1vLGE9dFtyXTtyPjAmJihlW2EudXVpZF09bCksdFtsXT1hLHQucG9wKCk7Zm9yKGxldCB0PTAsZT1pO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdO2VbbF09ZVtyXSxlLnBvcCgpfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189cn1zdWJzY3JpYmVfKHQsZSl7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg7bGV0IGk9blt0XTtjb25zdCByPXRoaXMuX2JpbmRpbmdzO2lmKHZvaWQgMCE9PWkpcmV0dXJuIHJbaV07Y29uc3Qgbz10aGlzLl9wYXRocyxhPXRoaXMuX3BhcnNlZFBhdGhzLHM9dGhpcy5fb2JqZWN0cyxsPXRoaXMubkNhY2hlZE9iamVjdHNfLGM9bmV3IEFycmF5KHMubGVuZ3RoKTtpPXIubGVuZ3RoLG5bdF09aSxvLnB1c2godCksYS5wdXNoKGUpLHIucHVzaChjKTtmb3IobGV0IG49bCxpPXMubGVuZ3RoO24hPT1pOysrbiljW25dPW5ldyBoOHQoc1tuXSx0LGUpO3JldHVybiBjfXVuc3Vic2NyaWJlXyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxuPWVbdF07aWYodm9pZCAwIT09bil7Y29uc3QgaT10aGlzLl9wYXRocyxyPXRoaXMuX3BhcnNlZFBhdGhzLG89dGhpcy5fYmluZGluZ3MsYT1vLmxlbmd0aC0xLHM9b1thXTtlW3RbYV1dPW4sb1tuXT1zLG8ucG9wKCkscltuXT1yW2FdLHIucG9wKCksaVtuXT1pW2FdLGkucG9wKCl9fX1kOHQucHJvdG90eXBlLmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA9ITA7Y2xhc3MgcDh0e2NvbnN0cnVjdG9yKHQsZSxuPW51bGwsaT1lLmJsZW5kTW9kZSl7dGhpcy5fbWl4ZXI9dCx0aGlzLl9jbGlwPWUsdGhpcy5fbG9jYWxSb290PW4sdGhpcy5ibGVuZE1vZGU9aTtjb25zdCByPWUudHJhY2tzLG89ci5sZW5ndGgsYT1uZXcgQXJyYXkobykscz17ZW5kaW5nU3RhcnQ6Q1p0LGVuZGluZ0VuZDpDWnR9O2ZvcihsZXQgdD0wO3QhPT1vOysrdCl7Y29uc3QgZT1yW3RdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO2FbdF09ZSxlLnNldHRpbmdzPXN9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1zLHRoaXMuX2ludGVycG9sYW50cz1hLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KG8pLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD0yMjAxLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsZSl7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9ZSx0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsZSxuKXtpZih0LmZhZGVPdXQoZSksdGhpcy5mYWRlSW4oZSksbil7Y29uc3Qgbj10aGlzLl9jbGlwLmR1cmF0aW9uLGk9dC5fY2xpcC5kdXJhdGlvbixyPW4vaTt0LndhcnAoMSxpL24sZSksdGhpcy53YXJwKHIsMSxlKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LGUsbil7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLGUsbil9c3RvcEZhZGluZygpe2NvbnN0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsZSxuKXtjb25zdCBpPXRoaXMuX21peGVyLHI9aS50aW1lLG89dGhpcy50aW1lU2NhbGU7bGV0IGE9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbD09PWEmJihhPWkuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1hKTtjb25zdCBzPWEucGFyYW1ldGVyUG9zaXRpb25zLGw9YS5zYW1wbGVWYWx1ZXM7cmV0dXJuIHNbMF09cixzWzFdPXIrbixsWzBdPXQvbyxsWzFdPWUvbyx0aGlzfXN0b3BXYXJwaW5nKCl7Y29uc3QgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gbnVsbCE9PXQmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxlLG4saSl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZCB0aGlzLl91cGRhdGVXZWlnaHQodCk7Y29uc3Qgcj10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PXIpe2NvbnN0IGk9KHQtcikqbjtpZihpPDB8fDA9PT1uKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxlPW4qaX1lKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7Y29uc3Qgbz10aGlzLl91cGRhdGVUaW1lKGUpLGE9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKGE+MCl7Y29uc3QgdD10aGlzLl9pbnRlcnBvbGFudHMsZT10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSBQWnQ6Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuIT09aTsrK24pdFtuXS5ldmFsdWF0ZShvKSxlW25dLmFjY3VtdWxhdGVBZGRpdGl2ZShhKTticmVhaztjYXNlIExadDpkZWZhdWx0OmZvcihsZXQgbj0wLHI9dC5sZW5ndGg7biE9PXI7KytuKXRbbl0uZXZhbHVhdGUobyksZVtuXS5hY2N1bXVsYXRlKGksYSl9fX1fdXBkYXRlV2VpZ2h0KHQpe2xldCBlPTA7aWYodGhpcy5lbmFibGVkKXtlPXRoaXMud2VpZ2h0O2NvbnN0IG49dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7aWYobnVsbCE9PW4pe2NvbnN0IGk9bi5ldmFsdWF0ZSh0KVswXTtlKj1pLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BGYWRpbmcoKSwwPT09aSYmKHRoaXMuZW5hYmxlZD0hMSkpfX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PWUsZX1fdXBkYXRlVGltZVNjYWxlKHQpe2xldCBlPTA7aWYoIXRoaXMucGF1c2VkKXtlPXRoaXMudGltZVNjYWxlO2NvbnN0IG49dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbCE9PW4mJihlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSkpfXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgaT10aGlzLnRpbWUrdCxyPXRoaXMuX2xvb3BDb3VudDtjb25zdCBvPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09cj9pOm8mJjE9PSgxJnIpP2UtaTppO2lmKDIyMDA9PT1uKXstMT09PXImJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYoaT49ZSlpPWU7ZWxzZXtpZighKGk8MCkpe3RoaXMudGltZT1pO2JyZWFrIHR9aT0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PXImJih0Pj0wPyhyPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxvKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxvKSksaT49ZXx8aTwwKXtjb25zdCBuPU1hdGguZmxvb3IoaS9lKTtpLT1lKm4scis9TWF0aC5hYnMobik7Y29uc3QgYT10aGlzLnJlcGV0aXRpb25zLXI7aWYoYTw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxpPXQ+MD9lOjAsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PWEpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxvKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsbyk7dGhpcy5fbG9vcENvdW50PXIsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9aTtpZihvJiYxPT0oMSZyKSlyZXR1cm4gZS1pfXJldHVybiBpfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBpPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oaS5lbmRpbmdTdGFydD1BWnQsaS5lbmRpbmdFbmQ9QVp0KTooaS5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9BWnQ6Q1p0OmtadCxpLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/QVp0OkNadDprWnQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZTtsZXQgbz10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09byYmKG89aS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PW8pO2NvbnN0IGE9by5wYXJhbWV0ZXJQb3NpdGlvbnMscz1vLnNhbXBsZVZhbHVlcztyZXR1cm4gYVswXT1yLHNbMF09ZSxhWzFdPXIrdCxzWzFdPW4sdGhpc319Y2xhc3MgZjh0IGV4dGVuZHMgalp0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LGk9dC5fY2xpcC50cmFja3Mscj1pLmxlbmd0aCxvPXQuX3Byb3BlcnR5QmluZGluZ3MsYT10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1yOysrdCl7Y29uc3Qgcj1pW3RdLGw9ci5uYW1lO2xldCB1PWNbbF07aWYodm9pZCAwIT09dSlvW3RdPXU7ZWxzZXtpZih1PW9bdF0sdm9pZCAwIT09dSl7bnVsbD09PXUuX2NhY2hlSW5kZXgmJigrK3UucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKHUscyxsKSk7Y29udGludWV9dT1uZXcgZTh0KGg4dC5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxyLlZhbHVlVHlwZU5hbWUsci5nZXRWYWx1ZVNpemUoKSksKyt1LnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyh1LHMsbCksb1t0XT11fWFbdF0ucmVzdWx0QnVmZmVyPXUuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsaSYmaS5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgbz1yW2VdO2lmKHZvaWQgMD09PW8pbz17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2VdPW87ZWxzZXtjb25zdCBlPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpLG8uYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0saT10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9aSxlW2ldPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3Qgcj10Ll9jbGlwLnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGE9b1tyXSxzPWEua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxkZWxldGUgYS5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgb1tyXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLHI9dGhpcy5fYmluZGluZ3M7bGV0IG89aVtlXTt2b2lkIDA9PT1vJiYobz17fSxpW2VdPW8pLG9bbl09dCx0Ll9jYWNoZUluZGV4PXIubGVuZ3RoLHIucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQscj1uLnBhdGgsbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsYT1vW2ldLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSBhW3JdLDA9PT1PYmplY3Qua2V5cyhhKS5sZW5ndGgmJmRlbGV0ZSBvW2ldfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLHI9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LHIuX2NhY2hlSW5kZXg9bixlW25dPXJ9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBSNnQobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxyPWVbaV07dC5fX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fX2NhY2hlSW5kZXg9bixlW25dPXJ9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3QgaT1lfHx0aGlzLl9yb290LHI9aS51dWlkO2xldCBvPSJzdHJpbmciPT10eXBlb2YgdD9HNnQuZmluZEJ5TmFtZShpLHQpOnQ7Y29uc3QgYT1udWxsIT09bz9vLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbYV07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09bz9vLmJsZW5kTW9kZTpMWnQpLHZvaWQgMCE9PXMpe2NvbnN0IHQ9cy5hY3Rpb25CeVJvb3Rbcl07aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1uKXJldHVybiB0O2w9cy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PW8mJihvPWwuX2NsaXApfWlmKG51bGw9PT1vKXJldHVybiBudWxsO2NvbnN0IGM9bmV3IHA4dCh0aGlzLG8sZSxuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihjLGwpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGMsYSxyKSxjfWV4aXN0aW5nQWN0aW9uKHQsZSl7Y29uc3Qgbj1lfHx0aGlzLl9yb290LGk9bi51dWlkLHI9InN0cmluZyI9PXR5cGVvZiB0P0c2dC5maW5kQnlOYW1lKG4sdCk6dCxvPXRoaXMuX2FjdGlvbnNCeUNsaXBbcj9yLnV1aWQ6dF07cmV0dXJuIHZvaWQgMCE9PW8mJm8uYWN0aW9uQnlSb290W2ldfHxudWxsfXN0b3BBbGxBY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXRoaXMuX25BY3RpdmVBY3Rpb25zLGk9dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxyPU1hdGguc2lnbih0KSxvPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGE9MDthIT09bjsrK2EpZVthXS5fdXBkYXRlKGksdCxyLG8pO2NvbnN0IGE9dGhpcy5fYmluZGluZ3Mscz10aGlzLl9uQWN0aXZlQmluZGluZ3M7Zm9yKGxldCB0PTA7dCE9PXM7Kyt0KWFbdF0uYXBwbHkobyk7cmV0dXJuIHRoaXN9c2V0VGltZSh0KXt0aGlzLnRpbWU9MDtmb3IobGV0IHQ9MDt0PHRoaXMuX2FjdGlvbnMubGVuZ3RoO3QrKyl0aGlzLl9hY3Rpb25zW3RdLnRpbWU9MDtyZXR1cm4gdGhpcy51cGRhdGUodCl9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9yb290fXVuY2FjaGVDbGlwKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPXQudXVpZCxpPXRoaXMuX2FjdGlvbnNCeUNsaXAscj1pW25dO2lmKHZvaWQgMCE9PXIpe2NvbnN0IHQ9ci5rbm93bkFjdGlvbnM7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuIT09aTsrK24pe2NvbnN0IGk9dFtuXTt0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGkpO2NvbnN0IHI9aS5fY2FjaGVJbmRleCxvPWVbZS5sZW5ndGgtMV07aS5fY2FjaGVJbmRleD1udWxsLGkuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxvLl9jYWNoZUluZGV4PXIsZVtyXT1vLGUucG9wKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbihpKX1kZWxldGUgaVtuXX19dW5jYWNoZVJvb3QodCl7Y29uc3QgZT10LnV1aWQsbj10aGlzLl9hY3Rpb25zQnlDbGlwO2Zvcihjb25zdCB0IGluIG4pe2NvbnN0IGk9blt0XS5hY3Rpb25CeVJvb3RbZV07dm9pZCAwIT09aSYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24oaSksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24oaSkpfWNvbnN0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lW2VdO2lmKHZvaWQgMCE9PWkpZm9yKGNvbnN0IHQgaW4gaSl7Y29uc3QgZT1pW3RdO2UucmVzdG9yZU9yaWdpbmFsU3RhdGUoKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcoZSl9fXVuY2FjaGVBY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuZXhpc3RpbmdBY3Rpb24odCxlKTtudWxsIT09biYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obiksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obikpfX1mOHQucHJvdG90eXBlLl9jb250cm9sSW50ZXJwb2xhbnRzUmVzdWx0QnVmZmVyPW5ldyBGbG9hdDMyQXJyYXkoMSk7Y2xhc3MgbTh0e2NvbnN0cnVjdG9yKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogVHlwZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4iKSx0PWFyZ3VtZW50c1sxXSksdGhpcy52YWx1ZT10fWNsb25lKCl7cmV0dXJuIG5ldyBtOHQodm9pZCAwPT09dGhpcy52YWx1ZS5jbG9uZT90aGlzLnZhbHVlOnRoaXMudmFsdWUuY2xvbmUoKSl9fWNsYXNzIGc4dCBleHRlbmRzICQ1dHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih0LGUpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1ufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfWNsb25lKHQpe2NvbnN0IGU9c3VwZXIuY2xvbmUodCk7cmV0dXJuIGUubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsZX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9fWc4dC5wcm90b3R5cGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjbGFzcyBfOHR7Y29uc3RydWN0b3IodCxlLG4saSxyKXt0aGlzLmJ1ZmZlcj10LHRoaXMudHlwZT1lLHRoaXMuaXRlbVNpemU9bix0aGlzLmVsZW1lbnRTaXplPWksdGhpcy5jb3VudD1yLHRoaXMudmVyc2lvbj0wfXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfXNldEJ1ZmZlcih0KXtyZXR1cm4gdGhpcy5idWZmZXI9dCx0aGlzfXNldFR5cGUodCxlKXtyZXR1cm4gdGhpcy50eXBlPXQsdGhpcy5lbGVtZW50U2l6ZT1lLHRoaXN9c2V0SXRlbVNpemUodCl7cmV0dXJuIHRoaXMuaXRlbVNpemU9dCx0aGlzfXNldENvdW50KHQpe3JldHVybiB0aGlzLmNvdW50PXQsdGhpc319ZnVuY3Rpb24geTh0KHQsZSl7cmV0dXJuIHQuZGlzdGFuY2UtZS5kaXN0YW5jZX1mdW5jdGlvbiB2OHQodCxlLG4saSl7aWYodC5sYXllcnMudGVzdChlLmxheWVycykmJnQucmF5Y2FzdChlLG4pLCEwPT09aSl7Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLHI9aS5sZW5ndGg7dDxyO3QrKyl2OHQoaVt0XSxlLG4sITApfX1fOHQucHJvdG90eXBlLmlzR0xCdWZmZXJBdHRyaWJ1dGU9ITA7Y2xhc3MgYjh0e2NvbnN0cnVjdG9yKHQ9MSxlPTAsbj0wKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnBoaT1lLHRoaXMudGhldGE9bix0aGlzfXNldCh0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy5waGk9ZSx0aGlzLnRoZXRhPW4sdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLnBoaT10LnBoaSx0aGlzLnRoZXRhPXQudGhldGEsdGhpc31tYWtlU2FmZSgpe2NvbnN0IHQ9MWUtNjtyZXR1cm4gdGhpcy5waGk9TWF0aC5tYXgodCxNYXRoLm1pbihNYXRoLlBJLXQsdGhpcy5waGkpKSx0aGlzfXNldEZyb21WZWN0b3IzKHQpe3JldHVybiB0aGlzLnNldEZyb21DYXJ0ZXNpYW5Db29yZHModC54LHQueSx0LnopfXNldEZyb21DYXJ0ZXNpYW5Db29yZHModCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQodCp0K2UqZStuKm4pLDA9PT10aGlzLnJhZGl1cz8odGhpcy50aGV0YT0wLHRoaXMucGhpPTApOih0aGlzLnRoZXRhPU1hdGguYXRhbjIodCxuKSx0aGlzLnBoaT1NYXRoLmFjb3MoJFp0KGUvdGhpcy5yYWRpdXMsLTEsMSkpKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1jb25zdCB4OHQ9bmV3IG1KdDtjbGFzcyB3OHR7Y29uc3RydWN0b3IodD1uZXcgbUp0KDEvMCwxLzApLGU9bmV3IG1KdCgtMS8wLC0xLzApKXt0aGlzLm1pbj10LHRoaXMubWF4PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubWluLmNvcHkodCksdGhpcy5tYXguY29weShlKSx0aGlzfXNldEZyb21Qb2ludHModCl7dGhpcy5tYWtlRW1wdHkoKTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdGhpcy5leHBhbmRCeVBvaW50KHRbZV0pO3JldHVybiB0aGlzfXNldEZyb21DZW50ZXJBbmRTaXplKHQsZSl7Y29uc3Qgbj14OHQuY29weShlKS5tdWx0aXBseVNjYWxhciguNSk7cmV0dXJuIHRoaXMubWluLmNvcHkodCkuc3ViKG4pLHRoaXMubWF4LmNvcHkodCkuYWRkKG4pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4LnkpfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55fWdldFBhcmFtZXRlcih0LGUpe3JldHVybiBlLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4LnkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHg4dC5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX13OHQucHJvdG90eXBlLmlzQm94Mj0hMDtjb25zdCBTOHQ9bmV3IENKdCxNOHQ9bmV3IENKdDtjbGFzcyBFOHR7Y29uc3RydWN0b3IodD1uZXcgQ0p0LGU9bmV3IENKdCl7dGhpcy5zdGFydD10LHRoaXMuZW5kPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0KSx0aGlzLmVuZC5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5zdGFydC5jb3B5KHQuc3RhcnQpLHRoaXMuZW5kLmNvcHkodC5lbmQpLHRoaXN9Z2V0Q2VudGVyKHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5zdGFydCx0aGlzLmVuZCkubXVsdGlwbHlTY2FsYXIoLjUpfWRlbHRhKHQpe3JldHVybiB0LnN1YlZlY3RvcnModGhpcy5lbmQsdGhpcy5zdGFydCl9ZGlzdGFuY2VTcSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuZW5kKX1kaXN0YW5jZSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG8odGhpcy5lbmQpfWF0KHQsZSl7cmV0dXJuIHRoaXMuZGVsdGEoZSkubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMuc3RhcnQpfWNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXIodCxlKXtTOHQuc3ViVmVjdG9ycyh0LHRoaXMuc3RhcnQpLE04dC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpO2NvbnN0IG49TTh0LmRvdChNOHQpO2xldCBpPU04dC5kb3QoUzh0KS9uO3JldHVybiBlJiYoaT0kWnQoaSwwLDEpKSxpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlLG4pe2NvbnN0IGk9dGhpcy5jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSk7cmV0dXJuIHRoaXMuZGVsdGEobikubXVsdGlwbHlTY2FsYXIoaSkuYWRkKHRoaXMuc3RhcnQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5zdGFydC5hcHBseU1hdHJpeDQodCksdGhpcy5lbmQuYXBwbHlNYXRyaXg0KHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnN0YXJ0LmVxdWFscyh0aGlzLnN0YXJ0KSYmdC5lbmQuZXF1YWxzKHRoaXMuZW5kKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y2xhc3MgVDh0IGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5tYXRlcmlhbD10LHRoaXMucmVuZGVyPWZ1bmN0aW9uKCl7fSx0aGlzLmhhc1Bvc2l0aW9ucz0hMSx0aGlzLmhhc05vcm1hbHM9ITEsdGhpcy5oYXNDb2xvcnM9ITEsdGhpcy5oYXNVdnM9ITEsdGhpcy5wb3NpdGlvbkFycmF5PW51bGwsdGhpcy5ub3JtYWxBcnJheT1udWxsLHRoaXMuY29sb3JBcnJheT1udWxsLHRoaXMudXZBcnJheT1udWxsLHRoaXMuY291bnQ9MH19VDh0LnByb3RvdHlwZS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdD0hMDtjb25zdCBDOHQ9bmV3IENKdCxBOHQ9bmV3IENKdCxrOHQ9bmV3IHJRdCxMOHQ9bmV3IHJRdDtjbGFzcyBQOHQgZXh0ZW5kcyBVM3R7Y29uc3RydWN0b3IodCl7Y29uc3QgZT1OOHQodCksbj1uZXcgYjF0LGk9W10scj1bXSxvPW5ldyAkUXQoMCwwLDEpLGE9bmV3ICRRdCgwLDEsMCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XTtuLnBhcmVudCYmbi5wYXJlbnQuaXNCb25lJiYoaS5wdXNoKDAsMCwwKSxpLnB1c2goMCwwLDApLHIucHVzaChvLnIsby5nLG8uYiksci5wdXNoKGEucixhLmcsYS5iKSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KGksMykpLG4uc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGwxdChyLDMpKSxzdXBlcihuLG5ldyBJM3Qoe3ZlcnRleENvbG9yczohMCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExLHRyYW5zcGFyZW50OiEwfSkpLHRoaXMudHlwZT0iU2tlbGV0b25IZWxwZXIiLHRoaXMuaXNTa2VsZXRvbkhlbHBlcj0hMCx0aGlzLnJvb3Q9dCx0aGlzLmJvbmVzPWUsdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITF9dXBkYXRlTWF0cml4V29ybGQodCl7Y29uc3QgZT10aGlzLmJvbmVzLG49dGhpcy5nZW9tZXRyeSxpPW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpO0w4dC5jb3B5KHRoaXMucm9vdC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7Zm9yKGxldCB0PTAsbj0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCByPWVbdF07ci5wYXJlbnQmJnIucGFyZW50LmlzQm9uZSYmKGs4dC5tdWx0aXBseU1hdHJpY2VzKEw4dCxyLm1hdHJpeFdvcmxkKSxBOHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGs4dCksaS5zZXRYWVoobixBOHQueCxBOHQueSxBOHQueiksazh0Lm11bHRpcGx5TWF0cmljZXMoTDh0LHIucGFyZW50Lm1hdHJpeFdvcmxkKSxBOHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGs4dCksaS5zZXRYWVoobisxLEE4dC54LEE4dC55LEE4dC56KSxuKz0yKX1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMCxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19ZnVuY3Rpb24gTjh0KHQpe2NvbnN0IGU9W107dCYmdC5pc0JvbmUmJmUucHVzaCh0KTtmb3IobGV0IG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyllLnB1c2guYXBwbHkoZSxOOHQodC5jaGlsZHJlbltuXSkpO3JldHVybiBlfWNvbnN0IEk4dD1uZXcgQ0p0LFI4dD1uZXcgJFF0LE84dD1uZXcgJFF0O2NsYXNzIHo4dCBleHRlbmRzIFUzdHtjb25zdHJ1Y3Rvcih0PTEwLGU9MTAsbj00NDczOTI0LGk9ODk0Nzg0OCl7bj1uZXcgJFF0KG4pLGk9bmV3ICRRdChpKTtjb25zdCByPWUvMixvPXQvZSxhPXQvMixzPVtdLGw9W107Zm9yKGxldCB0PTAsYz0wLHU9LWE7dDw9ZTt0KyssdSs9byl7cy5wdXNoKC1hLDAsdSxhLDAsdSkscy5wdXNoKHUsMCwtYSx1LDAsYSk7Y29uc3QgZT10PT09cj9uOmk7ZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9M31jb25zdCBjPW5ldyBiMXQ7Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KHMsMykpLGMuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGwxdChsLDMpKSxzdXBlcihjLG5ldyBJM3Qoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iR3JpZEhlbHBlciJ9fWNvbnN0IEQ4dD1uZXcgQ0p0LEI4dD1uZXcgQ0p0LEg4dD1uZXcgQ0p0LEY4dD1uZXcgQ0p0LFY4dD1uZXcgVzF0O2Z1bmN0aW9uIFU4dCh0LGUsbixpLHIsbyxhKXtGOHQuc2V0KHIsbyxhKS51bnByb2plY3QoaSk7Y29uc3Qgcz1lW3RdO2lmKHZvaWQgMCE9PXMpe2NvbnN0IHQ9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Zm9yKGxldCBlPTAsbj1zLmxlbmd0aDtlPG47ZSsrKXQuc2V0WFlaKHNbZV0sRjh0LngsRjh0LnksRjh0LnopfX1jb25zdCBqOHQ9bmV3IExKdDtjbGFzcyBHOHQgZXh0ZW5kcyBVM3R7Y29uc3RydWN0b3IodCxlPTE2Nzc2OTYwKXtjb25zdCBuPW5ldyBVaW50MTZBcnJheShbMCwxLDEsMiwyLDMsMywwLDQsNSw1LDYsNiw3LDcsNCwwLDQsMSw1LDIsNiwzLDddKSxpPW5ldyBGbG9hdDMyQXJyYXkoMjQpLHI9bmV3IGIxdDtyLnNldEluZGV4KG5ldyBRUXQobiwxKSksci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUVF0KGksMykpLHN1cGVyKHIsbmV3IEkzdCh7Y29sb3I6ZSx0b25lTWFwcGVkOiExfSkpLHRoaXMub2JqZWN0PXQsdGhpcy50eXBlPSJCb3hIZWxwZXIiLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZSh0KXtpZih2b2lkIDAhPT10JiZjb25zb2xlLndhcm4oIlRIUkVFLkJveEhlbHBlcjogLnVwZGF0ZSgpIGhhcyBubyBsb25nZXIgYXJndW1lbnRzLiIpLHZvaWQgMCE9PXRoaXMub2JqZWN0JiZqOHQuc2V0RnJvbU9iamVjdCh0aGlzLm9iamVjdCksajh0LmlzRW1wdHkoKSlyZXR1cm47Y29uc3QgZT1qOHQubWluLG49ajh0Lm1heCxpPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbixyPWkuYXJyYXk7clswXT1uLngsclsxXT1uLnksclsyXT1uLnosclszXT1lLngscls0XT1uLnkscls1XT1uLnoscls2XT1lLngscls3XT1lLnkscls4XT1uLnoscls5XT1uLngsclsxMF09ZS55LHJbMTFdPW4ueixyWzEyXT1uLngsclsxM109bi55LHJbMTRdPWUueixyWzE1XT1lLngsclsxNl09bi55LHJbMTddPWUueixyWzE4XT1lLngsclsxOV09ZS55LHJbMjBdPWUueixyWzIxXT1uLngsclsyMl09ZS55LHJbMjNdPWUueixpLm5lZWRzVXBkYXRlPSEwLHRoaXMuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9c2V0RnJvbU9iamVjdCh0KXtyZXR1cm4gdGhpcy5vYmplY3Q9dCx0aGlzLnVwZGF0ZSgpLHRoaXN9Y29weSh0KXtyZXR1cm4gVTN0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLm9iamVjdD10Lm9iamVjdCx0aGlzfX1jb25zdCBXOHQ9bmV3IENKdDtsZXQgcTh0LFk4dDtjbGFzcyBYOHQgZXh0ZW5kcyBVM3R7Y29uc3RydWN0b3IodD0xKXtjb25zdCBlPVswLDAsMCx0LDAsMCwwLDAsMCwwLHQsMCwwLDAsMCwwLDAsdF0sbj1uZXcgYjF0O24uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdChlLDMpKSxuLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBsMXQoWzEsMCwwLDEsLjYsMCwwLDEsMCwuNiwxLDAsMCwwLDEsMCwuNiwxXSwzKSksc3VwZXIobixuZXcgSTN0KHt2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IkF4ZXNIZWxwZXIifXNldENvbG9ycyh0LGUsbil7Y29uc3QgaT1uZXcgJFF0LHI9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLmFycmF5O3JldHVybiBpLnNldCh0KSxpLnRvQXJyYXkociwwKSxpLnRvQXJyYXkociwzKSxpLnNldChlKSxpLnRvQXJyYXkociw2KSxpLnRvQXJyYXkociw5KSxpLnNldChuKSxpLnRvQXJyYXkociwxMiksaS50b0FycmF5KHIsMTUpLHRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5uZWVkc1VwZGF0ZT0hMCx0aGlzfWRpc3Bvc2UoKXt0aGlzLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLm1hdGVyaWFsLmRpc3Bvc2UoKX19Y29uc3QgJDh0PW5ldyBGbG9hdDMyQXJyYXkoMSksSzh0PW5ldyBJbnQzMkFycmF5KCQ4dC5idWZmZXIpO2g0dC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGg0dC5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZSx0fSxpOXQucHJvdG90eXBlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGF0aDogLmZyb21Qb2ludHMoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUG9pbnRzKCkuIiksdGhpcy5zZXRGcm9tUG9pbnRzKHQpfSx6OHQucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkdyaWRIZWxwZXI6IHNldENvbG9ycygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHBhc3MgdGhlbSBpbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZC4iKX0sUDh0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2VsZXRvbkhlbHBlcjogdXBkYXRlKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGNhbGxlZC4iKX0sJDZ0LnByb3RvdHlwZS5leHRyYWN0VXJsQmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Mb2FkZXI6IC5leHRyYWN0VXJsQmFzZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5Mb2FkZXJVdGlscy5leHRyYWN0VXJsQmFzZSgpIGluc3RlYWQuIiksRTl0LmV4dHJhY3RVcmxCYXNlKHQpfSwkNnQuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19LHc4dC5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sdzh0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX0sdzh0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KHQpfSx3OHQucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfSxMSnQucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LExKdC5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LExKdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sTEp0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHQpfSxMSnQucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfSwkSnQucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU3BoZXJlOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LGkwdC5wcm90b3R5cGUuc2V0RnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5GcnVzdHVtOiAuc2V0RnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KCkuIiksdGhpcy5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KX0sRTh0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sZ0p0LnByb3RvdHlwZS5mbGF0dGVuVG9BcnJheU9mZnNldD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KHQsZSl9LGdKdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0sZ0p0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5tdWx0aXBseVZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdKdC5wcm90b3R5cGUuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXgzKHRoaXMpfSxnSnQucHJvdG90eXBlLmFwcGx5VG9WZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdKdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxyUXQucHJvdG90eXBlLmV4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZXh0cmFjdFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY29weVBvc2l0aW9uKCkuIiksdGhpcy5jb3B5UG9zaXRpb24odCl9LHJRdC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSxyUXQucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLChuZXcgQ0p0KS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMyl9LHJRdC5wcm90b3R5cGUuc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkuIiksdGhpcy5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KX0sclF0LnByb3RvdHlwZS5tdWx0aXBseVRvQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVRvQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyUXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LHJRdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3I0PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sclF0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJRdC5wcm90b3R5cGUucm90YXRlQXhpcz1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMudHJhbnNmb3JtRGlyZWN0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQudHJhbnNmb3JtRGlyZWN0aW9uKHRoaXMpfSxyUXQucHJvdG90eXBlLmNyb3NzVmVjdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5jcm9zc1ZlY3RvcigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxyUXQucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyUXQucHJvdG90eXBlLnJvdGF0ZVg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJRdC5wcm90b3R5cGUucm90YXRlWT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVZKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sclF0LnByb3RvdHlwZS5yb3RhdGVaPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVooKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyUXQucHJvdG90eXBlLnJvdGF0ZUJ5QXhpcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVCeUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyUXQucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sclF0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyUXQucHJvdG90eXBlLm1ha2VGcnVzdHVtPWZ1bmN0aW9uKHQsZSxuLGkscixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZUZydXN0dW0oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLm1ha2VQZXJzcGVjdGl2ZSggbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCBuZWFyLCBmYXIgKSBpbnN0ZWFkLiIpLHRoaXMubWFrZVBlcnNwZWN0aXZlKHQsZSxpLG4scixvKX0sclF0LnByb3RvdHlwZS5nZXRJbnZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkodCkuaW52ZXJ0KCl9LHQwdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25MaW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuaXNJbnRlcnNlY3Rpb25MaW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0xpbmUoKS4iKSx0aGlzLmludGVyc2VjdHNMaW5lKHQpfSxUSnQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGlzIG5vdyB2ZWN0b3IuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICkgaW5zdGVhZC4iKSx0LmFwcGx5UXVhdGVybmlvbih0aGlzKX0sVEp0LnByb3RvdHlwZS5pbnZlcnNlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLmludmVyc2UoKSBoYXMgYmVlbiByZW5hbWVkIHRvIGludmVydCgpLiIpLHRoaXMuaW52ZXJ0KCl9LGlRdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KHQpfSxpUXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uUGxhbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25QbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNQbGFuZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1BsYW5lKHQpfSxpUXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uU3BoZXJlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sRlF0LnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5hcmVhKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QXJlYSgpLiIpLHRoaXMuZ2V0QXJlYSgpfSxGUXQucHJvdG90eXBlLmJhcnljb29yZEZyb21Qb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIiksdGhpcy5nZXRCYXJ5Y29vcmQodCxlKX0sRlF0LnByb3RvdHlwZS5taWRwb2ludD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm1pZHBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0TWlkcG9pbnQoKS4iKSx0aGlzLmdldE1pZHBvaW50KHQpfSxGUXQucHJvdG90eXBlbm9ybWFsPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIiksdGhpcy5nZXROb3JtYWwodCl9LEZRdC5wcm90b3R5cGUucGxhbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5wbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFBsYW5lKCkuIiksdGhpcy5nZXRQbGFuZSh0KX0sRlF0LmJhcnljb29yZEZyb21Qb2ludD1mdW5jdGlvbih0LGUsbixpLHIpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIiksRlF0LmdldEJhcnljb29yZCh0LGUsbixpLHIpfSxGUXQubm9ybWFsPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIiksRlF0LmdldE5vcm1hbCh0LGUsbixpKX0scjl0LnByb3RvdHlwZS5leHRyYWN0QWxsUG9pbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cmFjdEFsbFBvaW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZXh0cmFjdFBvaW50cygpIGluc3RlYWQuIiksdGhpcy5leHRyYWN0UG9pbnRzKHQpfSxyOXQucHJvdG90eXBlLmV4dHJ1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRydWRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV4dHJ1ZGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IHI2dCh0aGlzLHQpfSxyOXQucHJvdG90eXBlLm1ha2VHZW9tZXRyeT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLm1ha2VHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBTaGFwZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgaDZ0KHRoaXMsdCl9LG1KdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sbUp0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sbUp0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sQ0p0LnByb3RvdHlwZS5zZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBpbnN0ZWFkLiIpfSxDSnQucHJvdG90eXBlLnNldEV1bGVyRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUXVhdGVybmlvbigpIGluc3RlYWQuIil9LENKdC5wcm90b3R5cGUuZ2V0UG9zaXRpb25Gcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRQb3NpdGlvbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4UG9zaXRpb24oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhQb3NpdGlvbih0KX0sQ0p0LnByb3RvdHlwZS5nZXRTY2FsZUZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFNjYWxlRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhTY2FsZSgpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFNjYWxlKHQpfSxDSnQucHJvdG90eXBlLmdldENvbHVtbkZyb21NYXRyaXg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0Q29sdW1uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhDb2x1bW4oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oZSx0KX0sQ0p0LnByb3RvdHlwZS5hcHBseVByb2plY3Rpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFwcGx5UHJvamVjdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuYXBwbHlNYXRyaXg0KCBtICkgaW5zdGVhZC4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sQ0p0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxDSnQucHJvdG90eXBlLmRpc3RhbmNlVG9NYW5oYXR0YW49ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxDSnQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSx3SnQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LHdKdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LGtRdC5wcm90b3R5cGUuZ2V0Q2hpbGRCeU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRDaGlsZEJ5TmFtZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE9iamVjdEJ5TmFtZSgpLiIpLHRoaXMuZ2V0T2JqZWN0QnlOYW1lKHQpfSxrUXQucHJvdG90eXBlLnJlbmRlckRlcHRoPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnJlbmRlckRlcHRoIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAucmVuZGVyT3JkZXIsIGluc3RlYWQuIil9LGtRdC5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnRyYW5zbGF0ZU9uQXhpcyggYXhpcywgZGlzdGFuY2UgKSBpbnN0ZWFkLiIpLHRoaXMudHJhbnNsYXRlT25BeGlzKGUsdCl9LGtRdC5wcm90b3R5cGUuZ2V0V29ybGRSb3RhdGlvbj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRSb3RhdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5PYmplY3QzRC5nZXRXb3JsZFF1YXRlcm5pb24oIHRhcmdldCApIGluc3RlYWQuIil9LGtRdC5wcm90b3R5cGUuYXBwbHlNYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5hcHBseU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmFwcGx5TWF0cml4NCgpLiIpLHRoaXMuYXBwbHlNYXRyaXg0KHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhrUXQucHJvdG90eXBlLHtldWxlck9yZGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyPXR9fSx1c2VRdWF0ZXJuaW9uOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfX19KSxCMXQucHJvdG90eXBlLnNldERyYXdNb2RlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLnNldERyYXdNb2RlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQjF0LnByb3RvdHlwZSx7ZHJhd01vZGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuZHJhd01vZGUgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4iKSwwfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuZHJhd01vZGUgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX19fSksdzN0LnByb3RvdHlwZS5pbml0Qm9uZXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2lubmVkTWVzaDogaW5pdEJvbmVzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scTF0LnByb3RvdHlwZS5zZXRMZW5zPWZ1bmN0aW9uKHQsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYS5zZXRMZW5zIGlzIGRlcHJlY2F0ZWQuIFVzZSAuc2V0Rm9jYWxMZW5ndGggYW5kIC5maWxtR2F1Z2UgZm9yIGEgcGhvdG9ncmFwaGljIHNldHVwLiIpLHZvaWQgMCE9PWUmJih0aGlzLmZpbG1HYXVnZT1lKSx0aGlzLnNldEZvY2FsTGVuZ3RoKHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvOXQucHJvdG90eXBlLHtvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mb3Y9dH19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD10fX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5yaWdodD10fX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpLHRoaXMuc2hhZG93LmNhbWVyYS50b3A9dH19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPXR9fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9dH19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPXR9fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSxzaGFkb3dCaWFzOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4iKSx0aGlzLnNoYWRvdy5iaWFzPXR9fSxzaGFkb3dEYXJrbmVzczp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0RhcmtuZXNzIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dNYXBXaWR0aDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBXaWR0aCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLndpZHRoLiIpLHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGg9dH19LHNoYWRvd01hcEhlaWdodDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuIiksdGhpcy5zaGFkb3cubWFwU2l6ZS5oZWlnaHQ9dH19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUVF0LnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5jb3VudCBpbnN0ZWFkLiIpLHRoaXMuYXJyYXkubGVuZ3RofX0sZHluYW1pYzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy51c2FnZT09PVZadH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKFZadCl9fX0pLFFRdC5wcm90b3R5cGUuc2V0RHluYW1pYz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZSghMD09PXQ/Vlp0OkZadCksdGhpc30sUVF0LnByb3RvdHlwZS5jb3B5SW5kaWNlc0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuY29weUluZGljZXNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LFFRdC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5zZXRBcnJheSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgQnVmZmVyR2VvbWV0cnkgLnNldEF0dHJpYnV0ZSB0byByZXBsYWNlL3Jlc2l6ZSBhdHRyaWJ1dGUgYnVmZmVycyIpfSxiMXQucHJvdG90eXBlLmFkZEluZGV4PWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRJbmRleCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEluZGV4KCkuIiksdGhpcy5zZXRJbmRleCh0KX0sYjF0LnByb3RvdHlwZS5hZGRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEF0dHJpYnV0ZSgpLiIpLGUmJmUuaXNCdWZmZXJBdHRyaWJ1dGV8fGUmJmUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT8iaW5kZXgiPT09dD8oY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5hZGRBdHRyaWJ1dGU6IFVzZSAuc2V0SW5kZXgoKSBmb3IgaW5kZXggYXR0cmlidXRlLiIpLHRoaXMuc2V0SW5kZXgoZSksdGhpcyk6dGhpcy5zZXRBdHRyaWJ1dGUodCxlKTooY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEF0dHJpYnV0ZSgpIG5vdyBleHBlY3RzICggbmFtZSwgYXR0cmlidXRlICkuIiksdGhpcy5zZXRBdHRyaWJ1dGUodCxuZXcgUVF0KGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pKSl9LGIxdC5wcm90b3R5cGUuYWRkRHJhd0NhbGw9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKSxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIiksdGhpcy5hZGRHcm91cCh0LGUpfSxiMXQucHJvdG90eXBlLmNsZWFyRHJhd0NhbGxzPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNsZWFyRHJhd0NhbGxzKCkgaXMgbm93IC5jbGVhckdyb3VwcygpLiIpLHRoaXMuY2xlYXJHcm91cHMoKX0sYjF0LnByb3RvdHlwZS5jb21wdXRlT2Zmc2V0cz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlT2Zmc2V0cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGIxdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAucmVtb3ZlQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZGVsZXRlQXR0cmlidXRlKCkuIiksdGhpcy5kZWxldGVBdHRyaWJ1dGUodCl9LGIxdC5wcm90b3R5cGUuYXBwbHlNYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hcHBseU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmFwcGx5TWF0cml4NCgpLiIpLHRoaXMuYXBwbHlNYXRyaXg0KHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhiMXQucHJvdG90eXBlLHtkcmF3Y2FsbHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmRyYXdjYWxscyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuIiksdGhpcy5ncm91cHN9fSxvZmZzZXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLm9mZnNldHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX19KSwkNXQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZSghMD09PXQ/Vlp0OkZadCksdGhpc30sJDV0LnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0scjZ0LnByb3RvdHlwZS5nZXRBcnJheXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5nZXRBcnJheXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyNnQucHJvdG90eXBlLmFkZFNoYXBlTGlzdD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmFkZFNoYXBlTGlzdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHI2dC5wcm90b3R5cGUuYWRkU2hhcGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LFg1dC5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lOiAuZGlzcG9zZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG04dC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiAub25VcGRhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugb2JqZWN0Lm9uQmVmb3JlUmVuZGVyKCkgaW5zdGVhZC4iKSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVUXQucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyAkUXR9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT10fX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz10fX0sdmVydGV4VGFuZ2VudHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEcxdC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPXR9fX0pLEc1dC5wcm90b3R5cGUuY2xlYXJUYXJnZXQ9ZnVuY3Rpb24odCxlLG4saSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY2xlYXJUYXJnZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGFuZCAuY2xlYXIoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0UmVuZGVyVGFyZ2V0KHQpLHRoaXMuY2xlYXIoZSxuLGkpfSxHNXQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcCh0KX0sRzV0LnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9LEc1dC5wcm90b3R5cGUuZ2V0TWF4QW5pc290cm9weT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRNYXhBbmlzb3Ryb3B5KCkgaXMgbm93IC5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpLiIpLHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKX0sRzV0LnByb3RvdHlwZS5nZXRQcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn0sRzV0LnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX0sRzV0LnByb3RvdHlwZS5zdXBwb3J0c0Zsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iil9LEc1dC5wcm90b3R5cGUuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxHNXQucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxHNXQucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil9LEc1dC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LEc1dC5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfSxHNXQucHJvdG90eXBlLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcygpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzfSxHNXQucHJvdG90eXBlLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfSxHNXQucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QodCl9LEc1dC5wcm90b3R5cGUuaW5pdE1hdGVyaWFsPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuaW5pdE1hdGVyaWFsKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRzV0LnByb3RvdHlwZS5hZGRQcmVQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxHNXQucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRzV0LnByb3RvdHlwZS51cGRhdGVTaGFkb3dNYXA9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC51cGRhdGVTaGFkb3dNYXAoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxHNXQucHJvdG90eXBlLnNldEZhY2VDdWxsaW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxHNXQucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRzV0LnByb3RvdHlwZS5zZXRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEc1dC5wcm90b3R5cGUuc2V0VGV4dHVyZTJEPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRzV0LnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sRzV0LnByb3RvdHlwZS5nZXRBY3RpdmVNaXBNYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRBY3RpdmVNaXBNYXBMZXZlbCgpIGlzIG5vdyAuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKS4iKSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEc1dC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9dH19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9dH19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPSEwPT09dD9JWnQ6Tlp0fX0sdG9uZU1hcHBpbmdXaGl0ZVBvaW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIiksMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFI1dC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoU0p0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSwkOXQucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogLmxvYWQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkF1ZGlvTG9hZGVyIGluc3RlYWQuIik7Y29uc3QgZT10aGlzO3JldHVybihuZXcgQjl0KS5sb2FkKHQsKGZ1bmN0aW9uKHQpe2Uuc2V0QnVmZmVyKHQpfSkpLHRoaXN9LHQ4dC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvQW5hbHlzZXI6IC5nZXREYXRhKCkgaXMgbm93IC5nZXRGcmVxdWVuY3lEYXRhKCkuIiksdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9LFgxdC5wcm90b3R5cGUudXBkYXRlQ3ViZU1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1YmVDYW1lcmE6IC51cGRhdGVDdWJlTWFwKCkgaXMgbm93IC51cGRhdGUoKS4iKSx0aGlzLnVwZGF0ZSh0LGUpfSxYMXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1YmVDYW1lcmE6IC5jbGVhcigpIGlzIG5vdyAucmVuZGVyVGFyZ2V0LmNsZWFyKCkuIiksdGhpcy5yZW5kZXJUYXJnZXQuY2xlYXIodCxlLG4saSl9LHlKdC5jcm9zc09yaWdpbj12b2lkIDAseUp0LmxvYWRUZXh0dXJlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgcj1uZXcgZTl0O3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgbz1yLmxvYWQodCxuLHZvaWQgMCxpKTtyZXR1cm4gZSYmKG8ubWFwcGluZz1lKSxvfSx5SnQubG9hZFRleHR1cmVDdWJlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZUN1YmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkN1YmVUZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCByPW5ldyBRNnQ7ci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBvPXIubG9hZCh0LG4sdm9pZCAwLGkpO3JldHVybiBlJiYoby5tYXBwaW5nPWUpLG99LHlKdC5sb2FkQ29tcHJlc3NlZFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9LHlKdC5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX07Y29uc3QgWjh0PXtjcmVhdGVNdWx0aU1hdGVyaWFsT2JqZWN0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX0sZGV0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX0sYXR0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX19OyJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZ2lzdGVyIix7ZGV0YWlsOntyZXZpc2lvbjpCS3R9fSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPUJLdCk7dmFyIEo4dD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBQ0VTRmlsbWljVG9uZU1hcHBpbmc6NCxBZGRFcXVhdGlvbjpWS3QsQWRkT3BlcmF0aW9uOjIsQWRkaXRpdmVBbmltYXRpb25CbGVuZE1vZGU6UFp0LEFkZGl0aXZlQmxlbmRpbmc6MixBbHBoYUZvcm1hdDoxMDIxLEFsd2F5c0RlcHRoOjEsQWx3YXlzU3RlbmNpbEZ1bmM6NTE5LEFtYmllbnRMaWdodDpiOXQsQW1iaWVudExpZ2h0UHJvYmU6Rjl0LEFuaW1hdGlvbkNsaXA6RzZ0LEFuaW1hdGlvbkxvYWRlcjpjbGFzcyBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBaNnQodGhpcy5tYW5hZ2VyKTtvLnNldFBhdGgodGhpcy5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3RyeXtlKHIucGFyc2UoSlNPTi5wYXJzZShuKSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX1wYXJzZSh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBpPUc2dC5wYXJzZSh0W25dKTtlLnB1c2goaSl9cmV0dXJuIGV9fSxBbmltYXRpb25NaXhlcjpmOHQsQW5pbWF0aW9uT2JqZWN0R3JvdXA6ZDh0LEFuaW1hdGlvblV0aWxzOlA2dCxBcmNDdXJ2ZTpwNHQsQXJyYXlDYW1lcmE6QjV0LEFycm93SGVscGVyOmNsYXNzIGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQ9bmV3IENKdCgwLDAsMSksZT1uZXcgQ0p0KDAsMCwwKSxuPTEsaT0xNjc3Njk2MCxyPS4yKm4sbz0uMipyKXtzdXBlcigpLHRoaXMudHlwZT0iQXJyb3dIZWxwZXIiLHZvaWQgMD09PXE4dCYmKHE4dD1uZXcgYjF0LHE4dC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KFswLDAsMCwwLDEsMF0sMykpLFk4dD1uZXcgbjR0KDAsLjUsMSw1LDEpLFk4dC50cmFuc2xhdGUoMCwtLjUsMCkpLHRoaXMucG9zaXRpb24uY29weShlKSx0aGlzLmxpbmU9bmV3IEgzdChxOHQsbmV3IEkzdCh7Y29sb3I6aSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGluZS5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuYWRkKHRoaXMubGluZSksdGhpcy5jb25lPW5ldyBCMXQoWTh0LG5ldyBLUXQoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmNvbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmNvbmUpLHRoaXMuc2V0RGlyZWN0aW9uKHQpLHRoaXMuc2V0TGVuZ3RoKG4scixvKX1zZXREaXJlY3Rpb24odCl7aWYodC55Pi45OTk5OSl0aGlzLnF1YXRlcm5pb24uc2V0KDAsMCwwLDEpO2Vsc2UgaWYodC55PC0uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgxLDAsMCwwKTtlbHNle1c4dC5zZXQodC56LDAsLXQueCkubm9ybWFsaXplKCk7Y29uc3QgZT1NYXRoLmFjb3ModC55KTt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZShXOHQsZSl9fXNldExlbmd0aCh0LGU9LjIqdCxuPS4yKmUpe3RoaXMubGluZS5zY2FsZS5zZXQoMSxNYXRoLm1heCgxZS00LHQtZSksMSksdGhpcy5saW5lLnVwZGF0ZU1hdHJpeCgpLHRoaXMuY29uZS5zY2FsZS5zZXQobixlLG4pLHRoaXMuY29uZS5wb3NpdGlvbi55PXQsdGhpcy5jb25lLnVwZGF0ZU1hdHJpeCgpfXNldENvbG9yKHQpe3RoaXMubGluZS5tYXRlcmlhbC5jb2xvci5zZXQodCksdGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLnNldCh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQsITEpLHRoaXMubGluZS5jb3B5KHQubGluZSksdGhpcy5jb25lLmNvcHkodC5jb25lKSx0aGlzfX0sQXVkaW86JDl0LEF1ZGlvQW5hbHlzZXI6dDh0LEF1ZGlvQ29udGV4dDpEOXQsQXVkaW9MaXN0ZW5lcjpjbGFzcyBleHRlbmRzIGtRdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJBdWRpb0xpc3RlbmVyIix0aGlzLmNvbnRleHQ9RDl0LmdldENvbnRleHQoKSx0aGlzLmdhaW49dGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKSx0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPW51bGwsdGhpcy50aW1lRGVsdGE9MCx0aGlzLl9jbG9jaz1uZXcgajl0fWdldElucHV0KCl7cmV0dXJuIHRoaXMuZ2Fpbn1yZW1vdmVGaWx0ZXIoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZmlsdGVyJiYodGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPW51bGwpLHRoaXN9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZmlsdGVyfXNldEZpbHRlcih0KXtyZXR1cm4gbnVsbCE9PXRoaXMuZmlsdGVyPyh0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmZpbHRlciksdGhpcy5maWx0ZXIuZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pKTp0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPXQsdGhpcy5nYWluLmNvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzfWdldE1hc3RlclZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRNYXN0ZXJWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9dXBkYXRlTWF0cml4V29ybGQodCl7c3VwZXIudXBkYXRlTWF0cml4V29ybGQodCk7Y29uc3QgZT10aGlzLmNvbnRleHQubGlzdGVuZXIsbj10aGlzLnVwO2lmKHRoaXMudGltZURlbHRhPXRoaXMuX2Nsb2NrLmdldERlbHRhKCksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoVzl0LHE5dCxZOXQpLFg5dC5zZXQoMCwwLC0xKS5hcHBseVF1YXRlcm5pb24ocTl0KSxlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoVzl0LngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoVzl0LnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoVzl0LnosdCksZS5mb3J3YXJkWC5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShYOXQueCx0KSxlLmZvcndhcmRZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKFg5dC55LHQpLGUuZm9yd2FyZFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoWDl0LnosdCksZS51cFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi54LHQpLGUudXBZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueSx0KSxlLnVwWi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKFc5dC54LFc5dC55LFc5dC56KSxlLnNldE9yaWVudGF0aW9uKFg5dC54LFg5dC55LFg5dC56LG4ueCxuLnksbi56KX19LEF1ZGlvTG9hZGVyOkI5dCxBeGVzSGVscGVyOlg4dCxBeGlzSGVscGVyOmZ1bmN0aW9uIFE4dCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BeGlzSGVscGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuQXhlc0hlbHBlci4iKSxuZXcgWDh0KHQpfSxCYWNrU2lkZToxLEJhc2ljRGVwdGhQYWNraW5nOjMyMDAsQmFzaWNTaGFkb3dNYXA6MCxCaW5hcnlUZXh0dXJlTG9hZGVyOmZ1bmN0aW9uIHQ3dCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CaW5hcnlUZXh0dXJlTG9hZGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuRGF0YVRleHR1cmVMb2FkZXIuIiksbmV3IHQ5dCh0KX0sQm9uZTpTM3QsQm9vbGVhbktleWZyYW1lVHJhY2s6RDZ0LEJvdW5kaW5nQm94SGVscGVyOmZ1bmN0aW9uIGU3dCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJvdW5kaW5nQm94SGVscGVyIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIENyZWF0aW5nIGEgVEhSRUUuQm94SGVscGVyIGluc3RlYWQuIiksbmV3IEc4dCh0LGUpfSxCb3gyOnc4dCxCb3gzOkxKdCxCb3gzSGVscGVyOmNsYXNzIGV4dGVuZHMgVTN0e2NvbnN0cnVjdG9yKHQsZT0xNjc3Njk2MCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1uZXcgYjF0O2kuc2V0SW5kZXgobmV3IFFRdChuLDEpKSxpLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQoWzEsMSwxLC0xLDEsMSwtMSwtMSwxLDEsLTEsMSwxLDEsLTEsLTEsMSwtMSwtMSwtMSwtMSwxLC0xLC0xXSwzKSksc3VwZXIoaSxuZXcgSTN0KHtjb2xvcjplLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5ib3g9dCx0aGlzLnR5cGU9IkJveDNIZWxwZXIiLHRoaXMuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9dXBkYXRlTWF0cml4V29ybGQodCl7Y29uc3QgZT10aGlzLmJveDtlLmlzRW1wdHkoKXx8KGUuZ2V0Q2VudGVyKHRoaXMucG9zaXRpb24pLGUuZ2V0U2l6ZSh0aGlzLnNjYWxlKSx0aGlzLnNjYWxlLm11bHRpcGx5U2NhbGFyKC41KSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSl9fSxCb3hCdWZmZXJHZW9tZXRyeTpGMXQsQm94R2VvbWV0cnk6RjF0LEJveEhlbHBlcjpHOHQsQnVmZmVyQXR0cmlidXRlOlFRdCxCdWZmZXJHZW9tZXRyeTpiMXQsQnVmZmVyR2VvbWV0cnlMb2FkZXI6QTl0LEJ5dGVUeXBlOjEwMTAsQ2FjaGU6cTZ0LENhbWVyYTpXMXQsQ2FtZXJhSGVscGVyOmNsYXNzIGV4dGVuZHMgVTN0e2NvbnN0cnVjdG9yKHQpe2NvbnN0IGU9bmV3IGIxdCxuPW5ldyBJM3Qoe2NvbG9yOjE2Nzc3MjE1LHZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSksaT1bXSxyPVtdLG89e30sYT1uZXcgJFF0KDE2NzU1MjAwKSxzPW5ldyAkUXQoMTY3MTE2ODApLGw9bmV3ICRRdCg0Mzc3NSksYz1uZXcgJFF0KDE2Nzc3MjE1KSx1PW5ldyAkUXQoMzM1NTQ0Myk7ZnVuY3Rpb24gaCh0LGUsbil7ZCh0LG4pLGQoZSxuKX1mdW5jdGlvbiBkKHQsZSl7aS5wdXNoKDAsMCwwKSxyLnB1c2goZS5yLGUuZyxlLmIpLHZvaWQgMD09PW9bdF0mJihvW3RdPVtdKSxvW3RdLnB1c2goaS5sZW5ndGgvMy0xKX1oKCJuMSIsIm4yIixhKSxoKCJuMiIsIm40IixhKSxoKCJuNCIsIm4zIixhKSxoKCJuMyIsIm4xIixhKSxoKCJmMSIsImYyIixhKSxoKCJmMiIsImY0IixhKSxoKCJmNCIsImYzIixhKSxoKCJmMyIsImYxIixhKSxoKCJuMSIsImYxIixhKSxoKCJuMiIsImYyIixhKSxoKCJuMyIsImYzIixhKSxoKCJuNCIsImY0IixhKSxoKCJwIiwibjEiLHMpLGgoInAiLCJuMiIscyksaCgicCIsIm4zIixzKSxoKCJwIiwibjQiLHMpLGgoInUxIiwidTIiLGwpLGgoInUyIiwidTMiLGwpLGgoInUzIiwidTEiLGwpLGgoImMiLCJ0IixjKSxoKCJwIiwiYyIsdSksaCgiY24xIiwiY24yIix1KSxoKCJjbjMiLCJjbjQiLHUpLGgoImNmMSIsImNmMiIsdSksaCgiY2YzIiwiY2Y0Iix1KSxlLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQoaSwzKSksZS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgbDF0KHIsMykpLHN1cGVyKGUsbiksdGhpcy50eXBlPSJDYW1lcmFIZWxwZXIiLHRoaXMuY2FtZXJhPXQsdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCYmdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMucG9pbnRNYXA9byx0aGlzLnVwZGF0ZSgpfXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeSxlPXRoaXMucG9pbnRNYXA7Vjh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5jYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLFU4dCgiYyIsZSx0LFY4dCwwLDAsLTEpLFU4dCgidCIsZSx0LFY4dCwwLDAsMSksVTh0KCJuMSIsZSx0LFY4dCwtMSwtMSwtMSksVTh0KCJuMiIsZSx0LFY4dCwxLC0xLC0xKSxVOHQoIm4zIixlLHQsVjh0LC0xLDEsLTEpLFU4dCgibjQiLGUsdCxWOHQsMSwxLC0xKSxVOHQoImYxIixlLHQsVjh0LC0xLC0xLDEpLFU4dCgiZjIiLGUsdCxWOHQsMSwtMSwxKSxVOHQoImYzIixlLHQsVjh0LC0xLDEsMSksVTh0KCJmNCIsZSx0LFY4dCwxLDEsMSksVTh0KCJ1MSIsZSx0LFY4dCwuNywxLjEsLTEpLFU4dCgidTIiLGUsdCxWOHQsLS43LDEuMSwtMSksVTh0KCJ1MyIsZSx0LFY4dCwwLDIsLTEpLFU4dCgiY2YxIixlLHQsVjh0LC0xLDAsMSksVTh0KCJjZjIiLGUsdCxWOHQsMSwwLDEpLFU4dCgiY2YzIixlLHQsVjh0LDAsLTEsMSksVTh0KCJjZjQiLGUsdCxWOHQsMCwxLDEpLFU4dCgiY24xIixlLHQsVjh0LC0xLDAsLTEpLFU4dCgiY24yIixlLHQsVjh0LDEsMCwtMSksVTh0KCJjbjMiLGUsdCxWOHQsMCwtMSwtMSksVTh0KCJjbjQiLGUsdCxWOHQsMCwxLC0xKSx0LmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMH1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9fSxDYW52YXNSZW5kZXJlcjpmdW5jdGlvbiBuN3QoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5DYW52YXNSZW5kZXJlciBoYXMgYmVlbiByZW1vdmVkIil9LENhbnZhc1RleHR1cmU6UTN0LENhdG11bGxSb21DdXJ2ZTM6djR0LENpbmVvblRvbmVNYXBwaW5nOjMsQ2lyY2xlQnVmZmVyR2VvbWV0cnk6ZTR0LENpcmNsZUdlb21ldHJ5OmU0dCxDbGFtcFRvRWRnZVdyYXBwaW5nOktLdCxDbG9jazpqOXQsQ29sb3I6JFF0LENvbG9yS2V5ZnJhbWVUcmFjazpCNnQsQ29tcHJlc3NlZFRleHR1cmU6SjN0LENvbXByZXNzZWRUZXh0dXJlTG9hZGVyOmNsYXNzIGV4dGVuZHMgJDZ0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4saSl7Y29uc3Qgcj10aGlzLG89W10sYT1uZXcgSjN0LHM9bmV3IFo2dCh0aGlzLm1hbmFnZXIpO3Muc2V0UGF0aCh0aGlzLnBhdGgpLHMuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLHMuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLHMuc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKTtsZXQgbD0wO2Z1bmN0aW9uIGMoYyl7cy5sb2FkKHRbY10sKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0LCEwKTtvW2NdPXt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCxmb3JtYXQ6bi5mb3JtYXQsbWlwbWFwczpuLm1pcG1hcHN9LGwrPTEsNj09PWwmJigxPT09bi5taXBtYXBDb3VudCYmKGEubWluRmlsdGVyPWVadCksYS5pbWFnZT1vLGEuZm9ybWF0PW4uZm9ybWF0LGEubmVlZHNVcGRhdGU9ITAsZSYmZShhKSl9KSxuLGkpfWlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKWMoZSk7ZWxzZSBzLmxvYWQodCwoZnVuY3Rpb24odCl7Y29uc3Qgbj1yLnBhcnNlKHQsITApO2lmKG4uaXNDdWJlbWFwKXtjb25zdCB0PW4ubWlwbWFwcy5sZW5ndGgvbi5taXBtYXBDb3VudDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtvW2VdPXttaXBtYXBzOltdfTtmb3IobGV0IHQ9MDt0PG4ubWlwbWFwQ291bnQ7dCsrKW9bZV0ubWlwbWFwcy5wdXNoKG4ubWlwbWFwc1tlKm4ubWlwbWFwQ291bnQrdF0pLG9bZV0uZm9ybWF0PW4uZm9ybWF0LG9bZV0ud2lkdGg9bi53aWR0aCxvW2VdLmhlaWdodD1uLmhlaWdodH1hLmltYWdlPW99ZWxzZSBhLmltYWdlLndpZHRoPW4ud2lkdGgsYS5pbWFnZS5oZWlnaHQ9bi5oZWlnaHQsYS5taXBtYXBzPW4ubWlwbWFwczsxPT09bi5taXBtYXBDb3VudCYmKGEubWluRmlsdGVyPWVadCksYS5mb3JtYXQ9bi5mb3JtYXQsYS5uZWVkc1VwZGF0ZT0hMCxlJiZlKGEpfSksbixpKTtyZXR1cm4gYX19LENvbmVCdWZmZXJHZW9tZXRyeTppNHQsQ29uZUdlb21ldHJ5Omk0dCxDdWJlQ2FtZXJhOlgxdCxDdWJlUmVmbGVjdGlvbk1hcHBpbmc6akt0LEN1YmVSZWZyYWN0aW9uTWFwcGluZzpHS3QsQ3ViZVRleHR1cmU6JDF0LEN1YmVUZXh0dXJlTG9hZGVyOlE2dCxDdWJlVVZSZWZsZWN0aW9uTWFwcGluZzpZS3QsQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmc6WEt0LEN1YmljQmV6aWVyQ3VydmU6UzR0LEN1YmljQmV6aWVyQ3VydmUzOk00dCxDdWJpY0ludGVycG9sYW50Okk2dCxDdWxsRmFjZUJhY2s6MSxDdWxsRmFjZUZyb250OjIsQ3VsbEZhY2VGcm9udEJhY2s6MyxDdWxsRmFjZU5vbmU6MCxDdXJ2ZTpoNHQsQ3VydmVQYXRoOm45dCxDdXN0b21CbGVuZGluZzo1LEN1c3RvbVRvbmVNYXBwaW5nOjUsQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTpuNHQsQ3lsaW5kZXJHZW9tZXRyeTpuNHQsQ3lsaW5kcmljYWw6Y2xhc3N7Y29uc3RydWN0b3IodD0xLGU9MCxuPTApe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMudGhldGE9ZSx0aGlzLnk9bix0aGlzfXNldCh0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy50aGV0YT1lLHRoaXMueT1uLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy50aGV0YT10LnRoZXRhLHRoaXMueT10LnksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtuKm4pLHRoaXMudGhldGE9TWF0aC5hdGFuMih0LG4pLHRoaXMueT1lLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fSxEYXRhVGV4dHVyZTpNM3QsRGF0YVRleHR1cmUyREFycmF5OkswdCxEYXRhVGV4dHVyZTNEOlowdCxEYXRhVGV4dHVyZUxvYWRlcjp0OXQsRGF0YVV0aWxzOmNsYXNze3N0YXRpYyB0b0hhbGZGbG9hdCh0KXskOHRbMF09dDtjb25zdCBlPUs4dFswXTtsZXQgbj1lPj4xNiYzMjc2OCxpPWU+PjEyJjIwNDc7Y29uc3Qgcj1lPj4yMyYyNTU7cmV0dXJuIHI8MTAzP246cj4xNDI/KG58PTMxNzQ0LG58PSgyNTU9PXI/MDoxKSYmODM4ODYwNyZlLG4pOnI8MTEzPyhpfD0yMDQ4LG58PShpPj4xMTQtcikrKGk+PjExMy1yJjEpLG4pOihufD1yLTExMjw8MTB8aT4+MSxuKz0xJmksbil9fSxEZWNyZW1lbnRTdGVuY2lsT3A6NzY4MyxEZWNyZW1lbnRXcmFwU3RlbmNpbE9wOjM0MDU2LERlZmF1bHRMb2FkaW5nTWFuYWdlcjpYNnQsRGVwdGhGb3JtYXQ6ZFp0LERlcHRoU3RlbmNpbEZvcm1hdDpwWnQsRGVwdGhUZXh0dXJlOnQ0dCxEaXJlY3Rpb25hbExpZ2h0OnY5dCxEaXJlY3Rpb25hbExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jb2xvcj1uLHZvaWQgMD09PWUmJihlPTEpO2xldCBpPW5ldyBiMXQ7aS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KFstZSxlLDAsZSxlLDAsZSwtZSwwLC1lLC1lLDAsLWUsZSwwXSwzKSk7Y29uc3Qgcj1uZXcgSTN0KHtmb2c6ITEsdG9uZU1hcHBlZDohMX0pO3RoaXMubGlnaHRQbGFuZT1uZXcgSDN0KGksciksdGhpcy5hZGQodGhpcy5saWdodFBsYW5lKSxpPW5ldyBiMXQsaS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KFswLDAsMCwwLDAsMV0sMykpLHRoaXMudGFyZ2V0TGluZT1uZXcgSDN0KGksciksdGhpcy5hZGQodGhpcy50YXJnZXRMaW5lKSx0aGlzLnVwZGF0ZSgpfWRpc3Bvc2UoKXt0aGlzLmxpZ2h0UGxhbmUuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMubGlnaHRQbGFuZS5tYXRlcmlhbC5kaXNwb3NlKCksdGhpcy50YXJnZXRMaW5lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe0Q4dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC5tYXRyaXhXb3JsZCksQjh0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCksSDh0LnN1YlZlY3RvcnMoQjh0LEQ4dCksdGhpcy5saWdodFBsYW5lLmxvb2tBdChCOHQpLHZvaWQgMCE9PXRoaXMuY29sb3I/KHRoaXMubGlnaHRQbGFuZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvciksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKSk6KHRoaXMubGlnaHRQbGFuZS5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpKSx0aGlzLnRhcmdldExpbmUubG9va0F0KEI4dCksdGhpcy50YXJnZXRMaW5lLnNjYWxlLno9SDh0Lmxlbmd0aCgpfX0sRGlzY3JldGVJbnRlcnBvbGFudDpPNnQsRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6bzR0LERvZGVjYWhlZHJvbkdlb21ldHJ5Om80dCxEb3VibGVTaWRlOjIsRHN0QWxwaGFGYWN0b3I6MjA2LERzdENvbG9yRmFjdG9yOjIwOCxEeW5hbWljQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uIGk3dCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkR5bmFtaWNCdWZmZXJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUoKS5zZXRVc2FnZSggVEhSRUUuRHluYW1pY0RyYXdVc2FnZSApIGluc3RlYWQuIiksbmV3IFFRdCh0LGUpLnNldFVzYWdlKFZadCl9LER5bmFtaWNDb3B5VXNhZ2U6MzUwNTAsRHluYW1pY0RyYXdVc2FnZTpWWnQsRHluYW1pY1JlYWRVc2FnZTozNTA0OSxFZGdlc0dlb21ldHJ5OnU0dCxFZGdlc0hlbHBlcjpmdW5jdGlvbiByN3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5FZGdlc0hlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRWRnZXNHZW9tZXRyeSBpbnN0ZWFkLiIpLG5ldyBVM3QobmV3IHU0dCh0Lmdlb21ldHJ5KSxuZXcgSTN0KHtjb2xvcjp2b2lkIDAhPT1lP2U6MTY3NzcyMTV9KSl9LEVsbGlwc2VDdXJ2ZTpkNHQsRXF1YWxEZXB0aDo0LEVxdWFsU3RlbmNpbEZ1bmM6NTE0LEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nOldLdCxFcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZzpxS3QsRXVsZXI6ZlF0LEV2ZW50RGlzcGF0Y2hlcjpqWnQsRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OnI2dCxFeHRydWRlR2VvbWV0cnk6cjZ0LEZhY2VDb2xvcnM6MSxGaWxlTG9hZGVyOlo2dCxGbGF0U2hhZGluZzoxLEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGU6czF0LEZsb2F0MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gbzd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0MzJCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBsMXQodCxlKX0sRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZTpsMXQsRmxvYXQ2NEF0dHJpYnV0ZTpmdW5jdGlvbiBhN3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5GbG9hdDY0QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGMxdCh0LGUpfSxGbG9hdDY0QnVmZmVyQXR0cmlidXRlOmMxdCxGbG9hdFR5cGU6c1p0LEZvZzpZNXQsRm9nRXhwMjpxNXQsRm9udDpSOXQsRm9udExvYWRlcjpjbGFzcyBleHRlbmRzICQ2dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBaNnQodGhpcy5tYW5hZ2VyKTtvLnNldFBhdGgodGhpcy5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKHQpe2xldCBuO3RyeXtuPUpTT04ucGFyc2UodCl9Y2F0Y2goZSl7Y29uc29sZS53YXJuKCJUSFJFRS5Gb250TG9hZGVyOiB0eXBlZmFjZS5qcyBzdXBwb3J0IGlzIGJlaW5nIGRlcHJlY2F0ZWQuIFVzZSB0eXBlZmFjZS5qc29uIGluc3RlYWQuIiksbj1KU09OLnBhcnNlKHQuc3Vic3RyaW5nKDY1LHQubGVuZ3RoLTIpKX1jb25zdCBpPXIucGFyc2Uobik7ZSYmZShpKX0pLG4saSl9cGFyc2UodCl7cmV0dXJuIG5ldyBSOXQodCl9fSxGcm9udFNpZGU6MCxGcnVzdHVtOmkwdCxHTEJ1ZmZlckF0dHJpYnV0ZTpfOHQsR0xTTDE6IjEwMCIsR0xTTDM6VVp0LEdhbW1hRW5jb2Rpbmc6Ulp0LEdyZWF0ZXJEZXB0aDo2LEdyZWF0ZXJFcXVhbERlcHRoOjUsR3JlYXRlckVxdWFsU3RlbmNpbEZ1bmM6NTE4LEdyZWF0ZXJTdGVuY2lsRnVuYzo1MTYsR3JpZEhlbHBlcjp6OHQsR3JvdXA6SDV0LEhhbGZGbG9hdFR5cGU6bFp0LEhlbWlzcGhlcmVMaWdodDphOXQsSGVtaXNwaGVyZUxpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jb2xvcj1uO2NvbnN0IGk9bmV3IGw2dChlKTtpLnJvdGF0ZVkoLjUqTWF0aC5QSSksdGhpcy5tYXRlcmlhbD1uZXcgS1F0KHt3aXJlZnJhbWU6ITAsZm9nOiExLHRvbmVNYXBwZWQ6ITF9KSx2b2lkIDA9PT10aGlzLmNvbG9yJiYodGhpcy5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITApO2NvbnN0IHI9aS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksbz1uZXcgRmxvYXQzMkFycmF5KDMqci5jb3VudCk7aS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgUVF0KG8sMykpLHRoaXMuYWRkKG5ldyBCMXQoaSx0aGlzLm1hdGVyaWFsKSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jaGlsZHJlblswXS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7Y29uc3QgdD10aGlzLmNoaWxkcmVuWzBdO2lmKHZvaWQgMCE9PXRoaXMuY29sb3IpdGhpcy5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik7ZWxzZXtjb25zdCBlPXQuZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCJjb2xvciIpO1I4dC5jb3B5KHRoaXMubGlnaHQuY29sb3IpLE84dC5jb3B5KHRoaXMubGlnaHQuZ3JvdW5kQ29sb3IpO2ZvcihsZXQgdD0wLG49ZS5jb3VudDt0PG47dCsrKXtjb25zdCBpPXQ8bi8yP1I4dDpPOHQ7ZS5zZXRYWVoodCxpLnIsaS5nLGkuYil9ZS5uZWVkc1VwZGF0ZT0hMH10Lmxvb2tBdChJOHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQubWF0cml4V29ybGQpLm5lZ2F0ZSgpKX19LEhlbWlzcGhlcmVMaWdodFByb2JlOkg5dCxJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmE2dCxJY29zYWhlZHJvbkdlb21ldHJ5OmE2dCxJbWFnZUJpdG1hcExvYWRlcjpOOXQsSW1hZ2VMb2FkZXI6SjZ0LEltYWdlVXRpbHM6eUp0LEltbWVkaWF0ZVJlbmRlck9iamVjdDpUOHQsSW5jcmVtZW50U3RlbmNpbE9wOjc2ODIsSW5jcmVtZW50V3JhcFN0ZW5jaWxPcDozNDA1NSxJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6Qzl0LEluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OlQ5dCxJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcjpnOHQsSW5zdGFuY2VkTWVzaDpOM3QsSW50MTZBdHRyaWJ1dGU6ZnVuY3Rpb24gczd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQxNkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGkxdCh0LGUpfSxJbnQxNkJ1ZmZlckF0dHJpYnV0ZTppMXQsSW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gbDd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IG8xdCh0LGUpfSxJbnQzMkJ1ZmZlckF0dHJpYnV0ZTpvMXQsSW50OEF0dHJpYnV0ZTpmdW5jdGlvbiBjN3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnQ4QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IHQxdCh0LGUpfSxJbnQ4QnVmZmVyQXR0cmlidXRlOnQxdCxJbnRUeXBlOjEwMTMsSW50ZXJsZWF2ZWRCdWZmZXI6JDV0LEludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOlo1dCxJbnRlcnBvbGFudDpONnQsSW50ZXJwb2xhdGVEaXNjcmV0ZTpNWnQsSW50ZXJwb2xhdGVMaW5lYXI6RVp0LEludGVycG9sYXRlU21vb3RoOlRadCxJbnZlcnRTdGVuY2lsT3A6NTM4NixKU09OTG9hZGVyOmZ1bmN0aW9uIHU3dCgpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkpTT05Mb2FkZXIgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sS2VlcFN0ZW5jaWxPcDpIWnQsS2V5ZnJhbWVUcmFjazp6NnQsTE9EOmczdCxMYXRoZUJ1ZmZlckdlb21ldHJ5OnM2dCxMYXRoZUdlb21ldHJ5OnM2dCxMYXllcnM6bVF0LExlbnNGbGFyZTpmdW5jdGlvbiBoN3QoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5MZW5zRmxhcmUgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9vYmplY3RzL0xlbnNmbGFyZS5qcyIpfSxMZXNzRGVwdGg6MixMZXNzRXF1YWxEZXB0aDozLExlc3NFcXVhbFN0ZW5jaWxGdW5jOjUxNSxMZXNzU3RlbmNpbEZ1bmM6NTEzLExpZ2h0Om85dCxMaWdodFByb2JlOlM5dCxMaW5lOkgzdCxMaW5lMzpFOHQsTGluZUJhc2ljTWF0ZXJpYWw6STN0LExpbmVDdXJ2ZTpFNHQsTGluZUN1cnZlMzpUNHQsTGluZURhc2hlZE1hdGVyaWFsOms2dCxMaW5lTG9vcDpqM3QsTGluZVBpZWNlczoxLExpbmVTZWdtZW50czpVM3QsTGluZVN0cmlwOjAsTGluZWFyRW5jb2Rpbmc6Tlp0LExpbmVhckZpbHRlcjplWnQsTGluZWFySW50ZXJwb2xhbnQ6UjZ0LExpbmVhck1pcE1hcExpbmVhckZpbHRlcjoxMDA4LExpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXI6MTAwNyxMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI6aVp0LExpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI6blp0LExpbmVhclRvbmVNYXBwaW5nOjEsTG9hZGVyOiQ2dCxMb2FkZXJVdGlsczpFOXQsTG9hZGluZ01hbmFnZXI6WTZ0LExvZ0x1dkVuY29kaW5nOjMwMDMsTG9vcE9uY2U6MjIwMCxMb29wUGluZ1Bvbmc6MjIwMixMb29wUmVwZWF0OjIyMDEsTHVtaW5hbmNlQWxwaGFGb3JtYXQ6MTAyNSxMdW1pbmFuY2VGb3JtYXQ6MTAyNCxNT1VTRTpIS3QsTWF0ZXJpYWw6VVF0LE1hdGVyaWFsTG9hZGVyOk05dCxNYXRoOmVKdCxNYXRoVXRpbHM6ZUp0LE1hdHJpeDM6Z0p0LE1hdHJpeDQ6clF0LE1heEVxdWF0aW9uOjEwNCxNZXNoOkIxdCxNZXNoQmFzaWNNYXRlcmlhbDpLUXQsTWVzaERlcHRoTWF0ZXJpYWw6TjV0LE1lc2hEaXN0YW5jZU1hdGVyaWFsOkk1dCxNZXNoRmFjZU1hdGVyaWFsOmZ1bmN0aW9uIGQ3dCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NZXNoRmFjZU1hdGVyaWFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhbiBBcnJheSBpbnN0ZWFkLiIpLHR9LE1lc2hMYW1iZXJ0TWF0ZXJpYWw6QzZ0LE1lc2hNYXRjYXBNYXRlcmlhbDpBNnQsTWVzaE5vcm1hbE1hdGVyaWFsOlQ2dCxNZXNoUGhvbmdNYXRlcmlhbDpNNnQsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6UzZ0LE1lc2hTdGFuZGFyZE1hdGVyaWFsOnc2dCxNZXNoVG9vbk1hdGVyaWFsOkU2dCxNaW5FcXVhdGlvbjoxMDMsTWlycm9yZWRSZXBlYXRXcmFwcGluZzpaS3QsTWl4T3BlcmF0aW9uOjEsTXVsdGlNYXRlcmlhbDpmdW5jdGlvbiBwN3QodD1bXSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTXVsdGlNYXRlcmlhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYW4gQXJyYXkgaW5zdGVhZC4iKSx0LmlzTXVsdGlNYXRlcmlhbD0hMCx0Lm1hdGVyaWFscz10LHQuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zbGljZSgpfSx0fSxNdWx0aXBseUJsZW5kaW5nOjQsTXVsdGlwbHlPcGVyYXRpb246MCxOZWFyZXN0RmlsdGVyOkpLdCxOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyOjEwMDUsTmVhcmVzdE1pcE1hcE5lYXJlc3RGaWx0ZXI6MTAwNCxOZWFyZXN0TWlwbWFwTGluZWFyRmlsdGVyOnRadCxOZWFyZXN0TWlwbWFwTmVhcmVzdEZpbHRlcjpRS3QsTmV2ZXJEZXB0aDowLE5ldmVyU3RlbmNpbEZ1bmM6NTEyLE5vQmxlbmRpbmc6MCxOb0NvbG9yczowLE5vVG9uZU1hcHBpbmc6MCxOb3JtYWxBbmltYXRpb25CbGVuZE1vZGU6TFp0LE5vcm1hbEJsZW5kaW5nOjEsTm90RXF1YWxEZXB0aDo3LE5vdEVxdWFsU3RlbmNpbEZ1bmM6NTE3LE51bWJlcktleWZyYW1lVHJhY2s6SDZ0LE9iamVjdDNEOmtRdCxPYmplY3RMb2FkZXI6Y2xhc3MgZXh0ZW5kcyAkNnR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbixpKXtjb25zdCByPXRoaXMsbz0iIj09PXRoaXMucGF0aD9FOXQuZXh0cmFjdFVybEJhc2UodCk6dGhpcy5wYXRoO3RoaXMucmVzb3VyY2VQYXRoPXRoaXMucmVzb3VyY2VQYXRofHxvO2NvbnN0IGE9bmV3IFo2dCh0aGlzLm1hbmFnZXIpO2Euc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24obil7bGV0IG89bnVsbDt0cnl7bz1KU09OLnBhcnNlKG4pfWNhdGNoKGUpe3JldHVybiB2b2lkIDAhPT1pJiZpKGUpLHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUU6T2JqZWN0TG9hZGVyOiBDYW4ndCBwYXJzZSAiK3QrIi4iLGUubWVzc2FnZSl9Y29uc3QgYT1vLm1ldGFkYXRhO3ZvaWQgMCE9PWEmJnZvaWQgMCE9PWEudHlwZSYmImdlb21ldHJ5IiE9PWEudHlwZS50b0xvd2VyQ2FzZSgpP3IucGFyc2UobyxlKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3RMb2FkZXI6IENhbid0IGxvYWQgIit0KX0pLG4saSl9YXN5bmMgbG9hZEFzeW5jKHQsZSl7Y29uc3Qgbj0iIj09PXRoaXMucGF0aD9FOXQuZXh0cmFjdFVybEJhc2UodCk6dGhpcy5wYXRoO3RoaXMucmVzb3VyY2VQYXRoPXRoaXMucmVzb3VyY2VQYXRofHxuO2NvbnN0IGk9bmV3IFo2dCh0aGlzLm1hbmFnZXIpO2kuc2V0UGF0aCh0aGlzLnBhdGgpLGkuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGkuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKTtjb25zdCByPWF3YWl0IGkubG9hZEFzeW5jKHQsZSksbz1KU09OLnBhcnNlKHIpLGE9by5tZXRhZGF0YTtpZih2b2lkIDA9PT1hfHx2b2lkIDA9PT1hLnR5cGV8fCJnZW9tZXRyeSI9PT1hLnR5cGUudG9Mb3dlckNhc2UoKSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogQ2FuJ3QgbG9hZCAiK3QpO3JldHVybiBhd2FpdCB0aGlzLnBhcnNlQXN5bmMobyl9cGFyc2UodCxlKXtjb25zdCBuPXRoaXMucGFyc2VBbmltYXRpb25zKHQuYW5pbWF0aW9ucyksaT10aGlzLnBhcnNlU2hhcGVzKHQuc2hhcGVzKSxyPXRoaXMucGFyc2VHZW9tZXRyaWVzKHQuZ2VvbWV0cmllcyxpKSxvPXRoaXMucGFyc2VJbWFnZXModC5pbWFnZXMsKGZ1bmN0aW9uKCl7dm9pZCAwIT09ZSYmZShsKX0pKSxhPXRoaXMucGFyc2VUZXh0dXJlcyh0LnRleHR1cmVzLG8pLHM9dGhpcy5wYXJzZU1hdGVyaWFscyh0Lm1hdGVyaWFscyxhKSxsPXRoaXMucGFyc2VPYmplY3QodC5vYmplY3QscixzLGEsbiksYz10aGlzLnBhcnNlU2tlbGV0b25zKHQuc2tlbGV0b25zLGwpO2lmKHRoaXMuYmluZFNrZWxldG9ucyhsLGMpLHZvaWQgMCE9PWUpe2xldCB0PSExO2Zvcihjb25zdCBlIGluIG8paWYob1tlXWluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCl7dD0hMDticmVha30hMT09PXQmJmUobCl9cmV0dXJuIGx9YXN5bmMgcGFyc2VBc3luYyh0KXtjb25zdCBlPXRoaXMucGFyc2VBbmltYXRpb25zKHQuYW5pbWF0aW9ucyksbj10aGlzLnBhcnNlU2hhcGVzKHQuc2hhcGVzKSxpPXRoaXMucGFyc2VHZW9tZXRyaWVzKHQuZ2VvbWV0cmllcyxuKSxyPWF3YWl0IHRoaXMucGFyc2VJbWFnZXNBc3luYyh0LmltYWdlcyksbz10aGlzLnBhcnNlVGV4dHVyZXModC50ZXh0dXJlcyxyKSxhPXRoaXMucGFyc2VNYXRlcmlhbHModC5tYXRlcmlhbHMsbykscz10aGlzLnBhcnNlT2JqZWN0KHQub2JqZWN0LGksYSxvLGUpLGw9dGhpcy5wYXJzZVNrZWxldG9ucyh0LnNrZWxldG9ucyxzKTtyZXR1cm4gdGhpcy5iaW5kU2tlbGV0b25zKHMsbCksc31wYXJzZVNoYXBlcyh0KXtjb25zdCBlPXt9O2lmKHZvaWQgMCE9PXQpZm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPShuZXcgcjl0KS5mcm9tSlNPTih0W25dKTtlW2kudXVpZF09aX1yZXR1cm4gZX1wYXJzZVNrZWxldG9ucyh0LGUpe2NvbnN0IG49e30saT17fTtpZihlLnRyYXZlcnNlKChmdW5jdGlvbih0KXt0LmlzQm9uZSYmKGlbdC51dWlkXT10KX0pKSx2b2lkIDAhPT10KWZvcihsZXQgZT0wLHI9dC5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj0obmV3IEMzdCkuZnJvbUpTT04odFtlXSxpKTtuW3IudXVpZF09cn1yZXR1cm4gbn1wYXJzZUdlb21ldHJpZXModCxlKXtjb25zdCBuPXt9O2lmKHZvaWQgMCE9PXQpe2NvbnN0IGk9bmV3IEE5dDtmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2xldCBvO2NvbnN0IGE9dFtyXTtzd2l0Y2goYS50eXBlKXtjYXNlIkJ1ZmZlckdlb21ldHJ5IjpjYXNlIkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IjpvPWkucGFyc2UoYSk7YnJlYWs7Y2FzZSJHZW9tZXRyeSI6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBUaGUgbGVnYWN5IEdlb21ldHJ5IHR5cGUgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4iKTticmVhaztkZWZhdWx0OmEudHlwZSBpbiBiNnQ/bz1iNnRbYS50eXBlXS5mcm9tSlNPTihhLGUpOmNvbnNvbGUud2FybihgVEhSRUUuT2JqZWN0TG9hZGVyOiBVbnN1cHBvcnRlZCBnZW9tZXRyeSB0eXBlICIke2EudHlwZX0iYCl9by51dWlkPWEudXVpZCx2b2lkIDAhPT1hLm5hbWUmJihvLm5hbWU9YS5uYW1lKSwhMD09PW8uaXNCdWZmZXJHZW9tZXRyeSYmdm9pZCAwIT09YS51c2VyRGF0YSYmKG8udXNlckRhdGE9YS51c2VyRGF0YSksblthLnV1aWRdPW99fXJldHVybiBufXBhcnNlTWF0ZXJpYWxzKHQsZSl7Y29uc3Qgbj17fSxpPXt9O2lmKHZvaWQgMCE9PXQpe2NvbnN0IHI9bmV3IE05dDtyLnNldFRleHR1cmVzKGUpO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10W2VdO2lmKCJNdWx0aU1hdGVyaWFsIj09PW8udHlwZSl7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPG8ubWF0ZXJpYWxzLmxlbmd0aDtlKyspe2NvbnN0IGk9by5tYXRlcmlhbHNbZV07dm9pZCAwPT09bltpLnV1aWRdJiYobltpLnV1aWRdPXIucGFyc2UoaSkpLHQucHVzaChuW2kudXVpZF0pfWlbby51dWlkXT10fWVsc2Ugdm9pZCAwPT09bltvLnV1aWRdJiYobltvLnV1aWRdPXIucGFyc2UobykpLGlbby51dWlkXT1uW28udXVpZF19fXJldHVybiBpfXBhcnNlQW5pbWF0aW9ucyh0KXtjb25zdCBlPXt9O2lmKHZvaWQgMCE9PXQpZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IGk9RzZ0LnBhcnNlKHRbbl0pO2VbaS51dWlkXT1pfXJldHVybiBlfXBhcnNlSW1hZ2VzKHQsZSl7Y29uc3Qgbj10aGlzLGk9e307bGV0IHI7ZnVuY3Rpb24gbyh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9dDtyZXR1cm4oZnVuY3Rpb24gaSh0KXtyZXR1cm4gbi5tYW5hZ2VyLml0ZW1TdGFydCh0KSxyLmxvYWQodCwoZnVuY3Rpb24oKXtuLm1hbmFnZXIuaXRlbUVuZCh0KX0pLHZvaWQgMCwoZnVuY3Rpb24oKXtuLm1hbmFnZXIuaXRlbUVycm9yKHQpLG4ubWFuYWdlci5pdGVtRW5kKHQpfSkpfSkoL14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3QoZSk/ZTpuLnJlc291cmNlUGF0aCtlKX1yZXR1cm4gdC5kYXRhP3tkYXRhOmQxdCh0LnR5cGUsdC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH06bnVsbH1pZih2b2lkIDAhPT10JiZ0Lmxlbmd0aD4wKXtjb25zdCBuPW5ldyBZNnQoZSk7cj1uZXcgSjZ0KG4pLHIuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0scj1uLnVybDtpZihBcnJheS5pc0FycmF5KHIpKXtpW24udXVpZF09W107Zm9yKGxldCB0PTAsZT1yLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW8oclt0XSk7bnVsbCE9PWUmJihlIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudD9pW24udXVpZF0ucHVzaChlKTppW24udXVpZF0ucHVzaChuZXcgTTN0KGUuZGF0YSxlLndpZHRoLGUuaGVpZ2h0KSkpfX1lbHNle2NvbnN0IHQ9byhuLnVybCk7bnVsbCE9PXQmJihpW24udXVpZF09dCl9fX1yZXR1cm4gaX1hc3luYyBwYXJzZUltYWdlc0FzeW5jKHQpe2NvbnN0IGU9dGhpcyxuPXt9O2xldCBpO2FzeW5jIGZ1bmN0aW9uIHIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBuPXQscj0vXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChuKT9uOmUucmVzb3VyY2VQYXRoK247cmV0dXJuIGF3YWl0IGkubG9hZEFzeW5jKHIpfXJldHVybiB0LmRhdGE/e2RhdGE6ZDF0KHQudHlwZSx0LmRhdGEpLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fTpudWxsfWlmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjApe2k9bmV3IEo2dCh0aGlzLm1hbmFnZXIpLGkuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPXRbZV0sbz1pLnVybDtpZihBcnJheS5pc0FycmF5KG8pKXtuW2kudXVpZF09W107Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW9bdF0sYT1hd2FpdCByKGUpO251bGwhPT1hJiYoYSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQ/bltpLnV1aWRdLnB1c2goYSk6bltpLnV1aWRdLnB1c2gobmV3IE0zdChhLmRhdGEsYS53aWR0aCxhLmhlaWdodCkpKX19ZWxzZXtjb25zdCB0PWF3YWl0IHIoaS51cmwpO251bGwhPT10JiYobltpLnV1aWRdPXQpfX19cmV0dXJuIG59cGFyc2VUZXh0dXJlcyh0LGUpe2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/dDooY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXIucGFyc2VUZXh0dXJlOiBDb25zdGFudCBzaG91bGQgYmUgaW4gbnVtZXJpYyBmb3JtLiIsdCksZVt0XSl9Y29uc3QgaT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgcj0wLG89dC5sZW5ndGg7cjxvO3IrKyl7Y29uc3Qgbz10W3JdO2xldCBhO3ZvaWQgMD09PW8uaW1hZ2UmJmNvbnNvbGUud2FybignVEhSRUUuT2JqZWN0TG9hZGVyOiBObyAiaW1hZ2UiIHNwZWNpZmllZCBmb3InLG8udXVpZCksdm9pZCAwPT09ZVtvLmltYWdlXSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBpbWFnZSIsby5pbWFnZSk7Y29uc3Qgcz1lW28uaW1hZ2VdO0FycmF5LmlzQXJyYXkocyk/KGE9bmV3ICQxdChzKSw2PT09cy5sZW5ndGgmJihhLm5lZWRzVXBkYXRlPSEwKSk6KGE9cyYmcy5kYXRhP25ldyBNM3Qocy5kYXRhLHMud2lkdGgscy5oZWlnaHQpOm5ldyBiSnQocykscyYmKGEubmVlZHNVcGRhdGU9ITApKSxhLnV1aWQ9by51dWlkLHZvaWQgMCE9PW8ubmFtZSYmKGEubmFtZT1vLm5hbWUpLHZvaWQgMCE9PW8ubWFwcGluZyYmKGEubWFwcGluZz1uKG8ubWFwcGluZyxrOXQpKSx2b2lkIDAhPT1vLm9mZnNldCYmYS5vZmZzZXQuZnJvbUFycmF5KG8ub2Zmc2V0KSx2b2lkIDAhPT1vLnJlcGVhdCYmYS5yZXBlYXQuZnJvbUFycmF5KG8ucmVwZWF0KSx2b2lkIDAhPT1vLmNlbnRlciYmYS5jZW50ZXIuZnJvbUFycmF5KG8uY2VudGVyKSx2b2lkIDAhPT1vLnJvdGF0aW9uJiYoYS5yb3RhdGlvbj1vLnJvdGF0aW9uKSx2b2lkIDAhPT1vLndyYXAmJihhLndyYXBTPW4oby53cmFwWzBdLEw5dCksYS53cmFwVD1uKG8ud3JhcFsxXSxMOXQpKSx2b2lkIDAhPT1vLmZvcm1hdCYmKGEuZm9ybWF0PW8uZm9ybWF0KSx2b2lkIDAhPT1vLnR5cGUmJihhLnR5cGU9by50eXBlKSx2b2lkIDAhPT1vLmVuY29kaW5nJiYoYS5lbmNvZGluZz1vLmVuY29kaW5nKSx2b2lkIDAhPT1vLm1pbkZpbHRlciYmKGEubWluRmlsdGVyPW4oby5taW5GaWx0ZXIsUDl0KSksdm9pZCAwIT09by5tYWdGaWx0ZXImJihhLm1hZ0ZpbHRlcj1uKG8ubWFnRmlsdGVyLFA5dCkpLHZvaWQgMCE9PW8uYW5pc290cm9weSYmKGEuYW5pc290cm9weT1vLmFuaXNvdHJvcHkpLHZvaWQgMCE9PW8uZmxpcFkmJihhLmZsaXBZPW8uZmxpcFkpLHZvaWQgMCE9PW8ucHJlbXVsdGlwbHlBbHBoYSYmKGEucHJlbXVsdGlwbHlBbHBoYT1vLnByZW11bHRpcGx5QWxwaGEpLHZvaWQgMCE9PW8udW5wYWNrQWxpZ25tZW50JiYoYS51bnBhY2tBbGlnbm1lbnQ9by51bnBhY2tBbGlnbm1lbnQpLGlbby51dWlkXT1hfXJldHVybiBpfXBhcnNlT2JqZWN0KHQsZSxuLGkscil7bGV0IG8sYSxzO2Z1bmN0aW9uIGwodCl7cmV0dXJuIHZvaWQgMD09PWVbdF0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgZ2VvbWV0cnkiLHQpLGVbdF19ZnVuY3Rpb24gYyh0KXtpZih2b2lkIDAhPT10KXtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPVtdO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj10W2ldO3ZvaWQgMD09PW5bcl0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLHIpLGUucHVzaChuW3JdKX1yZXR1cm4gZX1yZXR1cm4gdm9pZCAwPT09blt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBtYXRlcmlhbCIsdCksblt0XX19ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdm9pZCAwPT09aVt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCB0ZXh0dXJlIix0KSxpW3RdfXN3aXRjaCh0LnR5cGUpe2Nhc2UiU2NlbmUiOm89bmV3IFg1dCx2b2lkIDAhPT10LmJhY2tncm91bmQmJihvLmJhY2tncm91bmQ9TnVtYmVyLmlzSW50ZWdlcih0LmJhY2tncm91bmQpP25ldyAkUXQodC5iYWNrZ3JvdW5kKTp1KHQuYmFja2dyb3VuZCkpLHZvaWQgMCE9PXQuZW52aXJvbm1lbnQmJihvLmVudmlyb25tZW50PXUodC5lbnZpcm9ubWVudCkpLHZvaWQgMCE9PXQuZm9nJiYoIkZvZyI9PT10LmZvZy50eXBlP28uZm9nPW5ldyBZNXQodC5mb2cuY29sb3IsdC5mb2cubmVhcix0LmZvZy5mYXIpOiJGb2dFeHAyIj09PXQuZm9nLnR5cGUmJihvLmZvZz1uZXcgcTV0KHQuZm9nLmNvbG9yLHQuZm9nLmRlbnNpdHkpKSk7YnJlYWs7Y2FzZSJQZXJzcGVjdGl2ZUNhbWVyYSI6bz1uZXcgcTF0KHQuZm92LHQuYXNwZWN0LHQubmVhcix0LmZhciksdm9pZCAwIT09dC5mb2N1cyYmKG8uZm9jdXM9dC5mb2N1cyksdm9pZCAwIT09dC56b29tJiYoby56b29tPXQuem9vbSksdm9pZCAwIT09dC5maWxtR2F1Z2UmJihvLmZpbG1HYXVnZT10LmZpbG1HYXVnZSksdm9pZCAwIT09dC5maWxtT2Zmc2V0JiYoby5maWxtT2Zmc2V0PXQuZmlsbU9mZnNldCksdm9pZCAwIT09dC52aWV3JiYoby52aWV3PU9iamVjdC5hc3NpZ24oe30sdC52aWV3KSk7YnJlYWs7Y2FzZSJPcnRob2dyYXBoaWNDYW1lcmEiOm89bmV3IGcwdCh0LmxlZnQsdC5yaWdodCx0LnRvcCx0LmJvdHRvbSx0Lm5lYXIsdC5mYXIpLHZvaWQgMCE9PXQuem9vbSYmKG8uem9vbT10Lnpvb20pLHZvaWQgMCE9PXQudmlldyYmKG8udmlldz1PYmplY3QuYXNzaWduKHt9LHQudmlldykpO2JyZWFrO2Nhc2UiQW1iaWVudExpZ2h0IjpvPW5ldyBiOXQodC5jb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpvPW5ldyB2OXQodC5jb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpvPW5ldyBfOXQodC5jb2xvcix0LmludGVuc2l0eSx0LmRpc3RhbmNlLHQuZGVjYXkpO2JyZWFrO2Nhc2UiUmVjdEFyZWFMaWdodCI6bz1uZXcgeDl0KHQuY29sb3IsdC5pbnRlbnNpdHksdC53aWR0aCx0LmhlaWdodCk7YnJlYWs7Y2FzZSJTcG90TGlnaHQiOm89bmV3IGQ5dCh0LmNvbG9yLHQuaW50ZW5zaXR5LHQuZGlzdGFuY2UsdC5hbmdsZSx0LnBlbnVtYnJhLHQuZGVjYXkpO2JyZWFrO2Nhc2UiSGVtaXNwaGVyZUxpZ2h0IjpvPW5ldyBhOXQodC5jb2xvcix0Lmdyb3VuZENvbG9yLHQuaW50ZW5zaXR5KTticmVhaztjYXNlIkxpZ2h0UHJvYmUiOm89KG5ldyBTOXQpLmZyb21KU09OKHQpO2JyZWFrO2Nhc2UiU2tpbm5lZE1lc2giOmE9bCh0Lmdlb21ldHJ5KSxzPWModC5tYXRlcmlhbCksbz1uZXcgdzN0KGEscyksdm9pZCAwIT09dC5iaW5kTW9kZSYmKG8uYmluZE1vZGU9dC5iaW5kTW9kZSksdm9pZCAwIT09dC5iaW5kTWF0cml4JiZvLmJpbmRNYXRyaXguZnJvbUFycmF5KHQuYmluZE1hdHJpeCksdm9pZCAwIT09dC5za2VsZXRvbiYmKG8uc2tlbGV0b249dC5za2VsZXRvbik7YnJlYWs7Y2FzZSJNZXNoIjphPWwodC5nZW9tZXRyeSkscz1jKHQubWF0ZXJpYWwpLG89bmV3IEIxdChhLHMpO2JyZWFrO2Nhc2UiSW5zdGFuY2VkTWVzaCI6YT1sKHQuZ2VvbWV0cnkpLHM9Yyh0Lm1hdGVyaWFsKTtjb25zdCBlPXQuaW5zdGFuY2VNYXRyaXgsbj10Lmluc3RhbmNlQ29sb3I7bz1uZXcgTjN0KGEscyx0LmNvdW50KSxvLmluc3RhbmNlTWF0cml4PW5ldyBRUXQobmV3IEZsb2F0MzJBcnJheShlLmFycmF5KSwxNiksdm9pZCAwIT09biYmKG8uaW5zdGFuY2VDb2xvcj1uZXcgUVF0KG5ldyBGbG9hdDMyQXJyYXkobi5hcnJheSksbi5pdGVtU2l6ZSkpO2JyZWFrO2Nhc2UiTE9EIjpvPW5ldyBnM3Q7YnJlYWs7Y2FzZSJMaW5lIjpvPW5ldyBIM3QobCh0Lmdlb21ldHJ5KSxjKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkxpbmVMb29wIjpvPW5ldyBqM3QobCh0Lmdlb21ldHJ5KSxjKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkxpbmVTZWdtZW50cyI6bz1uZXcgVTN0KGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJQb2ludENsb3VkIjpjYXNlIlBvaW50cyI6bz1uZXcgJDN0KGwodC5nZW9tZXRyeSksYyh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJTcHJpdGUiOm89bmV3IGQzdChjKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkdyb3VwIjpvPW5ldyBINXQ7YnJlYWs7Y2FzZSJCb25lIjpvPW5ldyBTM3Q7YnJlYWs7ZGVmYXVsdDpvPW5ldyBrUXR9aWYoby51dWlkPXQudXVpZCx2b2lkIDAhPT10Lm5hbWUmJihvLm5hbWU9dC5uYW1lKSx2b2lkIDAhPT10Lm1hdHJpeD8oby5tYXRyaXguZnJvbUFycmF5KHQubWF0cml4KSx2b2lkIDAhPT10Lm1hdHJpeEF1dG9VcGRhdGUmJihvLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlKSxvLm1hdHJpeEF1dG9VcGRhdGUmJm8ubWF0cml4LmRlY29tcG9zZShvLnBvc2l0aW9uLG8ucXVhdGVybmlvbixvLnNjYWxlKSk6KHZvaWQgMCE9PXQucG9zaXRpb24mJm8ucG9zaXRpb24uZnJvbUFycmF5KHQucG9zaXRpb24pLHZvaWQgMCE9PXQucm90YXRpb24mJm8ucm90YXRpb24uZnJvbUFycmF5KHQucm90YXRpb24pLHZvaWQgMCE9PXQucXVhdGVybmlvbiYmby5xdWF0ZXJuaW9uLmZyb21BcnJheSh0LnF1YXRlcm5pb24pLHZvaWQgMCE9PXQuc2NhbGUmJm8uc2NhbGUuZnJvbUFycmF5KHQuc2NhbGUpKSx2b2lkIDAhPT10LmNhc3RTaGFkb3cmJihvLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93KSx2b2lkIDAhPT10LnJlY2VpdmVTaGFkb3cmJihvLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93KSx0LnNoYWRvdyYmKHZvaWQgMCE9PXQuc2hhZG93LmJpYXMmJihvLnNoYWRvdy5iaWFzPXQuc2hhZG93LmJpYXMpLHZvaWQgMCE9PXQuc2hhZG93Lm5vcm1hbEJpYXMmJihvLnNoYWRvdy5ub3JtYWxCaWFzPXQuc2hhZG93Lm5vcm1hbEJpYXMpLHZvaWQgMCE9PXQuc2hhZG93LnJhZGl1cyYmKG8uc2hhZG93LnJhZGl1cz10LnNoYWRvdy5yYWRpdXMpLHZvaWQgMCE9PXQuc2hhZG93Lm1hcFNpemUmJm8uc2hhZG93Lm1hcFNpemUuZnJvbUFycmF5KHQuc2hhZG93Lm1hcFNpemUpLHZvaWQgMCE9PXQuc2hhZG93LmNhbWVyYSYmKG8uc2hhZG93LmNhbWVyYT10aGlzLnBhcnNlT2JqZWN0KHQuc2hhZG93LmNhbWVyYSkpKSx2b2lkIDAhPT10LnZpc2libGUmJihvLnZpc2libGU9dC52aXNpYmxlKSx2b2lkIDAhPT10LmZydXN0dW1DdWxsZWQmJihvLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkKSx2b2lkIDAhPT10LnJlbmRlck9yZGVyJiYoby5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyKSx2b2lkIDAhPT10LnVzZXJEYXRhJiYoby51c2VyRGF0YT10LnVzZXJEYXRhKSx2b2lkIDAhPT10LmxheWVycyYmKG8ubGF5ZXJzLm1hc2s9dC5sYXllcnMpLHZvaWQgMCE9PXQuY2hpbGRyZW4pe2NvbnN0IGE9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKylvLmFkZCh0aGlzLnBhcnNlT2JqZWN0KGFbdF0sZSxuLGkscikpfWlmKHZvaWQgMCE9PXQuYW5pbWF0aW9ucyl7Y29uc3QgZT10LmFuaW1hdGlvbnM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspby5hbmltYXRpb25zLnB1c2gocltlW3RdXSl9aWYoIkxPRCI9PT10LnR5cGUpe3ZvaWQgMCE9PXQuYXV0b1VwZGF0ZSYmKG8uYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUpO2NvbnN0IGU9dC5sZXZlbHM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZVt0XSxpPW8uZ2V0T2JqZWN0QnlQcm9wZXJ0eSgidXVpZCIsbi5vYmplY3QpO3ZvaWQgMCE9PWkmJm8uYWRkTGV2ZWwoaSxuLmRpc3RhbmNlKX19cmV0dXJuIG99YmluZFNrZWxldG9ucyh0LGUpezAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGgmJnQudHJhdmVyc2UoKGZ1bmN0aW9uKHQpe2lmKCEwPT09dC5pc1NraW5uZWRNZXNoJiZ2b2lkIDAhPT10LnNrZWxldG9uKXtjb25zdCBuPWVbdC5za2VsZXRvbl07dm9pZCAwPT09bj9jb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogTm8gc2tlbGV0b24gZm91bmQgd2l0aCBVVUlEOiIsdC5za2VsZXRvbik6dC5iaW5kKG4sdC5iaW5kTWF0cml4KX19KSl9c2V0VGV4dHVyZVBhdGgodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiAuc2V0VGV4dHVyZVBhdGgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRSZXNvdXJjZVBhdGgoKS4iKSx0aGlzLnNldFJlc291cmNlUGF0aCh0KX19LE9iamVjdFNwYWNlTm9ybWFsTWFwOjEsT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5Omw2dCxPY3RhaGVkcm9uR2VvbWV0cnk6bDZ0LE9uZUZhY3RvcjoyMDEsT25lTWludXNEc3RBbHBoYUZhY3RvcjoyMDcsT25lTWludXNEc3RDb2xvckZhY3RvcjoyMDksT25lTWludXNTcmNBbHBoYUZhY3RvcjoyMDUsT25lTWludXNTcmNDb2xvckZhY3RvcjoyMDMsT3J0aG9ncmFwaGljQ2FtZXJhOmcwdCxQQ0ZTaGFkb3dNYXA6MSxQQ0ZTb2Z0U2hhZG93TWFwOjIsUE1SRU1HZW5lcmF0b3I6UjB0LFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTpjNnQsUGFyYW1ldHJpY0dlb21ldHJ5OmM2dCxQYXJ0aWNsZTpmdW5jdGlvbiBmN3QodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIiksbmV3IGQzdCh0KX0sUGFydGljbGVCYXNpY01hdGVyaWFsOmZ1bmN0aW9uIG03dCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgRzN0KHQpfSxQYXJ0aWNsZVN5c3RlbTpmdW5jdGlvbiBnN3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgJDN0KHQsZSl9LFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw6ZnVuY3Rpb24gXzd0KHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgRzN0KHQpfSxQYXRoOmk5dCxQZXJzcGVjdGl2ZUNhbWVyYTpxMXQsUGxhbmU6dDB0LFBsYW5lQnVmZmVyR2VvbWV0cnk6YTB0LFBsYW5lR2VvbWV0cnk6YTB0LFBsYW5lSGVscGVyOmNsYXNzIGV4dGVuZHMgSDN0e2NvbnN0cnVjdG9yKHQsZT0xLG49MTY3NzY5NjApe2NvbnN0IGk9bixyPW5ldyBiMXQ7ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSksci5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxzdXBlcihyLG5ldyBJM3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IlBsYW5lSGVscGVyIix0aGlzLnBsYW5lPXQsdGhpcy5zaXplPWU7Y29uc3Qgbz1uZXcgYjF0O28uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGwxdChbMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsLTEsMSwxLC0xLDFdLDMpKSxvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXMuYWRkKG5ldyBCMXQobyxuZXcgS1F0KHtjb2xvcjppLG9wYWNpdHk6LjIsdHJhbnNwYXJlbnQ6ITAsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExfSkpKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtsZXQgZT0tdGhpcy5wbGFuZS5jb25zdGFudDtNYXRoLmFicyhlKTwxZS04JiYoZT0xZS04KSx0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGUpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT1lPDA/MTowLHRoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19LFBvaW50Q2xvdWQ6ZnVuY3Rpb24geTd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgJDN0KHQsZSl9LFBvaW50Q2xvdWRNYXRlcmlhbDpmdW5jdGlvbiB2N3QodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IEczdCh0KX0sUG9pbnRMaWdodDpfOXQsUG9pbnRMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIEIxdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IGQ2dChlLDQsMiksbmV3IEtRdCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxQb2ludHM6JDN0LFBvaW50c01hdGVyaWFsOkczdCxQb2xhckdyaWRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBVM3R7Y29uc3RydWN0b3IodD0xMCxlPTE2LG49OCxpPTY0LHI9NDQ3MzkyNCxvPTg5NDc4NDgpe3I9bmV3ICRRdChyKSxvPW5ldyAkUXQobyk7Y29uc3QgYT1bXSxzPVtdO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZSooMipNYXRoLlBJKSxsPU1hdGguc2luKGkpKnQsYz1NYXRoLmNvcyhpKSp0O2EucHVzaCgwLDAsMCksYS5wdXNoKGwsMCxjKTtjb25zdCB1PTEmbj9yOm87cy5wdXNoKHUucix1LmcsdS5iKSxzLnB1c2godS5yLHUuZyx1LmIpfWZvcihsZXQgZT0wO2U8PW47ZSsrKXtjb25zdCBsPTEmZT9yOm8sYz10LXQvbiplO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCBlPXQvaSooMipNYXRoLlBJKSxuPU1hdGguc2luKGUpKmMscj1NYXRoLmNvcyhlKSpjO2EucHVzaChuLDAscikscy5wdXNoKGwucixsLmcsbC5iKSxlPSh0KzEpL2kqKDIqTWF0aC5QSSksbj1NYXRoLnNpbihlKSpjLHI9TWF0aC5jb3MoZSkqYyxhLnB1c2gobiwwLHIpLHMucHVzaChsLnIsbC5nLGwuYil9fWNvbnN0IGw9bmV3IGIxdDtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBsMXQoYSwzKSksbC5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgbDF0KHMsMykpLHN1cGVyKGwsbmV3IEkzdCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQb2xhckdyaWRIZWxwZXIifX0sUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnI0dCxQb2x5aGVkcm9uR2VvbWV0cnk6cjR0LFBvc2l0aW9uYWxBdWRpbzpjbGFzcyBleHRlbmRzICQ5dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LGUsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9ZSx0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwhMD09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sJiYhMT09PXRoaXMuaXNQbGF5aW5nKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShLOXQsWjl0LEo5dCksUTl0LnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKFo5dCk7Y29uc3QgZT10aGlzLnBhbm5lcjtpZihlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoSzl0LngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoSzl0LnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoSzl0LnosdCksZS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUTl0LngsdCksZS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUTl0LnksdCksZS5vcmllbnRhdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUTl0LnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKEs5dC54LEs5dC55LEs5dC56KSxlLnNldE9yaWVudGF0aW9uKFE5dC54LFE5dC55LFE5dC56KX19LFByb3BlcnR5QmluZGluZzpoOHQsUHJvcGVydHlNaXhlcjplOHQsUXVhZHJhdGljQmV6aWVyQ3VydmU6QzR0LFF1YWRyYXRpY0JlemllckN1cnZlMzpBNHQsUXVhdGVybmlvbjpUSnQsUXVhdGVybmlvbktleWZyYW1lVHJhY2s6VjZ0LFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDpGNnQsUkVWSVNJT046Qkt0LFJHQkFEZXB0aFBhY2tpbmc6MzIwMSxSR0JBRm9ybWF0OmhadCxSR0JBSW50ZWdlckZvcm1hdDoxMDMzLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6Mzc4MTksUkdCQV9BU1RDXzEweDVfRm9ybWF0OjM3ODE2LFJHQkFfQVNUQ18xMHg2X0Zvcm1hdDozNzgxNyxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6Mzc4MTgsUkdCQV9BU1RDXzEyeDEwX0Zvcm1hdDozNzgyMCxSR0JBX0FTVENfMTJ4MTJfRm9ybWF0OjM3ODIxLFJHQkFfQVNUQ180eDRfRm9ybWF0OjM3ODA4LFJHQkFfQVNUQ181eDRfRm9ybWF0OjM3ODA5LFJHQkFfQVNUQ181eDVfRm9ybWF0OjM3ODEwLFJHQkFfQVNUQ182eDVfRm9ybWF0OjM3ODExLFJHQkFfQVNUQ182eDZfRm9ybWF0OjM3ODEyLFJHQkFfQVNUQ184eDVfRm9ybWF0OjM3ODEzLFJHQkFfQVNUQ184eDZfRm9ybWF0OjM3ODE0LFJHQkFfQVNUQ184eDhfRm9ybWF0OjM3ODE1LFJHQkFfQlBUQ19Gb3JtYXQ6MzY0OTIsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6U1p0LFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdDp4WnQsUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0OmJadCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6bVp0LFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDpnWnQsUkdCQV9TM1RDX0RYVDVfRm9ybWF0Ol9adCxSR0JERW5jb2Rpbmc6Qlp0LFJHQkVFbmNvZGluZzpPWnQsUkdCRUZvcm1hdDoxMDIzLFJHQkZvcm1hdDp1WnQsUkdCSW50ZWdlckZvcm1hdDoxMDMyLFJHQk0xNkVuY29kaW5nOkRadCxSR0JNN0VuY29kaW5nOnpadCxSR0JfRVRDMV9Gb3JtYXQ6MzYxOTYsUkdCX0VUQzJfRm9ybWF0OndadCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDp2WnQsUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6eVp0LFJHQl9TM1RDX0RYVDFfRm9ybWF0OmZadCxSR0Zvcm1hdDoxMDMwLFJHSW50ZWdlckZvcm1hdDoxMDMxLFJhd1NoYWRlck1hdGVyaWFsOl8wdCxSYXk6aVF0LFJheWNhc3RlcjpjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbj0wLGk9MS8wKXt0aGlzLnJheT1uZXcgaVF0KHQsZSksdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmNhbWVyYT1udWxsLHRoaXMubGF5ZXJzPW5ldyBtUXQsdGhpcy5wYXJhbXM9e01lc2g6e30sTGluZTp7dGhyZXNob2xkOjF9LExPRDp7fSxQb2ludHM6e3RocmVzaG9sZDoxfSxTcHJpdGU6e319fXNldCh0LGUpe3RoaXMucmF5LnNldCh0LGUpfXNldEZyb21DYW1lcmEodCxlKXtlJiZlLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCh0LngsdC55LC41KS51bnByb2plY3QoZSkuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9ZSk6ZSYmZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldCh0LngsdC55LChlLm5lYXIrZS5mYXIpLyhlLm5lYXItZS5mYXIpKS51bnByb2plY3QoZSksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCgwLDAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihlLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1lKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlOiAiK2UudHlwZSl9aW50ZXJzZWN0T2JqZWN0KHQsZT0hMSxuPVtdKXtyZXR1cm4gdjh0KHQsdGhpcyxuLGUpLG4uc29ydCh5OHQpLG59aW50ZXJzZWN0T2JqZWN0cyh0LGU9ITEsbj1bXSl7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXY4dCh0W2ldLHRoaXMsbixlKTtyZXR1cm4gbi5zb3J0KHk4dCksbn19LFJlY3RBcmVhTGlnaHQ6eDl0LFJlZEZvcm1hdDoxMDI4LFJlZEludGVnZXJGb3JtYXQ6MTAyOSxSZWluaGFyZFRvbmVNYXBwaW5nOjIsUmVwZWF0V3JhcHBpbmc6JEt0LFJlcGxhY2VTdGVuY2lsT3A6NzY4MSxSZXZlcnNlU3VidHJhY3RFcXVhdGlvbjoxMDIsUmluZ0J1ZmZlckdlb21ldHJ5OnU2dCxSaW5nR2VvbWV0cnk6dTZ0LFNSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0Zvcm1hdDozNzg1MSxTUkdCOF9BTFBIQThfQVNUQ18xMHg1X0Zvcm1hdDozNzg0OCxTUkdCOF9BTFBIQThfQVNUQ18xMHg2X0Zvcm1hdDozNzg0OSxTUkdCOF9BTFBIQThfQVNUQ18xMHg4X0Zvcm1hdDozNzg1MCxTUkdCOF9BTFBIQThfQVNUQ18xMngxMF9Gb3JtYXQ6Mzc4NTIsU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfRm9ybWF0OjM3ODUzLFNSR0I4X0FMUEhBOF9BU1RDXzR4NF9Gb3JtYXQ6Mzc4NDAsU1JHQjhfQUxQSEE4X0FTVENfNXg0X0Zvcm1hdDozNzg0MSxTUkdCOF9BTFBIQThfQVNUQ181eDVfRm9ybWF0OjM3ODQyLFNSR0I4X0FMUEhBOF9BU1RDXzZ4NV9Gb3JtYXQ6Mzc4NDMsU1JHQjhfQUxQSEE4X0FTVENfNng2X0Zvcm1hdDozNzg0NCxTUkdCOF9BTFBIQThfQVNUQ184eDVfRm9ybWF0OjM3ODQ1LFNSR0I4X0FMUEhBOF9BU1RDXzh4Nl9Gb3JtYXQ6Mzc4NDYsU1JHQjhfQUxQSEE4X0FTVENfOHg4X0Zvcm1hdDozNzg0NyxTY2VuZTpYNXQsU2NlbmVVdGlsczpaOHQsU2hhZGVyQ2h1bms6czB0LFNoYWRlckxpYjpjMHQsU2hhZGVyTWF0ZXJpYWw6RzF0LFNoYWRvd01hdGVyaWFsOng2dCxTaGFwZTpyOXQsU2hhcGVCdWZmZXJHZW9tZXRyeTpoNnQsU2hhcGVHZW9tZXRyeTpoNnQsU2hhcGVQYXRoOkk5dCxTaGFwZVV0aWxzOmU2dCxTaG9ydFR5cGU6MTAxMSxTa2VsZXRvbjpDM3QsU2tlbGV0b25IZWxwZXI6UDh0LFNraW5uZWRNZXNoOnczdCxTbW9vdGhTaGFkaW5nOjIsU3BoZXJlOiRKdCxTcGhlcmVCdWZmZXJHZW9tZXRyeTpkNnQsU3BoZXJlR2VvbWV0cnk6ZDZ0LFNwaGVyaWNhbDpiOHQsU3BoZXJpY2FsSGFybW9uaWNzMzp3OXQsU3BsaW5lQ3VydmU6azR0LFNwb3RMaWdodDpkOXQsU3BvdExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMga1F0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9ZTtjb25zdCBuPW5ldyBiMXQsaT1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKGxldCB0PTAsZT0xLG49MzI7dDxuO3QrKyxlKyspe2NvbnN0IHI9dC9uKk1hdGguUEkqMixvPWUvbipNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3MobyksTWF0aC5zaW4obyksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgbDF0KGksMykpO2NvbnN0IHI9bmV3IEkzdCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmNvbmU9bmV3IFUzdChuLHIpLHRoaXMuYWRkKHRoaXMuY29uZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jb25lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNvbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCB0PXRoaXMubGlnaHQuZGlzdGFuY2U/dGhpcy5saWdodC5kaXN0YW5jZToxZTMsZT10Kk1hdGgudGFuKHRoaXMubGlnaHQuYW5nbGUpO3RoaXMuY29uZS5zY2FsZS5zZXQoZSxlLHQpLEM4dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHRoaXMuY29uZS5sb29rQXQoQzh0KSx2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxTcHJpdGU6ZDN0LFNwcml0ZU1hdGVyaWFsOko1dCxTcmNBbHBoYUZhY3RvcjoyMDQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjoyMTAsU3JjQ29sb3JGYWN0b3I6MjAyLFN0YXRpY0NvcHlVc2FnZTozNTA0NixTdGF0aWNEcmF3VXNhZ2U6Rlp0LFN0YXRpY1JlYWRVc2FnZTozNTA0NSxTdGVyZW9DYW1lcmE6Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSIsdGhpcy5hc3BlY3Q9MSx0aGlzLmV5ZVNlcD0uMDY0LHRoaXMuY2FtZXJhTD1uZXcgcTF0LHRoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpLHRoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY2FtZXJhUj1uZXcgcTF0LHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMuX2NhY2hlO2lmKGUuZm9jdXMhPT10LmZvY3VzfHxlLmZvdiE9PXQuZm92fHxlLmFzcGVjdCE9PXQuYXNwZWN0KnRoaXMuYXNwZWN0fHxlLm5lYXIhPT10Lm5lYXJ8fGUuZmFyIT09dC5mYXJ8fGUuem9vbSE9PXQuem9vbXx8ZS5leWVTZXAhPT10aGlzLmV5ZVNlcCl7ZS5mb2N1cz10LmZvY3VzLGUuZm92PXQuZm92LGUuYXNwZWN0PXQuYXNwZWN0KnRoaXMuYXNwZWN0LGUubmVhcj10Lm5lYXIsZS5mYXI9dC5mYXIsZS56b29tPXQuem9vbSxlLmV5ZVNlcD10aGlzLmV5ZVNlcDtjb25zdCBuPXQucHJvamVjdGlvbk1hdHJpeC5jbG9uZSgpLGk9ZS5leWVTZXAvMixyPWkqZS5uZWFyL2UuZm9jdXMsbz1lLm5lYXIqTWF0aC50YW4ocVp0KmUuZm92Ki41KS9lLnpvb207bGV0IGEscztVOXQuZWxlbWVudHNbMTJdPS1pLFY5dC5lbGVtZW50c1sxMl09aSxhPS1vKmUuYXNwZWN0K3Iscz1vKmUuYXNwZWN0K3Isbi5lbGVtZW50c1swXT0yKmUubmVhci8ocy1hKSxuLmVsZW1lbnRzWzhdPShzK2EpLyhzLWEpLHRoaXMuY2FtZXJhTC5wcm9qZWN0aW9uTWF0cml4LmNvcHkobiksYT0tbyplLmFzcGVjdC1yLHM9byplLmFzcGVjdC1yLG4uZWxlbWVudHNbMF09MiplLm5lYXIvKHMtYSksbi5lbGVtZW50c1s4XT0ocythKS8ocy1hKSx0aGlzLmNhbWVyYVIucHJvamVjdGlvbk1hdHJpeC5jb3B5KG4pfXRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KFU5dCksdGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkoVjl0KX19LFN0cmVhbUNvcHlVc2FnZTozNTA0MixTdHJlYW1EcmF3VXNhZ2U6MzUwNDAsU3RyZWFtUmVhZFVzYWdlOjM1MDQxLFN0cmluZ0tleWZyYW1lVHJhY2s6VTZ0LFN1YnRyYWN0RXF1YXRpb246MTAxLFN1YnRyYWN0aXZlQmxlbmRpbmc6MyxUT1VDSDpGS3QsVGFuZ2VudFNwYWNlTm9ybWFsTWFwOjAsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTpwNnQsVGV0cmFoZWRyb25HZW9tZXRyeTpwNnQsVGV4dEJ1ZmZlckdlb21ldHJ5OmY2dCxUZXh0R2VvbWV0cnk6ZjZ0LFRleHR1cmU6Ykp0LFRleHR1cmVMb2FkZXI6ZTl0LFRvcnVzQnVmZmVyR2VvbWV0cnk6bTZ0LFRvcnVzR2VvbWV0cnk6bTZ0LFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Omc2dCxUb3J1c0tub3RHZW9tZXRyeTpnNnQsVHJpYW5nbGU6RlF0LFRyaWFuZ2xlRmFuRHJhd01vZGU6MixUcmlhbmdsZVN0cmlwRHJhd01vZGU6MSxUcmlhbmdsZXNEcmF3TW9kZTowLFR1YmVCdWZmZXJHZW9tZXRyeTpfNnQsVHViZUdlb21ldHJ5Ol82dCxVVk1hcHBpbmc6VUt0LFVpbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiBiN3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyByMXQodCxlKX0sVWludDE2QnVmZmVyQXR0cmlidXRlOnIxdCxVaW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24geDd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgYTF0KHQsZSl9LFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZTphMXQsVWludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gdzd0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IGUxdCh0LGUpfSxVaW50OEJ1ZmZlckF0dHJpYnV0ZTplMXQsVWludDhDbGFtcGVkQXR0cmlidXRlOmZ1bmN0aW9uIFM3dCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IG4xdCh0LGUpfSxVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6bjF0LFVuaWZvcm06bTh0LFVuaWZvcm1zTGliOmwwdCxVbmlmb3Jtc1V0aWxzOmoxdCxVbnNpZ25lZEJ5dGVUeXBlOnJadCxVbnNpZ25lZEludDI0OFR5cGU6Y1p0LFVuc2lnbmVkSW50VHlwZTphWnQsVW5zaWduZWRTaG9ydDQ0NDRUeXBlOjEwMTcsVW5zaWduZWRTaG9ydDU1NTFUeXBlOjEwMTgsVW5zaWduZWRTaG9ydDU2NVR5cGU6MTAxOSxVbnNpZ25lZFNob3J0VHlwZTpvWnQsVlNNU2hhZG93TWFwOjMsVmVjdG9yMjptSnQsVmVjdG9yMzpDSnQsVmVjdG9yNDp3SnQsVmVjdG9yS2V5ZnJhbWVUcmFjazpqNnQsVmVydGV4OmZ1bmN0aW9uIE03dCh0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVydGV4IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5WZWN0b3IzIGluc3RlYWQuIiksbmV3IENKdCh0LGUsbil9LFZlcnRleENvbG9yczoyLFZpZGVvVGV4dHVyZTpaM3QsV2ViR0wxUmVuZGVyZXI6VzV0LFdlYkdMQ3ViZVJlbmRlclRhcmdldDpLMXQsV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM6TUp0LFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ6RUp0LFdlYkdMUmVuZGVyVGFyZ2V0OlNKdCxXZWJHTFJlbmRlclRhcmdldEN1YmU6ZnVuY3Rpb24gRTd0KHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldEN1YmUoIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkuIiksbmV3IEsxdCh0LG4pfSxXZWJHTFJlbmRlcmVyOkc1dCxXZWJHTFV0aWxzOkQ1dCxXaXJlZnJhbWVHZW9tZXRyeTp5NnQsV2lyZWZyYW1lSGVscGVyOmZ1bmN0aW9uIFQ3dCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldpcmVmcmFtZUhlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgVTN0KG5ldyB5NnQodC5nZW9tZXRyeSksbmV3IEkzdCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxXcmFwQXJvdW5kRW5kaW5nOmtadCxYSFJMb2FkZXI6ZnVuY3Rpb24gQzd0KHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIiksbmV3IFo2dCh0KX0sWmVyb0N1cnZhdHVyZUVuZGluZzpDWnQsWmVyb0ZhY3RvcjoyMDAsWmVyb1Nsb3BlRW5kaW5nOkFadCxaZXJvU3RlbmNpbE9wOjAsc1JHQkVuY29kaW5nOkladH0pO2NvbnN0IEE3dD17dHlwZToiY2hhbmdlIn0sazd0PXt0eXBlOiJzdGFydCJ9LEw3dD17dHlwZToiZW5kIn07Y2xhc3MgUDd0IGV4dGVuZHMgalp0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx2b2lkIDA9PT1lJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLGU9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmRvbUVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249Im5vbmUiLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRhcmdldD1uZXcgQ0p0LHRoaXMubWluRGlzdGFuY2U9MCx0aGlzLm1heERpc3RhbmNlPTEvMCx0aGlzLm1pblpvb209MCx0aGlzLm1heFpvb209MS8wLHRoaXMubWluUG9sYXJBbmdsZT0wLHRoaXMubWF4UG9sYXJBbmdsZT1NYXRoLlBJLHRoaXMubWluQXppbXV0aEFuZ2xlPS0xLzAsdGhpcy5tYXhBemltdXRoQW5nbGU9MS8wLHRoaXMuZW5hYmxlRGFtcGluZz0hMSx0aGlzLmRhbXBpbmdGYWN0b3I9LjA1LHRoaXMuZW5hYmxlWm9vbT0hMCx0aGlzLnpvb21TcGVlZD0xLHRoaXMuZW5hYmxlUm90YXRlPSEwLHRoaXMucm90YXRlU3BlZWQ9MSx0aGlzLmVuYWJsZVBhbj0hMCx0aGlzLnBhblNwZWVkPTEsdGhpcy5zY3JlZW5TcGFjZVBhbm5pbmc9ITAsdGhpcy5rZXlQYW5TcGVlZD03LHRoaXMuYXV0b1JvdGF0ZT0hMSx0aGlzLmF1dG9Sb3RhdGVTcGVlZD0yLHRoaXMua2V5cz17TEVGVDoiQXJyb3dMZWZ0IixVUDoiQXJyb3dVcCIsUklHSFQ6IkFycm93UmlnaHQiLEJPVFRPTToiQXJyb3dEb3duIn0sdGhpcy5tb3VzZUJ1dHRvbnM9e0xFRlQ6SEt0LlJPVEFURSxNSURETEU6SEt0LkRPTExZLFJJR0hUOkhLdC5QQU59LHRoaXMudG91Y2hlcz17T05FOkZLdC5ST1RBVEUsVFdPOkZLdC5ET0xMWV9QQU59LHRoaXMudGFyZ2V0MD10aGlzLnRhcmdldC5jbG9uZSgpLHRoaXMucG9zaXRpb24wPXRoaXMub2JqZWN0LnBvc2l0aW9uLmNsb25lKCksdGhpcy56b29tMD10aGlzLm9iamVjdC56b29tLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9bnVsbCx0aGlzLmdldFBvbGFyQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5waGl9LHRoaXMuZ2V0QXppbXV0aGFsQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS50aGV0YX0sdGhpcy5nZXREaXN0YW5jZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9iamVjdC5wb3NpdGlvbi5kaXN0YW5jZVRvKHRoaXMudGFyZ2V0KX0sdGhpcy5saXN0ZW5Ub0tleUV2ZW50cz1mdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopLHRoaXMuX2RvbUVsZW1lbnRLZXlFdmVudHM9dH0sdGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtuLnRhcmdldDAuY29weShuLnRhcmdldCksbi5wb3NpdGlvbjAuY29weShuLm9iamVjdC5wb3NpdGlvbiksbi56b29tMD1uLm9iamVjdC56b29tfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7bi50YXJnZXQuY29weShuLnRhcmdldDApLG4ub2JqZWN0LnBvc2l0aW9uLmNvcHkobi5wb3NpdGlvbjApLG4ub2JqZWN0Lnpvb209bi56b29tMCxuLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksbi5kaXNwYXRjaEV2ZW50KEE3dCksbi51cGRhdGUoKSxyPWkuTk9ORX0sdGhpcy51cGRhdGU9KGZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgQ0p0LGg9KG5ldyBUSnQpLnNldEZyb21Vbml0VmVjdG9ycyh0LnVwLG5ldyBDSnQoMCwxLDApKSxkPWguY2xvbmUoKS5pbnZlcnQoKSxwPW5ldyBDSnQsZj1uZXcgVEp0LG09MipNYXRoLlBJO3JldHVybiBmdW5jdGlvbiB0KCl7Y29uc3QgZz1uLm9iamVjdC5wb3NpdGlvbjtlLmNvcHkoZykuc3ViKG4udGFyZ2V0KSxlLmFwcGx5UXVhdGVybmlvbihoKSxhLnNldEZyb21WZWN0b3IzKGUpLG4uYXV0b1JvdGF0ZSYmcj09PWkuTk9ORSYmUygoZnVuY3Rpb24gXygpe3JldHVybiAyKk1hdGguUEkvNjAvNjAqbi5hdXRvUm90YXRlU3BlZWR9KSgpKSxuLmVuYWJsZURhbXBpbmc/KGEudGhldGErPXMudGhldGEqbi5kYW1waW5nRmFjdG9yLGEucGhpKz1zLnBoaSpuLmRhbXBpbmdGYWN0b3IpOihhLnRoZXRhKz1zLnRoZXRhLGEucGhpKz1zLnBoaSk7bGV0IHk9bi5taW5BemltdXRoQW5nbGUsdj1uLm1heEF6aW11dGhBbmdsZTtyZXR1cm4gaXNGaW5pdGUoeSkmJmlzRmluaXRlKHYpJiYoeTwtTWF0aC5QST95Kz1tOnk+TWF0aC5QSSYmKHktPW0pLHY8LU1hdGguUEk/dis9bTp2Pk1hdGguUEkmJih2LT1tKSxhLnRoZXRhPXk8PXY/TWF0aC5tYXgoeSxNYXRoLm1pbih2LGEudGhldGEpKTphLnRoZXRhPih5K3YpLzI/TWF0aC5tYXgoeSxhLnRoZXRhKTpNYXRoLm1pbih2LGEudGhldGEpKSxhLnBoaT1NYXRoLm1heChuLm1pblBvbGFyQW5nbGUsTWF0aC5taW4obi5tYXhQb2xhckFuZ2xlLGEucGhpKSksYS5tYWtlU2FmZSgpLGEucmFkaXVzKj1sLGEucmFkaXVzPU1hdGgubWF4KG4ubWluRGlzdGFuY2UsTWF0aC5taW4obi5tYXhEaXN0YW5jZSxhLnJhZGl1cykpLCEwPT09bi5lbmFibGVEYW1waW5nP24udGFyZ2V0LmFkZFNjYWxlZFZlY3RvcihjLG4uZGFtcGluZ0ZhY3Rvcik6bi50YXJnZXQuYWRkKGMpLGUuc2V0RnJvbVNwaGVyaWNhbChhKSxlLmFwcGx5UXVhdGVybmlvbihkKSxnLmNvcHkobi50YXJnZXQpLmFkZChlKSxuLm9iamVjdC5sb29rQXQobi50YXJnZXQpLCEwPT09bi5lbmFibGVEYW1waW5nPyhzLnRoZXRhKj0xLW4uZGFtcGluZ0ZhY3RvcixzLnBoaSo9MS1uLmRhbXBpbmdGYWN0b3IsYy5tdWx0aXBseVNjYWxhcigxLW4uZGFtcGluZ0ZhY3RvcikpOihzLnNldCgwLDAsMCksYy5zZXQoMCwwLDApKSxsPTEsISEodXx8cC5kaXN0YW5jZVRvU3F1YXJlZChuLm9iamVjdC5wb3NpdGlvbik+b3x8OCooMS1mLmRvdChuLm9iamVjdC5xdWF0ZXJuaW9uKSk+bykmJihuLmRpc3BhdGNoRXZlbnQoQTd0KSxwLmNvcHkobi5vYmplY3QucG9zaXRpb24pLGYuY29weShuLm9iamVjdC5xdWF0ZXJuaW9uKSx1PSExLCEwKX19KSgpLHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe24uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsRyksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixCKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsViksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndoZWVsIixVKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLEgpLG4uZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEYpLG51bGwhPT1uLl9kb21FbGVtZW50S2V5RXZlbnRzJiZuLl9kb21FbGVtZW50S2V5RXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLGopfTtjb25zdCBuPXRoaXMsaT17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fTtsZXQgcj1pLk5PTkU7Y29uc3Qgbz0xZS02LGE9bmV3IGI4dCxzPW5ldyBiOHQ7bGV0IGw9MTtjb25zdCBjPW5ldyBDSnQ7bGV0IHU9ITE7Y29uc3QgaD1uZXcgbUp0LGQ9bmV3IG1KdCxwPW5ldyBtSnQsZj1uZXcgbUp0LG09bmV3IG1KdCxnPW5ldyBtSnQsXz1uZXcgbUp0LHk9bmV3IG1KdCx2PW5ldyBtSnQsYj1bXSx4PXt9O2Z1bmN0aW9uIHcoKXtyZXR1cm4gTWF0aC5wb3coLjk1LG4uem9vbVNwZWVkKX1mdW5jdGlvbiBTKHQpe3MudGhldGEtPXR9ZnVuY3Rpb24gTSh0KXtzLnBoaS09dH1jb25zdCBFPShmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IENKdDtyZXR1cm4gZnVuY3Rpb24gZShuLGkpe3Quc2V0RnJvbU1hdHJpeENvbHVtbihpLDApLHQubXVsdGlwbHlTY2FsYXIoLW4pLGMuYWRkKHQpfX0pKCksVD0oZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBDSnQ7cmV0dXJuIGZ1bmN0aW9uIGUoaSxyKXshMD09PW4uc2NyZWVuU3BhY2VQYW5uaW5nP3Quc2V0RnJvbU1hdHJpeENvbHVtbihyLDEpOih0LnNldEZyb21NYXRyaXhDb2x1bW4ociwwKSx0LmNyb3NzVmVjdG9ycyhuLm9iamVjdC51cCx0KSksdC5tdWx0aXBseVNjYWxhcihpKSxjLmFkZCh0KX19KSgpLEM9KGZ1bmN0aW9uKCl7Y29uc3QgdD1uZXcgQ0p0O3JldHVybiBmdW5jdGlvbiBlKGkscil7Y29uc3Qgbz1uLmRvbUVsZW1lbnQ7aWYobi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYSl7dC5jb3B5KG4ub2JqZWN0LnBvc2l0aW9uKS5zdWIobi50YXJnZXQpO2xldCBlPXQubGVuZ3RoKCk7ZSo9TWF0aC50YW4obi5vYmplY3QuZm92LzIqTWF0aC5QSS8xODApLEUoMippKmUvby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSxUKDIqciplL28uY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCl9ZWxzZSBuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oRShpKihuLm9iamVjdC5yaWdodC1uLm9iamVjdC5sZWZ0KS9uLm9iamVjdC56b29tL28uY2xpZW50V2lkdGgsbi5vYmplY3QubWF0cml4KSxUKHIqKG4ub2JqZWN0LnRvcC1uLm9iamVjdC5ib3R0b20pL24ub2JqZWN0Lnpvb20vby5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gcGFuIGRpc2FibGVkLiIpLG4uZW5hYmxlUGFuPSExKX19KSgpO2Z1bmN0aW9uIEEodCl7bi5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYT9sLz10Om4ub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhuLm9iamVjdC56b29tPU1hdGgubWF4KG4ubWluWm9vbSxNYXRoLm1pbihuLm1heFpvb20sbi5vYmplY3Quem9vbSp0KSksbi5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHU9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbi5lbmFibGVab29tPSExKX1mdW5jdGlvbiBrKHQpe24ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/bCo9dDpuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8obi5vYmplY3Quem9vbT1NYXRoLm1heChuLm1pblpvb20sTWF0aC5taW4obi5tYXhab29tLG4ub2JqZWN0Lnpvb20vdCkpLG4ub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx1PSEwKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLiIpLG4uZW5hYmxlWm9vbT0hMSl9ZnVuY3Rpb24gTCh0KXtoLnNldCh0LmNsaWVudFgsdC5jbGllbnRZKX1mdW5jdGlvbiBQKHQpe2Yuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpfWZ1bmN0aW9uIE4oKXsxPT09Yi5sZW5ndGg/aC5zZXQoYlswXS5wYWdlWCxiWzBdLnBhZ2VZKTpoLnNldCguNSooYlswXS5wYWdlWCtiWzFdLnBhZ2VYKSwuNSooYlswXS5wYWdlWStiWzFdLnBhZ2VZKSl9ZnVuY3Rpb24gSSgpezE9PT1iLmxlbmd0aD9mLnNldChiWzBdLnBhZ2VYLGJbMF0ucGFnZVkpOmYuc2V0KC41KihiWzBdLnBhZ2VYK2JbMV0ucGFnZVgpLC41KihiWzBdLnBhZ2VZK2JbMV0ucGFnZVkpKX1mdW5jdGlvbiBSKCl7Y29uc3QgdD1iWzBdLnBhZ2VYLWJbMV0ucGFnZVgsZT1iWzBdLnBhZ2VZLWJbMV0ucGFnZVksbj1NYXRoLnNxcnQodCp0K2UqZSk7Xy5zZXQoMCxuKX1mdW5jdGlvbiBPKHQpe2lmKDE9PWIubGVuZ3RoKWQuc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7ZC5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1wLnN1YlZlY3RvcnMoZCxoKS5tdWx0aXBseVNjYWxhcihuLnJvdGF0ZVNwZWVkKTtjb25zdCBlPW4uZG9tRWxlbWVudDtTKDIqTWF0aC5QSSpwLngvZS5jbGllbnRIZWlnaHQpLE0oMipNYXRoLlBJKnAueS9lLmNsaWVudEhlaWdodCksaC5jb3B5KGQpfWZ1bmN0aW9uIHoodCl7aWYoMT09PWIubGVuZ3RoKW0uc2V0KHQucGFnZVgsdC5wYWdlWSk7ZWxzZXtjb25zdCBlPVkodCk7bS5zZXQoLjUqKHQucGFnZVgrZS54KSwuNSoodC5wYWdlWStlLnkpKX1nLnN1YlZlY3RvcnMobSxmKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxDKGcueCxnLnkpLGYuY29weShtKX1mdW5jdGlvbiBEKHQpe2NvbnN0IGU9WSh0KSxpPXQucGFnZVgtZS54LHI9dC5wYWdlWS1lLnksbz1NYXRoLnNxcnQoaSppK3Iqcik7eS5zZXQoMCxvKSx2LnNldCgwLE1hdGgucG93KHkueS9fLnksbi56b29tU3BlZWQpKSxBKHYueSksXy5jb3B5KHkpfWZ1bmN0aW9uIEIodCl7ITEhPT1uLmVuYWJsZWQmJigwPT09Yi5sZW5ndGgmJihuLmRvbUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUodC5wb2ludGVySWQpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsSCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsRikpLChmdW5jdGlvbiBlKHQpe2IucHVzaCh0KX0pKHQpLCJ0b3VjaCI9PT10LnBvaW50ZXJUeXBlPyhmdW5jdGlvbiBvKHQpe3N3aXRjaChxKHQpLGIubGVuZ3RoKXtjYXNlIDE6c3dpdGNoKG4udG91Y2hlcy5PTkUpe2Nhc2UgRkt0LlJPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtOKCkscj1pLlRPVUNIX1JPVEFURTticmVhaztjYXNlIEZLdC5QQU46aWYoITE9PT1uLmVuYWJsZVBhbilyZXR1cm47SSgpLHI9aS5UT1VDSF9QQU47YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKG4udG91Y2hlcy5UV08pe2Nhc2UgRkt0LkRPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiB0KCl7bi5lbmFibGVab29tJiZSKCksbi5lbmFibGVQYW4mJkkoKX0pKCkscj1pLlRPVUNIX0RPTExZX1BBTjticmVhaztjYXNlIEZLdC5ET0xMWV9ST1RBVEU6aWYoITE9PT1uLmVuYWJsZVpvb20mJiExPT09bi5lbmFibGVSb3RhdGUpcmV0dXJuOyEoZnVuY3Rpb24gZSgpe24uZW5hYmxlWm9vbSYmUigpLG4uZW5hYmxlUm90YXRlJiZOKCl9KSgpLHI9aS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1icmVhaztkZWZhdWx0OnI9aS5OT05FfXIhPT1pLk5PTkUmJm4uZGlzcGF0Y2hFdmVudChrN3QpfSkodCk6KGZ1bmN0aW9uIGEodCl7bGV0IGU7c3dpdGNoKHQuYnV0dG9uKXtjYXNlIDA6ZT1uLm1vdXNlQnV0dG9ucy5MRUZUO2JyZWFrO2Nhc2UgMTplPW4ubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6ZT1uLm1vdXNlQnV0dG9ucy5SSUdIVDticmVhaztkZWZhdWx0OmU9LTF9c3dpdGNoKGUpe2Nhc2UgSEt0LkRPTExZOmlmKCExPT09bi5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIGUodCl7Xy5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9KSh0KSxyPWkuRE9MTFk7YnJlYWs7Y2FzZSBIS3QuUk9UQVRFOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59ZWxzZXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9YnJlYWs7Y2FzZSBIS3QuUEFOOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtMKHQpLHI9aS5ST1RBVEV9ZWxzZXtpZighMT09PW4uZW5hYmxlUGFuKXJldHVybjtQKHQpLHI9aS5QQU59YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX1yIT09aS5OT05FJiZuLmRpc3BhdGNoRXZlbnQoazd0KX0pKHQpKX1mdW5jdGlvbiBIKHQpeyExIT09bi5lbmFibGVkJiYoInRvdWNoIj09PXQucG9pbnRlclR5cGU/KGZ1bmN0aW9uIGUodCl7c3dpdGNoKHEodCkscil7Y2FzZSBpLlRPVUNIX1JPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjtPKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX1BBTjppZighMT09PW4uZW5hYmxlUGFuKXJldHVybjt6KHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1BBTjppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiBlKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVBhbiYmeih0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1JPVEFURTppZighMT09PW4uZW5hYmxlWm9vbSYmITE9PT1uLmVuYWJsZVJvdGF0ZSlyZXR1cm47IShmdW5jdGlvbiBvKHQpe24uZW5hYmxlWm9vbSYmRCh0KSxuLmVuYWJsZVJvdGF0ZSYmTyh0KX0pKHQpLG4udXBkYXRlKCk7YnJlYWs7ZGVmYXVsdDpyPWkuTk9ORX19KSh0KTooZnVuY3Rpb24gbyh0KXtpZighMSE9PW4uZW5hYmxlZClzd2l0Y2gocil7Y2FzZSBpLlJPVEFURTppZighMT09PW4uZW5hYmxlUm90YXRlKXJldHVybjshKGZ1bmN0aW9uIGUodCl7ZC5zZXQodC5jbGllbnRYLHQuY2xpZW50WSkscC5zdWJWZWN0b3JzKGQsaCkubXVsdGlwbHlTY2FsYXIobi5yb3RhdGVTcGVlZCk7Y29uc3QgZT1uLmRvbUVsZW1lbnQ7UygyKk1hdGguUEkqcC54L2UuY2xpZW50SGVpZ2h0KSxNKDIqTWF0aC5QSSpwLnkvZS5jbGllbnRIZWlnaHQpLGguY29weShkKSxuLnVwZGF0ZSgpfSkodCk7YnJlYWs7Y2FzZSBpLkRPTExZOmlmKCExPT09bi5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIHIodCl7eS5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksdi5zdWJWZWN0b3JzKHksXyksdi55PjA/QSh3KCkpOnYueTwwJiZrKHcoKSksXy5jb3B5KHkpLG4udXBkYXRlKCl9KSh0KTticmVhaztjYXNlIGkuUEFOOmlmKCExPT09bi5lbmFibGVQYW4pcmV0dXJuOyEoZnVuY3Rpb24gbyh0KXttLnNldCh0LmNsaWVudFgsdC5jbGllbnRZKSxnLnN1YlZlY3RvcnMobSxmKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxDKGcueCxnLnkpLGYuY29weShtKSxuLnVwZGF0ZSgpfSkodCl9fSkodCkpfWZ1bmN0aW9uIEYodCl7ITEhPT1uLmVuYWJsZWQmJigidG91Y2giPT09dC5wb2ludGVyVHlwZT8oZnVuY3Rpb24gZSh0KXtuLmRpc3BhdGNoRXZlbnQoTDd0KSxyPWkuTk9ORX0pKCk6KGZ1bmN0aW9uIG8odCl7bi5kaXNwYXRjaEV2ZW50KEw3dCkscj1pLk5PTkV9KSgpLFcodCksMD09PWIubGVuZ3RoJiYobi5kb21FbGVtZW50LnJlbGVhc2VQb2ludGVyQ2FwdHVyZSh0LnBvaW50ZXJJZCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixIKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixGKSkpfWZ1bmN0aW9uIFYodCl7Vyh0KX1mdW5jdGlvbiBVKHQpeyExPT09bi5lbmFibGVkfHwhMT09PW4uZW5hYmxlWm9vbXx8ciE9PWkuTk9ORSYmciE9PWkuUk9UQVRFfHwodC5wcmV2ZW50RGVmYXVsdCgpLG4uZGlzcGF0Y2hFdmVudChrN3QpLChmdW5jdGlvbiBlKHQpe3QuZGVsdGFZPDA/ayh3KCkpOnQuZGVsdGFZPjAmJkEodygpKSxuLnVwZGF0ZSgpfSkodCksbi5kaXNwYXRjaEV2ZW50KEw3dCkpfWZ1bmN0aW9uIGoodCl7ITEhPT1uLmVuYWJsZWQmJiExIT09bi5lbmFibGVQYW4mJihmdW5jdGlvbiBlKHQpe2xldCBlPSExO3N3aXRjaCh0LmNvZGUpe2Nhc2Ugbi5rZXlzLlVQOkMoMCxuLmtleVBhblNwZWVkKSxlPSEwO2JyZWFrO2Nhc2Ugbi5rZXlzLkJPVFRPTTpDKDAsLW4ua2V5UGFuU3BlZWQpLGU9ITA7YnJlYWs7Y2FzZSBuLmtleXMuTEVGVDpDKG4ua2V5UGFuU3BlZWQsMCksZT0hMDticmVhaztjYXNlIG4ua2V5cy5SSUdIVDpDKC1uLmtleVBhblNwZWVkLDApLGU9ITB9ZSYmKHQucHJldmVudERlZmF1bHQoKSxuLnVwZGF0ZSgpKX0pKHQpfWZ1bmN0aW9uIEcodCl7ITEhPT1uLmVuYWJsZWQmJnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBXKHQpe2RlbGV0ZSB4W3QucG9pbnRlcklkXTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoO2UrKylpZihiW2VdLnBvaW50ZXJJZD09dC5wb2ludGVySWQpcmV0dXJuIHZvaWQgYi5zcGxpY2UoZSwxKX1mdW5jdGlvbiBxKHQpe2xldCBlPXhbdC5wb2ludGVySWRdO3ZvaWQgMD09PWUmJihlPW5ldyBtSnQseFt0LnBvaW50ZXJJZF09ZSksZS5zZXQodC5wYWdlWCx0LnBhZ2VZKX1mdW5jdGlvbiBZKHQpe3JldHVybiB4Wyh0LnBvaW50ZXJJZD09PWJbMF0ucG9pbnRlcklkP2JbMV06YlswXSkucG9pbnRlcklkXX1uLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLEcpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsQiksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLFYpLG4uZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsVSx7cGFzc2l2ZTohMX0pLHRoaXMudXBkYXRlKCl9fWNsYXNzIE43dCBleHRlbmRzIGpadHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2xhc3RNZXNoPW51bGwsdGhpcy5fY2xvY2s9bmV3IGo5dCx0aGlzLl9jYW52YXNTaXplPW51bGwsdGhpcy5fbGF5ZXJzQ29uZmlnPW51bGwsdGhpcy5fcnVuQ29sb3I9dH1faXNPYmplY3QodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiYhQXJyYXkuaXNBcnJheSh0KX1fYXBwbHlEZWZhdWx0cyh0LGUpe2xldCBuPXt9O2NvbnN0IGk9W3QsZV07Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XTtmb3IobGV0IHQgaW4gZSl7Y29uc3QgaT10IGluIG47dGhpcy5faXNPYmplY3QoZVt0XSk/blt0XT10aGlzLl9hcHBseURlZmF1bHRzKG5bdF18fHt9LGVbdF0pOml8fChuW3RdPWVbdF0pfX1yZXR1cm4gbn1fY3JlYXRlTGF5ZXJzKCl7aWYodGhpcy5fbGF5ZXJzQ29uZmlnJiZ0aGlzLl9zY2VuZSYmdGhpcy5fbGFzdE1lc2gpe2lmKHRoaXMuX2xheWVyc0NvbmZpZy5zaG93Qm91bmRpbmdCb3gpe3ZhciB0PW5ldyBHOHQodGhpcy5fbGFzdE1lc2gsbmV3ICRRdCgicmdiKDAsIDAsIDI1NSkiKSk7dGhpcy5fc2NlbmUuYWRkKHQpfWlmKHRoaXMuX2xheWVyc0NvbmZpZy5zaG93QXhlcyl7dmFyIGU9bmV3IFg4dCg1KTt0aGlzLl9zY2VuZS5hZGQoZSl9fX1zZXRMYXllcnNDb25maWcodCl7dGhpcy5fbGF5ZXJzQ29uZmlnPXRoaXMuX2FwcGx5RGVmYXVsdHModCx0aGlzLl9sYXllcnNDb25maWd8fHt9KX1fY3JlYXRlV29ybGQodCxlKXtpZih0aGlzLmlzUmVhZHkoKSlyZXR1cm47dGhpcy5fc2NlbmU9bmV3IFg1dDt2YXIgbj1uZXcgSjh0W3QuY2FtZXJhLmNsc10odC5jYW1lcmEuZm92LHRoaXMuX2NhbnZhc1NpemUud2lkdGgvdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQsdC5jYW1lcmEubmVhcix0LmNhbWVyYS5mYXIpO3RoaXMuX2NhbWVyYT1uO3ZhciBpPW5ldyBQN3QobixlKTtjb25zdCByPWk7ci5sb29rU3BlZWQ9LjQsci5tb3ZlbWVudFNwZWVkPTIwLHIubm9GbHk9ITAsci5sb29rVmVydGljYWw9ITAsci5jb25zdHJhaW5WZXJ0aWNhbD0hMCxyLnZlcnRpY2FsTWluPTEsci52ZXJ0aWNhbE1heD0yLHIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLl9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMuX2NhbWVyYUNvbnRyb2xzPWksdGhpcy5fcmVuZGVyZXI9bmV3IEc1dCh7YW50aWFsaWFzOiEwfSksdGhpcy5fcmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KSx0aGlzLl9yZW5kZXJlci5zZXRDbGVhckNvbG9yKDE2Nzc3MjE1LDEpfV9jbGVhclNjZW5lKCl7Zm9yKDt0aGlzLl9zY2VuZS5jaGlsZHJlbi5sZW5ndGg+MDspdGhpcy5fc2NlbmUucmVtb3ZlKHRoaXMuX3NjZW5lLmNoaWxkcmVuWzBdKX1nZXRSZW5kZXJlcigpe3JldHVybiB0aGlzLl9yZW5kZXJlcn1nZXRDYW1lcmFDb250cm9scygpe3JldHVybiB0aGlzLl9jYW1lcmFDb250cm9sc31pc1JlYWR5KCl7cmV0dXJuISF0aGlzLl9jYW1lcmEmJiEhdGhpcy5fY2FtZXJhQ29udHJvbHN9Z2V0Q2FtZXJhUG9zaXRpb24oKXtyZXR1cm57ZmFyOnRoaXMuX2NhbWVyYS5mYXIscG9zaXRpb246dGhpcy5fY2FtZXJhLnBvc2l0aW9uLmNsb25lKCksdGFyZ2V0OnRoaXMuX2NhbWVyYUNvbnRyb2xzLnRhcmdldC5jbG9uZSgpfX1zZXRDYW52YXNTaXplKHQpe3RoaXMuX2NhbnZhc1NpemU9dH1kcmF3KCl7dGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleCksdGhpcy5fY2FtZXJhLmFzcGVjdD10aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0LHRoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KTtjb25zdCB0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKTt0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoZSksdGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCksdGhpcy5fcmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lLHRoaXMuX2NhbWVyYSl9LmJpbmQodGhpcyk7dCgpfXVwZGF0ZVNjZW5lKHQsZSl7bGV0IG49e307ImNvbmZpZyJpbiB0JiZ0LmNvbmZpZyYmKG49SlNPTi5wYXJzZSh0LmNvbmZpZykpLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiYmVmb3JlVXBkYXRlU2NlbmUifSksbj10aGlzLl9hcHBseURlZmF1bHRzKG4se2NhbWVyYTp7Y2xzOiJQZXJzcGVjdGl2ZUNhbWVyYSIsZm92Ojc1LG5lYXI6LjEsZmFyOjFlM30sbGlnaHRzOlt7Y2xzOiJBbWJpZW50TGlnaHQiLGNvbG9yOiIjZmZmZmZmIixpbnRlbnNpdHk6Ljc1fSx7Y2xzOiJEaXJlY3Rpb25hbExpZ2h0Iixjb2xvcjoiI2ZmZmZmZiIsaW50ZW5zaXR5Oi43NSxwb3NpdGlvbjpbMCwtMSwyXX1dfSksdGhpcy5fY3JlYXRlV29ybGQobixlKSx0aGlzLl9jbGVhclNjZW5lKCksdGhpcy5fY3JlYXRlTGlnaHRzKHRoaXMuX3NjZW5lLG4pLHRoaXMuX2NyZWF0ZUdlb21ldHJ5KHQsbiksdGhpcy5fY3JlYXRlTGF5ZXJzKCksdGhpcy5kcmF3KCl9cmVzZXRWaWV3KHQpe2lmKCF0aGlzLmlzUmVhZHkoKSlyZXR1cm47bGV0IGU7dGhpcy5fY2FtZXJhQ29udHJvbHMucmVzZXQoKSwhdCYmdGhpcy5fbGFzdE1lc2gmJihlPXRoaXMuX2xhc3RNZXNoKSxlJiYodGhpcy5fZml0T2JqZWN0VG9WaWV3cG9ydChlKSx0aGlzLl9sYXN0TWVzaD1lKSx0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoKX1fY3JlYXRlR2VvbWV0cnkodCxlKXtjb25zdCBuPXQubWVzaDtuLnZlcnRpY2VzJiZuLmZhY2VzJiZuLmZhY2VzLmxlbmd0aD90aGlzLl9jcmVhdGVNZXNoKG4sZSk6dGhpcy5fY3JlYXRlUG9pbnRDbG91ZChuLGUpfV9jcmVhdGVQb2ludENsb3VkKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5jb2xvcnM7bGV0IHI9e21hdGVyaWFsOntjbHM6IlBvaW50c01hdGVyaWFsIixzaXplOi4wMDV9fTtpJiZpLmxlbmd0aD09bi5sZW5ndGg/ci5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITA6ci5tYXRlcmlhbC5jb2xvcj10aGlzLl9ydW5Db2xvcjtjb25zdCBvPXRoaXMuX2FwcGx5RGVmYXVsdHMoZSxyKSxhPW5ldyBiMXQscz1uZXcgRmxvYXQzMkFycmF5KG4uZmxhdCgpKTtpZihhLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBRUXQocywzKSksaSYmaS5sZW5ndGg9PW4ubGVuZ3RoKXtjb25zdCB0PW5ldyBGbG9hdDMyQXJyYXkoaS5mbGF0KCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09dFtlXS8yNTU7YS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgUVF0KHQsMykpfXZhciBsPW5ldyBKOHRbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpLGM9bmV3ICQzdChhLGwpO3RoaXMuX3NjZW5lLmFkZChjKSx0aGlzLl9sYXN0TWVzaD1jfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fc2lsZW50PSEwLHRoaXMuX2NhbWVyYS5mYXI9ZSx0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KHQueCx0LnksdC56KSx0aGlzLl9jYW1lcmEubG9va0F0KG4uY2xvbmUoKSksdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLl9jYW1lcmFDb250cm9scy50YXJnZXQ9bi5jbG9uZSgpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpLHRoaXMuX3NpbGVudD0hMX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSh0KXt0aGlzLl9zaWxlbnR8fHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLGV2ZW50OnR9KX1fZml0T2JqZWN0VG9WaWV3cG9ydCh0KXtjb25zdCBlPW5ldyBMSnQsbj1uZXcgQ0p0LGk9bmV3IENKdDtlLnNldEZyb21PYmplY3QodCksZS5nZXRDZW50ZXIobiksZS5nZXRTaXplKGkpO2NvbnN0IHI9TWF0aC5tYXgoaS54LGkueSxpLnopLG89dGhpcy5fY2FtZXJhLmZvdiooTWF0aC5QSS8xODApO2xldCBhPTEuMjUqTWF0aC5hYnMoci8oMipNYXRoLnRhbihvLzIpKSk7Y29uc3Qgcz1lLm1pbi56O3RoaXMuc2V0Q2FtZXJhVmlld3BvaW50KHt4Om4ueCx5Om4ueSx6OmF9LDMqKHM8MD8tcythOmEtcyksbil9X2NyZWF0ZU1lc2godCxlKXtjb25zdCBuPXQudmVydGljZXMsaT10LmZhY2VzLHI9dC5jb2xvcnMsbz10aGlzLl9hcHBseURlZmF1bHRzKGUse21hdGVyaWFsOntjbHM6Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIixjb2xvcjoiI2EwYTBhMCIscm91Z2huZXNzOjEsbWV0YWxuZXNzOjB9fSksYT1uZXcgYjF0LHM9bmV3IEZsb2F0MzJBcnJheShuLmZsYXQoKSk7YS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUVF0KHMsMykpO2NvbnN0IGw9bmV3IFVpbnQxNkFycmF5KGkuZmxhdCgpKTtpZihyJiZyLmxlbmd0aCl7Y29uc3QgdD1yLmZsYXQoKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdPXRbZV0vMjU1O2Euc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IFFRdChuZXcgRmxvYXQzMkFycmF5KHQpLDMpKSxvLm1hdGVyaWFsPW8ubWF0ZXJpYWx8fHt9LG8ubWF0ZXJpYWwudmVydGV4Q29sb3JzPSEwfWEuY2VudGVyKCksYS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxhLnNldEluZGV4KG5ldyBRUXQobCwxKSksYS5jb21wdXRlVmVydGV4Tm9ybWFscygpO2xldCBjPW5ldyBKOHRbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpLHU9bmV3IEIxdChhLGMpO3UuY2FzdFNoYWRvdz0hMCx1LnJlY2VpdmVTaGFkb3c9ITAsdGhpcy5fc2NlbmUuYWRkKHUpLHRoaXMuX2xhc3RNZXNoPXV9X2NyZWF0ZUxpZ2h0cyh0LGUpe2ZvcihsZXQgbj0wO248ZS5saWdodHMubGVuZ3RoO24rKyl7Y29uc3QgaT1lLmxpZ2h0c1tuXTtsZXQgcj1uZXcgSjh0W2kuY2xzXShpLmNvbG9yLGkuaW50ZW5zaXR5KTtpLnBvc2l0aW9uJiZyLnBvc2l0aW9uLnNldChpLnBvc2l0aW9uWzBdLGkucG9zaXRpb25bMV0saS5wb3NpdGlvblsyXSksdC5hZGQocil9fX1sZXQgSTd0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZWxlY3RlZFZpZXc9ImFsbCIsdGhpcy5hY3RpdmU9ITEsdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uPUdSLHRoaXMuX3N0ZXBzPVtdLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZD0hMSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSExLHRoaXMuX2lzTWVzaExvYWRpbmc9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb24odGhpcy5ydW4pfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9kYXRhUHJvdmlkZXI9bmV3IERLdCh0aGlzLnJlcXVlc3RNYW5hZ2VyKTtjb25zdCB0PW5ldyBON3QodGhpcy5fcnVuQ29sb3IpO3QuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlVXBkYXRlU2NlbmUiLHRoaXMuX3VwZGF0ZUNhbnZhc1NpemUuYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsdGhpcy5fb25DYW1lcmFQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9tZXNoVmlld2VyPXR9cmVsb2FkKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2RhdGFQcm92aWRlciYmKHRoaXMuX2lzTWVzaExvYWRpbmc9ITAsdGhpcy5fZGF0YVByb3ZpZGVyLnJlbG9hZCh0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSkudGhlbigodD0+e3QmJih0aGlzLl9zdGVwcz10LHRoaXMuX3N0ZXBJbmRleD10Lmxlbmd0aC0xKX0pKS5jYXRjaCgodD0+e2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPVJLdC5DQU5DRUxMRUQpdGhyb3cgdD10fHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3IodCl9KSkpfV91cGRhdGVTY2VuZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7dCYmdC5tZXNoJiYodGhpcy5fbWVzaFZpZXdlci51cGRhdGVTY2VuZSh0LHRoaXMpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWR8fCh0aGlzLl9tZXNoVmlld2VyLnJlc2V0VmlldygpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQ9ITApLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZHx8KHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0aGlzLl9tZXNoVmlld2VyLmdldFJlbmRlcmVyKCkuZG9tRWxlbWVudCksdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkPSEwKSl9X2RlYm91bmNlZEZldGNoTWVzaCgpe3RoaXMuZGVib3VuY2UoImZldGNoTWVzaCIsKCgpPT50aGlzLl9tYXliZUZldGNoTWVzaCgpKSwxMDApfV9tYXliZUZldGNoTWVzaCgpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtpZih0JiYhdC5tZXNoJiYhdC5tZXNoRmV0Y2hpbmcpe3QubWVzaEZldGNoaW5nPSEwLHRoaXMuX2lzTWVzaExvYWRpbmc9ITA7dHJ5e2NvbnN0IGU9eWllbGQgdGhpcy5fZGF0YVByb3ZpZGVyLmZldGNoRGF0YSh0LHRoaXMucnVuLHRoaXMudGFnLHRoaXMuc2FtcGxlKTt0Lm1lc2g9ZVswXSx0aGlzLm5vdGlmeVBhdGgoIl9jdXJyZW50U3RlcC5tZXNoIil9Y2F0Y2godCl7aWYoIXR8fCF0LmNvZGV8fHQuY29kZSE9Ukt0LkNBTkNFTExFRCl0aHJvdyB0PXR8fCJSZXNwb25zZSBwcm9jZXNzaW5nIGZhaWxlZC4iLG5ldyBFcnJvcih0KX1maW5hbGx5e3RoaXMuX2lzTWVzaExvYWRpbmc9ITEsdC5tZXNoRmV0Y2hpbmc9ITF9fX0pKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSgpe2lmKCF0aGlzLl9tZXNoVmlld2VyLmlzUmVhZHkoKSlyZXR1cm47Y29uc3QgdD1uZXcgQ3VzdG9tRXZlbnQoImNhbWVyYS1wb3NpdGlvbi1jaGFuZ2UiLHtkZXRhaWw6dGhpcy5fbWVzaFZpZXdlci5nZXRDYW1lcmFQb3NpdGlvbigpfSk7dGhpcy5kaXNwYXRjaEV2ZW50KHQpfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pfV91cGRhdGVDYW52YXNTaXplKCl7Y29uc3QgdD10aGlzLm9mZnNldFdpZHRoLGU9dCxuPXRoaXMuJCQoIi50Zi1tZXNoLWxvYWRlci1oZWFkZXIiKS5vZmZzZXRIZWlnaHQ7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW52YXNTaXplKHt3aWR0aDp0LGhlaWdodDplLW59KX1yZWRyYXcoKXt0aGlzLl91cGRhdGVDYW52YXNTaXplKCksdGhpcy5pc0Nvbm5lY3RlZCYmdGhpcy5fbWVzaFZpZXdlci5kcmF3KCl9X2hhc0F0TGVhc3RPbmVTdGVwKHQpe3JldHVybiEhdCYmdC5sZW5ndGg+MH1faGFzTXVsdGlwbGVTdGVwcyh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9jdXJyZW50U3RlcCgpe3JldHVybiB0aGlzLl9zdGVwc1t0aGlzLl9zdGVwSW5kZXhdfHxudWxsfWdldCBfc3RlcFZhbHVlKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD90LnN0ZXA6MH1nZXQgX2N1cnJlbnRXYWxsVGltZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/S1IodC53YWxsX3RpbWUpOiIifV9nZXRNYXhTdGVwSW5kZXgodCl7cmV0dXJuIHQubGVuZ3RoLTF9X2dldFNhbXBsZVRleHQodCl7cmV0dXJuIFN0cmluZyh0KzEpfV9oYXNNdWx0aXBsZVNhbXBsZXModCl7cmV0dXJuIHQ+MX1fdXBkYXRlVmlldygpe3RoaXMuX21lc2hWaWV3ZXImJiJhbGwiPT10aGlzLnNlbGVjdGVkVmlldyYmdGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKX10b0xvY2FsZVN0cmluZ18odCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O0k3dC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgY29sb3I9IltbX3J1bkNvbG9yXV0iIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1oZWFkZXIiPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU2FtcGxlcyhvZlNhbXBsZXMpXV0iPgogICAgICAgIDxkaXY+c2FtcGxlOiBbW19nZXRTYW1wbGVUZXh0KHNhbXBsZSldXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXAoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiCiAgICAgICAgICAgICAgPltbdG9Mb2NhbGVTdHJpbmdfKF9zdGVwVmFsdWUpXV08L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc01lc2hMb2FkaW5nXV0iPgogICAgICAgICAgICA8L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU3RlcHMoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfZ2V0TWF4U3RlcEluZGV4KF9zdGVwcyldXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iCiAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgIHZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHN0eWxlPgogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcHg7CiAgICAgIH0KICAgICAgLnRmLW1lc2gtbG9hZGVyLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDVweDsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEk3dC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxJN3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSTd0LnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEk3dC5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxJN3QucHJvdG90eXBlLCJzZWxlY3RlZFZpZXciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJN3QucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsZHIpXSxJN3QucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixON3QpXSxJN3QucHJvdG90eXBlLCJfbWVzaFZpZXdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixES3QpXSxJN3QucHJvdG90eXBlLCJfZGF0YVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEk3dC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxJN3QucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEk3dC5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJN3QucHJvdG90eXBlLCJfbWVzaFZpZXdlckF0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSTd0LnByb3RvdHlwZSwiX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJN3QucHJvdG90eXBlLCJfaXNNZXNoTG9hZGluZyIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxJN3QucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoInJ1biIsInRhZyIsImFjdGl2ZSIsIl9kYXRhUHJvdmlkZXIiLCJfbWVzaFZpZXdlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSTd0LnByb3RvdHlwZSwicmVsb2FkIixudWxsKSx0KFthKCJfY3VycmVudFN0ZXAuKiIsIl9tZXNoVmlld2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxJN3QucHJvdG90eXBlLCJfdXBkYXRlU2NlbmUiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSTd0LnByb3RvdHlwZSwiX2RlYm91bmNlZEZldGNoTWVzaCIsbnVsbCksdChbcygiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEk3dC5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSTd0LnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSTd0LnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCksdChbYSgic2VsZWN0ZWRWaWV3IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxJN3QucHJvdG90eXBlLCJfdXBkYXRlVmlldyIsbnVsbCksSTd0PXQoW2koInRmLW1lc2gtbG9hZGVyIildLEk3dCk7bGV0IFI3dD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fdGFnRmlsdGVyPSIuKiIsdGhpcy5fc2VsZWN0ZWRWaWV3PSJhbGwiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcix3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKCk9Pnt0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemUoKX0pLCExKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9X2dldEFsbENoaWxkcmVuKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLW1lc2gtbG9hZGVyIikpfV9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCh0KXsic2hhcmUiPT10aGlzLl9zZWxlY3RlZFZpZXcmJnRoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgoZT0+e3QudGFyZ2V0IT1lJiZlLnNldENhbWVyYVZpZXdwb2ludCh0LmRldGFpbC5wb3NpdGlvbix0LmRldGFpbC5mYXIsdC5kZXRhaWwudGFyZ2V0KX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKHRoaXMuX3JlbG9hZE1lc2hlcy5iaW5kKHRoaXMpKX1faGFuZGxlV2luZG93UmVzaXplKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKCh0PT57dC5yZWRyYXcoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1fcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoU2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT1hcihTZS5leHBvcnRzLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLl9kYXRhTm90Rm91bmQ9MD09PWUubGVuZ3RoLHRoaXMuX3J1blRvVGFnSW5mbz10fSkpfV9yZWxvYWRNZXNoZXMoKXt0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnSW5mbyxlPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtmdW5jdGlvbiBpKGUpe2NvbnN0IG49dFtlLnJ1bl1bZS50YWddLnNhbXBsZXM7cmV0dXJuIFNlLmV4cG9ydHMucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gTXIoU2UuZXhwb3J0cy5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX19O1I3dC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IHNsb3Q9InNpZGViYXIiIGNsYXNzPSJhbGwtY29udHJvbHMiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiB2aWV3LWNvbnRyb2wiPgogICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Qb2ludCBvZiB2aWV3PC9oMz4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgICAgICAgIGlkPSJ2aWV3LXJhZGlvLWdyb3VwIgogICAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVmlld319IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9ImFsbC1yYWRpby1idXR0b24iIG5hbWU9ImFsbCI+CiAgICAgICAgICAgICAgICAgIERpc3BsYXkgYWxsIHBvaW50cwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0iYWxsLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFpvb20gYW5kIGNlbnRlciBjYW1lcmEgdG8gZGlzcGxheSBhbGwgcG9pbnRzIGF0IG9uY2UuIE5vdGUsCiAgICAgICAgICAgICAgICAgIHRoYXQgc29tZSBwb2ludHMgY291bGQgYmUgdG9vIGZhciAoaS5lLiB0b28gc21hbGwpIHRvIGJlCiAgICAgICAgICAgICAgICAgIHZpc2libGUuCiAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJ1c2VyLXJhZGlvLWJ1dHRvbiIgbmFtZT0idXNlciI+CiAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmlldwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0idXNlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBLZWVwIGN1cnJlbnQgY2FtZXJhIHBvc2l0aW9uIGFuZCB6b29tIGxldmVsLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ic2hhcmUtcmFkaW8tYnV0dG9uIiBuYW1lPSJzaGFyZSI+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludAogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0ic2hhcmUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgU2hhcmUgdmlld3BvaW50IGFtb25nIGFsbCBjYW1lcmFzLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHBvaW50IGNsb3VkIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHBvaW50IGNsb3VkIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1tZXNoLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLXZpZXc9IltbX3NlbGVjdGVkVmlld11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHNhbXBsZT0iW1tpdGVtLnNhbXBsZV1dIgogICAgICAgICAgICAgICAgICBvZi1zYW1wbGVzPSJbW2l0ZW0ub2ZTYW1wbGVzXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgY2xhc3M9InRmLW1lc2gtbG9hZGVyLWNvbnRhaW5lciIKICAgICAgICAgICAgICAgICAgb24tY2FtZXJhLXBvc2l0aW9uLWNoYW5nZT0iX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2VkIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1tZXNoLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAucnVucy1zZWxlY3RvciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CgogICAgICB0Zi1ydW5zLXNlbGVjdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIGgzLnRpdGxlIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC52aWV3LWNvbnRyb2wgcGFwZXItcmFkaW8tZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQogICAgICAvKiBMYXlvdXQgbXVzdCBiZSBob3Jpem9udGFsLCBpLmUuIGl0ZW1zIGFycmFuZ2VkIGluIGEgcm93LiBJZiBpdGVtcyBjYW5ub3QgZml0IGluIGEgcm93LAogICAgICAgKiB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBuZXh0IGxpbmUuIEFsbCBpdGVtcyBtdXN0IGJlIHNxdWFyZSBhdCBhbGwgdGltZXMuIE1pbmltdW0gc2l6ZSBvZgogICAgICAgKiB0aGUgaXRlbSBpcyA0ODBweC4gVGhpcyBtZWFucyB0aGF0IG1heGltdW0gc2l6ZSBvZiB0aGUgaXRlbSBtdXN0IGJlIDQ4MHB4ICsgNDc5cHggPSA5NTlweC4KICAgICAgICogKi8KICAgICAgLmhvcml6b250YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgdGYtbWVzaC1sb2FkZXIgewogICAgICAgIHdpZHRoOiA0ODBweDsKICAgICAgICBmbGV4LWJhc2lzOiA0ODBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFI3dC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFI3dC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUjd0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFI3dC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUjd0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUjd0LnByb3RvdHlwZSwiX3NlbGVjdGVkVmlldyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxSN3QucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxSN3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksUjd0PXQoW2koIm1lc2gtZGFzaGJvYXJkIiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUjd0KTtsZXQgTzd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5PXt9LHRoaXMuX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnk9e30sdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uPXtzY2FsZTpHUn0sdGhpcy5fY2FuY2VsbGVyPW5ldyBYUix0aGlzLl94Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPSgpPT57Y29uc3QgdD1uZXcgck8uU2NhbGVzLkxpbmVhcjtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyByTy5BeGVzLk51bWVyaWModCwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC5yZWNhbGx9fSx0aGlzLl95VmFsdWVBY2Nlc3Nvcj10PT50LnByZWNpc2lvbix0aGlzLl90b29sdGlwQ29sdW1ucz0oKCk9Pntjb25zdCB0PXdUdCg0KSxlPWU9PmlzTmFOKGUpPyJOYU4iOnQoZSk7cmV0dXJuW3t0aXRsZToiUnVuIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlRocmVzaG9sZCIsZXZhbHVhdGU6dD0+ZSh0LmRhdHVtLnRocmVzaG9sZHMpfSx7dGl0bGU6IlByZWNpc2lvbiIsZXZhbHVhdGU6dD0+ZSh0LmRhdHVtLnByZWNpc2lvbil9LHt0aXRsZToiUmVjYWxsIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0ucmVjYWxsKX0se3RpdGxlOiJUUCIsZXZhbHVhdGU6dD0+dC5kYXR1bS50cnVlX3Bvc2l0aXZlc30se3RpdGxlOiJGUCIsZXZhbHVhdGU6dD0+dC5kYXR1bS5mYWxzZV9wb3NpdGl2ZXN9LHt0aXRsZToiVE4iLGV2YWx1YXRlOnQ9PnQuZGF0dW0udHJ1ZV9uZWdhdGl2ZXN9LHt0aXRsZToiRk4iLGV2YWx1YXRlOnQ9PnQuZGF0dW0uZmFsc2VfbmVnYXRpdmVzfV19KSgpLHRoaXMuX3Nlcmllc0RhdGFGaWVsZHM9WyJ0aHJlc2hvbGRzIiwicHJlY2lzaW9uIiwicmVjYWxsIiwidHJ1ZV9wb3NpdGl2ZXMiLCJmYWxzZV9wb3NpdGl2ZXMiLCJ0cnVlX25lZ2F0aXZlcyIsImZhbHNlX25lZ2F0aXZlcyJdLHRoaXMuX2RlZmF1bHRYUmFuZ2U9Wy0uMDUsMS4wNV0sdGhpcy5fZGVmYXVsdFlSYW5nZT1bLS4wNSwxLjA1XSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1fcigpLnBsdWdpblJvdXRlKCJwcl9jdXJ2ZXMiLCIvcHJfY3VydmVzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPWlPKGkse3RhZzp0aGlzLnRhZyxydW46dH0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMuX3Ntb290aGluZ0VuYWJsZWQ9ITF9X2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKXtyZXR1cm4odCxlLG4pPT57dGhpcy5zZXQoIl9ydW5Ub0RhdGFPdmVyVGltZSIsT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub0RhdGFPdmVyVGltZSxuKSl9fV9jb21wdXRlUnVuQ29sb3IodCl7cmV0dXJuIEdSKHQpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9hdHRhY2hlZD0hMCx0aGlzLnJlbG9hZCgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXtyZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKX1yZWxvYWQoKXt0aGlzLl9hdHRhY2hlZCYmKDAhPT10aGlzLnJ1bnMubGVuZ3RoP3RoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLnJlbG9hZCgpOnRoaXMuc2V0KCJfcnVuVG9EYXRhT3ZlclRpbWUiLHt9KSl9X3NldENoYXJ0RGF0YSgpe3ZhciB0PXRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5LGU9dGhpcy5fcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSxuPXRoaXMuX3NldE9mUmVsZXZhbnRSdW5zO1NlLmV4cG9ydHMuZm9yT3duKHQsKChpLHIpPT57Y29uc3Qgbz1lW3JdO28mJnRbcl0uc3RlcD09PW8uc3RlcHx8KG5bcl0/dGhpcy5fdXBkYXRlU2VyaWVzRGF0YUZvclJ1bihyLGkpOnRoaXMuX2NsZWFyU2VyaWVzRGF0YShyKSl9KSl9X3VwZGF0ZVNlcmllc0RhdGFGb3JSdW4odCxlKXtjb25zdCBuPVNlLmV4cG9ydHMucmVkdWNlKHRoaXMuX3Nlcmllc0RhdGFGaWVsZHMsKCh0LG4pPT4odFtuXT1lW25dLnNsaWNlKCkucmV2ZXJzZSgpLHQpKSx7fSksaT1uZXcgQXJyYXkoblt0aGlzLl9zZXJpZXNEYXRhRmllbGRzWzBdXS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWlbdF09U2UuZXhwb3J0cy5tYXBWYWx1ZXMobiwoZT0+ZVt0XSkpO2NvbnN0IHI9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7ci5zZXRTZXJpZXNEYXRhKHQsaSksci5jb21taXRDaGFuZ2VzKCl9X2NsZWFyU2VyaWVzRGF0YSh0KXtjb25zdCBlPXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpO2Uuc2V0U2VyaWVzRGF0YSh0LFtdKSxlLmNvbW1pdENoYW5nZXMoKX1fdXBkYXRlUnVuVG9QckN1cnZlRW50cnkoKXt2YXIgdD10aGlzLnJ1blRvU3RlcENhcDtjb25zdCBlPXt9O1NlLmV4cG9ydHMuZm9yT3duKHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLCgobixpKT0+e24mJm4ubGVuZ3RoJiYoZVtpXT10aGlzLl9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcCh0W2ldLG4pKX0pKSx0aGlzLnNldCgiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLHRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5KSx0aGlzLnNldCgiX3J1blRvUHJDdXJ2ZUVudHJ5IixlKX1fbm90aWZ5RGF0YUNoYW5nZSgpe3RoaXMub25EYXRhQ2hhbmdlJiZ0aGlzLm9uRGF0YUNoYW5nZSh0aGlzLl9ydW5Ub0RhdGFPdmVyVGltZSl9X2NvbXB1dGVFbnRyeUNsb3Nlc3RPckVxdWFsVG9TdGVwQ2FwKHQsZSl7Y29uc3Qgbj1NYXRoLm1pbihTZS5leHBvcnRzLnNvcnRlZEluZGV4KGUubWFwKCh0PT50LnN0ZXApKSx0KSxlLmxlbmd0aC0xKTtyZXR1cm4gZVtuXX1nZXQgX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSgpe3ZhciB0PXRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5O3JldHVybiBTZS5leHBvcnRzLmZpbHRlcih0aGlzLnJ1bnMsKGU9PnRbZV0pKS5zb3J0KCl9Z2V0IF9zZXRPZlJlbGV2YW50UnVucygpe2NvbnN0IHQ9e307cmV0dXJuIFNlLmV4cG9ydHMuZm9yRWFjaCh0aGlzLl9ydW5zV2l0aFN0ZXBBdmFpbGFibGUsKGU9Pnt0W2VdPSEwfSkpLHR9X2NvbXB1dGVDdXJyZW50U3RlcEZvclJ1bih0LGUpe2NvbnN0IG49dFtlXTtyZXR1cm4gbj9uLnN0ZXA6bnVsbH1fY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bih0LGUpe2NvbnN0IG49dFtlXTtyZXR1cm4gbj9uZXcgRGF0ZSgxZTMqbi53YWxsX3RpbWUpLnRvU3RyaW5nKCk6bnVsbH1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV9yZXNldERvbWFpbigpe3RoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLnJlc2V0RG9tYWluKCl9cmVkcmF3KCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVkcmF3KCl9fTtPN3QudGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgeC1jb21wb25lbnRzLWNyZWF0aW9uLW1ldGhvZD0iW1tfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICB5LXZhbHVlLWFjY2Vzc29yPSJbW195VmFsdWVBY2Nlc3Nvcl1dIgogICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlRnVuY3Rpb25dXSIKICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW19kZWZhdWx0WFJhbmdlXV0iCiAgICAgIGRlZmF1bHQteS1yYW5nZT0iW1tfZGVmYXVsdFlSYW5nZV1dIgogICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgZGF0YS1zZXJpZXM9IltbcnVuc11dIgogICAgICBsb2FkLWtleT0iW1t0YWddXSIKICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKV1dIgogICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICA+PC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgoKICAgIDxkaXYgaWQ9ImJ1dHRvbnMtcm93Ij4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iUmVzZXQgYXhlcyB0byBbMCwgMV0uIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InN0ZXAtbGVnZW5kIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTdGVwQXZhaWxhYmxlXV0iIGFzPSJydW4iPgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1yb3ciPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iY29sb3ItYm94IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDogW1tfY29tcHV0ZVJ1bkNvbG9yKHJ1bildXTsiCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICBbW3J1bl1dIGlzIGF0CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcC1sYWJlbC10ZXh0Ij4KICAgICAgICAgICAgc3RlcCBbW19jb21wdXRlQ3VycmVudFN0ZXBGb3JSdW4oX3J1blRvUHJDdXJ2ZUVudHJ5LCBydW4pXV0gPC9zcGFuCiAgICAgICAgICA+PGJyIC8+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2FsbC10aW1lLWxhYmVsLXRleHQiPgogICAgICAgICAgICAoW1tfY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSkKICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgICNzdGVwLWxlZ2VuZCB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBmb250LXNpemU6IDAuOGVtOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAubGVnZW5kLXJvdyB7CiAgICAgICAgbWFyZ2luOiA1cHggMCA1cHggMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuY29sb3ItYm94IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgfQogICAgICAuc3RlcC1sYWJlbC10ZXh0IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAud2FsbC10aW1lLWxhYmVsLXRleHQgewogICAgICAgIGNvbG9yOiAjODg4OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sTzd0LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxPN3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTzd0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTzd0LnByb3RvdHlwZSwicnVuVG9TdGVwQ2FwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0sTzd0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPN3QucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTzd0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE83dC5wcm90b3R5cGUsIl9ydW5Ub1ByQ3VydmVFbnRyeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPN3QucHJvdG90eXBlLCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPN3QucHJvdG90eXBlLCJfcnVuVG9EYXRhT3ZlclRpbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxPN3QucHJvdG90eXBlLCJvbkRhdGFDaGFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTzd0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGVGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixYUildLE83dC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPN3QucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTzd0LnByb3RvdHlwZSwiX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTzd0LnByb3RvdHlwZSwiX3lWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPN3QucHJvdG90eXBlLCJfdG9vbHRpcENvbHVtbnMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLE83dC5wcm90b3R5cGUsIl9zZXJpZXNEYXRhRmllbGRzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPN3QucHJvdG90eXBlLCJfZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sTzd0LnByb3RvdHlwZSwiX2RlZmF1bHRZUmFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxPN3QucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPN3QucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFthKCJydW5zIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxPN3QucHJvdG90eXBlLCJyZWxvYWQiLG51bGwpLHQoW2EoIl9ydW5Ub1ByQ3VydmVFbnRyeSIsIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5IiwiX3NldE9mUmVsZXZhbnRSdW5zIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxPN3QucHJvdG90eXBlLCJfc2V0Q2hhcnREYXRhIixudWxsKSx0KFthKCJfcnVuVG9EYXRhT3ZlclRpbWUiLCJydW5Ub1N0ZXBDYXAiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLE83dC5wcm90b3R5cGUsIl91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSIsbnVsbCksdChbYSgiX3J1blRvRGF0YU92ZXJUaW1lIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxPN3QucHJvdG90eXBlLCJfbm90aWZ5RGF0YUNoYW5nZSIsbnVsbCksdChbcygicnVucyIsIl9ydW5Ub1ByQ3VydmVFbnRyeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTzd0LnByb3RvdHlwZSwiX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSIsbnVsbCksdChbcygiX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLE83dC5wcm90b3R5cGUsIl9zZXRPZlJlbGV2YW50UnVucyIsbnVsbCksTzd0PXQoW2koInRmLXByLWN1cnZlLWNhcmQiKV0sTzd0KTtsZXQgejd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1blRvU3RlcEluZGV4PXt9fV9jb21wdXRlQ29sb3JGb3JSdW4odCl7cmV0dXJuIEdSKHQpfV9jb21wdXRlVGltZVRleHRGb3JSdW4odCxlLG4saSl7Y29uc3Qgcj1lW25dO2lmKCFTZS5leHBvcnRzLmlzTnVtYmVyKHIpKXJldHVybiIiO2NvbnN0IG89dFtuXTtpZighbylyZXR1cm4iIjtjb25zdCBhPW9bcl1baV07aWYoInN0ZXAiPT09aSlyZXR1cm5gc3RlcCAke2F9YDtpZigicmVsYXRpdmUiPT09aSlyZXR1cm4gYTwxP2AkeygxZTMqYSkudG9GaXhlZCgyKX0gbXNgOmAke2EudG9GaXhlZCgyKX0gc2A7aWYoIndhbGxfdGltZSI9PT1pKXJldHVybiBuZXcgRGF0ZSgxZTMqYSkudG9TdHJpbmcoKTt0aHJvdyBuZXcgRXJyb3IoYFRoZSBkaXNwbGF5IHR5cGUgb2YgJHtpfSBpcyBub3QgcmVjb2duaXplZC5gKX1fc2xpZGVyVmFsdWVDaGFuZ2VkKHQpe2NvbnN0IGU9dC50YXJnZXQuZGF0YXNldC5ydW4sbj10LnRhcmdldC5pbW1lZGlhdGVWYWx1ZSxpPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fcnVuVG9TdGVwSW5kZXgpO2lzTmFOKG4pP2RlbGV0ZSBpW2VdOmlbZV09dC50YXJnZXQuaW1tZWRpYXRlVmFsdWUsdGhpcy5fcnVuVG9TdGVwSW5kZXg9aX1fY29tcHV0ZU1heFN0ZXBJbmRleEZvclJ1bih0LGUpe2NvbnN0IG49dFtlXTtyZXR1cm4gbiYmbi5sZW5ndGg/bi5sZW5ndGgtMTowfV91cGRhdGVTdGVwc0Zvck5ld1J1bnMoKXt2YXIgdD10aGlzLnJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXM7Y29uc3QgZT1PYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvU3RlcEluZGV4KTtTZS5leHBvcnRzLmZvck93bih0LCgodCxuKT0+e1NlLmV4cG9ydHMuaXNOdW1iZXIoZVtuXSl8fChlW25dPXQubGVuZ3RoLTEpfSkpLHRoaXMuX3J1blRvU3RlcEluZGV4PWV9X2dldFN0ZXAodCxlKXtyZXR1cm4gdGhpcy5fcnVuVG9TdGVwSW5kZXg/dGhpcy5fcnVuVG9TdGVwSW5kZXhbZV06MH1fY29tcHV0ZVJ1blRvU3RlcCh0LGUpe2NvbnN0IG49e307cmV0dXJuIFNlLmV4cG9ydHMuZm9yT3duKGUsKChlLGkpPT57Y29uc3Qgcj10W2ldO3ImJihuW2ldPXJbZV0uc3RlcCl9KSksbn1nZXQgX3J1bnNXaXRoU2xpZGVycygpe3ZhciB0PXRoaXMucnVuVG9BdmFpbGFibGVUaW1lRW50cmllcztyZXR1cm4gdGhpcy5ydW5zLmZpbHRlcigoZT0+dFtlXSkpfX07ejd0LnRlbXBsYXRlPV9lYAogICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTbGlkZXJzXV0iIGFzPSJydW4iPgogICAgICA8ZGl2IGNsYXNzPSJydW4td2lkZ2V0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJydW4tZGlzcGxheS1jb250YWluZXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0icnVuLWNvbG9yLWJveCIKICAgICAgICAgICAgc3R5bGU9ImJhY2tncm91bmQ6W1tfY29tcHV0ZUNvbG9yRm9yUnVuKHJ1bildXTsiCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJydW4tdGV4dCI+W1tydW5dXTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtZGlzcGxheS1jb250YWluZXIiPgogICAgICAgICAgW1tfY29tcHV0ZVRpbWVUZXh0Rm9yUnVuKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIF9ydW5Ub1N0ZXBJbmRleCwKICAgICAgICAgIHJ1biwgdGltZURpc3BsYXlUeXBlKV1dCiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgZGF0YS1ydW4kPSJbW3J1bl1dIgogICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgIG1heD0iW1tfY29tcHV0ZU1heFN0ZXBJbmRleEZvclJ1bihydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBydW4pXV0iCiAgICAgICAgICB2YWx1ZT0iW1tfZ2V0U3RlcChfcnVuVG9TdGVwSW5kZXgsIHJ1bildXSIKICAgICAgICAgIG9uLWltbWVkaWF0ZS12YWx1ZS1jaGFuZ2VkPSJfc2xpZGVyVmFsdWVDaGFuZ2VkIgogICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAucnVuLXdpZGdldCB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAwOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgbWFyZ2luOiAtOHB4IDAgMCAtMTVweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuc3RlcC1kaXNwbGF5LWNvbnRhaW5lciB7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBtYXJnaW46IDAgMTVweCAwIDA7CiAgICAgIH0KICAgICAgLnJ1bi10ZXh0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgICAgLnJ1bi1jb2xvci1ib3ggewogICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHo3dC5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejd0LnByb3RvdHlwZSwicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITAsY29tcHV0ZWQ6Il9jb21wdXRlUnVuVG9TdGVwKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIF9ydW5Ub1N0ZXBJbmRleCkifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHo3dC5wcm90b3R5cGUsInJ1blRvU3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx6N3QucHJvdG90eXBlLCJ0aW1lRGlzcGxheVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sejd0LnByb3RvdHlwZSwiX3J1blRvU3RlcEluZGV4Iix2b2lkIDApLHQoW2EoInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHo3dC5wcm90b3R5cGUsIl91cGRhdGVTdGVwc0Zvck5ld1J1bnMiLG51bGwpLHQoW3MoInJ1bnMiLCJydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx6N3QucHJvdG90eXBlLCJfcnVuc1dpdGhTbGlkZXJzIixudWxsKSx6N3Q9dChbaSgidGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3IiKV0sejd0KTtsZXQgRDd0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3RpbWVEaXNwbGF5VHlwZT0ic3RlcCIsdGhpcy5fc2VsZWN0ZWRSdW5zPVtdLHRoaXMuX3J1blRvVGFnSW5mbz17fSx0aGlzLl90YWdUb1J1blRvRGF0YT17fSx0aGlzLl9nZXRDYXRlZ29yeUl0ZW1LZXk9dD0+dC50YWcsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGRyLHRoaXMuX3N0ZXA9MH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe1Byb21pc2UuYWxsKFt0aGlzLl9mZXRjaFRhZ3MoKV0pLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkQ2FyZHMoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1fcigpLnBsdWdpblJvdXRlKCJwcl9jdXJ2ZXMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZihTZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtjb25zdCBlPWFyKFNlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9PlNlLmV4cG9ydHMua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRDYXJkcygpe1NlLmV4cG9ydHMuZm9yRWFjaCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtcHItY3VydmUtY2FyZCIpLCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9zZWxlY3RlZFJ1bnMsZT10aGlzLl90YWdGaWx0ZXI7cmV0dXJuIHdyKFNlLmV4cG9ydHMubWFwVmFsdWVzKHRoaXMuX3J1blRvVGFnSW5mbywodD0+T2JqZWN0LmtleXModCkpKSx0LGUpfWdldCBfcmVsZXZhbnRTZWxlY3RlZFJ1bnMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm87cmV0dXJuIHRoaXMuX3NlbGVjdGVkUnVucy5maWx0ZXIoKGU9PnRbZV0pKX1fdGFnTWV0YWRhdGEodCxlLG4pe2NvbnN0IGk9e307ZS5mb3JFYWNoKChlPT57aVtlXT10W2VdW25dfSkpO2NvbnN0IHI9bi5yZXBsYWNlKC9cL3ByX2N1cnZlcyQvLCIiKTtyZXR1cm4gZU8oaSxyKX1fY3JlYXRlRGF0YUNoYW5nZUNhbGxiYWNrKHQpe3JldHVybiBlPT57dGhpcy5zZXQoIl90YWdUb1J1blRvRGF0YSIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX3RhZ1RvUnVuVG9EYXRhKSx7W3RdOmV9KSl9fWdldCBfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcygpe3ZhciB0PXRoaXMuX3RhZ1RvUnVuVG9EYXRhO2NvbnN0IGU9e307Zm9yKGNvbnN0W24saV1vZiBPYmplY3QuZW50cmllcyh0KSlmb3IoY29uc3RbdF1vZiBPYmplY3QuZW50cmllcyhpKSkobnVsbD09ZVt0XXx8bjxlW3RdKSYmKGVbdF09bik7Y29uc3Qgbj17fTtmb3IoY29uc3RbaSxyXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtjb25zdCBlPXRbcl1baV07bltpXT1lLm1hcCgodD0+KHtzdGVwOnQuc3RlcCx3YWxsX3RpbWU6dC53YWxsX3RpbWUscmVsYXRpdmU6dC53YWxsX3RpbWUtZVswXS53YWxsX3RpbWV9KSkpfXJldHVybiBufX07RDd0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0idGltZS10eXBlLXNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9IlRpbWUgRGlzcGxheSBUeXBlIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e190aW1lRGlzcGxheVR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8IS0tCiAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwhLS0KICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiIgaWQ9InN0ZXBzLXNlbGVjdG9yLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yCiAgICAgICAgICAgICAgICBydW5zPSJbW19yZWxldmFudFNlbGVjdGVkUnVuc11dIgogICAgICAgICAgICAgICAgcnVuLXRvLXN0ZXA9Int7X3J1blRvU3RlcH19IgogICAgICAgICAgICAgICAgcnVuLXRvLWF2YWlsYWJsZS10aW1lLWVudHJpZXM9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSIKICAgICAgICAgICAgICAgIHRpbWUtZGlzcGxheS10eXBlPSJbW190aW1lRGlzcGxheVR5cGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3Rvcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwcmVjaXNpb27igJNyZWNhbGwgY3VydmUgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgcHJlY2lzaW9u4oCTcmVjYWxsIGRhdGEgdG8geW91ciBldmVudAogICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgICBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLWNhcmQKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBydW5zPSJbW2l0ZW0ucnVuc11dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1bnMsIGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIHJ1bi10by1zdGVwLWNhcD0iW1tfcnVuVG9TdGVwXV0iCiAgICAgICAgICAgICAgICAgIG9uLWRhdGEtY2hhbmdlPSJbW19jcmVhdGVEYXRhQ2hhbmdlQ2FsbGJhY2soaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1wci1jdXJ2ZS1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CgogICAgICAvKiogRG8gbm90IGxldCB0aGUgc3RlcHMgc2VsZWN0b3Igb2NjbHVkZSB0aGUgcnVuIHNlbGVjdG9yLiAqLwogICAgICAjc3RlcHMtc2VsZWN0b3ItY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiA2MCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRDd0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxEN3QucHJvdG90eXBlLCJfdGltZURpc3BsYXlUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxEN3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEQ3dC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRDd0LnByb3RvdHlwZSwiX3RhZ1RvUnVuVG9EYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEN3QucHJvdG90eXBlLCJfcnVuVG9TdGVwIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRDd0LnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxEN3QucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRDd0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEN3QucHJvdG90eXBlLCJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGRyKV0sRDd0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxEN3QucHJvdG90eXBlLCJfc3RlcCIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWdJbmZvIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxEN3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksdChbcygiX3NlbGVjdGVkUnVucyIsIl9ydW5Ub1RhZ0luZm8iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEQ3dC5wcm90b3R5cGUsIl9yZWxldmFudFNlbGVjdGVkUnVucyIsbnVsbCksdChbcygiX3RhZ1RvUnVuVG9EYXRhIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRDd0LnByb3RvdHlwZSwiX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLG51bGwpLEQ3dD10KFtpKCJ0Zi1wci1jdXJ2ZS1kYXNoYm9hcmQiKV0sRDd0KTtsZXQgQjd0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faW5zdGFsbENvbW1hbmQ9InBpcCBpbnN0YWxsIC1VIHRlbnNvcmJvYXJkLXBsdWdpbi1wcm9maWxlIn1fY29weUluc3RhbGxDb21tYW5kKCl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PSgpPT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7dGhpcy4kLmNvbW1hbmRUZXh0YXJlYS5zZWxlY3QoKTt0cnl7eWllbGQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5faW5zdGFsbENvbW1hbmQpfWNhdGNoKHQpe2lmKCFkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpKXJldHVybiBQcm9taXNlLnJlamVjdCgpfX0pKSxlPXRoaXMuJC5jb3BpZWRNZXNzYWdlO3RyeXt5aWVsZCB0KCksZS5pbm5lclRleHQ9IkNvcGllZC4ifWNhdGNoKHQpe2UuaW5uZXJUZXh0PSJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQuIn19KSl9X3JlbW92ZUNvcGllZE1lc3NhZ2UoKXt0aGlzLiQuY29waWVkTWVzc2FnZS5pbm5lclRleHQ9IiJ9fTtCN3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgPGgzPlRoZSBwcm9maWxlIHBsdWdpbiBoYXMgbW92ZWQuPC9oMz4KICAgICAgPHA+CiAgICAgICAgUGxlYXNlIGluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBwcm9maWxlIHBsdWdpbiBmcm9tIFB5UEkgYnkKICAgICAgICBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVuc29yQm9hcmQ6CiAgICAgIDwvcD4KICAgICAgPHRleHRhcmVhCiAgICAgICAgaWQ9ImNvbW1hbmRUZXh0YXJlYSIKICAgICAgICByZWFkb25seT0iIgogICAgICAgIHJvd3M9IjEiCiAgICAgICAgb24tYmx1cj0iX3JlbW92ZUNvcGllZE1lc3NhZ2UiCiAgICAgID4KW1tfaW5zdGFsbENvbW1hbmRdXTwvdGV4dGFyZWEKICAgICAgPgogICAgICA8ZGl2IGlkPSJjb3B5Q29udGFpbmVyIj4KICAgICAgICA8c3BhbiBpZD0iY29waWVkTWVzc2FnZSI+PC9zcGFuPgogICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkPSIiIG9uLXRhcD0iX2NvcHlJbnN0YWxsQ29tbWFuZCIKICAgICAgICAgID5Db3B5IHRvIGNsaXBib2FyZDwvcGFwZXItYnV0dG9uCiAgICAgICAgPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5tZXNzYWdlIHsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgfQogICAgICAjY29tbWFuZFRleHRhcmVhIHsKICAgICAgICBtYXJnaW4tdG9wOiAxZXg7CiAgICAgICAgcGFkZGluZzogMWV4IDFlbTsKICAgICAgICByZXNpemU6IHZlcnRpY2FsOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICAgICNjb3B5Q29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CiAgICAgICNjb3BpZWRNZXNzYWdlIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxZW07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxCN3QucHJvdG90eXBlLCJfaW5zdGFsbENvbW1hbmQiLHZvaWQgMCksQjd0PXQoW2koInRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIildLEI3dCk7bGV0IEg3dD1jbGFzcyBleHRlbmRzKGVyKGhsKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9zaG93RG93bmxvYWRMaW5rcz1IcygiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5fc21vb3RoaW5nV2VpZ2h0PUdzKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSkuY2FsbCh0aGlzKSx0aGlzLl9pZ25vcmVZT3V0bGllcnM9SHMoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl94VHlwZT14VHQuU1RFUCx0aGlzLl9zZWxlY3RlZFJ1bnM9W10sdGhpcy5fdGFnRmlsdGVyPSIiLHRoaXMuX2NhdGVnb3JpZXM9W10sdGhpcy5fZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PnQudGFnLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcig1MCksdGhpcy5fc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlcj1GcygiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLHRoaXMuX3Ntb290aGluZ1dlaWdodE9ic2VydmVyPVdzKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSksdGhpcy5faWdub3JlWU91dGxpZXJzT2JzZXJ2ZXI9RnMoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSl9Z2V0IF9zbW9vdGhpbmdFbmFibGVkKCl7cmV0dXJuIHRoaXMuX3Ntb290aGluZ1dlaWdodD4wfV9nZXRDYXRlZ29yeUtleSh0KXtyZXR1cm4gdC5tZXRhZGF0YS50eXBlPT1ici5TRUFSQ0hfUkVTVUxUUz8iIjp0Lm5hbWV9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZENoYXJ0cygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PV9yKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZihTZS5leHBvcnRzLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtjb25zdCBlPWFyKFNlLmV4cG9ydHMubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZENoYXJ0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV91cGRhdGVDYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fc2VsZWN0ZWRSdW5zO2xldCBlLG49dGhpcy5fdGFnRmlsdGVyO2U9d3IoU2UuZXhwb3J0cy5tYXBWYWx1ZXModGhpcy5fcnVuVG9UYWdJbmZvLCh0PT5PYmplY3Qua2V5cyh0KSkpLHQsbiksZS5mb3JFYWNoKCh0PT57dC5pdGVtcz10Lml0ZW1zLm1hcCgodD0+KHt0YWc6dC50YWcsc2VyaWVzOnQucnVucy5tYXAoKGU9Pih7cnVuOmUsdGFnOnQudGFnfSkpKX0pKSl9KSksdGhpcy51cGRhdGVBcnJheVByb3AoIl9jYXRlZ29yaWVzIixlLHRoaXMuX2dldENhdGVnb3J5S2V5KX1fdGFnTWV0YWRhdGEodCxlLG4pe2NvbnN0IGk9dC5uYW1lLHI9bi50YWcsbz17fTtuLnNlcmllcy5mb3JFYWNoKCgoe3J1bjp0fSk9PntvW3RdPWVbdF1bcl19KSk7Y29uc3QgYT1yLnJlcGxhY2UoL1wvc2NhbGFyX3N1bW1hcnkkLywiIik7bGV0e2Rlc2NyaXB0aW9uOnMsZGlzcGxheU5hbWU6bH09ZU8obyxhKTtyZXR1cm4gdC5tZXRhZGF0YS50eXBlPT1ici5QUkVGSVhfR1JPVVAmJmwuc3RhcnRzV2l0aChpKyIvIikmJihsPWwuc2xpY2UoaS5sZW5ndGgrMSkpLHtkZXNjcmlwdGlvbjpzLGRpc3BsYXlOYW1lOmx9fX07SDd0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0ic2hvdy1kb3dubG9hZC1saW5rcyIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X3Nob3dEb3dubG9hZExpbmtzfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBkYXRhIGRvd25sb2FkIGxpbmtzPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0iaWdub3JlLXktb3V0bGllciIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319IgogICAgICAgICAgICAgICAgPklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgICAgPGRpdj5Ub29sdGlwIHNvcnRpbmcgbWV0aG9kOjwvZGl2PgogICAgICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9IjAiCiAgICAgICAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0CiAgICAgICAgICAgICAgd2VpZ2h0PSJ7e19zbW9vdGhpbmdXZWlnaHR9fSIKICAgICAgICAgICAgICBzdGVwPSIwLjAwMSIKICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgbWF4PSIwLjk5OSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBzY2FsYXIgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHNjYWxhciBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgICAgZ2V0LWNhdGVnb3J5LWl0ZW0ta2V5PSJbW19nZXRDYXRlZ29yeUl0ZW1LZXldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1zY2FsYXItY2FyZAogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIGRhdGEtdG8tbG9hZD0iW1tpdGVtLnNlcmllc11dIgogICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgIG11bHRpLWV4cGVyaW1lbnRzPSJbW19nZXRNdWx0aUV4cGVyaW1lbnRzKGRhdGFTZWxlY3Rpb24pXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tfc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoY2F0ZWdvcnksIF9ydW5Ub1RhZ0luZm8sIGl0ZW0pXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW190b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgIGJhdGNoLXNpemU9IltbZmVhdHVyZUZsYWdzLnNjYWxhcnNCYXRjaFNpemVdXSIKICAgICAgICAgICAgICAgICAgaW4tY29sYWI9IltbZmVhdHVyZUZsYWdzLmluQ29sYWJdXSIKICAgICAgICAgICAgICAgID48L3RmLXNjYWxhci1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAtc29ydGluZyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CgogICAgICAubGluZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIC5jZW50ZXIgewogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSDd0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIN3QucHJvdG90eXBlLCJmZWF0dXJlRmxhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxIN3QucHJvdG90eXBlLCJfc2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEg3dC5wcm90b3R5cGUsIl9zbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxIN3QucHJvdG90eXBlLCJfaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEg3dC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sSDd0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIN3QucHJvdG90eXBlLCJfcnVuVG9UYWdJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSDd0LnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxIN3QucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSDd0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sSDd0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSDd0LnByb3RvdHlwZSwiX2dldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLEg3dC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfc21vb3RoaW5nV2VpZ2h0IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEg3dC5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIixudWxsKSx0KFthKCJfcnVuVG9UYWdJbmZvIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxIN3QucHJvdG90eXBlLCJfdXBkYXRlQ2F0ZWdvcmllcyIsbnVsbCksSDd0PXQoW2koInRmLXNjYWxhci1kYXNoYm9hcmQiKV0sSDd0KTtsZXQgRjd0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGV4dHM9W10sdGhpcy5fY2FuY2VsbGVyPW5ldyBYUn1nZXQgX3J1bkNvbG9yKCl7cmV0dXJuIEdSKHRoaXMucnVuKX1fY2hhbmdlUnVuQ29sb3IoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGItdGV4dC1sb2FkZXItb3V0bGluZSI6dGhpcy5fcnVuQ29sb3J9KX1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9aU8oX3IoKS5wbHVnaW5Sb3V0ZSgidGV4dCIsIi90ZXh0Iikse3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW59KSxlPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKCh0PT4oe3dhbGxfdGltZTpuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpLHN0ZXA6dC5zdGVwLHRleHQ6dC50ZXh0fSkpKTt0aGlzLnNldCgiX3RleHRzIixlLnNsaWNlKCkucmV2ZXJzZSgpKX0pKTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1fZm9ybWF0U3RlcCh0KXtyZXR1cm4gbXkoIiwiKSh0KX19O0Y3dC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgcnVuPSJbW3J1bl1dIiB0YWc9IltbdGFnXV0iIGNvbG9yPSJbW19ydW5Db2xvcl1dIj4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHBhcGVyLW1hdGVyaWFsCiAgICAgIGVsZXZhdGlvbj0iMSIKICAgICAgaWQ9InN0ZXBzLWNvbnRhaW5lciIKICAgICAgY2xhc3M9ImNvbnRhaW5lciBzY3JvbGxiYXIiCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3RleHRzXV0iPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJzdGVwLWNvbnRhaW5lciI+CiAgICAgICAgICBzdGVwIDxzcGFuIGNsYXNzPSJzdGVwLXZhbHVlIj5bW19mb3JtYXRTdGVwKGl0ZW0uc3RlcCldXTwvc3Bhbj4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJ0ZXh0Ij4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbaXRlbS50ZXh0XV0iPjwvdGYtbWFya2Rvd24tdmlldz4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci1tYXRlcmlhbD4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIC5zY3JvbGxiYXIgewogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgICAgI3N0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIC8qIGNvbG9yIGNvbXB1dGVkIGFuZCBzZXQgYXMgaW5saW5lIHN0eWxlICovOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi10ZXh0LWxvYWRlci1vdXRsaW5lKTsKICAgICAgfQogICAgICAudGV4dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggM3B4OwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zdGVwLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlcik7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IC8qIHRvIGNvcnJlY3QgZm9yIGJvcmRlciAqLwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXI6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEY3dC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxGN3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEY3dC5wcm90b3R5cGUsIl90ZXh0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixkcildLEY3dC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLFhSKV0sRjd0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxGN3QucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoIl9ydW5Db2xvciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sRjd0LnByb3RvdHlwZSwiX2NoYW5nZVJ1bkNvbG9yIixudWxsKSxGN3Q9dChbaSgidGYtdGV4dC1sb2FkZXIiKV0sRjd0KTtsZXQgVjd0PWNsYXNzIGV4dGVuZHMoZXIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBkcn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkVGV4dHMoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1fcigpLnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYoU2UuZXhwb3J0cy5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWcpKXJldHVybjtjb25zdCBlPWFyKHQpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkVGV4dHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtdGV4dC1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1nZXQgX2NhdGVnb3JpZXMoKXtyZXR1cm4gTXIodGhpcy5fcnVuVG9UYWcsdGhpcy5fc2VsZWN0ZWRSdW5zLHRoaXMuX3RhZ0ZpbHRlcil9fTtWN3QudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHRleHQgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHRleHQgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXRleHQtbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi10ZXh0LWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWN3QucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxWN3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFY3dC5wcm90b3R5cGUsIl9ydW5Ub1RhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFY3dC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVjd0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFY3dC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVjd0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sVjd0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFY3dD10KFtpKCJ0Zi10ZXh0LWRhc2hib2FyZCIpXSxWN3QpO2xldCBVN3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX2JhY2tlbmQ9U0N0fX07VTd0PXQoW2koInRmLWJhY2tlbmQiKV0sVTd0KTtsZXQgajd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9nbG9iYWxzPUVzfX07ajd0PXQoW2koInRmLWdsb2JhbHMiKV0sajd0KTtsZXQgRzd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9zdG9yYWdlPUlDdH19O0c3dD10KFtpKCJ0Zi1zdG9yYWdlIildLEc3dCk7dmFyIFc3dD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxhZGRMaW1pdExpc3RlbmVyOmxsLHJlbW92ZUxpbWl0TGlzdGVuZXI6Y2wsZ2V0TGltaXQ6dWwsc2V0TGltaXQ6ZnVuY3Rpb24gcTd0KHQpe2lmKHQhPT1NYXRoLmZsb29yKHQpKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZ290OiAke3R9YCk7aWYodDw9MCl0aHJvdyBuZXcgRXJyb3IoYGxpbWl0IG11c3QgYmUgcG9zaXRpdmUsIGJ1dCBnb3Q6ICR7dH1gKTt0IT09YWwmJihhbD10LGpzKG9sLGFsLHt1c2VMb2NhbFN0b3JhZ2U6ITB9KSxzbC5mb3JFYWNoKCh0PT57dCgpfSkpKX0sVGZEb21SZXBlYXQ6ZGx9KTtsZXQgWTd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9wYWdpbmF0ZWRfdmlldz1XN3R9fTtZN3Q9dChbaSgidGYtcGFnaW5hdGVkLXZpZXctc3RvcmUiKV0sWTd0KTtsZXQgWDd0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy5ydW5zQ29sb3JTY2FsZT1HUn19O1g3dD10KFtpKCJ0Zi1jb2xvci1zY2FsZSIpXSxYN3QpfSkoKTsKCiEoZnVuY3Rpb24oKXsKLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KdmFyIHQ9ZnVuY3Rpb24oZSxuKXtyZXR1cm4odD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSl9KShlLG4pfTtmdW5jdGlvbiBlKGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoIkNsYXNzIGV4dGVuZHMgdmFsdWUgIitTdHJpbmcobikrIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7ZnVuY3Rpb24gbygpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooby5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IG8pfWZ1bmN0aW9uIG4odCxlKXt2YXIgbixvLGksYSxyPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4oZnVuY3Rpb24gbChhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3I7KXRyeXtpZihuPTEsbyYmKGk9MiZhWzBdP28ucmV0dXJuOmFbMF0/by50aHJvd3x8KChpPW8ucmV0dXJuKSYmaS5jYWxsKG8pLDApOm8ubmV4dCkmJiEoaT1pLmNhbGwobyxhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobz0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKyssbz1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGk9KGk9ci50cnlzKS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe3I9MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe3IubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmci5sYWJlbDxpWzFdKXtyLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJnIubGFiZWw8aVsyXSl7ci5sYWJlbD1pWzJdLHIub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWE9ZS5jYWxsKHQscil9Y2F0Y2godCl7YT1bNix0XSxvPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0pKFthLHNdKX19fWZ1bmN0aW9uIG8odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG49ZSYmdFtlXSxvPTA7aWYobilyZXR1cm4gbi5jYWxsKHQpO2lmKHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbz49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbysrXSxkb25lOiF0fX19O3Rocm93IG5ldyBUeXBlRXJyb3IoZT8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighbilyZXR1cm4gdDt2YXIgbyxpLGE9bi5jYWxsKHQpLHI9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobz1hLm5leHQoKSkuZG9uZTspci5wdXNoKG8udmFsdWUpfWNhdGNoKHQpe2k9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e28mJiFvLmRvbmUmJihuPWEucmV0dXJuKSYmbi5jYWxsKGEpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1yZXR1cm4gcn1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuPTAsbz1lLmxlbmd0aCxpPXQubGVuZ3RoO248bztuKyssaSsrKXRbaV09ZVtuXTtyZXR1cm4gdH1mdW5jdGlvbiByKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygcj8odGhpcy52PXQsdGhpcyk6bmV3IHIodCl9ZnVuY3Rpb24gcyh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBvLGk9bi5hcHBseSh0LGV8fFtdKSxhPVtdO3JldHVybiBvPXt9LHMoIm5leHQiKSxzKCJ0aHJvdyIpLHMoInJldHVybiIpLG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG87ZnVuY3Rpb24gcyh0KXtpW3RdJiYob1t0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7YS5wdXNoKFt0LGUsbixvXSk+MXx8bCh0LGUpfSkpfSl9ZnVuY3Rpb24gbCh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIHI/UHJvbWlzZS5yZXNvbHZlKHQudmFsdWUudikudGhlbihjLGQpOnAoYVswXVsyXSx0KX0pKGlbdF0oZSkpfWNhdGNoKHQpe3AoYVswXVszXSx0KX19ZnVuY3Rpb24gYyh0KXtsKCJuZXh0Iix0KX1mdW5jdGlvbiBkKHQpe2woInRocm93Iix0KX1mdW5jdGlvbiBwKHQsZSl7dChlKSxhLnNoaWZ0KCksYS5sZW5ndGgmJmwoYVswXVswXSxhWzBdWzFdKX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBjKHQpe3ZhciBlPXQoKGZ1bmN0aW9uKHQpe0Vycm9yLmNhbGwodCksdC5zdGFjaz0obmV3IEVycm9yKS5zdGFja30pKTtyZXR1cm4gZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZX12YXIgZD1jKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gZShuKXt0KHRoaXMpLHRoaXMubWVzc2FnZT1uP24ubGVuZ3RoKyIgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiIrbi5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUrMSsiKSAiK3QudG9TdHJpbmcoKX0pKS5qb2luKCJcbiAgIik6IiIsdGhpcy5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLmVycm9ycz1ufX0pKTtmdW5jdGlvbiBwKHQsZSl7aWYodCl7dmFyIG49dC5pbmRleE9mKGUpOzA8PW4mJnQuc3BsaWNlKG4sMSl9fXZhciBtPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5pbml0aWFsVGVhcmRvd249dCx0aGlzLmNsb3NlZD0hMSx0aGlzLl9wYXJlbnRhZ2U9bnVsbCx0aGlzLl90ZWFyZG93bnM9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixzO2lmKCF0aGlzLmNsb3NlZCl7dGhpcy5jbG9zZWQ9ITA7dmFyIGM9dGhpcy5fcGFyZW50YWdlO2lmKGMpaWYodGhpcy5fcGFyZW50YWdlPW51bGwsQXJyYXkuaXNBcnJheShjKSl0cnl7Zm9yKHZhciBwPW8oYyksbT1wLm5leHQoKTshbS5kb25lO209cC5uZXh0KCkpbS52YWx1ZS5yZW1vdmUodGhpcyl9Y2F0Y2goZSl7dD17ZXJyb3I6ZX19ZmluYWxseXt0cnl7bSYmIW0uZG9uZSYmKGU9cC5yZXR1cm4pJiZlLmNhbGwocCl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fWVsc2UgYy5yZW1vdmUodGhpcyk7dmFyIHU9dGhpcy5pbml0aWFsVGVhcmRvd247aWYobCh1KSl0cnl7dSgpfWNhdGNoKHQpe3M9dCBpbnN0YW5jZW9mIGQ/dC5lcnJvcnM6W3RdfXZhciBmPXRoaXMuX3RlYXJkb3ducztpZihmKXt0aGlzLl90ZWFyZG93bnM9bnVsbDt0cnl7Zm9yKHZhciBoPW8oZiksYj1oLm5leHQoKTshYi5kb25lO2I9aC5uZXh0KCkpe3ZhciB5PWIudmFsdWU7dHJ5e2coeSl9Y2F0Y2godCl7cz1udWxsIT1zP3M6W10sdCBpbnN0YW5jZW9mIGQ/cz1hKGEoW10saShzKSksaSh0LmVycm9ycykpOnMucHVzaCh0KX19fWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2ImJiFiLmRvbmUmJihyPWgucmV0dXJuKSYmci5jYWxsKGgpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX19aWYocyl0aHJvdyBuZXcgZChzKX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgbjtpZihlJiZlIT09dGhpcylpZih0aGlzLmNsb3NlZClnKGUpO2Vsc2V7aWYoZSBpbnN0YW5jZW9mIHQpe2lmKGUuY2xvc2VkfHxlLl9oYXNQYXJlbnQodGhpcykpcmV0dXJuO2UuX2FkZFBhcmVudCh0aGlzKX0odGhpcy5fdGVhcmRvd25zPW51bGwhPT0obj10aGlzLl90ZWFyZG93bnMpJiZ2b2lkIDAhPT1uP246W10pLnB1c2goZSl9fSx0LnByb3RvdHlwZS5faGFzUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtyZXR1cm4gZT09PXR8fEFycmF5LmlzQXJyYXkoZSkmJmUuaW5jbHVkZXModCl9LHQucHJvdG90eXBlLl9hZGRQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO3RoaXMuX3BhcmVudGFnZT1BcnJheS5pc0FycmF5KGUpPyhlLnB1c2godCksZSk6ZT9bZSx0XTp0fSx0LnByb3RvdHlwZS5fcmVtb3ZlUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudGFnZTtlPT09dD90aGlzLl9wYXJlbnRhZ2U9bnVsbDpBcnJheS5pc0FycmF5KGUpJiZwKGUsdCl9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl90ZWFyZG93bnM7biYmcChuLGUpLGUgaW5zdGFuY2VvZiB0JiZlLl9yZW1vdmVQYXJlbnQodGhpcyl9LHQuRU1QVFk9KGZ1bmN0aW9uKCl7dmFyIGU9bmV3IHQ7cmV0dXJuIGUuY2xvc2VkPSEwLGV9KSgpLHR9KSgpLHU9bS5FTVBUWTtmdW5jdGlvbiBmKHQpe3JldHVybiB0IGluc3RhbmNlb2YgbXx8dCYmImNsb3NlZCJpbiB0JiZsKHQucmVtb3ZlKSYmbCh0LmFkZCkmJmwodC51bnN1YnNjcmliZSl9ZnVuY3Rpb24gZyh0KXtsKHQpP3QoKTp0LnVuc3Vic2NyaWJlKCl9dmFyIGg9e3NldFRpbWVvdXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49aC5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uc2V0VGltZW91dCl8fHNldFRpbWVvdXQpLmFwcGx5KHZvaWQgMCxhKFtdLGkodCkpKX0sY2xlYXJUaW1lb3V0OmZ1bmN0aW9uKHQpe3ZhciBlPWguZGVsZWdhdGU7cmV0dXJuKChudWxsPT1lP3ZvaWQgMDplLmNsZWFyVGltZW91dCl8fGNsZWFyVGltZW91dCkodCl9LGRlbGVnYXRlOnZvaWQgMH07ZnVuY3Rpb24gYih0KXtoLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgdH0pKX1mdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIF8odCl7dCgpfXZhciBDPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5pc1N0b3BwZWQ9ITEsZT8obi5kZXN0aW5hdGlvbj1lLGYoZSkmJmUuYWRkKG4pKTpuLmRlc3RpbmF0aW9uPU8sbn1yZXR1cm4gZShuLHQpLG4uY3JlYXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbmV3IE0odCxlLG4pfSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxuLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQpKX0sbi5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSx0aGlzLmRlc3RpbmF0aW9uPW51bGwpfSxuLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LG4ucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19LG4ucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RyeXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fSxufSkobSksTT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyl7dmFyIGksYT10LmNhbGwodGhpcyl8fHRoaXM7aWYobChlKSlpPWU7ZWxzZSBpZihlKXt2YXIgcjtuPWUuZXJyb3Isbz1lLmNvbXBsZXRlLHI9ZSxpPW51bGw9PShpPWUubmV4dCk/dm9pZCAwOmkuYmluZChyKSxuPW51bGw9PW4/dm9pZCAwOm4uYmluZChyKSxvPW51bGw9PW8/dm9pZCAwOm8uYmluZChyKX1yZXR1cm4gYS5kZXN0aW5hdGlvbj17bmV4dDppP3YoaSk6eSxlcnJvcjp2KG51bGwhPW4/bjp4KSxjb21wbGV0ZTpvP3Yobyk6eX0sYX1yZXR1cm4gZShuLHQpLG59KShDKTtmdW5jdGlvbiB2KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3RyeXt0LmFwcGx5KHZvaWQgMCxhKFtdLGkoZSkpKX1jYXRjaCh0KXtiKHQpfX19ZnVuY3Rpb24geCh0KXt0aHJvdyB0fXZhciBPPXtjbG9zZWQ6ITAsbmV4dDp5LGVycm9yOngsY29tcGxldGU6eX0sUD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wub2JzZXJ2YWJsZXx8IkBAb2JzZXJ2YWJsZSI7ZnVuY3Rpb24gdyh0KXtyZXR1cm4gdH1mdW5jdGlvbiBrKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBTKHQpfWZ1bmN0aW9uIFModCl7cmV0dXJuIDA9PT10Lmxlbmd0aD93OjE9PT10Lmxlbmd0aD90WzBdOmZ1bmN0aW9uIGUobil7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBlKHQpfSksbil9fXZhciBEPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dCYmKHRoaXMuX3N1YnNjcmliZT10KX1yZXR1cm4gdC5wcm90b3R5cGUubGlmdD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgdDtyZXR1cm4gbi5zb3VyY2U9dGhpcyxuLm9wZXJhdG9yPWUsbn0sdC5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz10aGlzLGk9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQmJnQgaW5zdGFuY2VvZiBDfHwoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmbCh0Lm5leHQpJiZsKHQuZXJyb3IpJiZsKHQuY29tcGxldGUpfSkodCkmJmYodCl9KSh0KT90Om5ldyBNKHQsZSxuKTtyZXR1cm4gXygoZnVuY3Rpb24oKXt2YXIgdD1vLm9wZXJhdG9yLGU9by5zb3VyY2U7aS5hZGQodD90LmNhbGwoaSxlKTplP28uX3N1YnNjcmliZShpKTpvLl90cnlTdWJzY3JpYmUoaSkpfSkpLGl9LHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7dC5lcnJvcihlKX19LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBuZXcoZT1FKGUpKSgoZnVuY3Rpb24oZSxvKXt2YXIgaTtpPW4uc3Vic2NyaWJlKChmdW5jdGlvbihlKXt0cnl7dChlKX1jYXRjaCh0KXtvKHQpLG51bGw9PWl8fGkudW5zdWJzY3JpYmUoKX19KSxvLGUpfSkpfSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dGhpcy5zb3VyY2UpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN1YnNjcmliZSh0KX0sdC5wcm90b3R5cGVbUF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gUyh0KSh0aGlzKX0sdC5wcm90b3R5cGUudG9Qcm9taXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyh0PUUodCkpKChmdW5jdGlvbih0LG4pe3ZhciBvO2Uuc3Vic2NyaWJlKChmdW5jdGlvbih0KXtyZXR1cm4gbz10fSksKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIHQobyl9KSl9KSl9LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdH0pKCk7ZnVuY3Rpb24gRSh0KXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPW51bGwhPXQ/dDp1bmRlZmluZWQpJiZ2b2lkIDAhPT1lP2U6UHJvbWlzZX1mdW5jdGlvbiBSKHQpe3JldHVybiBmdW5jdGlvbihlKXtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gbChudWxsPT10P3ZvaWQgMDp0LmxpZnQpfSkoZSkpcmV0dXJuIGUubGlmdCgoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUsdGhpcyl9Y2F0Y2godCl7dGhpcy5lcnJvcih0KX19KSk7dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5hYmxlIHRvIGxpZnQgdW5rbm93biBPYnNlcnZhYmxlIHR5cGUiKX19dmFyIEEsVD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyxpLGEpe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLm9uRmluYWxpemU9YSxyLl9uZXh0PW4/ZnVuY3Rpb24odCl7dHJ5e24odCl9Y2F0Y2godCl7ZS5lcnJvcih0KX19OnQucHJvdG90eXBlLl9uZXh0LHIuX2Vycm9yPWk/ZnVuY3Rpb24odCl7dHJ5e2kodCl9Y2F0Y2godCl7ZS5lcnJvcih0KX1maW5hbGx5e3RoaXMudW5zdWJzY3JpYmUoKX19OnQucHJvdG90eXBlLl9lcnJvcixyLl9jb21wbGV0ZT1vP2Z1bmN0aW9uKCl7dHJ5e28oKX1jYXRjaCh0KXtlLmVycm9yKHQpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06dC5wcm90b3R5cGUuX2NvbXBsZXRlLHJ9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciBlLG49dGhpcy5jbG9zZWQ7dC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSwhbiYmKG51bGw9PT0oZT10aGlzLm9uRmluYWxpemUpfHx2b2lkIDA9PT1lfHxlLmNhbGwodGhpcykpfSxufSkoQyksTj17c2NoZWR1bGU6ZnVuY3Rpb24odCl7dmFyIGU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49Y2FuY2VsQW5pbWF0aW9uRnJhbWUsbz1OLmRlbGVnYXRlO28mJihlPW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLG49by5jYW5jZWxBbmltYXRpb25GcmFtZSk7dmFyIGk9ZSgoZnVuY3Rpb24oZSl7bj12b2lkIDAsdChlKX0pKTtyZXR1cm4gbmV3IG0oKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PW4/dm9pZCAwOm4oaSl9KSl9LHJlcXVlc3RBbmltYXRpb25GcmFtZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1OLmRlbGVnYXRlO3JldHVybigobnVsbD09bj92b2lkIDA6bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpfHxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUpLmFwcGx5KHZvaWQgMCxhKFtdLGkodCkpKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49Ti5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PW4/dm9pZCAwOm4uY2FuY2VsQW5pbWF0aW9uRnJhbWUpfHxjYW5jZWxBbmltYXRpb25GcmFtZSkuYXBwbHkodm9pZCAwLGEoW10saSh0KSkpfSxkZWxlZ2F0ZTp2b2lkIDB9LHo9YygoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXt0KHRoaXMpLHRoaXMubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCJ9fSkpLEk9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuY2xvc2VkPSExLGUub2JzZXJ2ZXJzPVtdLGUuaXNTdG9wcGVkPSExLGUuaGFzRXJyb3I9ITEsZS50aHJvd25FcnJvcj1udWxsLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBIKHRoaXMsdGhpcyk7cmV0dXJuIGUub3BlcmF0b3I9dCxlfSxuLnByb3RvdHlwZS5fdGhyb3dJZkNsb3NlZD1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyB6fSxuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7XygoZnVuY3Rpb24oKXt2YXIgbixpO2lmKGUuX3Rocm93SWZDbG9zZWQoKSwhZS5pc1N0b3BwZWQpe3ZhciBhPWUub2JzZXJ2ZXJzLnNsaWNlKCk7dHJ5e2Zvcih2YXIgcj1vKGEpLHM9ci5uZXh0KCk7IXMuZG9uZTtzPXIubmV4dCgpKXMudmFsdWUubmV4dCh0KX1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtzJiYhcy5kb25lJiYoaT1yLnJldHVybikmJmkuY2FsbChyKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19fX0pKX0sbi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztfKChmdW5jdGlvbigpe2lmKGUuX3Rocm93SWZDbG9zZWQoKSwhZS5pc1N0b3BwZWQpe2UuaGFzRXJyb3I9ZS5pc1N0b3BwZWQ9ITAsZS50aHJvd25FcnJvcj10O2Zvcih2YXIgbj1lLm9ic2VydmVycztuLmxlbmd0aDspbi5zaGlmdCgpLmVycm9yKHQpfX0pKX0sbi5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO18oKGZ1bmN0aW9uKCl7aWYodC5fdGhyb3dJZkNsb3NlZCgpLCF0LmlzU3RvcHBlZCl7dC5pc1N0b3BwZWQ9ITA7Zm9yKHZhciBlPXQub2JzZXJ2ZXJzO2UubGVuZ3RoOyllLnNoaWZ0KCkuY29tcGxldGUoKX19KSl9LG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5pc1N0b3BwZWQ9dGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9bnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJvYnNlcnZlZCIse2dldDpmdW5jdGlvbigpe3ZhciB0O3JldHVybihudWxsPT09KHQ9dGhpcy5vYnNlcnZlcnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Lmxlbmd0aCk+MH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxuLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl90aHJvd0lmQ2xvc2VkKCksdC5wcm90b3R5cGUuX3RyeVN1YnNjcmliZS5jYWxsKHRoaXMsZSl9LG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSx0aGlzLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzKHQpLHRoaXMuX2lubmVyU3Vic2NyaWJlKHQpfSxuLnByb3RvdHlwZS5faW5uZXJTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUub2JzZXJ2ZXJzO3JldHVybiBlLmhhc0Vycm9yfHxlLmlzU3RvcHBlZD91OihuLnB1c2godCksbmV3IG0oKGZ1bmN0aW9uKCl7cmV0dXJuIHAobix0KX0pKSl9LG4ucHJvdG90eXBlLl9jaGVja0ZpbmFsaXplZFN0YXR1c2VzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLmlzU3RvcHBlZDtlLmhhc0Vycm9yP3QuZXJyb3IoZS50aHJvd25FcnJvcik6biYmdC5jb21wbGV0ZSgpfSxuLnByb3RvdHlwZS5hc09ic2VydmFibGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRDtyZXR1cm4gdC5zb3VyY2U9dGhpcyx0fSxuLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgSCh0LGUpfSxufSkoRCksSD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5kZXN0aW5hdGlvbj1lLG8uc291cmNlPW4sb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24odCl7dmFyIGUsbjtudWxsPT09KG49bnVsbD09PShlPXRoaXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm5leHQpfHx2b2lkIDA9PT1ufHxuLmNhbGwoZSx0KX0sbi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dmFyIGUsbjtudWxsPT09KG49bnVsbD09PShlPXRoaXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmVycm9yKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9LG4ucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQsZTtudWxsPT09KGU9bnVsbD09PSh0PXRoaXMuZGVzdGluYXRpb24pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNvbXBsZXRlKXx8dm9pZCAwPT09ZXx8ZS5jYWxsKHQpfSxuLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIG51bGwhPT0obj1udWxsPT09KGU9dGhpcy5zb3VyY2UpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN1YnNjcmliZSh0KSkmJnZvaWQgMCE9PW4/bjp1fSxufSkoSSksRj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX3ZhbHVlPWUsbn1yZXR1cm4gZShuLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwidmFsdWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dmFyIG49dC5wcm90b3R5cGUuX3N1YnNjcmliZS5jYWxsKHRoaXMsZSk7cmV0dXJuIW4uY2xvc2VkJiZlLm5leHQodGhpcy5fdmFsdWUpLG59LG4ucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX3ZhbHVlO2lmKHQuaGFzRXJyb3IpdGhyb3cgdC50aHJvd25FcnJvcjtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLGV9LG4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsdGhpcy5fdmFsdWU9ZSl9LG59KShJKSxMPXtub3c6ZnVuY3Rpb24oKXtyZXR1cm4oTC5kZWxlZ2F0ZXx8RGF0ZSkubm93KCl9LGRlbGVnYXRlOnZvaWQgMH0sQj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4sbyl7dm9pZCAwPT09ZSYmKGU9MS8wKSx2b2lkIDA9PT1uJiYobj0xLzApLHZvaWQgMD09PW8mJihvPUwpO3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fYnVmZmVyU2l6ZT1lLGkuX3dpbmRvd1RpbWU9bixpLl90aW1lc3RhbXBQcm92aWRlcj1vLGkuX2J1ZmZlcj1bXSxpLl9pbmZpbml0ZVRpbWVXaW5kb3c9ITAsaS5faW5maW5pdGVUaW1lV2luZG93PW49PT0xLzAsaS5fYnVmZmVyU2l6ZT1NYXRoLm1heCgxLGUpLGkuX3dpbmRvd1RpbWU9TWF0aC5tYXgoMSxuKSxpfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLG89bi5fYnVmZmVyLGk9bi5faW5maW5pdGVUaW1lV2luZG93LGE9bi5fdGltZXN0YW1wUHJvdmlkZXIscj1uLl93aW5kb3dUaW1lO24uaXNTdG9wcGVkfHwoby5wdXNoKGUpLCFpJiZvLnB1c2goYS5ub3coKStyKSksdGhpcy5fdHJpbUJ1ZmZlcigpLHQucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzLGUpfSxuLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3RoaXMuX3Rocm93SWZDbG9zZWQoKSx0aGlzLl90cmltQnVmZmVyKCk7Zm9yKHZhciBlPXRoaXMuX2lubmVyU3Vic2NyaWJlKHQpLG49dGhpcy5faW5maW5pdGVUaW1lV2luZG93LG89dGhpcy5fYnVmZmVyLnNsaWNlKCksaT0wO2k8by5sZW5ndGgmJiF0LmNsb3NlZDtpKz1uPzE6Mil0Lm5leHQob1tpXSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXModCksZX0sbi5wcm90b3R5cGUuX3RyaW1CdWZmZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fYnVmZmVyU2l6ZSxuPXQuX3RpbWVzdGFtcFByb3ZpZGVyLG89dC5fYnVmZmVyLGk9dC5faW5maW5pdGVUaW1lV2luZG93LGE9KGk/MToyKSplO2lmKGU8MS8wJiZhPG8ubGVuZ3RoJiZvLnNwbGljZSgwLG8ubGVuZ3RoLWEpLCFpKXtmb3IodmFyIHI9bi5ub3coKSxzPTAsbD0xO2w8by5sZW5ndGgmJm9bbF08PXI7bCs9MilzPWw7cyYmby5zcGxpY2UoMCxzKzEpfX0sbn0pKEkpLFY9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXtyZXR1cm4gdC5jYWxsKHRoaXMpfHx0aGlzfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc30sbn0pKG0pLGo9e3NldEludGVydmFsOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPWouZGVsZWdhdGU7cmV0dXJuKChudWxsPT1uP3ZvaWQgMDpuLnNldEludGVydmFsKXx8c2V0SW50ZXJ2YWwpLmFwcGx5KHZvaWQgMCxhKFtdLGkodCkpKX0sY2xlYXJJbnRlcnZhbDpmdW5jdGlvbih0KXt2YXIgZT1qLmRlbGVnYXRlO3JldHVybigobnVsbD09ZT92b2lkIDA6ZS5jbGVhckludGVydmFsKXx8Y2xlYXJJbnRlcnZhbCkodCl9LGRlbGVnYXRlOnZvaWQgMH0sVT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uc2NoZWR1bGVyPWUsby53b3JrPW4sby5wZW5kaW5nPSExLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPTApLHRoaXMuY2xvc2VkKXJldHVybiB0aGlzO3RoaXMuc3RhdGU9dDt2YXIgbj10aGlzLmlkLG89dGhpcy5zY2hlZHVsZXI7cmV0dXJuIG51bGwhPW4mJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQobyxuLGUpKSx0aGlzLnBlbmRpbmc9ITAsdGhpcy5kZWxheT1lLHRoaXMuaWQ9dGhpcy5pZHx8dGhpcy5yZXF1ZXN0QXN5bmNJZChvLHRoaXMuaWQsZSksdGhpc30sbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0wKSxqLnNldEludGVydmFsKHQuZmx1c2guYmluZCh0LHRoaXMpLG4pfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbih0LGUsbil7aWYodm9pZCAwPT09biYmKG49MCksbnVsbCE9biYmdGhpcy5kZWxheT09PW4mJiExPT09dGhpcy5wZW5kaW5nKXJldHVybiBlO2ouY2xlYXJJbnRlcnZhbChlKX0sbi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbih0LGUpe2lmKHRoaXMuY2xvc2VkKXJldHVybiBuZXcgRXJyb3IoImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24iKTt0aGlzLnBlbmRpbmc9ITE7dmFyIG49dGhpcy5fZXhlY3V0ZSh0LGUpO2lmKG4pcmV0dXJuIG47ITE9PT10aGlzLnBlbmRpbmcmJm51bGwhPXRoaXMuaWQmJih0aGlzLmlkPXRoaXMucmVjeWNsZUFzeW5jSWQodGhpcy5zY2hlZHVsZXIsdGhpcy5pZCxudWxsKSl9LG4ucHJvdG90eXBlLl9leGVjdXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG4sbz0hMTt0cnl7dGhpcy53b3JrKHQpfWNhdGNoKHQpe289ITAsbj0hIXQmJnR8fG5ldyBFcnJvcih0KX1pZihvKXJldHVybiB0aGlzLnVuc3Vic2NyaWJlKCksbn0sbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhpcy5jbG9zZWQpe3ZhciBlPXRoaXMuaWQsbj10aGlzLnNjaGVkdWxlcixvPW4uYWN0aW9uczt0aGlzLndvcms9dGhpcy5zdGF0ZT10aGlzLnNjaGVkdWxlcj1udWxsLHRoaXMucGVuZGluZz0hMSxwKG8sdGhpcyksbnVsbCE9ZSYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChuLGUsbnVsbCkpLHRoaXMuZGVsYXk9bnVsbCx0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpfX0sbn0pKFYpLEc9MSxXPXt9O2Z1bmN0aW9uIFkodCl7cmV0dXJuIHQgaW4gVyYmKGRlbGV0ZSBXW3RdLCEwKX12YXIgcT1mdW5jdGlvbih0KXt2YXIgZT1HKys7cmV0dXJuIFdbZV09ITAsQXx8KEE9UHJvbWlzZS5yZXNvbHZlKCkpLEEudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gWShlKSYmdCgpfSkpLGV9LFo9ZnVuY3Rpb24odCl7WSh0KX0sWD17c2V0SW1tZWRpYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVguZGVsZWdhdGU7cmV0dXJuKChudWxsPT1uP3ZvaWQgMDpuLnNldEltbWVkaWF0ZSl8fHEpLmFwcGx5KHZvaWQgMCxhKFtdLGkodCkpKX0sY2xlYXJJbW1lZGlhdGU6ZnVuY3Rpb24odCl7dmFyIGU9WC5kZWxlZ2F0ZTtyZXR1cm4oKG51bGw9PWU/dm9pZCAwOmUuY2xlYXJJbW1lZGlhdGUpfHxaKSh0KX0sZGVsZWdhdGU6dm9pZCAwfSxLPShmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5zY2hlZHVsZXI9ZSxvLndvcms9bixvfXJldHVybiBlKG4sdCksbi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxuLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSxudWxsIT09byYmbz4wP3QucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk6KGUuYWN0aW9ucy5wdXNoKHRoaXMpLGUuX3NjaGVkdWxlZHx8KGUuX3NjaGVkdWxlZD1YLnNldEltbWVkaWF0ZShlLmZsdXNoLmJpbmQoZSx2b2lkIDApKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJihYLmNsZWFySW1tZWRpYXRlKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkoVSksSj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dm9pZCAwPT09biYmKG49dC5ub3cpLHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcj1lLHRoaXMubm93PW59cmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9MCksbmV3IHRoaXMuc2NoZWR1bGVyQWN0aW9uQ3Rvcih0aGlzLHQpLnNjaGVkdWxlKG4sZSl9LHQubm93PUwubm93LHR9KSgpLFE9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxuKXt2b2lkIDA9PT1uJiYobj1KLm5vdyk7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby5hY3Rpb25zPVtdLG8uX2FjdGl2ZT0hMSxvLl9zY2hlZHVsZWQ9dm9pZCAwLG99cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFjdGlvbnM7aWYodGhpcy5fYWN0aXZlKWUucHVzaCh0KTtlbHNle3ZhciBuO3RoaXMuX2FjdGl2ZT0hMDtkb3tpZihuPXQuZXhlY3V0ZSh0LnN0YXRlLHQuZGVsYXkpKWJyZWFrfXdoaWxlKHQ9ZS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsbil7Zm9yKDt0PWUuc2hpZnQoKTspdC51bnN1YnNjcmliZSgpO3Rocm93IG59fX0sbn0pKEopLCQ9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO3ZhciBlLG49dGhpcy5hY3Rpb25zLG89LTE7dD10fHxuLnNoaWZ0KCk7dmFyIGk9bi5sZW5ndGg7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK288aSYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5fYWN0aXZlPSExLGUpe2Zvcig7KytvPGkmJih0PW4uc2hpZnQoKSk7KXQudW5zdWJzY3JpYmUoKTt0aHJvdyBlfX0sbn0pKFEpKShLKSx0dD1uZXcgUShVKSxldD10dCxudD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uc2NoZWR1bGVyPWUsby53b3JrPW4sb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLG4+MD90LnByb3RvdHlwZS5zY2hlZHVsZS5jYWxsKHRoaXMsZSxuKToodGhpcy5kZWxheT1uLHRoaXMuc3RhdGU9ZSx0aGlzLnNjaGVkdWxlci5mbHVzaCh0aGlzKSx0aGlzKX0sbi5wcm90b3R5cGUuZXhlY3V0ZT1mdW5jdGlvbihlLG4pe3JldHVybiBuPjB8fHRoaXMuY2xvc2VkP3QucHJvdG90eXBlLmV4ZWN1dGUuY2FsbCh0aGlzLGUsbik6dGhpcy5fZXhlY3V0ZShlLG4pfSxuLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7cmV0dXJuIHZvaWQgMD09PW8mJihvPTApLG51bGwhPW8mJm8+MHx8bnVsbD09byYmdGhpcy5kZWxheT4wP3QucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk6ZS5mbHVzaCh0aGlzKX0sbn0pKFUpLG90PW5ldygoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIGUobix0KSxufSkoUSkpKG50KSxpdD0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uc2NoZWR1bGVyPWUsby53b3JrPW4sb31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gdm9pZCAwPT09byYmKG89MCksbnVsbCE9PW8mJm8+MD90LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxuLG8pOihlLmFjdGlvbnMucHVzaCh0aGlzKSxlLl9zY2hlZHVsZWR8fChlLl9zY2hlZHVsZWQ9Ti5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmx1c2godm9pZCAwKX0pKSkpfSxuLnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG4sbyl7aWYodm9pZCAwPT09byYmKG89MCksbnVsbCE9byYmbz4wfHxudWxsPT1vJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG4sbyk7MD09PWUuYWN0aW9ucy5sZW5ndGgmJihOLmNhbmNlbEFuaW1hdGlvbkZyYW1lKG4pLGUuX3NjaGVkdWxlZD12b2lkIDApfSxufSkoVSksYXQ9bmV3KChmdW5jdGlvbih0KXtmdW5jdGlvbiBuKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gZShuLHQpLG4ucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO3ZhciBlLG49dGhpcy5hY3Rpb25zLG89LTE7dD10fHxuLnNoaWZ0KCk7dmFyIGk9bi5sZW5ndGg7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK288aSYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5fYWN0aXZlPSExLGUpe2Zvcig7KytvPGkmJih0PW4uc2hpZnQoKSk7KXQudW5zdWJzY3JpYmUoKTt0aHJvdyBlfX0sbn0pKFEpKShpdCkscnQ9bmV3IEQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXBsZXRlKCl9KSk7ZnVuY3Rpb24gc3QodCxlKXtyZXR1cm4gbmV3IEQoKGZ1bmN0aW9uKG4pe3ZhciBvPTA7cmV0dXJuIGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7bz09PXQubGVuZ3RoP24uY29tcGxldGUoKToobi5uZXh0KHRbbysrXSksbi5jbG9zZWR8fHRoaXMuc2NoZWR1bGUoKSl9KSl9KSl9dmFyIGx0PWZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoJiYiZnVuY3Rpb24iIT10eXBlb2YgdH07ZnVuY3Rpb24gY3QodCl7cmV0dXJuIGwobnVsbD09dD92b2lkIDA6dC50aGVuKX12YXIgZHQscHQ9KGZ1bmN0aW9uIG10KCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yP1N5bWJvbC5pdGVyYXRvcjoiQEBpdGVyYXRvciJ9KSgpO2Z1bmN0aW9uIHV0KHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgRCgoZnVuY3Rpb24obil7dmFyIG89bmV3IG07cmV0dXJuIG8uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dmFyIGk9dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3ZhciB0PXRoaXM7aS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7ZS5kb25lP24uY29tcGxldGUoKToobi5uZXh0KGUudmFsdWUpLHQuc2NoZWR1bGUoKSl9KSl9KSkpfSkpKSxvfSkpfWZ1bmN0aW9uIGZ0KHQpe3JldHVybiBsKHRbUF0pfWZ1bmN0aW9uIGd0KHQpe3JldHVybiBsKG51bGw9PXQ/dm9pZCAwOnRbcHRdKX1mdW5jdGlvbiBodCh0KXtyZXR1cm4gU3ltYm9sLmFzeW5jSXRlcmF0b3ImJmwobnVsbD09dD92b2lkIDA6dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pfWZ1bmN0aW9uIGJ0KHQpe3JldHVybiBuZXcgVHlwZUVycm9yKCJZb3UgcHJvdmlkZWQgIisobnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdD8iYW4gaW52YWxpZCBvYmplY3QiOiInIit0KyInIikrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlkZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBSZWFkYWJsZVN0cmVhbSwgQXJyYXksIEFzeW5jSXRlcmFibGUsIG9yIEl0ZXJhYmxlLiIpfWZ1bmN0aW9uIHl0KHQpe3JldHVybiBzKHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbiBlKCl7dmFyIG8saSxhO3JldHVybiBuKHRoaXMsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6bz10LmdldFJlYWRlcigpLGUubGFiZWw9MTtjYXNlIDE6ZS50cnlzLnB1c2goWzEsLDksMTBdKSxlLmxhYmVsPTI7Y2FzZSAyOnJldHVybls0LHIoby5yZWFkKCkpXTtjYXNlIDM6cmV0dXJuIGk9ZS5zZW50KCksYT1pLnZhbHVlLGkuZG9uZT9bNCxyKHZvaWQgMCldOlszLDVdO2Nhc2UgNDpyZXR1cm5bMixlLnNlbnQoKV07Y2FzZSA1OnJldHVybls0LHIoYSldO2Nhc2UgNjpyZXR1cm5bNCxlLnNlbnQoKV07Y2FzZSA3OnJldHVybiBlLnNlbnQoKSxbMywyXTtjYXNlIDg6cmV0dXJuWzMsMTBdO2Nhc2UgOTpyZXR1cm4gby5yZWxlYXNlTG9jaygpLFs3XTtjYXNlIDEwOnJldHVyblsyXX19KSl9KSl9ZnVuY3Rpb24gX3QodCl7cmV0dXJuIGwobnVsbD09dD92b2lkIDA6dC5nZXRSZWFkZXIpfWZ1bmN0aW9uIEN0KHQsZSl7cmV0dXJuIGU/KGZ1bmN0aW9uIG4odCxlKXtpZihudWxsIT10KXtpZihmdCh0KSlyZXR1cm4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBuZXcgRCgoZnVuY3Rpb24obil7dmFyIG89bmV3IG07cmV0dXJuIG8uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dmFyIGk9dFtQXSgpO28uYWRkKGkuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe28uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4ubmV4dCh0KX0pKSl9LGVycm9yOmZ1bmN0aW9uKHQpe28uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZXJyb3IodCl9KSkpfSxjb21wbGV0ZTpmdW5jdGlvbigpe28uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGUoKX0pKSl9fSkpfSkpKSxvfSkpfSkodCxlKTtpZihsdCh0KSlyZXR1cm4gc3QodCxlKTtpZihjdCh0KSlyZXR1cm4oZnVuY3Rpb24gbyh0LGUpe3JldHVybiBuZXcgRCgoZnVuY3Rpb24obil7cmV0dXJuIGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQudGhlbigoZnVuY3Rpb24odCl7bi5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtuLm5leHQodCksbi5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkpKX0pKSl9KSwoZnVuY3Rpb24odCl7bi5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5lcnJvcih0KX0pKSl9KSl9KSl9KSl9KSh0LGUpO2lmKGh0KHQpKXJldHVybiB1dCh0LGUpO2lmKGd0KHQpKXJldHVybihmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIG5ldyBEKChmdW5jdGlvbihuKXt2YXIgbztyZXR1cm4gbi5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtvPXRbcHRdKCksKGZ1bmN0aW9uIGkodCxlLG4sbyl7dm9pZCAwPT09byYmKG89MCk7dmFyIGk9ZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXt0cnl7bi5jYWxsKHRoaXMpfWNhdGNoKGUpe3QuZXJyb3IoZSl9fSksbyk7dC5hZGQoaSl9KShuLGUsKGZ1bmN0aW9uKCl7dmFyIHQ9by5uZXh0KCksZT10LnZhbHVlO3QuZG9uZT9uLmNvbXBsZXRlKCk6KG4ubmV4dChlKSx0aGlzLnNjaGVkdWxlKCkpfSkpfSkpKSxmdW5jdGlvbigpe3JldHVybiBsKG51bGw9PW8/dm9pZCAwOm8ucmV0dXJuKSYmby5yZXR1cm4oKX19KSl9KSh0LGUpO2lmKF90KHQpKXJldHVybihmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHV0KHl0KHQpLGUpfSkodCxlKX10aHJvdyBidCh0KX0pKHQsZSk6TXQodCl9ZnVuY3Rpb24gTXQodCl7aWYodCBpbnN0YW5jZW9mIEQpcmV0dXJuIHQ7aWYobnVsbCE9dCl7aWYoZnQodCkpcmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBEKChmdW5jdGlvbihlKXt2YXIgbj10W1BdKCk7aWYobChuLnN1YnNjcmliZSkpcmV0dXJuIG4uc3Vic2NyaWJlKGUpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIil9KSl9KSh0KTtpZihsdCh0KSlyZXR1cm4gdnQodCk7aWYoY3QodCkpcmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBEKChmdW5jdGlvbihlKXt0LnRoZW4oKGZ1bmN0aW9uKHQpe2UuY2xvc2VkfHwoZS5uZXh0KHQpLGUuY29tcGxldGUoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuZXJyb3IodCl9KSkudGhlbihudWxsLGIpfSkpfSkodCk7aWYoaHQodCkpcmV0dXJuIHh0KHQpO2lmKGd0KHQpKXJldHVybihmdW5jdGlvbiBpKHQpe3JldHVybiBuZXcgRCgoZnVuY3Rpb24oZSl7dmFyIG4saTt0cnl7Zm9yKHZhciBhPW8odCkscj1hLm5leHQoKTshci5kb25lO3I9YS5uZXh0KCkpaWYoZS5uZXh0KHIudmFsdWUpLGUuY2xvc2VkKXJldHVybn1jYXRjaCh0KXtuPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYoaT1hLnJldHVybikmJmkuY2FsbChhKX1maW5hbGx5e2lmKG4pdGhyb3cgbi5lcnJvcn19ZS5jb21wbGV0ZSgpfSkpfSkodCk7aWYoX3QodCkpcmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIHh0KHl0KHQpKX0pKHQpfXRocm93IGJ0KHQpfWZ1bmN0aW9uIHZ0KHQpe3JldHVybiBuZXcgRCgoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aCYmIWUuY2xvc2VkO24rKyllLm5leHQodFtuXSk7ZS5jb21wbGV0ZSgpfSkpfWZ1bmN0aW9uIHh0KHQpe3JldHVybiBuZXcgRCgoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uIGkodCxlKXt2YXIgaSxhLHIscztyZXR1cm4oZnVuY3Rpb24gbCh0LGUsbixvKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiByKHQpe3RyeXtsKG8ubmV4dCh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChvLnRocm93KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9pKHQudmFsdWUpOihmdW5jdGlvbiBlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpfSkodC52YWx1ZSkudGhlbihyLHMpfWwoKG89by5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX0pKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgbDtyZXR1cm4gbih0aGlzLChmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOm4udHJ5cy5wdXNoKFswLDUsNiwxMV0pLGk9KGZ1bmN0aW9uIGModCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLG49dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKHQpOih0PW8odCksZT17fSxpKCJuZXh0IiksaSgidGhyb3ciKSxpKCJyZXR1cm4iKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiBpKG4pe2Vbbl09dFtuXSYmZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGkpeyEoZnVuY3Rpb24gYSh0LGUsbixvKXtQcm9taXNlLnJlc29sdmUobykudGhlbigoZnVuY3Rpb24oZSl7dCh7dmFsdWU6ZSxkb25lOm59KX0pLGUpfSkobyxpLChlPXRbbl0oZSkpLmRvbmUsZS52YWx1ZSl9KSl9fX0pKHQpLG4ubGFiZWw9MTtjYXNlIDE6cmV0dXJuWzQsaS5uZXh0KCldO2Nhc2UgMjppZigoYT1uLnNlbnQoKSkuZG9uZSlyZXR1cm5bMyw0XTtpZihlLm5leHQoYS52YWx1ZSksZS5jbG9zZWQpcmV0dXJuWzJdO24ubGFiZWw9MztjYXNlIDM6cmV0dXJuWzMsMV07Y2FzZSA0OnJldHVyblszLDExXTtjYXNlIDU6cmV0dXJuIGw9bi5zZW50KCkscj17ZXJyb3I6bH0sWzMsMTFdO2Nhc2UgNjpyZXR1cm4gbi50cnlzLnB1c2goWzYsLDksMTBdKSxhJiYhYS5kb25lJiYocz1pLnJldHVybik/WzQscy5jYWxsKGkpXTpbMyw4XTtjYXNlIDc6bi5zZW50KCksbi5sYWJlbD04O2Nhc2UgODpyZXR1cm5bMywxMF07Y2FzZSA5OmlmKHIpdGhyb3cgci5lcnJvcjtyZXR1cm5bN107Y2FzZSAxMDpyZXR1cm5bN107Y2FzZSAxMTpyZXR1cm4gZS5jb21wbGV0ZSgpLFsyXX19KSl9KSl9KSh0LGUpLmNhdGNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5lcnJvcih0KX0pKX0pKX1mdW5jdGlvbiBPdCh0LGUpe3JldHVybiBlP3N0KHQsZSk6dnQodCl9ZnVuY3Rpb24gUHQodCl7cmV0dXJuIHQmJmwodC5zY2hlZHVsZSl9ZnVuY3Rpb24gd3QodCl7cmV0dXJuIHRbdC5sZW5ndGgtMV19ZnVuY3Rpb24ga3QodCl7cmV0dXJuIGwod3QodCkpP3QucG9wKCk6dm9pZCAwfWZ1bmN0aW9uIFN0KHQpe3JldHVybiBQdCh3dCh0KSk/dC5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gRHQodCxlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHd0KHQpP3QucG9wKCk6ZX1mdW5jdGlvbiBFdCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1TdCh0KTtyZXR1cm4gbj9zdCh0LG4pOk90KHQpfWZ1bmN0aW9uIFJ0KHQsZSl7dmFyIG49bCh0KT90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LG89ZnVuY3Rpb24odCl7cmV0dXJuIHQuZXJyb3IobigpKX07cmV0dXJuIG5ldyBEKGU/ZnVuY3Rpb24odCl7cmV0dXJuIGUuc2NoZWR1bGUobywwLHQpfTpvKX0hKGZ1bmN0aW9uKHQpe3QuTkVYVD0iTiIsdC5FUlJPUj0iRSIsdC5DT01QTEVURT0iQyJ9KShkdHx8KGR0PXt9KSk7dmFyIEF0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMua2luZD10LHRoaXMudmFsdWU9ZSx0aGlzLmVycm9yPW4sdGhpcy5oYXNWYWx1ZT0iTiI9PT10fXJldHVybiB0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHQpe3JldHVybiBUdCh0aGlzLHQpfSx0LnByb3RvdHlwZS5kbz1mdW5jdGlvbih0LGUsbil7dmFyIG89dGhpcyxpPW8ua2luZCxhPW8uZXJyb3I7cmV0dXJuIk4iPT09aT9udWxsPT10P3ZvaWQgMDp0KG8udmFsdWUpOiJFIj09PWk/bnVsbD09ZT92b2lkIDA6ZShhKTpudWxsPT1uP3ZvaWQgMDpuKCl9LHQucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbih0LGUsbil7dmFyIG87cmV0dXJuIGwobnVsbD09PShvPXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm5leHQpP3RoaXMub2JzZXJ2ZSh0KTp0aGlzLmRvKHQsZSxuKX0sdC5wcm90b3R5cGUudG9PYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQua2luZCxuPXQuZXJyb3Isbz0iTiI9PT1lP0V0KHQudmFsdWUpOiJFIj09PWU/UnQoKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSk6IkMiPT09ZT9ydDowO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uIGtpbmQgIitlKTtyZXR1cm4gb30sdC5jcmVhdGVOZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdCgiTiIsZSl9LHQuY3JlYXRlRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyB0KCJFIix2b2lkIDAsZSl9LHQuY3JlYXRlQ29tcGxldGU9ZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wbGV0ZU5vdGlmaWNhdGlvbn0sdC5jb21wbGV0ZU5vdGlmaWNhdGlvbj1uZXcgdCgiQyIpLHR9KSgpO2Z1bmN0aW9uIFR0KHQsZSl7dmFyIG4sbyxpLGE9dC5raW5kLHI9dC52YWx1ZSxzPXQuZXJyb3I7aWYoInN0cmluZyIhPXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm90aWZpY2F0aW9uLCBtaXNzaW5nICJraW5kIicpOyJOIj09PWE/bnVsbD09PShuPWUubmV4dCl8fHZvaWQgMD09PW58fG4uY2FsbChlLHIpOiJFIj09PWE/bnVsbD09PShvPWUuZXJyb3IpfHx2b2lkIDA9PT1vfHxvLmNhbGwoZSxzKTpudWxsPT09KGk9ZS5jb21wbGV0ZSl8fHZvaWQgMD09PWl8fGkuY2FsbChlKX1mdW5jdGlvbiBOdCh0KXtyZXR1cm4hIXQmJih0IGluc3RhbmNlb2YgRHx8bCh0LmxpZnQpJiZsKHQuc3Vic2NyaWJlKSl9dmFyIHp0PWMoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBlKCl7dCh0aGlzKSx0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXMubWVzc2FnZT0ibm8gZWxlbWVudHMgaW4gc2VxdWVuY2UifX0pKTtmdW5jdGlvbiBJdCh0LGUpe3JldHVybiBSKChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IFQobywoZnVuY3Rpb24obil7by5uZXh0KHQuY2FsbChlLG4saSsrKSl9KSkpfSkpfXZhciBIdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIEZ0KHQpe3JldHVybiBJdCgoZnVuY3Rpb24oZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gSHQoZSk/dC5hcHBseSh2b2lkIDAsYShbXSxpKGUpKSk6dChlKX0pKHQsZSl9KSl9dmFyIEx0PUFycmF5LmlzQXJyYXksQnQ9T2JqZWN0LmdldFByb3RvdHlwZU9mLFZ0PU9iamVjdC5wcm90b3R5cGUsanQ9T2JqZWN0LmtleXM7ZnVuY3Rpb24gVXQodCl7aWYoMT09PXQubGVuZ3RoKXt2YXIgZT10WzBdO2lmKEx0KGUpKXJldHVybnthcmdzOmUsa2V5czpudWxsfTtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZCdCh0KT09PVZ0fSkoZSkpe3ZhciBvPWp0KGUpO3JldHVybnthcmdzOm8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKSxrZXlzOm99fX1yZXR1cm57YXJnczp0LGtleXM6bnVsbH19ZnVuY3Rpb24gR3QodCxlKXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbixvKXtyZXR1cm4gdFtuXT1lW29dLHR9KSx7fSl9ZnVuY3Rpb24gV3QoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49U3QodCksbz1rdCh0KSxpPVV0KHQpLGE9aS5hcmdzLHI9aS5rZXlzO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gQ3QoW10sbik7dmFyIHM9bmV3IEQoWXQoYSxuLHI/ZnVuY3Rpb24odCl7cmV0dXJuIEd0KHIsdCl9OncpKTtyZXR1cm4gbz9zLnBpcGUoRnQobykpOnN9ZnVuY3Rpb24gWXQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj13KSxmdW5jdGlvbihvKXtxdChlLChmdW5jdGlvbigpe2Zvcih2YXIgaT10Lmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPWkscz1pLGw9ZnVuY3Rpb24oaSl7cXQoZSwoZnVuY3Rpb24oKXt2YXIgbD1DdCh0W2ldLGUpLGM9ITE7bC5zdWJzY3JpYmUobmV3IFQobywoZnVuY3Rpb24odCl7YVtpXT10LGN8fChjPSEwLHMtLSksc3x8by5uZXh0KG4oYS5zbGljZSgpKSl9KSwoZnVuY3Rpb24oKXstLXJ8fG8uY29tcGxldGUoKX0pKSl9KSxvKX0sYz0wO2M8aTtjKyspbChjKX0pLG8pfX1mdW5jdGlvbiBxdCh0LGUsbil7dD9uLmFkZCh0LnNjaGVkdWxlKGUpKTplKCl9ZnVuY3Rpb24gWnQodCxlLG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xLzApLGwoZSk/WnQoKGZ1bmN0aW9uKG4sbyl7cmV0dXJuIEl0KChmdW5jdGlvbih0LGkpe3JldHVybiBlKG4sdCxvLGkpfSkpKE10KHQobixvKSkpfSksbik6KCJudW1iZXIiPT10eXBlb2YgZSYmKG49ZSksUigoZnVuY3Rpb24oZSxvKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixvLGEscixzLGwpe3ZhciBjPVtdLGQ9MCxwPTAsbT0hMSx1PWZ1bmN0aW9uKCl7IW18fGMubGVuZ3RofHxkfHxlLmNvbXBsZXRlKCl9LGY9ZnVuY3Rpb24odCl7cmV0dXJuIGQ8bz9nKHQpOmMucHVzaCh0KX0sZz1mdW5jdGlvbih0KXtyJiZlLm5leHQodCksZCsrO3ZhciBpPSExO010KG4odCxwKyspKS5zdWJzY3JpYmUobmV3IFQoZSwoZnVuY3Rpb24odCl7bnVsbD09YXx8YSh0KSxyP2YodCk6ZS5uZXh0KHQpfSksKGZ1bmN0aW9uKCl7aT0hMH0pLHZvaWQgMCwoZnVuY3Rpb24oKXtpZihpKXRyeXtkLS07Zm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9Yy5zaGlmdCgpO3M/ZS5hZGQocy5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gZyh0KX0pKSk6Zyh0KX07Yy5sZW5ndGgmJmQ8bzspdCgpO3UoKX1jYXRjaCh0KXtlLmVycm9yKHQpfX0pKSl9O3JldHVybiB0LnN1YnNjcmliZShuZXcgVChlLGYsKGZ1bmN0aW9uKCl7bT0hMCx1KCl9KSkpLGZ1bmN0aW9uKCl7bnVsbD09bHx8bCgpfX0pKGUsbyx0LG4pfSkpKX1mdW5jdGlvbiBYdCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MS8wKSxadCh3LHQpfWZ1bmN0aW9uIEt0KCl7cmV0dXJuIFh0KDEpfWZ1bmN0aW9uIEp0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiBLdCgpKE90KHQsU3QodCkpKX1mdW5jdGlvbiBRdCh0KXtyZXR1cm4gbmV3IEQoKGZ1bmN0aW9uKGUpe010KHQoKSkuc3Vic2NyaWJlKGUpfSkpfWZ1bmN0aW9uICR0KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPWt0KHQpLG89VXQodCksaT1vLmFyZ3MsYT1vLmtleXMscj1uZXcgRCgoZnVuY3Rpb24odCl7dmFyIGU9aS5sZW5ndGg7aWYoZSlmb3IodmFyIG49bmV3IEFycmF5KGUpLG89ZSxyPWUscz1mdW5jdGlvbihlKXt2YXIgcz0hMTtNdChpW2VdKS5zdWJzY3JpYmUobmV3IFQodCwoZnVuY3Rpb24odCl7c3x8KHM9ITAsci0tKSxuW2VdPXR9KSwoZnVuY3Rpb24oKXstLW8mJnN8fChyfHx0Lm5leHQoYT9HdChhLG4pOm4pLHQuY29tcGxldGUoKSl9KSkpfSxsPTA7bDxlO2wrKylzKGwpO2Vsc2UgdC5jb21wbGV0ZSgpfSkpO3JldHVybiBuP3IucGlwZShGdChuKSk6cn12YXIgdGU9WyJhZGRMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIl0sZWU9WyJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLG5lPVsib24iLCJvZmYiXTtmdW5jdGlvbiBvZSh0LGUsbixvKXtpZihsKG4pJiYobz1uLG49dm9pZCAwKSxvKXJldHVybiBvZSh0LGUsbikucGlwZShGdChvKSk7dmFyIGE9aSgoZnVuY3Rpb24gcih0KXtyZXR1cm4gbCh0LmFkZEV2ZW50TGlzdGVuZXIpJiZsKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcil9KSh0KT9lZS5tYXAoKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gdFtvXShlLGksbil9fSkpOihmdW5jdGlvbiBzKHQpe3JldHVybiBsKHQuYWRkTGlzdGVuZXIpJiZsKHQucmVtb3ZlTGlzdGVuZXIpfSkodCk/dGUubWFwKGllKHQsZSkpOihmdW5jdGlvbiBjKHQpe3JldHVybiBsKHQub24pJiZsKHQub2ZmKX0pKHQpP25lLm1hcChpZSh0LGUpKTpbXSwyKSxkPWFbMF0scD1hWzFdO2lmKCFkJiZsdCh0KSlyZXR1cm4gWnQoKGZ1bmN0aW9uKHQpe3JldHVybiBvZSh0LGUsbil9KSkoT3QodCkpO2lmKCFkKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgZXZlbnQgdGFyZ2V0Iik7cmV0dXJuIG5ldyBEKChmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdC5uZXh0KDE8ZS5sZW5ndGg/ZTplWzBdKX07cmV0dXJuIGQoZSksZnVuY3Rpb24oKXtyZXR1cm4gcChlKX19KSl9ZnVuY3Rpb24gaWUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiB0W25dKGUsbyl9fX1mdW5jdGlvbiBhZSh0LGUsbil7dm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09biYmKG49ZXQpO3ZhciBvPS0xO3JldHVybiBudWxsIT1lJiYoUHQoZSk/bj1lOm89ZSksbmV3IEQoKGZ1bmN0aW9uKGUpe3ZhciBpPShmdW5jdGlvbiBhKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKHQpfSkodCk/K3Qtbi5ub3coKTp0O2k8MCYmKGk9MCk7dmFyIHI9MDtyZXR1cm4gbi5zY2hlZHVsZSgoZnVuY3Rpb24oKXtlLmNsb3NlZHx8KGUubmV4dChyKyspLDA8PW8/dGhpcy5zY2hlZHVsZSh2b2lkIDAsbyk6ZS5jb21wbGV0ZSgpKX0pLGkpfSkpfWZ1bmN0aW9uIHJlKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPVN0KHQpLG89RHQodCwxLzApLGk9dDtyZXR1cm4gaS5sZW5ndGg/MT09PWkubGVuZ3RoP010KGlbMF0pOlh0KG8pKE90KGksbikpOnJ0fXZhciBzZT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIGxlKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJnNlKHRbMF0pP3RbMF06dH1mdW5jdGlvbiBjZSh0LGUpe3JldHVybiBSKChmdW5jdGlvbihuLG8pe3ZhciBpPTA7bi5zdWJzY3JpYmUobmV3IFQobywoZnVuY3Rpb24obil7cmV0dXJuIHQuY2FsbChlLG4saSsrKSYmby5uZXh0KG4pfSkpKX0pKX1mdW5jdGlvbiBkZSh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1ldCksKGZ1bmN0aW9uIG4odCl7cmV0dXJuIFIoKGZ1bmN0aW9uKGUsbil7dmFyIG89ITEsaT1udWxsLGE9bnVsbCxyPSExLHM9ZnVuY3Rpb24oKXtpZihudWxsPT1hfHxhLnVuc3Vic2NyaWJlKCksYT1udWxsLG8pe289ITE7dmFyIHQ9aTtpPW51bGwsbi5uZXh0KHQpfXImJm4uY29tcGxldGUoKX0sbD1mdW5jdGlvbigpe2E9bnVsbCxyJiZuLmNvbXBsZXRlKCl9O2Uuc3Vic2NyaWJlKG5ldyBUKG4sKGZ1bmN0aW9uKGUpe289ITAsaT1lLGF8fE10KHQoZSkpLnN1YnNjcmliZShhPW5ldyBUKG4scyxsKSl9KSwoZnVuY3Rpb24oKXtyPSEwLCghb3x8IWF8fGEuY2xvc2VkKSYmbi5jb21wbGV0ZSgpfSkpKX0pKX0pKChmdW5jdGlvbigpe3JldHVybiBhZSh0LGUpfSkpfWZ1bmN0aW9uIHBlKHQpe3JldHVybiBSKChmdW5jdGlvbihlLG4pe3ZhciBvLGk9bnVsbCxhPSExO2k9ZS5zdWJzY3JpYmUobmV3IFQobix2b2lkIDAsdm9pZCAwLChmdW5jdGlvbihyKXtvPU10KHQocixwZSh0KShlKSkpLGk/KGkudW5zdWJzY3JpYmUoKSxpPW51bGwsby5zdWJzY3JpYmUobikpOmE9ITB9KSkpLGEmJihpLnVuc3Vic2NyaWJlKCksaT1udWxsLG8uc3Vic2NyaWJlKG4pKX0pKX1mdW5jdGlvbiBtZSh0LGUsbixvLGkpe3JldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPW4sbD1lLGM9MDthLnN1YnNjcmliZShuZXcgVChyLChmdW5jdGlvbihlKXt2YXIgbj1jKys7bD1zP3QobCxlLG4pOihzPSEwLGUpLG8mJnIubmV4dChsKX0pLGkmJmZ1bmN0aW9uKCl7cyYmci5uZXh0KGwpLHIuY29tcGxldGUoKX0pKX19ZnVuY3Rpb24gdWUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49a3QodCk7cmV0dXJuIG4/ayh1ZS5hcHBseSh2b2lkIDAsYShbXSxpKHQpKSksRnQobikpOlIoKGZ1bmN0aW9uKGUsbil7WXQoYShbZV0saShsZSh0KSkpKShuKX0pKX1mdW5jdGlvbiBmZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gdWUuYXBwbHkodm9pZCAwLGEoW10saSh0KSkpfWZ1bmN0aW9uIGdlKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXR0KSxSKChmdW5jdGlvbihuLG8pe3ZhciBpPW51bGwsYT1udWxsLHI9bnVsbCxzPWZ1bmN0aW9uKCl7aWYoaSl7aS51bnN1YnNjcmliZSgpLGk9bnVsbDt2YXIgdD1hO2E9bnVsbCxvLm5leHQodCl9fTtmdW5jdGlvbiBsKCl7dmFyIG49cit0LGE9ZS5ub3coKTtpZihhPG4pcmV0dXJuIGk9dGhpcy5zY2hlZHVsZSh2b2lkIDAsbi1hKSx2b2lkIG8uYWRkKGkpO3MoKX1uLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbihuKXthPW4scj1lLm5vdygpLGl8fChpPWUuc2NoZWR1bGUobCx0KSxvLmFkZChpKSl9KSwoZnVuY3Rpb24oKXtzKCksby5jb21wbGV0ZSgpfSksdm9pZCAwLChmdW5jdGlvbigpe2E9aT1udWxsfSkpKX0pKX1mdW5jdGlvbiBoZSh0KXtyZXR1cm4gUigoZnVuY3Rpb24oZSxuKXt2YXIgbz0hMTtlLnN1YnNjcmliZShuZXcgVChuLChmdW5jdGlvbih0KXtvPSEwLG4ubmV4dCh0KX0pLChmdW5jdGlvbigpe298fG4ubmV4dCh0KSxuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIGJlKHQpe3JldHVybiB0PD0wP2Z1bmN0aW9uKCl7cmV0dXJuIHJ0fTpSKChmdW5jdGlvbihlLG4pe3ZhciBvPTA7ZS5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24oZSl7KytvPD10JiYobi5uZXh0KGUpLHQ8PW8mJm4uY29tcGxldGUoKSl9KSkpfSkpfWZ1bmN0aW9uIHllKCl7cmV0dXJuIFIoKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IFQoZSx5KSl9KSl9ZnVuY3Rpb24gX2UodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gSnQoZS5waXBlKGJlKDEpLHllKCkpLG4ucGlwZShfZSh0KSkpfTpadCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4pLnBpcGUoYmUoMSksKGZ1bmN0aW9uIG8odCl7cmV0dXJuIEl0KChmdW5jdGlvbigpe3JldHVybiB0fSkpfSkoZSkpfSkpfWZ1bmN0aW9uIENlKHQsZSl7dm9pZCAwPT09ZSYmKGU9dHQpO3ZhciBuPWFlKHQsZSk7cmV0dXJuIF9lKChmdW5jdGlvbigpe3JldHVybiBufSkpfWZ1bmN0aW9uIE1lKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXcpLHQ9bnVsbCE9dD90OnZlLFIoKGZ1bmN0aW9uKG4sbyl7dmFyIGksYT0hMDtuLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbihuKXt2YXIgcj1lKG4pOyFhJiZ0KGkscil8fChhPSExLGk9cixvLm5leHQobikpfSkpKX0pKX1mdW5jdGlvbiB2ZSh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9T2UpLFIoKGZ1bmN0aW9uKGUsbil7dmFyIG89ITE7ZS5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24odCl7bz0hMCxuLm5leHQodCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbz9uLmNvbXBsZXRlKCk6bi5lcnJvcih0KCkpfSkpKX0pKX1mdW5jdGlvbiBPZSgpe3JldHVybiBuZXcgenR9ZnVuY3Rpb24gUGUodCxlKXtyZXR1cm4gZT9mdW5jdGlvbihuKXtyZXR1cm4gbi5waXBlKFBlKChmdW5jdGlvbihuLG8pe3JldHVybiBNdCh0KG4sbykpLnBpcGUoSXQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUobix0LG8saSl9KSkpfSkpKX06UigoZnVuY3Rpb24oZSxuKXt2YXIgbz0wLGk9bnVsbCxhPSExO2Uuc3Vic2NyaWJlKG5ldyBUKG4sKGZ1bmN0aW9uKGUpe2l8fChpPW5ldyBUKG4sdm9pZCAwLChmdW5jdGlvbigpe2k9bnVsbCxhJiZuLmNvbXBsZXRlKCl9KSksTXQodChlLG8rKykpLnN1YnNjcmliZShpKSl9KSwoZnVuY3Rpb24oKXthPSEwLCFpJiZuLmNvbXBsZXRlKCl9KSkpfSkpfWZ1bmN0aW9uIHdlKHQsZSxuLG8pe3JldHVybiBSKChmdW5jdGlvbihpLGEpe3ZhciByO2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlPyhuPWUuZHVyYXRpb24scj1lLmVsZW1lbnQsbz1lLmNvbm5lY3Rvcik6cj1lO3ZhciBzPW5ldyBNYXAsbD1mdW5jdGlvbih0KXtzLmZvckVhY2godCksdChhKX0sYz1mdW5jdGlvbih0KXtyZXR1cm4gbCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IodCl9KSl9LGQ9bmV3IGtlKGEsKGZ1bmN0aW9uKGUpe3RyeXt2YXIgaT10KGUpLGw9cy5nZXQoaSk7aWYoIWwpe3Muc2V0KGksbD1vP28oKTpuZXcgSSk7dmFyIHA9KGZ1bmN0aW9uIG0odCxlKXt2YXIgbj1uZXcgRCgoZnVuY3Rpb24odCl7ZC5hY3RpdmVHcm91cHMrKzt2YXIgbj1lLnN1YnNjcmliZSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKCksMD09LS1kLmFjdGl2ZUdyb3VwcyYmZC50ZWFyZG93bkF0dGVtcHRlZCYmZC51bnN1YnNjcmliZSgpfX0pKTtyZXR1cm4gbi5rZXk9dCxufSkoaSxsKTtpZihhLm5leHQocCksbil7dmFyIHU9bmV3IFQobCwoZnVuY3Rpb24oKXtsLmNvbXBsZXRlKCksbnVsbD09dXx8dS51bnN1YnNjcmliZSgpfSksdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGUoaSl9KSk7ZC5hZGQoTXQobihwKSkuc3Vic2NyaWJlKHUpKX19bC5uZXh0KHI/cihlKTplKX1jYXRjaCh0KXtjKHQpfX0pLChmdW5jdGlvbigpe3JldHVybiBsKChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpfSksYywoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhcigpfSkpO2kuc3Vic2NyaWJlKGQpfSkpfXZhciBrZT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbigpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5hY3RpdmVHcm91cHM9MCxlLnRlYXJkb3duQXR0ZW1wdGVkPSExLGV9cmV0dXJuIGUobix0KSxuLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudGVhcmRvd25BdHRlbXB0ZWQ9ITAsMD09PXRoaXMuYWN0aXZlR3JvdXBzJiZ0LnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpfSxufSkoVCk7ZnVuY3Rpb24gU2UodCl7cmV0dXJuIHQ8PTA/ZnVuY3Rpb24oKXtyZXR1cm4gcnR9OlIoKGZ1bmN0aW9uKGUsbil7dmFyIGk9W107ZS5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24oZSl7aS5wdXNoKGUpLHQ8aS5sZW5ndGgmJmkuc2hpZnQoKX0pLChmdW5jdGlvbigpe3ZhciB0LGU7dHJ5e2Zvcih2YXIgYT1vKGkpLHI9YS5uZXh0KCk7IXIuZG9uZTtyPWEubmV4dCgpKW4ubmV4dChyLnZhbHVlKX1jYXRjaChlKXt0PXtlcnJvcjplfX1maW5hbGx5e3RyeXtyJiYhci5kb25lJiYoZT1hLnJldHVybikmJmUuY2FsbChhKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19bi5jb21wbGV0ZSgpfSksdm9pZCAwLChmdW5jdGlvbigpe2k9bnVsbH0pKSl9KSl9ZnVuY3Rpb24gRGUoKXtyZXR1cm4gUigoZnVuY3Rpb24odCxlKXt2YXIgbixvPSExO3Quc3Vic2NyaWJlKG5ldyBUKGUsKGZ1bmN0aW9uKHQpe3ZhciBpPW47bj10LG8mJmUubmV4dChbaSx0XSksbz0hMH0pKSl9KSl9ZnVuY3Rpb24gRWUodCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBlPXQuY29ubmVjdG9yLG49dm9pZCAwPT09ZT9mdW5jdGlvbigpe3JldHVybiBuZXcgSX06ZSxvPXQucmVzZXRPbkVycm9yLGk9dm9pZCAwPT09b3x8byxhPXQucmVzZXRPbkNvbXBsZXRlLHI9dm9pZCAwPT09YXx8YSxzPXQucmVzZXRPblJlZkNvdW50WmVybyxsPXZvaWQgMD09PXN8fHM7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPW51bGwsbz1udWxsLGE9bnVsbCxzPTAsYz0hMSxkPSExLHA9ZnVuY3Rpb24oKXtudWxsPT1vfHxvLnVuc3Vic2NyaWJlKCksbz1udWxsfSxtPWZ1bmN0aW9uKCl7cCgpLGU9YT1udWxsLGM9ZD0hMX0sdT1mdW5jdGlvbigpe3ZhciB0PWU7bSgpLG51bGw9PXR8fHQudW5zdWJzY3JpYmUoKX07cmV0dXJuIFIoKGZ1bmN0aW9uKHQsZil7cysrLGR8fGN8fHAoKTt2YXIgZz1hPW51bGwhPWE/YTpuKCk7Zi5hZGQoKGZ1bmN0aW9uKCl7MCE9LS1zfHxkfHxjfHwobz1SZSh1LGwpKX0pKSxnLnN1YnNjcmliZShmKSxlfHwoZT1uZXcgTSh7bmV4dDpmdW5jdGlvbih0KXtyZXR1cm4gZy5uZXh0KHQpfSxlcnJvcjpmdW5jdGlvbih0KXtkPSEwLHAoKSxvPVJlKG0saSx0KSxnLmVycm9yKHQpfSxjb21wbGV0ZTpmdW5jdGlvbigpe2M9ITAscCgpLG89UmUobSxyKSxnLmNvbXBsZXRlKCl9fSksQ3QodCkuc3Vic2NyaWJlKGUpKX0pKSh0KX19ZnVuY3Rpb24gUmUodCxlKXtmb3IodmFyIG49W10sbz0yO288YXJndW1lbnRzLmxlbmd0aDtvKyspbltvLTJdPWFyZ3VtZW50c1tvXTtyZXR1cm4hMD09PWU/KHQoKSxudWxsKTohMT09PWU/bnVsbDplLmFwcGx5KHZvaWQgMCxhKFtdLGkobikpKS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQoKX0pKX1mdW5jdGlvbiBBZSh0LGUsbil7dmFyIG8saSxhLHI9ITE7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdD8oYT1udWxsIT09KG89dC5idWZmZXJTaXplKSYmdm9pZCAwIT09bz9vOjEvMCxlPW51bGwhPT0oaT10LndpbmRvd1RpbWUpJiZ2b2lkIDAhPT1pP2k6MS8wLHI9ISF0LnJlZkNvdW50LG49dC5zY2hlZHVsZXIpOmE9bnVsbCE9dD90OjEvMCxFZSh7Y29ubmVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBCKGEsZSxuKX0scmVzZXRPbkVycm9yOiEwLHJlc2V0T25Db21wbGV0ZTohMSxyZXNldE9uUmVmQ291bnRaZXJvOnJ9KX1mdW5jdGlvbiBUZSh0KXtyZXR1cm4gY2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQ8PW59KSl9ZnVuY3Rpb24gTmUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49U3QodCk7cmV0dXJuIFIoKGZ1bmN0aW9uKGUsbyl7KG4/SnQodCxlLG4pOkp0KHQsZSkpLnN1YnNjcmliZShvKX0pKX1mdW5jdGlvbiB6ZSh0LGUpe3JldHVybiBSKChmdW5jdGlvbihuLG8pe3ZhciBpPW51bGwsYT0wLHI9ITEscz1mdW5jdGlvbigpe3JldHVybiByJiYhaSYmby5jb21wbGV0ZSgpfTtuLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbihuKXtudWxsPT1pfHxpLnVuc3Vic2NyaWJlKCk7dmFyIHI9MCxsPWErKztNdCh0KG4sbCkpLnN1YnNjcmliZShpPW5ldyBUKG8sKGZ1bmN0aW9uKHQpe3JldHVybiBvLm5leHQoZT9lKG4sdCxsLHIrKyk6dCl9KSwoZnVuY3Rpb24oKXtpPW51bGwscygpfSkpKX0pLChmdW5jdGlvbigpe3I9ITAscygpfSkpKX0pKX1mdW5jdGlvbiBJZSh0KXtyZXR1cm4gUigoZnVuY3Rpb24oZSxuKXtNdCh0KS5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkseSkpLCFuLmNsb3NlZCYmZS5zdWJzY3JpYmUobil9KSl9ZnVuY3Rpb24gSGUodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLFIoKGZ1bmN0aW9uKG4sbyl7dmFyIGk9MDtuLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbihuKXt2YXIgYT10KG4saSsrKTsoYXx8ZSkmJm8ubmV4dChuKSwhYSYmby5jb21wbGV0ZSgpfSkpKX0pKX1mdW5jdGlvbiBGZSh0LGUsbil7dmFyIG89bCh0KXx8ZXx8bj97bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn06dDtyZXR1cm4gbz9SKChmdW5jdGlvbih0LGUpe3ZhciBuO251bGw9PT0obj1vLnN1YnNjcmliZSl8fHZvaWQgMD09PW58fG4uY2FsbChvKTt2YXIgaT0hMDt0LnN1YnNjcmliZShuZXcgVChlLChmdW5jdGlvbih0KXt2YXIgbjtudWxsPT09KG49by5uZXh0KXx8dm9pZCAwPT09bnx8bi5jYWxsKG8sdCksZS5uZXh0KHQpfSksKGZ1bmN0aW9uKCl7dmFyIHQ7aT0hMSxudWxsPT09KHQ9by5jb21wbGV0ZSl8fHZvaWQgMD09PXR8fHQuY2FsbChvKSxlLmNvbXBsZXRlKCl9KSwoZnVuY3Rpb24odCl7dmFyIG47aT0hMSxudWxsPT09KG49by5lcnJvcil8fHZvaWQgMD09PW58fG4uY2FsbChvLHQpLGUuZXJyb3IodCl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlO2kmJihudWxsPT09KHQ9by51bnN1YnNjcmliZSl8fHZvaWQgMD09PXR8fHQuY2FsbChvKSksbnVsbD09PShlPW8uZmluYWxpemUpfHx2b2lkIDA9PT1lfHxlLmNhbGwobyl9KSkpfSkpOnd9dmFyIExlPXtsZWFkaW5nOiEwLHRyYWlsaW5nOiExfTtmdW5jdGlvbiBCZSh0LGUsbil7dm9pZCAwPT09ZSYmKGU9dHQpLHZvaWQgMD09PW4mJihuPUxlKTt2YXIgbz1hZSh0LGUpO3JldHVybihmdW5jdGlvbiBpKHQsZSl7dmFyIG49dm9pZCAwPT09ZT9MZTplLG89bi5sZWFkaW5nLGk9bi50cmFpbGluZztyZXR1cm4gUigoZnVuY3Rpb24oZSxuKXt2YXIgYT0hMSxyPW51bGwscz1udWxsLGw9ITEsYz1mdW5jdGlvbigpe251bGw9PXN8fHMudW5zdWJzY3JpYmUoKSxzPW51bGwsaSYmKG0oKSxsJiZuLmNvbXBsZXRlKCkpfSxkPWZ1bmN0aW9uKCl7cz1udWxsLGwmJm4uY29tcGxldGUoKX0scD1mdW5jdGlvbihlKXtyZXR1cm4gcz1NdCh0KGUpKS5zdWJzY3JpYmUobmV3IFQobixjLGQpKX0sbT1mdW5jdGlvbigpe2lmKGEpe2E9ITE7dmFyIHQ9cjtyPW51bGwsbi5uZXh0KHQpLCFsJiZwKHQpfX07ZS5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24odCl7YT0hMCxyPXQsKCFzfHxzLmNsb3NlZCkmJihvP20oKTpwKHQpKX0pLChmdW5jdGlvbigpe2w9ITAsKCEoaSYmYSYmcyl8fHMuY2xvc2VkKSYmbi5jb21wbGV0ZSgpfSkpKX0pKX0pKChmdW5jdGlvbigpe3JldHVybiBvfSksbil9ZnVuY3Rpb24gVmUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49a3QodCk7cmV0dXJuIFIoKGZ1bmN0aW9uKGUsbyl7Zm9yKHZhciByPXQubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9dC5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KSksYz0hMSxkPWZ1bmN0aW9uKGUpe010KHRbZV0pLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbih0KXtzW2VdPXQsY3x8bFtlXXx8KGxbZV09ITAsKGM9bC5ldmVyeSh3KSkmJihsPW51bGwpKX0pLHkpKX0scD0wO3A8cjtwKyspZChwKTtlLnN1YnNjcmliZShuZXcgVChvLChmdW5jdGlvbih0KXtpZihjKXt2YXIgZT1hKFt0XSxpKHMpKTtvLm5leHQobj9uLmFwcGx5KHZvaWQgMCxhKFtdLGkoZSkpKTplKX19KSkpfSkpfQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBqZSh0KXtmb3IobGV0IGUgaW4gdClpZih0W2VdPT09amUpcmV0dXJuIGU7dGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHJlbmFtZWQgcHJvcGVydHkgb24gdGFyZ2V0IG9iamVjdC4iKX1mdW5jdGlvbiBVZSh0LGUpe2Zvcihjb25zdCBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmIXQuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBHZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4iWyIrdC5tYXAoR2UpLmpvaW4oIiwgIikrIl0iO2lmKG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1lKXJldHVybmAke3Qub3ZlcnJpZGRlbk5hbWV9YDtpZih0Lm5hbWUpcmV0dXJuYCR7dC5uYW1lfWA7Y29uc3QgZT10LnRvU3RyaW5nKCk7aWYobnVsbD09ZSlyZXR1cm4iIitlO2NvbnN0IG49ZS5pbmRleE9mKCJcbiIpO3JldHVybi0xPT09bj9lOmUuc3Vic3RyaW5nKDAsbil9ZnVuY3Rpb24gV2UodCxlKXtyZXR1cm4gbnVsbD09dHx8IiI9PT10P251bGw9PT1lPyIiOmU6bnVsbD09ZXx8IiI9PT1lP3Q6dCsiICIrZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWWU9amUoe19fZm9yd2FyZF9yZWZfXzpqZX0pO2Z1bmN0aW9uIHFlKHQpe3JldHVybiB0Ll9fZm9yd2FyZF9yZWZfXz1xZSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIEdlKHRoaXMoKSl9LHR9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIFhlKHQpP3QoKTp0fWZ1bmN0aW9uIFhlKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KFllKSYmdC5fX2ZvcndhcmRfcmVmX189PT1xZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgS2UgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKFFlKHQsZSkpLHRoaXMuY29kZT10fX1jb25zdCBKZT1uZXcgU2V0KFsiMTAwIiwiMjAwIiwiMjAxIiwiMzAwIiwiMzAxIiwiMzAyIl0pO2Z1bmN0aW9uIFFlKHQsZSl7bGV0IG49YCR7dD9gTkcwJHt0fTogYDoiIn0ke2V9YDtyZXR1cm4gbmdEZXZNb2RlJiZKZS5oYXModCkmJihuPWAke259LiBGaW5kIG1vcmUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2Vycm9ycy9ORzAke3R9YCksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gJGUodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6bnVsbD09dD8iIjpTdHJpbmcodCl9ZnVuY3Rpb24gdG4odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dC5uYW1lfHx0LnRvU3RyaW5nKCk6Im9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiYiZnVuY3Rpb24iPT10eXBlb2YgdC50eXBlP3QudHlwZS5uYW1lfHx0LnR5cGUudG9TdHJpbmcoKTokZSh0KX1mdW5jdGlvbiBlbih0LGUpe2NvbnN0IG49ZT9gLiBEZXBlbmRlbmN5IHBhdGg6ICR7ZS5qb2luKCIgPiAiKX0gPiAke3R9YDoiIjt0aHJvdyBuZXcgS2UoIjIwMCIsYENpcmN1bGFyIGRlcGVuZGVuY3kgaW4gREkgZGV0ZWN0ZWQgZm9yICR7dH0ke259YCl9ZnVuY3Rpb24gbm4oKXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycyIpfWZ1bmN0aW9uIG9uKHQsZSl7Y29uc3Qgbj1lP2AgaW4gJHtlfWA6IiI7dGhyb3cgbmV3IEtlKCIyMDEiLGBObyBwcm92aWRlciBmb3IgJHt0bih0KX0gZm91bmQke259YCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGFuKHQsZSl7Im51bWJlciIhPXR5cGVvZiB0JiZibihlLHR5cGVvZiB0LCJudW1iZXIiLCI9PT0iKX1mdW5jdGlvbiBybih0LGUsbil7YW4odCwiRXhwZWN0ZWQgYSBudW1iZXIiKSx1bih0LG4sIkV4cGVjdGVkIG51bWJlciB0byBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8iKSxnbih0LGUsIkV4cGVjdGVkIG51bWJlciB0byBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8iKX1mdW5jdGlvbiBzbih0LGUpeyJzdHJpbmciIT10eXBlb2YgdCYmYm4oZSxudWxsPT09dD8ibnVsbCI6dHlwZW9mIHQsInN0cmluZyIsIj09PSIpfWZ1bmN0aW9uIGxuKHQsZSxuKXt0IT1lJiZibihuLHQsZSwiPT0iKX1mdW5jdGlvbiBjbih0LGUsbil7dD09ZSYmYm4obix0LGUsIiE9Iil9ZnVuY3Rpb24gZG4odCxlLG4pe3QhPT1lJiZibihuLHQsZSwiPT09Iil9ZnVuY3Rpb24gcG4odCxlLG4pe3Q9PT1lJiZibihuLHQsZSwiIT09Iil9ZnVuY3Rpb24gbW4odCxlLG4pe3Q8ZXx8Ym4obix0LGUsIjwiKX1mdW5jdGlvbiB1bih0LGUsbil7dDw9ZXx8Ym4obix0LGUsIjw9Iil9ZnVuY3Rpb24gZm4odCxlLG4pe3Q+ZXx8Ym4obix0LGUsIj4iKX1mdW5jdGlvbiBnbih0LGUsbil7dD49ZXx8Ym4obix0LGUsIj49Iil9ZnVuY3Rpb24gaG4odCxlKXtudWxsPT10JiZibihlLHQsbnVsbCwiIT0iKX1mdW5jdGlvbiBibih0LGUsbixvKXt0aHJvdyBuZXcgRXJyb3IoYEFTU0VSVElPTiBFUlJPUjogJHt0fWArKG51bGw9PW8/IiI6YCBbRXhwZWN0ZWQ9PiAke259ICR7b30gJHtlfSA8PUFjdHVhbF1gKSl9ZnVuY3Rpb24geW4odCl7InVuZGVmaW5lZCIhPXR5cGVvZiBOb2RlJiZ0IGluc3RhbmNlb2YgTm9kZXx8Im9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiYiV2ViV29ya2VyUmVuZGVyTm9kZSI9PT10LmNvbnN0cnVjdG9yLm5hbWV8fGJuKGBUaGUgcHJvdmlkZWQgdmFsdWUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIERPTSBOb2RlIGJ1dCBnb3QgJHtHZSh0KX1gKX1mdW5jdGlvbiBfbih0LGUpe2huKHQsIkFycmF5IG11c3QgYmUgZGVmaW5lZC4iKTtjb25zdCBuPXQubGVuZ3RoOyhlPDB8fGU+PW4pJiZibihgSW5kZXggZXhwZWN0ZWQgdG8gYmUgbGVzcyB0aGFuICR7bn0gYnV0IGdvdCAke2V9YCl9ZnVuY3Rpb24gQ24odCwuLi5lKXtpZigtMSE9PWUuaW5kZXhPZih0KSlyZXR1cm4hMDtibihgRXhwZWN0ZWQgdmFsdWUgdG8gYmUgb25lIG9mICR7SlNPTi5zdHJpbmdpZnkoZSl9IGJ1dCB3YXMgJHtKU09OLnN0cmluZ2lmeSh0KX0uYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIE1uKHQpe3JldHVybnt0b2tlbjp0LnRva2VuLHByb3ZpZGVkSW46dC5wcm92aWRlZElufHxudWxsLGZhY3Rvcnk6dC5mYWN0b3J5LHZhbHVlOnZvaWQgMH19ZnVuY3Rpb24gdm4odCl7cmV0dXJue3Byb3ZpZGVyczp0LnByb3ZpZGVyc3x8W10saW1wb3J0czp0LmltcG9ydHN8fFtdfX1mdW5jdGlvbiB4bih0KXtyZXR1cm4gT24odCx3bil8fE9uKHQsU24pfWZ1bmN0aW9uIE9uKHQsZSl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoZSk/dFtlXTpudWxsfWZ1bmN0aW9uIFBuKHQpe3JldHVybiB0JiYodC5oYXNPd25Qcm9wZXJ0eShrbil8fHQuaGFzT3duUHJvcGVydHkoRG4pKT90W2tuXTpudWxsfWNvbnN0IHduPWplKHsiybVwcm92IjpqZX0pLGtuPWplKHsiybVpbmoiOmplfSksU249amUoe25nSW5qZWN0YWJsZURlZjpqZX0pLERuPWplKHtuZ0luamVjdG9yRGVmOmplfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp2YXIgRW47Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgUm47ZnVuY3Rpb24gQW4odCl7Y29uc3QgZT1SbjtyZXR1cm4gUm49dCxlfWZ1bmN0aW9uIFRuKHQsZSxuKXtjb25zdCBvPXhuKHQpO3JldHVybiBvJiYicm9vdCI9PW8ucHJvdmlkZWRJbj92b2lkIDA9PT1vLnZhbHVlP28udmFsdWU9by5mYWN0b3J5KCk6by52YWx1ZTpuJkVuLk9wdGlvbmFsP251bGw6dm9pZCAwIT09ZT9lOnZvaWQgb24oR2UodCksIkluamVjdG9yIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBObih0KXtyZXR1cm57dG9TdHJpbmc6dH0udG9TdHJpbmcoKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovdmFyIHpuLEluLEhuOyEoZnVuY3Rpb24odCl7dFt0LkRlZmF1bHQ9MF09IkRlZmF1bHQiLHRbdC5Ib3N0PTFdPSJIb3N0Iix0W3QuU2VsZj0yXT0iU2VsZiIsdFt0LlNraXBTZWxmPTRdPSJTa2lwU2VsZiIsdFt0Lk9wdGlvbmFsPThdPSJPcHRpb25hbCJ9KShFbnx8KEVuPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5PblB1c2g9MF09Ik9uUHVzaCIsdFt0LkRlZmF1bHQ9MV09IkRlZmF1bHQifSkoem58fCh6bj17fSkpLChmdW5jdGlvbih0KXt0W3QuQ2hlY2tPbmNlPTBdPSJDaGVja09uY2UiLHRbdC5DaGVja2VkPTFdPSJDaGVja2VkIix0W3QuQ2hlY2tBbHdheXM9Ml09IkNoZWNrQWx3YXlzIix0W3QuRGV0YWNoZWQ9M109IkRldGFjaGVkIix0W3QuRXJyb3JlZD00XT0iRXJyb3JlZCIsdFt0LkRlc3Ryb3llZD01XT0iRGVzdHJveWVkIn0pKElufHwoSW49e30pKSwoZnVuY3Rpb24odCl7dFt0LkVtdWxhdGVkPTBdPSJFbXVsYXRlZCIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSJ9KShIbnx8KEhuPXt9KSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBGbj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMsTG49InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdyxCbj0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZixWbj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLGpuPUZufHxWbnx8TG58fEJuO2Z1bmN0aW9uIFVuKCl7cmV0dXJuISgidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KCJvYmplY3QiIT10eXBlb2YgbmdEZXZNb2RlJiYoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0KCl7Y29uc3QgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGxvY2F0aW9uP2xvY2F0aW9uLnRvU3RyaW5nKCk6IiIsZT17bmFtZWRDb25zdHJ1Y3RvcnM6LTEhPXQuaW5kZXhPZigibmdEZXZNb2RlPW5hbWVkQ29uc3RydWN0b3JzIiksZmlyc3RDcmVhdGVQYXNzOjAsdE5vZGU6MCx0VmlldzowLHJlbmRlcmVyQ3JlYXRlVGV4dE5vZGU6MCxyZW5kZXJlclNldFRleHQ6MCxyZW5kZXJlckNyZWF0ZUVsZW1lbnQ6MCxyZW5kZXJlckFkZEV2ZW50TGlzdGVuZXI6MCxyZW5kZXJlclNldEF0dHJpYnV0ZTowLHJlbmRlcmVyUmVtb3ZlQXR0cmlidXRlOjAscmVuZGVyZXJTZXRQcm9wZXJ0eTowLHJlbmRlcmVyU2V0Q2xhc3NOYW1lOjAscmVuZGVyZXJBZGRDbGFzczowLHJlbmRlcmVyUmVtb3ZlQ2xhc3M6MCxyZW5kZXJlclNldFN0eWxlOjAscmVuZGVyZXJSZW1vdmVTdHlsZTowLHJlbmRlcmVyRGVzdHJveTowLHJlbmRlcmVyRGVzdHJveU5vZGU6MCxyZW5kZXJlck1vdmVOb2RlOjAscmVuZGVyZXJSZW1vdmVOb2RlOjAscmVuZGVyZXJBcHBlbmRDaGlsZDowLHJlbmRlcmVySW5zZXJ0QmVmb3JlOjAscmVuZGVyZXJDcmVhdGVDb21tZW50OjB9LG49LTE9PT10LmluZGV4T2YoIm5nRGV2TW9kZT1mYWxzZSIpO2puLm5nRGV2TW9kZT1uJiZlfSkoKSwidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8IW5nRGV2TW9kZSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBHbj17fSxXbj1bXTsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlVuKCkmJihPYmplY3QuZnJlZXplKEduKSxPYmplY3QuZnJlZXplKFduKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IFluPWplKHsiybVjbXAiOmplfSkscW49amUoeyLJtWRpciI6amV9KSxabj1qZSh7Ism1cGlwZSI6amV9KSxYbj1qZSh7Ism1bW9kIjpqZX0pLEtuPWplKHsiybVsb2MiOmplfSksSm49amUoeyLJtWZhYyI6amV9KSxRbj1qZSh7X19OR19FTEVNRU5UX0lEX186amV9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCAkbj0wO2Z1bmN0aW9uIHRvKHQpe3JldHVybiBObigoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlVuKCk7Y29uc3QgZT17fSxuPXt0eXBlOnQudHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGRlY2xzOnQuZGVjbHMsdmFyczp0LnZhcnMsZmFjdG9yeTpudWxsLHRlbXBsYXRlOnQudGVtcGxhdGV8fG51bGwsY29uc3RzOnQuY29uc3RzfHxudWxsLG5nQ29udGVudFNlbGVjdG9yczp0Lm5nQ29udGVudFNlbGVjdG9ycyxob3N0QmluZGluZ3M6dC5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6dC5ob3N0VmFyc3x8MCxob3N0QXR0cnM6dC5ob3N0QXR0cnN8fG51bGwsY29udGVudFF1ZXJpZXM6dC5jb250ZW50UXVlcmllc3x8bnVsbCxkZWNsYXJlZElucHV0czplLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCxleHBvcnRBczp0LmV4cG9ydEFzfHxudWxsLG9uUHVzaDp0LmNoYW5nZURldGVjdGlvbj09PXpuLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURlZnM6bnVsbCxzZWxlY3RvcnM6dC5zZWxlY3RvcnN8fFduLHZpZXdRdWVyeTp0LnZpZXdRdWVyeXx8bnVsbCxmZWF0dXJlczp0LmZlYXR1cmVzfHxudWxsLGRhdGE6dC5kYXRhfHx7fSxlbmNhcHN1bGF0aW9uOnQuZW5jYXBzdWxhdGlvbnx8SG4uRW11bGF0ZWQsaWQ6ImMiLHN0eWxlczp0LnN0eWxlc3x8V24sXzpudWxsLHNldElucHV0Om51bGwsc2NoZW1hczp0LnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbH0sbz10LmRpcmVjdGl2ZXMsaT10LmZlYXR1cmVzLGE9dC5waXBlcztyZXR1cm4gbi5pZCs9JG4rKyxuLmlucHV0cz1zbyh0LmlucHV0cyxlKSxuLm91dHB1dHM9c28odC5vdXRwdXRzKSxpJiZpLmZvckVhY2goKHQ9PnQobikpKSxuLmRpcmVjdGl2ZURlZnM9bz8oKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBvP28oKTpvKS5tYXAobm8pOm51bGwsbi5waXBlRGVmcz1hPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIGE/YSgpOmEpLm1hcChvbyk6bnVsbCxufSkpfWZ1bmN0aW9uIGVvKHQsZSxuKXtjb25zdCBvPXQuybVjbXA7by5kaXJlY3RpdmVEZWZzPSgpPT5lLm1hcChubyksby5waXBlRGVmcz0oKT0+bi5tYXAob28pfWZ1bmN0aW9uIG5vKHQpe2NvbnN0IGU9cG8odCl8fG1vKHQpO2lmKG5nRGV2TW9kZSYmIWUpdGhyb3cgbmV3IEVycm9yKGAnJHt0Lm5hbWV9JyBpcyBuZWl0aGVyICdDb21wb25lbnRUeXBlJyBvciAnRGlyZWN0aXZlVHlwZScuYCk7cmV0dXJuIGV9ZnVuY3Rpb24gb28odCl7Y29uc3QgZT11byh0KTtpZihuZ0Rldk1vZGUmJiFlKXRocm93IG5ldyBFcnJvcihgJyR7dC5uYW1lfScgaXMgbm90IGEgJ1BpcGVUeXBlJy5gKTtyZXR1cm4gZX1jb25zdCBpbz17fTtmdW5jdGlvbiBhbyh0KXtyZXR1cm4gTm4oKCgpPT57Y29uc3QgZT17dHlwZTp0LnR5cGUsYm9vdHN0cmFwOnQuYm9vdHN0cmFwfHxXbixkZWNsYXJhdGlvbnM6dC5kZWNsYXJhdGlvbnN8fFduLGltcG9ydHM6dC5pbXBvcnRzfHxXbixleHBvcnRzOnQuZXhwb3J0c3x8V24sdHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM6bnVsbCxzY2hlbWFzOnQuc2NoZW1hc3x8bnVsbCxpZDp0LmlkfHxudWxsfTtyZXR1cm4gbnVsbCE9dC5pZCYmKGlvW3QuaWRdPXQudHlwZSksZX0pKX1mdW5jdGlvbiBybyh0LGUpe3JldHVybiBObigoKCk9Pntjb25zdCBuPWZvKHQsITApO24uZGVjbGFyYXRpb25zPWUuZGVjbGFyYXRpb25zfHxXbixuLmltcG9ydHM9ZS5pbXBvcnRzfHxXbixuLmV4cG9ydHM9ZS5leHBvcnRzfHxXbn0pKX1mdW5jdGlvbiBzbyh0LGUpe2lmKG51bGw9PXQpcmV0dXJuIEduO2NvbnN0IG49e307Zm9yKGNvbnN0IG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXtsZXQgaT10W29dLGE9aTtBcnJheS5pc0FycmF5KGkpJiYoYT1pWzFdLGk9aVswXSksbltpXT1vLGUmJihlW2ldPWEpfXJldHVybiBufWNvbnN0IGxvPXRvO2Z1bmN0aW9uIGNvKHQpe3JldHVybnt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9PXQucHVyZSxvbkRlc3Ryb3k6dC50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24gcG8odCl7cmV0dXJuIHRbWW5dfHxudWxsfWZ1bmN0aW9uIG1vKHQpe3JldHVybiB0W3FuXXx8bnVsbH1mdW5jdGlvbiB1byh0KXtyZXR1cm4gdFtabl18fG51bGx9ZnVuY3Rpb24gZm8odCxlKXtjb25zdCBuPXRbWG5dfHxudWxsO2lmKCFuJiYhMD09PWUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7R2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGdvPTIwLGhvPVsiUm9vdCIsIkNvbXBvbmVudCIsIkVtYmVkZGVkIl0sYm89MTA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB5byh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0WzFdfWZ1bmN0aW9uIF9vKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYhMD09PXRbMV19ZnVuY3Rpb24gQ28odCl7cmV0dXJuIDAhPSg4JnQuZmxhZ3MpfWZ1bmN0aW9uIE1vKHQpe3JldHVybiAyPT0oMiZ0LmZsYWdzKX1mdW5jdGlvbiB2byh0KXtyZXR1cm4gMT09KDEmdC5mbGFncyl9ZnVuY3Rpb24geG8odCl7cmV0dXJuIG51bGwhPT10LnRlbXBsYXRlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gT28odCxlKXtQbyh0LGVbMV0pfWZ1bmN0aW9uIFBvKHQsZSl7d28odCksdC5oYXNPd25Qcm9wZXJ0eSgidFZpZXdfIikmJmxuKHQudFZpZXdfLGUsIlRoaXMgVE5vZGUgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgVFZpZXcuIil9ZnVuY3Rpb24gd28odCl7aG4odCwiVE5vZGUgbXVzdCBiZSBkZWZpbmVkIiksdCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0Lmhhc093blByb3BlcnR5KCJkaXJlY3RpdmVTdHlsaW5nTGFzdCIpfHxibigiTm90IG9mIHR5cGUgVE5vZGUsIGdvdDogIit0KX1mdW5jdGlvbiBrbyh0KXtobih0LCJFeHBlY3RlZCBUSWN1IHRvIGJlIGRlZmluZWQiKSwibnVtYmVyIiE9dHlwZW9mIHQuY3VycmVudENhc2VMVmlld0luZGV4JiZibigiT2JqZWN0IGlzIG5vdCBvZiBUSWN1IHR5cGUuIil9ZnVuY3Rpb24gU28odCl7aG4odCwiY3VycmVudFROb2RlIHNob3VsZCBleGlzdCEiKSxobih0LnBhcmVudCwiY3VycmVudFROb2RlIHNob3VsZCBoYXZlIGEgcGFyZW50Iil9ZnVuY3Rpb24gRG8odCl7aG4odCwiTENvbnRhaW5lciBtdXN0IGJlIGRlZmluZWQiKSxsbihfbyh0KSwhMCwiRXhwZWN0aW5nIExDb250YWluZXIiKX1mdW5jdGlvbiBFbyh0KXt0JiZsbih5byh0KSwhMCwiRXhwZWN0aW5nIExWaWV3IG9yIHVuZGVmaW5lZCBvciBudWxsIil9ZnVuY3Rpb24gUm8odCl7aG4odCwiTFZpZXcgbXVzdCBiZSBkZWZpbmVkIiksbG4oeW8odCksITAsIkV4cGVjdGluZyBMVmlldyIpfWZ1bmN0aW9uIEFvKHQsZSl7bG4odC5maXJzdENyZWF0ZVBhc3MsITAsZXx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCBjcmVhdGUgcGFzcy4iKX1mdW5jdGlvbiBUbyh0LGUpe2xuKHQuZmlyc3RVcGRhdGVQYXNzLCEwLGV8fCJTaG91bGQgb25seSBiZSBjYWxsZWQgaW4gZmlyc3QgdXBkYXRlIHBhc3MuIil9ZnVuY3Rpb24gTm8odCxlKXt6byh0WzFdLmV4cGFuZG9TdGFydEluZGV4LHQubGVuZ3RoLGUpfWZ1bmN0aW9uIHpvKHQsZSxuKXt0PD1uJiZuPGV8fGJuKGBJbmRleCBvdXQgb2YgcmFuZ2UgKGV4cGVjdGluZyAke3R9IDw9ICR7bn0gPCAke2V9KWApfWZ1bmN0aW9uIElvKHQsZSl7aG4odCxlfHwiQ29tcG9uZW50IHZpZXdzIHNob3VsZCBhbHdheXMgaGF2ZSBhIHBhcmVudCB2aWV3IChjb21wb25lbnQncyBob3N0IHZpZXcpIil9ZnVuY3Rpb24gSG8odCxlKXtObyh0LGUpLE5vKHQsZSs4KSxhbih0W2UrMF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksYW4odFtlKzFdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLGFuKHRbZSsyXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxhbih0W2UrM10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksYW4odFtlKzRdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLGFuKHRbZSs1XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxhbih0W2UrNl0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksYW4odFtlKzddLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLGFuKHRbZSs4XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gcGFyZW50IGluamVjdG9yIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZvKHQsZSl7Y29uc3Qgbj10Lmhhc093blByb3BlcnR5KEpuKTtpZighbiYmITA9PT1lJiZuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7R2UodCl9IGRvZXMgbm90IGhhdmUgJ8m1ZmFjJyBwcm9wZXJ0eS5gKTtyZXR1cm4gbj90W0puXTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBMb3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59aXNGaXJzdENoYW5nZSgpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gQm8oKXtyZXR1cm4gVm99ZnVuY3Rpb24gVm8odCl7cmV0dXJuIHQudHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJih0LnNldElucHV0PVVvKSxqb31mdW5jdGlvbiBqbygpe2NvbnN0IHQ9R28odGhpcyksZT1udWxsPT10P3ZvaWQgMDp0LmN1cnJlbnQ7aWYoZSl7Y29uc3Qgbj10LnByZXZpb3VzO2lmKG49PT1Hbil0LnByZXZpb3VzPWU7ZWxzZSBmb3IobGV0IHQgaW4gZSluW3RdPWVbdF07dC5jdXJyZW50PW51bGwsdGhpcy5uZ09uQ2hhbmdlcyhlKX19ZnVuY3Rpb24gVW8odCxlLG4sbyl7Y29uc3QgaT1Hbyh0KXx8KGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdC5fX25nU2ltcGxlQ2hhbmdlc19fPWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCx7cHJldmlvdXM6R24sY3VycmVudDpudWxsfSkscj1pLmN1cnJlbnR8fChpLmN1cnJlbnQ9e30pLHM9aS5wcmV2aW91cyxsPXRoaXMuZGVjbGFyZWRJbnB1dHNbbl0sYz1zW2xdO3JbbF09bmV3IExvKGMmJmMuY3VycmVudFZhbHVlLGUscz09PUduKSx0W29dPWV9ZnVuY3Rpb24gR28odCl7cmV0dXJuIHQuX19uZ1NpbXBsZUNoYW5nZXNfX3x8bnVsbH1Cby5uZ0luaGVyaXQ9ITA7bGV0IFdvPW51bGw7Y29uc3QgWW89dD0+e1dvPXR9LHFvPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1XbyYmV28odCxlLG4pfSxabz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLFhvPSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGhNTC8iOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEtvO2Z1bmN0aW9uIEpvKCl7cmV0dXJuIHZvaWQgMCE9PUtvP0tvOiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgUW87ZnVuY3Rpb24gJG8odCl7cmV0dXJuISF0Lmxpc3Rlbn0hKGZ1bmN0aW9uKHQpe3RbdC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsdFt0LkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSJ9KShRb3x8KFFvPXt9KSk7Y29uc3QgdGk9e2NyZWF0ZVJlbmRlcmVyOih0LGUpPT5KbygpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGVpKHQpe2Zvcig7QXJyYXkuaXNBcnJheSh0KTspdD10WzBdO3JldHVybiB0fWZ1bmN0aW9uIG5pKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmX24oZSx0KSxuZ0Rldk1vZGUmJmduKHQsZ28sIkV4cGVjdGVkIHRvIGJlIHBhc3QgSEVBREVSX09GRlNFVCIpLGVpKGVbdF0pfWZ1bmN0aW9uIG9pKHQsZSl7bmdEZXZNb2RlJiZPbyh0LGUpLG5nRGV2TW9kZSYmX24oZSx0LmluZGV4KTtjb25zdCBuPWVpKGVbdC5pbmRleF0pO3JldHVybiBuZ0Rldk1vZGUmJiEkbyhlWzExXSkmJnluKG4pLG59ZnVuY3Rpb24gaWkodCxlKXtuZ0Rldk1vZGUmJmZuKGUsLTEsIndyb25nIGluZGV4IGZvciBUTm9kZSIpLG5nRGV2TW9kZSYmbW4oZSx0LmRhdGEubGVuZ3RoLCJ3cm9uZyBpbmRleCBmb3IgVE5vZGUiKTtjb25zdCBuPXQuZGF0YVtlXTtyZXR1cm4gbmdEZXZNb2RlJiZudWxsIT09biYmd28obiksbn1mdW5jdGlvbiBhaSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJl9uKHQsZSksdFtlXX1mdW5jdGlvbiByaSh0LGUpe25nRGV2TW9kZSYmX24oZSx0KTtjb25zdCBuPWVbdF07cmV0dXJuIHlvKG4pP246blswXX1mdW5jdGlvbiBzaSh0KXtyZXR1cm4gND09KDQmdFsyXSl9ZnVuY3Rpb24gbGkodCl7cmV0dXJuIDEyOD09KDEyOCZ0WzJdKX1mdW5jdGlvbiBjaSh0LGUpe3JldHVybiBudWxsPT1lP251bGw6KG5nRGV2TW9kZSYmX24odCxlKSx0W2VdKX1mdW5jdGlvbiBkaSh0KXt0WzE4XT0wfWZ1bmN0aW9uIHBpKHQsZSl7dFs1XSs9ZTtsZXQgbj10LG89dFszXTtmb3IoO251bGwhPT1vJiYoMT09PWUmJjE9PT1uWzVdfHwtMT09PWUmJjA9PT1uWzVdKTspb1s1XSs9ZSxuPW8sbz1vWzNdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBtaT17bEZyYW1lOkJpKG51bGwpLGJpbmRpbmdzRW5hYmxlZDohMCxpc0luQ2hlY2tOb0NoYW5nZXNNb2RlOiExfTtmdW5jdGlvbiB1aSgpe3JldHVybiBtaS5iaW5kaW5nc0VuYWJsZWR9ZnVuY3Rpb24gZmkoKXtyZXR1cm4gbWkubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIGdpKCl7cmV0dXJuIG1pLmxGcmFtZS50Vmlld31mdW5jdGlvbiBoaSh0KXtyZXR1cm4gbWkubEZyYW1lLmNvbnRleHRMVmlldz10LHRbOF19ZnVuY3Rpb24gYmkoKXtsZXQgdD15aSgpO2Zvcig7bnVsbCE9PXQmJjY0PT09dC50eXBlOyl0PXQucGFyZW50O3JldHVybiB0fWZ1bmN0aW9uIHlpKCl7cmV0dXJuIG1pLmxGcmFtZS5jdXJyZW50VE5vZGV9ZnVuY3Rpb24gX2koKXtjb25zdCB0PW1pLmxGcmFtZSxlPXQuY3VycmVudFROb2RlO3JldHVybiB0LmlzUGFyZW50P2U6ZS5wYXJlbnR9ZnVuY3Rpb24gQ2kodCxlKXtuZ0Rldk1vZGUmJnQmJlBvKHQsbWkubEZyYW1lLnRWaWV3KTtjb25zdCBuPW1pLmxGcmFtZTtuLmN1cnJlbnRUTm9kZT10LG4uaXNQYXJlbnQ9ZX1mdW5jdGlvbiBNaSgpe3JldHVybiBtaS5sRnJhbWUuaXNQYXJlbnR9ZnVuY3Rpb24gdmkoKXttaS5sRnJhbWUuaXNQYXJlbnQ9ITF9ZnVuY3Rpb24geGkoKXtyZXR1cm4gbWkuaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZX1mdW5jdGlvbiBPaSh0KXttaS5pc0luQ2hlY2tOb0NoYW5nZXNNb2RlPXR9ZnVuY3Rpb24gUGkoKXtjb25zdCB0PW1pLmxGcmFtZTtsZXQgZT10LmJpbmRpbmdSb290SW5kZXg7cmV0dXJuLTE9PT1lJiYoZT10LmJpbmRpbmdSb290SW5kZXg9dC50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCksZX1mdW5jdGlvbiB3aSgpe3JldHVybiBtaS5sRnJhbWUuYmluZGluZ0luZGV4fWZ1bmN0aW9uIGtpKHQpe3JldHVybiBtaS5sRnJhbWUuYmluZGluZ0luZGV4PXR9ZnVuY3Rpb24gU2koKXtyZXR1cm4gbWkubEZyYW1lLmJpbmRpbmdJbmRleCsrfWZ1bmN0aW9uIERpKHQpe2NvbnN0IGU9bWkubEZyYW1lLG49ZS5iaW5kaW5nSW5kZXg7cmV0dXJuIGUuYmluZGluZ0luZGV4PWUuYmluZGluZ0luZGV4K3Qsbn1mdW5jdGlvbiBFaSh0KXttaS5sRnJhbWUuaW5JMThuPXR9ZnVuY3Rpb24gUmkodCxlKXtjb25zdCBuPW1pLmxGcmFtZTtuLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdSb290SW5kZXg9dCxBaShlKX1mdW5jdGlvbiBBaSh0KXttaS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4PXR9ZnVuY3Rpb24gVGkodCl7Y29uc3QgZT1taS5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09ZT9udWxsOnRbZV19ZnVuY3Rpb24gTmkoKXtyZXR1cm4gbWkubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIHppKHQpe21pLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD10fWZ1bmN0aW9uIElpKHQpe2NvbnN0IGU9dFsxXTtyZXR1cm4gMj09PWUudHlwZT8obmdEZXZNb2RlJiZobihlLmRlY2xUTm9kZSwiRW1iZWRkZWQgVE5vZGVzIHNob3VsZCBoYXZlIGRlY2xhcmF0aW9uIHBhcmVudHMuIiksZS5kZWNsVE5vZGUpOjE9PT1lLnR5cGU/dFs2XTpudWxsfWZ1bmN0aW9uIEhpKHQsZSxuKXtpZihuZ0Rldk1vZGUmJkVvKHQpLG4mRW4uU2tpcFNlbGYpe25nRGV2TW9kZSYmUG8oZSx0WzFdKTtsZXQgbz1lLGk9dDtmb3IoO25nRGV2TW9kZSYmaG4obywiUGFyZW50IFROb2RlIHNob3VsZCBiZSBkZWZpbmVkIiksbz1vLnBhcmVudCwhKG51bGwhPT1vfHxuJkVuLkhvc3R8fChvPUlpKGkpLG51bGw9PT1vKXx8KG5nRGV2TW9kZSYmaG4oaSwiUGFyZW50IExWaWV3IHNob3VsZCBiZSBkZWZpbmVkIiksaT1pWzE1XSwxMCZvLnR5cGUpKTspO2lmKG51bGw9PT1vKXJldHVybiExO2U9byx0PWl9bmdEZXZNb2RlJiZPbyhlLHQpO2NvbnN0IG89bWkubEZyYW1lPUxpKCk7cmV0dXJuIG8uY3VycmVudFROb2RlPWUsby5sVmlldz10LCEwfWZ1bmN0aW9uIEZpKHQpe25nRGV2TW9kZSYmY24odFswXSx0WzFdLCI/Pz8/IiksbmdEZXZNb2RlJiZFbyh0KTtjb25zdCBlPUxpKCk7bmdEZXZNb2RlJiYobG4oZS5pc1BhcmVudCwhMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksbG4oZS5sVmlldyxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxsbihlLnRWaWV3LG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGxuKGUuc2VsZWN0ZWRJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksbG4oZS5lbGVtZW50RGVwdGhDb3VudCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxsbihlLmN1cnJlbnREaXJlY3RpdmVJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksbG4oZS5jdXJyZW50TmFtZXNwYWNlLG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGxuKGUuYmluZGluZ1Jvb3RJbmRleCwtMSwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksbG4oZS5jdXJyZW50UXVlcnlJbmRleCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSk7Y29uc3Qgbj10WzFdO21pLmxGcmFtZT1lLG5nRGV2TW9kZSYmbi5maXJzdENoaWxkJiZQbyhuLmZpcnN0Q2hpbGQsbiksZS5jdXJyZW50VE5vZGU9bi5maXJzdENoaWxkLGUubFZpZXc9dCxlLnRWaWV3PW4sZS5jb250ZXh0TFZpZXc9dCxlLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdTdGFydEluZGV4LGUuaW5JMThuPSExfWZ1bmN0aW9uIExpKCl7Y29uc3QgdD1taS5sRnJhbWUsZT1udWxsPT09dD9udWxsOnQuY2hpbGQ7cmV0dXJuIG51bGw9PT1lP0JpKHQpOmV9ZnVuY3Rpb24gQmkodCl7Y29uc3QgZT17Y3VycmVudFROb2RlOm51bGwsaXNQYXJlbnQ6ITAsbFZpZXc6bnVsbCx0VmlldzpudWxsLHNlbGVjdGVkSW5kZXg6LTEsY29udGV4dExWaWV3Om51bGwsZWxlbWVudERlcHRoQ291bnQ6MCxjdXJyZW50TmFtZXNwYWNlOm51bGwsY3VycmVudERpcmVjdGl2ZUluZGV4Oi0xLGJpbmRpbmdSb290SW5kZXg6LTEsYmluZGluZ0luZGV4Oi0xLGN1cnJlbnRRdWVyeUluZGV4OjAscGFyZW50OnQsY2hpbGQ6bnVsbCxpbkkxOG46ITF9O3JldHVybiBudWxsIT09dCYmKHQuY2hpbGQ9ZSksZX1mdW5jdGlvbiBWaSgpe2NvbnN0IHQ9bWkubEZyYW1lO3JldHVybiBtaS5sRnJhbWU9dC5wYXJlbnQsdC5jdXJyZW50VE5vZGU9bnVsbCx0LmxWaWV3PW51bGwsdH1jb25zdCBqaT1WaTtmdW5jdGlvbiBVaSgpe2NvbnN0IHQ9VmkoKTt0LmlzUGFyZW50PSEwLHQudFZpZXc9bnVsbCx0LnNlbGVjdGVkSW5kZXg9LTEsdC5jb250ZXh0TFZpZXc9bnVsbCx0LmVsZW1lbnREZXB0aENvdW50PTAsdC5jdXJyZW50RGlyZWN0aXZlSW5kZXg9LTEsdC5jdXJyZW50TmFtZXNwYWNlPW51bGwsdC5iaW5kaW5nUm9vdEluZGV4PS0xLHQuYmluZGluZ0luZGV4PS0xLHQuY3VycmVudFF1ZXJ5SW5kZXg9MH1mdW5jdGlvbiBHaSgpe3JldHVybiBtaS5sRnJhbWUuc2VsZWN0ZWRJbmRleH1mdW5jdGlvbiBXaSh0KXtuZ0Rldk1vZGUmJi0xIT09dCYmZ24odCxnbywiSW5kZXggbXVzdCBiZSBwYXN0IEhFQURFUl9PRkZTRVQgKG9yIC0xKS4iKSxuZ0Rldk1vZGUmJm1uKHQsbWkubEZyYW1lLmxWaWV3Lmxlbmd0aCwiQ2FuJ3Qgc2V0IGluZGV4IHBhc3NlZCBlbmQgb2YgTFZpZXciKSxtaS5sRnJhbWUuc2VsZWN0ZWRJbmRleD10fWZ1bmN0aW9uIFlpKCl7Y29uc3QgdD1taS5sRnJhbWU7cmV0dXJuIGlpKHQudFZpZXcsdC5zZWxlY3RlZEluZGV4KX1mdW5jdGlvbiBxaSgpe21pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPVpvfWZ1bmN0aW9uIFppKCl7IShmdW5jdGlvbiB0KCl7bWkubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9bnVsbH0pKCl9ZnVuY3Rpb24gWGkodCxlKXtuZ0Rldk1vZGUmJkFvKHQpO2ZvcihsZXQgbj1lLmRpcmVjdGl2ZVN0YXJ0LG89ZS5kaXJlY3RpdmVFbmQ7bjxvO24rKyl7Y29uc3QgZT10LmRhdGFbbl07bmdEZXZNb2RlJiZobihlLCJFeHBlY3RpbmcgRGlyZWN0aXZlRGVmIik7Y29uc3Qgbz1lLnR5cGUucHJvdG90eXBlLHtuZ0FmdGVyQ29udGVudEluaXQ6aSxuZ0FmdGVyQ29udGVudENoZWNrZWQ6YSxuZ0FmdGVyVmlld0luaXQ6cixuZ0FmdGVyVmlld0NoZWNrZWQ6cyxuZ09uRGVzdHJveTpsfT1vO2kmJih0LmNvbnRlbnRIb29rc3x8KHQuY29udGVudEhvb2tzPVtdKSkucHVzaCgtbixpKSxhJiYoKHQuY29udGVudEhvb2tzfHwodC5jb250ZW50SG9va3M9W10pKS5wdXNoKG4sYSksKHQuY29udGVudENoZWNrSG9va3N8fCh0LmNvbnRlbnRDaGVja0hvb2tzPVtdKSkucHVzaChuLGEpKSxyJiYodC52aWV3SG9va3N8fCh0LnZpZXdIb29rcz1bXSkpLnB1c2goLW4scikscyYmKCh0LnZpZXdIb29rc3x8KHQudmlld0hvb2tzPVtdKSkucHVzaChuLHMpLCh0LnZpZXdDaGVja0hvb2tzfHwodC52aWV3Q2hlY2tIb29rcz1bXSkpLnB1c2gobixzKSksbnVsbCE9bCYmKHQuZGVzdHJveUhvb2tzfHwodC5kZXN0cm95SG9va3M9W10pKS5wdXNoKG4sbCl9fWZ1bmN0aW9uIEtpKHQsZSxuKXskaSh0LGUsMyxuKX1mdW5jdGlvbiBKaSh0LGUsbixvKXtuZ0Rldk1vZGUmJmNuKG4sMywiSW5pdCBwcmUtb3JkZXIgaG9va3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UiKSwoMyZ0WzJdKT09PW4mJiRpKHQsZSxuLG8pfWZ1bmN0aW9uIFFpKHQsZSl7bmdEZXZNb2RlJiZjbihlLDMsIkluaXQgaG9va3MgcGhhc2Ugc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhbGwgaW5pdCBob29rcyBoYXZlIGJlZW4gcnVuLiIpO2xldCBuPXRbMl07KDMmbik9PT1lJiYobiY9MjA0NyxuKz0xLHRbMl09bil9ZnVuY3Rpb24gJGkodCxlLG4sbyl7bmdEZXZNb2RlJiZsbih4aSgpLCExLCJIb29rcyBzaG91bGQgbmV2ZXIgYmUgcnVuIHdoZW4gaW4gY2hlY2sgbm8gY2hhbmdlcyBtb2RlLiIpO2NvbnN0IGk9bnVsbCE9bz9vOi0xLGE9ZS5sZW5ndGgtMTtsZXQgcj0wO2ZvcihsZXQgcz12b2lkIDAhPT1vPzY1NTM1JnRbMThdOjA7czxhO3MrKylpZigibnVtYmVyIj09dHlwZW9mIGVbcysxXSl7aWYocj1lW3NdLG51bGwhPW8mJnI+PW8pYnJlYWt9ZWxzZSBlW3NdPDAmJih0WzE4XSs9NjU1MzYpLChyPGl8fC0xPT1pKSYmKHRhKHQsbixlLHMpLHRbMThdPSg0Mjk0OTAxNzYwJnRbMThdKStzKzIpLHMrK31mdW5jdGlvbiB0YSh0LGUsbixvKXtjb25zdCBpPW5bb108MCxhPW5bbysxXSxyPXRbaT8tbltvXTpuW29dXTtpZihpKXtpZih0WzJdPj4xMTx0WzE4XT4+MTYmJigzJnRbMl0pPT09ZSl7dFsyXSs9MjA0OCxxbyg0LHIsYSk7dHJ5e2EuY2FsbChyKX1maW5hbGx5e3FvKDUscixhKX19fWVsc2V7cW8oNCxyLGEpO3RyeXthLmNhbGwocil9ZmluYWxseXtxbyg1LHIsYSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgZWE9LTE7Y2xhc3MgbmF7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZmFjdG9yeT10LHRoaXMucmVzb2x2aW5nPSExLG5nRGV2TW9kZSYmaG4odCwiRmFjdG9yeSBub3Qgc3BlY2lmaWVkIiksbmdEZXZNb2RlJiZsbih0eXBlb2YgdCwiZnVuY3Rpb24iLCJFeHBlY3RlZCBmYWN0b3J5IGZ1bmN0aW9uLiIpLHRoaXMuY2FuU2VlVmlld1Byb3ZpZGVycz1lLHRoaXMuaW5qZWN0SW1wbD1ufX1mdW5jdGlvbiBvYSh0KXtsZXQgZT0iIjtyZXR1cm4gMSZ0JiYoZSs9InxUZXh0IiksMiZ0JiYoZSs9InxFbGVtZW50IiksNCZ0JiYoZSs9InxDb250YWluZXIiKSw4JnQmJihlKz0ifEVsZW1lbnRDb250YWluZXIiKSwxNiZ0JiYoZSs9InxQcm9qZWN0aW9uIiksMzImdCYmKGUrPSJ8SWN1Q29udGFpbmVyIiksNjQmdCYmKGUrPSJ8UGxhY2Vob2xkZXIiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBpYSh0LGUsbil7aG4odCwic2hvdWxkIGJlIGNhbGxlZCB3aXRoIGEgVE5vZGUiKSwwPT0odC50eXBlJmUpJiZibihufHxgRXhwZWN0ZWQgWyR7b2EoZSl9XSBidXQgZ290ICR7b2EodC50eXBlKX0uYCl9ZnVuY3Rpb24gYWEodCxlLG4pe2NvbnN0IG89JG8odCk7bGV0IGk9MDtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCBhPW5baV07aWYoIm51bWJlciI9PXR5cGVvZiBhKXtpZigwIT09YSlicmVhaztpKys7Y29uc3Qgcj1uW2krK10scz1uW2krK10sbD1uW2krK107bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRBdHRyaWJ1dGUrKyxvP3Quc2V0QXR0cmlidXRlKGUscyxsLHIpOmUuc2V0QXR0cmlidXRlTlMocixzLGwpfWVsc2V7Y29uc3Qgcj1hLHM9blsrK2ldO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKyssc2Eocik/byYmdC5zZXRQcm9wZXJ0eShlLHIscyk6bz90LnNldEF0dHJpYnV0ZShlLHIscyk6ZS5zZXRBdHRyaWJ1dGUocixzKSxpKyt9fXJldHVybiBpfWZ1bmN0aW9uIHJhKHQpe3JldHVybiAzPT09dHx8ND09PXR8fDY9PT10fWZ1bmN0aW9uIHNhKHQpe3JldHVybiA2ND09PXQuY2hhckNvZGVBdCgwKX1mdW5jdGlvbiBsYSh0LGUpe2lmKG51bGw9PT1lfHwwPT09ZS5sZW5ndGgpO2Vsc2UgaWYobnVsbD09PXR8fDA9PT10Lmxlbmd0aCl0PWUuc2xpY2UoKTtlbHNle2xldCBuPS0xO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtjb25zdCBpPWVbb107Im51bWJlciI9PXR5cGVvZiBpP249aTowPT09bnx8Y2EodCxuLGksbnVsbCwtMT09PW58fDI9PT1uP2VbKytvXTpudWxsKX19cmV0dXJuIHR9ZnVuY3Rpb24gY2EodCxlLG4sbyxpKXtsZXQgYT0wLHI9dC5sZW5ndGg7aWYoLTE9PT1lKXI9LTE7ZWxzZSBmb3IoO2E8dC5sZW5ndGg7KXtjb25zdCBuPXRbYSsrXTtpZigibnVtYmVyIj09dHlwZW9mIG4pe2lmKG49PT1lKXtyPS0xO2JyZWFrfWlmKG4+ZSl7cj1hLTE7YnJlYWt9fX1mb3IoO2E8dC5sZW5ndGg7KXtjb25zdCBlPXRbYV07aWYoIm51bWJlciI9PXR5cGVvZiBlKWJyZWFrO2lmKGU9PT1uKXtpZihudWxsPT09bylyZXR1cm4gdm9pZChudWxsIT09aSYmKHRbYSsxXT1pKSk7aWYobz09PXRbYSsxXSlyZXR1cm4gdm9pZCh0W2ErMl09aSl9YSsrLG51bGwhPT1vJiZhKyssbnVsbCE9PWkmJmErK30tMSE9PXImJih0LnNwbGljZShyLDAsZSksYT1yKzEpLHQuc3BsaWNlKGErKywwLG4pLG51bGwhPT1vJiZ0LnNwbGljZShhKyssMCxvKSxudWxsIT09aSYmdC5zcGxpY2UoYSsrLDAsaSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGRhKHQpe3JldHVybiB0IT09ZWF9ZnVuY3Rpb24gcGEodCl7cmV0dXJuIG5nRGV2TW9kZSYmYW4odCwiTnVtYmVyIGV4cGVjdGVkIiksbmdEZXZNb2RlJiZjbih0LC0xLCJOb3QgYSB2YWxpZCBzdGF0ZS4iKSxuZ0Rldk1vZGUmJmZuKDMyNzY3JnQsZ28sIlBhcmVudCBpbmplY3RvciBtdXN0IGJlIHBvaW50aW5nIHBhc3QgSEVBREVSX09GRlNFVC4iKSwzMjc2NyZ0fWZ1bmN0aW9uIG1hKHQsZSl7bGV0IG49KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ+PjE2fSkodCksaT1lO2Zvcig7bj4wOylpPWlbMTVdLG4tLTtyZXR1cm4gaX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHVhPSEwO2Z1bmN0aW9uIGZhKHQpe2NvbnN0IGU9dWE7cmV0dXJuIHVhPXQsZX1sZXQgZ2E9MDtmdW5jdGlvbiBoYSh0LGUpe2NvbnN0IG49eWEodCxlKTtpZigtMSE9PW4pcmV0dXJuIG47Y29uc3Qgbz1lWzFdO28uZmlyc3RDcmVhdGVQYXNzJiYodC5pbmplY3RvckluZGV4PWUubGVuZ3RoLGJhKG8uZGF0YSx0KSxiYShlLG51bGwpLGJhKG8uYmx1ZXByaW50LG51bGwpKTtjb25zdCBpPV9hKHQsZSksYT10LmluamVjdG9ySW5kZXg7aWYoZGEoaSkpe2NvbnN0IHQ9cGEoaSksbj1tYShpLGUpLG89blsxXS5kYXRhO2ZvcihsZXQgaT0wO2k8ODtpKyspZVthK2ldPW5bdCtpXXxvW3QraV19cmV0dXJuIGVbYSs4XT1pLGF9ZnVuY3Rpb24gYmEodCxlKXt0LnB1c2goMCwwLDAsMCwwLDAsMCwwLGUpfWZ1bmN0aW9uIHlhKHQsZSl7cmV0dXJuLTE9PT10LmluamVjdG9ySW5kZXh8fHQucGFyZW50JiZ0LnBhcmVudC5pbmplY3RvckluZGV4PT09dC5pbmplY3RvckluZGV4fHxudWxsPT09ZVt0LmluamVjdG9ySW5kZXgrOF0/LTE6KG5nRGV2TW9kZSYmX24oZSx0LmluamVjdG9ySW5kZXgpLHQuaW5qZWN0b3JJbmRleCl9ZnVuY3Rpb24gX2EodCxlKXtpZih0LnBhcmVudCYmLTEhPT10LnBhcmVudC5pbmplY3RvckluZGV4KXJldHVybiB0LnBhcmVudC5pbmplY3RvckluZGV4O2xldCBuPTAsbz1udWxsLGk9ZTtmb3IoO251bGwhPT1pOyl7Y29uc3QgdD1pWzFdLGU9dC50eXBlO2lmKDI9PT1lPyhuZ0Rldk1vZGUmJmhuKHQuZGVjbFROb2RlLCJFbWJlZGRlZCBUTm9kZXMgc2hvdWxkIGhhdmUgZGVjbGFyYXRpb24gcGFyZW50cy4iKSxvPXQuZGVjbFROb2RlKToxPT09ZT9vPWlbNl06KG5nRGV2TW9kZSYmbG4odC50eXBlLDAsIlJvb3QgdHlwZSBleHBlY3RlZCIpLG89bnVsbCksbnVsbD09PW8pcmV0dXJuIGVhO2lmKG5nRGV2TW9kZSYmbyYmT28obyxpWzE1XSksbisrLGk9aVsxNV0sLTEhPT1vLmluamVjdG9ySW5kZXgpcmV0dXJuIG8uaW5qZWN0b3JJbmRleHxuPDwxNn1yZXR1cm4gZWF9ZnVuY3Rpb24gQ2EodCxlLG4peyEoZnVuY3Rpb24gbyh0LGUsbil7bGV0IG87bmdEZXZNb2RlJiZsbihlLmZpcnN0Q3JlYXRlUGFzcywhMCwiZXhwZWN0ZWQgZmlyc3RDcmVhdGVQYXNzIHRvIGJlIHRydWUiKSwic3RyaW5nIj09dHlwZW9mIG4/bz1uLmNoYXJDb2RlQXQoMCl8fDA6bi5oYXNPd25Qcm9wZXJ0eShRbikmJihvPW5bUW5dKSxudWxsPT1vJiYobz1uW1FuXT1nYSsrKTtjb25zdCBpPTI1NSZvO2UuZGF0YVt0KyhpPj41KV18PTE8PGl9KSh0LGUsbil9ZnVuY3Rpb24gTWEodCxlLG4pe2lmKG4mRW4uT3B0aW9uYWwpcmV0dXJuIHQ7b24oZSwiTm9kZUluamVjdG9yIil9ZnVuY3Rpb24gdmEodCxlLG4sbyl7aWYobiZFbi5PcHRpb25hbCYmdm9pZCAwPT09byYmKG89bnVsbCksMD09KG4mKEVuLlNlbGZ8RW4uSG9zdCkpKXtjb25zdCBpPXRbOV0sYT1Bbih2b2lkIDApO3RyeXtyZXR1cm4gaT9pLmdldChlLG8sbiZFbi5PcHRpb25hbCk6VG4oZSxvLG4mRW4uT3B0aW9uYWwpfWZpbmFsbHl7QW4oYSl9fXJldHVybiBNYShvLGUsbil9ZnVuY3Rpb24geGEodCxlLG4sbz1Fbi5EZWZhdWx0LGkpe2lmKG51bGwhPT10KXtjb25zdCBhPShmdW5jdGlvbiBhKHQpe2lmKG5nRGV2TW9kZSYmaG4odCwidG9rZW4gbXVzdCBiZSBkZWZpbmVkIiksInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0LmNoYXJDb2RlQXQoMCl8fDA7Y29uc3QgZT10Lmhhc093blByb3BlcnR5KFFuKT90W1FuXTp2b2lkIDA7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP2U+PTA/MjU1JmU6KG5nRGV2TW9kZSYmbG4oZSwtMSwiRXhwZWN0aW5nIHRvIGdldCBTcGVjaWFsIEluamVjdG9yIElkIiksUGEpOmV9KShuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgYSl7aWYoIUhpKGUsdCxvKSlyZXR1cm4gbyZFbi5Ib3N0P01hKGksbixvKTp2YShlLG4sbyxpKTt0cnl7Y29uc3QgdD1hKG8pO2lmKG51bGwhPXR8fG8mRW4uT3B0aW9uYWwpcmV0dXJuIHQ7b24obil9ZmluYWxseXtqaSgpfX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSl7bGV0IGk9bnVsbCxyPXlhKHQsZSkscz1lYSxsPW8mRW4uSG9zdD9lWzE2XVs2XTpudWxsO2ZvcigoLTE9PT1yfHxvJkVuLlNraXBTZWxmKSYmKHM9LTE9PT1yP19hKHQsZSk6ZVtyKzhdLHMhPT1lYSYmRWEobywhMSk/KGk9ZVsxXSxyPXBhKHMpLGU9bWEocyxlKSk6cj0tMSk7LTEhPT1yOyl7bmdEZXZNb2RlJiZIbyhlLHIpO2NvbnN0IHQ9ZVsxXTtpZihuZ0Rldk1vZGUmJk9vKHQuZGF0YVtyKzhdLGUpLERhKGEscix0LmRhdGEpKXtjb25zdCB0PXdhKHIsZSxuLGksbyxsKTtpZih0IT09T2EpcmV0dXJuIHR9cz1lW3IrOF0scyE9PWVhJiZFYShvLGVbMV0uZGF0YVtyKzhdPT09bCkmJkRhKGEscixlKT8oaT10LHI9cGEocyksZT1tYShzLGUpKTpyPS0xfX19cmV0dXJuIHZhKGUsbixvLGkpfWNvbnN0IE9hPXt9O2Z1bmN0aW9uIFBhKCl7cmV0dXJuIG5ldyBSYShiaSgpLGZpKCkpfWZ1bmN0aW9uIHdhKHQsZSxuLG8saSxhKXtjb25zdCByPWVbMV0scz1yLmRhdGFbdCs4XSxsPWthKHMscixuLG51bGw9PW8/TW8ocykmJnVhOm8hPXImJjAhPSgzJnMudHlwZSksaSZFbi5Ib3N0JiZhPT09cyk7cmV0dXJuIG51bGwhPT1sP1NhKGUscixsLHMpOk9hfWZ1bmN0aW9uIGthKHQsZSxuLG8saSl7Y29uc3QgYT10LnByb3ZpZGVySW5kZXhlcyxyPWUuZGF0YSxzPTEwNDg1NzUmYSxsPXQuZGlyZWN0aXZlU3RhcnQsYz1hPj4yMCxkPWk/cytjOnQuZGlyZWN0aXZlRW5kO2ZvcihsZXQgdD1vP3M6cytjO3Q8ZDt0Kyspe2NvbnN0IGU9clt0XTtpZih0PGwmJm49PT1lfHx0Pj1sJiZlLnR5cGU9PT1uKXJldHVybiB0fWlmKGkpe2NvbnN0IHQ9cltsXTtpZih0JiZ4byh0KSYmdC50eXBlPT09bilyZXR1cm4gbH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBTYSh0LGUsbixvKXtsZXQgaT10W25dO2NvbnN0IGE9ZS5kYXRhO2lmKChmdW5jdGlvbiByKHQpe3JldHVybiB0IGluc3RhbmNlb2YgbmF9KShpKSl7Y29uc3Qgcj1pO3IucmVzb2x2aW5nJiZlbih0bihhW25dKSk7Y29uc3Qgcz1mYShyLmNhblNlZVZpZXdQcm92aWRlcnMpO3IucmVzb2x2aW5nPSEwO2NvbnN0IGw9ci5pbmplY3RJbXBsP0FuKHIuaW5qZWN0SW1wbCk6bnVsbCxjPUhpKHQsbyxFbi5EZWZhdWx0KTtuZ0Rldk1vZGUmJmxuKGMsITAsIkJlY2F1c2UgZmxhZ3MgZG8gbm90IGNvbnRhaW4gYFNraXBTZWxmJyB3ZSBleHBlY3QgdGhpcyB0byBhbHdheXMgc3VjY2VlZC4iKTt0cnl7aT10W25dPXIuZmFjdG9yeSh2b2lkIDAsYSx0LG8pLGUuZmlyc3RDcmVhdGVQYXNzJiZuPj1vLmRpcmVjdGl2ZVN0YXJ0JiYobmdEZXZNb2RlJiYoZnVuY3Rpb24gcyh0KXt2b2lkIDAhPT10LnR5cGUmJm51bGwhPXQuc2VsZWN0b3JzJiZ2b2lkIDAhPT10LmlucHV0c3x8Ym4oIkV4cGVjdGVkIGEgRGlyZWN0aXZlRGVmL0NvbXBvbmVudERlZiBhbmQgdGhpcyBvYmplY3QgZG9lcyBub3Qgc2VlbSB0byBoYXZlIHRoZSBleHBlY3RlZCBzaGFwZS4iKX0pKGFbbl0pLCgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGwodCxlLG4pe25nRGV2TW9kZSYmQW8obik7Y29uc3R7bmdPbkNoYW5nZXM6byxuZ09uSW5pdDppLG5nRG9DaGVjazphfT1lLnR5cGUucHJvdG90eXBlO2lmKG8pe2NvbnN0IG89Vm8oZSk7KG4ucHJlT3JkZXJIb29rc3x8KG4ucHJlT3JkZXJIb29rcz1bXSkpLnB1c2godCxvKSwobi5wcmVPcmRlckNoZWNrSG9va3N8fChuLnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2godCxvKX1pJiYobi5wcmVPcmRlckhvb2tzfHwobi5wcmVPcmRlckhvb2tzPVtdKSkucHVzaCgwLXQsaSksYSYmKChuLnByZU9yZGVySG9va3N8fChuLnByZU9yZGVySG9va3M9W10pKS5wdXNoKHQsYSksKG4ucHJlT3JkZXJDaGVja0hvb2tzfHwobi5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKHQsYSkpfSkobixhW25dLGUpKX1maW5hbGx5e251bGwhPT1sJiZBbihsKSxmYShzKSxyLnJlc29sdmluZz0hMSxqaSgpfX1yZXR1cm4gaX1mdW5jdGlvbiBEYSh0LGUsbil7cmV0dXJuISEobltlKyh0Pj41KV0mMTw8dCl9ZnVuY3Rpb24gRWEodCxlKXtyZXR1cm4hKHQmRW4uU2VsZnx8dCZFbi5Ib3N0JiZlKX1jbGFzcyBSYXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ROb2RlPXQsdGhpcy5fbFZpZXc9ZX1nZXQodCxlKXtyZXR1cm4geGEodGhpcy5fdE5vZGUsdGhpcy5fbFZpZXcsdCx2b2lkIDAsZSl9fWZ1bmN0aW9uIEFhKHQpe3JldHVybiBObigoKCk9Pntjb25zdCBlPXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLG49ZVtKbl18fFRhKGUpLG89T2JqZWN0LnByb3RvdHlwZTtsZXQgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7aSYmaSE9PW87KXtjb25zdCB0PWlbSm5dfHxUYShpKTtpZih0JiZ0IT09bilyZXR1cm4gdDtpPU9iamVjdC5nZXRQcm90b3R5cGVPZihpKX1yZXR1cm4gdD0+bmV3IHR9KSl9ZnVuY3Rpb24gVGEodCl7cmV0dXJuIFhlKHQpPygpPT57Y29uc3QgZT1UYShaZSh0KSk7cmV0dXJuIGUmJmUoKX06Rm8odCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIE5hKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobmdEZXZNb2RlJiZpYSh0LDE1KSxuZ0Rldk1vZGUmJmhuKHQsImV4cGVjdGluZyB0Tm9kZSIpLCJjbGFzcyI9PT1uKXJldHVybiB0LmNsYXNzZXM7aWYoInN0eWxlIj09PW4pcmV0dXJuIHQuc3R5bGVzO2NvbnN0IG89dC5hdHRycztpZihvKXtjb25zdCB0PW8ubGVuZ3RoO2xldCBlPTA7Zm9yKDtlPHQ7KXtjb25zdCBpPW9bZV07aWYocmEoaSkpYnJlYWs7aWYoMD09PWkpZSs9MjtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgaSlmb3IoZSsrO2U8dCYmInN0cmluZyI9PXR5cGVvZiBvW2VdOyllKys7ZWxzZXtpZihpPT09bilyZXR1cm4gb1tlKzFdO2UrPTJ9fX1yZXR1cm4gbnVsbH0pKGJpKCksdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHphPSJfX2Fubm90YXRpb25zX18iLElhPSJfX3BhcmFtZXRlcnNfXyIsSGE9Il9fcHJvcF9fbWV0YWRhdGFfXyI7ZnVuY3Rpb24gRmEodCxlLG4sbyxpKXtyZXR1cm4gTm4oKCgpPT57Y29uc3QgYT1MYShlKTtmdW5jdGlvbiByKC4uLnQpe2lmKHRoaXMgaW5zdGFuY2VvZiByKXJldHVybiBhLmNhbGwodGhpcywuLi50KSx0aGlzO2NvbnN0IGU9bmV3IHIoLi4udCk7cmV0dXJuIGZ1bmN0aW9uIG4oYSl7cmV0dXJuIGkmJmkoYSwuLi50KSwoYS5oYXNPd25Qcm9wZXJ0eSh6YSk/YVt6YV06T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsemEse3ZhbHVlOltdfSlbemFdKS5wdXNoKGUpLG8mJm8oYSksYX19cmV0dXJuIG4mJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksci5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxyLmFubm90YXRpb25DbHM9cixyfSkpfWZ1bmN0aW9uIExhKHQpe3JldHVybiBmdW5jdGlvbiBlKC4uLm4pe2lmKHQpe2NvbnN0IGU9dCguLi5uKTtmb3IoY29uc3QgdCBpbiBlKXRoaXNbdF09ZVt0XX19fWZ1bmN0aW9uIEJhKHQsZSxuKXtyZXR1cm4gTm4oKCgpPT57Y29uc3Qgbz1MYShlKTtmdW5jdGlvbiBpKC4uLnQpe2lmKHRoaXMgaW5zdGFuY2VvZiBpKXJldHVybiBvLmFwcGx5KHRoaXMsdCksdGhpcztjb25zdCBlPW5ldyBpKC4uLnQpO3JldHVybiBuLmFubm90YXRpb249ZSxuO2Z1bmN0aW9uIG4odCxuLG8pe2NvbnN0IGk9dC5oYXNPd25Qcm9wZXJ0eShJYSk/dFtJYV06T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsSWEse3ZhbHVlOltdfSlbSWFdO2Zvcig7aS5sZW5ndGg8PW87KWkucHVzaChudWxsKTtyZXR1cm4oaVtvXT1pW29dfHxbXSkucHVzaChlKSx0fX1yZXR1cm4gbiYmKGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpKSxpLnByb3RvdHlwZS5uZ01ldGFkYXRhTmFtZT10LGkuYW5ub3RhdGlvbkNscz1pLGl9KSl9ZnVuY3Rpb24gVmEodCxlLG4sbyl7cmV0dXJuIE5uKCgoKT0+e2NvbnN0IGk9TGEoZSk7ZnVuY3Rpb24gYSguLi50KXtpZih0aGlzIGluc3RhbmNlb2YgYSlyZXR1cm4gaS5hcHBseSh0aGlzLHQpLHRoaXM7Y29uc3QgZT1uZXcgYSguLi50KTtyZXR1cm4gZnVuY3Rpb24gbihpLGEpe2NvbnN0IHI9aS5jb25zdHJ1Y3RvcixzPXIuaGFzT3duUHJvcGVydHkoSGEpP3JbSGFdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLEhhLHt2YWx1ZTp7fX0pW0hhXTtzW2FdPXMuaGFzT3duUHJvcGVydHkoYSkmJnNbYV18fFtdLHNbYV0udW5zaGlmdChlKSxvJiZvKGksYSwuLi50KX19cmV0dXJuIG4mJihhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSksYS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9dCxhLmFubm90YXRpb25DbHM9YSxhfSkpfWNvbnN0IGphPShmdW5jdGlvbiBVYSgpe3JldHVybiBCYSgiQXR0cmlidXRlIiwodD0+KHthdHRyaWJ1dGVOYW1lOnQsX19OR19FTEVNRU5UX0lEX186KCk9Pk5hKHQpfSkpKX0pKCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBHYXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2Rlc2M9dCx0aGlzLm5nTWV0YWRhdGFOYW1lPSJJbmplY3Rpb25Ub2tlbiIsdGhpcy7JtXByb3Y9dm9pZCAwLCJudW1iZXIiPT10eXBlb2YgZT8oKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZtbihlLDAsIk9ubHkgbmVnYXRpdmUgbnVtYmVycyBhcmUgc3VwcG9ydGVkIGhlcmUiKSx0aGlzLl9fTkdfRUxFTUVOVF9JRF9fPWUpOnZvaWQgMCE9PWUmJih0aGlzLsm1cHJvdj1Nbih7dG9rZW46dGhpcyxwcm92aWRlZEluOmUucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6ZS5mYWN0b3J5fSkpfXRvU3RyaW5nKCl7cmV0dXJuYEluamVjdGlvblRva2VuICR7dGhpcy5fZGVzY31gfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbmV3IEdhKCJBbmFseXplRm9yRW50cnlDb21wb25lbnRzIik7Y2xhc3MgV2F7fWNvbnN0IFlhPVZhKCJDb250ZW50Q2hpbGRyZW4iLCgodCxlPXt9KT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMSxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMSxlbWl0RGlzdGluY3RDaGFuZ2VzT25seTohMH0sZSkpLFdhKSxxYT1WYSgiQ29udGVudENoaWxkIiwoKHQsZT17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITB9LGUpKSxXYSk7VmEoIlZpZXdDaGlsZHJlbiIsKCh0LGU9e30pPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiExLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OiEwfSxlKSksV2EpO2NvbnN0IFphPVZhKCJWaWV3Q2hpbGQiLCgodCxlKT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMCxpc1ZpZXdRdWVyeTohMCxkZXNjZW5kYW50czohMH0sZSkpLFdhKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnZhciBYYSxLYTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEphKHQpe2NvbnN0IGU9am4ubmc7aWYoZSYmZS7JtWNvbXBpbGVyRmFjYWRlKXJldHVybiBlLsm1Y29tcGlsZXJGYWNhZGU7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl7Y29uc29sZS5lcnJvcihgSklUIGNvbXBpbGF0aW9uIGZhaWxlZCBmb3IgJHt0LmtpbmR9YCx0LnR5cGUpO2xldCBlPWBUaGUgJHt0LmtpbmR9ICcke3QudHlwZS5uYW1lfScgbmVlZHMgdG8gYmUgY29tcGlsZWQgdXNpbmcgdGhlIEpJVCBjb21waWxlciwgYnV0ICdAYW5ndWxhci9jb21waWxlcicgaXMgbm90IGF2YWlsYWJsZS5cblxuYDt0aHJvdyAxPT09dC51c2FnZT8oZSs9YFRoZSAke3Qua2luZH0gaXMgcGFydCBvZiBhIGxpYnJhcnkgdGhhdCBoYXMgYmVlbiBwYXJ0aWFsbHkgY29tcGlsZWQuXG5gLGUrPSJIb3dldmVyLCB0aGUgQW5ndWxhciBMaW5rZXIgaGFzIG5vdCBwcm9jZXNzZWQgdGhlIGxpYnJhcnkgc3VjaCB0aGF0IEpJVCBjb21waWxhdGlvbiBpcyB1c2VkIGFzIGZhbGxiYWNrLlxuIixlKz0iXG4iLGUrPSJJZGVhbGx5LCB0aGUgbGlicmFyeSBpcyBwcm9jZXNzZWQgdXNpbmcgdGhlIEFuZ3VsYXIgTGlua2VyIHRvIGJlY29tZSBmdWxseSBBT1QgY29tcGlsZWQuXG4iKTplKz0iSklUIGNvbXBpbGF0aW9uIGlzIGRpc2NvdXJhZ2VkIGZvciBwcm9kdWN0aW9uIHVzZS1jYXNlcyEgQ29uc2lkZXIgdXNpbmcgQU9UIG1vZGUgaW5zdGVhZC5cbiIsZSs9IkFsdGVybmF0aXZlbHksIHRoZSBKSVQgY29tcGlsZXIgc2hvdWxkIGJlIGxvYWRlZCBieSBib290c3RyYXBwaW5nIHVzaW5nICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWMnIG9yICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInLFxuIixlKz0ib3IgbWFudWFsbHkgcHJvdmlkZSB0aGUgY29tcGlsZXIgd2l0aCAnaW1wb3J0IFwiQGFuZ3VsYXIvY29tcGlsZXJcIjsnIGJlZm9yZSBib290c3RyYXBwaW5nLiIsbmV3IEVycm9yKGUpfXRocm93IG5ldyBFcnJvcigiSklUIGNvbXBpbGVyIHVuYXZhaWxhYmxlIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLyEoZnVuY3Rpb24odCl7dFt0LkRpcmVjdGl2ZT0wXT0iRGlyZWN0aXZlIix0W3QuQ29tcG9uZW50PTFdPSJDb21wb25lbnQiLHRbdC5JbmplY3RhYmxlPTJdPSJJbmplY3RhYmxlIix0W3QuUGlwZT0zXT0iUGlwZSIsdFt0Lk5nTW9kdWxlPTRdPSJOZ01vZHVsZSJ9KShYYXx8KFhhPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLHRbdC5Ob25lPTJdPSJOb25lIix0W3QuU2hhZG93RG9tPTNdPSJTaGFkb3dEb20ifSkoS2F8fChLYT17fSkpO2NvbnN0IFFhPUZ1bmN0aW9uO2Z1bmN0aW9uICRhKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIHRyKHQsZSl7dm9pZCAwPT09ZSYmKGU9dCk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBvPXRbbl07QXJyYXkuaXNBcnJheShvKT8oZT09PXQmJihlPXQuc2xpY2UoMCxuKSksdHIobyxlKSk6ZSE9PXQmJmUucHVzaChvKX1yZXR1cm4gZX1mdW5jdGlvbiBlcih0LGUpe3QuZm9yRWFjaCgodD0+QXJyYXkuaXNBcnJheSh0KT9lcih0LGUpOmUodCkpKX1mdW5jdGlvbiBucih0LGUsbil7ZT49dC5sZW5ndGg/dC5wdXNoKG4pOnQuc3BsaWNlKGUsMCxuKX1mdW5jdGlvbiBvcih0LGUpe3JldHVybiBlPj10Lmxlbmd0aC0xP3QucG9wKCk6dC5zcGxpY2UoZSwxKVswXX1mdW5jdGlvbiBpcih0LGUpe2NvbnN0IG49W107Zm9yKGxldCBvPTA7bzx0O28rKyluLnB1c2goZSk7cmV0dXJuIG59ZnVuY3Rpb24gYXIodCxlLG4pe2xldCBvPXNyKHQsZSk7cmV0dXJuIG8+PTA/dFsxfG9dPW46KG89fm8sKGZ1bmN0aW9uIGkodCxlLG4sbyl7bmdEZXZNb2RlJiZ1bihlLHQubGVuZ3RoLCJDYW4ndCBpbnNlcnQgcGFzdCBhcnJheSBlbmQuIik7bGV0IGk9dC5sZW5ndGg7aWYoaT09ZSl0LnB1c2gobixvKTtlbHNlIGlmKDE9PT1pKXQucHVzaChvLHRbMF0pLHRbMF09bjtlbHNle2ZvcihpLS0sdC5wdXNoKHRbaS0xXSx0W2ldKTtpPmU7KXRbaV09dFtpLTJdLGktLTt0W2VdPW4sdFtlKzFdPW99fSkodCxvLGUsbikpLG99ZnVuY3Rpb24gcnIodCxlKXtjb25zdCBuPXNyKHQsZSk7aWYobj49MClyZXR1cm4gdFsxfG5dfWZ1bmN0aW9uIHNyKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLG8pe25nRGV2TW9kZSYmbG4oQXJyYXkuaXNBcnJheSh0KSwhMCwiRXhwZWN0aW5nIGFuIGFycmF5Iik7bGV0IGk9MCxhPXQubGVuZ3RoPj5vO2Zvcig7YSE9PWk7KXtjb25zdCBuPWkrKGEtaT4+MSkscj10W248PG9dO2lmKGU9PT1yKXJldHVybiBuPDxvO3I+ZT9hPW46aT1uKzF9cmV0dXJufihhPDxvKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LGUsMSl9Y29uc3QgbHI9L15mdW5jdGlvblxzK1xTK1woXClccyp7W1xzXFNdK1wuYXBwbHlcKHRoaXMsXHMqKGFyZ3VtZW50c3woPzpbXigpXStcKFxbXF0sKT9bXigpXStcKGFyZ3VtZW50c1wpKVwpLyxjcj0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3svLGRyPS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10re1tcc1xTXSpjb25zdHJ1Y3RvclxzKlwoLyxwcj0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3tbXHNcU10qY29uc3RydWN0b3JccypcKFwpXHMqe1xzKnN1cGVyXChcLlwuXC5hcmd1bWVudHNcKS87Y2xhc3MgbXJ7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmbGVjdD10fHxqbi5SZWZsZWN0fWlzUmVmbGVjdGlvbkVuYWJsZWQoKXtyZXR1cm4hMH1mYWN0b3J5KHQpe3JldHVybiguLi5lKT0+bmV3IHQoLi4uZSl9X3ppcFR5cGVzQW5kQW5ub3RhdGlvbnModCxlKXtsZXQgbjtuPWlyKHZvaWQgMD09PXQ/ZS5sZW5ndGg6dC5sZW5ndGgpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKW5bb109dm9pZCAwPT09dD9bXTp0W29dJiZ0W29dIT1PYmplY3Q/W3Rbb11dOltdLGUmJm51bGwhPWVbb10mJihuW29dPW5bb10uY29uY2F0KGVbb10pKTtyZXR1cm4gbn1fb3duUGFyYW1ldGVycyh0LGUpe2lmKChmdW5jdGlvbiBuKHQpe3JldHVybiBsci50ZXN0KHQpfHxwci50ZXN0KHQpfHxjci50ZXN0KHQpJiYhZHIudGVzdCh0KX0pKHQudG9TdHJpbmcoKSkpcmV0dXJuIG51bGw7aWYodC5wYXJhbWV0ZXJzJiZ0LnBhcmFtZXRlcnMhPT1lLnBhcmFtZXRlcnMpcmV0dXJuIHQucGFyYW1ldGVycztjb25zdCBvPXQuY3RvclBhcmFtZXRlcnM7aWYobyYmbyE9PWUuY3RvclBhcmFtZXRlcnMpe2NvbnN0IHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG8/bygpOm8sZT10Lm1hcCgodD0+dCYmdC50eXBlKSksbj10Lm1hcCgodD0+dCYmdXIodC5kZWNvcmF0b3JzKSkpO3JldHVybiB0aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKGUsbil9Y29uc3QgaT10Lmhhc093blByb3BlcnR5KElhKSYmdFtJYV0sYT10aGlzLl9yZWZsZWN0JiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhJiZ0aGlzLl9yZWZsZWN0LmdldE93bk1ldGFkYXRhKCJkZXNpZ246cGFyYW10eXBlcyIsdCk7cmV0dXJuIGF8fGk/dGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhhLGkpOmlyKHQubGVuZ3RoKX1wYXJhbWV0ZXJzKHQpe2lmKCEkYSh0KSlyZXR1cm5bXTtjb25zdCBlPWZyKHQpO2xldCBuPXRoaXMuX293blBhcmFtZXRlcnModCxlKTtyZXR1cm4gbnx8ZT09PU9iamVjdHx8KG49dGhpcy5wYXJhbWV0ZXJzKGUpKSxufHxbXX1fb3duQW5ub3RhdGlvbnModCxlKXtpZih0LmFubm90YXRpb25zJiZ0LmFubm90YXRpb25zIT09ZS5hbm5vdGF0aW9ucyl7bGV0IGU9dC5hbm5vdGF0aW9ucztyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5hbm5vdGF0aW9ucyYmKGU9ZS5hbm5vdGF0aW9ucyksZX1yZXR1cm4gdC5kZWNvcmF0b3JzJiZ0LmRlY29yYXRvcnMhPT1lLmRlY29yYXRvcnM/dXIodC5kZWNvcmF0b3JzKTp0Lmhhc093blByb3BlcnR5KHphKT90W3phXTpudWxsfWFubm90YXRpb25zKHQpe2lmKCEkYSh0KSlyZXR1cm5bXTtjb25zdCBlPWZyKHQpLG49dGhpcy5fb3duQW5ub3RhdGlvbnModCxlKXx8W107cmV0dXJuKGUhPT1PYmplY3Q/dGhpcy5hbm5vdGF0aW9ucyhlKTpbXSkuY29uY2F0KG4pfV9vd25Qcm9wTWV0YWRhdGEodCxlKXtpZih0LnByb3BNZXRhZGF0YSYmdC5wcm9wTWV0YWRhdGEhPT1lLnByb3BNZXRhZGF0YSl7bGV0IGU9dC5wcm9wTWV0YWRhdGE7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvcE1ldGFkYXRhJiYoZT1lLnByb3BNZXRhZGF0YSksZX1pZih0LnByb3BEZWNvcmF0b3JzJiZ0LnByb3BEZWNvcmF0b3JzIT09ZS5wcm9wRGVjb3JhdG9ycyl7Y29uc3QgZT10LnByb3BEZWNvcmF0b3JzLG49e307cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PntuW3RdPXVyKGVbdF0pfSkpLG59cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoSGEpP3RbSGFdOm51bGx9cHJvcE1ldGFkYXRhKHQpe2lmKCEkYSh0KSlyZXR1cm57fTtjb25zdCBlPWZyKHQpLG49e307aWYoZSE9PU9iamVjdCl7Y29uc3QgdD10aGlzLnByb3BNZXRhZGF0YShlKTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57bltlXT10W2VdfSkpfWNvbnN0IG89dGhpcy5fb3duUHJvcE1ldGFkYXRhKHQsZSk7cmV0dXJuIG8mJk9iamVjdC5rZXlzKG8pLmZvckVhY2goKHQ9Pntjb25zdCBlPVtdO24uaGFzT3duUHJvcGVydHkodCkmJmUucHVzaCguLi5uW3RdKSxlLnB1c2goLi4ub1t0XSksblt0XT1lfSkpLG59b3duUHJvcE1ldGFkYXRhKHQpe3JldHVybiAkYSh0KSYmdGhpcy5fb3duUHJvcE1ldGFkYXRhKHQsZnIodCkpfHx7fX1oYXNMaWZlY3ljbGVIb29rKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBRYSYmZSBpbiB0LnByb3RvdHlwZX1ndWFyZHModCl7cmV0dXJue319Z2V0dGVyKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oIm8iLCJyZXR1cm4gby4iK3QrIjsiKX1zZXR0ZXIodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInYiLCJyZXR1cm4gby4iK3QrIiA9IHY7Iil9bWV0aG9kKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oIm8iLCJhcmdzIixgaWYgKCFvLiR7dH0pIHRocm93IG5ldyBFcnJvcignIiR7dH0iIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgICByZXR1cm4gby4ke3R9LmFwcGx5KG8sIGFyZ3MpO2ApfWltcG9ydFVyaSh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQuZmlsZVBhdGg/dC5maWxlUGF0aDpgLi8ke0dlKHQpfWB9cmVzb3VyY2VVcmkodCl7cmV0dXJuYC4vJHtHZSh0KX1gfXJlc29sdmVJZGVudGlmaWVyKHQsZSxuLG8pe3JldHVybiBvfXJlc29sdmVFbnVtKHQsZSl7cmV0dXJuIHRbZV19fWZ1bmN0aW9uIHVyKHQpe3JldHVybiB0P3QubWFwKCh0PT5uZXcoMCx0LnR5cGUuYW5ub3RhdGlvbkNscykoLi4udC5hcmdzP3QuYXJnczpbXSkpKTpbXX1mdW5jdGlvbiBmcih0KXtjb25zdCBlPXQucHJvdG90eXBlP09iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSk6bnVsbDtyZXR1cm4oZT9lLmNvbnN0cnVjdG9yOm51bGwpfHxPYmplY3R9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGdyPXt9LGhyPS9cbi9nbSxicj0iX19zb3VyY2UiLHlyPWplKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpqZX0pO2xldCBfcjtmdW5jdGlvbiBDcih0KXtjb25zdCBlPV9yO3JldHVybiBfcj10LGV9ZnVuY3Rpb24gTXIodCxlPUVuLkRlZmF1bHQpe2lmKHZvaWQgMD09PV9yKXRocm93IG5ldyBFcnJvcigiaW5qZWN0KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBhbiBpbmplY3Rpb24gY29udGV4dCIpO3JldHVybiBudWxsPT09X3I/VG4odCx2b2lkIDAsZSk6X3IuZ2V0KHQsZSZFbi5PcHRpb25hbD9udWxsOnZvaWQgMCxlKX1mdW5jdGlvbiB2cih0LGU9RW4uRGVmYXVsdCl7cmV0dXJuKChmdW5jdGlvbiBuKCl7cmV0dXJuIFJufSkoKXx8TXIpKFplKHQpLGUpfWZ1bmN0aW9uIHhyKHQpe2NvbnN0IGU9bmdEZXZNb2RlP2BUaGlzIGNvbnN0cnVjdG9yIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQW5ndWxhciBEZXBlbmRlbmN5IEluamVjdGlvbiBiZWNhdXNlIGl0cyBkZXBlbmRlbmN5IGF0IGluZGV4ICR7dH0gb2YgdGhlIHBhcmFtZXRlciBsaXN0IGlzIGludmFsaWQuXG5UaGlzIGNhbiBoYXBwZW4gaWYgdGhlIGRlcGVuZGVuY3kgdHlwZSBpcyBhIHByaW1pdGl2ZSBsaWtlIGEgc3RyaW5nIG9yIGlmIGFuIGFuY2VzdG9yIG9mIHRoaXMgY2xhc3MgaXMgbWlzc2luZyBhbiBBbmd1bGFyIGRlY29yYXRvci5cblxuUGxlYXNlIGNoZWNrIHRoYXQgMSkgdGhlIHR5cGUgZm9yIHRoZSBwYXJhbWV0ZXIgYXQgaW5kZXggJHt0fSBpcyBjb3JyZWN0IGFuZCAyKSB0aGUgY29ycmVjdCBBbmd1bGFyIGRlY29yYXRvcnMgYXJlIGRlZmluZWQgZm9yIHRoaXMgY2xhc3MgYW5kIGl0cyBhbmNlc3RvcnMuYDoiaW52YWxpZCI7dGhyb3cgbmV3IEVycm9yKGUpfWNvbnN0IE9yPXZyO2Z1bmN0aW9uIFByKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89WmUodFtuXSk7aWYoQXJyYXkuaXNBcnJheShvKSl7aWYoMD09PW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQXJndW1lbnRzIGFycmF5IG11c3QgaGF2ZSBhcmd1bWVudHMuIik7bGV0IHQsbj1Fbi5EZWZhdWx0O2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBpPW9bZV0sYT1pLl9fTkdfRElfRkxBR19fOyJudW1iZXIiPT10eXBlb2YgYT8tMT09PWE/dD1pLnRva2VuOm58PWE6dD1pfWUucHVzaCh2cih0LG4pKX1lbHNlIGUucHVzaCh2cihvKSl9cmV0dXJuIGV9ZnVuY3Rpb24gd3IodCxlKXtyZXR1cm4gdC5fX05HX0RJX0ZMQUdfXz1lLHQucHJvdG90eXBlLl9fTkdfRElfRkxBR19fPWUsdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGtyPXdyKEJhKCJJbmplY3QiLCh0PT4oe3Rva2VuOnR9KSkpLC0xKSxTcj13cihCYSgiT3B0aW9uYWwiKSw4KSxEcj13cihCYSgiU2VsZiIpLDIpLEVyPXdyKEJhKCJTa2lwU2VsZiIpLDQpLFJyPXdyKEJhKCJIb3N0IiksMSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgQXI9bnVsbDtmdW5jdGlvbiBUcigpe3JldHVybiBBcj1Bcnx8bmV3IG1yfWZ1bmN0aW9uIE5yKHQpe3JldHVybiB6cihUcigpLnBhcmFtZXRlcnModCkpfWZ1bmN0aW9uIHpyKHQpe3JldHVybiB0Lm1hcCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT17dG9rZW46bnVsbCxhdHRyaWJ1dGU6bnVsbCxob3N0OiExLG9wdGlvbmFsOiExLHNlbGY6ITEsc2tpcFNlbGY6ITF9O2lmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXTtpZih2b2lkIDA9PT1vKWNvbnRpbnVlO2NvbnN0IGk9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO2lmKG8gaW5zdGFuY2VvZiBTcnx8Ik9wdGlvbmFsIj09PWkubmdNZXRhZGF0YU5hbWUpZS5vcHRpb25hbD0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBFcnx8IlNraXBTZWxmIj09PWkubmdNZXRhZGF0YU5hbWUpZS5za2lwU2VsZj0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiBEcnx8IlNlbGYiPT09aS5uZ01ldGFkYXRhTmFtZSllLnNlbGY9ITA7ZWxzZSBpZihvIGluc3RhbmNlb2YgUnJ8fCJIb3N0Ij09PWkubmdNZXRhZGF0YU5hbWUpZS5ob3N0PSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIGtyKWUudG9rZW49by50b2tlbjtlbHNlIGlmKG8gaW5zdGFuY2VvZiBqYSl7aWYodm9pZCAwPT09by5hdHRyaWJ1dGVOYW1lKXRocm93IG5ldyBFcnJvcigiQXR0cmlidXRlIG5hbWUgbXVzdCBiZSBkZWZpbmVkLiIpO2UuYXR0cmlidXRlPW8uYXR0cmlidXRlTmFtZX1lbHNlIGUudG9rZW49b31lbHNlIGUudG9rZW49dm9pZCAwPT09dHx8QXJyYXkuaXNBcnJheSh0KSYmMD09PXQubGVuZ3RoP251bGw6dDtyZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KSkpfWxldCBJcj1uZXcgTWFwO2NvbnN0IEhyPW5ldyBTZXQ7ZnVuY3Rpb24gRnIodCl7cmV0dXJuISEodC50ZW1wbGF0ZVVybCYmIXQuaGFzT3duUHJvcGVydHkoInRlbXBsYXRlIil8fHQuc3R5bGVVcmxzJiZ0LnN0eWxlVXJscy5sZW5ndGgpfWZ1bmN0aW9uIExyKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OnQudGV4dCgpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IEJyLFZyO2Z1bmN0aW9uIGpyKCl7aWYodm9pZCAwPT09QnImJihCcj1udWxsLGpuLnRydXN0ZWRUeXBlcykpdHJ5e0JyPWpuLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOnQ9PnQsY3JlYXRlU2NyaXB0OnQ9PnQsY3JlYXRlU2NyaXB0VVJMOnQ9PnR9KX1jYXRjaCh0KXt9cmV0dXJuIEJyfWZ1bmN0aW9uIFVyKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9anIoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlSFRNTCh0KSl8fHR9ZnVuY3Rpb24gR3IoKXtpZih2b2lkIDA9PT1WciYmKFZyPW51bGwsam4udHJ1c3RlZFR5cGVzKSl0cnl7VnI9am4udHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSgiYW5ndWxhciN1bnNhZmUtYnlwYXNzIix7Y3JlYXRlSFRNTDp0PT50LGNyZWF0ZVNjcmlwdDp0PT50LGNyZWF0ZVNjcmlwdFVSTDp0PT50fSl9Y2F0Y2godCl7fXJldHVybiBWcn1mdW5jdGlvbiBXcih0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPUdyKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZUhUTUwodCkpfHx0fWZ1bmN0aW9uIFlyKHQpe3ZhciBlO3JldHVybihudWxsPT09KGU9R3IoKSl8fHZvaWQgMD09PWU/dm9pZCAwOmUuY3JlYXRlU2NyaXB0KHQpKXx8dH1mdW5jdGlvbiBxcih0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPUdyKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdFVSTCh0KSl8fHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFpye2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eT10fXRvU3RyaW5nKCl7cmV0dXJuYFNhZmVWYWx1ZSBtdXN0IHVzZSBbcHJvcGVydHldPWJpbmRpbmc6ICR7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYH19Y2xhc3MgWHIgZXh0ZW5kcyBacntnZXRUeXBlTmFtZSgpe3JldHVybiJIVE1MIn19Y2xhc3MgS3IgZXh0ZW5kcyBacntnZXRUeXBlTmFtZSgpe3JldHVybiJTdHlsZSJ9fWNsYXNzIEpyIGV4dGVuZHMgWnJ7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iU2NyaXB0In19Y2xhc3MgUXIgZXh0ZW5kcyBacntnZXRUeXBlTmFtZSgpe3JldHVybiJVUkwifX1jbGFzcyAkciBleHRlbmRzIFpye2dldFR5cGVOYW1lKCl7cmV0dXJuIlJlc291cmNlVVJMIn19ZnVuY3Rpb24gdHModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBacj90LmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6dH1mdW5jdGlvbiBlcyh0LGUpe2NvbnN0IG49bnModCk7aWYobnVsbCE9biYmbiE9PWUpe2lmKCJSZXNvdXJjZVVSTCI9PT1uJiYiVVJMIj09PWUpcmV0dXJuITA7dGhyb3cgbmV3IEVycm9yKGBSZXF1aXJlZCBhIHNhZmUgJHtlfSwgZ290IGEgJHtufSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9cmV0dXJuIG49PT1lfWZ1bmN0aW9uIG5zKHQpe3JldHVybiB0IGluc3RhbmNlb2YgWnImJnQuZ2V0VHlwZU5hbWUoKXx8bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIG9zKHQpe2NvbnN0IGU9bmV3IGFzKHQpO3JldHVybihmdW5jdGlvbiBuKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoVXIoIiIpLCJ0ZXh0L2h0bWwiKX1jYXRjaCh0KXtyZXR1cm4hMX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoKT9uZXcgaXMoZSk6ZX1jbGFzcyBpc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXI9dH1nZXRJbmVydEJvZHlFbGVtZW50KHQpe3Q9Ijxib2R5PjxyZW1vdmU+PC9yZW1vdmU+Iit0O3RyeXtjb25zdCBlPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKFVyKHQpLCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiBudWxsPT09ZT90aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXIuZ2V0SW5lcnRCb2R5RWxlbWVudCh0KTooZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpLGUpfWNhdGNoKHQpe3JldHVybiBudWxsfX19Y2xhc3MgYXN7Y29uc3RydWN0b3IodCl7aWYodGhpcy5kZWZhdWx0RG9jPXQsdGhpcy5pbmVydERvY3VtZW50PXRoaXMuZGVmYXVsdERvYy5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInNhbml0aXphdGlvbi1pbmVydCIpLG51bGw9PXRoaXMuaW5lcnREb2N1bWVudC5ib2R5KXtjb25zdCB0PXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7dGhpcy5pbmVydERvY3VtZW50LmFwcGVuZENoaWxkKHQpO2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKTt0LmFwcGVuZENoaWxkKGUpfX1nZXRJbmVydEJvZHlFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7aWYoImNvbnRlbnQiaW4gZSlyZXR1cm4gZS5pbm5lckhUTUw9VXIodCksZTtjb25zdCBuPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIG4uaW5uZXJIVE1MPVVyKHQpLHRoaXMuZGVmYXVsdERvYy5kb2N1bWVudE1vZGUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG4pLG59c3RyaXBDdXN0b21Oc0F0dHJzKHQpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzO2ZvcihsZXQgbj1lLmxlbmd0aC0xOzA8bjtuLS0pe2NvbnN0IG89ZS5pdGVtKG4pLm5hbWU7InhtbG5zOm5zMSIhPT1vJiYwIT09by5pbmRleE9mKCJuczE6Iil8fHQucmVtb3ZlQXR0cmlidXRlKG8pfWxldCBuPXQuZmlyc3RDaGlsZDtmb3IoO247KW4ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnMobiksbj1uLm5leHRTaWJsaW5nfX1jb25zdCBycz0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlfHNtcyk6fFteJjovPyNdKig/OlsvPyNdfCQpKS9naSxzcz0vXmRhdGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTtmdW5jdGlvbiBscyh0KXtyZXR1cm4odD1TdHJpbmcodCkpLm1hdGNoKHJzKXx8dC5tYXRjaChzcyk/dDooKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAke3R9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24gY3ModCl7cmV0dXJuKHQ9U3RyaW5nKHQpKS5zcGxpdCgiLCIpLm1hcCgodD0+bHModC50cmltKCkpKSkuam9pbigiLCAiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZHModCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0LnNwbGl0KCIsIikpZVtuXT0hMDtyZXR1cm4gZX1mdW5jdGlvbiBwcyguLi50KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZm9yKGNvbnN0IHQgaW4gbiluLmhhc093blByb3BlcnR5KHQpJiYoZVt0XT0hMCk7cmV0dXJuIGV9Y29uc3QgbXM9ZHMoImFyZWEsYnIsY29sLGhyLGltZyx3YnIiKSx1cz1kcygiY29sZ3JvdXAsZGQsZHQsbGkscCx0Ym9keSx0ZCx0Zm9vdCx0aCx0aGVhZCx0ciIpLGZzPWRzKCJycCxydCIpLGdzPXBzKGZzLHVzKSxocz1wcyh1cyxkcygiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksYnM9cHMoZnMsZHMoImEsYWJicixhY3JvbnltLGF1ZGlvLGIsYmRpLGJkbyxiaWcsYnIsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9udCxpLGltZyxpbnMsa2JkLGxhYmVsLG1hcCxtYXJrLHBpY3R1cmUscSxydWJ5LHJwLHJ0LHMsc2FtcCxzbWFsbCxzb3VyY2Usc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdGltZSx0cmFjayx0dCx1LHZhcix2aWRlbyIpKSx5cz1wcyhtcyxocyxicyxncyksX3M9ZHMoImJhY2tncm91bmQsY2l0ZSxocmVmLGl0ZW10eXBlLGxvbmdkZXNjLHBvc3RlcixzcmMseGxpbms6aHJlZiIpLENzPWRzKCJzcmNzZXQiKSxNcz1kcygiYWJicixhY2Nlc3NrZXksYWxpZ24sYWx0LGF1dG9wbGF5LGF4aXMsYmdjb2xvcixib3JkZXIsY2VsbHBhZGRpbmcsY2VsbHNwYWNpbmcsY2xhc3MsY2xlYXIsY29sb3IsY29scyxjb2xzcGFuLGNvbXBhY3QsY29udHJvbHMsY29vcmRzLGRhdGV0aW1lLGRlZmF1bHQsZGlyLGRvd25sb2FkLGZhY2UsaGVhZGVycyxoZWlnaHQsaGlkZGVuLGhyZWZsYW5nLGhzcGFjZSxpc21hcCxpdGVtc2NvcGUsaXRlbXByb3Asa2luZCxsYWJlbCxsYW5nLGxhbmd1YWdlLGxvb3AsbWVkaWEsbXV0ZWQsbm9ocmVmLG5vd3JhcCxvcGVuLHByZWxvYWQscmVsLHJldixyb2xlLHJvd3Mscm93c3BhbixydWxlcyxzY29wZSxzY3JvbGxpbmcsc2hhcGUsc2l6ZSxzaXplcyxzcGFuLHNyY2xhbmcsc3RhcnQsc3VtbWFyeSx0YWJpbmRleCx0YXJnZXQsdGl0bGUsdHJhbnNsYXRlLHR5cGUsdXNlbWFwLHZhbGlnbix2YWx1ZSx2c3BhY2Usd2lkdGgiKSx2cz1kcygiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFyaWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlhLWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3BvcHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1vZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1vd25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVzY3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVkLGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSx4cz1wcyhfcyxDcyxNcyx2cyksT3M9ZHMoInNjcmlwdCxzdHlsZSx0ZW1wbGF0ZSIpO2NsYXNzIFBze2NvbnN0cnVjdG9yKCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119c2FuaXRpemVDaGlsZHJlbih0KXtsZXQgZT10LmZpcnN0Q2hpbGQsbj0hMDtmb3IoO2U7KWlmKGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9uPXRoaXMuc3RhcnRFbGVtZW50KGUpOmUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGUubm9kZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxuJiZlLmZpcnN0Q2hpbGQpZT1lLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTtsZXQgdD10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKHQpe2U9dDticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9c3RhcnRFbGVtZW50KHQpe2NvbnN0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCF5cy5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsIU9zLmhhc093blByb3BlcnR5KGUpO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKGUpO2NvbnN0IG49dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uaXRlbSh0KSxvPWUubmFtZSxpPW8udG9Mb3dlckNhc2UoKTtpZigheHMuaGFzT3duUHJvcGVydHkoaSkpe3RoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwO2NvbnRpbnVlfWxldCBhPWUudmFsdWU7X3NbaV0mJihhPWxzKGEpKSxDc1tpXSYmKGE9Y3MoYSkpLHRoaXMuYnVmLnB1c2goIiAiLG8sJz0iJyxTcyhhKSwnIicpfXJldHVybiB0aGlzLmJ1Zi5wdXNoKCI+IiksITB9ZW5kRWxlbWVudCh0KXtjb25zdCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt5cy5oYXNPd25Qcm9wZXJ0eShlKSYmIW1zLmhhc093blByb3BlcnR5KGUpJiYodGhpcy5idWYucHVzaCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9Y2hhcnModCl7dGhpcy5idWYucHVzaChTcyh0KSl9Y2hlY2tDbG9iYmVyZWRFbGVtZW50KHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogJHt0Lm91dGVySFRNTH1gKTtyZXR1cm4gZX19Y29uc3Qgd3M9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLGtzPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBTcyh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSh3cywoZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkpLnJlcGxhY2Uoa3MsKGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1sZXQgRHM7ZnVuY3Rpb24gRXModCxlKXtsZXQgbj1udWxsO3RyeXtEcz1Ec3x8b3ModCk7bGV0IG89ZT9TdHJpbmcoZSk6IiI7bj1Ecy5nZXRJbmVydEJvZHlFbGVtZW50KG8pO2xldCBpPTUsYT1vO2Rve2lmKDA9PT1pKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHNhbml0aXplIGh0bWwgYmVjYXVzZSB0aGUgaW5wdXQgaXMgdW5zdGFibGUiKTtpLS0sbz1hLGE9bi5pbm5lckhUTUwsbj1Ecy5nZXRJbmVydEJvZHlFbGVtZW50KG8pfXdoaWxlKG8hPT1hKTtjb25zdCByPW5ldyBQcyxzPXIuc2FuaXRpemVDaGlsZHJlbihScyhuKXx8bik7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZyLnNhbml0aXplZFNvbWV0aGluZyYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBzYW5pdGl6aW5nIEhUTUwgc3RyaXBwZWQgc29tZSBjb250ZW50LCBzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyIpLFVyKHMpfWZpbmFsbHl7aWYobil7Y29uc3QgdD1ScyhuKXx8bjtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpfX19ZnVuY3Rpb24gUnModCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmIlRFTVBMQVRFIj09PXQubm9kZU5hbWV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCk/dC5jb250ZW50Om51bGx9dmFyIEFzO2Z1bmN0aW9uIFRzKHQpe2NvbnN0IGU9enMoKTtyZXR1cm4gZT9lLnNhbml0aXplKEFzLlVSTCx0KXx8IiI6ZXModCwiVVJMIik/dHModCk6bHMoJGUodCkpfWZ1bmN0aW9uIE5zKHQpe2NvbnN0IGU9enMoKTtpZihlKXJldHVybiBxcihlLnNhbml0aXplKEFzLlJFU09VUkNFX1VSTCx0KXx8IiIpO2lmKGVzKHQsIlJlc291cmNlVVJMIikpcmV0dXJuIHFyKHRzKHQpKTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpfWZ1bmN0aW9uIHpzKCl7Y29uc3QgdD1maSgpO3JldHVybiB0JiZ0WzEyXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSXModCl7bGV0IGU9QnModCk7aWYoZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3Qgbj1lO2xldCBvLGksYTtpZigoZnVuY3Rpb24gbih0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci7JtWNtcH0pKHQpKXtpZihvPUdzKG4sdCksLTE9PW8pdGhyb3cgbmV3IEVycm9yKCJUaGUgcHJvdmlkZWQgY29tcG9uZW50IHdhcyBub3QgZm91bmQgaW4gdGhlIGFwcGxpY2F0aW9uIik7aT10fWVsc2UgaWYoKGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IuybVkaXJ9KSh0KSl7aWYobz0oZnVuY3Rpb24gaSh0LGUpe2xldCBuPXRbMV0uZmlyc3RDaGlsZDtmb3IoO247KXtjb25zdCBvPW4uZGlyZWN0aXZlRW5kO2ZvcihsZXQgaT1uLmRpcmVjdGl2ZVN0YXJ0O2k8bztpKyspaWYodFtpXT09PWUpcmV0dXJuIG4uaW5kZXg7bj1VcyhuKX1yZXR1cm4tMX0pKG4sdCksLTE9PW8pdGhyb3cgbmV3IEVycm9yKCJUaGUgcHJvdmlkZWQgZGlyZWN0aXZlIHdhcyBub3QgZm91bmQgaW4gdGhlIGFwcGxpY2F0aW9uIik7YT1XcyhvLG4sITEpfWVsc2UgaWYobz1qcyhuLHQpLC0xPT1vKXJldHVybiBudWxsO2NvbnN0IHI9ZWkobltvXSkscz1CcyhyKSxsPXMmJiFBcnJheS5pc0FycmF5KHMpP3M6SHMobixvLHIpO2lmKGkmJnZvaWQgMD09PWwuY29tcG9uZW50JiYobC5jb21wb25lbnQ9aSxMcyhsLmNvbXBvbmVudCxsKSksYSYmdm9pZCAwPT09bC5kaXJlY3RpdmVzKXtsLmRpcmVjdGl2ZXM9YTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKylMcyhhW3RdLGwpfUxzKGwubmF0aXZlLGwpLGU9bH19ZWxzZXtjb25zdCBuPXQ7bmdEZXZNb2RlJiZ5bihuKTtsZXQgbz1uO2Zvcig7bz1vLnBhcmVudE5vZGU7KXtjb25zdCB0PUJzKG8pO2lmKHQpe2xldCBvO2lmKG89QXJyYXkuaXNBcnJheSh0KT90OnQubFZpZXcsIW8pcmV0dXJuIG51bGw7Y29uc3QgaT1qcyhvLG4pO2lmKGk+PTApe2NvbnN0IHQ9ZWkob1tpXSksbj1IcyhvLGksdCk7THModCxuKSxlPW47YnJlYWt9fX19cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24gSHModCxlLG4pe3JldHVybntsVmlldzp0LG5vZGVJbmRleDplLG5hdGl2ZTpuLGNvbXBvbmVudDp2b2lkIDAsZGlyZWN0aXZlczp2b2lkIDAsbG9jYWxSZWZzOnZvaWQgMH19ZnVuY3Rpb24gRnModCl7bGV0IGUsbj1Ccyh0KTtpZihBcnJheS5pc0FycmF5KG4pKXtjb25zdCBvPUdzKG4sdCk7ZT1yaShvLG4pO2NvbnN0IGk9SHMobixvLGVbMF0pO2kuY29tcG9uZW50PXQsTHModCxpKSxMcyhpLm5hdGl2ZSxpKX1lbHNlIGU9cmkobi5ub2RlSW5kZXgsbi5sVmlldyk7cmV0dXJuIGV9ZnVuY3Rpb24gTHModCxlKXtuZ0Rldk1vZGUmJmhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfXz1lfWZ1bmN0aW9uIEJzKHQpe3JldHVybiBuZ0Rldk1vZGUmJmhuKHQsIlRhcmdldCBleHBlY3RlZCIpLHQuX19uZ0NvbnRleHRfX3x8bnVsbH1mdW5jdGlvbiBWcyh0KXtjb25zdCBlPUJzKHQpO3JldHVybiBlP0FycmF5LmlzQXJyYXkoZSk/ZTplLmxWaWV3Om51bGx9ZnVuY3Rpb24ganModCxlKXtjb25zdCBuPXRbMV07Zm9yKGxldCBvPWdvO288bi5iaW5kaW5nU3RhcnRJbmRleDtvKyspaWYoZWkodFtvXSk9PT1lKXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIFVzKHQpe2lmKHQuY2hpbGQpcmV0dXJuIHQuY2hpbGQ7aWYodC5uZXh0KXJldHVybiB0Lm5leHQ7Zm9yKDt0LnBhcmVudCYmIXQucGFyZW50Lm5leHQ7KXQ9dC5wYXJlbnQ7cmV0dXJuIHQucGFyZW50JiZ0LnBhcmVudC5uZXh0fWZ1bmN0aW9uIEdzKHQsZSl7Y29uc3Qgbj10WzFdLmNvbXBvbmVudHM7aWYobilmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgaT1uW29dO2lmKHJpKGksdClbOF09PT1lKXJldHVybiBpfWVsc2UgaWYocmkoZ28sdClbOF09PT1lKXJldHVybiBnbztyZXR1cm4tMX1mdW5jdGlvbiBXcyh0LGUsbil7Y29uc3Qgbz1lWzFdLmRhdGFbdF07bGV0IGk9by5kaXJlY3RpdmVTdGFydDtyZXR1cm4gMD09aT9XbjooIW4mJjImby5mbGFncyYmaSsrLGUuc2xpY2UoaSxvLmRpcmVjdGl2ZUVuZCkpfWZ1bmN0aW9uIFlzKHQpe3JldHVybiB0Lm5nT3JpZ2luYWxFcnJvcn1mdW5jdGlvbiBxcyh0LC4uLmUpe3QuZXJyb3IoLi4uZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5IVE1MPTFdPSJIVE1MIix0W3QuU1RZTEU9Ml09IlNUWUxFIix0W3QuU0NSSVBUPTNdPSJTQ1JJUFQiLHRbdC5VUkw9NF09IlVSTCIsdFt0LlJFU09VUkNFX1VSTD01XT0iUkVTT1VSQ0VfVVJMIn0pKEFzfHwoQXM9e30pKTtjbGFzcyBac3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1oYW5kbGVFcnJvcih0KXtjb25zdCBlPXRoaXMuX2ZpbmRPcmlnaW5hbEVycm9yKHQpLG49dGhpcy5fZmluZENvbnRleHQodCksbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCYmdC5uZ0Vycm9yTG9nZ2VyfHxxc30pKHQpO28odGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJm8odGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJm8odGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIsbil9X2ZpbmRDb250ZXh0KHQpe3JldHVybiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm5nRGVidWdDb250ZXh0fSkodCl8fHRoaXMuX2ZpbmRDb250ZXh0KFlzKHQpKTpudWxsfV9maW5kT3JpZ2luYWxFcnJvcih0KXtsZXQgZT10JiZZcyh0KTtmb3IoO2UmJllzKGUpOyllPVlzKGUpO3JldHVybiBlfHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWHM9e25hbWU6ImN1c3RvbS1lbGVtZW50cyJ9LEtzPXtuYW1lOiJuby1lcnJvcnMtc2NoZW1hIn0sSnM9L14+fF4tPnw8IS0tfC0tPnwtLSE+fDwhLSQvZyxRcz0vKDx8PikvO2Z1bmN0aW9uICRzKHQpe3JldHVybiB0LnJlcGxhY2UoSnMsKHQ9PnQucmVwbGFjZShRcywi4oCLJDHigIsiKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB0bCh0KXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiTG9va3MgbGlrZSB3ZSBhcmUgaW4gJ3Byb2QgbW9kZScsIGJ1dCB3ZSBhcmUgY3JlYXRpbmcgYSBuYW1lZCBBcnJheSB0eXBlLCB3aGljaCBpcyB3cm9uZyEgQ2hlY2sgeW91ciBjb2RlIik7dHJ5e3JldHVybihmdW5jdGlvbiBlKC4uLnQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigibmV3VHJ1c3RlZEZ1bmN0aW9uRm9yRGV2IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gcHJvZHVjdGlvbiIpO2lmKCFqbi50cnVzdGVkVHlwZXMpcmV0dXJuIG5ldyBGdW5jdGlvbiguLi50KTtjb25zdCBlPWAoZnVuY3Rpb24gYW5vbnltb3VzKCR7dC5zbGljZSgwLC0xKS5qb2luKCIsIil9XG4pIHsgJHt0W3QubGVuZ3RoLTFdfVxufSlgLG49am4uZXZhbCgoZnVuY3Rpb24gbyh0KXt2YXIgZTtyZXR1cm4obnVsbD09PShlPWpyKCkpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNyZWF0ZVNjcmlwdCh0KSl8fHR9KShlKSk7cmV0dXJuIHZvaWQgMD09PW4uYmluZD9uZXcgRnVuY3Rpb24oLi4udCk6KG4udG9TdHJpbmc9KCk9PmUsbi5iaW5kKGpuKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoIkFycmF5IixgcmV0dXJuIGNsYXNzICR7dH0gZXh0ZW5kcyBBcnJheXt9YCkoQXJyYXkpfWNhdGNoKHQpe3JldHVybiBBcnJheX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGVsPS8oW0EtWl0pL2csbmw9KCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoam4pO2Z1bmN0aW9uIG9sKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gaWwodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudH1jb25zdCBhbD0i77+9IjtmdW5jdGlvbiBybCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEZ1bmN0aW9uP3QoKTp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBzbCh0KXt0aHJvdyBuZXcgS2UoIjMwMCIsYE11bHRpcGxlIGNvbXBvbmVudHMgbWF0Y2ggbm9kZSB3aXRoIHRhZ25hbWUgJHt0LnZhbHVlfWApfWZ1bmN0aW9uIGxsKHQsZSxuLG8saSl7Y29uc3RbYSxyLC4uLnNdPW8uc3BsaXQoYWwpO2xldCBsPXIsYz1yO2ZvcihsZXQgbz0wO288cy5sZW5ndGg7bysrKXtjb25zdCBhPWUrbztsKz1gJHt0W2FdfSR7c1tvXX1gLGMrPWAke2E9PT1uP2k6dFthXX0ke3Nbb119YH1yZXR1cm57cHJvcE5hbWU6YSxvbGRWYWx1ZTpsLG5ld1ZhbHVlOmN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIGNsOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IGRsO2Z1bmN0aW9uIHBsKHQsZSl7cmV0dXJuIGRsKHQsZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBtbCh0KXtuZ0Rldk1vZGUmJlJvKHQpO2NvbnN0IGU9dFszXTtyZXR1cm4gX28oZSk/ZVszXTplfWZ1bmN0aW9uIHVsKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7bmdEZXZNb2RlJiZobih0LCJjb21wb25lbnQiKTtsZXQgZT15byh0KT90OlZzKHQpO2Zvcig7ZSYmISg1MTImZVsyXSk7KWU9bWwoZSk7cmV0dXJuIG5nRGV2TW9kZSYmUm8oZSksZX0pKHQpO3JldHVybiBuZ0Rldk1vZGUmJmhuKGVbOF0sIlJvb3RWaWV3IGhhcyBubyBjb250ZXh0LiBQZXJoYXBzIGl0IGlzIGRpc2Nvbm5lY3RlZD8iKSxlWzhdfWZ1bmN0aW9uIGZsKHQpe3JldHVybiBobCh0WzEzXSl9ZnVuY3Rpb24gZ2wodCl7cmV0dXJuIGhsKHRbNF0pfWZ1bmN0aW9uIGhsKHQpe2Zvcig7bnVsbCE9PXQmJiFfbyh0KTspdD10WzRdO3JldHVybiB0fWZ1bmN0aW9uIGJsKHQsZSxuLG8saSl7aWYobnVsbCE9byl7bGV0IGEscj0hMTtfbyhvKT9hPW86eW8obykmJihyPSEwLG5nRGV2TW9kZSYmaG4ob1swXSwiSE9TVCBtdXN0IGJlIGRlZmluZWQgZm9yIGEgY29tcG9uZW50IExWaWV3Iiksbz1vWzBdKTtjb25zdCBzPWVpKG8pO25nRGV2TW9kZSYmISRvKGUpJiZ5bihzKSwwPT09dCYmbnVsbCE9PW4/bnVsbD09aT9EbChlLG4scyk6U2woZSxuLHMsaXx8bnVsbCwhMCk6MT09PXQmJm51bGwhPT1uP1NsKGUsbixzLGl8fG51bGwsITApOjI9PT10P1ZsKGUscyxyKTozPT09dCYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyRGVzdHJveU5vZGUrKyxlLmRlc3Ryb3lOb2RlKHMpKSxudWxsIT1hJiYoZnVuY3Rpb24gYSh0LGUsbixvLGkpe25nRGV2TW9kZSYmRG8obik7Y29uc3QgYT1uWzddO2EhPT1laShuKSYmYmwoZSx0LG8sYSxpKTtmb3IobGV0IGk9Ym87aTxuLmxlbmd0aDtpKyspe2NvbnN0IHI9bltpXTtVbChyWzFdLHIsdCxlLG8sYSl9fSkoZSx0LGEsbixpKX19ZnVuY3Rpb24geWwodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVUZXh0Tm9kZSsrLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0VGV4dCsrLCRvKHQpP3QuY3JlYXRlVGV4dChlKTp0LmNyZWF0ZVRleHROb2RlKGUpfWZ1bmN0aW9uIF9sKHQsZSxuKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFRleHQrKywkbyh0KT90LnNldFZhbHVlKGUsbik6ZS50ZXh0Q29udGVudD1ufWZ1bmN0aW9uIENsKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLHQuY3JlYXRlQ29tbWVudCgkcyhlKSl9ZnVuY3Rpb24gTWwodCxlLG4pe3JldHVybiBuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUVsZW1lbnQrKywkbyh0KT90LmNyZWF0ZUVsZW1lbnQoZSxuKTpudWxsPT09bj90LmNyZWF0ZUVsZW1lbnQoZSk6dC5jcmVhdGVFbGVtZW50TlMobixlKX1mdW5jdGlvbiB2bCh0LGUpe25nRGV2TW9kZSYmRG8odCksbmdEZXZNb2RlJiZobih0WzldLCJBIHByb2plY3RlZCB2aWV3IHNob3VsZCBiZWxvbmcgdG8gYSBub24tZW1wdHkgcHJvamVjdGVkIHZpZXdzIGNvbGxlY3Rpb24iKTtjb25zdCBuPXRbOV0sbz1uLmluZGV4T2YoZSksaT1lWzNdO25nRGV2TW9kZSYmRG8oaSksMTAyNCZlWzJdJiYoZVsyXSY9LTEwMjUscGkoaSwtMSkpLG4uc3BsaWNlKG8sMSl9ZnVuY3Rpb24geGwodCxlKXtpZih0Lmxlbmd0aDw9Ym8pcmV0dXJuO2NvbnN0IG49Ym8rZSxvPXRbbl07aWYobyl7Y29uc3QgaT1vWzE3XTtudWxsIT09aSYmaSE9PXQmJnZsKGksbyksZT4wJiYodFtuLTFdWzRdPW9bNF0pO2NvbnN0IGE9b3IodCxibytlKTshKGZ1bmN0aW9uIGkodCxlKXtVbCh0LGUsZVsxMV0sMixudWxsLG51bGwpLGVbMF09bnVsbCxlWzZdPW51bGx9KShvWzFdLG8pO2NvbnN0IHI9YVsxOV07bnVsbCE9PXImJnIuZGV0YWNoVmlldyhhWzFdKSxvWzNdPW51bGwsb1s0XT1udWxsLG9bMl0mPS0xMjl9cmV0dXJuIG99ZnVuY3Rpb24gT2wodCxlKXtpZighKDI1NiZlWzJdKSl7Y29uc3Qgbj1lWzExXTskbyhuKSYmbi5kZXN0cm95Tm9kZSYmVWwodCxlLG4sMyxudWxsLG51bGwpLChmdW5jdGlvbiBuKHQpe2xldCBlPXRbMTNdO2lmKCFlKXJldHVybiBQbCh0WzFdLHQpO2Zvcig7ZTspe2xldCBuPW51bGw7aWYoeW8oZSkpbj1lWzEzXTtlbHNle25nRGV2TW9kZSYmRG8oZSk7Y29uc3QgdD1lWzEwXTt0JiYobj10KX1pZighbil7Zm9yKDtlJiYhZVs0XSYmZSE9PXQ7KXlvKGUpJiZQbChlWzFdLGUpLGU9ZVszXTtudWxsPT09ZSYmKGU9dCkseW8oZSkmJlBsKGVbMV0sZSksbj1lJiZlWzRdfWU9bn19KShlKX19ZnVuY3Rpb24gUGwodCxlKXtpZighKDI1NiZlWzJdKSl7ZVsyXSY9LTEyOSxlWzJdfD0yNTYsKGZ1bmN0aW9uIG4odCxlKXtsZXQgbjtpZihudWxsIT10JiZudWxsIT0obj10LmRlc3Ryb3lIb29rcykpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKXtjb25zdCBvPWVbblt0XV07aWYoIShvIGluc3RhbmNlb2YgbmEpKXtjb25zdCBlPW5bdCsxXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9Mil7Y29uc3Qgbj1vW2VbdF1dLGk9ZVt0KzFdO3FvKDQsbixpKTt0cnl7aS5jYWxsKG4pfWZpbmFsbHl7cW8oNSxuLGkpfX1lbHNle3FvKDQsbyxlKTt0cnl7ZS5jYWxsKG8pfWZpbmFsbHl7cW8oNSxvLGUpfX19fX0pKHQsZSksKGZ1bmN0aW9uIG8odCxlKXtjb25zdCBuPXQuY2xlYW51cCxvPWVbN107bGV0IGk9LTE7aWYobnVsbCE9PW4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aC0xO3QrPTIpaWYoInN0cmluZyI9PXR5cGVvZiBuW3RdKXtjb25zdCBhPW5bdCsxXSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoZSk6ZWkoZVthXSkscz1vW2k9blt0KzJdXSxsPW5bdCszXTsiYm9vbGVhbiI9PXR5cGVvZiBsP3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihuW3RdLHMsbCk6bD49MD9vW2k9bF0oKTpvW2k9LWxdLnVuc3Vic2NyaWJlKCksdCs9Mn1lbHNle2NvbnN0IGU9b1tpPW5bdCsxXV07blt0XS5jYWxsKGUpfWlmKG51bGwhPT1vKXtmb3IobGV0IHQ9aSsxO3Q8by5sZW5ndGg7dCsrKXtjb25zdCBlPW9bdF07bmdEZXZNb2RlJiYoIkV4cGVjdGluZyBpbnN0YW5jZSBjbGVhbnVwIGZ1bmN0aW9uLiIsImZ1bmN0aW9uIiE9dHlwZW9mKGE9ZSkmJmJuKCJFeHBlY3RpbmcgaW5zdGFuY2UgY2xlYW51cCBmdW5jdGlvbi4iLG51bGw9PT1hPyJudWxsIjp0eXBlb2YgYSwiZnVuY3Rpb24iLCI9PT0iKSksZSgpfWVbN109bnVsbH12YXIgYX0pKHQsZSksMT09PWVbMV0udHlwZSYmJG8oZVsxMV0pJiYobmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJEZXN0cm95KyssZVsxMV0uZGVzdHJveSgpKTtjb25zdCBuPWVbMTddO2lmKG51bGwhPT1uJiZfbyhlWzNdKSl7biE9PWVbM10mJnZsKG4sZSk7Y29uc3Qgbz1lWzE5XTtudWxsIT09byYmby5kZXRhY2hWaWV3KHQpfX19ZnVuY3Rpb24gd2wodCxlLG4pe3JldHVybiBrbCh0LGUucGFyZW50LG4pfWZ1bmN0aW9uIGtsKHQsZSxuKXtsZXQgbz1lO2Zvcig7bnVsbCE9PW8mJjQwJm8udHlwZTspbz0oZT1vKS5wYXJlbnQ7aWYobnVsbD09PW8pcmV0dXJuIG5bMF07aWYobmdEZXZNb2RlJiZpYShvLDcpLDImby5mbGFncyl7bmdEZXZNb2RlJiZPbyhvLG4pO2NvbnN0IGU9dC5kYXRhW28uZGlyZWN0aXZlU3RhcnRdLmVuY2Fwc3VsYXRpb247aWYoZT09PUhuLk5vbmV8fGU9PT1Ibi5FbXVsYXRlZClyZXR1cm4gbnVsbH1yZXR1cm4gb2kobyxuKX1mdW5jdGlvbiBTbCh0LGUsbixvLGkpe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVySW5zZXJ0QmVmb3JlKyssJG8odCk/dC5pbnNlcnRCZWZvcmUoZSxuLG8saSk6ZS5pbnNlcnRCZWZvcmUobixvLGkpfWZ1bmN0aW9uIERsKHQsZSxuKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFwcGVuZENoaWxkKyssbmdEZXZNb2RlJiZobihlLCJwYXJlbnQgbm9kZSBtdXN0IGJlIGRlZmluZWQiKSwkbyh0KT90LmFwcGVuZENoaWxkKGUsbik6ZS5hcHBlbmRDaGlsZChuKX1mdW5jdGlvbiBFbCh0LGUsbixvLGkpe251bGwhPT1vP1NsKHQsZSxuLG8saSk6RGwodCxlLG4pfWZ1bmN0aW9uIFJsKHQsZSl7cmV0dXJuICRvKHQpP3QucGFyZW50Tm9kZShlKTplLnBhcmVudE5vZGV9ZnVuY3Rpb24gQWwodCxlLG4pe3JldHVybiB6bCh0LGUsbil9ZnVuY3Rpb24gVGwodCxlLG4pe3JldHVybiA0MCZ0LnR5cGU/b2kodCxuKTpudWxsfSEoZnVuY3Rpb24odCl7dFt0LkltcG9ydGFudD0xXT0iSW1wb3J0YW50Iix0W3QuRGFzaENhc2U9Ml09IkRhc2hDYXNlIn0pKGNsfHwoY2w9e30pKTtsZXQgTmwsemw9VGw7ZnVuY3Rpb24gSWwodCxlKXt6bD10LE5sPWV9ZnVuY3Rpb24gSGwodCxlLG4sbyl7Y29uc3QgaT13bCh0LG8sZSksYT1lWzExXSxyPUFsKG8ucGFyZW50fHxlWzZdLG8sZSk7aWYobnVsbCE9aSlpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKUVsKGEsaSxuW3RdLHIsITEpO2Vsc2UgRWwoYSxpLG4sciwhMSk7dm9pZCAwIT09TmwmJk5sKGEsbyxlLG4saSl9ZnVuY3Rpb24gRmwodCxlKXtpZihudWxsIT09ZSl7bmdEZXZNb2RlJiZpYShlLDYzKTtjb25zdCBuPWUudHlwZTtpZigzJm4pcmV0dXJuIG9pKGUsdCk7aWYoNCZuKXJldHVybiBCbCgtMSx0W2UuaW5kZXhdKTtpZig4Jm4pe2NvbnN0IG49ZS5jaGlsZDtpZihudWxsIT09bilyZXR1cm4gRmwodCxuKTt7Y29uc3Qgbj10W2UuaW5kZXhdO3JldHVybiBfbyhuKT9CbCgtMSxuKTplaShuKX19aWYoMzImbilyZXR1cm4gcGwoZSx0KSgpfHxlaSh0W2UuaW5kZXhdKTt7Y29uc3Qgbj1MbCh0LGUpO2lmKG51bGwhPT1uKXtpZihBcnJheS5pc0FycmF5KG4pKXJldHVybiBuWzBdO2NvbnN0IGU9bWwodFsxNl0pO3JldHVybiBuZ0Rldk1vZGUmJklvKGUpLEZsKGUsbil9cmV0dXJuIEZsKHQsZS5uZXh0KX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gTGwodCxlKXtpZihudWxsIT09ZSl7Y29uc3Qgbj10WzE2XVs2XSxvPWUucHJvamVjdGlvbjtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbih0LGUpe2huKHRbMTZdLCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGV4aXN0LiIpLGhuKHRbMTZdWzZdLnByb2plY3Rpb24sZXx8IkNvbXBvbmVudHMgd2l0aCBwcm9qZWN0aW9uIG5vZGVzICg8bmctY29udGVudD4pIG11c3QgaGF2ZSBwcm9qZWN0aW9uIHNsb3RzIGRlZmluZWQuIil9KSh0KSxuLnByb2plY3Rpb25bb119cmV0dXJuIG51bGx9ZnVuY3Rpb24gQmwodCxlKXtjb25zdCBuPWJvK3QrMTtpZihuPGUubGVuZ3RoKXtjb25zdCB0PWVbbl0sbz10WzFdLmZpcnN0Q2hpbGQ7aWYobnVsbCE9PW8pcmV0dXJuIEZsKHQsbyl9cmV0dXJuIGVbN119ZnVuY3Rpb24gVmwodCxlLG4pe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlTm9kZSsrO2NvbnN0IG89UmwodCxlKTtvJiYoZnVuY3Rpb24gaSh0LGUsbixvKXskbyh0KT90LnJlbW92ZUNoaWxkKGUsbixvKTplLnJlbW92ZUNoaWxkKG4pfSkodCxvLGUsbil9ZnVuY3Rpb24gamwodCxlLG4sbyxpLGEscil7Zm9yKDtudWxsIT1uOyl7bmdEZXZNb2RlJiZPbyhuLG8pLG5nRGV2TW9kZSYmaWEobiw2Myk7Y29uc3Qgcz1vW24uaW5kZXhdLGw9bi50eXBlO2lmKHImJjA9PT1lJiYocyYmTHMoZWkocyksbyksbi5mbGFnc3w9NCksNjQhPSg2NCZuLmZsYWdzKSlpZig4JmwpamwodCxlLG4uY2hpbGQsbyxpLGEsITEpLGJsKGUsdCxpLHMsYSk7ZWxzZSBpZigzMiZsKXtjb25zdCByPXBsKG4sbyk7bGV0IGw7Zm9yKDtsPXIoKTspYmwoZSx0LGksbCxhKTtibChlLHQsaSxzLGEpfWVsc2UgMTYmbD9HbCh0LGUsbyxuLGksYSk6KG5nRGV2TW9kZSYmaWEobiw3KSxibChlLHQsaSxzLGEpKTtuPXI/bi5wcm9qZWN0aW9uTmV4dDpuLm5leHR9fWZ1bmN0aW9uIFVsKHQsZSxuLG8saSxhKXtqbChuLG8sdC5maXJzdENoaWxkLGUsaSxhLCExKX1mdW5jdGlvbiBHbCh0LGUsbixvLGksYSl7Y29uc3Qgcj1uWzE2XSxzPXJbNl07bmdEZXZNb2RlJiZsbih0eXBlb2Ygby5wcm9qZWN0aW9uLCJudW1iZXIiLCJleHBlY3RpbmcgcHJvamVjdGlvbiBpbmRleCIpO2NvbnN0IGw9cy5wcm9qZWN0aW9uW28ucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IG49MDtuPGwubGVuZ3RoO24rKylibChlLHQsaSxsW25dLGEpO2Vsc2UgamwodCxlLGwsclszXSxpLGEsITApfWZ1bmN0aW9uIFdsKHQsZSxuKXtuZ0Rldk1vZGUmJnNuKG4sIiduZXdWYWx1ZScgc2hvdWxkIGJlIGEgc3RyaW5nIiksJG8odCk/dC5zZXRBdHRyaWJ1dGUoZSwic3R5bGUiLG4pOmUuc3R5bGUuY3NzVGV4dD1uLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrK31mdW5jdGlvbiBZbCh0LGUsbil7bmdEZXZNb2RlJiZzbihuLCInbmV3VmFsdWUnIHNob3VsZCBiZSBhIHN0cmluZyIpLCRvKHQpPyIiPT09bj90LnJlbW92ZUF0dHJpYnV0ZShlLCJjbGFzcyIpOnQuc2V0QXR0cmlidXRlKGUsImNsYXNzIixuKTplLmNsYXNzTmFtZT1uLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0Q2xhc3NOYW1lKyt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHFsKHQsZSxuKXtuZ0Rldk1vZGUmJmNuKGUsIiIsJ2NhbiBub3QgbG9vayBmb3IgIiIgc3RyaW5nLicpO2xldCBvPXQubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgaT10LmluZGV4T2YoZSxuKTtpZigtMT09PWkpcmV0dXJuIGk7aWYoMD09PWl8fHQuY2hhckNvZGVBdChpLTEpPD0zMil7Y29uc3Qgbj1lLmxlbmd0aDtpZihpK249PT1vfHx0LmNoYXJDb2RlQXQoaStuKTw9MzIpcmV0dXJuIGl9bj1pKzF9fWNvbnN0IFpsPSJuZy10ZW1wbGF0ZSI7ZnVuY3Rpb24gWGwodCxlLG4pe25nRGV2TW9kZSYmbG4oZSxlLnRvTG93ZXJDYXNlKCksIkNsYXNzIG5hbWUgZXhwZWN0ZWQgdG8gYmUgbG93ZXJjYXNlLiIpO2xldCBvPTA7Zm9yKDtvPHQubGVuZ3RoOyl7bGV0IGk9dFtvKytdO2lmKG4mJiJjbGFzcyI9PT1pKXtpZihpPXRbb10sLTEhPT1xbChpLnRvTG93ZXJDYXNlKCksZSwwKSlyZXR1cm4hMH1lbHNlIGlmKDE9PT1pKXtmb3IoO288dC5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YoaT10W28rK10pOylpZihpLnRvTG93ZXJDYXNlKCk9PT1lKXJldHVybiEwO3JldHVybiExfX1yZXR1cm4hMX1mdW5jdGlvbiBLbCh0KXtyZXR1cm4gND09PXQudHlwZSYmdC52YWx1ZSE9PVpsfWZ1bmN0aW9uIEpsKHQsZSxuKXtyZXR1cm4gZT09PSg0IT09dC50eXBlfHxuP3QudmFsdWU6WmwpfWZ1bmN0aW9uIFFsKHQsZSxuKXtuZ0Rldk1vZGUmJmhuKGVbMF0sIlNlbGVjdG9yIHNob3VsZCBoYXZlIGEgdGFnIG5hbWUiKTtsZXQgbz00O2NvbnN0IGk9dC5hdHRyc3x8W10sYT0oZnVuY3Rpb24gcih0KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZihyYSh0W2VdKSlyZXR1cm4gZTtyZXR1cm4gdC5sZW5ndGh9KShpKTtsZXQgcz0hMTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7Y29uc3QgbD1lW3JdO2lmKCJudW1iZXIiIT10eXBlb2YgbCl7aWYoIXMpaWYoNCZvKXtpZihvPTJ8MSZvLCIiIT09bCYmIUpsKHQsbCxuKXx8IiI9PT1sJiYxPT09ZS5sZW5ndGgpe2lmKCRsKG8pKXJldHVybiExO3M9ITB9fWVsc2V7Y29uc3QgYz04Jm8/bDplWysrcl07aWYoOCZvJiZudWxsIT09dC5hdHRycyl7aWYoIVhsKHQuYXR0cnMsYyxuKSl7aWYoJGwobykpcmV0dXJuITE7cz0hMH1jb250aW51ZX1jb25zdCBkPXRjKDgmbz8iY2xhc3MiOmwsaSxLbCh0KSxuKTtpZigtMT09PWQpe2lmKCRsKG8pKXJldHVybiExO3M9ITA7Y29udGludWV9aWYoIiIhPT1jKXtsZXQgdDtkPmE/dD0iIjoobmdEZXZNb2RlJiZjbihpW2RdLDAsIldlIGRvIG5vdCBtYXRjaCBkaXJlY3RpdmVzIG9uIG5hbWVzcGFjZWQgYXR0cmlidXRlcyIpLHQ9aVtkKzFdLnRvTG93ZXJDYXNlKCkpO2NvbnN0IGU9OCZvP3Q6bnVsbDtpZihlJiYtMSE9PXFsKGUsYywwKXx8MiZvJiZjIT09dCl7aWYoJGwobykpcmV0dXJuITE7cz0hMH19fX1lbHNle2lmKCFzJiYhJGwobykmJiEkbChsKSlyZXR1cm4hMTtpZihzJiYkbChsKSljb250aW51ZTtzPSExLG89bHwxJm99fXJldHVybiAkbChvKXx8c31mdW5jdGlvbiAkbCh0KXtyZXR1cm4gMD09KDEmdCl9ZnVuY3Rpb24gdGModCxlLG4sbyl7aWYobnVsbD09PWUpcmV0dXJuLTE7bGV0IGk9MDtpZihvfHwhbil7bGV0IG49ITE7Zm9yKDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1lW2ldO2lmKG89PT10KXJldHVybiBpO2lmKDM9PT1vfHw2PT09byluPSEwO2Vsc2V7aWYoMT09PW98fDI9PT1vKXtsZXQgdD1lWysraV07Zm9yKDsic3RyaW5nIj09dHlwZW9mIHQ7KXQ9ZVsrK2ldO2NvbnRpbnVlfWlmKDQ9PT1vKWJyZWFrO2lmKDA9PT1vKXtpKz00O2NvbnRpbnVlfX1pKz1uPzE6Mn1yZXR1cm4tMX1yZXR1cm4oZnVuY3Rpb24gYSh0LGUpe2xldCBuPXQuaW5kZXhPZig0KTtpZihuPi0xKWZvcihuKys7bjx0Lmxlbmd0aDspe2NvbnN0IG89dFtuXTtpZigibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuLTE7aWYobz09PWUpcmV0dXJuIG47bisrfXJldHVybi0xfSkoZSx0KX1mdW5jdGlvbiBlYyh0LGUsbj0hMSl7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspaWYoUWwodCxlW29dLG4pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG5jKHQsZSl7dDpmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7Y29uc3Qgbz1lW25dO2lmKHQubGVuZ3RoPT09by5sZW5ndGgpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0hPT1vW2VdKWNvbnRpbnVlIHQ7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIG9jKHQsZSl7cmV0dXJuIHQ/Ijpub3QoIitlLnRyaW0oKSsiKSI6ZX1mdW5jdGlvbiBpYyh0KXtsZXQgZT10WzBdLG49MSxvPTIsaT0iIixhPSExO2Zvcig7bjx0Lmxlbmd0aDspe2xldCByPXRbbl07aWYoInN0cmluZyI9PXR5cGVvZiByKWlmKDImbyl7Y29uc3QgZT10Wysrbl07aSs9IlsiK3IrKGUubGVuZ3RoPjA/Jz0iJytlKyciJzoiIikrIl0ifWVsc2UgOCZvP2krPSIuIityOjQmbyYmKGkrPSIgIityKTtlbHNlIiI9PT1pfHwkbChyKXx8KGUrPW9jKGEsaSksaT0iIiksbz1yLGE9YXx8ISRsKG8pO24rK31yZXR1cm4iIiE9PWkmJihlKz1vYyhhLGkpKSxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYWM9InVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZT97X19icmFuZF9fOiJOT19DSEFOR0UifTp7fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcmModCl7bmdEZXZNb2RlJiZmbih0LDAsIkNhbiBvbmx5IGFkdmFuY2UgZm9yd2FyZCIpLHNjKGdpKCksZmkoKSxHaSgpK3QseGkoKSl9ZnVuY3Rpb24gc2ModCxlLG4sbyl7aWYobmdEZXZNb2RlJiYoZnVuY3Rpb24gaSh0LGUpe3pvKGdvLHRbMV0uYmluZGluZ1N0YXJ0SW5kZXgsZSl9KShlLG4pLCFvKWlmKDM9PSgzJmVbMl0pKXtjb25zdCBvPXQucHJlT3JkZXJDaGVja0hvb2tzO251bGwhPT1vJiZLaShlLG8sbil9ZWxzZXtjb25zdCBvPXQucHJlT3JkZXJIb29rcztudWxsIT09byYmSmkoZSxvLDAsbil9V2kobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGxjKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmcm4odCwwLDMyNzY3KSxuZ0Rldk1vZGUmJnJuKGUsMCwzMjc2NyksdDw8MTd8ZTw8Mn1mdW5jdGlvbiBjYyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZhbih0LCJleHBlY3RlZCBudW1iZXIiKSx0Pj4xNyYzMjc2N31mdW5jdGlvbiBkYyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZhbih0LCJleHBlY3RlZCBudW1iZXIiKSwyPT0oMiZ0KX1mdW5jdGlvbiBwYyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZhbih0LCJleHBlY3RlZCBudW1iZXIiKSwyfHR9ZnVuY3Rpb24gbWModCl7cmV0dXJuIG5nRGV2TW9kZSYmYW4odCwiZXhwZWN0ZWQgbnVtYmVyIiksKDEzMTA2OCZ0KT4+Mn1mdW5jdGlvbiB1Yyh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmFuKHQsImV4cGVjdGVkIG51bWJlciIpLG5nRGV2TW9kZSYmcm4oZSwwLDMyNzY3KSwtMTMxMDY5JnR8ZTw8Mn1mdW5jdGlvbiBmYyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZhbih0LCJleHBlY3RlZCBudW1iZXIiKSwxPT0oMSZ0KX1mdW5jdGlvbiBnYyh0KXtyZXR1cm4gbmdEZXZNb2RlJiZhbih0LCJleHBlY3RlZCBudW1iZXIiKSwxfHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGhjKHQsZSl7aWYoIW5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgbWV0aG9kIHNob3VsZCBiZSBndWFyZGVkIHdpdGggYG5nRGV2TW9kZWAgc28gdGhhdCBpdCBjYW4gYmUgdHJlZSBzaGFrZW4gaW4gcHJvZHVjdGlvbiEiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVidWciLHt2YWx1ZTplLGVudW1lcmFibGU6ITF9KX1mdW5jdGlvbiBiYyh0LGUpe2lmKCFuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIGBuZ0Rldk1vZGVgIHNvIHRoYXQgaXQgY2FuIGJlIHRyZWUgc2hha2VuIGluIHByb2R1Y3Rpb24hIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlYnVnIix7Z2V0OmUsZW51bWVyYWJsZTohMX0pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB5Yz0oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fCEhbmdEZXZNb2RlKSYmVW4oKTtsZXQgX2MsQ2MsTWM7ZnVuY3Rpb24gdmModCl7aWYobnVsbD09dClyZXR1cm4iIjtjb25zdCBlPXQubGFzdEluZGV4T2YoIl9UZW1wbGF0ZSIpO3JldHVybiJfIisoLTE9PT1lP3Q6dC5zdWJzdHIoMCxlKSl9ZnVuY3Rpb24geGModCxlKXtjb25zdCBuPXQudFZpZXdfLmRhdGEsbz1bXSxpPWU/dC5jbGFzc0JpbmRpbmdzOnQuc3R5bGVCaW5kaW5ncyxhPWNjKGkpLHI9bWMoaSk7bGV0IHM9MCE9PXIsbD1zP3I6YTtmb3IoOzAhPT1sOyl7Y29uc3QgdD1uW2wrMV07by51bnNoaWZ0KHtrZXk6bltsXSxpbmRleDpsLGlzVGVtcGxhdGU6cyxwcmV2RHVwbGljYXRlOmRjKHQpLG5leHREdXBsaWNhdGU6ZmModCksbmV4dEluZGV4Om1jKHQpLHByZXZJbmRleDpjYyh0KX0pLGw9PT1hJiYocz0hMSksbD1jYyh0KX1yZXR1cm4gby5wdXNoKChlP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXMpfHxudWxsKSxvfWZ1bmN0aW9uIE9jKHQsZSl7Zm9yKDt0OyllLnB1c2godC50ZW1wbGF0ZV8pLHQ9dC5uZXh0fWNvbnN0IFBjPXljJiZ0bCgiVFZpZXdEYXRhIil8fG51bGw7bGV0IHdjO2NvbnN0IGtjPXljJiZ0bCgiTFZpZXdCbHVlcHJpbnQiKXx8bnVsbCxTYz15YyYmdGwoIk1hdGNoZXNBcnJheSIpfHxudWxsLERjPXljJiZ0bCgiVFZpZXdDb21wb25lbnRzIil8fG51bGwsRWM9eWMmJnRsKCJUTm9kZUxvY2FsTmFtZXMiKXx8bnVsbCxSYz15YyYmdGwoIlROb2RlSW5pdGlhbElucHV0cyIpfHxudWxsO3ljJiZ0bCgiVE5vZGVJbml0aWFsRGF0YSIpO2NvbnN0IEFjPXljJiZ0bCgiTENsZWFudXAiKXx8bnVsbCxUYz15YyYmdGwoIlRDbGVhbnVwIil8fG51bGw7ZnVuY3Rpb24gTmModCl7aWYodCl7Y29uc3QgZT10LmRlYnVnO3JldHVybiBobihlLCJPYmplY3QgZG9lcyBub3QgaGF2ZSBhIGRlYnVnIHJlcHJlc2VudGF0aW9uLiIpLGV9cmV0dXJuIHR9ZnVuY3Rpb24gemModCxlPSExKXtjb25zdCBuPWVpKHQpO2lmKG4pc3dpdGNoKG4ubm9kZVR5cGUpe2Nhc2UgTm9kZS5URVhUX05PREU6cmV0dXJuIG4udGV4dENvbnRlbnQ7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpyZXR1cm5gXHgzYyEtLSR7bi50ZXh0Q29udGVudH0tLVx4M2VgO2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Y29uc3QgdD1uLm91dGVySFRNTDtyZXR1cm4gZT90OnQuc3BsaXQoIj4iK24uaW5uZXJIVE1MKyI8IilbMF0rIj4ifXJldHVybiBudWxsfWNsYXNzIElje2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sVmlldz10fWdldCBmbGFncygpe2NvbnN0IHQ9dGhpcy5fcmF3X2xWaWV3WzJdO3JldHVybntfX3Jhd19fZmxhZ3NfXzp0LGluaXRQaGFzZVN0YXRlOjMmdCxjcmVhdGlvbk1vZGU6ISEoNCZ0KSxmaXJzdFZpZXdQYXNzOiEhKDgmdCksY2hlY2tBbHdheXM6ISEoMTYmdCksZGlydHk6ISEoNjQmdCksYXR0YWNoZWQ6ISEoMTI4JnQpLGRlc3Ryb3llZDohISgyNTYmdCksaXNSb290OiEhKDUxMiZ0KSxpbmRleFdpdGhpbkluaXRQaGFzZTp0Pj4xMX19Z2V0IHBhcmVudCgpe3JldHVybiBOYyh0aGlzLl9yYXdfbFZpZXdbM10pfWdldCBob3N0SFRNTCgpe3JldHVybiB6Yyh0aGlzLl9yYXdfbFZpZXdbMF0sITApfWdldCBodG1sKCl7cmV0dXJuKHRoaXMubm9kZXN8fFtdKS5tYXAoSGMpLmpvaW4oIiIpfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s4XX1nZXQgbm9kZXMoKXtjb25zdCB0PXRoaXMuX3Jhd19sVmlldztyZXR1cm4gTGModFsxXS5maXJzdENoaWxkLHQpfWdldCB0ZW1wbGF0ZSgpe3JldHVybiB0aGlzLnRWaWV3LnRlbXBsYXRlX31nZXQgdFZpZXcoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzFdfWdldCBjbGVhbnVwKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s3XX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzldfWdldCByZW5kZXJlckZhY3RvcnkoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzEwXX1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzExXX1nZXQgc2FuaXRpemVyKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1sxMl19Z2V0IGNoaWxkSGVhZCgpe3JldHVybiBOYyh0aGlzLl9yYXdfbFZpZXdbMTNdKX1nZXQgbmV4dCgpe3JldHVybiBOYyh0aGlzLl9yYXdfbFZpZXdbNF0pfWdldCBjaGlsZFRhaWwoKXtyZXR1cm4gTmModGhpcy5fcmF3X2xWaWV3WzE0XSl9Z2V0IGRlY2xhcmF0aW9uVmlldygpe3JldHVybiBOYyh0aGlzLl9yYXdfbFZpZXdbMTVdKX1nZXQgcXVlcmllcygpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTldfWdldCB0SG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbNl19Z2V0IGRlY2xzKCl7cmV0dXJuIEZjKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LGdvLHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpfWdldCB2YXJzKCl7cmV0dXJuIEZjKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCl9Z2V0IGV4cGFuZG8oKXtyZXR1cm4gRmModGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdGhpcy50Vmlldy5leHBhbmRvU3RhcnRJbmRleCx0aGlzLl9yYXdfbFZpZXcubGVuZ3RoKX1nZXQgY2hpbGRWaWV3cygpe2NvbnN0IHQ9W107bGV0IGU9dGhpcy5jaGlsZEhlYWQ7Zm9yKDtlOyl0LnB1c2goZSksZT1lLm5leHQ7cmV0dXJuIHR9fWZ1bmN0aW9uIEhjKHQpe2lmKCJFbGVtZW50Q29udGFpbmVyIj09PXQudHlwZSlyZXR1cm4odC5jaGlsZHJlbnx8W10pLm1hcChIYykuam9pbigiIik7aWYoIkljdUNvbnRhaW5lciI9PT10LnR5cGUpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTtyZXR1cm4gemModC5uYXRpdmUsITApfHwiIn1mdW5jdGlvbiBGYyh0LGUsbixvKXtsZXQgaT1bXTtmb3IobGV0IGE9bjthPG87YSsrKWkucHVzaCh7aW5kZXg6YSx0OnQuZGF0YVthXSxsOmVbYV19KTtyZXR1cm57c3RhcnQ6bixlbmQ6byxsZW5ndGg6by1uLGNvbnRlbnQ6aX19ZnVuY3Rpb24gTGModCxlKXtpZih0KXtjb25zdCBuPVtdO2xldCBvPXQ7Zm9yKDtvOyluLnB1c2goQmMobyxlKSksbz1vLm5leHQ7cmV0dXJuIG59cmV0dXJuW119ZnVuY3Rpb24gQmModCxlKXtjb25zdCBuPWVpKGVbdC5pbmRleF0pLG89W10saT1bXSxhPWVbMV07Zm9yKGxldCBuPXQuZGlyZWN0aXZlU3RhcnQ7bjx0LmRpcmVjdGl2ZUVuZDtuKyspby5wdXNoKGEuZGF0YVtuXS50eXBlKSxpLnB1c2goZVtuXSk7cmV0dXJue2h0bWw6emMobiksdHlwZTpvYSh0LnR5cGUpLHROb2RlOnQsbmF0aXZlOm4sY2hpbGRyZW46TGModC5jaGlsZCxlKSxmYWN0b3JpZXM6byxpbnN0YW5jZXM6aSxpbmplY3RvcjpWYyh0LGEsZSksZ2V0IGluamVjdG9yUmVzb2x1dGlvblBhdGgoKXtyZXR1cm4gdC5kZWJ1Z05vZGVJbmplY3RvclBhdGgoZSl9fX1mdW5jdGlvbiBWYyh0LGUsbil7Y29uc3Qgbz1bXTtmb3IobGV0IG49dC5wcm92aWRlckluZGV4U3RhcnRfO248dC5wcm92aWRlckluZGV4RW5kXztuKyspby5wdXNoKGUuZGF0YVtuXSk7Y29uc3QgaT1bXTtmb3IobGV0IG49dC5wcm92aWRlckluZGV4RW5kXztuPHQuZGlyZWN0aXZlRW5kO24rKylpLnB1c2goZS5kYXRhW25dKTtyZXR1cm57Ymxvb206VWMobix0LmluamVjdG9ySW5kZXgpLGN1bXVsYXRpdmVCbG9vbTpVYyhlLmRhdGEsdC5pbmplY3RvckluZGV4KSxwcm92aWRlcnM6aSx2aWV3UHJvdmlkZXJzOm8scGFyZW50SW5qZWN0b3JJbmRleDpuW3QucHJvdmlkZXJJbmRleFN0YXJ0Xy0xXX19ZnVuY3Rpb24gamModCxlKXtjb25zdCBuPXRbZV07aWYoIm51bWJlciIhPXR5cGVvZiBuKXJldHVybiI/Pz8/Pz8/PyI7Y29uc3Qgbz0iMDAwMDAwMDAiK24udG9TdHJpbmcoMik7cmV0dXJuIG8uc3Vic3RyaW5nKG8ubGVuZ3RoLTgpfWZ1bmN0aW9uIFVjKHQsZSl7cmV0dXJuIGU8MD8iTk9fTk9ERV9JTkpFQ1RPUiI6YCR7amModCxlKzcpfV8ke2pjKHQsZSs2KX1fJHtqYyh0LGUrNSl9XyR7amModCxlKzQpfV8ke2pjKHQsZSszKX1fJHtqYyh0LGUrMil9XyR7amModCxlKzEpfV8ke2pjKHQsZSswKX1gfWNsYXNzIEdje2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sQ29udGFpbmVyPXR9Z2V0IGhhc1RyYW5zcGxhbnRlZFZpZXdzKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzJdfWdldCB2aWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lci5zbGljZShibykubWFwKE5jKX1nZXQgcGFyZW50KCl7cmV0dXJuIE5jKHRoaXMuX3Jhd19sQ29udGFpbmVyWzNdKX1nZXQgbW92ZWRWaWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcls5XX1nZXQgaG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclswXX1nZXQgbmF0aXZlKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzddfWdldCBuZXh0KCl7cmV0dXJuIE5jKHRoaXMuX3Jhd19sQ29udGFpbmVyWzRdKX19Y29uc3QgV2M9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2Z1bmN0aW9uIFljKHQsZSl7Y29uc3Qgbj10LmNvbnRlbnRRdWVyaWVzO2lmKG51bGwhPT1uKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9Mil7Y29uc3QgaT1uW29dLGE9bltvKzFdO2lmKC0xIT09YSl7Y29uc3Qgbj10LmRhdGFbYV07bmdEZXZNb2RlJiZobihuLCJEaXJlY3RpdmVEZWYgbm90IGZvdW5kLiIpLG5nRGV2TW9kZSYmaG4obi5jb250ZW50UXVlcmllcywiY29udGVudFF1ZXJpZXMgZnVuY3Rpb24gc2hvdWxkIGJlIGRlZmluZWQiKSx6aShpKSxuLmNvbnRlbnRRdWVyaWVzKDIsZVthXSxhKX19fWZ1bmN0aW9uIHFjKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9bmdEZXZNb2RlPyhmdW5jdGlvbiBwKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdm9pZCAwPT09TWMmJihNYz1uZXcodGwoIkxSb290VmlldyIpKSksTWM7Y2FzZSAxOnZvaWQgMD09PV9jJiYoX2M9bmV3IE1hcCk7bGV0IHQ9X2MuZ2V0KG4pO3JldHVybiB2b2lkIDA9PT10JiYodD1uZXcodGwoIkxDb21wb25lbnRWaWV3Iit2YyhuKSkpLF9jLnNldChuLHQpKSx0O2Nhc2UgMjp2b2lkIDA9PT1DYyYmKENjPW5ldyBNYXApO2xldCBlPUNjLmdldChuKTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3KHRsKCJMRW1iZWRkZWRWaWV3Iit2YyhuKSkpLENjLnNldChuLGUpKSxlfX0pKHQudHlwZSx0LnRlbXBsYXRlJiZ0LnRlbXBsYXRlLm5hbWUpLmNvbmNhdCh0LmJsdWVwcmludCl9KShlKTplLmJsdWVwcmludC5zbGljZSgpO3JldHVybiBkWzBdPWksZFsyXT0xNDB8byxkaShkKSxuZ0Rldk1vZGUmJmUuZGVjbFROb2RlJiZ0JiZPbyhlLmRlY2xUTm9kZSx0KSxkWzNdPWRbMTVdPXQsZFs4XT1uLGRbMTBdPXJ8fHQmJnRbMTBdLG5nRGV2TW9kZSYmaG4oZFsxMF0sIlJlbmRlcmVyRmFjdG9yeSBpcyByZXF1aXJlZCIpLGRbMTFdPXN8fHQmJnRbMTFdLG5nRGV2TW9kZSYmaG4oZFsxMV0sIlJlbmRlcmVyIGlzIHJlcXVpcmVkIiksZFsxMl09bHx8dCYmdFsxMl18fG51bGwsZFs5XT1jfHx0JiZ0WzldfHxudWxsLGRbNl09YSxuZ0Rldk1vZGUmJmxuKDIhPWUudHlwZXx8bnVsbCE9PXQsITAsIkVtYmVkZGVkIHZpZXdzIG11c3QgaGF2ZSBwYXJlbnRMVmlldyIpLGRbMTZdPTI9PWUudHlwZT90WzE2XTpkLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIG0odCl7aGModCxuZXcgSWModCkpfSkoZCksZH1mdW5jdGlvbiBaYyh0LGUsbixvLGkpe25nRGV2TW9kZSYmMCE9PWUmJmduKGUsZ28sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGEodCl7MiE9PXQmJjEhPT10JiY0IT09dCYmOCE9PXQmJjMyIT09dCYmMTYhPT10JiY2NCE9PXQmJmJuKGBFeHBlY3RlZCBUTm9kZVR5cGUgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIHR5cGUgc2VsZWN0ZWQsIGJ1dCBnb3QgJHtvYSh0KX0uYCl9KShuKTtsZXQgcj10LmRhdGFbZV07aWYobnVsbD09PXIpcj1YYyh0LGUsbixvLGkpLChmdW5jdGlvbiBzKCl7cmV0dXJuIG1pLmxGcmFtZS5pbkkxOG59KSgpJiYoci5mbGFnc3w9NjQpO2Vsc2UgaWYoNjQmci50eXBlKXtyLnR5cGU9bixyLnZhbHVlPW8sci5hdHRycz1pO2NvbnN0IGE9X2koKTtyLmluamVjdG9ySW5kZXg9bnVsbD09PWE/LTE6YS5pbmplY3RvckluZGV4LG5nRGV2TW9kZSYmUG8ocix0KSxuZ0Rldk1vZGUmJmxuKGUsci5pbmRleCwiRXhwZWN0aW5nIHNhbWUgaW5kZXgiKX1yZXR1cm4gQ2kociwhMCkscn1mdW5jdGlvbiBYYyh0LGUsbixvLGkpe2NvbnN0IGE9eWkoKSxyPU1pKCkscz10LmRhdGFbZV09KGZ1bmN0aW9uIGwodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmMCE9PW8mJmduKG8sZ28sIlROb2RlcyBjYW4ndCBiZSBpbiB0aGUgTFZpZXcgaGVhZGVyLiIpLG5nRGV2TW9kZSYmcG4oYSx2b2lkIDAsIid1bmRlZmluZWQnIGlzIG5vdCB2YWxpZCB2YWx1ZSBmb3IgJ2F0dHJzJyIpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnROb2RlKyssbmdEZXZNb2RlJiZlJiZQbyhlLHQpO2xldCByPWU/ZS5pbmplY3RvckluZGV4Oi0xO2NvbnN0IHM9bmdEZXZNb2RlP25ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5LF8sQyxNLHYseCxPLFAsdyxrLFMsRCxFLFIpe3RoaXMudFZpZXdfPXQsdGhpcy50eXBlPWUsdGhpcy5pbmRleD1uLHRoaXMuaW5zZXJ0QmVmb3JlSW5kZXg9byx0aGlzLmluamVjdG9ySW5kZXg9aSx0aGlzLmRpcmVjdGl2ZVN0YXJ0PWEsdGhpcy5kaXJlY3RpdmVFbmQ9cix0aGlzLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PXMsdGhpcy5wcm9wZXJ0eUJpbmRpbmdzPWwsdGhpcy5mbGFncz1jLHRoaXMucHJvdmlkZXJJbmRleGVzPWQsdGhpcy52YWx1ZT1wLHRoaXMuYXR0cnM9bSx0aGlzLm1lcmdlZEF0dHJzPXUsdGhpcy5sb2NhbE5hbWVzPWYsdGhpcy5pbml0aWFsSW5wdXRzPWcsdGhpcy5pbnB1dHM9aCx0aGlzLm91dHB1dHM9Yix0aGlzLnRWaWV3cz15LHRoaXMubmV4dD1fLHRoaXMucHJvamVjdGlvbk5leHQ9Qyx0aGlzLmNoaWxkPU0sdGhpcy5wYXJlbnQ9dix0aGlzLnByb2plY3Rpb249eCx0aGlzLnN0eWxlcz1PLHRoaXMuc3R5bGVzV2l0aG91dEhvc3Q9UCx0aGlzLnJlc2lkdWFsU3R5bGVzPXcsdGhpcy5jbGFzc2VzPWssdGhpcy5jbGFzc2VzV2l0aG91dEhvc3Q9Uyx0aGlzLnJlc2lkdWFsQ2xhc3Nlcz1ELHRoaXMuY2xhc3NCaW5kaW5ncz1FLHRoaXMuc3R5bGVCaW5kaW5ncz1SfWRlYnVnTm9kZUluamVjdG9yUGF0aCh0KXtjb25zdCBlPVtdO2xldCBuPXlhKHRoaXMsdCk7aWYoLTE9PT1uKXtjb25zdCBlPV9hKHRoaXMsdCk7ZSE9PWVhJiYobj1wYShlKSx0PW1hKGUsdCkpfWZvcig7LTEhPT1uOyl7bmdEZXZNb2RlJiZIbyh0LG4pLGUucHVzaChCYyh0WzFdLmRhdGFbbis4XSx0KSk7Y29uc3Qgbz10W24rOF07bz09PWVhP249LTE6KG49cGEobyksdD1tYShvLHQpKX1yZXR1cm4gZX1nZXQgdHlwZV8oKXtyZXR1cm4gb2EodGhpcy50eXBlKXx8YFROb2RlVHlwZS4/JHt0aGlzLnR5cGV9P2B9Z2V0IGZsYWdzXygpe2NvbnN0IHQ9W107cmV0dXJuIDE2JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNDbGFzc0lucHV0IiksOCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzQ29udGVudFF1ZXJ5IiksMzImdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc1N0eWxlSW5wdXQiKSwxMjgmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0hvc3RCaW5kaW5ncyIpLDImdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzQ29tcG9uZW50SG9zdCIpLDEmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzRGlyZWN0aXZlSG9zdCIpLDY0JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc0RldGFjaGVkIiksNCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNQcm9qZWN0ZWQiKSx0LmpvaW4oInwiKX1nZXQgdGVtcGxhdGVfKCl7aWYoMSZ0aGlzLnR5cGUpcmV0dXJuIHRoaXMudmFsdWU7Y29uc3QgdD1bXSxlPSJzdHJpbmciPT10eXBlb2YgdGhpcy52YWx1ZSYmdGhpcy52YWx1ZXx8dGhpcy50eXBlXztpZih0LnB1c2goIjwiLGUpLHRoaXMuZmxhZ3MmJnQucHVzaCgiICIsdGhpcy5mbGFnc18pLHRoaXMuYXR0cnMpZm9yKGxldCBlPTA7ZTx0aGlzLmF0dHJzLmxlbmd0aDspe2NvbnN0IG49dGhpcy5hdHRyc1tlKytdO2lmKCJudW1iZXIiPT10eXBlb2YgbilicmVhaztjb25zdCBvPXRoaXMuYXR0cnNbZSsrXTt0LnB1c2goIiAiLG4sJz0iJyxvLCciJyl9cmV0dXJuIHQucHVzaCgiPiIpLE9jKHRoaXMuY2hpbGQsdCksdC5wdXNoKCI8LyIsZSwiPiIpLHQuam9pbigiIil9Z2V0IHN0eWxlQmluZGluZ3NfKCl7cmV0dXJuIHhjKHRoaXMsITEpfWdldCBjbGFzc0JpbmRpbmdzXygpe3JldHVybiB4Yyh0aGlzLCEwKX1nZXQgcHJvdmlkZXJJbmRleFN0YXJ0Xygpe3JldHVybiAxMDQ4NTc1JnRoaXMucHJvdmlkZXJJbmRleGVzfWdldCBwcm92aWRlckluZGV4RW5kXygpe3JldHVybiB0aGlzLnByb3ZpZGVySW5kZXhTdGFydF8rKHRoaXMucHJvdmlkZXJJbmRleGVzPj4+MjApfX0odCxuLG8sbnVsbCxyLC0xLC0xLC0xLG51bGwsMCwwLGksYSxudWxsLG51bGwsdm9pZCAwLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLGUsbnVsbCxudWxsLG51bGwsdm9pZCAwLG51bGwsbnVsbCx2b2lkIDAsMCwwKTp7dHlwZTpuLGluZGV4Om8saW5zZXJ0QmVmb3JlSW5kZXg6bnVsbCxpbmplY3RvckluZGV4OnIsZGlyZWN0aXZlU3RhcnQ6LTEsZGlyZWN0aXZlRW5kOi0xLGRpcmVjdGl2ZVN0eWxpbmdMYXN0Oi0xLHByb3BlcnR5QmluZGluZ3M6bnVsbCxmbGFnczowLHByb3ZpZGVySW5kZXhlczowLHZhbHVlOmksYXR0cnM6YSxtZXJnZWRBdHRyczpudWxsLGxvY2FsTmFtZXM6bnVsbCxpbml0aWFsSW5wdXRzOnZvaWQgMCxpbnB1dHM6bnVsbCxvdXRwdXRzOm51bGwsdFZpZXdzOm51bGwsbmV4dDpudWxsLHByb2plY3Rpb25OZXh0Om51bGwsY2hpbGQ6bnVsbCxwYXJlbnQ6ZSxwcm9qZWN0aW9uOm51bGwsc3R5bGVzOm51bGwsc3R5bGVzV2l0aG91dEhvc3Q6bnVsbCxyZXNpZHVhbFN0eWxlczp2b2lkIDAsY2xhc3NlczpudWxsLGNsYXNzZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsQ2xhc3Nlczp2b2lkIDAsY2xhc3NCaW5kaW5nczowLHN0eWxlQmluZGluZ3M6MH07cmV0dXJuIG5nRGV2TW9kZSYmT2JqZWN0LnNlYWwocyksc30pKHQscj9hOmEmJmEucGFyZW50LG4sZSxvLGkpO3JldHVybiBudWxsPT09dC5maXJzdENoaWxkJiYodC5maXJzdENoaWxkPXMpLG51bGwhPT1hJiYocj9udWxsPT1hLmNoaWxkJiZudWxsIT09cy5wYXJlbnQmJihhLmNoaWxkPXMpOm51bGw9PT1hLm5leHQmJihhLm5leHQ9cykpLHN9ZnVuY3Rpb24gS2ModCxlLG4sbyl7aWYoMD09PW4pcmV0dXJuLTE7bmdEZXZNb2RlJiYoQW8odCksZG4odCxlWzFdLCJgTFZpZXdgIG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGBUVmlld2AhIiksbG4odC5kYXRhLmxlbmd0aCxlLmxlbmd0aCwiRXhwZWN0aW5nIExWaWV3IHRvIGJlIHNhbWUgc2l6ZSBhcyBUVmlldyIpLGxuKHQuZGF0YS5sZW5ndGgsdC5ibHVlcHJpbnQubGVuZ3RoLCJFeHBlY3RpbmcgQmx1ZXByaW50IHRvIGJlIHNhbWUgc2l6ZSBhcyBUVmlldyIpLFRvKHQpKTtjb25zdCBpPWUubGVuZ3RoO2ZvcihsZXQgaT0wO2k8bjtpKyspZS5wdXNoKG8pLHQuYmx1ZXByaW50LnB1c2gobyksdC5kYXRhLnB1c2gobnVsbCk7cmV0dXJuIGl9ZnVuY3Rpb24gSmModCxlLG4pe25nRGV2TW9kZSYmbG4oc2koZSksITAsIlNob3VsZCBiZSBydW4gaW4gY3JlYXRpb24gbW9kZSIpLEZpKGUpO3RyeXtjb25zdCBvPXQudmlld1F1ZXJ5O251bGwhPT1vJiZOZCgxLG8sbik7Y29uc3QgaT10LnRlbXBsYXRlO251bGwhPT1pJiZ0ZCh0LGUsaSwxLG4pLHQuZmlyc3RDcmVhdGVQYXNzJiYodC5maXJzdENyZWF0ZVBhc3M9ITEpLHQuc3RhdGljQ29udGVudFF1ZXJpZXMmJlljKHQsZSksdC5zdGF0aWNWaWV3UXVlcmllcyYmTmQoMix0LnZpZXdRdWVyeSxuKTtjb25zdCBhPXQuY29tcG9uZW50cztudWxsIT09YSYmKGZ1bmN0aW9uIG8odCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylTZCh0LGVbbl0pfSkoZSxhKX1jYXRjaChlKXt0aHJvdyB0LmZpcnN0Q3JlYXRlUGFzcyYmKHQuaW5jb21wbGV0ZUZpcnN0UGFzcz0hMCx0LmZpcnN0Q3JlYXRlUGFzcz0hMSksZX1maW5hbGx5e2VbMl0mPS01LFVpKCl9fWZ1bmN0aW9uIFFjKHQsZSxuLG8pe25nRGV2TW9kZSYmbG4oc2koZSksITEsIlNob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUiKTtjb25zdCBpPWVbMl07aWYoMjU2PT0oMjU2JmkpKXJldHVybjtGaShlKTtjb25zdCBhPXhpKCk7dHJ5e2RpKGUpLGtpKHQuYmluZGluZ1N0YXJ0SW5kZXgpLG51bGwhPT1uJiZ0ZCh0LGUsbiwyLG8pO2NvbnN0IHI9Mz09KDMmaSk7aWYoIWEpaWYocil7Y29uc3Qgbj10LnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09biYmS2koZSxuLG51bGwpfWVsc2V7Y29uc3Qgbj10LnByZU9yZGVySG9va3M7bnVsbCE9PW4mJkppKGUsbiwwLG51bGwpLFFpKGUsMCl9aWYoKGZ1bmN0aW9uIHIodCl7Zm9yKGxldCBlPWZsKHQpO251bGwhPT1lO2U9Z2woZSkpe2lmKCFlWzJdKWNvbnRpbnVlO2NvbnN0IHQ9ZVs5XTtuZ0Rldk1vZGUmJmhuKHQsIlRyYW5zcGxhbnRlZCBWaWV3IGZsYWdzIHNldCBidXQgbWlzc2luZyBNT1ZFRF9WSUVXUyIpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV0sbz1uWzNdO25nRGV2TW9kZSYmRG8obyksMD09KDEwMjQmblsyXSkmJnBpKG8sMSksblsyXXw9MTAyNH19fSkoZSksKGZ1bmN0aW9uIHModCl7Zm9yKGxldCBlPWZsKHQpO251bGwhPT1lO2U9Z2woZSkpZm9yKGxldCB0PWJvO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF0sbz1uWzFdO25nRGV2TW9kZSYmaG4obywiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxsaShuKSYmUWMobyxuLG8udGVtcGxhdGUsbls4XSl9fSkoZSksbnVsbCE9PXQuY29udGVudFF1ZXJpZXMmJlljKHQsZSksIWEpaWYocil7Y29uc3Qgbj10LmNvbnRlbnRDaGVja0hvb2tzO251bGwhPT1uJiZLaShlLG4pfWVsc2V7Y29uc3Qgbj10LmNvbnRlbnRIb29rcztudWxsIT09biYmSmkoZSxuLDEpLFFpKGUsMSl9IShmdW5jdGlvbiBsKHQsZSl7Y29uc3Qgbj10Lmhvc3RCaW5kaW5nT3BDb2RlcztpZihudWxsIT09bil0cnl7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IG89blt0XTtpZihvPDApV2kofm8pO2Vsc2V7Y29uc3QgaT1vLGE9blsrK3RdLHI9blsrK3RdO1JpKGEsaSkscigyLGVbaV0pfX19ZmluYWxseXtXaSgtMSl9fSkodCxlKTtjb25zdCBzPXQuY29tcG9uZW50cztudWxsIT09cyYmKGZ1bmN0aW9uIGModCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl3ZCh0LGVbbl0pfSkoZSxzKTtjb25zdCBsPXQudmlld1F1ZXJ5O2lmKG51bGwhPT1sJiZOZCgyLGwsbyksIWEpaWYocil7Y29uc3Qgbj10LnZpZXdDaGVja0hvb2tzO251bGwhPT1uJiZLaShlLG4pfWVsc2V7Y29uc3Qgbj10LnZpZXdIb29rcztudWxsIT09biYmSmkoZSxuLDIpLFFpKGUsMil9ITA9PT10LmZpcnN0VXBkYXRlUGFzcyYmKHQuZmlyc3RVcGRhdGVQYXNzPSExKSxhfHwoZVsyXSY9LTczKSwxMDI0JmVbMl0mJihlWzJdJj0tMTAyNSxwaShlWzNdLC0xKSl9ZmluYWxseXtVaSgpfX1mdW5jdGlvbiAkYyh0LGUsbixvKXtjb25zdCBpPWVbMTBdLGE9IXhpKCkscj1zaShlKTt0cnl7YSYmIXImJmkuYmVnaW4mJmkuYmVnaW4oKSxyJiZKYyh0LGUsbyksUWModCxlLG4sbyl9ZmluYWxseXthJiYhciYmaS5lbmQmJmkuZW5kKCl9fWZ1bmN0aW9uIHRkKHQsZSxuLG8saSl7Y29uc3QgYT1HaSgpLHI9MiZvO3RyeXtXaSgtMSksciYmZS5sZW5ndGg+Z28mJnNjKHQsZSxnbyx4aSgpKSxxbyhyPzI6MCxpKSxuKG8saSl9ZmluYWxseXtXaShhKSxxbyhyPzM6MSxpKX19ZnVuY3Rpb24gZWQodCxlLG4pe2lmKENvKGUpKXtjb25zdCBvPWUuZGlyZWN0aXZlRW5kO2ZvcihsZXQgaT1lLmRpcmVjdGl2ZVN0YXJ0O2k8bztpKyspe2NvbnN0IGU9dC5kYXRhW2ldO2UuY29udGVudFF1ZXJpZXMmJmUuY29udGVudFF1ZXJpZXMoMSxuW2ldLGkpfX19ZnVuY3Rpb24gbmQodCxlLG4pe3VpKCkmJigoZnVuY3Rpb24gbyh0LGUsbixpKXtjb25zdCBhPW4uZGlyZWN0aXZlU3RhcnQscj1uLmRpcmVjdGl2ZUVuZDt0LmZpcnN0Q3JlYXRlUGFzc3x8aGEobixlKSxMcyhpLGUpO2NvbnN0IHM9bi5pbml0aWFsSW5wdXRzO2ZvcihsZXQgbz1hO288cjtvKyspe2NvbnN0IGk9dC5kYXRhW29dLHI9eG8oaSk7ciYmKG5nRGV2TW9kZSYmaWEobiwzKSxfZChlLG4saSkpO2NvbnN0IGw9U2EoZSx0LG8sbik7THMobCxlKSxudWxsIT09cyYmdmQoZSxvLWEsbCxpLG4scyksciYmKHJpKG4uaW5kZXgsZSlbOF09bCl9fSkodCxlLG4sb2kobixlKSksMTI4PT0oMTI4Jm4uZmxhZ3MpJiYoZnVuY3Rpb24gaSh0LGUsbil7Y29uc3Qgbz1uLmRpcmVjdGl2ZVN0YXJ0LGk9bi5kaXJlY3RpdmVFbmQsYT1uLmluZGV4LHI9KGZ1bmN0aW9uIHMoKXtyZXR1cm4gbWkubEZyYW1lLmN1cnJlbnREaXJlY3RpdmVJbmRleH0pKCk7dHJ5e1dpKGEpO2ZvcihsZXQgbj1vO248aTtuKyspe2NvbnN0IG89dC5kYXRhW25dLGk9ZVtuXTtBaShuKSxudWxsPT09by5ob3N0QmluZGluZ3MmJjA9PT1vLmhvc3RWYXJzJiZudWxsPT09by5ob3N0QXR0cnN8fGZkKG8saSl9fWZpbmFsbHl7V2koLTEpLEFpKHIpfX0pKHQsZSxuKSl9ZnVuY3Rpb24gb2QodCxlLG49b2kpe2NvbnN0IG89ZS5sb2NhbE5hbWVzO2lmKG51bGwhPT1vKXtsZXQgaT1lLmluZGV4KzE7Zm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKz0yKXtjb25zdCByPW9bYSsxXSxzPS0xPT09cj9uKGUsdCk6dFtyXTt0W2krK109c319fWZ1bmN0aW9uIGlkKHQpe2NvbnN0IGU9dC50VmlldztyZXR1cm4gbnVsbD09PWV8fGUuaW5jb21wbGV0ZUZpcnN0UGFzcz90LnRWaWV3PWFkKDEsbnVsbCx0LnRlbXBsYXRlLHQuZGVjbHMsdC52YXJzLHQuZGlyZWN0aXZlRGVmcyx0LnBpcGVEZWZzLHQudmlld1F1ZXJ5LHQuc2NoZW1hcyx0LmNvbnN0cyk6ZX1mdW5jdGlvbiBhZCh0LGUsbixvLGksYSxyLHMsbCxjKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS50VmlldysrO2NvbnN0IGQ9Z28rbyxwPWQraSxtPShmdW5jdGlvbiB1KHQsZSl7Y29uc3Qgbj1uZ0Rldk1vZGU/bmV3IGtjOltdO2ZvcihsZXQgbz0wO288ZTtvKyspbi5wdXNoKG88dD9udWxsOmFjKTtyZXR1cm4gbn0pKGQscCksZj0iZnVuY3Rpb24iPT10eXBlb2YgYz9jKCk6YyxnPW1bMV09bmdEZXZNb2RlP25ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5LF8sQyxNLHYseCxPLFAsdyxrLFMsRCxFLFIpe3RoaXMudHlwZT10LHRoaXMuYmx1ZXByaW50PWUsdGhpcy50ZW1wbGF0ZT1uLHRoaXMucXVlcmllcz1vLHRoaXMudmlld1F1ZXJ5PWksdGhpcy5kZWNsVE5vZGU9YSx0aGlzLmRhdGE9cix0aGlzLmJpbmRpbmdTdGFydEluZGV4PXMsdGhpcy5leHBhbmRvU3RhcnRJbmRleD1sLHRoaXMuaG9zdEJpbmRpbmdPcENvZGVzPWMsdGhpcy5maXJzdENyZWF0ZVBhc3M9ZCx0aGlzLmZpcnN0VXBkYXRlUGFzcz1wLHRoaXMuc3RhdGljVmlld1F1ZXJpZXM9bSx0aGlzLnN0YXRpY0NvbnRlbnRRdWVyaWVzPXUsdGhpcy5wcmVPcmRlckhvb2tzPWYsdGhpcy5wcmVPcmRlckNoZWNrSG9va3M9Zyx0aGlzLmNvbnRlbnRIb29rcz1oLHRoaXMuY29udGVudENoZWNrSG9va3M9Yix0aGlzLnZpZXdIb29rcz15LHRoaXMudmlld0NoZWNrSG9va3M9Xyx0aGlzLmRlc3Ryb3lIb29rcz1DLHRoaXMuY2xlYW51cD1NLHRoaXMuY29udGVudFF1ZXJpZXM9dix0aGlzLmNvbXBvbmVudHM9eCx0aGlzLmRpcmVjdGl2ZVJlZ2lzdHJ5PU8sdGhpcy5waXBlUmVnaXN0cnk9UCx0aGlzLmZpcnN0Q2hpbGQ9dyx0aGlzLnNjaGVtYXM9ayx0aGlzLmNvbnN0cz1TLHRoaXMuaW5jb21wbGV0ZUZpcnN0UGFzcz1ELHRoaXMuX2RlY2xzPUUsdGhpcy5fdmFycz1SfWdldCB0ZW1wbGF0ZV8oKXtjb25zdCB0PVtdO3JldHVybiBPYyh0aGlzLmZpcnN0Q2hpbGQsdCksdC5qb2luKCIiKX1nZXQgdHlwZV8oKXtyZXR1cm4gaG9bdGhpcy50eXBlXXx8YFRWaWV3VHlwZS4/JHt0aGlzLnR5cGV9P2B9fSh0LG0sbixudWxsLHMsZSwoZnVuY3Rpb24gaCh0KXtyZXR1cm4gdm9pZCAwPT09d2MmJih3Yz1uZXcgUGMpLHdjLmNvbmNhdCh0KX0pKG0pLmZpbGwobnVsbCxkKSxkLHAsbnVsbCwhMCwhMCwhMSwhMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphLCJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLG51bGwsbCxmLCExLG8saSk6e3R5cGU6dCxibHVlcHJpbnQ6bSx0ZW1wbGF0ZTpuLHF1ZXJpZXM6bnVsbCx2aWV3UXVlcnk6cyxkZWNsVE5vZGU6ZSxkYXRhOm0uc2xpY2UoKS5maWxsKG51bGwsZCksYmluZGluZ1N0YXJ0SW5kZXg6ZCxleHBhbmRvU3RhcnRJbmRleDpwLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hlY2tIb29rczpudWxsLGNvbnRlbnRIb29rczpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlUmVnaXN0cnk6ImZ1bmN0aW9uIj09dHlwZW9mIGE/YSgpOmEscGlwZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOmwsY29uc3RzOmYsaW5jb21wbGV0ZUZpcnN0UGFzczohMX07cmV0dXJuIG5nRGV2TW9kZSYmT2JqZWN0LnNlYWwoZyksZ31mdW5jdGlvbiByZCh0LGUsbixvKXtjb25zdCBpPUhkKGUpO251bGw9PT1uPyhuZ0Rldk1vZGUmJk9iamVjdC5mcmVlemUoRmQodCkpLGkucHVzaChvKSk6KGkucHVzaChuKSx0LmZpcnN0Q3JlYXRlUGFzcyYmRmQodCkucHVzaChvLGkubGVuZ3RoLTEpKX1mdW5jdGlvbiBzZCh0LGUsbil7Zm9yKGxldCBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7Y29uc3QgaT10W29dOyhuPW51bGw9PT1uP3t9Om4pLmhhc093blByb3BlcnR5KG8pP25bb10ucHVzaChlLGkpOm5bb109W2UsaV19cmV0dXJuIG59ZnVuY3Rpb24gbGQodCxlLG4sbyxpLGEscixzKXtuZ0Rldk1vZGUmJnBuKGksYWMsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIik7Y29uc3QgbD1vaShlLG4pO2xldCBjLGQ9ZS5pbnB1dHM7aWYoIXMmJm51bGwhPWQmJihjPWRbb10pKVZkKHQsbixjLG8saSksTW8oZSkmJihmdW5jdGlvbiBwKHQsZSl7bmdEZXZNb2RlJiZSbyh0KTtjb25zdCBuPXJpKGUsdCk7MTYmblsyXXx8KG5bMl18PTY0KX0pKG4sZS5pbmRleCksbmdEZXZNb2RlJiYoZnVuY3Rpb24gbSh0LGUsbixvLGkpe2lmKDcmbilmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErPTIpY2QodCxlLG4sb1thKzFdLGkpfSkobixsLGUudHlwZSxjLGkpO2Vsc2UgaWYoMyZlLnR5cGUpe2lmKG89KGZ1bmN0aW9uIHUodCl7cmV0dXJuImNsYXNzIj09PXQ/ImNsYXNzTmFtZSI6ImZvciI9PT10PyJodG1sRm9yIjoiZm9ybWFjdGlvbiI9PT10PyJmb3JtQWN0aW9uIjoiaW5uZXJIdG1sIj09PXQ/ImlubmVySFRNTCI6InJlYWRvbmx5Ij09PXQ/InJlYWRPbmx5IjoidGFiaW5kZXgiPT09dD8idGFiSW5kZXgiOnR9KShvKSxuZ0Rldk1vZGUpe2lmKChmdW5jdGlvbiBmKHQpe2lmKHQudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJvbiIpKXtjb25zdCBlPWBCaW5kaW5nIHRvIGV2ZW50IHByb3BlcnR5ICcke3R9JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke3Quc2xpY2UoMil9KT0uLi5cbklmICcke3R9JyBpcyBhIGRpcmVjdGl2ZSBpbnB1dCwgbWFrZSBzdXJlIHRoZSBkaXJlY3RpdmUgaXMgaW1wb3J0ZWQgYnkgdGhlIGN1cnJlbnQgbW9kdWxlLmA7dGhyb3cgbmV3IEVycm9yKGUpfX0pKG8pLCEoZnVuY3Rpb24gZyh0LGUsbixvKXtyZXR1cm4hKG51bGwhPT10LnNjaGVtYXMmJiEoZGQodCxvLnZhbHVlKXx8biBpbiBlfHxzYShuKSkmJiJ1bmRlZmluZWQiIT10eXBlb2YgTm9kZSYmbnVsbCE9PU5vZGUmJmUgaW5zdGFuY2VvZiBOb2RlKX0pKHQsbCxvLGUpKXJldHVybiB2b2lkIHBkKG8sZSk7bmdEZXZNb2RlLnJlbmRlcmVyU2V0UHJvcGVydHkrK31pPW51bGwhPXI/cihpLGUudmFsdWV8fCIiLG8pOmksJG8oYSk/YS5zZXRQcm9wZXJ0eShsLG8saSk6c2Eobyl8fChsLnNldFByb3BlcnR5P2wuc2V0UHJvcGVydHkobyxpKTpsW29dPWkpfWVsc2UgMTImZS50eXBlJiZuZ0Rldk1vZGUmJiFkZCh0LGUudmFsdWUpJiZwZChvLGUpfWZ1bmN0aW9uIGNkKHQsZSxuLG8saSl7Y29uc3QgYT10WzExXTtvPShmdW5jdGlvbiByKHQpe3JldHVybmBuZy1yZWZsZWN0LSR7dD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5yZXBsYWNlKGVsLCgoLi4udCk9PiItIit0WzFdLnRvTG93ZXJDYXNlKCkpKX0pKHQucmVwbGFjZSgvWyRAXS9nLCJfIikpfWB9KShvKTtjb25zdCBzPShmdW5jdGlvbiBsKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShpKTtpZigzJm4pbnVsbD09aT8kbyhhKT9hLnJlbW92ZUF0dHJpYnV0ZShlLG8pOmUucmVtb3ZlQXR0cmlidXRlKG8pOiRvKGEpP2Euc2V0QXR0cmlidXRlKGUsbyxzKTplLnNldEF0dHJpYnV0ZShvLHMpO2Vsc2V7Y29uc3QgdD0kcyhgYmluZGluZ3M9JHtKU09OLnN0cmluZ2lmeSh7W29dOnN9LG51bGwsMil9YCk7JG8oYSk/YS5zZXRWYWx1ZShlLHQpOmUudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gZGQodCxlKXtjb25zdCBuPXQuc2NoZW1hcztpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3Qgbz1uW3RdO2lmKG89PT1Lc3x8bz09PVhzJiZlJiZlLmluZGV4T2YoIi0iKT4tMSlyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBwZCh0LGUpe2NvbnNvbGUuZXJyb3IoUWUoIjMwMyIsYENhbid0IGJpbmQgdG8gJyR7dH0nIHNpbmNlIGl0IGlzbid0IGEga25vd24gcHJvcGVydHkgb2YgJyR7ZS52YWx1ZX0nLmApKX1mdW5jdGlvbiBtZCh0LGUsbixvKXtuZ0Rldk1vZGUmJkFvKHQpO2xldCBpPSExO2lmKHVpKCkpe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCxlLG4pe25nRGV2TW9kZSYmQW8odCksbmdEZXZNb2RlJiZpYShuLDE1KTtjb25zdCBvPXQuZGlyZWN0aXZlUmVnaXN0cnk7bGV0IGk9bnVsbDtpZihvKWZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSsrKXtjb25zdCByPW9bYV07ZWMobixyLnNlbGVjdG9ycywhMSkmJihpfHwoaT1uZ0Rldk1vZGU/bmV3IFNjOltdKSxDYShoYShuLGUpLHQsci50eXBlKSx4byhyKT8obmdEZXZNb2RlJiYoaWEobiwyLGAiJHtuLnZhbHVlfSIgdGFncyBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgaG9zdHMuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgdGFnIHRvIGFjdGl2YXRlIHRoZSAke0dlKHIudHlwZSl9IGNvbXBvbmVudC5gKSwyJm4uZmxhZ3MmJnNsKG4pKSxnZCh0LG4pLGkudW5zaGlmdChyKSk6aS5wdXNoKHIpKX1yZXR1cm4gaX0pKHQsZSxuKSxyPW51bGw9PT1vP251bGw6eyIiOi0xfTtpZihudWxsIT09YSl7aT0hMCxiZChuLHQuZGF0YS5sZW5ndGgsYS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBlPWFbdF07ZS5wcm92aWRlcnNSZXNvbHZlciYmZS5wcm92aWRlcnNSZXNvbHZlcihlKX1sZXQgbz0hMSxzPSExLGw9S2ModCxlLGEubGVuZ3RoLG51bGwpO25nRGV2TW9kZSYmZG4obCxuLmRpcmVjdGl2ZVN0YXJ0LCJUTm9kZS5kaXJlY3RpdmVTdGFydCBzaG91bGQgcG9pbnQgdG8ganVzdCBhbGxvY2F0ZWQgc3BhY2UiKTtmb3IobGV0IGk9MDtpPGEubGVuZ3RoO2krKyl7Y29uc3QgYz1hW2ldO24ubWVyZ2VkQXR0cnM9bGEobi5tZXJnZWRBdHRycyxjLmhvc3RBdHRycykseWQodCxuLGUsbCxjKSxoZChsLGMsciksbnVsbCE9PWMuY29udGVudFF1ZXJpZXMmJihuLmZsYWdzfD04KSxudWxsPT09Yy5ob3N0QmluZGluZ3MmJm51bGw9PT1jLmhvc3RBdHRycyYmMD09PWMuaG9zdFZhcnN8fChuLmZsYWdzfD0xMjgpO2NvbnN0IGQ9Yy50eXBlLnByb3RvdHlwZTshbyYmKGQubmdPbkNoYW5nZXN8fGQubmdPbkluaXR8fGQubmdEb0NoZWNrKSYmKCh0LnByZU9yZGVySG9va3N8fCh0LnByZU9yZGVySG9va3M9W10pKS5wdXNoKG4uaW5kZXgpLG89ITApLHN8fCFkLm5nT25DaGFuZ2VzJiYhZC5uZ0RvQ2hlY2t8fCgodC5wcmVPcmRlckNoZWNrSG9va3N8fCh0LnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2gobi5pbmRleCkscz0hMCksbCsrfSEoZnVuY3Rpb24gcih0LGUpe25nRGV2TW9kZSYmQW8odCk7Y29uc3Qgbj1lLmRpcmVjdGl2ZVN0YXJ0LG89ZS5kaXJlY3RpdmVFbmQsaT10LmRhdGEsYT1lLmF0dHJzLHI9bmdEZXZNb2RlP25ldyBSYzpbXTtsZXQgcz1udWxsLGw9bnVsbDtmb3IobGV0IHQ9bjt0PG87dCsrKXtjb25zdCBuPWlbdF0sbz1uLmlucHV0cyxjPW51bGw9PT1hfHxLbChlKT9udWxsOnhkKG8sYSk7ci5wdXNoKGMpLHM9c2Qobyx0LHMpLGw9c2Qobi5vdXRwdXRzLHQsbCl9bnVsbCE9PXMmJihzLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYoZS5mbGFnc3w9MTYpLHMuaGFzT3duUHJvcGVydHkoInN0eWxlIikmJihlLmZsYWdzfD0zMikpLGUuaW5pdGlhbElucHV0cz1yLGUuaW5wdXRzPXMsZS5vdXRwdXRzPWx9KSh0LG4pfXImJihmdW5jdGlvbiBzKHQsZSxuKXtpZihlKXtjb25zdCBvPXQubG9jYWxOYW1lcz1uZ0Rldk1vZGU/bmV3IEVjOltdO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCs9Mil7Y29uc3QgaT1uW2VbdCsxXV07aWYobnVsbD09aSl0aHJvdyBuZXcgS2UoIjMwMSIsYEV4cG9ydCBvZiBuYW1lICcke2VbdCsxXX0nIG5vdCBmb3VuZCFgKTtvLnB1c2goZVt0XSxpKX19fSkobixvLHIpfXJldHVybiBuLm1lcmdlZEF0dHJzPWxhKG4ubWVyZ2VkQXR0cnMsbi5hdHRycyksaX1mdW5jdGlvbiB1ZCh0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZBbyh0KTtjb25zdCByPWEuaG9zdEJpbmRpbmdzO2lmKHIpe2xldCBuPXQuaG9zdEJpbmRpbmdPcENvZGVzO251bGw9PT1uJiYobj10Lmhvc3RCaW5kaW5nT3BDb2Rlcz1bXSk7Y29uc3QgYT1+ZS5pbmRleDsoZnVuY3Rpb24gcyh0KXtsZXQgZT10Lmxlbmd0aDtmb3IoO2U+MDspe2NvbnN0IG49dFstLWVdO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmbjwwKXJldHVybiBufXJldHVybiAwfSkobikhPWEmJm4ucHVzaChhKSxuLnB1c2gobyxpLHIpfX1mdW5jdGlvbiBmZCh0LGUpe251bGwhPT10Lmhvc3RCaW5kaW5ncyYmdC5ob3N0QmluZGluZ3MoMSxlKX1mdW5jdGlvbiBnZCh0LGUpe25nRGV2TW9kZSYmQW8odCksZS5mbGFnc3w9MiwodC5jb21wb25lbnRzfHwodC5jb21wb25lbnRzPW5nRGV2TW9kZT9uZXcgRGM6W10pKS5wdXNoKGUuaW5kZXgpfWZ1bmN0aW9uIGhkKHQsZSxuKXtpZihuKXtpZihlLmV4cG9ydEFzKWZvcihsZXQgbz0wO288ZS5leHBvcnRBcy5sZW5ndGg7bysrKW5bZS5leHBvcnRBc1tvXV09dDt4byhlKSYmKG5bIiJdPXQpfX1mdW5jdGlvbiBiZCh0LGUsbil7bmdEZXZNb2RlJiZjbihuLHQuZGlyZWN0aXZlRW5kLXQuZGlyZWN0aXZlU3RhcnQsIlJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgZGlyZWN0aXZlcyIpLHQuZmxhZ3N8PTEsdC5kaXJlY3RpdmVTdGFydD1lLHQuZGlyZWN0aXZlRW5kPWUrbix0LnByb3ZpZGVySW5kZXhlcz1lfWZ1bmN0aW9uIHlkKHQsZSxuLG8saSl7bmdEZXZNb2RlJiZnbihvLGdvLCJNdXN0IGJlIGluIEV4cGFuZG8gc2VjdGlvbiIpLHQuZGF0YVtvXT1pO2NvbnN0IGE9aS5mYWN0b3J5fHwoaS5mYWN0b3J5PUZvKGkudHlwZSwhMCkpLHI9bmV3IG5hKGEseG8oaSksbnVsbCk7dC5ibHVlcHJpbnRbb109cixuW29dPXIsdWQodCxlLDAsbyxLYyh0LG4saS5ob3N0VmFycyxhYyksaSl9ZnVuY3Rpb24gX2QodCxlLG4pe2NvbnN0IG89b2koZSx0KSxpPWlkKG4pLGE9dFsxMF0scj1EZCh0LHFjKHQsaSxudWxsLG4ub25QdXNoPzY0OjE2LG8sZSxhLGEuY3JlYXRlUmVuZGVyZXIobyxuKSxudWxsLG51bGwpKTt0W2UuaW5kZXhdPXJ9ZnVuY3Rpb24gQ2QodCxlLG4sbyxpLGEpe25nRGV2TW9kZSYmKHBuKG8sYWMsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksKGZ1bmN0aW9uIHIodCl7aWYodC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoIm9uIikpe2NvbnN0IGU9YEJpbmRpbmcgdG8gZXZlbnQgYXR0cmlidXRlICcke3R9JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke3Quc2xpY2UoMil9KT0uLi5gO3Rocm93IG5ldyBFcnJvcihlKX19KShuKSxpYSh0LDIsYEF0dGVtcHRlZCB0byBzZXQgYXR0cmlidXRlIFxgJHtufVxgIG9uIGEgY29udGFpbmVyIG5vZGUuIEhvc3QgYmluZGluZ3MgYXJlIG5vdCB2YWxpZCBvbiBuZy1jb250YWluZXIgb3IgbmctdGVtcGxhdGUuYCkpO2NvbnN0IHM9b2kodCxlKTtNZChlWzExXSxzLGEsdC52YWx1ZSxuLG8saSl9ZnVuY3Rpb24gTWQodCxlLG4sbyxpLGEscil7aWYobnVsbD09YSluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZUF0dHJpYnV0ZSsrLCRvKHQpP3QucmVtb3ZlQXR0cmlidXRlKGUsaSxuKTplLnJlbW92ZUF0dHJpYnV0ZShpKTtlbHNle25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKys7Y29uc3Qgcz1udWxsPT1yPyRlKGEpOnIoYSxvfHwiIixpKTskbyh0KT90LnNldEF0dHJpYnV0ZShlLGkscyxuKTpuP2Uuc2V0QXR0cmlidXRlTlMobixpLHMpOmUuc2V0QXR0cmlidXRlKGkscyl9fWZ1bmN0aW9uIHZkKHQsZSxuLG8saSxhKXtjb25zdCByPWFbZV07aWYobnVsbCE9PXIpe2NvbnN0IGU9by5zZXRJbnB1dDtmb3IobGV0IGE9MDthPHIubGVuZ3RoOyl7Y29uc3Qgcz1yW2ErK10sbD1yW2ErK10sYz1yW2ErK107bnVsbCE9PWU/by5zZXRJbnB1dChuLGMscyxsKTpuW2xdPWMsbmdEZXZNb2RlJiZjZCh0LG9pKGksdCksaS50eXBlLGwsYyl9fX1mdW5jdGlvbiB4ZCh0LGUpe2xldCBuPW51bGwsbz0wO2Zvcig7bzxlLmxlbmd0aDspe2NvbnN0IGk9ZVtvXTtpZigwIT09aSlpZig1IT09aSl7aWYoIm51bWJlciI9PXR5cGVvZiBpKWJyZWFrO3QuaGFzT3duUHJvcGVydHkoaSkmJihudWxsPT09biYmKG49W10pLG4ucHVzaChpLHRbaV0sZVtvKzFdKSksbys9Mn1lbHNlIG8rPTI7ZWxzZSBvKz00fXJldHVybiBufWNvbnN0IE9kPSgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmVW4oKSYmdGwoIkxDb250YWluZXIiKTtmdW5jdGlvbiBQZCh0LGUsbixvKXtuZ0Rldk1vZGUmJlJvKGUpLG5nRGV2TW9kZSYmISRvKGVbMTFdKSYmeW4obik7Y29uc3QgaT1uZXcobmdEZXZNb2RlP09kOkFycmF5KSh0LCEwLCExLGUsbnVsbCwwLG8sbixudWxsLG51bGwpO3JldHVybiBuZ0Rldk1vZGUmJmxuKGkubGVuZ3RoLGJvLCJTaG91bGQgYWxsb2NhdGUgY29ycmVjdCBudW1iZXIgb2Ygc2xvdHMgZm9yIExDb250YWluZXIgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGEodCl7aGModCxuZXcgR2ModCkpfSkoaSksaX1mdW5jdGlvbiB3ZCh0LGUpe25nRGV2TW9kZSYmbG4oc2kodCksITEsIlNob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUiKTtjb25zdCBuPXJpKGUsdCk7aWYobGkobikpe2NvbnN0IHQ9blsxXTs4MCZuWzJdP1FjKHQsbix0LnRlbXBsYXRlLG5bOF0pOm5bNV0+MCYma2Qobil9fWZ1bmN0aW9uIGtkKHQpe2ZvcihsZXQgZT1mbCh0KTtudWxsIT09ZTtlPWdsKGUpKWZvcihsZXQgdD1ibzt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKDEwMjQmblsyXSl7Y29uc3QgdD1uWzFdO25nRGV2TW9kZSYmaG4odCwiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxRYyh0LG4sdC50ZW1wbGF0ZSxuWzhdKX1lbHNlIG5bNV0+MCYma2Qobil9Y29uc3QgZT10WzFdLmNvbXBvbmVudHM7aWYobnVsbCE9PWUpZm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IG89cmkoZVtuXSx0KTtsaShvKSYmb1s1XT4wJiZrZChvKX19ZnVuY3Rpb24gU2QodCxlKXtuZ0Rldk1vZGUmJmxuKHNpKHQpLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKTtjb25zdCBuPXJpKGUsdCksbz1uWzFdOyEoZnVuY3Rpb24gaSh0LGUpe2ZvcihsZXQgbj1lLmxlbmd0aDtuPHQuYmx1ZXByaW50Lmxlbmd0aDtuKyspZS5wdXNoKHQuYmx1ZXByaW50W25dKX0pKG8sbiksSmMobyxuLG5bOF0pfWZ1bmN0aW9uIERkKHQsZSl7cmV0dXJuIHRbMTNdP3RbMTRdWzRdPWU6dFsxM109ZSx0WzE0XT1lLGV9ZnVuY3Rpb24gRWQodCl7Zm9yKDt0Oyl7dFsyXXw9NjQ7Y29uc3QgZT1tbCh0KTtpZigwIT0oNTEyJnRbMl0pJiYhZSlyZXR1cm4gdDt0PWV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gUmQodCl7Zm9yKGxldCBlPTA7ZTx0LmNvbXBvbmVudHMubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LmNvbXBvbmVudHNbZV0sbz1WcyhuKSxpPW9bMV07JGMoaSxvLGkudGVtcGxhdGUsbil9fWZ1bmN0aW9uIEFkKHQsZSxuKXtjb25zdCBvPWVbMTBdO28uYmVnaW4mJm8uYmVnaW4oKTt0cnl7UWModCxlLHQudGVtcGxhdGUsbil9Y2F0Y2godCl7dGhyb3cgQmQoZSx0KSx0fWZpbmFsbHl7by5lbmQmJm8uZW5kKCl9fWZ1bmN0aW9uIFRkKHQpe1JkKHRbOF0pfWZ1bmN0aW9uIE5kKHQsZSxuKXtuZ0Rldk1vZGUmJmhuKGUsIlZpZXcgcXVlcmllcyBmdW5jdGlvbiB0byBleGVjdXRlIG11c3QgYmUgZGVmaW5lZC4iKSx6aSgwKSxlKHQsbil9ZnVuY3Rpb24gemQodCxlLG4sbywuLi5pKXtpZihudWxsPT09dFtvXSYmKG51bGw9PWUuaW5wdXRzfHwhZS5pbnB1dHNbbl0pKXsoZS5wcm9wZXJ0eUJpbmRpbmdzfHwoZS5wcm9wZXJ0eUJpbmRpbmdzPVtdKSkucHVzaChvKTtsZXQgYT1uO2kubGVuZ3RoPjAmJihhKz1hbCtpLmpvaW4oYWwpKSx0W29dPWF9fWNvbnN0IElkPVdjO2Z1bmN0aW9uIEhkKHQpe3JldHVybiB0WzddfHwodFs3XT1uZ0Rldk1vZGU/bmV3IEFjOltdKX1mdW5jdGlvbiBGZCh0KXtyZXR1cm4gdC5jbGVhbnVwfHwodC5jbGVhbnVwPW5nRGV2TW9kZT9uZXcgVGM6W10pfWZ1bmN0aW9uIExkKHQsZSxuKXtyZXR1cm4obnVsbD09PXR8fHhvKHQpKSYmKG49KGZ1bmN0aW9uIG8odCl7Zm9yKDtBcnJheS5pc0FycmF5KHQpOyl7aWYoIm9iamVjdCI9PXR5cGVvZiB0WzFdKXJldHVybiB0O3Q9dFswXX1yZXR1cm4gbnVsbH0pKG5bZS5pbmRleF0pKSxuWzExXX1mdW5jdGlvbiBCZCh0LGUpe2NvbnN0IG49dFs5XSxvPW4/bi5nZXQoWnMsbnVsbCk6bnVsbDtvJiZvLmhhbmRsZUVycm9yKGUpfWZ1bmN0aW9uIFZkKHQsZSxuLG8saSl7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDspe2NvbnN0IHI9blthKytdLHM9blthKytdLGw9ZVtyXTtuZ0Rldk1vZGUmJl9uKGUscik7Y29uc3QgYz10LmRhdGFbcl07bnVsbCE9PWMuc2V0SW5wdXQ/Yy5zZXRJbnB1dChsLGksbyxzKTpsW3NdPWl9fWZ1bmN0aW9uIGpkKHQsZSxuKXtuZ0Rldk1vZGUmJnNuKG4sIlZhbHVlIHNob3VsZCBiZSBhIHN0cmluZyIpLG5nRGV2TW9kZSYmcG4obixhYywidmFsdWUgc2hvdWxkIG5vdCBiZSBOT19DSEFOR0UiKSxuZ0Rldk1vZGUmJl9uKHQsZSk7Y29uc3Qgbz1uaShlLHQpO25nRGV2TW9kZSYmaG4obywibmF0aXZlIGVsZW1lbnQgc2hvdWxkIGV4aXN0IiksX2wodFsxMV0sbyxuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gVWQodCxlLG4pe25nRGV2TW9kZSYmQW8oZ2koKSwiRXhwZWN0aW5nIHRvIGJlIGNhbGxlZCBpbiBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtsZXQgbz1uP3Quc3R5bGVzOm51bGwsaT1uP3QuY2xhc3NlczpudWxsLGE9MDtpZihudWxsIT09ZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdOyJudW1iZXIiPT10eXBlb2Ygbj9hPW46MT09YT9pPVdlKGksbik6Mj09YSYmKG89V2UobyxuKyI6ICIrZVsrK3RdKyI7IikpfW4/dC5zdHlsZXM9bzp0LnN0eWxlc1dpdGhvdXRIb3N0PW8sbj90LmNsYXNzZXM9aTp0LmNsYXNzZXNXaXRob3V0SG9zdD1pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEdkPW5ldyBHYSgiSU5KRUNUT1IiLC0xKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgV2R7Z2V0KHQsZT1ncil7aWYoZT09PWdyKXtjb25zdCBlPW5ldyBFcnJvcihgTnVsbEluamVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAke0dlKHQpfSFgKTt0aHJvdyBlLm5hbWU9Ik51bGxJbmplY3RvckVycm9yIixlfXJldHVybiBlfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgWWQ9bmV3IEdhKCJTZXQgSW5qZWN0b3Igc2NvcGUuIikscWQ9e30sWmQ9e307Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBYZDtmdW5jdGlvbiBLZCgpe3JldHVybiB2b2lkIDA9PT1YZCYmKFhkPW5ldyBXZCksWGR9ZnVuY3Rpb24gSmQodCxlPW51bGwsbj1udWxsLG8pe3JldHVybiBuZXcgUWQodCxuLGV8fEtkKCksbyl9Y2xhc3MgUWR7Y29uc3RydWN0b3IodCxlLG4sbz1udWxsKXt0aGlzLnBhcmVudD1uLHRoaXMucmVjb3Jkcz1uZXcgTWFwLHRoaXMuaW5qZWN0b3JEZWZUeXBlcz1uZXcgU2V0LHRoaXMub25EZXN0cm95PW5ldyBTZXQsdGhpcy5fZGVzdHJveWVkPSExO2NvbnN0IGk9W107ZSYmZXIoZSwobj0+dGhpcy5wcm9jZXNzUHJvdmlkZXIobix0LGUpKSksZXIoW3RdLCh0PT50aGlzLnByb2Nlc3NJbmplY3RvclR5cGUodCxbXSxpKSkpLHRoaXMucmVjb3Jkcy5zZXQoR2QsZXAodm9pZCAwLHRoaXMpKTtjb25zdCBhPXRoaXMucmVjb3Jkcy5nZXQoWWQpO3RoaXMuc2NvcGU9bnVsbCE9YT9hLnZhbHVlOm51bGwsdGhpcy5zb3VyY2U9b3x8KCJvYmplY3QiPT10eXBlb2YgdD9udWxsOkdlKHQpKX1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIHRoaXMuX2Rlc3Ryb3llZH1kZXN0cm95KCl7dGhpcy5hc3NlcnROb3REZXN0cm95ZWQoKSx0aGlzLl9kZXN0cm95ZWQ9ITA7dHJ5e3RoaXMub25EZXN0cm95LmZvckVhY2goKHQ9PnQubmdPbkRlc3Ryb3koKSkpfWZpbmFsbHl7dGhpcy5yZWNvcmRzLmNsZWFyKCksdGhpcy5vbkRlc3Ryb3kuY2xlYXIoKSx0aGlzLmluamVjdG9yRGVmVHlwZXMuY2xlYXIoKX19Z2V0KHQsZT1ncixuPUVuLkRlZmF1bHQpe3RoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCk7Y29uc3Qgbz1Dcih0aGlzKSxpPUFuKHZvaWQgMCk7dHJ5e2lmKCEobiZFbi5Ta2lwU2VsZikpe2xldCBlPXRoaXMucmVjb3Jkcy5nZXQodCk7aWYodm9pZCAwPT09ZSl7Y29uc3Qgbj0oZnVuY3Rpb24gbyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0JiZ0IGluc3RhbmNlb2YgR2F9KSh0KSYmeG4odCk7ZT1uJiZ0aGlzLmluamVjdGFibGVEZWZJblNjb3BlKG4pP2VwKCRkKHQpLHFkKTpudWxsLHRoaXMucmVjb3Jkcy5zZXQodCxlKX1pZihudWxsIT1lKXJldHVybiB0aGlzLmh5ZHJhdGUodCxlKX1yZXR1cm4obiZFbi5TZWxmP0tkKCk6dGhpcy5wYXJlbnQpLmdldCh0LGU9biZFbi5PcHRpb25hbCYmZT09PWdyP251bGw6ZSl9Y2F0Y2goZSl7aWYoIk51bGxJbmplY3RvckVycm9yIj09PWUubmFtZSl7aWYoKGUubmdUZW1wVG9rZW5QYXRoPWUubmdUZW1wVG9rZW5QYXRofHxbXSkudW5zaGlmdChHZSh0KSksbyl0aHJvdyBlO3JldHVybihmdW5jdGlvbiBuKHQsZSxvLGkpe2NvbnN0IGE9dC5uZ1RlbXBUb2tlblBhdGg7dGhyb3cgZVticl0mJmEudW5zaGlmdChlW2JyXSksdC5tZXNzYWdlPShmdW5jdGlvbiByKHQsZSxuLG89bnVsbCl7dD10JiYiXG4iPT09dC5jaGFyQXQoMCkmJiLJtSI9PXQuY2hhckF0KDEpP3Quc3Vic3RyKDIpOnQ7bGV0IGk9R2UoZSk7aWYoQXJyYXkuaXNBcnJheShlKSlpPWUubWFwKEdlKS5qb2luKCIgLT4gIik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe2xldCB0PVtdO2ZvcihsZXQgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe2xldCBvPWVbbl07dC5wdXNoKG4rIjoiKygic3RyaW5nIj09dHlwZW9mIG8/SlNPTi5zdHJpbmdpZnkobyk6R2UobykpKX1pPWB7JHt0LmpvaW4oIiwgIil9fWB9cmV0dXJuYCR7bn0ke28/IigiK28rIikiOiIifVske2l9XTogJHt0LnJlcGxhY2UoaHIsIlxuICAiKX1gfSkoIlxuIit0Lm1lc3NhZ2UsYSxvLGkpLHQubmdUb2tlblBhdGg9YSx0Lm5nVGVtcFRva2VuUGF0aD1udWxsLHR9KShlLHQsIlIzSW5qZWN0b3JFcnJvciIsdGhpcy5zb3VyY2UpfXRocm93IGV9ZmluYWxseXtBbihpKSxDcihvKX19X3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCl7dGhpcy5pbmplY3RvckRlZlR5cGVzLmZvckVhY2goKHQ9PnRoaXMuZ2V0KHQpKSl9dG9TdHJpbmcoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLnJlY29yZHMuZm9yRWFjaCgoKGUsbik9PnQucHVzaChHZShuKSkpKSxgUjNJbmplY3Rvclske3Quam9pbigiLCAiKX1dYH1hc3NlcnROb3REZXN0cm95ZWQoKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJJbmplY3RvciBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4iKX1wcm9jZXNzSW5qZWN0b3JUeXBlKHQsZSxuKXtpZighKHQ9WmUodCkpKXJldHVybiExO2xldCBvPVBuKHQpO2NvbnN0IGk9bnVsbD09byYmdC5uZ01vZHVsZXx8dm9pZCAwLGE9dm9pZCAwPT09aT90Omk7bmdEZXZNb2RlJiYtMSE9PWUuaW5kZXhPZihhKSYmZW4oR2UoYSksZS5tYXAoR2UpKTtjb25zdCByPS0xIT09bi5pbmRleE9mKGEpO2lmKHZvaWQgMCE9PWkmJihvPVBuKGkpKSxudWxsPT1vKXJldHVybiExO2lmKG51bGwhPW8uaW1wb3J0cyYmIXIpe2xldCB0O25nRGV2TW9kZSYmZS5wdXNoKGEpLG4ucHVzaChhKTt0cnl7ZXIoby5pbXBvcnRzLChvPT57dGhpcy5wcm9jZXNzSW5qZWN0b3JUeXBlKG8sZSxuKSYmKHZvaWQgMD09PXQmJih0PVtdKSx0LnB1c2gobykpfSkpfWZpbmFsbHl7bmdEZXZNb2RlJiZlLnBvcCgpfWlmKHZvaWQgMCE9PXQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0e25nTW9kdWxlOm4scHJvdmlkZXJzOm99PXRbZV07ZXIobywodD0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodCxuLG98fFduKSkpfX10aGlzLmluamVjdG9yRGVmVHlwZXMuYWRkKGEpO2NvbnN0IHM9Rm8oYSl8fCgoKT0+bmV3IGEpO3RoaXMucmVjb3Jkcy5zZXQoYSxlcChzLHFkKSk7Y29uc3QgbD1vLnByb3ZpZGVycztpZihudWxsIT1sJiYhcil7Y29uc3QgZT10O2VyKGwsKHQ9PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKHQsZSxsKSkpfXJldHVybiB2b2lkIDAhPT1pJiZ2b2lkIDAhPT10LnByb3ZpZGVyc31wcm9jZXNzUHJvdmlkZXIodCxlLG4pe2xldCBvPW9wKHQ9WmUodCkpP3Q6WmUodCYmdC5wcm92aWRlKTtjb25zdCBpPShmdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gbnAodCk/ZXAodm9pZCAwLHQudXNlVmFsdWUpOmVwKHRwKHQsZSxuKSxxZCl9KSh0LGUsbik7aWYob3AodCl8fCEwIT09dC5tdWx0aSl7Y29uc3QgdD10aGlzLnJlY29yZHMuZ2V0KG8pO25nRGV2TW9kZSYmdCYmdm9pZCAwIT09dC5tdWx0aSYmbm4oKX1lbHNle2xldCBlPXRoaXMucmVjb3Jkcy5nZXQobyk7ZT9uZ0Rldk1vZGUmJnZvaWQgMD09PWUubXVsdGkmJm5uKCk6KGU9ZXAodm9pZCAwLHFkLCEwKSxlLmZhY3Rvcnk9KCk9PlByKGUubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQobyxlKSksbz10LGUubXVsdGkucHVzaCh0KX10aGlzLnJlY29yZHMuc2V0KG8saSl9aHlkcmF0ZSh0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmUudmFsdWU9PT1aZD9lbihHZSh0KSk6ZS52YWx1ZT09PXFkJiYoZS52YWx1ZT1aZCxlLnZhbHVlPWUuZmFjdG9yeSgpKSwib2JqZWN0Ij09dHlwZW9mIGUudmFsdWUmJmUudmFsdWUmJihmdW5jdGlvbiBuKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5uZ09uRGVzdHJveX0pKGUudmFsdWUpJiZ0aGlzLm9uRGVzdHJveS5hZGQoZS52YWx1ZSksZS52YWx1ZX1pbmplY3RhYmxlRGVmSW5TY29wZSh0KXtpZighdC5wcm92aWRlZEluKXJldHVybiExO2NvbnN0IGU9WmUodC5wcm92aWRlZEluKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/ImFueSI9PT1lfHxlPT09dGhpcy5zY29wZTp0aGlzLmluamVjdG9yRGVmVHlwZXMuaGFzKGUpfX1mdW5jdGlvbiAkZCh0KXtjb25zdCBlPXhuKHQpLG49bnVsbCE9PWU/ZS5mYWN0b3J5OkZvKHQpO2lmKG51bGwhPT1uKXJldHVybiBuO2lmKHQgaW5zdGFuY2VvZiBHYSl0aHJvdyBuZXcgRXJyb3IoYFRva2VuICR7R2UodCl9IGlzIG1pc3NpbmcgYSDJtXByb3YgZGVmaW5pdGlvbi5gKTtpZih0IGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPjApe2NvbnN0IG49aXIoZSwiPyIpO3Rocm93IG5ldyBFcnJvcihgQ2FuJ3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJHtHZSh0KX06ICgke24uam9pbigiLCAiKX0pLmApfWNvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10JiYodFt3bl18fHRbU25dKTtpZihlKXtjb25zdCBuPShmdW5jdGlvbiBuKHQpe2lmKHQuaGFzT3duUHJvcGVydHkoIm5hbWUiKSlyZXR1cm4gdC5uYW1lO2NvbnN0IGU9KCIiK3QpLm1hdGNoKC9eZnVuY3Rpb25ccyooW15ccyhdKykvKTtyZXR1cm4gbnVsbD09PWU/IiI6ZVsxXX0pKHQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtufSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtufSIgY2xhc3MuYCksZX1yZXR1cm4gbnVsbH0pKHQpO3JldHVybiBudWxsIT09bj8oKT0+bi5mYWN0b3J5KHQpOigpPT5uZXcgdH0pKHQpO3Rocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX1mdW5jdGlvbiB0cCh0LGUsbil7bGV0IG87aWYob3AodCkpe2NvbnN0IGU9WmUodCk7cmV0dXJuIEZvKGUpfHwkZChlKX1pZihucCh0KSlvPSgpPT5aZSh0LnVzZVZhbHVlKTtlbHNlIGlmKChmdW5jdGlvbiBpKHQpe3JldHVybiEoIXR8fCF0LnVzZUZhY3RvcnkpfSkodCkpbz0oKT0+dC51c2VGYWN0b3J5KC4uLlByKHQuZGVwc3x8W10pKTtlbHNlIGlmKChmdW5jdGlvbiBhKHQpe3JldHVybiEoIXR8fCF0LnVzZUV4aXN0aW5nKX0pKHQpKW89KCk9PnZyKFplKHQudXNlRXhpc3RpbmcpKTtlbHNle2NvbnN0IGk9WmUodCYmKHQudXNlQ2xhc3N8fHQucHJvdmlkZSkpO2lmKG5nRGV2TW9kZSYmIWkmJihmdW5jdGlvbiByKHQsZSxuKXtsZXQgbz0iIjt0aHJvdyB0JiZlJiYobz1gIC0gb25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogWyR7ZS5tYXAoKHQ9PnQ9PW4/Ij8iK24rIj8iOiIuLi4iKSkuam9pbigiLCAiKX1dYCksbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyIGZvciB0aGUgTmdNb2R1bGUgJyR7R2UodCl9J2Arbyl9KShlLG4sdCksIShmdW5jdGlvbiBzKHQpe3JldHVybiEhdC5kZXBzfSkodCkpcmV0dXJuIEZvKGkpfHwkZChpKTtvPSgpPT5uZXcgaSguLi5Qcih0LmRlcHMpKX1yZXR1cm4gb31mdW5jdGlvbiBlcCh0LGUsbj0hMSl7cmV0dXJue2ZhY3Rvcnk6dCx2YWx1ZTplLG11bHRpOm4/W106dm9pZCAwfX1mdW5jdGlvbiBucCh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmeXIgaW4gdH1mdW5jdGlvbiBvcCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1jb25zdCBpcD1mdW5jdGlvbiBhcCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlPW51bGwsbj1udWxsLGkpe2NvbnN0IGE9SmQodCxlLG4saSk7cmV0dXJuIGEuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksYX0pKHtuYW1lOm59LGUsdCxuKX07Y2xhc3MgcnB7c3RhdGljIGNyZWF0ZSh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP2lwKHQsZSwiIik6aXAodC5wcm92aWRlcnMsdC5wYXJlbnQsdC5uYW1lfHwiIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gc3AodCl7YnAodCk7Y29uc3QgZT1Jcyh0KTtyZXR1cm4gbnVsbD09PWU/bnVsbDoodm9pZCAwPT09ZS5jb21wb25lbnQmJihlLmNvbXBvbmVudD0oZnVuY3Rpb24gbih0LGUpe2NvbnN0IG49ZVsxXS5kYXRhW3RdO3JldHVybiAyJm4uZmxhZ3M/ZVtuLmRpcmVjdGl2ZVN0YXJ0XTpudWxsfSkoZS5ub2RlSW5kZXgsZS5sVmlldykpLGUuY29tcG9uZW50KX1mdW5jdGlvbiBscCh0KXticCh0KTtjb25zdCBlPUlzKHQpO3JldHVybiBudWxsPT09ZT9udWxsOmUubFZpZXdbOF19ZnVuY3Rpb24gY3AodCl7Y29uc3QgZT1Jcyh0KTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtsZXQgbixvPWUubFZpZXc7Zm9yKG5nRGV2TW9kZSYmUm8obyk7Mj09PW9bMV0udHlwZSYmKG49bWwobykpOylvPW47cmV0dXJuIDUxMiZvWzJdP251bGw6b1s4XX1mdW5jdGlvbiBkcCh0KXtyZXR1cm5bLi4udWwodCkuY29tcG9uZW50c119ZnVuY3Rpb24gcHAodCl7Y29uc3QgZT1Jcyh0KTtyZXR1cm4gbnVsbD09PWU/cnAuTlVMTDpuZXcgUmEoZS5sVmlld1sxXS5kYXRhW2Uubm9kZUluZGV4XSxlLmxWaWV3KX1mdW5jdGlvbiBtcCh0KXtpZih0IGluc3RhbmNlb2YgVGV4dClyZXR1cm5bXTtjb25zdCBlPUlzKHQpO2lmKG51bGw9PT1lKXJldHVybltdO2NvbnN0IG49ZS5sVmlldyxvPW5bMV0saT1lLm5vZGVJbmRleDtyZXR1cm4obnVsbD09bz92b2lkIDA6by5kYXRhW2ldKT8odm9pZCAwPT09ZS5kaXJlY3RpdmVzJiYoZS5kaXJlY3RpdmVzPVdzKGksbiwhMSkpLG51bGw9PT1lLmRpcmVjdGl2ZXM/W106Wy4uLmUuZGlyZWN0aXZlc10pOltdfWZ1bmN0aW9uIHVwKHQpe2NvbnN0e2NvbnN0cnVjdG9yOmV9PXQ7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB0aGUgaW5zdGFuY2UgY29uc3RydWN0b3IiKTtjb25zdCBuPXBvKGUpO2lmKG4pcmV0dXJue2lucHV0czpuLmlucHV0cyxvdXRwdXRzOm4ub3V0cHV0cyxlbmNhcHN1bGF0aW9uOm4uZW5jYXBzdWxhdGlvbixjaGFuZ2VEZXRlY3Rpb246bi5vblB1c2g/em4uT25QdXNoOnpuLkRlZmF1bHR9O2NvbnN0IG89bW8oZSk7cmV0dXJuIG8/e2lucHV0czpvLmlucHV0cyxvdXRwdXRzOm8ub3V0cHV0c306bnVsbH1mdW5jdGlvbiBmcCh0KXtyZXR1cm4gSXModCkubmF0aXZlfWZ1bmN0aW9uIGdwKHQpe2JwKHQpO2NvbnN0IGU9SXModCk7aWYobnVsbD09PWUpcmV0dXJuW107Y29uc3Qgbj1lLmxWaWV3LG89bls3XSxpPW5bMV0uY2xlYW51cCxhPVtdO2lmKGkmJm8pZm9yKGxldCBlPTA7ZTxpLmxlbmd0aDspe2NvbnN0IHI9aVtlKytdLHM9aVtlKytdO2lmKCJzdHJpbmciPT10eXBlb2Ygcil7Y29uc3QgbD1yLGM9ZWkobltzXSksZD1vW2lbZSsrXV0scD1pW2UrK10sbT0iYm9vbGVhbiI9PXR5cGVvZiBwfHxwPj0wPyJkb20iOiJvdXRwdXQiLHU9ImJvb2xlYW4iPT10eXBlb2YgcCYmcDt0PT1jJiZhLnB1c2goe2VsZW1lbnQ6dCxuYW1lOmwsY2FsbGJhY2s6ZCx1c2VDYXB0dXJlOnUsdHlwZTptfSl9fXJldHVybiBhLnNvcnQoaHApLGF9ZnVuY3Rpb24gaHAodCxlKXtyZXR1cm4gdC5uYW1lPT1lLm5hbWU/MDp0Lm5hbWU8ZS5uYW1lPy0xOjF9ZnVuY3Rpb24gYnAodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50JiYhKHQgaW5zdGFuY2VvZiBFbGVtZW50KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBpbnN0YW5jZSBvZiBET00gRWxlbWVudCIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB5cCh0KXsoZnVuY3Rpb24gZSh0KXtuZ0Rldk1vZGUmJmhuKHQsImNvbXBvbmVudCIpO2NvbnN0IGU9RWQoRnModCkpO25nRGV2TW9kZSYmaG4oZVs4XSwicm9vdENvbnRleHQgc2hvdWxkIGJlIGRlZmluZWQiKSwoZnVuY3Rpb24gbih0LGUpe2lmKDA9PT10LmZsYWdzJiZ0LmNsZWFuPT1XYyl7bGV0IG47dC5mbGFnc3w9ZSx0LmNsZWFuPW5ldyBQcm9taXNlKCh0PT5uPXQpKSx0LnNjaGVkdWxlcigoKCk9PntpZigxJnQuZmxhZ3MmJih0LmZsYWdzJj0tMixSZCh0KSksMiZ0LmZsYWdzKXt0LmZsYWdzJj0tMztjb25zdCBlPXQucGxheWVySGFuZGxlcjtlJiZlLmZsdXNoUGxheWVycygpfXQuY2xlYW49V2MsbihudWxsKX0pKX19KShlWzhdLDEpfSkodCksZHAodCkuZm9yRWFjaCgodD0+KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1Gcyh0KTtBZChlWzFdLGUsdCl9KSh0KSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9ycC5USFJPV19JRl9OT1RfRk9VTkQ9Z3IscnAuTlVMTD1uZXcgV2QscnAuybVwcm92PU1uKHt0b2tlbjpycCxwcm92aWRlZEluOiJhbnkiLGZhY3Rvcnk6KCk9PnZyKEdkKX0pLHJwLl9fTkdfRUxFTUVOVF9JRF9fPS0xO2xldCBfcD0hMTtmdW5jdGlvbiBDcCh0LGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgQ09NUElMRUR8fCFDT01QSUxFRCl7Y29uc3Qgbj1qbjtpZihuZ0Rldk1vZGUmJmhuKGUsImZ1bmN0aW9uIG5vdCBkZWZpbmVkIiksbil7bGV0IG89bi5uZztvfHwobz1uLm5nPXt9KSxvW3RdPWV9fX1mdW5jdGlvbiBNcCh0LGUpe2NvbnN0IG49VnModCk7bmdEZXZNb2RlJiZobihuLCJMVmlldyBpcyByZXF1aXJlZCIpO2NvbnN0IG89blsxXSxpPWJpKCk7bmdEZXZNb2RlJiZobihpLCJUTm9kZSBpcyByZXF1aXJlZCIpLFhpKG8saSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZwKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yfWZ1bmN0aW9uIHhwKHQpe2xldCBlPXZwKHQudHlwZSksbj0hMDtjb25zdCBvPVt0XTtmb3IoO2U7KXtsZXQgaTtpZih4byh0KSlpPWUuybVjbXB8fGUuybVkaXI7ZWxzZXtpZihlLsm1Y21wKXRocm93IG5ldyBFcnJvcigiRGlyZWN0aXZlcyBjYW5ub3QgaW5oZXJpdCBDb21wb25lbnRzIik7aT1lLsm1ZGlyfWlmKGkpe2lmKG4pe28ucHVzaChpKTtjb25zdCBlPXQ7ZS5pbnB1dHM9T3AodC5pbnB1dHMpLGUuZGVjbGFyZWRJbnB1dHM9T3AodC5kZWNsYXJlZElucHV0cyksZS5vdXRwdXRzPU9wKHQub3V0cHV0cyk7Y29uc3Qgbj1pLmhvc3RCaW5kaW5ncztuJiZrcCh0LG4pO2NvbnN0IGE9aS52aWV3UXVlcnkscj1pLmNvbnRlbnRRdWVyaWVzO2lmKGEmJlBwKHQsYSksciYmd3AodCxyKSxVZSh0LmlucHV0cyxpLmlucHV0cyksVWUodC5kZWNsYXJlZElucHV0cyxpLmRlY2xhcmVkSW5wdXRzKSxVZSh0Lm91dHB1dHMsaS5vdXRwdXRzKSx4byhpKSYmaS5kYXRhLmFuaW1hdGlvbil7Y29uc3QgZT10LmRhdGE7ZS5hbmltYXRpb249KGUuYW5pbWF0aW9ufHxbXSkuY29uY2F0KGkuZGF0YS5hbmltYXRpb24pfX1jb25zdCBlPWkuZmVhdHVyZXM7aWYoZSlmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7Y29uc3QgaT1lW29dO2kmJmkubmdJbmhlcml0JiZpKHQpLGk9PT14cCYmKG49ITEpfX1lPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0hKGZ1bmN0aW9uIGkodCl7bGV0IGU9MCxuPW51bGw7Zm9yKGxldCBvPXQubGVuZ3RoLTE7bz49MDtvLS0pe2NvbnN0IGk9dFtvXTtpLmhvc3RWYXJzPWUrPWkuaG9zdFZhcnMsaS5ob3N0QXR0cnM9bGEoaS5ob3N0QXR0cnMsbj1sYShuLGkuaG9zdEF0dHJzKSl9fSkobyl9ZnVuY3Rpb24gT3AodCl7cmV0dXJuIHQ9PT1Hbj97fTp0PT09V24/W106dH1mdW5jdGlvbiBQcCh0LGUpe2NvbnN0IG49dC52aWV3UXVlcnk7dC52aWV3UXVlcnk9bj8odCxvKT0+e2UodCxvKSxuKHQsbyl9OmV9ZnVuY3Rpb24gd3AodCxlKXtjb25zdCBuPXQuY29udGVudFF1ZXJpZXM7dC5jb250ZW50UXVlcmllcz1uPyh0LG8saSk9PntlKHQsbyxpKSxuKHQsbyxpKX06ZX1mdW5jdGlvbiBrcCh0LGUpe2NvbnN0IG49dC5ob3N0QmluZGluZ3M7dC5ob3N0QmluZGluZ3M9bj8odCxvKT0+e2UodCxvKSxuKHQsbyl9OmV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFNwPVsicHJvdmlkZXJzUmVzb2x2ZXIiXSxEcD1bInRlbXBsYXRlIiwiZGVjbHMiLCJjb25zdHMiLCJ2YXJzIiwib25QdXNoIiwibmdDb250ZW50U2VsZWN0b3JzIiwic3R5bGVzIiwiZW5jYXBzdWxhdGlvbiIsInNjaGVtYXMiXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBFcD1udWxsO2Z1bmN0aW9uIFJwKCl7aWYoIUVwKXtjb25zdCB0PWpuLlN5bWJvbDtpZih0JiZ0Lml0ZXJhdG9yKUVwPXQuaXRlcmF0b3I7ZWxzZXtjb25zdCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXtjb25zdCBuPXRbZV07ImVudHJpZXMiIT09biYmInNpemUiIT09biYmTWFwLnByb3RvdHlwZVtuXT09PU1hcC5wcm90b3R5cGUuZW50cmllcyYmKEVwPW4pfX19cmV0dXJuIEVwfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBBcCh0LGUpe2NvbnN0IG49TnAodCksbz1OcChlKTtpZihuJiZvKXJldHVybihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXRbUnAoKV0oKSxpPWVbUnAoKV0oKTtmb3IoOzspe2NvbnN0IHQ9by5uZXh0KCksZT1pLm5leHQoKTtpZih0LmRvbmUmJmUuZG9uZSlyZXR1cm4hMDtpZih0LmRvbmV8fGUuZG9uZSlyZXR1cm4hMTtpZighbih0LnZhbHVlLGUudmFsdWUpKXJldHVybiExfX0pKHQsZSxBcCk7e2NvbnN0IGk9dCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpLGE9ZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpO3JldHVybiEobnx8IWl8fG98fCFhKXx8T2JqZWN0LmlzKHQsZSl9fWNsYXNzIFRwe2NvbnN0cnVjdG9yKHQpe3RoaXMud3JhcHBlZD10fXN0YXRpYyB3cmFwKHQpe3JldHVybiBuZXcgVHAodCl9c3RhdGljIHVud3JhcCh0KXtyZXR1cm4gVHAuaXNXcmFwcGVkKHQpP3Qud3JhcHBlZDp0fXN0YXRpYyBpc1dyYXBwZWQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUcH19ZnVuY3Rpb24gTnAodCl7cmV0dXJuISF6cCh0KSYmKEFycmF5LmlzQXJyYXkodCl8fCEodCBpbnN0YW5jZW9mIE1hcCkmJlJwKClpbiB0KX1mdW5jdGlvbiB6cCh0KXtyZXR1cm4gbnVsbCE9PXQmJigiZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSXAodCxlLG4pe3JldHVybiB0W2VdPW59ZnVuY3Rpb24gSHAodCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZfbih0LGUpLG5nRGV2TW9kZSYmcG4odFtlXSxhYywiU3RvcmVkIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksdFtlXX1mdW5jdGlvbiBGcCh0LGUsbil7bmdEZXZNb2RlJiZwbihuLGFjLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpLG5nRGV2TW9kZSYmbW4oZSx0Lmxlbmd0aCwiU2xvdCBzaG91bGQgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIE5PX0NIQU5HRSIpO2NvbnN0IG89dFtlXTtpZihPYmplY3QuaXMobyxuKSlyZXR1cm4hMTtpZihuZ0Rldk1vZGUmJnhpKCkpe2NvbnN0IGk9byE9PWFjP286dm9pZCAwO2lmKCFBcChpLG4pKXtjb25zdCBhPShmdW5jdGlvbiBpKHQsZSxuLG8pe2NvbnN0IGk9dFsxXS5kYXRhLGE9aVtlXTtpZigic3RyaW5nIj09dHlwZW9mIGEpcmV0dXJuIGEuaW5kZXhPZihhbCk+LTE/bGwodCxlLGUsYSxvKTp7cHJvcE5hbWU6YSxvbGRWYWx1ZTpuLG5ld1ZhbHVlOm99O2lmKG51bGw9PT1hKXtsZXQgbj1lLTE7Zm9yKDsic3RyaW5nIiE9dHlwZW9mIGlbbl0mJm51bGw9PT1pW24rMV07KW4tLTtjb25zdCBhPWlbbl07aWYoInN0cmluZyI9PXR5cGVvZiBhKXtjb25zdCBpPWEubWF0Y2gobmV3IFJlZ0V4cChhbCwiZyIpKTtpZihpJiZpLmxlbmd0aC0xPmUtbilyZXR1cm4gbGwodCxuLGUsYSxvKX19cmV0dXJue3Byb3BOYW1lOnZvaWQgMCxvbGRWYWx1ZTpuLG5ld1ZhbHVlOm99fSkodCxlLGksbik7IShmdW5jdGlvbiBhKHQsZSxuLG8pe2xldCBpPWBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZSR7bz9gIGZvciAnJHtvfSdgOiIifTogJyR7ZX0nLiBDdXJyZW50IHZhbHVlOiAnJHtufScuYDt0aHJvdyB0JiYoaSs9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgaXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBkaXJ0eSBjaGVja2VkLiBIYXMgaXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVjdGlvbiBob29rPyIpLG5ldyBLZSgiMTAwIixpKX0pKG89PT1hYyxhLm9sZFZhbHVlLGEubmV3VmFsdWUsYS5wcm9wTmFtZSl9cmV0dXJuITF9cmV0dXJuIHRbZV09biwhMH1mdW5jdGlvbiBMcCh0LGUsbixvKXtjb25zdCBpPUZwKHQsZSxuKTtyZXR1cm4gRnAodCxlKzEsbyl8fGl9ZnVuY3Rpb24gQnAodCxlLG4sbyxpKXtjb25zdCBhPUxwKHQsZSxuLG8pO3JldHVybiBGcCh0LGUrMixpKXx8YX1mdW5jdGlvbiBWcCh0LGUsbixvLGksYSl7Y29uc3Qgcj1McCh0LGUsbixvKTtyZXR1cm4gTHAodCxlKzIsaSxhKXx8cn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24ganAodCxlLG4sbyl7Y29uc3QgaT1maSgpLGE9U2koKTtpZihGcChpLGEsZSkpe2NvbnN0IHI9Z2koKSxzPVlpKCk7Q2QocyxpLHQsZSxuLG8pLG5nRGV2TW9kZSYmemQoci5kYXRhLHMsImF0dHIuIit0LGEpfXJldHVybiBqcH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gVXAodCxlKXtuZ0Rldk1vZGUmJm1uKDIsZS5sZW5ndGgsInNob3VsZCBoYXZlIGF0IGxlYXN0IDMgdmFsdWVzIiksbmdEZXZNb2RlJiZsbihlLmxlbmd0aCUyLDEsInNob3VsZCBoYXZlIGFuIG9kZCBudW1iZXIgb2YgdmFsdWVzIik7bGV0IG49ITEsbz13aSgpO2ZvcihsZXQgaT0xO2k8ZS5sZW5ndGg7aSs9MiluPUZwKHQsbysrLGVbaV0pfHxuO2lmKGtpKG8pLCFuKXJldHVybiBhYztsZXQgaT1lWzBdO2ZvcihsZXQgdD0xO3Q8ZS5sZW5ndGg7dCs9MilpKz0kZShlW3RdKStlW3QrMV07cmV0dXJuIGl9ZnVuY3Rpb24gR3AodCxlLG4sbyl7cmV0dXJuIEZwKHQsU2koKSxuKT9lKyRlKG4pK286YWN9ZnVuY3Rpb24gV3AodCxlLG4sbyxpLGEpe2NvbnN0IHI9THAodCx3aSgpLG4saSk7cmV0dXJuIERpKDIpLHI/ZSskZShuKStvKyRlKGkpK2E6YWN9ZnVuY3Rpb24gWXAodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPUJwKHQsd2koKSxuLGkscik7cmV0dXJuIERpKDMpLGw/ZSskZShuKStvKyRlKGkpK2ErJGUocikrczphY31mdW5jdGlvbiBxcCh0LGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPVZwKHQsd2koKSxuLGkscixsKTtyZXR1cm4gRGkoNCksZD9lKyRlKG4pK28rJGUoaSkrYSskZShyKStzKyRlKGwpK2M6YWN9ZnVuY3Rpb24gWnAodCxlLG4sbyxpLGEscixzLGwsYyxkLHApe2NvbnN0IG09d2koKTtsZXQgdT1WcCh0LG0sbixpLHIsbCk7cmV0dXJuIHU9RnAodCxtKzQsZCl8fHUsRGkoNSksdT9lKyRlKG4pK28rJGUoaSkrYSskZShyKStzKyRlKGwpK2MrJGUoZCkrcDphY31mdW5jdGlvbiBYcCh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUpe2NvbnN0IGY9d2koKTtsZXQgZz1WcCh0LGYsbixpLHIsbCk7cmV0dXJuIGc9THAodCxmKzQsZCxtKXx8ZyxEaSg2KSxnP2UrJGUobikrbyskZShpKSthKyRlKHIpK3MrJGUobCkrYyskZShkKStwKyRlKG0pK3U6YWN9ZnVuY3Rpb24gS3AodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyl7Y29uc3QgaD13aSgpO2xldCBiPVZwKHQsaCxuLGkscixsKTtyZXR1cm4gYj1CcCh0LGgrNCxkLG0sZil8fGIsRGkoNyksYj9lKyRlKG4pK28rJGUoaSkrYSskZShyKStzKyRlKGwpK2MrJGUoZCkrcCskZShtKSt1KyRlKGYpK2c6YWN9ZnVuY3Rpb24gSnAodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIpe2NvbnN0IHk9d2koKTtsZXQgXz1WcCh0LHksbixpLHIsbCk7cmV0dXJuIF89VnAodCx5KzQsZCxtLGYsaCl8fF8sRGkoOCksXz9lKyRlKG4pK28rJGUoaSkrYSskZShyKStzKyRlKGwpK2MrJGUoZCkrcCskZShtKSt1KyRlKGYpK2crJGUoaCkrYjphY31mdW5jdGlvbiBRcCh0LGUsbixvLGksYSxyLHMpe2NvbnN0IGw9ZmkoKSxjPWdpKCksZD10K2dvLHA9Yy5maXJzdENyZWF0ZVBhc3M/KAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbSh0LGUsbixvLGksYSxyLHMsbCl7bmdEZXZNb2RlJiZBbyhlKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCBjPWUuY29uc3RzLGQ9WmMoZSx0LDQscnx8bnVsbCxjaShjLHMpKTttZChlLG4sZCxjaShjLGwpKSxYaShlLGQpO2NvbnN0IHA9ZC50Vmlld3M9YWQoMixkLG8saSxhLGUuZGlyZWN0aXZlUmVnaXN0cnksZS5waXBlUmVnaXN0cnksbnVsbCxlLnNjaGVtYXMsYyk7cmV0dXJuIG51bGwhPT1lLnF1ZXJpZXMmJihlLnF1ZXJpZXMudGVtcGxhdGUoZSxkKSxwLnF1ZXJpZXM9ZS5xdWVyaWVzLmVtYmVkZGVkVFZpZXcoZCkpLGR9KShkLGMsbCxlLG4sbyxpLGEscik6Yy5kYXRhW2RdO0NpKHAsITEpO2NvbnN0IHU9bFsxMV0uY3JlYXRlQ29tbWVudChuZ0Rldk1vZGU/ImNvbnRhaW5lciI6IiIpO0hsKGMsbCx1LHApLExzKHUsbCksRGQobCxsW2RdPVBkKHUsbCx1LHApKSx2byhwKSYmbmQoYyxsLHApLG51bGwhPXImJm9kKGwscCxzKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gJHAodCl7cmV0dXJuIGFpKChmdW5jdGlvbiBlKCl7cmV0dXJuIG1pLmxGcmFtZS5jb250ZXh0TFZpZXd9KSgpLGdvK3QpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB0bT17Ism1ybVkZWZpbmVJbmplY3RhYmxlIjpNbiwiybXJtWRlZmluZUluamVjdG9yIjp2biwiybXJtWluamVjdCI6dnIsIsm1ybVpbnZhbGlkRmFjdG9yeURlcCI6eHIscmVzb2x2ZUZvcndhcmRSZWY6WmV9LGVtPWplKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpqZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBubSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VDbGFzc31mdW5jdGlvbiBvbSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VGYWN0b3J5fWplKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpqZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaW09RmEoIkluamVjdGFibGUiLHZvaWQgMCx2b2lkIDAsdm9pZCAwLCgodCxlKT0+YW0odCxlKSkpLGFtPWZ1bmN0aW9uIHJtKHQsZSl7bGV0IG49bnVsbCxvPW51bGw7dC5oYXNPd25Qcm9wZXJ0eSh3bil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHduLHtnZXQ6KCk9PntpZihudWxsPT09bil7Y29uc3Qgbz1KYSh7dXNhZ2U6MCxraW5kOiJpbmplY3RhYmxlIix0eXBlOnR9KTtuPW8uY29tcGlsZUluamVjdGFibGUodG0sYG5nOi8vLyR7dC5uYW1lfS/JtXByb3YuanNgLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj1lfHx7cHJvdmlkZWRJbjpudWxsfSxvPXtuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxwcm92aWRlZEluOm4ucHJvdmlkZWRJbn07cmV0dXJuKG5tKG4pfHxvbShuKSkmJnZvaWQgMCE9PW4uZGVwcyYmKG8uZGVwcz16cihuLmRlcHMpKSxubShuKT9vLnVzZUNsYXNzPW4udXNlQ2xhc3M6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIGVtIGluIHR9KShuKT9vLnVzZVZhbHVlPW4udXNlVmFsdWU6b20obik/by51c2VGYWN0b3J5PW4udXNlRmFjdG9yeTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VFeGlzdGluZ30pKG4pJiYoby51c2VFeGlzdGluZz1uLnVzZUV4aXN0aW5nKSxvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSkpfXJldHVybiBufX0pLHQuaGFzT3duUHJvcGVydHkoSm4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxKbix7Z2V0OigpPT57aWYobnVsbD09PW8pe2NvbnN0IGU9SmEoe3VzYWdlOjAsa2luZDoiaW5qZWN0YWJsZSIsdHlwZTp0fSk7bz1lLmNvbXBpbGVGYWN0b3J5KHRtLGBuZzovLy8ke3QubmFtZX0vybVmYWMuanNgLHtuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOk5yKHQpLHRhcmdldDplLkZhY3RvcnlUYXJnZXQuSW5qZWN0YWJsZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ITB9KX07ZnVuY3Rpb24gc20odCl7cmV0dXJuIHQubGVuZ3RoPjE/IiAoIisoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2lmKGUuaW5kZXhPZih0W25dKT4tMSlyZXR1cm4gZS5wdXNoKHRbbl0pLGU7ZS5wdXNoKHRbbl0pfXJldHVybiBlfSkodC5zbGljZSgpLnJldmVyc2UoKSkubWFwKCh0PT5HZSh0LnRva2VuKSkpLmpvaW4oIiAtPiAiKSsiKSI6IiJ9ZnVuY3Rpb24gbG0odCxlLG4sbyl7Y29uc3QgaT1bZV0sYT1uKGkpLHI9bz8oZnVuY3Rpb24gcyh0LGUpe2NvbnN0IG49YCR7dH0gY2F1c2VkIGJ5OiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ZX1gLG89RXJyb3Iobik7cmV0dXJuIG8ubmdPcmlnaW5hbEVycm9yPWUsb30pKGEsbyk6RXJyb3IoYSk7cmV0dXJuIHIuYWRkS2V5PWNtLHIua2V5cz1pLHIuaW5qZWN0b3JzPVt0XSxyLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2U9bixyLm5nT3JpZ2luYWxFcnJvcj1vLHJ9ZnVuY3Rpb24gY20odCxlKXt0aGlzLmluamVjdG9ycy5wdXNoKHQpLHRoaXMua2V5cy5wdXNoKGUpLHRoaXMubWVzc2FnZT10aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiBkbSh0LGUpe2NvbnN0IG49W107Zm9yKGxldCB0PTAsbz1lLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPWVbdF07bi5wdXNoKG8mJjAhPW8ubGVuZ3RoP28ubWFwKEdlKS5qb2luKCIgIik6Ij8iKX1yZXR1cm4gRXJyb3IoIkNhbm5vdCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAnIitHZSh0KSsiJygiK24uam9pbigiLCAiKSsiKS4gTWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWNvcmF0ZWQgd2l0aCBJbmplY3Qgb3IgaGF2ZSB2YWxpZCB0eXBlIGFubm90YXRpb25zIGFuZCB0aGF0ICciK0dlKHQpKyInIGlzIGRlY29yYXRlZCB3aXRoIEluamVjdGFibGUuIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBwbXtjb25zdHJ1Y3Rvcih0LGUpe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPWUsIXQpdGhyb3cgbmV3IEVycm9yKCJUb2tlbiBtdXN0IGJlIGRlZmluZWQhIik7dGhpcy5kaXNwbGF5TmFtZT1HZSh0aGlzLnRva2VuKX1zdGF0aWMgZ2V0KHQpe3JldHVybiBtbS5nZXQoWmUodCkpfXN0YXRpYyBnZXQgbnVtYmVyT2ZLZXlzKCl7cmV0dXJuIG1tLm51bWJlck9mS2V5c319Y29uc3QgbW09bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fYWxsS2V5cz1uZXcgTWFwfWdldCh0KXtpZih0IGluc3RhbmNlb2YgcG0pcmV0dXJuIHQ7aWYodGhpcy5fYWxsS2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0KHQpO2NvbnN0IGU9bmV3IHBtKHQscG0ubnVtYmVyT2ZLZXlzKTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxlKSxlfWdldCBudW1iZXJPZktleXMoKXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfX0sdW09bmV3Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH11cGRhdGVDYXBhYmlsaXRpZXModCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9ZmFjdG9yeSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9cGFyYW1ldGVycyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9YW5ub3RhdGlvbnModCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX1wcm9wTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9aGFzTGlmZWN5Y2xlSG9vayh0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LGUpfWdldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX1zZXR0ZXIodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9bWV0aG9kKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfWltcG9ydFVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX1yZXNvdXJjZVVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQpfXJlc29sdmVJZGVudGlmaWVyKHQsZSxuLG8pe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxlLG4sbyl9cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8obmV3IG1yKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGZte2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZpc2liaWxpdHk9bn1zdGF0aWMgZnJvbUtleSh0KXtyZXR1cm4gbmV3IGZtKHQsITEsbnVsbCl9fWNvbnN0IGdtPVtdO2NsYXNzIGhte2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmtleT10LHRoaXMucmVzb2x2ZWRGYWN0b3JpZXM9ZSx0aGlzLm11bHRpUHJvdmlkZXI9bix0aGlzLnJlc29sdmVkRmFjdG9yeT10aGlzLnJlc29sdmVkRmFjdG9yaWVzWzBdfX1jbGFzcyBibXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVzPWV9fWZ1bmN0aW9uIHltKHQpe2xldCBlLG47aWYodC51c2VDbGFzcyl7Y29uc3Qgbz1aZSh0LnVzZUNsYXNzKTtlPXVtLmZhY3Rvcnkobyksbj12bShvKX1lbHNlIHQudXNlRXhpc3Rpbmc/KGU9dD0+dCxuPVtmbS5mcm9tS2V5KHBtLmdldCh0LnVzZUV4aXN0aW5nKSldKTp0LnVzZUZhY3Rvcnk/KGU9dC51c2VGYWN0b3J5LG49KGZ1bmN0aW9uIG8odCxlKXtpZihlKXtjb25zdCBuPWUubWFwKCh0PT5bdF0pKTtyZXR1cm4gZS5tYXAoKGU9PnhtKHQsZSxuKSkpfXJldHVybiB2bSh0KX0pKHQudXNlRmFjdG9yeSx0LmRlcHMpKTooZT0oKT0+dC51c2VWYWx1ZSxuPWdtKTtyZXR1cm4gbmV3IGJtKGUsbil9ZnVuY3Rpb24gX20odCl7cmV0dXJuIG5ldyBobShwbS5nZXQodC5wcm92aWRlKSxbeW0odCldLHQubXVsdGl8fCExKX1mdW5jdGlvbiBDbSh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IG89dFtuXSxpPWUuZ2V0KG8ua2V5LmlkKTtpZihpKXtpZihvLm11bHRpUHJvdmlkZXIhPT1pLm11bHRpUHJvdmlkZXIpdGhyb3cgRXJyb3IoYENhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycywgZ290OiAke2l9ICR7b31gKTtpZihvLm11bHRpUHJvdmlkZXIpZm9yKGxldCB0PTA7dDxvLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDt0KyspaS5yZXNvbHZlZEZhY3Rvcmllcy5wdXNoKG8ucmVzb2x2ZWRGYWN0b3JpZXNbdF0pO2Vsc2UgZS5zZXQoby5rZXkuaWQsbyl9ZWxzZXtsZXQgdDt0PW8ubXVsdGlQcm92aWRlcj9uZXcgaG0oby5rZXksby5yZXNvbHZlZEZhY3Rvcmllcy5zbGljZSgpLG8ubXVsdGlQcm92aWRlcik6byxlLnNldChvLmtleS5pZCx0KX19cmV0dXJuIGV9KShNbSh0LFtdKS5tYXAoX20pLG5ldyBNYXApO3JldHVybiBBcnJheS5mcm9tKGUudmFsdWVzKCkpfWZ1bmN0aW9uIE1tKHQsZSl7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2lmKHQgaW5zdGFuY2VvZiBRYSllLnB1c2goe3Byb3ZpZGU6dCx1c2VDbGFzczp0fSk7ZWxzZSBpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQucHJvdmlkZSllLnB1c2godCk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyhmdW5jdGlvbiBuKHQpe3JldHVybiBFcnJvcihgSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICR7dH1gKX0pKHQpO01tKHQsZSl9fSkpLGV9ZnVuY3Rpb24gdm0odCl7Y29uc3QgZT11bS5wYXJhbWV0ZXJzKHQpO2lmKCFlKXJldHVybltdO2lmKGUuc29tZSgodD0+bnVsbD09dCkpKXRocm93IGRtKHQsZSk7cmV0dXJuIGUubWFwKChuPT54bSh0LG4sZSkpKX1mdW5jdGlvbiB4bSh0LGUsbil7bGV0IG89bnVsbCxpPSExO2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBPbShlIGluc3RhbmNlb2Yga3I/ZS50b2tlbjplLGksbnVsbCk7bGV0IGE9bnVsbDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoOysrdCl7Y29uc3Qgbj1lW3RdO24gaW5zdGFuY2VvZiBRYT9vPW46biBpbnN0YW5jZW9mIGtyP289bi50b2tlbjpuIGluc3RhbmNlb2YgU3I/aT0hMDpuIGluc3RhbmNlb2YgRHJ8fG4gaW5zdGFuY2VvZiBFcj9hPW46biBpbnN0YW5jZW9mIEdhJiYobz1uKX1pZihvPVplKG8pLG51bGwhPW8pcmV0dXJuIE9tKG8saSxhKTt0aHJvdyBkbSh0LG4pfWZ1bmN0aW9uIE9tKHQsZSxuKXtyZXR1cm4gbmV3IGZtKHBtLmdldCh0KSxlLG4pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBQbT17fTtjbGFzcyB3bXtzdGF0aWMgcmVzb2x2ZSh0KXtyZXR1cm4gQ20odCl9c3RhdGljIHJlc29sdmVBbmRDcmVhdGUodCxlKXtjb25zdCBuPXdtLnJlc29sdmUodCk7cmV0dXJuIHdtLmZyb21SZXNvbHZlZFByb3ZpZGVycyhuLGUpfXN0YXRpYyBmcm9tUmVzb2x2ZWRQcm92aWRlcnModCxlKXtyZXR1cm4gbmV3IGttKHQsZSl9fWNsYXNzIGtte2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY29uc3RydWN0aW9uQ291bnRlcj0wLHRoaXMuX3Byb3ZpZGVycz10LHRoaXMucGFyZW50PWV8fG51bGw7Y29uc3Qgbj10Lmxlbmd0aDt0aGlzLmtleUlkcz1bXSx0aGlzLm9ianM9W107Zm9yKGxldCBlPTA7ZTxuO2UrKyl0aGlzLmtleUlkc1tlXT10W2VdLmtleS5pZCx0aGlzLm9ianNbZV09UG19Z2V0KHQsZT1ncil7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KHBtLmdldCh0KSxudWxsLGUpfXJlc29sdmVBbmRDcmVhdGVDaGlsZCh0KXtjb25zdCBlPXdtLnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQoZSl9Y3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQodCl7Y29uc3QgZT1uZXcga20odCk7cmV0dXJuIGUucGFyZW50PXRoaXMsZX1yZXNvbHZlQW5kSW5zdGFudGlhdGUodCl7cmV0dXJuIHRoaXMuaW5zdGFudGlhdGVSZXNvbHZlZCh3bS5yZXNvbHZlKFt0XSlbMF0pfWluc3RhbnRpYXRlUmVzb2x2ZWQodCl7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9Z2V0UHJvdmlkZXJBdEluZGV4KHQpe2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgSW5kZXggJHt0fSBpcyBvdXQtb2YtYm91bmRzLmApfSkodCk7cmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1t0XX1fbmV3KHQpe2lmKHRoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXIrKz50aGlzLl9nZXRNYXhOdW1iZXJPZk9iamVjdHMoKSl0aHJvdyhmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGxtKHQsbiwoZnVuY3Rpb24odCl7cmV0dXJuYENhbm5vdCBpbnN0YW50aWF0ZSBjeWNsaWMgZGVwZW5kZW5jeSEke3NtKHQpfWB9KSl9KSh0aGlzLHQua2V5KTtyZXR1cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX1fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCl7cmV0dXJuIHRoaXMub2Jqcy5sZW5ndGh9X2luc3RhbnRpYXRlUHJvdmlkZXIodCl7aWYodC5tdWx0aVByb3ZpZGVyKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7KytuKWVbbl09dGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzW25dKTtyZXR1cm4gZX1yZXR1cm4gdGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzWzBdKX1faW5zdGFudGlhdGUodCxlKXtjb25zdCBuPWUuZmFjdG9yeTtsZXQgbyxpO3RyeXtvPWUuZGVwZW5kZW5jaWVzLm1hcCgodD0+dGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KSkpfWNhdGNoKGUpe3Rocm93IGUuYWRkS2V5JiZlLmFkZEtleSh0aGlzLHQua2V5KSxlfXRyeXtpPW4oLi4ubyl9Y2F0Y2goZSl7dGhyb3coZnVuY3Rpb24gbih0LGUsbyxpKXtyZXR1cm4gbG0odCxpLChmdW5jdGlvbih0KXtjb25zdCBuPUdlKHRbMF0udG9rZW4pO3JldHVybmAke2UubWVzc2FnZX06IEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7bn0hJHtzbSh0KX0uYH0pLGUpfSkodGhpcyxlLDAsdC5rZXkpfXJldHVybiBpfV9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0LmtleSx0LnZpc2liaWxpdHksdC5vcHRpb25hbD9udWxsOmdyKX1fZ2V0QnlLZXkodCxlLG4pe3JldHVybiB0PT09a20uSU5KRUNUT1JfS0VZP3RoaXM6ZSBpbnN0YW5jZW9mIERyP3RoaXMuX2dldEJ5S2V5U2VsZih0LG4pOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LG4sZSl9X2dldE9iakJ5S2V5SWQodCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmtleUlkcy5sZW5ndGg7ZSsrKWlmKHRoaXMua2V5SWRzW2VdPT09dClyZXR1cm4gdGhpcy5vYmpzW2VdPT09UG0mJih0aGlzLm9ianNbZV09dGhpcy5fbmV3KHRoaXMuX3Byb3ZpZGVyc1tlXSkpLHRoaXMub2Jqc1tlXTtyZXR1cm4gUG19X3Rocm93T3JOdWxsKHQsZSl7aWYoZSE9PWdyKXJldHVybiBlO3Rocm93KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gbG0odCxlLChmdW5jdGlvbih0KXtyZXR1cm5gTm8gcHJvdmlkZXIgZm9yICR7R2UodFswXS50b2tlbil9ISR7c20odCl9YH0pKX0pKHRoaXMsdCl9X2dldEJ5S2V5U2VsZih0LGUpe2NvbnN0IG49dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4gbiE9PVBtP246dGhpcy5fdGhyb3dPck51bGwodCxlKX1fZ2V0QnlLZXlEZWZhdWx0KHQsZSxuKXtsZXQgbztmb3Iobz1uIGluc3RhbmNlb2YgRXI/dGhpcy5wYXJlbnQ6dGhpcztvIGluc3RhbmNlb2Yga207KXtjb25zdCBlPW8sbj1lLl9nZXRPYmpCeUtleUlkKHQuaWQpO2lmKG4hPT1QbSlyZXR1cm4gbjtvPWUucGFyZW50fXJldHVybiBudWxsIT09bz9vLmdldCh0LnRva2VuLGUpOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9Z2V0IGRpc3BsYXlOYW1lKCl7cmV0dXJuYFJlZmxlY3RpdmVJbmplY3Rvcihwcm92aWRlcnM6IFskeyhmdW5jdGlvbiB0KGUsbil7Y29uc3Qgbz1bXTtmb3IobGV0IHQ9MDt0PGUuX3Byb3ZpZGVycy5sZW5ndGg7Kyt0KW9bdF09bihlLmdldFByb3ZpZGVyQXRJbmRleCh0KSk7cmV0dXJuIG99Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0aGlzLCh0PT4nICInK3Qua2V5LmRpc3BsYXlOYW1lKyciICcpKS5qb2luKCIsICIpfV0pYH10b1N0cmluZygpe3JldHVybiB0aGlzLmRpc3BsYXlOYW1lfX1mdW5jdGlvbiBTbSh0LGU9RW4uRGVmYXVsdCl7Y29uc3Qgbj1maSgpO3JldHVybiBudWxsPT09bj8obmdEZXZNb2RlJiYoZnVuY3Rpb24gbyh0KXtuZ0Rldk1vZGUmJmNuKFJuLHQsIkNhbGxpbmcgybXJtWluamVjdCB3b3VsZCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24iKX0pKFNtKSx2cih0LGUpKTp4YShiaSgpLG4sWmUodCksZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBEbSh0LGUsbil7Y29uc3Qgbz1maSgpLGk9U2koKTtpZihGcChvLGksZSkpe2NvbnN0IGE9Z2koKSxyPVlpKCk7bGQoYSxyLG8sdCxlLG9bMTFdLG4sITEpLG5nRGV2TW9kZSYmemQoYS5kYXRhLHIsdCxpKX1yZXR1cm4gRG19ZnVuY3Rpb24gRW0odCxlLG4sbyxpKXtjb25zdCBhPWk/ImNsYXNzIjoic3R5bGUiO1ZkKHQsbixlLmlucHV0c1thXSxhLG8pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBSbSh0LGUsbixvKXtjb25zdCBpPWZpKCksYT1naSgpLHI9Z28rdDtuZ0Rldk1vZGUmJmxuKHdpKCksYS5iaW5kaW5nU3RhcnRJbmRleCwiZWxlbWVudHMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmX24oaSxyKTtjb25zdCBzPWlbMTFdLGw9aVtyXT1NbChzLGUsKGZ1bmN0aW9uIGMoKXtyZXR1cm4gbWkubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9KSgpKSxkPWEuZmlyc3RDcmVhdGVQYXNzPyhmdW5jdGlvbiBwKHQsZSxuLG8saSxhLHIpe25nRGV2TW9kZSYmQW8oZSksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3Qgcz1lLmNvbnN0cyxsPVpjKGUsdCwyLGksY2kocyxhKSksYz1tZChlLG4sbCxjaShzLHIpKTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gZCh0LGUsbixvKXtpZihudWxsPT09dC5zY2hlbWFzKXJldHVybjtjb25zdCBpPW4udmFsdWU7aWYoIW8mJm51bGwhPT1pJiYoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MVW5rbm93bkVsZW1lbnQmJkhUTUxVbmtub3duRWxlbWVudCYmZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBjdXN0b21FbGVtZW50cyYmaS5pbmRleE9mKCItIik+LTEmJiFjdXN0b21FbGVtZW50cy5nZXQoaSkpJiYhZGQodCxpKSl7bGV0IHQ9YCcke2l9JyBpcyBub3QgYSBrbm93biBlbGVtZW50OlxuYDt0Kz1gMS4gSWYgJyR7aX0nIGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50LCB0aGVuIHZlcmlmeSB0aGF0IGl0IGlzIHBhcnQgb2YgdGhpcyBtb2R1bGUuXG5gLGkmJmkuaW5kZXhPZigiLSIpPi0xP3QrPWAyLiBJZiAnJHtpfScgaXMgYSBXZWIgQ29tcG9uZW50IHRoZW4gYWRkICdDVVNUT01fRUxFTUVOVFNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudCB0byBzdXBwcmVzcyB0aGlzIG1lc3NhZ2UuYDp0Kz0iMi4gVG8gYWxsb3cgYW55IGVsZW1lbnQgYWRkICdOT19FUlJPUlNfU0NIRU1BJyB0byB0aGUgJ0BOZ01vZHVsZS5zY2hlbWFzJyBvZiB0aGlzIGNvbXBvbmVudC4iLGNvbnNvbGUuZXJyb3IoUWUoIjMwNCIsdCkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShlLG8sbCxjKSxudWxsIT09bC5hdHRycyYmVWQobCxsLmF0dHJzLCExKSxudWxsIT09bC5tZXJnZWRBdHRycyYmVWQobCxsLm1lcmdlZEF0dHJzLCEwKSxudWxsIT09ZS5xdWVyaWVzJiZlLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KGUsbCksbH0pKHIsYSxpLGwsZSxuLG8pOmEuZGF0YVtyXTtDaShkLCEwKTtjb25zdCBtPWQubWVyZ2VkQXR0cnM7bnVsbCE9PW0mJmFhKHMsbCxtKTtjb25zdCB1PWQuY2xhc3NlcztudWxsIT09dSYmWWwocyxsLHUpO2NvbnN0IGY9ZC5zdHlsZXM7bnVsbCE9PWYmJldsKHMsbCxmKSw2NCE9KDY0JmQuZmxhZ3MpJiZIbChhLGksbCxkKSwwPT09KGZ1bmN0aW9uIGcoKXtyZXR1cm4gbWkubEZyYW1lLmVsZW1lbnREZXB0aENvdW50fSkoKSYmTHMobCxpKSwoZnVuY3Rpb24gaCgpe21pLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudCsrfSkoKSx2byhkKSYmKG5kKGEsaSxkKSxlZChhLGQsaSkpLG51bGwhPT1vJiZvZChpLGQpfWZ1bmN0aW9uIEFtKCl7bGV0IHQ9YmkoKTtuZ0Rldk1vZGUmJmhuKHQsIk5vIHBhcmVudCBub2RlIHRvIGNsb3NlLiIpLE1pKCk/dmkoKToobmdEZXZNb2RlJiZTbyhiaSgpKSx0PXQucGFyZW50LENpKHQsITEpKTtjb25zdCBlPXQ7bmdEZXZNb2RlJiZpYShlLDMpLChmdW5jdGlvbiBuKCl7bWkubEZyYW1lLmVsZW1lbnREZXB0aENvdW50LS19KSgpO2NvbnN0IG89Z2koKTtvLmZpcnN0Q3JlYXRlUGFzcyYmKFhpKG8sdCksQ28odCkmJm8ucXVlcmllcy5lbGVtZW50RW5kKHQpKSxudWxsIT1lLmNsYXNzZXNXaXRob3V0SG9zdCYmKGZ1bmN0aW9uIGkodCl7cmV0dXJuIDAhPSgxNiZ0LmZsYWdzKX0pKGUpJiZFbShvLGUsZmkoKSxlLmNsYXNzZXNXaXRob3V0SG9zdCwhMCksbnVsbCE9ZS5zdHlsZXNXaXRob3V0SG9zdCYmKGZ1bmN0aW9uIGEodCl7cmV0dXJuIDAhPSgzMiZ0LmZsYWdzKX0pKGUpJiZFbShvLGUsZmkoKSxlLnN0eWxlc1dpdGhvdXRIb3N0LCExKX1mdW5jdGlvbiBUbSh0LGUsbixvKXtSbSh0LGUsbixvKSxBbSgpfWZ1bmN0aW9uIE5tKHQsZSxuKXtjb25zdCBvPWZpKCksaT1naSgpLGE9dCtnbztuZ0Rldk1vZGUmJl9uKG8sYSksbmdEZXZNb2RlJiZsbih3aSgpLGkuYmluZGluZ1N0YXJ0SW5kZXgsImVsZW1lbnQgY29udGFpbmVycyBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgYW55IGJpbmRpbmdzIik7Y29uc3Qgcj1pLmZpcnN0Q3JlYXRlUGFzcz8oZnVuY3Rpb24gcyh0LGUsbixvLGkpe25nRGV2TW9kZSYmbmdEZXZNb2RlLmZpcnN0Q3JlYXRlUGFzcysrO2NvbnN0IGE9ZS5jb25zdHMscj1jaShhLG8pLHM9WmMoZSx0LDgsIm5nLWNvbnRhaW5lciIscik7cmV0dXJuIG51bGwhPT1yJiZVZChzLHIsITApLG1kKGUsbixzLGNpKGEsaSkpLG51bGwhPT1lLnF1ZXJpZXMmJmUucXVlcmllcy5lbGVtZW50U3RhcnQoZSxzKSxzfSkoYSxpLG8sZSxuKTppLmRhdGFbYV07Q2kociwhMCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50Kys7Y29uc3QgbD1vW2FdPW9bMTFdLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJuZy1jb250YWluZXIiOiIiKTtIbChpLG8sbCxyKSxMcyhsLG8pLHZvKHIpJiYobmQoaSxvLHIpLGVkKGkscixvKSksbnVsbCE9biYmb2QobyxyKX1mdW5jdGlvbiB6bSgpe2xldCB0PWJpKCk7Y29uc3QgZT1naSgpO01pKCk/dmkoKToobmdEZXZNb2RlJiZTbyh0KSx0PXQucGFyZW50LENpKHQsITEpKSxuZ0Rldk1vZGUmJmlhKHQsOCksZS5maXJzdENyZWF0ZVBhc3MmJihYaShlLHQpLENvKHQpJiZlLnF1ZXJpZXMuZWxlbWVudEVuZCh0KSl9ZnVuY3Rpb24gSW0odCxlLG4pe05tKHQsZSxuKSx6bSgpfWZ1bmN0aW9uIEhtKCl7cmV0dXJuIGZpKCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZtKHQpe3JldHVybiEhdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbn1mdW5jdGlvbiBMbSh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZX1rbS5JTkpFQ1RPUl9LRVk9cG0uZ2V0KHJwKTtjb25zdCBCbT1MbTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gVm0odCxlLG4sbyl7Y29uc3QgaT1maSgpLGE9Z2koKSxyPWJpKCk7cmV0dXJuIFVtKGEsaSxpWzExXSxyLHQsZSwhIW4sbyksVm19ZnVuY3Rpb24gam0odCxlKXtjb25zdCBuPWJpKCksbz1maSgpLGk9Z2koKTtyZXR1cm4gVW0oaSxvLExkKFRpKGkuZGF0YSksbixvKSxuLHQsZSwhMSksam19ZnVuY3Rpb24gVW0odCxlLG4sbyxpLGEscixzKXtjb25zdCBsPXZvKG8pLGM9dC5maXJzdENyZWF0ZVBhc3MmJkZkKHQpLGQ9ZVs4XSxwPUhkKGUpO25nRGV2TW9kZSYmaWEobywxNSk7bGV0IG09ITA7aWYoMyZvLnR5cGV8fHMpe2NvbnN0IHU9b2kobyxlKSxmPXM/cyh1KTp1LGc9cC5sZW5ndGgsaD1zP3Q9PnMoZWkodFtvLmluZGV4XSkpOm8uaW5kZXg7aWYoJG8obikpe2xldCByPW51bGw7aWYoIXMmJmwmJihyPShmdW5jdGlvbiB1KHQsZSxuLG8pe2NvbnN0IGk9dC5jbGVhbnVwO2lmKG51bGwhPWkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aC0xO3QrPTIpe2NvbnN0IGE9aVt0XTtpZihhPT09biYmaVt0KzFdPT09byl7Y29uc3Qgbj1lWzddLG89aVt0KzJdO3JldHVybiBuLmxlbmd0aD5vP25bb106bnVsbH0ic3RyaW5nIj09dHlwZW9mIGEmJih0Kz0yKX1yZXR1cm4gbnVsbH0pKHQsZSxpLG8uaW5kZXgpKSxudWxsIT09cikoci5fX25nTGFzdExpc3RlbmVyRm5fX3x8cikuX19uZ05leHRMaXN0ZW5lckZuX189YSxyLl9fbmdMYXN0TGlzdGVuZXJGbl9fPWEsbT0hMTtlbHNle2E9V20obyxlLGQsYSwhMSk7Y29uc3QgdD1uLmxpc3RlbihmLGksYSk7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBZGRFdmVudExpc3RlbmVyKysscC5wdXNoKGEsdCksYyYmYy5wdXNoKGksaCxnLGcrMSl9fWVsc2UgYT1XbShvLGUsZCxhLCEwKSxmLmFkZEV2ZW50TGlzdGVuZXIoaSxhLHIpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcisrLHAucHVzaChhKSxjJiZjLnB1c2goaSxoLGcscil9ZWxzZSBhPVdtKG8sZSxkLGEsITEpO2NvbnN0IGY9by5vdXRwdXRzO2xldCBnO2lmKG0mJm51bGwhPT1mJiYoZz1mW2ldKSl7Y29uc3QgdD1nLmxlbmd0aDtpZih0KWZvcihsZXQgbj0wO248dDtuKz0yKXtjb25zdCB0PWdbbl07bmdEZXZNb2RlJiZfbihlLHQpO2NvbnN0IHI9Z1tuKzFdLHM9ZVt0XSxsPXNbcl07aWYobmdEZXZNb2RlJiYhQm0obCkpdGhyb3cgbmV3IEVycm9yKGBAT3V0cHV0ICR7cn0gbm90IGluaXRpYWxpemVkIGluICcke3MuY29uc3RydWN0b3IubmFtZX0nLmApO2NvbnN0IGQ9bC5zdWJzY3JpYmUoYSksbT1wLmxlbmd0aDtwLnB1c2goYSxkKSxjJiZjLnB1c2goaSxvLmluZGV4LG0sLShtKzEpKX19fWZ1bmN0aW9uIEdtKHQsZSxuLG8pe3RyeXtyZXR1cm4gcW8oNixlLG4pLCExIT09bihvKX1jYXRjaChlKXtyZXR1cm4gQmQodCxlKSwhMX1maW5hbGx5e3FvKDcsZSxuKX19ZnVuY3Rpb24gV20odCxlLG4sbyxpKXtyZXR1cm4gZnVuY3Rpb24gYShyKXtpZihyPT09RnVuY3Rpb24pcmV0dXJuIG87Y29uc3Qgcz0yJnQuZmxhZ3M/cmkodC5pbmRleCxlKTplOzA9PSgzMiZlWzJdKSYmRWQocyk7bGV0IGw9R20oZSxuLG8sciksYz1hLl9fbmdOZXh0TGlzdGVuZXJGbl9fO2Zvcig7YzspbD1HbShlLG4sYyxyKSYmbCxjPWMuX19uZ05leHRMaXN0ZW5lckZuX187cmV0dXJuIGkmJiExPT09bCYmKHIucHJldmVudERlZmF1bHQoKSxyLnJldHVyblZhbHVlPSExKSxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFltKHQ9MSl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuKG1pLmxGcmFtZS5jb250ZXh0TFZpZXc9KGZ1bmN0aW9uIGUodCxuKXtmb3IoO3Q+MDspbmdEZXZNb2RlJiZobihuWzE1XSwiRGVjbGFyYXRpb24gdmlldyBzaG91bGQgYmUgZGVmaW5lZCBpZiBuZXN0aW5nIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiAwLiIpLG49blsxNV0sdC0tO3JldHVybiBufSkodCxtaS5sRnJhbWUuY29udGV4dExWaWV3KSlbOF19KSh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcW0odCxlKXtsZXQgbj1udWxsO2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7Y29uc3QgZT10LmF0dHJzO2lmKG51bGwhPWUpe2NvbnN0IHQ9ZS5pbmRleE9mKDUpO2lmKDA9PSgxJnQpKXJldHVybiBlW3QrMV19cmV0dXJuIG51bGx9KSh0KTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3QgYT1lW2ldO2lmKCIqIiE9PWEpe2lmKG51bGw9PT1vP2VjKHQsYSwhMCk6bmMobyxhKSlyZXR1cm4gaX1lbHNlIG49aX1yZXR1cm4gbn1mdW5jdGlvbiBabSh0KXtjb25zdCBlPWZpKClbMTZdWzZdO2lmKCFlLnByb2plY3Rpb24pe2NvbnN0IG49ZS5wcm9qZWN0aW9uPWlyKHQ/dC5sZW5ndGg6MSxudWxsKSxvPW4uc2xpY2UoKTtsZXQgaT1lLmNoaWxkO2Zvcig7bnVsbCE9PWk7KXtjb25zdCBlPXQ/cW0oaSx0KTowO251bGwhPT1lJiYob1tlXT9vW2VdLnByb2plY3Rpb25OZXh0PWk6bltlXT1pLG9bZV09aSksaT1pLm5leHR9fX1mdW5jdGlvbiBYbSh0LGU9MCxuKXtjb25zdCBvPWZpKCksaT1naSgpLGE9WmMoaSxnbyt0LDE2LG51bGwsbnx8bnVsbCk7bnVsbD09PWEucHJvamVjdGlvbiYmKGEucHJvamVjdGlvbj1lKSx2aSgpLDY0IT0oNjQmYS5mbGFncykmJihmdW5jdGlvbiByKHQsZSxuKXtHbChlWzExXSwwLGUsbix3bCh0LG4sZSksQWwobi5wYXJlbnR8fGVbNl0sbixlKSl9KShpLG8sYSl9ZnVuY3Rpb24gS20odCxlLG4pe3JldHVybiBKbSh0LCIiLGUsIiIsbiksS219ZnVuY3Rpb24gSm0odCxlLG4sbyxpKXtjb25zdCBhPWZpKCkscj1HcChhLGUsbixvKTtpZihyIT09YWMpe2NvbnN0IG49Z2koKSxzPVlpKCk7bGQobixzLGEsdCxyLGFbMTFdLGksITEpLG5nRGV2TW9kZSYmemQobi5kYXRhLHMsdCx3aSgpLTEsZSxvKX1yZXR1cm4gSm19ZnVuY3Rpb24gUW0odCxlLG4sbyxpKXtjb25zdCBhPXRbbisxXSxyPW51bGw9PT1lO2xldCBzPW8/Y2MoYSk6bWMoYSksbD0hMTtmb3IoOzAhPT1zJiYoITE9PT1sfHxyKTspe25nRGV2TW9kZSYmX24odCxzKTtjb25zdCBuPXRbcysxXTskbSh0W3NdLGUpJiYobD0hMCx0W3MrMV09bz9nYyhuKTpwYyhuKSkscz1vP2NjKG4pOm1jKG4pfWwmJih0W24rMV09bz9wYyhhKTpnYyhhKSl9ZnVuY3Rpb24gJG0odCxlKXtyZXR1cm4gbmdEZXZNb2RlJiZjbihBcnJheS5pc0FycmF5KGUpLCEwLCJFeHBlY3RlZCB0aGF0ICd0U3R5bGluZ0tleScgaGFzIGJlZW4gdW53cmFwcGVkIiksbnVsbD09PXR8fG51bGw9PWV8fChBcnJheS5pc0FycmF5KHQpP3RbMV06dCk9PT1lfHwhKCFBcnJheS5pc0FycmF5KHQpfHwic3RyaW5nIiE9dHlwZW9mIGUpJiZzcih0LGUpPj0wfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB0dT17dGV4dEVuZDowLGtleTowLGtleUVuZDowLHZhbHVlOjAsdmFsdWVFbmQ6MH07ZnVuY3Rpb24gZXUodCl7cmV0dXJuIHQuc3Vic3RyaW5nKHR1LmtleSx0dS5rZXlFbmQpfWZ1bmN0aW9uIG51KHQpe3JldHVybiB0LnN1YnN0cmluZyh0dS52YWx1ZSx0dS52YWx1ZUVuZCl9ZnVuY3Rpb24gb3UodCxlKXtjb25zdCBuPXR1LnRleHRFbmQ7cmV0dXJuIG49PT1lPy0xOihlPXR1LmtleUVuZD0oZnVuY3Rpb24gbyh0LGUsbil7Zm9yKDtlPG4mJnQuY2hhckNvZGVBdChlKT4zMjspZSsrO3JldHVybiBlfSkodCx0dS5rZXk9ZSxuKSxydSh0LGUsbikpfWZ1bmN0aW9uIGl1KHQsZSl7Y29uc3Qgbj10dS50ZXh0RW5kO2xldCBvPXR1LmtleT1ydSh0LGUsbik7cmV0dXJuIG49PT1vPy0xOihvPXR1LmtleUVuZD0oZnVuY3Rpb24gaSh0LGUsbil7bGV0IG87Zm9yKDtlPG4mJig0NT09PShvPXQuY2hhckNvZGVBdChlKSl8fDk1PT09b3x8KC0zMyZvKT49NjUmJigtMzMmbyk8PTkwfHxvPj00OCYmbzw9NTcpOyllKys7cmV0dXJuIGV9KSh0LG8sbiksbz1zdSh0LG8sbiw1OCksbz10dS52YWx1ZT1ydSh0LG8sbiksbz10dS52YWx1ZUVuZD0oZnVuY3Rpb24gYSh0LGUsbil7bGV0IG89LTEsaT0tMSxhPS0xLHI9ZSxzPXI7Zm9yKDtyPG47KXtjb25zdCBsPXQuY2hhckNvZGVBdChyKyspO2lmKDU5PT09bClyZXR1cm4gczszND09PWx8fDM5PT09bD9zPXI9bHUodCxsLHIsbik6ZT09PXItNCYmODU9PT1hJiY4Mj09PWkmJjc2PT09byYmNDA9PT1sP3M9cj1sdSh0LDQxLHIsbik6bD4zMiYmKHM9ciksYT1pLGk9byxvPS0zMyZsfXJldHVybiBzfSkodCxvLG4pLHN1KHQsbyxuLDU5KSl9ZnVuY3Rpb24gYXUodCl7dHUua2V5PTAsdHUua2V5RW5kPTAsdHUudmFsdWU9MCx0dS52YWx1ZUVuZD0wLHR1LnRleHRFbmQ9dC5sZW5ndGh9ZnVuY3Rpb24gcnUodCxlLG4pe2Zvcig7ZTxuJiZ0LmNoYXJDb2RlQXQoZSk8PTMyOyllKys7cmV0dXJuIGV9ZnVuY3Rpb24gc3UodCxlLG4sbyl7cmV0dXJuKGU9cnUodCxlLG4pKTxuJiYobmdEZXZNb2RlJiZ0LmNoYXJDb2RlQXQoZSkhPT1vJiZjdSh0LFN0cmluZy5mcm9tQ2hhckNvZGUobyksZSksZSsrKSxlfWZ1bmN0aW9uIGx1KHQsZSxuLG8pe2xldCBpPS0xLGE9bjtmb3IoO2E8bzspe2NvbnN0IG49dC5jaGFyQ29kZUF0KGErKyk7aWYobj09ZSYmOTIhPT1pKXJldHVybiBhO2k9OTI9PW4mJjkyPT09aT8wOm59dGhyb3cgbmdEZXZNb2RlP2N1KHQsU3RyaW5nLmZyb21DaGFyQ29kZShlKSxvKTpuZXcgRXJyb3J9ZnVuY3Rpb24gY3UodCxlLG4pe3Rocm93IG5nRGV2TW9kZSYmbG4oInN0cmluZyI9PXR5cGVvZiB0LCEwLCJTdHJpbmcgZXhwZWN0ZWQgaGVyZSIpLGJuKGBNYWxmb3JtZWQgc3R5bGUgYXQgbG9jYXRpb24gJHtufSBpbiBzdHJpbmcgJ2ArdC5zdWJzdHJpbmcoMCxuKSsiWz4+Iit0LnN1YnN0cmluZyhuLG4rMSkrIjw8XSIrdC5zdWJzdHIobisxKStgJy4gRXhwZWN0aW5nICcke2V9Jy5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZHUodCxlLG4pe3JldHVybiBodSh0LGUsbiwhMSksZHV9ZnVuY3Rpb24gcHUodCxlKXtyZXR1cm4gaHUodCxlLG51bGwsITApLHB1fWZ1bmN0aW9uIG11KHQpe2J1KHZ1LHV1LHQsITEpfWZ1bmN0aW9uIHV1KHQsZSl7Zm9yKGxldCBuPShmdW5jdGlvbiBuKHQpe3JldHVybiBhdSh0KSxpdSh0LHJ1KHQsMCx0dS50ZXh0RW5kKSl9KShlKTtuPj0wO249aXUoZSxuKSl2dSh0LGV1KGUpLG51KGUpKX1mdW5jdGlvbiBmdSh0KXtidShhcixndSx0LCEwKX1mdW5jdGlvbiBndSh0LGUpe2ZvcihsZXQgbj0oZnVuY3Rpb24gbih0KXtyZXR1cm4gYXUodCksb3UodCxydSh0LDAsdHUudGV4dEVuZCkpfSkoZSk7bj49MDtuPW91KGUsbikpYXIodCxldShlKSwhMCl9ZnVuY3Rpb24gaHUodCxlLG4sbyl7Y29uc3QgaT1maSgpLGE9Z2koKSxyPURpKDIpO2EuZmlyc3RVcGRhdGVQYXNzJiZfdShhLHQscixvKSxlIT09YWMmJkZwKGkscixlKSYmeHUoYSxhLmRhdGFbR2koKV0saSxpWzExXSx0LGlbcisxXT0oZnVuY3Rpb24gcyh0LGUpe3JldHVybiBudWxsPT10fHwoInN0cmluZyI9PXR5cGVvZiBlP3QrPWU6Im9iamVjdCI9PXR5cGVvZiB0JiYodD1HZSh0cyh0KSkpKSx0fSkoZSxuKSxvLHIpfWZ1bmN0aW9uIGJ1KHQsZSxuLG8pe2NvbnN0IGk9Z2koKSxhPURpKDIpO2kuZmlyc3RVcGRhdGVQYXNzJiZfdShpLG51bGwsYSxvKTtjb25zdCByPWZpKCk7aWYobiE9PWFjJiZGcChyLGEsbikpe2NvbnN0IHM9aS5kYXRhW0dpKCldO2lmKHd1KHMsbykmJiF5dShpLGEpKXtpZihuZ0Rldk1vZGUpe2NvbnN0IHQ9aS5kYXRhW2FdO2xuKEFycmF5LmlzQXJyYXkodCk/dFsxXTp0LCExLCJTdHlsaW5nIGxpbmtlZCBsaXN0IHNoYWRvdyBpbnB1dCBzaG91bGQgYmUgbWFya2VkIGFzICdmYWxzZSciKX1sZXQgdD1vP3MuY2xhc3Nlc1dpdGhvdXRIb3N0OnMuc3R5bGVzV2l0aG91dEhvc3Q7bmdEZXZNb2RlJiYhMT09PW8mJm51bGwhPT10JiZsbih0LmVuZHNXaXRoKCI7IiksITAsIkV4cGVjdGluZyBzdGF0aWMgcG9ydGlvbiB0byBlbmQgd2l0aCAnOyciKSxudWxsIT09dCYmKG49V2UodCxufHwiIikpLEVtKGkscyxyLG4sbyl9ZWxzZSEoZnVuY3Rpb24gbCh0LGUsbixvLGksYSxyLHMpe2k9PT1hYyYmKGk9V24pO2xldCBsPTAsYz0wLGQ9MDxpLmxlbmd0aD9pWzBdOm51bGwscD0wPGEubGVuZ3RoP2FbMF06bnVsbDtmb3IoO251bGwhPT1kfHxudWxsIT09cDspe25nRGV2TW9kZSYmbW4obCw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpLG5nRGV2TW9kZSYmbW4oYyw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpO2NvbnN0IG09bDxpLmxlbmd0aD9pW2wrMV06dm9pZCAwLHU9YzxhLmxlbmd0aD9hW2MrMV06dm9pZCAwO2xldCBmLGc9bnVsbDtkPT09cD8obCs9MixjKz0yLG0hPT11JiYoZz1wLGY9dSkpOm51bGw9PT1wfHxudWxsIT09ZCYmZDxwPyhsKz0yLGc9ZCk6KG5nRGV2TW9kZSYmaG4ocCwiRXhwZWN0aW5nIHRvIGhhdmUgYSB2YWxpZCBrZXkiKSxjKz0yLGc9cCxmPXUpLG51bGwhPT1nJiZ4dSh0LGUsbixvLGcsZixyLHMpLGQ9bDxpLmxlbmd0aD9pW2xdOm51bGwscD1jPGEubGVuZ3RoP2FbY106bnVsbH19KShpLHMscixyWzExXSxyW2ErMV0sclthKzFdPShmdW5jdGlvbiBzKHQsZSxuKXtpZihudWxsPT1ufHwiIj09PW4pcmV0dXJuIFduO2NvbnN0IG89W10saT10cyhuKTtpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXQobyxpW2VdLCEwKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgaSlmb3IoY29uc3QgZSBpbiBpKWkuaGFzT3duUHJvcGVydHkoZSkmJnQobyxlLGlbZV0pO2Vsc2Uic3RyaW5nIj09dHlwZW9mIGk/ZShvLGkpOm5nRGV2TW9kZSYmYm4oIlVuc3VwcG9ydGVkIHN0eWxpbmcgdHlwZSAiK3R5cGVvZiBpKyI6ICIraSk7cmV0dXJuIG99KSh0LGUsbiksbyxhKX19ZnVuY3Rpb24geXUodCxlKXtyZXR1cm4gZT49dC5leHBhbmRvU3RhcnRJbmRleH1mdW5jdGlvbiBfdSh0LGUsbixvKXtuZ0Rldk1vZGUmJlRvKHQpO2NvbnN0IGk9dC5kYXRhO2lmKG51bGw9PT1pW24rMV0pe2NvbnN0IGE9aVtHaSgpXTtuZ0Rldk1vZGUmJmhuKGEsIlROb2RlIGV4cGVjdGVkIik7Y29uc3Qgcj15dSh0LG4pO3d1KGEsbykmJm51bGw9PT1lJiYhciYmKGU9ITEpLGU9KGZ1bmN0aW9uIGEodCxlLG4sbyl7Y29uc3QgaT1UaSh0KTtsZXQgYT1vP2UucmVzaWR1YWxDbGFzc2VzOmUucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PWkpMD09PShvP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3MpJiYobj1NdShuPUN1KG51bGwsdCxlLG4sbyksZS5hdHRycyxvKSxhPW51bGwpO2Vsc2V7Y29uc3Qgcj1lLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09cnx8dFtyXSE9PWkpaWYobj1DdShpLHQsZSxuLG8pLG51bGw9PT1hKXtsZXQgbj0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz1uP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3M7aWYoMCE9PW1jKG8pKXJldHVybiB0W2NjKG8pXX0pKHQsZSxvKTt2b2lkIDAhPT1uJiZBcnJheS5pc0FycmF5KG4pJiYobj1DdShudWxsLHQsZSxuWzFdLG8pLG49TXUobixlLmF0dHJzLG8pLChmdW5jdGlvbiBzKHQsZSxuLG8pe2NvbnN0IGk9bj9lLmNsYXNzQmluZGluZ3M6ZS5zdHlsZUJpbmRpbmdzO25nRGV2TW9kZSYmY24obWMoaSksMCwiRXhwZWN0aW5nIHRvIGhhdmUgYXQgbGVhc3Qgb25lIHRlbXBsYXRlIHN0eWxpbmcgYmluZGluZy4iKSx0W2NjKGkpXT1vfSkodCxlLG8sbikpfWVsc2UgYT0oZnVuY3Rpb24gbCh0LGUsbil7bGV0IG87Y29uc3QgaT1lLmRpcmVjdGl2ZUVuZDtuZ0Rldk1vZGUmJmNuKGUuZGlyZWN0aXZlU3R5bGluZ0xhc3QsLTEsIkJ5IHRoZSB0aW1lIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYXQgbGVhc3Qgb25lIGhvc3RCaW5kaW5ncy1ub2RlIHN0eWxpbmcgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIGV4ZWN1dGVkLiIpO2ZvcihsZXQgYT0xK2UuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7YTxpO2ErKylvPU11KG8sdFthXS5ob3N0QXR0cnMsbik7cmV0dXJuIE11KG8sZS5hdHRycyxuKX0pKHQsZSxvKX1yZXR1cm4gdm9pZCAwIT09YSYmKG8/ZS5yZXNpZHVhbENsYXNzZXM9YTplLnJlc2lkdWFsU3R5bGVzPWEpLG59KShpLGEsZSxvKSwoZnVuY3Rpb24gcih0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZUbyhnaSgpKTtsZXQgcj1hP2UuY2xhc3NCaW5kaW5nczplLnN0eWxlQmluZGluZ3Mscz1jYyhyKSxsPW1jKHIpO3Rbb109bjtsZXQgYyxkPSExO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IHQ9bjtjPXRbMV0sKG51bGw9PT1jfHxzcih0LGMpPjApJiYoZD0hMCl9ZWxzZSBjPW47aWYoaSlpZigwIT09bCl7Y29uc3QgZT1jYyh0W3MrMV0pO3RbbysxXT1sYyhlLHMpLDAhPT1lJiYodFtlKzFdPXVjKHRbZSsxXSxvKSksdFtzKzFdPShmdW5jdGlvbiBwKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmYW4odCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZybihlLDAsMzI3NjcpLDEzMTA3MSZ0fGU8PDE3fSkodFtzKzFdLG8pfWVsc2UgdFtvKzFdPWxjKHMsMCksMCE9PXMmJih0W3MrMV09dWModFtzKzFdLG8pKSxzPW87ZWxzZSB0W28rMV09bGMobCwwKSxuZ0Rldk1vZGUmJmxuKDAhPT1zJiYwPT09bCwhMSwiQWRkaW5nIHRlbXBsYXRlIGJpbmRpbmdzIGFmdGVyIGhvc3RCaW5kaW5ncyBpcyBub3QgYWxsb3dlZC4iKSwwPT09cz9zPW86dFtsKzFdPXVjKHRbbCsxXSxvKSxsPW87ZCYmKHRbbysxXT1wYyh0W28rMV0pKSxRbSh0LGMsbywhMCksUW0odCxjLG8sITEpLChmdW5jdGlvbiBtKHQsZSxuLG8saSl7Y29uc3QgYT1pP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXM7bnVsbCE9YSYmInN0cmluZyI9PXR5cGVvZiBlJiZzcihhLGUpPj0wJiYobltvKzFdPWdjKG5bbysxXSkpfSkoZSxjLHQsbyxhKSxyPWxjKHMsbCksYT9lLmNsYXNzQmluZGluZ3M9cjplLnN0eWxlQmluZGluZ3M9cn0pKGksYSxlLG4scixvKX19ZnVuY3Rpb24gQ3UodCxlLG4sbyxpKXtsZXQgYT1udWxsO2NvbnN0IHI9bi5kaXJlY3RpdmVFbmQ7bGV0IHM9bi5kaXJlY3RpdmVTdHlsaW5nTGFzdDtmb3IoLTE9PT1zP3M9bi5kaXJlY3RpdmVTdGFydDpzKys7czxyJiYoYT1lW3NdLG5nRGV2TW9kZSYmaG4oYSwiZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCIpLG89TXUobyxhLmhvc3RBdHRycyxpKSxhIT09dCk7KXMrKztyZXR1cm4gbnVsbCE9PXQmJihuLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PXMpLG99ZnVuY3Rpb24gTXUodCxlLG4pe2NvbnN0IG89bj8xOjI7bGV0IGk9LTE7aWYobnVsbCE9PWUpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHI9ZVthXTsibnVtYmVyIj09dHlwZW9mIHI/aT1yOmk9PT1vJiYoQXJyYXkuaXNBcnJheSh0KXx8KHQ9dm9pZCAwPT09dD9bXTpbIiIsdF0pLGFyKHQsciwhIW58fGVbKythXSkpfXJldHVybiB2b2lkIDA9PT10P251bGw6dH1mdW5jdGlvbiB2dSh0LGUsbil7YXIodCxlLHRzKG4pKX1mdW5jdGlvbiB4dSh0LGUsbixvLGksYSxyLHMpe2lmKCEoMyZlLnR5cGUpKXJldHVybjtjb25zdCBsPXQuZGF0YSxjPWxbcysxXTtQdShmYyhjKT9PdShsLGUsbixpLG1jKGMpLHIpOnZvaWQgMCl8fChQdShhKXx8ZGMoYykmJihhPU91KGwsbnVsbCxuLGkscyxyKSksKGZ1bmN0aW9uIGQodCxlLG4sbyxpKXtjb25zdCBhPSRvKHQpO2lmKGUpaT8obmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBZGRDbGFzcysrLGE/dC5hZGRDbGFzcyhuLG8pOihuZ0Rldk1vZGUmJmhuKG4uY2xhc3NMaXN0LCJIVE1MRWxlbWVudCBleHBlY3RlZCIpLG4uY2xhc3NMaXN0LmFkZChvKSkpOihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZUNsYXNzKyssYT90LnJlbW92ZUNsYXNzKG4sbyk6bi5jbGFzc0xpc3QucmVtb3ZlKG8pKTtlbHNle2xldCBlPS0xPT09by5pbmRleE9mKCItIik/dm9pZCAwOmNsLkRhc2hDYXNlO2lmKG51bGw9PWkpbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVTdHlsZSsrLGE/dC5yZW1vdmVTdHlsZShuLG8sZSk6bi5zdHlsZS5yZW1vdmVQcm9wZXJ0eShvKTtlbHNle2NvbnN0IHI9InN0cmluZyI9PXR5cGVvZiBpJiZpLmVuZHNXaXRoKCIhaW1wb3J0YW50Iik7ciYmKGk9aS5zbGljZSgwLC0xMCksZXw9Y2wuSW1wb3J0YW50KSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFN0eWxlKyssYT90LnNldFN0eWxlKG4sbyxpLGUpOihuZ0Rldk1vZGUmJmhuKG4uc3R5bGUsIkhUTUxFbGVtZW50IGV4cGVjdGVkIiksbi5zdHlsZS5zZXRQcm9wZXJ0eShvLGkscj8iaW1wb3J0YW50IjoiIikpfX19KShvLHIsbmkoR2koKSxuKSxpLGEpKX1mdW5jdGlvbiBPdSh0LGUsbixvLGksYSl7Y29uc3Qgcj1udWxsPT09ZTtsZXQgcztmb3IoO2k+MDspe2NvbnN0IGU9dFtpXSxhPUFycmF5LmlzQXJyYXkoZSksbD1hP2VbMV06ZSxjPW51bGw9PT1sO2xldCBkPW5baSsxXTtkPT09YWMmJihkPWM/V246dm9pZCAwKTtsZXQgcD1jP3JyKGQsbyk6bD09PW8/ZDp2b2lkIDA7aWYoYSYmIVB1KHApJiYocD1ycihlLG8pKSxQdShwKSYmKHM9cCxyKSlyZXR1cm4gcztjb25zdCBtPXRbaSsxXTtpPXI/Y2MobSk6bWMobSl9aWYobnVsbCE9PWUpe2xldCB0PWE/ZS5yZXNpZHVhbENsYXNzZXM6ZS5yZXNpZHVhbFN0eWxlcztudWxsIT10JiYocz1ycih0LG8pKX1yZXR1cm4gc31mdW5jdGlvbiBQdSh0KXtyZXR1cm4gdm9pZCAwIT09dH1mdW5jdGlvbiB3dSh0LGUpe3JldHVybiAwIT0odC5mbGFncyYoZT8xNjozMikpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBrdSh0LGU9IiIpe2NvbnN0IG49ZmkoKSxvPWdpKCksaT10K2dvO25nRGV2TW9kZSYmbG4od2koKSxvLmJpbmRpbmdTdGFydEluZGV4LCJ0ZXh0IG5vZGVzIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBhbnkgYmluZGluZ3MiKSxuZ0Rldk1vZGUmJl9uKG4saSk7Y29uc3QgYT1vLmZpcnN0Q3JlYXRlUGFzcz9aYyhvLGksMSxlLG51bGwpOm8uZGF0YVtpXSxyPW5baV09eWwoblsxMV0sZSk7SGwobyxuLHIsYSksQ2koYSwhMSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFN1KHQpe3JldHVybiBEdSgiIix0LCIiKSxTdX1mdW5jdGlvbiBEdSh0LGUsbil7Y29uc3Qgbz1maSgpLGk9R3Aobyx0LGUsbik7cmV0dXJuIGkhPT1hYyYmamQobyxHaSgpLGkpLER1fWZ1bmN0aW9uIEV1KHQsZSxuLG8saSl7Y29uc3QgYT1maSgpLHI9V3AoYSx0LGUsbixvLGkpO3JldHVybiByIT09YWMmJmpkKGEsR2koKSxyKSxFdX1mdW5jdGlvbiBSdSh0LGUsbixvLGksYSxyKXtjb25zdCBzPWZpKCksbD1ZcChzLHQsZSxuLG8saSxhLHIpO3JldHVybiBsIT09YWMmJmpkKHMsR2koKSxsKSxSdX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEF1KHQsZSxuKXtidShhcixndSxHcChmaSgpLHQsZSxuKSwhMCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBUdSh0LGUsbil7Y29uc3Qgbz1maSgpLGk9U2koKTtpZihGcChvLGksZSkpe2NvbnN0IGE9Z2koKSxyPVlpKCk7bGQoYSxyLG8sdCxlLG9bMTFdLG4sITApLG5nRGV2TW9kZSYmemQoYS5kYXRhLHIsdCxpKX1yZXR1cm4gVHV9ZnVuY3Rpb24gTnUodCxlLG4pe2NvbnN0IG89ZmkoKSxpPVNpKCk7aWYoRnAobyxpLGUpKXtjb25zdCBhPWdpKCkscj1ZaSgpO2xkKGEscixvLHQsZSxMZChUaShhLmRhdGEpLHIsbyksbiwhMCksbmdEZXZNb2RlJiZ6ZChhLmRhdGEscix0LGkpfXJldHVybiBOdX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmKGpuLm5nSTE4bkNsb3N1cmVNb2RlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImZ1bmN0aW9uIj09dHlwZW9mIGdvb2cuZ2V0TXNnKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgenU9dm9pZCAwO3ZhciBJdT1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLHp1XSxbWyJBTSIsIlBNIl0senUsenVdLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLHp1LFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSx6dSxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLHp1LCJ7MX0gJ2F0JyB7MH0iLHp1XSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gSHUodCl7Y29uc3QgZT1NYXRoLmZsb29yKE1hdGguYWJzKHQpKSxuPXQudG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIDE9PT1lJiYwPT09bj8xOjV9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IEZ1PXt9O2Z1bmN0aW9uIEx1KHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtsZXQgbz1WdShlKTtpZihvKXJldHVybiBvO2NvbnN0IGk9ZS5zcGxpdCgiLSIpWzBdO2lmKG89VnUoaSksbylyZXR1cm4gbztpZigiZW4iPT09aSlyZXR1cm4gSXU7dGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3R9Ii5gKX1mdW5jdGlvbiBCdSh0KXtyZXR1cm4gTHUodClbanUuUGx1cmFsQ2FzZV19ZnVuY3Rpb24gVnUodCl7cmV0dXJuIHQgaW4gRnV8fChGdVt0XT1qbi5uZyYmam4ubmcuY29tbW9uJiZqbi5uZy5jb21tb24ubG9jYWxlcyYmam4ubmcuY29tbW9uLmxvY2FsZXNbdF0pLEZ1W3RdfXZhciBqdTshKGZ1bmN0aW9uKHQpe3RbdC5Mb2NhbGVJZD0wXT0iTG9jYWxlSWQiLHRbdC5EYXlQZXJpb2RzRm9ybWF0PTFdPSJEYXlQZXJpb2RzRm9ybWF0Iix0W3QuRGF5UGVyaW9kc1N0YW5kYWxvbmU9Ml09IkRheVBlcmlvZHNTdGFuZGFsb25lIix0W3QuRGF5c0Zvcm1hdD0zXT0iRGF5c0Zvcm1hdCIsdFt0LkRheXNTdGFuZGFsb25lPTRdPSJEYXlzU3RhbmRhbG9uZSIsdFt0Lk1vbnRoc0Zvcm1hdD01XT0iTW9udGhzRm9ybWF0Iix0W3QuTW9udGhzU3RhbmRhbG9uZT02XT0iTW9udGhzU3RhbmRhbG9uZSIsdFt0LkVyYXM9N109IkVyYXMiLHRbdC5GaXJzdERheU9mV2Vlaz04XT0iRmlyc3REYXlPZldlZWsiLHRbdC5XZWVrZW5kUmFuZ2U9OV09IldlZWtlbmRSYW5nZSIsdFt0LkRhdGVGb3JtYXQ9MTBdPSJEYXRlRm9ybWF0Iix0W3QuVGltZUZvcm1hdD0xMV09IlRpbWVGb3JtYXQiLHRbdC5EYXRlVGltZUZvcm1hdD0xMl09IkRhdGVUaW1lRm9ybWF0Iix0W3QuTnVtYmVyU3ltYm9scz0xM109Ik51bWJlclN5bWJvbHMiLHRbdC5OdW1iZXJGb3JtYXRzPTE0XT0iTnVtYmVyRm9ybWF0cyIsdFt0LkN1cnJlbmN5Q29kZT0xNV09IkN1cnJlbmN5Q29kZSIsdFt0LkN1cnJlbmN5U3ltYm9sPTE2XT0iQ3VycmVuY3lTeW1ib2wiLHRbdC5DdXJyZW5jeU5hbWU9MTddPSJDdXJyZW5jeU5hbWUiLHRbdC5DdXJyZW5jaWVzPTE4XT0iQ3VycmVuY2llcyIsdFt0LkRpcmVjdGlvbmFsaXR5PTE5XT0iRGlyZWN0aW9uYWxpdHkiLHRbdC5QbHVyYWxDYXNlPTIwXT0iUGx1cmFsQ2FzZSIsdFt0LkV4dHJhRGF0YT0yMV09IkV4dHJhRGF0YSJ9KShqdXx8KGp1PXt9KSk7Y29uc3QgVXU9WyJ6ZXJvIiwib25lIiwidHdvIiwiZmV3IiwibWFueSJdLEd1PSJlbi1VUyIsV3U9e21hcmtlcjoiZWxlbWVudCJ9LFl1PXttYXJrZXI6IklDVSJ9O3ZhciBxdTshKGZ1bmN0aW9uKHQpe3RbdC5TSElGVD0yXT0iU0hJRlQiLHRbdC5BUFBFTkRfRUFHRVJMWT0xXT0iQVBQRU5EX0VBR0VSTFkiLHRbdC5DT01NRU5UPTJdPSJDT01NRU5UIn0pKHF1fHwocXU9e30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBadT1HdTtmdW5jdGlvbiBYdSh0KXtobih0LCJFeHBlY3RlZCBsb2NhbGVJZCB0byBiZSBkZWZpbmVkIiksInN0cmluZyI9PXR5cGVvZiB0JiYoWnU9dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEt1KHQsZSxuKXtjb25zdCBvPWUuaW5zZXJ0QmVmb3JlSW5kZXgsaT1BcnJheS5pc0FycmF5KG8pP29bMF06bztyZXR1cm4gbnVsbD09PWk/VGwodCwwLG4pOihuZ0Rldk1vZGUmJl9uKG4saSksZWkobltpXSkpfWZ1bmN0aW9uIEp1KHQsZSxuLG8saSl7Y29uc3QgYT1lLmluc2VydEJlZm9yZUluZGV4O2lmKEFycmF5LmlzQXJyYXkoYSkpe25nRGV2TW9kZSYmeW4obyk7bGV0IHI9byxzPW51bGw7aWYoMyZlLnR5cGV8fChzPXIscj1pKSxudWxsIT09ciYmMD09KDImZS5mbGFncykpZm9yKGxldCBlPTE7ZTxhLmxlbmd0aDtlKyspU2wodCxyLG5bYVtlXV0scywhMSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBRdSh0LGUpe2lmKG5nRGV2TW9kZSYmbG4oZS5pbnNlcnRCZWZvcmVJbmRleCxudWxsLCJXZSBleHBlY3QgdGhhdCBpbnNlcnRCZWZvcmVJbmRleCBpcyBub3Qgc2V0IiksdC5wdXNoKGUpLHQubGVuZ3RoPjEpZm9yKGxldCBuPXQubGVuZ3RoLTI7bj49MDtuLS0pe2NvbnN0IG89dFtuXTskdShvKXx8dGYobyxlKSYmbnVsbD09PWVmKG8pJiZuZihvLGUuaW5kZXgpfX1mdW5jdGlvbiAkdSh0KXtyZXR1cm4hKDY0JnQudHlwZSl9ZnVuY3Rpb24gdGYodCxlKXtyZXR1cm4gJHUoZSl8fHQuaW5kZXg+ZS5pbmRleH1mdW5jdGlvbiBlZih0KXtjb25zdCBlPXQuaW5zZXJ0QmVmb3JlSW5kZXg7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZVswXTplfWZ1bmN0aW9uIG5mKHQsZSl7Y29uc3Qgbj10Lmluc2VydEJlZm9yZUluZGV4O0FycmF5LmlzQXJyYXkobik/blswXT1lOihJbChLdSxKdSksdC5pbnNlcnRCZWZvcmVJbmRleD1lKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gb2YodCxlKXtjb25zdCBuPXQuZGF0YVtlXTtpZihudWxsPT09bnx8InN0cmluZyI9PXR5cGVvZiBuKXJldHVybiBudWxsOyFuZ0Rldk1vZGV8fG4uaGFzT3duUHJvcGVydHkoInRWaWV3cyIpfHxuLmhhc093blByb3BlcnR5KCJjdXJyZW50Q2FzZUxWaWV3SW5kZXgiKXx8Ym4oIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1J3wnVEljdUNvbnRhaW5lcicsIGJ1dCBnb3Q6ICIrbik7Y29uc3Qgbz1uLmhhc093blByb3BlcnR5KCJjdXJyZW50Q2FzZUxWaWV3SW5kZXgiKT9uOm4udmFsdWU7cmV0dXJuIG5nRGV2TW9kZSYma28obyksb31mdW5jdGlvbiBhZih0LGUsbil7Y29uc3Qgbz1YYyh0LG4sNjQsbnVsbCxudWxsKTtyZXR1cm4gUXUoZSxvKSxvfWZ1bmN0aW9uIHJmKHQsZSl7Y29uc3Qgbj1lW3QuY3VycmVudENhc2VMVmlld0luZGV4XTtyZXR1cm4gbnVsbD09PW4/bjpuPDA/fm46bn1mdW5jdGlvbiBzZih0KXtyZXR1cm4gdD4+PjE3fWZ1bmN0aW9uIGxmKHQpe3JldHVybigxMzEwNzAmdCk+Pj4xfWZ1bmN0aW9uIGNmKHQpe3JldHVybiAxJnR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgZGY9MCxwZj0wO2Z1bmN0aW9uIG1mKHQsZSxuLG8pe25nRGV2TW9kZSYmeW4obyk7Y29uc3QgaT1uWzExXTtsZXQgYSxyPW51bGw7Zm9yKGxldCBzPTA7czxlLmxlbmd0aDtzKyspe2NvbnN0IGw9ZVtzXTtpZigic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IHQ9ZVsrK3NdO251bGw9PT1uW3RdJiYobmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVUZXh0Tm9kZSsrLG5nRGV2TW9kZSYmX24obix0KSxuW3RdPXlsKGksbCkpfWVsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBsKXN3aXRjaCgxJmwpe2Nhc2UgMDpjb25zdCBjPXNmKGwpO2xldCBkLHA7aWYobnVsbD09PXImJihyPWMsYT1SbChpLG8pKSxjPT09cj8oZD1vLHA9YSk6KGQ9bnVsbCxwPWVpKG5bY10pKSxudWxsIT09cCl7bmdEZXZNb2RlJiZ5bihwKTtjb25zdCBlPWxmKGwpO25nRGV2TW9kZSYmZm4oZSxnbywiTWlzc2luZyByZWYiKTtjb25zdCBvPW5bZV07bmdEZXZNb2RlJiZ5bihvKSxTbChpLHAsbyxkLCExKTtjb25zdCBhPW9mKHQsZSk7aWYobnVsbCE9PWEmJiJvYmplY3QiPT10eXBlb2YgYSl7bmdEZXZNb2RlJiZrbyhhKTtjb25zdCBlPXJmKGEsbik7bnVsbCE9PWUmJm1mKHQsYS5jcmVhdGVbZV0sbixuW2EuYW5jaG9ySWR4XSl9fWJyZWFrO2Nhc2UgMTpjb25zdCBtPWVbKytzXSx1PWVbKytzXTtNZChpLG5pKGw+Pj4xLG4pLG51bGwsbnVsbCxtLHUsbnVsbCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgbXV0YXRlIG9wZXJhdGlvbiBmb3IgIiR7bH0iYCl9ZWxzZSBzd2l0Y2gobCl7Y2FzZSBZdTpjb25zdCB0PWVbKytzXSxvPWVbKytzXTtudWxsPT09bltvXSYmKG5nRGV2TW9kZSYmbG4odHlwZW9mIHQsInN0cmluZyIsYEV4cGVjdGVkICIke3R9IiB0byBiZSBhIGNvbW1lbnQgbm9kZSB2YWx1ZWApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLG5nRGV2TW9kZSYmTm8obixvKSxMcyhuW29dPUNsKGksdCksbikpO2JyZWFrO2Nhc2UgV3U6Y29uc3QgYT1lWysrc10scj1lWysrc107bnVsbD09PW5bcl0mJihuZ0Rldk1vZGUmJmxuKHR5cGVvZiBhLCJzdHJpbmciLGBFeHBlY3RlZCAiJHthfSIgdG8gYmUgYW4gZWxlbWVudCBub2RlIHRhZyBuYW1lYCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVFbGVtZW50KyssbmdEZXZNb2RlJiZObyhuLHIpLExzKG5bcl09TWwoaSxhLG51bGwpLG4pKTticmVhaztkZWZhdWx0Om5nRGV2TW9kZSYmYm4oYFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgbXV0YXRlIG9wZXJhdGlvbiBmb3IgIiR7bH0iYCl9fX1mdW5jdGlvbiB1Zih0LGUsbixvLGkpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXtjb25zdCByPW5bYV0scz1uWysrYV07aWYociZpKXtsZXQgaT0iIjtmb3IobGV0IHI9YSsxO3I8PWErcztyKyspe2NvbnN0IGE9bltyXTtpZigic3RyaW5nIj09dHlwZW9mIGEpaSs9YTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYSlpZihhPDApaSs9JGUoZVtvLWFdKTtlbHNle2NvbnN0IHM9YT4+PjI7c3dpdGNoKDMmYSl7Y2FzZSAxOmNvbnN0IGE9blsrK3JdLGw9blsrK3JdLGM9dC5kYXRhW3NdO25nRGV2TW9kZSYmaG4oYywiRXhwZXJ0aW5nIFROb2RlIG9yIHN0cmluZyIpLCJzdHJpbmciPT10eXBlb2YgYz9NZChlWzExXSxlW3NdLG51bGwsYyxhLGksbCk6bGQodCxjLGUsYSxpLGVbMTFdLGwsITEpO2JyZWFrO2Nhc2UgMDpjb25zdCBkPWVbc107bnVsbCE9PWQmJl9sKGVbMTFdLGQsaSk7YnJlYWs7Y2FzZSAyOmdmKHQsb2YodCxzKSxlLGkpO2JyZWFrO2Nhc2UgMzpmZih0LG9mKHQscyksbyxlKX19fX1lbHNle2NvbnN0IGk9blthKzFdO2lmKGk+MCYmMz09KDMmaSkpe2NvbnN0IG49b2YodCxpPj4+Mik7ZVtuLmN1cnJlbnRDYXNlTFZpZXdJbmRleF08MCYmZmYodCxuLG8sZSl9fWErPXN9fWZ1bmN0aW9uIGZmKHQsZSxuLG8pe25nRGV2TW9kZSYmX24obyxlLmN1cnJlbnRDYXNlTFZpZXdJbmRleCk7bGV0IGk9b1tlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF07aWYobnVsbCE9PWkpe2xldCBhPWRmO2k8MCYmKGk9b1tlLmN1cnJlbnRDYXNlTFZpZXdJbmRleF09fmksYT0tMSksdWYodCxvLGUudXBkYXRlW2ldLG4sYSl9fWZ1bmN0aW9uIGdmKHQsZSxuLG8pe2NvbnN0IGk9KGZ1bmN0aW9uIGEodCxlKXtsZXQgbj10LmNhc2VzLmluZGV4T2YoZSk7aWYoLTE9PT1uKXN3aXRjaCh0LnR5cGUpe2Nhc2UgMTp7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49QnUoZSkocGFyc2VJbnQodCwxMCkpLG89VXVbbl07cmV0dXJuIHZvaWQgMCE9PW8/bzoib3RoZXIifSkoZSwoZnVuY3Rpb24gbygpe3JldHVybiBadX0pKCkpO249dC5jYXNlcy5pbmRleE9mKG8pLC0xPT09biYmIm90aGVyIiE9PW8mJihuPXQuY2FzZXMuaW5kZXhPZigib3RoZXIiKSk7YnJlYWt9Y2FzZSAwOm49dC5jYXNlcy5pbmRleE9mKCJvdGhlciIpfXJldHVybi0xPT09bj9udWxsOm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSxvKTtpZihyZihlLG4pIT09aSYmKGhmKHQsZSxuKSxuW2UuY3VycmVudENhc2VMVmlld0luZGV4XT1udWxsPT09aT9udWxsOn5pLG51bGwhPT1pKSl7Y29uc3Qgbz1uW2UuYW5jaG9ySWR4XTtvJiYobmdEZXZNb2RlJiZ5bihvKSxtZih0LGUuY3JlYXRlW2ldLG4sbykpfX1mdW5jdGlvbiBoZih0LGUsbil7bGV0IG89cmYoZSxuKTtpZihudWxsIT09byl7Y29uc3QgaT1lLnJlbW92ZVtvXTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7Y29uc3Qgbz1pW2VdO2lmKG8+MCl7Y29uc3QgdD1uaShvLG4pO251bGwhPT10JiZWbChuWzExXSx0KX1lbHNlIGhmKHQsb2YodCx+byksbil9fX1mdW5jdGlvbiBiZigpe2NvbnN0IHQ9W107bGV0IGUsbixvPS0xO2Z1bmN0aW9uIGkodCxlKXtvPTA7Y29uc3QgaT1yZih0LGUpO251bGwhPT1pPyhuZ0Rldk1vZGUmJnJuKGksMCx0LmNhc2VzLmxlbmd0aC0xKSxuPXQucmVtb3ZlW2ldKTpuPVdufWZ1bmN0aW9uIGEoKXtpZihvPG4ubGVuZ3RoKXtjb25zdCByPW5bbysrXTtpZihuZ0Rldk1vZGUmJmFuKHIsIkV4cGVjdGluZyBPcENvZGUgbnVtYmVyIikscj4wKXtjb25zdCB0PWVbcl07cmV0dXJuIG5nRGV2TW9kZSYmeW4odCksdH17dC5wdXNoKG8sbik7Y29uc3Qgcz1lWzFdLmRhdGFbfnJdO3JldHVybiBuZ0Rldk1vZGUmJmtvKHMpLGkocyxlKSxhKCl9fXJldHVybiAwPT09dC5sZW5ndGg/bnVsbDoobj10LnBvcCgpLG89dC5wb3AoKSxhKCkpfXJldHVybiBmdW5jdGlvbiByKG4sbyl7Zm9yKGU9bzt0Lmxlbmd0aDspdC5wb3AoKTtyZXR1cm4gbmdEZXZNb2RlJiZPbyhuLG8pLGkobi52YWx1ZSxvKSxhfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geWYodCl7Y29uc3QgZT10fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKTtsZXQgbj1bXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbz1lW3QrK10saT0obyZxdS5BUFBFTkRfRUFHRVJMWSk9PT1xdS5BUFBFTkRfRUFHRVJMWSxhPW8+Pj5xdS5TSElGVDtuLnB1c2goYGxWaWV3WyR7YX1dID0gZG9jdW1lbnQuJHsobyZxdS5DT01NRU5UKT09PXF1LkNPTU1FTlQ/ImNyZWF0ZUNvbW1lbnQiOiJjcmVhdGVUZXh0In0oJHtKU09OLnN0cmluZ2lmeShlW3RdKX0pO2ApLGkmJm4ucHVzaChgcGFyZW50LmFwcGVuZENoaWxkKGxWaWV3WyR7YX1dKTtgKX1yZXR1cm4gbn1mdW5jdGlvbiBfZih0KXtjb25zdCBlPW5ldyB2Zih0fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKSk7bGV0IG49W107ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQ+Pj4yO3N3aXRjaCgzJnQpe2Nhc2UgMDpyZXR1cm5gKGxWaWV3WyR7bn1dIGFzIFRleHQpLnRleHRDb250ZW50ID0gJCQkYDtjYXNlIDE6Y29uc3QgdD1lLmNvbnN1bWVTdHJpbmcoKSxvPWUuY29uc3VtZUZ1bmN0aW9uKCk7cmV0dXJuYChsVmlld1ske259XSBhcyBFbGVtZW50KS5zZXRBdHRyaWJ1dGUoJyR7dH0nLCAke28/YCgke299KSgkJCQpYDoiJCQkIn0pYDtjYXNlIDI6cmV0dXJuYGljdVN3aXRjaENhc2UoJHtufSwgJCQkKWA7Y2FzZSAzOnJldHVybmBpY3VVcGRhdGVDYXNlKCR7bn0pYH10aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgT3BDb2RlIil9Zm9yKDtlLmhhc01vcmUoKTspe2xldCB0PWUuY29uc3VtZU51bWJlcigpLGk9ZS5jb25zdW1lTnVtYmVyKCk7Y29uc3QgYT1lLmkraSxyPVtdO2xldCBzPSIiO2Zvcig7ZS5pPGE7KXtsZXQgdD1lLmNvbnN1bWVOdW1iZXJPclN0cmluZygpO2lmKCJzdHJpbmciPT10eXBlb2YgdClzKz10O2Vsc2UgaWYodDwwKXMrPSIke2xWaWV3W2kiK3QrIl19IjtlbHNle2NvbnN0IGU9byh0KTtyLnB1c2goZS5yZXBsYWNlKCIkJCQiLCJgIitzKyJgIikrIjsiKSxzPSIifX1uLnB1c2goYGlmIChtYXNrICYgMGIke3QudG9TdHJpbmcoMil9KSB7ICR7ci5qb2luKCIgIil9IH1gKX1yZXR1cm4gbn1mdW5jdGlvbiBDZih0KXtjb25zdCBlPW5ldyB2Zih0fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKSk7bGV0IG49W107ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXNmKHQpLG89bGYodCk7c3dpdGNoKGNmKHQpKXtjYXNlIDA6cmV0dXJuYChsVmlld1ske259XSBhcyBFbGVtZW50KS5hcHBlbmRDaGlsZChsVmlld1ske2l9XSlgO2Nhc2UgMTpyZXR1cm5gKGxWaWV3WyR7b31dIGFzIEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgiJHtlLmNvbnN1bWVTdHJpbmcoKX0iLCAiJHtlLmNvbnN1bWVTdHJpbmcoKX0iKWB9dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIE9wQ29kZTogIitjZih0KSl9bGV0IGk9LTE7Zm9yKDtlLmhhc01vcmUoKTspe2xldCB0PWUuY29uc3VtZU51bWJlclN0cmluZ09yTWFya2VyKCk7aWYodD09PVl1KXtjb25zdCB0PWUuY29uc3VtZVN0cmluZygpO2k9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiR7dH0iKWApfWVsc2UgaWYodD09PVd1KXtjb25zdCB0PWUuY29uc3VtZVN0cmluZygpO2k9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIiR7dH0iKWApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KWk9ZS5jb25zdW1lTnVtYmVyKCksbi5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIke3R9IilgKTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUiKTt7Y29uc3QgZT1vKHQpO2UmJm4ucHVzaChlKX19fXJldHVybiBufWZ1bmN0aW9uIE1mKHQpe2NvbnN0IGU9dHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSk7bGV0IG49W107Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG89ZVt0XTtuLnB1c2gobz4wP2ByZW1vdmUobFZpZXdbJHtvfV0pYDpgcmVtb3ZlTmVzdGVkSUNVKCR7fm99KWApfXJldHVybiBufWNsYXNzIHZme2NvbnN0cnVjdG9yKHQpe3RoaXMuaT0wLHRoaXMuY29kZXM9dH1oYXNNb3JlKCl7cmV0dXJuIHRoaXMuaTx0aGlzLmNvZGVzLmxlbmd0aH1jb25zdW1lTnVtYmVyKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIGFuKHQsImV4cGVjdGluZyBudW1iZXIgaW4gT3BDb2RlIiksdH1jb25zdW1lU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHNuKHQsImV4cGVjdGluZyBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lRnVuY3Rpb24oKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtpZihudWxsPT09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJleHBlY3RpbmcgZnVuY3Rpb24gaW4gT3BDb2RlIil9Y29uc3VtZU51bWJlck9yU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHxhbih0LCJleHBlY3RpbmcgbnVtYmVyIG9yIHN0cmluZyBpbiBPcENvZGUiKSx0fWNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fHx0PT1ZdXx8dD09V3V8fGFuKHQsImV4cGVjdGluZyBudW1iZXIsIHN0cmluZywgSUNVX01BUktFUiBvciBFTEVNRU5UX01BUktFUiBpbiBPcENvZGUiKSx0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgeGY9L++/vShcZCspOj9cZCrvv70vZ2ksT2Y9Lyh7XHMq77+9XGQrOj9cZCrvv71ccyosXHMqXFN7Nn1ccyosW1xzXFNdKn0pL2dpLFBmPS/vv70oXGQrKe+/vS8sd2Y9L15ccyoo77+9XGQrOj9cZCrvv70pXHMqLFxzKihzZWxlY3R8cGx1cmFsKVxzKiwvLGtmPS/vv71cLz9cKihcZCs6XGQrKe+/vS9naSxTZj0v77+9KFwvP1sjKl1cZCspOj9cZCrvv70vZ2ksRGY9L1x1RTUwMC9nO2Z1bmN0aW9uIEVmKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9S2ModCxvLDEsbnVsbCk7bGV0IGw9czw8cXUuU0hJRlQsYz1faSgpO2U9PT1jJiYoYz1udWxsKSxudWxsPT09YyYmKGx8PXF1LkFQUEVORF9FQUdFUkxZKSxyJiYobHw9cXUuQ09NTUVOVCwoZnVuY3Rpb24gZCh0KXt2b2lkIDA9PT1kbCYmKGRsPXQoKSl9KShiZikpLGkucHVzaChsLG51bGw9PT1hPyIiOmEpO2NvbnN0IHA9WGModCxzLHI/MzI6MSxudWxsPT09YT9uZ0Rldk1vZGU/Int7P319IjoiIjphLG51bGwpO1F1KG4scCk7Y29uc3QgbT1wLmluZGV4O3JldHVybiBDaShwLCExKSxudWxsIT09YyYmZSE9PWMmJihmdW5jdGlvbiB1KHQsZSl7bmdEZXZNb2RlJiZ3byh0KTtsZXQgbj10Lmluc2VydEJlZm9yZUluZGV4O251bGw9PT1uPyhJbChLdSxKdSksbj10Lmluc2VydEJlZm9yZUluZGV4PVtudWxsLGVdKToobG4oQXJyYXkuaXNBcnJheShuKSwhMCwiRXhwZWN0aW5nIGFycmF5IGhlcmUiKSxuLnB1c2goZSkpfSkoYyxtKSxwfWZ1bmN0aW9uIFJmKHQsZSxuLG8saSxhLHIpe2NvbnN0IHM9ci5tYXRjaCh4ZiksbD1FZih0LGUsbixhLG8scz9udWxsOnIsITEpO3MmJkFmKGkscixsLmluZGV4LG51bGwsMCxudWxsKX1mdW5jdGlvbiBBZih0LGUsbixvLGksYSl7bmdEZXZNb2RlJiZnbihuLGdvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpO2NvbnN0IHI9dC5sZW5ndGgscz1yKzE7dC5wdXNoKG51bGwsbnVsbCk7Y29uc3QgbD1yKzI7bmdEZXZNb2RlJiZiYyh0LF9mKTtjb25zdCBjPWUuc3BsaXQoeGYpO2xldCBkPTA7Zm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2NvbnN0IG49Y1tlXTtpZigxJmUpe2NvbnN0IGU9aStwYXJzZUludChuLDEwKTt0LnB1c2goLTEtZSksZHw9TmYoZSl9ZWxzZSIiIT09biYmdC5wdXNoKG4pfXJldHVybiB0LnB1c2gobjw8Mnwobz8xOjApKSxvJiZ0LnB1c2gobyxhKSx0W3JdPWQsdFtzXT10Lmxlbmd0aC1sLGR9ZnVuY3Rpb24gVGYodCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dOyJudW1iZXIiPT10eXBlb2YgbyYmbzwwJiZlKyt9cmV0dXJuIGV9ZnVuY3Rpb24gTmYodCl7cmV0dXJuIDE8PE1hdGgubWluKHQsMzEpfWZ1bmN0aW9uIHpmKHQpe2xldCBlLG4sbz0iIixpPTAsYT0hMTtmb3IoO251bGwhPT0oZT1rZi5leGVjKHQpKTspYT9lWzBdPT09YO+/vS8qJHtufe+/vWAmJihpPWUuaW5kZXgsYT0hMSk6KG8rPXQuc3Vic3RyaW5nKGksZS5pbmRleCtlWzBdLmxlbmd0aCksbj1lWzFdLGE9ITApO3JldHVybiBuZ0Rldk1vZGUmJmxuKGEsITEsYFRhZyBtaXNtYXRjaDogdW5hYmxlIHRvIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3ViLXRlbXBsYXRlIGluIHRoZSB0cmFuc2xhdGlvbiAiJHt0fSJgKSxvKz10LnN1YnN0cihpKSxvfWZ1bmN0aW9uIElmKHQsZSxuLG8saSxhKXtuZ0Rldk1vZGUmJmhuKGksIklDVSBleHByZXNzaW9uIG11c3QgYmUgZGVmaW5lZCIpO2xldCByPTA7Y29uc3Qgcz17dHlwZTppLnR5cGUsY3VycmVudENhc2VMVmlld0luZGV4OktjKHQsZSwxLG51bGwpLGFuY2hvcklkeDphLGNhc2VzOltdLGNyZWF0ZTpbXSxyZW1vdmU6W10sdXBkYXRlOltdfTshKGZ1bmN0aW9uIGwodCxlLG4pe3QucHVzaChOZihlLm1haW5CaW5kaW5nKSwyLC0xLWUubWFpbkJpbmRpbmcsbjw8MnwyKX0pKG4saSxhKSwoZnVuY3Rpb24gYyh0LGUsbil7Y29uc3Qgbz10LmRhdGFbZV07bmdEZXZNb2RlJiZsbihudWxsPT09b3x8by5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIiksITAsIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1Q29udGFpbmVyJyIpLG51bGw9PT1vP3QuZGF0YVtlXT1uOihuZ0Rldk1vZGUmJmlhKG8sMzIpLG8udmFsdWU9bil9KSh0LGEscyk7Y29uc3QgZD1pLnZhbHVlcztmb3IobGV0IGE9MDthPGQubGVuZ3RoO2ErKyl7Y29uc3QgbD1kW2FdLGM9W107Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bFt0XTtpZigic3RyaW5nIiE9dHlwZW9mIGUpe2NvbnN0IG49Yy5wdXNoKGUpLTE7bFt0XT1gXHgzYyEtLe+/vSR7bn3vv70tLVx4M2VgfX1yPUxmKHQscyxlLG4sbyxpLmNhc2VzW2FdLGwuam9pbigiIiksYyl8cn1yJiYoZnVuY3Rpb24gcCh0LGUsbil7dC5wdXNoKGUsMSxuPDwyfDMpfSkobixyLGEpfWZ1bmN0aW9uIEhmKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9MDtjb25zdCBhPUZmKHQ9dC5yZXBsYWNlKHdmLChmdW5jdGlvbih0LGUsbil7cmV0dXJuIG89InNlbGVjdCI9PT1uPzA6MSxpPXBhcnNlSW50KGUuc3Vic3RyKDEpLDEwKSwiIn0pKSk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDspe2xldCBpPWFbdCsrXS50cmltKCk7MT09PW8mJihpPWkucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpKSxpLmxlbmd0aCYmZS5wdXNoKGkpO2NvbnN0IHI9RmYoYVt0KytdKTtlLmxlbmd0aD5uLmxlbmd0aCYmbi5wdXNoKHIpfXJldHVybnt0eXBlOm8sbWFpbkJpbmRpbmc6aSxjYXNlczplLHZhbHVlczpufX1mdW5jdGlvbiBGZih0KXtpZighdClyZXR1cm5bXTtsZXQgZT0wO2NvbnN0IG49W10sbz1bXSxpPS9be31dL2c7bGV0IGE7Zm9yKGkubGFzdEluZGV4PTA7YT1pLmV4ZWModCk7KXtjb25zdCBpPWEuaW5kZXg7aWYoIn0iPT1hWzBdKXtpZihuLnBvcCgpLDA9PW4ubGVuZ3RoKXtjb25zdCBuPXQuc3Vic3RyaW5nKGUsaSk7d2YudGVzdChuKT9vLnB1c2goSGYobikpOm8ucHVzaChuKSxlPWkrMX19ZWxzZXtpZigwPT1uLmxlbmd0aCl7Y29uc3Qgbj10LnN1YnN0cmluZyhlLGkpO28ucHVzaChuKSxlPWkrMX1uLnB1c2goInsiKX19Y29uc3Qgcj10LnN1YnN0cmluZyhlKTtyZXR1cm4gby5wdXNoKHIpLG99ZnVuY3Rpb24gTGYodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPVtdLGM9W10sZD1bXTtuZ0Rldk1vZGUmJihiYyhsLENmKSxiYyhjLE1mKSxiYyhkLF9mKSksZS5jYXNlcy5wdXNoKGEpLGUuY3JlYXRlLnB1c2gobCksZS5yZW1vdmUucHVzaChjKSxlLnVwZGF0ZS5wdXNoKGQpO2NvbnN0IHA9b3MoSm8oKSkuZ2V0SW5lcnRCb2R5RWxlbWVudChyKTtuZ0Rldk1vZGUmJmhuKHAsIlVuYWJsZSB0byBnZW5lcmF0ZSBpbmVydCBib2R5IGVsZW1lbnQiKTtjb25zdCBtPVJzKHApfHxwO3JldHVybiBtP0JmKHQsZSxuLG8sbCxjLGQsbSxpLHMsMCk6MH1mdW5jdGlvbiBCZih0LGUsbixvLGksYSxyLHMsbCxjLGQpe2xldCBwPTAsbT1zLmZpcnN0Q2hpbGQ7Zm9yKDttOyl7Y29uc3Qgcz1LYyh0LG4sMSxudWxsKTtzd2l0Y2gobS5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCB1PW0sZj11LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZih5cy5oYXNPd25Qcm9wZXJ0eShmKSl7VWYoaSxXdSxmLGwscyksdC5kYXRhW3NdPWY7Y29uc3QgZz11LmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspe2NvbnN0IGU9Zy5pdGVtKHQpLG49ZS5uYW1lLnRvTG93ZXJDYXNlKCk7ZS52YWx1ZS5tYXRjaCh4Zik/eHMuaGFzT3duUHJvcGVydHkobik/QWYocixlLnZhbHVlLHMsZS5uYW1lLDAsX3Nbbl0/bHM6Q3Nbbl0/Y3M6bnVsbCk6bmdEZXZNb2RlJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IGlnbm9yaW5nIHVuc2FmZSBhdHRyaWJ1dGUgdmFsdWUgJHtufSBvbiBlbGVtZW50ICR7Zn0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApOkdmKGkscyxlKX1wPUJmKHQsZSxuLG8saSxhLHIsbSxzLGMsZCsxKXxwLFZmKGEscyxkKX1icmVhaztjYXNlIE5vZGUuVEVYVF9OT0RFOmNvbnN0IGc9bS50ZXh0Q29udGVudHx8IiIsaD1nLm1hdGNoKHhmKTtVZihpLG51bGwsaD8iIjpnLGwscyksVmYoYSxzLGQpLGgmJihwPUFmKHIsZyxzLG51bGwsMCxudWxsKXxwKTticmVhaztjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOmNvbnN0IGI9UGYuZXhlYyhtLnRleHRDb250ZW50fHwiIik7aWYoYil7Y29uc3QgZT1wYXJzZUludChiWzFdLDEwKSxyPWNbZV07VWYoaSxZdSxuZ0Rldk1vZGU/YG5lc3RlZCBJQ1UgJHtlfWA6IiIsbCxzKSxJZih0LG4sbyxsLHIscyksamYoYSxzLGQpfX1tPW0ubmV4dFNpYmxpbmd9cmV0dXJuIHB9ZnVuY3Rpb24gVmYodCxlLG4pezA9PT1uJiZ0LnB1c2goZSl9ZnVuY3Rpb24gamYodCxlLG4pezA9PT1uJiYodC5wdXNoKH5lKSx0LnB1c2goZSkpfWZ1bmN0aW9uIFVmKHQsZSxuLG8saSl7bnVsbCE9PWUmJnQucHVzaChlKSx0LnB1c2gobixpLChmdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gbmdEZXZNb2RlJiZnbihlLDAsIk1pc3NpbmcgcGFyZW50IGluZGV4IiksbmdEZXZNb2RlJiZmbihuLDAsIk1pc3NpbmcgcmVmIGluZGV4IiksdHxlPDwxN3xuPDwxfSkoMCxvLGkpKX1mdW5jdGlvbiBHZih0LGUsbil7dC5wdXNoKGU8PDF8MSxuLm5hbWUsbi52YWx1ZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFdmPS9cWyjvv70uKz/vv70/KVxdLyxZZj0vXFso77+9Lis/77+9PylcXXwo77+9XC8/XCpcZCs6XGQr77+9KS9nLHFmPS8oe1xzKikoVkFSXyhQTFVSQUx8U0VMRUNUKShfXGQrKT8pKFxzKiwpL2csWmY9L3soW0EtWjAtOV9dKyl9L2csWGY9L++/vUkxOE5fRVhQXyhJQ1UoX1xkKyk/Ke+/vS9nLEtmPS9cL1wqLyxKZj0vXGQrXDooXGQrKS87Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBRZih0LGUsbj0tMSl7Y29uc3Qgbz1naSgpLGk9ZmkoKSxhPWdvK3Q7bmdEZXZNb2RlJiZobihvLCJ0VmlldyBzaG91bGQgYmUgZGVmaW5lZCIpO2NvbnN0IHI9Y2koby5jb25zdHMsZSkscz1faSgpO28uZmlyc3RDcmVhdGVQYXNzJiYoZnVuY3Rpb24gbCh0LGUsbixvLGksYSl7Y29uc3Qgcj1faSgpLHM9W10sbD1bXSxjPVtbXV07bmdEZXZNb2RlJiYoYmMocyx5ZiksYmMobCxfZikpO2NvbnN0IGQ9KGZ1bmN0aW9uIG0odCl7cmV0dXJuIHQucmVwbGFjZShEZiwiICIpfSkoaT0oZnVuY3Rpb24gcCh0LGUpe2lmKChmdW5jdGlvbiBuKHQpe3JldHVybi0xPT09dH0pKGUpKXJldHVybiB6Zih0KTt7Y29uc3Qgbj10LmluZGV4T2YoYDoke2V977+9YCkrMitlLnRvU3RyaW5nKCkubGVuZ3RoLG89dC5zZWFyY2gobmV3IFJlZ0V4cChg77+9XFwvXFwqXFxkKzoke2V977+9YCkpO3JldHVybiB6Zih0LnN1YnN0cmluZyhuLG8pKX19KShpLGEpKS5zcGxpdChTZik7Zm9yKGxldCBhPTA7YTxkLmxlbmd0aDthKyspe2xldCBwPWRbYV07aWYoMD09KDEmYSkpe2NvbnN0IGE9RmYocCk7Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2xldCBwPWFbZF07aWYoMD09KDEmZCkpe2NvbnN0IGU9cDtuZ0Rldk1vZGUmJnNuKGUsIlBhcnNlZCBJQ1UgcGFydCBzaG91bGQgYmUgc3RyaW5nIiksIiIhPT1lJiZSZih0LHIsY1swXSxzLGwsbixlKX1lbHNle2NvbnN0IGE9cDtpZigib2JqZWN0IiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgSUNVIGV4cHJlc3Npb24gaW4gIiR7aX0iIG1lc3NhZ2UuYCk7Y29uc3QgZD1FZih0LHIsY1swXSxuLHMsbmdEZXZNb2RlP2BJQ1UgJHtvfToke2EubWFpbkJpbmRpbmd9YDoiIiwhMCkuaW5kZXg7bmdEZXZNb2RlJiZnbihkLGdvLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpLElmKHQsbixsLGUsYSxkKX19fWVsc2V7Y29uc3QgZT00Nz09PXAuY2hhckNvZGVBdCgwKSxuPXAuY2hhckNvZGVBdChlPzE6MCk7bmdEZXZNb2RlJiZDbihuLDQyLDM1KTtjb25zdCBvPWdvK051bWJlci5wYXJzZUludChwLnN1YnN0cmluZyhlPzI6MSkpO2lmKGUpYy5zaGlmdCgpLENpKF9pKCksITEpO2Vsc2V7Y29uc3QgZT1hZih0LGNbMF0sbyk7Yy51bnNoaWZ0KFtdKSxDaShlLCEwKX19fXQuZGF0YVtvXT17Y3JlYXRlOnMsdXBkYXRlOmx9fSkobyxudWxsPT09cz8wOnMuaW5kZXgsaSxhLHIsbik7Y29uc3QgYz1vLmRhdGFbYV0sZD1rbChvLHM9PT1pWzZdP251bGw6cyxpKTshKGZ1bmN0aW9uIHAodCxlLG4sbyl7Y29uc3QgaT10WzExXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3Qgcj1lW2ErK10scz1lW2FdLGw9KHImcXUuQ09NTUVOVCk9PT1xdS5DT01NRU5ULGM9KHImcXUuQVBQRU5EX0VBR0VSTFkpPT09cXUuQVBQRU5EX0VBR0VSTFksZD1yPj4+cXUuU0hJRlQ7bGV0IHA9dFtkXTtudWxsPT09cCYmKHA9dFtkXT1sP2kuY3JlYXRlQ29tbWVudChzKTp5bChpLHMpKSxjJiZudWxsIT09biYmU2woaSxuLHAsbywhMSl9fSkoaSxjLmNyZWF0ZSxkLHMmJjgmcy50eXBlP2lbcy5pbmRleF06bnVsbCksRWkoITApfWZ1bmN0aW9uICRmKCl7RWkoITEpfWZ1bmN0aW9uIHRnKHQsZSxuKXtRZih0LGUsbiksJGYoKX1mdW5jdGlvbiBlZyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt0JiYoZGZ8PTE8PE1hdGgubWluKHBmLDMxKSkscGYrK30pKEZwKGZpKCksU2koKSx0KSksZWd9ZnVuY3Rpb24gbmcodCl7IShmdW5jdGlvbiBlKHQsbixvKXtpZihwZj4wKXtuZ0Rldk1vZGUmJmhuKHQsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3QgZT10LmRhdGFbb107dWYodCxuLEFycmF5LmlzQXJyYXkoZSk/ZTplLnVwZGF0ZSx3aSgpLXBmLTEsZGYpfWRmPTAscGY9MH0pKGdpKCksZmkoKSx0K2dvKX1mdW5jdGlvbiBvZyh0LGU9e30pe3JldHVybihmdW5jdGlvbiBuKHQsZT17fSl7bGV0IG49dDtpZihXZi50ZXN0KHQpKXtjb25zdCB0PXt9LGU9WzBdO249bi5yZXBsYWNlKFlmLCgobixvLGkpPT57Y29uc3QgYT1vfHxpLHI9dFthXXx8W107aWYoci5sZW5ndGh8fChhLnNwbGl0KCJ8IikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5tYXRjaChKZiksbj1lP3BhcnNlSW50KGVbMV0sMTApOjAsbz1LZi50ZXN0KHQpO3IucHVzaChbbixvLHRdKX0pKSx0W2FdPXIpLCFyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGkxOG4gcG9zdHByb2Nlc3M6IHVubWF0Y2hlZCBwbGFjZWhvbGRlciAtICR7YX1gKTtjb25zdCBzPWVbZS5sZW5ndGgtMV07bGV0IGw9MDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylpZihyW3RdWzBdPT09cyl7bD10O2JyZWFrfWNvbnN0W2MsZCxwXT1yW2xdO3JldHVybiBkP2UucG9wKCk6cyE9PWMmJmUucHVzaChjKSxyLnNwbGljZShsLDEpLHB9KSl9cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD8obj1uLnJlcGxhY2UocWYsKCh0LG4sbyxpLGEscik9PmUuaGFzT3duUHJvcGVydHkobyk/YCR7bn0ke2Vbb119JHtyfWA6dCkpLG49bi5yZXBsYWNlKFpmLCgodCxuKT0+ZS5oYXNPd25Qcm9wZXJ0eShuKT9lW25dOnQpKSxuPW4ucmVwbGFjZShYZiwoKHQsbik9PntpZihlLmhhc093blByb3BlcnR5KG4pKXtjb25zdCBvPWVbbl07aWYoIW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgaTE4biBwb3N0cHJvY2VzczogdW5tYXRjaGVkIElDVSAtICR7dH0gd2l0aCBrZXk6ICR7bn1gKTtyZXR1cm4gby5zaGlmdCgpfXJldHVybiB0fSkpLG4pOm59KSh0LGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaWcodCxlLG4sbyxpKXtpZih0PVplKHQpLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspaWcodFthXSxlLG4sbyxpKTtlbHNle2NvbnN0IGE9Z2koKSxyPWZpKCk7bGV0IHM9b3AodCk/dDpaZSh0LnByb3ZpZGUpLGw9dHAodCk7Y29uc3QgYz1iaSgpLGQ9MTA0ODU3NSZjLnByb3ZpZGVySW5kZXhlcyxwPWMuZGlyZWN0aXZlU3RhcnQsbT1jLnByb3ZpZGVySW5kZXhlcz4+MjA7aWYob3AodCl8fCF0Lm11bHRpKXtjb25zdCBvPW5ldyBuYShsLGksU20pLHU9c2cocyxlLGk/ZDpkK20scCk7LTE9PT11PyhDYShoYShjLHIpLGEscyksYWcoYSx0LGUubGVuZ3RoKSxlLnB1c2gocyksYy5kaXJlY3RpdmVTdGFydCsrLGMuZGlyZWN0aXZlRW5kKyssaSYmKGMucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxuLnB1c2gobyksci5wdXNoKG8pKTooblt1XT1vLHJbdV09byl9ZWxzZXtjb25zdCB1PXNnKHMsZSxkK20scCksZj1zZyhzLGUsZCxkK20pLGc9dT49MCYmblt1XSxoPWY+PTAmJm5bZl07aWYoaSYmIWh8fCFpJiYhZyl7Q2EoaGEoYyxyKSxhLHMpO2NvbnN0IGQ9KGZ1bmN0aW9uIGEodCxlLG4sbyxpKXtjb25zdCBhPW5ldyBuYSh0LG4sU20pO3JldHVybiBhLm11bHRpPVtdLGEuaW5kZXg9ZSxhLmNvbXBvbmVudFByb3ZpZGVycz0wLHJnKGEsaSxvJiYhbiksYX0pKGk/Y2c6bGcsbi5sZW5ndGgsaSxvLGwpOyFpJiZoJiYobltmXS5wcm92aWRlckZhY3Rvcnk9ZCksYWcoYSx0LGUubGVuZ3RoLDApLGUucHVzaChzKSxjLmRpcmVjdGl2ZVN0YXJ0KyssYy5kaXJlY3RpdmVFbmQrKyxpJiYoYy5wcm92aWRlckluZGV4ZXMrPTEwNDg1NzYpLG4ucHVzaChkKSxyLnB1c2goZCl9ZWxzZSBhZyhhLHQsdT4tMT91OmYscmcobltpP2Y6dV0sbCwhaSYmbykpOyFpJiZvJiZoJiZuW2ZdLmNvbXBvbmVudFByb3ZpZGVycysrfX19ZnVuY3Rpb24gYWcodCxlLG4sbyl7Y29uc3QgaT1vcChlKTtpZihpfHwoZnVuY3Rpb24gYSh0KXtyZXR1cm4hIXQudXNlQ2xhc3N9KShlKSl7Y29uc3QgYT0oZS51c2VDbGFzc3x8ZSkucHJvdG90eXBlLm5nT25EZXN0cm95O2lmKGEpe2NvbnN0IHI9dC5kZXN0cm95SG9va3N8fCh0LmRlc3Ryb3lIb29rcz1bXSk7aWYoIWkmJmUubXVsdGkpe25nRGV2TW9kZSYmaG4obywiaW5kZXhJbkZhY3Rvcnkgd2hlbiByZWdpc3RlcmluZyBtdWx0aSBmYWN0b3J5IGRlc3Ryb3kgaG9vayIpO2NvbnN0IHQ9ci5pbmRleE9mKG4pOy0xPT09dD9yLnB1c2gobixbbyxhXSk6clt0KzFdLnB1c2gobyxhKX1lbHNlIHIucHVzaChuLGEpfX19ZnVuY3Rpb24gcmcodCxlLG4pe3JldHVybiBuJiZ0LmNvbXBvbmVudFByb3ZpZGVycysrLHQubXVsdGkucHVzaChlKS0xfWZ1bmN0aW9uIHNnKHQsZSxuLG8pe2ZvcihsZXQgaT1uO2k8bztpKyspaWYoZVtpXT09PXQpcmV0dXJuIGk7cmV0dXJuLTF9ZnVuY3Rpb24gbGcodCxlLG4sbyl7cmV0dXJuIGRnKHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIGNnKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5tdWx0aTtsZXQgYTtpZih0aGlzLnByb3ZpZGVyRmFjdG9yeSl7Y29uc3QgdD10aGlzLnByb3ZpZGVyRmFjdG9yeS5jb21wb25lbnRQcm92aWRlcnMsZT1TYShuLG5bMV0sdGhpcy5wcm92aWRlckZhY3RvcnkuaW5kZXgsbyk7YT1lLnNsaWNlKDAsdCksZGcoaSxhKTtmb3IobGV0IG49dDtuPGUubGVuZ3RoO24rKylhLnB1c2goZVtuXSl9ZWxzZSBhPVtdLGRnKGksYSk7cmV0dXJuIGF9ZnVuY3Rpb24gZGcodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyllLnB1c2goKDAsdFtuXSkoKSk7cmV0dXJuIGV9ZnVuY3Rpb24gcGcodCxlPVtdKXtyZXR1cm4gbj0+e24ucHJvdmlkZXJzUmVzb2x2ZXI9KG4sbyk9PihmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPWdpKCk7aWYoby5maXJzdENyZWF0ZVBhc3Mpe2NvbnN0IGk9eG8odCk7aWcobixvLmRhdGEsby5ibHVlcHJpbnQsaSwhMCksaWcoZSxvLmRhdGEsby5ibHVlcHJpbnQsaSwhMSl9fSkobixvP28odCk6dCxlKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1ne30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdWd7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZmcoLi4udCl7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBnZyh0LGUpe3JldHVybiBuZXcgaGcob2kodCxlKSl9dWcuTlVMTD1uZXcgY2xhc3N7cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCl7dGhyb3coZnVuY3Rpb24gZSh0KXtjb25zdCBlPUVycm9yKGBObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgJHtHZSh0KX0uIERpZCB5b3UgYWRkIGl0IHRvIEBOZ01vZHVsZS5lbnRyeUNvbXBvbmVudHM/YCk7cmV0dXJuIGUubmdDb21wb25lbnQ9dCxlfSkodCl9fTtjbGFzcyBoZ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH19ZnVuY3Rpb24gYmcodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBoZz90Lm5hdGl2ZUVsZW1lbnQ6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovaGcuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24geWcoKXtyZXR1cm4gZ2coYmkoKSxmaSgpKX0sbmV3IEdhKCJSZW5kZXJlcjJJbnRlcmNlcHRvciIpO2NsYXNzIF9ne31jbGFzcyBDZ3t9Q2cuX19OR19FTEVNRU5UX0lEX189KCk9Pk1nKCk7Y29uc3QgTWc9ZnVuY3Rpb24gdmcoKXtjb25zdCB0PWZpKCksZT1yaShiaSgpLmluZGV4LHQpO3JldHVybihmdW5jdGlvbiBuKHQpe2NvbnN0IGU9dFsxMV07aWYobmdEZXZNb2RlJiYhJG8oZSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5qZWN0IFJlbmRlcmVyMiB3aGVuIHRoZSBhcHBsaWNhdGlvbiB1c2VzIFJlbmRlcmVyMyEiKTtyZXR1cm4gZX0pKHlvKGUpP2U6dCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyB4Z3t9eGcuybVwcm92PU1uKHt0b2tlbjp4Zyxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5udWxsfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBPZ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmZ1bGw9dCx0aGlzLm1ham9yPXQuc3BsaXQoIi4iKVswXSx0aGlzLm1pbm9yPXQuc3BsaXQoIi4iKVsxXSx0aGlzLnBhdGNoPXQuc3BsaXQoIi4iKS5zbGljZSgyKS5qb2luKCIuIil9fWNvbnN0IFBnPW5ldyBPZygiMTIuMi4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHdne2NvbnN0cnVjdG9yKCl7fXN1cHBvcnRzKHQpe3JldHVybiBOcCh0KX1jcmVhdGUodCl7cmV0dXJuIG5ldyBTZyh0KX19Y29uc3Qga2c9KHQsZSk9PmU7Y2xhc3MgU2d7Y29uc3RydWN0b3IodCl7dGhpcy5sZW5ndGg9MCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZuPXR8fGtnfWZvckVhY2hJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX2l0SGVhZDtudWxsIT09ZTtlPWUuX25leHQpdChlKX1mb3JFYWNoT3BlcmF0aW9uKHQpe2xldCBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVhZCxvPTAsaT1udWxsO2Zvcig7ZXx8bjspe2NvbnN0IGE9IW58fGUmJmUuY3VycmVudEluZGV4PEFnKG4sbyxpKT9lOm4scj1BZyhhLG8saSkscz1hLmN1cnJlbnRJbmRleDtpZihhPT09bilvLS0sbj1uLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4dCxudWxsPT1hLnByZXZpb3VzSW5kZXgpbysrO2Vsc2V7aXx8KGk9W10pO2NvbnN0IHQ9ci1vLGU9cy1vO2lmKHQhPWUpe2ZvcihsZXQgbj0wO248dDtuKyspe2NvbnN0IG89bjxpLmxlbmd0aD9pW25dOmlbbl09MCxhPW8rbjtlPD1hJiZhPHQmJihpW25dPW8rMSl9aVthLnByZXZpb3VzSW5kZXhdPWUtdH19ciE9PXMmJnQoYSxyLHMpfX1mb3JFYWNoUHJldmlvdXNJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzSXRIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9Zm9yRWFjaEFkZGVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9Zm9yRWFjaE1vdmVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9tb3Zlc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0TW92ZWQpdChlKX1mb3JFYWNoUmVtb3ZlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX1mb3JFYWNoSWRlbnRpdHlDaGFuZ2UodCl7bGV0IGU7Zm9yKGU9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfWRpZmYodCl7aWYobnVsbD09dCYmKHQ9W10pLCFOcCh0KSl0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHRyeWluZyB0byBkaWZmICcke0dlKHQpfScuIE9ubHkgYXJyYXlzIGFuZCBpdGVyYWJsZXMgYXJlIGFsbG93ZWRgKTtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9b25EZXN0cm95KCl7fWNoZWNrKHQpe3RoaXMuX3Jlc2V0KCk7bGV0IGUsbixvLGk9dGhpcy5faXRIZWFkLGE9ITE7aWYoQXJyYXkuaXNBcnJheSh0KSl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKyspbj10W2VdLG89dGhpcy5fdHJhY2tCeUZuKGUsbiksbnVsbCE9PWkmJk9iamVjdC5pcyhpLnRyYWNrQnlJZCxvKT8oYSYmKGk9dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24oaSxuLG8sZSkpLE9iamVjdC5pcyhpLml0ZW0sbil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKGksbikpOihpPXRoaXMuX21pc21hdGNoKGksbixvLGUpLGE9ITApLGk9aS5fbmV4dH1lbHNlIGU9MCwoZnVuY3Rpb24gcih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dKTtlbHNle2NvbnN0IG49dFtScCgpXSgpO2xldCBvO2Zvcig7IShvPW4ubmV4dCgpKS5kb25lOyllKG8udmFsdWUpfX0pKHQsKHQ9PntvPXRoaXMuX3RyYWNrQnlGbihlLHQpLG51bGwhPT1pJiZPYmplY3QuaXMoaS50cmFja0J5SWQsbyk/KGEmJihpPXRoaXMuX3ZlcmlmeVJlaW5zZXJ0aW9uKGksdCxvLGUpKSxPYmplY3QuaXMoaS5pdGVtLHQpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZShpLHQpKTooaT10aGlzLl9taXNtYXRjaChpLHQsbyxlKSxhPSEwKSxpPWkuX25leHQsZSsrfSkpLHRoaXMubGVuZ3RoPWU7cmV0dXJuIHRoaXMuX3RydW5jYXRlKGkpLHRoaXMuY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX21vdmVzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZHx8bnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWR9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgdDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PXQuX25leHRNb3ZlZCl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21hdGNoKHQsZSxuLG8pe2xldCBpO3JldHVybiBudWxsPT09dD9pPXRoaXMuX2l0VGFpbDooaT10Ll9wcmV2LHRoaXMuX3JlbW92ZSh0KSksbnVsbCE9PSh0PW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCkpPyhPYmplY3QuaXModC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxpLG8pKTpudWxsIT09KHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLG8pKT8oT2JqZWN0LmlzKHQuaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKSx0aGlzLl9tb3ZlQWZ0ZXIodCxpLG8pKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBEZyhlLG4pLGksbyksdH1fdmVyaWZ5UmVpbnNlcnRpb24odCxlLG4sbyl7bGV0IGk9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQobixudWxsKTtyZXR1cm4gbnVsbCE9PWk/dD10aGlzLl9yZWluc2VydEFmdGVyKGksdC5fcHJldixvKTp0LmN1cnJlbnRJbmRleCE9byYmKHQuY3VycmVudEluZGV4PW8sdGhpcy5fYWRkVG9Nb3Zlcyh0LG8pKSx0fV90cnVuY2F0ZSh0KXtmb3IoO251bGwhPT10Oyl7Y29uc3QgZT10Ll9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksbnVsbCE9PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3JlbW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9X3JlaW5zZXJ0QWZ0ZXIodCxlLG4pe251bGwhPT10aGlzLl91bmxpbmtlZFJlY29yZHMmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7Y29uc3Qgbz10Ll9wcmV2UmVtb3ZlZCxpPXQuX25leHRSZW1vdmVkO3JldHVybiBudWxsPT09bz90aGlzLl9yZW1vdmFsc0hlYWQ9aTpvLl9uZXh0UmVtb3ZlZD1pLG51bGw9PT1pP3RoaXMuX3JlbW92YWxzVGFpbD1vOmkuX3ByZXZSZW1vdmVkPW8sdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fV9tb3ZlQWZ0ZXIodCxlLG4pe3JldHVybiB0aGlzLl91bmxpbmsodCksdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fV9hZGRBZnRlcih0LGUsbil7cmV0dXJuIHRoaXMuX2luc2VydEFmdGVyKHQsZSxuKSx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGw9PT10aGlzLl9hZGRpdGlvbnNUYWlsP3RoaXMuX2FkZGl0aW9uc0hlYWQ9dDp0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0fV9pbnNlcnRBZnRlcih0LGUsbil7Y29uc3Qgbz1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1vLHQuX3ByZXY9ZSxudWxsPT09bz90aGlzLl9pdFRhaWw9dDpvLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1uZXcgUmcpLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW4sdH1fcmVtb3ZlKHQpe3JldHVybiB0aGlzLl9hZGRUb1JlbW92YWxzKHRoaXMuX3VubGluayh0KSl9X3VubGluayh0KXtudWxsIT09dGhpcy5fbGlua2VkUmVjb3JkcyYmdGhpcy5fbGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7Y29uc3QgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fV9hZGRUb01vdmVzKHQsZSl7cmV0dXJuIHQucHJldmlvdXNJbmRleD09PWV8fCh0aGlzLl9tb3Zlc1RhaWw9bnVsbD09PXRoaXMuX21vdmVzVGFpbD90aGlzLl9tb3Zlc0hlYWQ9dDp0aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD10KSx0fV9hZGRUb1JlbW92YWxzKHQpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5ldyBSZyksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZSZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH1fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKXtyZXR1cm4gdC5pdGVtPWUsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsPT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD90aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXQ6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbC5fbmV4dElkZW50aXR5Q2hhbmdlPXQsdH19Y2xhc3MgRGd7Y29uc3RydWN0b3IodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19Y2xhc3MgRWd7Y29uc3RydWN0b3IoKXt0aGlzLl9oZWFkPW51bGwsdGhpcy5fdGFpbD1udWxsfWFkZCh0KXtudWxsPT09dGhpcy5faGVhZD8odGhpcy5faGVhZD10aGlzLl90YWlsPXQsdC5fbmV4dER1cD1udWxsLHQuX3ByZXZEdXA9bnVsbCk6KHRoaXMuX3RhaWwuX25leHREdXA9dCx0Ll9wcmV2RHVwPXRoaXMuX3RhaWwsdC5fbmV4dER1cD1udWxsLHRoaXMuX3RhaWw9dCl9Z2V0KHQsZSl7bGV0IG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9PT1lfHxlPD1uLmN1cnJlbnRJbmRleCkmJk9iamVjdC5pcyhuLnRyYWNrQnlJZCx0KSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1yZW1vdmUodCl7Y29uc3QgZT10Ll9wcmV2RHVwLG49dC5fbmV4dER1cDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faGVhZD1uOmUuX25leHREdXA9bixudWxsPT09bj90aGlzLl90YWlsPWU6bi5fcHJldkR1cD1lLG51bGw9PT10aGlzLl9oZWFkfX1jbGFzcyBSZ3tjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9cHV0KHQpe2NvbnN0IGU9dC50cmFja0J5SWQ7bGV0IG49dGhpcy5tYXAuZ2V0KGUpO258fChuPW5ldyBFZyx0aGlzLm1hcC5zZXQoZSxuKSksbi5hZGQodCl9Z2V0KHQsZSl7Y29uc3Qgbj10aGlzLm1hcC5nZXQodCk7cmV0dXJuIG4/bi5nZXQodCxlKTpudWxsfXJlbW92ZSh0KXtjb25zdCBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH1nZXQgaXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5tYXAuc2l6ZX1jbGVhcigpe3RoaXMubWFwLmNsZWFyKCl9fWZ1bmN0aW9uIEFnKHQsZSxuKXtjb25zdCBvPXQucHJldmlvdXNJbmRleDtpZihudWxsPT09bylyZXR1cm4gbztsZXQgaT0wO3JldHVybiBuJiZvPG4ubGVuZ3RoJiYoaT1uW29dKSxvK2UraX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVGd7Y29uc3RydWN0b3IoKXt9c3VwcG9ydHModCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXB8fHpwKHQpfWNyZWF0ZSgpe3JldHVybiBuZXcgTmd9fWNsYXNzIE5ne2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVjb3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fY2hhbmdlc0hlYWR8fG51bGwhPT10aGlzLl9yZW1vdmFsc0hlYWR9Zm9yRWFjaEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHQpdChlKX1mb3JFYWNoUHJldmlvdXNJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09ZTtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hDaGFuZ2VkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQoZSl9Zm9yRWFjaEFkZGVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtudWxsIT09ZTtlPWUuX25leHRSZW1vdmVkKXQoZSl9ZGlmZih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fHpwKHQpKSl0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHRyeWluZyB0byBkaWZmICcke0dlKHQpfScuIE9ubHkgbWFwcyBhbmQgb2JqZWN0cyBhcmUgYWxsb3dlZGApfWVsc2UgdD1uZXcgTWFwO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2sodCl7dGhpcy5fcmVzZXQoKTtsZXQgZT10aGlzLl9tYXBIZWFkO2lmKHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fZm9yRWFjaCh0LCgodCxuKT0+e2lmKGUmJmUua2V5PT09bil0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhlLHQpLHRoaXMuX2FwcGVuZEFmdGVyPWUsZT1lLl9uZXh0O2Vsc2V7Y29uc3Qgbz10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShuLHQpO2U9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZSxvKX19KSksZSl7ZS5fcHJldiYmKGUuX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPWU7Zm9yKGxldCB0PWU7bnVsbCE9PXQ7dD10Ll9uZXh0UmVtb3ZlZCl0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUodC5rZXkpLHQuX25leHRSZW1vdmVkPXQuX25leHQsdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlLHQuY3VycmVudFZhbHVlPW51bGwsdC5fcHJldj1udWxsLHQuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9X2luc2VydEJlZm9yZU9yQXBwZW5kKHQsZSl7aWYodCl7Y29uc3Qgbj10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1uLHQuX3ByZXY9ZSxuJiYobi5fbmV4dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5fYXBwZW5kQWZ0ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxudWxsfV9nZXRPckNyZWF0ZVJlY29yZEZvcktleSh0LGUpe2lmKHRoaXMuX3JlY29yZHMuaGFzKHQpKXtjb25zdCBuPXRoaXMuX3JlY29yZHMuZ2V0KHQpO3RoaXMuX21heWJlQWRkVG9DaGFuZ2VzKG4sZSk7Y29uc3Qgbz1uLl9wcmV2LGk9bi5fbmV4dDtyZXR1cm4gbyYmKG8uX25leHQ9aSksaSYmKGkuX3ByZXY9byksbi5fbmV4dD1udWxsLG4uX3ByZXY9bnVsbCxufWNvbnN0IG49bmV3IHpnKHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LG4pLG4uY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9BZGRpdGlvbnMobiksbn1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCB0O2Zvcih0aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT10O3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsfX1fbWF5YmVBZGRUb0NoYW5nZXModCxlKXtPYmplY3QuaXMoZSx0LmN1cnJlbnRWYWx1ZSl8fCh0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFsdWU9ZSx0aGlzLl9hZGRUb0NoYW5nZXModCkpfV9hZGRUb0FkZGl0aW9ucyh0KXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX1fYWRkVG9DaGFuZ2VzKHQpe251bGw9PT10aGlzLl9jaGFuZ2VzSGVhZD90aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD10Oih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9dCx0aGlzLl9jaGFuZ2VzVGFpbD10KX1fZm9yRWFjaCh0LGUpe3QgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKGUpOk9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PmUodFtuXSxuKSkpfX1jbGFzcyB6Z3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmtleT10LHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBJZygpe3JldHVybiBuZXcgSGcoW25ldyB3Z10pfWNsYXNzIEhne2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LGUpe2lmKG51bGwhPWUpe2NvbnN0IG49ZS5mYWN0b3JpZXMuc2xpY2UoKTt0PXQuY29uY2F0KG4pfXJldHVybiBuZXcgSGcodCl9c3RhdGljIGV4dGVuZCh0KXtyZXR1cm57cHJvdmlkZTpIZyx1c2VGYWN0b3J5OmU9PkhnLmNyZWF0ZSh0LGV8fElnKCkpLGRlcHM6W1tIZyxuZXcgRXIsbmV3IFNyXV19fWZpbmQodCl7Y29uc3QgZT10aGlzLmZhY3Rvcmllcy5maW5kKChlPT5lLnN1cHBvcnRzKHQpKSk7aWYobnVsbCE9ZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9JyBvZiB0eXBlICckeyhmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm5hbWV8fHR5cGVvZiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpfSdgKX19ZnVuY3Rpb24gRmcoKXtyZXR1cm4gbmV3IExnKFtuZXcgVGddKX1IZy7JtXByb3Y9TW4oe3Rva2VuOkhnLHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6SWd9KTtjbGFzcyBMZ3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhY3Rvcmllcz10fXN0YXRpYyBjcmVhdGUodCxlKXtpZihlKXtjb25zdCBuPWUuZmFjdG9yaWVzLnNsaWNlKCk7dD10LmNvbmNhdChuKX1yZXR1cm4gbmV3IExnKHQpfXN0YXRpYyBleHRlbmQodCl7cmV0dXJue3Byb3ZpZGU6TGcsdXNlRmFjdG9yeTplPT5MZy5jcmVhdGUodCxlfHxGZygpKSxkZXBzOltbTGcsbmV3IEVyLG5ldyBTcl1dfX1maW5kKHQpe2NvbnN0IGU9dGhpcy5mYWN0b3JpZXMuZmluZCgoZT0+ZS5zdXBwb3J0cyh0KSkpO2lmKGUpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fSdgKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBCZyh0LGUsbixvLGk9ITEpe2Zvcig7bnVsbCE9PW47KXtuZ0Rldk1vZGUmJmlhKG4sNjMpO2NvbnN0IGE9ZVtuLmluZGV4XTtpZihudWxsIT09YSYmby5wdXNoKGVpKGEpKSxfbyhhKSlmb3IobGV0IHQ9Ym87dDxhLmxlbmd0aDt0Kyspe2NvbnN0IGU9YVt0XSxuPWVbMV0uZmlyc3RDaGlsZDtudWxsIT09biYmQmcoZVsxXSxlLG4sbyl9Y29uc3Qgcj1uLnR5cGU7aWYoOCZyKUJnKHQsZSxuLmNoaWxkLG8pO2Vsc2UgaWYoMzImcil7Y29uc3QgdD1wbChuLGUpO2xldCBpO2Zvcig7aT10KCk7KW8ucHVzaChpKX1lbHNlIGlmKDE2JnIpe2NvbnN0IHQ9TGwoZSxuKTtpZihBcnJheS5pc0FycmF5KHQpKW8ucHVzaCguLi50KTtlbHNle2NvbnN0IG49bWwoZVsxNl0pO25nRGV2TW9kZSYmSW8obiksQmcoblsxXSxuLHQsbywhMCl9fW49aT9uLnByb2plY3Rpb25OZXh0Om4ubmV4dH1yZXR1cm4gb30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovTGcuybVwcm92PU1uKHt0b2tlbjpMZyxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OkZnfSk7Y2xhc3MgVmd7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9sVmlldz10LHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlldz1lLHRoaXMuX2FwcFJlZj1udWxsLHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfWdldCByb290Tm9kZXMoKXtjb25zdCB0PXRoaXMuX2xWaWV3LGU9dFsxXTtyZXR1cm4gQmcoZSx0LGUuZmlyc3RDaGlsZCxbXSl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gdGhpcy5fbFZpZXdbOF19c2V0IGNvbnRleHQodCl7dGhpcy5fbFZpZXdbOF09dH1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIDI1Nj09KDI1NiZ0aGlzLl9sVmlld1syXSl9ZGVzdHJveSgpe2lmKHRoaXMuX2FwcFJlZil0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTtlbHNlIGlmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXtjb25zdCB0PXRoaXMuX2xWaWV3WzNdO2lmKF9vKHQpKXtjb25zdCBlPXRbOF0sbj1lP2UuaW5kZXhPZih0aGlzKTotMTtuPi0xJiYobmdEZXZNb2RlJiZsbihuLHQuaW5kZXhPZih0aGlzLl9sVmlldyktYm8sIkFuIGF0dGFjaGVkIHZpZXcgc2hvdWxkIGJlIGluIHRoZSBzYW1lIHBvc2l0aW9uIHdpdGhpbiBpdHMgY29udGFpbmVyIGFzIGl0cyBWaWV3UmVmIGluIHRoZSBWSUVXX1JFRlMgYXJyYXkuIikseGwodCxuKSxvcihlLG4pKX10aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMX1PbCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyl9b25EZXN0cm95KHQpe3JkKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3LG51bGwsdCl9bWFya0ZvckNoZWNrKCl7RWQodGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3fHx0aGlzLl9sVmlldyl9ZGV0YWNoKCl7dGhpcy5fbFZpZXdbMl0mPS0xMjl9cmVhdHRhY2goKXt0aGlzLl9sVmlld1syXXw9MTI4fWRldGVjdENoYW5nZXMoKXtBZCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KGUsbixvKXtPaSghMCk7dHJ5e0FkKGUsbixvKX1maW5hbGx5e09pKCExKX19KSh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWF0dGFjaFRvVmlld0NvbnRhaW5lclJlZigpe2lmKHRoaXMuX2FwcFJlZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBBcHBsaWNhdGlvblJlZiEiKTt0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcj0hMH1kZXRhY2hGcm9tQXBwUmVmKCl7dGhpcy5fYXBwUmVmPW51bGwsKGZ1bmN0aW9uIHQoZSxuKXtVbChlLG4sblsxMV0sMixudWxsLG51bGwpfSkodGhpcy5fbFZpZXdbMV0sdGhpcy5fbFZpZXcpfWF0dGFjaFRvQXBwUmVmKHQpe2lmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyISIpO3RoaXMuX2FwcFJlZj10fX1jbGFzcyBqZyBleHRlbmRzIFZne2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX3ZpZXc9dH1kZXRlY3RDaGFuZ2VzKCl7VGQodGhpcy5fdmlldyl9Y2hlY2tOb0NoYW5nZXMoKXshKGZ1bmN0aW9uIHQoZSl7T2koITApO3RyeXtUZChlKX1maW5hbGx5e09pKCExKX19KSh0aGlzLl92aWV3KX1nZXQgY29udGV4dCgpe3JldHVybiBudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVWd7fVVnLl9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uIEdnKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtpZihNbyh0KSYmIW8pe2NvbnN0IGU9cmkodC5pbmRleCxuKTtyZXR1cm4gbmV3IFZnKGUsZSl9cmV0dXJuIDQ3JnQudHlwZT9uZXcgVmcoblsxNl0sbik6bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShiaSgpLGZpKCksMTY9PSgxNiZ0KSl9O2NvbnN0IFdnPVtuZXcgVGddLFlnPVtuZXcgd2ddLHFnPW5ldyBIZyhZZyksWmc9bmV3IExnKFdnKTtjbGFzcyBYZ3t9WGcuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24gS2coKXtyZXR1cm4gJGcoYmkoKSxmaSgpKX07Y29uc3QgSmc9WGcsUWc9Y2xhc3MgZXh0ZW5kcyBKZ3tjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9kZWNsYXJhdGlvbkxWaWV3PXQsdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyPWUsdGhpcy5lbGVtZW50UmVmPW59Y3JlYXRlRW1iZWRkZWRWaWV3KHQpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLnRWaWV3cyxuPXFjKHRoaXMuX2RlY2xhcmF0aW9uTFZpZXcsZSx0LDE2LG51bGwsZS5kZWNsVE5vZGUsbnVsbCxudWxsLG51bGwsbnVsbCksbz10aGlzLl9kZWNsYXJhdGlvbkxWaWV3W3RoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lci5pbmRleF07bmdEZXZNb2RlJiZEbyhvKSxuWzE3XT1vO2NvbnN0IGk9dGhpcy5fZGVjbGFyYXRpb25MVmlld1sxOV07cmV0dXJuIG51bGwhPT1pJiYoblsxOV09aS5jcmVhdGVFbWJlZGRlZFZpZXcoZSkpLEpjKGUsbix0KSxuZXcgVmcobil9fTtmdW5jdGlvbiAkZyh0LGUpe3JldHVybiA0JnQudHlwZT8obmdEZXZNb2RlJiZobih0LnRWaWV3cywiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxuZXcgUWcoZSx0LGdnKHQsZSkpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB0aHt9Y2xhc3MgZWh7fWVoLl9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uIG5oKCl7cmV0dXJuIHNoKGJpKCksZmkoKSl9O2NvbnN0IG9oPWVoLGloPWNsYXNzIGV4dGVuZHMgb2h7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5fbENvbnRhaW5lcj10LHRoaXMuX2hvc3RUTm9kZT1lLHRoaXMuX2hvc3RMVmlldz1ufWdldCBlbGVtZW50KCl7cmV0dXJuIGdnKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpfWdldCBpbmplY3Rvcigpe3JldHVybiBuZXcgUmEodGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RMVmlldyl9Z2V0IHBhcmVudEluamVjdG9yKCl7Y29uc3QgdD1fYSh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KTtpZihkYSh0KSl7Y29uc3QgZT1tYSh0LHRoaXMuX2hvc3RMVmlldyksbj1wYSh0KTtyZXR1cm4gbmdEZXZNb2RlJiZIbyhlLG4pLG5ldyBSYShlWzFdLmRhdGFbbis4XSxlKX1yZXR1cm4gbmV3IFJhKG51bGwsdGhpcy5faG9zdExWaWV3KX1jbGVhcigpe2Zvcig7dGhpcy5sZW5ndGg+MDspdGhpcy5yZW1vdmUodGhpcy5sZW5ndGgtMSl9Z2V0KHQpe2NvbnN0IGU9YWgodGhpcy5fbENvbnRhaW5lcik7cmV0dXJuIG51bGwhPT1lJiZlW3RdfHxudWxsfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbENvbnRhaW5lci5sZW5ndGgtYm99Y3JlYXRlRW1iZWRkZWRWaWV3KHQsZSxuKXtjb25zdCBvPXQuY3JlYXRlRW1iZWRkZWRWaWV3KGV8fHt9KTtyZXR1cm4gdGhpcy5pbnNlcnQobyxuKSxvfWNyZWF0ZUNvbXBvbmVudCh0LGUsbixvLGkpe2NvbnN0IGE9bnx8dGhpcy5wYXJlbnRJbmplY3RvcjtpZighaSYmbnVsbD09dC5uZ01vZHVsZSYmYSl7Y29uc3QgdD1hLmdldCh0aCxudWxsKTt0JiYoaT10KX1jb25zdCByPXQuY3JlYXRlKGEsbyx2b2lkIDAsaSk7cmV0dXJuIHRoaXMuaW5zZXJ0KHIuaG9zdFZpZXcsZSkscn1pbnNlcnQodCxlKXtjb25zdCBuPXQuX2xWaWV3LG89blsxXTtpZihuZ0Rldk1vZGUmJnQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGluc2VydCBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTtpZigoZnVuY3Rpb24gaSh0KXtyZXR1cm4gX28odFszXSl9KShuKSl7Y29uc3QgZT10aGlzLmluZGV4T2YodCk7aWYoLTEhPT1lKXRoaXMuZGV0YWNoKGUpO2Vsc2V7Y29uc3QgZT1uWzNdO25nRGV2TW9kZSYmbG4oX28oZSksITAsIkFuIGF0dGFjaGVkIHZpZXcgc2hvdWxkIGhhdmUgaXRzIFBBUkVOVCBwb2ludCB0byBhIGNvbnRhaW5lci4iKTtjb25zdCBvPW5ldyBpaChlLGVbNl0sZVszXSk7by5kZXRhY2goby5pbmRleE9mKHQpKX19Y29uc3QgYT10aGlzLl9hZGp1c3RJbmRleChlKSxyPXRoaXMuX2xDb250YWluZXI7IShmdW5jdGlvbiBzKHQsZSxuLG8pe25nRGV2TW9kZSYmUm8oZSksbmdEZXZNb2RlJiZEbyhuKTtjb25zdCBpPWJvK28sYT1uLmxlbmd0aDtvPjAmJihuW2ktMV1bNF09ZSksbzxhLWJvPyhlWzRdPW5baV0sbnIobixibytvLGUpKToobi5wdXNoKGUpLGVbNF09bnVsbCksZVszXT1uO2NvbnN0IHI9ZVsxN107bnVsbCE9PXImJm4hPT1yJiYoZnVuY3Rpb24gcyh0LGUpe25nRGV2TW9kZSYmaG4oZSwiTFZpZXcgcmVxdWlyZWQiKSxuZ0Rldk1vZGUmJkRvKHQpO2NvbnN0IG49dFs5XSxvPWVbM107bmdEZXZNb2RlJiZEbyhvKTtjb25zdCBpPW9bM11bMTZdO25nRGV2TW9kZSYmaG4oaSwiTWlzc2luZyBpbnNlcnRlZENvbXBvbmVudExWaWV3Iik7Y29uc3QgYT1lWzE2XTtuZ0Rldk1vZGUmJmhuKGEsIk1pc3NpbmcgZGVjbGFyZWRDb21wb25lbnRMVmlldyIpLGEhPT1pJiYodFsyXT0hMCksbnVsbD09PW4/dFs5XT1bZV06bi5wdXNoKGUpfSkocixlKTtjb25zdCBsPWVbMTldO251bGwhPT1sJiZsLmluc2VydFZpZXcodCksZVsyXXw9MTI4fSkobyxuLHIsYSk7Y29uc3QgbD1CbChhLHIpLGM9blsxMV0sZD1SbChjLHJbN10pO3JldHVybiBudWxsIT09ZCYmKGZ1bmN0aW9uIHAodCxlLG4sbyxpLGEpe29bMF09aSxvWzZdPWUsVWwodCxvLG4sMSxpLGEpfSkobyxyWzZdLGMsbixkLGwpLHQuYXR0YWNoVG9WaWV3Q29udGFpbmVyUmVmKCksbnIocmgociksYSx0KSx0fW1vdmUodCxlKXtpZihuZ0Rldk1vZGUmJnQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1vdmUgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhIik7cmV0dXJuIHRoaXMuaW5zZXJ0KHQsZSl9aW5kZXhPZih0KXtjb25zdCBlPWFoKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBudWxsIT09ZT9lLmluZGV4T2YodCk6LTF9cmVtb3ZlKHQpe2NvbnN0IGU9dGhpcy5fYWRqdXN0SW5kZXgodCwtMSksbj14bCh0aGlzLl9sQ29udGFpbmVyLGUpO24mJihvcihyaCh0aGlzLl9sQ29udGFpbmVyKSxlKSxPbChuWzFdLG4pKX1kZXRhY2godCl7Y29uc3QgZT10aGlzLl9hZGp1c3RJbmRleCh0LC0xKSxuPXhsKHRoaXMuX2xDb250YWluZXIsZSk7cmV0dXJuIG4mJm51bGwhPW9yKHJoKHRoaXMuX2xDb250YWluZXIpLGUpP25ldyBWZyhuKTpudWxsfV9hZGp1c3RJbmRleCh0LGU9MCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5sZW5ndGgrZToobmdEZXZNb2RlJiYoZm4odCwtMSxgVmlld1JlZiBpbmRleCBtdXN0IGJlIHBvc2l0aXZlLCBnb3QgJHt0fWApLG1uKHQsdGhpcy5sZW5ndGgrMStlLCJpbmRleCIpKSx0KX19O2Z1bmN0aW9uIGFoKHQpe3JldHVybiB0WzhdfWZ1bmN0aW9uIHJoKHQpe3JldHVybiB0WzhdfHwodFs4XT1bXSl9ZnVuY3Rpb24gc2godCxlKXtsZXQgbjtuZ0Rldk1vZGUmJmlhKHQsMTUpO2NvbnN0IG89ZVt0LmluZGV4XTtpZihfbyhvKSluPW87ZWxzZXtsZXQgaTtpZig4JnQudHlwZSlpPWVpKG8pO2Vsc2V7Y29uc3Qgbj1lWzExXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKyxpPW4uY3JlYXRlQ29tbWVudChuZ0Rldk1vZGU/ImNvbnRhaW5lciI6IiIpO2NvbnN0IG89b2kodCxlKTtTbChuLFJsKG4sbyksaSwoZnVuY3Rpb24gaSh0LGUpe3JldHVybiAkbyh0KT90Lm5leHRTaWJsaW5nKGUpOmUubmV4dFNpYmxpbmd9KShuLG8pLCExKX1lW3QuaW5kZXhdPW49UGQobyxlLGksdCksRGQoZSxuKX1yZXR1cm4gbmV3IGloKG4sdCxlKX1jb25zdCBsaD1uZXcgTWFwO2Z1bmN0aW9uIGNoKHQpe2xldCBlPWxoLmdldCh0KTtyZXR1cm4gZXx8KGU9R2UodCkrIl8iK2xoLnNpemUsbGguc2V0KHQsZSkpLGV9Y2gocnApLGNoKEdkKSxjaCh0aCksCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjaChDZyksY2goaGcpLGNoKGVoKSxjaChYZyksY2goVWcpLGNoKHJwKSxjaChHZCk7Y29uc3QgZGg9e307Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHBoIGV4dGVuZHMgdWd7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLm5nTW9kdWxlPXR9cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCl7bmdEZXZNb2RlJiYoZnVuY3Rpb24gZSh0LG49IlR5cGUgcGFzc2VkIGluIGlzIG5vdCBDb21wb25lbnRUeXBlLCBpdCBkb2VzIG5vdCBoYXZlICfJtWNtcCcgcHJvcGVydHkuIil7cG8odCl8fGJuKG4pfSkodCk7Y29uc3Qgbj1wbyh0KTtyZXR1cm4gbmV3IGZoKG4sdGhpcy5uZ01vZHVsZSl9fWZ1bmN0aW9uIG1oKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5wdXNoKHtwcm9wTmFtZTp0W25dLHRlbXBsYXRlTmFtZTpufSk7cmV0dXJuIGV9Y29uc3QgdWg9bmV3IEdhKCJTQ0hFRFVMRVJfVE9LRU4iLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5ubH0pO2NsYXNzIGZoIGV4dGVuZHMgbWd7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuY29tcG9uZW50RGVmPXQsdGhpcy5uZ01vZHVsZT1lLHRoaXMuY29tcG9uZW50VHlwZT10LnR5cGUsdGhpcy5zZWxlY3Rvcj0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5tYXAoaWMpLmpvaW4oIiwiKX0pKHQuc2VsZWN0b3JzKSx0aGlzLm5nQ29udGVudFNlbGVjdG9ycz10Lm5nQ29udGVudFNlbGVjdG9ycz90Lm5nQ29udGVudFNlbGVjdG9yczpbXSx0aGlzLmlzQm91bmRUb01vZHVsZT0hIWV9Z2V0IGlucHV0cygpe3JldHVybiBtaCh0aGlzLmNvbXBvbmVudERlZi5pbnB1dHMpfWdldCBvdXRwdXRzKCl7cmV0dXJuIG1oKHRoaXMuY29tcG9uZW50RGVmLm91dHB1dHMpfWNyZWF0ZSh0LGUsbixvKXtjb25zdCBpPShvPW98fHRoaXMubmdNb2R1bGUpPyhmdW5jdGlvbiBhKHQsZSl7cmV0dXJue2dldDoobixvLGkpPT57Y29uc3QgYT10LmdldChuLGRoLGkpO3JldHVybiBhIT09ZGh8fG89PT1kaD9hOmUuZ2V0KG4sbyxpKX19fSkodCxvLmluamVjdG9yKTp0LHI9aS5nZXQoX2csdGkpLHM9aS5nZXQoeGcsbnVsbCksbD1yLmNyZWF0ZVJlbmRlcmVyKG51bGwsdGhpcy5jb21wb25lbnREZWYpLGM9dGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdWzBdfHwiZGl2IixkPW4/KGZ1bmN0aW9uIHAodCxlLG4pe2lmKCRvKHQpKXJldHVybiB0LnNlbGVjdFJvb3RFbGVtZW50KGUsbj09PUhuLlNoYWRvd0RvbSk7bGV0IG89InN0cmluZyI9PXR5cGVvZiBlP3QucXVlcnlTZWxlY3RvcihlKTplO3JldHVybiBuZ0Rldk1vZGUmJihmdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3coZnVuY3Rpb24gbih0LGUpe3JldHVybiBuZXcgRXJyb3IoYFJlbmRlcmVyOiAke3R9IFske3RuKGUpfV1gKX0pKCJzdHJpbmciPT10eXBlb2YgZT8iSG9zdCBub2RlIHdpdGggc2VsZWN0b3Igbm90IGZvdW5kOiI6Ikhvc3Qgbm9kZSBpcyByZXF1aXJlZDoiLGUpfSkobyxlKSxvLnRleHRDb250ZW50PSIiLG99KShsLG4sdGhpcy5jb21wb25lbnREZWYuZW5jYXBzdWxhdGlvbik6TWwoci5jcmVhdGVSZW5kZXJlcihudWxsLHRoaXMuY29tcG9uZW50RGVmKSxjLChmdW5jdGlvbiBtKHQpe2NvbnN0IGU9dC50b0xvd2VyQ2FzZSgpO3JldHVybiJzdmciPT09ZT9abzoibWF0aCI9PT1lP1hvOm51bGx9KShjKSksdT10aGlzLmNvbXBvbmVudERlZi5vblB1c2g/NTc2OjUyOCxmPShmdW5jdGlvbiBnKHQsZSl7cmV0dXJue2NvbXBvbmVudHM6W10sc2NoZWR1bGVyOnR8fG5sLGNsZWFuOklkLHBsYXllckhhbmRsZXI6ZXx8bnVsbCxmbGFnczowfX0pKCksaD1hZCgwLG51bGwsbnVsbCwxLDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSxiPXFjKG51bGwsaCxmLHUsbnVsbCxudWxsLHIsbCxzLGkpO2xldCB5LF87RmkoYik7dHJ5e2NvbnN0IHQ9KGZ1bmN0aW9uIG8odCxlLG4saSxhLHIpe2NvbnN0IHM9blsxXTtuZ0Rldk1vZGUmJl9uKG4sMjApLG5bMjBdPXQ7Y29uc3QgbD1aYyhzLDIwLDIsIiNob3N0IixudWxsKSxjPWwubWVyZ2VkQXR0cnM9ZS5ob3N0QXR0cnM7bnVsbCE9PWMmJihVZChsLGMsITApLG51bGwhPT10JiYoYWEoYSx0LGMpLG51bGwhPT1sLmNsYXNzZXMmJllsKGEsdCxsLmNsYXNzZXMpLG51bGwhPT1sLnN0eWxlcyYmV2woYSx0LGwuc3R5bGVzKSkpO2NvbnN0IGQ9aS5jcmVhdGVSZW5kZXJlcih0LGUpLHA9cWMobixpZChlKSxudWxsLGUub25QdXNoPzY0OjE2LG5bMjBdLGwsaSxkLHJ8fG51bGwsbnVsbCk7cmV0dXJuIHMuZmlyc3RDcmVhdGVQYXNzJiYoQ2EoaGEobCxuKSxzLGUudHlwZSksZ2QocyxsKSxiZChsLG4ubGVuZ3RoLDEpKSxEZChuLHApLG5bMjBdPXB9KShkLHRoaXMuY29tcG9uZW50RGVmLGIscixsKTtpZihkKWlmKG4pYWEobCxkLFsibmctdmVyc2lvbiIsUGcuZnVsbF0pO2Vsc2V7Y29uc3R7YXR0cnM6dCxjbGFzc2VzOmV9PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W10sbj1bXTtsZXQgbz0xLGk9Mjtmb3IoO288dC5sZW5ndGg7KXtsZXQgYT10W29dO2lmKCJzdHJpbmciPT10eXBlb2YgYSkyPT09aT8iIiE9PWEmJmUucHVzaChhLHRbKytvXSk6OD09PWkmJm4ucHVzaChhKTtlbHNle2lmKCEkbChpKSlicmVhaztpPWF9bysrfXJldHVybnthdHRyczplLGNsYXNzZXM6bn19KSh0aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF0pO3QmJmFhKGwsZCx0KSxlJiZlLmxlbmd0aD4wJiZZbChsLGQsZS5qb2luKCIgIikpfWlmKF89aWkoaCxnbyksdm9pZCAwIT09ZSl7Y29uc3QgdD1fLnByb2plY3Rpb249W107Zm9yKGxldCBuPTA7bjx0aGlzLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGg7bisrKXtjb25zdCBvPWVbbl07dC5wdXNoKG51bGwhPW8/QXJyYXkuZnJvbShvKTpudWxsKX19eT0oZnVuY3Rpb24gaSh0LGUsbixvLGEpe2NvbnN0IHI9blsxXSxzPShmdW5jdGlvbiBsKHQsZSxuKXtjb25zdCBvPWJpKCk7aWYodC5maXJzdENyZWF0ZVBhc3Mpe24ucHJvdmlkZXJzUmVzb2x2ZXImJm4ucHJvdmlkZXJzUmVzb2x2ZXIobik7Y29uc3QgaT1LYyh0LGUsMSxudWxsKTtuZ0Rldk1vZGUmJmxuKGksby5kaXJlY3RpdmVTdGFydCwiQmVjYXVzZSB0aGlzIGlzIGEgcm9vdCBjb21wb25lbnQgdGhlIGFsbG9jYXRlZCBleHBhbmRvIHNob3VsZCBtYXRjaCB0aGUgVE5vZGUgY29tcG9uZW50LiIpLHlkKHQsbyxlLGksbil9Y29uc3QgaT1TYShlLHQsby5kaXJlY3RpdmVTdGFydCxvKTtMcyhpLGUpO2NvbnN0IGE9b2kobyxlKTtyZXR1cm4gYSYmTHMoYSxlKSxpfSkocixuLGUpO2lmKG8uY29tcG9uZW50cy5wdXNoKHMpLHRbOF09cyxhJiZhLmZvckVhY2goKHQ9PnQocyxlKSkpLGUuY29udGVudFF1ZXJpZXMpe2NvbnN0IHQ9YmkoKTtuZ0Rldk1vZGUmJmhuKHQsIlROb2RlIGV4cGVjdGVkIiksZS5jb250ZW50UXVlcmllcygxLHMsdC5kaXJlY3RpdmVTdGFydCl9Y29uc3QgYz1iaSgpO3JldHVybiBuZ0Rldk1vZGUmJmhuKGMsInROb2RlIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBjcmVhdGVkIiksIXIuZmlyc3RDcmVhdGVQYXNzfHxudWxsPT09ZS5ob3N0QmluZGluZ3MmJm51bGw9PT1lLmhvc3RBdHRyc3x8KFdpKGMuaW5kZXgpLHVkKG5bMV0sYywwLGMuZGlyZWN0aXZlU3RhcnQsYy5kaXJlY3RpdmVFbmQsZSksZmQoZSxzKSksc30pKHQsdGhpcy5jb21wb25lbnREZWYsYixmLFtNcF0pLEpjKGgsYixudWxsKX1maW5hbGx5e1VpKCl9cmV0dXJuIG5ldyBnaCh0aGlzLmNvbXBvbmVudFR5cGUseSxnZyhfLGIpLGIsXyl9fW5ldyBwaDtjbGFzcyBnaCBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMubG9jYXRpb249bix0aGlzLl9yb290TFZpZXc9byx0aGlzLl90Tm9kZT1pLHRoaXMuaW5zdGFuY2U9ZSx0aGlzLmhvc3RWaWV3PXRoaXMuY2hhbmdlRGV0ZWN0b3JSZWY9bmV3IGpnKG8pLHRoaXMuY29tcG9uZW50VHlwZT10fWdldCBpbmplY3Rvcigpe3JldHVybiBuZXcgUmEodGhpcy5fdE5vZGUsdGhpcy5fcm9vdExWaWV3KX1kZXN0cm95KCl7dGhpcy5ob3N0Vmlldy5kZXN0cm95KCl9b25EZXN0cm95KHQpe3RoaXMuaG9zdFZpZXcub25EZXN0cm95KHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gaGgodCxlLG4sbyl7cmV0dXJuIE5uKCgoKT0+e2NvbnN0IGk9dDtudWxsIT09ZSYmKGkuaGFzT3duUHJvcGVydHkoImRlY29yYXRvcnMiKSYmdm9pZCAwIT09aS5kZWNvcmF0b3JzP2kuZGVjb3JhdG9ycy5wdXNoKC4uLmUpOmkuZGVjb3JhdG9ycz1lKSxudWxsIT09biYmKGkuY3RvclBhcmFtZXRlcnM9biksbnVsbCE9PW8mJihpLnByb3BEZWNvcmF0b3JzPWkuaGFzT3duUHJvcGVydHkoInByb3BEZWNvcmF0b3JzIikmJnZvaWQgMCE9PWkucHJvcERlY29yYXRvcnM/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkucHJvcERlY29yYXRvcnMpLG8pOm8pfSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBiaD1uZXcgTWFwOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeWggZXh0ZW5kcyB0aHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fcGFyZW50PWUsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1bXSx0aGlzLmluamVjdG9yPXRoaXMsdGhpcy5kZXN0cm95Q2JzPVtdLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW5ldyBwaCh0aGlzKTtjb25zdCBuPWZvKHQpO25nRGV2TW9kZSYmaG4obixgTmdNb2R1bGUgJyR7R2UodCl9JyBpcyBub3QgYSBzdWJ0eXBlIG9mICdOZ01vZHVsZVR5cGUnLmApO2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHRbS25dfHxudWxsfSkodCk7byYmWHUobyksdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cz1ybChuLmJvb3RzdHJhcCksdGhpcy5fcjNJbmplY3Rvcj1KZCh0LGUsW3twcm92aWRlOnRoLHVzZVZhbHVlOnRoaXN9LHtwcm92aWRlOnVnLHVzZVZhbHVlOnRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfV0sR2UodCkpLHRoaXMuX3IzSW5qZWN0b3IuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCksdGhpcy5pbnN0YW5jZT10aGlzLmdldCh0KX1nZXQodCxlPXJwLlRIUk9XX0lGX05PVF9GT1VORCxuPUVuLkRlZmF1bHQpe3JldHVybiB0PT09cnB8fHQ9PT10aHx8dD09PUdkP3RoaXM6dGhpcy5fcjNJbmplY3Rvci5nZXQodCxlLG4pfWRlc3Ryb3koKXtuZ0Rldk1vZGUmJmhuKHRoaXMuZGVzdHJveUNicywiTmdNb2R1bGUgYWxyZWFkeSBkZXN0cm95ZWQiKTtjb25zdCB0PXRoaXMuX3IzSW5qZWN0b3I7IXQuZGVzdHJveWVkJiZ0LmRlc3Ryb3koKSx0aGlzLmRlc3Ryb3lDYnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KHQpe25nRGV2TW9kZSYmaG4odGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpLHRoaXMuZGVzdHJveUNicy5wdXNoKHQpfX1jbGFzcyBfaCBleHRlbmRzIGNsYXNze30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICove2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5tb2R1bGVUeXBlPXQsbnVsbCE9PWZvKHQpJiYoZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBTZXQ7IShmdW5jdGlvbiB0KG4pe2NvbnN0IG89Zm8obiwhMCksaT1vLmlkO251bGwhPT1pJiYoKGZ1bmN0aW9uIGEodCxlLG4pe2lmKGUmJmUhPT1uKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSByZWdpc3RlcmVkIGZvciAke3R9IC0gJHtHZShlKX0gdnMgJHtHZShlLm5hbWUpfWApfSkoaSxiaC5nZXQoaSksbiksYmguc2V0KGksbikpO2NvbnN0IHI9cmwoby5pbXBvcnRzKTtmb3IoY29uc3QgbiBvZiByKWUuaGFzKG4pfHwoZS5hZGQobiksdChuKSl9KSh0KX0pKHQpfWNyZWF0ZSh0KXtyZXR1cm4gbmV3IHloKHRoaXMubW9kdWxlVHlwZSx0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIENoKHQsZSxuKXtjb25zdCBvPVBpKCkrdCxpPWZpKCk7cmV0dXJuIGlbb109PT1hYz9JcChpLG8sbj9lLmNhbGwobik6ZSgpKTpIcChpLG8pfWZ1bmN0aW9uIE1oKHQsZSxuLG8pe3JldHVybiBraChmaSgpLFBpKCksdCxlLG4sbyl9ZnVuY3Rpb24gdmgodCxlLG4sbyxpKXtyZXR1cm4gU2goZmkoKSxQaSgpLHQsZSxuLG8saSl9ZnVuY3Rpb24geGgodCxlLG4sbyxpLGEpe3JldHVybiBEaChmaSgpLFBpKCksdCxlLG4sbyxpLGEpfWZ1bmN0aW9uIE9oKHQsZSxuLG8saSxhLHIpe3JldHVybiBFaChmaSgpLFBpKCksdCxlLG4sbyxpLGEscil9ZnVuY3Rpb24gUGgodCxlLG4sbyxpLGEscixzKXtjb25zdCBsPVBpKCkrdCxjPWZpKCksZD1WcChjLGwsbixvLGksYSk7cmV0dXJuIEZwKGMsbCs0LHIpfHxkP0lwKGMsbCs1LHM/ZS5jYWxsKHMsbixvLGksYSxyKTplKG4sbyxpLGEscikpOkhwKGMsbCs1KX1mdW5jdGlvbiB3aCh0LGUpe25nRGV2TW9kZSYmX24odCxlKTtjb25zdCBuPXRbZV07cmV0dXJuIG49PT1hYz92b2lkIDA6bn1mdW5jdGlvbiBraCh0LGUsbixvLGksYSl7Y29uc3Qgcj1lK247cmV0dXJuIEZwKHQscixpKT9JcCh0LHIrMSxhP28uY2FsbChhLGkpOm8oaSkpOndoKHQscisxKX1mdW5jdGlvbiBTaCh0LGUsbixvLGksYSxyKXtjb25zdCBzPWUrbjtyZXR1cm4gTHAodCxzLGksYSk/SXAodCxzKzIscj9vLmNhbGwocixpLGEpOm8oaSxhKSk6d2godCxzKzIpfWZ1bmN0aW9uIERoKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1lK247cmV0dXJuIEJwKHQsbCxpLGEscik/SXAodCxsKzMscz9vLmNhbGwocyxpLGEscik6byhpLGEscikpOndoKHQsbCszKX1mdW5jdGlvbiBFaCh0LGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1lK247cmV0dXJuIFZwKHQsYyxpLGEscixzKT9JcCh0LGMrNCxsP28uY2FsbChsLGksYSxyLHMpOm8oaSxhLHIscykpOndoKHQsYys0KX1mdW5jdGlvbiBSaCh0LGUsbixvLGksYSl7bGV0IHI9ZStuLHM9ITE7Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspRnAodCxyKyssaVtlXSkmJihzPSEwKTtyZXR1cm4gcz9JcCh0LHIsby5hcHBseShhLGkpKTp3aCh0LHIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBBaCh0LGUpe2NvbnN0IG49Z2koKTtsZXQgbztjb25zdCBpPXQrZ287bi5maXJzdENyZWF0ZVBhc3M/KG89KGZ1bmN0aW9uIGEodCxlKXtpZihlKWZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCBvPWVbbl07aWYodD09PW8ubmFtZSlyZXR1cm4gb310aHJvdyBuZXcgS2UoIjMwMiIsYFRoZSBwaXBlICcke3R9JyBjb3VsZCBub3QgYmUgZm91bmQhYCl9KShlLG4ucGlwZVJlZ2lzdHJ5KSxuLmRhdGFbaV09byxvLm9uRGVzdHJveSYmKG4uZGVzdHJveUhvb2tzfHwobi5kZXN0cm95SG9va3M9W10pKS5wdXNoKGksby5vbkRlc3Ryb3kpKTpvPW4uZGF0YVtpXTtjb25zdCByPW8uZmFjdG9yeXx8KG8uZmFjdG9yeT1GbyhvLnR5cGUsITApKSxzPUFuKFNtKTt0cnl7Y29uc3QgdD1mYSghMSksZT1yKCk7cmV0dXJuIGZhKHQpLChmdW5jdGlvbiBsKHQsZSxuLG8pe24+PXQuZGF0YS5sZW5ndGgmJih0LmRhdGFbbl09bnVsbCx0LmJsdWVwcmludFtuXT1udWxsKSxlW25dPW99KShuLGZpKCksaSxlKSxlfWZpbmFsbHl7QW4ocyl9fWZ1bmN0aW9uIFRoKHQsZSxuKXtjb25zdCBvPXQrZ28saT1maSgpLGE9YWkoaSxvKTtyZXR1cm4gSGgoaSxJaChpLG8pP2toKGksUGkoKSxlLGEudHJhbnNmb3JtLG4sYSk6YS50cmFuc2Zvcm0obikpfWZ1bmN0aW9uIE5oKHQsZSxuLG8pe2NvbnN0IGk9dCtnbyxhPWZpKCkscj1haShhLGkpO3JldHVybiBIaChhLEloKGEsaSk/U2goYSxQaSgpLGUsci50cmFuc2Zvcm0sbixvLHIpOnIudHJhbnNmb3JtKG4sbykpfWZ1bmN0aW9uIHpoKHQsZSxuLG8saSl7Y29uc3QgYT10K2dvLHI9ZmkoKSxzPWFpKHIsYSk7cmV0dXJuIEhoKHIsSWgocixhKT9EaChyLFBpKCksZSxzLnRyYW5zZm9ybSxuLG8saSxzKTpzLnRyYW5zZm9ybShuLG8saSkpfWZ1bmN0aW9uIEloKHQsZSl7cmV0dXJuIHRbMV0uZGF0YVtlXS5wdXJlfWZ1bmN0aW9uIEhoKHQsZSl7cmV0dXJuIFRwLmlzV3JhcHBlZChlKSYmKGU9VHAudW53cmFwKGUpLHRbd2koKV09YWMpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEZoKHQpe3JldHVybiBlPT57c2V0VGltZW91dCh0LHZvaWQgMCxlKX19Y29uc3QgTGg9Y2xhc3MgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKHQ9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9dH1lbWl0KHQpe3N1cGVyLm5leHQodCl9c3Vic2NyaWJlKHQsZSxuKXt2YXIgbyxpLGE7bGV0IHI9dCxzPWV8fCgoKT0+bnVsbCksbD1uO2lmKHQmJiJvYmplY3QiPT10eXBlb2YgdCl7Y29uc3QgZT10O3I9bnVsbD09PShvPWUubmV4dCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uYmluZChlKSxzPW51bGw9PT0oaT1lLmVycm9yKXx8dm9pZCAwPT09aT92b2lkIDA6aS5iaW5kKGUpLGw9bnVsbD09PShhPWUuY29tcGxldGUpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmJpbmQoZSl9dGhpcy5fX2lzQXN5bmMmJihzPUZoKHMpLHImJihyPUZoKHIpKSxsJiYobD1GaChsKSkpO2NvbnN0IGM9c3VwZXIuc3Vic2NyaWJlKHtuZXh0OnIsZXJyb3I6cyxjb21wbGV0ZTpsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBtJiZ0LmFkZChjKSxjfX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEJoKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbUnAoKV0oKX1jbGFzcyBWaHtjb25zdHJ1Y3Rvcih0PSExKXt0aGlzLl9lbWl0RGlzdGluY3RDaGFuZ2VzT25seT10LHRoaXMuZGlydHk9ITAsdGhpcy5fcmVzdWx0cz1bXSx0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5sYXN0PXZvaWQgMDtjb25zdCBlPVJwKCksbj1WaC5wcm90b3R5cGU7bltlXXx8KG5bZV09QmgpfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyBMaCl9Z2V0KHQpe3JldHVybiB0aGlzLl9yZXN1bHRzW3RdfW1hcCh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9ZmlsdGVyKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcih0KX1maW5kKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9cmVkdWNlKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9Zm9yRWFjaCh0KXt0aGlzLl9yZXN1bHRzLmZvckVhY2godCl9c29tZSh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldCh0LGUpe2NvbnN0IG49dGhpcztuLmRpcnR5PSExO2NvbnN0IG89dHIodCk7KHRoaXMuX2NoYW5nZXNEZXRlY3RlZD0hKGZ1bmN0aW9uIGkodCxlLG4pe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCBpPXRbb10sYT1lW29dO2lmKG4mJihpPW4oaSksYT1uKGEpKSxhIT09aSlyZXR1cm4hMX1yZXR1cm4hMH0pKG4uX3Jlc3VsdHMsbyxlKSkmJihuLl9yZXN1bHRzPW8sbi5sZW5ndGg9by5sZW5ndGgsbi5sYXN0PW9bdGhpcy5sZW5ndGgtMV0sbi5maXJzdD1vWzBdKX1ub3RpZnlPbkNoYW5nZXMoKXshdGhpcy5fY2hhbmdlc3x8IXRoaXMuX2NoYW5nZXNEZXRlY3RlZCYmdGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHl8fHRoaXMuX2NoYW5nZXMuZW1pdCh0aGlzKX1zZXREaXJ0eSgpe3RoaXMuZGlydHk9ITB9ZGVzdHJveSgpe3RoaXMuY2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuY2hhbmdlcy51bnN1YnNjcmliZSgpfX1jbGFzcyBqaHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnF1ZXJ5TGlzdD10LHRoaXMubWF0Y2hlcz1udWxsfWNsb25lKCl7cmV0dXJuIG5ldyBqaCh0aGlzLnF1ZXJ5TGlzdCl9c2V0RGlydHkoKXt0aGlzLnF1ZXJ5TGlzdC5zZXREaXJ0eSgpfX1jbGFzcyBVaHtjb25zdHJ1Y3Rvcih0PVtdKXt0aGlzLnF1ZXJpZXM9dH1jcmVhdGVFbWJlZGRlZFZpZXcodCl7Y29uc3QgZT10LnF1ZXJpZXM7aWYobnVsbCE9PWUpe2NvbnN0IG49bnVsbCE9PXQuY29udGVudFF1ZXJpZXM/dC5jb250ZW50UXVlcmllc1swXTplLmxlbmd0aCxvPVtdO2ZvcihsZXQgdD0wO3Q8bjt0Kyspe2NvbnN0IG49ZS5nZXRCeUluZGV4KHQpO28ucHVzaCh0aGlzLnF1ZXJpZXNbbi5pbmRleEluRGVjbGFyYXRpb25WaWV3XS5jbG9uZSgpKX1yZXR1cm4gbmV3IFVoKG8pfXJldHVybiBudWxsfWluc2VydFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kZXRhY2hWaWV3KHQpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2UrKyludWxsIT09b2IodCxlKS5tYXRjaGVzJiZ0aGlzLnF1ZXJpZXNbZV0uc2V0RGlydHkoKX19Y2xhc3MgR2h7Y29uc3RydWN0b3IodCxlLG49bnVsbCl7dGhpcy5wcmVkaWNhdGU9dCx0aGlzLmZsYWdzPWUsdGhpcy5yZWFkPW59fWNsYXNzIFdoe2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWVsZW1lbnRTdGFydCh0LGUpe25nRGV2TW9kZSYmQW8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS5lbGVtZW50U3RhcnQodCxlKX1lbGVtZW50RW5kKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLmVsZW1lbnRFbmQodCl9ZW1iZWRkZWRUVmlldyh0KXtsZXQgZT1udWxsO2ZvcihsZXQgbj0wO248dGhpcy5sZW5ndGg7bisrKXtjb25zdCBvPW51bGwhPT1lP2UubGVuZ3RoOjAsaT10aGlzLmdldEJ5SW5kZXgobikuZW1iZWRkZWRUVmlldyh0LG8pO2kmJihpLmluZGV4SW5EZWNsYXJhdGlvblZpZXc9bixudWxsIT09ZT9lLnB1c2goaSk6ZT1baV0pfXJldHVybiBudWxsIT09ZT9uZXcgV2goZSk6bnVsbH10ZW1wbGF0ZSh0LGUpe25nRGV2TW9kZSYmQW8odCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKXRoaXMucXVlcmllc1tuXS50ZW1wbGF0ZSh0LGUpfWdldEJ5SW5kZXgodCl7cmV0dXJuIG5nRGV2TW9kZSYmX24odGhpcy5xdWVyaWVzLHQpLHRoaXMucXVlcmllc1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMucXVlcmllcy5sZW5ndGh9dHJhY2sodCl7dGhpcy5xdWVyaWVzLnB1c2godCl9fWNsYXNzIFloe2NvbnN0cnVjdG9yKHQsZT0tMSl7dGhpcy5tZXRhZGF0YT10LHRoaXMubWF0Y2hlcz1udWxsLHRoaXMuaW5kZXhJbkRlY2xhcmF0aW9uVmlldz0tMSx0aGlzLmNyb3NzZXNOZ1RlbXBsYXRlPSExLHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSEwLHRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PWV9ZWxlbWVudFN0YXJ0KHQsZSl7dGhpcy5pc0FwcGx5aW5nVG9Ob2RlKGUpJiZ0aGlzLm1hdGNoVE5vZGUodCxlKX1lbGVtZW50RW5kKHQpe3RoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4PT09dC5pbmRleCYmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlPSExKX10ZW1wbGF0ZSh0LGUpe3RoaXMuZWxlbWVudFN0YXJ0KHQsZSl9ZW1iZWRkZWRUVmlldyh0LGUpe3JldHVybiB0aGlzLmlzQXBwbHlpbmdUb05vZGUodCk/KHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITAsdGhpcy5hZGRNYXRjaCgtdC5pbmRleCxlKSxuZXcgWWgodGhpcy5tZXRhZGF0YSkpOm51bGx9aXNBcHBseWluZ1RvTm9kZSh0KXtpZih0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZSYmMSE9KDEmdGhpcy5tZXRhZGF0YS5mbGFncykpe2NvbnN0IGU9dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg7bGV0IG49dC5wYXJlbnQ7Zm9yKDtudWxsIT09biYmOCZuLnR5cGUmJm4uaW5kZXghPT1lOyluPW4ucGFyZW50O3JldHVybiBlPT09KG51bGwhPT1uP24uaW5kZXg6LTEpfXJldHVybiB0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZX1tYXRjaFROb2RlKHQsZSl7Y29uc3Qgbj10aGlzLm1ldGFkYXRhLnByZWRpY2F0ZTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCBpPW5bb107dGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxlLHFoKGUsaSkpLHRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxrYShlLHQsaSwhMSwhMSkpfWVsc2Ugbj09PVhnPzQmZS50eXBlJiZ0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsLTEpOnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxrYShlLHQsbiwhMSwhMSkpfW1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsbil7aWYobnVsbCE9PW4pe2NvbnN0IG89dGhpcy5tZXRhZGF0YS5yZWFkO2lmKG51bGwhPT1vKWlmKG89PT1oZ3x8bz09PWVofHxvPT09WGcmJjQmZS50eXBlKXRoaXMuYWRkTWF0Y2goZS5pbmRleCwtMik7ZWxzZXtjb25zdCBuPWthKGUsdCxvLCExLCExKTtudWxsIT09biYmdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfWVsc2UgdGhpcy5hZGRNYXRjaChlLmluZGV4LG4pfX1hZGRNYXRjaCh0LGUpe251bGw9PT10aGlzLm1hdGNoZXM/dGhpcy5tYXRjaGVzPVt0LGVdOnRoaXMubWF0Y2hlcy5wdXNoKHQsZSl9fWZ1bmN0aW9uIHFoKHQsZSl7Y29uc3Qgbj10LmxvY2FsTmFtZXM7aWYobnVsbCE9PW4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKWlmKG5bdF09PT1lKXJldHVybiBuW3QrMV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gWmgodCxlLG4sbyl7cmV0dXJuLTE9PT1uPyhmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIDExJnQudHlwZT9nZyh0LGUpOjQmdC50eXBlPyRnKHQsZSk6bnVsbH0pKGUsdCk6LTI9PT1uPyhmdW5jdGlvbiBhKHQsZSxuKXtyZXR1cm4gbj09PWhnP2dnKGUsdCk6bj09PVhnPyRnKGUsdCk6bj09PWVoPyhuZ0Rldk1vZGUmJmlhKGUsMTUpLHNoKGUsdCkpOnZvaWQobmdEZXZNb2RlJiZibihgU3BlY2lhbCB0b2tlbiB0byByZWFkIHNob3VsZCBiZSBvbmUgb2YgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgb3IgVmlld0NvbnRhaW5lclJlZiBidXQgZ290ICR7R2Uobil9LmApKX0pKHQsZSxvKTpTYSh0LHRbMV0sbixlKX1mdW5jdGlvbiBYaCh0LGUsbixvKXtjb25zdCBpPWVbMTldLnF1ZXJpZXNbb107aWYobnVsbD09PWkubWF0Y2hlcyl7Y29uc3Qgbz10LmRhdGEsYT1uLm1hdGNoZXMscj1bXTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTIpe2NvbnN0IGk9YVt0XTtpPDA/ci5wdXNoKG51bGwpOihuZ0Rldk1vZGUmJl9uKG8saSksci5wdXNoKFpoKGUsb1tpXSxhW3QrMV0sbi5tZXRhZGF0YS5yZWFkKSkpfWkubWF0Y2hlcz1yfXJldHVybiBpLm1hdGNoZXN9ZnVuY3Rpb24gS2godCxlLG4sbyl7Y29uc3QgaT10LnF1ZXJpZXMuZ2V0QnlJbmRleChuKSxhPWkubWF0Y2hlcztpZihudWxsIT09YSl7Y29uc3Qgcj1YaCh0LGUsaSxuKTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrPTIpe2NvbnN0IG49YVt0XTtpZihuPjApby5wdXNoKHJbdC8yXSk7ZWxzZXtjb25zdCBpPWFbdCsxXSxyPWVbLW5dO25nRGV2TW9kZSYmRG8ocik7Zm9yKGxldCB0PWJvO3Q8ci5sZW5ndGg7dCsrKXtjb25zdCBlPXJbdF07ZVsxN109PT1lWzNdJiZLaChlWzFdLGUsaSxvKX1pZihudWxsIT09cls5XSl7Y29uc3QgdD1yWzldO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV07S2goblsxXSxuLGksbyl9fX19fXJldHVybiBvfWZ1bmN0aW9uIEpoKHQpe2NvbnN0IGU9ZmkoKSxuPWdpKCksbz1OaSgpO3ppKG8rMSk7Y29uc3QgaT1vYihuLG8pO2lmKHQuZGlydHkmJnNpKGUpPT09KDI9PSgyJmkubWV0YWRhdGEuZmxhZ3MpKSl7aWYobnVsbD09PWkubWF0Y2hlcyl0LnJlc2V0KFtdKTtlbHNle2NvbnN0IGE9aS5jcm9zc2VzTmdUZW1wbGF0ZT9LaChuLGUsbyxbXSk6WGgobixlLGksbyk7dC5yZXNldChhLGJnKSx0Lm5vdGlmeU9uQ2hhbmdlcygpfXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIFFoKHQsZSxuKXtuZ0Rldk1vZGUmJmFuKGUsIkV4cGVjdGluZyBmbGFncyIpO2NvbnN0IG89Z2koKTtvLmZpcnN0Q3JlYXRlUGFzcyYmKG5iKG8sbmV3IEdoKHQsZSxuKSwtMSksMj09KDImZSkmJihvLnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksZWIobyxmaSgpLGUpfWZ1bmN0aW9uICRoKHQsZSxuLG8pe25nRGV2TW9kZSYmYW4obiwiRXhwZWN0aW5nIGZsYWdzIik7Y29uc3QgaT1naSgpO2lmKGkuZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBhPWJpKCk7bmIoaSxuZXcgR2goZSxuLG8pLGEuaW5kZXgpLChmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj10LmNvbnRlbnRRdWVyaWVzfHwodC5jb250ZW50UXVlcmllcz1bXSk7ZSE9PShuLmxlbmd0aD9uW24ubGVuZ3RoLTFdOi0xKSYmbi5wdXNoKHQucXVlcmllcy5sZW5ndGgtMSxlKX0pKGksdCksMj09KDImbikmJihpLnN0YXRpY0NvbnRlbnRRdWVyaWVzPSEwKX1lYihpLGZpKCksbil9ZnVuY3Rpb24gdGIoKXtyZXR1cm4oZnVuY3Rpb24gdChlLG4pe3JldHVybiBuZ0Rldk1vZGUmJmhuKGVbMTldLCJMUXVlcmllcyBzaG91bGQgYmUgZGVmaW5lZCB3aGVuIHRyeWluZyB0byBsb2FkIGEgcXVlcnkiKSxuZ0Rldk1vZGUmJl9uKGVbMTldLnF1ZXJpZXMsbiksZVsxOV0ucXVlcmllc1tuXS5xdWVyeUxpc3R9KShmaSgpLE5pKCkpfWZ1bmN0aW9uIGViKHQsZSxuKXtjb25zdCBvPW5ldyBWaCg0PT0oNCZuKSk7cmQodCxlLG8sby5kZXN0cm95KSxudWxsPT09ZVsxOV0mJihlWzE5XT1uZXcgVWgpLGVbMTldLnF1ZXJpZXMucHVzaChuZXcgamgobykpfWZ1bmN0aW9uIG5iKHQsZSxuKXtudWxsPT09dC5xdWVyaWVzJiYodC5xdWVyaWVzPW5ldyBXaCksdC5xdWVyaWVzLnRyYWNrKG5ldyBZaChlLG4pKX1mdW5jdGlvbiBvYih0LGUpe3JldHVybiBuZ0Rldk1vZGUmJmhuKHQucXVlcmllcywiVFF1ZXJpZXMgbXVzdCBiZSBkZWZpbmVkIHRvIHJldHJpZXZlIGEgVFF1ZXJ5IiksdC5xdWVyaWVzLmdldEJ5SW5kZXgoZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGliKHQsZSl7cmV0dXJuICRnKHQsZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBhYj17Ism1ybVhdHRyaWJ1dGUiOmpwLCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUxIjpmdW5jdGlvbiB0KGUsbixvLGksYSxyKXtjb25zdCBzPWZpKCksbD1HcChzLG4sbyxpKTtpZihsIT09YWMpe2NvbnN0IHQ9WWkoKTtDZCh0LHMsZSxsLGEsciksbmdEZXZNb2RlJiZ6ZChnaSgpLmRhdGEsdCwiYXR0ci4iK2Usd2koKS0xLG4saSl9cmV0dXJuIHR9LCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGUyIjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCl7Y29uc3QgYz1maSgpLGQ9V3AoYyxuLG8saSxhLHIpO2lmKGQhPT1hYyl7Y29uc3QgdD1ZaSgpO0NkKHQsYyxlLGQscyxsKSxuZ0Rldk1vZGUmJnpkKGdpKCkuZGF0YSx0LCJhdHRyLiIrZSx3aSgpLTIsbixpLHIpfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMyI6ZnVuY3Rpb24gdChlLG4sbyxpLGEscixzLGwsYyxkKXtjb25zdCBwPWZpKCksbT1ZcChwLG4sbyxpLGEscixzLGwpO2lmKG0hPT1hYyl7Y29uc3QgdD1ZaSgpO0NkKHQscCxlLG0sYyxkKSxuZ0Rldk1vZGUmJnpkKGdpKCkuZGF0YSx0LCJhdHRyLiIrZSx3aSgpLTMsbixpLHIsbCl9cmV0dXJuIHR9LCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU0IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtjb25zdCB1PWZpKCksZj1xcCh1LG4sbyxpLGEscixzLGwsYyxkKTtpZihmIT09YWMpe2NvbnN0IHQ9WWkoKTtDZCh0LHUsZSxmLHAsbSksbmdEZXZNb2RlJiZ6ZChnaSgpLmRhdGEsdCwiYXR0ci4iK2Usd2koKS00LG4saSxyLGwsZCl9cmV0dXJuIHR9LCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU1IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZil7Y29uc3QgZz1maSgpLGg9WnAoZyxuLG8saSxhLHIscyxsLGMsZCxwLG0pO2lmKGghPT1hYyl7Y29uc3QgdD1ZaSgpO0NkKHQsZyxlLGgsdSxmKSxuZ0Rldk1vZGUmJnpkKGdpKCkuZGF0YSx0LCJhdHRyLiIrZSx3aSgpLTUsbixpLHIsbCxkLG0pfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNiI6ZnVuY3Rpb24gdChlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKXtjb25zdCBiPWZpKCkseT1YcChiLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpO2lmKHkhPT1hYyl7Y29uc3QgdD1ZaSgpO0NkKHQsYixlLHksZyxoKSxuZ0Rldk1vZGUmJnpkKGdpKCkuZGF0YSx0LCJhdHRyLiIrZSx3aSgpLTYsbixpLHIsbCxkLG0sZil9cmV0dXJuIHR9LCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU3IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5KXtjb25zdCBfPWZpKCksQz1LcChfLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKTtpZihDIT09YWMpe2NvbnN0IHQ9WWkoKTtDZCh0LF8sZSxDLGIseSksbmdEZXZNb2RlJiZ6ZChnaSgpLmRhdGEsdCwiYXR0ci4iK2Usd2koKS03LG4saSxyLGwsZCxtLGYsaCl9cmV0dXJuIHR9LCLJtcm1YXR0cmlidXRlSW50ZXJwb2xhdGU4IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYix5LF8sQyl7Y29uc3QgTT1maSgpLHY9SnAoTSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCxiLHkpO2lmKHYhPT1hYyl7Y29uc3QgdD1ZaSgpO0NkKHQsTSxlLHYsXyxDKSxuZ0Rldk1vZGUmJnpkKGdpKCkuZGF0YSx0LCJhdHRyLiIrZSx3aSgpLTgsbixpLHIsbCxkLG0sZixoLHkpfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlViI6ZnVuY3Rpb24gdChlLG4sbyxpKXtjb25zdCBhPWZpKCkscj1VcChhLG4pO2lmKHIhPT1hYyl7Y29uc3QgdD1ZaSgpO2lmKENkKHQsYSxlLHIsbyxpKSxuZ0Rldk1vZGUpe2NvbnN0IG89W25bMF1dO2ZvcihsZXQgdD0yO3Q8bi5sZW5ndGg7dCs9MilvLnB1c2goblt0XSk7emQoZ2koKS5kYXRhLHQsImF0dHIuIitlLHdpKCktby5sZW5ndGgrMSwuLi5vKX19cmV0dXJuIHR9LCLJtcm1ZGVmaW5lQ29tcG9uZW50Ijp0bywiybXJtWRlZmluZURpcmVjdGl2ZSI6bG8sIsm1ybVkZWZpbmVJbmplY3RhYmxlIjpNbiwiybXJtWRlZmluZUluamVjdG9yIjp2biwiybXJtWRlZmluZU5nTW9kdWxlIjphbywiybXJtWRlZmluZVBpcGUiOmNvLCLJtcm1ZGlyZWN0aXZlSW5qZWN0IjpTbSwiybXJtWdldEluaGVyaXRlZEZhY3RvcnkiOkFhLCLJtcm1aW5qZWN0Ijp2ciwiybXJtWluamVjdEF0dHJpYnV0ZSI6TmEsIsm1ybVpbnZhbGlkRmFjdG9yeSI6ZnVuY3Rpb24gcmIoKXtjb25zdCB0PW5nRGV2TW9kZT8iVGhpcyBjb25zdHJ1Y3RvciB3YXMgbm90IGNvbXBhdGlibGUgd2l0aCBEZXBlbmRlbmN5IEluamVjdGlvbi4iOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IodCl9LCLJtcm1aW52YWxpZEZhY3RvcnlEZXAiOnhyLCLJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IiOmliLCLJtcm1TmdPbkNoYW5nZXNGZWF0dXJlIjpCbywiybXJtVByb3ZpZGVyc0ZlYXR1cmUiOnBnLCLJtcm1Q29weURlZmluaXRpb25GZWF0dXJlIjpmdW5jdGlvbiBzYih0KXtsZXQgZSxuPXZwKHQudHlwZSk7ZT14byh0KT9uLsm1Y21wOm4uybVkaXI7Y29uc3Qgbz10O2Zvcihjb25zdCB0IG9mIFNwKW9bdF09ZVt0XTtpZih4byhlKSlmb3IoY29uc3QgdCBvZiBEcClvW3RdPWVbdF19LCLJtcm1SW5oZXJpdERlZmluaXRpb25GZWF0dXJlIjp4cCwiybXJtW5leHRDb250ZXh0IjpZbSwiybXJtW5hbWVzcGFjZUhUTUwiOlppLCLJtcm1bmFtZXNwYWNlTWF0aE1MIjpmdW5jdGlvbiBsYigpe21pLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPVhvfSwiybXJtW5hbWVzcGFjZVNWRyI6cWksIsm1ybVlbmFibGVCaW5kaW5ncyI6ZnVuY3Rpb24gY2IoKXttaS5iaW5kaW5nc0VuYWJsZWQ9ITB9LCLJtcm1ZGlzYWJsZUJpbmRpbmdzIjpmdW5jdGlvbiBkYigpe21pLmJpbmRpbmdzRW5hYmxlZD0hMX0sIsm1ybVlbGVtZW50U3RhcnQiOlJtLCLJtcm1ZWxlbWVudEVuZCI6QW0sIsm1ybVlbGVtZW50IjpUbSwiybXJtWVsZW1lbnRDb250YWluZXJTdGFydCI6Tm0sIsm1ybVlbGVtZW50Q29udGFpbmVyRW5kIjp6bSwiybXJtWVsZW1lbnRDb250YWluZXIiOkltLCLJtcm1cHVyZUZ1bmN0aW9uMCI6Q2gsIsm1ybVwdXJlRnVuY3Rpb24xIjpNaCwiybXJtXB1cmVGdW5jdGlvbjIiOnZoLCLJtcm1cHVyZUZ1bmN0aW9uMyI6eGgsIsm1ybVwdXJlRnVuY3Rpb240IjpPaCwiybXJtXB1cmVGdW5jdGlvbjUiOlBoLCLJtcm1cHVyZUZ1bmN0aW9uNiI6ZnVuY3Rpb24gcGIodCxlLG4sbyxpLGEscixzLGwpe2NvbnN0IGM9UGkoKSt0LGQ9ZmkoKSxwPVZwKGQsYyxuLG8saSxhKTtyZXR1cm4gTHAoZCxjKzQscixzKXx8cD9JcChkLGMrNixsP2UuY2FsbChsLG4sbyxpLGEscixzKTplKG4sbyxpLGEscixzKSk6SHAoZCxjKzYpfSwiybXJtXB1cmVGdW5jdGlvbjciOmZ1bmN0aW9uIG1iKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9UGkoKSt0LHA9ZmkoKTtsZXQgbT1WcChwLGQsbixvLGksYSk7cmV0dXJuIEJwKHAsZCs0LHIscyxsKXx8bT9JcChwLGQrNyxjP2UuY2FsbChjLG4sbyxpLGEscixzLGwpOmUobixvLGksYSxyLHMsbCkpOkhwKHAsZCs3KX0sIsm1ybVwdXJlRnVuY3Rpb244IjpmdW5jdGlvbiB1Yih0LGUsbixvLGksYSxyLHMsbCxjLGQpe2NvbnN0IHA9UGkoKSt0LG09ZmkoKSx1PVZwKG0scCxuLG8saSxhKTtyZXR1cm4gVnAobSxwKzQscixzLGwsYyl8fHU/SXAobSxwKzgsZD9lLmNhbGwoZCxuLG8saSxhLHIscyxsLGMpOmUobixvLGksYSxyLHMsbCxjKSk6SHAobSxwKzgpfSwiybXJtXB1cmVGdW5jdGlvblYiOmZ1bmN0aW9uIGZiKHQsZSxuLG8pe3JldHVybiBSaChmaSgpLFBpKCksdCxlLG4sbyl9LCLJtcm1Z2V0Q3VycmVudFZpZXciOkhtLCLJtcm1cmVzdG9yZVZpZXciOmhpLCLJtcm1bGlzdGVuZXIiOlZtLCLJtcm1cHJvamVjdGlvbiI6WG0sIsm1ybVzeW50aGV0aWNIb3N0UHJvcGVydHkiOk51LCLJtcm1c3ludGhldGljSG9zdExpc3RlbmVyIjpqbSwiybXJtXBpcGVCaW5kMSI6VGgsIsm1ybVwaXBlQmluZDIiOk5oLCLJtcm1cGlwZUJpbmQzIjp6aCwiybXJtXBpcGVCaW5kNCI6ZnVuY3Rpb24gZ2IodCxlLG4sbyxpLGEpe2NvbnN0IHI9dCtnbyxzPWZpKCksbD1haShzLHIpO3JldHVybiBIaChzLEloKHMscik/RWgocyxQaSgpLGUsbC50cmFuc2Zvcm0sbixvLGksYSxsKTpsLnRyYW5zZm9ybShuLG8saSxhKSl9LCLJtcm1cGlwZUJpbmRWIjpmdW5jdGlvbiBoYih0LGUsbil7Y29uc3Qgbz10K2dvLGk9ZmkoKSxhPWFpKGksbyk7cmV0dXJuIEhoKGksSWgoaSxvKT9SaChpLFBpKCksZSxhLnRyYW5zZm9ybSxuLGEpOmEudHJhbnNmb3JtLmFwcGx5KGEsbikpfSwiybXJtXByb2plY3Rpb25EZWYiOlptLCLJtcm1aG9zdFByb3BlcnR5IjpUdSwiybXJtXByb3BlcnR5IjpEbSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUiOkttLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTEiOkptLCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTIiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyl7Y29uc3QgbD1maSgpLGM9V3AobCxuLG8saSxhLHIpO2lmKGMhPT1hYyl7Y29uc3QgdD1naSgpLG89WWkoKTtsZCh0LG8sbCxlLGMsbFsxMV0scywhMSksbmdEZXZNb2RlJiZ6ZCh0LmRhdGEsbyxlLHdpKCktMixuLGkscil9cmV0dXJuIHR9LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTMiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9ZmkoKSxwPVlwKGQsbixvLGksYSxyLHMsbCk7aWYocCE9PWFjKXtjb25zdCB0PWdpKCksbz1ZaSgpO2xkKHQsbyxkLGUscCxkWzExXSxjLCExKSxuZ0Rldk1vZGUmJnpkKHQuZGF0YSxvLGUsd2koKS0zLG4saSxyLGwpfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGU0IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCl7Y29uc3QgbT1maSgpLHU9cXAobSxuLG8saSxhLHIscyxsLGMsZCk7aWYodSE9PWFjKXtjb25zdCB0PWdpKCksbz1ZaSgpO2xkKHQsbyxtLGUsdSxtWzExXSxwLCExKSxuZ0Rldk1vZGUmJnpkKHQuZGF0YSxvLGUsd2koKS00LG4saSxyLGwsZCl9cmV0dXJuIHR9LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTUiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSl7Y29uc3QgZj1maSgpLGc9WnAoZixuLG8saSxhLHIscyxsLGMsZCxwLG0pO2lmKGchPT1hYyl7Y29uc3QgdD1naSgpLG89WWkoKTtsZCh0LG8sZixlLGcsZlsxMV0sdSwhMSksbmdEZXZNb2RlJiZ6ZCh0LmRhdGEsbyxlLHdpKCktNSxuLGkscixsLGQsbSl9cmV0dXJuIHR9LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcpe2NvbnN0IGg9ZmkoKSxiPVhwKGgsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZik7aWYoYiE9PWFjKXtjb25zdCB0PWdpKCksbz1ZaSgpO2xkKHQsbyxoLGUsYixoWzExXSxnLCExKSxuZ0Rldk1vZGUmJnpkKHQuZGF0YSxvLGUsd2koKS02LG4saSxyLGwsZCxtLGYpfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGU3IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYil7Y29uc3QgeT1maSgpLF89S3AoeSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCk7aWYoXyE9PWFjKXtjb25zdCB0PWdpKCksbz1ZaSgpO2xkKHQsbyx5LGUsXyx5WzExXSxiLCExKSxuZ0Rldk1vZGUmJnpkKHQuZGF0YSxvLGUsd2koKS03LG4saSxyLGwsZCxtLGYsaCl9cmV0dXJuIHR9LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZTgiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCxiLHksXyl7Y29uc3QgQz1maSgpLE09SnAoQyxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCxiLHkpO2lmKE0hPT1hYyl7Y29uc3QgdD1naSgpLG89WWkoKTtsZCh0LG8sQyxlLE0sQ1sxMV0sXywhMSksbmdEZXZNb2RlJiZ6ZCh0LmRhdGEsbyxlLHdpKCktOCxuLGkscixsLGQsbSxmLGgseSl9cmV0dXJuIHR9LCLJtcm1cHJvcGVydHlJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQoZSxuLG8pe2NvbnN0IGk9ZmkoKSxhPVVwKGksbik7aWYoYSE9PWFjKXtjb25zdCB0PWdpKCkscj1ZaSgpO2lmKGxkKHQscixpLGUsYSxpWzExXSxvLCExKSxuZ0Rldk1vZGUpe2NvbnN0IG89W25bMF1dO2ZvcihsZXQgdD0yO3Q8bi5sZW5ndGg7dCs9MilvLnB1c2goblt0XSk7emQodC5kYXRhLHIsZSx3aSgpLW8ubGVuZ3RoKzEsLi4ubyl9fXJldHVybiB0fSwiybXJtXBpcGUiOkFoLCLJtcm1cXVlcnlSZWZyZXNoIjpKaCwiybXJtXZpZXdRdWVyeSI6UWgsIsm1ybVsb2FkUXVlcnkiOnRiLCLJtcm1Y29udGVudFF1ZXJ5IjokaCwiybXJtXJlZmVyZW5jZSI6JHAsIsm1ybVjbGFzc01hcCI6ZnUsIsm1ybVjbGFzc01hcEludGVycG9sYXRlMSI6QXUsIsm1ybVjbGFzc01hcEludGVycG9sYXRlMiI6ZnVuY3Rpb24gYmIodCxlLG4sbyxpKXtidShhcixndSxXcChmaSgpLHQsZSxuLG8saSksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzIjpmdW5jdGlvbiB5Yih0LGUsbixvLGksYSxyKXtidShhcixndSxZcChmaSgpLHQsZSxuLG8saSxhLHIpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNCI6ZnVuY3Rpb24gX2IodCxlLG4sbyxpLGEscixzLGwpe2J1KGFyLGd1LHFwKGZpKCksdCxlLG4sbyxpLGEscixzLGwpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNSI6ZnVuY3Rpb24gQ2IodCxlLG4sbyxpLGEscixzLGwsYyxkKXtidShhcixndSxacChmaSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2IjpmdW5jdGlvbiBNYih0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtidShhcixndSxYcChmaSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0pLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNyI6ZnVuY3Rpb24gdmIodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpe2J1KGFyLGd1LEtwKGZpKCksdCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlOCI6ZnVuY3Rpb24geGIodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKXtidShhcixndSxKcChmaSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWIjpmdW5jdGlvbiBPYih0KXtidShhcixndSxVcChmaSgpLHQpLCEwKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovLCLJtcm1c3R5bGVNYXAiOm11LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTEiOmZ1bmN0aW9uIFBiKHQsZSxuKXttdShHcChmaSgpLHQsZSxuKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTIiOmZ1bmN0aW9uIHdiKHQsZSxuLG8saSl7bXUoV3AoZmkoKSx0LGUsbixvLGkpKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlMyI6ZnVuY3Rpb24ga2IodCxlLG4sbyxpLGEscil7bXUoWXAoZmkoKSx0LGUsbixvLGksYSxyKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTQiOmZ1bmN0aW9uIFNiKHQsZSxuLG8saSxhLHIscyxsKXttdShxcChmaSgpLHQsZSxuLG8saSxhLHIscyxsKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTUiOmZ1bmN0aW9uIERiKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7bXUoWnAoZmkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQpKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlNiI6ZnVuY3Rpb24gRWIodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSl7bXUoWHAoZmkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTciOmZ1bmN0aW9uIFJiKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmKXttdShLcChmaSgpLHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTgiOmZ1bmN0aW9uIEFiKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCl7bXUoSnAoZmkoKSx0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgpKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlViI6ZnVuY3Rpb24gVGIodCl7bXUoVXAoZmkoKSx0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLywiybXJtXN0eWxlUHJvcCI6ZHUsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTEiOmZ1bmN0aW9uIHQoZSxuLG8saSxhKXtyZXR1cm4gaHUoZSxHcChmaSgpLG4sbyxpKSxhLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlMiI6ZnVuY3Rpb24gdChlLG4sbyxpLGEscixzKXtyZXR1cm4gaHUoZSxXcChmaSgpLG4sbyxpLGEscikscywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTMiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMpe3JldHVybiBodShlLFlwKGZpKCksbixvLGksYSxyLHMsbCksYywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTQiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwKXtyZXR1cm4gaHUoZSxxcChmaSgpLG4sbyxpLGEscixzLGwsYyxkKSxwLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNSI6ZnVuY3Rpb24gdChlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KXtyZXR1cm4gaHUoZSxacChmaSgpLG4sbyxpLGEscixzLGwsYyxkLHAsbSksdSwhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcpe3JldHVybiBodShlLFhwKGZpKCksbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZiksZywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTciOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSxmLGcsaCxiKXtyZXR1cm4gaHUoZSxLcChmaSgpLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoKSxiLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlOCI6ZnVuY3Rpb24gdChlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSxfKXtyZXR1cm4gaHUoZSxKcChmaSgpLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSksXywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQoZSxuLG8pe3JldHVybiBodShlLFVwKGZpKCksbiksbywhMSksdH0sIsm1ybVjbGFzc1Byb3AiOnB1LCLJtcm1YWR2YW5jZSI6cmMsIsm1ybV0ZW1wbGF0ZSI6UXAsIsm1ybV0ZXh0IjprdSwiybXJtXRleHRJbnRlcnBvbGF0ZSI6U3UsIsm1ybV0ZXh0SW50ZXJwb2xhdGUxIjpEdSwiybXJtXRleHRJbnRlcnBvbGF0ZTIiOkV1LCLJtcm1dGV4dEludGVycG9sYXRlMyI6UnUsIsm1ybV0ZXh0SW50ZXJwb2xhdGU0IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjKXtjb25zdCBkPWZpKCkscD1xcChkLGUsbixvLGksYSxyLHMsbCxjKTtyZXR1cm4gcCE9PWFjJiZqZChkLEdpKCkscCksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU1IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCl7Y29uc3QgbT1maSgpLHU9WnAobSxlLG4sbyxpLGEscixzLGwsYyxkLHApO3JldHVybiB1IT09YWMmJmpkKG0sR2koKSx1KSx0fSwiybXJtXRleHRJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQoZSxuLG8saSxhLHIscyxsLGMsZCxwLG0sdSl7Y29uc3QgZj1maSgpLGc9WHAoZixlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KTtyZXR1cm4gZyE9PWFjJiZqZChmLEdpKCksZyksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU3IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnKXtjb25zdCBoPWZpKCksYj1LcChoLGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnKTtyZXR1cm4gYiE9PWFjJiZqZChoLEdpKCksYiksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU4IjpmdW5jdGlvbiB0KGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnLGgsYil7Y29uc3QgeT1maSgpLF89SnAoeSxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIpO3JldHVybiBfIT09YWMmJmpkKHksR2koKSxfKSx0fSwiybXJtXRleHRJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQoZSl7Y29uc3Qgbj1maSgpLG89VXAobixlKTtyZXR1cm4gbyE9PWFjJiZqZChuLEdpKCksbyksdH0sIsm1ybVpMThuIjp0ZywiybXJtWkxOG5BdHRyaWJ1dGVzIjpmdW5jdGlvbiBOYih0LGUpe2NvbnN0IG49Z2koKTtuZ0Rldk1vZGUmJmhuKG4sInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3Qgbz1jaShuLmNvbnN0cyxlKTshKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89YmkoKS5pbmRleCxpPVtdO2lmKG5nRGV2TW9kZSYmYmMoaSxfZiksdC5maXJzdENyZWF0ZVBhc3MmJm51bGw9PT10LmRhdGFbZV0pe2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCs9Mil7Y29uc3QgZT1uW3RdLGE9blt0KzFdO2lmKCIiIT09YSl7aWYoT2YudGVzdChhKSl0aHJvdyBuZXcgRXJyb3IoYElDVSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhdHRyaWJ1dGVzLiBNZXNzYWdlOiAiJHthfSIuYCk7QWYoaSxhLG8sZSxUZihpKSxudWxsKX19dC5kYXRhW2VdPWl9fSkobix0K2dvLG8pfSwiybXJtWkxOG5FeHAiOmVnLCLJtcm1aTE4blN0YXJ0IjpRZiwiybXJtWkxOG5FbmQiOiRmLCLJtcm1aTE4bkFwcGx5IjpuZywiybXJtWkxOG5Qb3N0cHJvY2VzcyI6b2csIsm1ybVyZXNvbHZlV2luZG93IjpvbCwiybXJtXJlc29sdmVEb2N1bWVudCI6aWwsIsm1ybVyZXNvbHZlQm9keSI6ZnVuY3Rpb24gemIodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudC5ib2R5fSwiybXJtXNldENvbXBvbmVudFNjb3BlIjplbywiybXJtXNldE5nTW9kdWxlU2NvcGUiOnJvLCLJtcm1c2FuaXRpemVIdG1sIjoKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEliKHQpe2NvbnN0IGU9enMoKTtyZXR1cm4gZT9XcihlLnNhbml0aXplKEFzLkhUTUwsdCl8fCIiKTplcyh0LCJIVE1MIik/V3IodHModCkpOkVzKEpvKCksJGUodCkpfSwiybXJtXNhbml0aXplU3R5bGUiOmZ1bmN0aW9uIEhiKHQpe2NvbnN0IGU9enMoKTtyZXR1cm4gZT9lLnNhbml0aXplKEFzLlNUWUxFLHQpfHwiIjplcyh0LCJTdHlsZSIpP3RzKHQpOiRlKHQpfSwiybXJtXNhbml0aXplUmVzb3VyY2VVcmwiOk5zLCLJtcm1c2FuaXRpemVTY3JpcHQiOmZ1bmN0aW9uIEZiKHQpe2NvbnN0IGU9enMoKTtpZihlKXJldHVybiBZcihlLnNhbml0aXplKEFzLlNDUklQVCx0KXx8IiIpO2lmKGVzKHQsIlNjcmlwdCIpKXJldHVybiBZcih0cyh0KSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iil9LCLJtcm1c2FuaXRpemVVcmwiOlRzLCLJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsIjpmdW5jdGlvbiBMYih0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4ic3JjIj09PWUmJigiZW1iZWQiPT09dHx8ImZyYW1lIj09PXR8fCJpZnJhbWUiPT09dHx8Im1lZGlhIj09PXR8fCJzY3JpcHQiPT09dCl8fCJocmVmIj09PWUmJigiYmFzZSI9PT10fHwibGluayI9PT10KT9OczpUc30pKGUsbikodCl9LCLJtcm1dHJ1c3RDb25zdGFudEh0bWwiOmZ1bmN0aW9uIEJiKHQpe2lmKG5nRGV2TW9kZSYmKCFBcnJheS5pc0FycmF5KHQpfHwhQXJyYXkuaXNBcnJheSh0LnJhdyl8fDEhPT10Lmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGludGVycG9sYXRpb24gaW4gdHJ1c3RlZCBIVE1MIGNvbnN0YW50OiAke3Quam9pbigiPyIpfWApO3JldHVybiBVcih0WzBdKX0sIsm1ybV0cnVzdENvbnN0YW50UmVzb3VyY2VVcmwiOmZ1bmN0aW9uIFZiKHQpe2lmKG5nRGV2TW9kZSYmKCFBcnJheS5pc0FycmF5KHQpfHwhQXJyYXkuaXNBcnJheSh0LnJhdyl8fDEhPT10Lmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGludGVycG9sYXRpb24gaW4gdHJ1c3RlZCBVUkwgY29uc3RhbnQ6ICR7dC5qb2luKCI/Iil9YCk7cmV0dXJuKGZ1bmN0aW9uIGUodCl7dmFyIGU7cmV0dXJuKG51bGw9PT0oZT1qcigpKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jcmVhdGVTY3JpcHRVUkwodCkpfHx0fSkodFswXSl9LGZvcndhcmRSZWY6cWUscmVzb2x2ZUZvcndhcmRSZWY6WmV9O2xldCBqYj1udWxsOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVWI9W107bGV0IEdiPSExO2Z1bmN0aW9uIFdiKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QuZXZlcnkoV2IpOiEhWmUodCl9ZnVuY3Rpb24gWWIodCxlLG4pe2lmKEtiLmdldCh0KSlyZXR1cm47bGV0IG87aWYoS2Iuc2V0KHQsITApLHQ9WmUodCksbil7aWYobz1mbyh0KSwhbyl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgJyR7dC5uYW1lfScgaW1wb3J0ZWQgYnkgdGhlIG1vZHVsZSAnJHtuLm5hbWV9Jy4gUGxlYXNlIGFkZCBhbiBATmdNb2R1bGUgYW5ub3RhdGlvbi5gKX1lbHNlIG89Zm8odCwhMCk7Y29uc3QgaT1bXSxhPXJsKG8uZGVjbGFyYXRpb25zKSxyPXJsKG8uaW1wb3J0cyk7dHIocikubWFwKHFiKS5mb3JFYWNoKChlPT57aChlLHQpLFliKGUsITEsdCl9KSk7Y29uc3Qgcz1ybChvLmV4cG9ydHMpO2EuZm9yRWFjaCgoZnVuY3Rpb24gbChlKXtwbyhlPVplKGUpKXx8bW8oZSl8fHVvKGUpfHxpLnB1c2goYFVuZXhwZWN0ZWQgdmFsdWUgJyR7dG4oZSl9JyBkZWNsYXJlZCBieSB0aGUgbW9kdWxlICcke3RuKHQpfScuIFBsZWFzZSBhZGQgYSBAUGlwZS9ARGlyZWN0aXZlL0BDb21wb25lbnQgYW5ub3RhdGlvbi5gKX0pKSxhLmZvckVhY2goKGZ1bmN0aW9uIGModCl7Y29uc3QgZT1tbyh0PVplKHQpKTshcG8odCkmJmUmJjA9PWUuc2VsZWN0b3JzLmxlbmd0aCYmaS5wdXNoKGBEaXJlY3RpdmUgJHt0bih0KX0gaGFzIG5vIHNlbGVjdG9yLCBwbGVhc2UgYWRkIGl0IWApfSkpO2NvbnN0IGQ9Wy4uLmEubWFwKFplKSwuLi50cihyLm1hcChKYikpLm1hcChaZSldO3MuZm9yRWFjaCgoZnVuY3Rpb24gcChlKXtjb25zdCBuPShwbyhlPVplKGUpKT8iY29tcG9uZW50IjptbyhlKSYmImRpcmVjdGl2ZSIpfHx1byhlKSYmInBpcGUiO24mJi0xPT09ZC5sYXN0SW5kZXhPZihlKSYmaS5wdXNoKGBDYW4ndCBleHBvcnQgJHtufSAke3RuKGUpfSBmcm9tICR7dG4odCl9IGFzIGl0IHdhcyBuZWl0aGVyIGRlY2xhcmVkIG5vciBpbXBvcnRlZCFgKX0pKSxhLmZvckVhY2goKG49PihmdW5jdGlvbiBvKGUsbil7ZT1aZShlKTtjb25zdCBvPVhiLmdldChlKTtpZihvJiZvIT09dCl7aWYoIW4pe2NvbnN0IG49W28sdF0ubWFwKHRuKS5zb3J0KCk7aS5wdXNoKGBUeXBlICR7dG4oZSl9IGlzIHBhcnQgb2YgdGhlIGRlY2xhcmF0aW9ucyBvZiAyIG1vZHVsZXM6ICR7blswXX0gYW5kICR7blsxXX0hIFBsZWFzZSBjb25zaWRlciBtb3ZpbmcgJHt0bihlKX0gdG8gYSBoaWdoZXIgbW9kdWxlIHRoYXQgaW1wb3J0cyAke25bMF19IGFuZCAke25bMV19LiBZb3UgY2FuIGFsc28gY3JlYXRlIGEgbmV3IE5nTW9kdWxlIHRoYXQgZXhwb3J0cyBhbmQgaW5jbHVkZXMgJHt0bihlKX0gdGhlbiBpbXBvcnQgdGhhdCBOZ01vZHVsZSBpbiAke25bMF19IGFuZCAke25bMV19LmApfX1lbHNlIFhiLnNldChlLHQpfSkobixlKSkpLGEuZm9yRWFjaCgoZnVuY3Rpb24gbSh0KXtpZihwbyh0PVplKHQpKSl7Y29uc3QgZT1aYih0LCJDb21wb25lbnQiKTtlJiZlLmVudHJ5Q29tcG9uZW50cyYmZXIoZS5lbnRyeUNvbXBvbmVudHMsZyl9fSkpO2NvbnN0IHU9WmIodCwiTmdNb2R1bGUiKTtpZih1JiYodS5pbXBvcnRzJiZ0cih1LmltcG9ydHMpLm1hcChxYikuZm9yRWFjaCgoZT0+e2goZSx0KSxZYihlLCExLHQpfSkpLHUuYm9vdHN0cmFwJiZlcih1LmJvb3RzdHJhcCwoZnVuY3Rpb24gZih0KXtwbyh0PVplKHQpKXx8aS5wdXNoKGAke3RuKHQpfSBjYW5ub3QgYmUgdXNlZCBhcyBhbiBlbnRyeSBjb21wb25lbnQuYCl9KSksdS5ib290c3RyYXAmJmVyKHUuYm9vdHN0cmFwLGcpLHUuZW50cnlDb21wb25lbnRzJiZlcih1LmVudHJ5Q29tcG9uZW50cyxnKSksaS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGkuam9pbigiXG4iKSk7ZnVuY3Rpb24gZyh0KXt0PVplKHQpLFhiLmdldCh0KXx8aS5wdXNoKGBDb21wb25lbnQgJHt0bih0KX0gaXMgbm90IHBhcnQgb2YgYW55IE5nTW9kdWxlIG9yIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIGltcG9ydGVkIGludG8geW91ciBtb2R1bGUuYCl9ZnVuY3Rpb24gaCh0LGUpe2lmKHBvKHQ9WmUodCkpfHxtbyh0KSl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGlyZWN0aXZlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCk7aWYodW8odCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHBpcGUgJyR7dC5uYW1lfScgaW1wb3J0ZWQgYnkgdGhlIG1vZHVsZSAnJHtlLm5hbWV9Jy4gUGxlYXNlIGFkZCBhbiBATmdNb2R1bGUgYW5ub3RhdGlvbi5gKX19ZnVuY3Rpb24gcWIodCl7cmV0dXJuKHQ9WmUodCkpLm5nTW9kdWxlfHx0fWZ1bmN0aW9uIFpiKHQsZSl7bGV0IG49bnVsbDtyZXR1cm4gbyh0Ll9fYW5ub3RhdGlvbnNfXyksbyh0LmRlY29yYXRvcnMpLG47ZnVuY3Rpb24gbyh0KXt0JiZ0LmZvckVhY2goaSl9ZnVuY3Rpb24gaSh0KXtufHwoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLm5nTWV0YWRhdGFOYW1lPT1lP249dDp0LnR5cGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZih0LnR5cGUpLm5nTWV0YWRhdGFOYW1lPT1lJiYobj10LmFyZ3NbMF0pKX19bGV0IFhiPW5ldyBXZWFrTWFwLEtiPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEpiKHQpe3JldHVyblsuLi50cihybChmbyh0PVplKHQpLCEwKS5leHBvcnRzKS5tYXAoKHQ9PmZvKHQpPyhZYih0LCExKSxKYih0KSk6dCkpKV19ZnVuY3Rpb24gUWIodCxlKXtjb25zdCBuPXRyKGUuZGVjbGFyYXRpb25zfHxXbiksbz10eSh0KTtuLmZvckVhY2goKGU9PntlLmhhc093blByb3BlcnR5KFluKT8kYihwbyhlKSxvKTplLmhhc093blByb3BlcnR5KHFuKXx8ZS5oYXNPd25Qcm9wZXJ0eShabil8fChlLm5nU2VsZWN0b3JTY29wZT10KX0pKX1mdW5jdGlvbiAkYih0LGUpe3QuZGlyZWN0aXZlRGVmcz0oKT0+QXJyYXkuZnJvbShlLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMpLm1hcCgodD0+dC5oYXNPd25Qcm9wZXJ0eShZbik/cG8odCk6bW8odCkpKS5maWx0ZXIoKHQ9PiEhdCkpLHQucGlwZURlZnM9KCk9PkFycmF5LmZyb20oZS5jb21waWxhdGlvbi5waXBlcykubWFwKCh0PT51byh0KSkpLHQuc2NoZW1hcz1lLnNjaGVtYXMsdC50Vmlldz1udWxsfWZ1bmN0aW9uIHR5KHQpe2lmKCFueSh0KSl0aHJvdyBuZXcgRXJyb3IoYCR7dC5uYW1lfSBkb2VzIG5vdCBoYXZlIGEgbW9kdWxlIGRlZiAoybVtb2QgcHJvcGVydHkpYCk7Y29uc3QgZT1mbyh0KTtpZihudWxsIT09ZS50cmFuc2l0aXZlQ29tcGlsZVNjb3BlcylyZXR1cm4gZS50cmFuc2l0aXZlQ29tcGlsZVNjb3Blcztjb25zdCBuPXtzY2hlbWFzOmUuc2NoZW1hc3x8bnVsbCxjb21waWxhdGlvbjp7ZGlyZWN0aXZlczpuZXcgU2V0LHBpcGVzOm5ldyBTZXR9LGV4cG9ydGVkOntkaXJlY3RpdmVzOm5ldyBTZXQscGlwZXM6bmV3IFNldH19O3JldHVybiBybChlLmltcG9ydHMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQ7aWYoIW55KGUpKXRocm93IG5ldyBFcnJvcihgSW1wb3J0aW5nICR7ZS5uYW1lfSB3aGljaCBkb2VzIG5vdCBoYXZlIGEgybVtb2QgcHJvcGVydHlgKTtjb25zdCBvPXR5KGUpO28uZXhwb3J0ZWQuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT5uLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHQpKSksby5leHBvcnRlZC5waXBlcy5mb3JFYWNoKCh0PT5uLmNvbXBpbGF0aW9uLnBpcGVzLmFkZCh0KSkpfSkpLHJsKGUuZGVjbGFyYXRpb25zKS5mb3JFYWNoKCh0PT57dW8odCk/bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCk6bi5jb21waWxhdGlvbi5kaXJlY3RpdmVzLmFkZCh0KX0pKSxybChlLmV4cG9ydHMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQ7aWYobnkoZSkpe2NvbnN0IHQ9dHkoZSk7dC5leHBvcnRlZC5kaXJlY3RpdmVzLmZvckVhY2goKHQ9PntuLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHQpLG4uZXhwb3J0ZWQuZGlyZWN0aXZlcy5hZGQodCl9KSksdC5leHBvcnRlZC5waXBlcy5mb3JFYWNoKCh0PT57bi5jb21waWxhdGlvbi5waXBlcy5hZGQodCksbi5leHBvcnRlZC5waXBlcy5hZGQodCl9KSl9ZWxzZSB1byhlKT9uLmV4cG9ydGVkLnBpcGVzLmFkZChlKTpuLmV4cG9ydGVkLmRpcmVjdGl2ZXMuYWRkKGUpfSkpLGUudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM9bixufWZ1bmN0aW9uIGV5KHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiB2b2lkIDAhPT10Lm5nTW9kdWxlfSkodCk/dC5uZ01vZHVsZTp0fWZ1bmN0aW9uIG55KHQpe3JldHVybiEhZm8odCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBveT0wO2Z1bmN0aW9uIGl5KHQsZSl7bGV0IG49bnVsbDtyeSh0LGV8fHt9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxxbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89YXkodCxlfHx7fSksaT1KYSh7dXNhZ2U6MCxraW5kOiJkaXJlY3RpdmUiLHR5cGU6dH0pO249aS5jb21waWxlRGlyZWN0aXZlKGFiLG8uc291cmNlTWFwVXJsLG8ubWV0YWRhdGEpfXJldHVybiBufSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX1mdW5jdGlvbiBheSh0LGUpe2NvbnN0IG49dCYmdC5uYW1lLG89YG5nOi8vLyR7bn0vybVkaXIuanNgLGk9SmEoe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOnR9KSxhPWx5KHQsZSk7cmV0dXJuIGEudHlwZVNvdXJjZVNwYW49aS5jcmVhdGVQYXJzZVNvdXJjZVNwYW4oIkRpcmVjdGl2ZSIsbixvKSxhLnVzZXNJbmhlcml0YW5jZSYmY3kodCkse21ldGFkYXRhOmEsc291cmNlTWFwVXJsOm99fWZ1bmN0aW9uIHJ5KHQsZSl7bGV0IG49bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxKbix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89YXkodCxlKSxpPUphKHt1c2FnZTowLGtpbmQ6ImRpcmVjdGl2ZSIsdHlwZTp0fSk7bj1pLmNvbXBpbGVGYWN0b3J5KGFiLGBuZzovLy8ke3QubmFtZX0vybVmYWMuanNgLHtuYW1lOm8ubWV0YWRhdGEubmFtZSx0eXBlOm8ubWV0YWRhdGEudHlwZSx0eXBlQXJndW1lbnRDb3VudDowLGRlcHM6TnIodCksdGFyZ2V0OmkuRmFjdG9yeVRhcmdldC5EaXJlY3RpdmV9KX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24gc3kodCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSk9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIGx5KHQsZSl7Y29uc3Qgbj1UcigpLG89bi5vd25Qcm9wTWV0YWRhdGEodCk7cmV0dXJue25hbWU6dC5uYW1lLHR5cGU6dCxzZWxlY3Rvcjp2b2lkIDAhPT1lLnNlbGVjdG9yP2Uuc2VsZWN0b3I6bnVsbCxob3N0OmUuaG9zdHx8R24scHJvcE1ldGFkYXRhOm8saW5wdXRzOmUuaW5wdXRzfHxXbixvdXRwdXRzOmUub3V0cHV0c3x8V24scXVlcmllczpteSh0LG8sdXkpLGxpZmVjeWNsZTp7dXNlc09uQ2hhbmdlczpuLmhhc0xpZmVjeWNsZUhvb2sodCwibmdPbkNoYW5nZXMiKX0sdHlwZVNvdXJjZVNwYW46bnVsbCx1c2VzSW5oZXJpdGFuY2U6IXN5KHQpLGV4cG9ydEFzOihpPWUuZXhwb3J0QXMsdm9pZCAwPT09aT9udWxsOmh5KGkpKSxwcm92aWRlcnM6ZS5wcm92aWRlcnN8fG51bGwsdmlld1F1ZXJpZXM6bXkodCxvLGZ5KX07dmFyIGl9ZnVuY3Rpb24gY3kodCl7Y29uc3QgZT1PYmplY3QucHJvdG90eXBlO2xldCBuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtuJiZuIT09ZTspbW8obil8fHBvKG4pfHwheXkobil8fGl5KG4sbnVsbCksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9ZnVuY3Rpb24gZHkodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P2h5KHQpOlplKHQpfWZ1bmN0aW9uIHB5KHQsZSl7cmV0dXJue3Byb3BlcnR5TmFtZTp0LHByZWRpY2F0ZTpkeShlLnNlbGVjdG9yKSxkZXNjZW5kYW50czplLmRlc2NlbmRhbnRzLGZpcnN0OmUuZmlyc3QscmVhZDplLnJlYWQ/ZS5yZWFkOm51bGwsc3RhdGljOiEhZS5zdGF0aWMsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6ISFlLmVtaXREaXN0aW5jdENoYW5nZXNPbmx5fX1mdW5jdGlvbiBteSh0LGUsbil7Y29uc3Qgbz1bXTtmb3IoY29uc3QgaSBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkoaSkpe2NvbnN0IGE9ZVtpXTthLmZvckVhY2goKGU9PntpZihuKGUpKXtpZighZS5zZWxlY3Rvcil0aHJvdyBuZXcgRXJyb3IoYENhbid0IGNvbnN0cnVjdCBhIHF1ZXJ5IGZvciB0aGUgcHJvcGVydHkgIiR7aX0iIG9mICIke3RuKHQpfSIgc2luY2UgdGhlIHF1ZXJ5IHNlbGVjdG9yIHdhc24ndCBkZWZpbmVkLmApO2lmKGEuc29tZShneSkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29tYmluZSBASW5wdXQgZGVjb3JhdG9ycyB3aXRoIHF1ZXJ5IGRlY29yYXRvcnMiKTtvLnB1c2gocHkoaSxlKSl9fSkpfXJldHVybiBvfWZ1bmN0aW9uIHV5KHQpe2NvbnN0IGU9dC5uZ01ldGFkYXRhTmFtZTtyZXR1cm4iQ29udGVudENoaWxkIj09PWV8fCJDb250ZW50Q2hpbGRyZW4iPT09ZX1mdW5jdGlvbiBmeSh0KXtjb25zdCBlPXQubmdNZXRhZGF0YU5hbWU7cmV0dXJuIlZpZXdDaGlsZCI9PT1lfHwiVmlld0NoaWxkcmVuIj09PWV9ZnVuY3Rpb24gZ3kodCl7cmV0dXJuIklucHV0Ij09PXQubmdNZXRhZGF0YU5hbWV9ZnVuY3Rpb24gaHkodCl7cmV0dXJuIHQuc3BsaXQoIiwiKS5tYXAoKHQ9PnQudHJpbSgpKSl9Y29uc3QgYnk9WyJuZ09uQ2hhbmdlcyIsIm5nT25Jbml0IiwibmdPbkRlc3Ryb3kiLCJuZ0RvQ2hlY2siLCJuZ0FmdGVyVmlld0luaXQiLCJuZ0FmdGVyVmlld0NoZWNrZWQiLCJuZ0FmdGVyQ29udGVudEluaXQiLCJuZ0FmdGVyQ29udGVudENoZWNrZWQiXTtmdW5jdGlvbiB5eSh0KXtjb25zdCBlPVRyKCk7aWYoYnkuc29tZSgobj0+ZS5oYXNMaWZlY3ljbGVIb29rKHQsbikpKSlyZXR1cm4hMDtjb25zdCBuPWUucHJvcE1ldGFkYXRhKHQpO2Zvcihjb25zdCB0IGluIG4pe2NvbnN0IGU9blt0XTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdLG89bi5uZ01ldGFkYXRhTmFtZTtpZihneShuKXx8dXkobil8fGZ5KG4pfHwiT3V0cHV0Ij09PW98fCJIb3N0QmluZGluZyI9PT1vfHwiSG9zdExpc3RlbmVyIj09PW8pcmV0dXJuITB9fXJldHVybiExfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBfeSh0LGUpe3JldHVybnt0eXBlOnQsbmFtZTp0Lm5hbWUscGlwZU5hbWU6ZS5uYW1lLHB1cmU6dm9pZCAwPT09ZS5wdXJlfHxlLnB1cmV9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBDeT1GYSgiRGlyZWN0aXZlIiwoKHQ9e30pPT50KSx2b2lkIDAsdm9pZCAwLCgodCxlKT0+RHkodCxlKSkpLE15PUZhKCJDb21wb25lbnQiLCgodD17fSk9Pk9iamVjdC5hc3NpZ24oe2NoYW5nZURldGVjdGlvbjp6bi5EZWZhdWx0fSx0KSksQ3ksdm9pZCAwLCgodCxlKT0+a3kodCxlKSkpLHZ5PUZhKCJQaXBlIiwodD0+T2JqZWN0LmFzc2lnbih7cHVyZTohMH0sdCkpLHZvaWQgMCx2b2lkIDAsKCh0LGUpPT5FeSh0LGUpKSkseHk9VmEoIklucHV0IiwodD0+KHtiaW5kaW5nUHJvcGVydHlOYW1lOnR9KSkpLE95PVZhKCJPdXRwdXQiLCh0PT4oe2JpbmRpbmdQcm9wZXJ0eU5hbWU6dH0pKSksUHk9VmEoIkhvc3RCaW5kaW5nIiwodD0+KHtob3N0UHJvcGVydHlOYW1lOnR9KSkpLHd5PVZhKCJIb3N0TGlzdGVuZXIiLCgodCxlKT0+KHtldmVudE5hbWU6dCxhcmdzOmV9KSkpLGt5PWZ1bmN0aW9uIFN5KHQsZSl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZVbigpO2xldCBuPW51bGw7IShmdW5jdGlvbiBvKHQsZSl7RnIoZSkmJihJci5zZXQodCxlKSxIci5hZGQodCkpfSkodCxlKSxyeSh0LGUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFluLHtnZXQ6KCk9PntpZihudWxsPT09bil7Y29uc3Qgbz1KYSh7dXNhZ2U6MCxraW5kOiJjb21wb25lbnQiLHR5cGU6dH0pO2lmKEZyKGUpKXtjb25zdCBuPVtgQ29tcG9uZW50ICcke3QubmFtZX0nIGlzIG5vdCByZXNvbHZlZDpgXTt0aHJvdyBlLnRlbXBsYXRlVXJsJiZuLnB1c2goYCAtIHRlbXBsYXRlVXJsOiAke2UudGVtcGxhdGVVcmx9YCksZS5zdHlsZVVybHMmJmUuc3R5bGVVcmxzLmxlbmd0aCYmbi5wdXNoKGAgLSBzdHlsZVVybHM6ICR7SlNPTi5zdHJpbmdpZnkoZS5zdHlsZVVybHMpfWApLG4ucHVzaCgiRGlkIHlvdSBydW4gYW5kIHdhaXQgZm9yICdyZXNvbHZlQ29tcG9uZW50UmVzb3VyY2VzKCknPyIpLG5ldyBFcnJvcihuLmpvaW4oIlxuIikpfWNvbnN0IGk9KGZ1bmN0aW9uIG8oKXtyZXR1cm4gamJ9KSgpO2xldCBhPWUucHJlc2VydmVXaGl0ZXNwYWNlczt2b2lkIDA9PT1hJiYoYT1udWxsIT09aSYmdm9pZCAwIT09aS5wcmVzZXJ2ZVdoaXRlc3BhY2VzJiZpLnByZXNlcnZlV2hpdGVzcGFjZXMpO2xldCByPWUuZW5jYXBzdWxhdGlvbjt2b2lkIDA9PT1yJiYocj1udWxsIT09aSYmdm9pZCAwIT09aS5kZWZhdWx0RW5jYXBzdWxhdGlvbj9pLmRlZmF1bHRFbmNhcHN1bGF0aW9uOkhuLkVtdWxhdGVkKTtjb25zdCBzPWUudGVtcGxhdGVVcmx8fGBuZzovLy8ke3QubmFtZX0vdGVtcGxhdGUuaHRtbGAsbD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbHkodCxlKSkse3R5cGVTb3VyY2VTcGFuOm8uY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJDb21wb25lbnQiLHQubmFtZSxzKSx0ZW1wbGF0ZTplLnRlbXBsYXRlfHwiIixwcmVzZXJ2ZVdoaXRlc3BhY2VzOmEsc3R5bGVzOmUuc3R5bGVzfHxXbixhbmltYXRpb25zOmUuYW5pbWF0aW9ucyxkaXJlY3RpdmVzOltdLGNoYW5nZURldGVjdGlvbjplLmNoYW5nZURldGVjdGlvbixwaXBlczpuZXcgTWFwLGVuY2Fwc3VsYXRpb246cixpbnRlcnBvbGF0aW9uOmUuaW50ZXJwb2xhdGlvbix2aWV3UHJvdmlkZXJzOmUudmlld1Byb3ZpZGVyc3x8bnVsbH0pO295Kys7dHJ5e2wudXNlc0luaGVyaXRhbmNlJiZjeSh0KSxuPW8uY29tcGlsZUNvbXBvbmVudChhYixzLGwpfWZpbmFsbHl7b3ktLX1pZigwPT09b3kmJihmdW5jdGlvbiBpKCl7aWYoIUdiKXtHYj0hMDt0cnl7Zm9yKGxldCB0PVViLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdHttb2R1bGVUeXBlOmUsbmdNb2R1bGU6bn09VWJbdF07bi5kZWNsYXJhdGlvbnMmJm4uZGVjbGFyYXRpb25zLmV2ZXJ5KFdiKSYmKFViLnNwbGljZSh0LDEpLFFiKGUsbikpfX1maW5hbGx5e0diPSExfX19KSgpLChmdW5jdGlvbiBhKHQpe3JldHVybiB2b2lkIDAhPT10Lm5nU2VsZWN0b3JTY29wZX0pKHQpKXtjb25zdCBlPXR5KHQubmdTZWxlY3RvclNjb3BlKTskYihuLGUpfX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9LER5PWl5LEV5PWZ1bmN0aW9uIFJ5KHQsZSl7bGV0IG49bnVsbCxvPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsSm4se2dldDooKT0+e2lmKG51bGw9PT1vKXtjb25zdCBuPV95KHQsZSksaT1KYSh7dXNhZ2U6MCxraW5kOiJwaXBlIix0eXBlOm4udHlwZX0pO289aS5jb21waWxlRmFjdG9yeShhYixgbmc6Ly8vJHtuLm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTpuLm5hbWUsdHlwZTpuLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOk5yKHQpLHRhcmdldDppLkZhY3RvcnlUYXJnZXQuUGlwZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxabix7Z2V0OigpPT57aWYobnVsbD09PW4pe2NvbnN0IG89X3kodCxlKSxpPUphKHt1c2FnZTowLGtpbmQ6InBpcGUiLHR5cGU6by50eXBlfSk7bj1pLmNvbXBpbGVQaXBlKGFiLGBuZzovLy8ke28ubmFtZX0vybVwaXBlLmpzYCxvKX1yZXR1cm4gbn0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9LEF5PUZhKCJOZ01vZHVsZSIsKHQ9PnQpLHZvaWQgMCx2b2lkIDAsKCh0LGUpPT5UeSh0LGUpKSksVHk9ZnVuY3Rpb24gTnkodCxlPXt9KXshKGZ1bmN0aW9uIG4odCxlLG89ITEpe25nRGV2TW9kZSYmaG4odCwiUmVxdWlyZWQgdmFsdWUgbW9kdWxlVHlwZSIpLG5nRGV2TW9kZSYmaG4oZSwiUmVxdWlyZWQgdmFsdWUgbmdNb2R1bGUiKTtjb25zdCBpPXRyKGUuZGVjbGFyYXRpb25zfHxXbik7bGV0IGE9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxYbix7Y29uZmlndXJhYmxlOiEwLGdldDooKT0+e2lmKG51bGw9PT1hKXtpZihuZ0Rldk1vZGUmJmUuaW1wb3J0cyYmZS5pbXBvcnRzLmluZGV4T2YodCk+LTEpdGhyb3cgbmV3IEVycm9yKGAnJHt0bih0KX0nIG1vZHVsZSBjYW4ndCBpbXBvcnQgaXRzZWxmYCk7Y29uc3Qgbj1KYSh7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTp0fSk7YT1uLmNvbXBpbGVOZ01vZHVsZShhYixgbmc6Ly8vJHt0Lm5hbWV9L8m1bW9kLmpzYCx7dHlwZTp0LGJvb3RzdHJhcDp0cihlLmJvb3RzdHJhcHx8V24pLm1hcChaZSksZGVjbGFyYXRpb25zOmkubWFwKFplKSxpbXBvcnRzOnRyKGUuaW1wb3J0c3x8V24pLm1hcChaZSkubWFwKGV5KSxleHBvcnRzOnRyKGUuZXhwb3J0c3x8V24pLm1hcChaZSkubWFwKGV5KSxzY2hlbWFzOmUuc2NoZW1hcz90cihlLnNjaGVtYXMpOm51bGwsaWQ6ZS5pZHx8bnVsbH0pLGEuc2NoZW1hc3x8KGEuc2NoZW1hcz1bXSl9cmV0dXJuIGF9fSk7bGV0IHI9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxKbix7Z2V0OigpPT57aWYobnVsbD09PXIpe2NvbnN0IGU9SmEoe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6dH0pO3I9ZS5jb21waWxlRmFjdG9yeShhYixgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTp0Lm5hbWUsdHlwZTp0LGRlcHM6TnIodCksdGFyZ2V0OmUuRmFjdG9yeVRhcmdldC5OZ01vZHVsZSx0eXBlQXJndW1lbnRDb3VudDowfSl9cmV0dXJuIHJ9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pO2xldCBzPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsa24se2dldDooKT0+e2lmKG51bGw9PT1zKXtuZ0Rldk1vZGUmJlliKHQsbyk7Y29uc3Qgbj17bmFtZTp0Lm5hbWUsdHlwZTp0LHByb3ZpZGVyczplLnByb3ZpZGVyc3x8V24saW1wb3J0czpbKGUuaW1wb3J0c3x8V24pLm1hcChaZSksKGUuZXhwb3J0c3x8V24pLm1hcChaZSldfSxpPUphKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOnR9KTtzPWkuY29tcGlsZUluamVjdG9yKGFiLGBuZzovLy8ke3QubmFtZX0vybVpbmouanNgLG4pfXJldHVybiBzfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX0pKHQsZSksKGZ1bmN0aW9uIG8odCxlKXtVYi5wdXNoKHttb2R1bGVUeXBlOnQsbmdNb2R1bGU6ZX0pfSkodCxlKX0senk9bmV3IEdhKCJBcHBsaWNhdGlvbiBJbml0aWFsaXplciIpO2NsYXNzIEl5e2NvbnN0cnVjdG9yKHQpe3RoaXMuYXBwSW5pdHM9dCx0aGlzLnJlc29sdmU9ZmcsdGhpcy5yZWplY3Q9ZmcsdGhpcy5pbml0aWFsaXplZD0hMSx0aGlzLmRvbmU9ITEsdGhpcy5kb25lUHJvbWlzZT1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLnJlc29sdmU9dCx0aGlzLnJlamVjdD1lfSkpfXJ1bkluaXRpYWxpemVycygpe2lmKHRoaXMuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IHQ9W10sZT0oKT0+e3RoaXMuZG9uZT0hMCx0aGlzLnJlc29sdmUoKX07aWYodGhpcy5hcHBJbml0cylmb3IobGV0IGU9MDtlPHRoaXMuYXBwSW5pdHMubGVuZ3RoO2UrKyl7Y29uc3Qgbj10aGlzLmFwcEluaXRzW2VdKCk7aWYoRm0obikpdC5wdXNoKG4pO2Vsc2UgaWYoQm0obikpe2NvbnN0IGU9bmV3IFByb21pc2UoKCh0LGUpPT57bi5zdWJzY3JpYmUoe2NvbXBsZXRlOnQsZXJyb3I6ZX0pfSkpO3QucHVzaChlKX19UHJvbWlzZS5hbGwodCkudGhlbigoKCk9PntlKCl9KSkuY2F0Y2goKHQ9Pnt0aGlzLnJlamVjdCh0KX0pKSwwPT09dC5sZW5ndGgmJmUoKSx0aGlzLmluaXRpYWxpemVkPSEwfX1JeS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SXkpKHZyKHp5LDgpKX0sSXkuybVwcm92PU1uKHt0b2tlbjpJeSxmYWN0b3J5Okl5Lsm1ZmFjfSksSXkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbenldfSx7dHlwZTpTcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChJeSxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3p5XX0se3R5cGU6U3J9XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBIeT1uZXcgR2EoIkFwcElkIiksRnk9e3Byb3ZpZGU6SHksdXNlRmFjdG9yeTpmdW5jdGlvbiBMeSgpe3JldHVybmAke0J5KCl9JHtCeSgpfSR7QnkoKX1gfSxkZXBzOltdfTtmdW5jdGlvbiBCeSgpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDk3K01hdGguZmxvb3IoMjUqTWF0aC5yYW5kb20oKSkpfWNvbnN0IFZ5PW5ldyBHYSgiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxqeT1uZXcgR2EoIlBsYXRmb3JtIElEIiksVXk9bmV3IEdhKCJhcHBCb290c3RyYXBMaXN0ZW5lciIpO25ldyBHYSgiQXBwbGljYXRpb24gUGFja2FnZXMgUm9vdCBVUkwiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEd5e2xvZyh0KXtjb25zb2xlLmxvZyh0KX13YXJuKHQpe2NvbnNvbGUud2Fybih0KX19R3kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEd5KX0sR3kuybVwcm92PU1uKHt0b2tlbjpHeSxmYWN0b3J5Okd5Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChHeSxbe3R5cGU6aW19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgV3k9bmV3IEdhKCJMb2NhbGVJZCIpLFl5PW5ldyBHYSgiRGVmYXVsdEN1cnJlbmN5Q29kZSIpO3ZhciBxeTtuZXcgR2EoIlRyYW5zbGF0aW9ucyIpLG5ldyBHYSgiVHJhbnNsYXRpb25zRm9ybWF0IiksKGZ1bmN0aW9uKHQpe3RbdC5FcnJvcj0wXT0iRXJyb3IiLHRbdC5XYXJuaW5nPTFdPSJXYXJuaW5nIix0W3QuSWdub3JlPTJdPSJJZ25vcmUifSkocXl8fChxeT17fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWnl7Y29uc3RydWN0b3IodCxlKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWV9fWNvbnN0IFh5PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgX2godCl9LEt5PVh5LEp5PWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoWHkodCkpfSxReT1mdW5jdGlvbih0KXtjb25zdCBlPVh5KHQpLG49cmwoZm8odCkuZGVjbGFyYXRpb25zKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj1wbyhlKTtyZXR1cm4gbiYmdC5wdXNoKG5ldyBmaChuKSksdH0pLFtdKTtyZXR1cm4gbmV3IFp5KGUsbil9LCR5PVF5LHRfPWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoUXkodCkpfTtjbGFzcyBlX3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29tcGlsZU1vZHVsZVN5bmM9S3ksdGhpcy5jb21waWxlTW9kdWxlQXN5bmM9SnksdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmM9JHksdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPXRffWNsZWFyQ2FjaGUoKXt9Y2xlYXJDYWNoZUZvcih0KXt9Z2V0TW9kdWxlSWQodCl7fX1lXy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZV8pfSxlXy7JtXByb3Y9TW4oe3Rva2VuOmVfLGZhY3Rvcnk6ZV8uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGVfLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3Qgbl89bmV3IEdhKCJjb21waWxlck9wdGlvbnMiKSxvXz1Qcm9taXNlLnJlc29sdmUoMCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGlfKHQpeyJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9vXy50aGVuKCgoKT0+e3QmJnQuYXBwbHkobnVsbCxudWxsKX0pKTpab25lLmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInNjaGVkdWxlTWljcm90YXNrIix0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBhX3tjb25zdHJ1Y3Rvcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6dD0hMSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOmU9ITEsc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb246bj0hMX0pe2lmKHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgTGgoITEpLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgTGgoITEpLHRoaXMub25TdGFibGU9bmV3IExoKCExKSx0aGlzLm9uRXJyb3I9bmV3IExoKCExKSwidW5kZWZpbmVkIj09dHlwZW9mIFpvbmUpdGhyb3cgbmV3IEVycm9yKCJJbiB0aGlzIGNvbmZpZ3VyYXRpb24gQW5ndWxhciByZXF1aXJlcyBab25lLmpzIik7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgpO2NvbnN0IG89dGhpcztvLl9uZXN0aW5nPTAsby5fb3V0ZXI9by5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUuVGFza1RyYWNraW5nWm9uZVNwZWMmJihvLl9pbm5lcj1vLl9pbm5lci5mb3JrKG5ldyBab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjKSksdCYmWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjJiYoby5faW5uZXI9by5faW5uZXIuZm9yayhab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMpKSxvLnNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb249IW4mJmUsby5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbj1uLG8ubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLG8ubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lPShmdW5jdGlvbiBpKCl7bGV0IHQ9am4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLGU9am4uY2FuY2VsQW5pbWF0aW9uRnJhbWU7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBab25lJiZ0JiZlKXtjb25zdCBuPXRbWm9uZS5fX3N5bWJvbF9fKCJPcmlnaW5hbERlbGVnYXRlIildO24mJih0PW4pO2NvbnN0IG89ZVtab25lLl9fc3ltYm9sX18oIk9yaWdpbmFsRGVsZWdhdGUiKV07byYmKGU9byl9cmV0dXJue25hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZTp0LG5hdGl2ZUNhbmNlbEFuaW1hdGlvbkZyYW1lOmV9fSkoKS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUsKGZ1bmN0aW9uIGEodCl7Y29uc3QgZT0oKT0+eyEoZnVuY3Rpb24gZSh0KXt0LmlzQ2hlY2tTdGFibGVSdW5uaW5nfHwtMSE9PXQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkfHwodC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9dC5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWUuY2FsbChqbiwoKCk9Pnt0LmZha2VUb3BFdmVudFRhc2t8fCh0LmZha2VUb3BFdmVudFRhc2s9Wm9uZS5yb290LnNjaGVkdWxlRXZlbnRUYXNrKCJmYWtlVG9wRXZlbnRUYXNrIiwoKCk9Pnt0Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD0tMSxsXyh0KSx0LmlzQ2hlY2tTdGFibGVSdW5uaW5nPSEwLHNfKHQpLHQuaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITF9KSx2b2lkIDAsKCgpPT57fSksKCgpPT57fSkpKSx0LmZha2VUb3BFdmVudFRhc2suaW52b2tlKCl9KSksbF8odCkpfSkodCl9O3QuX2lubmVyPXQuX2lubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazoobixvLGksYSxyLHMpPT57dHJ5e3JldHVybiBjXyh0KSxuLmludm9rZVRhc2soaSxhLHIscyl9ZmluYWxseXsodC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uJiYiZXZlbnRUYXNrIj09PWEudHlwZXx8dC5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbikmJmUoKSxkXyh0KX19LG9uSW52b2tlOihuLG8saSxhLHIscyxsKT0+e3RyeXtyZXR1cm4gY18odCksbi5pbnZva2UoaSxhLHIscyxsKX1maW5hbGx5e3Quc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24mJmUoKSxkXyh0KX19LG9uSGFzVGFzazooZSxuLG8saSk9PntlLmhhc1Rhc2sobyxpKSxuPT09byYmKCJtaWNyb1Rhc2siPT1pLmNoYW5nZT8odC5faGFzUGVuZGluZ01pY3JvdGFza3M9aS5taWNyb1Rhc2ssbF8odCksc18odCkpOiJtYWNyb1Rhc2siPT1pLmNoYW5nZSYmKHQuaGFzUGVuZGluZ01hY3JvdGFza3M9aS5tYWNyb1Rhc2spKX0sb25IYW5kbGVFcnJvcjooZSxuLG8saSk9PihlLmhhbmRsZUVycm9yKG8saSksdC5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQub25FcnJvci5lbWl0KGkpKSksITEpfSl9KShvKX1zdGF0aWMgaXNJbkFuZ3VsYXJab25lKCl7cmV0dXJuITA9PT1ab25lLmN1cnJlbnQuZ2V0KCJpc0FuZ3VsYXJab25lIil9c3RhdGljIGFzc2VydEluQW5ndWxhclpvbmUoKXtpZighYV8uaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyBub3QhIil9c3RhdGljIGFzc2VydE5vdEluQW5ndWxhclpvbmUoKXtpZihhXy5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIG5vdCBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyEiKX1ydW4odCxlLG4pe3JldHVybiB0aGlzLl9pbm5lci5ydW4odCxlLG4pfXJ1blRhc2sodCxlLG4sbyl7Y29uc3QgaT10aGlzLl9pbm5lcixhPWkuc2NoZWR1bGVFdmVudFRhc2soIk5nWm9uZUV2ZW50OiAiK28sdCxyXyxmZyxmZyk7dHJ5e3JldHVybiBpLnJ1blRhc2soYSxlLG4pfWZpbmFsbHl7aS5jYW5jZWxUYXNrKGEpfX1ydW5HdWFyZGVkKHQsZSxuKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuR3VhcmRlZCh0LGUsbil9cnVuT3V0c2lkZUFuZ3VsYXIodCl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bih0KX19Y29uc3Qgcl89e307ZnVuY3Rpb24gc18odCl7aWYoMD09dC5fbmVzdGluZyYmIXQuaGFzUGVuZGluZ01pY3JvdGFza3MmJiF0LmlzU3RhYmxlKXRyeXt0Ll9uZXN0aW5nKyssdC5vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtpZih0Ll9uZXN0aW5nLS0sIXQuaGFzUGVuZGluZ01pY3JvdGFza3MpdHJ5e3QucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50Lm9uU3RhYmxlLmVtaXQobnVsbCkpKX1maW5hbGx5e3QuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBsXyh0KXt0Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSEhKHQuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzfHwodC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9ufHx0LnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uKSYmLTEhPT10Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZCl9ZnVuY3Rpb24gY18odCl7dC5fbmVzdGluZysrLHQuaXNTdGFibGUmJih0LmlzU3RhYmxlPSExLHQub25VbnN0YWJsZS5lbWl0KG51bGwpKX1mdW5jdGlvbiBkXyh0KXt0Ll9uZXN0aW5nLS0sc18odCl9Y2xhc3MgcF97Y29uc3RydWN0b3IoKXt0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IExoLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgTGgsdGhpcy5vblN0YWJsZT1uZXcgTGgsdGhpcy5vbkVycm9yPW5ldyBMaH1ydW4odCxlLG4pe3JldHVybiB0LmFwcGx5KGUsbil9cnVuR3VhcmRlZCh0LGUsbil7cmV0dXJuIHQuYXBwbHkoZSxuKX1ydW5PdXRzaWRlQW5ndWxhcih0KXtyZXR1cm4gdCgpfXJ1blRhc2sodCxlLG4sbyl7cmV0dXJuIHQuYXBwbHkoZSxuKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1fe2NvbnN0cnVjdG9yKHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX3BlbmRpbmdDb3VudD0wLHRoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9kaWRXb3JrPSExLHRoaXMuX2NhbGxiYWNrcz1bXSx0aGlzLnRhc2tUcmFja2luZ1pvbmU9bnVsbCx0aGlzLl93YXRjaEFuZ3VsYXJFdmVudHMoKSx0LnJ1bigoKCk9Pnt0aGlzLnRhc2tUcmFja2luZ1pvbmU9InVuZGVmaW5lZCI9PXR5cGVvZiBab25lP251bGw6Wm9uZS5jdXJyZW50LmdldCgiVGFza1RyYWNraW5nWm9uZSIpfSkpfV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dGhpcy5fbmdab25lLm9uU3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e2FfLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxpXygoKCk9Pnt0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfSkpfX0pfSkpfWluY3JlYXNlUGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnQrPTEsdGhpcy5fZGlkV29yaz0hMCx0aGlzLl9wZW5kaW5nQ291bnR9ZGVjcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7aWYodGhpcy5fcGVuZGluZ0NvdW50LT0xLHRoaXMuX3BlbmRpbmdDb3VudDwwKXRocm93IG5ldyBFcnJvcigicGVuZGluZyBhc3luYyByZXF1ZXN0cyBiZWxvdyB6ZXJvIik7cmV0dXJuIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKSx0aGlzLl9wZW5kaW5nQ291bnR9aXNTdGFibGUoKXtyZXR1cm4gdGhpcy5faXNab25lU3RhYmxlJiYwPT09dGhpcy5fcGVuZGluZ0NvdW50JiYhdGhpcy5fbmdab25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfV9ydW5DYWxsYmFja3NJZlJlYWR5KCl7aWYodGhpcy5pc1N0YWJsZSgpKWlfKCgoKT0+e2Zvcig7MCE9PXRoaXMuX2NhbGxiYWNrcy5sZW5ndGg7KXtsZXQgdD10aGlzLl9jYWxsYmFja3MucG9wKCk7Y2xlYXJUaW1lb3V0KHQudGltZW91dElkKSx0LmRvbmVDYih0aGlzLl9kaWRXb3JrKX10aGlzLl9kaWRXb3JrPSExfSkpO2Vsc2V7bGV0IHQ9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcigoZT0+IWUudXBkYXRlQ2J8fCFlLnVwZGF0ZUNiKHQpfHwoY2xlYXJUaW1lb3V0KGUudGltZW91dElkKSwhMSkpKSx0aGlzLl9kaWRXb3JrPSEwfX1nZXRQZW5kaW5nVGFza3MoKXtyZXR1cm4gdGhpcy50YXNrVHJhY2tpbmdab25lP3RoaXMudGFza1RyYWNraW5nWm9uZS5tYWNyb1Rhc2tzLm1hcCgodD0+KHtzb3VyY2U6dC5zb3VyY2UsY3JlYXRpb25Mb2NhdGlvbjp0LmNyZWF0aW9uTG9jYXRpb24sZGF0YTp0LmRhdGF9KSkpOltdfWFkZENhbGxiYWNrKHQsZSxuKXtsZXQgbz0tMTtlJiZlPjAmJihvPXNldFRpbWVvdXQoKCgpPT57dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrcy5maWx0ZXIoKHQ9PnQudGltZW91dElkIT09bykpLHQodGhpcy5fZGlkV29yayx0aGlzLmdldFBlbmRpbmdUYXNrcygpKX0pLGUpKSx0aGlzLl9jYWxsYmFja3MucHVzaCh7ZG9uZUNiOnQsdGltZW91dElkOm8sdXBkYXRlQ2I6bn0pfXdoZW5TdGFibGUodCxlLG4pe2lmKG4mJiF0aGlzLnRhc2tUcmFja2luZ1pvbmUpdGhyb3cgbmV3IEVycm9yKCdUYXNrIHRyYWNraW5nIHpvbmUgaXMgcmVxdWlyZWQgd2hlbiBwYXNzaW5nIGFuIHVwZGF0ZSBjYWxsYmFjayB0byB3aGVuU3RhYmxlKCkuIElzICJ6b25lLmpzL3BsdWdpbnMvdGFzay10cmFja2luZyIgbG9hZGVkPycpO3RoaXMuYWRkQ2FsbGJhY2sodCxlLG4pLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX1nZXRQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudH1maW5kUHJvdmlkZXJzKHQsZSxuKXtyZXR1cm5bXX19bV8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1fKSh2cihhXykpfSxtXy7JtXByb3Y9TW4oe3Rva2VuOm1fLGZhY3Rvcnk6bV8uybVmYWN9KSxtXy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmFffV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChtXyxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YV99XX0pLG51bGwpO2NsYXNzIHVfe2NvbnN0cnVjdG9yKCl7dGhpcy5fYXBwbGljYXRpb25zPW5ldyBNYXAsZ18uYWRkVG9XaW5kb3codGhpcyl9cmVnaXN0ZXJBcHBsaWNhdGlvbih0LGUpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQodCxlKX11bnJlZ2lzdGVyQXBwbGljYXRpb24odCl7dGhpcy5fYXBwbGljYXRpb25zLmRlbGV0ZSh0KX11bnJlZ2lzdGVyQWxsQXBwbGljYXRpb25zKCl7dGhpcy5fYXBwbGljYXRpb25zLmNsZWFyKCl9Z2V0VGVzdGFiaWxpdHkodCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQodCl8fG51bGx9Z2V0QWxsVGVzdGFiaWxpdGllcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy52YWx1ZXMoKSl9Z2V0QWxsUm9vdEVsZW1lbnRzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fYXBwbGljYXRpb25zLmtleXMoKSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZT0hMCl7cmV0dXJuIGdfLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0aGlzLHQsZSl9fXVfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1Xyl9LHVfLsm1cHJvdj1Nbih7dG9rZW46dV8sZmFjdG9yeTp1Xy7JtWZhY30pLHVfLmN0b3JQYXJhbWV0ZXJzPSgpPT5bXSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHVfLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7bGV0IGZfLGdfPW5ldyBjbGFzc3thZGRUb1dpbmRvdyh0KXt9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZSxuKXtyZXR1cm4gbnVsbH19LGhfPSEwLGJfPSExOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB5Xygpe3JldHVybiBiXz0hMCxoX31jb25zdCBfXz1uZXcgR2EoIkFsbG93TXVsdGlwbGVUb2tlbiIpO2Z1bmN0aW9uIENfKHQsZSxuPVtdKXtjb25zdCBvPWBQbGF0Zm9ybTogJHtlfWAsaT1uZXcgR2Eobyk7cmV0dXJuKGU9W10pPT57bGV0IGE9TV8oKTtpZighYXx8YS5pbmplY3Rvci5nZXQoX18sITEpKWlmKHQpdChuLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6aSx1c2VWYWx1ZTohMH0pKTtlbHNle2NvbnN0IHQ9bi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOmksdXNlVmFsdWU6ITB9LHtwcm92aWRlOllkLHVzZVZhbHVlOiJwbGF0Zm9ybSJ9KTshKGZ1bmN0aW9uIHIodCl7aWYoZl8mJiFmXy5kZXN0cm95ZWQmJiFmXy5pbmplY3Rvci5nZXQoX18sITEpKXRocm93IG5ldyBFcnJvcigiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTsoZnVuY3Rpb24gZSgpe25nRGV2TW9kZSYmKGZ1bmN0aW9uIHQoKXtfcHx8KF9wPSEwLENwKCLJtXNldFByb2ZpbGVyIixZbyksQ3AoImdldERpcmVjdGl2ZU1ldGFkYXRhIix1cCksQ3AoImdldENvbXBvbmVudCIsc3ApLENwKCJnZXRDb250ZXh0IixscCksQ3AoImdldExpc3RlbmVycyIsZ3ApLENwKCJnZXRPd25pbmdDb21wb25lbnQiLGNwKSxDcCgiZ2V0SG9zdEVsZW1lbnQiLGZwKSxDcCgiZ2V0SW5qZWN0b3IiLHBwKSxDcCgiZ2V0Um9vdENvbXBvbmVudHMiLGRwKSxDcCgiZ2V0RGlyZWN0aXZlcyIsbXApLENwKCJhcHBseUNoYW5nZXMiLHlwKSl9KSgpfSkoKSxmXz10LmdldCh2Xyk7Y29uc3Qgbj10LmdldChWeSxudWxsKTtuJiZuLmZvckVhY2goKHQ9PnQoKSkpfSkocnAuY3JlYXRlKHtwcm92aWRlcnM6dCxuYW1lOm99KSl9cmV0dXJuKGZ1bmN0aW9uIHModCl7Y29uc3QgZT1NXygpO2lmKCFlKXRocm93IG5ldyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3RzISIpO2lmKCFlLmluamVjdG9yLmdldCh0LG51bGwpKXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9ybSB3aXRoIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNlIGRlc3Ryb3kgaXQgZmlyc3QuIik7cmV0dXJuIGV9KShpKX19ZnVuY3Rpb24gTV8oKXtyZXR1cm4gZl8mJiFmXy5kZXN0cm95ZWQ/Zl86bnVsbH1jbGFzcyB2X3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9pbmplY3Rvcj10LHRoaXMuX21vZHVsZXM9W10sdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9ITF9Ym9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIG8odCxlKXtsZXQgbjtyZXR1cm4gbj0ibm9vcCI9PT10P25ldyBwXzooInpvbmUuanMiPT09dD92b2lkIDA6dCl8fG5ldyBhXyh7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6eV8oKSxzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiEhKG51bGw9PWU/dm9pZCAwOmUubmdab25lRXZlbnRDb2FsZXNjaW5nKSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjohIShudWxsPT1lP3ZvaWQgMDplLm5nWm9uZVJ1bkNvYWxlc2NpbmcpfSksbn0pKGU/ZS5uZ1pvbmU6dm9pZCAwLHtuZ1pvbmVFdmVudENvYWxlc2Npbmc6ZSYmZS5uZ1pvbmVFdmVudENvYWxlc2Npbmd8fCExLG5nWm9uZVJ1bkNvYWxlc2Npbmc6ZSYmZS5uZ1pvbmVSdW5Db2FsZXNjaW5nfHwhMX0pLGk9W3twcm92aWRlOmFfLHVzZVZhbHVlOm59XTtyZXR1cm4gbi5ydW4oKCgpPT57Y29uc3QgZT1ycC5jcmVhdGUoe3Byb3ZpZGVyczppLHBhcmVudDp0aGlzLmluamVjdG9yLG5hbWU6dC5tb2R1bGVUeXBlLm5hbWV9KSxvPXQuY3JlYXRlKGUpLGE9by5pbmplY3Rvci5nZXQoWnMsbnVsbCk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJObyBFcnJvckhhbmRsZXIuIElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkgaW5jbHVkZWQ/Iik7cmV0dXJuIG4ucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57Y29uc3QgdD1uLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OnQ9PnthLmhhbmRsZUVycm9yKHQpfX0pO28ub25EZXN0cm95KCgoKT0+e1BfKHRoaXMuX21vZHVsZXMsbyksdC51bnN1YnNjcmliZSgpfSkpfSkpLChmdW5jdGlvbiByKHQsZSxuKXt0cnl7Y29uc3Qgbz1uKCk7cmV0dXJuIEZtKG8pP28uY2F0Y2goKG49Pnt0aHJvdyBlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5oYW5kbGVFcnJvcihuKSkpLG59KSk6b31jYXRjaChuKXt0aHJvdyBlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5oYW5kbGVFcnJvcihuKSkpLG59fSkoYSxuLCgoKT0+e2NvbnN0IHQ9by5pbmplY3Rvci5nZXQoSXkpO3JldHVybiB0LnJ1bkluaXRpYWxpemVycygpLHQuZG9uZVByb21pc2UudGhlbigoKCk9PihYdShvLmluamVjdG9yLmdldChXeSxHdSl8fEd1KSx0aGlzLl9tb2R1bGVEb0Jvb3RzdHJhcChvKSxvKSkpfSkpfSkpfWJvb3RzdHJhcE1vZHVsZSh0LGU9W10pe2NvbnN0IG49eF8oe30sZSk7cmV0dXJuKGZ1bmN0aW9uIG8odCxlLG4pe25nRGV2TW9kZSYmKGZ1bmN0aW9uIG8odCxlPSJUeXBlIHBhc3NlZCBpbiBpcyBub3QgTmdNb2R1bGVUeXBlLCBpdCBkb2VzIG5vdCBoYXZlICfJtW1vZCcgcHJvcGVydHkuIil7Zm8odCl8fGJuKGUpfSkobik7Y29uc3QgaT1uZXcgX2gobik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0ppdE1vZGUmJiFuZ0ppdE1vZGUpcmV0dXJuIFByb21pc2UucmVzb2x2ZShpKTtjb25zdCBhPXQuZ2V0KG5fLFtdKS5jb25jYXQoZSk7aWYoKGZ1bmN0aW9uIHIodCl7aWYobnVsbCE9PWpiKXtpZih0LmRlZmF1bHRFbmNhcHN1bGF0aW9uIT09amIuZGVmYXVsdEVuY2Fwc3VsYXRpb24pcmV0dXJuIHZvaWQobmdEZXZNb2RlJiZjb25zb2xlLmVycm9yKCJQcm92aWRlZCB2YWx1ZSBmb3IgYGRlZmF1bHRFbmNhcHN1bGF0aW9uYCBjYW4gbm90IGJlIGNoYW5nZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQuIikpO2lmKHQucHJlc2VydmVXaGl0ZXNwYWNlcyE9PWpiLnByZXNlcnZlV2hpdGVzcGFjZXMpcmV0dXJuIHZvaWQobmdEZXZNb2RlJiZjb25zb2xlLmVycm9yKCJQcm92aWRlZCB2YWx1ZSBmb3IgYHByZXNlcnZlV2hpdGVzcGFjZXNgIGNhbiBub3QgYmUgY2hhbmdlZCBvbmNlIGl0IGhhcyBiZWVuIHNldC4iKSl9amI9dH0pKHtkZWZhdWx0RW5jYXBzdWxhdGlvbjp3XyhhLm1hcCgodD0+dC5kZWZhdWx0RW5jYXBzdWxhdGlvbikpKSxwcmVzZXJ2ZVdoaXRlc3BhY2VzOndfKGEubWFwKCh0PT50LnByZXNlcnZlV2hpdGVzcGFjZXMpKSl9KSwoZnVuY3Rpb24gcygpe3JldHVybiAwPT09SXIuc2l6ZX0pKCkpcmV0dXJuIFByb21pc2UucmVzb2x2ZShpKTtjb25zdCBsPShmdW5jdGlvbiBjKHQpe2NvbnN0IGU9W107cmV0dXJuIHQuZm9yRWFjaCgodD0+dCYmZS5wdXNoKC4uLnQpKSksZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShhLm1hcCgodD0+dC5wcm92aWRlcnMpKSk7aWYoMD09PWwubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoaSk7Y29uc3QgZD1KYSh7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTpufSkscD1ycC5jcmVhdGUoe3Byb3ZpZGVyczpsfSkuZ2V0KGQuUmVzb3VyY2VMb2FkZXIpO3JldHVybihmdW5jdGlvbiBtKHQpe2NvbnN0IGU9W10sbj1uZXcgTWFwO2Z1bmN0aW9uIG8oZSl7bGV0IG89bi5nZXQoZSk7aWYoIW8pe2NvbnN0IGk9dChlKTtuLnNldChlLG89aS50aGVuKExyKSl9cmV0dXJuIG99cmV0dXJuIElyLmZvckVhY2goKCh0LG4pPT57Y29uc3QgaT1bXTt0LnRlbXBsYXRlVXJsJiZpLnB1c2gobyh0LnRlbXBsYXRlVXJsKS50aGVuKChlPT57dC50ZW1wbGF0ZT1lfSkpKTtjb25zdCBhPXQuc3R5bGVVcmxzLHI9dC5zdHlsZXN8fCh0LnN0eWxlcz1bXSkscz10LnN0eWxlcy5sZW5ndGg7YSYmYS5mb3JFYWNoKCgoZSxuKT0+e3IucHVzaCgiIiksaS5wdXNoKG8oZSkudGhlbigobz0+e3JbcytuXT1vLGEuc3BsaWNlKGEuaW5kZXhPZihlKSwxKSwwPT1hLmxlbmd0aCYmKHQuc3R5bGVVcmxzPXZvaWQgMCl9KSkpfSkpO2NvbnN0IGw9UHJvbWlzZS5hbGwoaSkudGhlbigoKCk9PihmdW5jdGlvbiB0KGUpe0hyLmRlbGV0ZShlKX0pKG4pKSk7ZS5wdXNoKGwpfSkpLChmdW5jdGlvbiBpKCl7SXI9bmV3IE1hcH0pKCksUHJvbWlzZS5hbGwoZSkudGhlbigoKCk9Pnt9KSl9KSgodD0+UHJvbWlzZS5yZXNvbHZlKHAuZ2V0KHQpKSkpLnRoZW4oKCgpPT5pKSl9KSh0aGlzLmluamVjdG9yLG4sdCkudGhlbigodD0+dGhpcy5ib290c3RyYXBNb2R1bGVGYWN0b3J5KHQsbikpKX1fbW9kdWxlRG9Cb290c3RyYXAodCl7Y29uc3QgZT10LmluamVjdG9yLmdldChPXyk7aWYodC5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCl0Ll9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2goKHQ9PmUuYm9vdHN0cmFwKHQpKSk7ZWxzZXtpZighdC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKXRocm93IG5ldyBFcnJvcihgVGhlIG1vZHVsZSAke0dlKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpfSB3YXMgYm9vdHN0cmFwcGVkLCBidXQgaXQgZG9lcyBub3QgZGVjbGFyZSAiQE5nTW9kdWxlLmJvb3RzdHJhcCIgY29tcG9uZW50cyBub3IgYSAibmdEb0Jvb3RzdHJhcCIgbWV0aG9kLiBQbGVhc2UgZGVmaW5lIG9uZSBvZiB0aGVzZS5gKTt0Lmluc3RhbmNlLm5nRG9Cb290c3RyYXAoZSl9dGhpcy5fbW9kdWxlcy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9Z2V0IGluamVjdG9yKCl7cmV0dXJuIHRoaXMuX2luamVjdG9yfWRlc3Ryb3koKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgcGxhdGZvcm0gaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQhIik7dGhpcy5fbW9kdWxlcy5zbGljZSgpLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9kZXN0cm95ZWQ9ITB9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9fWZ1bmN0aW9uIHhfKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5yZWR1Y2UoeF8sdCk6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpfXZfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2XykodnIocnApKX0sdl8uybVwcm92PU1uKHt0b2tlbjp2XyxmYWN0b3J5OnZfLsm1ZmFjfSksdl8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpycH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodl8sW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnJwfV19KSxudWxsKTtjbGFzcyBPX3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuX3pvbmU9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2V4Y2VwdGlvbkhhbmRsZXI9bix0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9byx0aGlzLl9pbml0U3RhdHVzPWksdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX3J1bm5pbmdUaWNrPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9vbk1pY3JvdGFza0VtcHR5U3Vic2NyaXB0aW9uPXRoaXMuX3pvbmUub25NaWNyb3Rhc2tFbXB0eS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLnRpY2soKX0pKX19KTtjb25zdCBhPW5ldyBEKCh0PT57dGhpcy5fc3RhYmxlPXRoaXMuX3pvbmUuaXNTdGFibGUmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QubmV4dCh0aGlzLl9zdGFibGUpLHQuY29tcGxldGUoKX0pKX0pKSxyPW5ldyBEKCh0PT57bGV0IGU7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlPXRoaXMuX3pvbmUub25TdGFibGUuc3Vic2NyaWJlKCgoKT0+e2FfLmFzc2VydE5vdEluQW5ndWxhclpvbmUoKSxpXygoKCk9Pnt0aGlzLl9zdGFibGV8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N8fHRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3N8fCh0aGlzLl9zdGFibGU9ITAsdC5uZXh0KCEwKSl9KSl9KSl9KSk7Y29uc3Qgbj10aGlzLl96b25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKCgoKT0+e2FfLmFzc2VydEluQW5ndWxhclpvbmUoKSx0aGlzLl9zdGFibGUmJih0aGlzLl9zdGFibGU9ITEsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Lm5leHQoITEpfSkpKX0pKTtyZXR1cm4oKT0+e2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSkpO3RoaXMuaXNTdGFibGU9cmUoYSxyLnBpcGUoRWUoKSkpfWJvb3RzdHJhcCh0LGUpe2lmKCF0aGlzLl9pbml0U3RhdHVzLmRvbmUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgYm9vdHN0cmFwIGFzIHRoZXJlIGFyZSBzdGlsbCBhc3luY2hyb25vdXMgaW5pdGlhbGl6ZXJzIHJ1bm5pbmcuIEJvb3RzdHJhcCBjb21wb25lbnRzIGluIHRoZSBgbmdEb0Jvb3RzdHJhcGAgbWV0aG9kIG9mIHRoZSByb290IG1vZHVsZS4iKTtsZXQgbjtuPXQgaW5zdGFuY2VvZiBtZz90OnRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSx0aGlzLmNvbXBvbmVudFR5cGVzLnB1c2gobi5jb21wb25lbnRUeXBlKTtjb25zdCBvPShmdW5jdGlvbiBpKHQpe3JldHVybiB0LmlzQm91bmRUb01vZHVsZX0pKG4pP3ZvaWQgMDp0aGlzLl9pbmplY3Rvci5nZXQodGgpLGE9bi5jcmVhdGUocnAuTlVMTCxbXSxlfHxuLnNlbGVjdG9yLG8pLHI9YS5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LHM9YS5pbmplY3Rvci5nZXQobV8sbnVsbCksbD1zJiZhLmluamVjdG9yLmdldCh1Xyk7cmV0dXJuIHMmJmwmJmwucmVnaXN0ZXJBcHBsaWNhdGlvbihyLHMpLGEub25EZXN0cm95KCgoKT0+e3RoaXMuZGV0YWNoVmlldyhhLmhvc3RWaWV3KSxQXyh0aGlzLmNvbXBvbmVudHMsYSksbCYmbC51bnJlZ2lzdGVyQXBwbGljYXRpb24ocil9KSksdGhpcy5fbG9hZENvbXBvbmVudChhKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnlfKCkmJnRoaXMuX2luamVjdG9yLmdldChHeSkubG9nKCJBbmd1bGFyIGlzIHJ1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gQ2FsbCBlbmFibGVQcm9kTW9kZSgpIHRvIGVuYWJsZSBwcm9kdWN0aW9uIG1vZGUuIiksYX10aWNrKCl7aWYodGhpcy5fcnVubmluZ1RpY2spdGhyb3cgbmV3IEVycm9yKCJBcHBsaWNhdGlvblJlZi50aWNrIGlzIGNhbGxlZCByZWN1cnNpdmVseSIpO3RyeXt0aGlzLl9ydW5uaW5nVGljaz0hMDtmb3IobGV0IHQgb2YgdGhpcy5fdmlld3MpdC5kZXRlY3RDaGFuZ2VzKCk7aWYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ5XygpKWZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2godCl7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2V4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXJyb3IodCkpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KHQpe2NvbnN0IGU9dDt0aGlzLl92aWV3cy5wdXNoKGUpLGUuYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyh0KXtjb25zdCBlPXQ7UF8odGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQodCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2luamVjdG9yLmdldChVeSxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaCgoZT0+ZSh0KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX29uTWljcm90YXNrRW1wdHlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgdmlld0NvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH19ZnVuY3Rpb24gUF8odCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfWZ1bmN0aW9uIHdfKHQpe2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKWlmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIHRbZV19T18uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE9fKSh2cihhXyksdnIocnApLHZyKFpzKSx2cih1ZyksdnIoSXkpKX0sT18uybVwcm92PU1uKHt0b2tlbjpPXyxmYWN0b3J5Ok9fLsm1ZmFjfSksT18uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTphX30se3R5cGU6cnB9LHt0eXBlOlpzfSx7dHlwZTp1Z30se3R5cGU6SXl9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE9fLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTphX30se3R5cGU6cnB9LHt0eXBlOlpzfSx7dHlwZTp1Z30se3R5cGU6SXl9XX0pLG51bGwpO2NsYXNzIGtfe31jb25zdCBTXz17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifTtjbGFzcyBEX3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPWV8fFNffWxvYWQodCl7cmV0dXJuIHRoaXMubG9hZEFuZENvbXBpbGUodCl9bG9hZEFuZENvbXBpbGUodCl7bGV0W2Usbl09dC5zcGxpdCgiIyIpO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIpLFN5c3RlbS5pbXBvcnQoZSkudGhlbigodD0+dFtuXSkpLnRoZW4oKHQ9PkVfKHQsZSxuKSkpLnRoZW4oKHQ9PnRoaXMuX2NvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyh0KSkpfWxvYWRGYWN0b3J5KHQpe2xldFtlLG5dPXQuc3BsaXQoIiMiKSxvPSJOZ0ZhY3RvcnkiO3JldHVybiB2b2lkIDA9PT1uJiYobj0iZGVmYXVsdCIsbz0iIiksU3lzdGVtLmltcG9ydCh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrZSt0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oKHQ9PnRbbitvXSkpLnRoZW4oKHQ9PkVfKHQsZSxuKSkpfX1mdW5jdGlvbiBFXyh0LGUsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtufScgaW4gJyR7ZX0nYCk7cmV0dXJuIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0RfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxEXykodnIoZV8pLHZyKGtfLDgpKX0sRF8uybVwcm92PU1uKHt0b2tlbjpEXyxmYWN0b3J5OkRfLsm1ZmFjfSksRF8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplX30se3R5cGU6a18sZGVjb3JhdG9yczpbe3R5cGU6U3J9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRF8sW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVffSx7dHlwZTprXyxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV19KSxudWxsKTtjb25zdCBSXz1DXyhudWxsLCJjb3JlIixbe3Byb3ZpZGU6anksdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTp2XyxkZXBzOltycF19LHtwcm92aWRlOnVfLGRlcHM6W119LHtwcm92aWRlOkd5LGRlcHM6W119XSksQV89W3twcm92aWRlOk9fLHVzZUNsYXNzOk9fLGRlcHM6W2FfLHJwLFpzLHVnLEl5XX0se3Byb3ZpZGU6dWgsZGVwczpbYV9dLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gVF8odCl7bGV0IGU9W107cmV0dXJuIHQub25TdGFibGUuc3Vic2NyaWJlKCgoKT0+e2Zvcig7ZS5sZW5ndGg7KWUucG9wKCkoKX0pKSxmdW5jdGlvbih0KXtlLnB1c2godCl9fX0se3Byb3ZpZGU6SXksdXNlQ2xhc3M6SXksZGVwczpbW25ldyBTcix6eV1dfSx7cHJvdmlkZTplXyx1c2VDbGFzczplXyxkZXBzOltdfSxGeSx7cHJvdmlkZTpIZyx1c2VGYWN0b3J5OgovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gTl8oKXtyZXR1cm4gcWd9LGRlcHM6W119LHtwcm92aWRlOkxnLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gel8oKXtyZXR1cm4gWmd9LGRlcHM6W119LHtwcm92aWRlOld5LHVzZUZhY3Rvcnk6ZnVuY3Rpb24gSV8odCl7cmV0dXJuIFh1KHQ9dHx8KGZ1bmN0aW9uIGUoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBnb29nJiYiZW4iIT09Z29vZy5nZXRMb2NhbGUoKT9nb29nLmdldExvY2FsZSgpOiJ1bmRlZmluZWQiIT10eXBlb2YgJGxvY2FsaXplJiYkbG9jYWxpemUubG9jYWxlfHxHdX0pKCkpLHR9LGRlcHM6W1tuZXcga3IoV3kpLG5ldyBTcixuZXcgRXJdXX0se3Byb3ZpZGU6WXksdXNlVmFsdWU6IlVTRCJ9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEhfe2NvbnN0cnVjdG9yKHQpe319dmFyIEZfLExfO0hfLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIXykodnIoT18pKX0sSF8uybVtb2Q9YW8oe3R5cGU6SF99KSxIXy7JtWluaj12bih7cHJvdmlkZXJzOkFffSksSF8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPX31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSF8sW3t0eXBlOkF5LGFyZ3M6W3twcm92aWRlcnM6QV99XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPX31dfSksbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5DcmVhdGVWaWV3Tm9kZXM9MF09IkNyZWF0ZVZpZXdOb2RlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzPTFdPSJDaGVja05vQ2hhbmdlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M9Ml09IkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MiLHRbdC5DaGVja0FuZFVwZGF0ZT0zXT0iQ2hlY2tBbmRVcGRhdGUiLHRbdC5DaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzPTRdPSJDaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzIix0W3QuRGVzdHJveT01XT0iRGVzdHJveSJ9KShGX3x8KEZfPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5jcmVhdGU9MF09ImNyZWF0ZSIsdFt0LmRldGVjdENoYW5nZXM9MV09ImRldGVjdENoYW5nZXMiLHRbdC5jaGVja05vQ2hhbmdlcz0yXT0iY2hlY2tOb0NoYW5nZXMiLHRbdC5kZXN0cm95PTNdPSJkZXN0cm95Iix0W3QuaGFuZGxlRXZlbnQ9NF09ImhhbmRsZUV2ZW50In0pKExffHwoTF89e30pKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJm5nRGV2TW9kZSYmKGpuLiRsb2NhbGl6ZT1qbi4kbG9jYWxpemV8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJJdCBsb29rcyBsaWtlIHlvdXIgYXBwbGljYXRpb24gb3Igb25lIG9mIGl0cyBkZXBlbmRlbmNpZXMgaXMgdXNpbmcgaTE4bi5cbkFuZ3VsYXIgOSBpbnRyb2R1Y2VkIGEgZ2xvYmFsIGAkbG9jYWxpemUoKWAgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBsb2FkZWQuXG5QbGVhc2UgcnVuIGBuZyBhZGQgQGFuZ3VsYXIvbG9jYWxpemVgIGZyb20gdGhlIEFuZ3VsYXIgQ0xJLlxuKEZvciBub24tQ0xJIHByb2plY3RzLCBhZGQgYGltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7YCB0byB5b3VyIGBwb2x5ZmlsbHMudHNgIGZpbGUuXG5Gb3Igc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFwcGxpY2F0aW9ucyBhZGQgdGhlIGltcG9ydCB0byB5b3VyIGBtYWluLnNlcnZlci50c2AgZmlsZS4pIil9KQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgQl89InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLFZfPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csal89InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsVV89InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxHXz1mdW5jdGlvbih0LC4uLmUpe2lmKEdfLnRyYW5zbGF0ZSl7Y29uc3Qgbj1HXy50cmFuc2xhdGUodCxlKTt0PW5bMF0sZT1uWzFdfWxldCBuPVdfKHRbMF0sdC5yYXdbMF0pO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKW4rPWVbby0xXStXXyh0W29dLHQucmF3W29dKTtyZXR1cm4gbn07ZnVuY3Rpb24gV18odCxlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCgwKT90LnN1YnN0cmluZygoZnVuY3Rpb24gbih0LGUpe2ZvcihsZXQgbj0xLG89MTtuPHQubGVuZ3RoO24rKyxvKyspaWYoIlxcIj09PWVbb10pbysrO2Vsc2UgaWYoIjoiPT09dFtuXSlyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoYFVudGVybWluYXRlZCAkbG9jYWxpemUgbWV0YWRhdGEgYmxvY2sgaW4gIiR7ZX0iLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LGUpKzEpOnR9KEJffHxVX3x8Vl98fGpfKS4kbG9jYWxpemU9R187Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmxldCBZXz1udWxsO2Z1bmN0aW9uIHFfKCl7cmV0dXJuIFlffQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgWl89bmV3IEdhKCJEb2N1bWVudFRva2VuIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFhfe2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBLXygpe3JldHVybiB2cihKXyl9WF8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhfKX0sWF8uybVwcm92PU1uKHtmYWN0b3J5OktfLHRva2VuOlhfLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWF8sW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJwbGF0Zm9ybSIsdXNlRmFjdG9yeTpLX31dfV0sbnVsbCxudWxsKSxuZXcgR2EoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7Y2xhc3MgSl8gZXh0ZW5kcyBYX3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIHFfKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe2NvbnN0IGU9cV8oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoInBvcHN0YXRlIix0LCExKSwoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCl9b25IYXNoQ2hhbmdlKHQpe2NvbnN0IGU9cV8oKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsIndpbmRvdyIpO3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQsITEpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIoImhhc2hjaGFuZ2UiLHQpfWdldCBocmVmKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaHJlZn1nZXQgcHJvdG9jb2woKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wcm90b2NvbH1nZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX1nZXQgcG9ydCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnBvcnR9Z2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucGF0aG5hbWV9Z2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH1nZXQgaGFzaCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhhc2h9c2V0IHBhdGhuYW1lKHQpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9dH1wdXNoU3RhdGUodCxlLG4pe1FfKCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG4pOnRoaXMubG9jYXRpb24uaGFzaD1ufXJlcGxhY2VTdGF0ZSh0LGUsbil7UV8oKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59Zm9yd2FyZCgpe3RoaXMuX2hpc3RvcnkuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9oaXN0b3J5LmJhY2soKX1oaXN0b3J5R28odD0wKXt0aGlzLl9oaXN0b3J5LmdvKHQpfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX2hpc3Rvcnkuc3RhdGV9fWZ1bmN0aW9uIFFfKCl7cmV0dXJuISF3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGV9ZnVuY3Rpb24gJF8oKXtyZXR1cm4gbmV3IEpfKHZyKFpfKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB0Qyh0LGUpe2lmKDA9PXQubGVuZ3RoKXJldHVybiBlO2lmKDA9PWUubGVuZ3RoKXJldHVybiB0O2xldCBuPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmbisrLGUuc3RhcnRzV2l0aCgiLyIpJiZuKyssMj09bj90K2Uuc3Vic3RyaW5nKDEpOjE9PW4/dCtlOnQrIi8iK2V9ZnVuY3Rpb24gZUModCl7Y29uc3QgZT10Lm1hdGNoKC8jfFw/fCQvKSxuPWUmJmUuaW5kZXh8fHQubGVuZ3RoO3JldHVybiB0LnNsaWNlKDAsbi0oIi8iPT09dFtuLTFdPzE6MCkpK3Quc2xpY2Uobil9ZnVuY3Rpb24gbkModCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovSl8uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpfKSh2cihaXykpfSxKXy7JtXByb3Y9TW4oe2ZhY3Rvcnk6JF8sdG9rZW46Sl8scHJvdmlkZWRJbjoicGxhdGZvcm0ifSksSl8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEpfLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicGxhdGZvcm0iLHVzZUZhY3Rvcnk6JF99XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpO2NsYXNzIG9De2hpc3RvcnlHbyh0KXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfX1mdW5jdGlvbiBpQyh0KXtjb25zdCBlPXZyKFpfKS5sb2NhdGlvbjtyZXR1cm4gbmV3IHJDKHZyKFhfKSxlJiZlLm9yaWdpbnx8IiIpfW9DLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvQyl9LG9DLsm1cHJvdj1Nbih7ZmFjdG9yeTppQyx0b2tlbjpvQyxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgob0MsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OmlDfV19XSxudWxsLG51bGwpO2NvbnN0IGFDPW5ldyBHYSgiYXBwQmFzZUhyZWYiKTtjbGFzcyByQyBleHRlbmRzIG9De2NvbnN0cnVjdG9yKHQsZSl7aWYoc3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnM9W10sbnVsbD09ZSYmKGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7dGhpcy5fYmFzZUhyZWY9ZX1uZ09uRGVzdHJveSgpe2Zvcig7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMubGVuZ3RoOyl0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wb3AoKSgpfW9uUG9wU3RhdGUodCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucHVzaCh0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCkpfWdldEJhc2VIcmVmKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfXByZXBhcmVFeHRlcm5hbFVybCh0KXtyZXR1cm4gdEModGhpcy5fYmFzZUhyZWYsdCl9cGF0aCh0PSExKXtjb25zdCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrbkModGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBuJiZ0P2Ake2V9JHtufWA6ZX1wdXNoU3RhdGUodCxlLG4sbyl7Y29uc3QgaT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChuK25DKG8pKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnB1c2hTdGF0ZSh0LGUsaSl9cmVwbGFjZVN0YXRlKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobituQyhvKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLGkpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbjtudWxsPT09KG49KGU9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbikuaGlzdG9yeUdvKXx8dm9pZCAwPT09bnx8bi5jYWxsKGUsdCl9fXJDLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyQykodnIoWF8pLHZyKGFDLDgpKX0sckMuybVwcm92PU1uKHt0b2tlbjpyQyxmYWN0b3J5OnJDLsm1ZmFjfSksckMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYX30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlthQ119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgockMsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhffSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W2FDXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHNDIGV4dGVuZHMgb0N7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249dCx0aGlzLl9iYXNlSHJlZj0iIix0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSxudWxsIT1lJiYodGhpcy5fYmFzZUhyZWY9ZSl9bmdPbkRlc3Ryb3koKXtmb3IoO3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLmxlbmd0aDspdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnMucG9wKCkoKX1vblBvcFN0YXRlKHQpe3RoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnB1c2godGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpKX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wYXRoKHQ9ITEpe2xldCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVsbD09ZSYmKGU9IiMiKSxlLmxlbmd0aD4wP2Uuc3Vic3RyaW5nKDEpOmV9cHJlcGFyZUV4dGVybmFsVXJsKHQpe2NvbnN0IGU9dEModGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJuIGUubGVuZ3RoPjA/IiMiK2U6ZX1wdXNoU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobituQyhvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxpKX1yZXBsYWNlU3RhdGUodCxlLG4sbyl7bGV0IGk9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobituQyhvKSk7MD09aS5sZW5ndGgmJihpPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxpKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfX1zQy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c0MpKHZyKFhfKSx2cihhQyw4KSl9LHNDLsm1cHJvdj1Nbih7dG9rZW46c0MsZmFjdG9yeTpzQy7JtWZhY30pLHNDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WF99LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbYUNdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHNDLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYX30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlthQ119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBsQ3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3N1YmplY3Q9bmV3IExoLHRoaXMuX3VybENoYW5nZUxpc3RlbmVycz1bXSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PXQ7Y29uc3Qgbj10aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmdldEJhc2VIcmVmKCk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj1lLHRoaXMuX2Jhc2VIcmVmPWVDKGRDKG4pKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5Lm9uUG9wU3RhdGUoKHQ9Pnt0aGlzLl9zdWJqZWN0LmVtaXQoe3VybDp0aGlzLnBhdGgoITApLHBvcDohMCxzdGF0ZTp0LnN0YXRlLHR5cGU6dC50eXBlfSl9KSl9cGF0aCh0PSExKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUodGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wYXRoKHQpKX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldFN0YXRlKCl9aXNDdXJyZW50UGF0aEVxdWFsVG8odCxlPSIiKXtyZXR1cm4gdGhpcy5wYXRoKCk9PXRoaXMubm9ybWFsaXplKHQrbkMoZSkpfW5vcm1hbGl6ZSh0KXtyZXR1cm4gbEMuc3RyaXBUcmFpbGluZ1NsYXNoKChmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHQmJm4uc3RhcnRzV2l0aCh0KT9uLnN1YnN0cmluZyh0Lmxlbmd0aCk6bn0pKHRoaXMuX2Jhc2VIcmVmLGRDKHQpKSl9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9Z28odCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K25DKGUpKSxuKX1yZXBsYWNlU3RhdGUodCxlPSIiLG49bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5yZXBsYWNlU3RhdGUobiwiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K25DKGUpKSxuKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG47bnVsbD09PShuPShlPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kpLmhpc3RvcnlHbyl8fHZvaWQgMD09PW58fG4uY2FsbChlLHQpfW9uVXJsQ2hhbmdlKHQpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZSgodD0+e3RoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0LnVybCx0LnN0YXRlKX0pKSl9X25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0PSIiLGUpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5mb3JFYWNoKChuPT5uKHQsZSkpKX1zdWJzY3JpYmUodCxlLG4pe3JldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZSh7bmV4dDp0LGVycm9yOmUsY29tcGxldGU6bn0pfX1mdW5jdGlvbiBjQygpe3JldHVybiBuZXcgbEModnIob0MpLHZyKFhfKSl9ZnVuY3Rpb24gZEModCl7cmV0dXJuIHQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbEMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxDKSh2cihvQyksdnIoWF8pKX0sbEMubm9ybWFsaXplUXVlcnlQYXJhbXM9bkMsbEMuam9pbldpdGhTbGFzaD10QyxsQy5zdHJpcFRyYWlsaW5nU2xhc2g9ZUMsbEMuybVwcm92PU1uKHtmYWN0b3J5OmNDLHRva2VuOmxDLHByb3ZpZGVkSW46InJvb3QifSksbEMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvQ30se3R5cGU6WF99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGxDLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTpjQ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOm9DfSx7dHlwZTpYX31dfSksbnVsbCk7Y29uc3QgcEM9e0FEUDpbdm9pZCAwLHZvaWQgMCwwXSxBRk46W3ZvaWQgMCx2b2lkIDAsMF0sQUxMOlt2b2lkIDAsdm9pZCAwLDBdLEFNRDpbdm9pZCAwLHZvaWQgMCwyXSxBT0E6W3ZvaWQgMCwiS3oiXSxBUlM6W3ZvaWQgMCwiJCJdLEFVRDpbIkEkIiwiJCJdLEJBTTpbdm9pZCAwLCJLTSJdLEJCRDpbdm9pZCAwLCIkIl0sQkRUOlt2b2lkIDAsIuCnsyJdLEJIRDpbdm9pZCAwLHZvaWQgMCwzXSxCSUY6W3ZvaWQgMCx2b2lkIDAsMF0sQk1EOlt2b2lkIDAsIiQiXSxCTkQ6W3ZvaWQgMCwiJCJdLEJPQjpbdm9pZCAwLCJCcyJdLEJSTDpbIlIkIl0sQlNEOlt2b2lkIDAsIiQiXSxCV1A6W3ZvaWQgMCwiUCJdLEJZTjpbdm9pZCAwLCLRgC4iLDJdLEJZUjpbdm9pZCAwLHZvaWQgMCwwXSxCWkQ6W3ZvaWQgMCwiJCJdLENBRDpbIkNBJCIsIiQiLDJdLENIRjpbdm9pZCAwLHZvaWQgMCwyXSxDTEY6W3ZvaWQgMCx2b2lkIDAsNF0sQ0xQOlt2b2lkIDAsIiQiLDBdLENOWTpbIkNOwqUiLCLCpSJdLENPUDpbdm9pZCAwLCIkIiwyXSxDUkM6W3ZvaWQgMCwi4oKhIiwyXSxDVUM6W3ZvaWQgMCwiJCJdLENVUDpbdm9pZCAwLCIkIl0sQ1pLOlt2b2lkIDAsIkvEjSIsMl0sREpGOlt2b2lkIDAsdm9pZCAwLDBdLERLSzpbdm9pZCAwLCJrciIsMl0sRE9QOlt2b2lkIDAsIiQiXSxFR1A6W3ZvaWQgMCwiRcKjIl0sRVNQOlt2b2lkIDAsIuKCpyIsMF0sRVVSOlsi4oKsIl0sRkpEOlt2b2lkIDAsIiQiXSxGS1A6W3ZvaWQgMCwiwqMiXSxHQlA6WyLCoyJdLEdFTDpbdm9pZCAwLCLigr4iXSxHSVA6W3ZvaWQgMCwiwqMiXSxHTkY6W3ZvaWQgMCwiRkciLDBdLEdUUTpbdm9pZCAwLCJRIl0sR1lEOlt2b2lkIDAsIiQiLDJdLEhLRDpbIkhLJCIsIiQiXSxITkw6W3ZvaWQgMCwiTCJdLEhSSzpbdm9pZCAwLCJrbiJdLEhVRjpbdm9pZCAwLCJGdCIsMl0sSURSOlt2b2lkIDAsIlJwIiwyXSxJTFM6WyLigqoiXSxJTlI6WyLigrkiXSxJUUQ6W3ZvaWQgMCx2b2lkIDAsMF0sSVJSOlt2b2lkIDAsdm9pZCAwLDBdLElTSzpbdm9pZCAwLCJrciIsMF0sSVRMOlt2b2lkIDAsdm9pZCAwLDBdLEpNRDpbdm9pZCAwLCIkIl0sSk9EOlt2b2lkIDAsdm9pZCAwLDNdLEpQWTpbIsKlIix2b2lkIDAsMF0sS0hSOlt2b2lkIDAsIuGfmyJdLEtNRjpbdm9pZCAwLCJDRiIsMF0sS1BXOlt2b2lkIDAsIuKCqSIsMF0sS1JXOlsi4oKpIix2b2lkIDAsMF0sS1dEOlt2b2lkIDAsdm9pZCAwLDNdLEtZRDpbdm9pZCAwLCIkIl0sS1pUOlt2b2lkIDAsIuKCuCJdLExBSzpbdm9pZCAwLCLigq0iLDBdLExCUDpbdm9pZCAwLCJMwqMiLDBdLExLUjpbdm9pZCAwLCJScyJdLExSRDpbdm9pZCAwLCIkIl0sTFRMOlt2b2lkIDAsIkx0Il0sTFVGOlt2b2lkIDAsdm9pZCAwLDBdLExWTDpbdm9pZCAwLCJMcyJdLExZRDpbdm9pZCAwLHZvaWQgMCwzXSxNR0E6W3ZvaWQgMCwiQXIiLDBdLE1HRjpbdm9pZCAwLHZvaWQgMCwwXSxNTUs6W3ZvaWQgMCwiSyIsMF0sTU5UOlt2b2lkIDAsIuKCriIsMl0sTVJPOlt2b2lkIDAsdm9pZCAwLDBdLE1VUjpbdm9pZCAwLCJScyIsMl0sTVhOOlsiTVgkIiwiJCJdLE1ZUjpbdm9pZCAwLCJSTSJdLE5BRDpbdm9pZCAwLCIkIl0sTkdOOlt2b2lkIDAsIuKCpiJdLE5JTzpbdm9pZCAwLCJDJCJdLE5PSzpbdm9pZCAwLCJrciIsMl0sTlBSOlt2b2lkIDAsIlJzIl0sTlpEOlsiTlokIiwiJCJdLE9NUjpbdm9pZCAwLHZvaWQgMCwzXSxQSFA6W3ZvaWQgMCwi4oKxIl0sUEtSOlt2b2lkIDAsIlJzIiwyXSxQTE46W3ZvaWQgMCwiesWCIl0sUFlHOlt2b2lkIDAsIuKCsiIsMF0sUk9OOlt2b2lkIDAsImxlaSJdLFJTRDpbdm9pZCAwLHZvaWQgMCwwXSxSVUI6W3ZvaWQgMCwi4oK9Il0sUlVSOlt2b2lkIDAsItGALiJdLFJXRjpbdm9pZCAwLCJSRiIsMF0sU0JEOlt2b2lkIDAsIiQiXSxTRUs6W3ZvaWQgMCwia3IiLDJdLFNHRDpbdm9pZCAwLCIkIl0sU0hQOlt2b2lkIDAsIsKjIl0sU0xMOlt2b2lkIDAsdm9pZCAwLDBdLFNPUzpbdm9pZCAwLHZvaWQgMCwwXSxTUkQ6W3ZvaWQgMCwiJCJdLFNTUDpbdm9pZCAwLCLCoyJdLFNURDpbdm9pZCAwLHZvaWQgMCwwXSxTVE46W3ZvaWQgMCwiRGIiXSxTWVA6W3ZvaWQgMCwiwqMiLDBdLFRIQjpbdm9pZCAwLCLguL8iXSxUTU06W3ZvaWQgMCx2b2lkIDAsMF0sVE5EOlt2b2lkIDAsdm9pZCAwLDNdLFRPUDpbdm9pZCAwLCJUJCJdLFRSTDpbdm9pZCAwLHZvaWQgMCwwXSxUUlk6W3ZvaWQgMCwi4oK6Il0sVFREOlt2b2lkIDAsIiQiXSxUV0Q6WyJOVCQiLCIkIiwyXSxUWlM6W3ZvaWQgMCx2b2lkIDAsMl0sVUFIOlt2b2lkIDAsIuKCtCJdLFVHWDpbdm9pZCAwLHZvaWQgMCwwXSxVU0Q6WyIkIl0sVVlJOlt2b2lkIDAsdm9pZCAwLDBdLFVZVTpbdm9pZCAwLCIkIl0sVVlXOlt2b2lkIDAsdm9pZCAwLDRdLFVaUzpbdm9pZCAwLHZvaWQgMCwyXSxWRUY6W3ZvaWQgMCwiQnMiLDJdLFZORDpbIuKCqyIsdm9pZCAwLDBdLFZVVjpbdm9pZCAwLHZvaWQgMCwwXSxYQUY6WyJGQ0ZBIix2b2lkIDAsMF0sWENEOlsiRUMkIiwiJCJdLFhPRjpbIkNGQSIsdm9pZCAwLDBdLFhQRjpbIkNGUEYiLHZvaWQgMCwwXSxYWFg6WyLCpCJdLFlFUjpbdm9pZCAwLHZvaWQgMCwwXSxaQVI6W3ZvaWQgMCwiUiJdLFpNSzpbdm9pZCAwLHZvaWQgMCwwXSxaTVc6W3ZvaWQgMCwiWksiXSxaV0Q6W3ZvaWQgMCx2b2lkIDAsMF19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgbUMsdUMsZkMsZ0MsaEMsYkMseUM7ZnVuY3Rpb24gX0ModCxlKXtyZXR1cm4gd0MoTHUodClbanUuRGF0ZUZvcm1hdF0sZSl9ZnVuY3Rpb24gQ0ModCxlKXtyZXR1cm4gd0MoTHUodClbanUuVGltZUZvcm1hdF0sZSl9ZnVuY3Rpb24gTUModCxlKXtyZXR1cm4gd0MoTHUodClbanUuRGF0ZVRpbWVGb3JtYXRdLGUpfWZ1bmN0aW9uIHZDKHQsZSl7Y29uc3Qgbj1MdSh0KSxvPW5banUuTnVtYmVyU3ltYm9sc11bZV07aWYodm9pZCAwPT09byl7aWYoZT09PWJDLkN1cnJlbmN5RGVjaW1hbClyZXR1cm4gbltqdS5OdW1iZXJTeW1ib2xzXVtiQy5EZWNpbWFsXTtpZihlPT09YkMuQ3VycmVuY3lHcm91cClyZXR1cm4gbltqdS5OdW1iZXJTeW1ib2xzXVtiQy5Hcm91cF19cmV0dXJuIG99ZnVuY3Rpb24geEModCxlKXtyZXR1cm4gTHUodClbanUuTnVtYmVyRm9ybWF0c11bZV19IShmdW5jdGlvbih0KXt0W3QuRGVjaW1hbD0wXT0iRGVjaW1hbCIsdFt0LlBlcmNlbnQ9MV09IlBlcmNlbnQiLHRbdC5DdXJyZW5jeT0yXT0iQ3VycmVuY3kiLHRbdC5TY2llbnRpZmljPTNdPSJTY2llbnRpZmljIn0pKG1DfHwobUM9e30pKSwoZnVuY3Rpb24odCl7dFt0Llplcm89MF09Ilplcm8iLHRbdC5PbmU9MV09Ik9uZSIsdFt0LlR3bz0yXT0iVHdvIix0W3QuRmV3PTNdPSJGZXciLHRbdC5NYW55PTRdPSJNYW55Iix0W3QuT3RoZXI9NV09Ik90aGVyIn0pKHVDfHwodUM9e30pKSwoZnVuY3Rpb24odCl7dFt0LkZvcm1hdD0wXT0iRm9ybWF0Iix0W3QuU3RhbmRhbG9uZT0xXT0iU3RhbmRhbG9uZSJ9KShmQ3x8KGZDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5OYXJyb3c9MF09Ik5hcnJvdyIsdFt0LkFiYnJldmlhdGVkPTFdPSJBYmJyZXZpYXRlZCIsdFt0LldpZGU9Ml09IldpZGUiLHRbdC5TaG9ydD0zXT0iU2hvcnQifSkoZ0N8fChnQz17fSkpLChmdW5jdGlvbih0KXt0W3QuU2hvcnQ9MF09IlNob3J0Iix0W3QuTWVkaXVtPTFdPSJNZWRpdW0iLHRbdC5Mb25nPTJdPSJMb25nIix0W3QuRnVsbD0zXT0iRnVsbCJ9KShoQ3x8KGhDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5EZWNpbWFsPTBdPSJEZWNpbWFsIix0W3QuR3JvdXA9MV09Ikdyb3VwIix0W3QuTGlzdD0yXT0iTGlzdCIsdFt0LlBlcmNlbnRTaWduPTNdPSJQZXJjZW50U2lnbiIsdFt0LlBsdXNTaWduPTRdPSJQbHVzU2lnbiIsdFt0Lk1pbnVzU2lnbj01XT0iTWludXNTaWduIix0W3QuRXhwb25lbnRpYWw9Nl09IkV4cG9uZW50aWFsIix0W3QuU3VwZXJzY3JpcHRpbmdFeHBvbmVudD03XT0iU3VwZXJzY3JpcHRpbmdFeHBvbmVudCIsdFt0LlBlck1pbGxlPThdPSJQZXJNaWxsZSIsdFt0WzEvMF09OV09IkluZmluaXR5Iix0W3QuTmFOPTEwXT0iTmFOIix0W3QuVGltZVNlcGFyYXRvcj0xMV09IlRpbWVTZXBhcmF0b3IiLHRbdC5DdXJyZW5jeURlY2ltYWw9MTJdPSJDdXJyZW5jeURlY2ltYWwiLHRbdC5DdXJyZW5jeUdyb3VwPTEzXT0iQ3VycmVuY3lHcm91cCJ9KShiQ3x8KGJDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5TdW5kYXk9MF09IlN1bmRheSIsdFt0Lk1vbmRheT0xXT0iTW9uZGF5Iix0W3QuVHVlc2RheT0yXT0iVHVlc2RheSIsdFt0LldlZG5lc2RheT0zXT0iV2VkbmVzZGF5Iix0W3QuVGh1cnNkYXk9NF09IlRodXJzZGF5Iix0W3QuRnJpZGF5PTVdPSJGcmlkYXkiLHRbdC5TYXR1cmRheT02XT0iU2F0dXJkYXkifSkoeUN8fCh5Qz17fSkpO2NvbnN0IE9DPUJ1O2Z1bmN0aW9uIFBDKHQpe2lmKCF0W2p1LkV4dHJhRGF0YV0pdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGV4dHJhIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICIke3RbanUuTG9jYWxlSWRdfSIuIFVzZSAicmVnaXN0ZXJMb2NhbGVEYXRhIiB0byBsb2FkIG5ldyBkYXRhLiBTZWUgdGhlICJJMThuIGd1aWRlIiBvbiBhbmd1bGFyLmlvIHRvIGtub3cgbW9yZS5gKX1mdW5jdGlvbiB3Qyh0LGUpe2ZvcihsZXQgbj1lO24+LTE7bi0tKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07dGhyb3cgbmV3IEVycm9yKCJMb2NhbGUgZGF0YSBBUEk6IGxvY2FsZSBkYXRhIHVuZGVmaW5lZCIpfWZ1bmN0aW9uIGtDKHQpe2NvbnN0W2Usbl09dC5zcGxpdCgiOiIpO3JldHVybntob3VyczorZSxtaW51dGVzOitufX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFNDPS9eKFxkezR9KS0/KFxkXGQpLT8oXGRcZCkoPzpUKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlwuKFxkKykpPyk/KT8oWnwoWystXSkoXGRcZCk6PyhcZFxkKSk/KT8kLyxEQz17fSxFQz0vKCg/OlteQkVHSExNT1NXWVphYmNkaG1zd3l6J10rKXwoPzonKD86W14nXXwnJykqJyl8KD86R3sxLDV9fHl7MSw0fXxZezEsNH18TXsxLDV9fEx7MSw1fXx3ezEsMn18V3sxfXxkezEsMn18RXsxLDZ9fGN7MSw2fXxhezEsNX18YnsxLDV9fEJ7MSw1fXxoezEsMn18SHsxLDJ9fG17MSwyfXxzezEsMn18U3sxLDN9fHp7MSw0fXxaezEsNX18T3sxLDR9KSkoW1xzXFNdKikvO3ZhciBSQyxBQyxUQztmdW5jdGlvbiBOQyh0LGUsbixvKXtsZXQgaT0oZnVuY3Rpb24gYSh0KXtpZihxQyh0KSlyZXR1cm4gdDtpZigibnVtYmVyIj09dHlwZW9mIHQmJiFpc05hTih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZih0PXQudHJpbSgpLC9eKFxkezR9KC1cZHsxLDJ9KC1cZHsxLDJ9KT8pPykkLy50ZXN0KHQpKXtjb25zdFtlLG49MSxvPTFdPXQuc3BsaXQoIi0iKS5tYXAoKHQ9Pit0KSk7cmV0dXJuIHpDKGUsbi0xLG8pfWNvbnN0IGU9cGFyc2VGbG9hdCh0KTtpZighaXNOYU4odC1lKSlyZXR1cm4gbmV3IERhdGUoZSk7bGV0IG47aWYobj10Lm1hdGNoKFNDKSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBEYXRlKDApO2xldCBuPTAsbz0wO2NvbnN0IGk9dFs4XT9lLnNldFVUQ0Z1bGxZZWFyOmUuc2V0RnVsbFllYXIsYT10WzhdP2Uuc2V0VVRDSG91cnM6ZS5zZXRIb3Vyczt0WzldJiYobj1OdW1iZXIodFs5XSt0WzEwXSksbz1OdW1iZXIodFs5XSt0WzExXSkpLGkuY2FsbChlLE51bWJlcih0WzFdKSxOdW1iZXIodFsyXSktMSxOdW1iZXIodFszXSkpO2NvbnN0IHI9TnVtYmVyKHRbNF18fDApLW4scz1OdW1iZXIodFs1XXx8MCktbyxsPU51bWJlcih0WzZdfHwwKSxjPU1hdGguZmxvb3IoMWUzKnBhcnNlRmxvYXQoIjAuIisodFs3XXx8MCkpKTtyZXR1cm4gYS5jYWxsKGUscixzLGwsYyksZX0pKG4pfWNvbnN0IG49bmV3IERhdGUodCk7aWYoIXFDKG4pKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNvbnZlcnQgIiR7dH0iIGludG8gYSBkYXRlYCk7cmV0dXJuIG59KSh0KTtlPUlDKG4sZSl8fGU7bGV0IHIscz1bXTtmb3IoO2U7KXtpZihyPUVDLmV4ZWMoZSksIXIpe3MucHVzaChlKTticmVha317cz1zLmNvbmNhdChyLnNsaWNlKDEpKTtjb25zdCB0PXMucG9wKCk7aWYoIXQpYnJlYWs7ZT10fX1sZXQgbD1pLmdldFRpbWV6b25lT2Zmc2V0KCk7byYmKGw9WUMobyxsKSxpPShmdW5jdGlvbiBjKHQsZSxuKXtjb25zdCBvPW4/LTE6MSxpPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZnVuY3Rpb24gYSh0LGUpe3JldHVybih0PW5ldyBEYXRlKHQuZ2V0VGltZSgpKSkuc2V0TWludXRlcyh0LmdldE1pbnV0ZXMoKStlKSx0fSkodCxvKihZQyhlLGkpLWkpKX0pKGksbywhMCkpO2xldCBkPSIiO3JldHVybiBzLmZvckVhY2goKHQ9Pntjb25zdCBlPShmdW5jdGlvbiBvKHQpe2lmKFdDW3RdKXJldHVybiBXQ1t0XTtsZXQgZTtzd2l0Y2godCl7Y2FzZSJHIjpjYXNlIkdHIjpjYXNlIkdHRyI6ZT1CQyhUQy5FcmFzLGdDLkFiYnJldmlhdGVkKTticmVhaztjYXNlIkdHR0ciOmU9QkMoVEMuRXJhcyxnQy5XaWRlKTticmVhaztjYXNlIkdHR0dHIjplPUJDKFRDLkVyYXMsZ0MuTmFycm93KTticmVhaztjYXNlInkiOmU9TEMoQUMuRnVsbFllYXIsMSwwLCExLCEwKTticmVhaztjYXNlInl5IjplPUxDKEFDLkZ1bGxZZWFyLDIsMCwhMCwhMCk7YnJlYWs7Y2FzZSJ5eXkiOmU9TEMoQUMuRnVsbFllYXIsMywwLCExLCEwKTticmVhaztjYXNlInl5eXkiOmU9TEMoQUMuRnVsbFllYXIsNCwwLCExLCEwKTticmVhaztjYXNlIlkiOmU9R0MoMSk7YnJlYWs7Y2FzZSJZWSI6ZT1HQygyLCEwKTticmVhaztjYXNlIllZWSI6ZT1HQygzKTticmVhaztjYXNlIllZWVkiOmU9R0MoNCk7YnJlYWs7Y2FzZSJNIjpjYXNlIkwiOmU9TEMoQUMuTW9udGgsMSwxKTticmVhaztjYXNlIk1NIjpjYXNlIkxMIjplPUxDKEFDLk1vbnRoLDIsMSk7YnJlYWs7Y2FzZSJNTU0iOmU9QkMoVEMuTW9udGhzLGdDLkFiYnJldmlhdGVkKTticmVhaztjYXNlIk1NTU0iOmU9QkMoVEMuTW9udGhzLGdDLldpZGUpO2JyZWFrO2Nhc2UiTU1NTU0iOmU9QkMoVEMuTW9udGhzLGdDLk5hcnJvdyk7YnJlYWs7Y2FzZSJMTEwiOmU9QkMoVEMuTW9udGhzLGdDLkFiYnJldmlhdGVkLGZDLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiTExMTCI6ZT1CQyhUQy5Nb250aHMsZ0MuV2lkZSxmQy5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTExMIjplPUJDKFRDLk1vbnRocyxnQy5OYXJyb3csZkMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJ3IjplPVVDKDEpO2JyZWFrO2Nhc2Uid3ciOmU9VUMoMik7YnJlYWs7Y2FzZSJXIjplPVVDKDEsITApO2JyZWFrO2Nhc2UiZCI6ZT1MQyhBQy5EYXRlLDEpO2JyZWFrO2Nhc2UiZGQiOmU9TEMoQUMuRGF0ZSwyKTticmVhaztjYXNlImMiOmNhc2UiY2MiOmU9TEMoQUMuRGF5LDEpO2JyZWFrO2Nhc2UiY2NjIjplPUJDKFRDLkRheXMsZ0MuQWJicmV2aWF0ZWQsZkMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJjY2NjIjplPUJDKFRDLkRheXMsZ0MuV2lkZSxmQy5TdGFuZGFsb25lKTticmVhaztjYXNlImNjY2NjIjplPUJDKFRDLkRheXMsZ0MuTmFycm93LGZDLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiY2NjY2NjIjplPUJDKFRDLkRheXMsZ0MuU2hvcnQsZkMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJFIjpjYXNlIkVFIjpjYXNlIkVFRSI6ZT1CQyhUQy5EYXlzLGdDLkFiYnJldmlhdGVkKTticmVhaztjYXNlIkVFRUUiOmU9QkMoVEMuRGF5cyxnQy5XaWRlKTticmVhaztjYXNlIkVFRUVFIjplPUJDKFRDLkRheXMsZ0MuTmFycm93KTticmVhaztjYXNlIkVFRUVFRSI6ZT1CQyhUQy5EYXlzLGdDLlNob3J0KTticmVhaztjYXNlImEiOmNhc2UiYWEiOmNhc2UiYWFhIjplPUJDKFRDLkRheVBlcmlvZHMsZ0MuQWJicmV2aWF0ZWQpO2JyZWFrO2Nhc2UiYWFhYSI6ZT1CQyhUQy5EYXlQZXJpb2RzLGdDLldpZGUpO2JyZWFrO2Nhc2UiYWFhYWEiOmU9QkMoVEMuRGF5UGVyaW9kcyxnQy5OYXJyb3cpO2JyZWFrO2Nhc2UiYiI6Y2FzZSJiYiI6Y2FzZSJiYmIiOmU9QkMoVEMuRGF5UGVyaW9kcyxnQy5BYmJyZXZpYXRlZCxmQy5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmIiOmU9QkMoVEMuRGF5UGVyaW9kcyxnQy5XaWRlLGZDLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiYmJiYmIiOmU9QkMoVEMuRGF5UGVyaW9kcyxnQy5OYXJyb3csZkMuU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJCIjpjYXNlIkJCIjpjYXNlIkJCQiI6ZT1CQyhUQy5EYXlQZXJpb2RzLGdDLkFiYnJldmlhdGVkLGZDLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJCQkJCIjplPUJDKFRDLkRheVBlcmlvZHMsZ0MuV2lkZSxmQy5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQkIiOmU9QkMoVEMuRGF5UGVyaW9kcyxnQy5OYXJyb3csZkMuRm9ybWF0LCEwKTticmVhaztjYXNlImgiOmU9TEMoQUMuSG91cnMsMSwtMTIpO2JyZWFrO2Nhc2UiaGgiOmU9TEMoQUMuSG91cnMsMiwtMTIpO2JyZWFrO2Nhc2UiSCI6ZT1MQyhBQy5Ib3VycywxKTticmVhaztjYXNlIkhIIjplPUxDKEFDLkhvdXJzLDIpO2JyZWFrO2Nhc2UibSI6ZT1MQyhBQy5NaW51dGVzLDEpO2JyZWFrO2Nhc2UibW0iOmU9TEMoQUMuTWludXRlcywyKTticmVhaztjYXNlInMiOmU9TEMoQUMuU2Vjb25kcywxKTticmVhaztjYXNlInNzIjplPUxDKEFDLlNlY29uZHMsMik7YnJlYWs7Y2FzZSJTIjplPUxDKEFDLkZyYWN0aW9uYWxTZWNvbmRzLDEpO2JyZWFrO2Nhc2UiU1MiOmU9TEMoQUMuRnJhY3Rpb25hbFNlY29uZHMsMik7YnJlYWs7Y2FzZSJTU1MiOmU9TEMoQUMuRnJhY3Rpb25hbFNlY29uZHMsMyk7YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjYXNlIlpaWiI6ZT1WQyhSQy5TaG9ydCk7YnJlYWs7Y2FzZSJaWlpaWiI6ZT1WQyhSQy5FeHRlbmRlZCk7YnJlYWs7Y2FzZSJPIjpjYXNlIk9PIjpjYXNlIk9PTyI6Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6ZT1WQyhSQy5TaG9ydEdNVCk7YnJlYWs7Y2FzZSJPT09PIjpjYXNlIlpaWloiOmNhc2Uienp6eiI6ZT1WQyhSQy5Mb25nKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBXQ1t0XT1lLGV9KSh0KTtkKz1lP2UoaSxuLGwpOiInJyI9PT10PyInIjp0LnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfSkpLGR9ZnVuY3Rpb24gekModCxlLG4pe2NvbnN0IG89bmV3IERhdGUoMCk7cmV0dXJuIG8uc2V0RnVsbFllYXIodCxlLG4pLG8uc2V0SG91cnMoMCwwLDApLG99ZnVuY3Rpb24gSUModCxlKXtjb25zdCBuPShmdW5jdGlvbiBvKHQpe3JldHVybiBMdSh0KVtqdS5Mb2NhbGVJZF19KSh0KTtpZihEQ1tuXT1EQ1tuXXx8e30sRENbbl1bZV0pcmV0dXJuIERDW25dW2VdO2xldCBpPSIiO3N3aXRjaChlKXtjYXNlInNob3J0RGF0ZSI6aT1fQyh0LGhDLlNob3J0KTticmVhaztjYXNlIm1lZGl1bURhdGUiOmk9X0ModCxoQy5NZWRpdW0pO2JyZWFrO2Nhc2UibG9uZ0RhdGUiOmk9X0ModCxoQy5Mb25nKTticmVhaztjYXNlImZ1bGxEYXRlIjppPV9DKHQsaEMuRnVsbCk7YnJlYWs7Y2FzZSJzaG9ydFRpbWUiOmk9Q0ModCxoQy5TaG9ydCk7YnJlYWs7Y2FzZSJtZWRpdW1UaW1lIjppPUNDKHQsaEMuTWVkaXVtKTticmVhaztjYXNlImxvbmdUaW1lIjppPUNDKHQsaEMuTG9uZyk7YnJlYWs7Y2FzZSJmdWxsVGltZSI6aT1DQyh0LGhDLkZ1bGwpO2JyZWFrO2Nhc2Uic2hvcnQiOmNvbnN0IGU9SUModCwic2hvcnRUaW1lIiksbj1JQyh0LCJzaG9ydERhdGUiKTtpPUhDKE1DKHQsaEMuU2hvcnQpLFtlLG5dKTticmVhaztjYXNlIm1lZGl1bSI6Y29uc3Qgbz1JQyh0LCJtZWRpdW1UaW1lIiksYT1JQyh0LCJtZWRpdW1EYXRlIik7aT1IQyhNQyh0LGhDLk1lZGl1bSksW28sYV0pO2JyZWFrO2Nhc2UibG9uZyI6Y29uc3Qgcj1JQyh0LCJsb25nVGltZSIpLHM9SUModCwibG9uZ0RhdGUiKTtpPUhDKE1DKHQsaEMuTG9uZyksW3Isc10pO2JyZWFrO2Nhc2UiZnVsbCI6Y29uc3QgbD1JQyh0LCJmdWxsVGltZSIpLGM9SUModCwiZnVsbERhdGUiKTtpPUhDKE1DKHQsaEMuRnVsbCksW2wsY10pfXJldHVybiBpJiYoRENbbl1bZV09aSksaX1mdW5jdGlvbiBIQyh0LGUpe3JldHVybiBlJiYodD10LnJlcGxhY2UoL1x7KFtefV0rKX0vZywoZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbCE9ZSYmbiBpbiBlP2Vbbl06dH0pKSksdH1mdW5jdGlvbiBGQyh0LGUsbj0iLSIsbyxpKXtsZXQgYT0iIjsodDwwfHxpJiZ0PD0wKSYmKGk/dD0xLXQ6KHQ9LXQsYT1uKSk7bGV0IHI9U3RyaW5nKHQpO2Zvcig7ci5sZW5ndGg8ZTspcj0iMCIrcjtyZXR1cm4gbyYmKHI9ci5zdWJzdHIoci5sZW5ndGgtZSkpLGErcn1mdW5jdGlvbiBMQyh0LGUsbj0wLG89ITEsaT0hMSl7cmV0dXJuIGZ1bmN0aW9uKGEscil7bGV0IHM9KGZ1bmN0aW9uIGwodCxlKXtzd2l0Y2godCl7Y2FzZSBBQy5GdWxsWWVhcjpyZXR1cm4gZS5nZXRGdWxsWWVhcigpO2Nhc2UgQUMuTW9udGg6cmV0dXJuIGUuZ2V0TW9udGgoKTtjYXNlIEFDLkRhdGU6cmV0dXJuIGUuZ2V0RGF0ZSgpO2Nhc2UgQUMuSG91cnM6cmV0dXJuIGUuZ2V0SG91cnMoKTtjYXNlIEFDLk1pbnV0ZXM6cmV0dXJuIGUuZ2V0TWludXRlcygpO2Nhc2UgQUMuU2Vjb25kczpyZXR1cm4gZS5nZXRTZWNvbmRzKCk7Y2FzZSBBQy5GcmFjdGlvbmFsU2Vjb25kczpyZXR1cm4gZS5nZXRNaWxsaXNlY29uZHMoKTtjYXNlIEFDLkRheTpyZXR1cm4gZS5nZXREYXkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBEYXRlVHlwZSB2YWx1ZSAiJHt0fSIuYCl9fSkodCxhKTtpZigobj4wfHxzPi1uKSYmKHMrPW4pLHQ9PT1BQy5Ib3VycykwPT09cyYmLTEyPT09biYmKHM9MTIpO2Vsc2UgaWYodD09PUFDLkZyYWN0aW9uYWxTZWNvbmRzKXJldHVybihmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIEZDKHQsMykuc3Vic3RyKDAsZSl9KShzLGUpO2NvbnN0IGQ9dkMocixiQy5NaW51c1NpZ24pO3JldHVybiBGQyhzLGUsZCxvLGkpfX1mdW5jdGlvbiBCQyh0LGUsbj1mQy5Gb3JtYXQsbz0hMSl7cmV0dXJuIGZ1bmN0aW9uKGksYSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4sbyxpLGEpe3N3aXRjaChuKXtjYXNlIFRDLk1vbnRoczpyZXR1cm4oZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz1MdSh0KSxpPXdDKFtvW2p1Lk1vbnRoc0Zvcm1hdF0sb1tqdS5Nb250aHNTdGFuZGFsb25lXV0sZSk7cmV0dXJuIHdDKGksbil9KShlLGksbylbdC5nZXRNb250aCgpXTtjYXNlIFRDLkRheXM6cmV0dXJuKGZ1bmN0aW9uIHModCxlLG4pe2NvbnN0IG89THUodCksaT13Qyhbb1tqdS5EYXlzRm9ybWF0XSxvW2p1LkRheXNTdGFuZGFsb25lXV0sZSk7cmV0dXJuIHdDKGksbil9KShlLGksbylbdC5nZXREYXkoKV07Y2FzZSBUQy5EYXlQZXJpb2RzOmNvbnN0IHI9dC5nZXRIb3VycygpLHM9dC5nZXRNaW51dGVzKCk7aWYoYSl7Y29uc3QgdD0oZnVuY3Rpb24gbCh0KXtjb25zdCBlPUx1KHQpO3JldHVybiBQQyhlKSwoZVtqdS5FeHRyYURhdGFdWzJdfHxbXSkubWFwKCh0PT4ic3RyaW5nIj09dHlwZW9mIHQ/a0ModCk6W2tDKHRbMF0pLGtDKHRbMV0pXSkpfSkoZSksbj0oZnVuY3Rpb24gYyh0LGUsbil7Y29uc3Qgbz1MdSh0KTtQQyhvKTtjb25zdCBpPXdDKFtvW2p1LkV4dHJhRGF0YV1bMF0sb1tqdS5FeHRyYURhdGFdWzFdXSxlKXx8W107cmV0dXJuIHdDKGksbil8fFtdfSkoZSxpLG8pLGE9dC5maW5kSW5kZXgoKHQ9PntpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdFtlLG5dPXQsbz1yPj1lLmhvdXJzJiZzPj1lLm1pbnV0ZXMsaT1yPG4uaG91cnN8fHI9PT1uLmhvdXJzJiZzPG4ubWludXRlcztpZihlLmhvdXJzPG4uaG91cnMpe2lmKG8mJmkpcmV0dXJuITB9ZWxzZSBpZihvfHxpKXJldHVybiEwfWVsc2UgaWYodC5ob3Vycz09PXImJnQubWludXRlcz09PXMpcmV0dXJuITA7cmV0dXJuITF9KSk7aWYoLTEhPT1hKXJldHVybiBuW2FdfXJldHVybihmdW5jdGlvbiBkKHQsZSxuKXtjb25zdCBvPUx1KHQpLGk9d0MoW29banUuRGF5UGVyaW9kc0Zvcm1hdF0sb1tqdS5EYXlQZXJpb2RzU3RhbmRhbG9uZV1dLGUpO3JldHVybiB3QyhpLG4pfSkoZSxpLG8pW3I8MTI/MDoxXTtjYXNlIFRDLkVyYXM6cmV0dXJuKGZ1bmN0aW9uIHAodCxlKXtyZXR1cm4gd0MoTHUodClbanUuRXJhc10sZSl9KShlLG8pW3QuZ2V0RnVsbFllYXIoKTw9MD8wOjFdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHRyYW5zbGF0aW9uIHR5cGUgJHtufWApfX0pKGksYSx0LGUsbixvKX19ZnVuY3Rpb24gVkModCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixvKXtjb25zdCBpPS0xKm8sYT12QyhuLGJDLk1pbnVzU2lnbikscj1pPjA/TWF0aC5mbG9vcihpLzYwKTpNYXRoLmNlaWwoaS82MCk7c3dpdGNoKHQpe2Nhc2UgUkMuU2hvcnQ6cmV0dXJuKGk+PTA/IisiOiIiKStGQyhyLDIsYSkrRkMoTWF0aC5hYnMoaSU2MCksMixhKTtjYXNlIFJDLlNob3J0R01UOnJldHVybiJHTVQiKyhpPj0wPyIrIjoiIikrRkMociwxLGEpO2Nhc2UgUkMuTG9uZzpyZXR1cm4iR01UIisoaT49MD8iKyI6IiIpK0ZDKHIsMixhKSsiOiIrRkMoTWF0aC5hYnMoaSU2MCksMixhKTtjYXNlIFJDLkV4dGVuZGVkOnJldHVybiAwPT09bz8iWiI6KGk+PTA/IisiOiIiKStGQyhyLDIsYSkrIjoiK0ZDKE1hdGguYWJzKGklNjApLDIsYSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gem9uZSB3aWR0aCAiJHt0fSJgKX19fWZ1bmN0aW9uIGpDKHQpe3JldHVybiB6Qyh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpLHQuZ2V0RGF0ZSgpKyg0LXQuZ2V0RGF5KCkpKX1mdW5jdGlvbiBVQyh0LGU9ITEpe3JldHVybiBmdW5jdGlvbihuLG8pe2xldCBpO2lmKGUpe2NvbnN0IHQ9bmV3IERhdGUobi5nZXRGdWxsWWVhcigpLG4uZ2V0TW9udGgoKSwxKS5nZXREYXkoKS0xLGU9bi5nZXREYXRlKCk7aT0xK01hdGguZmxvb3IoKGUrdCkvNyl9ZWxzZXtjb25zdCB0PWpDKG4pLGU9KGZ1bmN0aW9uIGEodCl7Y29uc3QgZT16Qyh0LDAsMSkuZ2V0RGF5KCk7cmV0dXJuIHpDKHQsMCwxKyhlPD00PzQ6MTEpLWUpfSkodC5nZXRGdWxsWWVhcigpKSxvPXQuZ2V0VGltZSgpLWUuZ2V0VGltZSgpO2k9MStNYXRoLnJvdW5kKG8vNjA0OGU1KX1yZXR1cm4gRkMoaSx0LHZDKG8sYkMuTWludXNTaWduKSl9fWZ1bmN0aW9uIEdDKHQsZT0hMSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7cmV0dXJuIEZDKGpDKG4pLmdldEZ1bGxZZWFyKCksdCx2QyhvLGJDLk1pbnVzU2lnbiksZSl9fSEoZnVuY3Rpb24odCl7dFt0LlNob3J0PTBdPSJTaG9ydCIsdFt0LlNob3J0R01UPTFdPSJTaG9ydEdNVCIsdFt0Lkxvbmc9Ml09IkxvbmciLHRbdC5FeHRlbmRlZD0zXT0iRXh0ZW5kZWQifSkoUkN8fChSQz17fSkpLChmdW5jdGlvbih0KXt0W3QuRnVsbFllYXI9MF09IkZ1bGxZZWFyIix0W3QuTW9udGg9MV09Ik1vbnRoIix0W3QuRGF0ZT0yXT0iRGF0ZSIsdFt0LkhvdXJzPTNdPSJIb3VycyIsdFt0Lk1pbnV0ZXM9NF09Ik1pbnV0ZXMiLHRbdC5TZWNvbmRzPTVdPSJTZWNvbmRzIix0W3QuRnJhY3Rpb25hbFNlY29uZHM9Nl09IkZyYWN0aW9uYWxTZWNvbmRzIix0W3QuRGF5PTddPSJEYXkifSkoQUN8fChBQz17fSkpLChmdW5jdGlvbih0KXt0W3QuRGF5UGVyaW9kcz0wXT0iRGF5UGVyaW9kcyIsdFt0LkRheXM9MV09IkRheXMiLHRbdC5Nb250aHM9Ml09Ik1vbnRocyIsdFt0LkVyYXM9M109IkVyYXMifSkoVEN8fChUQz17fSkpO2NvbnN0IFdDPXt9O2Z1bmN0aW9uIFlDKHQsZSl7dD10LnJlcGxhY2UoLzovZywiIik7Y29uc3Qgbj1EYXRlLnBhcnNlKCJKYW4gMDEsIDE5NzAgMDA6MDA6MDAgIit0KS82ZTQ7cmV0dXJuIGlzTmFOKG4pP2U6bn1mdW5jdGlvbiBxQyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTih0LnZhbHVlT2YoKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFpDPS9eKFxkKyk/XC4oKFxkKykoLShcZCspKT8pPyQvLFhDPSIuIixLQz0iMCI7ZnVuY3Rpb24gSkModCxlLG4sbyxpLGEscj0hMSl7bGV0IHM9IiIsbD0hMTtpZihpc0Zpbml0ZSh0KSl7bGV0IGM9KGZ1bmN0aW9uIGModCl7bGV0IGUsbixvLGksYSxyPU1hdGguYWJzKHQpKyIiLHM9MDtmb3IoKG49ci5pbmRleE9mKFhDKSk+LTEmJihyPXIucmVwbGFjZShYQywiIikpLChvPXIuc2VhcmNoKC9lL2kpKT4wPyhuPDAmJihuPW8pLG4rPStyLnNsaWNlKG8rMSkscj1yLnN1YnN0cmluZygwLG8pKTpuPDAmJihuPXIubGVuZ3RoKSxvPTA7ci5jaGFyQXQobyk9PT1LQztvKyspO2lmKG89PT0oYT1yLmxlbmd0aCkpZT1bMF0sbj0xO2Vsc2V7Zm9yKGEtLTtyLmNoYXJBdChhKT09PUtDOylhLS07Zm9yKG4tPW8sZT1bXSxpPTA7bzw9YTtvKyssaSsrKWVbaV09TnVtYmVyKHIuY2hhckF0KG8pKX1yZXR1cm4gbj4yMiYmKGU9ZS5zcGxpY2UoMCwyMSkscz1uLTEsbj0xKSx7ZGlnaXRzOmUsZXhwb25lbnQ6cyxpbnRlZ2VyTGVuOm59fSkodCk7ciYmKGM9KGZ1bmN0aW9uIGQodCl7aWYoMD09PXQuZGlnaXRzWzBdKXJldHVybiB0O2NvbnN0IGU9dC5kaWdpdHMubGVuZ3RoLXQuaW50ZWdlckxlbjtyZXR1cm4gdC5leHBvbmVudD90LmV4cG9uZW50Kz0yOigwPT09ZT90LmRpZ2l0cy5wdXNoKDAsMCk6MT09PWUmJnQuZGlnaXRzLnB1c2goMCksdC5pbnRlZ2VyTGVuKz0yKSx0fSkoYykpO2xldCBkPWUubWluSW50LHA9ZS5taW5GcmFjLG09ZS5tYXhGcmFjO2lmKGEpe2NvbnN0IHQ9YS5tYXRjaChaQyk7aWYobnVsbD09PXQpdGhyb3cgbmV3IEVycm9yKGAke2F9IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtjb25zdCBlPXRbMV0sbj10WzNdLG89dFs1XTtudWxsIT1lJiYoZD10TShlKSksbnVsbCE9biYmKHA9dE0obikpLG51bGwhPW8/bT10TShvKTpudWxsIT1uJiZwPm0mJihtPXApfSEoZnVuY3Rpb24gcCh0LGUsbil7aWYoZT5uKXRocm93IG5ldyBFcnJvcihgVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBmcmFjdGlvbiAoJHtlfSkgaXMgaGlnaGVyIHRoYW4gdGhlIG1heGltdW0gKCR7bn0pLmApO2xldCBvPXQuZGlnaXRzLGk9by5sZW5ndGgtdC5pbnRlZ2VyTGVuO2NvbnN0IGE9TWF0aC5taW4oTWF0aC5tYXgoZSxpKSxuKTtsZXQgcj1hK3QuaW50ZWdlckxlbixzPW9bcl07aWYocj4wKXtvLnNwbGljZShNYXRoLm1heCh0LmludGVnZXJMZW4scikpO2ZvcihsZXQgdD1yO3Q8by5sZW5ndGg7dCsrKW9bdF09MH1lbHNle2k9TWF0aC5tYXgoMCxpKSx0LmludGVnZXJMZW49MSxvLmxlbmd0aD1NYXRoLm1heCgxLHI9YSsxKSxvWzBdPTA7Zm9yKGxldCB0PTE7dDxyO3QrKylvW3RdPTB9aWYocz49NSlpZihyLTE8MCl7Zm9yKGxldCBlPTA7ZT5yO2UtLSlvLnVuc2hpZnQoMCksdC5pbnRlZ2VyTGVuKys7by51bnNoaWZ0KDEpLHQuaW50ZWdlckxlbisrfWVsc2Ugb1tyLTFdKys7Zm9yKDtpPE1hdGgubWF4KDAsYSk7aSsrKW8ucHVzaCgwKTtsZXQgbD0wIT09YTtjb25zdCBjPWUrdC5pbnRlZ2VyTGVuLGQ9by5yZWR1Y2VSaWdodCgoZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIG9bbl09KGUrPXQpPDEwP2U6ZS0xMCxsJiYoMD09PW9bbl0mJm4+PWM/by5wb3AoKTpsPSExKSxlPj0xMD8xOjB9KSwwKTtkJiYoby51bnNoaWZ0KGQpLHQuaW50ZWdlckxlbisrKX0pKGMscCxtKTtsZXQgdT1jLmRpZ2l0cyxmPWMuaW50ZWdlckxlbjtjb25zdCBnPWMuZXhwb25lbnQ7bGV0IGg9W107Zm9yKGw9dS5ldmVyeSgodD0+IXQpKTtmPGQ7ZisrKXUudW5zaGlmdCgwKTtmb3IoO2Y8MDtmKyspdS51bnNoaWZ0KDApO2Y+MD9oPXUuc3BsaWNlKGYsdS5sZW5ndGgpOihoPXUsdT1bMF0pO2NvbnN0IGI9W107Zm9yKHUubGVuZ3RoPj1lLmxnU2l6ZSYmYi51bnNoaWZ0KHUuc3BsaWNlKC1lLmxnU2l6ZSx1Lmxlbmd0aCkuam9pbigiIikpO3UubGVuZ3RoPmUuZ1NpemU7KWIudW5zaGlmdCh1LnNwbGljZSgtZS5nU2l6ZSx1Lmxlbmd0aCkuam9pbigiIikpO3UubGVuZ3RoJiZiLnVuc2hpZnQodS5qb2luKCIiKSkscz1iLmpvaW4odkMobixvKSksaC5sZW5ndGgmJihzKz12QyhuLGkpK2guam9pbigiIikpLGcmJihzKz12QyhuLGJDLkV4cG9uZW50aWFsKSsiKyIrZyl9ZWxzZSBzPXZDKG4sYkMuSW5maW5pdHkpO3JldHVybiBzPXQ8MCYmIWw/ZS5uZWdQcmUrcytlLm5lZ1N1ZjplLnBvc1ByZStzK2UucG9zU3VmLHN9ZnVuY3Rpb24gUUModCxlLG4pe3JldHVybiBKQyh0LCRDKHhDKGUsbUMuRGVjaW1hbCksdkMoZSxiQy5NaW51c1NpZ24pKSxlLGJDLkdyb3VwLGJDLkRlY2ltYWwsbil9ZnVuY3Rpb24gJEModCxlPSItIil7Y29uc3Qgbj17bWluSW50OjEsbWluRnJhYzowLG1heEZyYWM6MCxwb3NQcmU6IiIscG9zU3VmOiIiLG5lZ1ByZToiIixuZWdTdWY6IiIsZ1NpemU6MCxsZ1NpemU6MH0sbz10LnNwbGl0KCI7IiksaT1vWzBdLGE9b1sxXSxyPS0xIT09aS5pbmRleE9mKFhDKT9pLnNwbGl0KFhDKTpbaS5zdWJzdHJpbmcoMCxpLmxhc3RJbmRleE9mKEtDKSsxKSxpLnN1YnN0cmluZyhpLmxhc3RJbmRleE9mKEtDKSsxKV0scz1yWzBdLGw9clsxXXx8IiI7bi5wb3NQcmU9cy5zdWJzdHIoMCxzLmluZGV4T2YoIiMiKSk7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IGU9bC5jaGFyQXQodCk7ZT09PUtDP24ubWluRnJhYz1uLm1heEZyYWM9dCsxOiIjIj09PWU/bi5tYXhGcmFjPXQrMTpuLnBvc1N1Zis9ZX1jb25zdCBjPXMuc3BsaXQoIiwiKTtpZihuLmdTaXplPWNbMV0/Y1sxXS5sZW5ndGg6MCxuLmxnU2l6ZT1jWzJdfHxjWzFdPyhjWzJdfHxjWzFdKS5sZW5ndGg6MCxhKXtjb25zdCB0PWkubGVuZ3RoLW4ucG9zUHJlLmxlbmd0aC1uLnBvc1N1Zi5sZW5ndGgsZT1hLmluZGV4T2YoIiMiKTtuLm5lZ1ByZT1hLnN1YnN0cigwLGUpLnJlcGxhY2UoLycvZywiIiksbi5uZWdTdWY9YS5zdWJzdHIoZSt0KS5yZXBsYWNlKC8nL2csIiIpfWVsc2Ugbi5uZWdQcmU9ZStuLnBvc1ByZSxuLm5lZ1N1Zj1uLnBvc1N1ZjtyZXR1cm4gbn1mdW5jdGlvbiB0TSh0KXtjb25zdCBlPXBhcnNlSW50KHQpO2lmKGlzTmFOKGUpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnRlZ2VyIGxpdGVyYWwgd2hlbiBwYXJzaW5nICIrdCk7cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGVNe31mdW5jdGlvbiBuTSh0LGUsbixvKXtsZXQgaT1gPSR7dH1gO2lmKGUuaW5kZXhPZihpKT4tMSlyZXR1cm4gaTtpZihpPW4uZ2V0UGx1cmFsQ2F0ZWdvcnkodCxvKSxlLmluZGV4T2YoaSk+LTEpcmV0dXJuIGk7aWYoZS5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKGBObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIiR7dH0iYCl9Y2xhc3Mgb00gZXh0ZW5kcyBlTXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubG9jYWxlPXR9Z2V0UGx1cmFsQ2F0ZWdvcnkodCxlKXtzd2l0Y2goT0MoZXx8dGhpcy5sb2NhbGUpKHQpKXtjYXNlIHVDLlplcm86cmV0dXJuInplcm8iO2Nhc2UgdUMuT25lOnJldHVybiJvbmUiO2Nhc2UgdUMuVHdvOnJldHVybiJ0d28iO2Nhc2UgdUMuRmV3OnJldHVybiJmZXciO2Nhc2UgdUMuTWFueTpyZXR1cm4ibWFueSI7ZGVmYXVsdDpyZXR1cm4ib3RoZXIifX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBpTSh0LGUpe2U9ZW5jb2RlVVJJQ29tcG9uZW50KGUpO2Zvcihjb25zdCBuIG9mIHQuc3BsaXQoIjsiKSl7Y29uc3QgdD1uLmluZGV4T2YoIj0iKSxbbyxpXT0tMT09dD9bbiwiIl06W24uc2xpY2UoMCx0KSxuLnNsaWNlKHQrMSldO2lmKG8udHJpbSgpPT09ZSlyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGkpfXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9vTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b00pKHZyKFd5KSl9LG9NLsm1cHJvdj1Nbih7dG9rZW46b00sZmFjdG9yeTpvTS7JtWZhY30pLG9NLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1d5XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvTSxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1d5XX1dfV19KSxudWxsKTtjbGFzcyBhTXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURpZmZlcnM9ZSx0aGlzLl9uZ0VsPW4sdGhpcy5fcmVuZGVyZXI9byx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5faW5pdGlhbENsYXNzZXM9W10sdGhpcy5fcmF3Q2xhc3M9bnVsbH1zZXQga2xhc3ModCl7dGhpcy5fcmVtb3ZlQ2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKX1zZXQgbmdDbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5faW5pdGlhbENsYXNzZXMpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6dCx0aGlzLl9yYXdDbGFzcyYmKE5wKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVyYWJsZURpZmZlcj10aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCk6dGhpcy5fa2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7Y29uc3QgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXtjb25zdCB0PXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKHQpfX1fYXBwbHlLZXlWYWx1ZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpKSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9Pnt0LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHQua2V5LCExKX0pKX1fYXBwbHlJdGVyYWJsZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0Lml0ZW0pdGhyb3cgbmV3IEVycm9yKGBOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1MgY2xhc3NlcyBleHByZXNzZWQgYXMgc3RyaW5ncywgZ290ICR7R2UodC5pdGVtKX1gKTt0aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITApfSkpLHQuZm9yRWFjaFJlbW92ZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITEpKSl9X2FwcGx5Q2xhc3Nlcyh0KXt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQsITApKSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+dGhpcy5fdG9nZ2xlQ2xhc3MoZSwhIXRbZV0pKSkpfV9yZW1vdmVDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaCgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModCwhMSkpKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LCExKSkpKX1fdG9nZ2xlQ2xhc3ModCxlKXsodD10LnRyaW0oKSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKCh0PT57ZT90aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHQpfSkpfX1hTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YU0pKFNtKEhnKSxTbShMZyksU20oaGcpLFNtKENnKSl9LGFNLsm1ZGlyPWxvKHt0eXBlOmFNLHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9fSksYU0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpIZ30se3R5cGU6TGd9LHt0eXBlOmhnfSx7dHlwZTpDZ31dLGFNLnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6eHksYXJnczpbImNsYXNzIl19XSxuZ0NsYXNzOlt7dHlwZTp4eSxhcmdzOlsibmdDbGFzcyJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYU0sW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW25nQ2xhc3NdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkhnfSx7dHlwZTpMZ30se3R5cGU6aGd9LHt0eXBlOkNnfV19KSx7a2xhc3M6W3t0eXBlOnh5LGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6eHksYXJnczpbIm5nQ2xhc3MiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyByTXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5fbW9kdWxlUmVmPW51bGx9bmdPbkNoYW5nZXModCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe2NvbnN0IGU9dGhpcy5uZ0NvbXBvbmVudE91dGxldEluamVjdG9yfHx0aGlzLl92aWV3Q29udGFpbmVyUmVmLnBhcmVudEluamVjdG9yO2lmKHQubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkpaWYodGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpLHRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3Rvcnkpe2NvbnN0IHQ9ZS5nZXQodGgpO3RoaXMuX21vZHVsZVJlZj10aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5LmNyZWF0ZSh0LmluamVjdG9yKX1lbHNlIHRoaXMuX21vZHVsZVJlZj1udWxsO2NvbnN0IG49KHRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KHVnKSkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVmPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KG4sdGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGgsZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fW5nT25EZXN0cm95KCl7dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfX1yTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ck0pKFNtKGVoKSl9LHJNLsm1ZGlyPWxvKHt0eXBlOnJNLHNlbGVjdG9yczpbWyIiLCJuZ0NvbXBvbmVudE91dGxldCIsIiJdXSxpbnB1dHM6e25nQ29tcG9uZW50T3V0bGV0OiJuZ0NvbXBvbmVudE91dGxldCIsbmdDb21wb25lbnRPdXRsZXRJbmplY3RvcjoibmdDb21wb25lbnRPdXRsZXRJbmplY3RvciIsbmdDb21wb25lbnRPdXRsZXRDb250ZW50OiJuZ0NvbXBvbmVudE91dGxldENvbnRlbnQiLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5OiJuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSJ9LGZlYXR1cmVzOltCb119KSxyTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmVofV0sck0ucHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTp4eX1dLG5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3I6W3t0eXBlOnh5fV0sbmdDb21wb25lbnRPdXRsZXRDb250ZW50Olt7dHlwZTp4eX1dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHJNLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltuZ0NvbXBvbmVudE91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZWh9XX0pLHtuZ0NvbXBvbmVudE91dGxldDpbe3R5cGU6eHl9XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTp4eX1dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6eHl9XSxuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6eHl9XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgc017Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy4kaW1wbGljaXQ9dCx0aGlzLm5nRm9yT2Y9ZSx0aGlzLmluZGV4PW4sdGhpcy5jb3VudD1vfWdldCBmaXJzdCgpe3JldHVybiAwPT09dGhpcy5pbmRleH1nZXQgbGFzdCgpe3JldHVybiB0aGlzLmluZGV4PT09dGhpcy5jb3VudC0xfWdldCBldmVuKCl7cmV0dXJuIHRoaXMuaW5kZXglMj09MH1nZXQgb2RkKCl7cmV0dXJuIXRoaXMuZXZlbn19Y2xhc3MgbE17Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl90ZW1wbGF0ZT1lLHRoaXMuX2RpZmZlcnM9bix0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKHQpe3RoaXMuX25nRm9yT2Y9dCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeSh0KXsidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8bnVsbD09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHR8fGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGB0cmFja0J5IG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9LiBTZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vTmdGb3JPZiNjaGFuZ2UtcHJvcGFnYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IG5nRm9yVHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IG5nRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX3RlbXBsYXRlPXQpfW5nRG9DaGVjaygpe2lmKHRoaXMuX25nRm9yT2ZEaXJ0eSl7dGhpcy5fbmdGb3JPZkRpcnR5PSExO2NvbnN0IHQ9dGhpcy5fbmdGb3JPZjtpZighdGhpcy5fZGlmZmVyJiZ0KXRyeXt0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSh0aGlzLm5nRm9yVHJhY2tCeSl9Y2F0Y2goZSl7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHsoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5uYW1lfHx0eXBlb2YgdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KX0nLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLmApfX1pZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdGb3JPZik7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fYXBwbHlDaGFuZ2VzKHQpe2NvbnN0IGU9W107dC5mb3JFYWNoT3BlcmF0aW9uKCgodCxuLG8pPT57aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBuPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlLG5ldyBzTShudWxsLHRoaXMuX25nRm9yT2YsLTEsLTEpLG51bGw9PT1vP3ZvaWQgMDpvKSxpPW5ldyBjTSh0LG4pO2UucHVzaChpKX1lbHNlIGlmKG51bGw9PW8pdGhpcy5fdmlld0NvbnRhaW5lci5yZW1vdmUobnVsbD09PW4/dm9pZCAwOm4pO2Vsc2UgaWYobnVsbCE9PW4pe2NvbnN0IGk9dGhpcy5fdmlld0NvbnRhaW5lci5nZXQobik7dGhpcy5fdmlld0NvbnRhaW5lci5tb3ZlKGksbyk7Y29uc3QgYT1uZXcgY00odCxpKTtlLnB1c2goYSl9fSkpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuX3BlclZpZXdDaGFuZ2UoZVt0XS52aWV3LGVbdF0ucmVjb3JkKTtmb3IobGV0IHQ9MCxlPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lci5nZXQodCk7bi5jb250ZXh0LmluZGV4PXQsbi5jb250ZXh0LmNvdW50PWUsbi5jb250ZXh0Lm5nRm9yT2Y9dGhpcy5fbmdGb3JPZn10LmZvckVhY2hJZGVudGl0eUNoYW5nZSgodD0+e3RoaXMuX3ZpZXdDb250YWluZXIuZ2V0KHQuY3VycmVudEluZGV4KS5jb250ZXh0LiRpbXBsaWNpdD10Lml0ZW19KSl9X3BlclZpZXdDaGFuZ2UodCxlKXt0LmNvbnRleHQuJGltcGxpY2l0PWUuaXRlbX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZCh0LGUpe3JldHVybiEwfX1sTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bE0pKFNtKGVoKSxTbShYZyksU20oSGcpKX0sbE0uybVkaXI9bG8oe3R5cGU6bE0sc2VsZWN0b3JzOltbIiIsIm5nRm9yIiwiIiwibmdGb3JPZiIsIiJdXSxpbnB1dHM6e25nRm9yT2Y6Im5nRm9yT2YiLG5nRm9yVHJhY2tCeToibmdGb3JUcmFja0J5IixuZ0ZvclRlbXBsYXRlOiJuZ0ZvclRlbXBsYXRlIn19KSxsTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmVofSx7dHlwZTpYZ30se3R5cGU6SGd9XSxsTS5wcm9wRGVjb3JhdG9ycz17bmdGb3JPZjpbe3R5cGU6eHl9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOnh5fV0sbmdGb3JUZW1wbGF0ZTpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsTSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdGb3JdW25nRm9yT2ZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofSx7dHlwZTpYZ30se3R5cGU6SGd9XX0pLHtuZ0Zvck9mOlt7dHlwZTp4eX1dLG5nRm9yVHJhY2tCeTpbe3R5cGU6eHl9XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgY017Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlY29yZD10LHRoaXMudmlldz1lfX1jbGFzcyBkTXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl9jb250ZXh0PW5ldyBwTSx0aGlzLl90aGVuVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9bnVsbCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmPWV9c2V0IG5nSWYodCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ9dGhpcy5fY29udGV4dC5uZ0lmPXQsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmVGhlbih0KXttTSgibmdJZlRoZW4iLHQpLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj10LHRoaXMuX3RoZW5WaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfXNldCBuZ0lmRWxzZSh0KXttTSgibmdJZkVsc2UiLHQpLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfV91cGRhdGVWaWV3KCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQsZSl7cmV0dXJuITB9fWRNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkTSkoU20oZWgpLFNtKFhnKSl9LGRNLsm1ZGlyPWxvKHt0eXBlOmRNLHNlbGVjdG9yczpbWyIiLCJuZ0lmIiwiIl1dLGlucHV0czp7bmdJZjoibmdJZiIsbmdJZlRoZW46Im5nSWZUaGVuIixuZ0lmRWxzZToibmdJZkVsc2UifX0pLGRNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZWh9LHt0eXBlOlhnfV0sZE0ucHJvcERlY29yYXRvcnM9e25nSWY6W3t0eXBlOnh5fV0sbmdJZlRoZW46W3t0eXBlOnh5fV0sbmdJZkVsc2U6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZE0sW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW25nSWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofSx7dHlwZTpYZ31dfSkse25nSWY6W3t0eXBlOnh5fV0sbmdJZlRoZW46W3t0eXBlOnh5fV0sbmdJZkVsc2U6W3t0eXBlOnh5fV19KTtjbGFzcyBwTXtjb25zdHJ1Y3Rvcigpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9fWZ1bmN0aW9uIG1NKHQsZSl7aWYoZSYmIWUuY3JlYXRlRW1iZWRkZWRWaWV3KXRocm93IG5ldyBFcnJvcihgJHt0fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYsIGJ1dCByZWNlaXZlZCAnJHtHZShlKX0nLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB1TXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl90ZW1wbGF0ZVJlZj1lLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZSh0KXt0JiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiF0JiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ryb3koKX19Y2xhc3MgZk17Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaCh0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQodCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX1fbWF0Y2hDYXNlKHQpe2NvbnN0IGU9dD09dGhpcy5fbmdTd2l0Y2g7cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8ZSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RDYXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLGV9X3VwZGF0ZURlZmF1bHRDYXNlcyh0KXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9dDtmb3IobGV0IGU9MDtlPHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7ZSsrKXRoaXMuX2RlZmF1bHRWaWV3c1tlXS5lbmZvcmNlU3RhdGUodCl9fX1mTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Zk0pfSxmTS7JtWRpcj1sbyh7dHlwZTpmTSxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifX0pLGZNLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChmTSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmdTd2l0Y2g6W3t0eXBlOnh5fV19KTtjbGFzcyBnTXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uZ1N3aXRjaD1uLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxiTSgibmdTd2l0Y2hDYXNlIiwiTmdTd2l0Y2hDYXNlIiksbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IHVNKHQsZSl9bmdEb0NoZWNrKCl7dGhpcy5fdmlldy5lbmZvcmNlU3RhdGUodGhpcy5uZ1N3aXRjaC5fbWF0Y2hDYXNlKHRoaXMubmdTd2l0Y2hDYXNlKSl9fWdNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTSkoU20oZWgpLFNtKFhnKSxTbShmTSw5KSl9LGdNLsm1ZGlyPWxvKHt0eXBlOmdNLHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9fSksZ00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH0se3R5cGU6WGd9LHt0eXBlOmZNLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV0sZ00ucHJvcERlY29yYXRvcnM9e25nU3dpdGNoQ2FzZTpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnTSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hDYXNlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTplaH0se3R5cGU6WGd9LHt0eXBlOmZNLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV19KSx7bmdTd2l0Y2hDYXNlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgaE17Y29uc3RydWN0b3IodCxlLG4peyJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxufHxiTSgibmdTd2l0Y2hEZWZhdWx0IiwiTmdTd2l0Y2hEZWZhdWx0Iiksbi5fYWRkRGVmYXVsdChuZXcgdU0odCxlKSl9fWZ1bmN0aW9uIGJNKHQsZSl7dGhyb3cgbmV3IEtlKCIzMDUiLGBBbiBlbGVtZW50IHdpdGggdGhlICIke3R9IiBhdHRyaWJ1dGUgKG1hdGNoaW5nIHRoZSAiJHtlfSIgZGlyZWN0aXZlKSBtdXN0IGJlIGxvY2F0ZWQgaW5zaWRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgIm5nU3dpdGNoIiBhdHRyaWJ1dGUgKG1hdGNoaW5nICJOZ1N3aXRjaCIgZGlyZWN0aXZlKWApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9oTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aE0pKFNtKGVoKSxTbShYZyksU20oZk0sOSkpfSxoTS7JtWRpcj1sbyh7dHlwZTpoTSxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2hEZWZhdWx0IiwiIl1dfSksaE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH0se3R5cGU6WGd9LHt0eXBlOmZNLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChoTSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hEZWZhdWx0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTplaH0se3R5cGU6WGd9LHt0eXBlOmZNLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV19KSxudWxsKTtjbGFzcyB5TXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dCx0aGlzLl9jYXNlVmlld3M9e319c2V0IG5nUGx1cmFsKHQpe3RoaXMuX3N3aXRjaFZhbHVlPXQsdGhpcy5fdXBkYXRlVmlldygpfWFkZENhc2UodCxlKXt0aGlzLl9jYXNlVmlld3NbdF09ZX1fdXBkYXRlVmlldygpe3RoaXMuX2NsZWFyVmlld3MoKTtjb25zdCB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1uTSh0aGlzLl9zd2l0Y2hWYWx1ZSx0LHRoaXMuX2xvY2FsaXphdGlvbik7dGhpcy5fYWN0aXZhdGVWaWV3KHRoaXMuX2Nhc2VWaWV3c1tlXSl9X2NsZWFyVmlld3MoKXt0aGlzLl9hY3RpdmVWaWV3JiZ0aGlzLl9hY3RpdmVWaWV3LmRlc3Ryb3koKX1fYWN0aXZhdGVWaWV3KHQpe3QmJih0aGlzLl9hY3RpdmVWaWV3PXQsdGhpcy5fYWN0aXZlVmlldy5jcmVhdGUoKSl9fXlNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5TSkoU20oZU0pKX0seU0uybVkaXI9bG8oe3R5cGU6eU0sc2VsZWN0b3JzOltbIiIsIm5nUGx1cmFsIiwiIl1dLGlucHV0czp7bmdQbHVyYWw6Im5nUGx1cmFsIn19KSx5TS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmVNfV0seU0ucHJvcERlY29yYXRvcnM9e25nUGx1cmFsOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHlNLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltuZ1BsdXJhbF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZU19XX0pLHtuZ1BsdXJhbDpbe3R5cGU6eHl9XX0pO2NsYXNzIF9Ne2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMudmFsdWU9dDtjb25zdCBpPSFpc05hTihOdW1iZXIodCkpO28uYWRkQ2FzZShpP2A9JHt0fWA6dCxuZXcgdU0obixlKSl9fV9NLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfTSkoTmEoIm5nUGx1cmFsQ2FzZSIpLFNtKFhnKSxTbShlaCksU20oeU0sMSkpfSxfTS7JtWRpcj1sbyh7dHlwZTpfTSxzZWxlY3RvcnM6W1siIiwibmdQbHVyYWxDYXNlIiwiIl1dfSksX00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOlhnfSx7dHlwZTplaH0se3R5cGU6eU0sZGVjb3JhdG9yczpbe3R5cGU6UnJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoX00sW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsQ2FzZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJuZ1BsdXJhbENhc2UiXX1dfSx7dHlwZTpYZ30se3R5cGU6ZWh9LHt0eXBlOnlNLGRlY29yYXRvcnM6W3t0eXBlOlJyfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ017Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX25nRWw9dCx0aGlzLl9kaWZmZXJzPWUsdGhpcy5fcmVuZGVyZXI9bix0aGlzLl9uZ1N0eWxlPW51bGwsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nU3R5bGUodCl7dGhpcy5fbmdTdHlsZT10LCF0aGlzLl9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9kaWZmZXIpe2NvbnN0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fbmdTdHlsZSk7dCYmdGhpcy5fYXBwbHlDaGFuZ2VzKHQpfX1fc2V0U3R5bGUodCxlKXtjb25zdFtuLG9dPXQuc3BsaXQoIi4iKTtudWxsIT0oZT1udWxsIT1lJiZvP2Ake2V9JHtvfWA6ZSk/dGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4sZSk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LG4pfV9hcHBseUNoYW5nZXModCl7dC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9PnRoaXMuX3NldFN0eWxlKHQua2V5LG51bGwpKSksdC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fc2V0U3R5bGUodC5rZXksdC5jdXJyZW50VmFsdWUpKSl9fUNNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDTSkoU20oaGcpLFNtKExnKSxTbShDZykpfSxDTS7JtWRpcj1sbyh7dHlwZTpDTSxzZWxlY3RvcnM6W1siIiwibmdTdHlsZSIsIiJdXSxpbnB1dHM6e25nU3R5bGU6Im5nU3R5bGUifX0pLENNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOkxnfSx7dHlwZTpDZ31dLENNLnByb3BEZWNvcmF0b3JzPXtuZ1N0eWxlOlt7dHlwZTp4eSxhcmdzOlsibmdTdHlsZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQ00sW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW25nU3R5bGVdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpMZ30se3R5cGU6Q2d9XX0pLHtuZ1N0eWxlOlt7dHlwZTp4eSxhcmdzOlsibmdTdHlsZSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE1Ne2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl92aWV3UmVmPW51bGwsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dD1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldD1udWxsfW5nT25DaGFuZ2VzKHQpe2lmKHQubmdUZW1wbGF0ZU91dGxldCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmO3RoaXMuX3ZpZXdSZWYmJnQucmVtb3ZlKHQuaW5kZXhPZih0aGlzLl92aWV3UmVmKSksdGhpcy5fdmlld1JlZj10aGlzLm5nVGVtcGxhdGVPdXRsZXQ/dC5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5uZ1RlbXBsYXRlT3V0bGV0LHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpOm51bGx9ZWxzZSB0aGlzLl92aWV3UmVmJiZ0Lm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiZ0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0JiYodGhpcy5fdmlld1JlZi5jb250ZXh0PXRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfX1NTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TU0pKFNtKGVoKSl9LE1NLsm1ZGlyPWxvKHt0eXBlOk1NLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0In0sZmVhdHVyZXM6W0JvXX0pLE1NLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZWh9XSxNTS5wcm9wRGVjb3JhdG9ycz17bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6W3t0eXBlOnh5fV0sbmdUZW1wbGF0ZU91dGxldDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChNTSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdUZW1wbGF0ZU91dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZWh9XX0pLHtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6eHl9XSxuZ1RlbXBsYXRlT3V0bGV0Olt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB2TT1bYU0sck0sbE0sZE0sTU0sQ00sZk0sZ00saE0seU0sX01dOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB4TSh0LGUpe3JldHVybiBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogJyR7ZX0nIGZvciBwaXBlICcke0dlKHQpfSdgKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgT009bmV3IGNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LGUpe3JldHVybiB0LnRoZW4oZSwodD0+e3Rocm93IHR9KSl9ZGlzcG9zZSh0KXt9b25EZXN0cm95KHQpe319LFBNPW5ldyBjbGFzc3tjcmVhdGVTdWJzY3JpcHRpb24odCxlKXtyZXR1cm4gdC5zdWJzY3JpYmUoe25leHQ6ZSxlcnJvcjp0PT57dGhyb3cgdH19KX1kaXNwb3NlKHQpe3QudW5zdWJzY3JpYmUoKX1vbkRlc3Ryb3kodCl7dC51bnN1YnNjcmliZSgpfX07Y2xhc3Mgd017Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCl9dHJhbnNmb3JtKHQpe3JldHVybiB0aGlzLl9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RWYWx1ZToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRoaXMuX2xhdGVzdFZhbHVlKX1fc3Vic2NyaWJlKHQpe3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCwoZT0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUodCxlKSkpfV9zZWxlY3RTdHJhdGVneSh0KXtpZihGbSh0KSlyZXR1cm4gT007aWYoTG0odCkpcmV0dXJuIFBNO3Rocm93IHhNKHdNLHQpfV9kaXNwb3NlKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKHQsZSl7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPWUsdGhpcy5fcmVmLm1hcmtGb3JDaGVjaygpKX19d00uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdNKShTbShVZywxNikpfSx3TS7JtXBpcGU9Y28oe25hbWU6ImFzeW5jIix0eXBlOndNLHB1cmU6ITF9KSx3TS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlVnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh3TSxbe3R5cGU6dnksYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWd9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mga017dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IHhNKGtNLHQpO3JldHVybiB0LnRvTG93ZXJDYXNlKCl9fWtNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrTSl9LGtNLsm1cGlwZT1jbyh7bmFtZToibG93ZXJjYXNlIix0eXBlOmtNLHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGtNLFt7dHlwZTp2eSxhcmdzOlt7bmFtZToibG93ZXJjYXNlIn1dfV0sbnVsbCxudWxsKTtjb25zdCBTTT0vKD86W0EtWmEtelx4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwODYwLVx1MDg2QVx1MDhBMC1cdTA4QjRcdTA4QjYtXHUwOEJEXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQUY5XHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzlcdTBDM0RcdTBDNTgtXHUwQzVBXHUwQzYwXHUwQzYxXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENTQtXHUwRDU2XHUwRDVGLVx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkYxLVx1MTZGOFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQ0U5LVx1MUNFQ1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRVx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkVBXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTdBRVx1QTdCMC1cdUE3QjdcdUE3RjctXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QTlFMC1cdUE5RTRcdUE5RTYtXHVBOUVGXHVBOUZBLVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjVcdUFCNzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURGMDAtXHVERjFGXHVERjJELVx1REY0MFx1REY0Mi1cdURGNDlcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVERDAwLVx1REQyN1x1REQzMC1cdURENjNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjddfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNjAtXHVEQzc2XHVEQzgwLVx1REM5RVx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdUREMDAtXHVERDE1XHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkVcdUREQkZcdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzNcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFODAtXHVERUFBXHVERjAwLVx1REYxOV18XHVEODA2W1x1RENBMC1cdURDREZcdURDRkZcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4M1x1REU4Ni1cdURFODlcdURFQzAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzgwLVx1REQ0M118W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REVEMC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY2My1cdURGNzdcdURGN0QtXHVERjhGXXxcdUQ4MUJbXHVERjAwLVx1REY0NFx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFdfFx1RDgyMVtcdURDMDAtXHVERkVDXXxcdUQ4MjJbXHVEQzAwLVx1REVGMl18XHVEODJDW1x1REMwMC1cdUREMUVcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OV18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVERDAwLVx1REQ0M118XHVEODNCW1x1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4NjlbXHVEQzAwLVx1REVENlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM0XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF0pXFMqL2c7Y2xhc3MgRE17dHJhbnNmb3JtKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IHhNKERNLHQpO3JldHVybiB0LnJlcGxhY2UoU00sKHQ9PnRbMF0udG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKSl9fURNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxETSl9LERNLsm1cGlwZT1jbyh7bmFtZToidGl0bGVjYXNlIix0eXBlOkRNLHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKERNLFt7dHlwZTp2eSxhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sbnVsbCxudWxsKTtjbGFzcyBFTXt0cmFuc2Zvcm0odCl7aWYobnVsbD09dClyZXR1cm4gbnVsbDtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgeE0oRU0sdCk7cmV0dXJuIHQudG9VcHBlckNhc2UoKX19RU0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVNKX0sRU0uybVwaXBlPWNvKHtuYW1lOiJ1cHBlcmNhc2UiLHR5cGU6RU0scHVyZTohMH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRU0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJ1cHBlcmNhc2UifV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUk17Y29uc3RydWN0b3IodCl7dGhpcy5sb2NhbGU9dH10cmFuc2Zvcm0odCxlPSJtZWRpdW1EYXRlIixuLG8pe2lmKG51bGw9PXR8fCIiPT09dHx8dCE9dClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIE5DKHQsZSxvfHx0aGlzLmxvY2FsZSxuKX1jYXRjaCh0KXt0aHJvdyB4TShSTSx0Lm1lc3NhZ2UpfX19Uk0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJNKShTbShXeSwxNikpfSxSTS7JtXBpcGU9Y28oe25hbWU6ImRhdGUiLHR5cGU6Uk0scHVyZTohMH0pLFJNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1d5XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChSTSxbe3R5cGU6dnksYXJnczpbe25hbWU6ImRhdGUiLHB1cmU6ITB9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbV3ldfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQU09LyMvZztjbGFzcyBUTXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dH10cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyB4TShUTSxlKTtyZXR1cm4gZVtuTSh0LE9iamVjdC5rZXlzKGUpLHRoaXMuX2xvY2FsaXphdGlvbixuKV0ucmVwbGFjZShBTSx0LnRvU3RyaW5nKCkpfX1UTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VE0pKFNtKGVNLDE2KSl9LFRNLsm1cGlwZT1jbyh7bmFtZToiaTE4blBsdXJhbCIsdHlwZTpUTSxwdXJlOiEwfSksVE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplTX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVE0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFsIixwdXJlOiEwfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZU19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTk17dHJhbnNmb3JtKHQsZSl7aWYobnVsbD09dClyZXR1cm4iIjtpZigib2JqZWN0IiE9dHlwZW9mIGV8fCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyB4TShOTSxlKTtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eSh0KT9lW3RdOmUuaGFzT3duUHJvcGVydHkoIm90aGVyIik/ZS5vdGhlcjoiIn19Tk0uybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5NKX0sTk0uybVwaXBlPWNvKHtuYW1lOiJpMThuU2VsZWN0Iix0eXBlOk5NLHB1cmU6ITB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE5NLFt7dHlwZTp2eSxhcmdzOlt7bmFtZToiaTE4blNlbGVjdCIscHVyZTohMH1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHpNe3RyYW5zZm9ybSh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCxudWxsLDIpfX16TS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ek0pfSx6TS7JtXBpcGU9Y28oe25hbWU6Impzb24iLHR5cGU6ek0scHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoek0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJqc29uIixwdXJlOiExfV19XSxudWxsLG51bGwpO2NsYXNzIElNe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGlmZmVycz10LHRoaXMua2V5VmFsdWVzPVtdLHRoaXMuY29tcGFyZUZuPUhNfXRyYW5zZm9ybSh0LGU9SE0pe2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBNYXApJiYib2JqZWN0IiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0KS5jcmVhdGUoKSk7Y29uc3Qgbj10aGlzLmRpZmZlci5kaWZmKHQpLG89ZSE9PXRoaXMuY29tcGFyZUZuO3JldHVybiBuJiYodGhpcy5rZXlWYWx1ZXM9W10sbi5mb3JFYWNoSXRlbSgodD0+e3RoaXMua2V5VmFsdWVzLnB1c2goKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZSh0LG4pe3JldHVybntrZXk6dCx2YWx1ZTpufX0pKHQua2V5LHQuY3VycmVudFZhbHVlKSl9KSkpLChufHxvKSYmKHRoaXMua2V5VmFsdWVzLnNvcnQoZSksdGhpcy5jb21wYXJlRm49ZSksdGhpcy5rZXlWYWx1ZXN9fWZ1bmN0aW9uIEhNKHQsZSl7Y29uc3Qgbj10LmtleSxvPWUua2V5O2lmKG49PT1vKXJldHVybiAwO2lmKHZvaWQgMD09PW4pcmV0dXJuIDE7aWYodm9pZCAwPT09bylyZXR1cm4tMTtpZihudWxsPT09bilyZXR1cm4gMTtpZihudWxsPT09bylyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiJzdHJpbmciPT10eXBlb2YgbylyZXR1cm4gbjxvPy0xOjE7aWYoIm51bWJlciI9PXR5cGVvZiBuJiYibnVtYmVyIj09dHlwZW9mIG8pcmV0dXJuIG4tbztpZigiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvKXJldHVybiBuPG8/LTE6MTtjb25zdCBpPVN0cmluZyhuKSxhPVN0cmluZyhvKTtyZXR1cm4gaT09YT8wOmk8YT8tMToxfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9JTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SU0pKFNtKExnLDE2KSl9LElNLsm1cGlwZT1jbyh7bmFtZToia2V5dmFsdWUiLHR5cGU6SU0scHVyZTohMX0pLElNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElNLFt7dHlwZTp2eSxhcmdzOlt7bmFtZToia2V5dmFsdWUiLHB1cmU6ITF9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMZ31dfSksbnVsbCk7Y2xhc3MgRk17Y29uc3RydWN0b3IodCl7dGhpcy5fbG9jYWxlPXR9dHJhbnNmb3JtKHQsZSxuKXtpZighVk0odCkpcmV0dXJuIG51bGw7bj1ufHx0aGlzLl9sb2NhbGU7dHJ5e3JldHVybiBRQyhqTSh0KSxuLGUpfWNhdGNoKHQpe3Rocm93IHhNKEZNLHQubWVzc2FnZSl9fX1GTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Rk0pKFNtKFd5LDE2KSl9LEZNLsm1cGlwZT1jbyh7bmFtZToibnVtYmVyIix0eXBlOkZNLHB1cmU6ITB9KSxGTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRk0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1d5XX1dfV19KSxudWxsKTtjbGFzcyBMTXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGU9dH10cmFuc2Zvcm0odCxlLG4pe2lmKCFWTSh0KSlyZXR1cm4gbnVsbDtuPW58fHRoaXMuX2xvY2FsZTt0cnl7cmV0dXJuKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiBKQyh0LCRDKHhDKGUsbUMuUGVyY2VudCksdkMoZSxiQy5NaW51c1NpZ24pKSxlLGJDLkdyb3VwLGJDLkRlY2ltYWwsbiwhMCkucmVwbGFjZShuZXcgUmVnRXhwKCIlIiwiZyIpLHZDKGUsYkMuUGVyY2VudFNpZ24pKX0pKGpNKHQpLG4sZSl9Y2F0Y2godCl7dGhyb3cgeE0oTE0sdC5tZXNzYWdlKX19fUxNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMTSkoU20oV3ksMTYpKX0sTE0uybVwaXBlPWNvKHtuYW1lOiJwZXJjZW50Iix0eXBlOkxNLHB1cmU6ITB9KSxMTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTE0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX1dfSksbnVsbCk7Y2xhc3MgQk17Y29uc3RydWN0b3IodCxlPSJVU0QiKXt0aGlzLl9sb2NhbGU9dCx0aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlPWV9dHJhbnNmb3JtKHQsZT10aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlLG49InN5bWJvbCIsbyxpKXtpZighVk0odCkpcmV0dXJuIG51bGw7aT1pfHx0aGlzLl9sb2NhbGUsImJvb2xlYW4iPT10eXBlb2YgbiYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHRoZSBjdXJyZW5jeSBwaXBlIGhhcyBiZWVuIGNoYW5nZWQgaW4gQW5ndWxhciB2NS4gVGhlIHN5bWJvbERpc3BsYXkgb3B0aW9uICh0aGlyZCBwYXJhbWV0ZXIpIGlzIG5vdyBhIHN0cmluZyBpbnN0ZWFkIG9mIGEgYm9vbGVhbi4gVGhlIGFjY2VwdGVkIHZhbHVlcyBhcmUgImNvZGUiLCAic3ltYm9sIiBvciAic3ltYm9sLW5hcnJvdyIuJyksbj1uPyJzeW1ib2wiOiJjb2RlIik7bGV0IGE9ZXx8dGhpcy5fZGVmYXVsdEN1cnJlbmN5Q29kZTsiY29kZSIhPT1uJiYoYT0ic3ltYm9sIj09PW58fCJzeW1ib2wtbmFycm93Ij09PW4/KGZ1bmN0aW9uIHIodCxlLG49ImVuIil7Y29uc3Qgbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gTHUodClbanUuQ3VycmVuY2llc119KShuKVt0XXx8cENbdF18fFtdLGE9b1sxXTtyZXR1cm4ibmFycm93Ij09PWUmJiJzdHJpbmciPT10eXBlb2YgYT9hOm9bMF18fHR9KShhLCJzeW1ib2wiPT09bj8id2lkZSI6Im5hcnJvdyIsaSk6bik7dHJ5e3JldHVybihmdW5jdGlvbiBuKHQsZSxvLGksYSl7Y29uc3Qgcj0kQyh4QyhlLG1DLkN1cnJlbmN5KSx2QyhlLGJDLk1pbnVzU2lnbikpO3JldHVybiByLm1pbkZyYWM9KGZ1bmN0aW9uIHModCl7bGV0IGU7Y29uc3Qgbj1wQ1t0XTtyZXR1cm4gbiYmKGU9blsyXSksIm51bWJlciI9PXR5cGVvZiBlP2U6Mn0pKGkpLHIubWF4RnJhYz1yLm1pbkZyYWMsSkModCxyLGUsYkMuQ3VycmVuY3lHcm91cCxiQy5DdXJyZW5jeURlY2ltYWwsYSkucmVwbGFjZSgiwqQiLG8pLnJlcGxhY2UoIsKkIiwiIikudHJpbSgpfSkoak0odCksaSxhLGUsbyl9Y2F0Y2godCl7dGhyb3cgeE0oQk0sdC5tZXNzYWdlKX19fWZ1bmN0aW9uIFZNKHQpe3JldHVybiEobnVsbD09dHx8IiI9PT10fHx0IT10KX1mdW5jdGlvbiBqTSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJiFpc05hTihOdW1iZXIodCktcGFyc2VGbG9hdCh0KSkpcmV0dXJuIE51bWJlcih0KTtpZigibnVtYmVyIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKGAke3R9IGlzIG5vdCBhIG51bWJlcmApO3JldHVybiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9CTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Qk0pKFNtKFd5LDE2KSxTbShZeSwxNikpfSxCTS7JtXBpcGU9Y28oe25hbWU6ImN1cnJlbmN5Iix0eXBlOkJNLHB1cmU6ITB9KSxCTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1l5XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCTSxbe3R5cGU6dnksYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1l5XX1dfV19KSxudWxsKTtjbGFzcyBVTXt0cmFuc2Zvcm0odCxlLG4pe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoIXRoaXMuc3VwcG9ydHModCkpdGhyb3cgeE0oVU0sdCk7cmV0dXJuIHQuc2xpY2UoZSxuKX1zdXBwb3J0cyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fEFycmF5LmlzQXJyYXkodCl9fVVNLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVTSl9LFVNLsm1cGlwZT1jbyh7bmFtZToic2xpY2UiLHR5cGU6VU0scHVyZTohMX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVU0sW3t0eXBlOnZ5LGFyZ3M6W3tuYW1lOiJzbGljZSIscHVyZTohMX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEdNPVt3TSxFTSxrTSx6TSxVTSxGTSxMTSxETSxCTSxSTSxUTSxOTSxJTV07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFdNe31XTS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V00pfSxXTS7JtW1vZD1hbyh7dHlwZTpXTX0pLFdNLsm1aW5qPXZuKHtwcm92aWRlcnM6W3twcm92aWRlOmVNLHVzZUNsYXNzOm9NfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFdNLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOlt2TSxHTV0sZXhwb3J0czpbdk0sR01dLHByb3ZpZGVyczpbe3Byb3ZpZGU6ZU0sdXNlQ2xhc3M6b019XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFdNLHtkZWNsYXJhdGlvbnM6W2FNLHJNLGxNLGRNLE1NLENNLGZNLGdNLGhNLHlNLF9NLHdNLEVNLGtNLHpNLFVNLEZNLExNLERNLEJNLFJNLFRNLE5NLElNXSxleHBvcnRzOlthTSxyTSxsTSxkTSxNTSxDTSxmTSxnTSxoTSx5TSxfTSx3TSxFTSxrTSx6TSxVTSxGTSxMTSxETSxCTSxSTSxUTSxOTSxJTV19KSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBPZygiMTIuMi4xIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBZTXt9WU0uybVwcm92PU1uKHt0b2tlbjpZTSxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgcU0odnIoWl8pLHdpbmRvdyl9KTtjbGFzcyBxTXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZG9jdW1lbnQ9dCx0aGlzLndpbmRvdz1lLHRoaXMub2Zmc2V0PSgpPT5bMCwwXX1zZXRPZmZzZXQodCl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheSh0KT8oKT0+dDp0fWdldFNjcm9sbFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKT9bdGhpcy53aW5kb3cucGFnZVhPZmZzZXQsdGhpcy53aW5kb3cucGFnZVlPZmZzZXRdOlswLDBdfXNjcm9sbFRvUG9zaXRpb24odCl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyh0WzBdLHRbMV0pfXNjcm9sbFRvQW5jaG9yKHQpe2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuO2NvbnN0IGU9KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQuZ2V0RWxlbWVudHNCeU5hbWUoZSlbMF07aWYobilyZXR1cm4gbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5jcmVhdGVUcmVlV2Fsa2VyJiZ0LmJvZHkmJih0LmJvZHkuY3JlYXRlU2hhZG93Um9vdHx8dC5ib2R5LmF0dGFjaFNoYWRvdykpe2NvbnN0IG49dC5jcmVhdGVUcmVlV2Fsa2VyKHQuYm9keSxOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCk7bGV0IG89bi5jdXJyZW50Tm9kZTtmb3IoO287KXtjb25zdCB0PW8uc2hhZG93Um9vdDtpZih0KXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSl8fHQucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7ZX0iXWApO2lmKG4pcmV0dXJuIG59bz1uLm5leHROb2RlKCl9fXJldHVybiBudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHRoaXMuZG9jdW1lbnQsdCk7ZSYmKHRoaXMuc2Nyb2xsVG9FbGVtZW50KGUpLHRoaXMuYXR0ZW1wdEZvY3VzKGUpKX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24odCl7aWYodGhpcy5zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKSl7Y29uc3QgZT10aGlzLndpbmRvdy5oaXN0b3J5O2UmJmUuc2Nyb2xsUmVzdG9yYXRpb24mJihlLnNjcm9sbFJlc3RvcmF0aW9uPXQpfX1zY3JvbGxUb0VsZW1lbnQodCl7Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5sZWZ0K3RoaXMud2luZG93LnBhZ2VYT2Zmc2V0LG89ZS50b3ArdGhpcy53aW5kb3cucGFnZVlPZmZzZXQsaT10aGlzLm9mZnNldCgpO3RoaXMud2luZG93LnNjcm9sbFRvKG4taVswXSxvLWlbMV0pfWF0dGVtcHRGb2N1cyh0KXtyZXR1cm4gdC5mb2N1cygpLHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXR9c3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCl7dHJ5e2lmKCF0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCkpcmV0dXJuITE7Y29uc3QgdD1aTSh0aGlzLndpbmRvdy5oaXN0b3J5KXx8Wk0oT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMud2luZG93Lmhpc3RvcnkpKTtyZXR1cm4hKCF0fHwhdC53cml0YWJsZSYmIXQuc2V0KX1jYXRjaCh0KXtyZXR1cm4hMX19c3VwcG9ydHNTY3JvbGxpbmcoKXt0cnl7cmV0dXJuISF0aGlzLndpbmRvdyYmISF0aGlzLndpbmRvdy5zY3JvbGxUbyYmInBhZ2VYT2Zmc2V0ImluIHRoaXMud2luZG93fWNhdGNoKHQpe3JldHVybiExfX19ZnVuY3Rpb24gWk0odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwic2Nyb2xsUmVzdG9yYXRpb24iKX1jbGFzcyBYTXt9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgS00gZXh0ZW5kcyBjbGFzcyBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3VwcG9ydHNET01FdmVudHM9ITB9fXtzdGF0aWMgbWFrZUN1cnJlbnQoKXshKGZ1bmN0aW9uIHQoZSl7WV98fChZXz1lKX0pKG5ldyBLTSl9b25BbmRDYW5jZWwodCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4sITEpfX1kaXNwYXRjaEV2ZW50KHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfXJlbW92ZSh0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuKGU9ZXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSkuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVIdG1sRG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJmYWtlVGl0bGUiKX1nZXREZWZhdWx0RG9jdW1lbnQoKXtyZXR1cm4gZG9jdW1lbnR9aXNFbGVtZW50Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfWlzU2hhZG93Um9vdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnR9Z2V0R2xvYmFsRXZlbnRUYXJnZXQodCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP3Q6ImJvZHkiPT09ZT90LmJvZHk6bnVsbH1nZXRCYXNlSHJlZih0KXtjb25zdCBlPShmdW5jdGlvbiBuKCl7cmV0dXJuIFFNPVFNfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIiksUU0/UU0uZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH0pKCk7cmV0dXJuIG51bGw9PWU/bnVsbDooZnVuY3Rpb24gbyh0KXtKTT1KTXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLEpNLnNldEF0dHJpYnV0ZSgiaHJlZiIsdCk7Y29uc3QgZT1KTS5wYXRobmFtZTtyZXR1cm4iLyI9PT1lLmNoYXJBdCgwKT9lOmAvJHtlfWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoZSl9cmVzZXRCYXNlRWxlbWVudCgpe1FNPW51bGx9Z2V0VXNlckFnZW50KCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fWdldENvb2tpZSh0KXtyZXR1cm4gaU0oZG9jdW1lbnQuY29va2llLHQpfX1sZXQgSk0sUU09bnVsbDtjb25zdCAkTT1uZXcgR2EoIlRSQU5TSVRJT05fSUQiKSx0dj1be3Byb3ZpZGU6enksdXNlRmFjdG9yeTpmdW5jdGlvbiBldih0LGUsbil7cmV0dXJuKCk9PntuLmdldChJeSkuZG9uZVByb21pc2UudGhlbigoKCk9Pntjb25zdCBuPXFfKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGUucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbbmctdHJhbnNpdGlvbl0iKSkuZmlsdGVyKChlPT5lLmdldEF0dHJpYnV0ZSgibmctdHJhbnNpdGlvbiIpPT09dCkpLmZvckVhY2goKHQ9Pm4ucmVtb3ZlKHQpKSl9KSl9fSxkZXBzOlskTSxaXyxycF0sbXVsdGk6ITB9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG52e3N0YXRpYyBpbml0KCl7IShmdW5jdGlvbiB0KGUpe2dfPWV9KShuZXcgbnYpfWFkZFRvV2luZG93KHQpe2puLmdldEFuZ3VsYXJUZXN0YWJpbGl0eT0oZSxuPSEwKT0+e2NvbnN0IG89dC5maW5kVGVzdGFiaWxpdHlJblRyZWUoZSxuKTtpZihudWxsPT1vKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIG99LGpuLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPSgpPT50LmdldEFsbFRlc3RhYmlsaXRpZXMoKSxqbi5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPSgpPT50LmdldEFsbFJvb3RFbGVtZW50cygpLGpuLmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoam4uZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLGpuLmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2goKHQ9Pntjb25zdCBlPWpuLmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCk7bGV0IG49ZS5sZW5ndGgsbz0hMTtjb25zdCBpPWZ1bmN0aW9uKGUpe289b3x8ZSxuLS0sMD09biYmdChvKX07ZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LndoZW5TdGFibGUoaSl9KSl9KSl9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZSxuKXtpZihudWxsPT1lKXJldHVybiBudWxsO2NvbnN0IG89dC5nZXRUZXN0YWJpbGl0eShlKTtyZXR1cm4gbnVsbCE9bz9vOm4/cV8oKS5pc1NoYWRvd1Jvb3QoZSk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLmhvc3QsITApOnRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZS5wYXJlbnRFbGVtZW50LCEwKTpudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgb3Z7YnVpbGQoKXtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0fX1vdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b3YpfSxvdi7JtXByb3Y9TW4oe3Rva2VuOm92LGZhY3Rvcnk6b3YuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG92LFt7dHlwZTppbX1dLG51bGwsbnVsbCksbmV3IFNyO2NvbnN0IGl2PW5ldyBHYSgiRXZlbnRNYW5hZ2VyUGx1Z2lucyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBhdntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3pvbmU9ZSx0aGlzLl9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFwLHQuZm9yRWFjaCgodD0+dC5tYW5hZ2VyPXRoaXMpKSx0aGlzLl9wbHVnaW5zPXQuc2xpY2UoKS5yZXZlcnNlKCl9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbil7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZSkuYWRkRXZlbnRMaXN0ZW5lcih0LGUsbil9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IoZSkuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbil9Z2V0Wm9uZSgpe3JldHVybiB0aGlzLl96b25lfV9maW5kUGx1Z2luRm9yKHQpe2NvbnN0IGU9dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KHQpO2lmKGUpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLl9wbHVnaW5zO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtjb25zdCBvPW5bZV07aWYoby5zdXBwb3J0cyh0KSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KHQsbyksb310aHJvdyBuZXcgRXJyb3IoYE5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAke3R9YCl9fWF2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhdikodnIoaXYpLHZyKGFfKSl9LGF2Lsm1cHJvdj1Nbih7dG9rZW46YXYsZmFjdG9yeTphdi7JtWZhY30pLGF2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbaXZdfV19LHt0eXBlOmFffV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChhdixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbaXZdfV19LHt0eXBlOmFffV19KSxudWxsKTtjbGFzcyBydntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2M9dH1hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKXtjb25zdCBvPXFfKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLHQpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZXZlbnQgdGFyZ2V0ICR7b30gZm9yIGV2ZW50ICR7ZX1gKTtyZXR1cm4gdGhpcy5hZGRFdmVudExpc3RlbmVyKG8sZSxuKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHN2e2NvbnN0cnVjdG9yKCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9YWRkU3R5bGVzKHQpe2NvbnN0IGU9bmV3IFNldDt0LmZvckVhY2goKHQ9Pnt0aGlzLl9zdHlsZXNTZXQuaGFzKHQpfHwodGhpcy5fc3R5bGVzU2V0LmFkZCh0KSxlLmFkZCh0KSl9KSksdGhpcy5vblN0eWxlc0FkZGVkKGUpfW9uU3R5bGVzQWRkZWQodCl7fWdldEFsbFN0eWxlcygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX3N0eWxlc1NldCl9fXN2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzdil9LHN2Lsm1cHJvdj1Nbih7dG9rZW46c3YsZmFjdG9yeTpzdi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoc3YsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBsdiBleHRlbmRzIHN2e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXQsdGhpcy5faG9zdE5vZGVzPW5ldyBNYXAsdGhpcy5faG9zdE5vZGVzLnNldCh0LmhlYWQsW10pfV9hZGRTdHlsZXNUb0hvc3QodCxlLG4pe3QuZm9yRWFjaCgodD0+e2NvbnN0IG89dGhpcy5fZG9jLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7by50ZXh0Q29udGVudD10LG4ucHVzaChlLmFwcGVuZENoaWxkKG8pKX0pKX1hZGRIb3N0KHQpe2NvbnN0IGU9W107dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHRoaXMuX3N0eWxlc1NldCx0LGUpLHRoaXMuX2hvc3ROb2Rlcy5zZXQodCxlKX1yZW1vdmVIb3N0KHQpe2NvbnN0IGU9dGhpcy5faG9zdE5vZGVzLmdldCh0KTtlJiZlLmZvckVhY2goY3YpLHRoaXMuX2hvc3ROb2Rlcy5kZWxldGUodCl9b25TdHlsZXNBZGRlZCh0KXt0aGlzLl9ob3N0Tm9kZXMuZm9yRWFjaCgoKGUsbik9Pnt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodCxuLGUpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5faG9zdE5vZGVzLmZvckVhY2goKHQ9PnQuZm9yRWFjaChjdikpKX19ZnVuY3Rpb24gY3YodCl7cV8oKS5yZW1vdmUodCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2x2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsdikodnIoWl8pKX0sbHYuybVwcm92PU1uKHt0b2tlbjpsdixmYWN0b3J5Omx2Lsm1ZmFjfSksbHYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGx2LFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpO2NvbnN0IGR2PXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifSxwdj0vJUNPTVAlL2csbXY9InVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fCEhbmdEZXZNb2RlO2Z1bmN0aW9uIHV2KHQsZSxuKXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtBcnJheS5pc0FycmF5KGkpP3V2KHQsaSxuKTooaT1pLnJlcGxhY2UocHYsdCksbi5wdXNoKGkpKX1yZXR1cm4gbn1mdW5jdGlvbiBmdih0KXtyZXR1cm4gZT0+e2lmKCJfX25nVW53cmFwX18iPT09ZSlyZXR1cm4gdDshMT09PXQoZSkmJihlLnByZXZlbnREZWZhdWx0KCksZS5yZXR1cm5WYWx1ZT0hMSl9fWxldCBndj0hMTtjbGFzcyBodntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmFwcElkPW4sdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IGJ2KHQpfWNyZWF0ZVJlbmRlcmVyKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0aGlzLmRlZmF1bHRSZW5kZXJlcjtzd2l0Y2goZS5lbmNhcHN1bGF0aW9uKXtjYXNlIEhuLkVtdWxhdGVkOntsZXQgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgQ3YodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUsdGhpcy5hcHBJZCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG59Y2FzZSAxOmNhc2UgSG4uU2hhZG93RG9tOnJldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxndnx8MSE9PWUuZW5jYXBzdWxhdGlvbnx8KGd2PSEwLGNvbnNvbGUud2FybigiVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEZhbGxpbmcgYmFjayB0byBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20uIFRoZSBmYWxsYmFjayB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyLiIpKSxuZXcgTXYodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LHQsZSk7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhlLmlkKSl7Y29uc3QgdD11dihlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX1iZWdpbigpe31lbmQoKXt9fWh2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxodikodnIoYXYpLHZyKGx2KSx2cihIeSkpfSxodi7JtXByb3Y9TW4oe3Rva2VuOmh2LGZhY3Rvcnk6aHYuybVmYWN9KSxodi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmF2fSx7dHlwZTpsdn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0h5XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChodixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YXZ9LHt0eXBlOmx2fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSHldfV19XX0pLG51bGwpO2NsYXNzIGJ2e2NvbnN0cnVjdG9yKHQpe3RoaXMuZXZlbnRNYW5hZ2VyPXQsdGhpcy5kYXRhPU9iamVjdC5jcmVhdGUobnVsbCl9ZGVzdHJveSgpe31jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGR2W2VdfHxlLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCh0KX1jcmVhdGVUZXh0KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0KX1hcHBlbmRDaGlsZCh0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9aW5zZXJ0QmVmb3JlKHQsZSxuKXt0JiZ0Lmluc2VydEJlZm9yZShlLG4pfXJlbW92ZUNoaWxkKHQsZSl7dCYmdC5yZW1vdmVDaGlsZChlKX1zZWxlY3RSb290RWxlbWVudCh0LGUpe2xldCBuPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnQ7aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBUaGUgc2VsZWN0b3IgIiR7dH0iIGRpZCBub3QgbWF0Y2ggYW55IGVsZW1lbnRzYCk7cmV0dXJuIGV8fChuLnRleHRDb250ZW50PSIiKSxufXBhcmVudE5vZGUodCl7cmV0dXJuIHQucGFyZW50Tm9kZX1uZXh0U2libGluZyh0KXtyZXR1cm4gdC5uZXh0U2libGluZ31zZXRBdHRyaWJ1dGUodCxlLG4sbyl7aWYobyl7ZT1vKyI6IitlO2NvbnN0IGk9ZHZbb107aT90LnNldEF0dHJpYnV0ZU5TKGksZSxuKTp0LnNldEF0dHJpYnV0ZShlLG4pfWVsc2UgdC5zZXRBdHRyaWJ1dGUoZSxuKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG4pe2lmKG4pe2NvbnN0IG89ZHZbbl07bz90LnJlbW92ZUF0dHJpYnV0ZU5TKG8sZSk6dC5yZW1vdmVBdHRyaWJ1dGUoYCR7bn06JHtlfWApfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9YWRkQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5hZGQoZSl9cmVtb3ZlQ2xhc3ModCxlKXt0LmNsYXNzTGlzdC5yZW1vdmUoZSl9c2V0U3R5bGUodCxlLG4sbyl7byYoY2wuRGFzaENhc2V8Y2wuSW1wb3J0YW50KT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixvJmNsLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtlXT1ufXJlbW92ZVN0eWxlKHQsZSxuKXtuJmNsLkRhc2hDYXNlP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dC5zdHlsZVtlXT0iIn1zZXRQcm9wZXJ0eSh0LGUsbil7bXYmJl92KGUsInByb3BlcnR5IiksdFtlXT1ufXNldFZhbHVlKHQsZSl7dC5ub2RlVmFsdWU9ZX1saXN0ZW4odCxlLG4pe3JldHVybiBtdiYmX3YoZSwibGlzdGVuZXIiKSwic3RyaW5nIj09dHlwZW9mIHQ/dGhpcy5ldmVudE1hbmFnZXIuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsZnYobikpOnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCxlLGZ2KG4pKX19Y29uc3QgeXY9IkAiLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gX3YodCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT15dil0aHJvdyBuZXcgRXJyb3IoYEZvdW5kIHRoZSBzeW50aGV0aWMgJHtlfSAke3R9LiBQbGVhc2UgaW5jbHVkZSBlaXRoZXIgIkJyb3dzZXJBbmltYXRpb25zTW9kdWxlIiBvciAiTm9vcEFuaW1hdGlvbnNNb2R1bGUiIGluIHlvdXIgYXBwbGljYXRpb24uYCl9Y2xhc3MgQ3YgZXh0ZW5kcyBidntjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0KSx0aGlzLmNvbXBvbmVudD1uO2NvbnN0IGk9dXYobysiLSIrbi5pZCxuLnN0eWxlcyxbXSk7ZS5hZGRTdHlsZXMoaSksdGhpcy5jb250ZW50QXR0cj0oZnVuY3Rpb24gYSh0KXtyZXR1cm4iX25nY29udGVudC0lQ09NUCUiLnJlcGxhY2UocHYsdCl9KShvKyItIituLmlkKSx0aGlzLmhvc3RBdHRyPShmdW5jdGlvbiByKHQpe3JldHVybiJfbmdob3N0LSVDT01QJSIucmVwbGFjZShwdix0KX0pKG8rIi0iK24uaWQpfWFwcGx5VG9Ib3N0KHQpe3N1cGVyLnNldEF0dHJpYnV0ZSh0LHRoaXMuaG9zdEF0dHIsIiIpfWNyZWF0ZUVsZW1lbnQodCxlKXtjb25zdCBuPXN1cGVyLmNyZWF0ZUVsZW1lbnQodCxlKTtyZXR1cm4gc3VwZXIuc2V0QXR0cmlidXRlKG4sdGhpcy5jb250ZW50QXR0ciwiIiksbn19Y2xhc3MgTXYgZXh0ZW5kcyBidntjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0KSx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmhvc3RFbD1uLHRoaXMuc2hhZG93Um9vdD1uLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkSG9zdCh0aGlzLnNoYWRvd1Jvb3QpO2NvbnN0IGk9dXYoby5pZCxvLnN0eWxlcyxbXSk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtlLnRleHRDb250ZW50PWlbdF0sdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKGUpfX1ub2RlT3JTaGFkb3dSb290KHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9ZGVzdHJveSgpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9YXBwZW5kQ2hpbGQodCxlKXtyZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUpfWluc2VydEJlZm9yZSh0LGUsbil7cmV0dXJuIHN1cGVyLmluc2VydEJlZm9yZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSxuKX1yZW1vdmVDaGlsZCh0LGUpe3JldHVybiBzdXBlci5yZW1vdmVDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSl9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB2diBleHRlbmRzIHJ2e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN1cHBvcnRzKHQpe3JldHVybiEwfWFkZEV2ZW50TGlzdGVuZXIodCxlLG4pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLCExKSwoKT0+dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxuKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSxuKXtyZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbil9fXZ2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2dikodnIoWl8pKX0sdnYuybVwcm92PU1uKHt0b2tlbjp2dixmYWN0b3J5OnZ2Lsm1ZmFjfSksdnYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHZ2LFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgeHY9e3BhbjohMCxwYW5zdGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5yaWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2htb3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAscHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZTohMCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lwZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMCxkb3VibGV0YXA6ITB9LE92PW5ldyBHYSgiSGFtbWVyR2VzdHVyZUNvbmZpZyIpLFB2PW5ldyBHYSgiSGFtbWVyTG9hZGVyIik7Y2xhc3Mgd3Z7Y29uc3RydWN0b3IoKXt0aGlzLmV2ZW50cz1bXSx0aGlzLm92ZXJyaWRlcz17fX1idWlsZEhhbW1lcih0KXtjb25zdCBlPW5ldyBIYW1tZXIodCx0aGlzLm9wdGlvbnMpO2UuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSk7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vdmVycmlkZXMpZS5nZXQodCkuc2V0KHRoaXMub3ZlcnJpZGVzW3RdKTtyZXR1cm4gZX19d3YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHd2KX0sd3YuybVwcm92PU1uKHt0b2tlbjp3dixmYWN0b3J5Ond2Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh3dixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIGt2IGV4dGVuZHMgcnZ7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCksdGhpcy5fY29uZmlnPWUsdGhpcy5jb25zb2xlPW4sdGhpcy5sb2FkZXI9byx0aGlzLl9sb2FkZXJQcm9taXNlPW51bGx9c3VwcG9ydHModCl7cmV0dXJuISgheHYuaGFzT3duUHJvcGVydHkodC50b0xvd2VyQ2FzZSgpKSYmIXRoaXMuaXNDdXN0b21FdmVudCh0KXx8IXdpbmRvdy5IYW1tZXImJiF0aGlzLmxvYWRlciYmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5jb25zb2xlLndhcm4oYFRoZSAiJHt0fSIgZXZlbnQgY2Fubm90IGJlIGJvdW5kIGJlY2F1c2UgSGFtbWVyLkpTIGlzIG5vdCBsb2FkZWQgYW5kIG5vIGN1c3RvbSBsb2FkZXIgaGFzIGJlZW4gc3BlY2lmaWVkLmApLDEpKX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtjb25zdCBvPXRoaXMubWFuYWdlci5nZXRab25lKCk7aWYoZT1lLnRvTG93ZXJDYXNlKCksIXdpbmRvdy5IYW1tZXImJnRoaXMubG9hZGVyKXt0aGlzLl9sb2FkZXJQcm9taXNlPXRoaXMuX2xvYWRlclByb21pc2V8fHRoaXMubG9hZGVyKCk7bGV0IG89ITEsaT0oKT0+e289ITB9O3JldHVybiB0aGlzLl9sb2FkZXJQcm9taXNlLnRoZW4oKCgpPT57aWYoIXdpbmRvdy5IYW1tZXIpcmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybigiVGhlIGN1c3RvbSBIQU1NRVJfTE9BREVSIGNvbXBsZXRlZCwgYnV0IEhhbW1lci5KUyBpcyBub3QgcHJlc2VudC4iKSx2b2lkKGk9KCk9Pnt9KTtvfHwoaT10aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pKX0pKS5jYXRjaCgoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnRoaXMuY29uc29sZS53YXJuKGBUaGUgIiR7ZX0iIGV2ZW50IGNhbm5vdCBiZSBib3VuZCBiZWNhdXNlIHRoZSBjdXN0b20gSGFtbWVyLkpTIGxvYWRlciBmYWlsZWQuYCksaT0oKT0+e319KSksKCk9PntpKCl9fXJldHVybiBvLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IGk9dGhpcy5fY29uZmlnLmJ1aWxkSGFtbWVyKHQpLGE9ZnVuY3Rpb24odCl7by5ydW5HdWFyZGVkKChmdW5jdGlvbigpe24odCl9KSl9O3JldHVybiBpLm9uKGUsYSksKCk9PntpLm9mZihlLGEpLCJmdW5jdGlvbiI9PXR5cGVvZiBpLmRlc3Ryb3kmJmkuZGVzdHJveSgpfX0pKX1pc0N1c3RvbUV2ZW50KHQpe3JldHVybiB0aGlzLl9jb25maWcuZXZlbnRzLmluZGV4T2YodCk+LTF9fWt2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrdikodnIoWl8pLHZyKE92KSx2cihHeSksdnIoUHYsOCkpfSxrdi7JtXByb3Y9TW4oe3Rva2VuOmt2LGZhY3Rvcnk6a3YuybVmYWN9KSxrdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6d3YsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbT3ZdfV19LHt0eXBlOkd5fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1B2XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrdixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp3dixkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltPdl19XX0se3R5cGU6R3l9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUHZdfV19XX0pLG51bGwpO2NvbnN0IFN2PVt7cHJvdmlkZTppdix1c2VDbGFzczprdixtdWx0aTohMCxkZXBzOltaXyxPdixHeSxbbmV3IFNyLFB2XV19LHtwcm92aWRlOk92LHVzZUNsYXNzOnd2LGRlcHM6W119XTtjbGFzcyBEdnt9RHYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fER2KX0sRHYuybVtb2Q9YW8oe3R5cGU6RHZ9KSxEdi7JtWluaj12bih7cHJvdmlkZXJzOlN2fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChEdixbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpTdn1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEV2PVsiYWx0IiwiY29udHJvbCIsIm1ldGEiLCJzaGlmdCJdLFJ2PXsiXGIiOiJCYWNrc3BhY2UiLCJcdCI6IlRhYiIsIn8iOiJEZWxldGUiLCIbIjoiRXNjYXBlIixEZWw6IkRlbGV0ZSIsRXNjOiJFc2NhcGUiLExlZnQ6IkFycm93TGVmdCIsUmlnaHQ6IkFycm93UmlnaHQiLFVwOiJBcnJvd1VwIixEb3duOiJBcnJvd0Rvd24iLE1lbnU6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLFdpbjoiT1MifSxBdj17QToiMSIsQjoiMiIsQzoiMyIsRDoiNCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIsTzoiLyIsImAiOiIwIiwiwpAiOiJOdW1Mb2NrIn0sVHY9e2FsdDp0PT50LmFsdEtleSxjb250cm9sOnQ9PnQuY3RybEtleSxtZXRhOnQ9PnQubWV0YUtleSxzaGlmdDp0PT50LnNoaWZ0S2V5fTtjbGFzcyBOdiBleHRlbmRzIHJ2e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN1cHBvcnRzKHQpe3JldHVybiBudWxsIT1Odi5wYXJzZUV2ZW50TmFtZSh0KX1hZGRFdmVudExpc3RlbmVyKHQsZSxuKXtjb25zdCBvPU52LnBhcnNlRXZlbnROYW1lKGUpLGk9TnYuZXZlbnRDYWxsYmFjayhvLmZ1bGxLZXksbix0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnFfKCkub25BbmRDYW5jZWwodCxvLmRvbUV2ZW50TmFtZSxpKSkpfXN0YXRpYyBwYXJzZUV2ZW50TmFtZSh0KXtjb25zdCBlPXQudG9Mb3dlckNhc2UoKS5zcGxpdCgiLiIpLG49ZS5zaGlmdCgpO2lmKDA9PT1lLmxlbmd0aHx8ImtleWRvd24iIT09biYmImtleXVwIiE9PW4pcmV0dXJuIG51bGw7Y29uc3Qgbz1Odi5fbm9ybWFsaXplS2V5KGUucG9wKCkpO2xldCBpPSIiO2lmKEV2LmZvckVhY2goKHQ9Pntjb25zdCBuPWUuaW5kZXhPZih0KTtuPi0xJiYoZS5zcGxpY2UobiwxKSxpKz10KyIuIil9KSksaSs9bywwIT1lLmxlbmd0aHx8MD09PW8ubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGE9e307cmV0dXJuIGEuZG9tRXZlbnROYW1lPW4sYS5mdWxsS2V5PWksYX1zdGF0aWMgZ2V0RXZlbnRGdWxsS2V5KHQpe2xldCBlPSIiLG49KGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5rZXk7aWYobnVsbD09ZSl7aWYoZT10LmtleUlkZW50aWZpZXIsbnVsbD09ZSlyZXR1cm4iVW5pZGVudGlmaWVkIjtlLnN0YXJ0c1dpdGgoIlUrIikmJihlPVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZS5zdWJzdHJpbmcoMiksMTYpKSwzPT09dC5sb2NhdGlvbiYmQXYuaGFzT3duUHJvcGVydHkoZSkmJihlPUF2W2VdKSl9cmV0dXJuIFJ2W2VdfHxlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpO3JldHVybiBuPW4udG9Mb3dlckNhc2UoKSwiICI9PT1uP249InNwYWNlIjoiLiI9PT1uJiYobj0iZG90IiksRXYuZm9yRWFjaCgobz0+e28hPW4mJigwLFR2W29dKSh0KSYmKGUrPW8rIi4iKX0pKSxlKz1uLGV9c3RhdGljIGV2ZW50Q2FsbGJhY2sodCxlLG4pe3JldHVybiBvPT57TnYuZ2V0RXZlbnRGdWxsS2V5KG8pPT09dCYmbi5ydW5HdWFyZGVkKCgoKT0+ZShvKSkpfX1zdGF0aWMgX25vcm1hbGl6ZUtleSh0KXtzd2l0Y2godCl7Y2FzZSJlc2MiOnJldHVybiJlc2NhcGUiO2RlZmF1bHQ6cmV0dXJuIHR9fX1Odi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TnYpKHZyKFpfKSl9LE52Lsm1cHJvdj1Nbih7dG9rZW46TnYsZmFjdG9yeTpOdi7JtWZhY30pLE52LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOdixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSxudWxsKTtjbGFzcyB6dnt9ZnVuY3Rpb24gSXYodCl7cmV0dXJuIG5ldyBIdih0LmdldChaXykpfXp2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6dil9LHp2Lsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIHZyKEh2KX0sdG9rZW46enYscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHp2LFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRXhpc3Rpbmc6cWUoKCgpPT5IdikpfV19XSxudWxsLG51bGwpO2NsYXNzIEh2IGV4dGVuZHMgenZ7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kb2M9dH1zYW5pdGl6ZSh0LGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7c3dpdGNoKHQpe2Nhc2UgQXMuTk9ORTpyZXR1cm4gZTtjYXNlIEFzLkhUTUw6cmV0dXJuIGVzKGUsIkhUTUwiKT90cyhlKTpFcyh0aGlzLl9kb2MsU3RyaW5nKGUpKS50b1N0cmluZygpO2Nhc2UgQXMuU1RZTEU6cmV0dXJuIGVzKGUsIlN0eWxlIik/dHMoZSk6ZTtjYXNlIEFzLlNDUklQVDppZihlcyhlLCJTY3JpcHQiKSlyZXR1cm4gdHMoZSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBBcy5VUkw6cmV0dXJuIG5zKGUpLGVzKGUsIlVSTCIpP3RzKGUpOmxzKFN0cmluZyhlKSk7Y2FzZSBBcy5SRVNPVVJDRV9VUkw6aWYoZXMoZSwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gdHMoZSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgJHt0fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9fWJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuZXcgWHIodCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBLcih0KX0pKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBKcih0KX0pKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBRcih0KX0pKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3ICRyKHQpfSkodCl9fUh2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIdikodnIoWl8pKX0sSHYuybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gSXYodnIoR2QpKX0sdG9rZW46SHYscHJvdmlkZWRJbjoicm9vdCJ9KSxIdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSHYsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5Okl2LGRlcHM6W3JwXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y29uc3QgRnY9Q18oUl8sImJyb3dzZXIiLFt7cHJvdmlkZTpqeSx1c2VWYWx1ZToiYnJvd3NlciJ9LHtwcm92aWRlOlZ5LHVzZVZhbHVlOgovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gTHYoKXtLTS5tYWtlQ3VycmVudCgpLG52LmluaXQoKX0sbXVsdGk6ITB9LHtwcm92aWRlOlpfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gQnYoKXtyZXR1cm4oZnVuY3Rpb24gdChlKXtLbz1lfSkoZG9jdW1lbnQpLGRvY3VtZW50fSxkZXBzOltdfV0pLFZ2PVtbXSx7cHJvdmlkZTpZZCx1c2VWYWx1ZToicm9vdCJ9LHtwcm92aWRlOlpzLHVzZUZhY3Rvcnk6ZnVuY3Rpb24ganYoKXtyZXR1cm4gbmV3IFpzfSxkZXBzOltdfSx7cHJvdmlkZTppdix1c2VDbGFzczp2dixtdWx0aTohMCxkZXBzOltaXyxhXyxqeV19LHtwcm92aWRlOml2LHVzZUNsYXNzOk52LG11bHRpOiEwLGRlcHM6W1pfXX0sW10se3Byb3ZpZGU6aHYsdXNlQ2xhc3M6aHYsZGVwczpbYXYsbHYsSHldfSx7cHJvdmlkZTpfZyx1c2VFeGlzdGluZzpodn0se3Byb3ZpZGU6c3YsdXNlRXhpc3Rpbmc6bHZ9LHtwcm92aWRlOmx2LHVzZUNsYXNzOmx2LGRlcHM6W1pfXX0se3Byb3ZpZGU6bV8sdXNlQ2xhc3M6bV8sZGVwczpbYV9dfSx7cHJvdmlkZTphdix1c2VDbGFzczphdixkZXBzOltpdixhX119LHtwcm92aWRlOlhNLHVzZUNsYXNzOm92LGRlcHM6W119LFtdXTtjbGFzcyBVdntjb25zdHJ1Y3Rvcih0KXtpZih0KXRocm93IG5ldyBFcnJvcigiQnJvd3Nlck1vZHVsZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gSWYgeW91IG5lZWQgYWNjZXNzIHRvIGNvbW1vbiBkaXJlY3RpdmVzIHN1Y2ggYXMgTmdJZiBhbmQgTmdGb3IgZnJvbSBhIGxhenkgbG9hZGVkIG1vZHVsZSwgaW1wb3J0IENvbW1vbk1vZHVsZSBpbnN0ZWFkLiIpfXN0YXRpYyB3aXRoU2VydmVyVHJhbnNpdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6VXYscHJvdmlkZXJzOlt7cHJvdmlkZTpIeSx1c2VWYWx1ZTp0LmFwcElkfSx7cHJvdmlkZTokTSx1c2VFeGlzdGluZzpIeX0sdHZdfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBHdigpe3JldHVybiBuZXcgV3YodnIoWl8pKX1Vdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VXYpKHZyKFV2LDEyKSl9LFV2Lsm1bW9kPWFvKHt0eXBlOlV2fSksVXYuybVpbmo9dm4oe3Byb3ZpZGVyczpWdixpbXBvcnRzOltXTSxIX119KSxVdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlV2LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpFcn0se3R5cGU6a3IsYXJnczpbVXZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFV2LFt7dHlwZTpBeSxhcmdzOlt7cHJvdmlkZXJzOlZ2LGV4cG9ydHM6W1dNLEhfXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlV2LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpFcn0se3R5cGU6a3IsYXJnczpbVXZdfV19XX0pLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVXYse2V4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV00sSF9dfX0pO2NsYXNzIFd2e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvYz10LHRoaXMuX2RvbT1xXygpfWFkZFRhZyh0LGU9ITEpe3JldHVybiB0P3RoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LGUpOm51bGx9YWRkVGFncyh0LGU9ITEpe3JldHVybiB0P3QucmVkdWNlKCgodCxuKT0+KG4mJnQucHVzaCh0aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQobixlKSksdCkpLFtdKTpbXX1nZXRUYWcodCl7cmV0dXJuIHQmJnRoaXMuX2RvYy5xdWVyeVNlbGVjdG9yKGBtZXRhWyR7dH1dYCl8fG51bGx9Z2V0VGFncyh0KXtpZighdClyZXR1cm5bXTtjb25zdCBlPXRoaXMuX2RvYy5xdWVyeVNlbGVjdG9yQWxsKGBtZXRhWyR7dH1dYCk7cmV0dXJuIGU/W10uc2xpY2UuY2FsbChlKTpbXX11cGRhdGVUYWcodCxlKXtpZighdClyZXR1cm4gbnVsbDtlPWV8fHRoaXMuX3BhcnNlU2VsZWN0b3IodCk7Y29uc3Qgbj10aGlzLmdldFRhZyhlKTtyZXR1cm4gbj90aGlzLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxuKTp0aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCwhMCl9cmVtb3ZlVGFnKHQpe3RoaXMucmVtb3ZlVGFnRWxlbWVudCh0aGlzLmdldFRhZyh0KSl9cmVtb3ZlVGFnRWxlbWVudCh0KXt0JiZ0aGlzLl9kb20ucmVtb3ZlKHQpfV9nZXRPckNyZWF0ZUVsZW1lbnQodCxlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLl9wYXJzZVNlbGVjdG9yKHQpLG49dGhpcy5nZXRUYWdzKGUpLmZpbHRlcigoZT0+dGhpcy5fY29udGFpbnNBdHRyaWJ1dGVzKHQsZSkpKVswXTtpZih2b2lkIDAhPT1uKXJldHVybiBufWNvbnN0IG49dGhpcy5fZG9tLmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTtyZXR1cm4gdGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbiksdGhpcy5fZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQobiksbn1fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsZSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PmUuc2V0QXR0cmlidXRlKHRoaXMuX2dldE1ldGFLZXlNYXAobiksdFtuXSkpKSxlfV9wYXJzZVNlbGVjdG9yKHQpe2NvbnN0IGU9dC5uYW1lPyJuYW1lIjoicHJvcGVydHkiO3JldHVybmAke2V9PSIke3RbZV19ImB9X2NvbnRhaW5zQXR0cmlidXRlcyh0LGUpe3JldHVybiBPYmplY3Qua2V5cyh0KS5ldmVyeSgobj0+ZS5nZXRBdHRyaWJ1dGUodGhpcy5fZ2V0TWV0YUtleU1hcChuKSk9PT10W25dKSl9X2dldE1ldGFLZXlNYXAodCl7cmV0dXJuIFl2W3RdfHx0fX1Xdi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V3YpKHZyKFpfKSl9LFd2Lsm1cHJvdj1Nbih7ZmFjdG9yeTpHdix0b2tlbjpXdixwcm92aWRlZEluOiJyb290In0pLFd2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXdixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6R3YsZGVwczpbXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y29uc3QgWXY9e2h0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxdigpe3JldHVybiBuZXcgWnYodnIoWl8pKX1jbGFzcyBadntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2M9dH1nZXRUaXRsZSgpe3JldHVybiB0aGlzLl9kb2MudGl0bGV9c2V0VGl0bGUodCl7dGhpcy5fZG9jLnRpdGxlPXR8fCIifX1adi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WnYpKHZyKFpfKSl9LFp2Lsm1cHJvdj1Nbih7ZmFjdG9yeTpxdix0b2tlbjpadixwcm92aWRlZEluOiJyb290In0pLFp2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChadixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6cXYsZGVwczpbXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y2xhc3MgWHZ7Y29uc3RydWN0b3IoKXt0aGlzLnN0b3JlPXt9LHRoaXMub25TZXJpYWxpemVDYWxsYmFja3M9e319c3RhdGljIGluaXQodCl7Y29uc3QgZT1uZXcgWHY7cmV0dXJuIGUuc3RvcmU9dCxlfWdldCh0LGUpe3JldHVybiB2b2lkIDAhPT10aGlzLnN0b3JlW3RdP3RoaXMuc3RvcmVbdF06ZX1zZXQodCxlKXt0aGlzLnN0b3JlW3RdPWV9cmVtb3ZlKHQpe2RlbGV0ZSB0aGlzLnN0b3JlW3RdfWhhc0tleSh0KXtyZXR1cm4gdGhpcy5zdG9yZS5oYXNPd25Qcm9wZXJ0eSh0KX1vblNlcmlhbGl6ZSh0LGUpe3RoaXMub25TZXJpYWxpemVDYWxsYmFja3NbdF09ZX10b0pzb24oKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzKWlmKHRoaXMub25TZXJpYWxpemVDYWxsYmFja3MuaGFzT3duUHJvcGVydHkodCkpdHJ5e3RoaXMuc3RvcmVbdF09dGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrc1t0XSgpfWNhdGNoKHQpe2NvbnNvbGUud2FybigiRXhjZXB0aW9uIGluIG9uU2VyaWFsaXplIGNhbGxiYWNrOiAiLHQpfXJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnN0b3JlKX19ZnVuY3Rpb24gS3YodCxlKXtjb25zdCBuPXQuZ2V0RWxlbWVudEJ5SWQoZSsiLXN0YXRlIik7bGV0IG89e307aWYobiYmbi50ZXh0Q29udGVudCl0cnl7bz1KU09OLnBhcnNlKChmdW5jdGlvbiBpKHQpe2NvbnN0IGU9eyImYTsiOiImIiwiJnE7IjonIicsIiZzOyI6IiciLCImbDsiOiI8IiwiJmc7IjoiPiJ9O3JldHVybiB0LnJlcGxhY2UoLyZbXjtdKzsvZywodD0+ZVt0XSkpfSkobi50ZXh0Q29udGVudCkpfWNhdGNoKHQpe2NvbnNvbGUud2FybigiRXhjZXB0aW9uIHdoaWxlIHJlc3RvcmluZyBUcmFuc2ZlclN0YXRlIGZvciBhcHAgIitlLHQpfXJldHVybiBYdi5pbml0KG8pfVh2Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYdil9LFh2Lsm1cHJvdj1Nbih7dG9rZW46WHYsZmFjdG9yeTpYdi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWHYsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBKdnt9SnYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEp2KX0sSnYuybVtb2Q9YW8oe3R5cGU6SnZ9KSxKdi7JtWluaj12bih7cHJvdmlkZXJzOlt7cHJvdmlkZTpYdix1c2VGYWN0b3J5Okt2LGRlcHM6W1pfLEh5XX1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChKdixbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpbe3Byb3ZpZGU6WHYsdXNlRmFjdG9yeTpLdixkZXBzOltaXyxIeV19XX1dfV0sbnVsbCxudWxsKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpuZXcgT2coIjEyLjIuMSIpO3ZhciBRdj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uICR2KHQpe2lmKHQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvLmdldD9vOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pfSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMC4wLW5leHQuMAogICAgICogKGMpIDIwMTAtMjAyMCBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLyEoZnVuY3Rpb24oKXsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCiEoZnVuY3Rpb24odCl7dmFyIGU9dC5wZXJmb3JtYW5jZTtmdW5jdGlvbiBuKHQpe2UmJmUubWFyayYmZS5tYXJrKHQpfWZ1bmN0aW9uIG8odCxuKXtlJiZlLm1lYXN1cmUmJmUubWVhc3VyZSh0LG4pfW4oIlpvbmUiKTt2YXIgaT10Ll9fWm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIjtmdW5jdGlvbiBhKHQpe3JldHVybiBpK3R9dmFyIHI9ITA9PT10W2EoImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrIildO2lmKHQuWm9uZSl7aWYocnx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQuWm9uZS5fX3N5bWJvbF9fKXRocm93IG5ldyBFcnJvcigiWm9uZSBhbHJlYWR5IGxvYWRlZC4iKTtyZXR1cm4gdC5ab25lfXZhciBzPShmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlKXt0aGlzLl9wYXJlbnQ9dCx0aGlzLl9uYW1lPWU/ZS5uYW1lfHwidW5uYW1lZCI6Ijxyb290PiIsdGhpcy5fcHJvcGVydGllcz1lJiZlLnByb3BlcnRpZXN8fHt9LHRoaXMuX3pvbmVEZWxlZ2F0ZT1uZXcgZCh0aGlzLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsZSl9cmV0dXJuIGUuYXNzZXJ0Wm9uZVBhdGNoZWQ9ZnVuY3Rpb24oKXtpZih0LlByb21pc2UhPT1ELlpvbmVBd2FyZVByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJab25lLmpzIGhhcyBkZXRlY3RlZCB0aGF0IFpvbmVBd2FyZVByb21pc2UgYCh3aW5kb3d8Z2xvYmFsKS5Qcm9taXNlYCBoYXMgYmVlbiBvdmVyd3JpdHRlbi5cbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLikiKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ZS5jdXJyZW50O3QucGFyZW50Oyl0PXQucGFyZW50O3JldHVybiB0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFIuem9uZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY3VycmVudFRhc2siLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLl9fbG9hZF9wYXRjaD1mdW5jdGlvbihpLGEscyl7aWYodm9pZCAwPT09cyYmKHM9ITEpLEQuaGFzT3duUHJvcGVydHkoaSkpe2lmKCFzJiZyKXRocm93IEVycm9yKCJBbHJlYWR5IGxvYWRlZCBwYXRjaDogIitpKX1lbHNlIGlmKCF0WyJfX1pvbmVfZGlzYWJsZV8iK2ldKXt2YXIgbD0iWm9uZToiK2k7bihsKSxEW2ldPWEodCxlLEUpLG8obCxsKX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRab25lV2l0aCh0KTtpZihlKXJldHVybiBlLl9wcm9wZXJ0aWVzW3RdfSxlLnByb3RvdHlwZS5nZXRab25lV2l0aD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcztlOyl7aWYoZS5fcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gZTtlPWUuX3BhcmVudH1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZm9yaz1mdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlpvbmVTcGVjIHJlcXVpcmVkISIpO3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLHQpfSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK3QpO3ZhciBuPXRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnRlcmNlcHQodGhpcyx0LGUpLG89dGhpcztyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gby5ydW5HdWFyZGVkKG4sdGhpcyxhcmd1bWVudHMsZSl9fSxlLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24odCxlLG4sbyl7Uj17cGFyZW50OlIsem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyx0LGUsbixvKX1maW5hbGx5e1I9Ui5wYXJlbnR9fSxlLnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQsZSxuLG8pe3ZvaWQgMD09PWUmJihlPW51bGwpLFI9e3BhcmVudDpSLHpvbmU6dGhpc307dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLHQsZSxuLG8pfWNhdGNoKHQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7Uj1SLnBhcmVudH19LGUucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4pe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxfKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTtpZih0LnN0YXRlIT09Q3x8dC50eXBlIT09UyYmdC50eXBlIT09ayl7dmFyIG89dC5zdGF0ZSE9eDtvJiZ0Ll90cmFuc2l0aW9uVG8oeCx2KSx0LnJ1bkNvdW50Kys7dmFyIGk9QTtBPXQsUj17cGFyZW50OlIsem9uZTp0aGlzfTt0cnl7dC50eXBlPT1rJiZ0LmRhdGEmJiF0LmRhdGEuaXNQZXJpb2RpYyYmKHQuY2FuY2VsRm49dm9pZCAwKTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2VUYXNrKHRoaXMsdCxlLG4pfWNhdGNoKHQpe2lmKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLHQpKXRocm93IHR9fWZpbmFsbHl7dC5zdGF0ZSE9PUMmJnQuc3RhdGUhPT1QJiYodC50eXBlPT1TfHx0LmRhdGEmJnQuZGF0YS5pc1BlcmlvZGljP28mJnQuX3RyYW5zaXRpb25Ubyh2LHgpOih0LnJ1bkNvdW50PTAsdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsLTEpLG8mJnQuX3RyYW5zaXRpb25UbyhDLHgsQykpKSxSPVIucGFyZW50LEE9aX19fSxlLnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24odCl7aWYodC56b25lJiZ0LnpvbmUhPT10aGlzKWZvcih2YXIgZT10aGlzO2U7KXtpZihlPT09dC56b25lKXRocm93IEVycm9yKCJjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAiK3RoaXMubmFtZSsiIHdoaWNoIGlzIGRlc2NlbmRhbnRzIG9mIHRoZSBvcmlnaW5hbCB6b25lICIrdC56b25lLm5hbWUpO2U9ZS5wYXJlbnR9dC5fdHJhbnNpdGlvblRvKE0sQyk7dmFyIG49W107dC5fem9uZURlbGVnYXRlcz1uLHQuX3pvbmU9dGhpczt0cnl7dD10aGlzLl96b25lRGVsZWdhdGUuc2NoZWR1bGVUYXNrKHRoaXMsdCl9Y2F0Y2goZSl7dGhyb3cgdC5fdHJhbnNpdGlvblRvKFAsTSxDKSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxlKSxlfXJldHVybiB0Ll96b25lRGVsZWdhdGVzPT09biYmdGhpcy5fdXBkYXRlVGFza0NvdW50KHQsMSksdC5zdGF0ZT09TSYmdC5fdHJhbnNpdGlvblRvKHYsTSksdH0sZS5wcm90b3R5cGUuc2NoZWR1bGVNaWNyb1Rhc2s9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKHcsdCxlLG4sbyx2b2lkIDApKX0sZS5wcm90b3R5cGUuc2NoZWR1bGVNYWNyb1Rhc2s9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoayx0LGUsbixvLGkpKX0sZS5wcm90b3R5cGUuc2NoZWR1bGVFdmVudFRhc2s9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoUyx0LGUsbixvLGkpKX0sZS5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbih0KXtpZih0LnpvbmUhPXRoaXMpdGhyb3cgbmV3IEVycm9yKCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246ICIrKHQuem9uZXx8XykubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7dC5fdHJhbnNpdGlvblRvKE8sdix4KTt0cnl7dGhpcy5fem9uZURlbGVnYXRlLmNhbmNlbFRhc2sodGhpcyx0KX1jYXRjaChlKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oUCxPKSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyxlKSxlfXJldHVybiB0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksdC5fdHJhbnNpdGlvblRvKEMsTyksdC5ydW5Db3VudD0wLHR9LGUucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10Ll96b25lRGVsZWdhdGVzOy0xPT1lJiYodC5fem9uZURlbGVnYXRlcz1udWxsKTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyluW29dLl91cGRhdGVUYXNrQ291bnQodC50eXBlLGUpfSxlfSkoKTtzLl9fc3ltYm9sX189YTt2YXIgbCxjPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdC5oYXNUYXNrKG4sbyl9LG9uU2NoZWR1bGVUYXNrOmZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0LnNjaGVkdWxlVGFzayhuLG8pfSxvbkludm9rZVRhc2s6ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3JldHVybiB0Lmludm9rZVRhc2sobixvLGksYSl9LG9uQ2FuY2VsVGFzazpmdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdC5jYW5jZWxUYXNrKG4sbyl9fSxkPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3Rhc2tDb3VudHM9e21pY3JvVGFzazowLG1hY3JvVGFzazowLGV2ZW50VGFzazowfSx0aGlzLnpvbmU9dCx0aGlzLl9wYXJlbnREZWxlZ2F0ZT1lLHRoaXMuX2ZvcmtaUz1uJiYobiYmbi5vbkZvcms/bjplLl9mb3JrWlMpLHRoaXMuX2ZvcmtEbGd0PW4mJihuLm9uRm9yaz9lOmUuX2ZvcmtEbGd0KSx0aGlzLl9mb3JrQ3VyclpvbmU9biYmKG4ub25Gb3JrP3RoaXMuem9uZTplLl9mb3JrQ3VyclpvbmUpLHRoaXMuX2ludGVyY2VwdFpTPW4mJihuLm9uSW50ZXJjZXB0P246ZS5faW50ZXJjZXB0WlMpLHRoaXMuX2ludGVyY2VwdERsZ3Q9biYmKG4ub25JbnRlcmNlcHQ/ZTplLl9pbnRlcmNlcHREbGd0KSx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZT1uJiYobi5vbkludGVyY2VwdD90aGlzLnpvbmU6ZS5faW50ZXJjZXB0Q3VyclpvbmUpLHRoaXMuX2ludm9rZVpTPW4mJihuLm9uSW52b2tlP246ZS5faW52b2tlWlMpLHRoaXMuX2ludm9rZURsZ3Q9biYmKG4ub25JbnZva2U/ZTplLl9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1uJiYobi5vbkludm9rZT90aGlzLnpvbmU6ZS5faW52b2tlQ3VyclpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9biYmKG4ub25IYW5kbGVFcnJvcj9uOmUuX2hhbmRsZUVycm9yWlMpLHRoaXMuX2hhbmRsZUVycm9yRGxndD1uJiYobi5vbkhhbmRsZUVycm9yP2U6ZS5faGFuZGxlRXJyb3JEbGd0KSx0aGlzLl9oYW5kbGVFcnJvckN1cnJab25lPW4mJihuLm9uSGFuZGxlRXJyb3I/dGhpcy56b25lOmUuX2hhbmRsZUVycm9yQ3VyclpvbmUpLHRoaXMuX3NjaGVkdWxlVGFza1pTPW4mJihuLm9uU2NoZWR1bGVUYXNrP246ZS5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9biYmKG4ub25TY2hlZHVsZVRhc2s/ZTplLl9zY2hlZHVsZVRhc2tEbGd0KSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT1uJiYobi5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6ZS5fc2NoZWR1bGVUYXNrQ3VyclpvbmUpLHRoaXMuX2ludm9rZVRhc2taUz1uJiYobi5vbkludm9rZVRhc2s/bjplLl9pbnZva2VUYXNrWlMpLHRoaXMuX2ludm9rZVRhc2tEbGd0PW4mJihuLm9uSW52b2tlVGFzaz9lOmUuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9biYmKG4ub25JbnZva2VUYXNrP3RoaXMuem9uZTplLl9pbnZva2VUYXNrQ3VyclpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1uJiYobi5vbkNhbmNlbFRhc2s/bjplLl9jYW5jZWxUYXNrWlMpLHRoaXMuX2NhbmNlbFRhc2tEbGd0PW4mJihuLm9uQ2FuY2VsVGFzaz9lOmUuX2NhbmNlbFRhc2tEbGd0KSx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9biYmKG4ub25DYW5jZWxUYXNrP3RoaXMuem9uZTplLl9jYW5jZWxUYXNrQ3VyclpvbmUpLHRoaXMuX2hhc1Rhc2taUz1udWxsLHRoaXMuX2hhc1Rhc2tEbGd0PW51bGwsdGhpcy5faGFzVGFza0RsZ3RPd25lcj1udWxsLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1udWxsO3ZhciBvPW4mJm4ub25IYXNUYXNrOyhvfHxlJiZlLl9oYXNUYXNrWlMpJiYodGhpcy5faGFzVGFza1pTPW8/bjpjLHRoaXMuX2hhc1Rhc2tEbGd0PWUsdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT10LG4ub25TY2hlZHVsZVRhc2t8fCh0aGlzLl9zY2hlZHVsZVRhc2taUz1jLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9ZSx0aGlzLl9zY2hlZHVsZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLG4ub25JbnZva2VUYXNrfHwodGhpcy5faW52b2tlVGFza1pTPWMsdGhpcy5faW52b2tlVGFza0RsZ3Q9ZSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxuLm9uQ2FuY2VsVGFza3x8KHRoaXMuX2NhbmNlbFRhc2taUz1jLHRoaXMuX2NhbmNlbFRhc2tEbGd0PWUsdGhpcy5fY2FuY2VsVGFza0N1cnJab25lPXRoaXMuem9uZSkpfXJldHVybiB0LnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2ZvcmtaUz90aGlzLl9mb3JrWlMub25Gb3JrKHRoaXMuX2ZvcmtEbGd0LHRoaXMuem9uZSx0LGUpOm5ldyBzKHQsZSl9LHQucHJvdG90eXBlLmludGVyY2VwdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTP3RoaXMuX2ludGVyY2VwdFpTLm9uSW50ZXJjZXB0KHRoaXMuX2ludGVyY2VwdERsZ3QsdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsdCxlLG4pOmV9LHQucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbih0LGUsbixvLGkpe3JldHVybiB0aGlzLl9pbnZva2VaUz90aGlzLl9pbnZva2VaUy5vbkludm9rZSh0aGlzLl9pbnZva2VEbGd0LHRoaXMuX2ludm9rZUN1cnJab25lLHQsZSxuLG8saSk6ZS5hcHBseShuLG8pfSx0LnByb3RvdHlwZS5oYW5kbGVFcnJvcj1mdW5jdGlvbih0LGUpe3JldHVybiF0aGlzLl9oYW5kbGVFcnJvclpTfHx0aGlzLl9oYW5kbGVFcnJvclpTLm9uSGFuZGxlRXJyb3IodGhpcy5faGFuZGxlRXJyb3JEbGd0LHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUsdCxlKX0sdC5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZTtpZih0aGlzLl9zY2hlZHVsZVRhc2taUyl0aGlzLl9oYXNUYXNrWlMmJm4uX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwobj10aGlzLl9zY2hlZHVsZVRhc2taUy5vblNjaGVkdWxlVGFzayh0aGlzLl9zY2hlZHVsZVRhc2tEbGd0LHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLHQsZSkpfHwobj1lKTtlbHNlIGlmKGUuc2NoZWR1bGVGbillLnNjaGVkdWxlRm4oZSk7ZWxzZXtpZihlLnR5cGUhPXcpdGhyb3cgbmV3IEVycm9yKCJUYXNrIGlzIG1pc3Npbmcgc2NoZWR1bGVGbi4iKTtiKGUpfXJldHVybiBufSx0LnByb3RvdHlwZS5pbnZva2VUYXNrPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0aGlzLl9pbnZva2VUYXNrWlM/dGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUsdCxlLG4sbyk6ZS5jYWxsYmFjay5hcHBseShuLG8pfSx0LnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQsZSl7dmFyIG47aWYodGhpcy5fY2FuY2VsVGFza1pTKW49dGhpcy5fY2FuY2VsVGFza1pTLm9uQ2FuY2VsVGFzayh0aGlzLl9jYW5jZWxUYXNrRGxndCx0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmUsdCxlKTtlbHNle2lmKCFlLmNhbmNlbEZuKXRocm93IEVycm9yKCJUYXNrIGlzIG5vdCBjYW5jZWxhYmxlIik7bj1lLmNhbmNlbEZuKGUpfXJldHVybiBufSx0LnByb3RvdHlwZS5oYXNUYXNrPWZ1bmN0aW9uKHQsZSl7dHJ5e3RoaXMuX2hhc1Rhc2taUyYmdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCx0aGlzLl9oYXNUYXNrQ3VyclpvbmUsdCxlKX1jYXRjaChlKXt0aGlzLmhhbmRsZUVycm9yKHQsZSl9fSx0LnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdGFza0NvdW50cyxvPW5bdF0saT1uW3RdPW8rZTtpZihpPDApdGhyb3cgbmV3IEVycm9yKCJNb3JlIHRhc2tzIGV4ZWN1dGVkIHRoZW4gd2VyZSBzY2hlZHVsZWQuIik7MCE9byYmMCE9aXx8dGhpcy5oYXNUYXNrKHRoaXMuem9uZSx7bWljcm9UYXNrOm4ubWljcm9UYXNrPjAsbWFjcm9UYXNrOm4ubWFjcm9UYXNrPjAsZXZlbnRUYXNrOm4uZXZlbnRUYXNrPjAsY2hhbmdlOnR9KX0sdH0pKCkscD0oZnVuY3Rpb24oKXtmdW5jdGlvbiBlKG4sbyxpLGEscixzKXtpZih0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9bix0aGlzLnNvdXJjZT1vLHRoaXMuZGF0YT1hLHRoaXMuc2NoZWR1bGVGbj1yLHRoaXMuY2FuY2VsRm49cywhaSl0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5jYWxsYmFjaz1pO3ZhciBsPXRoaXM7dGhpcy5pbnZva2U9bj09PVMmJmEmJmEudXNlRz9lLmludm9rZVRhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnZva2VUYXNrLmNhbGwodCxsLHRoaXMsYXJndW1lbnRzKX19cmV0dXJuIGUuaW52b2tlVGFzaz1mdW5jdGlvbih0LGUsbil7dHx8KHQ9dGhpcyksVCsrO3RyeXtyZXR1cm4gdC5ydW5Db3VudCsrLHQuem9uZS5ydW5UYXNrKHQsZSxuKX1maW5hbGx5ezE9PVQmJnkoKSxULS19fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInpvbmUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fem9uZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInN0YXRlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXRlfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNhbmNlbFNjaGVkdWxlUmVxdWVzdD1mdW5jdGlvbigpe3RoaXMuX3RyYW5zaXRpb25UbyhDLE0pfSxlLnByb3RvdHlwZS5fdHJhbnNpdGlvblRvPWZ1bmN0aW9uKHQsZSxuKXtpZih0aGlzLl9zdGF0ZSE9PWUmJnRoaXMuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IodGhpcy50eXBlKyIgJyIrdGhpcy5zb3VyY2UrIic6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnIit0KyInLCBleHBlY3Rpbmcgc3RhdGUgJyIrZSsiJyIrKG4/IiBvciAnIituKyInIjoiIikrIiwgd2FzICciK3RoaXMuX3N0YXRlKyInLiIpO3RoaXMuX3N0YXRlPXQsdD09QyYmKHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCl9LGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YSYmdm9pZCAwIT09dGhpcy5kYXRhLmhhbmRsZUlkP3RoaXMuZGF0YS5oYW5kbGVJZC50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6dGhpcy50eXBlLHN0YXRlOnRoaXMuc3RhdGUsc291cmNlOnRoaXMuc291cmNlLHpvbmU6dGhpcy56b25lLm5hbWUscnVuQ291bnQ6dGhpcy5ydW5Db3VudH19LGV9KSgpLG09YSgic2V0VGltZW91dCIpLHU9YSgiUHJvbWlzZSIpLGY9YSgidGhlbiIpLGc9W10saD0hMTtmdW5jdGlvbiBiKGUpe2lmKDA9PT1UJiYwPT09Zy5sZW5ndGgpaWYobHx8dFt1XSYmKGw9dFt1XS5yZXNvbHZlKDApKSxsKXt2YXIgbj1sW2ZdO258fChuPWwudGhlbiksbi5jYWxsKGwseSl9ZWxzZSB0W21dKHksMCk7ZSYmZy5wdXNoKGUpfWZ1bmN0aW9uIHkoKXtpZighaCl7Zm9yKGg9ITA7Zy5sZW5ndGg7KXt2YXIgdD1nO2c9W107Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07dHJ5e24uem9uZS5ydW5UYXNrKG4sbnVsbCxudWxsKX1jYXRjaCh0KXtFLm9uVW5oYW5kbGVkRXJyb3IodCl9fX1FLm1pY3JvdGFza0RyYWluRG9uZSgpLGg9ITF9fXZhciBfPXtuYW1lOiJOTyBaT05FIn0sQz0ibm90U2NoZWR1bGVkIixNPSJzY2hlZHVsaW5nIix2PSJzY2hlZHVsZWQiLHg9InJ1bm5pbmciLE89ImNhbmNlbGluZyIsUD0idW5rbm93biIsdz0ibWljcm9UYXNrIixrPSJtYWNyb1Rhc2siLFM9ImV2ZW50VGFzayIsRD17fSxFPXtzeW1ib2w6YSxjdXJyZW50Wm9uZUZyYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIFJ9LG9uVW5oYW5kbGVkRXJyb3I6TixtaWNyb3Rhc2tEcmFpbkRvbmU6TixzY2hlZHVsZU1pY3JvVGFzazpiLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIXNbYSgiaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvciIpXX0scGF0Y2hFdmVudFRhcmdldDpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaE9uUHJvcGVydGllczpOLHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIE59LGJpbmRBcmd1bWVudHM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hUaGVuOmZ1bmN0aW9uKCl7cmV0dXJuIE59LHBhdGNoTWFjcm9UYXNrOmZ1bmN0aW9uKCl7cmV0dXJuIE59LHBhdGNoRXZlbnRQcm90b3R5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gTn0saXNJRU9yRWRnZTpmdW5jdGlvbigpe3JldHVybiExfSxnZXRHbG9iYWxPYmplY3RzOmZ1bmN0aW9uKCl7fSxPYmplY3REZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiBOfSxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24oKXt9LE9iamVjdENyZWF0ZTpmdW5jdGlvbigpe30sQXJyYXlTbGljZTpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaENsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuIE59LHdyYXBXaXRoQ3VycmVudFpvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sZmlsdGVyUHJvcGVydGllczpmdW5jdGlvbigpe3JldHVybltdfSxhdHRhY2hPcmlnaW5Ub1BhdGNoZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTn0sX3JlZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oKXtyZXR1cm4gTn0scGF0Y2hDYWxsYmFja3M6ZnVuY3Rpb24oKXtyZXR1cm4gTn19LFI9e3BhcmVudDpudWxsLHpvbmU6bmV3IHMobnVsbCxudWxsKX0sQT1udWxsLFQ9MDtmdW5jdGlvbiBOKCl7fW8oIlpvbmUiLCJab25lIiksdC5ab25lPXN9KSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93fHwidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGZ8fFF2KTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCnZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsZT1PYmplY3QuZGVmaW5lUHJvcGVydHksbj1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysbz1PYmplY3QuY3JlYXRlLGk9QXJyYXkucHJvdG90eXBlLnNsaWNlLGE9ImFkZEV2ZW50TGlzdGVuZXIiLHI9InJlbW92ZUV2ZW50TGlzdGVuZXIiLHM9Wm9uZS5fX3N5bWJvbF9fKGEpLGw9Wm9uZS5fX3N5bWJvbF9fKHIpLGM9InRydWUiLGQ9ImZhbHNlIixwPVpvbmUuX19zeW1ib2xfXygiIik7ZnVuY3Rpb24gbSh0LGUpe3JldHVybiBab25lLmN1cnJlbnQud3JhcCh0LGUpfWZ1bmN0aW9uIHUodCxlLG4sbyxpKXtyZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKHQsZSxuLG8saSl9dmFyIGY9Wm9uZS5fX3N5bWJvbF9fLGc9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3csaD1nP3dpbmRvdzp2b2lkIDAsYj1nJiZofHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGZ8fFF2LHk9W251bGxdO2Z1bmN0aW9uIF8odCxlKXtmb3IodmFyIG49dC5sZW5ndGgtMTtuPj0wO24tLSkiZnVuY3Rpb24iPT10eXBlb2YgdFtuXSYmKHRbbl09bSh0W25dLGUrIl8iK24pKTtyZXR1cm4gdH1mdW5jdGlvbiBDKHQpe3JldHVybiF0fHwhMSE9PXQud3JpdGFibGUmJiEoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0JiZ2b2lkIDA9PT10LnNldCl9dmFyIE09InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLHY9ISgibnciaW4gYikmJnZvaWQgMCE9PWIucHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpLHg9IXYmJiFNJiYhKCFnfHwhaC5IVE1MRWxlbWVudCksTz12b2lkIDAhPT1iLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoYi5wcm9jZXNzKSYmIU0mJiEoIWd8fCFoLkhUTUxFbGVtZW50KSxQPXt9LHc9ZnVuY3Rpb24odCl7aWYodD10fHxiLmV2ZW50KXt2YXIgZT1QW3QudHlwZV07ZXx8KGU9UFt0LnR5cGVdPWYoIk9OX1BST1BFUlRZIit0LnR5cGUpKTt2YXIgbixvPXRoaXN8fHQudGFyZ2V0fHxiLGk9b1tlXTtyZXR1cm4geCYmbz09PWgmJiJlcnJvciI9PT10LnR5cGU/ITA9PT0obj1pJiZpLmNhbGwodGhpcyx0Lm1lc3NhZ2UsdC5maWxlbmFtZSx0LmxpbmVubyx0LmNvbG5vLHQuZXJyb3IpKSYmdC5wcmV2ZW50RGVmYXVsdCgpOm51bGw9PShuPWkmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXx8bnx8dC5wcmV2ZW50RGVmYXVsdCgpLG59fTtmdW5jdGlvbiBrKG4sbyxpKXt2YXIgYT10KG4sbyk7aWYoIWEmJmkmJnQoaSxvKSYmKGE9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksYSYmYS5jb25maWd1cmFibGUpe3ZhciByPWYoIm9uIitvKyJwYXRjaGVkIik7aWYoIW4uaGFzT3duUHJvcGVydHkocil8fCFuW3JdKXtkZWxldGUgYS53cml0YWJsZSxkZWxldGUgYS52YWx1ZTt2YXIgcz1hLmdldCxsPWEuc2V0LGM9by5zdWJzdHIoMiksZD1QW2NdO2R8fChkPVBbY109ZigiT05fUFJPUEVSVFkiK2MpKSxhLnNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2V8fG4hPT1ifHwoZT1iKSxlJiYoZVtkXSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGMsdyksbCYmbC5hcHBseShlLHkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhlW2RdPXQsZS5hZGRFdmVudExpc3RlbmVyKGMsdywhMSkpOmVbZF09bnVsbCl9LGEuZ2V0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZih0fHxuIT09Ynx8KHQ9YiksIXQpcmV0dXJuIG51bGw7dmFyIGU9dFtkXTtpZihlKXJldHVybiBlO2lmKHMpe3ZhciBpPXMmJnMuY2FsbCh0aGlzKTtpZihpKXJldHVybiBhLnNldC5jYWxsKHRoaXMsaSksImZ1bmN0aW9uIj09dHlwZW9mIHQucmVtb3ZlQXR0cmlidXRlJiZ0LnJlbW92ZUF0dHJpYnV0ZShvKSxpfXJldHVybiBudWxsfSxlKG4sbyxhKSxuW3JdPSEwfX19ZnVuY3Rpb24gUyh0LGUsbil7aWYoZSlmb3IodmFyIG89MDtvPGUubGVuZ3RoO28rKylrKHQsIm9uIitlW29dLG4pO2Vsc2V7dmFyIGk9W107Zm9yKHZhciBhIGluIHQpIm9uIj09YS5zdWJzdHIoMCwyKSYmaS5wdXNoKGEpO2Zvcih2YXIgcj0wO3I8aS5sZW5ndGg7cisrKWsodCxpW3JdLG4pfX12YXIgRD1mKCJvcmlnaW5hbEluc3RhbmNlIik7ZnVuY3Rpb24gRSh0KXt2YXIgbj1iW3RdO2lmKG4pe2JbZih0KV09bixiW3RdPWZ1bmN0aW9uKCl7dmFyIGU9Xyhhcmd1bWVudHMsdCk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6dGhpc1tEXT1uZXcgbjticmVhaztjYXNlIDE6dGhpc1tEXT1uZXcgbihlWzBdKTticmVhaztjYXNlIDI6dGhpc1tEXT1uZXcgbihlWzBdLGVbMV0pO2JyZWFrO2Nhc2UgMzp0aGlzW0RdPW5ldyBuKGVbMF0sZVsxXSxlWzJdKTticmVhaztjYXNlIDQ6dGhpc1tEXT1uZXcgbihlWzBdLGVbMV0sZVsyXSxlWzNdKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiQXJnIGxpc3QgdG9vIGxvbmcuIil9fSxUKGJbdF0sbik7dmFyIG8saT1uZXcgbigoZnVuY3Rpb24oKXt9KSk7Zm9yKG8gaW4gaSkiWE1MSHR0cFJlcXVlc3QiPT09dCYmInJlc3BvbnNlQmxvYiI9PT1vfHwoZnVuY3Rpb24obil7ImZ1bmN0aW9uIj09dHlwZW9mIGlbbl0/Ylt0XS5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tEXVtuXS5hcHBseSh0aGlzW0RdLGFyZ3VtZW50cyl9OmUoYlt0XS5wcm90b3R5cGUsbix7c2V0OmZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBlPyh0aGlzW0RdW25dPW0oZSx0KyIuIituKSxUKHRoaXNbRF1bbl0sZSkpOnRoaXNbRF1bbl09ZX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbRF1bbl19fSl9KShvKTtmb3IobyBpbiBuKSJwcm90b3R5cGUiIT09byYmbi5oYXNPd25Qcm9wZXJ0eShvKSYmKGJbdF1bb109bltvXSl9fWZ1bmN0aW9uIFIoZSxvLGkpe2Zvcih2YXIgYT1lO2EmJiFhLmhhc093blByb3BlcnR5KG8pOylhPW4oYSk7IWEmJmVbb10mJihhPWUpO3ZhciByPWYobykscz1udWxsO2lmKGEmJighKHM9YVtyXSl8fCFhLmhhc093blByb3BlcnR5KHIpKSYmKHM9YVtyXT1hW29dLEMoYSYmdChhLG8pKSkpe3ZhciBsPWkocyxyLG8pO2Fbb109ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLGFyZ3VtZW50cyl9LFQoYVtvXSxzKX1yZXR1cm4gc31mdW5jdGlvbiBBKHQsZSxuKXt2YXIgbz1udWxsO2Z1bmN0aW9uIGkodCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFyZ3NbZS5jYklkeF09ZnVuY3Rpb24oKXt0Lmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG8uYXBwbHkoZS50YXJnZXQsZS5hcmdzKSx0fW89Uih0LGUsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG8pe3ZhciBhPW4oZSxvKTtyZXR1cm4gYS5jYklkeD49MCYmImZ1bmN0aW9uIj09dHlwZW9mIG9bYS5jYklkeF0/dShhLm5hbWUsb1thLmNiSWR4XSxhLGkpOnQuYXBwbHkoZSxvKX19KSl9ZnVuY3Rpb24gVCh0LGUpe3RbZigiT3JpZ2luYWxEZWxlZ2F0ZSIpXT1lfXZhciBOPSExLHo9ITE7ZnVuY3Rpb24gSSgpe2lmKE4pcmV0dXJuIHo7Tj0hMDt0cnl7dmFyIHQ9aC5uYXZpZ2F0b3IudXNlckFnZW50Oy0xPT09dC5pbmRleE9mKCJNU0lFICIpJiYtMT09PXQuaW5kZXhPZigiVHJpZGVudC8iKSYmLTE9PT10LmluZGV4T2YoIkVkZ2UvIil8fCh6PSEwKX1jYXRjaCh0KXt9cmV0dXJuIHp9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL1pvbmUuX19sb2FkX3BhdGNoKCJab25lQXdhcmVQcm9taXNlIiwoZnVuY3Rpb24odCxlLG4pe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaT1PYmplY3QuZGVmaW5lUHJvcGVydHksYT1uLnN5bWJvbCxyPVtdLHM9ITA9PT10W2EoIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04iKV0sbD1hKCJQcm9taXNlIiksYz1hKCJ0aGVuIik7bi5vblVuaGFuZGxlZEVycm9yPWZ1bmN0aW9uKHQpe2lmKG4uc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGU9dCYmdC5yZWplY3Rpb247ZT9jb25zb2xlLmVycm9yKCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246IixlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOmUsIjsgWm9uZToiLHQuem9uZS5uYW1lLCI7IFRhc2s6Iix0LnRhc2smJnQudGFzay5zb3VyY2UsIjsgVmFsdWU6IixlLGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrOnZvaWQgMCk6Y29uc29sZS5lcnJvcih0KX19LG4ubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWZ1bmN0aW9uKCl7dmFyIHQ9ci5zaGlmdCgpO3RyeXt0LnpvbmUucnVuR3VhcmRlZCgoZnVuY3Rpb24oKXtpZih0LnRocm93T3JpZ2luYWwpdGhyb3cgdC5yZWplY3Rpb247dGhyb3cgdH0pKX1jYXRjaCh0KXshKGZ1bmN0aW9uIG8odCl7bi5vblVuaGFuZGxlZEVycm9yKHQpO3RyeXt2YXIgbz1lW2RdOyJmdW5jdGlvbiI9PXR5cGVvZiBvJiZvLmNhbGwodGhpcyx0KX1jYXRjaCh0KXt9fSkodCl9fTtyLmxlbmd0aDspdCgpfTt2YXIgZD1hKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpO2Z1bmN0aW9uIHAodCl7cmV0dXJuIHQmJnQudGhlbn1mdW5jdGlvbiBtKHQpe3JldHVybiB0fWZ1bmN0aW9uIHUodCl7cmV0dXJuIEQucmVqZWN0KHQpfXZhciBmPWEoInN0YXRlIiksZz1hKCJ2YWx1ZSIpLGg9YSgiZmluYWxseSIpLGI9YSgicGFyZW50UHJvbWlzZVZhbHVlIikseT1hKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxfPW51bGwsQz0hMCxNPSExO2Z1bmN0aW9uIHYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dHJ5e08odCxlLG4pfWNhdGNoKGUpe08odCwhMSxlKX19fXZhciB4PWEoImN1cnJlbnRUYXNrVHJhY2UiKTtmdW5jdGlvbiBPKHQsbyxhKXt2YXIgbCxjPShsPSExLGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7bHx8KGw9ITAsZS5hcHBseShudWxsLGFyZ3VtZW50cykpfX0pO2lmKHQ9PT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2UgcmVzb2x2ZWQgd2l0aCBpdHNlbGYiKTtpZih0W2ZdPT09Xyl7dmFyIGQ9bnVsbDt0cnl7Im9iamVjdCIhPXR5cGVvZiBhJiYiZnVuY3Rpb24iIT10eXBlb2YgYXx8KGQ9YSYmYS50aGVuKX1jYXRjaChlKXtyZXR1cm4gYygoZnVuY3Rpb24oKXtPKHQsITEsZSl9KSkoKSx0fWlmKG8hPT1NJiZhIGluc3RhbmNlb2YgRCYmYS5oYXNPd25Qcm9wZXJ0eShmKSYmYS5oYXNPd25Qcm9wZXJ0eShnKSYmYVtmXSE9PV8pdyhhKSxPKHQsYVtmXSxhW2ddKTtlbHNlIGlmKG8hPT1NJiYiZnVuY3Rpb24iPT10eXBlb2YgZCl0cnl7ZC5jYWxsKGEsYyh2KHQsbykpLGModih0LCExKSkpfWNhdGNoKGUpe2MoKGZ1bmN0aW9uKCl7Tyh0LCExLGUpfSkpKCl9ZWxzZXt0W2ZdPW87dmFyIHA9dFtnXTtpZih0W2ddPWEsdFtoXT09PWgmJm89PT1DJiYodFtmXT10W3ldLHRbZ109dFtiXSksbz09PU0mJmEgaW5zdGFuY2VvZiBFcnJvcil7dmFyIG09ZS5jdXJyZW50VGFzayYmZS5jdXJyZW50VGFzay5kYXRhJiZlLmN1cnJlbnRUYXNrLmRhdGEuX19jcmVhdGlvblRyYWNlX187bSYmaShhLHgse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLHZhbHVlOm19KX1mb3IodmFyIHU9MDt1PHAubGVuZ3RoOylrKHQscFt1KytdLHBbdSsrXSxwW3UrK10scFt1KytdKTtpZigwPT1wLmxlbmd0aCYmbz09TSl7dFtmXT0wO3ZhciBQPWE7dHJ5e3Rocm93IG5ldyBFcnJvcigiVW5jYXVnaHQgKGluIHByb21pc2UpOiAiKyhmdW5jdGlvbiBTKHQpe3JldHVybiB0JiZ0LnRvU3RyaW5nPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz8odC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5uYW1lfHwiIikrIjogIitKU09OLnN0cmluZ2lmeSh0KTp0P3QudG9TdHJpbmcoKTpPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KShhKSsoYSYmYS5zdGFjaz8iXG4iK2Euc3RhY2s6IiIpKX1jYXRjaCh0KXtQPXR9cyYmKFAudGhyb3dPcmlnaW5hbD0hMCksUC5yZWplY3Rpb249YSxQLnByb21pc2U9dCxQLnpvbmU9ZS5jdXJyZW50LFAudGFzaz1lLmN1cnJlbnRUYXNrLHIucHVzaChQKSxuLnNjaGVkdWxlTWljcm9UYXNrKCl9fX1yZXR1cm4gdH12YXIgUD1hKCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlciIpO2Z1bmN0aW9uIHcodCl7aWYoMD09PXRbZl0pe3RyeXt2YXIgbj1lW1BdO24mJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLmNhbGwodGhpcyx7cmVqZWN0aW9uOnRbZ10scHJvbWlzZTp0fSl9Y2F0Y2godCl7fXRbZl09TTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0PT09cltvXS5wcm9taXNlJiZyLnNwbGljZShvLDEpfX1mdW5jdGlvbiBrKHQsZSxuLG8saSl7dyh0KTt2YXIgYT10W2ZdLHI9YT8iZnVuY3Rpb24iPT10eXBlb2Ygbz9vOm06ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTp1O2Uuc2NoZWR1bGVNaWNyb1Rhc2soIlByb21pc2UudGhlbiIsKGZ1bmN0aW9uKCl7dHJ5e3ZhciBvPXRbZ10saT0hIW4mJmg9PT1uW2hdO2kmJihuW2JdPW8sblt5XT1hKTt2YXIgcz1lLnJ1bihyLHZvaWQgMCxpJiZyIT09dSYmciE9PW0/W106W29dKTtPKG4sITAscyl9Y2F0Y2godCl7TyhuLCExLHQpfX0pLG4pfXZhciBTPWZ1bmN0aW9uKCl7fSxEPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7dmFyIG49dGhpcztpZighKG4gaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLiIpO25bZl09XyxuW2ddPVtdO3RyeXtlJiZlKHYobixDKSx2KG4sTSkpfWNhdGNoKHQpe08obiwhMSx0KX19cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9In0sdC5yZXNvbHZlPWZ1bmN0aW9uKHQpe3JldHVybiBPKG5ldyB0aGlzKG51bGwpLEMsdCl9LHQucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBPKG5ldyB0aGlzKG51bGwpLE0sdCl9LHQucmFjZT1mdW5jdGlvbih0KXt2YXIgZSxuLG89bmV3IHRoaXMoKGZ1bmN0aW9uKHQsbyl7ZT10LG49b30pKTtmdW5jdGlvbiBpKHQpe2UodCl9ZnVuY3Rpb24gYSh0KXtuKHQpfWZvcih2YXIgcj0wLHM9dDtyPHMubGVuZ3RoO3IrKyl7dmFyIGw9c1tyXTtwKGwpfHwobD10aGlzLnJlc29sdmUobCkpLGwudGhlbihpLGEpfXJldHVybiBvfSx0LmFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdC5hbGxXaXRoQ2FsbGJhY2soZSl9LHQuYWxsU2V0dGxlZD1mdW5jdGlvbihlKXtyZXR1cm4odGhpcyYmdGhpcy5wcm90b3R5cGUgaW5zdGFuY2VvZiB0P3RoaXM6dCkuYWxsV2l0aENhbGxiYWNrKGUse3RoZW5DYWxsYmFjazpmdW5jdGlvbih0KXtyZXR1cm57c3RhdHVzOiJmdWxmaWxsZWQiLHZhbHVlOnR9fSxlcnJvckNhbGxiYWNrOmZ1bmN0aW9uKHQpe3JldHVybntzdGF0dXM6InJlamVjdGVkIixyZWFzb246dH19fSl9LHQuYWxsV2l0aENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuLG8saT1uZXcgdGhpcygoZnVuY3Rpb24odCxlKXtuPXQsbz1lfSkpLGE9MixyPTAscz1bXSxsPWZ1bmN0aW9uKHQpe3AodCl8fCh0PWMucmVzb2x2ZSh0KSk7dmFyIGk9cjt0cnl7dC50aGVuKChmdW5jdGlvbih0KXtzW2ldPWU/ZS50aGVuQ2FsbGJhY2sodCk6dCwwPT0tLWEmJm4ocyl9KSwoZnVuY3Rpb24odCl7ZT8oc1tpXT1lLmVycm9yQ2FsbGJhY2sodCksMD09LS1hJiZuKHMpKTpvKHQpfSkpfWNhdGNoKHQpe28odCl9YSsrLHIrK30sYz10aGlzLGQ9MCxtPXQ7ZDxtLmxlbmd0aDtkKyspbChtW2RdKTtyZXR1cm4gMD09KGEtPTIpJiZuKHMpLGl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxTeW1ib2wudG9TdHJpbmdUYWcse2dldDpmdW5jdGlvbigpe3JldHVybiJQcm9taXNlIn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsU3ltYm9sLnNwZWNpZXMse2dldDpmdW5jdGlvbigpe3JldHVybiB0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24obixvKXt2YXIgaT10aGlzLmNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXTtpJiYiZnVuY3Rpb24iPT10eXBlb2YgaXx8KGk9dGhpcy5jb25zdHJ1Y3Rvcnx8dCk7dmFyIGE9bmV3IGkoUykscj1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZl09PV8/dGhpc1tnXS5wdXNoKHIsYSxuLG8pOmsodGhpcyxyLGEsbixvKSxhfSx0LnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LHQucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24obil7dmFyIG89dGhpcy5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc107byYmImZ1bmN0aW9uIj09dHlwZW9mIG98fChvPXQpO3ZhciBpPW5ldyBvKFMpO2lbaF09aDt2YXIgYT1lLmN1cnJlbnQ7cmV0dXJuIHRoaXNbZl09PV8/dGhpc1tnXS5wdXNoKGEsaSxuLG4pOmsodGhpcyxhLGksbixuKSxpfSx0fSkoKTtELnJlc29sdmU9RC5yZXNvbHZlLEQucmVqZWN0PUQucmVqZWN0LEQucmFjZT1ELnJhY2UsRC5hbGw9RC5hbGw7dmFyIEU9dFtsXT10LlByb21pc2U7dC5Qcm9taXNlPUQ7dmFyIEE9YSgidGhlblBhdGNoZWQiKTtmdW5jdGlvbiBUKHQpe3ZhciBlPXQucHJvdG90eXBlLG49byhlLCJ0aGVuIik7aWYoIW58fCExIT09bi53cml0YWJsZSYmbi5jb25maWd1cmFibGUpe3ZhciBpPWUudGhlbjtlW2NdPWksdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyBEKChmdW5jdGlvbih0LGUpe2kuY2FsbChuLHQsZSl9KSkudGhlbih0LGUpfSx0W0FdPSEwfX1yZXR1cm4gbi5wYXRjaFRoZW49VCxFJiYoVChFKSxSKHQsImZldGNoIiwoZnVuY3Rpb24odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89dC5hcHBseShlLG4pO2lmKG8gaW5zdGFuY2VvZiBEKXJldHVybiBvO3ZhciBpPW8uY29uc3RydWN0b3I7cmV0dXJuIGlbQV18fFQoaSksb319KSh0KX0pKSksUHJvbWlzZVtlLl9fc3ltYm9sX18oInVuY2F1Z2h0UHJvbWlzZUVycm9ycyIpXT1yLER9KSksCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwpab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgZT1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1mKCJPcmlnaW5hbERlbGVnYXRlIiksbz1mKCJQcm9taXNlIiksaT1mKCJFcnJvciIpLGE9ZnVuY3Rpb24gYSgpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2YXIgcj10aGlzW25dO2lmKHIpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHI/ZS5jYWxsKHIpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIHM9dFtvXTtpZihzKXJldHVybiBlLmNhbGwocyl9aWYodGhpcz09PUVycm9yKXt2YXIgbD10W2ldO2lmKGwpcmV0dXJuIGUuY2FsbChsKX19cmV0dXJuIGUuY2FsbCh0aGlzKX07YVtuXT1lLEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1hO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlJiZ0aGlzIGluc3RhbmNlb2YgUHJvbWlzZT8iW29iamVjdCBQcm9taXNlXSI6ci5jYWxsKHRoaXMpfX0pKTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCnZhciBIPSExO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt2YXIgRj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtIPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixGLEYpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixGLEYpfWNhdGNoKHQpe0g9ITF9dmFyIEw9e3VzZUc6ITB9LEI9e30sVj17fSxqPW5ldyBSZWdFeHAoIl4iK3ArIihcXHcrKSh0cnVlfGZhbHNlKSQiKSxVPWYoInByb3BhZ2F0aW9uU3RvcHBlZCIpO2Z1bmN0aW9uIEcodCxlKXt2YXIgbj0oZT9lKHQpOnQpK2Qsbz0oZT9lKHQpOnQpK2MsaT1wK24sYT1wK287Qlt0XT17fSxCW3RdLmZhbHNlPWksQlt0XS50cnVlPWF9ZnVuY3Rpb24gVyh0LGUsbyl7dmFyIGk9byYmby5hZGR8fGEscz1vJiZvLnJtfHxyLGw9byYmby5saXN0ZW5lcnN8fCJldmVudExpc3RlbmVycyIsbT1vJiZvLnJtQWxsfHwicmVtb3ZlQWxsTGlzdGVuZXJzIix1PWYoaSksZz0iLiIraSsiOiIsaD1mdW5jdGlvbih0LGUsbil7aWYoIXQuaXNSZW1vdmVkKXt2YXIgbz10LmNhbGxiYWNrOyJvYmplY3QiPT10eXBlb2YgbyYmby5oYW5kbGVFdmVudCYmKHQuY2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG8uaGFuZGxlRXZlbnQodCl9LHQub3JpZ2luYWxEZWxlZ2F0ZT1vKSx0Lmludm9rZSh0LGUsW25dKTt2YXIgaT10Lm9wdGlvbnM7aSYmIm9iamVjdCI9PXR5cGVvZiBpJiZpLm9uY2UmJmVbc10uY2FsbChlLG4udHlwZSx0Lm9yaWdpbmFsRGVsZWdhdGU/dC5vcmlnaW5hbERlbGVnYXRlOnQuY2FsbGJhY2ssaSl9fSxiPWZ1bmN0aW9uKGUpe2lmKGU9ZXx8dC5ldmVudCl7dmFyIG49dGhpc3x8ZS50YXJnZXR8fHQsbz1uW0JbZS50eXBlXS5mYWxzZV07aWYobylpZigxPT09by5sZW5ndGgpaChvWzBdLG4sZSk7ZWxzZSBmb3IodmFyIGk9by5zbGljZSgpLGE9MDthPGkubGVuZ3RoJiYoIWV8fCEwIT09ZVtVXSk7YSsrKWgoaVthXSxuLGUpfX0seT1mdW5jdGlvbihlKXtpZihlPWV8fHQuZXZlbnQpe3ZhciBuPXRoaXN8fGUudGFyZ2V0fHx0LG89bltCW2UudHlwZV0udHJ1ZV07aWYobylpZigxPT09by5sZW5ndGgpaChvWzBdLG4sZSk7ZWxzZSBmb3IodmFyIGk9by5zbGljZSgpLGE9MDthPGkubGVuZ3RoJiYoIWV8fCEwIT09ZVtVXSk7YSsrKWgoaVthXSxuLGUpfX07ZnVuY3Rpb24gXyhlLG8pe2lmKCFlKXJldHVybiExO3ZhciBhPSEwO28mJnZvaWQgMCE9PW8udXNlRyYmKGE9by51c2VHKTt2YXIgcj1vJiZvLnZoLGg9ITA7byYmdm9pZCAwIT09by5jaGtEdXAmJihoPW8uY2hrRHVwKTt2YXIgXz0hMTtvJiZ2b2lkIDAhPT1vLnJ0JiYoXz1vLnJ0KTtmb3IodmFyIEM9ZTtDJiYhQy5oYXNPd25Qcm9wZXJ0eShpKTspQz1uKEMpO2lmKCFDJiZlW2ldJiYoQz1lKSwhQylyZXR1cm4hMTtpZihDW3VdKXJldHVybiExO3ZhciBNLHg9byYmby5ldmVudE5hbWVUb1N0cmluZyxPPXt9LFA9Q1t1XT1DW2ldLHc9Q1tmKHMpXT1DW3NdLGs9Q1tmKGwpXT1DW2xdLFM9Q1tmKG0pXT1DW21dO2Z1bmN0aW9uIEQodCxlKXtyZXR1cm4hSCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0PyEhdC5jYXB0dXJlOkgmJmU/ImJvb2xlYW4iPT10eXBlb2YgdD97Y2FwdHVyZTp0LHBhc3NpdmU6ITB9OnQ/Im9iamVjdCI9PXR5cGVvZiB0JiYhMSE9PXQucGFzc2l2ZT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Bhc3NpdmU6ITB9KTp0OntwYXNzaXZlOiEwfTp0fW8mJm8ucHJlcGVuZCYmKE09Q1tmKG8ucHJlcGVuZCldPUNbby5wcmVwZW5kXSk7dmFyIEU9YT9mdW5jdGlvbih0KXtpZighTy5pc0V4aXN0aW5nKXJldHVybiBQLmNhbGwoTy50YXJnZXQsTy5ldmVudE5hbWUsTy5jYXB0dXJlP3k6YixPLm9wdGlvbnMpfTpmdW5jdGlvbih0KXtyZXR1cm4gUC5jYWxsKE8udGFyZ2V0LE8uZXZlbnROYW1lLHQuaW52b2tlLE8ub3B0aW9ucyl9LFI9YT9mdW5jdGlvbih0KXtpZighdC5pc1JlbW92ZWQpe3ZhciBlPUJbdC5ldmVudE5hbWVdLG49dm9pZCAwO2UmJihuPWVbdC5jYXB0dXJlP2M6ZF0pO3ZhciBvPW4mJnQudGFyZ2V0W25dO2lmKG8pZm9yKHZhciBpPTA7aTxvLmxlbmd0aDtpKyspaWYob1tpXT09PXQpe28uc3BsaWNlKGksMSksdC5pc1JlbW92ZWQ9ITAsMD09PW8ubGVuZ3RoJiYodC5hbGxSZW1vdmVkPSEwLHQudGFyZ2V0W25dPW51bGwpO2JyZWFrfX1pZih0LmFsbFJlbW92ZWQpcmV0dXJuIHcuY2FsbCh0LnRhcmdldCx0LmV2ZW50TmFtZSx0LmNhcHR1cmU/eTpiLHQub3B0aW9ucyl9OmZ1bmN0aW9uKHQpe3JldHVybiB3LmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5pbnZva2UsdC5vcHRpb25zKX0sQT1vJiZvLmRpZmY/by5kaWZmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dHlwZW9mIGU7cmV0dXJuImZ1bmN0aW9uIj09PW4mJnQuY2FsbGJhY2s9PT1lfHwib2JqZWN0Ij09PW4mJnQub3JpZ2luYWxEZWxlZ2F0ZT09PWV9LE49Wm9uZVtmKCJVTlBBVENIRURfRVZFTlRTIildLHo9dFtmKCJQQVNTSVZFX0VWRU5UUyIpXSxJPWZ1bmN0aW9uKGUsbixpLHMsbCxwKXtyZXR1cm4gdm9pZCAwPT09bCYmKGw9ITEpLHZvaWQgMD09PXAmJihwPSExKSxmdW5jdGlvbigpe3ZhciBtPXRoaXN8fHQsdT1hcmd1bWVudHNbMF07byYmby50cmFuc2ZlckV2ZW50TmFtZSYmKHU9by50cmFuc2ZlckV2ZW50TmFtZSh1KSk7dmFyIGY9YXJndW1lbnRzWzFdO2lmKCFmKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZih2JiYidW5jYXVnaHRFeGNlcHRpb24iPT09dSlyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGc9ITE7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGYpe2lmKCFmLmhhbmRsZUV2ZW50KXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtnPSEwfWlmKCFyfHxyKGUsZixtLGFyZ3VtZW50cykpe3ZhciBiPUgmJiEheiYmLTEhPT16LmluZGV4T2YodSkseT1EKGFyZ3VtZW50c1syXSxiKTtpZihOKWZvcih2YXIgXz0wO188Ti5sZW5ndGg7XysrKWlmKHU9PT1OW19dKXJldHVybiBiP2UuY2FsbChtLHUsZix5KTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgQz0hIXkmJigiYm9vbGVhbiI9PXR5cGVvZiB5fHx5LmNhcHR1cmUpLE09ISgheXx8Im9iamVjdCIhPXR5cGVvZiB5KSYmeS5vbmNlLFA9Wm9uZS5jdXJyZW50LHc9Qlt1XTt3fHwoRyh1LHgpLHc9Qlt1XSk7dmFyIGssUz13W0M/YzpkXSxFPW1bU10sUj0hMTtpZihFKXtpZihSPSEwLGgpZm9yKF89MDtfPEUubGVuZ3RoO18rKylpZihBKEVbX10sZikpcmV0dXJufWVsc2UgRT1tW1NdPVtdO3ZhciBUPW0uY29uc3RydWN0b3IubmFtZSxJPVZbVF07SSYmKGs9SVt1XSksa3x8KGs9VCtuKyh4P3godSk6dSkpLE8ub3B0aW9ucz15LE0mJihPLm9wdGlvbnMub25jZT0hMSksTy50YXJnZXQ9bSxPLmNhcHR1cmU9QyxPLmV2ZW50TmFtZT11LE8uaXNFeGlzdGluZz1SO3ZhciBGPWE/TDp2b2lkIDA7RiYmKEYudGFza0RhdGE9Tyk7dmFyIGo9UC5zY2hlZHVsZUV2ZW50VGFzayhrLGYsRixpLHMpO3JldHVybiBPLnRhcmdldD1udWxsLEYmJihGLnRhc2tEYXRhPW51bGwpLE0mJih5Lm9uY2U9ITApLChIfHwiYm9vbGVhbiIhPXR5cGVvZiBqLm9wdGlvbnMpJiYoai5vcHRpb25zPXkpLGoudGFyZ2V0PW0sai5jYXB0dXJlPUMsai5ldmVudE5hbWU9dSxnJiYoai5vcmlnaW5hbERlbGVnYXRlPWYpLHA/RS51bnNoaWZ0KGopOkUucHVzaChqKSxsP206dm9pZCAwfX19O3JldHVybiBDW2ldPUkoUCxnLEUsUixfKSxNJiYoQy5wcmVwZW5kTGlzdGVuZXI9SShNLCIucHJlcGVuZExpc3RlbmVyOiIsKGZ1bmN0aW9uKHQpe3JldHVybiBNLmNhbGwoTy50YXJnZXQsTy5ldmVudE5hbWUsdC5pbnZva2UsTy5vcHRpb25zKX0pLFIsXywhMCkpLENbc109ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO3ZhciBpPWFyZ3VtZW50c1syXSxhPSEhaSYmKCJib29sZWFuIj09dHlwZW9mIGl8fGkuY2FwdHVyZSkscz1hcmd1bWVudHNbMV07aWYoIXMpcmV0dXJuIHcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCFyfHxyKHcscyxlLGFyZ3VtZW50cykpe3ZhciBsLG09QltuXTttJiYobD1tW2E/YzpkXSk7dmFyIHU9bCYmZVtsXTtpZih1KWZvcih2YXIgZj0wO2Y8dS5sZW5ndGg7ZisrKXt2YXIgZz11W2ZdO2lmKEEoZyxzKSlyZXR1cm4gdS5zcGxpY2UoZiwxKSxnLmlzUmVtb3ZlZD0hMCwwPT09dS5sZW5ndGgmJihnLmFsbFJlbW92ZWQ9ITAsZVtsXT1udWxsLCJzdHJpbmciPT10eXBlb2YgbiYmKGVbcCsiT05fUFJPUEVSVFkiK25dPW51bGwpKSxnLnpvbmUuY2FuY2VsVGFzayhnKSxfP2U6dm9pZCAwfXJldHVybiB3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LENbbF09ZnVuY3Rpb24oKXt2YXIgZT10aGlzfHx0LG49YXJndW1lbnRzWzBdO28mJm8udHJhbnNmZXJFdmVudE5hbWUmJihuPW8udHJhbnNmZXJFdmVudE5hbWUobikpO2Zvcih2YXIgaT1bXSxhPVkoZSx4P3gobik6bikscj0wO3I8YS5sZW5ndGg7cisrKXt2YXIgcz1hW3JdO2kucHVzaChzLm9yaWdpbmFsRGVsZWdhdGU/cy5vcmlnaW5hbERlbGVnYXRlOnMuY2FsbGJhY2spfXJldHVybiBpfSxDW21dPWZ1bmN0aW9uKCl7dmFyIGU9dGhpc3x8dCxuPWFyZ3VtZW50c1swXTtpZihuKXtvJiZvLnRyYW5zZmVyRXZlbnROYW1lJiYobj1vLnRyYW5zZmVyRXZlbnROYW1lKG4pKTt2YXIgaT1CW25dO2lmKGkpe3ZhciBhPWVbaS5mYWxzZV0scj1lW2kudHJ1ZV07aWYoYSl7dmFyIGw9YS5zbGljZSgpO2ZvcihwPTA7cDxsLmxlbmd0aDtwKyspdGhpc1tzXS5jYWxsKHRoaXMsbiwoYz1sW3BdKS5vcmlnaW5hbERlbGVnYXRlP2Mub3JpZ2luYWxEZWxlZ2F0ZTpjLmNhbGxiYWNrLGMub3B0aW9ucyl9aWYocilmb3IobD1yLnNsaWNlKCkscD0wO3A8bC5sZW5ndGg7cCsrKXt2YXIgYzt0aGlzW3NdLmNhbGwodGhpcyxuLChjPWxbcF0pLm9yaWdpbmFsRGVsZWdhdGU/Yy5vcmlnaW5hbERlbGVnYXRlOmMuY2FsbGJhY2ssYy5vcHRpb25zKX19fWVsc2V7Zm9yKHZhciBkPU9iamVjdC5rZXlzKGUpLHA9MDtwPGQubGVuZ3RoO3ArKyl7dmFyIHU9ai5leGVjKGRbcF0pLGY9dSYmdVsxXTtmJiYicmVtb3ZlTGlzdGVuZXIiIT09ZiYmdGhpc1ttXS5jYWxsKHRoaXMsZil9dGhpc1ttXS5jYWxsKHRoaXMsInJlbW92ZUxpc3RlbmVyIil9aWYoXylyZXR1cm4gdGhpc30sVChDW2ldLFApLFQoQ1tzXSx3KSxTJiZUKENbbV0sUyksayYmVChDW2xdLGspLCEwfWZvcih2YXIgQz1bXSxNPTA7TTxlLmxlbmd0aDtNKyspQ1tNXT1fKGVbTV0sbyk7cmV0dXJuIEN9ZnVuY3Rpb24gWSh0LGUpe2lmKCFlKXt2YXIgbj1bXTtmb3IodmFyIG8gaW4gdCl7dmFyIGk9ai5leGVjKG8pLGE9aSYmaVsxXTtpZihhJiYoIWV8fGE9PT1lKSl7dmFyIHI9dFtvXTtpZihyKWZvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKW4ucHVzaChyW3NdKX19cmV0dXJuIG59dmFyIGw9QltlXTtsfHwoRyhlKSxsPUJbZV0pO3ZhciBjPXRbbC5mYWxzZV0sZD10W2wudHJ1ZV07cmV0dXJuIGM/ZD9jLmNvbmNhdChkKTpjLnNsaWNlKCk6ZD9kLnNsaWNlKCk6W119ZnVuY3Rpb24gcSh0LGUpe3ZhciBuPXQuRXZlbnQ7biYmbi5wcm90b3R5cGUmJmUucGF0Y2hNZXRob2Qobi5wcm90b3R5cGUsInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe2VbVV09ITAsdCYmdC5hcHBseShlLG4pfX0pKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovZnVuY3Rpb24gWih0LGUsbixvLGkpe3ZhciBhPVpvbmUuX19zeW1ib2xfXyhvKTtpZighZVthXSl7dmFyIHI9ZVthXT1lW29dO2Vbb109ZnVuY3Rpb24oYSxzLGwpe3JldHVybiBzJiZzLnByb3RvdHlwZSYmaS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgaT1uKyIuIitvKyI6OiIrZSxhPXMucHJvdG90eXBlO2lmKGEuaGFzT3duUHJvcGVydHkoZSkpe3ZhciByPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSk7ciYmci52YWx1ZT8oci52YWx1ZT10LndyYXBXaXRoQ3VycmVudFpvbmUoci52YWx1ZSxpKSx0Ll9yZWRlZmluZVByb3BlcnR5KHMucHJvdG90eXBlLGUscikpOmFbZV0mJihhW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShhW2VdLGkpKX1lbHNlIGFbZV0mJihhW2VdPXQud3JhcFdpdGhDdXJyZW50Wm9uZShhW2VdLGkpKX0pKSxyLmNhbGwoZSxhLHMsbCl9LHQuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKGVbb10scil9fQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi92YXIgWCxLLEosUSwkLHR0PVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BsYXljb25uZWN0ZWQiLCJ2cmRpc3BsYXlkaXNjb25uZWN0ZWQiLCJ2cmRpc3BsYXlwcmVzZW50Y2hhbmdlIl0sZXQ9WyJlbmNyeXB0ZWQiLCJ3YWl0aW5nZm9ya2V5IiwibXNuZWVka2V5IiwibW96aW50ZXJydXB0YmVnaW4iLCJtb3ppbnRlcnJ1cHRlbmQiXSxudD1bImxvYWQiXSxvdD1bImJsdXIiLCJlcnJvciIsImZvY3VzIiwibG9hZCIsInJlc2l6ZSIsInNjcm9sbCIsIm1lc3NhZ2VlcnJvciJdLGl0PVsiYm91bmNlIiwiZmluaXNoIiwic3RhcnQiXSxhdD1bImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJwcm9ncmVzcyIsInRpbWVvdXQiLCJsb2FkZW5kIiwicmVhZHlzdGF0ZWNoYW5nZSJdLHJ0PVsidXBncmFkZW5lZWRlZCIsImNvbXBsZXRlIiwiYWJvcnQiLCJzdWNjZXNzIiwiZXJyb3IiLCJibG9ja2VkIiwidmVyc2lvbmNoYW5nZSIsImNsb3NlIl0sc3Q9WyJjbG9zZSIsImVycm9yIiwib3BlbiIsIm1lc3NhZ2UiXSxsdD1bImVycm9yIiwibWVzc2FnZSJdLGN0PVsiYWJvcnQiLCJhbmltYXRpb25jYW5jZWwiLCJhbmltYXRpb25lbmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhdXhjbGljayIsImJlZm9yZWlucHV0IiwiYmx1ciIsImNhbmNlbCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImNoYW5nZSIsImNvbXBvc2l0aW9uc3RhcnQiLCJjb21wb3NpdGlvbnVwZGF0ZSIsImNvbXBvc2l0aW9uZW5kIiwiY3VlY2hhbmdlIiwiY2xpY2siLCJjbG9zZSIsImNvbnRleHRtZW51IiwiY3VyZWNoYW5nZSIsImRibGNsaWNrIiwiZHJhZyIsImRyYWdlbmQiLCJkcmFnZW50ZXIiLCJkcmFnZXhpdCIsImRyYWdsZWF2ZSIsImRyYWdvdmVyIiwiZHJvcCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImZvY3VzaW4iLCJmb2N1c291dCIsImdvdHBvaW50ZXJjYXB0dXJlIiwiaW5wdXQiLCJpbnZhbGlkIiwia2V5ZG93biIsImtleXByZXNzIiwia2V5dXAiLCJsb2FkIiwibG9hZHN0YXJ0IiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwibW91c2Vkb3duIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsIm1vdXNlb3ZlciIsIm1vdXNldXAiLCJtb3VzZXdoZWVsIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwYXVzZSIsInBsYXkiLCJwbGF5aW5nIiwicG9pbnRlcmNhbmNlbCIsInBvaW50ZXJkb3duIiwicG9pbnRlcmVudGVyIiwicG9pbnRlcmxlYXZlIiwicG9pbnRlcmxvY2tjaGFuZ2UiLCJtb3pwb2ludGVybG9ja2NoYW5nZSIsIndlYmtpdHBvaW50ZXJsb2NrZXJjaGFuZ2UiLCJwb2ludGVybG9ja2Vycm9yIiwibW96cG9pbnRlcmxvY2tlcnJvciIsIndlYmtpdHBvaW50ZXJsb2NrZXJyb3IiLCJwb2ludGVybW92ZSIsInBvaW50b3V0IiwicG9pbnRlcm92ZXIiLCJwb2ludGVydXAiLCJwcm9ncmVzcyIsInJhdGVjaGFuZ2UiLCJyZXNldCIsInJlc2l6ZSIsInNjcm9sbCIsInNlZWtlZCIsInNlZWtpbmciLCJzZWxlY3QiLCJzZWxlY3Rpb25jaGFuZ2UiLCJzZWxlY3RzdGFydCIsInNob3ciLCJzb3J0Iiwic3RhbGxlZCIsInN1Ym1pdCIsInN1c3BlbmQiLCJ0aW1ldXBkYXRlIiwidm9sdW1lY2hhbmdlIiwidG91Y2hjYW5jZWwiLCJ0b3VjaG1vdmUiLCJ0b3VjaHN0YXJ0IiwidG91Y2hlbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwidHJhbnNpdGlvbmVuZCIsIndhaXRpbmciLCJ3aGVlbCJdLmNvbmNhdChbIndlYmdsY29udGV4dHJlc3RvcmVkIiwid2ViZ2xjb250ZXh0bG9zdCIsIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiXSxbImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZWVycm9yIl0sWyJ0b2dnbGUiXSxbImFmdGVyc2NyaXB0ZXhlY3V0ZSIsImJlZm9yZXNjcmlwdGV4ZWN1dGUiLCJET01Db250ZW50TG9hZGVkIiwiZnJlZXplIiwiZnVsbHNjcmVlbmNoYW5nZSIsIm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwibXNmdWxsc2NyZWVuY2hhbmdlIiwiZnVsbHNjcmVlbmVycm9yIiwibW96ZnVsbHNjcmVlbmVycm9yIiwid2Via2l0ZnVsbHNjcmVlbmVycm9yIiwibXNmdWxsc2NyZWVuZXJyb3IiLCJyZWFkeXN0YXRlY2hhbmdlIiwidmlzaWJpbGl0eWNoYW5nZSIsInJlc3VtZSJdLHR0LFsiYmVmb3JlY29weSIsImJlZm9yZWN1dCIsImJlZm9yZXBhc3RlIiwiY29weSIsImN1dCIsInBhc3RlIiwiZHJhZ3N0YXJ0IiwibG9hZGVuZCIsImFuaW1hdGlvbnN0YXJ0Iiwic2VhcmNoIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsIndlYmtpdGFuaW1hdGlvbmVuZCIsIndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbiIsIndlYmtpdGFuaW1hdGlvbnN0YXJ0Iiwid2Via2l0dHJhbnNpdGlvbmVuZCJdLFsiYWN0aXZhdGUiLCJhZnRlcnVwZGF0ZSIsImFyaWFyZXF1ZXN0IiwiYmVmb3JlYWN0aXZhdGUiLCJiZWZvcmVkZWFjdGl2YXRlIiwiYmVmb3JlZWRpdGZvY3VzIiwiYmVmb3JldXBkYXRlIiwiY2VsbGNoYW5nZSIsImNvbnRyb2xzZWxlY3QiLCJkYXRhYXZhaWxhYmxlIiwiZGF0YXNldGNoYW5nZWQiLCJkYXRhc2V0Y29tcGxldGUiLCJlcnJvcnVwZGF0ZSIsImZpbHRlcmNoYW5nZSIsImxheW91dGNvbXBsZXRlIiwibG9zZWNhcHR1cmUiLCJtb3ZlIiwibW92ZWVuZCIsIm1vdmVzdGFydCIsInByb3BlcnR5Y2hhbmdlIiwicmVzaXplZW5kIiwicmVzaXplc3RhcnQiLCJyb3dlbnRlciIsInJvd2V4aXQiLCJyb3dzZGVsZXRlIiwicm93c2luc2VydGVkIiwiY29tbWFuZCIsImNvbXBhc3NuZWVkc2NhbGlicmF0aW9uIiwiZGVhY3RpdmF0ZSIsImhlbHAiLCJtc2NvbnRlbnR6b29tIiwibXNtYW5pcHVsYXRpb25zdGF0ZWNoYW5nZWQiLCJtc2dlc3R1cmVjaGFuZ2UiLCJtc2dlc3R1cmVkb3VibGV0YXAiLCJtc2dlc3R1cmVlbmQiLCJtc2dlc3R1cmVob2xkIiwibXNnZXN0dXJlc3RhcnQiLCJtc2dlc3R1cmV0YXAiLCJtc2dvdHBvaW50ZXJjYXB0dXJlIiwibXNpbmVydGlhc3RhcnQiLCJtc2xvc3Rwb2ludGVyY2FwdHVyZSIsIm1zcG9pbnRlcmNhbmNlbCIsIm1zcG9pbnRlcmRvd24iLCJtc3BvaW50ZXJlbnRlciIsIm1zcG9pbnRlcmhvdmVyIiwibXNwb2ludGVybGVhdmUiLCJtc3BvaW50ZXJtb3ZlIiwibXNwb2ludGVyb3V0IiwibXNwb2ludGVyb3ZlciIsIm1zcG9pbnRlcnVwIiwicG9pbnRlcm91dCIsIm1zc2l0ZW1vZGVqdW1wbGlzdGl0ZW1yZW1vdmVkIiwibXN0aHVtYm5haWxjbGljayIsInN0b3AiLCJzdG9yYWdlY29tbWl0Il0pO2Z1bmN0aW9uIGR0KHQsZSxuKXtpZighbnx8MD09PW4ubGVuZ3RoKXJldHVybiBlO3ZhciBvPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXQ9PT10fSkpO2lmKCFvfHwwPT09by5sZW5ndGgpcmV0dXJuIGU7dmFyIGk9b1swXS5pZ25vcmVQcm9wZXJ0aWVzO3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuLTE9PT1pLmluZGV4T2YodCl9KSl9ZnVuY3Rpb24gcHQodCxlLG4sbyl7dCYmUyh0LGR0KHQsZSxuKSxvKX1mdW5jdGlvbiBtdCh0LGUpe2lmKCghdnx8TykmJiFab25lW3Quc3ltYm9sKCJwYXRjaEV2ZW50cyIpXSl7dmFyIG89InVuZGVmaW5lZCIhPXR5cGVvZiBXZWJTb2NrZXQsaT1lLl9fWm9uZV9pZ25vcmVfb25fcHJvcGVydGllcztpZih4KXt2YXIgYT13aW5kb3cscj0oZnVuY3Rpb24gcygpe3RyeXt2YXIgdD1oLm5hdmlnYXRvci51c2VyQWdlbnQ7aWYoLTEhPT10LmluZGV4T2YoIk1TSUUgIil8fC0xIT09dC5pbmRleE9mKCJUcmlkZW50LyIpKXJldHVybiEwfWNhdGNoKHQpe31yZXR1cm4hMX0pKCk/W3t0YXJnZXQ6YSxpZ25vcmVQcm9wZXJ0aWVzOlsiZXJyb3IiXX1dOltdO3B0KGEsY3QuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLGk/aS5jb25jYXQocik6aSxuKGEpKSxwdChEb2N1bWVudC5wcm90b3R5cGUsY3QsaSksdm9pZCAwIT09YS5TVkdFbGVtZW50JiZwdChhLlNWR0VsZW1lbnQucHJvdG90eXBlLGN0LGkpLHB0KEVsZW1lbnQucHJvdG90eXBlLGN0LGkpLHB0KEhUTUxFbGVtZW50LnByb3RvdHlwZSxjdCxpKSxwdChIVE1MTWVkaWFFbGVtZW50LnByb3RvdHlwZSxldCxpKSxwdChIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSx0dC5jb25jYXQob3QpLGkpLHB0KEhUTUxCb2R5RWxlbWVudC5wcm90b3R5cGUsdHQuY29uY2F0KG90KSxpKSxwdChIVE1MRnJhbWVFbGVtZW50LnByb3RvdHlwZSxudCxpKSxwdChIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsbnQsaSk7dmFyIGw9YS5IVE1MTWFycXVlZUVsZW1lbnQ7bCYmcHQobC5wcm90b3R5cGUsaXQsaSk7dmFyIGM9YS5Xb3JrZXI7YyYmcHQoYy5wcm90b3R5cGUsbHQsaSl9dmFyIGQ9ZS5YTUxIdHRwUmVxdWVzdDtkJiZwdChkLnByb3RvdHlwZSxhdCxpKTt2YXIgcD1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7cCYmcHQocCYmcC5wcm90b3R5cGUsYXQsaSksInVuZGVmaW5lZCIhPXR5cGVvZiBJREJJbmRleCYmKHB0KElEQkluZGV4LnByb3RvdHlwZSxydCxpKSxwdChJREJSZXF1ZXN0LnByb3RvdHlwZSxydCxpKSxwdChJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSxydCxpKSxwdChJREJEYXRhYmFzZS5wcm90b3R5cGUscnQsaSkscHQoSURCVHJhbnNhY3Rpb24ucHJvdG90eXBlLHJ0LGkpLHB0KElEQkN1cnNvci5wcm90b3R5cGUscnQsaSkpLG8mJnB0KFdlYlNvY2tldC5wcm90b3R5cGUsc3QsaSl9fQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiB1dCgpe1g9Wm9uZS5fX3N5bWJvbF9fLEs9T2JqZWN0W1goImRlZmluZVByb3BlcnR5IildPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxKPU9iamVjdFtYKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixRPU9iamVjdC5jcmVhdGUsJD1YKCJ1bmNvbmZpZ3VyYWJsZXMiKSxPYmplY3QuZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe2lmKGd0KHQsZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGFzc2lnbiB0byByZWFkIG9ubHkgcHJvcGVydHkgJyIrZSsiJyBvZiAiK3QpO3ZhciBvPW4uY29uZmlndXJhYmxlO3JldHVybiJwcm90b3R5cGUiIT09ZSYmKG49aHQodCxlLG4pKSxidCh0LGUsbixvKX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixlW25dKX0pKSx0fSxPYmplY3QuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm9iamVjdCIhPXR5cGVvZiBlfHxPYmplY3QuaXNGcm96ZW4oZSl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKG4pe2Vbbl09aHQodCxuLGVbbl0pfSkpLFEodCxlKX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcj1mdW5jdGlvbih0LGUpe3ZhciBuPUoodCxlKTtyZXR1cm4gbiYmZ3QodCxlKSYmKG4uY29uZmlndXJhYmxlPSExKSxufX1mdW5jdGlvbiBmdCh0LGUsbil7dmFyIG89bi5jb25maWd1cmFibGU7cmV0dXJuIGJ0KHQsZSxuPWh0KHQsZSxuKSxvKX1mdW5jdGlvbiBndCh0LGUpe3JldHVybiB0JiZ0WyRdJiZ0WyRdW2VdfWZ1bmN0aW9uIGh0KHQsZSxuKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKG4pfHwobi5jb25maWd1cmFibGU9ITApLG4uY29uZmlndXJhYmxlfHwodFskXXx8T2JqZWN0LmlzRnJvemVuKHQpfHxLKHQsJCx7d3JpdGFibGU6ITAsdmFsdWU6e319KSx0WyRdJiYodFskXVtlXT0hMCkpLG59ZnVuY3Rpb24gYnQodCxlLG4sbyl7dHJ5e3JldHVybiBLKHQsZSxuKX1jYXRjaChyKXtpZighbi5jb25maWd1cmFibGUpdGhyb3cgcjt2b2lkIDA9PT1vP2RlbGV0ZSBuLmNvbmZpZ3VyYWJsZTpuLmNvbmZpZ3VyYWJsZT1vO3RyeXtyZXR1cm4gSyh0LGUsbil9Y2F0Y2gobyl7dmFyIGk9ITE7aWYoImNyZWF0ZWRDYWxsYmFjayIhPT1lJiYiYXR0YWNoZWRDYWxsYmFjayIhPT1lJiYiZGV0YWNoZWRDYWxsYmFjayIhPT1lJiYiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIiE9PWV8fChpPSEwKSwhaSl0aHJvdyBvO3ZhciBhPW51bGw7dHJ5e2E9SlNPTi5zdHJpbmdpZnkobil9Y2F0Y2godCl7YT1uLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK2UrIicgd2l0aCBkZXNjcmlwdG9yICciK2ErIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK28pfX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqL2Z1bmN0aW9uIHl0KHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCksbz1uLmV2ZW50TmFtZXMsaT1uLmdsb2JhbFNvdXJjZXMsYT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLHI9bi5UUlVFX1NUUixzPW4uRkFMU0VfU1RSLGw9bi5aT05FX1NZTUJPTF9QUkVGSVgsYz0iQXBwbGljYXRpb25DYWNoZSxFdmVudFNvdXJjZSxGaWxlUmVhZGVyLElucHV0TWV0aG9kQ29udGV4dCxNZWRpYUNvbnRyb2xsZXIsTWVzc2FnZVBvcnQsTm9kZSxQZXJmb3JtYW5jZSxTVkdFbGVtZW50SW5zdGFuY2UsU2hhcmVkV29ya2VyLFRleHRUcmFjayxUZXh0VHJhY2tDdWUsVGV4dFRyYWNrTGlzdCxXZWJLaXROYW1lZEZsb3csV2luZG93LFdvcmtlcixXb3JrZXJHbG9iYWxTY29wZSxYTUxIdHRwUmVxdWVzdCxYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LFhNTEh0dHBSZXF1ZXN0VXBsb2FkLElEQlJlcXVlc3QsSURCT3BlbkRCUmVxdWVzdCxJREJEYXRhYmFzZSxJREJUcmFuc2FjdGlvbixJREJDdXJzb3IsREJJbmRleCxXZWJTb2NrZXQiLnNwbGl0KCIsIiksZD1bXSxwPXQud3RmLG09IkFuY2hvcixBcmVhLEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3QsRGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIsSGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdlbmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVjdCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2NyaXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxlQ29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlzdCxVbmtub3duLFZpZGVvIi5zcGxpdCgiLCIpO3A/ZD1tLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIkhUTUwiK3QrIkVsZW1lbnQifSkpLmNvbmNhdChjKTp0LkV2ZW50VGFyZ2V0P2QucHVzaCgiRXZlbnRUYXJnZXQiKTpkPWM7Zm9yKHZhciB1PXQuX19ab25lX2Rpc2FibGVfSUVfY2hlY2t8fCExLGY9dC5fX1pvbmVfZW5hYmxlX2Nyb3NzX2NvbnRleHRfY2hlY2t8fCExLGc9ZS5pc0lFT3JFZGdlKCksaD0iW29iamVjdCBGdW5jdGlvbldyYXBwZXJdIixiPSJmdW5jdGlvbiBfX0JST1dTRVJUT09MU19DT05TT0xFX1NBRkVGVU5DKCkgeyBbbmF0aXZlIGNvZGVdIH0iLHk9e01TUG9pbnRlckNhbmNlbDoicG9pbnRlcmNhbmNlbCIsTVNQb2ludGVyRG93bjoicG9pbnRlcmRvd24iLE1TUG9pbnRlckVudGVyOiJwb2ludGVyZW50ZXIiLE1TUG9pbnRlckhvdmVyOiJwb2ludGVyaG92ZXIiLE1TUG9pbnRlckxlYXZlOiJwb2ludGVybGVhdmUiLE1TUG9pbnRlck1vdmU6InBvaW50ZXJtb3ZlIixNU1BvaW50ZXJPdXQ6InBvaW50ZXJvdXQiLE1TUG9pbnRlck92ZXI6InBvaW50ZXJvdmVyIixNU1BvaW50ZXJVcDoicG9pbnRlcnVwIn0sXz0wO188by5sZW5ndGg7XysrKXt2YXIgQz1sKygoUD1vW19dKStzKSxNPWwrKFArcik7YVtQXT17fSxhW1BdW3NdPUMsYVtQXVtyXT1NfWZvcihfPTA7XzxtLmxlbmd0aDtfKyspZm9yKHZhciB2PW1bX10seD1pW3ZdPXt9LE89MDtPPG8ubGVuZ3RoO08rKyl7dmFyIFA7eFtQPW9bT11dPXYrIi5hZGRFdmVudExpc3RlbmVyOiIrUH12YXIgdz1bXTtmb3IoXz0wO188ZC5sZW5ndGg7XysrKXt2YXIgaz10W2RbX11dO3cucHVzaChrJiZrLnByb3RvdHlwZSl9cmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LHcse3ZoOmZ1bmN0aW9uKHQsZSxuLG8pe2lmKCF1JiZnKXtpZihmKXRyeXt2YXIgaTtpZigoaT1lLnRvU3RyaW5nKCkpPT09aHx8aT09YilyZXR1cm4gdC5hcHBseShuLG8pLCExfWNhdGNoKGUpe3JldHVybiB0LmFwcGx5KG4sbyksITF9ZWxzZSBpZigoaT1lLnRvU3RyaW5nKCkpPT09aHx8aT09YilyZXR1cm4gdC5hcHBseShuLG8pLCExfWVsc2UgaWYoZil0cnl7ZS50b1N0cmluZygpfWNhdGNoKGUpe3JldHVybiB0LmFwcGx5KG4sbyksITF9cmV0dXJuITB9LHRyYW5zZmVyRXZlbnROYW1lOmZ1bmN0aW9uKHQpe3JldHVybiB5W3RdfHx0fX0pLFpvbmVbZS5zeW1ib2woInBhdGNoRXZlbnRUYXJnZXQiKV09ISF0LkV2ZW50VGFyZ2V0LCEwfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCmZ1bmN0aW9uIF90KHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCk7aWYoKCFuLmlzTm9kZXx8bi5pc01peCkmJiEoZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKChuLmlzQnJvd3Nlcnx8bi5pc01peCkmJiF0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KXt2YXIgbz10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpO2lmKG8mJiFvLmNvbmZpZ3VyYWJsZSlyZXR1cm4hMTtpZihvKXt0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIGk9ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5vbmNsaWNrO3JldHVybiB0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIixvKSxpfX12YXIgYT1lLlhNTEh0dHBSZXF1ZXN0O2lmKCFhKXJldHVybiExO3ZhciByPSJvbnJlYWR5c3RhdGVjaGFuZ2UiLHM9YS5wcm90b3R5cGUsbD10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLHIpO2lmKGwpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxpPSEhKGQ9bmV3IGEpLm9ucmVhZHlzdGF0ZWNoYW5nZSx0Lk9iamVjdERlZmluZVByb3BlcnR5KHMscixsfHx7fSksaTt2YXIgYz10LnN5bWJvbCgiZmFrZSIpO3QuT2JqZWN0RGVmaW5lUHJvcGVydHkocyxyLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tjXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbY109dH19KTt2YXIgZCxwPWZ1bmN0aW9uKCl7fTtyZXR1cm4oZD1uZXcgYSkub25yZWFkeXN0YXRlY2hhbmdlPXAsaT1kW2NdPT09cCxkLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGl9KSh0LGUpKXt2YXIgaT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldDsoZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9dC5nZXRHbG9iYWxPYmplY3RzKCkuZXZlbnROYW1lcyxuPXQuc3ltYm9sKCJ1bmJvdW5kIiksbz1mdW5jdGlvbihvKXt2YXIgaT1lW29dLGE9Im9uIitpO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihpLChmdW5jdGlvbihlKXt2YXIgbyxpLHI9ZS50YXJnZXQ7Zm9yKGk9cj9yLmNvbnN0cnVjdG9yLm5hbWUrIi4iK2E6InVua25vd24uIithO3I7KXJbYV0mJiFyW2FdW25dJiYoKG89dC53cmFwV2l0aEN1cnJlbnRab25lKHJbYV0saSkpW25dPXJbYV0sclthXT1vKSxyPXIucGFyZW50RWxlbWVudH0pLCEwKX0saT0wO2k8ZS5sZW5ndGg7aSsrKW8oaSl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLykodCksdC5wYXRjaENsYXNzKCJYTUxIdHRwUmVxdWVzdCIpLGkmJihmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCksbz1uLkFERF9FVkVOVF9MSVNURU5FUl9TVFIsaT1uLlJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFIsYT1lLldlYlNvY2tldDtlLkV2ZW50VGFyZ2V0fHx0LnBhdGNoRXZlbnRUYXJnZXQoZSxbYS5wcm90b3R5cGVdKSxlLldlYlNvY2tldD1mdW5jdGlvbihlLG4pe3ZhciByLHMsbD1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IGEoZSxuKTpuZXcgYShlKSxjPXQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsIm9ubWVzc2FnZSIpO3JldHVybiBjJiYhMT09PWMuY29uZmlndXJhYmxlPyhyPXQuT2JqZWN0Q3JlYXRlKGwpLHM9bCxbbyxpLCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtyW2VdPWZ1bmN0aW9uKCl7dmFyIG49dC5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihlPT09b3x8ZT09PWkpe3ZhciBhPW4ubGVuZ3RoPjA/blswXTp2b2lkIDA7aWYoYSl7dmFyIHM9Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIrYSk7bFtzXT1yW3NdfX1yZXR1cm4gbFtlXS5hcHBseShsLG4pfX0pKSk6cj1sLHQucGF0Y2hPblByb3BlcnRpZXMocixbImNsb3NlIiwiZXJyb3IiLCJtZXNzYWdlIiwib3BlbiJdLHMpLHJ9O3ZhciByPWUuV2ViU29ja2V0O2Zvcih2YXIgcyBpbiBhKXJbc109YVtzXX0pKHQsZSksWm9uZVt0LnN5bWJvbCgicGF0Y2hFdmVudHMiKV09ITB9fVpvbmUuX19sb2FkX3BhdGNoKCJ1dGlsIiwoZnVuY3Rpb24obixzLGwpe2wucGF0Y2hPblByb3BlcnRpZXM9UyxsLnBhdGNoTWV0aG9kPVIsbC5iaW5kQXJndW1lbnRzPV8sbC5wYXRjaE1hY3JvVGFzaz1BO3ZhciB1PXMuX19zeW1ib2xfXygiQkxBQ0tfTElTVEVEX0VWRU5UUyIpLGY9cy5fX3N5bWJvbF9fKCJVTlBBVENIRURfRVZFTlRTIik7bltmXSYmKG5bdV09bltmXSksblt1XSYmKHNbdV09c1tmXT1uW3VdKSxsLnBhdGNoRXZlbnRQcm90b3R5cGU9cSxsLnBhdGNoRXZlbnRUYXJnZXQ9VyxsLmlzSUVPckVkZ2U9SSxsLk9iamVjdERlZmluZVByb3BlcnR5PWUsbC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9dCxsLk9iamVjdENyZWF0ZT1vLGwuQXJyYXlTbGljZT1pLGwucGF0Y2hDbGFzcz1FLGwud3JhcFdpdGhDdXJyZW50Wm9uZT1tLGwuZmlsdGVyUHJvcGVydGllcz1kdCxsLmF0dGFjaE9yaWdpblRvUGF0Y2hlZD1ULGwuX3JlZGVmaW5lUHJvcGVydHk9T2JqZWN0LmRlZmluZVByb3BlcnR5LGwucGF0Y2hDYWxsYmFja3M9WixsLmdldEdsb2JhbE9iamVjdHM9ZnVuY3Rpb24oKXtyZXR1cm57Z2xvYmFsU291cmNlczpWLHpvbmVTeW1ib2xFdmVudE5hbWVzOkIsZXZlbnROYW1lczpjdCxpc0Jyb3dzZXI6eCxpc01peDpPLGlzTm9kZTp2LFRSVUVfU1RSOmMsRkFMU0VfU1RSOmQsWk9ORV9TWU1CT0xfUFJFRklYOnAsQUREX0VWRU5UX0xJU1RFTkVSX1NUUjphLFJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6cn19fSkpLAovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KKGZ1bmN0aW9uKHQpe3ZhciBlPXQuX19ab25lX3N5bWJvbF9wcmVmaXh8fCJfX3pvbmVfc3ltYm9sX18iO3RbKGZ1bmN0aW9uIG4odCl7cmV0dXJuIGUrdH0pKCJsZWdhY3lQYXRjaCIpXT1mdW5jdGlvbigpe3ZhciBlPXQuWm9uZTtlLl9fbG9hZF9wYXRjaCgiZGVmaW5lUHJvcGVydHkiLChmdW5jdGlvbih0LGUsbil7bi5fcmVkZWZpbmVQcm9wZXJ0eT1mdCx1dCgpfSkpLGUuX19sb2FkX3BhdGNoKCJyZWdpc3RlckVsZW1lbnQiLChmdW5jdGlvbih0LGUsbil7IShmdW5jdGlvbiBvKHQsZSl7dmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCk7KG4uaXNCcm93c2VyfHxuLmlzTWl4KSYmInJlZ2lzdGVyRWxlbWVudCJpbiB0LmRvY3VtZW50JiZlLnBhdGNoQ2FsbGJhY2tzKGUsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixbImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl0pfSkodCxuKX0pKSxlLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXRMZWdhY3kiLChmdW5jdGlvbih0LGUsbil7eXQodCxuKSxfdChuLHQpfSkpfX0pKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT1Rdj9RdjoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fSk7Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgQ3Q9Zigiem9uZVRhc2siKTtmdW5jdGlvbiBNdCh0LGUsbixvKXt2YXIgaT1udWxsLGE9bnVsbDtuKz1vO3ZhciByPXt9O2Z1bmN0aW9uIHMoZSl7dmFyIG49ZS5kYXRhO3JldHVybiBuLmFyZ3NbMF09ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuLmhhbmRsZUlkPWkuYXBwbHkodCxuLmFyZ3MpLGV9ZnVuY3Rpb24gbChlKXtyZXR1cm4gYS5jYWxsKHQsZS5kYXRhLmhhbmRsZUlkKX1pPVIodCxlKz1vLChmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oaSxhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYVswXSl7dmFyIGM9e2lzUGVyaW9kaWM6IkludGVydmFsIj09PW8sZGVsYXk6IlRpbWVvdXQiPT09b3x8IkludGVydmFsIj09PW8/YVsxXXx8MDp2b2lkIDAsYXJnczphfSxkPWFbMF07YVswXT1mdW5jdGlvbiB0KCl7dHJ5e3JldHVybiBkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2MuaXNQZXJpb2RpY3x8KCJudW1iZXIiPT10eXBlb2YgYy5oYW5kbGVJZD9kZWxldGUgcltjLmhhbmRsZUlkXTpjLmhhbmRsZUlkJiYoYy5oYW5kbGVJZFtDdF09bnVsbCkpfX07dmFyIHA9dShlLGFbMF0sYyxzLGwpO2lmKCFwKXJldHVybiBwO3ZhciBtPXAuZGF0YS5oYW5kbGVJZDtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG0/clttXT1wOm0mJihtW0N0XT1wKSxtJiZtLnJlZiYmbS51bnJlZiYmImZ1bmN0aW9uIj09dHlwZW9mIG0ucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbS51bnJlZiYmKHAucmVmPW0ucmVmLmJpbmQobSkscC51bnJlZj1tLnVucmVmLmJpbmQobSkpLCJudW1iZXIiPT10eXBlb2YgbXx8bT9tOnB9cmV0dXJuIG4uYXBwbHkodCxhKX19KSksYT1SKHQsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7dmFyIGksYT1vWzBdOyJudW1iZXIiPT10eXBlb2YgYT9pPXJbYV06KGk9YSYmYVtDdF0pfHwoaT1hKSxpJiYic3RyaW5nIj09dHlwZW9mIGkudHlwZT8ibm90U2NoZWR1bGVkIiE9PWkuc3RhdGUmJihpLmNhbmNlbEZuJiZpLmRhdGEuaXNQZXJpb2RpY3x8MD09PWkucnVuQ291bnQpJiYoIm51bWJlciI9PXR5cGVvZiBhP2RlbGV0ZSByW2FdOmEmJihhW0N0XT1udWxsKSxpLnpvbmUuY2FuY2VsVGFzayhpKSk6ZS5hcHBseSh0LG8pfX0pKX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwpmdW5jdGlvbiB2dCh0LGUpe2lmKCFab25lW2Uuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXtmb3IodmFyIG49ZS5nZXRHbG9iYWxPYmplY3RzKCksbz1uLmV2ZW50TmFtZXMsaT1uLnpvbmVTeW1ib2xFdmVudE5hbWVzLGE9bi5UUlVFX1NUUixyPW4uRkFMU0VfU1RSLHM9bi5aT05FX1NZTUJPTF9QUkVGSVgsbD0wO2w8by5sZW5ndGg7bCsrKXt2YXIgYz1vW2xdLGQ9cysoYytyKSxwPXMrKGMrYSk7aVtjXT17fSxpW2NdW3JdPWQsaVtjXVthXT1wfXZhciBtPXQuRXZlbnRUYXJnZXQ7aWYobSYmbS5wcm90b3R5cGUpcmV0dXJuIGUucGF0Y2hFdmVudFRhcmdldCh0LFttJiZtLnByb3RvdHlwZV0pLCEwfX0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovClpvbmUuX19sb2FkX3BhdGNoKCJsZWdhY3kiLChmdW5jdGlvbih0KXt2YXIgZT10W1pvbmUuX19zeW1ib2xfXygibGVnYWN5UGF0Y2giKV07ZSYmZSgpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJxdWV1ZU1pY3JvdGFzayIsKGZ1bmN0aW9uKHQsZSxuKXtuLnBhdGNoTWV0aG9kKHQsInF1ZXVlTWljcm90YXNrIiwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7ZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJxdWV1ZU1pY3JvdGFzayIsblswXSl9fSkpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJ0aW1lcnMiLChmdW5jdGlvbih0KXt2YXIgZT0ic2V0IixuPSJjbGVhciI7TXQodCxlLG4sIlRpbWVvdXQiKSxNdCh0LGUsbiwiSW50ZXJ2YWwiKSxNdCh0LGUsbiwiSW1tZWRpYXRlIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goInJlcXVlc3RBbmltYXRpb25GcmFtZSIsKGZ1bmN0aW9uKHQpe010KHQsInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLE10KHQsIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLE10KHQsIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJibG9ja2luZyIsKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl0sbz0wO288bi5sZW5ndGg7bysrKVIodCxuW29dLChmdW5jdGlvbihuLG8saSl7cmV0dXJuIGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGUuY3VycmVudC5ydW4obix0LGEsaSl9fSkpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldCIsKGZ1bmN0aW9uKHQsZSxuKXsoZnVuY3Rpb24gbyh0LGUpe2UucGF0Y2hFdmVudFByb3RvdHlwZSh0LGUpfSkodCxuKSx2dCh0LG4pO3ZhciBpPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpJiZpLnByb3RvdHlwZSYmbi5wYXRjaEV2ZW50VGFyZ2V0KHQsW2kucHJvdG90eXBlXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIk11dGF0aW9uT2JzZXJ2ZXIiLChmdW5jdGlvbih0LGUsbil7RSgiTXV0YXRpb25PYnNlcnZlciIpLEUoIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLChmdW5jdGlvbih0LGUsbil7RSgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiRmlsZVJlYWRlciIsKGZ1bmN0aW9uKHQsZSxuKXtFKCJGaWxlUmVhZGVyIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIm9uX3Byb3BlcnR5IiwoZnVuY3Rpb24odCxlLG4pe210KG4sdCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goImN1c3RvbUVsZW1lbnRzIiwoZnVuY3Rpb24odCxlLG4peyEoZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWUuZ2V0R2xvYmFsT2JqZWN0cygpOyhuLmlzQnJvd3Nlcnx8bi5pc01peCkmJnQuY3VzdG9tRWxlbWVudHMmJiJjdXN0b21FbGVtZW50cyJpbiB0JiZlLnBhdGNoQ2FsbGJhY2tzKGUsdC5jdXN0b21FbGVtZW50cywiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiLFsiY29ubmVjdGVkQ2FsbGJhY2siLCJkaXNjb25uZWN0ZWRDYWxsYmFjayIsImFkb3B0ZWRDYWxsYmFjayIsImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayJdKX0pKHQsbil9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlhIUiIsKGZ1bmN0aW9uKHQsZSl7IShmdW5jdGlvbiBuKHQpe3ZhciBuPXQuWE1MSHR0cFJlcXVlc3Q7aWYobil7dmFyIHA9bi5wcm90b3R5cGUsbT1wW3NdLGc9cFtsXTtpZighbSl7dmFyIGg9dC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O2lmKGgpe3ZhciBiPWgucHJvdG90eXBlO209YltzXSxnPWJbbF19fXZhciB5PSJyZWFkeXN0YXRlY2hhbmdlIixfPSJzY2hlZHVsZWQiLEM9UihwLCJvcGVuIiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtpXT0wPT1lWzJdLHRbY109ZVsxXSxDLmFwcGx5KHQsZSl9fSkpLE09ZigiZmV0Y2hUYXNrQWJvcnRpbmciKSx2PWYoImZldGNoVGFza1NjaGVkdWxpbmciKSx4PVIocCwic2VuZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYoITA9PT1lLmN1cnJlbnRbdl0pcmV0dXJuIHguYXBwbHkodCxuKTtpZih0W2ldKXJldHVybiB4LmFwcGx5KHQsbik7dmFyIG89e3RhcmdldDp0LHVybDp0W2NdLGlzUGVyaW9kaWM6ITEsYXJnczpuLGFib3J0ZWQ6ITF9LGE9dSgiWE1MSHR0cFJlcXVlc3Quc2VuZCIsdyxvLFAsayk7dCYmITA9PT10W2RdJiYhby5hYm9ydGVkJiZhLnN0YXRlPT09XyYmYS5pbnZva2UoKX19KSksTz1SKHAsImFib3J0IiwoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgaT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdFtvXX0pKHQpO2lmKGkmJiJzdHJpbmciPT10eXBlb2YgaS50eXBlKXtpZihudWxsPT1pLmNhbmNlbEZufHxpLmRhdGEmJmkuZGF0YS5hYm9ydGVkKXJldHVybjtpLnpvbmUuY2FuY2VsVGFzayhpKX1lbHNlIGlmKCEwPT09ZS5jdXJyZW50W01dKXJldHVybiBPLmFwcGx5KHQsbil9fSkpfWZ1bmN0aW9uIFAodCl7dmFyIG49dC5kYXRhLGk9bi50YXJnZXQ7aVtyXT0hMSxpW2RdPSExO3ZhciBjPWlbYV07bXx8KG09aVtzXSxnPWlbbF0pLGMmJmcuY2FsbChpLHksYyk7dmFyIHA9aVthXT1mdW5jdGlvbigpe2lmKGkucmVhZHlTdGF0ZT09PWkuRE9ORSlpZighbi5hYm9ydGVkJiZpW3JdJiZ0LnN0YXRlPT09Xyl7dmFyIG89aVtlLl9fc3ltYm9sX18oImxvYWRmYWxzZSIpXTtpZigwIT09aS5zdGF0dXMmJm8mJm8ubGVuZ3RoPjApe3ZhciBhPXQuaW52b2tlO3QuaW52b2tlPWZ1bmN0aW9uKCl7Zm9yKHZhciBvPWlbZS5fX3N5bWJvbF9fKCJsb2FkZmFsc2UiKV0scj0wO3I8by5sZW5ndGg7cisrKW9bcl09PT10JiZvLnNwbGljZShyLDEpO24uYWJvcnRlZHx8dC5zdGF0ZSE9PV98fGEuY2FsbCh0KX0sby5wdXNoKHQpfWVsc2UgdC5pbnZva2UoKX1lbHNlIG4uYWJvcnRlZHx8ITEhPT1pW3JdfHwoaVtkXT0hMCl9O3JldHVybiBtLmNhbGwoaSx5LHApLGlbb118fChpW29dPXQpLHguYXBwbHkoaSxuLmFyZ3MpLGlbcl09ITAsdH1mdW5jdGlvbiB3KCl7fWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5kYXRhO3JldHVybiBlLmFib3J0ZWQ9ITAsTy5hcHBseShlLnRhcmdldCxlLmFyZ3MpfX0pKHQpO3ZhciBvPWYoInhoclRhc2siKSxpPWYoInhoclN5bmMiKSxhPWYoInhockxpc3RlbmVyIikscj1mKCJ4aHJTY2hlZHVsZWQiKSxjPWYoInhoclVSTCIpLGQ9ZigieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWQiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLChmdW5jdGlvbihlKXtlLm5hdmlnYXRvciYmZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24mJihmdW5jdGlvbiBuKGUsbyl7Zm9yKHZhciBpPWUuY29uc3RydWN0b3IubmFtZSxhPWZ1bmN0aW9uKG4pe3ZhciBhPW9bbl0scj1lW2FdO2lmKHIpe2lmKCFDKHQoZSxhKSkpcmV0dXJuImNvbnRpbnVlIjtlW2FdPShmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KHRoaXMsXyhhcmd1bWVudHMsaSsiLiIrYSkpfTtyZXR1cm4gVChlLHQpLGV9KShyKX19LHI9MDtyPG8ubGVuZ3RoO3IrKylhKHIpfSkoZS5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe1kodCxlKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgaT10LlByb21pc2VSZWplY3Rpb25FdmVudDtpZihpKXt2YXIgYT1uZXcgaShlLHtwcm9taXNlOm4ucHJvbWlzZSxyZWFzb246bi5yZWplY3Rpb259KTtvLmludm9rZShhKX19KSl9fXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50JiYoZVtmKCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlciIpXT1uKCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxlW2YoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIildPW4oInJlamVjdGlvbmhhbmRsZWQiKSl9KSl9KSgpOwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpjbGFzcyB0eHt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBleD0iKiI7ZnVuY3Rpb24gbngodCxlKXtyZXR1cm57dHlwZTo3LG5hbWU6dCxkZWZpbml0aW9uczplLG9wdGlvbnM6e319fWZ1bmN0aW9uIG94KHQsZT1udWxsKXtyZXR1cm57dHlwZTo0LHN0eWxlczplLHRpbWluZ3M6dH19ZnVuY3Rpb24gaXgodCxlPW51bGwpe3JldHVybnt0eXBlOjIsc3RlcHM6dCxvcHRpb25zOmV9fWZ1bmN0aW9uIGF4KHQpe3JldHVybnt0eXBlOjYsc3R5bGVzOnQsb2Zmc2V0Om51bGx9fWZ1bmN0aW9uIHJ4KHQsZSxuKXtyZXR1cm57dHlwZTowLG5hbWU6dCxzdHlsZXM6ZSxvcHRpb25zOm59fWZ1bmN0aW9uIHN4KHQpe3JldHVybnt0eXBlOjUsc3RlcHM6dH19ZnVuY3Rpb24gbHgodCxlLG49bnVsbCl7cmV0dXJue3R5cGU6MSxleHByOnQsYW5pbWF0aW9uOmUsb3B0aW9uczpufX1mdW5jdGlvbiBjeCh0PW51bGwpe3JldHVybnt0eXBlOjksb3B0aW9uczp0fX1mdW5jdGlvbiBkeCh0LGUsbj1udWxsKXtyZXR1cm57dHlwZToxMSxzZWxlY3Rvcjp0LGFuaW1hdGlvbjplLG9wdGlvbnM6bn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHB4KHQpe1Byb21pc2UucmVzb2x2ZShudWxsKS50aGVuKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBteHtjb25zdHJ1Y3Rvcih0PTAsZT0wKXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fcG9zaXRpb249MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPXQrZX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtweCgoKCk9PnRoaXMuX29uRmluaXNoKCkpKX1fb25TdGFydCgpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe3RoaXMuX3Bvc2l0aW9uPXRoaXMudG90YWxUaW1lP3QqdGhpcy50b3RhbFRpbWU6MX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZT90aGlzLl9wb3NpdGlvbi90aGlzLnRvdGFsVGltZToxfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBlPSJzdGFydCI9PXQ/dGhpcy5fb25TdGFydEZuczp0aGlzLl9vbkRvbmVGbnM7ZS5mb3JFYWNoKCh0PT50KCkpKSxlLmxlbmd0aD0wfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgdXh7Y29uc3RydWN0b3IodCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9MCx0aGlzLnBsYXllcnM9dDtsZXQgZT0wLG49MCxvPTA7Y29uc3QgaT10aGlzLnBsYXllcnMubGVuZ3RoOzA9PWk/cHgoKCgpPT50aGlzLl9vbkZpbmlzaCgpKSk6dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pnt0Lm9uRG9uZSgoKCk9PnsrK2U9PWkmJnRoaXMuX29uRmluaXNoKCl9KSksdC5vbkRlc3Ryb3koKCgpPT57KytuPT1pJiZ0aGlzLl9vbkRlc3Ryb3koKX0pKSx0Lm9uU3RhcnQoKCgpPT57KytvPT1pJiZ0aGlzLl9vblN0YXJ0KCl9KSl9KSksdGhpcy50b3RhbFRpbWU9dGhpcy5wbGF5ZXJzLnJlZHVjZSgoKHQsZSk9Pk1hdGgubWF4KHQsZS50b3RhbFRpbWUpKSwwKX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5pbml0KCkpKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W10pfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfXBsYXkoKXt0aGlzLnBhcmVudFBsYXllcnx8dGhpcy5pbml0KCksdGhpcy5fb25TdGFydCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnBsYXkoKSkpfXBhdXNlKCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucGF1c2UoKSkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5yZXN0YXJ0KCkpKX1maW5pc2goKXt0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmZpbmlzaCgpKSl9ZGVzdHJveSgpe3RoaXMuX29uRGVzdHJveSgpfV9vbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1yZXNldCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnJlc2V0KCkpKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1zZXRQb3NpdGlvbih0KXtjb25zdCBlPXQqdGhpcy50b3RhbFRpbWU7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9Pntjb25zdCBuPXQudG90YWxUaW1lP01hdGgubWluKDEsZS90LnRvdGFsVGltZSk6MTt0LnNldFBvc2l0aW9uKG4pfSkpfWdldFBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLnBsYXllcnMucmVkdWNlKCgodCxlKT0+bnVsbD09PXR8fGUudG90YWxUaW1lPnQudG90YWxUaW1lP2U6dCksbnVsbCk7cmV0dXJuIG51bGwhPXQ/dC5nZXRQb3NpdGlvbigpOjB9YmVmb3JlRGVzdHJveSgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT57dC5iZWZvcmVEZXN0cm95JiZ0LmJlZm9yZURlc3Ryb3koKX0pKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaCgodD0+dCgpKSksZS5sZW5ndGg9MH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEyLjIuMQogICAgICogKGMpIDIwMTAtMjAyMSBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwpmdW5jdGlvbiBmeCgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnR9ZnVuY3Rpb24gZ3goKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwocHJvY2Vzcyl9ZnVuY3Rpb24gaHgodCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBteDtjYXNlIDE6cmV0dXJuIHRbMF07ZGVmYXVsdDpyZXR1cm4gbmV3IHV4KHQpfX1mdW5jdGlvbiBieCh0LGUsbixvLGk9e30sYT17fSl7Y29uc3Qgcj1bXSxzPVtdO2xldCBsPS0xLGM9bnVsbDtpZihvLmZvckVhY2goKHQ9Pntjb25zdCBuPXQub2Zmc2V0LG89bj09bCxkPW8mJmN8fHt9O09iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntsZXQgbz1uLHM9dFtuXTtpZigib2Zmc2V0IiE9PW4pc3dpdGNoKG89ZS5ub3JtYWxpemVQcm9wZXJ0eU5hbWUobyxyKSxzKXtjYXNlIiEiOnM9aVtuXTticmVhaztjYXNlIGV4OnM9YVtuXTticmVhaztkZWZhdWx0OnM9ZS5ub3JtYWxpemVTdHlsZVZhbHVlKG4sbyxzLHIpfWRbb109c30pKSxvfHxzLnB1c2goZCksYz1kLGw9bn0pKSxyLmxlbmd0aCl7Y29uc3QgdD0iXG4gLSAiO3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGFuaW1hdGUgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiR7dH0ke3Iuam9pbih0KX1gKX1yZXR1cm4gc31mdW5jdGlvbiB5eCh0LGUsbixvKXtzd2l0Y2goZSl7Y2FzZSJzdGFydCI6dC5vblN0YXJ0KCgoKT0+byhuJiZfeChuLCJzdGFydCIsdCkpKSk7YnJlYWs7Y2FzZSJkb25lIjp0Lm9uRG9uZSgoKCk9Pm8obiYmX3gobiwiZG9uZSIsdCkpKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0Lm9uRGVzdHJveSgoKCk9Pm8obiYmX3gobiwiZGVzdHJveSIsdCkpKSl9fWZ1bmN0aW9uIF94KHQsZSxuKXtjb25zdCBvPW4udG90YWxUaW1lLGk9Q3godC5lbGVtZW50LHQudHJpZ2dlck5hbWUsdC5mcm9tU3RhdGUsdC50b1N0YXRlLGV8fHQucGhhc2VOYW1lLG51bGw9PW8/dC50b3RhbFRpbWU6bywhIW4uZGlzYWJsZWQpLGE9dC5fZGF0YTtyZXR1cm4gbnVsbCE9YSYmKGkuX2RhdGE9YSksaX1mdW5jdGlvbiBDeCh0LGUsbixvLGk9IiIsYT0wLHIpe3JldHVybntlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSxmcm9tU3RhdGU6bix0b1N0YXRlOm8scGhhc2VOYW1lOmksdG90YWxUaW1lOmEsZGlzYWJsZWQ6ISFyfX1mdW5jdGlvbiBNeCh0LGUsbil7bGV0IG87cmV0dXJuIHQgaW5zdGFuY2VvZiBNYXA/KG89dC5nZXQoZSksb3x8dC5zZXQoZSxvPW4pKToobz10W2VdLG98fChvPXRbZV09bikpLG99ZnVuY3Rpb24gdngodCl7Y29uc3QgZT10LmluZGV4T2YoIjoiKTtyZXR1cm5bdC5zdWJzdHJpbmcoMSxlKSx0LnN1YnN0cihlKzEpXX1sZXQgeHg9KHQsZSk9PiExLE94PSh0LGUpPT4hMSxQeD0odCxlLG4pPT5bXTtjb25zdCB3eD1neCgpOyh3eHx8InVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KSYmKHh4PWZ4KCk/KHQsZSk9Pntmb3IoO2UmJmUhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7KXtpZihlPT09dClyZXR1cm4hMDtlPWUucGFyZW50Tm9kZXx8ZS5ob3N0fXJldHVybiExfToodCxlKT0+dC5jb250YWlucyhlKSxPeD0oKCk9PntpZih3eHx8RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlcylyZXR1cm4odCxlKT0+dC5tYXRjaGVzKGUpO3tjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLGU9dC5tYXRjaGVzU2VsZWN0b3J8fHQubW96TWF0Y2hlc1NlbGVjdG9yfHx0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx0Lm9NYXRjaGVzU2VsZWN0b3J8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yO3JldHVybiBlPyh0LG4pPT5lLmFwcGx5KHQsW25dKTpPeH19KSgpLFB4PSh0LGUsbik9PntsZXQgbz1bXTtpZihuKXtjb25zdCBuPXQucXVlcnlTZWxlY3RvckFsbChlKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylvLnB1c2goblt0XSl9ZWxzZXtjb25zdCBuPXQucXVlcnlTZWxlY3RvcihlKTtuJiZvLnB1c2gobil9cmV0dXJuIG99KTtsZXQga3g9bnVsbCxTeD0hMTtmdW5jdGlvbiBEeCh0KXtreHx8KGt4PShmdW5jdGlvbiBlKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5ib2R5Om51bGx9KSgpfHx7fSxTeD0hIWt4LnN0eWxlJiYiV2Via2l0QXBwZWFyYW5jZSJpbiBreC5zdHlsZSk7bGV0IG49ITA7cmV0dXJuIGt4LnN0eWxlJiYhKGZ1bmN0aW9uIG8odCl7cmV0dXJuImVia2l0Ij09dC5zdWJzdHJpbmcoMSw2KX0pKHQpJiYobj10IGluIGt4LnN0eWxlLCFuJiZTeCkmJihuPSJXZWJraXQiK3QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSlpbiBreC5zdHlsZSksbn1jb25zdCBFeD1PeCxSeD14eCxBeD1QeDtmdW5jdGlvbiBUeCh0KXtjb25zdCBlPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3Qgbz1uLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIik7ZVtvXT10W25dfSkpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIE54e3ZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gRHgodCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gRXgodCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUngodCxlKX1xdWVyeSh0LGUsbil7cmV0dXJuIEF4KHQsZSxuKX1jb21wdXRlU3R5bGUodCxlLG4pe3JldHVybiBufHwiIn1hbmltYXRlKHQsZSxuLG8saSxhPVtdLHIpe3JldHVybiBuZXcgbXgobixvKX19TnguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE54KX0sTnguybVwcm92PU1uKHt0b2tlbjpOeCxmYWN0b3J5Ok54Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOeCxbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIHp4e316eC5OT09QPW5ldyBOeDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEl4PSJuZy1lbnRlciIsSHg9Im5nLWxlYXZlIixGeD0ibmctdHJpZ2dlciIsTHg9Ii5uZy10cmlnZ2VyIixCeD0ibmctYW5pbWF0aW5nIixWeD0iLm5nLWFuaW1hdGluZyI7ZnVuY3Rpb24gangodCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2NvbnN0IGU9dC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykvKTtyZXR1cm4hZXx8ZS5sZW5ndGg8Mj8wOlV4KHBhcnNlRmxvYXQoZVsxXSksZVsyXSl9ZnVuY3Rpb24gVXgodCxlKXtzd2l0Y2goZSl7Y2FzZSJzIjpyZXR1cm4gMWUzKnQ7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gR3godCxlLG4pe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpP3Q6KGZ1bmN0aW9uIG8odCxlLG4pe2xldCBvLGk9MCxhPSIiO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3Qgbj10Lm1hdGNoKC9eKC0/W1wuXGRdKykobT9zKSg/OlxzKygtP1tcLlxkXSspKG0/cykpPyg/OlxzKyhbLWEtel0rKD86XCguKz9cKSk/KSk/JC9pKTtpZihudWxsPT09bilyZXR1cm4gZS5wdXNoKGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke3R9IiBpcyBpbnZhbGlkLmApLHtkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiIifTtvPVV4KHBhcnNlRmxvYXQoblsxXSksblsyXSk7Y29uc3Qgcj1uWzNdO251bGwhPXImJihpPVV4KHBhcnNlRmxvYXQociksbls0XSkpO2NvbnN0IHM9bls1XTtzJiYoYT1zKX1lbHNlIG89dDtpZighbil7bGV0IG49ITEsYT1lLmxlbmd0aDtvPDAmJihlLnB1c2goIkR1cmF0aW9uIHZhbHVlcyBiZWxvdyAwIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhpcyBhbmltYXRpb24gc3RlcC4iKSxuPSEwKSxpPDAmJihlLnB1c2goIkRlbGF5IHZhbHVlcyBiZWxvdyAwIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhpcyBhbmltYXRpb24gc3RlcC4iKSxuPSEwKSxuJiZlLnNwbGljZShhLDAsYFRoZSBwcm92aWRlZCB0aW1pbmcgdmFsdWUgIiR7dH0iIGlzIGludmFsaWQuYCl9cmV0dXJue2R1cmF0aW9uOm8sZGVsYXk6aSxlYXNpbmc6YX19KSh0LGUsbil9ZnVuY3Rpb24gV3godCxlPXt9KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2Vbbl09dFtuXX0pKSxlfWZ1bmN0aW9uIFl4KHQsZSxuPXt9KXtpZihlKWZvcihsZXQgZSBpbiB0KW5bZV09dFtlXTtlbHNlIFd4KHQsbik7cmV0dXJuIG59ZnVuY3Rpb24gcXgodCxlLG4pe3JldHVybiBuP2UrIjoiK24rIjsiOiIifWZ1bmN0aW9uIFp4KHQpe2xldCBlPSIiO2ZvcihsZXQgbj0wO248dC5zdHlsZS5sZW5ndGg7bisrKXtjb25zdCBvPXQuc3R5bGUuaXRlbShuKTtlKz1xeCgwLG8sdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG8pKX1mb3IoY29uc3QgbiBpbiB0LnN0eWxlKXQuc3R5bGUuaGFzT3duUHJvcGVydHkobikmJiFuLnN0YXJ0c1dpdGgoIl8iKSYmKGUrPXF4KDAsbi5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCksdC5zdHlsZVtuXSkpO3Quc2V0QXR0cmlidXRlKCJzdHlsZSIsZSl9ZnVuY3Rpb24gWHgodCxlLG4pe3Quc3R5bGUmJihPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChvPT57Y29uc3QgaT1vTyhvKTtuJiYhbi5oYXNPd25Qcm9wZXJ0eShvKSYmKG5bb109dC5zdHlsZVtpXSksdC5zdHlsZVtpXT1lW29dfSkpLGd4KCkmJlp4KHQpKX1mdW5jdGlvbiBLeCh0LGUpe3Quc3R5bGUmJihPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChlPT57Y29uc3Qgbj1vTyhlKTt0LnN0eWxlW25dPSIifSkpLGd4KCkmJlp4KHQpKX1mdW5jdGlvbiBKeCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8xPT10Lmxlbmd0aD90WzBdOml4KHQpOnR9Y29uc3QgUXg9bmV3IFJlZ0V4cCgie3tcXHMqKC4rPylcXHMqfX0iLCJnIik7ZnVuY3Rpb24gJHgodCl7bGV0IGU9W107aWYoInN0cmluZyI9PXR5cGVvZiB0KXtsZXQgbjtmb3IoO249UXguZXhlYyh0KTspZS5wdXNoKG5bMV0pO1F4Lmxhc3RJbmRleD0wfXJldHVybiBlfWZ1bmN0aW9uIHRPKHQsZSxuKXtjb25zdCBvPXQudG9TdHJpbmcoKSxpPW8ucmVwbGFjZShReCwoKHQsbyk9PntsZXQgaT1lW29dO3JldHVybiBlLmhhc093blByb3BlcnR5KG8pfHwobi5wdXNoKGBQbGVhc2UgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgYW5pbWF0aW9uIHBhcmFtICR7b31gKSxpPSIiKSxpLnRvU3RyaW5nKCl9KSk7cmV0dXJuIGk9PW8/dDppfWZ1bmN0aW9uIGVPKHQpe2NvbnN0IGU9W107bGV0IG49dC5uZXh0KCk7Zm9yKDshbi5kb25lOyllLnB1c2gobi52YWx1ZSksbj10Lm5leHQoKTtyZXR1cm4gZX1jb25zdCBuTz0vLSsoW2EtejAtOV0pL2c7ZnVuY3Rpb24gb08odCl7cmV0dXJuIHQucmVwbGFjZShuTywoKC4uLnQpPT50WzFdLnRvVXBwZXJDYXNlKCkpKX1mdW5jdGlvbiBpTyh0LGUpe3JldHVybiAwPT09dHx8MD09PWV9ZnVuY3Rpb24gYU8odCxlLG4pe2NvbnN0IG89T2JqZWN0LmtleXMobik7aWYoby5sZW5ndGgmJmUubGVuZ3RoKXtsZXQgYT1lWzBdLHI9W107aWYoby5mb3JFYWNoKCh0PT57YS5oYXNPd25Qcm9wZXJ0eSh0KXx8ci5wdXNoKHQpLGFbdF09blt0XX0pKSxyLmxlbmd0aClmb3IodmFyIGk9MTtpPGUubGVuZ3RoO2krKyl7bGV0IG49ZVtpXTtyLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bZV09c08odCxlKX0pKX19cmV0dXJuIGV9ZnVuY3Rpb24gck8odCxlLG4pe3N3aXRjaChlLnR5cGUpe2Nhc2UgNzpyZXR1cm4gdC52aXNpdFRyaWdnZXIoZSxuKTtjYXNlIDA6cmV0dXJuIHQudmlzaXRTdGF0ZShlLG4pO2Nhc2UgMTpyZXR1cm4gdC52aXNpdFRyYW5zaXRpb24oZSxuKTtjYXNlIDI6cmV0dXJuIHQudmlzaXRTZXF1ZW5jZShlLG4pO2Nhc2UgMzpyZXR1cm4gdC52aXNpdEdyb3VwKGUsbik7Y2FzZSA0OnJldHVybiB0LnZpc2l0QW5pbWF0ZShlLG4pO2Nhc2UgNTpyZXR1cm4gdC52aXNpdEtleWZyYW1lcyhlLG4pO2Nhc2UgNjpyZXR1cm4gdC52aXNpdFN0eWxlKGUsbik7Y2FzZSA4OnJldHVybiB0LnZpc2l0UmVmZXJlbmNlKGUsbik7Y2FzZSA5OnJldHVybiB0LnZpc2l0QW5pbWF0ZUNoaWxkKGUsbik7Y2FzZSAxMDpyZXR1cm4gdC52aXNpdEFuaW1hdGVSZWYoZSxuKTtjYXNlIDExOnJldHVybiB0LnZpc2l0UXVlcnkoZSxuKTtjYXNlIDEyOnJldHVybiB0LnZpc2l0U3RhZ2dlcihlLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcmVzb2x2ZSBhbmltYXRpb24gbWV0YWRhdGEgbm9kZSAjJHtlLnR5cGV9YCl9fWZ1bmN0aW9uIHNPKHQsZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW2VdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBsTz0iKiI7ZnVuY3Rpb24gY08odCxlKXtjb25zdCBuPVtdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KC9ccyosXHMqLykuZm9yRWFjaCgodD0+KGZ1bmN0aW9uIG8odCxlLG4pe2lmKCI6Ij09dFswXSl7Y29uc3Qgbz0oZnVuY3Rpb24gbyh0LGUpe3N3aXRjaCh0KXtjYXNlIjplbnRlciI6cmV0dXJuInZvaWQgPT4gKiI7Y2FzZSI6bGVhdmUiOnJldHVybiIqID0+IHZvaWQiO2Nhc2UiOmluY3JlbWVudCI6cmV0dXJuKHQsZSk9PnBhcnNlRmxvYXQoZSk+cGFyc2VGbG9hdCh0KTtjYXNlIjpkZWNyZW1lbnQiOnJldHVybih0LGUpPT5wYXJzZUZsb2F0KGUpPHBhcnNlRmxvYXQodCk7ZGVmYXVsdDpyZXR1cm4gZS5wdXNoKGBUaGUgdHJhbnNpdGlvbiBhbGlhcyB2YWx1ZSAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZGApLCIqID0+ICoifX0pKHQsbik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG8pcmV0dXJuIHZvaWQgZS5wdXNoKG8pO3Q9b31jb25zdCBpPXQubWF0Y2goL14oXCp8Wy1cd10rKVxzKig8P1s9LV0+KVxzKihcKnxbLVx3XSspJC8pO2lmKG51bGw9PWl8fGkubGVuZ3RoPDQpcmV0dXJuIG4ucHVzaChgVGhlIHByb3ZpZGVkIHRyYW5zaXRpb24gZXhwcmVzc2lvbiAiJHt0fSIgaXMgbm90IHN1cHBvcnRlZGApLGU7Y29uc3QgYT1pWzFdLHI9aVsyXSxzPWlbM107ZS5wdXNoKG1PKGEscykpLCI8IiE9clswXXx8YT09bE8mJnM9PWxPfHxlLnB1c2gobU8ocyxhKSl9KSh0LG4sZSkpKTpuLnB1c2godCksbn1jb25zdCBkTz1uZXcgU2V0KFsidHJ1ZSIsIjEiXSkscE89bmV3IFNldChbImZhbHNlIiwiMCJdKTtmdW5jdGlvbiBtTyh0LGUpe2NvbnN0IG49ZE8uaGFzKHQpfHxwTy5oYXModCksbz1kTy5oYXMoZSl8fHBPLmhhcyhlKTtyZXR1cm4oaSxhKT0+e2xldCByPXQ9PWxPfHx0PT1pLHM9ZT09bE98fGU9PWE7cmV0dXJuIXImJm4mJiJib29sZWFuIj09dHlwZW9mIGkmJihyPWk/ZE8uaGFzKHQpOnBPLmhhcyh0KSksIXMmJm8mJiJib29sZWFuIj09dHlwZW9mIGEmJihzPWE/ZE8uaGFzKGUpOnBPLmhhcyhlKSksciYmc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHVPPW5ldyBSZWdFeHAoInMqOnNlbGZzKiw/IiwiZyIpO2Z1bmN0aW9uIGZPKHQsZSxuKXtyZXR1cm4gbmV3IGdPKHQpLmJ1aWxkKGUsbil9Y2xhc3MgZ097Y29uc3RydWN0b3IodCl7dGhpcy5fZHJpdmVyPXR9YnVpbGQodCxlKXtjb25zdCBuPW5ldyBoTyhlKTtyZXR1cm4gdGhpcy5fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShuKSxyTyh0aGlzLEp4KHQpLG4pfV9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKHQpe3QuY3VycmVudFF1ZXJ5U2VsZWN0b3I9IiIsdC5jb2xsZWN0ZWRTdHlsZXM9e30sdC5jb2xsZWN0ZWRTdHlsZXNbIiJdPXt9LHQuY3VycmVudFRpbWU9MH12aXNpdFRyaWdnZXIodCxlKXtsZXQgbj1lLnF1ZXJ5Q291bnQ9MCxvPWUuZGVwQ291bnQ9MDtjb25zdCBpPVtdLGE9W107cmV0dXJuIkAiPT10Lm5hbWUuY2hhckF0KDApJiZlLmVycm9ycy5wdXNoKCJhbmltYXRpb24gdHJpZ2dlcnMgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYW4gYEBgIHNpZ24gKGUuZy4gdHJpZ2dlcignQGZvbycsIFsuLi5dKSkiKSx0LmRlZmluaXRpb25zLmZvckVhY2goKHQ9PntpZih0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKGUpLDA9PXQudHlwZSl7Y29uc3Qgbj10LG89bi5uYW1lO28udG9TdHJpbmcoKS5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2goKHQ9PntuLm5hbWU9dCxpLnB1c2godGhpcy52aXNpdFN0YXRlKG4sZSkpfSkpLG4ubmFtZT1vfWVsc2UgaWYoMT09dC50eXBlKXtjb25zdCBpPXRoaXMudmlzaXRUcmFuc2l0aW9uKHQsZSk7bis9aS5xdWVyeUNvdW50LG8rPWkuZGVwQ291bnQsYS5wdXNoKGkpfWVsc2UgZS5lcnJvcnMucHVzaCgib25seSBzdGF0ZSgpIGFuZCB0cmFuc2l0aW9uKCkgZGVmaW5pdGlvbnMgY2FuIHNpdCBpbnNpZGUgb2YgYSB0cmlnZ2VyKCkiKX0pKSx7dHlwZTo3LG5hbWU6dC5uYW1lLHN0YXRlczppLHRyYW5zaXRpb25zOmEscXVlcnlDb3VudDpuLGRlcENvdW50Om8sb3B0aW9uczpudWxsfX12aXNpdFN0YXRlKHQsZSl7Y29uc3Qgbj10aGlzLnZpc2l0U3R5bGUodC5zdHlsZXMsZSksbz10Lm9wdGlvbnMmJnQub3B0aW9ucy5wYXJhbXN8fG51bGw7aWYobi5jb250YWluc0R5bmFtaWNTdHlsZXMpe2NvbnN0IGk9bmV3IFNldCxhPW98fHt9O2lmKG4uc3R5bGVzLmZvckVhY2goKHQ9PntpZihiTyh0KSl7Y29uc3QgZT10O09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PnskeChlW3RdKS5mb3JFYWNoKCh0PT57YS5oYXNPd25Qcm9wZXJ0eSh0KXx8aS5hZGQodCl9KSl9KSl9fSkpLGkuc2l6ZSl7Y29uc3Qgbj1lTyhpLnZhbHVlcygpKTtlLmVycm9ycy5wdXNoKGBzdGF0ZSgiJHt0Lm5hbWV9IiwgLi4uKSBtdXN0IGRlZmluZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIHRoZSBmb2xsb3dpbmcgc3R5bGUgc3Vic3RpdHV0aW9uczogJHtuLmpvaW4oIiwgIil9YCl9fXJldHVybnt0eXBlOjAsbmFtZTp0Lm5hbWUsc3R5bGU6bixvcHRpb25zOm8/e3BhcmFtczpvfTpudWxsfX12aXNpdFRyYW5zaXRpb24odCxlKXtlLnF1ZXJ5Q291bnQ9MCxlLmRlcENvdW50PTA7Y29uc3Qgbj1yTyh0aGlzLEp4KHQuYW5pbWF0aW9uKSxlKTtyZXR1cm57dHlwZToxLG1hdGNoZXJzOmNPKHQuZXhwcixlLmVycm9ycyksYW5pbWF0aW9uOm4scXVlcnlDb3VudDplLnF1ZXJ5Q291bnQsZGVwQ291bnQ6ZS5kZXBDb3VudCxvcHRpb25zOnlPKHQub3B0aW9ucyl9fXZpc2l0U2VxdWVuY2UodCxlKXtyZXR1cm57dHlwZToyLHN0ZXBzOnQuc3RlcHMubWFwKCh0PT5yTyh0aGlzLHQsZSkpKSxvcHRpb25zOnlPKHQub3B0aW9ucyl9fXZpc2l0R3JvdXAodCxlKXtjb25zdCBuPWUuY3VycmVudFRpbWU7bGV0IG89MDtjb25zdCBpPXQuc3RlcHMubWFwKCh0PT57ZS5jdXJyZW50VGltZT1uO2NvbnN0IGk9ck8odGhpcyx0LGUpO3JldHVybiBvPU1hdGgubWF4KG8sZS5jdXJyZW50VGltZSksaX0pKTtyZXR1cm4gZS5jdXJyZW50VGltZT1vLHt0eXBlOjMsc3RlcHM6aSxvcHRpb25zOnlPKHQub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZSh0LGUpe2NvbnN0IG49KGZ1bmN0aW9uIG8odCxlKXtsZXQgbj1udWxsO2lmKHQuaGFzT3duUHJvcGVydHkoImR1cmF0aW9uIikpbj10O2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiBfTyhHeCh0LGUpLmR1cmF0aW9uLDAsIiIpO2NvbnN0IG89dDtpZihvLnNwbGl0KC9ccysvKS5zb21lKCh0PT4ieyI9PXQuY2hhckF0KDApJiYieyI9PXQuY2hhckF0KDEpKSkpe2NvbnN0IHQ9X08oMCwwLCIiKTtyZXR1cm4gdC5keW5hbWljPSEwLHQuc3RyVmFsdWU9byx0fXJldHVybiBuPW58fEd4KG8sZSksX08obi5kdXJhdGlvbixuLmRlbGF5LG4uZWFzaW5nKX0pKHQudGltaW5ncyxlLmVycm9ycyk7bGV0IGk7ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bjtsZXQgYT10LnN0eWxlcz90LnN0eWxlczpheCh7fSk7aWYoNT09YS50eXBlKWk9dGhpcy52aXNpdEtleWZyYW1lcyhhLGUpO2Vsc2V7bGV0IG89dC5zdHlsZXMsYT0hMTtpZighbyl7YT0hMDtjb25zdCB0PXt9O24uZWFzaW5nJiYodC5lYXNpbmc9bi5lYXNpbmcpLG89YXgodCl9ZS5jdXJyZW50VGltZSs9bi5kdXJhdGlvbituLmRlbGF5O2NvbnN0IHI9dGhpcy52aXNpdFN0eWxlKG8sZSk7ci5pc0VtcHR5U3RlcD1hLGk9cn1yZXR1cm4gZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx7dHlwZTo0LHRpbWluZ3M6bixzdHlsZTppLG9wdGlvbnM6bnVsbH19dmlzaXRTdHlsZSh0LGUpe2NvbnN0IG49dGhpcy5fbWFrZVN0eWxlQXN0KHQsZSk7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QobixlKSxufV9tYWtlU3R5bGVBc3QodCxlKXtjb25zdCBuPVtdO0FycmF5LmlzQXJyYXkodC5zdHlsZXMpP3Quc3R5bGVzLmZvckVhY2goKHQ9Pnsic3RyaW5nIj09dHlwZW9mIHQ/dD09ZXg/bi5wdXNoKHQpOmUuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBzdHlsZSBzdHJpbmcgdmFsdWUgJHt0fSBpcyBub3QgYWxsb3dlZC5gKTpuLnB1c2godCl9KSk6bi5wdXNoKHQuc3R5bGVzKTtsZXQgbz0hMSxpPW51bGw7cmV0dXJuIG4uZm9yRWFjaCgodD0+e2lmKGJPKHQpKXtjb25zdCBlPXQsbj1lLmVhc2luZztpZihuJiYoaT1uLGRlbGV0ZSBlLmVhc2luZyksIW8pZm9yKGxldCB0IGluIGUpaWYoZVt0XS50b1N0cmluZygpLmluZGV4T2YoInt7Iik+PTApe289ITA7YnJlYWt9fX0pKSx7dHlwZTo2LHN0eWxlczpuLGVhc2luZzppLG9mZnNldDp0Lm9mZnNldCxjb250YWluc0R5bmFtaWNTdHlsZXM6byxvcHRpb25zOm51bGx9fV92YWxpZGF0ZVN0eWxlQXN0KHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRBbmltYXRlVGltaW5ncztsZXQgbz1lLmN1cnJlbnRUaW1lLGk9ZS5jdXJyZW50VGltZTtuJiZpPjAmJihpLT1uLmR1cmF0aW9uK24uZGVsYXkpLHQuc3R5bGVzLmZvckVhY2goKHQ9Pnsic3RyaW5nIiE9dHlwZW9mIHQmJk9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntpZighdGhpcy5fZHJpdmVyLnZhbGlkYXRlU3R5bGVQcm9wZXJ0eShuKSlyZXR1cm4gdm9pZCBlLmVycm9ycy5wdXNoKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHByb3BlcnR5ICIke259IiBpcyBub3QgYSBzdXBwb3J0ZWQgQ1NTIHByb3BlcnR5IGZvciBhbmltYXRpb25zYCk7Y29uc3QgYT1lLmNvbGxlY3RlZFN0eWxlc1tlLmN1cnJlbnRRdWVyeVNlbGVjdG9yXSxyPWFbbl07bGV0IHM9ITA7ciYmKGkhPW8mJmk+PXIuc3RhcnRUaW1lJiZvPD1yLmVuZFRpbWUmJihlLmVycm9ycy5wdXNoKGBUaGUgQ1NTIHByb3BlcnR5ICIke259IiB0aGF0IGV4aXN0cyBiZXR3ZWVuIHRoZSB0aW1lcyBvZiAiJHtyLnN0YXJ0VGltZX1tcyIgYW5kICIke3IuZW5kVGltZX1tcyIgaXMgYWxzbyBiZWluZyBhbmltYXRlZCBpbiBhIHBhcmFsbGVsIGFuaW1hdGlvbiBiZXR3ZWVuIHRoZSB0aW1lcyBvZiAiJHtpfW1zIiBhbmQgIiR7b31tcyJgKSxzPSExKSxpPXIuc3RhcnRUaW1lKSxzJiYoYVtuXT17c3RhcnRUaW1lOmksZW5kVGltZTpvfSksZS5vcHRpb25zJiYoZnVuY3Rpb24gbCh0LGUsbil7Y29uc3Qgbz1lLnBhcmFtc3x8e30saT0keCh0KTtpLmxlbmd0aCYmaS5mb3JFYWNoKCh0PT57by5oYXNPd25Qcm9wZXJ0eSh0KXx8bi5wdXNoKGBVbmFibGUgdG8gcmVzb2x2ZSB0aGUgbG9jYWwgYW5pbWF0aW9uIHBhcmFtICR7dH0gaW4gdGhlIGdpdmVuIGxpc3Qgb2YgdmFsdWVzYCl9KSl9KSh0W25dLGUub3B0aW9ucyxlLmVycm9ycyl9KSl9KSl9dmlzaXRLZXlmcmFtZXModCxlKXtjb25zdCBuPXt0eXBlOjUsc3R5bGVzOltdLG9wdGlvbnM6bnVsbH07aWYoIWUuY3VycmVudEFuaW1hdGVUaW1pbmdzKXJldHVybiBlLmVycm9ycy5wdXNoKCJrZXlmcmFtZXMoKSBtdXN0IGJlIHBsYWNlZCBpbnNpZGUgb2YgYSBjYWxsIHRvIGFuaW1hdGUoKSIpLG47bGV0IG89MDtjb25zdCBpPVtdO2xldCBhPSExLHI9ITEscz0wO2NvbnN0IGw9dC5zdGVwcy5tYXAoKHQ9Pntjb25zdCBuPXRoaXMuX21ha2VTdHlsZUFzdCh0LGUpO2xldCBsPW51bGwhPW4ub2Zmc2V0P24ub2Zmc2V0OihmdW5jdGlvbiBjKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gbnVsbDtsZXQgZT1udWxsO2lmKEFycmF5LmlzQXJyYXkodCkpdC5mb3JFYWNoKCh0PT57aWYoYk8odCkmJnQuaGFzT3duUHJvcGVydHkoIm9mZnNldCIpKXtjb25zdCBuPXQ7ZT1wYXJzZUZsb2F0KG4ub2Zmc2V0KSxkZWxldGUgbi5vZmZzZXR9fSkpO2Vsc2UgaWYoYk8odCkmJnQuaGFzT3duUHJvcGVydHkoIm9mZnNldCIpKXtjb25zdCBuPXQ7ZT1wYXJzZUZsb2F0KG4ub2Zmc2V0KSxkZWxldGUgbi5vZmZzZXR9cmV0dXJuIGV9KShuLnN0eWxlcyksZD0wO3JldHVybiBudWxsIT1sJiYobysrLGQ9bi5vZmZzZXQ9bCkscj1yfHxkPDB8fGQ+MSxhPWF8fGQ8cyxzPWQsaS5wdXNoKGQpLG59KSk7ciYmZS5lcnJvcnMucHVzaCgiUGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBrZXlmcmFtZSBvZmZzZXRzIGFyZSBiZXR3ZWVuIDAgYW5kIDEiKSxhJiZlLmVycm9ycy5wdXNoKCJQbGVhc2UgZW5zdXJlIHRoYXQgYWxsIGtleWZyYW1lIG9mZnNldHMgYXJlIGluIG9yZGVyIik7Y29uc3QgYz10LnN0ZXBzLmxlbmd0aDtsZXQgZD0wO28+MCYmbzxjP2UuZXJyb3JzLnB1c2goIk5vdCBhbGwgc3R5bGUoKSBzdGVwcyB3aXRoaW4gdGhlIGRlY2xhcmVkIGtleWZyYW1lcygpIGNvbnRhaW4gb2Zmc2V0cyIpOjA9PW8mJihkPTEvKGMtMSkpO2NvbnN0IHA9Yy0xLG09ZS5jdXJyZW50VGltZSx1PWUuY3VycmVudEFuaW1hdGVUaW1pbmdzLGY9dS5kdXJhdGlvbjtyZXR1cm4gbC5mb3JFYWNoKCgodCxvKT0+e2NvbnN0IGE9ZD4wP289PXA/MTpkKm86aVtvXSxyPWEqZjtlLmN1cnJlbnRUaW1lPW0rdS5kZWxheStyLHUuZHVyYXRpb249cix0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KHQsZSksdC5vZmZzZXQ9YSxuLnN0eWxlcy5wdXNoKHQpfSkpLG59dmlzaXRSZWZlcmVuY2UodCxlKXtyZXR1cm57dHlwZTo4LGFuaW1hdGlvbjpyTyh0aGlzLEp4KHQuYW5pbWF0aW9uKSxlKSxvcHRpb25zOnlPKHQub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZUNoaWxkKHQsZSl7cmV0dXJuIGUuZGVwQ291bnQrKyx7dHlwZTo5LG9wdGlvbnM6eU8odC5vcHRpb25zKX19dmlzaXRBbmltYXRlUmVmKHQsZSl7cmV0dXJue3R5cGU6MTAsYW5pbWF0aW9uOnRoaXMudmlzaXRSZWZlcmVuY2UodC5hbmltYXRpb24sZSksb3B0aW9uczp5Tyh0Lm9wdGlvbnMpfX12aXNpdFF1ZXJ5KHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRRdWVyeVNlbGVjdG9yLG89dC5vcHRpb25zfHx7fTtlLnF1ZXJ5Q291bnQrKyxlLmN1cnJlbnRRdWVyeT10O2NvbnN0W2ksYV09KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT0hIXQuc3BsaXQoL1xzKixccyovKS5maW5kKCh0PT4iOnNlbGYiPT10KSk7cmV0dXJuIGUmJih0PXQucmVwbGFjZSh1TywiIikpLFt0PXQucmVwbGFjZSgvQFwqL2csTHgpLnJlcGxhY2UoL0BcdysvZywodD0+Ii5uZy10cmlnZ2VyLSIrdC5zdWJzdHIoMSkpKS5yZXBsYWNlKC86YW5pbWF0aW5nL2csVngpLGVdfSkodC5zZWxlY3Rvcik7ZS5jdXJyZW50UXVlcnlTZWxlY3Rvcj1uLmxlbmd0aD9uKyIgIitpOmksTXgoZS5jb2xsZWN0ZWRTdHlsZXMsZS5jdXJyZW50UXVlcnlTZWxlY3Rvcix7fSk7Y29uc3Qgcz1yTyh0aGlzLEp4KHQuYW5pbWF0aW9uKSxlKTtyZXR1cm4gZS5jdXJyZW50UXVlcnk9bnVsbCxlLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW4se3R5cGU6MTEsc2VsZWN0b3I6aSxsaW1pdDpvLmxpbWl0fHwwLG9wdGlvbmFsOiEhby5vcHRpb25hbCxpbmNsdWRlU2VsZjphLGFuaW1hdGlvbjpzLG9yaWdpbmFsU2VsZWN0b3I6dC5zZWxlY3RvcixvcHRpb25zOnlPKHQub3B0aW9ucyl9fXZpc2l0U3RhZ2dlcih0LGUpe2UuY3VycmVudFF1ZXJ5fHxlLmVycm9ycy5wdXNoKCJzdGFnZ2VyKCkgY2FuIG9ubHkgYmUgdXNlZCBpbnNpZGUgb2YgcXVlcnkoKSIpO2NvbnN0IG49ImZ1bGwiPT09dC50aW1pbmdzP3tkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiJmdWxsIn06R3godC50aW1pbmdzLGUuZXJyb3JzLCEwKTtyZXR1cm57dHlwZToxMixhbmltYXRpb246ck8odGhpcyxKeCh0LmFuaW1hdGlvbiksZSksdGltaW5nczpuLG9wdGlvbnM6bnVsbH19fWNsYXNzIGhPe2NvbnN0cnVjdG9yKHQpe3RoaXMuZXJyb3JzPXQsdGhpcy5xdWVyeUNvdW50PTAsdGhpcy5kZXBDb3VudD0wLHRoaXMuY3VycmVudFRyYW5zaXRpb249bnVsbCx0aGlzLmN1cnJlbnRRdWVyeT1udWxsLHRoaXMuY3VycmVudFF1ZXJ5U2VsZWN0b3I9bnVsbCx0aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncz1udWxsLHRoaXMuY3VycmVudFRpbWU9MCx0aGlzLmNvbGxlY3RlZFN0eWxlcz17fSx0aGlzLm9wdGlvbnM9bnVsbH19ZnVuY3Rpb24gYk8odCl7cmV0dXJuIUFycmF5LmlzQXJyYXkodCkmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiB5Tyh0KXtyZXR1cm4gdD8odD1XeCh0KSkucGFyYW1zJiYodC5wYXJhbXM9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQ/V3godCk6bnVsbH0pKHQucGFyYW1zKSk6dD17fSx0fWZ1bmN0aW9uIF9PKHQsZSxuKXtyZXR1cm57ZHVyYXRpb246dCxkZWxheTplLGVhc2luZzpufX1mdW5jdGlvbiBDTyh0LGUsbixvLGksYSxyPW51bGwscz0hMSl7cmV0dXJue3R5cGU6MSxlbGVtZW50OnQsa2V5ZnJhbWVzOmUscHJlU3R5bGVQcm9wczpuLHBvc3RTdHlsZVByb3BzOm8sZHVyYXRpb246aSxkZWxheTphLHRvdGFsVGltZTppK2EsZWFzaW5nOnIsc3ViVGltZWxpbmU6c319Y2xhc3MgTU97Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IE1hcH1jb25zdW1lKHQpe2xldCBlPXRoaXMuX21hcC5nZXQodCk7cmV0dXJuIGU/dGhpcy5fbWFwLmRlbGV0ZSh0KTplPVtdLGV9YXBwZW5kKHQsZSl7bGV0IG49dGhpcy5fbWFwLmdldCh0KTtufHx0aGlzLl9tYXAuc2V0KHQsbj1bXSksbi5wdXNoKC4uLmUpfWhhcyh0KXtyZXR1cm4gdGhpcy5fbWFwLmhhcyh0KX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgdk89bmV3IFJlZ0V4cCgiOmVudGVyIiwiZyIpLHhPPW5ldyBSZWdFeHAoIjpsZWF2ZSIsImciKTtmdW5jdGlvbiBPTyh0LGUsbixvLGksYT17fSxyPXt9LHMsbCxjPVtdKXtyZXR1cm4obmV3IFBPKS5idWlsZEtleWZyYW1lcyh0LGUsbixvLGksYSxyLHMsbCxjKX1jbGFzcyBQT3tidWlsZEtleWZyYW1lcyh0LGUsbixvLGksYSxyLHMsbCxjPVtdKXtsPWx8fG5ldyBNTztjb25zdCBkPW5ldyBrTyh0LGUsbCxvLGksYyxbXSk7ZC5vcHRpb25zPXMsZC5jdXJyZW50VGltZWxpbmUuc2V0U3R5bGVzKFthXSxudWxsLGQuZXJyb3JzLHMpLHJPKHRoaXMsbixkKTtjb25zdCBwPWQudGltZWxpbmVzLmZpbHRlcigodD0+dC5jb250YWluc0FuaW1hdGlvbigpKSk7aWYocC5sZW5ndGgmJk9iamVjdC5rZXlzKHIpLmxlbmd0aCl7Y29uc3QgdD1wW3AubGVuZ3RoLTFdO3QuYWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKXx8dC5zZXRTdHlsZXMoW3JdLG51bGwsZC5lcnJvcnMscyl9cmV0dXJuIHAubGVuZ3RoP3AubWFwKCh0PT50LmJ1aWxkS2V5ZnJhbWVzKCkpKTpbQ08oZSxbXSxbXSxbXSwwLDAsIiIsITEpXX12aXNpdFRyaWdnZXIodCxlKXt9dmlzaXRTdGF0ZSh0LGUpe312aXNpdFRyYW5zaXRpb24odCxlKXt9dmlzaXRBbmltYXRlQ2hpbGQodCxlKXtjb25zdCBuPWUuc3ViSW5zdHJ1Y3Rpb25zLmNvbnN1bWUoZS5lbGVtZW50KTtpZihuKXtjb25zdCBvPWUuY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMpLGk9ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsYT10aGlzLl92aXNpdFN1Ykluc3RydWN0aW9ucyhuLG8sby5vcHRpb25zKTtpIT1hJiZlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShhKX1lLnByZXZpb3VzTm9kZT10fXZpc2l0QW5pbWF0ZVJlZih0LGUpe2NvbnN0IG49ZS5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyk7bi50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoKSx0aGlzLnZpc2l0UmVmZXJlbmNlKHQuYW5pbWF0aW9uLG4pLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKG4uY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKSxlLnByZXZpb3VzTm9kZT10fV92aXNpdFN1Ykluc3RydWN0aW9ucyh0LGUsbil7bGV0IG89ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3QgaT1udWxsIT1uLmR1cmF0aW9uP2p4KG4uZHVyYXRpb24pOm51bGwsYT1udWxsIT1uLmRlbGF5P2p4KG4uZGVsYXkpOm51bGw7cmV0dXJuIDAhPT1pJiZ0LmZvckVhY2goKHQ9Pntjb25zdCBuPWUuYXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKHQsaSxhKTtvPU1hdGgubWF4KG8sbi5kdXJhdGlvbituLmRlbGF5KX0pKSxvfXZpc2l0UmVmZXJlbmNlKHQsZSl7ZS51cGRhdGVPcHRpb25zKHQub3B0aW9ucywhMCksck8odGhpcyx0LmFuaW1hdGlvbixlKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0U2VxdWVuY2UodCxlKXtjb25zdCBuPWUuc3ViQ29udGV4dENvdW50O2xldCBvPWU7Y29uc3QgaT10Lm9wdGlvbnM7aWYoaSYmKGkucGFyYW1zfHxpLmRlbGF5KSYmKG89ZS5jcmVhdGVTdWJDb250ZXh0KGkpLG8udHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCksbnVsbCE9aS5kZWxheSkpezY9PW8ucHJldmlvdXNOb2RlLnR5cGUmJihvLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxvLnByZXZpb3VzTm9kZT13Tyk7Y29uc3QgdD1qeChpLmRlbGF5KTtvLmRlbGF5TmV4dFN0ZXAodCl9dC5zdGVwcy5sZW5ndGgmJih0LnN0ZXBzLmZvckVhY2goKHQ9PnJPKHRoaXMsdCxvKSkpLG8uY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLG8uc3ViQ29udGV4dENvdW50Pm4mJm8udHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCkpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRHcm91cCh0LGUpe2NvbnN0IG49W107bGV0IG89ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWU7Y29uc3QgaT10Lm9wdGlvbnMmJnQub3B0aW9ucy5kZWxheT9qeCh0Lm9wdGlvbnMuZGVsYXkpOjA7dC5zdGVwcy5mb3JFYWNoKChhPT57Y29uc3Qgcj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKTtpJiZyLmRlbGF5TmV4dFN0ZXAoaSksck8odGhpcyxhLHIpLG89TWF0aC5tYXgobyxyLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSksbi5wdXNoKHIuY3VycmVudFRpbWVsaW5lKX0pKSxuLmZvckVhY2goKHQ9PmUuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXModCkpKSxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShvKSxlLnByZXZpb3VzTm9kZT10fV92aXNpdFRpbWluZyh0LGUpe2lmKHQuZHluYW1pYyl7Y29uc3Qgbj10LnN0clZhbHVlO3JldHVybiBHeChlLnBhcmFtcz90TyhuLGUucGFyYW1zLGUuZXJyb3JzKTpuLGUuZXJyb3JzKX1yZXR1cm57ZHVyYXRpb246dC5kdXJhdGlvbixkZWxheTp0LmRlbGF5LGVhc2luZzp0LmVhc2luZ319dmlzaXRBbmltYXRlKHQsZSl7Y29uc3Qgbj1lLmN1cnJlbnRBbmltYXRlVGltaW5ncz10aGlzLl92aXNpdFRpbWluZyh0LnRpbWluZ3MsZSksbz1lLmN1cnJlbnRUaW1lbGluZTtuLmRlbGF5JiYoZS5pbmNyZW1lbnRUaW1lKG4uZGVsYXkpLG8uc25hcHNob3RDdXJyZW50U3R5bGVzKCkpO2NvbnN0IGk9dC5zdHlsZTs1PT1pLnR5cGU/dGhpcy52aXNpdEtleWZyYW1lcyhpLGUpOihlLmluY3JlbWVudFRpbWUobi5kdXJhdGlvbiksdGhpcy52aXNpdFN0eWxlKGksZSksby5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSksZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCxlLnByZXZpb3VzTm9kZT10fXZpc2l0U3R5bGUodCxlKXtjb25zdCBuPWUuY3VycmVudFRpbWVsaW5lLG89ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7IW8mJm4uZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aCYmbi5mb3J3YXJkRnJhbWUoKTtjb25zdCBpPW8mJm8uZWFzaW5nfHx0LmVhc2luZzt0LmlzRW1wdHlTdGVwP24uYXBwbHlFbXB0eVN0ZXAoaSk6bi5zZXRTdHlsZXModC5zdHlsZXMsaSxlLmVycm9ycyxlLm9wdGlvbnMpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRLZXlmcmFtZXModCxlKXtjb25zdCBuPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzLG89ZS5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24saT1uLmR1cmF0aW9uLGE9ZS5jcmVhdGVTdWJDb250ZXh0KCkuY3VycmVudFRpbWVsaW5lO2EuZWFzaW5nPW4uZWFzaW5nLHQuc3R5bGVzLmZvckVhY2goKHQ9PnthLmZvcndhcmRUaW1lKCh0Lm9mZnNldHx8MCkqaSksYS5zZXRTdHlsZXModC5zdHlsZXMsdC5lYXNpbmcsZS5lcnJvcnMsZS5vcHRpb25zKSxhLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpfSkpLGUuY3VycmVudFRpbWVsaW5lLm1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXMoYSksZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUobytpKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0UXVlcnkodCxlKXtjb25zdCBuPWUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLG89dC5vcHRpb25zfHx7fSxpPW8uZGVsYXk/angoby5kZWxheSk6MDtpJiYoNj09PWUucHJldmlvdXNOb2RlLnR5cGV8fDA9PW4mJmUuY3VycmVudFRpbWVsaW5lLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGgpJiYoZS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCksZS5wcmV2aW91c05vZGU9d08pO2xldCBhPW47Y29uc3Qgcj1lLmludm9rZVF1ZXJ5KHQuc2VsZWN0b3IsdC5vcmlnaW5hbFNlbGVjdG9yLHQubGltaXQsdC5pbmNsdWRlU2VsZiwhIW8ub3B0aW9uYWwsZS5lcnJvcnMpO2UuY3VycmVudFF1ZXJ5VG90YWw9ci5sZW5ndGg7bGV0IHM9bnVsbDtyLmZvckVhY2goKChuLG8pPT57ZS5jdXJyZW50UXVlcnlJbmRleD1vO2NvbnN0IHI9ZS5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyxuKTtpJiZyLmRlbGF5TmV4dFN0ZXAoaSksbj09PWUuZWxlbWVudCYmKHM9ci5jdXJyZW50VGltZWxpbmUpLHJPKHRoaXMsdC5hbmltYXRpb24sciksci5jdXJyZW50VGltZWxpbmUuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksYT1NYXRoLm1heChhLHIuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKX0pKSxlLmN1cnJlbnRRdWVyeUluZGV4PTAsZS5jdXJyZW50UXVlcnlUb3RhbD0wLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGEpLHMmJihlLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHMpLGUuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0U3RhZ2dlcih0LGUpe2NvbnN0IG49ZS5wYXJlbnRDb250ZXh0LG89ZS5jdXJyZW50VGltZWxpbmUsaT10LnRpbWluZ3MsYT1NYXRoLmFicyhpLmR1cmF0aW9uKSxyPWEqKGUuY3VycmVudFF1ZXJ5VG90YWwtMSk7bGV0IHM9YSplLmN1cnJlbnRRdWVyeUluZGV4O3N3aXRjaChpLmR1cmF0aW9uPDA/InJldmVyc2UiOmkuZWFzaW5nKXtjYXNlInJldmVyc2UiOnM9ci1zO2JyZWFrO2Nhc2UiZnVsbCI6cz1uLmN1cnJlbnRTdGFnZ2VyVGltZX1jb25zdCBsPWUuY3VycmVudFRpbWVsaW5lO3MmJmwuZGVsYXlOZXh0U3RlcChzKTtjb25zdCBjPWwuY3VycmVudFRpbWU7ck8odGhpcyx0LmFuaW1hdGlvbixlKSxlLnByZXZpb3VzTm9kZT10LG4uY3VycmVudFN0YWdnZXJUaW1lPW8uY3VycmVudFRpbWUtYysoby5zdGFydFRpbWUtbi5jdXJyZW50VGltZWxpbmUuc3RhcnRUaW1lKX19Y29uc3Qgd089e307Y2xhc3Mga097Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzKXt0aGlzLl9kcml2ZXI9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLnN1Ykluc3RydWN0aW9ucz1uLHRoaXMuX2VudGVyQ2xhc3NOYW1lPW8sdGhpcy5fbGVhdmVDbGFzc05hbWU9aSx0aGlzLmVycm9ycz1hLHRoaXMudGltZWxpbmVzPXIsdGhpcy5wYXJlbnRDb250ZXh0PW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLnByZXZpb3VzTm9kZT13Tyx0aGlzLnN1YkNvbnRleHRDb3VudD0wLHRoaXMub3B0aW9ucz17fSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PTAsdGhpcy5jdXJyZW50UXVlcnlUb3RhbD0wLHRoaXMuY3VycmVudFN0YWdnZXJUaW1lPTAsdGhpcy5jdXJyZW50VGltZWxpbmU9c3x8bmV3IFNPKHRoaXMuX2RyaXZlcixlLDApLHIucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSl9Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfXVwZGF0ZU9wdGlvbnModCxlKXtpZighdClyZXR1cm47Y29uc3Qgbj10O2xldCBvPXRoaXMub3B0aW9ucztudWxsIT1uLmR1cmF0aW9uJiYoby5kdXJhdGlvbj1qeChuLmR1cmF0aW9uKSksbnVsbCE9bi5kZWxheSYmKG8uZGVsYXk9angobi5kZWxheSkpO2NvbnN0IGk9bi5wYXJhbXM7aWYoaSl7bGV0IHQ9by5wYXJhbXM7dHx8KHQ9dGhpcy5vcHRpb25zLnBhcmFtcz17fSksT2JqZWN0LmtleXMoaSkuZm9yRWFjaCgobj0+e2UmJnQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPXRPKGlbbl0sdCx0aGlzLmVycm9ycykpfSkpfX1fY29weU9wdGlvbnMoKXtjb25zdCB0PXt9O2lmKHRoaXMub3B0aW9ucyl7Y29uc3QgZT10aGlzLm9wdGlvbnMucGFyYW1zO2lmKGUpe2NvbnN0IG49dC5wYXJhbXM9e307T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgodD0+e25bdF09ZVt0XX0pKX19cmV0dXJuIHR9Y3JlYXRlU3ViQ29udGV4dCh0PW51bGwsZSxuKXtjb25zdCBvPWV8fHRoaXMuZWxlbWVudCxpPW5ldyBrTyh0aGlzLl9kcml2ZXIsbyx0aGlzLnN1Ykluc3RydWN0aW9ucyx0aGlzLl9lbnRlckNsYXNzTmFtZSx0aGlzLl9sZWF2ZUNsYXNzTmFtZSx0aGlzLmVycm9ycyx0aGlzLnRpbWVsaW5lcyx0aGlzLmN1cnJlbnRUaW1lbGluZS5mb3JrKG8sbnx8MCkpO3JldHVybiBpLnByZXZpb3VzTm9kZT10aGlzLnByZXZpb3VzTm9kZSxpLmN1cnJlbnRBbmltYXRlVGltaW5ncz10aGlzLmN1cnJlbnRBbmltYXRlVGltaW5ncyxpLm9wdGlvbnM9dGhpcy5fY29weU9wdGlvbnMoKSxpLnVwZGF0ZU9wdGlvbnModCksaS5jdXJyZW50UXVlcnlJbmRleD10aGlzLmN1cnJlbnRRdWVyeUluZGV4LGkuY3VycmVudFF1ZXJ5VG90YWw9dGhpcy5jdXJyZW50UXVlcnlUb3RhbCxpLnBhcmVudENvbnRleHQ9dGhpcyx0aGlzLnN1YkNvbnRleHRDb3VudCsrLGl9dHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHQpe3JldHVybiB0aGlzLnByZXZpb3VzTm9kZT13Tyx0aGlzLmN1cnJlbnRUaW1lbGluZT10aGlzLmN1cnJlbnRUaW1lbGluZS5mb3JrKHRoaXMuZWxlbWVudCx0KSx0aGlzLnRpbWVsaW5lcy5wdXNoKHRoaXMuY3VycmVudFRpbWVsaW5lKSx0aGlzLmN1cnJlbnRUaW1lbGluZX1hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUodCxlLG4pe2NvbnN0IG89e2R1cmF0aW9uOm51bGwhPWU/ZTp0LmR1cmF0aW9uLGRlbGF5OnRoaXMuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKyhudWxsIT1uP246MCkrdC5kZWxheSxlYXNpbmc6IiJ9LGk9bmV3IERPKHRoaXMuX2RyaXZlcix0LmVsZW1lbnQsdC5rZXlmcmFtZXMsdC5wcmVTdHlsZVByb3BzLHQucG9zdFN0eWxlUHJvcHMsbyx0LnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lKTtyZXR1cm4gdGhpcy50aW1lbGluZXMucHVzaChpKSxvfWluY3JlbWVudFRpbWUodCl7dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24rdCl9ZGVsYXlOZXh0U3RlcCh0KXt0PjAmJnRoaXMuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAodCl9aW52b2tlUXVlcnkodCxlLG4sbyxpLGEpe2xldCByPVtdO2lmKG8mJnIucHVzaCh0aGlzLmVsZW1lbnQpLHQubGVuZ3RoPjApe3Q9KHQ9dC5yZXBsYWNlKHZPLCIuIit0aGlzLl9lbnRlckNsYXNzTmFtZSkpLnJlcGxhY2UoeE8sIi4iK3RoaXMuX2xlYXZlQ2xhc3NOYW1lKTtsZXQgZT10aGlzLl9kcml2ZXIucXVlcnkodGhpcy5lbGVtZW50LHQsMSE9bik7MCE9PW4mJihlPW48MD9lLnNsaWNlKGUubGVuZ3RoK24sZS5sZW5ndGgpOmUuc2xpY2UoMCxuKSksci5wdXNoKC4uLmUpfXJldHVybiBpfHwwIT1yLmxlbmd0aHx8YS5wdXNoKGBcYHF1ZXJ5KCIke2V9IilcYCByZXR1cm5lZCB6ZXJvIGVsZW1lbnRzLiAoVXNlIFxgcXVlcnkoIiR7ZX0iLCB7IG9wdGlvbmFsOiB0cnVlIH0pXGAgaWYgeW91IHdpc2ggdG8gYWxsb3cgdGhpcy4pYCkscn19Y2xhc3MgU097Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZHJpdmVyPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5zdGFydFRpbWU9bix0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXA9byx0aGlzLmR1cmF0aW9uPTAsdGhpcy5fcHJldmlvdXNLZXlmcmFtZT17fSx0aGlzLl9jdXJyZW50S2V5ZnJhbWU9e30sdGhpcy5fa2V5ZnJhbWVzPW5ldyBNYXAsdGhpcy5fc3R5bGVTdW1tYXJ5PXt9LHRoaXMuX3BlbmRpbmdTdHlsZXM9e30sdGhpcy5fYmFja0ZpbGw9e30sdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lPW51bGwsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwfHwodGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPW5ldyBNYXApLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXM9T2JqZWN0LmNyZWF0ZSh0aGlzLl9iYWNrRmlsbCx7fSksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXM9dGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwLmdldChlKSx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc3x8KHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwLnNldChlLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpKSx0aGlzLl9sb2FkS2V5ZnJhbWUoKX1jb250YWluc0FuaW1hdGlvbigpe3N3aXRjaCh0aGlzLl9rZXlmcmFtZXMuc2l6ZSl7Y2FzZSAwOnJldHVybiExO2Nhc2UgMTpyZXR1cm4gdGhpcy5nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkubGVuZ3RoPjA7ZGVmYXVsdDpyZXR1cm4hMH19Z2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLl9jdXJyZW50S2V5ZnJhbWUpfWdldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLnN0YXJ0VGltZSt0aGlzLmR1cmF0aW9ufWRlbGF5TmV4dFN0ZXAodCl7Y29uc3QgZT0xPT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmT2JqZWN0LmtleXModGhpcy5fcGVuZGluZ1N0eWxlcykubGVuZ3RoO3RoaXMuZHVyYXRpb258fGU/KHRoaXMuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZSt0KSxlJiZ0aGlzLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTp0aGlzLnN0YXJ0VGltZSs9dH1mb3JrKHQsZSl7cmV0dXJuIHRoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCksbmV3IFNPKHRoaXMuX2RyaXZlcix0LGV8fHRoaXMuY3VycmVudFRpbWUsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwKX1fbG9hZEtleWZyYW1lKCl7dGhpcy5fY3VycmVudEtleWZyYW1lJiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWUpLHRoaXMuX2N1cnJlbnRLZXlmcmFtZT10aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pLHRoaXMuX2N1cnJlbnRLZXlmcmFtZXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZT1PYmplY3QuY3JlYXRlKHRoaXMuX2JhY2tGaWxsLHt9KSx0aGlzLl9rZXlmcmFtZXMuc2V0KHRoaXMuZHVyYXRpb24sdGhpcy5fY3VycmVudEtleWZyYW1lKSl9Zm9yd2FyZEZyYW1lKCl7dGhpcy5kdXJhdGlvbis9MSx0aGlzLl9sb2FkS2V5ZnJhbWUoKX1mb3J3YXJkVGltZSh0KXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLHRoaXMuZHVyYXRpb249dCx0aGlzLl9sb2FkS2V5ZnJhbWUoKX1fdXBkYXRlU3R5bGUodCxlKXt0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW3RdPWUsdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbdF09ZSx0aGlzLl9zdHlsZVN1bW1hcnlbdF09e3RpbWU6dGhpcy5jdXJyZW50VGltZSx2YWx1ZTplfX1hbGxvd09ubHlUaW1lbGluZVN0eWxlcygpe3JldHVybiB0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWUhPT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9YXBwbHlFbXB0eVN0ZXAodCl7dCYmKHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWUuZWFzaW5nPXQpLE9iamVjdC5rZXlzKHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKS5mb3JFYWNoKCh0PT57dGhpcy5fYmFja0ZpbGxbdF09dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbdF18fGV4LHRoaXMuX2N1cnJlbnRLZXlmcmFtZVt0XT1leH0pKSx0aGlzLl9jdXJyZW50RW1wdHlTdGVwS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lfXNldFN0eWxlcyh0LGUsbixvKXtlJiYodGhpcy5fcHJldmlvdXNLZXlmcmFtZS5lYXNpbmc9ZSk7Y29uc3QgaT1vJiZvLnBhcmFtc3x8e30sYT0oZnVuY3Rpb24gcih0LGUpe2NvbnN0IG49e307bGV0IG87cmV0dXJuIHQuZm9yRWFjaCgodD0+eyIqIj09PXQ/KG89b3x8T2JqZWN0LmtleXMoZSksby5mb3JFYWNoKCh0PT57blt0XT1leH0pKSk6WXgodCwhMSxuKX0pKSxufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMpO09iamVjdC5rZXlzKGEpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRPKGFbdF0saSxuKTt0aGlzLl9wZW5kaW5nU3R5bGVzW3RdPWUsdGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcy5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuX2JhY2tGaWxsW3RdPXRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzLmhhc093blByb3BlcnR5KHQpP3RoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdOmV4KSx0aGlzLl91cGRhdGVTdHlsZSh0LGUpfSkpfWFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpe2NvbnN0IHQ9dGhpcy5fcGVuZGluZ1N0eWxlcyxlPU9iamVjdC5rZXlzKHQpOzAhPWUubGVuZ3RoJiYodGhpcy5fcGVuZGluZ1N0eWxlcz17fSxlLmZvckVhY2goKGU9Pnt0aGlzLl9jdXJyZW50S2V5ZnJhbWVbZV09dFtlXX0pKSxPYmplY3Qua2V5cyh0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKS5mb3JFYWNoKCh0PT57dGhpcy5fY3VycmVudEtleWZyYW1lLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5fY3VycmVudEtleWZyYW1lW3RdPXRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXNbdF0pfSkpKX1zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKXtPYmplY3Qua2V5cyh0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW3RdO3RoaXMuX3BlbmRpbmdTdHlsZXNbdF09ZSx0aGlzLl91cGRhdGVTdHlsZSh0LGUpfSkpfWdldEZpbmFsS2V5ZnJhbWUoKXtyZXR1cm4gdGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKX1nZXQgcHJvcGVydGllcygpe2NvbnN0IHQ9W107Zm9yKGxldCBlIGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSl0LnB1c2goZSk7cmV0dXJuIHR9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyh0KXtPYmplY3Qua2V5cyh0Ll9zdHlsZVN1bW1hcnkpLmZvckVhY2goKGU9Pntjb25zdCBuPXRoaXMuX3N0eWxlU3VtbWFyeVtlXSxvPXQuX3N0eWxlU3VtbWFyeVtlXTsoIW58fG8udGltZT5uLnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZShlLG8udmFsdWUpfSkpfWJ1aWxkS2V5ZnJhbWVzKCl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKTtjb25zdCB0PW5ldyBTZXQsZT1uZXcgU2V0LG49MT09PXRoaXMuX2tleWZyYW1lcy5zaXplJiYwPT09dGhpcy5kdXJhdGlvbjtsZXQgbz1bXTt0aGlzLl9rZXlmcmFtZXMuZm9yRWFjaCgoKGksYSk9Pntjb25zdCByPVl4KGksITApO09iamVjdC5rZXlzKHIpLmZvckVhY2goKG49Pntjb25zdCBvPXJbbl07IiEiPT1vP3QuYWRkKG4pOm89PWV4JiZlLmFkZChuKX0pKSxufHwoci5vZmZzZXQ9YS90aGlzLmR1cmF0aW9uKSxvLnB1c2gocil9KSk7Y29uc3QgaT10LnNpemU/ZU8odC52YWx1ZXMoKSk6W10sYT1lLnNpemU/ZU8oZS52YWx1ZXMoKSk6W107aWYobil7Y29uc3QgdD1vWzBdLGU9V3godCk7dC5vZmZzZXQ9MCxlLm9mZnNldD0xLG89W3QsZV19cmV0dXJuIENPKHRoaXMuZWxlbWVudCxvLGksYSx0aGlzLmR1cmF0aW9uLHRoaXMuc3RhcnRUaW1lLHRoaXMuZWFzaW5nLCExKX19Y2xhc3MgRE8gZXh0ZW5kcyBTT3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyPSExKXtzdXBlcih0LGUsYS5kZWxheSksdGhpcy5rZXlmcmFtZXM9bix0aGlzLnByZVN0eWxlUHJvcHM9byx0aGlzLnBvc3RTdHlsZVByb3BzPWksdGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWU9cix0aGlzLnRpbWluZ3M9e2R1cmF0aW9uOmEuZHVyYXRpb24sZGVsYXk6YS5kZWxheSxlYXNpbmc6YS5lYXNpbmd9fWNvbnRhaW5zQW5pbWF0aW9uKCl7cmV0dXJuIHRoaXMua2V5ZnJhbWVzLmxlbmd0aD4xfWJ1aWxkS2V5ZnJhbWVzKCl7bGV0IHQ9dGhpcy5rZXlmcmFtZXMse2RlbGF5OmUsZHVyYXRpb246bixlYXNpbmc6b309dGhpcy50aW1pbmdzO2lmKHRoaXMuX3N0cmV0Y2hTdGFydGluZ0tleWZyYW1lJiZlKXtjb25zdCBpPVtdLGE9bitlLHI9ZS9hLHM9WXgodFswXSwhMSk7cy5vZmZzZXQ9MCxpLnB1c2gocyk7Y29uc3QgbD1ZeCh0WzBdLCExKTtsLm9mZnNldD1FTyhyKSxpLnB1c2gobCk7Y29uc3QgYz10Lmxlbmd0aC0xO2ZvcihsZXQgbz0xO288PWM7bysrKXtsZXQgcj1ZeCh0W29dLCExKTtyLm9mZnNldD1FTygoZStyLm9mZnNldCpuKS9hKSxpLnB1c2gocil9bj1hLGU9MCxvPSIiLHQ9aX1yZXR1cm4gQ08odGhpcy5lbGVtZW50LHQsdGhpcy5wcmVTdHlsZVByb3BzLHRoaXMucG9zdFN0eWxlUHJvcHMsbixlLG8sITApfX1mdW5jdGlvbiBFTyh0LGU9Myl7Y29uc3Qgbj1NYXRoLnBvdygxMCxlLTEpO3JldHVybiBNYXRoLnJvdW5kKHQqbikvbn1jbGFzcyBST3t9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEFPIGV4dGVuZHMgUk97bm9ybWFsaXplUHJvcGVydHlOYW1lKHQsZSl7cmV0dXJuIG9PKHQpfW5vcm1hbGl6ZVN0eWxlVmFsdWUodCxlLG4sbyl7bGV0IGk9IiI7Y29uc3QgYT1uLnRvU3RyaW5nKCkudHJpbSgpO2lmKFRPW2VdJiYwIT09biYmIjAiIT09bilpZigibnVtYmVyIj09dHlwZW9mIG4paT0icHgiO2Vsc2V7Y29uc3QgZT1uLm1hdGNoKC9eWystXT9bXGRcLl0rKFthLXpdKikkLyk7ZSYmMD09ZVsxXS5sZW5ndGgmJm8ucHVzaChgUGxlYXNlIHByb3ZpZGUgYSBDU1MgdW5pdCB2YWx1ZSBmb3IgJHt0fToke259YCl9cmV0dXJuIGEraX19Y29uc3QgVE89KGZ1bmN0aW9uIE5PKHQpe2NvbnN0IGU9e307cmV0dXJuIHQuZm9yRWFjaCgodD0+ZVt0XT0hMCkpLGV9KSgid2lkdGgsaGVpZ2h0LG1pbldpZHRoLG1pbkhlaWdodCxtYXhXaWR0aCxtYXhIZWlnaHQsbGVmdCx0b3AsYm90dG9tLHJpZ2h0LGZvbnRTaXplLG91dGxpbmVXaWR0aCxvdXRsaW5lT2Zmc2V0LHBhZGRpbmdUb3AscGFkZGluZ0xlZnQscGFkZGluZ0JvdHRvbSxwYWRkaW5nUmlnaHQsbWFyZ2luVG9wLG1hcmdpbkxlZnQsbWFyZ2luQm90dG9tLG1hcmdpblJpZ2h0LGJvcmRlclJhZGl1cyxib3JkZXJXaWR0aCxib3JkZXJUb3BXaWR0aCxib3JkZXJMZWZ0V2lkdGgsYm9yZGVyUmlnaHRXaWR0aCxib3JkZXJCb3R0b21XaWR0aCx0ZXh0SW5kZW50LHBlcnNwZWN0aXZlIi5zcGxpdCgiLCIpKTtmdW5jdGlvbiB6Tyh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtKXtyZXR1cm57dHlwZTowLGVsZW1lbnQ6dCx0cmlnZ2VyTmFtZTplLGlzUmVtb3ZhbFRyYW5zaXRpb246aSxmcm9tU3RhdGU6bixmcm9tU3R5bGVzOmEsdG9TdGF0ZTpvLHRvU3R5bGVzOnIsdGltZWxpbmVzOnMscXVlcmllZEVsZW1lbnRzOmwscHJlU3R5bGVQcm9wczpjLHBvc3RTdHlsZVByb3BzOmQsdG90YWxUaW1lOnAsZXJyb3JzOm19fWNvbnN0IElPPXt9O2NsYXNzIEhPe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl90cmlnZ2VyTmFtZT10LHRoaXMuYXN0PWUsdGhpcy5fc3RhdGVTdHlsZXM9bn1tYXRjaCh0LGUsbixvKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixvLGEpe3JldHVybiB0LnNvbWUoKHQ9PnQoZSxuLG8sYSkpKX0pKHRoaXMuYXN0Lm1hdGNoZXJzLHQsZSxuLG8pfWJ1aWxkU3R5bGVzKHQsZSxuKXtjb25zdCBvPXRoaXMuX3N0YXRlU3R5bGVzWyIqIl0saT10aGlzLl9zdGF0ZVN0eWxlc1t0XSxhPW8/by5idWlsZFN0eWxlcyhlLG4pOnt9O3JldHVybiBpP2kuYnVpbGRTdHlsZXMoZSxuKTphfWJ1aWxkKHQsZSxuLG8saSxhLHIscyxsLGMpe2NvbnN0IGQ9W10scD10aGlzLmFzdC5vcHRpb25zJiZ0aGlzLmFzdC5vcHRpb25zLnBhcmFtc3x8SU8sbT10aGlzLmJ1aWxkU3R5bGVzKG4sciYmci5wYXJhbXN8fElPLGQpLHU9cyYmcy5wYXJhbXN8fElPLGY9dGhpcy5idWlsZFN0eWxlcyhvLHUsZCksZz1uZXcgU2V0LGg9bmV3IE1hcCxiPW5ldyBNYXAseT0idm9pZCI9PT1vLF89e3BhcmFtczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scCksdSl9LEM9Yz9bXTpPTyh0LGUsdGhpcy5hc3QuYW5pbWF0aW9uLGksYSxtLGYsXyxsLGQpO2xldCBNPTA7aWYoQy5mb3JFYWNoKCh0PT57TT1NYXRoLm1heCh0LmR1cmF0aW9uK3QuZGVsYXksTSl9KSksZC5sZW5ndGgpcmV0dXJuIHpPKGUsdGhpcy5fdHJpZ2dlck5hbWUsbixvLHksbSxmLFtdLFtdLGgsYixNLGQpO0MuZm9yRWFjaCgodD0+e2NvbnN0IG49dC5lbGVtZW50LG89TXgoaCxuLHt9KTt0LnByZVN0eWxlUHJvcHMuZm9yRWFjaCgodD0+b1t0XT0hMCkpO2NvbnN0IGk9TXgoYixuLHt9KTt0LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKHQ9PmlbdF09ITApKSxuIT09ZSYmZy5hZGQobil9KSk7Y29uc3Qgdj1lTyhnLnZhbHVlcygpKTtyZXR1cm4gek8oZSx0aGlzLl90cmlnZ2VyTmFtZSxuLG8seSxtLGYsQyx2LGgsYixNKX19Y2xhc3MgRk97Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuc3R5bGVzPXQsdGhpcy5kZWZhdWx0UGFyYW1zPWUsdGhpcy5ub3JtYWxpemVyPW59YnVpbGRTdHlsZXModCxlKXtjb25zdCBuPXt9LG89V3godGhpcy5kZWZhdWx0UGFyYW1zKTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dFtlXTtudWxsIT1uJiYob1tlXT1uKX0pKSx0aGlzLnN0eWxlcy5zdHlsZXMuZm9yRWFjaCgodD0+e2lmKCJzdHJpbmciIT10eXBlb2YgdCl7Y29uc3QgaT10O09iamVjdC5rZXlzKGkpLmZvckVhY2goKHQ9PntsZXQgYT1pW3RdO2EubGVuZ3RoPjEmJihhPXRPKGEsbyxlKSk7Y29uc3Qgcj10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplUHJvcGVydHlOYW1lKHQsZSk7YT10aGlzLm5vcm1hbGl6ZXIubm9ybWFsaXplU3R5bGVWYWx1ZSh0LHIsYSxlKSxuW3JdPWF9KSl9fSkpLG59fWNsYXNzIExPe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLm5hbWU9dCx0aGlzLmFzdD1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXM9W10sdGhpcy5zdGF0ZXM9e30sZS5zdGF0ZXMuZm9yRWFjaCgodD0+e3RoaXMuc3RhdGVzW3QubmFtZV09bmV3IEZPKHQuc3R5bGUsdC5vcHRpb25zJiZ0Lm9wdGlvbnMucGFyYW1zfHx7fSxuKX0pKSxCTyh0aGlzLnN0YXRlcywidHJ1ZSIsIjEiKSxCTyh0aGlzLnN0YXRlcywiZmFsc2UiLCIwIiksZS50cmFuc2l0aW9ucy5mb3JFYWNoKChlPT57dGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLnB1c2gobmV3IEhPKHQsZSx0aGlzLnN0YXRlcykpfSkpLHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gbmV3IEhPKHQse3R5cGU6MSxhbmltYXRpb246e3R5cGU6MixzdGVwczpbXSxvcHRpb25zOm51bGx9LG1hdGNoZXJzOlsodCxlKT0+ITBdLG9wdGlvbnM6bnVsbCxxdWVyeUNvdW50OjAsZGVwQ291bnQ6MH0sZSl9KSh0LHRoaXMuc3RhdGVzKX1nZXQgY29udGFpbnNRdWVyaWVzKCl7cmV0dXJuIHRoaXMuYXN0LnF1ZXJ5Q291bnQ+MH1tYXRjaFRyYW5zaXRpb24odCxlLG4sbyl7cmV0dXJuIHRoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5maW5kKChpPT5pLm1hdGNoKHQsZSxuLG8pKSl8fG51bGx9bWF0Y2hTdHlsZXModCxlLG4pe3JldHVybiB0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbi5idWlsZFN0eWxlcyh0LGUsbil9fWZ1bmN0aW9uIEJPKHQsZSxuKXt0Lmhhc093blByb3BlcnR5KGUpP3QuaGFzT3duUHJvcGVydHkobil8fCh0W25dPXRbZV0pOnQuaGFzT3duUHJvcGVydHkobikmJih0W2VdPXRbbl0pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBWTz1uZXcgTU87Y2xhc3Mgak97Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYm9keU5vZGU9dCx0aGlzLl9kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW4sdGhpcy5fYW5pbWF0aW9ucz17fSx0aGlzLl9wbGF5ZXJzQnlJZD17fSx0aGlzLnBsYXllcnM9W119cmVnaXN0ZXIodCxlKXtjb25zdCBuPVtdLG89Zk8odGhpcy5fZHJpdmVyLGUsbik7aWYobi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gYnVpbGQgdGhlIGFuaW1hdGlvbiBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6ICR7bi5qb2luKCJcbiIpfWApO3RoaXMuX2FuaW1hdGlvbnNbdF09b31fYnVpbGRQbGF5ZXIodCxlLG4pe2NvbnN0IG89dC5lbGVtZW50LGk9YngoMCx0aGlzLl9ub3JtYWxpemVyLDAsdC5rZXlmcmFtZXMsZSxuKTtyZXR1cm4gdGhpcy5fZHJpdmVyLmFuaW1hdGUobyxpLHQuZHVyYXRpb24sdC5kZWxheSx0LmVhc2luZyxbXSwhMCl9Y3JlYXRlKHQsZSxuPXt9KXtjb25zdCBvPVtdLGk9dGhpcy5fYW5pbWF0aW9uc1t0XTtsZXQgYTtjb25zdCByPW5ldyBNYXA7aWYoaT8oYT1PTyh0aGlzLl9kcml2ZXIsZSxpLEl4LEh4LHt9LHt9LG4sVk8sbyksYS5mb3JFYWNoKCh0PT57Y29uc3QgZT1NeChyLHQuZWxlbWVudCx7fSk7dC5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKCh0PT5lW3RdPW51bGwpKX0pKSk6KG8ucHVzaCgiVGhlIHJlcXVlc3RlZCBhbmltYXRpb24gZG9lc24ndCBleGlzdCBvciBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZCIpLGE9W10pLG8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGNyZWF0ZSB0aGUgYW5pbWF0aW9uIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yczogJHtvLmpvaW4oIlxuIil9YCk7ci5mb3JFYWNoKCgodCxlKT0+e09iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0W25dPXRoaXMuX2RyaXZlci5jb21wdXRlU3R5bGUoZSxuLGV4KX0pKX0pKTtjb25zdCBzPWh4KGEubWFwKCh0PT57Y29uc3QgZT1yLmdldCh0LmVsZW1lbnQpO3JldHVybiB0aGlzLl9idWlsZFBsYXllcih0LHt9LGUpfSkpKTtyZXR1cm4gdGhpcy5fcGxheWVyc0J5SWRbdF09cyxzLm9uRGVzdHJveSgoKCk9PnRoaXMuZGVzdHJveSh0KSkpLHRoaXMucGxheWVycy5wdXNoKHMpLHN9ZGVzdHJveSh0KXtjb25zdCBlPXRoaXMuX2dldFBsYXllcih0KTtlLmRlc3Ryb3koKSxkZWxldGUgdGhpcy5fcGxheWVyc0J5SWRbdF07Y29uc3Qgbj10aGlzLnBsYXllcnMuaW5kZXhPZihlKTtuPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKG4sMSl9X2dldFBsYXllcih0KXtjb25zdCBlPXRoaXMuX3BsYXllcnNCeUlkW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGZpbmQgdGhlIHRpbWVsaW5lIHBsYXllciByZWZlcmVuY2VkIGJ5ICR7dH1gKTtyZXR1cm4gZX1saXN0ZW4odCxlLG4sbyl7Y29uc3QgaT1DeChlLCIiLCIiLCIiKTtyZXR1cm4geXgodGhpcy5fZ2V0UGxheWVyKHQpLG4saSxvKSwoKT0+e319Y29tbWFuZCh0LGUsbixvKXtpZigicmVnaXN0ZXIiPT1uKXJldHVybiB2b2lkIHRoaXMucmVnaXN0ZXIodCxvWzBdKTtpZigiY3JlYXRlIj09bilyZXR1cm4gdm9pZCB0aGlzLmNyZWF0ZSh0LGUsb1swXXx8e30pO2NvbnN0IGk9dGhpcy5fZ2V0UGxheWVyKHQpO3N3aXRjaChuKXtjYXNlInBsYXkiOmkucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOmkucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjppLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjppLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6aS5maW5pc2goKTticmVhaztjYXNlImluaXQiOmkuaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOmkuc2V0UG9zaXRpb24ocGFyc2VGbG9hdChvWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3kodCl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgVU89Im5nLWFuaW1hdGUtcXVldWVkIixHTz0ibmctYW5pbWF0ZS1kaXNhYmxlZCIsV089Ii5uZy1hbmltYXRlLWRpc2FibGVkIixZTz1bXSxxTz17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX0sWk89e25hbWVzcGFjZUlkOiIiLHNldEZvck1vdmU6ITEsc2V0Rm9yUmVtb3ZhbDohMSxoYXNBbmltYXRpb246ITEscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITB9O2NsYXNzIFhPe2NvbnN0cnVjdG9yKHQsZT0iIil7dGhpcy5uYW1lc3BhY2VJZD1lO2NvbnN0IG49dCYmdC5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKTtpZih0aGlzLnZhbHVlPShmdW5jdGlvbiBvKHQpe3JldHVybiBudWxsIT10P3Q6bnVsbH0pKG4/dC52YWx1ZTp0KSxuKXtjb25zdCBlPVd4KHQpO2RlbGV0ZSBlLnZhbHVlLHRoaXMub3B0aW9ucz1lfWVsc2UgdGhpcy5vcHRpb25zPXt9O3RoaXMub3B0aW9ucy5wYXJhbXN8fCh0aGlzLm9wdGlvbnMucGFyYW1zPXt9KX1nZXQgcGFyYW1zKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5wYXJhbXN9YWJzb3JiT3B0aW9ucyh0KXtjb25zdCBlPXQucGFyYW1zO2lmKGUpe2NvbnN0IHQ9dGhpcy5vcHRpb25zLnBhcmFtcztPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChuPT57bnVsbD09dFtuXSYmKHRbbl09ZVtuXSl9KSl9fX1jb25zdCBLTz0idm9pZCIsSk89bmV3IFhPKEtPKTtjbGFzcyBRT3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5pZD10LHRoaXMuaG9zdEVsZW1lbnQ9ZSx0aGlzLl9lbmdpbmU9bix0aGlzLnBsYXllcnM9W10sdGhpcy5fdHJpZ2dlcnM9e30sdGhpcy5fcXVldWU9W10sdGhpcy5fZWxlbWVudExpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2hvc3RDbGFzc05hbWU9Im5nLXRucy0iK3QsYVAoZSx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4odCxlLG4sbyl7aWYoIXRoaXMuX3RyaWdnZXJzLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiB0cmlnZ2VyICIke2V9IiBkb2Vzbid0IGV4aXN0IWApO2lmKG51bGw9PW58fDA9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGJlY2F1c2UgdGhlIHByb3ZpZGVkIGV2ZW50IGlzIHVuZGVmaW5lZCFgKTtpZighKGZ1bmN0aW9uIGkodCl7cmV0dXJuInN0YXJ0Ij09dHx8ImRvbmUiPT10fSkobikpdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7bn0iIGZvciB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGlzIG5vdCBzdXBwb3J0ZWQhYCk7Y29uc3QgYT1NeCh0aGlzLl9lbGVtZW50TGlzdGVuZXJzLHQsW10pLHI9e25hbWU6ZSxwaGFzZTpuLGNhbGxiYWNrOm99O2EucHVzaChyKTtjb25zdCBzPU14KHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsdCx7fSk7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkoZSl8fChhUCh0LEZ4KSxhUCh0LCJuZy10cmlnZ2VyLSIrZSksc1tlXT1KTyksKCk9Pnt0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9Pntjb25zdCB0PWEuaW5kZXhPZihyKTt0Pj0wJiZhLnNwbGljZSh0LDEpLHRoaXMuX3RyaWdnZXJzW2VdfHxkZWxldGUgc1tlXX0pKX19cmVnaXN0ZXIodCxlKXtyZXR1cm4hdGhpcy5fdHJpZ2dlcnNbdF0mJih0aGlzLl90cmlnZ2Vyc1t0XT1lLCEwKX1fZ2V0VHJpZ2dlcih0KXtjb25zdCBlPXRoaXMuX3RyaWdnZXJzW3RdO2lmKCFlKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiB0cmlnZ2VyICIke3R9IiBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZCFgKTtyZXR1cm4gZX10cmlnZ2VyKHQsZSxuLG89ITApe2NvbnN0IGk9dGhpcy5fZ2V0VHJpZ2dlcihlKSxhPW5ldyB0UCh0aGlzLmlkLGUsdCk7bGV0IHI9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7cnx8KGFQKHQsRngpLGFQKHQsIm5nLXRyaWdnZXItIitlKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LnNldCh0LHI9e30pKTtsZXQgcz1yW2VdO2NvbnN0IGw9bmV3IFhPKG4sdGhpcy5pZCk7aWYoIShuJiZuLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpKSYmcyYmbC5hYnNvcmJPcHRpb25zKHMub3B0aW9ucykscltlXT1sLHN8fChzPUpPKSxsLnZhbHVlIT09S08mJnMudmFsdWU9PT1sLnZhbHVlKXtpZighKGZ1bmN0aW9uIGUodCxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmtleXMobik7aWYoby5sZW5ndGghPWkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtjb25zdCBpPW9bZV07aWYoIW4uaGFzT3duUHJvcGVydHkoaSl8fHRbaV0hPT1uW2ldKXJldHVybiExfXJldHVybiEwfSkocy5wYXJhbXMsbC5wYXJhbXMpKXtjb25zdCBlPVtdLG49aS5tYXRjaFN0eWxlcyhzLnZhbHVlLHMucGFyYW1zLGUpLG89aS5tYXRjaFN0eWxlcyhsLnZhbHVlLGwucGFyYW1zLGUpO2UubGVuZ3RoP3RoaXMuX2VuZ2luZS5yZXBvcnRFcnJvcihlKTp0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9PntLeCh0LG4pLFh4KHQsbyl9KSl9cmV0dXJufWNvbnN0IGM9TXgodGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQsdCxbXSk7Yy5mb3JFYWNoKCh0PT57dC5uYW1lc3BhY2VJZD09dGhpcy5pZCYmdC50cmlnZ2VyTmFtZT09ZSYmdC5xdWV1ZWQmJnQuZGVzdHJveSgpfSkpO2xldCBkPWkubWF0Y2hUcmFuc2l0aW9uKHMudmFsdWUsbC52YWx1ZSx0LGwucGFyYW1zKSxwPSExO2lmKCFkKXtpZighbylyZXR1cm47ZD1pLmZhbGxiYWNrVHJhbnNpdGlvbixwPSEwfXJldHVybiB0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmUsdHJhbnNpdGlvbjpkLGZyb21TdGF0ZTpzLHRvU3RhdGU6bCxwbGF5ZXI6YSxpc0ZhbGxiYWNrVHJhbnNpdGlvbjpwfSkscHx8KGFQKHQsVU8pLGEub25TdGFydCgoKCk9PntyUCh0LFVPKX0pKSksYS5vbkRvbmUoKCgpPT57bGV0IGU9dGhpcy5wbGF5ZXJzLmluZGV4T2YoYSk7ZT49MCYmdGhpcy5wbGF5ZXJzLnNwbGljZShlLDEpO2NvbnN0IG49dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2xldCB0PW4uaW5kZXhPZihhKTt0Pj0wJiZuLnNwbGljZSh0LDEpfX0pKSx0aGlzLnBsYXllcnMucHVzaChhKSxjLnB1c2goYSksYX1kZXJlZ2lzdGVyKHQpe2RlbGV0ZSB0aGlzLl90cmlnZ2Vyc1t0XSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmZvckVhY2goKChlLG4pPT57ZGVsZXRlIGVbdF19KSksdGhpcy5fZWxlbWVudExpc3RlbmVycy5mb3JFYWNoKCgoZSxuKT0+e3RoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuc2V0KG4sZS5maWx0ZXIoKGU9PmUubmFtZSE9dCkpKX0pKX1jbGVhckVsZW1lbnRDYWNoZSh0KXt0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmRlbGV0ZSh0KSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmRlbGV0ZSh0KTtjb25zdCBlPXRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiYoZS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZSh0KSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmUuZHJpdmVyLnF1ZXJ5KHQsTHgsITApO24uZm9yRWFjaCgodD0+e2lmKHQuX19uZ19yZW1vdmVkKXJldHVybjtjb25zdCBuPXRoaXMuX2VuZ2luZS5mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQodCk7bi5zaXplP24uZm9yRWFjaCgobj0+bi50cmlnZ2VyTGVhdmVBbmltYXRpb24odCxlLCExLCEwKSkpOnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUodCl9KSksdGhpcy5fZW5naW5lLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKCk9Pm4uZm9yRWFjaCgodD0+dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KSkpKSl9dHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7aWYoaSl7Y29uc3QgYT1bXTtpZihPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChlPT57aWYodGhpcy5fdHJpZ2dlcnNbZV0pe2NvbnN0IG49dGhpcy50cmlnZ2VyKHQsZSxLTyxvKTtuJiZhLnB1c2gobil9fSkpLGEubGVuZ3RoKXJldHVybiB0aGlzLl9lbmdpbmUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCx0LCEwLGUpLG4mJmh4KGEpLm9uRG9uZSgoKCk9PnRoaXMuX2VuZ2luZS5wcm9jZXNzTGVhdmVOb2RlKHQpKSksITB9cmV0dXJuITF9cHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQodCksbj10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihlJiZuKXtjb25zdCBvPW5ldyBTZXQ7ZS5mb3JFYWNoKChlPT57Y29uc3QgaT1lLm5hbWU7aWYoby5oYXMoaSkpcmV0dXJuO28uYWRkKGkpO2NvbnN0IGE9dGhpcy5fdHJpZ2dlcnNbaV0uZmFsbGJhY2tUcmFuc2l0aW9uLHI9bltpXXx8Sk8scz1uZXcgWE8oS08pLGw9bmV3IHRQKHRoaXMuaWQsaSx0KTt0aGlzLl9lbmdpbmUudG90YWxRdWV1ZWRQbGF5ZXJzKyssdGhpcy5fcXVldWUucHVzaCh7ZWxlbWVudDp0LHRyaWdnZXJOYW1lOmksdHJhbnNpdGlvbjphLGZyb21TdGF0ZTpyLHRvU3RhdGU6cyxwbGF5ZXI6bCxpc0ZhbGxiYWNrVHJhbnNpdGlvbjohMH0pfSkpfX1yZW1vdmVOb2RlKHQsZSl7Y29uc3Qgbj10aGlzLl9lbmdpbmU7aWYodC5jaGlsZEVsZW1lbnRDb3VudCYmdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModCxlKSx0aGlzLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih0LGUsITApKXJldHVybjtsZXQgbz0hMTtpZihuLnRvdGFsQW5pbWF0aW9ucyl7Y29uc3QgZT1uLnBsYXllcnMubGVuZ3RoP24ucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpOltdO2lmKGUmJmUubGVuZ3RoKW89ITA7ZWxzZXtsZXQgZT10O2Zvcig7ZT1lLnBhcmVudE5vZGU7KWlmKG4uc3RhdGVzQnlFbGVtZW50LmdldChlKSl7bz0hMDticmVha319fWlmKHRoaXMucHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKHQpLG8pbi5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0aGlzLmlkLHQsITEsZSk7ZWxzZXtjb25zdCBvPXQuX19uZ19yZW1vdmVkO28mJm8hPT1xT3x8KG4uYWZ0ZXJGbHVzaCgoKCk9PnRoaXMuY2xlYXJFbGVtZW50Q2FjaGUodCkpKSxuLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCksbi5fb25SZW1vdmFsQ29tcGxldGUodCxlKSl9fWluc2VydE5vZGUodCxlKXthUCh0LHRoaXMuX2hvc3RDbGFzc05hbWUpfWRyYWluUXVldWVkVHJhbnNpdGlvbnModCl7Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5fcXVldWUuZm9yRWFjaCgobj0+e2NvbnN0IG89bi5wbGF5ZXI7aWYoby5kZXN0cm95ZWQpcmV0dXJuO2NvbnN0IGk9bi5lbGVtZW50LGE9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQoaSk7YSYmYS5mb3JFYWNoKChlPT57aWYoZS5uYW1lPT1uLnRyaWdnZXJOYW1lKXtjb25zdCBvPUN4KGksbi50cmlnZ2VyTmFtZSxuLmZyb21TdGF0ZS52YWx1ZSxuLnRvU3RhdGUudmFsdWUpO28uX2RhdGE9dCx5eChuLnBsYXllcixlLnBoYXNlLG8sZS5jYWxsYmFjayl9fSkpLG8ubWFya2VkRm9yRGVzdHJveT90aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaCgoKCk9PntvLmRlc3Ryb3koKX0pKTplLnB1c2gobil9KSksdGhpcy5fcXVldWU9W10sZS5zb3J0KCgodCxlKT0+e2NvbnN0IG49dC50cmFuc2l0aW9uLmFzdC5kZXBDb3VudCxvPWUudHJhbnNpdGlvbi5hc3QuZGVwQ291bnQ7cmV0dXJuIDA9PW58fDA9PW8/bi1vOnRoaXMuX2VuZ2luZS5kcml2ZXIuY29udGFpbnNFbGVtZW50KHQuZWxlbWVudCxlLmVsZW1lbnQpPzE6LTF9KSl9ZGVzdHJveSh0KXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLl9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2Vycyh0aGlzLmhvc3RFbGVtZW50LHQpfWVsZW1lbnRDb250YWluc0RhdGEodCl7bGV0IGU9ITE7cmV0dXJuIHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuaGFzKHQpJiYoZT0hMCksZT0hIXRoaXMuX3F1ZXVlLmZpbmQoKGU9PmUuZWxlbWVudD09PXQpKXx8ZSxlfX1jbGFzcyAkT3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ib2R5Tm9kZT10LHRoaXMuZHJpdmVyPWUsdGhpcy5fbm9ybWFsaXplcj1uLHRoaXMucGxheWVycz1bXSx0aGlzLm5ld0hvc3RFbGVtZW50cz1uZXcgTWFwLHRoaXMucGxheWVyc0J5RWxlbWVudD1uZXcgTWFwLHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQ9bmV3IE1hcCx0aGlzLnN0YXRlc0J5RWxlbWVudD1uZXcgTWFwLHRoaXMuZGlzYWJsZWROb2Rlcz1uZXcgU2V0LHRoaXMudG90YWxBbmltYXRpb25zPTAsdGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLl9uYW1lc3BhY2VMb29rdXA9e30sdGhpcy5fbmFtZXNwYWNlTGlzdD1bXSx0aGlzLl9mbHVzaEZucz1bXSx0aGlzLl93aGVuUXVpZXRGbnM9W10sdGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudD1uZXcgTWFwLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cz1bXSx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHM9W10sdGhpcy5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+e319X29uUmVtb3ZhbENvbXBsZXRlKHQsZSl7dGhpcy5vblJlbW92YWxDb21wbGV0ZSh0LGUpfWdldCBxdWV1ZWRQbGF5ZXJzKCl7Y29uc3QgdD1bXTtyZXR1cm4gdGhpcy5fbmFtZXNwYWNlTGlzdC5mb3JFYWNoKChlPT57ZS5wbGF5ZXJzLmZvckVhY2goKGU9PntlLnF1ZXVlZCYmdC5wdXNoKGUpfSkpfSkpLHR9Y3JlYXRlTmFtZXNwYWNlKHQsZSl7Y29uc3Qgbj1uZXcgUU8odCxlLHRoaXMpO3JldHVybiB0aGlzLmJvZHlOb2RlJiZ0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQodGhpcy5ib2R5Tm9kZSxlKT90aGlzLl9iYWxhbmNlTmFtZXNwYWNlTGlzdChuLGUpOih0aGlzLm5ld0hvc3RFbGVtZW50cy5zZXQoZSxuKSx0aGlzLmNvbGxlY3RFbnRlckVsZW1lbnQoZSkpLHRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XT1ufV9iYWxhbmNlTmFtZXNwYWNlTGlzdCh0LGUpe2NvbnN0IG49dGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgtMTtpZihuPj0wKXtsZXQgbz0hMTtmb3IobGV0IGk9bjtpPj0wO2ktLSlpZih0aGlzLmRyaXZlci5jb250YWluc0VsZW1lbnQodGhpcy5fbmFtZXNwYWNlTGlzdFtpXS5ob3N0RWxlbWVudCxlKSl7dGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UoaSsxLDAsdCksbz0hMDticmVha31vfHx0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZSgwLDAsdCl9ZWxzZSB0aGlzLl9uYW1lc3BhY2VMaXN0LnB1c2godCk7cmV0dXJuIHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuc2V0KGUsdCksdH1yZWdpc3Rlcih0LGUpe2xldCBuPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtyZXR1cm4gbnx8KG49dGhpcy5jcmVhdGVOYW1lc3BhY2UodCxlKSksbn1yZWdpc3RlclRyaWdnZXIodCxlLG4pe2xldCBvPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtvJiZvLnJlZ2lzdGVyKGUsbikmJnRoaXMudG90YWxBbmltYXRpb25zKyt9ZGVzdHJveSh0LGUpe2lmKCF0KXJldHVybjtjb25zdCBuPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO3RoaXMuYWZ0ZXJGbHVzaCgoKCk9Pnt0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmRlbGV0ZShuLmhvc3RFbGVtZW50KSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdO2NvbnN0IGU9dGhpcy5fbmFtZXNwYWNlTGlzdC5pbmRleE9mKG4pO2U+PTAmJnRoaXMuX25hbWVzcGFjZUxpc3Quc3BsaWNlKGUsMSl9KSksdGhpcy5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCgpPT5uLmRlc3Ryb3koZSkpKX1fZmV0Y2hOYW1lc3BhY2UodCl7cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XX1mZXRjaE5hbWVzcGFjZXNCeUVsZW1lbnQodCl7Y29uc3QgZT1uZXcgU2V0LG49dGhpcy5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2NvbnN0IHQ9T2JqZWN0LmtleXMobik7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2NvbnN0IGk9blt0W29dXS5uYW1lc3BhY2VJZDtpZihpKXtjb25zdCB0PXRoaXMuX2ZldGNoTmFtZXNwYWNlKGkpO3QmJmUuYWRkKHQpfX19cmV0dXJuIGV9dHJpZ2dlcih0LGUsbixvKXtpZihlUChlKSl7Y29uc3QgaT10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTtpZihpKXJldHVybiBpLnRyaWdnZXIoZSxuLG8pLCEwfXJldHVybiExfWluc2VydE5vZGUodCxlLG4sbyl7aWYoIWVQKGUpKXJldHVybjtjb25zdCBpPWUuX19uZ19yZW1vdmVkO2lmKGkmJmkuc2V0Rm9yUmVtb3ZhbCl7aS5zZXRGb3JSZW1vdmFsPSExLGkuc2V0Rm9yTW92ZT0hMDtjb25zdCB0PXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5pbmRleE9mKGUpO3Q+PTAmJnRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5zcGxpY2UodCwxKX1pZih0KXtjb25zdCBvPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO28mJm8uaW5zZXJ0Tm9kZShlLG4pfW8mJnRoaXMuY29sbGVjdEVudGVyRWxlbWVudChlKX1jb2xsZWN0RW50ZXJFbGVtZW50KHQpe3RoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5wdXNoKHQpfW1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LGUpe2U/dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyh0KXx8KHRoaXMuZGlzYWJsZWROb2Rlcy5hZGQodCksYVAodCxHTykpOnRoaXMuZGlzYWJsZWROb2Rlcy5oYXModCkmJih0aGlzLmRpc2FibGVkTm9kZXMuZGVsZXRlKHQpLHJQKHQsR08pKX1yZW1vdmVOb2RlKHQsZSxuLG8pe2lmKGVQKGUpKXtjb25zdCBpPXQ/dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk6bnVsbDtpZihpP2kucmVtb3ZlTm9kZShlLG8pOnRoaXMubWFya0VsZW1lbnRBc1JlbW92ZWQodCxlLCExLG8pLG4pe2NvbnN0IG49dGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5nZXQoZSk7biYmbi5pZCE9PXQmJm4ucmVtb3ZlTm9kZShlLG8pfX1lbHNlIHRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKGUsbyl9bWFya0VsZW1lbnRBc1JlbW92ZWQodCxlLG4sbyl7dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnB1c2goZSksZS5fX25nX3JlbW92ZWQ9e25hbWVzcGFjZUlkOnQsc2V0Rm9yUmVtb3ZhbDpvLGhhc0FuaW1hdGlvbjpuLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiExfX1saXN0ZW4odCxlLG4sbyxpKXtyZXR1cm4gZVAoZSk/dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCkubGlzdGVuKGUsbixvLGkpOigpPT57fX1fYnVpbGRJbnN0cnVjdGlvbih0LGUsbixvLGkpe3JldHVybiB0LnRyYW5zaXRpb24uYnVpbGQodGhpcy5kcml2ZXIsdC5lbGVtZW50LHQuZnJvbVN0YXRlLnZhbHVlLHQudG9TdGF0ZS52YWx1ZSxuLG8sdC5mcm9tU3RhdGUub3B0aW9ucyx0LnRvU3RhdGUub3B0aW9ucyxlLGkpfWRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCl7bGV0IGU9dGhpcy5kcml2ZXIucXVlcnkodCxMeCwhMCk7ZS5mb3JFYWNoKCh0PT50aGlzLmRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudCh0KSkpLDAhPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuc2l6ZSYmKGU9dGhpcy5kcml2ZXIucXVlcnkodCxWeCwhMCksZS5mb3JFYWNoKCh0PT50aGlzLmZpbmlzaEFjdGl2ZVF1ZXJpZWRBbmltYXRpb25PbkVsZW1lbnQodCkpKSl9ZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtlJiZlLmZvckVhY2goKHQ9Pnt0LnF1ZXVlZD90Lm1hcmtlZEZvckRlc3Ryb3k9ITA6dC5kZXN0cm95KCl9KSl9ZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudCh0KXtjb25zdCBlPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpO2UmJmUuZm9yRWFjaCgodD0+dC5maW5pc2goKSkpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIG5ldyBQcm9taXNlKCh0PT57aWYodGhpcy5wbGF5ZXJzLmxlbmd0aClyZXR1cm4gaHgodGhpcy5wbGF5ZXJzKS5vbkRvbmUoKCgpPT50KCkpKTt0KCl9KSl9cHJvY2Vzc0xlYXZlTm9kZSh0KXtjb25zdCBlPXQuX19uZ19yZW1vdmVkO2lmKGUmJmUuc2V0Rm9yUmVtb3ZhbCl7aWYodC5fX25nX3JlbW92ZWQ9cU8sZS5uYW1lc3BhY2VJZCl7dGhpcy5kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpO2NvbnN0IG49dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZS5uYW1lc3BhY2VJZCk7biYmbi5jbGVhckVsZW1lbnRDYWNoZSh0KX10aGlzLl9vblJlbW92YWxDb21wbGV0ZSh0LGUuc2V0Rm9yUmVtb3ZhbCl9dGhpcy5kcml2ZXIubWF0Y2hlc0VsZW1lbnQodCxXTykmJnRoaXMubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsITEpLHRoaXMuZHJpdmVyLnF1ZXJ5KHQsV08sITApLmZvckVhY2goKHQ9Pnt0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LCExKX0pKX1mbHVzaCh0PS0xKXtsZXQgZT1bXTtpZih0aGlzLm5ld0hvc3RFbGVtZW50cy5zaXplJiYodGhpcy5uZXdIb3N0RWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KHQsZSkpKSx0aGlzLm5ld0hvc3RFbGVtZW50cy5jbGVhcigpKSx0aGlzLnRvdGFsQW5pbWF0aW9ucyYmdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aClmb3IobGV0IHQ9MDt0PHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg7dCsrKWFQKHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50c1t0XSwibmctc3Rhci1pbnNlcnRlZCIpO2lmKHRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoJiYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnN8fHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGgpKXtjb25zdCBuPVtdO3RyeXtlPXRoaXMuX2ZsdXNoQW5pbWF0aW9ucyhuLHQpfWZpbmFsbHl7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XSgpfX1lbHNlIGZvcihsZXQgdD0wO3Q8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aDt0KyspdGhpcy5wcm9jZXNzTGVhdmVOb2RlKHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t0XSk7aWYodGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aD0wLHRoaXMuX2ZsdXNoRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucy5sZW5ndGgpe2NvbnN0IHQ9dGhpcy5fd2hlblF1aWV0Rm5zO3RoaXMuX3doZW5RdWlldEZucz1bXSxlLmxlbmd0aD9oeChlKS5vbkRvbmUoKCgpPT57dC5mb3JFYWNoKCh0PT50KCkpKX0pKTp0LmZvckVhY2goKHQ9PnQoKSkpfX1yZXBvcnRFcnJvcih0KXt0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwcm9jZXNzIGFuaW1hdGlvbnMgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZmFpbGVkIHRyaWdnZXIgdHJhbnNpdGlvbnNcbiAke3Quam9pbigiXG4iKX1gKX1fZmx1c2hBbmltYXRpb25zKHQsZSl7Y29uc3Qgbj1uZXcgTU8sbz1bXSxpPW5ldyBNYXAsYT1bXSxyPW5ldyBNYXAscz1uZXcgTWFwLGw9bmV3IE1hcCxjPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2goKHQ9PntjLmFkZCh0KTtjb25zdCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQsIi5uZy1hbmltYXRlLXF1ZXVlZCIsITApO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWMuYWRkKGVbdF0pfSkpO2NvbnN0IGQ9dGhpcy5ib2R5Tm9kZSxwPUFycmF5LmZyb20odGhpcy5zdGF0ZXNCeUVsZW1lbnQua2V5cygpKSxtPWlQKHAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSx1PW5ldyBNYXA7bGV0IGY9MDttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1JeCtmKys7dS5zZXQoZSxuKSx0LmZvckVhY2goKHQ9PmFQKHQsbikpKX0pKTtjb25zdCBnPVtdLGg9bmV3IFNldCxiPW5ldyBTZXQ7Zm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl7Y29uc3QgZT10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHNbdF0sbj1lLl9fbmdfcmVtb3ZlZDtuJiZuLnNldEZvclJlbW92YWwmJihnLnB1c2goZSksaC5hZGQoZSksbi5oYXNBbmltYXRpb24/dGhpcy5kcml2ZXIucXVlcnkoZSwiLm5nLXN0YXItaW5zZXJ0ZWQiLCEwKS5mb3JFYWNoKCh0PT5oLmFkZCh0KSkpOmIuYWRkKGUpKX1jb25zdCB5PW5ldyBNYXAsXz1pUChwLEFycmF5LmZyb20oaCkpO18uZm9yRWFjaCgoKHQsZSk9Pntjb25zdCBuPUh4K2YrKzt5LnNldChlLG4pLHQuZm9yRWFjaCgodD0+YVAodCxuKSkpfSkpLHQucHVzaCgoKCk9PnttLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj11LmdldChlKTt0LmZvckVhY2goKHQ9PnJQKHQsbikpKX0pKSxfLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj15LmdldChlKTt0LmZvckVhY2goKHQ9PnJQKHQsbikpKX0pKSxnLmZvckVhY2goKHQ9Pnt0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodCl9KSl9KSk7Y29uc3QgQz1bXSxNPVtdO2ZvcihsZXQgdD10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMuX25hbWVzcGFjZUxpc3RbdF0uZHJhaW5RdWV1ZWRUcmFuc2l0aW9ucyhlKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LnBsYXllcixpPXQuZWxlbWVudDtpZihDLnB1c2goZSksdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aCl7Y29uc3QgdD1pLl9fbmdfcmVtb3ZlZDtpZih0JiZ0LnNldEZvck1vdmUpcmV0dXJuIHZvaWQgZS5kZXN0cm95KCl9Y29uc3QgYz0hZHx8IXRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChkLGkpLHA9eS5nZXQoaSksbT11LmdldChpKSxmPXRoaXMuX2J1aWxkSW5zdHJ1Y3Rpb24odCxuLG0scCxjKTtpZihmLmVycm9ycyYmZi5lcnJvcnMubGVuZ3RoKU0ucHVzaChmKTtlbHNle2lmKGMpcmV0dXJuIGUub25TdGFydCgoKCk9Pkt4KGksZi5mcm9tU3R5bGVzKSkpLGUub25EZXN0cm95KCgoKT0+WHgoaSxmLnRvU3R5bGVzKSkpLHZvaWQgby5wdXNoKGUpO2lmKHQuaXNGYWxsYmFja1RyYW5zaXRpb24pcmV0dXJuIGUub25TdGFydCgoKCk9Pkt4KGksZi5mcm9tU3R5bGVzKSkpLGUub25EZXN0cm95KCgoKT0+WHgoaSxmLnRvU3R5bGVzKSkpLHZvaWQgby5wdXNoKGUpO2YudGltZWxpbmVzLmZvckVhY2goKHQ9PnQuc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWU9ITApKSxuLmFwcGVuZChpLGYudGltZWxpbmVzKSxhLnB1c2goe2luc3RydWN0aW9uOmYscGxheWVyOmUsZWxlbWVudDppfSksZi5xdWVyaWVkRWxlbWVudHMuZm9yRWFjaCgodD0+TXgocix0LFtdKS5wdXNoKGUpKSksZi5wcmVTdHlsZVByb3BzLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCl7bGV0IHQ9cy5nZXQoZSk7dHx8cy5zZXQoZSx0PW5ldyBTZXQpLG4uZm9yRWFjaCgoZT0+dC5hZGQoZSkpKX19KSksZi5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmtleXModCk7bGV0IG89bC5nZXQoZSk7b3x8bC5zZXQoZSxvPW5ldyBTZXQpLG4uZm9yRWFjaCgodD0+by5hZGQodCkpKX0pKX19KSk7aWYoTS5sZW5ndGgpe2NvbnN0IHQ9W107TS5mb3JFYWNoKChlPT57dC5wdXNoKGBAJHtlLnRyaWdnZXJOYW1lfSBoYXMgZmFpbGVkIGR1ZSB0bzpcbmApLGUuZXJyb3JzLmZvckVhY2goKGU9PnQucHVzaChgLSAke2V9XG5gKSkpfSkpLEMuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKSx0aGlzLnJlcG9ydEVycm9yKHQpfWNvbnN0IHY9bmV3IE1hcCx4PW5ldyBNYXA7YS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmVsZW1lbnQ7bi5oYXMoZSkmJih4LnNldChlLGUpLHRoaXMuX2JlZm9yZUFuaW1hdGlvbkJ1aWxkKHQucGxheWVyLm5hbWVzcGFjZUlkLHQuaW5zdHJ1Y3Rpb24sdikpfSkpLG8uZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5lbGVtZW50O3RoaXMuX2dldFByZXZpb3VzUGxheWVycyhlLCExLHQubmFtZXNwYWNlSWQsdC50cmlnZ2VyTmFtZSxudWxsKS5mb3JFYWNoKCh0PT57TXgodixlLFtdKS5wdXNoKHQpLHQuZGVzdHJveSgpfSkpfSkpO2NvbnN0IE89Zy5maWx0ZXIoKHQ9PmNQKHQscyxsKSkpLFA9bmV3IE1hcDtvUChQLHRoaXMuZHJpdmVyLGIsbCxleCkuZm9yRWFjaCgodD0+e2NQKHQscyxsKSYmTy5wdXNoKHQpfSkpO2NvbnN0IHc9bmV3IE1hcDttLmZvckVhY2goKCh0LGUpPT57b1Aodyx0aGlzLmRyaXZlcixuZXcgU2V0KHQpLHMsIiEiKX0pKSxPLmZvckVhY2goKHQ9Pntjb25zdCBlPVAuZ2V0KHQpLG49dy5nZXQodCk7UC5zZXQodCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbikpfSkpO2NvbnN0IGs9W10sUz1bXSxEPXt9O2EuZm9yRWFjaCgodD0+e2NvbnN0e2VsZW1lbnQ6ZSxwbGF5ZXI6YSxpbnN0cnVjdGlvbjpyfT10O2lmKG4uaGFzKGUpKXtpZihjLmhhcyhlKSlyZXR1cm4gYS5vbkRlc3Ryb3koKCgpPT5YeChlLHIudG9TdHlsZXMpKSksYS5kaXNhYmxlZD0hMCxhLm92ZXJyaWRlVG90YWxUaW1lKHIudG90YWxUaW1lKSx2b2lkIG8ucHVzaChhKTtsZXQgdD1EO2lmKHguc2l6ZT4xKXtsZXQgbj1lO2NvbnN0IG89W107Zm9yKDtuPW4ucGFyZW50Tm9kZTspe2NvbnN0IGU9eC5nZXQobik7aWYoZSl7dD1lO2JyZWFrfW8ucHVzaChuKX1vLmZvckVhY2goKGU9Pnguc2V0KGUsdCkpKX1jb25zdCBuPXRoaXMuX2J1aWxkQW5pbWF0aW9uKGEubmFtZXNwYWNlSWQscix2LGksdyxQKTtpZihhLnNldFJlYWxQbGF5ZXIobiksdD09PUQpay5wdXNoKGEpO2Vsc2V7Y29uc3QgZT10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2UmJmUubGVuZ3RoJiYoYS5wYXJlbnRQbGF5ZXI9aHgoZSkpLG8ucHVzaChhKX19ZWxzZSBLeChlLHIuZnJvbVN0eWxlcyksYS5vbkRlc3Ryb3koKCgpPT5YeChlLHIudG9TdHlsZXMpKSksUy5wdXNoKGEpLGMuaGFzKGUpJiZvLnB1c2goYSl9KSksUy5mb3JFYWNoKCh0PT57Y29uc3QgZT1pLmdldCh0LmVsZW1lbnQpO2lmKGUmJmUubGVuZ3RoKXtjb25zdCBuPWh4KGUpO3Quc2V0UmVhbFBsYXllcihuKX19KSksby5mb3JFYWNoKCh0PT57dC5wYXJlbnRQbGF5ZXI/dC5zeW5jUGxheWVyRXZlbnRzKHQucGFyZW50UGxheWVyKTp0LmRlc3Ryb3koKX0pKTtmb3IobGV0IHQ9MDt0PGcubGVuZ3RoO3QrKyl7Y29uc3QgZT1nW3RdLG49ZS5fX25nX3JlbW92ZWQ7aWYoclAoZSxIeCksbiYmbi5oYXNBbmltYXRpb24pY29udGludWU7bGV0IG89W107aWYoci5zaXplKXtsZXQgdD1yLmdldChlKTt0JiZ0Lmxlbmd0aCYmby5wdXNoKC4uLnQpO2xldCBuPXRoaXMuZHJpdmVyLnF1ZXJ5KGUsVngsITApO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgZT1yLmdldChuW3RdKTtlJiZlLmxlbmd0aCYmby5wdXNoKC4uLmUpfX1jb25zdCBpPW8uZmlsdGVyKCh0PT4hdC5kZXN0cm95ZWQpKTtpLmxlbmd0aD9zUCh0aGlzLGUsaSk6dGhpcy5wcm9jZXNzTGVhdmVOb2RlKGUpfXJldHVybiBnLmxlbmd0aD0wLGsuZm9yRWFjaCgodD0+e3RoaXMucGxheWVycy5wdXNoKHQpLHQub25Eb25lKCgoKT0+e3QuZGVzdHJveSgpO2NvbnN0IGU9dGhpcy5wbGF5ZXJzLmluZGV4T2YodCk7dGhpcy5wbGF5ZXJzLnNwbGljZShlLDEpfSkpLHQucGxheSgpfSkpLGt9ZWxlbWVudENvbnRhaW5zRGF0YSh0LGUpe2xldCBuPSExO2NvbnN0IG89ZS5fX25nX3JlbW92ZWQ7cmV0dXJuIG8mJm8uc2V0Rm9yUmVtb3ZhbCYmKG49ITApLHRoaXMucGxheWVyc0J5RWxlbWVudC5oYXMoZSkmJihuPSEwKSx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmhhcyhlKSYmKG49ITApLHRoaXMuc3RhdGVzQnlFbGVtZW50LmhhcyhlKSYmKG49ITApLHRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpLmVsZW1lbnRDb250YWluc0RhdGEoZSl8fG59YWZ0ZXJGbHVzaCh0KXt0aGlzLl9mbHVzaEZucy5wdXNoKHQpfWFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSh0KXt0aGlzLl93aGVuUXVpZXRGbnMucHVzaCh0KX1fZ2V0UHJldmlvdXNQbGF5ZXJzKHQsZSxuLG8saSl7bGV0IGE9W107aWYoZSl7Y29uc3QgZT10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTtlJiYoYT1lKX1lbHNle2NvbnN0IGU9dGhpcy5wbGF5ZXJzQnlFbGVtZW50LmdldCh0KTtpZihlKXtjb25zdCB0PSFpfHxpPT1LTztlLmZvckVhY2goKGU9PntlLnF1ZXVlZHx8KHR8fGUudHJpZ2dlck5hbWU9PW8pJiZhLnB1c2goZSl9KSl9fXJldHVybihufHxvKSYmKGE9YS5maWx0ZXIoKHQ9PiEobiYmbiE9dC5uYW1lc3BhY2VJZHx8byYmbyE9dC50cmlnZ2VyTmFtZSkpKSksYX1fYmVmb3JlQW5pbWF0aW9uQnVpbGQodCxlLG4pe2NvbnN0IG89ZS5lbGVtZW50LGk9ZS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDp0LGE9ZS5pc1JlbW92YWxUcmFuc2l0aW9uP3ZvaWQgMDplLnRyaWdnZXJOYW1lO2Zvcihjb25zdCB0IG9mIGUudGltZWxpbmVzKXtjb25zdCByPXQuZWxlbWVudCxzPXIhPT1vLGw9TXgobixyLFtdKTt0aGlzLl9nZXRQcmV2aW91c1BsYXllcnMocixzLGksYSxlLnRvU3RhdGUpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuZ2V0UmVhbFBsYXllcigpO2UuYmVmb3JlRGVzdHJveSYmZS5iZWZvcmVEZXN0cm95KCksdC5kZXN0cm95KCksbC5wdXNoKHQpfSkpfUt4KG8sZS5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24odCxlLG4sbyxpLGEpe2NvbnN0IHI9ZS50cmlnZ2VyTmFtZSxzPWUuZWxlbWVudCxsPVtdLGM9bmV3IFNldCxkPW5ldyBTZXQscD1lLnRpbWVsaW5lcy5tYXAoKGU9Pntjb25zdCBwPWUuZWxlbWVudDtjLmFkZChwKTtjb25zdCBtPXAuX19uZ19yZW1vdmVkO2lmKG0mJm0ucmVtb3ZlZEJlZm9yZVF1ZXJpZWQpcmV0dXJuIG5ldyBteChlLmR1cmF0aW9uLGUuZGVsYXkpO2NvbnN0IHU9cCE9PXMsZj0oZnVuY3Rpb24gZyh0KXtjb25zdCBlPVtdO3JldHVybiBsUCh0LGUpLGV9KSgobi5nZXQocCl8fFlPKS5tYXAoKHQ9PnQuZ2V0UmVhbFBsYXllcigpKSkpLmZpbHRlcigodD0+ISF0LmVsZW1lbnQmJnQuZWxlbWVudD09PXApKSxoPWkuZ2V0KHApLGI9YS5nZXQocCkseT1ieCgwLHRoaXMuX25vcm1hbGl6ZXIsMCxlLmtleWZyYW1lcyxoLGIpLF89dGhpcy5fYnVpbGRQbGF5ZXIoZSx5LGYpO2lmKGUuc3ViVGltZWxpbmUmJm8mJmQuYWRkKHApLHUpe2NvbnN0IGU9bmV3IHRQKHQscixwKTtlLnNldFJlYWxQbGF5ZXIoXyksbC5wdXNoKGUpfXJldHVybiBffSkpO2wuZm9yRWFjaCgodD0+e014KHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsdC5lbGVtZW50LFtdKS5wdXNoKHQpLHQub25Eb25lKCgoKT0+KGZ1bmN0aW9uIGUodCxuLG8pe2xldCBpO2lmKHQgaW5zdGFuY2VvZiBNYXApe2lmKGk9dC5nZXQobiksaSl7aWYoaS5sZW5ndGgpe2NvbnN0IHQ9aS5pbmRleE9mKG8pO2kuc3BsaWNlKHQsMSl9MD09aS5sZW5ndGgmJnQuZGVsZXRlKG4pfX1lbHNlIGlmKGk9dFtuXSxpKXtpZihpLmxlbmd0aCl7Y29uc3QgdD1pLmluZGV4T2Yobyk7aS5zcGxpY2UodCwxKX0wPT1pLmxlbmd0aCYmZGVsZXRlIHRbbl19cmV0dXJuIGl9KSh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LHQuZWxlbWVudCx0KSkpfSkpLGMuZm9yRWFjaCgodD0+YVAodCxCeCkpKTtjb25zdCBtPWh4KHApO3JldHVybiBtLm9uRGVzdHJveSgoKCk9PntjLmZvckVhY2goKHQ9PnJQKHQsQngpKSksWHgocyxlLnRvU3R5bGVzKX0pKSxkLmZvckVhY2goKHQ9PntNeChvLHQsW10pLnB1c2gobSl9KSksbX1fYnVpbGRQbGF5ZXIodCxlLG4pe3JldHVybiBlLmxlbmd0aD4wP3RoaXMuZHJpdmVyLmFuaW1hdGUodC5lbGVtZW50LGUsdC5kdXJhdGlvbix0LmRlbGF5LHQuZWFzaW5nLG4pOm5ldyBteCh0LmR1cmF0aW9uLHQuZGVsYXkpfX1jbGFzcyB0UHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5uYW1lc3BhY2VJZD10LHRoaXMudHJpZ2dlck5hbWU9ZSx0aGlzLmVsZW1lbnQ9bix0aGlzLl9wbGF5ZXI9bmV3IG14LHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMSx0aGlzLl9xdWV1ZWRDYWxsYmFja3M9e30sdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5tYXJrZWRGb3JEZXN0cm95PSExLHRoaXMuZGlzYWJsZWQ9ITEsdGhpcy5xdWV1ZWQ9ITAsdGhpcy50b3RhbFRpbWU9MH1zZXRSZWFsUGxheWVyKHQpe3RoaXMuX2NvbnRhaW5zUmVhbFBsYXllcnx8KHRoaXMuX3BsYXllcj10LE9iamVjdC5rZXlzKHRoaXMuX3F1ZXVlZENhbGxiYWNrcykuZm9yRWFjaCgoZT0+e3RoaXMuX3F1ZXVlZENhbGxiYWNrc1tlXS5mb3JFYWNoKChuPT55eCh0LGUsdm9pZCAwLG4pKSl9KSksdGhpcy5fcXVldWVkQ2FsbGJhY2tzPXt9LHRoaXMuX2NvbnRhaW5zUmVhbFBsYXllcj0hMCx0aGlzLm92ZXJyaWRlVG90YWxUaW1lKHQudG90YWxUaW1lKSx0aGlzLnF1ZXVlZD0hMSl9Z2V0UmVhbFBsYXllcigpe3JldHVybiB0aGlzLl9wbGF5ZXJ9b3ZlcnJpZGVUb3RhbFRpbWUodCl7dGhpcy50b3RhbFRpbWU9dH1zeW5jUGxheWVyRXZlbnRzKHQpe2NvbnN0IGU9dGhpcy5fcGxheWVyO2UudHJpZ2dlckNhbGxiYWNrJiZ0Lm9uU3RhcnQoKCgpPT5lLnRyaWdnZXJDYWxsYmFjaygic3RhcnQiKSkpLHQub25Eb25lKCgoKT0+dGhpcy5maW5pc2goKSkpLHQub25EZXN0cm95KCgoKT0+dGhpcy5kZXN0cm95KCkpKX1fcXVldWVFdmVudCh0LGUpe014KHRoaXMuX3F1ZXVlZENhbGxiYWNrcyx0LFtdKS5wdXNoKGUpfW9uRG9uZSh0KXt0aGlzLnF1ZXVlZCYmdGhpcy5fcXVldWVFdmVudCgiZG9uZSIsdCksdGhpcy5fcGxheWVyLm9uRG9uZSh0KX1vblN0YXJ0KHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJzdGFydCIsdCksdGhpcy5fcGxheWVyLm9uU3RhcnQodCl9b25EZXN0cm95KHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkZXN0cm95Iix0KSx0aGlzLl9wbGF5ZXIub25EZXN0cm95KHQpfWluaXQoKXt0aGlzLl9wbGF5ZXIuaW5pdCgpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4hdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5oYXNTdGFydGVkKCl9cGxheSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBsYXkoKX1wYXVzZSgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnBhdXNlKCl9cmVzdGFydCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc3RhcnQoKX1maW5pc2goKXt0aGlzLl9wbGF5ZXIuZmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveWVkPSEwLHRoaXMuX3BsYXllci5kZXN0cm95KCl9cmVzZXQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXNldCgpfXNldFBvc2l0aW9uKHQpe3RoaXMucXVldWVkfHx0aGlzLl9wbGF5ZXIuc2V0UG9zaXRpb24odCl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5xdWV1ZWQ/MDp0aGlzLl9wbGF5ZXIuZ2V0UG9zaXRpb24oKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT10aGlzLl9wbGF5ZXI7ZS50cmlnZ2VyQ2FsbGJhY2smJmUudHJpZ2dlckNhbGxiYWNrKHQpfX1mdW5jdGlvbiBlUCh0KXtyZXR1cm4gdCYmMT09PXQubm9kZVR5cGV9ZnVuY3Rpb24gblAodCxlKXtjb25zdCBuPXQuc3R5bGUuZGlzcGxheTtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PW51bGwhPWU/ZToibm9uZSIsbn1mdW5jdGlvbiBvUCh0LGUsbixvLGkpe2NvbnN0IGE9W107bi5mb3JFYWNoKCh0PT5hLnB1c2goblAodCkpKSk7Y29uc3Qgcj1bXTtvLmZvckVhY2goKChuLG8pPT57Y29uc3QgYT17fTtuLmZvckVhY2goKHQ9Pntjb25zdCBuPWFbdF09ZS5jb21wdXRlU3R5bGUobyx0LGkpO24mJjAhPW4ubGVuZ3RofHwoby5fX25nX3JlbW92ZWQ9Wk8sci5wdXNoKG8pKX0pKSx0LnNldChvLGEpfSkpO2xldCBzPTA7cmV0dXJuIG4uZm9yRWFjaCgodD0+blAodCxhW3MrK10pKSkscn1mdW5jdGlvbiBpUCh0LGUpe2NvbnN0IG49bmV3IE1hcDtpZih0LmZvckVhY2goKHQ9Pm4uc2V0KHQsW10pKSksMD09ZS5sZW5ndGgpcmV0dXJuIG47Y29uc3Qgbz1uZXcgU2V0KGUpLGk9bmV3IE1hcDtmdW5jdGlvbiBhKHQpe2lmKCF0KXJldHVybiAxO2xldCBlPWkuZ2V0KHQpO2lmKGUpcmV0dXJuIGU7Y29uc3Qgcj10LnBhcmVudE5vZGU7cmV0dXJuIGU9bi5oYXMocik/cjpvLmhhcyhyKT8xOmEociksaS5zZXQodCxlKSxlfXJldHVybiBlLmZvckVhY2goKHQ9Pntjb25zdCBlPWEodCk7MSE9PWUmJm4uZ2V0KGUpLnB1c2godCl9KSksbn1mdW5jdGlvbiBhUCh0LGUpe2lmKHQuY2xhc3NMaXN0KXQuY2xhc3NMaXN0LmFkZChlKTtlbHNle2xldCBuPXQuJCRjbGFzc2VzO258fChuPXQuJCRjbGFzc2VzPXt9KSxuW2VdPSEwfX1mdW5jdGlvbiByUCh0LGUpe2lmKHQuY2xhc3NMaXN0KXQuY2xhc3NMaXN0LnJlbW92ZShlKTtlbHNle2xldCBuPXQuJCRjbGFzc2VzO24mJmRlbGV0ZSBuW2VdfX1mdW5jdGlvbiBzUCh0LGUsbil7aHgobikub25Eb25lKCgoKT0+dC5wcm9jZXNzTGVhdmVOb2RlKGUpKSl9ZnVuY3Rpb24gbFAodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz10W25dO28gaW5zdGFuY2VvZiB1eD9sUChvLnBsYXllcnMsZSk6ZS5wdXNoKG8pfX1mdW5jdGlvbiBjUCh0LGUsbil7Y29uc3Qgbz1uLmdldCh0KTtpZighbylyZXR1cm4hMTtsZXQgaT1lLmdldCh0KTtyZXR1cm4gaT9vLmZvckVhY2goKHQ9PmkuYWRkKHQpKSk6ZS5zZXQodCxvKSxuLmRlbGV0ZSh0KSwhMH1jbGFzcyBkUHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9bix0aGlzLl90cmlnZ2VyQ2FjaGU9e30sdGhpcy5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+e30sdGhpcy5fdHJhbnNpdGlvbkVuZ2luZT1uZXcgJE8odCxlLG4pLHRoaXMuX3RpbWVsaW5lRW5naW5lPW5ldyBqTyh0LGUsbiksdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5vblJlbW92YWxDb21wbGV0ZT0odCxlKT0+dGhpcy5vblJlbW92YWxDb21wbGV0ZSh0LGUpfXJlZ2lzdGVyVHJpZ2dlcih0LGUsbixvLGkpe2NvbnN0IGE9dCsiLSIrbztsZXQgcj10aGlzLl90cmlnZ2VyQ2FjaGVbYV07aWYoIXIpe2NvbnN0IHQ9W10sZT1mTyh0aGlzLl9kcml2ZXIsaSx0KTtpZih0Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtvfSIgaGFzIGZhaWxlZCB0byBidWlsZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6XG4gLSAke3Quam9pbigiXG4gLSAiKX1gKTtyPShmdW5jdGlvbiBuKHQsZSxvKXtyZXR1cm4gbmV3IExPKHQsZSxvKX0pKG8sZSx0aGlzLl9ub3JtYWxpemVyKSx0aGlzLl90cmlnZ2VyQ2FjaGVbYV09cn10aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihlLG8scil9cmVnaXN0ZXIodCxlKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlZ2lzdGVyKHQsZSl9ZGVzdHJveSh0LGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZGVzdHJveSh0LGUpfW9uSW5zZXJ0KHQsZSxuLG8pe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuaW5zZXJ0Tm9kZSh0LGUsbixvKX1vblJlbW92ZSh0LGUsbixvKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLnJlbW92ZU5vZGUodCxlLG98fCExLG4pfWRpc2FibGVBbmltYXRpb25zKHQsZSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5tYXJrRWxlbWVudEFzRGlzYWJsZWQodCxlKX1wcm9jZXNzKHQsZSxuLG8pe2lmKCJAIj09bi5jaGFyQXQoMCkpe2NvbnN0W3QsaV09dngobik7dGhpcy5fdGltZWxpbmVFbmdpbmUuY29tbWFuZCh0LGUsaSxvKX1lbHNlIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUudHJpZ2dlcih0LGUsbixvKX1saXN0ZW4odCxlLG4sbyxpKXtpZigiQCI9PW4uY2hhckF0KDApKXtjb25zdFt0LG9dPXZ4KG4pO3JldHVybiB0aGlzLl90aW1lbGluZUVuZ2luZS5saXN0ZW4odCxlLG8saSl9cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUubGlzdGVuKHQsZSxuLG8saSl9Zmx1c2godD0tMSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5mbHVzaCh0KX1nZXQgcGxheWVycygpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnBsYXllcnMuY29uY2F0KHRoaXMuX3RpbWVsaW5lRW5naW5lLnBsYXllcnMpfXdoZW5SZW5kZXJpbmdEb25lKCl7cmV0dXJuIHRoaXMuX3RyYW5zaXRpb25FbmdpbmUud2hlblJlbmRlcmluZ0RvbmUoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHBQKHQsZSl7bGV0IG49bnVsbCxvPW51bGw7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPyhuPXVQKGVbMF0pLGUubGVuZ3RoPjEmJihvPXVQKGVbZS5sZW5ndGgtMV0pKSk6ZSYmKG49dVAoZSkpLG58fG8/bmV3IG1QKHQsbixvKTpudWxsfWNsYXNzIG1Qe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fc3RhcnRTdHlsZXM9ZSx0aGlzLl9lbmRTdHlsZXM9bix0aGlzLl9zdGF0ZT0wO2xldCBvPW1QLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZ2V0KHQpO298fG1QLmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuc2V0KHQsbz17fSksdGhpcy5faW5pdGlhbFN0eWxlcz1vfXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiZYeCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEpfWZpbmlzaCgpe3RoaXMuc3RhcnQoKSx0aGlzLl9zdGF0ZTwyJiYoWHgodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJihYeCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmZpbmlzaCgpLHRoaXMuX3N0YXRlPDMmJihtUC5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmRlbGV0ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9zdGFydFN0eWxlcyYmKEt4KHRoaXMuX2VsZW1lbnQsdGhpcy5fc3RhcnRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9lbmRTdHlsZXMmJihLeCh0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLFh4KHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9Myl9fWZ1bmN0aW9uIHVQKHQpe2xldCBlPW51bGw7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3QgaT1uW29dO2ZQKGkpJiYoZT1lfHx7fSxlW2ldPXRbaV0pfXJldHVybiBlfWZ1bmN0aW9uIGZQKHQpe3JldHVybiJkaXNwbGF5Ij09PXR8fCJwb3NpdGlvbiI9PT10fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9tUC5pbml0aWFsU3R5bGVzQnlFbGVtZW50PW5ldyBXZWFrTWFwO2NvbnN0IGdQPSJhbmltYXRpb24iLGhQPSJhbmltYXRpb25lbmQiO2NsYXNzIGJQe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9uYW1lPWUsdGhpcy5fZHVyYXRpb249bix0aGlzLl9kZWxheT1vLHRoaXMuX2Vhc2luZz1pLHRoaXMuX2ZpbGxNb2RlPWEsdGhpcy5fb25Eb25lRm49cix0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fc3RhcnRUaW1lPTAsdGhpcy5fcG9zaXRpb249MCx0aGlzLl9ldmVudEZuPXQ9PnRoaXMuX2hhbmRsZUNhbGxiYWNrKHQpfWFwcGx5KCl7IShmdW5jdGlvbiB0KGUsbil7Y29uc3Qgbz14UChlLCIiKS50cmltKCk7bGV0IGk9MDtvLmxlbmd0aCYmKChmdW5jdGlvbiBhKHQsZSl7bGV0IG49MDtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl0LmNoYXJBdChvKT09PWUmJm4rKztyZXR1cm4gbn0pKG8sIiwiKSsxLG49YCR7b30sICR7bn1gKSx2UChlLCIiLG4pfSkodGhpcy5fZWxlbWVudCxgJHt0aGlzLl9kdXJhdGlvbn1tcyAke3RoaXMuX2Vhc2luZ30gJHt0aGlzLl9kZWxheX1tcyAxIG5vcm1hbCAke3RoaXMuX2ZpbGxNb2RlfSAke3RoaXMuX25hbWV9YCksTVAodGhpcy5fZWxlbWVudCx0aGlzLl9ldmVudEZuLCExKSx0aGlzLl9zdGFydFRpbWU9RGF0ZS5ub3coKX1wYXVzZSgpe3lQKHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicGF1c2VkIil9cmVzdW1lKCl7eVAodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lLCJydW5uaW5nIil9c2V0UG9zaXRpb24odCl7Y29uc3QgZT1fUCh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUpO3RoaXMuX3Bvc2l0aW9uPXQqdGhpcy5fZHVyYXRpb24sdlAodGhpcy5fZWxlbWVudCwiRGVsYXkiLGAtJHt0aGlzLl9wb3NpdGlvbn1tc2AsZSl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259X2hhbmRsZUNhbGxiYWNrKHQpe2NvbnN0IGU9dC5fbmdUZXN0TWFudWFsVGltZXN0YW1wfHxEYXRlLm5vdygpLG49MWUzKnBhcnNlRmxvYXQodC5lbGFwc2VkVGltZS50b0ZpeGVkKDMpKTt0LmFuaW1hdGlvbk5hbWU9PXRoaXMuX25hbWUmJk1hdGgubWF4KGUtdGhpcy5fc3RhcnRUaW1lLDApPj10aGlzLl9kZWxheSYmbj49dGhpcy5fZHVyYXRpb24mJnRoaXMuZmluaXNoKCl9ZmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbigpLE1QKHRoaXMuX2VsZW1lbnQsdGhpcy5fZXZlbnRGbiwhMCkpfWRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWR8fCh0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5maW5pc2goKSwoZnVuY3Rpb24gdChlLG4pe2NvbnN0IG89eFAoZSwiIikuc3BsaXQoIiwiKSxpPUNQKG8sbik7aT49MCYmKG8uc3BsaWNlKGksMSksdlAoZSwiIixvLmpvaW4oIiwiKSkpfSkodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKSl9fWZ1bmN0aW9uIHlQKHQsZSxuKXt2UCh0LCJQbGF5U3RhdGUiLG4sX1AodCxlKSl9ZnVuY3Rpb24gX1AodCxlKXtjb25zdCBuPXhQKHQsIiIpO3JldHVybiBuLmluZGV4T2YoIiwiKT4wP0NQKG4uc3BsaXQoIiwiKSxlKTpDUChbbl0sZSl9ZnVuY3Rpb24gQ1AodCxlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLmluZGV4T2YoZSk+PTApcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gTVAodCxlLG4pe24/dC5yZW1vdmVFdmVudExpc3RlbmVyKGhQLGUpOnQuYWRkRXZlbnRMaXN0ZW5lcihoUCxlKX1mdW5jdGlvbiB2UCh0LGUsbixvKXtjb25zdCBpPWdQK2U7aWYobnVsbCE9byl7Y29uc3QgZT10LnN0eWxlW2ldO2lmKGUubGVuZ3RoKXtjb25zdCB0PWUuc3BsaXQoIiwiKTt0W29dPW4sbj10LmpvaW4oIiwiKX19dC5zdHlsZVtpXT1ufWZ1bmN0aW9uIHhQKHQsZSl7cmV0dXJuIHQuc3R5bGVbZ1ArZV18fCIifWNsYXNzIE9Qe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7dGhpcy5lbGVtZW50PXQsdGhpcy5rZXlmcmFtZXM9ZSx0aGlzLmFuaW1hdGlvbk5hbWU9bix0aGlzLl9kdXJhdGlvbj1vLHRoaXMuX2RlbGF5PWksdGhpcy5fZmluYWxTdHlsZXM9cix0aGlzLl9zcGVjaWFsU3R5bGVzPXMsdGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMuY3VycmVudFNuYXBzaG90PXt9LHRoaXMuX3N0YXRlPTAsdGhpcy5lYXNpbmc9YXx8ImxpbmVhciIsdGhpcy50b3RhbFRpbWU9bytpLHRoaXMuX2J1aWxkU3R5bGVyKCl9b25TdGFydCh0KXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2godCl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1kZXN0cm95KCl7dGhpcy5pbml0KCksdGhpcy5fc3RhdGU+PTR8fCh0aGlzLl9zdGF0ZT00LHRoaXMuX3N0eWxlci5kZXN0cm95KCksdGhpcy5fZmx1c2hTdGFydEZucygpLHRoaXMuX2ZsdXNoRG9uZUZucygpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZGVzdHJveSgpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfV9mbHVzaERvbmVGbnMoKXt0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25Eb25lRm5zPVtdfV9mbHVzaFN0YXJ0Rm5zKCl7dGhpcy5fb25TdGFydEZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdfWZpbmlzaCgpe3RoaXMuaW5pdCgpLHRoaXMuX3N0YXRlPj0zfHwodGhpcy5fc3RhdGU9Myx0aGlzLl9zdHlsZXIuZmluaXNoKCksdGhpcy5fZmx1c2hTdGFydEZucygpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZmluaXNoKCksdGhpcy5fZmx1c2hEb25lRm5zKCkpfXNldFBvc2l0aW9uKHQpe3RoaXMuX3N0eWxlci5zZXRQb3NpdGlvbih0KX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLl9zdHlsZXIuZ2V0UG9zaXRpb24oKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXRlPj0yfWluaXQoKXt0aGlzLl9zdGF0ZT49MXx8KHRoaXMuX3N0YXRlPTEsdGhpcy5fc3R5bGVyLmFwcGx5KCksdGhpcy5fZGVsYXkmJnRoaXMuX3N0eWxlci5wYXVzZSgpKX1wbGF5KCl7dGhpcy5pbml0KCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fc3RhdGU9Mix0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLnN0YXJ0KCkpLHRoaXMuX3N0eWxlci5yZXN1bWUoKX1wYXVzZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3N0eWxlci5wYXVzZSgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9cmVzZXQoKXt0aGlzLl9zdGF0ZT0wLHRoaXMuX3N0eWxlci5kZXN0cm95KCksdGhpcy5fYnVpbGRTdHlsZXIoKSx0aGlzLl9zdHlsZXIuYXBwbHkoKX1fYnVpbGRTdHlsZXIoKXt0aGlzLl9zdHlsZXI9bmV3IGJQKHRoaXMuZWxlbWVudCx0aGlzLmFuaW1hdGlvbk5hbWUsdGhpcy5fZHVyYXRpb24sdGhpcy5fZGVsYXksdGhpcy5lYXNpbmcsImZvcndhcmRzIiwoKCk9PnRoaXMuZmluaXNoKCkpKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaCgodD0+dCgpKSksZS5sZW5ndGg9MH1iZWZvcmVEZXN0cm95KCl7dGhpcy5pbml0KCk7Y29uc3QgdD17fTtpZih0aGlzLmhhc1N0YXJ0ZWQoKSl7Y29uc3QgZT10aGlzLl9zdGF0ZT49MztPYmplY3Qua2V5cyh0aGlzLl9maW5hbFN0eWxlcykuZm9yRWFjaCgobj0+eyJvZmZzZXQiIT1uJiYodFtuXT1lP3RoaXMuX2ZpbmFsU3R5bGVzW25dOnNPKHRoaXMuZWxlbWVudCxuKSl9KSl9dGhpcy5jdXJyZW50U25hcHNob3Q9dH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFBQIGV4dGVuZHMgbXh7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuZWxlbWVudD10LHRoaXMuX3N0YXJ0aW5nU3R5bGVzPXt9LHRoaXMuX19pbml0aWFsaXplZD0hMSx0aGlzLl9zdHlsZXM9VHgoZSl9aW5pdCgpeyF0aGlzLl9faW5pdGlhbGl6ZWQmJnRoaXMuX3N0YXJ0aW5nU3R5bGVzJiYodGhpcy5fX2luaXRpYWxpemVkPSEwLE9iamVjdC5rZXlzKHRoaXMuX3N0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX3N0YXJ0aW5nU3R5bGVzW3RdPXRoaXMuZWxlbWVudC5zdHlsZVt0XX0pKSxzdXBlci5pbml0KCkpfXBsYXkoKXt0aGlzLl9zdGFydGluZ1N0eWxlcyYmKHRoaXMuaW5pdCgpLE9iamVjdC5rZXlzKHRoaXMuX3N0eWxlcykuZm9yRWFjaCgodD0+dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHQsdGhpcy5fc3R5bGVzW3RdKSkpLHN1cGVyLnBsYXkoKSl9ZGVzdHJveSgpe3RoaXMuX3N0YXJ0aW5nU3R5bGVzJiYoT2JqZWN0LmtleXModGhpcy5fc3RhcnRpbmdTdHlsZXMpLmZvckVhY2goKHQ9Pntjb25zdCBlPXRoaXMuX3N0YXJ0aW5nU3R5bGVzW3RdO2U/dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHQsZSk6dGhpcy5lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfSkpLHRoaXMuX3N0YXJ0aW5nU3R5bGVzPW51bGwsc3VwZXIuZGVzdHJveSgpKX19Y2xhc3Mgd1B7Y29uc3RydWN0b3IoKXt0aGlzLl9jb3VudD0wfXZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gRHgodCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gRXgodCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUngodCxlKX1xdWVyeSh0LGUsbil7cmV0dXJuIEF4KHQsZSxuKX1jb21wdXRlU3R5bGUodCxlLG4pe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXX1idWlsZEtleWZyYW1lRWxlbWVudCh0LGUsbil7bj1uLm1hcCgodD0+VHgodCkpKTtsZXQgbz1gQGtleWZyYW1lcyAke2V9IHtcbmAsaT0iIjtuLmZvckVhY2goKHQ9PntpPSIgIjtjb25zdCBlPXBhcnNlRmxvYXQodC5vZmZzZXQpO28rPWAke2l9JHsxMDAqZX0lIHtcbmAsaSs9IiAiLE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pntjb25zdCBuPXRbZV07c3dpdGNoKGUpe2Nhc2Uib2Zmc2V0IjpyZXR1cm47Y2FzZSJlYXNpbmciOnJldHVybiB2b2lkKG4mJihvKz1gJHtpfWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR7bn07XG5gKSk7ZGVmYXVsdDpyZXR1cm4gdm9pZChvKz1gJHtpfSR7ZX06ICR7bn07XG5gKX19KSksbys9YCR7aX19XG5gfSkpLG8rPSJ9XG4iO2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtyZXR1cm4gYS50ZXh0Q29udGVudD1vLGF9YW5pbWF0ZSh0LGUsbixvLGksYT1bXSxyKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJnImJihmdW5jdGlvbiBzKCl7a1B8fChjb25zb2xlLndhcm4oIkBhbmd1bGFyL2FuaW1hdGlvbnM6IHBsZWFzZSBsb2FkIHRoZSB3ZWItYW5pbWF0aW9ucy5qcyBwb2x5ZmlsbCB0byBhbGxvdyBwcm9ncmFtbWF0aWMgYWNjZXNzLi4uXG4iLCIgIHZpc2l0IGh0dHBzOi8vYml0Lmx5L0lXdWthbSB0byBsZWFybiBtb3JlIGFib3V0IHVzaW5nIHRoZSB3ZWItYW5pbWF0aW9uLWpzIHBvbHlmaWxsLiIpLGtQPSEwKX0pKCk7Y29uc3QgbD1hLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIE9QKSksYz17fTtpTyhuLG8pJiZsLmZvckVhY2goKHQ9PntsZXQgZT10LmN1cnJlbnRTbmFwc2hvdDtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKCh0PT5jW3RdPWVbdF0pKX0pKTtjb25zdCBkPShmdW5jdGlvbiBwKHQpe2xldCBlPXt9O3JldHVybiB0JiYoQXJyYXkuaXNBcnJheSh0KT90Olt0XSkuZm9yRWFjaCgodD0+e09iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnsib2Zmc2V0IiE9biYmImVhc2luZyIhPW4mJihlW25dPXRbbl0pfSkpfSkpLGV9KShlPWFPKHQsZSxjKSk7aWYoMD09bilyZXR1cm4gbmV3IFBQKHQsZCk7Y29uc3QgbT0iZ2VuX2Nzc19rZl8iK3RoaXMuX2NvdW50KyssdT10aGlzLmJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsbSxlKTsoZnVuY3Rpb24gZih0KXt2YXIgZTtjb25zdCBuPW51bGw9PT0oZT10LmdldFJvb3ROb2RlKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jYWxsKHQpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgU2hhZG93Um9vdCYmbiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/bjpkb2N1bWVudC5oZWFkfSkodCkuYXBwZW5kQ2hpbGQodSk7Y29uc3QgZz1wUCh0LGUpLGg9bmV3IE9QKHQsZSxtLG4sbyxpLGQsZyk7cmV0dXJuIGgub25EZXN0cm95KCgoKT0+KGZ1bmN0aW9uIHQoZSl7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSkodSkpKSxofX1sZXQga1A9ITE7Y2xhc3MgU1B7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5lbGVtZW50PXQsdGhpcy5rZXlmcmFtZXM9ZSx0aGlzLm9wdGlvbnM9bix0aGlzLl9zcGVjaWFsU3R5bGVzPW8sdGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMuX2luaXRpYWxpemVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMudGltZT0wLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy5jdXJyZW50U25hcHNob3Q9e30sdGhpcy5fZHVyYXRpb249bi5kdXJhdGlvbix0aGlzLl9kZWxheT1uLmRlbGF5fHwwLHRoaXMudGltZT10aGlzLl9kdXJhdGlvbit0aGlzLl9kZWxheX1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuX3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpfV9idWlsZFBsYXllcigpe2lmKHRoaXMuX2luaXRpYWxpemVkKXJldHVybjt0aGlzLl9pbml0aWFsaXplZD0hMDtjb25zdCB0PXRoaXMua2V5ZnJhbWVzO3RoaXMuZG9tUGxheWVyPXRoaXMuX3RyaWdnZXJXZWJBbmltYXRpb24odGhpcy5lbGVtZW50LHQsdGhpcy5vcHRpb25zKSx0aGlzLl9maW5hbEtleWZyYW1lPXQubGVuZ3RoP3RbdC5sZW5ndGgtMV06e30sdGhpcy5kb21QbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigiZmluaXNoIiwoKCk9PnRoaXMuX29uRmluaXNoKCkpKX1fcHJlcGFyZVBsYXllckJlZm9yZVN0YXJ0KCl7dGhpcy5fZGVsYXk/dGhpcy5fcmVzZXREb21QbGF5ZXJTdGF0ZSgpOnRoaXMuZG9tUGxheWVyLnBhdXNlKCl9X3RyaWdnZXJXZWJBbmltYXRpb24odCxlLG4pe3JldHVybiB0LmFuaW1hdGUoZSxuKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1vbkRvbmUodCl7dGhpcy5fb25Eb25lRm5zLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKHQpfXBsYXkoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydEZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITAsdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5zdGFydCgpKSx0aGlzLmRvbVBsYXllci5wbGF5KCl9cGF1c2UoKXt0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5wYXVzZSgpfWZpbmlzaCgpe3RoaXMuaW5pdCgpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZmluaXNoKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLmRvbVBsYXllci5maW5pc2goKX1yZXNldCgpe3RoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1fcmVzZXREb21QbGF5ZXJTdGF0ZSgpe3RoaXMuZG9tUGxheWVyJiZ0aGlzLmRvbVBsYXllci5jYW5jZWwoKX1yZXN0YXJ0KCl7dGhpcy5yZXNldCgpLHRoaXMucGxheSgpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKSx0aGlzLl9vbkZpbmlzaCgpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZGVzdHJveSgpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXNldFBvc2l0aW9uKHQpe3ZvaWQgMD09PXRoaXMuZG9tUGxheWVyJiZ0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZT10KnRoaXMudGltZX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZS90aGlzLnRpbWV9Z2V0IHRvdGFsVGltZSgpe3JldHVybiB0aGlzLl9kZWxheSt0aGlzLl9kdXJhdGlvbn1iZWZvcmVEZXN0cm95KCl7Y29uc3QgdD17fTt0aGlzLmhhc1N0YXJ0ZWQoKSYmT2JqZWN0LmtleXModGhpcy5fZmluYWxLZXlmcmFtZSkuZm9yRWFjaCgoZT0+eyJvZmZzZXQiIT1lJiYodFtlXT10aGlzLl9maW5pc2hlZD90aGlzLl9maW5hbEtleWZyYW1lW2VdOnNPKHRoaXMuZWxlbWVudCxlKSl9KSksdGhpcy5jdXJyZW50U25hcHNob3Q9dH10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3QgZT0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaCgodD0+dCgpKSksZS5sZW5ndGg9MH19Y2xhc3MgRFB7Y29uc3RydWN0b3IoKXt0aGlzLl9pc05hdGl2ZUltcGw9L1x7XHMqXFtuYXRpdmVccytjb2RlXF1ccypcfS8udGVzdChFUCgpLnRvU3RyaW5nKCkpLHRoaXMuX2Nzc0tleWZyYW1lc0RyaXZlcj1uZXcgd1B9dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiBEeCh0KX1tYXRjaGVzRWxlbWVudCh0LGUpe3JldHVybiBFeCh0LGUpfWNvbnRhaW5zRWxlbWVudCh0LGUpe3JldHVybiBSeCh0LGUpfXF1ZXJ5KHQsZSxuKXtyZXR1cm4gQXgodCxlLG4pfWNvbXB1dGVTdHlsZSh0LGUsbil7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW2VdfW92ZXJyaWRlV2ViQW5pbWF0aW9uc1N1cHBvcnQodCl7dGhpcy5faXNOYXRpdmVJbXBsPXR9YW5pbWF0ZSh0LGUsbixvLGksYT1bXSxyKXtpZighciYmIXRoaXMuX2lzTmF0aXZlSW1wbClyZXR1cm4gdGhpcy5fY3NzS2V5ZnJhbWVzRHJpdmVyLmFuaW1hdGUodCxlLG4sbyxpLGEpO2NvbnN0IHM9e2R1cmF0aW9uOm4sZGVsYXk6byxmaWxsOjA9PW8/ImJvdGgiOiJmb3J3YXJkcyJ9O2kmJihzLmVhc2luZz1pKTtjb25zdCBsPXt9LGM9YS5maWx0ZXIoKHQ9PnQgaW5zdGFuY2VvZiBTUCkpO2lPKG4sbykmJmMuZm9yRWFjaCgodD0+e2xldCBlPXQuY3VycmVudFNuYXBzaG90O09iamVjdC5rZXlzKGUpLmZvckVhY2goKHQ9PmxbdF09ZVt0XSkpfSkpO2NvbnN0IGQ9cFAodCxlPWFPKHQsZT1lLm1hcCgodD0+WXgodCwhMSkpKSxsKSk7cmV0dXJuIG5ldyBTUCh0LGUscyxkKX19ZnVuY3Rpb24gRVAoKXtyZXR1cm4gZngoKSYmRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZXx8e319Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovY2xhc3MgUlAgZXh0ZW5kcyB0eHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fbmV4dEFuaW1hdGlvbklkPTAsdGhpcy5fcmVuZGVyZXI9dC5jcmVhdGVSZW5kZXJlcihlLmJvZHkse2lkOiIwIixlbmNhcHN1bGF0aW9uOkhuLk5vbmUsc3R5bGVzOltdLGRhdGE6e2FuaW1hdGlvbjpbXX19KX1idWlsZCh0KXtjb25zdCBlPXRoaXMuX25leHRBbmltYXRpb25JZC50b1N0cmluZygpO3RoaXMuX25leHRBbmltYXRpb25JZCsrO2NvbnN0IG49QXJyYXkuaXNBcnJheSh0KT9peCh0KTp0O3JldHVybiBOUCh0aGlzLl9yZW5kZXJlcixudWxsLGUsInJlZ2lzdGVyIixbbl0pLG5ldyBBUChlLHRoaXMuX3JlbmRlcmVyKX19UlAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJQKSh2cihfZyksdnIoWl8pKX0sUlAuybVwcm92PU1uKHt0b2tlbjpSUCxmYWN0b3J5OlJQLsm1ZmFjfSksUlAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChSUCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2d9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y2xhc3MgQVAgZXh0ZW5kcyBjbGFzc3t9e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9pZD10LHRoaXMuX3JlbmRlcmVyPWV9Y3JlYXRlKHQsZSl7cmV0dXJuIG5ldyBUUCh0aGlzLl9pZCx0LGV8fHt9LHRoaXMuX3JlbmRlcmVyKX19Y2xhc3MgVFB7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5pZD10LHRoaXMuZWxlbWVudD1lLHRoaXMuX3JlbmRlcmVyPW8sdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLl9zdGFydGVkPSExLHRoaXMudG90YWxUaW1lPTAsdGhpcy5fY29tbWFuZCgiY3JlYXRlIixuKX1fbGlzdGVuKHQsZSl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQsYEBAJHt0aGlzLmlkfToke3R9YCxlKX1fY29tbWFuZCh0LC4uLmUpe3JldHVybiBOUCh0aGlzLl9yZW5kZXJlcix0aGlzLmVsZW1lbnQsdGhpcy5pZCx0LGUpfW9uRG9uZSh0KXt0aGlzLl9saXN0ZW4oImRvbmUiLHQpfW9uU3RhcnQodCl7dGhpcy5fbGlzdGVuKCJzdGFydCIsdCl9b25EZXN0cm95KHQpe3RoaXMuX2xpc3RlbigiZGVzdHJveSIsdCl9aW5pdCgpe3RoaXMuX2NvbW1hbmQoImluaXQiKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMuX2NvbW1hbmQoInBsYXkiKSx0aGlzLl9zdGFydGVkPSEwfXBhdXNlKCl7dGhpcy5fY29tbWFuZCgicGF1c2UiKX1yZXN0YXJ0KCl7dGhpcy5fY29tbWFuZCgicmVzdGFydCIpfWZpbmlzaCgpe3RoaXMuX2NvbW1hbmQoImZpbmlzaCIpfWRlc3Ryb3koKXt0aGlzLl9jb21tYW5kKCJkZXN0cm95Iil9cmVzZXQoKXt0aGlzLl9jb21tYW5kKCJyZXNldCIpLHRoaXMuX3N0YXJ0ZWQ9ITF9c2V0UG9zaXRpb24odCl7dGhpcy5fY29tbWFuZCgic2V0UG9zaXRpb24iLHQpfWdldFBvc2l0aW9uKCl7dmFyIHQsZTtyZXR1cm4gbnVsbCE9PShlPW51bGw9PT0odD10aGlzLl9yZW5kZXJlci5lbmdpbmUucGxheWVyc1srdGhpcy5pZF0pfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldFBvc2l0aW9uKCkpJiZ2b2lkIDAhPT1lP2U6MH19ZnVuY3Rpb24gTlAodCxlLG4sbyxpKXtyZXR1cm4gdC5zZXRQcm9wZXJ0eShlLGBAQCR7bn06JHtvfWAsaSl9Y29uc3QgelA9IkAiLElQPSJALmRpc2FibGVkIjtjbGFzcyBIUHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5kZWxlZ2F0ZT10LHRoaXMuZW5naW5lPWUsdGhpcy5fem9uZT1uLHRoaXMuX2N1cnJlbnRJZD0wLHRoaXMuX21pY3JvdGFza0lkPTEsdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdLHRoaXMuX3JlbmRlcmVyQ2FjaGU9bmV3IE1hcCx0aGlzLl9jZFJlY3VyRGVwdGg9MCx0aGlzLnByb21pc2U9UHJvbWlzZS5yZXNvbHZlKDApLGUub25SZW1vdmFsQ29tcGxldGU9KHQsZSk9PntlJiZlLnBhcmVudE5vZGUodCkmJmUucmVtb3ZlQ2hpbGQodC5wYXJlbnROb2RlLHQpfX1jcmVhdGVSZW5kZXJlcih0LGUpe2NvbnN0IG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcih0LGUpO2lmKCEodCYmZSYmZS5kYXRhJiZlLmRhdGEuYW5pbWF0aW9uKSl7bGV0IHQ9dGhpcy5fcmVuZGVyZXJDYWNoZS5nZXQobik7cmV0dXJuIHR8fCh0PW5ldyBGUCgiIixuLHRoaXMuZW5naW5lKSx0aGlzLl9yZW5kZXJlckNhY2hlLnNldChuLHQpKSx0fWNvbnN0IG89ZS5pZCxpPWUuaWQrIi0iK3RoaXMuX2N1cnJlbnRJZDt0aGlzLl9jdXJyZW50SWQrKyx0aGlzLmVuZ2luZS5yZWdpc3RlcihpLHQpO2NvbnN0IGE9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGEpOnRoaXMuZW5naW5lLnJlZ2lzdGVyVHJpZ2dlcihvLGksdCxlLm5hbWUsZSl9O3JldHVybiBlLmRhdGEuYW5pbWF0aW9uLmZvckVhY2goYSksbmV3IExQKHRoaXMsaSxuLHRoaXMuZW5naW5lKX1iZWdpbigpe3RoaXMuX2NkUmVjdXJEZXB0aCsrLHRoaXMuZGVsZWdhdGUuYmVnaW4mJnRoaXMuZGVsZWdhdGUuYmVnaW4oKX1fc2NoZWR1bGVDb3VudFRhc2soKXt0aGlzLnByb21pc2UudGhlbigoKCk9Pnt0aGlzLl9taWNyb3Rhc2tJZCsrfSkpfXNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayh0LGUsbil7dD49MCYmdDx0aGlzLl9taWNyb3Rhc2tJZD90aGlzLl96b25lLnJ1bigoKCk9PmUobikpKTooMD09dGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyLmxlbmd0aCYmUHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCgpPT57dGhpcy5fem9uZS5ydW4oKCgpPT57dGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyLmZvckVhY2goKHQ9Pntjb25zdFtlLG5dPXQ7ZShuKX0pKSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W119KSl9KSksdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyLnB1c2goW2Usbl0pKX1lbmQoKXt0aGlzLl9jZFJlY3VyRGVwdGgtLSwwPT10aGlzLl9jZFJlY3VyRGVwdGgmJnRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dGhpcy5fc2NoZWR1bGVDb3VudFRhc2soKSx0aGlzLmVuZ2luZS5mbHVzaCh0aGlzLl9taWNyb3Rhc2tJZCl9KSksdGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1cm4gdGhpcy5lbmdpbmUud2hlblJlbmRlcmluZ0RvbmUoKX19SFAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhQKSh2cihfZyksdnIoZFApLHZyKGFfKSl9LEhQLsm1cHJvdj1Nbih7dG9rZW46SFAsZmFjdG9yeTpIUC7JtWZhY30pLEhQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X2d9LHt0eXBlOmRQfSx7dHlwZTphX31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSFAsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9nfSx7dHlwZTpkUH0se3R5cGU6YV99XX0pLG51bGwpO2NsYXNzIEZQe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLm5hbWVzcGFjZUlkPXQsdGhpcy5kZWxlZ2F0ZT1lLHRoaXMuZW5naW5lPW4sdGhpcy5kZXN0cm95Tm9kZT10aGlzLmRlbGVnYXRlLmRlc3Ryb3lOb2RlP3Q9PmUuZGVzdHJveU5vZGUodCk6bnVsbH1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmRlbGVnYXRlLmRhdGF9ZGVzdHJveSgpe3RoaXMuZW5naW5lLmRlc3Ryb3kodGhpcy5uYW1lc3BhY2VJZCx0aGlzLmRlbGVnYXRlKSx0aGlzLmRlbGVnYXRlLmRlc3Ryb3koKX1jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudCh0LGUpfWNyZWF0ZUNvbW1lbnQodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh0KX1jcmVhdGVUZXh0KHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZVRleHQodCl9YXBwZW5kQ2hpbGQodCxlKXt0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsZSksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxlLHQsITEpfWluc2VydEJlZm9yZSh0LGUsbixvPSEwKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZSh0LGUsbiksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxlLHQsbyl9cmVtb3ZlQ2hpbGQodCxlLG4pe3RoaXMuZW5naW5lLm9uUmVtb3ZlKHRoaXMubmFtZXNwYWNlSWQsZSx0aGlzLmRlbGVnYXRlLG4pfXNlbGVjdFJvb3RFbGVtZW50KHQsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2VsZWN0Um9vdEVsZW1lbnQodCxlKX1wYXJlbnROb2RlKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLnBhcmVudE5vZGUodCl9bmV4dFNpYmxpbmcodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcodCl9c2V0QXR0cmlidXRlKHQsZSxuLG8pe3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKHQsZSxuLG8pfXJlbW92ZUF0dHJpYnV0ZSh0LGUsbil7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVBdHRyaWJ1dGUodCxlLG4pfWFkZENsYXNzKHQsZSl7dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyh0LGUpfXJlbW92ZUNsYXNzKHQsZSl7dGhpcy5kZWxlZ2F0ZS5yZW1vdmVDbGFzcyh0LGUpfXNldFN0eWxlKHQsZSxuLG8pe3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4sbyl9cmVtb3ZlU3R5bGUodCxlLG4pe3RoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlLG4pfXNldFByb3BlcnR5KHQsZSxuKXtlLmNoYXJBdCgwKT09elAmJmU9PUlQP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnModCwhIW4pOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkodCxlLG4pfXNldFZhbHVlKHQsZSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfWxpc3Rlbih0LGUsbil7cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX1kaXNhYmxlQW5pbWF0aW9ucyh0LGUpe3RoaXMuZW5naW5lLmRpc2FibGVBbmltYXRpb25zKHQsZSl9fWNsYXNzIExQIGV4dGVuZHMgRlB7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoZSxuLG8pLHRoaXMuZmFjdG9yeT10LHRoaXMubmFtZXNwYWNlSWQ9ZX1zZXRQcm9wZXJ0eSh0LGUsbil7ZS5jaGFyQXQoMCk9PXpQPyIuIj09ZS5jaGFyQXQoMSkmJmU9PUlQP3RoaXMuZGlzYWJsZUFuaW1hdGlvbnModCxuPXZvaWQgMD09PW58fCEhbik6dGhpcy5lbmdpbmUucHJvY2Vzcyh0aGlzLm5hbWVzcGFjZUlkLHQsZS5zdWJzdHIoMSksbik6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9bGlzdGVuKHQsZSxuKXtpZihlLmNoYXJBdCgwKT09elApe2NvbnN0IG89KGZ1bmN0aW9uIGkodCl7c3dpdGNoKHQpe2Nhc2UiYm9keSI6cmV0dXJuIGRvY3VtZW50LmJvZHk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIGRvY3VtZW50O2Nhc2Uid2luZG93IjpyZXR1cm4gd2luZG93O2RlZmF1bHQ6cmV0dXJuIHR9fSkodCk7bGV0IGE9ZS5zdWJzdHIoMSkscj0iIjtyZXR1cm4gYS5jaGFyQXQoMCkhPXpQJiYoW2Escl09KGZ1bmN0aW9uIHModCl7Y29uc3QgZT10LmluZGV4T2YoIi4iKTtyZXR1cm5bdC5zdWJzdHJpbmcoMCxlKSx0LnN1YnN0cihlKzEpXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShhKSksdGhpcy5lbmdpbmUubGlzdGVuKHRoaXMubmFtZXNwYWNlSWQsbyxhLHIsKHQ9Pnt0aGlzLmZhY3Rvcnkuc2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKHQuX2RhdGF8fC0xLG4sdCl9KSl9cmV0dXJuIHRoaXMuZGVsZWdhdGUubGlzdGVuKHQsZSxuKX19Y2xhc3MgQlAgZXh0ZW5kcyBkUHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodC5ib2R5LGUsbil9bmdPbkRlc3Ryb3koKXt0aGlzLmZsdXNoKCl9fUJQLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCUCkodnIoWl8pLHZyKHp4KSx2cihSTykpfSxCUC7JtXByb3Y9TW4oe3Rva2VuOkJQLGZhY3Rvcnk6QlAuybVmYWN9KSxCUC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6enh9LHt0eXBlOlJPfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCUCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp6eH0se3R5cGU6Uk99XX0pLG51bGwpO2NvbnN0IFZQPW5ldyBHYSgiQW5pbWF0aW9uTW9kdWxlVHlwZSIpLGpQPVt7cHJvdmlkZTp0eCx1c2VDbGFzczpSUH0se3Byb3ZpZGU6Uk8sdXNlRmFjdG9yeTpmdW5jdGlvbiBVUCgpe3JldHVybiBuZXcgQU99fSx7cHJvdmlkZTpkUCx1c2VDbGFzczpCUH0se3Byb3ZpZGU6X2csdXNlRmFjdG9yeTpmdW5jdGlvbiBHUCh0LGUsbil7cmV0dXJuIG5ldyBIUCh0LGUsbil9LGRlcHM6W2h2LGRQLGFfXX1dLFdQPVt7cHJvdmlkZTp6eCx1c2VGYWN0b3J5OmZ1bmN0aW9uIFlQKCl7cmV0dXJuKGZ1bmN0aW9uIHQoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgRVAoKX0pKCk/bmV3IERQOm5ldyB3UH19LHtwcm92aWRlOlZQLHVzZVZhbHVlOiJCcm93c2VyQW5pbWF0aW9ucyJ9LC4uLmpQXSxxUD1be3Byb3ZpZGU6engsdXNlQ2xhc3M6Tnh9LHtwcm92aWRlOlZQLHVzZVZhbHVlOiJOb29wQW5pbWF0aW9ucyJ9LC4uLmpQXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFpQe3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTpaUCxwcm92aWRlcnM6dC5kaXNhYmxlQW5pbWF0aW9ucz9xUDpXUH19fVpQLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaUCl9LFpQLsm1bW9kPWFvKHt0eXBlOlpQfSksWlAuybVpbmo9dm4oe3Byb3ZpZGVyczpXUCxpbXBvcnRzOltVdl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFpQLFt7dHlwZTpBeSxhcmdzOlt7ZXhwb3J0czpbVXZdLHByb3ZpZGVyczpXUH1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFpQLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1V2XX19KTtjbGFzcyBYUHt9WFAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhQKX0sWFAuybVtb2Q9YW8oe3R5cGU6WFB9KSxYUC7JtWluaj12bih7cHJvdmlkZXJzOnFQLGltcG9ydHM6W1V2XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWFAsW3t0eXBlOkF5LGFyZ3M6W3tleHBvcnRzOltVdl0scHJvdmlkZXJzOnFQfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oWFAse2V4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bVXZdfX0pO2NvbnN0IEtQPXt9O2Z1bmN0aW9uIEpQKHQsZSl7aWYoS1BbdF09KEtQW3RdfHwwKSsxLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJldHVybiBRUCh0LCgoLi4ubik9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKC4uLm4pKSx7dHlwZTp0fSkpKTtzd2l0Y2goZT9lLl9hczoiZW1wdHkiKXtjYXNlImVtcHR5IjpyZXR1cm4gUVAodCwoKCk9Pih7dHlwZTp0fSkpKTtjYXNlInByb3BzIjpyZXR1cm4gUVAodCwoZT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0eXBlOnR9KSkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNvbmZpZy4iKX19ZnVuY3Rpb24gUVAodCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInR5cGUiLHt2YWx1ZTp0LHdyaXRhYmxlOiExfSl9Y29uc3QgJFA9IkBuZ3J4L3N0b3JlL2luaXQiO2NsYXNzIHR3IGV4dGVuZHMgRntjb25zdHJ1Y3Rvcigpe3N1cGVyKHt0eXBlOiRQfSl9bmV4dCh0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJcbiAgICAgICAgRGlzcGF0Y2ggZXhwZWN0ZWQgYW4gb2JqZWN0LCBpbnN0ZWFkIGl0IHJlY2VpdmVkIGEgZnVuY3Rpb24uXG4gICAgICAgIElmIHlvdSdyZSB1c2luZyB0aGUgY3JlYXRlQWN0aW9uIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvblxuICAgICAgICBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIGFjdGlvbi4gRm9yIGV4YW1wbGUsIHNvbWVBY3Rpb24gc2hvdWxkIGJlIHNvbWVBY3Rpb24oKS4iKTtpZih2b2lkIDA9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBvYmplY3RzIik7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFjdGlvbnMgbXVzdCBoYXZlIGEgdHlwZSBwcm9wZXJ0eSIpO3N1cGVyLm5leHQodCl9Y29tcGxldGUoKXt9bmdPbkRlc3Ryb3koKXtzdXBlci5jb21wbGV0ZSgpfX10dy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dHcpfSx0dy7JtXByb3Y9TW4oe3Rva2VuOnR3LGZhY3Rvcnk6dHcuybVmYWN9KSx0dy5jdG9yUGFyYW1ldGVycz0oKT0+W10sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh0dyxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IGV3PVt0d10sbnc9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSb290IEd1YXJkIiksb3c9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBJbml0aWFsIFN0YXRlIiksaXc9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbml0aWFsIFN0YXRlIiksYXc9bmV3IEdhKCJAbmdyeC9zdG9yZSBSZWR1Y2VyIEZhY3RvcnkiKSxydz1uZXcgR2EoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlZHVjZXIgRmFjdG9yeSBQcm92aWRlciIpLHN3PW5ldyBHYSgiQG5ncngvc3RvcmUgSW5pdGlhbCBSZWR1Y2VycyIpLGx3PW5ldyBHYSgiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBSZWR1Y2VycyIpLGN3PW5ldyBHYSgiQG5ncngvc3RvcmUgU3RvcmUgRmVhdHVyZXMiKSxkdz1uZXcgR2EoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIFJlZHVjZXJzIikscHc9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIiksbXc9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIENvbmZpZ3MiKSx1dz1uZXcgR2EoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIEZlYXR1cmVzIiksZnc9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIFRva2VuIiksZ3c9bmV3IEdhKCJAbmdyeC9zdG9yZSBGZWF0dXJlIFJlZHVjZXJzIiksaHc9bmV3IEdhKCJAbmdyeC9zdG9yZSBVc2VyIFByb3ZpZGVkIE1ldGEgUmVkdWNlcnMiKSxidz1uZXcgR2EoIkBuZ3J4L3N0b3JlIE1ldGEgUmVkdWNlcnMiKSx5dz1uZXcgR2EoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlc29sdmVkIE1ldGEgUmVkdWNlcnMiKSxfdz1uZXcgR2EoIkBuZ3J4L3N0b3JlIFVzZXIgUnVudGltZSBDaGVja3MgQ29uZmlnIiksQ3c9bmV3IEdhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBVc2VyIFJ1bnRpbWUgQ2hlY2tzIENvbmZpZyIpLE13PW5ldyBHYSgiQG5ncngvc3RvcmUgSW50ZXJuYWwgUnVudGltZSBDaGVja3MiKSx2dz1uZXcgR2EoIkBuZ3J4L3N0b3JlIENoZWNrIGlmIEFjdGlvbiB0eXBlcyBhcmUgdW5pcXVlIik7ZnVuY3Rpb24geHcodCxlPXt9KXtjb25zdCBuPU9iamVjdC5rZXlzKHQpLG89e307Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IGk9bltlXTsiZnVuY3Rpb24iPT10eXBlb2YgdFtpXSYmKG9baV09dFtpXSl9Y29uc3QgaT1PYmplY3Qua2V5cyhvKTtyZXR1cm4gZnVuY3Rpb24gdChuLGEpe249dm9pZCAwPT09bj9lOm47bGV0IHI9ITE7Y29uc3Qgcz17fTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7Y29uc3QgZT1pW3RdLGw9bltlXSxjPSgwLG9bZV0pKGwsYSk7c1tlXT1jLHI9cnx8YyE9PWx9cmV0dXJuIHI/czpufX1mdW5jdGlvbiBPdyguLi50KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2NvbnN0IG49dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdC5zbGljZSgwLC0xKS5yZWR1Y2VSaWdodCgoKHQsZSk9PmUodCkpLG4oZSkpfX1mdW5jdGlvbiBQdyh0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wJiYodD1Pdy5hcHBseShudWxsLFsuLi5lLHRdKSksKGUsbik9Pntjb25zdCBvPXQoZSk7cmV0dXJuKHQsZSk9Pm8odD12b2lkIDA9PT10P246dCxlKX19Y2xhc3Mgd3cgZXh0ZW5kcyBEe31jbGFzcyBrdyBleHRlbmRzIHR3e31jbGFzcyBTdyBleHRlbmRzIEZ7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIobyhuLGUpKSx0aGlzLmRpc3BhdGNoZXI9dCx0aGlzLmluaXRpYWxTdGF0ZT1lLHRoaXMucmVkdWNlcnM9bix0aGlzLnJlZHVjZXJGYWN0b3J5PW99Z2V0IGN1cnJlbnRSZWR1Y2Vycygpe3JldHVybiB0aGlzLnJlZHVjZXJzfWFkZEZlYXR1cmUodCl7dGhpcy5hZGRGZWF0dXJlcyhbdF0pfWFkZEZlYXR1cmVzKHQpe2NvbnN0IGU9dC5yZWR1Y2UoKCh0LHtyZWR1Y2VyczplLHJlZHVjZXJGYWN0b3J5Om4sbWV0YVJlZHVjZXJzOm8saW5pdGlhbFN0YXRlOmksa2V5OmF9KT0+e2NvbnN0IHI9ImZ1bmN0aW9uIj09dHlwZW9mIGU/KGZ1bmN0aW9uIHModCl7Y29uc3QgZT1BcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD4wP093KC4uLnQpOnQ9PnQ7cmV0dXJuKHQsbik9Pih0PWUodCksKGUsbyk9PnQoZT12b2lkIDA9PT1lP246ZSxvKSl9KShvKShlLGkpOlB3KG4sbykoZSxpKTtyZXR1cm4gdFthXT1yLHR9KSx7fSk7dGhpcy5hZGRSZWR1Y2VycyhlKX1yZW1vdmVGZWF0dXJlKHQpe3RoaXMucmVtb3ZlRmVhdHVyZXMoW3RdKX1yZW1vdmVGZWF0dXJlcyh0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKHQubWFwKCh0PT50LmtleSkpKX1hZGRSZWR1Y2VyKHQsZSl7dGhpcy5hZGRSZWR1Y2Vycyh7W3RdOmV9KX1hZGRSZWR1Y2Vycyh0KXt0aGlzLnJlZHVjZXJzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnJlZHVjZXJzKSx0KSx0aGlzLnVwZGF0ZVJlZHVjZXJzKE9iamVjdC5rZXlzKHQpKX1yZW1vdmVSZWR1Y2VyKHQpe3RoaXMucmVtb3ZlUmVkdWNlcnMoW3RdKX1yZW1vdmVSZWR1Y2Vycyh0KXt0LmZvckVhY2goKHQ9Pnt0aGlzLnJlZHVjZXJzPShmdW5jdGlvbiBlKHQsbil7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcigodD0+dCE9PW4pKS5yZWR1Y2UoKChlLG4pPT5PYmplY3QuYXNzaWduKGUse1tuXTp0W25dfSkpLHt9KX0pKHRoaXMucmVkdWNlcnMsdCl9KSksdGhpcy51cGRhdGVSZWR1Y2Vycyh0KX11cGRhdGVSZWR1Y2Vycyh0KXt0aGlzLm5leHQodGhpcy5yZWR1Y2VyRmFjdG9yeSh0aGlzLnJlZHVjZXJzLHRoaXMuaW5pdGlhbFN0YXRlKSksdGhpcy5kaXNwYXRjaGVyLm5leHQoe3R5cGU6IkBuZ3J4L3N0b3JlL3VwZGF0ZS1yZWR1Y2VycyIsZmVhdHVyZXM6dH0pfW5nT25EZXN0cm95KCl7dGhpcy5jb21wbGV0ZSgpfX1Tdy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U3cpKHZyKGt3KSx2cihpdyksdnIoc3cpLHZyKGF3KSl9LFN3Lsm1cHJvdj1Nbih7dG9rZW46U3csZmFjdG9yeTpTdy7JtWZhY30pLFN3LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a3d9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltpd119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3N3XX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbYXddfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFN3LFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTprd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2l3XX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbc3ddfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlthd119XX1dfSksbnVsbCk7Y29uc3QgRHc9W1N3LHtwcm92aWRlOnd3LHVzZUV4aXN0aW5nOlN3fSx7cHJvdmlkZTprdyx1c2VFeGlzdGluZzp0d31dO2NsYXNzIEV3IGV4dGVuZHMgSXtuZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19RXcuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKEV3KSkpKG58fEV3KX19KSgpLEV3Lsm1cHJvdj1Nbih7dG9rZW46RXcsZmFjdG9yeTpFdy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRXcsW3t0eXBlOmltfV0sbnVsbCxudWxsKTtjb25zdCBSdz1bRXddO2NsYXNzIEF3IGV4dGVuZHMgRHt9Y2xhc3MgVHcgZXh0ZW5kcyBGe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKG8pO2NvbnN0IGk9dC5waXBlKChmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTApLFIoKGZ1bmN0aW9uKG4sbyl7bi5zdWJzY3JpYmUobmV3IFQobywoZnVuY3Rpb24obil7cmV0dXJuIG8uYWRkKHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ubmV4dChuKX0pLGUpKX0pLChmdW5jdGlvbigpe3JldHVybiBvLmFkZCh0LnNjaGVkdWxlKChmdW5jdGlvbigpe3JldHVybiBvLmNvbXBsZXRlKCl9KSxlKSl9KSwoZnVuY3Rpb24obil7cmV0dXJuIG8uYWRkKHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8uZXJyb3Iobil9KSxlKSl9KSkpfSkpfSkob3QpKS5waXBlKFZlKGUpKS5waXBlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIFIobWUodCxlLGFyZ3VtZW50cy5sZW5ndGg+PTIsITApKX0pKE53LHtzdGF0ZTpvfSkpO3RoaXMuc3RhdGVTdWJzY3JpcHRpb249aS5zdWJzY3JpYmUoKCh7c3RhdGU6dCxhY3Rpb246ZX0pPT57dGhpcy5uZXh0KHQpLG4ubmV4dChlKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIE53KHQ9e3N0YXRlOnZvaWQgMH0sW2Usbl0pe2NvbnN0e3N0YXRlOm99PXQ7cmV0dXJue3N0YXRlOm4obyxlKSxhY3Rpb246ZX19VHcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFR3KSh2cih0dyksdnIod3cpLHZyKEV3KSx2cihpdykpfSxUdy7JtXByb3Y9TW4oe3Rva2VuOlR3LGZhY3Rvcnk6VHcuybVmYWN9KSxUdy5JTklUPSRQLFR3LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dHd9LHt0eXBlOnd3fSx7dHlwZTpFd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2l3XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChUdyxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dHd9LHt0eXBlOnd3fSx7dHlwZTpFd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2l3XX1dfV19KSxudWxsKTtjb25zdCB6dz1bVHcse3Byb3ZpZGU6QXcsdXNlRXhpc3Rpbmc6VHd9XTtjbGFzcyBJdyBleHRlbmRzIER7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5hY3Rpb25zT2JzZXJ2ZXI9ZSx0aGlzLnJlZHVjZXJNYW5hZ2VyPW4sdGhpcy5zb3VyY2U9dH1zZWxlY3QodCwuLi5lKXtyZXR1cm4gRncuY2FsbChudWxsLHQsLi4uZSkodGhpcyl9bGlmdCh0KXtjb25zdCBlPW5ldyBJdyh0aGlzLHRoaXMuYWN0aW9uc09ic2VydmVyLHRoaXMucmVkdWNlck1hbmFnZXIpO3JldHVybiBlLm9wZXJhdG9yPXQsZX1kaXNwYXRjaCh0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5uZXh0KHQpfW5leHQodCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIubmV4dCh0KX1lcnJvcih0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5lcnJvcih0KX1jb21wbGV0ZSgpe3RoaXMuYWN0aW9uc09ic2VydmVyLmNvbXBsZXRlKCl9YWRkUmVkdWNlcih0LGUpe3RoaXMucmVkdWNlck1hbmFnZXIuYWRkUmVkdWNlcih0LGUpfXJlbW92ZVJlZHVjZXIodCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVSZWR1Y2VyKHQpfX1Jdy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SXcpKHZyKEF3KSx2cih0dyksdnIoU3cpKX0sSXcuybVwcm92PU1uKHt0b2tlbjpJdyxmYWN0b3J5Okl3Lsm1ZmFjfSksSXcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBd30se3R5cGU6dHd9LHt0eXBlOlN3fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChJdyxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXd9LHt0eXBlOnR3fSx7dHlwZTpTd31dfSksbnVsbCk7Y29uc3QgSHc9W0l3XTtmdW5jdGlvbiBGdyh0LGUsLi4ubil7cmV0dXJuIGZ1bmN0aW9uIG8oaSl7bGV0IGE7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtjb25zdCBvPVtlLC4uLm5dLmZpbHRlcihCb29sZWFuKTthPWkucGlwZSgoZnVuY3Rpb24gcigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj10Lmxlbmd0aDtpZigwPT09bil0aHJvdyBuZXcgRXJyb3IoImxpc3Qgb2YgcHJvcGVydGllcyBjYW5ub3QgYmUgZW1wdHkuIik7cmV0dXJuIEl0KChmdW5jdGlvbihlKXtmb3IodmFyIG89ZSxpPTA7aTxuO2krKyl7dmFyIGE9bnVsbD09bz92b2lkIDA6b1t0W2ldXTtpZih2b2lkIDA9PT1hKXJldHVybjtvPWF9cmV0dXJuIG99KSl9KSh0LC4uLm8pKX1lbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoYFVuZXhwZWN0ZWQgdHlwZSAnJHt0eXBlb2YgdH0nIGluIHNlbGVjdCBvcGVyYXRvciwgZXhwZWN0ZWQgJ3N0cmluZycgb3IgJ2Z1bmN0aW9uJ2ApO2E9aS5waXBlKEl0KChuPT50KG4sZSkpKSl9cmV0dXJuIGEucGlwZShNZSgpKX19Y29uc3QgTHc9Imh0dHBzOi8vbmdyeC5pby9ndWlkZS9zdG9yZS9jb25maWd1cmF0aW9uL3J1bnRpbWUtY2hlY2tzIjtmdW5jdGlvbiBCdyh0KXtyZXR1cm4gdm9pZCAwPT09dH1mdW5jdGlvbiBWdyh0KXtyZXR1cm4gbnVsbD09PXR9ZnVuY3Rpb24gancodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCl9ZnVuY3Rpb24gVXcodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dH1mdW5jdGlvbiBHdyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1mdW5jdGlvbiBXdyh0LGUpe3JldHVybiB0PT09ZX1mdW5jdGlvbiBZdyh0LGUsbil7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspaWYoIW4odFtvXSxlW29dKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBxdyh0LGU9V3csbj1Xdyl7bGV0IG8saT1udWxsLGE9bnVsbDtyZXR1cm57bWVtb2l6ZWQ6ZnVuY3Rpb24gcigpe2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8ucmVzdWx0O2lmKCFpKXJldHVybiBhPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpLGk9YXJndW1lbnRzLGE7aWYoIVl3KGFyZ3VtZW50cyxpLGUpKXJldHVybiBhO2NvbnN0IHI9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIGk9YXJndW1lbnRzLG4oYSxyKT9hOihhPXIscil9LHJlc2V0OmZ1bmN0aW9uIHMoKXtpPW51bGwsYT1udWxsfSxzZXRSZXN1bHQ6ZnVuY3Rpb24gbCh0KXtvPXtyZXN1bHQ6dH19LGNsZWFyUmVzdWx0OmZ1bmN0aW9uIGMoKXtvPXZvaWQgMH19fWZ1bmN0aW9uIFp3KC4uLnQpe3JldHVybihmdW5jdGlvbiBlKHQsbj17c3RhdGVGbjpYd30pe3JldHVybiBmdW5jdGlvbiguLi5lKXtsZXQgbz1lO2lmKEFycmF5LmlzQXJyYXkob1swXSkpe2NvbnN0W3QsLi4uZV09bztvPVsuLi50LC4uLmVdfWNvbnN0IGk9by5zbGljZSgwLG8ubGVuZ3RoLTEpLGE9b1tvLmxlbmd0aC0xXSxyPWkuZmlsdGVyKCh0PT50LnJlbGVhc2UmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbGVhc2UpKSxzPXQoKGZ1bmN0aW9uKC4uLnQpe3JldHVybiBhLmFwcGx5KG51bGwsdCl9KSksbD1xdygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zdGF0ZUZuLmFwcGx5KG51bGwsW3QsaSxlLHNdKX0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihsLm1lbW9pemVkLHtyZWxlYXNlOmZ1bmN0aW9uIGMoKXtsLnJlc2V0KCkscy5yZXNldCgpLHIuZm9yRWFjaCgodD0+dC5yZWxlYXNlKCkpKX0scHJvamVjdG9yOnMubWVtb2l6ZWQsc2V0UmVzdWx0Omwuc2V0UmVzdWx0LGNsZWFyUmVzdWx0OmwuY2xlYXJSZXN1bHR9KX19KShxdykoLi4udCl9ZnVuY3Rpb24gWHcodCxlLG4sbyl7aWYodm9pZCAwPT09bil7Y29uc3Qgbj1lLm1hcCgoZT0+ZSh0KSkpO3JldHVybiBvLm1lbW9pemVkLmFwcGx5KG51bGwsbil9Y29uc3QgaT1lLm1hcCgoZT0+ZSh0LG4pKSk7cmV0dXJuIG8ubWVtb2l6ZWQuYXBwbHkobnVsbCxbLi4uaSxuXSl9ZnVuY3Rpb24gS3codCl7cmV0dXJuIFp3KChlPT57Y29uc3Qgbj1lW3RdO3JldHVybiB5XygpJiYhKHQgaW4gZSkmJmNvbnNvbGUud2FybihgQG5ncngvc3RvcmU6IFRoZSBmZWF0dXJlIG5hbWUgIiR7dH0iIGRvZXMgbm90IGV4aXN0IGluIHRoZSBzdGF0ZSwgdGhlcmVmb3JlIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciBjYW5ub3QgYWNjZXNzIGl0LiAgQmUgc3VyZSBpdCBpcyBpbXBvcnRlZCBpbiBhIGxvYWRlZCBtb2R1bGUgdXNpbmcgU3RvcmVNb2R1bGUuZm9yUm9vdCgnJHt0fScsIC4uLikgb3IgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgnJHt0fScsIC4uLikuICBJZiB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBpbnRlbmRlZCB0byBiZSB1bmRlZmluZWQsIGFzIGlzIHRoZSBjYXNlIHdpdGggcm91dGVyIHN0YXRlLCB0aGlzIGRldmVsb3BtZW50LW9ubHkgd2FybmluZyBtZXNzYWdlIGNhbiBiZSBpZ25vcmVkLmApLG59KSwodD0+dCkpfWZ1bmN0aW9uIEp3KHQpe09iamVjdC5mcmVlemUodCk7Y29uc3QgZT1Hdyh0KTtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaCgobj0+e2lmKCFuLnN0YXJ0c1dpdGgoIsm1IikmJihmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfSkodCxuKSYmKCFlfHwiY2FsbGVyIiE9PW4mJiJjYWxsZWUiIT09biYmImFyZ3VtZW50cyIhPT1uKSl7Y29uc3QgZT10W25dOyFVdyhlKSYmIUd3KGUpfHxPYmplY3QuaXNGcm96ZW4oZSl8fEp3KGUpfX0pKSx0fWZ1bmN0aW9uIFF3KHQsZT1bXSl7cmV0dXJuKEJ3KHQpfHxWdyh0KSkmJjA9PT1lLmxlbmd0aD97cGF0aDpbInJvb3QiXSx2YWx1ZTp0fTpPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKChuLG8pPT57aWYobilyZXR1cm4gbjtjb25zdCBpPXRbb107cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIEd3KHQpJiZ0Lmhhc093blByb3BlcnR5KCLJtWNtcCIpfSkoaSk/bjohKEJ3KGkpfHxWdyhpKXx8KGZ1bmN0aW9uIHIodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fSkoaSl8fChmdW5jdGlvbiBzKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHR9KShpKXx8KGZ1bmN0aW9uIGwodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fSkoaSl8fGp3KGkpKSYmKChmdW5jdGlvbiBjKHQpe2lmKCEoZnVuY3Rpb24gZSh0KXtyZXR1cm4gVXcodCkmJiFqdyh0KX0pKHQpKXJldHVybiExO2NvbnN0IG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO3JldHVybiBuPT09T2JqZWN0LnByb3RvdHlwZXx8bnVsbD09PW59KShpKT9RdyhpLFsuLi5lLG9dKTp7cGF0aDpbLi4uZSxvXSx2YWx1ZTppfSl9KSwhMSl9ZnVuY3Rpb24gJHcodCxlKXtpZighMT09PXQpcmV0dXJuO2NvbnN0IG49dC5wYXRoLmpvaW4oIi4iKSxvPW5ldyBFcnJvcihgRGV0ZWN0ZWQgdW5zZXJpYWxpemFibGUgJHtlfSBhdCAiJHtufSIuICR7THd9I3N0cmljdCR7ZX1zZXJpYWxpemFiaWxpdHlgKTt0aHJvdyBvLnZhbHVlPXQudmFsdWUsby51bnNlcmlhbGl6YWJsZVBhdGg9bixvfWZ1bmN0aW9uIHRrKHQpe3JldHVybiB5XygpP09iamVjdC5hc3NpZ24oe3N0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uV2l0aGluTmdab25lOiExLHN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzOiExfSx0KTp7c3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiExLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6ITEsc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3M6ITF9fWZ1bmN0aW9uIGVrKHtzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6dCxzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTplfSl7cmV0dXJuIG49PnR8fGU/KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvKXtlLmFjdGlvbihvKSYmJHcoUXcobyksImFjdGlvbiIpO2NvbnN0IGk9dChuLG8pO3JldHVybiBlLnN0YXRlKCkmJiR3KFF3KGkpLCJzdGF0ZSIpLGl9fSkobix7YWN0aW9uOmU9PnQmJiFvayhlKSxzdGF0ZTooKT0+ZX0pOm59ZnVuY3Rpb24gbmsoe3N0cmljdEFjdGlvbkltbXV0YWJpbGl0eTp0LHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OmV9KXtyZXR1cm4gbj0+dHx8ZT8oZnVuY3Rpb24gbyh0LGUpe3JldHVybiBmdW5jdGlvbihuLG8pe2NvbnN0IGk9ZS5hY3Rpb24obyk/Sncobyk6byxhPXQobixpKTtyZXR1cm4gZS5zdGF0ZSgpP0p3KGEpOmF9fSkobix7YWN0aW9uOmU9PnQmJiFvayhlKSxzdGF0ZTooKT0+ZX0pOm59ZnVuY3Rpb24gb2sodCl7cmV0dXJuIHQudHlwZS5zdGFydHNXaXRoKCJAbmdyeCIpfWZ1bmN0aW9uIGlrKHtzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6dH0pe3JldHVybiBlPT50PyhmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7aWYoZS5hY3Rpb24obykmJiFhXy5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoYEFjdGlvbiAnJHtvLnR5cGV9JyBydW5uaW5nIG91dHNpZGUgTmdab25lLiAke0x3fSNzdHJpY3RhY3Rpb253aXRoaW5uZ3pvbmVgKTtyZXR1cm4gdChuLG8pfX0pKGUse2FjdGlvbjplPT50JiYhb2soZSl9KTplfWZ1bmN0aW9uIGFrKCl7cmV0dXJuW3twcm92aWRlOnZ3LG11bHRpOiEwLGRlcHM6W013XSx1c2VGYWN0b3J5OnNrfV19ZnVuY3Rpb24gcmsodCl7cmV0dXJuIHR9ZnVuY3Rpb24gc2sodCl7aWYoIXQuc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3MpcmV0dXJuO2NvbnN0IGU9T2JqZWN0LmVudHJpZXMoS1ApLmZpbHRlcigoKFssdF0pPT50PjEpKS5tYXAoKChbdF0pPT50KSk7aWYoZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBBY3Rpb24gdHlwZXMgYXJlIHJlZ2lzdGVyZWQgbW9yZSB0aGFuIG9uY2UsICR7ZS5tYXAoKHQ9PmAiJHt0fSJgKSkuam9pbigiLCAiKX0uICR7THd9I3N0cmljdGFjdGlvbnR5cGV1bmlxdWVuZXNzYCl9Y2xhc3MgbGt7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe319bGsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxrKSh2cih0dyksdnIod3cpLHZyKEV3KSx2cihJdyksdnIobncsOCksdnIodncsOCkpfSxsay7JtW1vZD1hbyh7dHlwZTpsa30pLGxrLsm1aW5qPXZuKHt9KSxsay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnR3fSx7dHlwZTp3d30se3R5cGU6RXd9LHt0eXBlOkl3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W253XX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3Z3XX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsayxbe3R5cGU6QXksYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnR3fSx7dHlwZTp3d30se3R5cGU6RXd9LHt0eXBlOkl3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W253XX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3Z3XX1dfV19KSxudWxsKTtjbGFzcyBja3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3RoaXMuZmVhdHVyZXM9dCx0aGlzLmZlYXR1cmVSZWR1Y2Vycz1lLHRoaXMucmVkdWNlck1hbmFnZXI9bjtjb25zdCBhPXQubWFwKCgodCxuKT0+e2NvbnN0IG89ZS5zaGlmdCgpW25dO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3JlZHVjZXJzOm8saW5pdGlhbFN0YXRlOmZrKHQuaW5pdGlhbFN0YXRlKX0pfSkpO24uYWRkRmVhdHVyZXMoYSl9bmdPbkRlc3Ryb3koKXt0aGlzLnJlZHVjZXJNYW5hZ2VyLnJlbW92ZUZlYXR1cmVzKHRoaXMuZmVhdHVyZXMpfX1jay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y2spKHZyKHV3KSx2cihndyksdnIoU3cpLHZyKGxrKSx2cih2dyw4KSl9LGNrLsm1bW9kPWFvKHt0eXBlOmNrfSksY2suybVpbmo9dm4oe30pLGNrLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbdXddfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2d3XX1dfSx7dHlwZTpTd30se3R5cGU6bGt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbdnddfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGNrLFt7dHlwZTpBeSxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbdXddfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2d3XX1dfSx7dHlwZTpTd30se3R5cGU6bGt9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbdnddfV19XX0pLG51bGwpO2NsYXNzIGRre3N0YXRpYyBmb3JSb290KHQsZT17fSl7cmV0dXJue25nTW9kdWxlOmxrLHByb3ZpZGVyczpbe3Byb3ZpZGU6bncsdXNlRmFjdG9yeTpoayxkZXBzOltbSXcsbmV3IFNyLG5ldyBFcl1dfSx7cHJvdmlkZTpvdyx1c2VWYWx1ZTplLmluaXRpYWxTdGF0ZX0se3Byb3ZpZGU6aXcsdXNlRmFjdG9yeTpmayxkZXBzOltvd119LHtwcm92aWRlOmx3LHVzZVZhbHVlOnR9LHtwcm92aWRlOmR3LHVzZUV4aXN0aW5nOnQgaW5zdGFuY2VvZiBHYT90Omx3fSx7cHJvdmlkZTpzdyxkZXBzOltycCxsdyxbbmV3IGtyKGR3KV1dLHVzZUZhY3Rvcnk6cGt9LHtwcm92aWRlOmh3LHVzZVZhbHVlOmUubWV0YVJlZHVjZXJzP2UubWV0YVJlZHVjZXJzOltdfSx7cHJvdmlkZTp5dyxkZXBzOltidyxod10sdXNlRmFjdG9yeTpna30se3Byb3ZpZGU6cncsdXNlVmFsdWU6ZS5yZWR1Y2VyRmFjdG9yeT9lLnJlZHVjZXJGYWN0b3J5Onh3fSx7cHJvdmlkZTphdyxkZXBzOltydyx5d10sdXNlRmFjdG9yeTpQd30sZXcsRHcsUncsencsSHcsKG49ZS5ydW50aW1lQ2hlY2tzLFt7cHJvdmlkZTpDdyx1c2VWYWx1ZTpufSx7cHJvdmlkZTpfdyx1c2VGYWN0b3J5OnJrLGRlcHM6W0N3XX0se3Byb3ZpZGU6TXcsZGVwczpbX3ddLHVzZUZhY3Rvcnk6dGt9LHtwcm92aWRlOmJ3LG11bHRpOiEwLGRlcHM6W013XSx1c2VGYWN0b3J5Om5rfSx7cHJvdmlkZTpidyxtdWx0aTohMCxkZXBzOltNd10sdXNlRmFjdG9yeTpla30se3Byb3ZpZGU6YncsbXVsdGk6ITAsZGVwczpbTXddLHVzZUZhY3Rvcnk6aWt9XSksYWsoKV19O3ZhciBufXN0YXRpYyBmb3JGZWF0dXJlKHQsZSxuPXt9KXtyZXR1cm57bmdNb2R1bGU6Y2sscHJvdmlkZXJzOlt7cHJvdmlkZTptdyxtdWx0aTohMCx1c2VWYWx1ZTp0IGluc3RhbmNlb2YgT2JqZWN0P3t9Om59LHtwcm92aWRlOmN3LG11bHRpOiEwLHVzZVZhbHVlOntrZXk6dCBpbnN0YW5jZW9mIE9iamVjdD90Lm5hbWU6dCxyZWR1Y2VyRmFjdG9yeTpuIGluc3RhbmNlb2YgR2F8fCFuLnJlZHVjZXJGYWN0b3J5P3h3Om4ucmVkdWNlckZhY3RvcnksbWV0YVJlZHVjZXJzOm4gaW5zdGFuY2VvZiBHYXx8IW4ubWV0YVJlZHVjZXJzP1tdOm4ubWV0YVJlZHVjZXJzLGluaXRpYWxTdGF0ZTpuIGluc3RhbmNlb2YgR2F8fCFuLmluaXRpYWxTdGF0ZT92b2lkIDA6bi5pbml0aWFsU3RhdGV9fSx7cHJvdmlkZTp1dyxkZXBzOltycCxtdyxjd10sdXNlRmFjdG9yeTpta30se3Byb3ZpZGU6cHcsbXVsdGk6ITAsdXNlVmFsdWU6dCBpbnN0YW5jZW9mIE9iamVjdD90LnJlZHVjZXI6ZX0se3Byb3ZpZGU6ZncsbXVsdGk6ITAsdXNlRXhpc3Rpbmc6ZSBpbnN0YW5jZW9mIEdhP2U6cHd9LHtwcm92aWRlOmd3LG11bHRpOiEwLGRlcHM6W3JwLHB3LFtuZXcga3IoZncpXV0sdXNlRmFjdG9yeTp1a30sYWsoKV19fX1mdW5jdGlvbiBwayh0LGUpe3JldHVybiBlIGluc3RhbmNlb2YgR2E/dC5nZXQoZSk6ZX1mdW5jdGlvbiBtayh0LGUsbil7cmV0dXJuIG4ubWFwKCgobixvKT0+e2lmKGVbb11pbnN0YW5jZW9mIEdhKXtjb25zdCBpPXQuZ2V0KGVbb10pO3JldHVybntrZXk6bi5rZXkscmVkdWNlckZhY3Rvcnk6aS5yZWR1Y2VyRmFjdG9yeT9pLnJlZHVjZXJGYWN0b3J5Onh3LG1ldGFSZWR1Y2VyczppLm1ldGFSZWR1Y2Vycz9pLm1ldGFSZWR1Y2VyczpbXSxpbml0aWFsU3RhdGU6aS5pbml0aWFsU3RhdGV9fXJldHVybiBufSkpfWZ1bmN0aW9uIHVrKHQsZSl7cmV0dXJuIGUubWFwKChlPT5lIGluc3RhbmNlb2YgR2E/dC5nZXQoZSk6ZSkpfWZ1bmN0aW9uIGZrKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoKTp0fWZ1bmN0aW9uIGdrKHQsZSl7cmV0dXJuIHQuY29uY2F0KGUpfWZ1bmN0aW9uIGhrKHQpe2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3RvcmVNb2R1bGUuZm9yUm9vdCgpIGNhbGxlZCB0d2ljZS4gRmVhdHVyZSBtb2R1bGVzIHNob3VsZCB1c2UgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgpIGluc3RlYWQuIik7cmV0dXJuImd1YXJkZWQifWZ1bmN0aW9uIGJrKC4uLnQpe3JldHVybntyZWR1Y2VyOnQucG9wKCksdHlwZXM6dC5tYXAoKHQ9PnQudHlwZSkpfX1mdW5jdGlvbiB5ayh0LC4uLmUpe2NvbnN0IG49bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBlKWZvcihjb25zdCBlIG9mIHQudHlwZXMpe2NvbnN0IG89bi5nZXQoZSk7bi5zZXQoZSxvPyhlLG4pPT50LnJlZHVjZXIobyhlLG4pLG4pOnQucmVkdWNlcil9cmV0dXJuIGZ1bmN0aW9uKGU9dCxvKXtjb25zdCBpPW4uZ2V0KG8udHlwZSk7cmV0dXJuIGk/aShlLG8pOmV9fWRrLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkayl9LGRrLsm1bW9kPWFvKHt0eXBlOmRrfSksZGsuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZGssW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgX2s9e2Rpc3BhdGNoOiEwLHVzZUVmZmVjdHNFcnJvckhhbmRsZXI6ITB9LENrPSJfX0BuZ3J4L2VmZmVjdHNfY3JlYXRlX18iO2Z1bmN0aW9uIE1rKHQsZSl7Y29uc3Qgbj10KCksbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sX2spLGUpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkobixDayx7dmFsdWU6b30pLG59ZnVuY3Rpb24gdmsodCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcigoZT0+ISghdFtlXXx8IXRbZV0uaGFzT3duUHJvcGVydHkoQ2spKSYmdFtlXVtDa10uaGFzT3duUHJvcGVydHkoImRpc3BhdGNoIikpKS5tYXAoKGU9Pk9iamVjdC5hc3NpZ24oe3Byb3BlcnR5TmFtZTplfSx0W2VdW0NrXSkpKX1mdW5jdGlvbiB4ayh0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfWNvbnN0IE9rPSJfX0BuZ3J4L2VmZmVjdHNfXyI7ZnVuY3Rpb24gUGsodCl7cmV0dXJuIE93KHdrLHhrKSh0KX1mdW5jdGlvbiB3ayh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eShPayl9KSh0KT90LmNvbnN0cnVjdG9yW09rXTpbXX1mdW5jdGlvbiBrayh0LGUsbj0xMCl7cmV0dXJuIHQucGlwZShwZSgobz0+KGUmJmUuaGFuZGxlRXJyb3Iobyksbjw9MT90OmtrKHQsZSxuLTEpKSkpKX1jbGFzcyBTayBleHRlbmRzIER7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0JiYodGhpcy5zb3VyY2U9dCl9bGlmdCh0KXtjb25zdCBlPW5ldyBTaztyZXR1cm4gZS5zb3VyY2U9dGhpcyxlLm9wZXJhdG9yPXQsZX19ZnVuY3Rpb24gRGsoLi4udCl7cmV0dXJuIGNlKChlPT50LnNvbWUoKHQ9PiJzdHJpbmciPT10eXBlb2YgdD90PT09ZS50eXBlOnQudHlwZT09PWUudHlwZSkpKSl9ZnVuY3Rpb24gRWsodCl7cmV0dXJuIFJrKHQsIm5ncnhPbkluaXRFZmZlY3RzIil9ZnVuY3Rpb24gUmsodCxlKXtyZXR1cm4gdCYmZSBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtlXX1Tay7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U2spKHZyKEV3KSl9LFNrLsm1cHJvdj1Nbih7dG9rZW46U2ssZmFjdG9yeTpTay7JtWZhY30pLFNrLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltFd119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoU2ssW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkQsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbRXddfV19XX0pLG51bGwpO2NvbnN0IEFrPW5ldyBHYSgiQG5ncngvZWZmZWN0cyBJbnRlcm5hbCBSb290IEd1YXJkIiksVGs9bmV3IEdhKCJAbmdyeC9lZmZlY3RzIFVzZXIgUHJvdmlkZWQgRWZmZWN0cyIpLE5rPW5ldyBHYSgiQG5ncngvZWZmZWN0cyBJbnRlcm5hbCBSb290IEVmZmVjdHMiKSx6az1uZXcgR2EoIkBuZ3J4L2VmZmVjdHMgUm9vdCBFZmZlY3RzIiksSWs9bmV3IEdhKCJAbmdyeC9lZmZlY3RzIEludGVybmFsIEZlYXR1cmUgRWZmZWN0cyIpLEhrPW5ldyBHYSgiQG5ncngvZWZmZWN0cyBGZWF0dXJlIEVmZmVjdHMiKSxGaz1uZXcgR2EoIkBuZ3J4L2VmZmVjdHMgRWZmZWN0cyBFcnJvciBIYW5kbGVyIik7Y2xhc3MgTGsgZXh0ZW5kcyBJe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmVycm9ySGFuZGxlcj10LHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcj1lfWFkZEVmZmVjdHModCl7dGhpcy5uZXh0KHQpfXRvQWN0aW9ucygpe3JldHVybiB0aGlzLnBpcGUod2UoeGspLFp0KCh0PT50LnBpcGUod2UoQmspKSkpLFp0KCh0PT5yZSh0LnBpcGUoUGUoKHQ9PihmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGU9Pntjb25zdCBvPShmdW5jdGlvbiBpKHQsZSxuKXtjb25zdCBvPXhrKHQpLmNvbnN0cnVjdG9yLm5hbWU7cmV0dXJuIHJlKC4uLihmdW5jdGlvbiBpKHQpe3JldHVybltQayx2a10ucmVkdWNlKCgoZSxuKT0+ZS5jb25jYXQobih0KSkpLFtdKX0pKHQpLm1hcCgoKHtwcm9wZXJ0eU5hbWU6aSxkaXNwYXRjaDphLHVzZUVmZmVjdHNFcnJvckhhbmRsZXI6cn0pPT57Y29uc3Qgcz0iZnVuY3Rpb24iPT10eXBlb2YgdFtpXT90W2ldKCk6dFtpXSxsPXI/bihzLGUpOnM7cmV0dXJuITE9PT1hP2wucGlwZSh5ZSgpKTpsLnBpcGUoKGZ1bmN0aW9uIGMoKXtyZXR1cm4gUigoZnVuY3Rpb24odCxlKXt0LnN1YnNjcmliZShuZXcgVChlLChmdW5jdGlvbih0KXtlLm5leHQoQXQuY3JlYXRlTmV4dCh0KSl9KSwoZnVuY3Rpb24oKXtlLm5leHQoQXQuY3JlYXRlQ29tcGxldGUoKSksZS5jb21wbGV0ZSgpfSksKGZ1bmN0aW9uKHQpe2UubmV4dChBdC5jcmVhdGVFcnJvcih0KSksZS5jb21wbGV0ZSgpfSkpKX0pKX0pKCkpLnBpcGUoSXQoKGU9Pih7ZWZmZWN0OnRbaV0sbm90aWZpY2F0aW9uOmUscHJvcGVydHlOYW1lOmksc291cmNlTmFtZTpvLHNvdXJjZUluc3RhbmNlOnR9KSkpKX0pKSl9KShlLHQsbik7cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIFJrKHQsIm5ncnhPblJ1bkVmZmVjdHMiKX0pKGUpP2UubmdyeE9uUnVuRWZmZWN0cyhvKTpvfX0pKHRoaXMuZXJyb3JIYW5kbGVyLHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcikodCkpKSxJdCgodD0+KChmdW5jdGlvbiBlKHQsbil7aWYoIk4iPT09dC5ub3RpZmljYXRpb24ua2luZCl7Y29uc3QgZT10Lm5vdGlmaWNhdGlvbi52YWx1ZTshKGZ1bmN0aW9uIG8odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJnQmJnQudHlwZSYmInN0cmluZyI9PXR5cGVvZiB0LnR5cGV9KShlKSYmbi5oYW5kbGVFcnJvcihuZXcgRXJyb3IoYEVmZmVjdCAkeyhmdW5jdGlvbiBpKHtwcm9wZXJ0eU5hbWU6dCxzb3VyY2VJbnN0YW5jZTplLHNvdXJjZU5hbWU6bn0pe2NvbnN0IG89ImZ1bmN0aW9uIj09dHlwZW9mIGVbdF07cmV0dXJuYCIke259LiR7U3RyaW5nKHQpfSR7bz8iKCkiOiIifSJgfSkodCl9IGRpc3BhdGNoZWQgYW4gaW52YWxpZCBhY3Rpb246ICR7KGZ1bmN0aW9uIGEodCl7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1jYXRjaChlKXtyZXR1cm4gdH19KShlKX1gKSl9fSkodCx0aGlzLmVycm9ySGFuZGxlciksdC5ub3RpZmljYXRpb24pKSksY2UoKHQ9PiJOIj09PXQua2luZCYmbnVsbCE9dC52YWx1ZSkpLChmdW5jdGlvbiBlKCl7cmV0dXJuIFIoKGZ1bmN0aW9uKHQsZSl7dC5zdWJzY3JpYmUobmV3IFQoZSwoZnVuY3Rpb24odCl7cmV0dXJuIFR0KHQsZSl9KSkpfSkpfSkoKSksdC5waXBlKGJlKDEpLGNlKEVrKSxJdCgodD0+dC5uZ3J4T25Jbml0RWZmZWN0cygpKSkpKSkpKX19ZnVuY3Rpb24gQmsodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIFJrKHQsIm5ncnhPbklkZW50aWZ5RWZmZWN0cyIpfSkodCk/dC5uZ3J4T25JZGVudGlmeUVmZmVjdHMoKToiIn1May7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TGspKHZyKFpzKSx2cihGaykpfSxMay7JtXByb3Y9TW4oe3Rva2VuOkxrLGZhY3Rvcnk6TGsuybVmYWN9KSxMay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlpzfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbRmtdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKExrLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpac30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0ZrXX1dfV19KSxudWxsKTtjbGFzcyBWa3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZWZmZWN0U291cmNlcz10LHRoaXMuc3RvcmU9ZSx0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249bnVsbH1zdGFydCgpe3RoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbnx8KHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj10aGlzLmVmZmVjdFNvdXJjZXMudG9BY3Rpb25zKCkuc3Vic2NyaWJlKHRoaXMuc3RvcmUpKX1uZ09uRGVzdHJveSgpe3RoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbiYmKHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj1udWxsKX19VmsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZrKSh2cihMayksdnIoSXcpKX0sVmsuybVwcm92PU1uKHt0b2tlbjpWayxmYWN0b3J5OlZrLsm1ZmFjfSksVmsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMa30se3R5cGU6SXd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFZrLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMa30se3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IGprPSJAbmdyeC9lZmZlY3RzL2luaXQiO0pQKGprKTtjbGFzcyBVa3tjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXt0aGlzLnNvdXJjZXM9dCxlLnN0YXJ0KCksby5mb3JFYWNoKChlPT50LmFkZEVmZmVjdHMoZSkpKSxuLmRpc3BhdGNoKHt0eXBlOmprfSl9YWRkRWZmZWN0cyh0KXt0aGlzLnNvdXJjZXMuYWRkRWZmZWN0cyh0KX19VWsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVrKSh2cihMayksdnIoVmspLHZyKEl3KSx2cih6ayksdnIobGssOCksdnIoY2ssOCksdnIoQWssOCkpfSxVay7JtW1vZD1hbyh7dHlwZTpVa30pLFVrLsm1aW5qPXZuKHt9KSxVay5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkxrfSx7dHlwZTpWa30se3R5cGU6SXd9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3prXX1dfSx7dHlwZTpsayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpjayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W0FrXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVayxbe3R5cGU6QXksYXJnczpbe31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkxrfSx7dHlwZTpWa30se3R5cGU6SXd9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3prXX1dfSx7dHlwZTpsayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpjayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W0FrXX1dfV19KSxudWxsKTtjbGFzcyBHa3tjb25zdHJ1Y3Rvcih0LGUsbixvKXtlLmZvckVhY2goKGU9PmUuZm9yRWFjaCgoZT0+dC5hZGRFZmZlY3RzKGUpKSkpKX19R2suybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdrKSh2cihVayksdnIoSGspLHZyKGxrLDgpLHZyKGNrLDgpKX0sR2suybVtb2Q9YW8oe3R5cGU6R2t9KSxHay7JtWluaj12bih7fSksR2suY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpVa30se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSGtdfV19LHt0eXBlOmxrLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOmNrLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEdrLFt7dHlwZTpBeSxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWt9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0hrXX1dfSx7dHlwZTpsayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpjayxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV19KSxudWxsKTtjbGFzcyBXa3tzdGF0aWMgZm9yRmVhdHVyZSh0PVtdKXtyZXR1cm57bmdNb2R1bGU6R2sscHJvdmlkZXJzOlt0LHtwcm92aWRlOklrLG11bHRpOiEwLHVzZVZhbHVlOnR9LHtwcm92aWRlOlRrLG11bHRpOiEwLHVzZVZhbHVlOltdfSx7cHJvdmlkZTpIayxtdWx0aTohMCx1c2VGYWN0b3J5OllrLGRlcHM6W3JwLElrLFRrXX1dfX1zdGF0aWMgZm9yUm9vdCh0PVtdKXtyZXR1cm57bmdNb2R1bGU6VWsscHJvdmlkZXJzOlt7cHJvdmlkZTpGayx1c2VWYWx1ZTpra30sVmssTGssU2ssdCx7cHJvdmlkZTpOayx1c2VWYWx1ZTpbdF19LHtwcm92aWRlOkFrLHVzZUZhY3Rvcnk6cWssZGVwczpbW1ZrLG5ldyBTcixuZXcgRXJdLFtOayxuZXcgRHJdXX0se3Byb3ZpZGU6VGssbXVsdGk6ITAsdXNlVmFsdWU6W119LHtwcm92aWRlOnprLHVzZUZhY3Rvcnk6WWssZGVwczpbcnAsTmssVGtdfV19fX1mdW5jdGlvbiBZayh0LGUsbil7Y29uc3Qgbz1bXTtmb3IoY29uc3QgdCBvZiBlKW8ucHVzaCguLi50KTtmb3IoY29uc3QgdCBvZiBuKW8ucHVzaCguLi50KTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBlLm1hcCgoZT0+dC5nZXQoZSkpKX0pKHQsbyl9ZnVuY3Rpb24gcWsodCxlKXtpZigoMSE9PWUubGVuZ3RofHwwIT09ZVswXS5sZW5ndGgpJiZ0KXRocm93IG5ldyBUeXBlRXJyb3IoIkVmZmVjdHNNb2R1bGUuZm9yUm9vdCgpIGNhbGxlZCB0d2ljZS4gRmVhdHVyZSBtb2R1bGVzIHNob3VsZCB1c2UgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9dmFyIFprO1drLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXayl9LFdrLsm1bW9kPWFvKHt0eXBlOldrfSksV2suybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoV2ssW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLG51bGwsbnVsbCksKGZ1bmN0aW9uKHQpe3RbdC5VTktOT1dOPTBdPSJVTktOT1dOIix0W3QuRVhQRVJJTUVOVFM9MV09IkVYUEVSSU1FTlRTIix0W3QuRVhQRVJJTUVOVD0yXT0iRVhQRVJJTUVOVCIsdFt0LkNPTVBBUkVfRVhQRVJJTUVOVD0zXT0iQ09NUEFSRV9FWFBFUklNRU5UIix0W3QuTk9UX1NFVD00XT0iTk9UX1NFVCJ9KShaa3x8KFprPXt9KSk7Y29uc3QgWGs9ImRlZmF1bHRFeHBlcmltZW50SWQiO2Z1bmN0aW9uIEtrKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIjoiKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2NvbnN0IG49dC5zbGljZSgwLGUpLG89dC5zbGljZShlKzEpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgRXhwZWN0IGlkIHRvIGJlIG5vbi1mYWxzeTogJHt0fWApO3JldHVybntuYW1lOm4saWQ6b319KSl9ZnVuY3Rpb24gSmsodCxlKXtzd2l0Y2godCl7Y2FzZSBaay5FWFBFUklNRU5UOnJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZXhwZXJpbWVudElkIik/W2UuZXhwZXJpbWVudElkXTpbWGtdO2Nhc2UgWmsuQ09NUEFSRV9FWFBFUklNRU5UOnJldHVybiBLayhlLmV4cGVyaW1lbnRJZHMpLm1hcCgoKHtpZDp0fSk9PnQpKTtjYXNlIFprLkVYUEVSSU1FTlRTOmRlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFFrKHQsZSl7dmFyIG47c3dpdGNoKHQpe2Nhc2UgWmsuQ09NUEFSRV9FWFBFUklNRU5UOmNhc2UgWmsuRVhQRVJJTUVOVDp7Y29uc3Qgbz1udWxsIT09KG49SmsodCxlKSkmJnZvaWQgMCE9PW4/bjpbXTtyZXR1cm4gby5zb3J0KCksYCR7dH0vJHtvLmpvaW4oIiwiKX1gfWNhc2UgWmsuRVhQRVJJTUVOVFM6cmV0dXJuIFN0cmluZyh0KTtjYXNlIFprLk5PVF9TRVQ6cmV0dXJuIl9fbm90X3NldCI7ZGVmYXVsdDpyZXR1cm4iIn19Y29uc3QgJGs9KCk9PndpbmRvdy5sb2NhdGlvbi5ocmVmO2NsYXNzIHRTe2dldEhyZWYoKXtyZXR1cm4gJGsoKX1nZXRTZWFyY2goKXtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksZT1bXTtyZXR1cm4gdC5mb3JFYWNoKCgodCxuKT0+e2UucHVzaCh7a2V5Om4sdmFsdWU6dH0pfSkpLGV9Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1yZXBsYWNlU3RhdGUodCl7d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIiIsdCl9cHVzaFN0YXRlKHQpe3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCIiLHQpfW9uUG9wU3RhdGUoKXtyZXR1cm4gb2Uod2luZG93LCJwb3BzdGF0ZSIpLnBpcGUoSXQoKCgpPT4oe3BhdGhuYW1lOnRoaXMuZ2V0UGF0aCgpLHF1ZXJ5UGFyYW1zOnRoaXMuZ2V0U2VhcmNoKCl9KSkpKX1nZXRSZXNvbHZlZFBhdGgodCl7cmV0dXJuIG5ldyBVUkwodCwkaygpKS5wYXRobmFtZX1nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KHQsZSl7Y29uc3Qgbj10aGlzLmdldFJlc29sdmVkUGF0aCh0LnBhdGhuYW1lKTtsZXQgbz0iIjtyZXR1cm4hKGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoInBhdGhuYW1lIikmJiF0Lmhhc093blByb3BlcnR5KCJxdWVyeVBhcmFtcyIpfSkodCkmJnQucXVlcnlQYXJhbXMubGVuZ3RoJiYobz0iPyIrKGZ1bmN0aW9uIGEodCl7Y29uc3QgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdHtrZXk6bix2YWx1ZTpvfW9mIHQpZS5hcHBlbmQobixvKTtyZXR1cm4gZX0pKHQucXVlcnlQYXJhbXMpLnRvU3RyaW5nKCkpLGAke259JHtvfSR7ZT90aGlzLmdldEhhc2goKToiIn1gfX10Uy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dFMpfSx0Uy7JtXByb3Y9TW4oe3Rva2VuOnRTLGZhY3Rvcnk6dFMuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHRTLFt7dHlwZTppbX1dLG51bGwsbnVsbCk7Y2xhc3MgZVN7Y29uc3RydWN0b3IodCl7dGhpcy5hcHBSb290PXRoaXMuZ2V0QXBwUm9vdEZyb21NZXRhRWxlbWVudCh0KX1nZXRBcHBSb290RnJvbU1ldGFFbGVtZW50KHQpe2NvbnN0IGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCBtZXRhW25hbWU9InRiLXJlbGF0aXZlLXJvb3QiXScpO2lmKCFlKXJldHVybiIvIjtjb25zdHtwYXRobmFtZTpufT1uZXcgVVJMKGUuY29udGVudCx0LmdldEhyZWYoKSk7cmV0dXJuIG4ucmVwbGFjZSgvXC8qJC8sIi8iKX1nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQpe3JldHVybiB0aGlzLmFwcFJvb3Quc2xpY2UoMCwtMSkrdH1nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQpe3JldHVybiB0LnN0YXJ0c1dpdGgodGhpcy5hcHBSb290KT8iLyIrdC5zbGljZSh0aGlzLmFwcFJvb3QubGVuZ3RoKTp0fX1lUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZVMpKHZyKHRTKSl9LGVTLsm1cHJvdj1Nbih7dG9rZW46ZVMsZmFjdG9yeTplUy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZVMsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnRTfV19KSxudWxsKTtjbGFzcyBuUyBleHRlbmRzIGVTe2dldEFwcFJvb3QoKXtyZXR1cm4gdGhpcy5hcHBSb290fXNldEFwcFJvb3QodCl7dGhpcy5hcHBSb290PXR9fW5TLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShuUykpKShufHxuUyl9fSkoKSxuUy7JtXByb3Y9TW4oe3Rva2VuOm5TLGZhY3Rvcnk6blMuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG5TLFt7dHlwZTppbX1dLG51bGwsbnVsbCk7Y2xhc3Mgb1N7fW9TLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvUyl9LG9TLsm1bW9kPWFvKHt0eXBlOm9TfSksb1MuybVpbmo9dm4oe3Byb3ZpZGVyczpbdFNdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvUyxbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpbdFNdfV19XSxudWxsLG51bGwpO2NsYXNzIGlTe31pUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVMpfSxpUy7JtW1vZD1hbyh7dHlwZTppU30pLGlTLsm1aW5qPXZuKHtwcm92aWRlcnM6W2VTXSxpbXBvcnRzOltbb1NdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoaVMsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltvU10scHJvdmlkZXJzOltlU119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhpUyx7aW1wb3J0czpbb1NdfSk7Y29uc3QgYVM9SlAoIltBcHAgUm91dGluZ10gRGlzY2FyZGluZyBVbnNhdmVkIFVwZGF0ZXMiKSxyUz1KUCgiW0FwcCBSb3V0aW5nXSBTdGF0ZSBSZWh5ZHJhdGVkIEZyb20gVXJsIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc1M9SlAoIltBcHAgUm91dGluZ10gUm91dGUgQ29uZmlnIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGxTPUpQKCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0aW9uIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGNTPUpQKCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0aW5nIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZFM9SlAoIltBcHAgUm91dGluZ10gSW4gQXBwIE5hdmlnYXRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHBTPW5ldyBHYSgiW0FwcCBSb3V0aW5nXSBEaXJ0eSBVcGRhdGVzIik7Y2xhc3MgbVN7Y29uc3RydWN0b3IodCl7dGhpcy5kaXJ0eVVwZGF0ZXNTZWxlY3RvckZhY3Rvcmllcz10fWdldERpcnR5VXBkYXRlc1NlbGVjdG9ycygpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5kaXJ0eVVwZGF0ZXNTZWxlY3RvckZhY3RvcmllcykmJnZvaWQgMCE9PXQ/dDpbXX1zdGF0aWMgcmVnaXN0ZXJEaXJ0eVVwZGF0ZXModCl7cmV0dXJue25nTW9kdWxlOm1TLHByb3ZpZGVyczpbe3Byb3ZpZGU6cFMsbXVsdGk6ITAsdXNlRmFjdG9yeTp0fV19fX1tUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bVMpKHZyKHBTLDgpKX0sbVMuybVtb2Q9YW8oe3R5cGU6bVN9KSxtUy7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChtUyxbe3R5cGU6QXl9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3BTXX1dfV19KSxudWxsKTtjb25zdCB1Uz1uZXcgR2EoIltBcHAgUm91dGluZ10gUHJvZ3JhbW1hdGljYWwgTmF2aWdhdGlvbiBQcm92aWRlciIpO2NsYXNzIGZTe2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGNvbnN0IGUgb2YgdHx8W10pe2lmKHRoaXMucHJvdmlkZXJzLmhhcyhlLmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke2UuYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBuYXYuIE11bHRpcGxlIG5hdmlnYXRpb25zIG9uIHNhbWUga2ljayBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQoZS5hY3Rpb25DcmVhdG9yLnR5cGUsZS5sYW1iZGEpfX1nZXROYXZpZ2F0aW9uKHQpe2NvbnN0IGU9dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIGU/ZSh0KTpudWxsfXN0YXRpYyByZWdpc3RlclByb2dyYW1tYXRpY2FsTmF2aWdhdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6ZlMscHJvdmlkZXJzOlt7cHJvdmlkZTp1UyxtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fWZ1bmN0aW9uIGdTKHQpe3JldHVybiBudWxsIT10LnJvdXRlS2luZH1mdW5jdGlvbiBoUyh0KXtyZXR1cm4gdlModCkubWFwKCh0PT57Y29uc3QgZT10LnN0YXJ0c1dpdGgoIjoiKTtyZXR1cm4gZT97cGF0aFBhcnQ6dCxpc1BhcmFtOiEwLHBhcmFtTmFtZTp0LnNsaWNlKDEpfTp7cGF0aFBhcnQ6dCxpc1BhcmFtOmV9fSkpfWZTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmUykodnIodVMsOCkpfSxmUy7JtW1vZD1hbyh7dHlwZTpmU30pLGZTLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGZTLFt7dHlwZTpBeSxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt1U119XX1dfSksbnVsbCk7Y2xhc3MgYlN7Y29uc3RydWN0b3IodCl7dGhpcy52YWxpZGF0ZUNvbmZpZyh0KSx0aGlzLnBhdGhGcmFnbWVudHM9aFModC5wYXRoKSx0aGlzLnBhdGhNYXRjaGVycz10aGlzLmdldFBhdGhNYXRjaGVycyh0aGlzLnBhdGhGcmFnbWVudHMpfXN0YXRpYyBnZXRNYXRjaGVyKHQpe3JldHVybiBnUyh0KT9uZXcgeVModCk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHZvaWQgMCE9PXQucmVkaXJlY3Rpb25QYXRofSkodCk/bmV3IF9TKHQpOm5ldyBDUyh0KX12YWxpZGF0ZUNvbmZpZyh7cGF0aDp0fSl7aWYoIXQuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBzaG91bGQgc3RhcnQgd2l0aCAnLycuICR7dH1gKTtsZXQgZT0wO2Zvcig7KGU9dC5pbmRleE9mKCI6IixlKzEpKT49MDspe2lmKCIvIiE9PXRbZS0xXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggcGFyYW1ldGVyIHNob3VsZCBjb21lIGFmdGVyICcvJy4gJHt0fWApO2lmKHZvaWQgMD09PXRbZSsxXXx8Ii8iPT09dFtlKzFdKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBwYXJhbWV0ZXIgc2hvdWxkIGhhdmUgbm9uLWVtcHR5IG5hbWUuICR7dH1gKX19Z2V0UGF0aE1hdGNoZXJzKHQpe3JldHVybiB0Lm1hcCgodD0+e2NvbnN0e3BhdGhQYXJ0OmV9PXQ7cmV0dXJuIHQuaXNQYXJhbT9lPT4oe2lzUGFyYW1QYXRoUGFydDohMCxwYXJ0TWF0Y2hlZDohMCxwYXJhbU5hbWU6dC5wYXJhbU5hbWUscGFyYW1WYWx1ZTplfSk6dD0+KHtpc1BhcmFtUGF0aFBhcnQ6ITEscGFydE1hdGNoZWQ6dD09PWV9KX0pKX1tYXRjaCh0KXtsZXQgZT17fTtpZih0aGlzLnBhdGhNYXRjaGVycy5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57cmVzdWx0OiExfTtsZXQgbj0wO2Zvcihjb25zdCBvIG9mIHRoaXMucGF0aE1hdGNoZXJzKXtjb25zdCBpPW8odFtuKytdKTtpZighaS5wYXJ0TWF0Y2hlZClyZXR1cm57cmVzdWx0OiExfTtpLmlzUGFyYW1QYXRoUGFydCYmKGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtbaS5wYXJhbU5hbWVdOmkucGFyYW1WYWx1ZX0pKX1yZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLHBhdGhQYXJ0czp0LGlzUmVkaXJlY3Rpb246ITF9fW1hdGNoQnlQYXJhbXModCl7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6dCxwYXRoUGFydHM6dGhpcy5yZXByb2plY3RQYXRoQnlQYXJhbXModGhpcy5wYXRoRnJhZ21lbnRzLHQpLGlzUmVkaXJlY3Rpb246ITF9fXJlcHJvamVjdFBhdGhCeVBhcmFtcyh0LGUpe2NvbnN0IG49W107Zm9yKGNvbnN0IG8gb2YgdClpZihvLmlzUGFyYW0pe2NvbnN0e3BhcmFtTmFtZTp0fT1vO2lmKCFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBSYW5nZUVycm9yKGBGYWlsZWQgdG8gcmVwcm9qZWN0IHBhcmFtZXRlci4gIiR7dH0iIHBhcmFtZXRlciBzaG91bGQgYmUgcHJlc2VudC5gKTtuLnB1c2goZVt0XSl9ZWxzZSBuLnB1c2goby5wYXRoUGFydCk7cmV0dXJuIG59fWNsYXNzIHlTIGV4dGVuZHMgYlN7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXR9fWNsYXNzIF9TIGV4dGVuZHMgYlN7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZWZpbml0aW9uPXQsdGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cz1oUyh0LnJlZGlyZWN0aW9uUGF0aCl9bWF0Y2godCl7Y29uc3QgZT1zdXBlci5tYXRjaCh0KTtpZighZS5yZXN1bHQpcmV0dXJuIGU7Y29uc3Qgbj10aGlzLnJlcHJvamVjdFBhdGhCeVBhcmFtcyh0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzLGUucGFyYW1zKTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwfX19Y2xhc3MgQ1MgZXh0ZW5kcyBiU3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmRlZmluaXRpb249dH1tYXRjaCh0KXtjb25zdCBlPXN1cGVyLm1hdGNoKHQpO2lmKCFlLnJlc3VsdClyZXR1cm4gZTtjb25zdHtwYXRoUGFydHM6bixxdWVyeVBhcmFtczpvfT10aGlzLmRlZmluaXRpb24ucmVkaXJlY3Rvcih0KTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczplLnBhcmFtcyxwYXRoUGFydHM6bixpc1JlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6b319fWNsYXNzIE1Te2NvbnN0cnVjdG9yKHQsZT0zKXtpZih0aGlzLm1heFJlZGlyZWN0aW9uPWUsZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJtYXhSZWRpcmVjdGlvbiBoYXMgdG8gYmUgbm9uLW5lZ2F0aXZlIG51bWJlciIpO3RoaXMudmFsaWRhdGVSb3V0ZUNvbmZpZ3ModCksdGhpcy5kZWZhdWx0Um91dGVDb25maWc9bnVsbCx0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycz1uZXcgTWFwLHRoaXMuY29uZmlnTWF0Y2hlcnM9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1iUy5nZXRNYXRjaGVyKGUpO3RoaXMuY29uZmlnTWF0Y2hlcnMucHVzaCh0KSx0IGluc3RhbmNlb2YgeVMmJih0aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5zZXQodC5kZWZpbml0aW9uLnJvdXRlS2luZCx0KSx0LmRlZmluaXRpb24uZGVmYXVsdFJvdXRlJiYodGhpcy5kZWZhdWx0Um91dGVDb25maWc9dCkpfX12YWxpZGF0ZVJvdXRlQ29uZmlncyh0KXtjb25zdCBlPXQuZmlsdGVyKGdTKSxuPWUuZmlsdGVyKCh0PT50LmRlZmF1bHRSb3V0ZSkpO2lmKG4ubGVuZ3RoPjEpe2NvbnN0IHQ9bi5tYXAoKCh7cGF0aDp0fSk9PnQpKS5qb2luKCIsICIpO3Rocm93IG5ldyBSYW5nZUVycm9yKGBUaGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBkZWZhdWx0Um91dGVzLiAke3R9YCl9aWYoMT09PW4ubGVuZ3RoKXtjb25zdHtwYXRoOnR9PW5bMF07aWYoQm9vbGVhbihoUyh0KS5maW5kKCgoe2lzUGFyYW06dH0pPT50KSkpKXRocm93IG5ldyBSYW5nZUVycm9yKGBBIGRlZmF1bHRSb3V0ZSBjYW5ub3QgaGF2ZSBhbnkgcGFyYW1zLiAke3R9YCl9Y29uc3Qgbz1uZXcgU2V0O2Zvcihjb25zdHtyb3V0ZUtpbmQ6dH1vZiBlKXtpZihvLmhhcyh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTXVsdGlwbGUgcm91dGUgY29uZmlndXJhdGlvbiBmb3Iga2luZDogJHt0fS4gQ29uZmlndXJhdGlvbnMgc2hvdWxkIGhhdmUgdW5pcXVlIHJvdXRlS2luZHNgKTtvLmFkZCh0KX19bWF0Y2godCl7dmFyIGU7aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKCdOYXZpZ2F0aW9uIGhhcyB0byBtYWRlIHdpdGggcGF0aG5hbWUgdGhhdCBzdGFydHMgd2l0aCAiLyInKTtsZXQgbixvPXZTKHQucGF0aG5hbWUpLGk9MCxhPSExO2Zvcig7Oyl7bGV0IHQ9ITE7Zm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWdNYXRjaGVycyl7Y29uc3QgaT1lLm1hdGNoKG8pO2lmKGkucmVzdWx0KXt0PSEwO2NvbnN0e3BhcmFtczpyLHBhdGhQYXJ0czpzLGlzUmVkaXJlY3Rpb246bH09aTtpZihsKXtvPXMsYT0hMCxuPWkucmVkaXJlY3Rpb25RdWVyeVBhcmFtczticmVha31pZighKGUgaW5zdGFuY2VvZiB5UykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIGNvbmNyZXRlIHJvdXRlIGRlZmluaXRpb24gYG1hdGNoYCByZXR1cm4gcmVkaXJlY3Rpb24iKTtjb25zdHtkZWZpbml0aW9uOmN9PWUsZD17cm91dGVLaW5kOmMucm91dGVLaW5kLHBhcmFtczpyLHBhdGhuYW1lOnhTKHMpLGRlZXBMaW5rUHJvdmlkZXI6Yy5kZWVwTGlua1Byb3ZpZGVyfHxudWxsfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLGE/e29yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczpufTp7b3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uOiExfSl9fWlmKGEmJmkrKywhdHx8aT50aGlzLm1heFJlZGlyZWN0aW9uKWJyZWFrfWlmKGk+dGhpcy5tYXhSZWRpcmVjdGlvbil0aHJvdyBuZXcgRXJyb3IoYFBvdGVudGlhbCByZWRpcmVjdGlvbiBsb29wIChyZWRpcmVjdGluZyBtb3JlIHRoYW4gJHt0aGlzLm1heFJlZGlyZWN0aW9ufSB0aW1lcy4gUGxlYXNlIGRvIG5vdCBoYXZlIGN5Y2xlcyBpbiB0aGUgcm91dGVzLmApO2lmKHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnKXtjb25zdHtkZWZpbml0aW9uOnR9PXRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnO3JldHVybntyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQsZGVlcExpbmtQcm92aWRlcjpudWxsIT09KGU9dC5kZWVwTGlua1Byb3ZpZGVyKSYmdm9pZCAwIT09ZT9lOm51bGwscGF0aG5hbWU6dC5wYXRoLHBhcmFtczp7fSxvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246YX19cmV0dXJuIG51bGx9bWF0Y2hCeVJvdXRlS2luZCh0LGUpe2NvbnN0IG49dGhpcy5yb3V0ZUtpbmRUb0NvbmNyZXRlQ29uZmlnTWF0Y2hlcnMuZ2V0KHQpO2lmKCFuKXRocm93IG5ldyBSYW5nZUVycm9yKGBSZXF1aXJlcyBjb25maWd1cmF0aW9uIGZvciByb3V0ZUtpbmQ6ICR7dH1gKTtyZXR1cm57cm91dGVLaW5kOnQscGFyYW1zOmUscGF0aG5hbWU6eFMobi5tYXRjaEJ5UGFyYW1zKGUpLnBhdGhQYXJ0cyksZGVlcExpbmtQcm92aWRlcjpuLmRlZmluaXRpb24uZGVlcExpbmtQcm92aWRlcnx8bnVsbCxvcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb246ITF9fX1mdW5jdGlvbiB2Uyh0KXtyZXR1cm4gdC5zcGxpdCgiLyIpLnNsaWNlKDEpfWZ1bmN0aW9uIHhTKHQpe3JldHVybiIvIit0LmpvaW4oIi8iKX1jb25zdCBPUz1uZXcgR2EoIltBcHAgUm91dGluZ10gUm91dGUgQ29uZmlnIik7Y2xhc3MgUFN7Y29uc3RydWN0b3IodCl7aWYodGhpcy5yb3V0ZUNvbmZpZ3M9bnVsbCx0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQ9bmV3IE1hcCwhdClyZXR1cm47Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIG4pZS5wdXNoKHQpO3RoaXMucm91dGVDb25maWdzPW5ldyBNUyhlKSxlLmZvckVhY2goKHQ9PntnUyh0KSYmdGhpcy5yb3V0ZUtpbmRUb05nQ29tcG9uZW50LnNldCh0LnJvdXRlS2luZCx0Lm5nQ29tcG9uZW50KX0pKX1nZXRSZWdpc3RlcmVkUm91dGVLaW5kcygpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQua2V5cygpfWdldFJvdXRlQ29uZmlncygpe3JldHVybiB0aGlzLnJvdXRlQ29uZmlnc31nZXROZ0NvbXBvbmVudEJ5Um91dGVLaW5kKHQpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQuZ2V0KHQpfHxudWxsfXN0YXRpYyByZWdpc3RlclJvdXRlcyh0KXtyZXR1cm57bmdNb2R1bGU6UFMscHJvdmlkZXJzOlt7cHJvdmlkZTpPUyxtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fVBTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQUykodnIoT1MsOCkpfSxQUy7JtW1vZD1hbyh7dHlwZTpQU30pLFBTLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFBTLFt7dHlwZTpBeSxhcmdzOlt7fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltPU119XX1dfSksbnVsbCk7Y29uc3Qgd1M9ImFwcF9yb3V0aW5nIixrUz1Ldyh3UyksU1M9Wncoa1MsKHQ9PnQuYWN0aXZlUm91dGUpKSxEUz1adyhrUywodD0+dC5uZXh0Um91dGUpKSxFUz1adyhrUywodD0+dC5yZWdpc3RlcmVkUm91dGVLZXlzKSksUlM9WncoU1MsKHQ9PnQ/dC5yb3V0ZUtpbmQ6WmsuTk9UX1NFVCkpLEFTPVp3KFNTLCh0PT50P3QucGFyYW1zOnt9KSksVFM9WncoUlMsQVMsKCh0LGUpPT5Kayh0LGUpKSksTlM9WncoUlMsQVMsKCh0LGUpPT5Rayh0LGUpKSkselM9WncoUlMsQVMsKCh0LGUpPT57aWYodCE9PVprLkNPTVBBUkVfRVhQRVJJTUVOVClyZXR1cm57fTtjb25zdCBuPShmdW5jdGlvbiBvKHQpe2NvbnN0IGU9bmV3IE1hcCxuPUtrKHQuZXhwZXJpbWVudElkcyk7Zm9yKGNvbnN0e2lkOnQsbmFtZTpvfW9mIG4pbyYmZS5zZXQodCxvKTtyZXR1cm4gZX0pKGUpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMobi5lbnRyaWVzKCkpfSkpLElTPUpQKCJbQXBwIFJvdXRpbmddIEVmZmVjdHMgSW5pdCIpO2NsYXNzIEhTe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5sb2NhdGlvbj1uLHRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnk9byx0aGlzLnJlZ2lzdHJ5PWksdGhpcy5wcm9ncmFtbWF0aWNhbE5hdk1vZHVsZT1hLHRoaXMuYXBwUm9vdFByb3ZpZGVyPXIsdGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkPXRoaXMuYWN0aW9ucyQucGlwZShEayhsUyksSXQoKHQ9Pntjb25zdCBlPXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpP3RoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodC5wYXRobmFtZSk6dGhpcy5sb2NhdGlvbi5nZXRSZXNvbHZlZFBhdGgodC5wYXRobmFtZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGF0aG5hbWU6ZX0pfSkpKSx0aGlzLmJvb3RzdHJhcFJlZHVjZXJzJD1NaygoKCk9PnRoaXMuYWN0aW9ucyQucGlwZShEayhJUyksSXQoKCgpPT5zUyh7cm91dGVLaW5kczpuZXcgU2V0KHRoaXMucmVnaXN0cnkuZ2V0UmVnaXN0ZXJlZFJvdXRlS2luZHMoKSl9KSkpKSkpLHRoaXMub25Jbml0JD10aGlzLmFjdGlvbnMkLnBpcGUoRGsoSVMpKS5waXBlKENlKDApLEl0KCgoKT0+KHtwYXRobmFtZTp0aGlzLmxvY2F0aW9uLmdldFBhdGgoKSxxdWVyeVBhcmFtczp0aGlzLmxvY2F0aW9uLmdldFNlYXJjaCgpLHJlcGxhY2VTdGF0ZTohMCxicm93c2VySW5pdGlhdGVkOiEwfSkpKSksdGhpcy51c2VySW5pdE5hdlJvdXRlJD1yZSh0aGlzLm9uTmF2aWdhdGlvblJlcXVlc3RlZCQsdGhpcy5vbkluaXQkLHRoaXMubG9jYXRpb24ub25Qb3BTdGF0ZSgpLnBpcGUoSXQoKHQ9Pih7cGF0aG5hbWU6dC5wYXRobmFtZSxyZXBsYWNlU3RhdGU6dC5yZXBsYWNlU3RhdGUsYnJvd3NlckluaXRpYXRlZDohMH0pKSkpKS5waXBlKEl0KCh0PT57aWYoIXQucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBFcnJvcihgW0FwcCByb3V0aW5nXSBwYXRobmFtZSBtdXN0IHN0YXJ0IHdpdGggJy8nLiBHb3Q6ICR7dC5wYXRobmFtZX1gKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXRobmFtZTp0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQucGF0aG5hbWUpfSl9KSksSXQoKHQ9Pih7cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncz90aGlzLnJvdXRlQ29uZmlncy5tYXRjaCh0KTpudWxsLG9wdGlvbnM6e3JlcGxhY2VTdGF0ZTp0LnJlcGxhY2VTdGF0ZSxicm93c2VySW5pdGlhdGVkOnQuYnJvd3NlckluaXRpYXRlZH19KSkpKSx0aGlzLnByb2dyYW1tdGljYWxOYXZSb3V0ZSQ9dGhpcy5hY3Rpb25zJC5waXBlKEl0KCh0PT50aGlzLnByb2dyYW1tYXRpY2FsTmF2TW9kdWxlLmdldE5hdmlnYXRpb24odCkpKSxjZSgodD0+bnVsbCE9PXQpKSxJdCgodD0+e2NvbnN0IGU9dCxuPWUucm91dGVLaW5kO2xldCBvO3N3aXRjaChlLnJvdXRlS2luZCl7Y2FzZSBaay5DT01QQVJFX0VYUEVSSU1FTlQ6bz17ZXhwZXJpbWVudElkczooaT1lLnJvdXRlUGFyYW1zLmFsaWFzQW5kRXhwZXJpbWVudElkcyxpLm1hcCgoKHthbGlhczp0LGlkOmV9KT0+YCR7dH06JHtlfWApKS5qb2luKCIsIikpfTticmVhaztkZWZhdWx0Om89ZS5yb3V0ZVBhcmFtc312YXIgaTtyZXR1cm57cm91dGVLaW5kOm4scm91dGVQYXJhbXM6b319KSksSXQoKCh7cm91dGVLaW5kOnQscm91dGVQYXJhbXM6ZX0pPT4oe3JvdXRlTWF0Y2g6dGhpcy5yb3V0ZUNvbmZpZ3M/dGhpcy5yb3V0ZUNvbmZpZ3MubWF0Y2hCeVJvdXRlS2luZCh0LGUpOm51bGwsb3B0aW9uczp7cmVwbGFjZVN0YXRlOiExLGJyb3dzZXJJbml0aWF0ZWQ6ITF9fSkpKSksdGhpcy52YWxpZGF0ZWRSb3V0ZSQ9cmUodGhpcy51c2VySW5pdE5hdlJvdXRlJCx0aGlzLnByb2dyYW1tdGljYWxOYXZSb3V0ZSQpLnBpcGUoY2UoKCh7cm91dGVNYXRjaDp0fSk9PkJvb2xlYW4odCkpKSxJdCgodD0+KHtyb3V0ZU1hdGNoOnQucm91dGVNYXRjaCxvcHRpb25zOnQub3B0aW9uc30pKSkpLHRoaXMubmF2aWdhdGUkPU1rKCgoKT0+dGhpcy52YWxpZGF0ZWRSb3V0ZSQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChTUykpLFp0KCgoW3QsZV0pPT57Y29uc3Qgbj1udWxsIT09ZSYmUWsodC5yb3V0ZU1hdGNoLnJvdXRlS2luZCx0LnJvdXRlTWF0Y2gucGFyYW1zKT09PVFrKGUucm91dGVLaW5kLGUucGFyYW1zKSxvPXRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnkuZ2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCk7cmV0dXJuIG58fCFvLmxlbmd0aD9FdCh0KTokdCh0aGlzLmRpcnR5VXBkYXRlc1JlZ2lzdHJ5LmdldERpcnR5VXBkYXRlc1NlbGVjdG9ycygpLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QodCkucGlwZShiZSgxKSkpKSkucGlwZShJdCgodD0+dm9pZCAwIT09dFswXS5leHBlcmltZW50SWRzJiZ0WzBdLmV4cGVyaW1lbnRJZHMubGVuZ3RoPjApKSxjZSgodD0+e2lmKHQpe2NvbnN0IHQ9d2luZG93LmNvbmZpcm0oIllvdSBoYXZlIHVuc2F2ZWQgZWRpdHMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHRoZW0/Iik7cmV0dXJuIHQmJnRoaXMuc3RvcmUuZGlzcGF0Y2goYVMoKSksdH1yZXR1cm4hMH0pKSxJdCgoKCk9PnQpKSl9KSksRmUoKCh7cm91dGVNYXRjaDp0LG9wdGlvbnM6ZX0pPT57aWYoZS5icm93c2VySW5pdGlhdGVkJiZ0LmRlZXBMaW5rUHJvdmlkZXIpe2NvbnN0IGU9dC5vcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb24mJnQucmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM/dC5yZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczp0aGlzLmxvY2F0aW9uLmdldFNlYXJjaCgpLG49dC5kZWVwTGlua1Byb3ZpZGVyLmRlc2VyaWFsaXplUXVlcnlQYXJhbXMoZSk7dGhpcy5zdG9yZS5kaXNwYXRjaChyUyh7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcnRpYWxTdGF0ZTpufSkpfX0pKSx6ZSgoKHtyb3V0ZU1hdGNoOnQsb3B0aW9uczplfSk9Pnt2YXIgbjtjb25zdCBvPXtyZXBsYWNlU3RhdGU6bnVsbCE9PShuPWUucmVwbGFjZVN0YXRlKSYmdm9pZCAwIT09biYmbn0saT1FdCh7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcmFtczp0LnBhcmFtcyxwYXRobmFtZTp0LnBhdGhuYW1lLHF1ZXJ5UGFyYW1zOltdLG5hdmlnYXRpb25PcHRpb25zOm99KTtyZXR1cm4gbnVsbD09PXQuZGVlcExpbmtQcm92aWRlcj9pOnQuZGVlcExpbmtQcm92aWRlci5zZXJpYWxpemVTdGF0ZVRvUXVlcnlQYXJhbXModGhpcy5zdG9yZSkucGlwZShJdCgoKGUsbik9Pih7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcmFtczp0LnBhcmFtcyxwYXRobmFtZTp0LnBhdGhuYW1lLHF1ZXJ5UGFyYW1zOmUsbmF2aWdhdGlvbk9wdGlvbnM6MD09PW4/bzpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse3JlcGxhY2VTdGF0ZTohMH0pfSkpKSl9KSksRmUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGNTKHthZnRlcjp0fSkpfSkpLGdlKDApKS5waXBlKFZlKHRoaXMuc3RvcmUuc2VsZWN0KFNTKSksSXQoKChbdCxlXSk9Pih7cHJlc2VydmVIYXNoOm51bGw9PT1lfHxudWxsPT09dHx8UWsoZS5yb3V0ZUtpbmQsZS5wYXJhbXMpPT09UWsodC5yb3V0ZUtpbmQsdC5wYXJhbXMpLHJvdXRlOnR9KSkpLEZlKCgoe3ByZXNlcnZlSGFzaDp0LHJvdXRlOmV9KT0+eyEoZnVuY3Rpb24gbih0LGUpe3JldHVybiB0LnBhdGhuYW1lPT09ZS5wYXRobmFtZSYmdC5xdWVyeVBhcmFtcy5sZW5ndGg9PT1lLnF1ZXJ5UGFyYW1zLmxlbmd0aCYmdC5xdWVyeVBhcmFtcy5ldmVyeSgoKHQsbik9Pntjb25zdCBvPWUucXVlcnlQYXJhbXNbbl07cmV0dXJuIHQua2V5PT09by5rZXkmJnQudmFsdWU9PT1vLnZhbHVlfSkpfSkoZSx7cGF0aG5hbWU6dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QXBwUm9vdGxlc3NQYXRobmFtZSh0aGlzLmxvY2F0aW9uLmdldFBhdGgoKSkscXVlcnlQYXJhbXM6dGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKX0pJiYoZS5uYXZpZ2F0aW9uT3B0aW9ucy5yZXBsYWNlU3RhdGU/dGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0aGlzLmxvY2F0aW9uLmdldEZ1bGxQYXRoRnJvbVJvdXRlT3JOYXYoZSx0KSkpOnRoaXMubG9jYXRpb24ucHVzaFN0YXRlKHRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodGhpcy5sb2NhdGlvbi5nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KGUsdCkpKSl9KSkpLnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3QoU1MpKSxJdCgoKFt7cm91dGU6dH0sZV0pPT5kUyh7YmVmb3JlOmUsYWZ0ZXI6dH0pKSkpKSksdGhpcy5yb3V0ZUNvbmZpZ3M9aS5nZXRSb3V0ZUNvbmZpZ3MoKX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBJUygpfX1IUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SFMpKHZyKFNrKSx2cihJdyksdnIodFMpLHZyKG1TKSx2cihQUyksdnIoZlMpLHZyKGVTKSl9LEhTLsm1cHJvdj1Nbih7dG9rZW46SFMsZmFjdG9yeTpIUy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSFMsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNrfSx7dHlwZTpJd30se3R5cGU6dFN9LHt0eXBlOm1TfSx7dHlwZTpQU30se3R5cGU6ZlN9LHt0eXBlOmVTfV19KSxudWxsKTtjb25zdCBGUz15ayh7YWN0aXZlUm91dGU6bnVsbCxuZXh0Um91dGU6bnVsbCxyZWdpc3RlcmVkUm91dGVLZXlzOm5ldyBTZXR9LGJrKGNTLCgodCx7YWZ0ZXI6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse25leHRSb3V0ZTplfSkpKSxiayhkUywoKHQse2FmdGVyOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthY3RpdmVSb3V0ZTplLG5leHRSb3V0ZTpudWxsfSkpKSxiayhzUywoKHQse3JvdXRlS2luZHM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3JlZ2lzdGVyZWRSb3V0ZUtleXM6ZX0pKSkpO2Z1bmN0aW9uIExTKHQsZSl7cmV0dXJuIEZTKHQsZSl9Y2xhc3MgQlN7fUJTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCUyl9LEJTLsm1bW9kPWFvKHt0eXBlOkJTfSksQlMuybVpbmo9dm4oe3Byb3ZpZGVyczpbbVMsZlNdLGltcG9ydHM6W1tQUyxkay5mb3JGZWF0dXJlKHdTLExTKSxXay5mb3JGZWF0dXJlKFtIU10pLGlTLG9TXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJTLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbUFMsZGsuZm9yRmVhdHVyZSh3UyxMUyksV2suZm9yRmVhdHVyZShbSFNdKSxpUyxvU10scHJvdmlkZXJzOlttUyxmU119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhCUyx7aW1wb3J0czpbUFMsY2ssR2ssaVMsb1NdfSk7Y2xhc3MgVlN7fWNvbnN0IGpTPSJfX3RhYl9fIjtjbGFzcyBVU3tjb25zdHJ1Y3Rvcigpe3RoaXMudGZTdG9yYWdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKSxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1nbG9iYWxzIikudGZfZ2xvYmFscy5zZXRVc2VIYXNoKCEwKSx0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLm1pZ3JhdGVMZWdhY3lVUkxTY2hlbWUoKX1nZXRTdHJpbmcodCl7cmV0dXJuIHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UuZ2V0U3RyaW5nKHQpfXNldFN0cmluZyh0LGUsbil7dGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5zZXRTdHJpbmcodCxlLG4pfWdldFBsdWdpbklkKCl7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKGpTKX1zZXRQbHVnaW5JZCh0LGUpe3RoaXMuc2V0U3RyaW5nKGpTLHQsZSl9fXZhciBHUztVUy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VVMpfSxVUy7JtXByb3Y9TW4oe3Rva2VuOlVTLGZhY3Rvcnk6VVMuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFVTLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCksKGZ1bmN0aW9uKHQpe3QuQlJPV1NFUl9ERUZBVUxUPSJicm93c2VyX2RlZmF1bHQiLHQuTElHSFQ9ImxpZ2h0Iix0LkRBUks9ImRhcmsifSkoR1N8fChHUz17fSkpO2NvbnN0IFdTPUpQKCJbUGVyc2lzdGVudCBTZXR0aW5nc10gR2xvYmFsIFNldHRpbmdzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFlTPW5ldyBHYSgiW1BlcnNpc3RlbnQgU2V0dGluZ3NdIEdsb2JhbCBTZXR0aW5ncyIpO2NsYXNzIHFTe2NvbnN0cnVjdG9yKHQpe3RoaXMuZ2xvYmFsU2V0dGluZ1NlbGVjdG9ycz1bXSx0JiYodGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzPXQubWFwKCh0PT50KCkpKSl9Z2V0R2xvYmFsU2V0dGluZ1NlbGVjdG9ycygpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzKSYmdm9pZCAwIT09dD90OltdfXN0YXRpYyBkZWZpbmVHbG9iYWxTZXR0aW5nKHQpe3JldHVybntuZ01vZHVsZTpxUyxwcm92aWRlcnM6W3twcm92aWRlOllTLG11bHRpOiEwLHVzZVZhbHVlOnR9XX19fXFTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxUykodnIoWVMsOCkpfSxxUy7JtW1vZD1hbyh7dHlwZTpxU30pLHFTLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHFTLFt7dHlwZTpBeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWVNdfV19XX0pLG51bGwpO2NsYXNzIFpTe3NldEl0ZW0odCxlKXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0LGUpfWdldEl0ZW0odCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHQpfXJlbW92ZUl0ZW0odCl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odCl9fVpTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaUyl9LFpTLsm1cHJvdj1Nbih7dG9rZW46WlMsZmFjdG9yeTpaUy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWlMsW3t0eXBlOmltfV0sbnVsbCxudWxsKTtjbGFzcyBYU3t9WFMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhTKX0sWFMuybVtb2Q9YW8oe3R5cGU6WFN9KSxYUy7JtWluaj12bih7cHJvdmlkZXJzOltaU119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFhTLFt7dHlwZTpBeSxhcmdzOlt7cHJvdmlkZXJzOltaU119XX1dLG51bGwsbnVsbCk7Y29uc3QgS1M9Il90Yl9nbG9iYWxfc2V0dGluZ3MudGltZXNlcmllcyIsSlM9Il90Yl9nbG9iYWxfc2V0dGluZ3MiLFFTPSJub3RpZmljYXRpb25MYXN0UmVhZFRpbWVzdGFtcCI7Y2xhc3MgJFN7fSRTLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkUyl9LCRTLsm1cHJvdj1Nbih7dG9rZW46JFMsZmFjdG9yeTokUy7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoJFMsW3t0eXBlOmltfV0sbnVsbCxudWxsKTtjbGFzcyB0RHt9dEQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHREKX0sdEQuybVwcm92PU1uKHt0b2tlbjp0RCxmYWN0b3J5OnRELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh0RCxbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIGVEIGV4dGVuZHMgdER7dWlUb0JhY2tlbmQodCl7cmV0dXJue2lnbm9yZU91dGxpZXJzOnQuaWdub3JlT3V0bGllcnMsc2NhbGFyU21vb3RoaW5nOnQuc2NhbGFyU21vb3RoaW5nLHRvb2x0aXBTb3J0OnQudG9vbHRpcFNvcnRTdHJpbmcsYXV0b1JlbG9hZDp0LmF1dG9SZWxvYWQsYXV0b1JlbG9hZFBlcmlvZEluTXM6dC5hdXRvUmVsb2FkUGVyaW9kSW5NcyxwYWdpbmF0aW9uU2l6ZTp0LnBhZ2VTaXplLHRoZW1lOnQudGhlbWVPdmVycmlkZSxub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zOnQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyxzaWRlQmFyV2lkdGhJblBlcmNlbnQ6dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQsdGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZDp0LnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQsdGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZDp0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWR9fWJhY2tlbmRUb1VpKHQpe2NvbnN0IGU9e307cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoInNjYWxhclNtb290aGluZyIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2NhbGFyU21vb3RoaW5nJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHQuaGFzT3duUHJvcGVydHkoImlnbm9yZU91dGxpZXJzIikmJiJib29sZWFuIj09dHlwZW9mIHQuaWdub3JlT3V0bGllcnMmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHQuaGFzT3duUHJvcGVydHkoInRvb2x0aXBTb3J0IikmJiJzdHJpbmciPT10eXBlb2YgdC50b29sdGlwU29ydCYmKGUudG9vbHRpcFNvcnRTdHJpbmc9dC50b29sdGlwU29ydCksdC5oYXNPd25Qcm9wZXJ0eSgiYXV0b1JlbG9hZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LmF1dG9SZWxvYWQmJihlLmF1dG9SZWxvYWQ9dC5hdXRvUmVsb2FkKSx0Lmhhc093blByb3BlcnR5KCJhdXRvUmVsb2FkUGVyaW9kSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQuYXV0b1JlbG9hZFBlcmlvZEluTXMmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHQuaGFzT3duUHJvcGVydHkoInBhZ2luYXRpb25TaXplIikmJiJudW1iZXIiPT10eXBlb2YgdC5wYWdpbmF0aW9uU2l6ZSYmKGUucGFnZVNpemU9dC5wYWdpbmF0aW9uU2l6ZSksdC5oYXNPd25Qcm9wZXJ0eSgidGhlbWUiKSYmInN0cmluZyI9PXR5cGVvZiB0LnRoZW1lJiZuZXcgU2V0KE9iamVjdC52YWx1ZXMoR1MpKS5oYXModC50aGVtZSkmJihlLnRoZW1lT3ZlcnJpZGU9dC50aGVtZSksdC5oYXNPd25Qcm9wZXJ0eSgibm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyIpJiYibnVtYmVyIj09dHlwZW9mIHQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NcyYmKGUubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5Ncz10Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMpLHQuaGFzT3duUHJvcGVydHkoInNpZGVCYXJXaWR0aEluUGVyY2VudCIpJiYibnVtYmVyIj09dHlwZW9mIHQuc2lkZUJhcldpZHRoSW5QZXJjZW50JiYoZS5zaWRlQmFyV2lkdGhJblBlcmNlbnQ9dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpLHQuaGFzT3duUHJvcGVydHkoInRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQiKSYmImJvb2xlYW4iPT10eXBlb2YgdC50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkJiYoZS50aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkPXQudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZCksdC5oYXNPd25Qcm9wZXJ0eSgidGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCIpJiYiYm9vbGVhbiI9PXR5cGVvZiB0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSxlfX1lRC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoZUQpKSkobnx8ZUQpfX0pKCksZUQuybVwcm92PU1uKHt0b2tlbjplRCxmYWN0b3J5OmVELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChlRCxbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIG5Ee2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5sb2NhbFN0b3JhZ2U9dCx0aGlzLmNvbnZlcnRlcj1lfXNldFNldHRpbmdzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KT90aGlzLmdldFNldHRpbmdzKCkucGlwZShGZSgoZT0+e3RoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oSlMsSlNPTi5zdHJpbmdpZnkodGhpcy5jb252ZXJ0ZXIudWlUb0JhY2tlbmQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpKSkpLHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oS1MpLHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUVMpfSkpLEl0KCgoKT0+e30pKSk6cnR9ZGVzZXJpYWxpemUodCl7dHJ5e3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKHQpe3JldHVybnt9fX1nZXRTZXR0aW5ncygpe3ZhciB0LGU7Y29uc3Qgbj10aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFFTKSxvPXRoaXMuY29udmVydGVyLmJhY2tlbmRUb1VpKHRoaXMuZGVzZXJpYWxpemUobj9KU09OLnN0cmluZ2lmeSh7bm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5NczpOdW1iZXIobil9KToie30iKSksaT10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG51bGwhPT0odD10aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKEtTKSkmJnZvaWQgMCE9PXQ/dDoie30iKSksYT10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG51bGwhPT0oZT10aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKEpTKSkmJnZvaWQgMCE9PWU/ZToie30iKSk7cmV0dXJuIEV0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLGkpLGEpKX19bkQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5EKSh2cihaUyksdnIodEQpKX0sbkQuybVwcm92PU1uKHt0b2tlbjpuRCxmYWN0b3J5Om5ELsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChuRCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WlN9LHt0eXBlOnREfV19KSxudWxsKTtjbGFzcyBvRHt9b0QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG9EKX0sb0QuybVtb2Q9YW8oe3R5cGU6b0R9KSxvRC7JtWluaj12bih7cHJvdmlkZXJzOlt7cHJvdmlkZTokUyx1c2VDbGFzczpuRH0se3Byb3ZpZGU6dEQsdXNlQ2xhc3M6ZUR9XSxpbXBvcnRzOltbWFNdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgob0QsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltYU10scHJvdmlkZXJzOlt7cHJvdmlkZTokUyx1c2VDbGFzczpuRH0se3Byb3ZpZGU6dEQsdXNlQ2xhc3M6ZUR9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKG9ELHtpbXBvcnRzOltYU119KTtjb25zdCBpRD1KUCgiW1BlcnNpc3RlbnQgU2V0dGluZ3NdIEVmZmVjdHMgSW5pdCIpO2NsYXNzIGFEe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5jb25maWdNb2R1bGU9bix0aGlzLmRhdGFTb3VyY2U9byx0aGlzLmluaXRpYWxpemVBbmRVcGRhdGVTZXR0aW5ncyQ9TWsoKCgpPT57Y29uc3QgdD10aGlzLmFjdGlvbnMkLnBpcGUoRGsoaUQpLFp0KCgoKT0+dGhpcy5kYXRhU291cmNlLmdldFNldHRpbmdzKCkpKSxGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goV1Moe3BhcnRpYWxTZXR0aW5nczp0fSkpfSkpLENlKDApLFp0KCgoKT0+cmUoLi4udGhpcy5jb25maWdNb2R1bGUuZ2V0R2xvYmFsU2V0dGluZ1NlbGVjdG9ycygpLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QodCkucGlwZShNZSgoKHQsZSk9Pntjb25zdCBuPU9iamVjdC52YWx1ZXModCksbz1PYmplY3QudmFsdWVzKGUpO3JldHVybiBuLmxlbmd0aD09PW8ubGVuZ3RoJiZuLmV2ZXJ5KCgodCxlKT0+dD09PW9bZV0pKX0pKSxUZSgxKSkpKSkpKSxFZSgpKTtyZXR1cm4gdC5waXBlKChmdW5jdGlvbiBlKHQpe3JldHVybiBSKChmdW5jdGlvbihlLG4pe3ZhciBvPVtdO3JldHVybiBlLnN1YnNjcmliZShuZXcgVChuLChmdW5jdGlvbih0KXtyZXR1cm4gby5wdXNoKHQpfSksKGZ1bmN0aW9uKCl7bi5uZXh0KG8pLG4uY29tcGxldGUoKX0pKSksdC5zdWJzY3JpYmUobmV3IFQobiwoZnVuY3Rpb24oKXt2YXIgdD1vO289W10sbi5uZXh0KHQpfSkseSkpLGZ1bmN0aW9uKCl7bz1udWxsfX0pKX0pKHQucGlwZShnZSg1MDApKSksWnQoKHQ9Pntjb25zdCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpT2JqZWN0LmFzc2lnbihlLG4pO3JldHVybiB0aGlzLmRhdGFTb3VyY2Uuc2V0U2V0dGluZ3MoZSl9KSkpfSkse2Rpc3BhdGNoOiExfSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gaUQoKX19YUQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFEKSh2cihTayksdnIoSXcpLHZyKHFTKSx2cigkUykpfSxhRC7JtXByb3Y9TW4oe3Rva2VuOmFELGZhY3Rvcnk6YUQuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGFELFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTa30se3R5cGU6SXd9LHt0eXBlOnFTfSx7dHlwZTokU31dfSksbnVsbCk7Y2xhc3MgckR7fXJELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyRCl9LHJELsm1bW9kPWFvKHt0eXBlOnJEfSksckQuybVpbmo9dm4oe3Byb3ZpZGVyczpbcVNdLGltcG9ydHM6W1tXay5mb3JGZWF0dXJlKFthRF0pLG9EXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHJELFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV2suZm9yRmVhdHVyZShbYURdKSxvRF0scHJvdmlkZXJzOltxU119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhyRCx7aW1wb3J0czpbR2ssb0RdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNsYXNzIHNEe31jbGFzcyBsRHt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGNEe2NvbnN0cnVjdG9yKHQpe3RoaXMubm9ybWFsaXplZE5hbWVzPW5ldyBNYXAsdGhpcy5sYXp5VXBkYXRlPW51bGwsdD90aGlzLmxhenlJbml0PSJzdHJpbmciPT10eXBlb2YgdD8oKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLHQuc3BsaXQoIlxuIikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5pbmRleE9mKCI6Iik7aWYoZT4wKXtjb25zdCBuPXQuc2xpY2UoMCxlKSxvPW4udG9Mb3dlckNhc2UoKSxpPXQuc2xpY2UoZSsxKS50cmltKCk7dGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKG4sbyksdGhpcy5oZWFkZXJzLmhhcyhvKT90aGlzLmhlYWRlcnMuZ2V0KG8pLnB1c2goaSk6dGhpcy5oZWFkZXJzLnNldChvLFtpXSl9fSkpfTooKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9PntsZXQgbj10W2VdO2NvbnN0IG89ZS50b0xvd2VyQ2FzZSgpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49W25dKSxuLmxlbmd0aD4wJiYodGhpcy5oZWFkZXJzLnNldChvLG4pLHRoaXMubWF5YmVTZXROb3JtYWxpemVkTmFtZShlLG8pKX0pKX06dGhpcy5oZWFkZXJzPW5ldyBNYXB9aGFzKHQpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuaGFzKHQudG9Mb3dlckNhc2UoKSl9Z2V0KHQpe3RoaXMuaW5pdCgpO2NvbnN0IGU9dGhpcy5oZWFkZXJzLmdldCh0LnRvTG93ZXJDYXNlKCkpO3JldHVybiBlJiZlLmxlbmd0aD4wP2VbMF06bnVsbH1rZXlzKCl7cmV0dXJuIHRoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5ub3JtYWxpemVkTmFtZXMudmFsdWVzKCkpfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmdldCh0LnRvTG93ZXJDYXNlKCkpfHxudWxsfWFwcGVuZCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6ZSxvcDoiYSJ9KX1zZXQodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOmUsb3A6InMifSl9ZGVsZXRlKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTplLG9wOiJkIn0pfW1heWJlU2V0Tm9ybWFsaXplZE5hbWUodCxlKXt0aGlzLm5vcm1hbGl6ZWROYW1lcy5oYXMoZSl8fHRoaXMubm9ybWFsaXplZE5hbWVzLnNldChlLHQpfWluaXQoKXt0aGlzLmxhenlJbml0JiYodGhpcy5sYXp5SW5pdCBpbnN0YW5jZW9mIGNEP3RoaXMuY29weUZyb20odGhpcy5sYXp5SW5pdCk6dGhpcy5sYXp5SW5pdCgpLHRoaXMubGF6eUluaXQ9bnVsbCx0aGlzLmxhenlVcGRhdGUmJih0aGlzLmxhenlVcGRhdGUuZm9yRWFjaCgodD0+dGhpcy5hcHBseVVwZGF0ZSh0KSkpLHRoaXMubGF6eVVwZGF0ZT1udWxsKSl9Y29weUZyb20odCl7dC5pbml0KCksQXJyYXkuZnJvbSh0LmhlYWRlcnMua2V5cygpKS5mb3JFYWNoKChlPT57dGhpcy5oZWFkZXJzLnNldChlLHQuaGVhZGVycy5nZXQoZSkpLHRoaXMubm9ybWFsaXplZE5hbWVzLnNldChlLHQubm9ybWFsaXplZE5hbWVzLmdldChlKSl9KSl9Y2xvbmUodCl7Y29uc3QgZT1uZXcgY0Q7cmV0dXJuIGUubGF6eUluaXQ9dGhpcy5sYXp5SW5pdCYmdGhpcy5sYXp5SW5pdCBpbnN0YW5jZW9mIGNEP3RoaXMubGF6eUluaXQ6dGhpcyxlLmxhenlVcGRhdGU9KHRoaXMubGF6eVVwZGF0ZXx8W10pLmNvbmNhdChbdF0pLGV9YXBwbHlVcGRhdGUodCl7Y29uc3QgZT10Lm5hbWUudG9Mb3dlckNhc2UoKTtzd2l0Y2godC5vcCl7Y2FzZSJhIjpjYXNlInMiOmxldCBuPXQudmFsdWU7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYobj1bbl0pLDA9PT1uLmxlbmd0aClyZXR1cm47dGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKHQubmFtZSxlKTtjb25zdCBvPSgiYSI9PT10Lm9wP3RoaXMuaGVhZGVycy5nZXQoZSk6dm9pZCAwKXx8W107by5wdXNoKC4uLm4pLHRoaXMuaGVhZGVycy5zZXQoZSxvKTticmVhaztjYXNlImQiOmNvbnN0IGk9dC52YWx1ZTtpZihpKXtsZXQgdD10aGlzLmhlYWRlcnMuZ2V0KGUpO2lmKCF0KXJldHVybjt0PXQuZmlsdGVyKCh0PT4tMT09PWkuaW5kZXhPZih0KSkpLDA9PT10Lmxlbmd0aD8odGhpcy5oZWFkZXJzLmRlbGV0ZShlKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUoZSkpOnRoaXMuaGVhZGVycy5zZXQoZSx0KX1lbHNlIHRoaXMuaGVhZGVycy5kZWxldGUoZSksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpfX1mb3JFYWNoKHQpe3RoaXMuaW5pdCgpLEFycmF5LmZyb20odGhpcy5ub3JtYWxpemVkTmFtZXMua2V5cygpKS5mb3JFYWNoKChlPT50KHRoaXMubm9ybWFsaXplZE5hbWVzLmdldChlKSx0aGlzLmhlYWRlcnMuZ2V0KGUpKSkpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZER7ZW5jb2RlS2V5KHQpe3JldHVybiBwRCh0KX1lbmNvZGVWYWx1ZSh0KXtyZXR1cm4gcEQodCl9ZGVjb2RlS2V5KHQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9ZGVjb2RlVmFsdWUodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0KX19ZnVuY3Rpb24gcEQodCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lNDAvZ2ksIkAiKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZ2ksIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lM0IvZ2ksIjsiKS5yZXBsYWNlKC8lMkIvZ2ksIisiKS5yZXBsYWNlKC8lM0QvZ2ksIj0iKS5yZXBsYWNlKC8lM0YvZ2ksIj8iKS5yZXBsYWNlKC8lMkYvZ2ksIi8iKX1mdW5jdGlvbiBtRCh0KXtyZXR1cm5gJHt0fWB9Y2xhc3MgdUR7Y29uc3RydWN0b3IodD17fSl7aWYodGhpcy51cGRhdGVzPW51bGwsdGhpcy5jbG9uZUZyb209bnVsbCx0aGlzLmVuY29kZXI9dC5lbmNvZGVyfHxuZXcgZEQsdC5mcm9tU3RyaW5nKXtpZih0LmZyb21PYmplY3QpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGZyb21TdHJpbmcgYW5kIGZyb21PYmplY3QuIik7dGhpcy5tYXA9KGZ1bmN0aW9uIGUodCxuKXtjb25zdCBvPW5ldyBNYXA7cmV0dXJuIHQubGVuZ3RoPjAmJnQucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmluZGV4T2YoIj0iKSxbaSxhXT0tMT09ZT9bbi5kZWNvZGVLZXkodCksIiJdOltuLmRlY29kZUtleSh0LnNsaWNlKDAsZSkpLG4uZGVjb2RlVmFsdWUodC5zbGljZShlKzEpKV0scj1vLmdldChpKXx8W107ci5wdXNoKGEpLG8uc2V0KGkscil9KSksb30pKHQuZnJvbVN0cmluZyx0aGlzLmVuY29kZXIpfWVsc2UgdC5mcm9tT2JqZWN0Pyh0aGlzLm1hcD1uZXcgTWFwLE9iamVjdC5rZXlzKHQuZnJvbU9iamVjdCkuZm9yRWFjaCgoZT0+e2NvbnN0IG49dC5mcm9tT2JqZWN0W2VdO3RoaXMubWFwLnNldChlLEFycmF5LmlzQXJyYXkobik/bjpbbl0pfSkpKTp0aGlzLm1hcD1udWxsfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuaGFzKHQpfWdldCh0KXt0aGlzLmluaXQoKTtjb25zdCBlPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gZT9lWzBdOm51bGx9Z2V0QWxsKHQpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLm1hcC5nZXQodCl8fG51bGx9a2V5cygpe3JldHVybiB0aGlzLmluaXQoKSxBcnJheS5mcm9tKHRoaXMubWFwLmtleXMoKSl9YXBwZW5kKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6ZSxvcDoiYSJ9KX1hcHBlbmRBbGwodCl7Y29uc3QgZT1bXTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2NvbnN0IG89dFtuXTtBcnJheS5pc0FycmF5KG8pP28uZm9yRWFjaCgodD0+e2UucHVzaCh7cGFyYW06bix2YWx1ZTp0LG9wOiJhIn0pfSkpOmUucHVzaCh7cGFyYW06bix2YWx1ZTpvLG9wOiJhIn0pfSkpLHRoaXMuY2xvbmUoZSl9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6ZSxvcDoicyJ9KX1kZWxldGUodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06dCx2YWx1ZTplLG9wOiJkIn0pfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMua2V5cygpLm1hcCgodD0+e2NvbnN0IGU9dGhpcy5lbmNvZGVyLmVuY29kZUtleSh0KTtyZXR1cm4gdGhpcy5tYXAuZ2V0KHQpLm1hcCgodD0+ZSsiPSIrdGhpcy5lbmNvZGVyLmVuY29kZVZhbHVlKHQpKSkuam9pbigiJiIpfSkpLmZpbHRlcigodD0+IiIhPT10KSkuam9pbigiJiIpfWNsb25lKHQpe2NvbnN0IGU9bmV3IHVEKHtlbmNvZGVyOnRoaXMuZW5jb2Rlcn0pO3JldHVybiBlLmNsb25lRnJvbT10aGlzLmNsb25lRnJvbXx8dGhpcyxlLnVwZGF0ZXM9KHRoaXMudXBkYXRlc3x8W10pLmNvbmNhdCh0KSxlfWluaXQoKXtudWxsPT09dGhpcy5tYXAmJih0aGlzLm1hcD1uZXcgTWFwKSxudWxsIT09dGhpcy5jbG9uZUZyb20mJih0aGlzLmNsb25lRnJvbS5pbml0KCksdGhpcy5jbG9uZUZyb20ua2V5cygpLmZvckVhY2goKHQ9PnRoaXMubWFwLnNldCh0LHRoaXMuY2xvbmVGcm9tLm1hcC5nZXQodCkpKSksdGhpcy51cGRhdGVzLmZvckVhY2goKHQ9Pntzd2l0Y2godC5vcCl7Y2FzZSJhIjpjYXNlInMiOmNvbnN0IGU9KCJhIj09PXQub3A/dGhpcy5tYXAuZ2V0KHQucGFyYW0pOnZvaWQgMCl8fFtdO2UucHVzaChtRCh0LnZhbHVlKSksdGhpcy5tYXAuc2V0KHQucGFyYW0sZSk7YnJlYWs7Y2FzZSJkIjppZih2b2lkIDA9PT10LnZhbHVlKXt0aGlzLm1hcC5kZWxldGUodC5wYXJhbSk7YnJlYWt9e2xldCBlPXRoaXMubWFwLmdldCh0LnBhcmFtKXx8W107Y29uc3Qgbj1lLmluZGV4T2YobUQodC52YWx1ZSkpOy0xIT09biYmZS5zcGxpY2UobiwxKSxlLmxlbmd0aD4wP3RoaXMubWFwLnNldCh0LnBhcmFtLGUpOnRoaXMubWFwLmRlbGV0ZSh0LnBhcmFtKX19fSkpLHRoaXMuY2xvbmVGcm9tPXRoaXMudXBkYXRlcz1udWxsKX19Y2xhc3MgZkR7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfXNldCh0LGUpe3JldHVybiB0aGlzLm1hcC5zZXQodCxlKSx0aGlzfWdldCh0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHQpfHx0aGlzLm1hcC5zZXQodCx0LmRlZmF1bHRWYWx1ZSgpKSx0aGlzLm1hcC5nZXQodCl9ZGVsZXRlKHQpe3JldHVybiB0aGlzLm1hcC5kZWxldGUodCksdGhpc31rZXlzKCl7cmV0dXJuIHRoaXMubWFwLmtleXMoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGdEKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn1mdW5jdGlvbiBoRCh0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9ifWZ1bmN0aW9uIGJEKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YX1jbGFzcyB5RHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtsZXQgaTtpZih0aGlzLnVybD1lLHRoaXMuYm9keT1udWxsLHRoaXMucmVwb3J0UHJvZ3Jlc3M9ITEsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5yZXNwb25zZVR5cGU9Impzb24iLHRoaXMubWV0aG9kPXQudG9VcHBlckNhc2UoKSwoZnVuY3Rpb24gYSh0KXtzd2l0Y2godCl7Y2FzZSJERUxFVEUiOmNhc2UiR0VUIjpjYXNlIkhFQUQiOmNhc2UiT1BUSU9OUyI6Y2FzZSJKU09OUCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KSh0aGlzLm1ldGhvZCl8fG8/KHRoaXMuYm9keT12b2lkIDAhPT1uP246bnVsbCxpPW8pOmk9bixpJiYodGhpcy5yZXBvcnRQcm9ncmVzcz0hIWkucmVwb3J0UHJvZ3Jlc3MsdGhpcy53aXRoQ3JlZGVudGlhbHM9ISFpLndpdGhDcmVkZW50aWFscyxpLnJlc3BvbnNlVHlwZSYmKHRoaXMucmVzcG9uc2VUeXBlPWkucmVzcG9uc2VUeXBlKSxpLmhlYWRlcnMmJih0aGlzLmhlYWRlcnM9aS5oZWFkZXJzKSxpLmNvbnRleHQmJih0aGlzLmNvbnRleHQ9aS5jb250ZXh0KSxpLnBhcmFtcyYmKHRoaXMucGFyYW1zPWkucGFyYW1zKSksdGhpcy5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBjRCksdGhpcy5jb250ZXh0fHwodGhpcy5jb250ZXh0PW5ldyBmRCksdGhpcy5wYXJhbXMpe2NvbnN0IHQ9dGhpcy5wYXJhbXMudG9TdHJpbmcoKTtpZigwPT09dC5sZW5ndGgpdGhpcy51cmxXaXRoUGFyYW1zPWU7ZWxzZXtjb25zdCBuPWUuaW5kZXhPZigiPyIpO3RoaXMudXJsV2l0aFBhcmFtcz1lKygtMT09PW4/Ij8iOm48ZS5sZW5ndGgtMT8iJiI6IiIpK3R9fWVsc2UgdGhpcy5wYXJhbXM9bmV3IHVELHRoaXMudXJsV2l0aFBhcmFtcz1lfXNlcmlhbGl6ZUJvZHkoKXtyZXR1cm4gbnVsbD09PXRoaXMuYm9keT9udWxsOmdEKHRoaXMuYm9keSl8fGhEKHRoaXMuYm9keSl8fGJEKHRoaXMuYm9keSl8fChmdW5jdGlvbiB0KGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSkodGhpcy5ib2R5KXx8InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/dGhpcy5ib2R5OnRoaXMuYm9keSBpbnN0YW5jZW9mIHVEP3RoaXMuYm9keS50b1N0cmluZygpOiJvYmplY3QiPT10eXBlb2YgdGhpcy5ib2R5fHwiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLmJvZHl8fEFycmF5LmlzQXJyYXkodGhpcy5ib2R5KT9KU09OLnN0cmluZ2lmeSh0aGlzLmJvZHkpOnRoaXMuYm9keS50b1N0cmluZygpfWRldGVjdENvbnRlbnRUeXBlSGVhZGVyKCl7cmV0dXJuIG51bGw9PT10aGlzLmJvZHl8fGJEKHRoaXMuYm9keSk/bnVsbDpoRCh0aGlzLmJvZHkpP3RoaXMuYm9keS50eXBlfHxudWxsOmdEKHRoaXMuYm9keSk/bnVsbDoic3RyaW5nIj09dHlwZW9mIHRoaXMuYm9keT8idGV4dC9wbGFpbiI6dGhpcy5ib2R5IGluc3RhbmNlb2YgdUQ/ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Ijoib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8Im51bWJlciI9PXR5cGVvZiB0aGlzLmJvZHl8fCJib29sZWFuIj09dHlwZW9mIHRoaXMuYm9keT8iYXBwbGljYXRpb24vanNvbiI6bnVsbH1jbG9uZSh0PXt9KXt2YXIgZTtjb25zdCBuPXQubWV0aG9kfHx0aGlzLm1ldGhvZCxvPXQudXJsfHx0aGlzLnVybCxpPXQucmVzcG9uc2VUeXBlfHx0aGlzLnJlc3BvbnNlVHlwZSxhPXZvaWQgMCE9PXQuYm9keT90LmJvZHk6dGhpcy5ib2R5LHI9dm9pZCAwIT09dC53aXRoQ3JlZGVudGlhbHM/dC53aXRoQ3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHMscz12b2lkIDAhPT10LnJlcG9ydFByb2dyZXNzP3QucmVwb3J0UHJvZ3Jlc3M6dGhpcy5yZXBvcnRQcm9ncmVzcztsZXQgbD10LmhlYWRlcnN8fHRoaXMuaGVhZGVycyxjPXQucGFyYW1zfHx0aGlzLnBhcmFtcztjb25zdCBkPW51bGwhPT0oZT10LmNvbnRleHQpJiZ2b2lkIDAhPT1lP2U6dGhpcy5jb250ZXh0O3JldHVybiB2b2lkIDAhPT10LnNldEhlYWRlcnMmJihsPU9iamVjdC5rZXlzKHQuc2V0SGVhZGVycykucmVkdWNlKCgoZSxuKT0+ZS5zZXQobix0LnNldEhlYWRlcnNbbl0pKSxsKSksdC5zZXRQYXJhbXMmJihjPU9iamVjdC5rZXlzKHQuc2V0UGFyYW1zKS5yZWR1Y2UoKChlLG4pPT5lLnNldChuLHQuc2V0UGFyYW1zW25dKSksYykpLG5ldyB5RChuLG8sYSx7cGFyYW1zOmMsaGVhZGVyczpsLGNvbnRleHQ6ZCxyZXBvcnRQcm9ncmVzczpzLHJlc3BvbnNlVHlwZTppLHdpdGhDcmVkZW50aWFsczpyfSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi92YXIgX0Q7IShmdW5jdGlvbih0KXt0W3QuU2VudD0wXT0iU2VudCIsdFt0LlVwbG9hZFByb2dyZXNzPTFdPSJVcGxvYWRQcm9ncmVzcyIsdFt0LlJlc3BvbnNlSGVhZGVyPTJdPSJSZXNwb25zZUhlYWRlciIsdFt0LkRvd25sb2FkUHJvZ3Jlc3M9M109IkRvd25sb2FkUHJvZ3Jlc3MiLHRbdC5SZXNwb25zZT00XT0iUmVzcG9uc2UiLHRbdC5Vc2VyPTVdPSJVc2VyIn0pKF9EfHwoX0Q9e30pKTtjbGFzcyBDRHtjb25zdHJ1Y3Rvcih0LGU9MjAwLG49Ik9LIil7dGhpcy5oZWFkZXJzPXQuaGVhZGVyc3x8bmV3IGNELHRoaXMuc3RhdHVzPXZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOmUsdGhpcy5zdGF0dXNUZXh0PXQuc3RhdHVzVGV4dHx8bix0aGlzLnVybD10LnVybHx8bnVsbCx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMH19Y2xhc3MgTUQgZXh0ZW5kcyBDRHtjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcih0KSx0aGlzLnR5cGU9X0QuUmVzcG9uc2VIZWFkZXJ9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBNRCh7aGVhZGVyczp0LmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09dC5zdGF0dXM/dC5zdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0LnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6dC51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgdkQgZXh0ZW5kcyBDRHtjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcih0KSx0aGlzLnR5cGU9X0QuUmVzcG9uc2UsdGhpcy5ib2R5PXZvaWQgMCE9PXQuYm9keT90LmJvZHk6bnVsbH1jbG9uZSh0PXt9KXtyZXR1cm4gbmV3IHZEKHtib2R5OnZvaWQgMCE9PXQuYm9keT90LmJvZHk6dGhpcy5ib2R5LGhlYWRlcnM6dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dC5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOnQudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIHhEIGV4dGVuZHMgQ0R7Y29uc3RydWN0b3IodCl7c3VwZXIodCwwLCJVbmtub3duIEVycm9yIiksdGhpcy5uYW1lPSJIdHRwRXJyb3JSZXNwb25zZSIsdGhpcy5vaz0hMSx0aGlzLm1lc3NhZ2U9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwP2BIdHRwIGZhaWx1cmUgZHVyaW5nIHBhcnNpbmcgZm9yICR7dC51cmx8fCIodW5rbm93biB1cmwpIn1gOmBIdHRwIGZhaWx1cmUgcmVzcG9uc2UgZm9yICR7dC51cmx8fCIodW5rbm93biB1cmwpIn06ICR7dC5zdGF0dXN9ICR7dC5zdGF0dXNUZXh0fWAsdGhpcy5lcnJvcj10LmVycm9yfHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gT0QodCxlKXtyZXR1cm57Ym9keTplLGhlYWRlcnM6dC5oZWFkZXJzLGNvbnRleHQ6dC5jb250ZXh0LG9ic2VydmU6dC5vYnNlcnZlLHBhcmFtczp0LnBhcmFtcyxyZXBvcnRQcm9ncmVzczp0LnJlcG9ydFByb2dyZXNzLHJlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9fWNsYXNzIFBEe2NvbnN0cnVjdG9yKHQpe3RoaXMuaGFuZGxlcj10fXJlcXVlc3QodCxlLG49e30pe2xldCBvO2lmKHQgaW5zdGFuY2VvZiB5RClvPXQ7ZWxzZXtsZXQgaSxhO2k9bi5oZWFkZXJzIGluc3RhbmNlb2YgY0Q/bi5oZWFkZXJzOm5ldyBjRChuLmhlYWRlcnMpLG4ucGFyYW1zJiYoYT1uLnBhcmFtcyBpbnN0YW5jZW9mIHVEP24ucGFyYW1zOm5ldyB1RCh7ZnJvbU9iamVjdDpuLnBhcmFtc30pKSxvPW5ldyB5RCh0LGUsdm9pZCAwIT09bi5ib2R5P24uYm9keTpudWxsLHtoZWFkZXJzOmksY29udGV4dDpuLmNvbnRleHQscGFyYW1zOmEscmVwb3J0UHJvZ3Jlc3M6bi5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6bi5yZXNwb25zZVR5cGV8fCJqc29uIix3aXRoQ3JlZGVudGlhbHM6bi53aXRoQ3JlZGVudGlhbHN9KX1jb25zdCBpPUV0KG8pLnBpcGUoKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gbChlKT9adCh0LGUsMSk6WnQodCwxKX0pKCh0PT50aGlzLmhhbmRsZXIuaGFuZGxlKHQpKSkpO2lmKHQgaW5zdGFuY2VvZiB5RHx8ImV2ZW50cyI9PT1uLm9ic2VydmUpcmV0dXJuIGk7Y29uc3Qgcj1pLnBpcGUoY2UoKHQ9PnQgaW5zdGFuY2VvZiB2RCkpKTtzd2l0Y2gobi5vYnNlcnZlfHwiYm9keSIpe2Nhc2UiYm9keSI6c3dpdGNoKG8ucmVzcG9uc2VUeXBlKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gci5waXBlKEl0KCh0PT57aWYobnVsbCE9PXQuYm9keSYmISh0LmJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYW4gQXJyYXlCdWZmZXIuIik7cmV0dXJuIHQuYm9keX0pKSk7Y2FzZSJibG9iIjpyZXR1cm4gci5waXBlKEl0KCh0PT57aWYobnVsbCE9PXQuYm9keSYmISh0LmJvZHkgaW5zdGFuY2VvZiBCbG9iKSl0aHJvdyBuZXcgRXJyb3IoIlJlc3BvbnNlIGlzIG5vdCBhIEJsb2IuIik7cmV0dXJuIHQuYm9keX0pKSk7Y2FzZSJ0ZXh0IjpyZXR1cm4gci5waXBlKEl0KCh0PT57aWYobnVsbCE9PXQuYm9keSYmInN0cmluZyIhPXR5cGVvZiB0LmJvZHkpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBzdHJpbmcuIik7cmV0dXJuIHQuYm9keX0pKSk7Y2FzZSJqc29uIjpkZWZhdWx0OnJldHVybiByLnBpcGUoSXQoKHQ9PnQuYm9keSkpKX1jYXNlInJlc3BvbnNlIjpyZXR1cm4gcjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5yZWFjaGFibGU6IHVuaGFuZGxlZCBvYnNlcnZlIHR5cGUgJHtuLm9ic2VydmV9fWApfX1kZWxldGUodCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJERUxFVEUiLHQsZSl9Z2V0KHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiR0VUIix0LGUpfWhlYWQodCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJIRUFEIix0LGUpfWpzb25wKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSlNPTlAiLHQse3BhcmFtczoobmV3IHVEKS5hcHBlbmQoZSwiSlNPTlBfQ0FMTEJBQ0siKSxvYnNlcnZlOiJib2R5IixyZXNwb25zZVR5cGU6Impzb24ifSl9b3B0aW9ucyh0LGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIk9QVElPTlMiLHQsZSl9cGF0Y2godCxlLG49e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIlBBVENIIix0LE9EKG4sZSkpfXBvc3QodCxlLG49e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIlBPU1QiLHQsT0QobixlKSl9cHV0KHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQVVQiLHQsT0QobixlKSl9fVBELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQRCkodnIoc0QpKX0sUEQuybVwcm92PU1uKHt0b2tlbjpQRCxmYWN0b3J5OlBELsm1ZmFjfSksUEQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpzRH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUEQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnNEfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHdEe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uZXh0PXQsdGhpcy5pbnRlcmNlcHRvcj1lfWhhbmRsZSh0KXtyZXR1cm4gdGhpcy5pbnRlcmNlcHRvci5pbnRlcmNlcHQodCx0aGlzLm5leHQpfX1jb25zdCBrRD1uZXcgR2EoIkhUVFBfSU5URVJDRVBUT1JTIik7Y2xhc3MgU0R7aW50ZXJjZXB0KHQsZSl7cmV0dXJuIGUuaGFuZGxlKHQpfX1TRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0QpfSxTRC7JtXByb3Y9TW4oe3Rva2VuOlNELGZhY3Rvcnk6U0QuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFNELFt7dHlwZTppbX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgREQ9MDtjbGFzcyBFRHt9Y2xhc3MgUkR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNhbGxiYWNrTWFwPXQsdGhpcy5kb2N1bWVudD1lLHRoaXMucmVzb2x2ZWRQcm9taXNlPVByb21pc2UucmVzb2x2ZSgpfW5leHRDYWxsYmFjaygpe3JldHVybiJuZ19qc29ucF9jYWxsYmFja18iK0REKyt9aGFuZGxlKHQpe2lmKCJKU09OUCIhPT10Lm1ldGhvZCl0aHJvdyBuZXcgRXJyb3IoIkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEpTT05QIHJlcXVlc3QgbWV0aG9kLiIpO2lmKCJqc29uIiE9PXQucmVzcG9uc2VUeXBlKXRocm93IG5ldyBFcnJvcigiSlNPTlAgcmVxdWVzdHMgbXVzdCB1c2UgSnNvbiByZXNwb25zZSB0eXBlLiIpO3JldHVybiBuZXcgRCgoZT0+e2NvbnN0IG49dGhpcy5uZXh0Q2FsbGJhY2soKSxvPXQudXJsV2l0aFBhcmFtcy5yZXBsYWNlKC89SlNPTlBfQ0FMTEJBQ0soJnwkKS8sYD0ke259JDFgKSxpPXRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7aS5zcmM9bztsZXQgYT1udWxsLHI9ITEscz0hMTt0aGlzLmNhbGxiYWNrTWFwW25dPXQ9PntkZWxldGUgdGhpcy5jYWxsYmFja01hcFtuXSxzfHwoYT10LHI9ITApfTtjb25zdCBsPSgpPT57aS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSksZGVsZXRlIHRoaXMuY2FsbGJhY2tNYXBbbl19LGM9dD0+e3N8fHRoaXMucmVzb2x2ZWRQcm9taXNlLnRoZW4oKCgpPT57bCgpLHI/KGUubmV4dChuZXcgdkQoe2JvZHk6YSxzdGF0dXM6MjAwLHN0YXR1c1RleHQ6Ik9LIix1cmw6b30pKSxlLmNvbXBsZXRlKCkpOmUuZXJyb3IobmV3IHhEKHt1cmw6byxzdGF0dXM6MCxzdGF0dXNUZXh0OiJKU09OUCBFcnJvciIsZXJyb3I6bmV3IEVycm9yKCJKU09OUCBpbmplY3RlZCBzY3JpcHQgZGlkIG5vdCBpbnZva2UgY2FsbGJhY2suIil9KSl9KSl9LGQ9dD0+e3N8fChsKCksZS5lcnJvcihuZXcgeEQoe2Vycm9yOnQsc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLHVybDpvfSkpKX07cmV0dXJuIGkuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYyksaS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZCksdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkpLGUubmV4dCh7dHlwZTpfRC5TZW50fSksKCk9PntzPSEwLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsYyksaS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsZCksbCgpfX0pKX19UkQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJEKSh2cihFRCksdnIoWl8pKX0sUkQuybVwcm92PU1uKHt0b2tlbjpSRCxmYWN0b3J5OlJELsm1ZmFjfSksUkQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFRH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChSRCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RUR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y2xhc3MgQUR7Y29uc3RydWN0b3IodCl7dGhpcy5qc29ucD10fWludGVyY2VwdCh0LGUpe3JldHVybiJKU09OUCI9PT10Lm1ldGhvZD90aGlzLmpzb25wLmhhbmRsZSh0KTplLmhhbmRsZSh0KX19QUQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFEKSh2cihSRCkpfSxBRC7JtXByb3Y9TW4oe3Rva2VuOkFELGZhY3Rvcnk6QUQuybVmYWN9KSxBRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlJEfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChBRCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UkR9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVEQ9L15cKVxdXH0nLD9cbi87Y2xhc3MgTkR7Y29uc3RydWN0b3IodCl7dGhpcy54aHJGYWN0b3J5PXR9aGFuZGxlKHQpe2lmKCJKU09OUCI9PT10Lm1ldGhvZCl0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBjb25zdHJ1Y3QgSnNvbnAgcmVxdWVzdCB3aXRob3V0IEh0dHBDbGllbnRKc29ucE1vZHVsZSBpbnN0YWxsZWQuIik7cmV0dXJuIG5ldyBEKChlPT57Y29uc3Qgbj10aGlzLnhockZhY3RvcnkuYnVpbGQoKTtpZihuLm9wZW4odC5tZXRob2QsdC51cmxXaXRoUGFyYW1zKSx0LndpdGhDcmVkZW50aWFscyYmKG4ud2l0aENyZWRlbnRpYWxzPSEwKSx0LmhlYWRlcnMuZm9yRWFjaCgoKHQsZSk9Pm4uc2V0UmVxdWVzdEhlYWRlcih0LGUuam9pbigiLCIpKSkpLHQuaGVhZGVycy5oYXMoIkFjY2VwdCIpfHxuLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiIpLCF0LmhlYWRlcnMuaGFzKCJDb250ZW50LVR5cGUiKSl7Y29uc3QgZT10LmRldGVjdENvbnRlbnRUeXBlSGVhZGVyKCk7bnVsbCE9PWUmJm4uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixlKX1pZih0LnJlc3BvbnNlVHlwZSl7Y29uc3QgZT10LnJlc3BvbnNlVHlwZS50b0xvd2VyQ2FzZSgpO24ucmVzcG9uc2VUeXBlPSJqc29uIiE9PWU/ZToidGV4dCJ9Y29uc3Qgbz10LnNlcmlhbGl6ZUJvZHkoKTtsZXQgaT1udWxsO2NvbnN0IGE9KCk9PntpZihudWxsIT09aSlyZXR1cm4gaTtjb25zdCBlPTEyMjM9PT1uLnN0YXR1cz8yMDQ6bi5zdGF0dXMsbz1uLnN0YXR1c1RleHR8fCJPSyIsYT1uZXcgY0Qobi5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkscj0oZnVuY3Rpb24gcyh0KXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gdCYmdC5yZXNwb25zZVVSTD90LnJlc3BvbnNlVVJMOi9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHQuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP3QuZ2V0UmVzcG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTpudWxsfSkobil8fHQudXJsO3JldHVybiBpPW5ldyBNRCh7aGVhZGVyczphLHN0YXR1czplLHN0YXR1c1RleHQ6byx1cmw6cn0pLGl9LHI9KCk9PntsZXR7aGVhZGVyczpvLHN0YXR1czppLHN0YXR1c1RleHQ6cix1cmw6c309YSgpLGw9bnVsbDsyMDQhPT1pJiYobD12b2lkIDA9PT1uLnJlc3BvbnNlP24ucmVzcG9uc2VUZXh0Om4ucmVzcG9uc2UpLDA9PT1pJiYoaT1sPzIwMDowKTtsZXQgYz1pPj0yMDAmJmk8MzAwO2lmKCJqc29uIj09PXQucmVzcG9uc2VUeXBlJiYic3RyaW5nIj09dHlwZW9mIGwpe2NvbnN0IHQ9bDtsPWwucmVwbGFjZShURCwiIik7dHJ5e2w9IiIhPT1sP0pTT04ucGFyc2UobCk6bnVsbH1jYXRjaChlKXtsPXQsYyYmKGM9ITEsbD17ZXJyb3I6ZSx0ZXh0Omx9KX19Yz8oZS5uZXh0KG5ldyB2RCh7Ym9keTpsLGhlYWRlcnM6byxzdGF0dXM6aSxzdGF0dXNUZXh0OnIsdXJsOnN8fHZvaWQgMH0pKSxlLmNvbXBsZXRlKCkpOmUuZXJyb3IobmV3IHhEKHtlcnJvcjpsLGhlYWRlcnM6byxzdGF0dXM6aSxzdGF0dXNUZXh0OnIsdXJsOnN8fHZvaWQgMH0pKX0scz10PT57Y29uc3R7dXJsOm99PWEoKSxpPW5ldyB4RCh7ZXJyb3I6dCxzdGF0dXM6bi5zdGF0dXN8fDAsc3RhdHVzVGV4dDpuLnN0YXR1c1RleHR8fCJVbmtub3duIEVycm9yIix1cmw6b3x8dm9pZCAwfSk7ZS5lcnJvcihpKX07bGV0IGw9ITE7Y29uc3QgYz1vPT57bHx8KGUubmV4dChhKCkpLGw9ITApO2xldCBpPXt0eXBlOl9ELkRvd25sb2FkUHJvZ3Jlc3MsbG9hZGVkOm8ubG9hZGVkfTtvLmxlbmd0aENvbXB1dGFibGUmJihpLnRvdGFsPW8udG90YWwpLCJ0ZXh0Ij09PXQucmVzcG9uc2VUeXBlJiZuLnJlc3BvbnNlVGV4dCYmKGkucGFydGlhbFRleHQ9bi5yZXNwb25zZVRleHQpLGUubmV4dChpKX0sZD10PT57bGV0IG49e3R5cGU6X0QuVXBsb2FkUHJvZ3Jlc3MsbG9hZGVkOnQubG9hZGVkfTt0Lmxlbmd0aENvbXB1dGFibGUmJihuLnRvdGFsPXQudG90YWwpLGUubmV4dChuKX07cmV0dXJuIG4uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsciksbi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIscyksbi5hZGRFdmVudExpc3RlbmVyKCJ0aW1lb3V0IixzKSxuLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixzKSx0LnJlcG9ydFByb2dyZXNzJiYobi5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsYyksbnVsbCE9PW8mJm4udXBsb2FkJiZuLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZCkpLG4uc2VuZChvKSxlLm5leHQoe3R5cGU6X0QuU2VudH0pLCgpPT57bi5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIscyksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIscyksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixyKSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLHMpLHQucmVwb3J0UHJvZ3Jlc3MmJihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixjKSxudWxsIT09byYmbi51cGxvYWQmJm4udXBsb2FkLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixkKSksbi5yZWFkeVN0YXRlIT09bi5ET05FJiZuLmFib3J0KCl9fSkpfX1ORC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TkQpKHZyKFhNKSl9LE5ELsm1cHJvdj1Nbih7dG9rZW46TkQsZmFjdG9yeTpORC7JtWZhY30pLE5ELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WE19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE5ELFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYTX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6RD1uZXcgR2EoIlhTUkZfQ09PS0lFX05BTUUiKSxJRD1uZXcgR2EoIlhTUkZfSEVBREVSX05BTUUiKTtjbGFzcyBIRHt9Y2xhc3MgRkR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZG9jPXQsdGhpcy5wbGF0Zm9ybT1lLHRoaXMuY29va2llTmFtZT1uLHRoaXMubGFzdENvb2tpZVN0cmluZz0iIix0aGlzLmxhc3RUb2tlbj1udWxsLHRoaXMucGFyc2VDb3VudD0wfWdldFRva2VuKCl7aWYoInNlcnZlciI9PT10aGlzLnBsYXRmb3JtKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5kb2MuY29va2llfHwiIjtyZXR1cm4gdCE9PXRoaXMubGFzdENvb2tpZVN0cmluZyYmKHRoaXMucGFyc2VDb3VudCsrLHRoaXMubGFzdFRva2VuPWlNKHQsdGhpcy5jb29raWVOYW1lKSx0aGlzLmxhc3RDb29raWVTdHJpbmc9dCksdGhpcy5sYXN0VG9rZW59fUZELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGRCkodnIoWl8pLHZyKGp5KSx2cih6RCkpfSxGRC7JtXByb3Y9TW4oe3Rva2VuOkZELGZhY3Rvcnk6RkQuybVmYWN9KSxGRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2p5XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbekRdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEZELFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltqeV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3pEXX1dfV19KSxudWxsKTtjbGFzcyBMRHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudG9rZW5TZXJ2aWNlPXQsdGhpcy5oZWFkZXJOYW1lPWV9aW50ZXJjZXB0KHQsZSl7Y29uc3Qgbj10LnVybC50b0xvd2VyQ2FzZSgpO2lmKCJHRVQiPT09dC5tZXRob2R8fCJIRUFEIj09PXQubWV0aG9kfHxuLnN0YXJ0c1dpdGgoImh0dHA6Ly8iKXx8bi5zdGFydHNXaXRoKCJodHRwczovLyIpKXJldHVybiBlLmhhbmRsZSh0KTtjb25zdCBvPXRoaXMudG9rZW5TZXJ2aWNlLmdldFRva2VuKCk7cmV0dXJuIG51bGw9PT1vfHx0LmhlYWRlcnMuaGFzKHRoaXMuaGVhZGVyTmFtZSl8fCh0PXQuY2xvbmUoe2hlYWRlcnM6dC5oZWFkZXJzLnNldCh0aGlzLmhlYWRlck5hbWUsbyl9KSksZS5oYW5kbGUodCl9fUxELsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMRCkodnIoSEQpLHZyKElEKSl9LExELsm1cHJvdj1Nbih7dG9rZW46TEQsZmFjdG9yeTpMRC7JtWZhY30pLExELmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SER9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltJRF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTEQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkhEfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSURdfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQkR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmJhY2tlbmQ9dCx0aGlzLmluamVjdG9yPWUsdGhpcy5jaGFpbj1udWxsfWhhbmRsZSh0KXtpZihudWxsPT09dGhpcy5jaGFpbil7Y29uc3QgdD10aGlzLmluamVjdG9yLmdldChrRCxbXSk7dGhpcy5jaGFpbj10LnJlZHVjZVJpZ2h0KCgodCxlKT0+bmV3IHdEKHQsZSkpLHRoaXMuYmFja2VuZCl9cmV0dXJuIHRoaXMuY2hhaW4uaGFuZGxlKHQpfX1mdW5jdGlvbiBWRCgpe3JldHVybiJvYmplY3QiPT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fX1CRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QkQpKHZyKGxEKSx2cihycCkpfSxCRC7JtXByb3Y9TW4oe3Rva2VuOkJELGZhY3Rvcnk6QkQuybVmYWN9KSxCRC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmxEfSx7dHlwZTpycH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQkQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxEfSx7dHlwZTpycH1dfSksbnVsbCk7Y2xhc3MgakR7c3RhdGljIGRpc2FibGUoKXtyZXR1cm57bmdNb2R1bGU6akQscHJvdmlkZXJzOlt7cHJvdmlkZTpMRCx1c2VDbGFzczpTRH1dfX1zdGF0aWMgd2l0aE9wdGlvbnModD17fSl7cmV0dXJue25nTW9kdWxlOmpELHByb3ZpZGVyczpbdC5jb29raWVOYW1lP3twcm92aWRlOnpELHVzZVZhbHVlOnQuY29va2llTmFtZX06W10sdC5oZWFkZXJOYW1lP3twcm92aWRlOklELHVzZVZhbHVlOnQuaGVhZGVyTmFtZX06W11dfX19akQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpEKX0sakQuybVtb2Q9YW8oe3R5cGU6akR9KSxqRC7JtWluaj12bih7cHJvdmlkZXJzOltMRCx7cHJvdmlkZTprRCx1c2VFeGlzdGluZzpMRCxtdWx0aTohMH0se3Byb3ZpZGU6SEQsdXNlQ2xhc3M6RkR9LHtwcm92aWRlOnpELHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6SUQsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoakQsW3t0eXBlOkF5LGFyZ3M6W3twcm92aWRlcnM6W0xELHtwcm92aWRlOmtELHVzZUV4aXN0aW5nOkxELG11bHRpOiEwfSx7cHJvdmlkZTpIRCx1c2VDbGFzczpGRH0se3Byb3ZpZGU6ekQsdXNlVmFsdWU6IlhTUkYtVE9LRU4ifSx7cHJvdmlkZTpJRCx1c2VWYWx1ZToiWC1YU1JGLVRPS0VOIn1dfV19XSxudWxsLG51bGwpO2NsYXNzIFVEe31VRC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VUQpfSxVRC7JtW1vZD1hbyh7dHlwZTpVRH0pLFVELsm1aW5qPXZuKHtwcm92aWRlcnM6W1BELHtwcm92aWRlOnNELHVzZUNsYXNzOkJEfSxORCx7cHJvdmlkZTpsRCx1c2VFeGlzdGluZzpORH1dLGltcG9ydHM6W1tqRC53aXRoT3B0aW9ucyh7Y29va2llTmFtZToiWFNSRi1UT0tFTiIsaGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIn0pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFVELFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbakQud2l0aE9wdGlvbnMoe2Nvb2tpZU5hbWU6IlhTUkYtVE9LRU4iLGhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiJ9KV0scHJvdmlkZXJzOltQRCx7cHJvdmlkZTpzRCx1c2VDbGFzczpCRH0sTkQse3Byb3ZpZGU6bEQsdXNlRXhpc3Rpbmc6TkR9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFVELHtpbXBvcnRzOltqRF19KTtjbGFzcyBHRHt9R0QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdEKX0sR0QuybVtb2Q9YW8oe3R5cGU6R0R9KSxHRC7JtWluaj12bih7cHJvdmlkZXJzOltSRCx7cHJvdmlkZTpFRCx1c2VGYWN0b3J5OlZEfSx7cHJvdmlkZTprRCx1c2VDbGFzczpBRCxtdWx0aTohMH1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChHRCxbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpbUkQse3Byb3ZpZGU6RUQsdXNlRmFjdG9yeTpWRH0se3Byb3ZpZGU6a0QsdXNlQ2xhc3M6QUQsbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKTtjb25zdCBXRD0iZmVhdHVyZSIsWUQ9S3coV0QpLHFEPVp3KFlELCh0PT50LmlzRmVhdHVyZUZsYWdzTG9hZGVkKSksWkQ9WncoWUQsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmRlZmF1bHRGbGFncyksdC5mbGFnT3ZlcnJpZGVzKSkpLFhEPVp3KFlELCh0PT50LmZsYWdPdmVycmlkZXN8fHt9KSksS0Q9WncoWkQsKHQ9PnQuaXNBdXRvRGFya01vZGVBbGxvd2VkKSksSkQ9WncoWkQsKHQ9Pm51bGwhPT10LmVuYWJsZURhcmtNb2RlT3ZlcnJpZGU/dC5lbmFibGVEYXJrTW9kZU92ZXJyaWRlOnQuZGVmYXVsdEVuYWJsZURhcmtNb2RlKSksUUQ9WncoWkQsKHQ9PnQuZW5hYmxlRGFya01vZGVPdmVycmlkZSkpLCREPVp3KFpELCh0PT50LmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zKSksdEU9WncoWkQsKHQ9PnQuaW5Db2xhYikpLGVFPVp3KFpELCh0PT50LmVuYWJsZWRDb2xvckdyb3VwKSksbkU9WncoWkQsKHQ9PnQuZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4KSksb0U9WncoWkQsKHQ9PnQubWV0cmljc0ltYWdlU3VwcG9ydEVuYWJsZWQpKSxpRT1adyhaRCwodD0+dC5lbmFibGVkTGlua2VkVGltZSkpLGFFPVp3KFpELCh0PT50LmVuYWJsZVRpbWVTZXJpZXNQcm9tb3Rpb24pKTtmdW5jdGlvbiByRSh0KXtjb25zdCBlPXt9O2Zvcihjb25zdFtuLG9db2YgdC5lbnRyaWVzKCkpZVtuXT1vO3JldHVybiBlfWZ1bmN0aW9uIHNFKHQpe2xldCBlPXQuaGVhZGVyc3x8bmV3IGNEO3JldHVybiBlPWUuYXBwZW5kKCJYLVhTUkYtUHJvdGVjdGVkIiwiMSIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aGVhZGVyczplfSl9Y2xhc3MgbEV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYXBwUm9vdFByb3ZpZGVyPXQsdGhpcy5odHRwPWUsdGhpcy5zdG9yZT1ufXJlc29sdmVBcHBSb290KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQpOnR9Z2V0KHQsZT17fSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxlKX1wb3N0KHQsZSxuPXt9KXtyZXR1cm4gbj1zRShuKSx0aGlzLnN0b3JlLnNlbGVjdChxRCkucGlwZShjZSgodD0+Qm9vbGVhbih0KSkpLGJlKDEpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KHRFKSksWnQoKChbLG9dKT0+e2NvbnN0IGk9dGhpcy5yZXNvbHZlQXBwUm9vdCh0KTtyZXR1cm4gbz90aGlzLmh0dHAuZ2V0KGkse2hlYWRlcnM6bi5oZWFkZXJzLHBhcmFtczpyRShlKX0pOnRoaXMuaHR0cC5wb3N0KGksZSxuKX0pKSl9cHV0KHQsZSxuPXt9KXtyZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnJlc29sdmVBcHBSb290KHQpLGUsc0UobikpfWRlbGV0ZSh0LGU9e30pe3JldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMucmVzb2x2ZUFwcFJvb3QodCksc0UoZSkpfX1sRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bEUpKHZyKGVTKSx2cihQRCksdnIoSXcpKX0sbEUuybVwcm92PU1uKHt0b2tlbjpsRSxmYWN0b3J5OmxFLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsRSxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZVN9LHt0eXBlOlBEfSx7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgY0V7fXZhciBkRSxwRSxtRTtjRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Y0UpfSxjRS7JtW1vZD1hbyh7dHlwZTpjRX0pLGNFLsm1aW5qPXZuKHtwcm92aWRlcnM6W2xFXSxpbXBvcnRzOltbVUQsaVNdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoY0UsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltVRCxpU10scHJvdmlkZXJzOltsRV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhjRSx7aW1wb3J0czpbVUQsaVNdfSksKGZ1bmN0aW9uKHQpe3QuU1RFUD0ic3RlcCIsdC5XQUxMX1RJTUU9IndhbGxfdGltZSIsdC5SRUxBVElWRT0icmVsYXRpdmUifSkoZEV8fChkRT17fSkpLChmdW5jdGlvbih0KXt0Lk9GRlNFVD0ib2Zmc2V0Iix0Lk9WRVJMQVk9Im92ZXJsYXkifSkocEV8fChwRT17fSkpLChmdW5jdGlvbih0KXt0LlVOS05PV049IlVOS05PV04iLHQuTk9UX0ZPVU5EPSJOT1RfRk9VTkQifSkobUV8fChtRT17fSkpO2NvbnN0IHVFPW5ldyBHYSgiVGVuc29yQm9hcmQgYnJhbmQgbmFtZSIpO2Z1bmN0aW9uIGZFKHQpe2xldCBlPW1FLlVOS05PV047cmV0dXJuIHQgaW5zdGFuY2VvZiB4RCYmNDA0PT09dC5zdGF0dXMmJihlPW1FLk5PVF9GT1VORCksUnQobmV3IGdFKGUpKX1jbGFzcyBnRXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhaWx1cmVDb2RlPXR9fWNsYXNzIGhFe2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMudGZCYWNrZW5kPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLWJhY2tlbmQiKS50Zl9iYWNrZW5kfWZldGNoUGx1Z2luc0xpc3RpbmcodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtpZighdC5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdCBuIG9mIHQpZS5hcHBlbmQoImV4cGVyaW1lbnRhbFBsdWdpbiIsbik7cmV0dXJuIGV9KSh0KSxvPWU/YGRhdGEvcGx1Z2luc19saXN0aW5nPyR7ZS50b1N0cmluZygpfWA6ImRhdGEvcGx1Z2luc19saXN0aW5nIjtyZXR1cm4gdGhpcy5odHRwLmdldChvKS5waXBlKHBlKGZFKSl9ZmV0Y2hFbnZpcm9ubWVudCgpe3JldHVybiAkdChbdGhpcy5odHRwLmdldCgiZGF0YS9lbnZpcm9ubWVudCIpLEN0KHRoaXMudGZCYWNrZW5kLmVudmlyb25tZW50U3RvcmUucmVmcmVzaCgpKV0pLnBpcGUoSXQoKChbdF0pPT50KSkscGUoZkUpKX19aEUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhFKSh2cihsRSkpfSxoRS7JtXByb3Y9TW4oe3Rva2VuOmhFLGZhY3Rvcnk6aEUuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGhFLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsRX1dfSksbnVsbCk7Y2xhc3MgYkV7fXZhciB5RTtiRS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YkUpfSxiRS7JtW1vZD1hbyh7dHlwZTpiRX0pLGJFLsm1aW5qPXZuKHtwcm92aWRlcnM6W2hFXSxpbXBvcnRzOltbY0VdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYkUsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltjRV0scHJvdmlkZXJzOltoRV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhiRSx7aW1wb3J0czpbY0VdfSksKGZ1bmN0aW9uKHQpe3RbdC5OT1RfTE9BREVEPTBdPSJOT1RfTE9BREVEIix0W3QuTE9BREVEPTFdPSJMT0FERUQiLHRbdC5MT0FESU5HPTJdPSJMT0FESU5HIix0W3QuRkFJTEVEPTNdPSJGQUlMRUQifSkoeUV8fCh5RT17fSkpO2NvbnN0IF9FPUpQKCJbQ29yZV0gUGx1Z2luIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxDRT1KUCgiW0NvcmVdIFBsdWdpbiBVcmwgSGFzaCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksTUU9SlAoIltDb3JlXSBMb2FkZWQiKSx2RT1KUCgiW0NvcmVdIFVzZXIgVHJpZ2dlcmVkIFJlbG9hZCIpLHhFPUpQKCJbQ29yZV0gQXV0byBSZWxvYWQiKSxPRT1KUCgiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggUmVxdWVzdGVkIiksUEU9SlAoIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIFN1Y2Nlc3NmdWwiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx3RT1KUCgiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksa0U9SlAoIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIFJlcXVlc3RlZCIpLFNFPUpQKCJbQ29yZV0gUG9seW1lciBDb21wb25lbnQgUnVucyBGZXRjaCBTdWNjZXNzZnVsIiksREU9SlAoIltDb3JlXSBQb2x5bWVyIENvbXBvbmVudCBSdW5zIEZldGNoIEZhaWxlZCIpLEVFPUpQKCJbQ29yZV0gRW52aXJvbm1lbnQgRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFJFPUpQKCJbQ29yZV0gUnVuIFNlbGVjdGlvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksQUU9SlAoIltDb3JlXSBSdW4gRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFRFPUpQKCJbQ29yZV0gU2lkZSBCYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE5FPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5ncyBQYW5lIENsb3NlZCIpLHpFPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5ncyBQYW5lIFRvZ2dsZWQiKSxJRT1KUCgiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIFJlcXVlc3RlZCIpLEhFPUpQKCJbTWV0cmljc10gTWV0cmljcyBUYWcgTWV0YWRhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksRkU9SlAoIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBGYWlsZWQiKSxMRT1KUCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgQ2hhbmdlIFRvb2x0aXAiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtKUCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgVG9nZ2xlIFNob3cgRGF0YSBEb3dubG9hZCIpO2NvbnN0IEJFPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFRvZ2dsZSBJZ25vcmUgT3V0bGllciIpLFZFPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBYIEF4aXMgVHlwZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGpFPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBTY2FsYXIgU21vb3RoaW5nIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVUU9SlAoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgUGFydGl0aW9uIE5vbiBNb25vdG9uaWMgWCBUb2dnbGVkIiksR0U9SlAoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIEJyaWdodG5lc3MiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxXRT1KUCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgSW1hZ2UgQ29udHJhc3QiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxZRT1KUCgiW01ldHJpY3NdIEltYWdlIEJyaWdodG5lc3MgU2V0dGluZyBSZXNldCIpLHFFPUpQKCJbTWV0cmljc10gSW1hZ2UgQ29udHJhc3QgU2V0dGluZyBSZXNldCIpLFpFPUpQKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFRvZ2dsZSBJbWFnZSBTaG93IEFjdHVhbCBTaXplIiksWEU9SlAoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEhpc3RvZ3JhbSBNb2RlIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS0U9SlAoIltNZXRyaWNzXSBNdWx0aXBsZSBUaW1lIFNlcmllcyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxKRT1KUCgiW01ldHJpY3NdIEZldGNoIFRpbWUgU2VyaWVzIFJlcXVlc3QgRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUUU9SlAoIltNZXRyaWNzXSBGZXRjaCBUaW1lIFNlcmllcyBSZXNwb25zZSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSwkRT1KUCgiW01ldHJpY3NdIENhcmQgVmlzaWJpbGl0eSBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksdFI9SlAoIltNZXRyaWNzXSBDYXJkIFN0ZXAgU2xpZGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlUj1KUCgiW01ldHJpY3NdIFRhZyBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG5SPUpQKCJbTWV0cmljc10gTWV0cmljcyBUYWcgR3JvdXAgRXhwYW5zaW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxvUj1KUCgiW01ldHJpY3NdIENhcmQgUGluIFN0YXRlIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpUj1KUCgiW01ldHJpY3NdIFRvZ2dsZSBWaXNpYmxlIFBsdWdpbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGFSPUpQKCJbTWV0cmljc10gVG9nZ2xlIFNob3cgQWxsIFBsdWdpbnMiKSxyUj1KUCgiW01ldHJpY3NdIExpbmtlZCBUaW1lIFNlbGVjdGlvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc1I9SlAoIltNZXRyaWNzXSBMaW5rZWQgVGltZSBTZWxlY3Rpb24gQ2xlYXJlZCIpLGxSPUpQKCJbTWV0cmljc10gU2VsZWN0IFRpbWUgRW5hYmxlIFRvZ2dsZSIpLGNSPUpQKCJbTWV0cmljc10gVXNlIFJhbmdlIFNlbGVjdCBUaW1lIFRvZ2dsZSIpLGRSPUpQKCJbTWV0cmljc10gTWV0cmljcyBQcm9tbyBEaXNtaXNzZWQiKSxwUj1KUCgiW01ldHJpY3NdIE1ldHJpY3MgUHJvbW8gR28gVG8gU2NhbGFycyIpLG1SPSJjb3JlIix1Uj17YWN0aXZlUGx1Z2luOm51bGwscGx1Z2luczp7fSxjb3JlRGF0YUxvYWRTdGF0ZTp7c3RhdGU6eUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0scGx1Z2luc0xpc3RMb2FkZWQ6e3N0YXRlOnlFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGwsZmFpbHVyZUNvZGU6bnVsbH0sZW52aXJvbm1lbnQ6e2RhdGFfbG9jYXRpb246IiIsd2luZG93X3RpdGxlOiIifSxwb2x5bWVyUnVuc0xvYWRTdGF0ZTp7c3RhdGU6eUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0scG9seW1lckludGVyb3BSdW5zOltdLHBvbHltZXJJbnRlcm9wUnVuU2VsZWN0aW9uOm5ldyBTZXQsc2lkZUJhcldpZHRoSW5QZXJjZW50OjIwfSxmUj15ayh1UixiayhfRSxDRSwoKHQse3BsdWdpbjplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWN0aXZlUGx1Z2luOmV9KSkpLGJrKE9FLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6eUUuTE9BRElOR30pLHBsdWdpbnNMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbnNMaXN0TG9hZGVkKSx7c3RhdGU6eUUuTE9BRElOR30pfSkpKSxiayh3RSwoKHQse2ZhaWx1cmVDb2RlOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjb3JlRGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jb3JlRGF0YUxvYWRTdGF0ZSkse3N0YXRlOnlFLkZBSUxFRH0pLHBsdWdpbnNMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbnNMaXN0TG9hZGVkKSx7c3RhdGU6eUUuRkFJTEVELGZhaWx1cmVDb2RlOmV9KX0pKSksYmsoUEUsKCh0LHtwbHVnaW5zOmV9KT0+e2NvbnN0IG49T2JqZWN0LmtleXMoZSkuZmluZCgodD0+ZVt0XS5lbmFibGVkKSl8fG51bGwsbz10LmFjdGl2ZVBsdWdpbnx8bixpPURhdGUubm93KCk7bGV0IGE9dC5jb3JlRGF0YUxvYWRTdGF0ZTtyZXR1cm4gdC5wb2x5bWVyUnVuc0xvYWRTdGF0ZS5zdGF0ZT09PXlFLkxPQURFRCYmKGE9e3N0YXRlOnlFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6aX0pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWN0aXZlUGx1Z2luOm8sY29yZURhdGFMb2FkU3RhdGU6YSxwbHVnaW5zOmUscGx1Z2luc0xpc3RMb2FkZWQ6e3N0YXRlOnlFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6aSxmYWlsdXJlQ29kZTpudWxsfX0pfSkpLGJrKGtFLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6eUUuTE9BRElOR30pLHBvbHltZXJSdW5zTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBvbHltZXJSdW5zTG9hZFN0YXRlKSx7c3RhdGU6eUUuTE9BRElOR30pfSkpKSxiayhTRSwodD0+e2NvbnN0IGU9RGF0ZS5ub3coKTtsZXQgbj10LmNvcmVEYXRhTG9hZFN0YXRlO3JldHVybiB0LnBsdWdpbnNMaXN0TG9hZGVkLnN0YXRlPT09eUUuTE9BREVEJiYobj17c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczplfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjb3JlRGF0YUxvYWRTdGF0ZTpuLHBvbHltZXJSdW5zTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBvbHltZXJSdW5zTG9hZFN0YXRlKSx7c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczplfSl9KX0pKSxiayhERSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjb3JlRGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jb3JlRGF0YUxvYWRTdGF0ZSkse3N0YXRlOnlFLkZBSUxFRH0pLHBvbHltZXJSdW5zTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBvbHltZXJSdW5zTG9hZFN0YXRlKSx7c3RhdGU6eUUuRkFJTEVEfSl9KSkpLGJrKEVFLCgodCx7ZW52aXJvbm1lbnQ6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2Vudmlyb25tZW50OmV9KSkpLGJrKEFFLCgodCx7cnVuczplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cG9seW1lckludGVyb3BSdW5zOmV9KSkpLGJrKFJFLCgodCx7bmV4dFNlbGVjdGlvbjplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cG9seW1lckludGVyb3BSdW5TZWxlY3Rpb246bmV3IFNldChlKX0pKSksYmsoVEUsKCh0LHt3aWR0aEluUGVyY2VudDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2lkZUJhcldpZHRoSW5QZXJjZW50Ok1hdGgubWluKE1hdGgubWF4KDAsZSksMTAwKX0pKSksYmsoV1MsKCh0LHtwYXJ0aWFsU2V0dGluZ3M6ZX0pPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LHQpLG89ZS5zaWRlQmFyV2lkdGhJblBlcmNlbnQ7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBvJiZvPj0wJiZvPD0xMDAmJihuLnNpZGVCYXJXaWR0aEluUGVyY2VudD1vKSxufSkpLGJrKHBSLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVBsdWdpbjoic2NhbGFycyJ9KSkpKTtmdW5jdGlvbiBnUih0LGUpe3JldHVybiBmUih0LGUpfWNvbnN0IGhSPUt3KG1SKSxiUj1adyhoUiwodD0+dC5wbHVnaW5zTGlzdExvYWRlZCkpLHlSPVp3KGhSLCh0PT50LnBvbHltZXJSdW5zTG9hZFN0YXRlKSksX1I9WncoaFIsKHQ9PnQuY29yZURhdGFMb2FkU3RhdGUuc3RhdGUpKSxDUj1adyhoUiwodD0+dC5jb3JlRGF0YUxvYWRTdGF0ZS5sYXN0TG9hZGVkVGltZUluTXMpKSxNUj1adyhoUiwodD0+dC5hY3RpdmVQbHVnaW4pKSx2Uj1adyhoUiwodD0+dC5wbHVnaW5zKSkseFI9WncoaFIsKHQ9PnQuZW52aXJvbm1lbnQpKSxPUj1adyhoUiwodD0+dC5zaWRlQmFyV2lkdGhJblBlcmNlbnQpKSxQUj1uZXcgU2V0KFtaay5DT01QQVJFX0VYUEVSSU1FTlQsWmsuRVhQRVJJTUVOVCxaay5OT1RfU0VUXSk7Y2xhc3Mgd1J7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy53ZWJhcHBEYXRhU291cmNlPW4sdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5vbkRhc2hib2FyZExvYWQkPXJlKHRoaXMuYWN0aW9ucyQucGlwZShEayhNRSxkUyksVmUodGhpcy5zdG9yZS5zZWxlY3QoTlMpKSxNZSgoKFssdF0sWyxlXSk9PnQ9PT1lKSkpLHRoaXMuYWN0aW9ucyQucGlwZShEayh4RSx2RSkpKS5waXBlKFZlKHRoaXMuc3RvcmUuc2VsZWN0KFJTKSksY2UoKChbLHRdKT0+UFIuaGFzKHQpKSksQmUoMSx2b2lkIDAse2xlYWRpbmc6ITB9KSksdGhpcy5mZXRjaFdlYkFwcERhdGEkPU1rKCgoKT0+cmUodGhpcy5vbkRhc2hib2FyZExvYWQkLnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3QoYlIpLHRoaXMuc3RvcmUuc2VsZWN0KCREKSksY2UoKChbLHtzdGF0ZTp0fV0pPT50IT09eUUuTE9BRElORykpLEZlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChPRSgpKSkpLFp0KCgoWywsdF0pPT4oZnVuY3Rpb24gZSgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTt2YXIgbj1rdCh0KSxvPWxlKHQpO3JldHVybiBvLmxlbmd0aD9uZXcgRCgoZnVuY3Rpb24odCl7dmFyIGU9by5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuW119KSkscj1vLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKTt0LmFkZCgoZnVuY3Rpb24oKXtlPXI9bnVsbH0pKTtmb3IodmFyIHM9ZnVuY3Rpb24ocyl7TXQob1tzXSkuc3Vic2NyaWJlKG5ldyBUKHQsKGZ1bmN0aW9uKG8pe2lmKGVbc10ucHVzaChvKSxlLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGh9KSkpe3ZhciBsPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zaGlmdCgpfSkpO3QubmV4dChuP24uYXBwbHkodm9pZCAwLGEoW10saShsKSkpOmwpLGUuc29tZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4hdC5sZW5ndGgmJnJbZV19KSkmJnQuY29tcGxldGUoKX19KSwoZnVuY3Rpb24oKXtyW3NdPSEwLCFlW3NdLmxlbmd0aCYmdC5jb21wbGV0ZSgpfSkpKX0sbD0wOyF0LmNsb3NlZCYmbDxvLmxlbmd0aDtsKyspcyhsKTtyZXR1cm4gZnVuY3Rpb24oKXtlPXI9bnVsbH19KSk6cnR9KSh0aGlzLndlYmFwcERhdGFTb3VyY2UuZmV0Y2hQbHVnaW5zTGlzdGluZyh0KSx0aGlzLmZldGNoRW52aXJvbm1lbnQoKSkucGlwZShJdCgoKFt0XSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFBFKHtwbHVnaW5zOnR9KSl9KSkscGUoKHQ9Pih0aGlzLnN0b3JlLmRpc3BhdGNoKHdFKHQgaW5zdGFuY2VvZiBnRT97ZmFpbHVyZUNvZGU6dC5mYWlsdXJlQ29kZX06e2ZhaWx1cmVDb2RlOm1FLlVOS05PV059KSkscnQpKSkpKSkpLHRoaXMub25EYXNoYm9hcmRMb2FkJC5waXBlKEl0KCgoWyx0XSk9PnQpKSx6ZSgodD0+dCE9PVprLkNPTVBBUkVfRVhQRVJJTUVOVD9FdChbXSk6dGhpcy5zdG9yZS5zZWxlY3QoelMpLnBpcGUoTWUoKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuZW50cmllcyh0KSxvPW5ldyBNYXAoT2JqZWN0LmVudHJpZXMoZSkpO2lmKG4ubGVuZ3RoIT09by5zaXplKXJldHVybiExO2Zvcihjb25zdFt0LGVdb2YgbilpZihvLmdldCh0KSE9PWUpcmV0dXJuITE7cmV0dXJuITB9KSksQ2UoMCksQmUoNTAwLHZvaWQgMCx7bGVhZGluZzohMCx0cmFpbGluZzohMH0pKSkpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KFJTKSx0aGlzLnN0b3JlLnNlbGVjdCh5UikpLGNlKCgoWyx0LGVdKT0+UFIuaGFzKHQpJiZlLnN0YXRlIT09eUUuTE9BRElORykpLEZlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goa0UoKSl9KSksemUoKCgpPT50aGlzLnJlZnJlc2hQb2x5bWVyUnVucygpKSksRmUoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChTRSgpKX0pKSxwZSgoKCk9Pih0aGlzLnN0b3JlLmRpc3BhdGNoKERFKCkpLHJ0KSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMuZGlzcGF0Y2hDaGFuZ2VQbHVnaW4kPU1rKCgoKT0+cmUodGhpcy5vbkRhc2hib2FyZExvYWQkLHRoaXMuYWN0aW9ucyQucGlwZShEayhQRSkpKS5waXBlKFZlKHRoaXMuc3RvcmUuc2VsZWN0KE1SKSksSXQoKChbLHRdKT0+dCkpLE1lKCksY2UoKHQ9Pm51bGwhPT10KSksYmUoMSksRmUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKF9FKHtwbHVnaW46dH0pKX0pKSkpLHtkaXNwYXRjaDohMX0pfXJlZnJlc2hQb2x5bWVyUnVucygpe3JldHVybiBDdCh0aGlzLnRmQmFja2VuZC5yZWYucnVuc1N0b3JlLnJlZnJlc2goKSl9ZmV0Y2hFbnZpcm9ubWVudCgpe3JldHVybiB0aGlzLndlYmFwcERhdGFTb3VyY2UuZmV0Y2hFbnZpcm9ubWVudCgpLnBpcGUoRmUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKEVFKHtlbnZpcm9ubWVudDp0fSkpfSkpKX19d1IuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdSKSh2cihTayksdnIoSXcpLHZyKGhFKSl9LHdSLsm1cHJvdj1Nbih7dG9rZW46d1IsZmFjdG9yeTp3Ui7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgod1IsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNrfSx7dHlwZTpJd30se3R5cGU6aEV9XX0pLG51bGwpO2NvbnN0IGtSPW5ldyBHYSgiQ29yZSBGZWF0dXJlIENvbmZpZyIpO2Z1bmN0aW9uIFNSKHQpe3JldHVybntpbml0aWFsU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHVSKSx7YWN0aXZlUGx1Z2luOnQuZ2V0UGx1Z2luSWQoKXx8bnVsbH0pfX1mdW5jdGlvbiBEUigpe3JldHVybiBadyhPUiwodD0+KHtzaWRlQmFyV2lkdGhJblBlcmNlbnQ6dH0pKSl9Y2xhc3MgRVJ7fUVSLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFUil9LEVSLsm1bW9kPWFvKHt0eXBlOkVSfSksRVIuybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6a1IsZGVwczpbVlNdLHVzZUZhY3Rvcnk6U1J9XSxpbXBvcnRzOltbV2suZm9yRmVhdHVyZShbd1JdKSxkay5mb3JGZWF0dXJlKG1SLGdSLGtSKSxiRSxxUy5kZWZpbmVHbG9iYWxTZXR0aW5nKERSKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChFUixbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1drLmZvckZlYXR1cmUoW3dSXSksZGsuZm9yRmVhdHVyZShtUixnUixrUiksYkUscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhEUildLHByb3ZpZGVyczpbe3Byb3ZpZGU6a1IsZGVwczpbVlNdLHVzZUZhY3Rvcnk6U1J9XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEVSLHtpbXBvcnRzOltHayxjayxiRSxxU119KTtjb25zdCBSUj1uZXcgR2EoIltBbGVydF0gQWN0aW9uLVRvLUFsZXJ0IFByb3ZpZGVyIik7Y2xhc3MgQVJ7Y29uc3RydWN0b3IodCl7dGhpcy5wcm92aWRlcnM9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0fHxbXSlmb3IoY29uc3QgdCBvZiBlKXtpZih0aGlzLnByb3ZpZGVycy5oYXModC5hY3Rpb25DcmVhdG9yLnR5cGUpKXRocm93IG5ldyBSYW5nZUVycm9yKGAiJHt0LmFjdGlvbkNyZWF0b3IudHlwZX0iIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgYWxlcnRzLiBNdWx0aXBsZSBhbGVydHMgZm9yIHRoZSBzYW1lIGFjdGlvbiBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQodC5hY3Rpb25DcmVhdG9yLnR5cGUsdC5hbGVydEZyb21BY3Rpb24pfX1nZXRBbGVydEZyb21BY3Rpb24odCl7Y29uc3QgZT10aGlzLnByb3ZpZGVycy5nZXQodC50eXBlKTtyZXR1cm4gZT9lKHQpOm51bGx9c3RhdGljIHJlZ2lzdGVyQWxlcnRBY3Rpb25zKHQpe3JldHVybntuZ01vZHVsZTpBUixwcm92aWRlcnM6W3twcm92aWRlOlJSLG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19QVIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFSKSh2cihSUiw4KSl9LEFSLsm1bW9kPWFvKHt0eXBlOkFSfSksQVIuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQVIsW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1JSXX1dfV19KSxudWxsKTtjb25zdCBUUj0iaHBhcmFtcyIsTlI9SlAoIltSdW5zXSBGZXRjaCBSdW5zIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHpSPUpQKCJbUnVuc10gRmV0Y2ggUnVucyBTdWNjZWVkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxJUj1KUCgiW1J1bnNdIEZldGNoIFJ1bnMgRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSFI9SlAoIltSdW5zXSBSdW4gU2VsZWN0aW9uIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxGUj1KUCgiW1J1bnNdIFJ1biBQYWdlIFNlbGVjdGlvbiBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksTFI9SlAoIltSdW5zXSBSdW4gU2VsZWN0b3IgUGFnaW5hdGlvbiBPcHRpb24gQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEJSPUpQKCJbUnVuc10gUnVuIFNlbGVjdG9yIFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFZSPUpQKCJbUnVuc10gUnVuIFNlbGVjdG9yIFJlZ2V4IEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksalI9SlAoIltSdW5zXSBSdW4gQ29sb3IgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFVSPUpQKCJbUnVuc10gUnVuIFRhYmxlIFNob3duIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksR1I9SlAoIltSdW5zXSBSdW4gR3JvdXAgQnkgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO3ZhciBXUixZUixxUixaUjshKGZ1bmN0aW9uKHQpe3QuREFUQVNFVF9VTktOT1dOPSJEQVRBU0VUX1VOS05PV04iLHQuREFUQVNFVF9UUkFJTklORz0iREFUQVNFVF9UUkFJTklORyIsdC5EQVRBU0VUX1ZBTElEQVRJT049IkRBVEFTRVRfVkFMSURBVElPTiJ9KShXUnx8KFdSPXt9KSksKGZ1bmN0aW9uKHQpe3QuU1RBVFVTX1VOS05PV049IlNUQVRVU19VTktOT1dOIix0LlNUQVRVU19TVUNDRVNTPSJTVEFUVVNfU1VDQ0VTUyIsdC5TVEFUVVNfRkFJTFVSRT0iU1RBVFVTX0ZBSUxVUkUiLHQuU1RBVFVTX1JVTk5JTkc9IlNUQVRVU19SVU5OSU5HIn0pKFlSfHwoWVI9e30pKSwoZnVuY3Rpb24odCl7dC5EQVRBX1RZUEVfVU5TRVQ9IkRBVEFfVFlQRV9VTlNFVCIsdC5EQVRBX1RZUEVfU1RSSU5HPSJEQVRBX1RZUEVfU1RSSU5HIix0LkRBVEFfVFlQRV9CT09MPSJEQVRBX1RZUEVfQk9PTCIsdC5EQVRBX1RZUEVfRkxPQVQ2ND0iREFUQV9UWVBFX0ZMT0FUNjQifSkocVJ8fChxUj17fSkpLChmdW5jdGlvbih0KXt0W3QuRElTQ1JFVEU9MF09IkRJU0NSRVRFIix0W3QuSU5URVJWQUw9MV09IklOVEVSVkFMIn0pKFpSfHwoWlI9e30pKTtjbGFzcyBYUnt9WFIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhSKX0sWFIuybVwcm92PU1uKHt0b2tlbjpYUixmYWN0b3J5OlhSLsm1ZmFjLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYUixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxudWxsLG51bGwpO2NvbnN0IEtSPUpQKCJbSHBhcmFtc10gSHBhcmFtcyBEaXNjcmV0ZSBIcGFyYW0gRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxKUj1KUCgiW0hwYXJhbXNdIEhwYXJhbXMgSW50ZXJ2YWwgSHBhcmFtIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksUVI9SlAoIltIcGFyYW1zXSBIcGFyYW1zIE1ldHJpYyBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2Z1bmN0aW9uICRSKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeShbLi4udF0uc29ydCgpKX1mdW5jdGlvbiB0QSh0KXt2YXIgZSxuLG8saTtjb25zdCBhPW5ldyBNYXAscj1uZXcgTWFwLHM9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiB0KWZvcihjb25zdFt0LGxdb2YgYSlpZihsLnR5cGU9PT1aUi5ESVNDUkVURSl7Y29uc3R7cG9zc2libGVWYWx1ZXM6ZSx2YWx1ZXM6bn09ci5nZXQodCl8fHtwb3NzaWJsZVZhbHVlczpuZXcgU2V0LHZhbHVlczpuZXcgU2V0fTtmb3IoY29uc3QgdCBvZiBsLmZpbHRlclZhbHVlcyluLmFkZCh0KTtmb3IoY29uc3QgdCBvZiBsLnBvc3NpYmxlVmFsdWVzKWUuYWRkKHQpO3Iuc2V0KHQse3Bvc3NpYmxlVmFsdWVzOmUsdmFsdWVzOm59KX1lbHNle2NvbnN0IGE9cy5nZXQodCk7cy5zZXQodCx7ZmlsdGVyTG93ZXJWYWx1ZTpNYXRoLm1pbihsLmZpbHRlckxvd2VyVmFsdWUsbnVsbCE9PShlPW51bGw9PWE/dm9pZCAwOmEuZmlsdGVyTG93ZXJWYWx1ZSkmJnZvaWQgMCE9PWU/ZToxLzApLGZpbHRlclVwcGVyVmFsdWU6TWF0aC5tYXgobC5maWx0ZXJVcHBlclZhbHVlLG51bGwhPT0obj1udWxsPT1hP3ZvaWQgMDphLmZpbHRlclVwcGVyVmFsdWUpJiZ2b2lkIDAhPT1uP246LTEvMCksbWluVmFsdWU6TWF0aC5taW4obC5taW5WYWx1ZSxudWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5taW5WYWx1ZSkmJnZvaWQgMCE9PW8/bzoxLzApLG1heFZhbHVlOk1hdGgubWF4KGwubWF4VmFsdWUsbnVsbCE9PShpPW51bGw9PWE/dm9pZCAwOmEubWF4VmFsdWUpJiZ2b2lkIDAhPT1pP2k6LTEvMCl9KX1mb3IoY29uc3RbdCx7dmFsdWVzOmUscG9zc2libGVWYWx1ZXM6bn1db2YgcilhLnNldCh0LHt0eXBlOlpSLkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6ITAscG9zc2libGVWYWx1ZXM6Wy4uLm5dLGZpbHRlclZhbHVlczpbLi4uZV19KTtmb3IoY29uc3RbdCx7bWluVmFsdWU6ZSxtYXhWYWx1ZTpuLGZpbHRlckxvd2VyVmFsdWU6byxmaWx0ZXJVcHBlclZhbHVlOml9XW9mIHMpe2lmKGEuaGFzKHQpKXtjb25zdCBlPWEuZ2V0KHQpO2lmKGUudHlwZT09PVpSLkRJU0NSRVRFJiZlLnBvc3NpYmxlVmFsdWVzLnNvbWUoKHQ9PnQpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ2Fubm90IGNvbWJpbmUgaHBhcmFtLCAke3R9LCBhcyBpdCBpcyBvZiBtaXhlZCB0eXBlcy5gKX1hLnNldCh0LHt0eXBlOlpSLklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITAsbWluVmFsdWU6ZSxtYXhWYWx1ZTpuLGZpbHRlckxvd2VyVmFsdWU6byxmaWx0ZXJVcHBlclZhbHVlOml9KX1yZXR1cm4gYX1mdW5jdGlvbiBlQSh0KXt2YXIgZSxuLG8saTtjb25zdCBhPW5ldyBNYXA7Zm9yKGNvbnN0IHIgb2YgdClmb3IoY29uc3RbdCxzXW9mIHIpe2NvbnN0IHI9YS5nZXQodCk7YS5zZXQodCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe3R5cGU6WlIuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDohMH0scikse21pblZhbHVlOk1hdGgubWluKHMubWluVmFsdWUsbnVsbCE9PShlPW51bGw9PXI/dm9pZCAwOnIubWluVmFsdWUpJiZ2b2lkIDAhPT1lP2U6MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChzLm1heFZhbHVlLG51bGwhPT0obj1udWxsPT1yP3ZvaWQgMDpyLm1heFZhbHVlKSYmdm9pZCAwIT09bj9uOi0xLzApLGZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4ocy5maWx0ZXJMb3dlclZhbHVlLG51bGwhPT0obz1udWxsPT1yP3ZvaWQgMDpyLmZpbHRlckxvd2VyVmFsdWUpJiZ2b2lkIDAhPT1vP286MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KHMuZmlsdGVyVXBwZXJWYWx1ZSxudWxsIT09KGk9bnVsbD09cj92b2lkIDA6ci5maWx0ZXJVcHBlclZhbHVlKSYmdm9pZCAwIT09aT9pOi0xLzApfSkpfXJldHVybiBhfWNvbnN0IG5BPXlrKHtzcGVjczp7fSxmaWx0ZXJzOnt9fSxiayhLUiwoKHQsZSk9Pnt2YXIgbjtjb25zdHtleHBlcmltZW50SWRzOm8saHBhcmFtTmFtZTppLGZpbHRlclZhbHVlczphLGluY2x1ZGVVbmRlZmluZWQ6cn09ZSxzPSRSKG8pLGw9bnVsbCE9PShuPXQuZmlsdGVyc1tzXSkmJnZvaWQgMCE9PW4/bjp7aHBhcmFtczpuZXcgTWFwfSxjPWwuaHBhcmFtcy5nZXQoaSk7aWYoYyYmYy50eXBlIT09WlIuRElTQ1JFVEUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5ldyBkaXNjcmV0ZSBmaWx0ZXIgb2YgJHtpfSBjb25mbGljdHMgZXhpc3RpbmcgZmlsdGVyIG9mIGArWlJbYy50eXBlXSk7Y29uc3QgZD10QShvLmZpbHRlcigoZT0+Qm9vbGVhbih0LnNwZWNzW2VdKSkpLm1hcCgoZT0+dC5zcGVjc1tlXS5ocGFyYW0uZGVmYXVsdEZpbHRlcnMpKSkuZ2V0KGkpO2lmKCFkKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBocGFyYW0sICR7aX0sIHdoZW4gaXQgaXMgbm90IGtub3duIGZvciBleHBlcmltZW50SWRzOiAke28uam9pbigiLCAiKX1gKTtpZihkLnR5cGUhPT1aUi5ESVNDUkVURSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgJHtpfSB3aGVuIGRlZmF1bHQgZmlsdGVyIGlzIG5vdCBvZiBkaXNjcmV0ZSB0eXBlLmApO2NvbnN0IHA9bmV3IFNldChkLnBvc3NpYmxlVmFsdWVzKSxtPVsuLi5hXS5maWx0ZXIoKHQ9PiFwLmhhcyh0KSkpO2lmKG0ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgTmV3IGZpbHRlciBmb3IgJHtpfSBoYXMgbW9yZSB0aGFuIG9uZSB2YWx1ZSB0aGF0IGlzIG5vdCBwcmVzZW50IGluIHRoZSBzcGVjLiBCYWQgdmFsdWVzOiAke20uam9pbigiLCAiKX1gKTtjb25zdCB1PW5ldyBNYXAobC5ocGFyYW1zKTtyZXR1cm4gdS5zZXQoaSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYykse3R5cGU6WlIuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDpyLHBvc3NpYmxlVmFsdWVzOlsuLi5wXSxmaWx0ZXJWYWx1ZXM6YX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmlsdGVycykse1tzXTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbCkse2hwYXJhbXM6dX0pfSl9KX0pKSxiayhKUiwoKHQsZSk9Pnt2YXIgbjtjb25zdHtleHBlcmltZW50SWRzOm8saHBhcmFtTmFtZTppLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnIsaW5jbHVkZVVuZGVmaW5lZDpzfT1lLGw9JFIobyksYz1udWxsIT09KG49dC5maWx0ZXJzW2xdKSYmdm9pZCAwIT09bj9uOnttZXRyaWNzOm5ldyBNYXAsaHBhcmFtczpuZXcgTWFwfSxkPWMuaHBhcmFtcy5nZXQoaSk7aWYoZCYmZC50eXBlIT09WlIuSU5URVJWQUwpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5ldyBpbnRlcnZhbCBmaWx0ZXIgb2YgJHtpfSBjb25mbGljdHMgZXhpc3RpbmcgZmlsdGVyIG9mIGArWlJbZC50eXBlXSk7Y29uc3QgcD10QShvLmZpbHRlcigoZT0+Qm9vbGVhbih0LnNwZWNzW2VdKSkpLm1hcCgoZT0+dC5zcGVjc1tlXS5ocGFyYW0uZGVmYXVsdEZpbHRlcnMpKSkuZ2V0KGkpO2lmKCFwKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBocGFyYSwgJHtpfSwgd2hlbiBpdCBpcyBub3Qga25vd24gZm9yIGV4cGVyaW1lbnRJZHM6ICR7by5qb2luKCIsICIpfWApO2lmKHAudHlwZSE9PVpSLklOVEVSVkFMKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCAke2l9IHdoZW4gZGVmYXVsdCBmaWx0ZXIgaXMgbm90IG9mIGludGVydmFsIHR5cGUuYCk7Y29uc3QgbT1uZXcgTWFwKGMuaHBhcmFtcyk7cmV0dXJuIG0uc2V0KGksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLHt0eXBlOlpSLklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6cyxtaW5WYWx1ZTpwLm1pblZhbHVlLG1heFZhbHVlOnAubWF4VmFsdWUsZmlsdGVyTG93ZXJWYWx1ZTphLGZpbHRlclVwcGVyVmFsdWU6cn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZpbHRlcnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmlsdGVycykse1tsXTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYykse2hwYXJhbXM6bX0pfSl9KX0pKSxiayhRUiwoKHQsZSk9Pnt2YXIgbjtjb25zdHtleHBlcmltZW50SWRzOm8sbWV0cmljVGFnOmksZmlsdGVyTG93ZXJWYWx1ZTphLGZpbHRlclVwcGVyVmFsdWU6cixpbmNsdWRlVW5kZWZpbmVkOnN9PWUsbD0kUihvKSxjPW51bGwhPT0obj10LmZpbHRlcnNbbF0pJiZ2b2lkIDAhPT1uP246e21ldHJpY3M6bmV3IE1hcCxocGFyYW1zOm5ldyBNYXB9LGQ9ZUEoby5maWx0ZXIoKGU9PkJvb2xlYW4odC5zcGVjc1tlXSkpKS5tYXAoKGU9PnQuc3BlY3NbZV0ubWV0cmljLmRlZmF1bHRGaWx0ZXJzKSkpLmdldChpKTtpZighZCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgbWV0cmljLCAke2l9LCB3aGVuIGl0IGlzIG5vdCBrbm93biBmb3IgZXhwZXJpbWVudElkczogJHtvLmpvaW4oIiwgIil9YCk7Y29uc3QgcD1jLm1ldHJpY3MuZ2V0KGkpLG09bmV3IE1hcChjLm1ldHJpY3MpO3JldHVybiBtLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxwKSx7dHlwZTpaUi5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6ZC5taW5WYWx1ZSxtYXhWYWx1ZTpkLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHttZXRyaWNzOm19KX0pfSl9KSksYmsoelIsKCh0LGUpPT57dmFyIG4sbyxpLGE7aWYoMD09PU9iamVjdC5rZXlzKGUubmV3UnVuc0FuZE1ldGFkYXRhKS5sZW5ndGgpcmV0dXJuIHQ7Y29uc3Qgcj1PYmplY3QuYXNzaWduKHt9LHQuc3BlY3MpLHM9bmV3IE1hcCxsPW5ldyBTZXQ7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZS5uZXdSdW5zQW5kTWV0YWRhdGEpKXtjb25zdCBjPW5ldyBNYXAsZD1uZXcgTWFwLHA9bmV3IE1hcCxtPW5ldyBNYXAse3J1bnM6dSxtZXRhZGF0YTpmfT1lLm5ld1J1bnNBbmRNZXRhZGF0YVt0XTtmb3IoY29uc3QgdCBvZiB1KXtjb25zdCBlPWYucnVuVG9IcGFyYW1zQW5kTWV0cmljc1t0LmlkXTtpZihlKWZvcihjb25zdCB0IG9mIGUubWV0cmljcyl7Y29uc3QgZT1zLmdldCh0LnRhZyk7cy5zZXQodC50YWcse21pbjplP01hdGgubWluKGUubWluLHQudmFsdWUpOnQudmFsdWUsbWF4OmU/TWF0aC5tYXgoZS5tYXgsdC52YWx1ZSk6dC52YWx1ZX0pfX1mb3IoY29uc3R7bmFtZTp0LGRvbWFpbjplfW9mIGYuaHBhcmFtU3BlY3MpaWYoZS50eXBlPT09WlIuRElTQ1JFVEUpe2NvbnN0IG49cC5nZXQodCl8fG5ldyBTZXQ7Zm9yKGNvbnN0IHQgb2YgZS52YWx1ZXMpbi5hZGQodCk7cC5zZXQodCxuKX1lbHNle2NvbnN0IG49bS5nZXQodCk7bS5zZXQodCx7bWluVmFsdWU6bj9NYXRoLm1pbihlLm1pblZhbHVlLG4ubWluVmFsdWUpOmUubWluVmFsdWUsbWF4VmFsdWU6bj9NYXRoLm1heChlLm1heFZhbHVlLG4ubWF4VmFsdWUpOmUubWF4VmFsdWV9KX1mb3IoY29uc3QgdCBvZiBmLm1ldHJpY1NwZWNzKWwuYWRkKHQudGFnKTtmb3IoY29uc3RbdCxlXW9mIHApYy5zZXQodCx7dHlwZTpaUi5ESVNDUkVURSxpbmNsdWRlVW5kZWZpbmVkOiEwLHBvc3NpYmxlVmFsdWVzOlsuLi5lXSxmaWx0ZXJWYWx1ZXM6Wy4uLmVdfSk7Zm9yKGNvbnN0W3Qse21pblZhbHVlOmUsbWF4VmFsdWU6bn1db2YgbSljLnNldCh0LHt0eXBlOlpSLklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITAsbWluVmFsdWU6ZSxtYXhWYWx1ZTpuLGZpbHRlckxvd2VyVmFsdWU6ZSxmaWx0ZXJVcHBlclZhbHVlOm59KTtmb3IoY29uc3QgdCBvZiBsKXtjb25zdCBlPXMuZ2V0KHQpLGk9bnVsbCE9PShuPW51bGw9PWU/dm9pZCAwOmUubWluKSYmdm9pZCAwIT09bj9uOjAsYT1udWxsIT09KG89bnVsbD09ZT92b2lkIDA6ZS5tYXgpJiZ2b2lkIDAhPT1vP286MDtkLnNldCh0LHt0eXBlOlpSLklOVEVSVkFMLGluY2x1ZGVVbmRlZmluZWQ6ITAsbWluVmFsdWU6aSxtYXhWYWx1ZTphLGZpbHRlckxvd2VyVmFsdWU6aSxmaWx0ZXJVcHBlclZhbHVlOmF9KX1yW3RdPXtocGFyYW06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG51bGw9PT0oaT1yW3RdKXx8dm9pZCAwPT09aT92b2lkIDA6aS5ocGFyYW0pLHtzcGVjczpmLmhwYXJhbVNwZWNzLGRlZmF1bHRGaWx0ZXJzOmN9KSxtZXRyaWM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG51bGw9PT0oYT1yW3RdKXx8dm9pZCAwPT09YT92b2lkIDA6YS5tZXRyaWMpLHtzcGVjczpmLm1ldHJpY1NwZWNzLGRlZmF1bHRGaWx0ZXJzOmR9KX19cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c3BlY3M6cn0pfSkpKTtmdW5jdGlvbiBvQSh0LGUpe3JldHVybiBuQSh0LGUpfWNsYXNzIGlBe31pQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUEpfSxpQS7JtW1vZD1hbyh7dHlwZTppQX0pLGlBLsm1aW5qPXZuKHtpbXBvcnRzOltbZGsuZm9yRmVhdHVyZShUUixvQSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoaUEsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltkay5mb3JGZWF0dXJlKFRSLG9BKV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhpQSx7aW1wb3J0czpbY2tdfSk7Y2xhc3MgYUF7fWZ1bmN0aW9uIHJBKHQsZSl7cmV0dXJuYCR7ZX0vJHt0fWB9YUEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFBKX0sYUEuybVtb2Q9YW8oe3R5cGU6YUF9KSxhQS7JtWluaj12bih7aW1wb3J0czpbW2lBXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGFBLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbaUFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oYUEse2ltcG9ydHM6W2lBXX0pO2NsYXNzIHNBe2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10fWZldGNoUnVucyh0KXtyZXR1cm4gdGhpcy5odHRwLmdldCgiZGF0YS9ydW5zIikucGlwZShJdCgoZT0+ZS5tYXAoKGU9Pih7aWQ6ckEoZSx0KSxuYW1lOmUsc3RhcnRUaW1lOjB9KSkpKSkpfWZldGNoSHBhcmFtc01ldGFkYXRhKHQpe3JldHVybiBFdCh7aHBhcmFtU3BlY3M6W10sbWV0cmljU3BlY3M6W10scnVuVG9IcGFyYW1zQW5kTWV0cmljczp7fX0pfX1zQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c0EpKHZyKGxFKSl9LHNBLsm1cHJvdj1Nbih7dG9rZW46c0EsZmFjdG9yeTpzQS7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoc0EsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxFfV19KSxudWxsKTtjbGFzcyBsQXt9bEEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxBKX0sbEEuybVtb2Q9YW8oe3R5cGU6bEF9KSxsQS7JtWluaj12bih7cHJvdmlkZXJzOlt7cHJvdmlkZTpYUix1c2VDbGFzczpzQX1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsQSxbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpbe3Byb3ZpZGU6WFIsdXNlQ2xhc3M6c0F9XX1dfV0sbnVsbCxudWxsKTtjb25zdCBjQT0iYWxlcnRzIixkQT1adyhLdyhjQSksKHQ9PnQubGF0ZXN0QWxlcnQpKSxwQT0iZXhwZXJpbWVudHMiLG1BPVp3KEt3KHBBKSwodD0+dC5kYXRhKSksdUE9WncobUEsKCh0LGUpPT57Y29uc3R7ZXhwZXJpbWVudElkOm59PWU7cmV0dXJuIHQuZXhwZXJpbWVudE1hcFtuXXx8bnVsbH0pKTsKLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KZnVuY3Rpb24gZkEodCxlKXt2YXIgbj17fTtmb3IodmFyIG8gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKSYmZS5pbmRleE9mKG8pPDAmJihuW29dPXRbb10pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT0wO2ZvcihvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7aTxvLmxlbmd0aDtpKyspZS5pbmRleE9mKG9baV0pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LG9baV0pJiYobltvW2ldXT10W29baV1dKX1yZXR1cm4gbn1mdW5jdGlvbiBnQSh0LGUsbixvKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24oaSxhKXtmdW5jdGlvbiByKHQpe3RyeXtsKG8ubmV4dCh0KSl9Y2F0Y2godCl7YSh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChvLnRocm93KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9pKHQudmFsdWUpOihmdW5jdGlvbiBlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbj90Om5ldyBuKChmdW5jdGlvbihlKXtlKHQpfSkpfSkodC52YWx1ZSkudGhlbihyLHMpfWwoKG89by5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX12YXIgaEEsYkEseUE7IShmdW5jdGlvbih0KXt0LlNDQUxBUlM9InNjYWxhcnMiLHQuSElTVE9HUkFNUz0iaGlzdG9ncmFtcyIsdC5JTUFHRVM9ImltYWdlcyJ9KShoQXx8KGhBPXt9KSksKGZ1bmN0aW9uKHQpe3QuREVGQVVMVD0iZGVmYXVsdCIsdC5BU0NFTkRJTkc9ImFzY2VuZGluZyIsdC5ERVNDRU5ESU5HPSJkZXNjZW5kaW5nIix0Lk5FQVJFU1Q9Im5lYXJlc3QifSkoYkF8fChiQT17fSkpLChmdW5jdGlvbih0KXt0W3QuU1RFUD0wXT0iU1RFUCIsdFt0LlJFTEFUSVZFPTFdPSJSRUxBVElWRSIsdFt0LldBTExfVElNRT0yXT0iV0FMTF9USU1FIn0pKHlBfHwoeUE9e30pKTtjb25zdCBfQT0idGltZXNlcmllcyIsQ0E9W2hBLklNQUdFU107ZnVuY3Rpb24gTUEodCl7cmV0dXJuIENBLmluY2x1ZGVzKHQpfWNvbnN0IHZBPVtoQS5ISVNUT0dSQU1TLGhBLklNQUdFU107ZnVuY3Rpb24geEEodCl7cmV0dXJuIHZBLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIE9BKHQpe3JldHVybiB4QSh0LnBsdWdpbil9Y2xhc3MgUEF7fWZ1bmN0aW9uIHdBKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJlcnJvciIpfWNvbnN0IGtBPSJkYXRhL3BsdWdpbi90aW1lc2VyaWVzIjtmdW5jdGlvbiBTQSh0KXtjb25zdCBlPXQuaW5kZXhPZigiLyIpO3JldHVybntydW46dC5zdWJzdHJpbmcoZSsxKSxleHBlcmltZW50SWQ6dC5zdWJzdHJpbmcoMCxlKX19ZnVuY3Rpb24gREEodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBFQSh0LGUpe2NvbnN0e3J1blRvU2VyaWVzOm4scnVuOm99PXQsaT1mQSh0LFsicnVuVG9TZXJpZXMiLCJydW4iXSksYT1PYmplY3QuYXNzaWduKHt9LGkpO3JldHVybiBuJiYoYS5ydW5Ub1Nlcmllcz1SQShuLGUpKSxvJiYoYS5ydW5JZD1EQShvLGUpKSxhfWZ1bmN0aW9uIFJBKHQsZSl7Y29uc3Qgbj17fTtmb3IoY29uc3QgbyBpbiB0KXQuaGFzT3duUHJvcGVydHkobykmJihuW0RBKG8sZSldPXRbb10pO3JldHVybiBufWNsYXNzIEFBe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5odHRwPXQsdGhpcy5zdG9yZT1lfWZldGNoVGFnTWV0YWRhdGEodCl7Y29uc3QgZT10Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke2tBfS90YWdzYCkucGlwZShJdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPXt9O2Zvcihjb25zdCBvIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBpPW87aWYoTUEoaSkpe2NvbnN0IG89dFtpXSx7dGFnUnVuU2FtcGxlZEluZm86YX09byxyPWZBKG8sWyJ0YWdSdW5TYW1wbGVkSW5mbyJdKSxzPXt9O2Zvcihjb25zdCB0IGluIGEpYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHNbdF09UkEoYVt0XSxlKSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3RhZ1J1blNhbXBsZWRJbmZvOnN9KX1lbHNle2NvbnN0IG89dFtpXSx7cnVuVGFnSW5mbzphfT1vLHI9ZkEobyxbInJ1blRhZ0luZm8iXSk7bltpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse3J1blRhZ0luZm86UkEoYSxlKX0pfX1yZXR1cm4gbn0pKGUsdCkpKSkpKSxuPXRoaXMuc3RvcmUuc2VsZWN0KHFEKS5waXBlKGNlKEJvb2xlYW4pLGJlKDEpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KG9FKSksSXQoKChbLHRdKT0+dCkpKTtyZXR1cm4gJHQoZSkucGlwZShWZShuKSxJdCgoKFt0LGVdKT0+e2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7Y29uc3QgZT17fTtmb3IoY29uc3QgbiBvZiB0KWZvcihjb25zdCB0IG9mIE9iamVjdC52YWx1ZXMoaEEpKWlmKE1BKHQpKXtlW3RdPWVbdF18fHt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319O2NvbnN0e3RhZ0Rlc2NyaXB0aW9uczpvLHRhZ1J1blNhbXBsZWRJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKTtjb25zdCBhPWVbdF0udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoaSkpe2FbdF09YVt0XXx8e307Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXMoaVt0XSkpYVt0XVtlXT1pW3RdW2VdfX1lbHNle2VbdF09ZVt0XXx8e3RhZ0Rlc2NyaXB0aW9uczp7fSxydW5UYWdJbmZvOnt9fTtjb25zdHt0YWdEZXNjcmlwdGlvbnM6byxydW5UYWdJbmZvOml9PW5bdF07ZVt0XS50YWdEZXNjcmlwdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0udGFnRGVzY3JpcHRpb25zKSxvKSxlW3RdLnJ1blRhZ0luZm89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbdF0ucnVuVGFnSW5mbyksaSl9cmV0dXJuIGV9KSh0KTtyZXR1cm4gZXx8KG5baEEuSU1BR0VTXT17dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fSksbn0pKSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2NvbnN0IGU9dC5tYXAoKHQ9PntpZih4QSh0LnBsdWdpbikpe2NvbnN0IGU9dCx7cnVuSWQ6bn09ZSxvPWZBKGUsWyJydW5JZCJdKSx7cnVuOmksZXhwZXJpbWVudElkOmF9PVNBKG4pLHI9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHtydW46aX0pO3JldHVybiB0aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHIsYSkucGlwZShJdCgoKHtyZXNwb25zZTp0LGV4cGVyaW1lbnRJZDplfSk9PkVBKHQsZSkpKSl9Y29uc3QgZT10LHtleHBlcmltZW50SWRzOm59PWUsbz1mQShlLFsiZXhwZXJpbWVudElkcyJdKTtyZXR1cm4gJHQobi5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3Qobyx0KSkpKS5waXBlKEl0KCh0PT57Y29uc3QgZT1mQSh0WzBdLnJlc3BvbnNlLFsicnVuVG9TZXJpZXMiLCJlcnJvciJdKTtmb3IoY29uc3R7cmVzcG9uc2U6bixleHBlcmltZW50SWQ6b31vZiB0KXtjb25zdCB0PUVBKG4sbyk7aWYoZS5lcnJvciljb250aW51ZTtjb25zdHtydW5Ub1NlcmllczppLGVycm9yOmF9PXQ7aWYoYSllLmVycm9yPWEsZS5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtlLnJ1blRvU2VyaWVzPWUucnVuVG9TZXJpZXN8fHt9O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGkpKWUucnVuVG9TZXJpZXNbdF09aVt0XX19cmV0dXJuIGV9KSkpfSkpO3JldHVybiAkdChlKX1mZXRjaFRpbWVTZXJpZXNCYWNrZW5kUmVxdWVzdCh0LGUpe2NvbnN0IG49bmV3IEZvcm1EYXRhO3JldHVybiBuLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke2V9LyR7a0F9L3RpbWVTZXJpZXNgLG4pLnBpcGUoSXQoKHQ9Pih7cmVzcG9uc2U6dFswXSxleHBlcmltZW50SWQ6ZX0pKSkpfWltYWdlVXJsKHQpe3JldHVybmAke2tBfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LGUsbixvKXtjb25zdHtydW46aSxleHBlcmltZW50SWQ6YX09U0Eobik7bGV0IHI7c3dpdGNoKHQpe2Nhc2UgaEEuU0NBTEFSUzpyPSJzY2FsYXJzL3NjYWxhcnMiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQ6IGRvd25sb2FkVXJsIGZvciAke3R9IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX1pZighYSl0aHJvdyBuZXcgRXJyb3IoImV4cGVyaW1lbnRJZCBpcyBlbXB0eTsgaXQgaXMgcmVxdWlyZWQgdG8gZm9ybSBkb3dubG9hZFVybC4iKTtyZXR1cm5gL2V4cGVyaW1lbnQvJHthfS9kYXRhL3BsdWdpbi8ke3J9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOmksZm9ybWF0Om99KX1gfX1BQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QUEpKHZyKGxFKSx2cihJdykpfSxBQS7JtXByb3Y9TW4oe3Rva2VuOkFBLGZhY3Rvcnk6QUEuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEFBLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsRX0se3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIFRBe31UQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VEEpfSxUQS7JtXByb3Y9TW4oe3Rva2VuOlRBLGZhY3Rvcnk6VEEuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFRBLFt7dHlwZTppbX1dLG51bGwsbnVsbCk7Y29uc3QgTkE9ImV4cGVyaW1lbnRhbFBsdWdpbiIsekE9InNjYWxhcnNCYXRjaFNpemUiLElBPSJlbmFibGVDb2xvckdyb3VwIixIQT0iZW5hYmxlQ29sb3JHcm91cEJ5UmVnZXgiLEZBPSJkYXJrTW9kZSIsTEE9ImVuYWJsZUxpbmtUaW1lIixCQT1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2NsYXNzIFZBe2dldFBhcmFtcygpe3JldHVybiBCQX19VkEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZBKX0sVkEuybVwcm92PU1uKHt0b2tlbjpWQSxmYWN0b3J5OlZBLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWQSxbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIGpBe2NvbnN0cnVjdG9yKHQpe3RoaXMucXVlcnlQYXJhbXM9dH1nZXRGZWF0dXJlcyh0PSExKXtjb25zdCBlPXRoaXMucXVlcnlQYXJhbXMuZ2V0UGFyYW1zKCksbj10P3RoaXMuZ2V0UGFydGlhbEZlYXR1cmVzRnJvbU1lZGlhUXVlcnkoKTp7fTtyZXR1cm4gZS5oYXMoTkEpJiYobi5lbmFibGVkRXhwZXJpbWVudGFsUGx1Z2lucz1lLmdldEFsbChOQSkpLGUuaGFzKCJ0ZW5zb3Jib2FyZENvbGFiIikmJihuLmluQ29sYWI9InRydWUiPT09ZS5nZXQoInRlbnNvcmJvYXJkQ29sYWIiKSksZS5oYXMoekEpJiYobi5zY2FsYXJzQmF0Y2hTaXplPU51bWJlcihlLmdldCh6QSkpKSxlLmhhcyhJQSkmJihuLmVuYWJsZWRDb2xvckdyb3VwPSJmYWxzZSIhPT1lLmdldChJQSkpLGUuaGFzKEhBKSYmKG4uZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4PSJmYWxzZSIhPT1lLmdldChIQSkpLGUuaGFzKEZBKSYmKG4uZGVmYXVsdEVuYWJsZURhcmtNb2RlPSJmYWxzZSIhPT1lLmdldChGQSkpLGUuaGFzKExBKSYmKG4uZW5hYmxlZExpbmtlZFRpbWU9ImZhbHNlIiE9PWUuZ2V0KExBKSksbn1nZXRQYXJ0aWFsRmVhdHVyZXNGcm9tTWVkaWFRdWVyeSgpe2NvbnN0IHQ9e307cmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcyYmKHQuZGVmYXVsdEVuYWJsZURhcmtNb2RlPSEwKSx0fX1qQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8akEpKHZyKFZBKSl9LGpBLsm1cHJvdj1Nbih7dG9rZW46akEsZmFjdG9yeTpqQS7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoakEsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZBfV19KSxudWxsKTtjbGFzcyBVQXt9VUEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVBKX0sVUEuybVtb2Q9YW8oe3R5cGU6VUF9KSxVQS7JtWluaj12bih7cHJvdmlkZXJzOltqQSxWQSx7cHJvdmlkZTpUQSx1c2VDbGFzczpqQX1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVQSxbe3R5cGU6QXksYXJnczpbe3Byb3ZpZGVyczpbakEsVkEse3Byb3ZpZGU6VEEsdXNlQ2xhc3M6akF9XX1dfV0sbnVsbCxudWxsKTtjb25zdCBHQT1KUCgiW0ZFQVRVUkUgRkxBR10gUGFydGlhbCBGZWF0dXJlIEZsYWdzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFdBPUpQKCJbRkVBVFVSRSBGTEFHXSBFbmFibGUgRGFyayBNb2RlIE92ZXJyaWRlIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxZQT1KUCgiW0ZFQVRVUkUgRkxBR10gRWZmZWN0cyBJbml0Iik7Y2xhc3MgcUF7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5nZXRGZWF0dXJlRmxhZ3MkPU1rKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKERrKFlBKSxmZSh0aGlzLnN0b3JlLnNlbGVjdChLRCkpLEl0KCgoWyx0XSk9Pntjb25zdCBlPXRoaXMuZGF0YVNvdXJjZS5nZXRGZWF0dXJlcyh0KTtyZXR1cm4gR0Eoe2ZlYXR1cmVzOmV9KX0pKSkpKX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBZQSgpfX1xQS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUEpKHZyKFNrKSx2cihJdyksdnIoVEEpKX0scUEuybVwcm92PU1uKHt0b2tlbjpxQSxmYWN0b3J5OnFBLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChxQSxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U2t9LHt0eXBlOkl3fSx7dHlwZTpUQX1dfSksbnVsbCk7Y29uc3QgWkE9e2lzRmVhdHVyZUZsYWdzTG9hZGVkOiExLGRlZmF1bHRGbGFnczp7aXNBdXRvRGFya01vZGVBbGxvd2VkOiEwLGRlZmF1bHRFbmFibGVEYXJrTW9kZTohMSxlbmFibGVEYXJrTW9kZU92ZXJyaWRlOm51bGwsZW5hYmxlZENvbG9yR3JvdXA6ITAsZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4OiEwLGVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zOltdLGluQ29sYWI6ITEsc2NhbGFyc0JhdGNoU2l6ZTp2b2lkIDAsbWV0cmljc0ltYWdlU3VwcG9ydEVuYWJsZWQ6ITAsZW5hYmxlZExpbmtlZFRpbWU6ITEsZW5hYmxlVGltZVNlcmllc1Byb21vdGlvbjohMX0sZmxhZ092ZXJyaWRlczp7fX0sWEE9bmV3IEdhKCJbRmVhdHVyZSBGbGFnXSBTdG9yZSBDb25maWciKTtmdW5jdGlvbiBLQSgpe3JldHVybntpbml0aWFsU3RhdGU6WkF9fWNvbnN0IEpBPXlrKFpBLGJrKEdBLCgodCx7ZmVhdHVyZXM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzRmVhdHVyZUZsYWdzTG9hZGVkOiEwLGZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcyksZSl9KSkpLGJrKFdBLCgodCx7ZW5hYmxlRGFya01vZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcykse2VuYWJsZURhcmtNb2RlT3ZlcnJpZGU6ZX0pfSkpKSxiayhXUywoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9PntpZighZS50aGVtZU92ZXJyaWRlKXJldHVybiB0O2xldCBuO3N3aXRjaChlLnRoZW1lT3ZlcnJpZGUpe2Nhc2UgR1MuQlJPV1NFUl9ERUZBVUxUOm49bnVsbDticmVhaztjYXNlIEdTLkRBUks6bj0hMDticmVhaztjYXNlIEdTLkxJR0hUOm49ITF9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5mbGFnT3ZlcnJpZGVzKSx7ZW5hYmxlRGFya01vZGVPdmVycmlkZTpufSl9KX0pKSk7ZnVuY3Rpb24gUUEodCxlKXtyZXR1cm4gSkEodCxlKX1mdW5jdGlvbiAkQSgpe3JldHVybiBadyhRRCwodD0+bnVsbD09PXQ/e3RoZW1lT3ZlcnJpZGU6R1MuQlJPV1NFUl9ERUZBVUxUfTp7dGhlbWVPdmVycmlkZTp0P0dTLkRBUks6R1MuTElHSFR9KSl9Y2xhc3MgdFR7fXRULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0VCl9LHRULsm1bW9kPWFvKHt0eXBlOnRUfSksdFQuybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6WEEsdXNlRmFjdG9yeTpLQX1dLGltcG9ydHM6W1tVQSxkay5mb3JGZWF0dXJlKFdELFFBLFhBKSxXay5mb3JGZWF0dXJlKFtxQV0pLHFTLmRlZmluZUdsb2JhbFNldHRpbmcoJEEpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHRULFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbVUEsZGsuZm9yRmVhdHVyZShXRCxRQSxYQSksV2suZm9yRmVhdHVyZShbcUFdKSxxUy5kZWZpbmVHbG9iYWxTZXR0aW5nKCRBKV0scHJvdmlkZXJzOlt7cHJvdmlkZTpYQSx1c2VGYWN0b3J5OktBfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyh0VCx7aW1wb3J0czpbVUEsY2ssR2sscVNdfSk7Y2xhc3MgZVR7fWZ1bmN0aW9uIG5UKHQsZSxuLG8pe3JldHVybiB0W2VdLmhhc093blByb3BlcnR5KG4pP01BKGUpP3RbZV1bbl0uaGFzT3duUHJvcGVydHkobyk/dFtlXVtuXVtvXTpudWxsOnRbZV1bbl06bnVsbH1mdW5jdGlvbiBvVCh0LGUsbixvKXtpZihNQShlKSl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LHRbZV0pLGE9KGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dC5oYXNPd25Qcm9wZXJ0eShlKT9PYmplY3QuYXNzaWduKHt9LHRbZV0pOnt9LGk9by5oYXNPd25Qcm9wZXJ0eShuKTtyZXR1cm4gb1tuXT1pP09iamVjdC5hc3NpZ24oe30sb1tuXSk6e3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fSxvfSkoaSxuLG8pO3JldHVybiBpW25dPWEsaX1jb25zdCBhPU9iamVjdC5hc3NpZ24oe30sdFtlXSkscj1hLmhhc093blByb3BlcnR5KG4pO3JldHVybiBhW25dPXI/T2JqZWN0LmFzc2lnbih7fSxhW25dKTp7cnVuVG9TZXJpZXM6e30scnVuVG9Mb2FkU3RhdGU6e319LGF9ZnVuY3Rpb24gaVQodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIGFUKHQsZSxuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sbik7Zm9yKGNvbnN0IG4gb2YgZSlvW25dPXQ7cmV0dXJuIG99ZnVuY3Rpb24gclQodCxlLG4sbyl7aWYoTUEoZSkpe2NvbnN0IGk9dFtlXS50YWdSdW5TYW1wbGVkSW5mbztyZXR1cm4gaS5oYXNPd25Qcm9wZXJ0eShuKT9PYmplY3Qua2V5cyhpW25dKS5maWx0ZXIoKHQ9Pm88aVtuXVt0XS5tYXhTYW1wbGVzUGVyU3RlcCkpOltdfWNvbnN0IGk9dFtlXS50YWdUb1J1bnM7cmV0dXJuIGkuaGFzT3duUHJvcGVydHkobik/aVtuXTpbXX1mdW5jdGlvbiBzVCh0LGUsbixvLGksYSl7Y29uc3Qgcj1uZXcgU2V0KHQpLHM9W107Zm9yKGNvbnN0IG8gb2YgdClmb3IoY29uc3QgdCBvZiBlKWlmKChsPW5bdF0pLnBsdWdpbj09PShjPW8pLnBsdWdpbiYmbC50YWc9PT1jLnRhZyYmbC5zYW1wbGU9PT1jLnNhbXBsZSYmKGwucnVuSWQ9PT1jLnJ1bklkfHwhbC5ydW5JZCYmIWMucnVuSWQpKXtzLnB1c2godCksci5kZWxldGUobyk7YnJlYWt9dmFyIGwsYztpZighcy5sZW5ndGgpcmV0dXJue3VucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzOnQsY2FyZE1ldGFkYXRhTWFwOm4sY2FyZFRvUGlubmVkQ29weTpvLHBpbm5lZENhcmRUb09yaWdpbmFsOmksY2FyZFN0ZXBJbmRleDphfTtsZXQgZD17Y2FyZFRvUGlubmVkQ29weTpvLHBpbm5lZENhcmRUb09yaWdpbmFsOmksY2FyZFN0ZXBJbmRleDphLGNhcmRNZXRhZGF0YU1hcDpufTtmb3IoY29uc3QgdCBvZiBzKWQ9bFQodCxkLmNhcmRUb1Bpbm5lZENvcHksZC5waW5uZWRDYXJkVG9PcmlnaW5hbCxkLmNhcmRTdGVwSW5kZXgsZC5jYXJkTWV0YWRhdGFNYXApO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZCkse3VucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzOlsuLi5yXX0pfWZ1bmN0aW9uIGxUKHQsZSxuLG8saSl7aWYoZS5oYXModCkpcmV0dXJue2NhcmRUb1Bpbm5lZENvcHk6ZSxwaW5uZWRDYXJkVG9PcmlnaW5hbDpuLGNhcmRTdGVwSW5kZXg6byxjYXJkTWV0YWRhdGFNYXA6aX07Y29uc3QgYT1uZXcgTWFwKGUpLHI9bmV3IE1hcChuKSxzPU9iamVjdC5hc3NpZ24oe30sbyksbD1PYmplY3QuYXNzaWduKHt9LGkpLGM9KGZ1bmN0aW9uIGQodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHtiYXNlQ2FyZElkOnR9KX0pKHQpO2Euc2V0KHQsYyksci5zZXQoYyx0KSxvLmhhc093blByb3BlcnR5KHQpJiYoc1tjXT1vW3RdKTtjb25zdCBwPWlbdF07aWYoIXApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGluIGEgY2FyZCB3aXRob3V0IG1ldGFkYXRhIik7cmV0dXJuIGxbY109cCx7Y2FyZFRvUGlubmVkQ29weTphLHBpbm5lZENhcmRUb09yaWdpbmFsOnIsY2FyZFN0ZXBJbmRleDpzLGNhcmRNZXRhZGF0YU1hcDpsfX1mdW5jdGlvbiBjVCh0KXtyZXR1cm4gdC5waW5uZWRDYXJkVG9PcmlnaW5hbC5zaXplK3QudW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMubGVuZ3RoPDEwfWVULsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlVCl9LGVULsm1bW9kPWFvKHt0eXBlOmVUfSksZVQuybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6UEEsdXNlQ2xhc3M6QUF9XSxpbXBvcnRzOltbdFQsY0VdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZVQsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOlt0VCxjRV0scHJvdmlkZXJzOlt7cHJvdmlkZTpQQSx1c2VDbGFzczpBQX1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZVQse2ltcG9ydHM6W3RULGNFXX0pO2NvbnN0IGRUPSJtZXRyaWNzIixwVD17dG9vbHRpcFNvcnQ6YkEuREVGQVVMVCxpZ25vcmVPdXRsaWVyczohMCx4QXhpc1R5cGU6eUEuU1RFUCxzY2FsYXJTbW9vdGhpbmc6LjYsc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWDohMSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOjFlMyxpbWFnZUNvbnRyYXN0SW5NaWxsaToxZTMsaW1hZ2VTaG93QWN0dWFsU2l6ZTohMSxoaXN0b2dyYW1Nb2RlOnBFLk9GRlNFVH0sbVQ9S3coZFQpLHVUPVp3KG1ULCh0PT50LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSk7WncobVQsKHQ9PnQudGFnTWV0YWRhdGEpKTtjb25zdCBmVD1adyhtVCwodD0+dC5jYXJkTGlzdCkpLGdUPVp3KG1ULCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4geUUuTk9UX0xPQURFRDtjb25zdHtwbHVnaW46bix0YWc6byxydW5JZDppLHNhbXBsZTphfT10LmNhcmRNZXRhZGF0YU1hcFtlXSxyPW5UKHQudGltZVNlcmllc0RhdGEsbixvLGEpO2lmKCFyKXJldHVybiB5RS5OT1RfTE9BREVEO2NvbnN0IHM9ci5ydW5Ub0xvYWRTdGF0ZTtpZihpKXJldHVybiBzLmhhc093blByb3BlcnR5KGkpP3NbaV06eUUuTk9UX0xPQURFRDtjb25zdCBsPXJUKHQudGFnTWV0YWRhdGEsbixvLGEpO2lmKCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIGEgY2FyZCB3aG9zZSB0YWcgaGFzIG5vIHJ1bnMiKTtyZXR1cm4gbC5ldmVyeSgodD0+c1t0XT09PXlFLkxPQURFRCkpP3lFLkxPQURFRDpsLnNvbWUoKHQ9PnNbdF09PT15RS5MT0FESU5HKSk/eUUuTE9BRElORzp5RS5OT1RfTE9BREVEfSkpLGhUPVp3KG1ULCgodCxlKT0+e2lmKCF0LmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gbnVsbDtjb25zdHtwbHVnaW46bix0YWc6byxzYW1wbGU6aX09dC5jYXJkTWV0YWRhdGFNYXBbZV0sYT1uVCh0LnRpbWVTZXJpZXNEYXRhLG4sbyxpKTtyZXR1cm4gYT9hLnJ1blRvU2VyaWVzOm51bGx9KSksYlQ9WncobVQsKHQ9PnQuY2FyZE1ldGFkYXRhTWFwKSkseVQ9WncoYlQsKCh0LGUpPT50Lmhhc093blByb3BlcnR5KGUpP3RbZV06bnVsbCkpLF9UPVp3KG1ULCh0PT50LnZpc2libGVDYXJkTWFwKSksQ1Q9WncoX1QsKHQ9Pm5ldyBTZXQodC52YWx1ZXMoKSkpKSxNVD1adyhmVCxiVCwoKHQsZSk9PnQuZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLHZUPVp3KG1ULCgodCxlKT0+dC5jYXJkU3RlcEluZGV4Lmhhc093blByb3BlcnR5KGUpP3QuY2FyZFN0ZXBJbmRleFtlXTpudWxsKSkseFQ9WncobVQsKHQ9PnQuY2FyZFRvUGlubmVkQ29weSkpLE9UPVp3KG1ULCh0PT50LnBpbm5lZENhcmRUb09yaWdpbmFsKSksUFQ9WncoeFQsYlQsKCh0LGUpPT5bLi4udC52YWx1ZXMoKV0uZmlsdGVyKCh0PT5lLmhhc093blByb3BlcnR5KHQpKSkubWFwKCh0PT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6dH0sZVt0XSkpKSkpLHdUPVp3KHhULE9ULCgodCxlLG4pPT50LmhhcyhuKXx8ZS5oYXMobikpKSxrVD1adyhtVCwodD0+dC51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcykpLFNUPVp3KG1ULCh0PT5jVCh0KSkpLERUPVp3KG1ULCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncyksdC5zZXR0aW5nT3ZlcnJpZGVzKSkpLEVUPVp3KG1ULCh0PT50LnNldHRpbmdPdmVycmlkZXMpKSxSVD1adyhEVCwodD0+dC50b29sdGlwU29ydCkpLEFUPVp3KERULCh0PT50Lmlnbm9yZU91dGxpZXJzKSksVFQ9WncoRFQsKHQ9PnQueEF4aXNUeXBlKSksTlQ9WncoRFQsKHQ9PnQuaGlzdG9ncmFtTW9kZSkpLHpUPVp3KERULCh0PT50LnNjYWxhclNtb290aGluZykpLElUPVp3KERULCh0PT50LnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpKSxIVD1adyhEVCwodD0+dC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSksRlQ9WncoRFQsKHQ9PnQuaW1hZ2VDb250cmFzdEluTWlsbGkpKSxMVD1adyhEVCwodD0+dC5pbWFnZVNob3dBY3R1YWxTaXplKSksQlQ9WncobVQsKHQ9PnQudGFnRmlsdGVyKSksVlQ9WncobVQsKCh0LGUpPT5Cb29sZWFuKHQudGFnR3JvdXBFeHBhbmRlZC5nZXQoZSkpKSksalQ9WncobVQsKHQ9PnQuc2VsZWN0VGltZUVuYWJsZWQpKSxVVD1adyhtVCwodD0+dC51c2VSYW5nZVNlbGVjdFRpbWUpKSxHVD1adyhtVCwodD0+e2NvbnN0e21pbjplLG1heDpufT10LnN0ZXBNaW5NYXg7cmV0dXJue21pbjplPT09MS8wPzA6ZSxtYXg6bj09PS0xLzA/MWUzOm59fSkpLFdUPVp3KG1ULEdULCgodCxlKT0+e3ZhciBuO3JldHVybiB0LnNlbGVjdGVkVGltZT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZWxlY3RlZFRpbWUpLHtlbmQ6bnVsbCE9PShuPXQuc2VsZWN0ZWRUaW1lLmVuZCkmJnZvaWQgMCE9PW4/bjp7c3RlcDplLm1heH19KTp7c3RhcnQ6e3N0ZXA6ZS5taW59LGVuZDp7c3RlcDplLm1heH19fSkpLFlUPVp3KG1ULFdULCgodCxlKT0+dC5zZWxlY3RUaW1lRW5hYmxlZD90LnVzZVJhbmdlU2VsZWN0VGltZT9lOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZW5kOm51bGx9KTpudWxsKSkscVQ9WncobVQsKHQ9PnQuZmlsdGVyZWRQbHVnaW5UeXBlcykpLFpUPVp3KG1ULCh0PT50LnByb21vdGVUaW1lU2VyaWVzKSksWFQ9WncobVQsKHQ9PnQuaXNTZXR0aW5nc1BhbmVPcGVuKSk7dmFyIEtUOyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5XSEFUU19ORVc9MV09IldIQVRTX05FVyJ9KShLVHx8KEtUPXt9KSk7Y29uc3QgSlQ9S3coIm5vdGlmaWNhdGlvbiIpO1p3KEpULCh0PT50Lm5vdGlmaWNhdGlvbnMpKSxadyhKVCwodD0+e3ZhciBlO3JldHVybiBudWxsIT09KGU9dC5sYXN0UmVhZFRpbWVzdGFtcEluTXMpJiZ2b2lkIDAhPT1lP2U6LTF9KSk7Y29uc3QgUVQ9InJ1bnMiO3ZhciAkVCx0TjtmdW5jdGlvbiBlTih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodC5zbGljZSgpLnNvcnQoKSl9ZnVuY3Rpb24gbk4odCxlLG4pe2NvbnN0IG89e30saT1bXSxhPXttYXRjaGVzOm8sbm9uTWF0Y2hlczppfTtzd2l0Y2godC5rZXkpe2Nhc2UgdE4uUlVOOmZvcihjb25zdCB0IG9mIGUpb1t0LmlkXT1bdF07YnJlYWs7Y2FzZSB0Ti5FWFBFUklNRU5UOmZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9blt0LmlkXSxpPW9bZV18fFtdO2kucHVzaCh0KSxvW2VdPWl9YnJlYWs7Y2FzZSB0Ti5SRUdFWDppZighdC5yZWdleFN0cmluZylicmVhaztsZXQgYTt0cnl7YT1uZXcgUmVnRXhwKHQucmVnZXhTdHJpbmcpfWNhdGNoKHQpe2JyZWFrfWZvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5uYW1lLm1hdGNoKGEpO2lmKGUpe2NvbnN0IG49ZS5sZW5ndGg+MT9KU09OLnN0cmluZ2lmeShlLnNsaWNlKDEpKToicHNldWRvX2dyb3VwIixpPW9bbl18fFtdO2kucHVzaCh0KSxvW25dPWl9ZWxzZSBpLnB1c2godCl9fXJldHVybiBhfWZ1bmN0aW9uIG9OKHQsZSl7c3dpdGNoKHQpe2Nhc2UgdE4uUkVHRVg6cmV0dXJue2tleTp0LHJlZ2V4U3RyaW5nOm51bGwhPWU/ZToiIn07Y2FzZSB0Ti5SVU46Y2FzZSB0Ti5FWFBFUklNRU5UOmRlZmF1bHQ6cmV0dXJue2tleTp0fX19IShmdW5jdGlvbih0KXt0W3QuRVhQRVJJTUVOVF9OQU1FPTBdPSJFWFBFUklNRU5UX05BTUUiLHRbdC5IUEFSQU09MV09IkhQQVJBTSIsdFt0Lk1FVFJJQz0yXT0iTUVUUklDIix0W3QuUlVOX05BTUU9M109IlJVTl9OQU1FIn0pKCRUfHwoJFQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LlJVTj0wXT0iUlVOIix0W3QuRVhQRVJJTUVOVD0xXT0iRVhQRVJJTUVOVCIsdFt0LlJFR0VYPTJdPSJSRUdFWCJ9KSh0Tnx8KHROPXt9KSk7Y29uc3QgaU49S3coUVQpLGFOPVp3KGlOLCh0PT50LmRhdGEpKSxyTj1adyhhTiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRUb0V4cElkW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSksc049WncoYU4sKCh0LGUpPT57dmFyIG47cmV0dXJuIG51bGwhPT0obj10LnJ1bk1ldGFkYXRhW2UucnVuSWRdKSYmdm9pZCAwIT09bj9uOm51bGx9KSksbE49WncoYU4sKCh0LGUpPT4odC5ydW5JZHNbZS5leHBlcmltZW50SWRdfHxbXSkuZmlsdGVyKChlPT5Cb29sZWFuKHQucnVuTWV0YWRhdGFbZV0pKSkubWFwKChlPT50LnJ1bk1ldGFkYXRhW2VdKSkpKSxjTj1adyhhTiwoKHQsZSk9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQucnVuSWRzW2UuZXhwZXJpbWVudElkXSkmJnZvaWQgMCE9PW4/bjpbXX0pKSxkTj1adyhhTiwodD0+bmV3IE1hcChPYmplY3QuZW50cmllcyh0LnJ1bk1ldGFkYXRhKSkpKSxwTj1adyhhTiwoKHQsZSk9PnQucnVuc0xvYWRTdGF0ZVtlLmV4cGVyaW1lbnRJZF18fHtsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTp5RS5OT1RfTE9BREVEfSkpLG1OPVp3KGFOLCgodCxlKT0+e2NvbnN0IG49ZU4oZS5leHBlcmltZW50SWRzKTtyZXR1cm4gdC5zZWxlY3Rpb25TdGF0ZS5nZXQobil8fG5ldyBNYXB9KSksdU49WncoYU4sKHQ9Pm51bGwhPT10LnVzZXJTZXRHcm91cEJ5S2V5P29OKHQudXNlclNldEdyb3VwQnlLZXksdC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpOm51bGwpKSxmTj1adyh1TixhTiwoKHQsZSk9Pm51bGwhPXQ/dDplLmluaXRpYWxHcm91cEJ5KSksZ049WncoYU4sKHQ9PnQucmVnZXhGaWx0ZXIpKSxoTj1adyhpTiwodD0+dC51aSkpLGJOPVp3KGhOLCh0PT50LnBhZ2luYXRpb25PcHRpb24pKSx5Tj1adyhoTiwodD0+dC5zb3J0KSksX049WncoYU4sKHQ9PnQucnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnkpKSxDTj1adyhhTiwodD0+dC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpKSxNTj1adyhhTiwodD0+dC5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKSx2Tj1KUCgiW1NldHRpbmdzXSBSZWxvYWQgRW5hYmxlIFRvZ2dsZWQiKSx4Tj1KUCgiW1NldHRpbmdzXSBSZWxvYWQgUGVyaW9kIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE9OPUpQKCJbU2V0dGluZ3NdIFBhZ2UgU2l6ZSBDaGFuZ2UiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxQTj0ic2V0dGluZ3MiLHdOPXtzdGF0ZTp5RS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc2V0dGluZ3M6e3JlbG9hZFBlcmlvZEluTXM6M2U0LHJlbG9hZEVuYWJsZWQ6ITEscGFnZVNpemU6MTIsY29sb3JQYWxldHRlOntpZDoiZGVmYXVsdCIsbmFtZToiRGVmYWx0Iixjb2xvcnM6W3tuYW1lOiJTbGF0ZSIsbGlnaHRIZXg6IiM0MjUwNjYiLGRhcmtIZXg6IiM4ZTk4YTMifSx7bmFtZToiQ3lhbiIsbGlnaHRIZXg6IiMxMmI1Y2IiLGRhcmtIZXg6IiMxMmI1Y2IifSx7bmFtZToiUGluayIsbGlnaHRIZXg6IiNlNTI1OTIiLGRhcmtIZXg6IiNlNTI1OTIifSx7bmFtZToiWWVsbG93IixsaWdodEhleDoiI2Y5YWIwMCIsZGFya0hleDoiI2Y5YWIwMCJ9LHtuYW1lOiJQdXJwbGUiLGxpZ2h0SGV4OiIjOTMzNGU2IixkYXJrSGV4OiIjOTMzNGU2In0se25hbWU6IkxpZ2h0IEdyZWVuIixsaWdodEhleDoiIzdjYjM0MiIsZGFya0hleDoiIzdjYjM0MiJ9LHtuYW1lOiJPcmFuZ2UiLGxpZ2h0SGV4OiIjZTg3MTBhIixkYXJrSGV4OiIjZTg3MTBhIn1dLGluYWN0aXZlOntuYW1lOiJHcmF5IixsaWdodEhleDoiI2UwZTBlMCIsZGFya0hleDoiIzNiM2IzYiJ9fX19LGtOPUt3KFBOKSxTTj1adyhrTiwodD0+dC5zdGF0ZSkpLEROPVp3KGtOLCh0PT50LnNldHRpbmdzLnJlbG9hZEVuYWJsZWQpKSxFTj1adyhrTiwodD0+dC5zZXR0aW5ncy5yZWxvYWRQZXJpb2RJbk1zKSksUk49Wncoa04sKHQ9PnQuc2V0dGluZ3MucGFnZVNpemUpKSxBTj1adyhrTiwodD0+dC5zZXR0aW5ncy5jb2xvclBhbGV0dGUpKTtmdW5jdGlvbiBUTih0LGUsbil7aWYoIWUpcmV0dXJuITA7bGV0IG87dHJ5e289bmV3IFJlZ0V4cChlLCJpIil9Y2F0Y2godCl7cmV0dXJuITF9Y29uc3QgaT1bdC5ydW5OYW1lXTtyZXR1cm4gbiYmaS5wdXNoKHQuZXhwZXJpbWVudEFsaWFzLGAke3QuZXhwZXJpbWVudEFsaWFzfS8ke3QucnVuTmFtZX1gKSxpLnNvbWUoKHQ9Pm8udGVzdCh0KSkpfWNvbnN0IE5OPVp3KCh0PT57Y29uc3QgZT1UUyh0KTtyZXR1cm4gZT9tTih0LHtleHBlcmltZW50SWRzOmV9KTpudWxsfSksZ04sKHQ9Pnt2YXIgZTtjb25zdCBuPW51bGwhPT0oZT1UUyh0KSkmJnZvaWQgMCE9PWU/ZTpbXSxvPXpTKHQpLGk9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCBuPXVBKHQse2V4cGVyaW1lbnRJZDplfSk7aWYoIW4pY29udGludWU7Y29uc3QgYT1sTih0LHtleHBlcmltZW50SWQ6ZX0pO2Zvcihjb25zdCB0IG9mIGEpaS5zZXQodC5pZCx7cnVuTmFtZTp0Lm5hbWUsZXhwZXJpbWVudE5hbWU6bi5uYW1lLGV4cGVyaW1lbnRBbGlhczpvW2VdfSl9cmV0dXJuIGl9KSxSUywoKHQsZSxuLG8pPT57aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgaT1vPT09WmsuQ09NUEFSRV9FWFBFUklNRU5ULGE9bmV3IE1hcDtmb3IoY29uc3RbbyxyXW9mIHQuZW50cmllcygpKXtjb25zdCB0PW4uZ2V0KG8pO2Euc2V0KG8sVE4odCxlLGkpJiZyKX1yZXR1cm4gYX0pKSx6Tj1adyhBTixDTixfTixKRCwoKHQsZSxuLG8pPT57Y29uc3QgaT17fTtyZXR1cm4gZS5mb3JFYWNoKCgoZSxhKT0+e2xldCByPW8/dC5pbmFjdGl2ZS5kYXJrSGV4OnQuaW5hY3RpdmUubGlnaHRIZXg7aWYobi5oYXMoYSkpcj1uLmdldChhKTtlbHNlIGlmKGU+PTApe2NvbnN0IG49dC5jb2xvcnNbZSV0LmNvbG9ycy5sZW5ndGhdO3I9bz9uLmRhcmtIZXg6bi5saWdodEhleH1pW2FdPXJ9KSksaX0pKTtjbGFzcyBJTntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLnJ1bnNEYXRhU291cmNlPW4sdGhpcy5sb2FkUnVuc09uUnVuVGFibGVTaG93biQ9TWsoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoRGsoVVIpLFp0KCgoe2V4cGVyaW1lbnRJZHM6dH0pPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09eUUuRkFJTEVEfHx0PT09eUUuTk9UX0xPQURFRCkpLnBpcGUoY2UoKHQ9PiEhdC5sZW5ndGgpKSxadCgoZT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsZSkpKSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25Sb3V0ZUNoYW5nZSQ9dGhpcy5hY3Rpb25zJC5waXBlKERrKGRTKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChOUykpLE1lKCgoWyx0XSxbLGVdKT0+dD09PWUpKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChUUykpLGNlKCgoWyx0XSk9PiEhdCkpLEl0KCgoWyx0XSk9PnQpKSxadCgodD0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dD09PXlFLkZBSUxFRHx8dD09PXlFLk5PVF9MT0FERUQpKS5waXBlKEl0KChlPT4oe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6ZX0pKSkpKSkpLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25SZWxvYWQkPXRoaXMuYWN0aW9ucyQucGlwZShEayh4RSx2RSksVmUodGhpcy5zdG9yZS5zZWxlY3QoVFMpKSxjZSgoKFssdF0pPT4hIXQpKSxJdCgoKFssdF0pPT50KSksWnQoKHQ9PnRoaXMuZ2V0RXhwZXJpbWVudHNXaXRoTG9hZFN0YXRlKHQsKHQ9PnQhPT15RS5MT0FESU5HKSkucGlwZShJdCgoZT0+KHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KSkpKSkpKSx0aGlzLmxvYWRSdW5zT25OYXZpZ2F0aW9uT3JSZWxvYWQkPU1rKCgoKT0+cmUodGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJvdXRlQ2hhbmdlJCx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUmVsb2FkJCkucGlwZShadCgoKHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsZSkpKSkpLHtkaXNwYXRjaDohMX0pfWdldFJ1bnNMaXN0TG9hZFN0YXRlKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChwTix7ZXhwZXJpbWVudElkOnR9KS5waXBlKGJlKDEpKX1nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCxlKXtyZXR1cm4gJHQodC5tYXAoKHQ9PnRoaXMuZ2V0UnVuc0xpc3RMb2FkU3RhdGUodCkpKSkucGlwZShJdCgobj0+dC5maWx0ZXIoKCh0LG8pPT5lKG5bb10uc3RhdGUpKSkpKSl9ZmV0Y2hBbGxSdW5zTGlzdCh0LGUpe3JldHVybiBFdCh7ZXhwZXJpbWVudElkczp0LGV4cGVyaW1lbnRJZHNUb0JlRmV0Y2hlZDplfSkucGlwZShGZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKE5SKHtleHBlcmltZW50SWRzOnQscmVxdWVzdGVkRXhwZXJpbWVudElkczplfSkpfSkpLFp0KCgoKT0+e2NvbnN0IG49bmV3IFNldChlKTtyZXR1cm4gJHQodC5tYXAoKHQ9Pm4uaGFzKHQpP3RoaXMuZmV0Y2hSdW5zRm9yRXhwZXJpbWVudCh0KTp0aGlzLm1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKHQpKSkpfSkpLEl0KCh0PT57Y29uc3QgZT17fSxuPVtdO2Zvcihjb25zdCBvIG9mIHQpbi5wdXNoKC4uLm8ucnVucyksby5mcm9tUmVtb3RlJiYoZVtvLmV4cGVyaW1lbnRJZF09e3J1bnM6by5ydW5zLG1ldGFkYXRhOm8ubWV0YWRhdGF9KTtyZXR1cm57bmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59fSkpLEZlKCgoe25ld1J1bnNBbmRNZXRhZGF0YTplLHJ1bnNGb3JBbGxFeHBlcmltZW50czpufSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHpSKHtleHBlcmltZW50SWRzOnQsbmV3UnVuc0FuZE1ldGFkYXRhOmUscnVuc0ZvckFsbEV4cGVyaW1lbnRzOm59KSl9KSkscGUoKG49Pih0aGlzLnN0b3JlLmRpc3BhdGNoKElSKHtleHBlcmltZW50SWRzOnQscmVxdWVzdGVkRXhwZXJpbWVudElkczplfSkpLEV0KG51bGwpKSkpLEl0KCgoKT0+bnVsbCkpKX1tYXliZVdhaXRGb3JSdW5zQW5kR2V0UnVucyh0KXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QocE4se2V4cGVyaW1lbnRJZDp0fSkucGlwZShjZSgodD0+dC5zdGF0ZSE9PXlFLkxPQURJTkcpKSxiZSgxKSxadCgodD0+dC5zdGF0ZT09PXlFLkZBSUxFRD9SdChuZXcgRXJyb3IoIlBlbmRpbmcgcmVxdWVzdCBmYWlsZWQiKSk6RXQodCkpKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChsTix7ZXhwZXJpbWVudElkOnR9KSksSXQoKChbLGVdKT0+KHtmcm9tUmVtb3RlOiExLGV4cGVyaW1lbnRJZDp0LHJ1bnM6ZX0pKSkpfWZldGNoUnVuc0ZvckV4cGVyaW1lbnQodCl7cmV0dXJuICR0KFt0aGlzLnJ1bnNEYXRhU291cmNlLmZldGNoUnVucyh0KSx0aGlzLnJ1bnNEYXRhU291cmNlLmZldGNoSHBhcmFtc01ldGFkYXRhKHQpXSkucGlwZShJdCgoKFtlLG5dKT0+KHtmcm9tUmVtb3RlOiEwLGV4cGVyaW1lbnRJZDp0LHJ1bnM6ZSxtZXRhZGF0YTpufSkpKSl9fWZ1bmN0aW9uIEhOKHQsZSxuKXtjb25zdCBvPU9iamVjdC5rZXlzKHQpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksZSkse3ByaXZhdGVSb3V0ZUNvbnRleHRlZFN0YXRlOnt9fSk7cmV0dXJue2luaXRpYWxTdGF0ZTppLHJlZHVjZXJzOnlrKGksYmsoZFMsKChlLHtiZWZvcmU6aSxhZnRlcjphfSk9Pntjb25zdCByPVFrKGEucm91dGVLaW5kLGEucGFyYW1zKSxzPWk/UWsoaS5yb3V0ZUtpbmQsaS5wYXJhbXMpOm51bGw7aWYocz09PXIpcmV0dXJuIGU7bGV0IGw9T2JqZWN0LmFzc2lnbih7fSxlLnByaXZhdGVSb3V0ZUNvbnRleHRlZFN0YXRlKTtpZihzKXtjb25zdCB0PXt9O2Zvcihjb25zdCBuIG9mIG8pdFtuXT1lW25dO2w9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtbc106dH0pfWxldCBjPWUucHJpdmF0ZVJvdXRlQ29udGV4dGVkU3RhdGUmJmUucHJpdmF0ZVJvdXRlQ29udGV4dGVkU3RhdGVbcl0/ZS5wcml2YXRlUm91dGVDb250ZXh0ZWRTdGF0ZVtyXTpudWxsO3MmJm51bGw9PT1jJiYoYz10KTtjb25zdCBkPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLGMpLHtwcml2YXRlUm91dGVDb250ZXh0ZWRTdGF0ZTpsfSk7cmV0dXJuIG4/bihkLGEpOmR9KSkpfX12YXIgRk4sTE47ZnVuY3Rpb24gQk4oLi4udCl7cmV0dXJuKGUsbik9PntsZXQgbz1lO2Zvcihjb25zdCBlIG9mIHQpbz1lKG8sbik7cmV0dXJuIG99fUlOLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJTikodnIoU2spLHZyKEl3KSx2cihYUikpfSxJTi7JtXByb3Y9TW4oe3Rva2VuOklOLGZhY3Rvcnk6SU4uybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElOLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTa30se3R5cGU6SXd9LHt0eXBlOlhSfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5BU0M9ImFzYyIsdC5ERVNDPSJkZXNjIix0LlVOU0VUPSIifSkoRk58fChGTj17fSkpLChmdW5jdGlvbih0KXt0LkVYUEVSSU1FTlRfSUQ9ImlkIix0LlVTRVI9InVzZXIiLHQuQkVGT1JFPSJiZWZvcmUiLHQuQUZURVI9ImFmdGVyIix0LlJFR0VYPSJyZWdleCJ9KShMTnx8KExOPXt9KSk7Y29uc3R7aW5pdGlhbFN0YXRlOlZOLHJlZHVjZXJzOmpOfT1ITih7cnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcCxkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6bmV3IE1hcCxncm91cEtleVRvQ29sb3JJZDpuZXcgTWFwLGluaXRpYWxHcm91cEJ5OntrZXk6dE4uUlVOfSx1c2VyU2V0R3JvdXBCeUtleTpudWxsLGNvbG9yR3JvdXBSZWdleFN0cmluZzoiIixyZWdleEZpbHRlcjoiIn0se3J1bklkczp7fSxydW5JZFRvRXhwSWQ6e30scnVuTWV0YWRhdGE6e30scnVuc0xvYWRTdGF0ZTp7fSxzZWxlY3Rpb25TdGF0ZTpuZXcgTWFwfSwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aW5pdGlhbEdyb3VwQnk6e2tleTplLnJvdXRlS2luZD09PVprLkNPTVBBUkVfRVhQRVJJTUVOVD90Ti5FWFBFUklNRU5UOnROLlJVTn19KSkpLFVOPUJOKHlrKFZOLGJrKHJTLCgodCx7cm91dGVLaW5kOmUscGFydGlhbFN0YXRlOm59KT0+e3ZhciBvO2lmKGUhPT1aay5DT01QQVJFX0VYUEVSSU1FTlQmJmUhPT1aay5FWFBFUklNRU5UKXJldHVybiB0O2NvbnN0IGk9bi5ydW5zLmdyb3VwQnk7aWYoIWkpcmV0dXJuIHQ7Y29uc3QgYT1pLmtleT09PXROLlJFR0VYP2kucmVnZXhTdHJpbmc6dC5jb2xvckdyb3VwUmVnZXhTdHJpbmc7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29sb3JHcm91cFJlZ2V4U3RyaW5nOmEsdXNlclNldEdyb3VwQnlLZXk6bnVsbCE9PShvPWkua2V5KSYmdm9pZCAwIT09bz9vOm51bGx9KX0pKSxiayhOUiwoKHQsZSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKTtmb3IoY29uc3QgdCBvZiBlLnJlcXVlc3RlZEV4cGVyaW1lbnRJZHMpblt0XT1uW3RdP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuW3RdKSx7c3RhdGU6eUUuTE9BRElOR30pOntsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTp5RS5MT0FESU5HfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZFN0YXRlOm59KX0pKSxiayh6UiwoKHQsZSk9Pnt2YXIgbjtjb25zdCBvPU9iamVjdC5hc3NpZ24oe30sdC5ydW5JZHMpLGk9T2JqZWN0LmFzc2lnbih7fSx0LnJ1bk1ldGFkYXRhKSxhPU9iamVjdC5hc3NpZ24oe30sdC5ydW5JZFRvRXhwSWQpLHI9T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpLHM9bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhlLm5ld1J1bnNBbmRNZXRhZGF0YSkpe2NvbnN0e3J1bnM6bixtZXRhZGF0YTpzfT1lLm5ld1J1bnNBbmRNZXRhZGF0YVt0XTtvW3RdPW4ubWFwKCgoe2lkOnR9KT0+dCkpLHJbdF09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHJbdF0pLHtsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKSxzdGF0ZTp5RS5MT0FERUR9KTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCBuPXMucnVuVG9IcGFyYW1zQW5kTWV0cmljc1tlLmlkXTtpW2UuaWRdPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7aHBhcmFtczpuP24uaHBhcmFtczpudWxsLG1ldHJpY3M6bj9uLm1ldHJpY3M6bnVsbH0pLGFbZS5pZF09dH19Y29uc3QgbD1lTihlLmV4cGVyaW1lbnRJZHMpLGM9bmV3IE1hcChudWxsIT09KG49cy5nZXQobCkpJiZ2b2lkIDAhPT1uP246W10pLGQ9ZS5ydW5zRm9yQWxsRXhwZXJpbWVudHMubGVuZ3RoPD01MDA7Zm9yKGNvbnN0IHQgb2YgZS5ydW5zRm9yQWxsRXhwZXJpbWVudHMpYy5oYXModC5pZCl8fGMuc2V0KHQuaWQsZCk7cmV0dXJuIHMuc2V0KGwsYyksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5JZHM6byxydW5JZFRvRXhwSWQ6YSxydW5NZXRhZGF0YTppLHJ1bnNMb2FkU3RhdGU6cixzZWxlY3Rpb25TdGF0ZTpzfSl9KSksYmsoSVIsKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LHQucnVuc0xvYWRTdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgZS5yZXF1ZXN0ZWRFeHBlcmltZW50SWRzKW5bdF09blt0XT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sblt0XSkse3N0YXRlOnlFLkZBSUxFRH0pOntsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTp5RS5GQUlMRUR9O3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1bnNMb2FkU3RhdGU6bn0pfSkpLGJrKEhSLCgodCx7ZXhwZXJpbWVudElkczplLHJ1bklkOm59KT0+e3ZhciBvO2NvbnN0IGk9ZU4oZSksYT1uZXcgTWFwKHQuc2VsZWN0aW9uU3RhdGUpLHI9bmV3IE1hcChudWxsIT09KG89YS5nZXQoaSkpJiZ2b2lkIDAhPT1vP286W10pO3JldHVybiByLnNldChuLCFCb29sZWFuKHIuZ2V0KG4pKSksYS5zZXQoaSxyKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGlvblN0YXRlOmF9KX0pKSxiayhGUiwoKHQse2V4cGVyaW1lbnRJZHM6ZSxydW5JZHM6bn0pPT57dmFyIG87Y29uc3QgaT1lTihlKSxhPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSkscj1uZXcgTWFwKG51bGwhPT0obz1hLmdldChpKSkmJnZvaWQgMCE9PW8/bzpbXSkscz0hbi5ldmVyeSgodD0+Qm9vbGVhbihyLmdldCh0KSkpKTtmb3IoY29uc3QgdCBvZiBuKXIuc2V0KHQscyk7cmV0dXJuIGEuc2V0KGksciksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3Rpb25TdGF0ZTphfSl9KSksYmsoelIsKCh0LHtydW5zRm9yQWxsRXhwZXJpbWVudHM6ZX0pPT57Y29uc3Qgbj1uZXcgTWFwKHQuZ3JvdXBLZXlUb0NvbG9ySWQpLG89bmV3IE1hcCh0LmRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeSk7bGV0IGk9dC5pbml0aWFsR3JvdXBCeTtudWxsIT09dC51c2VyU2V0R3JvdXBCeUtleSYmKGk9b04odC51c2VyU2V0R3JvdXBCeUtleSx0LmNvbG9yR3JvdXBSZWdleFN0cmluZykpO2NvbnN0IGE9bk4oaSxlLHQucnVuSWRUb0V4cElkKTtPYmplY3QuZW50cmllcyhhLm1hdGNoZXMpLmZvckVhY2goKChbdCxlXSk9Pnt2YXIgaTtjb25zdCBhPW51bGwhPT0oaT1uLmdldCh0KSkmJnZvaWQgMCE9PWk/aTpuLnNpemU7bi5zZXQodCxhKTtmb3IoY29uc3QgdCBvZiBlKW8uc2V0KHQuaWQsYSl9KSk7Zm9yKGNvbnN0IHQgb2YgYS5ub25NYXRjaGVzKW8uc2V0KHQuaWQsLTEpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2RlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeTpvLGdyb3VwS2V5VG9Db2xvcklkOm59KX0pKSxiayhHUiwoKHQse2V4cGVyaW1lbnRJZHM6ZSxncm91cEJ5Om59KT0+e2NvbnN0IG89bmV3IE1hcCxpPW5ldyBNYXAodC5kZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnkpLGE9bk4obixlLmZsYXRNYXAoKGU9PnQucnVuSWRzW2VdKSkubWFwKChlPT50LnJ1bk1ldGFkYXRhW2VdKSksdC5ydW5JZFRvRXhwSWQpO09iamVjdC5lbnRyaWVzKGEubWF0Y2hlcykuZm9yRWFjaCgoKFt0LGVdKT0+e3ZhciBuO2NvbnN0IGE9bnVsbCE9PShuPW8uZ2V0KHQpKSYmdm9pZCAwIT09bj9uOm8uc2l6ZTtvLnNldCh0LGEpO2Zvcihjb25zdCB0IG9mIGUpaS5zZXQodC5pZCxhKX0pKTtmb3IoY29uc3QgdCBvZiBhLm5vbk1hdGNoZXMpaS5zZXQodC5pZCwtMSk7Y29uc3Qgcj1uLmtleT09PXROLlJFR0VYP24ucmVnZXhTdHJpbmc6dC5jb2xvckdyb3VwUmVnZXhTdHJpbmc7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y29sb3JHcm91cFJlZ2V4U3RyaW5nOnIsdXNlclNldEdyb3VwQnlLZXk6bi5rZXksZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5OmksZ3JvdXBLZXlUb0NvbG9ySWQ6byxydW5Db2xvck92ZXJyaWRlRm9yR3JvdXBCeTpuZXcgTWFwfSl9KSksYmsoalIsKCh0LHtydW5JZDplLG5ld0NvbG9yOm59KT0+e2NvbnN0IG89bmV3IE1hcCh0LnJ1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5KTtyZXR1cm4gby5zZXQoZSxuKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5Om99KX0pKSxiayhWUiwoKHQsZSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVnZXhGaWx0ZXI6ZS5yZWdleFN0cmluZ30pKSkpLGpOKSxHTj17a2V5Om51bGwsZGlyZWN0aW9uOkZOLlVOU0VUfSx7aW5pdGlhbFN0YXRlOldOLHJlZHVjZXJzOllOfT1ITih7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZUluZGV4OjAscGFnZVNpemU6MTB9LHNvcnQ6R059LHt9KSxxTj1CTih5ayhXTixiayhMUiwoKHQse3BhZ2VTaXplOmUscGFnZUluZGV4Om59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYWdpbmF0aW9uT3B0aW9uOntwYWdlU2l6ZTplLHBhZ2VJbmRleDpufX0pKSksYmsoVlIsKCh0LGUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BhZ2luYXRpb25PcHRpb246T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGFnaW5hdGlvbk9wdGlvbikse3BhZ2VJbmRleDowfSl9KSkpLGJrKEJSLCgodCxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3J0OntrZXk6ZS5rZXksZGlyZWN0aW9uOmUuZGlyZWN0aW9ufX0pKSkpLFlOKTtmdW5jdGlvbiBaTih0LGUpe3JldHVybiB4dyh7ZGF0YTpVTix1aTpxTn0pKHQsZSl9ZnVuY3Rpb24gWE4oKXtyZXR1cm5be2FjdGlvbkNyZWF0b3I6SVIsYWxlcnRGcm9tQWN0aW9uOigpPT4oe2xvY2FsaXplZE1lc3NhZ2U6IkZhaWxlZCB0byBmZXRjaCBydW5zIn0pfV19Y2xhc3MgS057fXZhciBKTjtLTi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S04pfSxLTi7JtW1vZD1hbyh7dHlwZTpLTn0pLEtOLsm1aW5qPXZuKHtpbXBvcnRzOltbZGsuZm9yRmVhdHVyZShRVCxaTiksV2suZm9yRmVhdHVyZShbSU5dKSxsQSxBUi5yZWdpc3RlckFsZXJ0QWN0aW9ucyhYTiksYUFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoS04sW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltkay5mb3JGZWF0dXJlKFFULFpOKSxXay5mb3JGZWF0dXJlKFtJTl0pLGxBLEFSLnJlZ2lzdGVyQWxlcnRBY3Rpb25zKFhOKSxhQV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhLTix7aW1wb3J0czpbY2ssR2ssbEEsQVIsYUFdfSksKGZ1bmN0aW9uKHQpe3QuUlVOU19DSEFOR0VEPSJleHBlcmltZW50YWwuUnVuc0NoYW5nZWQiLHQuR0VUX1JVTlM9ImV4cGVyaW1lbnRhbC5HZXRSdW5zIix0LkdFVF9VUkxfREFUQT0iZXhwZXJpbWVudGFsLkdldFVSTFBsdWdpbkRhdGEiLHQuREFUQV9SRUxPQURFRD0iZXhwZXJpbWVudGFsLkRhdGFSZWxvYWRlZCJ9KShKTnx8KEpOPXt9KSk7Y2xhc3MgUU57Y29uc3RydWN0b3IodCl7dGhpcy5wb3J0PXQsdGhpcy5pZD0wLHRoaXMucmVzcG9uc2VXYWl0cz1uZXcgTWFwLHRoaXMubGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT50aGlzLm9uTWVzc2FnZSh0KSkpfWxpc3Rlbih0LGUpe3RoaXMubGlzdGVuZXJzLnNldCh0LGUpfXVubGlzdGVuKHQpe3RoaXMubGlzdGVuZXJzLmRlbGV0ZSh0KX1vbk1lc3NhZ2UodCl7cmV0dXJuIGdBKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgZT1KU09OLnBhcnNlKHQuZGF0YSksbj1lLnR5cGUsbz1lLmlkLGk9ZS5wYXlsb2FkLGE9ZS5lcnJvcjtpZihlLmlzUmVwbHkpe2lmKCF0aGlzLnJlc3BvbnNlV2FpdHMuaGFzKG8pKXJldHVybjtjb25zdHtyZXNvbHZlOnQscmVqZWN0OmV9PXRoaXMucmVzcG9uc2VXYWl0cy5nZXQobyk7cmV0dXJuIHRoaXMucmVzcG9uc2VXYWl0cy5kZWxldGUobyksdm9pZChhP2UobmV3IEVycm9yKGEpKTp0KGkpKX1sZXQgcj1udWxsLHM9bnVsbDtpZih0aGlzLmxpc3RlbmVycy5oYXMobikpe2NvbnN0IHQ9dGhpcy5saXN0ZW5lcnMuZ2V0KG4pO3RyeXtyPXlpZWxkIHQoaSl9Y2F0Y2godCl7cz10fX10aGlzLnBvc3RNZXNzYWdlKHt0eXBlOm4saWQ6byxwYXlsb2FkOnIsZXJyb3I6cyxpc1JlcGx5OiEwfSl9KSl9cG9zdE1lc3NhZ2UodCl7dGhpcy5wb3J0LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHQpKX1zZW5kTWVzc2FnZSh0LGUpe2NvbnN0IG49dGhpcy5pZCsrO3JldHVybiB0aGlzLnBvc3RNZXNzYWdlKHt0eXBlOnQsaWQ6bixwYXlsb2FkOmUsZXJyb3I6bnVsbCxpc1JlcGx5OiExfSksbmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5yZXNwb25zZVdhaXRzLnNldChuLHtyZXNvbHZlOnQscmVqZWN0OmV9KX0pKX19Y29uc3QgJE49bmV3IFdlYWtNYXAsdHo9bmV3IFNldCxlej1uZXcgTWFwLG56PW5ldyBNYXA7ZnVuY3Rpb24gb3oodCxlKXtyZXR1cm4gbj0+e2NvbnN0IG89bnouZ2V0KGUpLGk9JE4uZ2V0KG8pfHxudWxsO3JldHVybiB0KGksbil9fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwodD0+e2lmKCJleHBlcmltZW50YWwuYm9vdHN0cmFwIiE9PXQuZGF0YSlyZXR1cm47Y29uc3QgZT10LnBvcnRzWzBdO2lmKCFlKXJldHVybjtjb25zdCBuPXQuc291cmNlP3Quc291cmNlLmZyYW1lRWxlbWVudDpudWxsO24mJihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj1uZXcgUU4odCk7dHouYWRkKG4pLG56LnNldChuLGUpLHQuc3RhcnQoKTtmb3IoY29uc3RbdCxlXW9mIGV6KXtjb25zdCBvPW96KGUsbik7bi5saXN0ZW4odCxvKX19KShlLG4pfSkpO2NsYXNzIGl6e2Jyb2FkY2FzdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7Zm9yKGNvbnN0IHQgb2YgdHopbnouZ2V0KHQpLmlzQ29ubmVjdGVkfHwodHouZGVsZXRlKHQpLG56LmRlbGV0ZSh0KSk7Y29uc3Qgbj1bLi4udHpdLm1hcCgobj0+bi5zZW5kTWVzc2FnZSh0LGUpKSk7cmV0dXJuIFByb21pc2UuYWxsKG4pfSkodCxlKX1saXN0ZW4odCxlKXshKGZ1bmN0aW9uIG4odCxlKXtlei5zZXQodCxlKTtmb3IoY29uc3QgbiBvZiB0eil7Y29uc3Qgbz1veihlLG4pO24ubGlzdGVuKHQsbyl9fSkodCxlKX11bmxpc3Rlbih0KXshKGZ1bmN0aW9uIGUodCl7ZXouZGVsZXRlKHQpO2Zvcihjb25zdCBlIG9mIHR6KWUudW5saXN0ZW4odCl9KSh0KX19aXouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGl6KX0saXouybVwcm92PU1uKHt0b2tlbjppeixmYWN0b3J5Oml6Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChpeixbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIGF6e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pcGM9dCx0aGlzLnN0b3JlPWV9aW5pdCgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtc3RvcmFnZSIpO3RoaXMuaXBjLmxpc3RlbihKTi5HRVRfVVJMX0RBVEEsKGU9PntpZighZSlyZXR1cm47Y29uc3Qgbj1gcC4ke2UucGx1Z2luTmFtZX0uYCxvPXt9LGk9dC50Zl9zdG9yYWdlLmdldFVybEhhc2hEaWN0KCk7Zm9yKGxldCB0IGluIGkpdC5zdGFydHNXaXRoKG4pJiYob1t0LnN1YnN0cmluZyhuLmxlbmd0aCldPWlbdF0pO3JldHVybiBvfSkpLHRoaXMuc3RvcmUuc2VsZWN0KENSKS5waXBlKGNlKCh0PT5udWxsIT09dCkpLE1lKCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmlwYy5icm9hZGNhc3QoSk4uREFUQV9SRUxPQURFRCx2b2lkIDApfSkpfX1hei7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YXopKHZyKGl6KSx2cihJdykpfSxhei7JtXByb3Y9TW4oe3Rva2VuOmF6LGZhY3Rvcnk6YXouybVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGF6LFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppen0se3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIHJ6e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pcGM9dCx0aGlzLnN0b3JlPWV9aW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoVFMpLnBpcGUoWnQoKHQ9PnQ/V3QodC5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KGxOLHtleHBlcmltZW50SWQ6dH0pKSkpLnBpcGUoSXQoKHQ9PnQuZmxhdCgpKSksTWUoKCh0LGUpPT50Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxuKT0+ZVtuXS5pZD09PXQuaWQpKSkpLEl0KCh0PT50Lm1hcCgoKHtuYW1lOnR9KT0+dCkpKSkpOkV0KFtdKSkpKTt0LnN1YnNjcmliZSgodD0+e3RoaXMuaXBjLmJyb2FkY2FzdChKTi5SVU5TX0NIQU5HRUQsdCl9KSksdGhpcy5pcGMubGlzdGVuKEpOLkdFVF9SVU5TLCgoKT0+dC5waXBlKGJlKDEpKS50b1Byb21pc2UoKSkpfX1yei7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cnopKHZyKGl6KSx2cihJdykpfSxyei7JtXByb3Y9TW4oe3Rva2VuOnJ6LGZhY3Rvcnk6cnouybVmYWMscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHJ6LFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTppen0se3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIHN6e2NvbnN0cnVjdG9yKHQsZSl7ZS5pbml0KCksdC5pbml0KCl9cmVnaXN0ZXJQbHVnaW5JZnJhbWUodCxlKXshKGZ1bmN0aW9uIG4odCxlKXskTi5zZXQodCx7cGx1Z2luTmFtZTplfSl9KSh0LGUpfX1zei7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c3opKHZyKHJ6KSx2cihheikpfSxzei7JtW1vZD1hbyh7dHlwZTpzen0pLHN6Lsm1aW5qPXZuKHtwcm92aWRlcnM6W2l6LGF6LHJ6XSxpbXBvcnRzOltbQlMsRVIsS05dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoc3osW3t0eXBlOkF5LGFyZ3M6W3twcm92aWRlcnM6W2l6LGF6LHJ6XSxpbXBvcnRzOltCUyxFUixLTl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpyen0se3R5cGU6YXp9XX0pLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oc3ose2ltcG9ydHM6W0JTLEVSLEtOXX0pO2NvbnN0IGx6PUpQKCJbQWxlcnRdIEFsZXJ0IFJlcG9ydGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7Y2xhc3MgY3p7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5hbGVydEFjdGlvbk1vZHVsZT1uLHRoaXMucmVwb3J0UmVnaXN0ZXJlZEFjdGlvbkFsZXJ0cyQ9TWsoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoRmUoKHQ9Pntjb25zdCBlPXRoaXMuYWxlcnRBY3Rpb25Nb2R1bGUuZ2V0QWxlcnRGcm9tQWN0aW9uKHQpO2UmJnRoaXMuc3RvcmUuZGlzcGF0Y2gobHooZSkpfSkpKSkse2Rpc3BhdGNoOiExfSl9fWN6Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjeikodnIoU2spLHZyKEl3KSx2cihBUikpfSxjei7JtXByb3Y9TW4oe3Rva2VuOmN6LGZhY3Rvcnk6Y3ouybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGN6LFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTa30se3R5cGU6SXd9LHt0eXBlOkFSfV19KSxudWxsKTtjb25zdCBkej15ayh7bGF0ZXN0QWxlcnQ6bnVsbH0sYmsobHosKCh0LHtsb2NhbGl6ZWRNZXNzYWdlOmUsZm9sbG93dXBBY3Rpb246bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhdGVzdEFsZXJ0Ontsb2NhbGl6ZWRNZXNzYWdlOmUsZm9sbG93dXBBY3Rpb246bixjcmVhdGVkOkRhdGUubm93KCl9fSkpKSk7ZnVuY3Rpb24gcHoodCxlKXtyZXR1cm4gZHoodCxlKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgbXo9MTMsdXo9MjcsZno9MzIsZ3o9MzgsaHo9NDA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBieih0LC4uLmUpe3JldHVybiBlLmxlbmd0aD9lLnNvbWUoKGU9PnRbZV0pKTp0LmFsdEtleXx8dC5zaGlmdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHl6KHQpe3JldHVybiBudWxsIT10JiYiZmFsc2UiIT1gJHt0fWB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIF96KHQsZT0wKXtyZXR1cm4gQ3oodCk/TnVtYmVyKHQpOmV9ZnVuY3Rpb24gQ3oodCl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQodCkpJiYhaXNOYU4oTnVtYmVyKHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTXoodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dDpbdF19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZ6KHQpe3JldHVybiBudWxsPT10PyIiOiJzdHJpbmciPT10eXBlb2YgdD90OmAke3R9cHhgfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB4eih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGhnP3QubmF0aXZlRWxlbWVudDp0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgT3osUHo7dHJ5e096PSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bCYmSW50bC52OEJyZWFrSXRlcmF0b3J9Y2F0Y2goakN0KXtPej0hMX1jbGFzcyB3entjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybUlkPXQsdGhpcy5pc0Jyb3dzZXI9dGhpcy5fcGxhdGZvcm1JZD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4iYnJvd3NlciI9PT10fSkodGhpcy5fcGxhdGZvcm1JZCk6Im9iamVjdCI9PXR5cGVvZiBkb2N1bWVudCYmISFkb2N1bWVudCx0aGlzLkVER0U9dGhpcy5pc0Jyb3dzZXImJi8oZWRnZSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuVFJJREVOVD10aGlzLmlzQnJvd3NlciYmLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkJMSU5LPXRoaXMuaXNCcm93c2VyJiYhKCF3aW5kb3cuY2hyb21lJiYhT3opJiYidW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVCx0aGlzLldFQktJVD10aGlzLmlzQnJvd3NlciYmL0FwcGxlV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuQkxJTksmJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5JT1M9dGhpcy5pc0Jyb3dzZXImJi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhKCJNU1N0cmVhbSJpbiB3aW5kb3cpLHRoaXMuRklSRUZPWD10aGlzLmlzQnJvd3NlciYmLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuQU5EUk9JRD10aGlzLmlzQnJvd3NlciYmL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhdGhpcy5UUklERU5ULHRoaXMuU0FGQVJJPXRoaXMuaXNCcm93c2VyJiYvc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmdGhpcy5XRUJLSVR9fXd6Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3eikodnIoankpKX0sd3ouybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHd6KHZyKGp5KSl9LHRva2VuOnd6LHByb3ZpZGVkSW46InJvb3QifSksd3ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbanldfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHd6LFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbanldfV19XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mga3p7fWt6Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxreil9LGt6Lsm1bW9kPWFvKHt0eXBlOmt6fSksa3ouybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoa3osW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Y29uc3QgU3o9WyJjb2xvciIsImJ1dHRvbiIsImNoZWNrYm94IiwiZGF0ZSIsImRhdGV0aW1lLWxvY2FsIiwiZW1haWwiLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJtb250aCIsIm51bWJlciIsInBhc3N3b3JkIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic2VhcmNoIiwic3VibWl0IiwidGVsIiwidGV4dCIsInRpbWUiLCJ1cmwiLCJ3ZWVrIl07ZnVuY3Rpb24gRHooKXtpZihQeilyZXR1cm4gUHo7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50KXJldHVybiBQej1uZXcgU2V0KFN6KSxQejtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBQej1uZXcgU2V0KFN6LmZpbHRlcigoZT0+KHQuc2V0QXR0cmlidXRlKCJ0eXBlIixlKSx0LnR5cGU9PT1lKSkpKSxQen0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IEV6LFJ6LEF6LFR6O2Z1bmN0aW9uIE56KHQpe3JldHVybihmdW5jdGlvbiBlKCl7aWYobnVsbD09RXomJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6KCk9PkV6PSEwfSkpfWZpbmFsbHl7RXo9RXp8fCExfXJldHVybiBFen0pKCk/dDohIXQuY2FwdHVyZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24genooKXtpZihudWxsPT1Beil7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50fHwiZnVuY3Rpb24iIT10eXBlb2YgRWxlbWVudHx8IUVsZW1lbnQpcmV0dXJuIEF6PSExLEF6O2lmKCJzY3JvbGxCZWhhdmlvciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpQXo9ITA7ZWxzZXtjb25zdCB0PUVsZW1lbnQucHJvdG90eXBlLnNjcm9sbFRvO0F6PSEhdCYmIS9ce1xzKlxbbmF0aXZlIGNvZGVcXVxzKlx9Ly50ZXN0KHQudG9TdHJpbmcoKSl9fXJldHVybiBBen1mdW5jdGlvbiBJeigpe2lmKCJvYmplY3QiIT10eXBlb2YgZG9jdW1lbnR8fCFkb2N1bWVudClyZXR1cm4gMDtpZihudWxsPT1Seil7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXQuc3R5bGU7dC5kaXI9InJ0bCIsZS53aWR0aD0iMXB4IixlLm92ZXJmbG93PSJhdXRvIixlLnZpc2liaWxpdHk9ImhpZGRlbiIsZS5wb2ludGVyRXZlbnRzPSJub25lIixlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxvPW4uc3R5bGU7by53aWR0aD0iMnB4IixvLmhlaWdodD0iMXB4Iix0LmFwcGVuZENoaWxkKG4pLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCksUno9MCwwPT09dC5zY3JvbGxMZWZ0JiYodC5zY3JvbGxMZWZ0PTEsUno9MD09PXQuc2Nyb2xsTGVmdD8xOjIpLHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1yZXR1cm4gUnp9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEh6KHQpe2lmKChmdW5jdGlvbiBlKCl7aWYobnVsbD09VHope2NvbnN0IHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5oZWFkOm51bGw7VHo9ISghdHx8IXQuY3JlYXRlU2hhZG93Um9vdCYmIXQuYXR0YWNoU2hhZG93KX1yZXR1cm4gVHp9KSgpKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGU/dC5nZXRSb290Tm9kZSgpOm51bGw7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTaGFkb3dSb290JiZTaGFkb3dSb290JiZlIGluc3RhbmNlb2YgU2hhZG93Um9vdClyZXR1cm4gZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBGeigpe2xldCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50P2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ6bnVsbDtmb3IoO3QmJnQuc2hhZG93Um9vdDspe2NvbnN0IGU9dC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7aWYoZT09PXQpYnJlYWs7dD1lfXJldHVybiB0fWZ1bmN0aW9uIEx6KHQpe3JldHVybiB0LmNvbXBvc2VkUGF0aD90LmNvbXBvc2VkUGF0aCgpWzBdOnQudGFyZ2V0fWNsYXNzIEJ6e2NyZWF0ZSh0KXtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXI/bnVsbDpuZXcgTXV0YXRpb25PYnNlcnZlcih0KX19QnouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJ6KX0sQnouybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEJ6fSx0b2tlbjpCeixwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQnosW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTtjbGFzcyBWentjb25zdHJ1Y3Rvcih0KXt0aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeT10LHRoaXMuX29ic2VydmVkRWxlbWVudHM9bmV3IE1hcH1uZ09uRGVzdHJveSgpe3RoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX2NsZWFudXBPYnNlcnZlcihlKSkpfW9ic2VydmUodCl7Y29uc3QgZT14eih0KTtyZXR1cm4gbmV3IEQoKHQ9Pntjb25zdCBuPXRoaXMuX29ic2VydmVFbGVtZW50KGUpLnN1YnNjcmliZSh0KTtyZXR1cm4oKT0+e24udW5zdWJzY3JpYmUoKSx0aGlzLl91bm9ic2VydmVFbGVtZW50KGUpfX0pKX1fb2JzZXJ2ZUVsZW1lbnQodCl7aWYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXModCkpdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQrKztlbHNle2NvbnN0IGU9bmV3IEksbj10aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKHQ9PmUubmV4dCh0KSkpO24mJm4ub2JzZXJ2ZSh0LHtjaGFyYWN0ZXJEYXRhOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQodCx7b2JzZXJ2ZXI6bixzdHJlYW06ZSxjb3VudDoxfSl9cmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLnN0cmVhbX1fdW5vYnNlcnZlRWxlbWVudCh0KXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSYmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLmNvdW50LS0sdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnR8fHRoaXMuX2NsZWFudXBPYnNlcnZlcih0KSl9X2NsZWFudXBPYnNlcnZlcih0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl7Y29uc3R7b2JzZXJ2ZXI6ZSxzdHJlYW06bn09dGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCk7ZSYmZS5kaXNjb25uZWN0KCksbi5jb21wbGV0ZSgpLHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKHQpfX19VnouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZ6KSh2cihCeikpfSxWei7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVnoodnIoQnopKX0sdG9rZW46VnoscHJvdmlkZWRJbjoicm9vdCJ9KSxWei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJ6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWeixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Qnp9XX0pLG51bGwpO2NsYXNzIGp6e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9jb250ZW50T2JzZXJ2ZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fbmdab25lPW4sdGhpcy5ldmVudD1uZXcgTGgsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj1udWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9eXoodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5fdW5zdWJzY3JpYmUoKTp0aGlzLl9zdWJzY3JpYmUoKX1nZXQgZGVib3VuY2UoKXtyZXR1cm4gdGhpcy5fZGVib3VuY2V9c2V0IGRlYm91bmNlKHQpe3RoaXMuX2RlYm91bmNlPV96KHQpLHRoaXMuX3N1YnNjcmliZSgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb258fHRoaXMuZGlzYWJsZWR8fHRoaXMuX3N1YnNjcmliZSgpfW5nT25EZXN0cm95KCl7dGhpcy5fdW5zdWJzY3JpYmUoKX1fc3Vic2NyaWJlKCl7dGhpcy5fdW5zdWJzY3JpYmUoKTtjb25zdCB0PXRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpO3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPSh0aGlzLmRlYm91bmNlP3QucGlwZShnZSh0aGlzLmRlYm91bmNlKSk6dCkuc3Vic2NyaWJlKHRoaXMuZXZlbnQpfSkpfV91bnN1YnNjcmliZSgpe3ZhciB0O251bGw9PT0odD10aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpfX1qei7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8anopKFNtKFZ6KSxTbShoZyksU20oYV8pKX0sanouybVkaXI9bG8oe3R5cGU6anosc2VsZWN0b3JzOltbIiIsImNka09ic2VydmVDb250ZW50IiwiIl1dLGlucHV0czp7ZGlzYWJsZWQ6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiZGlzYWJsZWQiXSxkZWJvdW5jZToiZGVib3VuY2UifSxvdXRwdXRzOntldmVudDoiY2RrT2JzZXJ2ZUNvbnRlbnQifSxleHBvcnRBczpbImNka09ic2VydmVDb250ZW50Il19KSxqei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlZ6fSx7dHlwZTpoZ30se3R5cGU6YV99XSxqei5wcm9wRGVjb3JhdG9ycz17ZXZlbnQ6W3t0eXBlOk95LGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudCJdfV0sZGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChqeixbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrT2JzZXJ2ZUNvbnRlbnRdIixleHBvcnRBczoiY2RrT2JzZXJ2ZUNvbnRlbnQifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Vnp9LHt0eXBlOmhnfSx7dHlwZTphX31dfSkse2V2ZW50Olt7dHlwZTpPeSxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX1dLGRpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCJdfV0sZGVib3VuY2U6W3t0eXBlOnh5fV19KTtjbGFzcyBVent9ZnVuY3Rpb24gR3oodCxlKXtyZXR1cm4odC5nZXRBdHRyaWJ1dGUoZSl8fCIiKS5tYXRjaCgvXFMrL2cpfHxbXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovVXouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFV6KX0sVXouybVtb2Q9YW8oe3R5cGU6VXp9KSxVei7JtWluaj12bih7cHJvdmlkZXJzOltCel19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFV6LFt7dHlwZTpBeSxhcmdzOlt7ZXhwb3J0czpbanpdLGRlY2xhcmF0aW9uczpbanpdLHByb3ZpZGVyczpbQnpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVXose2RlY2xhcmF0aW9uczpbanpdLGV4cG9ydHM6W2p6XX0pO2NvbnN0IFd6PSJjZGstZGVzY3JpYmVkYnktbWVzc2FnZS1jb250YWluZXIiLFl6PSJjZGstZGVzY3JpYmVkYnktaG9zdCI7bGV0IHF6PTA7Y29uc3QgWno9bmV3IE1hcDtsZXQgWHo9bnVsbDtjbGFzcyBLentjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2N1bWVudD10fWRlc2NyaWJlKHQsZSxuKXtpZighdGhpcy5fY2FuQmVEZXNjcmliZWQodCxlKSlyZXR1cm47Y29uc3Qgbz1KeihlLG4pOyJzdHJpbmciIT10eXBlb2YgZT8oUXooZSksWnouc2V0KG8se21lc3NhZ2VFbGVtZW50OmUscmVmZXJlbmNlQ291bnQ6MH0pKTpaei5oYXMobyl8fHRoaXMuX2NyZWF0ZU1lc3NhZ2VFbGVtZW50KGUsbiksdGhpcy5faXNFbGVtZW50RGVzY3JpYmVkQnlNZXNzYWdlKHQsbyl8fHRoaXMuX2FkZE1lc3NhZ2VSZWZlcmVuY2UodCxvKX1yZW1vdmVEZXNjcmlwdGlvbih0LGUsbil7aWYoIWV8fCF0aGlzLl9pc0VsZW1lbnROb2RlKHQpKXJldHVybjtjb25zdCBvPUp6KGUsbik7aWYodGhpcy5faXNFbGVtZW50RGVzY3JpYmVkQnlNZXNzYWdlKHQsbykmJnRoaXMuX3JlbW92ZU1lc3NhZ2VSZWZlcmVuY2UodCxvKSwic3RyaW5nIj09dHlwZW9mIGUpe2NvbnN0IHQ9WnouZ2V0KG8pO3QmJjA9PT10LnJlZmVyZW5jZUNvdW50JiZ0aGlzLl9kZWxldGVNZXNzYWdlRWxlbWVudChvKX1YeiYmMD09PVh6LmNoaWxkTm9kZXMubGVuZ3RoJiZ0aGlzLl9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbY2RrLWRlc2NyaWJlZGJ5LWhvc3RdIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5fcmVtb3ZlQ2RrRGVzY3JpYmVkQnlSZWZlcmVuY2VJZHModFtlXSksdFtlXS5yZW1vdmVBdHRyaWJ1dGUoWXopO1h6JiZ0aGlzLl9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpLFp6LmNsZWFyKCl9X2NyZWF0ZU1lc3NhZ2VFbGVtZW50KHQsZSl7Y29uc3Qgbj10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtReihuKSxuLnRleHRDb250ZW50PXQsZSYmbi5zZXRBdHRyaWJ1dGUoInJvbGUiLGUpLHRoaXMuX2NyZWF0ZU1lc3NhZ2VzQ29udGFpbmVyKCksWHouYXBwZW5kQ2hpbGQobiksWnouc2V0KEp6KHQsZSkse21lc3NhZ2VFbGVtZW50Om4scmVmZXJlbmNlQ291bnQ6MH0pfV9kZWxldGVNZXNzYWdlRWxlbWVudCh0KXtjb25zdCBlPVp6LmdldCh0KSxuPWUmJmUubWVzc2FnZUVsZW1lbnQ7WHomJm4mJlh6LnJlbW92ZUNoaWxkKG4pLFp6LmRlbGV0ZSh0KX1fY3JlYXRlTWVzc2FnZXNDb250YWluZXIoKXtpZighWHope2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV3opO3QmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLFh6PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLFh6LmlkPVd6LFh6LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsWHouY2xhc3NMaXN0LmFkZCgiY2RrLXZpc3VhbGx5LWhpZGRlbiIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoWHopfX1fZGVsZXRlTWVzc2FnZXNDb250YWluZXIoKXtYeiYmWHoucGFyZW50Tm9kZSYmKFh6LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoWHopLFh6PW51bGwpfV9yZW1vdmVDZGtEZXNjcmliZWRCeVJlZmVyZW5jZUlkcyh0KXtjb25zdCBlPUd6KHQsImFyaWEtZGVzY3JpYmVkYnkiKS5maWx0ZXIoKHQ9PjAhPXQuaW5kZXhPZigiY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UiKSkpO3Quc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixlLmpvaW4oIiAiKSl9X2FkZE1lc3NhZ2VSZWZlcmVuY2UodCxlKXtjb25zdCBuPVp6LmdldChlKTshKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89R3oodCxlKTtvLnNvbWUoKHQ9PnQudHJpbSgpPT1uLnRyaW0oKSkpfHwoby5wdXNoKG4udHJpbSgpKSx0LnNldEF0dHJpYnV0ZShlLG8uam9pbigiICIpKSl9KSh0LCJhcmlhLWRlc2NyaWJlZGJ5IixuLm1lc3NhZ2VFbGVtZW50LmlkKSx0LnNldEF0dHJpYnV0ZShZeiwiIiksbi5yZWZlcmVuY2VDb3VudCsrfV9yZW1vdmVNZXNzYWdlUmVmZXJlbmNlKHQsZSl7Y29uc3Qgbj1aei5nZXQoZSk7bi5yZWZlcmVuY2VDb3VudC0tLChmdW5jdGlvbiBvKHQsZSxuKXtjb25zdCBvPUd6KHQsZSkuZmlsdGVyKCh0PT50IT1uLnRyaW0oKSkpO28ubGVuZ3RoP3Quc2V0QXR0cmlidXRlKGUsby5qb2luKCIgIikpOnQucmVtb3ZlQXR0cmlidXRlKGUpfSkodCwiYXJpYS1kZXNjcmliZWRieSIsbi5tZXNzYWdlRWxlbWVudC5pZCksdC5yZW1vdmVBdHRyaWJ1dGUoWXopfV9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxlKXtjb25zdCBuPUd6KHQsImFyaWEtZGVzY3JpYmVkYnkiKSxvPVp6LmdldChlKSxpPW8mJm8ubWVzc2FnZUVsZW1lbnQuaWQ7cmV0dXJuISFpJiYtMSE9bi5pbmRleE9mKGkpfV9jYW5CZURlc2NyaWJlZCh0LGUpe2lmKCF0aGlzLl9pc0VsZW1lbnROb2RlKHQpKXJldHVybiExO2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSlyZXR1cm4hMDtjb25zdCBuPW51bGw9PWU/IiI6YCR7ZX1gLnRyaW0oKSxvPXQuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7cmV0dXJuISghbnx8byYmby50cmltKCk9PT1uKX1faXNFbGVtZW50Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERX19ZnVuY3Rpb24gSnoodCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/YCR7ZXx8IiJ9LyR7dH1gOnR9ZnVuY3Rpb24gUXoodCl7dC5pZHx8KHQuaWQ9ImNkay1kZXNjcmliZWRieS1tZXNzYWdlLSIrcXorKyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0t6Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLeikodnIoWl8pKX0sS3ouybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEt6KHZyKFpfKSl9LHRva2VuOkt6LHByb3ZpZGVkSW46InJvb3QifSksS3ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEt6LFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpO2NsYXNzICR6e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2l0ZW1zPXQsdGhpcy5fYWN0aXZlSXRlbUluZGV4PS0xLHRoaXMuX2FjdGl2ZUl0ZW09bnVsbCx0aGlzLl93cmFwPSExLHRoaXMuX2xldHRlcktleVN0cmVhbT1uZXcgSSx0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl92ZXJ0aWNhbD0hMCx0aGlzLl9hbGxvd2VkTW9kaWZpZXJLZXlzPVtdLHRoaXMuX2hvbWVBbmRFbmQ9ITEsdGhpcy5fc2tpcFByZWRpY2F0ZUZuPXQ9PnQuZGlzYWJsZWQsdGhpcy5fcHJlc3NlZExldHRlcnM9W10sdGhpcy50YWJPdXQ9bmV3IEksdGhpcy5jaGFuZ2U9bmV3IEksdCBpbnN0YW5jZW9mIFZoJiZ0LmNoYW5nZXMuc3Vic2NyaWJlKCh0PT57aWYodGhpcy5fYWN0aXZlSXRlbSl7Y29uc3QgZT10LnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX2FjdGl2ZUl0ZW0pO2U+LTEmJmUhPT10aGlzLl9hY3RpdmVJdGVtSW5kZXgmJih0aGlzLl9hY3RpdmVJdGVtSW5kZXg9ZSl9fSkpfXNraXBQcmVkaWNhdGUodCl7cmV0dXJuIHRoaXMuX3NraXBQcmVkaWNhdGVGbj10LHRoaXN9d2l0aFdyYXAodD0hMCl7cmV0dXJuIHRoaXMuX3dyYXA9dCx0aGlzfXdpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHQ9ITApe3JldHVybiB0aGlzLl92ZXJ0aWNhbD10LHRoaXN9d2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KXtyZXR1cm4gdGhpcy5faG9yaXpvbnRhbD10LHRoaXN9d2l0aEFsbG93ZWRNb2RpZmllcktleXModCl7cmV0dXJuIHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXM9dCx0aGlzfXdpdGhUeXBlQWhlYWQodD0yMDApe2lmKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmdGhpcy5faXRlbXMubGVuZ3RoJiZ0aGlzLl9pdGVtcy5zb21lKCh0PT4iZnVuY3Rpb24iIT10eXBlb2YgdC5nZXRMYWJlbCkpKXRocm93IEVycm9yKCJMaXN0S2V5TWFuYWdlciBpdGVtcyBpbiB0eXBlYWhlYWQgbW9kZSBtdXN0IGltcGxlbWVudCB0aGUgYGdldExhYmVsYCBtZXRob2QuIik7cmV0dXJuIHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbj10aGlzLl9sZXR0ZXJLZXlTdHJlYW0ucGlwZShGZSgodD0+dGhpcy5fcHJlc3NlZExldHRlcnMucHVzaCh0KSkpLGdlKHQpLGNlKCgoKT0+dGhpcy5fcHJlc3NlZExldHRlcnMubGVuZ3RoPjApKSxJdCgoKCk9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLmpvaW4oIiIpKSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgbj0xO248ZS5sZW5ndGgrMTtuKyspe2NvbnN0IG89KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCtuKSVlLmxlbmd0aCxpPWVbb107aWYoIXRoaXMuX3NraXBQcmVkaWNhdGVGbihpKSYmMD09PWkuZ2V0TGFiZWwoKS50b1VwcGVyQ2FzZSgpLnRyaW0oKS5pbmRleE9mKHQpKXt0aGlzLnNldEFjdGl2ZUl0ZW0obyk7YnJlYWt9fXRoaXMuX3ByZXNzZWRMZXR0ZXJzPVtdfSkpLHRoaXN9d2l0aEhvbWVBbmRFbmQodD0hMCl7cmV0dXJuIHRoaXMuX2hvbWVBbmRFbmQ9dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7Y29uc3QgZT10aGlzLl9hY3RpdmVJdGVtO3RoaXMudXBkYXRlQWN0aXZlSXRlbSh0KSx0aGlzLl9hY3RpdmVJdGVtIT09ZSYmdGhpcy5jaGFuZ2UubmV4dCh0aGlzLl9hY3RpdmVJdGVtSW5kZXgpfW9uS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZSxuPVsiYWx0S2V5IiwiY3RybEtleSIsIm1ldGFLZXkiLCJzaGlmdEtleSJdLmV2ZXJ5KChlPT4hdFtlXXx8dGhpcy5fYWxsb3dlZE1vZGlmaWVyS2V5cy5pbmRleE9mKGUpPi0xKSk7c3dpdGNoKGUpe2Nhc2UgOTpyZXR1cm4gdm9pZCB0aGlzLnRhYk91dC5uZXh0KCk7Y2FzZSBoejppZih0aGlzLl92ZXJ0aWNhbCYmbil7dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIGd6OmlmKHRoaXMuX3ZlcnRpY2FsJiZuKXt0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM5OmlmKHRoaXMuX2hvcml6b250YWwmJm4peyJydGwiPT09dGhpcy5faG9yaXpvbnRhbD90aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpOnRoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzNzppZih0aGlzLl9ob3Jpem9udGFsJiZuKXsicnRsIj09PXRoaXMuX2hvcml6b250YWw/dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpOnRoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzY6aWYodGhpcy5faG9tZUFuZEVuZCYmbil7dGhpcy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzNTppZih0aGlzLl9ob21lQW5kRW5kJiZuKXt0aGlzLnNldExhc3RJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2RlZmF1bHQ6cmV0dXJuIHZvaWQoKG58fGJ6KHQsInNoaWZ0S2V5IikpJiYodC5rZXkmJjE9PT10LmtleS5sZW5ndGg/dGhpcy5fbGV0dGVyS2V5U3RyZWFtLm5leHQodC5rZXkudG9Mb2NhbGVVcHBlckNhc2UoKSk6KGU+PTY1JiZlPD05MHx8ZT49NDgmJmU8PTU3KSYmdGhpcy5fbGV0dGVyS2V5U3RyZWFtLm5leHQoU3RyaW5nLmZyb21DaGFyQ29kZShlKSkpKX10aGlzLl9wcmVzc2VkTGV0dGVycz1bXSx0LnByZXZlbnREZWZhdWx0KCl9Z2V0IGFjdGl2ZUl0ZW1JbmRleCgpe3JldHVybiB0aGlzLl9hY3RpdmVJdGVtSW5kZXh9Z2V0IGFjdGl2ZUl0ZW0oKXtyZXR1cm4gdGhpcy5fYWN0aXZlSXRlbX1pc1R5cGluZygpe3JldHVybiB0aGlzLl9wcmVzc2VkTGV0dGVycy5sZW5ndGg+MH1zZXRGaXJzdEl0ZW1BY3RpdmUoKXt0aGlzLl9zZXRBY3RpdmVJdGVtQnlJbmRleCgwLDEpfXNldExhc3RJdGVtQWN0aXZlKCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodGhpcy5faXRlbXMubGVuZ3RoLTEsLTEpfXNldE5leHRJdGVtQWN0aXZlKCl7dGhpcy5fYWN0aXZlSXRlbUluZGV4PDA/dGhpcy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTp0aGlzLl9zZXRBY3RpdmVJdGVtQnlEZWx0YSgxKX1zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKXt0aGlzLl9hY3RpdmVJdGVtSW5kZXg8MCYmdGhpcy5fd3JhcD90aGlzLnNldExhc3RJdGVtQWN0aXZlKCk6dGhpcy5fc2V0QWN0aXZlSXRlbUJ5RGVsdGEoLTEpfXVwZGF0ZUFjdGl2ZUl0ZW0odCl7Y29uc3QgZT10aGlzLl9nZXRJdGVtc0FycmF5KCksbj0ibnVtYmVyIj09dHlwZW9mIHQ/dDplLmluZGV4T2YodCksbz1lW25dO3RoaXMuX2FjdGl2ZUl0ZW09bnVsbD09bz9udWxsOm8sdGhpcy5fYWN0aXZlSXRlbUluZGV4PW59X3NldEFjdGl2ZUl0ZW1CeURlbHRhKHQpe3RoaXMuX3dyYXA/dGhpcy5fc2V0QWN0aXZlSW5XcmFwTW9kZSh0KTp0aGlzLl9zZXRBY3RpdmVJbkRlZmF1bHRNb2RlKHQpfV9zZXRBY3RpdmVJbldyYXBNb2RlKHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgbj0xO248PWUubGVuZ3RoO24rKyl7Y29uc3Qgbz0odGhpcy5fYWN0aXZlSXRlbUluZGV4K3QqbitlLmxlbmd0aCklZS5sZW5ndGg7aWYoIXRoaXMuX3NraXBQcmVkaWNhdGVGbihlW29dKSlyZXR1cm4gdm9pZCB0aGlzLnNldEFjdGl2ZUl0ZW0obyl9fV9zZXRBY3RpdmVJbkRlZmF1bHRNb2RlKHQpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCt0LHQpfV9zZXRBY3RpdmVJdGVtQnlJbmRleCh0LGUpe2NvbnN0IG49dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2lmKG5bdF0pe2Zvcig7dGhpcy5fc2tpcFByZWRpY2F0ZUZuKG5bdF0pOylpZighblt0Kz1lXSlyZXR1cm47dGhpcy5zZXRBY3RpdmVJdGVtKHQpfX1fZ2V0SXRlbXNBcnJheSgpe3JldHVybiB0aGlzLl9pdGVtcyBpbnN0YW5jZW9mIFZoP3RoaXMuX2l0ZW1zLnRvQXJyYXkoKTp0aGlzLl9pdGVtc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHRJIGV4dGVuZHMgJHp7c2V0QWN0aXZlSXRlbSh0KXt0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5zZXRJbmFjdGl2ZVN0eWxlcygpLHN1cGVyLnNldEFjdGl2ZUl0ZW0odCksdGhpcy5hY3RpdmVJdGVtJiZ0aGlzLmFjdGl2ZUl0ZW0uc2V0QWN0aXZlU3R5bGVzKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBlSSBleHRlbmRzICR6e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcmlnaW49InByb2dyYW0ifXNldEZvY3VzT3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7c3VwZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5mb2N1cyh0aGlzLl9vcmlnaW4pfX1jbGFzcyBuSXtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybT10fWlzRGlzYWJsZWQodCl7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfWlzVmlzaWJsZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4hISh0Lm9mZnNldFdpZHRofHx0Lm9mZnNldEhlaWdodHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0Q2xpZW50UmVjdHMmJnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSkodCkmJiJ2aXNpYmxlIj09PWdldENvbXB1dGVkU3R5bGUodCkudmlzaWJpbGl0eX1pc1RhYmJhYmxlKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuITE7Y29uc3QgZT0oZnVuY3Rpb24gbyh0KXt0cnl7cmV0dXJuIHQuZnJhbWVFbGVtZW50fWNhdGNoKHQpe3JldHVybiBudWxsfX0pKChmdW5jdGlvbiBuKHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpKTtpZihlKXtpZigtMT09PWlJKGUpKXJldHVybiExO2lmKCF0aGlzLmlzVmlzaWJsZShlKSlyZXR1cm4hMX1sZXQgaT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksYT1pSSh0KTtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpPy0xIT09YToiaWZyYW1lIiE9PWkmJiJvYmplY3QiIT09aSYmISh0aGlzLl9wbGF0Zm9ybS5XRUJLSVQmJnRoaXMuX3BsYXRmb3JtLklPUyYmIShmdW5jdGlvbiByKHQpe2xldCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPSJpbnB1dCI9PT1lJiZ0LnR5cGU7cmV0dXJuInRleHQiPT09bnx8InBhc3N3b3JkIj09PW58fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9KSh0KSkmJigiYXVkaW8iPT09aT8hIXQuaGFzQXR0cmlidXRlKCJjb250cm9scyIpJiYtMSE9PWE6InZpZGVvIj09PWk/LTEhPT1hJiYobnVsbCE9PWF8fHRoaXMuX3BsYXRmb3JtLkZJUkVGT1h8fHQuaGFzQXR0cmlidXRlKCJjb250cm9scyIpKTp0LnRhYkluZGV4Pj0wKX1pc0ZvY3VzYWJsZSh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiEoZnVuY3Rpb24gZSh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4iaW5wdXQiPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9KSh0KSYmImhpZGRlbiI9PXQudHlwZX0pKHQpJiYoKGZ1bmN0aW9uIG4odCl7bGV0IGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lfHwic2VsZWN0Ij09PWV8fCJidXR0b24iPT09ZXx8InRleHRhcmVhIj09PWV9KSh0KXx8KGZ1bmN0aW9uIG8odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuImEiPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9KSh0KSYmdC5oYXNBdHRyaWJ1dGUoImhyZWYiKX0pKHQpfHx0Lmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIil8fG9JKHQpKX0pKHQpJiYhdGhpcy5pc0Rpc2FibGVkKHQpJiYoKG51bGw9PWU/dm9pZCAwOmUuaWdub3JlVmlzaWJpbGl0eSl8fHRoaXMuaXNWaXNpYmxlKHQpKX19ZnVuY3Rpb24gb0kodCl7aWYoIXQuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx2b2lkIDA9PT10LnRhYkluZGV4KXJldHVybiExO2xldCBlPXQuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3JldHVybiItMzI3NjgiIT1lJiYhKCFlfHxpc05hTihwYXJzZUludChlLDEwKSkpfWZ1bmN0aW9uIGlJKHQpe2lmKCFvSSh0KSlyZXR1cm4gbnVsbDtjb25zdCBlPXBhcnNlSW50KHQuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpfHwiIiwxMCk7cmV0dXJuIGlzTmFOKGUpPy0xOmV9bkkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5JKSh2cih3eikpfSxuSS7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbkkodnIod3opKX0sdG9rZW46bkkscHJvdmlkZWRJbjoicm9vdCJ9KSxuSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnd6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChuSSxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6d3p9XX0pLG51bGwpO2NsYXNzIGFJe2NvbnN0cnVjdG9yKHQsZSxuLG8saT0hMSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2NoZWNrZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9kb2N1bWVudD1vLHRoaXMuX2hhc0F0dGFjaGVkPSExLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKSx0aGlzLmVuZEFuY2hvckxpc3RlbmVyPSgpPT50aGlzLmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKSx0aGlzLl9lbmFibGVkPSEwLGl8fHRoaXMuYXR0YWNoQW5jaG9ycygpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dGhpcy5fZW5hYmxlZD10LHRoaXMuX3N0YXJ0QW5jaG9yJiZ0aGlzLl9lbmRBbmNob3ImJih0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX3N0YXJ0QW5jaG9yKSx0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0LHRoaXMuX2VuZEFuY2hvcikpfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3N0YXJ0QW5jaG9yLGU9dGhpcy5fZW5kQW5jaG9yO3QmJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpLHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpKSxlJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5lbmRBbmNob3JMaXN0ZW5lciksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSkpLHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2VuZEFuY2hvcj1udWxsLHRoaXMuX2hhc0F0dGFjaGVkPSExfWF0dGFjaEFuY2hvcnMoKXtyZXR1cm4hIXRoaXMuX2hhc0F0dGFjaGVkfHwodGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX3N0YXJ0QW5jaG9yfHwodGhpcy5fc3RhcnRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9yKCksdGhpcy5fc3RhcnRBbmNob3IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lcikpLHRoaXMuX2VuZEFuY2hvcnx8KHRoaXMuX2VuZEFuY2hvcj10aGlzLl9jcmVhdGVBbmNob3IoKSx0aGlzLl9lbmRBbmNob3IuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpKX0pKSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJih0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX3N0YXJ0QW5jaG9yLHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fZW5kQW5jaG9yLHRoaXMuX2VsZW1lbnQubmV4dFNpYmxpbmcpLHRoaXMuX2hhc0F0dGFjaGVkPSEwKSx0aGlzLl9oYXNBdHRhY2hlZCl9Zm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNJbml0aWFsRWxlbWVudCh0KSkpKX0pKX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZT0+e3RoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKCk9PmUodGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpKSkpfSkpfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT5lKHRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KHQpKSkpfSkpfV9nZXRSZWdpb25Cb3VuZGFyeSh0KXtsZXQgZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtjZGstZm9jdXMtcmVnaW9uLSR7dH1dLCBbY2RrRm9jdXNSZWdpb24ke3R9XSwgW2Nkay1mb2N1cy0ke3R9XWApO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtJHt0fWApP2NvbnNvbGUud2FybihgRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsZVtuXSk6ZVtuXS5oYXNBdHRyaWJ1dGUoYGNkay1mb2N1cy1yZWdpb24tJHt0fWApJiZjb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLXJlZ2lvbi0ke3R9JywgdXNlICdjZGtGb2N1c1JlZ2lvbiR7dH0nIGluc3RlYWQuIFRoZSBkZXByZWNhdGVkIGF0dHJpYnV0ZSB3aWxsIGJlIHJlbW92ZWQgaW4gOC4wLjAuYCxlW25dKTtyZXR1cm4ic3RhcnQiPT10P2UubGVuZ3RoP2VbMF06dGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudCk6ZS5sZW5ndGg/ZVtlLmxlbmd0aC0xXTp0aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpfWZvY3VzSW5pdGlhbEVsZW1lbnQodCl7Y29uc3QgZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIltjZGstZm9jdXMtaW5pdGlhbF0sIFtjZGtGb2N1c0luaXRpYWxdIik7aWYoZSl7aWYoZS5oYXNBdHRyaWJ1dGUoImNkay1mb2N1cy1pbml0aWFsIikmJmNvbnNvbGUud2FybigiRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtaW5pdGlhbCcsIHVzZSAnY2RrRm9jdXNJbml0aWFsJyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wIixlKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8dGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShlKXx8Y29uc29sZS53YXJuKCJFbGVtZW50IG1hdGNoaW5nICdbY2RrRm9jdXNJbml0aWFsXScgaXMgbm90IGZvY3VzYWJsZS4iLGUpLCF0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKGUpKXtjb25zdCBuPXRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGUpO3JldHVybiBudWxsPT1ufHxuLmZvY3VzKHQpLCEhbn1yZXR1cm4gZS5mb2N1cyh0KSwhMH1yZXR1cm4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQodCl7Y29uc3QgZT10aGlzLl9nZXRSZWdpb25Cb3VuZGFyeSgic3RhcnQiKTtyZXR1cm4gZSYmZS5mb2N1cyh0KSwhIWV9Zm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoImVuZCIpO3JldHVybiBlJiZlLmZvY3VzKHQpLCEhZX1oYXNBdHRhY2hlZCgpe3JldHVybiB0aGlzLl9oYXNBdHRhY2hlZH1fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodCl7aWYodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZSh0KSYmdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHQpKXJldHVybiB0O2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IG49ZVt0XS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudChlW3RdKTpudWxsO2lmKG4pcmV0dXJuIG59cmV0dXJuIG51bGx9X2dldExhc3RUYWJiYWJsZUVsZW1lbnQodCl7aWYodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZSh0KSYmdGhpcy5fY2hlY2tlci5pc1RhYmJhYmxlKHQpKXJldHVybiB0O2xldCBlPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wO3QtLSl7bGV0IG49ZVt0XS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERT90aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KGVbdF0pOm51bGw7aWYobilyZXR1cm4gbn1yZXR1cm4gbnVsbH1fY3JlYXRlQW5jaG9yKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodGhpcy5fZW5hYmxlZCx0KSx0LmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSx0LmNsYXNzTGlzdC5hZGQoImNkay1mb2N1cy10cmFwLWFuY2hvciIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0fV90b2dnbGVBbmNob3JUYWJJbmRleCh0LGUpe3Q/ZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpOmUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpfXRvZ2dsZUFuY2hvcnModCl7dGhpcy5fc3RhcnRBbmNob3ImJnRoaXMuX2VuZEFuY2hvciYmKHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fc3RhcnRBbmNob3IpLHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fZW5kQW5jaG9yKSl9X2V4ZWN1dGVPblN0YWJsZSh0KXt0aGlzLl9uZ1pvbmUuaXNTdGFibGU/dCgpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUodCl9fWNsYXNzIHJJe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9jaGVja2VyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fZG9jdW1lbnQ9bn1jcmVhdGUodCxlPSExKXtyZXR1cm4gbmV3IGFJKHQsdGhpcy5fY2hlY2tlcix0aGlzLl9uZ1pvbmUsdGhpcy5fZG9jdW1lbnQsZSl9fXJJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxySSkodnIobkkpLHZyKGFfKSx2cihaXykpfSxySS7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgckkodnIobkkpLHZyKGFfKSx2cihaXykpfSx0b2tlbjpySSxwcm92aWRlZEluOiJyb290In0pLHJJLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bkl9LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHJJLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpuSX0se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y2xhc3Mgc0l7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c1RyYXBGYWN0b3J5PWUsdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCEwKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmZvY3VzVHJhcC5lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuZm9jdXNUcmFwLmVuYWJsZWQ9eXoodCl9Z2V0IGF1dG9DYXB0dXJlKCl7cmV0dXJuIHRoaXMuX2F1dG9DYXB0dXJlfXNldCBhdXRvQ2FwdHVyZSh0KXt0aGlzLl9hdXRvQ2FwdHVyZT15eih0KX1uZ09uRGVzdHJveSgpe3RoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpLHRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuX2NhcHR1cmVGb2N1cygpfW5nRG9DaGVjaygpe3RoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCl8fHRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuYXV0b0NhcHR1cmU7ZSYmIWUuZmlyc3RDaGFuZ2UmJnRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCkmJnRoaXMuX2NhcHR1cmVGb2N1cygpfV9jYXB0dXJlRm9jdXMoKXt0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9RnooKSx0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCl9fXNJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzSSkoU20oaGcpLFNtKHJJKSxTbShaXykpfSxzSS7JtWRpcj1sbyh7dHlwZTpzSSxzZWxlY3RvcnM6W1siIiwiY2RrVHJhcEZvY3VzIiwiIl1dLGlucHV0czp7ZW5hYmxlZDpbImNka1RyYXBGb2N1cyIsImVuYWJsZWQiXSxhdXRvQ2FwdHVyZTpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIiwiYXV0b0NhcHR1cmUiXX0sZXhwb3J0QXM6WyJjZGtUcmFwRm9jdXMiXSxmZWF0dXJlczpbQm9dfSksc0kuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6ckl9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLHNJLnByb3BEZWNvcmF0b3JzPXtlbmFibGVkOlt7dHlwZTp4eSxhcmdzOlsiY2RrVHJhcEZvY3VzIl19XSxhdXRvQ2FwdHVyZTpbe3R5cGU6eHksYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChzSSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrVHJhcEZvY3VzXSIsZXhwb3J0QXM6ImNka1RyYXBGb2N1cyJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6ckl9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSkse2VuYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJjZGtUcmFwRm9jdXMiXX1dLGF1dG9DYXB0dXJlOlt7dHlwZTp4eSxhcmdzOlsiY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmUiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBsSSBleHRlbmRzIGFJe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8sci5kZWZlciksdGhpcy5fZm9jdXNUcmFwTWFuYWdlcj1pLHRoaXMuX2luZXJ0U3RyYXRlZ3k9YSx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5yZWdpc3Rlcih0aGlzKTp0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyl9ZGVzdHJveSgpe3RoaXMuX2ZvY3VzVHJhcE1hbmFnZXIuZGVyZWdpc3Rlcih0aGlzKSxzdXBlci5kZXN0cm95KCl9X2VuYWJsZSgpe3RoaXMuX2luZXJ0U3RyYXRlZ3kucHJldmVudEZvY3VzKHRoaXMpLHRoaXMudG9nZ2xlQW5jaG9ycyghMCl9X2Rpc2FibGUoKXt0aGlzLl9pbmVydFN0cmF0ZWd5LmFsbG93Rm9jdXModGhpcyksdGhpcy50b2dnbGVBbmNob3JzKCExKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBjST1uZXcgR2EoIkZPQ1VTX1RSQVBfSU5FUlRfU1RSQVRFR1kiKSxkST0idW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJiEhRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gcEkodCxlKXtyZXR1cm4gdC5tYXRjaGVzP3QubWF0Y2hlcyhlKTp0Lm1zTWF0Y2hlc1NlbGVjdG9yKGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBtSXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2xpc3RlbmVyPW51bGx9cHJldmVudEZvY3VzKHQpe3RoaXMuX2xpc3RlbmVyJiZ0Ll9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fbGlzdGVuZXIsITApLHRoaXMuX2xpc3RlbmVyPWU9PnRoaXMuX3RyYXBGb2N1cyh0LGUpLHQuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Ll9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fbGlzdGVuZXIsITApfSkpfWFsbG93Rm9jdXModCl7dGhpcy5fbGlzdGVuZXImJih0Ll9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fbGlzdGVuZXIsITApLHRoaXMuX2xpc3RlbmVyPW51bGwpfV90cmFwRm9jdXModCxlKXtjb25zdCBuPWUudGFyZ2V0LG89dC5fZWxlbWVudDtvLmNvbnRhaW5zKG4pfHxudWxsIT09KGZ1bmN0aW9uIGkodCxlKXtpZighKHQgaW5zdGFuY2VvZiBOb2RlKSlyZXR1cm4gbnVsbDtsZXQgbj10O2Zvcig7bnVsbCE9biYmIShuIGluc3RhbmNlb2YgRWxlbWVudCk7KW49bi5wYXJlbnROb2RlO3JldHVybiBuJiYoZEk/bi5jbG9zZXN0KGUpOihmdW5jdGlvbiBvKHQsZSl7bGV0IG49dDtmb3IoO251bGwhPW4mJiEobiBpbnN0YW5jZW9mIEVsZW1lbnQmJnBJKG4sZSkpOyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbnx8bnVsbH0pKG4sZSkpfSkobiwiZGl2LmNkay1vdmVybGF5LXBhbmUiKXx8c2V0VGltZW91dCgoKCk9Pnt0LmVuYWJsZWQmJiFvLmNvbnRhaW5zKHQuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0LmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKX0pKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHVJe2NvbnN0cnVjdG9yKCl7dGhpcy5fZm9jdXNUcmFwU3RhY2s9W119cmVnaXN0ZXIodCl7dGhpcy5fZm9jdXNUcmFwU3RhY2s9dGhpcy5fZm9jdXNUcmFwU3RhY2suZmlsdGVyKChlPT5lIT09dCkpO2xldCBlPXRoaXMuX2ZvY3VzVHJhcFN0YWNrO2UubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLl9kaXNhYmxlKCksZS5wdXNoKHQpLHQuX2VuYWJsZSgpfWRlcmVnaXN0ZXIodCl7dC5fZGlzYWJsZSgpO2NvbnN0IGU9dGhpcy5fZm9jdXNUcmFwU3RhY2ssbj1lLmluZGV4T2YodCk7LTEhPT1uJiYoZS5zcGxpY2UobiwxKSxlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS5fZW5hYmxlKCkpfX11SS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dUkpfSx1SS7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgdUl9LHRva2VuOnVJLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh1SSxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZkl7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9jaGVja2VyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fZm9jdXNUcmFwTWFuYWdlcj1uLHRoaXMuX2RvY3VtZW50PW8sdGhpcy5faW5lcnRTdHJhdGVneT1pfHxuZXcgbUl9Y3JlYXRlKHQsZT17ZGVmZXI6ITF9KXtsZXQgbjtyZXR1cm4gbj0iYm9vbGVhbiI9PXR5cGVvZiBlP3tkZWZlcjplfTplLG5ldyBsSSh0LHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRoaXMuX2RvY3VtZW50LHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXIsdGhpcy5faW5lcnRTdHJhdGVneSxuKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBnSSh0KXtyZXR1cm4gMD09PXQub2Zmc2V0WCYmMD09PXQub2Zmc2V0WX1mdW5jdGlvbiBoSSh0KXtjb25zdCBlPXQudG91Y2hlcyYmdC50b3VjaGVzWzBdfHx0LmNoYW5nZWRUb3VjaGVzJiZ0LmNoYW5nZWRUb3VjaGVzWzBdO3JldHVybiEoIWV8fC0xIT09ZS5pZGVudGlmaWVyfHxudWxsIT1lLnJhZGl1c1gmJjEhPT1lLnJhZGl1c1h8fG51bGwhPWUucmFkaXVzWSYmMSE9PWUucmFkaXVzWSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2ZJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmSSkodnIobkkpLHZyKGFfKSx2cih1SSksdnIoWl8pLHZyKGNJLDgpKX0sZkkuybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGZJKHZyKG5JKSx2cihhXyksdnIodUkpLHZyKFpfKSx2cihjSSw4KSl9LHRva2VuOmZJLHByb3ZpZGVkSW46InJvb3QifSksZkkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpuSX0se3R5cGU6YV99LHt0eXBlOnVJfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbY0ldfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGZJLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpuSX0se3R5cGU6YV99LHt0eXBlOnVJfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbY0ldfV19XX0pLG51bGwpO2NvbnN0IGJJPW5ldyBHYSgiY2RrLWlucHV0LW1vZGFsaXR5LWRldGVjdG9yLW9wdGlvbnMiKSx5ST17aWdub3JlS2V5czpbMTgsMTcsMjI0LDkxLDE2XX0sX0k9Tnooe3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0pO2NsYXNzIENJe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbW9zdFJlY2VudFRhcmdldD1udWxsLHRoaXMuX21vZGFsaXR5PW5ldyBGKG51bGwpLHRoaXMuX2xhc3RUb3VjaE1zPTAsdGhpcy5fb25LZXlkb3duPXQ9Pnt2YXIgZSxuOyhudWxsPT09KG49bnVsbD09PShlPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmlnbm9yZUtleXMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnNvbWUoKGU9PmU9PT10LmtleUNvZGUpKSl8fCh0aGlzLl9tb2RhbGl0eS5uZXh0KCJrZXlib2FyZCIpLHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ9THoodCkpfSx0aGlzLl9vbk1vdXNlZG93bj10PT57RGF0ZS5ub3coKS10aGlzLl9sYXN0VG91Y2hNczw2NTB8fCh0aGlzLl9tb2RhbGl0eS5uZXh0KGdJKHQpPyJrZXlib2FyZCI6Im1vdXNlIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD1Meih0KSl9LHRoaXMuX29uVG91Y2hzdGFydD10PT57aEkodCk/dGhpcy5fbW9kYWxpdHkubmV4dCgia2V5Ym9hcmQiKToodGhpcy5fbGFzdFRvdWNoTXM9RGF0ZS5ub3coKSx0aGlzLl9tb2RhbGl0eS5uZXh0KCJ0b3VjaCIpLHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ9THoodCkpfSx0aGlzLl9vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx5SSksbyksdGhpcy5tb2RhbGl0eURldGVjdGVkPXRoaXMuX21vZGFsaXR5LnBpcGUoVGUoMSkpLHRoaXMubW9kYWxpdHlDaGFuZ2VkPXRoaXMubW9kYWxpdHlEZXRlY3RlZC5waXBlKE1lKCkpLHQuaXNCcm93c2VyJiZlLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e24uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlkb3duLF9JKSxuLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZWRvd24sX0kpLG4uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaHN0YXJ0LF9JKX0pKX1nZXQgbW9zdFJlY2VudE1vZGFsaXR5KCl7cmV0dXJuIHRoaXMuX21vZGFsaXR5LnZhbHVlfW5nT25EZXN0cm95KCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlkb3duLF9JKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2Vkb3duLF9JKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0aGlzLl9vblRvdWNoc3RhcnQsX0kpKX19Q0kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENJKSh2cih3eiksdnIoYV8pLHZyKFpfKSx2cihiSSw4KSl9LENJLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBDSSh2cih3eiksdnIoYV8pLHZyKFpfKSx2cihiSSw4KSl9LHRva2VuOkNJLHByb3ZpZGVkSW46InJvb3QifSksQ0kuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp3en0se3R5cGU6YV99LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W2JJXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChDSSxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6d3p9LHt0eXBlOmFffSx7dHlwZTpEb2N1bWVudCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltiSV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBNST1uZXcgR2EoImxpdmVBbm5vdW5jZXJFbGVtZW50Iix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiB2SSgpe3JldHVybiBudWxsfX0pLHhJPW5ldyBHYSgiTElWRV9BTk5PVU5DRVJfREVGQVVMVF9PUFRJT05TIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBPSXtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9kZWZhdWx0T3B0aW9ucz1vLHRoaXMuX2RvY3VtZW50PW4sdGhpcy5fbGl2ZUVsZW1lbnQ9dHx8dGhpcy5fY3JlYXRlTGl2ZUVsZW1lbnQoKX1hbm5vdW5jZSh0LC4uLmUpe2NvbnN0IG49dGhpcy5fZGVmYXVsdE9wdGlvbnM7bGV0IG8saTtyZXR1cm4gMT09PWUubGVuZ3RoJiYibnVtYmVyIj09dHlwZW9mIGVbMF0/aT1lWzBdOltvLGldPWUsdGhpcy5jbGVhcigpLGNsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLG98fChvPW4mJm4ucG9saXRlbmVzcz9uLnBvbGl0ZW5lc3M6InBvbGl0ZSIpLG51bGw9PWkmJm4mJihpPW4uZHVyYXRpb24pLHRoaXMuX2xpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIixvKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5uZXcgUHJvbWlzZSgoZT0+e2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX3ByZXZpb3VzVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX2xpdmVFbGVtZW50LnRleHRDb250ZW50PXQsZSgpLCJudW1iZXIiPT10eXBlb2YgaSYmKHRoaXMuX3ByZXZpb3VzVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5jbGVhcigpKSxpKSl9KSwxMDApfSkpKSl9Y2xlYXIoKXt0aGlzLl9saXZlRWxlbWVudCYmKHRoaXMuX2xpdmVFbGVtZW50LnRleHRDb250ZW50PSIiKX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX2xpdmVFbGVtZW50JiZ0aGlzLl9saXZlRWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXZlRWxlbWVudCksdGhpcy5fbGl2ZUVsZW1lbnQ9bnVsbCl9X2NyZWF0ZUxpdmVFbGVtZW50KCl7Y29uc3QgdD0iY2RrLWxpdmUtYW5ub3VuY2VyLWVsZW1lbnQiLGU9dGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0KSxuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW3RdKTtyZXR1cm4gbi5jbGFzc0xpc3QuYWRkKHQpLG4uY2xhc3NMaXN0LmFkZCgiY2RrLXZpc3VhbGx5LWhpZGRlbiIpLG4uc2V0QXR0cmlidXRlKCJhcmlhLWF0b21pYyIsInRydWUiKSxuLnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSxufX1PSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T0kpKHZyKE1JLDgpLHZyKGFfKSx2cihaXyksdnIoeEksOCkpfSxPSS7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgT0kodnIoTUksOCksdnIoYV8pLHZyKFpfKSx2cih4SSw4KSl9LHRva2VuOk9JLHByb3ZpZGVkSW46InJvb3QifSksT0kuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W01JXX1dfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3hJXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChPSSxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltNSV19XX0se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt4SV19XX1dfSksbnVsbCk7Y2xhc3MgUEl7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2xpdmVBbm5vdW5jZXI9ZSx0aGlzLl9jb250ZW50T2JzZXJ2ZXI9bix0aGlzLl9uZ1pvbmU9byx0aGlzLl9wb2xpdGVuZXNzPSJwb2xpdGUifWdldCBwb2xpdGVuZXNzKCl7cmV0dXJuIHRoaXMuX3BvbGl0ZW5lc3N9c2V0IHBvbGl0ZW5lc3ModCl7dGhpcy5fcG9saXRlbmVzcz0ib2ZmIj09PXR8fCJhc3NlcnRpdmUiPT09dD90OiJwb2xpdGUiLCJvZmYiPT09dGhpcy5fcG9saXRlbmVzcz90aGlzLl9zdWJzY3JpcHRpb24mJih0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCk6dGhpcy5fc3Vic2NyaXB0aW9ufHwodGhpcy5fc3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSgoKCk9Pntjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fcHJldmlvdXNBbm5vdW5jZWRUZXh0JiYodGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0LHRoaXMuX3BvbGl0ZW5lc3MpLHRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dD10KX0pKSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fVBJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQSSkoU20oaGcpLFNtKE9JKSxTbShWeiksU20oYV8pKX0sUEkuybVkaXI9bG8oe3R5cGU6UEksc2VsZWN0b3JzOltbIiIsImNka0FyaWFMaXZlIiwiIl1dLGlucHV0czp7cG9saXRlbmVzczpbImNka0FyaWFMaXZlIiwicG9saXRlbmVzcyJdfSxleHBvcnRBczpbImNka0FyaWFMaXZlIl19KSxQSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpPSX0se3R5cGU6Vnp9LHt0eXBlOmFffV0sUEkucHJvcERlY29yYXRvcnM9e3BvbGl0ZW5lc3M6W3t0eXBlOnh5LGFyZ3M6WyJjZGtBcmlhTGl2ZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUEksW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0FyaWFMaXZlXSIsZXhwb3J0QXM6ImNka0FyaWFMaXZlIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpPSX0se3R5cGU6Vnp9LHt0eXBlOmFffV19KSx7cG9saXRlbmVzczpbe3R5cGU6eHksYXJnczpbImNka0FyaWFMaXZlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgd0k9bmV3IEdhKCJjZGstZm9jdXMtbW9uaXRvci1kZWZhdWx0LW9wdGlvbnMiKSxrST1Oeih7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSk7Y2xhc3MgU0l7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvcj1uLHRoaXMuX29yaWdpbj1udWxsLHRoaXMuX3dpbmRvd0ZvY3VzZWQ9ITEsdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb249ITEsdGhpcy5fZWxlbWVudEluZm89bmV3IE1hcCx0aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQ9MCx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudD1uZXcgTWFwLHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXI9KCk9Pnt0aGlzLl93aW5kb3dGb2N1c2VkPSEwLHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl93aW5kb3dGb2N1c2VkPSExKSl9LHRoaXMuX3N0b3BJbnB1dE1vZGFsaXR5RGV0ZWN0b3I9bmV3IEksdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcj10PT57Y29uc3QgZT1Meih0KSxuPSJmb2N1cyI9PT10LnR5cGU/dGhpcy5fb25Gb2N1czp0aGlzLl9vbkJsdXI7Zm9yKGxldCBvPWU7bztvPW8ucGFyZW50RWxlbWVudCluLmNhbGwodGhpcyx0LG8pfSx0aGlzLl9kb2N1bWVudD1vLHRoaXMuX2RldGVjdGlvbk1vZGU9KG51bGw9PWk/dm9pZCAwOmkuZGV0ZWN0aW9uTW9kZSl8fDB9bW9uaXRvcih0LGU9ITEpe2NvbnN0IG49eHoodCk7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8MSE9PW4ubm9kZVR5cGUpcmV0dXJuIEV0KG51bGwpO2NvbnN0IG89SHoobil8fHRoaXMuX2dldERvY3VtZW50KCksaT10aGlzLl9lbGVtZW50SW5mby5nZXQobik7aWYoaSlyZXR1cm4gZSYmKGkuY2hlY2tDaGlsZHJlbj0hMCksaS5zdWJqZWN0O2NvbnN0IGE9e2NoZWNrQ2hpbGRyZW46ZSxzdWJqZWN0Om5ldyBJLHJvb3ROb2RlOm99O3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5zZXQobixhKSx0aGlzLl9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyhhKSxhLnN1YmplY3R9c3RvcE1vbml0b3JpbmcodCl7Y29uc3QgZT14eih0KSxuPXRoaXMuX2VsZW1lbnRJbmZvLmdldChlKTtuJiYobi5zdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fc2V0Q2xhc3NlcyhlKSx0aGlzLl9lbGVtZW50SW5mby5kZWxldGUoZSksdGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKG4pKX1mb2N1c1ZpYSh0LGUsbil7Y29uc3Qgbz14eih0KTtvPT09dGhpcy5fZ2V0RG9jdW1lbnQoKS5hY3RpdmVFbGVtZW50P3RoaXMuX2dldENsb3Nlc3RFbGVtZW50c0luZm8obykuZm9yRWFjaCgoKFt0LG5dKT0+dGhpcy5fb3JpZ2luQ2hhbmdlZCh0LGUsbikpKToodGhpcy5fc2V0T3JpZ2luKGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBvLmZvY3VzJiZvLmZvY3VzKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKCh0LGUpPT50aGlzLnN0b3BNb25pdG9yaW5nKGUpKSl9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fdG9nZ2xlQ2xhc3ModCxlLG4pe24/dC5jbGFzc0xpc3QuYWRkKGUpOnQuY2xhc3NMaXN0LnJlbW92ZShlKX1fZ2V0Rm9jdXNPcmlnaW4odCl7cmV0dXJuIHRoaXMuX29yaWdpbj90aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj90aGlzLl9zaG91bGRCZUF0dHJpYnV0ZWRUb1RvdWNoKHQpPyJ0b3VjaCI6InByb2dyYW0iOnRoaXMuX29yaWdpbjp0aGlzLl93aW5kb3dGb2N1c2VkJiZ0aGlzLl9sYXN0Rm9jdXNPcmlnaW4/dGhpcy5fbGFzdEZvY3VzT3JpZ2luOiJwcm9ncmFtIn1fc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaCh0KXtyZXR1cm4gMT09PXRoaXMuX2RldGVjdGlvbk1vZGV8fCEhKG51bGw9PXQ/dm9pZCAwOnQuY29udGFpbnModGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLl9tb3N0UmVjZW50VGFyZ2V0KSl9X3NldENsYXNzZXModCxlKXt0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstZm9jdXNlZCIsISFlKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstdG91Y2gtZm9jdXNlZCIsInRvdWNoIj09PWUpLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1rZXlib2FyZC1mb2N1c2VkIiwia2V5Ym9hcmQiPT09ZSksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLW1vdXNlLWZvY3VzZWQiLCJtb3VzZSI9PT1lKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstcHJvZ3JhbS1mb2N1c2VkIiwicHJvZ3JhbSI9PT1lKX1fc2V0T3JpZ2luKHQsZT0hMSl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX29yaWdpbj10LHRoaXMuX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uPSJ0b3VjaCI9PT10JiZlLDA9PT10aGlzLl9kZXRlY3Rpb25Nb2RlJiYoY2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCksdGhpcy5fb3JpZ2luVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl9vcmlnaW49bnVsbCksdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb24/NjUwOjEpKX0pKX1fb25Gb2N1cyh0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpLG89THoodCk7biYmKG4uY2hlY2tDaGlsZHJlbnx8ZT09PW8pJiZ0aGlzLl9vcmlnaW5DaGFuZ2VkKGUsdGhpcy5fZ2V0Rm9jdXNPcmlnaW4obyksbil9X29uQmx1cih0LGUpe2NvbnN0IG49dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpOyFufHxuLmNoZWNrQ2hpbGRyZW4mJnQucmVsYXRlZFRhcmdldCBpbnN0YW5jZW9mIE5vZGUmJmUuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KXx8KHRoaXMuX3NldENsYXNzZXMoZSksdGhpcy5fZW1pdE9yaWdpbihuLnN1YmplY3QsbnVsbCkpfV9lbWl0T3JpZ2luKHQsZSl7dGhpcy5fbmdab25lLnJ1bigoKCk9PnQubmV4dChlKSkpfV9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtjb25zdCBlPXQucm9vdE5vZGUsbj10aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5nZXQoZSl8fDA7bnx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsa0kpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixrSSl9KSksdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuc2V0KGUsbisxKSwxPT0rK3RoaXMuX21vbml0b3JlZEVsZW1lbnRDb3VudCYmKHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9nZXRXaW5kb3coKS5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lcil9KSksdGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLm1vZGFsaXR5RGV0ZWN0ZWQucGlwZShJZSh0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fc2V0T3JpZ2luKHQsITApfSkpKX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKHQpe2NvbnN0IGU9dC5yb290Tm9kZTtpZih0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5oYXMoZSkpe2NvbnN0IHQ9dGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZ2V0KGUpO3Q+MT90aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQoZSx0LTEpOihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLGtJKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsa0kpLHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmRlbGV0ZShlKSl9LS10aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnR8fCh0aGlzLl9nZXRXaW5kb3coKS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fd2luZG93Rm9jdXNMaXN0ZW5lciksdGhpcy5fc3RvcElucHV0TW9kYWxpdHlEZXRlY3Rvci5uZXh0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5fb3JpZ2luVGltZW91dElkKSl9X29yaWdpbkNoYW5nZWQodCxlLG4pe3RoaXMuX3NldENsYXNzZXModCxlKSx0aGlzLl9lbWl0T3JpZ2luKG4uc3ViamVjdCxlKSx0aGlzLl9sYXN0Rm9jdXNPcmlnaW49ZX1fZ2V0Q2xvc2VzdEVsZW1lbnRzSW5mbyh0KXtjb25zdCBlPVtdO3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5mb3JFYWNoKCgobixvKT0+eyhvPT09dHx8bi5jaGVja0NoaWxkcmVuJiZvLmNvbnRhaW5zKHQpKSYmZS5wdXNoKFtvLG5dKX0pKSxlfX1TSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0kpKHZyKGFfKSx2cih3eiksdnIoQ0kpLHZyKFpfLDgpLHZyKHdJLDgpKX0sU0kuybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFNJKHZyKGFfKSx2cih3eiksdnIoQ0kpLHZyKFpfLDgpLHZyKHdJLDgpKX0sdG9rZW46U0kscHJvdmlkZWRJbjoicm9vdCJ9KSxTSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6Q0l9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbd0ldfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFNJLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOkNJfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3dJXX1dfV19KSxudWxsKTtjbGFzcyBESXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLmNka0ZvY3VzQ2hhbmdlPW5ldyBMaH1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uPXRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHQsMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKCJjZGtNb25pdG9yU3VidHJlZUZvY3VzIikpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtGb2N1c0NoYW5nZS5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbiYmdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1ESS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8REkpKFNtKGhnKSxTbShTSSkpfSxESS7JtWRpcj1sbyh7dHlwZTpESSxzZWxlY3RvcnM6W1siIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiJdLFsiIiwiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIsIiJdXSxvdXRwdXRzOntjZGtGb2N1c0NoYW5nZToiY2RrRm9jdXNDaGFuZ2UifX0pLERJLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlNJfV0sREkucHJvcERlY29yYXRvcnM9e2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpPeX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKERJLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltjZGtNb25pdG9yRWxlbWVudEZvY3VzXSwgW2Nka01vbml0b3JTdWJ0cmVlRm9jdXNdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpTSX1dfSkse2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpPeX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBFST0iY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUiLFJJPSJjZGstaGlnaC1jb250cmFzdC13aGl0ZS1vbi1ibGFjayIsQUk9ImNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSI7Y2xhc3MgVEl7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX2RvY3VtZW50PWV9Z2V0SGlnaENvbnRyYXN0TW9kZSgpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIDA7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiKDEsMiwzKSIsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93LG49ZSYmZS5nZXRDb21wdXRlZFN0eWxlP2UuZ2V0Q29tcHV0ZWRTdHlsZSh0KTpudWxsLG89KG4mJm4uYmFja2dyb3VuZENvbG9yfHwiIikucmVwbGFjZSgvIC9nLCIiKTtzd2l0Y2godGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxvKXtjYXNlInJnYigwLDAsMCkiOnJldHVybiAyO2Nhc2UicmdiKDI1NSwyNTUsMjU1KSI6cmV0dXJuIDF9cmV0dXJuIDB9X2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl7aWYoIXRoaXMuX2hhc0NoZWNrZWRIaWdoQ29udHJhc3RNb2RlJiZ0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2RvY3VtZW50LmJvZHkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Q7dC5yZW1vdmUoQUkpLHQucmVtb3ZlKEVJKSx0LnJlbW92ZShSSSksdGhpcy5faGFzQ2hlY2tlZEhpZ2hDb250cmFzdE1vZGU9ITA7Y29uc3QgZT10aGlzLmdldEhpZ2hDb250cmFzdE1vZGUoKTsxPT09ZT8odC5hZGQoQUkpLHQuYWRkKEVJKSk6Mj09PWUmJih0LmFkZChBSSksdC5hZGQoUkkpKX19fVRJLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUSSkodnIod3opLHZyKFpfKSl9LFRJLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBUSSh2cih3eiksdnIoWl8pKX0sdG9rZW46VEkscHJvdmlkZWRJbjoicm9vdCJ9KSxUSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnd6fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFRJLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE5Je2NvbnN0cnVjdG9yKHQpe3QuX2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl9fU5JLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOSSkodnIoVEkpKX0sTkkuybVtb2Q9YW8oe3R5cGU6Tkl9KSxOSS7JtWluaj12bih7aW1wb3J0czpbW2t6LFV6XV19KSxOSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlRJfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOSSxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W2t6LFV6XSxkZWNsYXJhdGlvbnM6W1BJLHNJLERJXSxleHBvcnRzOltQSSxzSSxESV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUSX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhOSSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1BJLHNJLERJXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltreixVel19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUEksc0ksREldfX0pO2NvbnN0IHpJPW5ldyBHYSgiY2RrLWRpci1kb2MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIElJKCl7cmV0dXJuIE9yKFpfKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovfSk7Y2xhc3MgSEl7Y29uc3RydWN0b3IodCl7aWYodGhpcy52YWx1ZT0ibHRyIix0aGlzLmNoYW5nZT1uZXcgTGgsdCl7Y29uc3QgZT10LmRvY3VtZW50RWxlbWVudD90LmRvY3VtZW50RWxlbWVudC5kaXI6bnVsbCxuPSh0LmJvZHk/dC5ib2R5LmRpcjpudWxsKXx8ZTt0aGlzLnZhbHVlPSJsdHIiPT09bnx8InJ0bCI9PT1uP246Imx0ciJ9fW5nT25EZXN0cm95KCl7dGhpcy5jaGFuZ2UuY29tcGxldGUoKX19SEkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEhJKSh2cih6SSw4KSl9LEhJLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBISSh2cih6SSw4KSl9LHRva2VuOkhJLHByb3ZpZGVkSW46InJvb3QifSksSEkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3pJXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChISSxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt6SV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBGSXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2Rpcj0ibHRyIix0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuY2hhbmdlPW5ldyBMaH1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcn1zZXQgZGlyKHQpe2NvbnN0IGU9dGhpcy5fZGlyLG49dD90LnRvTG93ZXJDYXNlKCk6dDt0aGlzLl9yYXdEaXI9dCx0aGlzLl9kaXI9Imx0ciI9PT1ufHwicnRsIj09PW4/bjoibHRyIixlIT09dGhpcy5fZGlyJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2Rpcil9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGlyfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfX1GSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RkkpfSxGSS7JtWRpcj1sbyh7dHlwZTpGSSxzZWxlY3RvcnM6W1siIiwiZGlyIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmpwKCJkaXIiLG4uX3Jhd0Rpcil9LGlucHV0czp7ZGlyOiJkaXIifSxvdXRwdXRzOntjaGFuZ2U6ImRpckNoYW5nZSJ9LGV4cG9ydEFzOlsiZGlyIl0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpISSx1c2VFeGlzdGluZzpGSX1dKV19KSxGSS5wcm9wRGVjb3JhdG9ycz17Y2hhbmdlOlt7dHlwZTpPeSxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRkksW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Rpcl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6SEksdXNlRXhpc3Rpbmc6Rkl9XSxob3N0OnsiW2F0dHIuZGlyXSI6Il9yYXdEaXIifSxleHBvcnRBczoiZGlyIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7Y2hhbmdlOlt7dHlwZTpPeSxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOnh5fV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIExJe31MSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TEkpfSxMSS7JtW1vZD1hbyh7dHlwZTpMSX0pLExJLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKExJLFt7dHlwZTpBeSxhcmdzOlt7ZXhwb3J0czpbRkldLGRlY2xhcmF0aW9uczpbRkldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oTEkse2RlY2xhcmF0aW9uczpbRkldLGV4cG9ydHM6W0ZJXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQkk9bmV3IE9nKCIxMi4yLjEiKSxWST1bIioiLFtbIm1hdC1vcHRpb24iXSxbIm5nLWNvbnRhaW5lciJdXV07ZnVuY3Rpb24gakkodCxlKXtpZigxJnQmJlRtKDAsIm1hdC1wc2V1ZG8tY2hlY2tib3giLDQpLDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJzdGF0ZSIsdC5zZWxlY3RlZD8iY2hlY2tlZCI6InVuY2hlY2tlZCIpKCJkaXNhYmxlZCIsdC5kaXNhYmxlZCl9fWZ1bmN0aW9uIFVJKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsNSksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRHUoIigiLHQuZ3JvdXAubGFiZWwsIikiKX19bmV3IE9nKCIxMi4yLjMiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEdJe31HSS5TVEFOREFSRF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpIixHSS5ERUNFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjAsMC4wLDAuMiwxKSIsR0kuQUNDRUxFUkFUSU9OX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwxLDEpIixHSS5TSEFSUF9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC42LDEpIjtjbGFzcyBXSXt9V0kuQ09NUExFWD0iMzc1bXMiLFdJLkVOVEVSSU5HPSIyMjVtcyIsV0kuRVhJVElORz0iMTk1bXMiOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgWUk9bmV3IE9nKCIxMi4yLjMiKSxxST1uZXcgR2EoIm1hdC1zYW5pdHktY2hlY2tzIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBaSSgpe3JldHVybiEwfX0pO2NsYXNzIFhJe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzPSExLHRoaXMuX2RvY3VtZW50PW4sdC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKSx0aGlzLl9zYW5pdHlDaGVja3M9ZSx0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzfHwodGhpcy5fY2hlY2tEb2N0eXBlSXNEZWZpbmVkKCksdGhpcy5fY2hlY2tUaGVtZUlzUHJlc2VudCgpLHRoaXMuX2NoZWNrQ2RrVmVyc2lvbk1hdGNoKCksdGhpcy5faGFzRG9uZUdsb2JhbENoZWNrcz0hMCl9X2dldFdpbmRvdygpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQ/dDpudWxsfV9jaGVja0lzRW5hYmxlZCh0KXtyZXR1cm4hKCF5XygpfHx0aGlzLl9pc1Rlc3RFbnYoKSkmJigiYm9vbGVhbiI9PXR5cGVvZiB0aGlzLl9zYW5pdHlDaGVja3M/dGhpcy5fc2FuaXR5Q2hlY2tzOiEhdGhpcy5fc2FuaXR5Q2hlY2tzW3RdKX1faXNUZXN0RW52KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTtyZXR1cm4gdCYmKHQuX19rYXJtYV9ffHx0Lmphc21pbmUpfV9jaGVja0RvY3R5cGVJc0RlZmluZWQoKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgiZG9jdHlwZSIpJiYhdGhpcy5fZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCJDdXJyZW50IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYSBkb2N0eXBlLiBUaGlzIG1heSBjYXVzZSBzb21lIEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBub3QgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLiIpfV9jaGVja1RoZW1lSXNQcmVzZW50KCl7aWYoIXRoaXMuX2NoZWNrSXNFbmFibGVkKCJ0aGVtZSIpfHwhdGhpcy5fZG9jdW1lbnQuYm9keXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGdldENvbXB1dGVkU3R5bGUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc0xpc3QuYWRkKCJtYXQtdGhlbWUtbG9hZGVkLW1hcmtlciIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7Y29uc3QgZT1nZXRDb21wdXRlZFN0eWxlKHQpO2UmJiJub25lIiE9PWUuZGlzcGxheSYmY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBBbmd1bGFyIE1hdGVyaWFsIGNvcmUgdGhlbWUuIE1vc3QgTWF0ZXJpYWwgY29tcG9uZW50cyBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuIEZvciBtb3JlIGluZm8gcmVmZXIgdG8gdGhlIHRoZW1pbmcgZ3VpZGU6IGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nIiksdGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KX1fY2hlY2tDZGtWZXJzaW9uTWF0Y2goKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgidmVyc2lvbiIpJiZZSS5mdWxsIT09QkkuZnVsbCYmY29uc29sZS53YXJuKCJUaGUgQW5ndWxhciBNYXRlcmlhbCB2ZXJzaW9uICgiK1lJLmZ1bGwrIikgZG9lcyBub3QgbWF0Y2ggdGhlIEFuZ3VsYXIgQ0RLIHZlcnNpb24gKCIrQkkuZnVsbCsiKS5cblBsZWFzZSBlbnN1cmUgdGhlIHZlcnNpb25zIG9mIHRoZXNlIHR3byBwYWNrYWdlcyBleGFjdGx5IG1hdGNoLiIpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEtJKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5fZGlzYWJsZWQ9ITF9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD15eih0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBKSSh0LGUpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5kZWZhdWx0Q29sb3I9ZSx0aGlzLmNvbG9yPWV9Z2V0IGNvbG9yKCl7cmV0dXJuIHRoaXMuX2NvbG9yfXNldCBjb2xvcih0KXtjb25zdCBlPXR8fHRoaXMuZGVmYXVsdENvbG9yO2UhPT10aGlzLl9jb2xvciYmKHRoaXMuX2NvbG9yJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgbWF0LSR7dGhpcy5fY29sb3J9YCksZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC0ke2V9YCksdGhpcy5fY29sb3I9ZSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gUUkodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT15eih0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiAkSSh0LGU9MCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl90YWJJbmRleD1lLHRoaXMuZGVmYXVsdFRhYkluZGV4PWV9Z2V0IHRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/LTE6dGhpcy5fdGFiSW5kZXh9c2V0IHRhYkluZGV4KHQpe3RoaXMuX3RhYkluZGV4PW51bGwhPXQ/X3oodCk6dGhpcy5kZWZhdWx0VGFiSW5kZXh9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gdEgodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgSSx0aGlzLmVycm9yU3RhdGU9ITF9dXBkYXRlRXJyb3JTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5lcnJvclN0YXRlLGU9KHRoaXMuZXJyb3JTdGF0ZU1hdGNoZXJ8fHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcikuaXNFcnJvclN0YXRlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLmNvbnRyb2w6bnVsbCx0aGlzLl9wYXJlbnRGb3JtR3JvdXB8fHRoaXMuX3BhcmVudEZvcm0pO2UhPT10JiYodGhpcy5lcnJvclN0YXRlPWUsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBlSCh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9bmV3IEQoKHQ9Pnt0aGlzLl9pc0luaXRpYWxpemVkP3RoaXMuX25vdGlmeVN1YnNjcmliZXIodCk6dGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLnB1c2godCl9KSl9X21hcmtJbml0aWFsaXplZCgpe2lmKHRoaXMuX2lzSW5pdGlhbGl6ZWQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBkaXJlY3RpdmUgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgYXMgaW5pdGlhbGl6ZWQgYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlLiIpO3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITAsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLmZvckVhY2godGhpcy5fbm90aWZ5U3Vic2NyaWJlciksdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPW51bGx9X25vdGlmeVN1YnNjcmliZXIodCl7dC5uZXh0KCksdC5jb21wbGV0ZSgpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9YSS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WEkpKHZyKFRJKSx2cihxSSw4KSx2cihaXykpfSxYSS7JtW1vZD1hbyh7dHlwZTpYSX0pLFhJLsm1aW5qPXZuKHtpbXBvcnRzOltbTEldLExJXX0pLFhJLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VEl9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbcUldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWEksW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltMSV0sZXhwb3J0czpbTEldfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VEl9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbcUldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhYSSx7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltMSV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTEldfX0pO2NvbnN0IG5IPW5ldyBHYSgiTUFUX0RBVEVfTE9DQUxFIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBvSCgpe3JldHVybiBPcihXeSl9fSk7Y2xhc3MgaUh7Y29uc3RydWN0b3IoKXt0aGlzLl9sb2NhbGVDaGFuZ2VzPW5ldyBJLHRoaXMubG9jYWxlQ2hhbmdlcz10aGlzLl9sb2NhbGVDaGFuZ2VzfWdldFZhbGlkRGF0ZU9yTnVsbCh0KXtyZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6bnVsbH1kZXNlcmlhbGl6ZSh0KXtyZXR1cm4gbnVsbD09dHx8dGhpcy5pc0RhdGVJbnN0YW5jZSh0KSYmdGhpcy5pc1ZhbGlkKHQpP3Q6dGhpcy5pbnZhbGlkKCl9c2V0TG9jYWxlKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCl9Y29tcGFyZURhdGUodCxlKXtyZXR1cm4gdGhpcy5nZXRZZWFyKHQpLXRoaXMuZ2V0WWVhcihlKXx8dGhpcy5nZXRNb250aCh0KS10aGlzLmdldE1vbnRoKGUpfHx0aGlzLmdldERhdGUodCktdGhpcy5nZXREYXRlKGUpfXNhbWVEYXRlKHQsZSl7aWYodCYmZSl7bGV0IG49dGhpcy5pc1ZhbGlkKHQpLG89dGhpcy5pc1ZhbGlkKGUpO3JldHVybiBuJiZvPyF0aGlzLmNvbXBhcmVEYXRlKHQsZSk6bj09b31yZXR1cm4gdD09ZX1jbGFtcERhdGUodCxlLG4pe3JldHVybiBlJiZ0aGlzLmNvbXBhcmVEYXRlKHQsZSk8MD9lOm4mJnRoaXMuY29tcGFyZURhdGUodCxuKT4wP246dH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGFIPW5ldyBHYSgibWF0LWRhdGUtZm9ybWF0cyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgckg7dHJ5e3JIPSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bH1jYXRjaChqQ3Qpe3JIPSExfWNvbnN0IHNIPXtsb25nOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLG5hcnJvdzpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdfSxsSD1wSCgzMSwodD0+U3RyaW5nKHQrMSkpKSxjSD17bG9uZzpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxuYXJyb3c6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl19LGRIPS9eXGR7NH0tXGR7Mn0tXGR7Mn0oPzpUXGR7Mn06XGR7Mn06XGR7Mn0oPzpcLlxkKyk/KD86WnwoPzooPzpcK3wtKVxkezJ9OlxkezJ9KSk/KT8kLztmdW5jdGlvbiBwSCh0LGUpe2NvbnN0IG49QXJyYXkodCk7Zm9yKGxldCBvPTA7bzx0O28rKyluW29dPWUobyk7cmV0dXJuIG59Y2xhc3MgbUggZXh0ZW5kcyBpSHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy51c2VVdGNGb3JEaXNwbGF5PSEwLHN1cGVyLnNldExvY2FsZSh0KSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9IWUuVFJJREVOVCx0aGlzLl9jbGFtcERhdGU9ZS5UUklERU5UfHxlLkVER0V9Z2V0WWVhcih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfWdldE1vbnRoKHQpe3JldHVybiB0LmdldE1vbnRoKCl9Z2V0RGF0ZSh0KXtyZXR1cm4gdC5nZXREYXRlKCl9Z2V0RGF5T2ZXZWVrKHQpe3JldHVybiB0LmdldERheSgpfWdldE1vbnRoTmFtZXModCl7aWYockgpe2NvbnN0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse21vbnRoOnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gcEgoMTIsKHQ9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChlLG5ldyBEYXRlKDIwMTcsdCwxKSkpKSl9cmV0dXJuIHNIW3RdfWdldERhdGVOYW1lcygpe2lmKHJIKXtjb25zdCB0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHtkYXk6Im51bWVyaWMiLHRpbWVab25lOiJ1dGMifSk7cmV0dXJuIHBIKDMxLChlPT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQodCxuZXcgRGF0ZSgyMDE3LDAsZSsxKSkpKSl9cmV0dXJuIGxIfWdldERheU9mV2Vla05hbWVzKHQpe2lmKHJIKXtjb25zdCBlPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt3ZWVrZGF5OnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gcEgoNywodD0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsbmV3IERhdGUoMjAxNywwLHQrMSkpKSkpfXJldHVybiBjSFt0XX1nZXRZZWFyTmFtZSh0KXtpZihySCl7Y29uc3QgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7eWVhcjoibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsdCkpfXJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKHQpKX1nZXRGaXJzdERheU9mV2Vlaygpe3JldHVybiAwfWdldE51bURheXNJbk1vbnRoKHQpe3JldHVybiB0aGlzLmdldERhdGUodGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSsxLDApKX1jbG9uZSh0KXtyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpfWNyZWF0ZURhdGUodCxlLG4pe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKGU8MHx8ZT4xMSl0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCAiJHtlfSIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO2lmKG48MSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke259Ii4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCl9bGV0IG89dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbik7aWYoby5nZXRNb250aCgpIT1lJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSAiJHtufSIgZm9yIG1vbnRoIHdpdGggaW5kZXggIiR7ZX0iLmApO3JldHVybiBvfXRvZGF5KCl7cmV0dXJuIG5ldyBEYXRlfXBhcnNlKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD9uZXcgRGF0ZSh0KTp0P25ldyBEYXRlKERhdGUucGFyc2UodCkpOm51bGx9Zm9ybWF0KHQsZSl7aWYoIXRoaXMuaXNWYWxpZCh0KSl0aHJvdyBFcnJvcigiTmF0aXZlRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLiIpO2lmKHJIKXt0aGlzLl9jbGFtcERhdGUmJih0LmdldEZ1bGxZZWFyKCk8MXx8dC5nZXRGdWxsWWVhcigpPjk5OTkpJiYodD10aGlzLmNsb25lKHQpKS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLE1hdGgubWluKDk5OTksdC5nZXRGdWxsWWVhcigpKSkpLGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0aW1lWm9uZToidXRjIn0pO2NvbnN0IG49bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsZSk7cmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChuLHQpKX1yZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModC50b0RhdGVTdHJpbmcoKSl9YWRkQ2FsZW5kYXJZZWFycyh0LGUpe3JldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKHQsMTIqZSl9YWRkQ2FsZW5kYXJNb250aHModCxlKXtsZXQgbj10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpK2UsdGhpcy5nZXREYXRlKHQpKTtyZXR1cm4gdGhpcy5nZXRNb250aChuKSE9KCh0aGlzLmdldE1vbnRoKHQpK2UpJTEyKzEyKSUxMiYmKG49dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIobiksdGhpcy5nZXRNb250aChuKSwwKSksbn1hZGRDYWxlbmRhckRheXModCxlKXtyZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSx0aGlzLmdldERhdGUodCkrZSl9dG9Jc284NjAxKHQpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCksdGhpcy5fMmRpZ2l0KHQuZ2V0VVRDTW9udGgoKSsxKSx0aGlzLl8yZGlnaXQodC5nZXRVVENEYXRlKCkpXS5qb2luKCItIil9ZGVzZXJpYWxpemUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZighdClyZXR1cm4gbnVsbDtpZihkSC50ZXN0KHQpKXtsZXQgZT1uZXcgRGF0ZSh0KTtpZih0aGlzLmlzVmFsaWQoZSkpcmV0dXJuIGV9fXJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh0KX1pc0RhdGVJbnN0YW5jZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGV9aXNWYWxpZCh0KXtyZXR1cm4haXNOYU4odC5nZXRUaW1lKCkpfWludmFsaWQoKXtyZXR1cm4gbmV3IERhdGUoTmFOKX1fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbil7Y29uc3Qgbz1uZXcgRGF0ZTtyZXR1cm4gby5zZXRGdWxsWWVhcih0LGUsbiksby5zZXRIb3VycygwLDAsMCwwKSxvfV8yZGlnaXQodCl7cmV0dXJuKCIwMCIrdCkuc2xpY2UoLTIpfV9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1fZm9ybWF0KHQsZSl7Y29uc3Qgbj1uZXcgRGF0ZTtyZXR1cm4gbi5zZXRVVENGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpKSxuLnNldFVUQ0hvdXJzKGUuZ2V0SG91cnMoKSxlLmdldE1pbnV0ZXMoKSxlLmdldFNlY29uZHMoKSxlLmdldE1pbGxpc2Vjb25kcygpKSx0LmZvcm1hdChuKX19bUguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1IKSh2cihuSCw4KSx2cih3eikpfSxtSC7JtXByb3Y9TW4oe3Rva2VuOm1ILGZhY3Rvcnk6bUguybVmYWN9KSxtSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbbkhdfV19LHt0eXBlOnd6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChtSCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltuSF19XX0se3R5cGU6d3p9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdUh7fXVILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1SCl9LHVILsm1bW9kPWFvKHt0eXBlOnVIfSksdUguybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6aUgsdXNlQ2xhc3M6bUh9XSxpbXBvcnRzOltba3pdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodUgsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltrel0scHJvdmlkZXJzOlt7cHJvdmlkZTppSCx1c2VDbGFzczptSH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8odUgse2ltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5ba3pdfX0pO2NvbnN0IGZIPXtwYXJzZTp7ZGF0ZUlucHV0Om51bGx9LGRpc3BsYXk6e2RhdGVJbnB1dDp7eWVhcjoibnVtZXJpYyIsbW9udGg6Im51bWVyaWMiLGRheToibnVtZXJpYyJ9LG1vbnRoWWVhckxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQifSxkYXRlQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIn0sbW9udGhZZWFyQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyJ9fX07Y2xhc3MgZ0h7fWdILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnSCl9LGdILsm1bW9kPWFvKHt0eXBlOmdIfSksZ0guybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6YUgsdXNlVmFsdWU6Zkh9XSxpbXBvcnRzOltbdUhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZ0gsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOlt1SF0scHJvdmlkZXJzOlt7cHJvdmlkZTphSCx1c2VWYWx1ZTpmSH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZ0gse2ltcG9ydHM6W3VIXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgaEh7aXNFcnJvclN0YXRlKHQsZSl7cmV0dXJuISEodCYmdC5pbnZhbGlkJiYodC5kaXJ0eXx8ZSYmZS5zdWJtaXR0ZWQpKX19aEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhIKX0saEguybVwcm92PU1uKHt0b2tlbjpoSCxmYWN0b3J5OmhILsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChoSCxbe3R5cGU6aW19XSxudWxsLG51bGwpO2NsYXNzIGJIe2lzRXJyb3JTdGF0ZSh0LGUpe3JldHVybiEhKHQmJnQuaW52YWxpZCYmKHQudG91Y2hlZHx8ZSYmZS5zdWJtaXR0ZWQpKX19YkguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJIKX0sYkguybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IGJIfSx0b2tlbjpiSCxwcm92aWRlZEluOiJyb290In0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYkgsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHlIe315SC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eUgpfSx5SC7JtWRpcj1sbyh7dHlwZTp5SCxzZWxlY3RvcnM6W1siIiwibWF0LWxpbmUiLCIiXSxbIiIsIm1hdExpbmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtbGluZSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh5SCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0LWxpbmVdLCBbbWF0TGluZV0iLGhvc3Q6e2NsYXNzOiJtYXQtbGluZSJ9fV19XSxudWxsLG51bGwpO2NsYXNzIF9Ie31fSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X0gpfSxfSC7JtW1vZD1hbyh7dHlwZTpfSH0pLF9ILsm1aW5qPXZuKHtpbXBvcnRzOltbWEldLFhJXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoX0gsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltYSV0sZXhwb3J0czpbeUgsWEldLGRlY2xhcmF0aW9uczpbeUhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oX0gse2RlY2xhcmF0aW9uczpbeUhdLGltcG9ydHM6W1hJXSxleHBvcnRzOlt5SCxYSV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIENIe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuY29uZmlnPW4sdGhpcy5zdGF0ZT0zfWZhZGVPdXQoKXt0aGlzLl9yZW5kZXJlci5mYWRlT3V0UmlwcGxlKHRoaXMpfX1jb25zdCBNSD17ZW50ZXJEdXJhdGlvbjoyMjUsZXhpdER1cmF0aW9uOjE1MH0sdkg9Tnooe3Bhc3NpdmU6ITB9KSx4SD1bIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxPSD1bIm1vdXNldXAiLCJtb3VzZWxlYXZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCJdO2NsYXNzIFBIe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3RhcmdldD10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcz1uZXcgU2V0LHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITEsby5pc0Jyb3dzZXImJih0aGlzLl9jb250YWluZXJFbGVtZW50PXh6KG4pKX1mYWRlSW5SaXBwbGUodCxlLG49e30pe2NvbnN0IG89dGhpcy5fY29udGFpbmVyUmVjdD10aGlzLl9jb250YWluZXJSZWN0fHx0aGlzLl9jb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LE1IKSxuLmFuaW1hdGlvbik7bi5jZW50ZXJlZCYmKHQ9by5sZWZ0K28ud2lkdGgvMixlPW8udG9wK28uaGVpZ2h0LzIpO2NvbnN0IGE9bi5yYWRpdXN8fChmdW5jdGlvbiByKHQsZSxuKXtjb25zdCBvPU1hdGgubWF4KE1hdGguYWJzKHQtbi5sZWZ0KSxNYXRoLmFicyh0LW4ucmlnaHQpKSxpPU1hdGgubWF4KE1hdGguYWJzKGUtbi50b3ApLE1hdGguYWJzKGUtbi5ib3R0b20pKTtyZXR1cm4gTWF0aC5zcXJ0KG8qbytpKmkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsZSxvKSxzPXQtby5sZWZ0LGw9ZS1vLnRvcCxjPWkuZW50ZXJEdXJhdGlvbixkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuY2xhc3NMaXN0LmFkZCgibWF0LXJpcHBsZS1lbGVtZW50IiksZC5zdHlsZS5sZWZ0PXMtYSsicHgiLGQuc3R5bGUudG9wPWwtYSsicHgiLGQuc3R5bGUuaGVpZ2h0PTIqYSsicHgiLGQuc3R5bGUud2lkdGg9MiphKyJweCIsbnVsbCE9bi5jb2xvciYmKGQuc3R5bGUuYmFja2dyb3VuZENvbG9yPW4uY29sb3IpLGQuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke2N9bXNgLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoZCksKGZ1bmN0aW9uIHAodCl7d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpfSkoZCksZC5zdHlsZS50cmFuc2Zvcm09InNjYWxlKDEpIjtjb25zdCBtPW5ldyBDSCh0aGlzLGQsbik7cmV0dXJuIG0uc3RhdGU9MCx0aGlzLl9hY3RpdmVSaXBwbGVzLmFkZChtKSxuLnBlcnNpc3RlbnR8fCh0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW0pLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKCk9Pntjb25zdCB0PW09PT10aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlO20uc3RhdGU9MSxuLnBlcnNpc3RlbnR8fHQmJnRoaXMuX2lzUG9pbnRlckRvd258fG0uZmFkZU91dCgpfSksYyksbX1mYWRlT3V0UmlwcGxlKHQpe2NvbnN0IGU9dGhpcy5fYWN0aXZlUmlwcGxlcy5kZWxldGUodCk7aWYodD09PXRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGUmJih0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW51bGwpLHRoaXMuX2FjdGl2ZVJpcHBsZXMuc2l6ZXx8KHRoaXMuX2NvbnRhaW5lclJlY3Q9bnVsbCksIWUpcmV0dXJuO2NvbnN0IG49dC5lbGVtZW50LG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LE1IKSx0LmNvbmZpZy5hbmltYXRpb24pO24uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke28uZXhpdER1cmF0aW9ufW1zYCxuLnN0eWxlLm9wYWNpdHk9IjAiLHQuc3RhdGU9Mix0aGlzLl9ydW5UaW1lb3V0T3V0c2lkZVpvbmUoKCgpPT57dC5zdGF0ZT0zLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX0pLG8uZXhpdER1cmF0aW9uKX1mYWRlT3V0QWxsKCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT50LmZhZGVPdXQoKSkpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT57dC5jb25maWcucGVyc2lzdGVudHx8dC5mYWRlT3V0KCl9KSl9c2V0dXBUcmlnZ2VyRXZlbnRzKHQpe2NvbnN0IGU9eHoodCk7ZSYmZSE9PXRoaXMuX3RyaWdnZXJFbGVtZW50JiYodGhpcy5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpLHRoaXMuX3RyaWdnZXJFbGVtZW50PWUsdGhpcy5fcmVnaXN0ZXJFdmVudHMoeEgpKX1oYW5kbGVFdmVudCh0KXsibW91c2Vkb3duIj09PXQudHlwZT90aGlzLl9vbk1vdXNlZG93bih0KToidG91Y2hzdGFydCI9PT10LnR5cGU/dGhpcy5fb25Ub3VjaFN0YXJ0KHQpOnRoaXMuX29uUG9pbnRlclVwKCksdGhpcy5fcG9pbnRlclVwRXZlbnRzUmVnaXN0ZXJlZHx8KHRoaXMuX3JlZ2lzdGVyRXZlbnRzKE9IKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkPSEwKX1fb25Nb3VzZWRvd24odCl7Y29uc3QgZT1nSSh0KSxuPXRoaXMuX2xhc3RUb3VjaFN0YXJ0RXZlbnQmJkRhdGUubm93KCk8dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudCs4MDA7dGhpcy5fdGFyZ2V0LnJpcHBsZURpc2FibGVkfHxlfHxufHwodGhpcy5faXNQb2ludGVyRG93bj0hMCx0aGlzLmZhZGVJblJpcHBsZSh0LmNsaWVudFgsdC5jbGllbnRZLHRoaXMuX3RhcmdldC5yaXBwbGVDb25maWcpKX1fb25Ub3VjaFN0YXJ0KHQpe2lmKCF0aGlzLl90YXJnZXQucmlwcGxlRGlzYWJsZWQmJiFoSSh0KSl7dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudD1EYXRlLm5vdygpLHRoaXMuX2lzUG9pbnRlckRvd249ITA7Y29uc3QgZT10LmNoYW5nZWRUb3VjaGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuZmFkZUluUmlwcGxlKGVbdF0uY2xpZW50WCxlW3RdLmNsaWVudFksdGhpcy5fdGFyZ2V0LnJpcHBsZUNvbmZpZyl9fV9vblBvaW50ZXJVcCgpe3RoaXMuX2lzUG9pbnRlckRvd24mJih0aGlzLl9pc1BvaW50ZXJEb3duPSExLHRoaXMuX2FjdGl2ZVJpcHBsZXMuZm9yRWFjaCgodD0+eyF0LmNvbmZpZy5wZXJzaXN0ZW50JiYoMT09PXQuc3RhdGV8fHQuY29uZmlnLnRlcm1pbmF0ZU9uUG9pbnRlclVwJiYwPT09dC5zdGF0ZSkmJnQuZmFkZU91dCgpfSkpKX1fcnVuVGltZW91dE91dHNpZGVab25lKHQsZT0wKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KHQsZSkpKX1fcmVnaXN0ZXJFdmVudHModCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodCx0aGlzLHZIKX0pKX0pKX1fcmVtb3ZlVHJpZ2dlckV2ZW50cygpe3RoaXMuX3RyaWdnZXJFbGVtZW50JiYoeEguZm9yRWFjaCgodD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCx0aGlzLHZIKX0pKSx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkJiZPSC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMsdkgpfSkpKX19Y29uc3Qgd0g9bmV3IEdhKCJtYXQtcmlwcGxlLWdsb2JhbC1vcHRpb25zIik7Y2xhc3Mga0h7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fYW5pbWF0aW9uTW9kZT1pLHRoaXMucmFkaXVzPTAsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLl9nbG9iYWxPcHRpb25zPW98fHt9LHRoaXMuX3JpcHBsZVJlbmRlcmVyPW5ldyBQSCh0aGlzLGUsdCxuKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3QmJnRoaXMuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKSx0aGlzLl9kaXNhYmxlZD10LHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfWdldCB0cmlnZ2VyKCl7cmV0dXJuIHRoaXMuX3RyaWdnZXJ8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgdHJpZ2dlcih0KXt0aGlzLl90cmlnZ2VyPXQsdGhpcy5fc2V0dXBUcmlnZ2VyRXZlbnRzSWZFbmFibGVkKCl9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwLHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfW5nT25EZXN0cm95KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX1mYWRlT3V0QWxsKCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbCgpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZU91dEFsbE5vblBlcnNpc3RlbnQoKX1nZXQgcmlwcGxlQ29uZmlnKCl7cmV0dXJue2NlbnRlcmVkOnRoaXMuY2VudGVyZWQscmFkaXVzOnRoaXMucmFkaXVzLGNvbG9yOnRoaXMuY29sb3IsYW5pbWF0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2dsb2JhbE9wdGlvbnMuYW5pbWF0aW9uKSwiTm9vcEFuaW1hdGlvbnMiPT09dGhpcy5fYW5pbWF0aW9uTW9kZT97ZW50ZXJEdXJhdGlvbjowLGV4aXREdXJhdGlvbjowfTp7fSksdGhpcy5hbmltYXRpb24pLHRlcm1pbmF0ZU9uUG9pbnRlclVwOnRoaXMuX2dsb2JhbE9wdGlvbnMudGVybWluYXRlT25Qb2ludGVyVXB9fWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhIXRoaXMuX2dsb2JhbE9wdGlvbnMuZGlzYWJsZWR9X3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpeyF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLl9yaXBwbGVSZW5kZXJlci5zZXR1cFRyaWdnZXJFdmVudHModGhpcy50cmlnZ2VyKX1sYXVuY2godCxlPTAsbil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVJblJpcHBsZSh0LGUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMucmlwcGxlQ29uZmlnKSxuKSk6dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKDAsMCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLHQpKX19a0guybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtIKShTbShoZyksU20oYV8pLFNtKHd6KSxTbSh3SCw4KSxTbShWUCw4KSl9LGtILsm1ZGlyPWxvKHt0eXBlOmtILHNlbGVjdG9yczpbWyIiLCJtYXQtcmlwcGxlIiwiIl0sWyIiLCJtYXRSaXBwbGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtcmlwcGxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoIm1hdC1yaXBwbGUtdW5ib3VuZGVkIixuLnVuYm91bmRlZCl9LGlucHV0czp7cmFkaXVzOlsibWF0UmlwcGxlUmFkaXVzIiwicmFkaXVzIl0sZGlzYWJsZWQ6WyJtYXRSaXBwbGVEaXNhYmxlZCIsImRpc2FibGVkIl0sdHJpZ2dlcjpbIm1hdFJpcHBsZVRyaWdnZXIiLCJ0cmlnZ2VyIl0sY29sb3I6WyJtYXRSaXBwbGVDb2xvciIsImNvbG9yIl0sdW5ib3VuZGVkOlsibWF0UmlwcGxlVW5ib3VuZGVkIiwidW5ib3VuZGVkIl0sY2VudGVyZWQ6WyJtYXRSaXBwbGVDZW50ZXJlZCIsImNlbnRlcmVkIl0sYW5pbWF0aW9uOlsibWF0UmlwcGxlQW5pbWF0aW9uIiwiYW5pbWF0aW9uIl19LGV4cG9ydEFzOlsibWF0UmlwcGxlIl19KSxrSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbd0hdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XSxrSC5wcm9wRGVjb3JhdG9ycz17Y29sb3I6W3t0eXBlOnh5LGFyZ3M6WyJtYXRSaXBwbGVDb2xvciJdfV0sdW5ib3VuZGVkOlt7dHlwZTp4eSxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxyYWRpdXM6W3t0eXBlOnh5LGFyZ3M6WyJtYXRSaXBwbGVSYWRpdXMiXX1dLGFuaW1hdGlvbjpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGtILFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXQtcmlwcGxlXSwgW21hdFJpcHBsZV0iLGV4cG9ydEFzOiJtYXRSaXBwbGUiLGhvc3Q6e2NsYXNzOiJtYXQtcmlwcGxlIiwiW2NsYXNzLm1hdC1yaXBwbGUtdW5ib3VuZGVkXSI6InVuYm91bmRlZCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt3SF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse3JhZGl1czpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZVJhZGl1cyJdfV0sZGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dLGNvbG9yOlt7dHlwZTp4eSxhcmdzOlsibWF0UmlwcGxlQ29sb3IiXX1dLHVuYm91bmRlZDpbe3R5cGU6eHksYXJnczpbIm1hdFJpcHBsZVVuYm91bmRlZCJdfV0sY2VudGVyZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRSaXBwbGVDZW50ZXJlZCJdfV0sYW5pbWF0aW9uOlt7dHlwZTp4eSxhcmdzOlsibWF0UmlwcGxlQW5pbWF0aW9uIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgU0h7fVNILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTSCl9LFNILsm1bW9kPWFvKHt0eXBlOlNIfSksU0guybVpbmo9dm4oe2ltcG9ydHM6W1tYSSxrel0sWEldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChTSCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1hJLGt6XSxleHBvcnRzOltrSCxYSV0sZGVjbGFyYXRpb25zOltrSF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhTSCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2tIXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltYSSxrel19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5ba0gsWEldfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgREh7Y29uc3RydWN0b3IodCl7dGhpcy5fYW5pbWF0aW9uTW9kZT10LHRoaXMuc3RhdGU9InVuY2hlY2tlZCIsdGhpcy5kaXNhYmxlZD0hMX19REguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERIKShTbShWUCw4KSl9LERILsm1Y21wPXRvKHt0eXBlOkRILHNlbGVjdG9yczpbWyJtYXQtcHNldWRvLWNoZWNrYm94Il1dLGhvc3RBdHRyczpbMSwibWF0LXBzZXVkby1jaGVja2JveCJdLGhvc3RWYXJzOjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJtYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUiLCJpbmRldGVybWluYXRlIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQiLCJjaGVja2VkIj09PW4uc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIixuLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKX0saW5wdXRzOntzdGF0ZToic3RhdGUiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LHN0eWxlczpbJy5tYXQtcHNldWRvLWNoZWNrYm94e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjJweCBzb2xpZDtib3JkZXItcmFkaXVzOjJweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLGJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7Y29udGVudDoiIjtib3JkZXItYm90dG9tOjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNpdGlvbjpvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlOjphZnRlcnt0b3A6NXB4O2xlZnQ6MXB4O3dpZHRoOjEwcHg7b3BhY2l0eToxO2JvcmRlci1yYWRpdXM6MnB4fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQ6OmFmdGVye3RvcDoyLjRweDtsZWZ0OjFweDt3aWR0aDo4cHg7aGVpZ2h0OjNweDtib3JkZXItbGVmdDoycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtvcGFjaXR5OjE7Ym94LXNpemluZzpjb250ZW50LWJveH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLERILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dLERILnByb3BEZWNvcmF0b3JzPXtzdGF0ZTpbe3R5cGU6eHl9XSxkaXNhYmxlZDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChESCxbe3R5cGU6TXksYXJnczpbe2VuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHNlbGVjdG9yOiJtYXQtcHNldWRvLWNoZWNrYm94Iix0ZW1wbGF0ZToiIixob3N0OntjbGFzczoibWF0LXBzZXVkby1jaGVja2JveCIsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdIjonc3RhdGUgPT09ICJpbmRldGVybWluYXRlIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRdIjonc3RhdGUgPT09ICJjaGVja2VkIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sc3R5bGVzOlsnLm1hdC1wc2V1ZG8tY2hlY2tib3h7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksYmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2l0aW9uOm9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGU6OmFmdGVye3RvcDo1cHg7bGVmdDoxcHg7d2lkdGg6MTBweDtvcGFjaXR5OjE7Ym9yZGVyLXJhZGl1czoycHh9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZDo6YWZ0ZXJ7dG9wOjIuNHB4O2xlZnQ6MXB4O3dpZHRoOjhweDtoZWlnaHQ6M3B4O2JvcmRlci1sZWZ0OjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV19KSx7c3RhdGU6W3t0eXBlOnh5fV0sZGlzYWJsZWQ6W3t0eXBlOnh5fV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEVIe31FSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RUgpfSxFSC7JtW1vZD1hbyh7dHlwZTpFSH0pLEVILsm1aW5qPXZuKHtpbXBvcnRzOltbWEldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRUgsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltYSV0sZXhwb3J0czpbREhdLGRlY2xhcmF0aW9uczpbREhdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oRUgse2RlY2xhcmF0aW9uczpbREhdLGltcG9ydHM6W1hJXSxleHBvcnRzOltESF19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFJIPW5ldyBHYSgiTUFUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UIiksQUg9S0koY2xhc3N7fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBUSD0wO2NsYXNzIE5IIGV4dGVuZHMgQUh7Y29uc3RydWN0b3IodCl7dmFyIGU7c3VwZXIoKSx0aGlzLl9sYWJlbElkPSJtYXQtb3B0Z3JvdXAtbGFiZWwtIitUSCsrLHRoaXMuX2luZXJ0PW51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmluZXJ0R3JvdXBzKSYmdm9pZCAwIT09ZSYmZX19TkguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5IKShTbShSSCw4KSl9LE5ILsm1ZGlyPWxvKHt0eXBlOk5ILGlucHV0czp7bGFiZWw6ImxhYmVsIn0sZmVhdHVyZXM6W3hwXX0pLE5ILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1JIXX0se3R5cGU6U3J9XX1dLE5ILnByb3BEZWNvcmF0b3JzPXtsYWJlbDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOSCxbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1JIXX0se3R5cGU6U3J9XX1dfSkse2xhYmVsOlt7dHlwZTp4eX1dfSk7Y29uc3Qgekg9bmV3IEdhKCJNYXRPcHRncm91cCIpO2NsYXNzIElIIGV4dGVuZHMgTkh7fUlILsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShJSCkpKShufHxJSCl9fSkoKSxJSC7JtWNtcD10byh7dHlwZTpJSCxzZWxlY3RvcnM6W1sibWF0LW9wdGdyb3VwIl1dLGhvc3RBdHRyczpbMSwibWF0LW9wdGdyb3VwIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKGpwKCJyb2xlIixuLl9pbmVydD9udWxsOiJncm91cCIpKCJhcmlhLWRpc2FibGVkIixuLl9pbmVydD9udWxsOm4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWxsZWRieSIsbi5faW5lcnQ/bnVsbDpuLl9sYWJlbElkKSxwdSgibWF0LW9wdGdyb3VwLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRPcHRncm91cCJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6ekgsdXNlRXhpc3Rpbmc6SUh9XSkseHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtb3B0Z3JvdXAtbGFiZWwiLDMsImlkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabShWSSksUm0oMCwic3BhbiIsMCksa3UoMSksWG0oMiksQW0oKSxYbSgzLDEpKSwyJmUmJihEbSgiaWQiLG4uX2xhYmVsSWQpLHJjKDEpLER1KCIiLG4ubGFiZWwsIiAiKSl9LHN0eWxlczpbIi5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElILFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1vcHRncm91cCIsZXhwb3J0QXM6Im1hdE9wdGdyb3VwIix0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1vcHRncm91cC1sYWJlbCIgYXJpYS1oaWRkZW49InRydWUiIFtpZF09Il9sYWJlbElkIj57eyBsYWJlbCB9fSA8bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiPjwvbmctY29udGVudD5cbicsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OntjbGFzczoibWF0LW9wdGdyb3VwIiwiW2F0dHIucm9sZV0iOidfaW5lcnQgPyBudWxsIDogImdyb3VwIicsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiX2luZXJ0ID8gbnVsbCA6IGRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2luZXJ0ID8gbnVsbCA6IF9sYWJlbElkIiwiW2NsYXNzLm1hdC1vcHRncm91cC1kaXNhYmxlZF0iOiJkaXNhYmxlZCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6ekgsdXNlRXhpc3Rpbmc6SUh9XSxzdHlsZXM6WyIubWF0LW9wdGdyb3VwLWxhYmVse3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwLWxhYmVsW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgSEg9MDtjbGFzcyBGSHtjb25zdHJ1Y3Rvcih0LGU9ITEpe3RoaXMuc291cmNlPXQsdGhpcy5pc1VzZXJJbnB1dD1lfX1jbGFzcyBMSHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9wYXJlbnQ9bix0aGlzLmdyb3VwPW8sdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fYWN0aXZlPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWU9IiIsdGhpcy5pZD0ibWF0LW9wdGlvbi0iK0hIKyssdGhpcy5vblNlbGVjdGlvbkNoYW5nZT1uZXcgTGgsdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyBJfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5tdWx0aXBsZX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ3JvdXAmJnRoaXMuZ3JvdXAuZGlzYWJsZWR8fHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD15eih0KX1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5kaXNhYmxlUmlwcGxlfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfWdldCB2aWV3VmFsdWUoKXtyZXR1cm4odGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS50ZXh0Q29udGVudHx8IiIpLnRyaW0oKX1zZWxlY3QoKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCkpfWZvY3VzKHQsZSl7Y29uc3Qgbj10aGlzLl9nZXRIb3N0RWxlbWVudCgpOyJmdW5jdGlvbiI9PXR5cGVvZiBuLmZvY3VzJiZuLmZvY3VzKGUpfXNldEFjdGl2ZVN0eWxlcygpe3RoaXMuX2FjdGl2ZXx8KHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2V0SW5hY3RpdmVTdHlsZXMoKXt0aGlzLl9hY3RpdmUmJih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldExhYmVsKCl7cmV0dXJuIHRoaXMudmlld1ZhbHVlfV9oYW5kbGVLZXlkb3duKHQpe3Qua2V5Q29kZSE9PW16JiZ0LmtleUNvZGUhPT1menx8YnoodCl8fCh0aGlzLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9X3NlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NlbGVjdGVkPSF0aGlzLm11bHRpcGxlfHwhdGhpcy5fc2VsZWN0ZWQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCEwKSl9X2dldEFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGVkfHwhdGhpcy5tdWx0aXBsZSYmbnVsbH1fZ2V0VGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8iLTEiOiIwIn1fZ2V0SG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50fW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHRoaXMuX3NlbGVjdGVkKXtjb25zdCB0PXRoaXMudmlld1ZhbHVlO3QhPT10aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlJiYodGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZT10LHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCkpfX1uZ09uRGVzdHJveSgpe3RoaXMuX3N0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfV9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQodD0hMSl7dGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyBGSCh0aGlzLHQpKX19TEguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExIKShTbShoZyksU20oVWcpLFNtKHZvaWQgMCksU20oTkgpKX0sTEguybVkaXI9bG8oe3R5cGU6TEgsaW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIsdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7b25TZWxlY3Rpb25DaGFuZ2U6Im9uU2VsZWN0aW9uQ2hhbmdlIn19KSxMSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwfSx7dHlwZTpOSH1dLExILnByb3BEZWNvcmF0b3JzPXt2YWx1ZTpbe3R5cGU6eHl9XSxpZDpbe3R5cGU6eHl9XSxkaXNhYmxlZDpbe3R5cGU6eHl9XSxvblNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6T3l9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMSCxbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDB9LHt0eXBlOk5IfV19KSx7aWQ6W3t0eXBlOnh5fV0sb25TZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOk95fV0sZGlzYWJsZWQ6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV19KTtjbGFzcyBCSCBleHRlbmRzIExIe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxuLG8pfX1mdW5jdGlvbiBWSCh0LGUsbil7aWYobi5sZW5ndGgpe2xldCBvPWUudG9BcnJheSgpLGk9bi50b0FycmF5KCksYT0wO2ZvcihsZXQgZT0wO2U8dCsxO2UrKylvW2VdLmdyb3VwJiZvW2VdLmdyb3VwPT09aVthXSYmYSsrO3JldHVybiBhfXJldHVybiAwfWZ1bmN0aW9uIGpIKHQsZSxuLG8pe3JldHVybiB0PG4/dDp0K2U+bitvP01hdGgubWF4KDAsdC1vK2UpOm59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0JILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCSCkoU20oaGcpLFNtKFVnKSxTbShSSCw4KSxTbSh6SCw4KSl9LEJILsm1Y21wPXRvKHt0eXBlOkJILHNlbGVjdG9yczpbWyJtYXQtb3B0aW9uIl1dLGhvc3RBdHRyczpbInJvbGUiLCJvcHRpb24iLDEsIm1hdC1vcHRpb24iLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksMiZlJiYoVHUoImlkIixuLmlkKSxqcCgidGFiaW5kZXgiLG4uX2dldFRhYkluZGV4KCkpKCJhcmlhLXNlbGVjdGVkIixuLl9nZXRBcmlhU2VsZWN0ZWQoKSkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSkscHUoIm1hdC1zZWxlY3RlZCIsbi5zZWxlY3RlZCkoIm1hdC1vcHRpb24tbXVsdGlwbGUiLG4ubXVsdGlwbGUpKCJtYXQtYWN0aXZlIixuLmFjdGl2ZSkoIm1hdC1vcHRpb24tZGlzYWJsZWQiLG4uZGlzYWJsZWQpKX0sZXhwb3J0QXM6WyJtYXRPcHRpb24iXSxmZWF0dXJlczpbeHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo1LHZhcnM6NCxjb25zdHM6W1siY2xhc3MiLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCIsNCwibmdJZiJdLFsxLCJtYXQtb3B0aW9uLXRleHQiXSxbImNsYXNzIiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsNCwibmdJZiJdLFsibWF0LXJpcHBsZSIsIiIsMSwibWF0LW9wdGlvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdLFsxLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCJdLFsxLCJjZGstdmlzdWFsbHktaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFFwKDAsakksMSwyLCJtYXQtcHNldWRvLWNoZWNrYm94IiwwKSxSbSgxLCJzcGFuIiwxKSxYbSgyKSxBbSgpLFFwKDMsVUksMiwxLCJzcGFuIiwyKSxUbSg0LCJkaXYiLDMpKSwyJmUmJihEbSgibmdJZiIsbi5tdWx0aXBsZSkscmMoMyksRG0oIm5nSWYiLG4uZ3JvdXAmJm4uZ3JvdXAuX2luZXJ0KSxyYygxKSxEbSgibWF0UmlwcGxlVHJpZ2dlciIsbi5fZ2V0SG9zdEVsZW1lbnQoKSkoIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVkfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbZE0sa0gsREhdLHN0eWxlczpbIi5tYXQtb3B0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtb3B0aW9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRpb257dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0aW9uIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjMycHh9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjMycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbnttYXJnaW46MCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JvcmRlcjpzb2xpZCAxcHggY3VycmVudENvbG9yO21hcmdpbjowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5tYXQtb3B0aW9uLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxCSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltSSF19XX0se3R5cGU6SUgsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3pIXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCSCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtb3B0aW9uIixleHBvcnRBczoibWF0T3B0aW9uIixob3N0Ontyb2xlOiJvcHRpb24iLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIltjbGFzcy5tYXQtc2VsZWN0ZWRdIjoic2VsZWN0ZWQiLCJbY2xhc3MubWF0LW9wdGlvbi1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIltjbGFzcy5tYXQtYWN0aXZlXSI6ImFjdGl2ZSIsIltpZF0iOiJpZCIsIlthdHRyLmFyaWEtc2VsZWN0ZWRdIjoiX2dldEFyaWFTZWxlY3RlZCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2NsYXNzLm1hdC1vcHRpb24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCIoY2xpY2spIjoiX3NlbGVjdFZpYUludGVyYWN0aW9uKCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIixjbGFzczoibWF0LW9wdGlvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxtYXQtcHNldWRvLWNoZWNrYm94ICpuZ0lmPSJtdWx0aXBsZSIgY2xhc3M9Im1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IlxuICAgIFtzdGF0ZV09InNlbGVjdGVkID8gXCdjaGVja2VkXCcgOiBcJ3VuY2hlY2tlZFwnIiBbZGlzYWJsZWRdPSJkaXNhYmxlZCI+PC9tYXQtcHNldWRvLWNoZWNrYm94PlxuXG48c3BhbiBjbGFzcz0ibWF0LW9wdGlvbi10ZXh0Ij48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPlxuXG5ceDNjIS0tIFNlZSBhMTF5IG5vdGVzIGluc2lkZSBvcHRncm91cC50cyBmb3IgY29udGV4dCBiZWhpbmQgdGhpcyBlbGVtZW50LiAtLVx4M2VcbjxzcGFuIGNsYXNzPSJjZGstdmlzdWFsbHktaGlkZGVuIiAqbmdJZj0iZ3JvdXAgJiYgZ3JvdXAuX2luZXJ0Ij4oe3sgZ3JvdXAubGFiZWwgfX0pPC9zcGFuPlxuXG48ZGl2IGNsYXNzPSJtYXQtb3B0aW9uLXJpcHBsZSIgbWF0LXJpcHBsZVxuICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIlxuICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlZCB8fCBkaXNhYmxlUmlwcGxlIj5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxzdHlsZXM6WyIubWF0LW9wdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzttYXgtd2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LW9wdGlvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtb3B0aW9ue3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGlvbiAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDozMnB4fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDozMnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb257bWFyZ2luOjAgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtib3JkZXI6c29saWQgMXB4IGN1cnJlbnRDb2xvcjttYXJnaW46MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9uW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17b3BhY2l0eTouNX0ubWF0LW9wdGlvbi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtb3B0aW9uIC5tYXQtb3B0aW9uLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3h7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUkhdfV19LHt0eXBlOklILGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt6SF19XX1dfSksbnVsbCk7Y2xhc3MgVUh7fVVILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVSCl9LFVILsm1bW9kPWFvKHt0eXBlOlVIfSksVUguybVpbmo9dm4oe2ltcG9ydHM6W1tTSCxXTSxYSSxFSF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVSCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1NILFdNLFhJLEVIXSxleHBvcnRzOltCSCxJSF0sZGVjbGFyYXRpb25zOltCSCxJSF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhVSCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0JILElIXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltTSCxXTSxYSSxFSF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQkgsSUhdfX0pO2NvbnN0IEdIPVsibWF0LWJ1dHRvbiIsIiJdLFdIPVsiKiJdLFlIPSIubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH19Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGV9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSl9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcmFpc2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtcmFpc2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcmFpc2VkLWJ1dHRvbnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdHJva2VkLWJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDozNHB4fS5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4fS5tYXQtZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjE2cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtbWluaS1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LW1pbmktZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1taW5pLWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LW1pbmktZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzo4cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtaWNvbi1idXR0b257cGFkZGluZzowO21pbi13aWR0aDowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtaWNvbi1idXR0b24gaSwubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntsaW5lLWhlaWdodDoyNHB4fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXR9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1idXR0b24tcmlwcGxlLXJvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6MX0ubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mbGF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1yYWlzZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZTppbmhlcml0O3dpZHRoOjIuNWVtO2hlaWdodDoyLjVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mbGF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmFpc2VkLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaWNvbi1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZhYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWluaS1mYWJ7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGstcHJvZ3JhbS1mb2N1c2Vke291dGxpbmU6c29saWQgM3B4fVxuIixxSD1bIm1hdC1idXR0b24iLCJtYXQtZmxhdC1idXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIm1hdC1taW5pLWZhYiIsIm1hdC1mYWIiXSxaSD1KSShLSShRSShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKTtjbGFzcyBYSCBleHRlbmRzIFpIe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9ZSx0aGlzLl9hbmltYXRpb25Nb2RlPW4sdGhpcy5pc1JvdW5kQnV0dG9uPXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKCJtYXQtZmFiIiwibWF0LW1pbmktZmFiIiksdGhpcy5pc0ljb25CdXR0b249dGhpcy5faGFzSG9zdEF0dHJpYnV0ZXMoIm1hdC1pY29uLWJ1dHRvbiIpO2Zvcihjb25zdCB0IG9mIHFIKXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKHQpJiZ0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQodCk7dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hdC1idXR0b24tYmFzZSIpLHRoaXMuaXNSb3VuZEJ1dHRvbiYmKHRoaXMuY29sb3I9ImFjY2VudCIpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWZvY3VzKHQsZSl7dD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSx0LGUpOnRoaXMuX2dldEhvc3RFbGVtZW50KCkuZm9jdXMoZSl9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1faXNSaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVSaXBwbGV8fHRoaXMuZGlzYWJsZWR9X2hhc0hvc3RBdHRyaWJ1dGVzKC4uLnQpe3JldHVybiB0LnNvbWUoKHQ9PnRoaXMuX2dldEhvc3RFbGVtZW50KCkuaGFzQXR0cmlidXRlKHQpKSl9fVhILsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYSCkoU20oaGcpLFNtKFNJKSxTbShWUCw4KSl9LFhILsm1Y21wPXRvKHt0eXBlOlhILHNlbGVjdG9yczpbWyJidXR0b24iLCJtYXQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWljb24tYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtZmFiIiwiIl0sWyJidXR0b24iLCJtYXQtbWluaS1mYWIiLCIiXSxbImJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWZsYXQtYnV0dG9uIiwiIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChrSCw1KSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLnJpcHBsZT10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihqcCgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLHB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdEJ1dHRvbiJdLGZlYXR1cmVzOlt4cF0sYXR0cnM6R0gsbmdDb250ZW50U2VsZWN0b3JzOldILGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWzEsIm1hdC1idXR0b24td3JhcHBlciJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbMSwibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFJtKDAsInNwYW4iLDApLFhtKDEpLEFtKCksVG0oMiwic3BhbiIsMSksVG0oMywic3BhbiIsMikpLDImZSYmKHJjKDIpLHB1KCJtYXQtYnV0dG9uLXJpcHBsZS1yb3VuZCIsbi5pc1JvdW5kQnV0dG9ufHxuLmlzSWNvbkJ1dHRvbiksRG0oIm1hdFJpcHBsZURpc2FibGVkIixuLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVDZW50ZXJlZCIsbi5pc0ljb25CdXR0b24pKCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSl9LGRpcmVjdGl2ZXM6W2tIXSxzdHlsZXM6W1lIXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxYSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpTSX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dLFhILnByb3BEZWNvcmF0b3JzPXtyaXBwbGU6W3t0eXBlOlphLGFyZ3M6W2tIXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFhILFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImJ1dHRvblttYXQtYnV0dG9uXSwgYnV0dG9uW21hdC1yYWlzZWQtYnV0dG9uXSwgYnV0dG9uW21hdC1pY29uLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mYWJdLCBidXR0b25bbWF0LW1pbmktZmFiXSwgYnV0dG9uW21hdC1zdHJva2VkLWJ1dHRvbl0sXG4gICAgICAgICAgICAgYnV0dG9uW21hdC1mbGF0LWJ1dHRvbl0iLGV4cG9ydEFzOiJtYXRCdXR0b24iLGhvc3Q6eyJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6JzxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG48c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1idXR0b24tcmlwcGxlIlxuICAgICAgW2NsYXNzLm1hdC1idXR0b24tcmlwcGxlLXJvdW5kXT0iaXNSb3VuZEJ1dHRvbiB8fCBpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIlxuICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0iaXNJY29uQnV0dG9uIlxuICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+PC9zcGFuPlxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSI+PC9zcGFuPlxuJyxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciJdLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpTSX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse3JpcHBsZTpbe3R5cGU6WmEsYXJnczpba0hdfV19KTtjbGFzcyBLSCBleHRlbmRzIFhIe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcihlLHQsbil9X2hhbHREaXNhYmxlZEV2ZW50cyh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX1LSC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S0gpKFNtKFNJKSxTbShoZyksU20oVlAsOCkpfSxLSC7JtWNtcD10byh7dHlwZTpLSCxzZWxlY3RvcnM6W1siYSIsIm1hdC1idXR0b24iLCIiXSxbImEiLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mYWIiLCIiXSxbImEiLCJtYXQtbWluaS1mYWIiLCIiXSxbImEiLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImEiLCJtYXQtZmxhdC1idXR0b24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFsdERpc2FibGVkRXZlbnRzKGUpfSkpLDImZSYmKGpwKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD8tMTpuLnRhYkluZGV4fHwwKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpLHB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixuLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uIiwibWF0QW5jaG9yIl0sZmVhdHVyZXM6W3hwXSxhdHRyczpHSCxuZ0NvbnRlbnRTZWxlY3RvcnM6V0gsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFptKCksUm0oMCwic3BhbiIsMCksWG0oMSksQW0oKSxUbSgyLCJzcGFuIiwxKSxUbSgzLCJzcGFuIiwyKSksMiZlJiYocmMoMikscHUoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixuLmlzUm91bmRCdXR0b258fG4uaXNJY29uQnV0dG9uKSxEbSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2lzUmlwcGxlRGlzYWJsZWQoKSkoIm1hdFJpcHBsZUNlbnRlcmVkIixuLmlzSWNvbkJ1dHRvbikoIm1hdFJpcHBsZVRyaWdnZXIiLG4uX2dldEhvc3RFbGVtZW50KCkpKX0sZGlyZWN0aXZlczpba0hdLHN0eWxlczpbWUhdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLEtILmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U0l9LHt0eXBlOmhnfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sS0gucHJvcERlY29yYXRvcnM9e3RhYkluZGV4Olt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEtILFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImFbbWF0LWJ1dHRvbl0sIGFbbWF0LXJhaXNlZC1idXR0b25dLCBhW21hdC1pY29uLWJ1dHRvbl0sIGFbbWF0LWZhYl0sXG4gICAgICAgICAgICAgYVttYXQtbWluaS1mYWJdLCBhW21hdC1zdHJva2VkLWJ1dHRvbl0sIGFbbWF0LWZsYXQtYnV0dG9uXSIsZXhwb3J0QXM6Im1hdEJ1dHRvbiwgbWF0QW5jaG9yIixob3N0OnsiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyAtMSA6ICh0YWJJbmRleCB8fCAwKSIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCIoY2xpY2spIjoiX2hhbHREaXNhYmxlZEV2ZW50cygkZXZlbnQpIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0saW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwiY29sb3IiXSx0ZW1wbGF0ZTonPHNwYW4gY2xhc3M9Im1hdC1idXR0b24td3JhcHBlciI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbjxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWJ1dHRvbi1yaXBwbGUiXG4gICAgICBbY2xhc3MubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmRdPSJpc1JvdW5kQnV0dG9uIHx8IGlzSWNvbkJ1dHRvbiJcbiAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJpc0ljb25CdXR0b24iXG4gICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIj48L3NwYW4+XG48c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Ij48L3NwYW4+XG4nLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHN0eWxlczpbIi5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH0ubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbjpob3Zlcjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfX0ubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uLC5tYXQtc3Ryb2tlZC1idXR0b24sLm1hdC1mbGF0LWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKX0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1yYWlzZWQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1yYWlzZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LXJhaXNlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1yYWlzZWQtYnV0dG9ue3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0cm9rZWQtYnV0dG9ue2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO3BhZGRpbmc6MCAxNXB4O2xpbmUtaGVpZ2h0OjM0cHh9Lm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHh9Lm1hdC1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NTZweDtoZWlnaHQ6NTZweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6MTZweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1taW5pLWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtbWluaS1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LW1pbmktZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtbWluaS1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjhweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1pY29uLWJ1dHRvbntwYWRkaW5nOjA7bWluLXdpZHRoOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtmbGV4LXNocmluazowO2xpbmUtaGVpZ2h0OjQwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1pY29uLWJ1dHRvbiBpLC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RyYW5zaXRpb246bm9uZX0ubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmR7Ym9yZGVyLXJhZGl1czo1MCU7ei1pbmRleDoxfS5tYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZsYXQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LXJhaXNlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXI+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOmluaGVyaXQ7d2lkdGg6Mi41ZW07aGVpZ2h0OjIuNWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZsYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yYWlzZWQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pY29uLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmFiLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1taW5pLWZhYntvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1wcm9ncmFtLWZvY3VzZWR7b3V0bGluZTpzb2xpZCAzcHh9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNJfSx7dHlwZTpoZ30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse3RhYkluZGV4Olt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBKSHt9SkguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEpIKX0sSkguybVtb2Q9YW8oe3R5cGU6Skh9KSxKSC7JtWluaj12bih7aW1wb3J0czpbW1NILFhJXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEpILFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbU0gsWEldLGV4cG9ydHM6W1hILEtILFhJXSxkZWNsYXJhdGlvbnM6W1hILEtIXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEpILHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bWEgsS0hdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1NILFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltYSCxLSCxYSV19fSk7Y2xhc3MgUUh7fWZ1bmN0aW9uICRIKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25uZWN0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB0RiBleHRlbmRzIFFIe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZGF0YT10fWNvbm5lY3QoKXtyZXR1cm4gTnQodGhpcy5fZGF0YSk/dGhpcy5fZGF0YTpFdCh0aGlzLl9kYXRhKX1kaXNjb25uZWN0KCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGVGe2FwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsbyxhKT0+e2xldCByLHM7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBpPW4odCxvLGEpO3I9ZS5jcmVhdGVFbWJlZGRlZFZpZXcoaS50ZW1wbGF0ZVJlZixpLmNvbnRleHQsaS5pbmRleCkscz0xfWVsc2UgbnVsbD09YT8oZS5yZW1vdmUobykscz0zKToocj1lLmdldChvKSxlLm1vdmUocixhKSxzPTIpO2kmJmkoe2NvbnRleHQ6bnVsbD09cj92b2lkIDA6ci5jb250ZXh0LG9wZXJhdGlvbjpzLHJlY29yZDp0fSl9KSl9ZGV0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbkZ7Y29uc3RydWN0b3IoKXt0aGlzLnZpZXdDYWNoZVNpemU9MjAsdGhpcy5fdmlld0NhY2hlPVtdfWFwcGx5Q2hhbmdlcyh0LGUsbixvLGkpe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsYSxyKT0+e2xldCBzLGw7bnVsbD09dC5wcmV2aW91c0luZGV4PyhzPXRoaXMuX2luc2VydFZpZXcoKCgpPT5uKHQsYSxyKSkscixlLG8odCkpLGw9cz8xOjApOm51bGw9PXI/KHRoaXMuX2RldGFjaEFuZENhY2hlVmlldyhhLGUpLGw9Myk6KHM9dGhpcy5fbW92ZVZpZXcoYSxyLGUsbyh0KSksbD0yKSxpJiZpKHtjb250ZXh0Om51bGw9PXM/dm9pZCAwOnMuY29udGV4dCxvcGVyYXRpb246bCxyZWNvcmQ6dH0pfSkpfWRldGFjaCgpe2Zvcihjb25zdCB0IG9mIHRoaXMuX3ZpZXdDYWNoZSl0LmRlc3Ryb3koKTt0aGlzLl92aWV3Q2FjaGU9W119X2luc2VydFZpZXcodCxlLG4sbyl7Y29uc3QgaT10aGlzLl9pbnNlcnRWaWV3RnJvbUNhY2hlKGUsbik7aWYoaSlyZXR1cm4gdm9pZChpLmNvbnRleHQuJGltcGxpY2l0PW8pO2NvbnN0IGE9dCgpO3JldHVybiBuLmNyZWF0ZUVtYmVkZGVkVmlldyhhLnRlbXBsYXRlUmVmLGEuY29udGV4dCxhLmluZGV4KX1fZGV0YWNoQW5kQ2FjaGVWaWV3KHQsZSl7Y29uc3Qgbj1lLmRldGFjaCh0KTt0aGlzLl9tYXliZUNhY2hlVmlldyhuLGUpfV9tb3ZlVmlldyh0LGUsbixvKXtjb25zdCBpPW4uZ2V0KHQpO3JldHVybiBuLm1vdmUoaSxlKSxpLmNvbnRleHQuJGltcGxpY2l0PW8saX1fbWF5YmVDYWNoZVZpZXcodCxlKXtpZih0aGlzLl92aWV3Q2FjaGUubGVuZ3RoPHRoaXMudmlld0NhY2hlU2l6ZSl0aGlzLl92aWV3Q2FjaGUucHVzaCh0KTtlbHNle2NvbnN0IG49ZS5pbmRleE9mKHQpOy0xPT09bj90LmRlc3Ryb3koKTplLnJlbW92ZShuKX19X2luc2VydFZpZXdGcm9tQ2FjaGUodCxlKXtjb25zdCBuPXRoaXMuX3ZpZXdDYWNoZS5wb3AoKTtyZXR1cm4gbiYmZS5pbnNlcnQobix0KSxufHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgb0Z7Y29uc3RydWN0b3IodD0hMSxlLG49ITApe3RoaXMuX211bHRpcGxlPXQsdGhpcy5fZW1pdENoYW5nZXM9bix0aGlzLl9zZWxlY3Rpb249bmV3IFNldCx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0PVtdLHRoaXMuX3NlbGVjdGVkVG9FbWl0PVtdLHRoaXMuY2hhbmdlZD1uZXcgSSxlJiZlLmxlbmd0aCYmKHQ/ZS5mb3JFYWNoKCh0PT50aGlzLl9tYXJrU2VsZWN0ZWQodCkpKTp0aGlzLl9tYXJrU2VsZWN0ZWQoZVswXSksdGhpcy5fc2VsZWN0ZWRUb0VtaXQubGVuZ3RoPTApfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPUFycmF5LmZyb20odGhpcy5fc2VsZWN0aW9uLnZhbHVlcygpKSksdGhpcy5fc2VsZWN0ZWR9c2VsZWN0KC4uLnQpe3RoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KSx0LmZvckVhY2goKHQ9PnRoaXMuX21hcmtTZWxlY3RlZCh0KSkpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfWRlc2VsZWN0KC4uLnQpe3RoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KSx0LmZvckVhY2goKHQ9PnRoaXMuX3VubWFya1NlbGVjdGVkKHQpKSksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCl9dG9nZ2xlKHQpe3RoaXMuaXNTZWxlY3RlZCh0KT90aGlzLmRlc2VsZWN0KHQpOnRoaXMuc2VsZWN0KHQpfWNsZWFyKCl7dGhpcy5fdW5tYXJrQWxsKCksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCl9aXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uLmhhcyh0KX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLl9zZWxlY3Rpb24uc2l6ZX1oYXNWYWx1ZSgpe3JldHVybiF0aGlzLmlzRW1wdHkoKX1zb3J0KHQpe3RoaXMuX211bHRpcGxlJiZ0aGlzLnNlbGVjdGVkJiZ0aGlzLl9zZWxlY3RlZC5zb3J0KHQpfWlzTXVsdGlwbGVTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX3NlbGVjdGVkPW51bGwsKHRoaXMuX3NlbGVjdGVkVG9FbWl0Lmxlbmd0aHx8dGhpcy5fZGVzZWxlY3RlZFRvRW1pdC5sZW5ndGgpJiYodGhpcy5jaGFuZ2VkLm5leHQoe3NvdXJjZTp0aGlzLGFkZGVkOnRoaXMuX3NlbGVjdGVkVG9FbWl0LHJlbW92ZWQ6dGhpcy5fZGVzZWxlY3RlZFRvRW1pdH0pLHRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQ9W10sdGhpcy5fc2VsZWN0ZWRUb0VtaXQ9W10pfV9tYXJrU2VsZWN0ZWQodCl7dGhpcy5pc1NlbGVjdGVkKHQpfHwodGhpcy5fbXVsdGlwbGV8fHRoaXMuX3VubWFya0FsbCgpLHRoaXMuX3NlbGVjdGlvbi5hZGQodCksdGhpcy5fZW1pdENoYW5nZXMmJnRoaXMuX3NlbGVjdGVkVG9FbWl0LnB1c2godCkpfV91bm1hcmtTZWxlY3RlZCh0KXt0aGlzLmlzU2VsZWN0ZWQodCkmJih0aGlzLl9zZWxlY3Rpb24uZGVsZXRlKHQpLHRoaXMuX2VtaXRDaGFuZ2VzJiZ0aGlzLl9kZXNlbGVjdGVkVG9FbWl0LnB1c2godCkpfV91bm1hcmtBbGwoKXt0aGlzLmlzRW1wdHkoKXx8dGhpcy5fc2VsZWN0aW9uLmZvckVhY2goKHQ9PnRoaXMuX3VubWFya1NlbGVjdGVkKHQpKSl9X3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KXtpZih0Lmxlbmd0aD4xJiYhdGhpcy5fbXVsdGlwbGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKCl7cmV0dXJuIEVycm9yKCJDYW5ub3QgcGFzcyBtdWx0aXBsZSB2YWx1ZXMgaW50byBTZWxlY3Rpb25Nb2RlbCB3aXRoIHNpbmdsZS12YWx1ZSBtb2RlLiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fWNsYXNzIGlGe2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXJzPVtdfW5vdGlmeSh0LGUpe2ZvcihsZXQgbiBvZiB0aGlzLl9saXN0ZW5lcnMpbih0LGUpfWxpc3Rlbih0KXtyZXR1cm4gdGhpcy5fbGlzdGVuZXJzLnB1c2godCksKCk9Pnt0aGlzLl9saXN0ZW5lcnM9dGhpcy5fbGlzdGVuZXJzLmZpbHRlcigoZT0+dCE9PWUpKX19bmdPbkRlc3Ryb3koKXt0aGlzLl9saXN0ZW5lcnM9W119fWlGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxpRil9LGlGLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBpRn0sdG9rZW46aUYscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGlGLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYUY9bmV3IEdhKCJfVmlld1JlcGVhdGVyIiksckY9WyJjb250ZW50V3JhcHBlciJdLHNGPW5ldyBHYSgiVklSVFVBTF9TQ1JPTExfU1RSQVRFR1kiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGxGe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBJLHRoaXMuc2Nyb2xsZWRJbmRleENoYW5nZT10aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLnBpcGUoTWUoKSksdGhpcy5fdmlld3BvcnQ9bnVsbCx0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PWUsdGhpcy5fbWF4QnVmZmVyUHg9bn1hdHRhY2godCl7dGhpcy5fdmlld3BvcnQ9dCx0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfWRldGFjaCgpe3RoaXMuX3Njcm9sbGVkSW5kZXhDaGFuZ2UuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydD1udWxsfXVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHQsZSxuKXtpZihuPGUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ0RLIHZpcnR1YWwgc2Nyb2xsOiBtYXhCdWZmZXJQeCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW5CdWZmZXJQeCIpO3RoaXMuX2l0ZW1TaXplPXQsdGhpcy5fbWluQnVmZmVyUHg9ZSx0aGlzLl9tYXhCdWZmZXJQeD1uLHRoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50U2Nyb2xsZWQoKXt0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25EYXRhTGVuZ3RoQ2hhbmdlZCgpe3RoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50UmVuZGVyZWQoKXt9b25SZW5kZXJlZE9mZnNldENoYW5nZWQoKXt9c2Nyb2xsVG9JbmRleCh0LGUpe3RoaXMuX3ZpZXdwb3J0JiZ0aGlzLl92aWV3cG9ydC5zY3JvbGxUb09mZnNldCh0KnRoaXMuX2l0ZW1TaXplLGUpfV91cGRhdGVUb3RhbENvbnRlbnRTaXplKCl7dGhpcy5fdmlld3BvcnQmJnRoaXMuX3ZpZXdwb3J0LnNldFRvdGFsQ29udGVudFNpemUodGhpcy5fdmlld3BvcnQuZ2V0RGF0YUxlbmd0aCgpKnRoaXMuX2l0ZW1TaXplKX1fdXBkYXRlUmVuZGVyZWRSYW5nZSgpe2lmKCF0aGlzLl92aWV3cG9ydClyZXR1cm47Y29uc3QgdD10aGlzLl92aWV3cG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksZT17c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9LG49dGhpcy5fdmlld3BvcnQuZ2V0Vmlld3BvcnRTaXplKCksbz10aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCk7bGV0IGk9dGhpcy5fdmlld3BvcnQubWVhc3VyZVNjcm9sbE9mZnNldCgpLGE9dGhpcy5faXRlbVNpemU+MD9pL3RoaXMuX2l0ZW1TaXplOjA7aWYoZS5lbmQ+byl7Y29uc3QgdD1NYXRoLmNlaWwobi90aGlzLl9pdGVtU2l6ZSkscj1NYXRoLm1heCgwLE1hdGgubWluKGEsby10KSk7YSE9ciYmKGE9cixpPXIqdGhpcy5faXRlbVNpemUsZS5zdGFydD1NYXRoLmZsb29yKGEpKSxlLmVuZD1NYXRoLm1heCgwLE1hdGgubWluKG8sZS5zdGFydCt0KSl9Y29uc3Qgcj1pLWUuc3RhcnQqdGhpcy5faXRlbVNpemU7aWYocjx0aGlzLl9taW5CdWZmZXJQeCYmMCE9ZS5zdGFydCl7Y29uc3QgdD1NYXRoLmNlaWwoKHRoaXMuX21heEJ1ZmZlclB4LXIpL3RoaXMuX2l0ZW1TaXplKTtlLnN0YXJ0PU1hdGgubWF4KDAsZS5zdGFydC10KSxlLmVuZD1NYXRoLm1pbihvLE1hdGguY2VpbChhKyhuK3RoaXMuX21pbkJ1ZmZlclB4KS90aGlzLl9pdGVtU2l6ZSkpfWVsc2V7Y29uc3QgdD1lLmVuZCp0aGlzLl9pdGVtU2l6ZS0oaStuKTtpZih0PHRoaXMuX21pbkJ1ZmZlclB4JiZlLmVuZCE9byl7Y29uc3Qgbj1NYXRoLmNlaWwoKHRoaXMuX21heEJ1ZmZlclB4LXQpL3RoaXMuX2l0ZW1TaXplKTtuPjAmJihlLmVuZD1NYXRoLm1pbihvLGUuZW5kK24pLGUuc3RhcnQ9TWF0aC5tYXgoMCxNYXRoLmZsb29yKGEtdGhpcy5fbWluQnVmZmVyUHgvdGhpcy5faXRlbVNpemUpKSl9fXRoaXMuX3ZpZXdwb3J0LnNldFJlbmRlcmVkUmFuZ2UoZSksdGhpcy5fdmlld3BvcnQuc2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHRoaXMuX2l0ZW1TaXplKmUuc3RhcnQpLHRoaXMuX3Njcm9sbGVkSW5kZXhDaGFuZ2UubmV4dChNYXRoLmZsb29yKGEpKX19ZnVuY3Rpb24gY0YodCl7cmV0dXJuIHQuX3Njcm9sbFN0cmF0ZWd5fWNsYXNzIGRGe2NvbnN0cnVjdG9yKCl7dGhpcy5faXRlbVNpemU9MjAsdGhpcy5fbWluQnVmZmVyUHg9MTAwLHRoaXMuX21heEJ1ZmZlclB4PTIwMCx0aGlzLl9zY3JvbGxTdHJhdGVneT1uZXcgbEYodGhpcy5pdGVtU2l6ZSx0aGlzLm1pbkJ1ZmZlclB4LHRoaXMubWF4QnVmZmVyUHgpfWdldCBpdGVtU2l6ZSgpe3JldHVybiB0aGlzLl9pdGVtU2l6ZX1zZXQgaXRlbVNpemUodCl7dGhpcy5faXRlbVNpemU9X3oodCl9Z2V0IG1pbkJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21pbkJ1ZmZlclB4fXNldCBtaW5CdWZmZXJQeCh0KXt0aGlzLl9taW5CdWZmZXJQeD1feih0KX1nZXQgbWF4QnVmZmVyUHgoKXtyZXR1cm4gdGhpcy5fbWF4QnVmZmVyUHh9c2V0IG1heEJ1ZmZlclB4KHQpe3RoaXMuX21heEJ1ZmZlclB4PV96KHQpfW5nT25DaGFuZ2VzKCl7dGhpcy5fc2Nyb2xsU3RyYXRlZ3kudXBkYXRlSXRlbUFuZEJ1ZmZlclNpemUodGhpcy5pdGVtU2l6ZSx0aGlzLm1pbkJ1ZmZlclB4LHRoaXMubWF4QnVmZmVyUHgpfX1kRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZEYpfSxkRi7JtWRpcj1sbyh7dHlwZTpkRixzZWxlY3RvcnM6W1siY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwiaXRlbVNpemUiLCIiXV0saW5wdXRzOntpdGVtU2l6ZToiaXRlbVNpemUiLG1pbkJ1ZmZlclB4OiJtaW5CdWZmZXJQeCIsbWF4QnVmZmVyUHg6Im1heEJ1ZmZlclB4In0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpzRix1c2VGYWN0b3J5OmNGLGRlcHM6W3FlKCgoKT0+ZEYpKV19XSksQm9dfSksZEYucHJvcERlY29yYXRvcnM9e2l0ZW1TaXplOlt7dHlwZTp4eX1dLG1pbkJ1ZmZlclB4Olt7dHlwZTp4eX1dLG1heEJ1ZmZlclB4Olt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGRGLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFtpdGVtU2l6ZV0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6c0YsdXNlRmFjdG9yeTpjRixkZXBzOltxZSgoKCk9PmRGKSldfV19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2l0ZW1TaXplOlt7dHlwZTp4eX1dLG1pbkJ1ZmZlclB4Olt7dHlwZTp4eX1dLG1heEJ1ZmZlclB4Olt7dHlwZTp4eX1dfSk7Y2xhc3MgcEZ7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX25nWm9uZT10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fc2Nyb2xsZWQ9bmV3IEksdGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fc2Nyb2xsZWRDb3VudD0wLHRoaXMuc2Nyb2xsQ29udGFpbmVycz1uZXcgTWFwLHRoaXMuX2RvY3VtZW50PW59cmVnaXN0ZXIodCl7dGhpcy5zY3JvbGxDb250YWluZXJzLmhhcyh0KXx8dGhpcy5zY3JvbGxDb250YWluZXJzLnNldCh0LHQuZWxlbWVudFNjcm9sbGVkKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCh0KSkpKX1kZXJlZ2lzdGVyKHQpe2NvbnN0IGU9dGhpcy5zY3JvbGxDb250YWluZXJzLmdldCh0KTtlJiYoZS51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsQ29udGFpbmVycy5kZWxldGUodCkpfXNjcm9sbGVkKHQ9MjApe3JldHVybiB0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXI/bmV3IEQoKGU9Pnt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb258fHRoaXMuX2FkZEdsb2JhbExpc3RlbmVyKCk7Y29uc3Qgbj10PjA/dGhpcy5fc2Nyb2xsZWQucGlwZShkZSh0KSkuc3Vic2NyaWJlKGUpOnRoaXMuX3Njcm9sbGVkLnN1YnNjcmliZShlKTtyZXR1cm4gdGhpcy5fc2Nyb2xsZWRDb3VudCsrLCgpPT57bi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbGVkQ291bnQtLSx0aGlzLl9zY3JvbGxlZENvdW50fHx0aGlzLl9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpfX0pKTpFdCgpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKSx0aGlzLnNjcm9sbENvbnRhaW5lcnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuZGVyZWdpc3RlcihlKSkpLHRoaXMuX3Njcm9sbGVkLmNvbXBsZXRlKCl9YW5jZXN0b3JTY3JvbGxlZCh0LGUpe2NvbnN0IG49dGhpcy5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCk7cmV0dXJuIHRoaXMuc2Nyb2xsZWQoZSkucGlwZShjZSgodD0+IXR8fG4uaW5kZXhPZih0KT4tMSkpKX1nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCl7Y29uc3QgZT1bXTtyZXR1cm4gdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKChuLG8pPT57dGhpcy5fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudChvLHQpJiZlLnB1c2gobyl9KSksZX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQodCxlKXtsZXQgbj14eihlKSxvPXQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7ZG97aWYobj09bylyZXR1cm4hMH13aGlsZShuPW4ucGFyZW50RWxlbWVudCk7cmV0dXJuITF9X2FkZEdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pm9lKHRoaXMuX2dldFdpbmRvdygpLmRvY3VtZW50LCJzY3JvbGwiKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KCkpKSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpe3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbiYmKHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsKX19cEYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBGKSh2cihhXyksdnIod3opLHZyKFpfLDgpKX0scEYuybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHBGKHZyKGFfKSx2cih3eiksdnIoWl8sOCkpfSx0b2tlbjpwRixwcm92aWRlZEluOiJyb290In0pLHBGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwRixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG1Ge2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuZWxlbWVudFJlZj10LHRoaXMuc2Nyb2xsRGlzcGF0Y2hlcj1lLHRoaXMubmdab25lPW4sdGhpcy5kaXI9byx0aGlzLl9kZXN0cm95ZWQ9bmV3IEksdGhpcy5fZWxlbWVudFNjcm9sbGVkPW5ldyBEKCh0PT50aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pm9lKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJzY3JvbGwiKS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSh0KSkpKSl9bmdPbkluaXQoKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIucmVnaXN0ZXIodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfWVsZW1lbnRTY3JvbGxlZCgpe3JldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWR9Z2V0RWxlbWVudFJlZigpe3JldHVybiB0aGlzLmVsZW1lbnRSZWZ9c2Nyb2xsVG8odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7bnVsbD09dC5sZWZ0JiYodC5sZWZ0PW4/dC5lbmQ6dC5zdGFydCksbnVsbD09dC5yaWdodCYmKHQucmlnaHQ9bj90LnN0YXJ0OnQuZW5kKSxudWxsIT10LmJvdHRvbSYmKHQudG9wPWUuc2Nyb2xsSGVpZ2h0LWUuY2xpZW50SGVpZ2h0LXQuYm90dG9tKSxuJiYwIT1JeigpPyhudWxsIT10LmxlZnQmJih0LnJpZ2h0PWUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aC10LmxlZnQpLDI9PUl6KCk/dC5sZWZ0PXQucmlnaHQ6MT09SXooKSYmKHQubGVmdD10LnJpZ2h0Py10LnJpZ2h0OnQucmlnaHQpKTpudWxsIT10LnJpZ2h0JiYodC5sZWZ0PWUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aC10LnJpZ2h0KSx0aGlzLl9hcHBseVNjcm9sbFRvT3B0aW9ucyh0KX1fYXBwbHlTY3JvbGxUb09wdGlvbnModCl7Y29uc3QgZT10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt6eigpP2Uuc2Nyb2xsVG8odCk6KG51bGwhPXQudG9wJiYoZS5zY3JvbGxUb3A9dC50b3ApLG51bGwhPXQubGVmdCYmKGUuc2Nyb2xsTGVmdD10LmxlZnQpKX1tZWFzdXJlU2Nyb2xsT2Zmc2V0KHQpe2NvbnN0IGU9ImxlZnQiLG49InJpZ2h0IixvPXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKCJ0b3AiPT10KXJldHVybiBvLnNjcm9sbFRvcDtpZigiYm90dG9tIj09dClyZXR1cm4gby5zY3JvbGxIZWlnaHQtby5jbGllbnRIZWlnaHQtby5zY3JvbGxUb3A7Y29uc3QgaT10aGlzLmRpciYmInJ0bCI9PXRoaXMuZGlyLnZhbHVlO3JldHVybiJzdGFydCI9PXQ/dD1pP246ZToiZW5kIj09dCYmKHQ9aT9lOm4pLGkmJjI9PUl6KCk/dD09ZT9vLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgtby5zY3JvbGxMZWZ0Om8uc2Nyb2xsTGVmdDppJiYxPT1JeigpP3Q9PWU/by5zY3JvbGxMZWZ0K28uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aDotby5zY3JvbGxMZWZ0OnQ9PWU/by5zY3JvbGxMZWZ0Om8uc2Nyb2xsV2lkdGgtby5jbGllbnRXaWR0aC1vLnNjcm9sbExlZnR9fW1GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtRikoU20oaGcpLFNtKHBGKSxTbShhXyksU20oSEksOCkpfSxtRi7JtWRpcj1sbyh7dHlwZTptRixzZWxlY3RvcnM6W1siIiwiY2RrLXNjcm9sbGFibGUiLCIiXSxbIiIsImNka1Njcm9sbGFibGUiLCIiXV19KSxtRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpwRn0se3R5cGU6YV99LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG1GLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltjZGstc2Nyb2xsYWJsZV0sIFtjZGtTY3JvbGxhYmxlXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6cEZ9LHt0eXBlOmFffSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV19KSxudWxsKTtjbGFzcyB1Rntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9jaGFuZ2U9bmV3IEksdGhpcy5fY2hhbmdlTGlzdGVuZXI9dD0+e3RoaXMuX2NoYW5nZS5uZXh0KHQpfSx0aGlzLl9kb2N1bWVudD1uLGUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57aWYodC5pc0Jyb3dzZXIpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIix0aGlzLl9jaGFuZ2VMaXN0ZW5lcil9dGhpcy5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT50aGlzLl92aWV3cG9ydFNpemU9bnVsbCkpfSkpfW5nT25EZXN0cm95KCl7aWYodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuX2NoYW5nZS5jb21wbGV0ZSgpfWdldFZpZXdwb3J0U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0U2l6ZXx8dGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7Y29uc3QgdD17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXplPW51bGwpLHR9Z2V0Vmlld3BvcnRSZWN0KCl7Y29uc3QgdD10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm57dG9wOnQudG9wLGxlZnQ6dC5sZWZ0LGJvdHRvbTp0LnRvcCtuLHJpZ2h0OnQubGVmdCtlLGhlaWdodDpuLHdpZHRoOmV9fWdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybnt0b3A6MCxsZWZ0OjB9O2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQsZT10aGlzLl9nZXRXaW5kb3coKSxuPXQuZG9jdW1lbnRFbGVtZW50LG89bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57dG9wOi1vLnRvcHx8dC5ib2R5LnNjcm9sbFRvcHx8ZS5zY3JvbGxZfHxuLnNjcm9sbFRvcHx8MCxsZWZ0Oi1vLmxlZnR8fHQuYm9keS5zY3JvbGxMZWZ0fHxlLnNjcm9sbFh8fG4uc2Nyb2xsTGVmdHx8MH19Y2hhbmdlKHQ9MjApe3JldHVybiB0PjA/dGhpcy5fY2hhbmdlLnBpcGUoZGUodCkpOnRoaXMuX2NoYW5nZX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3VwZGF0ZVZpZXdwb3J0U2l6ZSgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dGhpcy5fdmlld3BvcnRTaXplPXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj97d2lkdGg6dC5pbm5lcldpZHRoLGhlaWdodDp0LmlubmVySGVpZ2h0fTp7d2lkdGg6MCxoZWlnaHQ6MH19fXVGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx1RikodnIod3opLHZyKGFfKSx2cihaXyw4KSl9LHVGLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB1Rih2cih3eiksdnIoYV8pLHZyKFpfLDgpKX0sdG9rZW46dUYscHJvdmlkZWRJbjoicm9vdCJ9KSx1Ri5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnd6fSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodUYsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnd6fSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Y29uc3QgZkY9InVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/YXQ6JDtjbGFzcyBnRiBleHRlbmRzIG1Ge2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe2lmKHN1cGVyKHQsYSxuLGkpLHRoaXMuZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9byx0aGlzLl9kZXRhY2hlZFN1YmplY3Q9bmV3IEksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3Q9bmV3IEksdGhpcy5fb3JpZW50YXRpb249InZlcnRpY2FsIix0aGlzLl9hcHBlbmRPbmx5PSExLHRoaXMuc2Nyb2xsZWRJbmRleENoYW5nZT1uZXcgRCgodD0+dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoKGU9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT50aGlzLm5nWm9uZS5ydW4oKCgpPT50Lm5leHQoZSkpKSkpKSkpKSx0aGlzLnJlbmRlcmVkUmFuZ2VTdHJlYW09dGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QsdGhpcy5fdG90YWxDb250ZW50U2l6ZT0wLHRoaXMuX3RvdGFsQ29udGVudFdpZHRoPSIiLHRoaXMuX3RvdGFsQ29udGVudEhlaWdodD0iIix0aGlzLl9yZW5kZXJlZFJhbmdlPXtzdGFydDowLGVuZDowfSx0aGlzLl9kYXRhTGVuZ3RoPTAsdGhpcy5fdmlld3BvcnRTaXplPTAsdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0PTAsdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPSExLHRoaXMuX2lzQ2hhbmdlRGV0ZWN0aW9uUGVuZGluZz0hMSx0aGlzLl9ydW5BZnRlckNoYW5nZURldGVjdGlvbj1bXSx0aGlzLl92aWV3cG9ydENoYW5nZXM9bS5FTVBUWSwhbyYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCdFcnJvcjogY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IHJlcXVpcmVzIHRoZSAiaXRlbVNpemUiIHByb3BlcnR5IHRvIGJlIHNldC4nKTt0aGlzLl92aWV3cG9ydENoYW5nZXM9ci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5jaGVja1ZpZXdwb3J0U2l6ZSgpfSkpfWdldCBvcmllbnRhdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbn1zZXQgb3JpZW50YXRpb24odCl7dGhpcy5fb3JpZW50YXRpb24hPT10JiYodGhpcy5fb3JpZW50YXRpb249dCx0aGlzLl9jYWxjdWxhdGVTcGFjZXJTaXplKCkpfWdldCBhcHBlbmRPbmx5KCl7cmV0dXJuIHRoaXMuX2FwcGVuZE9ubHl9c2V0IGFwcGVuZE9ubHkodCl7dGhpcy5fYXBwZW5kT25seT15eih0KX1uZ09uSW5pdCgpe3N1cGVyLm5nT25Jbml0KCksdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5hdHRhY2godGhpcyksdGhpcy5lbGVtZW50U2Nyb2xsZWQoKS5waXBlKE5lKG51bGwpLGRlKDAsZkYpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9zY3JvbGxTdHJhdGVneS5vbkNvbnRlbnRTY3JvbGxlZCgpKSksdGhpcy5fbWFya0NoYW5nZURldGVjdGlvbk5lZWRlZCgpfSkpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmRldGFjaCgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmRldGFjaCgpLHRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fZGV0YWNoZWRTdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnRDaGFuZ2VzLnVuc3Vic2NyaWJlKCksc3VwZXIubmdPbkRlc3Ryb3koKX1hdHRhY2godCl7aWYodGhpcy5fZm9yT2YmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IGlzIGFscmVhZHkgYXR0YWNoZWQuIik7dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dGhpcy5fZm9yT2Y9dCx0aGlzLl9mb3JPZi5kYXRhU3RyZWFtLnBpcGUoSWUodGhpcy5fZGV0YWNoZWRTdWJqZWN0KSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10Lmxlbmd0aDtlIT09dGhpcy5fZGF0YUxlbmd0aCYmKHRoaXMuX2RhdGFMZW5ndGg9ZSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCkpLHRoaXMuX2RvQ2hhbmdlRGV0ZWN0aW9uKCl9KSl9KSl9ZGV0YWNoKCl7dGhpcy5fZm9yT2Y9bnVsbCx0aGlzLl9kZXRhY2hlZFN1YmplY3QubmV4dCgpfWdldERhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZGF0YUxlbmd0aH1nZXRWaWV3cG9ydFNpemUoKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRTaXplfWdldFJlbmRlcmVkUmFuZ2UoKXtyZXR1cm4gdGhpcy5fcmVuZGVyZWRSYW5nZX1zZXRUb3RhbENvbnRlbnRTaXplKHQpe3RoaXMuX3RvdGFsQ29udGVudFNpemUhPT10JiYodGhpcy5fdG90YWxDb250ZW50U2l6ZT10LHRoaXMuX2NhbGN1bGF0ZVNwYWNlclNpemUoKSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCkpfXNldFJlbmRlcmVkUmFuZ2UodCl7KAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZSh0LG4pe3JldHVybiB0LnN0YXJ0PT1uLnN0YXJ0JiZ0LmVuZD09bi5lbmR9KSh0aGlzLl9yZW5kZXJlZFJhbmdlLHQpfHwodGhpcy5hcHBlbmRPbmx5JiYodD17c3RhcnQ6MCxlbmQ6TWF0aC5tYXgodGhpcy5fcmVuZGVyZWRSYW5nZS5lbmQsdC5lbmQpfSksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlPXQpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCgpPT50aGlzLl9zY3JvbGxTdHJhdGVneS5vbkNvbnRlbnRSZW5kZXJlZCgpKSkpfWdldE9mZnNldFRvUmVuZGVyZWRDb250ZW50U3RhcnQoKXtyZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlP251bGw6dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0fXNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0LGU9InRvLXN0YXJ0Iil7Y29uc3Qgbj0iaG9yaXpvbnRhbCI9PXRoaXMub3JpZW50YXRpb24sbz1uPyJYIjoiWSI7bGV0IGk9YHRyYW5zbGF0ZSR7b30oJHtOdW1iZXIoKG4mJnRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU/LTE6MSkqdCl9cHgpYDt0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9dCwidG8tZW5kIj09PWUmJihpKz1gIHRyYW5zbGF0ZSR7b30oLTEwMCUpYCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITApLHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSE9aSYmKHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybT1pLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCgpPT57dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPyh0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQtPXRoaXMubWVhc3VyZVJlbmRlcmVkQ29udGVudFNpemUoKSx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0KSk6dGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25SZW5kZXJlZE9mZnNldENoYW5nZWQoKX0pKSl9c2Nyb2xsVG9PZmZzZXQodCxlPSJhdXRvIil7Y29uc3Qgbj17YmVoYXZpb3I6ZX07Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9uLnN0YXJ0PXQ6bi50b3A9dCx0aGlzLnNjcm9sbFRvKG4pfXNjcm9sbFRvSW5kZXgodCxlPSJhdXRvIil7dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsVG9JbmRleCh0LGUpfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7cmV0dXJuIHN1cGVyLm1lYXN1cmVTY3JvbGxPZmZzZXQodHx8KCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/InN0YXJ0IjoidG9wIikpfW1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCl7Y29uc3QgdD10aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50O3JldHVybiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/dC5vZmZzZXRXaWR0aDp0Lm9mZnNldEhlaWdodH1tZWFzdXJlUmFuZ2VTaXplKHQpe3JldHVybiB0aGlzLl9mb3JPZj90aGlzLl9mb3JPZi5tZWFzdXJlUmFuZ2VTaXplKHQsdGhpcy5vcmllbnRhdGlvbik6MH1jaGVja1ZpZXdwb3J0U2l6ZSgpe3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCl9X21lYXN1cmVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ZpZXdwb3J0U2l6ZT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP3QuY2xpZW50V2lkdGg6dC5jbGllbnRIZWlnaHR9X21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQodCl7dCYmdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb24ucHVzaCh0KSx0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmd8fCh0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmc9ITAsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2RvQ2hhbmdlRGV0ZWN0aW9uKCl9KSkpKSl9X2RvQ2hhbmdlRGV0ZWN0aW9uKCl7dGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSx0aGlzLm5nWm9uZS5ydW4oKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpO2NvbnN0IHQ9dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb247dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W107Zm9yKGNvbnN0IGUgb2YgdCllKCl9X2NhbGN1bGF0ZVNwYWNlclNpemUoKXt0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8iIjpgJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP2Ake3RoaXMuX3RvdGFsQ29udGVudFNpemV9cHhgOiIifX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGhGKHQsZSxuKXtpZighbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIDA7Y29uc3Qgbz1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiJob3Jpem9udGFsIj09PXQ/InN0YXJ0Ij09PWU/by5sZWZ0Om8ucmlnaHQ6InN0YXJ0Ij09PWU/by50b3A6by5ib3R0b219Z0YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdGKShTbShoZyksU20oVWcpLFNtKGFfKSxTbShzRiw4KSxTbShISSw4KSxTbShwRiksU20odUYpKX0sZ0YuybVjbXA9dG8oe3R5cGU6Z0Ysc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgockYsNyksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5fY29udGVudFdyYXBwZXI9dC5maXJzdCl9fSxob3N0QXR0cnM6WzEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsImhvcml6b250YWwiPT09bi5vcmllbnRhdGlvbikoImNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsImhvcml6b250YWwiIT09bi5vcmllbnRhdGlvbil9LGlucHV0czp7b3JpZW50YXRpb246Im9yaWVudGF0aW9uIixhcHBlbmRPbmx5OiJhcHBlbmRPbmx5In0sb3V0cHV0czp7c2Nyb2xsZWRJbmRleENoYW5nZToic2Nyb2xsZWRJbmRleENoYW5nZSJ9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6bUYsdXNlRXhpc3Rpbmc6Z0Z9XSkseHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo0LHZhcnM6NCxjb25zdHM6W1sxLCJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIl0sWyJjb250ZW50V3JhcHBlciIsIiJdLFsxLCJjZGstdmlydHVhbC1zY3JvbGwtc3BhY2VyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFJtKDAsImRpdiIsMCwxKSxYbSgyKSxBbSgpLFRtKDMsImRpdiIsMikpLDImZSYmKHJjKDMpLGR1KCJ3aWR0aCIsbi5fdG90YWxDb250ZW50V2lkdGgpKCJoZWlnaHQiLG4uX3RvdGFsQ29udGVudEhlaWdodCkpfSxzdHlsZXM6WyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzphdXRvO2NvbnRhaW46c3RyaWN0O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y29udGFpbjpjb250ZW50fVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntyaWdodDowO2xlZnQ6YXV0b30uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLWhlaWdodDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi13aWR0aDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxcHg7d2lkdGg6MXB4O3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntyaWdodDowO2xlZnQ6YXV0bzt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGdGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltzRl19XX0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6cEZ9LHt0eXBlOnVGfV0sZ0YucHJvcERlY29yYXRvcnM9e29yaWVudGF0aW9uOlt7dHlwZTp4eX1dLGFwcGVuZE9ubHk6W3t0eXBlOnh5fV0sc2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6T3l9XSxfY29udGVudFdyYXBwZXI6W3t0eXBlOlphLGFyZ3M6WyJjb250ZW50V3JhcHBlciIse3N0YXRpYzohMH1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZ0YsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Iix0ZW1wbGF0ZTonXHgzYyEtLVxuICBXcmFwIHRoZSByZW5kZXJlZCBjb250ZW50IGluIGFuIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gb2Zmc2V0IGl0IGJhc2VkIG9uIHRoZSBzY3JvbGxcbiAgcG9zaXRpb24uXG4tLVx4M2VcbjxkaXYgI2NvbnRlbnRXcmFwcGVyIGNsYXNzPSJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5ceDNjIS0tXG4gIFNwYWNlciB1c2VkIHRvIGZvcmNlIHRoZSBzY3JvbGxpbmcgY29udGFpbmVyIHRvIHRoZSBjb3JyZWN0IHNpemUgZm9yIHRoZSAqdG90YWwqIG51bWJlciBvZiBpdGVtc1xuICBzbyB0aGF0IHRoZSBzY3JvbGxiYXIgY2FwdHVyZXMgdGhlIHNpemUgb2YgdGhlIGVudGlyZSBkYXRhIHNldC5cbi0tXHgzZVxuPGRpdiBjbGFzcz0iY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlciJcbiAgICAgW3N0eWxlLndpZHRoXT0iX3RvdGFsQ29udGVudFdpZHRoIiBbc3R5bGUuaGVpZ2h0XT0iX3RvdGFsQ29udGVudEhlaWdodCI+PC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLCJbY2xhc3MuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWxdIjonb3JpZW50YXRpb24gPT09ICJob3Jpem9udGFsIicsIltjbGFzcy5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWxdIjonb3JpZW50YXRpb24gIT09ICJob3Jpem9udGFsIid9LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6bUYsdXNlRXhpc3Rpbmc6Z0Z9XSxzdHlsZXM6WyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzphdXRvO2NvbnRhaW46c3RyaWN0O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y29udGFpbjpjb250ZW50fVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntyaWdodDowO2xlZnQ6YXV0b30uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLWhlaWdodDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi13aWR0aDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxcHg7d2lkdGg6MXB4O3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntyaWdodDowO2xlZnQ6YXV0bzt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltzRl19XX0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6cEZ9LHt0eXBlOnVGfV19KSx7c2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6T3l9XSxvcmllbnRhdGlvbjpbe3R5cGU6eHl9XSxhcHBlbmRPbmx5Olt7dHlwZTp4eX1dLF9jb250ZW50V3JhcHBlcjpbe3R5cGU6WmEsYXJnczpbImNvbnRlbnRXcmFwcGVyIix7c3RhdGljOiEwfV19XX0pO2NsYXNzIGJGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdGVtcGxhdGU9ZSx0aGlzLl9kaWZmZXJzPW4sdGhpcy5fdmlld1JlcGVhdGVyPW8sdGhpcy5fdmlld3BvcnQ9aSx0aGlzLnZpZXdDaGFuZ2U9bmV3IEksdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXM9bmV3IEksdGhpcy5kYXRhU3RyZWFtPXRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLnBpcGUoTmUobnVsbCksRGUoKSx6ZSgoKFt0LGVdKT0+dGhpcy5fY2hhbmdlRGF0YVNvdXJjZSh0LGUpKSksQWUoMSkpLHRoaXMuX2RpZmZlcj1udWxsLHRoaXMuX25lZWRzVXBkYXRlPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSSx0aGlzLmRhdGFTdHJlYW0uc3Vic2NyaWJlKCh0PT57dGhpcy5fZGF0YT10LHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSksdGhpcy5fdmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3JlbmRlcmVkUmFuZ2U9dCxhLnJ1bigoKCk9PnRoaXMudmlld0NoYW5nZS5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2UpKSksdGhpcy5fb25SZW5kZXJlZERhdGFDaGFuZ2UoKX0pKSx0aGlzLl92aWV3cG9ydC5hdHRhY2godGhpcyl9Z2V0IGNka1ZpcnR1YWxGb3JPZigpe3JldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yT2Z9c2V0IGNka1ZpcnR1YWxGb3JPZih0KXt0aGlzLl9jZGtWaXJ0dWFsRm9yT2Y9dCwkSCh0KT90aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KHQpOnRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQobmV3IHRGKE50KHQpP3Q6QXJyYXkuZnJvbSh0fHxbXSkpKX1nZXQgY2RrVmlydHVhbEZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fY2RrVmlydHVhbEZvclRyYWNrQnl9c2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KHQpe3RoaXMuX25lZWRzVXBkYXRlPSEwLHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5PXQ/KGUsbik9PnQoZSsodGhpcy5fcmVuZGVyZWRSYW5nZT90aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0OjApLG4pOnZvaWQgMH1zZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlKHQpe3QmJih0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl90ZW1wbGF0ZT10KX1nZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKCl7cmV0dXJuIHRoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplfXNldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUodCl7dGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemU9X3oodCl9bWVhc3VyZVJhbmdlU2l6ZSh0LGUpe2lmKHQuc3RhcnQ+PXQuZW5kKXJldHVybiAwO2lmKCh0LnN0YXJ0PHRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnR8fHQuZW5kPnRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJFcnJvcjogYXR0ZW1wdGVkIHRvIG1lYXN1cmUgYW4gaXRlbSB0aGF0IGlzbid0IHJlbmRlcmVkLiIpO2NvbnN0IG49dC5zdGFydC10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LG89dC5lbmQtdC5zdGFydDtsZXQgaSxhO2ZvcihsZXQgdD0wO3Q8bzt0Kyspe2NvbnN0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodCtuKTtpZihlJiZlLnJvb3ROb2Rlcy5sZW5ndGgpe2k9YT1lLnJvb3ROb2Rlc1swXTticmVha319Zm9yKGxldCB0PW8tMTt0Pi0xO3QtLSl7Y29uc3QgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldCh0K24pO2lmKGUmJmUucm9vdE5vZGVzLmxlbmd0aCl7YT1lLnJvb3ROb2Rlc1tlLnJvb3ROb2Rlcy5sZW5ndGgtMV07YnJlYWt9fXJldHVybiBpJiZhP2hGKGUsImVuZCIsYSktaEYoZSwic3RhcnQiLGkpOjB9bmdEb0NoZWNrKCl7aWYodGhpcy5fZGlmZmVyJiZ0aGlzLl9uZWVkc1VwZGF0ZSl7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJlZEl0ZW1zKTt0P3RoaXMuX2FwcGx5Q2hhbmdlcyh0KTp0aGlzLl91cGRhdGVDb250ZXh0KCksdGhpcy5fbmVlZHNVcGRhdGU9ITF9fW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3BvcnQuZGV0YWNoKCksdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh2b2lkIDApLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy52aWV3Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl92aWV3UmVwZWF0ZXIuZGV0YWNoKCl9X29uUmVuZGVyZWREYXRhQ2hhbmdlKCl7dGhpcy5fcmVuZGVyZWRSYW5nZSYmKHRoaXMuX3JlbmRlcmVkSXRlbXM9dGhpcy5fZGF0YS5zbGljZSh0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSx0aGlzLl9kaWZmZXJ8fCh0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3JlbmRlcmVkSXRlbXMpLmNyZWF0ZSgoKHQsZSk9PnRoaXMuY2RrVmlydHVhbEZvclRyYWNrQnk/dGhpcy5jZGtWaXJ0dWFsRm9yVHJhY2tCeSh0LGUpOmUpKSksdGhpcy5fbmVlZHNVcGRhdGU9ITApfV9jaGFuZ2VEYXRhU291cmNlKHQsZSl7cmV0dXJuIHQmJnQuZGlzY29ubmVjdCh0aGlzKSx0aGlzLl9uZWVkc1VwZGF0ZT0hMCxlP2UuY29ubmVjdCh0aGlzKTpFdCgpfV91cGRhdGVDb250ZXh0KCl7Y29uc3QgdD10aGlzLl9kYXRhLmxlbmd0aDtsZXQgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtmb3IoO2UtLTspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQoZSk7bi5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrZSxuLmNvbnRleHQuY291bnQ9dCx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKG4uY29udGV4dCksbi5kZXRlY3RDaGFuZ2VzKCl9fV9hcHBseUNoYW5nZXModCl7dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LHRoaXMuX3ZpZXdDb250YWluZXJSZWYsKCh0LGUsbik9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3ModCxuKSksKHQ9PnQuaXRlbSkpLHQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKCh0PT57dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pKTtjb25zdCBlPXRoaXMuX2RhdGEubGVuZ3RoO2xldCBuPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7bi0tOyl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChuKTt0LmNvbnRleHQuaW5kZXg9dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCtuLHQuY29udGV4dC5jb3VudD1lLHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModC5jb250ZXh0KX19X3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModCl7dC5maXJzdD0wPT09dC5pbmRleCx0Lmxhc3Q9dC5pbmRleD09PXQuY291bnQtMSx0LmV2ZW49dC5pbmRleCUyPT0wLHQub2RkPSF0LmV2ZW59X2dldEVtYmVkZGVkVmlld0FyZ3ModCxlKXtyZXR1cm57dGVtcGxhdGVSZWY6dGhpcy5fdGVtcGxhdGUsY29udGV4dDp7JGltcGxpY2l0OnQuaXRlbSxjZGtWaXJ0dWFsRm9yT2Y6dGhpcy5fY2RrVmlydHVhbEZvck9mLGluZGV4Oi0xLGNvdW50Oi0xLGZpcnN0OiExLGxhc3Q6ITEsb2RkOiExLGV2ZW46ITF9LGluZGV4OmV9fX1iRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YkYpKFNtKGVoKSxTbShYZyksU20oSGcpLFNtKGFGKSxTbShnRiw0KSxTbShhXykpfSxiRi7JtWRpcj1sbyh7dHlwZTpiRixzZWxlY3RvcnM6W1siIiwiY2RrVmlydHVhbEZvciIsIiIsImNka1ZpcnR1YWxGb3JPZiIsIiJdXSxpbnB1dHM6e2Nka1ZpcnR1YWxGb3JPZjoiY2RrVmlydHVhbEZvck9mIixjZGtWaXJ0dWFsRm9yVHJhY2tCeToiY2RrVmlydHVhbEZvclRyYWNrQnkiLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZToiY2RrVmlydHVhbEZvclRlbXBsYXRlIixjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSJ9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6YUYsdXNlQ2xhc3M6bkZ9XSldfSksYkYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH0se3R5cGU6WGd9LHt0eXBlOkhnfSx7dHlwZTpuRixkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlthRl19XX0se3R5cGU6Z0YsZGVjb3JhdG9yczpbe3R5cGU6RXJ9XX0se3R5cGU6YV99XSxiRi5wcm9wRGVjb3JhdG9ycz17Y2RrVmlydHVhbEZvck9mOlt7dHlwZTp4eX1dLGNka1ZpcnR1YWxGb3JUcmFja0J5Olt7dHlwZTp4eX1dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZTpbe3R5cGU6eHl9XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYkYsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1ZpcnR1YWxGb3JdW2Nka1ZpcnR1YWxGb3JPZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6YUYsdXNlQ2xhc3M6bkZ9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofSx7dHlwZTpYZ30se3R5cGU6SGd9LHt0eXBlOm5GLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2FGXX1dfSx7dHlwZTpnRixkZWNvcmF0b3JzOlt7dHlwZTpFcn1dfSx7dHlwZTphX31dfSkse2Nka1ZpcnR1YWxGb3JPZjpbe3R5cGU6eHl9XSxjZGtWaXJ0dWFsRm9yVHJhY2tCeTpbe3R5cGU6eHl9XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGU6W3t0eXBlOnh5fV0sY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB5Rnt9eUYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHlGKX0seUYuybVtb2Q9YW8oe3R5cGU6eUZ9KSx5Ri7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh5Rixbe3R5cGU6QXksYXJnczpbe2V4cG9ydHM6W21GXSxkZWNsYXJhdGlvbnM6W21GXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHlGLHtkZWNsYXJhdGlvbnM6W21GXSxleHBvcnRzOlttRl19KTtjbGFzcyBfRnt9ZnVuY3Rpb24gQ0YoKXt0aHJvdyBFcnJvcigiSG9zdCBhbHJlYWR5IGhhcyBhIHBvcnRhbCBhdHRhY2hlZCIpfV9GLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfRil9LF9GLsm1bW9kPWFvKHt0eXBlOl9GfSksX0YuybVpbmo9dm4oe2ltcG9ydHM6W1tMSSxreix5Rl0sTEkseUZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChfRixbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W0xJLGt6LHlGXSxleHBvcnRzOltMSSx5RixkRixiRixnRl0sZGVjbGFyYXRpb25zOltkRixiRixnRl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhfRix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2RGLGJGLGdGXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltMSSxreix5Rl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTEkseUYsZEYsYkYsZ0ZdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTUZ7YXR0YWNoKHQpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKG51bGw9PXQmJihmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIGEgcG9ydGFsIHRvIGEgbnVsbCBQb3J0YWxPdXRsZXQiKX0pKCksdC5oYXNBdHRhY2hlZCgpJiZDRigpKSx0aGlzLl9hdHRhY2hlZEhvc3Q9dCx0LmF0dGFjaCh0aGlzKX1kZXRhY2goKXtsZXQgdD10aGlzLl9hdHRhY2hlZEhvc3Q7bnVsbCE9dD8odGhpcy5fYXR0YWNoZWRIb3N0PW51bGwsdC5kZXRhY2goKSk6KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGRldGFjaCBhIHBvcnRhbCB0aGF0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGhvc3QiKX0pKCl9Z2V0IGlzQXR0YWNoZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5fYXR0YWNoZWRIb3N0fXNldEF0dGFjaGVkSG9zdCh0KXt0aGlzLl9hdHRhY2hlZEhvc3Q9dH19Y2xhc3MgdkYgZXh0ZW5kcyBNRntjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuY29tcG9uZW50PXQsdGhpcy52aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5pbmplY3Rvcj1uLHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW99fWNsYXNzIHhGIGV4dGVuZHMgTUZ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy50ZW1wbGF0ZVJlZj10LHRoaXMudmlld0NvbnRhaW5lclJlZj1lLHRoaXMuY29udGV4dD1ufWdldCBvcmlnaW4oKXtyZXR1cm4gdGhpcy50ZW1wbGF0ZVJlZi5lbGVtZW50UmVmfWF0dGFjaCh0LGU9dGhpcy5jb250ZXh0KXtyZXR1cm4gdGhpcy5jb250ZXh0PWUsc3VwZXIuYXR0YWNoKHQpfWRldGFjaCgpe3JldHVybiB0aGlzLmNvbnRleHQ9dm9pZCAwLHN1cGVyLmRldGFjaCgpfX1jbGFzcyBPRiBleHRlbmRzIE1Ge2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50PXQgaW5zdGFuY2VvZiBoZz90Lm5hdGl2ZUVsZW1lbnQ6dH19Y2xhc3MgUEZ7Y29uc3RydWN0b3IoKXt0aGlzLl9pc0Rpc3Bvc2VkPSExLHRoaXMuYXR0YWNoRG9tUG9ydGFsPW51bGx9aGFzQXR0YWNoZWQoKXtyZXR1cm4hIXRoaXMuX2F0dGFjaGVkUG9ydGFsfWF0dGFjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJih0fHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCJNdXN0IHByb3ZpZGUgYSBwb3J0YWwgdG8gYXR0YWNoIil9KSgpLHRoaXMuaGFzQXR0YWNoZWQoKSYmQ0YoKSx0aGlzLl9pc0Rpc3Bvc2VkJiYoZnVuY3Rpb24gbigpe3Rocm93IEVycm9yKCJUaGlzIFBvcnRhbE91dGxldCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIil9KSgpKSx0IGluc3RhbmNlb2YgdkY/KHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hDb21wb25lbnRQb3J0YWwodCkpOnQgaW5zdGFuY2VvZiB4Rj8odGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpKTp0aGlzLmF0dGFjaERvbVBvcnRhbCYmdCBpbnN0YW5jZW9mIE9GPyh0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoRG9tUG9ydGFsKHQpKTp2b2lkKCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKGZ1bmN0aW9uIG8oKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggYW4gdW5rbm93biBQb3J0YWwgdHlwZS4gQmFzZVBvcnRhbE91dGxldCBhY2NlcHRzIGVpdGhlciBhIENvbXBvbmVudFBvcnRhbCBvciBhIFRlbXBsYXRlUG9ydGFsLiIpfSkoKSl9ZGV0YWNoKCl7dGhpcy5fYXR0YWNoZWRQb3J0YWwmJih0aGlzLl9hdHRhY2hlZFBvcnRhbC5zZXRBdHRhY2hlZEhvc3QobnVsbCksdGhpcy5fYXR0YWNoZWRQb3J0YWw9bnVsbCksdGhpcy5faW52b2tlRGlzcG9zZUZuKCl9ZGlzcG9zZSgpe3RoaXMuaGFzQXR0YWNoZWQoKSYmdGhpcy5kZXRhY2goKSx0aGlzLl9pbnZva2VEaXNwb3NlRm4oKSx0aGlzLl9pc0Rpc3Bvc2VkPSEwfXNldERpc3Bvc2VGbih0KXt0aGlzLl9kaXNwb3NlRm49dH1faW52b2tlRGlzcG9zZUZuKCl7dGhpcy5fZGlzcG9zZUZuJiYodGhpcy5fZGlzcG9zZUZuKCksdGhpcy5fZGlzcG9zZUZuPW51bGwpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgd0YgZXh0ZW5kcyBQRntjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3N1cGVyKCksdGhpcy5vdXRsZXRFbGVtZW50PXQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWUsdGhpcy5fYXBwUmVmPW4sdGhpcy5fZGVmYXVsdEluamVjdG9yPW8sdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+e2lmKCF0aGlzLl9kb2N1bWVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDYW5ub3QgYXR0YWNoIERPTSBwb3J0YWwgd2l0aG91dCBfZG9jdW1lbnQgY29uc3RydWN0b3IgcGFyYW1ldGVyIik7Y29uc3QgZT10LmVsZW1lbnQ7aWYoIWUucGFyZW50Tm9kZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJET00gcG9ydGFsIGNvbnRlbnQgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHBhcmVudCBub2RlLiIpO2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiZG9tLXBvcnRhbCIpO2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobixlKSx0aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCxzdXBlci5zZXREaXNwb3NlRm4oKCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsbil9KSl9LHRoaXMuX2RvY3VtZW50PWl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe2NvbnN0IGU9KHQuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfHx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuY29tcG9uZW50KTtsZXQgbjtyZXR1cm4gdC52aWV3Q29udGFpbmVyUmVmPyhuPXQudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZSx0LnZpZXdDb250YWluZXJSZWYubGVuZ3RoLHQuaW5qZWN0b3J8fHQudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciksdGhpcy5zZXREaXNwb3NlRm4oKCgpPT5uLmRlc3Ryb3koKSkpKToobj1lLmNyZWF0ZSh0LmluamVjdG9yfHx0aGlzLl9kZWZhdWx0SW5qZWN0b3IpLHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KG4uaG9zdFZpZXcpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+e3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KG4uaG9zdFZpZXcpLG4uZGVzdHJveSgpfSkpKSx0aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ2V0Q29tcG9uZW50Um9vdE5vZGUobikpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsbn1hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KXtsZXQgZT10LnZpZXdDb250YWluZXJSZWYsbj1lLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmLHQuY29udGV4dCk7cmV0dXJuIG4ucm9vdE5vZGVzLmZvckVhY2goKHQ9PnRoaXMub3V0bGV0RWxlbWVudC5hcHBlbmRDaGlsZCh0KSkpLG4uZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+e2xldCB0PWUuaW5kZXhPZihuKTstMSE9PXQmJmUucmVtb3ZlKHQpfSkpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsbn1kaXNwb3NlKCl7c3VwZXIuZGlzcG9zZSgpLG51bGwhPXRoaXMub3V0bGV0RWxlbWVudC5wYXJlbnROb2RlJiZ0aGlzLm91dGxldEVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm91dGxldEVsZW1lbnQpfV9nZXRDb21wb25lbnRSb290Tm9kZSh0KXtyZXR1cm4gdC5ob3N0Vmlldy5yb290Tm9kZXNbMF19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBrRiBleHRlbmRzIHhGe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX19a0YuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtGKShTbShYZyksU20oZWgpKX0sa0YuybVkaXI9bG8oe3R5cGU6a0Ysc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbCIsIiJdXSxleHBvcnRBczpbImNka1BvcnRhbCJdLGZlYXR1cmVzOlt4cF19KSxrRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhnfSx7dHlwZTplaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoa0YsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbF0iLGV4cG9ydEFzOiJjZGtQb3J0YWwifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGd9LHt0eXBlOmVofV19KSxudWxsKTtjbGFzcyBTRiBleHRlbmRzIGtGe31TRi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoU0YpKSkobnx8U0YpfX0pKCksU0YuybVkaXI9bG8oe3R5cGU6U0Ysc2VsZWN0b3JzOltbIiIsImNkay1wb3J0YWwiLCIiXSxbIiIsInBvcnRhbCIsIiJdXSxleHBvcnRBczpbImNka1BvcnRhbCJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6a0YsdXNlRXhpc3Rpbmc6U0Z9XSkseHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChTRixbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrLXBvcnRhbF0sIFtwb3J0YWxdIixleHBvcnRBczoiY2RrUG9ydGFsIixwcm92aWRlcnM6W3twcm92aWRlOmtGLHVzZUV4aXN0aW5nOlNGfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgREYgZXh0ZW5kcyBQRntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLmF0dGFjaGVkPW5ldyBMaCx0aGlzLmF0dGFjaERvbVBvcnRhbD10PT57aWYoIXRoaXMuX2RvY3VtZW50JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNhbm5vdCBhdHRhY2ggRE9NIHBvcnRhbCB3aXRob3V0IF9kb2N1bWVudCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiKTtjb25zdCBlPXQuZWxlbWVudDtpZighZS5wYXJlbnROb2RlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkRPTSBwb3J0YWwgY29udGVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgcGFyZW50IG5vZGUuIik7Y29uc3Qgbj10aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCJkb20tcG9ydGFsIik7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyksZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGUpLHRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCxzdXBlci5zZXREaXNwb3NlRm4oKCgpPT57bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsbil9KSl9LHRoaXMuX2RvY3VtZW50PW59Z2V0IHBvcnRhbCgpe3JldHVybiB0aGlzLl9hdHRhY2hlZFBvcnRhbH1zZXQgcG9ydGFsKHQpeyghdGhpcy5oYXNBdHRhY2hlZCgpfHx0fHx0aGlzLl9pc0luaXRpYWxpemVkKSYmKHRoaXMuaGFzQXR0YWNoZWQoKSYmc3VwZXIuZGV0YWNoKCksdCYmc3VwZXIuYXR0YWNoKHQpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQpfWdldCBhdHRhY2hlZFJlZigpe3JldHVybiB0aGlzLl9hdHRhY2hlZFJlZn1uZ09uSW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXtzdXBlci5kaXNwb3NlKCksdGhpcy5fYXR0YWNoZWRQb3J0YWw9bnVsbCx0aGlzLl9hdHRhY2hlZFJlZj1udWxsfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXt0LnNldEF0dGFjaGVkSG9zdCh0aGlzKTtjb25zdCBlPW51bGwhPXQudmlld0NvbnRhaW5lclJlZj90LnZpZXdDb250YWluZXJSZWY6dGhpcy5fdmlld0NvbnRhaW5lclJlZixuPSh0LmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnx8dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0LmNvbXBvbmVudCksbz1lLmNyZWF0ZUNvbXBvbmVudChuLGUubGVuZ3RoLHQuaW5qZWN0b3J8fGUuaW5qZWN0b3IpO3JldHVybiBlIT09dGhpcy5fdmlld0NvbnRhaW5lclJlZiYmdGhpcy5fZ2V0Um9vdE5vZGUoKS5hcHBlbmRDaGlsZChvLmhvc3RWaWV3LnJvb3ROb2Rlc1swXSksc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+by5kZXN0cm95KCkpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPW8sdGhpcy5hdHRhY2hlZC5lbWl0KG8pLG99YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7Y29uc3QgZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmLHQuY29udGV4dCk7cmV0dXJuIHN1cGVyLnNldERpc3Bvc2VGbigoKCk9PnRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKSkpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5fYXR0YWNoZWRSZWY9ZSx0aGlzLmF0dGFjaGVkLmVtaXQoZSksZX1fZ2V0Um9vdE5vZGUoKXtjb25zdCB0PXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O3JldHVybiB0Lm5vZGVUeXBlPT09dC5FTEVNRU5UX05PREU/dDp0LnBhcmVudE5vZGV9fURGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxERikoU20odWcpLFNtKGVoKSxTbShaXykpfSxERi7JtWRpcj1sbyh7dHlwZTpERixzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsT3V0bGV0IiwiIl1dLGlucHV0czp7cG9ydGFsOlsiY2RrUG9ydGFsT3V0bGV0IiwicG9ydGFsIl19LG91dHB1dHM6e2F0dGFjaGVkOiJhdHRhY2hlZCJ9LGV4cG9ydEFzOlsiY2RrUG9ydGFsT3V0bGV0Il0sZmVhdHVyZXM6W3hwXX0pLERGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dWd9LHt0eXBlOmVofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSxERi5wcm9wRGVjb3JhdG9ycz17YXR0YWNoZWQ6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoREYsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbE91dGxldF0iLGV4cG9ydEFzOiJjZGtQb3J0YWxPdXRsZXQiLGlucHV0czpbInBvcnRhbDogY2RrUG9ydGFsT3V0bGV0Il19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1Z30se3R5cGU6ZWh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSkse2F0dGFjaGVkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgRUYgZXh0ZW5kcyBERnt9RUYuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKEVGKSkpKG58fEVGKX19KSgpLEVGLsm1ZGlyPWxvKHt0eXBlOkVGLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWxIb3N0IiwiIl0sWyIiLCJwb3J0YWxIb3N0IiwiIl1dLGlucHV0czp7cG9ydGFsOlsiY2RrUG9ydGFsSG9zdCIsInBvcnRhbCJdfSxleHBvcnRBczpbImNka1BvcnRhbEhvc3QiXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOkRGLHVzZUV4aXN0aW5nOkVGfV0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRUYsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbEhvc3RdLCBbcG9ydGFsSG9zdF0iLGV4cG9ydEFzOiJjZGtQb3J0YWxIb3N0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbEhvc3QiXSxwcm92aWRlcnM6W3twcm92aWRlOkRGLHVzZUV4aXN0aW5nOkVGfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgUkZ7fVJGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSRil9LFJGLsm1bW9kPWFvKHt0eXBlOlJGfSksUkYuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUkYsW3t0eXBlOkF5LGFyZ3M6W3tleHBvcnRzOltrRixERixTRixFRl0sZGVjbGFyYXRpb25zOltrRixERixTRixFRl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhSRix7ZGVjbGFyYXRpb25zOltrRixERixTRixFRl0sZXhwb3J0czpba0YsREYsU0YsRUZdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBBRj16eigpO2NsYXNzIFRGe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcz17dG9wOiIiLGxlZnQ6IiJ9LHRoaXMuX2lzRW5hYmxlZD0hMSx0aGlzLl9kb2N1bWVudD1lfWF0dGFjaCgpe31lbmFibGUoKXtpZih0aGlzLl9jYW5CZUVuYWJsZWQoKSl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdD10LnN0eWxlLmxlZnR8fCIiLHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy50b3A9dC5zdHlsZS50b3B8fCIiLHQuc3R5bGUubGVmdD12eigtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi5sZWZ0KSx0LnN0eWxlLnRvcD12eigtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLHQuY2xhc3NMaXN0LmFkZCgiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpLHRoaXMuX2lzRW5hYmxlZD0hMH19ZGlzYWJsZSgpe2lmKHRoaXMuX2lzRW5hYmxlZCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZT10LnN0eWxlLG49dGhpcy5fZG9jdW1lbnQuYm9keS5zdHlsZSxvPWUuc2Nyb2xsQmVoYXZpb3J8fCIiLGk9bi5zY3JvbGxCZWhhdmlvcnx8IiI7dGhpcy5faXNFbmFibGVkPSExLGUubGVmdD10aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdCxlLnRvcD10aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wLHQuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpLEFGJiYoZS5zY3JvbGxCZWhhdmlvcj1uLnNjcm9sbEJlaGF2aW9yPSJhdXRvIiksd2luZG93LnNjcm9sbCh0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLmxlZnQsdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLEFGJiYoZS5zY3JvbGxCZWhhdmlvcj1vLG4uc2Nyb2xsQmVoYXZpb3I9aSl9fV9jYW5CZUVuYWJsZWQoKXtpZih0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJjZGstZ2xvYmFsLXNjcm9sbGJsb2NrIil8fHRoaXMuX2lzRW5hYmxlZClyZXR1cm4hMTtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmJvZHksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpO3JldHVybiB0LnNjcm9sbEhlaWdodD5lLmhlaWdodHx8dC5zY3JvbGxXaWR0aD5lLndpZHRofX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gTkYoKXtyZXR1cm4gRXJyb3IoIlNjcm9sbCBzdHJhdGVneSBoYXMgYWxyZWFkeSBiZWVuIGF0dGFjaGVkLiIpfWNsYXNzIHpGe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX3Njcm9sbERpc3BhdGNoZXI9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl92aWV3cG9ydFJ1bGVyPW4sdGhpcy5fY29uZmlnPW8sdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fZGV0YWNoPSgpPT57dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSkpfX1hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IE5GKCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe2lmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbilyZXR1cm47Y29uc3QgdD10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLnNjcm9sbGVkKDApO3RoaXMuX2NvbmZpZyYmdGhpcy5fY29uZmlnLnRocmVzaG9sZCYmdGhpcy5fY29uZmlnLnRocmVzaG9sZD4xPyh0aGlzLl9pbml0aWFsU2Nyb2xsUG9zaXRpb249dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkudG9wLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10LnN1YnNjcmliZSgoKCk9Pntjb25zdCB0PXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLnRvcDtNYXRoLmFicyh0LXRoaXMuX2luaXRpYWxTY3JvbGxQb3NpdGlvbik+dGhpcy5fY29uZmlnLnRocmVzaG9sZD90aGlzLl9kZXRhY2goKTp0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpOnRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10LnN1YnNjcmliZSh0aGlzLl9kZXRhY2gpfWRpc2FibGUoKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24mJih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCl9ZGV0YWNoKCl7dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgSUZ7ZW5hYmxlKCl7fWRpc2FibGUoKXt9YXR0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSEYodCxlKXtyZXR1cm4gZS5zb21lKChlPT50LmJvdHRvbTxlLnRvcHx8dC50b3A+ZS5ib3R0b218fHQucmlnaHQ8ZS5sZWZ0fHx0LmxlZnQ+ZS5yaWdodCkpfWZ1bmN0aW9uIEZGKHQsZSl7cmV0dXJuIGUuc29tZSgoZT0+dC50b3A8ZS50b3B8fHQuYm90dG9tPmUuYm90dG9tfHx0LmxlZnQ8ZS5sZWZ0fHx0LnJpZ2h0PmUucmlnaHQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTEZ7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj10LHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9jb25maWc9byx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbH1hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IE5GKCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe3RoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbnx8KHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLnNjcm9sbGVkKHRoaXMuX2NvbmZpZz90aGlzLl9jb25maWcuc2Nyb2xsVGhyb3R0bGU6MCkuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzLl9jb25maWcmJnRoaXMuX2NvbmZpZy5hdXRvQ2xvc2Upe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKTtIRih0LFt7d2lkdGg6ZSxoZWlnaHQ6bixib3R0b206bixyaWdodDplLHRvcDowLGxlZnQ6MH1dKSYmKHRoaXMuZGlzYWJsZSgpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpKSkpfX0pKSl9ZGlzYWJsZSgpe3RoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbiYmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsKX1kZXRhY2goKXt0aGlzLmRpc2FibGUoKSx0aGlzLl9vdmVybGF5UmVmPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBCRntjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX25nWm9uZT1uLHRoaXMubm9vcD0oKT0+bmV3IElGLHRoaXMuY2xvc2U9dD0+bmV3IHpGKHRoaXMuX3Njcm9sbERpc3BhdGNoZXIsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIsdCksdGhpcy5ibG9jaz0oKT0+bmV3IFRGKHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQpLHRoaXMucmVwb3NpdGlvbj10PT5uZXcgTEYodGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcix0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX25nWm9uZSx0KSx0aGlzLl9kb2N1bWVudD1vfX1CRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QkYpKHZyKHBGKSx2cih1RiksdnIoYV8pLHZyKFpfKSl9LEJGLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBCRih2cihwRiksdnIodUYpLHZyKGFfKSx2cihaXykpfSx0b2tlbjpCRixwcm92aWRlZEluOiJyb290In0pLEJGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6cEZ9LHt0eXBlOnVGfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCRixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cEZ9LHt0eXBlOnVGfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBWRntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnNjcm9sbFN0cmF0ZWd5PW5ldyBJRix0aGlzLnBhbmVsQ2xhc3M9IiIsdGhpcy5oYXNCYWNrZHJvcD0hMSx0aGlzLmJhY2tkcm9wQ2xhc3M9ImNkay1vdmVybGF5LWRhcmstYmFja2Ryb3AiLHRoaXMuZGlzcG9zZU9uTmF2aWdhdGlvbj0hMSx0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO2Zvcihjb25zdCBuIG9mIGUpdm9pZCAwIT09dFtuXSYmKHRoaXNbbl09dFtuXSl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgakZ7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLm9mZnNldFg9bix0aGlzLm9mZnNldFk9byx0aGlzLnBhbmVsQ2xhc3M9aSx0aGlzLm9yaWdpblg9dC5vcmlnaW5YLHRoaXMub3JpZ2luWT10Lm9yaWdpblksdGhpcy5vdmVybGF5WD1lLm92ZXJsYXlYLHRoaXMub3ZlcmxheVk9ZS5vdmVybGF5WX19Y2xhc3MgVUZ7fWNsYXNzIEdGe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jb25uZWN0aW9uUGFpcj10LHRoaXMuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzPWV9fWZ1bmN0aW9uIFdGKHQsZSl7aWYoInRvcCIhPT1lJiYiYm90dG9tIiE9PWUmJiJjZW50ZXIiIT09ZSl0aHJvdyBFcnJvcihgQ29ubmVjdGVkUG9zaXRpb246IEludmFsaWQgJHt0fSAiJHtlfSIuIEV4cGVjdGVkICJ0b3AiLCAiYm90dG9tIiBvciAiY2VudGVyIi5gKX1mdW5jdGlvbiBZRih0LGUpe2lmKCJzdGFydCIhPT1lJiYiZW5kIiE9PWUmJiJjZW50ZXIiIT09ZSl0aHJvdyBFcnJvcihgQ29ubmVjdGVkUG9zaXRpb246IEludmFsaWQgJHt0fSAiJHtlfSIuIEV4cGVjdGVkICJzdGFydCIsICJlbmQiIG9yICJjZW50ZXIiLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9HRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmpGfSx7dHlwZTpVRixkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV07Y2xhc3MgcUZ7Y29uc3RydWN0b3IodCl7dGhpcy5fYXR0YWNoZWRPdmVybGF5cz1bXSx0aGlzLl9kb2N1bWVudD10fW5nT25EZXN0cm95KCl7dGhpcy5kZXRhY2goKX1hZGQodCl7dGhpcy5yZW1vdmUodCksdGhpcy5fYXR0YWNoZWRPdmVybGF5cy5wdXNoKHQpfXJlbW92ZSh0KXtjb25zdCBlPXRoaXMuX2F0dGFjaGVkT3ZlcmxheXMuaW5kZXhPZih0KTtlPi0xJiZ0aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnNwbGljZShlLDEpLDA9PT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLmxlbmd0aCYmdGhpcy5kZXRhY2goKX19cUYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHFGKSh2cihaXykpfSxxRi7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgcUYodnIoWl8pKX0sdG9rZW46cUYscHJvdmlkZWRJbjoicm9vdCJ9KSxxRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocUYsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBaRiBleHRlbmRzIHFGe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX2tleWRvd25MaXN0ZW5lcj10PT57Y29uc3QgZT10aGlzLl9hdHRhY2hlZE92ZXJsYXlzO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKWlmKGVbbl0uX2tleWRvd25FdmVudHMub2JzZXJ2ZXJzLmxlbmd0aD4wKXtlW25dLl9rZXlkb3duRXZlbnRzLm5leHQodCk7YnJlYWt9fX1hZGQodCl7c3VwZXIuYWRkKHQpLHRoaXMuX2lzQXR0YWNoZWR8fCh0aGlzLl9kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2tleWRvd25MaXN0ZW5lciksdGhpcy5faXNBdHRhY2hlZD0hMCl9ZGV0YWNoKCl7dGhpcy5faXNBdHRhY2hlZCYmKHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fa2V5ZG93bkxpc3RlbmVyKSx0aGlzLl9pc0F0dGFjaGVkPSExKX19WkYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpGKSh2cihaXykpfSxaRi7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgWkYodnIoWl8pKX0sdG9rZW46WkYscHJvdmlkZWRJbjoicm9vdCJ9KSxaRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWkYsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBYRiBleHRlbmRzIHFGe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCksdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9jdXJzb3JTdHlsZUlzU2V0PSExLHRoaXMuX2NsaWNrTGlzdGVuZXI9dD0+e2NvbnN0IGU9THoodCksbj10aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnNsaWNlKCk7Zm9yKGxldCBvPW4ubGVuZ3RoLTE7bz4tMTtvLS0pe2NvbnN0IGk9bltvXTtpZighKGkuX291dHNpZGVQb2ludGVyRXZlbnRzLm9ic2VydmVycy5sZW5ndGg8MSkmJmkuaGFzQXR0YWNoZWQoKSl7aWYoaS5vdmVybGF5RWxlbWVudC5jb250YWlucyhlKSlicmVhaztpLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5uZXh0KHQpfX19fWFkZCh0KXtpZihzdXBlci5hZGQodCksIXRoaXMuX2lzQXR0YWNoZWQpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keTt0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LmFkZEV2ZW50TGlzdGVuZXIoImF1eGNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9wbGF0Zm9ybS5JT1MmJiF0aGlzLl9jdXJzb3JTdHlsZUlzU2V0JiYodGhpcy5fY3Vyc29yT3JpZ2luYWxWYWx1ZT10LnN0eWxlLmN1cnNvcix0LnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMCksdGhpcy5faXNBdHRhY2hlZD0hMH19ZGV0YWNoKCl7aWYodGhpcy5faXNBdHRhY2hlZCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5ib2R5O3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYXV4Y2xpY2siLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHRoaXMuX3BsYXRmb3JtLklPUyYmdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHQuc3R5bGUuY3Vyc29yPXRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWUsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMSksdGhpcy5faXNBdHRhY2hlZD0hMX19fVhGLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYRikodnIoWl8pLHZyKHd6KSl9LFhGLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBYRih2cihaXyksdnIod3opKX0sdG9rZW46WEYscHJvdmlkZWRJbjoicm9vdCJ9KSxYRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6d3p9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFhGLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEtGPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxKRj12b2lkIDAhPT1LRi5fX2thcm1hX18mJiEhS0YuX19rYXJtYV9ffHx2b2lkIDAhPT1LRi5qYXNtaW5lJiYhIUtGLmphc21pbmV8fHZvaWQgMCE9PUtGLmplc3QmJiEhS0YuamVzdHx8dm9pZCAwIT09S0YuTW9jaGEmJiEhS0YuTW9jaGE7Y2xhc3MgUUZ7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2RvY3VtZW50PXR9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2NvbnRhaW5lckVsZW1lbnQ7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9Z2V0Q29udGFpbmVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9jb250YWluZXJFbGVtZW50fHx0aGlzLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9jb250YWluZXJFbGVtZW50fV9jcmVhdGVDb250YWluZXIoKXtjb25zdCB0PSJjZGstb3ZlcmxheS1jb250YWluZXIiO2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcnx8SkYpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgLiR7dH1bcGxhdGZvcm09InNlcnZlciJdLCAuJHt0fVtwbGF0Zm9ybT0idGVzdCJdYCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVbdF0pfWNvbnN0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5jbGFzc0xpc3QuYWRkKHQpLEpGP2Uuc2V0QXR0cmlidXRlKCJwbGF0Zm9ybSIsInRlc3QiKTp0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fGUuc2V0QXR0cmlidXRlKCJwbGF0Zm9ybSIsInNlcnZlciIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksdGhpcy5fY29udGFpbmVyRWxlbWVudD1lfX1RRi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UUYpKHZyKFpfKSx2cih3eikpfSxRRi7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUUYodnIoWl8pLHZyKHd6KSl9LHRva2VuOlFGLHByb3ZpZGVkSW46InJvb3QifSksUUYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChRRixbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp3en1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyAkRntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCl7dGhpcy5fcG9ydGFsT3V0bGV0PXQsdGhpcy5faG9zdD1lLHRoaXMuX3BhbmU9bix0aGlzLl9jb25maWc9byx0aGlzLl9uZ1pvbmU9aSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXI9YSx0aGlzLl9kb2N1bWVudD1yLHRoaXMuX2xvY2F0aW9uPXMsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1sLHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsLHRoaXMuX2JhY2tkcm9wQ2xpY2s9bmV3IEksdGhpcy5fYXR0YWNobWVudHM9bmV3IEksdGhpcy5fZGV0YWNobWVudHM9bmV3IEksdGhpcy5fbG9jYXRpb25DaGFuZ2VzPW0uRU1QVFksdGhpcy5fYmFja2Ryb3BDbGlja0hhbmRsZXI9dD0+dGhpcy5fYmFja2Ryb3BDbGljay5uZXh0KHQpLHRoaXMuX2tleWRvd25FdmVudHM9bmV3IEksdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHM9bmV3IEksby5zY3JvbGxTdHJhdGVneSYmKHRoaXMuX3Njcm9sbFN0cmF0ZWd5PW8uc2Nyb2xsU3RyYXRlZ3ksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuYXR0YWNoKHRoaXMpKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PW8ucG9zaXRpb25TdHJhdGVneX1nZXQgb3ZlcmxheUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fcGFuZX1nZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2JhY2tkcm9wRWxlbWVudH1nZXQgaG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faG9zdH1hdHRhY2godCl7bGV0IGU9dGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaCh0KTtyZXR1cm4hdGhpcy5faG9zdC5wYXJlbnRFbGVtZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQmJnRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLl9ob3N0KSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLl91cGRhdGVTdGFja2luZ09yZGVyKCksdGhpcy5fdXBkYXRlRWxlbWVudFNpemUoKSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJnRoaXMuX3Njcm9sbFN0cmF0ZWd5LmVuYWJsZSgpLHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLnVwZGF0ZVBvc2l0aW9uKCl9KSksdGhpcy5fdG9nZ2xlUG9pbnRlckV2ZW50cyghMCksdGhpcy5fY29uZmlnLmhhc0JhY2tkcm9wJiZ0aGlzLl9hdHRhY2hCYWNrZHJvcCgpLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITApLHRoaXMuX2F0dGFjaG1lbnRzLm5leHQoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIuYWRkKHRoaXMpLHRoaXMuX2NvbmZpZy5kaXNwb3NlT25OYXZpZ2F0aW9uJiYodGhpcy5fbG9jYXRpb25DaGFuZ2VzPXRoaXMuX2xvY2F0aW9uLnN1YnNjcmliZSgoKCk9PnRoaXMuZGlzcG9zZSgpKSkpLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIuYWRkKHRoaXMpLGV9ZGV0YWNoKCl7aWYoIXRoaXMuaGFzQXR0YWNoZWQoKSlyZXR1cm47dGhpcy5kZXRhY2hCYWNrZHJvcCgpLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITEpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoJiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5JiZ0aGlzLl9zY3JvbGxTdHJhdGVneS5kaXNhYmxlKCk7Y29uc3QgdD10aGlzLl9wb3J0YWxPdXRsZXQuZGV0YWNoKCk7cmV0dXJuIHRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCksdGhpcy5fbG9jYXRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdH1kaXNwb3NlKCl7Y29uc3QgdD10aGlzLmhhc0F0dGFjaGVkKCk7dGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCksdGhpcy5fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCksdGhpcy5kZXRhY2hCYWNrZHJvcCgpLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5fcG9ydGFsT3V0bGV0LmRpc3Bvc2UoKSx0aGlzLl9hdHRhY2htZW50cy5jb21wbGV0ZSgpLHRoaXMuX2JhY2tkcm9wQ2xpY2suY29tcGxldGUoKSx0aGlzLl9rZXlkb3duRXZlbnRzLmNvbXBsZXRlKCksdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHMuY29tcGxldGUoKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9ob3N0JiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUmJih0aGlzLl9ob3N0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5faG9zdCksdGhpcy5faG9zdD1udWxsKSx0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQ9dGhpcy5fcGFuZT1udWxsLHQmJnRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9kZXRhY2htZW50cy5jb21wbGV0ZSgpfWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BDbGlja31hdHRhY2htZW50cygpe3JldHVybiB0aGlzLl9hdHRhY2htZW50c31kZXRhY2htZW50cygpe3JldHVybiB0aGlzLl9kZXRhY2htZW50c31rZXlkb3duRXZlbnRzKCl7cmV0dXJuIHRoaXMuX2tleWRvd25FdmVudHN9b3V0c2lkZVBvaW50ZXJFdmVudHMoKXtyZXR1cm4gdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHN9Z2V0Q29uZmlnKCl7cmV0dXJuIHRoaXMuX2NvbmZpZ311cGRhdGVQb3NpdGlvbigpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXBwbHkoKX11cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpe3QhPT10aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiYodGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCksdGhpcy5fcG9zaXRpb25TdHJhdGVneT10LHRoaXMuaGFzQXR0YWNoZWQoKSYmKHQuYXR0YWNoKHRoaXMpLHRoaXMudXBkYXRlUG9zaXRpb24oKSkpfXVwZGF0ZVNpemUodCl7dGhpcy5fY29uZmlnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9jb25maWcpLHQpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCl9c2V0RGlyZWN0aW9uKHQpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnKSx7ZGlyZWN0aW9uOnR9KSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl9YWRkUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMCl9cmVtb3ZlUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMSl9Z2V0RGlyZWN0aW9uKCl7Y29uc3QgdD10aGlzLl9jb25maWcuZGlyZWN0aW9uO3JldHVybiB0PyJzdHJpbmciPT10eXBlb2YgdD90OnQudmFsdWU6Imx0ciJ9dXBkYXRlU2Nyb2xsU3RyYXRlZ3kodCl7dCE9PXRoaXMuX3Njcm9sbFN0cmF0ZWd5JiYodGhpcy5fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dCx0aGlzLmhhc0F0dGFjaGVkKCkmJih0LmF0dGFjaCh0aGlzKSx0LmVuYWJsZSgpKSl9X3VwZGF0ZUVsZW1lbnREaXJlY3Rpb24oKXt0aGlzLl9ob3N0LnNldEF0dHJpYnV0ZSgiZGlyIix0aGlzLmdldERpcmVjdGlvbigpKX1fdXBkYXRlRWxlbWVudFNpemUoKXtpZighdGhpcy5fcGFuZSlyZXR1cm47Y29uc3QgdD10aGlzLl9wYW5lLnN0eWxlO3Qud2lkdGg9dnoodGhpcy5fY29uZmlnLndpZHRoKSx0LmhlaWdodD12eih0aGlzLl9jb25maWcuaGVpZ2h0KSx0Lm1pbldpZHRoPXZ6KHRoaXMuX2NvbmZpZy5taW5XaWR0aCksdC5taW5IZWlnaHQ9dnoodGhpcy5fY29uZmlnLm1pbkhlaWdodCksdC5tYXhXaWR0aD12eih0aGlzLl9jb25maWcubWF4V2lkdGgpLHQubWF4SGVpZ2h0PXZ6KHRoaXMuX2NvbmZpZy5tYXhIZWlnaHQpfV90b2dnbGVQb2ludGVyRXZlbnRzKHQpe3RoaXMuX3BhbmUuc3R5bGUucG9pbnRlckV2ZW50cz10PyIiOiJub25lIn1fYXR0YWNoQmFja2Ryb3AoKXtjb25zdCB0PSJjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIjt0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LWJhY2tkcm9wIiksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fYmFja2Ryb3BFbGVtZW50LHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCEwKSx0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9ob3N0KSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSwidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT90aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2JhY2tkcm9wRWxlbWVudCYmdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9KSl9KSk6dGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9X3VwZGF0ZVN0YWNraW5nT3JkZXIoKXt0aGlzLl9ob3N0Lm5leHRTaWJsaW5nJiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCl9ZGV0YWNoQmFja2Ryb3AoKXtsZXQgdCxlPXRoaXMuX2JhY2tkcm9wRWxlbWVudDtpZighZSlyZXR1cm47bGV0IG49KCk9PntlJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fYmFja2Ryb3BDbGlja0hhbmRsZXIpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsbiksZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSkpLHRoaXMuX2JhY2tkcm9wRWxlbWVudD09ZSYmKHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsKSx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3NlcyhlLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCExKSxjbGVhclRpbWVvdXQodCl9O2UuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyIpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLG4pfSkpLGUuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsdD10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KG4sNTAwKSkpfV90b2dnbGVDbGFzc2VzKHQsZSxuKXtjb25zdCBvPXQuY2xhc3NMaXN0O016KGUpLmZvckVhY2goKHQ9Pnt0JiYobj9vLmFkZCh0KTpvLnJlbW92ZSh0KSl9KSl9X2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IHQ9dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoSWUocmUodGhpcy5fYXR0YWNobWVudHMsdGhpcy5fZGV0YWNobWVudHMpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmUmJnRoaXMuX2hvc3QmJjAhPT10aGlzLl9wYW5lLmNoaWxkcmVuLmxlbmd0aHx8KHRoaXMuX3BhbmUmJnRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITEpLHRoaXMuX2hvc3QmJnRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmKHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudD10aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQsdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpKSx0LnVuc3Vic2NyaWJlKCkpfSkpfSkpfV9kaXNwb3NlU2Nyb2xsU3RyYXRlZ3koKXtjb25zdCB0PXRoaXMuX3Njcm9sbFN0cmF0ZWd5O3QmJih0LmRpc2FibGUoKSx0LmRldGFjaCYmdC5kZXRhY2goKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB0TD0iY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCIsZUw9LyhbQS1aYS16JV0rKSQvO2NsYXNzIG5Me2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7dGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX2RvY3VtZW50PW4sdGhpcy5fcGxhdGZvcm09byx0aGlzLl9vdmVybGF5Q29udGFpbmVyPWksdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5faXNQdXNoZWQ9ITEsdGhpcy5fY2FuUHVzaD0hMCx0aGlzLl9ncm93QWZ0ZXJPcGVuPSExLHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucz0hMCx0aGlzLl9wb3NpdGlvbkxvY2tlZD0hMSx0aGlzLl92aWV3cG9ydE1hcmdpbj0wLHRoaXMuX3Njcm9sbGFibGVzPVtdLHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz1bXSx0aGlzLl9wb3NpdGlvbkNoYW5nZXM9bmV3IEksdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPW0uRU1QVFksdGhpcy5fb2Zmc2V0WD0wLHRoaXMuX29mZnNldFk9MCx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdLHRoaXMucG9zaXRpb25DaGFuZ2VzPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlcyx0aGlzLnNldE9yaWdpbih0KX1nZXQgcG9zaXRpb25zKCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc31hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmdCE9PXRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBwb3NpdGlvbiBzdHJhdGVneSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGFuIG92ZXJsYXkiKTt0aGlzLl92YWxpZGF0ZVBvc2l0aW9ucygpLHQuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0TCksdGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX2JvdW5kaW5nQm94PXQuaG9zdEVsZW1lbnQsdGhpcy5fcGFuZT10Lm92ZXJsYXlFbGVtZW50LHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9pc0luaXRpYWxSZW5kZXI9ITAsdGhpcy5hcHBseSgpfSkpfWFwcGx5KCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmdGhpcy5fcG9zaXRpb25Mb2NrZWQmJnRoaXMuX2xhc3RQb3NpdGlvbilyZXR1cm4gdm9pZCB0aGlzLnJlYXBwbHlMYXN0UG9zaXRpb24oKTt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX3Jlc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoKSx0aGlzLl9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCksdGhpcy5fb3JpZ2luUmVjdD10aGlzLl9nZXRPcmlnaW5SZWN0KCksdGhpcy5fb3ZlcmxheVJlY3Q9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCB0PXRoaXMuX29yaWdpblJlY3QsZT10aGlzLl9vdmVybGF5UmVjdCxuPXRoaXMuX3ZpZXdwb3J0UmVjdCxvPVtdO2xldCBpO2ZvcihsZXQgYSBvZiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpe2xldCByPXRoaXMuX2dldE9yaWdpblBvaW50KHQsYSkscz10aGlzLl9nZXRPdmVybGF5UG9pbnQocixlLGEpLGw9dGhpcy5fZ2V0T3ZlcmxheUZpdChzLGUsbixhKTtpZihsLmlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0KXJldHVybiB0aGlzLl9pc1B1c2hlZD0hMSx2b2lkIHRoaXMuX2FwcGx5UG9zaXRpb24oYSxyKTt0aGlzLl9jYW5GaXRXaXRoRmxleGlibGVEaW1lbnNpb25zKGwscyxuKT9vLnB1c2goe3Bvc2l0aW9uOmEsb3JpZ2luOnIsb3ZlcmxheVJlY3Q6ZSxib3VuZGluZ0JveFJlY3Q6dGhpcy5fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHIsYSl9KTooIWl8fGkub3ZlcmxheUZpdC52aXNpYmxlQXJlYTxsLnZpc2libGVBcmVhKSYmKGk9e292ZXJsYXlGaXQ6bCxvdmVybGF5UG9pbnQ6cyxvcmlnaW5Qb2ludDpyLHBvc2l0aW9uOmEsb3ZlcmxheVJlY3Q6ZX0pfWlmKG8ubGVuZ3RoKXtsZXQgdD1udWxsLGU9LTE7Zm9yKGNvbnN0IG4gb2Ygbyl7Y29uc3Qgbz1uLmJvdW5kaW5nQm94UmVjdC53aWR0aCpuLmJvdW5kaW5nQm94UmVjdC5oZWlnaHQqKG4ucG9zaXRpb24ud2VpZ2h0fHwxKTtvPmUmJihlPW8sdD1uKX1yZXR1cm4gdGhpcy5faXNQdXNoZWQ9ITEsdm9pZCB0aGlzLl9hcHBseVBvc2l0aW9uKHQucG9zaXRpb24sdC5vcmlnaW4pfWlmKHRoaXMuX2NhblB1c2gpcmV0dXJuIHRoaXMuX2lzUHVzaGVkPSEwLHZvaWQgdGhpcy5fYXBwbHlQb3NpdGlvbihpLnBvc2l0aW9uLGkub3JpZ2luUG9pbnQpO3RoaXMuX2FwcGx5UG9zaXRpb24oaS5wb3NpdGlvbixpLm9yaWdpblBvaW50KX1kZXRhY2goKXt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudD1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5fYm91bmRpbmdCb3gmJm9MKHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLHt0b3A6IiIsbGVmdDoiIixyaWdodDoiIixib3R0b206IiIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KSx0aGlzLl9wYW5lJiZ0aGlzLl9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRMKSx0aGlzLmRldGFjaCgpLHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWY9dGhpcy5fYm91bmRpbmdCb3g9bnVsbCx0aGlzLl9pc0Rpc3Bvc2VkPSEwKX1yZWFwcGx5TGFzdFBvc2l0aW9uKCl7aWYoIXRoaXMuX2lzRGlzcG9zZWQmJighdGhpcy5fcGxhdGZvcm18fHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikpe3RoaXMuX29yaWdpblJlY3Q9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLHRoaXMuX292ZXJsYXlSZWN0PXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCk7Y29uc3QgdD10aGlzLl9sYXN0UG9zaXRpb258fHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc1swXSxlPXRoaXMuX2dldE9yaWdpblBvaW50KHRoaXMuX29yaWdpblJlY3QsdCk7dGhpcy5fYXBwbHlQb3NpdGlvbih0LGUpfX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7cmV0dXJuIHRoaXMuX3Njcm9sbGFibGVzPXQsdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dCwtMT09PXQuaW5kZXhPZih0aGlzLl9sYXN0UG9zaXRpb24pJiYodGhpcy5fbGFzdFBvc2l0aW9uPW51bGwpLHRoaXMuX3ZhbGlkYXRlUG9zaXRpb25zKCksdGhpc313aXRoVmlld3BvcnRNYXJnaW4odCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0TWFyZ2luPXQsdGhpc313aXRoRmxleGlibGVEaW1lbnNpb25zKHQ9ITApe3JldHVybiB0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9dCx0aGlzfXdpdGhHcm93QWZ0ZXJPcGVuKHQ9ITApe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVuPXQsdGhpc313aXRoUHVzaCh0PSEwKXtyZXR1cm4gdGhpcy5fY2FuUHVzaD10LHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQ9ITApe3JldHVybiB0aGlzLl9wb3NpdGlvbkxvY2tlZD10LHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WCh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WD10LHRoaXN9d2l0aERlZmF1bHRPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9vZmZzZXRZPXQsdGhpc313aXRoVHJhbnNmb3JtT3JpZ2luT24odCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yPXQsdGhpc31fZ2V0T3JpZ2luUG9pbnQodCxlKXtsZXQgbixvO2lmKCJjZW50ZXIiPT1lLm9yaWdpblgpbj10LmxlZnQrdC53aWR0aC8yO2Vsc2V7Y29uc3Qgbz10aGlzLl9pc1J0bCgpP3QucmlnaHQ6dC5sZWZ0LGk9dGhpcy5faXNSdGwoKT90LmxlZnQ6dC5yaWdodDtuPSJzdGFydCI9PWUub3JpZ2luWD9vOml9cmV0dXJuIG89ImNlbnRlciI9PWUub3JpZ2luWT90LnRvcCt0LmhlaWdodC8yOiJ0b3AiPT1lLm9yaWdpblk/dC50b3A6dC5ib3R0b20se3g6bix5Om99fV9nZXRPdmVybGF5UG9pbnQodCxlLG4pe2xldCBvLGk7cmV0dXJuIG89ImNlbnRlciI9PW4ub3ZlcmxheVg/LWUud2lkdGgvMjoic3RhcnQiPT09bi5vdmVybGF5WD90aGlzLl9pc1J0bCgpPy1lLndpZHRoOjA6dGhpcy5faXNSdGwoKT8wOi1lLndpZHRoLGk9ImNlbnRlciI9PW4ub3ZlcmxheVk/LWUuaGVpZ2h0LzI6InRvcCI9PW4ub3ZlcmxheVk/MDotZS5oZWlnaHQse3g6dC54K28seTp0LnkraX19X2dldE92ZXJsYXlGaXQodCxlLG4sbyl7Y29uc3QgaT1hTChlKTtsZXR7eDphLHk6cn09dCxzPXRoaXMuX2dldE9mZnNldChvLCJ4IiksbD10aGlzLl9nZXRPZmZzZXQobywieSIpO3MmJihhKz1zKSxsJiYocis9bCk7bGV0IGM9MC1yLGQ9citpLmhlaWdodC1uLmhlaWdodCxwPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGkud2lkdGgsMC1hLGEraS53aWR0aC1uLndpZHRoKSxtPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGkuaGVpZ2h0LGMsZCksdT1wKm07cmV0dXJue3Zpc2libGVBcmVhOnUsaXNDb21wbGV0ZWx5V2l0aGluVmlld3BvcnQ6aS53aWR0aCppLmhlaWdodD09PXUsZml0c0luVmlld3BvcnRWZXJ0aWNhbGx5Om09PT1pLmhlaWdodCxmaXRzSW5WaWV3cG9ydEhvcml6b250YWxseTpwPT1pLndpZHRofX1fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0LGUsbil7aWYodGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zKXtjb25zdCBvPW4uYm90dG9tLWUueSxpPW4ucmlnaHQtZS54LGE9aUwodGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5taW5IZWlnaHQpLHI9aUwodGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5taW5XaWR0aCkscz10LmZpdHNJblZpZXdwb3J0SG9yaXpvbnRhbGx5fHxudWxsIT1yJiZyPD1pO3JldHVybih0LmZpdHNJblZpZXdwb3J0VmVydGljYWxseXx8bnVsbCE9YSYmYTw9bykmJnN9cmV0dXJuITF9X3B1c2hPdmVybGF5T25TY3JlZW4odCxlLG4pe2lmKHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudCYmdGhpcy5fcG9zaXRpb25Mb2NrZWQpcmV0dXJue3g6dC54K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC54LHk6dC55K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC55fTtjb25zdCBvPWFMKGUpLGk9dGhpcy5fdmlld3BvcnRSZWN0LGE9TWF0aC5tYXgodC54K28ud2lkdGgtaS53aWR0aCwwKSxyPU1hdGgubWF4KHQueStvLmhlaWdodC1pLmhlaWdodCwwKSxzPU1hdGgubWF4KGkudG9wLW4udG9wLXQueSwwKSxsPU1hdGgubWF4KGkubGVmdC1uLmxlZnQtdC54LDApO2xldCBjPTAsZD0wO3JldHVybiBjPW8ud2lkdGg8PWkud2lkdGg/bHx8LWE6dC54PHRoaXMuX3ZpZXdwb3J0TWFyZ2luP2kubGVmdC1uLmxlZnQtdC54OjAsZD1vLmhlaWdodDw9aS5oZWlnaHQ/c3x8LXI6dC55PHRoaXMuX3ZpZXdwb3J0TWFyZ2luP2kudG9wLW4udG9wLXQueTowLHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudD17eDpjLHk6ZH0se3g6dC54K2MseTp0LnkrZH19X2FwcGx5UG9zaXRpb24odCxlKXtpZih0aGlzLl9zZXRUcmFuc2Zvcm1PcmlnaW4odCksdGhpcy5fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoZSx0KSx0aGlzLl9zZXRCb3VuZGluZ0JveFN0eWxlcyhlLHQpLHQucGFuZWxDbGFzcyYmdGhpcy5fYWRkUGFuZWxDbGFzc2VzKHQucGFuZWxDbGFzcyksdGhpcy5fbGFzdFBvc2l0aW9uPXQsdGhpcy5fcG9zaXRpb25DaGFuZ2VzLm9ic2VydmVycy5sZW5ndGgpe2NvbnN0IGU9dGhpcy5fZ2V0U2Nyb2xsVmlzaWJpbGl0eSgpLG49bmV3IEdGKHQsZSk7dGhpcy5fcG9zaXRpb25DaGFuZ2VzLm5leHQobil9dGhpcy5faXNJbml0aWFsUmVuZGVyPSExfV9zZXRUcmFuc2Zvcm1PcmlnaW4odCl7aWYoIXRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKXJldHVybjtjb25zdCBlPXRoaXMuX2JvdW5kaW5nQm94LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5fdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IpO2xldCBuLG89dC5vdmVybGF5WTtuPSJjZW50ZXIiPT09dC5vdmVybGF5WD8iY2VudGVyIjp0aGlzLl9pc1J0bCgpPyJzdGFydCI9PT10Lm92ZXJsYXlYPyJyaWdodCI6ImxlZnQiOiJzdGFydCI9PT10Lm92ZXJsYXlYPyJsZWZ0IjoicmlnaHQiO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uc3R5bGUudHJhbnNmb3JtT3JpZ2luPWAke259ICR7b31gfV9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QodCxlKXtjb25zdCBuPXRoaXMuX3ZpZXdwb3J0UmVjdCxvPXRoaXMuX2lzUnRsKCk7bGV0IGksYSxyLHMsbCxjO2lmKCJ0b3AiPT09ZS5vdmVybGF5WSlhPXQueSxpPW4uaGVpZ2h0LWErdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZSBpZigiYm90dG9tIj09PWUub3ZlcmxheVkpcj1uLmhlaWdodC10LnkrMip0aGlzLl92aWV3cG9ydE1hcmdpbixpPW4uaGVpZ2h0LXIrdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZXtjb25zdCBlPU1hdGgubWluKG4uYm90dG9tLXQueStuLnRvcCx0LnkpLG89dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS5oZWlnaHQ7aT0yKmUsYT10LnktZSxpPm8mJiF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYoYT10Lnktby8yKX1pZigiZW5kIj09PWUub3ZlcmxheVgmJiFvfHwic3RhcnQiPT09ZS5vdmVybGF5WCYmbyljPW4ud2lkdGgtdC54K3RoaXMuX3ZpZXdwb3J0TWFyZ2luLHM9dC54LXRoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2UgaWYoInN0YXJ0Ij09PWUub3ZlcmxheVgmJiFvfHwiZW5kIj09PWUub3ZlcmxheVgmJm8pbD10Lngscz1uLnJpZ2h0LXQueDtlbHNle2NvbnN0IGU9TWF0aC5taW4obi5yaWdodC10Lngrbi5sZWZ0LHQueCksbz10aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLndpZHRoO3M9MiplLGw9dC54LWUscz5vJiYhdGhpcy5faXNJbml0aWFsUmVuZGVyJiYhdGhpcy5fZ3Jvd0FmdGVyT3BlbiYmKGw9dC54LW8vMil9cmV0dXJue3RvcDphLGxlZnQ6bCxib3R0b206cixyaWdodDpjLHdpZHRoOnMsaGVpZ2h0Oml9fV9zZXRCb3VuZGluZ0JveFN0eWxlcyh0LGUpe2NvbnN0IG49dGhpcy5fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHQsZSk7dGhpcy5faXNJbml0aWFsUmVuZGVyfHx0aGlzLl9ncm93QWZ0ZXJPcGVufHwobi5oZWlnaHQ9TWF0aC5taW4obi5oZWlnaHQsdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS5oZWlnaHQpLG4ud2lkdGg9TWF0aC5taW4obi53aWR0aCx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLndpZHRoKSk7Y29uc3Qgbz17fTtpZih0aGlzLl9oYXNFeGFjdFBvc2l0aW9uKCkpby50b3A9by5sZWZ0PSIwIixvLmJvdHRvbT1vLnJpZ2h0PW8ubWF4SGVpZ2h0PW8ubWF4V2lkdGg9IiIsby53aWR0aD1vLmhlaWdodD0iMTAwJSI7ZWxzZXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWF4SGVpZ2h0LGk9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5tYXhXaWR0aDtvLmhlaWdodD12eihuLmhlaWdodCksby50b3A9dnoobi50b3ApLG8uYm90dG9tPXZ6KG4uYm90dG9tKSxvLndpZHRoPXZ6KG4ud2lkdGgpLG8ubGVmdD12eihuLmxlZnQpLG8ucmlnaHQ9dnoobi5yaWdodCksby5hbGlnbkl0ZW1zPSJjZW50ZXIiPT09ZS5vdmVybGF5WD8iY2VudGVyIjoiZW5kIj09PWUub3ZlcmxheVg/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsby5qdXN0aWZ5Q29udGVudD0iY2VudGVyIj09PWUub3ZlcmxheVk/ImNlbnRlciI6ImJvdHRvbSI9PT1lLm92ZXJsYXlZPyJmbGV4LWVuZCI6ImZsZXgtc3RhcnQiLHQmJihvLm1heEhlaWdodD12eih0KSksaSYmKG8ubWF4V2lkdGg9dnooaSkpfXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemU9bixvTCh0aGlzLl9ib3VuZGluZ0JveC5zdHlsZSxvKX1fcmVzZXRCb3VuZGluZ0JveFN0eWxlcygpe29MKHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLHt0b3A6IjAiLGxlZnQ6IjAiLHJpZ2h0OiIwIixib3R0b206IjAiLGhlaWdodDoiIix3aWR0aDoiIixhbGlnbkl0ZW1zOiIiLGp1c3RpZnlDb250ZW50OiIifSl9X3Jlc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoKXtvTCh0aGlzLl9wYW5lLnN0eWxlLHt0b3A6IiIsbGVmdDoiIixib3R0b206IiIscmlnaHQ6IiIscG9zaXRpb246IiIsdHJhbnNmb3JtOiIifSl9X3NldE92ZXJsYXlFbGVtZW50U3R5bGVzKHQsZSl7Y29uc3Qgbj17fSxvPXRoaXMuX2hhc0V4YWN0UG9zaXRpb24oKSxpPXRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucyxhPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCk7aWYobyl7Y29uc3Qgbz10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtvTChuLHRoaXMuX2dldEV4YWN0T3ZlcmxheVkoZSx0LG8pKSxvTChuLHRoaXMuX2dldEV4YWN0T3ZlcmxheVgoZSx0LG8pKX1lbHNlIG4ucG9zaXRpb249InN0YXRpYyI7bGV0IHI9IiIscz10aGlzLl9nZXRPZmZzZXQoZSwieCIpLGw9dGhpcy5fZ2V0T2Zmc2V0KGUsInkiKTtzJiYocis9YHRyYW5zbGF0ZVgoJHtzfXB4KSBgKSxsJiYocis9YHRyYW5zbGF0ZVkoJHtsfXB4KWApLG4udHJhbnNmb3JtPXIudHJpbSgpLGEubWF4SGVpZ2h0JiYobz9uLm1heEhlaWdodD12eihhLm1heEhlaWdodCk6aSYmKG4ubWF4SGVpZ2h0PSIiKSksYS5tYXhXaWR0aCYmKG8/bi5tYXhXaWR0aD12eihhLm1heFdpZHRoKTppJiYobi5tYXhXaWR0aD0iIikpLG9MKHRoaXMuX3BhbmUuc3R5bGUsbil9X2dldEV4YWN0T3ZlcmxheVkodCxlLG4pe2xldCBvPXt0b3A6IiIsYm90dG9tOiIifSxpPXRoaXMuX2dldE92ZXJsYXlQb2ludChlLHRoaXMuX292ZXJsYXlSZWN0LHQpO3RoaXMuX2lzUHVzaGVkJiYoaT10aGlzLl9wdXNoT3ZlcmxheU9uU2NyZWVuKGksdGhpcy5fb3ZlcmxheVJlY3QsbikpO2xldCBhPXRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtyZXR1cm4gaS55LT1hLCJib3R0b20iPT09dC5vdmVybGF5WT9vLmJvdHRvbT10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LShpLnkrdGhpcy5fb3ZlcmxheVJlY3QuaGVpZ2h0KSsicHgiOm8udG9wPXZ6KGkueSksb31fZ2V0RXhhY3RPdmVybGF5WCh0LGUsbil7bGV0IG8saT17bGVmdDoiIixyaWdodDoiIn0sYT10aGlzLl9nZXRPdmVybGF5UG9pbnQoZSx0aGlzLl9vdmVybGF5UmVjdCx0KTtyZXR1cm4gdGhpcy5faXNQdXNoZWQmJihhPXRoaXMuX3B1c2hPdmVybGF5T25TY3JlZW4oYSx0aGlzLl9vdmVybGF5UmVjdCxuKSksbz10aGlzLl9pc1J0bCgpPyJlbmQiPT09dC5vdmVybGF5WD8ibGVmdCI6InJpZ2h0IjoiZW5kIj09PXQub3ZlcmxheVg/InJpZ2h0IjoibGVmdCIsInJpZ2h0Ij09PW8/aS5yaWdodD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgtKGEueCt0aGlzLl9vdmVybGF5UmVjdC53aWR0aCkrInB4IjppLmxlZnQ9dnooYS54KSxpfV9nZXRTY3JvbGxWaXNpYmlsaXR5KCl7Y29uc3QgdD10aGlzLl9nZXRPcmlnaW5SZWN0KCksZT10aGlzLl9wYW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dGhpcy5fc2Nyb2xsYWJsZXMubWFwKCh0PT50LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSk7cmV0dXJue2lzT3JpZ2luQ2xpcHBlZDpGRih0LG4pLGlzT3JpZ2luT3V0c2lkZVZpZXc6SEYodCxuKSxpc092ZXJsYXlDbGlwcGVkOkZGKGUsbiksaXNPdmVybGF5T3V0c2lkZVZpZXc6SEYoZSxuKX19X3N1YnRyYWN0T3ZlcmZsb3dzKHQsLi4uZSl7cmV0dXJuIGUucmVkdWNlKCgodCxlKT0+dC1NYXRoLm1heChlLDApKSx0KX1fZ2V0TmFycm93ZWRWaWV3cG9ydFJlY3QoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxlPXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm57dG9wOm4udG9wK3RoaXMuX3ZpZXdwb3J0TWFyZ2luLGxlZnQ6bi5sZWZ0K3RoaXMuX3ZpZXdwb3J0TWFyZ2luLHJpZ2h0Om4ubGVmdCt0LXRoaXMuX3ZpZXdwb3J0TWFyZ2luLGJvdHRvbTpuLnRvcCtlLXRoaXMuX3ZpZXdwb3J0TWFyZ2luLHdpZHRoOnQtMip0aGlzLl92aWV3cG9ydE1hcmdpbixoZWlnaHQ6ZS0yKnRoaXMuX3ZpZXdwb3J0TWFyZ2lufX1faXNSdGwoKXtyZXR1cm4icnRsIj09PXRoaXMuX292ZXJsYXlSZWYuZ2V0RGlyZWN0aW9uKCl9X2hhc0V4YWN0UG9zaXRpb24oKXtyZXR1cm4hdGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zfHx0aGlzLl9pc1B1c2hlZH1fZ2V0T2Zmc2V0KHQsZSl7cmV0dXJuIngiPT09ZT9udWxsPT10Lm9mZnNldFg/dGhpcy5fb2Zmc2V0WDp0Lm9mZnNldFg6bnVsbD09dC5vZmZzZXRZP3RoaXMuX29mZnNldFk6dC5vZmZzZXRZfV92YWxpZGF0ZVBvc2l0aW9ucygpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKCF0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMubGVuZ3RoKXRocm93IEVycm9yKCJGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3k6IEF0IGxlYXN0IG9uZSBwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTt0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMuZm9yRWFjaCgodD0+e1lGKCJvcmlnaW5YIix0Lm9yaWdpblgpLFdGKCJvcmlnaW5ZIix0Lm9yaWdpblkpLFlGKCJvdmVybGF5WCIsdC5vdmVybGF5WCksV0YoIm92ZXJsYXlZIix0Lm92ZXJsYXlZKX0pKX19X2FkZFBhbmVsQ2xhc3Nlcyh0KXt0aGlzLl9wYW5lJiZNeih0KS5mb3JFYWNoKCh0PT57IiIhPT10JiYtMT09PXRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMuaW5kZXhPZih0KSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMucHVzaCh0KSx0aGlzLl9wYW5lLmNsYXNzTGlzdC5hZGQodCkpfSkpfV9jbGVhclBhbmVsQ2xhc3Nlcygpe3RoaXMuX3BhbmUmJih0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzLmZvckVhY2goKHQ9Pnt0aGlzLl9wYW5lLmNsYXNzTGlzdC5yZW1vdmUodCl9KSksdGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcz1bXSl9X2dldE9yaWdpblJlY3QoKXtjb25zdCB0PXRoaXMuX29yaWdpbjtpZih0IGluc3RhbmNlb2YgaGcpcmV0dXJuIHQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0IGluc3RhbmNlb2YgRWxlbWVudClyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCBlPXQud2lkdGh8fDAsbj10LmhlaWdodHx8MDtyZXR1cm57dG9wOnQueSxib3R0b206dC55K24sbGVmdDp0LngscmlnaHQ6dC54K2UsaGVpZ2h0Om4sd2lkdGg6ZX19fWZ1bmN0aW9uIG9MKHQsZSl7Zm9yKGxldCBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gaUwodCl7aWYoIm51bWJlciIhPXR5cGVvZiB0JiZudWxsIT10KXtjb25zdFtlLG5dPXQuc3BsaXQoZUwpO3JldHVybiBuJiYicHgiIT09bj9udWxsOnBhcnNlRmxvYXQoZSl9cmV0dXJuIHR8fG51bGx9ZnVuY3Rpb24gYUwodCl7cmV0dXJue3RvcDpNYXRoLmZsb29yKHQudG9wKSxyaWdodDpNYXRoLmZsb29yKHQucmlnaHQpLGJvdHRvbTpNYXRoLmZsb29yKHQuYm90dG9tKSxsZWZ0Ok1hdGguZmxvb3IodC5sZWZ0KSx3aWR0aDpNYXRoLmZsb29yKHQud2lkdGgpLGhlaWdodDpNYXRoLmZsb29yKHQuaGVpZ2h0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHJMe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz1bXSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PW5ldyBuTChuLG8saSxhLHIpLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhQdXNoKCExKS53aXRoVmlld3BvcnRNYXJnaW4oMCksdGhpcy53aXRoRmFsbGJhY2tQb3NpdGlvbih0LGUpLHRoaXMub25Qb3NpdGlvbkNoYW5nZT10aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnBvc2l0aW9uQ2hhbmdlc31nZXQgcG9zaXRpb25zKCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc31hdHRhY2godCl7dGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXR0YWNoKHQpLHRoaXMuX2RpcmVjdGlvbiYmKHQuc2V0RGlyZWN0aW9uKHRoaXMuX2RpcmVjdGlvbiksdGhpcy5fZGlyZWN0aW9uPW51bGwpfWRpc3Bvc2UoKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRpc3Bvc2UoKX1kZXRhY2goKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCgpfWFwcGx5KCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5hcHBseSgpfXJlY2FsY3VsYXRlTGFzdFBvc2l0aW9uKCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5yZWFwcGx5TGFzdFBvc2l0aW9uKCl9d2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpfXdpdGhGYWxsYmFja1Bvc2l0aW9uKHQsZSxuLG8pe2NvbnN0IGk9bmV3IGpGKHQsZSxuLG8pO3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMucHVzaChpKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnModGhpcy5fcHJlZmVycmVkUG9zaXRpb25zKSx0aGlzfXdpdGhEaXJlY3Rpb24odCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5zZXREaXJlY3Rpb24odCk6dGhpcy5fZGlyZWN0aW9uPXQsdGhpc313aXRoT2Zmc2V0WCh0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoRGVmYXVsdE9mZnNldFgodCksdGhpc313aXRoT2Zmc2V0WSh0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoRGVmYXVsdE9mZnNldFkodCksdGhpc313aXRoTG9ja2VkUG9zaXRpb24odCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aExvY2tlZFBvc2l0aW9uKHQpLHRoaXN9d2l0aFBvc2l0aW9ucyh0KXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPXQuc2xpY2UoKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhQb3NpdGlvbnModGhpcy5fcHJlZmVycmVkUG9zaXRpb25zKSx0aGlzfXNldE9yaWdpbih0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS5zZXRPcmlnaW4odCksdGhpc319Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHNMPSJjZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciI7Y2xhc3MgbEx7Y29uc3RydWN0b3IoKXt0aGlzLl9jc3NQb3NpdGlvbj0ic3RhdGljIix0aGlzLl90b3BPZmZzZXQ9IiIsdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX2xlZnRPZmZzZXQ9IiIsdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fYWxpZ25JdGVtcz0iIix0aGlzLl9qdXN0aWZ5Q29udGVudD0iIix0aGlzLl93aWR0aD0iIix0aGlzLl9oZWlnaHQ9IiJ9YXR0YWNoKHQpe2NvbnN0IGU9dC5nZXRDb25maWcoKTt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fd2lkdGgmJiFlLndpZHRoJiZ0LnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMuX3dpZHRofSksdGhpcy5faGVpZ2h0JiYhZS5oZWlnaHQmJnQudXBkYXRlU2l6ZSh7aGVpZ2h0OnRoaXMuX2hlaWdodH0pLHQuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChzTCksdGhpcy5faXNEaXNwb3NlZD0hMX10b3AodD0iIil7cmV0dXJuIHRoaXMuX2JvdHRvbU9mZnNldD0iIix0aGlzLl90b3BPZmZzZXQ9dCx0aGlzLl9hbGlnbkl0ZW1zPSJmbGV4LXN0YXJ0Iix0aGlzfWxlZnQodD0iIil7cmV0dXJuIHRoaXMuX3JpZ2h0T2Zmc2V0PSIiLHRoaXMuX2xlZnRPZmZzZXQ9dCx0aGlzLl9qdXN0aWZ5Q29udGVudD0iZmxleC1zdGFydCIsdGhpc31ib3R0b20odD0iIil7cmV0dXJuIHRoaXMuX3RvcE9mZnNldD0iIix0aGlzLl9ib3R0b21PZmZzZXQ9dCx0aGlzLl9hbGlnbkl0ZW1zPSJmbGV4LWVuZCIsdGhpc31yaWdodCh0PSIiKXtyZXR1cm4gdGhpcy5fbGVmdE9mZnNldD0iIix0aGlzLl9yaWdodE9mZnNldD10LHRoaXMuX2p1c3RpZnlDb250ZW50PSJmbGV4LWVuZCIsdGhpc313aWR0aCh0PSIiKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe3dpZHRoOnR9KTp0aGlzLl93aWR0aD10LHRoaXN9aGVpZ2h0KHQ9IiIpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7aGVpZ2h0OnR9KTp0aGlzLl9oZWlnaHQ9dCx0aGlzfWNlbnRlckhvcml6b250YWxseSh0PSIiKXtyZXR1cm4gdGhpcy5sZWZ0KHQpLHRoaXMuX2p1c3RpZnlDb250ZW50PSJjZW50ZXIiLHRoaXN9Y2VudGVyVmVydGljYWxseSh0PSIiKXtyZXR1cm4gdGhpcy50b3AodCksdGhpcy5fYWxpZ25JdGVtcz0iY2VudGVyIix0aGlzfWFwcGx5KCl7aWYoIXRoaXMuX292ZXJsYXlSZWZ8fCF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQuc3R5bGUsbj10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLHt3aWR0aDpvLGhlaWdodDppLG1heFdpZHRoOmEsbWF4SGVpZ2h0OnJ9PW4scz0hKCIxMDAlIiE9PW8mJiIxMDB2dyIhPT1vfHxhJiYiMTAwJSIhPT1hJiYiMTAwdnciIT09YSksbD0hKCIxMDAlIiE9PWkmJiIxMDB2aCIhPT1pfHxyJiYiMTAwJSIhPT1yJiYiMTAwdmgiIT09cik7dC5wb3NpdGlvbj10aGlzLl9jc3NQb3NpdGlvbix0Lm1hcmdpbkxlZnQ9cz8iMCI6dGhpcy5fbGVmdE9mZnNldCx0Lm1hcmdpblRvcD1sPyIwIjp0aGlzLl90b3BPZmZzZXQsdC5tYXJnaW5Cb3R0b209dGhpcy5fYm90dG9tT2Zmc2V0LHQubWFyZ2luUmlnaHQ9dGhpcy5fcmlnaHRPZmZzZXQscz9lLmp1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0IjoiY2VudGVyIj09PXRoaXMuX2p1c3RpZnlDb250ZW50P2UuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciI6InJ0bCI9PT10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLmRpcmVjdGlvbj8iZmxleC1zdGFydCI9PT10aGlzLl9qdXN0aWZ5Q29udGVudD9lLmp1c3RpZnlDb250ZW50PSJmbGV4LWVuZCI6ImZsZXgtZW5kIj09PXRoaXMuX2p1c3RpZnlDb250ZW50JiYoZS5qdXN0aWZ5Q29udGVudD0iZmxleC1zdGFydCIpOmUuanVzdGlmeUNvbnRlbnQ9dGhpcy5fanVzdGlmeUNvbnRlbnQsZS5hbGlnbkl0ZW1zPWw/ImZsZXgtc3RhcnQiOnRoaXMuX2FsaWduSXRlbXN9ZGlzcG9zZSgpe2lmKHRoaXMuX2lzRGlzcG9zZWR8fCF0aGlzLl9vdmVybGF5UmVmKXJldHVybjtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUsZT10aGlzLl9vdmVybGF5UmVmLmhvc3RFbGVtZW50LG49ZS5zdHlsZTtlLmNsYXNzTGlzdC5yZW1vdmUoc0wpLG4uanVzdGlmeUNvbnRlbnQ9bi5hbGlnbkl0ZW1zPXQubWFyZ2luVG9wPXQubWFyZ2luQm90dG9tPXQubWFyZ2luTGVmdD10Lm1hcmdpblJpZ2h0PXQucG9zaXRpb249IiIsdGhpcy5fb3ZlcmxheVJlZj1udWxsLHRoaXMuX2lzRGlzcG9zZWQ9ITB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBjTHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl92aWV3cG9ydFJ1bGVyPXQsdGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX292ZXJsYXlDb250YWluZXI9b31nbG9iYWwoKXtyZXR1cm4gbmV3IGxMfWNvbm5lY3RlZFRvKHQsZSxuKXtyZXR1cm4gbmV3IHJMKGUsbix0LHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fcGxhdGZvcm0sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcil9ZmxleGlibGVDb25uZWN0ZWRUbyh0KXtyZXR1cm4gbmV3IG5MKHQsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kb2N1bWVudCx0aGlzLl9wbGF0Zm9ybSx0aGlzLl9vdmVybGF5Q29udGFpbmVyKX19Y0wuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNMKSh2cih1RiksdnIoWl8pLHZyKHd6KSx2cihRRikpfSxjTC7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgY0wodnIodUYpLHZyKFpfKSx2cih3eiksdnIoUUYpKX0sdG9rZW46Y0wscHJvdmlkZWRJbjoicm9vdCJ9KSxjTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnVGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fSx7dHlwZTpRRn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoY0wsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fSx7dHlwZTpRRn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgZEw9MDtjbGFzcyBwTHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQpe3RoaXMuc2Nyb2xsU3RyYXRlZ2llcz10LHRoaXMuX292ZXJsYXlDb250YWluZXI9ZSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9bix0aGlzLl9wb3NpdGlvbkJ1aWxkZXI9byx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXI9aSx0aGlzLl9pbmplY3Rvcj1hLHRoaXMuX25nWm9uZT1yLHRoaXMuX2RvY3VtZW50PXMsdGhpcy5fZGlyZWN0aW9uYWxpdHk9bCx0aGlzLl9sb2NhdGlvbj1jLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXI9ZH1jcmVhdGUodCl7Y29uc3QgZT10aGlzLl9jcmVhdGVIb3N0RWxlbWVudCgpLG49dGhpcy5fY3JlYXRlUGFuZUVsZW1lbnQoZSksbz10aGlzLl9jcmVhdGVQb3J0YWxPdXRsZXQobiksaT1uZXcgVkYodCk7cmV0dXJuIGkuZGlyZWN0aW9uPWkuZGlyZWN0aW9ufHx0aGlzLl9kaXJlY3Rpb25hbGl0eS52YWx1ZSxuZXcgJEYobyxlLG4saSx0aGlzLl9uZ1pvbmUsdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX2xvY2F0aW9uLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIpfXBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uQnVpbGRlcn1fY3JlYXRlUGFuZUVsZW1lbnQodCl7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5pZD0iY2RrLW92ZXJsYXktIitkTCsrLGUuY2xhc3NMaXN0LmFkZCgiY2RrLW92ZXJsYXktcGFuZSIpLHQuYXBwZW5kQ2hpbGQoZSksZX1fY3JlYXRlSG9zdEVsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKS5hcHBlbmRDaGlsZCh0KSx0fV9jcmVhdGVQb3J0YWxPdXRsZXQodCl7cmV0dXJuIHRoaXMuX2FwcFJlZnx8KHRoaXMuX2FwcFJlZj10aGlzLl9pbmplY3Rvci5nZXQoT18pKSxuZXcgd0YodCx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsdGhpcy5fYXBwUmVmLHRoaXMuX2luamVjdG9yLHRoaXMuX2RvY3VtZW50KX19cEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBMKSh2cihCRiksdnIoUUYpLHZyKHVnKSx2cihjTCksdnIoWkYpLHZyKHJwKSx2cihhXyksdnIoWl8pLHZyKEhJKSx2cihsQyksdnIoWEYpKX0scEwuybVwcm92PU1uKHt0b2tlbjpwTCxmYWN0b3J5OnBMLsm1ZmFjfSkscEwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpCRn0se3R5cGU6UUZ9LHt0eXBlOnVnfSx7dHlwZTpjTH0se3R5cGU6WkZ9LHt0eXBlOnJwfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTpISX0se3R5cGU6bEN9LHt0eXBlOlhGfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwTCxbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QkZ9LHt0eXBlOlFGfSx7dHlwZTp1Z30se3R5cGU6Y0x9LHt0eXBlOlpGfSx7dHlwZTpycH0se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6SEl9LHt0eXBlOmxDfSx7dHlwZTpYRn1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBtTD1be29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6InRvcCJ9LHtvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJib3R0b20ifSx7b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJib3R0b20ifSx7b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJ0b3AifV0sdUw9bmV3IEdhKCJjZGstY29ubmVjdGVkLW92ZXJsYXktc2Nyb2xsLXN0cmF0ZWd5Iik7Y2xhc3MgZkx7Y29uc3RydWN0b3IodCl7dGhpcy5lbGVtZW50UmVmPXR9fWZMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmTCkoU20oaGcpKX0sZkwuybVkaXI9bG8oe3R5cGU6Zkwsc2VsZWN0b3JzOltbIiIsImNkay1vdmVybGF5LW9yaWdpbiIsIiJdLFsiIiwib3ZlcmxheS1vcmlnaW4iLCIiXSxbIiIsImNka092ZXJsYXlPcmlnaW4iLCIiXV0sZXhwb3J0QXM6WyJjZGtPdmVybGF5T3JpZ2luIl19KSxmTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChmTCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrLW92ZXJsYXktb3JpZ2luXSwgW292ZXJsYXktb3JpZ2luXSwgW2Nka092ZXJsYXlPcmlnaW5dIixleHBvcnRBczoiY2RrT3ZlcmxheU9yaWdpbiJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ31dfSksbnVsbCk7Y2xhc3MgZ0x7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fZGlyPWksdGhpcy5faGFzQmFja2Ryb3A9ITEsdGhpcy5fbG9ja1Bvc2l0aW9uPSExLHRoaXMuX2dyb3dBZnRlck9wZW49ITEsdGhpcy5fZmxleGlibGVEaW1lbnNpb25zPSExLHRoaXMuX3B1c2g9ITEsdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl9hdHRhY2hTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbj1tLkVNUFRZLHRoaXMudmlld3BvcnRNYXJnaW49MCx0aGlzLm9wZW49ITEsdGhpcy5kaXNhYmxlQ2xvc2U9ITEsdGhpcy5iYWNrZHJvcENsaWNrPW5ldyBMaCx0aGlzLnBvc2l0aW9uQ2hhbmdlPW5ldyBMaCx0aGlzLmF0dGFjaD1uZXcgTGgsdGhpcy5kZXRhY2g9bmV3IExoLHRoaXMub3ZlcmxheUtleWRvd249bmV3IExoLHRoaXMub3ZlcmxheU91dHNpZGVDbGljaz1uZXcgTGgsdGhpcy5fdGVtcGxhdGVQb3J0YWw9bmV3IHhGKGUsbiksdGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5PW8sdGhpcy5zY3JvbGxTdHJhdGVneT10aGlzLl9zY3JvbGxTdHJhdGVneUZhY3RvcnkoKX1nZXQgb2Zmc2V0WCgpe3JldHVybiB0aGlzLl9vZmZzZXRYfXNldCBvZmZzZXRYKHQpe3RoaXMuX29mZnNldFg9dCx0aGlzLl9wb3NpdGlvbiYmdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLl9wb3NpdGlvbil9Z2V0IG9mZnNldFkoKXtyZXR1cm4gdGhpcy5fb2Zmc2V0WX1zZXQgb2Zmc2V0WSh0KXt0aGlzLl9vZmZzZXRZPXQsdGhpcy5fcG9zaXRpb24mJnRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb24pfWdldCBoYXNCYWNrZHJvcCgpe3JldHVybiB0aGlzLl9oYXNCYWNrZHJvcH1zZXQgaGFzQmFja2Ryb3AodCl7dGhpcy5faGFzQmFja2Ryb3A9eXoodCl9Z2V0IGxvY2tQb3NpdGlvbigpe3JldHVybiB0aGlzLl9sb2NrUG9zaXRpb259c2V0IGxvY2tQb3NpdGlvbih0KXt0aGlzLl9sb2NrUG9zaXRpb249eXoodCl9Z2V0IGZsZXhpYmxlRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9mbGV4aWJsZURpbWVuc2lvbnN9c2V0IGZsZXhpYmxlRGltZW5zaW9ucyh0KXt0aGlzLl9mbGV4aWJsZURpbWVuc2lvbnM9eXoodCl9Z2V0IGdyb3dBZnRlck9wZW4oKXtyZXR1cm4gdGhpcy5fZ3Jvd0FmdGVyT3Blbn1zZXQgZ3Jvd0FmdGVyT3Blbih0KXt0aGlzLl9ncm93QWZ0ZXJPcGVuPXl6KHQpfWdldCBwdXNoKCl7cmV0dXJuIHRoaXMuX3B1c2h9c2V0IHB1c2godCl7dGhpcy5fcHVzaD15eih0KX1nZXQgb3ZlcmxheVJlZigpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmfWdldCBkaXIoKXtyZXR1cm4gdGhpcy5fZGlyP3RoaXMuX2Rpci52YWx1ZToibHRyIn1uZ09uRGVzdHJveSgpe3RoaXMuX2F0dGFjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2RldGFjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLl9wb3NpdGlvbiYmKHRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb24pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy53aWR0aCxtaW5XaWR0aDp0aGlzLm1pbldpZHRoLGhlaWdodDp0aGlzLmhlaWdodCxtaW5IZWlnaHQ6dGhpcy5taW5IZWlnaHR9KSx0Lm9yaWdpbiYmdGhpcy5vcGVuJiZ0aGlzLl9wb3NpdGlvbi5hcHBseSgpKSx0Lm9wZW4mJih0aGlzLm9wZW4/dGhpcy5fYXR0YWNoT3ZlcmxheSgpOnRoaXMuX2RldGFjaE92ZXJsYXkoKSl9X2NyZWF0ZU92ZXJsYXkoKXt0aGlzLnBvc2l0aW9ucyYmdGhpcy5wb3NpdGlvbnMubGVuZ3RofHwodGhpcy5wb3NpdGlvbnM9bUwpO2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9idWlsZENvbmZpZygpKTt0aGlzLl9hdHRhY2hTdWJzY3JpcHRpb249dC5hdHRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9PnRoaXMuYXR0YWNoLmVtaXQoKSkpLHRoaXMuX2RldGFjaFN1YnNjcmlwdGlvbj10LmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5kZXRhY2guZW1pdCgpKSksdC5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKCh0PT57dGhpcy5vdmVybGF5S2V5ZG93bi5uZXh0KHQpLHQua2V5Q29kZSE9PXV6fHx0aGlzLmRpc2FibGVDbG9zZXx8YnoodCl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGV0YWNoT3ZlcmxheSgpKX0pKSx0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKCh0PT57dGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrLm5leHQodCl9KSl9X2J1aWxkQ29uZmlnKCl7Y29uc3QgdD10aGlzLl9wb3NpdGlvbj10aGlzLnBvc2l0aW9uU3RyYXRlZ3l8fHRoaXMuX2NyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSxlPW5ldyBWRih7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OnQsc2Nyb2xsU3RyYXRlZ3k6dGhpcy5zY3JvbGxTdHJhdGVneSxoYXNCYWNrZHJvcDp0aGlzLmhhc0JhY2tkcm9wfSk7cmV0dXJuKHRoaXMud2lkdGh8fDA9PT10aGlzLndpZHRoKSYmKGUud2lkdGg9dGhpcy53aWR0aCksKHRoaXMuaGVpZ2h0fHwwPT09dGhpcy5oZWlnaHQpJiYoZS5oZWlnaHQ9dGhpcy5oZWlnaHQpLCh0aGlzLm1pbldpZHRofHwwPT09dGhpcy5taW5XaWR0aCkmJihlLm1pbldpZHRoPXRoaXMubWluV2lkdGgpLCh0aGlzLm1pbkhlaWdodHx8MD09PXRoaXMubWluSGVpZ2h0KSYmKGUubWluSGVpZ2h0PXRoaXMubWluSGVpZ2h0KSx0aGlzLmJhY2tkcm9wQ2xhc3MmJihlLmJhY2tkcm9wQ2xhc3M9dGhpcy5iYWNrZHJvcENsYXNzKSx0aGlzLnBhbmVsQ2xhc3MmJihlLnBhbmVsQ2xhc3M9dGhpcy5wYW5lbENsYXNzKSxlfV91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpe2NvbnN0IGU9dGhpcy5wb3NpdGlvbnMubWFwKCh0PT4oe29yaWdpblg6dC5vcmlnaW5YLG9yaWdpblk6dC5vcmlnaW5ZLG92ZXJsYXlYOnQub3ZlcmxheVgsb3ZlcmxheVk6dC5vdmVybGF5WSxvZmZzZXRYOnQub2Zmc2V0WHx8dGhpcy5vZmZzZXRYLG9mZnNldFk6dC5vZmZzZXRZfHx0aGlzLm9mZnNldFkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3N8fHZvaWQgMH0pKSk7cmV0dXJuIHQuc2V0T3JpZ2luKHRoaXMub3JpZ2luLmVsZW1lbnRSZWYpLndpdGhQb3NpdGlvbnMoZSkud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0aGlzLmZsZXhpYmxlRGltZW5zaW9ucykud2l0aFB1c2godGhpcy5wdXNoKS53aXRoR3Jvd0FmdGVyT3Blbih0aGlzLmdyb3dBZnRlck9wZW4pLndpdGhWaWV3cG9ydE1hcmdpbih0aGlzLnZpZXdwb3J0TWFyZ2luKS53aXRoTG9ja2VkUG9zaXRpb24odGhpcy5sb2NrUG9zaXRpb24pLndpdGhUcmFuc2Zvcm1PcmlnaW5Pbih0aGlzLnRyYW5zZm9ybU9yaWdpblNlbGVjdG9yKX1fY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5vcmlnaW4uZWxlbWVudFJlZik7cmV0dXJuIHRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCksdH1fYXR0YWNoT3ZlcmxheSgpe3RoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5oYXNCYWNrZHJvcD10aGlzLmhhc0JhY2tkcm9wOnRoaXMuX2NyZWF0ZU92ZXJsYXkoKSx0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCl8fHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3RlbXBsYXRlUG9ydGFsKSx0aGlzLmhhc0JhY2tkcm9wP3RoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uPXRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgodD0+e3RoaXMuYmFja2Ryb3BDbGljay5lbWl0KHQpfSkpOnRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCYmKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXRoaXMuX3Bvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5waXBlKEhlKCgoKT0+dGhpcy5wb3NpdGlvbkNoYW5nZS5vYnNlcnZlcnMubGVuZ3RoPjApKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wb3NpdGlvbkNoYW5nZS5lbWl0KHQpLDA9PT10aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGgmJnRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9KSkpfV9kZXRhY2hPdmVybGF5KCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fWdMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnTCkoU20ocEwpLFNtKFhnKSxTbShlaCksU20odUwpLFNtKEhJLDgpKX0sZ0wuybVkaXI9bG8oe3R5cGU6Z0wsc2VsZWN0b3JzOltbIiIsImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiJdLFsiIiwiY29ubmVjdGVkLW92ZXJsYXkiLCIiXSxbIiIsImNka0Nvbm5lY3RlZE92ZXJsYXkiLCIiXV0saW5wdXRzOnt2aWV3cG9ydE1hcmdpbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiIsInZpZXdwb3J0TWFyZ2luIl0sb3BlbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwib3BlbiJdLGRpc2FibGVDbG9zZTpbImNka0Nvbm5lY3RlZE92ZXJsYXlEaXNhYmxlQ2xvc2UiLCJkaXNhYmxlQ2xvc2UiXSxzY3JvbGxTdHJhdGVneTpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsInNjcm9sbFN0cmF0ZWd5Il0sb2Zmc2V0WDpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIiwib2Zmc2V0WCJdLG9mZnNldFk6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSIsIm9mZnNldFkiXSxoYXNCYWNrZHJvcDpbImNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcCIsImhhc0JhY2tkcm9wIl0sbG9ja1Bvc2l0aW9uOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiIsImxvY2tQb3NpdGlvbiJdLGZsZXhpYmxlRGltZW5zaW9uczpbImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiLCJmbGV4aWJsZURpbWVuc2lvbnMiXSxncm93QWZ0ZXJPcGVuOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCJncm93QWZ0ZXJPcGVuIl0scHVzaDpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIiwicHVzaCJdLHBvc2l0aW9uczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJwb3NpdGlvbnMiXSxvcmlnaW46WyJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIiwib3JpZ2luIl0scG9zaXRpb25TdHJhdGVneTpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvblN0cmF0ZWd5IiwicG9zaXRpb25TdHJhdGVneSJdLHdpZHRoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIiwid2lkdGgiXSxoZWlnaHQ6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGVpZ2h0IiwiaGVpZ2h0Il0sbWluV2lkdGg6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiLCJtaW5XaWR0aCJdLG1pbkhlaWdodDpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5IZWlnaHQiLCJtaW5IZWlnaHQiXSxiYWNrZHJvcENsYXNzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3MiLCJiYWNrZHJvcENsYXNzIl0scGFuZWxDbGFzczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIiwicGFuZWxDbGFzcyJdLHRyYW5zZm9ybU9yaWdpblNlbGVjdG9yOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uIiwidHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IiXX0sb3V0cHV0czp7YmFja2Ryb3BDbGljazoiYmFja2Ryb3BDbGljayIscG9zaXRpb25DaGFuZ2U6InBvc2l0aW9uQ2hhbmdlIixhdHRhY2g6ImF0dGFjaCIsZGV0YWNoOiJkZXRhY2giLG92ZXJsYXlLZXlkb3duOiJvdmVybGF5S2V5ZG93biIsb3ZlcmxheU91dHNpZGVDbGljazoib3ZlcmxheU91dHNpZGVDbGljayJ9LGV4cG9ydEFzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheSJdLGZlYXR1cmVzOltCb119KSxnTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBMfSx7dHlwZTpYZ30se3R5cGU6ZWh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlt1TF19XX0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX1dLGdMLnByb3BEZWNvcmF0b3JzPXtvcmlnaW46W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIl19XSxwb3NpdGlvbnM6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIl19XSxwb3NpdGlvblN0cmF0ZWd5Olt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiXX1dLG9mZnNldFg6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WCJdfV0sb2Zmc2V0WTpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIl19XSx3aWR0aDpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aCJdfV0saGVpZ2h0Olt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCJdfV0sbWluV2lkdGg6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiXX1dLG1pbkhlaWdodDpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5IZWlnaHQiXX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyJdfV0scGFuZWxDbGFzczpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIl19XSx2aWV3cG9ydE1hcmdpbjpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiJdfV0sc2Nyb2xsU3RyYXRlZ3k6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiXX1dLG9wZW46W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiJdfV0sZGlzYWJsZUNsb3NlOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZSJdfV0sdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3I6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iXX1dLGhhc0JhY2tkcm9wOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIl19XSxsb2NrUG9zaXRpb246W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIl19XSxmbGV4aWJsZURpbWVuc2lvbnM6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIl19XSxncm93QWZ0ZXJPcGVuOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iXX1dLHB1c2g6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UHVzaCJdfV0sYmFja2Ryb3BDbGljazpbe3R5cGU6T3l9XSxwb3NpdGlvbkNoYW5nZTpbe3R5cGU6T3l9XSxhdHRhY2g6W3t0eXBlOk95fV0sZGV0YWNoOlt7dHlwZTpPeX1dLG92ZXJsYXlLZXlkb3duOlt7dHlwZTpPeX1dLG92ZXJsYXlPdXRzaWRlQ2xpY2s6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZ0wsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1jb25uZWN0ZWQtb3ZlcmxheV0sIFtjb25uZWN0ZWQtb3ZlcmxheV0sIFtjZGtDb25uZWN0ZWRPdmVybGF5XSIsZXhwb3J0QXM6ImNka0Nvbm5lY3RlZE92ZXJsYXkifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cEx9LHt0eXBlOlhnfSx7dHlwZTplaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3VMXX1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV19KSx7dmlld3BvcnRNYXJnaW46W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5Vmlld3BvcnRNYXJnaW4iXX1dLG9wZW46W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiJdfV0sZGlzYWJsZUNsb3NlOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZSJdfV0sYmFja2Ryb3BDbGljazpbe3R5cGU6T3l9XSxwb3NpdGlvbkNoYW5nZTpbe3R5cGU6T3l9XSxhdHRhY2g6W3t0eXBlOk95fV0sZGV0YWNoOlt7dHlwZTpPeX1dLG92ZXJsYXlLZXlkb3duOlt7dHlwZTpPeX1dLG92ZXJsYXlPdXRzaWRlQ2xpY2s6W3t0eXBlOk95fV0sc2Nyb2xsU3RyYXRlZ3k6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiXX1dLG9mZnNldFg6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WCJdfV0sb2Zmc2V0WTpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIl19XSxoYXNCYWNrZHJvcDpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcCJdfV0sbG9ja1Bvc2l0aW9uOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiJdfV0sZmxleGlibGVEaW1lbnNpb25zOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyJdfV0sZ3Jvd0FmdGVyT3Blbjpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIl19XSxwdXNoOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2giXX1dLHBvc2l0aW9uczpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiXX1dLG9yaWdpbjpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iXX1dLHBvc2l0aW9uU3RyYXRlZ3k6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSJdfV0sd2lkdGg6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiXX1dLGhlaWdodDpbe3R5cGU6eHksYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiXX1dLG1pbldpZHRoOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIl19XSxtaW5IZWlnaHQ6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluSGVpZ2h0Il19XSxiYWNrZHJvcENsYXNzOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3MiXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyJdfV0sdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3I6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iXX1dfSk7Y29uc3QgaEw9e3Byb3ZpZGU6dUwsZGVwczpbcExdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gYkwodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgeUx7fXlMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5TCl9LHlMLsm1bW9kPWFvKHt0eXBlOnlMfSkseUwuybVpbmo9dm4oe3Byb3ZpZGVyczpbcEwsaExdLGltcG9ydHM6W1tMSSxSRixfRl0sX0ZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh5TCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W0xJLFJGLF9GXSxleHBvcnRzOltnTCxmTCxfRl0sZGVjbGFyYXRpb25zOltnTCxmTF0scHJvdmlkZXJzOltwTCxoTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyh5TCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2dMLGZMXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltMSSxSRixfRl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZ0wsZkwsX0ZdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIF9MIGV4dGVuZHMgUUZ7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lJiZ0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXImJnRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXIpfV9jcmVhdGVDb250YWluZXIoKXtzdXBlci5fY3JlYXRlQ29udGFpbmVyKCksdGhpcy5fYWRqdXN0UGFyZW50Rm9yRnVsbHNjcmVlbkNoYW5nZSgpLHRoaXMuX2FkZEZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5lcigoKCk9PnRoaXMuX2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKSkpfV9hZGp1c3RQYXJlbnRGb3JGdWxsc2NyZWVuQ2hhbmdlKCl7dGhpcy5fY29udGFpbmVyRWxlbWVudCYmKHRoaXMuZ2V0RnVsbHNjcmVlbkVsZW1lbnQoKXx8dGhpcy5fZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVudCl9X2FkZEZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5lcih0KXtjb25zdCBlPXRoaXMuX2dldEV2ZW50TmFtZSgpO2UmJih0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXImJnRoaXMuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXIpLHRoaXMuX2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZSx0KSx0aGlzLl9mdWxsU2NyZWVuTGlzdGVuZXI9dCl9X2dldEV2ZW50TmFtZSgpe2lmKCF0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3QuZnVsbHNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iZnVsbHNjcmVlbmNoYW5nZSI6dC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIjp0Lm1vekZ1bGxTY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Im1vemZ1bGxzY3JlZW5jaGFuZ2UiOnQubXNGdWxsc2NyZWVuRW5hYmxlZCYmKHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9Ik1TRnVsbHNjcmVlbkNoYW5nZSIpfXJldHVybiB0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lfWdldEZ1bGxzY3JlZW5FbGVtZW50KCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDtyZXR1cm4gdC5mdWxsc2NyZWVuRWxlbWVudHx8dC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8dC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8dC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxudWxsfX1fTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8X0wpKHZyKFpfKSx2cih3eikpfSxfTC7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgX0wodnIoWl8pLHZyKHd6KSl9LHRva2VuOl9MLHByb3ZpZGVkSW46InJvb3QifSksX0wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChfTCxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp3en1dfSksbnVsbCk7Y2xhc3MgQ0x7fUNMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDTCl9LENMLsm1bW9kPWFvKHt0eXBlOkNMfSksQ0wuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQ0wsW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBNTD1uZXcgU2V0O2xldCB2TDtjbGFzcyB4THtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX21hdGNoTWVkaWE9dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ3aW5kb3cubWF0Y2hNZWRpYT93aW5kb3cubWF0Y2hNZWRpYS5iaW5kKHdpbmRvdyk6T0x9bWF0Y2hNZWRpYSh0KXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uV0VCS0lUJiYoZnVuY3Rpb24gZSh0KXtpZighTUwuaGFzKHQpKXRyeXt2THx8KHZMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksdkwuc2V0QXR0cmlidXRlKCJ0eXBlIiwidGV4dC9jc3MiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHZMKSksdkwuc2hlZXQmJih2TC5zaGVldC5pbnNlcnRSdWxlKGBAbWVkaWEgJHt0fSB7LmZ4LXF1ZXJ5LXRlc3R7IH19YCwwKSxNTC5hZGQodCkpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IodCl9fSkodCksdGhpcy5fbWF0Y2hNZWRpYSh0KX19ZnVuY3Rpb24gT0wodCl7cmV0dXJue21hdGNoZXM6ImFsbCI9PT10fHwiIj09PXQsbWVkaWE6dCxhZGRMaXN0ZW5lcjooKT0+e30scmVtb3ZlTGlzdGVuZXI6KCk9Pnt9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICoveEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhMKSh2cih3eikpfSx4TC7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgeEwodnIod3opKX0sdG9rZW46eEwscHJvdmlkZWRJbjoicm9vdCJ9KSx4TC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnd6fV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh4TCxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6d3p9XX0pLG51bGwpO2NsYXNzIFBMe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fbWVkaWFNYXRjaGVyPXQsdGhpcy5fem9uZT1lLHRoaXMuX3F1ZXJpZXM9bmV3IE1hcCx0aGlzLl9kZXN0cm95U3ViamVjdD1uZXcgSX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3lTdWJqZWN0Lm5leHQoKSx0aGlzLl9kZXN0cm95U3ViamVjdC5jb21wbGV0ZSgpfWlzTWF0Y2hlZCh0KXtyZXR1cm4gd0woTXoodCkpLnNvbWUoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkubXFsLm1hdGNoZXMpKX1vYnNlcnZlKHQpe2xldCBlPVd0KHdMKE16KHQpKS5tYXAoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkub2JzZXJ2YWJsZSkpKTtyZXR1cm4gZT1KdChlLnBpcGUoYmUoMSkpLGUucGlwZShUZSgxKSxnZSgwKSkpLGUucGlwZShJdCgodD0+e2NvbnN0IGU9e21hdGNoZXM6ITEsYnJlYWtwb2ludHM6e319O3JldHVybiB0LmZvckVhY2goKCh7bWF0Y2hlczp0LHF1ZXJ5Om59KT0+e2UubWF0Y2hlcz1lLm1hdGNoZXN8fHQsZS5icmVha3BvaW50c1tuXT10fSkpLGV9KSkpfV9yZWdpc3RlclF1ZXJ5KHQpe2lmKHRoaXMuX3F1ZXJpZXMuaGFzKHQpKXJldHVybiB0aGlzLl9xdWVyaWVzLmdldCh0KTtjb25zdCBlPXRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKHQpLG49e29ic2VydmFibGU6bmV3IEQoKHQ9Pntjb25zdCBuPWU9PnRoaXMuX3pvbmUucnVuKCgoKT0+dC5uZXh0KGUpKSk7cmV0dXJuIGUuYWRkTGlzdGVuZXIobiksKCk9PntlLnJlbW92ZUxpc3RlbmVyKG4pfX0pKS5waXBlKE5lKGUpLEl0KCgoe21hdGNoZXM6ZX0pPT4oe3F1ZXJ5OnQsbWF0Y2hlczplfSkpKSxJZSh0aGlzLl9kZXN0cm95U3ViamVjdCkpLG1xbDplfTtyZXR1cm4gdGhpcy5fcXVlcmllcy5zZXQodCxuKSxufX1mdW5jdGlvbiB3TCh0KXtyZXR1cm4gdC5tYXAoKHQ9PnQuc3BsaXQoIiwiKSkpLnJlZHVjZSgoKHQsZSk9PnQuY29uY2F0KGUpKSkubWFwKCh0PT50LnRyaW0oKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBrTCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMSksUm0oMSwiYnV0dG9uIiwyKSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkuYWN0aW9uKCl9KSksa3UoMiksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO3JjKDIpLFN1KHQuZGF0YS5hY3Rpb24pfX1mdW5jdGlvbiBTTCh0LGUpe31QTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UEwpKHZyKHhMKSx2cihhXykpfSxQTC7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgUEwodnIoeEwpLHZyKGFfKSl9LHRva2VuOlBMLHByb3ZpZGVkSW46InJvb3QifSksUEwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4TH0se3R5cGU6YV99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFBMLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp4TH0se3R5cGU6YV99XX0pLG51bGwpO2NvbnN0IERMPW5ldyBHYSgiTWF0U25hY2tCYXJEYXRhIik7Y2xhc3MgRUx7Y29uc3RydWN0b3IoKXt0aGlzLnBvbGl0ZW5lc3M9ImFzc2VydGl2ZSIsdGhpcy5hbm5vdW5jZW1lbnRNZXNzYWdlPSIiLHRoaXMuZHVyYXRpb249MCx0aGlzLmRhdGE9bnVsbCx0aGlzLmhvcml6b250YWxQb3NpdGlvbj0iY2VudGVyIix0aGlzLnZlcnRpY2FsUG9zaXRpb249ImJvdHRvbSJ9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBSTD1NYXRoLnBvdygyLDMxKS0xO2NsYXNzIEFMe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fb3ZlcmxheVJlZj1lLHRoaXMuX2FmdGVyRGlzbWlzc2VkPW5ldyBJLHRoaXMuX2FmdGVyT3BlbmVkPW5ldyBJLHRoaXMuX29uQWN0aW9uPW5ldyBJLHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExLHRoaXMuY29udGFpbmVySW5zdGFuY2U9dCx0aGlzLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgoKT0+dGhpcy5kaXNtaXNzKCkpKSx0Ll9vbkV4aXQuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZmluaXNoRGlzbWlzcygpKSl9ZGlzbWlzcygpe3RoaXMuX2FmdGVyRGlzbWlzc2VkLmNsb3NlZHx8dGhpcy5jb250YWluZXJJbnN0YW5jZS5leGl0KCksY2xlYXJUaW1lb3V0KHRoaXMuX2R1cmF0aW9uVGltZW91dElkKX1kaXNtaXNzV2l0aEFjdGlvbigpe3RoaXMuX29uQWN0aW9uLmNsb3NlZHx8KHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSEwLHRoaXMuX29uQWN0aW9uLm5leHQoKSx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpKSxjbGVhclRpbWVvdXQodGhpcy5fZHVyYXRpb25UaW1lb3V0SWQpfWNsb3NlV2l0aEFjdGlvbigpe3RoaXMuZGlzbWlzc1dpdGhBY3Rpb24oKX1fZGlzbWlzc0FmdGVyKHQpe3RoaXMuX2R1cmF0aW9uVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLmRpc21pc3MoKSksTWF0aC5taW4odCxSTCkpfV9vcGVuKCl7dGhpcy5fYWZ0ZXJPcGVuZWQuY2xvc2VkfHwodGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpLHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCkpfV9maW5pc2hEaXNtaXNzKCl7dGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb25BY3Rpb24uY2xvc2VkfHx0aGlzLl9vbkFjdGlvbi5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyRGlzbWlzc2VkLm5leHQoe2Rpc21pc3NlZEJ5QWN0aW9uOnRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9ufSksdGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY29tcGxldGUoKSx0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbj0hMX1hZnRlckRpc21pc3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckRpc21pc3NlZH1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLmNvbnRhaW5lckluc3RhbmNlLl9vbkVudGVyfW9uQWN0aW9uKCl7cmV0dXJuIHRoaXMuX29uQWN0aW9ufX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVEx7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNuYWNrQmFyUmVmPXQsdGhpcy5kYXRhPWV9YWN0aW9uKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzV2l0aEFjdGlvbigpfWdldCBoYXNBY3Rpb24oKXtyZXR1cm4hIXRoaXMuZGF0YS5hY3Rpb259fVRMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUTCkoU20oQUwpLFNtKERMKSl9LFRMLsm1Y21wPXRvKHt0eXBlOlRMLHNlbGVjdG9yczpbWyJzaW1wbGUtc25hY2stYmFyIl1dLGhvc3RBdHRyczpbMSwibWF0LXNpbXBsZS1zbmFja2JhciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiw0LCJuZ0lmIl0sWzEsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwic3BhbiIpLGt1KDEpLEFtKCksUXAoMixrTCwzLDEsImRpdiIsMCkpLDImZSYmKHJjKDEpLFN1KG4uZGF0YS5tZXNzYWdlKSxyYygxKSxEbSgibmdJZiIsbi5oYXNBY3Rpb24pKX0sZGlyZWN0aXZlczpbZE0sWEhdLHN0eWxlczpbIi5tYXQtc2ltcGxlLXNuYWNrYmFye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7bGluZS1oZWlnaHQ6MjBweDtvcGFjaXR5OjF9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2ZsZXgtc2hyaW5rOjA7bWFyZ2luOi04cHggLThweCAtOHB4IDhweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24gYnV0dG9ue21heC1oZWlnaHQ6MzZweDttaW4td2lkdGg6MH1bZGlyPXJ0bF0gLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0OjhweH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFRMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QUx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltETF19XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVEwsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic2ltcGxlLXNuYWNrLWJhciIsdGVtcGxhdGU6JzxzcGFuPnt7ZGF0YS5tZXNzYWdlfX08L3NwYW4+XG48ZGl2IGNsYXNzPSJtYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiIgICpuZ0lmPSJoYXNBY3Rpb24iPlxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT0iYWN0aW9uKCkiPnt7ZGF0YS5hY3Rpb259fTwvYnV0dG9uPlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLGhvc3Q6e2NsYXNzOiJtYXQtc2ltcGxlLXNuYWNrYmFyIn0sc3R5bGVzOlsiLm1hdC1zaW1wbGUtc25hY2tiYXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtsaW5lLWhlaWdodDoyMHB4O29wYWNpdHk6MX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257ZmxleC1zaHJpbms6MDttYXJnaW46LThweCAtOHB4IC04cHggOHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiBidXR0b257bWF4LWhlaWdodDozNnB4O21pbi13aWR0aDowfVtkaXI9cnRsXSAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6OHB4fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBTH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0RMXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE5MPXtzbmFja0JhclN0YXRlOm54KCJzdGF0ZSIsW3J4KCJ2b2lkLCBoaWRkZW4iLGF4KHt0cmFuc2Zvcm06InNjYWxlKDAuOCkiLG9wYWNpdHk6MH0pKSxyeCgidmlzaWJsZSIsYXgoe3RyYW5zZm9ybToic2NhbGUoMSkiLG9wYWNpdHk6MX0pKSxseCgiKiA9PiB2aXNpYmxlIixveCgiMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksbHgoIiogPT4gdm9pZCwgKiA9PiBoaWRkZW4iLG94KCI3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSkiLGF4KHtvcGFjaXR5OjB9KSkpXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB6TCBleHRlbmRzIFBGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9uZ1pvbmU9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9wbGF0Zm9ybT1vLHRoaXMuc25hY2tCYXJDb25maWc9aSx0aGlzLl9hbm5vdW5jZURlbGF5PTE1MCx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25Bbm5vdW5jZT1uZXcgSSx0aGlzLl9vbkV4aXQ9bmV3IEksdGhpcy5fb25FbnRlcj1uZXcgSSx0aGlzLl9hbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHQpKSx0aGlzLl9saXZlPSJhc3NlcnRpdmUiIT09aS5wb2xpdGVuZXNzfHxpLmFubm91bmNlbWVudE1lc3NhZ2U/Im9mZiI9PT1pLnBvbGl0ZW5lc3M/Im9mZiI6InBvbGl0ZSI6ImFzc2VydGl2ZSIsdGhpcy5fcGxhdGZvcm0uRklSRUZPWCYmKCJwb2xpdGUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9InN0YXR1cyIpLCJhc3NlcnRpdmUiPT09dGhpcy5fbGl2ZSYmKHRoaXMuX3JvbGU9ImFsZXJ0IikpfWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCl9b25BbmltYXRpb25FbmQodCl7Y29uc3R7ZnJvbVN0YXRlOmUsdG9TdGF0ZTpufT10O2lmKCgidm9pZCI9PT1uJiYidm9pZCIhPT1lfHwiaGlkZGVuIj09PW4pJiZ0aGlzLl9jb21wbGV0ZUV4aXQoKSwidmlzaWJsZSI9PT1uKXtjb25zdCB0PXRoaXMuX29uRW50ZXI7dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9KSl9fWVudGVyKCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fYW5pbWF0aW9uU3RhdGU9InZpc2libGUiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSx0aGlzLl9zY3JlZW5SZWFkZXJBbm5vdW5jZSgpKX1leGl0KCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblN0YXRlPSJoaWRkZW4iLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1hdC1leGl0IiwiIiksY2xlYXJUaW1lb3V0KHRoaXMuX2Fubm91bmNlVGltZW91dElkKSx0aGlzLl9vbkV4aXR9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5fY29tcGxldGVFeGl0KCl9X2NvbXBsZXRlRXhpdCgpe3RoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUoYmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vbkV4aXQubmV4dCgpLHRoaXMuX29uRXhpdC5jb21wbGV0ZSgpfSkpfV9hcHBseVNuYWNrQmFyQ2xhc3Nlcygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5zbmFja0JhckNvbmZpZy5wYW5lbENsYXNzO2UmJihBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QuYWRkKGUpKSk6dC5jbGFzc0xpc3QuYWRkKGUpKSwiY2VudGVyIj09PXRoaXMuc25hY2tCYXJDb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uJiZ0LmNsYXNzTGlzdC5hZGQoIm1hdC1zbmFjay1iYXItY2VudGVyIiksInRvcCI9PT10aGlzLnNuYWNrQmFyQ29uZmlnLnZlcnRpY2FsUG9zaXRpb24mJnQuY2xhc3NMaXN0LmFkZCgibWF0LXNuYWNrLWJhci10b3AiKX1fYXNzZXJ0Tm90QXR0YWNoZWQoKXtpZih0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBzbmFjayBiYXIgY29udGVudCBhZnRlciBjb250ZW50IGlzIGFscmVhZHkgYXR0YWNoZWQiKX1fc2NyZWVuUmVhZGVyQW5ub3VuY2UoKXt0aGlzLl9hbm5vdW5jZVRpbWVvdXRJZHx8dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2Fubm91bmNlVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2FyaWEtaGlkZGVuXSIpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIlthcmlhLWxpdmVdIik7aWYodCYmZSl7bGV0IG49bnVsbDt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmKG49ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KSxudWxsPT1ufHxuLmZvY3VzKCksdGhpcy5fb25Bbm5vdW5jZS5uZXh0KCksdGhpcy5fb25Bbm5vdW5jZS5jb21wbGV0ZSgpfX0pLHRoaXMuX2Fubm91bmNlRGVsYXkpfSkpfX16TC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ekwpKFNtKGFfKSxTbShoZyksU20oVWcpLFNtKHd6KSxTbShFTCkpfSx6TC7JtWNtcD10byh7dHlwZTp6TCxzZWxlY3RvcnM6W1sic25hY2stYmFyLWNvbnRhaW5lciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoREYsNyksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5fcG9ydGFsT3V0bGV0PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtc25hY2stYmFyLWNvbnRhaW5lciJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJmptKCJAc3RhdGUuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbmltYXRpb25FbmQoZSl9KSksMiZlJiZOdSgiQHN0YXRlIixuLl9hbmltYXRpb25TdGF0ZSl9LGZlYXR1cmVzOlt4cF0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSJdLFsiY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDApLFFwKDEsU0wsMCwwLCJuZy10ZW1wbGF0ZSIsMSksQW0oKSxUbSgyLCJkaXYiKSksMiZlJiYocmMoMiksanAoImFyaWEtbGl2ZSIsbi5fbGl2ZSkoInJvbGUiLG4uX3JvbGUpKX0sZGlyZWN0aXZlczpbREZdLHN0eWxlczpbIi5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MjRweDttYXgtd2lkdGg6MzN2dzttaW4td2lkdGg6MzQ0cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo0OHB4O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlcjpzb2xpZCAxcHh9Lm1hdC1zbmFjay1iYXItaGFuZHNldHt3aWR0aDoxMDAlfS5tYXQtc25hY2stYmFyLWhhbmRzZXQgLm1hdC1zbmFjay1iYXItY29udGFpbmVye21hcmdpbjo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7d2lkdGg6MTAwJX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W05MLnNuYWNrQmFyU3RhdGVdfX0pLHpMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YV99LHt0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6d3p9LHt0eXBlOkVMfV0sekwucHJvcERlY29yYXRvcnM9e19wb3J0YWxPdXRsZXQ6W3t0eXBlOlphLGFyZ3M6W0RGLHtzdGF0aWM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHpMLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InNuYWNrLWJhci1jb250YWluZXIiLHRlbXBsYXRlOidceDNjIS0tIEluaXRpYWxseSBob2xkcyB0aGUgc25hY2sgYmFyIGNvbnRlbnQsIHdpbGwgYmUgZW1wdHkgYWZ0ZXIgYW5ub3VuY2luZyB0byBzY3JlZW4gcmVhZGVycy4gLS1ceDNlXG48ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIj5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cblx4M2MhLS0gV2lsbCByZWNlaXZlIHRoZSBzbmFjayBiYXIgY29udGVudCBmcm9tIHRoZSBub24tbGl2ZSBkaXYsIG1vdmUgd2lsbCBoYXBwZW4gYSBzaG9ydCBkZWxheSBhZnRlciBvcGVuaW5nIC0tXHgzZVxuPGRpdiBbYXR0ci5hcmlhLWxpdmVdPSJfbGl2ZSIgW2F0dHIucm9sZV09Il9yb2xlIj48L2Rpdj5cbicsY2hhbmdlRGV0ZWN0aW9uOnpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGFuaW1hdGlvbnM6W05MLnNuYWNrQmFyU3RhdGVdLGhvc3Q6e2NsYXNzOiJtYXQtc25hY2stYmFyLWNvbnRhaW5lciIsIltAc3RhdGVdIjoiX2FuaW1hdGlvblN0YXRlIiwiKEBzdGF0ZS5kb25lKSI6Im9uQW5pbWF0aW9uRW5kKCRldmVudCkifSxzdHlsZXM6WyIubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjI0cHg7bWF4LXdpZHRoOjMzdnc7bWluLXdpZHRoOjM0NHB4O3BhZGRpbmc6MTRweCAxNnB4O21pbi1oZWlnaHQ6NDhweDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXI6c29saWQgMXB4fS5tYXQtc25hY2stYmFyLWhhbmRzZXR7d2lkdGg6MTAwJX0ubWF0LXNuYWNrLWJhci1oYW5kc2V0IC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcnttYXJnaW46OHB4O21heC13aWR0aDoxMDAlO21pbi13aWR0aDowO3dpZHRoOjEwMCV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmFffSx7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnd6fSx7dHlwZTpFTH1dfSkse19wb3J0YWxPdXRsZXQ6W3t0eXBlOlphLGFyZ3M6W0RGLHtzdGF0aWM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBJTHt9SUwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElMKX0sSUwuybVtb2Q9YW8oe3R5cGU6SUx9KSxJTC7JtWluaj12bih7aW1wb3J0czpbW3lMLFJGLFdNLEpILFhJXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElMLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbeUwsUkYsV00sSkgsWEldLGV4cG9ydHM6W3pMLFhJXSxkZWNsYXJhdGlvbnM6W3pMLFRMXSxlbnRyeUNvbXBvbmVudHM6W3pMLFRMXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKElMLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bekwsVExdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3lMLFJGLFdNLEpILFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt6TCxYSV19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBITD1uZXcgR2EoIm1hdC1zbmFjay1iYXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBGTCgpe3JldHVybiBuZXcgRUx9fSk7Y2xhc3MgTEx7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9saXZlPWUsdGhpcy5faW5qZWN0b3I9bix0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXI9byx0aGlzLl9wYXJlbnRTbmFja0Jhcj1pLHRoaXMuX2RlZmF1bHRDb25maWc9YSx0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPW51bGwsdGhpcy5zaW1wbGVTbmFja0JhckNvbXBvbmVudD1UTCx0aGlzLnNuYWNrQmFyQ29udGFpbmVyQ29tcG9uZW50PXpMLHRoaXMuaGFuZHNldENzc0NsYXNzPSJtYXQtc25hY2stYmFyLWhhbmRzZXQifWdldCBfb3BlbmVkU25hY2tCYXJSZWYoKXtjb25zdCB0PXRoaXMuX3BhcmVudFNuYWNrQmFyO3JldHVybiB0P3QuX29wZW5lZFNuYWNrQmFyUmVmOnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWx9c2V0IF9vcGVuZWRTbmFja0JhclJlZih0KXt0aGlzLl9wYXJlbnRTbmFja0Jhcj90aGlzLl9wYXJlbnRTbmFja0Jhci5fb3BlbmVkU25hY2tCYXJSZWY9dDp0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPXR9b3BlbkZyb21Db21wb25lbnQodCxlKXtyZXR1cm4gdGhpcy5fYXR0YWNoKHQsZSl9b3BlbkZyb21UZW1wbGF0ZSh0LGUpe3JldHVybiB0aGlzLl9hdHRhY2godCxlKX1vcGVuKHQsZT0iIixuKXtjb25zdCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9kZWZhdWx0Q29uZmlnKSxuKTtyZXR1cm4gby5kYXRhPXttZXNzYWdlOnQsYWN0aW9uOmV9LG8uYW5ub3VuY2VtZW50TWVzc2FnZT09PXQmJihvLmFubm91bmNlbWVudE1lc3NhZ2U9dm9pZCAwKSx0aGlzLm9wZW5Gcm9tQ29tcG9uZW50KHRoaXMuc2ltcGxlU25hY2tCYXJDb21wb25lbnQsbyl9ZGlzbWlzcygpe3RoaXMuX29wZW5lZFNuYWNrQmFyUmVmJiZ0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsJiZ0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsLmRpc21pc3MoKX1fYXR0YWNoU25hY2tCYXJDb250YWluZXIodCxlKXtjb25zdCBuPXJwLmNyZWF0ZSh7cGFyZW50OmUmJmUudmlld0NvbnRhaW5lclJlZiYmZS52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOkVMLHVzZVZhbHVlOmV9XX0pLG89bmV3IHZGKHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQsZS52aWV3Q29udGFpbmVyUmVmLG4pLGk9dC5hdHRhY2gobyk7cmV0dXJuIGkuaW5zdGFuY2Uuc25hY2tCYXJDb25maWc9ZSxpLmluc3RhbmNlfV9hdHRhY2godCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG5ldyBFTCksdGhpcy5fZGVmYXVsdENvbmZpZyksZSksbz10aGlzLl9jcmVhdGVPdmVybGF5KG4pLGk9dGhpcy5fYXR0YWNoU25hY2tCYXJDb250YWluZXIobyxuKSxhPW5ldyBBTChpLG8pO2lmKHQgaW5zdGFuY2VvZiBYZyl7Y29uc3QgZT1uZXcgeEYodCxudWxsLHskaW1wbGljaXQ6bi5kYXRhLHNuYWNrQmFyUmVmOmF9KTthLmluc3RhbmNlPWkuYXR0YWNoVGVtcGxhdGVQb3J0YWwoZSl9ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZUluamVjdG9yKG4sYSksbz1uZXcgdkYodCx2b2lkIDAsZSkscj1pLmF0dGFjaENvbXBvbmVudFBvcnRhbChvKTthLmluc3RhbmNlPXIuaW5zdGFuY2V9cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKCIobWF4LXdpZHRoOiA1OTkuOThweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpIikucGlwZShJZShvLmRldGFjaG1lbnRzKCkpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPW8ub3ZlcmxheUVsZW1lbnQuY2xhc3NMaXN0O3QubWF0Y2hlcz9lLmFkZCh0aGlzLmhhbmRzZXRDc3NDbGFzcyk6ZS5yZW1vdmUodGhpcy5oYW5kc2V0Q3NzQ2xhc3MpfSkpLG4uYW5ub3VuY2VtZW50TWVzc2FnZSYmaS5fb25Bbm5vdW5jZS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fbGl2ZS5hbm5vdW5jZShuLmFubm91bmNlbWVudE1lc3NhZ2Usbi5wb2xpdGVuZXNzKX0pKSx0aGlzLl9hbmltYXRlU25hY2tCYXIoYSxuKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1hLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmfV9hbmltYXRlU25hY2tCYXIodCxlKXt0LmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29wZW5lZFNuYWNrQmFyUmVmPT10JiYodGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9bnVsbCksZS5hbm5vdW5jZW1lbnRNZXNzYWdlJiZ0aGlzLl9saXZlLmNsZWFyKCl9KSksdGhpcy5fb3BlbmVkU25hY2tCYXJSZWY/KHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgoKT0+e3QuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKX0pKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCkpOnQuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKSxlLmR1cmF0aW9uJiZlLmR1cmF0aW9uPjAmJnQuYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCgpPT50Ll9kaXNtaXNzQWZ0ZXIoZS5kdXJhdGlvbikpKX1fY3JlYXRlT3ZlcmxheSh0KXtjb25zdCBlPW5ldyBWRjtlLmRpcmVjdGlvbj10LmRpcmVjdGlvbjtsZXQgbj10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCk7Y29uc3Qgbz0icnRsIj09PXQuZGlyZWN0aW9uLGk9ImxlZnQiPT09dC5ob3Jpem9udGFsUG9zaXRpb258fCJzdGFydCI9PT10Lmhvcml6b250YWxQb3NpdGlvbiYmIW98fCJlbmQiPT09dC5ob3Jpem9udGFsUG9zaXRpb24mJm8sYT0haSYmImNlbnRlciIhPT10Lmhvcml6b250YWxQb3NpdGlvbjtyZXR1cm4gaT9uLmxlZnQoIjAiKTphP24ucmlnaHQoIjAiKTpuLmNlbnRlckhvcml6b250YWxseSgpLCJ0b3AiPT09dC52ZXJ0aWNhbFBvc2l0aW9uP24udG9wKCIwIik6bi5ib3R0b20oIjAiKSxlLnBvc2l0aW9uU3RyYXRlZ3k9bix0aGlzLl9vdmVybGF5LmNyZWF0ZShlKX1fY3JlYXRlSW5qZWN0b3IodCxlKXtyZXR1cm4gcnAuY3JlYXRlKHtwYXJlbnQ6dCYmdC52aWV3Q29udGFpbmVyUmVmJiZ0LnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6QUwsdXNlVmFsdWU6ZX0se3Byb3ZpZGU6REwsdXNlVmFsdWU6dC5kYXRhfV19KX19TEwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExMKSh2cihwTCksdnIoT0kpLHZyKHJwKSx2cihQTCksdnIoTEwsMTIpLHZyKEhMKSl9LExMLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBMTCh2cihwTCksdnIoT0kpLHZyKEdkKSx2cihQTCksdnIoTEwsMTIpLHZyKEhMKSl9LHRva2VuOkxMLHByb3ZpZGVkSW46SUx9KSxMTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBMfSx7dHlwZTpPSX0se3R5cGU6cnB9LHt0eXBlOlBMfSx7dHlwZTpMTCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RXJ9XX0se3R5cGU6RUwsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSExdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKExMLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjpJTH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnBMfSx7dHlwZTpPSX0se3R5cGU6cnB9LHt0eXBlOlBMfSx7dHlwZTpMTCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RXJ9XX0se3R5cGU6RUwsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSExdfV19XX0pLG51bGwpO2NvbnN0IEJMPS9bXFxeJC4qKz8oKVtcXXt9fF0vZyxWTD0iXFx1MDAwMC1cXHUwMDIwXFx1MDA3Zi1cXHUwMDlmIixqTD1uZXcgUmVnRXhwKCIoPzpbYS16QS1aXVthLXpBLVowLTkrLi1dezIsfTpcXC9cXC98ZGF0YTp8d3d3XFwuKVteXFxzIitWTCsnIl17Mix9W15cXHMnK1ZMKyJcIicpfVxcXSw6Oy4hP10iLCJndSIpO2Z1bmN0aW9uIFVMKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7bi5mbGFncy5pbmNsdWRlcygiZyIpfHwobj1uZXcgUmVnRXhwKG4sbi5mbGFncysiZyIpKTtjb25zdCBvPVtdO2xldCBpPTA7Zm9yKGNvbnN0IGUgb2YgdC5tYXRjaEFsbChuKSl7Y29uc3Qgbj1lLmluZGV4LGE9ZVswXTtuPmkmJm8ucHVzaCh7aW5kZXg6aSx0ZXh0OnQuc3Vic3RyaW5nKGksbiksbWF0Y2hlc1JlZ2V4OiExfSksby5wdXNoKHtpbmRleDpuLHRleHQ6YSxtYXRjaGVzUmVnZXg6ITB9KSxpPW4rYS5sZW5ndGh9cmV0dXJuIHQubGVuZ3RoPmkmJm8ucHVzaCh7aW5kZXg6aSx0ZXh0OnQuc3Vic3RyaW5nKGksdC5sZW5ndGgpLG1hdGNoZXNSZWdleDohMX0pLG99KSh0LGpMKS5tYXAoKCh7bWF0Y2hlc1JlZ2V4OnQsdGV4dDplfSk9Pih7aXNVUkw6dCx0ZXh0OmV9KSkpfWZ1bmN0aW9uIEdMKHQsZSl7aWYoMSZ0JiYoTm0oMCksa3UoMSksem0oKSksMiZ0KXtjb25zdCB0PVltKCkuJGltcGxpY2l0O3JjKDEpLER1KCIgIix0LnRleHQsIiAiKX19ZnVuY3Rpb24gV0wodCxlKXtpZigxJnQmJihSbSgwLCJhIiw3KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKS4kaW1wbGljaXQ7S20oImhyZWYiLHQudGV4dCxUcykscmMoMSksU3UodC50ZXh0KX19ZnVuY3Rpb24gWUwodCxlKXtpZigxJnQmJihObSgwKSxRcCgxLEdMLDIsMSwibmctY29udGFpbmVyIiw1KSxRcCgyLFdMLDIsMiwibmctdGVtcGxhdGUiLG51bGwsNixpYiksem0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49JHAoMyk7cmMoMSksRG0oIm5nSWYiLCF0LmlzVVJMKSgibmdJZkVsc2UiLG4pfX1mdW5jdGlvbiBxTCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImJ1dHRvbiIsOCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLm9uQWN0aW9uQnV0dG9uQ2xpY2tlZCgpfSkpLGt1KDEpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRHUoIiAiLHQuYWxlcnQuZm9sbG93dXBBY3Rpb24ubG9jYWxpemVkTGFiZWwsIiAiKX19Y2xhc3MgWkx7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLnVua25vd25EYXRhPWUsdGhpcy5zdG9yZT1uLHRoaXMuc3BsaXRCeVVSTD1VTCx0aGlzLmFsZXJ0PWV9b25BY3Rpb25CdXR0b25DbGlja2VkKCl7cmV0dXJuIGdBKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzKCk7Y29uc3QgdD15aWVsZCB0aGlzLmFsZXJ0LmZvbGxvd3VwQWN0aW9uLmdldEZvbGxvd3VwQWN0aW9uKHRoaXMuc3RvcmUpO3RoaXMuc3RvcmUuZGlzcGF0Y2godCl9KSl9b25DbG9zZUJ1dHRvbkNsaWNrZWQoKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKX19WkwuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpMKShTbShBTCksU20oREwpLFNtKEl3KSl9LFpMLsm1Y21wPXRvKHt0eXBlOlpMLHNlbGVjdG9yczpbWyJhbGVydC1kaXNwbGF5LXNuYWNrYmFyIl1dLGRlY2xzOjYsdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJEaXNtaXNzIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBjbG9zZSB0aGUgc25hY2tiYXIgbWVzc2FnZeKQn2VhNGQ5ZmU2MTQyMGEzZmNlODFjZjU0YzRjNjE1ZTNjMTljNjQ2YTbikJ8xNTM2MDg3NTE5NzQzNzA3MzYyOkRpc21pc3NgLFtbMSwibWVzc2FnZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1idXR0b24iLCIiLCJjbGFzcyIsImZvbGxvd3VwLWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsImRpc21pc3MtYnV0dG9uIiwzLCJjbGljayJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxpbmtQaWVjZSIsIiJdLFsicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsInRhcmdldCIsIl9ibGFuayIsMywiaHJlZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksUXAoMSxZTCw0LDIsIm5nLWNvbnRhaW5lciIsMSksQW0oKSxSbSgyLCJkaXYiLDIpLFFwKDMscUwsMiwxLCJidXR0b24iLDMpLFJtKDQsImJ1dHRvbiIsNCksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2xvc2VCdXR0b25DbGlja2VkKCl9KSksa3UoNSwiIERpc21pc3MgIiksQW0oKSxBbSgpKSwyJmUmJihyYygxKSxEbSgibmdGb3JPZiIsbi5zcGxpdEJ5VVJMKG4uYWxlcnQubG9jYWxpemVkTWVzc2FnZSkpLHJjKDIpLERtKCJuZ0lmIixuLmFsZXJ0LmZvbGxvd3VwQWN0aW9uKSl9LGRpcmVjdGl2ZXM6W2xNLGRNLFhIXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7YWxpZ24tc2VsZjpjZW50ZXI7bWFyZ2luOjVweCAwO3dvcmQtYnJlYWs6YnJlYWstd29yZH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO21hcmdpbi1sZWZ0OmF1dG99YnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFpMLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0X2Rpc3BsYXlfc25hY2tiYXJfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYWxlcnRfZGlzcGxheV9zbmFja2Jhcl9jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFMfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbRExdfV19LHt0eXBlOkl3fV19KSxudWxsKTtjbGFzcyBYTHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnNuYWNrQmFyPWUsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBJfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5zZWxlY3QoZEEpLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxjZSgodD0+Qm9vbGVhbih0KSkpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLnNob3dBbGVydCh0KX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvd0FsZXJ0KHQpe3RoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoWkwse2R1cmF0aW9uOjVlMyxob3Jpem9udGFsUG9zaXRpb246InN0YXJ0Iix2ZXJ0aWNhbFBvc2l0aW9uOiJib3R0b20iLGRhdGE6dH0pfX1YTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WEwpKFNtKEl3KSxTbShMTCkpfSxYTC7JtWNtcD10byh7dHlwZTpYTCxzZWxlY3RvcnM6W1siYWxlcnQtc25hY2tiYXIiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYTCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJhbGVydC1zbmFja2JhciIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fSx7dHlwZTpMTH1dfSksbnVsbCk7Y2xhc3MgS0x7fUtMLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLTCl9LEtMLsm1bW9kPWFvKHt0eXBlOktMfSksS0wuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxKSCxJTF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChLTCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbWEwsWkxdLGV4cG9ydHM6W1hMXSxpbXBvcnRzOltXTSxKSCxJTF0sZW50cnlDb21wb25lbnRzOltaTF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhLTCx7ZGVjbGFyYXRpb25zOltYTCxaTF0saW1wb3J0czpbV00sSkgsSUxdLGV4cG9ydHM6W1hMXX0pO2NsYXNzIEpMe31KTC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SkwpfSxKTC7JtW1vZD1hbyh7dHlwZTpKTH0pLEpMLsm1aW5qPXZuKHtpbXBvcnRzOltbQVIsS0wsZGsuZm9yRmVhdHVyZShjQSxweiksV2suZm9yRmVhdHVyZShbY3pdKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChKTCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W0FSLEtMLGRrLmZvckZlYXR1cmUoY0EscHopLFdrLmZvckZlYXR1cmUoW2N6XSldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oSkwse2ltcG9ydHM6W0FSLEtMLGNrLEdrXX0pO2NvbnN0IFFMPVsiKiIsW1sibWF0LXRvb2xiYXItcm93Il1dXSwkTD1KSShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSk7Y2xhc3MgdEJ7fXRCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0Qil9LHRCLsm1ZGlyPWxvKHt0eXBlOnRCLHNlbGVjdG9yczpbWyJtYXQtdG9vbGJhci1yb3ciXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhci1yb3ciXSxleHBvcnRBczpbIm1hdFRvb2xiYXJSb3ciXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodEIsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXItcm93IixleHBvcnRBczoibWF0VG9vbGJhclJvdyIsaG9zdDp7Y2xhc3M6Im1hdC10b29sYmFyLXJvdyJ9fV19XSxudWxsLG51bGwpO2NsYXNzIGVCIGV4dGVuZHMgJEx7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fZG9jdW1lbnQ9bn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCksdGhpcy5fdG9vbGJhclJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCkpKSl9X2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKXt0aGlzLl90b29sYmFyUm93cy5sZW5ndGgmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmQXJyYXkuZnJvbSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcykuZmlsdGVyKCh0PT4hKHQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC5jb250YWlucygibWF0LXRvb2xiYXItcm93IikpKSkuZmlsdGVyKCh0PT50Lm5vZGVUeXBlIT09KHRoaXMuX2RvY3VtZW50P3RoaXMuX2RvY3VtZW50LkNPTU1FTlRfTk9ERTo4KSkpLnNvbWUoKHQ9PiEoIXQudGV4dENvbnRlbnR8fCF0LnRleHRDb250ZW50LnRyaW0oKSkpKSYmKGZ1bmN0aW9uIHQoKXt0aHJvdyBFcnJvcigiTWF0VG9vbGJhcjogQXR0ZW1wdGluZyB0byBjb21iaW5lIGRpZmZlcmVudCB0b29sYmFyIG1vZGVzLiBFaXRoZXIgc3BlY2lmeSBtdWx0aXBsZSBgPG1hdC10b29sYmFyLXJvdz5gIGVsZW1lbnRzIGV4cGxpY2l0bHkgb3IganVzdCBwbGFjZSBjb250ZW50IGluc2lkZSBvZiBhIGA8bWF0LXRvb2xiYXI+YCBmb3IgYSBzaW5nbGUgcm93LiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fWVCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlQikoU20oaGcpLFNtKHd6KSxTbShaXykpfSxlQi7JtWNtcD10byh7dHlwZTplQixzZWxlY3RvcnM6W1sibWF0LXRvb2xiYXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYkaChvLHRCLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX3Rvb2xiYXJSb3dzPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJtYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzIixuLl90b29sYmFyUm93cy5sZW5ndGg+MCkoIm1hdC10b29sYmFyLXNpbmdsZS1yb3ciLDA9PT1uLl90b29sYmFyUm93cy5sZW5ndGgpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VG9vbGJhciJdLGZlYXR1cmVzOlt4cF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiIsIm1hdC10b29sYmFyLXJvdyJdLGRlY2xzOjIsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabShRTCksWG0oMCksWG0oMSwxKSl9LHN0eWxlczpbIi5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxlQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sZUIucHJvcERlY29yYXRvcnM9e190b29sYmFyUm93czpbe3R5cGU6WWEsYXJnczpbdEIse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChlQixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbGJhciIsZXhwb3J0QXM6Im1hdFRvb2xiYXIiLHRlbXBsYXRlOic8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bmctY29udGVudCBzZWxlY3Q9Im1hdC10b29sYmFyLXJvdyI+PC9uZy1jb250ZW50PlxuJyxpbnB1dHM6WyJjb2xvciJdLGhvc3Q6e2NsYXNzOiJtYXQtdG9vbGJhciIsIltjbGFzcy5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzXSI6Il90b29sYmFyUm93cy5sZW5ndGggPiAwIiwiW2NsYXNzLm1hdC10b29sYmFyLXNpbmdsZS1yb3ddIjoiX3Rvb2xiYXJSb3dzLmxlbmd0aCA9PT0gMCJ9LGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLHN0eWxlczpbIi5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSx7X3Rvb2xiYXJSb3dzOlt7dHlwZTpZYSxhcmdzOlt0Qix7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Y2xhc3MgbkJ7fWZ1bmN0aW9uIG9CKHQsZSl7MSZ0JiZYbSgwKX1uQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bkIpfSxuQi7JtW1vZD1hbyh7dHlwZTpuQn0pLG5CLsm1aW5qPXZuKHtpbXBvcnRzOltbWEldLFhJXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobkIsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltYSV0sZXhwb3J0czpbZUIsdEIsWEldLGRlY2xhcmF0aW9uczpbZUIsdEJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8obkIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltlQix0Ql19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWEldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2VCLHRCLFhJXX19KTtjb25zdCBpQj1bIioiXTtmdW5jdGlvbiBhQih0LGUpe31jb25zdCByQj1mdW5jdGlvbih0KXtyZXR1cm57YW5pbWF0aW9uRHVyYXRpb246dH19LHNCPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3ZhbHVlOnQscGFyYW1zOmV9fSxsQj1bInRhYkJvZHlXcmFwcGVyIl0sY0I9WyJ0YWJIZWFkZXIiXTtmdW5jdGlvbiBkQih0LGUpe31mdW5jdGlvbiBwQih0LGUpezEmdCYmUXAoMCxkQiwwLDAsIm5nLXRlbXBsYXRlIiw5KSwyJnQmJkRtKCJjZGtQb3J0YWxPdXRsZXQiLFltKCkuJGltcGxpY2l0LnRlbXBsYXRlTGFiZWwpfWZ1bmN0aW9uIG1CKHQsZSl7MSZ0JiZrdSgwKSwyJnQmJlN1KFltKCkuJGltcGxpY2l0LnRleHRMYWJlbCl9ZnVuY3Rpb24gdUIodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDYpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPWhpKHQpLG89bi4kaW1wbGljaXQsaT1uLmluZGV4LGE9WW0oKSxyPSRwKDEpO3JldHVybiBhLl9oYW5kbGVDbGljayhvLHIsaSl9KSkoImNka0ZvY3VzQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtjb25zdCBvPWhpKHQpLmluZGV4O3JldHVybiBZbSgpLl90YWJGb2N1c0NoYW5nZWQobixvKX0pKSxSbSgxLCJkaXYiLDcpLFFwKDIscEIsMSwxLCJuZy10ZW1wbGF0ZSIsOCksUXAoMyxtQiwxLDEsIm5nLXRlbXBsYXRlIiw4KSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPVltKCk7cHUoIm1hdC10YWItbGFiZWwtYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PW4pLERtKCJpZCIsby5fZ2V0VGFiTGFiZWxJZChuKSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgibWF0UmlwcGxlRGlzYWJsZWQiLHQuZGlzYWJsZWR8fG8uZGlzYWJsZVJpcHBsZSksanAoInRhYkluZGV4IixvLl9nZXRUYWJJbmRleCh0LG4pKSgiYXJpYS1wb3NpbnNldCIsbisxKSgiYXJpYS1zZXRzaXplIixvLl90YWJzLmxlbmd0aCkoImFyaWEtY29udHJvbHMiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImFyaWEtc2VsZWN0ZWQiLG8uc2VsZWN0ZWRJbmRleD09bikoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IiwhdC5hcmlhTGFiZWwmJnQuYXJpYUxhYmVsbGVkYnk/dC5hcmlhTGFiZWxsZWRieTpudWxsKSxyYygyKSxEbSgibmdJZiIsdC50ZW1wbGF0ZUxhYmVsKSxyYygxKSxEbSgibmdJZiIsIXQudGVtcGxhdGVMYWJlbCl9fWZ1bmN0aW9uIGZCKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwibWF0LXRhYi1ib2R5IiwxMCksVm0oIl9vbkNlbnRlcmVkIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLl9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpfSkpKCJfb25DZW50ZXJpbmciLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLl9zZXRUYWJCb2R5V3JhcHBlckhlaWdodChuKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXgsbz1ZbSgpO3B1KCJtYXQtdGFiLWJvZHktYWN0aXZlIixvLnNlbGVjdGVkSW5kZXg9PT1uKSxEbSgiaWQiLG8uX2dldFRhYkNvbnRlbnRJZChuKSkoImNvbnRlbnQiLHQuY29udGVudCkoInBvc2l0aW9uIix0LnBvc2l0aW9uKSgib3JpZ2luIix0Lm9yaWdpbikoImFuaW1hdGlvbkR1cmF0aW9uIixvLmFuaW1hdGlvbkR1cmF0aW9uKSxqcCgidGFiaW5kZXgiLG51bGwhPW8uY29udGVudFRhYkluZGV4JiZvLnNlbGVjdGVkSW5kZXg9PT1uP28uY29udGVudFRhYkluZGV4Om51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG8uX2dldFRhYkxhYmVsSWQobikpfX1jb25zdCBnQj1bInRhYkxpc3RDb250YWluZXIiXSxoQj1bInRhYkxpc3QiXSxiQj1bIm5leHRQYWdpbmF0b3IiXSx5Qj1bInByZXZpb3VzUGFnaW5hdG9yIl0sX0I9bmV3IEdhKCJNYXRJbmtCYXJQb3NpdGlvbmVyIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBDQigpe3JldHVybiB0PT4oe2xlZnQ6dD8odC5vZmZzZXRMZWZ0fHwwKSsicHgiOiIwIix3aWR0aDp0Pyh0Lm9mZnNldFdpZHRofHwwKSsicHgiOiIwIn0pfX0pO2NsYXNzIE1Ce2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9pbmtCYXJQb3NpdGlvbmVyPW4sdGhpcy5fYW5pbWF0aW9uTW9kZT1vfWFsaWduVG9FbGVtZW50KHQpe3RoaXMuc2hvdygpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9zZXRTdHlsZXModCkpKX0pKTp0aGlzLl9zZXRTdHlsZXModCl9c2hvdygpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIn1oaWRlKCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiJ9X3NldFN0eWxlcyh0KXtjb25zdCBlPXRoaXMuX2lua0JhclBvc2l0aW9uZXIodCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bi5zdHlsZS5sZWZ0PWUubGVmdCxuLnN0eWxlLndpZHRoPWUud2lkdGh9fU1CLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNQikoU20oaGcpLFNtKGFfKSxTbShfQiksU20oVlAsOCkpfSxNQi7JtWRpcj1sbyh7dHlwZTpNQixzZWxlY3RvcnM6W1sibWF0LWluay1iYXIiXV0saG9zdEF0dHJzOlsxLCJtYXQtaW5rLWJhciJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpfX0pLE1CLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbX0JdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE1CLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1pbmstYmFyIixob3N0OntjbGFzczoibWF0LWluay1iYXIiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucycifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W19CXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHZCPW5ldyBHYSgiTWF0VGFiQ29udGVudCIpO2NsYXNzIHhCe2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19eEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhCKShTbShYZykpfSx4Qi7JtWRpcj1sbyh7dHlwZTp4QixzZWxlY3RvcnM6W1siIiwibWF0VGFiQ29udGVudCIsIiJdXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOnZCLHVzZUV4aXN0aW5nOnhCfV0pXX0pLHhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHhCLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXRUYWJDb250ZW50XSIscHJvdmlkZXJzOlt7cHJvdmlkZTp2Qix1c2VFeGlzdGluZzp4Qn1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGd9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgT0I9bmV3IEdhKCJNYXRUYWJMYWJlbCIpO2NsYXNzIFBCIGV4dGVuZHMga0Z7fVBCLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShQQikpKShufHxQQil9fSkoKSxQQi7JtWRpcj1sbyh7dHlwZTpQQixzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1sYWJlbCIsIiJdLFsiIiwibWF0VGFiTGFiZWwiLCIiXV0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpPQix1c2VFeGlzdGluZzpQQn1dKSx4cF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFBCLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLWxhYmVsXSwgW21hdFRhYkxhYmVsXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpPQix1c2VFeGlzdGluZzpQQn1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgd0I9S0koY2xhc3N7fSksa0I9bmV3IEdhKCJNQVRfVEFCX0dST1VQIik7Y2xhc3MgU0IgZXh0ZW5kcyB3Qntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX2Nsb3Nlc3RUYWJHcm91cD1lLHRoaXMudGV4dExhYmVsPSIiLHRoaXMuX2NvbnRlbnRQb3J0YWw9bnVsbCx0aGlzLl9zdGF0ZUNoYW5nZXM9bmV3IEksdGhpcy5wb3NpdGlvbj1udWxsLHRoaXMub3JpZ2luPW51bGwsdGhpcy5pc0FjdGl2ZT0hMX1nZXQgdGVtcGxhdGVMYWJlbCgpe3JldHVybiB0aGlzLl90ZW1wbGF0ZUxhYmVsfXNldCB0ZW1wbGF0ZUxhYmVsKHQpe3RoaXMuX3NldFRlbXBsYXRlTGFiZWxJbnB1dCh0KX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLl9jb250ZW50UG9ydGFsfW5nT25DaGFuZ2VzKHQpeyh0Lmhhc093blByb3BlcnR5KCJ0ZXh0TGFiZWwiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGlzYWJsZWQiKSkmJnRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRlbnRQb3J0YWw9bmV3IHhGKHRoaXMuX2V4cGxpY2l0Q29udGVudHx8dGhpcy5faW1wbGljaXRDb250ZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpfV9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodCl7dCYmKHRoaXMuX3RlbXBsYXRlTGFiZWw9dCl9fVNCLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTQikoU20oZWgpLFNtKGtCLDgpKX0sU0IuybVjbXA9dG8oe3R5cGU6U0Isc2VsZWN0b3JzOltbIm1hdC10YWIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoJGgobyxPQiw1KSwkaChvLHZCLDcsWGcpKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLnRlbXBsYXRlTGFiZWw9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2V4cGxpY2l0Q29udGVudD10LmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChYZyw3KSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLl9pbXBsaWNpdENvbnRlbnQ9dC5maXJzdCl9fSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsdGV4dExhYmVsOlsibGFiZWwiLCJ0ZXh0TGFiZWwiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdfSxleHBvcnRBczpbIm1hdFRhYiJdLGZlYXR1cmVzOlt4cCxCb10sbmdDb250ZW50U2VsZWN0b3JzOmlCLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFFwKDAsb0IsMSwwLCJuZy10ZW1wbGF0ZSIpKX0sZW5jYXBzdWxhdGlvbjoyfSksU0IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W2tCXX0se3R5cGU6U3J9XX1dLFNCLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZUxhYmVsOlt7dHlwZTpxYSxhcmdzOltPQl19XSxfZXhwbGljaXRDb250ZW50Olt7dHlwZTpxYSxhcmdzOlt2Qix7cmVhZDpYZyxzdGF0aWM6ITB9XX1dLF9pbXBsaWNpdENvbnRlbnQ6W3t0eXBlOlphLGFyZ3M6W1hnLHtzdGF0aWM6ITB9XX1dLHRleHRMYWJlbDpbe3R5cGU6eHksYXJnczpbImxhYmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoU0IsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRhYiIsdGVtcGxhdGU6Ilx4M2MhLS0gQ3JlYXRlIGEgdGVtcGxhdGUgZm9yIHRoZSBjb250ZW50IG9mIHRoZSA8bWF0LXRhYj4gc28gdGhhdCB3ZSBjYW4gZ3JhYiBhIHJlZmVyZW5jZSB0byB0aGlzXG4gICAgVGVtcGxhdGVSZWYgYW5kIHVzZSBpdCBpbiBhIFBvcnRhbCB0byByZW5kZXIgdGhlIHRhYiBjb250ZW50IGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGVcbiAgICB0YWItZ3JvdXAuIC0tXHgzZVxuPG5nLXRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuIixpbnB1dHM6WyJkaXNhYmxlZCJdLGNoYW5nZURldGVjdGlvbjp6bi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxleHBvcnRBczoibWF0VGFiIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpba0JdfSx7dHlwZTpTcn1dfV19KSx7dGV4dExhYmVsOlt7dHlwZTp4eSxhcmdzOlsibGFiZWwiXX1dLHRlbXBsYXRlTGFiZWw6W3t0eXBlOnFhLGFyZ3M6W09CXX1dLF9leHBsaWNpdENvbnRlbnQ6W3t0eXBlOnFhLGFyZ3M6W3ZCLHtyZWFkOlhnLHN0YXRpYzohMH1dfV0sX2ltcGxpY2l0Q29udGVudDpbe3R5cGU6WmEsYXJnczpbWGcse3N0YXRpYzohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBEQj17dHJhbnNsYXRlVGFiOm54KCJ0cmFuc2xhdGVUYWIiLFtyeCgiY2VudGVyLCB2b2lkLCBsZWZ0LW9yaWdpbi1jZW50ZXIsIHJpZ2h0LW9yaWdpbi1jZW50ZXIiLGF4KHt0cmFuc2Zvcm06Im5vbmUifSkpLHJ4KCJsZWZ0IixheCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxyeCgicmlnaHQiLGF4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIixtaW5IZWlnaHQ6IjFweCJ9KSksbHgoIiogPT4gbGVmdCwgKiA9PiByaWdodCwgbGVmdCA9PiBjZW50ZXIsIHJpZ2h0ID0+IGNlbnRlciIsb3goInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKSksbHgoInZvaWQgPT4gbGVmdC1vcmlnaW4tY2VudGVyIixbYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApIn0pLG94KCJ7e2FuaW1hdGlvbkR1cmF0aW9ufX0gY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpIildKSxseCgidm9pZCA9PiByaWdodC1vcmlnaW4tY2VudGVyIixbYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkifSksb3goInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBFQiBleHRlbmRzIERGe2NvbnN0cnVjdG9yKHQsZSxuLG8pe3N1cGVyKHQsZSxvKSx0aGlzLl9ob3N0PW4sdGhpcy5fY2VudGVyaW5nU3ViPW0uRU1QVFksdGhpcy5fbGVhdmluZ1N1Yj1tLkVNUFRZfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLl9jZW50ZXJpbmdTdWI9dGhpcy5faG9zdC5fYmVmb3JlQ2VudGVyaW5nLnBpcGUoTmUodGhpcy5faG9zdC5faXNDZW50ZXJQb3NpdGlvbih0aGlzLl9ob3N0Ll9wb3NpdGlvbikpKS5zdWJzY3JpYmUoKHQ9Pnt0JiYhdGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmF0dGFjaCh0aGlzLl9ob3N0Ll9jb250ZW50KX0pKSx0aGlzLl9sZWF2aW5nU3ViPXRoaXMuX2hvc3QuX2FmdGVyTGVhdmluZ0NlbnRlci5zdWJzY3JpYmUoKCgpPT57dGhpcy5kZXRhY2goKX0pKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fY2VudGVyaW5nU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fbGVhdmluZ1N1Yi51bnN1YnNjcmliZSgpfX1FQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RUIpKFNtKHVnKSxTbShlaCksU20ocWUoKCgpPT5BQikpKSxTbShaXykpfSxFQi7JtWRpcj1sbyh7dHlwZTpFQixzZWxlY3RvcnM6W1siIiwibWF0VGFiQm9keUhvc3QiLCIiXV0sZmVhdHVyZXM6W3hwXX0pLEVCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dWd9LHt0eXBlOmVofSx7dHlwZTpBQixkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltxZSgoKCk9PkFCKSldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRUIsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkJvZHlIb3N0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1Z30se3R5cGU6ZWh9LHt0eXBlOkFCLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3FlKCgoKT0+QUIpKV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSxudWxsKTtjbGFzcyBSQntjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2Rpcj1lLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj1tLkVNUFRZLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlPW5ldyBJLHRoaXMuX29uQ2VudGVyaW5nPW5ldyBMaCx0aGlzLl9iZWZvcmVDZW50ZXJpbmc9bmV3IExoLHRoaXMuX2FmdGVyTGVhdmluZ0NlbnRlcj1uZXcgTGgsdGhpcy5fb25DZW50ZXJlZD1uZXcgTGgoITApLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249IjUwMG1zIixlJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPWUuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKHQpLG4ubWFya0ZvckNoZWNrKCl9KSkpLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLnBpcGUoTWUoKCh0LGUpPT50LmZyb21TdGF0ZT09PWUuZnJvbVN0YXRlJiZ0LnRvU3RhdGU9PT1lLnRvU3RhdGUpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpJiZ0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fb25DZW50ZXJlZC5lbWl0KCksdGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LmZyb21TdGF0ZSkmJiF0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fYWZ0ZXJMZWF2aW5nQ2VudGVyLmVtaXQoKX0pKX1zZXQgcG9zaXRpb24odCl7dGhpcy5fcG9zaXRpb25JbmRleD10LHRoaXMuX2NvbXB1dGVQb3NpdGlvbkFuaW1hdGlvblN0YXRlKCl9bmdPbkluaXQoKXsiY2VudGVyIj09dGhpcy5fcG9zaXRpb24mJm51bGwhPXRoaXMub3JpZ2luJiYodGhpcy5fcG9zaXRpb249dGhpcy5fY29tcHV0ZVBvc2l0aW9uRnJvbU9yaWdpbih0aGlzLm9yaWdpbikpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGUuY29tcGxldGUoKX1fb25UcmFuc2xhdGVUYWJTdGFydGVkKHQpe2NvbnN0IGU9dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpO3RoaXMuX2JlZm9yZUNlbnRlcmluZy5lbWl0KGUpLGUmJnRoaXMuX29uQ2VudGVyaW5nLmVtaXQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCl9X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV9pc0NlbnRlclBvc2l0aW9uKHQpe3JldHVybiJjZW50ZXIiPT10fHwibGVmdC1vcmlnaW4tY2VudGVyIj09dHx8InJpZ2h0LW9yaWdpbi1jZW50ZXIiPT10fV9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZSh0PXRoaXMuX2dldExheW91dERpcmVjdGlvbigpKXt0aGlzLl9wb3NpdGlvbj10aGlzLl9wb3NpdGlvbkluZGV4PDA/Imx0ciI9PXQ/ImxlZnQiOiJyaWdodCI6dGhpcy5fcG9zaXRpb25JbmRleD4wPyJsdHIiPT10PyJyaWdodCI6ImxlZnQiOiJjZW50ZXIifV9jb21wdXRlUG9zaXRpb25Gcm9tT3JpZ2luKHQpe2NvbnN0IGU9dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk7cmV0dXJuImx0ciI9PWUmJnQ8PTB8fCJydGwiPT1lJiZ0PjA/ImxlZnQtb3JpZ2luLWNlbnRlciI6InJpZ2h0LW9yaWdpbi1jZW50ZXIifX1SQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UkIpKFNtKGhnKSxTbShISSw4KSxTbShVZykpfSxSQi7JtWRpcj1sbyh7dHlwZTpSQixpbnB1dHM6e2FuaW1hdGlvbkR1cmF0aW9uOiJhbmltYXRpb25EdXJhdGlvbiIscG9zaXRpb246InBvc2l0aW9uIixfY29udGVudDpbImNvbnRlbnQiLCJfY29udGVudCJdLG9yaWdpbjoib3JpZ2luIn0sb3V0cHV0czp7X29uQ2VudGVyaW5nOiJfb25DZW50ZXJpbmciLF9iZWZvcmVDZW50ZXJpbmc6Il9iZWZvcmVDZW50ZXJpbmciLF9hZnRlckxlYXZpbmdDZW50ZXI6Il9hZnRlckxlYXZpbmdDZW50ZXIiLF9vbkNlbnRlcmVkOiJfb25DZW50ZXJlZCJ9fSksUkIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6VWd9XSxSQi5wcm9wRGVjb3JhdG9ycz17X29uQ2VudGVyaW5nOlt7dHlwZTpPeX1dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOk95fV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6T3l9XSxfb25DZW50ZXJlZDpbe3R5cGU6T3l9XSxfY29udGVudDpbe3R5cGU6eHksYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6eHl9XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6eHl9XSxwb3NpdGlvbjpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChSQixbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlVnfV19KSx7X29uQ2VudGVyaW5nOlt7dHlwZTpPeX1dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOk95fV0sX2FmdGVyTGVhdmluZ0NlbnRlcjpbe3R5cGU6T3l9XSxfb25DZW50ZXJlZDpbe3R5cGU6T3l9XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6eHl9XSxwb3NpdGlvbjpbe3R5cGU6eHl9XSxfY29udGVudDpbe3R5cGU6eHksYXJnczpbImNvbnRlbnQiXX1dLG9yaWdpbjpbe3R5cGU6eHl9XX0pO2NsYXNzIEFCIGV4dGVuZHMgUkJ7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSxuKX19QUIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEFCKShTbShoZyksU20oSEksOCksU20oVWcpKX0sQUIuybVjbXA9dG8oe3R5cGU6QUIsc2VsZWN0b3JzOltbIm1hdC10YWItYm9keSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoREYsNSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5fcG9ydGFsSG9zdD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ib2R5Il0sZmVhdHVyZXM6W3hwXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1siY2RrU2Nyb2xsYWJsZSIsIiIsMSwibWF0LXRhYi1ib2R5LWNvbnRlbnQiXSxbImNvbnRlbnQiLCIiXSxbIm1hdFRhYkJvZHlIb3N0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDAsMSksVm0oIkB0cmFuc2xhdGVUYWIuc3RhcnQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQoZSl9KSkoIkB0cmFuc2xhdGVUYWIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLm5leHQoZSl9KSksUXAoMixhQiwwLDAsIm5nLXRlbXBsYXRlIiwyKSxBbSgpKSwyJmUmJkRtKCJAdHJhbnNsYXRlVGFiIix2aCgzLHNCLG4uX3Bvc2l0aW9uLE1oKDEsckIsbi5hbmltYXRpb25EdXJhdGlvbikpKX0sZGlyZWN0aXZlczpbRUJdLHN0eWxlczpbIi5tYXQtdGFiLWJvZHktY29udGVudHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHktY29udGVudHtvdmVyZmxvdzpoaWRkZW59XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltEQi50cmFuc2xhdGVUYWJdfX0pLEFCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlVnfV0sQUIucHJvcERlY29yYXRvcnM9e19wb3J0YWxIb3N0Olt7dHlwZTpaYSxhcmdzOltERl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChBQixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiLWJvZHkiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWJvZHktY29udGVudCIgI2NvbnRlbnRcbiAgICAgW0B0cmFuc2xhdGVUYWJdPSJ7XG4gICAgICAgIHZhbHVlOiBfcG9zaXRpb24sXG4gICAgICAgIHBhcmFtczoge2FuaW1hdGlvbkR1cmF0aW9uOiBhbmltYXRpb25EdXJhdGlvbn1cbiAgICAgfSJcbiAgICAgKEB0cmFuc2xhdGVUYWIuc3RhcnQpPSJfb25UcmFuc2xhdGVUYWJTdGFydGVkKCRldmVudCkiXG4gICAgIChAdHJhbnNsYXRlVGFiLmRvbmUpPSJfdHJhbnNsYXRlVGFiQ29tcGxldGUubmV4dCgkZXZlbnQpIlxuICAgICBjZGtTY3JvbGxhYmxlPlxuICA8bmctdGVtcGxhdGUgbWF0VGFiQm9keUhvc3Q+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLkRlZmF1bHQsYW5pbWF0aW9uczpbREIudHJhbnNsYXRlVGFiXSxob3N0OntjbGFzczoibWF0LXRhYi1ib2R5In0sc3R5bGVzOlsiLm1hdC10YWItYm9keS1jb250ZW50e2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG99Lm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS1jb250ZW50e292ZXJmbG93OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlVnfV19KSx7X3BvcnRhbEhvc3Q6W3t0eXBlOlphLGFyZ3M6W0RGXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBUQj1uZXcgR2EoIk1BVF9UQUJTX0NPTkZJRyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgTkI9MDtjbGFzcyB6Qnt9Y29uc3QgSUI9SkkoUUkoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pLCJwcmltYXJ5Iik7Y2xhc3MgSEIgZXh0ZW5kcyBJQntjb25zdHJ1Y3Rvcih0LGUsbixvKXt2YXIgaTtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2FuaW1hdGlvbk1vZGU9byx0aGlzLl90YWJzPW5ldyBWaCx0aGlzLl9pbmRleFRvU2VsZWN0PTAsdGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9MCx0aGlzLl90YWJzU3Vic2NyaXB0aW9uPW0uRU1QVFksdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl9zZWxlY3RlZEluZGV4PW51bGwsdGhpcy5oZWFkZXJQb3NpdGlvbj0iYWJvdmUiLHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZT1uZXcgTGgsdGhpcy5mb2N1c0NoYW5nZT1uZXcgTGgsdGhpcy5hbmltYXRpb25Eb25lPW5ldyBMaCx0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlPW5ldyBMaCghMCksdGhpcy5fZ3JvdXBJZD1OQisrLHRoaXMuYW5pbWF0aW9uRHVyYXRpb249biYmbi5hbmltYXRpb25EdXJhdGlvbj9uLmFuaW1hdGlvbkR1cmF0aW9uOiI1MDBtcyIsdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hKCFufHxudWxsPT1uLmRpc2FibGVQYWdpbmF0aW9uKSYmbi5kaXNhYmxlUGFnaW5hdGlvbix0aGlzLmR5bmFtaWNIZWlnaHQ9ISghbnx8bnVsbD09bi5keW5hbWljSGVpZ2h0KSYmbi5keW5hbWljSGVpZ2h0LHRoaXMuY29udGVudFRhYkluZGV4PW51bGwhPT0oaT1udWxsPT1uP3ZvaWQgMDpuLmNvbnRlbnRUYWJJbmRleCkmJnZvaWQgMCE9PWk/aTpudWxsfWdldCBkeW5hbWljSGVpZ2h0KCl7cmV0dXJuIHRoaXMuX2R5bmFtaWNIZWlnaHR9c2V0IGR5bmFtaWNIZWlnaHQodCl7dGhpcy5fZHluYW1pY0hlaWdodD15eih0KX1nZXQgc2VsZWN0ZWRJbmRleCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4fXNldCBzZWxlY3RlZEluZGV4KHQpe3RoaXMuX2luZGV4VG9TZWxlY3Q9X3oodCxudWxsKX1nZXQgYW5pbWF0aW9uRHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uRHVyYXRpb259c2V0IGFuaW1hdGlvbkR1cmF0aW9uKHQpe3RoaXMuX2FuaW1hdGlvbkR1cmF0aW9uPS9eXGQrJC8udGVzdCh0KT90KyJtcyI6dH1nZXQgY29udGVudFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRUYWJJbmRleH1zZXQgY29udGVudFRhYkluZGV4KHQpe3RoaXMuX2NvbnRlbnRUYWJJbmRleD1feih0LG51bGwpfWdldCBiYWNrZ3JvdW5kQ29sb3IoKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfXNldCBiYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZS5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJmUuY2xhc3NMaXN0LmFkZChgbWF0LWJhY2tncm91bmQtJHt0fWApLHRoaXMuX2JhY2tncm91bmRDb2xvcj10fW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO2lmKHRoaXMuX3NlbGVjdGVkSW5kZXghPXQpe2NvbnN0IGU9bnVsbD09dGhpcy5fc2VsZWN0ZWRJbmRleDtpZighZSl7dGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KHQpKTtjb25zdCBlPXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7ZS5zdHlsZS5taW5IZWlnaHQ9ZS5jbGllbnRIZWlnaHQrInB4In1Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PmUuaXNBY3RpdmU9bj09PXQpKSxlfHwodGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodCksdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9IiIpfSkpfXRoaXMuX3RhYnMuZm9yRWFjaCgoKGUsbik9PntlLnBvc2l0aW9uPW4tdCxudWxsPT10aGlzLl9zZWxlY3RlZEluZGV4fHwwIT1lLnBvc2l0aW9ufHxlLm9yaWdpbnx8KGUub3JpZ2luPXQtdGhpcy5fc2VsZWN0ZWRJbmRleCl9KSksdGhpcy5fc2VsZWN0ZWRJbmRleCE9PXQmJih0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpLHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbj10aGlzLl90YWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX2NsYW1wVGFiSW5kZXgodGhpcy5faW5kZXhUb1NlbGVjdCk9PT10aGlzLl9zZWxlY3RlZEluZGV4KXtjb25zdCB0PXRoaXMuX3RhYnMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uaXNBY3RpdmUpe3RoaXMuX2luZGV4VG9TZWxlY3Q9dGhpcy5fc2VsZWN0ZWRJbmRleD1lO2JyZWFrfX10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX1fc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCl7dGhpcy5fYWxsVGFicy5jaGFuZ2VzLnBpcGUoTmUodGhpcy5fYWxsVGFicykpLnN1YnNjcmliZSgodD0+e3RoaXMuX3RhYnMucmVzZXQodC5maWx0ZXIoKHQ9PnQuX2Nsb3Nlc3RUYWJHcm91cD09PXRoaXN8fCF0Ll9jbG9zZXN0VGFiR3JvdXApKSksdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYnMuZGVzdHJveSgpLHRoaXMuX3RhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXJlYWxpZ25JbmtCYXIoKXt0aGlzLl90YWJIZWFkZXImJnRoaXMuX3RhYkhlYWRlci5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9Zm9jdXNUYWIodCl7Y29uc3QgZT10aGlzLl90YWJIZWFkZXI7ZSYmKGUuZm9jdXNJbmRleD10KX1fZm9jdXNDaGFuZ2VkKHQpe3RoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCh0KSl9X2NyZWF0ZUNoYW5nZUV2ZW50KHQpe2NvbnN0IGU9bmV3IHpCO3JldHVybiBlLmluZGV4PXQsdGhpcy5fdGFicyYmdGhpcy5fdGFicy5sZW5ndGgmJihlLnRhYj10aGlzLl90YWJzLnRvQXJyYXkoKVt0XSksZX1fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKXt0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiYmdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj1yZSguLi50aGlzLl90YWJzLm1hcCgodD0+dC5fc3RhdGVDaGFuZ2VzKSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSl9X2NsYW1wVGFiSW5kZXgodCl7cmV0dXJuIE1hdGgubWluKHRoaXMuX3RhYnMubGVuZ3RoLTEsTWF0aC5tYXgodHx8MCwwKSl9X2dldFRhYkxhYmVsSWQodCl7cmV0dXJuYG1hdC10YWItbGFiZWwtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fZ2V0VGFiQ29udGVudElkKHQpe3JldHVybmBtYXQtdGFiLWNvbnRlbnQtJHt0aGlzLl9ncm91cElkfS0ke3R9YH1fc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQodCl7aWYoIXRoaXMuX2R5bmFtaWNIZWlnaHR8fCF0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodClyZXR1cm47Y29uc3QgZT10aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O2Uuc3R5bGUuaGVpZ2h0PXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KyJweCIsdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQmJihlLnN0eWxlLmhlaWdodD10KyJweCIpfV9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpe2NvbnN0IHQ9dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDt0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodD10LmNsaWVudEhlaWdodCx0LnN0eWxlLmhlaWdodD0iIix0aGlzLmFuaW1hdGlvbkRvbmUuZW1pdCgpfV9oYW5kbGVDbGljayh0LGUsbil7dC5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWRJbmRleD1lLmZvY3VzSW5kZXg9bil9X2dldFRhYkluZGV4KHQsZSl7cmV0dXJuIHQuZGlzYWJsZWQ/bnVsbDp0aGlzLnNlbGVjdGVkSW5kZXg9PT1lPzA6LTF9X3RhYkZvY3VzQ2hhbmdlZCh0LGUpe3QmJiJtb3VzZSIhPT10JiYidG91Y2giIT09dCYmKHRoaXMuX3RhYkhlYWRlci5mb2N1c0luZGV4PWUpfX1IQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SEIpKFNtKGhnKSxTbShVZyksU20oVEIsOCksU20oVlAsOCkpfSxIQi7JtWRpcj1sbyh7dHlwZTpIQixpbnB1dHM6e2hlYWRlclBvc2l0aW9uOiJoZWFkZXJQb3NpdGlvbiIsYW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24iLGR5bmFtaWNIZWlnaHQ6ImR5bmFtaWNIZWlnaHQiLGNvbnRlbnRUYWJJbmRleDoiY29udGVudFRhYkluZGV4IixzZWxlY3RlZEluZGV4OiJzZWxlY3RlZEluZGV4IixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciJ9LG91dHB1dHM6e3NlbGVjdGVkSW5kZXhDaGFuZ2U6InNlbGVjdGVkSW5kZXhDaGFuZ2UiLGZvY3VzQ2hhbmdlOiJmb2N1c0NoYW5nZSIsYW5pbWF0aW9uRG9uZToiYW5pbWF0aW9uRG9uZSIsc2VsZWN0ZWRUYWJDaGFuZ2U6InNlbGVjdGVkVGFiQ2hhbmdlIn0sZmVhdHVyZXM6W3hwXX0pLEhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbVEJdfSx7dHlwZTpTcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sSEIucHJvcERlY29yYXRvcnM9e2R5bmFtaWNIZWlnaHQ6W3t0eXBlOnh5fV0sc2VsZWN0ZWRJbmRleDpbe3R5cGU6eHl9XSxoZWFkZXJQb3NpdGlvbjpbe3R5cGU6eHl9XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6eHl9XSxjb250ZW50VGFiSW5kZXg6W3t0eXBlOnh5fV0sZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOnh5fV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTp4eX1dLHNlbGVjdGVkSW5kZXhDaGFuZ2U6W3t0eXBlOk95fV0sZm9jdXNDaGFuZ2U6W3t0eXBlOk95fV0sYW5pbWF0aW9uRG9uZTpbe3R5cGU6T3l9XSxzZWxlY3RlZFRhYkNoYW5nZTpbe3R5cGU6T3l9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChIQixbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbVEJdfSx7dHlwZTpTcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV19KSx7aGVhZGVyUG9zaXRpb246W3t0eXBlOnh5fV0sc2VsZWN0ZWRJbmRleENoYW5nZTpbe3R5cGU6T3l9XSxmb2N1c0NoYW5nZTpbe3R5cGU6T3l9XSxhbmltYXRpb25Eb25lOlt7dHlwZTpPeX1dLHNlbGVjdGVkVGFiQ2hhbmdlOlt7dHlwZTpPeX1dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTp4eX1dLGRpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTp4eX1dLGR5bmFtaWNIZWlnaHQ6W3t0eXBlOnh5fV0sY29udGVudFRhYkluZGV4Olt7dHlwZTp4eX1dLHNlbGVjdGVkSW5kZXg6W3t0eXBlOnh5fV0sYmFja2dyb3VuZENvbG9yOlt7dHlwZTp4eX1dfSk7Y2xhc3MgRkIgZXh0ZW5kcyBIQntjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX19RkIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZCKShTbShoZyksU20oVWcpLFNtKFRCLDgpLFNtKFZQLDgpKX0sRkIuybVjbXA9dG8oe3R5cGU6RkIsc2VsZWN0b3JzOltbIm1hdC10YWItZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYkaChvLFNCLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX2FsbFRhYnM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKGxCLDUpLFFoKGNCLDUpKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLl90YWJCb2R5V3JhcHBlcj10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5fdGFiSGVhZGVyPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWdyb3VwIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoIm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQiLG4uZHluYW1pY0hlaWdodCkoIm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIiwiYmVsb3ciPT09bi5oZWFkZXJQb3NpdGlvbil9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRUYWJHcm91cCJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6a0IsdXNlRXhpc3Rpbmc6RkJ9XSkseHBdLGRlY2xzOjYsdmFyczo3LGNvbnN0czpbWzMsInNlbGVjdGVkSW5kZXgiLCJkaXNhYmxlUmlwcGxlIiwiZGlzYWJsZVBhZ2luYXRpb24iLCJpbmRleEZvY3VzZWQiLCJzZWxlY3RGb2N1c2VkSW5kZXgiXSxbInRhYkhlYWRlciIsIiJdLFsiY2xhc3MiLCJtYXQtdGFiLWxhYmVsIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJyb2xlIiwidGFiIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIiwibWF0LXJpcHBsZSIsIiIsImNka01vbml0b3JFbGVtZW50Rm9jdXMiLCIiLDMsImlkIiwibWF0LXRhYi1sYWJlbC1hY3RpdmUiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJjZGtGb2N1c0NoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1hdC10YWItYm9keS13cmFwcGVyIl0sWyJ0YWJCb2R5V3JhcHBlciIsIiJdLFsicm9sZSIsInRhYnBhbmVsIiwzLCJpZCIsIm1hdC10YWItYm9keS1hY3RpdmUiLCJjb250ZW50IiwicG9zaXRpb24iLCJvcmlnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsIl9vbkNlbnRlcmVkIiwiX29uQ2VudGVyaW5nIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJ0YWIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiLCJtYXQtcmlwcGxlIiwiIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiIsMSwibWF0LXRhYi1sYWJlbCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJtYXRSaXBwbGVEaXNhYmxlZCIsImNsaWNrIiwiY2RrRm9jdXNDaGFuZ2UiXSxbMSwibWF0LXRhYi1sYWJlbC1jb250ZW50Il0sWzMsIm5nSWYiXSxbMywiY2RrUG9ydGFsT3V0bGV0Il0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwiY29udGVudCIsInBvc2l0aW9uIiwib3JpZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJfb25DZW50ZXJlZCIsIl9vbkNlbnRlcmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWF0LXRhYi1oZWFkZXIiLDAsMSksVm0oImluZGV4Rm9jdXNlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2ZvY3VzQ2hhbmdlZChlKX0pKSgic2VsZWN0Rm9jdXNlZEluZGV4IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3RlZEluZGV4PWV9KSksUXAoMix1Qiw0LDE0LCJkaXYiLDIpLEFtKCksUm0oMywiZGl2IiwzLDQpLFFwKDUsZkIsMSw5LCJtYXQtdGFiLWJvZHkiLDUpLEFtKCkpLDImZSYmKERtKCJzZWxlY3RlZEluZGV4IixuLnNlbGVjdGVkSW5kZXh8fDApKCJkaXNhYmxlUmlwcGxlIixuLmRpc2FibGVSaXBwbGUpKCJkaXNhYmxlUGFnaW5hdGlvbiIsbi5kaXNhYmxlUGFnaW5hdGlvbikscmMoMiksRG0oIm5nRm9yT2YiLG4uX3RhYnMpLHJjKDEpLHB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLHJjKDIpLERtKCJuZ0Zvck9mIixuLl90YWJzKSl9LGRpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bR0IsbE0sQkIsa0gsREksZE0sREYsQUJdfSxzdHlsZXM6WyIubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjA7ZmxleC1iYXNpczoxMDAlfS5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ei1pbmRleDoxO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle292ZXJmbG93LXk6aGlkZGVufVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksRkIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltUQl19LHt0eXBlOlNyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XSxGQi5wcm9wRGVjb3JhdG9ycz17X2FsbFRhYnM6W3t0eXBlOllhLGFyZ3M6W1NCLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTpaYSxhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOlphLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEZCLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItZ3JvdXAiLGV4cG9ydEFzOiJtYXRUYWJHcm91cCIsdGVtcGxhdGU6JzxtYXQtdGFiLWhlYWRlciAjdGFiSGVhZGVyXG4gICAgICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09InNlbGVjdGVkSW5kZXggfHwgMCJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT0iZGlzYWJsZVJpcHBsZSJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlUGFnaW5hdGlvbl09ImRpc2FibGVQYWdpbmF0aW9uIlxuICAgICAgICAgICAgICAgKGluZGV4Rm9jdXNlZCk9Il9mb2N1c0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgICAgICAgICAgIChzZWxlY3RGb2N1c2VkSW5kZXgpPSJzZWxlY3RlZEluZGV4ID0gJGV2ZW50Ij5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbCBtYXQtZm9jdXMtaW5kaWNhdG9yIiByb2xlPSJ0YWIiIG1hdFRhYkxhYmVsV3JhcHBlciBtYXQtcmlwcGxlIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICAgICAqbmdGb3I9ImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXgiXG4gICAgICAgW2lkXT0iX2dldFRhYkxhYmVsSWQoaSkiXG4gICAgICAgW2F0dHIudGFiSW5kZXhdPSJfZ2V0VGFiSW5kZXgodGFiLCBpKSJcbiAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT0iaSArIDEiXG4gICAgICAgW2F0dHIuYXJpYS1zZXRzaXplXT0iX3RhYnMubGVuZ3RoIlxuICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPSJfZ2V0VGFiQ29udGVudElkKGkpIlxuICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPSJzZWxlY3RlZEluZGV4ID09IGkiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09InRhYi5hcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSIoIXRhYi5hcmlhTGFiZWwgJiYgdGFiLmFyaWFMYWJlbGxlZGJ5KSA/IHRhYi5hcmlhTGFiZWxsZWRieSA6IG51bGwiXG4gICAgICAgW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PSBpIlxuICAgICAgIFtkaXNhYmxlZF09InRhYi5kaXNhYmxlZCJcbiAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0YWIuZGlzYWJsZWQgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgICAoY2xpY2spPSJfaGFuZGxlQ2xpY2sodGFiLCB0YWJIZWFkZXIsIGkpIlxuICAgICAgIChjZGtGb2N1c0NoYW5nZSk9Il90YWJGb2N1c0NoYW5nZWQoJGV2ZW50LCBpKSI+XG5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWwtY29udGVudCI+XG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIGEgbGFiZWwgdGVtcGxhdGUsIHVzZSBpdC4gLS1ceDNlXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPSJ0YWIudGVtcGxhdGVMYWJlbCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT0idGFiLnRlbXBsYXRlTGFiZWwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICBceDNjIS0tIElmIHRoZXJlIGlzIG5vdCBhIGxhYmVsIHRlbXBsYXRlLCBmYWxsIGJhY2sgdG8gdGhlIHRleHQgbGFiZWwuIC0tXHgzZVxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT0iIXRhYi50ZW1wbGF0ZUxhYmVsIj57e3RhYi50ZXh0TGFiZWx9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYXQtdGFiLWhlYWRlcj5cblxuPGRpdlxuICBjbGFzcz0ibWF0LXRhYi1ib2R5LXdyYXBwZXIiXG4gIFtjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV09Il9hbmltYXRpb25Nb2RlID09PSBcJ05vb3BBbmltYXRpb25zXCciXG4gICN0YWJCb2R5V3JhcHBlcj5cbiAgPG1hdC10YWItYm9keSByb2xlPSJ0YWJwYW5lbCJcbiAgICAgICAgICAgICAgICpuZ0Zvcj0ibGV0IHRhYiBvZiBfdGFiczsgbGV0IGkgPSBpbmRleCJcbiAgICAgICAgICAgICAgIFtpZF09Il9nZXRUYWJDb250ZW50SWQoaSkiXG4gICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09Iihjb250ZW50VGFiSW5kZXggIT0gbnVsbCAmJiBzZWxlY3RlZEluZGV4ID09PSBpKSA/IGNvbnRlbnRUYWJJbmRleCA6IG51bGwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0VGFiTGFiZWxJZChpKSJcbiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFiLWJvZHktYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PT0gaSJcbiAgICAgICAgICAgICAgIFtjb250ZW50XT0idGFiLmNvbnRlbnQhIlxuICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT0idGFiLnBvc2l0aW9uISJcbiAgICAgICAgICAgICAgIFtvcmlnaW5dPSJ0YWIub3JpZ2luIlxuICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT0iYW5pbWF0aW9uRHVyYXRpb24iXG4gICAgICAgICAgICAgICAoX29uQ2VudGVyZWQpPSJfcmVtb3ZlVGFiQm9keVdyYXBwZXJIZWlnaHQoKSJcbiAgICAgICAgICAgICAgIChfb25DZW50ZXJpbmcpPSJfc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQoJGV2ZW50KSI+XG4gIDwvbWF0LXRhYi1ib2R5PlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxpbnB1dHM6WyJjb2xvciIsImRpc2FibGVSaXBwbGUiXSxwcm92aWRlcnM6W3twcm92aWRlOmtCLHVzZUV4aXN0aW5nOkZCfV0saG9zdDp7Y2xhc3M6Im1hdC10YWItZ3JvdXAiLCJbY2xhc3MubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodF0iOiJkeW5hbWljSGVpZ2h0IiwiW2NsYXNzLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyXSI6J2hlYWRlclBvc2l0aW9uID09PSAiYmVsb3ciJ30sc3R5bGVzOlsiLm1hdC10YWItZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHtwYWRkaW5nOjAgMTJweH19QG1lZGlhKG1heC13aWR0aDogOTU5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX0ubWF0LXRhYi1ncm91cFttYXQtc3RyZXRjaC10YWJzXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWJvZHktd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O3RyYW5zaXRpb246aGVpZ2h0IDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1ib2R5LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWJvZHl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowO2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3otaW5kZXg6MTtmbGV4LWdyb3c6MX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtvdmVyZmxvdy15OmhpZGRlbn1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbVEJdfSx7dHlwZTpTcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV19KSx7X2FsbFRhYnM6W3t0eXBlOllhLGFyZ3M6W1NCLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTpaYSxhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOlphLGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBMQj1LSShjbGFzc3t9KTtjbGFzcyBCQiBleHRlbmRzIExCe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50UmVmPXR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfWdldE9mZnNldExlZnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdH1nZXRPZmZzZXRXaWR0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH19QkIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJCKShTbShoZykpfSxCQi7JtWRpcj1sbyh7dHlwZTpCQixzZWxlY3RvcnM6W1siIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIl1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihqcCgiYXJpYS1kaXNhYmxlZCIsISFuLmRpc2FibGVkKSxwdSgibWF0LXRhYi1kaXNhYmxlZCIsbi5kaXNhYmxlZCkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCJ9LGZlYXR1cmVzOlt4cF19KSxCQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCQixbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0VGFiTGFiZWxXcmFwcGVyXSIsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OnsiW2NsYXNzLm1hdC10YWItZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6IiEhZGlzYWJsZWQifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFZCPU56KHtwYXNzaXZlOiEwfSk7Y2xhc3MgakJ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2Rpcj1vLHRoaXMuX25nWm9uZT1pLHRoaXMuX3BsYXRmb3JtPWEsdGhpcy5fYW5pbWF0aW9uTW9kZT1yLHRoaXMuX3Njcm9sbERpc3RhbmNlPTAsdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fZGVzdHJveWVkPW5ldyBJLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITEsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPSEwLHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITAsdGhpcy5fc3RvcFNjcm9sbGluZz1uZXcgSSx0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuX3NlbGVjdGVkSW5kZXg9MCx0aGlzLnNlbGVjdEZvY3VzZWRJbmRleD1uZXcgTGgsdGhpcy5pbmRleEZvY3VzZWQ9bmV3IExoLGkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57b2UodC5uYXRpdmVFbGVtZW50LCJtb3VzZWxlYXZlIikucGlwZShJZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3RvcEludGVydmFsKCl9KSl9KSl9Z2V0IHNlbGVjdGVkSW5kZXgoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleH1zZXQgc2VsZWN0ZWRJbmRleCh0KXt0PV96KHQpLHRoaXMuX3NlbGVjdGVkSW5kZXghPXQmJih0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMCx0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHQpKX1uZ0FmdGVyVmlld0luaXQoKXtvZSh0aGlzLl9wcmV2aW91c1BhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixWQikucGlwZShJZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIpfSkpLG9lKHRoaXMuX25leHRQYWdpbmF0b3IubmF0aXZlRWxlbWVudCwidG91Y2hzdGFydCIsVkIpLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJhZnRlciIpfSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe2NvbnN0IHQ9dGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6RXQoImx0ciIpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoMTUwKSxuPSgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9O3RoaXMuX2tleU1hbmFnZXI9bmV3IGVJKHRoaXMuX2l0ZW1zKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKS53aXRoSG9tZUFuZEVuZCgpLndpdGhXcmFwKCksdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHRoaXMuX3NlbGVjdGVkSW5kZXgpLCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3JlcXVlc3RBbmltYXRpb25GcmFtZShuKTpuKCkscmUodCxlLHRoaXMuX2l0ZW1zLmNoYW5nZXMpLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKG4pKSksdGhpcy5fa2V5TWFuYWdlci53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2dldExheW91dERpcmVjdGlvbigpKX0pKSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuaW5kZXhGb2N1c2VkLmVtaXQodCksdGhpcy5fc2V0VGFiRm9jdXModCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdGFiTGFiZWxDb3VudCE9dGhpcy5faXRlbXMubGVuZ3RoJiYodGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fdGFiTGFiZWxDb3VudD10aGlzLl9pdGVtcy5sZW5ndGgsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkJiYodGhpcy5fc2Nyb2xsVG9MYWJlbCh0aGlzLl9zZWxlY3RlZEluZGV4KSx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpLHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZCYmKHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkPSExLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fc3RvcFNjcm9sbGluZy5jb21wbGV0ZSgpfV9oYW5kbGVLZXlkb3duKHQpe2lmKCFieih0KSlzd2l0Y2godC5rZXlDb2RlKXtjYXNlIG16OmNhc2UgZno6dGhpcy5mb2N1c0luZGV4IT09dGhpcy5zZWxlY3RlZEluZGV4JiYodGhpcy5zZWxlY3RGb2N1c2VkSW5kZXguZW1pdCh0aGlzLmZvY3VzSW5kZXgpLHRoaXMuX2l0ZW1TZWxlY3RlZCh0KSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bih0KX19X29uQ29udGVudENoYW5nZXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fY3VycmVudFRleHRDb250ZW50JiYodGhpcy5fY3VycmVudFRleHRDb250ZW50PXR8fCIiLHRoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy51cGRhdGVQYWdpbmF0aW9uKCksdGhpcy5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfXVwZGF0ZVBhZ2luYXRpb24oKXt0aGlzLl9jaGVja1BhZ2luYXRpb25FbmFibGVkKCksdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHRoaXMuX3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl9Z2V0IGZvY3VzSW5kZXgoKXtyZXR1cm4gdGhpcy5fa2V5TWFuYWdlcj90aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleDowfXNldCBmb2N1c0luZGV4KHQpe3RoaXMuX2lzVmFsaWRJbmRleCh0KSYmdGhpcy5mb2N1c0luZGV4IT09dCYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfV9pc1ZhbGlkSW5kZXgodCl7aWYoIXRoaXMuX2l0ZW1zKXJldHVybiEwO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7cmV0dXJuISFlJiYhZS5kaXNhYmxlZH1fc2V0VGFiRm9jdXModCl7aWYodGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fc2Nyb2xsVG9MYWJlbCh0KSx0aGlzLl9pdGVtcyYmdGhpcy5faXRlbXMubGVuZ3RoKXt0aGlzLl9pdGVtcy50b0FycmF5KClbdF0uZm9jdXMoKTtjb25zdCBlPXRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudCxuPXRoaXMuX2dldExheW91dERpcmVjdGlvbigpO2Uuc2Nyb2xsTGVmdD0ibHRyIj09bj8wOmUuc2Nyb2xsV2lkdGgtZS5vZmZzZXRXaWR0aH19X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifV91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IHQ9dGhpcy5zY3JvbGxEaXN0YW5jZSxlPSJsdHIiPT09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/LXQ6dDt0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVYKCR7TWF0aC5yb3VuZChlKX1weClgLCh0aGlzLl9wbGF0Zm9ybS5UUklERU5UfHx0aGlzLl9wbGF0Zm9ybS5FREdFKSYmKHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0PTApfWdldCBzY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZX1zZXQgc2Nyb2xsRGlzdGFuY2UodCl7dGhpcy5fc2Nyb2xsVG8odCl9X3Njcm9sbEhlYWRlcih0KXtyZXR1cm4gdGhpcy5fc2Nyb2xsVG8odGhpcy5fc2Nyb2xsRGlzdGFuY2UrKCJiZWZvcmUiPT10Py0xOjEpKnRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aC8zKX1faGFuZGxlUGFnaW5hdG9yQ2xpY2sodCl7dGhpcy5fc3RvcEludGVydmFsKCksdGhpcy5fc2Nyb2xsSGVhZGVyKHQpfV9zY3JvbGxUb0xhYmVsKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2NvbnN0IGU9dGhpcy5faXRlbXM/dGhpcy5faXRlbXMudG9BcnJheSgpW3RdOm51bGw7aWYoIWUpcmV0dXJuO2NvbnN0IG49dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLHtvZmZzZXRMZWZ0Om8sb2Zmc2V0V2lkdGg6aX09ZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bGV0IGEscjsibHRyIj09dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk/KGE9byxyPWEraSk6KHI9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLW8sYT1yLWkpO2NvbnN0IHM9dGhpcy5zY3JvbGxEaXN0YW5jZSxsPXRoaXMuc2Nyb2xsRGlzdGFuY2UrbjthPHM/dGhpcy5zY3JvbGxEaXN0YW5jZS09cy1hKzYwOnI+bCYmKHRoaXMuc2Nyb2xsRGlzdGFuY2UrPXItbCs2MCl9X2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9ITE7ZWxzZXtjb25zdCB0PXRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7dHx8KHRoaXMuc2Nyb2xsRGlzdGFuY2U9MCksdCE9PXRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMmJnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHM9dH19X2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKXt0aGlzLmRpc2FibGVQYWdpbmF0aW9uP3RoaXMuX2Rpc2FibGVTY3JvbGxBZnRlcj10aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPSEwOih0aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPTA9PXRoaXMuc2Nyb2xsRGlzdGFuY2UsdGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuc2Nyb2xsRGlzdGFuY2U9PXRoaXMuX2dldE1heFNjcm9sbERpc3RhbmNlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgtdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwwfV9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKXtjb25zdCB0PXRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGg/dGhpcy5faXRlbXMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF06bnVsbCxlPXQ/dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtlP3RoaXMuX2lua0Jhci5hbGlnblRvRWxlbWVudChlKTp0aGlzLl9pbmtCYXIuaGlkZSgpfV9zdG9wSW50ZXJ2YWwoKXt0aGlzLl9zdG9wU2Nyb2xsaW5nLm5leHQoKX1faGFuZGxlUGFnaW5hdG9yUHJlc3ModCxlKXtlJiZudWxsIT1lLmJ1dHRvbiYmMCE9PWUuYnV0dG9ufHwodGhpcy5fc3RvcEludGVydmFsKCksYWUoNjUwLDEwMCkucGlwZShJZShyZSh0aGlzLl9zdG9wU2Nyb2xsaW5nLHRoaXMuX2Rlc3Ryb3llZCkpKS5zdWJzY3JpYmUoKCgpPT57Y29uc3R7bWF4U2Nyb2xsRGlzdGFuY2U6ZSxkaXN0YW5jZTpufT10aGlzLl9zY3JvbGxIZWFkZXIodCk7KDA9PT1ufHxuPj1lKSYmdGhpcy5fc3RvcEludGVydmFsKCl9KSkpfV9zY3JvbGxUbyh0KXtpZih0aGlzLmRpc2FibGVQYWdpbmF0aW9uKXJldHVybnttYXhTY3JvbGxEaXN0YW5jZTowLGRpc3RhbmNlOjB9O2NvbnN0IGU9dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTtyZXR1cm4gdGhpcy5fc2Nyb2xsRGlzdGFuY2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHQpKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITAsdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHttYXhTY3JvbGxEaXN0YW5jZTplLGRpc3RhbmNlOnRoaXMuX3Njcm9sbERpc3RhbmNlfX19akIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpCKShTbShoZyksU20oVWcpLFNtKHVGKSxTbShISSw4KSxTbShhXyksU20od3opLFNtKFZQLDgpKX0sakIuybVkaXI9bG8oe3R5cGU6akIsaW5wdXRzOntkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24ifX0pLGpCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp1Rn0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sakIucHJvcERlY29yYXRvcnM9e2Rpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGpCLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnVGfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XX0pLHtkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6eHl9XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgVUIgZXh0ZW5kcyBqQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT15eih0KX1faXRlbVNlbGVjdGVkKHQpe3QucHJldmVudERlZmF1bHQoKX19VUIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVCKShTbShoZyksU20oVWcpLFNtKHVGKSxTbShISSw4KSxTbShhXyksU20od3opLFNtKFZQLDgpKX0sVUIuybVkaXI9bG8oe3R5cGU6VUIsaW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W3hwXX0pLFVCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp1Rn0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sVUIucHJvcERlY29yYXRvcnM9e2Rpc2FibGVSaXBwbGU6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVUIsW3t0eXBlOkN5fV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6dUZ9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse2Rpc2FibGVSaXBwbGU6W3t0eXBlOnh5fV19KTtjbGFzcyBHQiBleHRlbmRzIFVCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsZSxuLG8saSxhLHIpfX1HQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R0IpKFNtKGhnKSxTbShVZyksU20odUYpLFNtKEhJLDgpLFNtKGFfKSxTbSh3eiksU20oVlAsOCkpfSxHQi7JtWNtcD10byh7dHlwZTpHQixzZWxlY3RvcnM6W1sibWF0LXRhYi1oZWFkZXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYkaChvLEJCLDQpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX2l0ZW1zPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChNQiw3KSxRaChnQiw3KSxRaChoQiw3KSxRaChiQiw1KSxRaCh5Qiw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5faW5rQmFyPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl90YWJMaXN0Q29udGFpbmVyPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl90YWJMaXN0PXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9uZXh0UGFnaW5hdG9yPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9wcmV2aW91c1BhZ2luYXRvcj10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1oZWFkZXIiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSxpbnB1dHM6e3NlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgifSxvdXRwdXRzOntzZWxlY3RGb2N1c2VkSW5kZXg6InNlbGVjdEZvY3VzZWRJbmRleCIsaW5kZXhGb2N1c2VkOiJpbmRleEZvY3VzZWQifSxmZWF0dXJlczpbeHBdLG5nQ29udGVudFNlbGVjdG9yczppQixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGFiZWwtY29udGFpbmVyIiwzLCJrZXlkb3duIl0sWyJ0YWJMaXN0Q29udGFpbmVyIiwiIl0sWyJyb2xlIiwidGFibGlzdCIsMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxhYmVscyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIiLCJtYXQtZWxldmF0aW9uLXo0IiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hlbmQiXSxbIm5leHRQYWdpbmF0b3IiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFptKCksUm0oMCwiZGl2IiwwLDEpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImJlZm9yZSIpfSkpKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYmVmb3JlIixlKX0pKSgidG91Y2hlbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3N0b3BJbnRlcnZhbCgpfSkpLFRtKDIsImRpdiIsMiksQW0oKSxSbSgzLCJkaXYiLDMsNCksVm0oImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpLFJtKDUsImRpdiIsNSw2KSxWbSgiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQ29udGVudENoYW5nZXMoKX0pKSxSbSg3LCJkaXYiLDcpLFhtKDgpLEFtKCksVG0oOSwibWF0LWluay1iYXIiKSxBbSgpLEFtKCksUm0oMTAsImRpdiIsOCw5KSxWbSgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIixlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvckNsaWNrKCJhZnRlciIpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksVG0oMTIsImRpdiIsMiksQW0oKSksMiZlJiYocHUoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxCZWZvcmUpLERtKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZXx8bi5kaXNhYmxlUmlwcGxlKSxyYyg1KSxwdSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKSxyYyg1KSxwdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyKSxEbSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uX2Rpc2FibGVTY3JvbGxBZnRlcnx8bi5kaXNhYmxlUmlwcGxlKSl9LGRpcmVjdGl2ZXM6W2tILGp6LE1CXSxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxhYmVsc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfVttYXQtYWxpZ24tdGFicz1lbmRdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1saXN0e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxHQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6dUZ9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dLEdCLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOllhLGFyZ3M6W0JCLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6WmEsYXJnczpbTUIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOlphLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6WmEsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTpaYSxhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTpaYSxhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEdCLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItaGVhZGVyIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjcHJldmlvdXNQYWdpbmF0b3JcbiAgICAgYXJpYS1oaWRkZW49InRydWUiXG4gICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxCZWZvcmUgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYmVmb3JlXCcpIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYmVmb3JlXCcsICRldmVudCkiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbC1jb250YWluZXIiICN0YWJMaXN0Q29udGFpbmVyIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSI+XG4gIDxkaXZcbiAgICAjdGFiTGlzdFxuICAgIGNsYXNzPSJtYXQtdGFiLWxpc3QiXG4gICAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09IFwnTm9vcEFuaW1hdGlvbnNcJyJcbiAgICByb2xlPSJ0YWJsaXN0IlxuICAgIChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkNvbnRlbnRDaGFuZ2VzKCkiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWxzIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWluay1iYXI+PC9tYXQtaW5rLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNuZXh0UGFnaW5hdG9yXG4gICAgIGFyaWEtaGlkZGVuPSJ0cnVlIlxuICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIgfHwgZGlzYWJsZVJpcHBsZSJcbiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIlxuICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKFwnYWZ0ZXJcJywgJGV2ZW50KSJcbiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKFwnYWZ0ZXJcJykiXG4gICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+XG4gIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+XG48L2Rpdj5cbicsaW5wdXRzOlsic2VsZWN0ZWRJbmRleCJdLG91dHB1dHM6WyJzZWxlY3RGb2N1c2VkSW5kZXgiLCJpbmRleEZvY3VzZWQiXSxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLkRlZmF1bHQsaG9zdDp7Y2xhc3M6Im1hdC10YWItaGVhZGVyIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZF0iOiJfc2hvd1BhZ2luYXRpb25Db250cm9scyIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1ydGxdIjoiX2dldExheW91dERpcmVjdGlvbigpID09ICdydGwnIn0sc3R5bGVzOlsnLm1hdC10YWItaGVhZGVye2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpub25lO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21pbi13aWR0aDozMnB4O2N1cnNvcjpwb2ludGVyO3otaW5kZXg6Mjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dG91Y2gtYWN0aW9uOm5vbmV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY29udHJvbHMtZW5hYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntkaXNwbGF5OmZsZXh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1sZWZ0OjRweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLXJpZ2h0OjRweH0ubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjJweCAycHggMCAwO2NvbnRlbnQ6IiI7aGVpZ2h0OjhweDt3aWR0aDo4cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7Ym94LXNoYWRvdzpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtdGFiLWxpc3R7ZmxleC1ncm93OjE7cG9zaXRpb246cmVsYXRpdmU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1sYWJlbHN7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHN7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt6LWluZGV4OjF9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC10YWItbGlzdHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItbGFiZWx7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1sYWJlbDpmb2N1czpub3QoLm1hdC10YWItZGlzYWJsZWQpe29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC10YWItbGFiZWwgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVse29wYWNpdHk6MX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGFiZWx7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnVGfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XX0pLHtfaXRlbXM6W3t0eXBlOllhLGFyZ3M6W0JCLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6WmEsYXJnczpbTUIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOlphLGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6WmEsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTpaYSxhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTpaYSxhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBXQiBleHRlbmRzIGpCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQsbyxpLGUsbixhLHIpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITEsdGhpcy5jb2xvcj0icHJpbWFyeSJ9Z2V0IGJhY2tncm91bmRDb2xvcigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3J9c2V0IGJhY2tncm91bmRDb2xvcih0KXtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7ZS5yZW1vdmUoYG1hdC1iYWNrZ3JvdW5kLSR7dGhpcy5iYWNrZ3JvdW5kQ29sb3J9YCksdCYmZS5hZGQoYG1hdC1iYWNrZ3JvdW5kLSR7dH1gKSx0aGlzLl9iYWNrZ3JvdW5kQ29sb3I9dH1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9kaXNhYmxlUmlwcGxlfXNldCBkaXNhYmxlUmlwcGxlKHQpe3RoaXMuX2Rpc2FibGVSaXBwbGU9eXoodCl9X2l0ZW1TZWxlY3RlZCgpe31uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pdGVtcy5jaGFuZ2VzLnBpcGUoTmUobnVsbCksSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMudXBkYXRlQWN0aXZlTGluaygpfSkpLHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpfXVwZGF0ZUFjdGl2ZUxpbmsoKXtpZighdGhpcy5faXRlbXMpcmV0dXJuO2NvbnN0IHQ9dGhpcy5faXRlbXMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uYWN0aXZlKXJldHVybiB0aGlzLnNlbGVjdGVkSW5kZXg9ZSx2b2lkIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO3RoaXMuc2VsZWN0ZWRJbmRleD0tMSx0aGlzLl9pbmtCYXIuaGlkZSgpfX1XQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V0IpKFNtKGhnKSxTbShISSw4KSxTbShhXyksU20oVWcpLFNtKHVGKSxTbSh3eiksU20oVlAsOCkpfSxXQi7JtWRpcj1sbyh7dHlwZTpXQixpbnB1dHM6e2NvbG9yOiJjb2xvciIsYmFja2dyb3VuZENvbG9yOiJiYWNrZ3JvdW5kQ29sb3IiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUifSxmZWF0dXJlczpbeHBdfSksV0IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6YV99LHt0eXBlOlVnfSx7dHlwZTp1Rn0se3R5cGU6d3p9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XSxXQi5wcm9wRGVjb3JhdG9ycz17YmFja2dyb3VuZENvbG9yOlt7dHlwZTp4eX1dLGRpc2FibGVSaXBwbGU6W3t0eXBlOnh5fV0sY29sb3I6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoV0IsW3t0eXBlOkN5fV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTphX30se3R5cGU6VWd9LHt0eXBlOnVGfSx7dHlwZTp3en0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse2NvbG9yOlt7dHlwZTp4eX1dLGJhY2tncm91bmRDb2xvcjpbe3R5cGU6eHl9XSxkaXNhYmxlUmlwcGxlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgWUIgZXh0ZW5kcyBXQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyKXtzdXBlcih0LGUsbixvLGksYSxyKX19WUIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlCKShTbShoZyksU20oSEksOCksU20oYV8pLFNtKFVnKSxTbSh1RiksU20od3opLFNtKFZQLDgpKX0sWUIuybVjbXA9dG8oe3R5cGU6WUIsc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbmF2LWJhciIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJiRoKG8sWEIsNSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5faXRlbXM9dCl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKE1CLDcpLFFoKGdCLDcpLFFoKGhCLDcpLFFoKGJCLDUpLFFoKHlCLDUpKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLl9pbmtCYXI9dC5maXJzdCksSmgodD10YigpKSYmKG4uX3RhYkxpc3RDb250YWluZXI9dC5maXJzdCksSmgodD10YigpKSYmKG4uX3RhYkxpc3Q9dC5maXJzdCksSmgodD10YigpKSYmKG4uX25leHRQYWdpbmF0b3I9dC5maXJzdCksSmgodD10YigpKSYmKG4uX3ByZXZpb3VzUGFnaW5hdG9yPXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLW5hdi1iYXIiLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixuLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09bi5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpKCJtYXQtcHJpbWFyeSIsIndhcm4iIT09bi5jb2xvciYmImFjY2VudCIhPT1uLmNvbG9yKSgibWF0LWFjY2VudCIsImFjY2VudCI9PT1uLmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09PW4uY29sb3IpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VGFiTmF2QmFyIiwibWF0VGFiTmF2Il0sZmVhdHVyZXM6W3hwXSxhdHRyczpbIm1hdC10YWItbmF2LWJhciIsIiJdLG5nQ29udGVudFNlbGVjdG9yczppQixkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGluay1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxpbmtzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoWm0oKSxSbSgwLCJkaXYiLDAsMSksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLGUpfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc3RvcEludGVydmFsKCl9KSksVG0oMiwiZGl2IiwyKSxBbSgpLFJtKDMsImRpdiIsMyw0KSxWbSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksUm0oNSwiZGl2Iiw1LDYpLFZtKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Db250ZW50Q2hhbmdlcygpfSkpLFJtKDcsImRpdiIsNyksWG0oOCksQW0oKSxUbSg5LCJtYXQtaW5rLWJhciIpLEFtKCksQW0oKSxSbSgxMCwiZGl2Iiw4LDkpLFZtKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9zdG9wSW50ZXJ2YWwoKX0pKSxUbSgxMiwiZGl2IiwyKSxBbSgpKSwyJmUmJihwdSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEJlZm9yZSksRG0oIm1hdFJpcHBsZURpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxuLmRpc2FibGVSaXBwbGUpLHJjKDUpLHB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PW4uX2FuaW1hdGlvbk1vZGUpLHJjKDUpLHB1KCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixuLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLERtKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5fZGlzYWJsZVNjcm9sbEFmdGVyfHxuLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpba0gsanosTUJdLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxZQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTphX30se3R5cGU6VWd9LHt0eXBlOnVGfSx7dHlwZTp3en0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dLFlCLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOllhLGFyZ3M6W3FlKCgoKT0+WEIpKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOlphLGFyZ3M6W01CLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTpaYSxhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOlphLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6WmEsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6WmEsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChZQixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1uYXYtYmFyXSIsZXhwb3J0QXM6Im1hdFRhYk5hdkJhciwgbWF0VGFiTmF2IixpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIG1hdC1lbGV2YXRpb24tejQiXG4gICAgICNwcmV2aW91c1BhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSB8fCBkaXNhYmxlUmlwcGxlIlxuICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIlxuICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soXCdiZWZvcmVcJykiXG4gICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoXCdiZWZvcmVcJywgJGV2ZW50KSJcbiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPSJtYXQtdGFiLWxpbmstY29udGFpbmVyIiAjdGFiTGlzdENvbnRhaW5lciAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICA8ZGl2XG4gICAgY2xhc3M9Im1hdC10YWItbGlzdCJcbiAgICBbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdPSJfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnIlxuICAgICN0YWJMaXN0XG4gICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1saW5rcyI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1pbmstYmFyPjwvbWF0LWluay1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gbWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciBtYXQtZWxldmF0aW9uLXo0IlxuICAgICAjbmV4dFBhZ2luYXRvclxuICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgbWF0LXJpcHBsZSBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEFmdGVyIHx8IGRpc2FibGVSaXBwbGUiXG4gICAgIFtjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciJcbiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcyhcJ2FmdGVyXCcsICRldmVudCkiXG4gICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljayhcJ2FmdGVyXCcpIlxuICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPlxuICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iPjwvZGl2PlxuPC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLW5hdi1iYXIgbWF0LXRhYi1oZWFkZXIiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkXSI6Il9zaG93UGFnaW5hdGlvbkNvbnRyb2xzIiwiW2NsYXNzLm1hdC10YWItaGVhZGVyLXJ0bF0iOiJfZ2V0TGF5b3V0RGlyZWN0aW9uKCkgPT0gJ3J0bCciLCJbY2xhc3MubWF0LXByaW1hcnldIjonY29sb3IgIT09ICJ3YXJuIiAmJiBjb2xvciAhPT0gImFjY2VudCInLCJbY2xhc3MubWF0LWFjY2VudF0iOidjb2xvciA9PT0gImFjY2VudCInLCJbY2xhc3MubWF0LXdhcm5dIjonY29sb3IgPT09ICJ3YXJuIid9LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxzdHlsZXM6WycubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC10YWItbGlua3N7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmtze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1saW5rLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0ubWF0LXRhYi1saW5re2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1saW5rOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGluazpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1saW5rIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5re29wYWNpdHk6MX1bbWF0LXN0cmV0Y2gtdGFic10gLm1hdC10YWItbGlua3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxpbmt7bWluLXdpZHRoOjcycHh9fVxuJ119XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6YV99LHt0eXBlOlVnfSx7dHlwZTp1Rn0se3R5cGU6d3p9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XX0pLHtfaXRlbXM6W3t0eXBlOllhLGFyZ3M6W3FlKCgoKT0+WEIpKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOlphLGFyZ3M6W01CLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTpaYSxhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOlphLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6WmEsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6WmEsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX0pO2NvbnN0IHFCPSRJKFFJKEtJKGNsYXNze30pKSk7Y2xhc3MgWkIgZXh0ZW5kcyBxQntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIoKSx0aGlzLl90YWJOYXZCYXI9dCx0aGlzLmVsZW1lbnRSZWY9ZSx0aGlzLl9mb2N1c01vbml0b3I9aSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLnJpcHBsZUNvbmZpZz1ufHx7fSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLCJOb29wQW5pbWF0aW9ucyI9PT1hJiYodGhpcy5yaXBwbGVDb25maWcuYW5pbWF0aW9uPXtlbnRlckR1cmF0aW9uOjAsZXhpdER1cmF0aW9uOjB9KX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2lzQWN0aXZlfXNldCBhY3RpdmUodCl7eXoodCkhPT10aGlzLl9pc0FjdGl2ZSYmKHRoaXMuX2lzQWN0aXZlPXQsdGhpcy5fdGFiTmF2QmFyLnVwZGF0ZUFjdGl2ZUxpbmsoKSl9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fdGFiTmF2QmFyLmRpc2FibGVSaXBwbGV8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZil9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKX1faGFuZGxlRm9jdXMoKXt0aGlzLl90YWJOYXZCYXIuZm9jdXNJbmRleD10aGlzLl90YWJOYXZCYXIuX2l0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpfX1aQi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WkIpKFNtKFdCKSxTbShoZyksU20od0gsOCksTmEoInRhYmluZGV4IiksU20oU0kpLFNtKFZQLDgpKX0sWkIuybVkaXI9bG8oe3R5cGU6WkIsaW5wdXRzOnthY3RpdmU6ImFjdGl2ZSJ9LGZlYXR1cmVzOlt4cF19KSxaQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOldCfSx7dHlwZTpoZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt3SF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlNJfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sWkIucHJvcERlY29yYXRvcnM9e2FjdGl2ZTpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChaQixbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6V0J9LHt0eXBlOmhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3dIXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6U0l9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XX0pLHthY3RpdmU6W3t0eXBlOnh5fV19KTtjbGFzcyBYQiBleHRlbmRzIFpCe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7c3VwZXIodCxlLGksYSxyLHMpLHRoaXMuX3RhYkxpbmtSaXBwbGU9bmV3IFBIKHRoaXMsbixlLG8pLHRoaXMuX3RhYkxpbmtSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKGUubmF0aXZlRWxlbWVudCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX3RhYkxpbmtSaXBwbGUuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX19WEIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhCKShTbShZQiksU20oaGcpLFNtKGFfKSxTbSh3eiksU20od0gsOCksTmEoInRhYmluZGV4IiksU20oU0kpLFNtKFZQLDgpKX0sWEIuybVkaXI9bG8oe3R5cGU6WEIsc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbGluayIsIiJdLFsiIiwibWF0VGFiTGluayIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC10YWItbGluayIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZUZvY3VzKCl9KSksMiZlJiYoanAoImFyaWEtY3VycmVudCIsbi5hY3RpdmU/InBhZ2UiOm51bGwpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSgidGFiSW5kZXgiLG4udGFiSW5kZXgpLHB1KCJtYXQtdGFiLWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LXRhYi1sYWJlbC1hY3RpdmUiLG4uYWN0aXZlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgifSxleHBvcnRBczpbIm1hdFRhYkxpbmsiXSxmZWF0dXJlczpbeHBdfSksWEIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpZQn0se3R5cGU6aGd9LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt3SF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlNJfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYQixbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0LXRhYi1saW5rXSwgW21hdFRhYkxpbmtdIixleHBvcnRBczoibWF0VGFiTGluayIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxob3N0OntjbGFzczoibWF0LXRhYi1saW5rIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJbYXR0ci5hcmlhLWN1cnJlbnRdIjonYWN0aXZlID8gInBhZ2UiIDogbnVsbCcsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci50YWJJbmRleF0iOiJ0YWJJbmRleCIsIltjbGFzcy5tYXQtdGFiLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXSI6ImFjdGl2ZSIsIihmb2N1cykiOiJfaGFuZGxlRm9jdXMoKSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WUJ9LHt0eXBlOmhnfSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbd0hdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpqYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpTSX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBLQnt9S0IuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtCKX0sS0IuybVtb2Q9YW8oe3R5cGU6S0J9KSxLQi7JtWluaj12bih7aW1wb3J0czpbW1dNLFhJLFJGLFNILFV6LE5JXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEtCLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV00sWEksUkYsU0gsVXosTkldLGV4cG9ydHM6W1hJLEZCLFBCLFNCLFlCLFhCLHhCXSxkZWNsYXJhdGlvbnM6W0ZCLFBCLFNCLE1CLEJCLFlCLFhCLEFCLEVCLEdCLHhCXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEtCLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRkIsUEIsU0IsTUIsQkIsWUIsWEIsQUIsRUIsR0IseEJdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dNLFhJLFJGLFNILFV6LE5JXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltYSSxGQixQQixTQixZQixYQix4Ql19fSk7Y29uc3QgSkI9WyJ1bmRlcmxpbmUiXSxRQj1bImNvbm5lY3Rpb25Db250YWluZXIiXSwkQj1bImlucHV0Q29udGFpbmVyIl0sdFY9WyJsYWJlbCJdO2Z1bmN0aW9uIGVWKHQsZSl7MSZ0JiYoTm0oMCksUm0oMSwiZGl2IiwxNCksVG0oMiwiZGl2IiwxNSksVG0oMywiZGl2IiwxNiksVG0oNCwiZGl2IiwxNyksQW0oKSxSbSg1LCJkaXYiLDE4KSxUbSg2LCJkaXYiLDE1KSxUbSg3LCJkaXYiLDE2KSxUbSg4LCJkaXYiLDE3KSxBbSgpLHptKCkpfWZ1bmN0aW9uIG5WKHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwxOSksWG0oMSwxKSxBbSgpKX1mdW5jdGlvbiBvVih0LGUpe2lmKDEmdCYmKE5tKDApLFhtKDEsMiksUm0oMiwic3BhbiIpLGt1KDMpLEFtKCksem0oKSksMiZ0KXtjb25zdCB0PVltKDIpO3JjKDMpLFN1KHQuX2NvbnRyb2wucGxhY2Vob2xkZXIpfX1mdW5jdGlvbiBpVih0LGUpezEmdCYmWG0oMCwzLFsiKm5nU3dpdGNoQ2FzZSIsInRydWUiXSl9ZnVuY3Rpb24gYVYodCxlKXsxJnQmJihSbSgwLCJzcGFuIiwyMyksa3UoMSwiICoiKSxBbSgpKX1mdW5jdGlvbiByVih0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImxhYmVsIiwyMCwyMSksVm0oImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLnVwZGF0ZU91dGxpbmVHYXAoKX0pKSxRcCgyLG9WLDQsMSwibmctY29udGFpbmVyIiwxMiksUXAoMyxpViwxLDAsIm5nLWNvbnRlbnQiLDEyKSxRcCg0LGFWLDIsMCwic3BhbiIsMjIpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7cHUoIm1hdC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsdC5fY29udHJvbC5lbXB0eSYmIXQuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtYWNjZW50IiwiYWNjZW50Ij09dC5jb2xvcikoIm1hdC13YXJuIiwid2FybiI9PXQuY29sb3IpLERtKCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwib3V0bGluZSIhPXQuYXBwZWFyYW5jZSkoImlkIix0Ll9sYWJlbElkKSgibmdTd2l0Y2giLHQuX2hhc0xhYmVsKCkpLGpwKCJmb3IiLHQuX2NvbnRyb2wuaWQpKCJhcmlhLW93bnMiLHQuX2NvbnRyb2wuaWQpLHJjKDIpLERtKCJuZ1N3aXRjaENhc2UiLCExKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIiwhMCkscmMoMSksRG0oIm5nSWYiLCF0LmhpZGVSZXF1aXJlZE1hcmtlciYmdC5fY29udHJvbC5yZXF1aXJlZCYmIXQuX2NvbnRyb2wuZGlzYWJsZWQpfX1mdW5jdGlvbiBzVih0LGUpezEmdCYmKFJtKDAsImRpdiIsMjQpLFhtKDEsNCksQW0oKSl9ZnVuY3Rpb24gbFYodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDI1LDI2KSxUbSgyLCJzcGFuIiwyNyksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMikscHUoIm1hdC1hY2NlbnQiLCJhY2NlbnQiPT10LmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09dC5jb2xvcil9fWZ1bmN0aW9uIGNWKHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiksWG0oMSw1KSxBbSgpKSwyJnQmJkRtKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIixZbSgpLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSl9ZnVuY3Rpb24gZFYodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDMxKSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7RG0oImlkIix0Ll9oaW50TGFiZWxJZCkscmMoMSksU3UodC5oaW50TGFiZWwpfX1mdW5jdGlvbiBwVih0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMjgpLFFwKDEsZFYsMiwyLCJkaXYiLDI5KSxYbSgyLDYpLFRtKDMsImRpdiIsMzApLFhtKDQsNyksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7RG0oIkB0cmFuc2l0aW9uTWVzc2FnZXMiLHQuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlKSxyYygxKSxEbSgibmdJZiIsdC5oaW50TGFiZWwpfX1jb25zdCBtVj1bIioiLFtbIiIsIm1hdFByZWZpeCIsIiJdXSxbWyJtYXQtcGxhY2Vob2xkZXIiXV0sW1sibWF0LWxhYmVsIl1dLFtbIiIsIm1hdFN1ZmZpeCIsIiJdXSxbWyJtYXQtZXJyb3IiXV0sW1sibWF0LWhpbnQiLDMsImFsaWduIiwiZW5kIl1dLFtbIm1hdC1oaW50IiwiYWxpZ24iLCJlbmQiXV1dO2xldCB1Vj0wO2NvbnN0IGZWPW5ldyBHYSgiTWF0RXJyb3IiKTtjbGFzcyBnVntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaWQ9Im1hdC1lcnJvci0iK3VWKyssdHx8ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1saXZlIiwicG9saXRlIil9fWdWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxnVikoTmEoImFyaWEtbGl2ZSIpLFNtKGhnKSl9LGdWLsm1ZGlyPWxvKHt0eXBlOmdWLHNlbGVjdG9yczpbWyJtYXQtZXJyb3IiXV0saG9zdEF0dHJzOlsiYXJpYS1hdG9taWMiLCJ0cnVlIiwxLCJtYXQtZXJyb3IiXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZqcCgiaWQiLG4uaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6ZlYsdXNlRXhpc3Rpbmc6Z1Z9XSldfSksZ1YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbImFyaWEtbGl2ZSJdfV19LHt0eXBlOmhnfV0sZ1YucHJvcERlY29yYXRvcnM9e2lkOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGdWLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1lcnJvciIsaG9zdDp7Y2xhc3M6Im1hdC1lcnJvciIsIlthdHRyLmlkXSI6ImlkIiwiYXJpYS1hdG9taWMiOiJ0cnVlIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpmVix1c2VFeGlzdGluZzpnVn1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJhcmlhLWxpdmUiXX1dfSx7dHlwZTpoZ31dfSkse2lkOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBoVj17dHJhbnNpdGlvbk1lc3NhZ2VzOm54KCJ0cmFuc2l0aW9uTWVzc2FnZXMiLFtyeCgiZW50ZXIiLGF4KHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDAlKSJ9KSksbHgoInZvaWQgPT4gZW50ZXIiLFtheCh7b3BhY2l0eTowLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtNXB4KSJ9KSxveCgiMzAwbXMgY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDAuNTUsIDAuMikiKV0pXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBiVnt9ZnVuY3Rpb24geVYodCl7cmV0dXJuIEVycm9yKGBBIGhpbnQgd2FzIGFscmVhZHkgZGVjbGFyZWQgZm9yICdhbGlnbj0iJHt0fSInLmApfWJWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiVil9LGJWLsm1ZGlyPWxvKHt0eXBlOmJWfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChiVixbe3R5cGU6Q3l9XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IF9WPTA7Y29uc3QgQ1Y9bmV3IEdhKCJNYXRIaW50Iik7Y2xhc3MgTVZ7Y29uc3RydWN0b3IoKXt0aGlzLmFsaWduPSJzdGFydCIsdGhpcy5pZD0ibWF0LWhpbnQtIitfVisrfX1NVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TVYpfSxNVi7JtWRpcj1sbyh7dHlwZTpNVixzZWxlY3RvcnM6W1sibWF0LWhpbnQiXV0saG9zdEF0dHJzOlsxLCJtYXQtaGludCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihqcCgiaWQiLG4uaWQpKCJhbGlnbiIsbnVsbCkscHUoIm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5kIiwiZW5kIj09PW4uYWxpZ24pKX0saW5wdXRzOnthbGlnbjoiYWxpZ24iLGlkOiJpZCJ9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6Q1YsdXNlRXhpc3Rpbmc6TVZ9XSldfSksTVYucHJvcERlY29yYXRvcnM9e2FsaWduOlt7dHlwZTp4eX1dLGlkOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE1WLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oaW50Iixob3N0OntjbGFzczoibWF0LWhpbnQiLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtaGludC1lbmRdIjonYWxpZ24gPT09ICJlbmQiJywiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5hbGlnbl0iOiJudWxsIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpDVix1c2VFeGlzdGluZzpNVn1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHthbGlnbjpbe3R5cGU6eHl9XSxpZDpbe3R5cGU6eHl9XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgdlZ7fXZWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2Vil9LHZWLsm1ZGlyPWxvKHt0eXBlOnZWLHNlbGVjdG9yczpbWyJtYXQtbGFiZWwiXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHZWLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1sYWJlbCJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4Vnt9eFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhWKX0seFYuybVkaXI9bG8oe3R5cGU6eFYsc2VsZWN0b3JzOltbIm1hdC1wbGFjZWhvbGRlciJdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeFYsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXBsYWNlaG9sZGVyIn1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE9WPW5ldyBHYSgiTWF0UHJlZml4Iik7Y2xhc3MgUFZ7fVBWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQVil9LFBWLsm1ZGlyPWxvKHt0eXBlOlBWLHNlbGVjdG9yczpbWyIiLCJtYXRQcmVmaXgiLCIiXV0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpPVix1c2VFeGlzdGluZzpQVn1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFBWLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXRQcmVmaXhdIixwcm92aWRlcnM6W3twcm92aWRlOk9WLHVzZUV4aXN0aW5nOlBWfV19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB3Vj1uZXcgR2EoIk1hdFN1ZmZpeCIpO2NsYXNzIGtWe31rVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a1YpfSxrVi7JtWRpcj1sbyh7dHlwZTprVixzZWxlY3RvcnM6W1siIiwibWF0U3VmZml4IiwiIl1dLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6d1YsdXNlRXhpc3Rpbmc6a1Z9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrVixbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0U3VmZml4XSIscHJvdmlkZXJzOlt7cHJvdmlkZTp3Vix1c2VFeGlzdGluZzprVn1dfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IFNWPTA7Y29uc3QgRFY9SkkoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sInByaW1hcnkiKSxFVj1uZXcgR2EoIk1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyIpLFJWPW5ldyBHYSgiTWF0Rm9ybUZpZWxkIik7Y2xhc3MgQVYgZXh0ZW5kcyBEVntjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMpe3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZGlyPW8sdGhpcy5fZGVmYXVsdHM9aSx0aGlzLl9wbGF0Zm9ybT1hLHRoaXMuX25nWm9uZT1yLHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSExLHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSSx0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZT0hMSx0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZT0iIix0aGlzLl9oaW50TGFiZWw9IiIsdGhpcy5faGludExhYmVsSWQ9Im1hdC1oaW50LSIrU1YrKyx0aGlzLl9sYWJlbElkPSJtYXQtZm9ybS1maWVsZC1sYWJlbC0iK1NWKyssdGhpcy5mbG9hdExhYmVsPXRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKSx0aGlzLl9hbmltYXRpb25zRW5hYmxlZD0iTm9vcEFuaW1hdGlvbnMiIT09cyx0aGlzLmFwcGVhcmFuY2U9aSYmaS5hcHBlYXJhbmNlP2kuYXBwZWFyYW5jZToibGVnYWN5Iix0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9ISghaXx8bnVsbD09aS5oaWRlUmVxdWlyZWRNYXJrZXIpJiZpLmhpZGVSZXF1aXJlZE1hcmtlcn1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe2NvbnN0IGU9dGhpcy5fYXBwZWFyYW5jZTt0aGlzLl9hcHBlYXJhbmNlPXR8fHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5hcHBlYXJhbmNlfHwibGVnYWN5Iiwib3V0bGluZSI9PT10aGlzLl9hcHBlYXJhbmNlJiZlIT09dCYmKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwKX1nZXQgaGlkZVJlcXVpcmVkTWFya2VyKCl7cmV0dXJuIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcn1zZXQgaGlkZVJlcXVpcmVkTWFya2VyKHQpe3RoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcj15eih0KX1fc2hvdWxkQWx3YXlzRmxvYXQoKXtyZXR1cm4iYWx3YXlzIj09PXRoaXMuZmxvYXRMYWJlbCYmIXRoaXMuX3Nob3dBbHdheXNBbmltYXRlfV9jYW5MYWJlbEZsb2F0KCl7cmV0dXJuIm5ldmVyIiE9PXRoaXMuZmxvYXRMYWJlbH1nZXQgaGludExhYmVsKCl7cmV0dXJuIHRoaXMuX2hpbnRMYWJlbH1zZXQgaGludExhYmVsKHQpe3RoaXMuX2hpbnRMYWJlbD10LHRoaXMuX3Byb2Nlc3NIaW50cygpfWdldCBmbG9hdExhYmVsKCl7cmV0dXJuImxlZ2FjeSIhPT10aGlzLmFwcGVhcmFuY2UmJiJuZXZlciI9PT10aGlzLl9mbG9hdExhYmVsPyJhdXRvIjp0aGlzLl9mbG9hdExhYmVsfXNldCBmbG9hdExhYmVsKHQpe3QhPT10aGlzLl9mbG9hdExhYmVsJiYodGhpcy5fZmxvYXRMYWJlbD10fHx0aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBfY29udHJvbCgpe3JldHVybiB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2x8fHRoaXMuX2NvbnRyb2xOb25TdGF0aWN8fHRoaXMuX2NvbnRyb2xTdGF0aWN9c2V0IF9jb250cm9sKHQpe3RoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbD10fWdldExhYmVsSWQoKXtyZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpP3RoaXMuX2xhYmVsSWQ6bnVsbH1nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCl7cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Db250YWluZXJSZWZ8fHRoaXMuX2VsZW1lbnRSZWZ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKTtjb25zdCB0PXRoaXMuX2NvbnRyb2w7dC5jb250cm9sVHlwZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC1mb3JtLWZpZWxkLXR5cGUtJHt0LmNvbnRyb2xUeXBlfWApLHQuc3RhdGVDaGFuZ2VzLnBpcGUoTmUobnVsbCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl92YWxpZGF0ZVBsYWNlaG9sZGVycygpLHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHQubmdDb250cm9sJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMmJnQubmdDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9KSkscmUodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcyx0aGlzLl9zdWZmaXhDaGlsZHJlbi5jaGFuZ2VzKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMucGlwZShOZShudWxsKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Byb2Nlc3NIaW50cygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5waXBlKE5lKG51bGwpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMudXBkYXRlT3V0bGluZUdhcCgpKSl9KSk6dGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKSx0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU9ImVudGVyIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9zaG91bGRGb3J3YXJkKHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbD90aGlzLl9jb250cm9sLm5nQ29udHJvbDpudWxsO3JldHVybiBlJiZlW3RdfV9oYXNQbGFjZWhvbGRlcigpe3JldHVybiEhKHRoaXMuX2NvbnRyb2wmJnRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXJ8fHRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQpfV9oYXNMYWJlbCgpe3JldHVybiEoIXRoaXMuX2xhYmVsQ2hpbGROb25TdGF0aWMmJiF0aGlzLl9sYWJlbENoaWxkU3RhdGljKX1fc2hvdWxkTGFiZWxGbG9hdCgpe3JldHVybiB0aGlzLl9jYW5MYWJlbEZsb2F0KCkmJih0aGlzLl9jb250cm9sJiZ0aGlzLl9jb250cm9sLnNob3VsZExhYmVsRmxvYXR8fHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpfV9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9oYXNMYWJlbCgpfHx0aGlzLl9oYXNMYWJlbCgpJiYhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpfV9oYXNGbG9hdGluZ0xhYmVsKCl7cmV0dXJuIHRoaXMuX2hhc0xhYmVsKCl8fCJsZWdhY3kiPT09dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9oYXNQbGFjZWhvbGRlcigpfV9nZXREaXNwbGF5ZWRNZXNzYWdlcygpe3JldHVybiB0aGlzLl9lcnJvckNoaWxkcmVuJiZ0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aD4wJiZ0aGlzLl9jb250cm9sLmVycm9yU3RhdGU/ImVycm9yIjoiaGludCJ9X2FuaW1hdGVBbmRMb2NrTGFiZWwoKXt0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkmJnRoaXMuX2NhbkxhYmVsRmxvYXQoKSYmKHRoaXMuX2FuaW1hdGlvbnNFbmFibGVkJiZ0aGlzLl9sYWJlbCYmKHRoaXMuX3Nob3dBbHdheXNBbmltYXRlPSEwLG9lKHRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQsInRyYW5zaXRpb25lbmQiKS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITF9KSkpLHRoaXMuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCl7aWYodGhpcy5fY29udHJvbC5wbGFjZWhvbGRlciYmdGhpcy5fcGxhY2Vob2xkZXJDaGlsZCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiUGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBjaGlsZCBlbGVtZW50IHdlcmUgYm90aCBzcGVjaWZpZWQuIil9KSgpfV9wcm9jZXNzSGludHMoKXt0aGlzLl92YWxpZGF0ZUhpbnRzKCksdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCl9X3ZhbGlkYXRlSGludHMoKXtpZih0aGlzLl9oaW50Q2hpbGRyZW4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl7bGV0IHQsZTt0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgobj0+e2lmKCJzdGFydCI9PT1uLmFsaWduKXtpZih0fHx0aGlzLmhpbnRMYWJlbCl0aHJvdyB5Vigic3RhcnQiKTt0PW59ZWxzZSBpZigiZW5kIj09PW4uYWxpZ24pe2lmKGUpdGhyb3cgeVYoImVuZCIpO2U9bn19KSl9fV9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5mbG9hdExhYmVsfHwiYXV0byJ9X3N5bmNEZXNjcmliZWRCeUlkcygpe2lmKHRoaXMuX2NvbnRyb2wpe2xldCB0PVtdO2lmKHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeSYmInN0cmluZyI9PXR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkmJnQucHVzaCguLi50aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkuc3BsaXQoIiAiKSksImhpbnQiPT09dGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSl7Y29uc3QgZT10aGlzLl9oaW50Q2hpbGRyZW4/dGhpcy5faGludENoaWxkcmVuLmZpbmQoKHQ9PiJzdGFydCI9PT10LmFsaWduKSk6bnVsbCxuPXRoaXMuX2hpbnRDaGlsZHJlbj90aGlzLl9oaW50Q2hpbGRyZW4uZmluZCgodD0+ImVuZCI9PT10LmFsaWduKSk6bnVsbDtlP3QucHVzaChlLmlkKTp0aGlzLl9oaW50TGFiZWwmJnQucHVzaCh0aGlzLl9oaW50TGFiZWxJZCksbiYmdC5wdXNoKG4uaWQpfWVsc2UgdGhpcy5fZXJyb3JDaGlsZHJlbiYmdC5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKCh0PT50LmlkKSkpO3RoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHModCl9fV92YWxpZGF0ZUNvbnRyb2xDaGlsZCgpe2lmKCF0aGlzLl9jb250cm9sJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigibWF0LWZvcm0tZmllbGQgbXVzdCBjb250YWluIGEgTWF0Rm9ybUZpZWxkQ29udHJvbC4iKX0pKCl9dXBkYXRlT3V0bGluZUdhcCgpe2NvbnN0IHQ9dGhpcy5fbGFiZWw/dGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudDpudWxsO2lmKCJvdXRsaW5lIiE9PXRoaXMuYXBwZWFyYW5jZXx8IXR8fCF0LmNoaWxkcmVuLmxlbmd0aHx8IXQudGV4dENvbnRlbnQudHJpbSgpKXJldHVybjtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtpZighdGhpcy5faXNBdHRhY2hlZFRvRE9NKCkpcmV0dXJuIHZvaWQodGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITApO2xldCBlPTAsbj0wO2NvbnN0IG89dGhpcy5fY29ubmVjdGlvbkNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LGk9by5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCIpLGE9by5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiKTtpZih0aGlzLl9sYWJlbCYmdGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpe2NvbnN0IGk9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZigwPT09aS53aWR0aCYmMD09PWkuaGVpZ2h0KXJldHVybiB0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT0hMCx2b2lkKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSExKTtjb25zdCBhPXRoaXMuX2dldFN0YXJ0RW5kKGkpLHI9dC5jaGlsZHJlbixzPXRoaXMuX2dldFN0YXJ0RW5kKHJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO2xldCBsPTA7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspbCs9clt0XS5vZmZzZXRXaWR0aDtlPU1hdGguYWJzKHMtYSktNSxuPWw+MD8uNzUqbCsxMDowfWZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWlbdF0uc3R5bGUud2lkdGg9YCR7ZX1weGA7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0KyspYVt0XS5zdHlsZS53aWR0aD1gJHtufXB4YDt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZT10aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMX1fZ2V0U3RhcnRFbmQodCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/dC5yaWdodDp0LmxlZnR9X2lzQXR0YWNoZWRUb0RPTSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKHQuZ2V0Um9vdE5vZGUpe2NvbnN0IGU9dC5nZXRSb290Tm9kZSgpO3JldHVybiBlJiZlIT09dH1yZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHQpfX1BVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QVYpKFNtKGhnKSxTbShVZyksU20oaGcpLFNtKEhJLDgpLFNtKEVWLDgpLFNtKHd6KSxTbShhXyksU20oVlAsOCkpfSxBVi7JtWNtcD10byh7dHlwZTpBVixzZWxlY3RvcnM6W1sibWF0LWZvcm0tZmllbGQiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoJGgobyxiViw1KSwkaChvLGJWLDcpLCRoKG8sdlYsNSksJGgobyx2Viw3KSwkaChvLHhWLDUpLCRoKG8sZlYsNSksJGgobyxDViw1KSwkaChvLE9WLDUpLCRoKG8sd1YsNSkpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX2NvbnRyb2xOb25TdGF0aWM9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2NvbnRyb2xTdGF0aWM9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2xhYmVsQ2hpbGROb25TdGF0aWM9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2xhYmVsQ2hpbGRTdGF0aWM9dC5maXJzdCksSmgodD10YigpKSYmKG4uX3BsYWNlaG9sZGVyQ2hpbGQ9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2Vycm9yQ2hpbGRyZW49dCksSmgodD10YigpKSYmKG4uX2hpbnRDaGlsZHJlbj10KSxKaCh0PXRiKCkpJiYobi5fcHJlZml4Q2hpbGRyZW49dCksSmgodD10YigpKSYmKG4uX3N1ZmZpeENoaWxkcmVuPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChKQiw1KSxRaChRQiw3KSxRaCgkQiw1KSxRaCh0Viw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi51bmRlcmxpbmVSZWY9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2Nvbm5lY3Rpb25Db250YWluZXJSZWY9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2lucHV0Q29udGFpbmVyUmVmPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9sYWJlbD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWZvcm0tZmllbGQiXSxob3N0VmFyczo0MCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PW4uYXBwZWFyYW5jZSkoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCIsImZpbGwiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUiLCJvdXRsaW5lIj09bi5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kiLCJsZWdhY3kiPT1uLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1pbnZhbGlkIixuLl9jb250cm9sLmVycm9yU3RhdGUpKCJtYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQiLG4uX2NhbkxhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCIsbi5fc2hvdWxkTGFiZWxGbG9hdCgpKSgibWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIixuLl9oYXNGbG9hdGluZ0xhYmVsKCkpKCJtYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIixuLl9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCkpKCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZCIsbi5fY29udHJvbC5kaXNhYmxlZCkoIm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWQiLG4uX2NvbnRyb2wuYXV0b2ZpbGxlZCkoIm1hdC1mb2N1c2VkIixuLl9jb250cm9sLmZvY3VzZWQpKCJuZy11bnRvdWNoZWQiLG4uX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsbi5fc2hvdWxkRm9yd2FyZCgidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLG4uX3Nob3VsZEZvcndhcmQoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsbi5fc2hvdWxkRm9yd2FyZCgiZGlydHkiKSkoIm5nLXZhbGlkIixuLl9zaG91bGRGb3J3YXJkKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsbi5fc2hvdWxkRm9yd2FyZCgiaW52YWxpZCIpKSgibmctcGVuZGluZyIsbi5fc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCFuLl9hbmltYXRpb25zRW5hYmxlZCl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixmbG9hdExhYmVsOiJmbG9hdExhYmVsIixhcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixoaWRlUmVxdWlyZWRNYXJrZXI6ImhpZGVSZXF1aXJlZE1hcmtlciIsaGludExhYmVsOiJoaW50TGFiZWwifSxleHBvcnRBczpbIm1hdEZvcm1GaWVsZCJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6UlYsdXNlRXhpc3Rpbmc6QVZ9XSkseHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiLCJbbWF0UHJlZml4XSIsIm1hdC1wbGFjZWhvbGRlciIsIm1hdC1sYWJlbCIsIlttYXRTdWZmaXhdIiwibWF0LWVycm9yIiwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pIiwibWF0LWhpbnRbYWxpZ249J2VuZCddIl0sZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsIm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtZmxleCIsMywiY2xpY2siXSxbImNvbm5lY3Rpb25Db250YWluZXIiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiLDQsIm5nSWYiXSxbMSwibWF0LWZvcm0tZmllbGQtaW5maXgiXSxbImlucHV0Q29udGFpbmVyIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm1hdC1lbXB0eSIsIm1hdC1mb3JtLWZpZWxkLWVtcHR5IiwibWF0LWFjY2VudCIsIm1hdC13YXJuIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCIsNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1zdWZmaXgiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIiwzLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Il0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXByZWZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCIsImlkIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWwiLCIiXSxbImNsYXNzIiwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIG1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQiLCJtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtc3VmZml4Il0sWzEsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSJdLFsidW5kZXJsaW5lIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXJpcHBsZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWhpbnQiLDMsImlkIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyIl0sWzEsIm1hdC1oaW50IiwzLCJpZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoWm0obVYpLFJtKDAsImRpdiIsMCksUm0oMSwiZGl2IiwxLDIpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2NvbnRyb2wub25Db250YWluZXJDbGljayYmbi5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKGUpfSkpLFFwKDMsZVYsOSwwLCJuZy1jb250YWluZXIiLDMpLFFwKDQsblYsMiwwLCJkaXYiLDQpLFJtKDUsImRpdiIsNSw2KSxYbSg3KSxSbSg4LCJzcGFuIiw3KSxRcCg5LHJWLDUsMTYsImxhYmVsIiw4KSxBbSgpLEFtKCksUXAoMTAsc1YsMiwwLCJkaXYiLDkpLEFtKCksUXAoMTEsbFYsMyw0LCJkaXYiLDEwKSxSbSgxMiwiZGl2IiwxMSksUXAoMTMsY1YsMiwxLCJkaXYiLDEyKSxRcCgxNCxwViw1LDIsImRpdiIsMTMpLEFtKCksQW0oKSksMiZlJiYocmMoMyksRG0oIm5nSWYiLCJvdXRsaW5lIj09bi5hcHBlYXJhbmNlKSxyYygxKSxEbSgibmdJZiIsbi5fcHJlZml4Q2hpbGRyZW4ubGVuZ3RoKSxyYyg1KSxEbSgibmdJZiIsbi5faGFzRmxvYXRpbmdMYWJlbCgpKSxyYygxKSxEbSgibmdJZiIsbi5fc3VmZml4Q2hpbGRyZW4ubGVuZ3RoKSxyYygxKSxEbSgibmdJZiIsIm91dGxpbmUiIT1uLmFwcGVhcmFuY2UpLHJjKDEpLERtKCJuZ1N3aXRjaCIsbi5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsImVycm9yIikscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsImhpbnQiKSl9LGRpcmVjdGl2ZXM6W2RNLGZNLGdNLGp6XSxzdHlsZXM6WyIubWF0LWZvcm0tZmllbGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGR7dGV4dC1hbGlnbjpyaWdodH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1pbmZpeHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6YXV0bzttaW4td2lkdGg6MDt3aWR0aDoxODBweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCl9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtmb250OmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxjb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSx3aWR0aCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDtsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtZW1wdHkubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbcGxhY2Vob2xkZXJdOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1sYWJlbDpub3QoLm1hdC1mb3JtLWZpZWxkLWVtcHR5KXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlM2QoMSwgMS4wMDAxLCAxKX0ubWF0LWZvcm0tZmllbGQtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46NTAlO3RyYW5zZm9ybTpzY2FsZVgoMC41KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iLCcubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpkYXNoZWQgM3B4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MXB4O3dpZHRoOjEwMCV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX1cbicsJy5tYXQtaW5wdXQtZWxlbWVudHtmb250OmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpjdXJyZW50Q29sb3I7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDttYXJnaW46MDt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt0ZXh0LWFsaWduOmluaGVyaXQ7Ym94LXNpemluZzpjb250ZW50LWJveH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1jbGVhciwubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNvbnRhY3RzLWF1dG8tZmlsbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhcHMtbG9jay1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b257dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla10sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV17bGluZS1oZWlnaHQ6MX0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla106OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVdOjphZnRlcntjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2xlYXItYnV0dG9ue2ZvbnQtc2l6ZTouNzVlbX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtyZXNpemU6dmVydGljYWw7b3ZlcmZsb3c6YXV0b310ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudC5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZzoycHggMDttYXJnaW46LTJweCAwfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudHstbW96LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjFlbTt0b3A6LTFlbTttYXJnaW4tYm90dG9tOi0xZW19c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50Om5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lfS5tYXQtZm9jdXNlZCAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIHNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO21hcmdpbi10b3A6LTIuNXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7cmlnaHQ6YXV0bztsZWZ0OjB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MTVweH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTBweCl9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTEwcHh9XG4nLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMDBweCk7LW1zLXRyYW5zZm9ybTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257d2lkdGg6MWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntmb250OmluaGVyaXQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257Zm9udC1zaXplOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RvcDowO2hlaWdodDoycHg7b3ZlcmZsb3c6aGlkZGVufS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtaW52YWxpZDpub3QoLm1hdC1mb2N1c2VkKSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDoxcHh9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC13cmFwcGVye21hcmdpbjouMjVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZzowIC43NWVtIDAgLjc1ZW07bWFyZ2luLXRvcDotMC4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7dG9wOi4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMjVlbTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7bWluLXdpZHRoOjVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHg7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7ZmxleC1ncm93OjF9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXJhZGl1czouMDAwMDAxcHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljaywubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tib3JkZXI6M3B4IGRhc2hlZH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHt0cmFuc2l0aW9uOm5vbmV9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nLXRvcDouNzVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7Ym90dG9tOjA7aGVpZ2h0OjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RyYW5zaXRpb246bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W2hWLnRyYW5zaXRpb25NZXNzYWdlc119LGNoYW5nZURldGVjdGlvbjowfSksQVYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltoZ119XX0se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltFVl19XX0se3R5cGU6d3p9LHt0eXBlOmFffSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sQVYucHJvcERlY29yYXRvcnM9e2FwcGVhcmFuY2U6W3t0eXBlOnh5fV0saGlkZVJlcXVpcmVkTWFya2VyOlt7dHlwZTp4eX1dLGhpbnRMYWJlbDpbe3R5cGU6eHl9XSxmbG9hdExhYmVsOlt7dHlwZTp4eX1dLHVuZGVybGluZVJlZjpbe3R5cGU6WmEsYXJnczpbInVuZGVybGluZSJdfV0sX2Nvbm5lY3Rpb25Db250YWluZXJSZWY6W3t0eXBlOlphLGFyZ3M6WyJjb25uZWN0aW9uQ29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfaW5wdXRDb250YWluZXJSZWY6W3t0eXBlOlphLGFyZ3M6WyJpbnB1dENvbnRhaW5lciJdfV0sX2xhYmVsOlt7dHlwZTpaYSxhcmdzOlsibGFiZWwiXX1dLF9jb250cm9sTm9uU3RhdGljOlt7dHlwZTpxYSxhcmdzOltiVl19XSxfY29udHJvbFN0YXRpYzpbe3R5cGU6cWEsYXJnczpbYlYse3N0YXRpYzohMH1dfV0sX2xhYmVsQ2hpbGROb25TdGF0aWM6W3t0eXBlOnFhLGFyZ3M6W3ZWXX1dLF9sYWJlbENoaWxkU3RhdGljOlt7dHlwZTpxYSxhcmdzOlt2Vix7c3RhdGljOiEwfV19XSxfcGxhY2Vob2xkZXJDaGlsZDpbe3R5cGU6cWEsYXJnczpbeFZdfV0sX2Vycm9yQ2hpbGRyZW46W3t0eXBlOllhLGFyZ3M6W2ZWLHtkZXNjZW5kYW50czohMH1dfV0sX2hpbnRDaGlsZHJlbjpbe3R5cGU6WWEsYXJnczpbQ1Yse2Rlc2NlbmRhbnRzOiEwfV19XSxfcHJlZml4Q2hpbGRyZW46W3t0eXBlOllhLGFyZ3M6W09WLHtkZXNjZW5kYW50czohMH1dfV0sX3N1ZmZpeENoaWxkcmVuOlt7dHlwZTpZYSxhcmdzOlt3Vix7ZGVzY2VuZGFudHM6ITB9XX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEFWLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1mb3JtLWZpZWxkIixleHBvcnRBczoibWF0Rm9ybUZpZWxkIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtd3JhcHBlciI+XG4gIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWZsZXgiICNjb25uZWN0aW9uQ29udGFpbmVyXG4gICAgICAgKGNsaWNrKT0iX2NvbnRyb2wub25Db250YWluZXJDbGljayAmJiBfY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKCRldmVudCkiPlxuXG4gICAgXHgzYyEtLSBPdXRsaW5lIHVzZWQgZm9yIG91dGxpbmUgYXBwZWFyYW5jZS4gLS1ceDNlXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0iYXBwZWFyYW5jZSA9PSBcJ291dGxpbmVcJyI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIG1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2siPlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Ij48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXByZWZpeCIgKm5nSWY9Il9wcmVmaXhDaGlsZHJlbi5sZW5ndGgiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWF0UHJlZml4XSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaW5maXgiICNpbnB1dENvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiPlxuICAgICAgICBceDNjIS0tIFdlIGFkZCBhcmlhLW93bnMgYXMgYSB3b3JrYXJvdW5kIGZvciBhbiBpc3N1ZSBpbiBKQVdTICYgTlZEQSB3aGVyZSB0aGUgbGFiZWwgaXNuXCd0XG4gICAgICAgICAgICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS4gLS1ceDNlXG4gICAgICAgIDxsYWJlbCBjbGFzcz0ibWF0LWZvcm0tZmllbGQtbGFiZWwiXG4gICAgICAgICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJ1cGRhdGVPdXRsaW5lR2FwKCkiXG4gICAgICAgICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09ImFwcGVhcmFuY2UgIT0gXCdvdXRsaW5lXCciXG4gICAgICAgICAgICAgICBbaWRdPSJfbGFiZWxJZCJcbiAgICAgICAgICAgICAgIFthdHRyLmZvcl09Il9jb250cm9sLmlkIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT0iX2NvbnRyb2wuaWQiXG4gICAgICAgICAgICAgICBbY2xhc3MubWF0LWVtcHR5XT0iX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWVtcHR5XT0iX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC1hY2NlbnRdPSJjb2xvciA9PSBcJ2FjY2VudFwnIlxuICAgICAgICAgICAgICAgW2NsYXNzLm1hdC13YXJuXT0iY29sb3IgPT0gXCd3YXJuXCciXG4gICAgICAgICAgICAgICAjbGFiZWxcbiAgICAgICAgICAgICAgICpuZ0lmPSJfaGFzRmxvYXRpbmdMYWJlbCgpIlxuICAgICAgICAgICAgICAgW25nU3dpdGNoXT0iX2hhc0xhYmVsKCkiPlxuXG4gICAgICAgICAgXHgzYyEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBpbiBmYXZvciBvZiBtYXQtbGFiZWwgZWxlbWVudCBhbiBwbGFjZWhvbGRlciBhdHRyLiAtLVx4M2VcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9ImZhbHNlIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LXBsYWNlaG9sZGVyIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8c3Bhbj57e19jb250cm9sLnBsYWNlaG9sZGVyfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1sYWJlbCIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PlxuXG4gICAgICAgICAgXHgzYyEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBgbWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkYCBjbGFzcyAtLVx4M2VcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9Im1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZCBtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSJcbiAgICAgICAgICAgICpuZ0lmPSIhaGlkZVJlcXVpcmVkTWFya2VyICYmIF9jb250cm9sLnJlcXVpcmVkICYmICFfY29udHJvbC5kaXNhYmxlZCI+JiMzMjsqPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtc3VmZml4IiAqbmdJZj0iX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9IlttYXRTdWZmaXhdIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIFx4M2MhLS0gVW5kZXJsaW5lIHVzZWQgZm9yIGxlZ2FjeSwgc3RhbmRhcmQsIGFuZCBib3ggYXBwZWFyYW5jZXMuIC0tXHgzZVxuICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiICN1bmRlcmxpbmVcbiAgICAgICAqbmdJZj0iYXBwZWFyYW5jZSAhPSBcJ291dGxpbmVcJyI+XG4gICAgPHNwYW4gY2xhc3M9Im1hdC1mb3JtLWZpZWxkLXJpcHBsZSJcbiAgICAgICAgICBbY2xhc3MubWF0LWFjY2VudF09ImNvbG9yID09IFwnYWNjZW50XCciXG4gICAgICAgICAgW2NsYXNzLm1hdC13YXJuXT0iY29sb3IgPT0gXCd3YXJuXCciPjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIiXG4gICAgICAgW25nU3dpdGNoXT0iX2dldERpc3BsYXllZE1lc3NhZ2VzKCkiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT0iXCdlcnJvclwnIiBbQHRyYW5zaXRpb25NZXNzYWdlc109Il9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1lcnJvciI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiAqbmdTd2l0Y2hDYXNlPSJcJ2hpbnRcJyJcbiAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT0iX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlIj5cbiAgICAgIFx4M2MhLS0gVE9ETyhtbWFsZXJiYSk6IHVzZSBhbiBhY3R1YWwgPG1hdC1oaW50PiBvbmNlIGFsbCBzZWxlY3RvcnMgYXJlIHN3aXRjaGVkIHRvIG1hdC0qIC0tXHgzZVxuICAgICAgPGRpdiAqbmdJZj0iaGludExhYmVsIiBbaWRdPSJfaGludExhYmVsSWQiIGNsYXNzPSJtYXQtaGludCI+e3toaW50TGFiZWx9fTwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtaGludDpub3QoW2FsaWduPVwnZW5kXCddKSI+PC9uZy1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXIiPjwvZGl2PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtaGludFthbGlnbj1cJ2VuZFwnXSI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuJyxhbmltYXRpb25zOltoVi50cmFuc2l0aW9uTWVzc2FnZXNdLGhvc3Q6e2NsYXNzOiJtYXQtZm9ybS1maWVsZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT0gInN0YW5kYXJkIicsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdIjonYXBwZWFyYW5jZSA9PSAiZmlsbCInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSI6J2FwcGVhcmFuY2UgPT0gIm91dGxpbmUiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5XSI6J2FwcGVhcmFuY2UgPT0gImxlZ2FjeSInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF0iOiJfY29udHJvbC5lcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdF0iOiJfY2FuTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdF0iOiJfc2hvdWxkTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbF0iOiJfaGFzRmxvYXRpbmdMYWJlbCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdIjoiX2hpZGVDb250cm9sUGxhY2Vob2xkZXIoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF0iOiJfY29udHJvbC5kaXNhYmxlZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSI6Il9jb250cm9sLmF1dG9maWxsZWQiLCJbY2xhc3MubWF0LWZvY3VzZWRdIjoiX2NvbnRyb2wuZm9jdXNlZCIsIltjbGFzcy5uZy11bnRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidfc2hvdWxkRm9yd2FyZCgicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidfc2hvdWxkRm9yd2FyZCgiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidfc2hvdWxkRm9yd2FyZCgidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J19zaG91bGRGb3J3YXJkKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidfc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6IiFfYW5pbWF0aW9uc0VuYWJsZWQifSxpbnB1dHM6WyJjb2xvciJdLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6UlYsdXNlRXhpc3Rpbmc6QVZ9XSxzdHlsZXM6WyIubWF0LWZvcm0tZmllbGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGR7dGV4dC1hbGlnbjpyaWdodH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1pbmZpeHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6YXV0bzttaW4td2lkdGg6MDt3aWR0aDoxODBweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCl9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtmb250OmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxjb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSx3aWR0aCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDtsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtZW1wdHkubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbcGxhY2Vob2xkZXJdOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1sYWJlbDpub3QoLm1hdC1mb3JtLWZpZWxkLWVtcHR5KXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlM2QoMSwgMS4wMDAxLCAxKX0ubWF0LWZvcm0tZmllbGQtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46NTAlO3RyYW5zZm9ybTpzY2FsZVgoMC41KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iLCcubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpkYXNoZWQgM3B4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MXB4O3dpZHRoOjEwMCV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX1cbicsJy5tYXQtaW5wdXQtZWxlbWVudHtmb250OmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjpjdXJyZW50Q29sb3I7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDttYXJnaW46MDt3aWR0aDoxMDAlO21heC13aWR0aDoxMDAlO3ZlcnRpY2FsLWFsaWduOmJvdHRvbTt0ZXh0LWFsaWduOmluaGVyaXQ7Ym94LXNpemluZzpjb250ZW50LWJveH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1jbGVhciwubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1yZXZlYWx7ZGlzcGxheTpub25lfS5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNvbnRhY3RzLWF1dG8tZmlsbC1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhcHMtbG9jay1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNyZWRlbnRpYWxzLWF1dG8tZmlsbC1idXR0b257dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla10sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV17bGluZS1oZWlnaHQ6MX0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9d2Vla106OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVdOjphZnRlcntjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2xlYXItYnV0dG9ue2ZvbnQtc2l6ZTouNzVlbX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtyZXNpemU6dmVydGljYWw7b3ZlcmZsb3c6YXV0b310ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudC5jZGstdGV4dGFyZWEtYXV0b3NpemV7cmVzaXplOm5vbmV9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZzoycHggMDttYXJnaW46LTJweCAwfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudHstbW96LWFwcGVhcmFuY2U6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmctdG9wOjFlbTt0b3A6LTFlbTttYXJnaW4tYm90dG9tOi0xZW19c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtZXhwYW5ke2Rpc3BsYXk6bm9uZX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50Om5vdCg6ZGlzYWJsZWQpe2N1cnNvcjpwb2ludGVyfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpub25lfS5tYXQtZm9jdXNlZCAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIHNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXZhbHVle2NvbG9yOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb250ZW50OiIiO3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDowO21hcmdpbi10b3A6LTIuNXB4O3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7cmlnaHQ6YXV0bztsZWZ0OjB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MTVweH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnttYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTBweCl9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTEwcHh9XG4nLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMDBweCk7LW1zLXRyYW5zZm9ybTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257d2lkdGg6MWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntmb250OmluaGVyaXQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257Zm9udC1zaXplOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RvcDowO2hlaWdodDoycHg7b3ZlcmZsb3c6aGlkZGVufS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtaW52YWxpZDpub3QoLm1hdC1mb2N1c2VkKSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDoxcHh9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC13cmFwcGVye21hcmdpbjouMjVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZzowIC43NWVtIDAgLjc1ZW07bWFyZ2luLXRvcDotMC4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7dG9wOi4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMjVlbTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7bWluLXdpZHRoOjVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHg7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7ZmxleC1ncm93OjF9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXJhZGl1czouMDAwMDAxcHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljaywubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tib3JkZXI6M3B4IGRhc2hlZH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHt0cmFuc2l0aW9uOm5vbmV9XG4iLCIubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nLXRvcDouNzVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7Ym90dG9tOjA7aGVpZ2h0OjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RyYW5zaXRpb246bm9uZX1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbaGddfV19LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbRVZdfV19LHt0eXBlOnd6fSx7dHlwZTphX30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse2Zsb2F0TGFiZWw6W3t0eXBlOnh5fV0sYXBwZWFyYW5jZTpbe3R5cGU6eHl9XSxoaWRlUmVxdWlyZWRNYXJrZXI6W3t0eXBlOnh5fV0saGludExhYmVsOlt7dHlwZTp4eX1dLHVuZGVybGluZVJlZjpbe3R5cGU6WmEsYXJnczpbInVuZGVybGluZSJdfV0sX2Nvbm5lY3Rpb25Db250YWluZXJSZWY6W3t0eXBlOlphLGFyZ3M6WyJjb25uZWN0aW9uQ29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfaW5wdXRDb250YWluZXJSZWY6W3t0eXBlOlphLGFyZ3M6WyJpbnB1dENvbnRhaW5lciJdfV0sX2xhYmVsOlt7dHlwZTpaYSxhcmdzOlsibGFiZWwiXX1dLF9jb250cm9sTm9uU3RhdGljOlt7dHlwZTpxYSxhcmdzOltiVl19XSxfY29udHJvbFN0YXRpYzpbe3R5cGU6cWEsYXJnczpbYlYse3N0YXRpYzohMH1dfV0sX2xhYmVsQ2hpbGROb25TdGF0aWM6W3t0eXBlOnFhLGFyZ3M6W3ZWXX1dLF9sYWJlbENoaWxkU3RhdGljOlt7dHlwZTpxYSxhcmdzOlt2Vix7c3RhdGljOiEwfV19XSxfcGxhY2Vob2xkZXJDaGlsZDpbe3R5cGU6cWEsYXJnczpbeFZdfV0sX2Vycm9yQ2hpbGRyZW46W3t0eXBlOllhLGFyZ3M6W2ZWLHtkZXNjZW5kYW50czohMH1dfV0sX2hpbnRDaGlsZHJlbjpbe3R5cGU6WWEsYXJnczpbQ1Yse2Rlc2NlbmRhbnRzOiEwfV19XSxfcHJlZml4Q2hpbGRyZW46W3t0eXBlOllhLGFyZ3M6W09WLHtkZXNjZW5kYW50czohMH1dfV0sX3N1ZmZpeENoaWxkcmVuOlt7dHlwZTpZYSxhcmdzOlt3Vix7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBUVnt9VFYuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRWKX0sVFYuybVtb2Q9YW8oe3R5cGU6VFZ9KSxUVi7JtWluaj12bih7aW1wb3J0czpbW1dNLFhJLFV6XSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFRWLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltnVixBVixNVix2Vix4VixQVixrVl0saW1wb3J0czpbV00sWEksVXpdLGV4cG9ydHM6W1hJLGdWLEFWLE1WLHZWLHhWLFBWLGtWXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFRWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bZ1YsQVYsTVYsdlYseFYsUFYsa1ZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dNLFhJLFV6XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltYSSxnVixBVixNVix2Vix4VixQVixrVl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTIuMi4xCiAgICAgKiAoYykgMjAxMC0yMDIxIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNsYXNzIE5We2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5vbkNoYW5nZT10PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e319c2V0UHJvcGVydHkodCxlKXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdCxlKX1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5zZXRQcm9wZXJ0eSgiZGlzYWJsZWQiLHQpfX1OVi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TlYpKFNtKENnKSxTbShoZykpfSxOVi7JtWRpcj1sbyh7dHlwZTpOVn0pLE5WLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q2d9LHt0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOVixbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2d9LHt0eXBlOmhnfV19KSxudWxsKTtjbGFzcyB6ViBleHRlbmRzIE5We316Vi7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoelYpKSkobnx8elYpfX0pKCkselYuybVkaXI9bG8oe3R5cGU6elYsZmVhdHVyZXM6W3hwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoelYsW3t0eXBlOkN5fV0sbnVsbCxudWxsKTtjb25zdCBJVj1uZXcgR2EoIk5nVmFsdWVBY2Nlc3NvciIpLEhWPXtwcm92aWRlOklWLHVzZUV4aXN0aW5nOnFlKCgoKT0+RlYpKSxtdWx0aTohMH07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEZWIGV4dGVuZHMgelZ7d3JpdGVWYWx1ZSh0KXt0aGlzLnNldFByb3BlcnR5KCJjaGVja2VkIix0KX19RlYuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKEZWKSkpKG58fEZWKX19KSgpLEZWLsm1ZGlyPWxvKHt0eXBlOkZWLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkNoYW5nZShlLnRhcmdldC5jaGVja2VkKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W3BnKFtIVl0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRlYsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1jaGVja2JveF1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQuY2hlY2tlZCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbSFZdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTFY9e3Byb3ZpZGU6SVYsdXNlRXhpc3Rpbmc6cWUoKCgpPT5WVikpLG11bHRpOiEwfSxCVj1uZXcgR2EoIkNvbXBvc2l0aW9uRXZlbnRNb2RlIik7Y2xhc3MgVlYgZXh0ZW5kcyBOVntjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9bix0aGlzLl9jb21wb3Npbmc9ITEsbnVsbD09dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYodGhpcy5fY29tcG9zaXRpb25Nb2RlPSEoZnVuY3Rpb24gbygpe2NvbnN0IHQ9cV8oKT9xXygpLmdldFVzZXJBZ2VudCgpOiIiO3JldHVybi9hbmRyb2lkIChcZCspLy50ZXN0KHQudG9Mb3dlckNhc2UoKSl9KSgpKX13cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixudWxsPT10PyIiOnQpfV9oYW5kbGVJbnB1dCh0KXsoIXRoaXMuX2NvbXBvc2l0aW9uTW9kZXx8dGhpcy5fY29tcG9zaXRpb25Nb2RlJiYhdGhpcy5fY29tcG9zaW5nKSYmdGhpcy5vbkNoYW5nZSh0KX1fY29tcG9zaXRpb25TdGFydCgpe3RoaXMuX2NvbXBvc2luZz0hMH1fY29tcG9zaXRpb25FbmQodCl7dGhpcy5fY29tcG9zaW5nPSExLHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmdGhpcy5vbkNoYW5nZSh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBqVih0KXtyZXR1cm4gbnVsbD09dHx8MD09PXQubGVuZ3RofWZ1bmN0aW9uIFVWKHQpe3JldHVybiBudWxsIT10JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofVZWLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWVikoU20oQ2cpLFNtKGhnKSxTbShCViw4KSl9LFZWLsm1ZGlyPWxvKHt0eXBlOlZWLHNlbGVjdG9yczpbWyJpbnB1dCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJuZ01vZGVsIiwiIl0sWyIiLCJuZ0RlZmF1bHRDb250cm9sIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVJbnB1dChlLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSkoImNvbXBvc2l0aW9uc3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2NvbXBvc2l0aW9uU3RhcnQoKX0pKSgiY29tcG9zaXRpb25lbmQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9jb21wb3NpdGlvbkVuZChlLnRhcmdldC52YWx1ZSl9KSl9LGZlYXR1cmVzOltwZyhbTFZdKSx4cF19KSxWVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkNnfSx7dHlwZTpoZ30se3R5cGU6Qm9vbGVhbixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbQlZdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFZWLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRyb2xOYW1lXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFbZm9ybUNvbnRyb2xdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVhW25nTW9kZWxdLFtuZ0RlZmF1bHRDb250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiIkYW55KHRoaXMpLl9oYW5kbGVJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIiwiKGNvbXBvc2l0aW9uc3RhcnQpIjoiJGFueSh0aGlzKS5fY29tcG9zaXRpb25TdGFydCgpIiwiKGNvbXBvc2l0aW9uZW5kKSI6IiRhbnkodGhpcykuX2NvbXBvc2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltMVl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpDZ30se3R5cGU6aGd9LHt0eXBlOkJvb2xlYW4sZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W0JWXX1dfV19KSxudWxsKTtjb25zdCBHVj1uZXcgR2EoIk5nVmFsaWRhdG9ycyIpLFdWPW5ldyBHYSgiTmdBc3luY1ZhbGlkYXRvcnMiKSxZVj0vXig/PS57MSwyNTR9JCkoPz0uezEsNjR9QClbYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XC5bYS16QS1aMC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvO2NsYXNzIHFWe3N0YXRpYyBtaW4odCl7cmV0dXJuIFpWKHQpfXN0YXRpYyBtYXgodCl7cmV0dXJuIFhWKHQpfXN0YXRpYyByZXF1aXJlZCh0KXtyZXR1cm4gS1YodCl9c3RhdGljIHJlcXVpcmVkVHJ1ZSh0KXtyZXR1cm4gSlYodCl9c3RhdGljIGVtYWlsKHQpe3JldHVybiBRVih0KX1zdGF0aWMgbWluTGVuZ3RoKHQpe3JldHVybiAkVih0KX1zdGF0aWMgbWF4TGVuZ3RoKHQpe3JldHVybiB0aih0KX1zdGF0aWMgcGF0dGVybih0KXtyZXR1cm4gZWoodCl9c3RhdGljIG51bGxWYWxpZGF0b3IodCl7cmV0dXJuIG51bGx9c3RhdGljIGNvbXBvc2UodCl7cmV0dXJuIGxqKHQpfXN0YXRpYyBjb21wb3NlQXN5bmModCl7cmV0dXJuIGRqKHQpfX1mdW5jdGlvbiBaVih0KXtyZXR1cm4gZT0+e2lmKGpWKGUudmFsdWUpfHxqVih0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPHQ/e21pbjp7bWluOnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX1mdW5jdGlvbiBYVih0KXtyZXR1cm4gZT0+e2lmKGpWKGUudmFsdWUpfHxqVih0KSlyZXR1cm4gbnVsbDtjb25zdCBuPXBhcnNlRmxvYXQoZS52YWx1ZSk7cmV0dXJuIWlzTmFOKG4pJiZuPnQ/e21heDp7bWF4OnQsYWN0dWFsOmUudmFsdWV9fTpudWxsfX1mdW5jdGlvbiBLVih0KXtyZXR1cm4galYodC52YWx1ZSk/e3JlcXVpcmVkOiEwfTpudWxsfWZ1bmN0aW9uIEpWKHQpe3JldHVybiEwPT09dC52YWx1ZT9udWxsOntyZXF1aXJlZDohMH19ZnVuY3Rpb24gUVYodCl7cmV0dXJuIGpWKHQudmFsdWUpfHxZVi50ZXN0KHQudmFsdWUpP251bGw6e2VtYWlsOiEwfX1mdW5jdGlvbiAkVih0KXtyZXR1cm4gZT0+alYoZS52YWx1ZSl8fCFVVihlLnZhbHVlKT9udWxsOmUudmFsdWUubGVuZ3RoPHQ/e21pbmxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6ZS52YWx1ZS5sZW5ndGh9fTpudWxsfWZ1bmN0aW9uIHRqKHQpe3JldHVybiBlPT5VVihlLnZhbHVlKSYmZS52YWx1ZS5sZW5ndGg+dD97bWF4bGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDplLnZhbHVlLmxlbmd0aH19Om51bGx9ZnVuY3Rpb24gZWoodCl7aWYoIXQpcmV0dXJuIG5qO2xldCBlLG47cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhuPSIiLCJeIiE9PXQuY2hhckF0KDApJiYobis9Il4iKSxuKz10LCIkIiE9PXQuY2hhckF0KHQubGVuZ3RoLTEpJiYobis9IiQiKSxlPW5ldyBSZWdFeHAobikpOihuPXQudG9TdHJpbmcoKSxlPXQpLHQ9PntpZihqVih0LnZhbHVlKSlyZXR1cm4gbnVsbDtjb25zdCBvPXQudmFsdWU7cmV0dXJuIGUudGVzdChvKT9udWxsOntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46bixhY3R1YWxWYWx1ZTpvfX19fWZ1bmN0aW9uIG5qKHQpe3JldHVybiBudWxsfWZ1bmN0aW9uIG9qKHQpe3JldHVybiBudWxsIT10fWZ1bmN0aW9uIGlqKHQpe2NvbnN0IGU9Rm0odCk/Q3QodCk6dDtpZighQm0oZSkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1cm4gUHJvbWlzZSBvciBPYnNlcnZhYmxlLiIpO3JldHVybiBlfWZ1bmN0aW9uIGFqKHQpe2xldCBlPXt9O3JldHVybiB0LmZvckVhY2goKHQ9PntlPW51bGwhPXQ/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpOmV9KSksMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gcmoodCxlKXtyZXR1cm4gZS5tYXAoKGU9PmUodCkpKX1mdW5jdGlvbiBzaih0KXtyZXR1cm4gdC5tYXAoKHQ9PihmdW5jdGlvbiBlKHQpe3JldHVybiF0LnZhbGlkYXRlfSkodCk/dDplPT50LnZhbGlkYXRlKGUpKSl9ZnVuY3Rpb24gbGoodCl7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgZT10LmZpbHRlcihvaik7cmV0dXJuIDA9PWUubGVuZ3RoP251bGw6ZnVuY3Rpb24odCl7cmV0dXJuIGFqKHJqKHQsZSkpfX1mdW5jdGlvbiBjaih0KXtyZXR1cm4gbnVsbCE9dD9saihzaih0KSk6bnVsbH1mdW5jdGlvbiBkaih0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBlPXQuZmlsdGVyKG9qKTtyZXR1cm4gMD09ZS5sZW5ndGg/bnVsbDpmdW5jdGlvbih0KXtyZXR1cm4gJHQocmoodCxlKS5tYXAoaWopKS5waXBlKEl0KGFqKSl9fWZ1bmN0aW9uIHBqKHQpe3JldHVybiBudWxsIT10P2RqKHNqKHQpKTpudWxsfWZ1bmN0aW9uIG1qKHQsZSl7cmV0dXJuIG51bGw9PT10P1tlXTpBcnJheS5pc0FycmF5KHQpP1suLi50LGVdOlt0LGVdfWZ1bmN0aW9uIHVqKHQpe3JldHVybiB0Ll9yYXdWYWxpZGF0b3JzfWZ1bmN0aW9uIGZqKHQpe3JldHVybiB0Ll9yYXdBc3luY1ZhbGlkYXRvcnN9ZnVuY3Rpb24gZ2oodCl7cmV0dXJuIHQ/QXJyYXkuaXNBcnJheSh0KT90Olt0XTpbXX1mdW5jdGlvbiBoaih0LGUpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QuaW5jbHVkZXMoZSk6dD09PWV9ZnVuY3Rpb24gYmoodCxlKXtjb25zdCBuPWdqKGUpO3JldHVybiBnaih0KS5mb3JFYWNoKCh0PT57aGoobix0KXx8bi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24geWoodCxlKXtyZXR1cm4gZ2ooZSkuZmlsdGVyKChlPT4haGoodCxlKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBfantjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPVtdLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlzYWJsZWQ6bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGlydHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVsbH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X3NldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10fHxbXSx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPWNqKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfV9zZXRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXR8fFtdLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1waih0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9yZWdpc3Rlck9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MucHVzaCh0KX1faW52b2tlT25EZXN0cm95Q2FsbGJhY2tzKCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1yZXNldCh0KXt0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5yZXNldCh0KX1oYXNFcnJvcih0LGUpe3JldHVybiEhdGhpcy5jb250cm9sJiZ0aGlzLmNvbnRyb2wuaGFzRXJyb3IodCxlKX1nZXRFcnJvcih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmdldEVycm9yKHQsZSk6bnVsbH19X2ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9qKX0sX2ouybVkaXI9bG8oe3R5cGU6X2p9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIENqIGV4dGVuZHMgX2p7Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gbnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfX1Dai7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoQ2opKSkobnx8Q2opfX0pKCksQ2ouybVkaXI9bG8oe3R5cGU6Q2osZmVhdHVyZXM6W3hwXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgTWogZXh0ZW5kcyBfantjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcGFyZW50PW51bGwsdGhpcy5uYW1lPW51bGwsdGhpcy52YWx1ZUFjY2Vzc29yPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB2antjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jZD10fWlzKHQpe3ZhciBlLG4sbztyZXR1cm4ic3VibWl0dGVkIj09PXQ/ISEobnVsbD09PShlPXRoaXMuX2NkKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdWJtaXR0ZWQpOiEhKG51bGw9PT0obz1udWxsPT09KG49dGhpcy5fY2QpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvbnRyb2wpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvW3RdKX19Y2xhc3MgeGogZXh0ZW5kcyB2antjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX19eGouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHhqKShTbShNaiwyKSl9LHhqLsm1ZGlyPWxvKHt0eXBlOnhqLHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm5nTW9kZWwiLCIiXSxbIiIsImZvcm1Db250cm9sIiwiIl1dLGhvc3RWYXJzOjE0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgibmctdW50b3VjaGVkIixuLmlzKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLG4uaXMoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixuLmlzKCJwcmlzdGluZSIpKSgibmctZGlydHkiLG4uaXMoImRpcnR5IikpKCJuZy12YWxpZCIsbi5pcygidmFsaWQiKSkoIm5nLWludmFsaWQiLG4uaXMoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLG4uaXMoInBlbmRpbmciKSl9LGZlYXR1cmVzOlt4cF19KSx4ai5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk1qLGRlY29yYXRvcnM6W3t0eXBlOkRyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHhqLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdLFtuZ01vZGVsXSxbZm9ybUNvbnRyb2xdIixob3N0OnsiW2NsYXNzLm5nLXVudG91Y2hlZF0iOidpcygidW50b3VjaGVkIiknLCJbY2xhc3MubmctdG91Y2hlZF0iOidpcygidG91Y2hlZCIpJywiW2NsYXNzLm5nLXByaXN0aW5lXSI6J2lzKCJwcmlzdGluZSIpJywiW2NsYXNzLm5nLWRpcnR5XSI6J2lzKCJkaXJ0eSIpJywiW2NsYXNzLm5nLXZhbGlkXSI6J2lzKCJ2YWxpZCIpJywiW2NsYXNzLm5nLWludmFsaWRdIjonaXMoImludmFsaWQiKScsIltjbGFzcy5uZy1wZW5kaW5nXSI6J2lzKCJwZW5kaW5nIiknfX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk1qLGRlY29yYXRvcnM6W3t0eXBlOkRyfV19XX0pLG51bGwpO2NsYXNzIE9qIGV4dGVuZHMgdmp7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fU9qLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxPaikoU20oQ2osMTApKX0sT2ouybVkaXI9bG8oe3R5cGU6T2osc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cE5hbWUiLCIiXSxbIiIsImZvcm1BcnJheU5hbWUiLCIiXSxbIiIsIm5nTW9kZWxHcm91cCIsIiJdLFsiIiwiZm9ybUdyb3VwIiwiIl0sWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RWYXJzOjE2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgibmctdW50b3VjaGVkIixuLmlzKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLG4uaXMoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixuLmlzKCJwcmlzdGluZSIpKSgibmctZGlydHkiLG4uaXMoImRpcnR5IikpKCJuZy12YWxpZCIsbi5pcygidmFsaWQiKSkoIm5nLWludmFsaWQiLG4uaXMoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLG4uaXMoInBlbmRpbmciKSkoIm5nLXN1Ym1pdHRlZCIsbi5pcygic3VibWl0dGVkIikpfSxmZWF0dXJlczpbeHBdfSksT2ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpDaixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoT2osW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdLFtmb3JtQXJyYXlOYW1lXSxbbmdNb2RlbEdyb3VwXSxbZm9ybUdyb3VwXSxmb3JtOm5vdChbbmdOb0Zvcm1dKSxbbmdGb3JtXSIsaG9zdDp7IltjbGFzcy5uZy11bnRvdWNoZWRdIjonaXMoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonaXMoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidpcygicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidpcygiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidpcygidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J2lzKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidpcygicGVuZGluZyIpJywiW2NsYXNzLm5nLXN1Ym1pdHRlZF0iOidpcygic3VibWl0dGVkIiknfX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNqLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFBqPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pOycsd2o9J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIHBlcnNvbjogbmV3IEZvcm1Hcm91cCh7IGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCkgfSlcbiAgICB9KTsnLGtqPSdcbiAgICA8Zm9ybT5cbiAgICAgICA8ZGl2IG5nTW9kZWxHcm91cD0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5uYW1lIiBuYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT4nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBTantzdGF0aWMgY29udHJvbFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7UGp9YCl9c3RhdGljIG5nTW9kZWxHcm91cEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdpdGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KVxuXG4gICAgICAgICR7d2p9XG5cbiAgICAgICAgT3B0aW9uIDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgJHtran1gKX1zdGF0aWMgbWlzc2luZ0Zvcm1FeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2UgcGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgJHtQan1gKX1zdGF0aWMgZ3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAke3dqfWApfXN0YXRpYyBhcnJheVBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcignZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91XCdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPSJjaXRpZXMiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNpdHkgb2YgY2l0eUFycmF5LmNvbnRyb2xzOyBpbmRleCBhcyBpIj5cbiAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09ImkiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMuY2l0eUFycmF5ID0gbmV3IEZvcm1BcnJheShbbmV3IEZvcm1Db250cm9sKFwnU0ZcJyldKTtcbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGNpdGllczogdGhpcy5jaXR5QXJyYXlcbiAgICB9KTsnKX1zdGF0aWMgZGlzYWJsZWRBdHRyV2FybmluZygpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlvdSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVycm9ycy5cblxuICAgICAgRXhhbXBsZTpcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZmlyc3Q6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6ICdOYW5jeScsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICB9KTtcbiAgICAiKX1zdGF0aWMgbmdNb2RlbFdhcm5pbmcodCl7Y29uc29sZS53YXJuKGBcbiAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBuZ01vZGVsIG9uIHRoZSBzYW1lIGZvcm0gZmllbGQgYXMgJHt0fS5cbiAgICBTdXBwb3J0IGZvciB1c2luZyB0aGUgbmdNb2RlbCBpbnB1dCBwcm9wZXJ0eSBhbmQgbmdNb2RlbENoYW5nZSBldmVudCB3aXRoXG4gICAgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gQW5ndWxhciB2NiBhbmQgd2lsbCBiZSByZW1vdmVkXG4gICAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLlxuXG4gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgc2VlIG91ciBBUEkgZG9jcyBoZXJlOlxuICAgIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvZm9ybXMvJHsiZm9ybUNvbnRyb2wiPT09dD8iRm9ybUNvbnRyb2xEaXJlY3RpdmUiOiJGb3JtQ29udHJvbE5hbWUifSN1c2Utd2l0aC1uZ21vZGVsXG4gICAgYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBEaih0LGUpe3JldHVyblsuLi5lLnBhdGgsdF19ZnVuY3Rpb24gRWoodCxlKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJih0fHxIaihlLCJDYW5ub3QgZmluZCBjb250cm9sIHdpdGgiKSxlLnZhbHVlQWNjZXNzb3J8fEhqKGUsIk5vIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpKSxUaih0LGUpLGUudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQudmFsdWUpLChmdW5jdGlvbiBuKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoKG49Pnt0Ll9wZW5kaW5nVmFsdWU9bix0Ll9wZW5kaW5nQ2hhbmdlPSEwLHQuX3BlbmRpbmdEaXJ0eT0hMCwiY2hhbmdlIj09PXQudXBkYXRlT24mJnpqKHQsZSl9KSl9KSh0LGUpLChmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0odCxuKT0+e2UudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKHQpLG4mJmUudmlld1RvTW9kZWxVcGRhdGUodCl9O3QucmVnaXN0ZXJPbkNoYW5nZShuKSxlLl9yZWdpc3Rlck9uRGVzdHJveSgoKCk9Pnt0Ll91bnJlZ2lzdGVyT25DaGFuZ2Uobil9KSl9KSh0LGUpLChmdW5jdGlvbiBpKHQsZSl7ZS52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgoKT0+e3QuX3BlbmRpbmdUb3VjaGVkPSEwLCJibHVyIj09PXQudXBkYXRlT24mJnQuX3BlbmRpbmdDaGFuZ2UmJnpqKHQsZSksInN1Ym1pdCIhPT10LnVwZGF0ZU9uJiZ0Lm1hcmtBc1RvdWNoZWQoKX0pKX0pKHQsZSksKGZ1bmN0aW9uIGEodCxlKXtpZihlLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSl7Y29uc3Qgbj10PT57ZS52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUodCl9O3QucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pLGUuX3JlZ2lzdGVyT25EZXN0cm95KCgoKT0+e3QuX3VucmVnaXN0ZXJPbkRpc2FibGVkQ2hhbmdlKG4pfSkpfX0pKHQsZSl9ZnVuY3Rpb24gUmoodCxlLG49ITApe2NvbnN0IG89KCk9PntuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiB0KGUpe0hqKGUsIlRoZXJlIGlzIG5vIEZvcm1Db250cm9sIGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGgiKX0pKGUpfTtlLnZhbHVlQWNjZXNzb3ImJihlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZShvKSxlLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQobykpLE5qKHQsZSksdCYmKGUuX2ludm9rZU9uRGVzdHJveUNhbGxiYWNrcygpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSl9ZnVuY3Rpb24gQWoodCxlKXt0LmZvckVhY2goKHQ9Pnt0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJnQucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShlKX0pKX1mdW5jdGlvbiBUaih0LGUpe2NvbnN0IG49dWoodCk7bnVsbCE9PWUudmFsaWRhdG9yP3Quc2V0VmFsaWRhdG9ycyhtaihuLGUudmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4mJnQuc2V0VmFsaWRhdG9ycyhbbl0pO2NvbnN0IG89ZmoodCk7bnVsbCE9PWUuYXN5bmNWYWxpZGF0b3I/dC5zZXRBc3luY1ZhbGlkYXRvcnMobWoobyxlLmFzeW5jVmFsaWRhdG9yKSk6ImZ1bmN0aW9uIj09dHlwZW9mIG8mJnQuc2V0QXN5bmNWYWxpZGF0b3JzKFtvXSk7Y29uc3QgaT0oKT0+dC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7QWooZS5fcmF3VmFsaWRhdG9ycyxpKSxBaihlLl9yYXdBc3luY1ZhbGlkYXRvcnMsaSl9ZnVuY3Rpb24gTmoodCxlKXtsZXQgbj0hMTtpZihudWxsIT09dCl7aWYobnVsbCE9PWUudmFsaWRhdG9yKXtjb25zdCBvPXVqKHQpO2lmKEFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoPjApe2NvbnN0IGk9by5maWx0ZXIoKHQ9PnQhPT1lLnZhbGlkYXRvcikpO2kubGVuZ3RoIT09by5sZW5ndGgmJihuPSEwLHQuc2V0VmFsaWRhdG9ycyhpKSl9fWlmKG51bGwhPT1lLmFzeW5jVmFsaWRhdG9yKXtjb25zdCBvPWZqKHQpO2lmKEFycmF5LmlzQXJyYXkobykmJm8ubGVuZ3RoPjApe2NvbnN0IGk9by5maWx0ZXIoKHQ9PnQhPT1lLmFzeW5jVmFsaWRhdG9yKSk7aS5sZW5ndGghPT1vLmxlbmd0aCYmKG49ITAsdC5zZXRBc3luY1ZhbGlkYXRvcnMoaSkpfX19Y29uc3Qgbz0oKT0+e307cmV0dXJuIEFqKGUuX3Jhd1ZhbGlkYXRvcnMsbyksQWooZS5fcmF3QXN5bmNWYWxpZGF0b3JzLG8pLG59ZnVuY3Rpb24gemoodCxlKXt0Ll9wZW5kaW5nRGlydHkmJnQubWFya0FzRGlydHkoKSx0LnNldFZhbHVlKHQuX3BlbmRpbmdWYWx1ZSx7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksZS52aWV3VG9Nb2RlbFVwZGF0ZSh0Ll9wZW5kaW5nVmFsdWUpLHQuX3BlbmRpbmdDaGFuZ2U9ITF9ZnVuY3Rpb24gSWoodCxlKXtudWxsIT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8SGooZSwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksVGoodCxlKX1mdW5jdGlvbiBIaih0LGUpe2xldCBuO3Rocm93IG49dC5wYXRoLmxlbmd0aD4xP2BwYXRoOiAnJHt0LnBhdGguam9pbigiIC0+ICIpfSdgOnQucGF0aFswXT9gbmFtZTogJyR7dC5wYXRofSdgOiJ1bnNwZWNpZmllZCBuYW1lIGF0dHJpYnV0ZSIsbmV3IEVycm9yKGAke2V9ICR7bn1gKX1mdW5jdGlvbiBGaih0LGUpe2lmKCF0Lmhhc093blByb3BlcnR5KCJtb2RlbCIpKXJldHVybiExO2NvbnN0IG49dC5tb2RlbDtyZXR1cm4hIW4uaXNGaXJzdENoYW5nZSgpfHwhT2JqZWN0LmlzKGUsbi5jdXJyZW50VmFsdWUpfWZ1bmN0aW9uIExqKHQsZSl7dC5fc3luY1BlbmRpbmdDb250cm9scygpLGUuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5jb250cm9sOyJzdWJtaXQiPT09ZS51cGRhdGVPbiYmZS5fcGVuZGluZ0NoYW5nZSYmKHQudmlld1RvTW9kZWxVcGRhdGUoZS5fcGVuZGluZ1ZhbHVlKSxlLl9wZW5kaW5nQ2hhbmdlPSExKX0pKX1mdW5jdGlvbiBCaih0LGUpe2lmKCFlKXJldHVybiBudWxsO2xldCBuLG8saTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fEhqKHQsIlZhbHVlIGFjY2Vzc29yIHdhcyBub3QgcHJvdmlkZWQgYXMgYW4gYXJyYXkgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksZS5mb3JFYWNoKChlPT57ZS5jb25zdHJ1Y3Rvcj09PVZWP249ZTooZnVuY3Rpb24gYSh0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQuY29uc3RydWN0b3IpPT09elZ9KShlKT8obyYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZIaih0LCJNb3JlIHRoYW4gb25lIGJ1aWx0LWluIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxvPWUpOihpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhqKHQsIk1vcmUgdGhhbiBvbmUgY3VzdG9tIHZhbHVlIGFjY2Vzc29yIG1hdGNoZXMgZm9ybSBjb250cm9sIHdpdGgiKSxpPWUpfSkpLGl8fG98fG58fCgoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJkhqKHQsIk5vIHZhbGlkIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLG51bGwpfWZ1bmN0aW9uIFZqKHQsZSl7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX1mdW5jdGlvbiBqaih0LGUsbixvKXsibmV2ZXIiIT09byYmKChudWxsIT09byYmIm9uY2UiIT09b3x8ZS5fbmdNb2RlbFdhcm5pbmdTZW50T25jZSkmJigiYWx3YXlzIiE9PW98fG4uX25nTW9kZWxXYXJuaW5nU2VudCl8fChTai5uZ01vZGVsV2FybmluZyh0KSxlLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSEwLG4uX25nTW9kZWxXYXJuaW5nU2VudD0hMCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBVaj0iVkFMSUQiLEdqPSJJTlZBTElEIixXaj0iUEVORElORyIsWWo9IkRJU0FCTEVEIjtmdW5jdGlvbiBxaih0KXtyZXR1cm4oSmoodCk/dC52YWxpZGF0b3JzOnQpfHxudWxsfWZ1bmN0aW9uIFpqKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP2NqKHQpOnR8fG51bGx9ZnVuY3Rpb24gWGoodCxlKXtyZXR1cm4oSmooZSk/ZS5hc3luY1ZhbGlkYXRvcnM6dCl8fG51bGx9ZnVuY3Rpb24gS2oodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/cGoodCk6dHx8bnVsbH1mdW5jdGlvbiBKaih0KXtyZXR1cm4gbnVsbCE9dCYmIUFycmF5LmlzQXJyYXkodCkmJiJvYmplY3QiPT10eXBlb2YgdH1jbGFzcyBRantjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX3BhcmVudD1udWxsLHRoaXMucHJpc3RpbmU9ITAsdGhpcy50b3VjaGVkPSExLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz1lLHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49WmoodGhpcy5fcmF3VmFsaWRhdG9ycyksdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZuPUtqKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IodCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPXR9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNWYWxpZGF0b3IodCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj10fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PVVqfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09R2p9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PVdqfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PVlqfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09WWp9Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVudG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49WmoodCl9c2V0QXN5bmNWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1Laih0KX1hZGRWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyhiaih0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoYmoodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1yZW1vdmVWYWxpZGF0b3JzKHQpe3RoaXMuc2V0VmFsaWRhdG9ycyh5aih0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1yZW1vdmVBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoeWoodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IodCl7cmV0dXJuIGhqKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsdCl9aGFzQXN5bmNWYWxpZGF0b3IodCl7cmV0dXJuIGhqKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyx0KX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKHQpfW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKCh0PT50Lm1hcmtBbGxBc1RvdWNoZWQoKSkpfW1hcmtBc1VudG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9ITEsdGhpcy5fcGVuZGluZ1RvdWNoZWQ9ITEsdGhpcy5fZm9yRWFjaENoaWxkKCh0PT57dC5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfW1hcmtBc0RpcnR5KHQ9e30pe3RoaXMucHJpc3RpbmU9ITEsdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc0RpcnR5KHQpfW1hcmtBc1ByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9ITAsdGhpcy5fcGVuZGluZ0RpcnR5PSExLHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+e3QubWFya0FzUHJpc3RpbmUoe29ubHlTZWxmOiEwfSl9KSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1tYXJrQXNQZW5kaW5nKHQ9e30pe3RoaXMuc3RhdHVzPVdqLCExIT09dC5lbWl0RXZlbnQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh0KX1kaXNhYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9WWosdGhpcy5lcnJvcnM9bnVsbCx0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PntlLmRpc2FibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLl91cGRhdGVWYWx1ZSgpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2tpcFByaXN0aW5lQ2hlY2s6ZX0pKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2goKHQ9PnQoITApKSl9ZW5hYmxlKHQ9e30pe2NvbnN0IGU9dGhpcy5fcGFyZW50TWFya2VkRGlydHkodC5vbmx5U2VsZik7dGhpcy5zdGF0dXM9VWosdGhpcy5fZm9yRWFjaENoaWxkKChlPT57ZS5lbmFibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NraXBQcmlzdGluZUNoZWNrOmV9KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKCh0PT50KCExKSkpfV91cGRhdGVBbmNlc3RvcnModCl7dGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpLHQuc2tpcFByaXN0aW5lQ2hlY2t8fHRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoKSl9c2V0UGFyZW50KHQpe3RoaXMuX3BhcmVudD10fXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodD17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSx0aGlzLnN0YXR1cyE9PVVqJiZ0aGlzLnN0YXR1cyE9PVdqfHx0aGlzLl9ydW5Bc3luY1ZhbGlkYXRvcih0LmVtaXRFdmVudCkpLCExIT09dC5lbWl0RXZlbnQmJih0aGlzLnZhbHVlQ2hhbmdlcy5lbWl0KHRoaXMudmFsdWUpLHRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodCl9X3VwZGF0ZVRyZWVWYWxpZGl0eSh0PXtlbWl0RXZlbnQ6ITB9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKGU9PmUuX3VwZGF0ZVRyZWVWYWxpZGl0eSh0KSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/WWo6VWp9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcih0KXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0YXR1cz1Xaix0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7Y29uc3QgZT1paih0aGlzLmFzeW5jVmFsaWRhdG9yKHRoaXMpKTt0aGlzLl9hc3luY1ZhbGlkYXRpb25TdWJzY3JpcHRpb249ZS5zdWJzY3JpYmUoKGU9Pnt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5zZXRFcnJvcnMoZSx7ZW1pdEV2ZW50OnR9KX0pKX19X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExKX1zZXRFcnJvcnModCxlPXt9KXt0aGlzLmVycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKCExIT09ZS5lbWl0RXZlbnQpfWdldCh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sbyl7aWYobnVsbD09bilyZXR1cm4gbnVsbDtpZihBcnJheS5pc0FycmF5KG4pfHwobj1uLnNwbGl0KG8pKSxBcnJheS5pc0FycmF5KG4pJiYwPT09bi5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IGk9dDtyZXR1cm4gbi5mb3JFYWNoKCh0PT57aT1pIGluc3RhbmNlb2YgdFU/aS5jb250cm9scy5oYXNPd25Qcm9wZXJ0eSh0KT9pLmNvbnRyb2xzW3RdOm51bGw6aSBpbnN0YW5jZW9mIGVVJiZpLmF0KHQpfHxudWxsfSkpLGl9KSh0aGlzLHQsIi4iKX1nZXRFcnJvcih0LGUpe2NvbnN0IG49ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBuJiZuLmVycm9ycz9uLmVycm9yc1t0XTpudWxsfWhhc0Vycm9yKHQsZSl7cmV0dXJuISF0aGlzLmdldEVycm9yKHQsZSl9Z2V0IHJvb3QoKXtsZXQgdD10aGlzO2Zvcig7dC5fcGFyZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH1fdXBkYXRlQ29udHJvbHNFcnJvcnModCl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdCYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyh0KX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3IExoLHRoaXMuc3RhdHVzQ2hhbmdlcz1uZXcgTGh9X2NhbGN1bGF0ZVN0YXR1cygpe3JldHVybiB0aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/WWo6dGhpcy5lcnJvcnM/R2o6dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yfHx0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoV2opP1dqOnRoaXMuX2FueUNvbnRyb2xzSGF2ZVN0YXR1cyhHaik/R2o6VWp9X2FueUNvbnRyb2xzSGF2ZVN0YXR1cyh0KXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoKGU9PmUuc3RhdHVzPT09dCkpfV9hbnlDb250cm9sc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKCh0PT50LmRpcnR5KSl9X2FueUNvbnRyb2xzVG91Y2hlZCgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scygodD0+dC50b3VjaGVkKSl9X3VwZGF0ZVByaXN0aW5lKHQ9e30pe3RoaXMucHJpc3RpbmU9IXRoaXMuX2FueUNvbnRyb2xzRGlydHkoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKHQpfV91cGRhdGVUb3VjaGVkKHQ9e30pe3RoaXMudG91Y2hlZD10aGlzLl9hbnlDb250cm9sc1RvdWNoZWQoKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9X2lzQm94ZWRWYWx1ZSh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10JiYyPT09T2JqZWN0LmtleXModCkubGVuZ3RoJiYidmFsdWUiaW4gdCYmImRpc2FibGVkImluIHR9X3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHQpe3RoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT10fV9zZXRVcGRhdGVTdHJhdGVneSh0KXtKaih0KSYmbnVsbCE9dC51cGRhdGVPbiYmKHRoaXMuX3VwZGF0ZU9uPXQudXBkYXRlT24pfV9wYXJlbnRNYXJrZWREaXJ0eSh0KXtyZXR1cm4hdCYmISghdGhpcy5fcGFyZW50fHwhdGhpcy5fcGFyZW50LmRpcnR5KSYmIXRoaXMuX3BhcmVudC5fYW55Q29udHJvbHNEaXJ0eSgpfX1jbGFzcyAkaiBleHRlbmRzIFFqe2NvbnN0cnVjdG9yKHQ9bnVsbCxlLG4pe3N1cGVyKHFqKGUpLFhqKG4sZSkpLHRoaXMuX29uQ2hhbmdlPVtdLHRoaXMuX2FwcGx5Rm9ybVN0YXRlKHQpLHRoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KGUpLHRoaXMuX2luaXRPYnNlcnZhYmxlcygpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pfXNldFZhbHVlKHQsZT17fSl7dGhpcy52YWx1ZT10aGlzLl9wZW5kaW5nVmFsdWU9dCx0aGlzLl9vbkNoYW5nZS5sZW5ndGgmJiExIT09ZS5lbWl0TW9kZWxUb1ZpZXdDaGFuZ2UmJnRoaXMuX29uQ2hhbmdlLmZvckVhY2goKHQ9PnQodGhpcy52YWx1ZSwhMSE9PWUuZW1pdFZpZXdUb01vZGVsQ2hhbmdlKSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1wYXRjaFZhbHVlKHQsZT17fSl7dGhpcy5zZXRWYWx1ZSh0LGUpfXJlc2V0KHQ9bnVsbCxlPXt9KXt0aGlzLl9hcHBseUZvcm1TdGF0ZSh0KSx0aGlzLm1hcmtBc1ByaXN0aW5lKGUpLHRoaXMubWFya0FzVW50b3VjaGVkKGUpLHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSxlKSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExfV91cGRhdGVWYWx1ZSgpe31fYW55Q29udHJvbHModCl7cmV0dXJuITF9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlLnB1c2godCl9X3VucmVnaXN0ZXJPbkNoYW5nZSh0KXtWaih0aGlzLl9vbkNoYW5nZSx0KX1yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodCl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKHQpfV91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSh0KXtWaih0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLHQpfV9mb3JFYWNoQ2hpbGQodCl7fV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7cmV0dXJuISgic3VibWl0IiE9PXRoaXMudXBkYXRlT258fCh0aGlzLl9wZW5kaW5nRGlydHkmJnRoaXMubWFya0FzRGlydHkoKSx0aGlzLl9wZW5kaW5nVG91Y2hlZCYmdGhpcy5tYXJrQXNUb3VjaGVkKCksIXRoaXMuX3BlbmRpbmdDaGFuZ2UpfHwodGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLDApKX1fYXBwbHlGb3JtU3RhdGUodCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXR9fWNsYXNzIHRVIGV4dGVuZHMgUWp7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHFqKGUpLFhqKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9cmVnaXN0ZXJDb250cm9sKHQsZSl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF0/dGhpcy5jb250cm9sc1t0XToodGhpcy5jb250cm9sc1t0XT1lLGUuc2V0UGFyZW50KHRoaXMpLGUuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSksZSl9YWRkQ29udHJvbCh0LGUsbj17fSl7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXJlbW92ZUNvbnRyb2wodCxlPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKHQsZSxuPXt9KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sZSYmdGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpuLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9c2V0VmFsdWUodCxlPXt9KXt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e3RoaXMuX3Rocm93SWZDb250cm9sTWlzc2luZyhuKSx0aGlzLmNvbnRyb2xzW25dLnNldFZhbHVlKHRbbl0se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1wYXRjaFZhbHVlKHQsZT17fSl7bnVsbCE9dCYmKE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49Pnt0aGlzLmNvbnRyb2xzW25dJiZ0aGlzLmNvbnRyb2xzW25dLnBhdGNoVmFsdWUodFtuXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpKX1yZXNldCh0PXt9LGU9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgoKG4sbyk9PntuLnJlc2V0KHRbb10se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSkpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCgodCxlLG4pPT4odFtuXT1lIGluc3RhbmNlb2YgJGo/ZS52YWx1ZTplLmdldFJhd1ZhbHVlKCksdCkpKX1fc3luY1BlbmRpbmdDb250cm9scygpe2xldCB0PXRoaXMuX3JlZHVjZUNoaWxkcmVuKCExLCgodCxlKT0+ISFlLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fHQpKTtyZXR1cm4gdCYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLHR9X3Rocm93SWZDb250cm9sTWlzc2luZyh0KXtpZighT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3VwIHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAke3R9LmApfV9mb3JFYWNoQ2hpbGQodCl7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaCgoZT0+e2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtuJiZ0KG4sZSl9KSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSkpfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHModCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpe2NvbnN0IG49dGhpcy5jb250cm9sc1tlXTtpZih0aGlzLmNvbnRhaW5zKGUpJiZ0KG4pKXJldHVybiEwfXJldHVybiExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoKHQsZSxuKT0+KChlLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtuXT1lLnZhbHVlKSx0KSkpfV9yZWR1Y2VDaGlsZHJlbih0LGUpe2xldCBuPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZCgoKHQsbyk9PntuPWUobix0LG8pfSkpLG59X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgoZSxuKT0+e2lmKHZvaWQgMD09PXRbbl0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnJHtufScuYCl9KSl9fWNsYXNzIGVVIGV4dGVuZHMgUWp7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHFqKGUpLFhqKG4sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9YXQodCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19cHVzaCh0LGU9e30pe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1pbnNlcnQodCxlLG49e30pe3RoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KX1yZW1vdmVBdCh0LGU9e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSx0aGlzLmNvbnRyb2xzLnNwbGljZSh0LDEpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9c2V0Q29udHJvbCh0LGUsbj17fSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksZSYmKHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aH1zZXRWYWx1ZSh0LGU9e30pe3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSx0LmZvckVhY2goKCh0LG4pPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKG4pLHRoaXMuYXQobikuc2V0VmFsdWUodCx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXtudWxsIT10JiYodC5mb3JFYWNoKCgodCxuKT0+e3RoaXMuYXQobikmJnRoaXMuYXQobikucGF0Y2hWYWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSkpfXJlc2V0KHQ9W10sZT17fSl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixvKT0+e24ucmVzZXQodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSksdGhpcy5fdXBkYXRlUHJpc3RpbmUoZSksdGhpcy5fdXBkYXRlVG91Y2hlZChlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9Z2V0UmF3VmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9scy5tYXAoKHQ9PnQgaW5zdGFuY2VvZiAkaj90LnZhbHVlOnQuZ2V0UmF3VmFsdWUoKSkpfWNsZWFyKHQ9e30pe3RoaXMuY29udHJvbHMubGVuZ3RoPDF8fCh0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKDApLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSkpfV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7bGV0IHQ9dGhpcy5jb250cm9scy5yZWR1Y2UoKCh0LGUpPT4hIWUuX3N5bmNQZW5kaW5nQ29udHJvbHMoKXx8dCksITEpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCF0aGlzLmNvbnRyb2xzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3RlcmVkIHdpdGggdGhpcyBhcnJheSB5ZXQuIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLFxuICAgICAgICB5b3UgbWF5IHdhbnQgdG8gY2hlY2sgbmV4dCB0aWNrIChlLmcuIHVzZSBzZXRUaW1lb3V0KS5cbiAgICAgICIpO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGluZGV4ICR7dH1gKX1fZm9yRWFjaENoaWxkKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaCgoKGUsbik9Pnt0KGUsbil9KSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLmNvbnRyb2xzLmZpbHRlcigodD0+dC5lbmFibGVkfHx0aGlzLmRpc2FibGVkKSkubWFwKCh0PT50LnZhbHVlKSl9X2FueUNvbnRyb2xzKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoKGU9PmUuZW5hYmxlZCYmdChlKSkpfV9zZXRVcENvbnRyb2xzKCl7dGhpcy5fZm9yRWFjaENoaWxkKCh0PT50aGlzLl9yZWdpc3RlckNvbnRyb2wodCkpKX1fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpe3RoaXMuX2ZvckVhY2hDaGlsZCgoKGUsbik9PntpZih2b2lkIDA9PT10W25dKXRocm93IG5ldyBFcnJvcihgTXVzdCBzdXBwbHkgYSB2YWx1ZSBmb3IgZm9ybSBjb250cm9sIGF0IGluZGV4OiAke259LmApfSkpfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jb250cm9scylpZih0LmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RoPjB8fHRoaXMuZGlzYWJsZWR9X3JlZ2lzdGVyQ29udHJvbCh0KXt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgblU9e3Byb3ZpZGU6Q2osdXNlRXhpc3Rpbmc6cWUoKCgpPT5pVSkpfSxvVT1Qcm9taXNlLnJlc29sdmUobnVsbCk7Y2xhc3MgaVUgZXh0ZW5kcyBDantjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fZGlyZWN0aXZlcz1bXSx0aGlzLm5nU3VibWl0PW5ldyBMaCx0aGlzLmZvcm09bmV3IHRVKHt9LGNqKHQpLHBqKGUpKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119Z2V0IGNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuZm9ybS5jb250cm9sc31hZGRDb250cm9sKHQpe29VLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7dC5jb250cm9sPWUucmVnaXN0ZXJDb250cm9sKHQubmFtZSx0LmNvbnRyb2wpLEVqKHQuY29udHJvbCx0KSx0LmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5fZGlyZWN0aXZlcy5wdXNoKHQpfSkpfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe29VLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLl9maW5kQ29udGFpbmVyKHQucGF0aCk7ZSYmZS5yZW1vdmVDb250cm9sKHQubmFtZSksVmoodGhpcy5fZGlyZWN0aXZlcyx0KX0pKX1hZGRGb3JtR3JvdXAodCl7b1UudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKSxuPW5ldyB0VSh7fSk7SWoobix0KSxlLnJlZ2lzdGVyQ29udHJvbCh0Lm5hbWUsbiksbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX0pKX1yZW1vdmVGb3JtR3JvdXAodCl7b1UudGhlbigoKCk9Pntjb25zdCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtlJiZlLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pKX1nZXRGb3JtR3JvdXAodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX11cGRhdGVNb2RlbCh0LGUpe29VLnRoZW4oKCgpPT57dGhpcy5mb3JtLmdldCh0LnBhdGgpLnNldFZhbHVlKGUpfSkpfXNldFZhbHVlKHQpe3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0KX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsTGoodGhpcy5mb3JtLHRoaXMuX2RpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5mb3JtLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9maW5kQ29udGFpbmVyKHQpe3JldHVybiB0LnBvcCgpLHQubGVuZ3RoP3RoaXMuZm9ybS5nZXQodCk6dGhpcy5mb3JtfX1pVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aVUpKFNtKEdWLDEwKSxTbShXViwxMCkpfSxpVS7JtWRpcj1sbyh7dHlwZTppVSxzZWxlY3RvcnM6W1siZm9ybSIsMywibmdOb0Zvcm0iLCIiLDMsImZvcm1Hcm91cCIsIiJdLFsibmctZm9ybSJdLFsiIiwibmdGb3JtIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgic3VibWl0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblN1Ym1pdChlKX0pKSgicmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNldCgpfSkpfSxpbnB1dHM6e29wdGlvbnM6WyJuZ0Zvcm1PcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltwZyhbblVdKSx4cF19KSxpVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbR1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbV1ZdfV19XSxpVS5wcm9wRGVjb3JhdG9ycz17b3B0aW9uczpbe3R5cGU6eHksYXJnczpbIm5nRm9ybU9wdGlvbnMiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGlVLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmctZm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOltuVV0saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxvdXRwdXRzOlsibmdTdWJtaXQiXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbR1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbV1ZdfV19XX0pLHtvcHRpb25zOlt7dHlwZTp4eSxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGFVIGV4dGVuZHMgQ2p7bmdPbkluaXQoKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gRGoobnVsbD09dGhpcy5uYW1lP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfV9jaGVja1BhcmVudFR5cGUoKXt9fWFVLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShhVSkpKShufHxhVSl9fSkoKSxhVS7JtWRpcj1sbyh7dHlwZTphVSxmZWF0dXJlczpbeHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChhVSxbe3R5cGU6Q3l9XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgclV7c3RhdGljIG1vZGVsUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWwgY2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgZm9ybSBjb250cm9scyB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBUcnkgdXNpbmdcbiAgICAgIGZvcm1Hcm91cCdzIHBhcnRuZXIgZGlyZWN0aXZlICJmb3JtQ29udHJvbE5hbWUiIGluc3RlYWQuICBFeGFtcGxlOlxuXG4gICAgICAke1BqfVxuXG4gICAgICBPciwgaWYgeW91J2QgbGlrZSB0byBhdm9pZCByZWdpc3RlcmluZyB0aGlzIGZvcm0gY29udHJvbCwgaW5kaWNhdGUgdGhhdCBpdCdzIHN0YW5kYWxvbmUgaW4gbmdNb2RlbE9wdGlvbnM6XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgICAgPGlucHV0IFsobmdNb2RlbCldPSJzaG93TW9yZUNvbnRyb2xzIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPlxuICAgIDwvZGl2PlxuICBgKX1zdGF0aWMgZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXBOYW1lIG9yIGZvcm1BcnJheU5hbWUgZGlyZWN0aXZlLlxuXG4gICAgICBPcHRpb24gMTogVXNlIGZvcm1Db250cm9sTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWwgKHJlYWN0aXZlIHN0cmF0ZWd5KTpcblxuICAgICAgJHt3an1cblxuICAgICAgT3B0aW9uIDI6ICBVcGRhdGUgbmdNb2RlbCdzIHBhcmVudCBiZSBuZ01vZGVsR3JvdXAgKHRlbXBsYXRlLWRyaXZlbiBzdHJhdGVneSk6XG5cbiAgICAgICR7a2p9YCl9c3RhdGljIG1pc3NpbmdOYW1lRXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCdJZiBuZ01vZGVsIGlzIHVzZWQgd2l0aGluIGEgZm9ybSB0YWcsIGVpdGhlciB0aGUgbmFtZSBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgb3IgdGhlIGZvcm1cbiAgICAgIGNvbnRyb2wgbXVzdCBiZSBkZWZpbmVkIGFzIFwnc3RhbmRhbG9uZVwnIGluIG5nTW9kZWxPcHRpb25zLlxuXG4gICAgICBFeGFtcGxlIDE6IDxpbnB1dCBbKG5nTW9kZWwpXT0icGVyc29uLmZpcnN0TmFtZSIgbmFtZT0iZmlyc3QiPlxuICAgICAgRXhhbXBsZSAyOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25lOiB0cnVlfSI+Jyl9c3RhdGljIG1vZGVsR3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbEdyb3VwIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtR3JvdXBOYW1lIGluc3RlYWQgb2YgbmdNb2RlbEdyb3VwIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICR7d2p9XG5cbiAgICAgIE9wdGlvbiAyOiAgVXNlIGEgcmVndWxhciBmb3JtIHRhZyBpbnN0ZWFkIG9mIHRoZSBmb3JtR3JvdXAgZGlyZWN0aXZlICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAke2tqfWApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgc1U9e3Byb3ZpZGU6Q2osdXNlRXhpc3Rpbmc6cWUoKCgpPT5sVSkpfTtjbGFzcyBsVSBleHRlbmRzIGFVe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pfV9jaGVja1BhcmVudFR5cGUoKXt0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBsVXx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgaVV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxyVS5tb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl9fWxVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsVSkoU20oQ2osNSksU20oR1YsMTApLFNtKFdWLDEwKSl9LGxVLsm1ZGlyPWxvKHt0eXBlOmxVLHNlbGVjdG9yczpbWyIiLCJuZ01vZGVsR3JvdXAiLCIiXV0saW5wdXRzOntuYW1lOlsibmdNb2RlbEdyb3VwIiwibmFtZSJdfSxleHBvcnRBczpbIm5nTW9kZWxHcm91cCJdLGZlYXR1cmVzOltwZyhbc1VdKSx4cF19KSxsVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkNqLGRlY29yYXRvcnM6W3t0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV0sbFUucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOnh5LGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGxVLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsR3JvdXBdIixwcm92aWRlcnM6W3NVXSxleHBvcnRBczoibmdNb2RlbEdyb3VwIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNqLGRlY29yYXRvcnM6W3t0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV19KSx7bmFtZTpbe3R5cGU6eHksYXJnczpbIm5nTW9kZWxHcm91cCJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGNVPXtwcm92aWRlOk1qLHVzZUV4aXN0aW5nOnFlKCgoKT0+cFUpKX0sZFU9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2NsYXNzIHBVIGV4dGVuZHMgTWp7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLmNvbnRyb2w9bmV3ICRqLHRoaXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy51cGRhdGU9bmV3IExoLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pLHRoaXMudmFsdWVBY2Nlc3Nvcj1Caih0aGlzLG8pfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2NoZWNrRm9yRXJyb3JzKCksdGhpcy5fcmVnaXN0ZXJlZHx8dGhpcy5fc2V0VXBDb250cm9sKCksImlzRGlzYWJsZWQiaW4gdCYmdGhpcy5fdXBkYXRlRGlzYWJsZWQodCksRmoodCx0aGlzLnZpZXdNb2RlbCkmJih0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gdGhpcy5fcGFyZW50P0RqKHRoaXMubmFtZSx0aGlzLl9wYXJlbnQpOlt0aGlzLm5hbWVdfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1fc2V0VXBDb250cm9sKCl7dGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koKSx0aGlzLl9pc1N0YW5kYWxvbmUoKT90aGlzLl9zZXRVcFN0YW5kYWxvbmUoKTp0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLl9yZWdpc3RlcmVkPSEwfV9zZXRVcGRhdGVTdHJhdGVneSgpe3RoaXMub3B0aW9ucyYmbnVsbCE9dGhpcy5vcHRpb25zLnVwZGF0ZU9uJiYodGhpcy5jb250cm9sLl91cGRhdGVPbj10aGlzLm9wdGlvbnMudXBkYXRlT24pfV9pc1N0YW5kYWxvbmUoKXtyZXR1cm4hdGhpcy5fcGFyZW50fHwhKCF0aGlzLm9wdGlvbnN8fCF0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSl9X3NldFVwU3RhbmRhbG9uZSgpe0VqKHRoaXMuY29udHJvbCx0aGlzKSx0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NoZWNrRm9yRXJyb3JzKCl7dGhpcy5faXNTdGFuZGFsb25lKCl8fHRoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuX2NoZWNrTmFtZSgpfV9jaGVja1BhcmVudFR5cGUoKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJighKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGxVKSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgYVU/clUuZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGxVfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBpVXx8clUubW9kZWxQYXJlbnRFeGNlcHRpb24oKSl9X2NoZWNrTmFtZSgpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0aGlzLm5hbWU9dGhpcy5vcHRpb25zLm5hbWUpLHRoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLm5hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHxyVS5taXNzaW5nTmFtZUV4Y2VwdGlvbigpfV91cGRhdGVWYWx1ZSh0KXtkVS50aGVuKCgoKT0+e3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0LHtlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6ITF9KX0pKX1fdXBkYXRlRGlzYWJsZWQodCl7Y29uc3QgZT10LmlzRGlzYWJsZWQuY3VycmVudFZhbHVlLG49IiI9PT1lfHxlJiYiZmFsc2UiIT09ZTtkVS50aGVuKCgoKT0+e24mJiF0aGlzLmNvbnRyb2wuZGlzYWJsZWQ/dGhpcy5jb250cm9sLmRpc2FibGUoKTohbiYmdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLmNvbnRyb2wuZW5hYmxlKCl9KSl9fXBVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwVSkoU20oQ2osOSksU20oR1YsMTApLFNtKFdWLDEwKSxTbShJViwxMCkpfSxwVS7JtWRpcj1sbyh7dHlwZTpwVSxzZWxlY3RvcnM6W1siIiwibmdNb2RlbCIsIiIsMywiZm9ybUNvbnRyb2xOYW1lIiwiIiwzLCJmb3JtQ29udHJvbCIsIiJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGlzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdLG9wdGlvbnM6WyJuZ01vZGVsT3B0aW9ucyIsIm9wdGlvbnMiXX0sb3V0cHV0czp7dXBkYXRlOiJuZ01vZGVsQ2hhbmdlIn0sZXhwb3J0QXM6WyJuZ01vZGVsIl0sZmVhdHVyZXM6W3BnKFtjVV0pLHhwLEJvXX0pLHBVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbR1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbV1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbSVZdfV19XSxwVS5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6eHl9XSxpc0Rpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTp4eSxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9uczpbe3R5cGU6eHksYXJnczpbIm5nTW9kZWxPcHRpb25zIl19XSx1cGRhdGU6W3t0eXBlOk95LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbF06bm90KFtmb3JtQ29udHJvbE5hbWVdKTpub3QoW2Zvcm1Db250cm9sXSkiLHByb3ZpZGVyczpbY1VdLGV4cG9ydEFzOiJuZ01vZGVsIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNqLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0lWXX1dfV19KSx7dXBkYXRlOlt7dHlwZTpPeSxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0sbmFtZTpbe3R5cGU6eHl9XSxpc0Rpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTp4eSxhcmdzOlsibmdNb2RlbCJdfV0sb3B0aW9uczpbe3R5cGU6eHksYXJnczpbIm5nTW9kZWxPcHRpb25zIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbVV7fW1VLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtVSl9LG1VLsm1ZGlyPWxvKHt0eXBlOm1VLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG1VLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbbmdOYXRpdmVWYWxpZGF0ZV0pIixob3N0Ontub3ZhbGlkYXRlOiIifX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHVVPXtwcm92aWRlOklWLHVzZUV4aXN0aW5nOnFlKCgoKT0+ZlUpKSxtdWx0aTohMH07Y2xhc3MgZlUgZXh0ZW5kcyB6Vnt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixudWxsPT10PyIiOnQpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dCgiIj09ZT9udWxsOnBhcnNlRmxvYXQoZSkpfX19ZlUuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKGZVKSkpKG58fGZVKX19KSgpLGZVLsm1ZGlyPWxvKHt0eXBlOmZVLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W3BnKFt1VV0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZlUsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1udW1iZXJdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbmdNb2RlbF0iLGhvc3Q6eyIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbdVVdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZ1U9e3Byb3ZpZGU6SVYsdXNlRXhpc3Rpbmc6cWUoKCgpPT55VSkpLG11bHRpOiEwfTtjbGFzcyBoVXt9aFUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGhVKX0saFUuybVtb2Q9YW8oe3R5cGU6aFV9KSxoVS7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChoVSxbe3R5cGU6QXl9XSxudWxsLG51bGwpO2NsYXNzIGJVe2NvbnN0cnVjdG9yKCl7dGhpcy5fYWNjZXNzb3JzPVtdfWFkZCh0LGUpe3RoaXMuX2FjY2Vzc29ycy5wdXNoKFt0LGVdKX1yZW1vdmUodCl7Zm9yKGxldCBlPXRoaXMuX2FjY2Vzc29ycy5sZW5ndGgtMTtlPj0wOy0tZSlpZih0aGlzLl9hY2Nlc3NvcnNbZV1bMV09PT10KXJldHVybiB2b2lkIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoZSwxKX1zZWxlY3QodCl7dGhpcy5fYWNjZXNzb3JzLmZvckVhY2goKGU9Pnt0aGlzLl9pc1NhbWVHcm91cChlLHQpJiZlWzFdIT09dCYmZVsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pKX1faXNTYW1lR3JvdXAodCxlKXtyZXR1cm4hIXRbMF0uY29udHJvbCYmdFswXS5fcGFyZW50PT09ZS5fY29udHJvbC5fcGFyZW50JiZ0WzFdLm5hbWU9PT1lLm5hbWV9fWJVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiVSl9LGJVLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBiVX0sdG9rZW46YlUscHJvdmlkZWRJbjpoVX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYlUsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOmhVfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NsYXNzIHlVIGV4dGVuZHMgelZ7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlKSx0aGlzLl9yZWdpc3RyeT1uLHRoaXMuX2luamVjdG9yPW8sdGhpcy5vbkNoYW5nZT0oKT0+e319bmdPbkluaXQoKXt0aGlzLl9jb250cm9sPXRoaXMuX2luamVjdG9yLmdldChNaiksdGhpcy5fY2hlY2tOYW1lKCksdGhpcy5fcmVnaXN0cnkuYWRkKHRoaXMuX2NvbnRyb2wsdGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZWdpc3RyeS5yZW1vdmUodGhpcyl9d3JpdGVWYWx1ZSh0KXt0aGlzLl9zdGF0ZT10PT09dGhpcy52YWx1ZSx0aGlzLnNldFByb3BlcnR5KCJjaGVja2VkIix0aGlzLl9zdGF0ZSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9mbj10LHRoaXMub25DaGFuZ2U9KCk9Pnt0KHRoaXMudmFsdWUpLHRoaXMuX3JlZ2lzdHJ5LnNlbGVjdCh0aGlzKX19ZmlyZVVuY2hlY2sodCl7dGhpcy53cml0ZVZhbHVlKHQpfV9jaGVja05hbWUoKXt0aGlzLm5hbWUmJnRoaXMuZm9ybUNvbnRyb2xOYW1lJiZ0aGlzLm5hbWUhPT10aGlzLmZvcm1Db250cm9sTmFtZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gdCgpe3Rocm93IG5ldyBFcnJvcignXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPSJyYWRpbyIgZm9ybUNvbnRyb2xOYW1lPSJmb29kIiBuYW1lPSJmb29kIj5cbiAgICAnKX0pKCksIXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfX15VS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eVUpKFNtKENnKSxTbShoZyksU20oYlUpLFNtKHJwKSl9LHlVLsm1ZGlyPWxvKHt0eXBlOnlVLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwicmFkaW8iLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiY2hhbmdlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uQ2hhbmdlKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOltwZyhbZ1VdKSx4cF19KSx5VS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkNnfSx7dHlwZTpoZ30se3R5cGU6YlV9LHt0eXBlOnJwfV0seVUucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOnh5fV0sZm9ybUNvbnRyb2xOYW1lOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHlVLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9cmFkaW9dW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9cmFkaW9dW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W2dVXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNnfSx7dHlwZTpoZ30se3R5cGU6YlV9LHt0eXBlOnJwfV19KSx7bmFtZTpbe3R5cGU6eHl9XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IF9VPXtwcm92aWRlOklWLHVzZUV4aXN0aW5nOnFlKCgoKT0+Q1UpKSxtdWx0aTohMH07Y2xhc3MgQ1UgZXh0ZW5kcyB6Vnt3cml0ZVZhbHVlKHQpe3RoaXMuc2V0UHJvcGVydHkoInZhbHVlIixwYXJzZUZsb2F0KHQpKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9ZT0+e3QoIiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKX19fUNVLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShDVSkpKShufHxDVSl9fSkoKSxDVS7JtWRpcj1sbyh7dHlwZTpDVSxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwicmFuZ2UiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsInJhbmdlIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpfSxmZWF0dXJlczpbcGcoW19VXSkseHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChDVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9cmFuZ2VdW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPXJhbmdlXVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoaW5wdXQpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbX1VdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTVU9bmV3IEdhKCJOZ01vZGVsV2l0aEZvcm1Db250cm9sV2FybmluZyIpLHZVPXtwcm92aWRlOk1qLHVzZUV4aXN0aW5nOnFlKCgoKT0+eFUpKX07Y2xhc3MgeFUgZXh0ZW5kcyBNantjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcigpLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnPW8sdGhpcy51cGRhdGU9bmV3IExoLHRoaXMuX25nTW9kZWxXYXJuaW5nU2VudD0hMSx0aGlzLl9zZXRWYWxpZGF0b3JzKHQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhlKSx0aGlzLnZhbHVlQWNjZXNzb3I9QmoodGhpcyxuKX1zZXQgaXNEaXNhYmxlZCh0KXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlNqLmRpc2FibGVkQXR0cldhcm5pbmcoKX1uZ09uQ2hhbmdlcyh0KXtpZih0aGlzLl9pc0NvbnRyb2xDaGFuZ2VkKHQpKXtjb25zdCBlPXQuZm9ybS5wcmV2aW91c1ZhbHVlO2UmJlJqKGUsdGhpcywhMSksRWoodGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9RmoodCx0aGlzLnZpZXdNb2RlbCkmJigoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmpqKCJmb3JtQ29udHJvbCIseFUsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy5mb3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtJiZSaih0aGlzLmZvcm0sdGhpcywhMSl9Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfV9pc0NvbnRyb2xDaGFuZ2VkKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJmb3JtIil9fXhVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4VSkoU20oR1YsMTApLFNtKFdWLDEwKSxTbShJViwxMCksU20oTVUsOCkpfSx4VS7JtWRpcj1sbyh7dHlwZTp4VSxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sZm9ybTpbImZvcm1Db250cm9sIiwiZm9ybSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W3BnKFt2VV0pLHhwLEJvXX0pLHhVLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSExLHhVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltHVl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltXVl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltJVl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltNVV19XX1dLHhVLnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTp4eSxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0eXBlOnh5LGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOk95LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh4VSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xdIixwcm92aWRlcnM6W3ZVXSxleHBvcnRBczoibmdGb3JtIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbR1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbV1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbSVZdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbTVVdfV19XX0pLHt1cGRhdGU6W3t0eXBlOk95LGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsiZGlzYWJsZWQiXX1dLGZvcm06W3t0eXBlOnh5LGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0sbW9kZWw6W3t0eXBlOnh5LGFyZ3M6WyJuZ01vZGVsIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgT1U9e3Byb3ZpZGU6Q2osdXNlRXhpc3Rpbmc6cWUoKCgpPT5QVSkpfTtjbGFzcyBQVSBleHRlbmRzIENqe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnZhbGlkYXRvcnM9dCx0aGlzLmFzeW5jVmFsaWRhdG9ycz1lLHRoaXMuc3VibWl0dGVkPSExLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZT0oKT0+dGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLmRpcmVjdGl2ZXM9W10sdGhpcy5mb3JtPW51bGwsdGhpcy5uZ1N1Ym1pdD1uZXcgTGgsdGhpcy5fc2V0VmFsaWRhdG9ycyh0KSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoZSl9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpLHQuaGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3VwZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybSl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm0mJihOaih0aGlzLmZvcm0sdGhpcyksdGhpcy5mb3JtLl9vbkNvbGxlY3Rpb25DaGFuZ2U9PT10aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UmJnRoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybX1nZXQgcGF0aCgpe3JldHVybltdfWFkZENvbnRyb2wodCl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIEVqKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxlfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe1JqKHQuY29udHJvbHx8bnVsbCx0LCExKSxWaih0aGlzLmRpcmVjdGl2ZXMsdCl9YWRkRm9ybUdyb3VwKHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtR3JvdXAodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUdyb3VwKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9YWRkRm9ybUFycmF5KHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtQXJyYXkodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUFycmF5KHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9dXBkYXRlTW9kZWwodCxlKXt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9b25TdWJtaXQodCl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLExqKHRoaXMuZm9ybSx0aGlzLmRpcmVjdGl2ZXMpLHRoaXMubmdTdWJtaXQuZW1pdCh0KSwhMX1vblJlc2V0KCl7dGhpcy5yZXNldEZvcm0oKX1yZXNldEZvcm0odCl7dGhpcy5mb3JtLnJlc2V0KHQpLHRoaXMuc3VibWl0dGVkPSExfV91cGRhdGVEb21WYWx1ZSgpe3RoaXMuZGlyZWN0aXZlcy5mb3JFYWNoKCh0PT57Y29uc3QgZT10LmNvbnRyb2wsbj10aGlzLmZvcm0uZ2V0KHQucGF0aCk7ZSE9PW4mJihSaihlfHxudWxsLHQpLG4gaW5zdGFuY2VvZiAkaiYmKEVqKG4sdCksdC5jb250cm9sPW4pKX0pKSx0aGlzLmZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X3NldFVwRm9ybUNvbnRhaW5lcih0KXtjb25zdCBlPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtJaihlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NsZWFuVXBGb3JtQ29udGFpbmVyKHQpe2lmKHRoaXMuZm9ybSl7Y29uc3QgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7ZSYmKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gTmoodCxlKX0pKGUsdCkmJmUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9fV91cGRhdGVSZWdpc3RyYXRpb25zKCl7dGhpcy5mb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLHRoaXMuX29sZEZvcm0mJnRoaXMuX29sZEZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKX1fdXBkYXRlVmFsaWRhdG9ycygpe1RqKHRoaXMuZm9ybSx0aGlzKSx0aGlzLl9vbGRGb3JtJiZOaih0aGlzLl9vbGRGb3JtLHRoaXMpfV9jaGVja0Zvcm1QcmVzZW50KCl7dGhpcy5mb3JtfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8U2oubWlzc2luZ0Zvcm1FeGNlcHRpb24oKX19UFUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBVKShTbShHViwxMCksU20oV1YsMTApKX0sUFUuybVkaXI9bG8oe3R5cGU6UFUsc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oInN1Ym1pdCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TdWJtaXQoZSl9KSkoInJlc2V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzZXQoKX0pKX0saW5wdXRzOntmb3JtOlsiZm9ybUdyb3VwIiwiZm9ybSJdfSxvdXRwdXRzOntuZ1N1Ym1pdDoibmdTdWJtaXQifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltwZyhbT1VdKSx4cCxCb119KSxQVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbR1ZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbV1ZdfV19XSxQVS5wcm9wRGVjb3JhdG9ycz17Zm9ybTpbe3R5cGU6eHksYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUFUsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cF0iLHByb3ZpZGVyczpbT1VdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV19KSx7Zm9ybTpbe3R5cGU6eHksYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0eXBlOk95fV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHdVPXtwcm92aWRlOkNqLHVzZUV4aXN0aW5nOnFlKCgoKT0+a1UpKX07Y2xhc3Mga1UgZXh0ZW5kcyBhVXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhuKX1fY2hlY2tQYXJlbnRUeXBlKCl7RVUodGhpcy5fcGFyZW50KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZTai5ncm91cFBhcmVudEV4Y2VwdGlvbigpfX1rVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a1UpKFNtKENqLDEzKSxTbShHViwxMCksU20oV1YsMTApKX0sa1UuybVkaXI9bG8oe3R5cGU6a1Usc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cE5hbWUiLCIiXV0saW5wdXRzOntuYW1lOlsiZm9ybUdyb3VwTmFtZSIsIm5hbWUiXX0sZmVhdHVyZXM6W3BnKFt3VV0pLHhwXX0pLGtVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV0sa1UucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOnh5LGFyZ3M6WyJmb3JtR3JvdXBOYW1lIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUdyb3VwTmFtZV0iLHByb3ZpZGVyczpbd1VdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV19KSx7bmFtZTpbe3R5cGU6eHksYXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfSk7Y29uc3QgU1U9e3Byb3ZpZGU6Q2osdXNlRXhpc3Rpbmc6cWUoKCgpPT5EVSkpfTtjbGFzcyBEVSBleHRlbmRzIENqe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG4pfW5nT25Jbml0KCl7dGhpcy5fY2hlY2tQYXJlbnRUeXBlKCksdGhpcy5mb3JtRGlyZWN0aXZlLmFkZEZvcm1BcnJheSh0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUZvcm1BcnJheSh0aGlzKX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm1EaXJlY3RpdmUuZ2V0Rm9ybUFycmF5KHRoaXMpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfWdldCBwYXRoKCl7cmV0dXJuIERqKG51bGw9PXRoaXMubmFtZT90aGlzLm5hbWU6dGhpcy5uYW1lLnRvU3RyaW5nKCksdGhpcy5fcGFyZW50KX1fY2hlY2tQYXJlbnRUeXBlKCl7RVUodGhpcy5fcGFyZW50KSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZTai5hcnJheVBhcmVudEV4Y2VwdGlvbigpfX1mdW5jdGlvbiBFVSh0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiBrVXx8dCBpbnN0YW5jZW9mIFBVfHx0IGluc3RhbmNlb2YgRFUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9EVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RFUpKFNtKENqLDEzKSxTbShHViwxMCksU20oV1YsMTApKX0sRFUuybVkaXI9bG8oe3R5cGU6RFUsc2VsZWN0b3JzOltbIiIsImZvcm1BcnJheU5hbWUiLCIiXV0saW5wdXRzOntuYW1lOlsiZm9ybUFycmF5TmFtZSIsIm5hbWUiXX0sZmVhdHVyZXM6W3BnKFtTVV0pLHhwXX0pLERVLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV0sRFUucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOnh5LGFyZ3M6WyJmb3JtQXJyYXlOYW1lIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChEVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbZm9ybUFycmF5TmFtZV0iLHByb3ZpZGVyczpbU1VdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfV19KSx7bmFtZTpbe3R5cGU6eHksYXJnczpbImZvcm1BcnJheU5hbWUiXX1dfSk7Y29uc3QgUlU9e3Byb3ZpZGU6TWosdXNlRXhpc3Rpbmc6cWUoKCgpPT5BVSkpfTtjbGFzcyBBVSBleHRlbmRzIE1qe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIoKSx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZz1pLHRoaXMuX2FkZGVkPSExLHRoaXMudXBkYXRlPW5ldyBMaCx0aGlzLl9uZ01vZGVsV2FybmluZ1NlbnQ9ITEsdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhlKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMobiksdGhpcy52YWx1ZUFjY2Vzc29yPUJqKHRoaXMsbyl9c2V0IGlzRGlzYWJsZWQodCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZTai5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9bmdPbkNoYW5nZXModCl7dGhpcy5fYWRkZWR8fHRoaXMuX3NldFVwQ29udHJvbCgpLEZqKHQsdGhpcy52aWV3TW9kZWwpJiYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZqaigiZm9ybUNvbnRyb2xOYW1lIixBVSx0aGlzLHRoaXMuX25nTW9kZWxXYXJuaW5nQ29uZmlnKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsLHRoaXMuZm9ybURpcmVjdGl2ZS51cGRhdGVNb2RlbCh0aGlzLHRoaXMubW9kZWwpKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybURpcmVjdGl2ZSYmdGhpcy5mb3JtRGlyZWN0aXZlLnJlbW92ZUNvbnRyb2wodGhpcyl9dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfWdldCBwYXRoKCl7cmV0dXJuIERqKG51bGw9PXRoaXMubmFtZT90aGlzLm5hbWU6dGhpcy5uYW1lLnRvU3RyaW5nKCksdGhpcy5fcGFyZW50KX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH1fY2hlY2tQYXJlbnRUeXBlKCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBrVSkmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGFVP1NqLm5nTW9kZWxHcm91cEV4Y2VwdGlvbigpOnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGtVfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBQVXx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgRFV8fFNqLmNvbnRyb2xQYXJlbnRFeGNlcHRpb24oKSl9X3NldFVwQ29udHJvbCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuY29udHJvbD10aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5fYWRkZWQ9ITB9fUFVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBVSkoU20oQ2osMTMpLFNtKEdWLDEwKSxTbShXViwxMCksU20oSVYsMTApLFNtKE1VLDgpKX0sQVUuybVkaXI9bG8oe3R5cGU6QVUsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdXSxpbnB1dHM6e2lzRGlzYWJsZWQ6WyJkaXNhYmxlZCIsImlzRGlzYWJsZWQiXSxuYW1lOlsiZm9ybUNvbnRyb2xOYW1lIiwibmFtZSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGZlYXR1cmVzOltwZyhbUlVdKSx4cCxCb119KSxBVS5fbmdNb2RlbFdhcm5pbmdTZW50T25jZT0hMSxBVS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkNqLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn0se3R5cGU6RXJ9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltHVl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltXVl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfSx7dHlwZTprcixhcmdzOltJVl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltNVV19XX1dLEFVLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTp4eSxhcmdzOlsiZm9ybUNvbnRyb2xOYW1lIl19XSxpc0Rpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTp4eSxhcmdzOlsibmdNb2RlbCJdfV0sdXBkYXRlOlt7dHlwZTpPeSxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQVUsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sTmFtZV0iLHByb3ZpZGVyczpbUlVdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2osZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOlJyfSx7dHlwZTpFcn1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W1dWXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W0lWXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W01VXX1dfV19KSx7dXBkYXRlOlt7dHlwZTpPeSxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6eHksYXJnczpbImRpc2FibGVkIl19XSxuYW1lOlt7dHlwZTp4eSxhcmdzOlsiZm9ybUNvbnRyb2xOYW1lIl19XSxtb2RlbDpbe3R5cGU6eHksYXJnczpbIm5nTW9kZWwiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBUVT17cHJvdmlkZTpJVix1c2VFeGlzdGluZzpxZSgoKCk9PnpVKSksbXVsdGk6ITB9O2Z1bmN0aW9uIE5VKHQsZSl7cmV0dXJuIG51bGw9PXQ/YCR7ZX1gOihlJiYib2JqZWN0Ij09dHlwZW9mIGUmJihlPSJPYmplY3QiKSxgJHt0fTogJHtlfWAuc2xpY2UoMCw1MCkpfWNsYXNzIHpVIGV4dGVuZHMgelZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoYGNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7dGhpcy5fY29tcGFyZVdpdGg9dH13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dDtjb25zdCBlPXRoaXMuX2dldE9wdGlvbklkKHQpO251bGw9PWUmJnRoaXMuc2V0UHJvcGVydHkoInNlbGVjdGVkSW5kZXgiLC0xKTtjb25zdCBuPU5VKGUsdCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLG4pfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZShlKSx0KHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChlKSx0KSlyZXR1cm4gZTtyZXR1cm4gbnVsbH1fZ2V0T3B0aW9uVmFsdWUodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5zcGxpdCgiOiIpWzBdfSkodCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0aW9uTWFwLmdldChlKTp0fX16VS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoelUpKSkobnx8elUpfX0pKCkselUuybVkaXI9bG8oe3R5cGU6elUsc2VsZWN0b3JzOltbInNlbGVjdCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbcGcoW1RVXSkseHBdfSkselUucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHpVLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdDpub3QoW211bHRpcGxlXSlbZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sXSxzZWxlY3Q6bm90KFttdWx0aXBsZV0pW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltUVV19XX1dLG51bGwse2NvbXBhcmVXaXRoOlt7dHlwZTp4eX1dfSk7Y2xhc3MgSVV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1uLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1zZXQgbmdWYWx1ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoTlUodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKHQpe3RoaXMuX3NldEVsZW1lbnRWYWx1ZSh0KSx0aGlzLl9zZWxlY3QmJnRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSl9X3NldEVsZW1lbnRWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19SVUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fElVKShTbShoZyksU20oQ2cpLFNtKHpVLDkpKX0sSVUuybVkaXI9bG8oe3R5cGU6SVUsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksSVUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6Q2d9LHt0eXBlOnpVLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV0sSVUucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOnh5LGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6eHksYXJnczpbInZhbHVlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChJVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJvcHRpb24ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOkNnfSx7dHlwZTp6VSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6UnJ9XX1dfSkse25nVmFsdWU6W3t0eXBlOnh5LGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6eHksYXJnczpbInZhbHVlIl19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgSFU9e3Byb3ZpZGU6SVYsdXNlRXhpc3Rpbmc6cWUoKCgpPT5MVSkpLG11bHRpOiEwfTtmdW5jdGlvbiBGVSh0LGUpe3JldHVybiBudWxsPT10P2Ake2V9YDooInN0cmluZyI9PXR5cGVvZiBlJiYoZT1gJyR7ZX0nYCksZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoZT0iT2JqZWN0IiksYCR7dH06ICR7ZX1gLnNsaWNlKDAsNTApKX1jbGFzcyBMVSBleHRlbmRzIHpWe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfWApO3RoaXMuX2NvbXBhcmVXaXRoPXR9d3JpdGVWYWx1ZSh0KXtsZXQgZTtpZih0aGlzLnZhbHVlPXQsQXJyYXkuaXNBcnJheSh0KSl7Y29uc3Qgbj10Lm1hcCgodD0+dGhpcy5fZ2V0T3B0aW9uSWQodCkpKTtlPSh0LGUpPT57dC5fc2V0U2VsZWN0ZWQobi5pbmRleE9mKGUudG9TdHJpbmcoKSk+LTEpfX1lbHNlIGU9KHQsZSk9Pnt0Ll9zZXRTZWxlY3RlZCghMSl9O3RoaXMuX29wdGlvbk1hcC5mb3JFYWNoKGUpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57Y29uc3Qgbj1bXTtpZih2b2lkIDAhPT1lLnNlbGVjdGVkT3B0aW9ucyl7Y29uc3QgdD1lLnNlbGVjdGVkT3B0aW9ucztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbz10Lml0ZW0oZSksaT10aGlzLl9nZXRPcHRpb25WYWx1ZShvLnZhbHVlKTtuLnB1c2goaSl9fWVsc2V7Y29uc3QgdD1lLm9wdGlvbnM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG89dC5pdGVtKGUpO2lmKG8uc2VsZWN0ZWQpe2NvbnN0IHQ9dGhpcy5fZ2V0T3B0aW9uVmFsdWUoby52YWx1ZSk7bi5wdXNoKHQpfX19dGhpcy52YWx1ZT1uLHQobil9fV9yZWdpc3Rlck9wdGlvbih0KXtjb25zdCBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLnNldChlLHQpLGV9X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCBlIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChlKS5fdmFsdWUsdCkpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IGU9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKGUpP3RoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlOnR9fUxVLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShMVSkpKShufHxMVSl9fSkoKSxMVS7JtWRpcj1sbyh7dHlwZTpMVSxzZWxlY3RvcnM6W1sic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25DaGFuZ2UoZS50YXJnZXQpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVG91Y2hlZCgpfSkpfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltwZyhbSFVdKSx4cF19KSxMVS5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTFUsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0W211bHRpcGxlXVtmb3JtQ29udHJvbE5hbWVdLHNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xdLHNlbGVjdFttdWx0aXBsZV1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W0hVXX1dfV0sbnVsbCx7Y29tcGFyZVdpdGg6W3t0eXBlOnh5fV19KTtjbGFzcyBCVXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZWxlbWVudD10LHRoaXMuX3JlbmRlcmVyPWUsdGhpcy5fc2VsZWN0PW4sdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMpKX1zZXQgbmdWYWx1ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShGVSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zZXQgdmFsdWUodCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShGVSh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUodCl9X3NldEVsZW1lbnRWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX1fc2V0U2VsZWN0ZWQodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gVlUodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6cGFyc2VJbnQodCwxMCl9QlUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJVKShTbShoZyksU20oQ2cpLFNtKExVLDkpKX0sQlUuybVkaXI9bG8oe3R5cGU6QlUsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSksQlUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6Q2d9LHt0eXBlOkxVLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpScn1dfV0sQlUucHJvcERlY29yYXRvcnM9e25nVmFsdWU6W3t0eXBlOnh5LGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6eHksYXJnczpbInZhbHVlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJvcHRpb24ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOkNnfSx7dHlwZTpMVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6UnJ9XX1dfSkse25nVmFsdWU6W3t0eXBlOnh5LGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6eHksYXJnczpbInZhbHVlIl19XX0pO2NsYXNzIGpVe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPW5qfWhhbmRsZUNoYW5nZXModCl7aWYodGhpcy5pbnB1dE5hbWUgaW4gdCl7Y29uc3QgZT10aGlzLm5vcm1hbGl6ZUlucHV0KHRbdGhpcy5pbnB1dE5hbWVdLmN1cnJlbnRWYWx1ZSk7dGhpcy5fdmFsaWRhdG9yPXRoaXMuY3JlYXRlVmFsaWRhdG9yKGUpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKHQpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19alUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGpVKX0salUuybVkaXI9bG8oe3R5cGU6alV9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGpVLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgVVU9e3Byb3ZpZGU6R1YsdXNlRXhpc3Rpbmc6cWUoKCgpPT5HVSkpLG11bHRpOiEwfTtjbGFzcyBHVSBleHRlbmRzIGpVe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmlucHV0TmFtZT0ibWF4Iix0aGlzLm5vcm1hbGl6ZUlucHV0PXQ9PnBhcnNlRmxvYXQodCksdGhpcy5jcmVhdGVWYWxpZGF0b3I9dD0+WFYodCl9bmdPbkNoYW5nZXModCl7dGhpcy5oYW5kbGVDaGFuZ2VzKHQpfX1HVS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoR1UpKSkobnx8R1UpfX0pKCksR1UuybVkaXI9bG8oe3R5cGU6R1Usc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWF4IiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1heCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pe2lmKDImZSl7bGV0IHQ7anAoIm1heCIsbnVsbCE9PSh0PW4ubWF4KSYmdm9pZCAwIT09dD90Om51bGwpfX0saW5wdXRzOnttYXg6Im1heCJ9LGZlYXR1cmVzOltwZyhbVVVdKSx4cCxCb119KSxHVS5wcm9wRGVjb3JhdG9ycz17bWF4Olt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEdVLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9bnVtYmVyXVttYXhdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1udW1iZXJdW21heF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9bnVtYmVyXVttYXhdW25nTW9kZWxdIixwcm92aWRlcnM6W1VVXSxob3N0OnsiW2F0dHIubWF4XSI6Im1heCA/PyBudWxsIn19XX1dLG51bGwse21heDpbe3R5cGU6eHl9XX0pO2NvbnN0IFdVPXtwcm92aWRlOkdWLHVzZUV4aXN0aW5nOnFlKCgoKT0+WVUpKSxtdWx0aTohMH07Y2xhc3MgWVUgZXh0ZW5kcyBqVXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pbnB1dE5hbWU9Im1pbiIsdGhpcy5ub3JtYWxpemVJbnB1dD10PT5wYXJzZUZsb2F0KHQpLHRoaXMuY3JlYXRlVmFsaWRhdG9yPXQ9PlpWKHQpfW5nT25DaGFuZ2VzKHQpe3RoaXMuaGFuZGxlQ2hhbmdlcyh0KX19WVUuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKFlVKSkpKG58fFlVKX19KSgpLFlVLsm1ZGlyPWxvKHt0eXBlOllVLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1pbiIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXtpZigyJmUpe2xldCB0O2pwKCJtaW4iLG51bGwhPT0odD1uLm1pbikmJnZvaWQgMCE9PXQ/dDpudWxsKX19LGlucHV0czp7bWluOiJtaW4ifSxmZWF0dXJlczpbcGcoW1dVXSkseHAsQm9dfSksWVUucHJvcERlY29yYXRvcnM9e21pbjpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChZVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVttaW5dW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtuZ01vZGVsXSIscHJvdmlkZXJzOltXVV0saG9zdDp7IlthdHRyLm1pbl0iOiJtaW4gPz8gbnVsbCJ9fV19XSxudWxsLHttaW46W3t0eXBlOnh5fV19KTtjb25zdCBxVT17cHJvdmlkZTpHVix1c2VFeGlzdGluZzpxZSgoKCk9PlhVKSksbXVsdGk6ITB9LFpVPXtwcm92aWRlOkdWLHVzZUV4aXN0aW5nOnFlKCgoKT0+S1UpKSxtdWx0aTohMH07Y2xhc3MgWFV7Y29uc3RydWN0b3IoKXt0aGlzLl9yZXF1aXJlZD0hMX1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPW51bGwhPXQmJiExIT09dCYmImZhbHNlIiE9YCR7dH1gLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP0tWKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fX1YVS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFUpfSxYVS7JtWRpcj1sbyh7dHlwZTpYVSxzZWxlY3RvcnM6W1siIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsiIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyIiLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZqcCgicmVxdWlyZWQiLG4ucmVxdWlyZWQ/IiI6bnVsbCl9LGlucHV0czp7cmVxdWlyZWQ6InJlcXVpcmVkIn0sZmVhdHVyZXM6W3BnKFtxVV0pXX0pLFhVLnByb3BEZWNvcmF0b3JzPXtyZXF1aXJlZDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiI6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sOm5vdChbdHlwZT1jaGVja2JveF0pW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltxVV0saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse3JlcXVpcmVkOlt7dHlwZTp4eX1dfSk7Y2xhc3MgS1UgZXh0ZW5kcyBYVXt2YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5yZXF1aXJlZD9KVih0KTpudWxsfX1LVS7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoS1UpKSkobnx8S1UpfX0pKCksS1UuybVkaXI9bG8oe3R5cGU6S1Usc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmanAoInJlcXVpcmVkIixuLnJlcXVpcmVkPyIiOm51bGwpfSxmZWF0dXJlczpbcGcoW1pVXSkseHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChLVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltaVV0saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLG51bGwsbnVsbCk7Y29uc3QgSlU9e3Byb3ZpZGU6R1YsdXNlRXhpc3Rpbmc6cWUoKCgpPT5RVSkpLG11bHRpOiEwfTtjbGFzcyBRVXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2VuYWJsZWQ9ITF9c2V0IGVtYWlsKHQpe3RoaXMuX2VuYWJsZWQ9IiI9PT10fHwhMD09PXR8fCJ0cnVlIj09PXQsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX2VuYWJsZWQ/UVYodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fVFVLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRVSl9LFFVLsm1ZGlyPWxvKHt0eXBlOlFVLHNlbGVjdG9yczpbWyIiLCJlbWFpbCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwiZW1haWwiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwiZW1haWwiLCIiLCJuZ01vZGVsIiwiIl1dLGlucHV0czp7ZW1haWw6ImVtYWlsIn0sZmVhdHVyZXM6W3BnKFtKVV0pXX0pLFFVLnByb3BEZWNvcmF0b3JzPXtlbWFpbDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChRVSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbZW1haWxdW2Zvcm1Db250cm9sTmFtZV0sW2VtYWlsXVtmb3JtQ29udHJvbF0sW2VtYWlsXVtuZ01vZGVsXSIscHJvdmlkZXJzOltKVV19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2VtYWlsOlt7dHlwZTp4eX1dfSk7Y29uc3QgJFU9e3Byb3ZpZGU6R1YsdXNlRXhpc3Rpbmc6cWUoKCgpPT50RykpLG11bHRpOiEwfTtjbGFzcyB0R3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3ZhbGlkYXRvcj1uan1uZ09uQ2hhbmdlcyh0KXsibWlubGVuZ3RoImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuZW5hYmxlZCgpP3RoaXMuX3ZhbGlkYXRvcih0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1fY3JlYXRlVmFsaWRhdG9yKCl7dGhpcy5fdmFsaWRhdG9yPXRoaXMuZW5hYmxlZCgpPyRWKFZVKHRoaXMubWlubGVuZ3RoKSk6bmp9ZW5hYmxlZCgpe3JldHVybiBudWxsIT10aGlzLm1pbmxlbmd0aH19dEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRHKX0sdEcuybVkaXI9bG8oe3R5cGU6dEcsc2VsZWN0b3JzOltbIiIsIm1pbmxlbmd0aCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibWlubGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsIm1pbmxlbmd0aCIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmanAoIm1pbmxlbmd0aCIsbi5lbmFibGVkKCk/bi5taW5sZW5ndGg6bnVsbCl9LGlucHV0czp7bWlubGVuZ3RoOiJtaW5sZW5ndGgifSxmZWF0dXJlczpbcGcoWyRVXSksQm9dfSksdEcucHJvcERlY29yYXRvcnM9e21pbmxlbmd0aDpbe3R5cGU6eHl9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh0Ryxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWlubGVuZ3RoXVtmb3JtQ29udHJvbE5hbWVdLFttaW5sZW5ndGhdW2Zvcm1Db250cm9sXSxbbWlubGVuZ3RoXVtuZ01vZGVsXSIscHJvdmlkZXJzOlskVV0saG9zdDp7IlthdHRyLm1pbmxlbmd0aF0iOiJlbmFibGVkKCkgPyBtaW5sZW5ndGggOiBudWxsIn19XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse21pbmxlbmd0aDpbe3R5cGU6eHl9XX0pO2NvbnN0IGVHPXtwcm92aWRlOkdWLHVzZUV4aXN0aW5nOnFlKCgoKT0+bkcpKSxtdWx0aTohMH07Y2xhc3Mgbkd7Y29uc3RydWN0b3IoKXt0aGlzLl92YWxpZGF0b3I9bmp9bmdPbkNoYW5nZXModCl7Im1heGxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLmVuYWJsZWQoKT90aGlzLl92YWxpZGF0b3IodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj10aGlzLmVuYWJsZWQoKT90aihWVSh0aGlzLm1heGxlbmd0aCkpOm5qfWVuYWJsZWQoKXtyZXR1cm4gbnVsbCE9dGhpcy5tYXhsZW5ndGh9fW5HLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuRyl9LG5HLsm1ZGlyPWxvKHt0eXBlOm5HLHNlbGVjdG9yczpbWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsIm1heGxlbmd0aCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJmpwKCJtYXhsZW5ndGgiLG4uZW5hYmxlZCgpP24ubWF4bGVuZ3RoOm51bGwpfSxpbnB1dHM6e21heGxlbmd0aDoibWF4bGVuZ3RoIn0sZmVhdHVyZXM6W3BnKFtlR10pLEJvXX0pLG5HLnByb3BEZWNvcmF0b3JzPXttYXhsZW5ndGg6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobkcsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21heGxlbmd0aF1bZm9ybUNvbnRyb2xOYW1lXSxbbWF4bGVuZ3RoXVtmb3JtQ29udHJvbF0sW21heGxlbmd0aF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbZUddLGhvc3Q6eyJbYXR0ci5tYXhsZW5ndGhdIjoiZW5hYmxlZCgpID8gbWF4bGVuZ3RoIDogbnVsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLHttYXhsZW5ndGg6W3t0eXBlOnh5fV19KTtjb25zdCBvRz17cHJvdmlkZTpHVix1c2VFeGlzdGluZzpxZSgoKCk9PmlHKSksbXVsdGk6ITB9O2NsYXNzIGlHe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPW5qfW5nT25DaGFuZ2VzKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj1laih0aGlzLnBhdHRlcm4pfX1pRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUcpfSxpRy7JtWRpcj1sbyh7dHlwZTppRyxzZWxlY3RvcnM6W1siIiwicGF0dGVybiIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwicGF0dGVybiIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJwYXR0ZXJuIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZqcCgicGF0dGVybiIsbi5wYXR0ZXJuP24ucGF0dGVybjpudWxsKX0saW5wdXRzOntwYXR0ZXJuOiJwYXR0ZXJuIn0sZmVhdHVyZXM6W3BnKFtvR10pLEJvXX0pLGlHLnByb3BEZWNvcmF0b3JzPXtwYXR0ZXJuOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGlHLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltwYXR0ZXJuXVtmb3JtQ29udHJvbE5hbWVdLFtwYXR0ZXJuXVtmb3JtQ29udHJvbF0sW3BhdHRlcm5dW25nTW9kZWxdIixwcm92aWRlcnM6W29HXSxob3N0OnsiW2F0dHIucGF0dGVybl0iOiJwYXR0ZXJuID8gcGF0dGVybiA6IG51bGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7cGF0dGVybjpbe3R5cGU6eHl9XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgYUc9W21VLElVLEJVLFZWLGZVLENVLEZWLHpVLExVLHlVLHhqLE9qLFhVLHRHLG5HLGlHLEtVLFFVLFlVLEdVXSxyRz1bcFUsbFUsaVVdLHNHPVt4VSxQVSxBVSxrVSxEVV07Y2xhc3MgbEd7fWxHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsRyl9LGxHLsm1bW9kPWFvKHt0eXBlOmxHfSksbEcuybVpbmo9dm4oe2ltcG9ydHM6W1toVV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsRyxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczphRyxpbXBvcnRzOltoVV0sZXhwb3J0czphR31dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKGxHLHtkZWNsYXJhdGlvbnM6W21VLElVLEJVLFZWLGZVLENVLEZWLHpVLExVLHlVLHhqLE9qLFhVLHRHLG5HLGlHLEtVLFFVLFlVLEdVXSxpbXBvcnRzOltoVV0sZXhwb3J0czpbbVUsSVUsQlUsVlYsZlUsQ1UsRlYselUsTFUseVUseGosT2osWFUsdEcsbkcsaUcsS1UsUVUsWVUsR1VdfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBjR3t9Y0cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGNHKX0sY0cuybVtb2Q9YW8oe3R5cGU6Y0d9KSxjRy7JtWluaj12bih7aW1wb3J0czpbbEddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChjRyxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpyRyxleHBvcnRzOltsRyxyR119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhjRyx7ZGVjbGFyYXRpb25zOltwVSxsVSxpVV0sZXhwb3J0czpbbEcscFUsbFUsaVVdfSk7Y2xhc3MgZEd7c3RhdGljIHdpdGhDb25maWcodCl7cmV0dXJue25nTW9kdWxlOmRHLHByb3ZpZGVyczpbe3Byb3ZpZGU6TVUsdXNlVmFsdWU6dC53YXJuT25OZ01vZGVsV2l0aEZvcm1Db250cm9sfV19fX1kRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZEcpfSxkRy7JtW1vZD1hbyh7dHlwZTpkR30pLGRHLsm1aW5qPXZuKHtpbXBvcnRzOltsR119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGRHLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltzR10sZXhwb3J0czpbbEcsc0ddfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZEcse2RlY2xhcmF0aW9uczpbeFUsUFUsQVUsa1UsRFVdLGV4cG9ydHM6W2xHLHhVLFBVLEFVLGtVLERVXX0pO2NsYXNzIHBHe2dyb3VwKHQsZT1udWxsKXtjb25zdCBuPXRoaXMuX3JlZHVjZUNvbnRyb2xzKHQpO2xldCBvLGk9bnVsbCxhPW51bGw7cmV0dXJuIG51bGwhPWUmJigoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiByKHQpe3JldHVybiB2b2lkIDAhPT10LmFzeW5jVmFsaWRhdG9yc3x8dm9pZCAwIT09dC52YWxpZGF0b3JzfHx2b2lkIDAhPT10LnVwZGF0ZU9ufSkoZSk/KGk9bnVsbCE9ZS52YWxpZGF0b3JzP2UudmFsaWRhdG9yczpudWxsLGE9bnVsbCE9ZS5hc3luY1ZhbGlkYXRvcnM/ZS5hc3luY1ZhbGlkYXRvcnM6bnVsbCxvPW51bGwhPWUudXBkYXRlT24/ZS51cGRhdGVPbjp2b2lkIDApOihpPW51bGwhPWUudmFsaWRhdG9yP2UudmFsaWRhdG9yOm51bGwsYT1udWxsIT1lLmFzeW5jVmFsaWRhdG9yP2UuYXN5bmNWYWxpZGF0b3I6bnVsbCkpLG5ldyB0VShuLHthc3luY1ZhbGlkYXRvcnM6YSx1cGRhdGVPbjpvLHZhbGlkYXRvcnM6aX0pfWNvbnRyb2wodCxlLG4pe3JldHVybiBuZXcgJGoodCxlLG4pfWFycmF5KHQsZSxuKXtjb25zdCBvPXQubWFwKCh0PT50aGlzLl9jcmVhdGVDb250cm9sKHQpKSk7cmV0dXJuIG5ldyBlVShvLGUsbil9X3JlZHVjZUNvbnRyb2xzKHQpe2NvbnN0IGU9e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKG49PntlW25dPXRoaXMuX2NyZWF0ZUNvbnRyb2wodFtuXSl9KSksZX1fY3JlYXRlQ29udHJvbCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mICRqfHx0IGluc3RhbmNlb2YgdFV8fHQgaW5zdGFuY2VvZiBlVT90OkFycmF5LmlzQXJyYXkodCk/dGhpcy5jb250cm9sKHRbMF0sdC5sZW5ndGg+MT90WzFdOm51bGwsdC5sZW5ndGg+Mj90WzJdOm51bGwpOnRoaXMuY29udHJvbCh0KX19cEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBHKX0scEcuybVwcm92PU1uKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHBHfSx0b2tlbjpwRyxwcm92aWRlZEluOmRHfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwRyxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46ZEd9XX1dLG51bGwsbnVsbCksCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpuZXcgT2coIjEyLjIuMSIpO2NvbnN0IG1HPVsidHJpZ2dlciJdLHVHPVsicGFuZWwiXTtmdW5jdGlvbiBmRyh0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDgpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLFN1KHQucGxhY2Vob2xkZXIpfX1mdW5jdGlvbiBnRyh0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDEyKSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoMSksU3UodC50cmlnZ2VyVmFsdWUpfX1mdW5jdGlvbiBoRyh0LGUpezEmdCYmWG0oMCwwLFsiKm5nU3dpdGNoQ2FzZSIsInRydWUiXSl9ZnVuY3Rpb24gYkcodCxlKXsxJnQmJihSbSgwLCJzcGFuIiw5KSxRcCgxLGdHLDIsMSwic3BhbiIsMTApLFFwKDIsaEcsMSwwLCJuZy1jb250ZW50IiwxMSksQW0oKSksMiZ0JiYoRG0oIm5nU3dpdGNoIiwhIVltKCkuY3VzdG9tVHJpZ2dlcikscmMoMiksRG0oIm5nU3dpdGNoQ2FzZSIsITApKX1mdW5jdGlvbiB5Ryh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMTMpLFJtKDEsImRpdiIsMTQsMTUpLFZtKCJAdHJhbnNmb3JtUGFuZWwuZG9uZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KG4udG9TdGF0ZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLl9oYW5kbGVLZXlkb3duKG4pfSkpLFhtKDMsMSksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJAdHJhbnNmb3JtUGFuZWxXcmFwIix2b2lkIDApLHJjKDEpLEF1KCJtYXQtc2VsZWN0LXBhbmVsICIsdC5fZ2V0UGFuZWxUaGVtZSgpLCIiKSxkdSgidHJhbnNmb3JtLW9yaWdpbiIsdC5fdHJhbnNmb3JtT3JpZ2luKSgiZm9udC1zaXplIix0Ll90cmlnZ2VyRm9udFNpemUsInB4IiksRG0oIm5nQ2xhc3MiLHQucGFuZWxDbGFzcykoIkB0cmFuc2Zvcm1QYW5lbCIsdC5tdWx0aXBsZT8ic2hvd2luZy1tdWx0aXBsZSI6InNob3dpbmciKSxqcCgiaWQiLHQuaWQrIi1wYW5lbCIpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsdC5tdWx0aXBsZSkoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5Iix0Ll9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCkpfX1jb25zdCBfRz1bW1sibWF0LXNlbGVjdC10cmlnZ2VyIl1dLCIqIl0sQ0c9e3RyYW5zZm9ybVBhbmVsV3JhcDpueCgidHJhbnNmb3JtUGFuZWxXcmFwIixbbHgoIiogPT4gdm9pZCIsZHgoIkB0cmFuc2Zvcm1QYW5lbCIsW2N4KCldLHtvcHRpb25hbDohMH0pKV0pLHRyYW5zZm9ybVBhbmVsOm54KCJ0cmFuc2Zvcm1QYW5lbCIsW3J4KCJ2b2lkIixheCh7dHJhbnNmb3JtOiJzY2FsZVkoMC44KSIsbWluV2lkdGg6IjEwMCUiLG9wYWNpdHk6MH0pKSxyeCgic2hvd2luZyIsYXgoe29wYWNpdHk6MSxtaW5XaWR0aDoiY2FsYygxMDAlICsgMzJweCkiLHRyYW5zZm9ybToic2NhbGVZKDEpIn0pKSxyeCgic2hvd2luZy1tdWx0aXBsZSIsYXgoe29wYWNpdHk6MSxtaW5XaWR0aDoiY2FsYygxMDAlICsgNjRweCkiLHRyYW5zZm9ybToic2NhbGVZKDEpIn0pKSxseCgidm9pZCA9PiAqIixveCgiMTIwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksbHgoIiogPT4gdm9pZCIsb3goIjEwMG1zIDI1bXMgbGluZWFyIixheCh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBNRz0wO2NvbnN0IHZHPTI1Nix4Rz1uZXcgR2EoIm1hdC1zZWxlY3Qtc2Nyb2xsLXN0cmF0ZWd5IiksT0c9bmV3IEdhKCJNQVRfU0VMRUNUX0NPTkZJRyIpLFBHPXtwcm92aWRlOnhHLGRlcHM6W3BMXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHdHKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfX07Y2xhc3Mga0d7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19Y29uc3QgU0c9UUkoJEkoS0kodEgoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPWUsdGhpcy5fcGFyZW50Rm9ybT1uLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1vLHRoaXMubmdDb250cm9sPWl9fSkpKSksREc9bmV3IEdhKCJNYXRTZWxlY3RUcmlnZ2VyIik7Y2xhc3MgRUd7fUVHLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFRyl9LEVHLsm1ZGlyPWxvKHt0eXBlOkVHLHNlbGVjdG9yczpbWyJtYXQtc2VsZWN0LXRyaWdnZXIiXV0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpERyx1c2VFeGlzdGluZzpFR31dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEVHLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1zZWxlY3QtdHJpZ2dlciIscHJvdmlkZXJzOlt7cHJvdmlkZTpERyx1c2VFeGlzdGluZzpFR31dfV19XSxudWxsLG51bGwpO2NsYXNzIFJHIGV4dGVuZHMgU0d7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1KXt2YXIgZixnLGg7c3VwZXIoaSxvLHIscyxjKSx0aGlzLl92aWV3cG9ydFJ1bGVyPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9uZ1pvbmU9bix0aGlzLl9kaXI9YSx0aGlzLl9wYXJlbnRGb3JtRmllbGQ9bCx0aGlzLl9saXZlQW5ub3VuY2VyPW0sdGhpcy5fZGVmYXVsdE9wdGlvbnM9dSx0aGlzLl9wYW5lbE9wZW49ITEsdGhpcy5fY29tcGFyZVdpdGg9KHQsZSk9PnQ9PT1lLHRoaXMuX3VpZD0ibWF0LXNlbGVjdC0iK01HKyssdGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5PW51bGwsdGhpcy5fZGVzdHJveT1uZXcgSSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl92YWx1ZUlkPSJtYXQtc2VsZWN0LXZhbHVlLSIrTUcrKyx0aGlzLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW09bmV3IEksdGhpcy5fb3ZlcmxheVBhbmVsQ2xhc3M9KG51bGw9PT0oZj10aGlzLl9kZWZhdWx0T3B0aW9ucyl8fHZvaWQgMD09PWY/dm9pZCAwOmYub3ZlcmxheVBhbmVsQ2xhc3MpfHwiIix0aGlzLl9mb2N1c2VkPSExLHRoaXMuY29udHJvbFR5cGU9Im1hdC1zZWxlY3QiLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmc9bnVsbCE9PShoPW51bGw9PT0oZz10aGlzLl9kZWZhdWx0T3B0aW9ucyl8fHZvaWQgMD09PWc/dm9pZCAwOmcuZGlzYWJsZU9wdGlvbkNlbnRlcmluZykmJnZvaWQgMCE9PWgmJmgsdGhpcy5hcmlhTGFiZWw9IiIsdGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzPVF0KCgoKT0+e2NvbnN0IHQ9dGhpcy5vcHRpb25zO3JldHVybiB0P3QuY2hhbmdlcy5waXBlKE5lKHQpLHplKCgoKT0+cmUoLi4udC5tYXAoKHQ9PnQub25TZWxlY3Rpb25DaGFuZ2UpKSkpKSk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoYmUoMSksemUoKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMpKSl9KSksdGhpcy5vcGVuZWRDaGFuZ2U9bmV3IExoLHRoaXMuX29wZW5lZFN0cmVhbT10aGlzLm9wZW5lZENoYW5nZS5waXBlKGNlKCh0PT50KSksSXQoKCgpPT57fSkpKSx0aGlzLl9jbG9zZWRTdHJlYW09dGhpcy5vcGVuZWRDaGFuZ2UucGlwZShjZSgodD0+IXQpKSxJdCgoKCk9Pnt9KSkpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBMaCx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBMaCx0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyksbnVsbCE9KG51bGw9PXU/dm9pZCAwOnUudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkmJih0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsPXUudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5PXAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCksdGhpcy50YWJJbmRleD1wYXJzZUludChkKXx8MCx0aGlzLmlkPXRoaXMuaWR9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZHx8dGhpcy5fcGFuZWxPcGVufWdldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD15eih0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfXNldCBtdWx0aXBsZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiQ2Fubm90IGNoYW5nZSBgbXVsdGlwbGVgIG1vZGUgb2Ygc2VsZWN0IGFmdGVyIGluaXRpYWxpemF0aW9uLiIpfSkoKTt0aGlzLl9tdWx0aXBsZT15eih0KX1nZXQgZGlzYWJsZU9wdGlvbkNlbnRlcmluZygpe3JldHVybiB0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nfXNldCBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nKHQpe3RoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmc9eXoodCl9Z2V0IGNvbXBhcmVXaXRoKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRofXNldCBjb21wYXJlV2l0aCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoImBjb21wYXJlV2l0aGAgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpfSkoKTt0aGlzLl9jb21wYXJlV2l0aD10LHRoaXMuX3NlbGVjdGlvbk1vZGVsJiZ0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXsodCE9PXRoaXMuX3ZhbHVlfHx0aGlzLl9tdWx0aXBsZSYmQXJyYXkuaXNBcnJheSh0KSkmJih0aGlzLm9wdGlvbnMmJnRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCksdGhpcy5fdmFsdWU9dCl9Z2V0IHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwoKXtyZXR1cm4gdGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbH1zZXQgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCh0KXt0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsPV96KHQpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dHx8dGhpcy5fdWlkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uSW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsPW5ldyBvRih0aGlzLm11bHRpcGxlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCksdGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nU3RyZWFtLnBpcGUoTWUoKSxJZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nKHRoaXMucGFuZWxPcGVuKSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2luaXRLZXlNYW5hZ2VyKCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKEllKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0LmFkZGVkLmZvckVhY2goKHQ9PnQuc2VsZWN0KCkpKSx0LnJlbW92ZWQuZm9yRWFjaCgodD0+dC5kZXNlbGVjdCgpKSl9KSksdGhpcy5vcHRpb25zLmNoYW5nZXMucGlwZShOZShudWxsKSxJZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Jlc2V0T3B0aW9ucygpLHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX0pKX1uZ0RvQ2hlY2soKXtjb25zdCB0PXRoaXMuX2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpO2lmKHQhPT10aGlzLl90cmlnZ2VyQXJpYUxhYmVsbGVkQnkpe2NvbnN0IGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT10LHQ/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCk6ZS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpfXRoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKX1uZ09uQ2hhbmdlcyh0KXt0LmRpc2FibGVkJiZ0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCksdC50eXBlYWhlYWREZWJvdW5jZUludGVydmFsJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95Lm5leHQoKSx0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX10b2dnbGUoKXt0aGlzLnBhbmVsT3Blbj90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9b3Blbigpe3RoaXMuX2Nhbk9wZW4oKSYmKHRoaXMuX3BhbmVsT3Blbj0hMCx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24obnVsbCksdGhpcy5faGlnaGxpZ2h0Q29ycmVjdE9wdGlvbigpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1jbG9zZSgpe3RoaXMuX3BhbmVsT3BlbiYmKHRoaXMuX3BhbmVsT3Blbj0hMSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKT8icnRsIjoibHRyIiksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fb25Ub3VjaGVkKCkpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHBhbmVsT3Blbigpe3JldHVybiB0aGlzLl9wYW5lbE9wZW59Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF19Z2V0IHRyaWdnZXJWYWx1ZSgpe2lmKHRoaXMuZW1wdHkpcmV0dXJuIiI7aWYodGhpcy5fbXVsdGlwbGUpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubWFwKCh0PT50LnZpZXdWYWx1ZSkpO3JldHVybiB0aGlzLl9pc1J0bCgpJiZ0LnJldmVyc2UoKSx0LmpvaW4oIiwgIil9cmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdLnZpZXdWYWx1ZX1faXNSdGwoKXtyZXR1cm4hIXRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWV9X2hhbmRsZUtleWRvd24odCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMucGFuZWxPcGVuP3RoaXMuX2hhbmRsZU9wZW5LZXlkb3duKHQpOnRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24odCkpfV9oYW5kbGVDbG9zZWRLZXlkb3duKHQpe2NvbnN0IGU9dC5rZXlDb2RlLG49ZT09PWh6fHxlPT09Z3p8fDM3PT09ZXx8Mzk9PT1lLG89ZT09PW16fHxlPT09ZnosaT10aGlzLl9rZXlNYW5hZ2VyO2lmKCFpLmlzVHlwaW5nKCkmJm8mJiFieih0KXx8KHRoaXMubXVsdGlwbGV8fHQuYWx0S2V5KSYmbil0LnByZXZlbnREZWZhdWx0KCksdGhpcy5vcGVuKCk7ZWxzZSBpZighdGhpcy5tdWx0aXBsZSl7Y29uc3QgZT10aGlzLnNlbGVjdGVkO2kub25LZXlkb3duKHQpO2NvbnN0IG49dGhpcy5zZWxlY3RlZDtuJiZlIT09biYmdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZShuLnZpZXdWYWx1ZSwxZTQpfX1faGFuZGxlT3BlbktleWRvd24odCl7Y29uc3QgZT10aGlzLl9rZXlNYW5hZ2VyLG49dC5rZXlDb2RlLG89bj09PWh6fHxuPT09Z3osaT1lLmlzVHlwaW5nKCk7aWYobyYmdC5hbHRLZXkpdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2UoKTtlbHNlIGlmKGl8fG4hPT1teiYmbiE9PWZ6fHwhZS5hY3RpdmVJdGVtfHxieih0KSlpZighaSYmdGhpcy5fbXVsdGlwbGUmJjY1PT09biYmdC5jdHJsS2V5KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10aGlzLm9wdGlvbnMuc29tZSgodD0+IXQuZGlzYWJsZWQmJiF0LnNlbGVjdGVkKSk7dGhpcy5vcHRpb25zLmZvckVhY2goKHQ9Pnt0LmRpc2FibGVkfHwoZT90LnNlbGVjdCgpOnQuZGVzZWxlY3QoKSl9KSl9ZWxzZXtjb25zdCBuPWUuYWN0aXZlSXRlbUluZGV4O2Uub25LZXlkb3duKHQpLHRoaXMuX211bHRpcGxlJiZvJiZ0LnNoaWZ0S2V5JiZlLmFjdGl2ZUl0ZW0mJmUuYWN0aXZlSXRlbUluZGV4IT09biYmZS5hY3RpdmVJdGVtLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLGUuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX1fb25Gb2N1cygpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLl9mb2N1c2VkPSEwLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uQmx1cigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5kaXNhYmxlZHx8dGhpcy5wYW5lbE9wZW58fCh0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9vbkF0dGFjaGVkKCl7dGhpcy5fb3ZlcmxheURpci5wb3NpdGlvbkNoYW5nZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuX3Bvc2l0aW9uaW5nU2V0dGxlZCgpfSkpfV9nZXRQYW5lbFRoZW1lKCl7cmV0dXJuIHRoaXMuX3BhcmVudEZvcm1GaWVsZD9gbWF0LSR7dGhpcy5fcGFyZW50Rm9ybUZpZWxkLmNvbG9yfWA6IiJ9Z2V0IGVtcHR5KCl7cmV0dXJuIXRoaXMuX3NlbGVjdGlvbk1vZGVsfHx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc0VtcHR5KCl9X2luaXRpYWxpemVTZWxlY3Rpb24oKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wudmFsdWU6dGhpcy5fdmFsdWUpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5mb3JFYWNoKCh0PT50LnNldEluYWN0aXZlU3R5bGVzKCkpKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHRoaXMubXVsdGlwbGUmJnQpe2lmKCFBcnJheS5pc0FycmF5KHQpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKX0pKCk7dC5mb3JFYWNoKCh0PT50aGlzLl9zZWxlY3RWYWx1ZSh0KSkpLHRoaXMuX3NvcnRWYWx1ZXMoKX1lbHNle2NvbnN0IGU9dGhpcy5fc2VsZWN0VmFsdWUodCk7ZT90aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZSk6dGhpcy5wYW5lbE9wZW58fHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSgtMSl9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3NlbGVjdFZhbHVlKHQpe2NvbnN0IGU9dGhpcy5vcHRpb25zLmZpbmQoKGU9PntpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKGUpKXJldHVybiExO3RyeXtyZXR1cm4gbnVsbCE9ZS52YWx1ZSYmdGhpcy5fY29tcGFyZVdpdGgoZS52YWx1ZSx0KX1jYXRjaCh0KXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2Fybih0KSwhMX19KSk7cmV0dXJuIGUmJnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChlKSxlfV9pbml0S2V5TWFuYWdlcigpe3RoaXMuX2tleU1hbmFnZXI9bmV3IHRJKHRoaXMub3B0aW9ucykud2l0aFR5cGVBaGVhZCh0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsKS53aXRoVmVydGljYWxPcmllbnRhdGlvbigpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKT8icnRsIjoibHRyIikud2l0aEhvbWVBbmRFbmQoKS53aXRoQWxsb3dlZE1vZGlmaWVyS2V5cyhbInNoaWZ0S2V5Il0pLHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUoSWUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhbmVsT3BlbiYmKCF0aGlzLm11bHRpcGxlJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0mJnRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKSx0aGlzLmZvY3VzKCksdGhpcy5jbG9zZSgpKX0pKSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKEllKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fcGFuZWxPcGVuJiZ0aGlzLnBhbmVsP3RoaXMuX3Njcm9sbE9wdGlvbkludG9WaWV3KHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4fHwwKTp0aGlzLl9wYW5lbE9wZW58fHRoaXMubXVsdGlwbGV8fCF0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW18fHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pKX1fcmVzZXRPcHRpb25zKCl7Y29uc3QgdD1yZSh0aGlzLm9wdGlvbnMuY2hhbmdlcyx0aGlzLl9kZXN0cm95KTt0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZShJZSh0KSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fb25TZWxlY3QodC5zb3VyY2UsdC5pc1VzZXJJbnB1dCksdC5pc1VzZXJJbnB1dCYmIXRoaXMubXVsdGlwbGUmJnRoaXMuX3BhbmVsT3BlbiYmKHRoaXMuY2xvc2UoKSx0aGlzLmZvY3VzKCkpfSkpLHJlKC4uLnRoaXMub3B0aW9ucy5tYXAoKHQ9PnQuX3N0YXRlQ2hhbmdlcykpKS5waXBlKEllKHQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfV9vblNlbGVjdCh0LGUpe2NvbnN0IG49dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KTtudWxsIT10LnZhbHVlfHx0aGlzLl9tdWx0aXBsZT8obiE9PXQuc2VsZWN0ZWQmJih0LnNlbGVjdGVkP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KSksZSYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMubXVsdGlwbGUmJih0aGlzLl9zb3J0VmFsdWVzKCksZSYmdGhpcy5mb2N1cygpKSk6KHQuZGVzZWxlY3QoKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLG51bGwhPXRoaXMudmFsdWUmJnRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXModC52YWx1ZSkpLG4hPT10aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpJiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfV9zb3J0VmFsdWVzKCl7aWYodGhpcy5tdWx0aXBsZSl7Y29uc3QgdD10aGlzLm9wdGlvbnMudG9BcnJheSgpO3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNvcnQoKChlLG4pPT50aGlzLnNvcnRDb21wYXJhdG9yP3RoaXMuc29ydENvbXBhcmF0b3IoZSxuLHQpOnQuaW5kZXhPZihlKS10LmluZGV4T2YobikpKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9fV9wcm9wYWdhdGVDaGFuZ2VzKHQpe2xldCBlPW51bGw7ZT10aGlzLm11bHRpcGxlP3RoaXMuc2VsZWN0ZWQubWFwKCh0PT50LnZhbHVlKSk6dGhpcy5zZWxlY3RlZD90aGlzLnNlbGVjdGVkLnZhbHVlOnQsdGhpcy5fdmFsdWU9ZSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZSksdGhpcy5fb25DaGFuZ2UoZSksdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLl9nZXRDaGFuZ2VFdmVudChlKSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2hpZ2hsaWdodENvcnJlY3RPcHRpb24oKXt0aGlzLl9rZXlNYW5hZ2VyJiYodGhpcy5lbXB0eT90aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpOnRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSkpfV9jYW5PcGVuKCl7dmFyIHQ7cmV0dXJuIXRoaXMuX3BhbmVsT3BlbiYmIXRoaXMuZGlzYWJsZWQmJihudWxsPT09KHQ9dGhpcy5vcHRpb25zKXx8dm9pZCAwPT09dD92b2lkIDA6dC5sZW5ndGgpPjB9Zm9jdXModCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCl7dmFyIHQ7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7Y29uc3QgZT1udWxsPT09KHQ9dGhpcy5fcGFyZW50Rm9ybUZpZWxkKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXRMYWJlbElkKCk7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/KGU/ZSsiICI6IiIpK3RoaXMuYXJpYUxhYmVsbGVkYnk6ZX1fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKXtyZXR1cm4gdGhpcy5wYW5lbE9wZW4mJnRoaXMuX2tleU1hbmFnZXImJnRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbT90aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uaWQ6bnVsbH1fZ2V0VHJpZ2dlckFyaWFMYWJlbGxlZGJ5KCl7dmFyIHQ7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7Y29uc3QgZT1udWxsPT09KHQ9dGhpcy5fcGFyZW50Rm9ybUZpZWxkKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXRMYWJlbElkKCk7bGV0IG49KGU/ZSsiICI6IiIpK3RoaXMuX3ZhbHVlSWQ7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnkmJihuKz0iICIrdGhpcy5hcmlhTGFiZWxsZWRieSksbn1fcGFuZWxEb25lQW5pbWF0aW5nKHQpe3RoaXMub3BlbmVkQ2hhbmdlLmVtaXQodCl9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfW9uQ29udGFpbmVyQ2xpY2soKXt0aGlzLmZvY3VzKCksdGhpcy5vcGVuKCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fcGFuZWxPcGVufHwhdGhpcy5lbXB0eXx8dGhpcy5fZm9jdXNlZCYmISF0aGlzLl9wbGFjZWhvbGRlcn19UkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJHKShTbSh1RiksU20oVWcpLFNtKGFfKSxTbShiSCksU20oaGcpLFNtKEhJLDgpLFNtKGlVLDgpLFNtKFBVLDgpLFNtKFJWLDgpLFNtKE1qLDEwKSxOYSgidGFiaW5kZXgiKSxTbSh4RyksU20oT0kpLFNtKE9HLDgpKX0sUkcuybVkaXI9bG8oe3R5cGU6Ukcsdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChtRyw1KSxRaCh1Ryw1KSxRaChnTCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi50cmlnZ2VyPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLnBhbmVsPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9vdmVybGF5RGlyPXQuZmlyc3QpfX0saW5wdXRzOnthcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0saWQ6ImlkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHJlcXVpcmVkOiJyZXF1aXJlZCIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOiJkaXNhYmxlT3B0aW9uQ2VudGVyaW5nIixjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgiLHZhbHVlOiJ2YWx1ZSIsdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbDoidHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCIscGFuZWxDbGFzczoicGFuZWxDbGFzcyIsYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsc29ydENvbXBhcmF0b3I6InNvcnRDb21wYXJhdG9yIn0sb3V0cHV0czp7b3BlbmVkQ2hhbmdlOiJvcGVuZWRDaGFuZ2UiLF9vcGVuZWRTdHJlYW06Im9wZW5lZCIsX2Nsb3NlZFN0cmVhbToiY2xvc2VkIixzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W3hwLEJvXX0pLFJHLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dUZ9LHt0eXBlOlVnfSx7dHlwZTphX30se3R5cGU6Ykh9LHt0eXBlOmhnfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTppVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpQVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpBVixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUlZdfV19LHt0eXBlOk1qLGRlY29yYXRvcnM6W3t0eXBlOkRyfSx7dHlwZTpTcn1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3hHXX1dfSx7dHlwZTpPSX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltPR119XX1dLFJHLnByb3BEZWNvcmF0b3JzPXt0cmlnZ2VyOlt7dHlwZTpaYSxhcmdzOlsidHJpZ2dlciJdfV0scGFuZWw6W3t0eXBlOlphLGFyZ3M6WyJwYW5lbCJdfV0sX292ZXJsYXlEaXI6W3t0eXBlOlphLGFyZ3M6W2dMXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOnh5fV0scGxhY2Vob2xkZXI6W3t0eXBlOnh5fV0scmVxdWlyZWQ6W3t0eXBlOnh5fV0sbXVsdGlwbGU6W3t0eXBlOnh5fV0sZGlzYWJsZU9wdGlvbkNlbnRlcmluZzpbe3R5cGU6eHl9XSxjb21wYXJlV2l0aDpbe3R5cGU6eHl9XSx2YWx1ZTpbe3R5cGU6eHl9XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOnh5fV0sdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbDpbe3R5cGU6eHl9XSxzb3J0Q29tcGFyYXRvcjpbe3R5cGU6eHl9XSxpZDpbe3R5cGU6eHl9XSxvcGVuZWRDaGFuZ2U6W3t0eXBlOk95fV0sX29wZW5lZFN0cmVhbTpbe3R5cGU6T3ksYXJnczpbIm9wZW5lZCJdfV0sX2Nsb3NlZFN0cmVhbTpbe3R5cGU6T3ksYXJnczpbImNsb3NlZCJdfV0sc2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpPeX1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpPeX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFJHLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1Rn0se3R5cGU6VWd9LHt0eXBlOmFffSx7dHlwZTpiSH0se3R5cGU6aGd9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOmlVLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlBVLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOkFWLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltSVl19XX0se3R5cGU6TWosZGVjb3JhdG9yczpbe3R5cGU6RHJ9LHt0eXBlOlNyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpqYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbeEddfV19LHt0eXBlOk9JfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W09HXX1dfV19KSx7YXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpPeX1dLF9vcGVuZWRTdHJlYW06W3t0eXBlOk95LGFyZ3M6WyJvcGVuZWQiXX1dLF9jbG9zZWRTdHJlYW06W3t0eXBlOk95LGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6T3l9XSx2YWx1ZUNoYW5nZTpbe3R5cGU6T3l9XSxpZDpbe3R5cGU6eHl9XSxwbGFjZWhvbGRlcjpbe3R5cGU6eHl9XSxyZXF1aXJlZDpbe3R5cGU6eHl9XSxtdWx0aXBsZTpbe3R5cGU6eHl9XSxkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOlt7dHlwZTp4eX1dLGNvbXBhcmVXaXRoOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOnh5fV0sdHJpZ2dlcjpbe3R5cGU6WmEsYXJnczpbInRyaWdnZXIiXX1dLHBhbmVsOlt7dHlwZTpaYSxhcmdzOlsicGFuZWwiXX1dLF9vdmVybGF5RGlyOlt7dHlwZTpaYSxhcmdzOltnTF19XSxwYW5lbENsYXNzOlt7dHlwZTp4eX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6eHl9XSxzb3J0Q29tcGFyYXRvcjpbe3R5cGU6eHl9XX0pO2NsYXNzIEFHIGV4dGVuZHMgUkd7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Njcm9sbFRvcD0wLHRoaXMuX3RyaWdnZXJGb250U2l6ZT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0idG9wIix0aGlzLl9vZmZzZXRZPTAsdGhpcy5fcG9zaXRpb25zPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9XX1fY2FsY3VsYXRlT3ZlcmxheVNjcm9sbCh0LGUsbil7Y29uc3Qgbz10aGlzLl9nZXRJdGVtSGVpZ2h0KCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KDAsbyp0LWUrby8yKSxuKX1uZ09uSW5pdCgpe3N1cGVyLm5nT25Jbml0KCksdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5waXBlKEllKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJih0aGlzLl90cmlnZ2VyUmVjdD10aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9KSl9b3Blbigpe3N1cGVyLl9jYW5PcGVuKCkmJihzdXBlci5vcGVuKCksdGhpcy5fdHJpZ2dlclJlY3Q9dGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fdHJpZ2dlckZvbnRTaXplPXBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUodGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQpLmZvbnRTaXplfHwiMCIpLHRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlQb3NpdGlvbigpLHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdHJpZ2dlckZvbnRTaXplJiZ0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlEaXIub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCYmKHRoaXMuX292ZXJsYXlEaXIub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZS5mb250U2l6ZT1gJHt0aGlzLl90cmlnZ2VyRm9udFNpemV9cHhgKX0pKSl9X3Njcm9sbE9wdGlvbkludG9WaWV3KHQpe2NvbnN0IGU9VkgodCx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25Hcm91cHMpLG49dGhpcy5fZ2V0SXRlbUhlaWdodCgpO3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9MD09PXQmJjE9PT1lPzA6akgoKHQrZSkqbixuLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AsdkcpfV9wb3NpdGlvbmluZ1NldHRsZWQoKXt0aGlzLl9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fc2Nyb2xsVG9wfV9wYW5lbERvbmVBbmltYXRpbmcodCl7dGhpcy5wYW5lbE9wZW4/dGhpcy5fc2Nyb2xsVG9wPTA6KHRoaXMuX292ZXJsYXlEaXIub2Zmc2V0WD0wLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSxzdXBlci5fcGFuZWxEb25lQW5pbWF0aW5nKHQpfV9nZXRDaGFuZ2VFdmVudCh0KXtyZXR1cm4gbmV3IGtHKHRoaXMsdCl9X2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRYKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpLG49dGhpcy5faXNSdGwoKSxvPXRoaXMubXVsdGlwbGU/NTY6MzI7bGV0IGk7aWYodGhpcy5tdWx0aXBsZSlpPTQwO2Vsc2UgaWYodGhpcy5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nKWk9MTY7ZWxzZXtsZXQgdD10aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXXx8dGhpcy5vcHRpb25zLmZpcnN0O2k9dCYmdC5ncm91cD8zMjoxNn1ufHwoaSo9LTEpO2NvbnN0IGE9MC0odC5sZWZ0K2ktKG4/bzowKSkscj10LnJpZ2h0K2ktZS53aWR0aCsobj8wOm8pO2E+MD9pKz1hKzg6cj4wJiYoaS09cis4KSx0aGlzLl9vdmVybGF5RGlyLm9mZnNldFg9TWF0aC5yb3VuZChpKSx0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX1fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFkodCxlLG4pe2NvbnN0IG89dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGk9KG8tdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yLGE9TWF0aC5mbG9vcih2Ry9vKTtsZXQgcjtyZXR1cm4gdGhpcy5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPzA6KHI9MD09PXRoaXMuX3Njcm9sbFRvcD90Km86dGhpcy5fc2Nyb2xsVG9wPT09bj8odC0odGhpcy5fZ2V0SXRlbUNvdW50KCktYSkpKm8rKG8tKHRoaXMuX2dldEl0ZW1Db3VudCgpKm8tdkcpJW8pOmUtby8yLE1hdGgucm91bmQoLTEqci1pKSl9X2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KHQpe2NvbnN0IGU9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLG49dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxvPXRoaXMuX3RyaWdnZXJSZWN0LnRvcC04LGk9bi5oZWlnaHQtdGhpcy5fdHJpZ2dlclJlY3QuYm90dG9tLTgsYT1NYXRoLmFicyh0aGlzLl9vZmZzZXRZKSxyPU1hdGgubWluKHRoaXMuX2dldEl0ZW1Db3VudCgpKmUsdkcpLWEtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0O3I+aT90aGlzLl9hZGp1c3RQYW5lbFVwKHIsaSk6YT5vP3RoaXMuX2FkanVzdFBhbmVsRG93bihhLG8sdCk6dGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKX1fYWRqdXN0UGFuZWxVcCh0LGUpe2NvbnN0IG49TWF0aC5yb3VuZCh0LWUpO3RoaXMuX3Njcm9sbFRvcC09bix0aGlzLl9vZmZzZXRZLT1uLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPD0wJiYodGhpcy5fc2Nyb2xsVG9wPTAsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0iNTAlIGJvdHRvbSAwcHgiKX1fYWRqdXN0UGFuZWxEb3duKHQsZSxuKXtjb25zdCBvPU1hdGgucm91bmQodC1lKTtpZih0aGlzLl9zY3JvbGxUb3ArPW8sdGhpcy5fb2Zmc2V0WSs9byx0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpLHRoaXMuX3Njcm9sbFRvcD49bilyZXR1cm4gdGhpcy5fc2Nyb2xsVG9wPW4sdGhpcy5fb2Zmc2V0WT0wLHZvaWQodGhpcy5fdHJhbnNmb3JtT3JpZ2luPSI1MCUgdG9wIDBweCIpfV9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKXtjb25zdCB0PXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxlPXRoaXMuX2dldEl0ZW1Db3VudCgpLG49TWF0aC5taW4oZSp0LHZHKSxvPWUqdC1uO2xldCBpO2k9dGhpcy5lbXB0eT8wOk1hdGgubWF4KHRoaXMub3B0aW9ucy50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXSksMCksaSs9VkgoaSx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25Hcm91cHMpO2NvbnN0IGE9bi8yO3RoaXMuX3Njcm9sbFRvcD10aGlzLl9jYWxjdWxhdGVPdmVybGF5U2Nyb2xsKGksYSxvKSx0aGlzLl9vZmZzZXRZPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKGksYSxvKSx0aGlzLl9jaGVja092ZXJsYXlXaXRoaW5WaWV3cG9ydChvKX1fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpe2NvbnN0IHQ9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGU9KHQtdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yO3JldHVybmA1MCUgJHtNYXRoLmFicyh0aGlzLl9vZmZzZXRZKS1lK3QvMn1weCAwcHhgfV9nZXRJdGVtSGVpZ2h0KCl7cmV0dXJuIDMqdGhpcy5fdHJpZ2dlckZvbnRTaXplfV9nZXRJdGVtQ291bnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCt0aGlzLm9wdGlvbkdyb3Vwcy5sZW5ndGh9fUFHLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShBRykpKShufHxBRyl9fSkoKSxBRy7JtWNtcD10byh7dHlwZTpBRyxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJigkaChvLERHLDUpLCRoKG8sQkgsNSksJGgobyx6SCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5jdXN0b21UcmlnZ2VyPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLm9wdGlvbnM9dCksSmgodD10YigpKSYmKG4ub3B0aW9uR3JvdXBzPXQpfX0saG9zdEF0dHJzOlsicm9sZSIsImNvbWJvYm94IiwiYXJpYS1hdXRvY29tcGxldGUiLCJub25lIiwiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1zZWxlY3QiXSxob3N0VmFyczoyMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25Gb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJsdXIoKX0pKSwyJmUmJihqcCgiaWQiLG4uaWQpKCJ0YWJpbmRleCIsbi50YWJJbmRleCkoImFyaWEtY29udHJvbHMiLG4ucGFuZWxPcGVuP24uaWQrIi1wYW5lbCI6bnVsbCkoImFyaWEtZXhwYW5kZWQiLG4ucGFuZWxPcGVuKSgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLXJlcXVpcmVkIixuLnJlcXVpcmVkLnRvU3RyaW5nKCkpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uX2FyaWFEZXNjcmliZWRieXx8bnVsbCkoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsbi5fZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKSkscHUoIm1hdC1zZWxlY3QtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2VsZWN0LWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoIm1hdC1zZWxlY3QtcmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJtYXQtc2VsZWN0LWVtcHR5IixuLmVtcHR5KSgibWF0LXNlbGVjdC1tdWx0aXBsZSIsbi5tdWx0aXBsZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRTZWxlY3QiXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOmJWLHVzZUV4aXN0aW5nOkFHfSx7cHJvdmlkZTpSSCx1c2VFeGlzdGluZzpBR31dKSx4cF0sbmdDb250ZW50U2VsZWN0b3JzOlsibWF0LXNlbGVjdC10cmlnZ2VyIiwiKiJdLGRlY2xzOjksdmFyczoxMixjb25zdHM6W1siY2RrLW92ZXJsYXktb3JpZ2luIiwiIiwxLCJtYXQtc2VsZWN0LXRyaWdnZXIiLDMsImNsaWNrIl0sWyJvcmlnaW4iLCJjZGtPdmVybGF5T3JpZ2luIiwidHJpZ2dlciIsIiJdLFsxLCJtYXQtc2VsZWN0LXZhbHVlIiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIl0sWzEsIm1hdC1zZWxlY3QtYXJyb3ciXSxbImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiLCJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSIsImJhY2tkcm9wQ2xpY2siLCJhdHRhY2giLCJkZXRhY2giXSxbMSwibWF0LXNlbGVjdC1wbGFjZWhvbGRlciIsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LW1pbi1saW5lIiw0LCJuZ1N3aXRjaERlZmF1bHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC1wYW5lbC13cmFwIl0sWyJyb2xlIiwibGlzdGJveCIsInRhYmluZGV4IiwiLTEiLDMsIm5nQ2xhc3MiLCJrZXlkb3duIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoWm0oX0cpLFJtKDAsImRpdiIsMCwxKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlKCl9KSksUm0oMywiZGl2IiwyKSxRcCg0LGZHLDIsMSwic3BhbiIsMyksUXAoNSxiRywzLDIsInNwYW4iLDQpLEFtKCksUm0oNiwiZGl2Iiw1KSxUbSg3LCJkaXYiLDYpLEFtKCksQW0oKSxRcCg4LHlHLDQsMTQsIm5nLXRlbXBsYXRlIiw3KSxWbSgiYmFja2Ryb3BDbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jbG9zZSgpfSkpKCJhdHRhY2giLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uQXR0YWNoZWQoKX0pKSgiZGV0YWNoIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmNsb3NlKCl9KSkpLDImZSl7Y29uc3QgdD0kcCgxKTtqcCgiYXJpYS1vd25zIixuLnBhbmVsT3Blbj9uLmlkKyItcGFuZWwiOm51bGwpLHJjKDMpLERtKCJuZ1N3aXRjaCIsbi5lbXB0eSksanAoImlkIixuLl92YWx1ZUlkKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIiwhMCkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsITEpLHJjKDMpLERtKCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsbi5fb3ZlcmxheVBhbmVsQ2xhc3MpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLG4uX3Njcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsdCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixuLnBhbmVsT3BlbikoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLG4uX3Bvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsbnVsbD09bi5fdHJpZ2dlclJlY3Q/bnVsbDpuLl90cmlnZ2VyUmVjdC53aWR0aCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIixuLl9vZmZzZXRZKX19LGRpcmVjdGl2ZXM6W2ZMLGZNLGdNLGdMLGhNLGFNXSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltDRy50cmFuc2Zvcm1QYW5lbFdyYXAsQ0cudHJhbnNmb3JtUGFuZWxdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLEFHLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpZYSxhcmdzOltCSCx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbkdyb3Vwczpbe3R5cGU6WWEsYXJnczpbekgse2Rlc2NlbmRhbnRzOiEwfV19XSxjdXN0b21UcmlnZ2VyOlt7dHlwZTpxYSxhcmdzOltER119XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChBRyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0IixleHBvcnRBczoibWF0U2VsZWN0Iix0ZW1wbGF0ZTonXHgzYyEtLVxuIE5vdGUgdGhhdCB0aGUgc2VsZWN0IHRyaWdnZXIgZWxlbWVudCBzcGVjaWZpZXMgYGFyaWEtb3duc2AgcG9pbnRpbmcgdG8gdGhlIGxpc3Rib3ggb3ZlcmxheS5cbiBXaGlsZSBhcmlhLW93bnMgaXMgbm90IHJlcXVpcmVkIGZvciB0aGUgQVJJQSAxLjIgYHJvbGU9ImNvbWJvYm94ImAgaW50ZXJhY3Rpb24gcGF0dGVybixcbiBpdCBmaXhlcyBhbiBpc3N1ZSB3aXRoIFZvaWNlT3ZlciB3aGVuIHRoZSBzZWxlY3QgYXBwZWFycyBpbnNpZGUgb2YgYW4gYGFyaWEtbW9kZWw9InRydWUiYFxuIGVsZW1lbnQgKGUuZy4gYSBkaWFsb2cpLiBXaXRob3V0IHRoaXMgYGFyaWEtb3duc2AsIHRoZSBgYXJpYS1tb2RhbGAgb24gYSBkaWFsb2cgcHJldmVudHNcbiBWb2ljZU92ZXIgZnJvbSAic2VlaW5nIiB0aGUgc2VsZWN0XCdzIGxpc3Rib3ggb3ZlcmxheSBmb3IgYXJpYS1hY3RpdmVkZXNjZW5kYW50LlxuIFVzaW5nIGBhcmlhLW93bnNgIHJlLXBhcmVudHMgdGhlIHNlbGVjdCBvdmVybGF5IHNvIHRoYXQgaXQgd29ya3MgYWdhaW4uXG4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIwNjk0XG4tLVx4M2VcbjxkaXYgY2RrLW92ZXJsYXktb3JpZ2luXG4gICAgIFthdHRyLmFyaWEtb3duc109InBhbmVsT3BlbiA/IGlkICsgXCctcGFuZWxcJyA6IG51bGwiXG4gICAgIGNsYXNzPSJtYXQtc2VsZWN0LXRyaWdnZXIiXG4gICAgIChjbGljayk9InRvZ2dsZSgpIlxuICAgICAjb3JpZ2luPSJjZGtPdmVybGF5T3JpZ2luIlxuICAgICAjdHJpZ2dlcj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZSIgW25nU3dpdGNoXT0iZW1wdHkiIFthdHRyLmlkXT0iX3ZhbHVlSWQiPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiICpuZ1N3aXRjaENhc2U9InRydWUiPnt7cGxhY2Vob2xkZXJ9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiAqbmdTd2l0Y2hDYXNlPSJmYWxzZSIgW25nU3dpdGNoXT0iISFjdXN0b21UcmlnZ2VyIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LW1pbi1saW5lIiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dHJpZ2dlclZhbHVlfX08L3NwYW4+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1zZWxlY3QtdHJpZ2dlciIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIj48ZGl2IGNsYXNzPSJtYXQtc2VsZWN0LWFycm93Ij48L2Rpdj48L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgY2RrLWNvbm5lY3RlZC1vdmVybGF5XG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25cbiAgY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXG4gIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzXT0iX292ZXJsYXlQYW5lbENsYXNzIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5XT0iX3Njcm9sbFN0cmF0ZWd5IlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09Im9yaWdpbiJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT0icGFuZWxPcGVuIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109Il9wb3NpdGlvbnMiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPSJfdHJpZ2dlclJlY3Q/LndpZHRoISJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZXT0iX29mZnNldFkiXG4gIChiYWNrZHJvcENsaWNrKT0iY2xvc2UoKSJcbiAgKGF0dGFjaCk9Il9vbkF0dGFjaGVkKCkiXG4gIChkZXRhY2gpPSJjbG9zZSgpIj5cbiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1wYW5lbC13cmFwIiBbQHRyYW5zZm9ybVBhbmVsV3JhcF0+XG4gICAgPGRpdlxuICAgICAgI3BhbmVsXG4gICAgICByb2xlPSJsaXN0Ym94IlxuICAgICAgdGFiaW5kZXg9Ii0xIlxuICAgICAgY2xhc3M9Im1hdC1zZWxlY3QtcGFuZWwge3sgX2dldFBhbmVsVGhlbWUoKSB9fSJcbiAgICAgIFthdHRyLmlkXT0iaWQgKyBcJy1wYW5lbFwnIlxuICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPSJtdWx0aXBsZSJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCkiXG4gICAgICBbbmdDbGFzc109InBhbmVsQ2xhc3MiXG4gICAgICBbQHRyYW5zZm9ybVBhbmVsXT0ibXVsdGlwbGUgPyBcJ3Nob3dpbmctbXVsdGlwbGVcJyA6IFwnc2hvd2luZ1wnIlxuICAgICAgKEB0cmFuc2Zvcm1QYW5lbC5kb25lKT0iX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5uZXh0KCRldmVudC50b1N0YXRlKSJcbiAgICAgIFtzdHlsZS50cmFuc2Zvcm1PcmlnaW5dPSJfdHJhbnNmb3JtT3JpZ2luIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZS5weF09Il90cmlnZ2VyRm9udFNpemUiXG4gICAgICAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4nLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsaG9zdDp7cm9sZToiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSI6Im5vbmUiLCJhcmlhLWhhc3BvcHVwIjoidHJ1ZSIsY2xhc3M6Im1hdC1zZWxlY3QiLCJbYXR0ci5pZF0iOiJpZCIsIlthdHRyLnRhYmluZGV4XSI6InRhYkluZGV4IiwiW2F0dHIuYXJpYS1jb250cm9sc10iOidwYW5lbE9wZW4gPyBpZCArICItcGFuZWwiIDogbnVsbCcsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoicGFuZWxPcGVuIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJfYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiLCJbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIjoiX2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCkiLCJbY2xhc3MubWF0LXNlbGVjdC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2VsZWN0LWludmFsaWRdIjoiZXJyb3JTdGF0ZSIsIltjbGFzcy5tYXQtc2VsZWN0LXJlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2NsYXNzLm1hdC1zZWxlY3QtZW1wdHldIjoiZW1wdHkiLCJbY2xhc3MubWF0LXNlbGVjdC1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIoZm9jdXMpIjoiX29uRm9jdXMoKSIsIihibHVyKSI6Il9vbkJsdXIoKSJ9LGFuaW1hdGlvbnM6W0NHLnRyYW5zZm9ybVBhbmVsV3JhcCxDRy50cmFuc2Zvcm1QYW5lbF0scHJvdmlkZXJzOlt7cHJvdmlkZTpiVix1c2VFeGlzdGluZzpBR30se3Byb3ZpZGU6UkgsdXNlRXhpc3Rpbmc6QUd9XSxzdHlsZXM6WycubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9XG4nXX1dfV0sbnVsbCx7b3B0aW9uczpbe3R5cGU6WWEsYXJnczpbQkgse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25Hcm91cHM6W3t0eXBlOllhLGFyZ3M6W3pILHtkZXNjZW5kYW50czohMH1dfV0sY3VzdG9tVHJpZ2dlcjpbe3R5cGU6cWEsYXJnczpbREddfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFRHe31mdW5jdGlvbiBORyh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsInNwYW4iLDUpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUobil7aGkodCk7Y29uc3Qgbz1ZbSgpLiRpbXBsaWNpdDtyZXR1cm4gWW0oKS5vbkFjdGl2ZVBsdWdpblNlbGVjdGlvbihuLG8uaWQpfSkpLGt1KDEpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCkuJGltcGxpY2l0O2pwKCJkYXRhLXBsdWdpbi1pZCIsdC5pZCkscmMoMSksRHUoIiAiLHQudGFiX25hbWUsIiAiKX19ZnVuY3Rpb24gekcodCxlKXsxJnQmJihSbSgwLCJtYXQtdGFiIiwzKSxRcCgxLE5HLDIsMiwibmctdGVtcGxhdGUiLDQpLEFtKCkpLDImdCYmRG0oImRpc2FibGVkIiwhZS4kaW1wbGljaXQuZW5hYmxlZCl9ZnVuY3Rpb24gSUcodCxlKXtpZigxJnQmJihSbSgwLCJtYXQtb3B0aW9uIiw5KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RG0oInZhbHVlIix0LmlkKSxqcCgiZGF0YS1wbHVnaW4taWQiLHQuaWQpLHJjKDEpLER1KCIgIix0LnRhYl9uYW1lLCIgIil9fWZ1bmN0aW9uIEhHKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwibWF0LWZvcm0tZmllbGQiLDYpLFJtKDEsIm1hdC1sYWJlbCIpLGt1KDIsIkluYWN0aXZlIiksQW0oKSxSbSgzLCJtYXQtc2VsZWN0Iiw3KSxWbSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vbkRpc2FibGVkUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZChuKX0pKSxRcCg0LElHLDIsMywibWF0LW9wdGlvbiIsOCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO3JjKDMpLERtKCJ2YWx1ZSIsdC5zZWxlY3RlZFBsdWdpbikscmMoMSksRG0oIm5nRm9yT2YiLHQuZGlzYWJsZWRQbHVnaW5zKX19VEcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRHKX0sVEcuybVtb2Q9YW8oe3R5cGU6VEd9KSxURy7JtWluaj12bih7cHJvdmlkZXJzOltQR10saW1wb3J0czpbW1dNLHlMLFVILFhJXSx5RixUVixVSCxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFRHLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV00seUwsVUgsWEldLGV4cG9ydHM6W3lGLFRWLEFHLEVHLFVILFhJXSxkZWNsYXJhdGlvbnM6W0FHLEVHXSxwcm92aWRlcnM6W1BHXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFRHLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bQUcsRUddfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dNLHlMLFVILFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt5RixUVixBRyxFRyxVSCxYSV19fSk7Y2xhc3MgRkd7Y29uc3RydWN0b3IoKXt0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZD1uZXcgTGh9Z2V0QWN0aXZlUGx1Z2luSW5kZXgoKXtyZXR1cm4gdGhpcy5hY3RpdmVQbHVnaW5zLmZpbmRJbmRleCgoKHtpZDp0fSk9PnQ9PT10aGlzLnNlbGVjdGVkUGx1Z2luKSl9b25BY3RpdmVQbHVnaW5TZWxlY3Rpb24odCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZSl9b25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQodCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0LnZhbHVlKX19RkcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZHKX0sRkcuybVjbXA9dG8oe3R5cGU6Rkcsc2VsZWN0b3JzOltbInBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5zOiJhY3RpdmVQbHVnaW5zIixkaXNhYmxlZFBsdWdpbnM6ImRpc2FibGVkUGx1Z2lucyIsc2VsZWN0ZWRQbHVnaW46InNlbGVjdGVkUGx1Z2luIn0sb3V0cHV0czp7b25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOiJvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQifSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1siYW5pbWF0aW9uRHVyYXRpb24iLCIxMDBtcyIsMSwiYWN0aXZlLXBsdWdpbi1saXN0IiwzLCJzZWxlY3RlZEluZGV4Il0sWzMsImRpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImZsb2F0TGFiZWwiLCJuZXZlciIsNCwibmdJZiJdLFszLCJkaXNhYmxlZCJdLFsibWF0LXRhYi1sYWJlbCIsIiJdLFsxLCJwbHVnaW4tbmFtZSIsMywiY2xpY2siXSxbImZsb2F0TGFiZWwiLCJuZXZlciJdLFszLCJ2YWx1ZSIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtYXQtdGFiLWdyb3VwIiwwKSxRcCgxLHpHLDIsMSwibWF0LXRhYiIsMSksQW0oKSxRcCgyLEhHLDUsMiwibWF0LWZvcm0tZmllbGQiLDIpKSwyJmUmJihEbSgic2VsZWN0ZWRJbmRleCIsbi5nZXRBY3RpdmVQbHVnaW5JbmRleCgpKSxyYygxKSxEbSgibmdGb3JPZiIsbi5hY3RpdmVQbHVnaW5zKSxyYygxKSxEbSgibmdJZiIsbi5kaXNhYmxlZFBsdWdpbnMubGVuZ3RoPjApKX0sZGlyZWN0aXZlczpbRkIsbE0sZE0sU0IsUEIsQVYsdlYsQUcsQkhdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17ZmxleDowIDA7bWFyZ2luLXRvcDo1cHg7d2lkdGg6MTMwcHh9bWF0LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmFjdGl2ZS1wbHVnaW4tbGlzdFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpzdHJldGNoO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3c6aGlkZGVufS5wbHVnaW4tbmFtZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjAgMTJweDt3aWR0aDoxMDAlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QubWF0LXByaW1hcnkgLm1hdC10YWItbGlzdCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1saW5re2NvbG9yOmluaGVyaXQ7b3BhY2l0eTouN31bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItbGFiZWwtYWN0aXZlLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1sYWJlbC1hY3RpdmV7b3BhY2l0eToxfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWR7dmlzaWJpbGl0eTpoaWRkZW59W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1kaXNhYmxlZHtkaXNwbGF5Om5vbmV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWxpc3QsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItaGVhZGVyLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVscywgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHtoZWlnaHQ6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo0OHB4O3BhZGRpbmc6MDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2hlaWdodDoxMDAlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGlzdHtwYWRkaW5nOjAgMzZweH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpmaXJzdC1jaGlsZCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1sYWJlbC1jb250YWluZXIsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Omxhc3QtY2hpbGR7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46Zmlyc3QtY2hpbGQsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItbGFiZWwtY29udGFpbmVye2xlZnQ6MH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpsYXN0LWNoaWxkLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lcntyaWdodDowfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEZHLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3BsdWdpbl9zZWxlY3Rvcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9wbHVnaW5fc2VsZWN0b3JfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHthY3RpdmVQbHVnaW5zOlt7dHlwZTp4eX1dLGRpc2FibGVkUGx1Z2luczpbe3R5cGU6eHl9XSxzZWxlY3RlZFBsdWdpbjpbe3R5cGU6eHl9XSxvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQ6W3t0eXBlOk95fV19KTtjb25zdCBMRz1adyh2UiwodD0+T2JqZWN0LmtleXModCkubWFwKChlPT5PYmplY3QuYXNzaWduKHt9LHtpZDplfSx0W2VdKSkpKSksQkc9WncoTEcsKHQ9PnQuZmlsdGVyKCh0PT4hdC5lbmFibGVkKSkpKTtjbGFzcyBWR3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVQbHVnaW4kPXRoaXMuc3RvcmUucGlwZShGdyhNUikpLHRoaXMucGx1Z2lucyQ9dGhpcy5zdG9yZS5waXBlKEZ3KExHKSksdGhpcy5kaXNhYmxlZFBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZShGdyhCRykpfW9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goX0Uoe3BsdWdpbjp0fSkpfX1mdW5jdGlvbiBqRyh0LGUpe31WRy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VkcpKFNtKEl3KSl9LFZHLsm1Y21wPXRvKHt0eXBlOlZHLHNlbGVjdG9yczpbWyJwbHVnaW4tc2VsZWN0b3IiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywiYWN0aXZlUGx1Z2lucyIsImRpc2FibGVkUGx1Z2lucyIsInNlbGVjdGVkUGx1Z2luIiwib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50IiwwKSxWbSgib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBsdWdpblNlbGVjdGlvbkNoYW5nZShlKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJhY3RpdmVQbHVnaW5zIixUaCgxLDMsbi5wbHVnaW5zJCkpKCJkaXNhYmxlZFBsdWdpbnMiLFRoKDIsNSxuLmRpc2FibGVkUGx1Z2lucyQpKSgic2VsZWN0ZWRQbHVnaW4iLFRoKDMsNyxuLmFjdGl2ZVBsdWdpbiQpKX0sZGlyZWN0aXZlczpbRkddLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWRyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJwbHVnaW4tc2VsZWN0b3IiLHRlbXBsYXRlOidcbiAgICA8cGx1Z2luLXNlbGVjdG9yLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZVBsdWdpbnNdPSJwbHVnaW5zJCB8IGFzeW5jIlxuICAgICAgW2Rpc2FibGVkUGx1Z2luc109ImRpc2FibGVkUGx1Z2lucyQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZFBsdWdpbl09ImFjdGl2ZVBsdWdpbiQgfCBhc3luYyJcbiAgICAgIChvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQpPSJvblBsdWdpblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpIlxuICAgID48L3BsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgVUd7Y29uc3RydWN0b3IoKXt0aGlzLnJvbGU9ImRpYWxvZyIsdGhpcy5wYW5lbENsYXNzPSIiLHRoaXMuaGFzQmFja2Ryb3A9ITAsdGhpcy5iYWNrZHJvcENsYXNzPSIiLHRoaXMuZGlzYWJsZUNsb3NlPSExLHRoaXMud2lkdGg9IiIsdGhpcy5oZWlnaHQ9IiIsdGhpcy5tYXhXaWR0aD0iODB2dyIsdGhpcy5kYXRhPW51bGwsdGhpcy5hcmlhRGVzY3JpYmVkQnk9bnVsbCx0aGlzLmFyaWFMYWJlbGxlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWw9bnVsbCx0aGlzLmF1dG9Gb2N1cz0hMCx0aGlzLnJlc3RvcmVGb2N1cz0hMCx0aGlzLmNsb3NlT25OYXZpZ2F0aW9uPSEwfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgR0c9e2RpYWxvZ0NvbnRhaW5lcjpueCgiZGlhbG9nQ29udGFpbmVyIixbcngoInZvaWQsIGV4aXQiLGF4KHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJzY2FsZSgwLjcpIn0pKSxyeCgiZW50ZXIiLGF4KHt0cmFuc2Zvcm06Im5vbmUifSkpLGx4KCIqID0+IGVudGVyIixveCgiMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLGF4KHt0cmFuc2Zvcm06Im5vbmUiLG9wYWNpdHk6MX0pKSksbHgoIiogPT4gdm9pZCwgKiA9PiBleGl0IixveCgiNzVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSkiLGF4KHtvcGFjaXR5OjB9KSkpXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBXRygpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBkaWFsb2cgY29udGVudCBhZnRlciBjb250ZW50IGlzIGFscmVhZHkgYXR0YWNoZWQiKX1jbGFzcyBZRyBleHRlbmRzIFBGe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXtzdXBlcigpLHRoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c1RyYXBGYWN0b3J5PWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9jb25maWc9aSx0aGlzLl9mb2N1c01vbml0b3I9YSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQ9bmV3IExoLHRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkPW51bGwsdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGU9bnVsbCx0aGlzLmF0dGFjaERvbVBvcnRhbD10PT4odGhpcy5fcG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmV0coKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHQpKSx0aGlzLl9hcmlhTGFiZWxsZWRCeT1pLmFyaWFMYWJlbGxlZEJ5fHxudWxsLHRoaXMuX2RvY3VtZW50PW99X2luaXRpYWxpemVXaXRoQXR0YWNoZWRDb250ZW50KCl7dGhpcy5fc2V0dXBGb2N1c1RyYXAoKSx0aGlzLl9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCksdGhpcy5fZm9jdXNEaWFsb2dDb250YWluZXIoKX1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJldHKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaENvbXBvbmVudFBvcnRhbCh0KX1hdHRhY2hUZW1wbGF0ZVBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmV0coKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCl9X3JlY2FwdHVyZUZvY3VzKCl7dGhpcy5fY29udGFpbnNGb2N1cygpfHwoIXRoaXMuX2NvbmZpZy5hdXRvRm9jdXN8fCF0aGlzLl9mb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudCgpKSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9X3RyYXBGb2N1cygpe3RoaXMuX2NvbmZpZy5hdXRvRm9jdXM/dGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTp0aGlzLl9jb250YWluc0ZvY3VzKCl8fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9yZXN0b3JlRm9jdXMoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkO2lmKHRoaXMuX2NvbmZpZy5yZXN0b3JlRm9jdXMmJnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvY3VzKXtjb25zdCBlPUZ6KCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7ZSYmZSE9PXRoaXMuX2RvY3VtZW50LmJvZHkmJmUhPT1uJiYhbi5jb250YWlucyhlKXx8KHRoaXMuX2ZvY3VzTW9uaXRvcj8odGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHQsdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUpLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwpOnQuZm9jdXMoKSl9dGhpcy5fZm9jdXNUcmFwJiZ0aGlzLl9mb2N1c1RyYXAuZGVzdHJveSgpfV9zZXR1cEZvY3VzVHJhcCgpe3RoaXMuX2ZvY3VzVHJhcD10aGlzLl9mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfV9jYXB0dXJlUHJldmlvdXNseUZvY3VzZWRFbGVtZW50KCl7dGhpcy5fZG9jdW1lbnQmJih0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1GeigpKX1fZm9jdXNEaWFsb2dDb250YWluZXIoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV9jb250YWluc0ZvY3VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1GeigpO3JldHVybiB0PT09ZXx8dC5jb250YWlucyhlKX19WUcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlHKShTbShoZyksU20ockkpLFNtKFVnKSxTbShaXyw4KSxTbShVRyksU20oU0kpKX0sWUcuybVkaXI9bG8oe3R5cGU6WUcsdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKERGLDcpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX3BvcnRhbE91dGxldD10LmZpcnN0KX19LGZlYXR1cmVzOlt4cF19KSxZRy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpySX0se3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlVHfSx7dHlwZTpTSX1dLFlHLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsT3V0bGV0Olt7dHlwZTpaYSxhcmdzOltERix7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChZRyxbe3R5cGU6Q3l9XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOnJJfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6VUd9LHt0eXBlOlNJfV19KSx7X3BvcnRhbE91dGxldDpbe3R5cGU6WmEsYXJnczpbREYse3N0YXRpYzohMH1dfV19KTtjbGFzcyBxRyBleHRlbmRzIFlHe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0iZW50ZXIifV9vbkFuaW1hdGlvbkRvbmUoe3RvU3RhdGU6dCx0b3RhbFRpbWU6ZX0peyJlbnRlciI9PT10Pyh0aGlzLl90cmFwRm9jdXMoKSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5lZCIsdG90YWxUaW1lOmV9KSk6ImV4aXQiPT09dCYmKHRoaXMuX3Jlc3RvcmVGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2VkIix0b3RhbFRpbWU6ZX0pKX1fb25BbmltYXRpb25TdGFydCh7dG9TdGF0ZTp0LHRvdGFsVGltZTplfSl7ImVudGVyIj09PXQ/dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJvcGVuaW5nIix0b3RhbFRpbWU6ZX0pOiJleGl0IiE9PXQmJiJ2b2lkIiE9PXR8fHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2luZyIsdG90YWxUaW1lOmV9KX1fc3RhcnRFeGl0QW5pbWF0aW9uKCl7dGhpcy5fc3RhdGU9ImV4aXQiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfX1xRy7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEocUcpKSkobnx8cUcpfX0pKCkscUcuybVjbXA9dG8oe3R5cGU6cUcsc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZqbSgiQGRpYWxvZ0NvbnRhaW5lci5zdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uU3RhcnQoZSl9KSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQW5pbWF0aW9uRG9uZShlKX0pKSwyJmUmJihUdSgiaWQiLG4uX2lkKSxqcCgicm9sZSIsbi5fY29uZmlnLnJvbGUpKCJhcmlhLWxhYmVsbGVkYnkiLG4uX2NvbmZpZy5hcmlhTGFiZWw/bnVsbDpuLl9hcmlhTGFiZWxsZWRCeSkoImFyaWEtbGFiZWwiLG4uX2NvbmZpZy5hcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixuLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5fHxudWxsKSxOdSgiQGRpYWxvZ0NvbnRhaW5lciIsbi5fc3RhdGUpKX0sZmVhdHVyZXM6W3hwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlFwKDAsakcsMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W0RGXSxzdHlsZXM6WyIubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltHRy5kaWFsb2dDb250YWluZXJdfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocUcsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWRpYWxvZy1jb250YWluZXIiLHRlbXBsYXRlOiI8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0PjwvbmctdGVtcGxhdGU+XG4iLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxhbmltYXRpb25zOltHRy5kaWFsb2dDb250YWluZXJdLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLWNvbnRhaW5lciIsdGFiaW5kZXg6Ii0xIiwiYXJpYS1tb2RhbCI6InRydWUiLCJbaWRdIjoiX2lkIiwiW2F0dHIucm9sZV0iOiJfY29uZmlnLnJvbGUiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoiX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5IiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJfY29uZmlnLmFyaWFMYWJlbCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnkgfHwgbnVsbCIsIltAZGlhbG9nQ29udGFpbmVyXSI6Il9zdGF0ZSIsIihAZGlhbG9nQ29udGFpbmVyLnN0YXJ0KSI6Il9vbkFuaW1hdGlvblN0YXJ0KCRldmVudCkiLCIoQGRpYWxvZ0NvbnRhaW5lci5kb25lKSI6Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJ9LHN0eWxlczpbIi5tYXQtZGlhbG9nLWNvbnRhaW5lcntkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MjRweDtib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6YXV0bztvdXRsaW5lOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OmluaGVyaXQ7bWF4LWhlaWdodDppbmhlcml0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1kaWFsb2ctY29udGFpbmVye291dGxpbmU6c29saWQgMXB4fS5tYXQtZGlhbG9nLWNvbnRlbnR7ZGlzcGxheTpibG9jazttYXJnaW46MCAtMjRweDtwYWRkaW5nOjAgMjRweDttYXgtaGVpZ2h0OjY1dmg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0ubWF0LWRpYWxvZy10aXRsZXttYXJnaW46MCAwIDIwcHg7ZGlzcGxheTpibG9ja30ubWF0LWRpYWxvZy1hY3Rpb25ze3BhZGRpbmc6OHB4IDA7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21pbi1oZWlnaHQ6NTJweDthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpjb250ZW50LWJveDttYXJnaW4tYm90dG9tOi0yNHB4fS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249ZW5kXXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1kaWFsb2ctYWN0aW9uc1thbGlnbj1jZW50ZXJde2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LWJ1dHRvbi1iYXNlKy5tYXQtYnV0dG9uLWJhc2UsLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDo4cHh9W2Rpcj1ydGxdIC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLFtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtbWRjLWJ1dHRvbi1iYXNlKy5tYXQtbWRjLWJ1dHRvbi1iYXNle21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjhweH1cbiJdfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IFpHPTA7Y2xhc3MgWEd7Y29uc3RydWN0b3IodCxlLG49Im1hdC1kaWFsb2ctIitaRysrKXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2U9ZSx0aGlzLmlkPW4sdGhpcy5kaXNhYmxlQ2xvc2U9dGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5kaXNhYmxlQ2xvc2UsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEksdGhpcy5fYWZ0ZXJDbG9zZWQ9bmV3IEksdGhpcy5fYmVmb3JlQ2xvc2VkPW5ldyBJLHRoaXMuX3N0YXRlPTAsZS5faWQ9bixlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShjZSgodD0+Im9wZW5lZCI9PT10LnN0YXRlKSksYmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKX0pKSxlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShjZSgodD0+ImNsb3NlZCI9PT10LnN0YXRlKSksYmUoMSkpLnN1YnNjcmliZSgoKCk9PntjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQpLHRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCl9KSksdC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9bnVsbCx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX0pKSx0LmtleWRvd25FdmVudHMoKS5waXBlKGNlKCh0PT50LmtleUNvZGU9PT11eiYmIXRoaXMuZGlzYWJsZUNsb3NlJiYhYnoodCkpKSkuc3Vic2NyaWJlKCh0PT57dC5wcmV2ZW50RGVmYXVsdCgpLEtHKHRoaXMsImtleWJvYXJkIil9KSksdC5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuZGlzYWJsZUNsb3NlP3RoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9yZWNhcHR1cmVGb2N1cygpOktHKHRoaXMsIm1vdXNlIil9KSl9Y2xvc2UodCl7dGhpcy5fcmVzdWx0PXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKGNlKCh0PT4iY2xvc2luZyI9PT10LnN0YXRlKSksYmUoMSkpLnN1YnNjcmliZSgoZT0+e3RoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKSx0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fZmluaXNoRGlhbG9nQ2xvc2UoKSksZS50b3RhbFRpbWUrMTAwKX0pKSx0aGlzLl9zdGF0ZT0xLHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9zdGFydEV4aXRBbmltYXRpb24oKX1hZnRlck9wZW5lZCgpe3JldHVybiB0aGlzLl9hZnRlck9wZW5lZH1hZnRlckNsb3NlZCgpe3JldHVybiB0aGlzLl9hZnRlckNsb3NlZH1iZWZvcmVDbG9zZWQoKXtyZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2VkfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCl9a2V5ZG93bkV2ZW50cygpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmtleWRvd25FdmVudHMoKX11cGRhdGVQb3NpdGlvbih0KXtsZXQgZT10aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCk7cmV0dXJuIHQmJih0LmxlZnR8fHQucmlnaHQpP3QubGVmdD9lLmxlZnQodC5sZWZ0KTplLnJpZ2h0KHQucmlnaHQpOmUuY2VudGVySG9yaXpvbnRhbGx5KCksdCYmKHQudG9wfHx0LmJvdHRvbSk/dC50b3A/ZS50b3AodC50b3ApOmUuYm90dG9tKHQuYm90dG9tKTplLmNlbnRlclZlcnRpY2FsbHkoKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpc311cGRhdGVTaXplKHQ9IiIsZT0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dCxoZWlnaHQ6ZX0pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfWFkZFBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcyh0KSx0aGlzfXJlbW92ZVBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYucmVtb3ZlUGFuZWxDbGFzcyh0KSx0aGlzfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfV9maW5pc2hEaWFsb2dDbG9zZSgpe3RoaXMuX3N0YXRlPTIsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9X2dldFBvc2l0aW9uU3RyYXRlZ3koKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5fX1mdW5jdGlvbiBLRyh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PXQuX2NvbnRhaW5lckluc3RhbmNlJiYodC5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPWUpLHQuY2xvc2Uobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEpHPW5ldyBHYSgiTWF0RGlhbG9nRGF0YSIpLFFHPW5ldyBHYSgibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSwkRz1uZXcgR2EoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5IiksdFc9e3Byb3ZpZGU6JEcsZGVwczpbcExdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZVcodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpfX07Y2xhc3Mgbld7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5fcGFyZW50RGlhbG9nPW8sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1pLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPXIsdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1zLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1sLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgSSx0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsPW5ldyBJLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cz1uZXcgTWFwLHRoaXMuYWZ0ZXJBbGxDbG9zZWQ9UXQoKCgpPT50aGlzLm9wZW5EaWFsb2dzLmxlbmd0aD90aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkucGlwZShOZSh2b2lkIDApKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWF9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2NvbnN0IHQ9dGhpcy5fcGFyZW50RGlhbG9nO3JldHVybiB0P3QuX2dldEFmdGVyQWxsQ2xvc2VkKCk6dGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbH1vcGVuKHQsZSl7aWYoKGU9KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGUsdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyBVRykpLmlkJiZ0aGlzLmdldERpYWxvZ0J5SWQoZS5pZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgIiR7ZS5pZH0iIGV4aXN0cyBhbHJlYWR5LiBUaGUgZGlhbG9nIGlkIG11c3QgYmUgdW5pcXVlLmApO2NvbnN0IG89dGhpcy5fY3JlYXRlT3ZlcmxheShlKSxpPXRoaXMuX2F0dGFjaERpYWxvZ0NvbnRhaW5lcihvLGUpLGE9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGVudCh0LGksbyxlKTtyZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fHRoaXMuX2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSx0aGlzLm9wZW5EaWFsb2dzLnB1c2goYSksYS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3JlbW92ZU9wZW5EaWFsb2coYSkpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQoYSksaS5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxhfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZCgoZT0+ZS5pZD09PXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Nsb3NlRGlhbG9ncyh0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsKSx0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IGU9dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyh0KTtyZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2dldE92ZXJsYXlDb25maWcodCl7Y29uc3QgZT1uZXcgVkYoe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLGV9X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LGUpe2NvbnN0IG49cnAuY3JlYXRlKHtwYXJlbnQ6ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6VUcsdXNlVmFsdWU6ZX1dfSksbz1uZXcgdkYodGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSxlLnZpZXdDb250YWluZXJSZWYsbixlLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7cmV0dXJuIHQuYXR0YWNoKG8pLmluc3RhbmNlfV9hdHRhY2hEaWFsb2dDb250ZW50KHQsZSxuLG8pe2NvbnN0IGk9bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKG4sZSxvLmlkKTtpZih0IGluc3RhbmNlb2YgWGcpZS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgeEYodCxudWxsLHskaW1wbGljaXQ6by5kYXRhLGRpYWxvZ1JlZjppfSkpO2Vsc2V7Y29uc3Qgbj10aGlzLl9jcmVhdGVJbmplY3RvcihvLGksZSksYT1lLmF0dGFjaENvbXBvbmVudFBvcnRhbChuZXcgdkYodCxvLnZpZXdDb250YWluZXJSZWYsbikpO2kuY29tcG9uZW50SW5zdGFuY2U9YS5pbnN0YW5jZX1yZXR1cm4gaS51cGRhdGVTaXplKG8ud2lkdGgsby5oZWlnaHQpLnVwZGF0ZVBvc2l0aW9uKG8ucG9zaXRpb24pLGl9X2NyZWF0ZUluamVjdG9yKHQsZSxuKXtjb25zdCBvPXQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLGk9W3twcm92aWRlOnRoaXMuX2RpYWxvZ0NvbnRhaW5lclR5cGUsdXNlVmFsdWU6bn0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nRGF0YVRva2VuLHVzZVZhbHVlOnQuZGF0YX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nUmVmQ29uc3RydWN0b3IsdXNlVmFsdWU6ZX1dO3JldHVybiF0LmRpcmVjdGlvbnx8byYmby5nZXQoSEksbnVsbCxFbi5PcHRpb25hbCl8fGkucHVzaCh7cHJvdmlkZTpISSx1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOkV0KCl9fSkscnAuY3JlYXRlKHtwYXJlbnQ6b3x8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOml9KX1fcmVtb3ZlT3BlbkRpYWxvZyh0KXtjb25zdCBlPXRoaXMub3BlbkRpYWxvZ3MuaW5kZXhPZih0KTtlPi0xJiYodGhpcy5vcGVuRGlhbG9ncy5zcGxpY2UoZSwxKSx0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aHx8KHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+e3Q/ZS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIix0KTplLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX0pKSx0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuY2xlYXIoKSx0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpLm5leHQoKSkpfV9oaWRlTm9uRGlhbG9nQ29udGVudEZyb21Bc3Npc3RpdmVUZWNobm9sb2d5KCl7Y29uc3QgdD10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtpZih0LnBhcmVudEVsZW1lbnQpe2NvbnN0IGU9dC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+LTE7bi0tKXtsZXQgbz1lW25dO289PT10fHwiU0NSSVBUIj09PW8ubm9kZU5hbWV8fCJTVFlMRSI9PT1vLm5vZGVOYW1lfHxvLmhhc0F0dHJpYnV0ZSgiYXJpYS1saXZlIil8fCh0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuc2V0KG8sby5nZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikpLG8uc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSl9fX1fY2xvc2VEaWFsb2dzKHQpe2xldCBlPXQubGVuZ3RoO2Zvcig7ZS0tOyl0W2VdLmNsb3NlKCl9fW5XLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuVykoU20ocEwpLFNtKHJwKSxTbSh2b2lkIDApLFNtKHZvaWQgMCksU20oUUYpLFNtKHZvaWQgMCksU20oUWEpLFNtKFFhKSxTbShHYSkpfSxuVy7JtWRpcj1sbyh7dHlwZTpuV30pLG5XLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6cEx9LHt0eXBlOnJwfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMH0se3R5cGU6UUZ9LHt0eXBlOnZvaWQgMH0se3R5cGU6UWF9LHt0eXBlOlFhfSx7dHlwZTpHYX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoblcsW3t0eXBlOkN5fV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnBMfSx7dHlwZTpycH0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDB9LHt0eXBlOlFGfSx7dHlwZTp2b2lkIDB9LHt0eXBlOlFhfSx7dHlwZTpRYX0se3R5cGU6R2F9XX0pLG51bGwpO2NsYXNzIG9XIGV4dGVuZHMgbld7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIodCxlLG8sYSxyLGksWEcscUcsSkcpfX1vVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b1cpKHZyKHBMKSx2cihycCksdnIobEMsOCksdnIoUUcsOCksdnIoJEcpLHZyKG9XLDEyKSx2cihRRikpfSxvVy7JtXByb3Y9TW4oe3Rva2VuOm9XLGZhY3Rvcnk6b1cuybVmYWN9KSxvVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBMfSx7dHlwZTpycH0se3R5cGU6bEMsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6VUcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1FHXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbJEddfV19LHt0eXBlOm9XLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpFcn1dfSx7dHlwZTpRRn1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgob1csW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnBMfSx7dHlwZTpycH0se3R5cGU6bEMsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6VUcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1FHXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbJEddfV19LHt0eXBlOm9XLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpFcn1dfSx7dHlwZTpRRn1dfSksbnVsbCk7bGV0IGlXPTA7Y2xhc3MgYVd7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9Y1codGhpcy5fZWxlbWVudFJlZix0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MpKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBlPXQuX21hdERpYWxvZ0Nsb3NlfHx0Ll9tYXREaWFsb2dDbG9zZVJlc3VsdDtlJiYodGhpcy5kaWFsb2dSZXN1bHQ9ZS5jdXJyZW50VmFsdWUpfV9vbkJ1dHRvbkNsaWNrKHQpe0tHKHRoaXMuZGlhbG9nUmVmLDA9PT10LnNjcmVlblgmJjA9PT10LnNjcmVlblk/ImtleWJvYXJkIjoibW91c2UiLHRoaXMuZGlhbG9nUmVzdWx0KX19YVcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFXKShTbShYRyw4KSxTbShoZyksU20ob1cpKX0sYVcuybVkaXI9bG8oe3R5cGU6YVcsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIiIsIm1hdERpYWxvZ0Nsb3NlIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uQnV0dG9uQ2xpY2soZSl9KSksMiZlJiZqcCgiYXJpYS1sYWJlbCIsbi5hcmlhTGFiZWx8fG51bGwpKCJ0eXBlIixuLnR5cGUpfSxpbnB1dHM6e3R5cGU6InR5cGUiLGRpYWxvZ1Jlc3VsdDpbIm1hdC1kaWFsb2ctY2xvc2UiLCJkaWFsb2dSZXN1bHQiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sX21hdERpYWxvZ0Nsb3NlOlsibWF0RGlhbG9nQ2xvc2UiLCJfbWF0RGlhbG9nQ2xvc2UiXX0sZXhwb3J0QXM6WyJtYXREaWFsb2dDbG9zZSJdLGZlYXR1cmVzOltCb119KSxhVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhHLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOmhnfSx7dHlwZTpvV31dLGFXLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSx0eXBlOlt7dHlwZTp4eX1dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6eHksYXJnczpbIm1hdC1kaWFsb2ctY2xvc2UiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6eHksYXJnczpbIm1hdERpYWxvZ0Nsb3NlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChhVyxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0LWRpYWxvZy1jbG9zZV0sIFttYXREaWFsb2dDbG9zZV0iLGV4cG9ydEFzOiJtYXREaWFsb2dDbG9zZSIsaG9zdDp7IihjbGljaykiOiJfb25CdXR0b25DbGljaygkZXZlbnQpIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLnR5cGVdIjoidHlwZSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WEcsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6aGd9LHt0eXBlOm9XfV19KSx7dHlwZTpbe3R5cGU6eHl9XSxkaWFsb2dSZXN1bHQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXQtZGlhbG9nLWNsb3NlIl19XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxfbWF0RGlhbG9nQ2xvc2U6W3t0eXBlOnh5LGFyZ3M6WyJtYXREaWFsb2dDbG9zZSJdfV19KTtjbGFzcyByV3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1uLHRoaXMuaWQ9Im1hdC1kaWFsb2ctdGl0bGUtIitpVysrfW5nT25Jbml0KCl7dGhpcy5fZGlhbG9nUmVmfHwodGhpcy5fZGlhbG9nUmVmPWNXKHRoaXMuX2VsZW1lbnRSZWYsdGhpcy5fZGlhbG9nLm9wZW5EaWFsb2dzKSksdGhpcy5fZGlhbG9nUmVmJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e2NvbnN0IHQ9dGhpcy5fZGlhbG9nUmVmLl9jb250YWluZXJJbnN0YW5jZTt0JiYhdC5fYXJpYUxhYmVsbGVkQnkmJih0Ll9hcmlhTGFiZWxsZWRCeT10aGlzLmlkKX0pKX19clcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJXKShTbShYRyw4KSxTbShoZyksU20ob1cpKX0sclcuybVkaXI9bG8oe3R5cGU6clcsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIiIsIm1hdERpYWxvZ1RpdGxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy10aXRsZSJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJlR1KCJpZCIsbi5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZXhwb3J0QXM6WyJtYXREaWFsb2dUaXRsZSJdfSksclcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYRyxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpoZ30se3R5cGU6b1d9XSxyVy5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoclcsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctdGl0bGVdLCBbbWF0RGlhbG9nVGl0bGVdIixleHBvcnRBczoibWF0RGlhbG9nVGl0bGUiLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLXRpdGxlIiwiW2lkXSI6ImlkIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYRyxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpoZ30se3R5cGU6b1d9XX0pLHtpZDpbe3R5cGU6eHl9XX0pO2NsYXNzIHNXe31zVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c1cpfSxzVy7JtWRpcj1sbyh7dHlwZTpzVyxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1jb250ZW50IiwiIl0sWyJtYXQtZGlhbG9nLWNvbnRlbnQiXSxbIiIsIm1hdERpYWxvZ0NvbnRlbnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWNvbnRlbnQiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoc1csW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctY29udGVudF0sIG1hdC1kaWFsb2ctY29udGVudCwgW21hdERpYWxvZ0NvbnRlbnRdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250ZW50In19XX1dLG51bGwsbnVsbCk7Y2xhc3MgbFd7fWZ1bmN0aW9uIGNXKHQsZSl7bGV0IG49dC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7Zm9yKDtuJiYhbi5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1kaWFsb2ctY29udGFpbmVyIik7KW49bi5wYXJlbnRFbGVtZW50O3JldHVybiBuP2UuZmluZCgodD0+dC5pZD09PW4uaWQpKTpudWxsfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bFcpfSxsVy7JtWRpcj1sbyh7dHlwZTpsVyxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1hY3Rpb25zIiwiIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiXSxbIiIsIm1hdERpYWxvZ0FjdGlvbnMiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZGlhbG9nLWFjdGlvbnMiXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobFcsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctYWN0aW9uc10sIG1hdC1kaWFsb2ctYWN0aW9ucywgW21hdERpYWxvZ0FjdGlvbnNdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1hY3Rpb25zIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgZFd7fWRXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkVyl9LGRXLsm1bW9kPWFvKHt0eXBlOmRXfSksZFcuybVpbmo9dm4oe3Byb3ZpZGVyczpbb1csdFddLGltcG9ydHM6W1t5TCxSRixYSV0sWEldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkVyxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W3lMLFJGLFhJXSxleHBvcnRzOltxRyxhVyxyVyxzVyxsVyxYSV0sZGVjbGFyYXRpb25zOltxRyxhVyxyVyxsVyxzV10scHJvdmlkZXJzOltvVyx0V10sZW50cnlDb21wb25lbnRzOltxR119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhkVyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3FHLGFXLHJXLGxXLHNXXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt5TCxSRixYSV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcUcsYVcsclcsc1csbFcsWEldfX0pO2NsYXNzIHBXe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZG9jdW1lbnQ9ZTtjb25zdCBuPXRoaXMuX3RleHRhcmVhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksbz1uLnN0eWxlO28ucG9zaXRpb249ImZpeGVkIixvLnRvcD1vLm9wYWNpdHk9IjAiLG8ubGVmdD0iLTk5OWVtIixuLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksbi52YWx1ZT10LHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobil9Y29weSgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWE7bGV0IGU9ITE7dHJ5e2lmKHQpe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0LnNlbGVjdCgpLHQuc2V0U2VsZWN0aW9uUmFuZ2UoMCx0LnZhbHVlLmxlbmd0aCksZT10aGlzLl9kb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpLG4mJm4uZm9jdXMoKX19Y2F0Y2godCl7fXJldHVybiBlfWRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX3RleHRhcmVhO3QmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl90ZXh0YXJlYT12b2lkIDApfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbVd7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1jb3B5KHQpe2NvbnN0IGU9dGhpcy5iZWdpbkNvcHkodCksbj1lLmNvcHkoKTtyZXR1cm4gZS5kZXN0cm95KCksbn1iZWdpbkNvcHkodCl7cmV0dXJuIG5ldyBwVyh0LHRoaXMuX2RvY3VtZW50KX19bVcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG1XKSh2cihaXykpfSxtVy7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbVcodnIoWl8pKX0sdG9rZW46bVcscHJvdmlkZWRJbjoicm9vdCJ9KSxtVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobVcsW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB1Vz1uZXcgR2EoIkNES19DT1BZX1RPX0NMSVBCT0FSRF9DT05GSUciKTtjbGFzcyBmV3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fY2xpcGJvYXJkPXQsdGhpcy5fbmdab25lPWUsdGhpcy50ZXh0PSIiLHRoaXMuYXR0ZW1wdHM9MSx0aGlzLmNvcGllZD1uZXcgTGgsdGhpcy5fcGVuZGluZz1uZXcgU2V0LG4mJm51bGwhPW4uYXR0ZW1wdHMmJih0aGlzLmF0dGVtcHRzPW4uYXR0ZW1wdHMpfWNvcHkodD10aGlzLmF0dGVtcHRzKXtpZih0PjEpe2xldCBlPXQ7Y29uc3Qgbj10aGlzLl9jbGlwYm9hcmQuYmVnaW5Db3B5KHRoaXMudGV4dCk7dGhpcy5fcGVuZGluZy5hZGQobik7Y29uc3Qgbz0oKT0+e2NvbnN0IHQ9bi5jb3B5KCk7dHx8IS0tZXx8dGhpcy5fZGVzdHJveWVkPyh0aGlzLl9jdXJyZW50VGltZW91dD1udWxsLHRoaXMuX3BlbmRpbmcuZGVsZXRlKG4pLG4uZGVzdHJveSgpLHRoaXMuY29waWVkLmVtaXQodCkpOnRoaXMuX2N1cnJlbnRUaW1lb3V0PXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQobywxKSkpfTtvKCl9ZWxzZSB0aGlzLmNvcGllZC5lbWl0KHRoaXMuX2NsaXBib2FyZC5jb3B5KHRoaXMudGV4dCkpfW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50VGltZW91dCksdGhpcy5fcGVuZGluZy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX3BlbmRpbmcuY2xlYXIoKSx0aGlzLl9kZXN0cm95ZWQ9ITB9fWZXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmVykoU20obVcpLFNtKGFfKSxTbSh1Vyw4KSl9LGZXLsm1ZGlyPWxvKHt0eXBlOmZXLHNlbGVjdG9yczpbWyIiLCJjZGtDb3B5VG9DbGlwYm9hcmQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jb3B5KCl9KSl9LGlucHV0czp7dGV4dDpbImNka0NvcHlUb0NsaXBib2FyZCIsInRleHQiXSxhdHRlbXB0czpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIiwiYXR0ZW1wdHMiXX0sb3V0cHV0czp7Y29waWVkOiJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQifX0pLGZXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bVd9LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3VXXX1dfV0sZlcucHJvcERlY29yYXRvcnM9e3RleHQ6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmQiXX1dLGF0dGVtcHRzOlt7dHlwZTp4eSxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiXX1dLGNvcGllZDpbe3R5cGU6T3ksYXJnczpbImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZlcsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NvcHlUb0NsaXBib2FyZF0iLGhvc3Q6eyIoY2xpY2spIjoiY29weSgpIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptV30se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbdVddfV19XX0pLHt0ZXh0Olt7dHlwZTp4eSxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkIl19XSxhdHRlbXB0czpbe3R5cGU6eHksYXJnczpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIl19XSxjb3BpZWQ6W3t0eXBlOk95LGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBnV3t9ZnVuY3Rpb24gaFcodCl7cmV0dXJuIEVycm9yKGBVbmFibGUgdG8gZmluZCBpY29uIHdpdGggdGhlIG5hbWUgIiR7dH0iYCl9ZnVuY3Rpb24gYlcodCl7cmV0dXJuIEVycm9yKGBUaGUgVVJMIHByb3ZpZGVkIHRvIE1hdEljb25SZWdpc3RyeSB3YXMgbm90IHRydXN0ZWQgYXMgYSByZXNvdXJjZSBVUkwgdmlhIEFuZ3VsYXIncyBEb21TYW5pdGl6ZXIuIEF0dGVtcHRlZCBVUkwgd2FzICIke3R9Ii5gKX1mdW5jdGlvbiB5Vyh0KXtyZXR1cm4gRXJyb3IoYFRoZSBsaXRlcmFsIHByb3ZpZGVkIHRvIE1hdEljb25SZWdpc3RyeSB3YXMgbm90IHRydXN0ZWQgYXMgc2FmZSBIVE1MIGJ5IEFuZ3VsYXIncyBEb21TYW5pdGl6ZXIuIEF0dGVtcHRlZCBsaXRlcmFsIHdhcyAiJHt0fSIuYCl9Z1cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdXKX0sZ1cuybVtb2Q9YW8oe3R5cGU6Z1d9KSxnVy7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnVyxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbZlddLGV4cG9ydHM6W2ZXXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKGdXLHtkZWNsYXJhdGlvbnM6W2ZXXSxleHBvcnRzOltmV119KTtjbGFzcyBfV3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy51cmw9dCx0aGlzLnN2Z1RleHQ9ZSx0aGlzLm9wdGlvbnM9bn19Y2xhc3MgQ1d7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5faHR0cENsaWVudD10LHRoaXMuX3Nhbml0aXplcj1lLHRoaXMuX2Vycm9ySGFuZGxlcj1vLHRoaXMuX3N2Z0ljb25Db25maWdzPW5ldyBNYXAsdGhpcy5faWNvblNldENvbmZpZ3M9bmV3IE1hcCx0aGlzLl9jYWNoZWRJY29uc0J5VXJsPW5ldyBNYXAsdGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXM9bmV3IE1hcCx0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXM9bmV3IE1hcCx0aGlzLl9yZXNvbHZlcnM9W10sdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz0ibWF0ZXJpYWwtaWNvbnMiLHRoaXMuX2RvY3VtZW50PW59YWRkU3ZnSWNvbih0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCIiLHQsZSxuKX1hZGRTdmdJY29uTGl0ZXJhbCh0LGUsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUsbil9YWRkU3ZnSWNvbkluTmFtZXNwYWNlKHQsZSxuLG8pe3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgX1cobixudWxsLG8pKX1hZGRTdmdJY29uUmVzb2x2ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVycy5wdXNoKHQpLHRoaXN9YWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSh0LGUsbixvKXtjb25zdCBpPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5IVE1MLG4pO2lmKCFpKXRocm93IHlXKG4pO3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsZSxuZXcgX1coIiIsaSxvKSl9YWRkU3ZnSWNvblNldCh0LGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRMaXRlcmFsKHQsZSl7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSgiIix0LGUpfWFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSh0LGUsbil7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25TZXRDb25maWcodCxuZXcgX1coZSxudWxsLG4pKX1hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKHQsZSxuKXtjb25zdCBvPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5IVE1MLGUpO2lmKCFvKXRocm93IHlXKGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IF9XKCIiLG8sbikpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxlPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsZSksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2NvbnN0IGU9dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKEFzLlJFU09VUkNFX1VSTCx0KTtpZighZSl0aHJvdyBiVyh0KTtjb25zdCBuPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KGUpO3JldHVybiBuP0V0KE1XKG4pKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcobmV3IF9XKHQsbnVsbCkpLnBpcGUoRmUoKHQ9PnRoaXMuX2NhY2hlZEljb25zQnlVcmwuc2V0KGUsdCkpKSxJdCgodD0+TVcodCkpKSl9Z2V0TmFtZWRTdmdJY29uKHQsZT0iIil7Y29uc3Qgbj12VyhlLHQpO2xldCBvPXRoaXMuX3N2Z0ljb25Db25maWdzLmdldChuKTtpZihvKXJldHVybiB0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2lmKG89dGhpcy5fZ2V0SWNvbkNvbmZpZ0Zyb21SZXNvbHZlcnMoZSx0KSxvKXJldHVybiB0aGlzLl9zdmdJY29uQ29uZmlncy5zZXQobixvKSx0aGlzLl9nZXRTdmdGcm9tQ29uZmlnKG8pO2NvbnN0IGk9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KGUpO3JldHVybiBpP3RoaXMuX2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGkpOlJ0KGhXKG4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Jlc29sdmVycz1bXSx0aGlzLl9zdmdJY29uQ29uZmlncy5jbGVhcigpLHRoaXMuX2ljb25TZXRDb25maWdzLmNsZWFyKCksdGhpcy5fY2FjaGVkSWNvbnNCeVVybC5jbGVhcigpfV9nZXRTdmdGcm9tQ29uZmlnKHQpe3JldHVybiB0LnN2Z1RleHQ/RXQoTVcodGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcodCkpKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcodCkucGlwZShJdCgodD0+TVcodCkpKSl9X2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGUpe2NvbnN0IG49dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKTtyZXR1cm4gbj9FdChuKTokdChlLmZpbHRlcigodD0+IXQuc3ZnVGV4dCkpLm1hcCgodD0+dGhpcy5fbG9hZFN2Z0ljb25TZXRGcm9tQ29uZmlnKHQpLnBpcGUocGUoKGU9Pntjb25zdCBuPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsdC51cmwpO3JldHVybiB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IobmV3IEVycm9yKGBMb2FkaW5nIGljb24gc2V0IFVSTDogJHtufSBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApKSxFdChudWxsKX0pKSkpKSkucGlwZShJdCgoKCk9Pntjb25zdCBuPXRoaXMuX2V4dHJhY3RJY29uV2l0aE5hbWVGcm9tQW55U2V0KHQsZSk7aWYoIW4pdGhyb3cgaFcodCk7cmV0dXJuIG59KSkpfV9leHRyYWN0SWNvbldpdGhOYW1lRnJvbUFueVNldCh0LGUpe2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtjb25zdCBvPWVbbl07aWYoby5zdmdUZXh0JiZvLnN2Z1RleHQuaW5kZXhPZih0KT4tMSl7Y29uc3QgZT10aGlzLl9zdmdFbGVtZW50RnJvbUNvbmZpZyhvKSxuPXRoaXMuX2V4dHJhY3RTdmdJY29uRnJvbVNldChlLHQsby5vcHRpb25zKTtpZihuKXJldHVybiBufX1yZXR1cm4gbnVsbH1fbG9hZFN2Z0ljb25Gcm9tQ29uZmlnKHQpe3JldHVybiB0aGlzLl9mZXRjaEljb24odCkucGlwZShGZSgoZT0+dC5zdmdUZXh0PWUpKSxJdCgoKCk9PnRoaXMuX3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpKSkpfV9sb2FkU3ZnSWNvblNldEZyb21Db25maWcodCl7cmV0dXJuIHQuc3ZnVGV4dD9FdChudWxsKTp0aGlzLl9mZXRjaEljb24odCkucGlwZShGZSgoZT0+dC5zdmdUZXh0PWUpKSl9X2V4dHJhY3RTdmdJY29uRnJvbVNldCh0LGUsbil7Y29uc3Qgbz10LnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHtlfSJdYCk7aWYoIW8pcmV0dXJuIG51bGw7Y29uc3QgaT1vLmNsb25lTm9kZSghMCk7aWYoaS5yZW1vdmVBdHRyaWJ1dGUoImlkIiksInN2ZyI9PT1pLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuX3NldFN2Z0F0dHJpYnV0ZXMoaSxuKTtpZigic3ltYm9sIj09PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyh0aGlzLl90b1N2Z0VsZW1lbnQoaSksbik7Y29uc3QgYT10aGlzLl9zdmdFbGVtZW50RnJvbVN0cmluZygiPHN2Zz48L3N2Zz4iKTtyZXR1cm4gYS5hcHBlbmRDaGlsZChpKSx0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGEsbil9X3N2Z0VsZW1lbnRGcm9tU3RyaW5nKHQpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7ZS5pbm5lckhUTUw9dDtjb25zdCBuPWUucXVlcnlTZWxlY3Rvcigic3ZnIik7aWYoIW4pdGhyb3cgRXJyb3IoIjxzdmc+IHRhZyBub3QgZm91bmQiKTtyZXR1cm4gbn1fdG9TdmdFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iiksbj10LmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0e25hbWU6byx2YWx1ZTppfT1uW3RdOyJpZCIhPT1vJiZlLnNldEF0dHJpYnV0ZShvLGkpfWZvcihsZXQgbj0wO248dC5jaGlsZE5vZGVzLmxlbmd0aDtuKyspdC5jaGlsZE5vZGVzW25dLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFJiZlLmFwcGVuZENoaWxkKHQuY2hpbGROb2Rlc1tuXS5jbG9uZU5vZGUoITApKTtyZXR1cm4gZX1fc2V0U3ZnQXR0cmlidXRlcyh0LGUpe3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZml0IiwiIiksdC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIjEwMCUiKSx0LnNldEF0dHJpYnV0ZSgid2lkdGgiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiksdC5zZXRBdHRyaWJ1dGUoImZvY3VzYWJsZSIsImZhbHNlIiksZSYmZS52aWV3Qm94JiZ0LnNldEF0dHJpYnV0ZSgidmlld0JveCIsZS52aWV3Qm94KSx0fV9mZXRjaEljb24odCl7dmFyIGU7Y29uc3R7dXJsOm4sb3B0aW9uczpvfT10LGk9bnVsbCE9PShlPW51bGw9PW8/dm9pZCAwOm8ud2l0aENyZWRlbnRpYWxzKSYmdm9pZCAwIT09ZSYmZTtpZighdGhpcy5faHR0cENsaWVudCl0aHJvdyhmdW5jdGlvbiBhKCl7cmV0dXJuIEVycm9yKCJDb3VsZCBub3QgZmluZCBIdHRwQ2xpZW50IHByb3ZpZGVyIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsIGljb25zLiBQbGVhc2UgaW5jbHVkZSB0aGUgSHR0cENsaWVudE1vZHVsZSBmcm9tIEBhbmd1bGFyL2NvbW1vbi9odHRwIGluIHlvdXIgYXBwIGltcG9ydHMuIil9KSgpO2lmKG51bGw9PW4pdGhyb3cgRXJyb3IoYENhbm5vdCBmZXRjaCBpY29uIGZyb20gVVJMICIke259Ii5gKTtjb25zdCByPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsbik7aWYoIXIpdGhyb3cgYlcobik7Y29uc3Qgcz10aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5nZXQocik7aWYocylyZXR1cm4gcztjb25zdCBsPXRoaXMuX2h0dHBDbGllbnQuZ2V0KHIse3Jlc3BvbnNlVHlwZToidGV4dCIsd2l0aENyZWRlbnRpYWxzOml9KS5waXBlKChmdW5jdGlvbiBjKHQpe3JldHVybiBSKChmdW5jdGlvbihlLG4pe3RyeXtlLnN1YnNjcmliZShuKX1maW5hbGx5e24uYWRkKHQpfX0pKX0pKCgoKT0+dGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXMuZGVsZXRlKHIpKSksRWUoKSk7cmV0dXJuIHRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLnNldChyLGwpLGx9X2FkZFN2Z0ljb25Db25maWcodCxlLG4pe3JldHVybiB0aGlzLl9zdmdJY29uQ29uZmlncy5zZXQodlcodCxlKSxuKSx0aGlzfV9hZGRTdmdJY29uU2V0Q29uZmlnKHQsZSl7Y29uc3Qgbj10aGlzLl9pY29uU2V0Q29uZmlncy5nZXQodCk7cmV0dXJuIG4/bi5wdXNoKGUpOnRoaXMuX2ljb25TZXRDb25maWdzLnNldCh0LFtlXSksdGhpc31fc3ZnRWxlbWVudEZyb21Db25maWcodCl7aWYoIXQuc3ZnRWxlbWVudCl7Y29uc3QgZT10aGlzLl9zdmdFbGVtZW50RnJvbVN0cmluZyh0LnN2Z1RleHQpO3RoaXMuX3NldFN2Z0F0dHJpYnV0ZXMoZSx0Lm9wdGlvbnMpLHQuc3ZnRWxlbWVudD1lfXJldHVybiB0LnN2Z0VsZW1lbnR9X2dldEljb25Db25maWdGcm9tUmVzb2x2ZXJzKHQsZSl7Zm9yKGxldCBvPTA7bzx0aGlzLl9yZXNvbHZlcnMubGVuZ3RoO28rKyl7Y29uc3QgaT10aGlzLl9yZXNvbHZlcnNbb10oZSx0KTtpZihpKXJldHVybihuPWkpLnVybCYmbi5vcHRpb25zP25ldyBfVyhpLnVybCxudWxsLGkub3B0aW9ucyk6bmV3IF9XKGksbnVsbCl9dmFyIG47Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL319ZnVuY3Rpb24gTVcodCl7cmV0dXJuIHQuY2xvbmVOb2RlKCEwKX1mdW5jdGlvbiB2Vyh0LGUpe3JldHVybiB0KyI6IitlfUNXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDVykodnIoUEQsOCksdnIoenYpLHZyKFpfLDgpLHZyKFpzKSl9LENXLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBDVyh2cihQRCw4KSx2cih6diksdnIoWl8sOCksdnIoWnMpKX0sdG9rZW46Q1cscHJvdmlkZWRJbjoicm9vdCJ9KSxDVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlBELGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnp2fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTpac31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQ1csW3t0eXBlOmltLGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlBELGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnp2fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTpac31dfSksbnVsbCksbmV3IFNyLG5ldyBFcixuZXcgU3IsbmV3IFNyO2NvbnN0IHhXPUpJKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSxPVz1uZXcgR2EoIm1hdC1pY29uLWxvY2F0aW9uIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBQVygpe2NvbnN0IHQ9T3IoWl8pLGU9dD90LmxvY2F0aW9uOm51bGw7cmV0dXJue2dldFBhdGhuYW1lOigpPT5lP2UucGF0aG5hbWUrZS5zZWFyY2g6IiJ9fX0pLHdXPVsiY2xpcC1wYXRoIiwiY29sb3ItcHJvZmlsZSIsInNyYyIsImN1cnNvciIsImZpbGwiLCJmaWx0ZXIiLCJtYXJrZXIiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXItbWlkIiwibWFya2VyLWVuZCIsIm1hc2siLCJzdHJva2UiXSxrVz13Vy5tYXAoKHQ9PmBbJHt0fV1gKSkuam9pbigiLCAiKSxTVz0vXnVybFwoWyciXT8jKC4qPylbJyJdP1wpJC87Y2xhc3MgRFcgZXh0ZW5kcyB4V3tjb25zdHJ1Y3Rvcih0LGUsbixvLGkpe3N1cGVyKHQpLHRoaXMuX2ljb25SZWdpc3RyeT1lLHRoaXMuX2xvY2F0aW9uPW8sdGhpcy5fZXJyb3JIYW5kbGVyPWksdGhpcy5faW5saW5lPSExLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2g9bS5FTVBUWSxufHx0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKX1nZXQgaW5saW5lKCl7cmV0dXJuIHRoaXMuX2lubGluZX1zZXQgaW5saW5lKHQpe3RoaXMuX2lubGluZT15eih0KX1nZXQgc3ZnSWNvbigpe3JldHVybiB0aGlzLl9zdmdJY29ufXNldCBzdmdJY29uKHQpe3QhPT10aGlzLl9zdmdJY29uJiYodD90aGlzLl91cGRhdGVTdmdJY29uKHQpOnRoaXMuX3N2Z0ljb24mJnRoaXMuX2NsZWFyU3ZnRWxlbWVudCgpLHRoaXMuX3N2Z0ljb249dCl9Z2V0IGZvbnRTZXQoKXtyZXR1cm4gdGhpcy5fZm9udFNldH1zZXQgZm9udFNldCh0KXtjb25zdCBlPXRoaXMuX2NsZWFudXBGb250VmFsdWUodCk7ZSE9PXRoaXMuX2ZvbnRTZXQmJih0aGlzLl9mb250U2V0PWUsdGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCkpfWdldCBmb250SWNvbigpe3JldHVybiB0aGlzLl9mb250SWNvbn1zZXQgZm9udEljb24odCl7Y29uc3QgZT10aGlzLl9jbGVhbnVwRm9udFZhbHVlKHQpO2UhPT10aGlzLl9mb250SWNvbiYmKHRoaXMuX2ZvbnRJY29uPWUsdGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCkpfV9zcGxpdEljb25OYW1lKHQpe2lmKCF0KXJldHVyblsiIiwiIl07Y29uc3QgZT10LnNwbGl0KCI6Iik7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDE6cmV0dXJuWyIiLGVbMF1dO2Nhc2UgMjpyZXR1cm4gZTtkZWZhdWx0OnRocm93IEVycm9yKGBJbnZhbGlkIGljb24gbmFtZTogIiR7dH0iYCl9fW5nT25Jbml0KCl7dGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCl9bmdBZnRlclZpZXdDaGVja2VkKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXM7aWYodCYmdC5zaXplKXtjb25zdCB0PXRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7dCE9PXRoaXMuX3ByZXZpb3VzUGF0aCYmKHRoaXMuX3ByZXZpb3VzUGF0aD10LHRoaXMuX3ByZXBlbmRQYXRoVG9SZWZlcmVuY2VzKHQpKX19bmdPbkRlc3Ryb3koKXt0aGlzLl9jdXJyZW50SWNvbkZldGNoLnVuc3Vic2NyaWJlKCksdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzJiZ0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMuY2xlYXIoKX1fdXNpbmdGb250SWNvbigpe3JldHVybiF0aGlzLnN2Z0ljb259X3NldFN2Z0VsZW1lbnQodCl7dGhpcy5fY2xlYXJTdmdFbGVtZW50KCk7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS50ZXh0Q29udGVudCs9IiAiO2NvbnN0IG49dGhpcy5fbG9jYXRpb24uZ2V0UGF0aG5hbWUoKTt0aGlzLl9wcmV2aW91c1BhdGg9bix0aGlzLl9jYWNoZUNoaWxkcmVuV2l0aEV4dGVybmFsUmVmZXJlbmNlcyh0KSx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyhuKSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2NsZWFyU3ZnRWxlbWVudCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2xldCBlPXQuY2hpbGROb2Rlcy5sZW5ndGg7Zm9yKHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCk7ZS0tOyl7Y29uc3Qgbj10LmNoaWxkTm9kZXNbZV07MT09PW4ubm9kZVR5cGUmJiJzdmciIT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfHx0LnJlbW92ZUNoaWxkKG4pfX1fdXBkYXRlRm9udEljb25DbGFzc2VzKCl7aWYoIXRoaXMuX3VzaW5nRm9udEljb24oKSlyZXR1cm47Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT10aGlzLmZvbnRTZXQ/dGhpcy5faWNvblJlZ2lzdHJ5LmNsYXNzTmFtZUZvckZvbnRBbGlhcyh0aGlzLmZvbnRTZXQpOnRoaXMuX2ljb25SZWdpc3RyeS5nZXREZWZhdWx0Rm9udFNldENsYXNzKCk7ZSE9dGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJih0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzKSxlJiZ0LmNsYXNzTGlzdC5hZGQoZSksdGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3M9ZSksdGhpcy5mb250SWNvbiE9dGhpcy5fcHJldmlvdXNGb250SWNvbkNsYXNzJiYodGhpcy5fcHJldmlvdXNGb250SWNvbkNsYXNzJiZ0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fcHJldmlvdXNGb250SWNvbkNsYXNzKSx0aGlzLmZvbnRJY29uJiZ0LmNsYXNzTGlzdC5hZGQodGhpcy5mb250SWNvbiksdGhpcy5fcHJldmlvdXNGb250SWNvbkNsYXNzPXRoaXMuZm9udEljb24pfV9jbGVhbnVwRm9udFZhbHVlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90LnRyaW0oKS5zcGxpdCgiICIpWzBdOnR9X3ByZXBlbmRQYXRoVG9SZWZlcmVuY2VzKHQpe2NvbnN0IGU9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2UmJmUuZm9yRWFjaCgoKGUsbik9PntlLmZvckVhY2goKGU9PntuLnNldEF0dHJpYnV0ZShlLm5hbWUsYHVybCgnJHt0fSMke2UudmFsdWV9JylgKX0pKX0pKX1fY2FjaGVDaGlsZHJlbldpdGhFeHRlcm5hbFJlZmVyZW5jZXModCl7Y29uc3QgZT10LnF1ZXJ5U2VsZWN0b3JBbGwoa1cpLG49dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlc3x8bmV3IE1hcDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl3Vy5mb3JFYWNoKChvPT57Y29uc3QgaT1lW3RdLGE9aS5nZXRBdHRyaWJ1dGUobykscj1hP2EubWF0Y2goU1cpOm51bGw7aWYocil7bGV0IHQ9bi5nZXQoaSk7dHx8KHQ9W10sbi5zZXQoaSx0KSksdC5wdXNoKHtuYW1lOm8sdmFsdWU6clsxXX0pfX0pKX1fdXBkYXRlU3ZnSWNvbih0KXtpZih0aGlzLl9zdmdOYW1lc3BhY2U9bnVsbCx0aGlzLl9zdmdOYW1lPW51bGwsdGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHQpe2NvbnN0W2Usbl09dGhpcy5fc3BsaXRJY29uTmFtZSh0KTtlJiYodGhpcy5fc3ZnTmFtZXNwYWNlPWUpLG4mJih0aGlzLl9zdmdOYW1lPW4pLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2g9dGhpcy5faWNvblJlZ2lzdHJ5LmdldE5hbWVkU3ZnSWNvbihuLGUpLnBpcGUoYmUoMSkpLnN1YnNjcmliZSgodD0+dGhpcy5fc2V0U3ZnRWxlbWVudCh0KSksKHQ9Pnt0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IobmV3IEVycm9yKGBFcnJvciByZXRyaWV2aW5nIGljb24gJHtlfToke259ISAke3QubWVzc2FnZX1gKSl9KSl9fX1EVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RFcpKFNtKGhnKSxTbShDVyksTmEoImFyaWEtaGlkZGVuIiksU20oT1cpLFNtKFpzKSl9LERXLsm1Y21wPXRvKHt0eXBlOkRXLHNlbGVjdG9yczpbWyJtYXQtaWNvbiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiaW1nIiwxLCJtYXQtaWNvbiIsIm5vdHJhbnNsYXRlIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKGpwKCJkYXRhLW1hdC1pY29uLXR5cGUiLG4uX3VzaW5nRm9udEljb24oKT8iZm9udCI6InN2ZyIpKCJkYXRhLW1hdC1pY29uLW5hbWUiLG4uX3N2Z05hbWV8fG4uZm9udEljb24pKCJkYXRhLW1hdC1pY29uLW5hbWVzcGFjZSIsbi5fc3ZnTmFtZXNwYWNlfHxuLmZvbnRTZXQpLHB1KCJtYXQtaWNvbi1pbmxpbmUiLG4uaW5saW5lKSgibWF0LWljb24tbm8tY29sb3IiLCJwcmltYXJ5IiE9PW4uY29sb3ImJiJhY2NlbnQiIT09bi5jb2xvciYmIndhcm4iIT09bi5jb2xvcikpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsaW5saW5lOiJpbmxpbmUiLHN2Z0ljb246InN2Z0ljb24iLGZvbnRTZXQ6ImZvbnRTZXQiLGZvbnRJY29uOiJmb250SWNvbiJ9LGV4cG9ydEFzOlsibWF0SWNvbiJdLGZlYXR1cmVzOlt4cF0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjEsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFhtKDApKX0sc3R5bGVzOlsiLm1hdC1pY29ue2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtoZWlnaHQ6MjRweDt3aWR0aDoyNHB4fS5tYXQtaWNvbi5tYXQtaWNvbi1pbmxpbmV7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDt3aWR0aDppbmhlcml0fVtkaXI9cnRsXSAubWF0LWljb24tcnRsLW1pcnJvcnt0cmFuc2Zvcm06c2NhbGUoLTEsIDEpfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbnttYXJnaW46YXV0b31cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLERXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOkNXfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbImFyaWEtaGlkZGVuIl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W09XXX1dfSx7dHlwZTpac31dLERXLnByb3BEZWNvcmF0b3JzPXtpbmxpbmU6W3t0eXBlOnh5fV0sc3ZnSWNvbjpbe3R5cGU6eHl9XSxmb250U2V0Olt7dHlwZTp4eX1dLGZvbnRJY29uOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKERXLFt7dHlwZTpNeSxhcmdzOlt7dGVtcGxhdGU6IjxuZy1jb250ZW50PjwvbmctY29udGVudD4iLHNlbGVjdG9yOiJtYXQtaWNvbiIsZXhwb3J0QXM6Im1hdEljb24iLGlucHV0czpbImNvbG9yIl0saG9zdDp7cm9sZToiaW1nIixjbGFzczoibWF0LWljb24gbm90cmFuc2xhdGUiLCJbYXR0ci5kYXRhLW1hdC1pY29uLXR5cGVdIjonX3VzaW5nRm9udEljb24oKSA/ICJmb250IiA6ICJzdmciJywiW2F0dHIuZGF0YS1tYXQtaWNvbi1uYW1lXSI6Il9zdmdOYW1lIHx8IGZvbnRJY29uIiwiW2F0dHIuZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2VdIjoiX3N2Z05hbWVzcGFjZSB8fCBmb250U2V0IiwiW2NsYXNzLm1hdC1pY29uLWlubGluZV0iOiJpbmxpbmUiLCJbY2xhc3MubWF0LWljb24tbm8tY29sb3JdIjonY29sb3IgIT09ICJwcmltYXJ5IiAmJiBjb2xvciAhPT0gImFjY2VudCIgJiYgY29sb3IgIT09ICJ3YXJuIid9LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHN0eWxlczpbIi5tYXQtaWNvbntiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubWF0LWljb24ubWF0LWljb24taW5saW5le2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH1bZGlyPXJ0bF0gLm1hdC1pY29uLXJ0bC1taXJyb3J7dHJhbnNmb3JtOnNjYWxlKC0xLCAxKX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bWFyZ2luOmF1dG99XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpDV30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltPV119XX0se3R5cGU6WnN9XX0pLHtpbmxpbmU6W3t0eXBlOnh5fV0sc3ZnSWNvbjpbe3R5cGU6eHl9XSxmb250U2V0Olt7dHlwZTp4eX1dLGZvbnRJY29uOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBFV3t9RVcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVXKX0sRVcuybVtb2Q9YW8oe3R5cGU6RVd9KSxFVy7JtWluaj12bih7aW1wb3J0czpbW1hJXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEVXLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbWEldLGV4cG9ydHM6W0RXLFhJXSxkZWNsYXJhdGlvbnM6W0RXXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEVXLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRFddfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1hJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltEVyxYSV19fSk7Y2xhc3MgUld7Y29uc3RydWN0b3IodCl7dGhpcy5kaWFsb2dSZWY9dCx0aGlzLnRlbnNvcmJvYXJkRG90RGV2VXJsPSJodHRwczovL3RlbnNvcmJvYXJkLmRldi8/dXRtX3NvdXJjZT10ZW5zb3Jib2FyZCJ9b25DbG9zZSgpe3RoaXMuZGlhbG9nUmVmLmNsb3NlKCl9Z2V0Q29tbWFuZFRleHQoKXtyZXR1cm4gdGhpcy5sb2dkaXI/InRlbnNvcmJvYXJkIGRldiB1cGxvYWQgLS1sb2dkaXIgXFxcbiAgICAnIit0aGlzLmxvZ2Rpci5yZXBsYWNlKC8nL2csIidcXCcnIikrIiciOiJ0ZW5zb3Jib2FyZCBkZXYgdXBsb2FkIC0tbG9nZGlyIHtsb2dkaXJ9In19UlcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJXKShTbShYRykpfSxSVy7JtWNtcD10byh7dHlwZTpSVyxzZWxlY3RvcnM6W1sidGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQiXV0saW5wdXRzOntsb2dkaXI6ImxvZ2RpciJ9LGRlY2xzOjIxLHZhcnM6NCxjb25zdHM6W1sidGFyZ2V0IiwiX2JsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsMSwiYW5jaG9yLXRleHQiLDMsImhyZWYiXSxbMSwiY29tbWFuZCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJDbGljayB0byBjb3B5IHRoZSBjb21tYW5kIiwxLCJjb21tYW5kLWNvcHkiLDMsImNka0NvcHlUb0NsaXBib2FyZCJdLFsic3ZnSWNvbiIsImNvbnRlbnRfY29weV8yNHB4Il0sWzEsImJvdHRvbS1idXR0b25zIl0sWyJtYXQtZmxhdC1idXR0b24iLCIiLDEsImNsb3NlLWJ1dHRvbiIsMywiY2xpY2siXSxbIm1hdC1mbGF0LWJ1dHRvbiIsIiIsInRhcmdldCIsIl9ibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiLDEsImxlYXJuLW1vcmUtYnV0dG9uIiwzLCJocmVmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJoMyIpLGt1KDEsIlVwbG9hZCB0byBUZW5zb3JCb2FyZC5kZXYiKSxBbSgpLFJtKDIsInAiKSxSbSgzLCJhIiwwKSxrdSg0LCIgVGVuc29yQm9hcmQuZGV2IiksQW0oKSxrdSg1LCIgZW5hYmxlcyB5b3UgdG8gZWFzaWx5IGhvc3QsIHRyYWNrLCBhbmQgc2hhcmUgeW91ciBNTCBleHBlcmltZW50cyB3aXRoIGV2ZXJ5b25lLiBZb3UgY2FuIHNoYXJlIGEgbGluayB0byB0aGUgdXBsb2FkZWQgVGVuc29yQm9hcmQgaW4gcGFwZXJzLCBibG9nIHBvc3RzLCBhbmQgc29jaWFsIG1lZGlhLiBUaGlzIGNhbiBzaG93Y2FzZSB0aGUgcmVzdWx0cyBtb3JlIGVmZmVjdGl2ZWx5IGFuZCBoZWxwcyByZXByb2R1Y2liaWxpdHkuXG4iKSxBbSgpLFJtKDYsInAiKSxrdSg3LCJUbyB1cGxvYWQgYSBsb2dkaXIgdG8gVGVuc29yQm9hcmQuZGV2LCBydW4gdGhlIGNvbW1hbmQ6IiksQW0oKSxSbSg4LCJkaXYiLDEpLFJtKDksInByZSIpLFJtKDEwLCJjb2RlIiksa3UoMTEpLEFtKCksQW0oKSxSbSgxMiwiYnV0dG9uIiwyKSxUbSgxMywibWF0LWljb24iLDMpLEFtKCksQW0oKSxSbSgxNCwicCIpLGt1KDE1LCIgT25seSBjZXJ0YWluIHBsdWdpbnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuIFVwbG9hZGVkIFRlbnNvckJvYXJkcyBhcmUgcHVibGljIGFuZCB2aXNpYmxlIHRvIGV2ZXJ5b25lOyBkbyBub3QgdXBsb2FkIHNlbnNpdGl2ZSBkYXRhLlxuIiksQW0oKSxSbSgxNiwiZGl2Iiw0KSxSbSgxNywiYnV0dG9uIiw1KSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DbG9zZSgpfSkpLGt1KDE4LCIgQ2xvc2UgIiksQW0oKSxSbSgxOSwiYSIsNiksa3UoMjAsIiBMZWFybiBtb3JlICIpLEFtKCksQW0oKSksMiZlJiYocmMoMyksS20oImhyZWYiLG4udGVuc29yYm9hcmREb3REZXZVcmwsVHMpLHJjKDgpLFN1KG4uZ2V0Q29tbWFuZFRleHQoKSkscmMoMSksRG0oImNka0NvcHlUb0NsaXBib2FyZCIsbi5nZXRDb21tYW5kVGV4dCgpKSxyYyg3KSxLbSgiaHJlZiIsbi50ZW5zb3Jib2FyZERvdERldlVybCxUcykpfSxkaXJlY3RpdmVzOltYSCxmVyxEVyxLSF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9ZGl2W19uZ2NvbnRlbnQtJUNPTVAlXSwgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjE2cHggMH1bX25naG9zdC0lQ09NUCVdID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9W19uZ2hvc3QtJUNPTVAlXSA+IFtfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9aDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtsaW5lLWhlaWdodDoxLjV9cFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmFuY2hvci10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29tbWFuZFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6I2Y1ZjZmNztib3JkZXItcmFkaXVzOjRweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoycHggMTJweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY29tbWFuZFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb21tYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjF9cHJlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmF1dG99Y29kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS41fS5ib3R0b20tYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bWFyZ2luLXJpZ2h0OjhweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY2xvc2UtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9W19uZ2hvc3QtJUNPTVAlXSAgIC5sZWFybi1tb3JlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzE5NzZkMjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmxlYXJuLW1vcmUtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNDJhNWY1fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChSVyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdGJkZXZfdXBsb2FkX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90YmRldl91cGxvYWRfZGlhbG9nX2NvbXBvbmVudC5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhHfV19KSx7bG9nZGlyOlt7dHlwZTp4eX1dfSk7Y29uc3QgQVc9WncoeFIsKHQ9PnQuZGF0YV9sb2NhdGlvbikpO2NsYXNzIFRXe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmxvZ2RpciQ9dGhpcy5zdG9yZS5waXBlKEZ3KEFXKSl9fWZ1bmN0aW9uIE5XKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwxKSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkub3BlbkRpYWxvZygpfSkpLFJtKDEsInNwYW4iLDIpLFRtKDIsIm1hdC1pY29uIiwzKSxrdSgzLCIgVXBsb2FkICIpLEFtKCksQW0oKX19VFcuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRXKShTbShJdykpfSxUVy7JtWNtcD10byh7dHlwZTpUVyxzZWxlY3RvcnM6W1sidGJkZXYtdXBsb2FkLWRpYWxvZyJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJsb2dkaXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpKSwyJmUmJkRtKCJsb2dkaXIiLFRoKDEsMSxuLmxvZ2RpciQpKX0sZGlyZWN0aXZlczpbUlddLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChUVyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0YmRldi11cGxvYWQtZGlhbG9nIix0ZW1wbGF0ZTonXG4gICAgPHRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50XG4gICAgICBbbG9nZGlyXT0ibG9nZGlyJCB8IGFzeW5jIlxuICAgID48L3RiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IHpXPVsibG9jYWxob3N0IiwiMTI3LjAuMC4xIl07Y2xhc3MgSVd7Y29uc3RydWN0b3IodCxlKXt0aGlzLndpbmRvdz10LHRoaXMuZGlhbG9nPWUsdGhpcy5zaG93bj16Vy5pbmNsdWRlcyh0LmxvY2F0aW9uLmhvc3RuYW1lKX1vcGVuRGlhbG9nKCl7dGhpcy5kaWFsb2cub3BlbihUVyx7d2lkdGg6IjU2MHB4In0pfX1mdW5jdGlvbiBIVyh0LGUpezEmdCYmKHFpKCksUm0oMCwic3ZnIiwyKSxUbSgxLCJwb2x5Z29uIiwzKSxBbSgpKX1JVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SVcpKFNtKCJ3aW5kb3ciKSxTbShvVykpfSxJVy7JtWNtcD10byh7dHlwZTpJVyxzZWxlY3RvcnM6W1sidGJkZXYtdXBsb2FkLWJ1dHRvbiJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgic2hvd24iLG4uc2hvd24pfSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1sibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJjbGljayJdLFsxLCJidXR0b24tY29udGVudHMiXSxbInN2Z0ljb24iLCJpbmZvX291dGxpbmVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZRcCgwLE5XLDQsMCwiYnV0dG9uIiwwKSwyJmUmJkRtKCJuZ0lmIixuLnNob3duKX0sZGlyZWN0aXZlczpbZE0sWEgsRFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICBidXR0b24ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmVifWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGJ1dHRvbi5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH0uYnV0dG9uLWNvbnRlbnRzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjZweH0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSVcsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWJ1dHRvbiIsdGVtcGxhdGVVcmw6Ii4vdGJkZXZfdXBsb2FkX2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90YmRldl91cGxvYWRfYnV0dG9uX2NvbXBvbmVudC5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOldpbmRvdyxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlsid2luZG93Il19XX0se3R5cGU6b1d9XX0pLHtzaG93bjpbe3R5cGU6UHksYXJnczpbImNsYXNzLnNob3duIl19XX0pO2NvbnN0IEZXPVsiKiJdO2Z1bmN0aW9uIExXKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwwKSxWbSgia2V5ZG93biIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkuX2hhbmRsZUtleWRvd24obil9KSkoImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLmNsb3NlZC5lbWl0KCJjbGljayIpfSkpKCJAdHJhbnNmb3JtTWVudS5zdGFydCIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkuX29uQW5pbWF0aW9uU3RhcnQobil9KSkoIkB0cmFuc2Zvcm1NZW51LmRvbmUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLl9vbkFuaW1hdGlvbkRvbmUobil9KSksUm0oMSwiZGl2IiwxKSxYbSgyKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7RG0oImlkIix0LnBhbmVsSWQpKCJuZ0NsYXNzIix0Ll9jbGFzc0xpc3QpKCJAdHJhbnNmb3JtTWVudSIsdC5fcGFuZWxBbmltYXRpb25TdGF0ZSksanAoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5Iix0LmFyaWFMYWJlbGxlZGJ5fHxudWxsKSgiYXJpYS1kZXNjcmliZWRieSIsdC5hcmlhRGVzY3JpYmVkYnl8fG51bGwpfX1jb25zdCBCVz17dHJhbnNmb3JtTWVudTpueCgidHJhbnNmb3JtTWVudSIsW3J4KCJ2b2lkIixheCh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC44KSJ9KSksbHgoInZvaWQgPT4gZW50ZXIiLG94KCIxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsYXgoe29wYWNpdHk6MSx0cmFuc2Zvcm06InNjYWxlKDEpIn0pKSksbHgoIiogPT4gdm9pZCIsb3goIjEwMG1zIDI1bXMgbGluZWFyIixheCh7b3BhY2l0eTowfSkpKV0pLGZhZGVJbkl0ZW1zOm54KCJmYWRlSW5JdGVtcyIsW3J4KCJzaG93aW5nIixheCh7b3BhY2l0eToxfSkpLGx4KCJ2b2lkID0+ICoiLFtheCh7b3BhY2l0eTowfSksb3goIjQwMG1zIDEwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpIildKV0pfSxWVz1uZXcgR2EoIk1hdE1lbnVDb250ZW50Iik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGpXe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3RoaXMuX3RlbXBsYXRlPXQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWUsdGhpcy5fYXBwUmVmPW4sdGhpcy5faW5qZWN0b3I9byx0aGlzLl92aWV3Q29udGFpbmVyUmVmPWksdGhpcy5fZG9jdW1lbnQ9YSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1yLHRoaXMuX2F0dGFjaGVkPW5ldyBJfWF0dGFjaCh0PXt9KXt0aGlzLl9wb3J0YWx8fCh0aGlzLl9wb3J0YWw9bmV3IHhGKHRoaXMuX3RlbXBsYXRlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYpKSx0aGlzLmRldGFjaCgpLHRoaXMuX291dGxldHx8KHRoaXMuX291dGxldD1uZXcgd0YodGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLHRoaXMuX2FwcFJlZix0aGlzLl9pbmplY3RvcikpO2NvbnN0IGU9dGhpcy5fdGVtcGxhdGUuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fb3V0bGV0Lm91dGxldEVsZW1lbnQsZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYmJnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX3BvcnRhbC5hdHRhY2godGhpcy5fb3V0bGV0LHQpLHRoaXMuX2F0dGFjaGVkLm5leHQoKX1kZXRhY2goKXt0aGlzLl9wb3J0YWwuaXNBdHRhY2hlZCYmdGhpcy5fcG9ydGFsLmRldGFjaCgpfW5nT25EZXN0cm95KCl7dGhpcy5fb3V0bGV0JiZ0aGlzLl9vdXRsZXQuZGlzcG9zZSgpfX1qVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8alcpKFNtKFhnKSxTbSh1ZyksU20oT18pLFNtKHJwKSxTbShlaCksU20oWl8pLFNtKFVnKSl9LGpXLsm1ZGlyPWxvKHt0eXBlOmpXLHNlbGVjdG9yczpbWyJuZy10ZW1wbGF0ZSIsIm1hdE1lbnVDb250ZW50IiwiIl1dLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6VlcsdXNlRXhpc3Rpbmc6ald9XSldfSksalcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYZ30se3R5cGU6dWd9LHt0eXBlOk9ffSx7dHlwZTpycH0se3R5cGU6ZWh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6VWd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGpXLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW21hdE1lbnVDb250ZW50XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpWVyx1c2VFeGlzdGluZzpqV31dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGd9LHt0eXBlOnVnfSx7dHlwZTpPX30se3R5cGU6cnB9LHt0eXBlOmVofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlVnfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFVXPW5ldyBHYSgiTUFUX01FTlVfUEFORUwiKSxHVz1RSShLSShjbGFzc3t9KSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFdXIGV4dGVuZHMgR1d7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcigpLHRoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9bix0aGlzLl9wYXJlbnRNZW51PW8sdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9aSx0aGlzLnJvbGU9Im1lbnVpdGVtIix0aGlzLl9ob3ZlcmVkPW5ldyBJLHRoaXMuX2ZvY3VzZWQ9bmV3IEksdGhpcy5faGlnaGxpZ2h0ZWQ9ITEsdGhpcy5fdHJpZ2dlcnNTdWJtZW51PSExLG8mJm8uYWRkSXRlbSYmby5hZGRJdGVtKHRoaXMpfWZvY3VzKHQsZSl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsZSk6dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cyhlKSx0aGlzLl9mb2N1c2VkLm5leHQodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3BhcmVudE1lbnUmJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSYmdGhpcy5fcGFyZW50TWVudS5yZW1vdmVJdGVtKHRoaXMpLHRoaXMuX2hvdmVyZWQuY29tcGxldGUoKSx0aGlzLl9mb2N1c2VkLmNvbXBsZXRlKCl9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1fY2hlY2tEaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfV9oYW5kbGVNb3VzZUVudGVyKCl7dGhpcy5faG92ZXJlZC5uZXh0KHRoaXMpfWdldExhYmVsKCl7dmFyIHQsZTtjb25zdCBuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9uZU5vZGUoITApLG89bi5xdWVyeVNlbGVjdG9yQWxsKCJtYXQtaWNvbiwgLm1hdGVyaWFsLWljb25zIik7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IG49b1tlXTtudWxsPT09KHQ9bi5wYXJlbnROb2RlKXx8dm9pZCAwPT09dHx8dC5yZW1vdmVDaGlsZChuKX1yZXR1cm4obnVsbD09PShlPW4udGV4dENvbnRlbnQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRyaW0oKSl8fCIifV9zZXRIaWdobGlnaHRlZCh0KXt2YXIgZTt0aGlzLl9oaWdobGlnaHRlZD10LG51bGw9PT0oZT10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZil8fHZvaWQgMD09PWV8fGUubWFya0ZvckNoZWNrKCl9fVdXLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXVykoU20oaGcpLFNtKFpfKSxTbShTSSksU20oVVcsOCksU20oVWcpKX0sV1cuybVjbXA9dG8oe3R5cGU6V1csc2VsZWN0b3JzOltbIiIsIm1hdC1tZW51LWl0ZW0iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2NoZWNrRGlzYWJsZWQoZSl9KSkoIm1vdXNlZW50ZXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2hhbmRsZU1vdXNlRW50ZXIoKX0pKSwyJmUmJihqcCgicm9sZSIsbi5yb2xlKSgidGFiaW5kZXgiLG4uX2dldFRhYkluZGV4KCkpKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZHx8bnVsbCkscHUoIm1hdC1tZW51LWl0ZW0iLCEwKSgibWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCIsbi5faGlnaGxpZ2h0ZWQpKCJtYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlciIsbi5fdHJpZ2dlcnNTdWJtZW51KSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixyb2xlOiJyb2xlIn0sZXhwb3J0QXM6WyJtYXRNZW51SXRlbSJdLGZlYXR1cmVzOlt4cF0sYXR0cnM6WyJtYXQtbWVudS1pdGVtIiwiIl0sbmdDb250ZW50U2VsZWN0b3JzOkZXLGRlY2xzOjMsdmFyczozLGNvbnN0czpbWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1tZW51LXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVUcmlnZ2VyIl0sWyJjbGFzcyIsIm1hdC1tZW51LXN1Ym1lbnUtaWNvbiIsInZpZXdCb3giLCIwIDAgNSAxMCIsImZvY3VzYWJsZSIsImZhbHNlIiw0LCJuZ0lmIl0sWyJ2aWV3Qm94IiwiMCAwIDUgMTAiLCJmb2N1c2FibGUiLCJmYWxzZSIsMSwibWF0LW1lbnUtc3VibWVudS1pY29uIl0sWyJwb2ludHMiLCIwLDAgNSw1IDAsMTAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFptKCksWG0oMCksVG0oMSwiZGl2IiwwKSxRcCgyLEhXLDIsMCwic3ZnIiwxKSksMiZlJiYocmMoMSksRG0oIm1hdFJpcHBsZURpc2FibGVkIixuLmRpc2FibGVSaXBwbGV8fG4uZGlzYWJsZWQpKCJtYXRSaXBwbGVUcmlnZ2VyIixuLl9nZXRIb3N0RWxlbWVudCgpKSxyYygxKSxEbSgibmdJZiIsbi5fdHJpZ2dlcnNTdWJtZW51KSl9LGRpcmVjdGl2ZXM6W2tILGRNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxXVy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlNJfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbVVddfSx7dHlwZTpTcn1dfSx7dHlwZTpVZ31dLFdXLnByb3BEZWNvcmF0b3JzPXtyb2xlOlt7dHlwZTp4eX1dLF9jaGVja0Rpc2FibGVkOlt7dHlwZTp3eSxhcmdzOlsiY2xpY2siLFsiJGV2ZW50Il1dfV0sX2hhbmRsZU1vdXNlRW50ZXI6W3t0eXBlOnd5LGFyZ3M6WyJtb3VzZWVudGVyIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXVyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJbbWF0LW1lbnUtaXRlbV0iLGV4cG9ydEFzOiJtYXRNZW51SXRlbSIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtbWVudS1pdGVtXSI6InRydWUiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZF0iOiJfaGlnaGxpZ2h0ZWQiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJdIjoiX3RyaWdnZXJzU3VibWVudSIsIlthdHRyLnRhYmluZGV4XSI6Il9nZXRUYWJJbmRleCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLGVuY2Fwc3VsYXRpb246SG4uTm9uZSx0ZW1wbGF0ZTonPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz0ibWF0LW1lbnUtcmlwcGxlIiBtYXRSaXBwbGVcbiAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iZGlzYWJsZVJpcHBsZSB8fCBkaXNhYmxlZCJcbiAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+XG48L2Rpdj5cblxuPHN2Z1xuICAqbmdJZj0iX3RyaWdnZXJzU3VibWVudSJcbiAgY2xhc3M9Im1hdC1tZW51LXN1Ym1lbnUtaWNvbiJcbiAgdmlld0JveD0iMCAwIDUgMTAiXG4gIGZvY3VzYWJsZT0iZmFsc2UiPjxwb2x5Z29uIHBvaW50cz0iMCwwIDUsNSAwLDEwIi8+PC9zdmc+XG4nfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6U0l9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltVV119LHt0eXBlOlNyfV19LHt0eXBlOlVnfV19KSx7cm9sZTpbe3R5cGU6eHl9XSxfY2hlY2tEaXNhYmxlZDpbe3R5cGU6d3ksYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLF9oYW5kbGVNb3VzZUVudGVyOlt7dHlwZTp3eSxhcmdzOlsibW91c2VlbnRlciJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFlXPW5ldyBHYSgibWF0LW1lbnUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBxVygpe3JldHVybntvdmVybGFwVHJpZ2dlcjohMSx4UG9zaXRpb246ImFmdGVyIix5UG9zaXRpb246ImJlbG93IixiYWNrZHJvcENsYXNzOiJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCJ9fX0pO2xldCBaVz0wO2NsYXNzIFhXe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fZGVmYXVsdE9wdGlvbnM9bix0aGlzLl94UG9zaXRpb249dGhpcy5fZGVmYXVsdE9wdGlvbnMueFBvc2l0aW9uLHRoaXMuX3lQb3NpdGlvbj10aGlzLl9kZWZhdWx0T3B0aW9ucy55UG9zaXRpb24sdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zPW5ldyBWaCx0aGlzLl90YWJTdWJzY3JpcHRpb249bS5FTVBUWSx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5fYW5pbWF0aW9uRG9uZT1uZXcgSSx0aGlzLm92ZXJsYXlQYW5lbENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLm92ZXJsYXlQYW5lbENsYXNzfHwiIix0aGlzLmJhY2tkcm9wQ2xhc3M9dGhpcy5fZGVmYXVsdE9wdGlvbnMuYmFja2Ryb3BDbGFzcyx0aGlzLl9vdmVybGFwVHJpZ2dlcj10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGFwVHJpZ2dlcix0aGlzLl9oYXNCYWNrZHJvcD10aGlzLl9kZWZhdWx0T3B0aW9ucy5oYXNCYWNrZHJvcCx0aGlzLmNsb3NlZD1uZXcgTGgsdGhpcy5jbG9zZT10aGlzLmNsb3NlZCx0aGlzLnBhbmVsSWQ9Im1hdC1tZW51LXBhbmVsLSIrWlcrK31nZXQgeFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3hQb3NpdGlvbn1zZXQgeFBvc2l0aW9uKHQpeyJiZWZvcmUiPT09dHx8ImFmdGVyIj09PXR8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gZSgpe3Rocm93IEVycm9yKCd4UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCdiZWZvcmVcJyBvciBhZnRlclwnLlxuICAgICAgRXhhbXBsZTogPG1hdC1tZW51IHhQb3NpdGlvbj0iYmVmb3JlIiAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT4nKX0pKCksdGhpcy5feFBvc2l0aW9uPXQsdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1nZXQgeVBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3lQb3NpdGlvbn1zZXQgeVBvc2l0aW9uKHQpeyJhYm92ZSI9PT10fHwiYmVsb3ciPT09dHx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoJ3lQb3NpdGlvbiB2YWx1ZSBtdXN0IGJlIGVpdGhlciBcJ2Fib3ZlXCcgb3IgYmVsb3dcJy5cbiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB5UG9zaXRpb249ImFib3ZlIiAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT4nKX0pKCksdGhpcy5feVBvc2l0aW9uPXQsdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1nZXQgb3ZlcmxhcFRyaWdnZXIoKXtyZXR1cm4gdGhpcy5fb3ZlcmxhcFRyaWdnZXJ9c2V0IG92ZXJsYXBUcmlnZ2VyKHQpe3RoaXMuX292ZXJsYXBUcmlnZ2VyPXl6KHQpfWdldCBoYXNCYWNrZHJvcCgpe3JldHVybiB0aGlzLl9oYXNCYWNrZHJvcH1zZXQgaGFzQmFja2Ryb3AodCl7dGhpcy5faGFzQmFja2Ryb3A9eXoodCl9c2V0IHBhbmVsQ2xhc3ModCl7Y29uc3QgZT10aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M7ZSYmZS5sZW5ndGgmJmUuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57dGhpcy5fY2xhc3NMaXN0W3RdPSExfSkpLHRoaXMuX3ByZXZpb3VzUGFuZWxDbGFzcz10LHQmJnQubGVuZ3RoJiYodC5zcGxpdCgiICIpLmZvckVhY2goKHQ9Pnt0aGlzLl9jbGFzc0xpc3RbdF09ITB9KSksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZT0iIil9Z2V0IGNsYXNzTGlzdCgpe3JldHVybiB0aGlzLnBhbmVsQ2xhc3N9c2V0IGNsYXNzTGlzdCh0KXt0aGlzLnBhbmVsQ2xhc3M9dH1uZ09uSW5pdCgpe3RoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fdXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKSx0aGlzLl9rZXlNYW5hZ2VyPW5ldyBlSSh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLndpdGhXcmFwKCkud2l0aFR5cGVBaGVhZCgpLndpdGhIb21lQW5kRW5kKCksdGhpcy5fdGFiU3Vic2NyaXB0aW9uPXRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKCk9PnRoaXMuY2xvc2VkLmVtaXQoInRhYiIpKSksdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMucGlwZShOZSh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLHplKCh0PT5yZSguLi50Lm1hcCgodD0+dC5fZm9jdXNlZCkpKSkpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSh0KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKSx0aGlzLl90YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZC5jb21wbGV0ZSgpfV9ob3ZlcmVkKCl7cmV0dXJuIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoTmUodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSx6ZSgodD0+cmUoLi4udC5tYXAoKHQ9PnQuX2hvdmVyZWQpKSkpKSl9YWRkSXRlbSh0KXt9cmVtb3ZlSXRlbSh0KXt9X2hhbmRsZUtleWRvd24odCl7Y29uc3QgZT10LmtleUNvZGUsbj10aGlzLl9rZXlNYW5hZ2VyO3N3aXRjaChlKXtjYXNlIHV6OmJ6KHQpfHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLnBhcmVudE1lbnUmJiJsdHIiPT09dGhpcy5kaXJlY3Rpb24mJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztjYXNlIDM5OnRoaXMucGFyZW50TWVudSYmInJ0bCI9PT10aGlzLmRpcmVjdGlvbiYmdGhpcy5jbG9zZWQuZW1pdCgia2V5ZG93biIpO2JyZWFrO2RlZmF1bHQ6ZSE9PWd6JiZlIT09aHp8fG4uc2V0Rm9jdXNPcmlnaW4oImtleWJvYXJkIiksbi5vbktleWRvd24odCl9fWZvY3VzRmlyc3RJdGVtKHQ9InByb2dyYW0iKXt0aGlzLmxhenlDb250ZW50P3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9mb2N1c0ZpcnN0SXRlbSh0KSkpOnRoaXMuX2ZvY3VzRmlyc3RJdGVtKHQpfV9mb2N1c0ZpcnN0SXRlbSh0KXtjb25zdCBlPXRoaXMuX2tleU1hbmFnZXI7aWYoZS5zZXRGb2N1c09yaWdpbih0KS5zZXRGaXJzdEl0ZW1BY3RpdmUoKSwhZS5hY3RpdmVJdGVtJiZ0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMubGVuZ3RoKXtsZXQgdD10aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZmlyc3QuX2dldEhvc3RFbGVtZW50KCkucGFyZW50RWxlbWVudDtmb3IoO3Q7KXtpZigibWVudSI9PT10LmdldEF0dHJpYnV0ZSgicm9sZSIpKXt0LmZvY3VzKCk7YnJlYWt9dD10LnBhcmVudEVsZW1lbnR9fX1yZXNldEFjdGl2ZUl0ZW0oKXt0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpfXNldEVsZXZhdGlvbih0KXtjb25zdCBlPU1hdGgubWluKHRoaXMuX2Jhc2VFbGV2YXRpb24rdCwyNCksbj1gJHt0aGlzLl9lbGV2YXRpb25QcmVmaXh9JHtlfWAsbz1PYmplY3Qua2V5cyh0aGlzLl9jbGFzc0xpc3QpLmZpbmQoKHQ9PnQuc3RhcnRzV2l0aCh0aGlzLl9lbGV2YXRpb25QcmVmaXgpKSk7byYmbyE9PXRoaXMuX3ByZXZpb3VzRWxldmF0aW9ufHwodGhpcy5fcHJldmlvdXNFbGV2YXRpb24mJih0aGlzLl9jbGFzc0xpc3RbdGhpcy5fcHJldmlvdXNFbGV2YXRpb25dPSExKSx0aGlzLl9jbGFzc0xpc3Rbbl09ITAsdGhpcy5fcHJldmlvdXNFbGV2YXRpb249bil9c2V0UG9zaXRpb25DbGFzc2VzKHQ9dGhpcy54UG9zaXRpb24sZT10aGlzLnlQb3NpdGlvbil7Y29uc3Qgbj10aGlzLl9jbGFzc0xpc3Q7blsibWF0LW1lbnUtYmVmb3JlIl09ImJlZm9yZSI9PT10LG5bIm1hdC1tZW51LWFmdGVyIl09ImFmdGVyIj09PXQsblsibWF0LW1lbnUtYWJvdmUiXT0iYWJvdmUiPT09ZSxuWyJtYXQtbWVudS1iZWxvdyJdPSJiZWxvdyI9PT1lfV9zdGFydEFuaW1hdGlvbigpe3RoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9ImVudGVyIn1fcmVzZXRBbmltYXRpb24oKXt0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlPSJ2b2lkIn1fb25BbmltYXRpb25Eb25lKHQpe3RoaXMuX2FuaW1hdGlvbkRvbmUubmV4dCh0KSx0aGlzLl9pc0FuaW1hdGluZz0hMX1fb25BbmltYXRpb25TdGFydCh0KXt0aGlzLl9pc0FuaW1hdGluZz0hMCwiZW50ZXIiPT09dC50b1N0YXRlJiYwPT09dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgmJih0LmVsZW1lbnQuc2Nyb2xsVG9wPTApfV91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpe3RoaXMuX2FsbEl0ZW1zLmNoYW5nZXMucGlwZShOZSh0aGlzLl9hbGxJdGVtcykpLnN1YnNjcmliZSgodD0+e3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldCh0LmZpbHRlcigodD0+dC5fcGFyZW50TWVudT09PXRoaXMpKSksdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLm5vdGlmeU9uQ2hhbmdlcygpfSkpfX1YVy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFcpKFNtKGhnKSxTbShhXyksU20oWVcpKX0sWFcuybVkaXI9bG8oe3R5cGU6WFcsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoJGgobyxWVyw1KSwkaChvLFdXLDUpLCRoKG8sV1csNCkpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4ubGF6eUNvbnRlbnQ9dC5maXJzdCksSmgodD10YigpKSYmKG4uX2FsbEl0ZW1zPXQpLEpoKHQ9dGIoKSkmJihuLml0ZW1zPXQpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKFhnLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4udGVtcGxhdGVSZWY9dC5maXJzdCl9fSxpbnB1dHM6e2JhY2tkcm9wQ2xhc3M6ImJhY2tkcm9wQ2xhc3MiLHhQb3NpdGlvbjoieFBvc2l0aW9uIix5UG9zaXRpb246InlQb3NpdGlvbiIsb3ZlcmxhcFRyaWdnZXI6Im92ZXJsYXBUcmlnZ2VyIixoYXNCYWNrZHJvcDoiaGFzQmFja2Ryb3AiLHBhbmVsQ2xhc3M6WyJjbGFzcyIsInBhbmVsQ2xhc3MiXSxjbGFzc0xpc3Q6ImNsYXNzTGlzdCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il19LG91dHB1dHM6e2Nsb3NlZDoiY2xvc2VkIixjbG9zZToiY2xvc2UifX0pLFhXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWVddfV19XSxYVy5wcm9wRGVjb3JhdG9ycz17X2FsbEl0ZW1zOlt7dHlwZTpZYSxhcmdzOltXVyx7ZGVzY2VuZGFudHM6ITB9XX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOnh5fV0sYXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLHhQb3NpdGlvbjpbe3R5cGU6eHl9XSx5UG9zaXRpb246W3t0eXBlOnh5fV0sdGVtcGxhdGVSZWY6W3t0eXBlOlphLGFyZ3M6W1hnXX1dLGl0ZW1zOlt7dHlwZTpZYSxhcmdzOltXVyx7ZGVzY2VuZGFudHM6ITF9XX1dLGxhenlDb250ZW50Olt7dHlwZTpxYSxhcmdzOltWV119XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6eHl9XSxoYXNCYWNrZHJvcDpbe3R5cGU6eHl9XSxwYW5lbENsYXNzOlt7dHlwZTp4eSxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6eHl9XSxjbG9zZWQ6W3t0eXBlOk95fV0sY2xvc2U6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWFcsW3t0eXBlOkN5fV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1lXXX1dfV19KSx7YmFja2Ryb3BDbGFzczpbe3R5cGU6eHl9XSxjbG9zZWQ6W3t0eXBlOk95fV0sY2xvc2U6W3t0eXBlOk95fV0seFBvc2l0aW9uOlt7dHlwZTp4eX1dLHlQb3NpdGlvbjpbe3R5cGU6eHl9XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6eHl9XSxoYXNCYWNrZHJvcDpbe3R5cGU6eHl9XSxwYW5lbENsYXNzOlt7dHlwZTp4eSxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6eHl9XSxfYWxsSXRlbXM6W3t0eXBlOllhLGFyZ3M6W1dXLHtkZXNjZW5kYW50czohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLHRlbXBsYXRlUmVmOlt7dHlwZTpaYSxhcmdzOltYZ119XSxpdGVtczpbe3R5cGU6WWEsYXJnczpbV1cse2Rlc2NlbmRhbnRzOiExfV19XSxsYXp5Q29udGVudDpbe3R5cGU6cWEsYXJnczpbVlddfV19KTtjbGFzcyBLVyBleHRlbmRzIFhXe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUsbiksdGhpcy5fZWxldmF0aW9uUHJlZml4PSJtYXQtZWxldmF0aW9uLXoiLHRoaXMuX2Jhc2VFbGV2YXRpb249NH19S1cuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtXKShTbShoZyksU20oYV8pLFNtKFlXKSl9LEtXLsm1Y21wPXRvKHt0eXBlOktXLHNlbGVjdG9yczpbWyJtYXQtbWVudSJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZqcCgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkoImFyaWEtZGVzY3JpYmVkYnkiLG51bGwpfSxleHBvcnRBczpbIm1hdE1lbnUiXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOlVXLHVzZUV4aXN0aW5nOktXfV0pLHhwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6RlcsZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbInRhYmluZGV4IiwiLTEiLCJyb2xlIiwibWVudSIsMSwibWF0LW1lbnUtcGFuZWwiLDMsImlkIiwibmdDbGFzcyIsImtleWRvd24iLCJjbGljayJdLFsxLCJtYXQtbWVudS1jb250ZW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFFwKDAsTFcsMyw2LCJuZy10ZW1wbGF0ZSIpKX0sZGlyZWN0aXZlczpbYU1dLHN0eWxlczpbIm1hdC1tZW51e2Rpc3BsYXk6bm9uZX0ubWF0LW1lbnUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO21heC1oZWlnaHQ6Y2FsYygxMDB2aCAtIDQ4cHgpO2JvcmRlci1yYWRpdXM6NHB4O291dGxpbmU6MDttaW4taGVpZ2h0OjY0cHh9Lm1hdC1tZW51LXBhbmVsLm5nLWFuaW1hdGluZ3twb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXBhbmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtbWVudS1jb250ZW50Om5vdCg6ZW1wdHkpe3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1tZW51LWl0ZW17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZW51LWl0ZW06Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbXt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW17bWFyZ2luLXRvcDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZHtvdXRsaW5lOmRvdHRlZCAxcHh9Lm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MTZweDtwYWRkaW5nLWxlZnQ6MzJweH0ubWF0LW1lbnUtc3VibWVudS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKTt3aWR0aDo1cHg7aGVpZ2h0OjEwcHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtbWVudS1zdWJtZW51LWljb257cmlnaHQ6YXV0bztsZWZ0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSkgc2NhbGVYKC0xKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1zdWJtZW51LWljb257ZmlsbDpDYW52YXNUZXh0fWJ1dHRvbi5tYXQtbWVudS1pdGVte3dpZHRoOjEwMCV9Lm1hdC1tZW51LWl0ZW0gLm1hdC1tZW51LXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbQlcudHJhbnNmb3JtTWVudSxCVy5mYWRlSW5JdGVtc119LGNoYW5nZURldGVjdGlvbjowfSksS1cuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltZV119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoS1csW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LW1lbnUiLHRlbXBsYXRlOic8bmctdGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz0ibWF0LW1lbnUtcGFuZWwiXG4gICAgW2lkXT0icGFuZWxJZCJcbiAgICBbbmdDbGFzc109Il9jbGFzc0xpc3QiXG4gICAgKGtleWRvd24pPSJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIlxuICAgIChjbGljayk9ImNsb3NlZC5lbWl0KFwnY2xpY2tcJykiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT0iX3BhbmVsQW5pbWF0aW9uU3RhdGUiXG4gICAgKEB0cmFuc2Zvcm1NZW51LnN0YXJ0KT0iX29uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KSJcbiAgICAoQHRyYW5zZm9ybU1lbnUuZG9uZSk9Il9vbkFuaW1hdGlvbkRvbmUoJGV2ZW50KSJcbiAgICB0YWJpbmRleD0iLTEiXG4gICAgcm9sZT0ibWVudSJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkgfHwgbnVsbCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT0iYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiPlxuICAgIDxkaXYgY2xhc3M9Im1hdC1tZW51LWNvbnRlbnQiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4nLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGV4cG9ydEFzOiJtYXRNZW51Iixob3N0OnsiW2F0dHIuYXJpYS1sYWJlbF0iOiJudWxsIiwiW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSI6Im51bGwiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Im51bGwifSxhbmltYXRpb25zOltCVy50cmFuc2Zvcm1NZW51LEJXLmZhZGVJbkl0ZW1zXSxwcm92aWRlcnM6W3twcm92aWRlOlVXLHVzZUV4aXN0aW5nOktXfV0sc3R5bGVzOlsibWF0LW1lbnV7ZGlzcGxheTpub25lfS5tYXQtbWVudS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNDhweCk7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowO21pbi1oZWlnaHQ6NjRweH0ubWF0LW1lbnUtcGFuZWwubmctYW5pbWF0aW5ne3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1tZW51LWNvbnRlbnQ6bm90KDplbXB0eSl7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LW1lbnUtaXRlbXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1lbnUtaXRlbTo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVte3RleHQtYWxpZ246cmlnaHR9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW1lbnUtaXRlbSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbXttYXJnaW4tdG9wOjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVke291dGxpbmU6ZG90dGVkIDFweH0ubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDozMnB4fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDoxNnB4O3BhZGRpbmctbGVmdDozMnB4fS5tYXQtbWVudS1zdWJtZW51LWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3dpZHRoOjVweDtoZWlnaHQ6MTBweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntyaWdodDphdXRvO2xlZnQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSBzY2FsZVgoLTEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntmaWxsOkNhbnZhc1RleHR9YnV0dG9uLm1hdC1tZW51LWl0ZW17d2lkdGg6MTAwJX0ubWF0LW1lbnUtaXRlbSAubWF0LW1lbnUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1lXXX1dfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEpXPW5ldyBHYSgibWF0LW1lbnUtc2Nyb2xsLXN0cmF0ZWd5IiksUVc9e3Byb3ZpZGU6SlcsZGVwczpbcExdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gJFcodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSx0WT1Oeih7cGFzc2l2ZTohMH0pO2NsYXNzIGVZe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2VsZW1lbnQ9ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5fbWVudUl0ZW1JbnN0YW5jZT1hLHRoaXMuX2Rpcj1yLHRoaXMuX2ZvY3VzTW9uaXRvcj1zLHRoaXMuX292ZXJsYXlSZWY9bnVsbCx0aGlzLl9tZW51T3Blbj0hMSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj1tLkVNUFRZLHRoaXMuX2hvdmVyU3Vic2NyaXB0aW9uPW0uRU1QVFksdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uPW0uRU1QVFksdGhpcy5faGFuZGxlVG91Y2hTdGFydD10PT57aEkodCl8fCh0aGlzLl9vcGVuZWRCeT0idG91Y2giKX0sdGhpcy5fb3BlbmVkQnk9dm9pZCAwLHRoaXMucmVzdG9yZUZvY3VzPSEwLHRoaXMubWVudU9wZW5lZD1uZXcgTGgsdGhpcy5vbk1lbnVPcGVuPXRoaXMubWVudU9wZW5lZCx0aGlzLm1lbnVDbG9zZWQ9bmV3IExoLHRoaXMub25NZW51Q2xvc2U9dGhpcy5tZW51Q2xvc2VkLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PW8sdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51PWkgaW5zdGFuY2VvZiBYVz9pOnZvaWQgMCxlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCx0WSksYSYmKGEuX3RyaWdnZXJzU3VibWVudT10aGlzLnRyaWdnZXJzU3VibWVudSgpKX1nZXQgX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcigpe3JldHVybiB0aGlzLm1lbnV9c2V0IF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IodCl7dGhpcy5tZW51PXR9Z2V0IG1lbnUoKXtyZXR1cm4gdGhpcy5fbWVudX1zZXQgbWVudSh0KXt0IT09dGhpcy5fbWVudSYmKHRoaXMuX21lbnU9dCx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0JiYodCE9PXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoIm1hdE1lbnVUcmlnZ2VyRm9yOiBtZW51IGNhbm5vdCBjb250YWluIGl0cyBvd24gdHJpZ2dlci4gQXNzaWduIGEgbWVudSB0aGF0IGlzIG5vdCBhIHBhcmVudCBvZiB0aGUgdHJpZ2dlciBvciBtb3ZlIHRoZSB0cmlnZ2VyIG91dHNpZGUgb2YgdGhlIG1lbnUuIil9KSgpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj10LmNsb3NlLnN1YnNjcmliZSgodD0+e3RoaXMuX2Rlc3Ryb3lNZW51KHQpLCJjbGljayIhPT10JiYidGFiIiE9PXR8fCF0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnV8fHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5jbG9zZWQuZW1pdCh0KX0pKSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2NoZWNrTWVudSgpLHRoaXMuX2hhbmRsZUhvdmVyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsKSx0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCx0WSksdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCBtZW51T3Blbigpe3JldHVybiB0aGlzLl9tZW51T3Blbn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9dHJpZ2dlcnNTdWJtZW51KCl7cmV0dXJuISghdGhpcy5fbWVudUl0ZW1JbnN0YW5jZXx8IXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudSl9dG9nZ2xlTWVudSgpe3JldHVybiB0aGlzLl9tZW51T3Blbj90aGlzLmNsb3NlTWVudSgpOnRoaXMub3Blbk1lbnUoKX1vcGVuTWVudSgpe2lmKHRoaXMuX21lbnVPcGVuKXJldHVybjt0aGlzLl9jaGVja01lbnUoKTtjb25zdCB0PXRoaXMuX2NyZWF0ZU92ZXJsYXkoKSxlPXQuZ2V0Q29uZmlnKCk7dGhpcy5fc2V0UG9zaXRpb24oZS5wb3NpdGlvblN0cmF0ZWd5KSxlLmhhc0JhY2tkcm9wPW51bGw9PXRoaXMubWVudS5oYXNCYWNrZHJvcD8hdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKTp0aGlzLm1lbnUuaGFzQmFja2Ryb3AsdC5hdHRhY2godGhpcy5fZ2V0UG9ydGFsKCkpLHRoaXMubWVudS5sYXp5Q29udGVudCYmdGhpcy5tZW51LmxhenlDb250ZW50LmF0dGFjaCh0aGlzLm1lbnVEYXRhKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj10aGlzLl9tZW51Q2xvc2luZ0FjdGlvbnMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmNsb3NlTWVudSgpKSksdGhpcy5faW5pdE1lbnUoKSx0aGlzLm1lbnUgaW5zdGFuY2VvZiBYVyYmdGhpcy5tZW51Ll9zdGFydEFuaW1hdGlvbigpfWNsb3NlTWVudSgpe3RoaXMubWVudS5jbG9zZS5lbWl0KCl9Zm9jdXModCxlKXt0aGlzLl9mb2N1c01vbml0b3ImJnQ/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnQsdCxlKTp0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoZSl9dXBkYXRlUG9zaXRpb24oKXt2YXIgdDtudWxsPT09KHQ9dGhpcy5fb3ZlcmxheVJlZil8fHZvaWQgMD09PXR8fHQudXBkYXRlUG9zaXRpb24oKX1fZGVzdHJveU1lbnUodCl7aWYoIXRoaXMuX292ZXJsYXlSZWZ8fCF0aGlzLm1lbnVPcGVuKXJldHVybjtjb25zdCBlPXRoaXMubWVudTt0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksIXRoaXMucmVzdG9yZUZvY3VzfHwia2V5ZG93biIhPT10JiZ0aGlzLl9vcGVuZWRCeSYmdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKXx8dGhpcy5mb2N1cyh0aGlzLl9vcGVuZWRCeSksdGhpcy5fb3BlbmVkQnk9dm9pZCAwLGUgaW5zdGFuY2VvZiBYVz8oZS5fcmVzZXRBbmltYXRpb24oKSxlLmxhenlDb250ZW50P2UuX2FuaW1hdGlvbkRvbmUucGlwZShjZSgodD0+InZvaWQiPT09dC50b1N0YXRlKSksYmUoMSksSWUoZS5sYXp5Q29udGVudC5fYXR0YWNoZWQpKS5zdWJzY3JpYmUoe25leHQ6KCk9PmUubGF6eUNvbnRlbnQuZGV0YWNoKCksY29tcGxldGU6KCk9PnRoaXMuX3NldElzTWVudU9wZW4oITEpfSk6dGhpcy5fc2V0SXNNZW51T3BlbighMSkpOih0aGlzLl9zZXRJc01lbnVPcGVuKCExKSxlLmxhenlDb250ZW50JiZlLmxhenlDb250ZW50LmRldGFjaCgpKX1faW5pdE1lbnUoKXt0aGlzLm1lbnUucGFyZW50TWVudT10aGlzLnRyaWdnZXJzU3VibWVudSgpP3RoaXMuX3BhcmVudE1hdGVyaWFsTWVudTp2b2lkIDAsdGhpcy5tZW51LmRpcmVjdGlvbj10aGlzLmRpcix0aGlzLl9zZXRNZW51RWxldmF0aW9uKCksdGhpcy5tZW51LmZvY3VzRmlyc3RJdGVtKHRoaXMuX29wZW5lZEJ5fHwicHJvZ3JhbSIpLHRoaXMuX3NldElzTWVudU9wZW4oITApfV9zZXRNZW51RWxldmF0aW9uKCl7aWYodGhpcy5tZW51LnNldEVsZXZhdGlvbil7bGV0IHQ9MCxlPXRoaXMubWVudS5wYXJlbnRNZW51O2Zvcig7ZTspdCsrLGU9ZS5wYXJlbnRNZW51O3RoaXMubWVudS5zZXRFbGV2YXRpb24odCl9fV9zZXRJc01lbnVPcGVuKHQpe3RoaXMuX21lbnVPcGVuPXQsdGhpcy5fbWVudU9wZW4/dGhpcy5tZW51T3BlbmVkLmVtaXQoKTp0aGlzLm1lbnVDbG9zZWQuZW1pdCgpLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnRoaXMuX21lbnVJdGVtSW5zdGFuY2UuX3NldEhpZ2hsaWdodGVkKHQpfV9jaGVja01lbnUoKXt0aGlzLm1lbnV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiB0KCl7dGhyb3cgRXJyb3IoJ21hdE1lbnVUcmlnZ2VyRm9yOiBtdXN0IHBhc3MgaW4gYW4gbWF0LW1lbnUgaW5zdGFuY2UuXG5cbiAgICBFeGFtcGxlOlxuICAgICAgPG1hdC1tZW51ICNtZW51PSJtYXRNZW51Ij48L21hdC1tZW51PlxuICAgICAgPGJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPSJtZW51Ij48L2J1dHRvbj4nKX0pKCl9X2NyZWF0ZU92ZXJsYXkoKXtpZighdGhpcy5fb3ZlcmxheVJlZil7Y29uc3QgdD10aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7dGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnModC5wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHQpLHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgpfXJldHVybiB0aGlzLl9vdmVybGF5UmVmfV9nZXRPdmVybGF5Q29uZmlnKCl7cmV0dXJuIG5ldyBWRih7cG9zaXRpb25TdHJhdGVneTp0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KS53aXRoTG9ja2VkUG9zaXRpb24oKS53aXRoR3Jvd0FmdGVyT3BlbigpLndpdGhUcmFuc2Zvcm1PcmlnaW5PbigiLm1hdC1tZW51LXBhbmVsLCAubWF0LW1kYy1tZW51LXBhbmVsIiksYmFja2Ryb3BDbGFzczp0aGlzLm1lbnUuYmFja2Ryb3BDbGFzc3x8ImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIixwYW5lbENsYXNzOnRoaXMubWVudS5vdmVybGF5UGFuZWxDbGFzcyxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpLGRpcmVjdGlvbjp0aGlzLl9kaXJ9KX1fc3Vic2NyaWJlVG9Qb3NpdGlvbnModCl7dGhpcy5tZW51LnNldFBvc2l0aW9uQ2xhc3NlcyYmdC5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCh0PT57dGhpcy5tZW51LnNldFBvc2l0aW9uQ2xhc3Nlcygic3RhcnQiPT09dC5jb25uZWN0aW9uUGFpci5vdmVybGF5WD8iYWZ0ZXIiOiJiZWZvcmUiLCJ0b3AiPT09dC5jb25uZWN0aW9uUGFpci5vdmVybGF5WT8iYmVsb3ciOiJhYm92ZSIpfSkpfV9zZXRQb3NpdGlvbih0KXtsZXRbZSxuXT0iYmVmb3JlIj09PXRoaXMubWVudS54UG9zaXRpb24/WyJlbmQiLCJzdGFydCJdOlsic3RhcnQiLCJlbmQiXSxbbyxpXT0iYWJvdmUiPT09dGhpcy5tZW51LnlQb3NpdGlvbj9bImJvdHRvbSIsInRvcCJdOlsidG9wIiwiYm90dG9tIl0sW2Escl09W28saV0sW3MsbF09W2Usbl0sYz0wO3RoaXMudHJpZ2dlcnNTdWJtZW51KCk/KGw9ZT0iYmVmb3JlIj09PXRoaXMubWVudS54UG9zaXRpb24/InN0YXJ0IjoiZW5kIixuPXM9ImVuZCI9PT1lPyJzdGFydCI6ImVuZCIsYz0iYm90dG9tIj09PW8/ODotOCk6dGhpcy5tZW51Lm92ZXJsYXBUcmlnZ2VyfHwoYT0idG9wIj09PW8/ImJvdHRvbSI6InRvcCIscj0idG9wIj09PWk/ImJvdHRvbSI6InRvcCIpLHQud2l0aFBvc2l0aW9ucyhbe29yaWdpblg6ZSxvcmlnaW5ZOmEsb3ZlcmxheVg6cyxvdmVybGF5WTpvLG9mZnNldFk6Y30se29yaWdpblg6bixvcmlnaW5ZOmEsb3ZlcmxheVg6bCxvdmVybGF5WTpvLG9mZnNldFk6Y30se29yaWdpblg6ZSxvcmlnaW5ZOnIsb3ZlcmxheVg6cyxvdmVybGF5WTppLG9mZnNldFk6LWN9LHtvcmlnaW5YOm4sb3JpZ2luWTpyLG92ZXJsYXlYOmwsb3ZlcmxheVk6aSxvZmZzZXRZOi1jfV0pfV9tZW51Q2xvc2luZ0FjdGlvbnMoKXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLGU9dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpO3JldHVybiByZSh0LHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuY2xvc2VkOkV0KCksdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51P3RoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5faG92ZXJlZCgpLnBpcGUoY2UoKHQ9PnQhPT10aGlzLl9tZW51SXRlbUluc3RhbmNlKSksY2UoKCgpPT50aGlzLl9tZW51T3BlbikpKTpFdCgpLGUpfV9oYW5kbGVNb3VzZWRvd24odCl7Z0kodCl8fCh0aGlzLl9vcGVuZWRCeT0wPT09dC5idXR0b24/Im1vdXNlIjp2b2lkIDAsdGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmdC5wcmV2ZW50RGVmYXVsdCgpKX1faGFuZGxlS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZTtlIT09bXomJmUhPT1menx8KHRoaXMuX29wZW5lZEJ5PSJrZXlib2FyZCIpLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJigzOT09PWUmJiJsdHIiPT09dGhpcy5kaXJ8fDM3PT09ZSYmInJ0bCI9PT10aGlzLmRpcikmJih0aGlzLl9vcGVuZWRCeT0ia2V5Ym9hcmQiLHRoaXMub3Blbk1lbnUoKSl9X2hhbmRsZUNsaWNrKHQpe3RoaXMudHJpZ2dlcnNTdWJtZW51KCk/KHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vcGVuTWVudSgpKTp0aGlzLnRvZ2dsZU1lbnUoKX1faGFuZGxlSG92ZXIoKXt0aGlzLnRyaWdnZXJzU3VibWVudSgpJiZ0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUmJih0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj10aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKGNlKCh0PT50PT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSYmIXQuZGlzYWJsZWQpKSxDZSgwLCQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3BlbmVkQnk9Im1vdXNlIix0aGlzLm1lbnUgaW5zdGFuY2VvZiBYVyYmdGhpcy5tZW51Ll9pc0FuaW1hdGluZz90aGlzLm1lbnUuX2FuaW1hdGlvbkRvbmUucGlwZShiZSgxKSxDZSgwLCQpLEllKHRoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5faG92ZXJlZCgpKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5vcGVuTWVudSgpKSk6dGhpcy5vcGVuTWVudSgpfSkpKX1fZ2V0UG9ydGFsKCl7cmV0dXJuIHRoaXMuX3BvcnRhbCYmdGhpcy5fcG9ydGFsLnRlbXBsYXRlUmVmPT09dGhpcy5tZW51LnRlbXBsYXRlUmVmfHwodGhpcy5fcG9ydGFsPW5ldyB4Rih0aGlzLm1lbnUudGVtcGxhdGVSZWYsdGhpcy5fdmlld0NvbnRhaW5lclJlZikpLHRoaXMuX3BvcnRhbH19ZVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGVZKShTbShwTCksU20oaGcpLFNtKGVoKSxTbShKVyksU20oVVcsOCksU20oV1csMTApLFNtKEhJLDgpLFNtKFNJKSl9LGVZLsm1ZGlyPWxvKHt0eXBlOmVZLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS10cmlnZ2VyLWZvciIsIiJdLFsiIiwibWF0TWVudVRyaWdnZXJGb3IiLCIiXV0saG9zdEF0dHJzOlsiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1tZW51LXRyaWdnZXIiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlTW91c2Vkb3duKGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlS2V5ZG93bihlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVDbGljayhlKX0pKSwyJmUmJmpwKCJhcmlhLWV4cGFuZGVkIixuLm1lbnVPcGVufHxudWxsKSgiYXJpYS1jb250cm9scyIsbi5tZW51T3Blbj9uLm1lbnUucGFuZWxJZDpudWxsKX0saW5wdXRzOntyZXN0b3JlRm9jdXM6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyIsInJlc3RvcmVGb2N1cyJdLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6WyJtYXQtbWVudS10cmlnZ2VyLWZvciIsIl9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IiXSxtZW51OlsibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51Il0sbWVudURhdGE6WyJtYXRNZW51VHJpZ2dlckRhdGEiLCJtZW51RGF0YSJdfSxvdXRwdXRzOnttZW51T3BlbmVkOiJtZW51T3BlbmVkIixvbk1lbnVPcGVuOiJvbk1lbnVPcGVuIixtZW51Q2xvc2VkOiJtZW51Q2xvc2VkIixvbk1lbnVDbG9zZToib25NZW51Q2xvc2UifSxleHBvcnRBczpbIm1hdE1lbnVUcmlnZ2VyIl19KSxlWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBMfSx7dHlwZTpoZ30se3R5cGU6ZWh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltKV119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1VXXX0se3R5cGU6U3J9XX0se3R5cGU6V1csZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfV19LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlNJfV0sZVkucHJvcERlY29yYXRvcnM9e19kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOnh5LGFyZ3M6WyJtYXQtbWVudS10cmlnZ2VyLWZvciJdfV0sbWVudTpbe3R5cGU6eHksYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxtZW51RGF0YTpbe3R5cGU6eHksYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV0scmVzdG9yZUZvY3VzOlt7dHlwZTp4eSxhcmdzOlsibWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXMiXX1dLG1lbnVPcGVuZWQ6W3t0eXBlOk95fV0sb25NZW51T3Blbjpbe3R5cGU6T3l9XSxtZW51Q2xvc2VkOlt7dHlwZTpPeX1dLG9uTWVudUNsb3NlOlt7dHlwZTpPeX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGVZLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXQtbWVudS10cmlnZ2VyLWZvcl0sIFttYXRNZW51VHJpZ2dlckZvcl0iLGhvc3Q6e2NsYXNzOiJtYXQtbWVudS10cmlnZ2VyIiwiYXJpYS1oYXNwb3B1cCI6InRydWUiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6Im1lbnVPcGVuIHx8IG51bGwiLCJbYXR0ci5hcmlhLWNvbnRyb2xzXSI6Im1lbnVPcGVuID8gbWVudS5wYW5lbElkIDogbnVsbCIsIihtb3VzZWRvd24pIjoiX2hhbmRsZU1vdXNlZG93bigkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soJGV2ZW50KSJ9LGV4cG9ydEFzOiJtYXRNZW51VHJpZ2dlciJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpwTH0se3R5cGU6aGd9LHt0eXBlOmVofSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbSlddfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltVV119LHt0eXBlOlNyfV19LHt0eXBlOldXLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpTSX1dfSkse3Jlc3RvcmVGb2N1czpbe3R5cGU6eHksYXJnczpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIl19XSxtZW51T3BlbmVkOlt7dHlwZTpPeX1dLG9uTWVudU9wZW46W3t0eXBlOk95fV0sbWVudUNsb3NlZDpbe3R5cGU6T3l9XSxvbk1lbnVDbG9zZTpbe3R5cGU6T3l9XSxfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yOlt7dHlwZTp4eSxhcmdzOlsibWF0LW1lbnUtdHJpZ2dlci1mb3IiXX1dLG1lbnU6W3t0eXBlOnh5LGFyZ3M6WyJtYXRNZW51VHJpZ2dlckZvciJdfV0sbWVudURhdGE6W3t0eXBlOnh5LGFyZ3M6WyJtYXRNZW51VHJpZ2dlckRhdGEiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBuWXt9blkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5ZKX0sblkuybVtb2Q9YW8oe3R5cGU6bll9KSxuWS7JtWluaj12bih7cHJvdmlkZXJzOltRV10saW1wb3J0czpbWEldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChuWSxbe3R5cGU6QXksYXJnczpbe2V4cG9ydHM6W2VZLGpXLFhJXSxkZWNsYXJhdGlvbnM6W2VZLGpXXSxwcm92aWRlcnM6W1FXXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKG5ZLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bZVksalddfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2VZLGpXLFhJXX19KTtjbGFzcyBvWXt9ZnVuY3Rpb24gaVkodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiw4KX1mdW5jdGlvbiBhWSh0LGUpezEmdCYmVG0oMCwibWF0LWljb24iLDkpfWZ1bmN0aW9uIHJZKHQsZSl7MSZ0JiZUbSgwLCJtYXQtaWNvbiIsMTApfXZhciBzWTtvWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b1kpfSxvWS7JtW1vZD1hbyh7dHlwZTpvWX0pLG9ZLsm1aW5qPXZuKHtwcm92aWRlcnM6W1FXXSxpbXBvcnRzOltbV00sWEksU0gseUwsblldLHlGLFhJLG5ZXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgob1ksW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltXTSxYSSxTSCx5TCxuWV0sZXhwb3J0czpbeUYsWEksS1csV1csblldLGRlY2xhcmF0aW9uczpbS1csV1ddLHByb3ZpZGVyczpbUVddfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8ob1kse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltLVyxXV119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV00sWEksU0gseUwsblldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3lGLFhJLEtXLFdXLG5ZXX19KSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5EQVJLX01PREVfT049MV09IkRBUktfTU9ERV9PTiIsdFt0LkRBUktfTU9ERV9PRkY9Ml09IkRBUktfTU9ERV9PRkYifSkoc1l8fChzWT17fSkpO2NsYXNzIGxZe2NvbnN0cnVjdG9yKCl7dGhpcy5EYXJrTW9kZU92ZXJyaWRlPXNZLHRoaXMub25PdmVycmlkZUNoYW5nZWQ9bmV3IExofWdldEJ1dHRvblRpdGxlKCl7bGV0IHQ7c3dpdGNoKHRoaXMuZGFya01vZGVPdmVycmlkZSl7Y2FzZSBzWS5ERUZBVUxUOnQ9IkJyb3dzZXIgZGVmYXVsdCI7YnJlYWs7Y2FzZSBzWS5EQVJLX01PREVfT046dD0iRGFyayBtb2RlIjticmVhaztjYXNlIHNZLkRBUktfTU9ERV9PRkY6dD0iTGlnaHQgbW9kZSJ9cmV0dXJuYEN1cnJlbnQgbW9kZTogWyR7dH1dLiBTd2l0Y2ggYmV0d2VlbiBicm93c2VyIGRlZmF1bHQsIGxpZ2h0LCBvciBkYXJrIHRoZW1lLmB9fWxZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsWSl9LGxZLsm1Y21wPXRvKHt0eXBlOmxZLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50Il1dLGlucHV0czp7ZGFya01vZGVPdmVycmlkZToiZGFya01vZGVPdmVycmlkZSJ9LG91dHB1dHM6e29uT3ZlcnJpZGVDaGFuZ2VkOiJvbk92ZXJyaWRlQ2hhbmdlZCJ9LGRlY2xzOjE1LHZhcnM6Nixjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsIk1lbnUgZm9yIGNoYW5naW5nIGxpZ2h0IG9yIGRhcmsgdGhlbWUiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibmdTd2l0Y2giLCJ0aXRsZSJdLFsic3ZnSWNvbiIsImJyaWdodG5lc3NfNl8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic3ZnSWNvbiIsImRhcmtfbW9kZV8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJTZXQgdGhlIHRoZW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IG1vZGUgaW4gdGhlIGJyb3dzZXIuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInRpdGxlIiwiRm9yY2UgZGFyayBUZW5zb3JCb2FyZCB0aGVtZS4iLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiYnJpZ2h0bmVzc182XzI0cHgiXSxbInN2Z0ljb24iLCJsaWdodF9tb2RlXzI0cHgiXSxbInN2Z0ljb24iLCJkYXJrX21vZGVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiYnV0dG9uIiwwKSxRcCgxLGlZLDEsMCwibWF0LWljb24iLDEpLFFwKDIsYVksMSwwLCJtYXQtaWNvbiIsMiksUXAoMyxyWSwxLDAsIm1hdC1pY29uIiwzKSxBbSgpLFJtKDQsIm1hdC1tZW51IixudWxsLDQpLFJtKDYsImJ1dHRvbiIsNSksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQpfSkpLFJtKDcsImxhYmVsIiksa3UoOCwiQnJvd3NlciBkZWZhdWx0IiksQW0oKSxBbSgpLFJtKDksImJ1dHRvbiIsNiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQobi5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpfSkpLFJtKDEwLCJsYWJlbCIpLGt1KDExLCJMaWdodCIpLEFtKCksQW0oKSxSbSgxMiwiYnV0dG9uIiw3KSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PdmVycmlkZUNoYW5nZWQuZW1pdChuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX0pKSxSbSgxMywibGFiZWwiKSxrdSgxNCwiRGFyayIpLEFtKCksQW0oKSxBbSgpKSwyJmUmJihEbSgibWF0TWVudVRyaWdnZXJGb3IiLCRwKDUpKSgibmdTd2l0Y2giLG4uZGFya01vZGVPdmVycmlkZSkoInRpdGxlIixuLmdldEJ1dHRvblRpdGxlKCkpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLG4uRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIixuLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09GRikscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsbi5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PTikpfSxkaXJlY3RpdmVzOltYSCxlWSxmTSxnTSxLVyxXVyxEV10sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPSJtZW51IlxuICAgICAgYXJpYS1sYWJlbD0iTWVudSBmb3IgY2hhbmdpbmcgbGlnaHQgb3IgZGFyayB0aGVtZSJcbiAgICAgIFtuZ1N3aXRjaF09ImRhcmtNb2RlT3ZlcnJpZGUiXG4gICAgICBbdGl0bGVdPSJnZXRCdXR0b25UaXRsZSgpIlxuICAgID5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQiXG4gICAgICAgIHN2Z0ljb249ImJyaWdodG5lc3NfNl8yNHB4IlxuICAgICAgPjwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgKm5nU3dpdGNoQ2FzZT0iRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT0ZGIlxuICAgICAgICBzdmdJY29uPSJsaWdodF9tb2RlXzI0cHgiXG4gICAgICA+PC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PTiJcbiAgICAgICAgc3ZnSWNvbj0iZGFya19tb2RlXzI0cHgiXG4gICAgICA+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnUgI21lbnU9Im1hdE1lbnUiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIHRpdGxlPSJTZXQgdGhlIHRoZW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IG1vZGUgaW4gdGhlIGJyb3dzZXIuIlxuICAgICAgICAoY2xpY2spPSJvbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KERhcmtNb2RlT3ZlcnJpZGUuREVGQVVMVCkiXG4gICAgICA+XG4gICAgICAgIDxsYWJlbD5Ccm93c2VyIGRlZmF1bHQ8L2xhYmVsPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgdGl0bGU9IkZvcmNlIGxpZ2h0IFRlbnNvckJvYXJkIHRoZW1lLiJcbiAgICAgICAgKGNsaWNrKT0ib25PdmVycmlkZUNoYW5nZWQuZW1pdChEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpIlxuICAgICAgPlxuICAgICAgICA8bGFiZWw+TGlnaHQ8L2xhYmVsPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgdGl0bGU9IkZvcmNlIGRhcmsgVGVuc29yQm9hcmQgdGhlbWUuIlxuICAgICAgICAoY2xpY2spPSJvbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KERhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKSJcbiAgICAgID5cbiAgICAgICAgPGxhYmVsPkRhcms8L2xhYmVsPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtbWVudT5cbiAgJ31dfV0sbnVsbCx7ZGFya01vZGVPdmVycmlkZTpbe3R5cGU6eHl9XSxvbk92ZXJyaWRlQ2hhbmdlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIGNZe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmRhcmtNb2RlT3ZlcnJpZGUkPXRoaXMuc3RvcmUuc2VsZWN0KFFEKS5waXBlKEl0KCh0PT5udWxsPT09dD9zWS5ERUZBVUxUOnQ/c1kuREFSS19NT0RFX09OOnNZLkRBUktfTU9ERV9PRkYpKSl9Y2hhbmdlRGFya01vZGUodCl7bGV0IGU9bnVsbDtzd2l0Y2godCl7Y2FzZSBzWS5ERUZBVUxUOmU9bnVsbDticmVhaztjYXNlIHNZLkRBUktfTU9ERV9PRkY6ZT0hMTticmVhaztjYXNlIHNZLkRBUktfTU9ERV9PTjplPSEwfXRoaXMuc3RvcmUuZGlzcGF0Y2goV0Eoe2VuYWJsZURhcmtNb2RlOmV9KSl9fWNZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjWSkoU20oSXcpKX0sY1kuybVjbXA9dG8oe3R5cGU6Y1ksc2VsZWN0b3JzOltbImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJkYXJrTW9kZU92ZXJyaWRlIiwib25PdmVycmlkZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiLDApLFZtKCJvbk92ZXJyaWRlQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uY2hhbmdlRGFya01vZGUoZSl9KSksQWgoMSwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJkYXJrTW9kZU92ZXJyaWRlIixUaCgxLDEsbi5kYXJrTW9kZU92ZXJyaWRlJCkpfSxkaXJlY3RpdmVzOltsWV0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGNZLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZSIsdGVtcGxhdGU6J1xuICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50XG4gICAgICBbZGFya01vZGVPdmVycmlkZV09ImRhcmtNb2RlT3ZlcnJpZGUkIHwgYXN5bmMiXG4gICAgICAob25PdmVycmlkZUNoYW5nZWQpPSJjaGFuZ2VEYXJrTW9kZSgkZXZlbnQpIlxuICAgID5cbiAgICA8L2FwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y29uc3QgZFk9WncodlIsTVIsKCh0LGUpPT4hKCFlfHwhdFtlXSkmJnRbZV0uZGlzYWJsZV9yZWxvYWQpKTtjbGFzcyBwWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5yZWxvYWREaXNhYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoZFkpLHRoaXMuaXNSZWxvYWRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KF9SKS5waXBlKGZlKHRoaXMucmVsb2FkRGlzYWJsZWQkKSxJdCgoKFt0LGVdKT0+IWUmJnQ9PT15RS5MT0FESU5HKSkpLHRoaXMubGFzdExvYWRlZFRpbWVJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChDUil9dHJpZ2dlclJlbG9hZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2godkUoKSl9Z2V0UmVsb2FkVGl0bGUodCl7cmV0dXJuIHQ/YExhc3QgVXBkYXRlZDogJHt0fWA6IkxvYWRpbmcuLi4ifX1mdW5jdGlvbiBtWSh0KXtyZXR1cm4gdC5zdGF0ZSE9PXlFLk5PVF9MT0FERUQmJnQuc3RhdGUhPT15RS5MT0FESU5HfXBZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxwWSkoU20oSXcpKX0scFkuybVjbXA9dG8oe3R5cGU6cFksc2VsZWN0b3JzOltbImFwcC1oZWFkZXItcmVsb2FkIl1dLGRlY2xzOjYsdmFyczoxMyxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwxLCJyZWxvYWQtYnV0dG9uIiwzLCJ0aXRsZSIsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJyZWZyZXNoXzI0cHgiLDEsInJlZnJlc2gtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiYnV0dG9uIiwwKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udHJpZ2dlclJlbG9hZCgpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiZGF0ZSIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxUbSg1LCJtYXQtaWNvbiIsMSksQW0oKSksMiZlJiYocHUoImxvYWRpbmciLFRoKDEsNCxuLmlzUmVsb2FkaW5nJCkpLERtKCJ0aXRsZSIsbi5nZXRSZWxvYWRUaXRsZShOaCgyLDYsVGgoMyw5LG4ubGFzdExvYWRlZFRpbWVJbk1zJCksIm1lZGl1bSIpKSkoImRpc2FibGVkIixUaCg0LDExLG4ucmVsb2FkRGlzYWJsZWQkKSkpfSxkaXJlY3RpdmVzOltYSCxEV10scGlwZXM6W3dNLFJNXSxzdHlsZXM6WyIucmVsb2FkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5yZWZyZXNoLWljb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5yZWxvYWQtYnV0dG9uLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYW5pbWF0aW9uOiByb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIHJvdGF0ZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLXJlbG9hZCIsdGVtcGxhdGU6J1xuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPSJyZWxvYWQtYnV0dG9uIlxuICAgICAgW2NsYXNzLmxvYWRpbmddPSJpc1JlbG9hZGluZyQgfCBhc3luYyJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT0idHJpZ2dlclJlbG9hZCgpIlxuICAgICAgW3RpdGxlXT0iZ2V0UmVsb2FkVGl0bGUobGFzdExvYWRlZFRpbWVJbk1zJCB8IGFzeW5jIHwgZGF0ZTogXCdtZWRpdW1cJykiXG4gICAgICBbZGlzYWJsZWRdPSJyZWxvYWREaXNhYmxlZCQgfCBhc3luYyJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9InJlZnJlc2gtaWNvbiIgc3ZnSWNvbj0icmVmcmVzaF8yNHB4Ij48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAnLHN0eWxlczpbIlxuICAgICAgLnJlbG9hZC1idXR0b24sXG4gICAgICAucmVmcmVzaC1pY29uIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5yZWxvYWQtYnV0dG9uLmxvYWRpbmcge1xuICAgICAgICBhbmltYXRpb246IHJvdGF0ZSAycyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgcm90YXRlIHtcbiAgICAgICAgMCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgICAgICB9XG4gICAgICAgIDUwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICAxMDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y29uc3QgdVk9eWsod04sYmsodk4sKHQ9Pm1ZKHQpP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtyZWxvYWRFbmFibGVkOiF0LnNldHRpbmdzLnJlbG9hZEVuYWJsZWR9KX0pOnQpKSxiayh4TiwoKHQse3BlcmlvZEluTXM6ZX0pPT57aWYoIW1ZKHQpKXJldHVybiB0O2NvbnN0IG49ZT49M2U0P2U6dC5zZXR0aW5ncy5yZWxvYWRQZXJpb2RJbk1zO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7cmVsb2FkUGVyaW9kSW5NczpufSl9KX0pKSxiayhPTiwoKHQse3NpemU6ZX0pPT57aWYoIW1ZKHQpKXJldHVybiB0O2NvbnN0IG49ZT4wP2U6dC5zZXR0aW5ncy5wYWdlU2l6ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse3BhZ2VTaXplOm59KX0pfSkpLGJrKFdTLCgodCx7cGFydGlhbFNldHRpbmdzOmV9KT0+e2NvbnN0IG49e307cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlLnBhZ2VTaXplKSYmZS5wYWdlU2l6ZT4wJiYobi5wYWdlU2l6ZT1lLnBhZ2VTaXplKSwiYm9vbGVhbiI9PXR5cGVvZiBlLmF1dG9SZWxvYWQmJihuLnJlbG9hZEVuYWJsZWQ9ZS5hdXRvUmVsb2FkKSxOdW1iZXIuaXNGaW5pdGUoZS5hdXRvUmVsb2FkUGVyaW9kSW5NcykmJmUuYXV0b1JlbG9hZFBlcmlvZEluTXM+M2U0JiYobi5yZWxvYWRQZXJpb2RJbk1zPWUuYXV0b1JlbG9hZFBlcmlvZEluTXMpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLG4pfSl9KSkpO2Z1bmN0aW9uIGZZKHQsZSl7cmV0dXJuIHVZKHQsZSl9Y29uc3QgZ1k9WyJpbnB1dCJdLGhZPWZ1bmN0aW9uKHQpe3JldHVybntlbnRlckR1cmF0aW9uOnR9fSxiWT1uZXcgR2EoIm1hdC1jaGVja2JveC1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHlZKCl7cmV0dXJue2NvbG9yOiJhY2NlbnQiLGNsaWNrQWN0aW9uOiJjaGVjay1pbmRldGVybWluYXRlIn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL30pO2xldCBfWT0wO2NvbnN0IENZPXtjb2xvcjoiYWNjZW50IixjbGlja0FjdGlvbjoiY2hlY2staW5kZXRlcm1pbmF0ZSJ9LE1ZPXtwcm92aWRlOklWLHVzZUV4aXN0aW5nOnFlKCgoKT0+T1kpKSxtdWx0aTohMH07Y2xhc3Mgdll7fWNvbnN0IHhZPSRJKEpJKFFJKEtJKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSkpKTtjbGFzcyBPWSBleHRlbmRzIHhZe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIpe3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZm9jdXNNb25pdG9yPW4sdGhpcy5fbmdab25lPW8sdGhpcy5fYW5pbWF0aW9uTW9kZT1hLHRoaXMuX29wdGlvbnM9cix0aGlzLmFyaWFMYWJlbD0iIix0aGlzLmFyaWFMYWJlbGxlZGJ5PW51bGwsdGhpcy5fdW5pcXVlSWQ9Im1hdC1jaGVja2JveC0iKyArK19ZLHRoaXMuaWQ9dGhpcy5fdW5pcXVlSWQsdGhpcy5sYWJlbFBvc2l0aW9uPSJhZnRlciIsdGhpcy5uYW1lPW51bGwsdGhpcy5jaGFuZ2U9bmV3IExoLHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZT1uZXcgTGgsdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9IiIsdGhpcy5fY3VycmVudENoZWNrU3RhdGU9MCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9jaGVja2VkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5fb3B0aW9ucz10aGlzLl9vcHRpb25zfHxDWSx0aGlzLmNvbG9yPXRoaXMuZGVmYXVsdENvbG9yPXRoaXMuX29wdGlvbnMuY29sb3J8fENZLmNvbG9yLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoaSl8fDB9Z2V0IGlucHV0SWQoKXtyZXR1cm5gJHt0aGlzLmlkfHx0aGlzLl91bmlxdWVJZH0taW5wdXRgfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9eXoodCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57dHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX0pKSx0aGlzLl9zeW5jSW5kZXRlcm1pbmF0ZSh0aGlzLl9pbmRldGVybWluYXRlKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9Z2V0IGNoZWNrZWQoKXtyZXR1cm4gdGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXt0IT10aGlzLmNoZWNrZWQmJih0aGlzLl9jaGVja2VkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7Y29uc3QgZT15eih0KTtlIT09dGhpcy5kaXNhYmxlZCYmKHRoaXMuX2Rpc2FibGVkPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBpbmRldGVybWluYXRlKCl7cmV0dXJuIHRoaXMuX2luZGV0ZXJtaW5hdGV9c2V0IGluZGV0ZXJtaW5hdGUodCl7Y29uc3QgZT10IT10aGlzLl9pbmRldGVybWluYXRlO3RoaXMuX2luZGV0ZXJtaW5hdGU9eXoodCksZSYmKHRoaXMuX3RyYW5zaXRpb25DaGVja1N0YXRlKHRoaXMuX2luZGV0ZXJtaW5hdGU/Mzp0aGlzLmNoZWNrZWQ/MToyKSx0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9X2lzUmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLmRpc2FibGVkfV9vbkxhYmVsVGV4dENoYW5nZSgpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hlY2tlZD0hIXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9X2dldEFyaWFDaGVja2VkKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD8idHJ1ZSI6dGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6ImZhbHNlIn1fdHJhbnNpdGlvbkNoZWNrU3RhdGUodCl7bGV0IGU9dGhpcy5fY3VycmVudENoZWNrU3RhdGUsbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYoZSE9PXQmJih0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjAmJm4uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MpLHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcz10aGlzLl9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKGUsdCksdGhpcy5fY3VycmVudENoZWNrU3RhdGU9dCx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjApKXtuLmNsYXNzTGlzdC5hZGQodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKTtjb25zdCB0PXRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzczt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57c2V0VGltZW91dCgoKCk9PntuLmNsYXNzTGlzdC5yZW1vdmUodCl9KSwxZTMpfSkpfX1fZW1pdENoYW5nZUV2ZW50KCl7Y29uc3QgdD1uZXcgdlk7dC5zb3VyY2U9dGhpcyx0LmNoZWNrZWQ9dGhpcy5jaGVja2VkLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKSx0aGlzLmNoYW5nZS5lbWl0KHQpLHRoaXMuX2lucHV0RWxlbWVudCYmKHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQ9dGhpcy5jaGVja2VkKX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZH1fb25JbnB1dENsaWNrKHQpe3ZhciBlO2NvbnN0IG49bnVsbD09PShlPXRoaXMuX29wdGlvbnMpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNsaWNrQWN0aW9uO3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kaXNhYmxlZHx8Im5vb3AiPT09bj90aGlzLmRpc2FibGVkfHwibm9vcCIhPT1ufHwodGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZD10aGlzLmNoZWNrZWQsdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZT10aGlzLmluZGV0ZXJtaW5hdGUpOih0aGlzLmluZGV0ZXJtaW5hdGUmJiJjaGVjayIhPT1uJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSl9KSksdGhpcy50b2dnbGUoKSx0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9jaGVja2VkPzE6MiksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCkpfWZvY3VzKHQsZSl7dD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5faW5wdXRFbGVtZW50LHQsZSk6dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoZSl9X29uSW50ZXJhY3Rpb25FdmVudCh0KXt0LnN0b3BQcm9wYWdhdGlvbigpfV9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKHQsZSl7aWYoIk5vb3BBbmltYXRpb25zIj09PXRoaXMuX2FuaW1hdGlvbk1vZGUpcmV0dXJuIiI7bGV0IG49IiI7c3dpdGNoKHQpe2Nhc2UgMDppZigxPT09ZSluPSJ1bmNoZWNrZWQtY2hlY2tlZCI7ZWxzZXtpZigzIT1lKXJldHVybiIiO249InVuY2hlY2tlZC1pbmRldGVybWluYXRlIn1icmVhaztjYXNlIDI6bj0xPT09ZT8idW5jaGVja2VkLWNoZWNrZWQiOiJ1bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAxOm49Mj09PWU/ImNoZWNrZWQtdW5jaGVja2VkIjoiY2hlY2tlZC1pbmRldGVybWluYXRlIjticmVhaztjYXNlIDM6bj0xPT09ZT8iaW5kZXRlcm1pbmF0ZS1jaGVja2VkIjoiaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQifXJldHVybmBtYXQtY2hlY2tib3gtYW5pbS0ke259YH1fc3luY0luZGV0ZXJtaW5hdGUodCl7Y29uc3QgZT10aGlzLl9pbnB1dEVsZW1lbnQ7ZSYmKGUubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlPXQpfX1PWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T1kpKFNtKGhnKSxTbShVZyksU20oU0kpLFNtKGFfKSxOYSgidGFiaW5kZXgiKSxTbShWUCw4KSxTbShiWSw4KSl9LE9ZLsm1Y21wPXRvKHt0eXBlOk9ZLHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChnWSw1KSxRaChrSCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5faW5wdXRFbGVtZW50PXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLnJpcHBsZT10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWNoZWNrYm94Il0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihUdSgiaWQiLG4uaWQpLGpwKCJ0YWJpbmRleCIsbnVsbCkscHUoIm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIixuLmluZGV0ZXJtaW5hdGUpKCJtYXQtY2hlY2tib3gtY2hlY2tlZCIsbi5jaGVja2VkKSgibWF0LWNoZWNrYm94LWRpc2FibGVkIixuLmRpc2FibGVkKSgibWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSIsImJlZm9yZSI9PW4ubGFiZWxQb3NpdGlvbikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZSkpfSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsbmFtZToibmFtZSIscmVxdWlyZWQ6InJlcXVpcmVkIixjaGVja2VkOiJjaGVja2VkIixkaXNhYmxlZDoiZGlzYWJsZWQiLGluZGV0ZXJtaW5hdGU6ImluZGV0ZXJtaW5hdGUiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXSx2YWx1ZToidmFsdWUifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsaW5kZXRlcm1pbmF0ZUNoYW5nZToiaW5kZXRlcm1pbmF0ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0Q2hlY2tib3giXSxmZWF0dXJlczpbcGcoW01ZXSkseHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxNyx2YXJzOjIxLGNvbnN0czpbWzEsIm1hdC1jaGVja2JveC1sYXlvdXQiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXIiXSxbInR5cGUiLCJjaGVja2JveCIsMSwibWF0LWNoZWNrYm94LWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInRhYkluZGV4IiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1jaGVja2JveC1yaXBwbGUiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIiwzLCJtYXRSaXBwbGVUcmlnZ2VyIiwibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZUFuaW1hdGlvbiJdLFsxLCJtYXQtcmlwcGxlLWVsZW1lbnQiLCJtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LWNoZWNrYm94LWZyYW1lIl0sWzEsIm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIl0sWyJ2ZXJzaW9uIiwiMS4xIiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJ2aWV3Qm94IiwiMCAwIDI0IDI0IiwwLCJ4bWwiLCJzcGFjZSIsInByZXNlcnZlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIl0sWyJmaWxsIiwibm9uZSIsInN0cm9rZSIsIndoaXRlIiwiZCIsIk00LjEsMTIuNyA5LDE3LjYgMjAuMyw2LjMiLDEsIm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJdLFsxLCJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIl0sWzEsIm1hdC1jaGVja2JveC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImNoZWNrYm94TGFiZWwiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFptKCksUm0oMCwibGFiZWwiLDAsMSksUm0oMiwic3BhbiIsMiksUm0oMywiaW5wdXQiLDMsNCksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uSW50ZXJhY3Rpb25FdmVudChlKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbklucHV0Q2xpY2soZSl9KSksQW0oKSxSbSg1LCJzcGFuIiw1KSxUbSg2LCJzcGFuIiw2KSxBbSgpLFRtKDcsInNwYW4iLDcpLFJtKDgsInNwYW4iLDgpLHFpKCksUm0oOSwic3ZnIiw5KSxUbSgxMCwicGF0aCIsMTApLEFtKCksWmkoKSxUbSgxMSwic3BhbiIsMTEpLEFtKCksQW0oKSxSbSgxMiwic3BhbiIsMTIsMTMpLFZtKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25MYWJlbFRleHRDaGFuZ2UoKX0pKSxSbSgxNCwic3BhbiIsMTQpLGt1KDE1LCLCoCIpLEFtKCksWG0oMTYpLEFtKCksQW0oKSksMiZlKXtjb25zdCB0PSRwKDEpLGU9JHAoMTMpO2pwKCJmb3IiLG4uaW5wdXRJZCkscmMoMikscHUoIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW4iLCFlLnRleHRDb250ZW50fHwhZS50ZXh0Q29udGVudC50cmltKCkpLHJjKDEpLERtKCJpZCIsbi5pbnB1dElkKSgicmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJjaGVja2VkIixuLmNoZWNrZWQpKCJkaXNhYmxlZCIsbi5kaXNhYmxlZCkoInRhYkluZGV4IixuLnRhYkluZGV4KSxqcCgidmFsdWUiLG4udmFsdWUpKCJuYW1lIixuLm5hbWUpKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbi5hcmlhTGFiZWxsZWRieSkoImFyaWEtY2hlY2tlZCIsbi5fZ2V0QXJpYUNoZWNrZWQoKSkoImFyaWEtZGVzY3JpYmVkYnkiLG4uYXJpYURlc2NyaWJlZGJ5KSxyYygyKSxEbSgibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixuLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVSYWRpdXMiLDIwKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlQW5pbWF0aW9uIixNaCgxOSxoWSwiTm9vcEFuaW1hdGlvbnMiPT09bi5fYW5pbWF0aW9uTW9kZT8wOjE1MCkpfX0sZGlyZWN0aXZlczpba0gsanpdLHN0eWxlczpbIkBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZHswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZHswJSw1MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aHswJSw1MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5fTUwJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7MCUsNjguMiV7dHJhbnNmb3JtOnNjYWxlWCgwKX02OC4yJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLCAxKX0xMDAle3RyYW5zZm9ybTpzY2FsZVgoMSl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoe2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtzdHJva2UtZGFzaG9mZnNldDowfXRve3N0cm9rZS1kYXNob2Zmc2V0Oi0yMi45MTAyNTl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDMxNWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya3swJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKX0zMi44JSwxMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApfX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1mcmFtZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWNoZWNrYm94e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTZ9Lm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7dG9wOmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1yaXBwbGV7b3V0bGluZTpzb2xpZCAzcHh9Lm1hdC1jaGVja2JveC1sYXlvdXR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjppbmhlcml0O2FsaWduLWl0ZW1zOmJhc2VsaW5lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LWNoZWNrYm94LWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6YXV0bzstbW96LXVzZXItc2VsZWN0OmF1dG87LW1zLXVzZXItc2VsZWN0OmF1dG87dXNlci1zZWxlY3Q6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDowO21hcmdpbjphdXRvO21hcmdpbi1yaWdodDo4cHg7b3JkZXI6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjE2cHg7ZmxleC1zaHJpbms6MH1bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1jaGVja2JveC1mcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtib3JkZXItd2lkdGg6MnB4O2JvcmRlci1zdHlsZTpzb2xpZH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1mcmFtZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSxvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3R9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOm5vbmV9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LWNoZWNrYm94Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya3t0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5O3N0cm9rZS1kYXNoYXJyYXk6MjIuOTEwMjU5O3N0cm9rZS13aWR0aDoyLjEzMzMzMzMzMzNweH0uY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzAwMCAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3dpZHRoOmNhbGMoMTAwJSAtIDZweCk7aGVpZ2h0OjJweDtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKSByb3RhdGUoMGRlZyk7Ym9yZGVyLXJhZGl1czoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3toZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweDttYXJnaW4tdG9wOjJweH0ubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntvcmRlcjoxO21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6OHB4fS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjF9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgwZGVnKX0ubWF0LWNoZWNrYm94LXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246MzAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtaW5wdXR7Ym90dG9tOjA7bGVmdDo1MCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxPWS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6U0l9LHt0eXBlOmFffSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltiWV19XX1dLE9ZLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTp4eSxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0saWQ6W3t0eXBlOnh5fV0scmVxdWlyZWQ6W3t0eXBlOnh5fV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6eHl9XSxuYW1lOlt7dHlwZTp4eX1dLGNoYW5nZTpbe3R5cGU6T3l9XSxpbmRldGVybWluYXRlQ2hhbmdlOlt7dHlwZTpPeX1dLHZhbHVlOlt7dHlwZTp4eX1dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOlphLGFyZ3M6WyJpbnB1dCJdfV0scmlwcGxlOlt7dHlwZTpaYSxhcmdzOltrSF19XSxjaGVja2VkOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dLGluZGV0ZXJtaW5hdGU6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoT1ksW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoZWNrYm94Iix0ZW1wbGF0ZTonPGxhYmVsIFthdHRyLmZvcl09ImlucHV0SWQiIGNsYXNzPSJtYXQtY2hlY2tib3gtbGF5b3V0IiAjbGFiZWw+XG4gIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyIlxuICAgICAgIFtjbGFzcy5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2luXT0iIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQgfHwgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQudHJpbSgpIj5cbiAgICA8aW5wdXQgI2lucHV0XG4gICAgICAgICAgIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5wdXQgY2RrLXZpc3VhbGx5LWhpZGRlbiIgdHlwZT0iY2hlY2tib3giXG4gICAgICAgICAgIFtpZF09ImlucHV0SWQiXG4gICAgICAgICAgIFtyZXF1aXJlZF09InJlcXVpcmVkIlxuICAgICAgICAgICBbY2hlY2tlZF09ImNoZWNrZWQiXG4gICAgICAgICAgIFthdHRyLnZhbHVlXT0idmFsdWUiXG4gICAgICAgICAgIFtkaXNhYmxlZF09ImRpc2FibGVkIlxuICAgICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSJcbiAgICAgICAgICAgW3RhYkluZGV4XT0idGFiSW5kZXgiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09Il9nZXRBcmlhQ2hlY2tlZCgpIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT0iYXJpYURlc2NyaWJlZGJ5IlxuICAgICAgICAgICAoY2hhbmdlKT0iX29uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpIlxuICAgICAgICAgICAoY2xpY2spPSJfb25JbnB1dENsaWNrKCRldmVudCkiPlxuICAgIDxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWNoZWNrYm94LXJpcHBsZSBtYXQtZm9jdXMtaW5kaWNhdG9yIlxuICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJsYWJlbCJcbiAgICAgICAgIFttYXRSaXBwbGVEaXNhYmxlZF09Il9pc1JpcHBsZURpc2FibGVkKCkiXG4gICAgICAgICBbbWF0UmlwcGxlUmFkaXVzXT0iMjAiXG4gICAgICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJ0cnVlIlxuICAgICAgICAgW21hdFJpcHBsZUFuaW1hdGlvbl09IntlbnRlckR1cmF0aW9uOiBfYW5pbWF0aW9uTW9kZSA9PT0gXCdOb29wQW5pbWF0aW9uc1wnID8gMCA6IDE1MH0iPlxuICAgICAgPHNwYW4gY2xhc3M9Im1hdC1yaXBwbGUtZWxlbWVudCBtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9Im1hdC1jaGVja2JveC1mcmFtZSI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtYmFja2dyb3VuZCI+XG4gICAgICA8c3ZnIHZlcnNpb249IjEuMSJcbiAgICAgICAgICAgZm9jdXNhYmxlPSJmYWxzZSJcbiAgICAgICAgICAgY2xhc3M9Im1hdC1jaGVja2JveC1jaGVja21hcmsiXG4gICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCJcbiAgICAgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSJcbiAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiPlxuICAgICAgICA8cGF0aCBjbGFzcz0ibWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoIlxuICAgICAgICAgICAgICBmaWxsPSJub25lIlxuICAgICAgICAgICAgICBzdHJva2U9IndoaXRlIlxuICAgICAgICAgICAgICBkPSJNNC4xLDEyLjcgOSwxNy42IDIwLjMsNi4zIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIFx4M2MhLS0gRWxlbWVudCBmb3IgcmVuZGVyaW5nIHRoZSBpbmRldGVybWluYXRlIHN0YXRlIGNoZWNrYm94LiAtLVx4M2VcbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtbGFiZWwiICNjaGVja2JveExhYmVsIChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkxhYmVsVGV4dENoYW5nZSgpIj5cbiAgICBceDNjIS0tIEFkZCBhbiBpbnZpc2libGUgc3BhbiBzbyBKQVdTIGNhbiByZWFkIHRoZSBsYWJlbCAtLVx4M2VcbiAgICA8c3BhbiBzdHlsZT0iZGlzcGxheTpub25lIj4mbmJzcDs8L3NwYW4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2xhYmVsPlxuJyxleHBvcnRBczoibWF0Q2hlY2tib3giLGhvc3Q6e2NsYXNzOiJtYXQtY2hlY2tib3giLCJbaWRdIjoiaWQiLCJbYXR0ci50YWJpbmRleF0iOiJudWxsIiwiW2NsYXNzLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlXSI6ImluZGV0ZXJtaW5hdGUiLCJbY2xhc3MubWF0LWNoZWNrYm94LWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtY2hlY2tib3gtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZV0iOidsYWJlbFBvc2l0aW9uID09ICJiZWZvcmUiJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9hbmltYXRpb25Nb2RlID09PSAnTm9vcEFuaW1hdGlvbnMnIn0scHJvdmlkZXJzOltNWV0saW5wdXRzOlsiZGlzYWJsZVJpcHBsZSIsImNvbG9yIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxzdHlsZXM6WyJAa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR7MCUsNTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7MCUsNTAle3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OX01MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrezAlLDY4LjIle3RyYW5zZm9ybTpzY2FsZVgoMCl9NjguMiV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGVYKDEpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aHtmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7c3Ryb2tlLWRhc2hvZmZzZXQ6MH10b3tzdHJva2UtZGFzaG9mZnNldDotMjIuOTEwMjU5fX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt7MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzIuOCUsMTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKX19Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZnJhbWV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjE2fS5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcmlwcGxle291dGxpbmU6c29saWQgM3B4fS5tYXQtY2hlY2tib3gtbGF5b3V0ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6aW5oZXJpdDthbGlnbi1pdGVtczpiYXNlbGluZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1jaGVja2JveC1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0OmF1dG87LW1vei11c2VyLXNlbGVjdDphdXRvOy1tcy11c2VyLXNlbGVjdDphdXRvO3VzZXItc2VsZWN0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MDttYXJnaW46YXV0bzttYXJnaW4tcmlnaHQ6OHB4O29yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNnB4O2ZsZXgtc2hyaW5rOjB9W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtY2hlY2tib3gtZnJhbWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7Ym9yZGVyLXdpZHRoOjJweDtib3JkZXItc3R5bGU6c29saWR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtZnJhbWV7dHJhbnNpdGlvbjpub25lfS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksb3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1jaGVja2JveC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19Lm1hdC1jaGVja2JveC1jaGVja21hcmt7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OTtzdHJva2UtZGFzaGFycmF5OjIyLjkxMDI1OTtzdHJva2Utd2lkdGg6Mi4xMzMzMzMzMzMzcHh9LmNkay1oaWdoLWNvbnRyYXN0LWJsYWNrLW9uLXdoaXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMwMDAgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3t3aWR0aDpjYWxjKDEwMCUgLSA2cHgpO2hlaWdodDoycHg7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCkgcm90YXRlKDBkZWcpO2JvcmRlci1yYWRpdXM6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7bWFyZ2luLXRvcDoycHh9Lm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7b3JkZXI6MTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OjhweH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eToxfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoMGRlZyl9Lm1hdC1jaGVja2JveC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjMwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWlucHV0e2JvdHRvbTowO2xlZnQ6NTAlfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6VWd9LHt0eXBlOlNJfSx7dHlwZTphX30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbYlldfV19XX0pLHthcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0saWQ6W3t0eXBlOnh5fV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6eHl9XSxuYW1lOlt7dHlwZTp4eX1dLGNoYW5nZTpbe3R5cGU6T3l9XSxpbmRldGVybWluYXRlQ2hhbmdlOlt7dHlwZTpPeX1dLHJlcXVpcmVkOlt7dHlwZTp4eX1dLGNoZWNrZWQ6W3t0eXBlOnh5fV0sZGlzYWJsZWQ6W3t0eXBlOnh5fV0saW5kZXRlcm1pbmF0ZTpbe3R5cGU6eHl9XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6eHl9XSxfaW5wdXRFbGVtZW50Olt7dHlwZTpaYSxhcmdzOlsiaW5wdXQiXX1dLHJpcHBsZTpbe3R5cGU6WmEsYXJnczpba0hdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFBZPXtwcm92aWRlOkdWLHVzZUV4aXN0aW5nOnFlKCgoKT0+d1kpKSxtdWx0aTohMH07Y2xhc3Mgd1kgZXh0ZW5kcyBLVXt9d1kuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKHdZKSkpKG58fHdZKX19KSgpLHdZLsm1ZGlyPWxvKHt0eXBlOndZLHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltwZyhbUFldKSx4cF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHdZLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGVja2JveFtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxcbiAgICAgICAgICAgICBtYXQtY2hlY2tib3hbcmVxdWlyZWRdW2Zvcm1Db250cm9sXSwgbWF0LWNoZWNrYm94W3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltQWV19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBrWXt9a1kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtZKX0sa1kuybVtb2Q9YW8oe3R5cGU6a1l9KSxrWS7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrWSxbe3R5cGU6QXksYXJnczpbe2V4cG9ydHM6W3dZXSxkZWNsYXJhdGlvbnM6W3dZXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKGtZLHtkZWNsYXJhdGlvbnM6W3dZXSxleHBvcnRzOlt3WV19KTtjbGFzcyBTWXt9U1kuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFNZKX0sU1kuybVtb2Q9YW8oe3R5cGU6U1l9KSxTWS7JtWluaj12bih7aW1wb3J0czpbW1NILFhJLFV6LGtZXSxYSSxrWV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFNZLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbU0gsWEksVXosa1ldLGV4cG9ydHM6W09ZLFhJLGtZXSxkZWNsYXJhdGlvbnM6W09ZXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFNZLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bT1ldfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1NILFhJLFV6LGtZXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltPWSxYSSxrWV19fSk7Y29uc3QgRFk9Tnooe3Bhc3NpdmU6ITB9KTtjbGFzcyBFWXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fbW9uaXRvcmVkRWxlbWVudHM9bmV3IE1hcH1tb25pdG9yKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIHJ0O2NvbnN0IGU9eHoodCksbj10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQoZSk7aWYobilyZXR1cm4gbi5zdWJqZWN0O2NvbnN0IG89bmV3IEksaT0iY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIsYT10PT57ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IiE9PXQuYW5pbWF0aW9uTmFtZXx8ZS5jbGFzc0xpc3QuY29udGFpbnMoaSk/ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCI9PT10LmFuaW1hdGlvbk5hbWUmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKGkpJiYoZS5jbGFzc0xpc3QucmVtb3ZlKGkpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5vLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITF9KSkpKTooZS5jbGFzc0xpc3QuYWRkKGkpLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5vLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITB9KSkpKX07cmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixhLERZKSxlLmNsYXNzTGlzdC5hZGQoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpfSkpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLnNldChlLHtzdWJqZWN0Om8sdW5saXN0ZW46KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixhLERZKX19KSxvfXN0b3BNb25pdG9yaW5nKHQpe2NvbnN0IGU9eHoodCksbj10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQoZSk7biYmKG4udW5saXN0ZW4oKSxuLnN1YmplY3QuY29tcGxldGUoKSxlLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpLGUuY2xhc3NMaXN0LnJlbW92ZSgiY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLmRlbGV0ZShlKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5mb3JFYWNoKCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSkpfX1FWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RVkpKHZyKHd6KSx2cihhXykpfSxFWS7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgRVkodnIod3opLHZyKGFfKSl9LHRva2VuOkVZLHByb3ZpZGVkSW46InJvb3QifSksRVkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp3en0se3R5cGU6YV99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEVZLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp3en0se3R5cGU6YV99XX0pLG51bGwpO2NsYXNzIFJZe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2F1dG9maWxsTW9uaXRvcj1lLHRoaXMuY2RrQXV0b2ZpbGw9bmV3IExofW5nT25Jbml0KCl7dGhpcy5fYXV0b2ZpbGxNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZikuc3Vic2NyaWJlKCh0PT50aGlzLmNka0F1dG9maWxsLmVtaXQodCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKX19UlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJZKShTbShoZyksU20oRVkpKX0sUlkuybVkaXI9bG8oe3R5cGU6Ulksc2VsZWN0b3JzOltbIiIsImNka0F1dG9maWxsIiwiIl1dLG91dHB1dHM6e2Nka0F1dG9maWxsOiJjZGtBdXRvZmlsbCJ9fSksUlkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6RVl9XSxSWS5wcm9wRGVjb3JhdG9ycz17Y2RrQXV0b2ZpbGw6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUlksW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0F1dG9maWxsXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6RVl9XX0pLHtjZGtBdXRvZmlsbDpbe3R5cGU6T3l9XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQVl7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fbmdab25lPW4sdGhpcy5fZGVzdHJveWVkPW5ldyBJLHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fcHJldmlvdXNNaW5Sb3dzPS0xLHRoaXMuX2lzVmlld0luaXRlZD0hMSx0aGlzLl9oYW5kbGVGb2N1c0V2ZW50PXQ9Pnt0aGlzLl9oYXNGb2N1cz0iZm9jdXMiPT09dC50eXBlfSx0aGlzLl9kb2N1bWVudD1vLHRoaXMuX3RleHRhcmVhRWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9Z2V0IG1pblJvd3MoKXtyZXR1cm4gdGhpcy5fbWluUm93c31zZXQgbWluUm93cyh0KXt0aGlzLl9taW5Sb3dzPV96KHQpLHRoaXMuX3NldE1pbkhlaWdodCgpfWdldCBtYXhSb3dzKCl7cmV0dXJuIHRoaXMuX21heFJvd3N9c2V0IG1heFJvd3ModCl7dGhpcy5fbWF4Um93cz1feih0KSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3Q9eXoodCksdGhpcy5fZW5hYmxlZCE9PXQmJigodGhpcy5fZW5hYmxlZD10KT90aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCk6dGhpcy5yZXNldCgpKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyfXNldCBwbGFjZWhvbGRlcih0KXt0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD12b2lkIDAsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyPXQsdGhpcy5fY2FjaGVUZXh0YXJlYVBsYWNlaG9sZGVySGVpZ2h0KCl9X3NldE1pbkhlaWdodCgpe2NvbnN0IHQ9dGhpcy5taW5Sb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P3RoaXMubWluUm93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KyJweCI6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1pbkhlaWdodD10KX1fc2V0TWF4SGVpZ2h0KCl7Y29uc3QgdD10aGlzLm1heFJvd3MmJnRoaXMuX2NhY2hlZExpbmVIZWlnaHQ/dGhpcy5tYXhSb3dzKnRoaXMuX2NhY2hlZExpbmVIZWlnaHQrInB4IjpudWxsO3QmJih0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0PXQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKHRoaXMuX2luaXRpYWxIZWlnaHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLmhlaWdodCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntvZSh0aGlzLl9nZXRXaW5kb3coKSwicmVzaXplIikucGlwZShkZSgxNiksSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoITApKSksdGhpcy5fdGV4dGFyZWFFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCl9KSksdGhpcy5faXNWaWV3SW5pdGVkPSEwLHRoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl90ZXh0YXJlYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2hhbmRsZUZvY3VzRXZlbnQpLHRoaXMuX3RleHRhcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9jYWNoZVRleHRhcmVhTGluZUhlaWdodCgpe2lmKHRoaXMuX2NhY2hlZExpbmVIZWlnaHQpcmV0dXJuO2xldCB0PXRoaXMuX3RleHRhcmVhRWxlbWVudC5jbG9uZU5vZGUoITEpO3Qucm93cz0xLHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdC5zdHlsZS5ib3JkZXI9Im5vbmUiLHQuc3R5bGUucGFkZGluZz0iMCIsdC5zdHlsZS5oZWlnaHQ9IiIsdC5zdHlsZS5taW5IZWlnaHQ9IiIsdC5zdHlsZS5tYXhIZWlnaHQ9IiIsdC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIix0aGlzLl90ZXh0YXJlYUVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0KSx0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0PXQuY2xpZW50SGVpZ2h0LHRoaXMuX3RleHRhcmVhRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuX3NldE1pbkhlaWdodCgpLHRoaXMuX3NldE1heEhlaWdodCgpfV9tZWFzdXJlU2Nyb2xsSGVpZ2h0KCl7Y29uc3QgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQsZT10LnN0eWxlLm1hcmdpbkJvdHRvbXx8IiIsbj10aGlzLl9wbGF0Zm9ybS5GSVJFRk9YLG89biYmdGhpcy5faGFzRm9jdXMsaT1uPyJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3giOiJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nIjtvJiYodC5zdHlsZS5tYXJnaW5Cb3R0b209YCR7dC5jbGllbnRIZWlnaHR9cHhgKSx0LmNsYXNzTGlzdC5hZGQoaSk7Y29uc3QgYT10LnNjcm9sbEhlaWdodC00O3JldHVybiB0LmNsYXNzTGlzdC5yZW1vdmUoaSksbyYmKHQuc3R5bGUubWFyZ2luQm90dG9tPWUpLGF9X2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpe2lmKCF0aGlzLl9pc1ZpZXdJbml0ZWR8fG51bGwhPXRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0KXJldHVybjtpZighdGhpcy5wbGFjZWhvbGRlcilyZXR1cm4gdm9pZCh0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD0wKTtjb25zdCB0PXRoaXMuX3RleHRhcmVhRWxlbWVudC52YWx1ZTt0aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyLHRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0PXRoaXMuX21lYXN1cmVTY3JvbGxIZWlnaHQoKSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWU9dH1uZ0RvQ2hlY2soKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMucmVzaXplVG9GaXRDb250ZW50KCl9cmVzaXplVG9GaXRDb250ZW50KHQ9ITEpe2lmKCF0aGlzLl9lbmFibGVkKXJldHVybjtpZih0aGlzLl9jYWNoZVRleHRhcmVhTGluZUhlaWdodCgpLHRoaXMuX2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpLCF0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KXJldHVybjtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxuPWUudmFsdWU7aWYoIXQmJnRoaXMuX21pblJvd3M9PT10aGlzLl9wcmV2aW91c01pblJvd3MmJm49PT10aGlzLl9wcmV2aW91c1ZhbHVlKXJldHVybjtjb25zdCBvPXRoaXMuX21lYXN1cmVTY3JvbGxIZWlnaHQoKSxpPU1hdGgubWF4KG8sdGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHR8fDApO2Uuc3R5bGUuaGVpZ2h0PWAke2l9cHhgLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnsidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9zY3JvbGxUb0NhcmV0UG9zaXRpb24oZSkpKTpzZXRUaW1lb3V0KCgoKT0+dGhpcy5fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKGUpKSl9KSksdGhpcy5fcHJldmlvdXNWYWx1ZT1uLHRoaXMuX3ByZXZpb3VzTWluUm93cz10aGlzLl9taW5Sb3dzfXJlc2V0KCl7dm9pZCAwIT09dGhpcy5faW5pdGlhbEhlaWdodCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQ9dGhpcy5faW5pdGlhbEhlaWdodCl9X25vb3BJbnB1dEhhbmRsZXIoKXt9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKHQpe2NvbnN0e3NlbGVjdGlvblN0YXJ0OmUsc2VsZWN0aW9uRW5kOm59PXQ7IXRoaXMuX2Rlc3Ryb3llZC5pc1N0b3BwZWQmJnRoaXMuX2hhc0ZvY3VzJiZ0LnNldFNlbGVjdGlvblJhbmdlKGUsbil9fUFZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBWSkoU20oaGcpLFNtKHd6KSxTbShhXyksU20oWl8sOCkpfSxBWS7JtWRpcj1sbyh7dHlwZTpBWSxzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJjZGtUZXh0YXJlYUF1dG9zaXplIiwiIl1dLGhvc3RBdHRyczpbInJvd3MiLCIxIiwxLCJjZGstdGV4dGFyZWEtYXV0b3NpemUiXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImlucHV0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ub29wSW5wdXRIYW5kbGVyKCl9KSl9LGlucHV0czp7bWluUm93czpbImNka0F1dG9zaXplTWluUm93cyIsIm1pblJvd3MiXSxtYXhSb3dzOlsiY2RrQXV0b3NpemVNYXhSb3dzIiwibWF4Um93cyJdLGVuYWJsZWQ6WyJjZGtUZXh0YXJlYUF1dG9zaXplIiwiZW5hYmxlZCJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciJ9LGV4cG9ydEFzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfSksQVkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6d3p9LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfV0sQVkucHJvcERlY29yYXRvcnM9e21pblJvd3M6W3t0eXBlOnh5LGFyZ3M6WyJjZGtBdXRvc2l6ZU1pblJvd3MiXX1dLG1heFJvd3M6W3t0eXBlOnh5LGFyZ3M6WyJjZGtBdXRvc2l6ZU1heFJvd3MiXX1dLGVuYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJjZGtUZXh0YXJlYUF1dG9zaXplIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6eHl9XSxfbm9vcElucHV0SGFuZGxlcjpbe3R5cGU6d3ksYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChBWSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJ0ZXh0YXJlYVtjZGtUZXh0YXJlYUF1dG9zaXplXSIsZXhwb3J0QXM6ImNka1RleHRhcmVhQXV0b3NpemUiLGhvc3Q6e2NsYXNzOiJjZGstdGV4dGFyZWEtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTp3en0se3R5cGU6YV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLHttaW5Sb3dzOlt7dHlwZTp4eSxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTp4eSxhcmdzOlsiY2RrQXV0b3NpemVNYXhSb3dzIl19XSxlbmFibGVkOlt7dHlwZTp4eSxhcmdzOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSJdfV0scGxhY2Vob2xkZXI6W3t0eXBlOnh5fV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOnd5LGFyZ3M6WyJpbnB1dCJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFRZe31UWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VFkpfSxUWS7JtW1vZD1hbyh7dHlwZTpUWX0pLFRZLsm1aW5qPXZuKHtpbXBvcnRzOltba3pdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVFksW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1JZLEFZXSxpbXBvcnRzOltrel0sZXhwb3J0czpbUlksQVldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVFkse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltSWSxBWV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5ba3pdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1JZLEFZXX19KTtjbGFzcyBOWSBleHRlbmRzIEFZe2dldCBtYXRBdXRvc2l6ZU1pblJvd3MoKXtyZXR1cm4gdGhpcy5taW5Sb3dzfXNldCBtYXRBdXRvc2l6ZU1pblJvd3ModCl7dGhpcy5taW5Sb3dzPXR9Z2V0IG1hdEF1dG9zaXplTWF4Um93cygpe3JldHVybiB0aGlzLm1heFJvd3N9c2V0IG1hdEF1dG9zaXplTWF4Um93cyh0KXt0aGlzLm1heFJvd3M9dH1nZXQgbWF0QXV0b3NpemUoKXtyZXR1cm4gdGhpcy5lbmFibGVkfXNldCBtYXRBdXRvc2l6ZSh0KXt0aGlzLmVuYWJsZWQ9dH1nZXQgbWF0VGV4dGFyZWFBdXRvc2l6ZSgpe3JldHVybiB0aGlzLmVuYWJsZWR9c2V0IG1hdFRleHRhcmVhQXV0b3NpemUodCl7dGhpcy5lbmFibGVkPXR9fU5ZLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShOWSkpKShufHxOWSl9fSkoKSxOWS7JtWRpcj1sbyh7dHlwZTpOWSxzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJtYXQtYXV0b3NpemUiLCIiXSxbInRleHRhcmVhIiwibWF0VGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIiwibWF0LWF1dG9zaXplIl0saW5wdXRzOntjZGtBdXRvc2l6ZU1pblJvd3M6ImNka0F1dG9zaXplTWluUm93cyIsY2RrQXV0b3NpemVNYXhSb3dzOiJjZGtBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplTWluUm93czoibWF0QXV0b3NpemVNaW5Sb3dzIixtYXRBdXRvc2l6ZU1heFJvd3M6Im1hdEF1dG9zaXplTWF4Um93cyIsbWF0QXV0b3NpemU6WyJtYXQtYXV0b3NpemUiLCJtYXRBdXRvc2l6ZSJdLG1hdFRleHRhcmVhQXV0b3NpemU6Im1hdFRleHRhcmVhQXV0b3NpemUifSxleHBvcnRBczpbIm1hdFRleHRhcmVhQXV0b3NpemUiXSxmZWF0dXJlczpbeHBdfSksTlkucHJvcERlY29yYXRvcnM9e21hdEF1dG9zaXplTWluUm93czpbe3R5cGU6eHl9XSxtYXRBdXRvc2l6ZU1heFJvd3M6W3t0eXBlOnh5fV0sbWF0QXV0b3NpemU6W3t0eXBlOnh5LGFyZ3M6WyJtYXQtYXV0b3NpemUiXX1dLG1hdFRleHRhcmVhQXV0b3NpemU6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTlksW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoidGV4dGFyZWFbbWF0LWF1dG9zaXplXSwgdGV4dGFyZWFbbWF0VGV4dGFyZWFBdXRvc2l6ZV0iLGV4cG9ydEFzOiJtYXRUZXh0YXJlYUF1dG9zaXplIixpbnB1dHM6WyJjZGtBdXRvc2l6ZU1pblJvd3MiLCJjZGtBdXRvc2l6ZU1heFJvd3MiXSxob3N0OntjbGFzczoiY2RrLXRleHRhcmVhLWF1dG9zaXplIG1hdC1hdXRvc2l6ZSIscm93czoiMSJ9fV19XSxudWxsLHttYXRBdXRvc2l6ZU1pblJvd3M6W3t0eXBlOnh5fV0sbWF0QXV0b3NpemVNYXhSb3dzOlt7dHlwZTp4eX1dLG1hdEF1dG9zaXplOlt7dHlwZTp4eSxhcmdzOlsibWF0LWF1dG9zaXplIl19XSxtYXRUZXh0YXJlYUF1dG9zaXplOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB6WT1uZXcgR2EoIk1BVF9JTlBVVF9WQUxVRV9BQ0NFU1NPUiIpLElZPVsiYnV0dG9uIiwiY2hlY2tib3giLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzdWJtaXQiXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IEhZPTA7Y29uc3QgRlk9dEgoY2xhc3N7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1lLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1uLHRoaXMubmdDb250cm9sPW99fSk7Y2xhc3MgTFkgZXh0ZW5kcyBGWXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjKXtzdXBlcihhLG8saSxuKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9hdXRvZmlsbE1vbml0b3I9cyx0aGlzLl9mb3JtRmllbGQ9Yyx0aGlzLl91aWQ9Im1hdC1pbnB1dC0iK0hZKyssdGhpcy5mb2N1c2VkPSExLHRoaXMuc3RhdGVDaGFuZ2VzPW5ldyBJLHRoaXMuY29udHJvbFR5cGU9Im1hdC1pbnB1dCIsdGhpcy5hdXRvZmlsbGVkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX3R5cGU9InRleHQiLHRoaXMuX3JlYWRvbmx5PSExLHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzPVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIl0uZmlsdGVyKCh0PT5EeigpLmhhcyh0KSkpO2NvbnN0IGQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHA9ZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3RoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvcj1yfHxkLHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dGhpcy52YWx1ZSx0aGlzLmlkPXRoaXMuaWQsZS5JT1MmJmwucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwodD0+e2NvbnN0IGU9dC50YXJnZXQ7ZS52YWx1ZXx8MCE9PWUuc2VsZWN0aW9uU3RhcnR8fDAhPT1lLnNlbGVjdGlvbkVuZHx8KGUuc2V0U2VsZWN0aW9uUmFuZ2UoMSwxKSxlLnNldFNlbGVjdGlvblJhbmdlKDAsMCkpfSkpfSkpLHRoaXMuX2lzU2VydmVyPSF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIsdGhpcy5faXNOYXRpdmVTZWxlY3Q9InNlbGVjdCI9PT1wLHRoaXMuX2lzVGV4dGFyZWE9InRleHRhcmVhIj09PXAsdGhpcy5faXNJbkZvcm1GaWVsZD0hIWMsdGhpcy5faXNOYXRpdmVTZWxlY3QmJih0aGlzLmNvbnRyb2xUeXBlPWQubXVsdGlwbGU/Im1hdC1uYXRpdmUtc2VsZWN0LW11bHRpcGxlIjoibWF0LW5hdGl2ZS1zZWxlY3QiKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5uZ0NvbnRyb2wmJm51bGwhPT10aGlzLm5nQ29udHJvbC5kaXNhYmxlZD90aGlzLm5nQ29udHJvbC5kaXNhYmxlZDp0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9eXoodCksdGhpcy5mb2N1c2VkJiYodGhpcy5mb2N1c2VkPSExLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCh0KXt0aGlzLl9pZD10fHx0aGlzLl91aWR9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD15eih0KX1nZXQgdHlwZSgpe3JldHVybiB0aGlzLl90eXBlfXNldCB0eXBlKHQpe3RoaXMuX3R5cGU9dHx8InRleHQiLHRoaXMuX3ZhbGlkYXRlVHlwZSgpLCF0aGlzLl9pc1RleHRhcmVhJiZEeigpLmhhcyh0aGlzLl90eXBlKSYmKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50eXBlPXRoaXMuX3R5cGUpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWV9c2V0IHZhbHVlKHQpe3QhPT10aGlzLnZhbHVlJiYodGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1nZXQgcmVhZG9ubHkoKXtyZXR1cm4gdGhpcy5fcmVhZG9ubHl9c2V0IHJlYWRvbmx5KHQpe3RoaXMuX3JlYWRvbmx5PXl6KHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmdGhpcy5fYXV0b2ZpbGxNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmF1dG9maWxsZWQ9dC5pc0F1dG9maWxsZWQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfW5nT25DaGFuZ2VzKCl7dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfW5nRG9DaGVjaygpe3RoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKSx0aGlzLl9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKSx0aGlzLl9kaXJ0eUNoZWNrUGxhY2Vob2xkZXIoKX1mb2N1cyh0KXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X2ZvY3VzQ2hhbmdlZCh0KXt0IT09dGhpcy5mb2N1c2VkJiYodGhpcy5mb2N1c2VkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25JbnB1dCgpe31fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl7dmFyIHQsZTtjb25zdCBuPShudWxsPT09KGU9bnVsbD09PSh0PXRoaXMuX2Zvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuX2hpZGVDb250cm9sUGxhY2Vob2xkZXIpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLmNhbGwodCkpP251bGw6dGhpcy5wbGFjZWhvbGRlcjtpZihuIT09dGhpcy5fcHJldmlvdXNQbGFjZWhvbGRlcil7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fcHJldmlvdXNQbGFjZWhvbGRlcj1uLG4/dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIixuKTp0LnJlbW92ZUF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKX19X2RpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO3RoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWUhPT10JiYodGhpcy5fcHJldmlvdXNOYXRpdmVWYWx1ZT10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3ZhbGlkYXRlVHlwZSgpe2lmKElZLmluZGV4T2YodGhpcy5fdHlwZSk+LTEmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCnRocm93KGZ1bmN0aW9uIHQoZSl7cmV0dXJuIEVycm9yKGBJbnB1dCB0eXBlICIke2V9IiBpc24ndCBzdXBwb3J0ZWQgYnkgbWF0SW5wdXQuYCl9KSh0aGlzLl90eXBlKX1faXNOZXZlckVtcHR5KCl7cmV0dXJuIHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzLmluZGV4T2YodGhpcy5fdHlwZSk+LTF9X2lzQmFkSW5wdXQoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsaWRpdHk7cmV0dXJuIHQmJnQuYmFkSW5wdXR9Z2V0IGVtcHR5KCl7cmV0dXJuISh0aGlzLl9pc05ldmVyRW1wdHkoKXx8dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlfHx0aGlzLl9pc0JhZElucHV0KCl8fHRoaXMuYXV0b2ZpbGxlZCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtpZih0aGlzLl9pc05hdGl2ZVNlbGVjdCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT10Lm9wdGlvbnNbMF07cmV0dXJuIHRoaXMuZm9jdXNlZHx8dC5tdWx0aXBsZXx8IXRoaXMuZW1wdHl8fCEhKHQuc2VsZWN0ZWRJbmRleD4tMSYmZSYmZS5sYWJlbCl9cmV0dXJuIHRoaXMuZm9jdXNlZHx8IXRoaXMuZW1wdHl9c2V0RGVzY3JpYmVkQnlJZHModCl7dC5sZW5ndGg/dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsdC5qb2luKCIgIikpOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1c2VkfHx0aGlzLmZvY3VzKCl9fUxZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMWSkoU20oaGcpLFNtKHd6KSxTbShNaiwxMCksU20oaVUsOCksU20oUFUsOCksU20oYkgpLFNtKHpZLDEwKSxTbShFWSksU20oYV8pLFNtKFJWLDgpKX0sTFkuybVkaXI9bG8oe3R5cGU6TFksc2VsZWN0b3JzOltbImlucHV0IiwibWF0SW5wdXQiLCIiXSxbInRleHRhcmVhIiwibWF0SW5wdXQiLCIiXSxbInNlbGVjdCIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXSxbImlucHV0IiwibWF0TmF0aXZlQ29udHJvbCIsIiJdLFsidGV4dGFyZWEiLCJtYXROYXRpdmVDb250cm9sIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWlucHV0LWVsZW1lbnQiLCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sIl0saG9zdFZhcnM6OSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1c0NoYW5nZWQoITApfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9mb2N1c0NoYW5nZWQoITEpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25JbnB1dCgpfSkpLDImZSYmKFR1KCJkaXNhYmxlZCIsbi5kaXNhYmxlZCkoInJlcXVpcmVkIixuLnJlcXVpcmVkKSxqcCgiaWQiLG4uaWQpKCJkYXRhLXBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyKSgicmVhZG9ubHkiLG4ucmVhZG9ubHkmJiFuLl9pc05hdGl2ZVNlbGVjdHx8bnVsbCkoImFyaWEtaW52YWxpZCIsbi5lbXB0eSYmbi5yZXF1aXJlZD9udWxsOm4uZXJyb3JTdGF0ZSkoImFyaWEtcmVxdWlyZWQiLG4ucmVxdWlyZWQpLHB1KCJtYXQtaW5wdXQtc2VydmVyIixuLl9pc1NlcnZlcikpfSxpbnB1dHM6e2lkOiJpZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixyZXF1aXJlZDoicmVxdWlyZWQiLHR5cGU6InR5cGUiLHZhbHVlOiJ2YWx1ZSIscmVhZG9ubHk6InJlYWRvbmx5IixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsdXNlckFyaWFEZXNjcmliZWRCeTpbImFyaWEtZGVzY3JpYmVkYnkiLCJ1c2VyQXJpYURlc2NyaWJlZEJ5Il19LGV4cG9ydEFzOlsibWF0SW5wdXQiXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOmJWLHVzZUV4aXN0aW5nOkxZfV0pLHhwLEJvXX0pLExZLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOnd6fSx7dHlwZTpNaixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9XX0se3R5cGU6aVUsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6UFUsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6Ykh9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6RHJ9LHt0eXBlOmtyLGFyZ3M6W3pZXX1dfSx7dHlwZTpFWX0se3R5cGU6YV99LHt0eXBlOkFWLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltSVl19XX1dLExZLnByb3BEZWNvcmF0b3JzPXtkaXNhYmxlZDpbe3R5cGU6eHl9XSxpZDpbe3R5cGU6eHl9XSxwbGFjZWhvbGRlcjpbe3R5cGU6eHl9XSxyZXF1aXJlZDpbe3R5cGU6eHl9XSx0eXBlOlt7dHlwZTp4eX1dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTp4eX1dLHVzZXJBcmlhRGVzY3JpYmVkQnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6eHl9XSxyZWFkb25seTpbe3R5cGU6eHl9XSxfZm9jdXNDaGFuZ2VkOlt7dHlwZTp3eSxhcmdzOlsiZm9jdXMiLFsidHJ1ZSJdXX0se3R5cGU6d3ksYXJnczpbImJsdXIiLFsiZmFsc2UiXV19XSxfb25JbnB1dDpbe3R5cGU6d3ksYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMWSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFttYXRJbnB1dF0sIHRleHRhcmVhW21hdElucHV0XSwgc2VsZWN0W21hdE5hdGl2ZUNvbnRyb2xdLFxuICAgICAgaW5wdXRbbWF0TmF0aXZlQ29udHJvbF0sIHRleHRhcmVhW21hdE5hdGl2ZUNvbnRyb2xdIixleHBvcnRBczoibWF0SW5wdXQiLGhvc3Q6e2NsYXNzOiJtYXQtaW5wdXQtZWxlbWVudCBtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sIiwiW2NsYXNzLm1hdC1pbnB1dC1zZXJ2ZXJdIjoiX2lzU2VydmVyIiwiW2F0dHIuaWRdIjoiaWQiLCJbYXR0ci5kYXRhLXBsYWNlaG9sZGVyXSI6InBsYWNlaG9sZGVyIiwiW2Rpc2FibGVkXSI6ImRpc2FibGVkIiwiW3JlcXVpcmVkXSI6InJlcXVpcmVkIiwiW2F0dHIucmVhZG9ubHldIjoicmVhZG9ubHkgJiYgIV9pc05hdGl2ZVNlbGVjdCB8fCBudWxsIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6IihlbXB0eSAmJiByZXF1aXJlZCkgPyBudWxsIDogZXJyb3JTdGF0ZSIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQifSxwcm92aWRlcnM6W3twcm92aWRlOmJWLHVzZUV4aXN0aW5nOkxZfV19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6d3p9LHt0eXBlOk1qLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn1dfSx7dHlwZTppVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpQVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpiSH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn0se3R5cGU6a3IsYXJnczpbelldfV19LHt0eXBlOkVZfSx7dHlwZTphX30se3R5cGU6QVYsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1JWXX1dfV19KSx7aWQ6W3t0eXBlOnh5fV0sZGlzYWJsZWQ6W3t0eXBlOnh5fV0scmVxdWlyZWQ6W3t0eXBlOnh5fV0sdHlwZTpbe3R5cGU6eHl9XSx2YWx1ZTpbe3R5cGU6eHl9XSxyZWFkb25seTpbe3R5cGU6eHl9XSxfZm9jdXNDaGFuZ2VkOlt7dHlwZTp3eSxhcmdzOlsiZm9jdXMiLFsidHJ1ZSJdXX0se3R5cGU6d3ksYXJnczpbImJsdXIiLFsiZmFsc2UiXV19XSxfb25JbnB1dDpbe3R5cGU6d3ksYXJnczpbImlucHV0Il19XSxwbGFjZWhvbGRlcjpbe3R5cGU6eHl9XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6eHl9XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTp4eSxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEJZe31mdW5jdGlvbiBWWSh0LGUpe2lmKDEmdCYmKFJtKDAsIm1hdC1lcnJvciIpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLER1KCIgUmVsb2FkIHBlcmlvZCBoYXMgdG8gYmUgbWluaW11bSBvZiAiLHQuTUlOX1JFTE9BRF9QRVJJT0RfSU5fUywiIHNlY29uZHMuICIpfX1mdW5jdGlvbiBqWSh0LGUpezEmdCYmKFJtKDAsIm1hdC1lcnJvciIpLGt1KDEsIiBQYWdlIHNpemUgaGFzIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4gIiksQW0oKSl9QlkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJZKX0sQlkuybVtb2Q9YW8oe3R5cGU6Qll9KSxCWS7JtWluaj12bih7cHJvdmlkZXJzOltiSF0saW1wb3J0czpbW1RZLFRWLFhJXSxUWSxUVl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJZLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltMWSxOWV0saW1wb3J0czpbVFksVFYsWEldLGV4cG9ydHM6W1RZLFRWLExZLE5ZXSxwcm92aWRlcnM6W2JIXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEJZLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bTFksTlldfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1RZLFRWLFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltUWSxUVixMWSxOWV19fSk7Y2xhc3MgVVl7Y29uc3RydWN0b3IoKXt0aGlzLnJlbG9hZFRvZ2dsZWQ9bmV3IExoLHRoaXMucmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ9bmV3IExoLHRoaXMucGFnZVNpemVDaGFuZ2VkPW5ldyBMaCx0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1M9MzAsdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sPW5ldyAkaih0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1MsW3FWLnJlcXVpcmVkLHFWLm1pbih0aGlzLk1JTl9SRUxPQURfUEVSSU9EX0lOX1MpXSksdGhpcy5wYWdpbmF0aW9uQ29udHJvbD1uZXcgJGooMSxbcVYucmVxdWlyZWQscVYubWluKDEpLHQ9Pntjb25zdCBlPU51bWJlcih0LnZhbHVlKTtyZXR1cm4gTWF0aC5yb3VuZChlKT09PXQudmFsdWU/bnVsbDp7aW50ZWdlcjp7dmFsdWU6dC52YWx1ZX19fV0pLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSX1uZ09uSW5pdCgpe3RoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLGdlKDUwMCksY2UoKCgpPT50aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsaWQpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWxpZCYmdGhpcy5yZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZC5lbWl0KDFlMyp0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsdWUpfSkpLHRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxnZSg1MDApLGNlKCgoKT0+dGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWxpZCkpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdCh0aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbHVlKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkNoYW5nZXModCl7aWYodC5yZWxvYWRQZXJpb2RJbk1zKXtjb25zdCBlPXQucmVsb2FkUGVyaW9kSW5NcztlLnByZXZpb3VzVmFsdWUhPT1lLmN1cnJlbnRWYWx1ZSYmdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnNldFZhbHVlKGUuY3VycmVudFZhbHVlLzFlMyl9aWYodC5yZWxvYWRFbmFibGVkJiYodC5yZWxvYWRFbmFibGVkLmN1cnJlbnRWYWx1ZT90aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wuZW5hYmxlKCk6dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLmRpc2FibGUoKSksdC5wYWdlU2l6ZSl7Y29uc3QgZT10LnBhZ2VTaXplO2UucHJldmlvdXNWYWx1ZSE9PWUuY3VycmVudFZhbHVlJiZ0aGlzLnBhZ2luYXRpb25Db250cm9sLnNldFZhbHVlKGUuY3VycmVudFZhbHVlKX19b25SZWxvYWRUb2dnbGUoKXt0aGlzLnJlbG9hZFRvZ2dsZWQuZW1pdCgpfX1VWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VVkpfSxVWS7JtWNtcD10byh7dHlwZTpVWSxzZWxlY3RvcnM6W1sic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCJdXSxpbnB1dHM6e3JlbG9hZEVuYWJsZWQ6InJlbG9hZEVuYWJsZWQiLHJlbG9hZFBlcmlvZEluTXM6InJlbG9hZFBlcmlvZEluTXMiLHBhZ2VTaXplOiJwYWdlU2l6ZSJ9LG91dHB1dHM6e3JlbG9hZFRvZ2dsZWQ6InJlbG9hZFRvZ2dsZWQiLHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkOiJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIscGFnZVNpemVDaGFuZ2VkOiJwYWdlU2l6ZUNoYW5nZWQifSxmZWF0dXJlczpbQm9dLGRlY2xzOjE0LHZhcnM6NSxjb25zdHM6W1sxLCJyZWxvYWQtdG9nZ2xlIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbIm1hdElucHV0IiwiIiwidHlwZSIsIm51bWJlciIsInBsYWNlaG9sZGVyIiwiUmVsb2FkIFBlcmlvZCIsMSwicmVsb2FkLXBlcmlvZCIsMywiZm9ybUNvbnRyb2wiXSxbNCwibmdJZiJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJQYWdpbmF0aW9uIExpbWl0IiwxLCJwYWdlLXNpemUiLDMsImZvcm1Db250cm9sIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJoMyIpLGt1KDEsIlNldHRpbmdzIiksQW0oKSxSbSgyLCJkaXYiKSxSbSgzLCJkaXYiLDApLFJtKDQsIm1hdC1jaGVja2JveCIsMSksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlbG9hZFRvZ2dsZSgpfSkpLGt1KDUsIlJlbG9hZCBkYXRhIiksQW0oKSxBbSgpLFJtKDYsImRpdiIpLFJtKDcsIm1hdC1mb3JtLWZpZWxkIiksVG0oOCwiaW5wdXQiLDIpLEFtKCksUXAoOSxWWSwyLDEsIm1hdC1lcnJvciIsMyksQW0oKSxBbSgpLFJtKDEwLCJkaXYiKSxSbSgxMSwibWF0LWZvcm0tZmllbGQiKSxUbSgxMiwiaW5wdXQiLDQpLEFtKCksUXAoMTMsalksMiwwLCJtYXQtZXJyb3IiLDMpLEFtKCkpLDImZSYmKHJjKDQpLERtKCJjaGVja2VkIixuLnJlbG9hZEVuYWJsZWQpLHJjKDQpLERtKCJmb3JtQ29udHJvbCIsbi5yZWxvYWRQZXJpb2RDb250cm9sKSxyYygxKSxEbSgibmdJZiIsbi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJtaW4iKXx8bi5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJyZXF1aXJlZCIpKSxyYygzKSxEbSgiZm9ybUNvbnRyb2wiLG4ucGFnaW5hdGlvbkNvbnRyb2wpLHJjKDEpLERtKCJuZ0lmIixuLnBhZ2luYXRpb25Db250cm9sLmludmFsaWQpKX0sZGlyZWN0aXZlczpbT1ksQVYsTFksZlUsVlYseGoseFUsZE0sZ1ZdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICBmb250LXNpemU6IDE1cHg7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBkaXZbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luOiAxMHB4IDA7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICA+IFtfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmgzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnJlbG9hZC10b2dnbGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVVksW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNldHRpbmdzX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zZXR0aW5nc19kaWFsb2dfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtyZWxvYWRFbmFibGVkOlt7dHlwZTp4eX1dLHJlbG9hZFBlcmlvZEluTXM6W3t0eXBlOnh5fV0scGFnZVNpemU6W3t0eXBlOnh5fV0scmVsb2FkVG9nZ2xlZDpbe3R5cGU6T3l9XSxyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZDpbe3R5cGU6T3l9XSxwYWdlU2l6ZUNoYW5nZWQ6W3t0eXBlOk95fV19KTtjbGFzcyBHWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChETiksdGhpcy5yZWxvYWRQZXJpb2RJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChFTiksdGhpcy5wYWdlU2l6ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoUk4pfW9uUmVsb2FkVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2godk4oKSl9b25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHhOKHtwZXJpb2RJbk1zOnR9KSl9b25QYWdlU2l6ZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChPTih7c2l6ZTp0fSkpfX1HWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R1kpKFNtKEl3KSl9LEdZLsm1Y21wPXRvKHt0eXBlOkdZLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ciXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVsb2FkRW5hYmxlZCIsInJlbG9hZFBlcmlvZEluTXMiLCJwYWdlU2l6ZSIsInJlbG9hZFRvZ2dsZWQiLCJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIsInBhZ2VTaXplQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsMCksVm0oInJlbG9hZFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZWxvYWRUb2dnbGVkKCl9KSkoInJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKGUpfSkpKCJwYWdlU2l6ZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnZVNpemVDaGFuZ2VkKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFtKCkpLDImZSYmRG0oInJlbG9hZEVuYWJsZWQiLFRoKDEsMyxuLnJlbG9hZEVuYWJsZWQkKSkoInJlbG9hZFBlcmlvZEluTXMiLFRoKDIsNSxuLnJlbG9hZFBlcmlvZEluTXMkKSkoInBhZ2VTaXplIixUaCgzLDcsbi5wYWdlU2l6ZSQpKX0sZGlyZWN0aXZlczpbVVldLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChHWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1kaWFsb2ciLHRlbXBsYXRlOidcbiAgICA8c2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudFxuICAgICAgW3JlbG9hZEVuYWJsZWRdPSJyZWxvYWRFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3JlbG9hZFBlcmlvZEluTXNdPSJyZWxvYWRQZXJpb2RJbk1zJCB8IGFzeW5jIlxuICAgICAgW3BhZ2VTaXplXT0icGFnZVNpemUkIHwgYXN5bmMiXG4gICAgICAocmVsb2FkVG9nZ2xlZCk9Im9uUmVsb2FkVG9nZ2xlZCgpIlxuICAgICAgKHJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkKT0ib25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9Im9uUGFnZVNpemVDaGFuZ2VkKCRldmVudCkiXG4gICAgPjwvc2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjbGFzcyBXWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10fWlzQnV0dG9uRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PXlFLk5PVF9MT0FERUR8fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT15RS5MT0FESU5HfW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKEdZLHt3aWR0aDoiNDAwcHgifSl9fVdZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxXWSkoU20ob1cpKX0sV1kuybVjbXA9dG8oe3R5cGU6V1ksc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUifSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiYnV0dG9uIiwwKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub3BlbkRpYWxvZygpfSkpLFRtKDEsIm1hdC1pY29uIiwxKSxBbSgpKSwyJmUmJkRtKCJkaXNhYmxlZCIsbi5pc0J1dHRvbkRpc2FibGVkKCkpfSxkaXJlY3RpdmVzOltYSCxEV10sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbZGlzYWJsZWRdPSJpc0J1dHRvbkRpc2FibGVkKCkiXG4gICAgICAoY2xpY2spPSJvcGVuRGlhbG9nKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249InNldHRpbmdzXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpvV31dfSkse3NldHRpbmdzTG9hZFN0YXRlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgWVl7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2V0dGluZ3NMb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KFNOKX19WVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFlZKShTbShJdykpfSxZWS7JtWNtcD10byh7dHlwZTpZWSxzZWxlY3RvcnM6W1sic2V0dGluZ3MtYnV0dG9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNldHRpbmdzTG9hZFN0YXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJzZXR0aW5ncy1idXR0b24tY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpKSwyJmUmJkRtKCJzZXR0aW5nc0xvYWRTdGF0ZSIsVGgoMSwxLG4uc2V0dGluZ3NMb2FkU3RhdGUkKSl9LGRpcmVjdGl2ZXM6W1dZXSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWVksW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtYnV0dG9uIix0ZW1wbGF0ZTonXG4gICAgPHNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnRcbiAgICAgIFtzZXR0aW5nc0xvYWRTdGF0ZV09InNldHRpbmdzTG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgID48L3NldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgcVl7fXFZLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxxWSl9LHFZLsm1Y21wPXRvKHt0eXBlOnFZLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyIl1dLGRlY2xzOjEwLHZhcnM6MCxjb25zdHM6W1sxLCJicmFuZCJdLFsxLCJwbHVnaW5zIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIiwicmVsIiwibm9vcGVuZXIgbm9yZWZlcnJlciIsInRhcmdldCIsIl9ibGFuayIsImFyaWEtbGFiZWwiLCJIZWxwIiwxLCJyZWFkbWUiXSxbInN2Z0ljb24iLCJoZWxwX291dGxpbmVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWF0LXRvb2xiYXIiKSxSbSgxLCJzcGFuIiwwKSxrdSgyLCJUZW5zb3JCb2FyZCIpLEFtKCksVG0oMywicGx1Z2luLXNlbGVjdG9yIiwxKSxUbSg0LCJ0YmRldi11cGxvYWQtYnV0dG9uIiksVG0oNSwiYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlIiksVG0oNiwiYXBwLWhlYWRlci1yZWxvYWQiKSxUbSg3LCJzZXR0aW5ncy1idXR0b24iKSxSbSg4LCJhIiwyKSxUbSg5LCJtYXQtaWNvbiIsMyksQW0oKSxBbSgpKX0sZGlyZWN0aXZlczpbZUIsVkcsSVcsY1kscFksWVksS0gsRFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9dGJkZXYtdXBsb2FkLWJ1dHRvbi5zaG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgOHB4IDAgMTZweH0uYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIGF1dG99LmJyYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtsZXR0ZXItc3BhY2luZzotMC4wMjVlbTttYXJnaW4tbGVmdDoxMHB4O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocVksW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiYXBwLWhlYWRlciIsdGVtcGxhdGU6J1xuICAgIDxtYXQtdG9vbGJhcj5cbiAgICAgIDxzcGFuIGNsYXNzPSJicmFuZCI+VGVuc29yQm9hcmQ8L3NwYW4+XG4gICAgICA8cGx1Z2luLXNlbGVjdG9yIGNsYXNzPSJwbHVnaW5zIj48L3BsdWdpbi1zZWxlY3Rvcj5cbiAgICAgIDx0YmRldi11cGxvYWQtYnV0dG9uPjwvdGJkZXYtdXBsb2FkLWJ1dHRvbj5cbiAgICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+PC9hcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGU+XG4gICAgICA8YXBwLWhlYWRlci1yZWxvYWQ+PC9hcHAtaGVhZGVyLXJlbG9hZD5cbiAgICAgIDxzZXR0aW5ncy1idXR0b24+PC9zZXR0aW5ncy1idXR0b24+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz0icmVhZG1lIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIlxuICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiXG4gICAgICAgIHRhcmdldD0iX2JsYW5rIlxuICAgICAgICBhcmlhLWxhYmVsPSJIZWxwIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iaGVscF9vdXRsaW5lXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICA8L2E+XG4gICAgPC9tYXQtdG9vbGJhcj5cbiAgJyxzdHlsZVVybHM6WyJoZWFkZXJfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NvbnN0IFpZPVsicm91dGVDb250YWluZXIiXTtjbGFzcyBYWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10fW5nT25DaGFuZ2VzKHQpe2NvbnN0IGU9dC5hY3RpdmVOZ0NvbXBvbmVudDtpZihlJiYodGhpcy5yb3V0ZUNvbnRhaW5lci5jbGVhcigpLGUuY3VycmVudFZhbHVlKSl7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShlLmN1cnJlbnRWYWx1ZSk7dGhpcy5yb3V0ZUNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCl9fX1YWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WFkpKFNtKHVnKSl9LFhZLsm1Y21wPXRvKHt0eXBlOlhZLHNlbGVjdG9yczpbWyJyb3V0ZXItb3V0bGV0LWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoWlksNyxlaCksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5yb3V0ZUNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlTmdDb21wb25lbnQ6ImFjdGl2ZU5nQ29tcG9uZW50In0sZmVhdHVyZXM6W0JvXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm91dGVDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSW0oMCxudWxsLDApfSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFhZLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InJvdXRlci1vdXRsZXQtY29tcG9uZW50Iix0ZW1wbGF0ZToiIDxuZy1jb250YWluZXIgI3JvdXRlQ29udGFpbmVyPjwvbmctY29udGFpbmVyPiAiLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp1Z31dfSkse3JvdXRlQ29udGFpbmVyOlt7dHlwZTpaYSxhcmdzOlsicm91dGVDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDplaH1dfV0sYWN0aXZlTmdDb21wb25lbnQ6W3t0eXBlOnh5fV19KTtjbGFzcyBLWXtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLnJlZ2lzdHJ5PWUsdGhpcy5hY3RpdmVOZ0NvbXBvbmVudCQ9V3QoW3RoaXMuc3RvcmUuc2VsZWN0KFNTKSx0aGlzLnN0b3JlLnNlbGVjdChEUyldKS5waXBlKEl0KCgoW3QsZV0pPT50P251bGwhPT1lJiZRayhlLnJvdXRlS2luZCxlLnBhcmFtcykhPT1Rayh0LnJvdXRlS2luZCx0LnBhcmFtcyk/bnVsbDp0aGlzLnJlZ2lzdHJ5LmdldE5nQ29tcG9uZW50QnlSb3V0ZUtpbmQodC5yb3V0ZUtpbmQpOm51bGwpKSl9fXZhciBKWTtLWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8S1kpKFNtKEl3KSxTbShQUykpfSxLWS7JtWNtcD10byh7dHlwZTpLWSxzZWxlY3RvcnM6W1sicm91dGVyLW91dGxldCJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJhY3RpdmVOZ0NvbXBvbmVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwicm91dGVyLW91dGxldC1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIikpLDImZSYmRG0oImFjdGl2ZU5nQ29tcG9uZW50IixUaCgxLDEsbi5hY3RpdmVOZ0NvbXBvbmVudCQpKX0sZGlyZWN0aXZlczpbWFldLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChLWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJyb3V0ZXItb3V0bGV0Iix0ZW1wbGF0ZTonXG4gICAgPHJvdXRlci1vdXRsZXQtY29tcG9uZW50XG4gICAgICBbYWN0aXZlTmdDb21wb25lbnRdPSJhY3RpdmVOZ0NvbXBvbmVudCQgfCBhc3luYyJcbiAgICA+PC9yb3V0ZXItb3V0bGV0LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9LHt0eXBlOlBTfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dFt0LkFDVElWRV9QTFVHSU49MF09IkFDVElWRV9QTFVHSU4ifSkoSll8fChKWT17fSkpO2NsYXNzIFFZe2NvbnN0cnVjdG9yKHQpe3RoaXMuZGVlcExpbmtlcj10LHRoaXMub25WYWx1ZUNoYW5nZT1uZXcgTGgsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBJLHRoaXMub25IYXNoQ2hhbmdlPW9lKHdpbmRvdywicG9wc3RhdGUiLHtwYXNzaXZlOiEwfSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpKX1uZ09uSW5pdCgpe3RoaXMub25IYXNoQ2hhbmdlLnN1YnNjcmliZSgoKCk9Pntjb25zdCB0PXRoaXMuZGVlcExpbmtlci5nZXRQbHVnaW5JZCgpO3QhPT10aGlzLmFjdGl2ZVBsdWdpbklkJiZ0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCh7cHJvcDpKWS5BQ1RJVkVfUExVR0lOLHZhbHVlOnR9KX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkNoYW5nZXModCl7aWYodC5hY3RpdmVQbHVnaW5JZCl7Y29uc3QgZT10LmFjdGl2ZVBsdWdpbklkO3RoaXMuZGVlcExpbmtlci5zZXRQbHVnaW5JZChudWxsPT09ZS5jdXJyZW50VmFsdWU/IiI6ZS5jdXJyZW50VmFsdWUse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhdGlvblJlcGxhY2U6bnVsbD09PWUucHJldmlvdXNWYWx1ZXx8ZS5maXJzdENoYW5nZX0pfX19UVkuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFFZKShTbShWUykpfSxRWS7JtWNtcD10byh7dHlwZTpRWSxzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlLWNvbXBvbmVudCJdXSxpbnB1dHM6e2FjdGl2ZVBsdWdpbklkOiJhY3RpdmVQbHVnaW5JZCJ9LG91dHB1dHM6e29uVmFsdWVDaGFuZ2U6Im9uVmFsdWVDaGFuZ2UifSxmZWF0dXJlczpbQm9dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUVksW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiaGFzaC1zdG9yYWdlLWNvbXBvbmVudCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlZTfV19KSx7YWN0aXZlUGx1Z2luSWQ6W3t0eXBlOnh5fV0sb25WYWx1ZUNoYW5nZTpbe3R5cGU6T3l9XX0pO2NsYXNzICRZe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVBsdWdpbklkJD10aGlzLnN0b3JlLnBpcGUoRncoTVIpKX1vblZhbHVlQ2hhbmdlZCh0KXtzd2l0Y2godC5wcm9wKXtjYXNlIEpZLkFDVElWRV9QTFVHSU46dGhpcy5zdG9yZS5kaXNwYXRjaChDRSh7cGx1Z2luOnQudmFsdWV9KSl9fX0kWS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8JFkpKFNtKEl3KSl9LCRZLsm1Y21wPXRvKHt0eXBlOiRZLHNlbGVjdG9yczpbWyJoYXNoLXN0b3JhZ2UiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiYWN0aXZlUGx1Z2luSWQiLCJvblZhbHVlQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJoYXNoLXN0b3JhZ2UtY29tcG9uZW50IiwwKSxWbSgib25WYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25WYWx1ZUNoYW5nZWQoZSl9KSksQWgoMSwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJhY3RpdmVQbHVnaW5JZCIsVGgoMSwxLG4uYWN0aXZlUGx1Z2luSWQkKSl9LGRpcmVjdGl2ZXM6W1FZXSxwaXBlczpbd01dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCgkWSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJoYXNoLXN0b3JhZ2UiLHRlbXBsYXRlOidcbiAgICA8aGFzaC1zdG9yYWdlLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZVBsdWdpbklkXT0iYWN0aXZlUGx1Z2luSWQkIHwgYXN5bmMiXG4gICAgICAob25WYWx1ZUNoYW5nZSk9Im9uVmFsdWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvaGFzaC1zdG9yYWdlLWNvbXBvbmVudD5cbiAgJyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIHRxe25nT25DaGFuZ2VzKHQpe3QudGl0bGUmJihmdW5jdGlvbiBlKHQpe2RvY3VtZW50LnRpdGxlPXR9KSh0LnRpdGxlLmN1cnJlbnRWYWx1ZSl9fXRxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0cSl9LHRxLsm1Y21wPXRvKHt0eXBlOnRxLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlLWNvbXBvbmVudCJdXSxpbnB1dHM6e3RpdGxlOiJ0aXRsZSJ9LGZlYXR1cmVzOltCb10sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh0cSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJwYWdlLXRpdGxlLWNvbXBvbmVudCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7dGl0bGU6W3t0eXBlOnh5fV19KTtjb25zdCBlcT0iVGVuc29yQm9hcmQiO2NsYXNzIG5xe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuY3VzdG9tQnJhbmROYW1lPWUsdGhpcy5nZXRFeHBlcmltZW50SWQkPXRoaXMuc3RvcmUuc2VsZWN0KFRTKS5waXBlKEl0KCh0PT5udWxsPT10P3ZvaWQgMDp0WzBdKSkpLHRoaXMuZXhwZXJpbWVudE5hbWUkPXRoaXMuZ2V0RXhwZXJpbWVudElkJC5waXBlKGNlKEJvb2xlYW4pLFp0KCh0PT50aGlzLnN0b3JlLnNlbGVjdCh1QSx7ZXhwZXJpbWVudElkOnR9KSkpLEl0KCh0PT50P3QubmFtZTpudWxsKSkpLHRoaXMudGl0bGUkPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KFJTKSx0aGlzLmV4cGVyaW1lbnROYW1lJCksSXQoKChbdCxlLG5dKT0+e2NvbnN0IG89dGhpcy5jdXN0b21CcmFuZE5hbWV8fGVxO3JldHVybiB0LndpbmRvd190aXRsZT90LndpbmRvd190aXRsZTplPT09WmsuRVhQRVJJTUVOVCYmbj9gJHtufSAtICR7b31gOm99KSksTmUodGhpcy5jdXN0b21CcmFuZE5hbWV8fGVxKSxNZSgpKX19bnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG5xKShTbShJdyksU20odUUsOCkpfSxucS7JtWNtcD10byh7dHlwZTpucSxzZWxlY3RvcnM6W1sicGFnZS10aXRsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwicGFnZS10aXRsZS1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIikpLDImZSYmRG0oInRpdGxlIixUaCgxLDEsbi50aXRsZSQpKX0sZGlyZWN0aXZlczpbdHFdLHBpcGVzOlt3TV0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG5xLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InBhZ2UtdGl0bGUiLHRlbXBsYXRlOidcbiAgICA8cGFnZS10aXRsZS1jb21wb25lbnQgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiPjwvcGFnZS10aXRsZS1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3VFXX1dfV19KSxudWxsKTtjbGFzcyBvcXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBJLHRoaXMuZ2V0UGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZShGdyhSTikpLHRoaXMucGFnaW5hdGVkVmlld1N0b3JlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXBhZ2luYXRlZC12aWV3LXN0b3JlIikudGZfcGFnaW5hdGVkX3ZpZXd9bmdPbkluaXQoKXt0aGlzLmdldFBhZ2VTaXplJC5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSksTWUoKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wYWdpbmF0ZWRWaWV3U3RvcmUuc2V0TGltaXQodCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX1vcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b3EpKFNtKEl3KSl9LG9xLsm1Y21wPXRvKHt0eXBlOm9xLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvcSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgaXF7Y29uc3RydWN0b3IodCl7dC5zZWxlY3QoSkQpLnN1YnNjcmliZSgodD0+e2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgiZGFyay1tb2RlIix0KX0pKX19aXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlxKShTbShJdykpfSxpcS7JtWNtcD10byh7dHlwZTppcSxzZWxlY3RvcnM6W1siZGFyay1tb2RlLXN1cHBvcnRlciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7fSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoaXEsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiZGFyay1tb2RlLXN1cHBvcnRlciIsdGVtcGxhdGU6IiIsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjbGFzcyBhcXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnZjUmVmPXR9fWFxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhcSkoU20oZWgpKX0sYXEuybVjbXA9dG8oe3R5cGU6YXEsc2VsZWN0b3JzOltbInRiLXdlYmFwcCJdXSxkZWNsczo4LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwiYXBwLWhlYWRlciIpLFJtKDEsIm1haW4iKSxUbSgyLCJyb3V0ZXItb3V0bGV0IiksQW0oKSxUbSgzLCJhbGVydC1zbmFja2JhciIpLFRtKDQsImhhc2gtc3RvcmFnZSIpLFRtKDUsInBhZ2UtdGl0bGUiKSxUbSg2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSxUbSg3LCJkYXJrLW1vZGUtc3VwcG9ydGVyIikpfSxkaXJlY3RpdmVzOltxWSxLWSxYTCwkWSxucSxvcSxpcV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9aHRtbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90byxzYW5zLXNlcmlmO2hlaWdodDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MH1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfWFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCAxcHggM3B4IDNweCByZ2JhKDAsMCwwLC4yNSk7ZmxleDowIDA7ei1pbmRleDoxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBhcHAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjAgMXB4IDNweCAzcHggcmdiYSgyNTUsMjU1LDI1NSwuMSl9bWFpbltfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7b3ZlcmZsb3c6YXV0b30nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYXEsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGItd2ViYXBwIix0ZW1wbGF0ZVVybDoiLi9hcHBfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYXBwX2NvbnRhaW5lci5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofV19KSxudWxsKTtjbGFzcyBycXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdG9yZT10LHRoaXMubG9jYXRpb249ZSx0aGlzLmFwcFJvb3RQcm92aWRlcj1uLHRoaXMucGF0aG5hbWU9bnVsbH1oYW5kbGVDbGljayh0KXshdGhpcy5wYXRobmFtZXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fCh0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnN0b3JlLmRpc3BhdGNoKGxTKHtwYXRobmFtZTp0aGlzLnBhdGhuYW1lfSkpKX1nZXQgaHJlZigpe3JldHVybiB0aGlzLnBhdGhuYW1lP3RoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodGhpcy5sb2NhdGlvbi5nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KHtwYXRobmFtZTp0aGlzLnBhdGhuYW1lfSkpOm51bGx9c2V0IHJvdXRlckxpbmsodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicm91dGVMaW5rIHNob3VsZCBoYXZlIHByb3BlciBwYXRoLiBHb3Qgbm90aGluZy4iKTtjb25zdCBlPVsuLi50XS5qb2luKCIvIik7dGhpcy5wYXRobmFtZT1lLmVuZHNXaXRoKCIvIik/ZTplKyIvIn19cnEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJxKShTbShJdyksU20odFMpLFNtKGVTKSl9LHJxLsm1ZGlyPWxvKHt0eXBlOnJxLHNlbGVjdG9yczpbWyJhIiwicm91dGVyTGluayIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUNsaWNrKGUpfSkpLDImZSYmanAoImhyZWYiLG4uaHJlZixUcyl9LGlucHV0czp7cm91dGVyTGluazoicm91dGVyTGluayJ9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChycSxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJhW3JvdXRlckxpbmtdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fSx7dHlwZTp0U30se3R5cGU6ZVN9XX0pLHtoYW5kbGVDbGljazpbe3R5cGU6d3ksYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLGhyZWY6W3t0eXBlOlB5LGFyZ3M6WyJhdHRyLmhyZWYiXX1dLHJvdXRlckxpbms6W3t0eXBlOnh5fV19KTtjbGFzcyBzcXt9c3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHNxKX0sc3EuybVtb2Q9YW8oe3R5cGU6c3F9KSxzcS7JtWluaj12bih7aW1wb3J0czpbW1dNLGlTLG9TLFBTXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHNxLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV00saVMsb1MsUFNdLGV4cG9ydHM6W0tZLHJxXSxkZWNsYXJhdGlvbnM6W0tZLFhZLHJxXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHNxLHtkZWNsYXJhdGlvbnM6W0tZLFhZLHJxXSxpbXBvcnRzOltXTSxpUyxvUyxQU10sZXhwb3J0czpbS1kscnFdfSk7Y2xhc3MgbHF7fWxxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxscSl9LGxxLsm1bW9kPWFvKHt0eXBlOmxxfSksbHEuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobHEsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2lxXSxleHBvcnRzOltpcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhscSx7ZGVjbGFyYXRpb25zOltpcV0sZXhwb3J0czpbaXFdfSk7Y2xhc3MgY3F7fWNxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjcSl9LGNxLsm1bW9kPWFvKHt0eXBlOmNxfSksY3EuybVpbmo9dm4oe3Byb3ZpZGVyczpbe3Byb3ZpZGU6VlMsdXNlQ2xhc3M6VVN9XX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoY3EsW3t0eXBlOkF5LGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOlZTLHVzZUNsYXNzOlVTfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgZHF7fWRxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkcSl9LGRxLsm1bW9kPWFvKHt0eXBlOmRxfSksZHEuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjcV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkcSxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbJFksUVldLGV4cG9ydHM6WyRZXSxpbXBvcnRzOltXTSxjcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhkcSx7ZGVjbGFyYXRpb25zOlskWSxRWV0saW1wb3J0czpbV00sY3FdLGV4cG9ydHM6WyRZXX0pO2NsYXNzIHBxe31wcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cHEpfSxwcS7JtW1vZD1hbyh7dHlwZTpwcX0pLHBxLsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocHEsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W25xLHRxXSxleHBvcnRzOltucV0saW1wb3J0czpbV01dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8ocHEse2RlY2xhcmF0aW9uczpbbnEsdHFdLGltcG9ydHM6W1dNXSxleHBvcnRzOltucV19KTtjb25zdCBtcT17aWQ6WGssbmFtZToiIixzdGFydF90aW1lOjB9LHVxPXlrKHtleHBlcmltZW50TWFwOntbbXEuaWRdOm1xfX0pO2Z1bmN0aW9uIGZxKHQsZSl7cmV0dXJuIHh3KHtkYXRhOnVxfSkodCxlKX1jbGFzcyBncXt9Z3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdxKX0sZ3EuybVtb2Q9YW8oe3R5cGU6Z3F9KSxncS7JtWluaj12bih7aW1wb3J0czpbW2RrLmZvckZlYXR1cmUocEEsZnEpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGdxLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbZGsuZm9yRmVhdHVyZShwQSxmcSldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZ3Ese2ltcG9ydHM6W2NrXX0pO2NsYXNzIGhxe31mdW5jdGlvbiBicSgpe3JldHVybiBadyhETiwodD0+KHthdXRvUmVsb2FkOnR9KSkpfWZ1bmN0aW9uIHlxKCl7cmV0dXJuIFp3KEVOLCh0PT4oe2F1dG9SZWxvYWRQZXJpb2RJbk1zOnR9KSkpfWZ1bmN0aW9uIF9xKCl7cmV0dXJuIFp3KFJOLCh0PT4oe3BhZ2VTaXplOnR9KSkpfWhxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxocSl9LGhxLsm1bW9kPWFvKHt0eXBlOmhxfSksaHEuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjRyxkRyxKSCxTWSxkVyxFVyxCWV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChocSxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbV1ksWVksVVksR1ksb3FdLGV4cG9ydHM6W1dZLFlZLEdZLG9xXSxlbnRyeUNvbXBvbmVudHM6W0dZXSxpbXBvcnRzOltXTSxjRyxkRyxKSCxTWSxkVyxFVyxCWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhocSx7ZGVjbGFyYXRpb25zOltXWSxZWSxVWSxHWSxvcV0saW1wb3J0czpbV00sY0csZEcsSkgsU1ksZFcsRVcsQlldLGV4cG9ydHM6W1dZLFlZLEdZLG9xXX0pO2NsYXNzIENxe31DcS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Q3EpfSxDcS7JtW1vZD1hbyh7dHlwZTpDcX0pLENxLsm1aW5qPXZuKHtpbXBvcnRzOltbZGsuZm9yRmVhdHVyZShQTixmWSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhicSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyh5cSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhfcSldLGhxXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQ3EsW3t0eXBlOkF5LGFyZ3M6W3tleHBvcnRzOltocV0saW1wb3J0czpbZGsuZm9yRmVhdHVyZShQTixmWSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhicSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyh5cSkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhfcSldfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oQ3Ese2ltcG9ydHM6W2NrLHFTLHFTLHFTXSxleHBvcnRzOltocV19KTtjbGFzcyBNcXt9TXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE1xKX0sTXEuybVtb2Q9YW8oe3R5cGU6TXF9KSxNcS7JtWluaj12bih7cHJvdmlkZXJzOlt7cHJvdmlkZToid2luZG93Iix1c2VWYWx1ZTp3aW5kb3d9XSxpbXBvcnRzOltbZ1csV00sSkgsZFcsRVddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTXEsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0lXLFJXLFRXXSxleHBvcnRzOltJV10sZW50cnlDb21wb25lbnRzOltUV10saW1wb3J0czpbZ1csV00sSkgsZFcsRVddLHByb3ZpZGVyczpbe3Byb3ZpZGU6IndpbmRvdyIsdXNlVmFsdWU6d2luZG93fV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhNcSx7ZGVjbGFyYXRpb25zOltJVyxSVyxUV10saW1wb3J0czpbZ1csV00sSkgsZFcsRVddLGV4cG9ydHM6W0lXXX0pO2NsYXNzIHZxe312cS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dnEpfSx2cS7JtW1vZD1hbyh7dHlwZTp2cX0pLHZxLsm1aW5qPXZuKHtwcm92aWRlcnM6W10saW1wb3J0czpbW0pILEVXLEtCLG5CLFRHLG9ZLFdNLEVSLENxLE1xXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHZxLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltsWSxjWSxxWSxGRyxWRyxwWV0sZXhwb3J0czpbY1kscVksVkcscFldLHByb3ZpZGVyczpbXSxpbXBvcnRzOltKSCxFVyxLQixuQixURyxvWSxXTSxFUixDcSxNcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyh2cSx7ZGVjbGFyYXRpb25zOltsWSxjWSxxWSxGRyxWRyxwWV0saW1wb3J0czpbSkgsRVcsS0IsbkIsVEcsb1ksV00sRVIsQ3EsTXFdLGV4cG9ydHM6W2NZLHFZLFZHLHBZXX0pO2NsYXNzIHhxe2NvbnN0cnVjdG9yKHQsZSl7Y29uc3Qgbj10LmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgiLi9pY29uX2J1bmRsZS5zdmciKTtlLmFkZFN2Z0ljb25TZXQobil9fXhxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4cSkodnIoenYpLHZyKENXKSl9LHhxLsm1bW9kPWFvKHt0eXBlOnhxfSkseHEuybVpbmo9dm4oe2ltcG9ydHM6W1tFV11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh4cSxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W0VXXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnp2fSx7dHlwZTpDV31dfSksbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyh4cSx7aW1wb3J0czpbRVddfSk7Y29uc3QgT3E9bmV3IEdhKCJbcGx1Z2luc10gUGx1Z2luIHJlZ2lzdHJ5IGNvbmZpZyIpLFBxPW5ldyBNYXA7Y2xhc3Mgd3F7Y29uc3RydWN0b3IodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9bmV3IFNldCh0Lm1hcCgodD0+dC5wbHVnaW5OYW1lKSkpO2NvbnNvbGUuYXNzZXJ0KGUuc2l6ZT09PXQubGVuZ3RoLCJDYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgcGx1Z2luIG11bHRpcGxlIHRpbWVzLiIpO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczpufT1lO1BxLnNldCh0LG4pfX1zdGF0aWMgZm9yUGx1Z2luKHQsZSl7cmV0dXJue25nTW9kdWxlOndxLHByb3ZpZGVyczpbe3Byb3ZpZGU6T3EsbXVsdGk6ITAsdXNlVmFsdWU6e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczplfX1dfX1nZXRDb21wb25lbnQodCl7cmV0dXJuIFBxLmdldCh0KXx8bnVsbH19d3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHdxKSh2cihPcSw4KSl9LHdxLsm1bW9kPWFvKHt0eXBlOndxfSksd3EuybVpbmo9dm4oe30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgod3EsW3t0eXBlOkF5LGFyZ3M6W3t9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W09xXX1dfV19KSxudWxsKTtjbGFzcyBrcXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLmh0dHBQYXRoUHJlZml4PSJkYXRhL3BsdWdpbi9kZWJ1Z2dlci12MiJ9ZmV0Y2hSdW5zKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3J1bnMiKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG4pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9leGVjdXRpb24vZGlnZXN0cyIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hFeGVjdXRpb25EYXRhKHQsZSxuKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZXhlY3V0aW9uL2RhdGEiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG4pfX0pfWZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKHQsZSxuLG8pe2lmKHZvaWQgMCE9PW8pdGhyb3cgbmV3IEVycm9yKCJ0cmFjZV9pZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIGZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKCkgeWV0Iik7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBoX2V4ZWN1dGlvbi9kaWdlc3RzIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX19KX1mZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSh0LGUsbixvKXtpZih2b2lkIDAhPT1vKXRocm93IG5ldyBFcnJvcigidHJhY2VfaWQgaXMgbm90IGltcGxlbWVudGVkIGZvciBmZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSgpIHlldCIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaF9leGVjdXRpb24vZGF0YSIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobil9fSl9ZmV0Y2hHcmFwaE9wSW5mbyh0LGUsbil7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBocy9vcF9pbmZvIix7cGFyYW1zOntydW46dCxncmFwaF9pZDplLG9wX25hbWU6bn19KX1mZXRjaFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zb3VyY2VfZmlsZXMvbGlzdCIse3BhcmFtczp7cnVuOnR9fSl9ZmV0Y2hTb3VyY2VGaWxlKHQsZSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3NvdXJjZV9maWxlcy9maWxlIix7cGFyYW1zOntydW46dCxpbmRleDpTdHJpbmcoZSl9fSl9ZmV0Y2hTdGFja0ZyYW1lcyh0LGUpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zdGFja19mcmFtZXMvc3RhY2tfZnJhbWVzIix7cGFyYW1zOntydW46dCxzdGFja19mcmFtZV9pZHM6ZS5qb2luKCIsIil9fSkucGlwZShJdCgodD0+KHtzdGFja19mcmFtZXM6dC5zdGFja19mcmFtZXMubWFwKCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm57aG9zdF9uYW1lOnRbMF0sZmlsZV9wYXRoOnRbMV0sbGluZW5vOnRbMl0sZnVuY3Rpb25fbmFtZTp0WzNdfX0pKHQpKSl9KSkpKX1mZXRjaEFsZXJ0cyh0LGUsbixvKXtjb25zdCBpPXtydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhuKX07cmV0dXJuIHZvaWQgMCE9PW8mJihpLmFsZXJ0X3R5cGU9byksdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvYWxlcnRzIix7cGFyYW1zOml9KX19a3EuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGtxKSh2cihsRSkpfSxrcS7JtXByb3Y9TW4oe3Rva2VuOmtxLGZhY3Rvcnk6a3EuybVmYWN9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGtxLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsRX1dfSksbnVsbCk7Y2xhc3MgU3F7fVNxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxTcSl9LFNxLsm1bW9kPWFvKHt0eXBlOlNxfSksU3EuybVpbmo9dm4oe3Byb3ZpZGVyczpba3FdLGltcG9ydHM6W1tjRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChTcSxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W2NFXSxwcm92aWRlcnM6W2txXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFNxLHtpbXBvcnRzOltjRV19KTtjbGFzcyBEcXt9RHEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fERxKX0sRHEuybVjbXA9dG8oe3R5cGU6RHEsc2VsZWN0b3JzOltbImluYWN0aXZlLWNvbXBvbmVudCJdXSxkZWNsczo1NCx2YXJzOjAsY29uc3RzOltbMSwiY29udGFpbmVyIl0sWzEsInRpdGxlIl0sWzEsImNvZGUiXSxbMSwiYXJnIl0sWzEsImV4aGliaXRzLWNvbnRhaW5lciJdLFsxLCJleGhpYml0Il0sWzEsInNjcmVlbnNob3QiXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQW95SHBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphclp4cGRoeTVjb1gvWXhWZUF1WmhPUmdDNTNnSFhyNi9pMkpyZW1xcm4rMVdpNlNLeFV3a0VIR0hRSURPL3VzL3Ivc1AvaHV0WlpkTDYzWFU2dmt2anp6aTVJdnVQLytOOXpINC9ENisvMUw5K2lyOC9Mcjc5bzNJNTZSM2ZyN1I1dWR6bUx4ZXZ2L0FYL2NJNitmWFhmLzZUdXhmRi9yNkJoZitqRUIzMXRmbngwSHlldnk4SHZMWGhZWjl2cWlqdHgrSHVyNHV0TC9lK0lieTlUZC9HOWJuay83dGZucWhNVXVuY0tNVW82V1EvUHVZUHlOSW43K1R2KzE5akx3djhOcE1LUVgzK2ZSMU1TYmtwOGY3NjdQM1AwN1FUNVA4MTFmdTE5bi85dFV2a3gvbjErdnBsN21zWDNQazYrKy9FY292cjZkdnQ0ay9oY08zRWNXZnYzRjd6UC95T0Y5Lzd6MzlYdnM4M2N5VkdhMWZFZlVtKzY4WjBoc1hVNTdlajFYK05QNFd2bTd2eitCUDk5TnZsdno0N1JkL2RoZ2hzaXJYaFJ4T21PRUdlNTkzMkF3eFI0dU56ekh1bU41clBiVTQ0azVhcDZ3LzRjYVdSanFwczI0N21tUE5jb3JmeGhMZWZjZTczdzZkTzUvQVcyUGdZbHJxdi8zai9xZHYvanQvM0wxYlV4UjgvelpYakNzcXJobUdWazRmZVJkTEVPN1h1cFUzd1gvOStWcCsvMFA4RUtxc1lIblQzSG5BNmRmbkVxdUU3N0dWM2pvbjNsZjQvRm5qNE5yNXVnQlR4TDBMZ3dtSkZmQTFwQkpxOEMzR0ZnTHoyRm1neWNoanluR3hBcUdVZUJoa3pDblY2RnJzVWZmbVoxcDQ3NDBsMXFpWHdTWVdvcVJLYm5WV2FMSllPUmZpcCtWT0RNMlNTaTZsMU5KS2QyV1VXVlBOdGRSYVd4WEl6WlphYnFYVjFscHZvODJlZXU2bDE5NTY3NlBQRVVjQ0E4dW9vNDAreHBnenVzbU5KdGVhdkgveXlvb3JyYnpLcXF1dHZzYWFtL0RaZVpkZGQ5dDlqejFQUE9rQUU2ZWVkdm9aWjFwd0JsSll0bUxWbW5VYk5pK3hkdFBOdDl4NjIrMTMzUGx0MWI1VzlWLysvQnVyRnI1V0xiNlYwdnZhdDFYalZkZmFYNWNJZ3BPaU5XUEZZZzZzZU5NS0VOQlJhK1o3eURscTViUm1ma1NTb2tRR1diUTI3Z1N0R0V1WUxjUnl3N2UxKzc1eS8yamRYT24vYU4zaW4xYk9hZW4rUDFiT3NYVC91bTYvV2JVam50dHZ4VDVacURuMWlleTdaWnk0M0k1eDFUTG50SmxhUzJYdUZYTUxhWmVRV3oyMXJucUJrOXZQTHQzSHhyZTZaNVlQbk1Na0hMOXlQYUhvUXIybWZPUHhFM2hmcGQwMTAyRnBrNTZ5TTQ2OVRyNjUzMVVZTFpjRy84NDhPN1JqM0xTc3VGZFk1dG8wbml1bGZYbmtsdkkrbnFRc0J3QmRmVzhtZGQ4V29tK3NaT285NTU3KzRvWWtLTDlsbmpaakp5RDVPSFZ6bTZXdVdjNWNaWmVUSnludnpmTzQyWWM2Um84UnJTR1NQbmxNUzIzbmNRbTFmSS9DeGFVZVRpM3dkZHNnd3RwMzdicHV5TVhhWWJKcnYxWUE3dVhUYWNiVDVkRGEzS3pEQ20weWY1VXhNMzNiNVFrOWhGMW40YVozU1JTRXMyOGZ6V0k2Vm1lSXlXeHM0MXErcmg3V09DMGFWekRpdUsvR1BCRVF3U21KQ09uK3hFUmFZOTdNMEViYnZoeml0bmF5b0xHRVBNSnN1MXBpa1FmZ05jdGw2WHNJMXRmTmxoMXozRzhvZHBLRndjTWh1eTZQNGxFVFFPSHVNNDJ5N0I3TlNDSU9UN3A5WHlZL0hPWDJRaUsxZlJaejFIWUVPWGlZZmtyTithUmx1L2hWZlIrUm1HUnR5VEk3blptb2ljZzcvdVp5RDhHOUR6azZFb05vc2FHUGFneDVaUktOY1laOFd6bjdpQXZQOWJQWktHWWtKdmNOUE5EMW5ZYytQQ1J3UFkxUXlIRHRhdFhjNnJYQ3hKZEpiWk9STWhlVmRMQithMHVSbXhJUmhjbGsyT2UwYm9jdzdpeUVKK1p6Vk1EeWdmK2R4TjJZZXNycnIvWFR5Tmk5V3BuNTlNMDAzV09OQlNZVkV2ZFY2QmF1SFBaS0RETldHeFZZS2JlNFdFY1NjR3crRTZFa3hzbkowQk05dEJLWXQ2QWJWejFPR2d1Z0lmZnZIRVQ2SkZvTDR3UWN6bUN5Szh6V1NLTWFod2ZIeUdHR2txWUdFTllCVG5PRGpNdGNaeEZZMmJZVmNBT1FJMklodDd1TnBTUkY5a1JDZENZWVBPVHJHeUEvVnJjdVltSGNYYStGblJseU9Zblp0VkRTM2p3T29kcHRTZkFrd1U4eU55NloxWGpBS2FCWXVaK3doYlVrRkFoYUEvUkpGdm8rUVFWYkF6Q3ViU2NGb3lka0pwTi9iaUhtSElIT3R3dWh0bmRPZTBtRXdRZkxHOGhSMHdnbEt4UkoyMkp4RTFDRGZONFRlcmRid0VER3lQVldkRHN0QUdPMkM4TGI2Qy9tUmdQTG1KaDRnS3JXenlTbWdmNEZGbGZ3ajVjSlVGRGtLa3dPa1hQbmNZMVpKZ0tQRVZhZ0c2blFvSlNJZGtzeGQ4VlFPMW15K1M0a21TMkZ4QllFVk5ZdWx5UWtZNUZRL2lFTWI2Y1FqdU9za3hKaWxGZ0RNb3p3OEtZQkdWRTZSaGl4MWhJOXQyOWtYeWRLWWp5ekxsWWhJMnVZeXBHQ2dlTTFBWGZlR3lBMDg5T2txSnRNZW1mMGkxd0hNRjYrZjI0a0pNaEZoRVhRaWpnQ0hiRU81QnY4dUMvNUltSWxCZ09NQ21vQ2cyUDdUYWlCM0FFQUJWdFJtSk1GSmlTenFHSEFLYTd1QVVPUEJwcDBCbVNRNGdVTklSTmZZUDFGVk56Yy9ENEFkMEdlb28wclV1MENZUkFCVHlxV3UyazRVQlR0dFhoV0l3Uk5yQXN4RGpKM3JkMVg3Y0lLaFd1VEtTQVNlU0JtSDBpWXl0V05zQWFoaHJtamxTV1ZXQ0x6MnpKRU9zWTlGUTZyd3ZiZWJWOGlrRXVrc2xseUxOQ05zemFBNktZSjN5MkxBY3kydVJnMHlaaFdtdWlVeGhVRUFMVlpJbFFQY01UVkd6UlBzdkxvbXhDY0Z4QWFyV1JDd3RhMUNFbTZUUGdRdXhpL2phNnYrQUFlR3NRaXF3MThJdHBZUjBKZU9Dd1dBVWxMWXVyMktzTUkwbzRuSU5YTjVUU1kraHhaOVhQNUZwZGNDbGVnc0VQSFlHSmg0VWoyVWxZZy9OcmxHbk1zSm1NalZMaFpZRVhUbG1JREZWbVd4SlNqb3pBT3hCY3EyWVBsVVU0M041SFUvWWFGdi8vczlFVUd0a3NtYXJvQWRPOExCWkVFWnlJbGRrSlE5VEJyUlI4Y1VyYklYb01QTWszTVNnT3pab0ZGN0JJWEZ6RllHcU5ackJ4NnlMTmVnRXNpbi9xR3VJS3VqaHpQSFRteVJIQ0VCcmxtRWpSOGU5VGxrT2RubGF0WlBhdW53d2ZqbmR3OEkxb1dkQWI3b3lNazQ5QmVxWEhQR01sbEVtT1VSc0FNTkV3MzVxaEFud0J5T2NnOGtET1RtMnY0WXdVaGdLSElCS1VGcENEUEMvcXh0UDU2VUdSc1lMOEZDUThnTFRtSW5wOHhLWkF1ZE1DSThzT1hmQU9vQUxrOERnK1Z6amFXcDBwSG5BZVI2Q2xtNWFUWmk1WFRGOW0vejE3RUoxbU1jb2w1QXgxTUplQU93Y3E5NEIyUlBRZ0pRaGpVSHVnVnBCeU1kQVc0QUdXVU9IUHRqZ0k4Ly9LeVhtM0tBd3h3MlFOUVFocVFOOEZTWC9ub0ViR1c1V0E5MGE3TXJYY0xXMlZvU2lJeUNla3ZySCtUeEtvRXpnMWkxMFpXMkRwRzhnellkM2Q0STI4bWdYVWhjcVJkajBOaWlYZVFCbVErUzVvQnExU1FDUFBGdk1JRXpHNUZvclNSK0loRzVCd2lPeXRtRTdDQXJKODdPVGlJTllSbHhLOXozNW1ZOTdvV0lnZm9aa2FnTVM3TTRJQUpjQzRkbnBtQmNvdUw2WWRIdHRla3VDQnNxdWVBSk9RMnF5bnhESHNzekFEWVRIREJCd2huSHBVdkNJY05tUFlKODJFSWdoSXpTTnd2aDYyL3FGc3doYWVUa0NJMFlDeFNIV3lYK3I5RFRtS0JUajBiOEVBNHMrNHNDeCtoYzUrUmFYdkRJb2hoWTdxMTVIeGo0SnBLWVdhR3lVRVV5RHFzUmt4MTY1M0Z1TUlXeFhWRnpFR1pDSTJUSlhoZFFoekFXNENwdUFIeVpSUm9OQVlML1JnUDI1RVJnWGtvOEdmZWltK1VRMGZBTGNLU2pPQ0JRYkx0OW43Z2F2Q1RzZkRjbmpTMTlBWlZpSG5NRm9NZjh4UkJHcWc1R0JEZmcrbDZ3MDFKd203MHUxdGdXRldnWENSekp2MlJOUTJHSjlZbmlMbXc1MFJySmtpTXlRVnAwb0pLa1RRcXNzMG5Kb1ltM0JVRi9FQzk2TVlFU1VORzgwenh6UkRBakd0b09MdXFkVitFMkVsZDZvSDVLS3JUbGZEMTJZVmZYdmoxTTg4Qmtac25DbGp5eG1JeVVGSzN5dG9OTFE4cXNVK0Uxc0I0SUZnMnVoOCtSQkloRDhrZVJEaHZ3UzB1RkFUMlUrYXBpcThObzFnRFZnWHJwZVVETTJGSWMwQ2V4OUMwcCtQQkw2SVJUYTRNK2Qyckt5ZEV5bnhnalIwQ2JrRWFNQWRWeXd1SnJMeGRzNDdzeFh6aVVnbG1GbjRsd0JrN0FkSGphSnNQYlMydXdHQU54b0JlMGFHUUY3QkdISGtVb2ljeFR3ZlJWRUVCQUlvaXY0cEZpZkR0S3c0bjRTMEdFOXdKZFZnUmJEdG5zOEI0aWFUS1FITVhKWUlXNnZJc1RLN2hpdURDblFGSkpneTloN2NHUzBHNXhGdkp2cWFFaDNJbVNiZEltYXFVYU0xeDM0cmNRUGZpSTlDSHZVYUZqdzNtc2hLQWd4aEg1c0hPQURrMEVGUEFxUjVWaGRmWDB2SnhaZ2VNRWk2YnFTTWZFUzlkdzdFYjVDTWxSN2tkN0RQSVY3SUJHN3RFQ1pmd0dnMEZIQWNUZmdqQTdiQSt0NkpNSTR4dGsrbkVUbHkvSUkyRGwwMVpNcjBVNG5VRG5TajlQVUg5S2prUDlWd0VKaTVoZ0crT3Q2QVlLdmlCYkNETU10UW1kc3prdXlvdGQrRXZzWDVRTUltUDZpWDRXWktPOVFlbE8yQVo4VHU1T0d3NVVBeWgrUVpSamd1WGJpQk5kRWwrR3c2S0M0MUVrbTlpT1pBODFhOVIwWnk0TGloQWhXMVdGb0lrc1J2RSt5aTF3Vmt6TjJSakJ0K3d0Z1NTS2d1NkczR3lBZU83aENsSFZvaGJvWWFpYkpCTlJ3QTI1bzdjUmxlU3UxYzJoY1ZsWmdGZzFwMHhtT1Myblp3TmFnR0lXQlhRRWlXRlk2N2dzRExaVFRDOE5WVkJ5SDl1TFdGM3lId01mVlJkMTBmSWxEQkRCYWFTNWxCUS9lN216alEyd0xaQzE3OFoyei8rcnZzZnZvM2dIWmkzeWRSVUtMczJTUkNNak9GRXZDcER5TWs0VHdEemVuVG80SHQ1dEJWNU51Z2FUTjk4WjRtMjhZZnBDV0pzZjg4a2ZTakk2Z1QrSWtUQ1NJQXl1cmJzQnRnNWVETmwvR1Z0d1dxMURaVjFnZytkamhDend6eXBOb04wUWI1K2dMWFV2dlFWMmdYMlJWa3RlVXlFVnBtcVFudkJKOCtHaWNkKzRUd2J1blFUMndENUJXdHlSQThOVkJ2UFF5RGpJOUFhcjhhQVJXQXNqdHh2Q0VWNEVHL2pzUkZIUWtRQ0UrZWgwVi9CS2tsRFhCWFFNT0ZYVVZwZ0ZtU25Za1p2cW03OGJrU0FkRVNuSTZUSnhiaE5QbkxqcGcyc0JKY2JNbWc5TTA5aU56eTI3Y0JGSFhaVThnUjl4M1NyYXNFaUJsYnd4U1g0SlcwWGtDbmtlSW1JeGJMRkgrVEU1Q21aS1dWRkdzY2pqM0V1NEFnRElZTFIyQ1VPcEEvS0RLMkxZdVk5ZXlxdXF5MzQ0RjVMQjhPbFM3eVBjV0xJN2kxRWRnRzFmbFZyT0ttR2pPOHBRV212Mm5pSU54Z3g0N1RRUXd2elhQd3dINkpRaW9zNDNCKzQrRDdnQlBCSTZYTlJyb0NJR2ZLb3FSSWNoRWc0aVFCaC9ZSmxuUFRLRUJsU0NIWURLaHhra29UR2ozaE93V3lSU3dnejNtODVTQmtmQ0ZBZWhWczJwb21YcWt6OVFFQTErQUlLQmZ6TlhjZ2NqVGtoTXE4S0NuNGtraGhBUnBYckRQQzh5Qnk4eEFGTVpCYk9aSmNxZjRkd3c1aWhDdEVoSkMzeENRWlBSb3ZiNTJhQU92Zm43ZkJLMFZjQmpWRndQSjJuSXc1c1Y3UVhERUpBRUVFb3ZnaHk0bW1OTWJKUzRhcllTcnFxL25zbVM0WDVneDhMZW42QUg3dE1CV2Jnc2ZkVzlSUGtoc2tOa0x3NVl0Y0JKY3kyYXF3TlQwR3VIZFlEcFRWeG1zd2ZBRlFCK29reElRTHc0N1YyOEpNMXhER2VjRkYzR2VyT3ljV0FCT011aUdnRUVLcHF5Sm1RYXdOSzZVT0tHbUlqRXJhUGVFOUd2YmhDWFRsM01wSjFOSW5maW9oQTJ5MWtQSzRSK1lJTTQ1MVFUdVhmQ0hPVkVaSmtQSlBVV2RJTE1HUkJySHlyN0FWNkhVNjRyVHBaS213dlZITVNiSGV4ZWd1Ym5VT3ZTT25FeHpFUVl5dDY4WkxIQ1NBTGlXK0NCQVZNanNZWm5zNldqYnZJQVVNV2NHTXlxd2tIa1FnZUVpcXF2ZkNvd1BpUmVjSlRkZVViZ2dMaU9vUUl5UzNUVkYzUXM3QWl2ak9mczkvU29tMjRDMHNhSVllTG9tem5WVUhIRURrejVxeDYrZXg1QXhlcVEvaFpnWkZ3dE5raCtjZzZUR050VFNWZjhOeS9FaDJvZytoRFBiK3FKdlluUU12R2NyRUVRN1Y0THllOXRodTRicHhEd0EyZ1ZWQkJYcFZuTXYvakoxWHJCODJEWnlGSVhpL0JlQkx1QlRXSFlxL0llaVFVb3dMOHhkam5xSnlBZEF0RitRRlFza1pqU0NWRHJVaTNoSEt6RElGZ3NqekNvOHJ3a3ozanF0VEh1RjNEaVdPRThheFlIdXlvU0lKVVZIWDU3clZBUTYzOVVCMXNUT3ZvU0RqR0JrNys2NHZOdFU4MGdJMkhHdWhBeE5yVlpzRUowbVBNSUJHS0NHeHlwZmRnTFM3UHRVT2RxZ2hweDhaam9WUjNOMlRocks1Q1krT0JDTG8xdnkvMVJTRXlEY2tXK0RmakIrOUlqZmpBbFM5QnVsNEVuYnhpNVNHWVF4ZUc5N1crcUN5Vzl2YUVrcis5K0U4Ly9lMUhCYnZ1NjZkYlRLbytCRlJ4cmR0dlpCQjhwdklNTVlrNlJHYUdxKzJkRmpzcVRvVm5ySStzWFJmVjE0aUZHQkZ6cXQwZTZkTktsdGpXcm9CQzhFck5HUUJ6dURzMGIzRDAxZzVFT3BYcHFxck40TFFyVjNmaUNvS2lvM3VnUmtnVTBUb0FjOUlyUkJGWnNpelBnek1XOHhUVktyQTJrSTU4SHNhNkU1a1dyMHNKc0FocnFCb0N2MGtoSkhTV2FvbS9HMWw0U3ZQb1ZjVUpXWHVGSmdFWUdmQlV4TVpma2grZm04WXowb2g0TEFoY29rSkpQV21URVBDejEyNnFhbzNaZ3lhRVFCeXd6Q0lFbmZhMnQwcFI4QXlhUEwzU2tYUXljcnFYbXlLWWx5T3d3cGZvWTc1R09hSkFtREVZdmdGZEx5U3V3OTVGV0VGVnRneUt4YXpCTFBUOGxtYkU2U0hyUzBoZVZYU2dIWW1lc1FZcklhako1dkZZVnNiTC9ZNkVZWnA0eHVhS2VSRW1hQ1pCbnlsODhHYWtZekR1Yzg2SThQQ0FYQkdWYm5obUtpZzlxeHl6bkJtQVBCSGpxRmtUbXNCNVZzaUoxeVF5WmNaaE9TZ1RFSUFXeUhRVmZ4b3d3a3dEV0VBMHN1NG13SVhVVEhQQ21vQ3RxclJra3JnS0xESTVHV0FUeHN0UGhxT1hWWkJDN1Rpc1FZQitONmtFWlJ0TEtoUkVScU8vRm9NbGdRRThucFh3dy9zeE5pZ1E5cTRxeXV3bG1FWW1abm1SSHNsOU1rZENTK1VWeEwzMkV1NitNQ0wzYkNRSElRajFRYVg0aEE1dXBKTHhVRUhpRjRhdXpLMDI2Z3hGempLRGc3V2NqRE1uNDdSWmh0c2srdkYzQ1AyTDVnQ3A0WjJsblFrMEhpRmZNVERjcTRvcVhjWjBxdXdudlFJOVZOZ1hsa2xoeTZGY1pET0crdzZicHlEL3NMcEhtdy9ZeUNDcjI3WTIrSFpQK3lMWUkwTUh1Q2RpaEF0Z0V3blpDVjVXeEFoQktLT1hDcEZhWW9GaVgzS1FpdVEvT1lLZVpRV1FQT3BBV054ODVZdmIzdW81V05JVGcwRjZtWkl3aXFvMWhRZ0pTeG1OdDBKV0Z0RXZjaFRXa3JQeWkxd0QxSGU4ZW1ORVJuVnQyMTdwcTRrTVpoNFlFcm9maEJ5bDk2WktWZGNtTWhJSTVRMHFJNXo4d1dBNGVWNjBDN09aNE1vcnpVVEt6anVKeTUyYXNPWUU3UndpUnJURkZBTEVLSmxlVlV5T2pjV2ZSQ1pNU3c2U01RUGdERis3Y21IUFgzY2MvdnpaL2MwM1htSFNFNXcvU04ydmN1VXZyNnBIakNkeXFreWtsTENXYzJ6c1hjS0dJN25nUXBBRGEzRWFHTnFUZ2xKSUFwL0FzUU5OVW1QVHRyK3hGancrOHZnUUZSMVFnTkd5N0dZQ1FsUmd5MHdTcnArOGdlSUlERHlzb1RwMjJFOGNXMGZqc2M0TkVHNTRmVGZsV3JWbkpqZFZ0RHRkRDdKTEdhaUV2ZDZ5akpzQjdKaWhzSGJ2R2RPaktobWtzeUNUS05VK0hIU3Y0bVF3d0dtK1RYK3l0V0VqTmhtSm9vRngxZ3MxZkZHVDd1SG5rTmZKdzNLZElHVmNtRDB1aE1iY0lpaE1pQm5XYThtS1NxV055dU9CbVZmS0hCMkROc1pUdHpXSWtSclgxUDRLdUt4U0xmZU9yazN5R1dtTzMxUHhrZmpSTmh6RDV6NEJMd3BtSXp1MVZjZlBBSDJxRFFOSFFObFJ1d3hRYzNLSkhxZ0ZjZUdscXQyVTNobHdXREZCZkhoRzFJZ0s5eVNqdE93YkFnbU9oMk0yVUxza0xGUUppRi9GT2JsMm1WVFVJWXpieHVFeVRMTlhwcVBGVkpBUFN1NVc0T0JscXBLUkZkclNhZHBKQ1VjNGdpaTczU25BTU1DR3hzR081MUs4NGFvWEQ4Zno1M2FzN1BISVNGeFlWRkJTRldoRm5odEd4WkJtTWdXOGQraUpnVTBHQjRIYXVyRmZBQVBNcG5JZlFzMlBpWHNhVUFiVXJGS0FxY2hVYnhsM2VoVTNWQXcxZExzakVNdFpTRVVpSitNU3h6YjhPalBVQ0lQSmRHT3d5cCtLbFh4MmYzckQrNXpiVTBFL0VWejgrVlgzZVRtckN3RTFMTXdIU0dTM2VWazg4c2M4NC9NYkVkcjBkTDVvaWVBZWlKbmJTWnBUbVNCQWlIeXBRL1VtVm8ybGVjME9zb21nY3VTeFFTNGl2aWdVSFNxL0JrL1VSdUlaQThDaXdRR21iWkVJaFZvNW9seXV0MGxzRUJCWFNKVFd5VzBydDhRY1RmU3piYWZTMWxGVHlXaVZjRlJSQ1c3V1B1a2NRbEdZa3JRUDVFd0k2UGtCQUlqMTRHbUdoanhBU0VPdUN6RUt3ajVmalFyS2hRa2k2azBiaFR3L2RBNnBRSnZFZzk1VENUNlVOTStMV1VyeUhLai9oaFFuVFJ6QWpPSkNaR1FZYTZtS2ZER0pBQk42Zld0UEVmTzhrdTJDTGtFOU1PY2dRNUJwU1ZQa1dERUxyWTZ0elFPeTVMeVo1NUg5djQvV244L3UvNHJXbitqUWhWNkFJTjVlaUJEN3Y0bW1EZmVlRWJCdjJCWSthL0RhR3BvenY2NGVkSzUzMGhqd040WW1MTWdXYVlwcmtPL3J1SlZVK3V6cFpLK2V5Ym04ZHVteTloQ0taRG82bmlraDVUcjZ3cW5KRE5nWnVCVDFUWGpWN0dBWGRXQVl3dnVvMVlEQUF5bjR1WWxuRGIxTDNsUVZZVkdDL2FJYk54WUMyTFBYK1lBeFJLUGFSZTBsaExsS3Y5TURSaDZVMkVXOVVvQUF4dXlxazJHczBodTJaOVpTRnBOUjBVY3NPSk1Xc1dUQXdsak1RRk43QlJKK3FXbWt5NldpQWZqT1BnVDR4QVZtK0JvSXhvYmg0OUNUQ1B2dXdCY0dweDNxSExzdUxxL1oxUWdKbXRYTmNzRmFEWHZLYW5BWFZSWFUwem0xU2RCVTVzWFRJMG1Td3pLamgwL3RYYjA2blZERXR2TG9VTVpSRlloSHIxZWx2ZkRLNHZCdlVMK05qT3dabDhsRUE2cEx4bUhJNzl1MmV3VngrYkpqcjNxdkhXdkVJYWxMOGlCOUcxQnZ0Y2JwVlFkZm9BSitBZnI3Q2tEM3Z3N2xueU5ZWXZRM0lmeEx4ZTJIRVA0UjRJZ1RNTEloWG10UmkxNk8rR1A4ZUN5TDljWktWNVF2RDQ5VnE3YXJIRGlDMEJQQlhxVWNuRUJDQTdJQTBGbU1XQWh0bDNPaHMydGxQVnZIZktwWEVnRWF1am9zSnJvWTB1RTJQVmVWWm1CTkVBakVTMHVYWkFXWENoc3A1UnJVTXR6eDlBb2RtQ2hPUk9ZR2FJOHdWOXhWUUdCK0pEZXAvSml2akZocVRNQ0RmUnpIM1JJV016MkNIS2dZVFFXOGhUaE9GUVcwc0dUb0R6K3h5bDBOZmFCY1VrK2IvaTRRRG43VVprZGhOUkhTWXpnVkdEZnordmJhMFVmaFU2WEVEQmIrNzlwemozSFhyZFJWcVZjRGtMU2U0aDZpR3JFd3dJREFaTVBQVUhwN1pTcDhSWWpTWGdKbDhsTjdudHlsbzVIMHM0Qzh1cW53ZkpnV0ZhdHRxUDJOVkdwZ2RuNmRZdkF5d2tyOWt0cTNTeUpuaUFPUm9KMkRBOTFqUWZFVEpLUnlRclk5WTcxNFhsRDRZcDNkWkxWbXVuNnBsUTJsc3hUejFZTUc2clVpc0M3U1hwMTd2cXV2aTFFQWFVbm1VQW9HeGM2VHMvTFplUXpLM2xQY2J6cTNFQ2ZtRk8vZUZrL3pRd3I4S2NMZFAwMkJQMldBKzY2NUp6RkFrQmIxZEJncUdYYUN0dmREOUxZd0hOQWlHTWVIb3ViVlg2RGQvUXUyQTNTWVpnVDB4dWdGbWUwQTZrMFlMMnJuSGlTREg4cFNHR3NuL1ZXZG1XV25NaWdzZ0RndlNkMkNXNW9XVFF4b0V2cEZFQmRHWk9INTMyUUVNb0RmVkhvbEpxd2tOVlduMVlkRHprRXBFdi8xcXB6ZUVZSmphZGRoRXBuVnQ2Rk95MnEzUklYY0FSbW45bzZJMnlFc1o5eXY1OGdWYlEva0dsbHBobll6U1pLbHU1Y2hHZ3IzSzRYbkFSejVCbUc2TXRrMmNOWXdpWFpReUFpOE9DRGd1QXBFUHRST2NORE9mVExSUk9CYytMcklEWGlDSkgwYWRITGd6akNaYXJDL2c4cjFYQmdzWmd4alBtNW45ZmlOT3pMZUQ4SERpNjlmUzVWRXlHRTh6NHAxcVFuQjM5WHdlUlBMSVFIUDhoWGIwSjE2TlJ3alYvRnRta3BwaUgxU0tsMzFjUUh2eHljbXpBaDRGV2JnNG55bnlnN0UrVkJoYkRRUHdpK0diOEFJcGtmb3JqSUQ2UTFXb2F5RERoUGNYdFJBaHNJMjZXdnRwNWRaQTA0VkZjZWpxWDlwa0NwcTA1N05aZGJ1OWxmeHZyM0pES3NYaUp3cGFnR00yaVZJMmtKSzVvV1FoNGYwOEE1b0JhV3BDV1BDNkFDbnF3aFRWby9waG1NQndTVWRwZE0xVVR2Y1hmWDZCb1l2aENTZUFvU2VjM3oyM0h0Vm5YUjF0Q3ByNG5EMG1EVWNFRWE3NHRYQjFqVDd0NDM0Zi96Wi9jMDMvbkVIUVBjUlZSRVdUS3VlOENITGtyU0IxWkJCVmFVaWdLMEFLT1I0K29XaGdEcmQ4TEZKN0V4ZnFBTlpvMi9xY0FuQ3lxdWlGcjJha2hIS1JITHlhaWxSNDJwR2plRmFNSGRvS0J3ZFlsNGRIT0ZEN1RndEorOWNCK0hpdFZtTzk4UjJ0L3FxVk1nUE5Xek85Yng4WGdnUndjTHhPRGJBQ3A5L2tDQTRjaUk1NGlDemYvNFllSnJxQXQ3STRsN1UxeFl5RDZ2K1gzZ0xndEttcVRRTGtTbzJKWkVKOFM2Nnprd1o1bGlubjFqOHJrTTROWWxRaDdZbFZpbmkrNXEzNnAyS2Z2U2FRZmJocUtyWXlKNWR5MmNYSWRma3VFbUJVUHZDZU12S1hXM1lzQkxZZnVZOUlIYU9PdXlnQWpYTFFabHhuMC9IRjNDR2NpZC84VHpadTJ6dzVGb3lKK3JnWGMxNFoxUTV3UjZwNkZqS1ZJc2hkcDgxU0RMQ1pLR0Z2WGJ6UXkxeitFdWZuSHlrUi9oOStyOVJXbG1OOGlnT2kxUFpScVozYmF0VUJjNGVMS2k2TDBFMWtrQWRPOUFaQ0J1M2s5S056V3Q3cTZrM2w4eGdtdFdsSGRRdWh1TzRBV1M4SW1Jc2pxbStEa0hrckZ1Z1RCZWEwemVienZmWExYSzBjdW9OcS85V1luei83UDV2aWZFOUw5eTN4QWo0Uk9RL0RpbURtQWlURVY0RElsNjN2K1JJbURINVpkT1JNZVNacm5lZTE5TS9uSURBTnI0RGFRTDlxMXVNREF0TDRxbCtkaGplUDhSckJuSTJYQ0N6MWlRTHB0cE1rQ0RFZm5OZUxlc0l5c0p0Tzl4MmNZeFJPOUhNY28zcXRjY3E0MzRhY1lQZ1ltSURaQlFHTE1GZFdTaHR2K0NFQVRaN0hlbllHcEJkNTE5QWFSUjhLd2pEWVF1RkFmYm1nbEdHNzVPMHEwNDhxTzl5cVhZR0d1c3d5WFJYeDBSSXU2QkdXZmpiQXFGOGNNUVdrQVRxNDlldWRvWkJzVFBjUGh2dU5KUFVHVis3dFdIcHB6YitIZTdFOTVuZ09TUURvMndyOTc1MEtJWG9RZGRsRlVSaWJ3ZmszV0JwcXFxV29Va3dNQk5ZelVHbGlOSWN6d0JyQU11Z016bE50QUxTNnBEMUt1WWExTkpLVUhKNWJOWk40RDVLTnV5dFhzUWJNcE9nMHgrWW1taWVhYjd2dUNUMnBUSXo0R01KbUczRTR0WDJQTXQ1WHU4ekNTaU5oc3IwT2dUME5udkZFVWdBNXNoVXBCM3Ewb3dhNTZ2aXF2VmxGNTNDUEZzTlNpVE0rbkRIVUNFclZKUm5Kd3F6Q3VyKzFWMmNIZXRvZy8xNkNab2ttdHFyMGl6L3FJenovYlA3VFgzbmQ5V2RIMTk3cFIzTUpkYXU3cFhSYVlBSnk3K0JYaWtWTW1mc2pBaTFRZndVc21ab245bE9RSEdvS0ZpMHAzTFFZSFY0U2UzUzFCYXJuWGZzdEF2cXdrZi9xbHFwWGkva0lkWmF4dVlNc1NiWEJ4NW0wZUdLaVVBQ0pra1VRRnoxUTNCT0xaT3EvamdTcFduL0hOcVdKQXZpQUxSVWxaa1lhbVFGL2RXb1JGamhQR1RSMUxhaFJsa05IVFdGWmpqekhBY1RsWTVHclZqcFJwQ0NtK1I0bTdlOTB3N1ZKeHpHOTlFa1pROXNGWS9DcE5TbVBXbFpCTGRoa0tyeG9QMzk4QWRpcW5vV0s3eVpZUEhhbndzSlZPSEhkQmYxSXZZZ1p3dW5RYTJEL0sxSFVKdlUyNXZHYXlsL2JieERYYmg3YVljUXlGaVlrS0YyT2dGV3JYSmpUQ05jcTYzUnF0YW5UdlFXWnd3OG9xRG02K0RSOWdTdTRTSjhIbVRob2RZTlFXWW9QZGpHQ1pZTENJSkFvYWt5VFNaS20zcW5iVTBVZG1aQTZ0QU42ajVnK1JFUUdSTkhITVUrSUNwbVQ3M3RpR3F6dHFPMk45b3BVWEtQVUlhZWRYNHRxV1c5ZFo5ZjR4M3FLZXJmQ1p5UTcwRmdDQzNSbUZ4Q3g0VlcvNXlwMWxGd1NVaHNJL2JXU1NZam50WHBpK3lkYitXbTltNlV6RldWVlJ3TE1oblFqeGsvZ0hKWEd5eXBPdS9DSEVKSWt1L2RhWThMVFlHczFvYks3QzNxekp0d2oxemd2ZTBsSzU0bmdRVTZtWWNXNnRsWG5Td2RQSWZPa0xGc0h1NC9Gek9vR3JKT3dPbUlVMUVMNjZoSzQ2UGpCZHRRUUhVUDFNM1N4dUxybitTQm5vRUlrbFRBaXNzcUhrMDFQWU1XMHVPTUNRT3BwblVnbm9qQllDTm1vVDNlcGZYc0M3QmNHNVZtekI3NENBQ0dGcHdLcGR5Zmh3cmEybEhKQzhHRTZsVmp2NDVZUnBEMW5SbHAwa293M0lycVFkd3FNUFNrWXpYdm9JNUxCRHJXZzJBR2pEVFFGZFdzaVl3anUzbHN4V3NpS0ZGK2hiUWhqeit0bkJlVjNsRVEyN1RwaFJWZHFhdEJ3VlRvZ2oySzlpQjErby9rMDZteXJoYWNQeHc2ZUovZHJ5L005THVkMi9FM3I3T2VxSnVHbDNPZWh3R3NWSVpZdGhJY3FiTmhwWXlrVXdGRVhLNXFHQXlxZE1FM3BpTmpxRkI3dS9OcU1EYlpCdnhhOE5ORDE3dkwvY2s2TWpqMU9FaUJialZvUytzT25ZOVVwSVdHNkQxRmlLQitWQWxFd3BwL2RLZDhKV1lqL09FSkxrbFRuZW5EMGxpb1IzWkp2VzFCRnErVC93RktVNnBsakJqeUJCdEU3c3Z2dWxXSWEvUnBtOEFOWVVGV3ZnWGRFcGtaOEVDOElna200cFVNVzhHdnJqT01ZYXNyQ0FEUTBTQUFEMzJFYmh6S3BsNVFRS0FuajAwRUdHTXg5VnV5Nk9yMXdIbGxIV3U5d042Vkt1OWxJS1hxYStVTndKUmpQZFNUcno2bnJhMFMxVUVLUU9WNVo1L29SQkRRZ3A3Z3lOb2lPV1dscG9TMnBXaGJKWXNPUWp1OGJxaGRsbk9oWDh0V1I3anN2Rnc3czZ6ejZJUzJDRncxQWVndnFXYVRYNmRSd0JLaTBPZnJpWWhadmZsSmhqQXh2MXEyT3NMTVY4M21yOU9DcEFRbWN0b2RKVVRlYlIxbkpLbTZqblF3ejZCV3l1YlVkcmluQXFkbWdIcngrSk1sQlpzZ1YvV0E0THEzZlB4bEZDU2Nlb0o3ZjNRRVovS2Rxak9YSXpwQ1U2azZuZ3ByYWpTS2tuMldkZm9MMnBpdnNxNU5nMlpiQWd6M1BKcGtxK3FGRWFRbDZkVVBTVTR2OVVsai9PUFY0UXhGL2xUZm9qYjgwSHVHeG9NVFpvU3BKMitwWUhsOGpXRkxUV2JjOGJVRU9mSmJKMTZBRVNPSmwxcEljQVozRTBYYTF6cWZRajVDT3dlVUtnWXBNOWNYczR4ZXJWRERWZUVlZ25MSTZsZHEwakdmNUYrUE9nQ0t3UENBVFh6dDE4aEtLT2tkU24wSFVPTWVDUmZlV05Ld0paRkx4ZmZQdEhHSVVlNzBDME9ISGdLRnJPT0hPb1h4cmltMkFMTlJPR3IzVVJkTWZtMzdPZ0JVTTRiUGZXN1pzRHM2akR0MUlyUEtQbzFJTW5ENXc0cnNxZTBySXAyNWI2bzJ2T08vK00ycmZqRUdpdlNBKzYrT2hiR3NDeXR3R2ZSZ0RVR0pGZ09HTFJsOEFIZXkzTWp0dzgrbEYxczZqd2xwNDRhSWFsWFEzSzA2SnNQVWtpSjg1SnVIUkFPUGp4Nm9pek1CSHlHMk9vUzlQQXlXc0d2VnA4NG5JYWdRTmI0NmozTWsrSEJyeUUxQ2ZhcHd5OUJFdDR4WVBRVjRrSUpPUHlwUUZCMFAxVzdUaHZrQlpsUjhFbGNXTG9SOWtsYkRxZjBCbG45Q1kzN2lnN3RDWGJDWXlKYXRWbGxoRTZGQko0ZVpFeDN6RzJBR3l6KzBWMkllb0YwQmtVMHVCektBbjJMd09wYW1rM2g0U3ZEbzZLd25ZWTJoVklPS2dFMEt0S21BWFZ0VzZUY0RzV1NjamtzT25ocEpvVUtqam9TK3ZnZlVTSEpFQWg1Nlh2Vm5EMEMzNlZpZ05JeUtGc0Fxcm5vZG5SYnM2dFhJMWxxR0owYVh6SHRPU3NlWFJ5bHV2aE1ES2VvYWdWVTY3OGpNdWtYblVMWVJFc2dpdUpqNXlmbWRrOUZPVEkwNHlxc3lzN3F4dFJQc0pKU2hBclZTVjBtRmhlUFdyNjI1NnQ3UHFobnZaRStiQS93MXFidEtuU2lpSnBBY3lPa2dJdUh0VkRjSlJ5YzVNc0dUbVlaeUZFOXhERFd1RVFvb3RLUTZkYml2WmZNcGJWVEc4VHJZcitvMWRKeW1XK0NsS3ZQQUhnWTBKamtxNExFdWRVMlRyb3I1T0tzaVZoeUtlckRQZm5aV1I0eUJST0tDdDhIUzFGUSs5UXNJTWhuOGRqOVZxaVBSWjFDSHRhb1hxQVVKVDlQdnFDRFJnSE5XaTRUU3IySkk2cUVFYWhrZFdWUlAyYS95QSs5Y0RXUU83ZkhMdnBPNEJFL1NNYnNkbWVXVnRCc2NNSlVIWWEwVEkvNkMyVk9IWC9Ec3dPVzRiNGNCTzRvOE5rblFxOU5HTnBOYTNsL2ZLTm1nTTJNQTF3RjhWVkt4TEFSdEZhYkZlQ1BCQ2srUEwwbUszdTVmK1g2dDE0TkNXSHkwQjZScXFQcnhkVjkxM00ybnhuWHZ0OEh5NiszVjRNWUFqclF5bksvRGpKTHdFUnRRNitmNHE5cml3TkpmeTRkcFpLVVpNWVgxdFQ3R1VjeThaVldoYTBvSkJwQWtMY0dpdWc2NURHOEkrdDBOREV2S2YrbjNWRFMxMzZvU0VnUk5iWVhQK1Q0Y0hjZ1QxZEdpWHNKUWxCZkkzWGNtMGRUT05QeCtIY1U2VG4zZWhvcllweDZOaVNUZjJ1a0RNSnZPVm1vZlVJQ3ZYN1lCWlZicFZjRU9VZTYxSjQ0Q3VNeXhtMTd0T1BoczlCYjZCQXA4OUlPS2FXckMwV1pQbDNnRjE4QTRSTmRhOEJLbzYwZFBIUytONkFFbHN0TzJWd096V2FEWHVRdHZYMi9JMFVTR0tOUGlpam9CSDFHRW9LRWVHUThFOFJIeGFxV2FSQmpMa1Z3UlBML3FCYTVOT3h3NGYvMCtEWlYyZWxFbEFSYUVFb1BNVTlwUGhPRmR1Vi9mWDdVQTJUMEJXM2o5SmloU0xFMUNGOXV1T3ErbDN4UVE5QnQrNXRhdnBqQVUzMmc2RTN1Zkw3MEhVYmtNUzBWMHhLNytvL2RUcjU2b0k5ZjhHeFJsVGhFK1RTNVNwZThoUVlwcTRPblJ2VjNTUUQwL3JFWlFYd3h4YWc3dW5Jb1FKQ3BmcUtYNjg3c2ZqbjZ6Q1c5YThBc29kWmR5R3JRaDlYRWRXK2NLY2xUYnNrNEdBYTZPV2ZTTVl1aFg2YWh6WDRwMWZCMGdJTWFBQ0l1U25UbXJaQnJIZk16NzJWZmxXZFJ2dEl3bmRYM2ppZkRxYW1OcUtNQUlUT3R3SWlLVm1OK1cvWTZDZkdndmFnOTZwUFNNNEg2U0Z5eUR3TlUwNS9DQ0FkRFdXWkNzTGR3dWNhSGZ6aFdDVHFxb2s2UWhNVmo4aGJoQytwYWpYeUtoQmhCMVdPZ2IyTGdWbkZ3cTRrNlRxczR0cG5hdFhaWitwWWM2NS9WZHNhNU9DNkpsbU9oY2xVZ3JhYWNDa0dvK2VUMmpBeEszMnM5WDBMbU5kRmpOZ1JObnBwcnlROGR3MVN5Y1ZDTXNQREpKa0xYRnFaTnhPakx6MTYvTWNnaUU5ZmVWSVJ3ajV0VDlOOUN1dGhqZzZ0MTRBQUFCZzJsRFExQkpRME1nY0hKdlptbHNaUUFBZUp4OWtUMUl3MEFjeFY5VHBhSVZCVHVJT0dTb1RoWkVSUnkxQ2tXb0VHcUZWaDFNTHYyQ0pnMUppb3VqNEZwdzhHT3g2dURpckt1RHF5QUlmb0E0T1RvcHVraUovMHNLTFdJOE9PN0h1M3VQdTNlQVVDOHp6ZW9ZQnpUZE5sT0p1SmpKcm9xaFY0UWdvQjg5Q01qTU11WWtLUW5mOFhXUEFGL3ZZanpMLzl5Zm8xZk5XUXdJaU1TenpEQnQ0ZzNpNlUzYjRMeFBIR0ZGV1NVK0p4NHo2WUxFajF4WFBIN2pYSEJaNEprUk01MmFKNDRRaTRVMlZ0cVlGVTJOZUlvNHFtbzY1UXNaajFYT1c1eTFjcFUxNzhsZkdNN3BLOHRjcHptTUJCYXhCQWtpRkZSUlFoazJZclRxcEZoSTBYN2N4ei9rK2lWeUtlUXFnWkZqQVJWb2tGMC8rQi84N3RiS1QwNTRTZUU0MFBuaU9COGpRR2dYYU5RYzUvdlljUm9uUVBBWnVOSmIva29kbVBra3ZkYlNva2RBM3pad2NkM1NsRDNnY2djWWZESmtVM2FsSUUwaG53ZmV6K2lic3NEQUxkQzk1dlhXM01mcEE1Q21ycEkzd01FaE1GcWc3SFdmZDNlMTkvYnZtV1ovUDhhN2NtTHcwWHh2QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDVBY0NFQjhmQlZ4SHRBQUFJQUJKUkVGVWVOcnNuWGw4Vk9XOS85L1BtUzA3a0lXd2hNVUVBUkVFcEFXMEltb1JwWXExaUZXdy9rVEZ1clNpWGNDNjBOcUNYYkQxdXR3cVdtcXhyZEQySXJkWHNiVEk5WXBMQ3lpaVV0a0RFUklnZXpLVFdjK2M4L3orbUhNbUo1TUppeUlrOEx4ZnIvTUtaQ1l6a3pOblB2bnVYL0g5cjEzQW1xMVZSSDE5R1RieFp1WmQrQUczejF0RjBSMnJXRHR2R0ZETGlobmptTGRoSElzK1dNNzBQS0Q4R2E2NDlGSEtMMTNNOW1jbjA0cWZGYlBHTXUvTjBTellzSndiaXV6dlJ5bGZzWUNIRnIvQzVqMEJmSVZuTWY3bWU3aW1iZ0YzL0M3S3pHVWJXVGllTGtrNEhPYkFnUVBVMU5SUVYxZEhZMk1qVFUxTkJBSUJXbHBhQ0FhRGhNTmh3dUV3MFdpVWFEUktMQllqRm91aDZ6cTZyaE9QeDVPSFlSakpyNFpoWUpxbTg5L0NORTJjaDVUUy9pcWtsTmdISUZLL0FrZ3BoZlhTazE5VHZpZDI3ZHBWWEZCUTBOdm44eFc3WEs1aVRkT0tORTByRUVMa0F6MkFQQ0ZFSHBBTlpBR1pnTmM2WElCbVBaNEpHRURNT3NKQUNBaEtLZjJBWDByWkpLVnNrRkxXRzRaUnArdDZkU1FTcVRsNDhPREJrU05IMWxpUEl4MUh1LzhMSVZKdnM3OEhJSVVRN2I0NkRxbHBHa0lJTkUxTFBhVEw1Y0xsY3FGcEd2YS8zVzUzOHF0OWVEd2UzRzQzaG1IUXZYdDNmRDRmUHArUHpNeE1Nak16eWM3T0ppY25oOXpjWExwMzcwNlBIajBvTEN5a1o4K2U5T25UaDh6TXpHTzQ2dnlzbXp1Sm16ZFBaZFhhK1F4RGtZcDkwYmVlc2hXekdEdnZUVVl2Mk1EeVZtWDZISWl5YnM1WWJsNVZ4QjJyMWpLdmk3MDdzVmlNQXdjT2NPalFJZXJxNm1ob2FLQ3BxUW0vMzU4VXRGQW9SQ1FTSVJLSkhGSFFuR0xtUEV6VEZMYkFwWWhaR3lHenhja3BVcW1DNWZ4L1RVM040SnljbkVGdXQ3dE0wN1JTSWNSQUljUUFZQUNRMFVsT2N3VFlKNlg4eERUTkNzTXc5c1ppc1QyTmpZM2xBd1lNMkowaWNQSXdndGRPQUczaEUwSzBFVHBOMDJTcXlGbkNsaFE1NStFVU41ZkxoV0VZNU9YbDRmVjY4WHE5K0h3K01qSXl5TWpJSUNzckt5bHdlWGw1ZE8vZW5mejhmQW9MQytuVnF4ZDkrdlRCNi9VZVZ0QzJybmlSbDk1Y3hZcFZsUXhiOENyTGJ5aFJLcFlHZHkzUWFsaHRaZkh2MWhQakxDNGNYM1RjQkd6ck0zTlpWaktQK1ZOTDhObmZMVi9CNG5VQjZEdVZTN3VZcU8zZnY1OURodzVSVzF0TGZYMDlqWTJOK1AxK0FvRkFVdERDNGZCaEJVM1g5YVIxbGlwcTZjVE10c3BzWWJQL0tLVVJzamIvMzdWclY4OCtmZnFNOEhnOEkxd3UxOWxDaUxPQnN5RDVWblJtTW9EQlFvakJ0cEI0dlY1eWNuSXdUVE1LYkROTmMyczhIdDhhRG9jLzNybHo1OGZqeG8ycnN5eEZLUk1uU3RyL2Q0cWNsRklLSWV6N0pBWE9NSXlrOVdaYmM5WWhPaEk1cDdDWnBvbW1hWGc4SGp3ZUQxNnZsM0E0ak0vbkl4UUtFUXdHYVdscElSQUk0UGY3YVdwcW9yR3hrWWFHQm1wcmErblZxeGY5K3ZYcitMTzA2Z2wrdDc2SWNUYy95Wk5LMURxMjJJWmNjRDJUSnc2amlGbzJyMXZEQjFWUWV2TlNWczRmVDk1eGVZcEtWc3lheHJ3My9mUWROWkdKbzB2QXY1WDFyMnhnVDZ3dlZ5NWV5Wk9UaTdyRXlhcXVybTduZGpZM055ZmRUcWVnUlNLUmRvSjJCQ3ROMkc1bmlxQ0pEcXl5ZGhiWnRkZGU2MXF5Wk1rWE16SXl2dUJ5dWNZSUljNEZCcDltMS9RdTB6VGYxM1Y5czkvdmYvL3JYLy82Kyt2V3JUTWQ0cFlVT1NHRW1jNmlTMmZOYVpvbTAxaHh1Rnl1TmlJbnBTUXJLeXZwbmpvRnp1djFKcTIzek14TXNyS3lrdTVwdDI3ZDJybW54Y1hGU3FFK3JiQjkvNmF2c0c3OU51cklwYkJzTkZOdm5zYzkwNGNkSjFHenFXWDlpMCt3ZU5rNk5wZFhFYUNRMHZHVHVmbWVlN2hoZE9jWHRlYm1acXFxcXBKV1dqcTNNMTBjVGRkMVlyRlkwa0pMRTBjVHpqaGFHc3RNcEltWDJWYVorTjczdnVkNitPR0hML0Q1Zk9kcG1uYStFT0k4SUVkZDFtMW9rVkt1ajhmajZ3T0J3TWE3N3Jwci9WLys4cGQ0R3FFem5hNnJRK1NjY1RtWmFzbWx4TitrbEpLTWpJeDJzVGV2MTVzVXVJN2liMDczdEtpb2lGNjlldEczYjErNmRldW0zc1hQR21OVHRLTHJPdnYzNzI5anBUVTFOU1d0dEtPSm82VkxEdGlDbG1LZEpkMU1oMFdHVThpa2xGcERROE93bkp5Y2kxd3UxNFZDaUltQXV1cVA4ZStVYVpwdjZicitkblYxOWRzREJ3N2Nib2xiTzZ2T2FkSFoxcHZ6MzNhQ3dTbHlVa3A4UHA5TWwxeEl0ZDdTeGQ5czY2MTc5KzV0ckxkKy9mcmg4WGpVdTZlRTdiTng2TkFoS2lzcjJ5VUhuRzZuTFdxMmxXWmJhRWNyYUlaaEpOMU0welE3RkxOUUtIU3gxK3VkcEduYUpHQ0VlbmVPSy8rT3grT3YrLzMrTndvTEM5OG1rY1UxVThXdUk1R3prdzIydXdyZzlYcVRGbHhIQW1kYmNMYjFab3ViMHoxTlRTNlVsSlRRcTFjdjlZNHBZVHQyZ3NFZysvYnQ0OENCQTFSWFY2ZE5EaHlwZkNQRjdSUXBpUUduZFNaU0xMU2ttSVhENFNsZXIzZUtFR0lLMEZlOU15ZUVLc013L2hFSUJOYm01K2V2cGJWY0phM0lPV055dHFzSzRIYTdwYk04eEJhNUkxbHZxZTVwYm00dWVYbDU5T2pSZzRLQ0FvcUxpK25UcHcvOSsvY25PenRidlZ0SzJJNk8vZnYzSjYwMFp5d3RYWElnTlphV3hrbzdrcUNKMUpoWk1CaTh4T2Z6WFNXRXVGS0pXYWNRdWRWTlRVMnJpNHFLYkV1dWpjaWxXbkgydngzdWFUdUJjN3ZkSFFxYzAzcExUUzZreHQ1S1Nrb09rejFWS0dFREFvRUFuM3p5Q1ZWVlZXMnN0T2JtNWpZMWFVZFpaQ3RzMTlOMk53OWpuV21OalkzRGMzSnl2cVpwMnRXZ2FpMDdLZHRpc2RnckJ3NGMrRnRwYWVsV2g4QVpEcEZ6eHViYVdIRjI5dFFXT1V2WVpEcjNOTlY2YzlhKzJabFQyM3JyMjdjdkF3WU1JRGMzVjcxRFN0amFXMmwyZ2lCZHhyT2pFZzViMU5JSm1yTkx3Q2xvdHBpdFdyVXFZOUtrU2RlNjNlN3BRb2pMMUdYWWRUQk5jMDBvRkhyNXFhZWVldVhCQng4TUEvR09SQzZkd0RscjROSUpuQzF1SFpXR3BHWk83Y1NDc3Q2VXNBRVFDb1hZdTNkdnV3U0JiYVcxdExRa1kybEg2Qnc0bktBSnA5dloxTlEwSWpzNyt6cE4wNjREMUpYWXhmOG02cnIrMHY3OSsvODZhTkNnYlE1WDFVaDFWUjBDSjQ4a2NCMWxUdTNZVzA1T1R0SjZTMDBzbkhIR0dXUmxaYWwzNW5RVnRvTUhEeVpkejVxYW1qWUpnaVBWcFRsRUxhMmdXUVcxYmR6TlVDZzB4ZXYxemhCQ1hLc3V1VlBTaWx2WjFOVDBVbUZoNGV0U3lyZ1F3aWx3aHRPQ3M0WE9HWWRMRmJpT1ltL3A2dDVzMTdSbno1NUoxN1IzNzk2bi9YdmlQcDErV2NNd0tDOHZaOSsrZlJ3OGVERFpFdFhjM0l6Zjd5Y1lEQ1pGTFJxTnB1MGVzQVhORVVkTEsyZzMzbmlqYThtU0pUZTYzZTRiZ1F2VXgvL1VSZE8wYWZuNStkTmlzZGc3TzNmdS9QTXR0OXp5MHNhTkcrT1dtMnBJS2R0bFZnM0RrS1pwU2szVDdGaXNkSllFeGVOeDZTd1hzajBFWnlqRS9xTnIveEVPaFVMSmRxMnlzakpjTHBjU3RsT2RwcVltOXV6WjB5YnI2V3lKT2xLeGJScTNVemk2QkpLQ3RtblRwdHdSSTBiTWNybGNONkZxems0djkwZUlMMlZuWjMvcFgvLzYxemNqa2NqeVpjdVcvZVcyMjI3elc5WmJ2Q09CazFKS1I2RzJVK0JrYWd1ZXM5ZjRTQUpYV2xwSzkrN2RsU3Q2cWxKWldVbEZSUVdWbFpWcGE5UFNGZHNleGtwTEcwUGJ0bTFiajdLeXNsdGNMdGN0d0NEMU1ULzlNQXlEeXNwS0Jnd1lZSCtyUEJLSi9PR1ZWMTc1ODNYWFhkZG9XM0QyWWNYZ3pIUXhPR2ZkbTlNOVRTMExzWXQ2MDlXOGxaU1VNSERnUUVwS1NwU3duVXBJS2RtNWN5ZWZmUEpKc3VEMmNGblAxQTZDRHR4T084dXBTU25GaHg5K21IZldXV2ZOZHJsY3M0RXk5ZkZXd3VZUU5wczk0WEQ0OTMvNjA1K1czM3JycmMxSEVEalQwWFNmMnJrZzAzVXNkSlExdFF0NkJ3d1l3T0RCZzdHNkpaU3dkV1VDZ1FDN2QrOU94dE5xYW1xU1dVOW53VzBIcnFkSWJZVktzZEswK2ZQbnUrYlBuLzlObDh2MVRWVDkyUWw4WXc5QjlRNW9xSUJ3VStJQXlPeWVPUElIUXZFUXlPM1ZtWVROL2tPN0xSUUt2ZkQxcjM5OTJlclZxMk9Xd05raVp6b0V6a3kxM3B3QzUvRjRaRWY5cHM1cElmbjUrZlRzMlpQZXZYdlR2MzkvQmcwYWROclV2SjJTd2xaZFhVMTVlVG43OSsvbjRNR0Q3VW81VXVOcHpvQnNPcmZUVGd6WVdjNUlKSEs5eCtPNUV4aW5sT1lFMFZBQnU5Y2x2aDROK1FOaDBNVEUxMDRpYkE2QjIrajMrNWQyNzk3OUZTR0VuaUp3N1Z4VVJ3ZURUTFhlVW12ZVVndDY3WktRM3IxNzA2OWZQOHJLeWs2TGNVaW5YUEtnb3FLaVRaTEFucHZXVVR6TmFhWFpnVm1uMitsSURHaWhVT2dTcjlkN2w5WHlwRGhSYlBrclZIMTQ3RUs0c1FMNmpvSVJYKzFjMW9RUVk3dDE2emJXTUl3cmEycHFsdmJ1M2Z1ZlRvRkxUVExZQ1FacldJSk1tZDluLy8rb2tneVJTSVJ3T016QWdRT1ZzSFdWZU5xT0hUdllzMmRQc2pYS0hqUFVVVHl0QTllem5kdlowTkF3T0M4djcxdENpRHVVeXB4QTRoSFk4RUxDL2Z5MFZIMlFjRmZQdlE3Y0daM3ExOU0wN1N1OWV2WDZTaXdXVy9MeHh4Ly9mdlRvMGVVT2diUExSQXpBTkUzVHRQZGIyTmxUdTJYUEtXNnBJbWNud0ZMRkxSS0pNR1RJa0ZNMjduWktDRnM0SEdiSGpoMVVWRlMwNmZlMDY5TTZpcWVsV21tV3FDWGR6bG16WnJtZWUrNjV1MTB1MXh4QXpXRSswV3hZQ29IcTQrUEd2djluR0h0VHAvdzFQUjdQN0ZHalJrMEpCb1BQVHBndzRmZWJOMitPQWJwbHZXbTJpeXFsTk8xeDVsWUNTenFISzZRS1hMcFNFV2ZZeFJhM1kxc2tvNFR0aE5EWTJNak9uVHVwcUtoSURvUjBUdVZJVjU5bS9SVnppcHJUU3RPa2xDSVVDazMyK1h6M0FsOVdDbk9TM00vaklXcE9jZHZ5UDUzT0xYWFFOeXNyNnlmdnZ2dnV4VFUxTlV0NjkrNzlsaEFpNW5CUEJhMDlxVExGZ25NS25FeTNGQ2lkZTJwWEFRd2VQSmdlUFhxY1lzTG1YOEdNVWZQWWtIc052L3Z3VVNaMm9SZGZYVjNkcHB6RGJtSlBWM1RyS09VUXRubWV4a3JUS2lzcmV4VVhGOStyYWRwM2xMcWNKQm9xamoybWRyUnVhZCtSSnpTaDhDbmMwNHQ3OWVwMWNUUWEvZlhycjcvK3V5bFRwaHl5M0ZQTktYQ0pYVFRDN01oNmM3aXFISTJiT25qdzRGTXFxZEJsTGJiOSsvZXphOWN1UHZua2syUTVoN09USUYyU0lOVktNd3pEYWFWcGtVaGt1c2ZqK1E0d1JxbkxTV1RYRzYzLzFnL3gwSS8vd2JJR0dEZmo2eXlma0FrWVZINjRpWWRlM2N2NnlnaGtaak42NUFqbVRSL0NhS3NIUExwL053dFdiT0dWdlg0Q1pGQTZ1RDkzVEIvTDlOM3JZT3pBVG44S3ZGN3Z0eTY3N0xMejYrdnJueTBvS0ZndGhIQlo3cW51aUwwSlovd3RqY0IxR0h0THRlQnNnZXZ5VTBMODVheDdaUm51U2FQbXNRY2c4QkkzbDY1ajVrc2JXVmkybFJjWFBNVGlOVnVwaXZyb08yd2lOODlmeUMyajh6ckZheTh2TDJmMzd0MUpVYlBMT1ZLYjJEc1NOV2ZHVTBxcFZWZFg5eXNvS1BpdUVPSXVwU29ubWNBaGFQd2srZCt0cjI5a1JVUEt0ZnZ4djVqeGJEbFZlQ2dkV0l5dm9aWU42OWN6b3g3V2ZtY0lKYzE3bWZQNE83d1doc0xpWW9iUnpJYXRPNW4zZUl5OEg3cVlmTmFoazFMbmRxd0lJVWJuNStjdmpzVml2M25ublhlZXYvamlpeXVGRUpyRFBZMWp0ZkxaazBUc3pLbFQzSnhiejV6TGcrellzbk80UXl3V282eXNLOWFabDdOaXpod1dyZG1HMzVlTGUrYk1DL25kc2plcDhwWnk2UTNYY0dtUm4zVVB6V0wrS2o5OUw1ek9IU1hsdkxKc0ZRdG4rY2xidTVUcEozbXAxUGJ0MjVPRnQ4NmV6OE5rUG9XejE5TlJsNlpKS1VVa0Vwbm04WGkrQjN4QnFVcG5pQzlzYi8xMy9RNFd2TnBJTE9VdVc3ZldFczNMNXNJckxtZnBoQndJN1diV0Q5N2h6YjM3V0I4YXd1U0tmV3oxWk5CMzJGaFczbm9HUmJUdy9LS1hXRmhSeGFxOU1MbStva3NJbTQzSDQ3bHQ0c1NKWTJwcmF4Y1hGUld0c1dKdm1pVnF0dlZHd25DVHFkYWJTSW5Ea2VxaU9qZW4yUUkzZE9qUUxuYmhSS0hvR3VZdm44cmt2Qlc0YjVsM0phOHRlNU1xMzJobXpyK1RpWlR6VEhrZFVNclVlZk9aTnl6S3BXY3RadFdlWFBMOE9MWXJuMWlrbEh6ODhjZnMzcjI3emNKaWUydVVQWmtqSlVtUUttckplTnIyN2R1N2w1V1ZmVi9UdEhsS1RUb1I5UlhXUDJLcytlc0hiS0FINHdhMnNLRkNUOTVsL0xWZlkyTzZBVkFlTDNrZXlCczVrYmRHcG50d0Yza2VTendIanU5U3AwVUljVzVoWWVGemtVamtpVC8rOFkrL25UMTdkcU5sdmVtMGpzZ3liRUZ6eHQ3c1FhZE9jVXRkKzVnUXVTaE5GZS95NXlmMlVqanJQM2xzNXRsZHFCeGtHTlBuRDdPTnQzUXh0akltWGptS0o3Wjl3T0lyeDdKbTFIakdYM29OTSsrWnpMQ1Q1SW5xdXM3SEgzK2M3Q1pJTGJ4TkxlZXcwdG1wV2M5a2dpQVlERjdvOC9ubUNpRW1LeVhwWkZndFV0RzltMWl3S1VMZkN5WnljM3hkRzJHenFmMXdFd3ZlYTZaMmJ4VWI0aGxjZU8wb0pqczMxQjNhelVPdlZsRlpmNGoxRlJwOXg0emxqc0ZBUE5wbFQ0L1A1N3ZuNXB0dlBudlNwRW5QRGh3NDhGMHI5aGF6WEZNaGhEQVNobHByM00zcG1xWk1Fa2tJV3p4QzNkNHR2TDUvUHdmOEp1Nk1Ya3lkdklNUFA0eHo5dGxuZDhtMWYybVRCOFB1WE03YTBTdFl0dXcxMXExZng3SkhYMlBaNzY1azhkb25tWHlDeFMwU2lhUVZOYnZ3TnQwK0FvZWxsdXA2YXJGWTdIYVh5M1VmMEVlcFNDY2swZ3cwOC96eTNWUmw5dU9KcTN1UnR5TDlYZjE3OTdGcWt6L3huN3h1REN0T3FjZnkxN0ptVXdWMUFPNXNocDNSTGJFSS9MTVUvSFlDTkUyYk5HREFnR0Yrdi84LzgvTHkvZ3hvbG51YXROeHdKQlpzajhleTNvVGxzbUthVVJxcnlxbHRDcU9qNGMzcnlhQnpoelAyM0hNNFM2dGc1ODZFcTNyMjJXZVRrWkhSdGM0UmdNL3lVYU5Sd0wrZVorYk1aZEZyZWN4OGNpbXZibHpMUTZPQXVuV3MybnhpWDF3d0dPU2pqejQ2YkoxYVNseE54R0l4WWZkOFdtYTJacHFtVmxWVjFTY2Vqei9tY3JtZVVLTFd1YW45MTBZV1Y4SzRxOGN5OVRDVHJzdXUvaHA3bnY0R0crNDlpN05DMVN4KzlsK3NDVG51TVBnOE5qNTlFOXNXWE13MUJVRmVXL0U2aS9ZYXA4cHA2cE9ibS92VGFEUjYvNnBWcTBxa2xCbldSOWtMZUtTVUxpbWxabC8vVmd4TjJONU1KQklSNFdBejFRMGhvcVlnbytnTVJvNFl6QmtGR2VqTk5SdzRjSUNLaWdwMjd0ekpSeDk5UkRBWTdHSVdtNitJdkZ3Z3NJWUYwMlpSdm5BaGViVnJXTFZxSFZzclAyQnlTUzNyeWdGdkdhTk9ZTElrRUFpMHNkU2NMVksyb0RuSGQ5dXVwMVdmMWlickdRd0dKL2g4dnZ1RUVKY3EyZWprWkJpcytMOERCSUFOeTEraWRIbnJUUnVXLzRVSis3L0NxNWQ1cWRWZDVCWGtVT1J4VVRSNEdOZVViR05oUlMwYnFtRmlmZ3VWWVFOZlhqZEtzc0JYMEorWnc3SjVxVHJJNXAwdGNNN2dVK1owZWIzZTJWT21UQ25kdTNmdk0yZWNjY1o3VnR6TlRpd0lJWVJobXFacEwzaHVHM2R6aVc3ZE1tVkxNRUs0ZWpjYmF6OGh0N0F2WldjT1lxakRYYldQczg4K3U4dE1CM0hqbThnOTg2OWs2NEkxN0NrdnB5cGF3cDFQTHNYLzBBSit0KzUzTEk1NUtUenJVdTZZdDVCYlRsQlRVWE56YzFMVTdHYjIrdnI2ZHU3bllUS2Z5WGhhTkJyOWh0dnR2aDgxL0xGcmtObVRzalA3Y0tFajVGRmJlWWh0ZnBQYzRtTEdueUZZcy94bDVtMkZjVE8reHZJSk9SQnE0SU1HQUMrRm1WQzUvblV1L1o5R2NzZGN6RnUzOWllUE1PWFZZVUFqTDgvYjZYcEdqNE5yZXNtQUFRTUdORFEwUEpXZm4vK0s1WnFLRk5jVVo5ek5Gam1QSjFOMEwrd21QZWdFQTM2YWF6L2hnOW9xYXVPWGNxSFYyZURzVVQzNzdMUHAxcTFiMTRpeGxVMS9rclhUbmQ4ZXo1M1B2c3FkSitFRk5UVTFmV3BSY3lRSnRGdHV1Y1cxZVBIaUgyaWE5aUNuMlc2SExrM0JjQ1pmZXluT3JNNzYzLytabWVzakRMdGtJbytlbDBtdHB5K0ZXL2V6WWZuTFRIb3ZIMTkxTGR2OGtIdm1FS2IyZ2hMUEVNYXRXYytHVGV1WVZGMUVtZDdNaG1vVDh2b3hjMWdtRkE4OTVVNmJFS0tzUjQ4ZXZ3eUZRbjNHangrLzVLT1BQdEljMXB0dWlWa3k3aGFQeDl0a1RLWFhLM01LZWxQWUcyTEJJTzVvTTQyTnliS1JOc2ZaWjUvZDZVZU9kNm9QZkdOajR4RkZMWjM3bVpva09IVG9VTCtDZ29MN2hSQ3psVkowTVlxSEp1YXVIWWFpTDB4a09adFlzR1l2NjNkVlEyWWU0eTRZd2Z5ckJ5VW1GUlFNNGRsN1hTeGFzWVUxZTZ2WlFBWm5EVHVMTzZhUFlXbzNvR0RncVhyMjNKbVptZlBlZSsrOTR0ZGZmLzAzbDE5K2VhVnR1Vm5XVzl5K1k3cWtRdUtMajh6Y0FqSmxDODNONllYTkZyZk8zRi9hYVFaTk9rWE56bjdhb3VhTXFhV3gxT3pXS00wMFRSRUlCTDZRbVpuNWdKcVoxb1hac0xSTjk4RnhwY2NBR0RmcmMzbm9veDAwZVNJd0RHUDF6cDA3Rnc4Yk5td0xFTFd5cGpxUVhBK29hWm9VUXBqV2RGNXA3VlNRenBIajlrVGU3dDI3VTFCUVFLOWV2WklES3p1enVIVUtpODNwZnFhSzJ1SGNUNnZmTStsK2hzUGh5N3hlNzRPb3liWmRtek12Z28wdmZINlBmUnJnY3JtbURCMDZ0S0N5c3ZMcGtwS1N0NnhFZ20yNUlZVEFtVlN3ZzI2dGxsc3lGc2ZoakovaHc0ZDNTcmYwcEF1Yk0xSGdGTFhHeHNhMEV6cFMzTStrcUVXajBSbHV0L3RCNEV5bERGMmMvSUdKS1J6SGU4SkhKNS9zOFRuRTNjYjI2ZE1udjY2dTdxbkN3c0svU1NtZFNRVWRSMUxCSVdEU2NsM2JxVms2Z1JOQ01IejQ4RTZYVURpcHd1WXM2WERHMUd4Uk81ejc2UlMxV0N4Mmg4dmxlb2lUMXZDbE9PNk11QnI4aDQ3ZlRMWWVBeEtQZVpvaGhCaFVVRkR3VUZOVFUwNzM3dDMveTJHNXRRbEYyZUlXajhmVGlsdEhvbVlmSTBhTTZGU2xJQ2ROMklMQllJZUpnalIxYXNLNTQ5TXBhcnF1ejlVMDdTRWdRNm5CS2NhNFdjZG5pbTZQQVREbSt0UDVUQloxNjladGZrdExTM1pPVHM3dm5XNnBVN1RTaVp1ZFhFZ1Z0RlJoMHpTTkVTTkdrSjJkM1NsK1llMWtQS216VGVvb3NwL0N1VUhLanFrOS9mVFRIbDNYZjZocDJrSWxhcWNvN2d6NDBoMEpGL0t6dUovalpwMXl0V3VmZ296czdPd0hRcUhRN1ZkZWVXVzJvMVBCQTdpdFRnV1hhWnJDTUF6aDZGSWdHbzBLKy9NWURBYngrLzAwTlRWUlgxL1BvVU9IcUt5c3BMeThuSTgvL3BoSUpOSXBmbG5Yd3c4L2ZFS2ZVTmQxL3YzdmY3Y1pQZVMwMUZKaWFzTGV5RzRuQ3FTVTR0MTMzODM1eWxlKzhpTk4wMzZnUHYybkFjVkRFN0d4VUpQVlMzcVVWdG81VjUvUUtSNVNTdngrZjZldThmSjRQT2RObXpZTmw4dTFkZDI2ZGZFT3BuZklOSWtEa2VxU09wcnMyeHhGUlVXNFhLN1RSOWlrbEd6WnNxV05xS1hiSkpVNmRzZ3BhanQyN09neGRPalFIMnFhOWwzMWlUK055T3dPSmFNU0l1ZkxTVGhLbmd5SVdUMk11Y1dRWFpnUXNpR1RvUFNDeE0rY1FMcUNzQUc0M2U2eDU1OS92aWd1THQ3K3Q3LzlUWGRtUmpzU042Y0FPdXZaVWdYTy9scGNYSHhTUng2ZDBCaGJSNzJmVHZlem81SU9LYVVvTHk4djZOKy8vNE5DaUx2VkovMDBKYmRYNGxBTmNwOEpuODkzKzIyMzNhWjV2ZDRsdDk5K2V5MjB4czRjVnBsaEdJYnRhYlZKS0RqamE4NDRtOHZsd3Q1YVAzejQ4Rk5mMk96SnR4Mk5IanBNOFczU1VsT2lwbEFjVjNHNzdhYWJiaUlhalQ0M1o4NmNCcWRsbGs3Y2NHUkxPeEsyVkhFN1daTjRUNGdyV2w1ZW50d21kZkRnd1E3SGVhY3I2YkJqYXBiN09VZGRqb3JPU2xkeFJWUGMwakVqUjQ2VVFvaC92L25tbTRabGpiVnpTMVBFcmwyOHpYa09uTzZweStVaVB6Ly8xTFBZOXUvZmY5UXh0WFIxYWs4Ly9iUm41TWlSRDJxYWRvLzY2Q2dVeDUrTWpJemJIM2pnZ2ZpbVRadWVYYjE2TmVrc045TTBEV2d0QmJIS1JlVGgzRkdYeTRYVnBuWEN0MTk5cnNKV1hWMmRYSkdYdW5qbGNERTFaNTNhN05tekg5UTA3ZnZxOGxNb1BqOHlNek8vdFdMRmlsaDJkdlp2YlVGemlKdkVXdEpzK2FiSm1Kc1FRanJkVU9kaHU2TzJ1SjNJdmFXZm03RFpHOXFkN21kSDQ3eFRZMm9weGJjUHFzdE9vZmo4eWNySytrNGdFSWprNXViK2tiWlpVcGxheEd0L1h5U1FIY1haYkt2TkZyY1QxVFQvdVFoYk9CeHVJMnIyNHBYbTV1YkR1cC9XS085a201VFZVYUJRS0U0UU9UazUzMmxzYkF6MTZORmpwV1cxU1ZKaWJKYTRPUzAySVlTUXRxZzVCYzYyMkd4aE8rZWNjOGpNek94NndpYWxaTWVPSGUxMkZLUmFhdFkyS2VjU1kreUZLOUZvZEliVis2azZDaFNLRTB0RzkrN2Q1MVJYVndlTGk0di9MaFA5VjIwKzMvWlhlMkNsWmEyMXNkeWNGcHZUSmZYNWZJd2NPZkp6cjNFNzdzTG1GTFhVN0tlOTk3T2p5YmVtYVlwd09IeVpOYVZETmJRckZDZUhvcUtpb3J2Mjd0M3JQK09NTS82Wllyblo4VGE3OUFPSG9BbE4wMlJIY1RaYjJESXlNajczTXBEakttd1ZGUlhzMmJPSHFxcXFwS1dXNm40NnVncElLZXZRQW9IQUY2eDVhbXIwa0VKeEVoRkNET3Jmdi8vdG16ZHZiaG85ZXZUSGx1V1duTnNtaEdoanRaR1NJVTJOczduZGJ0eHVOMTZ2RjYvWFMwWkdCZ01IRHV6OHdsWmRYWjBVdGVycTZxU28yZjJmRHZlelRhdVVjNXgzWm1ibUE2Z2hrUXBGcDBEVHRDK09HREZpOXNxVkt4K2RObTFhbFVQY3BHTjJHNlpwbW5hbU5KM1Zac2ZhbkJsU2UwTHY1NVVwUFM3Q0ZnZ0VrcE02cXF1cjJ6UzFPMk5xNmNvNnBKVGlsbHR1Y1ZrN0N0UTRiNFdpRStGeXVTNi80b29yYW9jT0hmclk5dTNielJSeHN6T24wdDRxYjR1Yk01bGdXMnoyVjYvWG0zUkpzN0t5UHBjNWJwOVoyS1NVN1ZxbG5KWmF1cWIyMUF6bzRzV0xmNkFXcnlnVW5ST3YxM3ZqdSsrK1c1T2JtL3Q3UzlETUZIR1RxWmxTVGRQYVdHN3BTajk4UGgrWm1abU1HalhxdUNjVFByT3c3ZHk1azMzNzlpWExPbzVtVFY1S0J2UWJxbFpOb2VqYzVPVGszRk5kWFgyb3VMajQ3NENaeGkxdEUzT3p5ajZTNG5hNFdGdFdWaFpEaGd6cFBNSldXVm5acmxhdGcxWXAwbVZBZzhIZ0JHdVpzZHI3cVZCMGJ0eEZSVVYzYk4yNjlkQ3dZY1BldDZ3ejIwcHJseW1OeCtPeW80TGRkTEcyN094c1NrcU8zMGIyVHkwb1RVMU5hV3ZWT2hBMWtiS2xYVHR3NEVBZm44OTNIMm9BalVMUkpSQkNsQTBlUFBpV0YxOTg4Y0FOTjl4d3dPR1NKaTI0bFBxMnBFdWFUdGljNHBhVmxVVk9UczV4R3lEZy9qVDdHdzNUWk0rL3QxSzVldy9WKzZ0b09GUkRjMzA5Z2FabVF2NEFrV0NJU0NoRU5CSkJqOFNFcnNlSTYzRmhHcWFRTWlGc1BUM2hlYUpwMzZYcWNsR2NuRStwQmk0UGFKN0V3RXB2dGpvblI0SEw1YnA0MnJScEZjQlR0TWJiVE5Ja0UxTEZ6WmxJY0xxa3prVEN5SkVqajh2MDNVOWxzWlh2L1lUS3FvTlUxOVRSME5CSXM5OVBTMHVRVUNoTU9CSWhFbzBTamNYUVk3clE0M0hpY1NNeE5saEtJU1ZhckhyMzdVS0l1OVJsb2pocFNCUGlVU0FLc1JZSU5VSkdMbVRrMmQ2VW9nTXlNakp1cnErdnJ5Z29LUGdyWUhTVVRCQkNTRHZlbG1xNU9kMVJwN0RsNU9Rd2VQRGdFeTlzQjZ0cjJGZFp4YUhxV3VvYkdtbHE5aE1JdEJBTWhRaUZJMFFpVWFMUkdIcE1KeUZxY1JJeE5TbWtsQ0pZdGUxQ2w4dDFuN284RkoxTDZBd0lONEVlaHB5ZUNZdE8wU0g1K2ZsM2JOMjZ0Y0tLdDVrcGg1UlN5b1MyQ2VMeGVESTdHbzFHNlVqY01qTXprK1Vmdlh2M1BuSENGZ3FGK1dSL0pRY1AxVkJiWDA5alV6TW9NaklCQUFBZ0FFbEVRVlQrUUFzdFNWR0xFSTNGaU9reDlIaGM2UEU0aHRFNmdtajdodi90N3ZQNTVnSjkxS1doNkpURW8rQS9tQkEzbCtkemY3cDE2OVoxbWwvOW9vc3VPcGE3OXdadUF2YVNpTEcxRVRaQVdpVmRwbUVZeE9OeEdZdkZSRFFhbGZhMnE1YVdsdVMycStycWFxcXFxcWlvcUdEbnpwMlVsWldSa2ZIcFc4V1BTZGoyN3R0UDFjRnFhdXRzVVF2UUVuUllhckVZc1ppT3JzZUZyc2N4REJORFdpNG9pTEl6Qm54ZndHVDE2VkYwYXN3NGhPb1R1eFZPQUdWbmZyYSt5ZkpkMndIdzlmM2lwMzZNYU5XN0FGU2QrZVN4L05nbFlUTzJiVkQ1OTM5TFlxdThnWjFJQUNrUVVrZ3BNRTFKWEVMVWdHQmNhQ0ltTldKb0lvSkxoSENKSUc2WEg3ZXJDWStuRG8vM0VBY1haWEhHR1dkdzVtMGZmYXJmNTZqdDdmMVZCNmlzT2toTmJSMzFqVTAwK3dNRVdvS0V3bUVpNFVSY0xSYUxFZE4xZEQxTzNEQXdERk5JTXhGWGl4emNPVTNUdEhucVU2UG9NcGJiMGE3Nk80M0oxTHpmZW5mZ2p5ZVFtTVRqQTd5V3dlU1NTSmNFVFNLRmlSUUdramdtT2dZeDRrUmxuSWpVQ2Nzb1FUTkt3QXpUYUFTcGkvdXByYTJscHFibVU3K3VveEsyUUVzTCt5c1BjS2ltbHZyNlJwcWIvUVJhV2hMSkFxZW9XZFphc2w3TnlvQlc3M2l2bjhmai9wNjZEQlJkaW5CeklzbWdPTHhQNnVrKzY5bWlXYjA3RURkTmdtWTZ4RTJYcGtpS0d6b1JxUk9TVVZyTUNINGpUR004bUhSUFc0eFB0NEQ1cUZ6UlQvWlZjYUM2aHJyNkJocWJFM0cxWURCTXlKRUJqU1dTQmJhb1lab1NLYVdRU0swZ3Y4ZDNnUytvUytBVTh0YWFZd1NlMjBIa1g5VVlWYUV1OFpwZGZiUEpPSzhudWQ4Y2d0Yk5leFEvSVJON1MzMjVKKzAxZi9MWEozbUdhL241MWIxUDl0bkQ5L09iS0xpaWpzWXhMeE9PdGQ0aUVLTXZ6UnZ4ZFdyNXRlMlNTakNFTTVrQTBrUktBeE1CYU5JUUxpR2tTMnE0aFlaYnV2Q1lVYnpDamM5d296VTNrNW1aU2FVZVlhanIyRVB5UjdUWTlsY2RwT3JnSVdycjZtbXdrZ1dKREtpenNWMXY2NEphR2RDRUM3cHJ1aXJ0T1BYd1AvRXh3UlY3dTR5b0FSaFZRWUlyOXVKLzR1T2oveUU5ck43c284Q25lVzUrYitCUEpqZ3NOaS9nQWR3U3FRR2FCR0ZDV3BjMEtuWENVcmRjMGdoK3Y1K21waVlPNlUwYzBCdVByOFVXRElhb1BIQ1E2dG82R2hxYWt2VnF3WkF0YWpHaWxxakY0M0VSTjZ3c3FPV0NWbjY4dnBmSDQvNk9ldHRQUFNML3F1bXlyejI2cWY3bzd4eVBkc25mc2ZvZmovRFMzbUlLM0g1YUdnTzRoMDFrY0dBTGU1cjhOSWVMR2YrTm16aTM2UGhtZlh0NXV0MEVmSnpPYXBOSUNVS2FTRk1BQmxMR3BTazBZVWczY2FKb3VIRVJsaTY4cGhzUkROTGMzRXl0SGlWSHk2QzdLNHNzelhkOExMWkV2VnBOc2w3TkZyVkVFVzRzVVlTYkdCaHB1YUFtcGpSdEYxUVVGeFhkQzR4Uk1uQnFJUU02WmtPMHk3NStvemFNR2RDUDhwZnR1akcyZU9HWCtPcnM3M0xydHk4blkrTmE2cys5Z3h2dWVKQ1pZLzI4dmE3aXVEK2ZRSXdDcGx0V213L3dTaXZXWm1tTklHRzFZVnR0Y1dtSUdBWXhhUkNWT2hFWkl5U2poRUloV2xwYWFJd0hxWTM3cVlvMUhCOVg5RkIxTFFjT1ZWTmIxNUFvN1docG9TVVlJaHdKRTdXS2NHTkphODJ3dXd2c0xLZ0lIZGd4V2RPRXN0Wk9RVVN1cDJ2L0FvWkU2K3Evd3hIeGtKMmJtMWdha3BsUGRrNHgvZnNsZnVlYzNFemlrYy9OeGY3bUgvLzR4M1BUdUtSMmxsU2taa25qR09qRWlVa3JVMnJxUkNJUlFxRVFUVWFJK25pQVEzb3pOYnIvc3dtYkhvOWJMbWc5RFZacHh5ZnZyT0t2ZjkvQTN1WW9rVmcwVVlTcjY4U2pBZEhVN0Nlc3QzWVh6SnB4amN2bjlkNmI3ckUzLy9SNlNzKzdseGNQcE54UTl6SXp6cHZHUSsrbGNSMys3eWVNdldrWjVVcFRUaU95eVBqMUxmVForVFd5Q3gwWDdJVHp5Rjk5QzcxMzNrM3ZkNjZueHpmN3Q3bUlqM1M3NHZPblQ1OCtNd2VJN2hrT3E4MWpoYjAwYWNYYVpFTFlFdUxXSmtzYUowSkMyTUxoY0tJRUpCNmlMaDdnb041SVhCcWZYdGlTcFIwTmpUVDUvYlFFZzBSMEEwdy9GZVhWaEdLNm5RVWxiaVJNZGRsYWlLczk5L2pQN3dhKzNPR3p4ajVrMGE5ZXAvYW9YbUlMYTFaOVFNblVTeWhUMTh6cFl4Vk9ta0MzUzFNYTAwdkhrUC8wQ0Z3Yi8wbjlWWCtrN3BkMXVPKytuTzVmeXpxNjJ4VW5CRTNUSnE0KzR3ZFRIVmFicDFYY3BJdWt1TFc2cERwRzRwQnhZbEluR28wU2lVUUlHaEg4Um9qR2VJdmxralorT21GcjlnYzRjS2c2VWRyUjFKem9BdzJHaU1STnBBRFpjcENxeG9qZEJ5cmloa3k0MTFJS3BCUU41UjhNZHJsY2N3NzdyRG5aOE1aL3N1aWZMVWQraFhWdjg5SjdnNWg1VVM5MXhad3U1UFluNzRFQkdLOVZZanBDZWU1SlorS3AzVW56STl1SmJXOUUvKzgzYWRuZ3dqZXA3MUhkcmpoeGRITmwzZlRINHR2N09jV050clZ0d2xuYjVyVGFZc1NKeFdKRW8xRkNNa2FMR2FIWkNGRWZiNkU2M2tUQUNCKzdzRlVkU0hRWE5EUTJPVnFtd3NUaUpyaTdrWjhoQ2RmWEVkVGoxdURJNUtRU0laRmFYcDc0MXVabFB5bVpObmt5cFdNbU0vYWFlU3o2Wjl2QW4zZmdWZHd6R1Y3NjZYTnNQa0lNdXZhTnY3UDVDNWN6dWZCdzRyZVB6VnYyNFZmWFV5Y1RxQjU0Si9URjdTd0RHM3NSUmUvZFFON1lqa2JUdVBEY1BZSE11azAwLzNmYlVwTDQwdi9pME9WdkVZdWwvSWpQZFZTM2QwVUdYRDNuVTlXd0ZWODJqMXN2c3djM25zbVZjKy9tSEd0UHNmdWNPL251Tjg0NXhrYzBpUDdnZVE2TWFGdkRkaGo2bnA4eitHcFNFd2xDdUt4RFF4TkpxODFJSkJLSVc0a0VYZGVKeFdLRVpZeVFHU1ZnUkdpS0I2azdveS9oMzF4RXo5ZHZTaDVGLzNGbXUza3NiY285cW12ck9GUlRTNTA5dGNOcW1RcEhvc1RpRWt4QlpsRTNYQWVhOERlN1JKYTN0UThVaVFnZjJINUozYXI1ZDh4Nk5zWU5QMXZDczROaDYvS2ZNK2YreHpocjFVS21KaS93ZkNaLzc5dHN1T2JuUFBUY1ZieDZkMGV6SmcveHlpdjdHRDlyTEhuMnR3Njh6WUtmTG1OenJEL1gzUDF0SmdlZVk4N1NGc3A2dDdENXFWRTgrdFJNaHZtVXBweHd2SVZrL2VKaXNrdmp4RmYraytZTlJYVDd5Wm13SjRycmdiRkV2dk15TGRzTnFOcEg1TlVvK3A0T1lpVkR4OUo5R29SdS9RQzlhRkpLQ01OQU9nVFFOV0VjT2VPaVJPN2JkM1MzbnlZYzJGZkJDOC8reHhIdk4rbUtyL0hGOHk4NnFzZjBYVFNRZ3VlbUFoQmF1WTJtSDZ3OThzOW9ucHZlNlBmQU94ZnQvK2ttSUc0ZGlYNVNwQW5DTkVHQXhBQnBJSVdPSVYzRUVaYXdSV1Nja0JuREp5SmtHbDZhbTNiUXdCZW85NFNURzY1aWRhT1E3T3BZMkE0Y1RHUkJtNXFhQ2JRa0NuSERZYXNJMTVCSWFhRExESEo5UWpSR3drUTBqOUJNS1VpOE9NM3I5ZDZWZDk2M1diazhuN0krT1FCTW5IRTV3NVl0NDRNS21EckM4V1NGbHpELzdwZVo5S3ZIZVA2YXA3a2xYU0g0M3RkNTZlQW81cDJmay96VytxWEw0UGJIV2RsN0s0c2V1SXNadWRONTlybXJLQVBXLy9SZVh0bzVrMkVqbE02YzhMakt0UFBKcW4yVDJ2dGlaUHppTW9xdTkrUC8xbjhUM2dQaWExZFJjRVVQV3JiWFFkVWVBai9hMDhHajlDRDdKeU1Rci82ZHdJY0dUT3JBb252Z2VncG41Q044Y2VJci8wSHozMExIY1B1cFQ1LytBN24va1NlTzYyTkczNmpnd09Dbmp2bm5TbjA5cndIK0RlaUFMcVdNQzd2T1RhS1I2RXJBQk9LWVVwTkN4SVVoUlR5ZXNOcGtuQWh1UW1iQ0pXMm9yR0hIZFM4UXp5aG1lR2EvSTd1aSs2dGFYZEJtZjhJRlRmU0JKa1lSNllZRWFSQ1B4OEhud3lVa2hoN0hxdkxSN3YvYnJ1dUZFRmY2Q25Pby9jZGpUTHZ5U29hZU41blN5LzZERGJFWTZUek9rdW5mNXA2QnUzbmlwMytuTXMzdFcxZjlIZjlGVnpIZVlZSDV2RkM1WXg5YmQrNm1QT29sTDdDUHlnQkFDLzVBNG5iRmlVZjY0NGlpSG5oSEZlUHJDMmJNaDZjdzhXWm9lUzVrNE1qWkxOZjFFOGp0K3duK1grNXpXRjd0WFNMOXViOVJlKzFmYVBqaEx1U2tTZlM0cWNjeDNLNDRrYmlFZHRtbWdUKzV3T0dTZWxwcjI1SWRDWmhPbDVURTlGMWQxNU5kQ1JFWlMzUWxHR0dhakNCMWV1Q3dIUWx1Z0ppdWM2aTZwdFVGRGJaT3c3WHIxZUptUXRpTWVGekVEWUhISllRUk40VmhDbTFvWHFGTGM3bnZCQ2hmOWhDelh1ckZ3bC85bnFsRDh2RUYvczZNeWM5MThQU0R1T1dCcTNocDFuTXNlbU42cXF5eDdCOHhKdjlzRkU3UGN2VGRQK0RLNTVieHU0cEIzUHlySll5dWY1bTUzNzZMeGJRUUhUaUxKNGVvaStta0NOdmYzc0JmZEQ3Wk0rTEVubnFWNW0wOXlQdVBhUlRsdVlCcUFuY2RJWnZsTFNiN213UFFpcURIUDB1dHYySnVCTkR0Lys0a2ErbC9VZnVyT2l1bTJraThEdUxiNnpEUDZrdkJ0S0c0WC9nWDhXVE05UWkzSzA0b1BUM2RyaDJoOWY3WEZ2T2dibGx1VHBkVWdwQVNhVnJpSnVQU0ZDSWVseTZYQ3gwelVRSWlkY0ptakJZalFyTVdwc0Zvb1VadnBzaWRoMGU0MGd2YkFhc1h0TEdweVdwd1Q4eFlpOW9ON3JwTzNBQ2thWThqd2hRdU5CRVhwcFRDazkvdm04QTRhR0h6UDNlVE4rYWJUQitTbjNpR1FBdUh5dy80UnN4aS9wV3ZjL05UeThpTmVaTWxIZEgzWG1hTjd4S1dwcnFWdnY1TXZmc0hURTI2dEZmeDVBdFhFWTJDVDhYV1RpSWhvaStzSmZxQy9mOEEvaHYzZ2RjRnNhT29QWXJWMFRKN09TR254VDNxZkFwL2trWHcxcldFOS9qeFBuQTkzVXUzMFREN3c2Ukl5U2lKbkJzdXZBOWNlNWpiRlNjdFRJSDQ0cklCZDA4ZXNmZUJWVW1YRkd5WDFHcTVRaVJNcDBUNWg1WVlUb2t1VFhSY1JORUp5eGcrMDBPTEViRUtkMXM0cERmUnoxdlEvam5Ea1FpSGFscG5yTFVFZzRuQmtkRldhMDNYZGVKU0lqR0ZFVTh1T2haQ0NIRk5XZSs4RmlHK21YaTRITW9HNWxQM3IyVTgvOC9kYkgzdjd6eDAvMUkraUVHMFEzWExZZUxkMytaU2dnUmFyM0xXdmJTUm9pc3ZaOWhSbmp3bGFwMlVWRkhyVzBydXo4L0RWOWpleFRUMzFCSGY3ampxb2hDTkpyNWZGMFBmV0ljWU40YThiNWJpTHUyQlo5Slk4cTdJSXY3V25rVDErbUZ2VjV4TWVyaXpyNzA3NTh1NXBEVElKMXhScWFWMkpCaUdJUXpEd0ZrQ2ttaVVqeEUwSXdTczhVYTF1cCtJMmI0OVRtdFhzNVpjbmRjcWFyb2V4N0NHajVpbWFTMW1RVWlFZUd6dTJObGVXdlZuOU8wLzVLRVJoM2ppZTdjeDdZRVYrQytieGN6aE9VVHJEMU96Vm5nSjgrOGUyZnFITmZBMkwvMnpGOWRjMWw5ZEVhY2FmZnVUT2FrVVg5OWpMOEdRYS8rUCtoL3VRWHh0RWtWLy93YUZQeTVGdnJxV3hsOVdIOVh0aXBPSFFBeTlzK2VsbDlLMmFMZE5INmxkdEdzbWhBM0RTSlIvNk5MdUpVMklXOGgyU1kwUTlVWUwxWHBUKytmNzV6OWVZbGQ1UmJzRkxmNFd5eVZ0M1R3bG90SEVMb080WVFocFNtM3Jodi9OSDF4MnhqdHduSnNDRHJ6TjgvL01ZZXIwVVJTcGE2SlRjbURjeTEzNjlmZlpjTlV4bUJzRGp1cHVobUZRV1ZuSmdBRURqdnFodS9ET2d3NTU0NDAzMHY5aGtuTFBILzd3aHp1ZWYvNzVPaUFJaElDd0VDSm11YWlHRU1LMHRsbEphOUdMdExkWTJjdGVjbkp5Nk5hdEcvbjUrUlFYRjFOU1VzS2dRWVBhN0VodzE5VzNyMW16VnVjbHJEVnIwMVE4Ym1CWTFwcVVDWFV0R3pqZ2x1TXVhZ0I5THVDVzZVbzhGS2MrRXlkTzdEU3ZwWFV0Nk9kRzZhaFJveVk5Ly96eksrMVlteEJDeHlyL0VFS1lRb2prbWo3bjNsRjdXM3hPVGc1NWVYbms1K2RUVkZSRTc5Njk2ZCsvUDRNR0RhS3NyRldLTkhzcFN6RG9xRm16ZHhmWW9tYjV1NlpwQ3ROcW5kcjBmNnR5WFM3dEZuVnBLaFNLbzZWYnQyN1h6SjA3TnpmcGprcnBzZHpScEV1YVdOZHBDbXU3bGJCTFB4THJCeEt0VnZhbUs3L2ZUMk5qSXpVMU5ZUkNyZldLbWoxbkxSUU90NDc1dHVKcXVwNFV0bmJXMm9oaFEyWUJnOVJiZFhyaTZwVjFlcngyemFYZTdPT0lFS0xzdnZ2dXU1ajJTUVNYbEZKTFRONld3alJOTEdGTDFyVFo0bVkzeU5zejIrd1Zmb2NPSFdwOTJ4SWRCZ2tYTkdLTitVNjRvRHB4bzYyMUppMXI3Y2F2WCsxeXVWdzNxYmZwOU1VM3BxRHJ2dll2RkI2RENxcGFrZU5OZm43K1YwdExTNzFwckRiTnR0b3NjV3RudGRuaVpvODFDZ2FEQkFJQkdoc2JxYTJ0SlJKSkxIL1JuTmFhTXd0cUQ0ODBEQVBUTUszbExBbHJiY21UaTI0RVZPUFNhVXplUFdlVGRYVi9YSDJ6dTQ2bDFqZUw3T2xua0RkbjJOSC9rQ2RUdmRuSDMybzcrKzIzMzU1d05GYmI0U3czcDlYVzNOemN4bXB6Si9ZWFJOUEcxaEsxSkNhR1phMVpGcHZtZHJ0dlZHL1A2WTNXelV2MyswZWQ0cDlBRGJ3NTZzMytIQ2d1THI0Q2VOTVN0cGlVMGkyRWNKTklKR2d5Z2JES1BxUmhHQ0llajh2VVdGc2tFbWxqdGRYVjFWRlNVb0xiS3VXd2Q0SW1sVEZ1MVpFWXBvRXBKVkpLSklqUXdSMVRnQXZVVzZNNDVjbnNCa0o4L3M5akduQm9LN1RVbkRaYnNUUTRiK2VyaTBjTnZ1S09qWmJGNWtGS0hZRkxTZ3dTaGhTbU5ER2tnU0YxNG1hVXVCRW1IZytpeHdQRVlrMUVvZzJFSXpXMGhBL1FIUHlFK3BiZEhQTC9PeUZzeVdMY3VHMnRHUmkyRzJwS3BKbFl6Z0pTZUQyZUdlcUtWNXp5dUgzZ3kvdjhueWZVQ0pXYlFRK2RkcWQ0WU4vaVNjQUhTYXNOUEVJU1IwZ1hDRk1paFpSZ1Npa053OFF3VE9LR2lXNFk2THBCVEk4VDFYWENrU2pCY0pSQU1FeFRvSVc2eG1hMGFDVGhndXB4dlcwVzFISkRyYVFCVWlLYTltNFpJWVM0VmwzMWlsUGJuSEJCVHM4VDgxd3ROYWVscUFGNDNPNnIvdmUzQy9zbExiWkVuQzFsTndLWVVnb2pFV3NUY1NNUis5ZU5PSG84VGl5bUU0MVo0aFlLMHh3STBkQVVRSE9XZHlRTGNXMFgxRFFUYm1qQ1d0T3lzN091VTFlOTRwUzMxUEo2SitKcko0TG1BNmYxNlI0N1lzaUZwR3l6UWxvWlVva21wUlNtbEppbXhMQVRDYmE0eFExaThUalJtRTRrR2lNWWlSSUlobWdNQk5HU1RlNU9VVXRhYTNiQ0FMSHFUNy9MMERSTkNadmkxRVM0d0pzTnViMFMvejVSbk9hYjVuT3lNcTZZT1dWQ2htMjFTVnZjRXJQYUJJbVpSaUpodFVrTXd4UUpsOVNhL3FISGllbHhJcGJWMWhLTzRBOEUwZXdzcUc2NW9IYlNJR210V1NVZWt5NjY0RnFnbi9vRUtFNE5JZE1TMXBrM0I3SUxvWHNKYmZiOG5TaTY4RUxtNDBUSm8zTnZIWmZHSFhWSjBLUzBoWTJrMVJZM1RPSnhFOTIyMnZSV3F5MFVqaElJaFhIcnVJbmp4c0JGWEFvTUtZUWhCWVlsYUpacWF1N0MwdWtuSkVPa1VDaE9LM29XZEw4RWVOdGh0Ym1GeElXUVd1SXZrSlJTSWd3cE1Vd3BEZE1RY2NPUXR1V214MU9zdGxBRXJkVU5qU2RIaFNSYXA2UjlpTWJHeHVGQ2lNdlVXNkJRZEQyaWIvNkdvWGU4ek5aTyt2cmNMdGNsYTVjc1NFMGl1Q3lyTFRuT1NKclNLdGcxTGN1dE5kWm1KeElTVmxzRWQ3SnV6UkkyTTlrVG1oQTFRT1RrNUh4TlhSNEt4UW1rOGpXdXVQTVZ0clYrL01udE9aREowNmN4ZjBvSmh5MUVhZHpGaS8vclovejBNU2R3eWZndUhycnhLWmFsamtiem5NdmlsYk9ZZklTZi91THd3ZU9BVDFLc05oMkJoaVJSK2lHUXBta2xFcXpTRHp0ODFqYldGbXNWdHRha2dUWEZ3elJ0TjFSb21uYTF1dElVaWhPTVp4QUxmanVIRzNvQTZGUnVXczJjUjU5aWJ2YVBlUGJDd3pUeU4yN2pkOHVxeUx0OERHVW50SEhDemFVUFBzYXo0NC85SjNPek15Y0IvMDNiT0pzYlpOeXFraGFtRldzelRGTWFpVDVTbVlpM0dlaEdhNnd0SEkyaHBicWc5b0hWaUJvTUJpOEJocW1yVEtFNHFTcEh5WmdwM0R4RVovT1dHaXIvNTFkdDNjdnFONWcyN1JmODhyK2VZZXdEYjdCSDM4WGMyUTh6ZDVOMXUxN05TNC8vaWduVDVqRDArb1hNV1Z1ZDNFVVNyZHpFUS9jL3pNaHAzMlhvamIvZzloVzdxTFZ1Vy8vNGc0ejkwWitaZS84dm1IVGpmWXk4NHhtZTMzNk1kWGV4U3A2WjgxMnVXRnFaZU03R1RkeCsvWVBjL3FhMTRyejZJeFkrOE1qUVFmMzZEYlVFcmRVZGxiaE1LVFhEbENKdW1DSnFtQmlteE5RakhLenpVeCt6eXovQzdQN3czN3k1UDhUdURXK2gyYUtXTHI0R0NKL1BkNVc2cUJTS2s0MU83ZlozV0xiRHc3QWgrWlJjT0k3Uk5SK3h5bHJSV3Z2K1Iyd3RPWmV2WFhzbkczOTZFYVdlTTNsMHljTThPc2I2OFpvcWFvZC9nMWRYL29xMXM0dFp2K1JsMXJRQXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyazg5Y1Z4bm0wbnZ2WSswZkZySjBURDJMWG5nL0tYeEhoYmVFVys2OUNQNytaMTZzOUxQdU55dlpQUHdxRmw2WUI3RUtGdnpvUlRZUHVZN1gvL3I0ZWM0NG03UXlvNENtQ1NGY0FqQk5Jb2JFTUVGQ011YVdHSzBHcG1IUzgreHpFNjZvdy8zRWJuYTNEazBJY2FXNnFCU0trNkZsdTVuLy8rWXdQeGxqNjh2RTZiT1pQeWtQT0lkcmhxeGs4WnVWekN2Tlo5MzZLc291dks3am1GcmZjN2xqVWpGNVFONlljeWg3K2cxcWd4RGQ4VFlyZ2lONGR1YVppVEg4SldPWVAvMGRKcXgrbi9JcGx3SlFPT0pMVEM1T1dJMmpSNVRBK21vcUljM1kvaml2UFRLSFVzZDNMcnpuNXl5ZGxJV3ZkQXFQWHI2TkdRdWZKQzlZd3J3bngxRUVSTGU4d1lyZ0NKNmNlU2I5dkZ3Q0xFMjEyb1JJZENJZ2hLbUJRRXJNaFBVbFRNT1VpVGliaGlIQnRGeFNkNnExWnJ1aGdBaUh3MU9BdnVvS1V5aE9kb3d0bFR3bWZ2bE1Gcnk4amZMcCtieTJJNThyYnlzK1dxODI0WUxxRUcwTUVDMCtpeExIMkxtaW52bjRHcXM3dE1wOG55ckc1bUhZVnk5aTlNc3ZVdjdsNjVodS9VN1JSaitCcGdwdXYvNTlnRDREQnZRZjhja24rOTVyRzJkREJ3UVNJWVFRbWtDYTFoUnowelN0amdRd3BVd0ttNVlxYXBhbEJpQzhYdThVZFhVcEZKMlRvdkZqR1YzelBzdit2b1hOSmVPWVduTHNqK0hya1ltdnVwcktXT3YzYW1zYWlQWW9QczZMbEVLc1g3YWF6U1VEOEwyMW1oZXR4V0crbkR4eWUzNko1U3NmWS92S3g5aSs4aisrbUdxeFNkbmFpV0JLaVNHbE1HV3FLMm9tRnBTYWlkSVB6UkkwZTZpYnNNczhMRGRVQ1p0QzBWbkpPWXRyaGpmdzRyS1BLSmt3Z3FTdWVUUHhFYUt5NmNoQmZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODQ5cnFVaTBTMnZNUGV0Zk9ZOU9JZEh2K3huMGVOdlV3bjRobzlsTWh0WnRLSUNQNUNoTjE2VVlxMGxWL1JKcEdaYW9tYUNFRWlpRVYzb1JweHd3RTlkSEtTWnFHdHpweVlOYkRjMEZBcGRyTnhRaGFJems4WEVTWVB3YmZCejVYakhxUGFTYzdqNTNIZDQ2TTRmcyszQmhUeDZ1SWZ3RG1UZWo3L09nbDh2WmRJMFA5SHNmQ1orZFRaUFR2azBvOS9ieDlqZ0xCYTlNSWtQZnIyQm9objNjVU94QjJaTVkvSTlMekIzOVZrc256S01oVCtleG9KZkwyWENNajlSYjE2ZnkyWitlOGcvbHYzbmh5VDdSbkZKbVJnWmpoQkNBeUdsa0Y2WElLcEhPVmdmdytWeTQ5TWtwbFgrSVhyMjdFazBHaFd4V0l4NFBDNU0wOVNrbEM1ZDEzK21hZHAzMU1XalVCd2RuMmF2S0IrditteVcwS1kvTW1sNUNjdC9lUkVscDhoNURJWWlTM0xHWHZzaTBBSUVnS0NBTUlLb1FPaENZR2hDbUc2WEpyMGVGejZ2UjJiNnZHVDZmR1JsK3NqT3pFQkx6WWFTcUYvVE5FMmJwQzVWaGFMekVtMnM0UGtWMnlqNThybW5qS2dCWkdYNnprdm5pbUxOYWNOdXM1SlNKRG9SVEd1RmdaSHNSTkJTaW5LUlVvcUdob1pocUdVdENrWG5aYy9MWEhIck03elU0eW9XVHNrN3BYNDFJY1RacTUvNVVlOE94RTFJaVVDQ0thMU1xTE9IMURyY3FRM3ZKSHBETDFKWGprTFJpU205aXJVclQ5M2ErVEZubnprTTJHOExtd1NYa0dnSTIyS1RRb0tVZHUrb2RkaGJyWkpaVVZwSEZBbVh5M1dodW5JVUNzWEpvbnRlemlqTFNrdE8ra2djc2xXcnBOMC9LcE9WSFlaMWFLa1cyL2UrOXoyWEVHS2lPclVLaGVKazRYRzd6aHQ1WnIrVWh2aGtuSzExbEJHV0t5cmJ1cU5haWh2S3d3OC9mQUhRVFoxYWhVSnhFdW4yL0NQZkxYVmFiVExSRkovWUZpL0JtcTZMdEVRdE9kTElhYkZaQ0ovUGQ1NDZwd3FGNG1SVFd0SnJTSHRYRkszVkhVMFlaYVoxR0xJMUVhbzV5enhJekY0N1g1MVNoVUp4c3NuSnpqekhZYkcxS2Z1dzlVcGFXVkpwN1Q4MlpHS3NrV1piYTFKS2NlMjExN3FFRU1waVV5Z1VKeDIzeS9XRkFiM3lYU2tXbThzU05FMUtCRmh4dGpidWFHdU1UUUJpeVpJbFh3UnkxQ2xWS0JTZHdXaGI5dWg5L1oyaUpxMTlvemhXOHlYaWJNNmFOb2ZGQnBDUmtmRUZkUzRWQ2tWbjRjd0JmZHNrRUdnYlp5TTF6aWFsaVNuTlZ1VWpVYjgyUnAxS2hVTFJXZWlXbXpXRWRzbUR0bkUySEhFMjAweTBXYmtkWTRxRUVPSmNkU29WQ2tWbndlTjJENmQ5akMzWkw0cXpuaTNwanJaYWJPemF0YXNuTUZpZFNvVkMwVmtRUWd6NjVmZG01WFFrYmlSVUxWblBacnVsZG94TjlPblRSelc5S3hTS1RzZWw1NS9ieHhJeWErQWtHaEpoVDlXVldKVWRWaGVDbEk3c2dzZmpVY0ttVUNnNkhYMkxDL283ckxSMnRXeFlJNHhhdXhBU3dvYVVVcmhjcnJQVktWUW9GSjJObkt6TU14eWkxa2JZckRoYndpT1ZDTXNWRlpyZEl5cUVVTUttVUNnNkhSNlBlMUNLcUxrY0ZodXQ0cFpJSU5pdUtOWWR6bEtuVUtGUWREWTBJWVk0ckxUMkpSOXBFZ2dhSUdwcWFnWnp1SFdCQ29WQ2NTU3FOekYzem9NTW5Yb2ZjOWJyeC9PUmZTc2Z2Ny9RS1dqU21zZEdzdVREVGlBNExMYWNuSnhCNmwxUktFNVgvTHg0L3k5WVZBbFV2OEcwNzc5QjVURS9oczZhRi83Q3VwNVhzZmFsWC9Ea2VFL2JtN2UveElRYmw3SW05dWxlNGREU2ZrV2tMZEsxT3hBU2dxYnJCdUc0WmJHNTNlNHk5ZVlxRktjcExidDRzM0VnRjVaQTdaWnRSSWNQK2hUTFljTFVOdXFVakJqVVpxdDhrdEtMZUhMZUZNWjdQOTFMTE95UlY1ekdIUlZ0RHlrTTB4UzZBVzRwcGRBMHJWUzl1d3JGNmNaVzV0NzZJdXVDWWVwaUhqYmYrQkhSWUlDb3Q1SUpOZGV4ZHQ0NWJlTlRzVXBlZlByUExGNWZSUzJaRER0M0NndnZ1b0JoT1pVODgvMW5lR0pIbk5pT1JZeGRQWlpuRjEvRGFPZlA3bGpMN1kvb1BQcW5iekQremQ4d2NobmNVQnBtM1k1cWFtT1pUTHpwTmg2ZFZJeXY4VzFtM1BvT2VSZG1Vcm05Z2RvbUtQdnlOQmJjT0tSUFcwc3RHVjhUSmxKb2dHN2F4bU0wNFlvS0lRYXFOMW1oT04wWXhxTy9mWVNWTS9veWF1WjMyZmlIT2R4Uk1vajV6enpDVzZtaVJvZzFqei9ERTQxamVIYkpZMnhmY2lmWEJGY3o2L0ZOMUZMQ25iKzhqL25EM1l5NmFSNGJVMFV0SFRVTk1HVVdhMy83Q0cvZE81RDFTMTVtVFV1cmE4endHMWk1K0dFMlBqT05vdlV2OHBNM1E3MHR5Nnk5dUFGU0NPRjJpY1FkM043RURVS0lBZXBOVmloT1IzUzI3Z2hRZGtZeHRGVHlRYXd2dzNxa2MxZTNzR3g5SnROdnVvaGhPVUJPQ1RmY05vNjg5OTloWGVPbmVOcWVaM0hOaU1UYXdMelNNeW1MTlZBYnRHOHM1c0l4QlFsaDdYRU9kMHpJWmVNN08wbzZFRFY3c1Fza0J4VkozTllOU3RnVWl0T015dFhQTUdOWkpmNm1NR3g1a0hXRXFRdDYySHhyQlRjLytEM3VkQWFvbXZ6VVVrQnBUNmM0OWFXRWo5alRDUFQ0REMvRXlqTkVkU0JOREs2b09BLytIZW1YWXJFSkNacEltYVpyeTV1MmE5ZXVZaUJEdmMwS3hlbEZ5WlE3ZWV1WmFZenYreVdXL3VFUlhwMTVKbWRkZFRjYmY1c2lhZ0RkOHlpaW5qMDFiZDNKV3ZJbzdmSDV2czdLeWdiSXpzMzQyYnhiY2pxMDJGTFFDZ29LZXF1M1dLRTRUYW1wb0prdkJxQUFBQ0FBU1VSQlZMeTRoREtnZkU4OUphWEY2ZStYTTRLWjQ4T3NlT0Z0dHJZQUxaVzh1UFFOYXMvOUVoT1B1N0JWc2VwL0svQUQwY3EzZWVMTk1PTW5uTWtYQjUrUjV4Q3kxbnEyRktScDR2YjVmTVhxM1ZVb1RrLzhsUTFRTW9ZOC9KUlhlaWliNHVuZ25sbE12dmRPYXAvK003Tm1yOFFmeTZScy9CU2V2V3NNUmNmOVZlV1NWN21hYWRmdm9qS1d4K2dwTi9Eb3BEeWFkL2ZJNjhCYWExMUdKUkNHYVVnUmpVYnY5SHE5VDZ1M1dLSDRiQmlHUVdWbEpRTUdIRVBJK3VOVjZzUTVhWHliR2JlK3o1Vy9uY01OS1paZ1pYWGRnbjVmdnZrZElHQWZBa0lJSWdJUkV3SkRFOEowYVpwMGE1cFdwTTZtUXFIbzdHUmwrUEljYm1nYlM4MDU1UU1rbXFacEJlcVVLUlNLem83WDQyNFhZeU5kakExd0N5SHkxU2xUS0JTZGdoNFhzSHpsQldsdmNydmJDRnY3UXlKc21kUDRiQlVvQ29WQ2NVSndhVm82VjVRMlZwdFZxS3NCZWVxVUtSU0t6bzZtaVJ6U3hkWmtHM0VURXRDRUVFcllGQXBGcDBlSTlzS1dhcm5aWFZVYWtLMU9tVUtoNlBUQ2x0QXFwL3VacHV0QUpvVXRTNTB5aFVMUkJTeTJ6QlJSYzJpZWJDTndHcENwVHBsQ29lZ0NaQnpHRFcxanRXbWs3YWRYS0JTS1RvZTN2WGVhVHRaUXdxWlFLSTZHRUp0WFBNT0U2Ny9MME8rL1J2bkpFN1oyQ1lOMkFpZGI1NGNyRklwVGxTMS9adExDajRpaXMyN1JRdVp1K2hRYnBDcmY0YUZsZmlZL3ZKRHR2N3lVNDdja3BaNTEvL01HYTZxUDZzNnV3MWhzMWtaNE1HbHRTMUFvRktjb1d6ZFZVRFJtSUQ2cWVHMVBNUmNPOFJ6N2d6UTJVSnZkbHd1SEh1OWNZd092clZqTmEwZTNGa3ZyMEVxelRMWEVKbmdRVWtxcDNucUY0clBUMmFaN2xQL1BrOHhZVVlXL1NjZlhQUk9mbmxqYVVwamRrNXQvM0g2WVpPMm1sNW43bTNkWVg2UGo2M2ttMDJkOW5mbmpDNGl1WDhxRXh6K2lMZ2k1MlptTW4zMGZ6MDVxVy80YXJkekVnbCsvd2lzNy9FU3ppNW40MVdrc25ING1SY0M2UmZjeE4zczJHNzkxWnVMTzYzL0QwTi9rcy96SGVTeTRmeTFibThLUW5Vdlo1YmZ4NmxjcjB5NXplZlMyY3lnQnhQQ3AwNEFnaWVrZWZxQUZDQXFJU3RDQk9DQTFFcGFiUXFFNHhTajc2aHcyL3ZZbXB2WThoMGQvK3dodjNYc09mUytjemNZL3BKbVFXL2thc3g3OWlKSlo4L2h3NVM5WWUxcys2eDVmd3FJOTRCcy9pNDBQanFPdys3azgrYWRIMm9rYXNRb1dMZndMVzRmY3dOcVZqL0hoenliaFc3MkVPYXZyRC84Q1N5NWw1UjltTTcxN0psUG5Qc0tyc3daYU43UmY1dkxRV2orSDFTcVJtQk9lR01xbW9RR0d1Z1FVaWxPVW1pcktldzVpbUJmS3QxZFROcnh2MnJ0dFh2ME9sY09uTUc5OEFUNDhGSTJaeXJ6aERheFlYWEhFcDRodWVac1Z3UkhNbTVtdzBId2xZNWcvdlMrYlY3Ly9LWk1NN1plNXJIOXJHLzcyV3RXK1Y5VENEY1JJcmxOUUtCU25CbHQ1Nkk2L3NLYkpUMTBzazJrM3JrN3NETTEraEFudlQrUFZlV1BhTkluWE5vYkpLeTV3ZkMrTGtwSmMvSlgxUkJtWXNvb3ZSZGdhQTBTTHoycXpLTG1vWno2K3htcHFqOE52a2xqbUVzYWYwS3FqUXVNWTdxeFFLTG9LdzFpNCtHR1dmam1mQys5NmtJMS9tTVhVbmlNU0xtbUtxQUVVOWNqRVgxMlBQL2tkbmNxYUFIazlDZzRyYWdDK0hwbjRxcXVwZENoSmJVMEQwUjdGaWJIaG43R2d6RnJtUWw1N3JaSXBYOXNJVzFoZEJBckZxVWlJOG1vb0s4bUN4bXJLdmNXVWRTQXlvNmQ4aVpKL3IyWFJKajlSRW9tRUo5N1BaL3FVZ1VkOEZ0K0lpNWp1Zlo5Rnl5cW9CYUxWbTFpd29vclJVODZsRENncHljZS81U1BXTitwRUd5dDRmbldGUTZFOCtMdzZ0VFgxUkpQZlM3L01KUThpUi9Wcnk0UXJHbElYZ0VKeEt0TEFCNVVGbkZVQzdLMml0dWVnanV2UFNpNWw2ZHd3YzMvekNDTWZzYktpOTg1bVh1bFJQSTEzSVBOKy9IVVcvSG9wazZiNWlXYm5NL0dyczNseVNtSTRkOW5sMTNIUGxxWGMvdi9XRWUwK2dLa2o4c2xOL25CZnJwa3lrRm0vZVlSSmUrN2tyWm5RMFRJWEtXVTRqWFhtK0w5QUNJa3BUU21rbEI4QUk5VkZvRkI4TnRReWwrUEFZWmE1bUZKdWNZMjQ2b2UwbG5zNEY3cEVCVUlYZ3JnbWhLbEpLZjNxYkNvVWlzNk9sTEtsWTJ2Tm5wMmJRQU9Vc0NrVWlrNlBhY29XaDRESmRJSm1lYVM0cFpSTlFnaDExaFFLeGNubk1NdGNETU1JSE1aaWMrb2FtcFN5UVoxTmhVTFIyWWtiaGovRllwUHB4VTJnU1NucjFTbFRLQlNkbldoTTkzZmdma3JIdWdNQU5NTXc2dFFwVXlnVW5aMVFKQnFnZld4TnRuZEVRZE4xdlZxZE1vVkMwZGxwOGdjN2NrV1RZbWRuQzl5UlNLUW1KeWRIblRXRm9oUHh5WUVhZFJKUytHRDdua0RIb2lhdEZhT0pRV3p1Z3djUEhpd3NMRlJuVGFIb1JBem8wMU9kaEJTcTZ4dnRjZy9URmpXUjhENmw3WUlLSWRBMGdUWnk1TWdhanJZSFM2RlFLRTRPa2JtL1dobzZqQ3Y2Lzl0NzgvaW82bnYvLy9VNTIreExsc2tlRWhLV0VFUkFLK0R2aWxoLzZOV3FiUzlZV3JTOVNsdSthUHVyMUc4TDFRcTl0cUJ0b2N0RmJ5dFdyMWhic0ZxZ1ZXcFJSQlRVRmxjVU5TeWFSQ0FRUXNqQ3pHU1ptWFBPNS9mSG5IUHltWk16U2JCc3d1ZjFlQndUQW1hWk0vUE02NzE5M3RUYUNZKytvM2IzODhlTmk0dnJUQldsOUlBTlpEcmozREpFRExCUlN1aysvdEJ4Y1hHZHFkSjAvYUFOYWhsdXpkeVliQVNrYWJEcHV2NHhmK2k0dUxqT1ZDV1Rhck9EWTNOcytTQWt2Zk9BYXByV3lCODZMaTZ1TTFYeDdwNW1oeEEwYSt1SGxLWmhza0ZSK041a0xpNnVNMEVwYkZqNkE4eC9UVTMvc1dBYWZuN0haMW94aEJ3YklTUmRHUVZBT3pvNjZ2bUR5Y1YxWmluUjlCWVczWGszeGw5M0cycSs5a3NzMk56RW5ESTdORURVYlg0ZWEzZWZyTE5rVzdCcDdTdlkzbkdpUDYrTTZ4YjlDcnZXL1JMdkxCZ0hCVUJEL2I0MkJtWTIxMmFPVXhIcnZ3SUFXbEZSOFJGd25JOFpGeGZYeVZQeVF5eForaVIyVk0zQStzZC9oczBMejBmVHd3OWd3ZmJqZ1ZRUGRyeXdFV3Yybkt6VC8xdXdiczFMMk5aeGNqNjdTNUVSVEFlU2lUdSt2N3pEN3RRSW9JTms5TFNsQ3dna0hZcWExbTRYZ0FuOEdjWEZkZm9WM2Y0U05tQVNIcDE3ZnZvNDczRlhZT24xYitPYXA5NUQ2NVRKaURpY05MdHA2Zi9Ga3NMYjhQTGNTdXg0OU9lWTkydzdvbDBxa251V1lmempBT1FSV0h6ZlhGeWZBMFEzUDRCSmF5VmNWOWlPSFEzdGFGVktjZjNjRzdGNFN2bzQ3OFMyaHpCK1RTSFdyL3c4YWdFQUgyTFIxeDVHOUxzL3gzMFh0dUNSTysvRGlrWVZpVlFQdHY3d0IxZ053RFg4YWp6KzA4dXlIeitlb1c1c1g3c2FTNTdhaGZvdUlGZzJCblBtZmhtM2pnczYvRnU2eHdZMUhZQk9BUW9LQ3FTM3ZoTmlMQmFsZWpySGhuUmx0RTRRQkE0MkxxNHpRRTBOTFVEVlpBTXFhVldQcmtUd3FROVJqOG5wN1U4RGFPTE5QOERyTjBleCtzNjdzVzdLUXF6L1FsNy9mOVNwWXNLaS80dmxaVEphdHorS0dmKzlHbFVyYnNPTmhZTjlkNFg0K2svdndkZXhFL05tUEkzcWV4Y05iVGNDRzJhL3RSNjNQUVVzL09uUGNYMVpDblViZjQrYjcxbVA2b2R2eHBXMkNVOWQxK3ZSUDdlbUE5Q0oyWlJMUVRWS0lZR0FDQ0lFUWdnRlFGVlZyZU5QSnk2dU0wT0pMaFV1UmNwY2ZlZVQ0RXFwSnk1blZEQUNVOHJTSzRValU2N0dEUVVmNDIvdm5hSUR0UlVacmxRUFdqdWlpTUtMMnF1L2ljMFB6TUkwaDdGMVhVdnVRLy84R2hPQ0Vpb1FBSlJDQTFNOEFFQjdlbm8rNEU4bkxxNHpReTZmaEVUU0JyRXVGUWxaR25UUDV5ZFRBR1U1UUxUejFHempkSTJiZ2NlL093YTcxanlBNlYrNUM5UC9hejAydEtpT1AxdXlOMzdRQmpRTjlwWVBRaWhKVDhKVFF2cEdxdWpldlhzNTJMaTR6aEJWMXhRQ2V6NUVYVVo0Mm9SbzJVZ2poeVVEU0NGeHd0YWR4OURVQWdURG5qUjRGQm11Vk9xa1ZSUVRMUzFJakw0TTkvMTBFVjcvMDEyNGIyb1BWdDY5R21zZENoSFI5Z010QnNBMEJtckdaVlJFS1FVRklCQ1N2a3ppVFo0OCtTaUFEL2xUaW92ckRIQnNGMXlCNitYWHNlU2hPdFRIdTlHNit5VXNXTnVPSzc4d0xwMWZ5eWxGYmNGQi9PM2xKa1NSUXV2dTU3SHFmZFgyV1R3b3k1RlIvL1l1MUNlQlJEeUtLQXZDSXp1eGFYYzNnQlRxTnorTlZVY3FjYTJadkI5ZWllcU9YZmpiZTkwQXVsRzMrU1ZzNnJSL2wwR1U1YlJqKzl0TmlBS0lkblFQR1lTdDI1L0FOWGMrZ1UwdEtRQmVSQW9EY0NYN2c3UTNnWStPSGQ3Wmc2eXRIdWxMcHdDSUFKbWtpd2hXOFFDQXJ1djYyNElnak9SUEt5NnUweXlsRWdzWHpjS1MzenlKYTJhM0ErRlNYSG5EclZnK3hXdjhnekxNLy9abG1QZmZ2OEtFMzhzb1BlOENYSGxlQUUwWm4wVEd0SnRtNE1wN25zWTFNNThFd2hXWWY5ZjNjR3VOOGRjK0wzWTkvaXRNZXE4ZDBaeEtYTC93eHI3Q1FlRy9ZZWxOSCtLMmV4WmhWZEtEQ1pkZWdDbWw5bSt5RXJmTW5ZeDV2L2tWSnZ3ZUNKVCtHKzY3YnlhbURhSFh2K3dMTitQQmp2Vlk5djBmNExZdXdGVlFpZXUvZTZOUjRlMXIwS1dVZnVBVWhwSjBWVlNuNmVQWEFFS29MS2JkR2lFRVJCUkZXZGQxQ1lEYzA5TnpxOHZsK2hsL1ZuRnhIYjgrVFF1VG81c2Z3S1NuUitDWis2NFlZbnZHNmRIaG94Mi9MTDdzUDE5RmVrbHlISmxMa25zQmtoSUlWRUtJTGdrQ1ZTU0JLb3FjenJHWmxkRm9OUG8yZjNweWNYR2RLZHJkY0dDZnphMnhPVFpLakpFcW96R1hrblNPalFwc25EcHIxcXkzRFNweWNYRnhuVzdGdi9hRDVTM0lySVJtZ00yOENDR1VrTDRUZENWQ2lIRktPUFN0VzdmcWxOTHRoSkRwL0RIbDRqcDdGWngrSzNhZjRhOXlWZFBlYW1ydDdBYzFZNVNLQXNSd2JlYU1hQnBxYkI4YmpMZTZxcXJiK1czbjR1STYzWXJHdTk5M0NFUFpjSlNtWTFCWWJvMlk3UjdHSDZpWlo0dkZZcS96aDVTTGkrdDBhKy9IQnhzR2dockpPRG1YUUNCR0g1c2dJQ1BIQmtELzFyZSt0UjNBTWY2d2NuRnhuVVlkKzhhaVh6ZGxnWnBEamcyVUNBU0NRS2dnR0k2TkVYM3l5U2RWWGRkZjVvOHJGeGVYa3lnOStWOGpwYXF2MVRVZVlzTlFOUk51Zldld01lRW5DQkVnRUNGZFBDQ0VtSDF1RklDZVNxVmVjYmxjMS9KYnlNWEZCYVM3WVErblBEaVNVS0NCSUo3UVR1clhhMnRyMjVrdERLWHBBZ0tsNXRRQkNGS1VBRlFFcUFpcWkybXdBVll2bTA0cHBTMHRMYThNR3phTTMwMHVMaTdvRk5nUkN3S3VBUHg1UWZoOGZoU2U1Sy81NFVkL3IzZUFtZ1pBTTFsRkNLRkVFQ0FJQW1SWmhxSzQ0SEs1NEhhNzA4Y1dtWVVEMDdGVlZsYnVCdkErdjZWY1hGeUhVMjdBRlVCaFVRbDhQdjhwQ0hWcDNkeHZmcjNORm9hcUJ0UnNSeGFaUFd5Q2tWOUxnMDRRQkFGTW5zMkNtNnFxVy9ndDVlTGlPcEpRNEE4RVQ5blg2K3JxZWczT3ViVytpbWpha0JrdEhnSUVnY0NDbWloWTdSNW1LQXJqZjlTajBlaEwvSlp5Y1ozYm9oVFFxSkRkcWJWdHg4cnZmUVdmdS94aVRML3FQL0REdnpjREFKcWYvQ1l1dmVSaTQvb20vdHc4OUs5WlgvOVJIVEx6YTdiQ0FYVExpQm1UQm9JZ2dCaFFFd1VSa3VuWUdMaFJTcW1lbjUvL2lwN2V2bHpLYnk4WDE3a3BRb0I0VXN1U1U0dmg1ZnNXNDFsOEN5dWUrZytNVkdLSUlRQUFLSjcxTUxaOUlZRkUrOSt4NE1abmp1ZExIcnIyYzFmdHQ0V2d4bVVQUXlrMFZZY2twNkVtc283TnNHOU9TMGMxVGRPZTQ3ZVdpNHZMV2MzNDRNTWthcS8rSEVZR0FMZ0NDTEJINExwY2NCM251dUtlbnA1dDJkd2FJZENRc1hLUFVsM1hxSjUyYkZRUVJJaUNDRkh2N08vWXpMbFJBSG9zRnRzY0RvZS96bThnRnhjWEUzOWk0NTMvaWZ0M0pKR01KNEZmWEl2UC9RS0FNZ1YzL25rSnBycUc5amxlKytNeVBQamtkdXlQS3lpYWVBM21mZis3eU85c2ZOY0dOYXR3WUxSNTZBUklBODM0VE1sNEhPM3hPQVJQQkZWbFBvakVuUWFiZWVtNm5nRzMzTnpjelR3YzVlTGl5bFFlcnY3cE03Z2FlN0h5aHJuWS8vVy80ZDdweDdlSllkK1RQOENQLzE2Qk94L2NoS201Y2J5MjhuYjgrSHUvUGZUZTFwODBHc1pLdFlNTmxPb2doSUlRS2dvaVJLSWhxUko0d2lFRWpUWVBVUlFnZW5JZ3BDMmNrREV2eXBSVWRVM1ROdklieWNYRmRlSzBGeHYvK2lGcXYvcGRUQzEyQWE0OFRMN2xHNWg0OU9tWDRKaGI2ejlLUlVoNk94VWhBREhDVUVFVUlZb2lSRW1DSUlxaTVkak1rQlI5Ky91MHpzNU9Eall1THE0VHFIYTB0L3RSVkJ6bys1Q3JBZ0Z2MjQ1c1lhZ0Z0NHcyRHdBZ1NFTXRYUTBWUlJHU0tLYkJac0tOZ1pyVnp4YUpSRjVCZWtzOEZ4Y1gxd2xRTG5KejR6amNGck0rUW51Yjkvem1qUVAyYW1qS2hCckpQREhYT0NrMy9mK3lVQk5GQ1pJVzY2dUttbStaWTR5c0FkUmtNcm1CM3d3dUxxNVBySXcxZ2FOdzlSZEhvdTZSMytMbDVnU0FOcnp5MndkZVF2OUpnNHpDZ1hXd3BNRW9RUlJBb05ORWtrSVVDWFFLU0pJSWljWWdzWTZOeWJVUnBqcXFIVHAwNk8rVmxaVUwrZDNoNHVJYWlwcWYvQ2ErZkYvZnF1SjNicndZOXdPWTlNTk4rTVhuQXFpWTlYUDhWOXNTM0QvdlN2dzRya0FMalhqWHdhM1pHM01wVE9NbENCQmtCWDZ0Ry9HT0kyanNKSkQ5WlJpWG13TTVNQkpreElnUjZPM3RSVzl2TDBra0VraWxVa1JWVmFMcnVrQXBsWkRlek9wU1ZmV1BnaUJjeVc4WkY1ZXpQazFicW9ZcVNvRzNZMkVVVnB5OHJaeXFxcjQ0dktKc0pZQmU5RzJqTXE5dVFrZ0NRSW9Rb2hKQ2RGRVVxU1RKVkZFVXVOd3U2bmE3NFhGNzRQVjY0ZlA3RVF3RUlFaVNaRHEyak9xb1BSenQ3dTUrbWo5MXViak9MUkVDU0VSSFY5ZkoyL0hVM0h6b1ZZY1FOQVZBSllSa2JxVXkyQ1FJQWtSUm9GWnVUUkloU1JKa1NZS3NLSDNGQTNzUndWWWQxZSsvLy80TkFBN3dXODNGZFc2cFFFbWdLM1p5RHRXbWxEYjkxNDhXNzJMQWxyS0ZvVHJNSTRyTW5RYlcyRlFmdHlSUlNvTk5scUVvU3A5alkvTnNnaUNBb2FNT1FMdnJycnQ2VXFuVU9uNmJ1YmpPTFJVcENkQkVIRWVhbTA2NGM0dkg0ODg5dittNWxKTmJBNGc5djVhR216RVhhb2VhSk11UUZRVXVsd3VTSktVL2FQd2pLb29pMFRTTkNvSUFUZE1vNDlyVUF3Y08vTFdxcXVxNy9GWnpjWjFiNGVnRmdTaU9KTHB4dUMyTzJGRVJYY2tUYzRMdUs2Kzg4bllXdDZZQzFCeDhUM09JR3RKMWFKcEdOVTJGcXFhUVNvbElKa1ZJdlNKNlpRazlMcVVQYkV5dWpRMUhNMlpIUjR3WXNVdFYxZldDSU16Z3Q1dUw2OXlDVzZGYlJhRTdCa3FCekZVcG4weUpaT3B2bHkxYWROVG0xRklBVWdSUVFjd3dGRlFnb0NJQlpCRlFKTUN0RUhnVXdPc0N2RzRnNEFWQ2ZpQTNDQlRrQUlJc3k3QzVOdGdINDQxUkt3M3BTUVFlam5KeG5lT1FPeEhhM1hqZ1ZRZTNsdEhta2JGaXp6aDNUUlRUb2Fna2lwQWtFYklrUXBZa0tJb010MHVCMStQdUE1c29pdVpiYW9hbHpKSGhWblUwUHo5L0M2WDBWWDU3dWJpNFBxazBUZDgrWWViOHhnSGNtdFozL2xyYVhJbUVVRkVnRUFXUlNxSUlVVXpEVFpZa0tMSUV0eUxENDNiQjczVkRVQlFGc2l6RDd0eHNEYnRXRVFHQTJ0WFY5UVMvTlZ4Y1hKOVVCdzYzdmpDQVcxTU50NmFUOUpaM0toQkFFSWpoMUFSSWttQTROUkdLTE1GbHVUVVhBbDVQSDlnY2lnam1pRlhHN0NnQWJmcjA2ZXNvcFh6WkN4Y1gxM0ZMcDdSdTZsZS8vMzRXdDJiTWgvWVZEZEpnTTl5YUtGRFRxYVhiTzJ4dXplTkdNT0NENEhLNWtBVnVHYTZORFVkZmYvMTF0YmUzOTNGK2k3aTR1STVYUjlvNm4yMXE3V1NobGpTdU5OU0llWkpIdW45Tk1QWWFtQzBlYkc1TmtmcmNtcy90UXNEblJZNGRiRGE0c2E3TlBoaXZybG16NWtrQTlmdzJjWEZ4RFZXVTBvWWYzZitISFlPRW9kWkp1UVJBMnEwSkVNVjBiazJTUk1paVpCVU1YSVpiODNrOUNBVzh5QTBISUhnOEhqakJ6VlloWlVOU0RZQTJkKzdjYUc5djd4LzRyZUxpNGhxcVdqdWlHeDVhOTN6Q3lhMFJJR1VVRFRUQVBFZ3k3ZGhFVVRDS0JRSmtVWVFzRzdrMTJZQ2F4NFdBejROd3dJLzhuRkFhYkc2M3UxODRtcVg5STZQMVk4T0dEVThBYU9DM2k0dUxhd2h1clhIWncwKytaWU1hNjlqNldqelNSUU1JaEVDMGlnWnB0MmJPaENxeURMZExoc2Vsd08vMUlCVHdJUzhjUUZGZURnU2Z6d2UzMjIyNU5oWnc5dFlQVzY1Ti9mS1h2OXpSMDlQekdMOWxYRnhjZzdxMTltTlAvL0t4cDN0dElhanAxbFNRdmhWN3Bsc1RCVUxUYmkwZGhxYUJsbGtKOVhuY0NQZzh5QW1tM1pva2lSRDhmais4WG0rR2F6dWUxbzgvL2VsUGoxTksrUW03WEZ4Y0E3bTFQWGYvNW85dk9rRE5kRzBPTFI1RzBVQVVqUllQZXpPdURLL2JCYi9QY0d1aEFJcnljd0FBUWlBUWdNL25nejBrWmVEbTFQcGhWVWkvOFkxdkhPdnU3djQ5djNWY1hGeloxTnphL3ZRRFR6NDNXRzR0b3lGWE1OeWFKQXEwSDlRVUdSNlhLOE90UlhKRGNCdUxUSVZ3T0F6V3RRMVFKYzNxMm1iTm1yV0dVdm82djMxY1hGeDI2YnIrNXZSdi9IQ0hBOVFHY0d1QUtCQklnamxkMERkaDRKSmx1SlYwTTY3ZjUwRTQ0RU5lT0lpaS9GenJhd281T1RrSUJvT1dhM1BLdGJHdWpka2FiMjFyM3JoeFl6SWFqVDdLYnlFWEY1ZGREVTJIbjluVmVFakY0SlZRSFNCVVNCOGtTVVZCZ0NTSmhsdExRMDJSbWZZT2p4dEJueGM1d1FBS2NzUHdldnAybXdyNStma0loOE1JQkFMd2VyMFczRXpITmxUWEZnNkhOK2k2L25kK0c3bTR1RXlsVlBYNWtaK2J0OHZCcVEzdTFzUk10eVliQlFPUDJ4aWQ4bmtRRHZxUW54TkVVU1FuNCtzS0JRVUZ5TTNOUlRBWWhOL3Z0M0p0RGhNSkE3azJsUkNTT25Ma0NIZHRYRnhjbG5ic3F0K0V6R1pjQzJ5R1cxT0g2dFpjVm51SE1Ucmw5eUkzRkVCQlhoZytqenNUYkNVbEpjalB6MGRPVGc3TVFzSlFjbTFtTVlGMWJjWEZ4ZjlJcFZJUDg5dkp4Y1hWMWRPN1p2THM3eCt3UVMyUnphMEpSaVhVeWEwcHNnU1h5Mnp2Y0NIZzkxcnRIU1dSdkg1ZlcvQjRQQ2dxS2tKZVhoNUNvVkRXUW9KVGhkVGUxMFlJU1gzd3dRZVBBVGpJYnlzWDE3a3JDaHo4NitaL2JvTnp3WUIxYXhsOWExWWwxTzdXRktOZzRIYW4yenY4WHVTRmdpakt6NEhIcmZRSEd3Q1VsSlFnRW9tQUxTUjR2VjY0WEM1a0c1TFBsbXViT0hGaWZYZDM5NFA4MW5KeG5iczZjclRqeWEvZSthc09tMVBMNnRaSWhsc1RNODVaY3lreVhJb0NyMXVCejJzVURFSUJSSEpES0NuSWMvejZBZ0FvaW9LaW9pSmtLeVRZcXFUVW5FcXdyK2d6WGR2VXFWTWYwM1g5Ulg1N3ViZ0drZUk3NjM0a1ZkTmUvc3lYYm50akNHNU5NOXlhYms0WlNFYmZXcjhxcUhFeWJzQ2JidS9JRHdkUkZNbUZJa3Zad1FZQTVlWGxNQXNKWmtqcVZFaGdoK1NaR1ZLZGRXMDdkdXhJSGpseWhPZmF1TGdHVTZqa3JQdVJkdTVwZkthcHRkTStYWkFBa0NETUJpckRyZW5FT2tTU1dFNU50bzFOZVR6cGszSE4wenNLOHNJb0w4clArajBJN0IvTWtOUjBiUVAwdGxtdWpabElZSjFicXJpNCtPVmtNdmtiL3N6bDRocEFrWkZubFd1THhyc2Z2WERXN1I4YmJvMkZXdC9BZS8vejFxaElDRTBQdUlzMGZTcXVuT0hXMGhNR1hvU0Rma1J5c29lZ2ptQXJMQ3pNR3BJNmpGdFJTWkl5Q2dtc2F5T0VKTGRzMmJLS1VycURQM3U1dUxLSUNFRDFwVUJPQlNCN1B0VS9pcTdUZHgvNDB6UDJnb0dWV3lOQTBneEJtZlBXcUdDRm9HbW9aWnlLNnhTQzV1ZWlNQzg4NFBmU0wwQXRMUzFGZTNzN290RW80dkU0ZW5wNmtFZ2trRXdta1V3bWtVcWxvS29xVkZXRnBtblFOQTI2cm9OWjA2ZFJTZ1VBNnRWWFgzMjRyYTN0d2R6YzNKWDhHY3pGbGMxZWlFREp1RS85ai9IaG5qM3I3L2p2eCtJT1VFczdOa0xTQlFOQ05DTjlSUVZSaENqTGtGd3VTQzRYWkk4SGl0Y0xsOThQZHpBSWJ6Z01mMTRlZ29XRnlCMDJEQVVqUnFCMDNEZ2dGQnE2WXdPQVVDZ0VwOTYyTEkyN0dTRXBISnAyOC9MeU5xWlNxWWY0czVlTDYreFZQQjVmWFZOVHM0Y0pRVE9nUmdoaDErcnBBTktOdUtKSXpWWXlXWmFoR0p2YzNXNDNQQjRQZkQ0ZkFvRUFjbkp5a0orZmo1S1NFb1FHZ1pvajJJQjBJY0hzYldPSDVMUE5rdHFhZG5WQ2lOVnBUQWhKdmZycXE0OVFTdC9tdDUrTDYreVRydXZ2UFByb295K2lmMTZOaFZyS01Ec2FJVVEzSnBpc3RaOG0xRXl3ZVR3ZWVMMWUrUDEraE1OaDVPWGxvYWlvQ09YbDVVTXp3VTRmbEdVWlpXVmxLQ3dzN0ZjbGRUaHhkNkJDZ2dvZzlkblBmcmFwcmEyTmg2TmNYR2VoOXV6WnMvNDczL2xPTkdzSTJ0ZTNabXgySjFuZG11blVQQjRQL0g0L1FxRVFjbk56VVZoWWlMS3lNc2l5UEtUdlNjcjJGMFZGUmVqbzZFQTBHa1ZYVjFmV1hCdWJaOU4xbmVxNmJtNjEwaWlseEhCdFFpUVMyZFRiMjd2QzVYTE41MDhGTHE2elE4ZU9IWHU0dHJaMjd3QnV6ZG8rWmJnMWFvTE5iUGhublpycDF2eCtQNExCSUhKeWNoQ0pSRkJTVW9LaW9xSWhmMS9TUUg4NWJOZ3dkSFoySWhhTG9idTdPd051WmdIQnVLaXU2OFJXU0tBQWRFcXBWU1g5NHgvLytMOXo1c3daS3dqQ2RQNlU0T0lDOXUzYjk2bjkzbFZWZmVtZWUrNTUyUWExWHB0Ynk4aXJBYUNFRU90ekdDWUlBSkRHUnZxdHdSSHJZOGY3V0EwSU5wL1BoN0t5TXN1MWRYZDNXMkJMcFZKMjEwWTFUU082cmxQakc5TU54MmJtMjRSdmZ2T2JIZE9uVDMrd29xS2lGa0FKZjFwem5ldXFxS2o0dEg3cnphKysrdXFHVmF0VzlUaUVvTDJ3RlF5TXZKcHVPRFZxT0RScTV0TE1Ja0U0SEVadWJpNEtDZ3BRVmxhR3Fxb3ExTmJXRGptM05pU3dBZWxDd3JGanh5elgxdHZibXdFM3R2WERDRWRCMDRMUjEwWW9wV29hemtTb3JLeDhJeHFOL2s4Z0VMaVhQNjI1dUQ2ZE9uanc0Qjh2dWVTU0pnTnFMTkRzSWFocVRpWVJRcXk4bXIxWTRIYTdMY0FGZzBIazV1WWlFb21ndExUMHVLRUdaQ2tlT1AxV1lWdEEyRUY1V3dzSWRSaVNaOGV0VW9TUVpEQVlmQ0taVFBLUkt5NnVNMVIxUzZhaXF1cG1ySTMyLzd0NFBMNjZyS3pzYldTMmRsZ2hxQzJ2WmtITlZnV2wyYURHdG5aOFVrYzdKTEFGQW9HTUZwQlFLT1E0bFdDRG0xa2x6UmlTTngrSTU1OS8vbUZkMTdmd3B4QVhWMXJSdXJWWU11OGFUQjFmZzZxcUdveWZOQjJ6Rnp5Q3JhMW56dmVvcXVyV2xTdFhib0Z6QmRTQUcwMVNTbFZLcWFicnVxNXBtcTVwT3RWaHVUV3FLQXBFdFF2dDdURWs1WFE0R2dnRUVBcUZNbG83QW9IQUovbytwYUgrdy9MeWNzZHBCSWRjVzdhUUZFYk9UU1dFSksrOTl0cERqWTJORDFSVVZGUVFRcXI1MDVyclhGYnIxZ1dZUFc4ZEdvSVRjTzMxODNGREtSRGJ0UTBiTml6Rm5LMnZZY1V6RCtLNnlPbjlIaW1sRGR1M2IzOTZ3WUlGTVljUXRCZnBJZmNrcFdiQmdHaUVwRWVuS05WcEt0R0RoTWVIZ0dHQ3hHZ3ptbzhvQ05lY2x3RTFNNy8yU1VMUTR3WWJBQXdmUHR5eFF1b3daa1YxWFNkbVpRTUExWFdkYlFFaGhCQmgrUERoYjdhM3Q5K2ZrNVB6aStQOVhyaTR6aDZydGhYTEZxeERRMlFtVnExZmpta1d3RzdGTFRjc3dZeVpxN0JrMlZaY3VYd2FYS2ZSckRVMk5xNlpPblZxazgydFpZYWdsS1lMQmtUUVJNSHFWNE1rYU9qdVNhRTNucUJDWGhBdWx3dWlMSUFRRVc1dlptdEhhV2twaGc4Zi9pOTlzOEx4L0dPdjE0dUtpZ29VRnhkbkhFeVo1ZFJkS3N0eXY1RFVOcFdReU0zTjNkRFQwL01yL3V6bU9uZTV0Z1liamlxNGRQNUMwU0F4c2dBQUlBQkpSRUZVQm1wcEJTZmVnc1VMYnNDVmtRUmFiZm12WmFzWFlNYlVHbFNOWDRDdGFkK0hyUS9jaGhsVHg2T21xZ28xazY3QnpVczJvU25CZk1LdHQyRjgxWFFzV3JzYWkyWlB4L2lhS3RTTW40b1pDOWFpemlHZmxxamZnRVd6cDJQc2lJcUhxcXVyMzJlY1dpOTdFVUlTWUErUVRKL2NvWnVOdUxMTEI3OGtVSUhxSUhvNzluN3dBZDQ3bEFRaGNieS82Uzk0NUsvdkl4V0pvUGpJVTVnemF3NXUvLzJmY05zMWsxQlROUlZMNmdCc21vZWFxa2xZc0Qzeis5dTZZRHlxYXVaaEUvdkJwcTNINzVLS2k0c0hkRzFtT01xR3BHWUxpQkdhc3ZrMkFZQXdaY3FVaDk5ODg4MUNXWlp2NGs5enJuTk5kYS90UUJLMXVHS0tVNndad2JSYmwySmF2NDl2dzhwbFZiamkrdmxZVkZXTGFrU3hkZEVNekZtVHdPUWI1bVBwQkJkYVgxdUhsYXR1d2V6b0ttek9jSHNOV0xOb0ZhNmRQeC8zelE4aXVtMFZscTFjaU5sUkZ6WS9lQjM2dm92dFdIWnpIU28rKy9rbjlyZjhnKzFYNnhlQ3NsQURvRk1LU296RlQrbThtZ0ovVVNtS3ZWNzRQQkp5eHBZQnh4cnd3V0UzeGw0eEhSZVBIb054UlVVWTVnMUJrUko0ZnZrS2pMbjJSc3lmV1lXSkVRQk5RM2UvQzJiUCtXVGhYM1YxTmVMeGVOYjJEd1pzR1NFcHBaVHF1bTV2QVNFN2QrNFV0bXpaOHREMDZkTUxSRkc4bWovVnVjNGRKZERhR2dXVUNDSXMxNkt0YUdXZEZsd0lSb0lNbkVveDg3NzFXRDR0YVB6N1RWaXhIWmh3eTRONGRPSEU5TCs3L2pwRVdpZGg0YWEvWWZ2eWFRd2NGVXhlL0RqdXU5SDRnbE9tb0N3eEhUTlhyY0NxdXV1d3NMYnZhNDYvODRuTm56bXk0ZmtOOFI2blhqVjdGVlFsQXRHaFU1MVNuYVpTS1ZBSVVFUVpzaXhUYTdqZGx3NDlKYmtadTQ1NFVUbHVJaTQ1dndMRHk4cFFmU3k5UnEvcWxzZXhmbUh0Y1lmZWRTdVhZTjNCcWs4R05sRVVVVlZWMVE5czdEU0NiY3lLbUlVRUkrZkdGaE1JSVVTNDZxcXJtdXJxNmxiVzFOVGtFVUltOFNjODE3a0N0a1FpRFJFWDh5cmV2dVFhM0xEdWFOOEhBak94NnQzbERKeXFNWGxpa0lsWnI4VHl6VmZhUG5jUTFXVVJZSHNyb2dtZ2p4SXVSTW9pR2RDY09QTTZWSzFhaWUwN1dvRmE4KzhtdkZXdTdIMTYvdno1VVZ0T3JjZTRlbTM5YXVsR1hJbFFVSjFxdWs3VlpDK090U2RvM09WSFVYa0llVVpyUnlBUWdCU1ZJWW91QlBNTHJXWmM4VjBDSUlEYXliV2ZJSjlZajYxYkc0QXhDejU1d2o0Y0RxT3lzdEtDVzdZS0tldmNUTGdaVXdrZ2hKakZCSUVRUW1wcmE5OXJhbXI2YlVsSlNTNGhaQVIvMG5PZC9US0JaZ0RPZURYWDNuSWZWbDJiQUJERnRtWHpzV29vb1ZpMERtdFhyTUNhVGR0UmR6Q0dwR1hRcXROSUdvZ1VaVlVvQTFEZjBBUWdBa3BSMzlQVDl1ZDdaMTdWWW9OYVh3V1V5YXNadVhNcnJ5YkxMaXJMTW1SQnAycWlGL0dlT0pvYlBnTDFUY2Jra3JSamt6c1VTSklMNGNJU1ZGWldJaHdPLzR1UFpTc2FXZ0ZsWXZXL1Zva3NLeXV6QnVSWnVHWEx0UmxRTTRlL3pMQlVNeDRjQWtBb0t5dDcrZWpSby9mbjVlVXRBaERoVDN5dXN4MXNrVWdRU0RhaHFSVkFtZUcxcXFkZ1dqVUFSTkc2U2hsQ2pxa09EOHllZ2VXdEV6Rm40WElzckM1RDBBWFVyYndaQ3pjTjFUdGFPbnFndlh2MTRjT3ZOQ0p6c0wzWElhK1dNdk5xNWpKMWRyckE3WGJEazErRVNpV0ZwcjM3Y0tUaE1EQ2hDams1T1ZEYVhaQWtEL0xMS2xCV1ZuWkNIOVYvdWNWaTFLaFJHYTZORFVudEozOVFTdGw4bTI0T3d4cmhLU0dFRUVvcHljL1AvM3RuWjZjL0ZBb3RCdURtVDM2dXMxbTFsMDVFWU0xVy9HMVRFNzcrOVUvNEF0K3hCbXQyQVpldWVCQ0xyK3NMVVJQQklRWjA5ZStnQ1VDa3FxejM0TUdEcTY1ZThYWWQrdG82elBDVGRXdjlRbEJDcUs0bWswaUpMbmg5TWhSRnNmSnEza0FleXZNUG9MTXRpVlFnalB6OGZMaU91cUVvUGhSVmpSclNMd0Fna1VIZi9vcWdLZ0lrbTVxT3I5M0RTWVFRakJneHdwcE15TS9QdHlZVDdHTlhaZ3VJYmZHeU9YSmx0b0FrQVNUQzRmQ2Z1N3E2ZUJzSTExbXY0TFJiY0gxcEV1K3NXSUJINmhMOXdxdlcxdVFRN0ZZQ1VRQ0pLUFAvSitydy9JNVd1eHNERUVOOVhUMGJ3MkxUcWswNGlER1lNZ29QR2VOU0xOUjZHYmhsbkxGbXZuN05maldCZ0ZJOWhTVHBLeFo0dlY3NFBDbkU0Z1NDUHc5bGhma29LaXBDUldFSWlxSWdtU1NELzN5UkNDS0lvYjYrS2VQbmU2MHV4dnlqYWt5YlZnWHNXbk5pbW1JRGdRQ3FxNnY3RlJJMFRjczJJRDlZTVlGUVNvbmY3MytzdTd2YjQvRjRidWRQZjY2ek54cWRpSVVQTGtMZDdLVllPbU02bnIvdVNsdzZwaFE0Mm9EWE5tM0F0b1lBSnR3eUV4TUh0SDNYNHNyOGRWaTNaRGJtTlZ5SmFyUml4NllOMkhFd0NTQ0tSQlFBVTJ2WXRYdzJaalJjajJzbjVPUG9hMnV3K205SEViNzA5Z2QvTUtuZ0h3Nmhadzh5anlPeU9UV3pFVmVpYmg4UTYwclMrTkVXSkx1RHlBbW4wQk5ydzc3Mk5yUW5YYWllUGhVWEdJZEdqblNOUXVpSkxWaXpaQWx3eGFXNDdzWnBLQnZvNXl0ZGhWWExic2E4Z3pNeHdYVVE3MnphZ09jYkFEQ0w0R3R2V1l5WkcrYWN1Rzcvd3NKQ3gxeWJxcXBzUDF0R1dNb1dFNHhQbzluRDBsbXpaajM4NXovL1dYRzczZC9tcndDdXM1WnR0Vi9INDV0cjhjaXlGVml6ZFMxV3JJc2hxZVNqcW5ZYWJsazVIL092ckI2NFNoaWNocVdQTDROcjBRcHNXTDBTVzExVm1ITDlmWGg4d3ZOWXRMSUpCNW44SFJEQUZZc1dvMnpiQ3F4YzBvQ29xeFFqcjczN2tmcFhmN2tWL2FjS3JCQ1VFQ1FvTlZmb1dWRHJhOEtWWlNpS2o1YUdLSHFpY2NSN1kyZzlITU5SUVVHNHNBcFRwMTZPYS85dEpFcExTMUZWVllYeXkrL0U0amVic1d6REtxeG96Y2UwRzZjTkRQOUhseUc2WUFVMnJWcU9yWUVxVEx4dU1aWk5YSUdGR3pJZmgrV1Byd1JoRDNJN0VkcTllemQyNzk2TnhzWkdIRHAwQ0VlT0hFRjdlM3ZHMFVjR0FBa0RRR0wwdXdrQVJFcXBCRUFHNEtLVXVuLzBveCtGZi9qREg5N2ljcm5tOFpjQTE1a3FUZFBRMU5SMFpwK3h0dlUyakorekZkTld2WXY3REk3RVlySGZmL3ZiMzk3OGh6LzhvWWR4WlQwQXVvMjNQWVFRcTJCQWpHMVQ3UGxxek5IZTFobHI1dnluZWI1YVNVa0poZzhmanBxYUd0VFUxSnpVSC9PRXoyZU9IajNhQ2tudDdSOVpYSnQ1NGk2UVdTbTF3dEtmL09Rbm5aRkk1T0c1YytjS0xwZHJMbjhKY1hHZEdNVmlzVDhzWHJ4NGl3RzFKQU8xSGdacS9VN0RkYXFBc3NVQ244L25lTHgzWldVbFJvOGVmZEovcmhNT05rSUlSbzhlYllITjN2cWhhWnAxNUMrVGI4dFdLYlUrNTNlKzg1MDJSVkVldnVtbW04RGh4c1YxWXFDMmRPblN6U3RXck9oQ1pxR0FiY0RObGxmVEJVRmdOMHhSY3hHTC9jQkkwNjJaVUdPUEJ2L1VnQTBBUEI0UFJvMGExYTlwMTliUDFxK1lZTGcwMDdXeGNDT0VFREp2M3J6V1JDTHh1N2x6NStwdXQ1dUhwVnhjbjFESjd0anZGeTlldkdVQXFMRk9yZC9xUE9QQVNHcDNhdWJLdkZBb1pCMFlXVnhjaklxS0Nvd2FOUW9lejZuWmRpL2VmZmZkSitVVG13ZFFtbkF6SzZRczNHelhZQmluQUxCeDQ4WVVJZVQ5aXkrK1dKVmxtWTllY1oweG9wUWlHbzJlZ0E3Nms2aktxM0hEelRjODh2U3kvMi9MNzM3M3UrNXNUZzBPa3dWc29jQ0Vtc3Zsb3V3SnVQYVZlV2FoWU15WU1jalB6ejlsUCtaSlBRT3RzTEN3M3pTQ1E0VVVUSjdOcXBRQ2dHMWdIb1FRVUVxeGRPbFN2UFhXV3crdVhiczI2ZlY2ZVNzSUY5Y1ExZEhSOGVBVlYxeXg5YTIzM2twbWMycXdIVVBFVmo4eks2QjlUczNjMnM3bTFJcUtpbEJSVVlHUkkwZWlzTER3bFA2Y0ovMXd4L0x5OGd6WHhrNGoyRjFiK3BjZUpRQ29xcW9tM0RRMkxEWGh0bkhqUnZoOHZ2K054V0s5ZnIvL2R2QUpCUzZ1Z2RUYjJ0cjZVRUZCd1QvUS8vVGJnYUNtRVVJMG9lOElvcXpoWnpBWVJEaWNuaW9vS2lyQ3NHSERyT2I5VTYxVGNtcHRkWFYxMXVQRG1WTjJUVHR2NWRwVVZUWC96aEZ1QUJBSUJQN1kwZEhSSFE2SGJ3T2ZMZVhpY3RMUmd3Y1ByakltQ3RqWnp4NWIrT2tJTldiQmNRYlVuRmJubVZBckx5L0hpQkVqVUYxOWVrNzlQMlhIY2RmVTFHVGJpK0RvM0V5NEFlbitvQUhnUm5OeWN0YTN0TFIwUlNLUmIvRlRRYmk0d0JxRit2cjYrdFVqUjQ2c0c4U3BKYkpCamMycFpRcy9uYUIyc252VnpnaXdBY0RZc1dQN3dTMEwyQ3k0bVFtM2JIQXovMXhZV1Boc1kyTmpkTml3WWZNRVFiaUlQNlc1em5WcG12Yld1KysrKytjTEw3eXdFZjFuUHdkcjZiQ2dObGhPellSYVlXRWh5c3ZMVVYxZGpiRmp4NTdXbi8yVWdvMFFnckZqeDJaMWJRNi9iVmdINXdnMzQvTlNTaWtkUG56NFAzYnMyTkU1YnR5NGI0cWllQlYvYW5PZDhUcjJ1NVB5YVZNcGJmT1diYnVldm1ybS9TMU0rR21mL2V3aHhycThUS2hSalJCS1JZRlFVYUJVbG5USW9nNlhwTUl0cS9BcUtmamRTUVE5Q1lTOVBjanpkNkV3RkVkNVhoVFZoWjBZVzk0R0VuMzkzQUViQU1peWJNRnRFTWZHNXR1eXdZMGFINmRtYURweDRzUVAxcTlmdi95YWE2NXBWUlRsYS95VnczV3VxYnM3K2NURGoyMTdmdjRkZjQ0T0FMVmVBaVJBWUt0K1FpTUVhYWlKaE1xeUFFVVc0WEpKMU8yVzRmVW84UGxjQ1BqZENJZTh5TXYxbzZnd2hQTFNYRlFQTDhEWW1sTElrbmphSDRQVHN2TE83WFpqN05peGpuazIxcTJ4SVNraEJLbFVLbjBVU1ByLzAvcllsdW5jWnN5WWNiQ21wdVpYYjd6eHhoRy8zejhmZkxVZjE3a2h0YTA5L3RENGYvdXZsdzgyeCswN0N0anoxRXlvMlp3YWRJR0FDZ0toa2dFMVdSYVE2RXpRenFBTFkzTFNVQXNHR0tnVmhGQldtb3ZxNFJHTUhWTUN0MXMrSXg2STAvYUM5L2w4RnR6c1lMT0hwWVFRYXVUVDdLMGc5Z2tGYXNKdDkrN2RlaUFRZUt5bHBlVndKQks1aFM5bDVqcFR0ZjJlKzNIejBmOFg3LzY2OWhQdkRhV1VOalR1TzdxbWVzS2k5NUc1VGFyZmVXb00xTlNCb0tZb0luVXBJcWlRUkZLUjRmZTVFVENobHVkSFVVR3dEMm8xcGZCNVhhaC85cC9Zbmo4T04zN0c3L0JkeHJIMXZtZXc1T245YUlwSmlJd2JoOFUvbVk0clM4NGlzQUhwYzl6R2poM3I2TmpZdkJ4Ny93YUJHMldkR3dCYVdGajRiRjFkM2VGUm8wWjlYUlRGei9LWEVkZFpaOU5VYmV2Mk54cWVubnIxTDV5V0dkdVA4MDZBOUIzcDNRYzFRZ1VCVkpJRUtrdkVnSm9NdDF1QUpoS0lMaGNDQVRkeVdLZFcxZ2UxUU1BTlFFWGRjNjlnWlVtVkk5aGFuMzBHdHowdFllbGp0K082a2w1cy9kRWF6THZqRFd4KzdDS1VuVTFnQTRCUUtHVEJiUkNvOVlPYmtXOWp6M096Z0diQVRRZWcxOWJXdnIxNjllcERNMmJNK05qdGRzL2hMd1d1TTFXSlo5ZGgvSVBBamFNVDJMcXpEYTFKRjZiZE5oUExQNThIRjFxdzdEL1dZUHZvS3JqMnRLQXBsb0JZTldiMWVTUFZMYis1NXk4eFpMWnoyTU5QYSs2VFVxUUVRalFRNkNiVVJBRlVUZWswbWRRQlFxZ2dFNVNWeXZCNlJHZ1MwTzEyR1ZEelFEdTBIMzk2TG9aTzNZdnlDOGZqaHo4ZWp1dUMrN0hrUDU3QzJrTWFZbGlEU1hzdXdlTVBYNFMrTUVuRmp1Y09JZmp2czNCZGlRVEFqMmx6eHFINkt4OWllK3dpWEorb3c3eXZiRVhrWjdkaTZXZk9BckFCNlkxWEE1V0hUY0FSUXN5TEVrS0ltWE16YzIyNnJsTzJ2NDExYmpmZWVPTWhBUGUzdGJWOW5KdWJld3VBWXY0eTRqb2pkZWdZY05jc2JQNlpIOUZYbjhIME8xN0Nwcy9PeEhVQkFFaWdWUm1EOVgvNVFuUHk0LzEvTEp0d3o5dGIrNWFxSkJtSXNVZDVKd2hCa2xLa1FLQUtJQm9JTklHQUVvSG9va0JBVXhyVmlJQ2NQQmYxU3hUdHJRbTBkSXNvSzNCQmxRVW8zblQ0NlRuNk1WYnZDdUsySDgvQXZNdHo4ZkZqeitMbWIyOUc1QzlYWWZGZmJzV0UyMytOWlNVMzRPVUY5aEdxWHJUR1ZFUktHQ2VYNzBjRXZXZzlDbUQ0TU54eTE3OGpPTzRzY1d5bWNuSnlNdURHUUt3ZjJPek9EUUJoNWtyN09UY0F1dUhlYUY1ZTNsL3I2dW8rSGpWcTFFMmlLRjdPWDBWY1o1eEtxakRUQ09XQ280ZWhPdmtHV21NQUFnQWdvbVp5eFV0N3QzKzQ0WktyZnRHRWdiZXo5OXBDVHhWSWg1NkVRQmNFUWdXQlFKSUlKUnBCVWdjbGdnaVgzNFVSdVVFb1hpK0NBUWtwUlVEVTcwTnhnUXYxcjNXaCtrdWZ4N3pMaHlFbjdFWE9iWmZodXFmWFljMC9wbVBLWUltZWZxc2JSQUFxWWtrQThHUGlaLzFuVHlocWg5dDU1NTNYRDJvRFFJNlN0UHJsM0N3YjE5Y09Zb2FtV20xdDdkcy8rOW5QR3Ivem5lL3M4bnE5L01oeHJqTlhSalVoWVd4ajZVbHBENy95Mk5xWEgzNXVXNDh0bjlaLzd5ZVFwRUNLV0ZDRER2UkJUUlFKbFNRQ1dSS2dlQ1hxN2traDJ0Nk56clllQkNLNU9ML1lqWnl3Z3FSYlJHY29pUEl5TnhwVUwyb3ZISUdjc05kTUpxR3FSTVh6UjNzeDZMaTJZditBQmtCQ1FEbnhEOXNaMXdZUkRvZUhCRGQ3V0dxK2J4eU5wSnRBWTRvS09pSEVkRzc2SFhmY29kOXh4eDMvZStEQWdiMmxwYVUzRTBJbThsY1IxNWtxcXROM2R1MDVzdjd1VnhyM0FvMnFRejR0dzZVUmdpU29CVFNORUdpZzBFRkFCWkZRU1NCVWt0THRISW9pVWdrRXZrSS95djBLZkxLTzVvK080dDJtZkV3WTRVZlNJNkV0TndjanF2TVFyWGdmcjBaMTVqdUxvK0dvaEVqK1lHZFF1QkhKbDlCNktBNGdsUDdRMFRoYTRVUGtKSnhtSkp5Sk56RVVDbUhjdUhFWU9YSWtoZzBiaHVMaVlrUWlFZVRrNUdSYjdVY1ZSUUd6Mm84eXEvMDA0NHoyRklBa0lTUkJDREhQYys4dUx5L2Z1bTdkdWgvMjl2YXU0aThmcmpOUnFxNnRmdkdKTGY5VE8vbC9kaU56ejZmMVBHWXVhMFVlTloyYWNaWmEraGM4Mjg0aEdJMjNJbExIZXJDL1RZWHNkU09VNDBlK1g0TGk4Nkc0S0loOG40SkFRVDdHamFuQkYyY1BSOTJxRjdEaGtBcWdGenNlMllvTkdJTWIvaDhKZ0FTWFMwS2k3UmhhRS8wOTFKVExoaUg2M0hhc2JWU0J4REZzV3ZVTzZzZU53cFJBR3BBN1hteEFmZUlzZFd5bUFvRUF4bzBiQjBFUUhDOUNpUDJ0NWR4U3FaUlpNV1dMQ3BRSlRVMzNwZ0hRdnZTbEx6VUIrRTFUVTlQT2twS1Ntd2doRS9qTGlldDBTOWZwdXgvV3Q2OWYrK0diZTdEc1RaVUpQWk9PTG8yQkdhVjkrd2xJdWo5TkZ5aEZTdGRwVDFLRXp5dENVU1RxZGtsd3UyWGtqMUNnSEl6aG5UZmpvS0tNZ29waG1IMVZHU3JLdlVnRVhEaFlXb0pBd0kzQTU3K0FCNDgrZ3lYLytXc3NpRW1JakI2RHhiK1pqaWxHeUR6bCtuRW91K01wVFAzUFMvRE1FeGVEYlI0Tlh2WHZlUERRYzFnMDk5ZFlaUFN4M2ZlVGllbFdqNlA3c2ZKSFcxSDJtMXV4K1B4Ly9iRTc0VnVxVHJSNmUzdnh3UWNmb0w2K0hnY09ITURodzRkeDlPaFJkSFoySWhxTm9xdXJ5OXA4bFVna3pGMExoTmwrQlYzWENhVlVNQzhqYXlrQmtDbWxpcEhKY0FGd3JWcTFLakpyMXF6cnZWN3YvK0V2TGE3ajBTZmFVcFZsVmpRYTYzbjBnZjk5Y2RzZGR6OFZSMStCZ0IyUFlzUFFkT2dKTnZRa09rSC9Jb0VzQ1pCbGticVV0THZ5dUdWNHZhNk1pWUw4dkFDS0NrSW9MOHV4eHFUT2xJbUNUNzFqc3lKenR4dm5uMzgrUkZIc2Q3SHV6ZWJnc2hVVktKTjdNNHNLT3RKVlV3MkFPbWZPSEczT25Ea1A3ZDI3OTYycXFxb2JSRkdjeGwreVhLY3M3RlQxbDNlK2YrQ1pDeSs3OTJNRFVuYVh4dWJVa2dSSVprd1JvSzgvelhCcVZCU1lJb0VpVWtXUjRIYkpjQnRROC90Y0NBWTh5QWw1a1ovSHpINVdGV0RzbUROajl2T3NBeHVRSHB3ZlAzNDhKRW5xQnpiN1d3WjJWQkFFSWdnQ1ZGV2x6TDZGOU42L3Z0RFVxQlFSelF4TkFhaWpSbzE2ZmNTSUVUdGZmLzMxNjNKeWNtNENVTXBmZGx3blM1VGk0SkhXWTA5K1p0cFAzbWhLejNteVVFczRYRWtIbDlZWGVwcVRCR0pma1NEdDFHUzQzUkxjYmdVK2IzcjJNeFR3SUJ6MklXSkNyU3dYSTRZWFl1eVlVcHlDaFZMbkx0aUFkSHZIZWVlZEIwbVNqZ2R3L1NxbWhCQnFoS1pnblp1WmQwTjZHNzBHUVAzb280L1UzTnpjOVJzM2Juempzc3N1KzZMYjdiNkp2d1M1VHFoQy93ZGRYVjFyL3ZyWHYyNzc2bGZuZFF6aTBneWdFUk5vS2VNWHNYVitHck9iQUpJa09lNzhORSsrdGUvOVpJL3pQcDJIUko1VFlETlZVMU1EV1piTkNpaU1OV0NPSWFvSk4rTXRZZUFHUFMzclNDU3pnZGZKdlYxOTlkV05BSDViVjFmMzZzaVJJMmRLa3ZUdi9CWEo5YThxbFVvOXYyUEhqazJUSjA4K3dBQXRHOVNTRE5SVTlBMndteEdIdFd6Rk9NYmJmSjFRUlZGZ1B5RFNoRnB1Ym03R2lyelRlWnozT1EwMklMMUR3V3p2TUM4V2NFNmhxWEhEcmRDVXFacGFybzBKVFRYR3ZWbFBvdHJhMnJjQXZOL1UxUFJDY1hIeGwvaEp2VnlmUkxxdXY5blEwUERNeUpFamQ1bS9QRzFBU3pxNHRKU0RTOU9aaXhxLzJMTkN6ZXYxd3V2MUloQUlXSHMvQ3dvS0xLaU5IRG55dEN4ZTRXQmpWRjVlbmdFMzgyYWFvYXJkeFJtZ3MrQ1dTcVVvSWNRODhOSmVXTkFad0dXNE53Q3Bzckt5RnkrODhNSi9QdnZzczFmbTVlVjlpUkJTdzErdVhJUG4wZWllNXVibXA2ZFBuNzVqMTY1ZEtwTWZZM05wN051a0RXb3E4MHZYQXBxNUVrOFVSZmFYUFhXNVhCbFFNNWV1bUhzL0k1RUlTa3BLckdYR3AzcEYzc25VU1Z1WWZDcGsybW1uZkp6NWRvQnhMSHRhMUp3cmhRRTRHSEN6R24xTjJBSFFtNXVidGVYTGx6ZWtVcWtYTHJqZ2dtYTMyMTFDQ01uaEw5OXpHbHlPQzVNcHBZMnRyYTJQTFZ5NDhFK3paOC9lZi9Ub1Vic3I2M2RrTjlMTFZYcnQrVFJtY2JIVFJuWW9pa0lWUmVtWFMyT0J4aTVkcWE2dVB1WExqTGxqRzRKeWNuSncvdm5udy96dHhFd2daT1RoMkN1UlNEaUdwb3g3TTRmckJWdDRxZ0ZRamZBMEJTQjE3NzMzSnUrOTk5Ni9MRjI2OUlWdmYvdmIwME9oMEV4K3FDV1hBYlNHMXRiV0RjdVdMWHZybDcvOFpTK1RHM1BLcGJGaGFBcnA0NFZVUW1CR0N4cEEra1lGQVVwQWFQcXBTa0JCUUNtb1RnRktDWFFLYURxRnBnT3FScEhTZ0pRR0pGV0toQW9rVWtCdmlxQW5SYkQ3b3dNQURweFZqLzJuMnJHWmttVVpoWVdGanFlQURISGUxRzdnekJONzJSTkM3TlZUeTcwQjBMWnMyWkw0K2M5L3ZyZTd1L3Y1Q3k2NG9Nbmo4ZVFTUWdyNHkvdmNjMnpCWUxDdXBhWGxEOS83M3ZjZW56MTdkdU0vLy9uUFhnZUgxbStucHkybnBoSmlnZERJcDZXZmk0UUlFQVdSaXBJSVNUSnlhYklNUlVuL2NuZTUzWEM3UGZCNmZmRDUvQWdFQXdpRndzakp5VVYrcEFERnhTVW9IellNVmRVaklFbnlXWGt2enZqSmcrUFZ4eDkvaklhR0JqUTFOVmxUQ2gwZEhZaEdvNGpGWXVqdTdrWjNkemQ2ZTN1UlNDU1FUQ2JOVGZXRVhlcXM2em94TCtOeE1xY1cyTWtGaVZJcUE1Q1JQcnZBdXFxcXFwUlhYbmxsYW1GaDRUV0NJRnpNWC9abnY1TEo1UFkzM25qamhhOTg1U3Z2TnpVMW1TTk5yRU96RndneUhKb3gwOHlNUWhIemx5aGxLNTVtb1l3dEVHUXJFcGp0SEdiNFdWWldocXFxS2xSV1ZwN1Y5K0tzVzNKU1dWa0pqOGRqRHNlYmVZZWhGQmlvVVUwbHFxcGE0YW5aOTJhNk5TTTgxUWNJVDVNQWxJYUdCcVdrcE9RRkFOdjI3dDA3b2JLeWNyb3N5NS9uTC8relQ0bEU0bSs3ZCs5K2RjS0VDWTBNek5pd00ra0FOUloycWdFMXE5cHBnSTJheFFIanVVbVo1NjRGTkRPbnhoWUovSDUvUms2dHVMall5cW1kVFVXQ2N3WnNBRkJZV0FpdjEyc0J6dTEyZzMwUzJPSFcyOXRyQVM2WlRHYkx2VkZLS1dIUGVEUFBkMk9lbUNuRHdWbUFBNkNNR2pYcWRRRHZ2UERDQzA5TW1qVHBVci9mZncxd3dvOTU1enExWVdkVExCWjc3c1VYWDN6N2kxLzg0dEVzUUhPQ211bk9yR0YxSTQrbTI2dWRCdFJnVmp6TjU2dVRTek9oWmk4VW1PMGNadU50SUJBNEorN1BXUmVLMm5NZWUvZnV4YjU5KzNEbzBDRzB0TFNndmIzZEdxQ1B4K1BXQUwwWm1ocEQ5RWdtazFCVjFYUnZHZUdwc1hoR29KUVN3OEdaNGFsNXNTRXFHNnJLQUpRYmJyakJ2WHo1OHNrRkJRV1hTNUxFVC9IOUZFbFYxUmNQSERqdzZ1MjMzNzdycWFlZVNnMFJhQ2s3MEFDMktKQUJNOTJjZDJiRFR0YWx5YklNdHBYRFBra1FEb2VSbTV1THdzTENqSFlPOG1tZGorSmdjMVpUVXhNKy92aGpORFUxb2FXbEJXMXRiUVBtM2N6Y1d5cVZnbmxLQ0FNNFlxd01KT3cxQU9Da0xJQ1RBY2liTjI4dXYraWlpeVlIQW9IcHZCL3VqUDBGdWFlenMvT2xiZHUydmZ2RkwzNnhqUUdTRTlCU1dZQ20yb0ZtSG54cWhwdDJsOFlDemV4UE0xM2FRUG0wdkx3OEZCWVdvcXlzREpXVmxTZ3JPL2VDZzNNQ2JBRFEyZG1aVVZSb2JXMUZSMGNIamgwN2hsZ3NaaDEvMU52YjYxUllnQUUyWXJvM0ZuQk1nWUVGSEZ0a0VBMEhaNGRjeHZYZWUrL1ZWRmRYWCt6eGVDNEhVTUtSY2xwaGRxaTd1L3VsdXJxNkhaTW1UZHFQdmlyNFlFQ3o1ODVZVjJjUE9hbDVJQU9UNDJWZEdqdnI2Umg2c2syMzdNeW5XU1N3OTlSeHNKMkYwalFOOWZYMTJMOS9QNXFibTlIYTJvcTJ0alljTzNiTU90dXRxNnZMT3R1dHQ3YzNBMjRPN3MwTVQ4MHozd1lDM0ZBZ1ozNU0ycjE3OTdpS2lvcUwzRzczWlJ4eXB3NW1QVDA5Mno3NjZLTjN4NDhmMzJnTEY1MkFwZzRSWnYyQUJtc1BCeWdSQ0JSWjdoZDJzaTdOTEJDNFhDNXIzdFBuOHlFWURDSVVDaUV2THcrUlNNVEtwMVZYVjBNVXhYUDJYcDVUWURQVjNOeU1mZnYyNGVEQmd6aHk1RWhHYUJxUHh5MjRzWWRYc25CakFjY1VGd1lDSERIQUpqaUVxWklOYXJMdFk5TE9uVHRIVjFWVlRmQjZ2UmNUUXNaeUJKMDQ2YnBlMTlYVjlkcWVQWHZxTHJyb0l0YVo2UXlZQmdLYXlnQk5wWlNxUnFYYzZuRTBONld4UURNcm5icXVVMEVRNFhhNytnSE5IbnA2UEo1K1EreG02RmxRVUlEUzBsSlVWRlNndUpodmxqd253UVlBM2QzZGFHeHN6T2gzYTI5dng3Rmp4eENQeHhHUHh5MjRPWVdtV2NKVEMzQU9PVGpDT0xpTVhCd0RPQ2ZRWmZ6ZHhvMGJpeSs4OE1MYWNEZzhRWmJsaTJGdHh1QWFvbzZsVXFuWDJ0cmFkdjd6bi8rc256RmpScHNCSUgwQWQrWUVOZmFFalg3RkFNYWhXYmt6Tm9kbUZnWTBUWWNvaXZENXZPendlci9RMDRTYTMrL3YxOHBoaHA3RGh3K0gxK3ZsZC9oY0JwdXBBd2NPNE1DQkF6aDA2QkJhVzFzSHJKcXlvYWt0OXpZWTRNQVdHV3lRTTUyY0dhYUtkcGc1QVE2QU9INzhlUG1SUng2cHFxcXFHdTMzKzgrWEpPa3pBUHo4YVoyaHVLcXFiMFdqMGZmMzd0M2I4STF2ZktPcHJxNnUzK1NJTFhUTUJqUVdadXovbzl1QVpqazA0NElkYUdiWXFhb2FGU1VKQWI4dkEyaHNiMXEycXFjNXhGNWVYbjdXbk1yQndYWUNGWXZGck5DVXJacWE3czFwcjBJVzk1WUJPRjNYN1ZWVVpBbFQ3WkF6UTFVckwrY0FOc24yZDJKRlJZVzRaczJhWVNOSGpxd0toVUtqWlZrK2p4QXk0aHpMazMyVVRDWS82T2pvK0dqMzd0Mzd2dmExcjdVME5UWHBObGZtNU02eXVUVHI3OHhtYk52bnlJQ1p6YUdCclhLYXgybXhoWUZrU29Va1NRaUhnaGt1elF3OTdRMjNiTlhUREQzUGxkNDBEclovd2IyeFZWUFR2Y1Zpc2F3OWJ3NjVOd3R3cG5zeklXY1BVeG5BT1lXcTluQlZ0QUhPNlgzUmZ2M2lGNy93WDNIRkZTV2xwYVhEL0g3L2NGbVdSd2lDTUJyV0t0NVByUks2cnU5SkpwUDFzVmhzMy83OSt3OCs5OXh6TFhmZGRWZVBDWmhCWUpZTmFobnZNODRzSTh4a1EwM1k1b21adzAySXBRaVhBQUFHR1VsRVFWUXRtREV1alRLTnRrZ2tVNUFrR1htNTRheTlhWUZBSU1PbG1hRW5kMmtjYkVOV1YxY1g5dS9mYnpYMDJudmVzaFVXc2dGTzA3VEJBR2QzY1NiZ2lBUGtCQWZJRGZhKzZPQUdoZlhyMStmWDFOUkU4dlB6Qy8xK2Y0a3N5OFdpS0pZUlFzb3g2RXJ2VTZaZVN1a0JUZE1PSnBQSjVuZzgzbnpreUpIV3VycTZ0aTkvK2NzZFlBNG1HQVJtMlJ5YTQvdjI1RDhMTS9RdEFLSnNNY0IwWndBZ1NWSS9vTEY5YVd4eG9LYzNtVDdFb1NDL1g0SEFxVGV0cEtRRXc0WU5nOC9uNHk5V0RyYmoxK0hEaC9zVkZ1enV6ZDdVYTA0c09MZzNxL2VOQlp5bWFTYll3UFRDd2NIRjJTRm5BWXFCM0dDWFlIdGZzTDF2NWY5Ky9ldGYrOGVOR3hjc0tpb0toa0tob05mckRTcUtFcFFrS1NpS1lsQVFCRDhoeEU4SThSRkNQQVlJelFNQXpNOEpCZ3pXMmpoS2FRK2x0SXRTR3RkMVBhNXBXa3hWMVdnaWtZaDJkM2ZIT2pzN284M056YkdkTzNmR0Z5eFkwTTNBaTlwQVJnZUFtVzV6V05wZ2wvMjh2V3d3WTBGbXVqTm1TeG9GQUVWUkxKalpXamd5aWdPeUxLTzdKd2xGVVZCU1hHQTEyOXBkR2xzZ0tDb3E0aTlPRHJaL1RhbFV5aW9zSERseXhOcG5PdFNtM3FFQ3p1YmlXQWMzRU9RY1ljZE1Qd2dEUUUxMEFKdjlZci9PUUJjYzN0cmZ6MGlET2J6UHZoM29zb1BNZm1WemFmM2VONDkrZDRMWVlEQXozN2Z0MUlBb2lxQ1V3dVZ5WlFXYXZlSVo3K3FGeStWQ3hiRFNqR2JiY0RpTS9QeDhGQlFVV0FVQ1daYjVpNUtEN2NUcDJMRmpPSGp3WUwvYzIxRDYzb3laVTN0NG1oR21HdTdOZ3B3eHpXQ0Zxc3g5c3Vma2lBT0Vzc0ZPeUFJemNRaGdZd0VuT0VCdElNQU5CRGM3ME9BQXNZRWNtcDdGcmRrVCs0TkNqQ2tBVUZ1WWFjTE1LZ1F3RmM2TUhSdWlLRkpLS2R4dWR3YlFKRW15SEpxOU9CQ05kY1B0OFdEVWlPSDlLcDVGUlVVb0xTMUZLTVE3ZWpqWVRxSmFXbG95M0JzN2tqVlFhMGcyOThhMmg1alZVNXVMQXpOMGI3bzNlMDRPRG81dVVPRFpxckZPUUJzSWJzZmozSTRIYk1jVGRqb0NqcWxPWmdVWUF5OFdubUJ6WnVhZjJUQ1RYUTdFQUkyeXVUUktLYnhlYjFhWFptL2g2SXgyd2V2MTRmenphcXh6MDB5WGRpNGNMOFRCZGdicHdJRURsbnR6S2k3WXE2ZE9yU0dwVk1weWJqYkFRZGQxNGdBNDFzbkJGcXJhM1p6OXozWW9aWFZpRHVFdUdRUnMyVnliUFNTbEE4QnRJTURwVG45bW9EU1FzN1AvUHhsZmkvMnpMZFNFM1puWmdFWnRsVTdyYkQ5ZDErSHorUVpzdEdWblBOczZZZ2dFZ3BneWFhTGwwbmkxazRQdHRDbVpUT0xRb1VQOWlndHNlRHBZL20wQTl6WWc1TXhpQStQazdHNE9XUnlkSFVSTzE2RE9qQTJIVDBhT3piWlVodzRSZVBZTHRpUGRZUWVaM1pXWnpvekpuMldGbVIxcUp0ZzBUVU13R0J4d2FKMXR0RzA1ZWd6aGNBNnV1UHdTbEpTVVFGRVUvdUxpWUR2OTZ1bnA2UmVlc3RYVG9iU0gyT0ZtbTJCd21rZTFRNDV0SFlGRFhnNDJLTUhCMldFQUp6YlVmSm9UekxJNXRxRVdFdXlBd3dBQWd4MWM5andaa3krRExXOW0zME9iQVRPMmZZTmQxRzNQcFdtYWhuQTRuSFcrMDZ4Mm1tSG53Y1B0eUk4VTRMSkwrSXJhRXltSlB3VC9tandlRDZxcnExRlVWSVREaHc5bkROV3orVGNUY0hZSE4xRDExQUZ3bE1uREVSdmdxQTEwNWtWTm9GRkt6Y01HMlY5b2c0TEtDWVlEd0d5b3B4blNvVUxPWVMwaWJDRWwrMjh6M21lY21TUElISUJHN1V1M0J3TWFlMm1haHB5Y25INWIxOW1qaGN5aDlhS2lJa0NxNXk4aURyWXpWejZmRDlYVjFTZ3VMdTZYZjJQYlEreUFzOCtlWm1rUGNRcFJxUWsxVGRPcy9Kc1Q2RXpBTWE3T2hGMC8xODVBYkRCb1pRUFlKd1ZiVnNBeEo3LzIwYmdQZHJBNXNneUkyY0xNZmlBek42amJROC9Cd2s1N0RzMjhWRlZGZm42K2RheVFIV2htSG8wUHEzT3dmYXJrOVhwUlZWV0ZrcElTSy8vVzF0YVcwZi9tVkVFOUhnZG5DMDh6M0J5YmczTndjSGJZbVhCajMyWkFqLzI3VTVIQ1lCMlg3V1A5NEdWNzZ3Z3hCNkJsNU5CWXFObkR6c0VjbWoySDVuYTdrVXFsVUZKU2t0R1BscGVYWnpYWnV0MXUvaUxoWVB2MHl1MTJXOGN5c3dVR3RvTEtBdTU0Y25BTzdzMnBUY1FPdW40RkI5UFoyUUhIL0preVJRblcxZldqbWhQOGh1TFVuTTdoWnovR2dzdm14dXp1TEFObWJJdEdsdnlaWTdnNVZJZG16NkdaVXdPcFZBcVZsWlhJeWNuSm1CcVFKUDVTTzVYNi93SEYxRm5aOGoxaXh3QUFBQUJKUlU1RXJrSmdnZz09Il0sWzEsImRlc2NyaXB0aW9uIl0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUJNQzNwVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJmMVp0aVc1bFdVTC9rc3JvZ2tpcUFSb0Rpb1o0L1VnbTU5ejRpaU5SdEk5SXZ4bG1sSUwzbnV1Rk1BdTF0b1ZydjMvK1grKzYzLzlyLy8xdktta0srVzNsbGJLelgrcHBSWTYvNmozNzc5Mi9uenVkUDQ4LzhYeTUxL1B2Mzc5K3VzYmdiK2puL3g5NCsyL3Y1L08xL00vZitBZjkzakd2Mzc5cW4rK0UrcWZDLzM1QmhmK1BZRjM5dC9yN3cvSjE4UHY2MC82YzZHMmYvOG9yYjUvZjlUeDUwTHp6d2ZQby96NW5mNTZyTjlmL3Yvclg3N3dza29yYzZNWXdvNVB2TStmNmZjRThmZTc4L3M5ZndZKzkvQzFIbU1zRjM4OThmMXpNUmJrWDE3dkgzL2Y5OThYNkY4VytSLy91djU5OWYvNjE3OHRmdWgvdmg3L2JTM0xuelc2eTMvOWpTZi8yOWZqWDdjSi95SU9mejFSK05kdjNDSEYvM2lkUDcrL2I5WHYyNyszNjBoaFMrV1BSSjNGZnY1eEdUNDRXUEo0ZnF6dzYrVjM1dC92K2RYNFZlOStUN1o4M2ZNZS9KcFBld0s3OGwxUGV0YlRuKy9aNSsvNVRCNHhoUjFlL2c1aGhuaStWdU1iV3BqUmZVcitlcjd3eGhaWHJPemJEUHRpNjFJTWZ6M0xjKzdienYzbVU3bnpldmhvZUxpWVcvM2YvcnIrZDkvOG4veTZ2bSs2Uk05ZC8xb3JuaXNvMXp5R08rZWZmSW9OZWI0Lys1YlBBdi9qMTUvdHYvOG1QNGdxTzVqUE1sZGVzTi9qZDRtUm4zL0tWano3SFBsYzV1K2ZDajNYdS81Y2dDWGkzcG1IZVNJN2NKY241cWM4OXh2Qyt6eXNZMldET2s4ZVlncURIWGh5RG91SFJGNWlDZGNiYXZEZS9NejduTStHSEVyd3k5Z21OaUxIZ201VmRxaXpXU2xsNU9kTkZSbnFPZWFVY3k3NXpmWEtMZmNTU3lxNWxQSVdqVngvNDV2ZS9KYjNmZXZiM2w1alRUWFhVdDlhYTZ1OWhSYXhnYm1WOXJiYVd1czlYSjBiZGE3VitYem5LeU9NT05MSW80eDMxTkZHbjRqUFREUFBNdDlaWjV0OWhSVVhabUtWOWE2NjJ1cjd1VGFXWXFlZGQ5bnZycnZ0L2lGclgvelNsNy95dlYvOTJ0Zi8yclUvdS9vZnYvNEh1L2I4MmJWd2RzclB2WC90R2wrOTN2Y2ZsM2cwSjlrOVk4ZENldGp4MXgxQW9JTjdkdGNucGVET3VXZDNDeWhGRGp4a2RtK3U5YmhqYkdIYVQ4amY4OWZlL1hQbi9xLzI3Y3IxLzJyZnd2OXA1eTYzN3Y4Zk8zZXhkZis1Yi8vRnJpMzkzRHc3OXROQzEvU09hQitmNmFGZS9MNXYvdmpyYng2cDdwN0w2SG4xa1dkZXFhTWk5NzdmRjRmeWNObVpZbjkzdjFOWU82VXZocFRlSzliUWE4Wk81YStOc2Q1N2JOYzhzRFp2K3VwVDhGclBkcW5penBVMXJuMitiWS82MUw3ak84dkhoM2R1VjRtNHlCRXdaWVZscjJGekU0eGYvN2hvU3l6QnlPL3FmYzMwM2pQdzFud1hieHZZMGR4YS9ZbytPbzc3WXNPL09ubVorTDVmcVd6RDJobWZIc1lJdmV5TVJ3UUlQTHhsbmFPdHROTllMZk9jdVlYTXBuN0lFd0pVcjRFUlhwWG5DcW4xUFYvZXVlYjFmbThyOWV1MWpQWStYMEVvSXErNVcxOGRPOU16Ky9IdVozQ2hOMjA4d1hzOTdCNHVvdll2NTQ4djFQeWw4ZDFuVC9IZ2RjZTYyVS8ycnFlRW9JNVVTd2hydHZmRncxUldaQjNkdWNvN25sMTR6VmxIaWp6TllBay8xQUlkd0g0OXBha01uMUw1N2Z6bCtaWEpvOFZudDd6MnF1K2VIMXRjVUpGNWYzM3R3ZDUrTWRZNzl6QlN1dG1kOTVsMXphVVhXdC9kZWNiOERsNXZmVWhQV09OYisvbG1yeXU5Kzd0NGlxeDQ3UGNwNzNkdmZNSEx6OHhSMm14WXlQZDk0c2F2enBCdjlndWREM2ZKZGFQckc2ZjI3SW5FUFN0Y0kwMWVrajhpdCtvKzloZm5qWmNiM3JPbFhka3lkaTZ1Kzlzam9Wbzk4WWc3c0lNWWx6SkNyU0d4L1JPUmFDbjB2VldudVQ3V2xsdVArYjBvM1U0RnVZajM3clBpZFhkZ0M5QzV3YzY5TGgxWHcvWWdGL25DUG9Ua3hTcHFGbmZ4L2R0dXdiL1hOOC8vZjNwaHM1Nm5aVFM3M1RFMmZYZ1liM2kvMkhkZUk2MXJMRjRtM1BWTHJHRmlEenNPS2JjUmUvdFFjT0J1VzJOZ21DYmJ3Zjh3Vm14VGIvRWJvV0Nwa0tuVTN0d3ZmTk5DTXdjN0hWSkJxZ2VHQjdBQXNwdklGelp1YllUanJldkxBMlVaZS9LWU55L2xEU0pyMitabXQ2K05UajF6RlV4YlExYjd5bHZkZjdGSTkrQlJFS0cxUUl4ejhyRTNIRDBzV0krZXhoeiticXYwOWFDMDJpYmM1NDVlTGN6R005MnJwcktScjRhdGlieDFmN25MZzB6c2pxbGFxN1FXTUZBcGxkcnZ2TGdPeUw5aXhQWWNEeVlaUk5YQlZ4R2JJaTVlNmR0UC9saFdWZ3ZKU2JraU1hM3hrYlhxTE9sN0VOUVhGVTF4UWlFKzNqUnJUQkhWK21Jd3NBWCtMOFRCNXM0K1o4UWZvTHgzVGhnbDlCZ2wzOXc5THBUM2V3RjZvUTlzZHJ2ZFl2UVQrTVhiOCsrWSsxMnd6YkgzdDk1alloZmkzZG8zSzR2Q1U5MjVZVTE0aFRsQi9yRXNsdnZDek1YTmpzeGNucFI3VFJqcThLUTNJSU1kTHFDSHV3dUxneWZJZzQwYWhlY2N1d0ZXeHV4bGxZU0hBRVRVbVBKNGNrVFVKMnBYc084VDNMcmJmTit1TUxIM3JPUERzaURzdlBsdUdBM1cwVjNFcDdFay9VWXZMcGE1cE1ETEQyMUw0c1ZRSUM1MmYvNTRYaXhmd2dFTlJHVy8yTitNU3FMMGZLNDJibzZ3aDgwRjl0VzRZNHQ1cnJjTzFCem5zSEJ5dURLRUR1L1YwZmZZNTUxS0tNL0h2MnY1VUY5TU9UOHhQOXhGM0R2anhhRlpHNXVYRTUvQUFLWStzRTY4YnVVdlRENWVBdUY4ZTZxajNCT0ZCbVVETmpGeGVYd0ZiVVlpTXo3andXV3ZoUnRwWGg5bm05N2FlbVpWMFFoV0Z2SEg2bUtHZmVmQk15TmhyNUx4ZklNbmEvVjQzdlcxV2E5SEN5S3c1eG5SRnN4NUx3RkJ3STY2L0E4K0d5ZVJ0SWpOVmVUYkJiRFBXN0RTN0ZoVDBsNFpwRnVNVVFOS1lIa2p0cFJYeTFoUlZpYS82RCtDV1ZyR2tDTSsrR0YwclFxbnY3bGJTWURSa2p2T1pWelNndzlHOElZUlpzVUF5VlhDOXVJZG1VSmxrSjVVUGtES2hpdjBnWWdqSDBYUDlXSE1jWWhMYTMwOXFPVVJwWFhqejlhSDJyZHYrWUg3UXhLaEVBVVFrR0NtTENieXhZOGhBN21pTkI4cnpSODM5dll0MTFzbkYwY0pWd2U4N2JleUl3cmRNeFl1ODFiZXNONVR3SUF2akJxMnIyYzgyQXg0eHc5UitmYis4Q0s4SytnQTRJSVJ3b2hqOFlCbGoyNmQ3V3Y3Z3gwTkVNOUNLRUZCS0M2QzhHMFdQN0o2SDc0Qng5QVJodXZHQ29SM0RGejBERHpqM1dOUkZWa3NTQUtQMnBDRDJZb2NXQlB6WWNBQk9Ed1M5OGFWWWtqdzdSSGp2M2paamRGSndDVllJVGRhZU8xajlNZUdaUDM5SnhyS3picC83NUdma0F1N2dZWlhEUGVGN2VVaURTZ3hwRVRsUlZ0QkZHOTlYTlZieGVkR1BDdTdFU2FlVDBjTGF2eGFqZ3BPeGcxaTBGOEFPeVlVQlh1ZlVQQUtlQSswbGdzQXk5Qlp4SGgvZ3hYTEdLRGVubmV5K3FrOEQ1Z25nVGg1SWxaUWczYTlFL1BMT3BaUFUrbEs3YWNDSDBabDYzc3JlYlQwRnFBVzBvaWZIamp5K1FEWXBqR0NxcmlpM1R3WFFHdlA5dUVBRmV3RjZzR2xjR0hVRkNlUGlSTTVndDJ3VDAvSEZVajlVRHBzVlB0dXR2RURmTU9Obm5JMW5BWXFnM0haQmJERjVvQWZzVnFaalgzQU9NMTM1MllWZzg0LzhYMlFYY3dsL2pHT3dpYmphUkhBZENIdFNGbGNRVU1PbW4vVGdpRUNWc1E0b1VBcWNvQktsSXhqdUpWdGRBaVpQOGdETkFFdUwySGdsYTVibUlOb0taTVF4M0dXSGhkWGdhWW85WU92QmdLK0dHTitQSlNXbG55UzF3c1pnY1gvSWNaM25lbWFGVE8xVmU4bXdjZER4L3VOMEZYV1RjU1IwVXpFSFMvT1ZvTlhjcGh6QXdyeGlZSEwzQ3c3TnFpVks3SUhXTGdHL0FNN0k3MW9PU3Yxdks3eWc1NkhoZy9EK0FZd05nUVB1UHNoZWVLdG1yazVxcFVnVFB2cTZCUXdJUmVjV0FJeklBZ29QcThGT1lZYUpZZ0hkMEh5SjJDVkhaL0lGWmoxdzNOdnZBSGZPVngrWFZpbXg4akpDeVg1eDllUHZ5NTFQVEtHOWZzQUZ1VHZINW5IcHYzdEo2Ly85ei82cno5NW5SL2RvK1M3WWd4N2F0aWVDSnFjWTJKT1lTbUk2SVBSaFphQzlMRGZDR25MRUlDWEhTcWlrZC9iWHZOSUs5Ymh4ZTIvOCtBQWRMVCtZeVYrMzRCRitDMlY5MEFaVE5ETnphS2F6eTNuVGhjQ09QRnlvTCtBSG1GdFhpQXI2b082SHVUSFBrSms4Z3NkMkYySGt6SHU3S0M0SFVCWC9mUERNMStMN1VHNzN4VUVkZy9NQU1VT01zOGN2VFdrWmVEbWNXOTR1dyt2SkU2TGdNUTNkamowRFJBZlJqb3VjSERCR1dPQnNac05nY0dBaHhlNENLWm1LYmduZG0wQWNnR2JQR3BNY1dnVEVxaDFwTHVCYWhOeTNPTjFieTRGcWNHUGJSWm5vQzJzQk9hUGp3VEpJSzQrUkZ3WVZvbEhHYkFqckxEUlQ0aGpiM3VQdmRhbzMyWG9DdUFxb0ZMUDBTelVEWjRjV0JBWU5adGJFbWF2cy8wTkdaMDRwcG1mTU1TbjdEUFVHMk4wZi9tcWNHdUFKZENndmtwSmlobjNCUHY0S3A0NUQ1eCtydHh6ZGhGWVNWS01oQ0dhK203czBvSTJMNjU5VFRRU1NsamZJVHBpalhDV2NUenBHOUQvUGxnMWVQNkh6TUNTeDFmeGRqc0hIQlppMVdTUkQyNityUEZnMkxqekIrd0FqZUJESUFqdm01OThLQVIrQWxTR0NQWENZdDBpL1RkTTlMNjlBVjVRUlNKdzZ3UmtYeGVxSGZSVUJidUJ0SDFmKzRQSEFPOXhZNWphRVZoZ0lkWXN3bmcvWE5QODhEdm9pQnl4QXRUWnp5dGovUnF3SDZ6K3BNQnQ1ZUxuaDFHS0cvekE0K1hJM21ON2VDM2VuMzFubFo4TUZvcEE4WTRGRGUwRnNiRWZRRTJlQTFvQjJVS3FOb1JpcHdSNVlVZUN6QXVVOG9DY01KNll4QWc5d3RtaHVDelhEZVNTb2x6RlhjZkRBWFIxbkJtbUpibzNwaWd3TGVnZnNBR1V6dTQwT0lBc21wL2xIYll1YWNKOU1XUGh1WDc4ck9MdG9KYTd2MndUb3BCNWQ1VDFabFZ1VER1MjFUQUdEQjZ6Q1ppTE9NQ2huMDI4WGtxbzdydzZJQnRFaGs0VWJTK09DSGpUV1V6OENZNUJ6b1RvWWVqaE14MUVDQk9GVGtpMjJNNEhhQVhrZkRSc0NUM283eDRzUFJzeThLcUdIOUNXRFBERGMyRW5CTU0za09jYjJBQnNUeEFuZWowZUwyRE1XYjN5WG1VamU5c2NBekNzMyt4U3llOUJoMi9HdjdGRU9OWlZXUkxqYnM4TFRPa2JHN0x3ZExPQWpockVtblcvUU5aWWlpQlpLdm5CaVJvMUFhYkEyTytXSDNYemhNTEV2RGpZd3JPM0ZjTXFBRng0Q2VqdlpRM3ZjcTNxSG1TbGNIVE1Sb1hpSkw0SUJJMlNZdkFOc0czaGpZYVNBdHlJaWdXaTlPb0gxUW53ejQyS0hDWVBtTUpVOFNCcnZTQjZsQi9oNEw2YlZjS0pZYzRDQ2kwWkc1V05CY0hOVzdXOTN3RWhoRzdzQzRJTDlrSFV3ZGY1L011ZGcrT3pZcENxZ0kxR1lQa1NXTmVRNHR3dk9CZWJuc0V1aGlSUVhBUzhYNENZZ0YvQUM1YU5QT0NLdFZ0VG1NRHl1ZXlvVGw4R0NtS29idzRxY3BlMnNtNExFUXlWRndQNnNUZ1lEVVFNdFVSY3VUZXlFUnFNSE13R2FoQ2xWR3c4SGtxdml6MWx6WkNNelRibWdUSFJoT1BicjVNNkFhQXZzUld3Qm16NUhTZ2RjQ0RmMjNIdXJDRzYvQUVPY0pPZjRmWVhIS2tDQVg0MmN1Sy9UVUpwRU1ieFo0TmJJZnBZZm9CV1FMNXF5TytFTFhXOERsNElLNDJkbCtrQkdQazhKQUtXaVZLOXo1VmcrVGphdHU3ZHE2ckFOcUlEckdMSUlqak1icm1CS3dOZXQ5bkhKUDJHb2Y3alNmN3hJTmVmSjBFUCtyR0tCbjBFMVh5SzNVRkl2N3hPZkplMWhnMFhTRFBZQzhWaWRlSmROSjYzRHYzS01GZE1yczVBRXQxUWJYNmcxSUpBWTdaaGM0akFnNmJmZmNsWnZ2TG4xbmp4OVAzejl0ZmY3eDgvd0sxb0F5TEtBcDBGN1N2ajBnRzZCbG1rUWMzb21ORS9CYlBINTJ1WXROd3ZURnFTaWhiSWZ4TkFnOEZiZERGbHNDOE1EUG4rak9nbTZhQ3hJSmdqdHBVdE5jUjlGbjIwY0NVOFVPQ3hmRGZNTnFBVi93YWlEcytJUU9JQWoxUm1jYWI1T1NMellzV2hWTU9jNE4vQ0dwZHhqZFlibmdIZmNvUmdISkFsc1AwRHQvNXRmLzdyN2JuKzJoOHQvd0NCNEN6eWcvK0YzK0JaRjZRSEd3YnN5TFZnT2xJNFVjVWJwTERuMFU4ajZTakx0YkNRYStiS0MwekRCZ0hsWWRNYjJzYzJicnhVbEZzY29MNm1pQXQrTm5CNzZBQVB4eGFEVEZoWUxPUytIeUQ5MHpvdktNM0xFM3M0MEV5TWJOREh3MGw1NmdlSzYxN2lZOS96cW8veDhyMzdUMW11dTVRNzdxckZFeGd2dlB0RUd5RzFrcTRURTRPWHlScll1eE9kVG51QU96NXN6RjVWNW84Q2xIcE5IQ0hLWFRMd3B3Q1RFSVEzd25OQnFCQVVLSGRmVDNCdEIxNk42L085VlFXdWZDTHlUT3dydXJrMEk0anlQV0RBS0JSbW1MWHBFU0tNbTB3UlVJSGx1Q1Zhc21EZUh5dUUxUVVsU1lDZVZlSEtHM2YwakF1RU53d2FHTjFIWmhkcUpOVjh4MmQ4R0JRTWJPblF3aGhpVWRrTldBL2o4SzlCbEtYeGI2dUVkU0hOTUdtRG5Ed2prZzFkZ0thT2IyWWM3YU5aNkJXeWdLeGxLTXFlMHFHeXNaUEdwa1BTbmlKVkkxMUd6bHBubFg1N1d4dE9RQWdIcW1oUWQ3T3JyQ0Uvelpla3B4aGhRK25pdXNERmNaVGdLL2pLVlJzVzJEVDMvYXBMb3J4dkYwWFlUQVJNc3FPQ09JcVYyc2J3c3pOQTA2NVMzRkJsdkRyUGlud1lRS2g0aW5yamJpclVxT25raGlRS1JJKzNpUk1VQTdQN01zdUNnWTN6Qjd3Z2VSR29rbVlBOEVNbzZoVkVRaER1bGNGUCsyQTE0T3YzYmlRYVVpd0kzem5pOHlGbkgxcXc4Ym52QjVUaEpoK1dISk5UOEpoVHhKYkJIK3JzUE9xNGpTMFhWZzI4T1NlMGMrQWpqQUZEUW5HdllHTjR4c2RGY2VHWXpGWnJpZERRQzE3OExwZGQwYTA0RGZnUnEyaUFrNFZQT0dXZUZ3K3dZaDlyNTJXQXc0MVBPck9HRUppb3h0NWY0Snh0M0NFMGJyaGtMM2xVMEUweUFZQVRPK0lYUG53c1duaVhiNlBhS1R6b2Z0WG56VGRXZ05LYVY5MjRiMURZbDJ0Q3NjRE1DTzhOOFgxZ05pdHh1N3FCT3hEdS9EN2dINU1uY0RVdzJNMXRBQXREM1dueE1qUTBaY2NRNm9DdHdEd2x0UmlTZ0dEK0kzUmZzVTFQaHRpKzBFaDBialhFUndlUVZvc2dqU2RmQVMxeVlUZGVlRWltOTZ0MTI1aUNEREsrTzdnVWZ3cnZpMGEwUUxJYkMzaFhjekdGSmZwKzBQN2tSWkJnby9PUEllMG5KYUF6QXNVK0JoMHkwZzNPM2RLQ1J6ZGw0bjdNOVFCSmNWTy9uQkpMbks4aEdETGtnUkZwaUJ2YWJqRHhSSStCSlZKWUVGWXZFcGtRVVNIZUQ1SEZ0Y016dExwUVg2U3FYeGlVa1JBRVZnRi9OdlBocjF0bkFMaUlRcldGSEdKM3NSY0w4OGJydzlJU3VBaWZlWnM0ZUJhVWFGKzZTendIMndTSGhvYTJwMFlBUENKeWcwL3lFWGJJTDZ6dzQ0RmZTQ0FmUUdLNWIwYnVRZjVnUlJ6WkJYcGNieXFEYjQwSi94NzhSalc1aEtIbkFxb0VSeGovdUxHendNY25MK0g0L1Z2aXB4cWdXeXc0K0tpYXQ5ZWNpWE1OdjJoMHFrYkpid0J4bnR1ZzI5MTF5WWFsMEg1WTJtNXhQWGxHSlFIbHVNU01ZS0tOMFVSV09oQnFwaStFYm5YTjFwMXJ0K2FTR2d5SkFQaVVaY05oY1MrTWNZakJqRW9HUkZTd1pQOFA0UlBuLzIzZE1BaDhNR09ySS9BaG9vV1ovOTdYZVBhZEowK0s4VzhtcGRDeEpkbXl4Q2ViSkdXZkRURmhGZmNHNjBNUEJDYi9manNFOHNjRDQ2VTR4bi9lL2NGVFlDbnJNSTJrU0p0clN5Y3FBaitCZE1TVGhHTFhhOCt4Ui9OK3JZZnhYcCtGTGJWalAxSFIyOWcxUk9NRi9KZit6OXVkdTAyREFGdDRPdXVCRUR3UTNuUGh1d0JQRjhKZkUzZ2Y0SVE1eDhzVUF3SjREM3dxZnROMFg2eVloMSt1RDdNWmtzOHdOL0tCUWdCVnh0RFdYUHpiVDZZdllpaTNBZnp2WkFsOTE3TWdmeTBIK0pnSGlUZHdQT0NDc1cyNDFsWngxWERrKzJLSHh6M2h1cmp6cmFpQk5iV3ZrbzErdGg0OGhkbHIvNGViWFArNFN6NFNBVWptM1lFR2FMVUxEOFpENFRDWXVMc09UOG5uOFYvQS9NdDJBQTdteWZMaGZDN2diUnpZNTR4dmVqNFVHb3ZzbXM2VGpmM1hCL2pidHYvTGU4WWFRUDRzRFJ3REl3Rml3b1ZrVGZHSjZXQXlHOXVDRFVIWlFaZEdrYnFrNWUrN2gvWEMrdlN4TDBnNldvbFV5dEFOT09LWEkyWVZNWmJzakNkQzVORkY3REc4NTMyQnYrQTVKS2RYNUMvcXZrenhLWkQ0YnpZQUlpU016bFdhTnF1R3pqaUNGQkZZQnJvcVg5RUdoWm54UkRqdzl5OVFXaWFROFNyQ3VmRUhtcU9WRTRxTFA4VWxRNUFiMmdRVktDK1diVXYvYnBPRnoxR0NabUprUDloUmRIYysxNUJjR01xQnd0enhYdWptTU04SzFvVE5taHpCaEpaM2M5Rzh6d2FBUlQ0enRaQWhQMzFqUExBb2x6NXZtT21ZK0lOOUloRGNqMlhHeDZmNjRXNHhsU2JKd0NhTlp3UTVyY0x5c3VLc25RVmxHYVRSOTJYQWNuMG1ia3J2WEFWbmhJaU1lbWRaRlR1QzZaOW8wSy9LWmZMcTIxZ1lQamF6UWRVOHZrWVN1cjRUeGlQd1hpYlJYK09kNFBScFRka1RQak5VOG9yZXNaWGJJQnY4MzJqWlNRVWE2Q3JyYWV3UHFMWUI4aDgwZnhnOWovMEJFTEd6Y24xY1NHZGpKcVprakNQU1ZVSWhpREFTemNydllPWTRocThIdkVnNzlZbHd1ME1sUHJqbGhMc1ZUR1FHcFVXcjZmZ1paQzByS1ZQSlI2WndhOXorUzVnU3J2Mll6bEE0VFRWSGxwMVZnU3hiaHZDTGFZSDd1NVVqM0RzTmdCNTcyTER5TDh4UlB3aGdCdFVDTFo1OVJlQWxaQ0dEeE9SNG90MjNJWGxKWklodkxTdkRxMXFZNlFTbjJFeUFDK3lETlRTK1h2UEo1RDJtNlJ0MExCWFRHY2FvOFMxY1RFdHV2WU4wVlN5cytjUEhyRU9WWUlOZ2p2UWtCSjM3NDIyeGtkZnptSFNva3gzQVdJeGpXOFBQKzhLanVPTWI0SU1MaElDSUFIQlJhTVRydFdnbWZnQXpBQW52SFBjRlJ2QmJxSk5xdytzaGpMTjNKQjhvQmwrdGVMWnZRZUdXZ1k3OEdMSlMvLys2NDdtZnlVejkweERpb3lUb2RjVHg0TEFnL2pIaGJzVmhpVjJER0NCSCtIU1RnUG5GVTZNQmo5OFB4a3UrZmpYOE5ONW5BblhhKzVqNkJDV0M4WEEyUXFCUWpBTHhMbENXdUZHa2x2QlhKOWxkQVErZ3laR0tNT3JpVVlCd0E0dUREdDVZVThnQ05HcURBU3JZTytYNFlMYVEvMmNOOXEwY0hnYktRWW5CNFA2NUVKaUpQZnBiamtIY0QwQkt0NG5vWDhidnh4VWp5cHpMNFlxWUdmalJCL1FCNUpna1MrOER3Uy9YMXdjWUtpMWVDU2tDSWdMU3A3YnpPWWtIeGRtNm9CdWptdzB5Z3preGozbGpKdzJyOFB3WStyb25oaTNrb1o1dU1XMHlWN3RNdTNmTE9VQ0NTR1FVdExlbDdSUm5Md1AzM1NEaFNVekdYOHIrMHZGSGpPVUh1TTNscERSK2JQN0J1ZTRIQk1iM3Y2YVIrcjJNMG94d3ZMb0JNVFJlQS9xTzBsYVVITitiSVNuV3ZTQ2tCaTd4aVR4L1J5eXl0VXlnRi9CQnJnQ2h1azRCTlVDTHI0RGg0YTVKTk5KTWVrUlVKUFZYVHplTnpnRmFVNDl2d2lJaWdZWWhlU3VVdmNSa3JBNXZQWUJJMGJEY1l4WVJRbnhGODVQc1RyQktSY3FLalZZTnhoaStoN1JCcnhLTHNWV2NTTVhaWW1DeExqaTdjcTlmREtDVUN3c0NyVGdMRmtvK1A0UVJnT2dCL2pDL3JBK0FBNXVCYU93RjhBY0NBcUVtR2phd0pwZ1M3aHRHWFNCL2ZLSkpBTmxOUlJSV3g2RVpOK0RkYmpsQ040akJicUhYVm9weHp3UytFbTZNdjczNEJVK0hHRm1PdHdZdzRzRk9mTUhhRlRnak1tNGxqd2dKbSszV205RUFxeVFnR080WXVDaGVoSzNkMjByZnVBQUZ0UjVCNFBkU0g3SDRIK2dQQUc3cXE4UGxBK3hyak00aWxjejZXRHRpNlZHMFhNRDgyZ2N1aEd3K3hnQS85dVhCcVBQS3JHUnNRMFdDa3FOZ3dMSnlGcTJlOVFQUW16cWYzSVJyWVJMcTFhQVBrSU1ialc4dzluTFNveDlXRVhPSDgrTDN4cDRNakg5OVRmbnZDbWZsZmdLYzIwVFc4YjRqWHRFUTFYbVg4UDZXTUJzVndIWkIzVzVqN29BdGtDTW9CRVNVZ2hsQlNCR2NXNS95R3ZaK2tKNThJWmEzRjBMZVlEd3NVTG9iajlqUjduYkNFam1mdEJhMElxQjdWaXhpa3RrTHNhakpVdlBGT05lejJKWEw1SGREaTRlbEFZY1ZRU0JBRWF3S3lHNXVFSXFBUWJMQVhtQUxjQjVJc01WU1pSbzltWmVSUVpacytkN28xUnJzY0RReXRBeWU2VG0ybVFjNG82Vi9vby83TTBzeEFhdDgwWW9qci9kZE1JV2VyZUVTTW9kYWNJbzMxczJ5aHdTQTJQR1lpUnRuQXhQY2x2NEJDbnZkRFU4Q1dNMElHRVJ0dGdzTGJFUkdlSmg3TlErRlBxTG5HTFo2U20wQXl0V0VOSStYWXNaNkEvQkFoVkNqOVZoU2NHUHVNQWlBQ0o4SDZHRFdMWnJiUndicVFoYkJUK1UrSmRrWnNqMXcyaGJJWTdBTndBRDhkVVliRnkzZ3llT2FXSWVOQi84c21RSlUxMnJBUWIyTTNDSVhnekhmSVJHc3RlbDYxamRYby9pbXdaRHFWSkc0TmkremY1dDdmNERLOXZaaTZHcytJRHVYR0E2QUlOekJNT1g5amZHcjNMOTNISllWQ3NuTnY3SnFMMDhVNzdSUHJTRWdoMGV0cHJjTTJRd2xQT0NkTUtVR2kzQWNpYlY5bXFVTXhnaTNWZWdBc1g1cVF5K3NNcFRLekUweUNtbHBPbERBU2dZeGlMY0hZbVJFeitvQjYzYkFRUjBFanMxN0UzSTF1blVYRDd0V1VUME1NRGZNMnpJelh1M1JqbjI4UGpDaFdTZG9jQTJ2MExSZFlMM0JUc09WbGNOVmVYYkFON3EydDZVVkpvWUFZNy9rUE1TZWEvbyswTGREQTVCa05CYy9oSERMQkxKNTcySlFOb1lUdVYyc2tmZ0llUVludkJWUVBqSkVKQmpEZkRBZ3dMTStoNldURmVqRzZrSUYrNHVBRnhZWkV6YjdBeUR1YjduMkN4UkZiZ0EyWnJSYTNOTTBtcFV2Z0IzaklkKzB3SEVhY0R2NTBSUGJUMzU1TEdReEh3VDJvR3RUSjQxTzdveHQ0WGRTcmpWOGVLWUVlOENXM01naVd4V01WdFlwU2VhS0FsM1E2N1FjTmdmcklRM001WEkva0JaV2hFdmkrcE5PYW9mT3ZyQVh0NFdsNzdES3cyenVsRHVlY0hzM2pKaGVFT0ZsTmVTZnJFUFYxa2JyUmZqaUwxZUwwVFNDekplZzVjbXlhYXRXMUFSNWk2V2UrME1KY0R3Zy93Y0VCUy9PMll2MXRuR01PTS8zUmErbjRSS1RaRHdRV0FBRDJ3empyMmd4Z0xWalNpVk1qQVc4MHZydkh2YmZuMVZUYlREelZ5TVJiaFpDN3d3UVp6L0RaWmhMYVR4MW1LZzlHS0Nua0tCKzBEUTBLV0NacGd5bDUxTyswR1JCVmpKTlhBZG1Ca0lGQTQvcENtd0NnQWhROWVpcXpCQWExZWFudnYvcXFmNDgvbC9KalQ4dk1QSmwwZnc2M3dJcEhCdUZtQlJjNllrQ2hjT3RjenN4M21DVUVvcWJtb0YxSE9EM0V6TGp3Zmw2MVhkMFBJckhrVEVBeWR4OFNzZ0tsSHQxMDEyc2dyeTk3TU1OMTFxditCV29CL01HQjdNb3NLT3EyWVA4VDR2cUJDalZOSElDL21KdThzbGdKK1N2WWVzQVFCYXZKUFBxa05NTUdKbFkrRzRjQjNka08wRDY2VWI0ZmtwUWZsVnN1azZBblJVMXI3c2FUelhiOGF6YjZrRTRMRitZRFNkWjhnVUJZTjlnUmV3WXptSGpBbmx6WEhFQ3lHUFo1MHdnbmhNUldzYWVIMnM1Z1IxQVZaYm13Nyt4YXZsYjEwa1BRRnh1cUhUYkp0T01oVUFzc0grUHhaTGhHMko4bnE3OEl4bjExNk1kMGpST1U4bUZoRXR1VDJ6OXMwSmxHUWxvL3JpUDBIbzB2NkkxSHZoTXN6bTV6aUFWVXZqNXMwNDg0dXFYRnVqR3dUYXd1dVdrMVlMbFZYaE5pQXQyQmM2RUh3WlNscHdOQ2NrT0FpNGlXL0J6M2hIT0JBYStEQTdNZitUSlhPWHh5NkQ5YzVYLzgyVitVT2JGb1lsc29rYjVRWTRPMjhERUE2QlNNTXp5enZITFZvbS9oQ213aHBGWnhWQnV1OFFDNjgxYW5DUkNBd0ZqUHRFMXl4NEVJVkNiKzFldkx1ZEZzd0xNQmljZnNSd3dDQUFsUUJQNkF2Y01tbGFXaDFkRDlMRmFzb01yS1hRNG5BZEVpSWdpaWpDQS9QNWFmVjVERWMxQThuZGFackNTMnR3aGZZYnlCMUNwVFB3R0YxNUdPSU5PMDRRRmFONW1rLy9wcW8wT3AvMUxPTlAzV3pZWWJJNTJKeVRRL1lpamJMTmtKcGZTdEpRQlMyTWR2dVd5ZVJvZEttMWo4VnpzbUc1Z1dNTkNza0R1UFdhUzJ4c1BBMzBYaUdyRy9YSVIvQU9Zb2dQTit1RVcxb1ZEN0VMZ0JhOW45T2VuWWN0V2pHS2NnL1VWclUwNDlyT2EvbnZITzFjdk8wVVArRGFjTDVRWHNIbi85SE9mcEhnL0pGTmptdUl2NEcySjJIRzEvVFV6S1RWM0RmQ01acFBZNWJidUNlZTAxSHh1Q0NPNkZxcmRWY2JPY1VDMkpKZzNlMW13WllrTW9CMUVqZ3V3akJta2lnQmFZR1kwNXpIcmZVUlR2M0VwT1hIVzMxNTgzQlVlUE8yQ1lUMStYN1BraEZkQWhJOFh4VWppUW5oM05nTHppRU8yL21GZUZyN3hxaFhrcjc0OXVNME9vUVF2c1Y3TE5FblpBOXFDRmJFYWN6MW1IaXhtZk15K1ZlUHQ3T29ET1k0NjBQRWZxd01xdjMreWhHRndFYlg4K1FDVytBdmF3YWp2MzRMWk9IQk4yelVSdTN0TGFSQXZaQmJNaEttd3pjc2FJOGpEampnUkMxOTdmV2Y4UUkvc0t5eENYdnZsWW16NytsanhhaTJMelNSWlBwdngwYmZ0TGkvT0FlLzE5dnNFVlgydUIzS04yMnRZbTEydEFVSEYwVHN3TUo2Mnd3M1JSVjU4V2M5a2p1WlRwbUlwa0M0QlNZVGdQbmlhaWRtTDJDalFLMWJpQkdhbXhkNUFMeE4xMml6OGVRbWdKTU5LcGxUdmFtMEFVTHNBWTRWWXRoeFptd0pJKzdSKzRLenZUNUxsdDdzWEx0UTBtWjRudlBCUGxobWJ6MlpJK0FNcktWNkRackhoRnYxSTBvSEttUFFuVnd0ajd0ZmkvejJ1ekRmYk5vQWM1ZytUdlVheE9raFpKQUFUQ0xZbHhYeHlXZmlXK2t6SXJFVlFBZnJiakI1YW9IOHRnQVVnSVNCZDFlUjlZWGRuTFR3RkdQUzI1OHNWV0pZSmdqS0xKWW80WHcwVlZoWEEvaHBWZzNkY3I5MFhjZ0owcWhpUmg4RStXaXBUTGpPQ1NOZW9keHNOaWRnYlc4bHF2OFppbzQwVnBXTlN4b1BzWHRrNkJIemQrMkJ5Z2xIQitTdkFRYmFCRzQvMTNValQ5QVhaZDVNSXNCbXJkTmtIYkhoa2I4Q2J6OVhNVkcxb3h5bTNoc3MrVm1qRENrQjdvSE13R3JUaWZubkJ0NTMvaSt3OHdJZkM0NWI3eTgrbzJKUUpZcHQyUFVCcWpvdkVmaUVxN0NuSU52Q0R2QWI4aTMxL0Nnd01lbXY1MHdPaGd5c0F2bkpHMEFPWUxkNlhqMnpqajdsTWtOakhtMWRiUWxsTGtWMHhEbjRiZGhrbm1vK2t0bWJlRklsNVBvc1dSQzZQRHZKVEVjNDJjbWZ3RDQ3TnFzTXRSOVNzeFpQWHQwVUxGTmpFZmJOYVVNSUw1OU1qOHV3S283dXlyWFFEeTEveUNDZ1M1aXpmS1ExZkIwYkFRMmJjOTJNczB0b1JNMVJ2ejZlMUNkTTVnRkxSeXFyN21paE5BcXdIaVNEMk5PT2EwaTgzYW1yZjZrbzA1OWxOeW1SZWZwWmZkVmNDYzMwTFd3a2wrdVVnc1VVL2ExT3M5VWtuUFduOVpZVDkzeWM2Rk4vL3ZOamY3bm51ZUV3dHlCWklhY0V2bG9WZGVMSFJvVC80K1JmOEJhS0d0UmdOQk12SUNic0I5OWZvaUltUmIwNlVOVi90Ly9LTy83d2grQVlUdml4RHJTYTg3YzVGYWEzd1NSSFBnREIydUdjSGZleW84N3J4QXljYTlWb2hnYW5VdW9TVFBaQWduU0lDRVlOZUNRWlpRSGw5TmE2UC83VDdnMGMyM1JsaHNSRGZvVnRLRWR4eGVqOHdVYk5ZSklXaFJ5Y0JlQmxrYlJFdHZoOVl4N1hjL0lCMVEyM1JWOVFPbWRQNk50OEQwcCtSLzJVN0ZwK0hwRTE0NUVKYjhaSmNHOFp4d1NXVEtkaGZLOVFHWHFIcEZ2MW1TR0RoU3NzTU1wU1l4MEJoaDJuYlVYRExCWE13Wmg0R2NRVVJ6ekJuY1dCTHNYQ25tVHAvMFVVOGNMYXdEM2lDOEQzUmN0YmJMUFJ0bjJOUGFMaWhTalFScWxXUTdGUWI3OXZTblpHemQxbHpjb3YzT2g5ZkZVS2F0dlY1Q1JObk1NeGtxc0VHNjlnQ1hzVU9UdnZQcnJzZ0hiYStueHdQL3k0ejdPM0RBV1hRUW4wcFc0YmMvT3FScFU1NGw5UFJDcjh3QXdlbnVOc1YwQXRydU5Lako3NFBUbjRWb2JFTUFVRXQ4ZjRiUkpPZko3MFdMNXJBd3loQUt1dmRyWm01YlhpNUxNTXg3V3I0OUhQYnJIdVozUzVsaUxpdG9XWWR6Ly9rODM3QlVoYWtJRFpBVmx0OCtFRXFMNzBremdHaWpWTkRIbitVWloyWUNzOVhzbDAxdHNXODJVNndiOThMNjQ3ODNnYVFSb21vVk5peEE5Z25iZ21pZ3hldnZCeUdOZHZMdGF6N2U1QzlPN1lLbEY2R1RTZlMxSzF1Wkd0aE11aW1WWE8zelpHWHdBQXRPRzA0M1M0NFdJaTE0QWFBeStoSlRtaWpkYlVOVkZ6SGZvN0dTeGE4R2dhQ1MvRXlrSnBxWVVlMFR0Z1FOV3NIZU9rZDN3cUJ3NDNWOXJKSkEzRTBoSG9IYlBtOHhRc1p0cnB2T1N6dmsyYTZVS014dWpLQVkwRWlZSkJXQmtQanpLMmNlcEtWTEtCQjhLMXJRTXBDTWRVL2JCL2IvdUJudzlZRnYzaGF0Sm5Gc29rQXhjM0JlUmYzcjlidVJuZnRkc2FpUG5iZEJRdFJjbzg4S0x4MlFwTXR0T0VScmxvd1hKYUw1ZklyNGx0VzRDZjRLeXNRQkZiVHd2VngrbTROUDBBZlpoSjNSQi9KZm9udEY2NXBFQ3lDUEFNN3lRNmR2SVVKSWR1T3JkaFd1RzhiWG80K2RvakhpWjBsYkRJMDZaVVRBQ2NhaUMzYkNZVWtBOWNBQ3ZNR2wvSmNHS2JIUWtUK0Z5SFpFMkNMYnpzWGh1R2hTSjkxcHNrY0J1UWVNUHE5eTQ2QnZaZUZFVHh3MDZIanZMQitFN2VRd3BrZmczSkdheFhTeEQ4Nm9jTW5xVkNjKzdITE9kMFhUSFBxUjVMSkt2WUhEeFAxMHlDR1lZSHpLb2FnNUErMVlRVWVwOGRnVEIzK1lldkdON1hJNzNkZnRqbEE2Y3FKTTBGVTY3QktwMzVyMWV3NjFjOE12c2g0L1lDQnFNbHNBQ0RsRVdBQXd1NDA4MVY5bTJ3N245NzBzL2UxL0JyWDVtNkdsUnFMZ0sycDVvd2UrTTNhVWxOSkZMU2ExWURlRyt3RytWdkdZNzdIM21BMGtLZDVnRlZmaXZZTVRzdUVPeUsxb3kzaEZRT2FkZmpXMmUzYkpCNm9kd1BKcm1KVlNtT0RiNlhSdmNCbnJiQ2JuWlh3M1c3VmtCR0s3TndJNjdRRm90RTFLOUFkSU9MSE5oVjgvelRpakUxOGJQSkh5SGwrOERPU1p2a2IzcVRaK1hCcXRZQkdwdy84Tlo3UDB4a0gyWGsvTDFoM1h3NmpFTk4rMDU3Sk5uUWt4WWc2R0JuUUFZNDNhMmZhK2IxMXhVRjJEWFlBVU5wNTNwTFY5M2RmMXRXZWR0MWhXNER4WTc0Tk9zTU5JSXdmYm5uV2hCV1BCZ1FRZUFQb0ZkWlJtcGp6VFNrT25TbFUxTmdzUDVBQTYxZ3RLOGJITkVsclZwZWwvekJoUm5kcjBoNThBTnBuV1hsLzkvWktYSGpZZUtvVnJ4V3RJUWkxc0JlZ1k2Zzdvb0FPZ1RkZmROT3VOaXo5YWNROWxCMVViVHZMQnpFQWgyQzVYeXZWNTc3YStCV1pEbXNQZGJ0bXhnUG10cUFaN1o4QmoxOVY4bXQxQ0FvZ285c0YycmJtYTZRNVAxNEkwYmp6MDRDY3ZHK3lwdmdCdFg4RkRXVDVnTDQxb0dHUHIvdVlxYnF0Uzc3TmVlZFdPZzdJZlBuMS9xcnhoNE5jOERsUEhJWURwb0hvejNRREtzSnF1dFJnak1lSW5WV3RwcFFOa3RoaW5ubjUrVnc0QlR1UldBdWNyQ0pxdEJOMStVNWhFbTRjQjJBUExONm0zS2dDcUw0cVU3Y0Y0U2lJVVVCem5sZTI2djdyanJWd3B0T3ZJanR1eWZnN3NYamdlREFHdUczaDY3Q2p1T1JpTlFPMFl1c1owMzc3aGpkY1dDS00xTVFzN1JhNEsvY0ZhQ0diZ3FLVEdMVFVZYkZJOVFiRmZraVY3UENKb0NORXIvRkpmTUtLRjVhZGwwSUoyVXRjb0ROTE9tK0thaTV6NmFjRkhYc045YmVieFhqTXRPTUM4Y0w1N2RIdDlXUTN3b1VUc2Nwaldlc0lXMlB2UU9vTDA3Vk1jdHBtanBHMGZBVCtEN1JmV2VVd2lZQVhlaHhLMEZLSEp0Y0xrTm1xZVNxdzl2MUFsRjQ3eVJxdXhraE5ONHhnZWJ3c09laVgrTmZEVXE1VHBldGJQalpqM2VXeWxla3RQNmxGZ3NISHhoTGk5eE8yQlVuL0pyTFBBd3dqK3JvS3FCNXVHUmRtbmhSMGhIM285NFZmL0xhanZuZ0ExdGU1Tm05SmVpSk10L2xJYS9WUS9mYldkVHVNQnZDVjlPV2dNRVF1Yjl0Zys4YlRzc3ZSeGdRdzlPbi9LRnpEZkgwMndqenN0dWtuczVxc1h4Qms4WDc3QVBvTndaNGlnNDFEdjlBZnE0cmlabHRmRUhKSTNEajVpbVpqV0RTZ3haTlBCOGs3ZVV3YjZONWs4M0VDOUo3WUp0YmlUbGMxeExiakVjVFhDb2J5TEhOMm16VjVPdVRPTWxKOVg1ejJHSlFUMjRoQUFXTWtDYkxDRG9BWnRpb0NKbTAyNFFGdmwyTnFESWFGVTRzTWpnY293bVpWOTNVeU5MeFVzRFNqbi9BOWdORWVSejV4L1I4K01qVjRqaFZ3QkUyMjlRbDZISVRQdVFnVG12U2c3VEV1bHVPRWt1b25BRDVZSFAvUXJWNXpoQXZDYkR3K0FUeFo3aTdFd2p3Q2NEQWVlbDVuTmZRT2w3MldOVnZMSG5XMjNqamo1NVFTU0REbU5waUtyS2U2NmdSMGJMbEIrT0VxQmdoNUpKTjZFOU1BNmRhd0xXTXhXRmNnQnNZODNGYStOMXcrWkFiYk5MdVc2Yk5DTEM1OFZiWlFxanFKQjVjSEFnSzJodzFndHlZa3VndjVzWnFrVDhFTU9qMDZTQXlpNEpnTmk5YmdReG5sQWtuQU5CQ0xHMUF2OXVqSUdSRHh1d0xpL3FIengrWTFhUjBQaiswelBsVW4ydzZrUU9vVHB2UERKSnRZMFgxdHl4ZmduY1hDT0V6dGdJc0FLOUgzZnFyUkM3b2hjUi9WK241OGJNYUJRTCtlSUZuWXAyOHJhd3M2QUdvTHE0OFZBb2RmV2xyOUV0TEhTMWg2K0oxRjVnYnZ2NGlEZEREYkFTOXpTSFl5c2s3b0FCQUhyQUFWeGM5ejlSSE5LNE1WeXd0d0dNRVVCMjRmSzNTZnlVaC9YVk42YnpEMng1WEdMMExBQ2x4bjJKSlZhNWhhczByclYzUno2bDMvN2N2RzBITDlieTU1L2ZPYS83OWQ4dnF2SHZQL3pTV3YvLzJiczd5b0lpUTBZRzV2YStLRTBpZjZrSDRMZVRjY24zRklKejhzZyt6MytJL0wvQ3lIY3hCK3RzTXNwZTIrTVBlZ252ZmY0SUJUdTN6OSs5Y05IdjBYTDJ1ZEpPWUZOZDZJbzUxVXVmMW8xN0xNOUF1WFExdWdaSmdpZkNkVzBNTG5Qait3SWh3cGgybzhoSFd3Wk85VEZHMW0xQ1RvaDBRVHVEV3JOc3ZWM20wUEtmYndYTisrS0J6eHJLNFpvR1pWc0RVZUQ3dXd3cHdPdlVHWjRKSExrbmowUmtoczZPYjZiT2I3ckhVR1c1U0JaZGhXZ3pWNzlEc2VheHNVL09JeDNWWnliSXRoYjl1QkhQMFJzRG1mSTVRc3EzN3QrZnF3elJsc2lFTkV4Wko5YXYxNUxJUUFEZk0xVE1vQ2htclA3Q2ZBQW42R21kakU2YlNEMUM4c2FJZkR0RlFDak8wV2pqdEQ3eGpPTjd6THJqSEwvWUp4TlNjZzdRRGdkdnJNNTJ3MTUwN0FDWnBnRk9XSENzT3VvZzJyZU96UDhIODUxWnJSQnVwa21mVm5kYUxmMUNkRE81Rkt5STNKMHUva3RpNFdDNE1KN3Rxd1NDaUNwc2R3ZExGMHlkaTVmdmZPUHB3ellaQkE4UWtJeUM0bDJ5QUNIaUdZcDUxbjlscTNsWDdjRWtNcHhiUXF4Z2Q3VHFPRkpYcXV6MGtmbWRHRUFkejFjTXJIbUR3c0hONlBpdVR1OXA5Q1dNVHh3MlZEN1NQR1pqeXVaUlVHRnlpcDJhdzE4QU1CcDFLQlIxQkV4ZkNiVmlBNDYwTU90VXdhaFZPZkc1emZ4ZzRub3phVzRTNG43U1FMR3V4VWorQXNiUE50UlFxK3JEM3c0eXZjZ29xU3dRYThUY1R4NXo4Vm8zc3NpZFp0WU1PeHBILzl6Zk82RzlYSmZBQnJLT2Q2KzJrNlpZc0ZLamY3QnZDMFZ1aXpNc1FhVllBOGtFYWkxRSt2L3lmYTNXQk9tT1NMVHp5N0NFLzhlRFVUZElvanFNbm04NDRvZ2M1aWJhQkI1eVhzYWY4RlBnWFFCNUp1eHJUZ0NwSzc1THlPamg5YSs4cllvd25LZi9LcDFFZ1dQeWN1RVIxamd4cW5XRXl6Qk9kQ0RXdlljVTdnOVR3aDNSVStMRlYyVE5hRmxDYzI2OHVIcVlJZGRGK0RIWjIrSDhBR2pKWWN1bW1GRFI1OGRoT2lmaFZENHJnWk5JbWRYSmRSSWhNUW9KaU5YSDJ2cERuZXpyNTY0WDRxVjA4akE2YWRXY1crckZTY0ZLZ0REWTVYbTg0OEt0bW8zOWRPSTlkMkxnK3lETDhRbTIyTVUxYjlUMjJ0ZzV6QTNOemxEbVhQMCtBMnNKbVFLR3U4OXJwMHE5QWpPT1pHSmV5N0dNQWdlSkRCTXJHM1JvRFhXYzZGM2ZPa3VrOXgyTnJQbVRsa3JSRlk1bkxTaGZrdExyRGhmMWdpVUt3OXJvNGNhbGhHN004d0NnUVlTaCs2RDIxaC9leGJDZllKWXRjL2N5QVhhQkwvMEU5UzFwQ1ZMc0ZhdFdMT3o1UkR3VmFjVVlmOU9mV2RJZzZ6UVFzQXI3a3JnSVFTeDNWaW5MRllDZHJ2VmNvOWZHM2N1SE1FNnNNWGlnR3RaQVZBZkQ2UXJ6MHM2N1NQYUtqR3I5UXpYVGFyWlhZQk84SnRSc0MyZDJmZzJhMThRMWJ0ZVVnZENXZEo0VkNBYlg4WTJ4a21ycVpOMlBZMFQyUy95Qm03QnVGN0R4NTZONHNrUTg2aVZNU3UyS2pGbi9kb0xMSnhOaU5ucDZNcG41U01jMENRYkpocXNMYnZrTjdxYUtUMWE4MEY5Wm5ZUEpNNVdqVmRtaUhoblo5dk1lUG53bE1iaU1iWmNuMlB5d1FlNzRrdk5uUTUyc24rTzUzUWNWdFlBc2NFYXA0c2NqMnp3Nnh6Y3ppRjB4ak9hdy9SS2RBUDlKNmp5cE5ZNTJVMzFRamxRY1N4VHJFa3kzcHU3MitGNlBQc1dqRDhUcmw3TFNacnR4TjJIcmp0ZGFmakQ4dy9yejJqdFZIZHlISjJobDl1em5jS1JVTGZUNWs5aG5qeDJmdXhiUGlaaGc2YzZ3VmQvL25YZWlxYkhjVmg0ZWRuL3dYNm9iSUgrK2JMWTVQeGQ0dnBIWGgxaGlnYUhyVmMwMExDbmk5WEptRUxNL3R1YkxMYk8zUjNqSThpblo2K2tuT3k3dXhrcEZoNEcyQUpCaW80ZCtwR3E4Nk9MOW1SUGRZMkNaY1BVQXBzeHJJajdOREtZRWtHUGhkYmJWSHJOSXI5dnBGcnB2WWFjc0NsWUFaUlpCemVaWWtRSnBkZnh0anc2Z2dYcERTYmNJeEFHa0dXeVFNY0UwYldHVWRMaWV0Mkx5Sy9xWnJEUi9pdkh0OWpkNFdEZVZ2Q3NoeXlkaGVuRmpxV1l0c0Q4Q0MyR2FZNzdhZVAwYkdNRmlmYUFZeHd3SG4yOVNURnlqSTJRelN2UmFaV3RGblpDV000Q1ZVYkh4elhOL01OSTMyek5YeHMxVDR6Ry9qQmJ1bm1sYzR3UDd1VExhRnc3aGxMNTU3ajNuU01mQXREWWVVc2l6OC95NTk1OU9lTVQwVFJxMmxBVEVtNEZvNm5JMXloTzIvcVBVbUo5U3dzbXoyR1RrZUM3VXdzTnM0aldyeWFMVWFTejhDRjdER2NKclhMZDdHcEFkRWNmQmljQlNiQWU3Q3I5Mm1CZ0pEZ3pzemtETXpZc2xyRE1rellDaUp1bEd3WVlhaldLRjdSOFpOdlNoTllaREwvTnhjeXNxbjZLQTBscEZ1ZG5mWjhuZ0dnYjNST1N2dWdheGpqTUhyQUZrSkY0V3UzMC92TWlnS2dINmpxWjBzTTJtd3I4R09zekM3MVlWTDJzZllyNUk3VzI1WGk0Rm9NZkovOXNvL0hvVzdRK2ZLY1dBSzJIbmdGRkhvNmNtckxTM1JpREFidlVEVTg4SXZCc3NEVEVHZVZRdS8yWHY5KzE2YzVqTEtPdi9jOGZZYm1ZL3lYai83NnN2NzY4SHV0OTlkVy8xOSsyb28ybTJZY3MyRTIwWG04dU05OU85UmdSSXhMZXh6WFluRUZGZzhuc2o0aHB5WGIrMUVOWUFzWmZ5QkJmTWRVdXZsak9rdXRtalVCeWlLbXhjRmZyOVdhVmVMMzNkVnFKZENRUFBxSGplS2ZSTUZwZEJIQ0c3ZGF6YWhzTXFBRU5FaC9taW02NGNocEVnb2R4dVUxaDhvNHRndGJheGNNTG1WYnhCckFSc3ZlZFdjVW1WZDAxSWR3ekVsc2dGZm5XWHd2YkpnMVNoWnhPbm9EVmNkdk81bkYydVFIWTVmNEY1UTRkSWUxMmd6bkZJVzdDZzJSSFQ2emJLaTNjdmU3T202a3h0amRWRXdGTmxhaHRvUnhWa3lpcWZmZEg1Tmh3QlV3eTBRSFR2QjQyQzJCcDhyMloyS1BCdHVHR1J5T3RJTHl4OU15UEgvVk0vdXpFRktKRjlDZU52UDNoeS90TU1nc084c2F1cFBhL296aytYM2l6L2Vmdnk3WC8zNDVuRUw5MTd2NTdiL3VkZjF1OXU4WCszT3pZWnY3KzRBNXdWbzRHSUM1ZnRZSmV1dTBBSm5RUWNEYm50ZWZCV25sdjdqZC8rM0xPWFhwTW1nSkttR2xMVEhGQm1sZklVYWZVb1ZYaGhYQ1g5N3o5ZGFIeGN0RGFobFAvTkZSRFRndDAvU25nK1kzWFhTViswOWxKazl3aXNrUTAxT3lqSE0zRHY0Q2NFYzZVVDRINTVuM2h1RmFIeEZRMnBGTzJXaHp1RkpDbVVCM1RsdnFqckxVNFJ6QVA3czVxWk1NZ1AwKy9UUGJacmV2ZFJ3MzhEcGV1Nlh0dUJIczJENnIwK2RaZk50Sy96enM3MUZ0MVhQU2I5UmxPaThRZC9SYVpmZllmRjJ1VXV1WVozelV2RSt6VE5vQ01qMDJTL0hzcms1N3lBTm9CUHk1bmFXS0FZZEFSTjFXL2NmY0U1RC9mejRKcE5zaEtkRVorZEJ1YTN1TElkb2MwWFZuWUJRMEpGbjNaSjNLWjA5NXU4Qkx2cXdlSXI0aUhpOW9tOG5FYnlaVEozek1OaVY4VzBOZzdFWlhkRWFNelp6M3dOb0tqSzVvYk1GSm1OYitQK0FTcDVjMHAwM01GSVVXay9mb2o2MjExWEc0SVFHUU1USHhWR25nMjRlOWZXVmNqOFBFQnRwbEZCaW9hT1U4Zmo5aGtuTUZhNHJOeStoeWhkMTJjWnpTRkJra0VCN290STZZdWcyMGw2MVYzU1lDUG4xTTFZMG5ldXhtNDRraXZpZndvbkQxM2NOcnRQZ2RDYnJqcXQ0T2NWYjZNRXRmdll6em5xNnp4eXBIVUtqMW5lY2dDZXhLa0gvYjBkUUJHZFpKWWUxNFRJK1hlREIzRDg0WFI4NFNMVlRFZEFBT3lFamx4NElEY2Ezc2M5ekZzbitUSmNNM2RTSENWZ2Ewejh1U1FHN3NTSVIvekNmSEhUbWtDY0M1Q2p6ZXdZZmdGNFVrR3ZBM2JlSElqZkE2d2hoOFVSMXVCcjIwUUxJMWdLVXpYKzFydHUzTStsN0FvNTFyeHIyWDRSQ2JvMWFSa2JYeHE2Und0eDNmaEMxWmpyYnNOdDA2bXJUWkpoMHV4eCtFaEg4RklJSUNiOGU2R01rNEpZb3hPeGtITUhVYjRyUnJhY3ZHckJoNlBXakRnbjBUREVqOGhZWVg2Yk1KV3JNWUMzTDE4R0pwREljQlliZC9NNkRPZkkvYlFWcE9ZZ05RU0hZVjd3ZVozMjFkZGErVFJuZWtLcHdqTy9kMU9FWWt2bzREZGhqK0djRTBucnV5dUdjMkZvRFNzckU3OVpxbFdPV2N3dkR1bk9ZNE15dXpnL0dCYXdyaTQ5em1NNGhrbEYvaG5vYlVtSVVzSHdQZ3pDelRTaGlDQmRHLzBFaFFITlRWdVRaQ25MYVBWZXY2dVhRN1p2Nk1lVisyemZJU29oZHJZVnQzSUlLbGFyQktRT2pGN2pkc2UvSkpIL2t4OStuamNkemN0b0tGMVRlU2J3R1Vsc2lBRkFyOG1DT2Jwb1k3dEFjb0VDNlA0bkE2aHVVTXAxUlNaQXUxL1pWTXZHY3k3ZW5yZDlhVk9lbmwrUS9RUWg3dHBIczYzaFk1WWRmczNPZS9aYk1pVW1TZ1dDNEQvTXZSbWppSFg2RDMzNGtyNlZKTVhyWlNMRmdLMWlzaXM3a0RqNDA3T2t3aE9CaXVRSHZDeWVNNW9VTHNhbkhhWWd1ZEZ2QnQzUUo3S2tWdlR0aVMrRmwyczY1ZG0wMDF3UmpQNUhtZHZNdWwzcE1iZzBBNTNXN0FPRHFJWTlvTEVneldMSHZjc2pLNk16QUE4Ym84cldHaVhzVmhQZ2tFYmwwd0dJR2ZldTM5QSt0SDUyMWlEcjVwODJNcGdoRWJwTzFTYmJhUGFnSXVQcEhuTktYY25QLytBdmRaVVpPUTJRNTlGSGFoM0V1MzdieVFWTGNRMEs0SkdOeGZZNnNReVBjNHhYOGJYU1U3TmdCNUI4ZFEyQnpDbDE5WDNjd29QdEVDQjE4K1FVMjNTWmIzUWw4dytzV3VKMjluSGF3VG1DcytvVGtZMzk2WmFuK2VrUmhkcTEzOWF4Z3lmUzN5UDJWTWQ3b3YwVlpsMjUyNlpnc05FcThZdjZmZGFUazN4dk9Gd3EvQkhxWUU3Ri9SbWhTbk85OUdmZmNKbjF4bzl3ZU4rRHl5Qld6czNNdHpwc2lYbm1pUnFaMGsyUmR5dE42L0pJTnQ0UG5uOUtyckgrT3JUS0RDR1ROY1o3RzVEaWMwL0dYenRPYzFGQ3YxK002MkpnWlB3UVo4VHRSeElqUU9NYldyQkFzNllNUGZWL0swWVE3U1o5UTFzejBRNHJVMTNwYk9Jay93WFNFUUsycHJFdHVLeW1wRTBhekxtY2VtaW02TXFIUFFVU3hXODhYcllhdTFOZEdPdTU0ek1vQjJzOEFzVnJIYkdHeGcvL2hJNHdNMlgvekViZ1dLZHVielduSUwvd3c0clhMR0w3L0FzQWFZRlpwaG84YXRNTllEWlhHMlJsRVFQbEJMdXh5MVpXOHlaSHBiWFZ4US9TQmN5cGEvcy8rc2lpMHNFK1Z6cUluaXNrOVN6V0J4YzJnNE9qNDMwSzh0eStudEdKeVc3ejdPdUxUekZsS0NKUGRqZHJHWThqMEVGa3A0VzhnVzdTMHZkalZhN3ZhT0s1WnNsNS9sbHVaYkxWcEhzT3B2c3VGdGRHSGdZdkNkR3ZjWm5aZFRuSXlRNjNJOVR3Sk5ZQWluL1pPNk94bGQwVU5VTVIwYTR1a1ZSdHFHRXdhaHFvZ2J6Z1FENUtEdzRXd3g0SktqVkR3bTVESzAvMWl0Q1RNMWh1ZjhWNHdHckFUcVlEN0U2Z04rMnFrZ0huNnc5bTVOUDJER0huVlBJempMT1Y5R2N3VmF4YzRzWHVqTVZpeUNZWFNXbDEvT202MU9sd3ptTVQzSVkySnRicTRNamlwWWFSczdXN3lTSmN3V2UzZ1NUN2RkeHE2Wnp3SkI1Nzg3MkRlbHoyS1U3cUJvVzVSOXdBWVE4WkFKamJyenZMN0w3cDdITWo5ci9lMVl6YzV0QmtMd0FqZHd4RzVlNEtUZGNmZm5EQlI3MjdOczEra2tnS2xsRnRTb0g1TG9kSGVZUFU0ME9lcjZYbzdkNG9HcUk1UU02emxWeGxaT0FGV1Foajl2cWc2akFzS01BWjVCQ0s4Y3ExV2p4OHJaTGZJdHAvS2lBT09NZER6YW5mcDYwalRnbUFxUW96alV5cWJGS0RjbzQ0VGpyN2dkTlpSQWpzYWg4Q0dhTlJ2MzdQVzMwdmFjS3VBRXlSSzVQZThlSGd2UERYTy80YlI0bm5rV0YwaU1hK05ieTRCMHoxMnRyTm0ybnpza0paaitCM0k1dTk2aFA5aU1kaVl1QThHclUwT0FBVHJxV2ZCcjRjbkcrZmM2UlgrYWZGYmx6QUZ3aERsNjVVU284Zm9zemFsYzFlbkhqNTJjRS92blJ2Q0NrSnJQU2FMZENiMjJ3L01Hd2VnaDdCZFcvc3lGRllxWkpXdmwxcnc2dE43REVTQWFxS2I5cEkrVHR1TzRUa2xqUGlOdGVYVUhFUlM3a3M0RzhNcjl6SVhVVE85VHkrR0V0MkszK1BLNEJZQklldkZ2MElQTGVwZDU2dGlzcGtBRnN4bDJHM2lUNGNWMHlwMUJ5S2MxcmhlYkdCOXIyRUcraUFZd3J0NW5jUDNGYXRnNmNzVFplcTBqMEZiTW1pZHF2L1RKZzVmL2paMCtFWXBkQnliQzNwdS82Y0FGTk1oT3JuQW9POThZOVVGcDU2K3QrKzNoc3gzODN5NTUzTVcvL0JUN2Z2MVRxSjczRGhXYzhadGZZckZyLy9kTDVwOVgvdHZQOFBRT3g1N3JPbTJUKzBhZHNSdFNhdERGdWoxbUFTY2QyK256WDh0SjFyRmdYdS84cGpQTzRIWkduYk9qMmpodmVQMXpYWDd2S0VQOVBlLy83UG11ZjMzQWZ6eGZCQXkxVlJ5bSs4QVQrMnRhYmp2SXltcmhRMXl6aFdUM2hIZ0hlKzh2Si9hbDkwK2IxOUVXREdob1dIL2tlK1V6Z2p3QWRvS1JHbmI5SElqenJDK2ZTanFMYUNOUTlKa1hacVpGQi9zdW85Vm5Ndmo0NEVleHZ0bm9mTFVrc1owT2lnZU54Rm5EUkR5MkIzNjZmS0w2RnVOL09NaHpSb1V6MVZ5YU5OZzdRTy9lVHA1ajllMVhyTGFpbndwcGlFVURuajhOV2pyMGZjMTRDY3YzWGF2Vlg1djA5MXRJQ2E3elVESXdkd3RPUUFnVGtRZC9ZV3FEWFp2WWs5Y1JCbVU3Ui9nSTZjMGFtV3Q1REV6djRUU3p3Q3Fpc3RZYkJ0Ti9Ob0VOY1VYVnZ3V25yR0VmdjM0N0ZOUVJjSjQwOGE1d2RZODYrdXhmOEFYT21GdkxWbmZ3K0ozdDZ6Nk92SE0yY1hWMkpaWUVZTHVhQ25lT0g5aW5GaVZmbHFQYVRIeE9mTE4xSU5qQ2J3SUVQYmYwZnZ4NjUrQjJtQ3Nza29YUnhlcFE0KzFHdzlLUksvdjd2OXVoSXlmYnlzOVpCV2pmb3FNWnJDMndXVDJmVXlhSDFYVk8vLzh6YXVXY0paWnhwZTB0OGJJWXhrazUzUW01TmlUb3pWNGpNN2dBOGU5WDg2L3lvUUFxTXErRGV3TDBKUHNFdUFOYytuR3c5OFVLZUpsdDdRRTNQNE94c3pkK2s0ZXN4TjRobUNGM1l6cmRvc2o4Y1p2eFdGenVYSWJqeDVEMHF6dkdjejhuaUtIdnJUYm1aTFBpYk13Wk1tcXpUZ2Rhb25RQlJ1bm8zZjQ2WGRKdW1uRG5DY1Z0VHF0K3pWREpIZU1haGp5QmRmYW1PRWpRR0M4S2dWbSsyN2JjYWxxQ09VNWVFRGZhOFJQR3doY28rS3IxeklhWVFxVG1DSU8yeHVOSktmSUttNVF4SXUxZEh0amxxVkZHMEl5L0EvS2NNeFZDZGd5RXNSR1dZWTFpQXl0SzQ4UUE1NDJiQzdZTFlOdEo2SW1ZemRQV0tqaW1DMTBkaXJlc0szRGUza25Jd1duWm1OZFl6YXRCeHNGQkdCMTlaUWUzalh6T0ZzV0ZoWFBnbUFIV1J6RGtsT3BxLzQ1VEJWN0lTZ2NlNHpsWE94cnlaL1N1cDJ2QWR4T0FFTjRJYnVGQy9PY2NEUWRjUEwybWF1TnBIcFpRWVFYcVBuWCtzTmd6NldlOURqVEJ2TDRPRUpsUS9XV0I5N1pIUERudTFRbW1BOUtQNlFBQ2R0WURhY0pwclFlcGdFSmc5QUtJSlRzWFpNOEhON2xnSlU5ZTZEWTR5NVkrYkxUSFVEUlBXektHSEhqR3gzSnBRZloyd0Jpa0pqdEVibjNPemJiSDdBN2I0SlBSRmRUVzdybGx6WnFKdzVGc3REdmI5OERaUEJPdzVXankzOU5WMkRVNzNMZW54bGh3NGlHc096bnpGdkF5RUIzbnpOZ0RjM3VjWEMvL01ndmJ3cVl5L3ZUVHJyK1pzNXovL3ExLy9jNFptbW5hMElIWXcrRjRTOVNRem5sc0ZqSlZxRGtneTU0OUozNGoxL0VjMVZOdFFSdW5yZ1loVHNueDBKYmNJQWpiM3JMVkZwN2Y4ZXpEYWNUMWdqMEQ4bkowSU1ZcGJiSkw1VDBaaVBramR1Q2svKzdyRzNRS0NhczlOb2Nwc0pvNVFKNnFjMlphc01FNnozTjQwV3RJTldHN25qNGQ2M3BtVE5zMGRRcElteFgvQUc4ZStZa1hGc3l3OFRZMWZsc045ajk4cG1LZmZCd0RtcldPcTBxMVNxOGZFSmVlRnhLQVpRNnZoWXlmQjl2QkFaYjcxb0tWQWw4emNPdEpUWFo1UEU0WnhvUlg2eUtBMG0xRDBXMHlkNmJTaVNMWFgyVFlzMjRNVW5pNG5tTWg0NWxZZ3BOMHJ2Q0p1K1Z3cllWN21WYm9POW9SOFppdjRZUHFxQmN3Tjl0NG5qLy82YS8vRFFhM21lc2M5MlVtNk1oTHZJNjRIR0ZoMWY0cFNQSGZ2aTU5M2JxcWZCRC9hMEdEVll0V21zQUVlcnlLM1NnQTh3cTczc1hJMkZxZUJ3QnlIQTcvZENZemJNMDVkbllreE5xQ25pT1krUmVkUDVLaENJVzROZHJzV0xJWWY4azFrM05qMlYvRGljTW12QS9XMEkyS25LbXJ3VnJuNHJGY0ZsSTRJZVdrMWEvL05xL3VtWGIyWWV1NFVZY3prQW9HNGxRVXlQUDBFS1VCV2hTTTQ4UHlKZkMrblV4Z0JiZlJRS2VncmVuOFM2T1pnODEzcUxlVkx2czljNnN0MDlKYWFFL0RtOUY5UXdZWE1LTURUQ1FRY0xKdUlIS2hoUG11VGxWL25DTnVCMkg5bkwvRXowaEwwam5BemtIb0EvNTlnNGJnSW13aE8zWG5BdXBvNW4wL1IxNkJOWndVTmswR2RTbmU2N3dMUkpBMTNBWnJzRWlHcnozaVlJQXNjNGNjODNPbUwvczlTbUczcG1jdW5CcG0yTFZJQmF2bHFaaUlQSTZTSGZIY1NLZytUc3ltclZHSHVZam53b0FCY1l6ZExOU2dUVXc4cmcvbytTNEw4WjdIdHVuaTNOeHNPKzNub0JnYjd5d1pibmZCVEJlanAvQitUS2FuQVZUcmhMTjFFL0djM2dPZ3ZIZkZjSDlHSEVCaVdGV0xXSVlENDdkRE1MbjE2N2xOc0U3ZUJGMnp2QitIZXRjS0JuRzBlUDg4eEk3bk5HY1RuMmRZWi9mbnlDdVB3b0hTL3M3SWFyZ293K1hoSEp5RXE3SC8rM01NdHVld05tZTA0QzdSWUtSb2ZSVWJ3U1dkVStRWXpISnlMYTloeUF6QkJlMTRFa091bDNQSFc3V1h3bmx0ck84SHRrYWVuWWtsbFB0ekdpT2dFUTd4MDd4UExPM1FobmVkempsWTUwVDdiNFBtT3g2bGdmLzliMzdVb0hZOThZVHFKSlhpYVdmQlRuZFcxTUM0VSs2c25KYm1lOUFkZ3Y3OEFOV050Sm5nRzhsTUNWemRtd0h0SEFFenpsR1JxNkRZb0RHbkREZjcweE13cVlLUW5EWDdIQ0x0eU5LN2ZkWFRPejA1OWN4M1FmcnJjRHlEZHJMQUxJRDdEbEQ1S3J1bXhKeUlpWlRIczE4OFpRL2s3YUc0dytIK3dTRkw4VDdCbHBvZHZnZUtWNTVQZHZCclRxcXpXMHhvNFBTNjRjUkZEMGV0UUtLNlBDUFM4U3hkc3V5cjhrOUFoVlUvejMwYUFUeWYwN3A0YkVudjdUcUpGOUNsZzJhVmllaWg1WkM5UitvdkI3REJBb2RRN0hBby9WUWEyMEpsMVE4bTBIR0pTTjFiQUtOcm56TW5vR0JCL1p1Ty9Cb3ZiQnNEYWsyZFo1M1lsb3ZpUEFHaTFQM0JkZWJWb2pPZXc0YkphNWZwL2pySzQwUUtYTXp6TEQzZEVna0oydTNhVC9ZemRyUGxZR2d3RkovSmY1MTNXcitUKzIrWGRZSDNPZHJIQks1UlRNdTFxb25pWUR0TFlWMkFOcERJSTJKL0JBeGt6RlliY3dkbDJpQ1lFY2hUc1c4OThmQW93SGxLWmw2bkhqaFFFMlZ6aXA1OXlSQ2RmV3V0djJqRjdqNk5uTk9CZFpDdmpvWHN2NGtoeTlFUDZWK1Z3b2cvTUJiejI2b0htb0phV2NFRG5XMTVsWDBYNXp4N0NvTVRiMDZ4Mll1dUJ5VVZNMncweFZOdVlyQUZyVnJwNDZrdGtBZnJHZi8yaWtlSGpnWmQ5emxDcHRXRDZJc1RLb0taaXZ2YnhUa1ljWGhnQVlUVUh1dlg4ZGU1ZUE0Wmh0VVUrdHhXaUdEQjM4dVdCQ2R3Mld0NzZ2L3pMMGJDNHRaUWYyWHAzNS8zenZpUCtEcGtPR0liWXJubFpmMTBIcS9MZzJYUVZDZlFUSDRZeEZxc1Q0Mi9uaFljMWZyZlhmcmtyWUtEMDY4bCtMWnRBUmlNT0ZyZGhqbVl4NDk1Mk5BNTZRNi9GZlJYNW91dHpFUHpEVnhDQVlQdE9pYkFMMzJDZ1NlRGpZNmJEeDRQZ0dMQ2NzN1p3STdBZkR6cEdMVjUwMWgydUtmYndmYnY4YTNnVzZoV0hGYzk3V2FtZE9YeVJWeGN6UzNvZjdjVkVjT2h3Q2ExQzQ3S2s1QTlabU1iZ0JxZVZYc0x1a3l3T0hJWExDbjdpNmJjUHFjdEd0TXNRVXAwVGlscUo2ZDVvMzJtSXg4blY1YUQ1aEgrYUlOem1QUDZwU29GYXNIMHROT2YwMkQ5bHFOM25kRWI0enJUbWMyc3RUT1l6VURmNDRtb3poN3BKeTN6b212ak50MWpxV0p4aXFPbE0veVk4MU1xSy9VQXBSMm1XVytQdXdSSEZEdGNBQmt0Z2ZkZTV5SzNQL05xZVVpWThNblF6TlNkQzJTZStINHdBTHVlU1BHTXU4YmtNYjdaREJlT3VucWVGTXpRTXQxNENtRytDd2RXSCtjQ3ZtVTFzQTk0Mm41YnozNTF2TUE2WTF3ODBleHhMay8rZFZNOGY4N1Z3c0J0VDY0QmRGMVdUTnVRNy9HQXJMT1QvZmM1SE9aOHRCNjNQSm9ub0p3SVRzQzdyNG9yaTU1NitwMVJxeDdNbU9EOVZyRkFRSjBYamJleWlMLzhUUzA5Ly91RkJNZm1hUXBPZFRRRVpxT0RTZnVURVR4RFVDOU1qR2JaZVFmSXlHMEZuUU9tSEhhMFR6cXQ1Tjg1UHRaZEZhZXMyMEg0bi9wLzZVS2RvL0NkdlAzZks4M2ZadkFXUkhMYUJUM2w3VTM0eFZvZFRGQTgzdkp6T1BuNzRnKzNaL253bzlwS2VJaGQzazZVQ3c1OXkwaVEyNDM4VktNcjAyTlZzSDhuVHZTZTA3V2hDajFZRGNvbnJuaHFUWkRrVTNuVG5aNTRzeUxvd0x6UElRT2oyVzZKRUU4bktOcDhiM0d5SWJieU9Ea1poZ0RvU0pjTkx0YVBXVG0yaHZQaGtzZmtnYUVmaDhNSEo1YS9uZ3I2Mmd6ZG5PMnBMM0w2cVJXWW5yV0J2RUhYMzlmanc4VHhqL044K1Jtbk8rQ0lkYVpXN0s3b3NNOXUvUTRPK3daMk8zcjhPY1Z5ZUFCMmFEcE00RG9oRkFDNStHVTYyZ0ZnNWJBZ2c5UFJVOEtEeHhFNS9NekRUNnl0aE94Nzh0M3lhRGxJaEFLUzhQMC8wb0tjTjFOaWdHWkQxMkU2cmNhSjJxK05EaW44OHRIMmJpZlU4UFdjS1N1dGNlWEpRdWRRN3N0Y2RRd1oxbStlZHppdVl0M0NRanZSRGV1Yks1SXh6eE9UdzMyV09UQWxveDhrMGV1SUtET28xck1Ta1dYZFRJRkkyS2xSREpuK0NpdzFUTTZlM3RGRGZLM3g3UmFFYnVNTDJHSGtkVHYwc1RuWjY4OWswN25QSVhNZTBwREZhR3hyR3lmVmhLa2YyOWxtRW1qUFMweW1mOHpqLzg0N0F1cjlacks4QzFPQmVTMmUrUHhyZ2JRbXBKNGhua1hHNlFHTjFWbmlGaVpoNHExbWZteDF4S2ZiakhRNldLWm52enpid1ZPNGpUZWVmQjJ2M2U5d3N1YU9uclJvekJTVnc1ejVUQTdBaHZyMWc5YnZEeVhEdFhtMldKYVlwdGtTQW96bU90SGZFNmxONFFHbHpwRkdOcFFBOHl3TEhSNjEzaDJpM0o1cXM0SDlXTTZybFdBODV0M1J5eGgyUUdNTW5qMm1EeDNRVUIyY1d5eWVsdVp0TEhnemNlRXVPNURXSkNPc3RsMW53aXcyMi9PL3krZTVndmFOVEpkbHRHTTVrY1BuOUkwNkNPSjJCb09EWWhUTlpGdnJPUXNsTFk5eWFpZjV4MjRhWGJIeHFXbmVUdnJPWkp3elJ0WFk3V25BVmt4Z0V1SDEvdGpkalZMakE2dERGSk1CYnE5L2gyTWhEcEhTWEVIZWx0bjltTTVSV3g3QXhMN1pHOHU3MnJpaHF6WWN1YkgybDlVZXJ6bnpjelM5REdlbk03YXBXZk53Q2xkVzV6WGY5M1I4WTVGd21kbkdHNk9BbnZzVHo3SGZGK1ROZ2pWTFM1cjhJdU81N3p3OGRDSmo2UlpiWUNWRkVoMDYrUTAzalgzVElYZ3YrWkJkcDlhd3Z4N2VpZzJ3RU1hS0pydzZUMlgwZEZwMyttWHJZVDh1Q01IQ3VaZmxvUjNZeDlJTlpUM3VnTW5UeTAxWVo5Nzk0TW51NVpFWUNJQnpSb1NrRm0rSm9MZkYzR2RtMWhsbzdSQ3d1czhCMzFhN2xQWmRBUy9aN00wS1R0d2Q5em5zT1ZuVHREekJRalY5ekN1YkVuUzRQUGFlYjJlSHdsYjcxN09uRmZlK0w5dWpIVCtGM21WUDMrck9CdkRjUC90WHduTU9WUExRR0E5eHFpYmcyRi9KWnZmSWVnK3R3YXpwZjY1ekxDckk1ZnIvQXBZVHFBOGFKZXJZQUFBQmcybERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRwYUlWQlR1SU9HU29UaFpFUlJ5MUNrV29FR3FGVmgxTUx2MkNKZzFKaW91ajRGcHc4R094NnVEaXJLdURxeUFJZm9BNE9Ub3B1a2lKLzBzS0xXSThPTzdIdTN1UHUzZUFVQzh6emVvWUJ6VGRObE9KdUpqSnJvcWhWNFFnb0I4OUNNak1NdVlrS1FuZjhYV1BBRi92WWp6TC85eWZvMWZOV1F3SWlNU3p6REJ0NGczaTZVM2I0THhQSEdGRldTVStKeDR6NllMRWoxeFhQSDdqWEhCWjRKa1JNNTJhSjQ0UWk0VTJWdHFZRlUyTmVJbzRxbW82NVFzWmoxWE9XNXkxY3BVMTc4bGZHTTdwSzh0Y3B6bU1CQmF4QkFraUZGUlJRaGsyWXJUcXBGaEkwWDdjeHovaytpVnlLZVFxZ1pGakFSVm9rRjAvK0IvODd0YktUMDU0U2VFNDBQbmlPQjhqUUdnWGFOUWM1L3ZZY1JvblFQQVp1TkpiL2tvZG1Qa2t2ZGJTb2tkQTN6WndjZDNTbEQzZ2NnY1lmREprVTNhbElFMGhud2ZleitpYnNzREFMZEM5NXZYVzNNZnBBNUNtcnBJM3dNRWhNRnFnN0hXZmQzZTE5L2J2bVdaL1A4YTdjbUx3MFh4dkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg1QWNDRUNRU1IxL1VNUUFBSUFCSlJFRlVlTnJzWFdkNEZGWGJ2cy9NMW5UU0V3SkpxRUtvU3ErQ1NGRXNLS0orb29DZ2lJclN1d2d2dlNnZFFTa1dSSDFGUklvRkMvS0NnQ0NDUWlDMGtKQzJ1OGx1eXZhZGNyNGZPek5zR29ZU2l1eHpYWE50c2p1N00zUG1uSHVlZWorRVVvcTdWZjc4ODArTUdERUNmLy85TjhMRHc5R3paMC9FeHNiaXE2Kyt3dG16WndFQUd6ZHV4T3paczVHYm00dEhIMzBVTE1zaUpDUUVhOWFzQVFEczNic1hJMGVPeE9uVHA1R1ltSWhHalJyaHQ5OSt3OWl4WTJHejJiQjU4MllVRmhiaTBVY2ZoZHZ0aHNQaHdOR2pSMkV5bVFBQW9hR2hTRTVPaGlpSzRIa2VnaUFvcjRJZ1FCUkYzNytKS0lydzNTaWw4aXVobEVMZUFKQ3lyd0JBS1NYUzVTdXZaZDRqNTg2ZGk0bUlpSWpUYXJVeExNdkdNQXdUeFRCTUJDRWtIRUFOQUNHRWtCQUFnUUFDQU9nQmFLU05CY0JJdnljQ0VBQjRwTTBKd0FIQVRpa3RBVkJDS1MyaWxGb29wV1pCRUFvNGpqTzZYQzVUWGw1ZVh2UG16VTNTNzFDZnJkei9oSkN5bjhudkFRQWxoSlI3OWRrb3d6QWdoSUJobUxJYlpWa1dMTXVDWVJqSWY2dFVLdVZWM3RScU5kUnFOVFFhRFRRYURiUmFMYlJhTGZSNlBmUjZQUUlEQXhFVUZJVGc0R0NFaFlXaFJvMGFpSXlNUkhSME5PTGo0M0g0OEdIVXJYOFAvSEpqaE56TndIWTk0dkY0a0p1YkM0UEJnSUtDQWxnc0ZoUVZGYUdrcEFRMm13MTJ1eDBPaHdNdWx3c3Vsd3R1dHhzZWp3Y2Vqd2NjeDRIak9QQThYMnFUQWN4M0UwV1J5QUJYQnN4S0FabjhmeGtBS3dWWXZ2OXYyN2F0Z1Y2dnI4ZXliRjJHWWVvQVNDS0VKQUpJQktDN1RZYlpCZUFTcFRTVFVwb2hpdUpGanVQU3JWYnJoUUVEQnB5WHdjMEgyQ29EdkhJQVNBaWgwbmhSRUhKNVlBZ3BCWHkrSU9jTGVtWEJ6aGYwZk1GT3A5ZERwOVVpTkRRVU1URXhDc0NGaElRZ0xDd000ZUhoaUl5TVJFWkdCdHEyN3dTMVd1MWZYSDVndTNZWk9YSWtWcTVjZVZ1ZFUzUjB0RmZOcVFETVpLMU1CamI1M3NtYW1pOTQrZjYvYi8vQjZKalkyS1pxdGJvcHd6QXBoSkFVQUkwQWFPL3dXK2dHY0ZvVXhWT0NJSnh5dVp5cDZSZlNVeC9wMjZkQTBoUjlRVTBzQTRDZ2xDci9YMEdqbzRSaHdCQUdERVBBTURLWU1aUmgyQXBCalZXeFVLblVVS3RVVUtuVjBLalZFaGdTcURVYTFFcElRRUJBQUFJREF4RWNISXlRa0JEVXFGRURPVGs1YU5xc0pRUkJRRXhNakIrWi9NQjI4OFJvTkNJM054Y21rd2tGQlFVb0xDeEVjWEV4ckZZcmJEWWJIQTRIbkU2bm9xV1YxZEQrUVVzanN0bFpCdEI4TmJOUzJsaFpVSHU0N3lQczRuZVd0TmJwZEswWWhybVBFSEl2Z0FaMzJXMDZKNHJpbjdrNVdjYzBHdldmWThlTStYUHYzcjJpRDlpSmxRQ2VaTVlTU2dnb1FFQklaU0RIZ0dFWnNBd0RobUZwS1lCVHNWQ3hsN1UybFd5aXF0VVFSUkhCd1VHSWlJaUFYcTlIUUVDQVlwNGFqVWJVYjNBUGFrZ2FYR3hNTENLam92eUx6ZzlzMVNmRnhjWEl5Y21Cd1dCQWZuNStoV2FuMCttRTArbUUyKzFXekU2TzQrRHhlTUR6ZkNsUTgvR2pFVjgvV2dXYUdhbkFYNlpvWm1QSGptVWZlK3p4VHVHUlVlMkRnb0k3RUVMYUF3ankzekhBYnJmQldsS01WdmZkYTZPVUh1SjUvcERWYWozODZxdXZIdnJpaXk5NFFraFpvQk1yTW0zTGFIRzBsRitPVWNBTkxNdUFZYjBncDJKWnNMN2dKZ0Vjd3pCZ2lGY3pMK3QvTTV2TnFGVTdDYUdob1Y0VE5TSUMwZEhSaUl1TFEzQndpUCtHK29IdHhnbkhjY2pLeWlxbHBSVVZGU2xhV2xYOGFHVzFORms3OHcwT3lKcVpiR2I2YUdTK3ZqSkNLV1VzRmt2am9LQ2crMW1XN1FLUXJrZU9IQW1OVDZqdHYxa1ZTRzdPSmJScDNicmNjK3JRNzRmM1JVWEg3aThveU4vZnZtM3JOQW5VS3RMcXhFcEE3cklteHpDVUlUNGFITXVDbGJXNGN0cWJDcUlnSWpJeVFna3c2SFE2NkhRNkZCVVZJUzZ1SmdLREFoRWNISUxRMEZCRmU0dUppVVZ3VUJDeXN6Smh0OXNxdmQ3QXdDQWtKZGRGU0dqb0xSdnprdUppWkZ5OGNNdlBVM1czVFhaS0tRd0dBMHdtRTNoQmdNMXFyWEEvaThVQ2s4bFVTanV6MisyS2R1WUxaUDhBWWhWR05XV0h2MlQvZ1BqNHg4cUNtY1BoNktiUmFIb3dETk1EUUZQZjgzUTZIWDRFcTBTY2pnckhKdFR0Y3ZiVmFyVjlhOVpNd0tYc3ZKTTh6LzlpczlsK2JaclNhRDhoRUh5QmpsSmFUcU9UL0hNQUlaU0lJa1JDd0lnTUJNSlFoaEhBc2d4aEdCWXN6MUtlNWFGU1NSb2NwNElnOExEWnROQm9OSXAyNzNLNVVGSlNBcTFPRDZmTHEvazdITjY1WnJOYVVWSlNnaUpMQVFJREF4RVdGblpGTFRYajRnVTBhM0h2TFJ2emkrbm40WERZLzFHYnJ1N3pWTjF0b0hiczJER0FNQWdNQ2taZ1lCQmlZa3Z2NDNBNGtKT1REYmVIQjhlTDRBUVJna2doVWlpdkZLVDBSbEZtbzZBVUVDbUZLRklpS3BGTDcxYld4S1NVRWlxWm1jUWJybU9jVG1jZmpVYlRoeERTQjBETmE3M21IM2YvZ0kwYjFzTmtNaUkrUGg0ZmIvb001ODZkeGRBaGc1UjlKazJaaG9jZWV2aHV4YjhtS3BXcVNWaFkyQnRaT1hrNWdpRDhZTGZiZjBwcDFPQW55VndWS2dVNVNpa0ZvZDRBS3dVaElrU1JRQkI4QUk1bHdmTXNXQlZQVmJ3S29pakE0WENBNHppbzFXckZYV0czMjZFcExsYUFUblp0T0J4MjJPdzJGSmlNQ0EwTmhjMW1RMlJrSkhRNlhhV2djU3ZsbjBEdFpwM25YUVZzQm9NQklBeWlZK0lxTmwxeWM1R1htd3RUdmdsbXN4bEZoWVdLSDgzaHNNTXBtNTF1Tnp4dU56eWNCNXhIMHRaNEh4OGFMMEFRZU1uY0ZDR0tzc2xKQ2FVaUtBVUJLTGxzY25yLy8rMjNBOTBURTJzL0doOGYzL2Q2d016M2VoYk1uNHVacythZ2RlczJLQ2twQVFEVXExY2ZQLzc4S3dEZ3BhR0RxMjI4TjZ4Zmg4Y2U3NGVJaUloeTU3VnN5VHM0Y2VKdmFEUWE5SGl3RjBhOCtocFlsZ1VBWkdkblk4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEcEdPV2ZQRXlSTXZhclhhRjZkTW5aWXpkTmpMMzludDl1K2FOV20wWHdJNG9ZelpXbGFMazRJUElrU1JnU2dTeWdnQ0JJWUZLekJFWUhtSW9raWRUbWM1WUhNNEhGQ3JOVjVYaGpTLzNHNDNuRTRYSEE0bkNpMEZFdEE1WUxmYkVSRVJnY2pJU0w5YTdnYzJ3R1RLUjJCUWNMbjNiVFlic3JPenZEbHArZm13RkZwUVhDVDcwUzVITzkwdUY5d2VOenh1anhmVU9BNDh4NEZUQUkwSEx3Y0VGRkFUSlRDVEUyaTlJQ2FibWFkT24yMFNFQmpZajJHWXgrMTJXK1A4L0h6RXg4ZmZrT3M5azNZYWtaR1I2Tml4RXdBb0M0RVFBcTFXcS94ZFhmTGh4dlhvM0tWTE9XQ2I4ZlkwTkduU0ZQK1pQUmZGUlVVWU0vcE4xRXlvaVg3OW5vUW9pcGcwWVJ5NmRYOEFzK2JNZzhsb3hMaXhveEFWRlkzK1R3Mm9sdk9zNUpnMW82S2loL1YvYXNDd3JCekQ2YzRkMiszNHoreTUzNzR3OFA5T0FSQWs3VTBneEt1WVg5YmtLS1dVVUVJRVNpa2hvaWhTUWtRSUFrTloxdXVPY0xsY1VLbFVWQTRxcWRWcXVGd3VxTlIyeWFYaDlkTzZQUjdKWEhXaHVLaFEwZVpjTGhjY0RnY2NEZ2Vpb3FLZzErdXY2YnEvMnZJbDNsdTlFai85c2hjQThNckx3MkN4V0VxNVl5Wk5ub0llRC9ZRUFKdytmUXE3ZHU1QTgrWXQ4R0RQWHRXK1hoZk1uNHR2ZCsxVTV1anJJOTlFLzZjR0lEMDlIVXZlWFl5UzRpSUVoNFJpNHFUSnFGWEw2MmMrZU9BM3JGbXordTRDTmw3Z0VSZ1lWRVo3eUVGdVRpNk1SaVBNWm04S2gxZExzMTcycDhuUlRvL2tVL1BJL2pRdnFBazhENTczRFFnSXZta2FwSFJBQU14SEgzK2k2OXlsNjFNc3kvWW5oUFR5ZGFyYVNvcXUrenFQSHorR0dkT25LWnJBNDQ5NnpjeCtUL1RIb01GRHF2UWJodzRld01vVnkyRXc1Q0V4TVFsanhvNUhTcE1teXVkN2Y5MkREUnZXSWQ5a1FreHNMSVlQSDRGMjdUc0FBRWErL2lxeUxtVUNBRWEvK1FaVUtoWUpDYld3Y3ZVYWlLS0lybDI3NGVHK2ZhSFZhaEVkRTROV3JWdmo3Smt6eW1LcUVSNk81d1lPaEVhalFVS3RXdWpZcVRQUzBrNVgyN3lvd2pFYkVVSWF4Y2JHVHJpVW5iZmI2WFJzbnpIOXJSMmZmYmJaQ1lDWE5EY1o3QlNRazMxeGhGQlE2alZUS2FYVTdYYUQ1M2tpQlJVb3ovTnd1OTFnV1JWNE5RK092K3l6NWFSZ2xMV2tSQWxNZVR5ZVVnQVhHUmxab2ZZbWlpSVloaW4zTndEazVlWGgyMTA3UysyLzV2MTF5dDl1bHd0REJyK0FqcDA2QXdCV3IxcUo5UFFMY05qdHFGZXYvdFhaK2syYUtJbnNWenJIc3Y5YnpHYTh0K1lETkU1SktmV2RXZjk1RzZOR2pVSHpGaTJ4YStjT0xGKzJGSXNXdnd1WHk0bUZDK1poNWVxMVlPNG1ZUE1ORkRpZFRwdzVjd1puejU3RnhZdnB5TTdPUWw1ZUh2THpUUXJBRlJjWHd5cVpvamE3SFE2N0EwNkgweWRYelEyMzIwM2NiZy94QmhFODRIbU9TRGxwUkJSRlJoUkZobExLVWtyWjFOTm5tMmRjeXA3ZHJmc0RKMVFxMVFlK29PYXJQVjZ2dEdqUkV0dTI3OEtibzhhZ1pzMEViTnUrQzl1Mjc2b3lxRjA0Zng1dlRadUNFYSs5amwzZjdjWlRBNTdHbU5GdndHUTBBZ0F5TXpNd2U5Wk1USnc0QlR1Ly9RR1BQUElZcGs2ZERJZmtyRit4Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXU5SldnTXcrQzVnYzhqTEt5RzE5bDhNUjBIZnZzTmJkdTJVN1RLRlN0WFE2ZlRLeFA5K0xGamFOYXNlYlhOaTZzNUppR2taMEJBNE1vRmk5N1pYNzlCZ3lscjMxL1hqRktxaFRmaFdRTkFEVkFWcFZRbDMzZDVIa2h6Z25BY1J6eVNOdVp5dVlqTDVTSXlXRG1kVGpnZFRqanNEdGpzZHRoc05saWx3SlhOWmtOeGNURUtDd3RoTnB0aE1wbVFsNWVIckt3c1hMcDBDVzYzV3puUEkwY09ZK3JraWVBNERoYUxCUzhOSFZKS0cxdTBjRDVHdnZGbXBXUHkzWGZmb2xQbkxvbzJPT3lsbDdING5TV29VN2Z1Vlk5dlNFZ0lOQnBOaFordFgvYytObis2Q1FCdzRzVGZlUE9OMThzOWNNcjZ5Ujk5N0hFMGI5RVNBSERQUFkxZ2xnQXpMeThQWVdFMVVMTm16YnN2S3VvMVNZM0l6c3FXbmlMNUtDeTA0TUtGQzlqOXcvZm8xdTBCdUZ4T09GMnV5NmFucEtWbFptWWdyRVlORUVJZzhEemhlYStHNXZHNElRZ0NZVlVxOEJ4SFpKSE56ZDY5Ky9SWis4SDZaL2Y5Yis5VEgyN2NBSTdqVUxkZVBVeWFQRVZaVExlVDdOeTVIVjN2NzZhWXNMMzdQSVR2dnR1RjNidC93TURuWDBCRVJDUTJiUHdZdFdwNzFmOUhIbjBNUzVlOGc2eXNTMmpZc0dyMWpxa25UMkwwcUpGd3VWeTR2MXQzZE9sNmY0WDdyWGx2RmZRQkFYam80YjQzN2ZxcmNreENTSzJJOEloUlFjSEJvekt6Y3JlV2xCUi8xVFNsMFM4QTRhWElxaUJwYllLdkJnZUE4anhQR1lhUjh4ZXBsTmRJR0lZQkw2Z29ML2dtY1h2OXQwNkhvMVErcEt6UmVSUnoxV3VtUmtsSnZhMWF0Y2F2ZTM3QnpCblRrWk9UalNlZmZBcmhFa2hzLzJZYjZ0YXRoMGFOVXlvMXpiZCs5U1VXTG41WGVhOHlZTHBlZWZiL0JtTDBxRGRnTmhkZzMvLytoMWx6NWlxZm1TMW1USjgyQldhTEdXM2F0TVhvTWVPZzFXclJyOStUeWo1ZmZQNFpldmJ1RFFDSWpZMkR4V0pHZW5yNjNhV3hpYUtJOVBRTE9IUG1qS1NsWFVKZVhoNU1KaFBPcEtXQjUzbGN5cnFrVkJMSWVXcE9oeE5PbHhPVVVuamNIdUp4dTB0cGFGTGFCcUdpeUJCQ0dFb3AwKytKSjFVWExsNGFQRzc4aEIrN2RMMS9xOWxzZm1yRjhtVjRkK2t5ZlBMcFoxQ3IxTmo2MVZlM2JaQWxMcTYwbjY5MjdTUVlESGtBZ0tDZ0lCdzkrZ2VHdnp3VXp6MzdOQWEvTUZBWjM2cEtTcE1tMlAzVEhueng1VmJrNWVWaHcvcDE1ZmI1K0tNUDhmdnZoekIzN255b1ZEZm5HVnpWWTFKS1lTbTBJQ2d3Q0F6RFBCRVdWdVBUUzlsNVc5TE9ubisyZWZNV2VrcXBEcGVKQVh3MU9JWlN5Z2lDd1BBOFQzaWVKeHpIRVo3bjVjQUJjYnZjeE9WeWVWTS9IRTRsVjFJT0h2QThyMVFzaElhR1FxL1h3MlF5SVRjM0YxbFpXVWhQdndCS0tZWVBINEUvai80QnJVYXJnTFRSYU1DTzdkOWcyTENYS3IyMjMvYnZRMUp5SGNUR3hsM1hXUGJ1M1J2OSsvZEhmSHc4T25Ub2dQNzkrNk54NDhhbDlna0tDc0lycjd5S0wvLzdCYnAxNzE3cXdUaCsvRVM4OCs1U2JQcjBjNWpOWm55OWRVdXA3Mjc1OHI4b01CZmdxYWVlQmdEbzlYcE1uaklOOCtmTnZuczB0cUtpSXB3L2Z4NnNTZ3RUdmhFV3N6Yy96V3IxbXBwWldaY1FHeGVIM053Y3hNVEVLRTlDUTE0ZU9JNERJUVNVVXNKeEhnQUVITWNSUWVDQjBqV2FaUE5uWHdRdldqaC84SktseXdjUlFwb2VQSGdBOCtZdkJCVkZ2REZxdEdLQ05iem5IdVRsNWQ2V1l4VVRFd05EWGw2cDkzSnlzdEd5cFRmdmFOLy85dUxUVFo5Z3lkTGxTS2hWQ3dEUXBWUDdpclNhY21EbmRybnczWGZmb2srZmg2RFY2UkFYRjRjZVBSN0UvdjM3eWszYUgzZi9nR1VyVnQyMGhOT3JPZWFSSTRlaFVhdlJvR0ZEMyt2dEdCZ1kySEg3em05ZmRydmRuMzM5OVZmL25UQnViQWtoUkpCOGNiSVdwL2ppQkVHZ2xGSXFpaUk0am9NZ2lKUmxSUWlpUUFSQm9JSktnQ0I0UWM4M0o5SnV0ME9qMFVDbjB5bmxXYkwvN2Z5NTh5aklMOENhTmFzdzhQbEJPSHNtRFF2bXo4V2t5Vk94YzhjT1dHMVd2REw4SllCNHlSeUdESG9lYTlaK0FLMlVRdkxGNTUvaDVWZEdYUGQ0ZnYvOTl3Q0FEaDA2SUNNakE3bTU1ZWY3aFFzWE1IL2VIUHhuMWh4czNMQU90Uk9UOFBERGZTRUlBbHEwdkZjeGhYdjI3SVhEdi8rdWZPL1hQYi9neHg5L3dMdExscGVLbHJkcjN3SHQybmU0T3pTMjdPeHNuRHg1RWxsWldjakt1b1M4M0R5WVRKZURCVWFEQVlJZ0lpZ3dDRVdGaFlvZnJTQS9INElnSUNRa2xHaTFPa0lwaFNBSWhCZDRJZ2c4WVNRQndEejVaUC93aTVuWll6dDE3bklvSmpaMmNkcnBVMDJ6c2k0QkFKS1NraEVWSFkzT25ic29pM3ZIam0vUW84ZUR0eTZRSXBrNkFFQWx5aVFaaEI3dSt3ajI3dDJEdzRkL0I4L3orT1dYbjVGNjhnUjY5dks2Qk0xbU13Z0JHSlpGY1hHUjRpT2hZdWtxbHJqNGVCdzZlQkFjeHlGZm9tblNhTFg0NU9PUDhQbm5tOEZ4SElxS0NyRnYzLy9RckZtenk2YndqdTNZOXZWV0xGMitVakdmcXQzOHJ1SXgzVzQzZmo5MEVQUG56Y0h3VjE1RllHQmdSWURlUktmVHpYbjIyZWUrUDM4aFk4VHE5OVpHU1JxY2xsS3FvWlNxZlRVNHlRL0xlTWtQZU1MeEhQRUdEZHpFN1hZVGw4c05INTljS2UzTmJyZkRLaVh4eXI2M3JLeExPSFRvQU9yVXFZdHUzUi9BdE9rem9ORm9ZYkZZTUhUWVMvajhpeTNZK05FbldMTjJIVFFhRFRaKzlJa0NhcWRQbllMYjQ2bFduNmF2SFAzakNDWk5ub3I3dTNYSHUwdFg0RlRxU1ZCS1VWeGNqQmNHL3ArU29uVDgrREVrSlNjcmYzLzA0VWJNWDdDb3d2RUgvdVhwSHBSU25EMTdGcG1abVFyRkVLdFNvNlM0QkZhYkZRNjdIUTZuRTlrNTJRZ0kwRXZPVjRMaTRtSVFoc0RsY2hPMVdnVVA1NEVvQ2dCQWZPaUJHQURraHg5L0NibDBLWFBZZ2YzN2hqRU1VeGNBT25ic2pJTUhEeUl3TUJDZE8zY3RadzdQbVRNTER6elFvMUlmUjNWTDJRVGRCZlBuWXNIOHVYaXdaeSs4TlgwRzZ0ZHZnTGRuenNKN3ExZkNrSmVIMm9tSldMajRYY1JJMmN4OUhub1lKMCtld05BaEw0QmxWWGpzOFg2b1g3OEJMSVdXVXNjWk0yWWNGaTlhNkgwUzE2Nk5kUnMrZ2thandZS0ZpN0Z5eFRKODhmbG5VS3ZWNkhwL053d2EvQ0lBUUJBRUxGcm9OUU9mZmJwL2FUTngwK2JyTm84cWtxb2VjK1JycjRJUUlERXhDV1BIVFZCOGtGZVF1bHFkYmtiZlJ4NTlvY2VEUFQvK1p0dlhuNDBiTzdwWTF0NGsvNXVpeFhsVFE0aElLQVgxVnFoUVFSUWhpZ0xoZVI0c3kxSzVjcVVpaWl2NVlXVXc1S0ZHalhBMGFOQVFaOCtlZ2NQaHdKaXg0NnFVMnZQNVo1L2lxUnVjVm5QZ3dJRktQeHZ3OURQSzN4RVJFUmcvWVJJQUlEdzhIQzhPRzRiWFh4ME9Tb0hrT25YUTd3bXZiMjMrdkRsd3U5MFk1Uk5vbVByVzIyalFvQ0VLQ3kxNGVkalFmMit0cU5WcXhmbno1M0hwMG1VLzJsOS8vUVdHVmNGdXM4SHVrNXVXbG5iNnN2WkNLZFJxTmRIcGRMQmFyVEx2RnBHSUlBbkRNSVJTeWlRbEpiRjc5dTUvbVdYWmwzLzY2Y2ZHKy8rM0Z6UCtNeHNBa0o2ZWpubHpaeU1vTUJDRFh4eUs1czFiS09lMWJPbTc0RGdPNDhaUHJEZ2llUzROWGJ0MnJmSjE3dDI3MTA5UVdJbFVOcGEzY014T3A1NDQvdEh5NWNzM2YvZmRkeDRKNEJRVEZkN2FWUG1WeXNYMkRNTlFRUkFVL2plVlNrVlpsb1ZhcllaS3BWTElMV1hUTkNtNWpzVDNKcEZaeHNTZ1pzMEVKQ2NubFV0M3V0Rnk4TGYvVlhuZjloMjdWTnQ1L0NzMU5xUFJpQXNYTGlBcnk1dkM0VXNFeWJBcXJ6UFc2WVRMN1lMZGJnZlA4NGlPaVFIUGNYQzZYTVJodDROaFdSQkNpQ0FJY2k2YUV1VThmZWI4TXk4TS9MOFJScU94Ylh4OFBQTEsrQTdxMUtrRHU4Mkdnb0o4TkcxNjJjVGEvT2ttbU0xbXpKZzU2NFpkcTE0ZjRFZXdxeHliV3pobWpXclVDSisvYytmT0owcEtTajRNQ3d2YlFRamhmQUZPMHVLSVY0c0RwVlNnb2xTckovbmpJSW9pVWFsVTFKY1ZSdGJhQUlLaW9pTHdISzhrKzdyZGJyaGRMcmhjVGlRbEpsVXJIVkpBUUdDVnlxb0NBZ0tyZGFEL2RjQ1drWkdCOVBSMFpHZG5LMG1CY3RLdDFXb0Z3N0JLS29mSDQ0SEZiSUZLcFlMYjVTWTh6NE5LQmVyZXRBMkdpQ0pQQkVFZ0FKZzJiZHAyZjJmSjBsY0RBd1A3VHBveUZWTW5UMFNOOEhDb1ZDd0N5aXlXanAwNm82UzRTRWsyTkJvTldQUGVLaVFrMU1LUVFkNG9Jc093MlBqUko5ZDF2U3pMd202M1ZmdVQrRTRUdTgxYWFRa1djNHZHekc2emdsV3BRQWhwRXhvYTJrWVFoTDRtaytuRHVMaTRBNFFRamxMS0UwSmtnQk5CSUlKQ2hDZ3FCSm1pNk0wYWthbXRSRkZVekZNQTBPbjBzSmFVZUZOQ2VEa2xoTHRjeWVCeXcrbHlvWllVOUxuUmtseW4zajhXd2djRUJDSzVUcjFxSGV0L2pTbEtLY1daTTJlUW5wNk9uSndjR0kxR2hXWklydmZNeWNrQllSZ3ZLMGVwc2lpZWVOazRlRi82SUZsTFkwNmtwalVJRGc1K2pSRHl5cTB5bnlvSDhreVlMUmJFeE1iNzBjeFhhemZrSWpJeUFvbTF5MU02WldSbXdteSsrV05tTk9RaUlpSUNTWW1sejRuanVIV3BxYWtmdDJ6WjhnSUFEZ0F2UlZJVkg1ek1IK2ZMQ2VkRGNFbkxtcVV5SlpJY01aVlRROExEd3hFVkZZVzR1RGpVcmwyN1drdnFicVg4S3pRMnVZb2dJeU5EQVRXejJZemk0bUtmSW5ZSDNHNDNSRXA5eTZJSXovUGdCUjZpUWl0RUNRVWxvSlQwZjJvQXUzRFJPeU5abG4wRFFNTE51SmFnNE9DcjJqOHhzVGJ5ODAwd0duSVJGQnh5MTJ0dWRwc1ZOcHNWQXM5WENHb0FrSlNZQ0pQcDVvMlpmRTZpSUpRRE5RQlFxOVhEV3JSbzBjZHV0Ni90M0xueng4ZU9IZlBJQUFkdmtNcTNBRi9oaHBOQmptRVlJdm5mcUV4Ujd0dGNSZ1k0WDlaZXVlZEN3NFlOcjduVzlIYVdPMTVqS3l3c3hObXpaNVU4R1Y4T3RiSmtrSVdGaGZCV0MvRGdLdGZTR0FEazNJV01uaHFOWmhTQUIyN21vblM3bldqV3RPbFZhNnNYTXpKaHNaZ2g4Q0pjcnJ1VG8wMnZEd0REc29pTWlFUmlZcTEvMUVZeU15OGh2NkFBQWk5VTI1anA5UUZnVmFvS05iV0tSQlRGUFNhVGFWMWNYTncrUW9odmdJR1hORGRCQWpSUkRpNndMRXQ5d0l5cTFlcFNKSmErUFJia0JqSnlkNnlrcENRMGFOQUFOV3JVOEFQYmJXTnVHSTJsMGpsazJ1NktHRzdkYmpmc2RqdGNMaGNSS1lVZ0VVRXFXaHFsQktETWthUEhZcU9pb2tjUlFrYmY3T3N4R2ZNUUZ4dUR1TGc0K09YdUZvL0hzK3FYWDM3WjJLZFBINE1VWUpBMU9NRW5jaXFERzVXMU5WbFRVNnZWVkc0QldCYmNmRTNTK1BoNEpDWW1va0dEQnYrcUpqSjNyQ21hbFpXRmMrZk9JVE16VTBubjhHMnVJdE82K0RMZENvSkFQQjZ1SXZZTkJnQno0ZUtsL2lxVmFqU0ErMjdtdFRqc050aXNKUUNvSDlUOEFnRFFhRFN2OWVyVnE0UFpiRjRiRVJIeEhTR0VsY0NOODhsL0kxNGxUeFI5R3Y1UUg2cDVXbG11VzJWMXA5VVZWUEFEV3hYa3dvVUxPSC8rdkFKcWNqcEgyZVlxWmVpN0NjZHhBS2g4MCtVdVQ4eTJiZHRxaFlTRWpNbThlUDdWbTMwdHdjSEJVS2xVaUkrUFEyeHNySDlGKytXeU9VVkl5L0R3OERVZWorZUQzMzc3YlVPM2J0MnlDU0dNYkpwU1NubGNabDRXdlY0SjZoc3BKYjVSMDdMcElUSjl2UysxdmNmalFkMXJZUER3QTl0MVNscGFtcEo0SzNlTktpekZkT3NvQzJyRXB4ZUI0a3VEVkRuZ2RydWZVS3ZWWXdHMDhpOGx2OXlPb2xhclgrcmF0ZXQ5K2ZuNWE2S2lvblpMdmpkR0FqVlplNU5UUWNwcWIrWFNRc3BXTHZoMlRwTUI3cDU3N3V5a2I1S1JrWEZIbktoY0hpVUhDWHo5YVdXMU5KOU9VY1JiV096dERDV25jRkJLeWM4Ly94eVdtSmc0am1HWUNmNmw0NWM3eVBlMmJPdldyZXNuVFpwVUNNRGprK0FyeVA0M3VXcEJTZ254OWIxUjN3b0Z1ZlZmVUZCUU9iK2JIRlM0VTlOQlZJbUppYmY5U1hJY2g5VFVWTVYzVmxHSHFBcTZRdmwyVS9jRk5jWnV0M2ZSYXJYakNTRTkvVXZGTDNlWXZEbCsvUGlVWjU1NVptMVNVdElSQUN3QU9YcEtVSnJKRjZJb2doQWlsMlFSbWYrdHJJYm1XMlR2Y0RoZ3RWcFJWRlNFbEpRVXFOVnF2eWw2bzhYbGNpRTFOVlVwa1pLckNYeGI0aWs5Q1NUQ1BWbFRrMDFQQ2RnWVNpbmo4WGlHc3l3N0VZQS9vOVV2ZDZRd0ROTWpNVEd4Y1VsSnljcVFrSkF2QURDU2VTb25sWmNLTE1nV0QvVUtrYXNYZlByWTRrckY5U2twS1pWMnhicHRUZEhiT2QzRGJyZVhBcld5MVFSbEd4YkwvalRKL0pUclBCbFJGRWx1Ym01OGRIVDBCRUxJcS82bDRaZmIxZDFpTUJoZ05Kb2dDQUpzTnVzL2ZvZm4rWFZIamh4Wk4zbnk1RnhKYzVNckY1VGllcCs4TjBpcElYSVNyNUx6Sm5lbUwxdWxFQjBkalpvMWF5STVPZm0yQUxmZzRCQ3dMSVBvNk9nclpoRGN0aHFiMVdxdEZOUmtobHU1OTZKdmtFQUdOWi9JSjJPMzJ6dHJ0ZHFKaEpBSC9jdkhMN2NycUIwN2Rnd1VSS21HcUdKVzJiRDZEUnZYNmRydGdmYzZ0R3Z6QndBRzNzaXBUSURxcFVYeS9rT2x2cmRlalkxU0wwT1MxQWRYM3VRZXVvSkl3UXNVSEMvQzdSR1FtSnlBb0tCYlg5bGl0OXVRbTJkQWJsNGU3cnYzM2pzSDJJcUxpeFZRazR2WnpXWnpoWnBhSlpGUHhaL21kcnNIcWxTcXlRRHErWmVQWDI1WE1SZ01vQ0RYVkwvS01FejNXclZxSjU1TVRWdlJKT1dlSGFDVW9ZQnYzdzFCb2dzUnZiRUFDc2tDQmJ6cmhDb21xUnhSbGN4VVVhUVFxUlJOcFNJYU5taUk0SkNRV3pwV2dZRkJDQXdNZ3NtWUI0UEJVR0dhMUczRm9QdkREeitnZmZ2MmlJbUpRZGV1WFRGaHdnVHMyYk5IWWVpb0tBTHFWdm9QZUgxcTBzYUlvcWlhUDMvK2xQVDA5TFhmZi8vOWJRTnFQTTlqMUtoUmlJNk9SbWhvS0lZUEg2NTBkL0xMM1NzbVV6NkNncThMTU9xR2hvVXRQbmYrNHZDRzl6UUtBS0NUdW1mSlBSZFlTc0ZTS25mTEVnalBjL0J3bkplcDErV1dlaXg0dTJOWnJWWVVGeFhCWWpIRFpEUWhKeWNIR1Jjdkl1MU1Ha3FLaTIrTE1Rc01Db1pSNnB4V1Z0Z1pNMmJjRmllNWQrOWU5T3paRXlrcEtYamdnUWVRbEpTRW9xSWlIRDU4V0k3c0tJQlcxdnlVdFRRdnRiTEFwS1NrMVByODg4L25kdTNhZGN5QUFRT1lrSkFRZE9uUzViYTR6b2tUSjJMYnRtMzQ5Tk5QOGV5enoyTHAwcVU0ZGVvVUhudnNNZi9xdm9zbE56Y1hOY0lqcnZwN3AwK2xZdDVVN01lSEFBQWdBRWxFUVZTYzJlalZ1dzhBTUNxMXV1T3ovL2RjU0t2V2JTNTh2ZlVyQitCVjNTb3pmeWxBY0xtUnQyU08wc3VicEtrVkZPVGowTUdES0N3c1JFUkVCSUtDZ3FIVDZmRDExMTloL3R6WjJMWnRLd290aFdncG1ZYjUrZmw0YTlvVWJONjhDVC8vOUJPYU5HMkswTkF3QU1CZmZ4M0h0Q21Uc0hYckZody85aWRhdDJsN1RWMndOQm9Ock5aaXhGZmdhN3R0VE5HMWE5ZWlhZE9tZU9hWlo1Q1ZsUVZDQ0ZxMmJJbUNnZ0tjT1hNR0tTa3BsU1hlbGdvU1BQamdnNjBhTldvMHBWdTNibjNsbTNlN2lOMXV4NnBWcTdCcDB5YUZtdWo5OTk5SHo1NDlzV0RCZ2dxYjN2cmw3aENydFFUUjEyQ0dOcnluRWQ2ZStaOVM3Nm5WNmtGZHVuU0ovdVhYLzYzcGZuK1hFNVJTUmtJM3hUU1ZzVTBVQkpHWGZHMkE5OVVMZUJLd2dlSkMrZ1Z3SEFlV1lSRVJFWUdNakF4UUFJR0JnZGk2WlF2V2ZyQWVHbzBHWThlOGlTTkhEcU4xNnpaWXZXb0Z1bmQvQUgwZmVSUi8vSEVFQytiTnhhcjMxb0xuZWN5Yk13dnpGeTVHVWxJeTFuM2c3U3Y2MHN2RHIybmNmSHNGMzNhbWFGRlJFZXgyTzNKeWNuRGh3b1ZTUHJYRXhFUWtKaVlxS1IxMnV4MzUrZm1rc0xBUU5wdU51Rnd1SWdnQ0k0b2lrNVNVMVB2SEgzOWNzbno1OHI2RUVIVHAwZ1ZIang3RlcyKzloWGJ0dkExNTI3VnJoOW16WjZONzkrNElDQWhBdlhyMThQMzMzMlBac21WSVNFaEFhR2dvaGcwYnBoRDNVVW94Yjk0ODFLOWZIeHFOQmhFUkVSZzBhQkRzZGpzOEhnK2FObTJLQngrOEhKUFl0R2tUdEZvdGpoOC9EZ0RvMzc4L1dyWHlGalVjTzNZTVRxZXpGTjlhNTg3ZVR0c0hEeDcwcjI2L2xCT3oyWXl4WTBaaDBQUC9oOEdEQnVMM1E5NTVrcDJkalFIOW44Q1QvUjdGcURkR2x2ck81SW5qTVdUUTgzMW0vMmZHMUpTVWxDNEFkS0RVdDVFTUs0b2lLNjhicFlrTXg2R2twSmdZREhsZVFrcW50M0Z6WkdRa0dqWm9DSTFXZzVLU0V1VG01aUF6SXdPN2YvZ0JLVTJhSUNEQVM3SmFJNndHL3BMbS9WOS9IVWVYTHQ1NUhob2FpclMwMC9CNFBERGs1VUduMXlNcHlkdVlKVHc4SEg4ZFAzYkR4KzJXYTJ4eW9LQmR1M2I0OXR0dk1YZnVYTVRGeFNFa0pBUjZ2UjR5MTd1YzBtRTJtd2tBcUZRcVFpbVZ1NjR6VnF2MVdZMUdNN1Z2Mzc3MUd6WnNpRVdMRm9GaEdMUnYzeDZQUFBJSXBreVpvaHh6L3Z6NTJMRmpCenAxNm9SWFhua0YvZnIxdytPUFA0N1RwMC9qMUtsVDZOYXRHeDU2NkNFODhjUVRXTFZxRlJZdVhJak5temVqY2VQR09INzhPQVlPSElqbXpadGp6Smd4K1BEREQ5R3VYVHQ4OHNrbjZONjlPMGFPSEltWk0yZWlSWXNXQ3JBVkZoWUNBSEp5Y2hSdzlIbTZJaUlpQXRuWjJmNVY3SmR5OHNYbm05R3NXVE1NR3Z3aTB0UFRzWHJWQ3JSdDF4NEpDUW40NzVhdE9IZnVMT2JPTGswMVAyL0JJbWx0RmJVWi90TFE4QTgvK21URjRFSFBmeXNwTWtTeVRqa0tDTjRIT0JHbGZGNFFRcWhLcFNKdXQ5dXJ4QUdnb0NDRWdkdmxnczFtUTc0cEh3QkJabVlHQWdJQ2NQRmlPbFlzV3dwQkZCQXMrUW1MaTR1aDFlbXdZL3MzK09tbjNkQm9OTERaYkNncEtZRldxNFhINDhIS0ZjdVFtNXVMb3FLaUd6NXV0MVJqODAzcEVFVVJBd2NPUk4yNmRXRXltWERxMUNrY1BYb1VxYW1wS0NrcGdkdnRSa2xKQ1pIQVFJbjRNQXpEQkFjSHYvTGxsMTh1MG1nMDllV0dGenFkRGhxTkJvUVFoVmxVbG43OStxRmJ0MjVRcTlWNDRva240SEs1TUhmdVhBUUhCNk50MjdabzBxUUpVbE5UQVFCSlNVbFl2MzQ5K3ZUcGc4VEVSRHoyMkdQbzJyV3I4dmw5OTkySFNaTW1ZZno0OFJneVpBaWFOR21DQ1JNdVYyazk4OHd6R0RIQzI2UFI0WEJVbUF1azFXcWxEbGwrOFV0cGFkMm1MWDcrNlVkODlPRkd1RjB1TEg1blNaVytKNG9pWnM1NEd3LzNmYlRlQXowZW5IWXE3ZHdBQURwcDAxQksxYUJVQllBRktLT2tSd0dFWlZYZ09BL3h1RDArcmY3c2NIczhjRGdjc0JSYWtKOXZRbEZSRVU3OC9SZkdqeHVENTU1L0FkMjZsYVl1bkRkbkZqSXlMbUx4TzB1aDFXcExLVE5qUnIrSnhvMVRNUEtOTjZ0bDNHNFpzUGttMzhvcEhTNlhDM1hxMUVHclZxM1F1SEZqUkVSRVFCQUVHSTFHNG5hN0pYWU83eE5IemxIak9HNThTa3JLZ3RUVTFDcDNxUEF0STVNSFBDRWhvWlJUVWdhYXZuMzdvbmJ0MnBnNWN5YWVlKzQ1dEdqUkF0OTk5NTNVT01NcjA2ZFBSMFJFQlBiczJZT1BQLzVZNlhOUVZ2UjZQVHdlVDduMzNXNTNwZjBSL1hLWEExdnJObGk1YWcxcUppVGc0NDgyNHUyM3BsYnBlK3ZYdlErZFRvZUJ6NzhBQUZIQndjRnZmZjNOOXNFQTlCSzRhUWtoYWtLSWlsTEtBbUI4QW5DRTQzaDRPQTlSSXFaT0p6aVBGK2hLaW90aHNWamdjYnRSWEZLQ3h4OS9BZ1FFSmRZU2hJYUZLZVpuaDQ2ZE1QS05VVkNyMWZCNFBBcHpiMGx4TVVhUEdZZmVmUjZDeStWQ21QU2RPeDdZZk11a3NyT3prWk9UZ3kxYnR1RGl4WXRLbmhySGNkRHI5UWdKQ1NHQWwvN2JGOVJXcjE2dDVqaHVPc013czBWUjFKWHRPSDVGKzF0VjNnS3ZyTmgzeVpJbDZOQ2hBekl6TTlHaFF3ZXNYYnNXdlh2M0xyV1AwV2hFVGs0T0tLWDQ5ZGRmS3oxdVFrSUNYQzVYS2RXYjR6aVl6V2JVckZuVHY0cjlVazdteloyTncwY09vMGVQQnpGNXlqUWNPblFRL3pUWDkrL2ZoNzIvL29vcFU5L3luZGU2SmsyYVRybjMzbnVITjJ2V1BCQlNPZ2lsVkEwcEhRUUFTMFdSOER4SEJJRW5QRmM2SFlUbmViamRic1drVkdzMGNEZ2NLQ2pJeDhXTDZkajl3L2RvMUxneEFLQkZpNWJLZWY1NTlDaVNrcEtoMFdnUUd4ZUgwTEF3YUNVTGF2KytmV2plb3NXZDcyT1RDOXA5YXorTGlvcVFuNThQaDhPQjVPUmszK1JiSW1zNGN2czdBR1RuenAxQlBYdjJuTW93ekxpaW9pS2NPblVLUTRjT3JmQjQxOHRPc0dUSkVreWVQQmt6Wjg1VTNzdkl5Q2dWd1h6cHBaZlFva1VMOU92WEQ2TkhqMGJQbmowckJLcVdMVnRDcjlkajM3NTllT1NSUjZSSnVCOE13eWpCRGIvNHhWY0dEbndCaXhjdndPZWJQNFVvaWhnemRqd1loa0YyZGpiR2pIb0RIT2RCY1hFeEJ2Ui9BdmZlZHg4bVRaNktsY3VYd3VWeTRiVVJMeXUvczNMMVdnUUhCMlBCb25kR3Y3Tm9vYWFnSUg5ZGJtNnUvSVNWbzZXOHROWUViMk1zd2V0aWsvYmhlWUY2T0s4NUNnSUVCd1VqTGk0ZW4yN3lkcEsvOTk3N0VCd2NESjduOGVwckl6Ri8zaHg4K2Q4dm9OZnJNWEh5RkVXcG1ETDFMY3lhTlFPY2gwT3RXclV3WWRLVU94dllLS1hseXFUazZHZHljakxPbnorUDFOUlVCQVFFUUJBRXVOM2Vwd1FoUkNiVEl5a3BLVFZtejU0OU5TSWk0azIxV28wcFU2WWdKQ1FFQXdaVTNMMDZLQ2dJQnc4ZXhLRkRoNjRKUE1MRHczSGd3QUhrNXVaQ0VBUXNYTGdRcDA2ZFFsT3BMOEg2OWV1eFo4OGUvUDMzMzZoWHJ4NDJiZHFFbDE1NkNkOSsreTBBNFBQUFAwZGhZU0ZHakJpQndNQkFEQjA2RksrLy9qcUNnNE9oMFdnd2ZQaHdEQmt5Qk9IaDRmNVY3SmR5VXF0MmJTeGJ2cXBDN2YrL1c3WlcrSjNQLy90VnBiOTN6ejJOOE1INmphKzUzVzdWNWs4M3JadisxbFN6dExaOGxBRUdsSXFDS0RLbHdDMG9LQWdhclVhMm5rQkFVQ01zREVsSlNZaUlpRUJNVEN3eU16TEFzaXdhTjA2cDFCL1l0R2t6ckgxL2ZiV08yMDAxUmE5VTBCNFVGSVRZMkZpSW9paWJvMFFHTlpabENhV1VYTGh3SWVMNzc3OS9LeTR1N3MwSEhuZ0FYYnAwZ1ZhcnhmNzkreXUxMDE5NzdUVWNPSEFBZ3djUHZxWnozckJoQTBwS1NsQzNibDIwYTljT05wc05reVpOd3A5Ly9vbXNyQ3lNR1RNR1U2ZE9SWU1HRGNBd0RENzQ0QVA4K09PUDJMQmhBd0JneTVZdFdMLys4azFjdkhneEhucm9JVHorK09QbzI3Y3Y3ci8vZml4YnRzeS9ndjF5VTBXcjFRNS9idURBbCtjdFdCUUZRQ3RWS2FpOXlvNVNwVUJFMFp0NTRHM0E3QTBvdU4zZUtnV0h3K0UxU3lXZm04bGtRbTV1TGpJeU1uRDJ6SmxiZW4wM2pkMGpMUzBOYVdscFNvczh1WnVVWENibHkzeGJKdm1XVUVySm1UTm5hdFNwVStjdFFzaEkvN1FzTGFJb0lpUHpFaXdXQ3dSQmdNdDVkNVpvNmZSNnNDeUw4Qm9SU0VxcVhXa1FSN1lldkdObUJzOVgzNWpwOUhxb1ZDcEVoRWNnS2FseTdzTzllL2VpYnYyYnoxcnJjYnMvMkxUcGsvZmZuajdOQXNCRkNIRkRhUnhEQkVJZ0VNSW9EV1BVYWhYVUdnM1ZhcVMrcFFFQkNBb01STERVemk4aUloS3hzYkdvWGJzMjZ0YXJqM3IxcXJlYXNiSSt2RGZGRkpWN0ZKVGxVNU03U1IwL2Z0eTNRb0Q0MnYzU0ZsU3ZYcjJwQVA3Vm9HWXdHSzY2VTVEYjdjRmZmLzBGVnFWQ2NFaW92NitvM1liQ29rSVVITTFIaStZdG9OR29Ld1MxUC80NENvWmxFUlJjL1dObXQ5dGd0bGlRWDVDUDFxMnV6RUNmYy9QekdWL3ExcTI3ZUhISWkycy8zTGhCV1lkZTA5UmJZZ1dJZ2loU1VHOHhQQlVFa1FpOFFKVnU4ejRrbFU2SEEzYTdEVlpyQ1lvS2kyQXVLQ2lWY1hBanBlWVZmcmZhZ1Mwcks2dFVqNEt5M2RrZERnZHExNjZ0YUdvZWo2ZFU3ZWZxMWF2Vnc0WU5tOG93ekp2d1N6bkpNK1NCVmFuOG5lQWxrWmtmaklaYzVPYmxJcWtDaHVpTEdabGdXUGFtalpudk9XVm1Ya0xpRmZxTDFreEl1QlhETm56cXRPbDhSa2JHMmwvMy9GS1poaXRjQmp1UlVpb1NTc3YzVWVBbFpsNlBoNFBMNDgyQkk0UWcvaVpIL2FzVjJJeEdvOUlpcjJ6amxRbzZTWkdLdU5Ra1VCdm5YN0lWaTduQWpLQ1FVUDlBbEpHZzRCQVVGSmdyQkRhTHhZTGdXekJtUWNFaEtEQVhYQkhZYnBrWnI5Tzk5djRINnowTjZpV3ZsN1ZhT2FCQXZkRUZLcGJLTXlFVUlBUWdjbGQ2RUVMQWVNa3N3VEFzV0phRmlsVkI1VFZmRVJVVmRlY0RtOXloWFc2Umw1K2ZYeW1kZDFtZm1tL3lMY013VS8zTHRESS9FU0FJd2wxdmZsYW1KUlVYV1NyODdGYU5XV0JnRUlvTExkZjAzWkxpWW1SY3ZBQzczWGJGMzA5S3JvdVEwR3NEYmIxZVB6cnQ3QVhYUFEzcWJwTHdUSmxxUG1NblhtN2Z4MUdPOHhBSitFQVlBc0l3RXJBeFlGa0dLcFhDMWd1TlJvUFEwTkE3RjlpY1RtY3BVQ3ZMcDFZSlNhVGNmSVZJdlFsZVlSaG0ycFVYOXRWVEtkOXVVbFdxNDRxRUVNRHA5SE81VlRvUEsrRzV1NVhCbFd1OVh4ZlR6OFBoc0Y5eEg3dmRob3lMRjlDc3hiM1hBYjZCbzArZU91Tm8wcmpoVmg5UW8yVTBPQkVBRlVXUjhEeFBuVTRIWVZtV01vU0FFQVlNUXlDWE5ubzNGVlJxTlRScURSbzFibnhUS01adk9MQlJTbkhtekJtbFRaNGMvU3lycVpXSmZzcU5KUmlKOWZaWmxtV253VnY2VWVseHJwRksrYmFUcWxBZFg2djh1UHNIYk55d0hpYVRFZkh4OGZoNDAyYzRkKzRzaGc0WnBPd3phY28wUFBUUXczNGt2STNsbjBETmR5NWRyMVVhR2hyNnhyRy9UdHBiTm0veXZhKzJWZ2JjQUVDa2xIcDlhcHlIZUhzclhBWTJobVhCTWhLd3lWcWJWb1BHalZPcXZhM2ZEUWMyWDFBcjI4ellicmRYU09mdDYxZHpPcDI5VkNyVlZBQlhOTWl2aDByNWRqU2Ivb25xK0Zva056Y1hDK2JQeGN4WmM5QzZkUnVVbEpRQUFPclZxNDhmZi80VkFQRFMwTUhWZGwwYjFxL0RZNC8zSzhWbUlwL1hzaVh2NE1TSnY2SFJhTkRqd1Y0WThlcHJZRmtXZ0plU1o4V3lKVGh4OGdTMFdpMTY5dXlGbDRlUFVENnZEdm1uWTNicDFCNXF0UnFFTUVoS1NzS1FvY1BRc1dPbmZ5dU9Sa1ZFUkx5NmN1WEtrdGRmZi8xQUdjMk5Fa0tvOUQrUm0yRHhIT2ZsSW1jSUpRd0JReVEvbTZTNUtjQ20xa0NyMGFKZS9mclZlZ0UzTkVFM0l5TUQ2ZW5wbGVhcHlkUkRVb3M4K0xMZlVrb1pxOVhhU3FQUlRBWHdqMWQ5QTZpVWJ6K0F1d0xWOFRVOVpOSk9Jekl5RWgwN2RvSkdvMUhLd0FnaFNtZWk2bnh5ZnJoeFBTd1djN24zWjd3OURUVVRFdkQxTnp2eC9nY2JjT2pnQVd6ZnZnMkFOeWR2MG9SeGFORHdIbXo3WmlkV3JGaU52Yi91d2RkYnY2cTI4NnpxTVZldVhvTWR1NzdEa0tIRHNIamhmR3o5YXNzdG1TZUVFTng3NzczbzJiTW5ldlRvZ2ZqNHEzdTRDNEtBMzM3Ymo4a1R4eU03SzZ1eVk5U0xpb29hdm1EQmdzYVM1U1RUakt1VnVsSks1VzcwaE9kNThKdzM5Y05US3ZYRGpzS2lRdnowNDI2c1hmTWU1cytmZy8zNzl5RkxPbTdXcFVzWStmcXJlUGFacHpCbTFCc29LaXBVenVHakR6Zml1V2VmeGpOUDk4ZXVuVHR1amNabU5Cb1ZVRE1halFxb3libHF2bDNhZlRxMEs2Qm1NQmhxNmZYNktRRGFWdlhtL051YzVvR0JRYkJacjU5UC92anhZNWd4ZlJvOEVzM000NDk2emN4K1QvVEhvTUZEcXZRYmh3NGV3TW9WeTJFdzVDRXhNUWxqeG81SFNwTW15dWQ3ZjkyRERSdldJZDlrUWt4c0xJWVBINEYyN1RzQUFFYSsvaXF5TG1VQ0FFYS8rUVpVS2hZSkNiV3djdlVhaUtLSXJsMjc0ZUcrZmFIVmFoRWRFNE5XclZzcm1lb1dpd1Uxd3NQeDNNQ0IwR2cwU0toVkN4MDdkVVphMnVscUcvZXJPYVplcjBmSGpwMmduaklOYjArZmhsNjkrOXgwWnBiazVHU3dMSXZkdTNkRHE5V2llL2Z1eU0vUGg4UitVd3F3NVNSbDM3L2ZmT04xMUt4WkU2ZFBuNElnQ2xjQzBOYUppWW5EeG80ZHUraWRkOTdKa2JVMkg1K2JIR0FRQlVFRUlieTM3cEV3bERBTUNFUEFzQXh5YzNOQkNNRURQWG9BbEdMRCtuV29WNzgrOURvZGxpNTVCNDg5M2c4OWVqeUlMejcvRE8rdFhvWEpVNmJoeEltL3ZYTnM0MGR3dTkwWVBud1lXdDU3WDVWQi9JWm9iRmFyVldIcThLMy9sRHUzWHltdGcxSktYbnp4UlRZaUltSXlJYVJ2MVk5WmNrTW5pOWxzeHVSSkUvRGNzMDlqM3R6WnR3emNLcU02dmhwcDBhSWx0bTNmaFRkSGpVSE5tZ25ZdG4wWHRtM2ZWV1ZRdTNEK1BONmFOZ1VqWG5zZHU3N2JqYWNHUEkweG85K0FTZEltTXpNek1IdldURXljT0FVN3YvMEJqenp5R0taT25hdzBwVm14Y2pXMmJkOEZBRml5YkRtMmJkK0ZsYXZYZUNjY3crQzVnYzhqTEt5RzF5bCtNUjBIZnZzTmJkdDY2M2dqSXlPeFl1VnE2SFI2WlVFZVAzWU16Wm8xcjdZeHY1Wmp0bTdURmg2T3V5V2xRNUdSa2NqTnpWVjhYYUlvb2thTkdxWDJPWExrTUtaT25naU80MkN4V1BEUzBDR3dXTHdSMlhlWExNUGtLZE9xcEJnd0ROUDd2dnZ1R3h3VEU2T1h0RGFmMGl1d0FCaHZSemlSdUZ3dTRuSzV3SEVlWWpHYmtaZWJDNWZUaGVMaUlnUUdCcUtrcEFRcXRScUNJQ0QxNUFsa1pHWWdMZTIwY3U4ZmVyZ3ZEdjkrQ0FCdy90eFp0R2paRWxxZERpR2hvV2pmdmdQK09ITDQ1cG1pbE5KeVZRVyttcHB2Qk5TM1E3dHZCSFRObWpXVENDSERic1JOLzJyTGwzanUyYWZ4N0ROUFlmNjhPWEM3WEZYNjN2dHIzOE05OXpUQ3A1OTlnYkhqTGhORm1veEc3Tnl4L2E1eVZPL2N1UjFkNysrR2poMDdRYXZWb25lZmgzQlBvMGJZdmZzSEFFQkVSQ1EyYlB3WWpWTlN3REFNSG5uME1YQWVEN0t5TGxYNUdLa25UNkpuajI0WTlQeHp1S2RSSTNUcGVuK0YrNjE1YnhYMEFRRjQ2T0crTiszNnEzSk1RZ2pDYTRURGR2M08rcXNXalVZRFFSQVFFUkdCVHAwNlFSVEZVa1NPQU5DcVZXdUVSMFJnNW96cEdEdm1UZlI3NGttRmFPRnFHNmVvVktybkZ5MWFOQkJlTGpkZmsxUWxZUWdqVWtvWWhvSEg0eUUybXcwdWw0c0VCZ2JDN1haRHBWTEJZTWlEMVdwRmRuWTJDZ3N0eU0zTlJXNU9EaUlqb3lBbkJSODZlQUJXcTNjODY5U3RoNk4vSEZFb2tsSlRUOEptczkwOFlEdDc5aXd1WGJxa3BIVlVwZmRubVFqb3dCdVZxM2JpeE4vWXN1Vy9XUHZCZW55NitRc3dESVAxNjlkVjZidm56NTFEaDQ0ZHk5MzQvUHg4N05qeHpWMEZiQWFEQVhGeHBWWCsycldUWUREa0FmQ3lQQnc5K2dlR3Z6d1V6ejM3TkFhL01GRFJkS29xS1UyYVlQZFBlL0RGbDF1Umw1ZUhEUlhjcDQ4LytoQy8vMzRJYytmT3I1QkRyenFrcXNla2xNSlNhRUhRTFhLSEpDY25vMUdqUnZqdHQ5K1VvRkJaNEIwK2ZBVCtQUG9IdEJydGRUMFk5SG85Qmc0YytLYkJZT2haZ2IvTnE3bDUvVzBNSVFTQ0lFQ3Qxa0FRQk9MeHVCRVVGQXhlRUhENDkwTTRmU29WRE1QQTRYREFaREtoVjYvZStPYWJyekZrOFBOSVRUMkp3RUJ2LzRUbXpWdWdaNjgrR1BuNkNFeWZOZ1VCK2dEb0EvUTN4OGVXbloxZExsZk50MVRLQjlSUVVRVFVicmQzbHBvWjM1QlphN05hRVJRVWpJQ0FBREFNZ3hlSHZvU0xGOU9seFpxSFJRc1hJTjlrUkdoWURZd2JQd0dKaVVuNCtlZWY4Tjh2UGtObVppYm16cGtGalVhRDU1NTdIbDI2M28rbFM5N0JzVCtQd21Bd1lQakxYcjYzdGUrdng0YjE2L0RubjBkaE5CaVEwcVFKTHFaZlFHUlVOTjU1ZHlrb3BWaTlhaVgrK09Nd09BK0g5aDA2NHJYWFI0SlNpbkZqUnVIK2J0M3h5S09QNGNTSnZ6Rm45bit3YnYySHQwVjNiVitKaVltQklTK3YxSHM1T2RsbzJkS2Jpckx2ZjN2eDZhWlBzR1RwY2lUVXFnWEFHeldzYUhHVkJUdTN5NFh2dnZzV2ZmbzhCSzFPaDdpNE9QVG84U0QyNzk5WGFyOHRYLzRYUCs3K0FjdFdyTHJtaE5PcmxhczU1cEVqaDZGUnE5R2dZY09iZm4ra3NrUDgrZWVmQUFDV1pjdFJ5OXRzTm93ZlB3WURueCtFczJmU3NHRCtYRXlhUFBXYWdrVk9weE5idG14UkFYamxyNy8rTWpSdjN2eFB5ZGNtU3Y0MkpXSktLU1VNdzhMamNWT24wOXVVbmpBTW9xS2lFQkFRQUoxT2g3Ly8rZ3VpSU1KaU1VTWJGNC9uWHhpTUJnMGE0bUo2T2k1bFppckhmVzdnODNodTRQTUFnSmVHdllpNmRhdGVVSC9OR2x0UlVWR0Z1V3FWZ0JvcDA2V2R5YzNOamRkcXRSTnhBenUwdDI3VEZqVnIxc1RMdzE3RTExdTNRS2ZUb1hYck5nQ0FPYk5ub1dmUFh2aDQwMmQ0L29WQm1DNVJMRC93UUErc2ZYODlhdGFNeDdTM1ptRHQrK3NWczJqVTZMR1lNSEVLa3BLVHNmYjk5YVU0cE5xMmJZY1pNMmNoTXpNREgzMnlHWmN5TTJHeFdHQTBHaEFZR0lBTkd6L0d4NXMySS9Ya0NSdy9mZ3lFRUV5Wk5oMmZidm9ZYVdtbk1YZk9MRXg3NisxYkJtclMvZkJxSDZLb2FOSUE4SERmUjdCMzd4NGNQdnc3ZUo3SEw3LzhqTlNUSjlDelZ5L0ZIMGtJd0xBc2lvdUxzUG5UVGRMdmxHYUtpWXVQeDZHREI4RnhIUEpOSnE4MnJOWGlrNDgvd3VlZmJ3YkhjU2dxS3NTK2ZmOURzMmJOTHB2Q083WmoyOWRic1hUNXlwdkdVMWZWWTdyZGJ2eCs2Q0RtejV1RDRhKzhla3NvM2ZQejh4V0EwbWcwQ0FzTEs5Y1E1Y0tGOCtqYXRSdis3N21CbURaOUJqUWFyZUpqdXc2cFc3OSsvUmRIalJvVlc1Ry9qVkxLTUF6RHlGUmpIbzhISE04UnpzUEI0M2JEWVhmZ3pKa3ppSXFLZ3QxaFIxRlJFUW9LQ21BMEdQREhIMGV3Zk5rU1BQbFVhVjVGanVPdzZaT1BRWWlYeDYxYU5UWkJFSkNlbnE0RUMzd2pvQldrZFpBeWFSMkVVc3BFUjBkUElJUThlQ052dUVxbHdveVpzM0Q2VkNxKy9mWmJESDVoSUdiTm5vczZkZXZpN0prMDlGemhKZXhyMDZZdDNuVzVZRElhRVIxemJXbTlXcTBXT3IxZU1Wc0RBdlRnT1E2eHNYR0lqSXpDeEFsandUSXNERWF2MzlIcm00ckE2REhqOFBxcnIrRDVGd2FqU1pPbXR3VFV5aWJvTHBnL0Z3dm16OFdEUFh2aHJla3pVTDkrQTd3OWN4YmVXNzBTaHJ3ODFFNU14TUxGN3lJbXhwdGYxK2VoaDNIeTVBa01IZklDV0ZhRnh4N3ZoL3IxRzhCU3BseG96Smh4V0x4b0lUWnVXSWZhdFd0ajNZYVBvTkZvc0dEaFlxeGNzUXhmZlA0WjFHbzF1dDdmRFlNR3Y2ak1yVVVMdldiZ3MwLzNMMjBtYnRxTTJOaTRHejRlVlQzbXlOZGVCU0ZBWW1JU3hvNmJjRVB6MklLRGc2dThiMFpHQnNMQ3d0Q2pSdzhBd1BIang4djEwbWpldkFXYU4yK2hySXV4NDhiZklQL3J6bTZ0VzdmT0FMRENSMnNUQVZCQ2lEZEdTa1VxMTR2eVBFOFp3cEFTYXdubE9RNmhvV0dJam9tRjNXNkhXcVdHV3EzR3JsMDd3RElzbm5yNmFiU1hJdXVBbCtKOCtkSjMwYng1Uzh4ZnNMaENiYk95Y2JzbVlQT05nRmJHcVZZRzFHUUdBTGxjYWpnaDVOVWJQVUZQbno0Rm5VNkhSbzFUMEtoeENyNzl0akUrK0dBdDVzMWJvSmhHaXBuRU1LQzQ4VngwZi8xMUhMdDI3c0RTWlN1ZzFla3dZM3JwcWpDSHd3RzFXZzJYeTFudEFOYXJkeCs1UTNncHFWKy9BZjYzLzhwOVREdDI3RlRwd3RWcXRaajIxdHVsM3F1bzRXMmJ0dTBxWkhtdFY3OCtsaTVmV2VGdnN5eUx2ZnNPM0ZTZ3I4b3gvMm04YnNRNTJPMjJLa1VxNWFxYjY1VlBQL3ZpbXI2blZxdUhiTml3SWVQRkYxL2NCaS9GcmtnQktyV1NwL0NtZ1lpaUtGS0JGOEFURG9FQkFVU3IxVkdkWGdlMzJ3V253MXVOb0ZLcjBLMWJkOFRHeHFGV3Jkckl5TGlJT25YcUFnQTZkZXFNVHAwNlYzb2VkcHUxVWovb1ZadWllWGw1Q2dXUmIxcEhCUkZRK0lDYW9xM1o3Zll1TE10T3JJN0prWFhwRWhiT253ZTczVnQrWWk0b1FHaG9LTFE2SGVvM2FJZ2ZwYWplSDM4Y2dWcWxRblQwUDJ0cm9hR2hLTWd2cUxDN1ZFVmlOcHVoMSt1aDFtaVFuNS92ellXU2lva05oank4dDNvbDN2OWdBdzcvL2p1T1hFWDR1bkxIYmdEOGNuVmpjeXZIckxKalIwZEh3M0dGV3VlQWdLcVp2RlhkNzNwL0t5Z282SlYzMzMyM2hSSk1rSnJDeUNhcG5BSWlpZ0xoZVFFY3o0UGpQUEI0WkFaZUZ4d09CK3cyRzBxS1M3d012UGxHS2JtL2FrbnFkcHNWMGRIUjF3OXNEb2VqRkZ2SFB3UUx5aVhocHFXbGhXbTEydkVBcXFVT3FtZXYzdWpjcFN0ZUh2WWlubjNtS2FTZVBJSFhSM3BwM0taT200NXZkKzNFNEVFRHNYSDlPc3o0ejV3cU9WSVRhdFZDMjNidDhQU0FKL0hDd0dkaE5CcXV1SCtuVHAyaDArdngxSlA5TUgzYUZOU3RWeDkydXgwOHoyUG0yOVB4MHN1dm9GYnQycGo2MXR0WXZIRCtkZnM5NUNlOVg4cFArc3BLc0poYk5HWjJteFZzSlJwR1hGd2NLQldSYjh5cjhOeVM2OVQ3UjlBS0NBaEVjcDBieDFqN0Q4ZU1pNCtQSC9UQ0M0TnF5T0JHeTRNYlF5a2xvaWdRZ2VmQmNiemtiL1BBN1hMQjVYVEM3bkRBYXJPaXVMZ0lGck1GSnFNUjJWblpTbCtGeXNiUlpNZ0ZDQ290UDd3cWF2RFUxRlNrcGFVaE16TlRxUVgxTlVWOUtneUlyTFZKdmpWR29pR2F4VERNaEJzeDZMZUtTcm02cFRLcTQ4cjlMWmt3V3l4K29za3lZalRrSWpJeUFvbTF5M09mWldSbXdteSsrV05tTk9RaUlpSUNTVmZnWXpPWlREQVlET0I1SGxicjdjOVc0M0s1VnZYdTNYczlBSWUwdVFCNENDRWNBSjRRSWhKQ1JJbGFYS1l2b2xxdGwxbzhJQ0FBZ1lHQkNBNE9SbzBhTlJBUkVZRzR1RGpVcmwwYnljbko1VFhGNEdDb1ZTckV4c1pXcXExZGxZOHRLeXNMMmRuWk1KbE1NSnZORlFZTFBCNVB1ZFFPT1ZqZ2NybWV1RkdnZHJYTzFqdEpydmE2RWhOckl6L2ZCS01oVjJFNXVkczFOWnZOQ29Ibkt3UTFBRWhLVElUSmRQUEdURDRuVVJDdUNHcXlTWHFsQlhzYnltdFpXVmxuYTlXcXRWZjJ0eEZDbElBQ0FIaFpQd2hrY0ZPcFZOQm9OTkJxdGREcjlRcXdoWWFHSWp3OEhGRlJVWWlMaTBPZE9uVlFTMG9udWxxcEVyQlpyVmFsc3FBc3FQbldnUHFtZHZpYW9FYWpzWlphclI1N3E1eXRkOUtpdk5wRVZFSUlXclZxaFlzWm1iQll6Q2l5V09CeTNaMGNiWHA5QUJpV1JXUkVKQklUcjd3ZzJyUnVqY3pNUzhndktLaldNZFByQThDcVZQK29xZDNKVXJObXpjRmZmdm5sMmFlZWVpb2JsNk9rTXJCUk9aTGdKYWZrS2NNd2hHVlp5cklzWEM1WEtTSktHZXdDQWdJUUhKdGcwTndBQUNBQVNVUkJWQnlNc0xDd2ExSmlxclNLWk5QVE53bTNnc29DWDFDVHF3c0lwWlNKaUlnWUE2RFZqUnpNNk9ob0dBekdmeDJ3eGNkZmZUb0RJUVIxa3BOUUp6bkpiNE5lcGJhYitDOEZtNXNwaEpDV2ZmdjJIUUJnRlFCQjZvL2dqWlpLcEpUd0VsTlNDZHpBY1p3Q2JpcVZxa0p3Q3d3TVJFaElDSnI0a0M5VVZmNHhlSkNWbFlXY25CekZuMVlacUYzQkJPMWZIYWtkaXJQVlpJRGpEbmVlTyt3MnJ6TVU5SVp4c2ZuRkx6ZFRkRHJka096czdNNlF5cTBvcFJwSXlidStnUVJCRUlnRWJBcHV5QjJ1SEJMTlVVbUpOMHFhbjUrUG5Kd2NoZUxvaG1sc2RydTl3bncxWDhKSUdkaDRuaTluZ21ablo4ZXExZXJSMVRXWTk5NTdMNHhHSTR3bUU2d2x4WGNrTmJqc0RFMUlxSG1uK1ZiODRwZFNFaDhmUDJqanhvMnBRNFlNRVNSL20rQnJscFkxU2FYcUJPcExSR20zMnhXdFRRNHNoSVNFSUR3OC9LcXFQSzRJYkdYejFjcEVQbjN6MVNveVFVbE1UTXdvQVBkVjUyREd4TVJjZFM5T3YvakZMOVZpa3JZWU1HQkEveUZEaG53QWdQY3hTUVhKSkJYaFpkMVZURktHWVloS3BhSXlDNGh2WUtHb3FLaVVyNjFSbzBaVkI3Wk1uNkpUWDhuUHo4ZVpNMmRLTVhlVTlhK1ZEUno0Y3F5bHBhWDF6TXJLR3UyLzNYN3h5MTBsTCsvWnMrZG90MjdkRHN2Z0JpbFNLaGZMUzAxZzVLcDVoVlB1Y3Zlcnk2WnFXVE8xcWkzOFZJbGhQNVI3aytNRjVGL01BbkVhUU54bUVFOHhDR2NESTloQkJCY2d1QURCNDkxRWpsQlJBQ2dsOGpiNC85cXc5YVAzalBMZlk3LzQ1ZTZUaEdiaS85VkxydkgzK1l1RlBBQ0JBQUpBWmJPVWdSZk5BQ3FDaWp5RjZDWVFYQlNDQXhDc0lJSU9qR0FCNGZKQlBMa2c3a3dRNXpuQWxvcjQ1RnBRcS82NTkwV0Z3WU9zYkFzTXBtS1lMVFlVRlR0aHM3bmdjTHJoZEhKd3V6bDRQRHc4SEErT0Y4RHpJZ1NCUWhRcFJFb0pCWmozbHcwZUNlQUIveTMyaTErdVRTaTljOCtkWlptdWgvZE1md1J5SU1FYlJKQURDU3lWaUNsRmtVSVFLSGhlQk1jTDhIQThQQjRlYmpjSHA1T0R3K21HemVaQ1ViRVRab3NOQmxNeExtVlZyVktubkkrdHVNU0ozTHdpRkJSWVVWamtnTlhxaE4zaEJUV1htNFBidzhQakVjQnhBbmhlSkx4QUlRaVVpSlFTVUJETHhYY2JzQ3p6aG45cStzVXZWeWNpQlF5V1NKZ0t3eUNJTEd4M2RqcmlvQVVMRmh5Wk9ISGlSYTlKNmcwbWVFMVNpSklGU2tSS3dBdUVjZ0pEUER4TDNad0tUbzhhTnBjYUpVNHRDbTA2RkZqMU1CWUZJdHNjQkVOeENQSks0bEFuZ1VOY2VBRXFxNG9zQjJ3NXVZVXc1WmZBVW1oSGlkVUptOTBOaDlNRGw4c2pnUm9QanVQQisycHJGS0FVaEFKTVNJaitOUUFKL21ucUY3OWNIYWdkTzFjZllNTVFGSEpuOThtVnBHWkM3ZVRISjA2Y3VCb0FEMitFVkg0VlFRZ0Z2RzM4Q0NFZ1VyTmxJdEVkc1NvMVZDbzFWR29OMUJvdE5Gb2R0TG9BaUNRUXhUWTE4b29Ta0djT3c3MzF6MWNJYnFWTVVXTitDUXpHWWhSWWJDZ3Fkc0JxYzhIaDhNRHA0dUJ5eTZBbXlDWW80YjBtS0tFaUpaU0NPUEpXZENlRXZQSnZtbkRqcG0zQi9YM2Z1V0cveC9NQ1JrMytBdEgxeGlHMDlwc1lQbW9USEE2UGYyWGY1V0lvakFUWU1NVEV4djlya3M2MVd1MmdQYi91YTQ3TFZPSWFTdUZESmU3Tm5oQkZrUWlDQUY3Z0NjOTVBd2VjNS8vWk8rL3dLS28yaXY5bXRtVlRJRTE2Q1VoSGFWSkUwQUFmVWtSQkJDc2xJQWdxTFlMU2xkNkQ5TjVFcFNnSWlpQktFWkFlbENJSVVnVUVFdEo3c21WbXZqOW1kNUpOSXlCTjJmTTgrMEIyWm5idTNwMTU1MjMzSENzV3F3V0xROFpQMVQ1SUpENHVqdVNVRkhRNkErZ0tjelBlTDlkenV4aTJHeEVKUk1jbWs1Q2dHclhVTkF2cEdkYk12SnJEc05udHNtQzNPMEpRR1VFQkFSQ05Sc1A3N2tzMGZ3d2JzNUZOUC96T3VzOTZzV2wxSDNidStaTitnOWU2SitZUlIxUjhvZitjVGk1QXVmTGxPMlF4YkFaUURHU3FXNG5PMWpCSmxnWEpMbUczMndXYjNaWlpGYlZtVmtWVFVsSklURXdrTGphV3lKdVJlUHY0M3Rxdy9YMDlUZzFCNDFKSlRFb2pKZFZDZXBxVmpBd2JGb3VqV0pEcHJTRkpNcktzT0FzY1lrYlV2RGNFZ1JmZGwyamVTRTIxTUcvcGJzTEdkeUM0Y1NXQ0cxZGk4YXpPckZ4emtKaFlOL1hRb3dwRkFVblMzNUduZHViMEh3d012ZmNwN1ROblRoTTJiWXJHYWVqRXhvM2ZFTkxsTFVLNmRuSVI1SW1Pam1iZ0J3TjR1M3ZYbGkxYXRtcE1GaXB4UlZIVUlvS2lpQTdtSHhSSHE0Y2syYlYyRHlmRlVZYWo1U00xTlpYazVDU05Vand4TVFtN3JNKzEwQ0lDV0cxMk5RU05UU0VoS1kza0ZBdHBhUmJTblViTldUQ3dTOWp0a21DWFpDUVp4N0lweEk4L2FxMHo2SFh2UGVnTDVPbm1rd2tkOWhYQmJjSUlxakdjSnhxTzRmdXRKN1R0ZFp0TVpQallqVlN0UDRyaWxUL2k3UGxJTEJZYll5WnZwbnpORVhnVTdVTzlwaFBac2R0VktOZG1rK2dkK2lYZUpmdFR2UEpIZkRwdmUrWVBHSlBNSzUwWDRsZjJBN3hMOXVlRlYrZHc0VktVdHIxajEwWFViVElSZ0dPLy8wMTZ1bzNnUnBXMDdjODJWRVh2RDRaZmROL2hqeWdFQVZMU2hEczZ0bktWcW93YU0vYWVqbS8rdkxrc1c3cUVTeGN2YWlTdUFGZXZYbUhEK3ZVc1dMU1VaY3RYY3VMRU1ZMDhkZjY4T1RScjlqOVdmcjZLZDk5Ny8xVVBEN09ITXh6RlVTRVZCRUVIT0kyYnl0c21TVWlPVlV3Mm13MnJMWXV5ZkhvNnFTbXBKQ2FxSVdsMFZCUUppVkt1T1RZOXdJMGJDVVRISkJPZmtFcFNrbG9GVFhPMGRsaXNkcXlhcHliaHFJSTZ2RFUxRFAxNDhFdTlLS0NDKzczR2dtVy9zSFY5UDVvOVY0WE5QLzdPSzEwV2Nuam5VR3JYVUJjN3o1aS9rNVVMdW1FeTZxbFVvU2c5KzMzQmp6di9ZT0duYjFHcFFsR1dmcjZQRjE2ZHcvRzlJNmxXUmVYck9uRDRJdVhLQm5CMHp3aU9ucmhLajM2ZlU4akhUTSt1alFrZDlqVVdxNDN3bjRjQzBHL3dWNFM4OXhuN2YxSVptanEycTBOOGdscmV1aDZSZ05Hb0o4QS84OGxzTU9nSThQZmkybzBFOXgzdVJnN0V4c1l5Y2NJNFlxS2pFRVNSOTk3clE0T25HM0x0MmpVR2h2YkhaclBpNit2SGlwVmZaS1k3aG56RWpSdlhBVlYweWRQTGl6VnIxd0VxcmYrY1dUTklURXJFMzgrZndVT0hhVm9XQU91Ky9vb05HOVpyK3dQMGZLY1hScU9Sc0dsVFhNYjIrNGtUUEZXM0xwNmVudGp0ZHZ4OC9UaHgvRGoxNnRYbnhJbmpmUENCU3VqajYrdGJyMFNKNGkwdVhicTBHYkE1WGxvaFFWRVUyUkdTT2xZa1NPaDBkdXgyR3phYkhxdk4wYWlibms2YVNRMUpFeElTaUltTndXVEl2YWRObjU1dTFYcldFcE95VkVFMW8rYklxemx5YTQ0UTFPbXRDU2YyZlZ4SXB4TjdQU3dYd2xzZDY5SHNPWldBOHNWV05XamVwQ29MbC8vQ29wbXE5bVdiRmsveVdudVZhQ1F1UHBYUFZoOWcxWklldk5SYVZmMmVOcTRqaDM3OWl5bXpmbUxsQWxVNXZWalJRaXliMHhXVHlVQ2xDa1g1N2ZnVjVpemVSYyt1amJsOE5aYlNKZjBvV2R3UFQwOGp5K2QyNWRxTmVHMDhiM1NvcC8wL0xkMktoNGMrbHlTckhvdlY3cjZMM2NpQnI5YXVwa2FOR29SMGU1dExseTR4Zjk0Y0dqemRrRktsU3ZIMStnMmNQMytPaWVQSHVSd3phY28wQUJJVEUrajlUZzgrR1BnaG9NcjJUUncvbHZFVEoxTzhlSEYrK25FckMrYlBZL1NZek9OcjFxcVZnM2s0TDRIbHhNUkVQRHc4aUk2T1p0S0VjVWl5aEk4alQ1aVltSWpKdzRQdk4zM0hqaDNiOFBUMGZMVkh6M2YyTEZ1NnhPbzBiSTVWQ1pJajM2YklpaUlJYWtpcTJDVzdZTFByRkwwekpEV29JV2w2ZWpxcHFTbHFTQm9majBFdmtwNHVZemE3amxHOEVhbUdvUEdKbVQxckdlbVpCUU9iemRtemx0VmJBOW5oclZXdFhMd25VTzFodVJEcTFIU2xvYWxlcFRpbnp0elEvcTc0ZU9aQzh6Tm5JNUJsaFliMXlyc2MwL2pwQ3Z4eEpsTlhzMjd0SUV3bWcvWjMvYWZLOGVlNVNHUlpac2lBbG56LzQrOEVQajZRTnEvTjRic2ZUbEM5U3U3TXJHWVBBMWFybE9OOWk4V09sNmZSZlJlN2tRUDE2amRnNTQ3dHJQeHNCWmFNRE1LbXp5alFjYklzTTJiMEtOcTgySmI2OWRWZzZxKy9Mbkh0MnQ4TUh6cVk3aUZkV0wzNlM2SnV1dW9MVktwVW1WYzZkQ3p3K0U2Zi9vT1JJNGJ5VHU5M2FkclV0U2QvMG9SeFhMNzhGMkhUWjJJeW1hcDA2OTdqZVZ3S0NZNEtxWm9TRTFDOU5tUlpRckpMU0hhN1F5dEJyWkphTFJZeUxCbWtwNlZyaFlURXhFUnVSQ2JtOU5qVW5yVVVraHplV3JyVFc3TTRRbEJuejVva0M1SmQ5ZGFjemJobndzZjQ2WFJpejRmcFFwQ3phVnRtV096b2RKbkYzNndHSkx1Vnovb1pXWVYramRuY1hiMWVSSzhYRVVXUnRpL1U1UHFaS1h5LzlYZCszUGtIdzhkK3kveGx1em04WXhpZTJZeFZxUkorWkdUWVNFaE13N2V3cDVhL2k0MUxwV1J4WC9kZDdFWk93MWF2UG5QbkxTVDhTRGlmcjF5QjBXaGt6TGdKdHp4dTJkTEZlSGg0MExsTDF5eTVZaHZGaWhWekNWdi9DUW9YTGt4R1JnWmgwMmRTcUZBaFRwdzRUbUZmWDIzYk00MGEwNkpsSzgxYkxGNjgrS3U5ZXIyN2MvSGloZFlzNGFpZExMeHRMbDZiWFJKMGRydmlVaVcxV0VqUFNDYzFOWTNrNUdUME9vR29hSmxpUlF2aDVXbks5TmhpWXBOSlNFeFhlOWJTclZyQndLWlZRZVZNYjAxV3ZUVm5idTN4Y28rOURUeitNRjBJNFVjdnUveDk2TWdsYXRmSW5VMjFZdmtpNlBVaUI0OWNjbm4vUVBoRnFsVEt6RHVjdmVENlZEdCs4bStxVlZZSklZZU0yc0Q1aTFGMGVlTnBWaTNwd2Y2ZlB1TFU2UnNjUDVtVFE2cDJqZEtZelFiMkhqaXZ2YmZ2MEFWRVVlRHBiRjZqRzI0QVRKbzRudkFqNFRSdi9qekRoby9rMEtHRExnL2QzTEJ2MzE3MjdON044QkVmdXdnV1ZhaFFnYVNrSkg3WnMxdkx0MzIvNlR1WFk4K2ZQOGZHamQ4VWFHeFAxcWlCMVdyRlpESWhTUklIRCt5blppMVZ5N1JXcmRyYU9JLys5aHRCUWVVd21VemwrL1R0MTV4c1JZVHNYcHZzOU5yVVFrSm1sZFNtQ2k5Yk1qSklUMWR6YlNrcEtjVEVKaE41MDlWcjA4Y25xQ3NNVWgzZW1zVmlVOWRzT1VOUW04TmJrMXk5dGQvMkRQZlI2Y1MzSDdxY3hJWmZlYWIrNHp6ZnRDb3JWaDNnNU9ucnJGclNJOWQ5Zlh3ODZOZXJHWU5HcnNmYnkwU2xDa1ZaL3VWK0RvWmZZdXJXRDdYOS9qaHpnNFhMOS9EdTI4RWMvdlV2NWl6YXhkSTVYUnhHTDVJK0g2NWhYdGliQlBoN3NXTFZBYnk5VFpwaFhQdk5FZUlUMG5pdlJ6QmVYaVo2ZEdsTTM4RnI4Zkh4d0dqUTB6djBTN3AzZWdaL1B5LzNYZXhHRG5UdTNKV3dzQ21zWGIwS1daWVpPT2dqUkZGMEtSNGtKaWJ5V3NkWHFQUFVVd3dkTm9LNXMyZVNrWkZCbi9jeVU5OXo1eS9DeDhlSFNWT21NZlBUNlN4YXVBQlBUMDhHWmhOU1BuYjBLQnMycktkOSt3NjNIRnZac2tHMGI5K0JkM3YxUkVIaDJXZURxVmV2UGdEdjkrbkg1RWtUV1BmMVY1ak5ab1lNR3c2QW43OS9oL2F2ZE5pK2NjTTNOc0RxTUc1MlZHVXJsVzFYYmRwMTVOcFVyeTFybGRSaXRXcTliVG9SNGhNa29xS1RLVjdVVjR1U2hGbVRYK1ZHUkR4Uk1jbkV4NmVTbUt3dWVrOU5zMnBMcVRJc2ttQzFTdGp0aWlESmlxZ29pTmJvK2YxME9qSHNZYm9Jbm00K21TZXFsdURDWDlFY09uS0pHdFZMTVgxOFI1NTlSbTJwcU50a0lpKzNxY25Jajlwb3gxaXRka2FPLzQ0dnZqcEVRbUk2dFo0c3pmaVJiZmxmc01yOTlPSEk5Wnc1RjRHZnJ5Yy8vM0lXblU1a2FHZ3IrcnpUQkZEYlBRWU0vWXJ0dTg2UW5KSkJuWnBsbURhMkE0MmVWbVhRT25aZHhPV3JzZnk2ZTdnam4yWWpkTmpYclBubUNLSWcwTEZkSFdaUGVRTVBENFA3TG42RXNlZDQ1ZitrNmxwdWlJK1BuMWpqaWFyZkF5bEFLcEFtQ0lJRlZkM0s3bEMxa25VNm5XSXdHakVaVFlxSGh3a1BzeGxQc3lkZTNsNzQrQlRDdDdBdm9nZ05hMG1VRDNxTWFsVktVRDVJcFRVU3hvOTh5WFVabGNON1MwMnprcDVoSlNQREpsaXNFamFiSWtpU0xNZ3lZdWZYNitrL1c5RGpNUERrdzJiWVdqV3Z6dWloTHoyeU40aWlnQ0M0di92RE1tY0YvZXhIeWJBcGl2SkhvNFlOM3YvNzc2c3BEdU9XSmdoQ09tQkJsZXlUUkZHVVJWRlVEQWFEb2hKUGVpZ2VIaDZZUGMxNGVucmg3ZTFONFVLRkVRU0Zlay9LbENubFQ2VUt4YWo1UkdrOFBBem9VeHk1dFl3TUcxWkwxdFVGV1JhNVordGJXenFuVzVlSHphaGxoK0RiKzEvM2cwZWVtMGJSSXJlL3JFWlM5RnlPcWt4OGtoNUpGc2xJZnpSVnFqek1ablNpZ244aE8wRkZ6aUlLZWJmUXlBcGNpYWxNYklJSlNkYmRzemxUeHlRVFdOaEMyY2ZPM3RMSVhiOTI3Vkg0cWFvdldMajQyUmZidE5ycHlMWFpGRVd4Z1dBWEJMV1FJTXV5QUNnMm15M1RJT0pZNlNTckt4VThUQ2ExdVRsRklqRXBrOW9vcUV3Zyt0UTBpNE81STF0dVRaS1JKRm1RSk1XeHlrQjlvU0RxOWJvdUQvMVRJV0hSSTNFenA5djkrUDFDS2ZRR0Qzd0t1M1ZGVTFOVGlFOU9JaWFoS2pVZnY0cEpuNWlyVWZ2MTNCUG85T2I3TW1lcHFTbkVKaWNSRmY4RTlTcWR5dGU0bFN6MWFCRGpGQzlSb2czd2k4T3dXUUc5SUtESDBkZUdxbXdscU12UUJRVUVRUlFFUlJUVmJnUlJwOE5pdFNLZ2tKb21rWnljUVh4Q0dqRXh5WlFxNFllWW5tNVR2VFdyU3lNdWRydUVKTWxxSmRSQm5xU0FrSFp6Ym11ZzhjTTRXWWQyREgza3d0REl1Q0xvRFI3L0tWYUlmd0l2TDIrS0ZpdUJUdTlCUkZ6dWlsK1hvNnVoMDV2djI1eGxqc25NbFpqS3VBR2lLRGJjcy9kQUxUSkpLQTJLb3VoUUs2U3FOVk1VRkVWV0s2U3lNNHJNdXBaVWxTUklUN2VSa3BwQllsSWFzZkdwUkVZbElhWnJQR3RxejVyTkxtR1hIRWJOR1lKbU1uZ0lSb1B1VGZmUDh2QWdOdEgwbjJTRitLZnc5aWxFVEtJcDEyMXhpZm9ITW1mZVBvV0lTVEM1Znh3SFNwY3VuYjMxdzhuOG9YT3lmamhvalpBbHRmM0Q3bGdrYjdmWnNEcGFRTkl6cktTbVdVbE95U0FoSVkyWTJHVDBGa3NtZWFUV3M2Ym0xZ1MxYjAxeFdFNkVoQ3N6bnhRRTRkWGJDZ2tmNFdUMnZaNGZTZFloeVRxM3A1YUhsNVFZSDRzc2d5aTZ6dmVEbWpOMVRIRjM5SnNuSlNaeSthK0xwT2Fqb2V2bDVVMVF1Y2NwVkxqd1hSbnZ2VDZud1dCb3UvYXI5Vis5OFhySEMyUlNoK3NGUWJBN3dsRlpsZXhUQkVtU0ZVbVNCTWt1S1U2dnpXNnpBUW9XaTB4NnVwWFVWQXVKeWVuRXhhV2lWM05yV1pkTnlRNXZUVmFMQmdvNCtkYTh2RXl2RjJUQS96R0s0M3Y3RlBjRW5VNmlpRzlDdmxUSHVVRW5Tbzlzb2FBZ1NFOVBkekZxb0JxVUJ6bG42ZWxwZC9RZysrdlNCZExTVXZQZEp6VTFoY3QvWGFSR3JUcDNaYXozNDV5MTY5UitEcmlhSmRkbWRYaHRrcUtvdVRaRmtSVlZ4VXB5cFRheTJ4RlFzRmdsTWl3MjFXdEx6aUErTVExOUZ2MENOYTltenl3YXlBNVhFQVZoODFkOVBFUlJlTDBnUnUwL1JuRjh6NUdhbWtKRWdsKytWTWQzaXUzYmZtTEY4bVZFUmQya1JJa1NmUDdsR3M2ZlAwZVA3aUhhUGtPSGorU0ZGOXE0ZjRpSEdMY3lNRm12cFgvVE9UMDl2ZHEwZTduOSt1KyszV2pKekxWaEV3UkVVQnk1TmtGUUZCbEpraFZKbGdTN3VrZ2V1OTJHQUZpdE1oa1dHK25wVmxKU00waEtTa2VmblVEU25pVzNsblg1VlBPbTFWNEZTdDlxb0ZrcGp0MG9lSWppNWVYTnpVaVptL0YrRlBPUHZ5dWZlK1BHRGFaTW5zaVljUk9vVjY4K1NVbEpBRlNvVUpIdE8zY0Q4RTZQYnZmc2V5MWZ0cFIyTDdjbklDQWd4N2htelpqT3laTy9ZelFhYWY1OFM5NTd2NC9HS25IdDJqWG16SnJCeVZNbk1abE10R2pSa2w2OTM4dkJPbkUzY2F0elB0ZTRJUWFEQVVFUUNRb0tvbnVQbmpScTFOaDk4ZjV6bEJyNThhZ0czMzI3Y1JmYUVpdEZEMEttUG9KS0lhNWt6YldwaStRbFFNRnFrN0ZZN0dSWWJLU2xxN2syMFJtQ1NwS2MyZUloWjdaNDRHengwT2tLdE9UL3YwcHhmRi9DMG55b2p1OEVaLzg4UTJCZ0lJMGFOY1pvTkJJWUdPZ0l4d1JNSmhNbWs4bGxMZUhkeG1jcmxoRVhGNXZqL2RHalJsS3lWQ2syZnJlWnhVdVdjK2pnQVRadCtsYjErR1dab1lNL3BGTGxLbno3M1dibXpKblBudDI3MkxqaG0zczJ6b0tlYys3OGhYeS9aU3ZkZS9Ra2JPcGtObnl6L29GY0o0SWdVS2RPSFZxMGFFSHo1czBwVWVMMm5BaEprdGkvZngvRGhuekV0Yi8vdmk4cGdiRmpSdkhXRzYvUnZWc1h6cHcrclczNysrcFZ4bzhiMDR3czFWRWM2MGVkREx1U0pBbVNKQW1LSWd1U2F0d0VwN0N5SktrUnA5VnFkL0hhTk1QbTB0NGhPU20vMVJhUCtLc3puaEFFV3Q3cUMvd1RpbU0zVk04dEw2cmoyOEh4NDhkNHVXMGJwazJkVEdSa0pDKzNiY1BMYmR1dzhyTVZCZjZNUXdjUDBQbXROMmplTEpnZTNVUDQ0OVFwbCsxN2R1OGlwR3NuWG1qMVBOMjdkZUhRd1FQYXRuNTkzK2ZsdG1wbys4R0EvcnpjdGcxOTMzOVhNeUxCd1UzcEd0SU5rOGxFa2FKRnFWdXZIdWZPbmdVZ0xpNE9QMzkvT25YdWpORm9wRlRwMGpScS9DeC8vbm5tbnMzNzdaelRiRGJUcUZGamhnMGZ5WkxGQzEwWVplOFh5cFVyaDA2blk5dTJiZXpkdTVlYU5XdGlNQmh5TmRpNS9YOUEvNzc4c21jM1o4NmNScEtsMnpwMzQ4YU4wZXYxZVQ0Z2N2dDczZGRmNGVucHllcTFYek40OEZER2p4dUQ0cmpJWjg2WXpzdnRYMm0yWnUyNjBtVFRId1YwZ2lBSW9pZzYxNDRpYXpVQVNYczVxZFdzRmpzWkdUYlMwcXlJem9LQlhTc1lPTFVNdEtLQjRPM2wwYjVnVDVJN3B6aDJRMFZLcXZDUGMyeTFhdFhtMjAxYkdCQTZrSklsUy9IdHBpMTh1MmtMSWQyNkYrajRpeGN1OFBISTRielhweTlidG03ajFkZGVaK0FIL1RYdXJpdFhMak4rM0JpR0RCbk81aDkrNHFXWDJqRml4RERTMHRTay9KeTU4L2wyMHhZQVpzeWF6YmVidGpCMy9rSUFSRkdrVStjdStQcXFudWxmZjEzaXdQNzlOR2p3TkFDQmdZSE1tVHNmRHcremRuTWNQM2FNR2pWcTNyTTV2NU56MXF2ZkFLdk5waG5rKzRuQXdFQnUzTGpoY0NaVWlpMC9QMWRQLzhpUmNFWU1HNExOWmlNdUxvNTNlblFuTGs0VkcvNTB4aXlHRFI5NVJ3NUlRRUJBbmw3K2h3TkRPWDdzcUdiTUZzeWY1N2llem11L2I5VnExVEVhalZ5N3BucUs1OCtmbzBHRHA2bFZ1MWFEWEx3MkVSQVZCVUVRQkxYdFE4bGFSSEMwZ05pemVtMTIwak9zaUhaSjFzUlpuR0dvckdTeWVLQW9naWdLTC8rVEgyTFF3RkJlNjlpZWtDNXYwYlh6bTJ6Wi9MMlcxM2l0NHl1MGIvY2kzVVB1N1dLRzdpRmR1SGp4OW5RRnR2MzBJNjkxZklVWFdyZGc5cXk4Q2Y1MjdOak82RTlHL21lTTYrYk5td2h1MHBSR2pScGpNcGxvMWZvRnFsU3R5amFIa0VkQVFDRExWM3hPdGVyVkVVV1JsOXEydzJhMTh2ZmZWd3Q4amo5T25hSkY4NmFFZE9sRWxhcFZlUzY0U2E3N0xWd3dEN09uSnkrMHVYODZRUVU1cHlBSStQdjVrNUo2LzBWNGpFWWpraVFSRUJCQTQ4YU5rV1VaazhtMVA2NXUzWHI0QndRd1p2UW5EQm80Z1BhdmRNRGYzMTg3L2w2Z1Q5LytUSnd3bnJselpyUDFoeTEwNmFvV3FCNnZVSUZmOXV4QmxtVXVYYnJFelp1UnBDU3I4L2I0NHhYWXMzc1hYbDdlemJNWk5YMm1jY3ZzYVZOa1J6anExRWVRVk1kTVZaS1hzRmh0cEdmWUVMTVlOYTFnSUN1QW8yaVFHakczR1hlQklmZWpJY05ZK2NWcTVzeGJ3T2NyVjNEcDBpV04zbmhxMktjUDVRM2VvbVVydmw2L2dXN2QzdVpSUW1Sa0pNV0x1K1p0eXBRSklqSlNaUlgyOXZibXQ5OStwWGV2SG5SNjgzVzZkZTJjYXlpU0g2by84UVRiZHV6aXEzVWJpSWlJY0ZFNGN1THpsWjl4K1BBaEprNmNuR2Y0YzdkUjBITXFpa0pjZkJ6ZUR5anRVcTVjT2FwV3JjcisvZnUxb2xCMnc5dTc5M3NjL2UxWFRFYlRQM293bU0xbU9uYnNTTWVPSFRFWURMUnIxNDZPSFR2eTJHT1B1ZXozZUlVSzZqM3oxUnA2OVg2WFFvWFVYUHVycjcyQlRxK2plN2N1ZlBINVozaDdlMlAyVkwzalFSOE81dWVmZC9KMjk2NVZ1b2FFVkhFWXM2eDVOcDJpS0NwWG0zTTFnaXdqT1VOVFdkWTZPbFN2VGNKaXNhR1hzcXd5Y0RUa09zTlFBTUZrMHJlOW16OUk0Y0srUFBGa0RTNWVPRS81OG5tVEt5WW1KakI1NGdTaW9xS3cyMjEwNnR4VlkrTThjK1kwTTJkTUp6MHRqU0pGaXpGMDJBZ3RNYjU3MTgrc1h2MGxsb3dNcWoveEpCOE0vRkRMUCt6NmVTZGpSMzlNZW5vR2ZmdjExN3lFYjlhdlU1UFhpa0xUWnYralcvY2V0L3dlUjQ2RTgrbjBhWWlDU01sU0pmRTBlMnJiOGh0RDgyYkI5Qi93QVV1WExFSlI0UHN0V3g4NncxYTBhRkVpSXlKYzNydCsvUnExYTZ1OVNudC8yY09xTDc5Z3hzelpsQ3F0RnNxZmE5d3cxNXNydTdHelpHU3dkZXNQdEc3OUFpWVBENG9YTDA3ejVzK3piOTllbC8zV3IvdWE3ZHQrWXRhY2VYZXQ0ZlJXdUoxekhqa1NqdEZnb0ZMbCs3OUV5bXExWXJmYk9YcFVEZnQwT2gwV2k4VTFwWkdTd2tjZkRhUnpseERPbmYyVEtaTW5NblRZaURzcUZxV25wN04rdlZvb2FkZXVIVC84OEFOWkY2ZG5qWEIyNy9xWjhSTW1NVDFzR2hNbVRhWlNwY3FZeldhR0Roc0JRRkpTRW0rODFvRVNKVW9DVUtwMGFUNmRNY3R4Myt4cStQbktsWDlrTld5Q0lEakNVVVhJR25xcktUTUpSUkdRSkFXN1hmWGFiRFk3Rm90ZERVVlZiMDBXSEVVRFRhaEZVUlJSRUlTN0dnTkVSMFZ4NnVUdlZLbFNOZC85enAwN3gvK2FQOCt5RlN1Wk0zY0JzMmJPd09wWUd6YnE0eEdFaGc3azh5L1g4TXd6alZpeWFJR1dyMW0vZmgxejVzeG41UmVyQWZoaHkyYnRNMzE4ZkZqNXhXcEdqeG5IL1BsekFaVlliL1BtVFN4Y3RKUWx5ejdqdDk5K1k5ZlBPL01kbThWaVljSzRNWXdhUFpZdlY2K2xUT215MnJaYmpjRnV0eE1WRmNXNmI3NWwvVGNiSDVqeGNuWnZBeWl5ak4xdTE0eFFteGRmWXMrZVhZU0hIOFp1dC9Qenp6djU0OVJKV3JSVTYwZXhzYkVJQW9nNkhZbUpDYXhlOWFYamMxeXJIc1ZMbE9EUXdZUFliRGFpbzFSSlFxUEp4QmVmcjJUdDJ0WFliRFlTRXVMWnUvY1hhdFNva1JrS2Y3K0piemR1WU9ic3VWcjRkTS9EN3dLZTAyS3hjUGpRUVNaUG1rRHZkOS9IeSt2K0U0UkdSMGRyQnNwb05PTHI2MHRDZ3F2SzJjV0xGd2dPYnNwYm5Ub3o4cFBSR0kwbUxjZDJyM0R5NUVrK25UR0w1NEtiTU9MalQvanQxeU11MjVPU2twZzJkVEl2dnRRMlJ6ajg5OTlYV2JaMGNiTXNJYWhXUkhCNGJLSWdDQzdMckZRYU5kbFJJM0ROdGVuVlNxaXNlV3V5eW1FcEFFSjY1THpXUU1tNzhhV25oMDNGN0dIR2FETFNwMjkvU3BjcGsrLytOV3ZXWXZteUpXemI5aU02blI2TEpZUGs1R1FTNHVQeDl2YWhhclhxQUx6VXRoMU5telVENFBEaFExejcreXJ2OW41SGU3SjVlL3RrNWgwYzdKNVZxMVhURXVIaDRZZDQvdm1XbU0ycWEvemlpeThSSG42WXBzMytsK2ZZcmw2OXdtT1BGZEdNYzVWcTFkajN5NTRDalFHZ2EwaTNlNWJuS0FpeU4raE9tVHlSS1pNbjhueUxsbno4eVdncVZxekVxREhqV0RCL0xwRVJFWlFwVzVhcFlaOXFNbTJ0WDJqRHFWTW42ZEc5S3pxZG5uWXZ0NmRpeFVyRXhidmVPQU1IZmtqWXRLbXNXTDZVTW1YS3NIVDVTb3hHSTFPbWhqRjN6aXkrV3JzR2c4RkFjSk9taERqQ2ZVbVNtRFpWRFFQZmZOMjF3K2p6TDFkVHJGanh1ejRmQlQxbnZ6N3ZJd2dxYyt5Z0R3ZmZ0VDQyUlFGdno0S1h3aTlmdm95dnJ5L05temNINFBqeDQxaXQxaHozdzYyQXVRQUFJQUJKUkVGVVQ4MmFLazIzWHE5blVEYW0zRHZGZDk5OWwzY3VQY3M1YXRXcVRhMWF0YlcvRnk5YXdPNWR1L2hmOCtkekZMSDY5M3VmbE9RVVFycS9YV0wwMlBGUE5ubXUwYS9aOG13MlFiWGt6bkJVVVlzSU1vS2dlbXlTbzFiZ3pMWHBKYWZ5bEhQNWxKcGJBeENNUmwzcnUzWHhEUHB3c0VZYlhCQ3NYYk1LdTgzT2xLblRFUVJCYXg5d2hqaE9HQXdHL1B6VUo2ek5haU80U1ZOTmJpeS94Ry9XRUNtcmR5NElnbGFLemkrL2tsZXphRUhHSUdaZjUzT1AwTEpWYTFxMnl2a1RWcXhZaVYvMkhjejMyRWFOR3VkNTQ1cE1Ka1orUE1ybHZYZDY1ZVMvcTkvZ2FiNWV2eUhIK3hVcVZtVG03TG01ZnJaT3AyUFAzZ1AzMWRBWDVKeTNtcTkvQWtFQXZjNU9hbXBLZ1NxVmlxSnc3Tml4ZjN6ZVZXdSt1bTl6M0t2M2UvVHFuYnVtK3V3NTg3T21LdW9CeDdPRm83cHM0YWlneUxJaVNYWkVRVVNTQk1maWdreXZUWlNkWWFpakdxcVN1V2xoYUdzZUVLS2pZL0QyOFVZUUJJNGZQMFpTVWhLS29sQzZUQm1TazVNNWYvNGNBRC85dUZVVGNxMVh2ejQvNzl6SjlldXFXT3pPblRzNGVmTDNmTTlUdDI1OXRtL2JSbnA2T2phYmpSKzJiS2Erb3pTZEY4cVdEU0k2T2xvcnVVZmN5SlQzdTVNeC9KTW52VGxMYnMrTjdFbHZ6eHc5Z1E5NnpuSWJFMEFSM3dSU2svTVd6ZmIwTEZqSVc5RDk3dVpuM2Mxem1qdzhtbVR6MXB3OWJhTGo1U0RsVUFSSmtoQUV1eUE3bzg0c1hwdGVDME1WQlNWTEdKb1dNYmZwM1FwRDgwSitnaFN2dmZZNlk4ZU00b2N0VzZoY3BRb1ZLbFlrTVNHQndNQkF4b3diejZkaDA3QllMQVErRnNpUW9XcGlza3FWcXZUclA0Q2hnei9FWnJkUkxxZ2NnNGNPeTNjTVQ5V3RTOHRXclhtM2wxb3dlUGE1SmpSdDJreExoaTVkc3BpVTFCUmtTV0xmM3IxMDZSckNTMjNiTVhUNENFWU1HNEtmdno5NnZVNHJIdHpKR1A3SmsxNFU1UUkvNlI4bHBLWWtJNHB5anA1QWRjNmtCekpucVNuSjZFUXAxejdGWXY1eDNJajFKeXBTd2N2SEw4Zll5cFd2Y010RjZaNmVYcFFyWCtHdWpmZEJuQk1vc1gzSHJzclBOMjk2Z2l3MFJrNmpwaG8yQkZtV0hlNGJTTEtnZFhZNEs2UkNrVUF6RnF0ZHNGcGw3SklpeUtwWWk4NFdzMkNTS0FvZjNPNm9IaVh1OW51QmkrZi9KTGhXd1pzK0wwZFZKamE1a0h0dGJqYmNqTHhCUUtFa2doN0xPWmVYb3lzVG0zVC81eXkvTVRtOXlhajRRa1RHQjJDVGpLUStvc1F0NmVucFMxdTNicjBLVlE4aEdWWHdKZDBoK0dJVEJDUlJGR1NEWGxDTVJoR1RVYStZUFF5WXpRWTh6U2E4dkV6b25XR29rb1hKUTFFVVVSU0Y1dmM2Q2VwR1RuaDdLcmZGMTFVbThEeFI4ZFc1R1hrRGJ4ODNOWGhxU2pJcEtjblliUm1VQ1RpWGV5b2g4Q3hSY1UvZXR6bHpqa215cDFNMjhHeStIbmhSL3lTSytpYzk0cUk4U2tQZ3F5emhxTTdCOXFGV1J4RWNDK05CbGhWRlZwdDJGVWxTMUFxcFhVS2ZyU2tYQllTNHl6T3FjUWRpTGJlYkJIVWo1dzJnMTlsdjY0SVdSWm02bGM1d09ib3ljWWxXRXVMaXlNaDROQi8xWnJNbm9pZ1RVTmhHMmNmT0lRcEtudGRwdlVvbnVSSlRtWmdFeXoyZE03UFpFNTBvRWVCcm9XemcyUUwvdG84eU9hc2dDTlczcnU5YnZIWEh1WDlweGsxQmgrRElzWUVnS0tyTmttWFViZzVIWmRUNTBxdlUzOW5XaG5wN05MblRRUlh4VFNBaUljRnQyTzRBS1NtSmxQUzdmY29pVWJCVHZzZ2ZsQy9pbHQrN0hjTVI5TmhaZ2g1N09PVDMzSERGVTdXQ3FnRi9PdzJiQWpvaGF3RkJ6YlVwaXFOTlRYS3NSbkQwdHlFNnZEVUJiVzBvZ2s0VW43dlRBUlh6ajBPUkVvaTZlWTIwQjdDTzd0K0l0TlFVb2lLdWdwUklVYjkveHNYMmFEL3BINzQ1Y3h1MU80T3ZyMmN0MUtLQm5zd0NnaXIwb3RHcEtZS3NJRGk4TmtHV2xTd2VtNU9leU9HeERlclhUQ2NJQlArVEgvS3BTcGU0R2UvRHpmZ0FraE9OcEtTNmY2aTg0TzBGQnAyVlVvRnhGUEZOY2srSUcyNEFCcjJ1WWMzcXhRd24vb2pVWndsSFJRUkVCVVVBUVZBVXh4SXJ4Ykc0d0VHN0pza3lncGRaSjlqc2lpQ3AxVkF4K2Zyc3BwNW00NC91cVhYRERUY2VKSTZldU5MbnFlQ0pwOGhTSFJVRTBnR3JJQWcyUVVEV2FkVlJIUjRtdmVMaFljQnNOcUszUzFrV3ZpdUtjRE1xc2VIOTZveDN3dzAzM01qVGF6UG9LZ04vWmcxRkZRVlJFRkE3T0JDUVpRVzdCSUpOUmhEc2FzZ29nT0RoNFNIYTdYWkJVUlJSVVJTZDNXN2ZKQWpDOCs1cGRjTU5OeDRrN0hiN2JvUEJNREdMeDVZaUNFSXFZQkVFd1NvSWdpUUlncXpYNnhXajBhZzQ2TzRWczltTTZGd1hxU2lLOE9xcnIrb0VRV2pvbmxJMzNIRGpRVU92MTljdFc3WnMxc0tCVmtCd09HS3VWRVpaWG9MUmFCUWxTUklWUmRFbEppWTI5UGIyM3VXZVVqZmN1UDlRRklYSXlFaHUzb3hDa2lSU1VwSWYrVGs1ZGVwVTc3NTkrNTUxZW15T1Y3b2dDRmJBN3ZUYWREcWRvdGZyTVJnTWlzbGtRcCtWeWNMRHc2T3UrL0p5dzQwSFk5U09IVHVHZ3FDdGhuRHI4WUt2LzJQbGdRdGthZnR3a0U5cWpUU0NJQ0FJQXFLb1E2L1hvOWNiTWhlV0FvSk9wM3ZxMy9qbFEwTkRhZFdxVllIMlRVbEpRUkFFZHUvZWZjZm5xMVdyRnBNblQ3N1R2QUdob2FFVUtWS0V3b1VMMDd0M2IwMEV4WTFIRjVHUmtTZ0lGQzFXd3QzY25nVStQajZWczRXaG9wTjRNcXZ0VWhtSlpMV2ZUWkhWSEp0em5hZ2dDSFhjVTNsdk1XellNRFp0MnNTNmRldll0R2tUTzNmdXBGKy9mdTZKZWNRUkZSWHQxdVBOQlFhRDRRbHk1dGl5R1RVRmxXNU5RVkZrRkZuV2R1RDgrZk5GZ0VydXFieDNTRTFOWmQ2OGVZU0ZoUkVjSEV4d2NEQ0xGeTltNWNxVnhNVEV1Q2ZvRVlZa1NYZmtxWjA1L1FjRFEvdmY4L0dkT1hPYXNHbFQyTzVRS25OaTQ4WnZDT255RmlGZE83a0k4a1JIUnpQd2d3R0VkTzFFM3o3dmNmWHFGVzNiaVJQSDZmbDJON3FGZEdiMEp5UHoxV1lWQktIQ3lJOUhlZWRqM0FBRUhBc05uTTI2enFxb1VLSkVpU2YvS3hmSmQ5OTlSLzM2OVRHYnpYaDVlZEc4ZVhQT25YTmxldmpsbDErb1ZxMGFIaDRlTkd2V2pMLysra3ZiSnNzeVk4ZU9wWFRwMG5oN2U5T29VU1AyNzkrZjY3bWlvNk41NVpWWDhQUHp3OXZibXhkZWVJRUxGeTVvMndNREEvbndRNVZOOTlpeFk2U25weE1jbkxtdzQ5bG5ud1hnNE1HRDdydjdFVVp5OHAydE9xbGNwU3FqeG95OXAyT2JQMjh1eTVZdTRkTEZpeTVHNk9yVksyeFl2NTRGaTVheWJQbEtUcHc0eHBFajRZNWo1dENzMmY5WStma3F1blYvbXltVEptcXBtRWtUeGpIeWsxRjh0dkpMU3BVdW8ybG01SVZubndzdTRUQmtMb1NUanJCVVc0R2dLbGlwWHB2bTBoa01oditFWWZ2OTk5OTU1WlZYNk55NU0yZk9uR0hIamgzY3ZIbFRNeTVPekpvMWkwbVRKbkg4K0hHOHZiMXAxcXlacHJ3emNlSkVsaXhad3BJbFN6aDU4aVFkT25TZ2VmUG1uTTFGSERjME5CU0x4VUo0ZURqSGpoMURsbVZDUWpMMUJBWU5HcVJ4MDErL2ZoMmowVWhBUUVCV1Y1dUFnQUN1WGJ2bXZydmR5SUhZMkZnR0RRd2xwTXRiZEF2cHpPRkQ2Z1BRcWNuYm9YMWJRdnU3cGpLR0RmbEk5YUs2dkVXN2wxN2d6VGRlMWJaZHZIaVIwUDU5NmQ2dEM0TStHTURObTVFdXg2NzcraXVYL1FGNnZ0T0xzT2t6S1AvNDQ2NzMyb2tUUEZXM0xwNmVLc21xbjY4Zko0NGYxN3l5NTU1VEgrQ0ZDeGZtenovUFlMVmFpWXlJd01Oc0ppaW9IQUQrL3Y2Y09KNC96WG54WXNYS1pERnFqanhiMW5CVXlReEoxVHdiZWxCNzJIUTZYZlgvd29XZ0tBcWZmdm9wL2Z1cjdubFFVQkFoSVNFc1dMREFaYjlQUHZtRWR1M2FBYkJpeFFwS2xTckY1czJiZWVtbGw1ZzhlVExMbHkvWENoSURCdzVrMTY1ZHpKdzVNOGZuWEw1OG1kS2xTMU95WkVrOFBUMVp2bnk1aTVFYU5peVRQVGN0TFEwUEQ0OGNZemFaVERuazA5eHdBK0NydGF1cFVhTUdJZDNlNXRLbFM4eWZONGNHVHpmVU5IblBuei9IeFBIalhJNlpOR1Vhb0VwWTluNm5oNmEvWWJWYW1UaCtMT01uVHFaNDhlTDg5T05XRnN5ZngrZ3htY2ZYckZVcmg1NUhYc0pEaVltSmVIaDRFQjBkemFRSjQ1QmtDUjlIbmpBeE1SR1Rod2ZmYi9xT0hUdTJZVFFhU1VsSklTa3BDWlBKaE5WcVplNmNXZHk0Y1NPSHdsWjJlSGw3bDh0aTFCd0dUaEVkRkFPT1hqYWN0UUpGVVJSQjcyeHlFd1RoUDJIWWF0YXNTVUJBQU5PblQrZk1tVE9jUFh1V1gzLzlsYUpGWFl2bmpSdG5DcFVFQkFSUXZueDUvdmpqRDU1ODhrbFNVMVBwMXEwYmI3K2RLWlJzdFZwZGpuRml5SkFodlBubW13UUdCdEswYVZOZWZQRkZ1bmJ0bXV2WXpHWnpEalVoVUNYZEhvU01teHNQUCtyVmI4Q2NXVE1BZ2ZyMUd4QTJmVWFCanBObG1UR2pSOUhteGJiVXI5OEFVS1VocjEzN20rRkRCNnY3S0RKZTJmUUtLbFdxVEtWS0JkZEtQWDM2RDQ2TkdFcm9CNE00KytlZlhNeVNocGswWVJ3QmdZR0VUWi9KcXgxZWRqR0lBejhZd0lzdnZrU0hqcTh5WXRqUWZNOWhNQmdxWk11dDVjeXhvYUNBVmtEUVoyNmc2bi9oUWpoNDhDRE5taldqU1pNbU5HM2FsTmRlZTQzdzhIQ1dMbDJhNzFOSXI5ZGpOQm8xcmMwMWE5WlF2YnFycmMvTjIycmJ0aTNYcjEvbisrKy81OGNmZjJUNDhPSE1ueitmdzRjUGF5NjZFNlZLbFNJakk0T0VoQVI4ZlgwQnNObHN4TWJHVXJKa1NmZGQ3RVpPdzFhdlBuUG5MU1Q4U0RpZnIxeUIwV2hrekxnSnR6eHUyZExGZUhoNDBMbEw1a1BXWnJOUnJGZ3hWcXo4NHE2TXJYRGh3bVJrWkJBMmZTYUZDaFhpeEluakZIWmMxNFVMRithWlJvMDFrWE5WaHRLYlFvVUtrWlNZeUlTSlUzajg4Y2M1ZS9aUDdWN0lDNElnVk02U1c4dWFaOHRlUUZDY0JRUVJFS0tpb2lvQnB2L0NoYkJnd1FMcTE2L1AxcTFiR1R4NE1DMWF0T0RHalJzNUpQV3k1c3VTazVPNWVQRWkxYXRYcDN6NThwaE1KaTVjdUVDRkNoVzAxNkpGaTlpeVpVdXVIdHY1OCtmcDBxVUxxMWF0WXYvKy9adzZkWXJqamx4RFZ0U3VYUnV6MmN6ZXZabXE1L3YyN1VNVVJaNSsrbW4zWGV4R0RreWFPSjd3SStFMGIvNDh3NGFQNU5DaGd5N1NrYmxoMzc2OTdObTltK0VqUG5hUnFxeFFvUUpKU1VuOHNtZTNsbS83ZnBPclR1ajU4K2ZZdVBHYkFvM3R5Um8xc0ZxdG1Fd21KRW5pNElIOTFLeWxhcG5XcWxWYkcrZlIzMzRqS0tnY1JxT1JZc1dMVTlqWEY1UERzZGkzZDY5MlRENHdMVjY2UERBWGc2YjFzQUZaUERaSGpzM2IyN3ZDZitWQzhQZjNaK2ZPblp3OGVaS1NKVXV5YnQwNmxpMWJocCtmbjh0KzQ4ZVBwM0hqeHZqNitoSWFHa3JGaWhWcDNibzFvaWd5Y09CQXhvNGRTN0ZpeFdqWXNDSHIxNjlueG93WmJOKytQY2Y1enA0OVM1OCtmWmczYng0QkFRR3NXTEVDYjI5dnFsUlJCVzBtVFpwRTdkcTFhZFdxRlY1ZVh2VG8wWU8rZmZ2aTQrT0QwV2lrZCsvZWRPL2UvYjRwbnJ2eDcwTG56bDBKQzV2QzJ0V3JrR1daZ1lNK1FoVEZmQlhlNXM2ZVNVWkdCbjNlNjZWOXp0ejVpL0R4OFdIU2xHbk0vSFE2aXhZdXdOUFRrNEhaaEpTUEhUM0toZzNyYWQrK3d5M0hWclpzRU8zYmQrRGRYajFSVUhqMjJXQk5PL2o5UHYyWVBHa0M2NzcrQ3JQWnpKQmh3N1hJYVBpSWp4azNialEycTQzU3BVc3plT2p3VzU2clFvV0tqd0hYYy9mWUhEb2hHcmVrZ2lDS29vZkZZaG1nMStzbi8xdC8vTkRRVVA3ODgwOSsvUEZIWW1OajZkbXpKenQzN3NSZ01QRFVVMC94eGh0djBMTm5UNjVldllxdnJ5OCtQajVNblRxVmxTdFg4dmZmZjlPb1VTTVdMbHhJR1ljNnZjMW1ZOHlZTVh6MjJXZkV4TVJRdVhKbFB2bmtFenAwNk9CNEd0WGlqVGZlWU9qUW9VUkhSek5nd0FDMmI5OU9jbkl5ZGVyVVlkcTBhVFJxMUFoUTJ6MjZkZXRHV0ZpWWxrOExEUTFselpvMWlLSkl4NDRkbVQxN2RxNWhyaHVQRHZiczJlTldkOHNIY2JHeFlUVnJWTitPdW1iVStVb1RCQ0VEVlNsZUVrVlJYVE5xTUNpQ0lBaG11OTArVXhURlh1N3BjOE1OdDJGN0dKR1JucjY2WW9WeVgyUXpiS2xaREp0ZEVFUlpweE1WdmNHZzZCM0p1YUIvNnhlZU4yOGVmZnYyL1UvOGVKR1JrVG1xdHdXQkxNdGN2bktWdUxnNEpFa2lJLzNSWEh2cVlUYWowK253OXdzZ0tLZ00rUkdtS29yaW1MTlk3UFo3TjJjZVpqTjZ2WjRBL3dDQ2dzcmVjdi9yN243R1hDRkpVbkVjVGJsWlg0cWlwaEhWN2c0WldRYkpMaUVJZ3VBcHkvSlJvTEo3K3Y1OXNGaXNuRGh4QXAxZTc5WVZCVkpUVTBoSlRrS1M3TlNxV1F1ajBaQ3JVZnYxMTk4UWRicjdveXZxR0pNc1M5U3JXOWZ0c2QwQkZFVTVYNlpVOFEvSUpKMTBFazg2cWNMdGpuQlUwZXYxaXJPNlVOWTlkZjlPUkVSR29OUHIzYXdRRG5oNWVWTzBXQWwwT2owM0ltN2t1czlmbDY4ZzZuVDNiYzZjWXhKRkhWZXVYSFZmdEhjQVFSQktaL1BZc3YvZnBWbFhQSC8rZkZIQW5ibitseUkySnRiTkNwRUx2SDBLRVJNVG0rdTJ1TGk0QnpKbjNqNkZpSWwxa3gzY2FWVC95ZWd4M3VUWjh1SFViUUZRMEFjRUJCUjN6OW0vMVQyL2MxYUlSOEZ6UzB5SXkzWGJnNW96THk5dkV1UGo3dWpZcE1SRUx2OTFrZFI4dEhxOXZMd0pLdmM0aFFvWGZtRHpmaS9IV2JWS3RVSkFUQzdlbXZPT3dObjZvVGVaVEVYdi9nM25wamd1S0h4OENxSFRpUlFwVW9UaXhXL3ZHU01Ja0o3dUpxbk1DK2w1RUhnK3lPTEtuZjVlZjEyNlFGcGEvZ0s5cWFrcFhQN3JJalZxUFRoYXhYczV6c2VLRkNtVTNWdHpGQThFMTNCVVVmUTZuZTZ1R2pZM3hmSHRJelUxaFJzUmtkeUlpT0NwT25mM290eSs3U2RXTEY5R1ZOUk5TcFFvd2VkZnJ1SDgrWFAwNko3SlFESjArRWhlZUtHTis0ZDRpSEVyWTVIMVd2cXZqck5Rb1VLRnNoZ3daM091NEZnTW56V1NFZlNpS0Q1Mk43OVlWb3BqTndvZW9uaDVlUk4xTTRMSXlFaUtGU3QyVno3M3hvMGJUSms4a1RIakpsQ3ZYbjJTa2xUT3J3b1ZLcko5NTI0QTN1blI3WjU5citYTGx0THU1Zll1TkUzT2NjMmFNWjJUSjMvSGFEVFMvUG1XdlBkK0g0MVY0dHExYTh5Wk5ZT1RwMDVpTXBsbzBhSWx2WHEvbDROMTRtN2lWdWQ4cm5GRERBWURnaUFTRkJSRTl4NDlhZFNvc2Z2aXZZOHdtejBLdVJxMUhDL0gwa2tGVVJURmdMdDVjamZGOFQ4d2NONCszTHg1ODY1OTN0ay96eEFZR0VpalJvMHhHbzBFQmdZNlFsZ0Jod2FqeTFyQ3U0M1BWaXdqTGk1bkFuLzBxSkdVTEZXS2pkOXRadkdTNVJ3NmVJQk5tNzRGMUo2OG9ZTS9wRkxsS256NzNXYm16Sm5QbnQyNzJMamhtM3Myem9LZWMrNzhoWHkvWlN2ZGUvUWtiT3BrTm55ei9vRmNKNElnVUtkT0hWcTBhRUh6NXMwcFVlTDJuSWlEQi9ZVDByVVRyNy82Q2pNK0RkUFdkTnBzTnNLbVRTR2t5MXQwRCtuQ3ZuMlphNXJ6WThTOWQ1Rk1LcHUrKzVhaGcxWGFKWVBCbU4xakUzRVVEckpHakZhckZWRVFoTHU2U05HZHpQNW5ucHRka3Y3eDV4dy9mb3lYMjdaaDJ0VEpSRVpHOG5MYk5yemN0ZzByUDF0UjRNODRkUEFBbmQ5NmcrYk5ndW5SUFlRL1RwMXkyYjVuOXk1Q3VuYmloVmJQMDcxYkZ3NGRQS0J0NjlmM2ZWNXVxNGEySHd6b3o4dHQyOUQzL1hjMUl4SWMzSlN1SWQwd21Vd1VLVnFVdXZYcWNjNUJTaEFYRjRlZnZ6K2RPbmZHYURSU3FuUnBHalYrbGovL1BIUFA1djEyem1rMm0yblVxREhEaG85a3llS0YrZEphM3l1VUsxY09uVTdIdG0zYjJMdDNMelZyMXNSZ01PUnFzTFAvUHlNam5hbFRKakZ4MGxSV3IxMUhURXdNMjM3NkVZQ3RQMndoSXlPRGxWK3NadnFNV2N5ZSthbm01ZWZGaUZzUVBQSEVFOXBETmI4eFp2MDdKaWFHZDNwMDU4S0Y4OXJ2b05mckMrWGhxV2t2V1piUjYvV0lnTi9kblBRN3BUaDJRMFZLOGo4dnROU3FWWnR2TjIxaFFPaEFTcFlzeGJlYnR2RHRwaTJFZE90ZW9PTXZYcmpBeHlPSDgxNmZ2bXpadW8xWFgzdWRnUi8wSjhyaFRWNjVjcG54NDhZd1pNaHdOdi93RXkrOTFJNFJJNFpwYWx0ejVzN24yMDBxRThxTVdiUDVkdE1XNXM1ZkNJQW9pblRxM0FWZlgvV3krK3V2U3h6WXY1OEdEVlIyazhEQVFPYk1uWStIaDFtNzBJOGZPMGFOR2pYdjJaemZ5VG5yMVcrQTFXYlREUEw5UkdCZ0lEZHUzTkE4RkZtV2M1QThIRGtTem9oaFE3RFpiTVRGeGZGT2orN0V4Y1VSRVJHQnI2OGZKVXVXUktmVDBhcFZhdzRmUGdTb3JMZlBQdnVjNDNjU01CaU1uRHQzVnR1V0d5TnVBWE5qZVpKVkxsdTZXS01HUDNueWR3YjBWMWNSK2ZyNjhzV3FOWVIweStSRTFPbDB1WVdpdUlhaHFrY3JBdmM4Ymh3ME1KVFhPcllucE10YmRPMzhKbHMyZjYvbE5WN3IrQXJ0MjcxSTk1QXU5M1FNM1VPNmNQSGl4ZHM2WnR0UFAvSmF4MWQ0b1hVTFpzL0ttK0J2eDQ3dGpQNWs1SC9HdUc3ZXZJbmdKazFwMUtneEpwT0pWcTFmb0VyVnFteHpDSGtFQkFTeWZNWG5WS3RlSFZFVWVhbHRPMnhXSzMvL1hmRG0wejlPbmFKRjg2YUVkT2xFbGFwVmVTNjRTYTc3TFZ3d0Q3T25KeSswZWZHK2ZmK0NuRk1RQlB6OS9FbDVBTWw2bzlHSUpFa0VCQVRRdUhGalpGbkdaSEpsSGF0YnR4NytBUUdNR2YwSmd3WU9vUDBySGZEMzk2ZFlzZUxFeGNWeTZkSWw3SFk3NGVIaHBLU28zOEhKaUh2cTFFbUdEUDRRbzhsSVltS2l0czNKaUR0M3ppeU5FZmVmNHMyM09yTnIxOC9NbVQyVGNXTkcwN2RmZjZkM2xpT25LZ2lDZHo2NU5SY2pweGNFNGI0a3hENGFNb3g2OWVxVG1KaEFyNTV2VTdXYXluMldGNzN4dzRBV0xWdlJvbVVydnY1cUxaR1JFWStNMXhnWkdVbUZDaFZkM2l0VEpraWJBMjl2YjNaczM4YjQ4V05JU1U3Sk02eklEOVdmZUlKdE8zWVJFUkhCSngrUFlQbXlwZlI4eDVXSDRmT1ZuM0g0OENIbXpKbVBYcSsvTDkrOW9PZFVGSVc0K0RpOEgxRGF4Um1PN3QrL24xcTU4SmtKZ2tEdjN1L3h4dXNkS1ZPbXJHYWt6V1l6dzRhUFpQS2s4WTdmdFN5ZVpyTjIzUGZmYnlJOVBaMUprNmN4ZSthbkxwK1pGeU51WG1qVnFoWGUzdXI4T1BPQXAwK2Y1dlRwMDlvKzN0N2V2UHZ1KzN3UTJvODMzK3BFNWNwNUx5c1RSZEU3bnpCVU0ybzJtdzA5Y0Y4NXFRc1g5dVdKSjJ0dzhjSjV5cGN2bitkK2lZa0pUSjQ0Z2Fpb0tPeDJHNTA2ZDlYWU9NK2NPYzNNR2ROSlQwdWpTTkZpREIwMlFvdmhkKy82bWRXcnY4U1NrVUgxSjU3a2c0RWZhdm1IWFQvdlpPem9qMGxQejZCdnYvNmFsL0ROK25WcThscFJhTnJzZjNUcjN1T1czK1BJa1hBK25UNE5VUkFwV2Fva251Wk10dHo4eHRDOFdURDlCM3pBMGlXTFVCVDRmc3ZXaDg2d0ZTMWFsTWdJVjBOKy9mbzFhdGRXVzFIMi9yS0hWVjkrd1l5WnN5bFZ1alNnVmcxenU3bXlHenRMUmdaYnQvNUE2OVl2WVBMd29Iang0alJ2L3J4TG9ocGcvYnF2MmI3dEoyYk5tWGZmR2s1djU1eEhqb1JqTkJpb1ZQbitMN0cyV3EzWTdYYU9IajNxRE5GeWFHYWtwS1R3MFVjRDZkd2xoSE5uLzJUSzVJa01IVFlDUVJCNHV1RXpQTjN3R1VmdWJLNUdTMSs0Y0dITVpqTmp4MDFBRkVVc0ZndUZIZk9RRnlOdWZ2anhSelYzOTh3enozRDU4bVV0ZkhaSmUxeTh5T1JKRXhnN2JnSXJsaStsVE5rZzJ1VHRLWHRsTTJKWmpKcVFOV1JGQkR6djU0OFNIUlhGcVpPL1U2Vksva3prNTg2ZDQzL05uMmZaaXBYTW1idUFXVE5uWUxWYXNWcXRqUHA0QktHaEEvbjh5elU4ODB3amxpeGFvT1ZyMXE5Zng1dzU4MW41eFdvQWZ0aXlXZnRNSHg4ZlZuNnhtdEZqeGpGLy9seEFKZGJidkhrVEN4Y3RaY215ei9qdHQ5L1k5ZlBPZk1kbXNWaVlNRzRNbzBhUDVjdlZheWxUT25PcDdhM0dZTGZiaVlxS1l0MDMzN0wrbTQwUHpIalo3WGFOQmwyUlpleDJ1MmFFMnJ6NEVudjI3Q0k4L0RCMnU1MmZmOTdKSDZkTzBxSmxTMEJWVGhJRUVIVTZFaE1UdEJ5SklydXlGQmN2VVlKREJ3OWlzOW1Jam9wU3d5aVRpUzgrWDhuYXRhdXgyV3drSk1TemQrOHYxS2hSSXpNVS9uNFQzMjdjd016WmMrOGJBV2RCejJteFdEaDg2Q0NUSjAyZzk3dnZQeEN0aXVqb2FLMmFiVFFhOGZYMXpTR0ljdkhpQllLRG0vSldwODZNL0dRMFJxT0p1RGpYVlErSER4MWt4NDV0V2c5anJWcTFzZHZ0aUtKSVFrSThGeTllcEZMRlN0cTIzQmh4L3lsKysvVUlRNGVOb0VuVFpudzZjdzZuL3ppVmcrMDZ5NFBTbk0yb1pYMkd1cFQzOVlENWZ2d1kwOE9tWXZZd1l6UVo2ZE8zUDZVZHBJNTVvV2JOV2l4ZnRvUnQyMzVFcDlOanNXU1FuSnhNUW53ODN0NCtWSzJtNmhHODFMWWRUWnMxVTMrb3c0ZTQ5dmRWM3UzOVRwYW5pazltM3NIQjdsbTFXalV0RVI0ZWZvam5uMitKMmVHT3YvamlTNFNISDZacHMvL2xPYmFyVjYvdzJHTkZOT05jcFZvMTl2MnlwMEJqQU9nYTB1MnVYQlIzaXV3TnVsTW1UMlRLNUlrODM2SWxIMzh5bW9vVkt6RnF6RGdXeko5TFpFUUVaY3FXWldyWXB4UXRxdmJYdFg2aERhZE9uYVJIOTY3b2RIcmF2ZHllaWhVckVaZHR1ZERBZ1I4U05tMnEraVF1VTRhbHkxZGlOQnFaTWpXTXVYTm04ZFhhTlJnTUJvS2JOTldTeEpJa01XM3FaUFI2UFcrKzN0RTFUUHh5TmNXSzNmMFZnQVU5Wjc4Kzd5TUlLblBzb0E4SDM5VStOaDhmbndMdmUvbnlaWHg5ZlRWWngrUEhqK2RJNU5lc1dZdWFOV3RwK2FwQldaaHk0K1BqNk5XekI2VkxsMmJpcENrOFZxU0k5cnVlTzNkT3kzZjNHeENxZWE1NU1lSVdCQWNPSE1oejIydXZ2Nkg5UHlBZ2dJOEc1eXZzNHBGUEdPcXdjQ0tTSktFSDdzc2ROdWpEd1JwdGNFR3dkczBxN0RZN1U2Wk9SeEFFclgzQWFaNmRNQmdNK1BtcFQxaWIxVVp3azZhYTNGaCtpZCtzSVZMV1ZpNUJFUEo4WW1UTnIrVFZMRnFRTWVUSEUzWTMwYkpWYTFxMmFwM2ovWW9WSy9ITHZ2d0ZtaHMxYXB6bmpXc3ltUmo1OFNpWDk5N3AxVHZIZnZVYlBNM1g2emZrZUw5Q3hZck1uRDAzMTgvVzZYVHMyWHZndmhyNmdwenpWdk4xTjhhUW1wcFNvRllwNStxZU80V2Zuei9yY29rV3NodkFyQWdNREN5d1F0YmRSRUJBZ0ZaaHo4VldDZG50Z1NDQVRxZTJlenc0MXlGZmR6c0dieDl2QkVIZytQRmpKQ1Vsb1NnS3BjdVVJVGs1bWZQblZXWDNuMzdjU3RpMEtRRFVxMStmbjNmdTVQcjE2d0RzM0xtRGt5ZC96L2M4ZGV2V1ovdTJiYVNucDJPejJmaGh5MmJxTjhoZldLVnMyU0NpbzZPMW5FRkVsdHpCbll6aG44QnM5c1NOMjV1YkJ6bG5lWjI3U0pFaXBPV3pwdHJUczJBaGIwSDN1MWU0eCtNMDV1S3BDVW8ycjgwWml1b2UxQ1RrSjBqeDJtdXZNM2JNS0g3WXNvWEtWYXBRb1dKRkVoTVNDQXdNWk15NDhYd2FOZzJMeFVMZ1k0RU1HVHBDRFFtclZLVmYvd0VNSGZ3aE5ydU5ja0hsR0R4MFdMNWplS3B1WFZxMmFzMjd2ZFNDd2JQUE5hRnBVelcwM2ZiVGp5eGRzcGlVMUJSa1NXTGYzcjEwNlJyQ1MyM2JNWFQ0Q0VZTUc0S2Z2ejk2dlU0ckh0ekpHTzdYay81UlFtcEtjcDVldGZpQTVpdzFKUmxkSHBYVzRzV0xFeEVSUWZUTkNEeTlmWEtNclZ6NUNyZGNZTzdwNlVXNThnOVdsK2tlajFPWG04ZVdXOTVOVUc0VmQ5MG1qaDQ5U3BGaWJvM01PMFZVNUhYcTNNWkMrTXVYcnhBYkYrZGVtNXNOTnlOdkVCZ1lRTmxjY3JtWHIxd2hOdmIrejluTnlCc0VCQVFRVkRidi9ISlVWQlNSa1pIWTdYYVNrOTJzT05uUnBFbVQ5a0FhS29OdUVwbWlMaFkwN1FOQnZ1dk5RVzRQNHA4OTBXKzNYNnRzMlRKRVIwY2pudHFQQUFBZ0FFbEVRVlJ4TS9LR214cmNNWWNwS2NsSWRudXVSZzBncUd4Wm9xTHUzNXc1eHlSTFVyNUd6Um1TRm5Fazg5M0lGZG5EVHNHWll4TUVRVjExSUlxQ29DaUtoTHBFNGE0Z0lpS0N5TWliUEZiVXpWOTUrOTdhRFVxVUtIN2I3QjZLb3ZEWDVTdkV4Y1VpMldVeU1oNU5qamF6MlJOUnB5TXdJSkN5WlV2ZmNvSC9sU3RYaVk2SlFiSkw5MnpPekdaUGRIcjlMVDAxTndvRVdSQ0Vqa0JxRm84dFJSQ0VWTUFpQ0lKTkVBUzdLSXFLb0NpS0ZURGM3WEJVRUhWNGVYbmo2ZmJjYm9rMGg5Z0hLTGNWaHJyaHhpTUdteUFJcjJjeGJNbEFzaUFJYVVCR1ZzT21CKzY2WWF0VHB3NDNiOTdrWmxRVXlVbUpiZ2JkZk9EdDQ0TkJyNmRVcVpMdUVNUU5OL0tIdGFBN09nM2JYYThSRnkxYTlJNDBNdDF3d3cwM0NtallsR3ovYWhDQmRQZDh1ZUdHRy84Q1pCVFlZN3R5NVlwYkRjUU5OOXg0NktFb1Nub3UzcG1pT0JSZG5KMXJpcUlvK3JKbHk2YTZwOHdOTjl4NDJDSExjbXFXMEZNemNObmJQUVJCUUZRVXhVMTU2NFliYnZ3YlBMYnN6SlpLdHY5cmYrdFJlMEhjY01PTkIzL2p1dlY0ODRIZGJrL0pZc0NVTEtHb2tqVVVsV1VadmFJb0NmZFNxY2dOTjl3b21GRno2L0htRDR2RmtweWJ4K1pxdnpKRDBiaEhiWUpLbFNwRnRXclZjaFdqOFBiMjVyUFBQcnVYVHgxQ1EwTXBVcVFJaFFzWHBuZnYzcG9JaWh1UExyTHE4YnFYSStaNTd5Umw4OWdVY21uMUFOV3d4VDZLazNUbXpCa21UWnAwMzg4N2JOZ3dObTNheExwMTY5aTBhUk03ZCs2a1g3OSs3cXYyRVlkYmovZldzRnF0U1ZrOHRWenlhNExLclNpQUtFbFN6S000U2VYS2xXUGl4SW1jT1hQbXZwMHpOVFdWZWZQbUVSWVdSbkJ3TU1IQndTeGV2SmlWSzFjU0V4UGp2bklmWWR5cEh1K1owMzh3TUxUL2ZYQUVUaE0yYlFyYkhVcGxUbXpjK0EwaFhkNGlwR3NubGk5YnFyMmZuOER5aVJQSDZmbDJON3FGZEdiMEp5TUxyTTJhbnA2V2pHdFRicmJxcU5OZkE5Rm1zOTE4RkMrazNyMTdVNzE2ZGQ1NTU1MThHWFBYcjEvUGswOCtpZGxzcG5yMTZpeGR1dFJsKzg4Ly8weWRPblV3bTgzVXExZVBzTEF3RjNIWXdNQkFQdnhRWmRNOWR1d1k2ZW5wQkFjSGE5dWZmZlpaQUE0ZVBPaSt1eDloM0trZWIrVXFWUmsxWnV3OUhkdjhlWE5adG5RSmx5NWVkREZDVjY5ZVljUDY5U3hZdEpSbHkxZHk0c1F4amh3SmR4eVR1OEN5M1c1bjBvUnhqUHhrRkordC9KSlNwY3RvbWhtM1FsSmlVbDZoYUk0VkNQcU1qSXlvVzZuTi9CZWgwK2xZc21RSkRSbzBZTkdpUmJ6NzdyczU5dG03ZHkrZE9uVmk5dXpadEdyVmlxTkhqOUs3ZDI5ME9oM2R1M2ZuNHNXTHRHblRocjU5KzdKbXpScCsrZVVYK3Zmdjd5THdNV2pRSUdyWHJnM0E5ZXZYTVJxTkJBUUVhTnNOQmdNQkFRRmN1M2JOZlhlN2tRT3hzYkZNbkRDT21PZ29CRkhrdmZmNjBPRHBoaTRrcmI2K2ZxeFkrVVZtdW1QSVI5eTRvVEk0SnlRazRPbmx4WnExNndCVkZXck9yQmtrSmlYaTcrZlA0S0hETkMwTGdIVmZmOFdHRGV1MS9RRjZ2dE1MbzlHb01WVTc4ZnVKRXp4VnR5NmVucDdZN1hiOGZQMDRjZnc0OWVyVjU4U0o0M3p3d1NEQVZXQTU2dVpOUE14bWdvTEtBZUR2NzgvUE8zY1VhQzV1UnQxTUxvQlJVd0QwRVJFUkVYbkp6Ly9YOGRSVFR4RWFHc3FRSVVObzI3YXRwbjNveElRSkUralJvd2U5ZTZ0OC9tWExsdVhTcFV0TW5UcVY3dDI3czNEaFFxcFVxY0swYWRQVXAyZmx5cHc4ZVpMVnExZTc1TlNjU0V0THc4UERJOGM0VENaVER2azBOOXdBK0dydGFtclVxRUZJdDdlNWRPa1M4K2ZOb2NIVERTbFZxbFNlbXJ5VHBxalhZMkppQXIzZjZhSHBiMWl0VmlhT0g4djRpWk1wWHJ3NFAvMjRsUVh6NXpGNlRPYnhOV3ZWeXNFOG5KZndrRk5nT1RvNm1ra1R4aUhKRWo2T1BHRldnZVVkTzdacEFzdEpTVW1ZVENhc1ZpdHo1OHppeG8wYk9SUzI4ZzY3VHp2YlBlUzhQRFZuTUNyV3JGa3ppdHRZZy9WZnc5aXhZd2tJQ0tCdjM3NDV0cDA2ZFlwbHk1Ymg3ZTJ0dlVhT0hNbUZDeGVRSkluang0OVR2NzZyUUUyalJvM3lQSmZaYk02MUVtdXhXQjZJakpzYkR6L3ExVy9BemgzYldmblpDaXdaR1FVV1ZKRmxtVEdqUjlIbXhiYlVyOThBVUtVaHIxMzdtK0ZEQjlNOXBBdXJWMytwcWJVNVVhbFNaVjdwMExIQTR6dDkrZzlHamhqS083M2ZwV2xUVjJXM1NSUEdjZm55WDRSTm4rbWlWSitZbU1qQUR3WlFyVnAxK3ZVZlVOQlRaVXdZUHpZdG4xQlVNM1NDb0Rib0Fsd0ZLajJLRjQ2bnB5Y0xGeTZrWmN1V2JOem9xdHhqdDlzWk5HZ1FiNy85ZG83alJGRkVyOWZuRUFUT0wxOVhxbFFwTWpJeVNFaEl3TmZYRjFCVnEyTmpZeWxaMGsybjdrWXVocTFlZmViT1cwajRrWEErWDdrQ285SEltSEVUYm5uY3NxV0w4ZkR3b0hPWHJ0cDdOcHVOWXNXS3VZU3Qvd1NGQ3hjbUl5T0RzT2t6S1ZTb0VDZE9IS2V3NDdyT1MyQzVVS0ZDSkNVbU1tSGlGQjUvL0hIT252MVR1eGZ5ZzZJb2YyY3pZSElXenkzbi9ha2VvMXg1bEMrZUZpMWEwTGx6Wi9yMjdhdUpDQU5VcTFhTmt5ZFBVcUZDQmUxMTRNQUJaczJhaFNBSVBQbmtreHc1Y3NUbHM3TC9uUlcxYTlmR2JEYXpkMittNnZtK2Zmc1FSWkdubjM3YWZSZTdrUU9USm80bi9FZzR6WnMvejdEaEl6bDA2R0NPaDJsMjdOdTNsejI3ZHpOOHhNY3V6YXNWS2xRZ0tTbUpYL2JzMXZKdDMyLzZ6dVhZOCtmUHNYSGpOd1VhMjVNMWFtQzFXakdaVEVpU3hNRUQrNmxaUzlVeXpVdGd1Vmp4NGhUMjljWGtDRy8zN2QyckhaTWZKRW02bnMybzVlR3RxZjBlZWtDUlpmbHlYb28randwbXpKaEIxYXBWWFhKZFE0WU1vVldyVm93ZVBacE9uVHB4K3ZScCt2ZnZ6OENCQXdIbzI3Y3ZzMmZQWnVqUW9iejk5dHNjT25TSUJRc1d1SVNWa3laTm9uYnQyclJxMVFvdkx5OTY5T2hCMzc1OThmSHh3V2cwMHJ0M2I3cDM3MzdmRk0vZCtIZWhjK2V1aElWTlllM3FWY2l5ek1CQkh5R0tZcjRLYjNObnp5UWpJNE0rNy9YU1BtZnUvRVg0K1Bnd2FjbzBabjQ2blVVTEYrRHA2Y25BYkRxaXg0NGVaY09HOWJSdjMrR1dZeXRiTm9qMjdUdndicStlS0NnOCsyeXdwaDJjbDhDeVhxOW4rSWlQR1RkdU5EYXJqZEtsU3pONDZLM0ZsMjAyVzBRdUhwdWlxdSs1ZW0yQ2dDSUlndUNka1pIUnoyZzBUbnhVTHBaU3BVb1JHaHFxdFdFNDhjVVhYOUMxYTFkV3JGaEJ0MjdkQUZpMWFoVVRKMDdrd29VTEZDdFdqSjQ5ZXpKeTVFanRTZmpUVHo4eGNPQkFMbHk0UU8zYXRXblFvQUhyMTYvWGRFVURBd1BwMXEwYllXRmhXajR0TkRTVU5XdldJSW9pSFR0MlpQYnMyYmtXRmR4NGRMQm56eDRlcjFqRlBSRjVJQ1ltNXRQYU5aLzRCVmRhOEJRbkxUZ3FiYmdraXFLczArbFZ3NWFVbE5URzI5dDdyWHY2Ymc4blQ1NGtMUzJOQmcwYWFPK05IajJhSDM3NGdmRHc4UHMyRGxtV3VYemxLbkZ4Y1VpU1JFYjZvN2xFeThOc1JxZlQ0ZThYUUZCUUdVUlJ6QzluNDVpeldPejJlemRuSG1ZemVyMmVBUDhBZ29MS3VnM2JIZUxzbjM4T2EvNi9KcWZKS2VTU0RqaWs5MFJKRkVWWnI5Y3Bla0NKajQrLytDajBza21TZE52eWR2bmRHQmN1WEtCTGx5NnNXcldLV3JWcWNmTGtTZWJObThmdzRjUEpqUGNManNqSXlOdW1VN2RZckp3NGNRS2RYbzlQb2NKdStiM1VGT0lUNG9uNUxacGFOV3RoTkJweS9lMSsvZlUzUkowT2I1OTdQMmVwcVNuRXhzVVJIUk5OdmJwMTg5MzN1cnVmTVZjY09uZ2dsc3lDZ1ZZNGNEQjdPRUpSQlFVRldaWVJCRUh3Qkl6L1orKzc0NXVvLy8rZmQ1ZGNkdmVtcFlXMkRGR2dTQUUvRkJGL2JCemdGMFVGUkN4WWtDRWdJaFFVRkdRclFnc2lVNUNsSUdKWkFySmt5aXBZaG15UTBxYnBidE9SY1hlL1AyNDBTZE5Tb0dYbTlYaEVhZFpkM25mM3ZOZDhQbG1XMVFOUXVKYnc3bXpxMUtsWXZIZ3gwdExTRUJ3Y2pMaTRPSXdlUGJwU2I2RTY3V0dKL3o3cXhvc1RleUVzdEx5WGRPMzZEZVRtNWo0VXdXUWZiMitFT3BIaGMzbHNsZCsvUTJvRjlBRXZZMkIwQ0VWTEFKZ0ZvV1NHSkVsT0pwTnhKTXFTY1JkYzYzZjNGaDhmait2WHI4TmtNdUhxMWFzWU0yYk1Bd00xQU1qT3luWU5UenN4cmM0TldWbk8rUjF5Y25JZXlwcHBkVzdJeW5iTkJOOURxdVVpN0ZzOGJGczk3SXNISW9PdTZKMnpMSHZldFlTUGwzSGN2UTlQUCttbTBXakJza3lGS1ltSHNXWWFqUmFNbFhFZG5MczBpOFZ5RmVYNzF4ejcySGgyRHdIY1pBUkJjQnpIY1ZhcjlYeEZveE11ZXpTTklJQ1NFaGVYVzBWV1VnSFAzY01zcnR6cjhTckl6OGVONjFkUlZHU3NGRGpENm9URHpkMzlvZjIrbXRoUG83SHdwaE5BSytleEVVU1o3b0ZNZktHa3BPU2NDOWdxODQ1NDJtYUR3UUFydzhCWVdEMjB6VnF0RGpLNURINit2Z2dNREt6Mi9kNjFjd2VXTDFzS2d5RURRVUZCV0xscUxTNWZ2b1RZL3Yyazk0eU5uNEN1WGJ1NUR2SWpiTmV2WFVGeGNlWDBQa1ZGUnR5NGZoV05telo3b3Ziejl1MjAydzZBeGdCZ2hhSkJ1WWNJYkFEQVhicDA2VngwZExUckRLb0ExSktUa3dHQ2hFYXI0Mm1iQTZydis0dUtqRWpYWnlBOVBSM05tbFhmU1ptV2xvWVowNmZpeThsZkl6cTZCUW9LZUdxY2lJaEk3TnE5RHdBd01QYjlHbHUzWlV1WDRQWHVQZXpZVE1UOW1qdm5HNlNrL0FPYXB0RytReWNNL21pSU5IeWRtcHFLaExsemtISTJCUXFGQWgwN2RzS0hjWU5SazAza2Q5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBenNFN2dZWHR1ZlF3clNiMmMvKyt2UmtDYURFaXFObDdiYnlYQmx1VktoSGxXclpzbVFYZ3Nndkd5cHRlcndjSUVuNytnVFdTbTlGb3RQRHpEd1JBSUQwOXZkcSs5K0svRitEajQ0UFdyV05BMDdURUUwY1FCQlFLQlJRS0JXcFM3K0xINVV1UmsxTStnVDlwNGdUVUNnN0diNzl2d2FMRnkzRDB5R0VrSlcwQ3dQZmtqUjB6R3ZYcU44Q20zN2NnSVdFQjl1L2JpOTgyL2xwaisxblZiU1l1V0lqTlc3ZWpmK3dBeko0NUhSdC8zZUM2T0dyZXFiZ3ljOGEwa3NyQ1VJSVFRbEhZaDZJUTNzQ3lMSHVLSk1sSTEzTGFtOEdRQ1kxV1YrUGIwZWpjWURBWTdqc2tQWDA2R1pPK21BQ3oyWXppNG1KMGY0MFBNM3U4MFJQOTN1OWZwZTg0ZXVRd0VoUG1RYTlQUjJob0dFWjk4aWthUGZ1czdWMFV5NVl0UWFiQkFQK0FBTVRGRFVhckYvNEhBQmcyOUNQY0VoaFRSMzQ4SERJWmhlRGdFQ1F1V0FpV1pkRzJiVHQwZStVVktCUUsrUG43bzNsME5DNWR2QWlBcjFoNmVubWhkNTgrb0drYXdTRWhhQjNUQnYvK1czTkYrN3ZacGtxbFF1dldNWkRIVDhERUx5YWdVK2N1angwekM4TXdPSHIwQ0xZay9ZNGhRNGNqT0NRRUFEOGtQL2U3YjVIeXp4bVFKSVhZZ1I4aUpvWW5RczNNek1TMHFWT1FuWjBGbmM0Tll6NGJpOXExUXl2ZERrRVFpSXFLZ28rUEQxaVd4Zm56NTVHV2xsYmwvVnp4NDNMOHNYM2JPV2RoS0FDVzR6aTJMTDlHY0NBSXZrRzlvRUFxSGdBQVo3RllraFVLUlM4WGxObWJsYkUra0NxYVJxT0ZzU0R2dnIrbmFkTW9iRXJhaWgxL2JNZktGVDlpOWRxZjcrcnpWNjljd2VjVDRqSHBxeWxvM2p3YWUvZnN4cWlSdy9IVHFyWHc4L2ZIelpzM01HWHlsNWc3Yno0YU5HeUlUYjl0eFBqeDQ3QjV5M2FvMVdva0pDNlF3cmM1YytjaE1yS01PSVlrU2ZUdTA3Y3NKM1A5R2c0Zk9vU1BodkMwVVQ0K1B0TG5SVy9xZEhJeVh1L2VvOGJXL1Y2MkdkMmlKY3dXQ3k1ZHZJaW9aczBleWZPV1pWbXA5Y2oyM3g4UEg0cGF0V3Jod29YellHd3F4OXUzYlVWcGFTbFcvTFFHT1RrNUdQUmhMQm8zYmdJM056ZUpFZmVWVjEvRGlSUEhNV1BhVk16Ly9vZEt0MStuVGgxUUZJV2RPM2RDb1ZEZzVaZGZSbVptSml3V2k5Tjl0UDA3SmVVZjdOKzNGN05tZjN2bGhWYlJqbUdvYlk0TklvQVJBamhydFZxKzNVTk13aFVVRkp4eXdWaDVxNjVDUVpXMlpUUSs5Tis3WlVzUzJyN1VEcTFieDBDaFVLQnpsNjVvMExBaGRncDg5OTdlUGxpMmZDV2VhZFFJSkVuaTFkZGVoOFZzeHExYi8xVjVHK2ZPbmtYSDl1M1FyMjl2TkdqWUVDKzJmY25wK3haK1B4OHF0UnBkdTczeXdINS9WYlpKRUFTOFBMMWdMREkra3VmczhlUEhNSDdjWjdCWUxNakp5Y0hBMlA3SXllRUY2YjZkTXhmajRpZVV1MW1mT1hNYWJkcThLTnlBQ01qbE5DNWR1aWk5OXVLTFBLVzlMU1B1blc0WW9vZkdjZnhFZ0tlbnA5MTdsaTVaSkZHRHA2VDhnNCtIOHplNEs1Y3ZvV2xVRkc3eHJyK3R0OFk0Q1VmQmNad0VjSEk1YmRlZ3k3MzExbHVud0hmMnVxd1NPM1BtTkRwMWVCbDVlYm1TaDlPdjc3dFBWRTR4TU5DK0s3OTI3VERvOVh6K1Q2dlY0dVRKRTRqN01CYTkzK21GOTkvckk5MXRxMnFObm4wV08vL2NpNS9YYjBSNmVycWRFSWhvSzFmOGlMLy9Qb3FwVTZkWDJ5amNuYXlxMitRNERqbTVPZEErb2oyRXpadEh3OHZiRzE5TytnS2ZqUG9ZUGQ3NFA0bEI1azZNdUdmUHB1Q3pNYU5CSzJqazUrZExyNG1NdUlrSmN5VkczTXFNcG1rd0RBTnZiMi9FeE1TQVpWazd3a2tBZU9mZFB0aTdkdzhTNW4ySHlWOU93dEJodkRCTjNmQUluRHh4M0RoMHlFY1pEaUdvSGJBSllGWk8xSVVVa3NjY0FIYi8vdjBzeDNGSFhkQjFaeXNwS2NHYTFhdWZ5Ti9tNys4UHZVTVI0L2J0VklrYi84QmYrN0Y2MVUvNC9QTkpXTDMyNXdwRFhZSWd5b0dkcWJRVW0zN2JDRk1wVDlvY0dCaUk5dTA3NE15WjAzYnYyN0QrRit6YXVRTnp2a3Q0WUgxWmQ3UE40OGVQZ1piTFVhOSsvWWR5ZkRwMjdDZzlIRm1jeGJXUGl4dU1VeWRQUUVFcnF1enhidDZjaE9YTGxtTGE5RmtJZGNpaFZjU0llNmR3dEdIRGhqaDA2SkJVbGJjMXJWYUxRWU0rd3ZwZmZrYTdsMTlHL2ZyOFdGbVRKazNSdmtPbmt3WkRSbVdneHBiTmlZckJLSy96UU1LZU41eTFXcTB1WUt2aUFkdTdaN2ZrM3R2YXZyMTc4T0hBRDlDdjc3dVlPV09hbEZOSVMwdkRvQThIb1BjN3ZUQnI1blFwcWY5UThvWldxMFNxeWJFc3JGYXJCRUxkWG5rVisvZnZ4YkZqZjhOcXRXTFBudDA0ZHpZRkhUdDFBc0FMakJBRVFGSVU4dlB6cEZDQ1krM0pUQU9EZ25EMHlCRllMQlprR2d6OFhWeWh3RThyVjJEZHVqV3dXQ3pJeTh2RmdRTi9vWEhqeG1XaDhPWWtiUHB0STc2YmwvakFlT3FxdWsyVHlZUy9qeDdCOUdsZkkyN1FSdytsY0pDUmtZR2RPM2RLRDJkTU1rYWpFWjkrT2dwOSt2WkRRRUFBWmt5ZldpbTdzeGhpZW5oNFlOYnNiK0hsNVFXVHlRUjNBZUJGUnR4aHcwZEFMcGRMakxpVm1kbHNoc2xrd3NHREIyRXltVUJSVkRsdGo2dFhyMkw2dEsveDFlU3ZjZlRJWVd6ZHVrVjY3ZFZYWHp2ckpBeGxiSE5zb21OR0VJU1VxM056ZDRkTUtJOXlvbHRYV0ZoNHpFVjZlR2RUcXpYbzJLa0xWcTlhaVM1ZHlnRHErdlZyMkxCaFBSSVNGa0NoVkdMbWpHbll0blVMWHUvZUEzUG5mSVAySFRxaTU1dHY0ZGpmUjNIbzRJR0hzdStPRGJvenBrL0ZqT2xUMGFGakozeit4U1JFUnRiRHhDOG40L3NGaWRDbnA2TjJhQ2htenY1Vzh0aTZkTzJHczJkVEVOdi9QVkNVREs5Mzc0SEl5SHJJeWJVSCtWR2pSbVAyckpsWXZtd0phdGV1alNYTFZvQ21hY3lZT1J1SkNYUHg4N3Exa012bGFQdFNPL1I3bjZkZlp4Z0dzMmJ5WWVBN3ZleTU5MWV1V29PQWdPcHZZcTdxTm9jTitRZ0V3Uk1zZmpKNnpBUHRZN3RidTNyMUN0cTJiWWQzZS9lQjFXckYzTy9tSUNjbnAxeFBvYTAxYlJxRmMrZk9naVJKNU9YbDR1clZxNmduRkg0cVlzU3R6REl6TSszQ1h3OFBqM0xDTFNkUEhNZlljZVB4ZlBQbWVLNXhFeXhidWhoZHUzWURRUkM0ZHYzYXRZcEFEUTVUQnlSSlFTYWpZRFlERkVtVlRSNklIdHRISDMxMGROMjZkZmtBM0Yzd1ZibTk4WDg5MGE5dmI0azFGQUQrL3Zzb1VtLzloMEZ4QTZXN2xsWm9GVWxKK1FjVEJVV2c4SWlhNzZycDFMa0xPblh1VXU3NXlNaDYrT3RnNVRxbXJWdkhWSGpoS2hRS1RQaDhvdDF6QXorTUsvZStGaTFiNFpjTkc4czlIeEVaaWUvbUpUcjlib3Fpc1AvQTRRZDZIS3V5elR1dDEvMmFUbGU5N1VSTm1qUkZreVk4NWJaTUpzTW5Ea3k1enF4TDEyNjRkT2tTK3ZmanE5YkRQaDRoaGVRVk1lSldaamR1M0lDSGh3ZmF0MjhQQURoOStuUzVnc05idmQ2Vy91M3Q3WTFQeDR5VlVuNXhBMk5UbllJYVFiRGdPSllUakNSSmppUUpqaUJJYUxWYUxqYzNoL2ZZYkhPaXYvenlpM1hObWpVSFNKSjh4UVZkRlJ0QkVGQ3BWSGlqWjArc1dsVW1qbUV4VzlEMnBYYVM1Smxqd3JrbUcySmQ5dmdhUlZFb0tqSSswT0Y4eDl4b1pRRG80K05UWllVczIvTTlPVG41bnZiTllySDhyZGZyYmNOUXF3aHVCQTl1bkRSbFFKSWdDQklrU1lCV0tPRHU3c0VYRHh4bXJsaUx4WExRZGFyZEdkZ0FvRWYzTjNBNzlaYjBmSFNMRnRpemU3ZEVEYjU3OTU5SVNmbEhjdWUzYjl2S2g0TkNHZjErVGFWU3V3N0dYYTdOdzF5emlyYnQ1K2VIWW1OaHBhbVBxcVpJSG5hS3BqcmVsNXViKzA4bFlhaERLQ3FNVXBFa1NJSUVTWkpTVlJSQ0lvNEZ3R1ZrWkxpQXJZcW1VQ3JScDI5WnZxcEJnNFlZTnZ4ampCMHpHbS8zNm9rL2QrNUFjSEF3QUdENGlGSFl1ZU1QOUg2bkY3WnQyd3F5R21ZZnhUdTl5K3l0eUZoWTRXd3ArWkRXck1oWUNLcUNGcExBd0VCd0hJdk1qSFNuKzFhbmJzUWR3VUN0MXFCTzNZaUh1dTdWdForblRwNjQ2Z1RVeEVlWm1BdEI4SVVza2lnRE5aSUVvVktwQ0t2VlNyQXNTM0ljUjNFY0p3ZWdZRmwySDRCblhaY0ljUExVS2ZnSDNML3U1NFVMNTFHclZqRGMzTnl3Wjg5dWJOKzJGYk5tZjJ2M25nejliVHgvRjUzc04yN2NSSGFPaTBIWDBUTDBhZkR4OFVabzdmSnN0UStMZFpobjlmVkdtQk1HWGRFTUJnUDBlajJzVmlzS0gyQmorS05rSE1lZGI5ZXUzU1R3SWkyMjRpMUZBSW9KZ2hBMERnaUdJQWlXSkVtT29palFOTTNSTkEyRlFnRVpINTlLZVI4cEhMVmFyWHRrTXBrTDJBRElxaW4vVVZwU2lqR2pSL0hLNzFvdFBoczdydHdkWFM2WDM5VjNob2JXUm1hbUFSbjZOR2gxYmk3TkEyTWhqTVpDTUZhclUxQURnTERRVUJnTUQyN054SDFpR2FaU1VCTkRVajgvdjZmNkdCWVdGdjROSjdrMUFJd1lWWXF0SGhSRlFTNlhnNlpwS0pWS0tKVktxRlFxRUZxdGxyQllMQVRETUFUTHNoVEhjUlFBT2lzcjYyVXZMNitOTGxnRDB0UFRrYTdQRUJnNGFzNE1HZWtJRFBDLzZ5RjRqdU53L2NaTjVPUmtnN0d5S0MxOU9za25WU28xU0lxQ2o3Y1BRa05EN2xpb3VYbnpQMlJtWllHeE1qVzJaaXFWR3BSTWRrZFB6V1ZsZHVMRWlVK2pvNk92QWloR21jYUJrU0NJSXNHTE13djZCZ3hGVVp4Y0x1Y1VDZ1dVU2lXblZDcWhWcXRCdUxtNUVXYXpXUVEyMjNCVXliSnNNb0JhcnFVR1RwMUtCa0VRMEdoMVVGZnpIYjY0eUFoallRRUFybHI1MkZ6bXNzY3dERTBqU1hLa1RSaHFDMndsQUVvSmdyRFJFS1U0bXFZbFlGT3BWRkNyMVh3b1NwSWt4ekNNYlNqS0FXQVlodGxCVWRRSHJ1VUdtaldMUW5wNk9neUdUQlFXNUZYYnNMcE9wNE5NSmtOUVVDQUNBZ0pjQysyeXA5cEtTa3IrZ24wMTFDNFVkY0Fvb1llTnh6Q1NKRUZSRkNpS0tzdXhpVzBmd2xBcEM0QXRMQ3o4MDhQRHd3VnNnZ1VHQnRZSWZiZkxYT1l5M3E1Y3VYTEdBZFNzQUt3RVFkaTFlaEFPZld3aW9Jbi9Kc1h5cURoblpkUFR4bnA1ZWYwSjRMWnJ1VjNtTXBjOWlEQzBTWk1tMXdYd3NqbzhHRnRRQXdCYjdMSUZONHFpSUdOWmx1TTRyb3h0MHNaakE4QmV1M1p0TzBWUkExekw3aktYdWF5R3c5QjlqcDZhQTZpSnpMbWNHRjBLUEc4Y3d6QmdHQVpXcXhVV2l3VXloVUloa3JSSjAvOEMyTEVBR0hkMzkrM2UzdDR1WUhPWnkxeFdvM2I4K1BIa1NzSlFpZEZEOU5Ca01obmtjam1Fd2dIRXdvRldxd1ZwRzV2YWNMTko0YWl2cis5QnVGVGlYZVl5bDlWc0dIcXhSWXNXL3ptQW1nVVZNSG80NXRha0VGUW00eDgyRlFXQ0pFbU9aVmxDaUdGRnNRVEdiRFp2cG1tNm9XdjVYZWF5R3IyNG9kZnJrWkZoQU1Nd01CcWZuc21Ed3NMQ2ZiQnZ5cFVlSE1lSmpia2l3U1JZbHVVc0ZndHNkQS9BY1p3VWpzcHNQVGJCYStPSU1vVVhGZ0NUbHBhMkxTd3NiSXpyMUhPWnkyb08xSktUazhHQmtLWWgvSitpMzc5enh4OW5uSGhyVnZEVEJuYkVraVJKY3BSTUJscE9RNkdnb1ZBcW9WS3FvRktyb0ZGcm9OUHB5a0pSVzNCekRFZnIxcTE3bm1YWm5VL2FZaVltSmtLcFZEN1FiVnF0Vm93WU1RSitmbjV3ZDNkSFhGd2Npb3VMWFZmMlUyNTZ2UjRjQ1BnSEJEMTFZM0ZXcTNWdjdBZnZaOXNBbThYQmF5c2Zob29ENzdaaEtDV0RUQzZIWEM0SEtaUEpSRkRqYkR3MnpvYnRnd1hBRkJjWEo3bE92L3UzY2VQR0lTa3BDZXZYcjBkU1VoSjI3OTZOWWNPR3VSYm1LVGVESVJOYW5kdFQrZHZUMDlNT09RbEJMYWk0ZjAxb3hpVTVpaFNBVGNibjErUXlHZVEwWFJhS09oWVJDSUt3YS8xSVNFallQRzdjdU04QWhMaE93M3V6b3FJaXpKOC9INnRXclVMYnRyeVUyYUpGaTlDeFkwZk1tREZEVW1wMzJkTm5ETVBjazZkMjRmdzVMRjcwQTc3OWJsNk43dCtGQytleGRjdG1OR25TRkIwNmRwS2UvKzIzWDdGcDQ2OEFRYUJ0MjNiNElKWnZvS2hNWVBuTW1kTkltUHNkckl3VllhRmhxZGV1WDcvZzRLMUpZYWlJUDQ0TnVTUkZnaVFkdkRXaFNrclRkSm5IWmh1S2l1R29qZGZHakI4L3ZzUmlzZno2dEoxd2E5ZXVSWk1tVGFCU3FWQzNibDNNbTJkL0F1M1pzd2ZObWpXRFNxVkNkSFEwWnMrZWJRZFFQWHYyUlBQbXpRRUF5Y25KS0NrcGtVQU5BTnEwNFpXMmp4dzU0cnE2bjJJckxDeTRwOC9WYjlBUUU3Lzhxa2IzYmNIOFJDeGRzaGpYcmw1RlVWR1I5UHgvLzkzRXhnMGI4UDBQUzdCMDJRcWNPWk9NNDhlUENaL2hCWlpYckZ5TjkvdC9nQm5UcGtxcG1HbGZUOGFFTHliaXh4V3I0T1BydDJQdm50MFdaOTRhUU5oWFJFVndJMGxRdHVOVEFxako1SExJUmRvaXNUd3F2SW1qS0lwZ0dJWWpTUklNdzBoNU5nRFdXN2R1YmFwYnQrNklwK1ZrKyttbm54QWJHNHR2dnZrR25UdDN4bDkvL1lYaHc0ZERyVlpqd0lBQnVIcjFLcnAxNjRhaFE0ZGk3ZHExMHV1MnlrVTllL1pFYmk2dlAzcjc5bTNRTkcwbnFDR1h5K0h0N1kzVTFGVFgxZTJ5Y3BhZG5ZMnBYMDlHVnFZQkJFbGk4T0FoYU5ucUJhU21wbUxVaU9Hd1dNenc4UERFOGhWbDlQVGpQdnNVYVduOHdGQmVYaDdVR2czV3Jsc1BnRmVGU3BnN0Iva0YrZkR5OU1LWXNlTWtrUjRBV1AvTHo5aTRjWVAwZmdBWU1QQkQwRFNOMmJObTJPM2JQMmZPNFBubXphRldxMkcxV3VIcDRZa3pwMDhqT3JvRnpwdzVqWkVqUHdGZ0w3QnN5TWlBVXFWQ1dGZ2QwYk03VllHM1ppVUlNYjlHY0FEQkVRQkhrQ1JIa1NSSWt1S2tTRk1NUXdWdlRhRlFsZ0diVGE3Tk5oeTFteDJOaUlpNFlMVmFONUlrK2NiVGNGSjk4ODAzK09DREQ2UWNXR1JrSkc3Y3VJSEpreWRqd0lBQldMaHdJUm8wYUlCWnMyYnhkOC82OVpHU2tvSTFhOVpJMy9IMjIyVmlGY1hGeFU2TEZRcUZvcHdzbWN0Y0JnQS9yMXVEeG8wYm85LzdIK0RhdFd0WU1EOEJMVnU5Z09EZ1lQeXlZU011WDc2RXFWTW0yMzFtMmd6K2ZNelB6MFBjd0ZoSmY4TnNObVBxbEs4d1plcDBCQVlHWXNjZjIvSDlndm1ZOVBqTzdyUUFBQ0FBU1VSQlZHWFo1NXMwYlZxT2VmaE9Bc3VabVptWTl2VmtNQ3dEblpBbnRCVlkvdlBQblpMQWNrRkJBUlFLQmN4bU0rWis5KzJXWlVzWFp6bDRhcmJnSm9TaDRQaUhXRFN3U1ovSnlydzFXbWpXVmFtVUlPVnlPUnk4TmpnT3hndTlJZ3dBSmk4djc2a0pSOCtmUDQ4WFhuakI3cm1ZbUJqODk5OS9NQnFOT0gzNmREbXgydGF0VzFmNGZTcVZxcHhLRDhCclZUNE1mVXFYUGZvVzNhSWxkdis1Q3l0K1hBNVRhV21WQlZWWWxzV1hreWFpMnl1dm9VV0xsZ0I0YWNqVTFGdUlIenNHL2Z2MXhabzFxMkRJeUxEN1hMMTY5ZkhHLy9XOGkydmtIQ2FNSDR1QmNZUFFydDMvc3dmWUNnU1c4L1B6TVdya3gvQnc5empreEZ1ekxScEliQjYydVRXS3NnbERaUlJrTXJtTnQ2YUFTcVdHVEFRMnNXdFhERWNwaXVJRUhVSGIyVkhHeDhkbkQ4TXdod2lDYVAya24xUXFsY3JwQ1NQK1h5YVRsVk02cjB5VU5qZzRHS1dscGNqTHk0T0hod2NBd0dLeElEczdHN1ZxdVdqdlhPWUUyS0piSUhIK1FodzdmZ3dyVnl3SFRkUDRjdkxYZC96YzBpV0xvRlFxMGFmdmU5SnpGb3NGQVFFQmRtSHIvWmk3dXp0S1Mwc3grNXZ2NE9ibWhqTm5Uc05kT0s5RmdlV09uVHBMM3FKV3E0V2JteHNLOHZNeGVjcTBveSsvMU9aNkpkNmEyTHZHbG5WcENHRW9qMUdTUXlhWHlVREw1YUFWQ2lpVktxZzFhcEEwVFVNdTlINVVFSkxhRlJFQVdJdUtpbjUrR2s2cWhnMGJsa3ZxSHo1OEdJR0JnWEJ6YzhOenp6Mkg0OGVQMjczdStMZXRSVVZGUWFWUzRjQ0JNcUhrZ3djUGdpUkp0R3JWeW5VVnU2eWNUWnM2QmNlT0gwUDc5aDB3TG40Q2poNDlVdTVtNm1nSER4N0EvbjM3RUQvK2N6c1c0WWlJQ0JRVUZPQ3YvZnVrZk52bXBOL3RQbnY1OGlYODlsdlZnckxuR2plRzJXeUdRcUVBd3pBNGN2Z1FtalRsdFV3ckVsZ09DQXlFdTRjSDhuSnpkMWZrclFHRUhac0hRTmg0YkdWNU5jck9XMU5BcVZCQ3JWWkJxOUZDSmdKYlJVVUVtN1lQYVJLaGZmdjJ2eDQ1Y3VSRGdpQWVlMDBFbG1YeHh4OS9sSHUrYmR1MmlJK1BSOCtlUGZIc3M4K2ljK2ZPT0hqd0lPYk1tWU9KRTNteDRLRkRoMkxldkhrWU8zWXNQdmpnQXh3OWVoVGZmLys5WFZpNWJ0MDY1T2JtWXZEZ3dkQm9OSWlOamNYUW9VT2gwK2xBMHpUaTR1TFF2MzkvU1RIYlpTNnp0VDU5M3NQczJUT3diczFxc0N5TFVaOThDcElrN1lvSCtmbjVlS3ZuRzJqMi9QTVlPMjQ4RXVkOWg5TFNVZ3daL0tIMFBZa0xmb0JPcDhPMEdiUHczYmZmNEllRjMwT3RWbU9VZzQ1bzhxbFQyTGh4QTNyMCtMODc3bHRvYUJoNjlQZy9EUHB3QURod2FOT21yU1FlWHBIQXNrd213N2o0Q2VkZmU2WHIyUXE4TlF0QmlLQW1GQTBJOE40YVJZSWlLVTRtVlVMbFV0OGFyYUNoVkNtaEZpWVBpSjQ5ZXlJL1B4K0ZoWVVvS2lwQ2NYRXhTa3BLWURLWkNKUEpCQnM5QkpMak9Ca0FPUUJsVVZIUkFKVks5ZlhqZk5Ja0ppWlcyQng3L2ZwMWhJV0ZZZG15WlpneFl3WnUzTGlCc0xBd0RCOCtIRU9HREpIZXQyUEhEb3dhTlFwWHJseEJWRlFVV3Jac2lRMGJOa2k2b2oxNzlzU05HemR3NHNRSktaODJZc1FJckYyN0ZpUkpvbWZQbnBnM2I5NERuNEJ3MmFObCsvZnZSM2hrZzZmaXR4b01obStmajJwOEJEejl0NmhyWUFSUEJWNUNFRVFwRDNDRWxWZWhvamlaVENZcVVIRzJUQjRhclJZNm5RNmVucDd3OGZGRlVGQVF3c0xDUVBUdTNSdDVlWGtvS0NoQVVWRVJpb3FLVUZKU2d0TFNVcGhNSnNKc05zTnF0WklzeXhJMmVnajA0c1dMdldKalkvOEFFUDYwbm93cEtTa29MaTVHeTVZdHBlY21UWnFFYmR1MjRkaXhZdy9VNjd4eDh6L2s1T1NBWVJpVWxqeWRJMXBLbFFvVVJjSEwweHRoWWJVbDhsUm54bkdjc0diWnNGcHJiczJVS2hWa01obTh2YndSRmhiNjFBTWJ4M0hYUGhzemV1TGFOYXVMQUpTZ1ROZkFDRjVhcndTQVdRQTJScERXWTRWd2sxTW9GZnhjcUVvRnRVWURuVllMTjNkM2VIbDV3OS9mRDhIQklRaVBpSUJNcFZLaHBLUUVORTNEYkRaRExwZkRZckU0VmtodFExSUdBRE53NE1DQzNyMTcvNlJVS2ljOWpnczhiTmd3SkNZbTNzOEJ3cFVyVjlDM2IxK3NYcjBhVFpzMlJVcEtDdWJQbjQvNGVON3R2cE5La3FQcDlYcjQrOS9kNkxQSlpNYVpNMmRBeVdUUXVibTc1UGVLak1qTnkwWFd5VXcwYmRJVU5DMTNldXhPbkRnSmtxS2cxZFg4bWhVVkdaR2RrNFBNckV4RUM4M2FGZG50Sjd5Zk1UYzNkL1BhTmF0Tk5pR29XUVF5QUJZT1lBZ0hiUVB4UHh6SGdXTTVzQ3dMbG1WNUpnK0J6Y05xdGNCaXNjQmlOc05zTXZQQXBsUXFVVkpTWXBkcms4bGtzRnF0b0NnS0RNT0E0emlKTnB6ak9BWUFzM256NXAvZmZQUE45d0RVZmR3V09DRWhBUWtKQ2ZmMUhUMTY5RUI4ZkR4R2pCaUJ0TFEwQkFjSDQ5TlBQOFhISDM4c1hVQTFiZW42ZEZBeW1Vc3dXVENOUmd1TlJvc01mUnJTMHRNUUZscmVTN3ArNHlaSWlucGdhMmE3VHpkdi9vZlFTbVQ0YWdVSFA4bmUydldsUzVlY2RBQTFtOXhhV1l0SEdhRWtCYmxNMUEzbHE1Nml0NmJWYXVIdTdnNVBUeS80K2ZraE9EZ1lkY1BEMGFqUnN5QTFHZzJVU2lVVUNnVm9tb1p0TVVFb0lvQ2lLTTZtbjAxcy9iRDI2dFVydDZTa1pPWFRmQ0hGeDhmait2WHJNSmxNdUhyMUtzYU1HVk5wQ0ZUZGxwMlYvZFFPVDFkbVdwMGJzckt5bmI2V2s1UHpVTlpNcTNORFZuYldVM3RNc3JPemt4WXZXbGdLKzRLQkNHNFNrNGR0aXdjZmlwS2daQlJIVVE3TnVNS1VnVnF0a2tETzI4c2JNcGtNcEZhcmhWcXRobEtweEwyMGZxeGJ0MjR0eDNFdWh0MkhjZ2U4OStIcHA4RnpZMW5HNldzUGE4MDBHaTBZSy9PVW5xdmN4VzltenpyaEJOVEVmRm81d1JaZTZaMTBtQWZsUjZma0FxaXBWRXBvTkJxNHVibkJ3OU1Udm42K0FBQ1pUcWVUS3FKQ3djQXUxeWFUeVRpcjFVb3dET08wWVRjMk5qYi9yYmZlV3FIUmFLWS80UWNHZXIwZUJvTUJWb2FCc2JCNjJFMjFXaDFrY2huOGZIM3ZXdHFQSUlDU0VoZVhXMFZXVWdIUDNjTXNydHpyOFNLU00wSE1Ud2F1NU4zYmhpTTh3QTJKQWhmbFd5Mi9veUEvSHpldVgwVlJrYkZTSUErckV3NDNkM2RrWkdRa3JmcHBSWVc1TlRocHlDVkprdVA3MW1TY1RFYnhvQ2FUZzZiTGRBNTRqUU1kNzYxNSswQ2g0THNMWkI0ZUhpZ29LSURSYUpTcW9XYXpXUUkzcTlVS21Vd0dobUhFcEozVTB5YmsycXh2dmZYV21pMWJ0cnhCRUVTTEp4WFVrcE9UQVlLRVJxdmoyVTJyVWR1NHFNaUlkSDBHMHRQVHExMEpmdGZPSFZpK2JDa01oZ3dFQlFWaDVhcTF1SHo1RW1MNzk1UGVNelorQXJwMjdlWkN3a2ZaRXBPQnEzbjMvdmtyZVNEbUo0TmIwckZhZHVmNnRTc29MaTY2NDNsOTQvcFZQTnU0NllsM2VyMlo3QVRVbkhwcmtKaHliWWZjNVpETDVKRFRmRE91UXFHQVVxV0NSc05QTTNoNjhYazIwV1NlbnA3SXk4dERZV0doYlE4YmFKcm1xd3dPWHBzTjY0ZWsxcng5KzNaelFVSEJqKzd1N2s4a3NPbjFlb0FnNGVkZk0yTEpZbkxab0U5RGVucDZ0WWt5cDZXbFljYjBxZmh5OHRlSWptNkJnZ0tlR2ljaUloSzdkdThEQUF5TWZiL0cxbTNaMGlWNHZYc1BPellUY2IvbXp2a0dLU24vZ0tacHRPL1FDWU0vR2lJTlg2ZW1waUpoN2h5a25FMkJRcUZBeDQ2ZDhHSGM0SExEMmRWcGQ5cm1pekV2UUM2WGd5QkloSVdGb1gvc0FMUnVIZlBBemtIaWZrRE5CdHlxeSs0RWFyYmc5dC9ObTF1dlhMbHN2WU8zeHBUUHJWR1FVUlFualU3SjVUd2RPRTJYZVdzNkxkdzlQT0R0N1dNM0FrbjYrUGpBdzhNRE9wME9hclVhS3BVS0NvVkN5clU1eTdjNXk3VjVlSGhzWmxsMjI1TUliQVpESmpSYVhjM25ZSFJ1TUJnTTFmWjlGLys5QUI4Zkg3UnVIUU9hcGlXZU9JSWdvRkR3ZDcyN2JVbTVHL3R4K1ZMazVKUlA0RSthT0FHMWdvUHgyKzlic0dqeE1odzljaGhKU1pzQThEMTVZOGVNUnIzNkRiRHA5eTFJU0ZpQS9mdjI0cmVOTmNlOVVOVnRKaTVZaU0xYnQ2Ti83QURNbmprZEczL2Q0UElrNzJCV3EzVlhtNWdYTGpqeDFDcjAxa2c3YjYwTTFPVENQS2hDcVlSS3hjdnN1YnU1dzh2VEMvNDIzaG9Ba0g1K2Z2RHk4b0tibXh1MFdpM0U5Zyt4U21vRGJKd05oYmpkaUJYNGFYeUx3V0Q0OFlrOE9JejFnU1NiTlJvdHJGYnJmWC9QNmRQSjZQNWFOOHlhT1IxNnZSN2RYK3VHN3E5MXc0b2ZsMWY1TzQ0ZU9Zdys3NzZOOWkrM1JXei9mamgzOXF6ZDYvdjM3VVcvOTNxamErY082UDkrWHh3OWNsaDZiZGpRajlEOU5UNjBIZm54Y0hSL3JSdUdmalJJQXBHMmJkdmh2WDd2UTZGUXdNL2ZIODJqbzNIcDRrVUFmTVhTMDhzTHZmdjBBVTNUQ0E0SlFldVlOdmozMzVxclQ5M05ObFVxRlZxM2pzRzQrQWxZdkdpaEhmSGlrMkJGUlVWSStuMFR4bzRaWFQwaDYvWHJPMkUvRTJvSGJCekhXVG1PWXppT1kxbVc1UWhBOHRaS1NvcTVUSU1CcWJkdW9hQ2dvSXk5UTZtQ1JxT0dRcUhBZ3ZtSk9IandMNmpVYW50Z0N3b0tnbytQRHp3OVBhSFQ2ZURZL2xGSmxiU2MxeFlZR0hqWVlyRXNlZEtBcmJvS0JWWGFsdEY0MzkvUnRHa1VOaVZ0eGNjalJxRldyV0JzU3RxS1RVbGIwZS85L2xYNi9OVXJWL0Q1aEhnTUhqSVVXN2Z2eEp0djljS29rY01saXB1Yk4yOWd5dVF2OGRsbjhkaXliUWRlZmZWMWpCOC9UaEtsU1VoY2dFMUpXd0VBYytiT3c2YWtyVWhjc0pBLzRVZ1N2ZnYwaFllSHAzRGlYOFBoUTRmUXNpVlBBdURqNDRPRXhBVlFLbFVTRUo1T1RrYmp4azFxYk0zdlpadlJMVnJDYkxGSWdQdzRtZU1RdmZoM1ZsWVdCc2IyeDVVcmw2dmxSbEphV3JwbS9Qanh0eHhBemVUb3JmRmpVenllTUF3RGtxVEFzZ3dzRmdzL1NSQWVqc3lzVExBY0I2VkNDWlhRM25IczJGRW9sVXE0dWJtWDJ6YXBVcWtRRUJBQWIyOXZ1THU3dzdiOW96S3Z6VmxmRzBFUWxuUG56cTBFY052bGhEKyt0bVZMRXRxKzFBNnRXOGRBb1ZDZ2M1ZXVhTkN3SVhidTNBRUE4UGIyd2JMbEsvRk1vMFlnU1JLdnZ2WTZMR1l6YnQzNnI4cmJPSGYyTERxMmI0ZCtmWHVqUWNPR2VMSHRTMDdmdC9ENytWQ3AxZWphN1pVSDl2dXJzazJDSU9EbDZRVmprZkhST1hBRW9QMGdDbTZqL3dkQ0tZUHF0ZnB3RzljR2hKdkM3bTJqUjQzQTZlUlRBSGpHM084WHpBY0FlSGg0NEtmVmE5SHYvUStxWTI5dUh6dDI3SzhLUERYYjNqVVc0SE5yRkVWeEhNZHhGRVdCWlZsT29WQUl3KzBxZUh0NXdXZ3NoRW9vR09UbDVjRnNNdUhGRjErRVhGNSt1b1FFZ0tDZ0lQajYrc0xUMHhOdWJtN1FhRFJRcTlWU0hzWVpBMGhGdWJhb3FLaXJ4Y1hGUHp6cEYzL1h6aDFRV1Boa0N0cnE5WG9FQnRwMzVkZXVIUWE5UGgwQW9OVnFjZkxrQ2NSOUdJdmU3L1RDKysvMWNlb0pWR2FObm4wV08vL2NpNS9YYjBSNmVqcVdMUzN2Nks5YzhTUCsvdnNvcGs2ZERwbE05a0IrZTFXM3lYRWNjbkp6b0gyRWVnaVZIU05BcU9SZ2Mwcmd2ZlExcU45b2lOSS9yOEw5VTN2cXhDRkRoMlBxMTFPUW1EQVAyN2R0UmQvMytBcTVlRzFYaCtYbDVmMlNtSmlZNitDcG1aem4xaml1VE1vWWtNa29LSlJLbU0xbVVDU1BOY1hGeFNBSVFuQzZGRGg4NkJBR0RJaUR6czE1bzdVTTRLbC9Bd0lDa0pPVFUySHJoOFZpRVdheXJKekE5c0d4TEF1Q0lGaU80d2piWEZ1Yk5tMVdIajkrdkIxSmt1MWMvcy9qWi83Ky90Q25wOXZmZm0rbklpcUtiMFU1OE5kK3JGNzFFK1o4TncvQklieG8yWXN4THpqMWFoekJ6bFJhaXUzYnQ2RkxsNjVRS0pVSURBeEUrL1lkY1BEZ0FidjNiVmovQzNidDNJRzVDZlBoNXU3K1FINzMzV3p6K1BGam9PVnkxS3RmLzRFZkgwWHJFTGpIdnlqOWJmazNFN21mN0lTOG5qZEt0bDJHOVhvdWRNTmJJbmZrRHBpUHAwSDdnWDBMVVhoRUJEcDI2b3lWSzVaajVxeHY0T1oyNzFNWWNya2M3ZHJaWCtZN2R1dzRNSHIwNk9OVjhOWVlBVDlZcTlYS0NaRWdLSm1NVXlxVUlBa0NOMjVjbDRZSGVEWVBEVTZmVHNaTDdWNUd2UVlOOE8vRkN4VURHd0NFaElRZ0t5dkxhZXVIQ0d3aXVERU1JejJFR1ZJV0FDSDJ0U1VuSjVzTkJzT1NnSUNBcHhMWWZ0MnducS95Y1J6YXZmei84SDcvV0FCOG04TlhrNzVBWVdFaG1rWkY0ZERCQTFJdTZrR2JiWkdDWTFsWXJWWnB3cVRiSzY5aXlPQTRkT2pVQ2MyYVBZKy8vdHFQYzJkVDhOblljUUI0Z1JHQ0FFaUtRbjUrSHJadTJTSjhqLzFzYkdCUUVJNGVPWUs2ZGNPUmw1c0xYejgvMEFvRmZscTVBdm41ZVhpM2QxOFVGUmx4NE1CZmFOS2tMSisxWlhNU052MjJFWE1UNWo4d25ycXFidE5rTXVGMDhpbk1tREVOY1lNK2VpaVU3cVpEdDJEb3RycjhNYjJlQzdxSlArVFArY0Y2TXcrcVYrdkJjamtiY0RndU8zZjhnWDE3OTJESzE5UHd6ZXhaK0hyYWROU3JkMjhBYmJGWXNIT252WmI2dFd2WHRoWVVGRGhPRjRnZVd6bUdYSXFpUUZJVXdIRlMzNnhjTGtkQVlDQTBHZzEwV2gzKytlY00vUDBEUU5NS1hMMXlCWVVGaGJqNDd3WGs1R1NESkVuSTVYTDBldnVkOHNBbWhxUzV1Ym5JejgrSDBXaEVjWEV4VENhVEhialplbTBNdzNBY3gwRjRTTk1JQUN5QmdZRUhUQ2JUZkpxbWh6eE5vSlo4NmhTMmJFbkN3aCtXZ0tJb2ZESnFCRUpEdzlEdTVmK0h1WE8rUWZzT0hkSHp6YmR3N08rak9PVGdwVHdvYzJ6UW5URjlLbVpNbjRvT0hUdmg4eThtSVRLeUhpWitPUm5mTDBpRVBqMGR0VU5ETVhQMnQ1S2FVWmV1M1hEMmJBcGkrNzhIaXBMaDllNDlFQmxaRHptNU9YYmJHVFZxTkdiUG1vbmx5NWFnZHUzYVdMSnNCV2lheG95WnM1R1lNQmMvcjFzTHVWeU90aSsxay9JNkRNTmcxa3crREh5bmx6MzMvc3BWYXhBUVVQMjloRlhkNXJBaEg0RWdlSUxGVDBhUGVhQjliRld4a3UyWDRmYkovMEQ1cUpIVmV5TTBiejREOTg5aWtEL2pvTjM3VWxKUzhPMmN1ZkR6OTRlYnV6dE9uamgrejhCV2JoOUtTbjRjTjI3Y0RRRzh6STRGQTFRd1pRQ0FzMWdzMEdpMW5OeEd3MEF1cDVHV25nYVpUSVk2ZGVyQ3o4OFAwMmZPUm9QNkRlRGo2NHVGMzgrSFZxdXpBN1Z5d09idjc0L3M3R3prNWVWSndDYU9XWWtlbTQzWDVoaVMyazBqRUFSaDNyTm56L0pPblRyOWp5Q0lxS2NGMkk0ZE80b09IVHBKellLdnZQSXFqaDM3RysxZS9uOUlTZmtIRXdWRm9QQ0l5QnJmbDA2ZHU2QlQ1eTdsbm8rTXJJZS9EbGF1WTlxNmRVeUZGNjVDb2NDRXp5ZmFQVGZ3dzdoeTcydlJzaFYrMmJDeDNQTVJrWkg0YnA1enlpaUtvckQvd09FSGVzeXFzczA3cmRmOW1rNVhEWDJTREllQ21ZZWtQNDNMVHdQTFQ1ZDcyeWMyckxsTm0wYWhhZFBxdVR3NWpqdnp4eDkvT0JZTWJITnJaaW0zUmhDc1FQbk5XYTFXRGdDVVNpV24wK21rV2RDaW9tSmN1bmdSL3Y0QjZOQ3hFOC9rSVV3WStQaFdQaHBXTGp0YXExYXRjcmsyMFdOejhOcWtjSlJsV1Z2VmVJYmpPQktBdFV1WEx2cnM3T3dmdkx5OEZqNU5YcHR0ejZ2QVl5Y2xuR3V5SWRabGo2OVJGSVdpSXVNalFXamc3ZTE5VHltU3RMUzBqV3ZYcmpVNkFUV1RIYWp4bkdzc1FZQWpTWktuOXBielBXcmkySlNDcHVIdDVZWDY5ZXNMdEVTKzhQRHdnSStQajkxa3pxREJ6Z1BDY3Z3Njd1N3VjTmJiVmtIakxpZlNHMVhVdE92dDdiM2RZckVzZmxwTzBPYk5XMkRYenAwb0tTbUJ4V0xCdHExYjBFTG8wV3JhTkFyYnQvRW56T1ZMMWRQL3BGS3BYYWh3bDJ2ek1OZXNvbTM3K2ZtaDJGaHhsWjBMOTdoL2o2b2F2a00wdGRvK3QxaGFXcnA2NU1pUkYyMUNVSk9EdDJaWE1DQUlnaU9FWm44WnJ6akZ5ZVV5WVJhVWxtWkIrU0YzZ1NYWDJ4disvZ0dTZHVsZGVXd0FYMGdRdlRaYnFuQkhyODIyaUNCNmJTeGZCbU9FU2lsSkVBUjE2TkNoWlczYnRuMmVJSWhtVDlLRk0rQ0RmaUFFN2pWZlh6OGtKQzdBODgyYm8xUG5MaGowSVY4d2FQUGlTMmpYN21VQXdQQVJvL0RseE0veDY0YjFDSStJNEJPbVQ5Q2QvbEd5SW1OaGhhMEw1RU5hc3lKaklhZ0tXa2dDQXdPUm5wNk96SXgwcUFXaUJUc2JHZ1V1TWZtZVowYTVjQTlnYVBWbGhPclVqWkFHNFRtT083MW56NTY5VHZKcXR1MGRqa1VEZm5SS0hKdVN5eUNYQzU0YkxZNU5sUTI1ZTNsNndjL1hyOG95bFU1WFdTNlhJemc0Mks2SVlFdHBKSWFpanUwZlRnb0pWZ0NXZHUzYXBXWm1aaTcwOGZGWjlEaGVKRm9uK1k5dGYreXE4UDI5M242blhESVRBUEx5Y2pGejlyZHdjM1BEbmoyN1VWSlNVcVZ0M1Nsc3lNN0pjUUdiZ3htTmhmRHg5WEg2bW8rUE43S3pIL3lhR1kyRjVRZ0JiSzFaczJZd0dBelE2L1VvS3N5Mzc1UFVBaGhiRzBEdCs5aURiT0J5ZHZWZEYxb050Rm9OYnQ2OHVmSEhIMzhzcUNnRWhZT3lPNStWRVpUdk9BNGN5M0ljeTRKbEdUQ01sWDlZTGJCYXpMQ1lTMkV4bDhKVVdneFRhUkZ1WHI5eTc4QUdBQUVCQWNqTnpiWHoycHpsMm13OU5vZENndWkxV1FpQ0lIMTlmWGVXbHBiT1ZTZ1VIejl1RjRtc211N3dwU1dsR0RONkZLLzhydFZLN1JPMmQzUm5YZFNWV1dob2JXUm1HcENoVDROVzUrYlNQREFXd21nc0JHTzFJclMyY3hBSUN3MkZ3ZkRnMWt6Y0o1WmhFQlphT1RENStmblowZTg4NnBhZm43L2twWmRldWxTUnQwWVFoQWhzREVFUWpNamNJYXBPMFRRTmxVb2xlR2RsZE45ZVhsN3c5UzFUbldyUW9BRWFObXhZOVd1MnNoZHIxNjVkWVYrYm85ZkdzaXpoVUVnb1Z5VmR0V3JWMHY3OSt6Y2lTYkw5NDNTeCtQbjVJVjJmY2Q4WFFGU3pabGk0cU9KUjJxSWlJd0lEN2s3TWhTQUlORy9lSE5kdjNFUk9UamJ5Y25KUVd2cDBraytxVkdxUUZBVWZieCtFaG9aVSt0NFcwZEc0ZWZNL1pHWmwxZWlhcVZScVVESVp2TDI5N3docWo1dFpyZFo5RXlkT1BPQUFhcVVpc0FtZ1pwOVhFN1FNUkNWM3VWek95ZVZseEpHMkFPZmg0UUZ2YjI4RUJBU2dkdTI3V3p2aVRvSWp0Mjdkd3ZuejUzSHQyaldrcHFiQ1lEQWdKeWRIQWp4SExWSUI5QWlXWlFtV1pTbU80eWp3V3FRMHgzSEtHemR1dEFvTkRaMEw0TEZTSHpsMUtoa0VRVUNqMVVGZHpYZjQ0aUlqaklVRkFMaHFKNXAwbWN0cXlOSVBIVG8wT3lZbTVwWUFaQ1hnTlVLTFlLOFBhaXVseDloNmF3cUZncFAwUVRXODBMR0hod2U4dkd6RVdlcld4VFBQUElPUWtKQzdpN0x1OUlhUWtCQkpVTmt4MStiWStpSEtZbkc4MlU0a1dIbm5naUREd3NLT0Z4UVVKT3AwdXFtUDAxRnMxaXdLNmVucE1CZ3lVVmlRVnkwc0hBRGZ2eVNUeVJBVUZJaUFnQURYNWVLeXg4SnUzNzY5S2lZbUpsVUlNOFhRczlSSkNHb1Z2RFZwMEYwaWpSUkNVVnVhYjFHL1FBeEZhOVdxZGRlZ1ZpVmc0L000b1U1emJVNTYyc1JDZ21Odm16aHVaU0VJZ25KemMvdlpaRExWcFdsNndPTjBNQU1EQTZ1TjNkWmxMbnRjeldnMHJnNE9EajRGKzlZT3h4RFVZaE9Dc3M1QzBJcEFqVmQxOTBGUVVCQkNRMFB2YVIrcnBCT24wK2tRRWhKaVIyOWt5N2dyRHFrSy9XMTJ2VzJDMXliMXRva0xzV3ZYcmlVc3krNXhuU1l1YzlsamxWZmJ2M0Rod2oxd1hnR1ZQRFk0eklNSzVKR2NMYWpSQXNXM0dJN3FkS0lvQzU5WEN3a0p1ZWVKRE5uTm16ZXJqb0k4VlpIVDdubnhPZkYxNFNFbThGaWhBNThRd2UyVlYxNUpPM0Rnd1BjaElTR2hBTUpkcDR6TFhQWm9HOGR4MTA2Y09KSDA2YWVmRmpvSlFjdUJtaUNBYkNlblo0c2ZGZUVJTCtSQ2dtVlozQTArMlFIYjNiaDZ2cjYrVGljUmJBU1dZVU1mVHBoTUpoQUVBVUc2VDJvQklmaGZSTFpwMCtaRVRrNU9ncWVuNSt5cWhzVXVjNW5MSG82emR1M2F0VFZ2dnZsbXFvTzM1aXdFdGRxMmRvamhwOER2S0JVTXRGcXRYZWdwVmo4akl5UFJ1SEZqcU5YM1BpRnlWMkNpVnFzUkdocGFib2EwZ3ZsUmptVlpRaXdrY0J6SENnVUYyNmtFMHN2TGEzTnhjWEdRU3FVYTR6cDNYT2F5UjlPeXM3TVhoNGVIbjdYeDFFcHRId1JCbUd4QnpURUVGU1FHeXVYVmJNSE5WOURXRFEwTnZTOVF1MnRnQS9nRWVrVjhiYzdHck1UR1hRSGNPR0VxUWN5M2tRRElWcTFhTFRseDRvUy9YQzd2NXpxRlhQWVVoM3JRNi9YSXlEQ0FZUmdZalk4R1EzTnBhZW5QNzc3N3JtMi9XcmtRbE9NNENkUTRqbU1GUmx5T1pWbU9ZUmc3dmo4eHNoTWZZcFZVb1ZCQXJWWkRMcGZqMHFWTER4YllBQ0E4UE56cHFKV1RhUVJPNkdjVFI2M0VXVkxiRmhEaW4zLytJZmZzMmJPNGZmdjJmaFJGZFhHZDRpNTdHa0V0T1RrWkhBaHBHc0wvRWRndmk4WHk1MDhyVit6S3ljbXhPQUUxMndrRGZteUtJRmdDWVBsMEZLL2VMakIzY0VvbEw4U2kwV2o1bmpWM0QzaDVlOEhmUHdDMWdvTVJYamRjMHRHNFg3dW5iNkFvQ25YcjFrVndjREQ4L2YzaDVlVmxWeWxWS3BXMitUZE9aQUt4VmJZUzNGVXIrQllRYytmT25WTXZYYnEwa09PNFk0L3pDYnBwMHlZb2xjcUtFeFZXSzBhTUdBRS9Qeis0dTdzakxpNU9VbmR5MmROcmVyMGVIQWo0QndROU1tTnhMTXVlUEhUd1lOTEVMeVlVT09UVVNvUkhxUjJvU1hSRUpGZStDbHArdWtEbnBvT0hoNmRFUlZRN05MUmFRTzJlZ1EzZ0ZXM0N3c0lRRkJRRVIyMVNKeXBYb3BxelhRdUlBN2labm5ubW1aUzB0TFFGSE1kZGVWSlA0SEhqeGlFcEtRbnIxNjlIVWxJU2R1L2VqV0hEaHJtdTdLZmNESVpNYUhWdWo4eitjQngzOWR5NWMrdjc5bmtud3dIVWJDdWdKanRRRTNyV1NGS2FCNFZjSnVma3RDaDBySUJLWlQ5bDRPUGpBLytBQUlTRTFMNHY3WVZxQXpZQUNBNE9SbWhvS0FJREF5WCt0a3JBRGJiOWJRSi9tMFFsTGp4TXdjSEJCM0p5Y2hJQVpENXBKMjlSVVJIbXo1K1AyYk5ubzIzYnRtamJ0aTBXTFZxRUZTdFdJQ3NyeTNWMVA4WEdNTXc5ZVdvWHpwL0RxQkhEcTN0M3NtN2V2TG02YStjTzEyRS8yRzRIYkFSQldEaU9zNGlDeHh6SENSeHJGRWVRSklxS2pNak56VUdtd1FBQ3ZOaTBScTJHMldUQ2diLyt3cFl0bS9IbnJwM3c5dmF1OXNiMysvYjc2dFdyaDlxMWEwdmc1dUhoWVNmaFp3TnVZa2dxOXNPeHprSlNBQ1lmSDU5dCtmbjUzd2tMV0tQV3FsVXJUSmt5QlMrLy9ETFVhalVpSWlMd3h4OS9ZTzdjdVFnT0RvYTd1enNHREJnZ3FTMk5HREVDblR0M3R2dU83dDI3WTlDZ1FVNi92MmZQbm1qZXZEa0FJRGs1R1NVbEpXamJ0cTMwZXBzMmJRQUFSNDRjY1YzZFQ3RVZGaGJjMCtmcU4yaUlpVjkrVloyN1VxclhweTl2MDdyVmVaUzFkWlRhaEo2OHQyYlgya0V5SkVteEhNZXg0RGpJWkJUTUpoTlVLalVYRWxJYi9nRUJTRTlQaDFxdGdWcWpRVXJLUDNqbDFWY3hldlFZUkVSRTR2Q2hROVcrbnZmZE8wWVFCQ0lpSXB3cVdqbXJqb290SUFBSUFFNkxDUnpIa1I0ZUh1dU5ScU5HbzlIRTEvUkpOWDM2ZEd6ZXZCa3hNVEVZTkdnUWV2VG9nZTdkdStQQ2hRczRmLzQ4MnJWcmg2NWR1K0tOTjk2NDYrL3UyYk1uY25OekFRQzNiOThHVGROMm5GeHl1UnplM3Q1SVRVMTFYZDB1SzJmWjJkbVkrdlZrWkdVYVFKQWtCZzhlZ3BhdFhrQnFhaXBHalJnT2k4VU1EdzlQTEYveFUxbTY0N05Qa1piR2E1Ym41ZVZCcmRGZzdicjFBSUNyVjY4aVllNGM1QmZrdzh2VEMyUEdqcE5FZWdCZytiS2xpNy80ZlB3cEIxQXJ0UUUzdmxnQVdJUnJsaVVJc0FSSmNBUkhnT000VGlhVGdXVlp6dDNESFFxRkFnUkJRSitlRHJWS0RZcWlvRmFyVWI5QlF3VFZxb1dpSWlNT0hUejRNcm5Fd0FBQUlBQkpSRUZVNkFFYndJOWNoWWVIbHlPakZNdThUZ2JrYmZ2YklJU2s0bVNDQ0c2RVZxdGRXVnhjckZLcFZDTnI4dVRwMGFPSHBJMzR4aHR2WU5teVpaZzZkU3AwT2gxYXRteUpaNTk5RnVmT25ic25ZSHY3N2JlbGZ4Y1hGenN0TENnVUNwaE1KdGRWN0xKeTl2TzZOV2pjdURINnZmOEJybDI3aGdYekU5Q3kxUXNJRGc3R0x4czI0dkxsUzVnNlpiTGRaNmJObUFVQXlNL1BROXpBV0l3Y05Sb0FZRGFiTVhYS1Y1Z3lkVG9DQXdPeDQ0L3QrSDdCZkV3U0JJYnk4L04rK09MejhZZWRoSjRsZDhpcmNTekRpRlJsa010cFVad0ZSVVZGTUFwc3hrb1ZINzFwdEZyNCt2cGkrN2F0eU0vUFIxNWUzcU1KYkFDdmNHVkxJVzdidEd2anNkbjJ0VW5neHBhcDZqSUMwRW5nOXRaYmJ5MVp2MzQ5clZRcWEwekd6M2I2UXFGUVNQbEQwV2lhcmhiZ1VhbFVNSnZONVo0M21Vd1BSWi9TWlkrK1JiZG9pWVM1Y3dBUWFOR2lKV1ovTTZkS24yTlpGbDlPbW9odXI3eUdGaTFhQWdDdVg3K0cxTlJiaUIvTDk4S3pIQXVOb0YxUVdGaTQ3SjFlYisxSCtha0MreERVUmtKUEZEdG1HSWFUeStVYzc1eUFvMm1lTERYVFlJQkdvMFYwZEF2OC9mZFJ1THQ3UUtWVWdtVlpyUGh4T1hyMWVoc05uM2tHNDhlTmZYU0JEUURDd3NMc3RCRWNweEZzaUNoaDQ2MXhBdmlKa3drUW12MUFFQVN4WmNzV1l0cTBhVXZpNCtObENvVWlyaVpPSHBrVEh2cUsxS1NjUFcreFdLcTBuZURnWUpTV2xpSXZMdzhlSGg3U1o3T3pzNnZNNWU2eXB3ellvbHNnY2Y1Q0hEdCtEQ3RYTEFkTjAvaHk4dGQzL056U0pZdWdWQ3JScCs5N2R1ZHBRRUNBWGRnS0FFYWpjY1dFK0hGN1UxTCtjZXhUY3dRMU96WmNvZG1lb3hVS2pwYkxZYlpZUUpFa2FJVUNGRVhCMTljWGRlclVoYnU3QndpQ1FHQlFJSFJhSFJpckZSTStuNGp3OEhCY3ZQaXZkQzA4c3NBR0FQWHIxeStuUmVvWWpqcDRiU0s5RVd4eWJveVFneU1JZ2lDKyt1cXJQRjlmM3lVREJ3NGtGUXJGd0lkNW90RTBYYzUxdm5UcFVwVTRvNktpb3FCU3FYRGd3QUc4K3VxckFJQ0RCdytDSkVtMGF0WEtkUlc3ckp4Tm16b0YwUzFhb24zN0RtZ1IzUUp2OXV3QmxtVXI3ZmM2ZVBBQTl1L2JoNFdMbHRqZGlDTWlJbEJRVUlDLzl1L0RpMjFmd3RXclYzSHE1SW1menA0OXUyZmp4ZzBsTnA1YWljUERSQkNFV2NpcDJiSGhNaXpMeVNnWlpESTVTa3BLT0hjdmJ5aVZTdWgwYmxBbytQK1hta3I1SnR4YXdRZ0xEVU5BWUNBVU5NM3Y2NEVEYU5LMDZhTVBiQVJCb0g3OStoS3dPWHBzRE1QWWVteTI0QVpoRkFOQ3ZzM3VPNGNORzVaTjAvU1NmdjM2NFdHQ1c4dVdMVEY3OW13c1c3WU16WnMzeDZKRmk1Q2VubDdoKzlldFc0ZmMzRndNSGp3WUdvMEdzYkd4R0RwMEtIUTZIV2lhUmx4Y0hQcjM3dzh2THkvWFZleXljdGFuejN1WVBYc0cxcTFaRFpabE1lcVRUMEdTcEYzeElEOC9IMi8xZkFQTm5uOGVZOGVOUitLODcxQmFXb29oZ3orVXZpZHh3US9RNlhTWU5tTVd2dnYyRy95dzhIdlFOUDJUaDZmbm54dlcvMUlFKzBLQmJRT3V5WEVPVk9wWG95Z1FESU9Ta21LVWxwWndhclVhbmw1ZVVLbFVxRmUvUG03ZXVJR2pSdzlEcDlPaDE5dnZJaVE0QlBYcTEwZjgrTTh4ZWZJa1dNd1doSVNFWU16WStFY2YyTVJjVXIxNjlld3FwTGE1TmlHdlZxNllBUHRLcVMyNEVRUkJFSEZ4Y1prbWsyblJ3SUVEV2FWU0dmY3dUclRYWDM4ZEkwZU94T2pSbzhHeUxQcjE2NGNCQXdhZ3ROUjVaOHFHRFJ0dzQ4WU5EQjQ4R0FBd2UvWnNXSzFXZE8vZUhTUkpvbWZQbnBnN2Q2N3JDbmFaVXd1cFhSdHo1ODEzbXRiNFpjTkc1emZUWDM2dDhQc2FOR2lJaFl1V3dHZzBycGcxYzhhZVpVc1hWd1Jxa3FjbWdocEprZ3hRUmhvcG95aE9ybFNDcGhVYzMzd3JpTEtvTlhCemQwZGtaQ1Q4L1B3UUZGUUxZWFhxb0c1NE9KUktKWjU3cmpGK1dMUzBSdGZ0anBvSDkyTVpHUms0ZCs0Y3JseTVndFRVVk9qMWVtUm5aNWZUU3hCQ1YwSUFRRUpnNFNVNGppTnROQlBrSE1jcEFDZ25USmpnSGg4Zkg2dFNxWWE0VG4wK1VYemo1bi9JeWNrQnd6QW9MWGs2UjdTVUtoVW9pb0tYcHpmQ3dtcFhHcTV4SENlc1dUYXMxcHBiTTZWS0JabE1CbTh2YjRTRlZVd1J0bi8vZm9SSE5uZ2c2MVJZV0xoc1F2eTR2VGJocHpOUXMyWHNzSWlNSFdKelBVWEpPSUhlbXdjMXBiMjRzYWRubWNwVWFGZ1k2dGR2QUY5ZjN3ZDJMdFFvQjVxL3YzKzU0WGduRlZMWTVObWtTcWx3d2RyMnVJbUZCVXlaTWdVblQ1NzhZY09HRFdhMVduM1ByU0FkT25UQW4zLysrY2hjbUhxOUh2NytkemY2YkRLWmNlYk1HVkF5R1hSdTdpNzV2U0lqY3ZOeWtYVXlFMDJiTklWWW9YTUV0Uk1uVG9La0tHaDFOYjltUlVWR1pPZmtJRE1yRTlGQ3MzWkZkcnVHK3hrTENncCtHRHBrOFA1TGx5NmFLd00xbEZWQUpUMVFnVGhXVUpvaUlJeE9TYXdkSkNWUWYxTVU1RElaeFBsUXRWSUZzOGxVNDcvdGdRRWJ3SXZCaU9CV1dYVlVySkFLdld5YzFXb1Z3WTJ4RFV0RmNOdStmVHMwR3MzU3dzTENVcTFXT3hLQThtNzNiZGV1WFkvOWhaeXVUd2NsazhFL0lBZ3VBelFhTFRRYUxUTDBhVWhMVDBPWUV5TFY2emR1Z3FTb0I3Wm10dnQwOCtaL0NLMUVocStXVFp0Uk5WdHBkbmIyNGxZdG14OUdlZmJiaWp3MUt3aUNJUUNHRUR3MUdVVnhNcG5ncVlsRDdXbzF0Qm9OZEhha2tZR29YVHNVa1pHUkNBMExlK0Rud1FOaHJRMFBENjlJWUZrQ09KdTdxWlJyczFxdDRtdE93UTBBZERyZHF0emMzR0lQRDQvaEFIeWZ0Z3M1T3lzYldqZDNGNkk1bUZibmhxeXNiS2ZBbHBPVEE5MURXRE90emcxWjJWbVZBbHNOV1paZW43NDgrdm1vVTdDZi9YVDAwdXhCRFFLb0VTUkhFaVJIa1FKYkIyMURHQ25NZjJvRnZRSStCUFZEclZwOFh1MWhnTm9EQXpZK2FkbkFLYkE1ZW0yaTV5YUNHOEFQQ0ZjQ2JweW5wK2ZHakl5TUlsOWYzNDhJZ29oNFdpNWVqcnYzNGVtbndYUEx6OHR4K3RyRFdqT05Sb3Y4M0p4NytpeVJuQWxpZmpKdzVlNjY5RGx3VjIrYXNsYTMvbS95K1R0NGFxWnlvRVlJb0VZU0FndXVESEk1elNsb2thbERBRFdKQmRjTGJqb2RMT1pTNU9WbUl6TkRnOHlNTktmckVGWW5IRzd1N284L3NBRkFvMGFOeW9GYkJjQW1nWnVZY0tzSTNNUy8vZjM5LzdoKy9YcEI3ZHExNDBpU2pLNStFT0haVFEwR0E2d01BMk5oOWJDYmFyVTZ5T1F5K0FtMHlIZDFzaE5BU1ltTHk2MGlLNm1BNSs1aEZsZnUrWGdsSmdOWDd3N1VXSEFuejVYY1d0ODVkZloxbEovOXRHL3BzTXVwbFFjMW1RQnF0SUwzMUJ5TEJhTElzZFZpZ29lSFI2WEs3VVZGUnR5NGZoV05telo3TW9DTklBZzBhdFNvUXEvTkdaalllSEJPd1UzNFhvN2pPSzVPblRxSGs1T1Q4NTU3N3JrQkZFVjFyazVRUzA1T0JnZ1NHcTJPWnpldFJtM2pvaUlqMHZVWlNFOVByM1lsK0YwN2QyRDVzcVV3R0RJUUZCU0VsYXZXNHZMbFM0anRYOGJDUGpaK0FycDI3ZVpDd2tmWWlMc0VOUXZIL0htdzhHSlNuNHlGR1RiaHArUHNaNGtBYXVaeU9UVTdVSk9ERmdTT2xRcEJMay9qV0FIMVEyQlFFSXdGZVpXQ211MDUvMFNFb3FMSjVYSUozTzdnc2RubTJ5b0NOM0h3bGhORDA2aW9xSE1iTjI2YzFhMWJ0MHlhcHZ0V3h6N3I5WHFBSU9Iblh6Tml5V0p5MmFCUFEzcDZlclZ4VTZXbHBXSEc5S240Y3ZMWGlJNXVnWUlDbmhvbklpSVN1M2J2QXdBTWpIMi94bzcxc3FWTDhIcjNIblpzSnVKK3paM3pEVkpTL2dGTjAyamZvUk1HZnpRRUZFVUJBRkpUVTVFd2R3NVN6cVpBb1ZDZ1k4ZE8rREJ1c1BSNlRkaWR0dmxpekF1UXkrVWdDQkpoWVdIb0h6c0FyVnZIUEpxZUttditlVTMyb1YxZjVQMVdVQW1vbGZQVUJBTFlDa0NONzFWVHFrUVJGbDBacVBueGJSMWhvV0hJejh1dTBlTlVWU01meGthVlNpVWFOV3FFOFBCd0JBY0hTMExNdGx4dVlyT2ZRcUdReEZWbE1obG5JOFRNMkhLNUNUbUNVZ0FsYjd6eHh1MG1UWnA4YXpRYXZ4RmV2eTh6R0RLaDBlcHFmRjAwT2pjWURJWnErNzZMLzE2QWo0OFBXcmVPQVUzVDhQSHhrVHhuUVFxdHdwblk2ckFmbHk5RlRrNTJ1ZWNuVFp5QVdzSEIrTzMzTFZpMGVCbU9Iam1NcEtSTmZQakVzaGc3WmpUcTFXK0FUYjl2UVVMQ0F1emZ0eGUvYmZ5MXh2YXpxdHRNWExBUW03ZHVSLy9ZQVpnOWN6bzIvcnJob1Z5MDNqOTJoOXZvLzBsL2V5VjBoYkpUQkFCWWM2MUYzN2UrTnZIM0wvSit5M2ZJcFJVTGo3THFweTJvZ1dCZ1UvMmtLRms1VUFNSFpHWm1vcmk0V01xcCtmcjZJaWd3Q0tHaFlhaFh2ejVvWVZSS1BNK2FOV3VHamgwN29uMzc5Z2dLdXJzcTlJb2ZsNlAzTzczd2RxK2UyTHBsYzVrM2FyRmc5cXdaNk5mM1hmVHYxeGNIRHg1NCtCNWJtWmVpUWFOR2pad054WmNMUzBXeFZkaFVTNFVUMG5GQ2dSUEQwbi8vL1pmVjZYUXJNekl5OUw2K3ZvTUlncmhuVVdZclkzMGd5V2FOUmd0andmMVR1Sncrbll4SlgweUEyV3hHY1hFeHVyL0doNWs5M3VpSmZ1LzNyOUozSEQxeUdJa0o4NkRYcHlNME5BeWpQdmtValo1OVZucDkvNzY5V0xac0NUSU5CdmdIQkNBdWJqQmF2Y0JmYk1PR2ZvUmIvL0ZDdHlNL0hnNlpqRUp3Y0FnU0Z5d0V5N0pvMjdZZHVyM3lDaFFLQmZ6OC9kRThPaHFYTGw0RXdGY3NQYjI4MEx0UEg5QTBqZUNRRUxTT2FZTi8vNzFRWSt0K045dFVxVlJvM1RvRzh2Z0ptUGpGQkhUcTNPV2hNTE5vK2pTR2NWa3kySndTSVp6aHJ2MW56bHJ6d3MydnpzSmVUY29abjVvUWZoSldnQk5CamVVZEJ0S21VQ0RuYUtGUWtKK2ZEMFpRbXFKcEdsNWVaWjVhYUJnUGFvNlNlWFhxMUFGRlVkaTVjeWNVQ2dWZWZ2bGxaR1ptMnBGR09NNjlpbitucFB6RG4yUExWOEJrTWlFdWJnQ2ltajJQb0tBZ2JOKzJGYVdscFZqeDB4cms1T1JnMElleGFOeTRpVVF0bnA2ZS9uQThOdEYwT3AxVHo4M1QweE02bmM0WnhiaWRNSXlvbitEZ3Vaa0Z6NjBVUUxHL3YvOGYvLzc3N3lTR1lmYmU2MzVXVjZHZ1N0c3kzbi91b1duVEtHeEsyb3FQUjR4Q3JWckIySlMwRlp1U3RsWVoxSzVldVlMUEo4Umo4SkNoMkxwOUo5NThxeGRHalJ3T1EwWUdBT0RtelJ1WU12bExmUFpaUExaczI0RlhYMzBkNDhlUGswUnBFaElYWUZQU1ZnREFuTG56c0NscEt4SVhMT1JEQkpKRTd6NTk0ZUhoQ1lDbjBqbDg2QkJhdHVSSkFIeDhmSkNRdUFCS3BVbzYwVThuSjZOeDR5WTF0dWIzc3Mzb0ZpMWh0bGdrUUg3UVpqbHJnUGJENS9rYkwydmQvL2Z0Yy9OZnVQbFZDdXdaYjRzZEhxVUUvekFEaEFVRXlrQ056K3h3VnF1Rms4bDVDdis4dkh6STVES29WQ3JVQ2F1RHFHYlB3OHZiRzFxdEZyNitmcnluRmhhRyt2WHFRNnZWT2wzWHRMUTB5VmxoV1JhZW5wNTI3MW02WkJIV3JGNEZBRWhKK1FjZkR4OEtBTGh5K1JLYVJrVkJvVlRDemQwZEw3endQNXc0enVzOG5UbHpHbTNhdkNpY1R3VGtjaHFYTHBVZGgxa3pwejljWUFNQWQzZDNDZHhDUWtMc3dPME9GT08yWVNrcmhLYmluVW9FdHhJQXhjODg4OHlwbjMvK2VVcHBhZWx5VnhyNnpyWmxTeExhdnRRT3JWdkhRS0ZRb0hPWHJtalFzQ0YyN3R6QmgwTGVQbGkyZktVa2xmYnFhNi9EWWpiajFxMy9xcnlOYzJmUG9tUDdkdWpYdHpjYU5HeUlGOXUrNVBSOUM3K2ZENVZhamE3ZFhubGd2NzhxMnlRSUFsNmVYakRXY0JLOHdodmd5ak5RZFk1QWlTZTFPdUhYNVN1Ny9UYm1sZ09vT1FKYkNRR1VBb1NaZjhCS0NLcFNKTUNSSURpYXBqbVNKRkZTWE13VkZCVEEzY01kT3EyT24vMTBjNE83dXp0VUtoWGMzTno0bkpvQWFyb0tSRmhvbWdiRE1QRDI5a1pNVEF4WWxwWDREa1Y3NTkwKzJMdDNEeExtZllmSlgwN0MwR0c4ZmtQZDhBaWNQSEVjUnFNUkJRVUZPSGZ1ckhUVHo4L1BoMUtweE5tektmaHN6R2pRQ2hyNStma0FnS1RmTnlFOFBPTGhoYUsyNXVIaGdVYU5HbFY2RW9uL0Z4NGNRUkNFeFdMaGJPc01MTXR5dHYxdFlsZ0tnT3ZkdTNjYWdJVHM3T3diWGw1ZWd3RGNjNGIrd29YemlCc1lpMlhMVnlJaU1oSkxseXpHNXFSTmtwZFNrWDAzNXhzY1BuUUlPVGs1bURqcFM3UjVzZTBqQ1d4NnZSNFJFWkYyejlXdUhRYTlubWN4MFdxMStIUFhUa3laOGlXTWhVYTdNS0txMXVqWlo3SHp6NzFJVDAvSEY1K1B4N0tsU3pCZzRJZDI3MW01NGtmOC9mZFJKQ1FzY01xWlZ4TlcxVzF5SEllYzNCeG9IMUlQSVZka1NiODhmL2VxaHNlR25NSXhpZnhSQkRaVEJhR25CZUJFcFhhR0FNRUp3QVlLQkNlWHk2RlVxcmk4dkZ4UWxBd0IvZ0ZDOVZNSE56YzNlSGw1UWEvWHdOUExTd2cvRzl5eEYwME1SdzhkT29TbVR1aUp0Rm90QmczNkNDTkhETU03Ny9aRy9mcjh2R3lUSmszUnNWTVhEQnM2R081dTdsQ3IxRkNwVmRMbk5tOU9Ra2xKQ2FaTm40VjUzMzBMQU1qSTBHTnowdTlJblAvOW93RnNBT0RwNldrSGJqWWdWZzdZeEdPTHNpWmV3bWF1VkFRNmFhNE5BQ3VTNG5sN2UyODZmLzc4alhyMTZ2V2pLT3JsZTkxZnVWeU92LzdhajRqSVNCdytWRFhPOWhFalA4R0lrWjlnbk1CZytxaWF2NzgvOUE1VVRMZHZweUlxaW05Rk9mRFhmcXhlOVJQbWZEY1B3UUlQM1lzeEx6aTlJVG1DbmFtMEZOdTNiME9YTGwyaFVDb1JHQmlJOXUwN2xFc0FiMWovQzNidDNJRzVDZk5ydEpIelhyZDUvUGd4MEhJNTZ0V3YvOENQajVXeDd2dGJmMzV6dHgvalUxR0pPcnQ5Z1lDUWV0UUFnaVVKZ2lWQWNDVEhnZ0xKeVVCQ0pwTnorZmw1Y0hOM0IyTzF3bURJd0xQUE5TNmJLUER6aFZ2cUxmajYrcUYrL2YvZjNwbkhSMVhlKy8vem5HWDJ5YjRNeVlTRWtJUmN0dUNsd3JWaVhTNHVWRnNwdUsrWHFxMC8vZlc2SWxhOXJiVjFCWmNxeXExNlJhdTFldVVWYmRVZjlkNjZ3cjBnb2xHSkNZUWtKQ1FrSVNHUVpTYVptYk04dnovT2VVNmVPWmxKUUFGSnpQTjZIZVprTXBNWnpweDVuODkzTDBmcUtNZUlOWnY5N0xQUEFCanppTzJkcUJzYUd2REEvZmZpbnQvZWk3WFBQWXZKaFVVNDIxVEtsMTUyT1M2OXpFaHN1T2JxbjJMcTFCTEx5bk83M2JqbnQvZENFQVJFbzFHa3BxYmlyVGZmUkgrb0g5ZisvSnB2M3hTMXcyM216SmtvS1NsQlFVRkIzRmkvMU5SVXkrZm1kcnVaYVVyWjNGS2JXY3I4Ym9yTk5CMWdwdW1xVmF2dUhoZ1llUExydnRkL21ENERIMys4Q1hWMU94RGcwak0rM3J3Sks1YmZZdjM4NkNPcnZyWG8yWWhmRHJPN01RQlFYYmZhU2dIQTJlZjhDQjkrK0Q2MmJQa1lxcXJpdmZmZXhWZlYyM0RHbVdjQ01BYU1FQUlJb29qZTNoN0xSMEwxK0tEUHBMdzhiTjYwQ1lxaW9NdU05anFjVHJ6NHh4Znd5aXN2UTFFVTlQUWN3SVlOSDJIMjdObERwdkNiZjhVYnIxZmlzY2RYSDdVK2RRZjdtdEZvRkI5djNvUUg3cjhYUDcvMnVxTWVPT2pUQnArOS9mSGZyVDM3YjNlTVpub09BSWlZMDZSaUFCUkN6SUhHRkxvZ2lWUWtBcFVnVUJrQ0hFU2toQUIrZndyeTg0T1lWdjRQY0xuY2NMdmN5TWpJUkU1T0R2THo4cEdlbG82OHZMeFJvUVlZRVZRbVJCd09COUxTMG9ZMWFmMTA2eWU0L1pkMzRwUlRUOE1qanoyQm1xK3E0NEtIaXFMZ3BSZi9DRUtBV2JObVd6NWsxUXhrOVBRY1FFTkRBOHBLeTNEVjFkZmdsVmZYWWUwTEx4NDdpbzAzUzJmT25EbE1zWTJ3VVdJc0VFS3NOdU9ta3FOY2dxL09lclFEMEcrLy9YYjk5dHR2LzQrV2xwYTYvUHo4ZnlHRUhIY283OU1oeS9CNlBIanhqeTlnd1VrbjRhdnFiV1BHaDJaUDBIM3dnZnZ3NEFQMzRmUXp6c1MvL2VwdWxKYVc0ZGUvK1MzV1BMVWFIZTN0bUZ4WWlJZFdQV0pOTTFyMHc3TlJYYjBOVnkyN0FxSW80ZHpGUDBGcGFSbjIyOHFGYnI3NVZxeGErWkJ4Slo0OEdjOCs5d0ljRGdjZWZHZ1ZWai94ZTd6NnlwOGh5ekpPUHVWVVhQa3ZQd1ZnNUNtdWZPZ0JTSktFaXk4OEw5NU1mT2xsQkFLSFA1ZndZRi96RjlkZkIwS0F3c0lpM0hMcmJVYzFqMDBIL2J3aHNyZnlsSmI3NnRBNGxPSmtVMnJXTGNGUUh6VUFSaVVCaUE1UUtnQlVwSVJLZ2dCUkEyUWlVaWNrT05QU2gyby9mVDRVRkJRTTVhbVpnWUlkTzdZUGkzNG1XMDFOVFVoTFM4UENoUXNCQUo5Ly92bXdtUjhYWERnMDdDZ3pNeFBMYnh1YWY3Qng0d1k4L3RnanFLZzREZzg4dU1xQzVLSWZubzI2dWpvc3U5SlFjNys0NGNaaENsczZGcjk0cWFtcG1EVnJsdFVPaFJCaTNmTDczSDBXM0FCUXJxcEI1M3h3aVV4VHJhQ2c0TVBYWG51dDdweHp6cm5BNVhJdE85ajNxS2dxVHZ2bmhmajlZNC9naGh0dnhoL1dQSFhNSGNjenoxcUVNODlhTk96KzB0SXlmTFJ4NURtbUo1NjRJT2tYMStsMDRxNS8rM1hjZmRmOGJIamZ6M256L3lsaE04U1MwbEk4OXZqcWhIOWJGRVY4dU9GL2orcHhPcGpYSE8xNGZkUGw5eWZQa3h3SWgvLzAycjRQMzcvclFHVWZaM3JHRWdITjlLY3BBRFdnUmcyZ0VRcWRnRklDUWtVUUtpb2FKQUF5a1F5b1FZYmI0ekdTYi8xRFByWHM3QndqcGNQTVUvdmU5dzYrV3RHcTJQbWFhOEdDazdCZ3dVbkQ3cGNrQ2JmY3VuekU1eDZUWUdNZk5BODMrNVlBY0JiY0ZFV2hab1VDSDFTZ1hLVUNVMjhhQU8zODg4OXZCZkJrYTJ2cmwzbDVlVmNTUWtadHdxNXJHcjUvNGdJME5UWEZSWG9FVVlSK0JKdDNUcXp4dVVSUlJEZ2Npc3VYMUhYOWkxMjdkbFdlOG9NVGQ0QkxaeG9CYWpFeXBOSllkdzZkQUdhUWdFQUVvUklFeUJBc3FMa2d3K1gwd09QendlZnpXVDYxbkJ5alRLcW9NSEdlV3FMbDhYZ3hNQkErcU1jZHlTVWR5eCsyMSt2RjdObXpJWXFpdFkwQ09tb3FPQll4dFFjVm1HMnEyMDFUQUZvd0dQeGc3ZHExWDExd3dRWG5lVHllbjQzMi9qSXlNdkIvZi9HdjZPZnkzUEx6ZzlqZDNJUllMQWFxNjZpdHJVRmhZZEVSTzBadXQyZUNDb2Q0Ykw3Tlk1YnN0WE55Y3REUnNkY0NXeWpVLy93ZlgzaitvL3Z2dXpka1UybDg1SlBmZUtpWlppZDBFMmpVaUh3S1ZBS0JURVRxZ0FnSFpMaUlETGZEQTA5SkRueG1TZ2VER3QvOTFwNm1rV3hOS1M3QnJzYjZFZUhtOFhneHBiamt1d3Myd0NpL3NzUE5EcmtFSmlwVGIvWXFCY3I1M3BocHFwdW1xUVpBWGJac21iWnMyYkpuNnVycVBpMHVMcjVFRk1WRHlzbkl5OHZEcWFmOU15Ni85Q0trcEtSYVpVeEFmTHJIVjlYYjhNVGp2OGY5RHp5RXFTVmYvME5PZEtXZldFRFlITktiYUFuZjBqRUxoL29oSmtraG1UUnBFdHJiMjlIUjFycGhkMHZyMjB1WExHNUtvdEo0bnhvTGpNV0dWSm94UmNxNGNCczFuNElnVWtrU0lVbG1odzZIREFkckVtbk9LR0Q5MUN6ek16L2Z5Rk9iVm41SXFUWXBxYW1vT0c3dXQvNzVIOUdaQjRkelVVcXQrUWt0TFMzbzZPaEFWMWNYZW5wNjBOdmJpM0E0akhBNGpFZ2t3by8vSTl6Z1pxTHJPcHVsUUFDd2VRcWlDWGlaVXVvQTRBRGdCT0FzS1NseGJkbXk1VWVOdTNaZG1SczRPb00vOTNic3dkeEQ2UERSMU5TTTd2MzdKenJvRGp1T2Jjakt5a1JoZ2s0VFRjM042TzQrK3Nkc2IwY2JNak16VVpTZzBTU2xkRTluWitkL3pwa3o1NU9Pamc3RkJyVm9Jb1VHSzlwSlZCaU5JVFRURXFGc015dDBJRWtTSk1tYVV3QW5CemFQeHdPLzM0KzB0RFJrWkdRZ056Y1grZm41bURKbHloR3RKZjVPS3phTHdJUmc1c3laN0FNYXB0enN0K1kyTEdKS0NLRW0zTUFyTjJhYXdwaEdyd0ZRNit2cjFZeU1qTW9ubjN6eWt3VS9PR1Z4UmtibWxVZjZpaTdMOGlFOXA3QndNcnE2T3JHM293MCtmOHJFeklOUVAwS2hmbWlxbWhCcUFGQlVXSWpPenFOM3pOaDcwalV0SWRUQzRmRExiN3p4eGtlWFhYYlpnVkZVV3BSVGFOWkVkbE9sYVNiTWRBNW1Sc2RiMmRiSzI4MzFValBiZVdkblp5TVFDR0R5NU1rb0tTbEJlWG41bUQ0UHhveGk0MWREUXdQcTYrdlIzTnlNOXZaMjdOdTNEL3YzNzBkZlh4OUNvUkRDNFRBR0J3Y3Q1V2JPWENEY0dFQmV2UW1tZWhOTTBFc0FKRTY5V1FydS9RODJWRXdwTGw0cWl1S1pSK0wvMWJtM0haTUN1WWZjdG9oU2lsMU56ZGkvdnh1YXFpTVMrVzQybjNTN1BSQkVFVm1aV1Nnc0xCaFZiVFEzNzBiWHZuM1FWTzJJSFRPMzJ3TlJraElxTlVWUi9ydXFxdXEvNXMrZjM4SUJMUm5VRXBtZDZwRFphUUhObUUxZ0FzMG9aSTlYYUY2djE0SmFSa1lHc3JLeU1HblNKQlFXRnFLa3BBUlRwMDRkOCtmQ21BUWJBTFMwdEdEbnpwMFczRG83TzNIZ3dBSDA5dmFpdjc4ZkF3TUQvR2kvWVhEVE5JMll3NXZabUQ4R04yYWVzcEYvTWc4M0FNNVBQcTFha0pPVGUvN2g2dFE3RUE0aDFOOEhnQjcyUnBNVDY5aGJ1cTV2Yld4c2ZMdTB0TFRXVkZ4MmxSWkxvTktVQkNwTjV6WnFXakJKb2VZeDB6bjgxbnlDZENQeWFVS3R0TFFVQldZbHlWaGYwbGg5NHdVRkJUQ3JEbUFXeFZ1M2ljeFYwMFNsZ2lBUVFSQ2dLQW9saExDR2wvYkFnaFVwSllRdzA5UTZBWStmZTl6N0pTVWxteDUrK09FelVsSlN6aWVFZkczZDd2ZjdJVWtTOHZJbUlSQUlUSHpyeC9HaWxPNW9iMi8vNjhLRkM2dHFhMnNaek95K3RKak5oOFpEelJZY3NJWVhVMUVVcVNpSzF2ZEJsbVhLZXU0eHFIbTlYZ3RxUnBEQWJEdFVXSWl5c3JKREh2MDRBYllqdEhKemM4R2FVUEtBU3dRMXp2ZkdaaUVTUlZGQUNHRUp2WlFPRFRYVmJXa2hHZ0RWbkcrcW1QNDM1ZHh6ejMzcmpqdnUrUERXVzI4OVBTMHQ3WHhDU1BIRTEzZGlKUURhcnE2dXJyL2VmZmZkVzllc1dSUGxUTWxZQXRPVDNTcDJzNU9kaTh5WHhpYXkyMVdhTE1zVzBPeFFZd0VDbHM1UlZGU0Vzckt5WWUyRXhyd3AydFRVTk9iL0U1RklCSTJOalZhMGROKytmVmEwTkJRS1lXQmdBSU9EZzRoR281WlphaGJvRWxZenljeFNMbXBLYkthcFNDbVZtSW5LK2Q4Y0FKeTMzSEpMeWhWWFhMRXdKU1ZsNlRkcGFqbXh4aFhRR3ZmdjMvL21talZyUG4zMjJXY2pIS0NVSkVDTGNiQ3pSenVaVXJPaW5jejg1S3dVcTlzMFUydDhvQ0ExTlJWcGFXbm0zTThBQ2dvS1VGeGNESmZMTmU2Ty9aajFzU1U0aWJCanh3NDBOalppejU0OTJMdDNyd1U0RmxSZ2dPUDlic3ozeGdHT21GMTlDZk8vSVQ0MVJJUVJYRWdFT01meTVjdjlLMWFzT0RVakkrTmNRc2lNaWEvM2Q5S0hWdFBaMmZtM1gvM3FWMVhQUFBOTWRBU2cyVGZGTkR0VkRtWWFiM2JhVlpxcDFPS0FsaWp5eVlER1VqbUtpNHN4YmRxME1adk84WjBCRzF0TlRVMW9iR3hFYTJ1cnBkNE9IRGlBdnI2K3BFR0ZCSUdGdU1ncFUyOE1jaGpLZlVzS3VPTGlZc2ZHalJ0UHlzM05QVnNRaEJNbXZ1N2pmMm1hdHJtbHBlWGRrMDQ2cWJxMXRaWEJpUWVhY2hCQVk4K3pBZ01BS0IveFpDcU5EeEFrQ3hLa3hFMW5EeUFZREtLNHVCaEYzOUlnNHdrZjI5ZGNSVVZGZkZ1ak9CL2NLQUVHZGlWazZvMXFtbWJsdmNITWRUUFZXMXh3d2VaL2l3RndORFkyT3ZMeTh0NEY4RkZkWGQyY29xS2loYklzLzNqaTZ6LytWalFhZld2Nzl1My9NMmZPbkYwY3pIaVZGa3NBTlNVSjBQamdRRnlTTGEvU2VMUFQ0WEFNODZjeDA1TlA1eWdvS01EVXFWUEhWWkRnT3dNMndBZ3E4SDNiWEM0WCtKUEFEcmRJSkdJQkxoYUxXWkZUQmpjdXVFRDRrWCtzUXdpTWZDSVZnR0lxT0F0d0FCeGxaV1ZiQUh6KzdydnZ2anB2M3J3ZitIeStzd0VFSjVBd3BsMGZyZjM5L2UrOC8vNzdueTFldkhoZkVxQWxncG95a2tJekw1aDhsQjRzcHNXdGtKVHlBQUFUVGtsRVFWVG1CdWk2VG5WZGg2WnBWbDh5UlZHc0JIV202QndPQjhMaE1OeHVOL3I3KzlIYjI0dnQyN2RqKy9idGgrVVkrUDBwRUVYQlNobVpNRVdQb3QrdHJxNE96YzNOYUd0cnc5NjllN0YvLy80Ui9XNW1LVmJDNEFLWDFBdlROR1dsV1hGQkJwdUp5cHVxTWdESEpaZGM0bHE1Y3VYOG5KeWMweVJKT20wQ0UyTm5xYXI2Zmt0THkvL2NkTk5OdFgvNXkxK1Vnd1Nha2dCbzlxQUFnNWxPaUFDanhsT2dnaWhDRWtXSXJDUktraUU3WkRoa0I0eXA3S1pTYzd2aDhYcmg5L21Sa21xTXhzdkt5a0p1SUlCZzBBZ1NIQWwvV3BqTHdaeDdET1Znaml1d1hYVFJSWGoxMVZkeC9mWFhZL1hxb1g1ZnJhMnRhR3Bxd2cwMzNJRFBQdnNNNTU1N0xnb0tDcEw2M2JpRVhwaCt0NUdDQzJRVXdFbEpBQ2NEa0JjdFdsU3dkdTNhK1RrNU9RdS9TVDdjeERxaUY4Z2RQVDA5SDN6MDBVZGZMRjY4dUp1RFVpS2dLVW1BcGlZRG10a2prREpmR2hFRWlLWXZUUlFOb0VteVdSb2xPeUE3SEhDYVVITzdYSERINWFnWjZSeFoyZG1tK1RuNXFLaXB6cjN0eUpzVU9HWnlNY2VkS1NyTE10NTQ0dzA4OGNRVDFoVXFHQXhDRUFSVVYxY0RNRHAxQmdLQllUNDRleTVjTEJhREtJcFFGSVZsZFpORTVxbk5COGM2aFFpbWlTcHhKcXBrbnZBVzJOYXZYMThmQ0FTYUFieStiZHUyOHFsVHA1N2dkcnRQQXpCUjFmN3R3cXh0WUdEZ2c1cWFtcXA1OCtidFpqN1Znd0FhdjZtbVF0TVNtWndNYUlJZ1VFcXBtVjlwSk5xS2tnaEpaTFdlRW1UWllTZzFGaVJ3R3BGUHR4bjU5UHVOeUdkR1pnWnlzbk9SbDVlSHlZV0YxcXpOSTcyOFBqLzI3dDA3QWJZanRSWXNXSUFOR3paZ3k1WXRtRDkvdm5YL3hvMGJNV2ZPSEd6ZHV0VXE5alVuemNjQkxod09XMEdHU0NSaUFjNVViOVFlWE5CMW5ROHdKQW95YUFCRTg0b3RVVW9aMk94S1RwNDFhOWJuQUw0QzhQejI3ZHRuRlJZV0h1OXl1VTZaZ056Umc5bmc0T0JIOWZYMVgxUlVWT3ppMVZVU29La0hDYk9FUU9NREE3cXVVMW1XTVV5bHhabWVUcmo0ZEE2dkY3Rm9GRnMvK1FRWFgzSUpNak96a0dPbWN4UVZUWWtiUlB4TlYyMXREZDUrNjAxVVZNekI2V2NNTDVYMmVuMEk5ZmNlTTUvbHVBTmJSa1lHVGozMVZGUldWc2FCYmQyNmRiamdnZ3Z3NmFlZkloZ01vclMwRkI2UEJ6VTFOYWlzckVSUFR3L2NiamZLeTh1Um41K1B3Y0ZCU0pLRW5UdDNZdCsrZmRhZ0UwbVNhR1ptSmtSUkpLRlFDSkZJaElxaUNOYXhGd0FSUmRFQ25LN3JnbWwyaUdia1ZEUlBmR2FtU2dsQUo1V1hsMjhGOERtQXRWOSsrZVcwNHVMaU9SNlA1NFNKM0xqRHUzUmRyd21Id3gvdjJMR2o1dmpqaitlVm1jNkJhU1NncVJ6UTdPWW1pNXpUWkVCajZSdXFxc0xoY0VCa0hUa2swNEpnS3MzaGhOTTEzUFQwcDZSZ3puSEhJUmljYktSekZBU1JrM040bzU1UFBia2FqWTBOR0FpSGg0MWw1TmZSSEN6K25RTWJBQ3hkdWhRUFAvd3dIbnp3UVFEQTRPQWcxcTlmajVVclYyTEZpaFZJVDAvSDdObXpVVmRYaCtlZmZ4NlhYSElKQ2dvS1VGdGJpemZmZkJPeUxDTVlER0wzN3QzbzZ1cENhV2twWkZsR1QwOFA5dXpaZzRHQkFhU21wdEpZTElaSUpFSjBYWWZYNjZXYXBpRVNpVURYZFNwSkV1R2lxTVM4V2dzMk01V3ZhT0EzSG5UUzdObXp2ekNWM0t2cjE2K2ZOSGZ1M09scGFXbHpaRmsrQVVEcUJKNE9hZlVxaXZKeGQzZjNsNXMyYldwWXNtUkpONFlpa2NuVVdTS284UjAyVk50emRVNmhVYjQvR2t1d0ZTd2ZtaEhCRkFTQk9wMHVQajhOc3NNQmdSRHMzcjBibXFwQ2xDVE1ualViK2NFZ0tBWCszOXR2UVJBRXBLZG40SkhISHJlc2tGK3VXSTYydGowQWdKNmVIbmk4WHZ6NWxkY0FHSjF4bnZqOW8ranQ2MFZHZWdadXUvMlgxcEFlQUhqdFAxOUZaZVU2Ni9FQWNQVTFQNFBENGNDcWxRK09tUTk1WElKdDhlTEZ1TzY2NjFCZFhZMlpNMmRpL2ZyMW1ENTlPZ29MQzYzSGVEd2V2UHp5eTdqNDRvdHg3YlhYb3EydERjRmdFS0ZRQ0pzMmJVSkZSUVZ5YzNQaDkvdVJsWldGU0NRQ244K0hmZnYyUWRNMHVOMXVSQ0lSQUtEcDZla1FCTUV5VVZWVmhTaUtiTllDaTZJUzB6UVZ6UHNZNEVUeml5S1pxazYwUVk0SG5iUm8wYUpkQUZvQS9MMmlva0orN3JubmlvdUxpNmY1Zkw3WmtpUjlEOEJFSzEyYmtGQlY5ZE8rdnI3cXVycTZ4cXV1dXFxMXBxWkd0eWt6eldZNkpnTWFEelArT2JyTjNMUVVtcmtoR2RCWXp6UkNDRnd1MXpDVnRxZHREM0t5Y3pCOXhneW9xb3J0dGJXWS8wOG5JRDA5SGQvLy9vbUl4YUo0OVpVL1l4bzMzL1QrQjFjYUJPL3R3Yyt2dVFvMzNYd3JBR1BPNTMyL3V3ZS91KzhCVEpvMENlLzhiVDNXUFBVazd2N05iNjNuVnN5Wk02enpzTVBoR0hNZityak5ZMXV3WUFGZWYvMTF6Snc1RSt2V3JjTjU1NTAzN0hIVjFkWG82dXBDWldVbHVNbFcwSFVkMmRuWmNMbGNhR3hzeE02ZE82MDBFVVZSa0pLU0FxL1hpNEVCbzRlWDMrK0hwbWxVVlZVTURnNFNWVlVoeTdLVmEyUkdVVmsrRWpYSGFRMVRjS2FaYWxVMmNKQkxCRHZwaXkrK2tPYk9uVnNOWUR1QXR3b0xDOFdYWDM1NWNtbHBhWEZxYXVvMFdaWm5Fa0pLdmtzVW81VFd4Mkt4cnc0Y09GQy9mZnYyNXNzdnYzeHZhMnVyYmxObGlkUlpNcFZtL1k0bFk5ditCdTgzaXpNM2VhQnhDZUJ4UUdNS2pSQUN0OGM5bE1aaG1wN0JZQUYyMXUxQVcxc2JTa3BLY01sbGx5RWozWWg2QmdJQlJLTlJ1TjN1UkNZMmZuUDNyM0gyT1QvR3ZIbUdTMmJYcmthMHRyYmdEbk5ndDA1MWVHMURWY3JLcHFHc2JOcVlQdytrOFhxQ0wxMjZGR3ZYcnNWdHQ5Mkd0OTkrRy9mZWUrK3d4NmlxaWx0dXVRVS8vYWt4MDdLOXZkMXFPUzZLSXQ1NDR3Mjg4ODQ3S0M0dXh1VEprekZqeGd4VVZWVkJraVQ0ZkQ1cmlJdlg2N1ZTUTJSWnB0Rm9GRTZuazVqUlUycUxvREt3V1ZQc0thVzZlUitEbkFBalJZQXZ3QmR0Z0J1MjM5emNMSjU0NG9rN0FOUURlQmVBdUdyVkt0L3BwNStlbDUrZlA5bm44MDJSWmJsRUVJUnBNSHJMamVVVjFYVjlSeXdXYStqdjcyL2V2WHYzbm5mZWVXZnZuWGZlT1FndUoyd0VtQ1dEV3R3K3A4eml6RXliT3FNMm9GRytrd3pmWWNZT05MWUJnTmZqalE4UWVEekl5OHZIak9uVGNhQ25CenZyZHFDOXJRMDMzblFMSnVYbElTOHZEenQzMWlVOE9QL3g3Tk53dVZ5NDdQSXJyUHNVUlVFZ0VNRGFGMTRjOXhlNGNRdTJKVXVXNE1ZYmI4VFRUeitOc3JJeVRKa3laZGhqcGsrZmptM2J0cUhFSEtaU1VsS0NaNTU1QmhzM2JzUlZWMTJGVFpzMlllSENoVml3WUlHVjg3WjU4MmE0M1c3NC9YNXJxclhYNjdVaXB3NkhnNWtWbEc5b3FXa2FCRUdncXFxQ1VncFJGQ21sbEpoQkI4S3BPRlo0VHpqSUNTYmtoQVNRRzNILzFsdHZIUVRRRGFDR00zMkZ5c3JLclBMeTh1eXNyS3hjbjgrWEo4dnlKRkVVZzRTUUFnREhTcnVIQ0tXMFJkTzBQYkZZckQwVUNyVjNkbloyMWRUVWRGOTQ0WVVITUpTZHI0OENzMlFLTGVFK0J6UGREak1NRFFDaXlkUlpJcURaaXRhdGpVWGpBY0RuOThlVlJ2bDhQbXpkK2dtbVRTdkhxYWVlQnJmYmpYdC9kdyttbFpmRDUwdnVjZGk0Y1FNKy9PQUQvUHZUejhZbDVaYVVsS0N2cnc4ZmZmZ0JmbkR5S1dob2FFRE5WOVg0MFkvUHRSNnpjMmNkcXF1MzRTYy9XVG9CdG1OeEJZTkJ6SnMzRDNmZGRSZnV2UFBPaEk5WnNXSUZ6anJyTE54OTk5MjQ5TkpMVVZOVGcrWExsK1BtbTIvR2pCa3prSldWaFk2T0R2ajlmaWlLZ3ZmZWV3K1JTQVN5TENNOVBSMzc5eHVUejMwK24xV3h3RTVTdDlzTlZWV3hmLzkrcWlnS2ZENGZKRWtpZzRPRDBEU05NajhHU3hjUkJJRVYyNE1CYmdUSVdZQ3lkUjBaYWVPVGg0VWxTNVlNQU5qRC9WMzJHdVRSUngvMXpabzFLeVVRQ0tTa3BxYW1lRHllRklmRGtTSkpVb29vaWltQ0lQZ0lJVDVDaUpjUTRqWkJ5Qm9Bc05jQ0J3WnJiQnlsZEpCU0dxYVVoblJkRDJtYTFxK3FhbDgwR3UwYkdCam83K25wNld0dmIrLy84c3N2UTh1WEx4L2c0RVZ0SUtNandFeTNLU3h0dEkxMTBVZ0FzamlZOFNBRFM2ZzFwNlR4NWlhRG1hMnRVQnpRV044MHA5TUpTaWxTVTFOdHJidFRjZFpaUDhTNzcvNDNHaHZxNFhRNmNlZGR2NExQNTBOcmF5dHV2dkZmb1NneDlQYjI0b0x6bHVBZjU4N0Y3Yis4RTZzZmZ3eVJTQVRYLzUraENaS3JuL29EL0g0LzduOXdKUjU3NUdIODRkL1h3T1B4NEdiYjRPR3F6ejVEWmVXNk1RKzJjVmQ1b0tvcTFxMWJCd0JZdVhJbGJydnROalEwTktDNDJPZ0JLVWtTWG5ycEpWeDAwVVVBZ0QvOTZVKzQ3Nzc3VUY5ZmowQWdnS3V2dmhwMzNYVVhDQ0hZc21VTHJyNzZhdFRXMXNMajhhQzgzSml2V0ZWVmhXWExscUcydGhaLy8vdmZzWGp4WXF0cVlkZXVYV2h1YmtaRlJRVVVSY0hPblR1aHFpcUN3U0NibG9YdTdtNm0xQ0FJQWp1eENlZUxzeURIOWhOQUxnNTJuSm9URW9Fc3dUNS9tMmpqWDJla0RRbHU3ZnR4YnJBRSsvenRTSnNkWlBZdG1Vb2J0czhHOXlTQzJHZ3dZL3UyeHFVSEJUUmVwZkhOSUh0NmVqQnBVajY4UGkvOGZuTytwMW5BbnBzYlFINSsvaUdOd2ZzMlZzUE83VGo1NUpNbndEWldWbTl2TC9iczJXUDUzK3oxcG14NGpMMlpKVmR6Q200TW9GVzh6TXhVUHNqQXlyVzRzaTMrY3lJMjBNVkJqbElRZ0E2RDNTSCtuQWhzUE9DRUJGQWJDWEFqd2MwT05DU0EyRWdLVFUraTF1eU8vVkVoWm5zOTNtL0dZR2JkY3FhbmZYQTN0WGR0WmpCenVkeElTZkVQYXdMSkZGcDNkemNLSmhkWnpTQXpNak90NG5LL1AyVk1mRStPSmJDTkcxUDBoQk5Pd09iTm04ZGNFSSsveUtTbXBqTHpsSEpkSEFqWDNZRVFRdUpVSEl4eGdjVHcwMEVBQ0VrRUpVb2gyS0JIUmdIYVNIQTdGT1YyS0dBN0ZMTXpHZUNvRFdnakFVeTNBd3dnbEJCUWdJQVFDMlFHekFRQkFqRWhKZ29RK1JJb3RobWxVRU5xVFpZaENBUUNJVkExRGRtcHFjTWFRZnI5ZmhCQ0VBd0dvV2thZkQ0L1VsTlM0ZlY0MGRmYmg3N2V2bVArUk00UEhsdk5hc1lOMkRadDJuVFVYb3NmMk56ZDNSM1h5REljRG8vVXFkZFNib3FpV01yTlZHOThEU3JoRkJ6bGxCeTdwVFpUbGNGRTU5VWRyN0lJQVVrRVBRNlNvNEZNR0FWb3lhQkdFa0I4TkxWR2t5aTNaS0JqY05KSGVnNXo5ck9ac3B6elA1RXFzOEdNUUJEWTdGcUJDc0x3bVJxU0pCbGdrMlRJSnRRY1pxS3QwK0dBcnV1UUpCbVptWmxXNVFCckJDbUtJb3FMcHlMYm5FVXdzU2JBZHRSWFFVRUJjbk56MGRiV1puWHBUV1Nlc280aEl3R08zeGpZUm9NY0J6aG9ta1lKa3hoRFFJdURqVTNoeFVHUFN6MFpCakRUdEIwSlpFZlN4MmI3bVNtcHBNQ2ppWjdQZGM3QXNIMkQ5Z2JRQ0FFQkFSRUlGUWhCbkRvekZCb1ZCUUdDS0VLMFEwMlNJRW5NcDJaQVRYWTQ0SkJsT0V5ejA2Z3FFQ0dLQWdLQmdOV3VteldDbEdVWjAyZk1PT1NCMlJOckFteUhkVGtjRGhRVkZWbUE2K3pzdE5xUTkvVDBvTCsvZjBUL1d6TEFjZjQzcTRNSUR6a3VpZGlDbkdtZUluNjRQYS9jQ0V4QVlRaDJJT3c3bmd4WU5wVTNxaitOc24wNmltSWoxczNCUUc0VTRQRS9HK1lqLzNkc1RuOEFvTHBPSVFnQ0RKNFJhdlkvQTdHVW1jQUZCa1RUN0RSdmVZVW1Nb1hHQWMxVWFQSEJBVGM4SHNPWHBpb0tKaytlYkxYclp0T2lvdEhvaUZBalZWMGdUMVlCOVQySC8yUXVTUU85L2pqUTQ3SW53RFllRjZVVUhSMGQ2T3pzaEtwcGgxVFVHNGxFME4vZmI1bWpiRXZXeUpKdGxBSTZwWkFrQ1U2bmN5VEFRZE0wdnByQmdwd2dpS0JVcDdwT1RjRHBvQlNnb0t6OUtnQkNUUENaMzNlWUlCd09LaTZnUkVhNWpkdTNlSFZ3L1F6cElTcTUrRGVmNEhkY3poWmwrYytpS0ZyUFllYWxwbWtRUldrWXpBaWZnMmI0enl5b2plWkhrMDJ6MCtGd3d1RjB4QUhONHhtYXZENFE3a2RwYVNseWNuSVFDQVRnOVhvUDdnUmJYUVUwOUJ5WkU3KytCK1RKS3RCbno1Z0EyM2lFV2xWVkZVQUVlSDErZUwwKzVINk4xbEtEZzRQbzdPeEVkL2MrOUppVDZmdjYreEFPaFJBT0QyQndjQUNSd1FnaTBRaGlwbm9iR0J4RUpESUlWVkdNcTNwaTh6UnVZNHBOVlZWSWtnUmRwMFNuT3FpdXd3Q2NNUnFWUldWTkFCRFo0WUJ1bXJxTVJ5eTZOOFFuQWs3TklZbDV5WU1TQjJHQ2pnSTJBa0tTQWk0T1dQR1A0MzRtaEplYW9KUmFkWmpzLzBnSU1TcEVIQTdtTzZNTWFoYk1ERC9hY0xOelJLQ3h0a0l1dU53dXVOMGVlTDBlZUgwK3BKanBHMm5wNlFqMzk2S2lvZ0llaitlUXppdHlwS0RHd1czQ0ZCMkhxNk9qQXlBQ2NuSy9XYmRSdDl1TndzSkNCQUs1Nk9yc1F2ZCtNN2pRMjJ1WnB3TURZUXdNR0RDTFJxTndlenlJeFdMbzcrdUZKRWx3dTkwam1xaE10V21hQmtWUklFbnlVSkJoQ0c1RVZZMi80WFE2emNlWS9qaFJoSzRiMWxzMEdqV1VpaWhpeUpaRkhOZ1NwQVF4Zm1Bb2RrRVRYaXlTdGFObWJhRGkxWlQxUEdyL3ZablF6SVBOQWxnQ3B6OElJZEEwRFE2SHd3SWFNeThCd09sd3hxZHFpSUwxR1ZGSzRUTHJORjF1RjBSUndoZWZWMWwvMStQeG9LUzBGSG1abVhIcEczYUY1dmY3a1pLYWl2VDBkR1JtWkNJN0p4dXR1NXNPR1dvVGF3SnNYM3QxZG5iQjYvTWZ0ci9uZExvUUxDaEFZTklrTS9ldDIxSncvZjM5Q0lWREdEQVYzT0JnQk5Gb0JBNVp4dURnQUh3KzM0ZytPSDZMeFdLUVpVZGNBYjhKT0txR0ZCQkM0UGY3VFJWSENhVTZkTXBNVm1vTXJ5RUNaRW5pL1hTY3YyN0lGY1lCei9xSERPME5neDhiTkdLREcxVlYxWUlWcFlDbXFTQ0VRaENNYWd4RlVVQUVBWkpvdkNkVlZhRHJsQnJGNGtNcXpYTDYyemFCR0NhbXBxblU1WElOeXpkajRPS2hGZ3FGRUFxRlVGdzhGUzYzRzNzN090RFd0Z2V6WnMwR1UzM2ZPMzRlMHRMUzBOZlhoK3B0WDhMcGNHTEd6Rmx3bXdyTjQvWEE1L1daTGJvTmhaYVJrWW5zN096RG1seWIrZnhpS05XZDZGdjF2d0NBakNkK2lJRzM2aEI1cHo3cGMvelhIUS9uS1VYWWQ0SFJqc2g3K1d4SVU5TFJlOCtIQi8yNm96V2JQSmJXL3djYUx0Ynd1T0xUcXdBQUFBQkpSVTVFcmtKZ2dnPT0iXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQktvbnBVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphcloxdGx1VzRyV1gvYXhSdkNCSy9PUnp4UTJ2MURIcjR2VGNqczF4VnRsLzdyVzZYcXlJejRzYTlFZ2tjbkFNQzBMWC85Ly82cnYvNnIvOTZTbXZoU3JtMjBrdTUrVi9xcVllWFA3VDc1My85L1BlNTAvbnYrVjhzdi83MC9QWDcxeDgvQ0h5TnZ2TG5CL1g5K2ZxOGZELy80eGQrZjhZei92cjlxLzM2U1dpLzN1alhEM2pqbnl2d2svM3ordk5GOHYzdzgvMG4vWHFqdm4vK1VIcXJmNzdVOGV1TjVxOFhua3Y1OVcvNjQ3Sit2dmozNnkvZnFLelN5bnhRREdISEo5N252K25uQ3VMUHZ5Ly8xdlBmd091ZUdQbnpFOXQxdnZ5K0pSYmtMN2YzKyt0OS8zbUIvckxJdi85MC9YMzEvL2pUM3hZL3ZMKytILysybHVYWEd0M2xYLy9neVgvN2Z2empZOEpmek9HUEt3cC8vY0VZNlo5djU5ZS8zN2ZhOSsyZnUzdFRZVVhMTDRzNmkvMzhmaHRlT0ZqeWVINnQ4RS9sMzh5ZjYvbW44MCs3MzN1eTVldWU5K0NmK2ZRbnNDdmY5YVJuUGUvelBmdDhuYy9rRWxQWW9mSTFoQm5pK1Y2TE5mUXdvL3VVL09mNVFvMDlydGpZeXhuMnhmYWxHUDY0bHVkOGJqK2ZONS9HSjYrSGw0YUhOM3Y0bFgvN3ovWGYvZkIvOHMvMWZkTWxldTcyeDFweFhVRzc1akxjT2YvTHE5aUQ1L3UxYi9rczhPOS9mbTMvL1NmN3dWVFp3WHlXdVhHRDd6MSszbUxrNXgrMkZjOCtSMTZYK2ZxenljOVYxNjgzWUluNDdNekZQSkVkdU1zVDgxT2V1NFpRbjRkMWJHelF5NVdIbU1KZ0I1NmN3K0lpUTRxeGhLdUdGdnhzZnFjKzU3VWhoeEw4TnRqRVJ1Ulk4SzNHRHIxc1Zrb1orNm1wWVVOdmpqbmxuRXV1dVYyNTU3ZkVra291cGRRaXlMMDExbFJ6TGJYV1ZudDlXMnlwNVZaYWJhMzE5dmJRSXhpWWUrbTF0OTc3KzRicjVZTmUzdXZsOVMvZkdXSEVrVVllWmRUUlJoL3Z4SHhtbW5tV1dXZWJmYjRyckxpQWlWVldYVzMxOWU3bjJpREZUanZ2c3V0dXUrLzN3OWErK0tVdmYrV3JYL3Y2OS82eGE3OTI5Wi8rK1IvczJ2TnIxOExaS1Y5WC85ZzF2bnZWK3ZzdEh1RWt1MmZzV0VnUE8xN2RBUXc2dUdkM2UxSUs3cHg3ZHZlQVUrVEFSV2IzNWxxUE84WVdwdjJFL0QxLzdOMC9kdTQvMnJjcnQvOW8zOEwvYmVjdXQrNy94ODVkYk4wLzc5dS8yTFZsbkp0bngzNjgwRFc5STk3SGE5N0FGWDFqZmZ5MXhDKy84YXZqMjdOdVlkSWYvK2MvdlY3dlo3LzE0VjdMdStwVGMwaWx2V3h1SEozTEdIUGlWMmxFTDJXL2laZU1IZExYV255NWc5bldNKzg5cmpCbkhMdTJKKzg2ZHN4ZmU0RzZiK3kxVjU0SmU5cVR6MXExMzJ2dDhYQWZNKzkzalRWQ0duenVFL29NcVY1UDQ2MG02NFgxM1h2WG1RWTJzTCtZNy81OE5lMzY4TE9ZNTczbUhwM3RIUFVlVDhwanMyT0EvOHN1WWxUWFRLTFZzK2FxTDhRa3gwMTRmZGZMT25RdU1lVEJubGJXSjR6U0FmWTN6L3FOVk4vd0xTeHJmaVhPWEVlNklEVjEzaXhHYlFtRDdrU1ozc3Yzc01GZjNTekdIUHh4eGEvTkw5eGNudjR6b0NGMThxNnh6b0J6enE5ZGJlV1MwbUtkWnI1SHVWc1A3UHNjUUg3ZnE0VTFTMXhoclB0TCtWc1kwRno0UVk5NXJ4cHEzeVd3RVNtWHE3U0hQZmxxNXVhTU4rdTcyWXpPNjl6WWY3UDV6OHlyY1RIQVFTejl1MGNxMXpEZ3hidVV0UWF3d3EyRnVQRWpEQk96aldzVXRqbHlLWFBFL1BJSkJjZC9CNSs4NDZoY3lvTWg4R3ZYR01lcS9qdUwreGMvbTZXTVdQYVk4Y09wOTJ6ZkZkWXFIZmVPaWJET1BXTWJLVXhYcHNjMlYvYlcxajYzK1h3dllQL0hXMk10SWJBaFJQcjJmQmVoL1FGOUZtQ0NLZlc1dWNmK3hsQXg0bWVYd1hLWDhSVSt2UlI4OHlQQ1l5ZnRUZmViV250NVQ4eDlyblcxOHVVSmlIM0huTXFMRFg3LzdncStmdlBpcjZWdngvcHhRVEdOc0h0Ym9PUDFzb1A4dFh3UkFNSzd1VXBRRE44SEZVYm5mbk1BU2NTczJPVis3N05lYkNBYUJSZi81bzlYNzY5ZVVoNHV2dGZ2aWQvWi9mMDFYZUZsaTJyQldwNVpndWF5ODRRbUxqeGs4LzZzSWV5R1QzMjBsVEJodFlTVHhJY2tQUXgzL1BhajV3NXNhb1JudlBWaks3aitZNWNkTUs2d0JSY3UxZGJmTC9MaGtYZTRObEc2bDhhT0R1Z1NLMVJUK2JCalhqbEhMOXQ3WHZ5aEZaYWtoNmZuRzJzTEtRZnViNy9TNzdyRzgxNnBqRldlZC9JcGdHdHZCQUt3R09OLzhsdnpSK0J2TlU3d2xML09BejR6cHhiM3lDek1malRIY1dOVTE4TTlWWnowVGJNMjdoNUhlOWRSRUptOWxJN0pMbExBMTBKZ0pmK2R5VjcvdVQwL1h2SEtHdzRYSmpmTkJSY2lUK2NlcERVM3hqZUJWVHhhT2xwRHdUS0pydlV0R3lOczd5N2xHNERBZ3BEbGN2ZlJpbXZFUlk5S0dKMVZUSG9IVjlRelZERUJwcE9RcHJrV1ByVHp5ZzF1d25uNC8vZXlpckVOWUpLVjRwNzUwekQyQVR2c3lWcFB2OHJUZExXT05RSlFmT0p1OGRDdXpYczloQzhDWWt4RXhNZFBHUnU4aWdSVklta3BzZDBFOC9SaUd2dGEvVTQ1Z28rZG5jZW5TOFpRSGx5clB4MThZSjltNUJjcWNjWlBXcVcrWHd0N0VqSW4vc1J2YmFJQWNZMzd3RnJaNWtCRVh1bmV4TS8rZU5zdmlBT3lEZEIxMTRKb1drRERBMFpoTWMvZ2QwZHEvVDdzRysrNVFPRmtWRFdDRFlKYzIxWGt4ZWkrQXRCa1FoUG9jRStDL2lEK3M3SjFQanZpOXgzR1V4OUR6cTQ1WFdQaTd2RVJFTURZeGtKeStiemxuQVQrR3JtaU1jcXp1TTNiMEFRUmdPaDhIU3dCL2lOK0dTQXJmTzlLOFNVOGNodjh6U1VocW1DNjVka3BHOGJBSlZaLzg0dG44VEdMbGdGckl4Vy9qemtsc0FFeUVhK1JGb3NPUUk2YXhTaG9GUHpxL25hQU9zQzI5b2RZTFFOQ1JkUWpYb3pBSGNBaXFtamEwaUljZjVOMXV6Wk9DSVpGU0VlcXdENlVZMGxDcHRZRGpFU1FzUzhpVFNHNFZqQ3NOTDZ1dlo4SmZNU1ZoYkV2dlZkSmE5OGd3ZDczT3dpM2tXQ2VYdXc4QXk4ZjcvSHRZcEM1VTJFbFo5dkljYkFLLzBPTHNWdllQcHp0SmtDK2hPUWJ1cGQwcHp1dnRVSW0zTDdiQ3dVRVNzejVXYmxCSE91SFMzUFJtTUtRSlJMU1lERWZzQkhZTlJ5K2x3eDI5bHN0QmJ6aVFSdkN4d2RqZmRBVUdDQXh6VVdGeExWYUNPRmpBOURneFFmZFpITUpKUmU2ekhDQ3pSUGVJVWg0TjVmUDRzUDFRSFo0M3MwTnNVNHBEYUltZG5BTEJqS24vdjVjRmplVzR4VXlSR2krSFhMWUMvNkN4QUtWY0NQOGpoc2hxT1pudndUbXNEYjJuRURWaVRNUVplL2FpWDdZS0phdjhJdlF4ZzVtOTRGNVlFejNCOW9BRzRtTDc4QXc5S2pnM1VSMGRoNEVaM1hlbk5oWjNwZGJ4V1Q3M250ZFMzNUJOQW9ZZDRzRHozZzdMdnBKQS9BYUtCWnZnQk1YMW4yOVdNbWNIZGJSY3lDWUpTVlc1WGQ2dmZTZVJQZ0k4QnRDOWF1ZHdDZ211QTZsSS83Y0IvV1FCa0FNWkJLK1dONVFGd3FoNUFGWTFjNlBCbS9VZVBsczNuWGlWckVNcENCMG5vMURYMWVNSXh2bmVvTkpnZ0VMcmM2YWFrdWJWWGxZbDRWbEJRSWtiTXJOVGMwZFJjZWtHZ2hvcUljMmMrdDU0b2tUTXdBdVFBYmVlMkUxaTFENlFNWUMwZ0NxU2VSWUY4eXVtU0tBanFVcUhpQkljQTU1R1ZFd3NaUlFwRGsvc0creElZU3JDVTBCUjNadVdncHNZY0w1MkRYQXZHdktQVWFpQXdJS2x3V3BXSFB6UGZ3V1ZCTmtqdEF3VENPV2I3NWdub3QrUWhXdndLbnJ2bnJDbTlZTDJ6VHlQVFVBeklRTDRESmtkQVdYRGdxaFBrQ1laMjNlSFJ3QmFOeHEyR3JxT0FnN2VvUFpnQWg0RHVKcWh2ZFRqVE5xc0JjSlhURENSSFI5Mk1EcFp3Z09OMkU3dzhwQmF3SXpEbG9ENEhvQjVIQ0xVREo0OVFiV0N4VGlBb24reUFEczVlMndpL0tDbkVRWGpIYjM1eDR2Q3h6QlVvSUlXOHJXb1VXZ3IwUWIvSE9OcEJXai8xaXhUdUJoWSsrcHo1NTBHeXNFUnR4dzVwNGpJVGRPSWhpVUFFSjhBL0lRclNlVmhZWUpRanM3N0gyK2NDUXVHWDhrSEJDOE96aUZIRzBoSmNJc1lWTWdMdGd2VXFVU1A5VU1GMFFwanU4dUh4NnNXZ256WXpIblU4SGtyK2NLeHpkU0FUeVREWUlrVHJidWdUQUNQQldUZnJHcmhHOWVMOUhLUDZKTStSTkdVSlArNnk5MWJpWEJzN2lxZ0o0QzFBSExoUVJDVmdTa1RKUTlZa2U0TE5RUHZJa2RKb0NPaWxJNUNkR0FrOVVYaEk0RUtaeDgrOEdHT3Q4WHFwYkN5OW9EVTVDS3lwSzFXY2VGZlV3WXdyY0NvaFg5M1JNc0VIN29Uc0FFMGJtOEFRZ3dDTVBwVWJSQjBJM0ZMNlFFbklhMHNNdDN2ZEFrMzBOY2hLR3lwSERhSmpYZXQxSWJVK3FUaTlrOVpKZ2Y5UGcxakhrRkV6S0dHNktGNzdJaDF3bmhSNmoxcGlEampTVU9vTklORkJwckJ5R08vK0JaZXN6NzVjNTFGUlRsQm9sYklPSmwvQnBKeDFaZUVjditqSTEzbDQrQ3dvRVk5TEsyUkVWZXlKMHZUTjBQWVZNSkZ4MlRhd2d4Z2pPWWl4SHRQSUNrQzdjWUgrOFA0bjFMVGY2OU4wNnZqZ1RtVW1oZ0M0dUh3NEVvMkNUT0FnRUQ2aUJWbnd1R1JZLzh0Z3MwakhzaEJGQUZEZmNObUVyMmN4QzRpK0J1S3F5ejZnTW43cUFRd1pOb2puYzExU3ZtR0hDOHVIRVJYZ2tNYnN4RzVNaUdZUUpRZmt0NkFOZTM0VkhObldjTkRpRDFrMVpFNDM1dk96RnA0akFENGNmSHNoTUp3aEpnNVRBRkZ1ZjgxZ0E4TUNlRFVkc0dJbHk1SnhPYUl4THAyRHN3Q3NrTW5zQjhMdmdBZkp4OU53b013UHJlSU4zTnZSQzdNZU1YTzRiRVRwWWZQdjZDZzF3Rmk4VjExd1RyZWdzYjJVYTRaSE1nQmFvZWlXc3VGYU5KWExNOHBCTnA5dEVvbU1lSUNlRDd5ckd6bDZWbEtURS9TRFpMUDVFUWdBdmsrTlhqbDJaRzRBZGxvQk80U0NWU3dmaUlJWlYvdi81RU16UklpVWVYSm1wT0JkNElZOHpyVFJnOGtRVyt6VzlYV0dFMFJUSkN4NGVKRWdBZ2R3SHlmRk41WHpFUzFQNDlzRnpvMzNvRVFaWWxYeTBaN0RHTDczTzdJakljVGNsNnZRQ0l2MDRVYmtab2ZpV1BEMUkrRXlTQmVBUEhiZnpwWFFpSkhTNTBZTTY5dzJ2TC9neTZCUFBLVnZ4YURoY2pFWWhRaWIyYmdJQUNzemhQVFRkUnFiRzF5QVFXdEpsaGYvZzczeFhIUzVBQmJLUXMxbzZqQ095QVVpb3plYkF3RVRWZlJnMzZTWWczS0czSk4rdk5HN1h3Qk5qZDRIS0krTUFQY2FraTVIQnRERGVqKzlnempHS1lNTVRKaUFBZzI1MzRYRmtOL0NHR2hjVmRFMHZlQ2s2azViY2lLLzF6UWR5RWx5VHFIYTcyNVVHWVFESHp1Wkcvb25wQjVZclNmUkNUZlVOR1lkWTNuSFBJWkFKeUQvNmNYendLQm9uUGNTUEFGWnJQZTRaVndqakdxTVh3U2lSOE5QRE94U0N6cXZENXI1YVZnSWlZUkpNVVJENWU4YjRxUHZpN0Y1TUM3MGNvYnhncGtwQXJZaStoS1lxTHBkOGs0aU4zK21IcGtLcWdac201aEhQa2xYbHYrSXFadEk0NzhUMkUyMjlidi83cFFoQWVLUEJ6SmdGU1lZNnNDT3h0QzNoM0FLSUQyaWplUmxsVys4R0xIaVJSdXZobDZUdWNLK0pWaElZTU9VSU9RRFVLWlA4TExNaG1sWEJzeURBaHlqd21sNy8rdGp2WDkzdHpjTkVjRGp2bURiaWhuUk9Pai9hUmZrYzJDeVoxQ0dEYmtERndGeFNxSzV2VUsxOVpGL3JtSVJ3VDdMeFRqMlpNRldmMkZpYi9uWk01S0J3b1FIamQzQlpzOWc5ei9jZEZzVWJiSzY4WksvbHUxRTh3ek8raDYwSzh3R3o4RFZuUmVLOGxyMFZheE5kTUw2UnU5M0diNlVXV2huakJmRk9ycHNyVVpWa1VoWEdFb2YzOXEwOG1aa2kxVFgraUxZQWErWEo5dUtKOW05dG1IV0NGSGJxeVppRFdvTGlBZkN6SENBZFlZcWNtdkJGUUQzK0R0MmJzR1Y0SHFRYW4wS2tROWc0VE80bW50eUpDUy93M1Y4SUs2TEd4d2poWXJGQU5mOHArSUJVeWVSR3VDdEVUTVlWQThKUjJtME1DODkrQi9YNTF3K2FnS093T2tmZE81dUtXeW1pZ0JBdnFMR2dLNE01MW44djQvdXlvZjc2UWp6MEc5cEN4alNoQzdNWVB3UisyRk9XTnIvRCtjUFRTRzhDR1ZtZ05KWHQvQlZZRyswUEJoeUdoQk53N0lUUEJBR1dxUlAveHFvMGdhWmdZNFA3ZUFEaWtBVFZ5N2VlRnR1NnQ5b0pPUWM0RkZSZzZ2UHJGMU1HZVhUL0UrZ1BxcGc5V2h0U0ZnQU8rQ0llWjNJc0t4RjdRUWVMMWN6d2ptM3NzQ01pQ2VxdlRvNVM0aHprbjJRMXZuRG82SFZva2hxc0x3VFRDMkFNRDJSZWhuc1dBTTNTbzJ3ZnRoeVpBR0Q1MzVYbjVWYVFsd211bXdtMFFOTUNGQ0QzQ05jdnU3RE1lRFV5T1pqNzdoeDdoNU5nSFV0SXMyRHNWaUliS2JDb2FWcDBDTWFoNWpBUDNmVEZMZUJVRWxpZ0hQK1NTTC9VdWxrelEzcmZISEpBT1VDeDZxdHkwY3lrQWVyc1hreVVUR0J6L0dnYXZoR1ErWndQbEhGaW5RLy9RTy9EQlYva0hjR1djQWRuVTRHNGdhekRCNFE3eWxqQmJyamRyLzNnL1AyTDFrVzltc0JBU1k2RllSTTEzNFpLWURmc2lBUUV2Q1NkOENqc1BpM2lmMjBUSVJHczh4T3pyZy8zaWhxQlBXRENMWVdvTUFOdmI3QmJMU3B5RzFTQ1FRRjVBR0NkcEd5Zi96TG1pVEovMkZjK3VJRnEvVHZtRnJNZGZPQm54eVdWTFc3RHZpVkVpa2VEeEExV0ZtMFhzaEhVQjV6QnJOTUdFMW02UE13aFJZRTB6dzVuUUhlemFEVmplSUJOdmpBNzU3cDhVNzRSakxQT2szUGQ0YnUrZlVCUlordlRHY3ZrbHY4bzlJbkJQNkErcEpKdmhrVmhCSXhkVGhCRGVneEJRTnFKa0lBaUdqLy80blR0ajhOKytWTHJmQ2JYdzU0VkJCUk9pR3dHQTViTmx2QzF2VE9BSkNpelRjWVowb2dJQjdtTmxaUTR2dGc4ZWdZVlFRUzQrZUtiTmRpRGNDYXNEQnpSTjVCRjlOK1dKVnVtSFBSVitCTWk4VC9tTWZxbDUxQzBiZWZkRVd3K3dybmt3QXkwRTR3bGhEeHdUaTBEVFdINHczRXZvWXovWkhSVjJCN3d6ZUkyd04rbnJZa1RQcjVROWlwWEYvektNaW5qL0lnTUJYV3hwdGladjczampvL0dDYVd5ZktRSzJjMEVUTDZ3Tklib251eFhEQUptTzNHa1JodEZ1ZHJpYWFrVko4NVkzOFNTWlJNZEF1RnpJVTN4dVhtK2VaMTRtYWowQnd5YUEvY3dPc3NxbUdFQlNMbjFnR2JlSG1oTkdVUU1CQ1ViS3k3aVUwUlZqTmNDU0FuZ0VhcmtzbWRYQUlWajNDblNqREpJL3hjeUJUR1F6TzZJOEI1MlIxZHk0YUdndUszZEFHa0JvL1dMVm9rZXFzczlzRHU0eFZ5QVBVR1crejhSK3NmUjFrc0VwbjNPdUFGQTB6NFYwanFtU2UrS0JFYWkvMG9WMVlGZkxCK2VEUFlNV3c2UUZ3UWQyakl3YmdOczM0RnFMSFlNSVJZVHZzOGRraitIUjE0S05OYzJkVDlDYkg4d285Qzk0Nk5XTS8rSXNzY25ySktCREx3TFhORjVvbm1lQmhJWkJuT3JKek9pUnpnTTZSaERrMzlpSmMwaG9FeDEzckhDOFdhYld2VytjQlRoN01pVFovRHJ4SVJIS3NEZENkb05ZOFJWSEtBRHo5cXpRUThlNUlBTlEvTytjbGo0QkdZQjhSSTQ4QVJUbmdyRW4zQnlGalJEYnJQaUZxK1VZQVdoQ1RabGRvd3d2OGNqTTJGNDNsMkMrK2I2SnQ4MWNYczluZllnb0EwWUlQZ0xzUU5wM2VmenRTVEJHMEhDYjZhSFdMSjV3dWtpN1JzKzhBYlNIVDRXRFpVVHBqU2NYZVlmcFhUNGNXQ3hnTnB1MWM0UVZFc0M1YTZ5ZHBSdjZnam93UG1xOGtuRUpOQURnNG5uQkIxT1FxZDBJbklEWUFzbS9xNThqTU5nMFBnakh3Tzg4cW5qalMrd0pVQjh3Q2c3WElKVlFIVURRT0xsMm5oMEhuYXpmbkh4YTdkWkUrS1hpWk1FY2p3b2MzdjZrS2tYNkNCQUxGaDFNc1dXdUFsVDk5b3ZwNEFiZklwUmcyMWdYNkh2bDBuTkpyWXNCSC94K21VZ3o1bnhvSG9nVkxHc1MzeXN3aGd4aGRTcUxGRTUwY2tzc0JZQkExK2ZpTS9PVFFDVElEUGpKZFhzWWlEMjl0YjFjVW9RYnd1WFBnY09ReTZBRmN5dG1nN2NudVI5V2g2eUx2Qkc4Q1JhYk1wSDlQV3dITzVkUUI1VDlGNUk2S21NZGt4Zy9DWnVZSGF2SkhzTjcwTFlZbzZ4bXNtdmZuYzA4WUtGcEhBVDRJTEVzRlIvVk52RVBzLzlraDZ3S09yT2hQelBXNFdGRGZXRHhlRG5zazhWTzdnWDZFd2FTWVdhK2NVbFI4WHR6U1dBcVhBNFhHY3Jld2QzazduRVE3N21RME85M2t0K3MvY1ZHSnBPa2tmODAxaGFWUWNTSXJpRU96SjVpeEN3OHpHTWNkYzdtQnZWU3ZORUxqOWlOQy9NcDJORURTOWtmWVFMVzBJRW1OSWVxSGw0VWpLVGJzeWJRdE4xNFdJdFlLMzhEcVRJYldHY2tKbVF6T0pjNmVucTRiVjFUelBMaURqUlg3TndFVFVvSk8wTGFjaG1JZkZuRmtxRkdrd090c3h6M1NvVVB2Z2pkY0FzVXlrbER3VEF3Tnk3VkUwK1dNSjZERytKc2d3MXpmNnNRdXNmTjlkK2Ztc0xqekd6S2ZsektRY0IvUXk5Z0o3RDNpZWEya3FZQWN1RlFBaHozeTZZb1AwOWNmMzBsM0RlTFQyN1l5Z3Qzdm9KT25ZMzloSTVVZ3A4Rnl1UVA2czc3d2lMeEI0SCtlVmpvZ28vaWIzdzFpSnVQQkxPSlYxaDI4SXY1V3lJN3NhaXVUckErQlJpeXZtYXhnV3lXV0liUVJnZ2h6bDVwNVZnUW1tWFVBc3NoaVZmUHBwb3RaeWp6M21iNVpHS3lnUVEvQWhNQVgwU2UvczV0VEVJSEVXY3JOV0dQT1cwMEgwSHJDOWZIdldZaURCYnZNWEQ3elZsdVM0OStjUllzOEpBV3YvNm1MWWg1L0l6bC8zNFkwT1Y1RUpkcmpVekdWcTJBeUlxUUxuRnFQNVVSNkJ6ZTMrTnBmQVU0Ky9XRFg5OW1PL2pCWmRWcU9uVUdlRW8za2Zld3ljU2pZS2tTenJKWTBZRGRBT2x3NUtWVCt4UGpuWnc2UVF1UTNPa0NRYUxSazlqbUFjTk0yWElsd2pZVXR2MmNTU1NEQXpIOHNXNGwrZG9Kbm52dUZzdDRUNlZKd3RlZ1RTVnNYcTJjWXk4TlJkd2ZGMi9RUWdkbWVBZ3VtTTM4UmVqSmhLVkhWd2w3KzlRcGlBYnprSXNZSU9oRU0vdGFFdW9HU01FOVZPc2VwN0xOZzQwSXJBWGhYbTRGa3JIcW5xeHREQno5QkI2aDlFSEM0QW5JVWoxOW9TVmpHd29DdkdpZXRkMFZydWpCN0NzMzBFL2VmRnNUZ1Q1Q1Q4WXhQWUx1VUdiYzRnVnlJK292L05iNlppd0paNE1ZV2N3NHhXYVZJandobitOd1pDZmlsMGpiUVhZbzk3cFlmZ2drNUFuVUp1S0JEb1ZZQUhzWWFncmVzSGwrRGl5VzVzY0JlRmh3U2FqVEczT0ZFOHdQMHZhdWE5MWNFaUlkY0s0cHZxYU1NWUxDQnNDWDJQM2pKQURMMTBYbUFNZ1JDRGNSZ3N1SGZTV0oyZ0l1TGd0N0lLZTNDSkNlMTN3anZqYlVDcDRhcWhMWnlqcFpKalllUU5NZXUwa0V6d3E0ZHpaMUxld0k0WlZiZ29SWVZRYlAzZENXNWYyZ1FSY1hrenlJQXdkeFYvUU0xTWxVVEFnblNuYlBrdkJzRER4Y3hJbHVMdWdHL2tDTmVKTGpyeUkvSUJwWnZWY2ptTTNnZ2t5VEk0VnpOdm15YmNDRnJLU3lJTmZSZDZnMUJGRXFUMHFZeDRDZG0zajF2Qnl1WkNHSmxIYXREd0dSY0ZIcmJLWlZYTkdqUWV5SnYxOGVGTTdpZ2ZYTEN5dVlnNTU4MkZ3UUZ2a0x1VFdCZzBJcGFYSi9jSXQ4dng2MGJqMHpHOU83U2RmcnVTWGphRTlNNyszcWNHVDlubnRDTEt6VllnOENieFB1VWFmbFkwMHJHcGlBRlJnRUJUZ2dhaTdBajVUQ1ZpWDI1Mlk5RFNYRTdJWnk1QmZoSjU0eEVtMkkxTkUxaDdFSGF3THdqQUlwK0Y3dkJ2NWFMamFQeFNkQWg2Y3ZyTUxqdVY4NnoyUnBSZXQ4ZWc4TURQYThDSENzQVJqU0lBNHhudFNoWlNQek10ZXdQbFFDV0RndGxVaXNNazZWd1pOUUxDK0J1UlBBOHBzOEl3Q05SM3JpMXVnOW8wSnllMnlkKzJYVm1qVTcwQ1BJUW1GaGtYZ3h3bTFhTE83SVBPVlJyRHU4RkRLNGdyQzA1Yjc4ZzZTMi9xTDE3MUlabm16NnRLcGtla3FIQ3NFaXNQYmFNaUNEN3hLVDhXb1kwSWhHR1NMK1l6VVJUSVJWZzR2dzI5ZkRqNkFzME5FR3UxK285S1A5UHp5WXkzeVFjMzE3d0tXZE5lUVRzb2RJSWlNUjEzRi9sQ29Xdks4eWRydk5hWUVHWFBDRzB6WlBYOTZBcDJZcjFtQm1XQnAweWxNbWdpWnVpc1FHS3daMytwMWpQbXdjcUlXQUZDQm40RFNTSzFIWlBJV25hUStoNFVQeVdVN1NNUC9rMFdnbGRPSHVPeGRVQjN0L2QwakF2RTQyQi9mUzRNRFpMeEQ0SmxweWU3S044V1lnazRpQW12M3dLSWdyOGR3Q0NmWWlXNTExRXpvZU5OcEY4SjRQU0pIUTBGNWt4S1BqQjg1akRBblJBdU41OWNKRFkxNVBnWEI5aE1zODVZSEVHZUJDMkxocWhmbUQrT3o3U3F3dmhKVDFqRStjMzcwOFd1ZTlFYWRWczRKaEdkQytVMWgxa3R5OUtPeDE5Q3RDTVZYRXBadGl5ZFkyQTRnbTF2c0E3Vm9hdC9rMjRlelR4aHZHM2l4WHdpOEpaTU55TzI0blhFUWYxTDVITCtZZmVWdDhJbkROQ09mUUJ1dVpWU2pkMCtpWndrOGQyd3hBeU1PMno0Z2ZIWkhiTUVoQ0N0ekhZZ0ZZVEZ2TjBtTkMxU0wyVmlVT3VMSUhqTnJpa3cxZlN3WmlZdDBIMENvd3VZSEFyUkd3WUJFQnNudnlsZWFNdVp6SGNsOVdlbHFJU3h5dHcwekhucm4vOEpaa2FZRkhJT003b3NqRFRIRDVaRVJZMGZNVkR2Mk5NSElBMllpTWgyMThZRDVzNjJSbldNbnp0Y0ozNEsyUTVHRFJIZXJvNXcyYXF2cHdFV0lGSENUOC9PRFAzNFpYRXd3ZVpEaTBMQ05GRTJ3N0FlZzNXRWFBQlBJSSsraVhCOUNLeVlOS1hOeVRTY2lKdVJURVp4andOWXZaaVpaRWJpQlpvMGsvbkNtejM1OTVTRlBYVnVBVFlxRURFTWdXOFE4enc1RC91QWlZNFpYNVZpZ1RkbW9SVDhBaXBiMmdLeTQ0WnVhS0NITUE2aXVmSDBiN1l2RU9ZZTlGejJHY2dNSE9saW53VGxDQTVkNFFjOU5YM2wwOStRVkRDUUR4YXJDb2hrNUE3dktHajNtS2x3L0hlT0Rsbms5K2ZncHk1ejBWM0hDOVlnVU11QldoTFZrakJCZ0dlSVFOVjlBRFVXUEppUTVIK014UTBVV2MvenduaFBkZ0hjWGNSUkVDaVRGcllYZ0VxUnVIUnZQaXhsY05uaktoQklnenNtSVFHSnd3YzVnc3ZIemhpTVAxZ0x2NFpaMzhCVGMzOS9aSTV5UkhhbHdXNkdaTUhPV3dNbmFER09KdGxmeVlKaDZJNTRscm5tOWtzMWMxSGNrN1gxNWlFYUhKM0w0VEYzNnhteXhreTNCN0FKV3dWNENRRE0rekJvOFFvRktLQ0NJUDhyOWR6Mms2b2loWk1vdFZnRkd2UlJuelFwNjQ3NW13bGphTW9pZ25QZHY0dXZLZExRSEtTdWNqVXJmMjB2cVNHeTNBbFFIakE1cGt6dVpOT0czMEhWK1BlamV1VDNUeXlKN3cwME1GbzJBY2pVMW0vL2tLQXB2M0JkUzlLU3RWTEpmMGlDQmYrU2xXVnVMVlpoQ3g1M21EcUFVL2dZZGJRVzdlZnB0T1dOWGFNNnYyVGY0cytTclVDbXFRaUlEemdwV1diWEVac1N5S0RwMlZHM3dHWVQ2WmpLOWY1ZFZkaFdOdHdjWk0wU0tvYm5odkRCNEF3cEZEdk41SC80R2VJK3pGU1U5MFhXZ2dUU3BIZUFraDVCdDA1aDFkb21xbEZ0d1VpRVAzWWFIcWpWUXYweUxGbnBVdmVvWnJ3aGh2KzFEQjhPd01zQzU3aXhEcTMydWxkaXQ0YkpGb0tURm15OFNJT1UyeWVPcGNMUnhKMW95cVdaRFZxa1pXNjMzTW9pcmRjT0JzMGNCandrT3JUNS90RG55RzlTb1FqWGhKYVYrMldlOENtRnMzdFhCYlYyZHhocFdQZUxGNVNuTVkxVkRIZHFOTXNhRjlKNlFKRWhlWGJOalJTYmhtT050VTdySjVzRHJpNC9Ra1pYbFloZmhBNVFIOXczd1ZvdlN6RlNGOEN2bHFRb2RYak1zNmxUWk9xNDh4MUNvL1VNNktHcVR3dWIvTmxYT0R5MmFnUkJodjVpM1IvamFOUUZiT3I1ZDJIVWpyMXNUMDkvRU0veFJYbmFRak1SRCsxUWpnWEhBTG51L0JzT1J0dUJEclY2eW16eWNmY3BkTC95REc0WlZKYmMvVkVDcDlPMjQyWlFGZzVJZGRzUjZNT0llRVlZa3c2Qml5cm9RdmhKTXJ1anl3eGdDMng2WkZhWlVzOWtWK2N1R2JXQkhiOXliUHVvcThXOGU3N1pSQkVjSkVWT29DQUpkMDNkOUo5QUtFSGx3UFAxVkZDS1MrWmdKaGFVSEx0M2o0c1cxdjJ3QlJvSkhZUDR1QnVYbSsvcXpMRTFsM2lrMEJ2RHBvMTB6TlFEUnY2eWNhUE5hVHdHTGhIZ1NZU01hL0NETm8yWHJWY1lYM2duZGREWjVQSU1TSVh1dmhlejVIMHVobnFIQ3N5end2SnZ3TjNyUGV3U0tmMjFSRVZrZmVrSDZDLzNvQXV3c3oyZ1ZDWVM4RWl3cnFZQUxaSlBPNHQxazJjQk0xaUh3SFlTMVg5elQxMjFCWTFtWS9Ia1N0RnllK2Jtemh0bHAydmVWV2I0YjJlVUx3SlF0UTlvc1VqQjllQ0dVS2NBQ2JIOWdRYzRhbklNbmNhSlNsWEF0MitMelFHbUV5V3ZFSGtQWU9WeUVTWTQ5Sk5meHBCekFXNVRCNmhMdkNVVjhFbkdrc3BHU0RSSnk0RDc5RkJKVTVVZUlzdHZtYkV1QWVqYjJ2cHVwTk1scVRYQzEzeHpxZ1U0UUZsdlFKMWRPU3VTL0xKSW5GbUVVbERJQVVjSHZUVzNWd3o3bjNXbGdza05naUQ2SWZFZXk5VHhVenFxdFkzeVl2aEFaY2lOK2Zia3dyZVRFbjhRRXdlSHN3bzNNYmdMY0ZtaG1pVGdSQXNZQm5BMTVrOUFGZlhHbndaVmxXYlVrWjhmdFU4eUs0Q1drS3FTZXRVM2VBSUlIUXNqQVQxUTJKOEtnakRmUk1oNTI3NTJ3eUNBalBQdFgwbGlUZU54b2RhZFYzdHRpaERvM05JdW0wakRLNVNuZUZKVnU4MnQ4eVRkZC9ubXI2dDVrbUlES25DK1BJcDRwKzNoN1lXYzVhMm8wL1AyaHV2L0hhai94Ly8zcjlKeS9FUUwrbXRBNjdib3MzUWR4NDloZXNjdU5tZXkvdUQ2V1BDbEQwZ1JJNXFxNEpaY0dNd2VrSEdxdlVvMVpQcVJwRVEraDNqMUh2dHFmczUwTkN3Snl6WjkrUXpXbDUvcFEwMitGUW9Sa1YvUE13YnMzWHVrRUxPT3A5aWh5TjE3Q1E1Rm51YThmV1pTbWVhRnR0QVNsVGtZWXJSUTgxS3NJaHZ4V3FBU0VBZzFCZEhnaWlrcERXdUdERFh3bGhmcnVuaS9oYjl5bFF0R1RXZzdueVUxYVIwS3daTmcwclRzMDJtdnNoVUJERlRPNWE4RSs0R3FqNXRPMjdhVmZmMmdvc3Q3SHBTNEsxUVo2QTV4eGJoOHBDUHN4L1ZHTFBUMFo1ZWtoeWpyYjVVSlFtU2ljL1Z3YWxyTHQ2ckZJREFQNWhQTmpVTC9PQm1tbEFmdFdBTkovOFZ3SHhwT3ZmQ0FoOGIySGY0QXVJWkdGRUJsRHVjenh1a3lBK3JFSjhna1NtVFVqUnhZNWk1eDU5MjdrUVpDV3RleWpYSUVVR3ptcllHelovZWZCK0UycUl3LzNlN0d1MEgrV3p5YUxlMTRaenhlR2gycHVoNXpnczRkM0RENXM3b2gxZ0ZqYTFJaUdDMHNMNHRnYklVc0lVSVZpSnV3ZHc3Y3kwemhEbW1LeGxKd3hvUmVqVkl4SU1UeS9raUlWOHZtTDhBazZnVndhRmRIK0laaERyNS9TWFhjdmFEc0RMaW9JNzlvRkhHWnRaSHl0eE5od0VqSUpDOHRiYlZ1TzFMSDM4aW9NS0NPTHBOYVYrM2VkMCtnNzRRclRPOUFVb3VXVVRHUGFDVEl0Tmk4ZUdxNEdIMktiY0ZQSG9ZZWhMa0xESkcxVmFMOHU4eHZzaG5UejVObWNhMzNkYVM1VE5pc3JncDgxTHJNT3cyQzE2VjRRTG5EZDUvdGVuRFJscFhqOFY1NmxteTdyWTdoMWdDY05PRUg0WC80UVVQZk93SmE4TTl2amFIT1JaU05WTzdaUE8vSGhkL0lkdHZLc25udUZXQVZiN3Y0TG50REpjWEJtdzl1aFZDUmM4cmJmWGdNQXk4ZVVNc0Z1cWtQTUZ0Vlh6QXJDc2Q3RTBJd1I3MUJJWHhNb2pRU2UveHR2aTR6REw1NjBRaUk1ck51MGh4Zzk5d0VhTnEyY0N1Y0s1bjQ2Qi9tcEFvMldQS203ZEtVNTc1bEZCSDRUL0ZWYzJGdTBwZWJ3Sm9xZVdGWnBEN0VldFFCclNZNDN4NmYrSW1DQ0tGcDV2VFkwbzVYa1h2TG9wcWdEenoycEtZak1xUzFVSDJNdVBoTHB2blB3b3Q5SHdvcG93RHVMYU9aMTRCU0MyRktLQmF5eGdEUzRNSDhNK0pXRlFvS2RCNXVCSFpaNXlTbUo4Wm1NOFhtTEZZTHhzT3BvanRQSGVmTWNRRGtMY0xnOUFjWHVtSW1TbzJjNVhTejJuYVlGbFVTTUJCYU9UUVdlcjBFR0swV1hucVgrYis5NW93enNFOWJrbEpETWFoOHhjNHliWFNnUmw3ZzNlYkRrYVpsVGE1dzVQdTA3Wk9LVDZkNXZ3WGFhTk1EM0NPWXJmUGpVK1BkU2Z2Rkh4WE1RU0dzbnB0bExIWE0yclhuNHRuRVI2b0dtZTZuRXhHdE9hWURTTnhWYnZ1b25YWU53Z1NBSXkxMk41VkxSYVB4TjFZR3hRTFN3cnZLYjRQUWMxdEkxNFRxZms3MkFHTG05REgyNkNxVmlZNXBuQ2xjL0Z3c3B2MDBlQk5VZmNOL2p6WStEeFhKTGJRbVRZOXhUUGVkZmNrR25yVHRHWllEeDB6MmtDbDZtZG5RNlBNTnRkVDRLbm1PRjVmNTFNL1NYRDg1M1dRZkg1QjUwUE5qc0w1UHBUZnVjSHRYL3lPei9ablpQYnNUVG5qK3pPN3h3T1FlZVAxSTdpRDZlVmV1SVVpeFY1YlpuL1VMakk3WjBscUY4TGxtRVppZE50WitZdHN3a1NTTVc3WndMRVBKSGhRdWg3QklBMnR3U0FuUXNtdzNNRnltMGtpV3pUR3NCR1BOM0ZNbDM3a2lyeExSTUk4YlRhUFcwY0Y1UUxYcVhZUnpCK3RwL2NNdEQ1M3RZNnZUYXZJcEpaUHhRb1FvWXJnQ2w3T3BXRzRpS0FyYTBDOGRkMFpVOTlpRjA0dDVvVXJ3aFdMdGhzQURZUUVvcWRMUTJaYzAvelJWdFRXcXphOE9BcFlMb1FkaFF1Sk5hZ2dneUdvNFNJaUo2akhXbUJVUFBVc3lUQlJDUWhaRUcxVjhSRDhmcmNUOCsvZlRMMWdzbWlZdkMzaytNaWltV1BkajBJRlZDdDlhMGIzMzhMZ3NQdXJXSFJIQ3JWRSsvYk9IQVRpcjhYY2R4TlRyS2lxSWFBWnhlNDlsZHFCcEc1ZUpqMU1uOUlyR3V2OVNQZGNvQTJyZkN5UldVb1hiNlJHNkxHUGxMUDgwYUI2VnREbGl3ditPYnRNUnErdk9SQ2FPRlRJem05Wlg2S3JNZGFvS0UyMUJHaFFyN1FyVVJpT0RoTEVrOXVHQ1FZZDdZUkZDVEJZZmtRQy9ROXM3TVNpQVY5OFZhNEdMYUVVV3picUV1OTJHSG9VN2NZSENIK0pxakVBcXFFWnB5WXo1QXMrMm53ZWpQYWIzREtRaUpZUnoweFB1VlVickZyWDdhZERTbldMVWZGTllqMnBkc2xBSnN3aHJNUkhtczBlY3lLL0xENVNTMzkycERubFhSRnQzOWhrOG1TSG1TTUtRTTdaSzFvYlRicDNnZEo4LzNIVjZ6NkJwMGhML2plSFo1b0RjRzhMM1ljaTl6Mzk0eTFJVDVyUTdGd3RpT0NXVXlUSkpXTCtDeU5lSDRUNG1DYlNEdDBlS2F2OFdhb0kvajNwMERLSnNqTVpTUTRoYjIrbUNwQXNDd3o2bTlWWjI1RFZKdldYWnNWcmVFemJNVVBMbkRaMTczNkdDWUlocXpOWG1ZWUwzelp5dExrb1lLdEZYcVNMYzNFQ0FESG1seHJrakMzdUxsSkZydXNaVTlMTEJrVnVvc0ZCN2pTeVc2Q2pmWnpkb2hWd2UvdEJPcjdIdGF3b3hJZUs3WkNMbVlQaU80WHEyTXUxS1JLOWppR1RjUENoMG1mYW9iWlRuWEwxNkVOeGZROS9Bb0RZWGZoTlhnMEcvVlk4ZGl1MC9xUzJUdjdwOUVxV0JDM1pYZFZ1QWZFeFdLdEdON3ErWkx1YTllYmRTK0liTWlrV2Nxa3BvV043T1VwYURTaFM0ejdxZmdiME5PRDJLUEdPM1FwNDJOM3BvWTkyZEZwQ2pRQ3NNbVpTOEQrd1B0L3VpVFp1MDYwWUM5WWVWdUg0UE8rMnRCRGxBUFdRN2Vub0VPM2hpWDdHNTVyZEZIMUUxYjdaUVVjM2dXdTRvZ2Y4Tlh0dFFuMkNPR25ZSWNqYTlnUlpQdXc5UlY3d0ZBa2xpZUt6OWNHZVJpaDNhdklhSFMwNGFoQ01oYmFOMzBlUzhjQlZUcDVMSHZPaUJnSUxXTEd3QnBxcS9DY2lZOXdrWjhXZjltWGg3TURiOHFMaEJvSFpqeFZ0RDBaQW5qYkJvMENaeHNBeG1FNUNsU0hCYnVmKy9Ub1JHTTRscDFodUJxTjgwRkt0dUVBRGRSKzhvK0xxSXFvUUZuY2xreDN4VjUyUnNyQ1B0aWpVNlpzVWU1VDltVWhaVFJ4aXluWEUreTM4cnoyMCtLRVcwTmoyVmpDWXZZOHN2MzVMOE5oV1orQ2E2WExHa2tMRGdQQjFKemViU1YwaFJ0dkR6R3NFYlR2UGllUEZrL040dW5SdCszSlVzc3h3eTQyKzBCR29jb3ZzWThvQkxDZHMvSWJ6bUVueU5MMnVFZVcwOGtoaFZVM0VmdHVBQVQvdGtldnl1RVF3ZDB5eHVIQkl2WVI3dHdxQk1DVCtmZ2tHM3JzNWcvOFB4RllIUDB3alZlWVN6THA5VVhBQXVqajkzRHlDNXJPajl3QVNGUDd3QzlpUk1JNHQrVlhIWE8zOE9KOTdqUVZpdkt3YytDRExUbE9BV00weTlIV2hTTEhKZ25wbnB0OU50MjJFdTdYSTJnLzJLSnAyeFVnSlhhcUNxU1BSN3AyT0Nkb0tWS2pnYVhodWV5R3g1a3hudWVyZzdqM3ZkK3BvdzBUVWJCNGp5U0JKT1NqWlorYkFMdk1QVUhvZ0tKNWl2UHg3NGJ3ZS9OeUhsaDdmaVo1Z0tyQTZZQXduVGFkYXBVMnY0VmZQeGp1UkpUQTMrMHBPdDIzN054cDRCcmo4aUlkSldFZFFuNklZZzRtd1I3NXRJRFdBNjdpK296Y0lOeEk3Q0pYSUFtMHN2QlVvVG04QUtPNlRsVVFIL0M2U3QzMHBiTmlHaXlEaFpYL2VsWmhKVEdMeDRJRTV4NndVNTVXNVJ2NVorbWFKeUtYZlRBQkxPdFdjTUdTMFozb1BrU2d4Uml3VGxRM0RERTYxYU1OOTZoNmhBUGdqMmRwUURZMVFkakNGWnVOWThsNDVrZ25HYUNESnJUY1J3VmFUNjRSNDhja3JTejc4MS9rM0dBenB2TFdDd0k5WlJ0UVpEemdCa0FncjdZWFk2Tld3VXZtTXpwRzFwK1QxUS9OQTdISFJvRGFSSkxHbmdXSDMvRkRhM3VKSHNSS0xUQkNuNU5kc3M4UDNxemJuZ3lMNElJVkFZWHdMc094cHdtZU9nMGMvYnYrakk1UVNHVEp6YkpNQTJxeU5BRHU5SjBnbDg1UWc1dXR1Z1cyZldhQUNGV3ZSd0g5VWhSOEFXRnpHci82R2dSZEM5bWlaMzJZZFNLOFlVRElVM1BGSnBXd1FidUJUbkV4ZnRRMlRtQmY5c09xT0Jya0NNTS9yYU9KUnJQR09KcEYxZyswM2VKZUdGU3h6aEl6OEt3ZXY2eEhrVGxLSlVsa1VmVm5KNGQ1M2drenQxN0hBenhFc0gyUXhWNWNhd3EzS05JZVI4bDRvQUpGQStnZk1MdStaNG9JNEdMSGJMUnAxcmlZUFZHNms0NXNpZitmY2JIeDQyWHpyNEhOUW1Uczhic2lVSm1zbCtINm9ZamRkUFNSY3BZZDN3TG5Qb1RjWmxKTG05My9aWVZycW56T3kxWGFZYmJqaGJERytzWW5nT3BKbm4rcml0ZjNUQk1yc0kzSERubUVZQnFuWlVpQ041RWhqN0tud0tCN2htcGVyS0F6Wmo3TFd1QWN4NUJlbTBtc2owQVdsUXBXMjJHVG1rSXlUWnRsVHBFMEROdUtYbXRQVTNOa0lXeWd5Vk4xbzNxYTA3SUNnS3RzWjU0T1FJRWtLRmJybUt0MGxrMHdqSjRwUWhGb3RUMitYaXpHK094YnJRdFVZRFhzclZtd2htRGJPOXUxZ2FWcWpTbmZYQkdHVXgzWTByRlI4Rzg1RU1WVlRSQ3RhU3J5ak9xeGhPTk1BYnFqZmNvZjlMM1pSYk9reVkxTGcvVEJxVzdMZng5bDF5bll1NjBPT3J0bTlTcWFuSHUxZHJWVm0yS1JYb252SVR0bWI2Y2ZGSmJTTnJHSXEzalhUNjZ3bnVFaHBwRHVkWUh3ZDdZQjlrVzl0cG9KTzl1NVFzUFhlTDZ1QklJOUlJb2VqTnloQU1zVUVPd2JGc0hXM3ZkSlplRWlQNk1WdUd0VWlBWE1kekluQW1kcDQ0ZGF4Ny9YUC95cjhvZnJmMXovQUg1YU9HUVpPM2JOeFJJZEg1dVhuUkFUUFVpOVpUWGJpbXJ6RGNzVGQvVGRBaEpxc2xFWE0vRmtEbmNoZGp2S3hzazVZWjVFMC8xYzUvVGFPc3p1U0pMUUdzUTdHeS81M0czbGFuRHdUYldIQWxjZml1OVJGcGJaaTUwdDNTaUJXQTVYc0VsYWlaUS9ITHlhRWljUUkvQk9TTWJWYjQ5Umt0VlFOc2VjbVQ1SVpNK0phbStZSnlMV1pOaUZnV0JpdTM0ZDQ3SmNuVEFTVGQzT0JWWERWenhDaHBKVmh3MHNQcU5uQzhuUElGRDkrSDVzbnJON0ZTVDJZb1pWT3RnenIzSll4eTBsZEJwQjk4RFpRVGhIdllQMUVWM0xkUk1aK0trZHlkbUVTTG1Lc3pYZ251Z3hqRG9IbEYrSGVFR1F1aE11Y0xzVnovVEQxMFdxVDdKUE1IdUF3R3VzNWp3ZGlTK1dqVXFyNHlIYUZQU0QxUkIyNFh5MUlna3NjSnEyWHp1OElKeVkrazAvMWNsLzBwNlJjZVE2MkFWTHp3Rit5N3lKY253aVc5QnRXUHlRRE9xK0FDRXl0VzM5MWpRTGpabUF2aXhpa2w5Tlc3WnNIMEN1VjhkL25lRlVMMWorVFJ1OTJOd1A3bzA5bVIwN2RiYjNaNHQyUkJTak00dlZaYytaUlFEbFJmek5jZG1SQmJXeGxmTzBRcldmd1hOSVdkNGd2dXhjRWpHKzNFVTlKSjFDMnV6cHRISktRaFNWQ00zaGQ2RE51S1hYWnVmQUFWc3VBQlRlM3g1T0lnbnNkbHF4bHh6Z1lGMUIxYldKeE9hVkliVTJBRjFsOE9sY20yVWFKWEo5ZGJQLzdIN0MwTHVwQzlNTlQ3Y3NoTldwOXM4OUZnNG9Lci9LZmdDb2hQaXJFWG1iTGQ0bXVyVmlHeWVkYVRvOVJiSlBmZndhN21IN0RQQU1TN0ZFWHJFMHpzZ1IxTk00TTFsZ3lyZWpSQ3A0UjZnd0dXSFZ4dlQ4dWhMV3FpMkg2QnRIM2ppSllscm5pWnNjb3BneXdZS1lNNi8zN3J6YWdRaE9hdUd1c1BlcThzOW13KzYxU2lVbzFRUWR0M3ZlbkdNaHlHS1U0WkVtaEFmayszSzRia3ZkTElqWjBhYks5NXlMejI3d05Zc0wrL1BZRGtGRE9QTzA4bFNnY2tmVlJZZDVSdXZkVUtTWGM0bFFsSXVBZzNpQU41eENjU3MrWCtnQVNoakw2bDRKS0FwZmY1VFh3WUtqS20zeTNGOWhOZVBGTzhPNzdHeDB5b1ZETk12SGhVQUE4UFhGeDhFbnAyT0F5bnRTOEN3aWEyZEZyeVB2SE5YRzMxQVQ0TkZXNGtEemw3eU9FRFhVaytha0F1NXo2aEU5TU5zcXlZMjZzeWkxdjkwalYvemI3aGRFMmszc1ArMnVOZG16MjI0ejVPS01LUUdQNmkwUUtrUTRPMEtTczhLU1V5ekRaK0hFTXpkRTFhcFMvZVZhZXptdkFDT0h3cnlaQzI0UUVIQUExMTJXNmVKZGtIQTdXZVA0R1hsa1NYeXc2cmJhQUV1WVF6c0wvazRKR1N0c3h6UWd2bXhQc0Z0NjJXQnUzUzUwVmNpcUd5cndnV2JOMlg2d2dkNHRjV0JYNEJiN0ptUURzRGR4OFN4c3MxNGRVL0N1TUZ1WW5LM2VqdmNzelpZdlFMTnpnNDdVTzNVaCtod3FFN2VEWjc5bmRxbWQvYkF2cStteEhKUVgvby9Mb3BvN24yRm5mSmxJczFqT1hMUElXdzUyTm0raDBwbGVsMVBnTEloK29ZSndBeFR4K0lnY0x3cDFPYXZGZ0dGeXhoUG1ZcFI0aTNYSmFhTmx4NWswWjRGWHlwYyttZXhhYVNkWHgzNVVzM1phcDZNeVc5V2hsbW5LZFVZSVd0RDdoTStJWVNQNDh0QWM1UUhQdG44bUJpZURmQjY2bm82TVd3NkpxRjNPbkgzc3hjMjREQjVwM1F5TVp6WUhYa0E5VXdJUjdaL3RGOXEybTU0bWFuK0NsbnEyT212bWxNNTBCd1FrU3dOTlJXNUhYam9FeGdoSlJMSlJIUm8vbGFRNExTUXhlcnBSN0pERWUrNkdmSHFKSzhFYVdPazNOM1I3S1o5OVJxZmt2cGpmeERiUTVOeThReit1RnUvdGRKZEtHRnpPN0pDa1RZZnVlWVJwMjhjMExYeWZZdHlLMk9HTnEvT01uSzRRUFQ2NHR6SGdzZ0VTSVpzd1l0VGdhNi81czdtWnluSTBTL1VkSFFzWXNCSFR1VFNkS0JSTXZ6d3FEWENVaU9JMHBHdEd1MFl0T0IyM2c4TEVIWWRSc01VT1FhbTh1L2xLTE96R2daRktFS0JvQ2drS21LRWhlcUhvY0ZrOGJMK1VmZ05MbTl0R01rZEx3UjZ4azk2emhjTmVSN2Z1MHg0NVp4amxKRHNCdTBSK3MyalgvMU5Mem9aaXoxZnpjaEp6OUFEanpPT0RIU0VEMGlNdnpXTTVHY0IyUVBndTI0Y202aGtiQ2VkSWVkbGxrMDgrdFNja3JYTzBWaE5CYlg5NzBVN0padjl6V284YXZKWE5CYUFDWDk3WFlpU3JkbzFWdHNWQWRYck5aK29BTGtKSWNtN0hlckl0N2NYWlFleE5pK3V6d1JBUEZtV3lsQTVjbDllWnNMQVNld0RmZ0prN2JUZkV0Vm4xT3Q1bytsSXl0dmRqVWYzS1lJQjE1UkNGYm5jTGhLZnAyVW9FaTVuU2l6Vmx0Nkp4L3dGZ0s5Qm5pOWo0TzdIS28rL0hVdlY2Y3EzQm9jcjJjeFMwUElqaTRCYXU2Sndxb0FHaXVkTzdtOHF6aHAwZGR3NGVETXhCWTNnOGtZK1kxcTNPTWp0bi9xZkhjMkZlUkROOTcvRElNVE1oMFBsNHRmYnJjZklJOHF6ZVZnRGNRUEhKODVnNUtJNERhZjloTWN2MSt3OThORzcyUmFVT1hCRFQ3eTlhaDh2YnJQZVlhSFBIQjVVelZUT1kzM1FqVUMvd3hNOUJBYWRlL3U0T2hTVnNPaEhyNlU2N08rZFcyQW9CMVNQSEl5U3l3d0N5cmpmL2lpMEo1bS9iQ1FSaW52R29lNnhwZXRLcWVaVFdaOHV2OUFYRkRsTkFISFkxaUQzczlwdUFDZmxNNVFYeDZ1WHM4ZWRNTVlDUERZSlJzZSsxbmxFM2RzMXVhRjZBa2lUbk5jQmliaWR4dmE3L0diTmlsc2Z4MSsxQ040VFRBV0RuVWJROWMvdkJYZ3hibzcwTkoxK3pTTzh3N1dMeGJIZXdYaWV1bnVvYVhCZi8xZnUzdllnT29iMm5rNHNjNmZYWnhJdzlnT2RGZUVNeERLQ3NPUmpxTTFMYi9QMFI5d2g2anI3emVMV2o4c3FwS3Q3Mm9pQ1duTGxjRllOZ1ZtZ2VURmhhdE02QXJoYndwK2JzUTJ1S0FJRFBDdnorMU12bzhqcUhwWG9WMXFJVUQvMXdOY2NkalhiS3kyRU9DWVd4UGZNbUppQXJwc1dObnZUZlo3ejNHeTZvMkQraFVScEswTDlxeWhjelE3NkowS3poR1c3V1hZb0pPMzN4NXN1RmN3VFY0L2dqTzJtS1F5VDNHVm50L0RuSXZQVXpVdVpodmFQZE9aSy9nYmRPcS84UVJRNXlRV1VUbDkya1plOEVhMm5DRFM5OEFYTEgyRVhWcFMxMDRUUXZUUk9iTUNNSCtVNUZwM2w0cTJhdXR3SEpBV3RJRHJSR0ZoYWJSQWg2emxvdEhsdHVod0U0d29hVmN6ajI3enFWdzhYQkRsUHJCV0JEZEExRmFQU1F5ZnFRR1J5TUxRNVh1TjFZRGpFdWpvU2RpZGR0MXBQZFc2WnhQNURXNTNhWTVyNmNFMXljaCtjMFJNelowNXB3TDJBU29zL2xwRE12ZFlHZjZSeVI4Z2M0K1RJTnptZG1TN2tKN2M5anliQ2VhSGNySzJxZ3Nya1BpY2oyZU52OEJKb0JCd25tOWp3dWNKWm82ZEdSSGl3Z2xNVXN1SThGV1phbmVJNTYwcnVaYnpnMUJEcTBDclJ0V3Bqd09wak4vQzRYSGR3U0lPV3hOR1E2NDhHcFYrdUtFRElmcllHMlFwQk9PeDJtSlR2TlVZTFd1Nk8zeStlUGNNQ2l1TDJkK0NBa0wraUNyVU1FREpoLytkZ2tEeENjelNCYjNQbFJ2RnNEQVgwTzlaU2lPc242N2JjbnF0bnhWQjJ1UFpKam0wR2JaWTN4aGRzL3MyUWtxN01XSWNUM0dlTmJZY2g1Yi9tUE8yVzFsbWVQVmc3ZERoTUowMkViYzhwNklSYmx1VHcyaTA3QTR6NHJmTlJCamtHVkg1MHpiOVlnclE3dk1WVU10MEpFSjhoRjZpQ2I5U0tJVFdoYlNlbWFMcDFIZHBBS3p6aXFoK2pCSTh4enlieE5VZzQ3VE0yVGRXeEVQaHlNdmc3WmNkWm5YSkM5aXdYTUdYNzBkc2Z0b1Q2Uk11aGFoN281RStBSTR0Y3lXQmFEbjVtSlBLVjFEbnE1WHlzRWlyMEZuU3VLWjc0SFJMUFlyVTBnOXNoWGQrTzMrNHlDdzdJa0p3Y2Y0MkVxMHRMMFBURS9iT0hCMmVaK3kzVnNidU8waHpIeDRhM1pydXhnT0V6YlRtM3I1bStWZGJLczMrSWw1elRDVkk3c2FNN05ubm5ad2ZKNUVqUk85aUtBUXdUWkRXS3hXbDkzd3VGZy80YWQ1Y0ZheERPNDdNT09paFZ3enNnOFIrL3pxaTNyanpiTmdkWFJtbVJFYVkybjZQdUZTamduU2ZZUXpvbU9mZVFZQktMTXJ2a3p3YzdPOFp3dngrNmY0ZllQQkVuY2VDVkt6NmxXVGFZcm0yMnBjVFJMRWRBOTJxdjFNYzVVdUNIYTIvNzJCUnNCTEIxMkFLNklIcFBMeHJQZjVCeGNCMGJaZUJmdEZMR1V6RWNCNUZkZXRVMzJFQmZMM1J4ZmlicTZBUElVcmI2MDJUNmZLZEtRdkFBdlk0M3Q1cTAyeWNWNVlPcWdYUHVzRERXcjlWcU44Slg5Ni9raTJJVFZVRDdVWVZvWG9QVG5zajMvYnR5Q2pjWWorUnFjeXpxTnh5NGJlZVhqbU1uYlUyV2c0eHFLci9zZFVYMktRSzAycnNleXA3eDNFSitSQ0M5ZlFLdmw1QitSZkczSG5kc1JsQWEzUXdBSW1WMUxKdmVlNHVobFFrUkc3N3dKS1pmc0NLM3pPUWZVWnlxbXd6QnRWMHFFTkxZV3VGeW1kcXFqVnNEc3dqM3NFdXd0Tmxub3RDS3ovVTZmSFVzbURPZGVHb2Z6czNlZDVzNm5kYXI3REdRTVcwbGVpTFErZ2NOUjJGeG9IUjBBZStDSVFMNkhTY1Y0RHgrWUUyWmVrYWtZRnJJS3NpY0xiQVpnRzdUdFJMN09JNEdzQkhwUTBRNmk5akVSblVoNFNtbE45Y1ZmcWZ4N1F1ZVFEaTk0VlFuRURvb01UdFhhbFNEREd0blBDb0lRMFZsc0E3V0gvMjg5WTV3czRmbHI2SFlpYzJ0U0FLRHdUSHpHQTlBczF5bnV0Q29wK2N3SVQvQlJiYXVlMlJaT0luSjhxVnhQbW50T1dKeEpqaUpiQlZWeGp1Q1FacWlDeTdaclowK1lQWWxPUkF5RVlQU2lGTHQxL2dWY3h6bDNzVFhrT1pPNG5NMW9sL1FaTHNSclBNKy93blF1SElEQ0lqcHVibHVKdno1QnpKNzZoQjYzTk5LWlhPOHI2eHZkWTRKa2Q1QkpxK0swYnJ0OHRtTS9Tbldvc01PRE1ERTA0SEppM0YyRHg0WFA4ckV2NXU4ZHd1TlFMdE1QM1Q2K25LeGJDY04raGl2RGIvT1ppZXVBR1FkT1pQMklHOTVvMWZjOHBNcVNwdFBicmZKVGdBWWZLR052a3ZPUnQwOGJtUmYyMFcxdHNMVHlTK0VwNDNhYzRuTzYvWjFJdnUwd1I3WEU2dXhpL05tU2FmNis3UUo4N0dpUzVUaXVHSmJrZFVySGlwTzJUanNoUHR1enRVMVdQRVZreG1zamtHY3NIdGE0eks5anBHQXhYRGtoWlY5V2hMUFFZMGhDUWZaWW5DOXZuc2xHRDBlblRvOE5MU3MyZUxDZ3RpRUxGa1FQTUJxL1FrM0VkS0VTQjl4M09HRy9PcXpiYytVN08vUU1FbXA5b3pNNVlYVk83UWtlM1Rrc0lVNGZJd005WklOWm16SHFaUmRldDM0WldVVTBIUVNheDBJQUVCMU9qSGtSOGZGQzNPWG4rVlV6TmJPd1RuTTJnZVRJN0dYZG5OUFBWdFdqOSsxSjhubUVUc3NlMVRUc09ZbWlxWnpKenQxQ1VqYkVrbGxJZ2hKcm5tZGJGUWRMWGVNOG1DRytDQ3M3M1ZzOFBVNTludEgwSGl3RmorM251VDByTjYyRWhxY2lxT2Vwc2JGWFFXUkNpd3l1M2NkVkNJUGd6SFNLbDlVVmhBLzdqWHlhRlZ4M255Rnh6dWNiRXVGRGFnZUNFZlJweHJLTEdNY0cxZWM4eG9WRkM1Wk1ycy8yVWdMSFo4TmRQc09hc3NZL0hPQVNwSnk5clFjZGhjL3NjeGg1V1JUOUFsa2VqQklDMkZySHJmTFNSY0NQOHVVV3dta25URTZPVjJEWTRGT3JKZzZkcmFkSDhDdlhxeGMvbmd3QXpNMm5YWlNOcEd2eWhHYUNncUJLV0o0d2xCTVVYck1hUGxmRE05MDVMYm5rWFV1NUhCeTFidDRob0ltY1EvUVltanhySDVBZGJzV1p5Q1U1QnM0SGpIbVVPOC9NaG16cnVNaGt3K0FMaHdUbXBKcnJnMVRwSDE4MVRMTnlNU0FmSVlUck5uK0VKWVIwQ29vOXdmS3dhNXhuUnRnd05DcVJGbnJpMEhtSFBVcmhjdjJpVTFvY2cyL2VIdk5uKzNCY1p6S2tkVW94WGdMa1poY01sT3E0TTB6NzRrMVpNMGNxUDdhR212WlhnSG00cEVOeDAzMDVUZUZrK2U0enN2UjliU2diVS9WT2pFZHNGd3d5M3phMm4yZVpmT1laNEp1dzVtQnZHMDd4Uk1mN1EyeFlSQ2RlV3B3Umc4Zmp6dUQwRVNMVG04TWpyd290ZEVobFErWkRmMTVQVTZFaHpZbmgzMm1FZGNLTUZkM2JpZ1VucDhYNzFORi90amxMTTFnT3BDalVhSnVIUkhSL1owNDNHR0MzeUxmOW44blFuUkVNSGk2Zkt2Nzl5VUJBdE1VRjMxYTRxYnFMYklTMVU3dHZITVhpVitkT090TEQ2aE5ZS2lFL3p1REpPRCtOTWpaN1BzOVAxOC9JSDJ3RXNMK2NZZ1NYeHRpakU4RXNOVHd0enE4QS9kMjJ4ei8yQ0hUMnhPWVdKQ09PQzJFR1grNC9xc2FKL1E3YlFRQlpvWWNHdWxXdTFlb3ZyTkU1cnRzcFI1OFliTVVMN0tBNm8vaDk2NWxydVRCTTFOWUdOODhBbkR0Z0E4RmhtUWpONlNEb0JlWkRCTE9QQmJEakhFTHdWZDVjZlltT3RwVUNUUUkzMm1kSTBoZlNaVzF2UDQvVklhcER4bDZrOW52TEFCT29LZkt1TTdOQ1BMQ2p2eUsxUk9xZWJjOTQ3QWhTdDkvWHVPMlVLSStqTW53Q0RqUXUyKzRFUEtsV05OdG4ydkl5dkVrdmRxVEVwUTROanQwN3ovMGc0TmpDTUIyK0RuVERtQkQwVHNmM0lWQnpnTnZRNi9ZemhsTmFycnBTbFVHZnUrZkZ6UUhGODhVZzQ4ZXRvV0E4Z0Ivd016dk1hem5WL0E3d3RxcnE3czZVZW4xMmhGMVF2TmR0SVZwWUJNa0owNnNGVE1SUkw3TzRsaFUyczhDQjJIWUdhRXF3VC9YZmFZSHljTWl4K1gzNGtNSk1KQjBPbkxjNDByWnJLZmdIclhGV2c2ak4rL3U0SE1UNjRjL2JLR2VXRFFKamdZeGo3NTA2aGlna0RGbkZBNEttZVZ0NURGZThRQllZOUxkNklNNWo4SGJUelBFTjA2MGQ4d1VvUFhFa2ZpMFBQUWlrUVA3eTJRanMybXpCL0ZWS2xudllIeDU4T0E5czNQeVNUVWZ1UjhGMUxBODNDVmk0TXdkTDMyOXdZcFd4M2o2K24vS29hdU1wck5idXNuNmU4VE1PaFhYV1BRcjljUWQ5TEJEczBVa25acG50MDRBOXFLelk0b25hOGF6VHFkZDVYczR3N2FhelFJd2tGQ0RwQUJBZ3dybWNyK2Mwc3BYWnpJdG11QnNSb0RvVUdnMmY1RGFuWWRFNUVkRklMbXFkZ3ZCbWR0RHhkTU5YMVdvTnZROXVFUWliZGFESlBEWHJMVUxiL0RESGVTYmFldzFqd3VOa2Z2aml5YXRidEdkQnVQWER5Tkg3VjVuYzU4RCs0UFMxQndMNUZvamg2WkU1VTdReHlONWZINVBuVThoWVRaOFFVY3lyQnlLb1RkWUJIKzRQd1luSTVxTWVzek95YlNhMU5zcHNNU0NUbk1kK2ZVS3lVMzU4SXBVUEV3aU9rcldiL05UaFkxQ0ZOVmJrMkZQc09CM0VySlZxYi9JNUtwYVB5S3pMTloxQWMwb2RvNDl1eUVGUXhxOFFDZmVaeER6RVRaOVQxcVd6RG5UY0hxQzlmRnIwak0wbjZPd0ZyUWxPRFN2MmZTVnJWc3JwaE1WSlVOZG55Q0NZMElGTUk5NlEySnc4M2o3UGw0eU9XSzhSZWZMQklaL3d0WHhTSGphVW0rb1o3N1FySldQeFhFNXhVQ3dLMUFlc2JLT1NUZkdPZlBtNlJQbk1nY1Y2ek5VU3d5MnNIaVhhTzB2NFNJTVhPZVFTTkR4SjB0UDRmYWJhcWZGaC9zdGFKQUlDdi9ZNGJ6dDlWeFlwSkZVTzBYWXVUenE1L25rb3UvSEExT3hKTEh2MnZKMjBCN05wNXJQR012QnhYeXhGZ3ZvdER3NlhCK2pGYnMrNStsaU8zTGZRR2VkSXArcmVzckc1N3VqYzNZM2RPc1lmWSsvZXZvTzE3OHZCRW5leUJBTWk1RUFSOWJRZEx1TzBjeW05enpSVnJNc0RUc05nUm01NkcvYlFtQ1k3UVlQRnZzRVczcHdMSkZaOVRrYVdJamh6eEVmdlFXS2NBdS80Y1hqVk5nZnBXU0ZyWFdkQnF2dUFoNG9kWHdnNmZvWFA1UHF3Ryt4b0JuejZ0SVJidE04aU9hU3BPZmZVc2JtT2tuak91SXpwdWZBY3lyZnc1c3NScnl5SkZQUFhzOU13eUdrVHVNODZlVEUrWU5iNXo0NHI4ZnpFZG9UUHlBdjRQVTVYbVYxMjRPZ0NxM2R1TUxuSWJDdG8rOGdGQUZtazFEcXpvM3pvbk95TEJlUm1wYU1lUmNGSnpUNlpQdnVlaTQxblM1N1hHdTNndVkvVFdRQlRLSGVGVjY5dFRaa0greW9taTJ6T2M5dWVIY2JuUXgvMEZ4K08xYS8zVENpMTFNaE9ZR0lIckxIN2JDZXJzdGxESjhkVkoraDZ6T2ZEUFJ3bGtwMDVXbndLVFBJdVRkMWNJN3BYenpQeVQ1bGVObHc2M2dKRzlxQUNsSENQTGZ0UWlzOENoalBQenc0NTYxRWNWcGxmUi9aZTJJbFBuWU9heEF3bjgzZ1pjSWdvQy9UNnlWcURiUFk4bktkZHpXb3Yrc05LQjRQUjgvajRGeTVzK3JBN2EzRjhvcFoxbXltY1pGeDAzTnVwdC9ZeGRQMHRVSDY4OVIxbldwV0hOdXdLTXVXUjBRTUhNNjdydTAvNUtmdnpoVlZPVnQvU041RFVKOFE1VU1hSFBWaHFOTXlVbU9xTHhCK1dtWS8zc1ljSWU3YTJYWTZYZGlpaWJXNDQ2ODlNWkd3YXh2dTVKeU9jeHpqc2JmL1RZMTdmTWp1YkN5Q2J6bW00bXdlYjR6cVJPL2xZWWVodzhyR1B5OVF3Nkg2eXNkc0gxK0syNTdBMjJoWmpoMlV4a3hOOWhBOE1FWmVFK0RwcmJOa3NrYU1QOCswK29jN1JURWZ3TGl2R2lJUmVDbmJoOFlIc3Zwc3ljSnc2RUlzZjVWUFNjNWxXVUxmNllMdm5IR0RZZUswY1JKN0FUeDdpQmN5TDNmUkpJdzQveFBNOUtYMGo3bHJzdXpsbmxsZER5dmlJaGVjMkxZMjVmUEZNQncvTFRyNWdmWVJUaHdnMnhBZTIydGtFNk96aFUrSFdjdjY0bytTMG8yMWZvTW1qZTV4SGU1YndGSityTVFGbHgxaDlCSE1mK3VSakhHQlIrZGVvcWZ2MHo1aVlQWDRNSGprU3gvTnFXR1VqMkcySEREcmdLeE5wWVhIZFpwWGlRNWtMdU9DY3NtYndSUUlhWHl5ejhEUGZlb204NlZjL0k0cnF0YXdmTmVxMFVqMkEzYkk0eDBjMzJibnNRMTdzUUQxUHViS3BHTnN3N3p6MlJiU1lSaFdIbnBxdDRyY3RteVo4RW9BbXhCYjVacnFia0Izbk14NWJhWHdpeE9jakhoM0RpVHBzRnVnQ2xzMnVNcXR3eTdiU0JEbjNzRGg4RWdCUHdQaFRUeVBCNVBuZG5WN0ZFdnYvZVo4eGg3Tjk3Q0tNU0NHZkFGc0pSaDZiblRHcll6cTVQWHVzV1oyQ0dJZlBkNElGL3IzaGtkVzR0a2Q0UG43cmtZR2JxSExlRU84QzZ6QllFMm5FVFpPZ1RqcVJRVHNJQ1hlSzJlZWNkc2M2eExhdVUxV3JCWml0T2dQYmEyMU9GL1NRenZHM1ZreGd1WHRHQjVXZHB5Q2RWdjd1V0NZVFV5THNlQzRIV0ZydFlNdEtkQW9RaXNRSjYrTnpOQ3ZZOFp5Ukt3NDh4UUNoYThnY09LTlpWQ3VLZ2s4cGZYekNRRlhLcnZBNUU5OE8yZXpqQjZyOXZpamY1VE4vRytLMU9QeTZPOG9TVW5JN0dyOURlN0Y4SStEc25tV2o5VDJmeHlpTEhJb0ZnSSs2OEo1NzRTeE8zYTdMNThQNGJKMEEvcjNxcFNSQi9FenhlUnFSZlFJVHhoaUFWcGpGbUQ3Y2JKdTI5Umpma3Ywelh1MDdCeCtPNXhDK2ZXNVdQdW1vZWNvWUVWOEFjcnYyUExOTWtHZndSVlpLVU1TSnN5VWlIakhHMTltSHFUdSszeDZUSHM2elNhQmV3SWZEK29vUGRBNzJISCtWdXh6V0o5bXBCdXQzakh5MnJRekYzQ3JvYW1JZm1MdWRNTUNOUWRSc3IvQTVqNXMzdzJCWnZldk1BU2svbGNTT0xEelBKNFdPTCtOR3NSbHlxRHpmWGoyMUR6NDJPUHRvaWNma2NiU21mSjJ6MjR1bEhvN0U1aXFRaWhha1R4K1RHcERlTXoxQzJVZjR6QjMxNWZOVUxQVzUyK05qcVo5NysxeW5ZQkhVNHlOVG5UUnpwamVpYzMwR2VmbDV4dGdwSC9MSkFzUVk0N3dkYVdDVkE0SldjVFRwTU4zdHdUVC9zbXU3VjgrKytDN3JBRGtFOXg3SENWaHc4bnBnN0lPcEhYWG84eHA5cU9PcC92Rmh5TDRZazM3VTA5RkJremJIM2FnREJ4dXdXdDI0T2thMU5XQWxqMElSRkQ2emFaWUdlWHJpT2NDM1dKL2xyY3VXdSs4ODdheWZydjdoZ2FYajhweStWeUptZDVxSEljMldyampNd0dNZ0tCZlUyTm84eStVcjB2aStjVnVqOCtWNGcyMEJrMCtzdzRZOWh1WENpVUdPVFhmcUdwVFpKeUY1K2o1Zm43c21mOXYyNHpxeC93VDR1dXBWUEhJZ05IZ1c1SUZ1UDdNOXZvUkxmZFZIRDhHSUFmZnNBY1I5R3ZlVEQwQWJCZG1IQTN5UGVlRVhMZEtHbTRyN29aN1BYRWY4QkNKdm5ScXY5eG1OVnQxR0h3NTlocDFqSDhSdEsxVXNpMkZsZllidERENnB3bno3emhIRWM1enpycWRRREJhbWhTenA1NW56WmFzWnZvRTVMZ25rNFpUSnMxdmxmRW5UY1h6ejFKZEVINXhta2lEeUJxOUQ4ckZqYkljRmwvTE94ZldiZzdRbXloSFdEd1NCejc0L2JxZjduR09zNnZVMHdRZk5BUm5Pckx0dDVhaHE2L2M4eFdQZU9UbmNzMFdUZkZZcjNSNHBwek9nVHp6QlJ5NnJuQUNFODh5MEp3MldNcW1uaStOOWJhYXhlOENHZm9tQ3d3THMvZmc4ZXpZVlBCeGtyaXRhZ1dDVGdnY3pQVHZFMzRkdUpwK2ltQjJ3ZFNyMVgydlpBRUZqNkRlQXpXS2F4SWR3UHpBM3Uza2lvdU02RDFKS1g1cWVmTXRLdWRKbGhwdG8ySDFNd1p1ZHR3WEVxdWVjOHd1YXNXT0FyR08rNjdRamkrVytQaDkvKzRxVEZpVzBEaUI2U05LRzAvaHR6MFc0d3BpMlJsODN1NUVTOGdQZHlmWjRQb2lSR2J2aVpibWxOWWFXZkZvbGlMQllwalNmZDNZRjRPdUVGTHVYMXZESnUydlk4dTJENnQvMlpXUUlkdTVVbTN3VkM5VzZjK1J0OGJQWkdtZGp5WjNZeEJyYk1YdGI3dm42Q0hFY3cvUDU2cEFWYktsWk9rQzQ1SXJTOVZrTWRkdVVaOE5Fc04za3RrTjN3YmJsN0dCcFF3QzJuZzArbm9vNDhqaWFyOGRqN0xVQVp2OFBQUGZ2RWE2TzBVNEFBQUdEYVVORFVFbERReUJ3Y205bWFXeGxBQUI0bkgyUlBVakRRQnpGWDFPbG9oVUZPNGc0WktoT0ZrUkZITFVLUmFnUWFvVldIVXd1L1lJbURVbUtpNlBnV25Ed1k3SHE0T0tzcTRPcklBaCtnRGc1T2ltNlNJbi9Td290WWp3NDdzZTdlNCs3ZDRCUUx6UE42aGdITk4wMlU0bTRtTW11aXFGWGhDQ2dIejBJeU13eTVpUXBDZC94ZFk4QVgrOWlQTXYvM0oralY4MVpEQWlJeExQTU1HM2lEZUxwVGR2Z3ZFOGNZVVZaSlQ0bkhqUHBnc1NQWEZjOGZ1TmNjRm5nbVJFem5ab25qaENMaFRaVzJwZ1ZUWTE0aWppcWFqcmxDeG1QVmM1Ym5MVnlsVFh2eVY4WXp1a3J5MXluT1l3RUZyRUVDU0lVVkZGQ0dUWml0T3FrV0VqUmZ0ekhQK1Q2SlhJcDVDcUJrV01CRldpUVhULzRIL3p1MXNwUFRuaEo0VGpRK2VJNEh5TkFhQmRvMUJ6bis5aHhHaWRBOEJtNDBsditTaDJZK1NTOTF0S2lSMERmTm5CeDNkS1VQZUJ5QnhoOE1tUlRkcVVnVFNHZkI5N1A2SnV5d01BdDBMM205ZGJjeCtrRGtLYXVramZBd1NFd1dxRHNkWjkzZDdYMzl1K1pabjgveHJ0eVl2RFJmRzhBQUFBR1lrdEhSQUQvQVA4QS82QzlwNU1BQUFBSmNFaFpjd0FBQ3hNQUFBc1RBUUNhbkJnQUFBQUhkRWxOUlFma0J3SVJFZytzaDBPcUFBQWdBRWxFUVZSNDJ1eGRkM2dVMWQ1K3oyekxwdmVFa0lSaUNDMFFhZ2hkT3FHSU5CRkVVY0VHSW9JRnBQaGh1VjdBY20zWDNwQXJLZ29pSUNBaXZZbDBFa3BDU085bGU1dlptZlA5c1R2RDdHWkRVVVRVL1QzUFBKdmR6Y3llT1hQbW5mZlhDYVVVZnZudFlyUFpVRjVlanVycWF0VFcxa0tuMDBHdjE4TmtNc0ZzTnNOaXNjQm1zOEZtczhIaGNNRGhjSUJsV2JBc0M0N2p3SEVjbkU2bnRQRThMNzN5UEE5QkVPUi9FMEVRSU44b3BlSXJvWlJDM0FBUTcxY0FvSlFTOTlDbFY2L1BTRjVlWGx4VVZGUVRqVVlUcDFBbzRoaUdpV0VZSm9vUUVna2dBa0FvSVNRVVFCQ0FRQUJhQUdyM3BnREF1SThuQU9BQnNPN05Cc0FLd0VJcE5RSXdVa3IxbE5KNlNta2R6L08xSE1kVjJlMzI2b3FLaW9yMDlQUnE5M0dvYkd2d25oRGkvWjM0R1FCUVFraURWOWxHR1lZQklRUU13MEFRQktqVmFqQU1BNFpocUVLaGdFS2hBTU13RVA5V0twWFNxN2lwVkNxb1ZDcW8xV3FvMVdwb05CcG9OQnBvdFZwb3RWb0VCUVVoT0RnWUlTRWhDQThQUjBSRUJLS2pveEViRzR1RWhBUm90VnIvelhRZGhmaUI3YmNKeTdJb0x5OUhaV1VsYW10clVWOWZENzFlRDZQUktBR2ExV3FGM1c2SDNXNi9JcURKd1V5K0NZSkFSSUR6QWpNUElCUEJTUTVTM29BbGYxOWRYWjBhSEJ5Y29sUXFiMkVZcGlVaHBEa2hwQm1BWmdBQ2JwSnB0Z01vcHBRV0NZSlF5UE44QWN1eUYzVTZYWDZ6WnMwdWVBRWN2UXpnTlFCQUVmZ0lJUjVBUnltbFNxVlNCRFlKME9RZ0o5L2s0TllZd0FVRUJDQWdJQUNCZ1lFU3dJV0doaUk4UEJ5UmtaR0lqbzVHZkh3OEVoSVNvRmFyL1RlWEg5aitIQ2twS1VGbFpTVnFhbXBRVjFjSG5VNEhvOUVJazhra0Fack5acnNzb0hFY0o3RXpiMUR6QldZaUt4T0JUYngyUG9ETTQzMWVYbDVzUWtKQ0I1VksxVUdoVUxRbmhMUUgwQmFBNXE5OERYaWVkNVNXbHA1TlNrbzY0M1E2ejloc3RwemMzTnljSGoxNjFMcVpvaHpVQkRkVDgyQjIza0FuQXBzSWFDS2J1eExJaWFDbVVDaWdVcWt1QzNCYXJWWUN1SkNRRUlTR2hpSWlJZ0pSVVZHSWlZbEJmSHc4a3BLUy9EZVpIOWh1bkZSVlZUVlFPdzBHZzZSMnlnSE5icmMzQUxRcnNEUWlxcDFlZ0VZYVlXVU5HTm5FaVJNVkgzMzBVZmVBZ0lCdUNvV2lLeUdrQzREVXYrTzE0SGtlcGFXbGFOYXNtZmRYZVlJZ0hPTTQ3cmpSYUR4Mnh4MTNITnU5ZTdjZ0F6c0o5QWdoZ2plamN3TmJBemJITUF6MUFYQlFLQlQwU3V4TkRuQWlleE1CVGxSUHc4TENHcWluY1hGeC9wdk9EMngvbkJnTUJwU1ZsVWtzelpmYTZjdU94bkVjV0phVkdKb1BPeHFSMjlGOE1EUGl3MTRtc2pMeXhCTlBLSll1WGRwSG85SDBaQmltRnlHa0o0RGdmOEkxdVF5d2VZdVpVbnJJNlhRZU1wbE1oMmZPbkhsb3pabzFUaDlBSjRqQTVnWTA2c011UjcyWm5KZjlqWHJiMzBRR3AxYXJKWUJyelA0bVYwOUY5dGEwYVZPRWhZWDViMEkvc0YwLzRUZ09KU1VsSGl4TnI5ZExMTzFxN0dpK25BTWlvSG14TTBuTmxERXl5SUdNVXNyVTE5ZTNDdzRPdmxXaFVQUWpoUFFIOEk5YzlkY0FiQTJlVTRJZzdPVTRibDlWVmRXKzVzMmJuM09EV3dOV0oyZDBJbnVUL3kwNkdPUWdKd0pjWTg2Rks5bmZSUFlXSGg3dXdkNlNrcEtnVXFuOE42VWYySDZmVkZaV29yUzB0SUZ6UUs1MmlxQW1zalNSb1YwdG9QRThMNm1aZ2lBMENtWldxM1dBV3EwZXpERE1ZQUFkL0ZmbmR3R2J0MlE3bmM0ZFJxTnhWM1IwOUQ2NHZMaUNOOWcxQm5JTXcwanFxa0tob0ZjTGNDS0RFOW1iQ0c1eTlkVGJ1WkNZbUlqNCtIai94ZmNEMjdXTHhXSkJjWEV4eXN2TFVWVlY1ZE01Y0tYd0RTKzFrM2c1QnVUc2pIZ3hOQW5NYkRaYmxscXR6aUtFWkFGbzZyOHlOMFRLZUo3LzBXUXliWStNak55T1MrRXFQa0ZPcHE1NnFLb2lpL1B5b05JcnNUZHY5ZFRidVJBWEY0ZUVoQVFrSnljaktDaklmN1g4d0haMVVsSlNJckUwdVMzTmwzUEEyNWJtZzZWZENkQ0l0ODNNWXJFTTFHZzB0eEZDUnZuQjdLWUF1UzE2dlg1TFRFeU15T1E4UU02YnhjbEFybEdBVXlxVmpRS2NuTDE1T3hlOGJXK0ppWWwrNzZrZjJDNHZKcE1KUlVWRktDc3I4MkJwQm9QQkl5YnRLb05zaWFoNml1cm1aZGdabzlQcDBvS0RnOGN5REhNN2dIYitKWGxUeWxtV1pUZVdsNWR2YnRteTVSa1p3UEV5a0tPeTF3WXNUcTZtdW9HTlhrMXdyenoyVGZTY2l1eXRhZE9tYU5hc0dVSkNRdnhYeUE5c0RWbWE2Q0R3NWZGc0xJUkRCRFZmZ0NiUEVwQURtZ2htbXpadENoZzhlUEJFcFZJNWdSQXl6TDhNL3pvaUNNSTJxOVc2NGEyMzN0cTRhTkVpR3dDbkhPUmtMRTRRMlp1M211b1ZIdUlCY0NLNE5SWWE0dTA1RlIwTGZ2Ym1CellBZ05WcVJVRkJRUU1IZ2NqU3pHYXpaRXU3UXViQTVRQ055TlZPdlY3ZklTZ29hQkxETUpNQStGZmlYL3laeUhIYzJwS1NrdlVwS1Nsblphb3E3NjJxeWdDT1hnbmdMaGZZcTlWcUVSd2NMTEUzYjhkQ2l4WXRFQmdZNkw4eS8xUmdxNmlva0ZUUDZ1cHFEd2ZCbGVMU1pLRG1FOURjQWJVZTZxYlZhczFTcTlXVENTRVQvVXZ1YjhuaTF1bjErclhSMGRFNzNBeE9EbkM4THpWVkZpYlNBT0FhczczNWluc1RWZFBZMkZoSk5XM1NwTWsvL3Bvby8wa255L004OHZQelVWeGNqSXFLQ2lrbHltQXd3R2cwd21LeFNLRG1jRGg4WmcrSWdDYXpvL2tFdEx2dnZsdngwVWNmM2ExVUt1OEcwTWQvKy85OWhXR1ljWkdSa2VONG50OXZzVmkrSGp4NDhOckRodzg3UlpDamxEYndyUEk4VHdWQm9HTGlQYy96VkI0UzVIUTZxVHhjU05RUTVLWVE4YUVyUG9TdFZpdk1aak5NSmhOdXVlVVdLQlNLZnk1akt5d3MvRWVjcU5GbzlBbG9vc2RUcm5aZXpvN21TK1dVc1RPeWFkT21rTmF0VzkrclVDaW13Ujl6OW84VVNtbTJ3K0g0Y3YzNjlXc1dMRmhnSklUd01pYlhRRTJWc1RodkJuZForNXRjUFJVRGU4V2MweVpObWlBNU9SbWhvYUgvVEdEak9PNXZmNUpsWldVb0xDeVV2SjVpQm9HMzZ0bFlHSWVYMmtsa2FVOFNxR1ZuWjBlMGJObnlmb1ZDY1QrQUZQL3Q3UmNBK1hhN2ZkV21UWnUrbmpKbGlzNUxUZVhkNENhcHFPNWdYeXJQUWZWV1QzMkZoWGluWkVWSFIwdGUwK2JObTZOcDAzOWU1TkRmMnNaR0tVVnViaTZLaW9xa2dOdkxlVDI5TXdnYVVUdEZMeWRES1NVblQ1NE1iZHUyN1F5RlFqRUR3QzMrZTlrdlB1U2l6V2I3L0t1dnZ2cHkrdlRwaHNzQkhDRkVrQ1hkZTJjdVVGOFpDNDE1VGNXQTNtYk5taUUxTlJYdWJBay9zUDJWeFdReTRjS0ZDNUw2V1YxZExYazk1UUczamVSNUV1OVVLQzlQSjdOa3lSTEZraVZMSGxRb0ZBL0NIMy9tbDZ0NzBKNjFXcTByNzdqamp0VmJ0bXhoM1FBbnFhZ3lnQlBrSGxUdjFDeVZTa1VieXplVnE2V1JrWkdJalkyVjFOS1VsSlIvVE16YjN4TFlxcXFxa0orZmo1S1NFbFJVVkRRSTVmQk9YcGZiMUx4WW1vZGpRUFJ5MnUzMk8xVXExU01BZXZodlY3LzhCb0E3YkRRYVB3c1BEOTlJQ09HOEFNNmJ3VkZaQmdQMVptL2VNVy9lQWIxaVNFaVRKazJRbEpTRVcyNjU1UjlSRHVsdjV4VXRMQ3pFeFlzWFBlTFQ1TG1lM3NucmNwWW1PZ3JrYXFmTWpzWllyZGFCYXJWNnBqdmx5UzkrK1cxc2dwQ01zTEN3REo3blIxVlhWMy9XcEVtVEEzS0E4L2FpOGp4UDNRSkJFS2hYL1Q3eFBYeDVVVVd6aXVoRnRkdnRzTmxzYU42OHVSL1kvaXIydFBQbnorUGl4WXVOT2drdVU5bTJBVXVUcTUzMTlmV3BvYUdoc3dnaEQvdHZTNzljTDJFWVprUjhmUHdJbG1VL3lzbkorYnh6NTg3NU1vQVR3MFI0QUlJZ0NJTFkzOEs5VVRGbFR3NXUzaUFuT3NDOHdjMXV0Nk4xNjlaL1c3dmIzd0xZYkRZYnpwOC83K0g1bE1lbk5XWlA4MlpwYmxDVDFNNTc3NzFYOGNFSEg4eFdLQlNQQVVqMDM0cCsrU05FcFZMTjZOU3BVNWJGWW5tL2I5KytueDgvZnB3RndMblpHeU9xcUpSU3FSaW0yNEZGNWNVVnZBSE91MXF6SE9CWWxwWEE3ZS9ZU09ZdkQydzZuUTY1dWJrb0xDeVVDa0xLcTNMNEtnYnBmb3JKUVUzTzBoaEtLYkZhclVNMUdzM2pBQWI1YnoyLzNBQnBHaGdZK1B5dnYvNDZvTHE2K3FNbVRacnNKWVN3TXZXVTRGSk9LdlZpY0hLQW83NmFBdmxTVDhVb2dOVFVWRVJFUlBpQjdXYVJxcW9xajNBT01ZbmRWNFZiV1NnSEVlbTVENWJHbEphV3hzZkZ4VDNPTU14Yy83M21sejlCUFIwUUh4OC93T0Z3L0hmSGpoMmZabVZsVmJyVlUwWU9jSzRLNWtSb2pMM0pWRlZjalpxYW1wcjZ0M0lxL0dXQnJhU2tCSGw1ZVNncUtwTENPZVROVlh3NUNieFpHcy96Y3BiRzJPMzJDU3FWYW03cHVlTmR5eDNCeUVodmRWT2RjMzE5UFdwcmE1R2FtdXBIZ0wrQTZQVjZiTnEwQ1E2SEE0TUdEYm9tZzcxYXJaNDFiTml3WG5WMWRlOUhSVVZ0SVlRbzNPb3BKN085RWJuOVRRNXdMTXNTbG1VYnRiMTVNemlPNDFCVFV3T3oyUXdBaUlpSVFPdldyWDgzOFNnb0tBQUF4TWZIWDlYNVYxUlV3T0Z3L0c3bkJ0UG9ONndlbnl4N0VvUDdaeUlqc3o4ZVdmZ3F5a3pPbTJMQjVPZm40OHlaTXg1eGFwZlltZzdGRjg3ZzJKRmZrWjJkZzhMaU1saHNkamdjRGlJQ25EczFpZ2lDd0FpQ29LaXNyRXgyT3AydnFWU3Evd0hvdXZvLzgzRFB3bmR1aW5NOWZQZ3czbnp6VFFEQWtTTkg4TnByci8ycFkvZzl3bkVjQmcwYUJJUEI4S2VONFhyTDJiTm5ZYmZiRzN6dWREb3hZY0lFRkJVVklUQXdFRmFyOVpxUFRRanBIQmtaK1I3THNvdDM3TmpSakZJYVFDblZ3TldZV2tVcFZWQktGWUlnS0FSQllIaWVKMDZuazdBc0M1UEpCS1BSU0VRdnFEeVAxR0F3U0ZXaUt5b3FVRnhjakFzWEx1RFFvVVA0K09PUDhmYmJiLy9tZGZiU1N5L2h6Smt6QUlDQ2dnS3NXN2NPSzFhc3dLcFZxNjVxUFd6WnNzWG4vMTdyZW1nVTJMWjk4Q3hlL0hRM1JrNS9CdiszNEQ3ay9mZ2VIbm4yNHo5OUlaMDdkdzVuejU1RmZuNitSN1Zia2ExVkZlY2h2NlFheXNCUWhBUUhnSE5ZU0gyOW5vaU16YzNVaUNBSUlrc2JGeDBkL1JVaFpPYk4rTlQvOHNzdmtaR1I4YmNZZzBxbHd2dnZ2LytidWk3ZERQUGdTK2JNbVlPU2twSUduK2ZsNVlFUWdrV0xGbUh5NU1sbzE2N2Q3NW0zQi9yMzcvL2ZFeWRPWkFIUXd0VVRWZ1EzcFJ2Z0dCSGMzTDAwQ00vemNEZ2N4RzYzRXhIY0xCWUxUQ1lUVHA0OGlZS0NBdFRVMUVqOVBWaVd4Wmd4WXpCdzRNRGZORTZUeVlUZHUzZWpUWnMyQUlETXpFeXNXTEVDdDkxMjJ3MWZENDBDVzFGUkVVaEVjMHlaTkFZamI3OFhMeTkvRWNPNkpNRUpRRjk0RkhQdm40Q01qRXpjTnZraDdENVhCUUE0dXY1TkRNKzZGM2syQUhEaXhZZEc0dUZsWDdwNStVbE15aHFPZDcvWWlEbFRiMGRtUmlZKzIxM29ZbUNIdnNjOTQ0WWlJNk1YcGo3NkhQSnJIU0p0eE5aUGxtUDBnTDdJN0RzWUR5NTRCYWZQblVOQlFZSFVEcys3SjBGRmVUWEFxQkFhRkFDVldrdlVTZ1dvNEhTQm10TkpPSTVsbkU0bjAyUEFpUEJ2OXAxNVFhVlNmUW1nMjRGdjM4VHcvcjB3OExaN2NMalFKS2V1SG1OWTh1WWFPRzdRVFdNMEduSDI3Rm4wNkhFcER0aHF0V0xldkhubzM3OC9IbnZzTVRnY3J0R1l6V1k4OWRSVEdEcDBLQ1pObW9SVHAwNEJBTDc0NGdzOCt1aWpHREJnQUJZdlhveXNyQ3pNbVROSGJMcU10V3ZYWXVUSWtjakt5dkw1cFBRMWhsOSsrUVhqeDQvSDRNR0RzV1RKRXRoc05nQkFiVzB0WnMrZWpheXNMSXdmUHg2Ly9QS0x0TTlkZDkyRmtTTkhZczZjT1pLNkk4cW5uMzZLNGNPSFk4aVFJWGp0dGRmZ0hUVHVQWWJ2di84ZTc3MzNudlQ5NmRPbnNXREJBb2twTFZ1MkRFT0hEc1hZc1dPbE1aak5aa3lmUGgydnYvNDZoZ3daZ29rVEo2S29xQWdBOE1JTEwyRC8vdjNTOFZhdlhvM1ZxMWRmOXRyczJiTUhFeWRPUkdscEtlYk9uWXVKRXlkaTU4NmRBSUNubjM0YVR6enhCQ29xS2pCeDRrUk1uRGdSTE10ZTluanIxNi9INjYrL2poa3pacUJmdjM1WXVuU3BOQS9MbHkvSHFGR2p1aXhjdVBDRFhidDJ6ZjN3d3crakthVUJBRFNVVWhXbFZDa0lncExuZVViYzNNQkdEQVlEYW10clVWdGJTMncyRzNRNkhVNmZQZzJqMFlqczdHeHMyN1lOUjQ4ZVJXVmxKY3JLeWxCUVVJRGk0bUxVMWRWSnY1K1hsNGQ3N3JrSGdpQkk0NTA5ZXphT0hqM3FjUTRiTjI3RXFGR2p3RERNRmRmMjVkYkR1WFBuTUdIQ0JBd1lNQUNmZnZycEZkZmtoUXNYTUhQbVREend3QVBvMzc4L0ZpNWNDTWgwYzQrdDhzUUc5R2pmRXAxNmpjRFNWOTdCNlJMWGlWTGVnRmtqT3FIN3NHbjRidE42ekpwd0sxcjNtSUFTTzhXdWorZWpSWXMrT0dtbW9KVERJNE5TTUd6Mlc2NzlxdmVoUzRzV2FObTZFMmJNbTQ5Rjg1L0Uzbnd6K0xvVEdOQytKVVkvK0N3MnJGK04wVDNiWXRUanJuMU9yRnVHbGkzYVl2N3JLL0hLMGpsSWlvbEMxclFuTUgvK2ZFeWZQaDNqeG8zRDRNR0RrWm1aaVk0ZE95STFOUlVhQlFGUmFoQVpHVWxDUWtLSVZxc2xhcldhVVNxVkN1S3lLYXBYcmZsMjhPSUhSLy9Zc20wZmVxeWFvNDdTUGJSclNnczY5cUdsZFAzYWxYUll0MVRhZXNUamxGSktUNnhiUmx1MmFFdWZlZXQvZE8ybksyaW5sSlowMmJvVDlFYklxbFdyNk50dnZ5MjkvL0hISDJuLy92MXBXVmtaZFRnYzlNNDc3NlJyMTY2bGxGSzZZTUVDK3E5Ly9Zc0tna0FQSHo1TWUvVG9RYTFXSzMzOTlkZnBmLzd6SDNya3lCRTZkT2hReW5FYzdkV3JGNjJ0cmFVSER4NmtJMGVPcEhxOW51cjFlanBreUJCNjh1VEp5NDVCcDlQUjd0MjcwN05uejFLZTUrbkNoUXZwRzIrOFFTbWw5UDMzMzZlZmYvNDVwWlRTUTRjTzBYNzkra243bVV3bWFqUWFhWHA2T2pVWUROTG41OCtmcC8zNjlhTVdpNFZhTEJZNlpjb1Urc3N2djF4MkREVTFOYlIzNzk2VTR6aEtLYVZMbGl5aGE5YXNvWlJTK3ZycnI5T25uMzZhT3AxT2V2YnNXWnFabVVudGRqczFHQXcwSlNXRkhqaHdnRkpLNllvVksrajgrZk9sZVowNWM2WjAvR0hEaHRIQ3dzS3J1a1pEaGd5aHVibTVEVDQvY2VJRUhUTm16RlZmNjQ4Ly9wamVkdHR0VktmVFViUFpUQWNPSEVoLy9mVlhTaW1sTnB1TkdvMUdPbVBHRFByamp6OVNudWQvS2l3c25BQ2dHWUFtQUtJSUlXRUFnZ0FFTUF5akpvUW9DU0VLdFZyTkJBUUVFQUFrTEN5TXhNZkhJems1R1FFQkFXamV2RGt5TXpNeGVQQmdqQnMzRHRPblQ4ZjgrZlB4MEVNUFllREFnVGgrL0RoWWxnV2xGR1BHak1IT25UdEJLY1c1YytmUXQyOWZPSjFPRDh3WU4yNGN5c3JLR21ESnA1OStpdWVmZjk3ak03ZXFqUFQwZEJnTUJ1bnpqei8rR0dQSGpvWFpiRVpWVlJVeU16T1JuWjN0c2UrcVZhdnc5dHR2Uys5UG56Nk5ybDI3b3F5c0RGYXJGUk1uVG15Y3NjV2xqOGJXcmQvanZxd08yUC9OZXhnemVBZysrZmtjaE9JRDJISFdnSWtQUG8zYlI0N0Jvc2Z1Qmx0OUZMdFAxbDhWQ3huMTZISjgrT295dkxqc1pmUnBHWVNDZzd0UmFHVXdmZDRpakI0ekdXKzgrd0ZtanV2dGVnSjh2d0UwTEFGOHhSbmtGQmtRb0hEaTlQR2pVcHlhZDBpSHpXWURUeWtnOEI2cXA4dnJLVEFVVU14K1k5UERVeWVPWDdsay9zeWhHbnNadHUzT1JmNnZoMURQQitEQnA1L0JtSEgzWUdDWGhFdFBvZTgzQUJGSlNGQVlVV1VMUkdJRWcxMjc5dDBReHJaMjdWcU1HemZPNDdNMmJkb2dJU0VCYXJVYTNicDFRMFZGQlFEZ3A1OSt3b3daTTBBSVFmZnUzWkdjbkl3VEowNEFnRlIxTlNRa0JFcWxFa0ZCUVdCWkZwczNiMGFUSmsyd2R1MWFyRjI3RmpFeE1UaDA2TkJseDNENDhHRjA2TkFCYmRxMEFjTXdXTEJnQWNhUEh3OEFtREZqQmhJU0V2RDIyMjlqNTg2ZHFLbXBrZllUZjk4N0lEUXVMZzRxbFFydnZQTU9UcDgralpVclZ6WlFNYnpIRUIwZGpTNWR1bUQzN3QxZ1dSYTdkKy9HcUZHdVpKQWZmdmdCSVNFaFdMbHlKUTRjT0FDR1lYRCsvSGxwREQxNzlnUUFaR1Jrb0tyS3BXa01IRGdRT1RrNTBPbDBPSG55Sk9MaTRxNUhXNzlybHU3ZHV5TThQQnhCUVVGbzM3NDlLaXNyQVFBQkFRRUlDUW1SNnFzeERETzRXYk5tYjN6enpUZFQzS3BwZ0tpYUFoQlZVd1VBUnN5ZUlZUVF0eU9OMk8xMjhEd1B1OTB1cWFaNnZSNTFkWFZTWUx2UmFFUnViaTVPblRvRnU5Mk9HVE5tNFBQUFB3Y0FmUFhWVjdqbm5uczg2cjNsNXVZaUpDUUVDUWtKVjNXdWphMEhBT2pjdVRPQ2dvSVFHeHVMWWNPR2VURC94dTZMaElRRUpDUWtRS3ZWNHE2Nzdtb00yRmhzVy9NWjloY3llR3p4TW16YnN4ZTNkMURobGRmZWQzbFFBR2cwcnVhdEt2Y3J4L0x1ZlFYSUdHc0RDZmVLbDJFNUJ3QUZOQnFYZzdaRmVoOWs5ZTNzb3B3bUN6aWJIaGZPbjBkaFlSSENrMUlSRzZLOFhQY29Ra0VJcFlKVU84M3A1QmllNTVuaXZPMEp2VnEyZUMxQXEzMERRSUpTbzRZQ0FNZXo0Snc4QUFXVW1vWk9ZcnZORGlYRG82YXlFcFdWMWVpU05RVlp2ZHJlRUZ0aWVIajRaYXVoTWd3anFRc2N4MEdqMFVqZmFiWGFLNm8vTnBzTm9hR2gwaloyN0ZqMDZkUG5zbVBnT0E1cXRWcDZIeElTSXBYRmVlMjExN0IrL1hyMDZORURJMGFNdUtyekRBc0x3OGFORzVHYW1vcHZ2dmtHdzRZTlExbFoyUlhuWWVyVXFmajIyMit4ZmZ0MkRCbzBTQW95dGRsc2lJeU1sTTVwN3R5NVB1ZFFQbmRLcFJMang0L0g5OTkvajNYcjF1R3V1Kzc2MDIxM2hCQmNJWTg3UWExV3Z6Uno1c3huTm0zYWxDaXFwaktBRTRHTmNkdVRJUWdDY1FmbkVrRVFpTVBoOEhBcTZQVjY2ZDZ5V0N3b0xDeVV3SzF2Mzc3SXo4L0h1WFBuc0czYk5reWFOTWxqTUd2V3JNR0VDUk91K3p5bzFXcklTNnRkelgyaDBXZ2FBellsanYrNEVrOHRlQlo3VCthanRMUVFlclByeGxFMDY0Wk8wU3I4c081L0tDd3R4YW92TndDQkxkR3RZd3ppWStJQTFPR1hnOW5JUDdrTEY2cjVLdzY4WlpjTVJDaFliUHBtSGNwSzgvRFl1RXowdnVkRm1Fd21ORW0rQlpiYUtnaWg4YmlsWlRNb0JSWUJha1dET0RWM3hWdkNzaXdVaEFCVUlDekxFWjduR1VHZ3pOQ0hYKzNYcEhubWg1bnR3MmJ1MnJnRzU0cEw4ZTJxTmJDUUVHUjBhWTFiT25SRUlDeFl2Mm9kQ3M4ZnhjbThPbWw4ZlhyM0JLZlhJU0VqQ3c4L09BMXQ0c09Ra2RIbEQxL1lhOWFzd1IxMzNIRk5UL3N0VzdaSWJ2YnM3R3gwN05qeGl2dFVWVlZoekpneG1EQmhBbHEzYnUyeFlIeU5vWFBuempoNjlDajBlcjMwUHg5ODhJSGt0UjAzYmh5NmQrOHVxUWxYa2wyN2R1SGxsMS9HYmJmZGhsZGVlUVZ0MjdiRndZTUhyemdQM2J0M1IybHBLVmF1WElrcFU2WkluMmRrWklCbFdVeVlNQUVUSmt4QVFrTENWUVdmVHBvMENldlhyOGZodzRldnlYaXUxV3BSVjFmM3A0QmZlbm82amg0OU9xTlhyMTR2RlJRVTlQRGxXQUNnRUFTQkVkbWI2RFdsbE1LWFUwSE0xckhaYkZJSi9ieThQSnc5ZXhhVEprM0NvNDgraXFGRGgzcFVDZUU0RHJ0MjdjTFFvVU92eTNrVkZoYUNVZ3FIdzRIZHUzZWpRNGNPVjF3UE9wMU9zamYvOU5OUGpjV3hNWGpzcGYraWV2NUN6QmczQkJ3Rm9sdDJ3Y3N2ejRGUzNRVExYdjhYWnM1N0hnUDdyWUk2ckNtZWVlVnRwSVVDR0h3blJxVjlnK1VQMzRaUFcvZERpNlpoMEYzaEpEVEovZkhLMGdmeDFMOFhvZSs3SEtLYWQ4VnpDNmZnOU9uVGlPNDRCSm10TCtEbmJ6NEQ2K1NoMElhZ1pZb0dBWEI2eDZoSjhXbFFLQWdSQkNJSVBBSEFESjc0eU5UWC8rL2had2pScGl4NCtYVVVQVElQSTI3dEIwVkFCTzViK2hxR3R0SUNHSW9sRHc3QnN4OCtqUjlYeDZKOXdxV3FvOE1mZmg2UGx6NkJOeDZmZ3VVOEVOMnFLMTdxUHhsQStCKzJZRm1XeFo0OWV5U0QrTlhJMHFWTE1YUG1UR3phdEFrVkZSVll1blRwRlcvbzhlUEg0L1RwMDhqS3lrSk1UQXdVQ29YazVtOXNEQWtKQ1pnN2R5NG1USmlBbUpnWUFKRGM3ak5tek1EQ2hRc1JHeHVMMk5oWUNJSUFnOEdBc0xBd2pCczNEdlgxOVRDWlRCZzFhaFNDZ29Ld1pjc1daR1ptWXZYcTFSZ3pab3pyd2FsUVNEZkk1ZWFCRUlLSkV5ZGl5NVl0U0VtNVZOZHo0Y0tGZVBUUlJ6RjI3RmhRU3RHdVhidXI4cWFLUFFOYXRXb0ZwZkxxd3p1blRwMktPWFBtb0huejVoZzllalNtVHAxNjNkZkQ4ODgvangwN2RxQzJ0aGJIamgzRFN5KzloUGZmZngrdFc3ZkcxS2xUTVdyVXFJRnhjWEhOQmcwYTlOYlBQLys4MFoyR0phL3N6QU1BcFZSd3gyNUNvVkJRa1JDbzFXb2FIeDhQczltTVU2ZE9TV3p4czg4K1EvdjI3VEZ5NUVnSWdvQTJiZHFndUxnWTk5NTdyOGY0ZnY3NVovVHQyOWVEeVFQQWhnMGI4TnBycjhGa01zSHBkT0xubjMvR0k0ODhna21USmpXNkhrU1FHanQyTFBSNlBYcjA2Q0daRHk2M0hod09CKzY5OTE0cDlPYUtaWXRZaHdsV0I0UHdVSy9PMDRJVDlYbzlna09qb2ZaWUJ3TDA5WG9FUjBaZVUvU3Z3RHFnTjlzQUJqaWJrK01SemxGZFhZWGFlaDBjTmx1RGJBSTVxTW15Q0pocGQwOVZMUC9QZnhkRWh3Y3Rna2Nnc210ODJ1QndhTlNlaE5WbTBRUEtZR2g5cUtTc3d3S2pqVWQwK0I5ZmF2bnMyYk00Y3VRSTdyNzc3bXZldDY2dURxR2hvVkNwVkZlOWo4MW1BOGR4SG1Xa3J6UUdsbVZoTnBzUkdSblpZSUhaYkRhRWgxOGI4SnRNSmhCQ0VCd2NmRjNtd1dBd1FLMVcvKzQ4eUNsVHBqU0l1OXU0Y2FPSDUwL3NrWEdsY3k0dUxzWWpqenppOFZuNzl1MnhZc1dLM3p5K21wb2FhTFZhTUF5RGYvM3JYODdFeE1UWDNudnZ2WTlPblRwbGQ2ZGtjZTdONmE3ekpoQkNCSGtoUzQxR0E3VmFUY1hhYm1McEk3Rm9aVlJVRk9MajQyRTBHcEdUazROVnExWjVuT3VubjM2S1BuMzZvRldyNnhmUUxpYnJ5ME5CR2xzUDJkblpXTGh3SWI3Nzdqdm85WHBFUmtiZVhQWFlkRG9kY3J4QVRYUVNpTTFXNU4yalpLQW1yNXZHVkZaV0prVkZSVDFEQ0prQnYvamxieXFDSU9EdXUrOUcwNlpOd2ZNOFRwMDZoYSsvL2hvaElTRXJkK3pZOGVIdzRjTkxDU0VPTDNEanZjQk5LajB1Z3B1OEc1WUlicVdscFNnb0tNQ3NXYlBRcDA4ZnRHL2YvcWJKTHhXQmJjT0dEWmNZL2MwQ2JISlFLeWtwOFFBMWVjTVZIMHhOVEkxaUJFRWdKcE9wbTFhclhlaXZtZWFYZndxNFpXZG53MjYzSXowOVhYSWc4VHkvSlRjMzk3MTI3ZHFkQnVDUXNUZW51N2tNNys2eElJaU5ZK1RnSnBZY0Y3MlhZZzIzbEpRVXFXRGx6UUp1VnFzVmhZV0ZIa0hRTndXdzZmVjZaR2RuK3dRMWthbjVVajlsV1FTRVVzclliTFpoYXJWNkVmeVZiZjNpRjFCS0Q1ZVhsNytUbUppNDF3dmNPRGU0U2N6TlhYNjhBYmcxcHBhSzRKYVdsbmJOWm9jYklYOTZFcnpCWVBESjFIUTZuYzhLSFY3cXB3UnFEb2Rqc2xLcFhBU2dsWDlKKzhVdnJrcTlDUWtKa2JXMXRXOUZSMGR2cHBReXhCVTRSaWlsSE54T0JjR2RVdUFtT1JRdXh3UDFBWlMrZmdOcGFXbS9LUzNxYnd0c0pwUEpwMDFOQkxYTHFaOXlVR05aOW1HRlFyRVlRSXgvT2Z2Rkx4N0FreElWRmJWWXI5Y0hoNGVIZitNdWQwUzhOVFlSM0p4T3AwOXdhd3pVeEsxRGh3NDNWYU1ZNXMvNllZdkYwcWlqd0VjVFk5SVlxSEVjOTVSQ29WanVCN1hHN1EvMzNYZmZUVFdtd3NKQy9OVWFkYi84OHN2bzNiczNoZzRkS3FVYVRaNDhHWk1uVDhiMDZkT3YrKy90Mzc4ZjE3SG5iMHhZV05nU3M5bDhMd0N0TEpoWG5xa2daU2s0blU3aXJscEpSN1FBQUNBQVNVUkJWTk1tSmREYmJEYVBRTjY2dWpvcGVUNC9QeDg1T1Rtd1dDdzRlL2FzbE5IaExmUG16Wk15WlJxVHpaczNTeGtPZnpsZ3M5dnQxK0w5SlBJT1VxSk43WjEzM2xGeEhQY3N3ekF2d3BWUzRoY2Z3dk04amh3NWNsT042Y1VYWDRURllwSGVHNDFHeko0OSs2YWR3NU1uVDJMTGxpMzQ2YWVmc0czYk5uVHExQWtxbFFxdnZQSUtubnZ1dWVzK3Z6VTFOVmkrZlBrMWhlejRrb3NYTCtLNTU1NFQzd1lFQlFVdHJLeXNmRWlqMFFRMUFtNEtRUkNJdlB5UnU5S3VCRzRXaXdWR283RlJjSHZpaVNjOFVxM2tjdXJVS2FsZ1FtTlNXVmtwRlNmNFM2bWlITWRkMXZ2cFpWTVRjejRoTDhmeTY2Ky9CcWVucHk5aUdPYkp2eU1ZSFRod0FNMmJOOGYrL2ZzUkZ4ZUh2bjM3U2psMVpyTVoyN2R2QndEMDZkTUgwZEhSMG43bDVlWFl0MjhmSWlNak1YRGdRSjlWRms2ZE9nV05SaU1WRWF5dHJjWE9uVHNSR0JpSWZ2MzZlYWdUUjQ4ZVJWNWVIdnIxNjRmYzNGemNldXV0a2xxeWI5OCtsSmVYbzNmdjNraE12TlFPb3F5c0RQdjI3VU5vYUNnR0Roem9rZVlGdUxJaWFtcHEwTDU5ZXdCQVRrNE96cDQ5aTkyN2QyUGJ0bTBBZ0w1OSswcnhaOFhGeFRodzRBQ1NrNVBScTFjdkNRZ3ZYTGlBbUpnWTdOKy9INm1wcWVqU3Bjc1Z4MEFweGQ2OWUxRlJVWUdlUFhzaU9UbFoyaWNuSndkUlVWRW9MUzFGYm00dSt2WHJoOFRFUk96Y3VST0hEaDFDUkVRRTl1M2JCN1ZhTGMxRDA2Wk5ZVEtaR21XbGh3NGRRbEpTRW5yMTZnVkNDSTRkTzRiVTFGUm90VnFjUG4wYW5UcDF3b1VMRnhBWUdPaVJZN2x1M1RxTUhUdjJpdXZoK1BIamlJNk9SbEpTRWdCSWViT0RCZzNDc1dQSGNQVG9VZXphdFVzS2NCMDZkQ2kwV3UzYzFxMWJxNGNORy9iUnl5Ky9ySGVybEtMZHplbFdTM2wzcVh4UkxZWEQ0U0NDSUZDajBRaTFXbzNFeEVRUFZaUVFncEtTRWdRRUJIalkyOFRyNTZ0czA5R2pSNUdibTR0dTNicDV4TUFKZ29BZE8zYWd2cjRlUTRZTWtZNzN5eSsvb0UyYk5nZ0xDd1BMc2podzRJQjBMZXgyTzdadDJ3YWxVb2wyN2RyZFdNWkdLZlVBTlhreXUzZlRGVmx2QWc5UU8zLytmRVI2ZXZyU3Z5dW9BYTR5T2s4KytTVDBlajJXTFZzbVpRUG9kRHJjZHR0dEtDMHRSV0ZoSVVhUEhvM2EybG9Bd0xGanh6QnAwaVRvOVhwczNyd1pEenp3UUlQamJ0bXlCZlBuejVmQThPTEZpNWc0Y2FLVS9EMW16QmdwTFdYMTZ0VjQrdW1uWVRRYXNXalJJano5OU5NZUtzWFhYMzhObzlHSUtWT21JRHM3R3dCdy9QaHgzSDMzM1RBYWpkaTVjeWNtVDU3Y3dEYXpidDA2andUbXVybzZsSmFXUWhBRUZCVVZvYWlvU0xUellPZk9uWGpnZ1FkZ3NWanc3cnZ2U29Hc3BhV2xtRFZyRnQ1NDR3M29kRHJNbWpVTHUzYnR1dUlZNXMyYmh5KysrQUlta3dsVHAwNzFLRlcwYXRVcVRKOCtIZSsrK3k1eWNuSlFYKzhxNmxCU1VvS2FtaHJZYkRZVUZSV2h0TFQwaXRkdjU4NmR1TysrKzJDeFdQRFJSeDlKa2ZJYk4yN0VrU05IY1Bic1dUenh4Qk1BZ1BmZmY5OURQYU9VNHZ2dnY4ZnR0OTkreGZWdy92eDVQUC84ODlML2JkMjZGWjkvL2prWWhrRjFkVFVxS3l2QnNxdzByNkt3TER2TDRYQThQSEhpeEdnQVl2RktGUUNsSUFnS0FBcEtLV0ZaVmxKTFRTWVRxcXFxWUxGWVVGMWRqWnljSEEvbVZsVlZoYTFidDZKZHUzYkl5Y2tCcFJSbnpwekIrUEhqVVYxZGpjOC8vOXhqN2w1OTlWVzgvdnJyc0ZxdGVPU1JSN0JqeHc3cHV3MGJOdURvMGFNNGZmbzB4b3daSTdINzVjdVhTeVlNbzlHSUo1OThVZ0xDcVZPbll2djI3Y2pQejNkbGZ6Uld0dWlQMkU2ZlBvMXZ2LzBXcjd6eUN1Yk5tNGVwVTZkaTVNaVI2Tk9uRHpwMTZvVFUxRlFrSlNVaE5qWVc0ZUhoSkNnb2lHZzBHa2FwVkNvVUNvV3lzTEF3VGhDRU4rbmZYSVlQSDA2enM3TXBwWlNXbHBiU0RoMDZVS2ZUU1d0cmErbXhZOGNvcFpTeUxFdG56SmhCdDJ6WlFpbWw5UDc3NzZlYk5tMmk3dExRZE1HQ0JWU24wMUdqMFVqVDB0TG8xcTFiNlpBaFEyaFZWWlgwTzZXbHBmVE1tVFBTOGJLeXN1anAwNmNwcFpUMjc5OWZHa041ZVRudDNyMDdwWlRTNDhlUDB4RWpSbEJYTldwS3Yvbm1HL3JVVTA5UlNpbjk5Tk5QNmV6WnM2blQ2WlMrczlsczB1OEpna0N6c3JLb1RxZnpPTithbWhyYXRXdlhCdk13ZVBCZ2FRd1dpNFYyN3R5Wk9od09tcE9UUXdjTkdpU040WU1QUHFEUFBmZmNaY2R3NXN3WmV1dXR0MUt4UitldVhidm8rUEhqcGQrYVAzOCtmZjc1NTMxZWowMmJOdEZaczJiNS9NNW9OTktPSFR0NmZEWnExQ2g2K1BCaFNpbWxITWZSbmoxNzB2ejhmUHJkZDkvUmQ5NTVoMzc0NFlkMDRNQ0J0TEt5a280ZE85WmpqbzRjT2RMZ3R4cGJEM2E3bldaa1pORGk0bUpLS2FWMzNua24zYkZqeDJWTEp4a01CcHFXbGtZNWpxTjJ1LzJEMmJOblp3Qm9BU0FCUUJTQVVFSklJTU13R2dCS2htRVVHbzJHSVlTUXdNQkFFaHNiaTRTRUJEQU1nMDZkT3FGUG56NFlPWElrSmsrZWpDWk5tbURGaWhYNDl0dHZwUnA1SDMvOHNYVC85K3ZYRC9uNSthaXNyRVJHUmdic2Rqc29wVGg0OENDbVRKa2lsUzFhdEdpUnRNLzA2ZE94ZnYxNlVFb3hkdXhZbkRoeEFwUlMxTlRVb0d2WHJxQ1U0cGRmZnNHSUVTTWdzc3kzM25ycnhxbWk1ODZkdzRVTEZ5VDFVOTd6VTdTcE5SSjhLekcxNU9Ua1JZU1EyZmdIaUppdjJMUnBVekFNQTZQUmlKQ1FFS3hldlJvclZxeEFhR2dvY25KeXBDZDdZV0docEY0U1F2RHZmLzhiZ012emJMZmJNWC8rZlBUczJWUEs3d1JjcFdPZWYvNTVXQ3dXQkFjSG82S2lBanpQUzZ4SVBKN2MxcE9ibTR2eThuS01IRGxTc3VHMWJldXFkako1OG1RVUZSVmgyTEJoU0UxTnhiUnAweEFRY01uOGVlVElFYVNrcEZ4VjNCUFA4OGpQejhkVFR6M2xNVjR4K1Y2cjFVcnFlWEJ3c0ZUSnBMRXhGQlFVb0czYnRwSjZucGFXSnRYakYrVjZwUVJkdkhoUlVyMlVTaVhhdEdtRHdzSkNwS2VuWStmT25YQTRISmc2ZFNvT0hqd0lwVkxwTVVlTkpYbjdXZzhSRVJHWU9uVXFWcTFhaGNtVEo2T21wZ2I5Ky9lL3FyWGwzaDRZTjI0Yzl1N2QrOEdKRXlmcXZiVXJkODRvTCthWDhqeFBXWllWKy8vQlpyTkphbWg1ZVRsaVkyTlJYVjBObFVvRmhVS0IwNmRQUytXazVPc29QejhmRm90RlVyY0ZRZkJZRTNMelJXcHFxa2UxRjE5U1ZsYm0wU05WcFZMZEdHREx6OC8zQ1dvK0tuUTBDT2tRYldvdFdyVDR4NENhWEl4R0kxaVdSWEJ3TUxaczJRS2owWWd2djNSVkpYNzAwVWVsLzR1T2prWkZSWVdVRUw1bnp4NTA3OTdkNVNGaUdHemV2Qm56NXMzRGUrKzlKK1Vycmw2OUdvbUppVml5WkFrQWVLZy9VVkZScUt5czlMQ2ZpWiszYmR2V1o0WFp2THc4UFB6d3czajIyV2R4N05neFBQamdnOWkyYlJ1aW9xSXVlOU1TUWp5cXN3S0FRcUZBZUhnNFB2endRNmtza2lpaSt1MUxHaHREVEV5TXh3MVNWbGJtQWZMWFU4VGZFcHZ1aUwvVnZIbHpWRlpXSWpBd0VJTUdEY0xpeFlzOUdxWllMQlljUDM1Y2VpaGRhVDBBcmlUOEVTTkdnR1ZaVEpzMnpjT3U2bXRldlVXdFZqL1FwazBiWWRTb1VlKy8rT0tMYUF6Y1JBRGlPRTRLQlJFZEFZUVFYTHg0RWQyNmRVTnRiUzBVQ29Ya1FEaCsvRGg2OSs0dEhVOWNROUhSMGRpMGFaTlBPN0I4ek9YbDVjak16QlRIS2ozQTVDYU9xS2lvQnVyOEh3NXNKU1VsVXRNVmI2Ym1iVlB6RmRMeHpqdnZxTnlPZ2puL0pFQjc3NzMzTUdYS0ZLeGF0UW9qUm95QVNxVkNiR3lzVkErcnVMZ1l1M2J0a2tyc1RKczJUZktrNWVibTRxdXZ2c0tHRFJ2Z2REcWhWcXVSa0pDQXQ5NTZDN2ZmZmp2YXRXdUgvdjM3SXlZbUJsdTNic1dPSFR0dzRzUUpuRGx6UnJLeFRabzBDUXNYTHNTRER6N29rWVBYdDI5ZnZQTEtLM2oxMVZmUnYzOS83Tml4QTBsSlNaZzhlVEtPSERtQ2JkdTJZYzZjT2FpcHFZRmFyWmFldm1MbGlPWExsemM0MS9Ed2NDZ1VDbnoxMVZkbzBxUUoyclZyaDVpWUdEend3QU9ZTTJjTzVzMmJoN3E2T216WnNnWC8vZTkvTHp0dmpZMmhhOWV1SUlUZzdiZmZSa1pHQnBZdFc5YWdTc1cxZXBzM2JOZ0F1OTBPanVQdzNYZmZJVFEwRklNR0RjTDk5OStQSlV1VzRNa25uOFRldlhzUkZoYUd0TFEwRUVJUUdCaUl0bTNiSWprNUdVVkZSUjc5QURadjNvemh3NGY3dk5sOXJRZkExVTFxOE9EQjJMQmhBL2J0OHl5QW1wU1VoT0xpWXZ6d3d3OElDQWlRQU1KYkZBckZRd3NYTG5UdTNMbnovZjM3OXpld2k3cmY4NElnU0hGdWxGTGljRGdvSVFUeXB1TjZ2VjRDdHRUVVZMejc3cnVJakl5RXpXWkRjWEV4QUtCMTY5Wm8zcnc1RmkxYWhQSGp4K1BZc1dPd1dDeVlPM2V1TkE5ZHUzYUZ5V1RDL3YzN3NYanhZZ0JBMTY1ZDhmbm5uOFBoY09DSEgzNlF4cGVabVluLys3Ly93M3Z2dllkV3JWcGh6Wm8xVUN4ZHV2UVB1em1ycXFwd3p0MmpRTjdNMkdBd2VCU0k5RTZUa3NlcHJWKy9mZ25ETUF2K1NhRDJ4UmRmWU5Tb1VUaDQ4Q0JhdEdpQnVYUG5RcVZTSVRFeEVZbUppZGkzYngvaTQrTXhZY0lFUkVWRklURXhFYTFhdFVKU1VwS3JGcFZTaVJkZWVFSHlMQ29VQ25UdjNoMUJRVUhvMGFNSHpwdzVnL1QwZExScjF3NHFsUXFIRGgxQ1dsb2FoZzRkaW9TRUJNVEV4Q0FqSXdOV3F4VkhqaHhCdDI3ZGNPalFJVXlmUGgwS2hRSzMzWFliY25OemNmVG9VYlJwMHdZVEprd0F3ekJJVDA5SFVGQVFkdTdjQ1l2RmdzV0xGMHU5S3RldFc0Y21UWnBJSGpxNU1BeURYcjE2WWQrK2ZhaW9xRUJhV2hwQ1EwT2xpcktpK2pacjFpeUpxUVFHQm5yVTZZcUxpME9MRmkwYUhRTWhCQ05IamtSMmRqYU9IeitPaVJNbk5tZ3kwckpsUzhUR3h2cThKbEZSVVEwOGQ5dTNiNGZGWWtHM2J0MWdNQmpnZERxUm5wNk85UFIwaElXRllmdjI3WWlLaXNLenp6NHJsZlNKaUloQXQyN2RFQjBkamVqb2FHUm1aa3FlNk9lZWV3NlBQLzU0Z3lqK3h0YURuRHcwYjk0Y0F3WU04TmhQcTlXaVk4ZU8yTE5uRDNRNkhUcDE2b1NBZ0FBb0ZBcDA2OVpOK3Ird3NEQjA3Tmd4NDg0Nzc3Uy85TkpMcDJXTVQwUTRLcXFjY2lhblZDcUo2TlFLQ1FueHFLUkNLVVZrWkNTYU5XdUdFeWRPSUNrcENWbFpXVWhMUzROV3EwVldWaGFxcTZ0eDhPQkJ4TWJHNHQ1Nzc1WFU3ZDY5ZXlNdkx3OWxaV1Y0OXRsbkplOTF0MjdkVUZwYWlweWNIRXlhTkFteHNiSG8ycldyVk9ycThPSERxS3FxUW54OC9CK1hLNnJUNlpDZG5lM0Ixcnl6Q3J6RE91UnhhbUx3clR0T3pTOSs4Y3NORUxQWi9PK1FrSkQvQWJDNUs0TTRBTENRVlFZUmMwdVZTaVYxTTJJcTVwV0tTZk1SRVJGU1htbHljakpTVWxLUWxwWjJ3NUxtL3hCVjFHYXpTUjNhS3lvcVVGdGJLN1hIdTV6NnlmTTg1R2xTRE1NczlpODF2L2pseGtsd2NQQmNuVTVuallpSVdPZG1aaFR1V0RhdjlDdnFJblhFbGFORkNHVVlCZ3pEZ0JBQzhXK2xVZ21WU2dWM2NqMDZkdXo0dTJ2ay9TbkFSaW5GK2ZQblVWaFk2S0YreXF0MGlCNVFlWkZJdDZ1V0VSUGEzYm1mL293Q3Yvamx4a3BBZUhqNFkxVlZWWmE0dUxpdDFKVmM2bTF2Zzd1SGd1QjBPa1hQcUFoeUlJUklkalp4RXdGT285RWdQVDNkWnhPWG14clk1S0FtTmpJV0hRVVdpK1d5bFc4RlFTQTJtMjJZdTBxSFAvZlRMMzc1Y3lRbUppWm1aa0ZCZ2JGRml4WUh2SmdiQlVBRlFSQzlvNUFCR2hHTFY0cWJITlJFWUFzSUNKQ2FLdjhsZ0syd3NCQVhMMTVFV1ZtWlQwZUIzVzV2a0ZVZ0MrdGdUQ1pUTjNjOU5YL3BJYi80NVU4VVFraEtjbkx5UThlUEg5ZDM3dHc1eDgzY1JKV1VpbjBSUk5ZR21ZTkJWRVc5R1p0U3FZUmFyWVphclpiNm12NVJjdDI4b2xWVlZaSmRyYnk4M0tkZHJURVBxRmpPT3pRMDlDVkN5RUQvc3ZLTFgyNEtjR3NhRXhNVDJxbFRwOU5mZi8yMXpRMWVrcWNVUG1xMnVWVlM4Vy81NTVCL0xvYSt5SHRjWEZmR2RqMWFoNW5OWnB3NWMwWmlhMklPcUhlYlBJZkQ0ZUVCRmRYUHUrNjZTd0hnbWZyNmVuODViNy80NWVhUzRabVptVFVwS1NtdlhiaHdRWkF4TjFmNmdmc1A5eXZjV1FuRW5VSUgrZVowT3FYTlhUVUU3ZHExKzBQQVRmbDdhejVSU3BHWGw0Zmk0bUpVVkZRMHNLczFWdExiN1N3Z0FKaGx5NVl0Y0RxZE42VHhpdGhUMGJ2cXhKWEVZckVnTUZBTFFoai9VdmZMUDQyNTNiMTE2OWJxbEpTVXo5MDRKc2pCalJBUnh3VEs4enpoT0k2NmFSc1Z2YVJ5RmRYYlk5cStmZnZyN2t4UUJnVUYvcTRENU9YbG9iYTJCbnE5RG1hekNWYXJCWGE3cEhMS0tuUTRpUmlkTFBlQTF0YldUSFU3QzI2SThMd1RUaWVQYXoxdm5VNkh5TWlJYStvNWFUQVlFUklTN0RPUzNDOSsrU3RKVUZEZ25QejhDNVczM0pLeUZZQTNjNVArVHhBRWdlZDVPSjFPS0JRTTRUaU9LcFZLaWFIWjdUWllyUmFZelNibzlUclUxdGFnb3FMOHVyYnVBd0RsdGR5bzNsSldWb2F5c25KVVY5ZWd2bDRIZzhFSXM3bEJqd0kzdUVtZ1J0eFVsZFRXMXZRTkNBaDRCamV3THB6cmFTSGd0NXkzYUFDOVdqR1pUQWdMQzhYdm1XTy8rT1VtRVdWOGZQekR4NDhmcSt6Y3Vjc3hYOHpOL1VvRVFRRFA4NVRqbkdBWXppdmtRd21WU2cyMVdnT05KZ0JhYlNDQ2dvSVJHaHJhSUNmNGR3MjJzV3FYVjVMUzhqSWNQM3NCT25kR2djRndLYW5kYkxiQWJMV0J2UVJzSWxzanZDQVFLbENtcUtnd0lTZ29hRDZBbEJ0THF4a3B6dVphVlc1NWN1OGZ0YzhmSWZwamU2Qm9sb0dRcUJzVEZrZzVPNncxOVZCR1JFT2pWUU53b21Mckp0aHNnS3BwR3lSbHRQbGIzT20vWlY1dGhUbXdPS01SblJMWHlIL1lVYlhqTUNKdjdRZVZtK2c3aWs2ajdGZytBSUxZUWFNUkhNcGN4N0ZFSURvbDRXcDN1YVYxNjliM3IxeTVzbnphdEdubEFNUkFYZkdWaXA1U251ZmhEdHFWUWtBdWVVY3Q3dEFQdGJzVGxoYkJ3VUVJQ3d1N3BxWXdqdEpjR0l4YXhMWkxhbkJPeW10V2s2Z1ZpejdZZ1AxRjVTQjFaU2l2cVVmWHVGQW9MU1pZTEdhVWxKV2hzTjRNd3RrZ0NFQ0lFc1RwZE1MSmNjVEJPUW5nc3F1OWsydCsrcm40K0NIa1QxaVFsT0thMVVNeFArNWE5dnN0Ky93UlV2TFpjZ1JOL2d4aHZRUC84TitxMi9ZWkRyL3lKYlROV3NCUlZvQm04OTlGbS81SlVBVUV3bkp1Tjg0ZHFFS3p6SFovQzJEN0xmTnFPTEFHaGZwTXhLYU9iSXpuSS8rOXp4RFk5MVpvM0VTZlVXcWcxZ2JnNHRzdlFKMStHMExERzY2bnl1OC9Sc0R0YVFpTDhSeEx3ZnRMb2V6MUdKSTZSRGJZeDN6aVI1UVlPaU0yTmZGYU5KNEI0OGFOSzV3MmJkcGJNdFlteUZnYjRJcHpnMXNscFF6REVJV0NvUTZIQWtxbGF4TXpFZFRxUzIzK2dvT0QwYkZqeDZzbUFwYmptM0gyVkJMaTA1bzFPS2RyQnphbzBUK3REWG8yRFVGaG9ScTc5cFppN3prZHVrY29ZTmJYNFdLZEZZbmhnZUR0UUVWMUhURXJsVkFJVG5DdUNHVkNBTVpTbS8vUXlEZjJ6TXpKVEVYSEc1eGJJRGRpL2pZMWx2bkQ5d0VFVURCdzZxdkEwU0FFUm5oNmpTZ0VFREN3VjVWRDBJUWpNUHpTWXJaWGxZSlhoaUlvS3ZUU0Rxd2RvQVRPdW1vSW1qQUVoSHFtdERpTmRiQVpIUWlNaTRkQzlkdEJtQy9kai8yTFY2TEgybzFvMGl3VUVHeXcxbk5nR0EzaUI0OUFNRk9PL0FLTGova1E0S2lwQnNjcEVKUVFBOCtISFE5YmVRVUVWVEFDWThJOXZxTU9LOHhWdGRERXhFR3QxZHhrOCtyN25BalBnVG9GVUtzQk5nc1FIQmZoT1Q1bkRQcCsreG1JYkk2MHpkcWhlYk4ycVB4b0NZQ0dhNWM2bldqLzNDb1FaY1BQemFjT1FObHFPb2dRRGlpVjBqaW80RVQ4N2ZNUUwvdnMwakE0V01zcndFVEdJU0JRMDJDdDhFYkhmVlVWVllWeFRlTFdBK0I5cWFTQ0lBaUVFT3AwT3NFd0JBNGJKWVF3MUtYQktLRlV1dE9zVkdvRWFOUlFPT3pRS0xVSURRMTEyOXNFMkNyTFFRTWlQYTREQUhDNktuQWtCRVRnUUoyOE5CL3ljMUplcXplaW9xSWVhazZQa3FwSzFOWFZnemhaMk13bVdOUXExT29NSUFvQ2NDNjdtb0pRY0N3TEVFcW9xNlk2c1ZoTS9aVE91dmtjbzBTd2tvQ1FHdzFzbHdEdXR6QzJhOW52dCt3REFPZWZtWWlMdVNvd1NpV0V5b3NJdm4waCtzNGQ3ZnJTZUFycit6K0RwR0V4cUR5bEE4dzZkUGprSnpSTE11TFFmVk5SWjQyRXlsSUdrallSdDc0Nkd5b0dvRTRPaFcvTlI3RktBWHZCR2NUUFhvSHVkN2tLRWhiKzUxR2MzRlNDaU9ZUk1GNm9ROFozR3hFclBkd2RPUG5rVEtnR3pVSzdyQzVYWGhzL3JJZXErd1FrTkhlckU0cEFCTW55UndnVlFIbkJhejZxc1hQd2VMQXhMYUdDQVNaZEtQcXUraENSTVJwUVV6SDJUTGtIOXRDV1VBczYyQk1HSXV0VlYwaysvZTdQc1dmUkp3aHRtd0o3MlVVa1Ava0oyZzFzZnBQTWErUG5CSUdIOGVlVjJIN2dLekNXTXFEMW5SajR4aXdvQVZTdSt5OU9mYmtEK21OMUdIeG1MeUs5c1pyakFIaXVKL2JzejlqOS9FZXduUDRWcmQvZWk3YTNObkdwWk1jMllkL0xYOENTVXdKUzhEaktQOUVpK3JaSDBHVnlQd0JsT0hEM2s5QVZua2ZJN1l2Ui8rbExwZHJ0dVh1d2U5WWlNRTFhZ1MzTVE5eERMNkhiWFgxOXJaV0g5eHpJTHV6WEsrMllTeFdsQWtBRVVTMTF1MGtKejdKdzJ1MVVTUWpzT2gzNDZIZzNhMU9DNk10UTlRdUxXcFVkUWVwZ1hGVCtpSUIzWGtDZ3ZReDV6endITnJRWlVIOFJRVVBub3ZjVDQwQWc0T0pyczNGeVl5SENZalhnV0FkSW0yVDNmSGllMHpVQm05VnFsY0k2YW12cm9LK3Z4dkhDU3NRRmg3cmFjOW5zSUx3QW85RUdvOE5KRkZRQUZTaWhEQWhEd0l4YnNpTDhrVFU3bjZxdjB5ZE1HejhZS2VvL1F4SDliY0QyZS9hN1poRGxuWEJHOXNLb2o1NENNZVhoaDh6eHFKZ3lBZ254U2hldnFEa0ZSZVptakY3ZUVRQUxKNnRFMWVvM1VhWHFoOUhmTDRiQ2FjQ3VJWm5JMnpNTzdRY2tBcndUeXJRc0RINXVDcHpsZTdGK3dCSzBHcmNMRVlIVk9QZmhYbVRzT29XRU9BQk9GandqZjlnSU1KdzZBazE3M1ZXZGcrWENCUVFuOTJ6OGY2a0F3ZWtOYkJIb3MzNDcxQ0V1NnA3M3doU2MrV29YK2o0MkhPWURQNkErYkRER2ZlRXFoTW16ckxSdjRlY2ZvTm5UbjZIVEdOZlRuV2VGSzQ3eHhzMXI0K2NFZ1ljVnlSajc3WnRRQ3dic0hOUUQrWWZ1UUp1ZXNXZ3lmZzZhakIrTEg5cE1kQU9ZMS9pZEhFQTlnVTNUYmpDR2ZqVVlSKzdxQnRCTGF5Mnc2MmdNL1dvMGp0L2ZHNm83MzBMYTBHVFprUkxSNTh1dlVQTCtZN2hRVDJYSHMrTElZM09Rc09CcmRCemNHb0xwUERiM200SDZNWHNSRmRKZ3JUUmhxV0xhc21YL0xsaXc0Qm1CVWdpRVFJRE1ZMG9wQlFVRXlpaWcwQVpRRlp6RVhGdER0YUdCVUNqc0lDd0xjMTAxNG9lUFJHeUxKb2lMamtadFJRVjIvdWRWSkkxOEdjTm5EUUdjT3V3WU9BQ2w0MGFpcWZvUWpuNXlBVU1QYjBWNGtJRGo5dzlHbGZTZzlEeW5hM0xYRlJRVW9Lek1uUU5hWDR1REo4N0FvUXBDc3NJSnM5a09qbVVoY0FLYzFFbkFTNG50RUFRUVFhREVrZHpweWJuOTJ3MnRMem1QVjdjZndhalVFWWhUd1M4K0pMWlBMMWVublpCV2lHa0QxSjhxUjBLOGUzRnFVbkhMNkk2U2FVQ3BCblFuVHlLdTc1TlFBSUF5REUxNnQwZjE2ZFBBQUpmOUpLNm5xNHFwTXFFN29xSXVvajdmam9nT2tZanZHWWtqRDB4RDhwQitpQjg0RFBIdDVmYVdRUFQvNmRRZmZLWU1xamUrZzl6dmRzTm10b090TGtLSXU1eTBOcTBybUZNUFlOY2NCK0o2ZEVYeXlKRUlVcnZucDJjdkhQalhMRGpQamtCVWozNUlIdERsSnBwWFphUG5CQUJSbVpsUU13Q1lNTVIzYjRYNjdHeWc1MDJRY0dQS1JYVzJEWXE5MytEWVFaZHFUcDJsMEJXWUVkWFI1MW9aT0h2MjdMTUxGanp6c1ZzbDViM3NiZFNOMEpUbmVUQXFCZ0xsaWMzT1VxVkNBY0p5Y0FaR1FDQXNqRVlqTkJvTkFtc0tVSCtzQ0h6MGVoeXIvd1VVQU90MG9ENm5CQkdxTTJEU01oQWV4QUJnRU4rM0o2ck9OTGFxcnRaUVdsS0MwdEpTVkZkWG9hNnVGa2RPbkVLSlE0SFdvVXJZN2E1cUhWUVFJSEFjR01KQXpRQzhRQWxBQ2FXVW1mYjhmOFpOSGRybjZaN040ekd5YngrMDV3cXhyZERpUjdCRzZjVmx2dE1HNGZkRmtCRDNsVmVpODBmYjBIdnhkS2k1TXV3ZlB4UjV4MnArODFHRFdqYUhzYUQ0bXZheDdGK0pneCtmUkpkMy9vZVJXN2FnNi8xRDNkb01vRXpzZ2RIN2ZrTEtrRTR3N1ZxRkgyNS9ES3g3djZZUHZJd1JYNjVBZUh3QXppKzVCNGZlMzNIVHpPdmx6c25uWG96aUpsbDBBcUNLUlB6SUxDUm1aU0VwYXlSNmZMb1dUVzhKYkhTdEJBWUd6aW9wS2U0TFZ5VWVEYVZVRFZmNGxvSlNxcUFBUXlsMTl5cmx3UVBnT0JZczY0Q0Q0OEJCZ05WcWhjbGtoc0ZnUUYyZERqcU9BZHVxTFVpWExrakt5a0tYTi8rSGxGN1hGZ3B5VmNCbU1wazhlb0FlUDNVS1o0d1VIYUkwWU8wMjJPME9zS3dEQ2dDVXRST0hLMmFOVUVFZ0JHQ3Fxa3FUUWdQVlR4VFZHbHpUWnplZ3hFSVFIT0NQNzJwTXF2Y2VjQmtyVEhtb09RZEVkcnk4U3o0aXZRT3E5dTRGRHdCT0F5cjI1eUJTVm1HMjZ1QmVsL0czL0ZmVTZWb2hxa1VBQUJhc1JVQlVSaiswbS9jc1V2ckZ3cGd2NytMTkl1Zi81dUQ4OXF0amJRbWp4NEhkdHhwbEJRYjNmV0tGcGRwd3llMFVHUW0yckFST3VYbWpyQXdCcmRJUkhoTUVDQmFVL2JUM2txSGFaQUxDNHBBNGFnSzZ2N1lVeXBKenNMcDNaazBtQk4zU0NTbjNQb3hPRDk0Ry9ibThtMlplTDNkT0FGQzNieDlZd1hXOHlsL3pFTmtoN2VyY2RwSGhzRnloc1ltM0tEVWFzSFgxVi9mUElXMFEyOW9HcXlrY3NkMjZJclpiVjRTM2FBWlZFSFBadGRLMGFkTjd2L2xtVFJNUjNBQkk0QWFBb1FMUHVPeHRUc0lUUUhCeWhHVTVPRGduV040Sm04MFZ0T3NDTnc2MGFTREtDcXRnaXdpSHRuVXFvbHEzaERva0VFR2RPb0JtSDRiZUlnQndvbkx2d2NiUCsyck8xNVhZN2k0WVdWT0tBM21Wc0xGMjdDbTNRV0R0Z0FBa0JDbmhwQ0FxeHRXOUJ0UlZoNDRCbUtpb3VIbVBqdXpkN1lGdk4rTG9rUmpvYTJ1UjBMRW5SaVJwL0FqV2lDaHFEK0xIY1hlQXI3NkkwQWRlY051QkdwZjRPeDlIM0E5MzRvY1JKNkN5bFlHa1BZUlcvUytwbGR6SkxkZzZjU3ZzQldmUWZNbGJjRG1hcXJGcjJGandDYWxRb3g1Rzh5MFlPRlFlaXNHaGN0TTNVTWNPUit2QkhhOThFeVgzUjc5L1Q4SCsyL3Nqb0VVTE9FcUxrZkxTYW5RWTZuSW1hTHFNUkt1V1gyRjl0OTdRZEJtQjBSOHNRdFNnU1ZDL2RSZTJURHdLeGxhUGdPaExEZ0R6d2YvaDU4VmZJcUpOQzlnS3ppQjY1Z0tFdWFmaDdJSTdVSFJSaTVBWU5YUzUxZWo2d2VNM3pid0tsemtuQU5BcXl2SFQ3ZVBBV01yQWRIb010MlJFQWREaDREMzNRRmZ2Z05GUWdRUGpSa09wYllFK2E5K0UyTUs2OWR6NTJQbllPT1F2RFViN2w3OUVxNTRKeUZ2eEtQTDJGTUdhV3cxU2NpOEtYOU1pYmZuL2tOemV0VmZ5UFE5ajF4T1BvT3lURU1UZCtUUXlwZzlHN2RaM2NQanRMV0FyTDhMQi9Zck4rMWVpeVgwTDBYbDhUM1I3ODNYc2ZuQXFTdDVMZ1pLcmhkbVNnQ0UvZll6Z3k2d1ZRa2puVWFORzNRSGd2ektWbEhmVFZJRlNTZ1dua3dvQVZTclZjRHFkNERpT0VKNm5uRUJodDl2ZHdidXV5aDlSUFFlZ2F2dEtiRHorRTNJaUF4QmxEVVBmRGQ4akpyNHZ1ajdRRWo4UEc0N1FXQzE0cW5FMURBUWFuQk9oR21uUWdRQUFJQUJKUkVGVVZMaWlDaW9tdUplV2l1V0k2cURYRzN4MW1YSW51SE9FNXdWQ0tWWFk3YmFKS3BYcWZ5N3JMNGR5Z3dVYWJSQ2l0SCtPY2EyNnVob3N5eUV4OGRxb2JYWjJEbEpUVzBtMTYvK29mUURnN0ZPalllbTZGQjJISllJVGdoRVVGWFRWKzdyQ0VrSVFGTlV3ME5GUlV3a2hJQlRha0VBUDljTldXUWtuVkFpT2o4SDFjT2RRMWdwemVUVlVNZkVJQ0xxS2VCNkJoYW00RXVyWUJHZ0NsVjVmV1dHcHJJVXFJaFlCSVo3SFlnMDFjQmdjQ0V4SWhFSjVrODNyWmM0SkFIaExIV3hteGl2YzQyWVJBZGJ5VWxCTkJJS2lRcTU2clpTVmxjMU5URXphQmNBQ1YybHhPNldVSllSdzdyTGl2SGRKY2ExV2k4REFRQVFGQlNFa0pBVGg0V0dJakl4Q2JHd3M0a0lEMGF4WkszVHVuWW5rcEV0QnVHeGRGWnhNTUFJamduNGJZN05ZTENndExVVlZsYnkybWdrV2k5V2REM29wYmNycGxISkJpU0M0Z25CTFMwdmlWU3JWM0V1UFN4VVNJc1BobDZzVGRVUWMxTmU0VDBCYzQ4R1dtcGg0bjlZSWJYekNkUjAzVVFjaTVGcHFiVEZxaERSUGJ1U3JRSVFrKy81T0hSWURkZGhOT3ErWE9TY0FVQVJGSVRqb1psMTVEQUlUa3E5NXJTUWtKRXo3OU5OUGN1Njc3MzRlQUE5UWliWGhVb0ZLTVplVUtoUUt3cklzZFdVa0tLQlNLV0d4cUtUT1lvR0JXaGhZTzhwS1N4RVZHWW1nSU5lRXFhT3VmUDB1YTJPNzFJVEYxVEpQQkRWWGFXOEhIQTRXSE9lUk1pVjZRZ21sbE1URnhUME9vS3Nmb3E1TkVtZjhIMUp1VGZGUGhIOWUvMUpDQ09sMHh4MTNUSERiMlRTVVF1NUlZRVJja0dVbGdPTTR3bkVzSEE0V2Ryc0ROcHNORm92Vm5TU3ZSMTFkTFNvcks2WFdmVmR0VzJ6c2k4cktTcS95M2lhWXpSYlliRllQcHNheW5GUmpTUkI0S2NIZGFyVU1aUmhtcnY5eVg3dUV0TzdtbndUL3ZQNGxKVEF3OE1IYzNQTkhVMU5iSHdiZ2RERzNTN1kyU0lueVVyb1ZXSmFEUXNGS1NmSTJtd3BtczlxZEpLOURVRkFRUWtOREVSRVJnZmo0K0t2a25ENkU0emd2RmRSVlc4MW1zOEptczd1OW9LeFUybHV1Z2xKS3liMzNUbE5vTkpySC9aZlpMMzc1NTBuTGxpMm5wS1NreUQya0tqZUpZdUFPL3hBRU1RVEVDYWZUU1RpT0E4dUtyTTBPbTgwS3M5a01nOEdJK3ZwNlZGVlZvN1MwRkZkYlA5SW5zTGxDTzZyY0txaEJxck5tczhtWkd1dlJBZHBkSlpOUVNwa1BQdmhnTm9CQi9rdDg3VkpkWFkzUzBqTC9SUGpsTHlzS2hhTC80Y08vakJhQmpWS3FFc0dOVXFxZ2xETHU2dGx5bFZUQ0ZZZkRCVzZYNnJZWjNDcHBGVXBLU240YnNCa01CbmZQZ2hyb2RIcVlUSzYyZVdMTFBIbU5OYWVUSS9JdVV3QklmWDFkcWtLaGVNeC9lZjNpbDMrdVJFUkVUTnV5WlhPU0Y3aEpzVzBBaUNBSU10YkdTYXpOVlpEUzdyYTNXV0F5R2FIVDZWRmJXNFB5OG5JWURJWnJCelo1aHlsWGVXOExyRlpQVURPYXpLZzFtS0EzV1dGak9ibkRnQkU0NjZ4WE51eE1YTEJ1TC9hV21TNGQyR25ITjdzUDRjbXZ0dUhmMjArZ3lrSDlWLzk2aTlPQzJ0UG5YY0drdjFNcVZyK0FnKzl2dSs1RDVDdC94WTdaeXozR2FEaTJIY2VXek1lKzJYTng1cnU5RUg3WEx3alFuOWlQOHgrK2d4TnZyb1RENjd1cXJTdHhjUFpqT1BMS2g3QmFaYi9rck1PKysyZkM1RStHdVY3UzlOWmJiNzNkRFd3ZVFic2lhL04wSkhneU54SGNyRlliekdZTGpFYVhTbHBkWFkyeXF3aFM5Z0MycXFvcVZGWld1aExjM1hGcUxoWFVKck9yMldHdzJNRVFWeUVQd2NrUnB5dG1qVmdORlFObmY3VDVZUzRxRVNOYi9qOTc1eDBmUlozLy8rZk1sdXhtMDNzMmdTUWtoQllnR0NEU0lRS0NvS0FDSXZZR25PVzhzNWV2RFU4NXozTHF6M1lxbGtOUkViRmdwQmNGUktRSENNMlFoUFJlTjl0bmZuL3NKdGtVVWhDVTAzazl6QU96bTVuNXpPZnptZmU4Nit0dDRLSDN2dUZBdldzTGY1VCtIVXR6Yk13ZE1Zamcyanh1WHZIenI5ekFDdHJBZEpRdDF6N2FWSGIwcTJSa1hSbVd5dHF6UHNUakx6MUw4TVV6OFN3aXl2bGlKWDdESnhFM1l4VFpqOTlNNW9iY1gzR0ZLakpmZUlYcXpEMWt2dnB4aTdtbzN2dzJQL3pqYTZMblhvZTJhQ09iN251MXVjSktIVXpNRUMwSDN0K2c3S096QkoxT2QwTm01dUhCSGxyYjZhS2tMYlMybHY2Mnhxb0VsMGxhWGw1QmNYRXhKU1VsWFJkc2hZV3VaaXpWMVZVdFRGQ3IxWUxOMWlqWUpQeTl0WUpXRkJBRkJORlZ4aThBWXVISjdOdVArTVZ5LzZqZWpFbStnTGtKQWl2MkZ3QldOaHd1NGRaSkl4a2FFOEg4UzBkZ1AzYVVnMlpsOGM4V2lyNWV3djZYbHVLb084bmh4WXZadi9oNXFpcWtSaWxGMXB2UHMvMk9POW43OGhJYVRGMTdwY2gxaFJ4YS9BamI3MzJFZ294OFQ2bEg5anN2c2YyT085bjkwcEtXbWsrSGd2Y0l4OWFhaUp2Y3A4WEhnNTk1ZzRSTEp4STFjUmFSS1NHWUNvdC94VXdFTS9LajVhVGVmdzJ0S3pDelAxeEs3TUtINlRGcUdJTVdQWUw5dS85UzVtSFZSTTIrbk9ML3ZvZEZlZU9lTmZUdTNmdEtXZ1lSTkI3bWFLUFcxbFJMNmhsSXNObXNXSzB0VGRMcTZpckt5c29vTEN6cW1tREx5M01WdUxlT2dycE1VRmRhaDBlVDQrYUFnU3VDSzFvczVybkh5NnVuSjBTRTRHeW81MVNkbGNTSUVJNlhWZ0ZPSEpLTVN1VytuS2hDSmRkenN0S3VyUHhaZ2svL1lZU05HWUtvQ1NJNExZMnd0TEhvOWE3NVB2SDBBbzd1cVNIK3RsdlI1RzlrdzkwdmRrbGJMbHJ4R2VvaDA0aWRFTWRQMTh5anZNSUJPTWk0ZXc2L1pEcEpXREFmSC9NZU52NzEzMTA2WDkzUFAyQlBISTdmYWJJcmk1Y3RJanUzRi8wdUgzWU9ac2hDOWRFOC9Qc25Vbi95R0RhdlJBSWl5cW5KYW5hWGlCRXBCSWw3S2M2eUtSdnFMRUd0VmwrY241ODNtcWJjdG1aZlcyTkRKemVkZUl0QWdrdTQyZDM1YlcyanBLV2xKZVRsNVhjczJHdzJHOFhGcmxyUTZ1cHF0d25hNEJFRlBVMTZoOU1weUxJczN2SFFZeXFOUnZNWHM4Mkd0MWJGcDJ2V2NzMktuOUZyMU5UYUhZQTNJK0tEV1BGakJtWDFEYXpkdW85Y1djQnNkU2dyZjViZzIzc1F4bUZKaUxvQUlsSlRNYWFtb3ZNR0tDTjc1UzZTSG4yY2lPUmtCaTU2Rk9lNjVWVFVkMzVPLzZsWDAzZktLS0ttMzBiOE1DYzVHektRUzNkeWJLT1RvWXZ1SWlneGtmaTc3MFhjc1lLcWhzN1BWM3Z5Sklib21IYS9hOWkvZ20ydjdTTnQrUkw4Zk04Rmxib0pteGxVbW1LMlRCeExabm91YWowNDZqek5CaDk4WW5UVVpSVXJHK29zSWpJeWNuWktTb3JPcmJXMUNTUTBtcVh0cFgrNHRMYkdLR21EMnlTdHByeThuT0xpSW15MjlsOUNhcGNKV3RpaUg2aXIvck94WktwWlcydE14SFU2bmE0MmRwSWtDSUlndlBMMFkvT0JWTDFXUzRQSnlkWFRMK0VTcDVxOU96ZmpwM0hWaE40Mll3cld0VHU1ZldrV0EvdjBaWHpRQ2J3VmRvOXpEMGMxRGRYK2VJZTUxU1R2VVBTKzFWZ3FnVTc2MUJvOGtpSDF4a2pLSzh0eGxOWml0UlN5NjlZYm05UjlyNlFrc0FLZFVQL0xPT0EwTk9rVk83WVJjUEZzQWtQUEZWZThBYTBlblBZSUp2NjBEMDFJRUQ4c0JyV3Z2dTJmU2s1bDM1eEZpS0k0Yk0yYTFaTkRROE8rQmV6dUh3ZHVXbkZjeWJ1Q3V5OXBrNXp4MU5xMFdsY2dRYWR6QlJLcXFocE4wa0ppMnluZlU1dk41aVk2SWxjdHFHZVQ0NWI1YWc2SFEzQUxOY0h1Y0FtMWpBUDcvVlFxMVh5QVBxR0IvSEswSE5Gck1LSEE4ZUp5RW51NE9oSnB2UU80NS9LTDNTNmFRaVpzOCtYK1VJVmw4dXp1SUFGQmNyYWtIRk1INEIxUVEwT3BEZUswWUNyRFhCZUFMcWdMT282SHI4dGNXSVIrc0JGMW1BRXZRenlqUHY0VVF6ZmZTMzZSY1pnM3RKK0hGRFR4V3BKc29lMGJrU1g1NEIySXp2ZlhGRmZxQ09qZmc1ck00K2d1R0FhbURLcEx3eGdRNzl2Q1hHMG9NQkVTRjludUdKeGFmd3lCdnNvK094UFBaM0R3N0VjZWVmajdaNTlkYkFQc3NpdzczQXdnVHJmVzFxSjFuOXN5bEp1anBEWjNsTFRSSksyaG9zSVZTQWdQRDBldmIvbUNFcHZvaUtvYTIrYzFlRFE4dGpiV2d1SndOUHJXSE5oc0RnQUJXUmIyMURodVhiYi9WSCtBMkw1OTZWZWJ3L1BiVDdCbC8xNCt6WktabGV3cUhpNDZsY3RIZTA2dzZlQXgvcjUwRTRNdUhFcWNJdGZPc2xJU2c2LzZCSm52ZlVIZXVnMDBtQUJDaWIxaUdJZWUrUWZGR2ZzNStNUmlWSlBuRU96VCtlbHExbjdNMFRYYktmajJIYkwyYU9nNXNUOUNXQ3A5eHRyNDhmN25LZDZmUWRIbU5leCs0WjB1cFpqNGpSaUprTGtIVXpzZWlNcE5Lem0rZW5lN3grMjVkZ3piWDE3VjVXa28rdllqam55K0FhZTluS3dQUGlSNyt5RUFlbDEzUFRsdlBFUHU5enM1OFBpemFLWmNTNmhIRWIxY2NZQnkweUFpK3JUVkdnL2NNWVh2bjEydTdMRXpoQ0FJZmUrNzc3NUp0SzFHOEV6OWFKRzA2M0EwK3ZXYlRWS0x4VlZMV2xkWDU4NXRLMjgza0tDYU8vY3FqOXkxS21wcmE5cHBlbXpGWm5PRllwME9SeE43eHlQdmZSYWs5dlo1M1NwcWc0WkhCNEhLaTdSK1VSdzRsa1ZHcFpNN0x4M0hNSGVmUTZmTndwYk1iUGFYMURJd2FUQVBqSW5uOStBTk5abE1PSjBTZm41KzNUcXV0TFNNNE9EZ2J2VUlQWk5qem5SOHJ0M2pqWEhTaFppT0hxUWh2d2pEd0F2UmV3c0VqNW1NcXV3d2VhdTNJTWFPWlBpamYwSGJoWDRUd2VNbVl6dXdscExNV2dZKy9VL0NZL3dBa2ZBcE0xQ1ZIaVF2ZlFPMWhiVUVqeHhMVUZ4azU1Ukgra2pzR1V1cDhSNURXSytXTEMrU3RRRjFXQ3hCY2ExcUFhVmlEdi96Yll4M1BFWlliTmVZWWFwKzJrUkRyWmF3NFFNUkdreUlmajBKN20xRUYzY0JJVkYyVHFXdlJZZ2V6ZkJIRnFEVk5JKzY2SlBYYU9nMW5jUXg3ZmM5OVJzd2pPRDRTRVZLbmFuT3JOTVpOUnJOK2syYk5sdHgxNDgyVW9rTGd0RFlXZDZ6azV3Z2lnS2lxSEwvaU80T1Z5cDNseXMxV3EwV25jNkxvS0NnRnZSZ3dqZmZmTzNSeTZCUnVOVzZtVHdhazNQTldDeU5YR3NPd2VsMGlySXNpemFiOVY2VlN2WHMvOUxrbnU5OGJHYzZ2djhWMkxJMnNQSHBINW44d2VOZGVySFpNcjVnMVNNL00rUGI1emluSGxsSEJWdXUrQXVEUHZ5VW9FQlJrVUxuQ05YVjFmOEtEQXhhaVl1enpTUUlRZ011RDYxTkVBU0hJQWlTU3FXU0dqbmJkRG92V2FmVDQrMnR4MkF3NE9Qamk1K2ZIMEZCZ1lTR2hoRVZaU1F1TG83Ky9mc1RIeC9mYklwNkJnemNaSkdOR2hwMnU4T3RFam9GZDNwSFUrblVuajI3ZlZVcTFjM0tVaW5vRHJUeEU1bmFSYUVHb0UyYXdlVmZMZWFjaDVuVXdZei9acmtpMU00eC9QMzlyN3ovL3Z0OEc4MVJkNFJVUmF0U0szZHVHdzZISzFKcXR6dXcyZXdlVVZKWGJsdGpJS0cwdEpTR2h1YlF2T2dxY3E5dlpYcTJ6RmxyajJ0dDRNQ0JOd0lLdVpXQ2N3dFJqYWhXaE0wZnlOY1cvK0NERDA1d0M3WjJmVzJ0T2R2YTVyWlpXd1FTWEVYeXJrQkMwN1pwV2VUZW1LL1dOaExxWnU0UUFPRzY2NjVWcVZTcUc1UmxVcUJBUVhjUkZCUTBvMWV2WHRwMnREYXhVV3Z6cUVob3lwMXREaVI0a2xJMkZzbTcwajhzRm90THNMbTBOVmVSZXp0Q3paT1NxRWxiZS9mZGQ2OERCaXBMZFBiaEl0VlRVZ29VL0tHMXRnSGJ0bTBkMHhXdHJYM05yVkc0TlJiSnQwei9BQkJicG5mWVd2alduRTZuTzIrdG1Sa1hFTlZxOVhYSzhweEx3ZWFuVElTQ1B6VEN3OE9udVFWYW85YW1waFVaWldNMVFxTU1hdWxyczUwMi9jUGhjS0J1ckFkdDFOWWE4OVdhS3d5YWZHdTRLYituQXFPcmEydXBzWXRFQmZyUXJndkVLWU9xZFFLQWs2S3FPZ3pldnZoNXFaVFZQUTJLMTN4S1ZiRVZNYVFYZmFhUDZkSXh0dndqbEJTSzlCamVwOHZYc1JjZklXdk56OGhBK01RckNJbytWNXFpaE9Sb1cwMHFxTlZucFN0V2l5dFY1Wkt6dDR4ZUYzV0RCcnd1bjJOZmJFUUNBbE12SnFKZjEraW5LN2F2UnRWN0hBRmgzbDIrVk1YV2RFcXp5aEYwNGNUUG5jTFpTdVdVR2lvbzNMSU5xMG5FZU9tbDZIVy8zWDQxbmRoTnJUV1V5S1NZTGg4aml1S0k0OGVQSmJzcHhCdUw0KzF1cmMzcE5rZWJORGFuMDRuRFpzRlVYNDlUcTRYUVNMeTh2RnJWa1RacWJTV0lybnJRNWdvREQyMnRUY0FBRUxScTI5VjMvZnNEcHIzMUxYLy82RXRHdjdTQ0hhV045WFpXbnZ2b0MwWSs5UjhTRmkzSHMwVFZZYXBnL2lzZnNlQ3p6Vno2NGxJK1BGS21TTERUUU9WbFFGTnpoRDJ2Zk43bFl4cjJmY3UrRDlaMnp5UVF0V2dNQm9vL2VaSEN6S3B6ZGorbjNubVlsU2xEV1ptU3pDZkdhRDRmTXBTVktVUForTVJIditxOCtSOHQ1c2lHSXkxZm5RVzcrUG1GLzNidlJLSWFqY0ZBNWRvUHlmN3hlSmNQeTM3ak1Zb09WWGZ2VWw1NnRHSTUrNTk2bmJOWGF1OWc5MDJYOE11bVE1aEx5NUhPSVR2SndZZHVvcml3NVFVcU55MGo4OHRkM1Q1WGJHenNSRTl6dEZXRVZHZ2RTSEE2blRobEdXdDFPZldWZFUwVkNXYXpwVWxyYzlXUmxpRTJVaEo1Q2pWM2hZRm4wQUJabG9YcTZxcUJna283ZThHc21XeC9ZQjRyNzc2T0IvcDdzV2pEd2NaSGtza2pMMlRWZ290by9lNWY5ZjJQMVBVY3pEY0xMMmZsTlVONSthdnRWQ2owTU8waWRNS2w5SnFjZW5ydHJLS0UybE9GT051WlAyZERIWFg1cGJTaDhaUnNtRTdsWURGWm1qNVNoOFVUUDNzV2dWRytwMzFnR3ZKUFVWOVN4YStoQmUxNTIzUE1PckNmV1FkVzRlY2R5S2kxKzVsMVlEOFRuN3EyZVhpU1M3TXo1ZWRncWJOMHJxRTRISmlPSGFEbVZEbVN3MEdiOXJpU2picWNmT3kyTG13eVF3UzlaczhpTlBFMHJlVWNOa3o1cHpCVnRNL2NhaTB0eEZ6VDBNNWExRkNiazk5aW5RS0hweEUvNHlKT0YraVZMQ1pxYzNLd05saTZPTHNTa2lPZnNuMGlTWXNlcFA5ZmJzRGdvVUE2VFJYVW5jcHZkNi9JQUE0TGRUazVYWm9ueWVHZ2V1Y1dURFUyMTV5M3UvZUsyeks5dUs5aGJXaFpjcUxSYUM3YnVIRkREdytOcmNrY2JmSzF1VnNPdUlRYWd1anREUm9WRG1kakxha0h0VkZkRGFVNTJSUms1NkgyVE85b0xwdHk0blJLU0ZLenhnYUlCb1BoS2hCSjh1amczalBJSDB0SkkvMlFtaUc5b3FBbXA4MFU3c2dxWk1KRll3RUlqdWxGUDhkV2RwWTV1U1JjTVVtN1k5THR2R29NWmVaSXZIMGxxck1iU0gzL0U2TDZ1SnJ1Mmc2dlpzMnN6V2lvd3F3Znh1UlBua2V2QmZPeExXeWUveUFxWXlMVzdPTkUzUDR2aGw4L3JzTXJ5WFc1YkprOUQ0dHZMN1J5Slphb1NVeDdwYmsvaiszWUpyWXVXazd5RzI4UjdQOHI3K3JJbDN5eTRITVNldFZSVmlSaHIzSXdldjFhTEovZXcvSFNrVnowMkN6QXdwYVIvWWo5T0pzWXpRN1cvZTFGTENjT1lqYzhSZlYzQVJoR3ptSE1QWFBjNW1nV1c2NmJpNjJ1bnVwU1B5YXZYMEhBR1ZyWjloUHJXSFhOMC9qMjdvVlVmaElwYmpvWHZmRWdXcmRneW43MVhuTFZLaXpabVVUZS9SS3AxNDhISkU2OTh3aTdsL3lFZjN3UXRmbDJSbjY0alBEWWpnZFJ2Zmw5TmovNEx2NzlFN0FVWkJIejRGSUdUSXpyOEppODkvN0I0VzkyVWx0VHhFL3o1cUpXQnpEcy9YY0o5b1dDOXg3aHB6ZTJFUkFYU0hXdWpaR2ZmVXBrbkd1eENwZmN6NEdkRW1MMkxwd2FiNnoreWN6ODVKK25kUTJVci9zUHU5OWVRMTIybVlwN3J1YUVRVVhQK1UvUmYvSUFBTXo3dm1iOXRjdVJLbjVCNm5NTlU5KytGeFZRdldNNVA5ejlQUG8rZlRFZCs0WEVmN3piZEF6QThPR3BZNEZUYnEzTkJySU5CQld5N0pSbFdaUkFscHhPV1JCRTFHcVg1aVpMTW9Ma2JKSCswVkJ5Z3IwcnZpUXkya2lKMUlDNnRXK3QwVkhuMHRhYVRkQnZ2LzFXSjRyaVZTMVgzY1I3TzdPWU0rbXlUcmFIbGJJNkJ5UDhSRjc0YkEzSm8wY1I3Z05sdFdZSTkxSGtWZGNOR1lhOHV3YXRyK3NCS2ZyZ0VmYS9zNUtvRjI1eHpYSzFscWxydjhTZ3M3SDdxbEZrZnIyZmxObUo3UDdyMzRoKzdETUdUZXlEVkhlTTc4YmVTc1hsV3dudTREbXIzNTVPVmZBVXJ2ajRNZGZidUJVOWpMT3VsSXI5aDdDZEpYdEtQckdId0JjMmt6cmNDQTRMVHFEd2RDWjA5QWltckZqQjhTZm1VaFgzZDFKdmJLbmRTcVVtQnE3OW1tQi9rZDFYRFNmMyt5d0Nwc2VmbVZzZ2FnU1gvcmdWalJyQXdyWXBROG5kUFovZXcxMHZFKzNnUzVuNDFEd2NoVnY1YXNKakpNN2FnaUY3TlR2L2M0eUxOMi9DejFlay9JdG4rT241OTVuK2VzZXRRTEtYdmt2Y294K1FQS00zSU9Ic2doYlY0K2JINlhIektWWWxYTTNJRlNzSWFzeGtyc3ZnNTMrdVovUzJyWVNINmNoLy9XNTJQZmMrbDczVi9IS3Eybm1VU3phdEl5QlloOU5pNmREZkdUSjVBVk1tTDJEcmhEaWlYdjJjWHIxYnBreWJIVVl1LytZNTFKWWMwZ2ZOcEt6aVhpSjhDOWw1K3o5SVdycVJYa21oMlBPMzhQWE1wNGlidUJ3M1ZTQStQb1pwOCtiTlc3RnMyVEtyeXh4Rkl5RGJaUkFGd2ZXZjRDS3p4ZWwweWs2blU1QWxXUmFjVG5jdHFic0JqQ0dBNk5temlJd01wMmZQQ05TTlVWQ1hHZXIwU1BGbzZWK2JPSEhpYktDNXo3eGs1L1V2VnVOSVNHVkIvK0N1ZW5VdzZEUm9SRUdSVVdlSW11MHJ5Znc0SFZORkhZN3FFcVMremU4YVE4cG9ERG9BTFNHamgzSDh3Q0dZQXFXSHpLaTJmczdlSFNBaklUdnlxY3F1SjNqUTZWOHErcVFVeEl6YjJISzNsZkRVRkhwT200YkJvekpNUDNRdWN3N1BQWHMzRm5NaHZZYTdUVUcxN2xmVkVhdmlrd2oyZHoxNGh1aEk2cXFyei9oY2dtamh4UE9MeWQ5NUFMdFZ3cHhUUzBCbERlQVNiT0VqUnJtR2JCeEdjUEJKS3JNc21IZHZBMi9JZXZsWlZ3djB5aFBVSFBUQzZYWWVuUTVoSTBieTR6TjM0RGh5Q2NHcFkrazU0WUl6SHJmbFdBYm1xR0dFaGJtaUNCRmp4MUM3TkwzRkdBSW16aVRBWGN1dDB2MjZhRU5neWhCWGRZZ3VBa05JRFpaYWNKYnZvcnpHaTZBdi8wUFZsNEJrUnF6TXBLWUs5TTBpSS9yNTUvK1Z1bXpac3MyTjVxanNNa2NkSUR0bEdjbmxiNU5rU1hLMjB0ZzhvcVJhTThVL2JhR2lwcDRDalJmcVJoUFU2V3lkNHRHY2tBdUlhclZxbHNmN21rOVhyV2FyR01mN1UvdlRlVjY0RjZHK2FzcHFuZnhseGtWQUEvK3BoMUEvdlNLcE9yWThXN29xVHE1ank2UExHZmZGZndtTERhYnE2eGZaOHJXdEl3WFBkUkpORUJIVHB1TGpYcWdlVTZmakcrL2Q0YlhVMGFsY3VtMDlSVnUzVXZqTlV0TGZXY3ZNelcraFBVZTNLdW9OcDlsSFV0Ty9jaGQ1U1FWUEIxWTNpaGJhZTkxbXYvb1ErYVVwakYyMkNKMjNtdDNYRFVPVzVOT2Z3WDA5cjVqQlJFMmQ2djU4S2oxdkRtZ3hsUGF1RlhYYjgxeVN0cCtpclQ5eDdMSHJLYnp1VlVZdFNEdG4yMHZyYy9hZVAwRThUZEdiZnpSUlU2YzJsY1QxbURhN2pWc2dMQ3dzRGRqV3l0Zm1tYkFydTFJL1hKUkdzb3dnT0oyeVMyYTUzR2hWbVlkQk5qSmdTaHJSUFl5SXpjbTR6dmJTTzVCbFdhaXFxa3dTQk9IaVJuOVordnIxZkZZWHdqdFhwalNwbEoxdG1aR0pSallmeXdhZ0xQY2t4OVNScElZcS9yWFR6bGh3Q09yeVhFd2Vjc3RlVklRYzJaZmcyR0RBUWQ2NmxvMUhUSHUyVVc4QnNGRytiUmVoQXdlQmIxL0MrcGhwcUFzZ2JHZ0tZVU5UQ0lpTFFXTm9Yamh0U0FoMUJTMGJxRGpxNnNBL25PanBzeGoyMHBPbzg0N2k2ZnUxWlcxbCsxMFBVMWwzN3ViQUt5Q0FCamY5czdQNEFKVkZMY21SMUhvRGxzcnlzL2VnaHdSaE90V1NicnFob0lDQUljUFFlYXR4Vmh5aWFHZExQcm1TSFZ0ZDgxVzRpNHFxM2dUSDZRZ1pQaHByMWlIMC9ZWTB6Ym1mTWFoWm1CbUMwRHFLTVZXMWxOUzJ1am9NOGNrazNMaVE1UG1YVVgzMHhCbmZpNjdQSUhRRnV5Z3RkUVVoaW4vWWlsL3k0Ri9OcUtQMjFXTXI3MW9FWFJVM2pCQnlzUnBpbStjaExncE5xN2VqV3ExTzI3QmhmWTkyQkp1cTBXSnNsRWVTSkNFTDRMRFpXblMyc3BnYUVQejljVGl0MUpkbm8yNFVhbTJyREpxQ0JvS1BqOC9semNaMENZczNaVkdyOHlMdFdWZW9YUnZhaSswTEp3RHc1TnNma0Y1c284N21ZTWFpSlNRTkhzYUhNd1l4ZmN3b3ZudG5GWmU5ZVpLYXFscitldmswZ3BVU3dOTUx0ckFSREo0Wnd1b0xSNkEycG5EeHQ2K2hIellWSTIremV1WmN0R0lkdXFDUWxvSWdTT0tIV1planBncUw3MFFtenhnRXdOQlhYK2I3K2RlUzkxWUNhbnM1OVNZams5WXZhU0xRN1hYTFBXeTYrVDYrZkY5SDNOOWZKUG5Lb2RUditJaU4vL2NKZ1gzak1HZG5Fbkw3US9oN3ZKU2Q1U2ZKL3V3clloNWJUTkE1U244TG1YZ0Zxbi9PSVgzbVQ2ajlJdEdGdE5SempKZGZ6OUZiSCtLYjFhL2dOLzU2eGo5NjdhKzZYdlRjQlp5WU41K1ZJOThrNHBxSEdIbkhOR0t1dVpYMUN4WlF0M0VnbGhyUUo3UmtYYkVmV00yYTJXdXdaR2NTKzlqL0k4QWJHRENWMUp1MnMzN0NPUHo3eFdJK2xZM2ZwUTh5OXA1TDNVOXlUd2JmZHhGYjAwYWc4b3RoVFBvS2duM2d5RU56eUQycHh6ZFVTOVh4VWxMZS90dVozNHp2SUZJZnVwanQweWZqSHg5TWRiYU5rWjhzK3RWcmtuRFRRcmJmUFpOZi9BM0UzUDBTQTZjbmRmQ21NSkw2MmtOc3ZXa0tKK0w3SWxlVllnbEtaZnBIaTlvSTJHSERocVVDdVo3Q1RaWmx1K0NLa0VxeUlMak5VUW1WbHc3SlZFOVZ0Z2xiWURqYVdDOTA0VVpxTTM4aXEvd2tKWUlPWWZEZ3dlNytCbVlzRm90Z3RWcXgyKzJDdytFUTNDRlhsZFBwMkFQMFB4dTJWVWxWUFhxREFUL3Q3Nk90bmUrMFJaM0RnU2svSDFWZ0JEcERXNytJczZHT2hsb0xQaEdocmN3ZGlZYkNmR1N2UUF6QlhaTkVrcTBCVTNFNW1zQXdkTDY2MzJXOVpKdUordEk2dktNaitMMzBlMmRESFEybE5YajNqRWJWenN2WVdsYU1wUE5ENzl2U3ZKY3NKa3lsRlhpRlJhRFZkVzBQMkdyS3NOWlk4VFpHb3pvTGxDWk9VdzBORlNhOG80M3RqdjIzY2FuWU1PVVhJL3FIb1BkdlA1bFpsdVdqb3FpNkE2Z0g2bkJSR3BrQmk0QmdGMFRCS1FpQ3BGYXJaWTFHSTN0NWVhSFQ2V1M5WG8rM3Q3ZUwwc2hiajQ5V1QxalBIaTZOcmRrRWJkYlljQ2ZJbVV6MWFXZEhxTGtjSHVHQlNyblFyelFHTUVUSG5sNzk5L2JGMTl1MzNibjNOdmJzM21wcHZmSHQyZk4zdlZ0QmE4QTMydkM3amtIbDdZdHZCNmthWHFIdFZ5cUlPZ08rUGJzM2RxMS9LRnIvc3poMmd6KytCdi9mZDh1S1dneWQ3Q05CRVBvZVBKalJkK0RBUWZ2Ym1LUElUbVFrUVJBRVNYSnBiWTJCQk04NlVvY2tJMm5WMkd3V3hNYkdMTTI1YTgzK05VRHc4dks2VEJFbUNoUW9PTmVJajQ4ZjBjb1ViYzM0UVhPWmxZU243UElza0xkYWJZZ2V2alhCN1ZzVFBCeDJvaUFJMDVVcFY2QkF3Ym1HWHE5UG83bjZvTjBXZmE0ZnFaSDVRMmloc1RWMXRySTFhbXlTUitEQXBha0JndG5jTUJXSVVxWmNnUUlGdndHTVI0OGVHVWpMOHFwR3hvL0cxRE5Ca2p5TDQ1czF0MmIyanliQjFvWnp6ZVhlMEdxbktuUDkyNkswdEpUOC9BSmxJaFQ4S1JFVEV6UE1VMk56bTZPcVZ1Wm9DNjQyTjRWNEM2MU5kQWNNbWxTN3hnUGRacWdpMkJRb1VQQ2JRYWZUalcrbHJiVm5qcmFRV2EwRENYYTdIZEhUREczVTFBQ2hvY0Uwb1gwejFNbk9qTU1zV3JtQmU1ZHY0djE5dVI3MEt6SlplWGw4dW0wdnIyNDhTSzNIVVE1ckE5c1BIZWV0alR0Wm5sbWlyT0J2aUVQM1hjR0pIY1hud1Vna2ZyNTZQQVduL2poemF5dk5wYnF3NGd5UHJtUGJaWmRTMnFYRGJWUmxITUorRmhoeGFqY3RZY01UUzgvcVBNZ05GWlFleVczeitjL1hqQ1V2cDN2bWFFYkdnVDRlV2xzTGphM3hweVZYbTlRbVFpcTJNa1B4TUVNbnRyODM2L2hxYnlGOVltUEV6UktVQUFBZ0FFbEVRVlM0dEg4VW03ZHM0UEVmR2tkdTVyMzFlemhTWE1KYlAyUzJFR3lsZVRtOHN6ZWIvYitjNUl0amltRDdMV0V0SzhCdXRwMEhJeEdKbnJjUXY4QS9rT3RnMVN2c1diTCtqQVc5cFNBUFIxZTZUVlBPanF0dnBOcDhGbDR2cGtvYXlzNHUvNTZVK3dNYi92cGltODh0ZVRuWTdkMDdWNjlldlpJOU5iYlRtS040bXFQTldwdExzS21ibzZHTlRCNHVNMVFVeGZZRm14akE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5TekdjMEo4UEV2cXplc05hUHFoVGhNMjVRUFhPZEk0dlg0OGREUUVqcDlIL3l2Rk5TYnEyNHFQc2UreDF6RlpmRXY5Mk55RkdYOEJDM3JJUEtkcDdGTHRkVGZDa1dmU1pub29BVlArY1RtV2xub1k5RzZpcEZJbTc2WGFNU2U0aWRVY2QyZSsvUStIK2szakZENkgvd3B2dzl1NDQrOU4wNkFkT3JOb09vaGJ2MGEwRWI4NStNcGQ4Z3FuYWlpRitDSDBYM3RBNUEreHB4bEN6ZHcxRkJmNzB2WFFFQUpXYlYxSWxKUkovVVJKbDZ6NmlRVzJrY25NNkZtY3dDZlB2SURUVzMvMndsM0w4blhlb3lDckJrRFNPL3JkY2lWYmRxSTJVY2VLOTl5ZzdVb0JYejBRU2JyNlZBUDlxTWw5K240bzlHZFRWbGJGL2NUWkNaREtEYjNSNWJ4d1ZXUng5OTBPcVQ5VVNNUFl5K2wyVjVrNHd0cEgzMFZ1YzJubVNnTFRKZEVVQnEveCtCYWQrM0kvWlZNT0pGeFpUb0JXSm5MT1E4SGgvMS9tV3ZVdmVqcU9valFra3pwL2ZWTmplc1FKWXpiR1huNlU4dTRySVdUZlRhMHkvSnMwdy8vUDN5UHZoRUtxSVJCSVhkbjYrM0E5ZW92TGdBZVRpWFBZdFhveWdDcVQzM3hZMmtTYVlUK3hrOTVKUHNYdEZNK0NldS9Gemw3Qlk4ak00OXM3SDFGVTdDSjE2TllsVGhpSUEzdDdlSTREUFdwdWlqZVlvc2lRNUpVbkE2VVFscW1WSkl3bE91MDAyMWRSZ2t5UXNYdDZJalZMUG5aU0xMQ05VVmxiMHA0dk5XbzZVbHBOb0RGR2t5dThNdVdRbkcrWS9UK2pNYStsejNSVUk1cG9XUklBbmwzOUY2Q1d6Q2RCbHMvWEIxNXBNb1pwQ08xR3pyNlAzdkdrVXZYSTdCOWNjQTZCbVZ6bzcvdlk0bXBScHhFN293WTZycjZXaVJnSWNaTnc5aDE4eW5TUXNtSStQZVE4Yi8vcnZUaDlRVFhnc1lXbWpLZm44VlZxU2JUU3c4NmJyY2ZhNW1IN3piOFEvUU1MYTZSdis5R1B3Nnp1SXdsZnY0OFR1UW14Wlcvbmg0ZjhRTUNqUnBmT3MvNHdkRDd4STRPUzVHQk1kYkxuMlRzd09seFd5ODVvWmxKbU1KTjUySXh6OWpCK2VXOTVrb2Z3MDd6SUtDbjFKdUcwKzRiMjhxTTJ0QkxVdndlUFM4RThNUXh2ZGw3QzBOTUtISnJwdktaOHRNK2ZRRUpCQ245dXVvdjdiWjluOXdYWUFTajU5bGwyZkhpTHVwaHNSOXEya3JMRHp5bjVkM0VEQzBsSlJhNzBJSEpOR1dOcDRmSUpjbklpRlN4NWoxNmNaeE41ME13R2FrNnlmZDErWG1IbnIxbjFLUStTRnhNOGN5YUU3cnlMM21JdEVNK3U1djdCL1ZUYXhOODBuTkt5VXpkYzkxT241L0llT0lXUllFdmhHRUo2V1J0aTRDOTAwVHk2dE5HZEZPc1paMTZBdDNjSlB6eTl6T2JSSzk3TnU1aTJJZ3liUlo5NWxGTDU4QjRjM1pRR3VaaStyVjM4WDJaNmZEVmtXWkFSQkVBUVFhSEtqT2UxV25LalJCSWVpRGRDaGJsM3dqcXMyZEh4WEhxWlQyWWQ1ODdDVGQrN3NwMGlXMzl0NzFWQ0p3NkZIYjR3bUpENkNrT1NXMzhkZGR5ZlJJL29qUjExTnh1VWZZQU8waERMZ3J6ZFJzWDgvNW1vYi9vUGlLTjkxRUthNCtpWUVYSHdOZmFhTUFrWVJ0K0k5Y2pjZEkyaFVKY2MyT3BtNDZ5NThOQkIwOTcxa3BWNUxWY085QkhkQS9hOE43WWt4MU1ndmJUUTdLNVpxSzRGaFlRUU1TQ0o0WUhMblFyeDBad2RqTURMeXRhZFpjOHR0NUJocTZmdmlSd1NITnBjelJjNWJTT3lZWVRCbU1Ma2ZEaUIvYnhVeDZ2WGtsdmRuNXIxWG93TDg3NzJEcjJlOGp1WFJPWWdacThrcFR1REtyMjUzTVpza045ZEdocWVtWWo4VVFaazJIbU5xTXlkYzFmcmwxQmluTWY2R2k1R0JRWGZkeUtwRlh6SDh4bEhrcmxoSjc3OStqZkdDT0l6OTcrZkVoMWQyZXIvZVBmdmczZE1YalVaSFNHb3FvWVptb1pHOTRpdjZQdlE5eGdzaUlQa0pjcFplUU1HSmw0anIzWEVKbCthQ1MwbStLZzBCNkRmek0zTFRmeUFtZmpCSGx1d2llZE9QaElhb2tmdmZUKzdTRVJSbE9ZaUpQMzE5VjBEU01IeFYrUWlHdkJiejBJamVDLytPY1dnZ2dmWlpySHJPVlY5ZThQbjdhTWJmU3Y5cG81R0FnUXV1WU1meWRKTFNYSngxS1NrcC9ZRThUM05VRUlTbVpGMEVRVUFVWlVIRXBaaHB2TkQ1YW5BNnJOZ0ZMNWRnYSt6dTN2aWpVcW5HZGpiWkZVVTVMUGo4QUl0dW1FbWlRYWxtLzcyaGlwdkV5SHN5T0hEbkhING90R0s4NXUrTWVHQnVVMzJsVjZDcjVGM1FhUkVjRGlUQVdaSEoraGszNFQxeUtnRVIvalFVMXlQNU5GTlNlMGVFTnYyL1BqU002c29TSEtYbFdDMkY3THIxeGlZYUhxK2tKTEFDM21jeThrQ0d2Zm9NKzE5OW1DLytua2ZBaU1zWThjcVQrSGF3cHh5bFJSMk9RZGRuUERHSml6aGVNSmp4bzFvMkdOR0hOZEovYS9FMit0TlFYazJEc3hpcE1vTnROOXpZUEtvQjhVaUF0YkFZVFV4OHQraWE2b3Z6Y1J6ZHc1WWJtdnNuQlBjZTdqcGZhUjFCWVdGdVZTd0NROEN2S1FnMVl5azFvMnUwbU1SQURHRmdxNndET3VaSTFJVkZOYmtwZE1Zd0dySXFvYVlJczluTW9YdHY1V2pUbStBQ1ZOamM4dVhNL0tycVFKZFRWYVZSSVZ1dHJwRVhGV0Q2OFFpYmI5amNyUGtOYVM1eUNnZ0lTQVkyZUdocnJoOEJBVmtXSktkVGtKMlNJSW9xSkVtU0hlWmFvYWJVS2h0OGZCRjB0cllhMjczMzNxc1NCS0ZEM3VpNmlnSnUrV2diZDg2ZHdiZ0liMFdxbkJkUTAvT1dCK2w1eTRQWVNqTllOMjQyUmRmT0pkcllnZTltNHdvY1EyNWc3TDl1QitENEU3dndERmcyRkRjMzNER1hsZUoxWVRqcU1BMWVobmhHZmZ3cEJ2WFpHWG5nbUZsTUdETUwyVkxGam5tVE9mN2RIRkptbjU0MVFoMFcyZUVZeXI5NWtkenFJY1QzK29XZlg5L0FxRHVhM2NYbTRrSWdCYkRSVUZoRFpFZ0EzdW9JVkpHcFRQanN0VGFGOWpaakJQYmNuZGdrbXVqQVBTRUlBbktyN2lrK0VkRjRwWVF5OGIySDJ3cVVjSC9NcGFWQUhGaUtNVlU3dWl3Z0JGRnExZHRCank1TWo2V3dISHBIZ0ZTRnFSU01YYUJic1pRV0lMczFHVXRoS2Q0UlFlQWZqdDdnejVDM2xoRWVlQWJLU2plNnlPZ2pqZmhmTkpPSlQ3ZlB5S0xSYUVZTUhqeEljK0JBUnF0RVhVRjA2V3VDZ0N6aHROdVJOR3JzWmdzYW4yQjBZZjdvdkhXb1c1bWhQUG5rRTZPQjAxZk4ydXU0YzBrNnV1ZytWQlprczdRQVZQb0E1aVc3aWx5M0h6akV5WXB5ckU0elgyN1BJQ0U4a3FrSm9VZ04xU3c3Y0lyRHA2b3B0VWtzM1FHcEEvcVI2S2RSWk5KWmdDMXJPMGMyRlJDWk9nQkgvazZzMmhoOEFqb3hjYUo2MExBbm5ZS2ZSMFB4TG81OXV3Lzk5RXVhZ3hGclArYm9ta0g0T2c2UnZjL0ErRmY2SVBoTDlCbHI0OGY3bjJmZ0RSY2pWeFZTc0NlUElmZmQxaUg3UnRYKzdaaHFySmhOVGlwM2JrRjl5b3VRMUJIb2RLVWMvTmNLZ3NhTlJFc2w5YVYyZ21QQ094eTNFSlo2MmpFNHM3YXo3UjlyR2ZYTk40VDRsckYreWh4T3BQYW45MUNYaEMvNjVDMXlVaU1Rc2xkVFlyK1FZUmNFb2hXbjB0UDNSYlkvczRRK2w2YmlLRHhHU2JiRUJYK1pqWGJRVkdJai9zMzIvM3VEL25QSFlzdmRneHc1aVo3dTgvbkg5NlhxZzY4NE9UUUliV2dNMGNQN0VUaHBEajR2WE03UGIvWW1ia3dpNXF4RFZKdkNHRFJ2SWpGenJtVGJxNHNKQ2JtZHFxL2VvTDZyY28wUUFtSWNuSGh6S2Ria1NBSlNSdU1ickNOdTFreCtldkZKQW53WFVyL3BBMm9pcGhIVnUzUDkwcjQzblgyZlhZd3hvb1lqM3h4bHlLZmpRZTFMdjVzR3N2dXVoMG4rNnpXbzdlVVViZHBQd21QMzBCbUJ2eW82SG4zQk14ejZmQlgrZ1VHRWp4L1ZGSHhwRDFHemIrVEFKWDhobzM4SXhnRkc2bzd1eE9xVFROOUxoalVwY08rOTkzNnZsSlNVUXpRM1UxWUpJQ0lJSXJMc1JFWkFGR1JabHBGRkFidTVGbHVEQnJtNkZKVmFyUmJjaWJrQ0lENzExSk5YaTZKNGVoK2JaS2ZLcGlMY29NRmlkMkN4TzdDS1dvWkhCd0Z3TFBjVWVWWTFRMk5Ed2VGQXJmY2xLY3dYMlZyUEQ5bGwrUGdIMGkvSUc0dmRRVlI0QkJINjM1YU14bVF5NFhSSzNXNUtYRnBhUm5Cd01DcVY2cHdlYzZialEzQlN0V3M3UlpzMlUxc3FNSERSMDRRYW03ZWpiNzhVRElIdTZKWW1nTEJoL2RIMUhFeGdVQTA1WDY3QmpKR2syMlpqNkpGQVlGdzROYnZTY2NSY2hMNXNENlhIVFF4OCtwK0U5L0FGUk1LbnpFQlZlcEM4OUEzVUZ0WVNQSElzUVhHUkhYTG1sNjFiU2RYeGZIeVRVaEZyQ3pFWGxPQnpRU282THpCbkhhQm8weWJLRHVjUWZjdWpKSTVONkZSN09kMFl5cmR2Sm5UMlh6RDJqVURRQmhBNW9pOFZod3NKR1JoUHhmcFAwSTJkaStQZ0pxcktmRWg1N2duOEEzUWdlQkYxMlV4c1I3ZVR2KzRIVEZWMndzYU93ejhxQkFRdm9pK2JnVDE3Si9scmY4RHFDTUE0WVFRNmI5ZFRxNDBkVEVpVVFQWGg0MWpNV3NJSDl3YU5IejFuVEtMdTU4MFViTnlLMWFvbFl1eDRmTU44TVF3WWdhK1lUKzQzbTlHTm1VMU1TaStDaGc3RnExTlpKQkkrTVExYjFpSHE4L0xSeFNWakNOTGhlOEU0Zk9RQ1RxMWFqODBRei9Cbkg4YmczYmtxYlJpZWhsZkJ6K1QvbkVYQy9jOFNrK3dTMUVHakw4RkhLQ0l2L1R1cXNvcnh1MkEwWWYxaU9pY2k5Z29uYW13L2FqSU9ZUzZzeG45NENvM01aQUhKSTlDN0RUdkJONXl3UVFtSWhraGlMeGxCeFpZMUZHNzdDWWNZVE9UWTBYZ0hORnVBZXIwKzY3bm5uanVCcTkrb0hYQUk0QUNjZ0NRSW9peXFSRmtRQk5SZU9sU1NFNm5CZ3RvUWlLRFQ2VVJQN2pXSHcvNk5JQWlUL3FpYXpmbk94M2FtNHp2YnlIMzlkckpOa3hqL3dPVi9tTFUvY3YrbG1GS2VaT2pjRkVYRi94K0F3K0hZb3RGb242V1pvNjFlRUFRVFlCVUV3U1lJelJ4dFdxMkxvODNMeThYUkpyb1RjcEZsV1pnOWU1WktFSVFSeXBRcThBcUx3eWNpNkE5MVQ3cVlSTHhERkovdy80elhXSzBlR2hNVDB4dzRhTmxNV1d4MG43bVNkUnQvWEtscmFzODBqM2ZmZlhjWW9QVERVMERFN1B1SitJUGRVOXlkTHlvTCs3OEZuMlhMUHU0NWF0VG9ZelQzUUJEZGFSK05wVldDTE11eUxEZm40MHFTMUt5eEFlaDB1cUhLWENwUW9PQjhRZS9ldlh1NWhacG4ya2VqWUtPbHh1YnExU0pKVXN2Q1VwVktwVGdmemlMQ3drSzdGVGdBTUJnTStQbjVLcE9uUUFIZzcrL2ZwNVVaS25yOENLMDBOeVRKUldtazlxQXBFZ1JCdUVDWnlyTXAyTUs2Zll6QllGQW1Ub0VDTnpRYVRSSnRmV3lOeGZCTlRCK2VSZkdlR2hzblRod1BBeEs3ZXNIcTJscHlLK3B4bkM0bno5bTJxYXpWYkNhM3JCcXpRMVpXVElFQ0JaMUNFSVNFRjE1NDNxZWxZSk5ibTZOQ2N6NnVSL0FBRUl4R1k1ZUszcEhxdWV1VkZleTFhd24zY2xKbzEvUHY2NmN4SWt3UFdIbnVvMi81T3F1Y1VpbUFMVTlkUmJUN3NQZFhydVNOekRwNkJIaVJWMlZod1JXWGNPdUFNR1hsRkNoUTBDRW1UWnBrQkNwb0lweEVGQVFFRDgwTmFQYTF5YktFdXRGRzFXaTBYUk5zb29ZRnMyYVMxTU9WMXI3eXUxVXMybkNRMWZPR0F5b21qN3lRV3llYW1mam1uaGFIalVnZHhUVXp3OUdLa0g5MEQ1TlhiT1B5QVZkMFV0R21RSUdDUHp1aW9xSjZBcGx1UWRhaWN4VnRvcU11NFNhNkpaMmdVb2tEdW5ZWnJ5YWhCdEF6eUI5TEU4K01taUc5b2dqV3Q4MTg3aHNWM2xSckZ4YmtoK2l3WTVXVVJWT2dRRUhIOFBIeGlmTVFhcTFiOGpYbHNyazdXQ0ZKa3RDVTVDWUl3b0J1WDlGdTRyMmRXY3hKN2R1TmcyUSsyWHFRWWNPVE1DcWtJQW9VS09nRUdvMG1vWlZRYStGamE1Mm9LOHR5VXdtWUFIU1BWRTJ5OC9vWHEzRWtwTEtnZjljTnloMC9iK1hqY2o5ZW1EUkFXVEVGQ2hSMENsRVUrM2hvYVc2aEpudWFvOUFpZ09BU2JFSnBhVWtpNE5YMVN6bjVkTlZxdG9weHZESzFQMTFWdkE1bTdPS3huMnA1NTdvMGdoVlNEd1VLRkhRTlhpdFhmaEhpSWR4RVdhWUZoNlJuQUVHV1hla2UrUGo0SkhUOUdqTHA2OWZ6V1YwSTcxeVpncjZMVXUzRThRUDhmVk1CYjl3MGhSaHZ4UVpWb0VCQjE5RzNiOTlRVHArazZ5SFVYT2FvR2hEVWFuVjhsNjlnTG1IeHBpeHFkVjZrUGV1aStkV0c5bUw3d2drQVBQbjJCNlFYMjZpek9aaXhhQWxKZzRmeDRZeEIvR2YxRGdvclJhNTUrVVAzaWZTOGQ5ODhCdXFWUlZPZ1FFSEhDQWtKRFc5cmpyYlUyanpNVVZrUUJFSHZjTmhmRmtWeC9wOWhnbjVMMmlJRkNoU2NIWmpONW1YZTNvYWx1T2lMNm9BNk40V1JCYkFMZ3VBUVJWRlNxOVd5UnFPUlJRQkJFR0tWcVZPZ1FNSDVDbzFHRStuV3lzVFRtS0tlYVIrdUx3UkJpRkdtVG9FQ0JlY3JWQ3BWOUdtRW11QWgzQUFaa0p1K1ZBU2JBZ1VLemxzSWd0Q2psY1lteUhLTGxBOTM5UUhJTW9nblRod1BCM1RLMUNsUW9PQThodTdmLzM3SnAzT056V1dPaXNIQndaSEtuQ2xRb09COHg4Q0JBLzA4QkZtYmRJOUdvU2JMTXFLWGwxZjRtVnprVEdpTHpPWUdjc3VxTWRuL1BMUkZzdVJBa3BTaVdBVUtmaTBpSWlMOFRxT3R0ZjVCclZLcHVpZll6cEMyNktPdlZ2TG1VUlBodmxvS0swM2NPR01xQ3dmOXdaWEZ3azBzVDc0ZVZZOElaSnNGcjdnVWhyLzRFaEc5T3k5Qk0rMyttZ1BiSFl5OCswcGxSeXRRQVBqNys3ZlcyRTVuaWdxaUtJcWgzVHE3bTdabyt3UHpXSG4zZFR6UTM0dEZHdzY2djNUUkZxMWFjQkd0eWEydm5EcWQ3UTlkeDhvN3JpTDkycUc4K3MxUFZQd1pWc01ya1VsN2RqUDc0SDc2RG5Hdy9mLytYNHV2SFRWbDFPWVhJN1hROGlUc3hkbVVIdndGeWRFOWpVOEdjRmlveThuQmJwUGM1M045WjZzcW83NjBwczB4OXBveWFrL2w0N0FwbXFXQzh4ZmUzdDUrcHhGcVRkVGdqYVZWYWxFVXUwbUo1a1ZTaitheTBwNUIvbGhLV3RJV1VaUFQ1aWk5UjBkWUNWQ3J4QTRiN1A3eG9DWnNlQXFXelVkeEFpb3NISHY2TGc1dnlNTS9WRU50YlJBVFBsdENRR0FkTytmZlJzV0pIQnJLSk5iTjNRVUJTVXg0OTBtOEtDUzk3K1VNMzdPVFVBTlVmcm1ZYmVzTlhQYkdYMTBLNHBMN09iQlRRc3plaFZQampkVS9tWm1mL0pPOU42VlNJUXhCTmxYVGNEU0RpTCsveFlpYnh3S1EvY0pDOW4yVFMyQnNFTFcvbEhQaHFyV0VOKzBJQy92L3ZnRDFSWGVSTkYzcDg2UGc5NFZXcSszVXgrYlcyRkFMZ25EbXpTTWJhWXNtWGRhbFAvOXB6eTVlM1pYTnlRb3IvNWgzS1VGL2h0V1E2aWpldElscVN3MG5YL3VDdUd1ZVFnVlViM2lQakIwYUx0dTRCaTgxNUx3OG4zMXZyV0xDdzVkejRic3JxUG51VlRaL1pXWEsyL2QzNjNKVk80OXl5YVoxQkFUcmNGb3NUYXV1NlRlVkNRL093TEo3R1YvZXU0emhONDlGUlNsSGwvekloVnN5TUlZRERodk9GbVc4RWpXSDl1RTFzRnA1cWhUOC9xcUJXdTFIeDc0MW9WbU5nTUF6ZTJDN1QxczBzRzgvbmpMR3NHM3ZIbDdkdUorTGJoM1BINzUxaVZSTDhhcHZFWXFQVWFNZnl1UWJKZ0pRdG4wN0drUXlGLzhEQ2JEblZsQmxQUVQ4dXM3ckFSTm5FaERzeXQ1UjZacXplTUtHREFaQUZ4Mk5XRjJOSFZBUlJNU0lJSGJmZGdNOUo0MGxJdTFpSWdaRWV5ci9qRnVmb1R4UkNzNExxRlNxZGt4UkdSQ0UxZzRaRWZEci9pWE9qTGJJWVBDaGQyUVlOMDBkalYvK01YNnMrQk5FUjlWUkpQLzdKY1orc29wZWtjZlk5VnA2MCtRYmtsS0ptanFWSGxPbjBtdmhJNHg5L0phdVNNcm01V3NuSkszMWFaOVZRRkM3VjBsc2FSNFBlWGNkby83dkZyVDJBclpmT1prVGU4dVVKMGpCZVFsUkZIMW80MXRyV1ZMbC9neFJFSVJ1Q3JZem9TMlNLS294TmYxV1dWcE1ua05Mb083UDVHVVQ2WGYvQTVRc2VaN0tHb25RVVNPcHpUeUJmM0lLWVVOVENCczZHRU5Rcy82cTlqVmdMNitrcGVqeXhjdW5sb2JDQnBmV3QyL1ByeHlURFp0SkluajRXUHJmOHpnSlk4T296U3BwOGYzaEorN20yQVpGYTFQdyswTVFCSjlPVE5BbVhqWTFkTk1hUENQYW9yNjhzdlF6dHB0MWhPcEZjaXRNekpsK0VVUC9aQzAwTmJGcDlCMy9MQWYvazg2NEIyNGxhY2ZkcEkrYlRFQ3ZjT3B6ZnlIcWpwZEl1V3FFUzd0Tm1Vb2tOL0xOdUlsb0lsSzQ2TFBuME9GTDcrc25zWFBXeFJ4TENFZHJFTUhuMTR5b2xDMFhYNDdUbUlpV1NtcnI0MG1iM04vamV6dkYzMzZPTm13S2ZTWU9VcDRzQmIrM1lEUFFzdWk5VGFvSHpSSk9LZ0NNdjhYQVRBMG1LaXdPZ24xOU1XaCtIN0xKODQyMnlHbXFvYUdxRG4yWUViVzJhM05pTFN0RTBnV2c5L1UrQ3lPUU1CY1g0MENEVDBUb255eFNyZUIvREVXQ0lDNEVUTGlvaTJxQmVrRVF6SUJWRUFTN0lBaE9sVW9scVlIZmpPclI0RzNBNEsyc2ppZFVCbjk4RGY3ZE9zWXI5R3kraDBUMEVVWmxJUlQ4TDBEWGdSbnFBVmZ3UUdGT1ZLQkF3ZjhDV3N1cWRnME1XVVlSYkFvVUtQaWZFbXh0QWdidENiaEcvbkFGQ2hRb09OK2g2a0JqYXlIZ0dzc1NGSndESERwMEdKdk5wa3lFQWdWbkIySkhXbHA3ZjZoQWdRSUYvd3NRT3ZrZFFCQ0JibEk2T05tWmNaaEZLemR3Ny9KTnZMOHZsMmFkUkNZckw0OVB0KzNsMVkwSHFXM3ZjSWVKOXpmK3hKYjhHbVdKT29LdG1NeC9QVWZlL3R6ZjVmSy92SFF2NlpkTVl2bm9HMmc0aDljeFo2U1RQdjFTVmc0Znd0SHY4My9YS2EvUE9vU3BSdEd3ejJOMFdWYUpnTE43cDY3anE3MkY5SW1ONGRMK1VXemVzb0hIZjhocDNLYTh0MzRQUjRwTGVPdUh6SFlGMitvdDIzamp4d3kyRk5RcXk5VFJRN2JqYXc1OXNKVDkvL255ZDdsK3dqMHZNdTJUNXhHcktqbVhoVy82UWRPWTl1MHFlaVY1NDdEK3ZyUkpKNTVaUVBiT1ltWHpuYjl3bmtaYmE2TzFxUUVib09tNmxSdkE0aHNuTmYwYTJGREdYL2Jud3RoWXdKdG5icDRKTlRsOGMzQm5tME5yaTdOWld1akQ3RGp2YzZvRi9CR1F0M29OdmU1OWlQeVhQNmJXOWpmOHVoQzdydDZaenZIbDY3R2pJV0RrTlBwZk9iNXB4VTFIdG5OczJUZVlheVg4TDd5WWZsZFBSSVdGdkdVZlVyVDNLSGE3bXVCSnMrZ3pQYlhUSk4ySzdhdklYZjBqRFZVbWZBZU5vZTlOczJsa3BhcmJ1NDdTbWlDOFNuNGlkK3RSZk1aY3dlQzVhV2Y4Z2k3NWJpblphM2VCWHhUeHR5d2tOTmJGMlNBM2xITHM3WGNvUDFHRWx6R0dYamNzSkRqYXhRSm9PcnlWSXgrdXhHb1Y4UmswbHY2M3pPaHdnMXV6ZG5GaytRWktqcFlqcm5nVHh4NC8vRVplU3E5eFNVM25PN2IwSzh4V0xWRnpieVEydFE4QWhWKzhnMndjUk9sM0t6RmJmVW44MjkyRUdGMWpzT2JzSjNQSko1aXFyUmppaDlCMzRRM29kUjNmRTVnNDhmcFNncWRjU002U3BWZ2N2dlQ1Mi8wRUd3M0tBK0cyWTdxanNmMHEzZnRJYVRtSnhwQXU3RkViejMzN013dW5Ec05MU1cvdlpLNnF5RitYVGVUVU9VUW1scERmQlMxQ0x0bkpodm5QRXpyeld2cGNkd1dDdWFaSjA3SWNXY09hZVErZ0czb3hmVzZhZzFEVzZENm9vNmJRVHRUczYrZzlieHBGcjl6T3dUWEhPcjFXWFZZdWdXblQ2YmZnZXFUTXovamhtWSthdjl1M25yMzMvWTFUMlY3RXpKcUoybEYzeGhwZjlZYlgrT0haZEtMbTNreGtuSk10Vjk1RXJmdU5lUHpaMjhrdkRLVHY3UXVKSE5JRFM2VzdGdG1Xei9mejdzSTdiUTU5YjVtTEhoT09UcTZqRG9vaUxDME43eEFEUG9NdUpDd3REZis0OE9hNXUvNVJmTkpta25ERk9JN2VlejNaQjZzQUtQcm1YWFkrOXlHaGw4d21RSmZOMWdkZmM1K3hnWjAzWFkreno4WDBtMzhqL2dFU1Zudm45d1Ftc2w1N2tSLy83elg4UjE1TTlLZ0VMT1YxeXZOd2VzRW10L3EzaGNabTVneXBpMDVsSCtiTncwN2V1Yk5mcDMvNzg4NGRWUGRJWm15b2xuM0tBblVJYThaR0tueFNDVGRxa2RMR2NHVHRPdnFQdWI1aldkaFFpY09oUjIrTUppUStncERrNXU5eWxyNU42SFdQMG4rR1MzTUtTUjdtL2lhVUFYKzlpWXI5K3pGWDIvQWZGRWY1cm9Nd3BVK0gxNHE5L25acWoreW5wcUFjLzZUK0hGdXhHN2kyK1cyWmtNYUloMjlEQUtKL3hUemtMbDlCM08wdjBXUEVCVEJpRUlVckI1SDNVejREMHFLeFZsYWlpUXJCTDc0dklRT1NQTForTlZhVENsMVlCSUdENGdnZU5LelQ2NmdDalJoVGpaU0U2TkVrRHNHWTJyTjU3dDcvRDJFM1BFU3ZzY09RZ2I2emg1R2R2b200Z1M3SzlyanI3aVI2Ukgva3FLdkp1UHdEYklBV0s1WnFLNEZoWVFRTVNDSjRZSEtYN3NuMWlKcnBjKzl6eEE4TlZoNkV0ckIwUjJNN0k2dXdvaWlIQlo4ZllORU5VMGswZEJKY3RWWHdqNDNaREEzWHNQN3dTVTdXMk1rckxPWlFoVWxacW5aUXVHNHRHcjJGbzYrL1FVVmVQV1ZyMTJMdDdPR01tOFRJZThaejRNNDVMQitjeXJaL2ZkcmtrREFYRk9BYkY5ZldZVkdSeWRxME5ESlhyS2ZxMEdFYWl1dVJISjN0SFJPN3I3K1lINS85TDVYN0QxT1hYWVJrczdWNFpmb21KcDZWbWxOTFpTWGVJV0ZONzJCOVdDQ1cwbklBK2p6d0FsNTVYL1B0aUtGOGZjbTFGSjV3RTgzN0pESHlwZHM0K2VRQ3ZoaVF6S1lIWHNicU9QTXhtRW9LS2Z2eVRiYmNjQ1BmMzNBanYveFlqazl3czJub0ZlaGlJUkIwV2dTSHcrM2REbVRZcTg5US9zN0RmREV3bVhXM1BrNmRTZXIwbmx3TEdZSnZ2Q0xVMnJWS1pObmNqbmJXbmtFZ3EzRVZsSFlMZFJVRjNQTFJOdTZjTzROeEVWMG8vcFJWakIwWVMyN3VLWEtCN0hvNzl0SlNUbFRFa2hTcytBOWF2NVR5MTI4bGZNSzlxQXhhVkgxSEVwRCtUd29PbXVnMXNLTzVVdFB6bGdmcGVjdUQyRW96V0RkdU5rWFh6aVhhQ1BvZVVaUmtad010TmV2S2pTdHdETG1Cc2YrNjNXWGVQYkdMVXkya3BSclI0V2l4YytUOEhadzRITUdWZTE1R0M5UnVlSTNET3pKZGRIK05iOHN6U0NJUzFDcWtSbnZORFYxUUVBM2xwVUJQd0lHNXRBcS9NSmZid3l2MkFpNTg2MlBBUWRiaUJleC9hd1hHRnhjQUVIN1pRc0l2VzRpekpwOHQweWFRcy9jRytnenZvbEhTcXIrRUlkeEk1T2g3R0hIYm1HN2RUK0NZV1V3WU13dlpVc1dPZVpNNS90MGNVbVluZFhoUGRESi90b3BpYkE0dmZNSUQvNnlDemVRaHpEcjBjS2hsV2E0VmhHNjhYKzExM0xra0hWMTBIeW9Mc2xsYUFDcDlBUE9TWGVyNzlnT0hPRmxSanRWcDVzdnRHU1NFUnpJMUlaVDdab3h2T3NVckgrZFRsVENJeXhOREZUbldXb3ZLLzVIQzNKNU12ZSsycG9DQmZQQXI4amQrVDYrQmw1eGVLYzdhenBGTkJVU21Ec0NSdnhPck5nYWZBTGZwZU0xOERzOTdpc3g0SFdGeHZwUituMEhjWGJmZ0hkV0RoajNwRlB3OEdvcDNjZXpiZmVpbmUxekRweGVoc1VWa3ZQQWhFWDBpTVU2ZGpDNHdDbS96UWJMVzdTRFlZT0x3cXg4RFEzNzFmWWVtam1EWGYxL0JJRTNDZjlDRmhNU0YwblBPTERZOCtTL0M0eDVDeWxwTmZsRWlGMS9vTXRteVAzZ1ZvZWN3ZkVNMVZKekl3eWY1S3JjcGNZZ0R5L1lRUGlZRm9TYUxCcE12dmwxMHZ2djFUdURZOG5meEZjZmlIVGVJME40UnhONndnTU0zUE1iUnlDY0o2ZWxIOWQ0ZkVIdlBvTmVvdUE3T1ZNckJmNjBnYU54SXRGUlNYMm9uT01ibHMrdm9uanJETDA5ZVQyYnBTR1o5OXVTZlZiRFZkNkN0dFJCMnFpZWVlT0pLUVJBU3UrN1l0bE5sVXhGdTBHQ3hPN0RZSFZoRkxjT2pYUjBNanVXZUlzK3FabWhzS0RnY3FQVytKSVg1dGpsTmRIZzRzWDYvZmJjT3Npd0FBQ0FBU1VSQlZBTjZrOG1FMHluaDU5YzlmczNTMGpLQ2c0TlJxVlRuOUJoclFTSHF2c1Bva1J6ZjlKbDNsQkdIWFVOby85Z09WQjRuVmJ1MlU3UnBNN1dsQWdNWFBVMm8wV1VtcVVNVGlCazNnSksxNlJUL2ZBaDk3MVRDQjhiaTFYTXdnVUUxNUh5NUJqTkdrbTZiamFGSEFvRnhqUjBaTlJndnZnanpzUXdzSlNZQ2hxYWc5UTdGbUJwTHdjb3ZxY3F0cDk5ZHQrTWRIa1Y0Y3JQNTZSVVo3M0dPcnNFM2VRdytZaVcxV2Jtb0l4UHhqd3hBMzJzWW9VWWJwNzVLeDFRZnhKQi9MaUlvMUVWRzQ2ak1wV2pUWmtwKzNJY2hkUzdKdDE2Q1NnUkVnZHFNSFJSdDJVVGxMMVVrUHZnMDBmM0N1cVpsRFJ1UDJseE0zUzg1NEJkRllHd1k2ckFFWXNiMHBuaE5Pc1UvSFVEd2pjVTRiamc2Z3l2TzZ0c3ZCVU9nZXg5ckFnZ2I1bUtVTm1jZG9HalRKc29PNXhCOXk2TWtqazBBNlBDZVhOQVNOR3dvV25YN1l6VDBIa3pvZ05nLzUwdmY2VHo2OU5QLytCbFhFTUhhK0s4Z0NIYkFLUWlDSkFpQ0xBaUNMRGlkam85RVViem16ekk1dnlVZjI3bmljRk9nNEUvcHBMRllWdXIxM3YrbExSOWJBeTM0MkVSSmxHVzVVcGt5QlFvVW5POXdPQnkxSGlhbmZIcGZtNEFveTNLRk1tVUtGQ2c0MzJHMVdodkxsVm9MdERZQ1RuUTZuZVhLbENsUW9PQjhSME5EUXgwdGszSlBHeDBWN1haN2lUSmw1d1poWWFIZENod29VS0RnOUtpdXJqNmRLZG9rN0JvelBFU0x4VktxVE5tNUVteGhpbUJUb09Bc29haW9xSzYxUUJPRU5tVlZzaUNBV0ZSVVhIUkcwck8ybHR5S2VoeW5JMlJ3dHRJUUpSbUhVMnI2a2FRL3o0TEk3bngwdVIzV2xkTVZ1elY5TGlrYldvRUNnSXlNZy9YdVIwTnFGbTVDTzQrUGdIcnc0TUdsa3VTMDRPb0Ewem1rZXU1NlpRVjc3VnJDdlp3VTJ2WDgrL3BwakFqVEExYWUrK2hidnM0cXAxUUtZTXRUVnpYVkNuNjFialdQN0NqQXo1MmdNL3JDVWJ4d1VlSWZmelZxOXZERnBIOHo0K2NuU0I5d0Q1TU9yMnBxNUpxLzVCNU8xa3lnbi9FQUI0NGtNUEdwdVUySGJadVFST3lIaHlpOEo1blFwM2ZUcTU5YTJka0svc3l3M0gvLy9RMGRtS0l0L0cyTlQ4c3BvR3RTUnRTd1lOWk1rbnE0MHRwWGZyZUtSUnNPc25yZWNFREY1SkVYY3V0RU14UGZiTnVsZk9xRUNidzRQa0ZaSWdVS0ZIVFA2cEhsdkZZQ1RQTFEzRnJxYTRLQTZEcEc3Z1pOcTFlVFVBUG9HZVNQcGFuR1Q4MlFYbEVFNjl2WExxcXJxOWh5Sklmc0dzdWZhRWtFVkY1ZWdJaEtyMjlSSEM2cXZCQzFJb0pLaGRncTFWelU2MEVFMFV2djRqbFdvT0JQREtmVFdkQktxTFh5dFFteUlBZzBCZy9VZ0N4SlVzNFpPYm50SnQ3Ym1jV2NTWmQxK3FjYUx4MzJrbkpXN1M5aDYvSjFUSjh5aGNjOTZHSCtzUEMvZ011M0xnSGcwdDNMVzN4bHZIRXhybGJGMDJoTnhUanF1MTBBOVBoNGg3S3JGZnpwWWJQWml0clIyTnBOK1JBRVFWWURzdFBwek82MllKUHN2UDdGYWh3SnFTem8zem5OeXJRSmFVeHovMzlaN21FbXZMZWQ2eS9vU2F4R1dUUUZDaFIwalByNitxSjJUTkRUK3RsRXR6UTgyVTNGa0U5WHJXYXJHTWNyVS90M3U5VlZhSFFrVVk1NlRpbjg0QW9VS09nQ1NrdEx5K2lDajYzUkhCVUJ1YXFxS3F2cmw1QkpYNytleitwQ2VPZktGUFJpMTQ2cHJEYzMvWloxN0NRRittRDYrQ2dMcGtDQmdzNlJtWmxaNFNITXBFNU1VUVJCRUx3QnJTUTVpd0d2VHE5Z0xtYjBvaStvMVhuaEpib2NkZHJRWG14Zk9BR0FKOS8rZ1BSaUcxVm1CLzU2TDVJR0QrUERHUU80NzVYMzJPUHd3Vjhqa1ZjcmNlL3NxY3pyRS9LYlQ5QnZ5ZTZoUUlHQ3N3S3JJSWpYNG1walVJK0wyYU5PRUlSNjkyYzJRUkFjb2lnNlZTcFIxbWcwc2lBSWd0NHQyTFlBeWVkdWJCSmwxZldZblFMaEFiNTQvVTRKK1lwZ1U2RGdmd3VTSkdXb1ZPcEZ1Tm9ZZUFvMms0ZGdjN29FbTByV2FEUnlZNDZCTEVsU3BpaUs1MUN3aVlRRytDbXJwRUNCZ203QlpyTmwwZGEzMXRySEpudVlvWWlDSU1pQTdIQTRNcFVwVktCQXdmbUd1cnE2M0hZRVdwT1ByWFVPVzFQd0FKRE5adk5oWlFvVktGQnd2dUhVcVZNRnJRU2FrOU9rZkRRS3VjYVlwbno4K0FsRnNDbFFvT0M4dzlxMTYwcmNnc3ZwSWRUYXBIczBtYUdpNEtvOEFPVFUxTlJ5U1hLZUFIci9wcU4rNTlLMm4xMXdOYVRNVTFaVWdZSS9PV1JaL3VYUlJ4ODF0elpEM1hSRm5wcWFoM0FUbTRyZ1pVQ1NKR212S0lxOS84Z1Q1VldUaTZvd0U2cTcxNVRXNzlRcFJNY0pVQ3NzR3dvVS9GYXcyZXlIMnpWRFpTUUVXUUpCUnBaQmxtUkJsaEdjSURqa3B1QUJnR3kzMi9kMWZpa25Pek1PczJqbEJ1NWR2b24zOStWaWE1YXZaT1hsOGVtMnZieTY4U0MxclczbC9CeWUrWElqOTYzWXpFZVpoWCs2UlNyZnQ1bXhUMzdSNHJPVDI3NWwrcjlXdC92M1A2NVp3ZWpaZDVFODYxSDIxbmg4NGFobDBaUC9ZTkFWZDNQSjRxOS8yNXR3RkhQdFRROHk5SXFGWFB2R0QxMCs3SVVuSCtHL2U2dTZkYWxsLzNtTjBkZituZWdaejNBMjJWQy9XN242LzdOMzduRlIxZm4vZjU0ekY0WmhHRVlZWUVSRVJGSkRSRU15SkRVemM4M016Rnh6eTh5MXNqSXoxM1ZiYTExei9mVTF0MjI3bUd0bWRqTXoxOHpNVE0xWU5EUFh5c3pJQzVrUklSSWlJZ3pETU16bGZINS96SVVad0d2cVZzNzc4VGdQWmM3bDh6bm44em12ODc2K1BwelI3SE0zc0t1b2xCTXRLTC9talpmSkdUV1pubVAvU2NWNWUvQXU5dTByeHRhTW4yLzVpMDh6NS8xdnoraEtCYXRmcCsrNDZhUmQrd2QyMjg1aEZ4VWJVNmJQNDREOTNKRUlIcmZhRHJaaWhnYjcyUENUVFVwSXlGSlQ4QUIvWk5ScXRlNDZkZWZyV0xPcm5DNnBIYmdob3gyYnQrUXphMnVKYjJjREwzLzRCZnNyanJCbzY3NFFZRHRXZG9EZnZicU51TGJKREwwMEdkbmx2dWlBemUyb3AvUm9iY2h2c1IweXVPdnFMcTBjWGNmc2Y3N0h6UGxQc252Vi81RWQwN1NuL0xPUGVMazhnWjJybjJYOXd6ZGUySnRRVzFqMnl0K1pOeXFMR3J2cjlFSDlhQ1ZXdStlTW1ycjFuc2xzV3pnSmRhMlZjL0dxNUc5NGo0SUR4eml3NXh1cTdjZVovL0phcWs1bkd0cExHWDcvaTdTNk9JaTltQmt2RnJKczZiUHNYdlpITE9mdHdkY3ljZEpjaXBvUjQxaXJxNm11ZDUzUmxRYU92SjF0Uy85Q2txdnV4RVN4WnlHRm05YXlyMDBXbmZYbmpvNm1xUGpRRDgyMHRXQWZtNUQ4NE9ZRE9GK3FoMUFIMjZtalI5K3lhL1BtQWh0dzRtSW4yY1RqNDY4Ti9ObkdmcFQ3ZHY4QS9WTUJQZjgzWVFUVWxyRDI2MDlEVGx1eGJSZlhEUnJJdmJsSkZ4V1lPWTRmNXNtWDExSmNyMlZvdWk3a0M3enN0YmNvc2lwWUxzME9PV2ZudHYrdzVzdHZLYXgyczNybFcyeFRSVEx4enB0SmliU3orTVYzMkxYM2F4eFZHdVk4dDR6WWpwbE1HOWJ6WjNHdmJsc1ZpMWZtcy92N0NoU2RrZEUzM2NEZ2pQZ21jQ3Y5aG9mbXZJbE5uOENVMzQrZ2E1eTMwTVYrL0RBTDN0aklubklibWJsOW1UcThGNmRLZzFZYWpyTm8yWHZzK1A0WXNZbUpqQnM5Z3V5MitwTy8wQU91WXRuS3RiejhTU0ZibERVOE5QNG16S2Z3TEd6NVlCMzVYeGRqclQvTUU4OHRRNC9NcldQSGtORkdKdi85dFd6Wjh5MWxqZ2FXdlBRbWVsMGMwKzYrRHRNSnI5YkkwdGMzVWVPcTVxQTlnYUdkbkt6OC9CalQ3NytkakRnTnV6Ly9oQlVGZXlpdmJTRHQwaDVNSFhNMUpnM3MvdTltVnUwOFNJbTlua1dMbG1IUlNBeTk0VWJ5VWcwK0JiNktKeGNzWnM5UkdELzJ0d3k0cE0xUEdFUTd5OTlZdzZadmptRHBlQWxUYnh1S3hRZFVaVVc3ZVdMRlJ5aHRraG1lRlk4anRoUERlN1FMV0hLTC9sM0FyVk9mRHJIdVZpeC9CMk5xZTlaLzhDbTZ4STVNLy8zMVdIeDFtRFVsKzFtMjMwbU85a2VXRkJTUjBPa3laazY0Q2owdTFxOWV4Nm92ZnJDOXNXSHJrV1phbWdkUWhOY2M5Vk9EQzBsQ0tJcUNyY0dEcmRHRjdITzZDVUQ1NktPUEZDSEVqak41RHZzcnEraWNkS3JTS0JkN1MydUpFY2U1Yy9GYjNQcnlCajc0b2VaaThCQXdmZHBzRHVxN01HbFlOc3ZleVEvYXB5STdweWRkdFVkWmxCK2FRcGpjSVowaHVkMHdTUkhrNVdZekpLODdSZzJBaHQ2OUx5T3ZjeUlHY3lKRHJzeW0vNlZ0VDlvRDY2RUR6Rm40SnJPYmJadUt6djNpWk03cUNxcTFDWXkvWlRoais3Vm42b04vWVh0Vms1YTI1SjB0REJvMmhOeW9IeG55aHhleEF6UWNaZFNFUjZtTTZjeVVXNitoWk5QclRQLzMxNmRzYThuOHAxaC9KSnBwZDl6STBPNEpWQjF2T09VNXhRZjJzK09IT3BMajQwblFPZGoweWQ0V3BsMXpTZXQ4S1VONlg0Sk9ZNlQvbGRrTXViSW5DVHJ2aTVuZTlWS0c1S1NqMHhrWWVHVTJneS92Y2dvYTZrYVd2dkltY3FmZWxIKzhuTVY3dGVSR1ZmREV1MThCY0xDa2dwd3I4NWcyZGdnY0tHRE1zNXNBU0VycHhKQXJNNGpWYU9qZE81c2hWMTVHU3BzbTZGKzk3aitrOWVyTHNJNkMwWDk1aVovQ0xmSHFNLzlnZm1FOUUyOGRSdXlQWHpENHJ5dTg2bEZ0TVVNbnpTY2w5eXBHOXpJeWJmWjhWbjhaWk5EYmZtRFRnU2o2ZG9zT0FiWlZiNzdCak5jL1ovU282NGl0M01uSXVVMnVrNW9maXBqOTVIUE0vMjhOSTYrL2lsU2RDd2RRc0h3SlU5NzlqdHQrZTkwWFRwZGJhY1VFOVp1aGlpS0VrUERxYlkxdUJZMUdUWXhlRzRpS0JzRE43WGJ2MEdnMGcwN25JWlIrdjVmbjkzcDRjZktscC9vTVlITzVXYi92Q00rUEdZYXQvQnNtdkxhUmpnK040ZGRNRHE1VTdHWEY5M0hzZVdrZ0ZobG0zdDZmVVIvNEg3ZE1ScmNNNU1PNzRmdlE4eXp0TzJCcHI4T2dpU0NuVndhWkFhMUNRODhlR2FqTGQyTW9qNlJ2ZHNhcExVZU5sZ1J6U3gzQ29EbjNOVzM2bEV5bUQ2L2hzMisrd3laTVpDUTQrR3hmTlhuOXZWcmJtTnQreStEc1M2RG5IYno4MW4xc09UeUoxRDBGN0V2c3c2clJWeUFEYys0Y1NzYlRXNWwvUy9lVHRsVjkzSXErYlF4cHFSM28yU1h0dFBvbkd5ek1lK1ErWHA3N0RFTm0zQWRGM3lPZndtcEs2ZGlKbERnM1dtMDB1ZGtaSWFabWFxZExTSTJwUnhjUlRWNTJ4a2swdGVEdldSeUQrbDJLODBNelNxL0xHT0NwWjlVWDNvL01xTi9lUlBHM0J5bjZzWmJNcnFuTVgxY0VEQ2FoWFFvSjdmUVlOVnF5c3pQSWFhYVlEaHgySFNQN1pNRGwwY3hlT0k4U0oyU2NWZVZmRFV2WDcyZm1xNCtRbDZJaHI5TTRsdlNmeTI3N3JjZ2ZmNEl6YXhEVGgzaXRnd2xYZjBoaDhFZnR4ekxLWXhKSWFVVUR2dmZPMituZlBZYitLV05ZK0p0RkZEOTZFMm0rNCt5R05CYlBIT00xRWZNQUZKYS8vekZUSmovSFpSMjFlMW94UXoyQVI1Szg0Q1lFSUNIOGE3cW8xU29pSXlKUSszSS9oUGNnSWVycTZqNkxqWTA5NVNNNDltTUo5N3oxRlhQdUdFSG5xRlBaMUdyMGFoalcrekpTalpGZ3pLSlAxSFkrSzdmL3FvSE5XVk9MclUwY1p0L2pzY1RHQXhkMlVUQTVRb2ZGM05JME1lcFBIZDFkdHVCSlpxN2REOGc4OGR4OFJuZUpQUG1IYmxjK2cyYSt5NUJCdVNSRXFhbXllM0M0bS93L3lXYmZ2SktOV0dKY1ZOWTBJbGRXWWozNERTTWZQQlE0cm5mSFMxSGdwSFJZOTk1L1A0OHNXRUgyc05mUkpYWmsvditieXNDT0p5L1pTK3ZVQVlBaE4xOVBFbURzMnZIQ1R3cFpqVm9HV2FWQzFraG9aUlgyUmdFME1IUEtJMndScVF6cVpvSGpWVGhjcHhlQk54dDk5NjFXb1ZhNVVjUloreEtvckRWZ01mdElFaU5OSkVUWktEOE82dG9hTE9ZbVd2K0UySmpRanppZ3lGSXJGOVdRbE9BN05pYVdCTWxLcFIzU2ZGMU83cGpjek8vVlNFVlZJME1zSmc2VWZGdmNHcWdGKzllRWQwT1NaYlFvMURjNHNOa2RoUGpZQUdYU3BQdDNyRmp4WmkwUWM2TDdyenQybUR1WGJXUHltQnU1eXFJL2pTZW1vV09pQVpmYkhYZ01MbytFUnY1MUwwMm5qVFZoUEg2TUtnVXNNbFJVSGIzd1ByN3FvNnovNlBNV3p2Y2hwbFF5MjBhZjlOeXhrNmN6ZHZJSjdrMmp4dUVLRFFhc2VtY0RJeWRPWmQ2SVRvQ0w0aTN2aE93dnE2b0N6S0JZcWFqVmtSUWJRWEpDQWdsWmJkajQxTmdUYURncVpMZW5SVVRTMUw0ekMvOCtDL0N3YlA0L21QbmFGcmJQSG41YXo2UnJ0elBNYUpJbFpNVnp4Z0VNbTdXV0tyc2cxWElhdXR5UGUxbjRUUnlsSHp5SUFTaloralpQZkZFU2RJQUUwcG12N3VhMDJ5Zy8za2h5dXppYWtjK2pWU2s0Z29kUWJTQWh4a1pGbFF0U05HQ3ZvYkxlUUZJYjBKbmpLZDNXRlBNdHF6Z0tRZDhSWFdJOENjY3JLVmNnVFE1MVE1VWZxWUVVRTlSV1V5bU1tSU1nUTI0QmhoRll6QkdVVjlUVVB2cjRNMlVuQUxXUWtpclpWM0VRcWRQU1Jxc1JHaFZlalMxSXhNcVZLOTNMbDcveHNTekx3MXAzbDlVeCthWDMwU1Yzb2Zydzk3eCtHRlNSSm03dDZhWDUvdVNyUFJRZnE2TFIwOEE3bnhTU250aVc2OUxqdWJIWHBVd28rQzg5alRuVUh6N0k1NHFGdjdhTCtGVURtNXlRd2EzcHg1anh3bVltWDJIaXNUYytob1MrWHNDcFBjcTJmWWNwUGZBajlxTnE4dis3RzFOQ01qbWR6aTJWazZsVGR4Yi9yZnM1djdlczd0MG9ldWtkRm1mcFNVMXV6K0FlSFVocGw4Q0tyVnZZMlZWaTM4Y2ZzUDRISlVRalgvbkcyd3hPR1UzbHArOVQycUVmZmR2SzZFMERTVnYwQ05OZWE4ZXRWNlJRV1ZMTUhuc2JIaHFaNHowcHFoMEQyaDlqenZNYkdOekp6TUNCbHhPcmhsWC9YZ1h0dXRMWnJHYm45NVdrWjE1ei9nWlNuMGhYZFJrTFZueEVYdHNvY2k3UDRYUys1eHZmWE15WWRSNXM3ODA0OVJKd01mRWtPYjVqMlVkN3lORTdlT0tsRHduTmxUZVIwZDdEb3FVYnFleG1KaU1yaTdRMnA3WTNDemU5emVWemQvSHRaODhTdW94U0RQMTdSUEhVb3JjcDcyVWhMNjhQeVFZVDQ0WmV5bVBQTGlYMnp2NXNXL1VtdXY1WDAxTVBjcjkrSkQ4OWsrbXZwWkFUV2NXcm54NGhOM2h3amVrTTdsakw5cUlHMGpKQ05mdEZMeThqTS9JM2JGKzFrdVJyQjVCK1VrVlU1dGJyKzNIUDh5OTlldkQ3OG1BejFCMENic0svTXFXdlJsUW8xRHNFa2lTanVEMm8xR3ExSklSQUNDSDV0SC81NFljZlRsQ3IxYTM3MlJRWHg1MHFFcU0wT0Z4dUhDNDNqYktXM3NsZU0rT2JIMG81MUtnbUp6VWUzRzdVa2RGa0prUmpUa3lpbTc2UkRWLy93STlLSkErUDZFY25neHAydmRteWpiYmRJYW43ZVptampkWGxLSFZIMGV2MVozUmViVzB0MGRIUnlQS1poTEpWRE9pWHc0R2RPL2pQL3FQY2Njc3dPcVVra2R1NUxiYUtVbFordklkYUtab2VTVkdVVmxSaDE1ckk3aGdNYkZwNlpYY21xaFVOUHlvdWdaeU84Zjh6ME5hWlV4amMxY2dYUlQ5UXI0bWhkM29pR2QyekVPVUhlUHVqUXFJdTdjdTkxM1NrVTNwblV0cDRQMkRYWDNVNS84bmZ6QTlTSWd2K2ZDdUprU3JRUkhIemIzTDQ5c3N2V2ZmSlYxUTZ0UXpzY3hrZDR2UUJOOFkxQTNMNDhidGlTcW9hNk5HakM5RnFzTmRVc09tVFhlUi9mb0NVN0VITXZqV1hpUE8xNkkyazR6Zjl1MUY4c0pqaThtT2tYWnBCZkdUUW9HZ005T21SU212dmEzeFNDbGQxVHdreXExWDA2SkZPSkpEY3NSUEpNVnAwSmpPWFhaTEc0T3kyckZ1L2xjL0xHbmhnd2syMGl6ZlRyMXY3d0F0L1ZiOWVWSlY4ejdlSGo1S1lrazU3azlZWFhPaElla0pVWU03a1pIY2gyRHNVYmJZd29OY2xOSGNrOUwzeUN1b3JTdmp1eCtPa2RlMUdnbDZpWisvZTZLdS9aK1htTDlFa1o3TGd3WnVJMWtpZ01YTFRvQ3dPZkYxRWpiNDkvUklhT0dycXlnM2RMWUg3U2hCVkxOaFZ6MjE5T2dhQ0J5dmZmSThieG81aWUvNFdHaTBaTEhqZ0JxSTBUYzlPWnpMVE96MDBTYVpqOTU3RVdnKzk4ODcydlljQUo5QUlPSHovT2dHWEgrQlVzcXlvSkFtMVNrWlJCRTYzQjZjaUllbDBPdG50ZGt0Q0NGa0lvUkpDYUV0S3Z1K2VrcEt5N1lLOElSZTRwS3IyMjg5eGwrOGpMdTdNS2c5S1MwdEpTa3BDSGE0OENNdEZLa1hmZkVkcXAwNm9uY2U1OWZkL1pPak1weG5mUGNoajVhcGgxTDFQTWVmWjJXUVlaTURKcUJ2R01YYlJDa2FjR2YwaDcrUnZ2Mi9rSCtiOVNDZ0htMDJDZWlRYUpTU25KT0dSSkVsUnk3TFFxbVVSb2RVUUVhRVIvdUNCa0NRSjRZMHZDRUJKVGUxWXBDaWVQVUJtZURqREVwYXdBR3o5Y0EzalpwZWhTSkVNSFRXSmNkMmJ1ZUUxSmxhOU5DZkVMNWpldFJPeFo3aGdreUxFdnBGL21IZXNtUm5xcG1XNmg1QjhPV3orSUtoS2tsSEpFbXBabGdueXN3WEF6ZTEyRjZqVjZsOGRzTGtqWW5ESHBrRkM0cG1ac0xVU0lqNFZOT0ZsdGNKeWNjckVPUzh3OFF6UG1mZmFXMmZjVHIydC90TVQrTlk4U0pJWDFDUUVrb1FreTk0SXMxcUxTcU5GMWtZZ1IrZ0M2UjVJa3VSVDJyeUlhTFZhdDhUR3hrNzV0UTJPUjJmQ0pVZEJ3cG5weG8yVkxrVDhKUkNtQmc5TFdNNnJmRk82Y3graGFSNXV3Q05KVXBER0ppRkpzcEJrRlpKS2c2elJJbXQxeUZvZHFnaDlrOGJXTEo5Tk1admp0eW1LNXpEUTdyemVSZmJ2V3Y3V3RudDRkTU1TbG90UWhCRGxsMS9ldTdTWkNlcmZmSlJGVWdocnJpekxnVTJsVXFGU3lWNWdrMlZaZUR5ZVlGTlVBQjZQeC9PQlNxV2FjRjd2Sk15N0ZwYXdoTVVuRFEwTlcxdlQxb0syRUI0MldaYUZIOE84d09ZRk43azFqYzJQakhWMXR2d1RkYURHYXVXSFk3WVRzd040UXRPZkZVWEI3UW5kZnZXaVZMTmk4U0lXTFZyRSt1MUZ2N3JicXlrdll2V0s1U3hmZHlFQzZFNEtWcSttMG5FUnZOMk9LdGJuZjNiQzNmdTJiNlN3TkxUV2V2ZVdOUlJWdEY0bFdsbThrNVhMbDdObXkrNW04OVBKWndWcldiNXNHWHRLbTdoNFBpdFlUNVh6ZjNQckJ3OSs5MVV6VUhNRDdsQXpsQllhV3hPZ3FWQ3AxRjVnODI4UTREWVNnQkliRzVzUEhBNTlHRFllZVBwVnJsKzBqajhzZTRlK1Q2M2l2NVgrQXVSRy9yN3NiZkwrOWdMcGMxWlNGampKeFVQL2VvMis4M3piNHk5ejZjd2xmRlFqZnVVelZNWmdNRkM2NHkwV3J0N3hpK3U5dTJRTG82YzgxZnBPNng0RzVWM1A5cUpTS2lwck9QK2ZLVHRQVEh1UXdvdUFPMkhkTTM5aS9iNFRFNld0WC93d3E3ZVhoZnkyOGRXL3MrMkF0U1ZHbG13aWQrQ2Q3Q2t0bzdJNjlPR3RuZmQ3N24zaWJjcktLN0RhbTJvN2JIdldNSDMreHYrSkdkcWpSNC92ZmVEVjNBeHRLcVh5RllZR1k1Y1gwSm8ydFUrRms1clNQaVFoU1NoQ0NBVlFQQjdQQnBWS2RWZlR1NnJobmxFanlHenZMUk5admY0OTV1Ui96WVpiZXdNcUJ1ZmxjdGVnQmdZOS8wVlFselU4K2NEdkEzK1ZGMzNKeU0zSDZXT1NmdVc0Wm1MWXJXUFJWWDlDWWNrSnRKN0tNbXJjT2xLYk02UW9Uc3BLeTVBTlpwTE1vVFdRRGxzMTVaVld6RW5KR0hYbkthOU9VWERVbExGcCsxZTQzVzZRWmRUKzVHUkZ3VnEwazFMTFFPYk5uTzZkV0tkMVRVQUdlMDBWbFRaSVRXNjZaNmU5aHJJS0swbXBLZWlDTCtaMlVGSldpU1hsREpkdVZKeVVsWmFqajdVUWE5U0ZkS0t5ckJTMzNreFNyT0gwQU41aHBjb0dsbGd0WmVVMUpDVmJtdTdYTjA0NmN4Sm1RMmc3MVJYbFdKMXFVbElzSWM5SEFSUzdsYklxRzhrcFNhR0p2YzVTNWkzWnljTGRyN1I0ZUJXbHBlak1MV20vRkxlYjZVcytRYTJXVzFoSnhUdDJZT2g3QzdPbVQwT1cxU0huYk4rK2czRlROak41Y0doKzVzRHhrNWlhL1FDbFU0YVFjZ0ZqWlhhN2Zjc0pmR3VlSVArYUFnRWZXOEFNOVd0c2FyVUt0VnFOMm1lUEVteVMrc0tqQ3VDcHFhblpFQmNYMXdSc1JKRFp2cWtVS2lVMkJzY1JmNkd6bXN2UzJrRnR5VWx2NEsyZGV4bVdmVFVYZFh4UnNURjMvQTI4V3VnbVJWOURsYkV2RzljOGowVUg5cklkREI1MEc3cjBuc2pXTW1MNzM4K0t4OFlCc09YVnYzRFgzUFZrWmFaUWV1QUFNNVovenFnc3d6bnYzaE9UaDdOKzV3L1lEbFF4YU1oMXFPVkVGcTVkUm1jZFBEWnhDSnQySDZibVlBMURobHlIbkhvVkc1Zk1QQ1c0amUvZEJuMy9DV3pOMzRKZWRqQmd5Z3M4TVNHUHRmTWZaT3FDcldSME5sTlUyc2lyYTliVE44MklyWFE3Z3diOURsMTZGZzZIaTVvZ2pxRXhtWkdNV3RYQXFLNVFzMk1KWGFkK1NzV09Gd0U0c0cwcG84Yy9TbXpuTEp4VkpReWE5aUt6eC9UR1hyNkwwU051bzhxWUJsVUhTQjN4S010bmp6MXB2OGZudHFYRW5FdnBycy9vbXRzSGEvRlg5Sno0QWdzbURhUnkzeVpHanJrZmJYSUdOUWYzTVhENjh6dzVjUkJRd2Npc2ZsUW1kQ2FXR2c1VW0xaTUvbTJ5TERvMlBuTTNqNnc5UWl5TjJLdUtjR2JjeWZZVnN3THZRa25CS2lvNi80YVFJWFZXTVduRU5XeXJTY0NFQTdldG1zRkRmSXB6NFRwR1RudVdvbDNibUw3OFc2WU9TZmFkVk1XVWtiOWo1OEVERkZmS0RCbXlHVXZ1TFN4NzdDNUt0eTVqd3B6WEtOcFZqcUg4TnRZOXBXUGNySmNZMTk5YkZvbXhKNE03bDdPcW9JUnBRMUl2MkN1eGI5LytMMDlpaGdacGJLRkJneVlUMUd1R3F0VnFTRTV1aDlsc2xxS2pvNldJaUFoWnJWYXJaRm5XU0pJVUtVbVNVWktrQkNHVWZVSW9vc1htckJQM1BmT1NXTGozYU9qdk5jV2k1NnczeGFGV3puSFZIUko1czVlSy9RMnRYTzhDYkVlT1ZJaERodzZkOFhsZmYvMjFhR3gwbkZXYkh6NTNqN2orankrSC9QYkRCMCtLeEY2M2lGcVBJb1J3aUQ5ZmY2bDQ4SVd0UWdoRi9PZTVlOFhWOXkwTUhCdmM3dTJYeFloWFByZjYvbmFLeGtiM1Nkdis4YVBGb20xaW9raHN0ajM2eG1lbjdIZkQxOHRGVEs4N1d0MTMvUE9YUmVLVjk1elJjN2lqVjVTNDVyNW5oTXQvL1FhN3FQMXFsVWpzZUpYNHZ0WjdIMSs4TVVQMHVuMnVFRUlSejk3ZFIvenU4VFhlOXI1YUlXS2tSUEhoajk1emIra1dJZDdhNyt2TGZ4ZUx4Q3Z1OUxiaktoTlh0NDhYcjN4UzVtdlhMWTRkcnhGQ0tPTFJtN3VMKzU3Tjl4MVhKVzdzMWs2OCs2Mzk1SDIrSWxHOHRkOHBYdnZ6OWVMMmY2d1J4ejVaSXJyOWRvNFF3aVorZjNrNzhmZjM5d2doRk9HcDNTTjZ0YjlVZkZIckhjL2EycWJydnZibjY4VHR2dnZZOFBTZG9sMi9lMFc5VUlSb09DaDZ0V2tuUGo3YTFONWJmN3RGM1BqdzBwQStmUEhHSTZManRkTkVvMUNFYUNnVlY3WFRpRWZmTEF3NTVzL1hkeEJQYnlodE9XL2ZuQ1Y2M1BGRXEvZjJ4K3M3aU9jK0xHOTEzK3NQM3lodStkdktDL1plS29xbkNCZ05EQWNHQWJsQU55QlZrcVFFSHhaRnlyS3NVYXZWcW9pSUNEazZPbG95bTgxU2NuSTcwdFBUeWNyS29rK2ZQbHg3N2JXb1pWbmxqeWhJc2l3TFJWRWtYeERCYjQ1Nm5FN25lMXF0TnBSMFRYSHhyN2MzNEU2L2duc3lUcjg4YWR2Ty9jUmYycFd1T2k1cTJiWHJTM3IydlFhakRLQmx3T0E4SHR1NUd5YjJKYk4zZnc3TS9UUGo1Ukw2NXZWbDVNaWgrSW1rQmd6c3k1eTdidVRBeU92b08yZ29RL05PenNsbTZYOFg1UlYzL1d4OGptUEdqZzJZWGpxZGpoM2JDbEQwc0dqdVg3elRxcXFJUGJ0MEtNQ3VuWHNZT01GTEdtREtHa0JQODZrTlh2ZUJiWHdtOTJadFhsS2d6VmlURWFoa3k5WUR4Sm8vWU1hTUQ3MDZqZHRCNGU0U2hxZDNQY2tWOVJnTWFqQWFNQmxpTVJqdE9PdzJzTzVqeTI0N2NzSHJ6TmpxTlJXZDdsTDJITFNSbmExang2b25XYmppUXlxdERtb3Fpa2tkZFhQZ2lqMXplNk1IMENXUm1sQkRWUTNnczhxcnE2c3dKWWV5Z1JUdS9wSzhBWGQ2dFRwZE1nUHowcys3VDlNWWE2S3E3TUk1Tkd0cWFyYlFzdElneEJTVkpFa0pyQnNhRWcwTjhxMnAxV2cwR3E4cDJzd2NGVkpUdHE0Q2VNckx5OWVucHFZK0ZCVHlaTVY3Ry9oWTdzZ3IxMlZ3MnJYSFNpTXJzU09ncEFBQUlBQkpSRUZVZHhZemNzUkZsdUp4aHNYWkNiM0hzRzkzTGdYNUJheGUramVlWExHZGZXdm5JZ01Ubm55WC9ydTJVYkJsQ3pORzlXUDN3bzk0Wk1TSkMwUXFkNnhnOEwxL2IvSDd1Tm12TVcxRTFvVVBwaGhia2c5WTBub3hZb1IvN1lZYkdUVTU5cFNQek92Vjh6cnRGRVZwZXRGUGVxS2VBVU52b25lQzk2OFJJMjRrSlQzbDlBWlA5akZFZU9FVFVGQzBaZ2FQdkpFVTJYKzltMG5ycktkOHkwSW1MUGlDL0kzdjBUWEJ3UG9uNzJSK1JSTVVxZVVUKzBXTkpoTldxN1dWUHNnWGRLUnNWaXNtaytHQ3RiZDE2OGRmTlFNMTEwbk1VQkdhdHhia1cvTUJtK3hQYUdzQ3R3QlZlQ0E2bXBiV2FaK2lLSnQ4c1F2ZS8vQkQvbDFuNXNXYmV4RjVCcy83NkEvZjhJbW5MY1BUREJjVnJsbGkyMUpjWEJMeWxjM092b3pkMi82RFZRRndzbVhqZG5KeWVnWW1sU0VobFJHM1RtRHhNdzlUc1c4L0RwOEQyV3ExazU3ZG40blRadkhRK0w3czJYZmdwRzJiczRlemZ0MTdyR3UyM1RXNDZ5bjdyZFhwVUtxcmZIMDhmVm4yeEJUbUxzMC9yV096K3c2azZzQlhKR1gySmpjM2w5emNYTko4UVlYczNKNFViUEdta3RRVWJtRlhWVk5IWXMxR1NrdThrY0VkMjNZRW5xMDZ2Uys5bGM5WUdZZ2FLdFRVV0lFRUJ2UlA1bUNGTTlCT2RrYm5Wb0gyOUZTYVRBWm0yQ20xeGdhdWw1bWVodEVnVTFGYVNrTFhYblJOTUlCaVkrMjZndE8rYkU1MkwvYnRDYVdLejg2K2pPMWJ0bmxYZzNPVWtiLzk0UG4zZCszWlEwNTJ6Z1Y1UDl4dTkrWVJJMFljQ3dJMkZ5MFRjNE55MTZTUVpOeGczNXBHbzBhcjFhSldxOVYrVVBORlIyVWhTUXJOelZHN3ZXR3R3UkExbUlZalBGN3dIVlpkQkFQbjd2ZStBUEZwZkhMdjFRRE1YdndxNzFjNHFYTzZ1WEhPUzJUMnVKelhidlJxQm05L3ZwOSt2WHBoa2k4cVhDTnorQVR5WHI2SnRLNXZrVFgwUHRZK05abVVRUk9ac3Z4OWNuS3VJa1ZucGNyWW40M2p2R2JYWnl0bU0vR1pqOG5zbWtKeDRXNG1QZktTMTNUQnpVUERlN0JMU1NmSjZLU3d4TTN5OVlOUHJtOW85U1FsbjkzTEs2Y1BaR3J2WjhuSnVneWpJWlZsQmUvUTlUUXV0V1BUVyt4Tzc4d2o0MDdOTUcvTUdzSGlTUjh4c0dkM3VtYW1VMVZ5a0s2ai9zYXJNMGR4MXlOL1orWGczekZnNjRzNDNZTGtJRk4wM01TN0dUcStINXV5T21NeFJ5RGpXL3RCbmNTaTVmOWd6TGlyV05ZMUU2V3FqRUZUbjJmbW1ONDhOUDhWeG82OG5aemx5VmkwRGc2V0NaWnQzVXJPV1ZIZzZabjM2a3VNSG5NRGE1L3FpczVaU2FtdEhmazdWNUUxZER6bUo2NG5iL0NuNk94VldCTFNUdnVxNllOR1lwaDJHd2NkaitGZit5ZHIxQlNHTGIyR25MeHJpWlZkS09ZbW1wK1haOS9CeS9uRkZPK3JRRmR5RTZzZTB6Tmo0WHNNeXpLZS9ZUzFIMkRqTGlQTGw2VmZrUGZqMEtHeVQxb3hRVjBuTUVPRkpNbEIwZEFtVGMydnJXbTFXcVJ1M2JyUjBOQkFRME1EalkwT3FiSFJpY3Zsa2hSRmtSVkZrWVVRYWtEN2YvLzNtUEhoaHgvZUJyVC9KWU5NWldVbFRxZUw1T1F6cXhUYnMyY3ZuVHRmZ3ZZYzE0cldWSlZqZFd0SnNZUytYVTY3bGZMS2Frd0pTWmowMmhiblZOdGxVcEl0cUg4bEh3bTN3MFo1UlJXeGxpUU1PbTN3RHNyS3FraElTVWJiN0Y1dFZlWFlNR0l4dDJJQktFN0tTOHZSbVMzRUdrSWR1dFVWcFRqUVk3R1l6NEdCcDFCUlZncTZXQ3pCYVRtS2s5S1Njb3lXWkV6Nk0wdkpXVDdySm5hblBjd1Q0M3VIdEZOWlhvYk9sSFJhdE80L1JiWXZtY2FUcFRtc25uUCtYVVpDaUxLYmJocjU1M2ZmZmRkT0UwV1JEYkJKa21USHk4UG1sQ1RKTGN1eUlzdXlvdEZvUkVTRWxvZ0luWWlNakNReU1wS29xQ2dNQmdOR281SFkyRFpJUFhyMHdHNjMwOURRZ01QaGtCb2JHM0c1WEZJempqWU5vR3RzZER5aTBXaW1ob0V0TEdFNWY2SllpMW02cVlUeG93YitUOW92V1BVcTZVUEdrV0k0LzE5TnE5WDZVa3lNNlFPZ2dWRHV0WHBKa2hvQWh5UkpMa21Tdk54cmFyWHdBbHNFT3AwWDJQUjZQVkZSVVVSSFJ4TVRFME5jWEp6WEZQV2JveXFWU3FoVUtzbmo4UWhabHZCNFJIQ0psZnZRb1VOcjB0TFNwb2FuWGxoK1BWTEQ4b1hMcUc3Rmoyako3TXVvQVJkK3pWYlptTWI0VVduL3N5Y3ljTlQ0QzliVzVzMWJkalh6clozUXZ5YkxrdkNibno2c0NqSkIxV2kxR2lJaUlvaU0xUG1CVFVXUXI4MFhIWlh4eGtZRDBWRWxQZjJTL1c2M2E3VXN5eVBETDBSWWZoMWk0dFpKazhPUDRYOGdqWTJONjBhTUdGRkZxRi9OQmJna1NRcXdlUkNvRFExbDhRakdMcjl2VGFlTElESlNqNnpSYUFJSEJLZCtCQmZHK3dJSkhyeVZDRytIaHlRc1lRbkxUNVdpb3FKUFd0SFdnb01HbnRZb2lwcW5lR2cwR2pRYUxWcHRCRHFkRHIwK0FHeWFRTGpVcitLcFZMSm96dllCZU16bStBSWh4Q2ZoWVFsTFdNSnl0dUx4ZUhiMDdIblo5eWZSMWxxd2VhaFVUV2FvRjZ2VXFOV2FGdHFhd1JDRldxdlZvTkY0YlZTWHk0dUFicmNiYjBXQ2dxSW9BWEFUUW5nQWQzMTkvYi9kaW5KbHJVdW1YUnRENjVFNWp3QlZzeUozajR2eTR6WWlvZ3pFUllZcHRuL09zcnRnTlRzT1ZJSXVpWEhqaDZNUFA1S3duRU01ZEtqc1B5ZlIxdnlNdVVwb3Nic3F4QVQxNDViZnQ2YlRlUU1KMGRIUnFMVmFMUnFORnJYYTJVb1F3ZDFpb1JmQWs5SWw4KzFMSDV3N01USENrMW51aXVUcGNkZlRKeUVTTDIzUk90Nzlyb3BLeGNTV3Y5MkN2eVQzeUtGdkdiOXNHM0dXZUk1WEhxVnpyenorT2FnTGNuaU1XNVh5SFRCbkN5eWE4YjlwWDZ2VFk1QXJtZnJRRzR3SUExdFl6cUVvaXJLdlg3KytlMXJYMXBxVzFzTy9ZSXNrQ1ZtV1dna2ErRTFRdjdZV2ljRVFoZEVZZ3h3UkVZRlhhL09hcEUzZ0p2dTBOam1Rck9zSHR1UGxoOXo1RDl6MDV1b0hiK2VoakFqbTVIL3Q2N0tYdHVpOWU2NmgrUnJqYjJ6OWxPNTVWN1BzOThONGQ5SzFmTHA1TzE4MVhDUUQ2ZnZYV2dWbEZhSDc3RFZRWEVySVN1ZUtBclp5MkxvTDNHN09hUFZ2QmU5VUtTa0d1ek8wQTdicWx1MmZTREx5aGpCMjlGQk9GUEYzTzZ3VUY1ZGdkN2JzWEUxbEdTV2w1YlRZcFRncEt5bW12TW9hZnJzdllxbXNyTnhZVm5ZNEdOU2NCTllMRFNtaFVrSzF0ZUNnZ2Q4RWJkTFdvcUs4MmxxYk5pYmtpQWdkV20yRXp3SFhsTUdyVXFtRnZ5SWhLSWpnYXd6Mzh1WExWd0xmcGNURzRHZ01wUzJLaTJ5WlFHalFhbEg1bDdPWEFMVVdnK3JpR01qK0ZwajJFT1FOZ3VHRFlJR3ZPRzN4RE9qWkg2Wk1nS3plVUZUdC9mMmhNVEJ1TnBSc2dTRkRZUEFZOE8waTF3eTdmUnlFZTFaQXo3Rk43ZVF2Z0FGallIQXVqQmtMMlNPOHY4OFlDVU5Hd3NneE1DZ2JKaS84aVdicTJtZm8zTGtYVTZiY1E5Zk9QVmk1bzlTM3g4bVRFNitoNzlBN21EcjU5L1RNSG81L2o3MXNCMzB6TG1YODVEOHhmdVMxakptNU5QeUdYNFFpaENpZU5ldlJMMDloaHJZb2VQZVZUWW5nOUE0dnNFVVFFYUh6SmVrYWlJbUpJVFkyRm5Wa3BJNkdCcTg2NTNScWZMNDJkZk1JYWJCSjZnRThkOTg5MFhyYjZCR3Z2L3pwZDdOSFh6djhsRGQweDNYWDhNRHJteGhmdkpmcVl6WGNPZnBhTHJsWWNsM2RFdFd4Z2owK1ptYUhBNHJYdzJOYm9YQVhtTlN3ZGk0ODlCU3NmUXllWEFrSDE4Q0lGWkMvNHN5YTJya05kdTZHRExPM25jQ0hKUk5XellHYUhaQTZFWjZaQkdlVnY2NVVNbTNTLytPeHRkOXdhN2FaZmF0bU0yRGFZNHpZdmhodHpXNFdyTEt5cGVwelVtVlFuTTZBdHJwanpWSzBBLzlFL3NKN3ZSRG9kSWJmOG90UWpoNDkrdDZMTDc3WTJKcTJKa21TM3d6MTBFVC9MVUlqb2NHZ3BpVWlRa3RrcEM2Z3JabE1Kc3ptZU9USVNEMDZuWTRtWDV1R1prbTd3ZWtmSWFrZmsyYiszNy9kNlZjVW53NXQwWmJQdnFCU1orR2VxN0s1NS9KMnZKRy9rd0EvNWE5ZFpNR3RRWnFWVGdmYnRvQWVtRGNUWnN5QWpidGhUK0ZQYjZyblVDK28rZHZ4UzU2dk9zZVVBcnBxYjNyMzJUbi9DaW0wWnpBZzI5dEl4c0JCcUFzL3AxUUJqT24wVDY5a3pMRGJtZnZNSW5hWDFRVEFNN04zZnc2c2VaenhrMmV3WlBrNmJJbzYvSlpmZk5yYTkwODg4Y1FYelVBdFdHTnJrZUxSSE5SYSt0WjB2a2lvSVZCMVlMRWtJa2RGNmRIcEl2SDYyclQ0bzZTaHFSOHFFUVJxQ3Q0SXFmdVYrYzhjLy91QWprdFBIUUJvWk9XbjMzTGJ0VmZTSjlYQzlmMzYwczFWd3FhUytvc0UyTUJvYU9rTFMra0pJMFo0dDNIVFlOVVRaK2F6VTl3dDl4bFBVUHNjWU1vNW45RWFPWmFsMi9jeWYvb3R5Qlc3R056N2NyYVdlVFV6THhYVFI0ekk2OHpXcFg4amIvUk1sUEM3ZnJGcGEydi8rYytuSE0xTVVMKzIxdW9TZThFWUZGeGg0TlhXV3ZyV3pHWXphclVhMldBd29OZEhobWh0VFVtNzZ0YTQybnpnSm5ra1NYS3ZXYm5pVFNIRS9wUGZrZ3BEaElvZnFtcTlMNlNqbGtQMUVnYmR4ZnZWN2o4QURoUkMxeHpJemZWdUtVRjE4SG9qV0N0RGd3b0FDVVlvOVRIeWJQdnNQSGZTWU1ic0xxZWtPcWdYU1psazZmZXhaVmNWQVBzSzhuRm5YZTdsSkhQYXNMcjE5QjQ0akJuekZqSWkzVUZSaVZjM1BERVZVMWd1RW0zdG05bXpaKzlzQmRTY1FmNjFWbEk4WkVKTHAwSzFOYjArc3BtMjVtVStVVWRIRzZtcnE2TyszbzdEMFVCall5Tk9weGFOeG9YTDVVS3RWZ3UzMnkxNVBCNmhlTU56UWdnVUVJb1FlQ1pNdUxQMmhUckxhenVtWERjUFRreGJOUG42SzdsNzFYdDhzVE9lbXFvcWtyTDZNRFJvN1lTTFRkS0d3c3l0a0pNRm1lbmVLT2JRaDJEdU9COSs1SHI1a2JPeXdKQUVHemRDTERCaEl0dzFDQloyQmJNQk9KL1VkdXBVWnM4YXlxMDl1NkEzcGJGaSs0ZGtHaXc4dGVDdmpCclpoK1daYWV6WlY4NkM1ZTk3MlYxckN1bWZlenZtakN6a21oSnFFc1l3TDlmTC9YdGlLcWF3WEF6eTQ0OC9ybjMrK1VXbjhxMkZKT1FHMFJLSmxxQVdFV0QxaUk0MjBxWk5HK0xqNDlINS9DL1NhNis5U21scEtSVVZSemgycklxYW1scnE2cXpZYlBXbnkvcWh2ZTY2SWZwMTY5YXRraVNwOTBudnp1T2l2TGFlaU1pby8xbUM3cytOM2NOaGc0cHFzRmhBZDVxWHJxNEVSUWRtNC85dW9yb2ROc29xcWtoSVRrRWZuS0d0T0ttb0tNZXROcEdjRUVweGZUSXFwckQ4ZWtWUmxKMlptZDJmMnI5L3Z3TXZpMGU5YjdNQmRoK0xoL04wV0R3TUJpK1FtVXd4eE1XWnNWZ1NTVWxKNFpKTExxRkhqeDdvOWQ3UHBicE5temJVMU5SUVYyZkRicStub2NGQlkyTUVXcTBUbDhzYklWV3JWY0x0OXJOK3lIZzhua0N5THVEWnNHR2owMnExdmhvVEUzTnlZRk5wU0lvMWhVYzZTSFFHU0QxRHJTczI0WC9mYjdYT1FHcHJIWmUxV0pKU1d6MUhxemVTbW1vTUQvcEZKc1hGeGUvdjM3L2Z6YWtqb1FwTnE3djd0TFhtdnJVSUg0T0hWMXN6R3IzYVdrSkNRZ0RVQUdTejJZekpaQ0k2Mm9CZUgwVmtwSTZJaUFpZnI2MTFmMXRRMUNLdytJTEoxT1k5UlZIV2g0Y3hMR0VKaTE5Y0x0ZUhsMXpTZVg4elFEdWxiNjAxdjVwR293M1FFdW4xVVVSSEczenBIZWFBYnkwQWJBa0ppY1RHeG1JMHhtQXdST0ZOLzRpZ3FTSkI3VXNCVVlrZ0N2R1FFaXU4aXk2NEtpc3JYdzBQWlZqQ0VoYS9mUG5sbDVzSVRjWU5BSnRQVzNPZlhGdlROS3NIYlNwME54cTl5YmdKQ1lsRVJVV0ZBbHRTVWx2TVpqTnQycGlJam80bU5QMGpJa2hyMHpTUGtyYlEydHEyVGRydWNybVdoSWN6TEdFSlMzMTkvZklycnNnOTFBelVHaytrcmZtWDFHdGVOdVduSkRwUmVrZFNVdHVXSHBISXlFZ3NGZ3R4Y1hIRXhNVGdUZi93SnUxR1JHaDlLU0FCY3pTNHpFbzBxeUYxUzVMazJydDM3MUxnOEs5dGtESXp1NFZwd2NNU2x0TVVJY1RoTld2V2JHMU5VMnVtcllYa3JiVVdDZlZYR1BpNTFwcW5kMFJHUnJZRU5vQ2twQ1RpNCtOcDA2WU5ScU9ScUtnbzlQcElJaUw4NEtZNWJWL2JaWmRsZjJlMzIxOElEMjFZd25MeFNtVmw1Y3F4WTI4LzNreFRPNkcyZGlMZm10Y0UxUklSNGMxWkN3NFl4TWZIazVTVTFHcjczblhJdFZvc0ZxOUo2ZzBrUktQWDZ3T0JCSzAySWxoekU0b1FPTjBlNGZZb1FoRk5yQjkrZE83YUkzdnBzL21GbTBNNEhOd08zdnBvQjlOWGJPTHgvTjBjYVJUaDBROUxXSDZGNG5hN1A4N0p5Zm44TkxTMWtLWDEvTlVGdmxRUFh5VlVSRkRBSUxnZTFJekYwdmFFVmxRZ0FhbDkrMlQ4Z1lTWUdDTUdnd0YvSFdtdzFxYlJ5RGpkb05ab1VLbFVJQVRDMXprL3VCMDZlTUM1WU1OL2x3UUQyN0wzMS9ONmlaTXhmYktJc3g1aXdxclB3aVUxWVFuTHIxQUtDd3ZmTHlzNzNMeTZvQkZvREFZMUg2QXB3VFdoVFZIUUptMHR0QjdVR0FnWXRHK2ZmTUkraEZRT0ppVzFKVDQrSHBPcERkSFJYcE0wTXRKcmtqWnBiVHJNYmFLRklUS0NDSzFHcUZTeThHSmJ3RmIyU0JLdWcwL2Q5N0hMNmZ5WDk4cU41Tzg5d2wzWDVwSFR3Y0xFRy9yZytxYUlyeHZDa3lBc1lmazFpZFZxZmJWWHI1d1NIM2dGZzFwd3dYdHp2aldmdHFacVJWdlRoVlFZbUV4K0U3VHRTZnNSQW15SmlZbFlMQmJNNWpoTXBoaWZTZW9GTjUydXlSejFSVW1GV3ExR0JOR0xOR2x0a2h0d2Jpc29lRVVJOFNWNGNDc0NsY3JYbkt4Q0pXd1VWN3ZDTXlFc1lmbVZpS0lvWHozLy9LTG1BWU9BYjAyU0pDZXQrOVo4SnFoR05HbHJUV1ZUM3B5MWFFeW1HTXhtYjhBZ01USHg5SUVOb0YyN2RpUWtKUGh5MjR3WURGR0JJbmsvQTRnL2tBQUtpcEJRYTlRQklrcEpDakJndXNkZE43VGkrUEhqTDRDZVBwMWlXYlc5a0tNMk94OTgvQ1UvQ0ltR1JuZDROb1FsTEw4UytmYmJiMWZQbURIRDFncW8rVFUyUDZnRnAzaTBXSEdxaWJuRFgrUWU1VnZoUFphRWhBVGF0VHQxT1dRTFlJdUppU0VwS1Ftek9kNlgyOVpra2dhRG15eEJuY01qZEhvOUdwV3ExYVJkSk1rVkYyZmU0SEs1WHJ6N3hpRjA1d2lUWHQvQXAwb2lBMkpWNkhWaFRxNndoT1hYSURhYjdZMnVYUy85SnNnRWJXeW1yYldhak5zVU1OQ0k1cUFXV3VUdUpaQk1Ta29pSmlibWxQMXBGVm5hdDI5UGRYVTFWcXVWK3ZwNlh5RjhJMDZuRTZmVGlhT2huaU8yUm93bUUycVBrOFpHQlVWUkVFSUlSVkVVRUI0aGtDU1FrU1RWSjU5ODh2SlZWMTNWYTlwTnY4a0djTmVWYy9XMmFQNFVIMTZwS2l4aCtSV1lvTHRmZmZXMXphMzQxWUpCellVMzE5VWpTWkxTUEJtM3lhOFdXalpsTUVTSEZMeTNiOS8rdFByVUtyQnBOQnFTazVPcHJhM0ZacXZEYnJmamNEaThsRWFPQnI0K1ZvY3FNZ3BKdUdod0s4SXRKRW10VWdraEZEd2U4TklhU1lvQU53TFgxVmNQTE52ejVhNUZYM3FpRmlkcEZkNzUrSE95Y252VE1ZeHJZUW5MTDE2KytlYWIxUTg4OElEMUpDWm9pMlJjMzZwVExkSTd2SDYxbGxIUXhNUUVrcE9UMFdoT0R6Uk95S2Rxc1ZpYUplNUcrMnBKSTRtUGk4T2tqd0NWQ2ttbFFwSzlxQ3ZMS2lGSkNDUkpTSkt2WWwvQ0pVbVNNL095N0UybEpTWFByaTg2VE0vZWZYbDZjT2Z3akFoTFdIN2hVbHRidXlRam85dUJrMmhyZm1Eeis5WjhBWU1BcUlVdzRucWpvUDVhME9pUVJOem1oZTVuckxINUpTVWxKWWpTeU82ak5Hb2tQVm54Y2JiWnFLKzMwOURRSUJvYkd5V1B4NE5hcmNiajhRaWZCQlpabGlUSm1WaFQrdEtNMy8rK215ekxnOEpUSWl4aCtXV0wyKzNlOHVpanN6OXVCbW9PbW5MV1RoUUZEVFpCaFplMUk1ZzhVdTh6UVUwK0U5UkNTa3JLR2ZYdHBBejRVVkZSSkNjbms1aVk0RXZjamNGZ0NDNlVid29tK0d1N1ZMNUFnbitwUG9JcUV1NjY2KzdqaHc0ZGVnRW9EMCtMc0lUbEZ5MC9mdnJwcCs4OSsreXpEYTJZb0k1bUptaWd3aUEwWUtBV3dacWF2OERkWUlnT0xLUG5OMEdiczNmOEpJME52SUdFMnRyYWdOWVc4TFU1dmRUaGJyY2J0OXVOeCtOQlVacUNDRUlJZk9BbUNTSGNnQ1JKa3B5YTJ2RnpxN1YyUVhSMDlOenczQWhMV0g2WmN2anc0V1Y5Ky9Zcjg0RlhNS0ExTjBIZFFSVUdvbWxSbHRCZ2diL0FQU3JLNEV2dGFFTjh2RGUxNDNRREJtY0ViQUFkT25Ud1JVaHRORFEwME5qb3dPbDA0bkk1ZzRETmpjZmpFUjZQUndvR09KL1dKdmxNVXBja1NTcWpNZWJmalkyT05LMVdlMWQ0aW9RbExMOHNzZGxzYnlRbnQ5OUZhR3BIY3hQVVJXalpWQXNUdElsakxiakFQWlNPcUVPSERtZlZ4OU5hakMwNk9wcjI3ZHNIMFJzRk0rNzZxeEw4eEpTYVU1bWtUcUR4d3cvemx5aUtVaENlSm1FSnl5OUgzRzczUjRzV0xTcWc5UWhvUUdNN21RbnFCeld0TnFKWmRZR0JtQmhUZ0k2b2ZmdjJSRWRIbjFVL1R6dER0bjM3OWxpdDNrVmVRclUydjBucXdlUHg0UEVvSnpKSkVVSklQdFhVT1d6WXNQTHZ2eTkrdmtPSDFBNlNSS2Z3bEFsTFdIN2VJb1FvM3JGang5by8vZW1odWxaTVVBY3RBd2FlRTV1Z1hrMU5wNHYwc1hiNE9kYThCZTdKeWNsblpZS2VrY2JtbDQ0ZE85S3VuVGNGSkZLdkIwMGsrcWlvSUdMS0NMUWFEWklzQzFubFgwaytoRzAzRUVpUUpNblpzV1BhenBxYTQ4L1Jjdm5NaTBhc3BYdFl2MjNQdWJuTzluMFhwTS9iMXErZ3pQcHpmNjZ3ZnR1RmFzMU93Zm90T0g4aGM2VzVmTFpwTlFlclQva0t1b3UvL3UveWZ2MzZselhUMWxvelFmMkp1TDdxQXE4SnF0SDR0YlZRdjVxL1pLcE5tMWppNCtOcDF5NkpqaDA3L3FSN09pTmcwK3YxZEdodjVxMVBDbm45NnpJK0tTbG4wM2VWTktpOU5ySWtQSlJVMTNITTdzUnFkd2k3UzBGV3FZVXNTMEtTVUJUaFhZdFVDT0VXQXBja1NZMnhzWEh2TlRRMFBQVkxBYUluSm85a1c5bTVJMXlxTE16bm1aVmJmdkoxeWo5YnhTTUwxMTZRZTFydzBPL1o4VE9QYTFjV3dqTXJXM2xPTytEZWVlZTJyZDByNS9Ga3dVRzB2NUM1MGx4ZW5uTS8yNHB0SnozbTJMSHFGOU43OU4wVHBLazVnamRKa2hxRFFhM0pCSldFU3FVV1hsRFRpaFBWZ1hyejFjeTBiWnRFaHc0ZFFsYWNPdS9BQnRDMlhYc20vbTRNODM4L2dnZHVHRVMvOWtiMjF6aUppb3JDRUIzRHBSM2FrWjZVUUx1RU5raEN3WVdNTEt1RUlvUUFTY2l5djFCZStCa0FHbk56YzVlNFhLN1hmZ0grQlFxM2ZVaFpqVGRvRWlyZUNhdzRiQlFYbCtJTW1zLzJtaXFLaTB1d3UwTW51YUlvcEE2WnpNYjVrMXU5bHNOV1JVbFoxWm4xMFc2bHBMU2lCZGVkdzFaRFNYRXhOb2Y3RE83SnUzNW9jVWtwZG1mTEY3U21zb3lLNnBZdmhLMnF2TlYrSzA0N0pjWEZWRm50NTNXY0ZBVlNoOERHK1MxL3Q1WEQxbDNnZG52L0R0bnZnSklTc0xlaWVpbDQ3WXFTNHViNzdUejV4QnRNbWpUMmx6VlhGQ2RsSlNYWVdoblg1dU5rdDl2LzNhTkhqK0I4dFJZbUtDMVRPM3hyR0toRU1NZGE4MkNCbnppeUtWK3RQVzNidHYzSmMrQXNxdEFqdUs1dlQ3NzZTc1p1YnlERmtzQ250ZFVZREJHNFhHNGtXY2FHZ3NmalFhMVJDNkZTUzJvWkhJMU9aRmtTRWlLUUFpSzhLU0JTWWVIWGNrRkJ3WXVEQmcxS1VLbFUxLzBjUWExdzNUTk1lK1pkQ2cvYTJYM1hkU3d4cUJrMjlaOU1IWllGd0t2VGIyUjFUVWNxUDlzTWVoM3F6SnZadG1RR1Q5dzdpR1c3UGFRbDZOaXpyNXpacjc3TjJMN3BnSU5aNDRhVFgvZ050cXo3MkxOc1JxQ3RSVk4vdzRvRGNhamR4Nms2V0VqSzZNZFpPMi84S2Z0WVhiaUdBWU0rUUVjMUZmbzhDdFkvVDRJV1ZzNFp5NnpWMzlNNTFjekJ3aUxHUC9FR0Q0M0tPZVU5clZ2d0lGT2Uya1JHVm1mS0R4UXpkKzBYREVuMzZpWExabzluc2ZVSSszYnVZdXJMLzJINnNFeHdWek5yL00yc0xGSkkwZHVwTnZSbTNlcC9ZZEZCeGU0MURCNzFKMUl5czdCVkhpUjcvTk04TlhIZ2VSbXJXZU1ndnhCc1diQm5XZFB2RDQyQmJVVlFVZ0ZEaGdDeHNISWx4QUk3VnNMNEdaQ2VDUWVLWU81eUdKWGpQUzkvQWN6WkJycURZTlZDalFtS2ZBdE5Pb3JXVTJEUFlVbWE3aGN6VjVTYWc0d2MvQnNxREYyUjdRMDRLcDNrK3ZZMUg2ZWV0LzhqUDgzMXpZZUhEeDl1TFZldE5STlVDYTRGOWE4SnF0Rm9SZE1xVTVHQk90Q1lHQk94c1hFa0ppYVNuTnllVHAzT2tidGRDT1dzdHVQSHEvbDQ4d2YwdjJVODE5My9aKzY3N3o1R2ovNHQxMTU3TFZkY2NRV2RMMGxETnNRUmIybExiR3diU1ZLcEpKVldLMHV5ckpKa1dRTlNCSklVSlVtU1NaS2tSS0REdm4xN2h5dUs1MU52d2NMNTJZNGNxUkNIRGgwNjYvTnY2eEVsM3RydmJQSDdLMys4WHNUM0dpVitySGNMSVJUUjBHZ1hRaWlpdHJZbWNNejNHNTRRSGE2ZEduTGUvcmRtaVc2M3pRMzU3ZmtIcnhHWDN6WlhlSVFpWEljTFJMdTRLOFFQbnBQM2EvOWJzNFNtWFQ5eHFFRVJRampFSDMvVFVmenA5YzlhOUtGdS95b1IzK1ZtVVgrS2U2cjlhcFdJYTNlRjJIL000ZjJ0c1VZY3IvUGUyeTNkVk9LUEwyNFhRaWhpNzc5bmlrNDN6QkJDS0dMemM1TkVqNXNmRVkxQ0VVSzR4ZE4zWHluKzhPSTIzL081VHR6eGo3V0I2emMyT2s3K3JCdjNpVDV0RTBWaVl1aDI5ZjN6VDJ1YzlyK2xpRzYzdGZ6OTIzY1UwZTJXME44OFJ4WFJLVkVSbnh6Mi92M2p4NHBvMzA4Ukx0LytENTlUUkdRN1Jldzk2djI3b2FIcDNDOWVteUc2Lys2eFg5UmNlZmZ4c2FMZmZkN24ySGhraCtnVXFSS3ZmRjdkWXB6Y2J0Zk85OTViK3dEd1cyQTRNQmpvQzJRRFhZRU9raVFsK3Q3aEtGbVdJMVFxbFVhdFZxc2lJaUprZzhFZ3hjYkdTbTNidGlVdHJTT1ptZDI0NG9vcnVQYmFheGs5K3JmY2Q5OTkvTzF2ZitPVlYxN200NCszY3Z4NDlWbmpVZlB0ckhtRFRNWW90dXd0SnJKYkg0YkZleWd2Sy9ORlNOMDBOdFJ6eU9yQ2toaUh4dDJJUTNpRUpNbVNKS3VFMS95V0ZDRjVrTHhxcXdUSWtpUkpHUm5kdmk0ck83UXdLU2twVnBLazlGOWFJR0R3eUZ1eDZMM1d2VTdyL1lKWEZHNWk4ak92Y0tDc0dzVlJSYVdjZDFyWDZwMlhpd3pJU2NtWW5kVlluWUR1NU9lazVWNU5zZzVBUy8rQmVTemN1UnZHNW1BcjNjbU1lZjlpOThFS0ZMZU5tbW9qVnVCa1hveGRPd3BJSFhRelhXTjluaU90RVpPMlNkSHZuZWRWWjVKU1VyQlZmUTdBMXEyYjBkcHptRFhqWVFCS1MreFU2QXFCUExMNzltUEc1RDl4YjhWbjVQWHR6NmhoZ3pqcG1sL2FybXd2Ly9HQ2pGdkpkaWhYdzVyNXNOWnJwV0hkNHkyUDhSZnk5QndLR1didi8zVkI0MUJaZlJTak1ma1hOVmQyN2Z5Yy9pT25leDl6UWc1OU00eUJmVTNqOU9sM1NXMlQzbnAwK3YxSG1nVUtnaU9nSi9DcnlhSnBCWGQvc0tBcEFtb3dHSHhyZ3JZaEljRmJCNXFhbW9ySlpEcG5ZM3FXd09aaHhYc2IyQk9md3hQWEdQaitteUtjUGxvamg3Mk9UNDdXMFM0NW1XakZRWDI5MXo4Z3ExUklzcG9JTGNMamNlTlVFRWlTZ2k5eDF3OXd5Y250UDY2cU92cGNYRnpjVENEK2x3UnNPcU9obWJPcGtGR2ovc3BqNno5Z1dIWUs5bDFMc1V6NDhQUUdSZzRhR3ZuTUhkQ0szNE9xVkRGaCtHME1XL1FoOHdkbm9xN2NnaVh6cno4NURDMEg5OC9uckZLQXJOeHJHVEhZOTAwYWNTUEdoRlFBc2tiTVlGL09jUEkzRmJCMDNuMHMzZkpIOHArNTk4UU5PQTh5SXUrM2xEVHJhTmRoRDdEaXNRbm5mT3lNeVRCeVJOUGZJOGRBUXZCK1krdm5tWTNSMk96V1g5WmNrZVhXM0hUQjQxUzE3UFYvdi9IZzlQdS9KN1N3M2RHS1h5MUE5UjIwMkxId3J3bmFNZ0pxOEFVTHZQeHFiZHQ2azNDVGs1UFA2WGllQmJBSjN2L3dRLzVkWjJicDczcGhrQVdlaGdZY0RnY09XdzNyZGh3ak9TMmRSQnhZcmJWNHpGTmlBQUFnQUVsRVFWU0JVcXVveUFoUjV4U1NUcTFHOGJnQlNaRWxDUUY0Q3hTOC9qWWhoR1EyeDYrdnFUbHVpSW1KK2V1cDlaUUxLd2FqbnFyS2F1aWFjT3FEcThzb1ZhZlF0MmNLTXJCK3pidTQwWiszdmhYdjJFeVpZemJKT2lmYkNyYVRNL1lQNEs2a3ROcEkvN3hNMU1DTzlldXBWRTU5VDltNUF5bVo4dytLcXFkNHRUYTNsUnFIQVpQaHhQR21BZjJ2NXFGdHhXVFBHdXZWeGhRN1ZUWGV4cXhXSzdISkdZeWVrRUZ1a3B1OEo0dE9malBhVkJhdmZZL212bTJ0NGFkOTFmVkdzRlo2dmR6K3laK2FCNFpTa0ZPaHQ0OUFvcXJxOUNaZTE1NDVsRCt6QVNlMDBFQi9ybk9sZDA0djVtM2JDcmRtNGF6Y3liWWlLd044KzZ4V3E2TkJpbm5sd1VmKzN6NmEwam9jUUVNSXFMVk03ZkJyYThIOGFxSzF5Z0wvS2xOdDIxcElTZWxBNTg3bm51bm56SUd0NFFpUEYzeUhWUmZCd0xuN0FWQkZXM2lxZHdxRmhWOXlTTkdpUG5LTWIreDF1QnZzdE5GSFl0YnBpRFhGVUgva21LaHY5RWpDSTRSS3JaWmsvTVNVSWZXa2toQkNOcG5hdkdXejFVVkZSVVU5OG5NQ3RnbVQvc0Q0Q1ZleDJHUmd6Q012OHRESW5pYytPR1VBVS9JZXBXL3VOYVFaRk13cDhZRUhYckZqQmFPbS93dDdWUWtsVlRKOSs3NVA1ckFIV1RSajFGbjN6V0wyTUhiUTFhaXBwdEk0bElMUjJhQlZtRDZoTThOeis5QXpXWStjMUI2TGZPcDdNbWFONE5VWkh6RTBwd2NaV1oycExDM2xzWldmTWpqOXhBYmtnSWx6R1ByWmI4bnNlU1VaS1NZT0hpaG04b0wzdVhlUWdiVlBqT2V4OVVmSlNJMWxYMkVSanl4OCs1UlRNeUhwekwvaUZUdGcxSFN3VjBGSkZmVHRDNW5EWUpIUDM1NlVDNE9BckN3d0pNSEdqUkJyaHVYellWeWVOM2hnTFFkdER1UXZPbzBQWGMraDVMa2ZaV3VaazBISjJsL0VYQmx5N3l4ZUhuUTl1UU0vUU8xMFliUTBxYVBMSHYzZGkvYy9zMkZYTTFCekJJR2J0eGEwbFdDQmY2RmpYd1JVdEJZQmpZa3hCZFl0YU44K2hmVDBUa2lTZE03ZlUwbUljNU5uYytUSUVmYnUzY3QzMzMzSG9VTmxIRGxTd2JGanh6aCt2SWE2dWpycTY3MUY5UFgxRFRoZFRzbnRMYUNYUEI2UEpJU1FmWnNhMEFCYUlZUU9pTFRiNisrSmpJejh3N202NGNyS1NweE9GOG5KN1M0WUdGYVZsZURXbTdIRUdzNTdXMjY3bGZJYUI4bEpDU0c1UERXVlpkZ3drSnh3WmhxUDIyR2p2TElhc3lVWnZmYjBzb1BzTlpWVVdkMVlrcExRQm4wNkhiWXF5cXRzV0pKU1R2dGFGMUlVTjVTVmdkRU1wak1ZcW0xTHBqSy9OSStWYzBiL2d1YUttL0xTY2t4QjQzcjgrUEVYWW1QanRqUXpQUnNBdSs5ZnI5WW1TVTdKbTJRZkFEWmZaWUUvVDAwMEFacUI2R2h2L1dkY1hCeUppUmJhdDArbVU2ZE9kT3ZXN1pTTHNweXRxR2JQZnZUY21HZ0dBNUlrMGRqb0xZNTN1ZnlGOFFxSzR2R1hXUGxEc1Q1UUZVMi9CZHU2WHMwTmdLKysrbXJQeUpFalVhdlZ2YzlGUCt2cjYvRjRGSXduY3BxY0I5RWJUUmdpdFJla0xWa1RRVXgwRk0yL2dib29JOGFvTTdmcVpiV1dtSmdZTktyVC82cHFkRkhFeEVTamFvWmRhcTJlTmliVEdWM3JRb29rUTR3SmRHYzRWQ2xadldrOFhFYlhIbDFSL1dMbWlreDAwTGpXMXRhK1BHalF0WnQvL1BGSFZ5dkE1azNDOWZuVkpFbHlOVE0vQTZEbU56LzlDeHo3QXdWdDJyVHhyVm5RTm1CK25tdS8yamtJSHJRdXFhbXBPQndPbkU0dnJaSGI3UXBRR25rOGlnL2t2R0RXQkdwQ2VKTWxGY1ZYVjRvUXd1VjN1cTFiOTc3MCtPUHpsanp5eU1QcWlJaUllN2hvcFlibEM1ZFIzWXFDYmNuc3k2Z0JQUW5MLzBqVXNZd2ROK0lYTzFmcTZ1cGVlK0NCQnpaLzhjVVh6ZlBVbWtETkd3SDFhMm9lZk13ZC9naG84d1JjYndUVW42c1d1c0pVV2xwSFVsTlR6KytRbk9zTGR1blN4Y2ZaNWd5a2YvZ0w1UDJhbTI4VFFnaWYxa1pBbFZNVTRXY0NrZncrdHpsejV0VEV4NXVYM0gzMzNYSkVSTVRkRitmYlkrTFdTWlBESUJLV2N6cFg2dXJxWHYvclgyY1Z2UDc2c29ZZ1RhMGhlUE9ER2tHVkJiSXN0UllCRGZqVnZJU1JocUFhMElSQVdrZVhMbDNPLzdmbW5Ldnpra1NYTGwxb2JHejA4Ylc1L0Z4dEFjMnRLWkZPQklHYlFBaWgrSWhBUWt4VVNaSjQ0SUVweDdSYTdaSTc3cmlEaXhmY3doS1djeWQxZFhXdlAvYllZL25QUHZ0c1BhR0Jnb0EvelFkcUlmbHFYaE5VYmhFQjlTL0UwcHd3MHB1cjFwYlUxQTUwNmRMbHZBUUx6anV3QVVSR1J0SzVjK2NnV2lPdjF0YmthL09hcEQ2ejFBOXV3cWVsK1NPbHdlQW1TUkxTUGZmY2U3U3hzWEh4M1hmZnJlaDB1bnZDVXpNc1lUbHJVSHZ0cjMrZFZYQVNVR3VRcE5CVnBvS1h6Z3VPZ0RacGFrMEp1REV4eG9CZnpaK3Ixcmx6WnlJakl5L0kvWjJ6NEVGcjRLYlQ2UUxnNXZINHdTM0ExZWJYMnZ5YkQ4YkZpWFJCQWJCaHcwYVhKRWw3K3ZUSmRXczBtak1PS1B3dmdnZGhDY3ZQU1dwcmExK2VQSGx5d2VMRkw5cFBwS25SU21WQkU2akp3ci9BY1dnRU5LckZlZ1YrbjlxbGwxNksyV3krWVBkNEZqRjNENThXN21YTzZueit1TEtBVjc3OEljQkQxVmhmdy9LUFBtWEd2emZ4bDNlM1U2eEVjY2tsbDlDaFF3b0o1amdhRkluRDlZM1VDSzF2ZFhsOThPcnlRcVBSb0ZLcGhUK0QyUjkxb1luRHJSRndQUGJZWTdVMzN6enFCYnZkL3ZTRm5oUUg5K3lrMm5HdXJ1WmszNjdkMkU0NzQ2YWNrVG0vNGNCWkVIOVpLNG9wT2dQMmgyMnZQc0s5VDY3NTJiK2tJM09ncUpYbnNXOFhaL0JjVDBmY3pMdHJORnRLN0QvcHVaNUtLa3VMS0trOFM3STc5d0dHWk45TTJVa09PWDc4K0F2WFhETW9QOGluMWtKVG95VU5VWEJodTQrR0tOU25GaG1wOXlYZ2Vxc0s0dVBOV0N4dDZkQWhoVXN1dWVTOHBYV2NPMkJUNmxpenE1d3VxUjI0SWFNZG03ZmtNMnRyQ1FBL0ZKZndkYjNNMWQwN2t4MHJlT0NGVlJ3MnRDVTlQWjFvblliOURSTDFIc0VSUllQUmFNUmdhRVpTNlFNM3Rkb1BibDV5eW1ZRWxZMkFZOE9HRGZWUlVZYVhiRGJiNDc2QnVTQXllK3pWRkpTY0sxN01TaVlPdllraSsra0RZV2xKTWM2emVHRS9XL1U0MHhlc08rM2piVFZIcWFpeS9leUJiZnhVU0dobEZrOGN5aGs4MTlNWXFSMUxXVkdSUnY5VS9VOTZycWVTdGZQL3dMelZoV2Y5b1N3cExqMVJ1WnpqNk5Hano4WEd4bTBKaW42ZURxaDVKRW55K0lNRkxjM1BVTEpJZjFXQm40SW9QVDM5SnpIaFhqZ2ZtMnppOGZIWEJ2NXNZei9LZmJ0L2dQNnBkTzdlazhlNysvZWtzbXZ2ZnJaK1g4MUQyWjF3dVFZU2s5Q085emV1cDZEY2dja2srY3pTUU5vSFByOWF3TmZtZHVNckpjVVQ3SFB6cFlRQUVCMXRYSGI4ZUxYZFpESk40VHpXbHBidVhNZmlOWjlTV09IRS9zeWo3RGJMNUk2NG0yRTUzakxwZlZ0WHMyVDUrMWpsTm95NWR5cURzcnc1T29xOWdrWFB6R2RIMFdGaWt6c3k3dDVwWktjWTJaMi9qRlZidnFERVZzT2lPWC9Gb3BVWk91NFA1SFUrZFFMdDd2eWx6RisxbVlTTXE1ZytiVHdtTmJpdFpTeGU5REs3aTc1SDBjY3hlc0lVQm1lbmdMT2NwK1krejg0ZHV6aGdyV1Rtek8vUUpmZGk1cjBqQWk5RC9zckZyTnI0QlJqYU1tckNKQWIxOVBYZFdjMlN1WSt3N2VBeGhrMzRJNlA2K2twZjNGWldMSnpQcHAzZmt0RDVjcVpPbXhRbzZONjNiVFdMbHI2UERTMFpBMjVpMnEyRE9SK3B1UHUyd3ZKTjNobmNPK1Rad0tvdFVHS0RSWFBBb29XaDR5RFAxL1h0NjJEWkduQWJZT0kweVBGWHVUdmdtUVV3WkRBc1hnQjJBMHlmQmVtKzRYaDE4UXNNSC90QzA3MmM0cm5hcXc2d1lQNGk5cFRVa2pub3Qwd2ROeVJRY3JWajNXSmVYZjFmbkZvamVjTnY0NjZodlZHcTlqSG4vN2QzN3VGUmxIZjcvOHpzSVp2TlpyTXNJUWtoaVRGZ2lDSEVpQmdSSXlJaUlsSkVSS1NJaUpRaVdxcldvclZLS1M4dlB6elVJcVVVclZJOElaNFFFUkVwSXFVVUVSQVJNVWFNTWNRUVlnZ2hoR1d6MmV6T3p2UDdZL1l3dXptQWVLSytQdGMxMTU1blptZWV1ZWYrbnU3dndoZll0YldDdXJLL002dm1uNlFWWHNhTWNZTlB3TkpjTEYvNENCdEx2MkxJMkl1amtheWhnb1VMRjFOV2Zhd2hQam45cVNjZWZXQTMwYldmTFRIbVo3dWdwbXR3SEFWcWtVQkJBb21KMGFDbVZSWDArdlpraUw1ellJc1puOVkza0p0K1Z0c1AvTWVwT0tJeUtUVUpnTHk4UEJSRm9WdEtOK0piV2toT1J1ZHJDeTFoOEFxREcwQWcwQ200aVM1ZG5Lc09IYXByN3RhdDIyM2ZsU3FJUFNPUDRjTnRiSC94RVlwS0xtTkl0cG0wRE0xUFY3NWhFU1B1ZkkwRmkvNlhaRjhsTThaY3hkSnQ3MU9jWW1icGZUZXl6bmNGODJhT283NXlEdzBOYnNpeWs5NnJIOE10RnRZc2VaSGlJVmVRYjRPczVKTklvRldxV1BaeU9RL2Uva3RXekwrRHlYTXNySjQzSGw5OUpZMldiQ2JmTmdwZi9XNXVHMzBaUzNkK3lzQVVPNE9HWG9IczJrMWxiUitHRDc4QzJSYXBYWHh4OWczTTIyWm53Wnhic1hwcUtOMVhIZ2EyTFM4L3g4Z2xEekVoZXhzVHh0NU1jZlc3WkprVkhweHlCWnZOVnpEN3pqc29YZmtvSXlZM3N1dmwyVkMzbFJIai80Y0Z6LzZkYkx1UGJYczB3Y3ZPZ0czYnFzZlpzUGRRek0yeks3ZmRONE9VVG1ablNqWU1Id3BUUjhQWWV5RXQrTjMwWGpEY0FtdVdRUEVRZ3NjMWFGNHZnNmxQd01KSGdGb1lQd3cyN1lFc1N4RFk1c0c2N1RCMU10QUlqUzdBQWREQSt2V1YzRGV2VUhmbGRISmNQZFdNSFh3RitWTWY0dlpSYVN5Yit4dG1laXdzbWo2WXh0MHJHRDN6RlpZdmV3aUgyc0R1YXMyTWxhMHBEQjErQmQ3eURjaFpGekI4ZUJIVzVCTTNDVjQ1N3hjczNKdkJvdnQreWJwRjkxS2hvMnR6cHY2TStuTm5mWEg5OWJiblI0NjhKbFQ3R1p1bkZscGFPd0sxVUZWQlorYW5CbXBkU1V0TEpUTXprMTY5ZXBLWGwvZURNZmx2Qkd6Vit6L2hzVThDUERuajdGaDdsV2ZXYkNUdTdBRmMyU011L0c2ZlBuMUlUMDhub2JtWjFGUTZDaUlFdnkwRWhLT2xIWUliYUlDWW1wcTJmdi8rL2E2c3JNeGJaRmsrLzlzK1VJNjBYcFNrOVNMTlppUy8veUJLOGlLSGJ1bkN2ekJ4MXF1TUtNa0Qrak4xNkZPc1dMdUw0aWtEYVd4b3dKcVZRazV1QVVXRlJib0xNNStVYkR0MnM0VitKU1gwUDlrS0d0bkt6TGx6S000MlVqajN0NlNNZWc3WHZQSFlldzFpNXFROGR1N1pqVnROSVQvZHpjN2R0UXdja1VYL2toS2E5cVNUYk02bHBLUkVCNUxWTEZ5OGxRVjd2bVJZbGhrb1J2Y3BCU052Wk5xb0lVQXhBMmY5bWIyMWtHWFp5c0oxQ3Bzcjd5WGJEUDN1K3dOUDlQb1pwWjdaNUxzYmFGS3NwR1JrMFM4M25YNzlUL3gzTEE0bmFXbHRiaU1ZVDBEemtyT2dKQXRzeHJhQWw1SU5kalAwS3lIcXVDNTZCTzU2QWdZSDkydjAwN0I2Szl3K05QZ0ZEOXk3Q0lha3gyeXNxWkpLVndiWitpSmIyZGJoY1MxYit5eGxHZGV3Y3Zvb1pHRHV2YmVTZjgrTExKbytHRzlESTZyRlJscEdOZ1ZaL1FnZkltc3lKU1VsN0Z2dHBLbFhVZlI1NnRoaHdQSVZHNW01NmlBREM2d1V6NzJISmF2L0VQR25IV3I4b0xYVi9jcklrVGZ1cDIzdHA2NUVpbGFKamtITllEQUlrOG1JMld6U2dWcHNVWHVvWENvelhDNzFRNDVUQnJZalgxVnh5eXNmTWZlbTBlUW02R2VoWU1PbWpieDZQSm5sTnhaRzNhMGxTU0k3TzV2RTR5NHlNOUNab21xVU9ScGFqOGJnb0RQbUJoSWFlUlBpekRQUDNQYmhoN3ViK3ZidE85VmdNQXovdmc1aWRYVXRaWXQveDY1blEvL1d3dENoMnZQcGMvL09mYlArbDM2NTkyUEpLR0xSc3FjWWt2Y05va055Q3VsQmVtSkp5OERhVkU4ajBMVDFhWVpPZnBUaFk2NG14VzZtd2EzZzlaMGd5dUN1cFVaTkl5ZXIvUktlWkljelBFM01aZ1ZGQVc5ZERZM2VHdTRjZDAza2UwWG5vSHJCMkdza3o4N2F6YXhKVjFCZTQyWDQxUHQ1Zk03a1RuWFhiSTRVMHRKaXZpSGJ2NU04cE9wYVdEb0xWdW1JY1QvOWhoeVFtOTZ1WXhsRi9qcmIrUkpYNlhiR2pQNDAvRjV4M2tXb1FQclF5VHc0cG9LcEl5K2syaVV6K2Q1SG1ULzlWS2RxRTNYMUZqS1NOYitmTVMwTlozQS8vWDcveG9zbjNyN214aG0zSHRLWm4zcFFDeGUxUzdSUjZvZ0JOUk1tVTNzTldFS3kzbTFCN2Z2SVZmdldnZTM0a1lQOFl2bFdab3kvbWt2U29wMnA3NzczSC83eXVjelROMStNdlozQ09ZUFJnQ09ySnozUEZLaHFJSWF0aFlBczVHOExtNlFkZ1ZzSURVWElORDMzM0g2ZnJGcjE2cCt1dXVxcXcyYXorY1p2UGRvaXk2Z3hZdmxaV1JrVVRmOGI5NDVxYXdVN2NvcFpzdUlOUUdINXJKOHphOEZ5dGoxeFp5UjJJNnR0dFBjN0Q5N1VVMU9yVUpSanhGdFhnOGVaUVRMd3hMTEhHRFByS1I2YzNBL3dVYm5tejdFNzNtYS9zYVdUSWRkUldlMmpWOWJKMVNlYTB6Sncybko1ZXUxYllmTlBQNTFHelpqTHFCbHpjZFh0Wm5EaDVXeWVPcGxoblpRRVZ1N1p3dHB0QjJKV2swcnhpQ0hZdjRselRtN2IweUFySGNZc2h2RUZYek9VNXNnbXgxSkhUUVAwU3VHRXh6VXIvUXhTQnFTeWZ1VzhkclpoWThyc2hVeVp2WkQ2MGxVVURmdzlVNllPcDVkUlA3OU9OampsSUQzRlMwMkRCOUtzS0hWMU5LclE0dkc4OU5qU2Y3eDl4eDEvY0hVQ2FsNmRXYXFQZnJZQnRVaGhlN3hPcWNPdTYxV1FHaXhzejZGUG56NllUS1lmUEtqMDlZSE5mNXdaLzNnVFMwWnZHZy91NTdtRFlJaDNNS0VvaS8zbGU3ajFyYys1NGRMK3JQOUFpK3ljZGNhWkRFaFBSUFUwc2VLamFqNnBidUtJVDJWdk55ZjJ0RFBJVUtOOWJEcFFDejBYSWF2VDc5ZHkyYlJFWHdJUmJBc3pRaUdFRUdQR1hIc3dMeTl2d2Z2djc2eTMyV3gzOEMwbUl1Zm45Mkw1b2dWWVJoYlFxM0FnK1ZsT3B0NzVLNGJmOVV0eXpQOURybE5tNTZiMTVJeTZoNkg1ZGxZKy9pQmtEeVEzemN5dWZWWDA2bitUM25BaVAwZmg4UVZQVU44L2cvd0JROGc1a1o5TjliSmd6aXhTYmgvRml2bC9adGpFMzJFRHNyS3plWEh0OCt3cWtpbGI5d1RyeWhYMEtsZTV1WDNZdmVRbFhoeVFqQ010aCtFREM4Q1l4WjB6U3JocnlxMHNtUE1yck40YTlqWGFtRHF1NDE0RWNsb0pkdzcxTVhuNkhHWk5Id1dOTmF6ZFhzWGMyYmZqSzkvTW92WFZEQ2twd2xPOWxRWnpEdG5PenYvTzhDbXpHWDRLdXBHN3QwS2pGMXcrMkw0Skdxd3djSEJFRlRnL0J4NWZBUFg5SVg4QTVDVEQ3VE5oNmpTd3pkZUNDbHZXdytEYm9kOEpDWFFhdzRhbXNHMTdPWU5IUld1SHRYZGM4MGRPSW1mdXBkeTFJSThKUS9LcEw5OURxVHVOZTZhTW9HcnJhbGFWK3hqY0w1ZmEzYnVRczdKSjFzM092RjVuOCtDS2Y3QXF3MDF5Umg2RCtuWG1Ncll4Y2VKdzVzKytuNno3ZnM2YVJZOG94eFhseVV0emUvL25VTnNlQlhwQTgwcVMxQ3FFYUNmNVZoOG9NSWFZbW9pUEQ1bWZOaDFUMDBBdDFLdWdUNTgrV0N5bmgzemkxMC9RVmYwYzlSbElUVERoOVN0NC9RcXRzcG5pRENmSG0xdXcybXlZUkNEOFdWSVhKemxKRmtTcm15MzdEMk5MNnNMWlRpdCtJWkdYbTR2VEtGQVVCVldObEZ1cHFnaWJvanF5Um9pOUNkSGgzZ2xKa2dRZ0dob2ExQWNlZUtEc3R0dHVyYkphclQwbFNYTENOMC9RTFI1eUZVcmRQajZ0cUNLK1J4OXkwNVBvMm5NQVZ4WTVXZlBxcTJ4K3Z3eHJabCtHWG53ZWlYRXlub1pLTnF6L0p4czM3eVNyWkRKemZqMmFPRGxDRVM0WmNTVU41WHY0Zkg4MXFiMzZrOW4xQkJORFRtWFVzRE40L3BtVk9NLzlPUS9kTTU0NEdmSXZ1QlJSdFlOWDMvZ1hDZjNHTVgxMEVUMzdGSk9WckdWNkorV2N4NEFzaWQwZmZVcWR4OHpGNTJtTzNZSkxSNU5ycWVPMVYxL240Mm9YRncrOWd1eFU3ZGc0TTNwVGtKTWEzdGMreFJlVEhDOVRNbW9jbHJvUFdiVnFIWjhlT0VhL1M0WnlUcThlR0NTRkQ3ZjlpdzNyLzBuWlZ4Si9XUEFvNS9WSS9FNG03dHN2dzBjVjBQZENjQitFNmhvNGQxQUUyQzRaQVEzbDhQbCtTTzBGbVYwaDYxd1kwQjFXdlFvN1BvSzBQakQ0ZkxBWUlyZjVBUU1ocnAzdFpYZnhNK2ZwWFV3YmUwblUrKzBlVjFNUzE0Njdpcy9mWGMvYXR6WlIzeHJIa0tIRE9DUFZqb3lYN1p2ZjVxMzE3L0JsU3pjZS9zc0RuSmtVT2VlWjU1WndWdHd4UGl3cngyMTBjbjUrZHFmSDRleUxobUUvOUFFdnJYdTNNbWZ3MVkrdFgvblkrODNIajNlazBLRlA1L0FGQVMwcStUWTIraGxxdmhJZnI1bWZpWW4yb0FTUkpoU3BCUXA2VVZCUWdNMW00M1FaMzVvZTI2bU9ZOGVPVVZwYVNrWEZGeHc0Y0lDNnVqcU9IR21JMFhGckNSYld0K0x6K1NSL1VNdE5WVlZKVmRXUW5wc0JNS0RwdVptRUVIRm9jOVJTVnZaSlVXNXU3aFNEd1hEcEQ2SEg5dFA0TVF3UGQ0NitrbEVMMzJKSXR2VzAyak5GVWY2OWZmdjJOUjAwTSs2Z1Q0SHdDMEZBbHVXQVB2bTIvVHkxV0YyMVVFcUhGdjBzS0NnZ0tTbnB0RG9teGg5NkI1S1NrdWpUcDQvTzlOU2JsbEZFVFUvZkpOQjZKMmltYWRqSklVSit0NkJacWdKcWZuNmYzYzgvLzN6dG1ESFhWQUUzbjg2WFQvbXVUZXl0YW16bkV6dkR4ZzdqcDBLd0gycFlXYmo2MzkvN1ZuME5GYXpadktmZHozS0xoNUxqTkQ3LytPT1BiN3I3N251T0U1M09FV3QrNnR2aytTVkpEa2dTcXI1TXFyMktnbENlV3F6NXFSZUxQTjFBN2JRQU5nQ0h3MEdmUHZrNlVKTjBqMUlZNENSSkNpMUNraVJKODdrcFFVQlRVVlVoOVBsdElaOGJJRzY0NFlaYTRLK2ZmYmF2eW1wTm1BNTBQeDB2bjR5OEl1d1o3VVF6WlNPMm45RGwvOXd3MmpNWVZHS2pIYnZxSzdmSHRUd3hNVHNrNDYxUDU5Q2JvTzMxL2d3QUFhMnlSMWJiTDJqWGZHb2g4ek1VL2RTWVdnalU4ci9WemxJL09tQUQ2TktsU3pEM0pRSm1Hb2lGbUpzVWZoM0wzQUJKVlNVVlZDa0VhbnJtQnFoQjlpWjY5ODVidlduVHBxcnUzZE51TWhnTVEwNjNFMksxT2JIK2hHQS9qZEQ5ekd3aEpTYlJUMUdVelR0MjdIaWpwT1RpR2pydnpxNnZKR2l2OFVxb3FYR2Jpb0pJOG0xSGdZSjh1blRwY3RvZXQrOU0zZU5VUm54OFBIYTdQYXpmRmdva2hMSTZPZ2dhZEpZd0U3WnRRd0FIaUdlZWVlYXcxV3JkMGE5ZlA4K3BLSVQ4Tkg0YVA5UTRkdXpZMHZ2dXUvLzFXMjY1NVlqTzlEeFJ6V2RVTWJ0T2VpZ21uY09pNjlJZUt6Mms5Nm4xT2ExQkRVNkQ0RUVISjQ5UFBpbmppeSsrb0tibUFIVjFoemh5NUFoTlRVMjRYQzZhbTV2eGVEenRCQlQ4S0VvZ0ZGQ0lEU29ZMFlJS1pvSkJCU0R1d0lIcWkzdjA2REZaa3FSemY3cHNmaHFuNjFCVmRjOW5uMzIyS2orL1QzbVFwY1g2MC9RbWFKVHBpU2JqSFdKcUl0TFEyRVRIUGpXOStSbk4xRTVIbjlxM3h0aWFYQzRPdWYzWUxHWmtQV2NLS05RMkhzTWpETmpNMFJtNnJTMHRIR3hxSmk0dURwUGNNZEd5V0N3NEhJNXdUOUxvNmdUQ3ZyaVk1R2FwSS9JV1NnSFJtNmFoMTQ4Kyt1akJnb0tDblRrNU9YNmowZmk5ZzV1cnVwUjNQcTduckt5VWsvK1J0NTVWYTNiUTgrd3p2M0h6a05OcFZPM2R5dnAzdGxEWFlpR25SOWZ2ZndkTzhiaHVYZnNpY2xvQjlyanZacmZjYnZmelR6NjU5T1dSSTBjZXBQMTZUMzBxaDFmcXVPZW5ydTdUSEdacVF2Rmh0am13MnhKSVRJdzBYd2xKRDRWVU9nb0tDazZZSnJWM3l6b0NYWHVTYUpaQWJlVEZKNTloNi91N3FQZlpPQ3Z6KzlOaisvbytOdFhOci8reWt0MStNNmx4QVdyOThUdzY2U291VEltbjV2T1B1ZTdGSFRnZGRqeXU0M1R2MVplL1gxZE1vZ3hQclZyRmtyTGpaRHJpT0hEVXl5MWpSakMxVDhjWGMySmlJbjM3OWtXV1pXVFpFSHlNTEpLa2Y0d0VGQ1JKd3UvM2kyQ0ZnaEJDb0twcVZDQWhxUEdtQ2swNkpIRGRkZU5xZ0wvVjFCelltNTZlZnBNa1NkOXFaNVQxUzJkUmtUNmVHU1BhcHJ6WDc5M0l3ZzFHUnBRVW5Qd0tQVlhNZjNBcGc4Y013ZmxmQkZ4NzFpeGtWV01CY3ljUGJmTlozYlluR0RUbE9hWlAvaGx5aXVjNzI0ZmE3Uzh6ZDdQQzQvZE8rSmFPcThxS0JYOWtWTUY0TXI3bGtMV3FxaDk5L3ZubnEvTHl6djVNeDlKaU83TjN4TklVU1pJQ1FxaXFFQWpaYUZJTkJnT1JFcWxJbmxyZG9hOHdkYzBpTVRFeHFxQTlVaWFsVlJRa0pDUjBmbCtvM3N6a1dTK3daY3VJa0ljUW04M0czZzFQc2JiQ3dvaUJlYWN4c01rbWJoazdtb0pNTFJxeWF0MGJ6TjM0TVc5TktNYnFUT2ZWMzk1RXV0V0U2bk16YWNGenZGU2V4OVE4T3hkZWNCRTNqRTdGTEVQTnZnOFl0bklyMS9RWlEyZjM1WVNFQkFvTEM5Rk9pSXpCMEI3SVNVRmdrd21LVTZKRlRQM0JvRUs0SVROaHBOTVlteXBKVWlpb29BS0JqSXpNelU4OXRleVRjZVBHamJWYXJkUGF2WHMyMVZQdlVzbktTb3M2ZUNyZ2RUWFE0SmJKU285Y0ZxcWlVRjMyQWFXK0lTaUtnaXdia2VYd3hDVjcrQXpXanpTMnVWamNqZlg0ekU3c3NvYzZ0MHhHaWozOG1XTHZ4ODd0eTl0VUFDbEtkQ21PYkRSR3ZxUDZxS211d1pLY1RyTE5FcnM1a0ZYcXFxc3dPdEpKdG4vNzJlT3FxbEJYOVFtN2ErenRIQWVGbmR2ZW85L1lXN2huNW5oazQ4bE5TOFhyb3JxMmtiU01tRDZsS3FpS20rcmFKdEt6TThLMXFxcXE0cTZ0WU10dWIzQWZ0RGwwd3VQcWRkSGdoalNubVpyYUp0SXowc0xmVVJTVlJScy9iVk8wcnlwS1ZDUlQvMzhCbXVxcWNjdjJObjFlUTJvb0IvZVhQLzIzZjZ6WThzRC9tK3NtRWlEUWwwZnB6ZEQyVEU5VmtpUlZWVFhyUktnaXVwbXgyWXdzeThSWnJKaGtpRSt3NFhBNHRNVnV3MktPSXkwOWc5emNzNElWQldadER0VTJrcDZSUmtOTk5iYTBMS3k2VS9Yc3dnY1lNdmwvSXRGNzJjSElDUk94Tkw3TDNxb083dEZOOWRTNUZMS3kwcU91SjhYcnBxYTJIa2RLT283WStSbzhTbzIxMWZnc3pxZ2VyS3JQUTNWdHc2bEVSZU1veUl4dzdpeG5FdDVEZmdDY1hTTXdKWnNUeUxBYmFmRnBGMXRlajRpQ1pvclRqcXo0YVQyUnBrM1FMSTJBbXlFRzVDS3NMY0xncEJEQVNaSWtpZERGSGdRNGdTNWkyZzU3VTI2K2VVcmc1cHVuUEZsZS90a0hPVGs1RXd3R3d5V2hnL24wZlQ5bnp1cEs4dE5rS3R6cHJGNzNFdm5KWmxZL2NpT3pWaDdBYmpRZ2U2b3hGOTNDdW1Vek1WZHZZZmlVLzZWbTMyNmFiSGRUc2NwSjl1QWJXVHByRXVCbDlxUlJiTno3R2U3Q1d5bGRIbXhWN3Q1RGJ0YlBLQ2pKWS92ZVJnYjBTMlBmN3IzTVcvMHhZNG9jckh4NEJvK3YyY0cyS2lmVk5XOFRKdmMxV3hnKy92Nmc0cWFQMHAyN1diVDlLSlA2MmFndjI4Q1k4Yi9DbkpGUFUwVVpRMlkreGlQVE5OYWtsTDZJWS94elRNazl4dFlhZ2FkUlljV3VIZlQ3TnFQNDNuSW1qZm9WWmRXbFZMbTNNWHozQzFoeUwyZnRrbnZBVmNyNHNiK2h2THlVR25VWHc3Yy9ROUhvTzNoa3hzZ1Rzcjh4TS81R2ZtRU9lMHRyZWVURk54azNJSXVtN1V2Sm1mQVlSU2xXTEZhRmZlNTBObXg4aFY3Mkp1NFpmejFiOTFWUVZhY3lmUGg3NER5SGwxOStCQ2QwZUZ3bkQraE9WZklBcW5mdkpHL0FoYmdxUDZKbzJ0OVpmTnNReWpjczViYUhuMmZ2OXUwczJkUEMySEQxazR1N3h2Mk1YZlVhdEZYdjI4M1FXYSt3N000UnFLNUtwbzI5anQwZUp3NWZQUlQ4bkxYTDdnMVdUTlJ4Y1dyLy81d3hyT2pORjVhdnErcUFwZW5OVUY4UTBIeDZsaGE2YVV0YXVFM0VtUXlpVlZFSjlmMDBHK0dyMm9Pb0JoUHlWNGVRVkxBbUp0RzFxNU5Ebi95SDF5czlaR2VrOFB3enk3bmwwWmM1N3p3THkrKzlodm1ibXJHN1A4V1ljUjQyNVN2cWs2OWs5OHR6Z3BkSFBTKytYTWJzZTA4MkZ1ZmxpYWN4dkRnQUFDQUFTVVJCVkh0djRwRjFWZVNtbUtsMEpiTnEvU3ZrT1kxc2ZmbytKai84TmdXNTZWU1hsVEx3dHIrdytNN2dmR2phUlhiZXJZd2RuY3FHWFVkUVhJM01XL01SK2FXUE1QemhMUlE1QkUxTnRlZzZScDNDNGp2T3JRdi93WkpQRHJmNXJIWi9LUmZPZjRVRDN0amZCWGg2NVVvbXYvbngxOXFXcWdiNCtPTzl2UGJhYXl4YTlCZnV1Ky8zL1BLWHYrUzY2OFl5Yk5nd0xycG9JRVZGUmVUbDlTWTdPNXZ1M2J1VG5Kd3NKU1VsU1FrSlZpa3VMazQybVV3R2c4RmdsR1haSk10eW5DUkpWa21TRWlWSjZpSkpVZ3FRQWVRQVp3TkZ2WHIxR3REWWVPVC9DYUhXTkgrNlNuVHRmcUhZMzZ3SUlWVHh0MTlkS241Mi83TkNDRlc4OXFjYlJMY0xKb3ZqQVZVSWY0TzQrdXl1NHFrZERVSUlWUWloaWlkL2U0VzQ1YkV0NGRmNjVkTlhab3MrTjh5UHZIZDh0emlyeDZYaXNGREV6ZWNsaVgrODN5aGVlK0FHOGF2SE5rVytjM2lMNk5Iak1uRzRuZlVKb1lwM0h2dTFPUGZxZTdUOUVXNXg4L2s5eEVOdmxnb2hWQkU0VmlyT3l6eGJmSEJNKzY3LzR4WENZT2dpbm5xM1d2dTkzeU5hL08ydlZ3aFZ2UC84YkpHYW1ocXpkQmRQL3J1Mnc5K0VscmYvK2d0eDFlK1d0ZnZaRzMrNlNWejd4eFVuWEljUXFoQ0JPbkZwank3aStRL3FoUkNxK09TVjJhTGJoVk5GcTFERjBmZWVFSWI0czhTT3cxNGhoQ3IrL011THhFMFByUTMvOXZQWDVvcysxODl1ZjczdEhOZWJMa2dWcjN6cUU4Lzg3aXB4NDU5V2l5UHZMaFY5cnB1cis1MVBYTjhuUWJ6eWVmdjcrdFdISzBYdjNpWGk0K0QrUEhYM1ZlTEszeTRUQWFFS0lUemlqc3ZPRW45NXAxcW9hcUNtcnU2akJUTDhIQmdMakFhdUFpNEhCZ0VYQUVYQnVaa0RaRWlTbEJLY3U0bVNKRmxsV1k2VFpkbGtNQmlNSnBQSllKUWxHY2tnSmRrVEpBa2taMnAzc3JPelNYUEVZYktuY3RGRkE3bDg4UG1ZSkNpNWVoTDMzZmQ3SG5yb0lWNTc3VFUrL25ndnJyS1ZkT3Q5TGMxQzVibmZYYzJ2SDl2TWwyODhUT1pWZHlJQzVaeDc1aVVjQ2w2ZmdmM3I2Tkw5TWc2M2MrMisvZGRidU9xM3k2TGUrK0xOaDhtODhBYU8rclhYci8rLzYvblovU3NRUXVYNHNTWUNvZlVlM1U3UHJ1ZnlSZkI3NHVoT3pqQ1orTU1MdTRMcjh0TFNxdkRwSzNPSlAvTUtEcldxQ09INkJubHNxcCsvdmZvV1NxOEx1Q1UvMnFCc2J2eUtXMS8rZ1B0dnVJYU1HSWZxZXp2L3cvTU5kbDZZOHZYMG1pUkpvcUNnQUtQUmlORm93R0F3aGhtY0xPc2ZvM3h4WWIrYkpDa2g5aVpVVlEwcmh1allXNmkvUWlERTNpb3FLaFNucyt1cXQ5NWE5MzdYUTl0SE93ZGNlbE4yVUNsMjZKRExtUC9FYm1BaUFNV0RCbUdUQWRuSjRJRTU3TnBkeXVUaVFhZDBhR1diSFJzeWRvY2R1ODJPeldiRDdUazVtZTdxcmM4eWZVazU2N2E4b2UyUHE0ek5lenpJbTU3ajNpMGE4L1FwMVpSV3VPblhUNlB3NXB4QmpCOFlsT0F3V3VqTUVPMC9ZUTUxRStiOHNNNjYycjNzOWVRek9GaTluajlrS01iSnY2WmFoV1RBbmorUS9zbWFBVHBrME1Vc1c3c0xHSEdLRzdOaXN4bkJic05oYzJLemUvQ2U1TG53TlpReWJ2ejl6SC94WHhRRTkyZlR4aTM0Y3JPNTc5N1BBQ2gzcXh4NWYvdUtGVisxYnBrNDhjYWpKMkJwb1JwUG55UkpvVFNPZ0M3cUtmVDVhVDdGTDR4eDhaamo0akViUEtMVkQ5YXU4YmdQK2VuYW96dDJleEoyZXlLWjl0MGtkVTJoUjQ4TUVrUWpMeTVkVEhXREIxVngwOVJvSjlTQndXNnpZM1hZY2RvOElOdXc0aWJrRGZVMk5lQ3hPemhab3I5MTg3K3hJdlBnck45ckhMZXlubEx2SG1BOGFsTUY5OTcxSjNhV1ZlRlZmZFM3RzJod1EwNW81Wlo4Sm8zdEYzeGh4aEwwTldUM3Y0QVVNNER0VklFdHdJdHZ2TVYvNURONTZzcjhLR3V5MWQzQXJjOXU1TnFycitLcXJPaE0wNC8zdnM4ZnRydjR4OVFSZEQxRlpaTzh2RHhDemsrajBZakJFQUs2aUptcStlSEN2amdSZkpTQ0VWR2RiellLNEZRZHdJWEFMUUFvVjE0NVlqK3dKUE95WDc2cktNcTFScVB4aXBOeEtuL3pJVWRzOVpOWW5hZDJOK09uL0puRnEvOUZMNGN4dkIrcU9abGhZNjRtSzdpcTBhT3ZKU2MzVXU4b1cyMmNyRmR0NytvRlRKcnpYSnYzNzMzOG40d2ZrTUtQYjhqaGg4alpPQWxaSWFXSjI4ZmZRTW5zcHhoVGxCYTF2Z0ZEcjJaa2dRMUZVZDQrNjZ4ZUc2Wk9IWGRnZVFUUU9nSTF2WTlOMFptZVlYOXhxRStJTEJ1RTBTRHdla0gxdWtWRGF6TUlnYi9GUzBLQ2pUaXpqTWxxbzB1WExqaWREcXhHaWE2cFBlaDVabGZtL2ZJUFhMOXNNOU9IRldDczMweGF3UjlpL20zN2M5Sml0MlAydUhCQjI4Q0wzTjdWb1pKVmRER2pSNGR1L2xjejFaRUJLTnczNldvc2s1NW53eE9ETUZOTmNmSkYwZFBmYXNQU0RuTEpzdkViQkE4UXZQbjIyN3gwUEpsbmYzNGU4YnFkVmp4TjNQSFVlZ1lPR2NhTnZhUC8zdWZsSC9HYlRRZFo4b3VSbkdIOVppcjRQWHYyeEd3MkJ3SE9pTWtVRFhEdE1MY2d3RWxTUkhvOFVxRVFZbTI2d0VKQXg5N0NrK2pBTzA5K1lESTlXVnBUYytDZHQ5L1plRjIvL2xQQ1NyMDd0MnpCclU3R3BqYXllVnNsbzZaR1pLUnRWaHVORGZYZjdmWG5xMmY2dUJzWStlQUxETXZYSFh0N0FVUHlQVlM3bkl3YnJrbnV1QnNhTU5wTzdSemtEWnZLMnY3ajJzeGNaOHFKUS9sV2F5SU5EViszbzVPUGhUT25ZeDB5ZzJramduZnA5QUlLcldWczN0M0FoSDdKbEczYWlGSjRQbGt5ZUFCWDJWWjJOZmdvVGphemFjdC82Ti92OTVGOXNOdHcxZGVnOEYyVzNhZ3N2ZWRHYWdwL3paSUpBNkkrR1RKMElLOStYck5yMHVDU04zdWZsZnRwNk9ZWkEyanRnSnJrbHlRTitJUVFBUUVCT1p4d2l4b0lxQUxKZ05sb0VrYWpFZUZyQnRra3pzaE0xd1FpWlM4ZmYvWVZSbHNpNmFsZCtkenRvVnUzYmppdFhnNDJCUmllY1NiNXVRa2NjWGRsME1BQ2pNRDJkZXVvUDhuN3M1emRqMExmUHNvYW9TUUcyZEtjM2FuY1dCVWxFejlvOENYTW1mOFplZjN2UWJzSEs1cHNQaDZxcXoxTUxTbkdMRVBWcGpYc1BZV21YVi8vM0xZYzRvRk5YK0N5eERGa3ZxWVFhdTZXdzd2VEwyWEhoeCt5c2U0NEg3eStsbis4SG1RSGx3L2ovZ0daL1AydDk2aHRsTGxoNFRQQkZjV3piT1lFK3A1aS85VE16RXdkdUpuUWtnMk5ZVk0xbXNXRmdVNElJYVJnUGFtUXBFQW9WeTRjV05DeHR4REFSYkUzd0orUmtma3YyUmovM3I4L2VYNllFT0k2SUMrRlNvWU51Z3lqcHdaenllK1pNQ0J5ZG9lTnY0VkY0MzVGMGVvSHlCdDJDeS9PbjByZDloY1pPL052ZUJxcXFHcVFLU2w1azRLUmQvRDRqRTcwdDd6N0dEZnNsOVI2WGRUWFZ6T3k1R0xNR1JlejhjWDUxRzk2a2VXNzZpaWNlek12ejlWTzdid1YvMlprdnBVSG4vNEg0OGIvakRVTDhyRDQ2cWwyOTJEanJwVmtuTUp4TjF2dFpGaFBMYStoLzhoSk9CNi9nWUtpRjNBV1hjT1dwMmVkRkxCdFhQa2NqclJSRVdDVDAxaXcrQStNSFhNaEt3cHlLQzJyWmZHS056R2pBWnM5emM2OUl5L0ZhbFVwZDJldzdwR0lRbTM2Z05FTTVSb0tDOC9EbG40QjY5Y3Z3ZG5KY2Uxc3pKOTJCZXZLM095cjlMQjMzRVVzdERwWXNPcE5pdTE3ZVhEUmVzaXJvVi9SMzdUcllPWmYrZU1ORjMwMjlCZXoxdnlxNzZBUGV6OGNVSFJSVEwwaWh5K1dvVW5nRjVvYWh4S2NoMm9FMUNRaHl3aEZFVUpJTW1hemRqMGNiM1lKYzBKeXVBdWMxZXJFWVR5QXF6V080dUtMYUZqM1QxNSt6VVc4MFlTemF6d1pQZlBJN05tTG1WTnlHVFhnUW9veXJNanBtYVNkN1AxUHptRGM2Q3pXYjloRHlmam9iS21DVVZNWXVPd2Fjdkplb1hERXJheFpNSU9jRWJjemE4dk45Qzg4bjRKZTZWUlY3bVBFUFU4eWY5SWdicnR6QWxPSFg4Q3lnalM4MXU3ME9vV2NwdE95OHVEcmpLTkhqMUplWGs1VjFaZlUxdFpTWDE5UFkrTVJtcHFPQldXUFFsVUtMWGk5clhnOEhudytIMEtva3RhaFhpRVFDRWpCL2d1aGFnVXBXTEVnQjhIZkNCaURWUXNtdE1vRk14QjMzMzIvVHp6YlVuSDU2c0ExMXkyL2EyaE9nMWNtSStWMHpDNVRxYXVwQm91VHRPUWZoMGFJNG5WVFU5ZEFTa1lXMW1DK1JkUDJwZVROL0lEYVRYK2lwczVGZWt3YXdROHhoQkQ3RHg4K3ZHYk9uRG03SG52czhWYWRLZWxyeC9RTVBmcURFVTlGdDZoNlgxcXdpb0JnMG0zUWVqR0hHaGxqc1VTNnMydXF0NGs0SEVrNG5WMUpTZWxLdk5uQzJlZWNSMkdmM2xFbFVrMzFOYml4dFVsRk9kRndsYTJoWk1ZR2RtNWFmTkt1RGErN2licEdGMmxwR1ZoMEtUdnV4bm9hUERKWkdjbW4xT1hNK044K3VidDA2VUpoWVNGeGNYSEV4Wm5EZHl3OWc5TXpOeUhVVUljckljdCtTWlpsRkVVUmdVQVVld3NWMThzeDVta0FVSUxtcVIvd3o1Ly9nQTk0cmZjZzhZNzN6dUZEZTNSTHVoYm9lZm9kS1ptMGpPd2ZsZmZMYUxHUm5kMitZb0JzdHBHVlpmdWhBYTN5OE9IRGJ6ejg4TU1mL1BuUEM3dzZnUEozQUdpeGdRRkZIeHdJQXBzSWxVVUY1YnZSUUUzTFR3dFdFMFNCbXMybXFkNG1KWVg2RTJnZDJyT3pzK25kdXpmeDhkRm1reU1sZzFQSjlySG5qMkxoakVacVhTbzVKNm5yYnJFNXlMYTEzWnJObVlMdEcvQ0QvM3JHcHB0RWZQYlpaMVJXN3VmZ3dSb09IVHBFUTBPa3Z0VHRkdVB4ZUhDNWp0SFM0a1VJZ2MvbncrZno0ZmY3SlVWcGw3MUpRZ2c1Q0hDaG1sTkRrTDJaZ3V6TnJGL3V2bnRtNHU5Kzk3dExuVTduMVpJazllR244ZjJ5dUtZYXR1eHpNV1JBL2cvSGpWVzFyTDYrZnYzczJYLzg4TWtubjJ6dEJOQmlGMzhRMU5vRE5EMm9oVmxhRU5SRU1FY052ZVJRQk5UMDFRU3A5T2lSUVU3T21mVHUzZnNIYjdyeVhZMGZEYkNGUmxWVkZaV1ZsZFRVMUZCWFYwZERnNmJHNjNJZDQvaHhOMGVQSHNYajhTQ0VDQmJRdCtMeitmSDcvU0ZsM2lCekMwaXFLcVJnNURSa29vWkNRZ2FkZWRvdXdPWGs1SmkzYnYzUHhhbXBxVmZKc256aFQ1RHo0eCtCUUdEN2dRTTE3MXg4Y1VscFRjMUJKU1l3MEJtbzZRRXQ3RWNMVlE4QVFoL3hiTXZTVEpqTmNlZ1ZiNjFXZmQxbnBKRnhSa1lHT1RrNVpHZG4vNmpQaGZISDlvZXlzN09KajQvSFlva25MaTRPc3prdUhHUXdHazBFQWdGa1dVWUlvVE5UV3pFWURLRTdZWWk5aVVBZ2dDUkpvYnkza0VrcXh3WVhZc3hUSDJDdXJLdzBwNmYzZUFmWVVsNytXVkYyZHZaUWs4azA2cWZMLzhjM1dsdGIxKzdidCsvZG9xSno5K3ZBVE0vU2ZPMkFtcjhEUUF2b1VqakNabWNzU3pNYWpVR1dwb0dheFdMUnlYZ25ZTE1sa3BTVWhOT3BseDNLb21mUEhGSlRVMy8wNThUNFkveFRxYW1wV0szV0lNQlpzRmdpQUJjSUtCZ01CbFJWRFVkUXZWNWpDTnp3K1h4Q2x1WDJmRzhpYUpyR1JrOERCSnRpb0lYaVRYcUFBOHk1dWIxM0FudmVlV2ZqUzhYRkZ3eXkyUkt1Z2xNS1N2NDBUaC9YUjgzeDQ4Zi8rYTkvYmQ0OWV2VG9oZzRBclQxUTgzZkcwRG95TzBNc3JYM1RVKzlQMDRJRVNVa09uRTRuS1NuZDZONjlPMWxaWjlDclYwOFNFeFAvVDV5ZlV6WkZtMXd1anZsbGVuU3hSUmNBQnhScWp4N0hFSjlBYWtKMHI4cVdGZy8xYmgvSmppUVNUTkwzTWZrb0x5L255eSsxaU9taFEvVWNPRkROMGFOTnFHb0F0MXVMbUxhMFJKckZ0TGEyNHZmNzhQbTBoakU2M3h1aDVqRnFRS0FLSVFmYm1ZWk0xSTU4Y0hwVDFRU1lKMHlZWVBuVG54NitJQ1VsWllqUmFPeFF4WGZQNXRWWThvYVJsM2J5elVOcXk2QkNnVUdGUDY2SldyRnJNMnBHTWJuaFk2R2lLRkZsNWhpREUvRkVKY2lxcXVxSzM2TStvYjZtR3AvWjBTWWkyTlJRUTZNYjB0TFQvblhvWU0yN3Yvbk5iejU5L2ZYWC9TY0phUDUyQUMzUUFVTlRRL1hPd1FBQjBTd3Qwcnk0clQ4dG9xUG1kR3BCZ3ZUMGRNNDQ0d3h5YzNPL1UzOWE5ZDZ0dUoyRjVHZWNIaEgzNzAyMmFQbnFWVHkycjVuVVJETzFqYzFNdnZwS3BoZCt0MjBISkVtaWQrL2VKQ1FrQlBONTR2SDcvUmdNUmxRMUVKWGtHNWs4QmxwYmpSZ01QdngrdjlDK0wwdUtFa0JSRktINEF2aFZGVWtTS3RwTk5hd1dFc3gzTXdRbmE0akJHWU9BNWdzQjI0b1ZLMXBYckZqeEwyRHJ4bzF2UDNYKytlZGZrSmlZT0ZTU3BDaGRsL1ZQUDBUeWxBRmZDOWoyYllNVmpUOHVZRk5kNVV5Wit2OVlzZjN0OEhzcjU5M0F4QWZYayt5d2hhZnlJMnMrWW55L1JvcHQ1ekp2MzFHR3Q4ZUpQV1VVcEJWZ0gvY3cyNWZPakFCWHhWYkdqYnVKV21NR2RxVWV1ZkJtdGo1OUQzanJ1V1BDMVordC9zUzNPY25RL05ISG41WWYwWUZTZTREbTd3RFFsQk1BbW1nL09HREFhRFRwcFlhSWl6TVRGMmRweDUrbUtkNTI3WnBNYW1vcUdSazkyUDM2WXR6WExhTDNkeHdrc0NrMWpKbStsbTFySDhSOEdzeVpVMkJzclpRZWFJbVNMWHF5S1pXM0poVFRlT1FJM25oN2xHelI0TkUzTURYUFRrdXJqL2c0N1M4ZjJiK1hpNS8vZ3YvTXVvYnZTMDZ3cWFtSnlzcjlsSmFXVWx0YlN5QVE0T2pSUm80ZDA0SUtzZmx1UVdYZVVOUVVSVkh3Ky8xUzgvRUFmalZBbkRrU1BkVUZHQ1Foa0tGTmtNRVFaSERHR0JZWHRYejg4ZDY4bmoxN1hoZ2ZIejlFVlpSMFZjZENUZ29BVkcyUmpUR01KVWhoM0kzUTVJT010SzhKTEY2b3FvV01iQWlsR25tYW9LNFIwcktJa3E0SjFiNVVWMEZ5QmxoMXMxenhRblVkWkdXM3ZhT3F3YzlTMHFOL0E3QngwVFNXTkE1aDFaenhPbUQ3T1F0ckxtSHI0OU5qMWxSRi8wNkFyWEx0ZzR4ZHNndDMyV0UyVi95YmRDT0FtMG45ZTJLZjloS0xwdzBHb0xTMHJQYk1NOC9ZL05KRDB6Nzh4ZisrVUIzeXFaNEVvT2tYSmNqUUF1MlpuQVNGVDRNMXpURm1wd0dEd1JSc1dteWlJOU16SVNHQlJKc1ZDWWt1S2VuMHpNNElCZ2t5eWM3SzRwRnBBM0ZNZnBPN1JtUkh5MWdCN29aYUdyeG1zak9TMjh5VnhycHFGR3N5S2Zib202cW5xWjY2Smk5cDZSblJVbEg0bUQ2b0Q0TVh2cy80Zmo5OGc1ZnZUYllvQkdxaFkyYzB5SHlmZ1dhSHc4RTU1eFRTMnVyRlpES2hLSDdpNHkzRXhWbUNRUWJORWR2Y2JNSm9iTUZrTXVMMWFpek81L1BoYi9WenBNRWdWRldSQkFxdHJZcVE1QUJtazRxRUpIeCtEZHhDUVFaWkRnY1pBa0pnQUNsWXhTTkN6SzBOeVBYdFc3Z0grQVI0K29JTEx1aDc0TE1QejcvN2hZckJkdzdQU0QrWi96aHRPT3lxZ093SnNIcGU1UDE3eDhBZUdWUTNWSmZDMEZtdytMWVRyKy9wbWJDcUNlcDNBbFl3RnNEV3BmRHdkRmkrQjNKU29MUU01andORTB2QXZRY3l4c0hJWEdod3daNDYyTElMY3UxUXR4c0dqNGFNUXUyZjc5c01XNXNnRzlqK01reStGM29WUVBrK21MOEN4dllQd3lFclZyek82RVVQZnl2ellNM3FOeGc2NFZHOFM2OWw3ZllHcHBVazQ5MjNudFVWV2V5WmZFbXR4K1BaVWxIeHhVZm5uSFBPZmoyNzZnRFEyZ08yMEh1aG9GSWdER2l5ckVwQ3FHcW9JemdJSkVrWVRTWU1zaVM4TFMzSTVnUzZXT1BBM3l3YWpyckl6TTdHYXRGQXpXS0pJeTR1MUpIZFNrS0NqWGpKemVzdnY0RTE3UXppMUdaU2lzZng1SnpCMkJwMk0yNzhQWlR2cWNGWWVSTWJGbGtaTVA1dTVrMGRCa29qc3lkZnk4djdWTEtzSGhwdHhheGQ5VGZTTERCelJDYmJQSDB4bWczVVYrNWw5T3puZUhDeVZzLzU0dHdibVBWeUpZVzlrcW5ZVjg4VFczY3dJSXlKWmthTnVvZ2xMNjlsZkwrSlVjZmNWYmFlQ2ZjOHk3emxLeWh5bkxiQXBoditacGJ0K0lKeGw3Y045bjFWOVNsYmpqbDVXVmN6dXYyRDkxbjAvbjRxajdReWI4TFB2bmYxVjRQQlFNK2VQWW1McytEenRXSzFKZ1M3WE1jQ25KbVdGaTJLMnRyYXFvR2IwY2NaMlVhTzF2bUZLK0NuUzZJV1BRMEVBcUxGRndCSnhXeFNoYXFxa3FJZ0NSQ1NGSTZpQmdDREpLR0FaQWhPZkdQUVREVzJBM1RHSFR0MjdBTDIvT2JLcktjdTIvdFI3NXljbkNLcjFYcGhaN2x4U3pmQTJvV3d0SjF5VEZzQnJKd0xUZHNoZXhvc3ZPM2tUdjcyUGJCM082Ulp3UnZzQ2pqOVliZ242RXFwV2crRDU4TEVEY0U3ZWgzY3N4TUtIWERQY0ZpNUVlNGJBdy9mQzJNZmhIa1RvR29EOU5vWXZNazF3TVRiNGRuZE1EQWQ2clpDOFYwd2VrdHcvM3dWN0N5MWMzdEIyeXVpZE0xZkdGcnhxamFSMHk1ZzlmSjVuV2U4cTNXc1hsZkY3SG45OGRSZXl1TnIxekYxNE1TeThnLzM3ZkIwY1pUMWpEUG9tWm1xWTFtZEFacWlZMmVLSHN3a0NUWFlsRmhvaWd1U2tHUkpHTU9SVG9sV2I2dFFoWUY0czRuNE9CT05UY2RGZ0hpT0hXc2hMYXNuU2JiNHNEOHQwajNLaXMybXFkMGUrYlNVaEw0amVmaXVjZlRva1U1NmVqcFpXVm1RbTh2R2plT1pOZlpzSEpPZlorYkk3UEJoMlB6NGJOWjRMMkx2cm5tWVVWazQ3UkllWHI2TkJWTUhhaVJnd0RqV1BUd1pUL1ZHZXZXL20ybmpkNUJqcVdQSjRzMHMyM3VRUVdtQTRzTVhZMHdVRmhheDY4R2RoQlJ2d3JjbVZ4MjdkbjJFMi9mZkVCVTlCZG1pdm5sbjh6L3BaN0IxOXdjc2VtY1BsMDBkVE1JUFFGTlRVbEp3T3J1UW1KaUl6WllRRlVIVkp0RngzRzR6WnJPSGxoYU40WVZNMDJhekQ4bHZ4R0x4aTJCZ1FmSzRGUXltZ0RBYXRSNE5BVVVWSUNSWkRrZFJKUTNraEJ5OFVPVGdoV0FJbXFuaHNxMTJnTTVZV0hqT1IwRW05OUpiYjYzcmZ0NTU1K1U3SEk0aWs4bDBJWEJTblRVR0J2WC9IRmxnYVFRM25GUjIrYkF4R3FnQllYbVl1cjB3WXlHVTEyZ21aTDF1Z3R0eU5WQUR5TXFDVU8vblhidGg5dFBhOCt5QmtCR2NlVlhib05ZSXF4ZkJHa0QxZ2FzVWFvRXNBRmNEalVZSGpuYmNqRG1Ecm1QeG5LREV0OUYyUXQ5TzQvYTFsS1pkZHV6OHJvRWQ5VVhGZTkrWjlOY3ZEQTlOUGhMeWtYYkN6dG9ETmIzQ1JyVHZERlNCcEdxUFFvUjdic2l5TU1nSTdZYW9DSkMwM3BFR0l4YUxSUmlOUnRLTmNQQndBL2JVYkxwM3Rlc0NCQnFvMld6UnFSelpDZWZ6K3FLVlBMc3lnV0hEUnBCYmRHS2h4eTFiL29YWjA1L1o5LzQrNkRid1VHZlpDMmpBTm1TUVpvNWJzd1pTYkM5bGQ1VkNUbDR5UXdZbGM5dTRheGczOGpJR0R4L0ZvTUtzcVBYYW5RNWM5VWZhYk04NVlESjFkWk5QZDFNVVRsVzJLQ0hCeGxrSk5zNjZzb1EzNXE1ZzI1Rkx1THpyRDVQNWJMVmE2ZE9uRDNhN25jVEVSQklTYkZpdFZxeldlSnFhTkFibmRzZGhOamRqTnB2d2VrMTR2YTBjTnhzeDRDYytQdXg3RTdMa0IyTkFNcHMxQnVkcjFSaWNMR3NwSW9HQVFKS0ZoQWdIN0tUZ1hWM1dtSnprMS9uaURERWdwd2M2WTFCQzZRQ3c4Wnh6Q2szTGxqMlZrNU56Wm0rYnpWWm9OQnI3US90OWxjT0tMbCt6OE00U0crUnl3OWl4TUc4ZGpPd0hudDJRTnFXZDdjUnNTemFDVDRuNEl2U2VYWHNHakJrZGVUMW1QSVFGa093TzdJb0xseGRpNlpqVmtVNWUzZ2wxOU4yS29uemdjcmxLRno3K1ZPV1JEN2ZYMk0zTDFSaG1Gb2p4ZzNVRWFIb3cwLzlHMWZ2UGdvMGlWVWxDSUJDeUxLTUdBa0tXRGFoS3F4RElKTm9UTVp1TUhHdHNFQWFUQmw0bWt3bVA1d2l5TE9Ieks5Z1NiY1RIdE1RTDlmbDBPcDEwNjVaQ2V2cUZiTHZtSmo3NzlGTldQZnNnZjMzdEE4cld6Tzg4S2d3VURyaWMwY09DZ2d1anI4YWVrbjFDcUpqejh2dU0zcjZGTFpzMk1ISEkrVHk0N21NbUZFZWtxdHhOTG16TzA2T0QxZmNrVzZUeTFiRVd1aWRwL0t5eHZvNERpcGt1bGgrK25DTXpNeE9Id3hFRU9Gc1k0T0xqajJLeGFPQ21CUlphTUpsYU9CWm53b0NQaEFSanFHS0JoRGdqTHNVdkxIWURpaThndVlXQ3lSd1FKbGtsRUFqZzk2dElraURZVHliVTZGbHZwc3JCQzhRZ1NWSTQ2S0FEdWZiQXp2alJSM3VONTUxM1hpbXdEMWg3eGhsbkdHNGI5WHhXcStHc0hKOHZxYmZKWkNxUUpLblh0M3JBR3FIYUNDVkYyazZ2VzMxUzZtUU1HZ2pyMThDSUdiQjNQZFFvRWZabXF3WTVHNHFEUVkyR0JoMkdtWE1wem0ya3ROeERZZUdKbzhOQ2lBcFZpRStPSHE2cjJGeXg3OHNiYjV4MHFLYW1SbzFoWmUyeHM0NVlXdml6b05LTEVyTU9WUWloVDlVUVdndGNTY2d5QkZTRXdXQkE4ZnVGd1dSQ1ZWb3htT0t4eHNjSmd4UkFVU0UrVG10N0o3eE5mSFZNMEsrNG1PcTlIMURqeXViOE5JY3U0VllmOWRUcVBidDI2VUpxang2Y2ZlNkZETy9uSUcza2MzZzFsNmpHb0MwVzZoc2EwTHlaMmhnODZGTHUyVnBKdjlrVE5aYXJlbWhvaXR4cU5tM1p4TXlSVS9CVWIyT25xNEFGMlViQWg4dXRValJ3S0VVRGg5SlUray9LeW10QkIyeGxaYVVVOVcvTEdOM2xtNWd4ZnhYM0xGcE12djEwQmJaVGtpMUs1Uy9QdmNTN0xSYTZ4Y3Q4ZWFTWmNTTXZvMy9DYVFIdUpDWW1VbEJRUUZKU2tnN2dFckJhRzJscWlzZGljUkVYMTB4Y25KbkdPRE1tNGNWbU05SGFxa1ZOMHpKOXVDdE0xQi8ySTFSRnlHWUZlNElpQlpON2hkY2JRRGFxUWhhcUZFcjAxUVVhUWlBWFpuSEJ2RGcvMGJseGhoaUFhL1A4eXkrL05QenVyeVdmQVJWeEMza0hNRHp5eUo5c2g1b3VUMDkwOWNocWJiV2RhUkttWGlEM1JsTW8rZm9qQzI0ZkNDVURJTWNHeVZrbk40bnVlaGhHajRIOHBaRGJIN0tDZHFPY0RDc1d3YVNCV3ZEQVZRdm0vckR4OFloVGV1eTRLMWk1ZmlNVENrZEZoK2VGK016cjlYNXgvUGp4TDZ1cnF3Lys4NThiRHQxLy8vMHRnRHFoWDdvNEFaaDFCR3F4ejhOTDhQeEVKZElHMndNSmlLUnJJRWxDUXNKb2tJUmYwZEtLZksxZVRPWTRMQ1pWSEdseWM3akJDMExDYUpBd3g4VmpOY1BlZlhYazlSdElhbGM3R1lNdjR1Mk5PL0hrOXlhN1czSlFsY05KdDI3ZHdxVlJtWm1aYkhyaUxpNWUrQjhLOHJLbzNMdUgyKzc3QjNyNEh6dnRONHlkZGdNYkY5c1pQUGwvV0RCakJJT256V1hFenVzb0tMcUkvQ3dIRmVXVnpGajhKdE9IYW1TL2FmdkxEQnI2R2syVnBVeDYrQmx5TEFCMWpDKytGSGRHUG5ZYXFIVG5zbVprWVJSNVdidm0zNHlkTzYvTnVmZldsL1BNTXk4eDhjSHZEOWkrMTFyUlprOHpSN3dLWFJNVFNUREpQd2lJMWRmWDQvUDV5Y2pvMGY0K05qZFRYVjBkVHVnOWNpUlVhK29LeXlDMXRHaSt0OVpXYnhEY3RIcFRqOXVISWhTRXFxV0hoSXJxUTlVTHdScFVnaldvb1VKN1FrQ25lNVNEZ0NmcmxwQ01raUdtQ2ZTSm5odGlmdy9JcTFhOW1weVhsOWN0T2JsYnFzMldrRzR5bWJvYkRJWU1TWkl5MnhwOWJVZEREU2hXU1B1YUVTQkZBV29oYXlpVWwwZnNabFdCbWhxd0o0TWpZa3g3aFJBSFdnL3ZPamh3K0IrL1dySDI2YStVeHZyRFpXVmxSNjYvZnZ4UklocDY0ZlNKRHNDc0k0Ylc0Zk5ROGJudTkvb1VqWENxUnVneDJCMHRxTllzaVpCY3ZXNkpsRU1aWkFRUzFnUWJscmhRbmFjNUdQRU1CUWdTd3Uzd3VuUnhoRmxhS0RpZ2I0WG44N2lvclcvVU9qcFpUejZMek5OVVQ0TkxJUzA5SFhQdzdqUnplQ2JaTTk5bllxR0NZbkdTSEpYdW9kSlFXNHNiTTFucEtkR3BJL3ZXTW5ENk9yWnZYb0wxTkNBclA3b2krRzhLYktGUlYxY1hMS1EvUkVQRFlSb2JHNE1hYnhHbEVJK24vWW9Gdjk4ZnpuM1RWeTRFQW9vVUNLaGhnQXNFMUNDd3FhaHFHTlRRTWJxT1FDNE1VREdxSTUwdGNzeHpPZVo1YUJ2U280OHVzUFh0MjllZWxwWm1UMHBLc2x1dFZydlpiTFlialVhN3dXQ3d5N0pza3lUSkprbFNnaVJKOFVFZ0RBa0FHSFRldFJBdytHcTM0cHY1TE41emU0dVdiYStKNXZRSndyM3dsNm83RUFnY1Z4VEYxZHJhNnZKNFBNZWJtcHBjWDMzMTFmRzllejkyMzMzMzNSNGRlSWtZSUJPZGIrLzA0Z0FBQzh4SlJFRlVnSmtleURwaWFsRkxKMEFXQldaNklBT0VMRXRDNjVJbVlURElPa0NUTVJpTXNaVURSQkp0MjFZUWFNbTJtaUpIWXFJOXpOS1NrN3NGdTdGck9XcmY1UWdCMjR5aFgyODcrN2F0cGNGUlRFbis2U0VQL3hPd2RaYk40dmR6NE1DQnNJQ2xKb04wbEdQSFhPMktXRWFyaGZpQ0FLZTBBM0FSRnFkMXVsZEQ1VnJFTUxqT1FLNWRzTk9WZDhtZGdKcWhIV0NMWGZUYjZXeWhuY2ZZNTlGTzJyYlA5WStkTGJGQUZydDB4TkxhUEE5SnY3Y0hZaWNDczlEem1KNGFVZXlzTGFDRlFDMVN1TjZSR0dSU2toMkhvd3ZKeVYxeHlHNys4MkVsRG1jWERJYm8vdlQ5aDQxblFPNjMyMTE5Mzg3TldIc05KTXRwL3ErK3puOEN0cE1ZeDQ0ZDQrREJnOVRWMVhINGNJaTlSWFRlbXBzOU92TTBVclVRcVRtTkJyaEFJQkJscHFxcUdnVnlRcWlTcW9xd3FVcTQ0Yk9RaEVBUGRGSTdJQlFEVU1LZ1ZVTzB5OUk2QXplcEE0Q1Qyd0cxemdDdU0zQ0xCVFRhQWJIT0dKcmFBVnVMZXEybDJraWRnbGpRWjZick54djJtNFhBTEdocVNraFNOSmpwUUUyRUZHUDBnR1kwUmhoYXFIcWdiVjZhVFZmbkdmR2w5ZWpSZzZTa0pINGEzM2xVOVAvZVNFcEtJaWtwaWE1ZHUxSmIreFgxOVllQ09tOUhneVZaeDRNRjljM2hnbnF2VjErU3BXZHZJUk0xRUtVZW9nbGNCZ2dFVkZSVkZVR1FFNnFxU3FGK00xcS9CcUpZWFBBQ2ptVjBPZ0NTWkVtS0JUd2hCd0d5TTBEckROeStEblA3T3NEMmRjek9kZ0V1Q0VpZEFoalJ6YkxEb0tyM21ZVmVCd0V0aXBscFFDYUgyajZLRUZPTDFIWWF3d3JPRVpZV3FSNndSS1Z3aEZoYUVsMjZkQ0U1T1ptVWxGVFMwN3YvbjVBWCtnbllmdUJSV3ZvSnVibG5rWnFheW9FRE5kVFZmY1hodzRjNWN1UklsSkJseUR6Vks0Ym9hMDQxMzVzR2NvRkFHT0FJQkFKNmlTUkp4K0JFaE1tSjBLT0lNVlhSUjFjamJGeEk3WU5TRk5oRmZhY2RjMWM2QWJCMXhOcGlUVkxSQ2JoMUJuQnFlNjkxb05RWnM0djlUZFMyOUs5alRFMWtXZFlGQS9TQVppQ2t1aEVMYUFaRGhLSHBpOWJiVTdiVnpNNklFR1RYcmwyRExLMDdtWmsvS1ZyOUJHdy93TWpNekNBMU5ZWGEydHF3U205Yjg3UTVHRndJQVp3dnh2L1docjJGQWd4QmtGTTdCRGtkd0JITjVxUllvSXQ2M3M1bmJaWmdIbDBuekV4TDB2b3VmV3hCMW5XeVRLNmpCYjFwR2ZPYTlsaFppSm5wL0dmdGdGbkk3RFIyd3RMMGZqUnpVQk13WGljQ0dXMTJodFJ0MDlQVE1adk5QMTFnUHd5d0JkaXhkeC8vclBpS1k0cE13Vms5dWVIY016QURyYzFOdkxyck0vYldIY05nc1RHeXVKQUx1OGNrd2l2TlBQWHZqem16OTlrTXp2anY5UjJZeldheXM3TkpUVTF0WTU3cW82ZlIvamM5ZytzNGVxb29Db3EvbFpaV0NZdFppZ0k1WGJDaFBaQWowaVlWS2ZaUlZWVWtXUTRKMk1ReU96cGhZcnJYVWtqVzYyVEJyQ1BHRnZXZUNOblpKMlp5ZEFKZ2tkOExJVlJWWURESVVVeE01eTlEbjZJUkMyYWh3SUMrQ2JlZW9YVVc3WXo0MFN4dC9HaWhhR2VzMlJuYlVLVzlVYllic29xZzNaYXc3aW9tVEhtWXhTdVc0TlJkMWJYbGU1QlQ4a2x6ZkR1QTZTbGR4ZUM1dTlqNTh2eHZ2SjRoYzNleC9SVFdjekwvNlJUMDJJNnplbmN0UllYWnBKcFZscjI5a2MrT1g4YURnN0w1c3JLS2o1dGxMdTJiaS92SVFYNzk5NVVzdm1NaUE3cEVOdlBXNXEwc2VlOUxyckwxK0s4R3R0Q0lqNCtuWjg4YzB0SlNxYXVybzc2K1BtaWU2djF2SVlCcmFTT0wxRkgwdExuaENJY2JBK1JrcGVqVFE0VE9ENmNIT1lSUWhSWndVQWtHSHNKQUY3ek9KU0VFa2l3alJjQ09rMkZkTWNCM0lqQTcyWEtTTnFhcGlQdzRDcVJDN0tvanRxY0h4UER6NFA4ekdBemg5Mk1DQUVRZVk4Rk0xalhkMWdPYUlkaVl1Nk5vWjdTc1VFaUZRd08waUIrdGE5ZXVwS1Nra0phV0ZwV1BkcUl4YlFRc3JJRCs3UlROclZzeUI4dUE4VkdnQnJEa3ZwL2ptUHhXVkJIOE43cWhweFZ3KzZSdm50S2hlbDFVVlI4K3BkK2V6SC82K3NBbU8zaGc4dVhobDEwOGg3bDF6NWN3S0p2Y3ZrVTgwRGYwU1RhN1AvbVVMZnNiR2RCRk94Q3V1djA4VjJ2anVqT3RlSDVrMURjaElZR2VQWHZTdlh2M2NQVDBTTzFuUFAvQ2UvUXRLY0hlY2h6WG9VbzJmVkpMbjc2NUpMUzJCQU1Nc1F6T3k0RXZ2cURwV0ROQ0VSdzVjZ1JWTXBHUzRvUkFnSURpNWZEaFkxaXRSbkhNNVVKRnhwN2tRQloreWVWeW93UzBXSUlwemlKTVJna2hCQUcvRDE4Z0lBQkpsZzFJaE1CT1JWRlVMU0NocXFDeGxwTUZyVFlBcGtYWXBUQ2xDNmJrSTdjdmNpakMzd21CclBiOVlGNFlZWUFLN20yUTFXbUFKSVFxaE5CK0wwa3lScU1oQkhBRUZEOENDVW5Xb3BRaFVBdjRXMUV4b3JTMkVoQmd0ZG14eHBuQ1FOWk8yZ1p0ZldudE16U3Q3MEFRMEl6eDdQbkVTdTRaTm5ac1M2UmJUaEkzVDNTUTNrM3pveDJ0U09OdnoxaHh5VEIrT2d3dEJEeXdjQkdNdnhQU0xPQ3JoMGVlaFJsM1FlVW1XTGtacXR6dytGeElNOE9JU1RBd040UVNqU3grNGwvY3RXVnArT0EybFc5andiTnZzYm0wSHN2eVA5TzAzVUhlNEd1Wk9GUnJabHk1Y3kxYm01SkpxZDNDaTVzK0lYZkl6N2x2OG5BcWQyM2c2WmZmb3JxdWtmVGM4NWx4KzNUUzdScE1ySHY2WWJaVkhNZWFkWDdVaWF6WXZvYnRqWGE4ZXphd3RlSUlJNmY4bHJFbHVTZHgxZmhZdldRZWEzWitTYitSTjNIYjJCSmtvTDU4TzB1ZlhVVjU5U0djR2IyWmR2dWQ1S1ZaVC9pZlZFODl5eFl2Wm12cEFiNXgrdituOVEza3ByZVRTK00vVHNVUmxUNnBRVmFtK25obzdVNm1YM2srY1QvT2psK0FWbHlmazVQRE9lZWNRLzY1Z3pqSDBjQ0xHOHZJeWtwangvbzFtRFB5eVV4THBWdTNGSktUdStKME9uRTR1b1RMdWV4Mk82azlNa2gxSmlLWkUwaExTeU0xcFNzSlZvMEJ4TWNaY0x1UGMrUm9NM2FIRTd2Tmd0RWNSNXhSRnJJcFR0aVRrb1F0d1N4OExjMWdER2EwV3pRNUpzMDJNd21UeVNTTVJxTXdHaVFSQkFoaE1CcUUxc1JCVWcwR2d5ckxjbnRMSUxpRUd2ZEdMNXIybkNKSmtxWjRvZFZWaGwvSExBRkprZ0t5SkFWa1dRNG15V3JybG1VcHZCMkJVSVdHdW1wd3U2ckJZRkFsdEk1TkpwTlJTS2hDQ2FqQ2FEUUtrOGtrVENhek1FaUlnQ3AwaXJOeGlJQkNhMnVyc0NRa0NwdFpGbTdYY1JFWHIvbS9Jbzc5NEhHT2o4ZHF0WEM4c1o1RGh3NVJWMWRIYlcwdEJ3OGU1S3NqYnV4Mk8wbEpTVGdjWFlKK3NxNTA2NVpDYW1vcTZjbmRlVzlMQm1VTlozRDk5VGswN3N4bFcxMCs1NXh6RGtwRkR0ZmVhYVZrTEV3YUNYZU5nWjMxZ0JXeWZERHBIazBzZE5ZVWNLV0JYWWIwWGpCOE9Eak5VRHhFZTU2bHUrUjg1WnZZS2ZkblFIcUVwMWlTc3hnMi9BcXlVMnowNm5jeHc0ZGZRYjllRVZtL3lwMXZjdCswWDdDcXdzTDRpZGRqVlZ3QVZGV1UwMnZBbGR4KzF4MWt1ZDlqMkpSNVljR0N2SDZES2NrSzhNaXlOMktBN1ExbVRMc2J0V0FvRTRabU1uM3N6VlNmaEVSUjArNVZiSEQxWXZxVWExazkrem9XYjZnRW9LYXlBbWQrQ1hmZWRRY2xLWWNZTnVJVzNDZjZUNnFMR1NNdVpsMk5uV20zMy9ITmdnZlYrei9oc1U4Q1BEbmo3RmlpeVROck5oSjM5Z0N1N0tHVkpPN2M4UjVObVVVTTZtYm13LzhEemt1THhVSjJkalozTFg2QlR5Ky9tTWNmLzRER3pKSE12dTRTM0M1OWlvaW5UWW1XMVpxSVRiaW85UGpKeU1pSTlzRVp0Um1UY1ZadkVnMUNaNlphTU1mN2FQWTBvMGp4eUhLTFVERVFGMmRHbU0zRVdWUWFXcjJTMFJ4SG5DRm9zaXFDRnE5ZnhOc1NrSVdndGFVWlJZRFJhQ1Jpd1lxUU9Sb21Xa0VpRmtXK2hORGlwcW8vQUxLTWpDb0ZBbUF3R0pHbGprMVFqV1JKK0gwK0pJTVJveHg1RDBBRUFnUWtDWXNsTHNxa05KdE5CQlNGZ0Nvd0dtUjhBVUZjbkJsSmtwRXNGcFFXRjY1V1NWZ3NjV0Z6cy9XNGhDa3VpV1NuQTFsSzRIaGxMWEpjUFBGR2ZiV0FQakFnMDJwTEpJNW9jOVNjMkFXbnMwdVVEMDNmU01WT0VpYWpnOS8rMFVtLzFHNTBQNTdLcXpWR0xCWll1aEFtem9JUkpkci9uem9VVnF5RjRpa3daaFpzSGdGanhrQlRDbXdNeXBxbFpHdUwzUXo5U3RxYW9yWGxWVmh5TXFOa1hTek9ERXBLTWxpZllzV1JYMHhKU1Z1enpaaDNCWS9QdXgwWkdCNThiOGo0R2RSVzdHVnZlUTBaaGVkUzkreGJOQUxKUUU1aE1TbStNdVJsYlUzSWdwRTNNbTNVRUtDWWdiUCt6TjVhVFNtNTA1RStpUG4zanNjQnpKcHhEZmU4dUlyYmg4MmszL0NKWkZmdlkwOVpKZVplNTJDcGZJQUtOeFIxOHA5Y3UxZXp2RGFQbXMwenNRUC9IM2l4Z0ptUU81d3VBQUFBQUVsRlRrU3VRbUNDIl0sWzEsImRldGFpbHMtY29udGFpbmVyIl0sWzEsImRldGFpbHMiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9hcGlfZG9jcy9weXRob24vdGYvZGVidWdnaW5nL2V4cGVyaW1lbnRhbC9lbmFibGVfZHVtcF9kZWJ1Z19pbmZvIiwidGFyZ2V0IiwiYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL2RlYnVnZ2luZyIsInRhcmdldCIsImJsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiLDEpLGt1KDIsIkRlYnVnZ2VyIFYyIGlzIGluYWN0aXZlIGJlY2F1c2Ugbm8gZGF0YSBpcyBhdmFpbGFibGUuIiksQW0oKSxSbSgzLCJkaXYiKSxrdSg0LCJUbyB1c2UgdGhlIGRlYnVnZ2VyLCIpLEFtKCksUm0oNSwiZGl2IiksUm0oNiwib2wiKSxSbSg3LCJsaSIpLGt1KDgsIiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwcm9ncmFtOiAiKSxSbSg5LCJkaXYiLDIpLFJtKDEwLCJzcGFuIiksa3UoMTEsInRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygiKSxBbSgpLFJtKDEyLCJzcGFuIiwzKSxrdSgxMywibG9nZGlyIiksQW0oKSxrdSgxNCwiLCAiKSxSbSgxNSwic3BhbiIsMyksa3UoMTYsJ3RlbnNvcl9kZWJ1Z19tb2RlPSJGVUxMX0hFQUxUSCInKSxBbSgpLGt1KDE3LCIsICIpLFJtKDE4LCJzcGFuIiwzKSxrdSgxOSwiY2lyY3VsYXJfYnVmZmVyX3NpemU9LTEiKSxBbSgpLFJtKDIwLCJzcGFuIiksa3UoMjEsIikiKSxBbSgpLEFtKCksQW0oKSxSbSgyMiwibGkiKSxrdSgyMywiUmUtcnVuIHRoZSBwcm9ncmFtLiIpLEFtKCksQW0oKSxBbSgpLFJtKDI0LCJkaXYiLDQpLFJtKDI1LCJkaXYiLDUpLFJtKDI2LCJkaXYiLDYpLFRtKDI3LCJpbWciLDcpLEFtKCksUm0oMjgsImRpdiIsOCksa3UoMjksIkF1dG8tYWxlcnRzIGZvciBwcm9ibGVtcyBmb3VuZCIpLEFtKCksQW0oKSxSbSgzMCwiZGl2Iiw1KSxSbSgzMSwiZGl2Iiw2KSxUbSgzMiwiaW1nIiw5KSxBbSgpLFJtKDMzLCJkaXYiLDgpLGt1KDM0LCIgSW50ZWdyYXRlZCBkZWJ1Z2dpbmcgdG8gdHJhY2UgcHJvYmxlbXMgdG8gdGhlaXIgY2F1c2VzICIpLEFtKCksQW0oKSxSbSgzNSwiZGl2Iiw1KSxSbSgzNiwiZGl2Iiw2KSxUbSgzNywiaW1nIiwxMCksQW0oKSxSbSgzOCwiZGl2Iiw4KSxrdSgzOSwiTGluayBsb2cgdG8gY29kZSIpLEFtKCksQW0oKSxBbSgpLFJtKDQwLCJkaXYiLDExKSxSbSg0MSwiZGl2IiwxMiksa3UoNDIsIiBUaGUgbG9nIGRpcmVjdG9yeSBtdXN0IGNvbnRhaW4gVGVuc29yRmxvdyBEZWJ1Z2dlciAoVjIpIGRhdGEuIHRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygpIHdpbGwgY29sbGVjdCB0ZW5zb3IgZGF0YSwgZ3JhcGggc3RydWN0dXJlcywgdGhlIGFzc29jaWF0ZWQgc3RhY2sgdHJhY2VzLCBhbmQgc291cmNlIGNvZGUgdG8gdGhlIHNwZWNpZmljZWQgZGlyZWN0b3J5IGxvZ2RpciBhcyB0aGUgaW5zdHJ1bWVudGVkIFRlbnNvckZsb3cgcHJvZ3JhbSBleGVjdXRlcy4gIiksQW0oKSxSbSg0MywiZGl2IiwxMiksUm0oNDQsImRpdiIpLGt1KDQ1LCIgU2VlICIpLFJtKDQ2LCJhIiwxMyksa3UoNDcsIiBkb2N1bWVudGF0aW9uICIpLEFtKCksa3UoNDgsIiBvZiB0aGUgUHl0aG9uIEFQSSBvZiBEZWJ1Z2dlciBWMi4gIiksQW0oKSxSbSg0OSwiZGl2Iiksa3UoNTAsIiBTZWUgIiksUm0oNTEsImEiLDE0KSxrdSg1MiwiIGhlcmUgIiksQW0oKSxrdSg1MywiIGZvciBvdGhlciBUZW5zb3JGbG93IGRlYnVnZ2luZyBBUElzLiAiKSxBbSgpLEFtKCksQW0oKSxBbSgpKX0sc3R5bGVzOlsiLmFyZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBjb2xvcjogbGlnaHRibHVlO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIG1hcmdpbjogMnB4O1xufVxuXG4uY29kZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICBtYXJnaW46IDEwcHg7XG59XG5cbi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE1cHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHBhZGRpbmc6IDUwcHg7XG59XG5cbi5kZXRhaWxzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAxMHB4IDYwcHg7XG4gIHdpZHRoOiA1MCU7XG59XG5cbi5leGhpYml0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmV4aGliaXRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogMTBweCA2MHB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMzEwcHg7XG59XG5cbi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zY3JlZW5zaG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNhbnZhc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDIwMHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtc2l6ZTogMTM1JTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG59Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKERxLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImluYWN0aXZlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vaW5hY3RpdmVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vaW5hY3RpdmVfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpO2NsYXNzIEVxe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH19RXEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVxKShTbShJdykpfSxFcS7JtWNtcD10byh7dHlwZTpFcSxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItaW5hY3RpdmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmVG0oMCwiaW5hY3RpdmUtY29tcG9uZW50Iil9LGRpcmVjdGl2ZXM6W0RxXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEVxLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIix0ZW1wbGF0ZToiIDxpbmFjdGl2ZS1jb21wb25lbnQ+PC9pbmFjdGl2ZS1jb21wb25lbnQ+ICJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y29uc3QgUnE9SlAoIltEZWJ1Z2dlcl0gRGVidWdnZXIgTG9hZGVkIiksQXE9SlAoIltEZWJ1Z2dlcl0gRGVidWdnZXIgVW5sb2FkZWQiKSxUcT1KUCgiW0RlYnVnZ2VyXSBBIE5ldyBEZWJ1Z2dlciBEYXRhIFBvbGxpbmcgRXZlbnQgQmVnaW5zIiksTnE9SlAoIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBSZXF1ZXN0ZWQiKSx6cT1KUCgiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLElxPUpQKCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgUmVxdWVzdCBGYWlsZWQiKSxIcT1KUCgiW0RlYnVnZ2VyXSBOdW1iZXIgYW5kIEJyZWFrZG93biBvZiBBbGVydHMgUmVxdWVzdGVkIiksRnE9SlAoIltEZWJ1Z2dlcl0gTnVtYmVyIGFuZCBCcmVha2Rvd24gb2YgQWxlcnRzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLExxPUpQKCJbRGVidWdnZXJdIEFsZXJ0cyBEYXRhIG9mIGFuIEFsZXJ0VHlwZSBJcyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxCcT1KUCgiW0RlYnVnZ2VyXSBBbGVydCBUeXBlIEZvY3VzIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxWcT1KUCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgVG9wLUxldmVsIEV4ZWN1dGlvbnMgUmVxdWVzdGVkIiksanE9SlAoIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIFRvcC1MZXZlbCBFeGVjdXRpb25zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFVxPUpQKCJbRGVidWdnZXJdIEV4ZWN1dGlvbkRpZ2VzdHMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksR3E9SlAoIltEZWJ1Z2dlcl0gRXhlY3V0aW9uRGlnZXN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxXcT1KUCgiW0RlYnVnZ2VyXSBTY3JvbGwgTGVmdHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLFlxPUpQKCJbRGVidWdnZXJdIFNjcm9sbCBSaWdodHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLHFxPUpQKCJbRGVidWdnZXJdIFNjcm9sbCB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIHRvIEdpdmVuIEluZGV4Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWnE9SlAoIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBCZWluZyBGb2N1c2VkIE9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWHE9SlAoIltEZWJ1Z2dlcl0gRXhlY3V0aW9uIERhdGEgT2JqZWN0cyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxLcT1KUCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBSZXF1ZXN0ZWQiKSxKcT1KUCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRcT1KUCgiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSwkcT1KUCgiW0RlYnVnZ2VyXSBJbnRyYS1HcmFwaCBFeGVjdXRpb24gRGF0YSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx0Wj1KUCgiW0RlYnVnZ2VyXSBTY3JvbGwgSW50cmEtR3JhcGggRXhlY3V0aW9uIExpc3QgdG8gR2l2ZW4gSW5kZXgiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlWj1KUCgiW0RlYnVnZ2VyXSBHcmFwaCBFeGVjdXRpb24gaXMgRm9jdXNlZCBPbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG5aPUpQKCJbRGVidWdnZXJdIEdyYXBoIE9wIElzIEZvY3VzZWQgT24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxvWj1KUCgiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJbmZvIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGlaPUpQKCJbRGVidWdnZXJdIEdyYXBoIE9wIEluZm8gTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYVo9SlAoIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBSZXF1ZXN0ZWQuIiksclo9SlAoIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTGlzdCBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxzWj1KUCgiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaW5lIElzIEZvY3VzZWQgb24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxsWj1KUCgiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxjWj1KUCgiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxkWj1KUCgiW0RlYnVnZ2VyXSBBIFNldCBvZiBTdGFjayBGcmFtZXMgSGF2ZSBCZWVuIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHBaPSJkZWJ1Z2dlciI7dmFyIG1aLHVaLGZaO2Z1bmN0aW9uIGdaKHQpe2lmKG51bGw9PT10LmNvZGVMb2NhdGlvbkZvY3VzVHlwZSlyZXR1cm4gbnVsbDtsZXQgZT1bXTtpZih0LmNvZGVMb2NhdGlvbkZvY3VzVHlwZT09PWZaLkVYRUNVVElPTil7Y29uc3R7Zm9jdXNJbmRleDpuLGV4ZWN1dGlvbkRhdGE6b309dC5leGVjdXRpb25zO2lmKG51bGw9PT1ufHx2b2lkIDA9PT1vW25dKXJldHVybiBudWxsO2U9b1tuXS5zdGFja19mcmFtZV9pZHN9ZWxzZXtpZihudWxsPT09dC5ncmFwaHMuZm9jdXNlZE9wKXJldHVybiBudWxsO2NvbnN0e2dyYXBoSWQ6bixvcE5hbWU6b309dC5ncmFwaHMuZm9jdXNlZE9wO2lmKHZvaWQgMD09PXQuZ3JhcGhzLm9wc1tuXXx8IXQuZ3JhcGhzLm9wc1tuXS5oYXMobykpcmV0dXJuIG51bGw7ZT10LmdyYXBocy5vcHNbbl0uZ2V0KG8pLnN0YWNrX2ZyYW1lX2lkc31jb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIGUpe2lmKG51bGw9PXQuc3RhY2tGcmFtZXNbb10pcmV0dXJuIG51bGw7bi5wdXNoKHQuc3RhY2tGcmFtZXNbb10pfXJldHVybiBufWZ1bmN0aW9uIGhaKHQsZSl7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50Lmhvc3RfbmFtZT09PWUuaG9zdF9uYW1lJiZ0LmZpbGVfcGF0aD09PWUuZmlsZV9wYXRoKSl9ZnVuY3Rpb24gYloodCxlLG4pe2lmKGU+PW4pdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7ZX0sIGVuZD0ke259YCk7cmV0dXJuIHQuZmluZEluZGV4KCh0PT50LmJlZ2luPT09ZSYmdC5lbmQ9PT1uKSl9ZnVuY3Rpb24geVoodCl7Y29uc3QgZT10LnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYztpZighdC5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSlyZXR1cm4gZTtjb25zdCBuPWdaKHQpO2lmKG51bGw9PT1uKXJldHVybiBlO2NvbnN0IG89KGZ1bmN0aW9uIGkodCxlKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtmb3IobGV0IG49dC5sZW5ndGgtMTtuPj0wOy0tbil7Y29uc3Qgbz10W25dLHtob3N0X25hbWU6aSxmaWxlX3BhdGg6YX09bztpZihpPT09ZS5ob3N0X25hbWUmJmE9PT1lLmZpbGVfcGF0aClyZXR1cm4gb31yZXR1cm4gbnVsbH0pKG4sZSk7cmV0dXJuIG51bGw9PT1vP2U6b30hKGZ1bmN0aW9uKHQpe3RbdC5VTlNQRUNJRklFRD0wXT0iVU5TUEVDSUZJRUQiLHRbdC5OT19URU5TT1I9MV09Ik5PX1RFTlNPUiIsdFt0LkNVUlRfSEVBTFRIPTJdPSJDVVJUX0hFQUxUSCIsdFt0LkNPTkNJU0VfSEVBTFRIPTNdPSJDT05DSVNFX0hFQUxUSCIsdFt0LkZVTExfSEVBTFRIPTRdPSJGVUxMX0hFQUxUSCIsdFt0LlNIQVBFPTVdPSJTSEFQRSIsdFt0LkZVTExfTlVNRVJJQ1M9Nl09IkZVTExfTlVNRVJJQ1MiLHRbdC5GVUxMX1RFTlNPUj03XT0iRlVMTF9URU5TT1IiLHRbdC5SRURVQ0VfSU5GX05BTl9USFJFRV9TTE9UUz04XT0iUkVEVUNFX0lORl9OQU5fVEhSRUVfU0xPVFMifSkobVp8fChtWj17fSkpLChmdW5jdGlvbih0KXt0LkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVD0iRnVuY3Rpb25SZWNvbXBpbGVzQWxlcnQiLHQuSU5GX05BTl9BTEVSVD0iSW5mTmFuQWxlcnQiLHQuVEVOU09SX1NIQVBFX0FMRVJUPSJUZW5zb3JTaGFwZUFsZXJ0In0pKHVafHwodVo9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVYRUNVVElPTj0wXT0iRVhFQ1VUSU9OIix0W3QuR1JBUEhfT1BfQ1JFQVRJT049MV09IkdSQVBIX09QX0NSRUFUSU9OIn0pKGZafHwoZlo9e30pKTtjb25zdCBfWj15ayh7cnVuczp7fSxydW5zTG9hZGVkOntzdGF0ZTp5RS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxhY3RpdmVSdW5JZDpudWxsLGxhc3REYXRhUG9sbE9uc2V0VGltZU1zOi0xLGxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOjEsYWxlcnRzOnthbGVydHNMb2FkZWQ6e3N0YXRlOnlFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LG51bUFsZXJ0czowLGFsZXJ0c0JyZWFrZG93bjp7fSxhbGVydHM6e30sZXhlY3V0aW9uSW5kaWNlczp7fSxncmFwaEV4ZWN1dGlvbkluZGljZXM6e30sZm9jdXNUeXBlOm51bGx9LGV4ZWN1dGlvbnM6KGZ1bmN0aW9uIENaKCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOnlFLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjUwLHBhZ2VTaXplOjEwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGV4ZWN1dGlvbkRpZ2VzdHM6e30sZXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoRXhlY3V0aW9uczooZnVuY3Rpb24gTVooKXtyZXR1cm57bnVtRXhlY3V0aW9uc0xvYWRlZDp7c3RhdGU6eUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDp7bG9hZGluZ1JhbmdlczpbXSxudW1FeGVjdXRpb25zOjAscGFnZUxvYWRlZFNpemVzOnt9fSxkaXNwbGF5Q291bnQ6MTAwLHBhZ2VTaXplOjIwMCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGdyYXBoRXhlY3V0aW9uRGlnZXN0czp7fSxncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6W10sZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzOnt9LGdyYXBoRXhlY3V0aW9uRGF0YTp7fX19KSgpLGdyYXBoczp7b3BzOnt9LGxvYWRpbmdPcHM6e30sZm9jdXNlZE9wOm51bGx9LHN0YWNrRnJhbWVzOnt9LGNvZGVMb2NhdGlvbkZvY3VzVHlwZTpudWxsLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOiExLHNvdXJjZUNvZGU6e3NvdXJjZUZpbGVMaXN0TG9hZGVkOntzdGF0ZTp5RS5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxzb3VyY2VGaWxlTGlzdDpbXSxmaWxlQ29udGVudHM6W10sZm9jdXNMaW5lU3BlYzpudWxsfX0sYmsoTnEsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZGVkKSx7c3RhdGU6eUUuTE9BRElOR30pfSkpKSxiayhJcSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkZWQpLHtzdGF0ZTp5RS5GQUlMRUR9KX0pKSksYmsoenEsKCh0LHtydW5zOmV9KT0+e2NvbnN0IG49T2JqZWN0LmtleXMoZSksbz1uLmxlbmd0aD4wJiZudWxsPT09dC5hY3RpdmVSdW5JZDtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpvP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxydW5zOmUscnVuc0xvYWRlZDp7c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSxhY3RpdmVSdW5JZDpuLmxlbmd0aD4wP25bMF06bnVsbH0pfSkpLGJrKFRxLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3REYXRhUG9sbE9uc2V0VGltZU1zOkRhdGUubm93KCl9KSkpLGJrKEhxLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6eUUuTE9BRElOR30pfSl9KSkpLGJrKEZxLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG89ZT50LmFsZXJ0cy5udW1BbGVydHM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bz9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm59KX0pfSkpLGJrKExxLCgodCx7bnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRUeXBlOm8sYmVnaW46aSxhbGVydHM6YX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgcj17fSxzPXQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb10/dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdLGw9dC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzW29dP3QuYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7Kyt0KXtjb25zdCBlPWkrdCxuPWFbdF07aWYocltlXT1uLG4uYWxlcnRfdHlwZT09PXVaLklORl9OQU5fQUxFUlQpe2NvbnN0IHQ9bjtzW2VdPXQuZXhlY3V0aW9uX2luZGV4LG51bGwhPT10LmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCYmKGxbZV09dC5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgpfX12b2lkIDAhPT10LmFsZXJ0cy5hbGVydHNbb10mJk9iamVjdC5hc3NpZ24ocix0LmFsZXJ0cy5hbGVydHNbb10pO2xldCBjPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4LGQ9dC5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleDtpZihvPT09dVouSU5GX05BTl9BTEVSVCYmMD09PWkpe2NvbnN0IGU9YVswXTtjPU1hdGgubWF4KDAsZS5leGVjdXRpb25faW5kZXgtTWF0aC5mbG9vcih0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKSxudWxsIT09ZS5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgmJihkPWUuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4KX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmN9KSxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Zm9jdXNJbmRleDpkfSksYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2FsZXJ0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuYWxlcnRzTG9hZGVkKSx7c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksbnVtQWxlcnRzOmUsYWxlcnRzQnJlYWtkb3duOm4sYWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHMpLHtbb106cn0pLGV4ZWN1dGlvbkluZGljZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXMpLHtbb106c30pLGdyYXBoRXhlY3V0aW9uSW5kaWNlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzKSx7W29dOmx9KX0pfSl9KSksYmsoQnEsKCh0LHthbGVydFR5cGU6ZX0pPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMpLHtmb2N1c1R5cGU6dC5hbGVydHMuZm9jdXNUeXBlPT09ZT9udWxsOmV9KX0pLG89bi5hbGVydHMuZm9jdXNUeXBlO2lmKG51bGwhPT1vKXtjb25zdCB0PW4uYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb118fFtdO3ZvaWQgMCE9PXRbMF0mJihuLmV4ZWN1dGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6TWF0aC5tYXgoMCxOdW1iZXIodFswXSktTWF0aC5mbG9vcihuLmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LzIpKX0pKX1yZXR1cm4gbn0pKSxiayhWcSwodD0+bnVsbD09PXQuYWN0aXZlUnVuSWQ/dDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6eUUuTE9BRElOR30pfSl9KSkpLGJrKGpxLCgodCx7bnVtRXhlY3V0aW9uczplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPWU+dC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6bj9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTp5RS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6ZX0pfSl9KTtyZXR1cm4gZT4wJiZudWxsPT09dC5leGVjdXRpb25zLmZvY3VzSW5kZXgmJihvLmV4ZWN1dGlvbnMuZm9jdXNJbmRleD0wKSxvfSkpLGJrKFVxLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49Wy4uLnQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdO3JldHVybi0xPT09YloobixlLmJlZ2luLGUuZW5kKSYmbi5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7ZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtsb2FkaW5nUmFuZ2VzOm59KX0pfSl9KSksYmsoR3EsKCh0LGUpPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3Qgbj1bLi4udC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubG9hZGluZ1Jhbmdlc10sbz1iWihuLGUuYmVnaW4sZS5lbmQpOy0xIT09byYmbi5zcGxpY2UobywxKTtjb25zdCBpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7ZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOmUubnVtX2RpZ2VzdHMsbG9hZGluZ1JhbmdlczpufSksZXhlY3V0aW9uRGlnZXN0czpPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzKX0pfSk7Zm9yKGxldCB0PWUuYmVnaW47dDxlLmVuZDsrK3QpaS5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNbdF09ZS5leGVjdXRpb25fZGlnZXN0c1t0LWUuYmVnaW5dO2lmKGUuZW5kPmUuYmVnaW4pe2NvbnN0IG49ZS5iZWdpbi90LmV4ZWN1dGlvbnMucGFnZVNpemU7aS5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQucGFnZUxvYWRlZFNpemVzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5wYWdlTG9hZGVkU2l6ZXMpLHtbbl06ZS5lbmQtZS5iZWdpbn0pfXJldHVybiBpfSkpLGJrKFdxLCh0PT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7bGV0IGU9dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXg7cmV0dXJuIGU+MCYmZS0tLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplfSl9KX0pKSxiayhZcSwodD0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2xldCBlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4O3JldHVybiBlK3QuZXhlY3V0aW9ucy5kaXNwbGF5Q291bnQrMTw9dC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyYmZSsrLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplfSl9KX0pKSxiayhxcSwoKHQsZSk9PntpZihlLmluZGV4PDB8fCFOdW1iZXIuaXNJbnRlZ2VyKGUuaW5kZXgpKXRocm93IG5ldyBFcnJvcihgQXR0ZW1wdCB0byBzY3JvbGwgdG8gbmVnYXRpdmUgb3Igbm9uLWludGVnZXIgZXhlY3V0aW9uIGluZGV4ICgke2UuaW5kZXh9KWApO2NvbnN0e2Rpc3BsYXlDb3VudDpufT10LmV4ZWN1dGlvbnMse251bUV4ZWN1dGlvbnM6b309dC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ7aWYoZS5pbmRleD5NYXRoLm1heCgwLG8tbikpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBleGVjdXRpb24gaW5kZXggKCR7ZS5pbmRleH0pLCB3aGljaCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBpbmRleCAobnVtRXhlY3V0aW9ucz0ke299OyBkaXNwbGF5Q291bnQ9JHtufSlgKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmUuaW5kZXh9KX0pfSkpLGJrKFpxLCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtmb2N1c0luZGV4OnQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4K2UuZGlzcGxheUluZGV4fSksY29kZUxvY2F0aW9uRm9jdXNUeXBlOmZaLkVYRUNVVElPTixzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKX0pO3JldHVybiBuLnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYz15WihuKSxufSkpLGJrKFhxLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtleGVjdXRpb25EYXRhOk9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRhdGEpfSl9KTtmb3IobGV0IHQ9ZS5iZWdpbjt0PGUuZW5kOysrdCluLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGF0YVt0XT1lLmV4ZWN1dGlvbnNbdC1lLmJlZ2luXTtyZXR1cm4gbn0pKSxiayhLcSwodD0+bnVsbD09PXQuYWN0aXZlUnVuSWQ/dDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtudW1FeGVjdXRpb25zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6eUUuTE9BRElOR30pfSl9KSkpLGJrKEpxLCgodCx7bnVtR3JhcGhFeGVjdXRpb25zOmV9KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49ZT50LmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMsbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOm4/RGF0ZS5ub3coKTp0Lmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLGdyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtudW1FeGVjdXRpb25zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6eUUuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6ZX0pfSl9KTtyZXR1cm4gZT4wJiZudWxsPT09dC5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleCYmKG8uZ3JhcGhFeGVjdXRpb25zLmZvY3VzSW5kZXg9MCksb30pKSxiayhRcSwoKHQse3BhZ2VJbmRleDplfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBuPXQuZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcy5zbGljZSgpO3JldHVybi0xPT09bi5pbmRleE9mKGUpJiZuLnB1c2goZSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Z3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzOm59KX0pfSkpLGJrKCRxLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0e3BhZ2VTaXplOm59PXQuZ3JhcGhFeGVjdXRpb25zLG89dC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzLnNsaWNlKCksaT1PYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplcyksYT1PYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YSk7Zm9yKGxldCB0PWUuYmVnaW47dDxlLmVuZDsrK3Qpe2NvbnN0IHI9TWF0aC5mbG9vcih0L24pOy0xIT09by5pbmRleE9mKHIpJiZvLnNwbGljZShvLmluZGV4T2YociksMSksdm9pZCAwPT09aVtyXSYmKGlbcl09MCksdm9pZCAwPT09YVt0XSYmaVtyXSsrLGFbdF09ZS5ncmFwaF9leGVjdXRpb25zW3QtZS5iZWdpbl19cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse2dyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlczpvLGdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplczppLGdyYXBoRXhlY3V0aW9uRGF0YTphfSl9KX0pKSxiayh0WiwoKHQsZSk9PntpZihlLmluZGV4PDB8fCFOdW1iZXIuaXNJbnRlZ2VyKGUuaW5kZXgpKXRocm93IG5ldyBFcnJvcihgQXR0ZW1wdCB0byBzY3JvbGwgdG8gbmVnYXRpdmUgb3Igbm9uLWludGVnZXIgZ3JhcGgtZXhlY3V0aW9uIGluZGV4ICgke2UuaW5kZXh9KWApO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OmUuaW5kZXh9KX0pfSkpLGJrKGVaLCgodCxlKT0+dloodCxlLmdyYXBoX2lkLGUub3BfbmFtZSxlLmluZGV4KSkpLGJrKG5aLCgodCxlKT0+dloodCxlLmdyYXBoX2lkLGUub3BfbmFtZSkpKSxiayhvWiwoKHQsZSk9Pntjb25zdHtncmFwaF9pZDpuLG9wX25hbWU6b309ZSxpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocykse2xvYWRpbmdPcHM6T2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocy5sb2FkaW5nT3BzKX0pfSk7cmV0dXJuIHZvaWQgMD09PWkuZ3JhcGhzLmxvYWRpbmdPcHNbbl0mJihpLmdyYXBocy5sb2FkaW5nT3BzW25dPW5ldyBNYXApLGkuZ3JhcGhzLmxvYWRpbmdPcHNbbl0uaGFzKG8pfHxpLmdyYXBocy5sb2FkaW5nT3BzW25dLnNldChvLHlFLkxPQURJTkcpLGl9KSksYmsoaVosKCh0LGUpPT57Y29uc3R7Z3JhcGhPcEluZm9SZXNwb25zZTpufT1lLHtncmFwaF9pZHM6b309bixpPW9bby5sZW5ndGgtMV0sYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMpLHtvcHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzLm9wcykse1tpXTpuZXcgTWFwKHQuZ3JhcGhzLm9wc1tpXSl9KSxsb2FkaW5nT3BzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocy5sb2FkaW5nT3BzKSx7W2ldOm5ldyBNYXAodC5ncmFwaHMubG9hZGluZ09wc1tpXSl9KX0pfSk7Zm9yKGNvbnN0IHQgb2Ygbi5pbnB1dHMpdC5kYXRhJiZhLmdyYXBocy5vcHNbaV0uc2V0KHQub3BfbmFtZSx0LmRhdGEpO2ZvcihsZXQgdD0wO3Q8bi5jb25zdW1lcnMubGVuZ3RoOysrdClmb3IoY29uc3QgZSBvZiBuLmNvbnN1bWVyc1t0XSllLmRhdGEmJmEuZ3JhcGhzLm9wc1tpXS5zZXQoZS5vcF9uYW1lLGUuZGF0YSk7cmV0dXJuIGEuZ3JhcGhzLm9wc1tpXS5zZXQobi5vcF9uYW1lLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aW5wdXRzOm4uaW5wdXRzLm1hcCgodD0+KHtvcF9uYW1lOnQub3BfbmFtZSxvdXRwdXRfc2xvdDp0Lm91dHB1dF9zbG90fSkpKSxjb25zdW1lcnM6bi5jb25zdW1lcnMubWFwKCh0PT50Lm1hcCgodD0+KHtvcF9uYW1lOnQub3BfbmFtZSxpbnB1dF9zbG90OnQuaW5wdXRfc2xvdH0pKSkpKX0pKSxhLmdyYXBocy5sb2FkaW5nT3BzW2ldLnNldChuLm9wX25hbWUseUUuTE9BREVEKSxhfSkpLGJrKGFaLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse3NvdXJjZUZpbGVMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3RMb2FkZWQpLHtzdGF0ZTp5RS5MT0FESU5HfSl9KX0pKSksYmsoclosKCh0LGUpPT57dmFyIG47Y29uc3Qgbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse3NvdXJjZUZpbGVMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3RMb2FkZWQpLHtzdGF0ZTp5RS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxzb3VyY2VGaWxlTGlzdDplLnNvdXJjZUZpbGVzLGZpbGVDb250ZW50czp0LnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNsaWNlKCl9KX0pLGk9ZS5zb3VyY2VGaWxlcy5sZW5ndGgse2ZpbGVDb250ZW50czphfT1vLnNvdXJjZUNvZGU7Zm9yKGxldCBlPTA7ZTxpOysrZSlhW2VdPW51bGwhPT0obj10LnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzW2VdKSYmdm9pZCAwIT09bj9uOntsb2FkU3RhdGU6eUUuTk9UX0xPQURFRCxsaW5lczpudWxsfTtyZXR1cm4gb30pKSxiayhzWiwoKHQsZSk9Pntjb25zdCBuPWdaKHQpLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtmb2N1c0xpbmVTcGVjOmUuc3RhY2tGcmFtZX0pfSk7cmV0dXJuIG51bGwhPT1uJiYoby5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZT0oZnVuY3Rpb24gaSh0LGUpe2xldCBuPS0xLG89LTE7aWYodC5mb3JFYWNoKCgoe2ZpbGVfcGF0aDp0LGxpbmVubzppfSxhKT0+e3Q9PT1lLmZpbGVfcGF0aCYmKG89YSxpPT09ZS5saW5lbm8mJihuPWEpKX0pKSwtMT09PW4pdGhyb3cgbmV3IEVycm9yKGBTdGFjayBmcmFtZSAke0pTT04uc3RyaW5naWZ5KGUpfSBpcyBub3QgZm91bmQuYCk7cmV0dXJuIG49PT1vfSkobixlLnN0YWNrRnJhbWUpKSxvfSkpLGJrKGxaLCgodCxlKT0+e2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxvPWhaKG4uc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCxlKTtpZighKG8+PTApKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGZvbGxvd2luZyBmaWxlIGluIGZpbGUgbGlzdDogaG9zdF9uYW1lPSIke2UuaG9zdF9uYW1lfSIsIGZpbGVfcGF0aD0iJHtlLmZpbGVfcGF0aH0iYCk7cmV0dXJuIG4uc291cmNlQ29kZS5maWxlQ29udGVudHMuc3BsaWNlKG8sMSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tvXSkse2xvYWRTdGF0ZTp5RS5MT0FESU5HfSkpLG59KSksYmsoY1osKCh0LGUpPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse2ZpbGVDb250ZW50czp0LnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNsaWNlKCl9KX0pLG89aFoobi5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0LGUpO2lmKCEobz49MCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUgaW4gZmlsZSBsaXN0OiBob3N0X25hbWU9IiR7ZS5ob3N0X25hbWV9IiwgZmlsZV9wYXRoPSIke2UuZmlsZV9wYXRofSJgKTtyZXR1cm4gbi5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zcGxpY2UobywxLHtsb2FkU3RhdGU6eUUuTE9BREVELGxpbmVzOmUubGluZXN9KSxufSkpLGJrKGRaLCgodCxlKT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzdGFja0ZyYW1lczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zdGFja0ZyYW1lcyksZS5zdGFja0ZyYW1lcyksc291cmNlQ29kZTpPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSl9KTtyZXR1cm4gbi5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM9eVoobiksbn0pKSk7ZnVuY3Rpb24gdloodCxlLG4sbyl7Y29uc3QgaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMpLHtmb2N1c2VkT3A6e2dyYXBoSWQ6ZSxvcE5hbWU6bn19KSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6ZlouR1JBUEhfT1BfQ1JFQVRJT04sc291cmNlQ29kZTpPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSl9KTtyZXR1cm4gaS5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM9eVooaSksdm9pZCAwIT09byYmKGkuZ3JhcGhFeGVjdXRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6b30pKSxpfWZ1bmN0aW9uIHhaKHQsZSl7cmV0dXJuIF9aKHQsZSl9Y29uc3QgT1o9S3cocFopLFBaPVp3KE9aLCh0PT50LnJ1bnMpKSx3Wj1adyhPWiwodD0+dC5ydW5zTG9hZGVkKSksa1o9WncoT1osKHQ9PnQuYWN0aXZlUnVuSWQpKSxTWj1adyhPWiwodD0+dC5sYXN0RGF0YVBvbGxPbnNldFRpbWVNcy10Lmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zKSksRFo9WncoT1osKHQ9PnQuYWxlcnRzKSksRVo9WncoRFosKHQ9PnQuYWxlcnRzTG9hZGVkKSksUlo9WncoRFosKHQ9PnQubnVtQWxlcnRzKSksQVo9WncoRFosKHQ9PnQuZm9jdXNUeXBlKSksVFo9WncoRFosKHQ9Pm51bGw9PT10LmZvY3VzVHlwZT8wOnQuYWxlcnRzQnJlYWtkb3duW3QuZm9jdXNUeXBlXXx8MCkpLE5aPVp3KERaLCh0PT5udWxsPT09dC5mb2N1c1R5cGV8fHZvaWQgMD09PXQuYWxlcnRzW3QuZm9jdXNUeXBlXT9udWxsOnQuYWxlcnRzW3QuZm9jdXNUeXBlXSkpLHpaPVp3KERaLCh0PT50LmFsZXJ0c0JyZWFrZG93bikpLElaPVp3KE9aLCh0PT50LmV4ZWN1dGlvbnMpKSxIWj1adyhJWiwodD0+dC5udW1FeGVjdXRpb25zTG9hZGVkKSksRlo9WncoSVosKHQ9PnQuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkpLExaPVp3KElaLCh0PT50LmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucykpLEJaPVp3KElaLCh0PT50LnNjcm9sbEJlZ2luSW5kZXgpKSxWWj1adyhJWiwodD0+dC5wYWdlU2l6ZSkpLGpaPVp3KElaLCh0PT50LmRpc3BsYXlDb3VudCkpLFVaPVp3KElaLCh0PT57Y29uc3QgZT1bXTtmb3IobGV0IG49dC5zY3JvbGxCZWdpbkluZGV4O248dC5zY3JvbGxCZWdpbkluZGV4K3QuZGlzcGxheUNvdW50OysrbillLnB1c2gobiBpbiB0LmV4ZWN1dGlvbkRpZ2VzdHM/dC5leGVjdXRpb25EaWdlc3RzW25dOm51bGwpO3JldHVybiBlfSkpLEdaPVp3KE9aLCh0PT50LmdyYXBoRXhlY3V0aW9ucykpLFdaPVp3KEdaLCh0PT50Lm51bUV4ZWN1dGlvbnNMb2FkZWQpKSxZWj1adyhPWiwodD0+dC5ncmFwaEV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zKSkscVo9WncoR1osKHQ9PnQuc2Nyb2xsQmVnaW5JbmRleCkpLFpaPVp3KEdaLCh0PT50LmRpc3BsYXlDb3VudCkpLFhaPVp3KEdaLCh0PT50LnBhZ2VTaXplKSksS1o9WncoR1osKHQ9PnQuZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzKSksSlo9WncoR1osKHQ9PnQuZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzKSksUVo9WncoR1osKHQ9PnQuZ3JhcGhFeGVjdXRpb25EYXRhKSksJFo9WncoR1osKHQ9PnQuZm9jdXNJbmRleCkpLHRYPVp3KE9aLCh0PT50LmdyYXBocykpLGVYPVp3KHRYLCh0PT57Y29uc3R7Zm9jdXNlZE9wOmUsb3BzOm59PXQ7cmV0dXJuIG51bGw9PT1lfHx2b2lkIDA9PT1uW2UuZ3JhcGhJZF0/bnVsbDpuW2UuZ3JhcGhJZF0uZ2V0KGUub3BOYW1lKXx8bnVsbH0pKSxuWD1adyh0WCwodD0+e2NvbnN0e2ZvY3VzZWRPcDplLG9wczpufT10O2lmKG51bGwhPT1lJiZ2b2lkIDAhPT1uW2UuZ3JhcGhJZF0mJm5bZS5ncmFwaElkXS5oYXMoZS5vcE5hbWUpKXtjb25zdCB0PW5bZS5ncmFwaElkXSx7aW5wdXRzOm99PXQuZ2V0KGUub3BOYW1lKTtyZXR1cm4gby5tYXAoKGU9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sZSk7cmV0dXJuIHQuaGFzKGUub3BfbmFtZSkmJihuLmRhdGE9dC5nZXQoZS5vcF9uYW1lKSksbn0pKX1yZXR1cm4gbnVsbH0pKSxvWD1adygkWixRWixuWCwoKHQsZSxuKT0+e2lmKG51bGw9PT10fHxudWxsPT09bilyZXR1cm4gbnVsbDtjb25zdCBvPW4ubWFwKCh0PT4hMSkpLGk9W107aWYoMD09PW4ubGVuZ3RoKXJldHVybiBpO2NvbnN0IGE9ZVt0XS5ncmFwaF9pZCxyPU1hdGgubWF4KDAsdC0yMDApO2ZvcihsZXQgcz10LTE7cz49cjstLXMpaWYodm9pZCAwIT09ZVtzXSlmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoJiYob1t0XXx8ZVtzXS5ncmFwaF9pZCE9PWF8fGVbc10ub3BfbmFtZSE9PW5bdF0ub3BfbmFtZXx8ZVtzXS5vdXRwdXRfc2xvdCE9PW5bdF0ub3V0cHV0X3Nsb3R8fChpLnB1c2gocyksb1t0XT0hMCxpLmxlbmd0aCE9PW4ubGVuZ3RoKSk7Kyt0KTtyZXR1cm4gaX0pKSxpWD1adyh0WCwodD0+e2NvbnN0e2ZvY3VzZWRPcDplLG9wczpufT10O2lmKG51bGwhPT1lJiZ2b2lkIDAhPT1uW2UuZ3JhcGhJZF0mJm5bZS5ncmFwaElkXS5oYXMoZS5vcE5hbWUpKXtjb25zdCB0PW5bZS5ncmFwaElkXSx7Y29uc3VtZXJzOm99PXQuZ2V0KGUub3BOYW1lKTtyZXR1cm4gby5tYXAoKGU9PmUubWFwKChlPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LGUpO3JldHVybiB0LmhhcyhlLm9wX25hbWUpJiYobi5kYXRhPXQuZ2V0KGUub3BfbmFtZSkpLG59KSkpKX1yZXR1cm4gbnVsbH0pKSxhWD1adyhPWiwodD0+e2NvbnN0IGU9dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgsbj10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCt0LmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LG89bmV3IEFycmF5KG4tZSkuZmlsbChudWxsKSxpPXQuYWxlcnRzLmZvY3VzVHlwZTtpZihudWxsPT09aSlyZXR1cm4gbztjb25zdCBhPXQuYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbaV07aWYodm9pZCAwPT09YSlyZXR1cm4gbztmb3IobGV0IGk9ZTtpPG47KytpKWEuaW5jbHVkZXMoaSkmJihvW2ktZV09dC5hbGVydHMuZm9jdXNUeXBlKTtyZXR1cm4gb30pKSxyWD1adyhPWiwodD0+dC5leGVjdXRpb25zKSksc1g9WncoclgsKHQ9PnQuZm9jdXNJbmRleCkpLGxYPVp3KHJYLCh0PT57aWYobnVsbD09PXQuZm9jdXNJbmRleClyZXR1cm4gbnVsbDtjb25zdHtmb2N1c0luZGV4OmUsc2Nyb2xsQmVnaW5JbmRleDpuLGRpc3BsYXlDb3VudDpvfT10O3JldHVybiBlPG58fGU+PW4rbz9udWxsOmUtbn0pKSxjWD1adyhyWCwodD0+dC5leGVjdXRpb25EYXRhKSksZFg9WncoT1osKHQ9PnQuZ3JhcGhzLmxvYWRpbmdPcHMpKSxwWD1adyhPWiwodD0+dC5zdGFja0ZyYW1lcykpLG1YPVp3KHJYLCh0PT57Y29uc3R7Zm9jdXNJbmRleDplLGV4ZWN1dGlvbkRhdGE6bn09dDtyZXR1cm4gbnVsbD09PWV8fHZvaWQgMD09PW5bZV0/bnVsbDpuW2VdfSkpLHVYPVp3KE9aLHNYLG1YLGVYLCgodCxlLG4sbyk9Pntjb25zdHtjb2RlTG9jYXRpb25Gb2N1c1R5cGU6aX09dDtyZXR1cm4gbnVsbD09PWk/bnVsbDppPT09ZlouRVhFQ1VUSU9OP251bGw9PT1lfHxudWxsPT09bj9udWxsOntjb2RlTG9jYXRpb25UeXBlOmZaLkVYRUNVVElPTixvcFR5cGU6bi5vcF90eXBlLGV4ZWN1dGlvbkluZGV4OmV9Om51bGw9PT1vP251bGw6e2NvZGVMb2NhdGlvblR5cGU6ZlouR1JBUEhfT1BfQ1JFQVRJT04sb3BUeXBlOm8ub3BfdHlwZSxvcE5hbWU6by5vcF9uYW1lfX0pKSxmWD1adyhPWixnWiksZ1g9WncoT1osKHQ9PnQuc291cmNlQ29kZSkpLGhYPVp3KGdYLCh0PT50LnNvdXJjZUZpbGVMaXN0TG9hZGVkKSk7WncoZ1gsKHQ9PnQuc291cmNlRmlsZUxpc3QpKTtjb25zdCBiWD1adyhnWCwodD0+e2NvbnN0e3NvdXJjZUZpbGVMaXN0OmUsZm9jdXNMaW5lU3BlYzpufT10O3JldHVybiBudWxsPT09bj8tMTpoWihlLG4pfSkpLHlYPVp3KGdYLGJYLCgodCxlKT0+LTE9PT1lP251bGw6dC5maWxlQ29udGVudHNbZV18fG51bGwpKSxfWD1adyhPWiwodD0+dC5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWMpKSxDWD1adyhPWiwodD0+dC5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSkpLE1YPWZ1bmN0aW9uKHQpe3JldHVyblt0XX07ZnVuY3Rpb24gdlgodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDcpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPWhpKHQpLiRpbXBsaWNpdDtyZXR1cm4gWW0oKS5vblRvZ2dsZUZvY3VzVHlwZS5lbWl0KG4udHlwZSl9KSksUm0oMSwiZGl2Iiw4KSxrdSgyKSxBbSgpLFJtKDMsImRpdiIsOSksa3UoNCksQW0oKSxUbSg1LCJkaXYiKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPVltKCk7RG0oIm5nQ2xhc3MiLE1oKDQsTVgsdC50eXBlPT09bi5mb2N1c1R5cGU/ImZvY3VzIjoiIikpLHJjKDIpLFN1KHQuZGlzcGxheU5hbWUpLHJjKDIpLEV1KCIgIix0LmRpc3BsYXlTeW1ib2wsIjogIix0LmNvdW50LCIgIil9fWNsYXNzIHhYe2NvbnN0cnVjdG9yKCl7dGhpcy5udW1BbGVydHM9MCx0aGlzLmFsZXJ0c0JyZWFrZG93bj1bXSx0aGlzLmZvY3VzVHlwZT1udWxsLHRoaXMub25Ub2dnbGVGb2N1c1R5cGU9bmV3IExofX14WC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eFgpfSx4WC7JtWNtcD10byh7dHlwZTp4WCxzZWxlY3RvcnM6W1siYWxlcnRzLWNvbXBvbmVudCJdXSxpbnB1dHM6e251bUFsZXJ0czoibnVtQWxlcnRzIixhbGVydHNCcmVha2Rvd246ImFsZXJ0c0JyZWFrZG93biIsZm9jdXNUeXBlOiJmb2N1c1R5cGUifSxvdXRwdXRzOntvblRvZ2dsZUZvY3VzVHlwZToib25Ub2dnbGVGb2N1c1R5cGUifSxkZWNsczoxMCx2YXJzOjUsY29uc3RzOltbMSwiYWxlcnRzLWNvbnRhaW5lciJdLFsxLCJkZWJ1Z2dpbmctdGl0bGUiXSxbMSwibnVtLWFsZXJ0cy1jb250YWluZXIiXSxbMSwibnVtLWFsZXJ0cy1sYWJlbCJdLFsxLCJudW0tYWxlcnRzLXZhbHVlIiwzLCJuZ0NsYXNzIl0sWzEsImFsZXJ0cy1icmVha2Rvd24tY29udGFpbmVyIl0sWyJjbGFzcyIsImFsZXJ0cy1icmVha2Rvd24tdHlwZSIsMywibmdDbGFzcyIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiYWxlcnRzLWJyZWFrZG93bi10eXBlIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbMSwiYWxlcnQtdHlwZS1uYW1lIl0sWzEsImFsZXJ0LXR5cGUtY291bnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksUm0oMSwiZGl2IiwxKSxrdSgyLCJEZWJ1Z2dpbmciKSxBbSgpLFJtKDMsImRpdiIsMiksUm0oNCwiZGl2IiwzKSxrdSg1LCJBbGVydHMiKSxBbSgpLFJtKDYsImRpdiIsNCksa3UoNyksQW0oKSxBbSgpLFJtKDgsImRpdiIsNSksUXAoOSx2WCw2LDYsImRpdiIsNiksQW0oKSxBbSgpKSwyJmUmJihyYyg2KSxEbSgibmdDbGFzcyIsTWgoMyxNWCxuLm51bUFsZXJ0cz4wPyJub24temVybyI6IiIpKSxyYygxKSxEdSgiICIsbi5udW1BbGVydHMsIiAiKSxyYygyKSxEbSgibmdGb3JPZiIsbi5hbGVydHNCcmVha2Rvd24pKX0sZGlyZWN0aXZlczpbYU0sbE1dLHN0eWxlczpbIi5hbGVydHMtYnJlYWtkb3duLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDEzcHg7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5hbGVydHMtYnJlYWtkb3duLXR5cGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLXJhZGl1czogMCAxMHB4IDEwcHggMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiA2cHggMCA2cHggNTBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmFsZXJ0cy1icmVha2Rvd24tdHlwZS5mb2N1c1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWUwO1xufVxuXG4uYWxlcnRzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LWZhbWlseTogJ1JvYm90bycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG59XG5cbi5hbGVydC10eXBlLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGNvbG9yOiAjZmZmO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDNweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmFsZXJ0LXR5cGUtbmFtZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDNweDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRlYnVnZ2luZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDE4cHg7XG59XG5cbi5udW0tYWxlcnRzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMzBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ubnVtLWFsZXJ0cy1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLm51bS1hbGVydHMtdmFsdWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAyNHB4O1xufVxuXG4ubnVtLWFsZXJ0cy12YWx1ZS5ub24temVyb1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNzgwO1xuICBmb250LXdlaWdodDogYm9sZDtcbn0iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeFgsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiYWxlcnRzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYWxlcnRzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2FsZXJ0c19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse251bUFsZXJ0czpbe3R5cGU6eHl9XSxhbGVydHNCcmVha2Rvd246W3t0eXBlOnh5fV0sZm9jdXNUeXBlOlt7dHlwZTp4eX1dLG9uVG9nZ2xlRm9jdXNUeXBlOlt7dHlwZTpPeX1dfSk7Y29uc3QgT1g9e1t1Wi5GVU5DVElPTl9SRUNPTVBJTEVfQUxFUlRdOntkaXNwbGF5TmFtZToiRnVuY3Rpb24gcmVjb21waWxlcyIsZGlzcGxheVN5bWJvbDoiQyJ9LFt1Wi5JTkZfTkFOX0FMRVJUXTp7ZGlzcGxheU5hbWU6Ik5hTi/iiJ4iLGRpc3BsYXlTeW1ib2w6IuKIniJ9LFt1Wi5URU5TT1JfU0hBUEVfQUxFUlRdOntkaXNwbGF5TmFtZToiVGVuc29yIHNoYXBlIixkaXNwbGF5U3ltYm9sOiLilqAifX07Y2xhc3MgUFh7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubnVtQWxlcnRzJD10aGlzLnN0b3JlLnBpcGUoRncoUlopKSx0aGlzLmFsZXJ0c0JyZWFrZG93biQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KHpaLCh0PT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtyZXR1cm4gZS5zb3J0KCksZS5tYXAoKGU9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7dHlwZTplfSxPWFtlXSkse2NvdW50OnRbZV19KSkpfSkpKSksdGhpcy5mb2N1c1R5cGUkPXRoaXMuc3RvcmUucGlwZShGdyhBWikpfW9uVG9nZ2xlRm9jdXNUeXBlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQnEoe2FsZXJ0VHlwZTp0fSkpfX1QWC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UFgpKFNtKEl3KSl9LFBYLsm1Y21wPXRvKHt0eXBlOlBYLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywibnVtQWxlcnRzIiwiYWxlcnRzQnJlYWtkb3duIiwiZm9jdXNUeXBlIiwib25Ub2dnbGVGb2N1c1R5cGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImFsZXJ0cy1jb21wb25lbnQiLDApLFZtKCJvblRvZ2dsZUZvY3VzVHlwZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Ub2dnbGVGb2N1c1R5cGUoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgibnVtQWxlcnRzIixUaCgxLDMsbi5udW1BbGVydHMkKSkoImFsZXJ0c0JyZWFrZG93biIsVGgoMiw1LG4uYWxlcnRzQnJlYWtkb3duJCkpKCJmb2N1c1R5cGUiLFRoKDMsNyxuLmZvY3VzVHlwZSQpKX0sZGlyZWN0aXZlczpbeFhdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChQWCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiLHRlbXBsYXRlOidcbiAgICA8YWxlcnRzLWNvbXBvbmVudFxuICAgICAgW251bUFsZXJ0c109Im51bUFsZXJ0cyQgfCBhc3luYyJcbiAgICAgIFthbGVydHNCcmVha2Rvd25dPSJhbGVydHNCcmVha2Rvd24kIHwgYXN5bmMiXG4gICAgICBbZm9jdXNUeXBlXT0iZm9jdXNUeXBlJCB8IGFzeW5jIlxuICAgICAgKG9uVG9nZ2xlRm9jdXNUeXBlKT0ib25Ub2dnbGVGb2N1c1R5cGUoJGV2ZW50KSJcbiAgICA+XG4gICAgPC9hbGVydHMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y29uc3Qgd1g9WyJzbGlkZXJXcmFwcGVyIl0sa1g9Tnooe3Bhc3NpdmU6ITF9KSxTWD17cHJvdmlkZTpJVix1c2VFeGlzdGluZzpxZSgoKCk9PlJYKSksbXVsdGk6ITB9O2NsYXNzIERYe31jb25zdCBFWD0kSShKSShLSShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksImFjY2VudCIpKTtjbGFzcyBSWCBleHRlbmRzIEVYe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9kaXI9byx0aGlzLl9uZ1pvbmU9YSx0aGlzLl9hbmltYXRpb25Nb2RlPXMsdGhpcy5faW52ZXJ0PSExLHRoaXMuX21heD0xMDAsdGhpcy5fbWluPTAsdGhpcy5fc3RlcD0xLHRoaXMuX3RodW1iTGFiZWw9ITEsdGhpcy5fdGlja0ludGVydmFsPTAsdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl92ZXJ0aWNhbD0hMSx0aGlzLmNoYW5nZT1uZXcgTGgsdGhpcy5pbnB1dD1uZXcgTGgsdGhpcy52YWx1ZUNoYW5nZT1uZXcgTGgsdGhpcy5vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX3BlcmNlbnQ9MCx0aGlzLl9pc1NsaWRpbmc9bnVsbCx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50PTAsdGhpcy5fc2xpZGVyRGltZW5zaW9ucz1udWxsLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49KCk9Pnt9LHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj1tLkVNUFRZLHRoaXMuX3BvaW50ZXJEb3duPXQ9Pnt0aGlzLmRpc2FibGVkfHx0aGlzLl9pc1NsaWRpbmd8fCFBWCh0KSYmMCE9PXQuYnV0dG9ufHx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+e3RoaXMuX3RvdWNoSWQ9QVgodCk/KGZ1bmN0aW9uIGUodCxuKXtmb3IobGV0IGU9MDtlPHQudG91Y2hlcy5sZW5ndGg7ZSsrKXtjb25zdCBvPXQudG91Y2hlc1tlXS50YXJnZXQ7aWYobj09PW98fG4uY29udGFpbnMobykpcmV0dXJuIHQudG91Y2hlc1tlXS5pZGVudGlmaWVyfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk6dm9pZCAwO2NvbnN0IG49VFgodCx0aGlzLl90b3VjaElkKTtpZihuKXtjb25zdCBlPXRoaXMudmFsdWU7dGhpcy5faXNTbGlkaW5nPSJwb2ludGVyIix0aGlzLl9sYXN0UG9pbnRlckV2ZW50PXQsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl9vbk1vdXNlZW50ZXIoKSx0aGlzLl9iaW5kR2xvYmFsRXZlbnRzKHQpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihuKSx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD1lLGUhPXRoaXMudmFsdWUmJnRoaXMuX2VtaXRJbnB1dEV2ZW50KCl9fSkpfSx0aGlzLl9wb2ludGVyTW92ZT10PT57aWYoInBvaW50ZXIiPT09dGhpcy5faXNTbGlkaW5nKXtjb25zdCBlPVRYKHQsdGhpcy5fdG91Y2hJZCk7aWYoZSl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IG49dGhpcy52YWx1ZTt0aGlzLl9sYXN0UG9pbnRlckV2ZW50PXQsdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24oZSksbiE9dGhpcy52YWx1ZSYmdGhpcy5fZW1pdElucHV0RXZlbnQoKX19fSx0aGlzLl9wb2ludGVyVXA9dD0+eyJwb2ludGVyIj09PXRoaXMuX2lzU2xpZGluZyYmKEFYKHQpJiYibnVtYmVyIj09dHlwZW9mIHRoaXMuX3RvdWNoSWQmJiFOWCh0LmNoYW5nZWRUb3VjaGVzLHRoaXMuX3RvdWNoSWQpfHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3JlbW92ZUdsb2JhbEV2ZW50cygpLHRoaXMuX2lzU2xpZGluZz1udWxsLHRoaXMuX3RvdWNoSWQ9dm9pZCAwLHRoaXMuX3ZhbHVlT25TbGlkZVN0YXJ0PT10aGlzLnZhbHVlfHx0aGlzLmRpc2FibGVkfHx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD10aGlzLl9sYXN0UG9pbnRlckV2ZW50PW51bGwpKX0sdGhpcy5fd2luZG93Qmx1cj0oKT0+e3RoaXMuX2xhc3RQb2ludGVyRXZlbnQmJnRoaXMuX3BvaW50ZXJVcCh0aGlzLl9sYXN0UG9pbnRlckV2ZW50KX0sdGhpcy5fZG9jdW1lbnQ9cix0aGlzLnRhYkluZGV4PXBhcnNlSW50KGkpfHwwLGEucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57Y29uc3QgZT10Lm5hdGl2ZUVsZW1lbnQ7ZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLGtYKSxlLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLGtYKX0pKX1nZXQgaW52ZXJ0KCl7cmV0dXJuIHRoaXMuX2ludmVydH1zZXQgaW52ZXJ0KHQpe3RoaXMuX2ludmVydD15eih0KX1nZXQgbWF4KCl7cmV0dXJuIHRoaXMuX21heH1zZXQgbWF4KHQpe3RoaXMuX21heD1feih0LHRoaXMuX21heCksdGhpcy5fcGVyY2VudD10aGlzLl9jYWxjdWxhdGVQZXJjZW50YWdlKHRoaXMuX3ZhbHVlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgbWluKCl7cmV0dXJuIHRoaXMuX21pbn1zZXQgbWluKHQpe3RoaXMuX21pbj1feih0LHRoaXMuX21pbiksdGhpcy5fcGVyY2VudD10aGlzLl9jYWxjdWxhdGVQZXJjZW50YWdlKHRoaXMuX3ZhbHVlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgc3RlcCgpe3JldHVybiB0aGlzLl9zdGVwfXNldCBzdGVwKHQpe3RoaXMuX3N0ZXA9X3oodCx0aGlzLl9zdGVwKSx0aGlzLl9zdGVwJTEhPTAmJih0aGlzLl9yb3VuZFRvRGVjaW1hbD10aGlzLl9zdGVwLnRvU3RyaW5nKCkuc3BsaXQoIi4iKS5wb3AoKS5sZW5ndGgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCB0aHVtYkxhYmVsKCl7cmV0dXJuIHRoaXMuX3RodW1iTGFiZWx9c2V0IHRodW1iTGFiZWwodCl7dGhpcy5fdGh1bWJMYWJlbD15eih0KX1nZXQgdGlja0ludGVydmFsKCl7cmV0dXJuIHRoaXMuX3RpY2tJbnRlcnZhbH1zZXQgdGlja0ludGVydmFsKHQpe3RoaXMuX3RpY2tJbnRlcnZhbD0iYXV0byI9PT10PyJhdXRvIjoibnVtYmVyIj09dHlwZW9mIHR8fCJzdHJpbmciPT10eXBlb2YgdD9feih0LHRoaXMuX3RpY2tJbnRlcnZhbCk6MH1nZXQgdmFsdWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuX3ZhbHVlJiYodGhpcy52YWx1ZT10aGlzLl9taW4pLHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXtpZih0IT09dGhpcy5fdmFsdWUpe2xldCBlPV96KHQsMCk7dGhpcy5fcm91bmRUb0RlY2ltYWwmJmUhPT10aGlzLm1pbiYmZSE9PXRoaXMubWF4JiYoZT1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9yb3VuZFRvRGVjaW1hbCkpKSx0aGlzLl92YWx1ZT1lLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLl92ZXJ0aWNhbH1zZXQgdmVydGljYWwodCl7dGhpcy5fdmVydGljYWw9eXoodCl9Z2V0IGRpc3BsYXlWYWx1ZSgpe3JldHVybiB0aGlzLmRpc3BsYXlXaXRoP3RoaXMuZGlzcGxheVdpdGgodGhpcy52YWx1ZSk6dGhpcy5fcm91bmRUb0RlY2ltYWwmJnRoaXMudmFsdWUmJnRoaXMudmFsdWUlMSE9MD90aGlzLnZhbHVlLnRvRml4ZWQodGhpcy5fcm91bmRUb0RlY2ltYWwpOnRoaXMudmFsdWV8fDB9Zm9jdXModCl7dGhpcy5fZm9jdXNIb3N0RWxlbWVudCh0KX1ibHVyKCl7dGhpcy5fYmx1ckhvc3RFbGVtZW50KCl9Z2V0IHBlcmNlbnQoKXtyZXR1cm4gdGhpcy5fY2xhbXAodGhpcy5fcGVyY2VudCl9X3Nob3VsZEludmVydEF4aXMoKXtyZXR1cm4gdGhpcy52ZXJ0aWNhbD8hdGhpcy5pbnZlcnQ6dGhpcy5pbnZlcnR9X2lzTWluVmFsdWUoKXtyZXR1cm4gMD09PXRoaXMucGVyY2VudH1fZ2V0VGh1bWJHYXAoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD83OnRoaXMuX2lzTWluVmFsdWUoKSYmIXRoaXMudGh1bWJMYWJlbD90aGlzLl9pc0FjdGl2ZT8xMDo3OjB9X2dldFRyYWNrQmFja2dyb3VuZFN0eWxlcygpe2NvbnN0IHQ9dGhpcy52ZXJ0aWNhbD9gMSwgJHsxLXRoaXMucGVyY2VudH0sIDFgOjEtdGhpcy5wZXJjZW50KyIsIDEsIDEiO3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCk/Ii0iOiIifSR7dGhpcy5fZ2V0VGh1bWJHYXAoKX1weCkgc2NhbGUzZCgke3R9KWB9fV9nZXRUcmFja0ZpbGxTdHlsZXMoKXtjb25zdCB0PXRoaXMucGVyY2VudCxlPXRoaXMudmVydGljYWw/YDEsICR7dH0sIDFgOmAke3R9LCAxLCAxYDtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpPyIiOiItIn0ke3RoaXMuX2dldFRodW1iR2FwKCl9cHgpIHNjYWxlM2QoJHtlfSlgLGRpc3BsYXk6MD09PXQ/Im5vbmUiOiIifX1fZ2V0VGlja3NDb250YWluZXJTdHlsZXMoKXtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/Ii0iOiIifSR7dGhpcy5fdGlja0ludGVydmFsUGVyY2VudC8yKjEwMH0lKWB9fV9nZXRUaWNrc1N0eWxlcygpe2xldCB0PTEwMCp0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50LGU9e2JhY2tncm91bmRTaXplOnRoaXMudmVydGljYWw/YDJweCAke3R9JWA6YCR7dH0lIDJweGAsdHJhbnNmb3JtOmB0cmFuc2xhdGVaKDApIHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMudmVydGljYWx8fCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKT8iIjoiLSJ9JHt0LzJ9JSkke3RoaXMudmVydGljYWx8fCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKT8iIjoiIHJvdGF0ZSgxODBkZWcpIn1gfTtpZih0aGlzLl9pc01pblZhbHVlKCkmJnRoaXMuX2dldFRodW1iR2FwKCkpe2NvbnN0IHQ9dGhpcy5fc2hvdWxkSW52ZXJ0QXhpcygpO2xldCBuO249dGhpcy52ZXJ0aWNhbD90PyJCb3R0b20iOiJUb3AiOnQ/IlJpZ2h0IjoiTGVmdCIsZVtgcGFkZGluZyR7bn1gXT1gJHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4YH1yZXR1cm4gZX1fZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oLSR7MTAwKigoInJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpfHx0aGlzLnZlcnRpY2FsP3Q6IXQpP3RoaXMucGVyY2VudDoxLXRoaXMucGVyY2VudCl9JSlgfX1fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtyZXR1cm4icnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCl8fHRoaXMudmVydGljYWw/dDohdH1fZ2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PXRoaXMuX2Rpci52YWx1ZT8icnRsIjoibHRyIn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9pc0FjdGl2ZT0hIXQmJiJrZXlib2FyZCIhPT10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX0pKSx0aGlzLl9kaXImJih0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249dGhpcy5fZGlyLmNoYW5nZS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLGtYKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLGtYKSx0aGlzLl9sYXN0UG9pbnRlckV2ZW50PW51bGwsdGhpcy5fcmVtb3ZlR2xvYmFsRXZlbnRzKCksdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9vbk1vdXNlZW50ZXIoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fc2xpZGVyRGltZW5zaW9ucz10aGlzLl9nZXRTbGlkZXJEaW1lbnNpb25zKCksdGhpcy5fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpKX1fb25Gb2N1cygpe3RoaXMuX3NsaWRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0U2xpZGVyRGltZW5zaW9ucygpLHRoaXMuX3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKX1fb25CbHVyKCl7dGhpcy5vblRvdWNoZWQoKX1fb25LZXlkb3duKHQpe2lmKHRoaXMuZGlzYWJsZWR8fGJ6KHQpfHx0aGlzLl9pc1NsaWRpbmcmJiJrZXlib2FyZCIhPT10aGlzLl9pc1NsaWRpbmcpcmV0dXJuO2NvbnN0IGU9dGhpcy52YWx1ZTtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIDMzOnRoaXMuX2luY3JlbWVudCgxMCk7YnJlYWs7Y2FzZSAzNDp0aGlzLl9pbmNyZW1lbnQoLTEwKTticmVhaztjYXNlIDM1OnRoaXMudmFsdWU9dGhpcy5tYXg7YnJlYWs7Y2FzZSAzNjp0aGlzLnZhbHVlPXRoaXMubWluO2JyZWFrO2Nhc2UgMzc6dGhpcy5faW5jcmVtZW50KCJydGwiPT10aGlzLl9nZXREaXJlY3Rpb24oKT8xOi0xKTticmVhaztjYXNlIGd6OnRoaXMuX2luY3JlbWVudCgxKTticmVhaztjYXNlIDM5OnRoaXMuX2luY3JlbWVudCgicnRsIj09dGhpcy5fZ2V0RGlyZWN0aW9uKCk/LTE6MSk7YnJlYWs7Y2FzZSBoejp0aGlzLl9pbmNyZW1lbnQoLTEpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWUhPXRoaXMudmFsdWUmJih0aGlzLl9lbWl0SW5wdXRFdmVudCgpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpKSx0aGlzLl9pc1NsaWRpbmc9ImtleWJvYXJkIix0LnByZXZlbnREZWZhdWx0KCl9X29uS2V5dXAoKXsia2V5Ym9hcmQiPT09dGhpcy5faXNTbGlkaW5nJiYodGhpcy5faXNTbGlkaW5nPW51bGwpfV9nZXRXaW5kb3coKXtyZXR1cm4gdGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvd31fYmluZEdsb2JhbEV2ZW50cyh0KXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LG49QVgodCksbz1uPyJ0b3VjaGVuZCI6Im1vdXNldXAiO2UuYWRkRXZlbnRMaXN0ZW5lcihuPyJ0b3VjaG1vdmUiOiJtb3VzZW1vdmUiLHRoaXMuX3BvaW50ZXJNb3ZlLGtYKSxlLmFkZEV2ZW50TGlzdGVuZXIobyx0aGlzLl9wb2ludGVyVXAsa1gpLG4mJmUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMuX3BvaW50ZXJVcCxrWCk7Y29uc3QgaT10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT1pJiZpJiZpLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXIpfV9yZW1vdmVHbG9iYWxFdmVudHMoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9wb2ludGVyTW92ZSxrWCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLl9wb2ludGVyVXAsa1gpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9wb2ludGVyTW92ZSxrWCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fcG9pbnRlclVwLGtYKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix0aGlzLl9wb2ludGVyVXAsa1gpO2NvbnN0IGU9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09ZSYmZSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVyKX1faW5jcmVtZW50KHQpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXAoKHRoaXMudmFsdWV8fDApK3RoaXMuc3RlcCp0LHRoaXMubWluLHRoaXMubWF4KX1fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24odCl7aWYoIXRoaXMuX3NsaWRlckRpbWVuc2lvbnMpcmV0dXJuO2xldCBlPXRoaXMuX2NsYW1wKCgodGhpcy52ZXJ0aWNhbD90Lnk6dC54KS0odGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLnRvcDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLmxlZnQpKS8odGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLmhlaWdodDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLndpZHRoKSk7aWYodGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKSYmKGU9MS1lKSwwPT09ZSl0aGlzLnZhbHVlPXRoaXMubWluO2Vsc2UgaWYoMT09PWUpdGhpcy52YWx1ZT10aGlzLm1heDtlbHNle2NvbnN0IHQ9dGhpcy5fY2FsY3VsYXRlVmFsdWUoZSksbj1NYXRoLnJvdW5kKCh0LXRoaXMubWluKS90aGlzLnN0ZXApKnRoaXMuc3RlcCt0aGlzLm1pbjt0aGlzLnZhbHVlPXRoaXMuX2NsYW1wKG4sdGhpcy5taW4sdGhpcy5tYXgpfX1fZW1pdENoYW5nZUV2ZW50KCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLnZhbHVlKSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSksdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCgpKX1fZW1pdElucHV0RXZlbnQoKXt0aGlzLmlucHV0LmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoKSl9X3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKXtpZih0aGlzLnRpY2tJbnRlcnZhbCYmdGhpcy5fc2xpZGVyRGltZW5zaW9ucylpZigiYXV0byI9PXRoaXMudGlja0ludGVydmFsKXtsZXQgdD10aGlzLnZlcnRpY2FsP3RoaXMuX3NsaWRlckRpbWVuc2lvbnMuaGVpZ2h0OnRoaXMuX3NsaWRlckRpbWVuc2lvbnMud2lkdGgsZT1NYXRoLmNlaWwoMzAvKHQqdGhpcy5zdGVwLyh0aGlzLm1heC10aGlzLm1pbikpKTt0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50PWUqdGhpcy5zdGVwL3R9ZWxzZSB0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50PXRoaXMudGlja0ludGVydmFsKnRoaXMuc3RlcC8odGhpcy5tYXgtdGhpcy5taW4pfV9jcmVhdGVDaGFuZ2VFdmVudCh0PXRoaXMudmFsdWUpe2xldCBlPW5ldyBEWDtyZXR1cm4gZS5zb3VyY2U9dGhpcyxlLnZhbHVlPXQsZX1fY2FsY3VsYXRlUGVyY2VudGFnZSh0KXtyZXR1cm4oKHR8fDApLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pfV9jYWxjdWxhdGVWYWx1ZSh0KXtyZXR1cm4gdGhpcy5taW4rdCoodGhpcy5tYXgtdGhpcy5taW4pfV9jbGFtcCh0LGU9MCxuPTEpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQsbikpfV9nZXRTbGlkZXJEaW1lbnNpb25zKCl7cmV0dXJuIHRoaXMuX3NsaWRlcldyYXBwZXI/dGhpcy5fc2xpZGVyV3JhcHBlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOm51bGx9X2ZvY3VzSG9zdEVsZW1lbnQodCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9ibHVySG9zdEVsZW1lbnQoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYmx1cigpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMub25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9fWZ1bmN0aW9uIEFYKHQpe3JldHVybiJ0Ij09PXQudHlwZVswXX1mdW5jdGlvbiBUWCh0LGUpe2xldCBuO3JldHVybiBuPUFYKHQpPyJudW1iZXIiPT10eXBlb2YgZT9OWCh0LnRvdWNoZXMsZSl8fE5YKHQuY2hhbmdlZFRvdWNoZXMsZSk6dC50b3VjaGVzWzBdfHx0LmNoYW5nZWRUb3VjaGVzWzBdOnQsbj97eDpuLmNsaWVudFgseTpuLmNsaWVudFl9OnZvaWQgMH1mdW5jdGlvbiBOWCh0LGUpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0uaWRlbnRpZmllcj09PWUpcmV0dXJuIHRbbl19UlguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFJYKShTbShoZyksU20oU0kpLFNtKFVnKSxTbShISSw4KSxOYSgidGFiaW5kZXgiKSxTbShhXyksU20oWl8pLFNtKFZQLDgpKX0sUlguybVjbXA9dG8oe3R5cGU6Ulgsc2VsZWN0b3JzOltbIm1hdC1zbGlkZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKHdYLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX3NsaWRlcldyYXBwZXI9dC5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwic2xpZGVyIiwxLCJtYXQtc2xpZGVyIiwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjI5LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uRm9jdXMoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fb25CbHVyKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbktleWRvd24oZSl9KSkoImtleXVwIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbktleXVwKCl9KSkoIm1vdXNlZW50ZXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX29uTW91c2VlbnRlcigpfSkpKCJzZWxlY3RzdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKX0pKSwyJmUmJihUdSgidGFiSW5kZXgiLG4udGFiSW5kZXgpLGpwKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSgiYXJpYS12YWx1ZW1heCIsbi5tYXgpKCJhcmlhLXZhbHVlbWluIixuLm1pbikoImFyaWEtdmFsdWVub3ciLG4udmFsdWUpKCJhcmlhLXZhbHVldGV4dCIsbnVsbD09bi52YWx1ZVRleHQ/bi5kaXNwbGF5VmFsdWU6bi52YWx1ZVRleHQpKCJhcmlhLW9yaWVudGF0aW9uIixuLnZlcnRpY2FsPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwiKSxwdSgibWF0LXNsaWRlci1kaXNhYmxlZCIsbi5kaXNhYmxlZCkoIm1hdC1zbGlkZXItaGFzLXRpY2tzIixuLnRpY2tJbnRlcnZhbCkoIm1hdC1zbGlkZXItaG9yaXpvbnRhbCIsIW4udmVydGljYWwpKCJtYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQiLG4uX3Nob3VsZEludmVydEF4aXMoKSkoIm1hdC1zbGlkZXItaW52ZXJ0LW1vdXNlLWNvb3JkcyIsbi5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKSkoIm1hdC1zbGlkZXItc2xpZGluZyIsbi5faXNTbGlkaW5nKSgibWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIixuLnRodW1iTGFiZWwpKCJtYXQtc2xpZGVyLXZlcnRpY2FsIixuLnZlcnRpY2FsKSgibWF0LXNsaWRlci1taW4tdmFsdWUiLG4uX2lzTWluVmFsdWUoKSkoIm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2siLG4uZGlzYWJsZWR8fG4uX2lzTWluVmFsdWUoKSYmbi5fZ2V0VGh1bWJHYXAoKSYmbi5fc2hvdWxkSW52ZXJ0QXhpcygpKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1uLl9hbmltYXRpb25Nb2RlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCIsaW52ZXJ0OiJpbnZlcnQiLG1heDoibWF4IixtaW46Im1pbiIsc3RlcDoic3RlcCIsdGh1bWJMYWJlbDoidGh1bWJMYWJlbCIsdGlja0ludGVydmFsOiJ0aWNrSW50ZXJ2YWwiLHZhbHVlOiJ2YWx1ZSIsdmVydGljYWw6InZlcnRpY2FsIixkaXNwbGF5V2l0aDoiZGlzcGxheVdpdGgiLHZhbHVlVGV4dDoidmFsdWVUZXh0In0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLGlucHV0OiJpbnB1dCIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTbGlkZXIiXSxmZWF0dXJlczpbcGcoW1NYXSkseHBdLGRlY2xzOjEzLHZhcnM6Nixjb25zdHM6W1sxLCJtYXQtc2xpZGVyLXdyYXBwZXIiXSxbInNsaWRlcldyYXBwZXIiLCIiXSxbMSwibWF0LXNsaWRlci10cmFjay13cmFwcGVyIl0sWzEsIm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLWZpbGwiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aWNrcy1jb250YWluZXIiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aWNrcyIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLWZvY3VzLXJpbmciXSxbMSwibWF0LXNsaWRlci10aHVtYiJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsIl0sWzEsIm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwLDEpLFJtKDIsImRpdiIsMiksVG0oMywiZGl2IiwzKSxUbSg0LCJkaXYiLDQpLEFtKCksUm0oNSwiZGl2Iiw1KSxUbSg2LCJkaXYiLDYpLEFtKCksUm0oNywiZGl2Iiw3KSxUbSg4LCJkaXYiLDgpLFRtKDksImRpdiIsOSksUm0oMTAsImRpdiIsMTApLFJtKDExLCJzcGFuIiwxMSksa3UoMTIpLEFtKCksQW0oKSxBbSgpLEFtKCkpLDImZSYmKHJjKDMpLERtKCJuZ1N0eWxlIixuLl9nZXRUcmFja0JhY2tncm91bmRTdHlsZXMoKSkscmMoMSksRG0oIm5nU3R5bGUiLG4uX2dldFRyYWNrRmlsbFN0eWxlcygpKSxyYygxKSxEbSgibmdTdHlsZSIsbi5fZ2V0VGlja3NDb250YWluZXJTdHlsZXMoKSkscmMoMSksRG0oIm5nU3R5bGUiLG4uX2dldFRpY2tzU3R5bGVzKCkpLHJjKDEpLERtKCJuZ1N0eWxlIixuLl9nZXRUaHVtYkNvbnRhaW5lclN0eWxlcygpKSxyYyg1KSxTdShuLmRpc3BsYXlWYWx1ZSkpfSxkaXJlY3RpdmVzOltDTV0sc3R5bGVzOlsnLm1hdC1zbGlkZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6OHB4O291dGxpbmU6bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTphY3RpdmUsLm1hdC1zbGlkZXIubWF0LXNsaWRlci1zbGlkaW5nOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCl7Y3Vyc29yOi13ZWJraXQtZ3JhYmJpbmc7Y3Vyc29yOmdyYWJiaW5nfS5tYXQtc2xpZGVyLXdyYXBwZXJ7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0O3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10cmFjay1maWxse3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRpY2tzey13ZWJraXQtYmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1mb2N1cy1yaW5ne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYntjdXJzb3I6LXdlYmtpdC1ncmFiO2N1cnNvcjpncmFifS5tYXQtc2xpZGVyLXRodW1ie3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0xMHB4O2JvdHRvbTotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwLjcpO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1yYWRpdXMgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7ei1pbmRleDoxO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uLWR1cmF0aW9uOjBtc30ubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciwubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntvcGFjaXR5OjF9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3N7b3BhY2l0eToxfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5OmZsZXh9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYnt0cmFuc2Zvcm06c2NhbGUoMCl9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3JkZXItcmFkaXVzOjUwJSA1MCUgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLW1vdXNlLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstdG91Y2gtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGUoMSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDo0cHg7dHJhbnNmb3JtOnNjYWxlKDAuNSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0OjQ4cHg7bWluLXdpZHRoOjEyOHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcntoZWlnaHQ6MnB4O3RvcDoyM3B4O2xlZnQ6OHB4O3JpZ2h0OjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2hlaWdodDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MnB4O3JpZ2h0OjA7dG9wOjB9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMCl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDowO291dGxpbmU6c29saWQgMnB4O3RvcDoxcHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3toZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MDt0b3A6NTAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0b3A6LTE1cHg7cmlnaHQ6LTE1cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtyaWdodDotMTRweDt0b3A6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGVyLXZlcnRpY2Fse3dpZHRoOjQ4cHg7bWluLWhlaWdodDoxMjhweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVye3dpZHRoOjJweDt0b3A6OHB4O2JvdHRvbTo4cHg7bGVmdDoyM3B4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3dpZHRoOjJweDtib3JkZXItdG9wLXdpZHRoOjJweDtib3R0b206MDtsZWZ0OjB9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MTAwJTt3aWR0aDoycHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgwKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDEpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDoycHg7aGVpZ2h0OjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MDtvdXRsaW5lOnNvbGlkIDJweDtsZWZ0OjFweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JvdHRvbTotMTVweDtsZWZ0Oi0xNXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtsZWZ0OjUwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYnstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvdHRvbTotMTRweDtsZWZ0Oi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfVtkaXI9cnRsXSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntsZWZ0OjA7cmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3RyYW5zaXRpb246bm9uZX1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFJYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlNJfSx7dHlwZTpVZ30se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOmFffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19XSxSWC5wcm9wRGVjb3JhdG9ycz17aW52ZXJ0Olt7dHlwZTp4eX1dLG1heDpbe3R5cGU6eHl9XSxtaW46W3t0eXBlOnh5fV0sc3RlcDpbe3R5cGU6eHl9XSx0aHVtYkxhYmVsOlt7dHlwZTp4eX1dLHRpY2tJbnRlcnZhbDpbe3R5cGU6eHl9XSx2YWx1ZTpbe3R5cGU6eHl9XSxkaXNwbGF5V2l0aDpbe3R5cGU6eHl9XSx2YWx1ZVRleHQ6W3t0eXBlOnh5fV0sdmVydGljYWw6W3t0eXBlOnh5fV0sY2hhbmdlOlt7dHlwZTpPeX1dLGlucHV0Olt7dHlwZTpPeX1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpPeX1dLF9zbGlkZXJXcmFwcGVyOlt7dHlwZTpaYSxhcmdzOlsic2xpZGVyV3JhcHBlciJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUlgsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXNsaWRlciIsZXhwb3J0QXM6Im1hdFNsaWRlciIscHJvdmlkZXJzOltTWF0saG9zdDp7Iihmb2N1cykiOiJfb25Gb2N1cygpIiwiKGJsdXIpIjoiX29uQmx1cigpIiwiKGtleWRvd24pIjoiX29uS2V5ZG93bigkZXZlbnQpIiwiKGtleXVwKSI6Il9vbktleXVwKCkiLCIobW91c2VlbnRlcikiOiJfb25Nb3VzZWVudGVyKCkiLCIoc2VsZWN0c3RhcnQpIjoiJGV2ZW50LnByZXZlbnREZWZhdWx0KCkiLGNsYXNzOiJtYXQtc2xpZGVyIG1hdC1mb2N1cy1pbmRpY2F0b3IiLHJvbGU6InNsaWRlciIsIlt0YWJJbmRleF0iOiJ0YWJJbmRleCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci5hcmlhLXZhbHVlbWF4XSI6Im1heCIsIlthdHRyLmFyaWEtdmFsdWVtaW5dIjoibWluIiwiW2F0dHIuYXJpYS12YWx1ZW5vd10iOiJ2YWx1ZSIsIlthdHRyLmFyaWEtdmFsdWV0ZXh0XSI6InZhbHVlVGV4dCA9PSBudWxsID8gZGlzcGxheVZhbHVlIDogdmFsdWVUZXh0IiwiW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0iOid2ZXJ0aWNhbCA/ICJ2ZXJ0aWNhbCIgOiAiaG9yaXpvbnRhbCInLCJbY2xhc3MubWF0LXNsaWRlci1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2xpZGVyLWhhcy10aWNrc10iOiJ0aWNrSW50ZXJ2YWwiLCJbY2xhc3MubWF0LXNsaWRlci1ob3Jpem9udGFsXSI6IiF2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWRdIjoiX3Nob3VsZEludmVydEF4aXMoKSIsIltjbGFzcy5tYXQtc2xpZGVyLWludmVydC1tb3VzZS1jb29yZHNdIjoiX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkiLCJbY2xhc3MubWF0LXNsaWRlci1zbGlkaW5nXSI6Il9pc1NsaWRpbmciLCJbY2xhc3MubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nXSI6InRodW1iTGFiZWwiLCJbY2xhc3MubWF0LXNsaWRlci12ZXJ0aWNhbF0iOiJ2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtc2xpZGVyLW1pbi12YWx1ZV0iOiJfaXNNaW5WYWx1ZSgpIiwiW2NsYXNzLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2tdIjoiZGlzYWJsZWQgfHwgX2lzTWluVmFsdWUoKSAmJiBfZ2V0VGh1bWJHYXAoKSAmJiBfc2hvdWxkSW52ZXJ0QXhpcygpIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1zbGlkZXItd3JhcHBlciIgI3NsaWRlcldyYXBwZXI+XG4gIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2std3JhcHBlciI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIiBbbmdTdHlsZV09Il9nZXRUcmFja0JhY2tncm91bmRTdHlsZXMoKSI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10cmFjay1maWxsIiBbbmdTdHlsZV09Il9nZXRUcmFja0ZpbGxTdHlsZXMoKSI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lciIgW25nU3R5bGVdPSJfZ2V0VGlja3NDb250YWluZXJTdHlsZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aWNrcyIgW25nU3R5bGVdPSJfZ2V0VGlja3NTdHlsZXMoKSI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciIgW25nU3R5bGVdPSJfZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci1mb2N1cy1yaW5nIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRodW1iIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGVyLXRodW1iLWxhYmVsIj5cbiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQiPnt7ZGlzcGxheVZhbHVlfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4nLGlucHV0czpbImRpc2FibGVkIiwiY29sb3IiLCJ0YWJJbmRleCJdLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHN0eWxlczpbJy5tYXQtc2xpZGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweDtvdXRsaW5lOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6YWN0aXZlLC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItc2xpZGluZzpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpe2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30ubWF0LXNsaWRlci13cmFwcGVyey13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OmV4YWN0O2NvbG9yLWFkanVzdDpleGFjdDtwb3NpdGlvbjphYnNvbHV0ZX0ubWF0LXNsaWRlci10cmFjay13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdHJhY2stZmlsbHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10aWNrc3std2Via2l0LWJhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItZm9jdXMtcmluZ3twb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4O2hlaWdodDozMHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTpub3QoLm1hdC1zbGlkZXItc2xpZGluZykgLm1hdC1zbGlkZXItdGh1bWJ7Y3Vyc29yOi13ZWJraXQtZ3JhYjtjdXJzb3I6Z3JhYn0ubWF0LXNsaWRlci10aHVtYntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotMTBweDtib3R0b206LTEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyOjNweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMC43KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmU7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItcmFkaXVzIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3otaW5kZXg6MTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbi1kdXJhdGlvbjowbXN9Lm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLXN0eWxlOnNvbGlkO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXIsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1oaWRlLWxhc3QtdGljaykgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7b3BhY2l0eToxfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpIC5tYXQtc2xpZGVyLXRpY2tze29wYWNpdHk6MX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpmbGV4fS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWJ7dHJhbnNmb3JtOnNjYWxlKDApfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym9yZGVyLXJhZGl1czo1MCUgNTAlIDB9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1tb3VzZS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXRvdWNoLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlKDEpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MH0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6NHB4O3RyYW5zZm9ybTpzY2FsZSgwLjUpfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci1ob3Jpem9udGFse2hlaWdodDo0OHB4O21pbi13aWR0aDoxMjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7aGVpZ2h0OjJweDt0b3A6MjNweDtsZWZ0OjhweDtyaWdodDo4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntoZWlnaHQ6MnB4O2JvcmRlci1sZWZ0LXdpZHRoOjJweDtyaWdodDowO3RvcDowfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDApfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgxKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MnB4O3dpZHRoOjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntoZWlnaHQ6MDtvdXRsaW5lOnNvbGlkIDJweDt0b3A6MXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3N7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3dpZHRoOjEwMCU7aGVpZ2h0OjA7dG9wOjUwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dG9wOi0xNXB4O3JpZ2h0Oi0xNXB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7cmlnaHQ6LTE0cHg7dG9wOi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06bm9uZX0ubWF0LXNsaWRlci12ZXJ0aWNhbHt3aWR0aDo0OHB4O21pbi1oZWlnaHQ6MTI4cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcnt3aWR0aDoycHg7dG9wOjhweDtib3R0b206OHB4O2xlZnQ6MjNweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt3aWR0aDoycHg7Ym9yZGVyLXRvcC13aWR0aDoycHg7Ym90dG9tOjA7bGVmdDowfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgxKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjA7b3V0bGluZTpzb2xpZCAycHg7bGVmdDoxcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tib3R0b206LTE1cHg7bGVmdDotMTVweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3t3aWR0aDoycHg7aGVpZ2h0OjEwMCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye2hlaWdodDoxMDAlO3dpZHRoOjA7bGVmdDo1MCV9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWJ7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbjtiYWNrZmFjZS12aXNpYmlsaXR5OmhpZGRlbn0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3R0b206LTE0cHg7bGVmdDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWCgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7bGVmdDowO3JpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsLm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0LC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcnt0cmFuc2l0aW9uOm5vbmV9XG4nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpTSX0se3R5cGU6VWd9LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpqYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTphX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV19KSx7Y2hhbmdlOlt7dHlwZTpPeX1dLGlucHV0Olt7dHlwZTpPeX1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpPeX1dLGludmVydDpbe3R5cGU6eHl9XSxtYXg6W3t0eXBlOnh5fV0sbWluOlt7dHlwZTp4eX1dLHN0ZXA6W3t0eXBlOnh5fV0sdGh1bWJMYWJlbDpbe3R5cGU6eHl9XSx0aWNrSW50ZXJ2YWw6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV0sdmVydGljYWw6W3t0eXBlOnh5fV0sZGlzcGxheVdpdGg6W3t0eXBlOnh5fV0sdmFsdWVUZXh0Olt7dHlwZTp4eX1dLF9zbGlkZXJXcmFwcGVyOlt7dHlwZTpaYSxhcmdzOlsic2xpZGVyV3JhcHBlciJdfV19KTtjbGFzcyB6WHt9elguybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHpYKX0selguybVtb2Q9YW8oe3R5cGU6elh9KSx6WC7JtWluaj12bih7aW1wb3J0czpbW1dNLFhJXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHpYLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV00sWEldLGV4cG9ydHM6W1JYLFhJXSxkZWNsYXJhdGlvbnM6W1JYXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHpYLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bUlhdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dNLFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltSWCxYSV19fSk7Y29uc3QgSVg9ezE5OiJmbG9hdDE2IiwxOiJmbG9hdDMyIiwyOiJmbG9hdDY0IiwzOiJpbnQzMiIsNDoidWludDgiLDE3OiJ1aW50MTYiLDIyOiJ1aW50MzIiLDIzOiJ1aW50NjQiLDU6ImludDE2Iiw2OiJpbnQ4Iiw3OiJzdHJpbmciLDg6ImNvbXBsZXg2NCIsMTg6ImNvbXBsZXgxMjgiLDk6ImludDY0IiwxMDoiYm9vbCIsMTE6InFpbnQ4IiwxMjoicXVpbnQ4IiwxNToicWludDE2IiwxNjoicXVpbnQxNiIsMTM6InFpbnQzMiIsMTQ6ImJmbG9hdDE2IiwyMDoicmVzb3VyY2UiLDIxOiJ2YXJpYW50IiwxMTk6ImZsb2F0MTZfcmVmIiwxMDE6ImZsb2F0MzJfcmVmIiwxMDI6ImZsb2F0NjRfcmVmIiwxMDM6ImludDMyX3JlZiIsMTIyOiJ1aW50MzJfcmVmIiwxMDQ6InVpbnQ4X3JlZiIsMTE3OiJ1aW50MTZfcmVmIiwxMDU6ImludDE2X3JlZiIsMTA2OiJpbnQ4X3JlZiIsMTA3OiJzdHJpbmdfcmVmIiwxMDg6ImNvbXBsZXg2NF9yZWYiLDExODoiY29tcGxleDEyOF9yZWYiLDEwOToiaW50NjRfcmVmIiwxMjM6InVpbnQ2NF9yZWYiLDExMDoiYm9vbF9yZWYiLDExMToicWludDhfcmVmIiwxMTI6InF1aW50OF9yZWYiLDExNToicWludDE2X3JlZiIsMTE2OiJxdWludDE2X3JlZiIsMTEzOiJxaW50MzJfcmVmIiwxMTQ6ImJmbG9hdDE2X3JlZiIsMTIwOiJyZXNvdXJjZV9yZWYiLDEyMToidmFyaWFudF9yZWYifTtmdW5jdGlvbiBIWCh0KXtjb25zdHt0ZW5zb3JEZWJ1Z01vZGU6ZSxhcnJheTpufT10O3N3aXRjaChlKXtjYXNlIG1aLk5PX1RFTlNPUjppZihudWxsIT09bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCBub24tbnVsbCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdW5kZXIgTk9fVEVOU09SIG1vZGUiKTtyZXR1cm57fTtjYXNlIG1aLkNVUlRfSEVBTFRIOmlmKG51bGw9PT1ufHwyIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBDVVJUX0hFQUxUSCBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggMiwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KG4pfWApO3JldHVybntoYXNJbmZPck5hTjpCb29sZWFuKG5bMV0pfTtjYXNlIG1aLkNPTkNJU0VfSEVBTFRIOntpZihudWxsPT09bnx8NSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgQ09OQ0lTRV9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDUsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShuKX1gKTtjb25zdCB0PXtzaXplOm5bMV19O3JldHVybiBuWzJdPjAmJih0Lm51bU5lZ2F0aXZlSW5mcz1uWzJdKSxuWzNdPjAmJih0Lm51bVBvc2l0aXZlSW5mcz1uWzNdKSxuWzRdPjAmJih0Lm51bU5hTnM9bls0XSksdH1jYXNlIG1aLlNIQVBFOntpZihudWxsPT09bnx8MTAhPT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIFNIQVBFIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAxMCwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KG4pfWApO2NvbnN0IHQ9blsyXTtsZXQgZT1uLnNsaWNlKDQsTWF0aC5taW4oNCt0LG4ubGVuZ3RoKSk7cmV0dXJuIGUubGVuZ3RoPHQmJihlPW5ldyBBcnJheSh0LWUubGVuZ3RoKS5jb25jYXQoZSkpLHtkdHlwZTpJWFtuWzFdXSxyYW5rOnQsc2l6ZTpuWzNdLHNoYXBlOmV9fWNhc2UgbVouRlVMTF9IRUFMVEg6e2lmKG51bGw9PT1ufHwxMSE9PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgRlVMTF9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDExLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkobil9YCk7Y29uc3QgdD17ZHR5cGU6SVhbblsyXV0scmFuazpuWzNdLHNpemU6bls0XX07cmV0dXJuIG5bNV0+MCYmKHQubnVtTmVnYXRpdmVJbmZzPW5bNV0pLG5bNl0+MCYmKHQubnVtUG9zaXRpdmVJbmZzPW5bNl0pLG5bN10+MCYmKHQubnVtTmFOcz1uWzddKSxuWzhdPjAmJih0Lm51bU5lZ2F0aXZlRmluaXRlcz1uWzhdKSxuWzldPjAmJih0Lm51bVplcm9zPW5bOV0pLG5bMTBdPjAmJih0Lm51bVBvc2l0aXZlRmluaXRlcz1uWzEwXSksdH1jYXNlIG1aLkZVTExfVEVOU09SOmlmKG51bGwhPT1uKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZGx5IHJlY2VpdmVkIG5vbi1udWxsIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB1bmRlciBGVUxMX1RFTlNPUiBtb2RlIik7cmV0dXJue307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCB0ZW5zb3JEZWJ1Z01vZGU6ICR7ZX1gKX19Y29uc3QgRlg9Iltfbmdob3N0LSVDT01QJV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgfSI7ZnVuY3Rpb24gTFgodCxlKXsxJnQmJlRtKDAsImRpdiIsNCl9ZnVuY3Rpb24gQlgodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDcpLFJtKDEsInNwYW4iLDgpLGt1KDIsIk5hTiIpLEFtKCksUm0oMywic3BhbiIsOSksa3UoNCksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoNCksRHUoIsOXIix0Lm51bU5hTnMsIiIpfX1mdW5jdGlvbiBWWCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNyksUm0oMSwic3BhbiIsOCksa3UoMiwiLeKIniIpLEFtKCksUm0oMywic3BhbiIsOSksa3UoNCksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoNCksRHUoIsOXIix0Lm51bU5lZ2F0aXZlSW5mcywiIil9fWZ1bmN0aW9uIGpYKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiw3KSxSbSgxLCJzcGFuIiw4KSxrdSgyLCIr4oieIiksQW0oKSxSbSgzLCJzcGFuIiw5KSxrdSg0KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYyg0KSxEdSgiw5ciLHQubnVtUG9zaXRpdmVJbmZzLCIiKX19ZnVuY3Rpb24gVVgodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDcpLFJtKDEsInNwYW4iLDEwKSxrdSgyLCItIiksQW0oKSxSbSgzLCJzcGFuIiw5KSxrdSg0KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYyg0KSxEdSgiw5ciLHQubnVtTmVnYXRpdmVGaW5pdGVzLCIiKX19ZnVuY3Rpb24gR1godCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDcpLFJtKDEsInNwYW4iLDEwKSxrdSgyLCIwIiksQW0oKSxSbSgzLCJzcGFuIiw5KSxrdSg0KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYyg0KSxEdSgiw5ciLHQubnVtWmVyb3MsIiIpfX1mdW5jdGlvbiBXWCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNyksUm0oMSwic3BhbiIsMTApLGt1KDIsIisiKSxBbSgpLFJtKDMsInNwYW4iLDkpLGt1KDQpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO3JjKDQpLER1KCLDlyIsdC5udW1Qb3NpdGl2ZUZpbml0ZXMsIiIpfX1mdW5jdGlvbiBZWCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNSksUXAoMSxCWCw1LDEsImRpdiIsNiksUXAoMixWWCw1LDEsImRpdiIsNiksUXAoMyxqWCw1LDEsImRpdiIsNiksUXAoNCxVWCw1LDEsImRpdiIsNiksUXAoNSxHWCw1LDEsImRpdiIsNiksUXAoNixXWCw1LDEsImRpdiIsNiksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRG0oIm5nSWYiLHZvaWQgMCE9PXQubnVtTmFOcyYmdC5udW1OYU5zPjApLHJjKDEpLERtKCJuZ0lmIix2b2lkIDAhPT10Lm51bU5lZ2F0aXZlSW5mcyYmdC5udW1OZWdhdGl2ZUluZnM+MCkscmMoMSksRG0oIm5nSWYiLHZvaWQgMCE9PXQubnVtUG9zaXRpdmVJbmZzJiZ0Lm51bVBvc2l0aXZlSW5mcz4wKSxyYygxKSxEbSgibmdJZiIsdm9pZCAwIT09dC5udW1OZWdhdGl2ZUZpbml0ZXMmJnQubnVtTmVnYXRpdmVGaW5pdGVzPjApLHJjKDEpLERtKCJuZ0lmIix2b2lkIDAhPT10Lm51bVplcm9zJiZ0Lm51bVplcm9zPjApLHJjKDEpLERtKCJuZ0lmIix2b2lkIDAhPT10Lm51bVBvc2l0aXZlRmluaXRlcyYmdC5udW1Qb3NpdGl2ZUZpbml0ZXM+MCl9fWNvbnN0IHFYPWZ1bmN0aW9uKHQpe3JldHVyblsiY29udGFpbmVyIix0XX07ZnVuY3Rpb24gWlgodCxlKXsxJnQmJlRtKDAsImRlYnVnLXRlbnNvci1kdHlwZSIsNSksMiZ0JiZEbSgiZHR5cGUiLFltKCkuZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSl9ZnVuY3Rpb24gWFgodCxlKXsxJnQmJlRtKDAsImRlYnVnLXRlbnNvci1yYW5rIiw2KSwyJnQmJkRtKCJyYW5rIixZbSgpLmRlYnVnVGVuc29yVmFsdWUucmFuayl9ZnVuY3Rpb24gS1godCxlKXsxJnQmJlRtKDAsImRlYnVnLXRlbnNvci1zaGFwZSIsNyksMiZ0JiZEbSgic2hhcGUiLFltKCkuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSl9ZnVuY3Rpb24gSlgodCxlKXsxJnQmJlRtKDAsImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiIsOCksMiZ0JiZEbSgiaGFzSW5mT3JOYU4iLFltKCkuZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTil9ZnVuY3Rpb24gUVgodCxlKXtpZigxJnQmJlRtKDAsImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsOSksMiZ0KXtjb25zdCB0PVltKCk7S20oInNpemUiLHQuZGVidWdUZW5zb3JWYWx1ZS5zaXplKSxEbSgibnVtTmVnYXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVJbmZzKSgibnVtUG9zaXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVJbmZzKSgibnVtTmFOcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMpKCJudW1OZWdhdGl2ZUZpbml0ZXMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUZpbml0ZXMpKCJudW1aZXJvcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bVplcm9zKSgibnVtUG9zaXRpdmVGaW5pdGVzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzKX19Y29uc3QgJFg9IlxuICA6aG9zdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICAgIGhlaWdodDogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIHBhZGRpbmc6IDFweCAzcHg7XG4gICAgd2lkdGg6IG1heC1jb250ZW50O1xuICB9XG4iO2NsYXNzIHRLe310Sy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dEspfSx0Sy7JtWNtcD10byh7dHlwZTp0SyxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLWR0eXBlIl1dLGlucHV0czp7ZHR5cGU6ImR0eXBlIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYma3UoMCksMiZlJiZEdSgiICIsbi5kdHlwZSwiICIpfSxzdHlsZXM6W0ZYXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodEssW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLWR0eXBlIix0ZW1wbGF0ZToiIHt7IGR0eXBlIH19ICIsc3R5bGVzOlskWF19XX1dLG51bGwse2R0eXBlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgZUt7fWVLLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxlSyl9LGVLLsm1Y21wPXRvKHt0eXBlOmVLLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItcmFuayJdXSxpbnB1dHM6e3Jhbms6InJhbmsifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZrdSgwKSwyJmUmJkR1KCIgIixuLnJhbmssIkQgIil9LHN0eWxlczpbRlhdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChlSyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItcmFuayIsdGVtcGxhdGU6IiB7eyByYW5rIH19RCAiLHN0eWxlczpbJFhdfV19XSxudWxsLHtyYW5rOlt7dHlwZTp4eX1dfSk7Y2xhc3Mgbkt7Z2V0IHNoYXBlU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2hhcGUubWFwKCh0PT52b2lkIDA9PT10PyI/IjpTdHJpbmcodCkpKS5qb2luKCIsIikrIl0ifX1uSy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bkspfSxuSy7JtWNtcD10byh7dHlwZTpuSyxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLXNoYXBlIl1dLGlucHV0czp7c2hhcGU6InNoYXBlIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYma3UoMCksMiZlJiZEdSgiIHNoYXBlOiIsbi5zaGFwZVN0cmluZywiICIpfSxzdHlsZXM6W0ZYXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobkssW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLXNoYXBlIix0ZW1wbGF0ZToiIHNoYXBlOnt7IHNoYXBlU3RyaW5nIH19ICIsc3R5bGVzOlskWF19XX1dLG51bGwse3NoYXBlOlt7dHlwZTp4eX1dfSk7Y2xhc3Mgb0t7Z2V0IGJyZWFrZG93bkV4aXN0cygpe3JldHVybiB2b2lkIDAhPT10aGlzLm51bU5hTnN8fHZvaWQgMCE9PXRoaXMubnVtTmVnYXRpdmVJbmZzfHx2b2lkIDAhPT10aGlzLm51bVBvc2l0aXZlSW5mc3x8dm9pZCAwIT09dGhpcy5udW1OZWdhdGl2ZUZpbml0ZXN8fHZvaWQgMCE9PXRoaXMubnVtWmVyb3N8fHZvaWQgMCE9PXRoaXMubnVtUG9zaXRpdmVGaW5pdGVzfX1vSy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0spfSxvSy7JtWNtcD10byh7dHlwZTpvSyxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIl1dLGlucHV0czp7c2l6ZToic2l6ZSIsbnVtTmFOczoibnVtTmFOcyIsbnVtTmVnYXRpdmVJbmZzOiJudW1OZWdhdGl2ZUluZnMiLG51bVBvc2l0aXZlSW5mczoibnVtUG9zaXRpdmVJbmZzIixudW1OZWdhdGl2ZUZpbml0ZXM6Im51bU5lZ2F0aXZlRmluaXRlcyIsbnVtWmVyb3M6Im51bVplcm9zIixudW1Qb3NpdGl2ZUZpbml0ZXM6Im51bVBvc2l0aXZlRmluaXRlcyJ9LGRlY2xzOjcsdmFyczozLGNvbnN0czpbWzEsInNpemUiXSxbMSwic2l6ZS12YWx1ZSJdLFsiY2xhc3MiLCJicmVhayIsNCwibmdJZiJdLFsiY2xhc3MiLCJicmVha2Rvd24iLDQsIm5nSWYiXSxbMSwiYnJlYWsiXSxbMSwiYnJlYWtkb3duIl0sWyJjbGFzcyIsImNhdGVnb3J5Iiw0LCJuZ0lmIl0sWzEsImNhdGVnb3J5Il0sWzEsImNhdGVnb3J5LXRhZyIsImluZmluaXRlIl0sWzEsImNhdGVnb3J5LWNvdW50Il0sWzEsImNhdGVnb3J5LXRhZyIsImZpbml0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJzcGFuIiksa3UoMiwic2l6ZToiKSxBbSgpLFJtKDMsInNwYW4iLDEpLGt1KDQpLEFtKCksQW0oKSxRcCg1LExYLDEsMCwiZGl2IiwyKSxRcCg2LFlYLDcsNiwiZGl2IiwzKSksMiZlJiYocmMoNCksU3Uobi5zaXplKSxyYygxKSxEbSgibmdJZiIsbi5icmVha2Rvd25FeGlzdHMpLHJjKDEpLERtKCJuZ0lmIixuLmJyZWFrZG93bkV4aXN0cykpfSxkaXJlY3RpdmVzOltkTV0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBtYXJnaW46IDAgMnB4O1xuICAgICAgICBwYWRkaW5nOiAxcHg7XG4gICAgICB9XG4gICAgICAuYnJlYWtbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuc2l6ZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTFweDtcbiAgICAgICAgbWFyZ2luOiAwIDNweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5icmVha2Rvd25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIH1cbiAgICAgIC5jYXRlZ29yeVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgaGVpZ3RoOiAxMDAlO1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnktdGFnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgcGFkZGluZzogMCAycHg7XG4gICAgICB9XG4gICAgICAuZmluaXRlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7XG4gICAgICAgIGNvbG9yOiAjZmVmZWZlO1xuICAgICAgfVxuICAgICAgLmluZmluaXRlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvSyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iLHRlbXBsYXRlOidcbiAgICA8ZGl2IGNsYXNzPSJzaXplIj5cbiAgICAgIDxzcGFuPnNpemU6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9InNpemUtdmFsdWUiPnt7IHNpemUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj0iYnJlYWtkb3duRXhpc3RzIiBjbGFzcz0iYnJlYWsiPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9ImJyZWFrZG93bkV4aXN0cyIgY2xhc3M9ImJyZWFrZG93biI+XG4gICAgICA8ZGl2ICpuZ0lmPSJudW1OYU5zICE9PSB1bmRlZmluZWQgJiYgbnVtTmFOcyA+IDAiIGNsYXNzPSJjYXRlZ29yeSI+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgaW5maW5pdGUiPk5hTjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bU5hTnMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9Im51bU5lZ2F0aXZlSW5mcyAhPT0gdW5kZWZpbmVkICYmIG51bU5lZ2F0aXZlSW5mcyA+IDAiXG4gICAgICAgIGNsYXNzPSJjYXRlZ29yeSJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBpbmZpbml0ZSI+LeKInjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bU5lZ2F0aXZlSW5mcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVJbmZzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4r4oiePC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtUG9zaXRpdmVJbmZzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPSJudW1OZWdhdGl2ZUZpbml0ZXMgIT09IHVuZGVmaW5lZCAmJiBudW1OZWdhdGl2ZUZpbml0ZXMgPiAwIlxuICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS10YWcgZmluaXRlIj4tPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPsOXe3sgbnVtTmVnYXRpdmVGaW5pdGVzIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPSJudW1aZXJvcyAhPT0gdW5kZWZpbmVkICYmIG51bVplcm9zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LXRhZyBmaW5pdGUiPjA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+w5d7eyBudW1aZXJvcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVGaW5pdGVzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVGaW5pdGVzID4gMCJcbiAgICAgICAgY2xhc3M9ImNhdGVnb3J5IlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+Kzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij7Dl3t7IG51bVBvc2l0aXZlRmluaXRlcyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4O1xuICAgICAgfVxuICAgICAgLmJyZWFrIHtcbiAgICAgICAgZmxleC1iYXNpczogMTAwJTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuc2l6ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBtYXJnaW46IDAgM3B4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuICAgICAgLmJyZWFrZG93biB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgaGVpZ3RoOiAxMDAlO1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnktdGFnIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBwYWRkaW5nOiAwIDJweDtcbiAgICAgIH1cbiAgICAgIC5maW5pdGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xuICAgICAgICBjb2xvcjogI2ZlZmVmZTtcbiAgICAgIH1cbiAgICAgIC5pbmZpbml0ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICJdfV19XSxudWxsLHtzaXplOlt7dHlwZTp4eX1dLG51bU5hTnM6W3t0eXBlOnh5fV0sbnVtTmVnYXRpdmVJbmZzOlt7dHlwZTp4eX1dLG51bVBvc2l0aXZlSW5mczpbe3R5cGU6eHl9XSxudW1OZWdhdGl2ZUZpbml0ZXM6W3t0eXBlOnh5fV0sbnVtWmVyb3M6W3t0eXBlOnh5fV0sbnVtUG9zaXRpdmVGaW5pdGVzOlt7dHlwZTp4eX1dfSk7Y2xhc3MgaUt7Z2V0IGluZm9TdHJpbmcoKXtyZXR1cm4gdGhpcy5oYXNJbmZPck5hTj8iSGFzIOKIni9OYU4iOiJObyDiiJ4vTmFOIn19aUsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGlLKX0saUsuybVjbXA9dG8oe3R5cGU6aUssc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiJdXSxpbnB1dHM6e2hhc0luZk9yTmFOOiJoYXNJbmZPck5hTiJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksa3UoMSksQW0oKSksMiZlJiYoRG0oIm5nQ2xhc3MiLE1oKDIscVgsbi5oYXNJbmZPck5hTj8iaGFzLWluZi1vci1uYW4iOiIiKSkscmMoMSksRHUoIiAiLG4uaW5mb1N0cmluZywiICIpKX0sZGlyZWN0aXZlczpbYU1dLHN0eWxlczpbIi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjb2xvcjogIzY2NjY2NjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLmhhcy1pbmYtb3ItbmFuW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChpSyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLHRlbXBsYXRlOiJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cIlsnY29udGFpbmVyJywgaGFzSW5mT3JOYU4gPyAnaGFzLWluZi1vci1uYW4nIDogJyddXCI+XG4gICAgICB7eyBpbmZvU3RyaW5nIH19XG4gICAgPC9kaXY+XG4gICIsc3R5bGVzOlsiXG4gICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjb2xvcjogIzY2NjY2NjtcbiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4IDNweDtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLmhhcy1pbmYtb3ItbmFuIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgIl19XX1dLG51bGwse2hhc0luZk9yTmFOOlt7dHlwZTp4eX1dfSk7Y2xhc3MgYUt7fWFLLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxhSyl9LGFLLsm1Y21wPXRvKHt0eXBlOmFLLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItdmFsdWUiXV0saW5wdXRzOntkZWJ1Z1RlbnNvclZhbHVlOiJkZWJ1Z1RlbnNvclZhbHVlIn0sZGVjbHM6NSx2YXJzOjUsY29uc3RzOltbMywiZHR5cGUiLDQsIm5nSWYiXSxbMywicmFuayIsNCwibmdJZiJdLFszLCJzaGFwZSIsNCwibmdJZiJdLFszLCJoYXNJbmZPck5hTiIsNCwibmdJZiJdLFszLCJzaXplIiwibnVtTmVnYXRpdmVJbmZzIiwibnVtUG9zaXRpdmVJbmZzIiwibnVtTmFOcyIsIm51bU5lZ2F0aXZlRmluaXRlcyIsIm51bVplcm9zIiwibnVtUG9zaXRpdmVGaW5pdGVzIiw0LCJuZ0lmIl0sWzMsImR0eXBlIl0sWzMsInJhbmsiXSxbMywic2hhcGUiXSxbMywiaGFzSW5mT3JOYU4iXSxbMywic2l6ZSIsIm51bU5lZ2F0aXZlSW5mcyIsIm51bVBvc2l0aXZlSW5mcyIsIm51bU5hTnMiLCJudW1OZWdhdGl2ZUZpbml0ZXMiLCJudW1aZXJvcyIsIm51bVBvc2l0aXZlRmluaXRlcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUXAoMCxaWCwxLDEsImRlYnVnLXRlbnNvci1kdHlwZSIsMCksUXAoMSxYWCwxLDEsImRlYnVnLXRlbnNvci1yYW5rIiwxKSxRcCgyLEtYLDEsMSwiZGVidWctdGVuc29yLXNoYXBlIiwyKSxRcCgzLEpYLDEsMSwiZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIiwzKSxRcCg0LFFYLDEsNywiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw0KSksMiZlJiYoRG0oIm5nSWYiLHZvaWQgMCE9PW4uZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSkscmMoMSksRG0oIm5nSWYiLHZvaWQgMCE9PW4uZGVidWdUZW5zb3JWYWx1ZS5yYW5rKSxyYygxKSxEbSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnNoYXBlKSxyYygxKSxEbSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLmhhc0luZk9yTmFOKSxyYygxKSxEbSgibmdJZiIsdm9pZCAwIT09bi5kZWJ1Z1RlbnNvclZhbHVlLnNpemUpKX0sZGlyZWN0aXZlczpbZE0sdEssZUssbkssaUssb0tdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICB9XG4gICAgICBkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChhSyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItdmFsdWUiLHRlbXBsYXRlOidcbiAgICA8ZGVidWctdGVuc29yLWR0eXBlXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgW2R0eXBlXT0iZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItZHR5cGU+XG4gICAgPGRlYnVnLXRlbnNvci1yYW5rXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rICE9PSB1bmRlZmluZWQiXG4gICAgICBbcmFua109ImRlYnVnVGVuc29yVmFsdWUucmFuayJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItcmFuaz5cbiAgICA8ZGVidWctdGVuc29yLXNoYXBlXG4gICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSAhPT0gdW5kZWZpbmVkIlxuICAgICAgW3NoYXBlXT0iZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3Itc2hhcGU+XG4gICAgPGRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hblxuICAgICAgKm5nSWY9ImRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4gIT09IHVuZGVmaW5lZCJcbiAgICAgIFtoYXNJbmZPck5hTl09ImRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4iXG4gICAgPlxuICAgIDwvZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuPlxuICAgIDxkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd25cbiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnNpemUgIT09IHVuZGVmaW5lZCJcbiAgICAgIHNpemU9Int7IGRlYnVnVGVuc29yVmFsdWUuc2l6ZSB9fSJcbiAgICAgIFtudW1OZWdhdGl2ZUluZnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlSW5mcyJcbiAgICAgIFtudW1Qb3NpdGl2ZUluZnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlSW5mcyJcbiAgICAgIFtudW1OYU5zXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1OYU5zIlxuICAgICAgW251bU5lZ2F0aXZlRmluaXRlc109ImRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVGaW5pdGVzIlxuICAgICAgW251bVplcm9zXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1aZXJvcyJcbiAgICAgIFtudW1Qb3NpdGl2ZUZpbml0ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlRmluaXRlcyJcbiAgICA+XG4gICAgPC9kZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIH1cbiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH1cbiAgICAiXX1dfV0sbnVsbCx7ZGVidWdUZW5zb3JWYWx1ZTpbe3R5cGU6eHl9XX0pO2NvbnN0IHJLPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3RlbnNvckRlYnVnTW9kZTp0LGFycmF5OmV9fTtmdW5jdGlvbiBzSyh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTIpLFJtKDEsImRpdiIsMTMpLGt1KDIpLEFtKCksUm0oMywiZGl2IiwxNCksVG0oNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNSksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1lLmluZGV4LG89WW0oMyk7cmMoMiksRHUoIk91dHB1dCBzbG90ICIsbiwiOiIpLHJjKDIpLERtKCJkZWJ1Z1RlbnNvclZhbHVlIixvLnBhcnNlRGVidWdUZW5zb3JWYWx1ZSh2aCgyLHJLLG8udGVuc29yRGVidWdNb2RlLHQpKSl9fWZ1bmN0aW9uIGxLKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwxMCksUXAoMSxzSyw1LDUsImRpdiIsMTEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygxKSxEbSgibmdGb3JPZiIsdC5kZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIGNLKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiksUm0oMSwiZGl2IiksUm0oMiwiZGl2IiwzKSxSbSgzLCJzcGFuIiw0KSxrdSg0LCIgT3A6ICIpLEFtKCksUm0oNSwic3BhbiIsNSksa3UoNiksQW0oKSxBbSgpLFJtKDcsImRpdiIsMyksUm0oOCwic3BhbiIsNCksa3UoOSwiICMgb2YgaW5wdXQgdGVuc29yczogIiksQW0oKSxSbSgxMCwic3BhbiIsNiksa3UoMTEpLEFtKCksQW0oKSxSbSgxMiwiZGl2IiwzKSxSbSgxMywic3BhbiIsNCksa3UoMTQsIiAjIG9mIG91dHB1dCB0ZW5zb3JzOiAiKSxBbSgpLFJtKDE1LCJzcGFuIiw3KSxrdSgxNiksQW0oKSxSbSgxNywic3BhbiIsOCksa3UoMTgpLEFtKCksQW0oKSxRcCgxOSxsSywyLDEsImRpdiIsOSksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYyg2KSxEdSgiICIsdC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vcF90eXBlLCIgIikscmMoNSksRHUoIiAiLG51bGw9PXQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSxyYyg1KSxEdSgiICIsbnVsbD09dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEub3V0cHV0X3RlbnNvcl9pZHMubGVuZ3RoLCIgIikscmMoMiksRHUoIiAoZGVidWcgbW9kZTogIix0LlRlbnNvckRlYnVnTW9kZVt0LnRlbnNvckRlYnVnTW9kZV0sIikgIikscmMoMSksRG0oIm5nSWYiLHQuaGFzRGVidWdUZW5zb3JWYWx1ZXMpfX1mdW5jdGlvbiBkSyh0LGUpe31jbGFzcyBwS3tjb25zdHJ1Y3Rvcigpe3RoaXMudGVuc29yRGVidWdNb2RlPW1aLlVOU1BFQ0lGSUVELHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXM9ITEsdGhpcy5kZWJ1Z1RlbnNvclZhbHVlcz1udWxsLHRoaXMuZGVidWdUZW5zb3JEdHlwZXM9bnVsbCx0aGlzLlRlbnNvckRlYnVnTW9kZT1tWix0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT1IWH19cEsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBLKX0scEsuybVjbXA9dG8oe3R5cGU6cEssc2VsZWN0b3JzOltbImV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudCJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Iixmb2N1c2VkRXhlY3V0aW9uRGF0YToiZm9jdXNlZEV4ZWN1dGlvbkRhdGEiLHRlbnNvckRlYnVnTW9kZToidGVuc29yRGVidWdNb2RlIixoYXNEZWJ1Z1RlbnNvclZhbHVlczoiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLGRlYnVnVGVuc29yVmFsdWVzOiJkZWJ1Z1RlbnNvclZhbHVlcyIsZGVidWdUZW5zb3JEdHlwZXM6ImRlYnVnVGVuc29yRHR5cGVzIn0sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwiZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxvYWRpbmdfc2VjdGlvbiIsIiJdLFsxLCJleGVjdXRpb24tZGF0YS1maWVsZCJdLFsxLCJleGVjdXRpb24tZGF0YS1rZXkiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJvcC10eXBlIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwiaW5wdXQtdGVuc29ycyJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsIm91dHB1dC10ZW5zb3JzIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIl0sWyJjbGFzcyIsIm91dHB1dC1zbG90cyIsNCwibmdJZiJdLFsxLCJvdXRwdXQtc2xvdHMiXSxbImNsYXNzIiwib3V0cHV0LXNsb3QtY29udGFpbmVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwib3V0cHV0LXNsb3QtY29udGFpbmVyIl0sWzEsIm91dHB1dC1zbG90LW51bWJlciJdLFsxLCJvdXRwdXQtc2xvdC1kZWJ1Zy10ZW5zb3ItdmFsdWUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiKSxSbSgyLCJzcGFuIiksa3UoMyksQW0oKSxBbSgpLFFwKDQsY0ssMjAsNSwiZGl2IiwxKSxRcCg1LGRLLDAsMCwibmctdGVtcGxhdGUiLG51bGwsMixpYiksQW0oKSksMiZlKXtjb25zdCB0PSRwKDYpO3JjKDMpLER1KCIgUHl0aG9uIEV4ZWN1dGlvbiAjIixuLmZvY3VzZWRFeGVjdXRpb25JbmRleCwiICIpLHJjKDEpLERtKCJuZ0lmIixudWxsIT09bi5mb2N1c2VkRXhlY3V0aW9uRGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W2RNLGxNLGFLXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZGVidWctdGVuc29yLXZhbHVlcy10YWJsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZGVidWctdGVuc29yLXZhbHVlcy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0ZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzAwMDt0ZXh0LWFsaWduOmxlZnR9LmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246bGVmdH0uZXhlY3V0aW9uLWRhdGEtZmllbGRbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0uZXhlY3V0aW9uLWRhdGEta2V5W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6MTIwcHg7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDoxMjBweH0uZXhlY3V0aW9uLWRhdGEtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1sZWZ0OjEwcHh9LmZvY3VzLWV4ZWN1dGlvbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2M4MDtib3JkZXItcmFkaXVzOjRweDtmb250LXNpemU6MTJweDtoZWlnaHQ6MTIwcHg7cGFkZGluZzo1cHg7d2lkdGg6MzYwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZvY3VzLWV4ZWN1dGlvbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTY1MTAwfS5vdXRwdXQtc2xvdHNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2MHB4O292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG99Lm91dHB1dC1zbG90LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgI2ViZWJlYjttYXJnaW4tdG9wOjVweDtwYWRkaW5nOjJweCAwO3ZlcnRpY2FsLWFsaWduOnRvcH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3V0cHV0LXNsb3QtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dHB1dC1zbG90LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0ub3V0cHV0LXNsb3QtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlfS5vdXRwdXQtc2xvdC1kZWJ1Zy10ZW5zb3ItdmFsdWVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjNweCAwIDNweCAzMHB4fS5vdXRwdXQtdGVuc29yc1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDo1cHh9J119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHBLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZXhlY3V0aW9uX2RhdGFfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZXhlY3V0aW9uX2RhdGFfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtmb2N1c2VkRXhlY3V0aW9uSW5kZXg6W3t0eXBlOnh5fV0sZm9jdXNlZEV4ZWN1dGlvbkRhdGE6W3t0eXBlOnh5fV0sdGVuc29yRGVidWdNb2RlOlt7dHlwZTp4eX1dLGhhc0RlYnVnVGVuc29yVmFsdWVzOlt7dHlwZTp4eX1dLGRlYnVnVGVuc29yVmFsdWVzOlt7dHlwZTp4eX1dLGRlYnVnVGVuc29yRHR5cGVzOlt7dHlwZTp4eX1dfSk7Y29uc3QgbUs9IlVua25vd24gZHR5cGUiO2NsYXNzIHVLe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZvY3VzZWRFeGVjdXRpb25EYXRhJD10aGlzLnN0b3JlLnBpcGUoRncobVgpKSx0aGlzLnRlbnNvckRlYnVnTW9kZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KG1YLCh0PT5udWxsPT09dD9tWi5VTlNQRUNJRklFRDp0LnRlbnNvcl9kZWJ1Z19tb2RlKSkpKSx0aGlzLmhhc0RlYnVnVGVuc29yVmFsdWVzJD10aGlzLnN0b3JlLnBpcGUoRncoWncobVgsKHQ9PntpZihudWxsPT09dHx8bnVsbD09PXQuZGVidWdfdGVuc29yX3ZhbHVlcylyZXR1cm4hMTtmb3IoY29uc3QgZSBvZiB0LmRlYnVnX3RlbnNvcl92YWx1ZXMpaWYobnVsbCE9PWUmJmUubGVuZ3RoPjApcmV0dXJuITA7cmV0dXJuITF9KSkpKSx0aGlzLmRlYnVnVGVuc29yVmFsdWVzJD10aGlzLnN0b3JlLnBpcGUoRncoWncobVgsKHQ9Pm51bGw9PT10P251bGw6dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKSkpKSx0aGlzLmRlYnVnVGVuc29yRHR5cGVzJD10aGlzLnN0b3JlLnBpcGUoRncoWncobVgsKHQ9PntpZihudWxsPT09dHx8bnVsbD09PXQuZGVidWdfdGVuc29yX3ZhbHVlcylyZXR1cm4gbnVsbDtpZih0LnRlbnNvcl9kZWJ1Z19tb2RlIT09bVouRlVMTF9IRUFMVEgmJnQudGVuc29yX2RlYnVnX21vZGUhPT1tWi5TSEFQRSlyZXR1cm4gbnVsbDtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQuZGVidWdfdGVuc29yX3ZhbHVlcylpZihudWxsPT09billLnB1c2gobUspO2Vsc2V7Y29uc3Qgbz1TdHJpbmcodC50ZW5zb3JfZGVidWdfbW9kZT09PW1aLkZVTExfSEVBTFRIP25bMl06blsxXSk7ZS5wdXNoKElYW29dfHxtSyl9cmV0dXJuIGV9KSkpKX19ZnVuY3Rpb24gZksodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJtYXQtc2xpZGVyIiwxMSksVm0oImlucHV0IiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25TbGlkZXJDaGFuZ2UuZW1pdChuLnZhbHVlKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgibWluIiwwKSgibWF4Iix0LnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0KSgidmFsdWUiLHQuc2Nyb2xsQmVnaW5JbmRleCl9fWZ1bmN0aW9uIGdLKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2Iiw2KSxSbSgxLCJidXR0b24iLDcpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vbk5hdmlnYXRlTGVmdC5lbWl0KCl9KSksa3UoMiwiIDwgIiksQW0oKSxSbSgzLCJkaXYiLDgpLGt1KDQpLEFtKCksUm0oNSwiYnV0dG9uIiw5KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkub25OYXZpZ2F0ZVJpZ2h0LmVtaXQoKX0pKSxrdSg2LCIgPiAiKSxBbSgpLFFwKDcsZkssMSwzLCJtYXQtc2xpZGVyIiwxMCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtyYyg0KSxSdSgiICIsdC5zY3JvbGxCZWdpbkluZGV4LCIgfiAiLHQuc2Nyb2xsQmVnaW5JbmRleCt0LmRpc3BsYXlDb3VudC0xLCIgb2YgIix0Lm51bUV4ZWN1dGlvbnMsIiAiKSxyYygzKSxEbSgibmdJZiIsdC5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdD4wKX19dUsuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVLKShTbShJdykpfSx1Sy7JtWNtcD10byh7dHlwZTp1SyxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiXV0saW5wdXRzOntmb2N1c2VkRXhlY3V0aW9uSW5kZXg6ImZvY3VzZWRFeGVjdXRpb25JbmRleCJ9LGRlY2xzOjYsdmFyczoxNixjb25zdHM6W1szLCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLCJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsInRlbnNvckRlYnVnTW9kZSIsImhhc0RlYnVnVGVuc29yVmFsdWVzIiwiZGVidWdUZW5zb3JWYWx1ZXMiLCJkZWJ1Z1RlbnNvckR0eXBlcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwiZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBaCg0LCJhc3luYyIpLEFoKDUsImFzeW5jIikpLDImZSYmRG0oImZvY3VzZWRFeGVjdXRpb25JbmRleCIsbi5mb2N1c2VkRXhlY3V0aW9uSW5kZXgpKCJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsVGgoMSw2LG4uZm9jdXNlZEV4ZWN1dGlvbkRhdGEkKSkoInRlbnNvckRlYnVnTW9kZSIsVGgoMiw4LG4udGVuc29yRGVidWdNb2RlJCkpKCJoYXNEZWJ1Z1RlbnNvclZhbHVlcyIsVGgoMywxMCxuLmhhc0RlYnVnVGVuc29yVmFsdWVzJCkpKCJkZWJ1Z1RlbnNvclZhbHVlcyIsVGgoNCwxMixuLmRlYnVnVGVuc29yVmFsdWVzJCkpKCJkZWJ1Z1RlbnNvckR0eXBlcyIsVGgoNSwxNCxuLmRlYnVnVGVuc29yRHR5cGVzJCkpfSxkaXJlY3RpdmVzOltwS10scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHVLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWV4ZWN1dGlvbi1kYXRhIix0ZW1wbGF0ZTonXG4gICAgPGV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudFxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25JbmRleF09ImZvY3VzZWRFeGVjdXRpb25JbmRleCJcbiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uRGF0YV09ImZvY3VzZWRFeGVjdXRpb25EYXRhJCB8IGFzeW5jIlxuICAgICAgW3RlbnNvckRlYnVnTW9kZV09InRlbnNvckRlYnVnTW9kZSQgfCBhc3luYyJcbiAgICAgIFtoYXNEZWJ1Z1RlbnNvclZhbHVlc109Imhhc0RlYnVnVGVuc29yVmFsdWVzJCB8IGFzeW5jIlxuICAgICAgW2RlYnVnVGVuc29yVmFsdWVzXT0iZGVidWdUZW5zb3JWYWx1ZXMkIHwgYXN5bmMiXG4gICAgICBbZGVidWdUZW5zb3JEdHlwZXNdPSJkZWJ1Z1RlbnNvckR0eXBlcyQgfCBhc3luYyJcbiAgICA+PC9leGVjdXRpb24tZGF0YS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSkse2ZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6eHl9XX0pO2NvbnN0IGhLPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bdCxlLG5dfTtmdW5jdGlvbiBiSyh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMTQpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPWhpKHQpLmluZGV4O3JldHVybiBZbSgyKS5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQuZW1pdChuKX0pKSxSbSgxLCJkaXYiLDE1KSxrdSgyKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPVltKDIpO3JjKDEpLEttKCJ0aXRsZSIsdC5vcF90eXBlKSxEbSgibmdDbGFzcyIseGgoMyxoSyx0LmlzX2dyYXBoPyJmdW5jLWdyYXBoLWV4ZWN1dGlvbiI6IiIsbj09PW8uZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleD8iZm9jdXNlZCI6IiIsby5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXNbbl18fCIiKSkscmMoMSksRHUoIiAiLHQuc2hvcnRfb3BfdHlwZSwiICIpfX1mdW5jdGlvbiB5Syh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTIpLFFwKDEsYkssMyw3LCJkaXYiLDEzKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEbSgibmdGb3JPZiIsdC5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyl9fWZ1bmN0aW9uIF9LKHQsZSl7aWYoMSZ0JiYoTm0oMCksVG0oMSwidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiLDE2KSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEbSgiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Iix0LmZvY3VzZWRFeGVjdXRpb25JbmRleCl9fWNsYXNzIENLe2NvbnN0cnVjdG9yKCl7dGhpcy5hY3RpdmVSdW5JZD1udWxsLHRoaXMubG9hZGluZ051bUV4ZWN1dGlvbnM9ITEsdGhpcy5udW1FeGVjdXRpb25zPTAsdGhpcy5zY3JvbGxCZWdpbkluZGV4PTAsdGhpcy5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdD0wLHRoaXMucGFnZVNpemU9MCx0aGlzLmRpc3BsYXlDb3VudD0wLHRoaXMuZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM9W10sdGhpcy5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXM9W10sdGhpcy5mb2N1c2VkRXhlY3V0aW9uSW5kZXg9bnVsbCx0aGlzLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg9bnVsbCx0aGlzLmZvY3VzZWRFeGVjdXRpb25EYXRhPW51bGwsdGhpcy5vbk5hdmlnYXRlTGVmdD1uZXcgTGgsdGhpcy5vbk5hdmlnYXRlUmlnaHQ9bmV3IExoLHRoaXMub25FeGVjdXRpb25EaWdlc3RDbGlja2VkPW5ldyBMaCx0aGlzLm9uU2xpZGVyQ2hhbmdlPW5ldyBMaH19Q0suybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fENLKX0sQ0suybVjbXA9dG8oe3R5cGU6Q0ssc2VsZWN0b3JzOltbInRpbWVsaW5lLWNvbXBvbmVudCJdXSxpbnB1dHM6e2FjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCIsbG9hZGluZ051bUV4ZWN1dGlvbnM6ImxvYWRpbmdOdW1FeGVjdXRpb25zIixudW1FeGVjdXRpb25zOiJudW1FeGVjdXRpb25zIixzY3JvbGxCZWdpbkluZGV4OiJzY3JvbGxCZWdpbkluZGV4IixzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdDoic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQiLHBhZ2VTaXplOiJwYWdlU2l6ZSIsZGlzcGxheUNvdW50OiJkaXNwbGF5Q291bnQiLGRpc3BsYXlFeGVjdXRpb25EaWdlc3RzOiJkaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyIsZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzOiJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMiLGZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Iixmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4OiJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4Iixmb2N1c2VkRXhlY3V0aW9uRGF0YToiZm9jdXNlZEV4ZWN1dGlvbkRhdGEifSxvdXRwdXRzOntvbk5hdmlnYXRlTGVmdDoib25OYXZpZ2F0ZUxlZnQiLG9uTmF2aWdhdGVSaWdodDoib25OYXZpZ2F0ZVJpZ2h0IixvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ6Im9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCIsb25TbGlkZXJDaGFuZ2U6Im9uU2xpZGVyQ2hhbmdlIn0sZGVjbHM6OSx2YXJzOjQsY29uc3RzOltbMSwidGltZWxpbmUtdGl0bGUiXSxbMSwiZXhlY3V0aW9uLWNvdW50Il0sWzEsInRvcC1sZXZlbC1leGVjdXRpb25zIl0sWyJjbGFzcyIsIm5hdmlnYXRpb24tc2VjdGlvbiIsNCwibmdJZiJdLFsiY2xhc3MiLCJleGVjdXRpb24tdGltZWxpbmUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsxLCJuYXZpZ2F0aW9uLXNlY3Rpb24iXSxbIm1hdC1idXR0b24iLCIiLDEsIm5hdmlnYXRpb24tYnV0dG9uLWxlZnQiLDMsImNsaWNrIl0sWzEsIm5hdmlnYXRpb24tcG9zaXRpb24taW5mbyJdLFsibWF0LWJ1dHRvbiIsIiIsMSwibmF2aWdhdGlvbi1idXR0b24tcmlnaHQiLDMsImNsaWNrIl0sWyJjbGFzcyIsInRpbWVsaW5lLXNsaWRlciIsInN0ZXAiLCIxIiwzLCJtaW4iLCJtYXgiLCJ2YWx1ZSIsImlucHV0Iiw0LCJuZ0lmIl0sWyJzdGVwIiwiMSIsMSwidGltZWxpbmUtc2xpZGVyIiwzLCJtaW4iLCJtYXgiLCJ2YWx1ZSIsImlucHV0Il0sWzEsImV4ZWN1dGlvbi10aW1lbGluZSJdLFszLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsImNsaWNrIl0sWzEsImV4ZWN1dGlvbi1kaWdlc3QiLDMsIm5nQ2xhc3MiLCJ0aXRsZSJdLFszLCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIpLFJtKDEsImRpdiIsMCksa3UoMiwiIFB5dGhvbiBFeGVjdXRpb24gVGltZWxpbmUgIiksUm0oMywic3BhbiIsMSksa3UoNCksQW0oKSxBbSgpLFJtKDUsImRpdiIsMiksUXAoNixnSyw4LDQsImRpdiIsMyksUXAoNyx5SywyLDEsImRpdiIsNCksUXAoOCxfSywyLDEsIm5nLWNvbnRhaW5lciIsNSksQW0oKSxBbSgpKSwyJmUmJihyYyg0KSxEdSgiICgiLG4ubnVtRXhlY3V0aW9ucywiKSAiKSxyYygyKSxEbSgibmdJZiIsbi5udW1FeGVjdXRpb25zKSxyYygxKSxEbSgibmdJZiIsbi5udW1FeGVjdXRpb25zKSxyYygxKSxEbSgibmdJZiIsbnVsbCE9PW4uYWN0aXZlUnVuSWQmJm51bGwhPT1uLmZvY3VzZWRFeGVjdXRpb25JbmRleCkpfSxkaXJlY3RpdmVzOltkTSxYSCxSWCxsTSxhTSx1S10sc3R5bGVzOlsiLmV4ZWN1dGlvbi1kaWdlc3RbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgY29sb3I6ICM0MjUwNjY7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMHB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIHBhZGRpbmc6IDFweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMTJweDtcbn1cblxuLmV4ZWN1dGlvbi1kaWdlc3QuZnVuYy1ncmFwaC1leGVjdXRpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2M3ZGJmNTtcbiAgY29sb3I6ICM0ZTU2NjQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uZXhlY3V0aW9uLWRpZ2VzdC5mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ0YjM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZXhlY3V0aW9uLWRpZ2VzdC5JbmZOYW5BbGVydFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICBjb2xvcjogI2ZmZjtcbn1cblxuXG4uZXhlY3V0aW9uLWRpZ2VzdFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmV4ZWN1dGlvbi10aW1lbGluZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLnRpbWVsaW5lLXNsaWRlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogNDhweDtcbiAgbGVmdDogMzQwcHg7IFxuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA0MHB4O1xufVxuXG4gIC50aW1lbGluZS1zbGlkZXIgLm1hdC1zbGlkZXItdGh1bWIge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHJpZ2h0OiAtNDBweDtcbiAgd2lkdGg6IDgwcHg7XG59XG5cblxuLm5hdmlnYXRpb24tcG9zaXRpb24taW5mb1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm5hdmlnYXRpb24tc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OiA0OHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxMDAlO1xufSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChDSyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0aW1lbGluZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3RpbWVsaW5lX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3RpbWVsaW5lX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHthY3RpdmVSdW5JZDpbe3R5cGU6eHl9XSxsb2FkaW5nTnVtRXhlY3V0aW9uczpbe3R5cGU6eHl9XSxudW1FeGVjdXRpb25zOlt7dHlwZTp4eX1dLHNjcm9sbEJlZ2luSW5kZXg6W3t0eXBlOnh5fV0sc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ6W3t0eXBlOnh5fV0scGFnZVNpemU6W3t0eXBlOnh5fV0sZGlzcGxheUNvdW50Olt7dHlwZTp4eX1dLGRpc3BsYXlFeGVjdXRpb25EaWdlc3RzOlt7dHlwZTp4eX1dLGRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlczpbe3R5cGU6eHl9XSxmb2N1c2VkRXhlY3V0aW9uSW5kZXg6W3t0eXBlOnh5fV0sZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleDpbe3R5cGU6eHl9XSxmb2N1c2VkRXhlY3V0aW9uRGF0YTpbe3R5cGU6eHl9XSxvbk5hdmlnYXRlTGVmdDpbe3R5cGU6T3l9XSxvbk5hdmlnYXRlUmlnaHQ6W3t0eXBlOk95fV0sb25FeGVjdXRpb25EaWdlc3RDbGlja2VkOlt7dHlwZTpPeX1dLG9uU2xpZGVyQ2hhbmdlOlt7dHlwZTpPeX1dfSk7Y29uc3QgTUs9WyJfX2ZvcndhcmRfIiwiX19iYWNrd2FyZF8iLCJfX2luZmVyZW5jZV8iXTtjbGFzcyB2S3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5JZCQ9dGhpcy5zdG9yZS5waXBlKEZ3KGtaKSksdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KEhaLCh0PT50LnN0YXRlPT15RS5MT0FESU5HKSkpKSx0aGlzLnNjcm9sbEJlZ2luSW5kZXgkPXRoaXMuc3RvcmUucGlwZShGdyhCWikpLHRoaXMuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkPXRoaXMuc3RvcmUucGlwZShGdyhadyhMWixqWiwoKHQsZSk9Pk1hdGgubWF4KDAsdC1lKSkpKSksdGhpcy5wYWdlU2l6ZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KFZaKSksdGhpcy5kaXNwbGF5Q291bnQkPXRoaXMuc3RvcmUucGlwZShGdyhqWikpLHRoaXMuZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMkPXRoaXMuc3RvcmUucGlwZShGdyhadyhVWiwodD0+dC5tYXAoKHQ9PihmdW5jdGlvbiBlKHQsbj0xKXtpZighdClyZXR1cm57b3BfdHlwZToiKE4vQSkiLHNob3J0X29wX3R5cGU6Ii4uIixpc19ncmFwaDohMX07Y29uc3Qgbz1NSy5maWx0ZXIoKGU9PnQub3BfdHlwZS5zdGFydHNXaXRoKGUpKSk7aWYoby5sZW5ndGgpe2NvbnN0IGU9dC5vcF90eXBlLnNsaWNlKG9bMF0ubGVuZ3RoKTtyZXR1cm57b3BfdHlwZTp0Lm9wX3R5cGUsc2hvcnRfb3BfdHlwZTplLnNsaWNlKDAsbiksaXNfZ3JhcGg6ITB9fXJldHVybntvcF90eXBlOnQub3BfdHlwZSxzaG9ydF9vcF90eXBlOnQub3BfdHlwZS5zbGljZSgwLG4pLGlzX2dyYXBoOiExfX0pKHQpKSkpKSkpLHRoaXMuZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJD10aGlzLnN0b3JlLnBpcGUoRncoYVgpKSx0aGlzLmZvY3VzZWRFeGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKEZ3KHNYKSksdGhpcy5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4JD10aGlzLnN0b3JlLnBpcGUoRncobFgpKSx0aGlzLm51bUV4ZWN1dGlvbnMkPXRoaXMuc3RvcmUucGlwZShGdyhMWikpfW9uTmF2aWdhdGVMZWZ0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChXcSgpKX1vbk5hdmlnYXRlUmlnaHQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFlxKCkpfW9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFpxKHtkaXNwbGF5SW5kZXg6dH0pKX1vblNsaWRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHFxKHtpbmRleDp0fSkpfX1mdW5jdGlvbiB4Syh0LGUpezEmdCYmKFJtKDAsInNwYW4iKSxrdSgxLCIgT3V0cHV0ICIpLEFtKCkpfWZ1bmN0aW9uIE9LKHQsZSl7MSZ0JiYoUm0oMCwic3BhbiIpLGt1KDEsIiBJbnB1dCAiKSxBbSgpKX1mdW5jdGlvbiBQSyh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNiksUm0oMSwic3BhbiIsNyksUXAoMix4SywyLDAsInNwYW4iLDgpLFFwKDMsT0ssMiwwLCJzcGFuIiw4KSxBbSgpLGt1KDQpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLERtKCJuZ1N3aXRjaCIsdC5raW5kKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIiwiaW5wdXQiKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIiwiY29uc3VtZXIiKSxyYygxKSxEdSgiIHNsb3Q6ICIsdC5zbG90LCIgIil9fWZ1bmN0aW9uIHdLKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiw5KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEdSgiICIsdC5vcERhdGEub3BfdHlwZSwiICIpfX1mdW5jdGlvbiBrSyh0LGUpezEmdCYmKFJtKDAsInNwYW4iLDEwKSxrdSgxLCIgKE9wIGluZm8gdW5hdmFpbGFibGUuKSAiKSxBbSgpKX12Sy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dkspKFNtKEl3KSl9LHZLLsm1Y21wPXRvKHt0eXBlOnZLLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi10aW1lbGluZSJdXSxkZWNsczoxMix2YXJzOjMzLGNvbnN0czpbWzMsImFjdGl2ZVJ1bklkIiwibG9hZGluZ051bUV4ZWN1dGlvbnMiLCJudW1FeGVjdXRpb25zIiwic2Nyb2xsQmVnaW5JbmRleCIsInNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IiwicGFnZVNpemUiLCJkaXNwbGF5Q291bnQiLCJkaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyIsImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyIsImZvY3VzZWRFeGVjdXRpb25JbmRleCIsImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgiLCJvbk5hdmlnYXRlTGVmdCIsIm9uTmF2aWdhdGVSaWdodCIsIm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCIsIm9uU2xpZGVyQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJ0aW1lbGluZS1jb21wb25lbnQiLDApLFZtKCJvbk5hdmlnYXRlTGVmdCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbk5hdmlnYXRlTGVmdCgpfSkpKCJvbk5hdmlnYXRlUmlnaHQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25OYXZpZ2F0ZVJpZ2h0KCl9KSkoIm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25FeGVjdXRpb25EaWdlc3RDbGlja2VkKGUpfSkpKCJvblNsaWRlckNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TbGlkZXJDaGFuZ2UoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxBaCg4LCJhc3luYyIpLEFoKDksImFzeW5jIiksQWgoMTAsImFzeW5jIiksQWgoMTEsImFzeW5jIiksQW0oKSksMiZlJiZEbSgiYWN0aXZlUnVuSWQiLFRoKDEsMTEsbi5hY3RpdmVSdW5JZCQpKSgibG9hZGluZ051bUV4ZWN1dGlvbnMiLFRoKDIsMTMsbi5sb2FkaW5nTnVtRXhlY3V0aW9ucyQpKSgibnVtRXhlY3V0aW9ucyIsVGgoMywxNSxuLm51bUV4ZWN1dGlvbnMkKSkoInNjcm9sbEJlZ2luSW5kZXgiLFRoKDQsMTcsbi5zY3JvbGxCZWdpbkluZGV4JCkpKCJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIsVGgoNSwxOSxuLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0JCkpKCJwYWdlU2l6ZSIsVGgoNiwyMSxuLnBhZ2VTaXplJCkpKCJkaXNwbGF5Q291bnQiLFRoKDcsMjMsbi5kaXNwbGF5Q291bnQkKSkoImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIixUaCg4LDI1LG4uZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMkKSkoImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyIsVGgoOSwyNyxuLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyQpKSgiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IixUaCgxMCwyOSxuLmZvY3VzZWRFeGVjdXRpb25JbmRleCQpKSgiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsVGgoMTEsMzEsbi5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4JCkpfSxkaXJlY3RpdmVzOltDS10scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHZLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIix0ZW1wbGF0ZTonXG4gICAgPHRpbWVsaW5lLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZVJ1bklkXT0iYWN0aXZlUnVuSWQkIHwgYXN5bmMiXG4gICAgICBbbG9hZGluZ051bUV4ZWN1dGlvbnNdPSJsb2FkaW5nTnVtRXhlY3V0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtudW1FeGVjdXRpb25zXT0ibnVtRXhlY3V0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtzY3JvbGxCZWdpbkluZGV4XT0ic2Nyb2xsQmVnaW5JbmRleCQgfCBhc3luYyJcbiAgICAgIFtzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdF09InNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0JCB8IGFzeW5jIlxuICAgICAgW3BhZ2VTaXplXT0icGFnZVNpemUkIHwgYXN5bmMiXG4gICAgICBbZGlzcGxheUNvdW50XT0iZGlzcGxheUNvdW50JCB8IGFzeW5jIlxuICAgICAgW2Rpc3BsYXlFeGVjdXRpb25EaWdlc3RzXT0iZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMkIHwgYXN5bmMiXG4gICAgICBbZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzXT0iZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJCB8IGFzeW5jIlxuICAgICAgW2ZvY3VzZWRFeGVjdXRpb25JbmRleF09ImZvY3VzZWRFeGVjdXRpb25JbmRleCQgfCBhc3luYyJcbiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCQgfCBhc3luYyJcbiAgICAgIChvbk5hdmlnYXRlTGVmdCk9Im9uTmF2aWdhdGVMZWZ0KCkiXG4gICAgICAob25OYXZpZ2F0ZVJpZ2h0KT0ib25OYXZpZ2F0ZVJpZ2h0KCkiXG4gICAgICAob25FeGVjdXRpb25EaWdlc3RDbGlja2VkKT0ib25FeGVjdXRpb25EaWdlc3RDbGlja2VkKCRldmVudCkiXG4gICAgICAob25TbGlkZXJDaGFuZ2UpPSJvblNsaWRlckNoYW5nZSgkZXZlbnQpIlxuICAgID48L3RpbWVsaW5lLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IFNLPWZ1bmN0aW9uKHQpe3JldHVyblt0XX07Y2xhc3MgREt7Y29uc3RydWN0b3IoKXt0aGlzLm9uT3BOYW1lQ2xpY2s9bmV3IExofX1mdW5jdGlvbiBFSyh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMTMpLFJtKDEsImRpdiIsMTQpLGt1KDIpLEFtKCksUm0oMywiZ3JhcGgtb3AiLDE1KSxWbSgib25PcE5hbWVDbGljayIsKGZ1bmN0aW9uIGUobil7aGkodCk7Y29uc3Qgbz1ZbSgzKTtyZXR1cm4gby5vbkdyYXBoT3BOYXZpZ2F0ZS5lbWl0KHtvcF9uYW1lOm4ub3BfbmFtZSxncmFwaF9pZDpvLmdyYXBoSWR9KX0pKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleDtyYygyKSxEdSgiSW5wdXQgc2xvdCAiLG4sIjoiKSxyYygxKSxEbSgia2luZCIsImlucHV0IikoIm9wTmFtZSIsdC5vcF9uYW1lKSgic2xvdCIsdC5vdXRwdXRfc2xvdCkoIm9wRGF0YSIsdC5kYXRhKX19ZnVuY3Rpb24gUksodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDExKSxSbSgxLCJkaXYiKSxRcCgyLEVLLDQsNSwiZGl2IiwxMiksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoMiksRG0oIm5nRm9yT2YiLHQuaW5wdXRPcHMpfX1mdW5jdGlvbiBBSyh0LGUpezEmdCYmKFJtKDAsImRpdiIsMTYpLGt1KDEsIiAoVGhpcyBvcCBoYXMgbm8gaW5wdXQgdGVuc29yLikgIiksQW0oKSl9ZnVuY3Rpb24gVEsodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDIzKSxSbSgxLCJncmFwaC1vcCIsMTUpLFZtKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gZShuKXtoaSh0KTtjb25zdCBvPVltKDQpO3JldHVybiBvLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6bi5vcF9uYW1lLGdyYXBoX2lkOm8uZ3JhcGhJZH0pfSkpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cmMoMSksRG0oImtpbmQiLCJjb25zdW1lciIpKCJvcE5hbWUiLHQub3BfbmFtZSkoInNsb3QiLHQuaW5wdXRfc2xvdCkoIm9wRGF0YSIsdC5kYXRhKX19ZnVuY3Rpb24gTksodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDE5KSxSbSgxLCJkaXYiLDIwKSxrdSgyKSxSbSgzLCJzcGFuIiksdGcoNCwyMSksQW0oKSxrdSg1LCIpICIpLEFtKCksUXAoNixUSywyLDQsImRpdiIsMjIpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPWUuaW5kZXg7cmMoMiksRXUoIiBPdXRwdXQgc2xvdCAiLG4sIjogKCIsdC5sZW5ndGgsIiAiKSxyYygyKSxlZyh0Lmxlbmd0aCksbmcoNCkscmMoMiksRG0oIm5nRm9yT2YiLHQpfX1mdW5jdGlvbiB6Syh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTcpLFJtKDEsImRpdiIpLFFwKDIsTkssNyw0LCJkaXYiLDE4KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygyKSxEbSgibmdGb3JPZiIsdC5jb25zdW1lck9wcyl9fWZ1bmN0aW9uIElLKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwyNCksa3UoMSksUm0oMiwic3BhbiIpLHRnKDMsMjUpLEFtKCksa3UoNCwiIGFuZCBubyBjb25zdW1lci4pICIpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygxKSxEdSgiIChUaGlzIG9wIGhhcyAiLHQub3BJbmZvLmNvbnN1bWVycy5sZW5ndGgsIiBvdXRwdXQgIikscmMoMiksZWcodC5vcEluZm8uY29uc3VtZXJzLmxlbmd0aCksbmcoMyl9fWZ1bmN0aW9uIEhLKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiksUXAoMSxSSywzLDEsImRpdiIsNCksUXAoMixBSywyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUsaWIpLFJtKDQsImRpdiIsNiksUm0oNSwiZGl2Iiw3KSxrdSg2LCJPcDoiKSxBbSgpLFJtKDcsImdyYXBoLW9wIiw4KSxWbSgib25PcE5hbWVDbGljayIsKGZ1bmN0aW9uIGUobil7aGkodCk7Y29uc3Qgbz1ZbSgpO3JldHVybiBvLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6bi5vcF9uYW1lLGdyYXBoX2lkOm8uZ3JhcGhJZH0pfSkpLEFtKCksQW0oKSxRcCg4LHpLLDMsMSwiZGl2Iiw5KSxRcCg5LElLLDUsMiwibmctdGVtcGxhdGUiLG51bGwsMTAsaWIpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PSRwKDMpLGU9JHAoMTApLG49WW0oKTtyYygxKSxEbSgibmdJZiIsbi5pbnB1dE9wcy5sZW5ndGg+MCkoIm5nSWZFbHNlIix0KSxyYyg2KSxEbSgia2luZCIsInNlbGYiKSgib3BOYW1lIixuLm9wSW5mby5vcF9uYW1lKSgib3BEYXRhIixuLm9wSW5mbykscmMoMSksRG0oIm5nSWYiLG4udG90YWxOdW1Db25zdW1lcnM+MCkoIm5nSWZFbHNlIixlKX19ZnVuY3Rpb24gRksodCxlKXsxJnQmJihSbSgwLCJzcGFuIiwyNiksa3UoMSwiIChPcCBpbmZvIHVuYXZhaWxhYmxlLikgIiksQW0oKSl9ZnVuY3Rpb24gTEsodCxlKXsxJnQmJihSbSgwLCJkaXYiLDI3KSxrdSgxLCIgTm8gZ3JhcGggb3Agc2VsZWN0ZWQuIENsaWNrIGEgdGVuc29yIG5hbWUgaW4gdGhlIEdyYXBoIEV4ZWN1dGlvbnMgdGFibGUgdG8gdmlldyB0aGUgbmVpZ2hib3Job29kIG9mIHRoZSB0ZW5zb3IncyBvcCBpbiBpdHMgZ3JhcGguICIpLEFtKCkpfURLLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxESyl9LERLLsm1Y21wPXRvKHt0eXBlOkRLLHNlbGVjdG9yczpbWyJncmFwaC1vcCJdXSxpbnB1dHM6e2tpbmQ6ImtpbmQiLG9wTmFtZToib3BOYW1lIixzbG90OiJzbG90IixvcERhdGE6Im9wRGF0YSJ9LG91dHB1dHM6e29uT3BOYW1lQ2xpY2s6Im9uT3BOYW1lQ2xpY2sifSxkZWNsczo5LHZhcnM6Nyxjb25zdHM6W1sxLCJvcC1jb250YWluZXIiXSxbMSwiaW5wdXQtdGVuc29yLW5hbWUiXSxbMSwib3AtbmFtZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWyJjbGFzcyIsInNsb3QiLDQsIm5nSWYiXSxbImNsYXNzIiwib3AtdHlwZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWzEsInNsb3QiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm9wLXR5cGUiXSxbMSwib3AtaW5mby1taXNzaW5nIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJidXR0b24iLDApLFJtKDEsImRpdiIsMSksUm0oMiwiYnV0dG9uIiwyKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25PcE5hbWVDbGljay5lbWl0KHtvcF9uYW1lOm4ub3BOYW1lfSl9KSksUm0oMywic3BhbiIpLGt1KDQpLEFtKCksQW0oKSxRcCg1LFBLLDUsNCwiZGl2IiwzKSxBbSgpLFFwKDYsd0ssMiwxLCJkaXYiLDQpLFFwKDcsa0ssMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw1LGliKSxBbSgpKSwyJmUpe2NvbnN0IHQ9JHAoOCk7cmMoMiksRG0oIm5nQ2xhc3MiLE1oKDUsU0ssInNlbGYiPT09bi5raW5kPyJzZWxmLW9wLW5hbWUiOiIiKSkscmMoMiksU3Uobi5vcE5hbWUpLHJjKDEpLERtKCJuZ0lmIiwic2VsZiIhPT1uLmtpbmQpLHJjKDEpLERtKCJuZ0lmIix2b2lkIDAhPT1uLm9wRGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W2FNLGRNLGZNLGdNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjppbmhlcml0fS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoycHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OjFweCAzcHggI2VlZTtjdXJzb3I6cG9pbnRlcjttYXJnaW46MCA1cHggMCAwO3BhZGRpbmc6MnB4IDZweDt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjIwMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MnB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MXB4IDNweCAjNzU3NTc1fS5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmU6MH0ub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntib3JkZXI6MnB4IHNvbGlkICNmZmQzYjJ9Lm9wLWluZm8tbWlzc2luZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZTtwYWRkaW5nOjA7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3doaXRlLXNwYWNlOnByZS13cmFwfS5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lOjB9Lm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VjZWZmMTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtwYWRkaW5nOjFweCAzcHg7d2lkdGg6bWF4LWNvbnRlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDozcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NH0uc2VsZi1vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpib2xkO3RleHQtZGVjb3JhdGlvbjpub25lfS5zbG90W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbG90W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNsb3RbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChESyxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJncmFwaC1vcCIsdGVtcGxhdGVVcmw6ImdyYXBoX29wX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2dyYXBoX29wX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7a2luZDpbe3R5cGU6eHl9XSxvcE5hbWU6W3t0eXBlOnh5fV0sc2xvdDpbe3R5cGU6eHl9XSxvcERhdGE6W3t0eXBlOnh5fV0sb25PcE5hbWVDbGljazpbe3R5cGU6T3l9XX0pO2NsYXNzIEJLe2NvbnN0cnVjdG9yKCl7dGhpcy5vbkdyYXBoT3BOYXZpZ2F0ZT1uZXcgTGh9Z2V0IGdyYXBoSWQoKXtyZXR1cm4gdGhpcy5vcEluZm8uZ3JhcGhfaWRzW3RoaXMub3BJbmZvLmdyYXBoX2lkcy5sZW5ndGgtMV19Z2V0IHRvdGFsTnVtQ29uc3VtZXJzKCl7cmV0dXJuIHRoaXMuY29uc3VtZXJPcHMucmVkdWNlKCgodCxlKT0+dCtlLmxlbmd0aCksMCl9fUJLLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCSyl9LEJLLsm1Y21wPXRvKHt0eXBlOkJLLHNlbGVjdG9yczpbWyJncmFwaC1jb21wb25lbnQiXV0saW5wdXRzOntvcEluZm86Im9wSW5mbyIsaW5wdXRPcHM6ImlucHV0T3BzIixjb25zdW1lck9wczoiY29uc3VtZXJPcHMifSxvdXRwdXRzOntvbkdyYXBoT3BOYXZpZ2F0ZToib25HcmFwaE9wTmF2aWdhdGUifSxkZWNsczo5LHZhcnM6Mixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlLG4sbztyZXR1cm4gdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fSIpOiRsb2NhbGl6ZWA64pCfZmU1NWY5YjE5M2VhMjBhYWU1YjU2MzVlNjhkOTM4NjUwMzg0Nzc0NuKQnzQ5NTUxMzM3NDA4NDEyOTk4NTE6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fWAsdD1vZyh0LHtWQVJfUExVUkFMOiLvv70w77+9In0pLGU9InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIiB7JGljdX0iLHtpY3U6dH0pOiRsb2NhbGl6ZWA64pCfYmFhNDYwZTJmMmI4NTdlMjYyOTJiMjQ2ZmMxOGFlMGVhOWI1ZTUzN+KQnzU1NTYzNDAzNDM4NTAxNjU1MTY6ICR7dH06SUNVOmAsbj0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fSIpOiRsb2NhbGl6ZWA64pCfNmFhNzVmNjI3ZTBkYzE2MTUwZWY0NDg0NjRlMGM4NTdhYWEwZGMxOOKQnzUxNTY3MTI5MzUxNTA1ODY4Nzg6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fWAsbj1vZyhuLHtWQVJfUExVUkFMOiLvv70w77+9In0pLG89InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIiB7JGljdX0iLHtpY3U6bn0pOiRsb2NhbGl6ZWA64pCfODkzNDc2YzJjNDIxY2VlNDc2NjNjOTczMmZhNDFhNzUwZDNhNzNkZuKQnzI0NjA2NzA1MzczNTE2MjYzNDogJHtufTpJQ1U6YCxbWzEsImdyYXBoLXN0cnVjdHVyZS1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWyJub09wRm9jdXNlZCIsIiJdLFsiY2xhc3MiLCJpbnB1dHMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW5wdXRzIiwiIl0sWzEsInNlbGYtb3AtY29udGFpbmVyIl0sWzEsInNlbGYtb3AtaGVhZGVyIl0sWzMsImtpbmQiLCJvcE5hbWUiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWyJjbGFzcyIsImNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9Db25zdW1lcnMiLCIiXSxbMSwiaW5wdXRzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJpbnB1dC1vcC1zZWN0aW9uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaW5wdXQtb3Atc2VjdGlvbiJdLFsxLCJpbnB1dC1zbG90LWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwic2xvdCIsIm9wRGF0YSIsIm9uT3BOYW1lQ2xpY2siXSxbMSwiaW5wdXRzLWNvbnRhaW5lciIsIm5vLWlucHV0cy1pbmRpY2F0b3IiXSxbMSwiY29uc3VtZXJzLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJzbG90LWNvbnN1bWVycy1jb250YWluZXIiXSxbMSwic2xvdC1jb25zdW1lcnMtaGVhZGVyIl0sZSxbImNsYXNzIiwiY29uc3VtZXItc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImNvbnN1bWVyLXNlY3Rpb24iXSxbMSwib3AtY29uc3VtZXJzLWNvbnRhaW5lciJdLG8sWzEsIm9wLWluZm8tbWlzc2luZyJdLFsxLCJuby1vcC1mb2N1c2VkIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUm0oMCwiZGl2IiksUm0oMSwiZGl2Iiksa3UoMiwiR3JhcGggU3RydWN0dXJlIiksQW0oKSxSbSgzLCJkaXYiLDApLFFwKDQsSEssMTEsNywiZGl2IiwxKSxBbSgpLFFwKDUsRkssMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLGliKSxRcCg3LExLLDIsMCwibmctdGVtcGxhdGUiLG51bGwsMyxpYiksQW0oKSksMiZlKXtjb25zdCB0PSRwKDgpO3JjKDQpLERtKCJuZ0lmIixudWxsIT1uLm9wSW5mbykoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W2RNLERLLGxNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde292ZXJmbG93LXk6YXV0b30uY29uc3VtZXJzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206NXB4O292ZXJmbG93LXg6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXB9LmNvbnN1bWVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjVweCAwfS5ncmFwaC1zdHJ1Y3R1cmUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtvdmVyZmxvdy15OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7bWFyZ2luLXRvcDo1cHg7b3ZlcmZsb3cteDphdXRvO3BhZGRpbmctYm90dG9tOjA7d2hpdGUtc3BhY2U6bm93cmFwfS5pbnB1dC1vcC1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NXB4O3BhZGRpbmctYm90dG9tOjVweH0uaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjA5OTttYXJnaW4tYm90dG9tOjVweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuaW5wdXQtc2xvdC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0uaW5wdXQtdGVuc29yLW5hbWVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS5uby1vcC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5O2ZvbnQtZmFtaWx5OiJSb2JvdG8iLEFyaWFsLEhlbHZldGljYSxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4O3doaXRlLXNwYWNlOm5vcm1hbH0uc2VsZi1vcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luLWJvdHRvbTo1cHh9LnNlbGYtb3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7cGFkZGluZy1ib3R0b206NXB4fS5zbG90LWNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo1cHg7cGFkZGluZy10b3A6NXB4O3ZlcnRpY2FsLWFsaWduOnRvcH0uc2xvdC1jb25zdW1lcnMtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZ3JhcGhfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse29wSW5mbzpbe3R5cGU6eHl9XSxpbnB1dE9wczpbe3R5cGU6eHl9XSxjb25zdW1lck9wczpbe3R5cGU6eHl9XSxvbkdyYXBoT3BOYXZpZ2F0ZTpbe3R5cGU6T3l9XX0pO2NsYXNzIFZLe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm9wSW5mbyQ9dGhpcy5zdG9yZS5waXBlKEZ3KGVYKSksdGhpcy5pbnB1dE9wcyQ9dGhpcy5zdG9yZS5waXBlKEZ3KG5YKSksdGhpcy5jb25zdW1lck9wcyQ9dGhpcy5zdG9yZS5waXBlKEZ3KGlYKSl9b25HcmFwaE9wTmF2aWdhdGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChuWih0KSl9fWZ1bmN0aW9uIGpLKHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwxMiksa3UoMSwi4pa2IiksQW0oKSl9VksuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZLKShTbShJdykpfSxWSy7JtWNtcD10byh7dHlwZTpWSyxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZ3JhcGgiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywib3BJbmZvIiwiaW5wdXRPcHMiLCJjb25zdW1lck9wcyIsIm9uR3JhcGhPcE5hdmlnYXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJncmFwaC1jb21wb25lbnQiLDApLFZtKCJvbkdyYXBoT3BOYXZpZ2F0ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25HcmFwaE9wTmF2aWdhdGUoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgib3BJbmZvIixUaCgxLDMsbi5vcEluZm8kKSkoImlucHV0T3BzIixUaCgyLDUsbi5pbnB1dE9wcyQpKSgiY29uc3VtZXJPcHMiLFRoKDMsNyxuLmNvbnN1bWVyT3BzJCkpfSxkaXJlY3RpdmVzOltCS10scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFZLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoIix0ZW1wbGF0ZTonXG4gICAgPGdyYXBoLWNvbXBvbmVudFxuICAgICAgW29wSW5mb109Im9wSW5mbyQgfCBhc3luYyJcbiAgICAgIFtpbnB1dE9wc109ImlucHV0T3BzJCB8IGFzeW5jIlxuICAgICAgW2NvbnN1bWVyT3BzXT0iY29uc3VtZXJPcHMkIHwgYXN5bmMiXG4gICAgICAob25HcmFwaE9wTmF2aWdhdGUpPSJvbkdyYXBoT3BOYXZpZ2F0ZSgkZXZlbnQpIlxuICAgID48L2dyYXBoLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjb25zdCBVSz1mdW5jdGlvbih0LGUpe3JldHVybnt0ZW5zb3JEZWJ1Z01vZGU6dCxhcnJheTplfX07ZnVuY3Rpb24gR0sodCxlKXtpZigxJnQmJlRtKDAsImRlYnVnLXRlbnNvci12YWx1ZSIsMTcpLDImdCl7Y29uc3QgdD1ZbSgyKS4kaW1wbGljaXQsZT1ZbSgyKTtEbSgiZGVidWdUZW5zb3JWYWx1ZSIsZS5wYXJzZURlYnVnVGVuc29yVmFsdWUodmgoMSxVSyxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS50ZW5zb3JfZGVidWdfbW9kZSxlLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpKSl9fWZ1bmN0aW9uIFdLKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiksUm0oMSwiZGl2IiwxMyksUm0oMiwiYnV0dG9uIiwxNCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe2hpKHQpO2NvbnN0IG49WW0oKS4kaW1wbGljaXQsbz1ZbSgyKTtyZXR1cm4gby5vblRlbnNvck5hbWVDbGljay5lbWl0KHtpbmRleDpuLGdyYXBoX2lkOm8uZ3JhcGhFeGVjdXRpb25EYXRhW25dLmdyYXBoX2lkLG9wX25hbWU6by5ncmFwaEV4ZWN1dGlvbkRhdGFbbl0ub3BfbmFtZX0pfSkpLGt1KDMpLEFtKCksUm0oNCwiZGl2IiwxNSksa3UoNSksQW0oKSxBbSgpLFFwKDYsR0ssMSw0LCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE2KSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpLiRpbXBsaWNpdCxlPVltKDIpO3JjKDIpLEttKCJ0aXRsZSIsZS5nZXRUZW5zb3JOYW1lKHQpKSxyYygxKSxEdSgiICIsZS5nZXRUZW5zb3JOYW1lKHQpLCIgIikscmMoMiksU3UoZS5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfdHlwZSkscmMoMSksRG0oIm5nSWYiLG51bGwhPT1lLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5kZWJ1Z190ZW5zb3JfdmFsdWUpfX1mdW5jdGlvbiBZSyh0LGUpezEmdCYmKFJtKDAsImRpdiIsMTgpLGt1KDEsIiBMb2FkaW5nLi4uICIpLEFtKCkpfWNvbnN0IHFLPWZ1bmN0aW9uKHQpe3JldHVybnsiaW5wdXQtb2YtZm9jdXMiOnR9fTtmdW5jdGlvbiBaSyh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNSksUm0oMSwiZGl2Iiw2KSxSbSgyLCJkaXYiLDcpLFFwKDMsakssMiwwLCJkaXYiLDgpLGt1KDQpLEFtKCksUXAoNSxXSyw3LDQsImRpdiIsOSksUXAoNixZSywyLDAsIm5nLXRlbXBsYXRlIiwxMCwxMSxpYiksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj0kcCg3KSxvPVltKDIpO3JjKDEpLERtKCJuZ0NsYXNzIixNaCg1LHFLLG8uaXNJbnB1dE9mRm9jdXModCkpKSxyYygyKSxEbSgibmdJZiIsdD09PW8uZm9jdXNJbmRleCkscmMoMSksRHUoIiAiLHQsIiAiKSxyYygxKSxEbSgibmdJZiIsby5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0pKCJuZ0lmRWxzZSIsbil9fWZ1bmN0aW9uIFhLKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IiwzKSxWbSgic2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25TY3JvbGxlZEluZGV4Q2hhbmdlLmVtaXQobil9KSksUXAoMSxaSyw4LDcsImRpdiIsNCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEbSgiY2RrVmlydHVhbEZvck9mIix0LmdyYXBoRXhlY3V0aW9uSW5kaWNlcyl9fWNsYXNzIEtLe2NvbnN0cnVjdG9yKCl7dGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IExoLHRoaXMub25UZW5zb3JOYW1lQ2xpY2s9bmV3IExoLHRoaXMucGFyc2VEZWJ1Z1RlbnNvclZhbHVlPUhYLHRoaXMuVEVTVF9PTkxZPXtnZXRWaWV3UG9ydDooKT0+dGhpcy52aWV3UG9ydH19bmdPbkNoYW5nZXModCl7aWYodGhpcy52aWV3UG9ydCYmdC5mb2N1c0luZGV4JiZudWxsIT09dC5mb2N1c0luZGV4LmN1cnJlbnRWYWx1ZSl7Y29uc3QgZT10aGlzLnZpZXdQb3J0LmdldFJlbmRlcmVkUmFuZ2UoKSxuPXQuZm9jdXNJbmRleC5jdXJyZW50VmFsdWUsbz1NYXRoLnJvdW5kKChlLmVuZC1lLnN0YXJ0KS8zKSxpPU1hdGgubWF4KG4tbywwKTt0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoaSxuPj1lLnN0YXJ0JiZuPGUuZW5kPyJzbW9vdGgiOnZvaWQgMCl9fWdldFRlbnNvck5hbWUodCl7cmV0dXJuYCR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfbmFtZX06JHt0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5vdXRwdXRfc2xvdH1gfWlzSW5wdXRPZkZvY3VzKHQpe3JldHVybiBudWxsIT09dGhpcy5mb2N1c0lucHV0SW5kaWNlcyYmdGhpcy5mb2N1c0lucHV0SW5kaWNlcy5pbmNsdWRlcyh0KX19S0suybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtLKX0sS0suybVjbXA9dG8oe3R5cGU6S0ssc2VsZWN0b3JzOltbImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChnRiw1KSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLnZpZXdQb3J0PXQuZmlyc3QpfX0saW5wdXRzOntudW1HcmFwaEV4ZWN1dGlvbnM6Im51bUdyYXBoRXhlY3V0aW9ucyIsZ3JhcGhFeGVjdXRpb25EYXRhOiJncmFwaEV4ZWN1dGlvbkRhdGEiLGdyYXBoRXhlY3V0aW9uSW5kaWNlczoiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixmb2N1c0luZGV4OiJmb2N1c0luZGV4Iixmb2N1c0lucHV0SW5kaWNlczoiZm9jdXNJbnB1dEluZGljZXMifSxvdXRwdXRzOntvblNjcm9sbGVkSW5kZXhDaGFuZ2U6Im9uU2Nyb2xsZWRJbmRleENoYW5nZSIsb25UZW5zb3JOYW1lQ2xpY2s6Im9uVGVuc29yTmFtZUNsaWNrIn0sZmVhdHVyZXM6W0JvXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lciJdLFsxLCJncmFwaC1leGVjdXRpb25zLXRpdGxlIl0sWyJpdGVtU2l6ZSIsIjM4IiwiY2xhc3MiLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIiw0LCJuZ0lmIl0sWyJpdGVtU2l6ZSIsIjM4IiwxLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIl0sWyJjbGFzcyIsInRlbnNvci1jb250YWluZXIiLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMSwidGVuc29yLWNvbnRhaW5lciJdLFsxLCJ0ZW5zb3ItaXRlbSIsMywibmdDbGFzcyJdLFsxLCJncmFwaC1leGVjdXRpb24taW5kZXgiXSxbImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItaXRlbSJdLFsiZGF0YUxvYWRpbmciLCIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIl0sWzEsInRlbnNvci1uYW1lLWFuZC1vcC10eXBlIl0sWzEsInRlbnNvci1uYW1lIiwzLCJ0aXRsZSIsImNsaWNrIl0sWzEsIm9wLXR5cGUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSIsNCwibmdJZiJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl0sWzEsImxvYWRpbmctc3Bpbm5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiLDEpLGt1KDIpLEFtKCksUXAoMyxYSywyLDEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMiksQW0oKSksMiZlJiYocmMoMiksRHUoIiBHcmFwaCBFeGVjdXRpb25zICgiLG4ubnVtR3JhcGhFeGVjdXRpb25zLCIpICIpLHJjKDEpLERtKCJuZ0lmIixudWxsIT09bi5udW1HcmFwaEV4ZWN1dGlvbnMmJm4ubnVtR3JhcGhFeGVjdXRpb25zPjApKX0sZGlyZWN0aXZlczpbZE0sZ0YsZEYsYkYsYU0sYUtdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5ncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7cGFkZGluZy1sZWZ0OjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzU1NX0uZ3JhcGgtZXhlY3V0aW9uLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30uZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3BhZGRpbmctcmlnaHQ6NHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6NDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JhcGgtZXhlY3V0aW9uLWluZGV4W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbi1pbmRleFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmdyYXBoLWV4ZWN1dGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTo1cHh9LmdyYXBoLWV4ZWN1dGlvbnMtdmlld3BvcnRbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxO2ZvbnQtc2l6ZToxMnB4O3dpZHRoOjEwMCU7b3ZlcmZsb3cteDpoaWRkZW59LmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwOTl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LW9mLWZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9LmxvYWRpbmctc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9Lm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VjZWZmMTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtwYWRkaW5nOjFweCAzcHg7d2lkdGg6bWF4LWNvbnRlbnQ7ZGlyZWN0aW9uOnJ0bDtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnRlbnNvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LnRlbnNvci1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2hlaWdodDozOHB4O2xpbmUtaGVpZ2h0OjM4cHg7dGV4dC1hbGlnbjpsZWZ0O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt3aGl0ZS1zcGFjZTpub3dyYXA7d2lkdGg6MTAwJX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpydGw7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4O21hcmdpbjoycHggMCAxcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDJweCk7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCAycHg7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS50ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZToxcHggc29saWQgI2M2Y2FkMX0udGVuc29yLW5hbWUtYW5kLW9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2RpcmVjdGlvbjpydGw7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctcmlnaHQ6OHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjQwcHh9ZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MnB4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEtLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9ncmFwaF9leGVjdXRpb25zX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2dyYXBoX2V4ZWN1dGlvbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse251bUdyYXBoRXhlY3V0aW9uczpbe3R5cGU6eHl9XSxncmFwaEV4ZWN1dGlvbkRhdGE6W3t0eXBlOnh5fV0sZ3JhcGhFeGVjdXRpb25JbmRpY2VzOlt7dHlwZTp4eX1dLGZvY3VzSW5kZXg6W3t0eXBlOnh5fV0sZm9jdXNJbnB1dEluZGljZXM6W3t0eXBlOnh5fV0sb25TY3JvbGxlZEluZGV4Q2hhbmdlOlt7dHlwZTpPeX1dLG9uVGVuc29yTmFtZUNsaWNrOlt7dHlwZTpPeX1dLHZpZXdQb3J0Olt7dHlwZTpaYSxhcmdzOltnRix7c3RhdGljOiExfV19XX0pO2NsYXNzIEpLe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm51bUdyYXBoRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKEZ3KFlaKSksdGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShGdyhRWikpLHRoaXMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzJD10aGlzLnN0b3JlLnBpcGUoRncoWncoWVosKHQ9PjA9PT10P251bGw6QXJyYXkuZnJvbSh7bGVuZ3RoOnR9KS5tYXAoKCh0LGUpPT5lKSkpKSkpLHRoaXMuZm9jdXNJbmRleCQ9dGhpcy5zdG9yZS5waXBlKEZ3KCRaKSksdGhpcy5mb2N1c0lucHV0SW5kaWNlcyQ9dGhpcy5zdG9yZS5waXBlKEZ3KG9YKSl9b25TY3JvbGxlZEluZGV4Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2godFooe2luZGV4OnR9KSl9b25UZW5zb3JOYW1lQ2xpY2sodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChlWih0KSl9fUpLLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKSykoU20oSXcpKX0sSksuybVjbXA9dG8oe3R5cGU6Skssc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiXV0sZGVjbHM6Nix2YXJzOjE1LGNvbnN0czpbWzMsIm51bUdyYXBoRXhlY3V0aW9ucyIsImdyYXBoRXhlY3V0aW9uRGF0YSIsImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsImZvY3VzSW5kZXgiLCJmb2N1c0lucHV0SW5kaWNlcyIsIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsIm9uVGVuc29yTmFtZUNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCIsMCksVm0oIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY3JvbGxlZEluZGV4Q2hhbmdlKGUpfSkpKCJvblRlbnNvck5hbWVDbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25UZW5zb3JOYW1lQ2xpY2soZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFtKCkpLDImZSYmRG0oIm51bUdyYXBoRXhlY3V0aW9ucyIsVGgoMSw1LG4ubnVtR3JhcGhFeGVjdXRpb25zJCkpKCJncmFwaEV4ZWN1dGlvbkRhdGEiLFRoKDIsNyxuLmdyYXBoRXhlY3V0aW9uRGF0YSQpKSgiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixUaCgzLDksbi5ncmFwaEV4ZWN1dGlvbkluZGljZXMkKSkoImZvY3VzSW5kZXgiLFRoKDQsMTEsbi5mb2N1c0luZGV4JCkpKCJmb2N1c0lucHV0SW5kaWNlcyIsVGgoNSwxMyxuLmZvY3VzSW5wdXRJbmRpY2VzJCkpfSxkaXJlY3RpdmVzOltLS10scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEpLLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiLHRlbXBsYXRlOidcbiAgICA8Z3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnRcbiAgICAgIFtudW1HcmFwaEV4ZWN1dGlvbnNdPSJudW1HcmFwaEV4ZWN1dGlvbnMkIHwgYXN5bmMiXG4gICAgICBbZ3JhcGhFeGVjdXRpb25EYXRhXT0iZ3JhcGhFeGVjdXRpb25EYXRhJCB8IGFzeW5jIlxuICAgICAgW2dyYXBoRXhlY3V0aW9uSW5kaWNlc109ImdyYXBoRXhlY3V0aW9uSW5kaWNlcyQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0luZGV4XT0iZm9jdXNJbmRleCQgfCBhc3luYyJcbiAgICAgIFtmb2N1c0lucHV0SW5kaWNlc109ImZvY3VzSW5wdXRJbmRpY2VzJCB8IGFzeW5jIlxuICAgICAgKG9uU2Nyb2xsZWRJbmRleENoYW5nZSk9Im9uU2Nyb2xsZWRJbmRleENoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uVGVuc29yTmFtZUNsaWNrKT0ib25UZW5zb3JOYW1lQ2xpY2soJGV2ZW50KSJcbiAgICA+PC9ncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjb25zdCBRSz1mdW5jdGlvbiAkSygpe3JldHVybiB3aW5kb3d9O2Z1bmN0aW9uIHRKKHQpe2NvbnN0IGU9UUsoKS5yZXF1aXJlO3JldHVybiBuZXcgUHJvbWlzZSgobj0+e2UodCxuKX0pKX1mdW5jdGlvbiBlSigpe3JldHVybiBnQSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe2NvbnN0IHQ9UUsoKTtpZih2b2lkIDA9PT10Lm1vbmFjbyl7aWYoIXQucmVxdWlyZSl0aHJvdyBuZXcgRXJyb3IoImxvYWRNb25hY28oKSBmYWlsZWQgYmVjYXVzZSBmdW5jdGlvbiByZXF1aXJlKCkgaXMgdW5hdmFpbGFibGUiKTt0LnJlcXVpcmUuY29uZmlnKHtwYXRoczp7dnM6Ii90Zi1pbXBvcnRzL3ZzIn19KSx5aWVsZCB0SihbInZzL2VkaXRvci9lZGl0b3IubWFpbiJdKSx5aWVsZCB0SihbInZzL3B5dGhvbi9weXRob24uY29udHJpYnV0aW9uIl0pfX0pKX1mdW5jdGlvbiBuSih0KXtyZXR1cm4gdD8idnMtZGFyayI6InZzIn1jbGFzcyBvSntjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zPTEwMCx0aGlzLm9uUmVzaXplPW5ldyBMaCx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBJLHRoaXMub25SZXNpemUkPW5ldyBJO2NvbnN0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKCgoKT0+e3RoaXMub25SZXNpemUkLm5leHQoKX0pKTtlLm9ic2VydmUodC5uYXRpdmVFbGVtZW50KSx0aGlzLm5nVW5zdWJzY3JpYmUkLnN1YnNjcmliZSgoKCk9PntlLnVub2JzZXJ2ZSh0Lm5hdGl2ZUVsZW1lbnQpfSkpfW5nT25Jbml0KCl7dGhpcy5vblJlc2l6ZSQucGlwZShUZSgxKSxnZSh0aGlzLnJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zKSxJZSh0aGlzLm5nVW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMub25SZXNpemUuZW1pdCgpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpfX1vSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8b0opKFNtKGhnKSl9LG9KLsm1ZGlyPWxvKHt0eXBlOm9KLHNlbGVjdG9yczpbWyIiLCJkZXRlY3RSZXNpemUiLCIiXV0saW5wdXRzOntyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NczoicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMifSxvdXRwdXRzOntvblJlc2l6ZToib25SZXNpemUifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgob0osW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2RldGVjdFJlc2l6ZV0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9XX0pLHtyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Nczpbe3R5cGU6eHl9XSxvblJlc2l6ZTpbe3R5cGU6T3l9XX0pO2NvbnN0IGlKPVsiY29kZVZpZXdlckNvbnRhaW5lciJdO2NsYXNzIGFKe2NvbnN0cnVjdG9yKCl7dGhpcy5saW5lcz1udWxsLHRoaXMuZm9jdXNlZExpbmVubz1udWxsLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLmRlY29yYXRpb25zPVtdLHRoaXMuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TPTUwfW9uUmVzaXplKCl7dGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmxheW91dCgpfW5nT25DaGFuZ2VzKHQpe3ZhciBlO2lmKG51bGw9PT10aGlzLm1vbmFjbylyZXR1cm47Y29uc3Qgbj10Lm1vbmFjbyYmbnVsbD09PXRoaXMuZWRpdG9yO251bGw9PT10aGlzLmVkaXRvciYmKHRoaXMuZWRpdG9yPXRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3ZhbHVlOihudWxsIT09KGU9dGhpcy5saW5lcykmJnZvaWQgMCE9PWU/ZTpbXSkuam9pbigiXG4iKSxsYW5ndWFnZToicHl0aG9uIixyZWFkT25seTohMCxmb250U2l6ZToxMCxtaW5pbWFwOntlbmFibGVkOiEwfSx0aGVtZTpuSih0aGlzLnVzZURhcmtNb2RlKX0pKSx0LmxpbmVzJiZ0aGlzLmxpbmVzJiZ0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLmxpbmVzLmpvaW4oIlxuIikpO2NvbnN0IG89bnx8dC5mb2N1c2VkTGluZW5vP3RoaXMuZm9jdXNlZExpbmVubzpudWxsO2lmKG8mJnRoaXMubGluZXMpe3RoaXMuZWRpdG9yLnJldmVhbExpbmVJbkNlbnRlcihvLHRoaXMubW9uYWNvLmVkaXRvci5TY3JvbGxUeXBlLlNtb290aCk7Y29uc3QgdD10aGlzLmxpbmVzW28tMV0ubGVuZ3RoO3RoaXMuZGVjb3JhdGlvbnM9dGhpcy5lZGl0b3IuZGVsdGFEZWNvcmF0aW9ucyh0aGlzLmRlY29yYXRpb25zLFt7cmFuZ2U6bmV3IHRoaXMubW9uYWNvLlJhbmdlKG8sMSxvLDEpLG9wdGlvbnM6e2lzV2hvbGVMaW5lOiEwLGxpbmVzRGVjb3JhdGlvbnNDbGFzc05hbWU6ImhpZ2hsaWdodC1ndXR0ZXIifX0se3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShvLDEsbyx0KzEpLG9wdGlvbnM6e2lubGluZUNsYXNzTmFtZToiaGlnaGxpZ2h0LWxpbmUifX1dKX10LnVzZURhcmtNb2RlJiZ0aGlzLm1vbmFjby5lZGl0b3Iuc2V0VGhlbWUobkoodGhpcy51c2VEYXJrTW9kZSkpfX1hSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YUopfSxhSi7JtWNtcD10byh7dHlwZTphSixzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChpSiw3LGhnKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLmNvZGVWaWV3ZXJDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e2xpbmVzOiJsaW5lcyIsZm9jdXNlZExpbmVubzoiZm9jdXNlZExpbmVubyIsbW9uYWNvOiJtb25hY28iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGZlYXR1cmVzOltCb10sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDAsMSksVm0oIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSksQW0oKSksMiZlJiZEbSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLG4uUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbb0pdLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgICAuaGlnaGxpZ2h0LWd1dHRlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxMTEsIDAsIDAuNyk7XG4gIHdpZHRoOiA1cHggIWltcG9ydGFudDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZ2hsaWdodC1saW5lIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC4zKTtcbn0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYUosW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zb3VyY2VfY29kZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zb3VyY2VfY29kZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7bGluZXM6W3t0eXBlOnh5fV0sZm9jdXNlZExpbmVubzpbe3R5cGU6eHl9XSxtb25hY286W3t0eXBlOnh5fV0sdXNlRGFya01vZGU6W3t0eXBlOnh5fV0sY29kZVZpZXdlckNvbnRhaW5lcjpbe3R5cGU6WmEsYXJnczpbImNvZGVWaWV3ZXJDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV19KTtjbGFzcyBySntjb25zdHJ1Y3Rvcigpe3RoaXMubGluZXM9bnVsbCx0aGlzLmZvY3VzZWRMaW5lbm89bnVsbCx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPUN0KGVKKCkpLnBpcGUoSXQoKCgpPT53aW5kb3cubW9uYWNvKSkpfX1mdW5jdGlvbiBzSih0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNiksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRHUoIiAiLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmZpbGVfcGF0aCwiICIpfX1mdW5jdGlvbiBsSih0LGUpezEmdCYmKFJtKDAsImRpdiIsNyksa3UoMSwiIE5vIGZpbGUgc2VsZWN0ZWQuIENsaWNrIGEgbGluZSBudW1iZXIgaW4gdGhlIFN0YWNrIFRyYWNlIHNlY3Rpb24gdG8gc2hvdyB0aGUgc291cmNlIGNvZGUuICIpLEFtKCkpfWZ1bmN0aW9uIGNKKHQsZSl7aWYoMSZ0JiZUbSgwLCJzb3VyY2UtY29kZSIsOCksMiZ0KXtjb25zdCB0PVltKCk7RG0oImxpbmVzIix0LmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcykoImZvY3VzZWRMaW5lbm8iLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmxpbmVubykoInVzZURhcmtNb2RlIix0LnVzZURhcmtNb2RlKX19ckouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJKKX0sckouybVjbXA9dG8oe3R5cGU6ckosc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlIl1dLGlucHV0czp7bGluZXM6ImxpbmVzIixmb2N1c2VkTGluZW5vOiJmb2N1c2VkTGluZW5vIix1c2VEYXJrTW9kZToidXNlRGFya01vZGUifSxkZWNsczoyLHZhcnM6Nixjb25zdHM6W1szLCJsaW5lcyIsImZvY3VzZWRMaW5lbm8iLCJtb25hY28iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwic291cmNlLWNvZGUtY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpKSwyJmUmJkRtKCJsaW5lcyIsbi5saW5lcykoImZvY3VzZWRMaW5lbm8iLG4uZm9jdXNlZExpbmVubykoIm1vbmFjbyIsVGgoMSw0LG4ubW9uYWNvJCkpKCJ1c2VEYXJrTW9kZSIsbi51c2VEYXJrTW9kZSl9LGRpcmVjdGl2ZXM6W2FKXSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgockosW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUiLHRlbXBsYXRlOidcbiAgICA8c291cmNlLWNvZGUtY29tcG9uZW50XG4gICAgICBbbGluZXNdPSJsaW5lcyJcbiAgICAgIFtmb2N1c2VkTGluZW5vXT0iZm9jdXNlZExpbmVubyJcbiAgICAgIFttb25hY29dPSJtb25hY28kIHwgYXN5bmMiXG4gICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSJcbiAgICA+PC9zb3VyY2UtY29kZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSkse2xpbmVzOlt7dHlwZTp4eX1dLGZvY3VzZWRMaW5lbm86W3t0eXBlOnh5fV0sdXNlRGFya01vZGU6W3t0eXBlOnh5fV19KTtjbGFzcyBkSntjb25zdHJ1Y3Rvcigpe3RoaXMuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50PW51bGwsdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWM9bnVsbH19ZEouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRKKX0sZEouybVjbXA9dG8oe3R5cGU6ZEosc2VsZWN0b3JzOltbInNvdXJjZS1maWxlcy1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQ6ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsZm9jdXNlZFNvdXJjZUxpbmVTcGVjOiJmb2N1c2VkU291cmNlTGluZVNwZWMiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjgsdmFyczozLGNvbnN0czpbWzEsInNvdXJjZS1maWxlcy1jb250YWluZXIiXSxbMSwiaGVhZGVyLXNlY3Rpb24iXSxbMSwidGl0bGUtdGFnIl0sWyJjbGFzcyIsImZpbGUtbGFiZWwiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9GaWxlU2VsZWN0ZWQiLCIiXSxbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIiwidXNlRGFya01vZGUiLDQsIm5nSWYiXSxbMSwiZmlsZS1sYWJlbCJdLFsxLCJuby1maWxlLXNlbGVjdGVkIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsImRpdiIsMSksUm0oMiwiZGl2IiwyKSxrdSgzLCJTb3VyY2UgQ29kZSIpLEFtKCksUXAoNCxzSiwyLDEsImRpdiIsMyksUXAoNSxsSiwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQsaWIpLEFtKCksUXAoNyxjSiwxLDMsInNvdXJjZS1jb2RlIiw1KSxBbSgpKSwyJmUpe2NvbnN0IHQ9JHAoNik7cmMoNCksRG0oIm5nSWYiLG51bGwhPT1uLmZvY3VzZWRTb3VyY2VMaW5lU3BlYykoIm5nSWZFbHNlIix0KSxyYygzKSxEbSgibmdJZiIsbnVsbCE9PW4uZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50JiZudWxsIT09bi5mb2N1c2VkU291cmNlTGluZVNwZWMmJm51bGwhPT1uLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcyl9fSxkaXJlY3RpdmVzOltkTSxySl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MjRweDtwYWRkaW5nLWJvdHRvbTo2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5oZWFkZXItc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uZmlsZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6bm9ybWFsO3doaXRlLXNwYWNlOm5vcm1hbDtvdmVyZmxvdy13cmFwOmFueXdoZXJlO292ZXJmbG93LXk6YXV0bztwYWRkaW5nOjAgMjBweH0ubm8tZmlsZS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Y29sb3I6IzY2NjtwYWRkaW5nOjAgMjBweDt3aGl0ZS1zcGFjZTpub3JtYWx9LnNvdXJjZS1maWxlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjEwMCV9LnRpdGxlLXRhZ1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC13ZWlnaHQ6Ym9sZDtoZWlnaHQ6MTAwJTtwYWRkaW5nLWxlZnQ6NnB4O3ZlcnRpY2FsLWFsaWduOnRvcH1zb3VyY2UtY29kZVtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7d2lkdGg6MTAwJX0nXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZEosW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWZpbGVzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc291cmNlX2ZpbGVzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NvdXJjZV9maWxlc19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudDpbe3R5cGU6eHl9XSxmb2N1c2VkU291cmNlTGluZVNwZWM6W3t0eXBlOnh5fV0sdXNlRGFya01vZGU6W3t0eXBlOnh5fV19KTtjbGFzcyBwSntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkPXRoaXMuc3RvcmUuc2VsZWN0KHlYKSx0aGlzLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyQ9dGhpcy5zdG9yZS5zZWxlY3QoX1gpLHRoaXMudXNlRGFya01vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KEpEKX19cEouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBKKShTbShJdykpfSxwSi7JtWNtcD10byh7dHlwZTpwSixzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJzb3VyY2UtZmlsZXMtY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSksMiZlJiZEbSgiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IixUaCgxLDMsbi5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkKSkoImZvY3VzZWRTb3VyY2VMaW5lU3BlYyIsVGgoMiw1LG4uZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCkpKCJ1c2VEYXJrTW9kZSIsVGgoMyw3LG4udXNlRGFya01vZGUkKSl9LGRpcmVjdGl2ZXM6W2RKXSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocEosW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIix0ZW1wbGF0ZTonXG4gICAgPHNvdXJjZS1maWxlcy1jb21wb25lbnRcbiAgICAgIFtmb2N1c2VkU291cmNlRmlsZUNvbnRlbnRdPSJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQkIHwgYXN5bmMiXG4gICAgICBbZm9jdXNlZFNvdXJjZUxpbmVTcGVjXT0iZm9jdXNlZFNvdXJjZUxpbmVTcGVjJCB8IGFzeW5jIlxuICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUkIHwgYXN5bmMiXG4gICAgPjwvc291cmNlLWZpbGVzLWNvbXBvbmVudD5cbiAgJ31dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjb25zdCBtSj1bInN0YWNrRnJhbWVBcnJheSJdO2Z1bmN0aW9uIHVKKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTMpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgzKTtyYygxKSxEdSgiICMiLHQuZXhlY3V0aW9uSW5kZXgsIjogIil9fWZ1bmN0aW9uIGZKKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTQpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgzKTtyYygxKSxEdSgiICIsdC5vcFR5cGUsIiAiKX19ZnVuY3Rpb24gZ0oodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiKSxrdSgxLCIgRWFnZXIgZXhlY3V0aW9uICIpLFFwKDIsdUosMiwxLCJzcGFuIiwxMSksUXAoMyxmSiwyLDEsInNwYW4iLDEyKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoMiksRG0oIm5nSWYiLG51bGwhPT10Lm9wVHlwZSkscmMoMSksRG0oIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIGhKKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTYpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgzKTtyYygxKSxEdSgnICInLHQub3BOYW1lLCciICcpfX1mdW5jdGlvbiBiSih0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDE0KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMyk7cmMoMSksRHUoIiAiLHQub3BUeXBlLCIgIil9fWZ1bmN0aW9uIHlKKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiksa3UoMSwiIENyZWF0aW9uIG9mIGdyYXBoIG9wICIpLFFwKDIsaEosMiwxLCJzcGFuIiwxNSksUXAoMyxiSiwyLDEsInNwYW4iLDEyKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoMiksRG0oIm5nSWYiLG51bGwhPT10Lm9wTmFtZSkscmMoMSksRG0oIm5nSWYiLG51bGwhPT10Lm9wVHlwZSl9fWZ1bmN0aW9uIF9KKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTcpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygxKSxEdSgiIChIb3N0IG5hbWU6ICIsdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXlbMF0uaG9zdF9uYW1lLCIpICIpfX1mdW5jdGlvbiBDSih0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsNyksUm0oMSwic3BhbiIpLFJtKDIsInNwYW4iLDgpLFFwKDMsZ0osNCwyLCJkaXYiLDkpLFFwKDQseUosNCwyLCJkaXYiLDkpLEFtKCksQW0oKSxSbSg1LCJkaXYiKSxRcCg2LF9KLDIsMSwic3BhbiIsMTApLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMiksRG0oIm5nU3dpdGNoIix0LmNvZGVMb2NhdGlvblR5cGUpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5FWEVDVVRJT04pLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLHQuQ29kZUxvY2F0aW9uVHlwZS5HUkFQSF9PUF9DUkVBVElPTikscmMoMiksRG0oIm5nSWYiLG51bGwhPT10LnN0YWNrRnJhbWVzRm9yRGlzcGxheSYmdC5zdGFja0ZyYW1lc0ZvckRpc3BsYXkubGVuZ3RoPjApfX1mdW5jdGlvbiBNSih0LGUpezEmdCYmKFJtKDAsImRpdiIsMTgpLGt1KDEsIiBDbGljayBhbiBlYWdlciBleGVjdXRpb24gb3IgZ3JhcGggb3AgdG8gc2hvdyBpdHMgb3JpZ2luYWwgc3RhY2sgdHJhY2UuICIpLEFtKCkpfWZ1bmN0aW9uIHZKKHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwyOCksa3UoMSwiIOKkkyAiKSxBbSgpKX1jb25zdCB4Sj1mdW5jdGlvbih0LGUpe3JldHVyblt0LGVdfTtmdW5jdGlvbiBPSih0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMjIpLFJtKDEsImRpdiIsMjMpLGt1KDIpLEFtKCksUm0oMywiZGl2IiwyNCksUXAoNCx2SiwyLDAsImRpdiIsMjUpLFJtKDUsImRpdiIsMjYpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtjb25zdCBuPWhpKHQpLiRpbXBsaWNpdDtyZXR1cm4gWW0oMikub25Tb3VyY2VMaW5lQ2xpY2tlZC5lbWl0KG4pfSkpLGt1KDYpLEFtKCksUm0oNywiZGl2IiwyNyksa3UoOCksQW0oKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7RG0oIm5nQ2xhc3MiLHZoKDYseEosdC5iZWxvbmdzVG9Gb2N1c2VkRmlsZT8iZm9jdXNlZC1maWxlIjoiIix0LmZvY3VzZWQ/ImZvY3VzZWQtc3RhY2stZnJhbWUiOiIiKSkscmMoMSksS20oInRpdGxlIix0LmZpbGVfcGF0aCkscmMoMSksRHUoIiAiLHQuY29uY2lzZV9maWxlX3BhdGgsIiAiKSxyYygyKSxEbSgibmdJZiIsbi5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSYmdC5mb2N1c2VkKSxyYygyKSxEdSgiIExpbmUgIix0LmxpbmVubywiICIpLHJjKDIpLER1KCIgIix0LmZ1bmN0aW9uX25hbWUsIiAiKX19ZnVuY3Rpb24gUEoodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDE5LDIwKSxRcCgyLE9KLDksOSwiZGl2IiwyMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMiksRG0oIm5nRm9yT2YiLHQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5KX19ZnVuY3Rpb24gd0oodCxlKXt9Y2xhc3Mga0p7Y29uc3RydWN0b3IoKXt0aGlzLnN0YWNrRnJhbWVzRm9yRGlzcGxheT1udWxsLHRoaXMub25Tb3VyY2VMaW5lQ2xpY2tlZD1uZXcgTGgsdGhpcy5Db2RlTG9jYXRpb25UeXBlPWZafW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHZvaWQgMD09PXRoaXMuc3RhY2tGcmFtZUFycmF5KXJldHVybjtjb25zdCB0PXRoaXMuc3RhY2tGcmFtZUFycmF5Lm5hdGl2ZUVsZW1lbnQsZT10LnF1ZXJ5U2VsZWN0b3IoIi5mb2N1c2VkLXN0YWNrLWZyYW1lIik7aWYobnVsbCE9PWUpcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQodCxlKTtjb25zdCBuPXQucXVlcnlTZWxlY3RvcigiLnN0YWNrLWZyYW1lLWNvbnRhaW5lcjpsYXN0LWNoaWxkIik7bnVsbCE9PW4mJnRoaXMuc2Nyb2xsVG9FbGVtZW50KHQsbil9c2Nyb2xsVG9FbGVtZW50KHQsZSl7dC5zY3JvbGxUb3A9ZS5vZmZzZXRUb3B9fWtKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrSil9LGtKLsm1Y21wPXRvKHt0eXBlOmtKLHNlbGVjdG9yczpbWyJzdGFjay10cmFjZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKG1KLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uc3RhY2tGcmFtZUFycmF5PXQuZmlyc3QpfX0saW5wdXRzOntjb2RlTG9jYXRpb25UeXBlOiJjb2RlTG9jYXRpb25UeXBlIixvcFR5cGU6Im9wVHlwZSIsb3BOYW1lOiJvcE5hbWUiLGV4ZWN1dGlvbkluZGV4OiJleGVjdXRpb25JbmRleCIsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6InN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixzdGFja0ZyYW1lc0ZvckRpc3BsYXk6InN0YWNrRnJhbWVzRm9yRGlzcGxheSJ9LG91dHB1dHM6e29uU291cmNlTGluZUNsaWNrZWQ6Im9uU291cmNlTGluZUNsaWNrZWQifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwic3RhY2stdHJhY2UtY29udGFpbmVyIl0sWzEsInN0YWNrLXRyYWNlLWhlYWRlciJdLFsxLCJzdGFjay10cmFjZS10aXRsZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1N0YWNrVHJhY2UiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtYXJyYXkiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ1NlY3Rpb24iLCIiXSxbMSwic3RhY2stdHJhY2UtYXV4LWluZm8iXSxbMSwiY29kZS1sb2NhdGlvbi1vcmlnaW4iLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1ob3N0LW5hbWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZWFnZXItZXhlY3V0aW9uLWluZGV4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiXSxbMSwiZWFnZXItZXhlY3V0aW9uLWluZGV4Il0sWzEsIm9wLXR5cGUiXSxbImNsYXNzIiwib3AtbmFtZSIsNCwibmdJZiJdLFsxLCJvcC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsIm5vLXN0YWNrLXRyYWNlIl0sWzEsInN0YWNrLWZyYW1lLWFycmF5Il0sWyJzdGFja0ZyYW1lQXJyYXkiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsInN0YWNrLWZyYW1lLWZpbGUtcGF0aCIsMywidGl0bGUiXSxbMSwic3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uIl0sWyJjbGFzcyIsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIiwidGl0bGUiLCJTdGlja2luZyB0byB0aGUgYm90dG9tbW9zdCBmcmFtZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSB3aGVuIG5hdmlnYXRpbmcgZXhlY3V0aW9ucyBhbmQgZ3JhcGggb3BzLiBUbyByZW1vdmUgdGhpcyBzdGlja2luZywgY2xpY2sgYW55IG5vbi1ib3R0b21tb3N0IHN0YWNrIGZyYW1lLiIsNCwibmdJZiJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8iLDMsImNsaWNrIl0sWzEsInN0YWNrLWZyYW1lLWZ1bmN0aW9uIl0sWyJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiwxLCJzdGljay10by1ib3R0b21tb3N0LWluZGljYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiLDEpLFJtKDIsInNwYW4iLDIpLGt1KDMsIiBTdGFjayBUcmFjZSAiKSxBbSgpLFFwKDQsQ0osNyw0LCJkaXYiLDMpLFFwKDUsTUosMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LGliKSxBbSgpLFFwKDcsUEosMywxLCJkaXYiLDUpLFFwKDgsd0osMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LGliKSxBbSgpKSwyJmUpe2NvbnN0IHQ9JHAoNiksZT0kcCg5KTtyYyg0KSxEbSgibmdJZiIsbnVsbCE9PW4uY29kZUxvY2F0aW9uVHlwZSkoIm5nSWZFbHNlIix0KSxyYygzKSxEbSgibmdJZiIsbnVsbCE9PW4uc3RhY2tGcmFtZXNGb3JEaXNwbGF5KSgibmdJZkVsc2UiLGUpfX0sZGlyZWN0aXZlczpbZE0sZk0sZ00sbE0sYU1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5mb2N1c2VkLWZpbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LmZvY3VzZWQtc3RhY2stZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTExLDAsLjMpfS5uby1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17d29yZC13cmFwOmFueXdoZXJlfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnN0YWNrLWZyYW1lLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lkdGg6Y2FsYygxMDAlIC0gOHB4KX0uc3RhY2stZnJhbWUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjYTBhMGEwfS5zdGFjay1mcmFtZS1maWxlLXBhdGhbX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxODBweDt3aWR0aDoxODBweH0uc3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOnJpZ2h0O3doaXRlLXNwYWNlOm5vd3JhcH0uc3RhY2stZnJhbWUtZnVuY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDoyMDBweDtwYWRkaW5nLWxlZnQ6MTBweDt0ZXh0LWFsaWduOmxlZnQ7d2hpdGUtc3BhY2U6bm9ybWFsO3dpZHRoOjIwMHB4O3dvcmQtd3JhcDphbnl3aGVyZX0uc3RhY2stZnJhbWUtbGluZW5vW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazttYXgtd2lkdGg6ODBweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aWR0aDo4MHB4fS5zdGFjay10cmFjZS1hdXgtaW5mb1tfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmctbGVmdDoyNHB4fS5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1mbG93OmNvbHVtbjtmb250LXNpemU6MTBweDtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDo4cHg7bWF4LWhlaWdodDozNjBweDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmhpZGRlbjtwYWRkaW5nLWxlZnQ6OHB4O3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGFjay10cmFjZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zdGFjay10cmFjZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCA1cHggM3B4IC0zcHggI2NjYztwYWRkaW5nLWJvdHRvbTozcHh9LnN0YWNrLXRyYWNlLWhvc3QtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheX0uc3RhY2stdHJhY2UtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OmJvbGR9LnN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctcmlnaHQ6M3B4fSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrSixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJzdGFjay10cmFjZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Y29kZUxvY2F0aW9uVHlwZTpbe3R5cGU6eHl9XSxvcFR5cGU6W3t0eXBlOnh5fV0sb3BOYW1lOlt7dHlwZTp4eX1dLGV4ZWN1dGlvbkluZGV4Olt7dHlwZTp4eX1dLHN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlOlt7dHlwZTp4eX1dLHN0YWNrRnJhbWVzRm9yRGlzcGxheTpbe3R5cGU6eHl9XSxvblNvdXJjZUxpbmVDbGlja2VkOlt7dHlwZTpPeX1dLHN0YWNrRnJhbWVBcnJheTpbe3R5cGU6WmEsYXJnczpbInN0YWNrRnJhbWVBcnJheSJdfV19KTtjbGFzcyBTSntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jb2RlTG9jYXRpb25UeXBlJD10aGlzLnN0b3JlLnBpcGUoRncoWncodVgsKHQ9Pm51bGw9PT10P251bGw6dC5jb2RlTG9jYXRpb25UeXBlKSkpKSx0aGlzLm9wVHlwZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KHVYLCh0PT5udWxsPT09dD9udWxsOnQub3BUeXBlKSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KHVYLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09ZlouR1JBUEhfT1BfQ1JFQVRJT04/bnVsbDp0Lm9wTmFtZSkpKSksdGhpcy5leGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKEZ3KFp3KHVYLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09ZlouRVhFQ1VUSU9OP251bGw6dC5leGVjdXRpb25JbmRleCkpKSksdGhpcy5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KENYKSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZShGdyhadyhmWCxfWCwoKHQsZSk9PntpZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0e2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGxpbmVubzphLGZ1bmN0aW9uX25hbWU6cn09byxzPWkuc3BsaXQoIi8iKSxsPW51bGwhPT1lJiZ0PT09ZS5ob3N0X25hbWUmJmk9PT1lLmZpbGVfcGF0aDtuLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDppLGNvbmNpc2VfZmlsZV9wYXRoOnNbcy5sZW5ndGgtMV0sbGluZW5vOmEsZnVuY3Rpb25fbmFtZTpyLGJlbG9uZ3NUb0ZvY3VzZWRGaWxlOmwsZm9jdXNlZDpsJiZhPT09ZS5saW5lbm99KX1yZXR1cm4gbn0pKSkpfW9uU291cmNlTGluZUNsaWNrZWQodCl7Y29uc3R7aG9zdF9uYW1lOmUsZmlsZV9wYXRoOm4sbGluZW5vOm8sZnVuY3Rpb25fbmFtZTppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goc1ooe3N0YWNrRnJhbWU6e2hvc3RfbmFtZTplLGZpbGVfcGF0aDpuLGxpbmVubzpvLGZ1bmN0aW9uX25hbWU6aX19KSl9fWZ1bmN0aW9uIERKKHQsZSl7MSZ0JiZUbSgwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIpfWZ1bmN0aW9uIEVKKHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwzKSxUbSgxLCJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiKSxSbSgyLCJkaXYiLDQpLFRtKDMsInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIiksVG0oNCwidGYtZGVidWdnZXItdjItZ3JhcGgiKSxBbSgpLFRtKDUsInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiKSxBbSgpLFJtKDYsImRpdiIsNSksVG0oNywidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIiksVG0oOCwidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiKSxBbSgpKX1TSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U0opKFNtKEl3KSl9LFNKLsm1Y21wPXRvKHt0eXBlOlNKLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSJdXSxkZWNsczo3LHZhcnM6MTgsY29uc3RzOltbMywiY29kZUxvY2F0aW9uVHlwZSIsIm9wVHlwZSIsIm9wTmFtZSIsImV4ZWN1dGlvbkluZGV4Iiwic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLCJvblNvdXJjZUxpbmVDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJzdGFjay10cmFjZS1jb21wb25lbnQiLDApLFZtKCJvblNvdXJjZUxpbmVDbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNvdXJjZUxpbmVDbGlja2VkKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQWgoNSwiYXN5bmMiKSxBaCg2LCJhc3luYyIpLEFtKCkpLDImZSYmRG0oImNvZGVMb2NhdGlvblR5cGUiLFRoKDEsNixuLmNvZGVMb2NhdGlvblR5cGUkKSkoIm9wVHlwZSIsVGgoMiw4LG4ub3BUeXBlJCkpKCJvcE5hbWUiLFRoKDMsMTAsbi5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixUaCg0LDEyLG4uZXhlY3V0aW9uSW5kZXgkKSkoInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixUaCg1LDE0LG4uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkKSkoInN0YWNrRnJhbWVzRm9yRGlzcGxheSIsVGgoNiwxNixuLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpba0pdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChTSixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSIsdGVtcGxhdGU6J1xuICAgIDxzdGFjay10cmFjZS1jb21wb25lbnRcbiAgICAgIFtjb2RlTG9jYXRpb25UeXBlXT0iY29kZUxvY2F0aW9uVHlwZSQgfCBhc3luYyJcbiAgICAgIFtvcFR5cGVdPSJvcFR5cGUkIHwgYXN5bmMiXG4gICAgICBbb3BOYW1lXT0ib3BOYW1lJCB8IGFzeW5jIlxuICAgICAgW2V4ZWN1dGlvbkluZGV4XT0iZXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiXG4gICAgICBbc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGVdPSJcbiAgICAgICAgc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkIHwgYXN5bmNcbiAgICAgICJcbiAgICAgIFtzdGFja0ZyYW1lc0ZvckRpc3BsYXldPSJzdGFja0ZyYW1lc0ZvckRpc3BsYXkkIHwgYXN5bmMiXG4gICAgICAob25Tb3VyY2VMaW5lQ2xpY2tlZCk9Im9uU291cmNlTGluZUNsaWNrZWQoJGV2ZW50KSJcbiAgICA+PC9zdGFjay10cmFjZS1jb21wb25lbnQ+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgUkp7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX1SSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UkopfSxSSi7JtWNtcD10byh7dHlwZTpSSixzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFFwKDEsREosMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksUXAoMixFSiw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIsaWIpLEFtKCkpLDImZSl7Y29uc3QgdD0kcCgzKTtyYygxKSxEbSgibmdJZiIsMD09PW4ucnVuSWRzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W2RNLEVxLFBYLHZLLFZLLEpLLHBKLFNKXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtoZWlnaHQ6MzQlO3BhZGRpbmctdG9wOjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9LmRlYnVnZ2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0udG9wLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjY2JTtwYWRkaW5nOjZweCAwfXRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxMHB4O21pbi13aWR0aDoxNjBweDt3aWR0aDpjYWxjKDE1JSAtIDExcHgpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjNTU1fXRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO21pbi13aWR0aDo1NDBweDt3aWR0aDo1NDBweH10Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjcwJX10Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCU7bWluLXdpZHRoOjU0MHB4O3dpZHRoOjU0MHB4fS50b3AtY2VudGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmF1dG87d2lkdGg6NTUlfXRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfXRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgdGYtZGVidWdnZXItdjItZ3JhcGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1ncmFwaFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUkosW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiZGVidWdnZXItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9kZWJ1Z2dlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9kZWJ1Z2dlcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6eHl9XSxydW5JZHM6W3t0eXBlOnh5fV0sYWN0aXZlUnVuSWQ6W3t0eXBlOnh5fV19KTtjbGFzcyBBSntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5zJD10aGlzLnN0b3JlLnBpcGUoRncoUFopKSx0aGlzLnJ1bnNJZHMkPXRoaXMuc3RvcmUucGlwZShGdyhadyhQWiwodD0+T2JqZWN0LmtleXModCkpKSkpLHRoaXMuYWN0aXZlUnVuSWQkPXRoaXMuc3RvcmUucGlwZShGdyhrWikpfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChScSgpKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQXEoKSl9fUFKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBSikoU20oSXcpKX0sQUouybVjbXA9dG8oe3R5cGU6QUosc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bnMiLCJydW5JZHMiLCJhY3RpdmVSdW5JZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwiZGVidWdnZXItY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSksMiZlJiZEbSgicnVucyIsVGgoMSwzLG4ucnVucyQpKSgicnVuSWRzIixUaCgyLDUsbi5ydW5zSWRzJCkpKCJhY3RpdmVSdW5JZCIsVGgoMyw3LG4uYWN0aXZlUnVuSWQkKSl9LGRpcmVjdGl2ZXM6W1JKXSxwaXBlczpbd01dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChBSixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12MiIsdGVtcGxhdGU6J1xuICAgIDxkZWJ1Z2dlci1jb21wb25lbnRcbiAgICAgIFtydW5zXT0icnVucyQgfCBhc3luYyJcbiAgICAgIFtydW5JZHNdPSJydW5zSWRzJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVJ1bklkXT0iYWN0aXZlUnVuSWQkIHwgYXN5bmMiXG4gICAgPjwvZGVidWdnZXItY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IFRKPSJkZWJ1Z2dlci12MiI7ZnVuY3Rpb24gTkoodCxlLG4sbyxpKXtpZihuPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGFnZVNpemU6ICR7bn1gKTtpZihlPm8pdGhyb3cgbmV3IEVycm9yKGBlbmQgaW5kZXggKCR7ZX0pIGV4Y2VlZHMgdG90YWwgbnVtYmVyIG9mIGl0ZW1zICgke299KWApO2lmKGUtdD5uKXRocm93IG5ldyBFcnJvcigiYmVnaW4tZW5kIHNwYW4gZXhjZWVkcyBwYWdlIHNpemUsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIik7Y29uc3QgYT1bXSxyPU1hdGguZmxvb3IodC9uKTsoIShyIGluIGkpfHxpW3JdPG4mJnIqbitpW3JdPG8pJiZhLnB1c2gocik7Y29uc3Qgcz1NYXRoLmZsb29yKChlLTEpL24pO3JldHVybiBzIT09ciYmKCEocyBpbiBpKXx8cypuK2lbc108ZSYmZTxvKSYmYS5wdXNoKHMpLGF9Y2xhc3Mgekp7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkRGF0YSQ9TWsoKCgpPT57Y29uc3QgdD10aGlzLmxvYWREZWJ1Z2dlclJ1bnMocmUodGhpcy5vbkRlYnVnZ2VyRGF0YVBvbGwoKSx0aGlzLm9uQ29yZVJlbG9hZCgpKSkucGlwZShFZSgpKSxlPXRoaXMubG9hZFNvdXJjZUZpbGVMaXN0KHQpLG49dGhpcy5jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCksbz10aGlzLmNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KSxpPXRoaXMub25BbGVydFR5cGVGb2N1c2VkKCksYT10aGlzLmZldGNoRXhlY3V0aW9uRGlnZXN0c0ZvckFsZXJ0VHlwZUZvY3VzKGkpLHI9dGhpcy5jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGV0ZWN0b3IobikucGlwZShFZSgpKSxzPXRoaXMuY3JlYXRlRXhlY3V0aW9uRGlnZXN0TG9hZGVyKHJlKHRoaXMub25FeGVjdXRpb25TY3JvbGwoKSx0aGlzLmNyZWF0ZUluaXRpYWxFeGVjdXRpb25EaWdlc3QociksYSkpLGw9dGhpcy5jcmVhdGVFeGVjdXRpb25EYXRhQW5kU3RhY2tGcmFtZXNMb2FkZXIocmUodGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdEZvY3VzZWQoKSxyLnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3Qoa1opLHRoaXMuc3RvcmUuc2VsZWN0KGNYKSksSXQoKChbLHQsZV0pPT4oe2FjdGl2ZVJ1bklkOnQsbG9hZGVkRXhlY3V0aW9uRGF0YTplLGZvY3VzSW5kZXg6MH0pKSkpKSk7cmV0dXJuIHJlKG8scyxsLHRoaXMuY3JlYXRlTnVtR3JhcGhFeGVjdXRpb25Mb2FkZXIodCksZSx0aGlzLm9uU291cmNlRmlsZUZvY3VzZWQoKSx0aGlzLmxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHRoaXMub25HcmFwaEV4ZWN1dGlvblNjcm9sbCgpKSx0aGlzLmxvYWRHcmFwaE9wU3RhY2tGcmFtZXModGhpcy5sb2FkR3JhcGhPcEluZm8oKSkpLnBpcGUoSXQoKCgpPT4oe30pKSkpfSkse2Rpc3BhdGNoOiExfSl9b25EZWJ1Z2dlckRhdGFQb2xsKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShEayhScSksemUoKHQ9PihmdW5jdGlvbiBlKHQsbixvKXtyZXR1cm4gdC5waXBlKChmdW5jdGlvbiBpKHQpe3JldHVybiBSKChmdW5jdGlvbihlLG4pe3ZhciBvLGksYT0hMSxyPSExLHM9ITEsbD1mdW5jdGlvbigpe3JldHVybiBzJiZyJiYobi5jb21wbGV0ZSgpLCEwKX0sYz1mdW5jdGlvbigpe3M9ITEsbz1lLnN1YnNjcmliZShuZXcgVChuLHZvaWQgMCwoZnVuY3Rpb24oKXtzPSEwLCFsKCkmJihpfHwoaT1uZXcgSSx0KGkpLnN1YnNjcmliZShuZXcgVChuLChmdW5jdGlvbigpe28/YygpOmE9ITB9KSwoZnVuY3Rpb24oKXtyPSEwLGwoKX0pKSkpLGkpLm5leHQoKX0pKSksYSYmKG8udW5zdWJzY3JpYmUoKSxvPW51bGwsYT0hMSxjKCkpfTtjKCl9KSl9KSgodD0+dC5waXBlKFZlKG4pLF9lKCgoWyx0XSk9PmFlKHQpKSkpKSksSWUobyksSXQoKCgpPT57fSkpKX0pKEV0KHQpLHRoaXMuc3RvcmUuc2VsZWN0KFNaKS5waXBlKEl0KCh0PT4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdD42ZTQ/NmU0OnQ+NGUzP3Q6MmUzfSkodCkpKSksdGhpcy5hY3Rpb25zJC5waXBlKERrKEFxKSkpKSksRmUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKFRxKCkpKSksSXQoKCgpPT57fSkpKX1vbkNvcmVSZWxvYWQoKXtyZXR1cm4gcmUodGhpcy5hY3Rpb25zJC5waXBlKERrKHZFLHhFKSksdGhpcy5hY3Rpb25zJC5waXBlKERrKF9FKSkucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdCh3WikpLGNlKCgoWyx0XSk9PnQuc3RhdGU9PT15RS5OT1RfTE9BREVEfHx0LnN0YXRlPT09eUUuRkFJTEVEJiZudWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpKSkpLnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3QoTVIpKSxjZSgoKFssdF0pPT50PT09VEopKSxGZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goVHEoKSkpKSxJdCgoKCk9Pnt9KSkpfWxvYWREZWJ1Z2dlclJ1bnModCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdCh3WikpLGNlKCgoWyx7c3RhdGU6dH1dKT0+dCE9PXlFLkxPQURJTkcpKSxGZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goTnEoKSkpKSxadCgoKCk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFJ1bnMoKS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaCh6cSh7cnVuczp0fSkpfSkpLEl0KCgoKT0+e30pKSkpKSl9Y3JlYXRlTnVtRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3QoUFopLHRoaXMuc3RvcmUuc2VsZWN0KEhaKSksY2UoKChbLHQsZV0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmZS5zdGF0ZSE9PXlFLkxPQURJTkcpKSxGZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goVnEoKSkpKSxadCgoKFssdF0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoRXhlY3V0aW9uRGlnZXN0cyhlLDAsMCkucGlwZShGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goanEoe251bUV4ZWN1dGlvbnM6dC5udW1fZGlnZXN0c30pKX0pKSxJdCgoKCk9Pnt9KSkpfSkpKX1jcmVhdGVOdW1HcmFwaEV4ZWN1dGlvbkxvYWRlcih0KXtyZXR1cm4gdC5waXBlKFZlKHRoaXMuc3RvcmUuc2VsZWN0KFBaKSx0aGlzLnN0b3JlLnNlbGVjdChXWikpLGNlKCgoWyx0LGVdKT0+T2JqZWN0LmtleXModCkubGVuZ3RoPjAmJmUuc3RhdGUhPT15RS5MT0FESU5HKSksRmUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKEtxKCkpKSksWnQoKChbLHRdKT0+e2NvbnN0IGU9T2JqZWN0LmtleXModClbMF07cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoRXhlY3V0aW9uRGlnZXN0cyhlLDAsMCkucGlwZShGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goSnEoe251bUdyYXBoRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzfSkpfSkpLEl0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KXtyZXR1cm4gdC5waXBlKFZlKHRoaXMuc3RvcmUuc2VsZWN0KFBaKSx0aGlzLnN0b3JlLnNlbGVjdChFWikpLGNlKCgoWyx0LGVdKT0+T2JqZWN0LmtleXModCkubGVuZ3RoPjAmJmUuc3RhdGUhPT15RS5MT0FESU5HKSksRmUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKEhxKCkpKSksWnQoKChbLHRdKT0+e2NvbnN0IGU9T2JqZWN0LmtleXModClbMF07cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEFsZXJ0cyhlLDAsMCkucGlwZShGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goRnEoe251bUFsZXJ0czp0Lm51bV9hbGVydHMsYWxlcnRzQnJlYWtkb3duOnQuYWxlcnRzX2JyZWFrZG93bn0pKX0pKSxJdCgoKCk9Pnt9KSkpfSkpKX1jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGV0ZWN0b3IodCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChMWiksdGhpcy5zdG9yZS5zZWxlY3QoRlopKSxjZSgoKFssdCxlXSk9PnQ+MCYmMD09PU9iamVjdC5rZXlzKGUucGFnZUxvYWRlZFNpemVzKS5sZW5ndGgpKSxJdCgoKCk9Pnt9KSkpfWNyZWF0ZUluaXRpYWxFeGVjdXRpb25EaWdlc3QodCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChMWiksdGhpcy5zdG9yZS5zZWxlY3Qoa1opLHRoaXMuc3RvcmUuc2VsZWN0KFZaKSksY2UoKChbLCx0XSk9Pm51bGwhPT10KSksSXQoKChbLHQsZSxuXSk9Pih7YmVnaW46MCxlbmQ6TWF0aC5taW4odCxuKSxydW5JZDplfSkpKSl9b25FeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKERrKFdxLFlxLHFxKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChrWiksdGhpcy5zdG9yZS5zZWxlY3QoQlopLHRoaXMuc3RvcmUuc2VsZWN0KExaKSx0aGlzLnN0b3JlLnNlbGVjdChqWiksdGhpcy5zdG9yZS5zZWxlY3QoVlopKSxjZSgoKFt0XSk9Pm51bGwhPT10KSksSXQoKChbLHQsZSxuLG8saV0pPT4oe3J1bklkOnQsYmVnaW46ZSxlbmQ6TWF0aC5taW4obixlK28pLHBhZ2VTaXplOml9KSkpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KEZaKSksSXQoKChbdCxlXSk9Pih7cHJvcHM6dCxsb2FkZWQ6ZSxtaXNzaW5nUGFnZXM6TkoodC5iZWdpbix0LmVuZCx0LnBhZ2VTaXplLGUubnVtRXhlY3V0aW9ucyxlLnBhZ2VMb2FkZWRTaXplcyl9KSkpLGNlKCgoe21pc3NpbmdQYWdlczp0fSk9PnQubGVuZ3RoPjApKSxJdCgoKHtwcm9wczp0LGxvYWRlZDplLG1pc3NpbmdQYWdlczpufSk9Pntjb25zdHtydW5JZDpvLHBhZ2VTaXplOml9PXQ7cmV0dXJue2JlZ2luOm5bMF0qaSxlbmQ6TWF0aC5taW4oZS5udW1FeGVjdXRpb25zLChuW24ubGVuZ3RoLTFdKzEpKmkpLHJ1bklkOm99fSkpKX1jcmVhdGVFeGVjdXRpb25EaWdlc3RMb2FkZXIodCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChGWikpLGNlKCgoW3tiZWdpbjp0LGVuZDplfSxuXSk9PmU+dCYmIShmdW5jdGlvbiBvKHQsZSxuKXtpZihlPj1uKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYmVnaW4gdG8gYmUgbGVzcyB0aGFuIGVuZCwgYnV0IGdvdCBiZWdpbj0ke2V9LCBlbmQ9JHtufWApO3JldHVybi0xIT09dC5maW5kSW5kZXgoKHQ9PnQuYmVnaW4+PWUmJnQuZW5kPD1uKSl9KShuLmxvYWRpbmdSYW5nZXMsdCxlKSkpLEZlKCgoW3tiZWdpbjp0LGVuZDplfV0pPT57dGhpcy5zdG9yZS5kaXNwYXRjaChVcSh7YmVnaW46dCxlbmQ6ZX0pKX0pKSxadCgoKFt7cnVuSWQ6dCxiZWdpbjplLGVuZDpufV0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EaWdlc3RzKHQsZSxuKS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChHcSh0KSl9KSksSXQoKCgpPT57fSkpKSkpKX1vbkV4ZWN1dGlvbkRpZ2VzdEZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKERrKFpxKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChrWiksdGhpcy5zdG9yZS5zZWxlY3QoY1gpLHRoaXMuc3RvcmUuc2VsZWN0KEJaKSksSXQoKChbdCxlLG4sb10pPT4oe2FjdGl2ZVJ1bklkOmUsbG9hZGVkRXhlY3V0aW9uRGF0YTpuLGZvY3VzSW5kZXg6byt0LmRpc3BsYXlJbmRleH0pKSkpfWNyZWF0ZUV4ZWN1dGlvbkRhdGFBbmRTdGFja0ZyYW1lc0xvYWRlcih0KXtyZXR1cm4gdC5waXBlKGNlKCgoe2FjdGl2ZVJ1bklkOnQsbG9hZGVkRXhlY3V0aW9uRGF0YTplLGZvY3VzSW5kZXg6bn0pPT5udWxsIT09dCYmbnVsbCE9PW4mJnZvaWQgMD09PWVbbl0pKSxadCgoKHthY3RpdmVSdW5JZDp0LGZvY3VzSW5kZXg6ZX0pPT57Y29uc3Qgbj1lLG89bisxO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EYXRhKHQsbixvKS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChYcSh0KSl9KSksSXQoKHQ9Pih7ZXhlY3V0aW9uRGF0YTp0LGJlZ2luOm4sZW5kOm99KSkpKX0pKSxJdCgoKHtleGVjdXRpb25EYXRhOnR9KT0+dC5leGVjdXRpb25zWzBdKSksVmUodGhpcy5zdG9yZS5zZWxlY3Qoa1opLHRoaXMuc3RvcmUuc2VsZWN0KHBYKSksY2UoKChbdCxlLG5dKT0+e2lmKG51bGw9PT1lKXJldHVybiExO2Zvcihjb25zdCBlIG9mIHQuc3RhY2tfZnJhbWVfaWRzKWlmKHZvaWQgMD09PW5bZV0pcmV0dXJuITA7cmV0dXJuITF9KSksWnQoKChbdCxlXSk9Pntjb25zdCBuPXQuc3RhY2tfZnJhbWVfaWRzO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hTdGFja0ZyYW1lcyhlLG4pLnBpcGUoRmUoKHQ9Pntjb25zdCBlPXt9O2ZvcihsZXQgbz0wO288bi5sZW5ndGg7KytvKWVbbltvXV09dC5zdGFja19mcmFtZXNbb107dGhpcy5zdG9yZS5kaXNwYXRjaChkWih7c3RhY2tGcmFtZXM6ZX0pKX0pKSxJdCgoKCk9Pnt9KSkpfSkpKX1vbkdyYXBoRXhlY3V0aW9uU2Nyb2xsKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShEayh0WiksZ2UoMTAwKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChrWiksdGhpcy5zdG9yZS5zZWxlY3QoWVopLHRoaXMuc3RvcmUuc2VsZWN0KHFaKSksY2UoKChbLHQsZV0pPT5udWxsIT09dCYmZT4wKSksSXQoKChbLHQsZSxuXSk9Pih7cnVuSWQ6dCxudW1HcmFwaEV4ZWN1dGlvbnM6ZSxzY3JvbGxCZWdpbkluZGV4Om59KSkpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KFhaKSx0aGlzLnN0b3JlLnNlbGVjdChaWiksdGhpcy5zdG9yZS5zZWxlY3QoS1opLHRoaXMuc3RvcmUuc2VsZWN0KEpaKSksSXQoKChbe3J1bklkOnQsbnVtR3JhcGhFeGVjdXRpb25zOmUsc2Nyb2xsQmVnaW5JbmRleDpufSxvLGksYSxyXSk9PntsZXQgcz1OSihuLE1hdGgubWluKG4raSxlKSxvLGUscik7cmV0dXJuIHM9cy5maWx0ZXIoKHQ9Pi0xPT09YS5pbmRleE9mKHQpKSkse3J1bklkOnQsbWlzc2luZ1BhZ2VzOnMscGFnZVNpemU6byxudW1HcmFwaEV4ZWN1dGlvbnM6ZX19KSkpfWxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHQpe3JldHVybiB0LnBpcGUoY2UoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCkpLEZlKCgoe21pc3NpbmdQYWdlczp0fSk9Pnt0LmZvckVhY2goKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFFxKHtwYWdlSW5kZXg6dH0pKX0pKX0pKSxadCgoKHtydW5JZDp0LG1pc3NpbmdQYWdlczplLHBhZ2VTaXplOm4sbnVtR3JhcGhFeGVjdXRpb25zOm99KT0+e2NvbnN0IGk9ZVswXSpuLGE9TWF0aC5taW4oKGVbZS5sZW5ndGgtMV0rMSkqbixvKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EYXRhKHQsaSxhKS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaCgkcSh0KSl9KSksSXQoKCgpPT57fSkpKX0pKSl9bG9hZEdyYXBoT3BJbmZvKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShEayhuWixlWiksVmUodGhpcy5zdG9yZS5zZWxlY3Qoa1opLHRoaXMuc3RvcmUuc2VsZWN0KGRYKSksY2UoKChbdCxlLG5dKT0+e2NvbnN0e2dyYXBoX2lkOm8sb3BfbmFtZTppfT10O3JldHVybiEobnVsbD09PWV8fHZvaWQgMCE9PW5bb10mJm5bb10uaGFzKGkpJiYobltvXS5nZXQoaSk9PT15RS5MT0FESU5HfHxuW29dLmdldChpKT09PXlFLkxPQURFRCkpfSkpLEZlKCgoW3tncmFwaF9pZDp0LG9wX25hbWU6ZX1dKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChvWih7Z3JhcGhfaWQ6dCxvcF9uYW1lOmV9KSkpKSxadCgoKFt0LGVdKT0+e2NvbnN0e2dyYXBoX2lkOm4sb3BfbmFtZTpvfT10O3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaE9wSW5mbyhlLG4sbykucGlwZShGZSgodD0+dGhpcy5zdG9yZS5kaXNwYXRjaChpWih7Z3JhcGhPcEluZm9SZXNwb25zZTp0fSkpKSksSXQoKHQ9Pih7cnVuSWQ6ZSxzdGFja0ZyYW1lSWRzOnQuc3RhY2tfZnJhbWVfaWRzfSkpKSl9KSkpfWxvYWRHcmFwaE9wU3RhY2tGcmFtZXModCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChwWCkpLEl0KCgoW3tydW5JZDp0LHN0YWNrRnJhbWVJZHM6ZX0sbl0pPT4oe3J1bklkOnQsbWlzc2luZ1N0YWNrRnJhbWVJZHM6ZS5maWx0ZXIoKHQ9PnZvaWQgMD09PW5bdF0pKX0pKSksY2UoKCh7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplfSk9Pm51bGwhPT10JiZlLmxlbmd0aD4wKSksWnQoKCh7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczplfSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKHQsZSkucGlwZShGZSgodD0+e2NvbnN0IG49e307Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDsrK28pbltlW29dXT10LnN0YWNrX2ZyYW1lc1tvXTt0aGlzLnN0b3JlLmRpc3BhdGNoKGRaKHtzdGFja0ZyYW1lczpufSkpfSkpLEl0KCgoKT0+e30pKSkpKSl9b25BbGVydFR5cGVGb2N1c2VkKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShEayhCcSksVmUodGhpcy5zdG9yZS5zZWxlY3Qoa1opLHRoaXMuc3RvcmUuc2VsZWN0KEFaKSx0aGlzLnN0b3JlLnNlbGVjdChUWiksdGhpcy5zdG9yZS5zZWxlY3QoTlopLHRoaXMuc3RvcmUuc2VsZWN0KEVaKSksY2UoKChbLHQsZSxuLG8saV0pPT5udWxsIT09dCYmbnVsbCE9PWUmJm4+MCYmKG51bGw9PT1vfHxPYmplY3Qua2V5cyhvKS5sZW5ndGg8bikmJmkuc3RhdGUhPT15RS5MT0FESU5HKSksRmUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKEhxKCkpKSksWnQoKChbLHQsZV0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hBbGVydHModCwwLC0xLGUpKSksRmUoKCh7bnVtX2FsZXJ0czp0LGFsZXJ0c19icmVha2Rvd246ZSxhbGVydF90eXBlOm4sYmVnaW46byxlbmQ6aSxhbGVydHM6YX0pPT57dGhpcy5zdG9yZS5kaXNwYXRjaChMcSh7bnVtQWxlcnRzOnQsYWxlcnRzQnJlYWtkb3duOmUsYWxlcnRUeXBlOm4sYmVnaW46byxlbmQ6aSxhbGVydHM6YX0pKX0pKSl9ZmV0Y2hFeGVjdXRpb25EaWdlc3RzRm9yQWxlcnRUeXBlRm9jdXModCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChWWiksdGhpcy5zdG9yZS5zZWxlY3QoalopLHRoaXMuc3RvcmUuc2VsZWN0KExaKSx0aGlzLnN0b3JlLnNlbGVjdChGWiksdGhpcy5zdG9yZS5zZWxlY3Qoa1opKSxJdCgoKFt0LGUsbixvLGksYV0pPT57Y29uc3Qgcj10LmFsZXJ0c1swXS5leGVjdXRpb25faW5kZXgscz1OSihNYXRoLm1heCgwLHItTWF0aC5mbG9vcihuLzIpKSxNYXRoLm1pbihyK01hdGguZmxvb3Iobi8yKSxvKSxlLG8saS5wYWdlTG9hZGVkU2l6ZXMpO3JldHVybiAwPT09cy5sZW5ndGg/e3J1bklkOmEsYmVnaW46MCxlbmQ6MH06e3J1bklkOmEsYmVnaW46c1swXSplLGVuZDpNYXRoLm1pbihpLm51bUV4ZWN1dGlvbnMsKHNbcy5sZW5ndGgtMV0rMSkqZSl9fSkpKX1sb2FkU291cmNlRmlsZUxpc3QodCl7cmV0dXJuIHQucGlwZShWZSh0aGlzLnN0b3JlLnNlbGVjdChrWiksdGhpcy5zdG9yZS5zZWxlY3QoaFgpKSxjZSgoKFssdCxlXSk9Pm51bGwhPT10JiZlLnN0YXRlIT09eUUuTE9BRElORykpLEZlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChhWigpKSkpLFp0KCgoWyx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFNvdXJjZUZpbGVMaXN0KHQpLnBpcGUoRmUoKHQ9Pntjb25zdCBlPVtdO3QuZm9yRWFjaCgoKFt0LG5dKT0+e2UucHVzaCh7aG9zdF9uYW1lOnQsZmlsZV9wYXRoOm59KX0pKSx0aGlzLnN0b3JlLmRpc3BhdGNoKHJaKHtzb3VyY2VGaWxlczplfSkpfSkpLEl0KCgoKT0+e30pKSkpKSl9b25Tb3VyY2VGaWxlRm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRGsoc1opLFZlKHRoaXMuc3RvcmUuc2VsZWN0KGtaKSx0aGlzLnN0b3JlLnNlbGVjdChiWCksdGhpcy5zdG9yZS5zZWxlY3QoeVgpKSxJdCgoKFt0LGUsbixvXSk9Pih7cnVuSWQ6ZSxzdGFja0ZyYW1lOnQuc3RhY2tGcmFtZSxmaWxlSW5kZXg6bixmaWxlQ29udGVudDpvfSkpKSxjZSgoKHtydW5JZDp0LGZpbGVDb250ZW50OmV9KT0+bnVsbCE9PXQmJm51bGwhPT1lJiZlLmxvYWRTdGF0ZT09PXlFLk5PVF9MT0FERUQpKSxGZSgoKHtzdGFja0ZyYW1lOnR9KT0+dGhpcy5zdG9yZS5kaXNwYXRjaChsWih7aG9zdF9uYW1lOnQuaG9zdF9uYW1lLGZpbGVfcGF0aDp0LmZpbGVfcGF0aH0pKSkpLFp0KCgoe2ZpbGVJbmRleDp0LHJ1bklkOmV9KT0+dGhpcy5kYXRhU291cmNlLmZldGNoU291cmNlRmlsZShlLHQpLnBpcGUoRmUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGNaKHQpKX0pKSxJdCgoKCk9Pnt9KSkpKSkpfX16Si7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ekopKHZyKFNrKSx2cihJdyksdnIoa3EpKX0sekouybVwcm92PU1uKHt0b2tlbjp6SixmYWN0b3J5OnpKLsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh6Sixbe3R5cGU6aW19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U2t9LHt0eXBlOkl3fSx7dHlwZTprcX1dfSksbnVsbCk7Y2xhc3MgSUp7fUlKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJSil9LElKLsm1bW9kPWFvKHt0eXBlOklKfSksSUouybVpbmo9dm4oe2ltcG9ydHM6W1tXTV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChJSixbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbeFgsUFhdLGltcG9ydHM6W1dNXSxleHBvcnRzOltQWF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhJSix7ZGVjbGFyYXRpb25zOlt4WCxQWF0saW1wb3J0czpbV01dLGV4cG9ydHM6W1BYXX0pO2NsYXNzIEhKe31ISi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SEopfSxISi7JtW1vZD1hbyh7dHlwZTpISn0pLEhKLsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSEosW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0JLLERLLFZLXSxpbXBvcnRzOltXTV0sZXhwb3J0czpbVktdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oSEose2RlY2xhcmF0aW9uczpbQkssREssVktdLGltcG9ydHM6W1dNXSxleHBvcnRzOltWS119KTtjbGFzcyBGSnt9RkouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZKKX0sRkouybVtb2Q9YW8oe3R5cGU6Rkp9KSxGSi7JtWluaj12bih7aW1wb3J0czpbW1dNXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEZKLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOlt0SyxpSyxvSyxlSyxuSyxhS10saW1wb3J0czpbV01dLGV4cG9ydHM6W2FLXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEZKLHtkZWNsYXJhdGlvbnM6W3RLLGlLLG9LLGVLLG5LLGFLXSxpbXBvcnRzOltXTV0sZXhwb3J0czpbYUtdfSk7Y2xhc3MgTEp7fUxKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxMSil9LExKLsm1bW9kPWFvKHt0eXBlOkxKfSksTEouybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxGSixfRl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMSixbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbS0ssSktdLGltcG9ydHM6W1dNLEZKLF9GXSxleHBvcnRzOltKS119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhMSix7ZGVjbGFyYXRpb25zOltLSyxKS10saW1wb3J0czpbV00sRkosX0ZdLGV4cG9ydHM6W0pLXX0pO2NsYXNzIEJKe31CSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8QkopfSxCSi7JtW1vZD1hbyh7dHlwZTpCSn0pLEJKLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJKLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltEcSxFcV0sZXhwb3J0czpbRXFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oQkose2RlY2xhcmF0aW9uczpbRHEsRXFdLGV4cG9ydHM6W0VxXX0pO2NsYXNzIFZKe31WSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VkopfSxWSi7JtW1vZD1hbyh7dHlwZTpWSn0pLFZKLsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFZKLFt7dHlwZTpBeSxhcmdzOlt7ZXhwb3J0czpbb0pdLGRlY2xhcmF0aW9uczpbb0pdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVkose2RlY2xhcmF0aW9uczpbb0pdLGV4cG9ydHM6W29KXX0pO2NvbnN0IGpKPVsiY29kZVZpZXdlckNvbnRhaW5lciJdO2NsYXNzIFVKe2NvbnN0cnVjdG9yKCl7dGhpcy5maXJzdFRleHQ9bnVsbCx0aGlzLnNlY29uZFRleHQ9bnVsbCx0aGlzLnJlbmRlclNpZGVCeVNpZGU9ITAsdGhpcy5tb25hY289bnVsbCx0aGlzLmVkaXRvcj1udWxsLHRoaXMuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TPTUwfW9uUmVzaXplKCl7dGhpcy5lZGl0b3ImJnRoaXMuZWRpdG9yLmxheW91dCgpfW5nT25DaGFuZ2VzKHQpe2lmKCF0aGlzLm1vbmFjbylyZXR1cm47Y29uc3QgZT0hdGhpcy5lZGl0b3I7ZSYmKHRoaXMuZWRpdG9yPXRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVEaWZmRWRpdG9yKHRoaXMuY29kZVZpZXdlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LHtyZWFkT25seTohMCxmb250U2l6ZToxMCxtaW5pbWFwOntlbmFibGVkOiEwfSxyZW5kZXJTaWRlQnlTaWRlOnRoaXMucmVuZGVyU2lkZUJ5U2lkZSx0aGVtZTpuSih0aGlzLnVzZURhcmtNb2RlKX0pKSwoZXx8dC5maXJzdFRleHR8fHQuc2Vjb25kVGV4dCkmJnRoaXMuZWRpdG9yLnNldE1vZGVsKHtvcmlnaW5hbDp0aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5maXJzdFRleHR8fCIiKSxtb2RpZmllZDp0aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlTW9kZWwodGhpcy5zZWNvbmRUZXh0fHwiIil9KSx0LnJlbmRlclNpZGVCeVNpZGUmJnRoaXMuZWRpdG9yLnVwZGF0ZU9wdGlvbnMoe3JlbmRlclNpZGVCeVNpZGU6dGhpcy5yZW5kZXJTaWRlQnlTaWRlfSksdC51c2VEYXJrTW9kZSYmdGhpcy5tb25hY28uZWRpdG9yLnNldFRoZW1lKG5KKHRoaXMudXNlRGFya01vZGUpKX19VUouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVKKX0sVUouybVjbXA9dG8oe3R5cGU6VUosc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChqSiw3LGhnKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLmNvZGVWaWV3ZXJDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e2ZpcnN0VGV4dDoiZmlyc3RUZXh0IixzZWNvbmRUZXh0OiJzZWNvbmRUZXh0IixyZW5kZXJTaWRlQnlTaWRlOiJyZW5kZXJTaWRlQnlTaWRlIixtb25hY286Im1vbmFjbyIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZmVhdHVyZXM6W0JvXSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwxLCJjb2RlLXZpZXdlci1jb250YWluZXIiLDMsInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwib25SZXNpemUiXSxbImNvZGVWaWV3ZXJDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCwxKSxWbSgib25SZXNpemUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemUoKX0pKSxBbSgpKSwyJmUmJkRtKCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsbi5SRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVMpfSxkaXJlY3RpdmVzOltvSl0sc3R5bGVzOlsiLmNvZGUtdmlld2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFVKLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGRpdlxuICAgICAgI2NvZGVWaWV3ZXJDb250YWluZXJcbiAgICAgIGNsYXNzPSJjb2RlLXZpZXdlci1jb250YWluZXIiXG4gICAgICBkZXRlY3RSZXNpemVcbiAgICAgIFtyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Nc109IlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUyJcbiAgICAgIChvblJlc2l6ZSk9Im9uUmVzaXplKCkiXG4gICAgPjwvZGl2PlxuICAnLHN0eWxlczpbIlxuICAgICAgLmNvZGUtdmlld2VyLWNvbnRhaW5lciB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtmaXJzdFRleHQ6W3t0eXBlOnh5fV0sc2Vjb25kVGV4dDpbe3R5cGU6eHl9XSxyZW5kZXJTaWRlQnlTaWRlOlt7dHlwZTp4eX1dLG1vbmFjbzpbe3R5cGU6eHl9XSx1c2VEYXJrTW9kZTpbe3R5cGU6eHl9XSxjb2RlVmlld2VyQ29udGFpbmVyOlt7dHlwZTpaYSxhcmdzOlsiY29kZVZpZXdlckNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOmhnfV19XX0pO2NsYXNzIEdKe2NvbnN0cnVjdG9yKCl7dGhpcy5maXJzdFRleHQ9bnVsbCx0aGlzLnNlY29uZFRleHQ9bnVsbCx0aGlzLnJlbmRlclNpZGVCeVNpZGU9ITAsdGhpcy51c2VEYXJrTW9kZT0hMSx0aGlzLm1vbmFjbyQ9bnVsbH1uZ09uSW5pdCgpe3RoaXMubW9uYWNvJD1DdChlSigpKS5waXBlKEl0KCgoKT0+d2luZG93Lm1vbmFjbykpKX19R0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdKKX0sR0ouybVjbXA9dG8oe3R5cGU6R0osc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWRpZmYiXV0saW5wdXRzOntmaXJzdFRleHQ6ImZpcnN0VGV4dCIsc2Vjb25kVGV4dDoic2Vjb25kVGV4dCIscmVuZGVyU2lkZUJ5U2lkZToicmVuZGVyU2lkZUJ5U2lkZSIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZGVjbHM6Mix2YXJzOjcsY29uc3RzOltbMywiZmlyc3RUZXh0Iiwic2Vjb25kVGV4dCIsInJlbmRlclNpZGVCeVNpZGUiLCJtb25hY28iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIikpLDImZSYmRG0oImZpcnN0VGV4dCIsbi5maXJzdFRleHQpKCJzZWNvbmRUZXh0IixuLnNlY29uZFRleHQpKCJyZW5kZXJTaWRlQnlTaWRlIixuLnJlbmRlclNpZGVCeVNpZGUpKCJtb25hY28iLFRoKDEsNSxuLm1vbmFjbyQpKSgidXNlRGFya01vZGUiLG4udXNlRGFya01vZGUpfSxkaXJlY3RpdmVzOltVSl0scGlwZXM6W3dNXSxzdHlsZXM6WyJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChHSixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJzb3VyY2UtY29kZS1kaWZmIix0ZW1wbGF0ZTonXG4gICAgPHNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50XG4gICAgICBbZmlyc3RUZXh0XT0iZmlyc3RUZXh0IlxuICAgICAgW3NlY29uZFRleHRdPSJzZWNvbmRUZXh0IlxuICAgICAgW3JlbmRlclNpZGVCeVNpZGVdPSJyZW5kZXJTaWRlQnlTaWRlIlxuICAgICAgW21vbmFjb109Im1vbmFjbyQgfCBhc3luYyJcbiAgICAgIFt1c2VEYXJrTW9kZV09InVzZURhcmtNb2RlIlxuICAgID48L3NvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgc291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse2ZpcnN0VGV4dDpbe3R5cGU6eHl9XSxzZWNvbmRUZXh0Olt7dHlwZTp4eX1dLHJlbmRlclNpZGVCeVNpZGU6W3t0eXBlOnh5fV0sdXNlRGFya01vZGU6W3t0eXBlOnh5fV19KTtjbGFzcyBXSnt9V0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdKKX0sV0ouybVtb2Q9YW8oe3R5cGU6V0p9KSxXSi7JtWluaj12bih7aW1wb3J0czpbW1dNLFZKXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFdKLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOlthSixySixVSixHSl0saW1wb3J0czpbV00sVkpdLGV4cG9ydHM6W3JKLEdKXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFdKLHtkZWNsYXJhdGlvbnM6W2FKLHJKLFVKLEdKXSxpbXBvcnRzOltXTSxWSl0sZXhwb3J0czpbckosR0pdfSk7Y2xhc3MgWUp7fVlKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZSil9LFlKLsm1bW9kPWFvKHt0eXBlOllKfSksWUouybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxXSl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChZSixbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbZEoscEpdLGltcG9ydHM6W1dNLFdKXSxleHBvcnRzOltwSl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhZSix7ZGVjbGFyYXRpb25zOltkSixwSl0saW1wb3J0czpbV00sV0pdLGV4cG9ydHM6W3BKXX0pO2NsYXNzIHFKe31xSi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cUopfSxxSi7JtW1vZD1hbyh7dHlwZTpxSn0pLHFKLsm1aW5qPXZuKHtpbXBvcnRzOltbV00sV0pdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocUosW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2tKLFNKXSxpbXBvcnRzOltXTSxXSl0sZXhwb3J0czpbU0pdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8ocUose2RlY2xhcmF0aW9uczpba0osU0pdLGltcG9ydHM6W1dNLFdKXSxleHBvcnRzOltTSl19KTtjbGFzcyBaSnt9WkouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpKKX0sWkouybVtb2Q9YW8oe3R5cGU6Wkp9KSxaSi7JtWluaj12bih7aW1wb3J0czpbW1dNLEZKXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFpKLFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltwSyx1S10saW1wb3J0czpbV00sRkpdLGV4cG9ydHM6W3VLXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFpKLHtkZWNsYXJhdGlvbnM6W3BLLHVLXSxpbXBvcnRzOltXTSxGSl0sZXhwb3J0czpbdUtdfSk7Y2xhc3MgWEp7fVhKLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYSil9LFhKLsm1bW9kPWFvKHt0eXBlOlhKfSksWEouybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxaSixKSCx6WF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYSixbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbQ0ssdktdLGltcG9ydHM6W1dNLFpKLEpILHpYXSxleHBvcnRzOlt2S119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhYSix7ZGVjbGFyYXRpb25zOltDSyx2S10saW1wb3J0czpbV00sWkosSkgselhdLGV4cG9ydHM6W3ZLXX0pO2NsYXNzIEtKe31mdW5jdGlvbiBKSih0LGUpe2NvbnN0IG49e307Zm9yKGNvbnN0IG8gb2YgT2JqZWN0LmtleXModCkpbltvXT1lKHRbb10sbyk7cmV0dXJuIG59ZnVuY3Rpb24gUUoodCxlLG4pe2NvbnN0e3BsdWdpbjpvLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PWVbdF0scz1uVChuLG8saSxyKTtpZihzKXtpZihudWxsIT09YSYmcy5ydW5Ub1Nlcmllcy5oYXNPd25Qcm9wZXJ0eShhKSl7Y29uc3QgdD1zLnJ1blRvU2VyaWVzW2FdLmxlbmd0aDtyZXR1cm4gdD4wP3QtMTpudWxsfWNvbnN0IHQ9T2JqZWN0LnZhbHVlcyhzLnJ1blRvU2VyaWVzKS5tYXAoKHQ9PnQubGVuZ3RoKSk7aWYodC5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KC4uLnQpLTF9cmV0dXJuIG51bGx9ZnVuY3Rpb24gJEoodCxlLG4sbyl7Y29uc3QgaT1PYmplY3QuYXNzaWduKHt9LGUpO2Zvcihjb25zdCBhIGluIHQpe2lmKCF0Lmhhc093blByb3BlcnR5KGEpKWNvbnRpbnVlO2NvbnN0IHI9UUooYSx0LG4pO2lmKG51bGw9PT1yKXtlLmhhc093blByb3BlcnR5KGEpJiYoaVthXT1udWxsKTtjb250aW51ZX1jb25zdCBzPWUuaGFzT3duUHJvcGVydHkoYSk/ZVthXTpudWxsLGw9UUooYSx0LG8pLGM9bnVsbCE9PXMmJnM9PT1sLGQ9bnVsbD09PXN8fGM7KG51bGwhPT1zJiZzPnJ8fGQpJiYoaVthXT1yKX1yZXR1cm4gaX1mdW5jdGlvbiB0USh0KXtjb25zdCBlPUpKKHQucnVuVG9Mb2FkU3RhdGUsKHQ9PnQ9PT15RS5MT0FESU5HP3lFLkxPQURJTkc6eUUuTk9UX0xPQURFRCkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1blRvTG9hZFN0YXRlOmV9KX1mdW5jdGlvbiBlUSh0LGUsbixvKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3QsZSxufHwiIixvXSl9S0ouybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEtKKX0sS0ouybVtb2Q9YW8oe3R5cGU6S0p9KSxLSi7JtWluaj12bih7aW1wb3J0czpbW0lKLFdNLEVSLExKLEhKLEJKLFlKLHFKLFNxLFhKLGRrLmZvckZlYXR1cmUocFoseFopLFdrLmZvckZlYXR1cmUoW3pKXSksd3EuZm9yUGx1Z2luKFRKLEFKKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChLSixbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbUkosQUpdLGltcG9ydHM6W0lKLFdNLEVSLExKLEhKLEJKLFlKLHFKLFNxLFhKLGRrLmZvckZlYXR1cmUocFoseFopLFdrLmZvckZlYXR1cmUoW3pKXSksd3EuZm9yUGx1Z2luKFRKLEFKKV0sZXhwb3J0czpbQUpdLGVudHJ5Q29tcG9uZW50czpbQUpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oS0ose2RlY2xhcmF0aW9uczpbUkosQUpdLGltcG9ydHM6W0lKLFdNLEVSLExKLEhKLEJKLFlKLHFKLFNxLFhKLGNrLEdrLHdxXSxleHBvcnRzOltBSl19KTtjb25zdHtpbml0aWFsU3RhdGU6blEscmVkdWNlcnM6b1F9PUhOKHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTp7c3RhdGU6eUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sdGFnTWV0YWRhdGE6e3NjYWxhcnM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGhpc3RvZ3JhbXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGltYWdlczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fX0sY2FyZExpc3Q6W10sY2FyZFRvUGlubmVkQ29weTpuZXcgTWFwLHBpbm5lZENhcmRUb09yaWdpbmFsOm5ldyBNYXAsdW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6W10sY2FyZE1ldGFkYXRhTWFwOnt9LGNhcmRTdGVwSW5kZXg6e30sdGFnRmlsdGVyOiIiLHRhZ0dyb3VwRXhwYW5kZWQ6bmV3IE1hcCxzZWxlY3RlZFRpbWU6bnVsbCxzZWxlY3RUaW1lRW5hYmxlZDohMSx1c2VSYW5nZVNlbGVjdFRpbWU6ITEsZmlsdGVyZWRQbHVnaW5UeXBlczpuZXcgU2V0LHN0ZXBNaW5NYXg6e21pbjoxLzAsbWF4Oi0xLzB9fSx7aXNTZXR0aW5nc1BhbmVPcGVuOiEwLHByb21vdGVUaW1lU2VyaWVzOiEwLHRpbWVTZXJpZXNEYXRhOntzY2FsYXJzOnt9LGhpc3RvZ3JhbXM6e30saW1hZ2VzOnt9fSxzZXR0aW5nczpwVCxzZXR0aW5nT3ZlcnJpZGVzOnt9LHZpc2libGVDYXJkTWFwOm5ldyBNYXB9LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Zpc2libGVDYXJkTWFwOm5ldyBNYXB9KSkpLGlRPW5RLGFRPXlrKG5RLGJrKHJTLCgodCx7cm91dGVLaW5kOmUscGFydGlhbFN0YXRlOm59KT0+e2lmKGUhPT1aay5FWFBFUklNRU5UJiZlIT09WmsuQ09NUEFSRV9FWFBFUklNRU5UKXJldHVybiB0O2NvbnN0IG89bmV3IFNldDtmb3IoY29uc3QgZSBvZiB0LnBpbm5lZENhcmRUb09yaWdpbmFsLmtleXMoKSl7Y29uc3R7cGx1Z2luOm4sdGFnOmkscnVuSWQ6YSxzYW1wbGU6cn09dC5jYXJkTWV0YWRhdGFNYXBbZV07by5hZGQoZVEobixpLGEscikpfWNvbnN0IGk9bixhPVtdO2Zvcihjb25zdCBlIG9mWy4uLnQudW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMsLi4uaS5tZXRyaWNzLnBpbm5lZENhcmRzXSl7Y29uc3QgdD1lUShlLnBsdWdpbixlLnRhZyxlLnJ1bklkLGUuc2FtcGxlKTtvLmhhcyh0KXx8KG8uYWRkKHQpLGEucHVzaChlKSl9Y29uc3Qgcj1zVChhLHQuY2FyZExpc3QsdC5jYXJkTWV0YWRhdGFNYXAsdC5jYXJkVG9QaW5uZWRDb3B5LHQucGlubmVkQ2FyZFRvT3JpZ2luYWwsdC5jYXJkU3RlcEluZGV4KSxzPWkubWV0cmljcy5zbW9vdGhpbmc7bGV0IGw9dC5zZXR0aW5nT3ZlcnJpZGVzO2lmKE51bWJlci5pc0Zpbml0ZShzKSYmbnVsbCE9PXMpe2NvbnN0IGU9TWF0aC5tYXgoMCxNYXRoLm1pbiguOTk5LE51bWJlcihzLnRvUHJlY2lzaW9uKDMpKSkpO2w9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclNtb290aGluZzplfSl9Y29uc3QgYz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxyKSx7c2V0dGluZ092ZXJyaWRlczpsfSk7cmV0dXJuIG51bGwhPT1pLm1ldHJpY3MudGFnRmlsdGVyJiYoYy50YWdGaWx0ZXI9aS5tZXRyaWNzLnRhZ0ZpbHRlciksY30pKSxiayhXUywoKHQse3BhcnRpYWxTZXR0aW5nczplfSk9Pnt2YXIgbjtjb25zdCBvPXt9O2lmKGUudG9vbHRpcFNvcnRTdHJpbmcpc3dpdGNoKGUudG9vbHRpcFNvcnRTdHJpbmcpe2Nhc2UgYkEuQVNDRU5ESU5HOm8udG9vbHRpcFNvcnQ9YkEuQVNDRU5ESU5HO2JyZWFrO2Nhc2UgYkEuREVTQ0VORElORzpvLnRvb2x0aXBTb3J0PWJBLkRFU0NFTkRJTkc7YnJlYWs7Y2FzZSBiQS5ERUZBVUxUOm8udG9vbHRpcFNvcnQ9YkEuREVGQVVMVDticmVhaztjYXNlIGJBLk5FQVJFU1Q6by50b29sdGlwU29ydD1iQS5ORUFSRVNUfSJib29sZWFuIj09dHlwZW9mIGUuaWdub3JlT3V0bGllcnMmJihvLmlnbm9yZU91dGxpZXJzPWUuaWdub3JlT3V0bGllcnMpLCJudW1iZXIiPT10eXBlb2YgZS5zY2FsYXJTbW9vdGhpbmcmJihvLnNjYWxhclNtb290aGluZz1lLnNjYWxhclNtb290aGluZyk7Y29uc3QgaT0iYm9vbGVhbiI9PXR5cGVvZiBlLnRpbWVTZXJpZXNQcm9tb3Rpb25EaXNtaXNzZWQ/IWUudGltZVNlcmllc1Byb21vdGlvbkRpc21pc3NlZDp0LnByb21vdGVUaW1lU2VyaWVzLGE9bnVsbCE9PShuPWUudGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZCkmJnZvaWQgMCE9PW4/bjp0LmlzU2V0dGluZ3NQYW5lT3BlbjtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwcm9tb3RlVGltZVNlcmllczppLGlzU2V0dGluZ3NQYW5lT3BlbjphLHNldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSxvKX0pfSkpLGJrKHhFLHZFLCh0PT57Y29uc3QgZT10LnRhZ01ldGFkYXRhTG9hZFN0YXRlLnN0YXRlPT09eUUuTE9BRElORz95RS5MT0FESU5HOnlFLk5PVF9MT0FERUQsbj1KSih0LnRpbWVTZXJpZXNEYXRhLCgodCxlKT0+SkoodCwodD0+TUEoZSk/SkoodCwodD0+dFEodCkpKTp0USh0KSkpKSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQudGFnTWV0YWRhdGFMb2FkU3RhdGUpLHtzdGF0ZTplfSksdGltZVNlcmllc0RhdGE6bn0pfSkpLGJrKElFLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnRhZ01ldGFkYXRhTG9hZFN0YXRlKSx7c3RhdGU6eUUuTE9BRElOR30pfSkpKSxiayhGRSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC50YWdNZXRhZGF0YUxvYWRTdGF0ZSkse3N0YXRlOnlFLkZBSUxFRH0pfSkpKSxiayhIRSwoKHQse3RhZ01ldGFkYXRhOmV9KT0+e2NvbnN0IG49e3NjYWxhcnM6c1EoZSxoQS5TQ0FMQVJTKSxoaXN0b2dyYW1zOnNRKGUsaEEuSElTVE9HUkFNUyksaW1hZ2VzOmVbaEEuSU1BR0VTXX0sbz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZE1ldGFkYXRhTWFwKSxpPShmdW5jdGlvbiBhKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuIG9mIE9iamVjdC5rZXlzKHQpKXtjb25zdCBvPW47bGV0IGk7aWYoTUEobykpe2lmKCF4QShvKSl0aHJvdyBuZXcgRXJyb3IoIk11bHRpLXJ1biwgc2FtcGxlZCBwbHVnaW4gc3VwcG9ydCBub3QgeWV0IGltcGxlbWVudGVkIik7e2NvbnN0IG49dFtvXS50YWdSdW5TYW1wbGVkSW5mbztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhuKSlmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyhuW3RdKSl7Y29uc3R7bWF4U2FtcGxlc1BlclN0ZXA6YX09blt0XVtpXTtmb3IobGV0IG49MDtuPGE7bisrKWUucHVzaCh7cGx1Z2luOm8sdGFnOnQscnVuSWQ6aSxzYW1wbGU6bixudW1TYW1wbGU6YX0pfX19ZWxzZSBpZih4QShvKSl7aT10W29dLnRhZ1RvUnVucztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhpKSlmb3IoY29uc3QgbiBvZiBpW3RdKWUucHVzaCh7cGx1Z2luOm8sdGFnOnQscnVuSWQ6bn0pfWVsc2V7aT10W29dLnRhZ1RvUnVucztmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhpKSllLnB1c2goe3BsdWdpbjpvLHRhZzp0LHJ1bklkOm51bGx9KX19cmV0dXJuIGV9KShuKSxyPVtdO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IG49aVQoZSk7dC5jYXJkTWV0YWRhdGFNYXAuaGFzT3duUHJvcGVydHkobil8fChvW25dPWUsci5wdXNoKG4pKX1jb25zdCBzPVsuLi50LmNhcmRMaXN0LC4uLnJdLGw9c1QodC51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcyxyLG8sdC5jYXJkVG9QaW5uZWRDb3B5LHQucGlubmVkQ2FyZFRvT3JpZ2luYWwsdC5jYXJkU3RlcEluZGV4KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksbCkse3RhZ01ldGFkYXRhTG9hZFN0YXRlOntzdGF0ZTp5RS5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9LHRhZ01ldGFkYXRhOm4sY2FyZExpc3Q6c30pfSkpLGJrKGVSLCgodCx7dGFnRmlsdGVyOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdGaWx0ZXI6ZX0pKSksYmsoTEUsKCh0LHtzb3J0OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHt0b29sdGlwU29ydDplfSl9KSkpLGJrKEJFLCh0PT57dmFyIGU7Y29uc3Qgbj0hKG51bGwhPT0oZT10LnNldHRpbmdPdmVycmlkZXMuaWdub3JlT3V0bGllcnMpJiZ2b2lkIDAhPT1lP2U6dC5zZXR0aW5ncy5pZ25vcmVPdXRsaWVycyk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aWdub3JlT3V0bGllcnM6bn0pfSl9KSksYmsoVkUsKCh0LHt4QXhpc1R5cGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse3hBeGlzVHlwZTplfSl9KSkpLGJrKGpFLCgodCx7c21vb3RoaW5nOmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtzY2FsYXJTbW9vdGhpbmc6ZX0pfSkpKSxiayhVRSwodD0+e3ZhciBlO2NvbnN0IG49IShudWxsIT09KGU9dC5zZXR0aW5nT3ZlcnJpZGVzLnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpJiZ2b2lkIDAhPT1lP2U6dC5zZXR0aW5ncy5zY2FsYXJQYXJ0aXRpb25Ob25Nb25vdG9uaWNYKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtzY2FsYXJQYXJ0aXRpb25Ob25Nb25vdG9uaWNYOm59KX0pfSkpLGJrKEdFLCgodCx7YnJpZ2h0bmVzc0luTWlsbGk6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse2ltYWdlQnJpZ2h0bmVzc0luTWlsbGk6ZX0pfSkpKSxiayhXRSwoKHQse2NvbnRyYXN0SW5NaWxsaTplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VDb250cmFzdEluTWlsbGk6ZX0pfSkpKSxiayhZRSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZUJyaWdodG5lc3NJbk1pbGxpOnZvaWQgMH0pfSkpKSxiayhxRSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdPdmVycmlkZXMpLHtpbWFnZUNvbnRyYXN0SW5NaWxsaTp2b2lkIDB9KX0pKSksYmsoWkUsKHQ9Pnt2YXIgZTtjb25zdCBuPSEobnVsbCE9PShlPXQuc2V0dGluZ092ZXJyaWRlcy5pbWFnZVNob3dBY3R1YWxTaXplKSYmdm9pZCAwIT09ZT9lOnQuc2V0dGluZ3MuaW1hZ2VTaG93QWN0dWFsU2l6ZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VTaG93QWN0dWFsU2l6ZTpufSl9KX0pKSxiayhYRSwoKHQse2hpc3RvZ3JhbU1vZGU6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ092ZXJyaWRlcykse2hpc3RvZ3JhbU1vZGU6ZX0pfSkpKSxiayhLRSwoKHQse3JlcXVlc3RzOmV9KT0+e2lmKCFlLmxlbmd0aClyZXR1cm4gdDtjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSk7Zm9yKGNvbnN0IG8gb2YgZSl7Y29uc3R7cGx1Z2luOmUsdGFnOmksc2FtcGxlOmF9PW87bltlXT1vVChuLGUsaSxhKTtjb25zdCByPW5UKG4sZSxpLGEpLHM9T0Eobyk/W28ucnVuSWRdOnJUKHQudGFnTWV0YWRhdGEsZSxpLGEpO3IucnVuVG9Mb2FkU3RhdGU9YVQoeUUuTE9BRElORyxzLHIucnVuVG9Mb2FkU3RhdGUpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RpbWVTZXJpZXNEYXRhOm59KX0pKSxiayhKRSwoKHQse3JlcXVlc3Q6ZX0pPT57Y29uc3Qgbj1PYmplY3QuYXNzaWduKHt9LHQudGltZVNlcmllc0RhdGEpLHtwbHVnaW46byx0YWc6aSxzYW1wbGU6YX09ZTtuW29dPW9UKG4sbyxpLGEpO2NvbnN0IHI9blQobixvLGksYSkscz1PQShlKT9bZS5ydW5JZF06clQodC50YWdNZXRhZGF0YSxvLGksYSk7cmV0dXJuIHIucnVuVG9Mb2FkU3RhdGU9YVQoeUUuRkFJTEVELHMsci5ydW5Ub0xvYWRTdGF0ZSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0aW1lU2VyaWVzRGF0YTpufSl9KSksYmsoUUUsKCh0LHtyZXNwb25zZTplfSk9Pntjb25zdCBuPU9iamVjdC5hc3NpZ24oe30sdC5zdGVwTWluTWF4KSxvPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjppLHRhZzphLHJ1bklkOnIsc2FtcGxlOnN9PWU7b1tpXT1vVChvLGksYSxzKTtjb25zdCBsPW5UKG8saSxhLHMpO2lmKHdBKGUpKXtjb25zdCBlPXI/W3JdOnJUKHQudGFnTWV0YWRhdGEsaSxhLHMpO2wucnVuVG9Mb2FkU3RhdGU9YVQoeUUuRkFJTEVELGUsbC5ydW5Ub0xvYWRTdGF0ZSl9ZWxzZXtjb25zdCB0PWUucnVuVG9TZXJpZXM7bC5ydW5Ub1Nlcmllcz1PYmplY3QuYXNzaWduKHt9LGwucnVuVG9TZXJpZXMpLGwucnVuVG9Mb2FkU3RhdGU9T2JqZWN0LmFzc2lnbih7fSxsLnJ1blRvTG9hZFN0YXRlKTtmb3IoY29uc3QgZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkpe2wucnVuVG9TZXJpZXNbZV09dFtlXSxsLnJ1blRvTG9hZFN0YXRlW2VdPXlFLkxPQURFRDtmb3IoY29uc3QgbyBvZiB0W2VdKW4ubWluPU1hdGgubWluKG4ubWluLG8uc3RlcCksbi5tYXg9TWF0aC5tYXgobi5tYXgsby5zdGVwKX19cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6byxjYXJkU3RlcEluZGV4OiRKKHQuY2FyZE1ldGFkYXRhTWFwLHQuY2FyZFN0ZXBJbmRleCxvLHQudGltZVNlcmllc0RhdGEpLHN0ZXBNaW5NYXg6bn0pfSkpLGJrKHRSLCgodCx7Y2FyZElkOmUsc3RlcEluZGV4Om59KT0+e2NvbnN0IG89UUooZSx0LmNhcmRNZXRhZGF0YU1hcCx0LnRpbWVTZXJpZXNEYXRhKTtsZXQgaT1uO3JldHVybiBudWxsPT09bz9pPW51bGw6bj5vJiYoaT1vKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2NhcmRTdGVwSW5kZXg6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuY2FyZFN0ZXBJbmRleCkse1tlXTppfSl9KX0pKSxiayhuUiwoKHQse3RhZ0dyb3VwOmV9KT0+e2NvbnN0IG49bmV3IE1hcCh0LnRhZ0dyb3VwRXhwYW5kZWQpO3JldHVybiBuLnNldChlLCFuLmdldChlKSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt0YWdHcm91cEV4cGFuZGVkOm59KX0pKSxiaygkRSwoKHQse2VudGVyZWRDYXJkczplLGV4aXRlZENhcmRzOm59KT0+e2lmKCFlLmxlbmd0aCYmIW4ubGVuZ3RoKXJldHVybiB0O2NvbnN0IG89bmV3IE1hcCh0LnZpc2libGVDYXJkTWFwKTtyZXR1cm4gZS5mb3JFYWNoKCgoe2VsZW1lbnRJZDp0LGNhcmRJZDplfSk9Pnt2YXIgbjtjb25zdCBpPW51bGwhPT0obj1vLmdldCh0KSkmJnZvaWQgMCE9PW4/bjpudWxsO2lmKG51bGwhPT1pJiZpIT09ZSl0aHJvdyBuZXcgRXJyb3IoIkEgRE9NIGVsZW1lbnQgY2Fubm90IGJlIHJldXNlZCBmb3IgbW9yZSB0aGFuIDEgdW5pcXVlIGNhcmQgbWV0YWRhdGEiKTtvLnNldCh0LGUpfSkpLG4uZm9yRWFjaCgoKHtlbGVtZW50SWQ6dH0pPT57by5kZWxldGUodCl9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt2aXNpYmxlQ2FyZE1hcDpvfSl9KSksYmsob1IsKCh0LHtjYXJkSWQ6ZX0pPT57Y29uc3Qgbj10LnBpbm5lZENhcmRUb09yaWdpbmFsLmhhcyhlKSxvPSFuJiYhdC5jYXJkVG9QaW5uZWRDb3B5LmhhcyhlKTtpZihvJiYhY1QodCkpcmV0dXJuIHQ7bGV0IGk9bmV3IE1hcCh0LmNhcmRUb1Bpbm5lZENvcHkpLGE9bmV3IE1hcCh0LnBpbm5lZENhcmRUb09yaWdpbmFsKSxyPU9iamVjdC5hc3NpZ24oe30sdC5jYXJkTWV0YWRhdGFNYXApLHM9T2JqZWN0LmFzc2lnbih7fSx0LmNhcmRTdGVwSW5kZXgpO2lmKG4pe2NvbnN0IG49dC5waW5uZWRDYXJkVG9PcmlnaW5hbC5nZXQoZSk7aS5kZWxldGUobiksYS5kZWxldGUoZSksZGVsZXRlIHJbZV0sZGVsZXRlIHNbZV19ZWxzZSBpZihvKXtjb25zdCB0PWxUKGUsaSxhLHMscik7aT10LmNhcmRUb1Bpbm5lZENvcHksYT10LnBpbm5lZENhcmRUb09yaWdpbmFsLHI9dC5jYXJkTWV0YWRhdGFNYXAscz10LmNhcmRTdGVwSW5kZXh9ZWxzZXtjb25zdCBuPXQuY2FyZFRvUGlubmVkQ29weS5nZXQoZSk7aS5kZWxldGUoZSksYS5kZWxldGUobiksZGVsZXRlIHJbbl0sZGVsZXRlIHNbbl19cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y2FyZE1ldGFkYXRhTWFwOnIsY2FyZFN0ZXBJbmRleDpzLGNhcmRUb1Bpbm5lZENvcHk6aSxwaW5uZWRDYXJkVG9PcmlnaW5hbDphfSl9KSksYmsobFIsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VsZWN0VGltZUVuYWJsZWQ6IXQuc2VsZWN0VGltZUVuYWJsZWR9KSkpLGJrKHJSLCgodCxlKT0+e3ZhciBuLG8saSxhO2NvbnN0IHI9ZS5zdGFydFN0ZXA7bGV0IHM9bnVsbCE9PShhPW51bGwhPT0obj1lLmVuZFN0ZXApJiZ2b2lkIDAhPT1uP246bnVsbD09PShpPW51bGw9PT0obz10LnNlbGVjdGVkVGltZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uZW5kKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGVwKSYmdm9pZCAwIT09YT9hOnQuc3RlcE1pbk1heC5tYXg7cmV0dXJuIHI+cyYmKHM9ciksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RUaW1lRW5hYmxlZDohMCxzZWxlY3RlZFRpbWU6e3N0YXJ0OntzdGVwOnJ9LGVuZDp7c3RlcDpzfX19KX0pKSxiayhjUiwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt1c2VSYW5nZVNlbGVjdFRpbWU6IXQudXNlUmFuZ2VTZWxlY3RUaW1lfSkpKSxiayhzUiwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZFRpbWU6bnVsbH0pKSksYmsoaVIsKCh0LHtwbHVnaW46ZX0pPT57bGV0IG49bmV3IFNldCh0LmZpbHRlcmVkUGx1Z2luVHlwZXMpO3JldHVybiBuLmhhcyhlKT9uLmRlbGV0ZShlKTpuLmFkZChlKSxPYmplY3QudmFsdWVzKGhBKS5ldmVyeSgodD0+bi5oYXModCkpKSYmKG49bmV3IFNldCksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJlZFBsdWdpblR5cGVzOm59KX0pKSxiayhhUiwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmaWx0ZXJlZFBsdWdpblR5cGVzOm5ldyBTZXR9KSkpLGJrKGRSLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Byb21vdGVUaW1lU2VyaWVzOiExfSkpKSxiayh6RSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpc1NldHRpbmdzUGFuZU9wZW46IXQuaXNTZXR0aW5nc1BhbmVPcGVufSkpKSxiayhORSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtpc1NldHRpbmdzUGFuZU9wZW46ITF9KSkpKTtmdW5jdGlvbiByUSh0LGUpe3JldHVybiBCTihhUSxvUSkodCxlKX1mdW5jdGlvbiBzUSh0LGUpe3JldHVybnt0YWdEZXNjcmlwdGlvbnM6dFtlXS50YWdEZXNjcmlwdGlvbnMsdGFnVG9SdW5zOmxRKHRbZV0ucnVuVGFnSW5mbyl9fWZ1bmN0aW9uIGxRKHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdClmb3IoY29uc3QgbyBvZiB0W25dKWVbb109Wy4uLmVbb118fFtdLG5dO3JldHVybiBlfWNvbnN0IGNRPVp3KGdULHlULCgodCxlLG4pPT5lP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7bG9hZFN0YXRlOnQsaWQ6bn0pOm51bGwpKSxkUT1KUCgiW01ldHJpY3MgRWZmZWN0c10gSW5pdCIpO2NsYXNzIHBRe2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1uLHRoaXMuZGFzaGJvYXJkU2hvd25XaXRob3V0RGF0YSQ9dGhpcy5hY3Rpb25zJC5waXBlKERrKGRRLF9FLFBFLGRTKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChNUiksdGhpcy5zdG9yZS5zZWxlY3QodVQpKSxjZSgoKFssdCxlXSk9PnQ9PT1fQSYmZS5zdGF0ZT09PXlFLk5PVF9MT0FERUQpKSksdGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJD10aGlzLmFjdGlvbnMkLnBpcGUoRGsoeEUsdkUpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KE1SKSksY2UoKChbLHRdKT0+dD09PV9BKSkpLHRoaXMubG9hZFRhZ01ldGFkYXRhJD1yZSh0aGlzLmRhc2hib2FyZFNob3duV2l0aG91dERhdGEkLHRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQpLnBpcGUoVmUodGhpcy5zdG9yZS5zZWxlY3QodVQpLHRoaXMuc3RvcmUuc2VsZWN0KFRTKSksY2UoKChbLHQsZV0pPT50LnN0YXRlIT09eUUuTE9BRElORyYmbnVsbCE9PWUpKSxGZSgoKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKElFKCkpfSkpLHplKCgoWywsdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hUYWdNZXRhZGF0YSh0KS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChIRSh7dGFnTWV0YWRhdGE6dH0pKX0pKSxwZSgoKCk9Pih0aGlzLnN0b3JlLmRpc3BhdGNoKEZFKCkpLEV0KG51bGwpKSkpKSkpKSx0aGlzLnZpc2libGVDYXJkc1dpdGhvdXREYXRhQ2hhbmdlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKERrKCRFKSx6ZSgoKCk9PnRoaXMuZ2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCkucGlwZShiZSgxKSkpKSxJdCgodD0+dC5maWx0ZXIoKHQ9PnQubG9hZFN0YXRlPT09eUUuTk9UX0xPQURFRCkpKSkpLHRoaXMudmlzaWJsZUNhcmRzUmVsb2FkZWQkPXRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQucGlwZSh6ZSgoKCk9PnRoaXMuZ2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCkucGlwZShiZSgxKSkpKSxJdCgodD0+dC5maWx0ZXIoKHQ9PnQubG9hZFN0YXRlIT09eUUuTE9BRElORykpKSkpLHRoaXMubG9hZFRpbWVTZXJpZXMkPXJlKHRoaXMudmlzaWJsZUNhcmRzV2l0aG91dERhdGFDaGFuZ2VkJCx0aGlzLnZpc2libGVDYXJkc1JlbG9hZGVkJCkucGlwZShjZSgodD0+dC5sZW5ndGg+MCkpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KFRTKS5waXBlKGNlKCh0PT5udWxsIT09dCkpKSksWnQoKChbdCxlXSk9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzRm9yQ2FyZHModCxlKSkpKSx0aGlzLmRhdGFFZmZlY3RzJD1NaygoKCk9PnJlKHRoaXMubG9hZFRhZ01ldGFkYXRhJCx0aGlzLmxvYWRUaW1lU2VyaWVzJCkpLHtkaXNwYXRjaDohMX0pfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIGRRKCl9Z2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCl7cmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KENUKS5waXBlKHplKCh0PT50LnNpemU/JHQoWy4uLnRdLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoY1EsdCkucGlwZShiZSgxKSkpKSk6RXQoW10pKSksSXQoKHQ9PnQuZmlsdGVyKEJvb2xlYW4pKSkpfWZldGNoVGltZVNlcmllcyh0KXtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoVGltZVNlcmllcyhbdF0pLnBpcGUoRmUoKHQ9Pntjb25zdCBlPXQuZmlsdGVyKHdBKTtlLmxlbmd0aCYmY29uc29sZS5lcnJvcigiVGltZSBzZXJpZXMgcmVzcG9uc2UgY29udGFpbmVkIGVycm9yczoiLGUpLHRoaXMuc3RvcmUuZGlzcGF0Y2goUUUoe3Jlc3BvbnNlOnRbMF19KSl9KSkscGUoKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChKRSh7cmVxdWVzdDp0fSkpLEV0KG51bGwpKSkpKX1mZXRjaFRpbWVTZXJpZXNGb3JDYXJkcyh0LGUpe3JldHVybiBFdCh0Lm1hcCgodD0+e2NvbnN0e3BsdWdpbjpuLHRhZzpvLHJ1bklkOmksc2FtcGxlOmF9PXQ7cmV0dXJuIHhBKG4pP3twbHVnaW46bix0YWc6byxzYW1wbGU6YSxydW5JZDppfTp7cGx1Z2luOm4sdGFnOm8sc2FtcGxlOmEsZXhwZXJpbWVudElkczplfX0pKSkucGlwZShGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goS0Uoe3JlcXVlc3RzOnR9KSl9KSksWnQoKHQ9PnJlKC4uLnQubWFwKCh0PT50aGlzLmZldGNoVGltZVNlcmllcyh0KSkpKSkpKX19cFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHBRKSh2cihTayksdnIoSXcpLHZyKFBBKSl9LHBRLsm1cHJvdj1Nbih7dG9rZW46cFEsZmFjdG9yeTpwUS7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocFEsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNrfSx7dHlwZTpJd30se3R5cGU6UEF9XX0pLG51bGwpO2NvbnN0IG1RPW5ldyBHYSgiTWV0cmljcyBTdG9yZSBDb25maWciKSx1UT1uZXcgR2EoIk1ldHJpY3MgSW5pdGlhbCBTZXR0aW5ncyBDb25maWciKTtmdW5jdGlvbiBmUSh0KXtyZXR1cm4gdD97aW5pdGlhbFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpUSkse3NldHRpbmdzOnR9KX06e2luaXRpYWxTdGF0ZTppUX19dmFyIGdROyEoZnVuY3Rpb24odCl7dFt0LkxFRlQ9MV09IkxFRlQiLHRbdC5SSUdIVD0yXT0iUklHSFQiLHRbdC5NSURETEU9NF09Ik1JRERMRSIsdFt0LkZPVVJUSD04XT0iRk9VUlRIIix0W3QuRklGVEg9MzJdPSJGSUZUSCJ9KShnUXx8KGdRPXt9KSk7bGV0IGhRPTA7ZnVuY3Rpb24gYlEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJidXR0b24iLDMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5leHBhbmRTaWRlYmFyKCl9KSksVG0oMSwibWF0LWljb24iLDQpLEFtKCl9fWZ1bmN0aW9uIHlRKHQsZSl7aWYoMSZ0JiYoUm0oMCwibmF2Iiw1KSxBaCgxLCJhc3luYyIpLFhtKDIsMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7ZHUoIndpZHRoIixUaCgxLDQsdC53aWR0aCQpLCIlIikoIm1pbi13aWR0aCIsdC5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFgsInB4Iil9fWZ1bmN0aW9uIF9RKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2Iiw2KSxWbSgibW91c2Vkb3duIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLnJlc2l6ZUdyYWJiZWQoKX0pKSxUbSgxLCJtYXQtaWNvbiIsNyksQW0oKX19Y29uc3QgQ1E9W1tbIiIsIm1haW4iLCIiXV0sW1siIiwic2lkZWJhciIsIiJdXV07Y2xhc3MgTVF7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN0b3JlPXQsdGhpcy53aWR0aCQ9dGhpcy5zdG9yZS5zZWxlY3QoT1IpLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSSx0aGlzLnJlc2l6aW5nPSExLHRoaXMuTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYPTc1LG9lKGUubmF0aXZlRWxlbWVudCwibW91c2Vtb3ZlIikucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLGNlKCgoKT0+dGhpcy5yZXNpemluZykpKS5zdWJzY3JpYmUoKHQ9PntpZigodC5idXR0b25zJmdRLkxFRlQpIT09Z1EuTEVGVClyZXR1cm4gdm9pZCh0aGlzLnJlc2l6aW5nPSExKTt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3R7d2lkdGg6bn09ZS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc3RvcmUuZGlzcGF0Y2goVEUoe3dpZHRoSW5QZXJjZW50OnQuY2xpZW50WDw9dGhpcy5NSU5JTVVNX1NJREVCQVJfV0lEVEhfSU5fUFg/MDp0LmNsaWVudFgvbioxMDB9KSl9KSksb2UoZS5uYXRpdmVFbGVtZW50LCJtb3VzZXVwIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucmVzaXppbmc9ITF9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfWV4cGFuZFNpZGViYXIoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFRFKHt3aWR0aEluUGVyY2VudDoyMH0pKX19dmFyIHZRO01RLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNUSkoU20oSXcpLFNtKGhnKSl9LE1RLsm1Y21wPXRvKHt0eXBlOk1RLHNlbGVjdG9yczpbWyJ0Yi1kYXNoYm9hcmQtbGF5b3V0Il1dLG5nQ29udGVudFNlbGVjdG9yczpbIlttYWluXSIsIltzaWRlYmFyXSJdLGRlY2xzOjcsdmFyczo5LGNvbnN0czpbWyJjbGFzcyIsImV4cGFuZCIsMywiY2xpY2siLDQsIm5nSWYiXSxbImNsYXNzIiwic2lkZWJhciIsMywid2lkdGgiLCJtaW5XaWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJyZXNpemVyIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbMSwiZXhwYW5kIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImV4cGFuZF9tb3JlXzI0cHgiXSxbMSwic2lkZWJhciJdLFsxLCJyZXNpemVyIiwzLCJtb3VzZWRvd24iXSxbInN2Z0ljb24iLCJkcmFnX2luZGljYXRvcl8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabShDUSksUXAoMCxiUSwyLDAsImJ1dHRvbiIsMCksQWgoMSwiYXN5bmMiKSxRcCgyLHlRLDMsNiwibmF2IiwxKSxBaCgzLCJhc3luYyIpLFFwKDQsX1EsMiwwLCJkaXYiLDIpLEFoKDUsImFzeW5jIiksWG0oNikpLDImZSYmKERtKCJuZ0lmIiwwPT09VGgoMSwzLG4ud2lkdGgkKSkscmMoMiksRG0oIm5nSWYiLFRoKDMsNSxuLndpZHRoJCk+MCkscmMoMiksRG0oIm5nSWYiLFRoKDUsNyxuLndpZHRoJCk+MCkpfSxkaXJlY3RpdmVzOltkTSxEV10scGlwZXM6W3dNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjgwdnd9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdLCAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ViZWJlYjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleDowIDAgMjBweDtqdXN0aWZ5LXNlbGY6c3RyZXRjaDt3aWR0aDoyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzU1NX0ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MCAxcHg7Y3Vyc29yOmV3LXJlc2l6ZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1zZWxmOnN0cmV0Y2h9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5leHBhbmRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MCAxcHggMCAwO2NvbG9yOmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktc2VsZjpzdHJldGNoO3BhZGRpbmc6MH0uZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE1RLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRiLWRhc2hib2FyZC1sYXlvdXQiLHRlbXBsYXRlOidcbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj0iKHdpZHRoJCB8IGFzeW5jKSA9PT0gMCJcbiAgICAgIGNsYXNzPSJleHBhbmQiXG4gICAgICAoY2xpY2spPSJleHBhbmRTaWRlYmFyKCkiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249ImV4cGFuZF9tb3JlXzI0cHgiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPG5hdlxuICAgICAgKm5nSWY9Iih3aWR0aCQgfCBhc3luYykgPiAwIlxuICAgICAgY2xhc3M9InNpZGViYXIiXG4gICAgICBbc3R5bGUud2lkdGguJV09IndpZHRoJCB8IGFzeW5jIlxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT0iTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW3NpZGViYXJdIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uYXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9Iih3aWR0aCQgfCBhc3luYykgPiAwIlxuICAgICAgY2xhc3M9InJlc2l6ZXIiXG4gICAgICAobW91c2Vkb3duKT0icmVzaXplR3JhYmJlZCgpIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPSJkcmFnX2luZGljYXRvcl8yNHB4Ij48L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21haW5dIj48L25nLWNvbnRlbnQ+XG4gICcsc3R5bGVVcmxzOlsibGF5b3V0X2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9LHt0eXBlOmhnfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dC5DSEVDS0JPWD0iY2hlY2tib3giLHQuUlVOX05BTUU9InJ1bl9uYW1lIix0LkVYUEVSSU1FTlRfTkFNRT0iZXhwZXJpbWVudF9uYW1lIix0LlJVTl9DT0xPUj0icnVuX2NvbG9yIn0pKHZRfHwodlE9e30pKTtjb25zdCB4UT1LdyhUUiksT1E9WncoeFEsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLmhwYXJhbS5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIHRBKG4pfSkpLFBRPVp3KE9RLHhRLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT0kUihuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5ocGFyYW1zKSYmdm9pZCAwIT09bz9vOltdXSl9KSksd1E9WncoeFEsKCh0LGUpPT57Y29uc3Qgbj1bXTtmb3IoY29uc3QgbyBvZiBlKXQuc3BlY3Nbb10mJm4ucHVzaCh0LnNwZWNzW29dLm1ldHJpYy5kZWZhdWx0RmlsdGVycyk7cmV0dXJuIGVBKG4pfSkpLGtRPVp3KHdRLHhRLCgodCxlLG4pPT57dmFyIG87Y29uc3QgaT0kUihuKSxhPWUuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4udCwuLi5udWxsIT09KG89bnVsbD09YT92b2lkIDA6YS5tZXRyaWNzKSYmdm9pZCAwIT09bz9vOltdXSl9KSksU1E9WncoeFEsKCh0LGUpPT4oZnVuY3Rpb24gbiguLi50KXtjb25zdCBlPW5ldyBNYXAsbj1uZXcgTWFwLG89bmV3IE1hcCxpPW5ldyBNYXAsYT1bXTtmb3IoY29uc3QgciBvZiB0KXtmb3IoY29uc3QgdCBvZiByLmhwYXJhbXMpaWYobi5oYXModC5uYW1lKXx8bi5zZXQodC5uYW1lLG5ldyBTZXQpLG4uZ2V0KHQubmFtZSkuYWRkKHQuZGlzcGxheU5hbWUpLGUuaGFzKHQubmFtZSkpe2NvbnN0IG49ZS5nZXQodC5uYW1lKSxvPXQ7aWYobi50eXBlIT09by50eXBlJiZhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCB0eXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi50eXBlfSB2cy4gJHtvLnR5cGV9YCksbi5kb21haW4udHlwZT09PVpSLklOVEVSVkFMJiZvLmRvbWFpbi50eXBlPT09WlIuSU5URVJWQUwpbi5kb21haW4ubWluVmFsdWU9PT1vLmRvbWFpbi5taW5WYWx1ZSYmbi5kb21haW4ubWF4VmFsdWU9PT1vLmRvbWFpbi5tYXhWYWx1ZXx8YS5wdXNoKGBIcGFyYW0sICR7by5uYW1lfSwgZG9tYWlucyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi5kb21haW59IHZzLiAke28uZG9tYWlufWApO2Vsc2UgaWYobi5kb21haW4udHlwZT09PVpSLkRJU0NSRVRFJiZvLmRvbWFpbi50eXBlPT09WlIuRElTQ1JFVEUpe2NvbnN0IHQ9bmV3IFNldChbLi4ubi5kb21haW4udmFsdWVzLC4uLm8uZG9tYWluLnZhbHVlc10pO24uZG9tYWluLnZhbHVlcy5sZW5ndGg9PT1vLmRvbWFpbi52YWx1ZXMubGVuZ3RoJiZuLmRvbWFpbi52YWx1ZXMubGVuZ3RoPT09dC5zaXplfHxhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBhLnB1c2goYEhwYXJhbSwgJHtvLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtuLmRvbWFpbn0gdnMuICR7by5kb21haW59YCl9ZWxzZSBlLnNldCh0Lm5hbWUsT2JqZWN0LmFzc2lnbih7fSx0KSk7Zm9yKGNvbnN0IHQgb2Ygci5tZXRyaWNzKWlmKGkuaGFzKHQudGFnKXx8aS5zZXQodC50YWcsbmV3IFNldCksaS5nZXQodC50YWcpLmFkZCh0LmRpc3BsYXlOYW1lKSxvLmhhcyh0LnRhZykpe2NvbnN0IGU9by5nZXQodC50YWcpLG49dDtlLmRhdGFzZXRUeXBlIT09bi5kYXRhc2V0VHlwZSYmYS5wdXNoKGBNZXRyaWMsICR7bi50YWd9LCBkYXRhc2V0VHlwZXMgaGF2ZSB0byBtYXRjaC4gR290OiAke2UuZGF0YXNldFR5cGV9IHZzLiAke24uZGF0YXNldFR5cGV9YCl9ZWxzZSBvLnNldCh0LnRhZyxPYmplY3QuYXNzaWduKHt9LHQpKX1pZihhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFZhbGlkYXRpb24gZXJyb3I6XG4ke2Euam9pbigiXG4iKX1gKTtyZXR1cm57aHBhcmFtczpbLi4uZV0ubWFwKCgoW3QsZV0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2Rpc3BsYXlOYW1lOlsuLi5uLmdldCh0KV0uam9pbigiIG9yICIpfSkpKSxtZXRyaWNzOlsuLi5vXS5tYXAoKChbdCxlXSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7ZGlzcGxheU5hbWU6Wy4uLmkuZ2V0KHQpXS5qb2luKCIgb3IgIil9KSkpfX0pKC4uLmUuZXhwZXJpbWVudElkcy5tYXAoKGU9Pntjb25zdCBuPXQuc3BlY3NbZV07cmV0dXJuIG4/e2hwYXJhbXM6bi5ocGFyYW0uc3BlY3MsbWV0cmljczpuLm1ldHJpYy5zcGVjc306bnVsbH0pKS5maWx0ZXIoQm9vbGVhbikpKSksRFE9e3Rvb2x0aXBTdGF0ZTpueCgic3RhdGUiLFtyeCgiaW5pdGlhbCwgdm9pZCwgaGlkZGVuIixheCh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMCkifSkpLHJ4KCJ2aXNpYmxlIixheCh7dHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSksbHgoIiogPT4gdmlzaWJsZSIsb3goIjIwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIixzeChbYXgoe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDApIixvZmZzZXQ6MH0pLGF4KHtvcGFjaXR5Oi41LHRyYW5zZm9ybToic2NhbGUoMC45OSkiLG9mZnNldDouNX0pLGF4KHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSIsb2Zmc2V0OjF9KV0pKSksbHgoIiogPT4gaGlkZGVuIixveCgiMTAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLGF4KHtvcGFjaXR5OjB9KSkpXSl9LEVRPU56KHtwYXNzaXZlOiEwfSk7ZnVuY3Rpb24gUlEodCl7cmV0dXJuIEVycm9yKGBUb29sdGlwIHBvc2l0aW9uICIke3R9IiBpcyBpbnZhbGlkLmApfWNvbnN0IEFRPW5ldyBHYSgibWF0LXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5IiksVFE9e3Byb3ZpZGU6QVEsZGVwczpbcExdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gTlEodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtzY3JvbGxUaHJvdHRsZToyMH0pfX0selE9bmV3IEdhKCJtYXQtdG9vbHRpcC1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIElRKCl7cmV0dXJue3Nob3dEZWxheTowLGhpZGVEZWxheTowLHRvdWNoZW5kSGlkZURlbGF5OjE1MDB9fX0pO2NsYXNzIEhRe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCxwKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX3Njcm9sbERpc3BhdGNoZXI9bix0aGlzLl92aWV3Q29udGFpbmVyUmVmPW8sdGhpcy5fbmdab25lPWksdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9hcmlhRGVzY3JpYmVyPXIsdGhpcy5fZm9jdXNNb25pdG9yPXMsdGhpcy5fZGlyPWMsdGhpcy5fZGVmYXVsdE9wdGlvbnM9ZCx0aGlzLl9wb3NpdGlvbj0iYmVsb3ciLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX3ZpZXdJbml0aWFsaXplZD0hMSx0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSExLHRoaXMuX3ZpZXdwb3J0TWFyZ2luPTgsdGhpcy5fY3NzQ2xhc3NQcmVmaXg9Im1hdCIsdGhpcy5zaG93RGVsYXk9dGhpcy5fZGVmYXVsdE9wdGlvbnMuc2hvd0RlbGF5LHRoaXMuaGlkZURlbGF5PXRoaXMuX2RlZmF1bHRPcHRpb25zLmhpZGVEZWxheSx0aGlzLnRvdWNoR2VzdHVyZXM9ImF1dG8iLHRoaXMuX21lc3NhZ2U9IiIsdGhpcy5fcGFzc2l2ZUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEksdGhpcy5faGFuZGxlS2V5ZG93bj10PT57dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpJiZ0LmtleUNvZGU9PT11eiYmIWJ6KHQpJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpKX0sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bCx0aGlzLl9kb2N1bWVudD1wLGQmJihkLnBvc2l0aW9uJiYodGhpcy5wb3NpdGlvbj1kLnBvc2l0aW9uKSxkLnRvdWNoR2VzdHVyZXMmJih0aGlzLnRvdWNoR2VzdHVyZXM9ZC50b3VjaEdlc3R1cmVzKSksYy5jaGFuZ2UucGlwZShJZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fdXBkYXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVJlZil9KSksaS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93bil9KSl9Z2V0IHBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufXNldCBwb3NpdGlvbih0KXt2YXIgZTt0IT09dGhpcy5fcG9zaXRpb24mJih0aGlzLl9wb3NpdGlvbj10LHRoaXMuX292ZXJsYXlSZWYmJih0aGlzLl91cGRhdGVQb3NpdGlvbih0aGlzLl9vdmVybGF5UmVmKSxudWxsPT09KGU9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09ZXx8ZS5zaG93KDApLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9eXoodCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5oaWRlKDApOnRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKX1nZXQgbWVzc2FnZSgpe3JldHVybiB0aGlzLl9tZXNzYWdlfXNldCBtZXNzYWdlKHQpe3RoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHRoaXMuX21lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9tZXNzYWdlPW51bGwhPXQ/U3RyaW5nKHQpLnRyaW0oKToiIiwhdGhpcy5fbWVzc2FnZSYmdGhpcy5faXNUb29sdGlwVmlzaWJsZSgpP3RoaXMuaGlkZSgwKToodGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fYXJpYURlc2NyaWJlci5kZXNjcmliZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5tZXNzYWdlLCJ0b29sdGlwIil9KSl9KSkpfWdldCB0b29sdGlwQ2xhc3MoKXtyZXR1cm4gdGhpcy5fdG9vbHRpcENsYXNzfXNldCB0b29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcENsYXNzPXQsdGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl92aWV3SW5pdGlhbGl6ZWQ9ITAsdGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpLHRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dD8ia2V5Ym9hcmQiPT09dCYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuc2hvdygpKSk6dGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpfSkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fdG9vbHRpcEluc3RhbmNlPW51bGwpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93biksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5mb3JFYWNoKCgoW2Usbl0pPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixFUSl9KSksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGg9MCx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odCx0aGlzLm1lc3NhZ2UsInRvb2x0aXAiKSx0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodCl9c2hvdyh0PXRoaXMuc2hvd0RlbGF5KXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy5tZXNzYWdlfHx0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX3Nob3dUaW1lb3V0SWQmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX2hpZGVUaW1lb3V0SWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fY3JlYXRlT3ZlcmxheSgpO3RoaXMuX2RldGFjaCgpLHRoaXMuX3BvcnRhbD10aGlzLl9wb3J0YWx8fG5ldyB2Rih0aGlzLl90b29sdGlwQ29tcG9uZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1lLmF0dGFjaCh0aGlzLl9wb3J0YWwpLmluc3RhbmNlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5hZnRlckhpZGRlbigpLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZGV0YWNoKCkpKSx0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKSx0aGlzLl91cGRhdGVUb29sdGlwTWVzc2FnZSgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5zaG93KHQpfWhpZGUodD10aGlzLmhpZGVEZWxheSl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaGlkZSh0KX10b2dnbGUoKXt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9X2lzVG9vbHRpcFZpc2libGUoKXtyZXR1cm4hIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpfV9jcmVhdGVPdmVybGF5KCl7aWYodGhpcy5fb3ZlcmxheVJlZilyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtjb25zdCB0PXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuX2VsZW1lbnRSZWYpLGU9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZWxlbWVudFJlZikud2l0aFRyYW5zZm9ybU9yaWdpbk9uKGAuJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcGApLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhWaWV3cG9ydE1hcmdpbih0aGlzLl92aWV3cG9ydE1hcmdpbikud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpO3JldHVybiBlLnBvc2l0aW9uQ2hhbmdlcy5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3VwZGF0ZUN1cnJlbnRQb3NpdGlvbkNsYXNzKHQuY29ubmVjdGlvblBhaXIpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdC5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXMuaXNPdmVybGF5Q2xpcHBlZCYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dGhpcy5oaWRlKDApKSl9KSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OmUscGFuZWxDbGFzczpgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tdG9vbHRpcC1wYW5lbGAsc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKX0pLHRoaXMuX3VwZGF0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlSZWYpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2RldGFjaCgpKSksdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3ZhciB0O3JldHVybiBudWxsPT09KHQ9dGhpcy5fdG9vbHRpcEluc3RhbmNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5faGFuZGxlQm9keUludGVyYWN0aW9uKCl9KSksdGhpcy5fb3ZlcmxheVJlZn1fZGV0YWNoKCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1udWxsfV91cGRhdGVQb3NpdGlvbih0KXtjb25zdCBlPXQuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSxuPXRoaXMuX2dldE9yaWdpbigpLG89dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCk7ZS53aXRoUG9zaXRpb25zKFt0aGlzLl9hZGRPZmZzZXQoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ubWFpbiksby5tYWluKSksdGhpcy5fYWRkT2Zmc2V0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZhbGxiYWNrKSxvLmZhbGxiYWNrKSldKX1fYWRkT2Zmc2V0KHQpe3JldHVybiB0fV9nZXRPcmlnaW4oKXtjb25zdCB0PSF0aGlzLl9kaXJ8fCJsdHIiPT10aGlzLl9kaXIudmFsdWUsZT10aGlzLnBvc2l0aW9uO2xldCBuO2lmKCJhYm92ZSI9PWV8fCJiZWxvdyI9PWUpbj17b3JpZ2luWDoiY2VudGVyIixvcmlnaW5ZOiJhYm92ZSI9PWU/InRvcCI6ImJvdHRvbSJ9O2Vsc2UgaWYoImJlZm9yZSI9PWV8fCJsZWZ0Ij09ZSYmdHx8InJpZ2h0Ij09ZSYmIXQpbj17b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoImFmdGVyIj09ZXx8InJpZ2h0Ij09ZSYmdHx8ImxlZnQiPT1lJiYhdCluPXtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyBSUShlKTtjb25zdHt4Om8seTppfT10aGlzLl9pbnZlcnRQb3NpdGlvbihuLm9yaWdpblgsbi5vcmlnaW5ZKTtyZXR1cm57bWFpbjpuLGZhbGxiYWNrOntvcmlnaW5YOm8sb3JpZ2luWTppfX19X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9IXRoaXMuX2Rpcnx8Imx0ciI9PXRoaXMuX2Rpci52YWx1ZSxlPXRoaXMucG9zaXRpb247bGV0IG47aWYoImFib3ZlIj09ZSluPXtvdmVybGF5WDoiY2VudGVyIixvdmVybGF5WToiYm90dG9tIn07ZWxzZSBpZigiYmVsb3ciPT1lKW49e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJ0b3AifTtlbHNlIGlmKCJiZWZvcmUiPT1lfHwibGVmdCI9PWUmJnR8fCJyaWdodCI9PWUmJiF0KW49e292ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKCJhZnRlciI9PWV8fCJyaWdodCI9PWUmJnR8fCJsZWZ0Ij09ZSYmIXQpbj17b3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiY2VudGVyIn07ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IFJRKGUpO2NvbnN0e3g6byx5Oml9PXRoaXMuX2ludmVydFBvc2l0aW9uKG4ub3ZlcmxheVgsbi5vdmVybGF5WSk7cmV0dXJue21haW46bixmYWxsYmFjazp7b3ZlcmxheVg6byxvdmVybGF5WTppfX19X3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLm1lc3NhZ2U9dGhpcy5tZXNzYWdlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCksdGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShiZSgxKSxJZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpfV9zZXRUb29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLnRvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCkpfV9pbnZlcnRQb3NpdGlvbih0LGUpe3JldHVybiJhYm92ZSI9PT10aGlzLnBvc2l0aW9ufHwiYmVsb3ciPT09dGhpcy5wb3NpdGlvbj8idG9wIj09PWU/ZT0iYm90dG9tIjoiYm90dG9tIj09PWUmJihlPSJ0b3AiKToiZW5kIj09PXQ/dD0ic3RhcnQiOiJzdGFydCI9PT10JiYodD0iZW5kIikse3g6dCx5OmV9fV91cGRhdGVDdXJyZW50UG9zaXRpb25DbGFzcyh0KXtjb25zdHtvdmVybGF5WTplLG9yaWdpblg6bixvcmlnaW5ZOm99PXQ7bGV0IGk7aWYoaT0iY2VudGVyIj09PWU/dGhpcy5fZGlyJiYicnRsIj09PXRoaXMuX2Rpci52YWx1ZT8iZW5kIj09PW4/ImxlZnQiOiJyaWdodCI6InN0YXJ0Ij09PW4/ImxlZnQiOiJyaWdodCI6ImJvdHRvbSI9PT1lJiYidG9wIj09PW8/ImFib3ZlIjoiYmVsb3ciLGkhPT10aGlzLl9jdXJyZW50UG9zaXRpb24pe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZjtpZih0KXtjb25zdCBlPWAke3RoaXMuX2Nzc0NsYXNzUHJlZml4fS10b29sdGlwLXBhbmVsLWA7dC5yZW1vdmVQYW5lbENsYXNzKGUrdGhpcy5fY3VycmVudFBvc2l0aW9uKSx0LmFkZFBhbmVsQ2xhc3MoZStpKX10aGlzLl9jdXJyZW50UG9zaXRpb249aX19X3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKXshdGhpcy5fZGlzYWJsZWQmJnRoaXMubWVzc2FnZSYmdGhpcy5fdmlld0luaXRpYWxpemVkJiYhdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGgmJih0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKT90aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJtb3VzZWVudGVyIiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLHRoaXMuc2hvdygpfV0pOiJvZmYiIT09dGhpcy50b3VjaEdlc3R1cmVzJiYodGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJ0b3VjaHN0YXJ0IiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLGNsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5fdG91Y2hzdGFydFRpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuc2hvdygpKSw1MDApfV0pKSx0aGlzLl9hZGRMaXN0ZW5lcnModGhpcy5fcGFzc2l2ZUxpc3RlbmVycykpfV9zZXR1cFBvaW50ZXJFeGl0RXZlbnRzSWZOZWVkZWQoKXtpZih0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkKXJldHVybjt0aGlzLl9wb2ludGVyRXhpdEV2ZW50c0luaXRpYWxpemVkPSEwO2NvbnN0IHQ9W107aWYodGhpcy5fcGxhdGZvcm1TdXBwb3J0c01vdXNlRXZlbnRzKCkpdC5wdXNoKFsibW91c2VsZWF2ZSIsKCk9PnRoaXMuaGlkZSgpXSxbIndoZWVsIix0PT50aGlzLl93aGVlbExpc3RlbmVyKHQpXSk7ZWxzZSBpZigib2ZmIiE9PXRoaXMudG91Y2hHZXN0dXJlcyl7dGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKTtjb25zdCBlPSgpPT57Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLmhpZGUodGhpcy5fZGVmYXVsdE9wdGlvbnMudG91Y2hlbmRIaWRlRGVsYXkpfTt0LnB1c2goWyJ0b3VjaGVuZCIsZV0sWyJ0b3VjaGNhbmNlbCIsZV0pfXRoaXMuX2FkZExpc3RlbmVycyh0KSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goLi4udCl9X2FkZExpc3RlbmVycyh0KXt0LmZvckVhY2goKChbdCxlXSk9Pnt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LGUsRVEpfSkpfV9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKXtyZXR1cm4hdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fcGxhdGZvcm0uQU5EUk9JRH1fd2hlZWxMaXN0ZW5lcih0KXtpZih0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkpe2NvbnN0IGU9dGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0LmNsaWVudFgsdC5jbGllbnRZKSxuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlPT09bnx8bi5jb250YWlucyhlKXx8dGhpcy5oaWRlKCl9fV9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpe2NvbnN0IHQ9dGhpcy50b3VjaEdlc3R1cmVzO2lmKCJvZmYiIT09dCl7Y29uc3QgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj1lLnN0eWxlOygib24iPT09dHx8IklOUFVUIiE9PWUubm9kZU5hbWUmJiJURVhUQVJFQSIhPT1lLm5vZGVOYW1lKSYmKG4udXNlclNlbGVjdD1uLm1zVXNlclNlbGVjdD1uLndlYmtpdFVzZXJTZWxlY3Q9bi5Nb3pVc2VyU2VsZWN0PSJub25lIiksIm9uIiE9PXQmJmUuZHJhZ2dhYmxlfHwobi53ZWJraXRVc2VyRHJhZz0ibm9uZSIpLG4udG91Y2hBY3Rpb249Im5vbmUiLG4ud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9InRyYW5zcGFyZW50In19fUhRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIUSkoU20ocEwpLFNtKGhnKSxTbShwRiksU20oZWgpLFNtKGFfKSxTbSh3eiksU20oS3opLFNtKFNJKSxTbSh2b2lkIDApLFNtKEhJKSxTbSh2b2lkIDApLFNtKFpfKSl9LEhRLsm1ZGlyPWxvKHt0eXBlOkhRLGlucHV0czp7c2hvd0RlbGF5OlsibWF0VG9vbHRpcFNob3dEZWxheSIsInNob3dEZWxheSJdLGhpZGVEZWxheTpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiLCJoaWRlRGVsYXkiXSx0b3VjaEdlc3R1cmVzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiLCJ0b3VjaEdlc3R1cmVzIl0scG9zaXRpb246WyJtYXRUb29sdGlwUG9zaXRpb24iLCJwb3NpdGlvbiJdLGRpc2FibGVkOlsibWF0VG9vbHRpcERpc2FibGVkIiwiZGlzYWJsZWQiXSxtZXNzYWdlOlsibWF0VG9vbHRpcCIsIm1lc3NhZ2UiXSx0b29sdGlwQ2xhc3M6WyJtYXRUb29sdGlwQ2xhc3MiLCJ0b29sdGlwQ2xhc3MiXX19KSxIUS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBMfSx7dHlwZTpoZ30se3R5cGU6cEZ9LHt0eXBlOmVofSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOkt6fSx7dHlwZTpTSX0se3R5cGU6dm9pZCAwfSx7dHlwZTpISX0se3R5cGU6dm9pZCAwfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XSxIUS5wcm9wRGVjb3JhdG9ycz17cG9zaXRpb246W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwUG9zaXRpb24iXX1dLGRpc2FibGVkOlt7dHlwZTp4eSxhcmdzOlsibWF0VG9vbHRpcERpc2FibGVkIl19XSxzaG93RGVsYXk6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwU2hvd0RlbGF5Il19XSxoaWRlRGVsYXk6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTp4eSxhcmdzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiXX1dLG1lc3NhZ2U6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEhRLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpwTH0se3R5cGU6aGd9LHt0eXBlOnBGfSx7dHlwZTplaH0se3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTpLen0se3R5cGU6U0l9LHt0eXBlOnZvaWQgMH0se3R5cGU6SEl9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfV19KSx7c2hvd0RlbGF5Olt7dHlwZTp4eSxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTp4eSxhcmdzOlsibWF0VG9vbHRpcEhpZGVEZWxheSJdfV0sdG91Y2hHZXN0dXJlczpbe3R5cGU6eHksYXJnczpbIm1hdFRvb2x0aXBUb3VjaEdlc3R1cmVzIl19XSxwb3NpdGlvbjpbe3R5cGU6eHksYXJnczpbIm1hdFRvb2x0aXBQb3NpdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwRGlzYWJsZWQiXX1dLG1lc3NhZ2U6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwIl19XSx0b29sdGlwQ2xhc3M6W3t0eXBlOnh5LGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSk7Y2xhc3MgRlEgZXh0ZW5kcyBIUXtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCxjLGQscCl7c3VwZXIodCxlLG4sbyxpLGEscixzLGwsYyxkLHApLHRoaXMuX3Rvb2x0aXBDb21wb25lbnQ9QlF9fUZRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGUSkoU20ocEwpLFNtKGhnKSxTbShwRiksU20oZWgpLFNtKGFfKSxTbSh3eiksU20oS3opLFNtKFNJKSxTbShBUSksU20oSEksOCksU20oelEsOCksU20oWl8pKX0sRlEuybVkaXI9bG8oe3R5cGU6RlEsc2VsZWN0b3JzOltbIiIsIm1hdFRvb2x0aXAiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbHRpcC10cmlnZ2VyIl0sZXhwb3J0QXM6WyJtYXRUb29sdGlwIl0sZmVhdHVyZXM6W3hwXX0pLEZRLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6cEx9LHt0eXBlOmhnfSx7dHlwZTpwRn0se3R5cGU6ZWh9LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6S3p9LHt0eXBlOlNJfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbQVFdfV19LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbelFdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRlEsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRvb2x0aXBdIixleHBvcnRBczoibWF0VG9vbHRpcCIsaG9zdDp7Y2xhc3M6Im1hdC10b29sdGlwLXRyaWdnZXIifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnBMfSx7dHlwZTpoZ30se3R5cGU6cEZ9LHt0eXBlOmVofSx7dHlwZTphX30se3R5cGU6d3p9LHt0eXBlOkt6fSx7dHlwZTpTSX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0FRXX1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3pRXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpO2NsYXNzIExRe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmPXQsdGhpcy5fdmlzaWJpbGl0eT0iaW5pdGlhbCIsdGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExLHRoaXMuX29uSGlkZT1uZXcgSX1zaG93KHQpe2NsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITAsdGhpcy5fc2hvd1RpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9InZpc2libGUiLHRoaXMuX3Nob3dUaW1lb3V0SWQ9dm9pZCAwLHRoaXMuX29uU2hvdygpLHRoaXMuX21hcmtGb3JDaGVjaygpfSksdCl9aGlkZSh0KXtjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCksdGhpcy5faGlkZVRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5faGlkZVRpbWVvdXRJZD12b2lkIDAsdGhpcy5fbWFya0ZvckNoZWNrKCl9KSx0KX1hZnRlckhpZGRlbigpe3JldHVybiB0aGlzLl9vbkhpZGV9aXNWaXNpYmxlKCl7cmV0dXJuInZpc2libGUiPT09dGhpcy5fdmlzaWJpbGl0eX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dElkKSxjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXRJZCksdGhpcy5fb25IaWRlLmNvbXBsZXRlKCl9X2FuaW1hdGlvblN0YXJ0KCl7dGhpcy5fY2xvc2VPbkludGVyYWN0aW9uPSExfV9hbmltYXRpb25Eb25lKHQpe2NvbnN0IGU9dC50b1N0YXRlOyJoaWRkZW4iIT09ZXx8dGhpcy5pc1Zpc2libGUoKXx8dGhpcy5fb25IaWRlLm5leHQoKSwidmlzaWJsZSIhPT1lJiYiaGlkZGVuIiE9PWV8fCh0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITApfV9oYW5kbGVCb2R5SW50ZXJhY3Rpb24oKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb24mJnRoaXMuaGlkZSgwKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X29uU2hvdygpe319TFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExRKShTbShVZykpfSxMUS7JtWRpcj1sbyh7dHlwZTpMUX0pLExRLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VWd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKExRLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpVZ31dfSksbnVsbCk7Y2xhc3MgQlEgZXh0ZW5kcyBMUXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQpLHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1lLHRoaXMuX2lzSGFuZHNldD10aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZSgiKG1heC13aWR0aDogNTk5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSwgKG1heC13aWR0aDogOTU5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkiKX19QlEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJRKShTbShVZyksU20oUEwpKX0sQlEuybVjbXA9dG8oe3R5cGU6QlEsc2VsZWN0b3JzOltbIm1hdC10b29sdGlwLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WyJhcmlhLWhpZGRlbiIsInRydWUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZkdSgiem9vbSIsInZpc2libGUiPT09bi5fdmlzaWJpbGl0eT8xOm51bGwpfSxmZWF0dXJlczpbeHBdLGRlY2xzOjMsdmFyczo3LGNvbnN0czpbWzEsIm1hdC10b29sdGlwIiwzLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFZtKCJAc3RhdGUuc3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2FuaW1hdGlvblN0YXJ0KCl9KSkoIkBzdGF0ZS5kb25lIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fYW5pbWF0aW9uRG9uZShlKX0pKSxBaCgxLCJhc3luYyIpLGt1KDIpLEFtKCkpLDImZSl7bGV0IHQ7cHUoIm1hdC10b29sdGlwLWhhbmRzZXQiLG51bGw9PSh0PVRoKDEsNSxuLl9pc0hhbmRzZXQpKT9udWxsOnQubWF0Y2hlcyksRG0oIm5nQ2xhc3MiLG4udG9vbHRpcENsYXNzKSgiQHN0YXRlIixuLl92aXNpYmlsaXR5KSxyYygyKSxTdShuLm1lc3NhZ2UpfX0sZGlyZWN0aXZlczpbYU1dLHBpcGVzOlt3TV0sc3R5bGVzOlsiLm1hdC10b29sdGlwLXBhbmVse3BvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudH0ubWF0LXRvb2x0aXB7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDttYXJnaW46MTRweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbHRpcHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2x0aXAtaGFuZHNldHttYXJnaW46MjRweDtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjE2cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltEUS50b29sdGlwU3RhdGVdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLEJRLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VWd9LHt0eXBlOlBMfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCUSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbHRpcC1jb21wb25lbnQiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtdG9vbHRpcCJcbiAgICAgW25nQ2xhc3NdPSJ0b29sdGlwQ2xhc3MiXG4gICAgIFtjbGFzcy5tYXQtdG9vbHRpcC1oYW5kc2V0XT0iKF9pc0hhbmRzZXQgfCBhc3luYyk/Lm1hdGNoZXMiXG4gICAgIFtAc3RhdGVdPSJfdmlzaWJpbGl0eSJcbiAgICAgKEBzdGF0ZS5zdGFydCk9Il9hbmltYXRpb25TdGFydCgpIlxuICAgICAoQHN0YXRlLmRvbmUpPSJfYW5pbWF0aW9uRG9uZSgkZXZlbnQpIj57e21lc3NhZ2V9fTwvZGl2PlxuJyxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxhbmltYXRpb25zOltEUS50b29sdGlwU3RhdGVdLGhvc3Q6eyJbc3R5bGUuem9vbV0iOidfdmlzaWJpbGl0eSA9PT0gInZpc2libGUiID8gMSA6IG51bGwnLCJhcmlhLWhpZGRlbiI6InRydWUifSxzdHlsZXM6WyIubWF0LXRvb2x0aXAtcGFuZWx7cG9pbnRlci1ldmVudHM6bm9uZSAhaW1wb3J0YW50fS5tYXQtdG9vbHRpcHtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O21hcmdpbjoxNHB4O21heC13aWR0aDoyNTBweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sdGlwe291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e21hcmdpbjoyNHB4O3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MTZweH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWd9LHt0eXBlOlBMfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFZRe31mdW5jdGlvbiBqUSh0LGUpe2lmKDEmdCYmKFJtKDAsIm1hdC1vcHRpb24iLDE5KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RG0oInZhbHVlIix0KSxyYygxKSxEdSgiICIsdCwiICIpfX1mdW5jdGlvbiBVUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsIm1hdC1mb3JtLWZpZWxkIiwxNiksUm0oMSwibWF0LXNlbGVjdCIsMTcpLFZtKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5fY2hhbmdlUGFnZVNpemUobi52YWx1ZSl9KSksUXAoMixqUSwyLDIsIm1hdC1vcHRpb24iLDE4KSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJhcHBlYXJhbmNlIix0Ll9mb3JtRmllbGRBcHBlYXJhbmNlKSgiY29sb3IiLHQuY29sb3IpLHJjKDEpLERtKCJ2YWx1ZSIsdC5wYWdlU2l6ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgiYXJpYS1sYWJlbCIsdC5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCkscmMoMSksRG0oIm5nRm9yT2YiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucyl9fWZ1bmN0aW9uIEdRKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwyMCksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO3JjKDEpLFN1KHQucGFnZVNpemUpfX1mdW5jdGlvbiBXUSh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTIpLFJtKDEsImRpdiIsMTMpLGt1KDIpLEFtKCksUXAoMyxVUSwzLDYsIm1hdC1mb3JtLWZpZWxkIiwxNCksUXAoNCxHUSwyLDEsImRpdiIsMTUpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDIpLER1KCIgIix0Ll9pbnRsLml0ZW1zUGVyUGFnZUxhYmVsLCIgIikscmMoMSksRG0oIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg+MSkscmMoMSksRG0oIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg8PTEpfX1mdW5jdGlvbiBZUSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImJ1dHRvbiIsMjEpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5maXJzdFBhZ2UoKX0pKSxxaSgpLFJtKDEsInN2ZyIsNyksVG0oMiwicGF0aCIsMjIpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtEbSgibWF0VG9vbHRpcCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsdC5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSxqcCgiYXJpYS1sYWJlbCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCl9fWZ1bmN0aW9uIHFRKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7cWkoKSxaaSgpLFJtKDAsImJ1dHRvbiIsMjMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5sYXN0UGFnZSgpfSkpLHFpKCksUm0oMSwic3ZnIiw3KSxUbSgyLCJwYXRoIiwyNCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJtYXRUb29sdGlwIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLHQuX25leHRCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpLGpwKCJhcmlhLWxhYmVsIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpfX1WUS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VlEpfSxWUS7JtW1vZD1hbyh7dHlwZTpWUX0pLFZRLsm1aW5qPXZuKHtwcm92aWRlcnM6W1RRXSxpbXBvcnRzOltbTkksV00seUwsWEldLFhJLHlGXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVlEsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltOSSxXTSx5TCxYSV0sZXhwb3J0czpbRlEsQlEsWEkseUZdLGRlY2xhcmF0aW9uczpbRlEsQlFdLGVudHJ5Q29tcG9uZW50czpbQlFdLHByb3ZpZGVyczpbVFFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVlEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltGUSxCUV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bTkksV00seUwsWEldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0ZRLEJRLFhJLHlGXX19KTtjbGFzcyBaUXtjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgSSx0aGlzLml0ZW1zUGVyUGFnZUxhYmVsPSJJdGVtcyBwZXIgcGFnZToiLHRoaXMubmV4dFBhZ2VMYWJlbD0iTmV4dCBwYWdlIix0aGlzLnByZXZpb3VzUGFnZUxhYmVsPSJQcmV2aW91cyBwYWdlIix0aGlzLmZpcnN0UGFnZUxhYmVsPSJGaXJzdCBwYWdlIix0aGlzLmxhc3RQYWdlTGFiZWw9Ikxhc3QgcGFnZSIsdGhpcy5nZXRSYW5nZUxhYmVsPSh0LGUsbik9PntpZigwPT1ufHwwPT1lKXJldHVybmAwIG9mICR7bn1gO2NvbnN0IG89dCplO3JldHVybmAke28rMX0g4oCTICR7bzwobj1NYXRoLm1heChuLDApKT9NYXRoLm1pbihvK2Usbik6bytlfSBvZiAke259YH19fVpRLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaUSl9LFpRLsm1cHJvdj1Nbih7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBaUX0sdG9rZW46WlEscHJvdmlkZWRJbjoicm9vdCJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFpRLFt7dHlwZTppbSxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLChmdW5jdGlvbigpe3JldHVybltdfSksbnVsbCk7Y29uc3QgWFE9e3Byb3ZpZGU6WlEsZGVwczpbW25ldyBTcixuZXcgRXIsWlFdXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIEtRKHQpe3JldHVybiB0fHxuZXcgWlF9fSxKUT1uZXcgR2EoIk1BVF9QQUdJTkFUT1JfREVGQVVMVF9PUFRJT05TIiksUVE9S0koZUgoY2xhc3N7fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyAkUSBleHRlbmRzIFFRe2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMuX2ludGw9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3BhZ2VJbmRleD0wLHRoaXMuX2xlbmd0aD0wLHRoaXMuX3BhZ2VTaXplT3B0aW9ucz1bXSx0aGlzLl9oaWRlUGFnZVNpemU9ITEsdGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9ITEsdGhpcy5wYWdlPW5ldyBMaCx0aGlzLl9pbnRsQ2hhbmdlcz10LmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpKSxuKXtjb25zdHtwYWdlU2l6ZTp0LHBhZ2VTaXplT3B0aW9uczplLGhpZGVQYWdlU2l6ZTpvLHNob3dGaXJzdExhc3RCdXR0b25zOml9PW47bnVsbCE9dCYmKHRoaXMuX3BhZ2VTaXplPXQpLG51bGwhPWUmJih0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9ZSksbnVsbCE9byYmKHRoaXMuX2hpZGVQYWdlU2l6ZT1vKSxudWxsIT1pJiYodGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9aSl9fWdldCBwYWdlSW5kZXgoKXtyZXR1cm4gdGhpcy5fcGFnZUluZGV4fXNldCBwYWdlSW5kZXgodCl7dGhpcy5fcGFnZUluZGV4PU1hdGgubWF4KF96KHQpLDApLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbGVuZ3RofXNldCBsZW5ndGgodCl7dGhpcy5fbGVuZ3RoPV96KHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBwYWdlU2l6ZSgpe3JldHVybiB0aGlzLl9wYWdlU2l6ZX1zZXQgcGFnZVNpemUodCl7dGhpcy5fcGFnZVNpemU9TWF0aC5tYXgoX3oodCksMCksdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl9Z2V0IHBhZ2VTaXplT3B0aW9ucygpe3JldHVybiB0aGlzLl9wYWdlU2l6ZU9wdGlvbnN9c2V0IHBhZ2VTaXplT3B0aW9ucyh0KXt0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9KHR8fFtdKS5tYXAoKHQ9Pl96KHQpKSksdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl9Z2V0IGhpZGVQYWdlU2l6ZSgpe3JldHVybiB0aGlzLl9oaWRlUGFnZVNpemV9c2V0IGhpZGVQYWdlU2l6ZSh0KXt0aGlzLl9oaWRlUGFnZVNpemU9eXoodCl9Z2V0IHNob3dGaXJzdExhc3RCdXR0b25zKCl7cmV0dXJuIHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zfXNldCBzaG93Rmlyc3RMYXN0QnV0dG9ucyh0KXt0aGlzLl9zaG93Rmlyc3RMYXN0QnV0dG9ucz15eih0KX1uZ09uSW5pdCgpe3RoaXMuX2luaXRpYWxpemVkPSEwLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpLHRoaXMuX21hcmtJbml0aWFsaXplZCgpfW5nT25EZXN0cm95KCl7dGhpcy5faW50bENoYW5nZXMudW5zdWJzY3JpYmUoKX1uZXh0UGFnZSgpe2lmKCF0aGlzLmhhc05leHRQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXgrKyx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfXByZXZpb3VzUGFnZSgpe2lmKCF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4LS0sdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1maXJzdFBhZ2UoKXtpZighdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleD0wLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9bGFzdFBhZ2UoKXtpZighdGhpcy5oYXNOZXh0UGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PXRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpLTEsdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1oYXNQcmV2aW91c1BhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlSW5kZXg+PTEmJjAhPXRoaXMucGFnZVNpemV9aGFzTmV4dFBhZ2UoKXtjb25zdCB0PXRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpLTE7cmV0dXJuIHRoaXMucGFnZUluZGV4PHQmJjAhPXRoaXMucGFnZVNpemV9Z2V0TnVtYmVyT2ZQYWdlcygpe3JldHVybiB0aGlzLnBhZ2VTaXplP01hdGguY2VpbCh0aGlzLmxlbmd0aC90aGlzLnBhZ2VTaXplKTowfV9jaGFuZ2VQYWdlU2l6ZSh0KXtjb25zdCBlPXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PU1hdGguZmxvb3IodGhpcy5wYWdlSW5kZXgqdGhpcy5wYWdlU2l6ZS90KXx8MCx0aGlzLnBhZ2VTaXplPXQsdGhpcy5fZW1pdFBhZ2VFdmVudChlKX1fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNOZXh0UGFnZSgpfV9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKX1fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl7dGhpcy5faW5pdGlhbGl6ZWQmJih0aGlzLnBhZ2VTaXplfHwodGhpcy5fcGFnZVNpemU9MCE9dGhpcy5wYWdlU2l6ZU9wdGlvbnMubGVuZ3RoP3RoaXMucGFnZVNpemVPcHRpb25zWzBdOjUwKSx0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnM9dGhpcy5wYWdlU2l6ZU9wdGlvbnMuc2xpY2UoKSwtMT09PXRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5pbmRleE9mKHRoaXMucGFnZVNpemUpJiZ0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMucHVzaCh0aGlzLnBhZ2VTaXplKSx0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuc29ydCgoKHQsZSk9PnQtZSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1fZW1pdFBhZ2VFdmVudCh0KXt0aGlzLnBhZ2UuZW1pdCh7cHJldmlvdXNQYWdlSW5kZXg6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscGFnZVNpemU6dGhpcy5wYWdlU2l6ZSxsZW5ndGg6dGhpcy5sZW5ndGh9KX19JFEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRRKShTbShaUSksU20oVWcpLFNtKHZvaWQgMCkpfSwkUS7JtWRpcj1sbyh7dHlwZTokUSxpbnB1dHM6e3BhZ2VJbmRleDoicGFnZUluZGV4IixsZW5ndGg6Imxlbmd0aCIscGFnZVNpemU6InBhZ2VTaXplIixwYWdlU2l6ZU9wdGlvbnM6InBhZ2VTaXplT3B0aW9ucyIsaGlkZVBhZ2VTaXplOiJoaWRlUGFnZVNpemUiLHNob3dGaXJzdExhc3RCdXR0b25zOiJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsY29sb3I6ImNvbG9yIn0sb3V0cHV0czp7cGFnZToicGFnZSJ9LGZlYXR1cmVzOlt4cF19KSwkUS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlpRfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwfV0sJFEucHJvcERlY29yYXRvcnM9e2NvbG9yOlt7dHlwZTp4eX1dLHBhZ2VJbmRleDpbe3R5cGU6eHl9XSxsZW5ndGg6W3t0eXBlOnh5fV0scGFnZVNpemU6W3t0eXBlOnh5fV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTp4eX1dLGhpZGVQYWdlU2l6ZTpbe3R5cGU6eHl9XSxzaG93Rmlyc3RMYXN0QnV0dG9uczpbe3R5cGU6eHl9XSxwYWdlOlt7dHlwZTpPeX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKCRRLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpaUX0se3R5cGU6VWd9LHt0eXBlOnZvaWQgMH1dfSkse3BhZ2U6W3t0eXBlOk95fV0scGFnZUluZGV4Olt7dHlwZTp4eX1dLGxlbmd0aDpbe3R5cGU6eHl9XSxwYWdlU2l6ZTpbe3R5cGU6eHl9XSxwYWdlU2l6ZU9wdGlvbnM6W3t0eXBlOnh5fV0saGlkZVBhZ2VTaXplOlt7dHlwZTp4eX1dLHNob3dGaXJzdExhc3RCdXR0b25zOlt7dHlwZTp4eX1dLGNvbG9yOlt7dHlwZTp4eX1dfSk7Y2xhc3MgdCQgZXh0ZW5kcyAkUXtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLG4mJm51bGwhPW4uZm9ybUZpZWxkQXBwZWFyYW5jZSYmKHRoaXMuX2Zvcm1GaWVsZEFwcGVhcmFuY2U9bi5mb3JtRmllbGRBcHBlYXJhbmNlKX19dCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHQkKShTbShaUSksU20oVWcpLFNtKEpRLDgpKX0sdCQuybVjbXA9dG8oe3R5cGU6dCQsc2VsZWN0b3JzOltbIm1hdC1wYWdpbmF0b3IiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyb3VwIiwxLCJtYXQtcGFnaW5hdG9yIl0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxleHBvcnRBczpbIm1hdFBhZ2luYXRvciJdLGZlYXR1cmVzOlt4cF0sZGVjbHM6MTQsdmFyczoxNCxjb25zdHM6W1sxLCJtYXQtcGFnaW5hdG9yLW91dGVyLWNvbnRhaW5lciJdLFsxLCJtYXQtcGFnaW5hdG9yLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnMiXSxbMSwibWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLXByZXZpb3VzIiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsidmlld0JveCIsIjAgMCAyNCAyNCIsImZvY3VzYWJsZSIsImZhbHNlIiwxLCJtYXQtcGFnaW5hdG9yLWljb24iXSxbImQiLCJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1sYXN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbCJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiLDMsImFwcGVhcmFuY2UiLCJjb2xvciIsNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS12YWx1ZSIsNCwibmdJZiJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiLDMsImFwcGVhcmFuY2UiLCJjb2xvciJdLFszLCJ2YWx1ZSIsImRpc2FibGVkIiwiYXJpYS1sYWJlbCIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl0sWzEsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXZhbHVlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tZmlyc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJkIiwiTTE4LjQxIDE2LjU5TDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2eiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJkIiwiTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiLDEpLFFwKDIsV1EsNSwzLCJkaXYiLDIpLFJtKDMsImRpdiIsMyksUm0oNCwiZGl2Iiw0KSxrdSg1KSxBbSgpLFFwKDYsWVEsMyw1LCJidXR0b24iLDUpLFJtKDcsImJ1dHRvbiIsNiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnByZXZpb3VzUGFnZSgpfSkpLHFpKCksUm0oOCwic3ZnIiw3KSxUbSg5LCJwYXRoIiw4KSxBbSgpLEFtKCksWmkoKSxSbSgxMCwiYnV0dG9uIiw5KSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ubmV4dFBhZ2UoKX0pKSxxaSgpLFJtKDExLCJzdmciLDcpLFRtKDEyLCJwYXRoIiwxMCksQW0oKSxBbSgpLFFwKDEzLHFRLDMsNSwiYnV0dG9uIiwxMSksQW0oKSxBbSgpLEFtKCkpLDImZSYmKHJjKDIpLERtKCJuZ0lmIiwhbi5oaWRlUGFnZVNpemUpLHJjKDMpLER1KCIgIixuLl9pbnRsLmdldFJhbmdlTGFiZWwobi5wYWdlSW5kZXgsbi5wYWdlU2l6ZSxuLmxlbmd0aCksIiAiKSxyYygxKSxEbSgibmdJZiIsbi5zaG93Rmlyc3RMYXN0QnV0dG9ucykscmMoMSksRG0oIm1hdFRvb2x0aXAiLG4uX2ludGwucHJldmlvdXNQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLG4uX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsbi5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSksanAoImFyaWEtbGFiZWwiLG4uX2ludGwucHJldmlvdXNQYWdlTGFiZWwpLHJjKDMpLERtKCJtYXRUb29sdGlwIixuLl9pbnRsLm5leHRQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLG4uX25leHRCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIixuLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpLGpwKCJhcmlhLWxhYmVsIixuLl9pbnRsLm5leHRQYWdlTGFiZWwpLHJjKDMpLERtKCJuZ0lmIixuLnNob3dGaXJzdExhc3RCdXR0b25zKSl9LGRpcmVjdGl2ZXM6W2RNLFhILEZRLEFWLEFHLGxNLEJIXSxzdHlsZXM6WyIubWF0LXBhZ2luYXRvcntkaXNwbGF5OmJsb2NrfS5tYXQtcGFnaW5hdG9yLW91dGVyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MCA4cHg7ZmxleC13cmFwOndyYXAtcmV2ZXJzZTt3aWR0aDoxMDAlfS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLXJpZ2h0OjhweH1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjhweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWx7bWFyZ2luOjAgNHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3R7bWFyZ2luOjZweCA0cHggMCA0cHg7d2lkdGg6NTZweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZXt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxse3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWx7bWFyZ2luOjAgMzJweCAwIDI0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9uc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtcGFnaW5hdG9yLWljb257d2lkdGg6MjhweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItaWNvbnt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXBhZ2luYXRvci1pY29ue2ZpbGw6Q2FudmFzVGV4dH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLHQkLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WlF9LHt0eXBlOlVnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W0pRXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh0JCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtcGFnaW5hdG9yIixleHBvcnRBczoibWF0UGFnaW5hdG9yIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiPlxuICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLWNvbnRhaW5lciI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiICpuZ0lmPSIhaGlkZVBhZ2VTaXplIj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVsIj5cbiAgICAgICAge3tfaW50bC5pdGVtc1BlclBhZ2VMYWJlbH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICpuZ0lmPSJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDEiXG4gICAgICAgIFthcHBlYXJhbmNlXT0iX2Zvcm1GaWVsZEFwcGVhcmFuY2UhIlxuICAgICAgICBbY29sb3JdPSJjb2xvciJcbiAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdCI+XG4gICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgW3ZhbHVlXT0icGFnZVNpemUiXG4gICAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQiXG4gICAgICAgICAgW2FyaWEtbGFiZWxdPSJfaW50bC5pdGVtc1BlclBhZ2VMYWJlbCJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT0iX2NoYW5nZVBhZ2VTaXplKCRldmVudC52YWx1ZSkiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj0ibGV0IHBhZ2VTaXplT3B0aW9uIG9mIF9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMiIFt2YWx1ZV09InBhZ2VTaXplT3B0aW9uIj5cbiAgICAgICAgICAgIHt7cGFnZVNpemVPcHRpb259fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiXG4gICAgICAgICpuZ0lmPSJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmxlbmd0aCA8PSAxIj57e3BhZ2VTaXplfX08L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9ucyI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVsIj5cbiAgICAgICAge3tfaW50bC5nZXRSYW5nZUxhYmVsKHBhZ2VJbmRleCwgcGFnZVNpemUsIGxlbmd0aCl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0iZmlyc3RQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5maXJzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5maXJzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgKm5nSWY9InNob3dGaXJzdExhc3RCdXR0b25zIj5cbiAgICAgICAgPHN2ZyBjbGFzcz0ibWF0LXBhZ2luYXRvci1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZvY3VzYWJsZT0iZmFsc2UiPlxuICAgICAgICAgIDxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91cyJcbiAgICAgICAgICAgICAgKGNsaWNrKT0icHJldmlvdXNQYWdlKCkiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5wcmV2aW91c1BhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5wcmV2aW91c1BhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iXCdhYm92ZVwnIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiJcbiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0IlxuICAgICAgICAgICAgICAoY2xpY2spPSJuZXh0UGFnZSgpIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwubmV4dFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5uZXh0UGFnZUxhYmVsIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcERpc2FibGVkXT0iX25leHRCdXR0b25zRGlzYWJsZWQoKSJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IlwnYWJvdmVcJyJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX25leHRCdXR0b25zRGlzYWJsZWQoKSI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iXG4gICAgICAgICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCJcbiAgICAgICAgICAgICAgKGNsaWNrKT0ibGFzdFBhZ2UoKSJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09Il9pbnRsLmxhc3RQYWdlTGFiZWwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT0iX2ludGwubGFzdFBhZ2VMYWJlbCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPSJcJ2Fib3ZlXCciXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiXG4gICAgICAgICAgICAgICpuZ0lmPSJzaG93Rmlyc3RMYXN0QnV0dG9ucyI+XG4gICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj5cbiAgICAgICAgICA8cGF0aCBkPSJNNS41OSA3LjQxTDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6Ii8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4nLGlucHV0czpbImRpc2FibGVkIl0saG9zdDp7Y2xhc3M6Im1hdC1wYWdpbmF0b3IiLHJvbGU6Imdyb3VwIn0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsc3R5bGVzOlsiLm1hdC1wYWdpbmF0b3J7ZGlzcGxheTpibG9ja30ubWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjAgOHB4O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2U7d2lkdGg6MTAwJX0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo4cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVse21hcmdpbjowIDRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0e21hcmdpbjo2cHggNHB4IDAgNHB4O3dpZHRoOjU2cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmV7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbHt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVse21hcmdpbjowIDMycHggMCAyNHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXBhZ2luYXRvci1pY29ue3dpZHRoOjI4cHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wYWdpbmF0b3ItaWNvbntmaWxsOkNhbnZhc1RleHR9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlpRfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltKUV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBlJHt9ZnVuY3Rpb24gbiQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDMpLFZtKCJAYXJyb3dQb3NpdGlvbi5zdGFydCIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMH0pKSgiQGFycm93UG9zaXRpb24uZG9uZSIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMX0pKSxUbSgxLCJkaXYiLDQpLFJtKDIsImRpdiIsNSksVG0oMywiZGl2Iiw2KSxUbSg0LCJkaXYiLDcpLFRtKDUsImRpdiIsOCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJAYXJyb3dPcGFjaXR5Iix0Ll9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFycm93UG9zaXRpb24iLHQuX2dldEFycm93Vmlld1N0YXRlKCkpKCJAYWxsb3dDaGlsZHJlbiIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxyYygyKSxEbSgiQGluZGljYXRvciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSxyYygxKSxEbSgiQGxlZnRQb2ludGVyIix0Ll9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpLHJjKDEpLERtKCJAcmlnaHRQb2ludGVyIix0Ll9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpfX1lJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZSQpfSxlJC7JtW1vZD1hbyh7dHlwZTplJH0pLGUkLsm1aW5qPXZuKHtwcm92aWRlcnM6W1hRXSxpbXBvcnRzOltbV00sSkgsVEcsVlEsWEldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZSQsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltXTSxKSCxURyxWUSxYSV0sZXhwb3J0czpbdCRdLGRlY2xhcmF0aW9uczpbdCRdLHByb3ZpZGVyczpbWFFdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZSQse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt0JF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV00sSkgsVEcsVlEsWEldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3QkXX19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IG8kPW5ldyBHYSgiTUFUX1NPUlRfREVGQVVMVF9PUFRJT05TIiksaSQ9ZUgoS0koY2xhc3N7fSkpO2NsYXNzIGEkIGV4dGVuZHMgaSR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kZWZhdWx0T3B0aW9ucz10LHRoaXMuc29ydGFibGVzPW5ldyBNYXAsdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyBJLHRoaXMuc3RhcnQ9ImFzYyIsdGhpcy5fZGlyZWN0aW9uPSIiLHRoaXMuc29ydENoYW5nZT1uZXcgTGh9Z2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXJlY3Rpb259c2V0IGRpcmVjdGlvbih0KXtpZih0JiYiYXNjIiE9PXQmJiJkZXNjIiE9PXQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgJHt0fSBpcyBub3QgYSB2YWxpZCBzb3J0IGRpcmVjdGlvbiAoJ2FzYycgb3IgJ2Rlc2MnKS5gKX0pKHQpO3RoaXMuX2RpcmVjdGlvbj10fWdldCBkaXNhYmxlQ2xlYXIoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZUNsZWFyfXNldCBkaXNhYmxlQ2xlYXIodCl7dGhpcy5fZGlzYWJsZUNsZWFyPXl6KHQpfXJlZ2lzdGVyKHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKCF0LmlkKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIk1hdFNvcnRIZWFkZXIgbXVzdCBiZSBwcm92aWRlZCB3aXRoIGEgdW5pcXVlIGlkLiIpfSkoKTtpZih0aGlzLnNvcnRhYmxlcy5oYXModC5pZCkpdGhyb3coZnVuY3Rpb24gbih0KXtyZXR1cm4gRXJyb3IoYENhbm5vdCBoYXZlIHR3byBNYXRTb3J0YWJsZXMgd2l0aCB0aGUgc2FtZSBpZCAoJHt0fSkuYCl9KSh0LmlkKX10aGlzLnNvcnRhYmxlcy5zZXQodC5pZCx0KX1kZXJlZ2lzdGVyKHQpe3RoaXMuc29ydGFibGVzLmRlbGV0ZSh0LmlkKX1zb3J0KHQpe3RoaXMuYWN0aXZlIT10LmlkPyh0aGlzLmFjdGl2ZT10LmlkLHRoaXMuZGlyZWN0aW9uPXQuc3RhcnQ/dC5zdGFydDp0aGlzLnN0YXJ0KTp0aGlzLmRpcmVjdGlvbj10aGlzLmdldE5leHRTb3J0RGlyZWN0aW9uKHQpLHRoaXMuc29ydENoYW5nZS5lbWl0KHthY3RpdmU6dGhpcy5hY3RpdmUsZGlyZWN0aW9uOnRoaXMuZGlyZWN0aW9ufSl9Z2V0TmV4dFNvcnREaXJlY3Rpb24odCl7dmFyIGUsbixvO2lmKCF0KXJldHVybiIiO2NvbnN0IGk9bnVsbCE9PShuPW51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmRpc2FibGVDbGVhcikmJnZvaWQgMCE9PWU/ZTp0aGlzLmRpc2FibGVDbGVhcikmJnZvaWQgMCE9PW4/bjohIShudWxsPT09KG89dGhpcy5fZGVmYXVsdE9wdGlvbnMpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmRpc2FibGVDbGVhcik7bGV0IGE9KGZ1bmN0aW9uIHIodCxlKXtsZXQgbj1bImFzYyIsImRlc2MiXTtyZXR1cm4iZGVzYyI9PXQmJm4ucmV2ZXJzZSgpLGV8fG4ucHVzaCgiIiksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LnN0YXJ0fHx0aGlzLnN0YXJ0LGkpLHM9YS5pbmRleE9mKHRoaXMuZGlyZWN0aW9uKSsxO3JldHVybiBzPj1hLmxlbmd0aCYmKHM9MCksYVtzXX1uZ09uSW5pdCgpe3RoaXMuX21hcmtJbml0aWFsaXplZCgpfW5nT25DaGFuZ2VzKCl7dGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfX1hJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YSQpKFNtKG8kLDgpKX0sYSQuybVkaXI9bG8oe3R5cGU6YSQsc2VsZWN0b3JzOltbIiIsIm1hdFNvcnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtc29ydCJdLGlucHV0czp7ZGlzYWJsZWQ6WyJtYXRTb3J0RGlzYWJsZWQiLCJkaXNhYmxlZCJdLHN0YXJ0OlsibWF0U29ydFN0YXJ0Iiwic3RhcnQiXSxkaXJlY3Rpb246WyJtYXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIl0sZGlzYWJsZUNsZWFyOlsibWF0U29ydERpc2FibGVDbGVhciIsImRpc2FibGVDbGVhciJdLGFjdGl2ZTpbIm1hdFNvcnRBY3RpdmUiLCJhY3RpdmUiXX0sb3V0cHV0czp7c29ydENoYW5nZToibWF0U29ydENoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U29ydCJdLGZlYXR1cmVzOlt4cCxCb119KSxhJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbbyRdfV19XSxhJC5wcm9wRGVjb3JhdG9ycz17YWN0aXZlOlt7dHlwZTp4eSxhcmdzOlsibWF0U29ydEFjdGl2ZSJdfV0sc3RhcnQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRTb3J0U3RhcnQiXX1dLGRpcmVjdGlvbjpbe3R5cGU6eHksYXJnczpbIm1hdFNvcnREaXJlY3Rpb24iXX1dLGRpc2FibGVDbGVhcjpbe3R5cGU6eHksYXJnczpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiXX1dLHNvcnRDaGFuZ2U6W3t0eXBlOk95LGFyZ3M6WyJtYXRTb3J0Q2hhbmdlIl19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChhJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0U29ydF0iLGV4cG9ydEFzOiJtYXRTb3J0Iixob3N0OntjbGFzczoibWF0LXNvcnQifSxpbnB1dHM6WyJkaXNhYmxlZDogbWF0U29ydERpc2FibGVkIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W28kXX1dfV19KSx7c3RhcnQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRTb3J0U3RhcnQiXX1dLHNvcnRDaGFuZ2U6W3t0eXBlOk95LGFyZ3M6WyJtYXRTb3J0Q2hhbmdlIl19XSxkaXJlY3Rpb246W3t0eXBlOnh5LGFyZ3M6WyJtYXRTb3J0RGlyZWN0aW9uIl19XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOnh5LGFyZ3M6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIl19XSxhY3RpdmU6W3t0eXBlOnh5LGFyZ3M6WyJtYXRTb3J0QWN0aXZlIl19XX0pO2NvbnN0IHIkPVdJLkVOVEVSSU5HKyIgIitHSS5TVEFOREFSRF9DVVJWRSxzJD17aW5kaWNhdG9yOm54KCJpbmRpY2F0b3IiLFtyeCgiYWN0aXZlLWFzYywgYXNjIixheCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDBweCkifSkpLHJ4KCJhY3RpdmUtZGVzYywgZGVzYyIsYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgxMHB4KSJ9KSksbHgoImFjdGl2ZS1hc2MgPD0+IGFjdGl2ZS1kZXNjIixveChyJCkpXSksbGVmdFBvaW50ZXI6bngoImxlZnRQb2ludGVyIixbcngoImFjdGl2ZS1hc2MsIGFzYyIsYXgoe3RyYW5zZm9ybToicm90YXRlKC00NWRlZykifSkpLHJ4KCJhY3RpdmUtZGVzYywgZGVzYyIsYXgoe3RyYW5zZm9ybToicm90YXRlKDQ1ZGVnKSJ9KSksbHgoImFjdGl2ZS1hc2MgPD0+IGFjdGl2ZS1kZXNjIixveChyJCkpXSkscmlnaHRQb2ludGVyOm54KCJyaWdodFBvaW50ZXIiLFtyeCgiYWN0aXZlLWFzYywgYXNjIixheCh7dHJhbnNmb3JtOiJyb3RhdGUoNDVkZWcpIn0pKSxyeCgiYWN0aXZlLWRlc2MsIGRlc2MiLGF4KHt0cmFuc2Zvcm06InJvdGF0ZSgtNDVkZWcpIn0pKSxseCgiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLG94KHIkKSldKSxhcnJvd09wYWNpdHk6bngoImFycm93T3BhY2l0eSIsW3J4KCJkZXNjLXRvLWFjdGl2ZSwgYXNjLXRvLWFjdGl2ZSwgYWN0aXZlIixheCh7b3BhY2l0eToxfSkpLHJ4KCJkZXNjLXRvLWhpbnQsIGFzYy10by1oaW50LCBoaW50IixheCh7b3BhY2l0eTouNTR9KSkscngoImhpbnQtdG8tZGVzYywgYWN0aXZlLXRvLWRlc2MsIGRlc2MsIGhpbnQtdG8tYXNjLCBhY3RpdmUtdG8tYXNjLCBhc2MsIHZvaWQiLGF4KHtvcGFjaXR5OjB9KSksbHgoIiogPT4gYXNjLCAqID0+IGRlc2MsICogPT4gYWN0aXZlLCAqID0+IGhpbnQsICogPT4gdm9pZCIsb3goIjBtcyIpKSxseCgiKiA8PT4gKiIsb3gociQpKV0pLGFycm93UG9zaXRpb246bngoImFycm93UG9zaXRpb24iLFtseCgiKiA9PiBkZXNjLXRvLWhpbnQsICogPT4gZGVzYy10by1hY3RpdmUiLG94KHIkLHN4KFtheCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pLGF4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSldKSkpLGx4KCIqID0+IGhpbnQtdG8tZGVzYywgKiA9PiBhY3RpdmUtdG8tZGVzYyIsb3gociQsc3goW2F4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSksYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pXSkpKSxseCgiKiA9PiBhc2MtdG8taGludCwgKiA9PiBhc2MtdG8tYWN0aXZlIixveChyJCxzeChbYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pLGF4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSldKSkpLGx4KCIqID0+IGhpbnQtdG8tYXNjLCAqID0+IGFjdGl2ZS10by1hc2MiLG94KHIkLHN4KFtheCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pLGF4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSldKSkpLHJ4KCJkZXNjLXRvLWhpbnQsIGFzYy10by1oaW50LCBoaW50LCBkZXNjLXRvLWFjdGl2ZSwgYXNjLXRvLWFjdGl2ZSwgYWN0aXZlIixheCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pKSxyeCgiaGludC10by1kZXNjLCBhY3RpdmUtdG8tZGVzYywgZGVzYyIsYXgoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KSkscngoImhpbnQtdG8tYXNjLCBhY3RpdmUtdG8tYXNjLCBhc2MiLGF4KHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMjUlKSJ9KSldKSxhbGxvd0NoaWxkcmVuOm54KCJhbGxvd0NoaWxkcmVuIixbbHgoIiogPD0+ICoiLFtkeCgiQCoiLGN4KCkse29wdGlvbmFsOiEwfSldKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGwke2NvbnN0cnVjdG9yKCl7dGhpcy5jaGFuZ2VzPW5ldyBJfX1sJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bCQpfSxsJC7JtXByb3Y9TW4oe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgbCR9LHRva2VuOmwkLHByb3ZpZGVkSW46InJvb3QifSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsJCxbe3R5cGU6aW0sYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG51bGwpO2NvbnN0IGMkPXtwcm92aWRlOmwkLGRlcHM6W1tuZXcgU3IsbmV3IEVyLGwkXV0sdXNlRmFjdG9yeTpmdW5jdGlvbiBkJCh0KXtyZXR1cm4gdHx8bmV3IGwkfX0scCQ9S0koY2xhc3N7fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG0kIGV4dGVuZHMgcCR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe2lmKHN1cGVyKCksdGhpcy5faW50bD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fc29ydD1uLHRoaXMuX2NvbHVtbkRlZj1vLHRoaXMuX2ZvY3VzTW9uaXRvcj1pLHRoaXMuX2VsZW1lbnRSZWY9YSx0aGlzLl9zaG93SW5kaWNhdG9ySGludD0hMSx0aGlzLl92aWV3U3RhdGU9e30sdGhpcy5fYXJyb3dEaXJlY3Rpb249IiIsdGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMSx0aGlzLmFycm93UG9zaXRpb249ImFmdGVyIiwhbiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHIoKXtyZXR1cm4gRXJyb3IoIk1hdFNvcnRIZWFkZXIgbXVzdCBiZSBwbGFjZWQgd2l0aGluIGEgcGFyZW50IGVsZW1lbnQgd2l0aCB0aGUgTWF0U29ydCBkaXJlY3RpdmUuIil9KSgpO3RoaXMuX2hhbmRsZVN0YXRlQ2hhbmdlcygpfWdldCBkaXNhYmxlQ2xlYXIoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZUNsZWFyfXNldCBkaXNhYmxlQ2xlYXIodCl7dGhpcy5fZGlzYWJsZUNsZWFyPXl6KHQpfW5nT25Jbml0KCl7IXRoaXMuaWQmJnRoaXMuX2NvbHVtbkRlZiYmKHRoaXMuaWQ9dGhpcy5fY29sdW1uRGVmLm5hbWUpLHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCksdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHt0b1N0YXRlOnRoaXMuX2lzU29ydGVkKCk/ImFjdGl2ZSI6dGhpcy5fYXJyb3dEaXJlY3Rpb259KSx0aGlzLl9zb3J0LnJlZ2lzdGVyKHRoaXMpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+e2NvbnN0IGU9ISF0O2UhPT10aGlzLl9zaG93SW5kaWNhdG9ySGludCYmKHRoaXMuX3NldEluZGljYXRvckhpbnRWaXNpYmxlKGUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9zb3J0LmRlcmVnaXN0ZXIodGhpcyksdGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1fc2V0SW5kaWNhdG9ySGludFZpc2libGUodCl7dGhpcy5faXNEaXNhYmxlZCgpJiZ0fHwodGhpcy5fc2hvd0luZGljYXRvckhpbnQ9dCx0aGlzLl9pc1NvcnRlZCgpfHwodGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUodGhpcy5fc2hvd0luZGljYXRvckhpbnQ/e2Zyb21TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbix0b1N0YXRlOiJoaW50In06e2Zyb21TdGF0ZToiaGludCIsdG9TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pKSl9X3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh0KXt0aGlzLl92aWV3U3RhdGU9dHx8e30sdGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiYmKHRoaXMuX3ZpZXdTdGF0ZT17dG9TdGF0ZTp0LnRvU3RhdGV9KX1fdG9nZ2xlT25JbnRlcmFjdGlvbigpe3RoaXMuX3NvcnQuc29ydCh0aGlzKSwiaGludCIhPT10aGlzLl92aWV3U3RhdGUudG9TdGF0ZSYmImFjdGl2ZSIhPT10aGlzLl92aWV3U3RhdGUudG9TdGF0ZXx8KHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITApfV9oYW5kbGVDbGljaygpe3RoaXMuX2lzRGlzYWJsZWQoKXx8dGhpcy5fc29ydC5zb3J0KHRoaXMpfV9oYW5kbGVLZXlkb3duKHQpe3RoaXMuX2lzRGlzYWJsZWQoKXx8dC5rZXlDb2RlIT09ZnomJnQua2V5Q29kZSE9PW16fHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZU9uSW50ZXJhY3Rpb24oKSl9X2lzU29ydGVkKCl7cmV0dXJuIHRoaXMuX3NvcnQuYWN0aXZlPT10aGlzLmlkJiYoImFzYyI9PT10aGlzLl9zb3J0LmRpcmVjdGlvbnx8ImRlc2MiPT09dGhpcy5fc29ydC5kaXJlY3Rpb24pfV9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCl7cmV0dXJuYCR7dGhpcy5faXNTb3J0ZWQoKT8iYWN0aXZlLSI6IiJ9JHt0aGlzLl9hcnJvd0RpcmVjdGlvbn1gfV9nZXRBcnJvd1ZpZXdTdGF0ZSgpe2NvbnN0IHQ9dGhpcy5fdmlld1N0YXRlLmZyb21TdGF0ZTtyZXR1cm4odD9gJHt0fS10by1gOiIiKSt0aGlzLl92aWV3U3RhdGUudG9TdGF0ZX1fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKXt0aGlzLl9hcnJvd0RpcmVjdGlvbj10aGlzLl9pc1NvcnRlZCgpP3RoaXMuX3NvcnQuZGlyZWN0aW9uOnRoaXMuc3RhcnR8fHRoaXMuX3NvcnQuc3RhcnR9X2lzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlZH1fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKXtyZXR1cm4gdGhpcy5faXNTb3J0ZWQoKT8iYXNjIj09dGhpcy5fc29ydC5kaXJlY3Rpb24/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmciOiJub25lIn1fcmVuZGVyQXJyb3coKXtyZXR1cm4hdGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl9pc1NvcnRlZCgpfV9oYW5kbGVTdGF0ZUNoYW5nZXMoKXt0aGlzLl9yZXJlbmRlclN1YnNjcmlwdGlvbj1yZSh0aGlzLl9zb3J0LnNvcnRDaGFuZ2UsdGhpcy5fc29ydC5fc3RhdGVDaGFuZ2VzLHRoaXMuX2ludGwuY2hhbmdlcykuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2lzU29ydGVkKCkmJih0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLCJoaW50IiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlJiYiYWN0aXZlIiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfHwodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCksdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb24sdG9TdGF0ZToiYWN0aXZlIn0pLHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PSExKSwhdGhpcy5faXNTb3J0ZWQoKSYmdGhpcy5fdmlld1N0YXRlJiYiYWN0aXZlIj09PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlJiYodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZToiYWN0aXZlIix0b1N0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9ufSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpfX1tJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bSQpKFNtKGwkKSxTbShVZyksU20oYSQsOCksU20oIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIiw4KSxTbShTSSksU20oaGcpKX0sbSQuybVjbXA9dG8oe3R5cGU6bSQsc2VsZWN0b3JzOltbIiIsIm1hdC1zb3J0LWhlYWRlciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1zb3J0LWhlYWRlciJdLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5faGFuZGxlQ2xpY2soKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSkoIm1vdXNlZW50ZXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX3NldEluZGljYXRvckhpbnRWaXNpYmxlKCEwKX0pKSgibW91c2VsZWF2ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoITEpfSkpLDImZSYmKGpwKCJhcmlhLXNvcnQiLG4uX2dldEFyaWFTb3J0QXR0cmlidXRlKCkpLHB1KCJtYXQtc29ydC1oZWFkZXItZGlzYWJsZWQiLG4uX2lzRGlzYWJsZWQoKSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsYXJyb3dQb3NpdGlvbjoiYXJyb3dQb3NpdGlvbiIsZGlzYWJsZUNsZWFyOiJkaXNhYmxlQ2xlYXIiLGlkOlsibWF0LXNvcnQtaGVhZGVyIiwiaWQiXSxzdGFydDoic3RhcnQifSxleHBvcnRBczpbIm1hdFNvcnRIZWFkZXIiXSxmZWF0dXJlczpbeHBdLGF0dHJzOlsibWF0LXNvcnQtaGVhZGVyIiwiIl0sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjQsdmFyczo2LGNvbnN0czpbWyJyb2xlIiwiYnV0dG9uIiwxLCJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIiwibWF0LWZvY3VzLWluZGljYXRvciJdLFsxLCJtYXQtc29ydC1oZWFkZXItY29udGVudCJdLFsiY2xhc3MiLCJtYXQtc29ydC1oZWFkZXItYXJyb3ciLDQsIm5nSWYiXSxbMSwibWF0LXNvcnQtaGVhZGVyLWFycm93Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1zdGVtIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3IiXSxbMSwibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodCJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFptKCksUm0oMCwiZGl2IiwwKSxSbSgxLCJkaXYiLDEpLFhtKDIpLEFtKCksUXAoMyxuJCw2LDYsImRpdiIsMiksQW0oKSksMiZlJiYocHUoIm1hdC1zb3J0LWhlYWRlci1zb3J0ZWQiLG4uX2lzU29ydGVkKCkpKCJtYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIiwiYmVmb3JlIj09bi5hcnJvd1Bvc2l0aW9uKSxqcCgidGFiaW5kZXgiLG4uX2lzRGlzYWJsZWQoKT9udWxsOjApLHJjKDMpLERtKCJuZ0lmIixuLl9yZW5kZXJBcnJvdygpKSl9LGRpcmVjdGl2ZXM6W2RNXSxzdHlsZXM6WyIubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7Y3Vyc29yOnBvaW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2xldHRlci1zcGFjaW5nOm5vcm1hbDtvdXRsaW5lOjB9W21hdC1zb3J0LWhlYWRlcl0uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXIsW21hdC1zb3J0LWhlYWRlcl0uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntib3JkZXItYm90dG9tOnNvbGlkIDFweCBjdXJyZW50Q29sb3J9Lm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntjdXJzb3I6ZGVmYXVsdH0ubWF0LXNvcnQtaGVhZGVyLWNvbnRlbnR7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2hlaWdodDoxMnB4O3dpZHRoOjEycHg7bWluLXdpZHRoOjEycHg7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O29wYWNpdHk6MH0ubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDAgMCA2cHh9Lm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyxbZGlyPXJ0bF0gLm1hdC1zb3J0LWhlYWRlci1hcnJvd3ttYXJnaW46MCA2cHggMCAwfS5tYXQtc29ydC1oZWFkZXItc3RlbXtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjtoZWlnaHQ6MTBweDt3aWR0aDoycHg7bWFyZ2luOmF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItc3RlbXt3aWR0aDowO2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLWluZGljYXRvcnt3aWR0aDoxMDAlO2hlaWdodDoycHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXttYXJnaW46YXV0bztoZWlnaHQ6MnB4O3dpZHRoOjJweDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGV7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweDtib3JkZXItbGVmdDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQsLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3dpZHRoOjZweDtoZWlnaHQ6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDpzb2xpZCA2cHg7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnR7dHJhbnNmb3JtLW9yaWdpbjpyaWdodDtsZWZ0OjB9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e3RyYW5zZm9ybS1vcmlnaW46bGVmdDtyaWdodDowfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbcyQuaW5kaWNhdG9yLHMkLmxlZnRQb2ludGVyLHMkLnJpZ2h0UG9pbnRlcixzJC5hcnJvd09wYWNpdHkscyQuYXJyb3dQb3NpdGlvbixzJC5hbGxvd0NoaWxkcmVuXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KSxtJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmwkfSx7dHlwZTpVZ30se3R5cGU6YSQsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6WyJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiJdfSx7dHlwZTpTcn1dfSx7dHlwZTpTSX0se3R5cGU6aGd9XSxtJC5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXQtc29ydC1oZWFkZXIiXX1dLGFycm93UG9zaXRpb246W3t0eXBlOnh5fV0sc3RhcnQ6W3t0eXBlOnh5fV0sZGlzYWJsZUNsZWFyOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG0kLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6IlttYXQtc29ydC1oZWFkZXJdIixleHBvcnRBczoibWF0U29ydEhlYWRlciIsdGVtcGxhdGU6J1x4M2MhLS1cbiAgV2Ugc2V0IHRoZSBgdGFiaW5kZXhgIG9uIGFuIGVsZW1lbnQgaW5zaWRlIHRoZSB0YWJsZSBoZWFkZXIsIHJhdGhlciB0aGFuIHRoZSBoZWFkZXIgaXRzZWxmLFxuICBiZWNhdXNlIG9mIGEgYnVnIGluIE5WREEgd2hlcmUgaGF2aW5nIGEgYHRhYmluZGV4YCBvbiBhIGB0aGAgYnJlYWtzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlXG4gIHRhYmxlIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL252YWNjZXNzL252ZGEvaXNzdWVzLzc3MTgpLiBUaGlzIGFsbG93cyBmb3IgdGhlIGhlYWRlciB0byBib3RoXG4gIGJlIGZvY3VzYWJsZSwgYW5kIGhhdmUgc2NyZWVuIHJlYWRlcnMgcmVhZCBvdXQgaXRzIGBhcmlhLXNvcnRgIHN0YXRlLiBXZSBwcmVmZXIgdGhpcyBhcHByb2FjaFxuICBvdmVyIGhhdmluZyBhIGJ1dHRvbiB3aXRoIGFuIGBhcmlhLWxhYmVsYCBpbnNpZGUgdGhlIGhlYWRlciwgYmVjYXVzZSB0aGUgYnV0dG9uXCdzIGBhcmlhLWxhYmVsYFxuICB3aWxsIGJlIHJlYWQgb3V0IGFzIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdGhlIHRhYmxlXCdzIGNlbGwgKHNlZSAjMTMwMTIpLlxuXG4gIFRoZSBhcHByb2FjaCBpcyBiYXNlZCBvZmYgb2Y6IGh0dHBzOi8vZGVxdWV1bml2ZXJzaXR5LmNvbS9saWJyYXJ5L2FyaWEvdGFibGVzL3NmLXNvcnRhYmxlLWdyaWRcbi0tXHgzZVxuPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lciBtYXQtZm9jdXMtaW5kaWNhdG9yIlxuICAgICBbY2xhc3MubWF0LXNvcnQtaGVhZGVyLXNvcnRlZF09Il9pc1NvcnRlZCgpIlxuICAgICBbY2xhc3MubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZV09ImFycm93UG9zaXRpb24gPT0gXCdiZWZvcmVcJyJcbiAgICAgW2F0dHIudGFiaW5kZXhdPSJfaXNEaXNhYmxlZCgpID8gbnVsbCA6IDAiXG4gICAgIHJvbGU9ImJ1dHRvbiI+XG5cbiAgXHgzYyEtLVxuICAgIFRPRE8oY3Jpc2JldG8pOiB0aGlzIGRpdiBpc25cJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgd2UgaGF2ZSB0byBrZWVwIGl0IGR1ZSB0byBhIGxhcmdlXG4gICAgbnVtYmVyIG9mIHNjcmVlbnNob3QgZGlmZiBmYWlsdXJlcy4gSXQgc2hvdWxkIGJlIHJlbW92ZWQgZXZlbnR1YWxseS4gTm90ZSB0aGF0IHRoZSBkaWZmZXJlbmNlXG4gICAgaXNuXCd0IHZpc2libGUgd2l0aCBhIHNob3J0ZXIgaGVhZGVyLCBidXQgb25jZSBpdCBicmVha3MgdXAgaW50byBtdWx0aXBsZSBsaW5lcywgdGhpcyBlbGVtZW50XG4gICAgY2F1c2VzIGl0IHRvIGJlIGNlbnRlci1hbGlnbmVkLCB3aGVyZWFzIHJlbW92aW5nIGl0IHdpbGwga2VlcCB0aGUgdGV4dCB0byB0aGUgbGVmdC5cbiAgLS1ceDNlXG4gIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1jb250ZW50Ij5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIFx4M2MhLS0gRGlzYWJsZSBhbmltYXRpb25zIHdoaWxlIGEgY3VycmVudCBhbmltYXRpb24gaXMgcnVubmluZyAtLVx4M2VcbiAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLWFycm93IlxuICAgICAgICpuZ0lmPSJfcmVuZGVyQXJyb3coKSJcbiAgICAgICBbQGFycm93T3BhY2l0eV09Il9nZXRBcnJvd1ZpZXdTdGF0ZSgpIlxuICAgICAgIFtAYXJyb3dQb3NpdGlvbl09Il9nZXRBcnJvd1ZpZXdTdGF0ZSgpIlxuICAgICAgIFtAYWxsb3dDaGlsZHJlbl09Il9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkiXG4gICAgICAgKEBhcnJvd1Bvc2l0aW9uLnN0YXJ0KT0iX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSB0cnVlIlxuICAgICAgIChAYXJyb3dQb3NpdGlvbi5kb25lKT0iX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSBmYWxzZSI+XG4gICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXN0ZW0iPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3IiIFtAaW5kaWNhdG9yXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSI+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0IiBbQGxlZnRQb2ludGVyXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodCIgW0ByaWdodFBvaW50ZXJdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZSI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4nLGhvc3Q6e2NsYXNzOiJtYXQtc29ydC1oZWFkZXIiLCIoY2xpY2spIjoiX2hhbmRsZUNsaWNrKCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIiwiKG1vdXNlZW50ZXIpIjoiX3NldEluZGljYXRvckhpbnRWaXNpYmxlKHRydWUpIiwiKG1vdXNlbGVhdmUpIjoiX3NldEluZGljYXRvckhpbnRWaXNpYmxlKGZhbHNlKSIsIlthdHRyLmFyaWEtc29ydF0iOiJfZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSIsIltjbGFzcy5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWRdIjoiX2lzRGlzYWJsZWQoKSJ9LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLGlucHV0czpbImRpc2FibGVkIl0sYW5pbWF0aW9uczpbcyQuaW5kaWNhdG9yLHMkLmxlZnRQb2ludGVyLHMkLnJpZ2h0UG9pbnRlcixzJC5hcnJvd09wYWNpdHkscyQuYXJyb3dQb3NpdGlvbixzJC5hbGxvd0NoaWxkcmVuXSxzdHlsZXM6WyIubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7Y3Vyc29yOnBvaW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2xldHRlci1zcGFjaW5nOm5vcm1hbDtvdXRsaW5lOjB9W21hdC1zb3J0LWhlYWRlcl0uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXIsW21hdC1zb3J0LWhlYWRlcl0uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntib3JkZXItYm90dG9tOnNvbGlkIDFweCBjdXJyZW50Q29sb3J9Lm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcntjdXJzb3I6ZGVmYXVsdH0ubWF0LXNvcnQtaGVhZGVyLWNvbnRlbnR7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ubWF0LXNvcnQtaGVhZGVyLWFycm93e2hlaWdodDoxMnB4O3dpZHRoOjEycHg7bWluLXdpZHRoOjEycHg7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpmbGV4O29wYWNpdHk6MH0ubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDAgMCA2cHh9Lm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyxbZGlyPXJ0bF0gLm1hdC1zb3J0LWhlYWRlci1hcnJvd3ttYXJnaW46MCA2cHggMCAwfS5tYXQtc29ydC1oZWFkZXItc3RlbXtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjtoZWlnaHQ6MTBweDt3aWR0aDoycHg7bWFyZ2luOmF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItc3RlbXt3aWR0aDowO2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLWluZGljYXRvcnt3aWR0aDoxMDAlO2hlaWdodDoycHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjB9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXttYXJnaW46YXV0bztoZWlnaHQ6MnB4O3dpZHRoOjJweDtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGV7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweDtib3JkZXItbGVmdDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQsLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3dpZHRoOjZweDtoZWlnaHQ6MnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDpzb2xpZCA2cHg7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnR7dHJhbnNmb3JtLW9yaWdpbjpyaWdodDtsZWZ0OjB9Lm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e3RyYW5zZm9ybS1vcmlnaW46bGVmdDtyaWdodDowfVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpsJH0se3R5cGU6VWd9LHt0eXBlOmEkLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlsiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiXX0se3R5cGU6U3J9XX0se3R5cGU6U0l9LHt0eXBlOmhnfV19KSx7YXJyb3dQb3NpdGlvbjpbe3R5cGU6eHl9XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOnh5fV0saWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXQtc29ydC1oZWFkZXIiXX1dLHN0YXJ0Olt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB1JHt9dSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHUkKX0sdSQuybVtb2Q9YW8oe3R5cGU6dSR9KSx1JC7JtWluaj12bih7cHJvdmlkZXJzOltjJF0saW1wb3J0czpbW1dNLFhJXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHUkLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV00sWEldLGV4cG9ydHM6W2EkLG0kXSxkZWNsYXJhdGlvbnM6W2EkLG0kXSxwcm92aWRlcnM6W2MkXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHUkLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bYSQsbSRdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dNLFhJXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblthJCxtJF19fSk7Y29uc3QgZiQ9W1tbImNhcHRpb24iXV0sW1siY29sZ3JvdXAiXSxbImNvbCJdXV07ZnVuY3Rpb24gZyQodCxlKXtpZigxJnQmJihSbSgwLCJ0aCIsMyksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7ZHUoInRleHQtYWxpZ24iLHQuanVzdGlmeSkscmMoMSksRHUoIiAiLHQuaGVhZGVyVGV4dCwiICIpfX1mdW5jdGlvbiBoJCh0LGUpe2lmKDEmdCYmKFJtKDAsInRkIiw0KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgpO2R1KCJ0ZXh0LWFsaWduIixuLmp1c3RpZnkpLHJjKDEpLER1KCIgIixuLmRhdGFBY2Nlc3Nvcih0LG4ubmFtZSksIiAiKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGIkKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5fc3RpY2t5PSExLHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITF9Z2V0IHN0aWNreSgpe3JldHVybiB0aGlzLl9zdGlja3l9c2V0IHN0aWNreSh0KXtjb25zdCBlPXRoaXMuX3N0aWNreTt0aGlzLl9zdGlja3k9eXoodCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1lIT09dGhpcy5fc3RpY2t5fWhhc1N0aWNreUNoYW5nZWQoKXtjb25zdCB0PXRoaXMuX2hhc1N0aWNreUNoYW5nZWQ7cmV0dXJuIHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITEsdH1yZXNldFN0aWNreUNoYW5nZWQoKXt0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPSExfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHkkPW5ldyBHYSgiQ0RLX1RBQkxFIiksXyQ9bmV3IEdhKCJ0ZXh0LWNvbHVtbi1vcHRpb25zIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBDJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fUMkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDJCkoU20oWGcpKX0sQyQuybVkaXI9bG8oe3R5cGU6QyQsc2VsZWN0b3JzOltbIiIsImNka0NlbGxEZWYiLCIiXV19KSxDJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChDJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrQ2VsbERlZl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGd9XX0pLG51bGwpO2NsYXNzIE0ke2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19TSQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE0kKShTbShYZykpfSxNJC7JtWRpcj1sbyh7dHlwZTpNJCxzZWxlY3RvcnM6W1siIiwiY2RrSGVhZGVyQ2VsbERlZiIsIiJdXX0pLE0kLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE0kLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltjZGtIZWFkZXJDZWxsRGVmXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYZ31dfSksbnVsbCk7Y2xhc3MgdiR7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX12JC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8diQpKFNtKFhnKSl9LHYkLsm1ZGlyPWxvKHt0eXBlOnYkLHNlbGVjdG9yczpbWyIiLCJjZGtGb290ZXJDZWxsRGVmIiwiIl1dfSksdiQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYZ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodiQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0Zvb3RlckNlbGxEZWZdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhnfV19KSxudWxsKTtjb25zdCB4JD1iJChjbGFzc3t9KTtjbGFzcyBPJCBleHRlbmRzIHgke2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fdGFibGU9dCx0aGlzLl9zdGlja3lFbmQ9ITF9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9zZXROYW1lSW5wdXQodCl9Z2V0IHN0aWNreUVuZCgpe3JldHVybiB0aGlzLl9zdGlja3lFbmR9c2V0IHN0aWNreUVuZCh0KXtjb25zdCBlPXRoaXMuX3N0aWNreUVuZDt0aGlzLl9zdGlja3lFbmQ9eXoodCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1lIT09dGhpcy5fc3RpY2t5RW5kfV91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKXt0aGlzLl9jb2x1bW5Dc3NDbGFzc05hbWU9W2BjZGstY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gXX1fc2V0TmFtZUlucHV0KHQpe3QmJih0aGlzLl9uYW1lPXQsdGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZT10LnJlcGxhY2UoL1teYS16MC05Xy1dL2dpLCItIiksdGhpcy5fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCkpfX1PJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TyQpKFNtKHkkLDgpKX0sTyQuybVkaXI9bG8oe3R5cGU6TyQsc2VsZWN0b3JzOltbIiIsImNka0NvbHVtbkRlZiIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJigkaChvLEMkLDUpLCRoKG8sTSQsNSksJGgobyx2JCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5jZWxsPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLmhlYWRlckNlbGw9dC5maXJzdCksSmgodD10YigpKSYmKG4uZm9vdGVyQ2VsbD10LmZpcnN0KX19LGlucHV0czp7c3RpY2t5OiJzdGlja3kiLG5hbWU6WyJjZGtDb2x1bW5EZWYiLCJuYW1lIl0sc3RpY2t5RW5kOiJzdGlja3lFbmQifSxmZWF0dXJlczpbcGcoW3twcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6TyR9XSkseHBdfSksTyQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbeSRdfSx7dHlwZTpTcn1dfV0sTyQucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb2x1bW5EZWYiXX1dLHN0aWNreUVuZDpbe3R5cGU6eHksYXJnczpbInN0aWNreUVuZCJdfV0sY2VsbDpbe3R5cGU6cWEsYXJnczpbQyRdfV0saGVhZGVyQ2VsbDpbe3R5cGU6cWEsYXJnczpbTSRdfV0sZm9vdGVyQ2VsbDpbe3R5cGU6cWEsYXJnczpbdiRdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTyQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NvbHVtbkRlZl0iLGlucHV0czpbInN0aWNreSJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzpPJH1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3kkXX0se3R5cGU6U3J9XX1dfSkse25hbWU6W3t0eXBlOnh5LGFyZ3M6WyJjZGtDb2x1bW5EZWYiXX1dLHN0aWNreUVuZDpbe3R5cGU6eHksYXJnczpbInN0aWNreUVuZCJdfV0sY2VsbDpbe3R5cGU6cWEsYXJnczpbQyRdfV0saGVhZGVyQ2VsbDpbe3R5cGU6cWEsYXJnczpbTSRdfV0sZm9vdGVyQ2VsbDpbe3R5cGU6cWEsYXJnczpbdiRdfV19KTtjbGFzcyBQJHtjb25zdHJ1Y3Rvcih0LGUpe2NvbnN0IG49ZS5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtmb3IoY29uc3QgZSBvZiB0Ll9jb2x1bW5Dc3NDbGFzc05hbWUpbi5hZGQoZSl9fWNsYXNzIHckIGV4dGVuZHMgUCR7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpfX13JC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dyQpKFNtKE8kKSxTbShoZykpfSx3JC7JtWRpcj1sbyh7dHlwZTp3JCxzZWxlY3RvcnM6W1siY2RrLWhlYWRlci1jZWxsIl0sWyJ0aCIsImNkay1oZWFkZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJjZGstaGVhZGVyLWNlbGwiXSxmZWF0dXJlczpbeHBdfSksdyQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPJH0se3R5cGU6aGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHckLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImNkay1oZWFkZXItY2VsbCwgdGhbY2RrLWhlYWRlci1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1oZWFkZXItY2VsbCIscm9sZToiY29sdW1uaGVhZGVyIn19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPJH0se3R5cGU6aGd9XX0pLG51bGwpO2NsYXNzIGskIGV4dGVuZHMgUCR7Y29uc3RydWN0b3IodCxlKXt2YXIgbjtpZihzdXBlcih0LGUpLDE9PT0obnVsbD09PShuPXQuX3RhYmxlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVUeXBlKSl7Y29uc3Qgbj10Ll90YWJsZS5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgicm9sZSIpO2UubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJncmlkIj09PW58fCJ0cmVlZ3JpZCI9PT1uPyJncmlkY2VsbCI6ImNlbGwiKX19fWskLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxrJCkoU20oTyQpLFNtKGhnKSl9LGskLsm1ZGlyPWxvKHt0eXBlOmskLHNlbGVjdG9yczpbWyJjZGstZm9vdGVyLWNlbGwiXSxbInRkIiwiY2RrLWZvb3Rlci1jZWxsIiwiIl1dLGhvc3RBdHRyczpbMSwiY2RrLWZvb3Rlci1jZWxsIl0sZmVhdHVyZXM6W3hwXX0pLGskLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TyR9LHt0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChrJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJjZGstZm9vdGVyLWNlbGwsIHRkW2Nkay1mb290ZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJjZGstZm9vdGVyLWNlbGwifX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk8kfSx7dHlwZTpoZ31dfSksbnVsbCk7Y2xhc3MgUyQgZXh0ZW5kcyBQJHtjb25zdHJ1Y3Rvcih0LGUpe3ZhciBuO2lmKHN1cGVyKHQsZSksMT09PShudWxsPT09KG49dC5fdGFibGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubm9kZVR5cGUpKXtjb25zdCBuPXQuX3RhYmxlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJyb2xlIik7ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsImdyaWQiPT09bnx8InRyZWVncmlkIj09PW4/ImdyaWRjZWxsIjoiY2VsbCIpfX19UyQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFMkKShTbShPJCksU20oaGcpKX0sUyQuybVkaXI9bG8oe3R5cGU6UyQsc2VsZWN0b3JzOltbImNkay1jZWxsIl0sWyJ0ZCIsImNkay1jZWxsIiwiIl1dLGhvc3RBdHRyczpbMSwiY2RrLWNlbGwiXSxmZWF0dXJlczpbeHBdfSksUyQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPJH0se3R5cGU6aGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFMkLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6ImNkay1jZWxsLCB0ZFtjZGstY2VsbF0iLGhvc3Q6e2NsYXNzOiJjZGstY2VsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TyR9LHt0eXBlOmhnfV19KSxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEQke2NvbnN0cnVjdG9yKCl7dGhpcy50YXNrcz1bXSx0aGlzLmVuZFRhc2tzPVtdfX1jb25zdCBFJD1uZXcgR2EoIl9DT0FMRVNDRURfU1RZTEVfU0NIRURVTEVSIik7Y2xhc3MgUiR7Y29uc3RydWN0b3IodCl7dGhpcy5fbmdab25lPXQsdGhpcy5fY3VycmVudFNjaGVkdWxlPW51bGwsdGhpcy5fZGVzdHJveWVkPW5ldyBJfXNjaGVkdWxlKHQpe3RoaXMuX2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKSx0aGlzLl9jdXJyZW50U2NoZWR1bGUudGFza3MucHVzaCh0KX1zY2hlZHVsZUVuZCh0KXt0aGlzLl9jcmVhdGVTY2hlZHVsZUlmTmVlZGVkKCksdGhpcy5fY3VycmVudFNjaGVkdWxlLmVuZFRhc2tzLnB1c2godCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9jcmVhdGVTY2hlZHVsZUlmTmVlZGVkKCl7dGhpcy5fY3VycmVudFNjaGVkdWxlfHwodGhpcy5fY3VycmVudFNjaGVkdWxlPW5ldyBEJCx0aGlzLl9nZXRTY2hlZHVsZU9ic2VydmFibGUoKS5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pntmb3IoO3RoaXMuX2N1cnJlbnRTY2hlZHVsZS50YXNrcy5sZW5ndGh8fHRoaXMuX2N1cnJlbnRTY2hlZHVsZS5lbmRUYXNrcy5sZW5ndGg7KXtjb25zdCB0PXRoaXMuX2N1cnJlbnRTY2hlZHVsZTt0aGlzLl9jdXJyZW50U2NoZWR1bGU9bmV3IEQkO2Zvcihjb25zdCBlIG9mIHQudGFza3MpZSgpO2Zvcihjb25zdCBlIG9mIHQuZW5kVGFza3MpZSgpfXRoaXMuX2N1cnJlbnRTY2hlZHVsZT1udWxsfSkpKX1fZ2V0U2NoZWR1bGVPYnNlcnZhYmxlKCl7cmV0dXJuIHRoaXMuX25nWm9uZS5pc1N0YWJsZT9DdChQcm9taXNlLnJlc29sdmUodm9pZCAwKSk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoYmUoMSkpfX1SJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UiQpKHZyKGFfKSl9LFIkLsm1cHJvdj1Nbih7dG9rZW46UiQsZmFjdG9yeTpSJC7JtWZhY30pLFIkLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6YV99XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFIkLFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTphX31dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBBJD0iPG5nLWNvbnRhaW5lciBjZGtDZWxsT3V0bGV0PjwvbmctY29udGFpbmVyPiI7Y2xhc3MgVCR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnRlbXBsYXRlPXQsdGhpcy5fZGlmZmVycz1lfW5nT25DaGFuZ2VzKHQpe2lmKCF0aGlzLl9jb2x1bW5zRGlmZmVyKXtjb25zdCBlPXQuY29sdW1ucyYmdC5jb2x1bW5zLmN1cnJlbnRWYWx1ZXx8W107dGhpcy5fY29sdW1uc0RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoZSkuY3JlYXRlKCksdGhpcy5fY29sdW1uc0RpZmZlci5kaWZmKGUpfX1nZXRDb2x1bW5zRGlmZigpe3JldHVybiB0aGlzLl9jb2x1bW5zRGlmZmVyLmRpZmYodGhpcy5jb2x1bW5zKX1leHRyYWN0Q2VsbFRlbXBsYXRlKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgeiQ/dC5oZWFkZXJDZWxsLnRlbXBsYXRlOnRoaXMgaW5zdGFuY2VvZiBIJD90LmZvb3RlckNlbGwudGVtcGxhdGU6dC5jZWxsLnRlbXBsYXRlfX1UJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VCQpKFNtKFhnKSxTbShIZykpfSxUJC7JtWRpcj1sbyh7dHlwZTpUJCxmZWF0dXJlczpbQm9dfSksVCQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYZ30se3R5cGU6SGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFQkLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYZ30se3R5cGU6SGd9XX0pLG51bGwpO2NvbnN0IE4kPWIkKGNsYXNzIGV4dGVuZHMgVCR7fSk7Y2xhc3MgeiQgZXh0ZW5kcyBOJHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlKSx0aGlzLl90YWJsZT1ufW5nT25DaGFuZ2VzKHQpe3N1cGVyLm5nT25DaGFuZ2VzKHQpfX16JC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eiQpKFNtKFhnKSxTbShIZyksU20oeSQsOCkpfSx6JC7JtWRpcj1sbyh7dHlwZTp6JCxzZWxlY3RvcnM6W1siIiwiY2RrSGVhZGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbImNka0hlYWRlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJjZGtIZWFkZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W3hwLEJvXX0pLHokLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGd9LHt0eXBlOkhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbeSRdfSx7dHlwZTpTcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh6JCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrSGVhZGVyUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrSGVhZGVyUm93RGVmIiwic3RpY2t5OiBjZGtIZWFkZXJSb3dEZWZTdGlja3kiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhnfSx7dHlwZTpIZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3kkXX0se3R5cGU6U3J9XX1dfSksbnVsbCk7Y29uc3QgSSQ9YiQoY2xhc3MgZXh0ZW5kcyBUJHt9KTtjbGFzcyBIJCBleHRlbmRzIEkke2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW59bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fUgkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxIJCkoU20oWGcpLFNtKEhnKSxTbSh5JCw4KSl9LEgkLsm1ZGlyPWxvKHt0eXBlOkgkLHNlbGVjdG9yczpbWyIiLCJjZGtGb290ZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrRm9vdGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbImNka0Zvb3RlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbeHAsQm9dfSksSCQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYZ30se3R5cGU6SGd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlt5JF19LHt0eXBlOlNyfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEgkLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltjZGtGb290ZXJSb3dEZWZdIixpbnB1dHM6WyJjb2x1bW5zOiBjZGtGb290ZXJSb3dEZWYiLCJzdGlja3k6IGNka0Zvb3RlclJvd0RlZlN0aWNreSJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGd9LHt0eXBlOkhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbeSRdfSx7dHlwZTpTcn1dfV19KSxudWxsKTtjbGFzcyBGJCBleHRlbmRzIFQke2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW59fUYkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGJCkoU20oWGcpLFNtKEhnKSxTbSh5JCw4KSl9LEYkLsm1ZGlyPWxvKHt0eXBlOkYkLHNlbGVjdG9yczpbWyIiLCJjZGtSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrUm93RGVmQ29sdW1ucyIsImNvbHVtbnMiXSx3aGVuOlsiY2RrUm93RGVmV2hlbiIsIndoZW4iXX0sZmVhdHVyZXM6W3hwXX0pLEYkLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGd9LHt0eXBlOkhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbeSRdfSx7dHlwZTpTcn1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChGJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY2RrUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrUm93RGVmQ29sdW1ucyIsIndoZW46IGNka1Jvd0RlZldoZW4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhnfSx7dHlwZTpIZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3kkXX0se3R5cGU6U3J9XX1dfSksbnVsbCk7Y2xhc3MgTCR7Y29uc3RydWN0b3IodCl7dGhpcy5fdmlld0NvbnRhaW5lcj10LEwkLm1vc3RSZWNlbnRDZWxsT3V0bGV0PXRoaXN9bmdPbkRlc3Ryb3koKXtMJC5tb3N0UmVjZW50Q2VsbE91dGxldD09PXRoaXMmJihMJC5tb3N0UmVjZW50Q2VsbE91dGxldD1udWxsKX19TCQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEwkKShTbShlaCkpfSxMJC7JtWRpcj1sbyh7dHlwZTpMJCxzZWxlY3RvcnM6W1siIiwiY2RrQ2VsbE91dGxldCIsIiJdXX0pLEwkLm1vc3RSZWNlbnRDZWxsT3V0bGV0PW51bGwsTCQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH1dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTCQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NlbGxPdXRsZXRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofV19KSxudWxsKTtjbGFzcyBCJHt9QiQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEIkKX0sQiQuybVjbXA9dG8oe3R5cGU6QiQsc2VsZWN0b3JzOltbImNkay1oZWFkZXItcm93Il0sWyJ0ciIsImNkay1oZWFkZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1oZWFkZXItcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSW0oMCwwKX0sZGlyZWN0aXZlczpbTCRdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQiQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiY2RrLWhlYWRlci1yb3csIHRyW2Nkay1oZWFkZXItcm93XSIsdGVtcGxhdGU6QSQsaG9zdDp7Y2xhc3M6ImNkay1oZWFkZXItcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOkhuLk5vbmV9XX1dLG51bGwsbnVsbCk7Y2xhc3MgViR7fVYkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxWJCl9LFYkLsm1Y21wPXRvKHt0eXBlOlYkLHNlbGVjdG9yczpbWyJjZGstZm9vdGVyLXJvdyJdLFsidHIiLCJjZGstZm9vdGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJjZGstZm9vdGVyLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkltKDAsMCl9LGRpcmVjdGl2ZXM6W0wkXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFYkLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImNkay1mb290ZXItcm93LCB0cltjZGstZm9vdGVyLXJvd10iLHRlbXBsYXRlOkEkLGhvc3Q6e2NsYXNzOiJjZGstZm9vdGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOnpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpIbi5Ob25lfV19XSxudWxsLG51bGwpO2NsYXNzIGoke31qJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aiQpfSxqJC7JtWNtcD10byh7dHlwZTpqJCxzZWxlY3RvcnM6W1siY2RrLXJvdyJdLFsidHIiLCJjZGstcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZJbSgwLDApfSxkaXJlY3RpdmVzOltMJF0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChqJCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJjZGstcm93LCB0cltjZGstcm93XSIsdGVtcGxhdGU6QSQsaG9zdDp7Y2xhc3M6ImNkay1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp6bi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SG4uTm9uZX1dfV0sbnVsbCxudWxsKTtjbGFzcyBVJHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlUmVmPXR9fVUkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVJCkoU20oWGcpKX0sVSQuybVkaXI9bG8oe3R5cGU6VSQsc2VsZWN0b3JzOltbIm5nLXRlbXBsYXRlIiwiY2RrTm9EYXRhUm93IiwiIl1dfSksVSQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYZ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVSQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibmctdGVtcGxhdGVbY2RrTm9EYXRhUm93XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYZ31dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBHJD1bInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdO2NsYXNzIFcke2NvbnN0cnVjdG9yKHQsZSxuLG8saT0hMCxhPSEwLHIpe3RoaXMuX2lzTmF0aXZlSHRtbFRhYmxlPXQsdGhpcy5fc3RpY2tDZWxsQ3NzPWUsdGhpcy5kaXJlY3Rpb249bix0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlcj1vLHRoaXMuX2lzQnJvd3Nlcj1pLHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQ9YSx0aGlzLl9wb3NpdGlvbkxpc3RlbmVyPXIsdGhpcy5fY2FjaGVkQ2VsbFdpZHRocz1bXSx0aGlzLl9ib3JkZXJDZWxsQ3NzPXt0b3A6YCR7ZX0tYm9yZGVyLWVsZW0tdG9wYCxib3R0b206YCR7ZX0tYm9yZGVyLWVsZW0tYm90dG9tYCxsZWZ0OmAke2V9LWJvcmRlci1lbGVtLWxlZnRgLHJpZ2h0OmAke2V9LWJvcmRlci1lbGVtLXJpZ2h0YH19Y2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LGUpe2NvbnN0IG49W107Zm9yKGNvbnN0IGUgb2YgdClpZihlLm5vZGVUeXBlPT09ZS5FTEVNRU5UX05PREUpe24ucHVzaChlKTtmb3IobGV0IHQ9MDt0PGUuY2hpbGRyZW4ubGVuZ3RoO3QrKyluLnB1c2goZS5jaGlsZHJlblt0XSl9dGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCgpPT57Zm9yKGNvbnN0IHQgb2Ygbil0aGlzLl9yZW1vdmVTdGlja3lTdHlsZSh0LGUpfSkpfXVwZGF0ZVN0aWNreUNvbHVtbnModCxlLG4sbz0hMCl7aWYoIXQubGVuZ3RofHwhdGhpcy5faXNCcm93c2VyfHwhZS5zb21lKCh0PT50KSkmJiFuLnNvbWUoKHQ9PnQpKSlyZXR1cm4gdm9pZCh0aGlzLl9wb3NpdGlvbkxpc3RlbmVyJiYodGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6W119KSx0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUVuZENvbHVtbnNVcGRhdGVkKHtzaXplczpbXX0pKSk7Y29uc3QgaT10WzBdLGE9aS5jaGlsZHJlbi5sZW5ndGgscj10aGlzLl9nZXRDZWxsV2lkdGhzKGksbykscz10aGlzLl9nZXRTdGlja3lTdGFydENvbHVtblBvc2l0aW9ucyhyLGUpLGw9dGhpcy5fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHIsbiksYz1lLmxhc3RJbmRleE9mKCEwKSxkPW4uaW5kZXhPZighMCk7dGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCgpPT57Y29uc3Qgbz0icnRsIj09PXRoaXMuZGlyZWN0aW9uLGk9bz8icmlnaHQiOiJsZWZ0IixwPW8/ImxlZnQiOiJyaWdodCI7Zm9yKGNvbnN0IG8gb2YgdClmb3IobGV0IHQ9MDt0PGE7dCsrKXtjb25zdCBhPW8uY2hpbGRyZW5bdF07ZVt0XSYmdGhpcy5fYWRkU3RpY2t5U3R5bGUoYSxpLHNbdF0sdD09PWMpLG5bdF0mJnRoaXMuX2FkZFN0aWNreVN0eWxlKGEscCxsW3RdLHQ9PT1kKX10aGlzLl9wb3NpdGlvbkxpc3RlbmVyJiYodGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6LTE9PT1jP1tdOnIuc2xpY2UoMCxjKzEpLm1hcCgoKHQsbik9PmVbbl0/dDpudWxsKSl9KSx0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUVuZENvbHVtbnNVcGRhdGVkKHtzaXplczotMT09PWQ/W106ci5zbGljZShkKS5tYXAoKCh0LGUpPT5uW2UrZF0/dDpudWxsKSkucmV2ZXJzZSgpfSkpfSkpfXN0aWNrUm93cyh0LGUsbil7aWYoIXRoaXMuX2lzQnJvd3NlcilyZXR1cm47Y29uc3Qgbz0iYm90dG9tIj09PW4/dC5zbGljZSgpLnJldmVyc2UoKTp0LGk9ImJvdHRvbSI9PT1uP2Uuc2xpY2UoKS5yZXZlcnNlKCk6ZSxhPVtdLHI9W10scz1bXTtmb3IobGV0IHQ9MCxlPTA7dDxvLmxlbmd0aDt0Kyspe2lmKCFpW3RdKWNvbnRpbnVlO2FbdF09ZTtjb25zdCBuPW9bdF07c1t0XT10aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT9BcnJheS5mcm9tKG4uY2hpbGRyZW4pOltuXTtjb25zdCBsPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O2UrPWwsclt0XT1sfWNvbnN0IGw9aS5sYXN0SW5kZXhPZighMCk7dGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCgpPT57dmFyIHQsZTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7aWYoIWlbdF0pY29udGludWU7Y29uc3QgZT1hW3RdLG89dD09PWw7Zm9yKGNvbnN0IGkgb2Ygc1t0XSl0aGlzLl9hZGRTdGlja3lTdHlsZShpLG4sZSxvKX0idG9wIj09PW4/bnVsbD09PSh0PXRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIpfHx2b2lkIDA9PT10fHx0LnN0aWNreUhlYWRlclJvd3NVcGRhdGVkKHtzaXplczpyLG9mZnNldHM6YSxlbGVtZW50czpzfSk6bnVsbD09PShlPXRoaXMuX3Bvc2l0aW9uTGlzdGVuZXIpfHx2b2lkIDA9PT1lfHxlLnN0aWNreUZvb3RlclJvd3NVcGRhdGVkKHtzaXplczpyLG9mZnNldHM6YSxlbGVtZW50czpzfSl9KSl9dXBkYXRlU3RpY2t5Rm9vdGVyQ29udGFpbmVyKHQsZSl7aWYoIXRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlKXJldHVybjtjb25zdCBuPXQucXVlcnlTZWxlY3RvcigidGZvb3QiKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKCk9PntlLnNvbWUoKHQ9PiF0KSk/dGhpcy5fcmVtb3ZlU3RpY2t5U3R5bGUobixbImJvdHRvbSJdKTp0aGlzLl9hZGRTdGlja3lTdHlsZShuLCJib3R0b20iLDAsITEpfSkpfV9yZW1vdmVTdGlja3lTdHlsZSh0LGUpe2Zvcihjb25zdCBuIG9mIGUpdC5zdHlsZVtuXT0iIix0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fYm9yZGVyQ2VsbENzc1tuXSk7RyQuc29tZSgobj0+LTE9PT1lLmluZGV4T2YobikmJnQuc3R5bGVbbl0pKT90LnN0eWxlLnpJbmRleD10aGlzLl9nZXRDYWxjdWxhdGVkWkluZGV4KHQpOih0LnN0eWxlLnpJbmRleD0iIix0aGlzLl9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50JiYodC5zdHlsZS5wb3NpdGlvbj0iIiksdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3N0aWNrQ2VsbENzcykpfV9hZGRTdGlja3lTdHlsZSh0LGUsbixvKXt0LmNsYXNzTGlzdC5hZGQodGhpcy5fc3RpY2tDZWxsQ3NzKSxvJiZ0LmNsYXNzTGlzdC5hZGQodGhpcy5fYm9yZGVyQ2VsbENzc1tlXSksdC5zdHlsZVtlXT1gJHtufXB4YCx0LnN0eWxlLnpJbmRleD10aGlzLl9nZXRDYWxjdWxhdGVkWkluZGV4KHQpLHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQmJih0LnN0eWxlLmNzc1RleHQrPSJwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7IHBvc2l0aW9uOiBzdGlja3k7ICIpfV9nZXRDYWxjdWxhdGVkWkluZGV4KHQpe2NvbnN0IGU9e3RvcDoxMDAsYm90dG9tOjEwLGxlZnQ6MSxyaWdodDoxfTtsZXQgbj0wO2Zvcihjb25zdCBvIG9mIEckKXQuc3R5bGVbb10mJihuKz1lW29dKTtyZXR1cm4gbj9gJHtufWA6IiJ9X2dldENlbGxXaWR0aHModCxlPSEwKXtpZighZSYmdGhpcy5fY2FjaGVkQ2VsbFdpZHRocy5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhY2hlZENlbGxXaWR0aHM7Y29uc3Qgbj1bXSxvPXQuY2hpbGRyZW47Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspbi5wdXNoKG9bdF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO3JldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzPW4sbn1fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnModCxlKXtjb25zdCBuPVtdO2xldCBvPTA7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZVtpXSYmKG5baV09byxvKz10W2ldKTtyZXR1cm4gbn1fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHQsZSl7Y29uc3Qgbj1bXTtsZXQgbz0wO2ZvcihsZXQgaT10Lmxlbmd0aDtpPjA7aS0tKWVbaV0mJihuW2ldPW8sbys9dFtpXSk7cmV0dXJuIG59fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBZJCh0KXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGNvbHVtbiB3aXRoIGlkICIke3R9Ii5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHEkPW5ldyBHYSgiQ0RLX1NQTCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBaJHt9WiQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFokKX0sWiQuybVkaXI9bG8oe3R5cGU6WiQsc2VsZWN0b3JzOltbImNkay10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsImNkay10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6YUYsdXNlQ2xhc3M6bkZ9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChaJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJjZGstdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVtjZGstdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTphRix1c2VDbGFzczpuRn1dfV19XSxudWxsLG51bGwpO2NsYXNzIFgke2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fVgkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxYJCkoU20oZWgpLFNtKGhnKSl9LFgkLsm1ZGlyPWxvKHt0eXBlOlgkLHNlbGVjdG9yczpbWyIiLCJyb3dPdXRsZXQiLCIiXV19KSxYJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmVofSx7dHlwZTpoZ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWCQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW3Jvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZWh9LHt0eXBlOmhnfV19KSxudWxsKTtjbGFzcyBLJHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudmlld0NvbnRhaW5lcj10LHRoaXMuZWxlbWVudFJlZj1lfX1LJC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SyQpKFNtKGVoKSxTbShoZykpfSxLJC7JtWRpcj1sbyh7dHlwZTpLJCxzZWxlY3RvcnM6W1siIiwiaGVhZGVyUm93T3V0bGV0IiwiIl1dfSksSyQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplaH0se3R5cGU6aGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEskLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IltoZWFkZXJSb3dPdXRsZXRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVofSx7dHlwZTpoZ31dfSksbnVsbCk7Y2xhc3MgSiR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19SiQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEokKShTbShlaCksU20oaGcpKX0sSiQuybVkaXI9bG8oe3R5cGU6SiQsc2VsZWN0b3JzOltbIiIsImZvb3RlclJvd091dGxldCIsIiJdXX0pLEokLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZWh9LHt0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChKJCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbZm9vdGVyUm93T3V0bGV0XSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTplaH0se3R5cGU6aGd9XX0pLG51bGwpO2NsYXNzIFEke2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fVEkLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRJCkoU20oZWgpLFNtKGhnKSl9LFEkLsm1ZGlyPWxvKHt0eXBlOlEkLHNlbGVjdG9yczpbWyIiLCJub0RhdGFSb3dPdXRsZXQiLCIiXV19KSxRJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmVofSx7dHlwZTpoZ31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUSQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW25vRGF0YVJvd091dGxldF0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZWh9LHt0eXBlOmhnfV19KSxudWxsKTtjb25zdCAkJD0nXG4gIDxuZy1jb250ZW50IHNlbGVjdD0iY2FwdGlvbiI+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9ImNvbGdyb3VwLCBjb2wiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgcm93T3V0bGV0PjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyIG5vRGF0YVJvd091dGxldD48L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBmb290ZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+XG4nO2NsYXNzIHQwe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5fZGlmZmVycz10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2Rpcj1pLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fdmlld1JlcGVhdGVyPXMsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9bCx0aGlzLl92aWV3cG9ydFJ1bGVyPWMsdGhpcy5fc3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcj1kLHRoaXMuX29uRGVzdHJveT1uZXcgSSx0aGlzLl9jb2x1bW5EZWZzQnlOYW1lPW5ldyBNYXAsdGhpcy5fY3VzdG9tQ29sdW1uRGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbVJvd0RlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcz1uZXcgU2V0LHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITAsdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMCx0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITAsdGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9ImNkay10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMCx0aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3c9ITEsdGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzPSExLHRoaXMuX2ZpeGVkTGF5b3V0PSExLHRoaXMuY29udGVudENoYW5nZWQ9bmV3IExoLHRoaXMudmlld0NoYW5nZT1uZXcgRih7c3RhcnQ6MCxlbmQ6TnVtYmVyLk1BWF9WQUxVRX0pLG98fHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0YWJsZSIpLHRoaXMuX2RvY3VtZW50PWEsdGhpcy5faXNOYXRpdmVIdG1sVGFibGU9IlRBQkxFIj09PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZX1nZXQgdHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IHRyYWNrQnkodCl7InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG51bGw9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0fHxjb25zb2xlLndhcm4oYHRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX0uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IGRhdGFTb3VyY2UoKXtyZXR1cm4gdGhpcy5fZGF0YVNvdXJjZX1zZXQgZGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhU291cmNlIT09dCYmdGhpcy5fc3dpdGNoRGF0YVNvdXJjZSh0KX1nZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKCl7cmV0dXJuIHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93c31zZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKHQpe3RoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz15eih0KSx0aGlzLl9yb3dPdXRsZXQmJnRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aCYmKHRoaXMuX2ZvcmNlUmVuZGVyRGF0YVJvd3MoKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpKX1nZXQgZml4ZWRMYXlvdXQoKXtyZXR1cm4gdGhpcy5fZml4ZWRMYXlvdXR9c2V0IGZpeGVkTGF5b3V0KHQpe3RoaXMuX2ZpeGVkTGF5b3V0PXl6KHQpLHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzPSEwLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMH1uZ09uSW5pdCgpe3RoaXMuX3NldHVwU3RpY2t5U3R5bGVyKCksdGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJnRoaXMuX2FwcGx5TmF0aXZlVGFibGVTZWN0aW9ucygpLHRoaXMuX2RhdGFEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKCh0LGUpPT50aGlzLnRyYWNrQnk/dGhpcy50cmFja0J5KGUuZGF0YUluZGV4LGUuZGF0YSk6ZSkpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShJZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITB9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7aWYodGhpcy5fY2FjaGVSb3dEZWZzKCksdGhpcy5fY2FjaGVDb2x1bW5EZWZzKCksIXRoaXMuX2hlYWRlclJvd0RlZnMubGVuZ3RoJiYhdGhpcy5fZm9vdGVyUm93RGVmcy5sZW5ndGgmJiF0aGlzLl9yb3dEZWZzLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IoIk1pc3NpbmcgZGVmaW5pdGlvbnMgZm9yIGhlYWRlciwgZm9vdGVyLCBhbmQgcm93OyBjYW5ub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkLiIpfSkoKTtjb25zdCBlPXRoaXMuX3JlbmRlclVwZGF0ZWRDb2x1bW5zKCl8fHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWR8fHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ7dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PXRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldHx8ZSx0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz1lLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQmJih0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSExKSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkJiYodGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMSksdGhpcy5kYXRhU291cmNlJiZ0aGlzLl9yb3dEZWZzLmxlbmd0aD4wJiYhdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uP3RoaXMuX29ic2VydmVSZW5kZXJDaGFuZ2VzKCk6dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0JiZ0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpLHRoaXMuX2NoZWNrU3RpY2t5U3RhdGVzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX25vRGF0YVJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuY2xlYXIoKSx0aGlzLl9vbkRlc3Ryb3kubmV4dCgpLHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpLCRIKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpfXJlbmRlclJvd3MoKXt0aGlzLl9yZW5kZXJSb3dzPXRoaXMuX2dldEFsbFJlbmRlclJvd3MoKTtjb25zdCB0PXRoaXMuX2RhdGFEaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJSb3dzKTtpZighdClyZXR1cm4gdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdm9pZCB0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKTtjb25zdCBlPXRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyO3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCxlLCgodCxlLG4pPT50aGlzLl9nZXRFbWJlZGRlZFZpZXdBcmdzKHQuaXRlbSxuKSksKHQ9PnQuaXRlbS5kYXRhKSwodD0+ezE9PT10Lm9wZXJhdGlvbiYmdC5jb250ZXh0JiZ0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKHQucmVjb3JkLml0ZW0ucm93RGVmLHQuY29udGV4dCl9KSksdGhpcy5fdXBkYXRlUm93SW5kZXhDb250ZXh0KCksdC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHQ9PntlLmdldCh0LmN1cnJlbnRJbmRleCkuY29udGV4dC4kaW1wbGljaXQ9dC5pdGVtLmRhdGF9KSksdGhpcy5fdXBkYXRlTm9EYXRhUm93KCksdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSx0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKX1hZGRDb2x1bW5EZWYodCl7dGhpcy5fY3VzdG9tQ29sdW1uRGVmcy5hZGQodCl9cmVtb3ZlQ29sdW1uRGVmKHQpe3RoaXMuX2N1c3RvbUNvbHVtbkRlZnMuZGVsZXRlKHQpfWFkZFJvd0RlZih0KXt0aGlzLl9jdXN0b21Sb3dEZWZzLmFkZCh0KX1yZW1vdmVSb3dEZWYodCl7dGhpcy5fY3VzdG9tUm93RGVmcy5kZWxldGUodCl9YWRkSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlSGVhZGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQ9ITB9YWRkRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuYWRkKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9cmVtb3ZlRm9vdGVyUm93RGVmKHQpe3RoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMuZGVsZXRlKHQpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITB9c2V0Tm9EYXRhUm93KHQpe3RoaXMuX2N1c3RvbU5vRGF0YVJvdz10fXVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2hlYWRlclJvd091dGxldCksZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGhlYWQiKTtlJiYoZS5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7Y29uc3Qgbj10aGlzLl9oZWFkZXJSb3dEZWZzLm1hcCgodD0+dC5zdGlja3kpKTt0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LFsidG9wIl0pLHRoaXMuX3N0aWNreVN0eWxlci5zdGlja1Jvd3ModCxuLCJ0b3AiKSx0aGlzLl9oZWFkZXJSb3dEZWZzLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX11cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKXtjb25zdCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9mb290ZXJSb3dPdXRsZXQpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInRmb290Iik7ZSYmKGUuc3R5bGUuZGlzcGxheT10Lmxlbmd0aD8iIjoibm9uZSIpO2NvbnN0IG49dGhpcy5fZm9vdGVyUm93RGVmcy5tYXAoKHQ9PnQuc3RpY2t5KSk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxbImJvdHRvbSJdKSx0aGlzLl9zdGlja3lTdHlsZXIuc3RpY2tSb3dzKHQsbiwiYm90dG9tIiksdGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbiksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKCh0PT50LnJlc2V0U3RpY2t5Q2hhbmdlZCgpKSl9dXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5faGVhZGVyUm93T3V0bGV0KSxlPXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9yb3dPdXRsZXQpLG49dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2Zvb3RlclJvd091dGxldCk7KHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlJiYhdGhpcy5fZml4ZWRMYXlvdXR8fHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldCkmJih0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyhbLi4udCwuLi5lLC4uLm5dLFsibGVmdCIsInJpZ2h0Il0pLHRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD0hMSksdC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhbdF0sdGhpcy5faGVhZGVyUm93RGVmc1tlXSl9KSksdGhpcy5fcm93RGVmcy5mb3JFYWNoKCh0PT57Y29uc3Qgbj1bXTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl0aGlzLl9yZW5kZXJSb3dzW29dLnJvd0RlZj09PXQmJm4ucHVzaChlW29dKTt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMobix0KX0pKSxuLmZvckVhY2goKCh0LGUpPT57dGhpcy5fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKFt0XSx0aGlzLl9mb290ZXJSb3dEZWZzW2VdKX0pKSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX1fZ2V0QWxsUmVuZGVyUm93cygpe2NvbnN0IHQ9W10sZT10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwO3RoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA9bmV3IE1hcDtmb3IobGV0IG49MDtuPHRoaXMuX2RhdGEubGVuZ3RoO24rKyl7bGV0IG89dGhpcy5fZGF0YVtuXTtjb25zdCBpPXRoaXMuX2dldFJlbmRlclJvd3NGb3JEYXRhKG8sbixlLmdldChvKSk7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5oYXMobyl8fHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXAuc2V0KG8sbmV3IFdlYWtNYXApO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtsZXQgbj1pW2VdO2NvbnN0IG89dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5nZXQobi5kYXRhKTtvLmhhcyhuLnJvd0RlZik/by5nZXQobi5yb3dEZWYpLnB1c2gobik6by5zZXQobi5yb3dEZWYsW25dKSx0LnB1c2gobil9fXJldHVybiB0fV9nZXRSZW5kZXJSb3dzRm9yRGF0YSh0LGUsbil7cmV0dXJuIHRoaXMuX2dldFJvd0RlZnModCxlKS5tYXAoKG89Pntjb25zdCBpPW4mJm4uaGFzKG8pP24uZ2V0KG8pOltdO2lmKGkubGVuZ3RoKXtjb25zdCB0PWkuc2hpZnQoKTtyZXR1cm4gdC5kYXRhSW5kZXg9ZSx0fXJldHVybntkYXRhOnQscm93RGVmOm8sZGF0YUluZGV4OmV9fSkpfV9jYWNoZUNvbHVtbkRlZnMoKXt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLmNsZWFyKCksZTAodGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Q29sdW1uRGVmcyksdGhpcy5fY3VzdG9tQ29sdW1uRGVmcykuZm9yRWFjaCgodD0+e2lmKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuaGFzKHQubmFtZSkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgRHVwbGljYXRlIGNvbHVtbiBkZWZpbml0aW9uIG5hbWUgcHJvdmlkZWQ6ICIke3R9Ii5gKX0pKHQubmFtZSk7dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5zZXQodC5uYW1lLHQpfSkpfV9jYWNoZVJvd0RlZnMoKXt0aGlzLl9oZWFkZXJSb3dEZWZzPWUwKHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudEhlYWRlclJvd0RlZnMpLHRoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnMpLHRoaXMuX2Zvb3RlclJvd0RlZnM9ZTAodGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Rm9vdGVyUm93RGVmcyksdGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcyksdGhpcy5fcm93RGVmcz1lMCh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRSb3dEZWZzKSx0aGlzLl9jdXN0b21Sb3dEZWZzKTtjb25zdCB0PXRoaXMuX3Jvd0RlZnMuZmlsdGVyKCh0PT4hdC53aGVuKSk7aWYoIXRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzJiZ0Lmxlbmd0aD4xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiVGhlcmUgY2FuIG9ubHkgYmUgb25lIGRlZmF1bHQgcm93IHdpdGhvdXQgYSB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbi4iKX0pKCk7dGhpcy5fZGVmYXVsdFJvd0RlZj10WzBdfV9yZW5kZXJVcGRhdGVkQ29sdW1ucygpe2NvbnN0IHQ9KHQsZSk9PnR8fCEhZS5nZXRDb2x1bW5zRGlmZigpLGU9dGhpcy5fcm93RGVmcy5yZWR1Y2UodCwhMSk7ZSYmdGhpcy5fZm9yY2VSZW5kZXJEYXRhUm93cygpO2NvbnN0IG49dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSk7biYmdGhpcy5fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCk7Y29uc3Qgbz10aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtyZXR1cm4gbyYmdGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksZXx8bnx8b31fc3dpdGNoRGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhPVtdLCRIKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj1udWxsKSx0fHwodGhpcy5fZGF0YURpZmZlciYmdGhpcy5fZGF0YURpZmZlci5kaWZmKFtdKSx0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpKSx0aGlzLl9kYXRhU291cmNlPXR9X29ic2VydmVSZW5kZXJDaGFuZ2VzKCl7aWYoIXRoaXMuZGF0YVNvdXJjZSlyZXR1cm47bGV0IHQ7aWYoJEgodGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpOk50KHRoaXMuZGF0YVNvdXJjZSk/dD10aGlzLmRhdGFTb3VyY2U6QXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpJiYodD1FdCh0aGlzLmRhdGFTb3VyY2UpKSx2b2lkIDA9PT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gZSgpe3JldHVybiBFcnJvcigiUHJvdmlkZWQgZGF0YSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZSIpfSkoKTt0aGlzLl9yZW5kZXJDaGFuZ2VTdWJzY3JpcHRpb249dC5waXBlKEllKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX2RhdGE9dHx8W10sdGhpcy5yZW5kZXJSb3dzKCl9KSl9X2ZvcmNlUmVuZGVySGVhZGVyUm93cygpe3RoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9oZWFkZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2hlYWRlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9oZWFkZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl9X2ZvcmNlUmVuZGVyRm9vdGVyUm93cygpe3RoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Zvb3RlclJvd0RlZnMuZm9yRWFjaCgoKHQsZSk9PnRoaXMuX3JlbmRlclJvdyh0aGlzLl9mb290ZXJSb3dPdXRsZXQsdCxlKSkpLHRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCl9X2FkZFN0aWNreUNvbHVtblN0eWxlcyh0LGUpe2NvbnN0IG49QXJyYXkuZnJvbShlLmNvbHVtbnN8fFtdKS5tYXAoKHQ9Pntjb25zdCBlPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KHQpO2lmKCFlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgWSQodCk7cmV0dXJuIGV9KSksbz1uLm1hcCgodD0+dC5zdGlja3kpKSxpPW4ubWFwKCh0PT50LnN0aWNreUVuZCkpO3RoaXMuX3N0aWNreVN0eWxlci51cGRhdGVTdGlja3lDb2x1bW5zKHQsbyxpLCF0aGlzLl9maXhlZExheW91dHx8dGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHMpfV9nZXRSZW5kZXJlZFJvd3ModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MDtuPHQudmlld0NvbnRhaW5lci5sZW5ndGg7bisrKXtjb25zdCBvPXQudmlld0NvbnRhaW5lci5nZXQobik7ZS5wdXNoKG8ucm9vdE5vZGVzWzBdKX1yZXR1cm4gZX1fZ2V0Um93RGVmcyh0LGUpe2lmKDE9PXRoaXMuX3Jvd0RlZnMubGVuZ3RoKXJldHVyblt0aGlzLl9yb3dEZWZzWzBdXTtsZXQgbj1bXTtpZih0aGlzLm11bHRpVGVtcGxhdGVEYXRhUm93cyluPXRoaXMuX3Jvd0RlZnMuZmlsdGVyKChuPT4hbi53aGVufHxuLndoZW4oZSx0KSkpO2Vsc2V7bGV0IG89dGhpcy5fcm93RGVmcy5maW5kKChuPT5uLndoZW4mJm4ud2hlbihlLHQpKSl8fHRoaXMuX2RlZmF1bHRSb3dEZWY7byYmbi5wdXNoKG8pfWlmKCFuLmxlbmd0aCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIG8odCl7cmV0dXJuIEVycm9yKGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHJvdyBkZWZpbml0aW9uIGZvciB0aGVwcm92aWRlZCByb3cgZGF0YTogJHtKU09OLnN0cmluZ2lmeSh0KX1gKX0pKHQpO3JldHVybiBufV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7cmV0dXJue3RlbXBsYXRlUmVmOnQucm93RGVmLnRlbXBsYXRlLGNvbnRleHQ6eyRpbXBsaWNpdDp0LmRhdGF9LGluZGV4OmV9fV9yZW5kZXJSb3codCxlLG4sbz17fSl7Y29uc3QgaT10LnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KGUudGVtcGxhdGUsbyxuKTtyZXR1cm4gdGhpcy5fcmVuZGVyQ2VsbFRlbXBsYXRlRm9ySXRlbShlLG8pLGl9X3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0odCxlKXtmb3IobGV0IG4gb2YgdGhpcy5fZ2V0Q2VsbFRlbXBsYXRlcyh0KSlMJC5tb3N0UmVjZW50Q2VsbE91dGxldCYmTCQubW9zdFJlY2VudENlbGxPdXRsZXQuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KG4sZSk7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3VwZGF0ZVJvd0luZGV4Q29udGV4dCgpe2NvbnN0IHQ9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXI7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBvPXQuZ2V0KGUpLmNvbnRleHQ7by5jb3VudD1uLG8uZmlyc3Q9MD09PWUsby5sYXN0PWU9PT1uLTEsby5ldmVuPWUlMj09MCxvLm9kZD0hby5ldmVuLHRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzPyhvLmRhdGFJbmRleD10aGlzLl9yZW5kZXJSb3dzW2VdLmRhdGFJbmRleCxvLnJlbmRlckluZGV4PWUpOm8uaW5kZXg9dGhpcy5fcmVuZGVyUm93c1tlXS5kYXRhSW5kZXh9fV9nZXRDZWxsVGVtcGxhdGVzKHQpe3JldHVybiB0JiZ0LmNvbHVtbnM/QXJyYXkuZnJvbSh0LmNvbHVtbnMsKGU9Pntjb25zdCBuPXRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuZ2V0KGUpO2lmKCFuJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgWSQoZSk7cmV0dXJuIHQuZXh0cmFjdENlbGxUZW1wbGF0ZShuKX0pKTpbXX1fYXBwbHlOYXRpdmVUYWJsZVNlY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZT1be3RhZzoidGhlYWQiLG91dGxldHM6W3RoaXMuX2hlYWRlclJvd091dGxldF19LHt0YWc6InRib2R5IixvdXRsZXRzOlt0aGlzLl9yb3dPdXRsZXQsdGhpcy5fbm9EYXRhUm93T3V0bGV0XX0se3RhZzoidGZvb3QiLG91dGxldHM6W3RoaXMuX2Zvb3RlclJvd091dGxldF19XTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQobi50YWcpO2Uuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93Z3JvdXAiKTtmb3IoY29uc3QgdCBvZiBuLm91dGxldHMpZS5hcHBlbmRDaGlsZCh0LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7dC5hcHBlbmRDaGlsZChlKX10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2ZvcmNlUmVuZGVyRGF0YVJvd3MoKXt0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5yZW5kZXJSb3dzKCl9X2NoZWNrU3RpY2t5U3RhdGVzKCl7Y29uc3QgdD0odCxlKT0+dHx8ZS5oYXNTdGlja3lDaGFuZ2VkKCk7dGhpcy5faGVhZGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCksdGhpcy5fZm9vdGVyUm93RGVmcy5yZWR1Y2UodCwhMSkmJnRoaXMudXBkYXRlU3RpY2t5Rm9vdGVyUm93U3R5bGVzKCksQXJyYXkuZnJvbSh0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnZhbHVlcygpKS5yZWR1Y2UodCwhMSkmJih0aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXQ9ITAsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSl9X3NldHVwU3RpY2t5U3R5bGVyKCl7dGhpcy5fc3RpY2t5U3R5bGVyPW5ldyBXJCh0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSx0aGlzLnN0aWNreUNzc0NsYXNzLHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciIsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCx0aGlzLl9zdGlja3lQb3NpdGlvbmluZ0xpc3RlbmVyKSwodGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6RXQoKSkucGlwZShJZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9zdGlja3lTdHlsZXIuZGlyZWN0aW9uPXQsdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKX0pKX1fZ2V0T3duRGVmcyh0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PiF0Ll90YWJsZXx8dC5fdGFibGU9PT10aGlzKSl9X3VwZGF0ZU5vRGF0YVJvdygpe2NvbnN0IHQ9dGhpcy5fY3VzdG9tTm9EYXRhUm93fHx0aGlzLl9ub0RhdGFSb3c7aWYodCl7Y29uc3QgZT0wPT09dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoO2lmKGUhPT10aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3cpe2NvbnN0IG49dGhpcy5fbm9EYXRhUm93T3V0bGV0LnZpZXdDb250YWluZXI7ZT9uLmNyZWF0ZUVtYmVkZGVkVmlldyh0LnRlbXBsYXRlUmVmKTpuLmNsZWFyKCksdGhpcy5faXNTaG93aW5nTm9EYXRhUm93PWV9fX19ZnVuY3Rpb24gZTAodCxlKXtyZXR1cm4gdC5jb25jYXQoQXJyYXkuZnJvbShlKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3QwLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0MCkoU20oSGcpLFNtKFVnKSxTbShoZyksTmEoInJvbGUiKSxTbShISSw4KSxTbShaXyksU20od3opLFNtKGFGKSxTbShFJCksU20odUYpLFNtKHEkLDEyKSl9LHQwLsm1Y21wPXRvKHt0eXBlOnQwLHNlbGVjdG9yczpbWyJjZGstdGFibGUiXSxbInRhYmxlIiwiY2RrLXRhYmxlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQoZSxuLG8pe2lmKDEmZSYmKCRoKG8sVSQsNSksJGgobyxPJCw1KSwkaChvLEYkLDUpLCRoKG8seiQsNSksJGgobyxIJCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5fbm9EYXRhUm93PXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9jb250ZW50Q29sdW1uRGVmcz10KSxKaCh0PXRiKCkpJiYobi5fY29udGVudFJvd0RlZnM9dCksSmgodD10YigpKSYmKG4uX2NvbnRlbnRIZWFkZXJSb3dEZWZzPXQpLEpoKHQ9dGIoKSkmJihuLl9jb250ZW50Rm9vdGVyUm93RGVmcz10KX19LHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUWgoWCQsNyksUWgoSyQsNyksUWgoSiQsNyksUWgoUSQsNykpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX3Jvd091dGxldD10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5faGVhZGVyUm93T3V0bGV0PXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLl9mb290ZXJSb3dPdXRsZXQ9dC5maXJzdCksSmgodD10YigpKSYmKG4uX25vRGF0YVJvd091dGxldD10LmZpcnN0KX19LGhvc3RBdHRyczpbMSwiY2RrLXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoImNkay10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxpbnB1dHM6e3RyYWNrQnk6InRyYWNrQnkiLGRhdGFTb3VyY2U6ImRhdGFTb3VyY2UiLG11bHRpVGVtcGxhdGVEYXRhUm93czoibXVsdGlUZW1wbGF0ZURhdGFSb3dzIixmaXhlZExheW91dDoiZml4ZWRMYXlvdXQifSxvdXRwdXRzOntjb250ZW50Q2hhbmdlZDoiY29udGVudENoYW5nZWQifSxleHBvcnRBczpbImNka1RhYmxlIl0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTp5JCx1c2VFeGlzdGluZzp0MH0se3Byb3ZpZGU6YUYsdXNlQ2xhc3M6ZUZ9LHtwcm92aWRlOkUkLHVzZUNsYXNzOlIkfSx7cHJvdmlkZTpxJCx1c2VWYWx1ZTpudWxsfV0pXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJjYXB0aW9uIiwiY29sZ3JvdXAsIGNvbCJdLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWyJoZWFkZXJSb3dPdXRsZXQiLCIiXSxbInJvd091dGxldCIsIiJdLFsibm9EYXRhUm93T3V0bGV0IiwiIl0sWyJmb290ZXJSb3dPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFptKGYkKSxYbSgwKSxYbSgxLDEpLEltKDIsMCksSW0oMywxKSxJbSg0LDIpLEltKDUsMykpfSxkaXJlY3RpdmVzOltLJCxYJCxRJCxKJF0sc3R5bGVzOlsiLmNkay10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuIl0sZW5jYXBzdWxhdGlvbjoyfSksdDAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpIZ30se3R5cGU6VWd9LHt0eXBlOmhnfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInJvbGUiXX1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOnd6fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbYUZdfV19LHt0eXBlOlIkLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0UkXX1dfSx7dHlwZTp1Rn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpFcn0se3R5cGU6a3IsYXJnczpbcSRdfV19XSx0MC5wcm9wRGVjb3JhdG9ycz17dHJhY2tCeTpbe3R5cGU6eHl9XSxkYXRhU291cmNlOlt7dHlwZTp4eX1dLG11bHRpVGVtcGxhdGVEYXRhUm93czpbe3R5cGU6eHl9XSxmaXhlZExheW91dDpbe3R5cGU6eHl9XSxjb250ZW50Q2hhbmdlZDpbe3R5cGU6T3l9XSxfcm93T3V0bGV0Olt7dHlwZTpaYSxhcmdzOltYJCx7c3RhdGljOiEwfV19XSxfaGVhZGVyUm93T3V0bGV0Olt7dHlwZTpaYSxhcmdzOltLJCx7c3RhdGljOiEwfV19XSxfZm9vdGVyUm93T3V0bGV0Olt7dHlwZTpaYSxhcmdzOltKJCx7c3RhdGljOiEwfV19XSxfbm9EYXRhUm93T3V0bGV0Olt7dHlwZTpaYSxhcmdzOltRJCx7c3RhdGljOiEwfV19XSxfY29udGVudENvbHVtbkRlZnM6W3t0eXBlOllhLGFyZ3M6W08kLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRSb3dEZWZzOlt7dHlwZTpZYSxhcmdzOltGJCx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50SGVhZGVyUm93RGVmczpbe3R5cGU6WWEsYXJnczpbeiQse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEZvb3RlclJvd0RlZnM6W3t0eXBlOllhLGFyZ3M6W0gkLHtkZXNjZW5kYW50czohMH1dfV0sX25vRGF0YVJvdzpbe3R5cGU6cWEsYXJnczpbVSRdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodDAsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXRhYmxlLCB0YWJsZVtjZGstdGFibGVdIixleHBvcnRBczoiY2RrVGFibGUiLHRlbXBsYXRlOiQkLGhvc3Q6e2NsYXNzOiJjZGstdGFibGUiLCJbY2xhc3MuY2RrLXRhYmxlLWZpeGVkLWxheW91dF0iOiJmaXhlZExheW91dCJ9LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxwcm92aWRlcnM6W3twcm92aWRlOnkkLHVzZUV4aXN0aW5nOnQwfSx7cHJvdmlkZTphRix1c2VDbGFzczplRn0se3Byb3ZpZGU6RSQsdXNlQ2xhc3M6UiR9LHtwcm92aWRlOnEkLHVzZVZhbHVlOm51bGx9XSxzdHlsZXM6WyIuY2RrLXRhYmxlLWZpeGVkLWxheW91dHt0YWJsZS1sYXlvdXQ6Zml4ZWR9XG4iXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkhnfSx7dHlwZTpVZ30se3R5cGU6aGd9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpqYSxhcmdzOlsicm9sZSJdfV19LHt0eXBlOkhJLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6d3p9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlthRl19XX0se3R5cGU6UiQsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbRSRdfV19LHt0eXBlOnVGfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkVyfSx7dHlwZTprcixhcmdzOltxJF19XX1dfSkse2NvbnRlbnRDaGFuZ2VkOlt7dHlwZTpPeX1dLHRyYWNrQnk6W3t0eXBlOnh5fV0sZGF0YVNvdXJjZTpbe3R5cGU6eHl9XSxtdWx0aVRlbXBsYXRlRGF0YVJvd3M6W3t0eXBlOnh5fV0sZml4ZWRMYXlvdXQ6W3t0eXBlOnh5fV0sX3Jvd091dGxldDpbe3R5cGU6WmEsYXJnczpbWCQse3N0YXRpYzohMH1dfV0sX2hlYWRlclJvd091dGxldDpbe3R5cGU6WmEsYXJnczpbSyQse3N0YXRpYzohMH1dfV0sX2Zvb3RlclJvd091dGxldDpbe3R5cGU6WmEsYXJnczpbSiQse3N0YXRpYzohMH1dfV0sX25vRGF0YVJvd091dGxldDpbe3R5cGU6WmEsYXJnczpbUSQse3N0YXRpYzohMH1dfV0sX2NvbnRlbnRDb2x1bW5EZWZzOlt7dHlwZTpZYSxhcmdzOltPJCx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Um93RGVmczpbe3R5cGU6WWEsYXJnczpbRiQse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEhlYWRlclJvd0RlZnM6W3t0eXBlOllhLGFyZ3M6W3okLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRGb290ZXJSb3dEZWZzOlt7dHlwZTpZYSxhcmdzOltIJCx7ZGVzY2VuZGFudHM6ITB9XX1dLF9ub0RhdGFSb3c6W3t0eXBlOnFhLGFyZ3M6W1UkXX1dfSk7Y2xhc3MgbjB7Y29uc3RydWN0b3IodCxlKXt0aGlzLl90YWJsZT10LHRoaXMuX29wdGlvbnM9ZSx0aGlzLmp1c3RpZnk9InN0YXJ0Iix0aGlzLl9vcHRpb25zPWV8fHt9fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCl9bmdPbkluaXQoKXtpZih0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpLHZvaWQgMD09PXRoaXMuaGVhZGVyVGV4dCYmKHRoaXMuaGVhZGVyVGV4dD10aGlzLl9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpKSx0aGlzLmRhdGFBY2Nlc3Nvcnx8KHRoaXMuZGF0YUFjY2Vzc29yPXRoaXMuX29wdGlvbnMuZGVmYXVsdERhdGFBY2Nlc3Nvcnx8KCh0LGUpPT50W2VdKSksdGhpcy5fdGFibGUpdGhpcy5jb2x1bW5EZWYuY2VsbD10aGlzLmNlbGwsdGhpcy5jb2x1bW5EZWYuaGVhZGVyQ2VsbD10aGlzLmhlYWRlckNlbGwsdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtlbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiVGV4dCBjb2x1bW4gY291bGQgbm90IGZpbmQgYSBwYXJlbnQgdGFibGUgZm9yIHJlZ2lzdHJhdGlvbi4iKX0pKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl90YWJsZSYmdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKX1fY3JlYXRlRGVmYXVsdEhlYWRlclRleHQoKXtjb25zdCB0PXRoaXMubmFtZTtpZighdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIlRhYmxlIHRleHQgY29sdW1uIG11c3QgaGF2ZSBhIG5hbWUuIil9KSgpO3JldHVybiB0aGlzLl9vcHRpb25zJiZ0aGlzLl9vcHRpb25zLmRlZmF1bHRIZWFkZXJUZXh0VHJhbnNmb3JtP3RoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0odCk6dFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSl9X3N5bmNDb2x1bW5EZWZOYW1lKCl7dGhpcy5jb2x1bW5EZWYmJih0aGlzLmNvbHVtbkRlZi5uYW1lPXRoaXMubmFtZSl9fW4wLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuMCkoU20odDAsOCksU20oXyQsOCkpfSxuMC7JtWNtcD10byh7dHlwZTpuMCxzZWxlY3RvcnM6W1siY2RrLXRleHQtY29sdW1uIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUWgoTyQsNyksUWgoQyQsNyksUWgoTSQsNykpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uY29sdW1uRGVmPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLmNlbGw9dC5maXJzdCksSmgodD10YigpKSYmKG4uaGVhZGVyQ2VsbD10LmZpcnN0KX19LGlucHV0czp7anVzdGlmeToianVzdGlmeSIsbmFtZToibmFtZSIsaGVhZGVyVGV4dDoiaGVhZGVyVGV4dCIsZGF0YUFjY2Vzc29yOiJkYXRhQWNjZXNzb3IifSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1siY2RrQ29sdW1uRGVmIiwiIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0hlYWRlckNlbGxEZWYiXSxbImNkay1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJjZGtDZWxsRGVmIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiXSxbImNkay1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihObSgwLDApLFFwKDEsZyQsMiwzLCJ0aCIsMSksUXAoMixoJCwyLDMsInRkIiwyKSx6bSgpKX0sZGlyZWN0aXZlczpbTyQsTSQsQyQsdyQsUyRdLGVuY2Fwc3VsYXRpb246Mn0pLG4wLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltfJF19XX1dLG4wLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTp4eX1dLGhlYWRlclRleHQ6W3t0eXBlOnh5fV0sZGF0YUFjY2Vzc29yOlt7dHlwZTp4eX1dLGp1c3RpZnk6W3t0eXBlOnh5fV0sY29sdW1uRGVmOlt7dHlwZTpaYSxhcmdzOltPJCx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTpaYSxhcmdzOltDJCx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTpaYSxhcmdzOltNJCx7c3RhdGljOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChuMCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJjZGstdGV4dC1jb2x1bW4iLHRlbXBsYXRlOidcbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj5cbiAgICAgIDx0aCBjZGstaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPSJqdXN0aWZ5Ij5cbiAgICAgICAge3toZWFkZXJUZXh0fX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2RrLWNlbGwgKmNka0NlbGxEZWY9ImxldCBkYXRhIiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAnLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnQwLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbXyRdfV19XX0pLHtqdXN0aWZ5Olt7dHlwZTp4eX1dLG5hbWU6W3t0eXBlOnh5fV0saGVhZGVyVGV4dDpbe3R5cGU6eHl9XSxkYXRhQWNjZXNzb3I6W3t0eXBlOnh5fV0sY29sdW1uRGVmOlt7dHlwZTpaYSxhcmdzOltPJCx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTpaYSxhcmdzOltDJCx7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTpaYSxhcmdzOltNJCx7c3RhdGljOiEwfV19XX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgbzA9W3QwLEYkLEMkLEwkLE0kLHYkLE8kLFMkLGokLHckLGskLEIkLHokLFYkLEgkLFgkLEskLEokLG4wLFUkLFokLFEkXTtjbGFzcyBpMHt9aTAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGkwKX0saTAuybVtb2Q9YW8oe3R5cGU6aTB9KSxpMC7JtWluaj12bih7aW1wb3J0czpbW19GXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGkwLFt7dHlwZTpBeSxhcmdzOlt7ZXhwb3J0czpvMCxkZWNsYXJhdGlvbnM6bzAsaW1wb3J0czpbX0ZdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oaTAse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt0MCxGJCxDJCxMJCxNJCx2JCxPJCxTJCxqJCx3JCxrJCxCJCx6JCxWJCxIJCxYJCxLJCxKJCxuMCxVJCxaJCxRJF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bX0ZdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3QwLEYkLEMkLEwkLE0kLHYkLE8kLFMkLGokLHckLGskLEIkLHokLFYkLEgkLFgkLEskLEokLG4wLFUkLFokLFEkXX19KTtjb25zdCBhMD1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXTtmdW5jdGlvbiByMCh0LGUpe2lmKDEmdCYmKFJtKDAsInRoIiwzKSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtkdSgidGV4dC1hbGlnbiIsdC5qdXN0aWZ5KSxyYygxKSxEdSgiICIsdC5oZWFkZXJUZXh0LCIgIil9fWZ1bmN0aW9uIHMwKHQsZSl7aWYoMSZ0JiYoUm0oMCwidGQiLDQpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPVltKCk7ZHUoInRleHQtYWxpZ24iLG4uanVzdGlmeSkscmMoMSksRHUoIiAiLG4uZGF0YUFjY2Vzc29yKHQsbi5uYW1lKSwiICIpfX1jbGFzcyBsMHt9bDAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGwwKX0sbDAuybVkaXI9bG8oe3R5cGU6bDAsc2VsZWN0b3JzOltbIm1hdC10YWJsZSIsInJlY3ljbGVSb3dzIiwiIl0sWyJ0YWJsZSIsIm1hdC10YWJsZSIsIiIsInJlY3ljbGVSb3dzIiwiIl1dLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6YUYsdXNlQ2xhc3M6bkZ9XSldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsMCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVttYXQtdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTphRix1c2VDbGFzczpuRn1dfV19XSxudWxsLG51bGwpO2NsYXNzIGMwIGV4dGVuZHMgdDB7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc3RpY2t5Q3NzQ2xhc3M9Im1hdC10YWJsZS1zdGlja3kiLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD0hMX19YzAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKGMwKSkpKG58fGMwKX19KSgpLGMwLsm1Y21wPXRvKHt0eXBlOmMwLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoIm1hdC10YWJsZS1maXhlZC1sYXlvdXQiLG4uZml4ZWRMYXlvdXQpfSxleHBvcnRBczpbIm1hdFRhYmxlIl0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTphRix1c2VDbGFzczplRn0se3Byb3ZpZGU6dDAsdXNlRXhpc3Rpbmc6YzB9LHtwcm92aWRlOnkkLHVzZUV4aXN0aW5nOmMwfSx7cHJvdmlkZTpFJCx1c2VDbGFzczpSJH0se3Byb3ZpZGU6cSQsdXNlVmFsdWU6bnVsbH1dKSx4cF0sbmdDb250ZW50U2VsZWN0b3JzOlsiY2FwdGlvbiIsImNvbGdyb3VwLCBjb2wiXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1siaGVhZGVyUm93T3V0bGV0IiwiIl0sWyJyb3dPdXRsZXQiLCIiXSxbIm5vRGF0YVJvd091dGxldCIsIiJdLFsiZm9vdGVyUm93T3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabShhMCksWG0oMCksWG0oMSwxKSxJbSgyLDApLEltKDMsMSksSW0oNCwyKSxJbSg1LDMpKX0sZGlyZWN0aXZlczpbSyQsWCQsUSQsSiRdLHN0eWxlczpbJ21hdC10YWJsZXtkaXNwbGF5OmJsb2NrfW1hdC1oZWFkZXItcm93e21pbi1oZWlnaHQ6NTZweH1tYXQtcm93LG1hdC1mb290ZXItcm93e21pbi1oZWlnaHQ6NDhweH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93e2Rpc3BsYXk6ZmxleDtib3JkZXItd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH1tYXQtcm93OjphZnRlcixtYXQtaGVhZGVyLXJvdzo6YWZ0ZXIsbWF0LWZvb3Rlci1yb3c6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6aW5oZXJpdDtjb250ZW50OiIifW1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9bWF0LWNlbGw6bGFzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9bWF0LWNlbGwsbWF0LWhlYWRlci1jZWxsLG1hdC1mb290ZXItY2VsbHtmbGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmQ7bWluLWhlaWdodDppbmhlcml0fXRhYmxlLm1hdC10YWJsZXtib3JkZXItc3BhY2luZzowfXRyLm1hdC1oZWFkZXItcm93e2hlaWdodDo1NnB4fXRyLm1hdC1yb3csdHIubWF0LWZvb3Rlci1yb3d7aGVpZ2h0OjQ4cHh9dGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246cmlnaHR9dGgubWF0LWhlYWRlci1jZWxsLHRkLm1hdC1jZWxsLHRkLm1hdC1mb290ZXItY2VsbHtwYWRkaW5nOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZH10aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fXRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fS5tYXQtdGFibGUtc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5ICFpbXBvcnRhbnR9Lm1hdC10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfVxuJ10sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChjMCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGUsIHRhYmxlW21hdC10YWJsZV0iLGV4cG9ydEFzOiJtYXRUYWJsZSIsdGVtcGxhdGU6JCQsaG9zdDp7Y2xhc3M6Im1hdC10YWJsZSIsIltjbGFzcy5tYXQtdGFibGUtZml4ZWQtbGF5b3V0XSI6ImZpeGVkTGF5b3V0In0scHJvdmlkZXJzOlt7cHJvdmlkZTphRix1c2VDbGFzczplRn0se3Byb3ZpZGU6dDAsdXNlRXhpc3Rpbmc6YzB9LHtwcm92aWRlOnkkLHVzZUV4aXN0aW5nOmMwfSx7cHJvdmlkZTpFJCx1c2VDbGFzczpSJH0se3Byb3ZpZGU6cSQsdXNlVmFsdWU6bnVsbH1dLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxzdHlsZXM6WydtYXQtdGFibGV7ZGlzcGxheTpibG9ja31tYXQtaGVhZGVyLXJvd3ttaW4taGVpZ2h0OjU2cHh9bWF0LXJvdyxtYXQtZm9vdGVyLXJvd3ttaW4taGVpZ2h0OjQ4cHh9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvd3tkaXNwbGF5OmZsZXg7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9bWF0LXJvdzo6YWZ0ZXIsbWF0LWhlYWRlci1yb3c6OmFmdGVyLG1hdC1mb290ZXItcm93OjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OmluaGVyaXQ7Y29udGVudDoiIn1tYXQtY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fW1hdC1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fW1hdC1jZWxsLG1hdC1oZWFkZXItY2VsbCxtYXQtZm9vdGVyLWNlbGx7ZmxleDoxO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtd3JhcDpicmVhay13b3JkO21pbi1oZWlnaHQ6aW5oZXJpdH10YWJsZS5tYXQtdGFibGV7Ym9yZGVyLXNwYWNpbmc6MH10ci5tYXQtaGVhZGVyLXJvd3toZWlnaHQ6NTZweH10ci5tYXQtcm93LHRyLm1hdC1mb290ZXItcm93e2hlaWdodDo0OHB4fXRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOmxlZnR9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOnJpZ2h0fXRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7cGFkZGluZzowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9dGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH10aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH0ubWF0LXRhYmxlLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0aWNreSAhaW1wb3J0YW50fS5tYXQtdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH1cbiddfV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZDAgZXh0ZW5kcyBDJHt9ZDAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKGQwKSkpKG58fGQwKX19KSgpLGQwLsm1ZGlyPWxvKHt0eXBlOmQwLHNlbGVjdG9yczpbWyIiLCJtYXRDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6QyQsdXNlRXhpc3Rpbmc6ZDB9XSkseHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkMCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0Q2VsbERlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6QyQsdXNlRXhpc3Rpbmc6ZDB9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBwMCBleHRlbmRzIE0ke31wMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEocDApKSkobnx8cDApfX0pKCkscDAuybVkaXI9bG8oe3R5cGU6cDAsc2VsZWN0b3JzOltbIiIsIm1hdEhlYWRlckNlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpNJCx1c2VFeGlzdGluZzpwMH1dKSx4cF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHAwLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXRIZWFkZXJDZWxsRGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpNJCx1c2VFeGlzdGluZzpwMH1dfV19XSxudWxsLG51bGwpO2NsYXNzIG0wIGV4dGVuZHMgdiR7fW0wLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShtMCkpKShufHxtMCl9fSkoKSxtMC7JtWRpcj1sbyh7dHlwZTptMCxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyQ2VsbERlZiIsIiJdXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOnYkLHVzZUV4aXN0aW5nOm0wfV0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobTAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlckNlbGxEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOnYkLHVzZUV4aXN0aW5nOm0wfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdTAgZXh0ZW5kcyBPJHtnZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCl7c3VwZXIuX3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpLHRoaXMuX2NvbHVtbkNzc0NsYXNzTmFtZS5wdXNoKGBtYXQtY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gKX19dTAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKHUwKSkpKG58fHUwKX19KSgpLHUwLsm1ZGlyPWxvKHt0eXBlOnUwLHNlbGVjdG9yczpbWyIiLCJtYXRDb2x1bW5EZWYiLCIiXV0saW5wdXRzOntzdGlja3k6InN0aWNreSIsbmFtZTpbIm1hdENvbHVtbkRlZiIsIm5hbWUiXX0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpPJCx1c2VFeGlzdGluZzp1MH0se3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzp1MH1dKSx4cF19KSx1MC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6eHksYXJnczpbIm1hdENvbHVtbkRlZiJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodTAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdENvbHVtbkRlZl0iLGlucHV0czpbInN0aWNreSJdLHByb3ZpZGVyczpbe3Byb3ZpZGU6TyQsdXNlRXhpc3Rpbmc6dTB9LHtwcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6dTB9XX1dfV0sbnVsbCx7bmFtZTpbe3R5cGU6eHksYXJnczpbIm1hdENvbHVtbkRlZiJdfV19KTtjbGFzcyBmMCBleHRlbmRzIHcke31mMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoZjApKSkobnx8ZjApfX0pKCksZjAuybVkaXI9bG8oe3R5cGU6ZjAsc2VsZWN0b3JzOltbIm1hdC1oZWFkZXItY2VsbCJdLFsidGgiLCJtYXQtaGVhZGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwibWF0LWhlYWRlci1jZWxsIl0sZmVhdHVyZXM6W3hwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZjAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWhlYWRlci1jZWxsLCB0aFttYXQtaGVhZGVyLWNlbGxdIixob3N0OntjbGFzczoibWF0LWhlYWRlci1jZWxsIixyb2xlOiJjb2x1bW5oZWFkZXIifX1dfV0sbnVsbCxudWxsKTtjbGFzcyBnMCBleHRlbmRzIGske31nMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoZzApKSkobnx8ZzApfX0pKCksZzAuybVkaXI9bG8oe3R5cGU6ZzAsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItY2VsbCJdLFsidGQiLCJtYXQtZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIiwxLCJtYXQtZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbeHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnMCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLWNlbGwsIHRkW21hdC1mb290ZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJtYXQtZm9vdGVyLWNlbGwiLHJvbGU6ImdyaWRjZWxsIn19XX1dLG51bGwsbnVsbCk7Y2xhc3MgaDAgZXh0ZW5kcyBTJHt9aDAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKGgwKSkpKG58fGgwKX19KSgpLGgwLsm1ZGlyPWxvKHt0eXBlOmgwLHNlbGVjdG9yczpbWyJtYXQtY2VsbCJdLFsidGQiLCJtYXQtY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1jZWxsIl0sZmVhdHVyZXM6W3hwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoaDAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNlbGwsIHRkW21hdC1jZWxsXSIsaG9zdDp7Y2xhc3M6Im1hdC1jZWxsIixyb2xlOiJncmlkY2VsbCJ9fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgYjAgZXh0ZW5kcyB6JHt9YjAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKGIwKSkpKG58fGIwKX19KSgpLGIwLsm1ZGlyPWxvKHt0eXBlOmIwLHNlbGVjdG9yczpbWyIiLCJtYXRIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsibWF0SGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbIm1hdEhlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbcGcoW3twcm92aWRlOnokLHVzZUV4aXN0aW5nOmIwfV0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYjAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdEhlYWRlclJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6eiQsdXNlRXhpc3Rpbmc6YjB9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRIZWFkZXJSb3dEZWYiLCJzdGlja3k6IG1hdEhlYWRlclJvd0RlZlN0aWNreSJdfV19XSxudWxsLG51bGwpO2NsYXNzIHkwIGV4dGVuZHMgSCR7fXkwLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYSh5MCkpKShufHx5MCl9fSkoKSx5MC7JtWRpcj1sbyh7dHlwZTp5MCxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEZvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpIJCx1c2VFeGlzdGluZzp5MH1dKSx4cF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHkwLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6IlttYXRGb290ZXJSb3dEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOkgkLHVzZUV4aXN0aW5nOnkwfV0saW5wdXRzOlsiY29sdW1uczogbWF0Rm9vdGVyUm93RGVmIiwic3RpY2t5OiBtYXRGb290ZXJSb3dEZWZTdGlja3kiXX1dfV0sbnVsbCxudWxsKTtjbGFzcyBfMCBleHRlbmRzIEYke31fMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoXzApKSkobnx8XzApfX0pKCksXzAuybVkaXI9bG8oe3R5cGU6XzAsc2VsZWN0b3JzOltbIiIsIm1hdFJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJtYXRSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJtYXRSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbcGcoW3twcm92aWRlOkYkLHVzZUV4aXN0aW5nOl8wfV0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoXzAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6RiQsdXNlRXhpc3Rpbmc6XzB9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRSb3dEZWZDb2x1bW5zIiwid2hlbjogbWF0Um93RGVmV2hlbiJdfV19XSxudWxsLG51bGwpO2NsYXNzIEMwIGV4dGVuZHMgQiR7fUMwLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShDMCkpKShufHxDMCl9fSkoKSxDMC7JtWNtcD10byh7dHlwZTpDMCxzZWxlY3RvcnM6W1sibWF0LWhlYWRlci1yb3ciXSxbInRyIiwibWF0LWhlYWRlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LWhlYWRlci1yb3ciXSxleHBvcnRBczpbIm1hdEhlYWRlclJvdyJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6QiQsdXNlRXhpc3Rpbmc6QzB9XSkseHBdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJkltKDAsMCl9LGRpcmVjdGl2ZXM6W0wkXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEMwLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oZWFkZXItcm93LCB0clttYXQtaGVhZGVyLXJvd10iLHRlbXBsYXRlOkEkLGhvc3Q6e2NsYXNzOiJtYXQtaGVhZGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOnpuLkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGV4cG9ydEFzOiJtYXRIZWFkZXJSb3ciLHByb3ZpZGVyczpbe3Byb3ZpZGU6QiQsdXNlRXhpc3Rpbmc6QzB9XX1dfV0sbnVsbCxudWxsKTtjbGFzcyBNMCBleHRlbmRzIFYke31NMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoTTApKSkobnx8TTApfX0pKCksTTAuybVjbXA9dG8oe3R5cGU6TTAsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItcm93Il0sWyJ0ciIsIm1hdC1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsIm1hdC1mb290ZXItcm93Il0sZXhwb3J0QXM6WyJtYXRGb290ZXJSb3ciXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOlYkLHVzZUV4aXN0aW5nOk0wfV0pLHhwXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZJbSgwLDApfSxkaXJlY3RpdmVzOltMJF0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChNMCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLXJvdywgdHJbbWF0LWZvb3Rlci1yb3ddIix0ZW1wbGF0ZTpBJCxob3N0OntjbGFzczoibWF0LWZvb3Rlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp6bi5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SG4uTm9uZSxleHBvcnRBczoibWF0Rm9vdGVyUm93Iixwcm92aWRlcnM6W3twcm92aWRlOlYkLHVzZUV4aXN0aW5nOk0wfV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgdjAgZXh0ZW5kcyBqJHt9djAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKHYwKSkpKG58fHYwKX19KSgpLHYwLsm1Y21wPXRvKHt0eXBlOnYwLHNlbGVjdG9yczpbWyJtYXQtcm93Il0sWyJ0ciIsIm1hdC1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LXJvdyJdLGV4cG9ydEFzOlsibWF0Um93Il0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpqJCx1c2VFeGlzdGluZzp2MH1dKSx4cF0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmSW0oMCwwKX0sZGlyZWN0aXZlczpbTCRdLGVuY2Fwc3VsYXRpb246Mn0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodjAsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXJvdywgdHJbbWF0LXJvd10iLHRlbXBsYXRlOkEkLGhvc3Q6e2NsYXNzOiJtYXQtcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246em4uRGVmYXVsdCxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsZXhwb3J0QXM6Im1hdFJvdyIscHJvdmlkZXJzOlt7cHJvdmlkZTpqJCx1c2VFeGlzdGluZzp2MH1dfV19XSxudWxsLG51bGwpO2NsYXNzIHgwIGV4dGVuZHMgVSR7fXgwLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYSh4MCkpKShufHx4MCl9fSkoKSx4MC7JtWRpcj1sbyh7dHlwZTp4MCxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXROb0RhdGFSb3ciLCIiXV0sZmVhdHVyZXM6W3BnKFt7cHJvdmlkZTpVJCx1c2VFeGlzdGluZzp4MH1dKSx4cF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHgwLFt7dHlwZTpDeSxhcmdzOlt7c2VsZWN0b3I6Im5nLXRlbXBsYXRlW21hdE5vRGF0YVJvd10iLHByb3ZpZGVyczpbe3Byb3ZpZGU6VSQsdXNlRXhpc3Rpbmc6eDB9XX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE8wIGV4dGVuZHMgbjB7fU8wLsm1ZmFjPShmdW5jdGlvbigpe2xldCB0O3JldHVybiBmdW5jdGlvbiBlKG4pe3JldHVybih0fHwodD1BYShPMCkpKShufHxPMCl9fSkoKSxPMC7JtWNtcD10byh7dHlwZTpPMCxzZWxlY3RvcnM6W1sibWF0LXRleHQtY29sdW1uIl1dLGZlYXR1cmVzOlt4cF0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbIm1hdENvbHVtbkRlZiIsIiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRIZWFkZXJDZWxsRGVmIl0sWyJtYXQtY2VsbCIsIiIsMywidGV4dC1hbGlnbiIsNCwibWF0Q2VsbERlZiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIl0sWyJtYXQtY2VsbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoTm0oMCwwKSxRcCgxLHIwLDIsMywidGgiLDEpLFFwKDIsczAsMiwzLCJ0ZCIsMiksem0oKSl9LGRpcmVjdGl2ZXM6W3UwLHAwLGQwLGYwLGgwXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE8wLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1hdC10ZXh0LWNvbHVtbiIsdGVtcGxhdGU6J1xuICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPlxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+XG4gICAgICAgIHt7ZGF0YUFjY2Vzc29yKGRhdGEsIG5hbWUpfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICcsZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGNoYW5nZURldGVjdGlvbjp6bi5EZWZhdWx0fV19XSxudWxsLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgUDA9W2MwLGwwLHAwLGIwLHUwLGQwLF8wLG0wLHkwLGYwLGgwLGcwLEMwLHYwLE0wLHgwLE8wXTtjbGFzcyB3MHt9dzAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHcwKX0sdzAuybVtb2Q9YW8oe3R5cGU6dzB9KSx3MC7JtWluaj12bih7aW1wb3J0czpbW2kwLFhJXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHcwLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbaTAsWEldLGV4cG9ydHM6W1hJLFAwXSxkZWNsYXJhdGlvbnM6UDB9XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyh3MCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2MwLGwwLHAwLGIwLHUwLGQwLF8wLG0wLHkwLGYwLGgwLGcwLEMwLHYwLE0wLHgwLE8wXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltpMCxYSV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWEksYzAsbDAscDAsYjAsdTAsZDAsXzAsbTAseTAsZjAsaDAsZzAsQzAsdjAsTTAseDAsTzBdfX0pO2NsYXNzIGswIGV4dGVuZHMgUUh7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLl9yZW5kZXJEYXRhPW5ldyBGKFtdKSx0aGlzLl9maWx0ZXI9bmV3IEYoIiIpLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXM9bmV3IEksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsLHRoaXMuc29ydGluZ0RhdGFBY2Nlc3Nvcj0odCxlKT0+e2NvbnN0IG49dFtlXTtpZihDeihuKSl7Y29uc3QgdD1OdW1iZXIobik7cmV0dXJuIHQ8OTAwNzE5OTI1NDc0MDk5MT90Om59cmV0dXJuIG59LHRoaXMuc29ydERhdGE9KHQsZSk9Pntjb25zdCBuPWUuYWN0aXZlLG89ZS5kaXJlY3Rpb247cmV0dXJuIG4mJiIiIT1vP3Quc29ydCgoKHQsZSk9PntsZXQgaT10aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IodCxuKSxhPXRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcihlLG4pO2NvbnN0IHI9dHlwZW9mIGkscz10eXBlb2YgYTtyIT09cyYmKCJudW1iZXIiPT09ciYmKGkrPSIiKSwibnVtYmVyIj09PXMmJihhKz0iIikpO2xldCBsPTA7cmV0dXJuIG51bGwhPWkmJm51bGwhPWE/aT5hP2w9MTppPGEmJihsPS0xKTpudWxsIT1pP2w9MTpudWxsIT1hJiYobD0tMSksbCooImFzYyI9PW8/MTotMSl9KSk6dH0sdGhpcy5maWx0ZXJQcmVkaWNhdGU9KHQsZSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKGUsbik9PmUrdFtuXSsi4pesIiksIiIpLnRvTG93ZXJDYXNlKCksbz1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xIT1uLmluZGV4T2Yobyl9LHRoaXMuX2RhdGE9bmV3IEYodCksdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5fZGF0YS52YWx1ZX1zZXQgZGF0YSh0KXt0aGlzLl9kYXRhLm5leHQodCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fZmlsdGVyRGF0YSh0KX1nZXQgZmlsdGVyKCl7cmV0dXJuIHRoaXMuX2ZpbHRlci52YWx1ZX1zZXQgZmlsdGVyKHQpe3RoaXMuX2ZpbHRlci5uZXh0KHQpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX2ZpbHRlckRhdGEodGhpcy5kYXRhKX1nZXQgc29ydCgpe3JldHVybiB0aGlzLl9zb3J0fXNldCBzb3J0KHQpe3RoaXMuX3NvcnQ9dCx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1nZXQgcGFnaW5hdG9yKCl7cmV0dXJuIHRoaXMuX3BhZ2luYXRvcn1zZXQgcGFnaW5hdG9yKHQpe3RoaXMuX3BhZ2luYXRvcj10LHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfV91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKXt2YXIgdDtjb25zdCBlPXRoaXMuX3NvcnQ/cmUodGhpcy5fc29ydC5zb3J0Q2hhbmdlLHRoaXMuX3NvcnQuaW5pdGlhbGl6ZWQpOkV0KG51bGwpLG49dGhpcy5fcGFnaW5hdG9yP3JlKHRoaXMuX3BhZ2luYXRvci5wYWdlLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXMsdGhpcy5fcGFnaW5hdG9yLmluaXRpYWxpemVkKTpFdChudWxsKSxvPVd0KFt0aGlzLl9kYXRhLHRoaXMuX2ZpbHRlcl0pLnBpcGUoSXQoKChbdF0pPT50aGlzLl9maWx0ZXJEYXRhKHQpKSkpLGk9V3QoW28sZV0pLnBpcGUoSXQoKChbdF0pPT50aGlzLl9vcmRlckRhdGEodCkpKSksYT1XdChbaSxuXSkucGlwZShJdCgoKFt0XSk9PnRoaXMuX3BhZ2VEYXRhKHQpKSkpO251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249YS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3JlbmRlckRhdGEubmV4dCh0KSkpfV9maWx0ZXJEYXRhKHQpe3JldHVybiB0aGlzLmZpbHRlcmVkRGF0YT1udWxsPT10aGlzLmZpbHRlcnx8IiI9PT10aGlzLmZpbHRlcj90OnQuZmlsdGVyKCh0PT50aGlzLmZpbHRlclByZWRpY2F0ZSh0LHRoaXMuZmlsdGVyKSkpLHRoaXMucGFnaW5hdG9yJiZ0aGlzLl91cGRhdGVQYWdpbmF0b3IodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoKSx0aGlzLmZpbHRlcmVkRGF0YX1fb3JkZXJEYXRhKHQpe3JldHVybiB0aGlzLnNvcnQ/dGhpcy5zb3J0RGF0YSh0LnNsaWNlKCksdGhpcy5zb3J0KTp0fV9wYWdlRGF0YSh0KXtpZighdGhpcy5wYWdpbmF0b3IpcmV0dXJuIHQ7Y29uc3QgZT10aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgqdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7cmV0dXJuIHQuc2xpY2UoZSxlK3RoaXMucGFnaW5hdG9yLnBhZ2VTaXplKX1fdXBkYXRlUGFnaW5hdG9yKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57Y29uc3QgZT10aGlzLnBhZ2luYXRvcjtpZihlJiYoZS5sZW5ndGg9dCxlLnBhZ2VJbmRleD4wKSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5sZW5ndGgvZS5wYWdlU2l6ZSktMXx8MCxuPU1hdGgubWluKGUucGFnZUluZGV4LHQpO24hPT1lLnBhZ2VJbmRleCYmKGUucGFnZUluZGV4PW4sdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCkpfX0pKX1jb25uZWN0KCl7cmV0dXJuIHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpLHRoaXMuX3JlbmRlckRhdGF9ZGlzY29ubmVjdCgpe3ZhciB0O251bGw9PT0odD10aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9uKXx8dm9pZCAwPT09dHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249bnVsbH19Y2xhc3MgUzAgZXh0ZW5kcyBrMHt9Y29uc3QgRDA9WyJwYW5lbCJdO2Z1bmN0aW9uIEUwKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwwLDEpLFhtKDIpLEFtKCkpLDImdCl7Y29uc3QgdD1lLmlkLG49WW0oKTtEbSgiaWQiLG4uaWQpKCJuZ0NsYXNzIixuLl9jbGFzc0xpc3QpLGpwKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbi5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSh0KSl9fWxldCBSMD0wO2NsYXNzIEEwe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLm9wdGlvbj1lfX1jb25zdCBUMD1RSShjbGFzc3t9KSxOMD1uZXcgR2EoIm1hdC1hdXRvY29tcGxldGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiB6MCgpe3JldHVybnthdXRvQWN0aXZlRmlyc3RPcHRpb246ITF9fX0pO2NsYXNzIEkwIGV4dGVuZHMgVDB7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPW0uRU1QVFksdGhpcy5zaG93UGFuZWw9ITEsdGhpcy5faXNPcGVuPSExLHRoaXMuZGlzcGxheVdpdGg9bnVsbCx0aGlzLm9wdGlvblNlbGVjdGVkPW5ldyBMaCx0aGlzLm9wZW5lZD1uZXcgTGgsdGhpcy5jbG9zZWQ9bmV3IExoLHRoaXMub3B0aW9uQWN0aXZhdGVkPW5ldyBMaCx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5pZD0ibWF0LWF1dG9jb21wbGV0ZS0iK1IwKyssdGhpcy5pbmVydEdyb3Vwcz0obnVsbD09bz92b2lkIDA6by5TQUZBUkkpfHwhMSx0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249ISFuLmF1dG9BY3RpdmVGaXJzdE9wdGlvbn1nZXQgaXNPcGVuKCl7cmV0dXJuIHRoaXMuX2lzT3BlbiYmdGhpcy5zaG93UGFuZWx9Z2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbigpe3JldHVybiB0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb259c2V0IGF1dG9BY3RpdmVGaXJzdE9wdGlvbih0KXt0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb249eXoodCl9c2V0IGNsYXNzTGlzdCh0KXt0aGlzLl9jbGFzc0xpc3Q9dCYmdC5sZW5ndGg/KGZ1bmN0aW9uIGUodCxuPS9ccysvKXtjb25zdCBvPVtdO2lmKG51bGwhPXQpe2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KT90OmAke3R9YC5zcGxpdChuKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPWAke3R9YC50cmltKCk7ZSYmby5wdXNoKGUpfX1yZXR1cm4gb30pKHQpLnJlZHVjZSgoKHQsZSk9Pih0W2VdPSEwLHQpKSx7fSk6e30sdGhpcy5fc2V0VmlzaWJpbGl0eUNsYXNzZXModGhpcy5fY2xhc3NMaXN0KSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lPSIifW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2tleU1hbmFnZXI9bmV3IHRJKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKSx0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnN1YnNjcmliZSgodD0+e3RoaXMub3B0aW9uQWN0aXZhdGVkLmVtaXQoe3NvdXJjZTp0aGlzLG9wdGlvbjp0aGlzLm9wdGlvbnMudG9BcnJheSgpW3RdfHxudWxsfSl9KSksdGhpcy5fc2V0VmlzaWJpbGl0eSgpfW5nT25EZXN0cm95KCl7dGhpcy5fYWN0aXZlT3B0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpfV9zZXRTY3JvbGxUb3AodCl7dGhpcy5wYW5lbCYmKHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dCl9X2dldFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLnBhbmVsP3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A6MH1fc2V0VmlzaWJpbGl0eSgpe3RoaXMuc2hvd1BhbmVsPSEhdGhpcy5vcHRpb25zLmxlbmd0aCx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9lbWl0U2VsZWN0RXZlbnQodCl7Y29uc3QgZT1uZXcgQTAodGhpcyx0KTt0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQoZSl9X2dldFBhbmVsQXJpYUxhYmVsbGVkYnkodCl7cmV0dXJuIHRoaXMuYXJpYUxhYmVsP251bGw6dGhpcy5hcmlhTGFiZWxsZWRieT8odD90KyIgIjoiIikrdGhpcy5hcmlhTGFiZWxsZWRieTp0fV9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0KXt0W3RoaXMuX3Zpc2libGVDbGFzc109dGhpcy5zaG93UGFuZWwsdFt0aGlzLl9oaWRkZW5DbGFzc109IXRoaXMuc2hvd1BhbmVsfX1JMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8STApKFNtKFVnKSxTbShoZyksU20oTjApLFNtKHd6KSl9LEkwLsm1ZGlyPWxvKHt0eXBlOkkwLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUWgoWGcsNyksUWgoRDAsNSkpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4udGVtcGxhdGU9dC5maXJzdCksSmgodD10YigpKSYmKG4ucGFuZWw9dC5maXJzdCl9fSxpbnB1dHM6e2Rpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiJhdXRvQWN0aXZlRmlyc3RPcHRpb24iLGNsYXNzTGlzdDpbImNsYXNzIiwiY2xhc3NMaXN0Il0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxwYW5lbFdpZHRoOiJwYW5lbFdpZHRoIn0sb3V0cHV0czp7b3B0aW9uU2VsZWN0ZWQ6Im9wdGlvblNlbGVjdGVkIixvcGVuZWQ6Im9wZW5lZCIsY2xvc2VkOiJjbG9zZWQiLG9wdGlvbkFjdGl2YXRlZDoib3B0aW9uQWN0aXZhdGVkIn0sZmVhdHVyZXM6W3hwXX0pLEkwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VWd9LHt0eXBlOmhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbTjBdfV19LHt0eXBlOnd6fV0sSTAucHJvcERlY29yYXRvcnM9e3RlbXBsYXRlOlt7dHlwZTpaYSxhcmdzOltYZyx7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6WmEsYXJnczpbInBhbmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sZGlzcGxheVdpdGg6W3t0eXBlOnh5fV0sYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOlt7dHlwZTp4eX1dLHBhbmVsV2lkdGg6W3t0eXBlOnh5fV0sb3B0aW9uU2VsZWN0ZWQ6W3t0eXBlOk95fV0sb3BlbmVkOlt7dHlwZTpPeX1dLGNsb3NlZDpbe3R5cGU6T3l9XSxvcHRpb25BY3RpdmF0ZWQ6W3t0eXBlOk95fV0sY2xhc3NMaXN0Olt7dHlwZTp4eSxhcmdzOlsiY2xhc3MiXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEkwLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpVZ30se3R5cGU6aGd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltOMF19XX0se3R5cGU6d3p9XX0pLHtkaXNwbGF5V2l0aDpbe3R5cGU6eHl9XSxvcHRpb25TZWxlY3RlZDpbe3R5cGU6T3l9XSxvcGVuZWQ6W3t0eXBlOk95fV0sY2xvc2VkOlt7dHlwZTpPeX1dLG9wdGlvbkFjdGl2YXRlZDpbe3R5cGU6T3l9XSxhdXRvQWN0aXZlRmlyc3RPcHRpb246W3t0eXBlOnh5fV0sY2xhc3NMaXN0Olt7dHlwZTp4eSxhcmdzOlsiY2xhc3MiXX1dLHRlbXBsYXRlOlt7dHlwZTpaYSxhcmdzOltYZyx7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6WmEsYXJnczpbInBhbmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0scGFuZWxXaWR0aDpbe3R5cGU6eHl9XX0pO2NsYXNzIEgwIGV4dGVuZHMgSTB7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Zpc2libGVDbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS12aXNpYmxlIix0aGlzLl9oaWRkZW5DbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS1oaWRkZW4ifX1IMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoSDApKSkobnx8SDApfX0pKCksSDAuybVjbXA9dG8oe3R5cGU6SDAsc2VsZWN0b3JzOltbIm1hdC1hdXRvY29tcGxldGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYoJGgobyx6SCw1KSwkaChvLEJILDUpKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLm9wdGlvbkdyb3Vwcz10KSxKaCh0PXRiKCkpJiYobi5vcHRpb25zPXQpfX0saG9zdEF0dHJzOlsxLCJtYXQtYXV0b2NvbXBsZXRlIl0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGUiXSxmZWF0dXJlczpbcGcoW3twcm92aWRlOlJILHVzZUV4aXN0aW5nOkgwfV0pLHhwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbInJvbGUiLCJsaXN0Ym94IiwxLCJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsIiwzLCJpZCIsIm5nQ2xhc3MiXSxbInBhbmVsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFFwKDAsRTAsMyw0LCJuZy10ZW1wbGF0ZSIpKX0sZGlyZWN0aXZlczpbYU1dLHN0eWxlczpbIi5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLEgwLnByb3BEZWNvcmF0b3JzPXtvcHRpb25Hcm91cHM6W3t0eXBlOllhLGFyZ3M6W3pILHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uczpbe3R5cGU6WWEsYXJnczpbQkgse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChIMCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtYXV0b2NvbXBsZXRlIix0ZW1wbGF0ZTonPG5nLXRlbXBsYXRlIGxldC1mb3JtRmllbGRJZD0iaWQiPlxuICA8ZGl2IGNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsIlxuICAgICAgIHJvbGU9Imxpc3Rib3giXG4gICAgICAgW2lkXT0iaWQiXG4gICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIlxuICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09Il9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KGZvcm1GaWVsZElkKSJcbiAgICAgICBbbmdDbGFzc109Il9jbGFzc0xpc3QiXG4gICAgICAgI3BhbmVsPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuJyxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxleHBvcnRBczoibWF0QXV0b2NvbXBsZXRlIixpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIl0saG9zdDp7Y2xhc3M6Im1hdC1hdXRvY29tcGxldGUifSxwcm92aWRlcnM6W3twcm92aWRlOlJILHVzZUV4aXN0aW5nOkgwfV0sc3R5bGVzOlsiLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7bWluLXdpZHRoOjExMnB4O21heC13aWR0aDoyODBweDtvdmVyZmxvdzphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO3Zpc2liaWxpdHk6aGlkZGVuO21heC13aWR0aDpub25lO21heC1oZWlnaHQ6MjU2cHg7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo0cHh9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS12aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC5tYXQtYXV0b2NvbXBsZXRlLWhpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1hYm92ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtZGl2aWRlci1ob3Jpem9udGFse21hcmdpbi10b3A6LTFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse291dGxpbmU6c29saWQgMXB4fW1hdC1hdXRvY29tcGxldGV7ZGlzcGxheTpub25lfVxuIl19XX1dLG51bGwse29wdGlvbkdyb3Vwczpbe3R5cGU6WWEsYXJnczpbekgse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25zOlt7dHlwZTpZYSxhcmdzOltCSCx7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBGMHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnRSZWY9dH19RjAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEYwKShTbShoZykpfSxGMC7JtWRpcj1sbyh7dHlwZTpGMH0pLEYwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEYwLFt7dHlwZTpDeX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ31dfSksbnVsbCk7Y2xhc3MgTDAgZXh0ZW5kcyBGMHt9TDAuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKEwwKSkpKG58fEwwKX19KSgpLEwwLsm1ZGlyPWxvKHt0eXBlOkwwLHNlbGVjdG9yczpbWyIiLCJtYXRBdXRvY29tcGxldGVPcmlnaW4iLCIiXV0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGVPcmlnaW4iXSxmZWF0dXJlczpbeHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMMCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbbWF0QXV0b2NvbXBsZXRlT3JpZ2luXSIsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZU9yaWdpbiJ9XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBCMD1uZXcgR2EoIm1hdC1hdXRvY29tcGxldGUtc2Nyb2xsLXN0cmF0ZWd5IiksVjA9e3Byb3ZpZGU6QjAsZGVwczpbcExdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gajAodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSxVMD17cHJvdmlkZTpJVix1c2VFeGlzdGluZzpxZSgoKCk9PlcwKSksbXVsdGk6ITB9O2NsYXNzIEcwe2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMsZCl7dGhpcy5fZWxlbWVudD10LHRoaXMuX292ZXJsYXk9ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5fem9uZT1vLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWksdGhpcy5fZGlyPXIsdGhpcy5fZm9ybUZpZWxkPXMsdGhpcy5fZG9jdW1lbnQ9bCx0aGlzLl92aWV3cG9ydFJ1bGVyPWMsdGhpcy5fZGVmYXVsdHM9ZCx0aGlzLl9jb21wb25lbnREZXN0cm95ZWQ9ITEsdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ9ITEsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSExLHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uPW0uRU1QVFksdGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPSEwLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW09bmV3IEksdGhpcy5fd2luZG93Qmx1ckhhbmRsZXI9KCk9Pnt0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCE9PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudHx8dGhpcy5wYW5lbE9wZW59LHRoaXMuX29uQ2hhbmdlPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMucG9zaXRpb249ImF1dG8iLHRoaXMuYXV0b2NvbXBsZXRlQXR0cmlidXRlPSJvZmYiLHRoaXMuX292ZXJsYXlBdHRhY2hlZD0hMSx0aGlzLm9wdGlvblNlbGVjdGlvbnM9UXQoKCgpPT50aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucz9yZSguLi50aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLm1hcCgodD0+dC5vblNlbGVjdGlvbkNoYW5nZSkpKTp0aGlzLl96b25lLm9uU3RhYmxlLnBpcGUoYmUoMSksemUoKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbnMpKSkpKSx0aGlzLl9zY3JvbGxTdHJhdGVneT1hfWdldCBhdXRvY29tcGxldGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1zZXQgYXV0b2NvbXBsZXRlRGlzYWJsZWQodCl7dGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ9eXoodCl9bmdBZnRlclZpZXdJbml0KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTt2b2lkIDAhPT10JiZ0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVySGFuZGxlcikpKX1uZ09uQ2hhbmdlcyh0KXt0LnBvc2l0aW9uJiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiYodGhpcy5fc2V0U3RyYXRlZ3lQb3NpdGlvbnModGhpcy5fcG9zaXRpb25TdHJhdGVneSksdGhpcy5wYW5lbE9wZW4mJnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PXQmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpLHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY29tcG9uZW50RGVzdHJveWVkPSEwLHRoaXMuX2Rlc3Ryb3lQYW5lbCgpLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW0uY29tcGxldGUoKX1nZXQgcGFuZWxPcGVuKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmdGhpcy5hdXRvY29tcGxldGUuc2hvd1BhbmVsfW9wZW5QYW5lbCgpe3RoaXMuX2F0dGFjaE92ZXJsYXkoKSx0aGlzLl9mbG9hdExhYmVsKCl9Y2xvc2VQYW5lbCgpe3RoaXMuX3Jlc2V0TGFiZWwoKSx0aGlzLl9vdmVybGF5QXR0YWNoZWQmJih0aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUuY2xvc2VkLmVtaXQoKSx0aGlzLmF1dG9jb21wbGV0ZS5faXNPcGVuPXRoaXMuX292ZXJsYXlBdHRhY2hlZD0hMSx0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkmJih0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZHx8dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpKX11cGRhdGVQb3NpdGlvbigpe3RoaXMuX292ZXJsYXlBdHRhY2hlZCYmdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfWdldCBwYW5lbENsb3NpbmdBY3Rpb25zKCl7cmV0dXJuIHJlKHRoaXMub3B0aW9uU2VsZWN0aW9ucyx0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci50YWJPdXQucGlwZShjZSgoKCk9PnRoaXMuX292ZXJsYXlBdHRhY2hlZCkpKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLHRoaXMuX2dldE91dHNpZGVDbGlja1N0cmVhbSgpLHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUoY2UoKCgpPT50aGlzLl9vdmVybGF5QXR0YWNoZWQpKSk6RXQoKSkucGlwZShJdCgodD0+dCBpbnN0YW5jZW9mIEZIP3Q6bnVsbCkpKX1nZXQgYWN0aXZlT3B0aW9uKCl7cmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlJiZ0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlcj90aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtOm51bGx9X2dldE91dHNpZGVDbGlja1N0cmVhbSgpe3JldHVybiByZShvZSh0aGlzLl9kb2N1bWVudCwiY2xpY2siKSxvZSh0aGlzLl9kb2N1bWVudCwiYXV4Y2xpY2siKSxvZSh0aGlzLl9kb2N1bWVudCwidG91Y2hlbmQiKSkucGlwZShjZSgodD0+e2NvbnN0IGU9THoodCksbj10aGlzLl9mb3JtRmllbGQ/dGhpcy5fZm9ybUZpZWxkLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbCxvPXRoaXMuY29ubmVjdGVkVG8/dGhpcy5jb25uZWN0ZWRUby5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtyZXR1cm4gdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZlIT09dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50JiYoIW58fCFuLmNvbnRhaW5zKGUpKSYmKCFvfHwhby5jb250YWlucyhlKSkmJiEhdGhpcy5fb3ZlcmxheVJlZiYmIXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoZSl9KSkpfXdyaXRlVmFsdWUodCl7UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCgpPT50aGlzLl9zZXRUcmlnZ2VyVmFsdWUodCkpKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQ9dH1faGFuZGxlS2V5ZG93bih0KXtjb25zdCBlPXQua2V5Q29kZTtpZihlIT09dXp8fGJ6KHQpfHx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5hY3RpdmVPcHRpb24mJmU9PT1teiYmdGhpcy5wYW5lbE9wZW4pdGhpcy5hY3RpdmVPcHRpb24uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYodGhpcy5hdXRvY29tcGxldGUpe2NvbnN0IG49dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSxvPWU9PT1nenx8ZT09PWh6O3RoaXMucGFuZWxPcGVufHw5PT09ZT90aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5vbktleWRvd24odCk6byYmdGhpcy5fY2FuT3BlbigpJiZ0aGlzLm9wZW5QYW5lbCgpLChvfHx0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtIT09bikmJnRoaXMuX3Njcm9sbFRvT3B0aW9uKHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleHx8MCl9fV9oYW5kbGVJbnB1dCh0KXtsZXQgZT10LnRhcmdldCxuPWUudmFsdWU7Im51bWJlciI9PT1lLnR5cGUmJihuPSIiPT1uP251bGw6cGFyc2VGbG9hdChuKSksdGhpcy5fcHJldmlvdXNWYWx1ZSE9PW4mJih0aGlzLl9wcmV2aW91c1ZhbHVlPW4sdGhpcy5fb25DaGFuZ2UobiksdGhpcy5fY2FuT3BlbigpJiZ0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dC50YXJnZXQmJnRoaXMub3BlblBhbmVsKCkpfV9oYW5kbGVGb2N1cygpe3RoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz90aGlzLl9jYW5PcGVuKCkmJih0aGlzLl9wcmV2aW91c1ZhbHVlPXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSx0aGlzLl9hdHRhY2hPdmVybGF5KCksdGhpcy5fZmxvYXRMYWJlbCghMCkpOnRoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz0hMH1fZmxvYXRMYWJlbCh0PSExKXt0aGlzLl9mb3JtRmllbGQmJiJhdXRvIj09PXRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsJiYodD90aGlzLl9mb3JtRmllbGQuX2FuaW1hdGVBbmRMb2NrTGFiZWwoKTp0aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITApfV9yZXNldExhYmVsKCl7dGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsJiYodGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWw9ImF1dG8iLHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbD0hMSl9X3N1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKXtyZXR1cm4gcmUodGhpcy5fem9uZS5vblN0YWJsZS5waXBlKGJlKDEpKSx0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLmNoYW5nZXMucGlwZShGZSgoKCk9PnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucmVhcHBseUxhc3RQb3NpdGlvbigpKSksQ2UoMCkpKS5waXBlKHplKCgoKT0+e2NvbnN0IHQ9dGhpcy5wYW5lbE9wZW47cmV0dXJuIHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHRoaXMuYXV0b2NvbXBsZXRlLl9zZXRWaXNpYmlsaXR5KCksdGhpcy5wYW5lbE9wZW4mJih0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdCE9PXRoaXMucGFuZWxPcGVuJiZ0aGlzLmF1dG9jb21wbGV0ZS5vcGVuZWQuZW1pdCgpKSx0aGlzLnBhbmVsQ2xvc2luZ0FjdGlvbnN9KSksYmUoMSkpLnN1YnNjcmliZSgodD0+dGhpcy5fc2V0VmFsdWVBbmRDbG9zZSh0KSkpfV9kZXN0cm95UGFuZWwoKXt0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5jbG9zZVBhbmVsKCksdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsKX1fc2V0VHJpZ2dlclZhbHVlKHQpe2NvbnN0IGU9dGhpcy5hdXRvY29tcGxldGUmJnRoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoP3RoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKHQpOnQsbj1udWxsIT1lP2U6IiI7dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fY29udHJvbC52YWx1ZT1uOnRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZT1uLHRoaXMuX3ByZXZpb3VzVmFsdWU9bn1fc2V0VmFsdWVBbmRDbG9zZSh0KXt0JiZ0LnNvdXJjZSYmKHRoaXMuX2NsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbih0LnNvdXJjZSksdGhpcy5fc2V0VHJpZ2dlclZhbHVlKHQuc291cmNlLnZhbHVlKSx0aGlzLl9vbkNoYW5nZSh0LnNvdXJjZS52YWx1ZSksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5hdXRvY29tcGxldGUuX2VtaXRTZWxlY3RFdmVudCh0LnNvdXJjZSkpLHRoaXMuY2xvc2VQYW5lbCgpfV9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24odCl7dGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5mb3JFYWNoKChlPT57ZSE9PXQmJmUuc2VsZWN0ZWQmJmUuZGVzZWxlY3QoKX0pKX1fYXR0YWNoT3ZlcmxheSgpe3ZhciB0O2lmKCF0aGlzLmF1dG9jb21wbGV0ZSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIGUoKXtyZXR1cm4gRXJyb3IoIkF0dGVtcHRpbmcgdG8gb3BlbiBhbiB1bmRlZmluZWQgaW5zdGFuY2Ugb2YgYG1hdC1hdXRvY29tcGxldGVgLiBNYWtlIHN1cmUgdGhhdCB0aGUgaWQgcGFzc2VkIHRvIHRoZSBgbWF0QXV0b2NvbXBsZXRlYCBpcyBjb3JyZWN0IGFuZCB0aGF0IHlvdSdyZSBhdHRlbXB0aW5nIHRvIG9wZW4gaXQgYWZ0ZXIgdGhlIG5nQWZ0ZXJDb250ZW50SW5pdCBob29rLiIpfSkoKTtsZXQgbj10aGlzLl9vdmVybGF5UmVmO24/KHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuX2dldENvbm5lY3RlZEVsZW1lbnQoKSksbi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KSk6KHRoaXMuX3BvcnRhbD1uZXcgeEYodGhpcy5hdXRvY29tcGxldGUudGVtcGxhdGUsdGhpcy5fdmlld0NvbnRhaW5lclJlZix7aWQ6bnVsbD09PSh0PXRoaXMuX2Zvcm1GaWVsZCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpfSksbj10aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCkpLHRoaXMuX292ZXJsYXlSZWY9bixuLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoKHQ9PnsodC5rZXlDb2RlPT09dXomJiFieih0KXx8dC5rZXlDb2RlPT09Z3omJmJ6KHQsImFsdEtleSIpKSYmKHRoaXMuX3Jlc2V0QWN0aXZlSXRlbSgpLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW0ubmV4dCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpKX0pKSx0aGlzLl92aWV3cG9ydFN1YnNjcmlwdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnBhbmVsT3BlbiYmbiYmbi51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KX0pKSksbiYmIW4uaGFzQXR0YWNoZWQoKSYmKG4uYXR0YWNoKHRoaXMuX3BvcnRhbCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dGhpcy5fc3Vic2NyaWJlVG9DbG9zaW5nQWN0aW9ucygpKTtjb25zdCBvPXRoaXMucGFuZWxPcGVuO3RoaXMuYXV0b2NvbXBsZXRlLl9zZXRWaXNpYmlsaXR5KCksdGhpcy5hdXRvY29tcGxldGUuX2lzT3Blbj10aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITAsdGhpcy5wYW5lbE9wZW4mJm8hPT10aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUub3BlbmVkLmVtaXQoKX1fZ2V0T3ZlcmxheUNvbmZpZygpe3ZhciB0O3JldHVybiBuZXcgVkYoe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCksc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSx3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCksZGlyZWN0aW9uOnRoaXMuX2RpcixwYW5lbENsYXNzOm51bGw9PT0odD10aGlzLl9kZWZhdWx0cyl8fHZvaWQgMD09PXQ/dm9pZCAwOnQub3ZlcmxheVBhbmVsQ2xhc3N9KX1fZ2V0T3ZlcmxheVBvc2l0aW9uKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkpLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhQdXNoKCExKTtyZXR1cm4gdGhpcy5fc2V0U3RyYXRlZ3lQb3NpdGlvbnModCksdGhpcy5fcG9zaXRpb25TdHJhdGVneT10LHR9X3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpe2NvbnN0IGU9W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJ0b3AifSx7b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJ0b3AifV0sbj10aGlzLl9hYm92ZUNsYXNzLG89W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJib3R0b20iLHBhbmVsQ2xhc3M6bn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToiYm90dG9tIixwYW5lbENsYXNzOm59XTtsZXQgaTtpPSJhYm92ZSI9PT10aGlzLnBvc2l0aW9uP286ImJlbG93Ij09PXRoaXMucG9zaXRpb24/ZTpbLi4uZSwuLi5vXSx0LndpdGhQb3NpdGlvbnMoaSl9X2dldENvbm5lY3RlZEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5jb25uZWN0ZWRUbz90aGlzLmNvbm5lY3RlZFRvLmVsZW1lbnRSZWY6dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk6dGhpcy5fZWxlbWVudH1fZ2V0UGFuZWxXaWR0aCgpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZS5wYW5lbFdpZHRofHx0aGlzLl9nZXRIb3N0V2lkdGgoKX1fZ2V0SG9zdFdpZHRoKCl7cmV0dXJuIHRoaXMuX2dldENvbm5lY3RlZEVsZW1lbnQoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofV9yZXNldEFjdGl2ZUl0ZW0oKXtjb25zdCB0PXRoaXMuYXV0b2NvbXBsZXRlO3QuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uP3QuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dC5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1fY2FuT3Blbigpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O3JldHVybiF0LnJlYWRPbmx5JiYhdC5kaXNhYmxlZCYmIXRoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkfV9nZXRXaW5kb3coKXt2YXIgdDtyZXR1cm4obnVsbD09PSh0PXRoaXMuX2RvY3VtZW50KXx8dm9pZCAwPT09dD92b2lkIDA6dC5kZWZhdWx0Vmlldyl8fHdpbmRvd31fc2Nyb2xsVG9PcHRpb24odCl7Y29uc3QgZT10aGlzLmF1dG9jb21wbGV0ZSxuPVZIKHQsZS5vcHRpb25zLGUub3B0aW9uR3JvdXBzKTtpZigwPT09dCYmMT09PW4pZS5fc2V0U2Nyb2xsVG9wKDApO2Vsc2UgaWYoZS5wYW5lbCl7Y29uc3Qgbj1lLm9wdGlvbnMudG9BcnJheSgpW3RdO2lmKG4pe2NvbnN0IHQ9bi5fZ2V0SG9zdEVsZW1lbnQoKSxvPWpIKHQub2Zmc2V0VG9wLHQub2Zmc2V0SGVpZ2h0LGUuX2dldFNjcm9sbFRvcCgpLGUucGFuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpO2UuX3NldFNjcm9sbFRvcChvKX19fX1HMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RzApKFNtKGhnKSxTbShwTCksU20oZWgpLFNtKGFfKSxTbShVZyksU20oQjApLFNtKEhJLDgpLFNtKFJWLDkpLFNtKFpfLDgpLFNtKHVGKSxTbShOMCw4KSl9LEcwLsm1ZGlyPWxvKHt0eXBlOkcwLGlucHV0czp7cG9zaXRpb246WyJtYXRBdXRvY29tcGxldGVQb3NpdGlvbiIsInBvc2l0aW9uIl0sYXV0b2NvbXBsZXRlQXR0cmlidXRlOlsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlQXR0cmlidXRlIl0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsImF1dG9jb21wbGV0ZURpc2FibGVkIl0sYXV0b2NvbXBsZXRlOlsibWF0QXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlIl0sY29ubmVjdGVkVG86WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyIsImNvbm5lY3RlZFRvIl19LGZlYXR1cmVzOltCb119KSxHMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpwTH0se3R5cGU6ZWh9LHt0eXBlOmFffSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0IwXX1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpBVixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUlZdfSx7dHlwZTpScn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp1Rn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltOMF19XX1dLEcwLnByb3BEZWNvcmF0b3JzPXthdXRvY29tcGxldGU6W3t0eXBlOnh5LGFyZ3M6WyJtYXRBdXRvY29tcGxldGUiXX1dLHBvc2l0aW9uOlt7dHlwZTp4eSxhcmdzOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iXX1dLGNvbm5lY3RlZFRvOlt7dHlwZTp4eSxhcmdzOlsibWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8iXX1dLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbe3R5cGU6eHksYXJnczpbImF1dG9jb21wbGV0ZSJdfV0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRzAsW3t0eXBlOkN5fV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpwTH0se3R5cGU6ZWh9LHt0eXBlOmFffSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0IwXX1dfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpBVixkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUlZdfSx7dHlwZTpScn1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTp1Rn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltOMF19XX1dfSkse3Bvc2l0aW9uOlt7dHlwZTp4eSxhcmdzOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iXX1dLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbe3R5cGU6eHksYXJnczpbImF1dG9jb21wbGV0ZSJdfV0sYXV0b2NvbXBsZXRlRGlzYWJsZWQ6W3t0eXBlOnh5LGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV0sYXV0b2NvbXBsZXRlOlt7dHlwZTp4eSxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxjb25uZWN0ZWRUbzpbe3R5cGU6eHksYXJnczpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIl19XX0pO2NsYXNzIFcwIGV4dGVuZHMgRzB7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Fib3ZlQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUifX1XMC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoVzApKSkobnx8VzApfX0pKCksVzAuybVkaXI9bG8oe3R5cGU6VzAsc2VsZWN0b3JzOltbImlucHV0IiwibWF0QXV0b2NvbXBsZXRlIiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdEF1dG9jb21wbGV0ZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1hdXRvY29tcGxldGUtdHJpZ2dlciJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJmb2N1c2luIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9oYW5kbGVGb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vblRvdWNoZWQoKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVJbnB1dChlKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2hhbmRsZUtleWRvd24oZSl9KSksMiZlJiZqcCgiYXV0b2NvbXBsZXRlIixuLmF1dG9jb21wbGV0ZUF0dHJpYnV0ZSkoInJvbGUiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDoiY29tYm9ib3giKSgiYXJpYS1hdXRvY29tcGxldGUiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDoibGlzdCIpKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLG4ucGFuZWxPcGVuJiZuLmFjdGl2ZU9wdGlvbj9uLmFjdGl2ZU9wdGlvbi5pZDpudWxsKSgiYXJpYS1leHBhbmRlZCIsbi5hdXRvY29tcGxldGVEaXNhYmxlZD9udWxsOm4ucGFuZWxPcGVuLnRvU3RyaW5nKCkpKCJhcmlhLW93bnMiLG4uYXV0b2NvbXBsZXRlRGlzYWJsZWR8fCFuLnBhbmVsT3Blbnx8bnVsbD09bi5hdXRvY29tcGxldGU/bnVsbDpuLmF1dG9jb21wbGV0ZS5pZCkoImFyaWEtaGFzcG9wdXAiLCFuLmF1dG9jb21wbGV0ZURpc2FibGVkKX0sZXhwb3J0QXM6WyJtYXRBdXRvY29tcGxldGVUcmlnZ2VyIl0sZmVhdHVyZXM6W3BnKFtVMF0pLHhwXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVzAsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbbWF0QXV0b2NvbXBsZXRlXSwgdGV4dGFyZWFbbWF0QXV0b2NvbXBsZXRlXSIsaG9zdDp7Y2xhc3M6Im1hdC1hdXRvY29tcGxldGUtdHJpZ2dlciIsIlthdHRyLmF1dG9jb21wbGV0ZV0iOiJhdXRvY29tcGxldGVBdHRyaWJ1dGUiLCJbYXR0ci5yb2xlXSI6J2F1dG9jb21wbGV0ZURpc2FibGVkID8gbnVsbCA6ICJjb21ib2JveCInLCJbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV0iOidhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiAibGlzdCInLCJbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdIjoiKHBhbmVsT3BlbiAmJiBhY3RpdmVPcHRpb24pID8gYWN0aXZlT3B0aW9uLmlkIDogbnVsbCIsIlthdHRyLmFyaWEtZXhwYW5kZWRdIjoiYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogcGFuZWxPcGVuLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLW93bnNdIjoiKGF1dG9jb21wbGV0ZURpc2FibGVkIHx8ICFwYW5lbE9wZW4pID8gbnVsbCA6IGF1dG9jb21wbGV0ZT8uaWQiLCJbYXR0ci5hcmlhLWhhc3BvcHVwXSI6IiFhdXRvY29tcGxldGVEaXNhYmxlZCIsIihmb2N1c2luKSI6Il9oYW5kbGVGb2N1cygpIiwiKGJsdXIpIjoiX29uVG91Y2hlZCgpIiwiKGlucHV0KSI6Il9oYW5kbGVJbnB1dCgkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSJ9LGV4cG9ydEFzOiJtYXRBdXRvY29tcGxldGVUcmlnZ2VyIixwcm92aWRlcnM6W1UwXX1dfV0sbnVsbCxudWxsKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFkwe31ZMC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WTApfSxZMC7JtW1vZD1hbyh7dHlwZTpZMH0pLFkwLsm1aW5qPXZuKHtwcm92aWRlcnM6W1YwXSxpbXBvcnRzOltbeUwsVUgsWEksV01dLHlGLFVILFhJXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWTAsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOlt5TCxVSCxYSSxXTV0sZXhwb3J0czpbSDAsVzAsTDAseUYsVUgsWEldLGRlY2xhcmF0aW9uczpbSDAsVzAsTDBdLHByb3ZpZGVyczpbVjBdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oWTAse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltIMCxXMCxMMF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5beUwsVUgsWEksV01dfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0gwLFcwLEwwLHlGLFVILFhJXX19KTtjbGFzcyBxMHtjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9IiIsdGhpcy5wbGFjZWhvbGRlcj0iIn1vbklucHV0S2V5VXAodCl7IkVudGVyIj09PXQua2V5JiZ0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpfX1mdW5jdGlvbiBaMCh0LGUpe2lmKDEmdCYmKHFpKCksVG0oMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PVltKCk7ZHUoImFuaW1hdGlvbi1uYW1lIiwibWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0iK3QuX3NwaW5uZXJBbmltYXRpb25MYWJlbCkoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIiksanAoInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gWDAodCxlKXtpZigxJnQmJihxaSgpLFRtKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD1ZbSgpO2R1KCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLGpwKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIEswKHQsZSl7aWYoMSZ0JiYocWkoKSxUbSgwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9WW0oKTtkdSgiYW5pbWF0aW9uLW5hbWUiLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLSIrdC5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsKSgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSxqcCgiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBKMCh0LGUpe2lmKDEmdCYmKHFpKCksVG0oMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PVltKCk7ZHUoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIiksanAoInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19cTAuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHEwKX0scTAuybVjbXA9dG8oe3R5cGU6cTAsc2VsZWN0b3JzOltbInRiLWZpbHRlci1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoVzAsNSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5hdXRvY29tcGxldGVUcmlnZ2VyPXQuZmlyc3QpfX0saW5wdXRzOnt2YWx1ZToidmFsdWUiLG1hdEF1dG9jb21wbGV0ZToibWF0QXV0b2NvbXBsZXRlIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIifSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1sic3ZnSWNvbiIsInNlYXJjaF8yNHB4Il0sWyJ0eXBlIiwidGV4dCIsImF1dG9jb21wbGV0ZSIsIm9mZiIsMywicGxhY2Vob2xkZXIiLCJtYXRBdXRvY29tcGxldGUiLCJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCIsInZhbHVlIiwia2V5dXAiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsIm1hdC1pY29uIiwwKSxSbSgxLCJpbnB1dCIsMSksVm0oImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbklucHV0S2V5VXAoZSl9KSksQW0oKSksMiZlJiYocmMoMSksRG0oInBsYWNlaG9sZGVyIixuLnBsYWNlaG9sZGVyKSgibWF0QXV0b2NvbXBsZXRlIixuLm1hdEF1dG9jb21wbGV0ZSkoIm1hdEF1dG9jb21wbGV0ZURpc2FibGVkIiwhbi5tYXRBdXRvY29tcGxldGUpKCJ2YWx1ZSIsbi52YWx1ZSkpfSxkaXJlY3RpdmVzOltEVyxXMF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjEzcHh9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3I7Y29sb3I6Y3VycmVudENvbG9yO2ZvbnQ6aW5oZXJpdDtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7cGFkZGluZzowO2ZsZXgtZ3JvdzoxfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChxMCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Yi1maWx0ZXItaW5wdXQiLHRlbXBsYXRlOidcbiAgICA8bWF0LWljb24gc3ZnSWNvbj0ic2VhcmNoXzI0cHgiPjwvbWF0LWljb24+XG5cbiAgICBceDNjIS0tIE5vdGU6IHRvIGFsbG93IGZhbHN5IFwnbWF0QXV0b2NvbXBsZXRlXCcgdmFsdWVzLCB3ZSBuZWVkIFwnbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRcJ1xuICAgIHRvIHByZXZlbnQgcnVudGltZSBlcnJvcnMuIC0tXHgzZVxuICAgIDxpbnB1dFxuICAgICAgdHlwZT0idGV4dCJcbiAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIlxuICAgICAgW3BsYWNlaG9sZGVyXT0icGxhY2Vob2xkZXIiXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT0ibWF0QXV0b2NvbXBsZXRlIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZURpc2FibGVkXT0iIW1hdEF1dG9jb21wbGV0ZSJcbiAgICAgIFt2YWx1ZV09InZhbHVlIlxuICAgICAgKGtleXVwKT0ib25JbnB1dEtleVVwKCRldmVudCkiXG4gICAgLz5cbiAgJyxzdHlsZVVybHM6WyJmaWx0ZXJfaW5wdXRfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHt2YWx1ZTpbe3R5cGU6eHl9XSxtYXRBdXRvY29tcGxldGU6W3t0eXBlOnh5fV0scGxhY2Vob2xkZXI6W3t0eXBlOnh5fV0sYXV0b2NvbXBsZXRlVHJpZ2dlcjpbe3R5cGU6WmEsYXJnczpbVzBdfV19KTtjb25zdCBRMD0iLm1hdC1wcm9ncmVzcy1zcGlubmVye2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBzdmd7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDowO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7ZmlsbDp0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnN0cm9rZS1kYXNob2Zmc2V0IDIyNW1zIGxpbmVhcn0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2U6Q2FudmFzVGV4dH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZTthbmltYXRpb24tZHVyYXRpb246NDAwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2sgMTAwMDBtcyBjdWJpYy1iZXppZXIoMC44NywgMC4wMywgMC4zMywgMSkgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fVxuIiwkMD1KSShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSwicHJpbWFyeSIpLHQxPW5ldyBHYSgibWF0LXByb2dyZXNzLXNwaW5uZXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBlMSgpe3JldHVybntkaWFtZXRlcjoxMDB9fX0pO2NsYXNzIG4xIGV4dGVuZHMgJDB7Y29uc3RydWN0b3IodCxlLG4sbyxpKXtzdXBlcih0KSx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX2RpYW1ldGVyPTEwMCx0aGlzLl92YWx1ZT0wLHRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPSExLHRoaXMubW9kZT0iZGV0ZXJtaW5hdGUiO2NvbnN0IGE9bjEuX2RpYW1ldGVyczt0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWw9dGhpcy5fZ2V0U3Bpbm5lckFuaW1hdGlvbkxhYmVsKCksYS5oYXMobi5oZWFkKXx8YS5zZXQobi5oZWFkLG5ldyBTZXQoWzEwMF0pKSx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj1lLkVER0V8fGUuVFJJREVOVCx0aGlzLl9ub29wQW5pbWF0aW9ucz0iTm9vcEFuaW1hdGlvbnMiPT09byYmISFpJiYhaS5fZm9yY2VBbmltYXRpb25zLGkmJihpLmRpYW1ldGVyJiYodGhpcy5kaWFtZXRlcj1pLmRpYW1ldGVyKSxpLnN0cm9rZVdpZHRoJiYodGhpcy5zdHJva2VXaWR0aD1pLnN0cm9rZVdpZHRoKSl9Z2V0IGRpYW1ldGVyKCl7cmV0dXJuIHRoaXMuX2RpYW1ldGVyfXNldCBkaWFtZXRlcih0KXt0aGlzLl9kaWFtZXRlcj1feih0KSx0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWw9dGhpcy5fZ2V0U3Bpbm5lckFuaW1hdGlvbkxhYmVsKCksIXRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiZ0aGlzLl9zdHlsZVJvb3QmJnRoaXMuX2F0dGFjaFN0eWxlTm9kZSgpfWdldCBzdHJva2VXaWR0aCgpe3JldHVybiB0aGlzLl9zdHJva2VXaWR0aHx8dGhpcy5kaWFtZXRlci8xMH1zZXQgc3Ryb2tlV2lkdGgodCl7dGhpcy5fc3Ryb2tlV2lkdGg9X3oodCl9Z2V0IHZhbHVlKCl7cmV0dXJuImRldGVybWluYXRlIj09PXRoaXMubW9kZT90aGlzLl92YWx1ZTowfXNldCB2YWx1ZSh0KXt0aGlzLl92YWx1ZT1NYXRoLm1heCgwLE1hdGgubWluKDEwMCxfeih0KSkpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fc3R5bGVSb290PUh6KHQpfHx0aGlzLl9kb2N1bWVudC5oZWFkLHRoaXMuX2F0dGFjaFN0eWxlTm9kZSgpLHQuY2xhc3NMaXN0LmFkZChgbWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZSR7dGhpcy5fZmFsbGJhY2tBbmltYXRpb24/Ii1mYWxsYmFjayI6IiJ9LWFuaW1hdGlvbmApfV9nZXRDaXJjbGVSYWRpdXMoKXtyZXR1cm4odGhpcy5kaWFtZXRlci0xMCkvMn1fZ2V0Vmlld0JveCgpe2NvbnN0IHQ9Mip0aGlzLl9nZXRDaXJjbGVSYWRpdXMoKSt0aGlzLnN0cm9rZVdpZHRoO3JldHVybmAwIDAgJHt0fSAke3R9YH1fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpe3JldHVybiAyKk1hdGguUEkqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCl9X2dldFN0cm9rZURhc2hPZmZzZXQoKXtyZXR1cm4iZGV0ZXJtaW5hdGUiPT09dGhpcy5tb2RlP3RoaXMuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSooMTAwLXRoaXMuX3ZhbHVlKS8xMDA6dGhpcy5fZmFsbGJhY2tBbmltYXRpb24mJiJpbmRldGVybWluYXRlIj09PXRoaXMubW9kZT8uMip0aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCk6bnVsbH1fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKXtyZXR1cm4gdGhpcy5zdHJva2VXaWR0aC90aGlzLmRpYW1ldGVyKjEwMH1fYXR0YWNoU3R5bGVOb2RlKCl7Y29uc3QgdD10aGlzLl9zdHlsZVJvb3QsZT10aGlzLl9kaWFtZXRlcixuPW4xLl9kaWFtZXRlcnM7bGV0IG89bi5nZXQodCk7aWYoIW98fCFvLmhhcyhlKSl7Y29uc3QgaT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2kuc2V0QXR0cmlidXRlKCJtYXQtc3Bpbm5lci1hbmltYXRpb24iLHRoaXMuX3NwaW5uZXJBbmltYXRpb25MYWJlbCksaS50ZXh0Q29udGVudD10aGlzLl9nZXRBbmltYXRpb25UZXh0KCksdC5hcHBlbmRDaGlsZChpKSxvfHwobz1uZXcgU2V0LG4uc2V0KHQsbykpLG8uYWRkKGUpfX1fZ2V0QW5pbWF0aW9uVGV4dCgpe2NvbnN0IHQ9dGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpO3JldHVybiJcbiBAa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtRElBTUVURVIge1xuICAgIDAlICAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsgfVxuICAgIDEyLjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwKTsgfVxuICAgIDEyLjUwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKTsgfVxuICAgIDI1JSAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyk7IH1cblxuICAgIDI1LjAwMDElICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG4gICAgMzcuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7IH1cbiAgICAzNy41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpOyB9XG4gICAgNTAlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyk7IH1cblxuICAgIDUwLjAwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICA2Mi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuICAgIDYyLjUwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH1cbiAgICA3NSUgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKTsgfVxuXG4gICAgNzUuMDAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9XG4gICAgODcuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIDg3LjUwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH1cbiAgICAxMDAlICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKTsgfVxuICB9XG4iLnJlcGxhY2UoL1NUQVJUX1ZBTFVFL2csIiIrLjk1KnQpLnJlcGxhY2UoL0VORF9WQUxVRS9nLCIiKy4yKnQpLnJlcGxhY2UoL0RJQU1FVEVSL2csYCR7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsfWApfV9nZXRTcGlubmVyQW5pbWF0aW9uTGFiZWwoKXtyZXR1cm4gdGhpcy5kaWFtZXRlci50b1N0cmluZygpLnJlcGxhY2UoIi4iLCJfIil9fW4xLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxuMSkoU20oaGcpLFNtKHd6KSxTbShaXyw4KSxTbShWUCw4KSxTbSh0MSkpfSxuMS7JtWNtcD10byh7dHlwZTpuMSxzZWxlY3RvcnM6W1sibWF0LXByb2dyZXNzLXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwidGFiaW5kZXgiLCItMSIsMSwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKGpwKCJhcmlhLXZhbHVlbWluIiwiZGV0ZXJtaW5hdGUiPT09bi5tb2RlPzA6bnVsbCkoImFyaWEtdmFsdWVtYXgiLCJkZXRlcm1pbmF0ZSI9PT1uLm1vZGU/MTAwOm51bGwpKCJhcmlhLXZhbHVlbm93IiwiZGV0ZXJtaW5hdGUiPT09bi5tb2RlP24udmFsdWU6bnVsbCkoIm1vZGUiLG4ubW9kZSksZHUoIndpZHRoIixuLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLG4uZGlhbWV0ZXIsInB4IikscHUoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsbW9kZToibW9kZSIsZGlhbWV0ZXI6ImRpYW1ldGVyIixzdHJva2VXaWR0aDoic3Ryb2tlV2lkdGgiLHZhbHVlOiJ2YWx1ZSJ9LGV4cG9ydEFzOlsibWF0UHJvZ3Jlc3NTcGlubmVyIl0sZmVhdHVyZXM6W3hwXSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1sicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaWRZTWlkIG1lZXQiLCJmb2N1c2FibGUiLCJmYWxzZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMywibmdTd2l0Y2giXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsImFuaW1hdGlvbi1uYW1lIiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihxaSgpLFJtKDAsInN2ZyIsMCksUXAoMSxaMCwxLDksImNpcmNsZSIsMSksUXAoMixYMCwxLDcsImNpcmNsZSIsMiksQW0oKSksMiZlJiYoZHUoIndpZHRoIixuLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLG4uZGlhbWV0ZXIsInB4IiksRG0oIm5nU3dpdGNoIiwiaW5kZXRlcm1pbmF0ZSI9PT1uLm1vZGUpLGpwKCJ2aWV3Qm94IixuLl9nZXRWaWV3Qm94KCkpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLCEwKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIiwhMSkpfSxkaXJlY3RpdmVzOltmTSxnTV0sc3R5bGVzOltRMF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksbjEuX2RpYW1ldGVycz1uZXcgV2Vha01hcCxuMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3QxXX1dfV0sbjEucHJvcERlY29yYXRvcnM9e2RpYW1ldGVyOlt7dHlwZTp4eX1dLHN0cm9rZVdpZHRoOlt7dHlwZTp4eX1dLG1vZGU6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobjEsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXByb2dyZXNzLXNwaW5uZXIiLGV4cG9ydEFzOiJtYXRQcm9ncmVzc1NwaW5uZXIiLGhvc3Q6e3JvbGU6InByb2dyZXNzYmFyIixjbGFzczoibWF0LXByb2dyZXNzLXNwaW5uZXIiLHRhYmluZGV4OiItMSIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfbm9vcEFuaW1hdGlvbnMiLCJbc3R5bGUud2lkdGgucHhdIjoiZGlhbWV0ZXIiLCJbc3R5bGUuaGVpZ2h0LnB4XSI6ImRpYW1ldGVyIiwiW2F0dHIuYXJpYS12YWx1ZW1pbl0iOidtb2RlID09PSAiZGV0ZXJtaW5hdGUiID8gMCA6IG51bGwnLCJbYXR0ci5hcmlhLXZhbHVlbWF4XSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyAxMDAgOiBudWxsJywiW2F0dHIuYXJpYS12YWx1ZW5vd10iOidtb2RlID09PSAiZGV0ZXJtaW5hdGUiID8gdmFsdWUgOiBudWxsJywiW2F0dHIubW9kZV0iOiJtb2RlIn0saW5wdXRzOlsiY29sb3IiXSx0ZW1wbGF0ZTonXHgzYyEtLVxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvIG9mIHhNaWRZTWlkIG1lZXQgYXMgdGhlIGNlbnRlciBvZiB0aGUgdmlld3BvcnQgaXMgdGhlIGNpcmNsZVwnc1xuICBjZW50ZXIuIFRoZSBjZW50ZXIgb2YgdGhlIGNpcmNsZSB3aWxsIHJlbWFpbiBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIFNWRy4gYGZvY3VzYWJsZT0iZmFsc2UiYCBwcmV2ZW50cyBJRSBmcm9tIGFsbG93aW5nIHRoZSB1c2VyIHRvXG4gIHRhYiBpbnRvIHRoZSBTVkcgZWxlbWVudC5cbi0tXHgzZVxuXHgzYyEtLVxuICBBbGwgY2hpbGRyZW4gbmVlZCB0byBiZSBoaWRkZW4gZm9yIHNjcmVlbiByZWFkZXJzIGluIG9yZGVyIHRvIHN1cHBvcnQgQ2hyb21lVm94LlxuICBNb3JlIGNvbnRleHQgaW4gdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8yMjE2NS5cbi0tXHgzZVxuPHN2Z1xuICBbc3R5bGUud2lkdGgucHhdPSJkaWFtZXRlciJcbiAgW3N0eWxlLmhlaWdodC5weF09ImRpYW1ldGVyIlxuICBbYXR0ci52aWV3Qm94XT0iX2dldFZpZXdCb3goKSJcbiAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgZm9jdXNhYmxlPSJmYWxzZSJcbiAgW25nU3dpdGNoXT0ibW9kZSA9PT0gXCdpbmRldGVybWluYXRlXCciXG4gIGFyaWEtaGlkZGVuPSJ0cnVlIj5cblxuICBceDNjIS0tXG4gICAgVGVjaG5pY2FsbHkgd2UgY2FuIHJldXNlIHRoZSBzYW1lIGBjaXJjbGVgIGVsZW1lbnQsIGhvd2V2ZXIgU2FmYXJpIGhhcyBhbiBpc3N1ZSB0aGF0IGJyZWFrc1xuICAgIHRoZSBTVkcgcmVuZGVyaW5nIGluIGRldGVybWluYXRlIG1vZGUsIGFmdGVyIHN3aXRjaGluZyBiZXR3ZWVuIGluZGV0ZXJtaW5hdGUgYW5kIGRldGVybWluYXRlLlxuICAgIFVzaW5nIGEgZGlmZmVyZW50IGVsZW1lbnQgYXZvaWRzIHRoZSBpc3N1ZS4gQW4gYWx0ZXJuYXRpdmUgdG8gdGhpcyBpcyBhZGRpbmcgYGRpc3BsYXk6IG5vbmVgXG4gICAgZm9yIGEgc3BsaXQgc2Vjb25kIGFuZCB0aGVuIHJlbW92aW5nIGl0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gbW9kZXMsIGJ1dCBpdFwncyBoYXJkIHRvIGtub3dcbiAgICBmb3IgaG93IGxvbmcgdG8gaGlkZSB0aGUgZWxlbWVudCBhbmQgaXQgY2FuIGNhdXNlIHRoZSBVSSB0byBibGluay5cbiAgLS1ceDNlXG4gIDxjaXJjbGVcbiAgICAqbmdTd2l0Y2hDYXNlPSJ0cnVlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5hbmltYXRpb24tbmFtZV09IlwnbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1cJyArIF9zcGlubmVyQW5pbWF0aW9uTGFiZWwiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNob2Zmc2V0LnB4XT0iX2dldFN0cm9rZURhc2hPZmZzZXQoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hhcnJheS5weF09Il9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkiXG4gICAgW3N0eWxlLnN0cm9rZS13aWR0aC4lXT0iX2dldENpcmNsZVN0cm9rZVdpZHRoKCkiPjwvY2lyY2xlPlxuXG4gIDxjaXJjbGVcbiAgICAqbmdTd2l0Y2hDYXNlPSJmYWxzZSJcbiAgICBjeD0iNTAlIlxuICAgIGN5PSI1MCUiXG4gICAgW2F0dHIucl09Il9nZXRDaXJjbGVSYWRpdXMoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG48L3N2Zz5cbicsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsc3R5bGVzOlsiLm1hdC1wcm9ncmVzcy1zcGlubmVye2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBzdmd7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDowO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7ZmlsbDp0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnN0cm9rZS1kYXNob2Zmc2V0IDIyNW1zIGxpbmVhcn0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2U6Q2FudmFzVGV4dH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZTthbmltYXRpb24tZHVyYXRpb246NDAwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2sgMTAwMDBtcyBjdWJpYy1iZXppZXIoMC44NywgMC4wMywgMC4zMywgMSkgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6d3p9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlt0MV19XX1dfSkse21vZGU6W3t0eXBlOnh5fV0sZGlhbWV0ZXI6W3t0eXBlOnh5fV0sc3Ryb2tlV2lkdGg6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV19KTtjbGFzcyBvMSBleHRlbmRzIG4xe2NvbnN0cnVjdG9yKHQsZSxuLG8saSl7c3VwZXIodCxlLG4sbyxpKSx0aGlzLm1vZGU9ImluZGV0ZXJtaW5hdGUifX1vMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bzEpKFNtKGhnKSxTbSh3eiksU20oWl8sOCksU20oVlAsOCksU20odDEpKX0sbzEuybVjbXA9dG8oe3R5cGU6bzEsc2VsZWN0b3JzOltbIm1hdC1zcGlubmVyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJwcm9ncmVzc2JhciIsIm1vZGUiLCJpbmRldGVybWluYXRlIiwxLCJtYXQtc3Bpbm5lciIsIm1hdC1wcm9ncmVzcy1zcGlubmVyIl0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKGR1KCJ3aWR0aCIsbi5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixuLmRpYW1ldGVyLCJweCIpLHB1KCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsbi5fbm9vcEFuaW1hdGlvbnMpKX0saW5wdXRzOntjb2xvcjoiY29sb3IifSxmZWF0dXJlczpbeHBdLGRlY2xzOjMsdmFyczo4LGNvbnN0czpbWyJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIsImZvY3VzYWJsZSIsImZhbHNlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwzLCJuZ1N3aXRjaCJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywiYW5pbWF0aW9uLW5hbWUiLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSIsMywic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHFpKCksUm0oMCwic3ZnIiwwKSxRcCgxLEswLDEsOSwiY2lyY2xlIiwxKSxRcCgyLEowLDEsNywiY2lyY2xlIiwyKSxBbSgpKSwyJmUmJihkdSgid2lkdGgiLG4uZGlhbWV0ZXIsInB4IikoImhlaWdodCIsbi5kaWFtZXRlciwicHgiKSxEbSgibmdTd2l0Y2giLCJpbmRldGVybWluYXRlIj09PW4ubW9kZSksanAoInZpZXdCb3giLG4uX2dldFZpZXdCb3goKSkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsITApLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLCExKSl9LGRpcmVjdGl2ZXM6W2ZNLGdNXSxzdHlsZXM6W1EwXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxvMS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W3QxXX1dfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvMSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtYXQtc3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLG1vZGU6ImluZGV0ZXJtaW5hdGUiLGNsYXNzOiJtYXQtc3Bpbm5lciBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfbm9vcEFuaW1hdGlvbnMiLCJbc3R5bGUud2lkdGgucHhdIjoiZGlhbWV0ZXIiLCJbc3R5bGUuaGVpZ2h0LnB4XSI6ImRpYW1ldGVyIn0saW5wdXRzOlsiY29sb3IiXSx0ZW1wbGF0ZTonXHgzYyEtLVxuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvIG9mIHhNaWRZTWlkIG1lZXQgYXMgdGhlIGNlbnRlciBvZiB0aGUgdmlld3BvcnQgaXMgdGhlIGNpcmNsZVwnc1xuICBjZW50ZXIuIFRoZSBjZW50ZXIgb2YgdGhlIGNpcmNsZSB3aWxsIHJlbWFpbiBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxuICBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIFNWRy4gYGZvY3VzYWJsZT0iZmFsc2UiYCBwcmV2ZW50cyBJRSBmcm9tIGFsbG93aW5nIHRoZSB1c2VyIHRvXG4gIHRhYiBpbnRvIHRoZSBTVkcgZWxlbWVudC5cbi0tXHgzZVxuXHgzYyEtLVxuICBBbGwgY2hpbGRyZW4gbmVlZCB0byBiZSBoaWRkZW4gZm9yIHNjcmVlbiByZWFkZXJzIGluIG9yZGVyIHRvIHN1cHBvcnQgQ2hyb21lVm94LlxuICBNb3JlIGNvbnRleHQgaW4gdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8yMjE2NS5cbi0tXHgzZVxuPHN2Z1xuICBbc3R5bGUud2lkdGgucHhdPSJkaWFtZXRlciJcbiAgW3N0eWxlLmhlaWdodC5weF09ImRpYW1ldGVyIlxuICBbYXR0ci52aWV3Qm94XT0iX2dldFZpZXdCb3goKSJcbiAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCJcbiAgZm9jdXNhYmxlPSJmYWxzZSJcbiAgW25nU3dpdGNoXT0ibW9kZSA9PT0gXCdpbmRldGVybWluYXRlXCciXG4gIGFyaWEtaGlkZGVuPSJ0cnVlIj5cblxuICBceDNjIS0tXG4gICAgVGVjaG5pY2FsbHkgd2UgY2FuIHJldXNlIHRoZSBzYW1lIGBjaXJjbGVgIGVsZW1lbnQsIGhvd2V2ZXIgU2FmYXJpIGhhcyBhbiBpc3N1ZSB0aGF0IGJyZWFrc1xuICAgIHRoZSBTVkcgcmVuZGVyaW5nIGluIGRldGVybWluYXRlIG1vZGUsIGFmdGVyIHN3aXRjaGluZyBiZXR3ZWVuIGluZGV0ZXJtaW5hdGUgYW5kIGRldGVybWluYXRlLlxuICAgIFVzaW5nIGEgZGlmZmVyZW50IGVsZW1lbnQgYXZvaWRzIHRoZSBpc3N1ZS4gQW4gYWx0ZXJuYXRpdmUgdG8gdGhpcyBpcyBhZGRpbmcgYGRpc3BsYXk6IG5vbmVgXG4gICAgZm9yIGEgc3BsaXQgc2Vjb25kIGFuZCB0aGVuIHJlbW92aW5nIGl0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gbW9kZXMsIGJ1dCBpdFwncyBoYXJkIHRvIGtub3dcbiAgICBmb3IgaG93IGxvbmcgdG8gaGlkZSB0aGUgZWxlbWVudCBhbmQgaXQgY2FuIGNhdXNlIHRoZSBVSSB0byBibGluay5cbiAgLS1ceDNlXG4gIDxjaXJjbGVcbiAgICAqbmdTd2l0Y2hDYXNlPSJ0cnVlIlxuICAgIGN4PSI1MCUiXG4gICAgY3k9IjUwJSJcbiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIlxuICAgIFtzdHlsZS5hbmltYXRpb24tbmFtZV09IlwnbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1cJyArIF9zcGlubmVyQW5pbWF0aW9uTGFiZWwiXG4gICAgW3N0eWxlLnN0cm9rZS1kYXNob2Zmc2V0LnB4XT0iX2dldFN0cm9rZURhc2hPZmZzZXQoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hhcnJheS5weF09Il9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkiXG4gICAgW3N0eWxlLnN0cm9rZS13aWR0aC4lXT0iX2dldENpcmNsZVN0cm9rZVdpZHRoKCkiPjwvY2lyY2xlPlxuXG4gIDxjaXJjbGVcbiAgICAqbmdTd2l0Y2hDYXNlPSJmYWxzZSJcbiAgICBjeD0iNTAlIlxuICAgIGN5PSI1MCUiXG4gICAgW2F0dHIucl09Il9nZXRDaXJjbGVSYWRpdXMoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIlxuICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSJcbiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+XG48L3N2Zz5cbicsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsc3R5bGVzOlsiLm1hdC1wcm9ncmVzcy1zcGlubmVye2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBzdmd7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDowO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7ZmlsbDp0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnN0cm9rZS1kYXNob2Zmc2V0IDIyNW1zIGxpbmVhcn0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2U6Q2FudmFzVGV4dH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZTthbmltYXRpb24tZHVyYXRpb246NDAwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2sgMTAwMDBtcyBjdWJpYy1iZXppZXIoMC44NywgMC4wMywgMC4zMywgMSkgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6d3p9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbWl9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbVlBdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOlt0MV19XX1dfSksbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBpMXt9aTEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGkxKX0saTEuybVtb2Q9YW8oe3R5cGU6aTF9KSxpMS7JtWluaj12bih7aW1wb3J0czpbW1hJLFdNXSxYSV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGkxLFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbWEksV01dLGV4cG9ydHM6W24xLG8xLFhJXSxkZWNsYXJhdGlvbnM6W24xLG8xXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKGkxLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bbjEsbzFdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1hJLFdNXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltuMSxvMSxYSV19fSk7Y29uc3QgYTE9WyJyZWdleFN0cmluZ0lucHV0Il07ZnVuY3Rpb24gcjEodCxlKXtpZigxJnQmJihObSgwKSxSbSgxLCJsaSIsMjIpLGt1KDIpLEFtKCksem0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O3JjKDEpLERtKCJ0aXRsZSIsdC5uYW1lKSxyYygxKSxTdSh0Lm5hbWUpfX1mdW5jdGlvbiBzMSh0LGUpe2lmKDEmdCYmKFJtKDAsImxpIiwyMyksUm0oMSwiZW0iKSxrdSgyKSxBaCgzLCJudW1iZXIiKSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpLiRpbXBsaWNpdDtyYygyKSxEdSgiYW5kICIsVGgoMywxLHQucnVucy5sZW5ndGgtNSksIiBtb3JlIil9fWZ1bmN0aW9uIGwxKHQsZSl7MSZ0JiYoUm0oMCwibGkiLDI0KSxSbSgxLCJlbSIpLGt1KDIsIk5vIHJ1bnMgYXJlIGluIHRoZSBncm91cCIpLEFtKCksQW0oKSl9Y29uc3QgYzE9ZnVuY3Rpb24odCl7cmV0dXJue2JvcmRlckNvbG9yOnR9fSxkMT1mdW5jdGlvbih0KXtyZXR1cm57YmFja2dyb3VuZENvbG9yOnR9fTtmdW5jdGlvbiBwMSh0LGUpe2lmKDEmdCYmKFJtKDAsInVsIiwxNiksUm0oMSwibGkiKSxSbSgyLCJsYWJlbCIpLFRtKDMsInNwYW4iLDE3KSxSbSg0LCJjb2RlIiwxOCksa3UoNSksQW0oKSxBbSgpLFJtKDYsInVsIiksUXAoNyxyMSwzLDIsIm5nLWNvbnRhaW5lciIsMTkpLEFoKDgsInNsaWNlIiksUXAoOSxzMSw0LDMsImxpIiwyMCksUXAoMTAsbDEsMywwLCJsaSIsMjEpLEFtKCksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7RG0oIm5nU3R5bGUiLE1oKDExLGMxLHQuY29sb3IpKSxyYygzKSxEbSgibmdTdHlsZSIsTWgoMTMsZDEsdC5jb2xvcikpLHJjKDEpLERtKCJ0aXRsZSIsdC5ncm91cElkKSxyYygxKSxTdSh0Lmdyb3VwSWQpLHJjKDIpLERtKCJuZ0Zvck9mIix6aCg4LDcsdC5ydW5zLDAsNSkpLHJjKDIpLERtKCJuZ0lmIix0LnJ1bnMubGVuZ3RoPjUpLHJjKDEpLERtKCJuZ0lmIiwwPT09dC5ydW5zLmxlbmd0aCl9fWZ1bmN0aW9uIG0xKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwxNCksUXAoMSxwMSwxMSwxNSwidWwiLDE1KSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7cmMoMSksRG0oIm5nRm9yT2YiLHQuY29sb3JSdW5QYWlyTGlzdCl9fWZ1bmN0aW9uIHUxKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwyNSksa3UoMSwiIFRoZXJlIGFyZSBubyBydW5zIG1hdGNoaW5nIHRoZSByZWdleCwgIiksUm0oMiwiY29kZSIpLGt1KDMpLEFtKCksa3UoNCwiLiBQbGVhc2UgY2hlY2sgaWYgeW91ciByZWdleCBzdHJpbmcgaXMgY29ycmVjdC4gIiksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO3JjKDMpLER1KCIvIix0LnJlZ2V4U3RyaW5nLCIvIil9fWZ1bmN0aW9uIGYxKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwxMCksUm0oMSwiaDQiKSxrdSgyLCJDb2xvciBncm91cCBwcmV2aWV3IiksQW0oKSxSbSgzLCJkaXYiLDExKSxRcCg0LG0xLDIsMSwiZGl2IiwxMiksUXAoNSx1MSw1LDEsIm5nLXRlbXBsYXRlIixudWxsLDEzLGliKSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD0kcCg2KSxlPVltKCk7cmMoNCksRG0oIm5nSWYiLGUuY29sb3JSdW5QYWlyTGlzdC5sZW5ndGgpKCJuZ0lmRWxzZSIsdCl9fWNsYXNzIGcxe2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5kaWFsb2dSZWY9dCx0aGlzLmhvc3RFbFJlZj1lLHRoaXMub25TYXZlPW5ldyBMaCx0aGlzLnJlZ2V4SW5wdXRPbkNoYW5nZT1uZXcgTGgsdGhpcy50aW1lT3V0SWQ9MH1yZXNldEZvY3VzKCl7dGhpcy5ob3N0RWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8dGhpcy5yZWdleFN0cmluZ0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1vbkVudGVyKHQpe3RoaXMub25TYXZlQ2xpY2sodCksdGhpcy5kaWFsb2dSZWYuY2xvc2UoKX1vblNhdmVDbGljayh0KXt0aGlzLm9uU2F2ZS5lbWl0KHQpfWZpbGxFeGFtcGxlKHQpe3RoaXMucmVnZXhTdHJpbmc9dCx0aGlzLnJlZ2V4SW5wdXRDaGFuZ2UodCl9cmVnZXhJbnB1dENoYW5nZSh0KXt0aGlzLnJlZ2V4SW5wdXRPbkNoYW5nZS5lbWl0KHQpfWhhbmRsZUZvY3VzT3V0KCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZU91dElkKSx0aGlzLnRpbWVPdXRJZD1zZXRUaW1lb3V0KHRoaXMucmVzZXRGb2N1cy5iaW5kKHRoaXMpLDApfX1nMS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZzEpKFNtKFhHKSxTbShoZykpfSxnMS7JtWNtcD10byh7dHlwZTpnMSxzZWxlY3RvcnM6W1sicmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChhMSw3KSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLnJlZ2V4U3RyaW5nSW5wdXQ9dC5maXJzdCl9fSxpbnB1dHM6e3JlZ2V4U3RyaW5nOiJyZWdleFN0cmluZyIsY29sb3JSdW5QYWlyTGlzdDoiY29sb3JSdW5QYWlyTGlzdCJ9LG91dHB1dHM6e29uU2F2ZToib25TYXZlIixyZWdleElucHV0T25DaGFuZ2U6InJlZ2V4SW5wdXRPbkNoYW5nZSJ9LGRlY2xzOjMwLHZhcnM6Mixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiQ29sb3IgUnVucyBieSBSZWdleCBRdWVyeSIpOiRsb2NhbGl6ZWA6Q29sb3IgUnVucyBieSBSZWdleCBRdWVyeeKQnzE1ZWQ5ZjZmZDJkNDkwNmE0ODAzZmMxMjU1ZGUzYzVkYjJjNTY1MzDikJ85MDg4OTg1MTEzOTYwMzEyODA4OkNvbG9yIFJ1bnMgYnkgUmVnZXggUXVlcnlgLFtbMSwicmVnZXgtZWRpdC1kaWFsb2ciLDMsImZvY3Vzb3V0Il0sWyJtYXQtZGlhbG9nLXRpdGxlIiwiIl0sWyJtYXRJbnB1dCIsIiIsImFyaWEtbGFiZWwiLHQsImNka0ZvY3VzSW5pdGlhbCIsIiIsMywidmFsdWUiLCJrZXlkb3duLmVudGVyIiwiaW5wdXQiXSxbInJlZ2V4U3RyaW5nSW5wdXQiLCIiXSxbMSwiZXhhbXBsZS1kZXRhaWxzIl0sWzMsImNsaWNrIl0sWyJjbGFzcyIsImdyb3VwLWNvbnRhaW5lciIsNCwibmdJZiJdLFsibWF0LWRpYWxvZy1hY3Rpb25zIiwiIiwiYWxpZ24iLCJlbmQiXSxbIm1hdC1idXR0b24iLCIiLCJtYXQtZGlhbG9nLWNsb3NlIiwiIl0sWyJtYXQtcmFpc2VkLWJ1dHRvbiIsIiIsImNvbG9yIiwicHJpbWFyeSIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiLDMsImNsaWNrIl0sWzEsImdyb3VwLWNvbnRhaW5lciJdLFsxLCJncm91cGluZy1wcmV2aWV3Il0sWyJjbGFzcyIsIm1hdGNoLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJlbXB0eSIsIiJdLFsxLCJtYXRjaC1jb250YWluZXIiXSxbImNsYXNzIiwiZ3JvdXAiLDMsIm5nU3R5bGUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJncm91cCIsMywibmdTdHlsZSJdLFsxLCJjb2xvci1zd2F0Y2giLDMsIm5nU3R5bGUiXSxbMSwiZ3JvdXAtaWQiLDMsInRpdGxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsiY2xhc3MiLCJtb3JlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vLW1hdGNoIiw0LCJuZ0lmIl0sWzMsInRpdGxlIl0sWzEsIm1vcmUiXSxbMSwibm8tbWF0Y2giXSxbMSwid2FybmluZyJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsMCksVm0oImZvY3Vzb3V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmhhbmRsZUZvY3VzT3V0KCl9KSksUm0oMSwiaDEiLDEpLGt1KDIsIkNvbG9yIHJ1bnMgYnkgcmVnZXgiKSxBbSgpLFJtKDMsIm1hdC1kaWFsb2ctY29udGVudCIpLFJtKDQsInAiKSxrdSg1LCJFbnRlciBhIHJlZ2V4IHdpdGggY2FwdHVyaW5nIGdyb3VwcyB0byBtYXRjaCBhZ2FpbnN0IHJ1biBuYW1lczoiKSxBbSgpLFJtKDYsIm1hdC1mb3JtLWZpZWxkIiksUm0oNywiaW5wdXQiLDIsMyksVm0oImtleWRvd24uZW50ZXIiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uRW50ZXIoZS50YXJnZXQudmFsdWUpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucmVnZXhJbnB1dENoYW5nZShlLnRhcmdldC52YWx1ZSl9KSksQW0oKSxBbSgpLEFtKCksUm0oOSwiZGl2Iiw0KSxSbSgxMCwicCIpLGt1KDExLCcgRWFjaCBtYXRjaGluZyBydW4gd2lsbCBiZSBhc3NpZ25lZCBhIGNvbG9yIGJhc2VkIG9uIHRoZSAia2V5IiBmb3JtZWQgYnkgaXRzIG1hdGNoZXMgdG8gdGhlIGNhcHR1cmluZyBncm91cHMuICcpLFRtKDEyLCJiciIpLFJtKDEzLCJidXR0b24iLDUpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5maWxsRXhhbXBsZSgiKHRyYWlufGV2YWwpIil9KSksa3UoMTQsIiBUcnkgIiksUm0oMTUsImNvZGUiKSxrdSgxNiwiKHRyYWlufGV2YWwpIiksQW0oKSxBbSgpLGt1KDE3LCIgdG8gYXNzaWduIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksUm0oMTgsImNvZGUiKSxrdSgxOSwidHJhaW4iKSxBbSgpLGt1KDIwLCIgdG8gb25lIGNvbG9yIGFuZCBhbGwgcnVucyBjb250YWluaW5nICIpLFJtKDIxLCJjb2RlIiksa3UoMjIsImV2YWwiKSxBbSgpLGt1KDIzLCIgdG8gYW5vdGhlciBjb2xvci4gIiksQW0oKSxBbSgpLFFwKDI0LGYxLDcsMiwiZGl2Iiw2KSxSbSgyNSwiZGl2Iiw3KSxSbSgyNiwiYnV0dG9uIiw4KSxrdSgyNywiQ2FuY2VsIiksQW0oKSxSbSgyOCwiYnV0dG9uIiw5KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7aGkodCk7Y29uc3Qgbz0kcCg4KTtyZXR1cm4gbi5vblNhdmVDbGljayhvLnZhbHVlKX0pKSxrdSgyOSwiIFNhdmUgIiksQW0oKSxBbSgpLEFtKCl9MiZlJiYocmMoNyksS20oInZhbHVlIixuLnJlZ2V4U3RyaW5nKSxyYygxNyksRG0oIm5nSWYiLG4ucmVnZXhTdHJpbmcpKX0sZGlyZWN0aXZlczpbclcsc1csQVYsTFksZE0sbFcsWEgsYVcsbE0sQ01dLHBpcGVzOltVTSxGTV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7cGFkZGluZzowO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y29sb3I6IzE5NzZkMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNDJhNWY1fS5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTp2aXNpdGVke2NvbG9yOiM3YjFmYTJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTp2aXNpdGVke2NvbG9yOiNiYTY4Yzh9Lmdyb3VwLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjEwcHggMH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjEwcHh9Lmdyb3VwLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6LjllbX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Lmdyb3VwaW5nLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjttYXgtaGVpZ2h0OjUwdmg7b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MjBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBpbmctcHJldmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cGluZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Lm1hdGNoLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6ZmxleC1zdGFydDtkaXNwbGF5OmdyaWQ7ZmxleC13cmFwOndyYXA7Z2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLCBtaW5tYXgoNTAlLCAxZnIpKX0uY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjAgMCAycHggIzAwMDtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTVweDt3aWR0aDoxNXB4fXVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaXN0LXN0eWxlLXR5cGU6bm9uZTtwYWRkaW5nOjB9bWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czozcHg7bWFyZ2luOjA7cGFkZGluZzoxMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICBsYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dhcDoxMHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczptYXgtY29udGVudCBhdXRvO3BhZGRpbmc6NXB4IDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICBsYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAuZ3JvdXAtaWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOTVlbTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjllbX0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgdWxbX25nY29udGVudC0lQ09NUCVdICAgbGlbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm1vcmVbX25nY29udGVudC0lQ09NUCVdLCAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm5vLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO21hcmdpbi10b3A6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1tYXRjaFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnMSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJyZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJyZWdleF9lZGl0X2RpYWxvZy5uZy5odG1sIixzdHlsZVVybHM6WyJyZWdleF9lZGl0X2RpYWxvZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlhHfSx7dHlwZTpoZ31dfSkse3JlZ2V4U3RyaW5nOlt7dHlwZTp4eX1dLGNvbG9yUnVuUGFpckxpc3Q6W3t0eXBlOnh5fV0sb25TYXZlOlt7dHlwZTpPeX1dLHJlZ2V4SW5wdXRPbkNoYW5nZTpbe3R5cGU6T3l9XSxyZWdleFN0cmluZ0lucHV0Olt7dHlwZTpaYSxhcmdzOlsicmVnZXhTdHJpbmdJbnB1dCIse3N0YXRpYzohMH1dfV19KTtjbGFzcyBoMXtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5zdG9yZT10LHRoaXMuZGlhbG9nUmVmPWUsdGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQ9bmV3IEksdGhpcy5ncm91cEJ5UmVnZXhTdHJpbmckPVF0KCgoKT0+cmUodGhpcy5zdG9yZS5zZWxlY3QoTU4pLnBpcGUoYmUoMSkpLHRoaXMudGVudGF0aXZlUmVnZXhTdHJpbmckKSkpLnBpcGUoTmUoIiIpKSx0aGlzLmNvbG9yUnVuUGFpckxpc3QkPVF0KCgoKT0+dGhpcy5ncm91cEJ5UmVnZXhTdHJpbmckLnBpcGUoZ2UoNTAwKSxjZSgodD0+e3RyeXtjb25zdCBlPW5ldyBSZWdFeHAodCk7cmV0dXJuIEJvb2xlYW4oZSl9Y2F0Y2godCl7cmV0dXJuITF9fSkpLGZlKHRoaXMuYWxsUnVucyQsdGhpcy5ydW5JZFRvRWlkJCx0aGlzLnN0b3JlLnNlbGVjdChBTiksdGhpcy5zdG9yZS5zZWxlY3QoSkQpKSxJdCgoKFt0LGUsbixvLGldKT0+e2NvbnN0IGE9bk4oe2tleTp0Ti5SRUdFWCxyZWdleFN0cmluZzp0fSxlLG4pLHI9bmV3IE1hcCxzPVtdO2Zvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVudHJpZXMoYS5tYXRjaGVzKSl7bGV0IG49ci5nZXQodCk7aWYoIW4pe2NvbnN0IGU9by5jb2xvcnNbci5zaXplJW8uY29sb3JzLmxlbmd0aF07bj1pP2UuZGFya0hleDplLmxpZ2h0SGV4LHIuc2V0KHQsbil9cy5wdXNoKHtncm91cElkOnQsY29sb3I6bixydW5zOmV9KX1yZXR1cm4gc30pKSkpKS5waXBlKE5lKFtdKSksdGhpcy5leHBlcmltZW50SWRzPW4uZXhwZXJpbWVudElkcyx0aGlzLnJ1bklkVG9FaWQkPVd0KHRoaXMuZXhwZXJpbWVudElkcy5tYXAoKHQ9PnRoaXMuc3RvcmUuc2VsZWN0KGNOLHtleHBlcmltZW50SWQ6dH0pLnBpcGUoSXQoKGU9Pih7ZXhwZXJpbWVudElkOnQscnVuSWRzOmV9KSkpKSkpKS5waXBlKEl0KCh0PT57Y29uc3QgZT17fTtmb3IoY29uc3R7cnVuSWRzOm4sZXhwZXJpbWVudElkOm99b2YgdClmb3IoY29uc3QgdCBvZiBuKWVbdF09bztyZXR1cm4gZX0pKSksdGhpcy5hbGxSdW5zJD1XdCh0aGlzLmV4cGVyaW1lbnRJZHMubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdChsTix7ZXhwZXJpbWVudElkOnR9KSkpKS5waXBlKEl0KCh0PT50LmZsYXQoKSkpKX1vblJlZ2V4SW5wdXRPbkNoYW5nZSh0KXt0aGlzLnRlbnRhdGl2ZVJlZ2V4U3RyaW5nJC5uZXh0KHQpfW9uU2F2ZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEdSKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxncm91cEJ5OntrZXk6dE4uUkVHRVgscmVnZXhTdHJpbmc6dH19KSl9fWZ1bmN0aW9uIGIxKHQsZSl7MSZ0JiZUbSgwLCJtYXQtaWNvbiIsMTEpfWZ1bmN0aW9uIHkxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwxMCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe2hpKHQpO2NvbnN0IG49WW0oKTtyZXR1cm4gbi5vbkdyb3VwQnlDaGFuZ2UuZW1pdCh7a2V5Om4uR3JvdXBCeUtleS5FWFBFUklNRU5UfSl9KSksUm0oMSwic3BhbiIpLFFwKDIsYjEsMSwwLCJtYXQtaWNvbiIsNyksQW0oKSxSbSgzLCJsYWJlbCIpLGt1KDQsIkV4cGVyaW1lbnQiKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7anAoImFyaWEtY2hlY2tlZCIsdC5zZWxlY3RlZEdyb3VwQnkua2V5PT09dC5Hcm91cEJ5S2V5LkVYUEVSSU1FTlQpLHJjKDIpLERtKCJuZ0lmIix0LnNlbGVjdGVkR3JvdXBCeS5rZXk9PT10Lkdyb3VwQnlLZXkuRVhQRVJJTUVOVCl9fWZ1bmN0aW9uIF8xKHQsZSl7MSZ0JiZUbSgwLCJtYXQtaWNvbiIsMTEpfWZ1bmN0aW9uIEMxKHQsZSl7MSZ0JiZUbSgwLCJtYXQtaWNvbiIsMTEpfWZ1bmN0aW9uIE0xKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwxMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLm9uR3JvdXBCeVJlZ2V4Q2xpY2soKX0pKSxSbSgxLCJzcGFuIiksUXAoMixDMSwxLDAsIm1hdC1pY29uIiw3KSxBbSgpLFJtKDMsImxhYmVsIiksa3UoNCwiUmVnZXgiKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7anAoImFyaWEtY2hlY2tlZCIsdC5zZWxlY3RlZEdyb3VwQnkua2V5PT09dC5Hcm91cEJ5S2V5LlJFR0VYKSxyYygyKSxEbSgibmdJZiIsdC5zZWxlY3RlZEdyb3VwQnkua2V5PT09dC5Hcm91cEJ5S2V5LlJFR0VYKX19ZnVuY3Rpb24gdjEodCxlKXtpZigxJnQmJihSbSgwLCJsYWJlbCIpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygxKSxTdSh0LnJlZ2V4U3RyaW5nKX19ZnVuY3Rpb24geDEodCxlKXsxJnQmJihSbSgwLCJsYWJlbCIsMTcpLGt1KDEsIihub25lIHNldCkiKSxBbSgpKX1mdW5jdGlvbiBPMSh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImJ1dHRvbiIsMTMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vblJlZ2V4U3RyaW5nRWRpdCgpfSkpLFJtKDEsInNwYW4iKSxUbSgyLCJtYXQtaWNvbiIsMTQpLEFtKCksUXAoMyx2MSwyLDEsImxhYmVsIiwxNSksUXAoNCx4MSwyLDAsImxhYmVsIiwxNiksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtyYygzKSxEbSgibmdJZiIsdC5yZWdleFN0cmluZykscmMoMSksRG0oIm5nSWYiLCF0LnJlZ2V4U3RyaW5nKX19aDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGgxKShTbShJdyksU20oWEcpLFNtKEpHKSl9LGgxLsm1Y21wPXRvKHt0eXBlOmgxLHNlbGVjdG9yczpbWyJyZWdleC1lZGl0LWRpYWxvZyJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJyZWdleFN0cmluZyIsImNvbG9yUnVuUGFpckxpc3QiLCJvblNhdmUiLCJyZWdleElucHV0T25DaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsInJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCIsMCksVm0oIm9uU2F2ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TYXZlKGUpfSkpKCJyZWdleElucHV0T25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVnZXhJbnB1dE9uQ2hhbmdlKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJyZWdleFN0cmluZyIsVGgoMSwyLG4uZ3JvdXBCeVJlZ2V4U3RyaW5nJCkpKCJjb2xvclJ1blBhaXJMaXN0IixUaCgyLDQsbi5jb2xvclJ1blBhaXJMaXN0JCkpfSxkaXJlY3RpdmVzOltnMV0scGlwZXM6W3dNXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdLCByZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9Il19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGgxLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InJlZ2V4LWVkaXQtZGlhbG9nIix0ZW1wbGF0ZTonPHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudFxuICAgIFtyZWdleFN0cmluZ109Imdyb3VwQnlSZWdleFN0cmluZyQgfCBhc3luYyJcbiAgICBbY29sb3JSdW5QYWlyTGlzdF09ImNvbG9yUnVuUGFpckxpc3QkIHwgYXN5bmMiXG4gICAgKG9uU2F2ZSk9Im9uU2F2ZSgkZXZlbnQpIlxuICAgIChyZWdleElucHV0T25DaGFuZ2UpPSJvblJlZ2V4SW5wdXRPbkNoYW5nZSgkZXZlbnQpIlxuICA+PC9yZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQ+JyxzdHlsZXM6WyJcbiAgICAgIDpob3N0LFxuICAgICAgcmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd30se3R5cGU6WEd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltKR119XX1dfSksbnVsbCk7Y2xhc3MgUDF7Y29uc3RydWN0b3IodCl7dGhpcy5kaWFsb2c9dCx0aGlzLkdyb3VwQnlLZXk9dE4sdGhpcy5vbkdyb3VwQnlDaGFuZ2U9bmV3IExofW9uUmVnZXhTdHJpbmdFZGl0KCl7dGhpcy5kaWFsb2cub3BlbihoMSx7bWF4SGVpZ2h0OiI5NXZoIixtYXhXaWR0aDoiODB2dyIsZGF0YTp7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHN9fSl9b25Hcm91cEJ5UmVnZXhDbGljaygpe3RoaXMucmVnZXhTdHJpbmc/dGhpcy5vbkdyb3VwQnlDaGFuZ2UuZW1pdCh7a2V5OnROLlJFR0VYLHJlZ2V4U3RyaW5nOnRoaXMucmVnZXhTdHJpbmd9KTp0aGlzLm9uUmVnZXhTdHJpbmdFZGl0KCl9fVAxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxQMSkoU20ob1cpKX0sUDEuybVjbXA9dG8oe3R5cGU6UDEsc2VsZWN0b3JzOltbInJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50Il1dLGlucHV0czp7c2hvd0V4cGVyaW1lbnRzR3JvdXBCeToic2hvd0V4cGVyaW1lbnRzR3JvdXBCeSIsZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIscmVnZXhTdHJpbmc6InJlZ2V4U3RyaW5nIixzZWxlY3RlZEdyb3VwQnk6InNlbGVjdGVkR3JvdXBCeSIsc2hvd0dyb3VwQnlSZWdleDoic2hvd0dyb3VwQnlSZWdleCJ9LG91dHB1dHM6e29uR3JvdXBCeUNoYW5nZToib25Hcm91cEJ5Q2hhbmdlIn0sZGVjbHM6MTQsdmFyczo2LGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIkNvbG9yIHJ1bnMgYnkuLi4iLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIl0sWyJzdmdJY29uIiwicGFsZXR0ZV8yNHB4Il0sWzEsInJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSJdLFsiZ3JvdXBCeU1lbnUiLCJtYXRNZW51Il0sWzEsImxhYmVsIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwiZXhwZXJpbWVudCIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJydW4iLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZG9uZV8yNHB4Iiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwicmVnZXgiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtIiwiZGF0YS12YWx1ZSIsInJlZ2V4LWVkaXQiLCJjbGFzcyIsImRpc3BsYXktcmVnZXgtc3RyaW5nIiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsImV4cGVyaW1lbnQiLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZG9uZV8yNHB4Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwicmVnZXgiLDMsImNsaWNrIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtIiwiZGF0YS12YWx1ZSIsInJlZ2V4LWVkaXQiLDEsImRpc3BsYXktcmVnZXgtc3RyaW5nIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImVkaXRfMjRweCJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsIm5vbmUtc2V0LXN0cmluZyIsNCwibmdJZiJdLFsxLCJub25lLXNldC1zdHJpbmciXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImJ1dHRvbiIsMCksVG0oMSwibWF0LWljb24iLDEpLEFtKCksUm0oMiwibWF0LW1lbnUiLDIsMyksUm0oNCwiZGl2Iiw0KSxrdSg1LCJDb2xvciBydW5zIGJ5IiksQW0oKSxRcCg2LHkxLDUsMiwiYnV0dG9uIiw1KSxSbSg3LCJidXR0b24iLDYpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkdyb3VwQnlDaGFuZ2UuZW1pdCh7a2V5Om4uR3JvdXBCeUtleS5SVU59KX0pKSxSbSg4LCJzcGFuIiksUXAoOSxfMSwxLDAsIm1hdC1pY29uIiw3KSxBbSgpLFJtKDEwLCJsYWJlbCIpLGt1KDExLCJSdW4iKSxBbSgpLEFtKCksUXAoMTIsTTEsNSwyLCJidXR0b24iLDgpLFFwKDEzLE8xLDUsMiwiYnV0dG9uIiw5KSxBbSgpKSwyJmUmJihEbSgibWF0TWVudVRyaWdnZXJGb3IiLCRwKDMpKSxyYyg2KSxEbSgibmdJZiIsbi5zaG93RXhwZXJpbWVudHNHcm91cEJ5KSxyYygxKSxqcCgiYXJpYS1jaGVja2VkIixuLnNlbGVjdGVkR3JvdXBCeS5rZXk9PT1uLkdyb3VwQnlLZXkuUlVOKSxyYygyKSxEbSgibmdJZiIsbi5zZWxlY3RlZEdyb3VwQnkua2V5PT09bi5Hcm91cEJ5S2V5LlJVTikscmMoMyksRG0oIm5nSWYiLG4uc2hvd0dyb3VwQnlSZWdleCkscmMoMSksRG0oIm5nSWYiLG4uc2hvd0dyb3VwQnlSZWdleCkpfSxkaXJlY3RpdmVzOltYSCxlWSxEVyxLVyxkTSxXV10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5e2ZvbnQtc2l6ZToxNnB4fSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAubGFiZWx7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6LjllbTttYXJnaW46MTBweCAwO3BhZGRpbmc6MCAxNnB4O3BvaW50ZXItZXZlbnRzOm5vbmV9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IGJ1dHRvbntkaXNwbGF5OmdyaWQ7Z2FwOjJweCAxMHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMHB4IGF1dG99ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IG1hdC1pY29ue2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZ3twYWRkaW5nLWxlZnQ6NDBweH0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmd7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAgIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmcsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgICAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmcgLm5vbmUtc2V0LXN0cmluZ3tjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUDEsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoicnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJydW5zX2dyb3VwX21lbnVfYnV0dG9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJydW5zX2dyb3VwX21lbnVfYnV0dG9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6b1d9XX0pLHtzaG93RXhwZXJpbWVudHNHcm91cEJ5Olt7dHlwZTp4eX1dLGV4cGVyaW1lbnRJZHM6W3t0eXBlOnh5fV0scmVnZXhTdHJpbmc6W3t0eXBlOnh5fV0sc2VsZWN0ZWRHcm91cEJ5Olt7dHlwZTp4eX1dLHNob3dHcm91cEJ5UmVnZXg6W3t0eXBlOnh5fV0sb25Hcm91cEJ5Q2hhbmdlOlt7dHlwZTpPeX1dfSk7Y2xhc3MgdzF7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2hvd0dyb3VwQnlSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QobkUpLHRoaXMuc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQ9dGhpcy5zdG9yZS5zZWxlY3QoRVMpLnBpcGUoSXQoKHQ9PnQuaGFzKFprLkNPTVBBUkVfRVhQRVJJTUVOVCkpKSksdGhpcy5zZWxlY3RlZEdyb3VwQnkkPXRoaXMuc3RvcmUuc2VsZWN0KGZOKSx0aGlzLmdyb3VwQnlSZWdleFN0cmluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoTU4pfW9uR3JvdXBCeUNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEdSKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxncm91cEJ5OnR9KSl9fXcxLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx3MSkoU20oSXcpKX0sdzEuybVjbXA9dG8oe3R5cGU6dzEsc2VsZWN0b3JzOltbInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iXV0saW5wdXRzOntleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIn0sZGVjbHM6NSx2YXJzOjEzLGNvbnN0czpbWzMsInJlZ2V4U3RyaW5nIiwic2VsZWN0ZWRHcm91cEJ5Iiwic2hvd0dyb3VwQnlSZWdleCIsInNob3dFeHBlcmltZW50c0dyb3VwQnkiLCJleHBlcmltZW50SWRzIiwib25Hcm91cEJ5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudCIsMCksVm0oIm9uR3JvdXBCeUNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25Hcm91cEJ5Q2hhbmdlKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQW0oKSksMiZlJiZEbSgicmVnZXhTdHJpbmciLFRoKDEsNSxuLmdyb3VwQnlSZWdleFN0cmluZyQpKSgic2VsZWN0ZWRHcm91cEJ5IixUaCgyLDcsbi5zZWxlY3RlZEdyb3VwQnkkKSkoInNob3dHcm91cEJ5UmVnZXgiLFRoKDMsOSxuLnNob3dHcm91cEJ5UmVnZXgkKSkoInNob3dFeHBlcmltZW50c0dyb3VwQnkiLFRoKDQsMTEsbi5zaG93RXhwZXJpbWVudHNHcm91cEJ5JCkpKCJleHBlcmltZW50SWRzIixuLmV4cGVyaW1lbnRJZHMpfSxkaXJlY3RpdmVzOltQMV0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHcxLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLHRlbXBsYXRlOidcbiAgICA8cnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnRcbiAgICAgIFtyZWdleFN0cmluZ109Imdyb3VwQnlSZWdleFN0cmluZyQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZEdyb3VwQnldPSJzZWxlY3RlZEdyb3VwQnkkIHwgYXN5bmMiXG4gICAgICBbc2hvd0dyb3VwQnlSZWdleF09InNob3dHcm91cEJ5UmVnZXgkIHwgYXN5bmMiXG4gICAgICBbc2hvd0V4cGVyaW1lbnRzR3JvdXBCeV09InNob3dFeHBlcmltZW50c0dyb3VwQnkkIHwgYXN5bmMiXG4gICAgICBbZXhwZXJpbWVudElkc109ImV4cGVyaW1lbnRJZHMiXG4gICAgICAob25Hcm91cEJ5Q2hhbmdlKT0ib25Hcm91cEJ5Q2hhbmdlKCRldmVudCkiXG4gICAgPjwvcnVucy1ncm91cC1tZW51LWJ1dHRvbi1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7ZXhwZXJpbWVudElkczpbe3R5cGU6eHl9XX0pO2NvbnN0IGsxPVsiY29udGFpbmVyIl07dmFyIFMxOyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5MRUZUPTFdPSJMRUZUIix0W3QuUklHSFQ9Ml09IlJJR0hUIn0pKFMxfHwoUzE9e30pKTtjbGFzcyBEMXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy50aWNrQ291bnQ9MjAsdGhpcy52YWx1ZT1uZXcgTGgsdGhpcy5Qb3NpdGlvbj1TMSx0aGlzLmFjdGl2ZVRodW1iPVMxLk5PTkUsdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI9MCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEl9Z2V0VGh1bWJQb3NpdGlvbih0KXtjb25zdCBlPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHQpLG49dGhpcy5tYXgtdGhpcy5taW47cmV0dXJuIG48PTA/IjUwJSI6KGUtdGhpcy5taW4pL24qMTAwKyIlIn1nZXRUcmFja1dpZHRoKCl7Y29uc3QgdD10aGlzLm1heC10aGlzLm1pbjtyZXR1cm4gdDw9MD8iMCUiOih0aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLnVwcGVyVmFsdWUpLXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHRoaXMubG93ZXJWYWx1ZSkpL3QqMTAwKyIlIn1nZXRDbGlwcGVkVmFsdWUodCl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW4pLHRoaXMubWF4KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkluaXQoKXtvZShkb2N1bWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSksb2UoZG9jdW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmhhbmRsZU1vdXNlT3V0KHQpfSkpfWhhbmRsZU1vdXNlRG93bih0LGUpe3RoaXMuYWN0aXZlVGh1bWI9ZSx0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj02LXQub2Zmc2V0WH1jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpe2NvbnN0e2xlZnQ6ZSxyaWdodDpufT10aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89dC5jbGllbnRYLWUrdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI7bGV0IGk7aWYobnVsbCE9PXRoaXMudGlja0NvdW50JiZ0aGlzLnRpY2tDb3VudD4wKXtjb25zdCB0PShuLWUpL3RoaXMudGlja0NvdW50O2k9TWF0aC5yb3VuZChvL3QpKnQvKG4tZSl9ZWxzZSBpPW8vKG4tZSk7Y29uc3QgYT10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLm1pbisodGhpcy5tYXgtdGhpcy5taW4pKmkpO3JldHVybiBOdW1iZXIoYS50b0ZpeGVkKDEwKSl9aGFuZGxlTW91c2VNb3ZlKHQpe2lmKHRoaXMuYWN0aXZlVGh1bWI9PT1TMS5OT05FKXJldHVybjtjb25zdCBlPXRoaXMuY2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KTtsZXQgbj1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07dGhpcy5hY3RpdmVUaHVtYj09PVMxLkxFRlQ/KGU+dGhpcy51cHBlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1TMS5SSUdIVCksbj1bZSx0aGlzLnVwcGVyVmFsdWVdKTooZTx0aGlzLmxvd2VyVmFsdWUmJih0aGlzLmFjdGl2ZVRodW1iPVMxLkxFRlQpLG49W3RoaXMubG93ZXJWYWx1ZSxlXSksdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShuKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfW1heWJlTm90aWZ5TmV4dFZhbHVlKHQpe2NvbnN0W2Usbl09dC5zb3J0KCgodCxlKT0+dC1lKSk7dGhpcy5sb3dlclZhbHVlPT09ZSYmdGhpcy51cHBlclZhbHVlPT09bnx8dGhpcy52YWx1ZS5lbWl0KHtsb3dlclZhbHVlOmUsdXBwZXJWYWx1ZTpufSl9aGFuZGxlTW91c2VPdXQodCl7dGhpcy5hY3RpdmVUaHVtYiE9PVMxLk5PTkUmJih0aGlzLmFjdGl2ZVRodW1iPVMxLk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9aGFuZGxlSW5wdXRDaGFuZ2UodCxlKXtjb25zdCBuPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKE51bWJlcih0LnRhcmdldC52YWx1ZSkpO2lmKGlzTmFOKG4pKXJldHVybjtsZXQgbz1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07bz1lPT09UzEuTEVGVD9bbix0aGlzLnVwcGVyVmFsdWVdOlt0aGlzLmxvd2VyVmFsdWUsbl0sdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShvKX1pc1RodW1iQWN0aXZlKHQpe3JldHVybiB0aGlzLmFjdGl2ZVRodW1iPT09dH19RDEuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEQxKShTbShVZykpfSxEMS7JtWNtcD10byh7dHlwZTpEMSxzZWxlY3RvcnM6W1sidGItcmFuZ2UtaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKGsxLDcsaGcpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uY29udGFpbmVyPXQuZmlyc3QpfX0saW5wdXRzOnttaW46Im1pbiIsbWF4OiJtYXgiLGxvd2VyVmFsdWU6Imxvd2VyVmFsdWUiLHVwcGVyVmFsdWU6InVwcGVyVmFsdWUiLHRpY2tDb3VudDoidGlja0NvdW50In0sb3V0cHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6OCx2YXJzOjE0LGNvbnN0czpbWyJ0eXBlIiwibnVtYmVyIiwxLCJsb3dlci1pbnB1dCIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInR5cGUiLCJudW1iZXIiLDEsInVwcGVyLWlucHV0IiwzLCJ2YWx1ZSIsImNoYW5nZSJdLFsxLCJjb250YWluZXIiXSxbImNvbnRhaW5lciIsIiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwidGh1bWIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiaW5wdXQiLDApLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhhbmRsZUlucHV0Q2hhbmdlKGUsbi5Qb3NpdGlvbi5MRUZUKX0pKSxBbSgpLFJtKDEsImlucHV0IiwxKSxWbSgiY2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVJbnB1dENoYW5nZShlLG4uUG9zaXRpb24uUklHSFQpfSkpLEFtKCksUm0oMiwic3BhbiIsMiwzKSxUbSg0LCJzcGFuIiw0KSxUbSg1LCJzcGFuIiw1KSxSbSg2LCJzcGFuIiw2KSxWbSgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVNb3VzZURvd24oZSxuLlBvc2l0aW9uLkxFRlQpfSkpLEFtKCksUm0oNywic3BhbiIsNiksVm0oIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlTW91c2VEb3duKGUsbi5Qb3NpdGlvbi5SSUdIVCl9KSksQW0oKSxBbSgpKSwyJmUmJihEbSgidmFsdWUiLG4ubG93ZXJWYWx1ZSkscmMoMSksRG0oInZhbHVlIixuLnVwcGVyVmFsdWUpLHJjKDQpLGR1KCJsZWZ0IixuLmdldFRodW1iUG9zaXRpb24obi5sb3dlclZhbHVlKSkoIndpZHRoIixuLmdldFRyYWNrV2lkdGgoKSkscmMoMSksZHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLmxvd2VyVmFsdWUpKSxwdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5MRUZUKSkscmMoMSksZHUoImxlZnQiLG4uZ2V0VGh1bWJQb3NpdGlvbihuLnVwcGVyVmFsdWUpKSxwdSgiYWN0aXZlIixuLmlzVGh1bWJBY3RpdmUobi5Qb3NpdGlvbi5SSUdIVCkpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZ3JpZDtncmlkLWdhcDoxMHB4O2dyaWQtdGVtcGxhdGUtYXJlYXM6Imxvd2VyLWlucHV0IHVwcGVyLWlucHV0IiAic2xpZGVyIHNsaWRlciI7Zm9udC1zaXplOjA7bWluLXdpZHRoOjEwMHB4O3BhZGRpbmc6NnB4fWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXN0eWxlOnNvbGlkO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlfS5sb3dlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOmxvd2VyLWlucHV0fS51cHBlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnVwcGVyLWlucHV0O2p1c3RpZnktc2VsZjpmbGV4LWVuZH0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNik7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjJweH0udGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTtib3JkZXItcmFkaXVzOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHg7bWFyZ2luLWxlZnQ6LTZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpfS50aHVtYi5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChEMSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Yi1yYW5nZS1pbnB1dCIsdGVtcGxhdGVVcmw6Ii4vcmFuZ2VfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcmFuZ2VfaW5wdXRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpVZ31dfSkse2NvbnRhaW5lcjpbe3R5cGU6WmEsYXJnczpbImNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOmhnfV19XSxtaW46W3t0eXBlOnh5fV0sbWF4Olt7dHlwZTp4eX1dLGxvd2VyVmFsdWU6W3t0eXBlOnh5fV0sdXBwZXJWYWx1ZTpbe3R5cGU6eHl9XSx0aWNrQ291bnQ6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOk95fV19KTtjb25zdCBFMT1bImRpYWxvZ1BvcHVwIl0sUjE9WyJodWVTbGlkZXIiXSxBMT1bImFscGhhU2xpZGVyIl07ZnVuY3Rpb24gVDEodCxlKXtpZigxJnQmJlRtKDAsImRpdiIpLDImdCl7Y29uc3QgdD1ZbSgpO0F1KCJhcnJvdyBhcnJvdy0iLHQuY3BVc2VQb3NpdGlvbiwiIiksZHUoInRvcCIsdC5hcnJvd1RvcCwicHgiKX19ZnVuY3Rpb24gTjEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDI2KSxWbSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQ29sb3JDaGFuZ2Uobil9KSkoImRyYWdTdGFydCIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vbkRyYWdTdGFydCgic2F0dXJhdGlvbi1saWdodG5lc3MiKX0pKSgiZHJhZ0VuZCIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vbkRyYWdFbmQoInNhdHVyYXRpb24tbGlnaHRuZXNzIil9KSksVG0oMSwiZGl2IiwxMyksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtkdSgiYmFja2dyb3VuZC1jb2xvciIsdC5odWVTbGlkZXJDb2xvciksRG0oInJnWCIsMSkoInJnWSIsMSkscmMoMSksZHUoInRvcCIsbnVsbD09dC5zbGlkZXI/bnVsbDp0LnNsaWRlci52LCJweCIpKCJsZWZ0IixudWxsPT10LnNsaWRlcj9udWxsOnQuc2xpZGVyLnMsInB4Iil9fWZ1bmN0aW9uIHoxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwyNyksVm0oImNsaWNrIiwoZnVuY3Rpb24gZShuKXtoaSh0KTtjb25zdCBvPVltKCk7cmV0dXJuIG8ub25BZGRQcmVzZXRDb2xvcihuLG8uc2VsZWN0ZWRDb2xvcil9KSksa3UoMSksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtmdSh0LmNwQWRkQ29sb3JCdXR0b25DbGFzcyksRG0oImRpc2FibGVkIix0LmNwUHJlc2V0Q29sb3JzJiZ0LmNwUHJlc2V0Q29sb3JzLmxlbmd0aD49dC5jcE1heFByZXNldENvbG9yc0xlbmd0aCkscmMoMSksRHUoIiAiLHQuY3BBZGRDb2xvckJ1dHRvblRleHQsIiAiKX19ZnVuY3Rpb24gSTEodCxlKXsxJnQmJlRtKDAsImRpdiIsMjgpfWZ1bmN0aW9uIEgxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiaW5wdXQiLDM0KSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uQWxwaGFJbnB1dChuKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5jbXlrVGV4dD9udWxsOnQuY215a1RleHQuYSl9fWZ1bmN0aW9uIEYxKHQsZSl7MSZ0JiYoUm0oMCwiZGl2Iiksa3UoMSwiQSIpLEFtKCkpfWZ1bmN0aW9uIEwxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwyOSksUm0oMSwiZGl2IiwzMCksUm0oMiwiaW5wdXQiLDMxKSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vbkN5YW5JbnB1dChuKX0pKSxBbSgpLFJtKDMsImlucHV0IiwzMSksVm0oImtleXVwLmVudGVyIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25NYWdlbnRhSW5wdXQobil9KSksQW0oKSxSbSg0LCJpbnB1dCIsMzEpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uWWVsbG93SW5wdXQobil9KSksQW0oKSxSbSg1LCJpbnB1dCIsMzEpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQmxhY2tJbnB1dChuKX0pKSxBbSgpLFFwKDYsSDEsMSwyLCJpbnB1dCIsMzIpLEFtKCksUm0oNywiZGl2IiwzMCksUm0oOCwiZGl2Iiksa3UoOSwiQyIpLEFtKCksUm0oMTAsImRpdiIpLGt1KDExLCJNIiksQW0oKSxSbSgxMiwiZGl2Iiksa3UoMTMsIlkiKSxBbSgpLFJtKDE0LCJkaXYiKSxrdSgxNSwiSyIpLEFtKCksUXAoMTYsRjEsMiwwLCJkaXYiLDMzKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7ZHUoImRpc3BsYXkiLDMhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIikscmMoMiksRG0oInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5jbXlrVGV4dD9udWxsOnQuY215a1RleHQuYykscmMoMSksRG0oInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5jbXlrVGV4dD9udWxsOnQuY215a1RleHQubSkscmMoMSksRG0oInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5jbXlrVGV4dD9udWxsOnQuY215a1RleHQueSkscmMoMSksRG0oInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5jbXlrVGV4dD9udWxsOnQuY215a1RleHQuaykscmMoMSksRG0oIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKSxyYygxMCksRG0oIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gQjEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJpbnB1dCIsMzQpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25BbHBoYUlucHV0KG4pfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJyZyIsMSkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5hKX19ZnVuY3Rpb24gVjEodCxlKXsxJnQmJihSbSgwLCJkaXYiKSxrdSgxLCJBIiksQW0oKSl9ZnVuY3Rpb24gajEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDM1KSxSbSgxLCJkaXYiLDMwKSxSbSgyLCJpbnB1dCIsMzYpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uSHVlSW5wdXQobil9KSksQW0oKSxSbSgzLCJpbnB1dCIsMzEpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uU2F0dXJhdGlvbklucHV0KG4pfSkpLEFtKCksUm0oNCwiaW5wdXQiLDMxKSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vbkxpZ2h0bmVzc0lucHV0KG4pfSkpLEFtKCksUXAoNSxCMSwxLDIsImlucHV0IiwzMiksQW0oKSxSbSg2LCJkaXYiLDMwKSxSbSg3LCJkaXYiKSxrdSg4LCJIIiksQW0oKSxSbSg5LCJkaXYiKSxrdSgxMCwiUyIpLEFtKCksUm0oMTEsImRpdiIpLGt1KDEyLCJMIiksQW0oKSxRcCgxMyxWMSwyLDAsImRpdiIsMzMpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtkdSgiZGlzcGxheSIsMiE9PXQuZm9ybWF0PyJub25lIjoiYmxvY2siKSxyYygyKSxEbSgicmciLDM2MCkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5oKSxyYygxKSxEbSgicmciLDEwMCkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5zKSxyYygxKSxEbSgicmciLDEwMCkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5sKSxyYygxKSxEbSgibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpLHJjKDgpLERtKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIFUxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiaW5wdXQiLDM0KSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uQWxwaGFJbnB1dChuKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuYSl9fWZ1bmN0aW9uIEcxKHQsZSl7MSZ0JiYoUm0oMCwiZGl2Iiksa3UoMSwiQSIpLEFtKCkpfWZ1bmN0aW9uIFcxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwzNyksUm0oMSwiZGl2IiwzMCksUm0oMiwiaW5wdXQiLDM4KSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vblJlZElucHV0KG4pfSkpLEFtKCksUm0oMywiaW5wdXQiLDM4KSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vbkdyZWVuSW5wdXQobil9KSksQW0oKSxSbSg0LCJpbnB1dCIsMzgpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uQmx1ZUlucHV0KG4pfSkpLEFtKCksUXAoNSxVMSwxLDIsImlucHV0IiwzMiksQW0oKSxSbSg2LCJkaXYiLDMwKSxSbSg3LCJkaXYiKSxrdSg4LCJSIiksQW0oKSxSbSg5LCJkaXYiKSxrdSgxMCwiRyIpLEFtKCksUm0oMTEsImRpdiIpLGt1KDEyLCJCIiksQW0oKSxRcCgxMyxHMSwyLDAsImRpdiIsMzMpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtkdSgiZGlzcGxheSIsMSE9PXQuZm9ybWF0PyJub25lIjoiYmxvY2siKSxyYygyKSxEbSgicmciLDI1NSkoInZhbHVlIixudWxsPT10LnJnYmFUZXh0P251bGw6dC5yZ2JhVGV4dC5yKSxyYygxKSxEbSgicmciLDI1NSkoInZhbHVlIixudWxsPT10LnJnYmFUZXh0P251bGw6dC5yZ2JhVGV4dC5nKSxyYygxKSxEbSgicmciLDI1NSkoInZhbHVlIixudWxsPT10LnJnYmFUZXh0P251bGw6dC5yZ2JhVGV4dC5iKSxyYygxKSxEbSgibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpLHJjKDgpLERtKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIFkxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiaW5wdXQiLDM0KSxWbSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uQWxwaGFJbnB1dChuKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgicmciLDEpKCJ2YWx1ZSIsdC5oZXhBbHBoYSl9fWZ1bmN0aW9uIHExKHQsZSl7MSZ0JiYoUm0oMCwiZGl2Iiksa3UoMSwiQSIpLEFtKCkpfWZ1bmN0aW9uIFoxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwzOSksUm0oMSwiZGl2IiwzMCksUm0oMiwiaW5wdXQiLDQwKSxWbSgiYmx1ciIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vbkhleElucHV0KG51bGwpfSkpKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uSGV4SW5wdXQobil9KSksQW0oKSxRcCgzLFkxLDEsMiwiaW5wdXQiLDMyKSxBbSgpLFJtKDQsImRpdiIsMzApLFJtKDUsImRpdiIpLGt1KDYsIkhleCIpLEFtKCksUXAoNyxxMSwyLDAsImRpdiIsMzMpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtkdSgiZGlzcGxheSIsMCE9PXQuZm9ybWF0PyJub25lIjoiYmxvY2siKSxwdSgiaGV4LWFscGhhIiwiZm9yY2VkIj09PXQuY3BBbHBoYUNoYW5uZWwpLHJjKDIpLERtKCJ2YWx1ZSIsdC5oZXhUZXh0KSxyYygxKSxEbSgibmdJZiIsImZvcmNlZCI9PT10LmNwQWxwaGFDaGFubmVsKSxyYyg0KSxEbSgibmdJZiIsImZvcmNlZCI9PT10LmNwQWxwaGFDaGFubmVsKX19ZnVuY3Rpb24gWDEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJpbnB1dCIsMzQpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uQWNjZXB0Q29sb3Iobil9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25BbHBoYUlucHV0KG4pfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJyZyIsMSkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5hKX19ZnVuY3Rpb24gSzEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDQxKSxSbSgxLCJkaXYiLDMwKSxSbSgyLCJpbnB1dCIsMzEpLFZtKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25BY2NlcHRDb2xvcihuKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uVmFsdWVJbnB1dChuKX0pKSxBbSgpLFFwKDMsWDEsMSwyLCJpbnB1dCIsMzIpLEFtKCksUm0oNCwiZGl2IiwzMCksUm0oNSwiZGl2Iiksa3UoNiwiViIpLEFtKCksUm0oNywiZGl2Iiksa3UoOCwiQSIpLEFtKCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO3JjKDIpLERtKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuaHNsYVRleHQ/bnVsbDp0LmhzbGFUZXh0LmwpLHJjKDEpLERtKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIEoxKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2Iiw0MiksUm0oMSwic3BhbiIsNDMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5vbkZvcm1hdFRvZ2dsZSgtMSl9KSksQW0oKSxSbSgyLCJzcGFuIiw0MyksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLm9uRm9ybWF0VG9nZ2xlKDEpfSkpLEFtKCksQW0oKX19ZnVuY3Rpb24gUTEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJzcGFuIiw1MCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZShuKXtoaSh0KTtjb25zdCBvPVltKCkuJGltcGxpY2l0O3JldHVybiBZbSgzKS5vblJlbW92ZVByZXNldENvbG9yKG4sbyl9KSksQW0oKX0yJnQmJmZ1KFltKDQpLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcyl9ZnVuY3Rpb24gJDEodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDQ4KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1oaSh0KS4kaW1wbGljaXQ7cmV0dXJuIFltKDMpLnNldENvbG9yRnJvbVN0cmluZyhuKX0pKSxRcCgxLFExLDEsMywic3BhbiIsNDkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMyk7ZHUoImJhY2tncm91bmQtY29sb3IiLHQpLHJjKDEpLERtKCJuZ0lmIixuLmNwQWRkQ29sb3JCdXR0b24pfX1mdW5jdGlvbiB0Myh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIpLFFwKDEsJDEsMiwzLCJkaXYiLDQ3KSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7ZnUodC5jcFByZXNldENvbG9yc0NsYXNzKSxyYygxKSxEbSgibmdGb3JPZiIsdC5jcFByZXNldENvbG9ycyl9fWZ1bmN0aW9uIGUzKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO2Z1KHQuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcykscmMoMSksU3UodC5jcFByZXNldEVtcHR5TWVzc2FnZSl9fWZ1bmN0aW9uIG4zKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiw0NCksVG0oMSwiaHIiKSxSbSgyLCJkaXYiLDQ1KSxrdSgzKSxBbSgpLFFwKDQsdDMsMiw0LCJkaXYiLDQ2KSxRcCg1LGUzLDIsNCwiZGl2Iiw0NiksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMyksU3UodC5jcFByZXNldExhYmVsKSxyYygxKSxEbSgibmdJZiIsbnVsbD09dC5jcFByZXNldENvbG9ycz9udWxsOnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSxyYygxKSxEbSgibmdJZiIsIShudWxsIT10LmNwUHJlc2V0Q29sb3JzJiZ0LmNwUHJlc2V0Q29sb3JzLmxlbmd0aCkmJnQuY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIG8zKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiw1MyksVm0oImNsaWNrIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25DYW5jZWxDb2xvcihuKX0pKSxrdSgxKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtmdSh0LmNwQ2FuY2VsQnV0dG9uQ2xhc3MpLHJjKDEpLFN1KHQuY3BDYW5jZWxCdXR0b25UZXh0KX19ZnVuY3Rpb24gaTModCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJidXR0b24iLDUzKSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5vbkFjY2VwdENvbG9yKG4pfSkpLGt1KDEpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO2Z1KHQuY3BPS0J1dHRvbkNsYXNzKSxyYygxKSxTdSh0LmNwT0tCdXR0b25UZXh0KX19ZnVuY3Rpb24gYTModCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDUxKSxRcCgxLG8zLDIsNCwiYnV0dG9uIiw1MiksUXAoMixpMywyLDQsImJ1dHRvbiIsNTIpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLERtKCJuZ0lmIix0LmNwQ2FuY2VsQnV0dG9uKSxyYygxKSxEbSgibmdJZiIsdC5jcE9LQnV0dG9uKX19dmFyIHIzOyEoZnVuY3Rpb24odCl7dFt0LkhFWD0wXT0iSEVYIix0W3QuUkdCQT0xXT0iUkdCQSIsdFt0LkhTTEE9Ml09IkhTTEEiLHRbdC5DTVlLPTNdPSJDTVlLIn0pKHIzfHwocjM9e30pKTtjbGFzcyBzM3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLnI9dCx0aGlzLmc9ZSx0aGlzLmI9bix0aGlzLmE9b319Y2xhc3MgbDN7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIGMze2NvbnN0cnVjdG9yKHQsZSxuLG8pe3RoaXMuaD10LHRoaXMucz1lLHRoaXMubD1uLHRoaXMuYT1vfX1jbGFzcyBkM3tjb25zdHJ1Y3Rvcih0LGUsbixvLGk9MSl7dGhpcy5jPXQsdGhpcy5tPWUsdGhpcy55PW4sdGhpcy5rPW8sdGhpcy5hPWl9fWNsYXNzIHAze2NvbnN0cnVjdG9yKCl7dGhpcy5uZXdWYWx1ZT1uZXcgTGh9aW5wdXRDaGFuZ2UodCl7Y29uc3QgZT10LnRhcmdldC52YWx1ZTtpZih2b2lkIDA9PT10aGlzLnJnKXRoaXMubmV3VmFsdWUuZW1pdChlKTtlbHNle2NvbnN0IHQ9cGFyc2VGbG9hdChlKTt0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6dCxyZzp0aGlzLnJnfSl9fX1wMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cDMpfSxwMy7JtWRpcj1sbyh7dHlwZTpwMyxzZWxlY3RvcnM6W1siIiwidGV4dCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5pbnB1dENoYW5nZShlKX0pKX0saW5wdXRzOntyZzoicmciLHRleHQ6InRleHQifSxvdXRwdXRzOntuZXdWYWx1ZToibmV3VmFsdWUifX0pLHAzLnByb3BEZWNvcmF0b3JzPXtyZzpbe3R5cGU6eHl9XSx0ZXh0Olt7dHlwZTp4eX1dLG5ld1ZhbHVlOlt7dHlwZTpPeX1dLGlucHV0Q2hhbmdlOlt7dHlwZTp3eSxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocDMsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW3RleHRdIn1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSx7bmV3VmFsdWU6W3t0eXBlOk95fV0saW5wdXRDaGFuZ2U6W3t0eXBlOnd5LGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XSxyZzpbe3R5cGU6eHl9XSx0ZXh0Olt7dHlwZTp4eX1dfSk7Y2xhc3MgbTN7Y29uc3RydWN0b3IodCl7dGhpcy5lbFJlZj10LHRoaXMuZHJhZ0VuZD1uZXcgTGgsdGhpcy5kcmFnU3RhcnQ9bmV3IExoLHRoaXMubmV3VmFsdWU9bmV3IExoLHRoaXMubGlzdGVuZXJNb3ZlPXQ9PnRoaXMubW92ZSh0KSx0aGlzLmxpc3RlbmVyU3RvcD0oKT0+dGhpcy5zdG9wKCl9bW91c2VEb3duKHQpe3RoaXMuc3RhcnQodCl9dG91Y2hTdGFydCh0KXt0aGlzLnN0YXJ0KHQpfW1vdmUodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0Q3Vyc29yKHQpfXN0YXJ0KHQpe3RoaXMuc2V0Q3Vyc29yKHQpLHQuc3RvcFByb3BhZ2F0aW9uKCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksdGhpcy5kcmFnU3RhcnQuZW1pdCgpfXN0b3AoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSx0aGlzLmRyYWdFbmQuZW1pdCgpfWdldFgodCl7Y29uc3QgZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHZvaWQgMCE9PXQucGFnZVg/dC5wYWdlWDp0LnRvdWNoZXNbMF0ucGFnZVgpLWUubGVmdC13aW5kb3cucGFnZVhPZmZzZXR9Z2V0WSh0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4odm9pZCAwIT09dC5wYWdlWT90LnBhZ2VZOnQudG91Y2hlc1swXS5wYWdlWSktZS50b3Atd2luZG93LnBhZ2VZT2Zmc2V0fXNldEN1cnNvcih0KXtjb25zdCBlPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxuPXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQsbz1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WCh0KSxlKSksaT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuZ2V0WSh0KSxuKSk7dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7czpvL2UsdjoxLWkvbixyZ1g6dGhpcy5yZ1gscmdZOnRoaXMucmdZfSk6dm9pZCAwPT09dGhpcy5yZ1gmJnZvaWQgMCE9PXRoaXMucmdZP3RoaXMubmV3VmFsdWUuZW1pdCh7djppL24scmdZOnRoaXMucmdZfSk6dm9pZCAwIT09dGhpcy5yZ1gmJnZvaWQgMD09PXRoaXMucmdZJiZ0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6by9lLHJnWDp0aGlzLnJnWH0pfX1tMy7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bTMpKFNtKGhnKSl9LG0zLsm1ZGlyPWxvKHt0eXBlOm0zLHNlbGVjdG9yczpbWyIiLCJzbGlkZXIiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm1vdXNlRG93bihlKX0pKSgidG91Y2hzdGFydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4udG91Y2hTdGFydChlKX0pKX0saW5wdXRzOntyZ1g6InJnWCIscmdZOiJyZ1kiLHNsaWRlcjoic2xpZGVyIn0sb3V0cHV0czp7ZHJhZ0VuZDoiZHJhZ0VuZCIsZHJhZ1N0YXJ0OiJkcmFnU3RhcnQiLG5ld1ZhbHVlOiJuZXdWYWx1ZSJ9fSksbTMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ31dLG0zLnByb3BEZWNvcmF0b3JzPXtyZ1g6W3t0eXBlOnh5fV0scmdZOlt7dHlwZTp4eX1dLHNsaWRlcjpbe3R5cGU6eHl9XSxkcmFnRW5kOlt7dHlwZTpPeX1dLGRyYWdTdGFydDpbe3R5cGU6T3l9XSxuZXdWYWx1ZTpbe3R5cGU6T3l9XSxtb3VzZURvd246W3t0eXBlOnd5LGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6d3ksYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobTMsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW3NsaWRlcl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9XX0pLHtkcmFnRW5kOlt7dHlwZTpPeX1dLGRyYWdTdGFydDpbe3R5cGU6T3l9XSxuZXdWYWx1ZTpbe3R5cGU6T3l9XSxtb3VzZURvd246W3t0eXBlOnd5LGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6d3ksYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV0scmdYOlt7dHlwZTp4eX1dLHJnWTpbe3R5cGU6eHl9XSxzbGlkZXI6W3t0eXBlOnh5fV19KTtjbGFzcyB1M3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9bix0aGlzLmE9b319Y2xhc3MgZjN7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW4sdGhpcy5hPW99fWNsYXNzIGcze2NvbnN0cnVjdG9yKCl7dGhpcy5hY3RpdmU9bnVsbH1zZXRBY3RpdmUodCl7dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlIT09dCYmImlubGluZSIhPT10aGlzLmFjdGl2ZS5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuYWN0aXZlLmNsb3NlRGlhbG9nKCksdGhpcy5hY3RpdmU9dH1oc3ZhMmhzbGEodCl7Y29uc3QgZT10Lmgsbj10LnMsbz10LnYsaT10LmE7aWYoMD09PW8pcmV0dXJuIG5ldyBjMyhlLDAsMCxpKTtpZigwPT09biYmMT09PW8pcmV0dXJuIG5ldyBjMyhlLDEsMSxpKTt7Y29uc3QgdD1vKigyLW4pLzI7cmV0dXJuIG5ldyBjMyhlLG8qbi8oMS1NYXRoLmFicygyKnQtMSkpLHQsaSl9fWhzbGEyaHN2YSh0KXtjb25zdCBlPU1hdGgubWluKHQuaCwxKSxuPU1hdGgubWluKHQucywxKSxvPU1hdGgubWluKHQubCwxKSxpPU1hdGgubWluKHQuYSwxKTtpZigwPT09bylyZXR1cm4gbmV3IGwzKGUsMCwwLGkpO3tjb25zdCB0PW8rbiooMS1NYXRoLmFicygyKm8tMSkpLzI7cmV0dXJuIG5ldyBsMyhlLDIqKHQtbykvdCx0LGkpfX1oc3ZhVG9SZ2JhKHQpe2xldCBlLG4sbztjb25zdCBpPXQuaCxhPXQucyxyPXQudixzPXQuYSxsPU1hdGguZmxvb3IoNippKSxjPTYqaS1sLGQ9ciooMS1hKSxwPXIqKDEtYyphKSxtPXIqKDEtKDEtYykqYSk7c3dpdGNoKGwlNil7Y2FzZSAwOmU9cixuPW0sbz1kO2JyZWFrO2Nhc2UgMTplPXAsbj1yLG89ZDticmVhaztjYXNlIDI6ZT1kLG49cixvPW07YnJlYWs7Y2FzZSAzOmU9ZCxuPXAsbz1yO2JyZWFrO2Nhc2UgNDplPW0sbj1kLG89cjticmVhaztjYXNlIDU6ZT1yLG49ZCxvPXA7YnJlYWs7ZGVmYXVsdDplPTAsbj0wLG89MH1yZXR1cm4gbmV3IHMzKGUsbixvLHMpfWNteWtUb1JnYih0KXtyZXR1cm4gbmV3IHMzKCgxLXQuYykqKDEtdC5rKSwoMS10Lm0pKigxLXQuayksKDEtdC55KSooMS10LmspLHQuYSl9cmdiYVRvQ215ayh0KXtjb25zdCBlPTEtTWF0aC5tYXgodC5yLHQuZyx0LmIpO3JldHVybiAxPT09ZT9uZXcgZDMoMCwwLDAsMSx0LmEpOm5ldyBkMygoMS10LnItZSkvKDEtZSksKDEtdC5nLWUpLygxLWUpLCgxLXQuYi1lKS8oMS1lKSxlLHQuYSl9cmdiYVRvSHN2YSh0KXtsZXQgZSxuO2NvbnN0IG89TWF0aC5taW4odC5yLDEpLGk9TWF0aC5taW4odC5nLDEpLGE9TWF0aC5taW4odC5iLDEpLHI9TWF0aC5taW4odC5hLDEpLHM9TWF0aC5tYXgobyxpLGEpLGw9TWF0aC5taW4obyxpLGEpLGM9cyxkPXMtbDtpZihuPTA9PT1zPzA6ZC9zLHM9PT1sKWU9MDtlbHNle3N3aXRjaChzKXtjYXNlIG86ZT0oaS1hKS9kKyhpPGE/NjowKTticmVhaztjYXNlIGk6ZT0oYS1vKS9kKzI7YnJlYWs7Y2FzZSBhOmU9KG8taSkvZCs0O2JyZWFrO2RlZmF1bHQ6ZT0wfWUvPTZ9cmV0dXJuIG5ldyBsMyhlLG4sYyxyKX1yZ2JhVG9IZXgodCxlKXtsZXQgbj0iIyIrKDE8PDI0fHQucjw8MTZ8dC5nPDw4fHQuYikudG9TdHJpbmcoMTYpLnN1YnN0cigxKTtyZXR1cm4gZSYmKG4rPSgyNTZ8TWF0aC5yb3VuZCgyNTUqdC5hKSkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSksbn1ub3JtYWxpemVDTVlLKHQpe3JldHVybiBuZXcgZDModC5jLzEwMCx0Lm0vMTAwLHQueS8xMDAsdC5rLzEwMCx0LmEpfWRlbm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IGQzKE1hdGguZmxvb3IoMTAwKnQuYyksTWF0aC5mbG9vcigxMDAqdC5tKSxNYXRoLmZsb29yKDEwMCp0LnkpLE1hdGguZmxvb3IoMTAwKnQuayksdC5hKX1kZW5vcm1hbGl6ZVJHQkEodCl7cmV0dXJuIG5ldyBzMyhNYXRoLnJvdW5kKDI1NSp0LnIpLE1hdGgucm91bmQoMjU1KnQuZyksTWF0aC5yb3VuZCgyNTUqdC5iKSx0LmEpfXN0cmluZ1RvSHN2YSh0PSIiLGU9ITEpe2xldCBuPW51bGw7dD0odHx8IiIpLnRvTG93ZXJDYXNlKCk7Y29uc3Qgbz1be3JlOi8ocmdiKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqJT8sXHMqKFxkezEsM30pXHMqJT8oPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBzMyhwYXJzZUludCh0WzJdLDEwKS8yNTUscGFyc2VJbnQodFszXSwxMCkvMjU1LHBhcnNlSW50KHRbNF0sMTApLzI1NSxpc05hTihwYXJzZUZsb2F0KHRbNV0pKT8xOnBhcnNlRmxvYXQodFs1XSkpfX0se3JlOi8oaHNsKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pJVxzKixccyooXGR7MSwzfSklXHMqKD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgYzMocGFyc2VJbnQodFsyXSwxMCkvMzYwLHBhcnNlSW50KHRbM10sMTApLzEwMCxwYXJzZUludCh0WzRdLDEwKS8xMDAsaXNOYU4ocGFyc2VGbG9hdCh0WzVdKSk/MTpwYXJzZUZsb2F0KHRbNV0pKX19XTtvLnB1c2goZT97cmU6LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pPyQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgczMocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUscGFyc2VJbnQodFs0XXx8IkZGIiwxNikvMjU1KX19OntyZTovIyhbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgczMocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUsMSl9fSksby5wdXNoKHtyZTovIyhbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgczMocGFyc2VJbnQodFsxXSt0WzFdLDE2KS8yNTUscGFyc2VJbnQodFsyXSt0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSt0WzNdLDE2KS8yNTUsMSl9fSk7Zm9yKGNvbnN0IGUgaW4gbylpZihvLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPW9bZV0sYT1pLnJlLmV4ZWModCkscj1hJiZpLnBhcnNlKGEpO2lmKHIpcmV0dXJuIHIgaW5zdGFuY2VvZiBzMz9uPXRoaXMucmdiYVRvSHN2YShyKTpyIGluc3RhbmNlb2YgYzMmJihuPXRoaXMuaHNsYTJoc3ZhKHIpKSxufXJldHVybiBufW91dHB1dEZvcm1hdCh0LGUsbil7c3dpdGNoKCJhdXRvIj09PWUmJihlPXQuYTwxPyJyZ2JhIjoiaGV4IiksZSl7Y2FzZSJoc2xhIjpjb25zdCBlPXRoaXMuaHN2YTJoc2xhKHQpLG89bmV3IGMzKE1hdGgucm91bmQoMzYwKmUuaCksTWF0aC5yb3VuZCgxMDAqZS5zKSxNYXRoLnJvdW5kKDEwMCplLmwpLE1hdGgucm91bmQoMTAwKmUuYSkvMTAwKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09bj8iaHNsYSgiK28uaCsiLCIrby5zKyIlLCIrby5sKyIlLCIrby5hKyIpIjoiaHNsKCIrby5oKyIsIitvLnMrIiUsIitvLmwrIiUpIjtjYXNlInJnYmEiOmNvbnN0IGk9dGhpcy5kZW5vcm1hbGl6ZVJHQkEodGhpcy5oc3ZhVG9SZ2JhKHQpKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09bj8icmdiYSgiK2kucisiLCIraS5nKyIsIitpLmIrIiwiK01hdGgucm91bmQoMTAwKmkuYSkvMTAwKyIpIjoicmdiKCIraS5yKyIsIitpLmcrIiwiK2kuYisiKSI7ZGVmYXVsdDpjb25zdCBhPSJhbHdheXMiPT09bnx8ImZvcmNlZCI9PT1uO3JldHVybiB0aGlzLnJnYmFUb0hleCh0aGlzLmRlbm9ybWFsaXplUkdCQSh0aGlzLmhzdmFUb1JnYmEodCkpLGEpfX19ZzMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGczKX0sZzMuybVwcm92PU1uKHt0b2tlbjpnMyxmYWN0b3J5OmczLsm1ZmFjfSksZzMuY3RvclBhcmFtZXRlcnM9KCk9PltdLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZzMsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxudWxsKTtjbGFzcyBoM3tjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5lbFJlZj10LHRoaXMuY2RSZWY9ZSx0aGlzLnNlcnZpY2U9bix0aGlzLmlzSUUxMD0hMSx0aGlzLmRpYWxvZ0Fycm93U2l6ZT0xMCx0aGlzLmRpYWxvZ0Fycm93T2Zmc2V0PTE1LHRoaXMuZGlhbG9nSW5wdXRGaWVsZHM9W3IzLkhFWCxyMy5SR0JBLHIzLkhTTEEscjMuQ01ZS10sdGhpcy51c2VSb290Vmlld0NvbnRhaW5lcj0hMX1oYW5kbGVFc2ModCl7dGhpcy5zaG93JiYicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMub25DYW5jZWxDb2xvcih0KX1oYW5kbGVFbnRlcih0KXt0aGlzLnNob3cmJiJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5vbkFjY2VwdENvbG9yKHQpfW5nT25Jbml0KCl7dGhpcy5zbGlkZXI9bmV3IHUzKDAsMCwwLDApLHRoaXMuc2xpZGVyRGltTWF4PW5ldyBmMyh0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDAsdGhpcy5jcFdpZHRoLDEzMCx0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCksdGhpcy5mb3JtYXQ9dGhpcy5jcENteWtFbmFibGVkP3IzLkNNWUs6InJnYmEiPT09dGhpcy5jcE91dHB1dEZvcm1hdD9yMy5SR0JBOiJoc2xhIj09PXRoaXMuY3BPdXRwdXRGb3JtYXQ/cjMuSFNMQTpyMy5IRVgsdGhpcy5saXN0ZW5lck1vdXNlRG93bj10PT57dGhpcy5vbk1vdXNlRG93bih0KX0sdGhpcy5saXN0ZW5lclJlc2l6ZT0oKT0+e3RoaXMub25SZXNpemUoKX0sdGhpcy5vcGVuRGlhbG9nKHRoaXMuaW5pdGlhbENvbG9yLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuY2xvc2VEaWFsb2coKX1uZ0FmdGVyVmlld0luaXQoKXsyMzA9PT10aGlzLmNwV2lkdGgmJiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXl8fCh0aGlzLnNsaWRlckRpbU1heD1uZXcgZjModGhpcy5odWVTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwLHRoaXMuY3BXaWR0aCwxMzAsdGhpcy5hbHBoYVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDApLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEpLHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpKX1vcGVuRGlhbG9nKHQsZT0hMCl7dGhpcy5zZXJ2aWNlLnNldEFjdGl2ZSh0aGlzKSx0aGlzLndpZHRofHwodGhpcy5jcFdpZHRoPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSx0aGlzLmhlaWdodHx8KHRoaXMuaGVpZ2h0PTMyMCksdGhpcy5zZXRJbml0aWFsQ29sb3IodCksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCxlKSx0aGlzLm9wZW5Db2xvclBpY2tlcigpfWNsb3NlRGlhbG9nKCl7dGhpcy5jbG9zZUNvbG9yUGlja2VyKCl9c2V0dXBEaWFsb2codCxlLG4sbyxpLGEscixzLGwsYyxkLHAsbSx1LGYsZyxoLGIseSxfLEMsTSx2LHgsTyxQLHcsayxTLEQsRSxSLEEsVCxOLHope3RoaXMuc2V0SW5pdGlhbENvbG9yKG4pLHRoaXMuc2V0Q29sb3JNb2RlKHMpLHRoaXMuaXNJRTEwPTEwPT09KGZ1bmN0aW9uIEkoKXtsZXQgdD0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtjb25zdCBlPXQuaW5kZXhPZigibXNpZSAiKTtyZXR1cm4gZT4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhlKzUsdC5pbmRleE9mKCIuIixlKSksMTApfSkoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlPXQsdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmPWUsdGhpcy5jcERpc2FibGVJbnB1dD1wLHRoaXMuY3BDbXlrRW5hYmxlZD1sLHRoaXMuY3BBbHBoYUNoYW5uZWw9Yyx0aGlzLmNwT3V0cHV0Rm9ybWF0PWQsdGhpcy5jcERpYWxvZ0Rpc3BsYXk9YSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPW0sdGhpcy5jcFNhdmVDbGlja091dHNpZGU9dSx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9Zix0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPWcsdGhpcy53aWR0aD10aGlzLmNwV2lkdGg9cGFyc2VJbnQobywxMCksdGhpcy5oZWlnaHQ9dGhpcy5jcEhlaWdodD1wYXJzZUludChpLDEwKSx0aGlzLmNwUG9zaXRpb249aCx0aGlzLmNwUG9zaXRpb25PZmZzZXQ9cGFyc2VJbnQoYiwxMCksdGhpcy5jcE9LQnV0dG9uPVAsdGhpcy5jcE9LQnV0dG9uVGV4dD1rLHRoaXMuY3BPS0J1dHRvbkNsYXNzPXcsdGhpcy5jcENhbmNlbEJ1dHRvbj1TLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PUUsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPUQsdGhpcy5mYWxsYmFja0NvbG9yPXJ8fCIjZmZmIix0aGlzLnNldFByZXNldENvbmZpZyhfLEMpLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz1NLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9dix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPXgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPU8sdGhpcy5jcEFkZENvbG9yQnV0dG9uPVIsdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dD1ULHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPUEsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M9Tix0aGlzLmNwVHJpZ2dlckVsZW1lbnQ9eix5fHwodGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSwiaW5saW5lIj09PWEmJih0aGlzLmRpYWxvZ0Fycm93U2l6ZT0wLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MCksImhleCI9PT1kJiYiYWx3YXlzIiE9PWMmJiJmb3JjZWQiIT09YyYmKHRoaXMuY3BBbHBoYUNoYW5uZWw9ImRpc2FibGVkIil9c2V0Q29sb3JNb2RlKHQpe3N3aXRjaCh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSl7Y2FzZSIxIjpjYXNlIkMiOmNhc2UiQ09MT1IiOnRoaXMuY3BDb2xvck1vZGU9MTticmVhaztjYXNlIjIiOmNhc2UiRyI6Y2FzZSJHUkFZU0NBTEUiOnRoaXMuY3BDb2xvck1vZGU9MjticmVhaztjYXNlIjMiOmNhc2UiUCI6Y2FzZSJQUkVTRVRTIjp0aGlzLmNwQ29sb3JNb2RlPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLmNwQ29sb3JNb2RlPTF9fXNldEluaXRpYWxDb2xvcih0KXt0aGlzLmluaXRpYWxDb2xvcj10fXNldFByZXNldENvbmZpZyh0LGUpe3RoaXMuY3BQcmVzZXRMYWJlbD10LHRoaXMuY3BQcmVzZXRDb2xvcnM9ZX1zZXRDb2xvckZyb21TdHJpbmcodCxlPSEwLG49ITApe2xldCBvOyJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsPyhvPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMCksb3x8dGhpcy5oc3ZhfHwobz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpKSk6bz10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpLG98fHRoaXMuaHN2YXx8KG89dGhpcy5zZXJ2aWNlLnN0cmluZ1RvSHN2YSh0aGlzLmZhbGxiYWNrQ29sb3IsITEpKSxvJiYodGhpcy5oc3ZhPW8sdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLCJoZXgiPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmImRpc2FibGVkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJih0aGlzLmhzdmEuYT0xKSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKGUsbikpfW9uUmVzaXplKCl7ImZpeGVkIj09PXRoaXMucG9zaXRpb24/dGhpcy5zZXREaWFsb2dQb3NpdGlvbigpOiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uRHJhZ0VuZCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdFbmQoe3NsaWRlcjp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkRyYWdTdGFydCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdTdGFydCh7c2xpZGVyOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uTW91c2VEb3duKHQpeyF0aGlzLnNob3d8fHRoaXMuaXNJRTEwfHwicG9wdXAiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXl8fHQudGFyZ2V0PT09dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCx0LnRhcmdldCl8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KXx8MCE9PXRoaXMuY3BJZ25vcmVkRWxlbWVudHMuZmlsdGVyKChlPT5lPT09dC50YXJnZXQpKS5sZW5ndGh8fCh0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT90aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yU2VsZWN0ZWQodGhpcy5vdXRwdXRDb2xvcik6KHRoaXMuaHN2YT1udWxsLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHRoaXMuaW5pdGlhbENvbG9yLCExKSx0aGlzLmNwQ215a0VuYWJsZWQmJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY215a0NoYW5nZWQodGhpcy5jbXlrQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDaGFuZ2VkKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSksdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKSl9b25BY2NlcHRDb2xvcih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3V0cHV0Q29sb3ImJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JTZWxlY3RlZCh0aGlzLm91dHB1dENvbG9yKSwicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uQ2FuY2VsQ29sb3IodCl7dGhpcy5oc3ZhPW51bGwsdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0aGlzLmluaXRpYWxDb2xvciwhMCksInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLmluaXRpYWxDb2xvciwhMCksdGhpcy5jbG9zZUNvbG9yUGlja2VyKCkpfW9uRm9ybWF0VG9nZ2xlKHQpe2NvbnN0IGU9dGhpcy5kaWFsb2dJbnB1dEZpZWxkcy5sZW5ndGgtKHRoaXMuY3BDbXlrRW5hYmxlZD8wOjEpLG49KCh0aGlzLmRpYWxvZ0lucHV0RmllbGRzLmluZGV4T2YodGhpcy5mb3JtYXQpK3QpJWUrZSklZTt0aGlzLmZvcm1hdD10aGlzLmRpYWxvZ0lucHV0RmllbGRzW25dfW9uQ29sb3JDaGFuZ2UodCl7dGhpcy5oc3ZhLnM9dC5zL3QucmdYLHRoaXMuaHN2YS52PXQudi90LnJnWSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImxpZ2h0bmVzcyIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJzYXR1cmF0aW9uIix2YWx1ZTp0aGlzLmhzdmEucyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLmg9dC52L3QucmdYLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6Imh1ZSIsdmFsdWU6dGhpcy5oc3ZhLmgsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uVmFsdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLnY9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoidmFsdWUiLHZhbHVlOnRoaXMuaHN2YS52LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkFscGhhQ2hhbmdlKHQpe3RoaXMuaHN2YS5hPXQudi90LnJnWCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImFscGhhIix2YWx1ZTp0aGlzLmhzdmEuYSxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IZXhJbnB1dCh0KXtpZihudWxsPT09dCl0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCk7ZWxzZXt0JiYiIyIhPT10WzBdJiYodD0iIyIrdCk7bGV0IGU9L14jKFthLWYwLTldezN9fFthLWYwLTldezZ9KSQvZ2k7ImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYoZT0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn18W2EtZjAtOV17OH0pJC9naSk7Y29uc3Qgbj1lLnRlc3QodCk7biYmKHQubGVuZ3RoPDUmJih0PSIjIit0LnN1YnN0cmluZygxKS5zcGxpdCgiIikubWFwKCh0PT50K3QpKS5qb2luKCIiKSksImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYodCs9TWF0aC5yb3VuZCgyNTUqdGhpcy5oc3ZhLmEpLnRvU3RyaW5nKDE2KSksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCwhMCwhMSkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaGV4Iix2YWxpZDpuLHZhbHVlOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfX1vblJlZElucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5yPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6InJlZCIsdmFsaWQ6bix2YWx1ZTplLnIsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQmx1ZUlucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5iPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsdWUiLHZhbGlkOm4sdmFsdWU6ZS5iLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkdyZWVuSW5wdXQodCl7Y29uc3QgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmc9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiZ3JlZW4iLHZhbGlkOm4sdmFsdWU6ZS5nLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEuaD10LnYvdC5yZyx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Imh1ZSIsdmFsaWQ6ZSx2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUlucHV0KHQpe2NvbnN0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEudj10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoidmFsdWUiLHZhbGlkOmUsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFJbnB1dCh0KXtjb25zdCBlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYodGhpcy5oc3ZhLmE9dC52L3QucmcsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImFscGhhIix2YWxpZDplLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkxpZ2h0bmVzc0lucHV0KHQpe2NvbnN0IGU9dGhpcy5zZXJ2aWNlLmhzdmEyaHNsYSh0aGlzLmhzdmEpLG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJihlLmw9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5oc2xhMmhzdmEoZSksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJsaWdodG5lc3MiLHZhbGlkOm4sdmFsdWU6ZS5sLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblNhdHVyYXRpb25JbnB1dCh0KXtjb25zdCBlPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSxuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYoZS5zPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UuaHNsYTJoc3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoic2F0dXJhdGlvbiIsdmFsaWQ6bix2YWx1ZTplLnMsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQ3lhbklucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay5jPXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJjeWFuIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuYyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25NYWdlbnRhSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLm09dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Im1hZ2VudGEiLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5tLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblllbGxvd0lucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay55PXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ5ZWxsb3ciLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay55LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkJsYWNrSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLms9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsYWNrIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuayxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BZGRQcmVzZXRDb2xvcih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQ9PT1lKSkubGVuZ3RofHwodGhpcy5jcFByZXNldENvbG9ycz10aGlzLmNwUHJlc2V0Q29sb3JzLmNvbmNhdChlKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycykpfW9uUmVtb3ZlUHJlc2V0Q29sb3IodCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY3BQcmVzZXRDb2xvcnM9dGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQhPT1lKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5wcmVzZXRDb2xvcnNDaGFuZ2VkKHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5Db2xvclBpY2tlcigpe3RoaXMuc2hvd3x8KHRoaXMuc2hvdz0hMCx0aGlzLmhpZGRlbj0hMCxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuaGlkZGVuPSExLHRoaXMuc2V0RGlhbG9nUG9zaXRpb24oKSx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKX0pLDApLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCEwKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpKX1jbG9zZUNvbG9yUGlja2VyKCl7dGhpcy5zaG93JiYodGhpcy5zaG93PSExLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCExKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpLHRoaXMuY2RSZWYuZGVzdHJveWVkfHx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlQ29sb3JQaWNrZXIodD0hMCxlPSEwLG49ITEpe2lmKHRoaXMuc2xpZGVyRGltTWF4KXtsZXQgbyxpLGE7Mj09PXRoaXMuY3BDb2xvck1vZGUmJih0aGlzLmhzdmEucz0wKTtjb25zdCByPXRoaXMub3V0cHV0Q29sb3I7aWYoaT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksdGhpcy5jcENteWtFbmFibGVkPyhuPyhhPXRoaXMuc2VydmljZS5jbXlrVG9SZ2IodGhpcy5zZXJ2aWNlLm5vcm1hbGl6ZUNNWUsodGhpcy5jbXlrKSksdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGEpKTooYT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLHRoaXMuY215az10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVDTVlLKHRoaXMuc2VydmljZS5yZ2JhVG9DbXlrKGEpKSksYT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKGEpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCk6YT10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSkpLG89dGhpcy5zZXJ2aWNlLmRlbm9ybWFsaXplUkdCQSh0aGlzLnNlcnZpY2UuaHN2YVRvUmdiYShuZXcgbDModGhpcy5zbGlkZXJIfHx0aGlzLmhzdmEuaCwxLDEsMSkpKSxlJiYodGhpcy5oc2xhVGV4dD1uZXcgYzMoTWF0aC5yb3VuZCgzNjAqaS5oKSxNYXRoLnJvdW5kKDEwMCppLnMpLE1hdGgucm91bmQoMTAwKmkubCksTWF0aC5yb3VuZCgxMDAqaS5hKS8xMDApLHRoaXMucmdiYVRleHQ9bmV3IHMzKGEucixhLmcsYS5iLE1hdGgucm91bmQoMTAwKmEuYSkvMTAwKSx0aGlzLmNwQ215a0VuYWJsZWQmJih0aGlzLmNteWtUZXh0PW5ldyBkMyh0aGlzLmNteWsuYyx0aGlzLmNteWsubSx0aGlzLmNteWsueSx0aGlzLmNteWsuayxNYXRoLnJvdW5kKDEwMCp0aGlzLmNteWsuYSkvMTAwKSksdGhpcy5oZXhUZXh0PXRoaXMuc2VydmljZS5yZ2JhVG9IZXgoYSwiYWx3YXlzIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuaGV4QWxwaGE9dGhpcy5yZ2JhVGV4dC5hKSwiYXV0byI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0JiZ0aGlzLmZvcm1hdCE9PXIzLlJHQkEmJnRoaXMuZm9ybWF0IT09cjMuQ01ZSyYmdGhpcy5oc3ZhLmE8MSYmKHRoaXMuZm9ybWF0PXRoaXMuaHN2YS5hPDE/cjMuUkdCQTpyMy5IRVgpLHRoaXMuaHVlU2xpZGVyQ29sb3I9InJnYigiK28ucisiLCIrby5nKyIsIitvLmIrIikiLHRoaXMuYWxwaGFTbGlkZXJDb2xvcj0icmdiKCIrYS5yKyIsIithLmcrIiwiK2EuYisiKSIsdGhpcy5vdXRwdXRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuc2VsZWN0ZWRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSwicmdiYSIsbnVsbCksdGhpcy5mb3JtYXQhPT1yMy5DTVlLKXRoaXMuY215a0NvbG9yPSIiO2Vsc2UgaWYoImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZW5hYmxlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZm9yY2VkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwpe2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqdGhpcy5jbXlrLmEpLzEwMDt0aGlzLmNteWtDb2xvcj1gY215a2EoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30sJHt0fSlgfWVsc2UgdGhpcy5jbXlrQ29sb3I9YGNteWsoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30pYDt0aGlzLnNsaWRlcj1uZXcgdTMoKHRoaXMuc2xpZGVySHx8dGhpcy5oc3ZhLmgpKnRoaXMuc2xpZGVyRGltTWF4LmgtOCx0aGlzLmhzdmEucyp0aGlzLnNsaWRlckRpbU1heC5zLTgsKDEtdGhpcy5oc3ZhLnYpKnRoaXMuc2xpZGVyRGltTWF4LnYtOCx0aGlzLmhzdmEuYSp0aGlzLnNsaWRlckRpbU1heC5hLTgpLHQmJnIhPT10aGlzLm91dHB1dENvbG9yJiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLm91dHB1dENvbG9yKSl9fXNldERpYWxvZ1Bvc2l0aW9uKCl7aWYoImlubGluZSI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSl0aGlzLnBvc2l0aW9uPSJyZWxhdGl2ZSI7ZWxzZXtsZXQgdCxlPSJzdGF0aWMiLG49IiIsbz1udWxsLGk9bnVsbCxhPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7Y29uc3Qgcj10aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7Zm9yKDtudWxsIT09YSYmIkhUTUwiIT09YS50YWdOYW1lOyl7aWYodD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhKSxlPXQuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKSxuPXQuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksInN0YXRpYyIhPT1lJiZudWxsPT09byYmKG89YSksbiYmIm5vbmUiIT09biYmbnVsbD09PWkmJihpPWEpLCJmaXhlZCI9PT1lKXtvPWk7YnJlYWt9YT1hLnBhcmVudE5vZGV9Y29uc3Qgcz10aGlzLmNyZWF0ZURpYWxvZ0JveCh0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZml4ZWQiIT09ZSk7aWYodGhpcy51c2VSb290Vmlld0NvbnRhaW5lcnx8ImZpeGVkIj09PWUmJighb3x8byBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCkpdGhpcy50b3A9cy50b3AsdGhpcy5sZWZ0PXMubGVmdDtlbHNle251bGw9PT1vJiYobz1hKTtjb25zdCB0PXRoaXMuY3JlYXRlRGlhbG9nQm94KG8sImZpeGVkIiE9PWUpO3RoaXMudG9wPXMudG9wLXQudG9wLHRoaXMubGVmdD1zLmxlZnQtdC5sZWZ0fSJmaXhlZCI9PT1lJiYodGhpcy5wb3NpdGlvbj0iZml4ZWQiKTtsZXQgbD10aGlzLmNwUG9zaXRpb247ImF1dG8iPT09dGhpcy5jcFBvc2l0aW9uJiYobD0oZnVuY3Rpb24gYyh0LGUpe2xldCBuPSJyaWdodCIsbz0iYm90dG9tIjtjb25zdHtoZWlnaHQ6aSx3aWR0aDphfT10LHt0b3A6cixsZWZ0OnN9PWUsbD1yK2UuaGVpZ2h0LGM9cytlLndpZHRoLGQ9ci1pPDAscD1sK2k+KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCksbT1zLWE8MCx1PWMrYT4od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCk7cmV0dXJuIHAmJihvPSJ0b3AiKSxkJiYobz0iYm90dG9tIiksbSYmKG49InJpZ2h0IiksdSYmKG49ImxlZnQiKSxkJiZwJiZtJiZ1P1sibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0ucmVkdWNlKCgoZSxuKT0+dFtlXT50W25dP2U6bikpOm0mJnU/ZD8iYm90dG9tIjpwfHxyPmw/InRvcCI6ImJvdHRvbSI6ZCYmcD9tPyJyaWdodCI6dXx8cz5jPyJsZWZ0IjoicmlnaHQiOmAke299LSR7bn1gfSkodGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5jcFRyaWdnZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKSwidG9wIj09PWw/KHRoaXMuYXJyb3dUb3A9ci0xLHRoaXMudG9wLT1yK3RoaXMuZGlhbG9nQXJyb3dTaXplLHRoaXMubGVmdCs9dGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCpzLndpZHRoLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQpOiJib3R0b20iPT09bD8odGhpcy50b3ArPXMuaGVpZ2h0K3RoaXMuZGlhbG9nQXJyb3dTaXplLHRoaXMubGVmdCs9dGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCpzLndpZHRoLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQpOiJ0b3AtbGVmdCI9PT1sfHwibGVmdC10b3AiPT09bD8odGhpcy50b3AtPXItcy5oZWlnaHQrcy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCx0aGlzLmxlZnQtPXRoaXMuY3BXaWR0aCt0aGlzLmRpYWxvZ0Fycm93U2l6ZS0yLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQpOiJ0b3AtcmlnaHQiPT09bHx8InJpZ2h0LXRvcCI9PT1sPyh0aGlzLnRvcC09ci1zLmhlaWdodCtzLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLHRoaXMubGVmdCs9cy53aWR0aCt0aGlzLmRpYWxvZ0Fycm93U2l6ZS0yLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQpOiJsZWZ0Ij09PWx8fCJib3R0b20tbGVmdCI9PT1sfHwibGVmdC1ib3R0b20iPT09bD8odGhpcy50b3ArPXMuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAtdGhpcy5kaWFsb2dBcnJvd09mZnNldCx0aGlzLmxlZnQtPXRoaXMuY3BXaWR0aCt0aGlzLmRpYWxvZ0Fycm93U2l6ZS0yKToodGhpcy50b3ArPXMuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAtdGhpcy5kaWFsb2dBcnJvd09mZnNldCx0aGlzLmxlZnQrPXMud2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMiksdGhpcy5jcFVzZVBvc2l0aW9uPWx9fWlzRGVzY2VuZGFudCh0LGUpe2xldCBuPWUucGFyZW50Tm9kZTtmb3IoO251bGwhPT1uOyl7aWYobj09PXQpcmV0dXJuITA7bj1uLnBhcmVudE5vZGV9cmV0dXJuITF9Y3JlYXRlRGlhbG9nQm94KHQsZSl7cmV0dXJue3RvcDp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCsoZT93aW5kb3cucGFnZVlPZmZzZXQ6MCksbGVmdDp0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQrKGU/d2luZG93LnBhZ2VYT2Zmc2V0OjApLHdpZHRoOnQub2Zmc2V0V2lkdGgsaGVpZ2h0OnQub2Zmc2V0SGVpZ2h0fX19aDMuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGgzKShTbShoZyksU20oVWcpLFNtKGczKSl9LGgzLsm1Y21wPXRvKHt0eXBlOmgzLHNlbGVjdG9yczpbWyJjb2xvci1waWNrZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChFMSw3KSxRaChSMSw3KSxRaChBMSw3KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5kaWFsb2dFbGVtZW50PXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLmh1ZVNsaWRlcj10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5hbHBoYVNsaWRlcj10LmZpcnN0KX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgia2V5dXAuZXNjIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVFc2MoZSl9KSwhMSxpbCkoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oYW5kbGVFbnRlcihlKX0pLCExLGlsKX0sZGVjbHM6MjgsdmFyczo0Nyxjb25zdHM6W1sxLCJjb2xvci1waWNrZXIiLDMsImNsaWNrIl0sWyJkaWFsb2dQb3B1cCIsIiJdLFszLCJjbGFzcyIsInRvcCIsNCwibmdJZiJdLFsiY2xhc3MiLCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIsMywic2xpZGVyIiwicmdYIiwicmdZIiwiYmFja2dyb3VuZC1jb2xvciIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCIsNCwibmdJZiJdLFsxLCJodWUtYWxwaGEiLCJib3giXSxbMSwibGVmdCJdLFsxLCJzZWxlY3RlZC1jb2xvci1iYWNrZ3JvdW5kIl0sWzEsInNlbGVjdGVkLWNvbG9yIl0sWyJ0eXBlIiwiYnV0dG9uIiwzLCJjbGFzcyIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwicmlnaHQiXSxbInN0eWxlIiwiaGVpZ2h0OiAxNnB4OyIsNCwibmdJZiJdLFsxLCJodWUiLDMsInNsaWRlciIsInJnWCIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsiaHVlU2xpZGVyIiwiIl0sWzEsImN1cnNvciJdLFsxLCJ2YWx1ZSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJ2YWx1ZVNsaWRlciIsIiJdLFsxLCJhbHBoYSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJhbHBoYVNsaWRlciIsIiJdLFsiY2xhc3MiLCJjbXlrLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwiaHNsYS10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInJnYmEtdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoZXgtdGV4dCIsMywiaGV4LWFscGhhIiwiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJ2YWx1ZS10ZXh0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInR5cGUtcG9saWN5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXNldC1hcmVhIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImJ1dHRvbi1hcmVhIiw0LCJuZ0lmIl0sWzEsInNhdHVyYXRpb24tbGlnaHRuZXNzIiwzLCJzbGlkZXIiLCJyZ1giLCJyZ1kiLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbInR5cGUiLCJidXR0b24iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMiwiaGVpZ2h0IiwiMTZweCJdLFsxLCJjbXlrLXRleHQiXSxbMSwiYm94Il0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKiIsIm1pbiIsIjAiLCJtYXgiLCIxMDAiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiwibWluIiwiMCIsIm1heCIsIjEiLCJzdGVwIiwiMC4xIiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiwibWluIiwiMCIsIm1heCIsIjEiLCJzdGVwIiwiMC4xIiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwiaHNsYS10ZXh0Il0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKiIsIm1pbiIsIjAiLCJtYXgiLCIzNjAiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJyZ2JhLXRleHQiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjI1NSIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsImhleC10ZXh0Il0sWzMsInRleHQiLCJ2YWx1ZSIsImJsdXIiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsInZhbHVlLXRleHQiXSxbMSwidHlwZS1wb2xpY3kiXSxbMSwidHlwZS1wb2xpY3ktYXJyb3ciLDMsImNsaWNrIl0sWzEsInByZXNldC1hcmVhIl0sWzEsInByZXNldC1sYWJlbCJdLFszLCJjbGFzcyIsNCwibmdJZiJdLFsiY2xhc3MiLCJwcmVzZXQtY29sb3IiLDMsImJhY2tncm91bmRDb2xvciIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwicHJlc2V0LWNvbG9yIiwzLCJjbGljayJdLFszLCJjbGFzcyIsImNsaWNrIiw0LCJuZ0lmIl0sWzMsImNsaWNrIl0sWzEsImJ1dHRvbi1hcmVhIl0sWyJ0eXBlIiwiYnV0dG9uIiwzLCJjbGFzcyIsImNsaWNrIiw0LCJuZ0lmIl0sWyJ0eXBlIiwiYnV0dG9uIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwLDEpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksUXAoMixUMSwxLDUsImRpdiIsMiksUXAoMyxOMSwyLDgsImRpdiIsMyksUm0oNCwiZGl2Iiw0KSxSbSg1LCJkaXYiLDUpLFRtKDYsImRpdiIsNiksVG0oNywiZGl2Iiw3KSxRcCg4LHoxLDIsNSwiYnV0dG9uIiw4KSxBbSgpLFJtKDksImRpdiIsOSksUXAoMTAsSTEsMSwwLCJkaXYiLDEwKSxSbSgxMSwiZGl2IiwxMSwxMiksVm0oIm5ld1ZhbHVlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkh1ZUNoYW5nZShlKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ1N0YXJ0KCJodWUiKX0pKSgiZHJhZ0VuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdFbmQoImh1ZSIpfSkpLFRtKDEzLCJkaXYiLDEzKSxBbSgpLFJtKDE0LCJkaXYiLDE0LDE1KSxWbSgibmV3VmFsdWUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVmFsdWVDaGFuZ2UoZSl9KSkoImRyYWdTdGFydCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdTdGFydCgidmFsdWUiKX0pKSgiZHJhZ0VuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRyYWdFbmQoInZhbHVlIil9KSksVG0oMTYsImRpdiIsMTMpLEFtKCksUm0oMTcsImRpdiIsMTYsMTcpLFZtKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BbHBoYUNoYW5nZShlKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ1N0YXJ0KCJhbHBoYSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRHJhZ0VuZCgiYWxwaGEiKX0pKSxUbSgxOSwiZGl2IiwxMyksQW0oKSxBbSgpLEFtKCksUXAoMjAsTDEsMTcsMTIsImRpdiIsMTgpLFFwKDIxLGoxLDE0LDEwLCJkaXYiLDE5KSxRcCgyMixXMSwxNCwxMCwiZGl2IiwyMCksUXAoMjMsWjEsOCw3LCJkaXYiLDIxKSxRcCgyNCxLMSw5LDMsImRpdiIsMjIpLFFwKDI1LEoxLDMsMCwiZGl2IiwyMyksUXAoMjYsbjMsNiwzLCJkaXYiLDI0KSxRcCgyNyxhMywzLDIsImRpdiIsMjUpLEFtKCkpLDImZSYmKGR1KCJkaXNwbGF5IixuLnNob3c/ImJsb2NrIjoibm9uZSIpKCJ2aXNpYmlsaXR5IixuLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSIpKCJ0b3AiLG4udG9wLCJweCIpKCJsZWZ0IixuLmxlZnQsInB4IikoInBvc2l0aW9uIixuLnBvc2l0aW9uKSgiaGVpZ2h0IixuLmNwSGVpZ2h0LCJweCIpKCJ3aWR0aCIsbi5jcFdpZHRoLCJweCIpLHB1KCJvcGVuIixuLnNob3cpLHJjKDIpLERtKCJuZ0lmIiwicG9wdXAiPT1uLmNwRGlhbG9nRGlzcGxheSkscmMoMSksRG0oIm5nSWYiLDE9PT0obi5jcENvbG9yTW9kZXx8MSkpLHJjKDQpLGR1KCJiYWNrZ3JvdW5kLWNvbG9yIixuLnNlbGVjdGVkQ29sb3IpLHJjKDEpLERtKCJuZ0lmIixuLmNwQWRkQ29sb3JCdXR0b24pLHJjKDIpLERtKCJuZ0lmIiwiZGlzYWJsZWQiPT09bi5jcEFscGhhQ2hhbm5lbCkscmMoMSksZHUoImRpc3BsYXkiLDE9PT0obi5jcENvbG9yTW9kZXx8MSk/ImJsb2NrIjoibm9uZSIpLERtKCJyZ1giLDEpLHJjKDIpLGR1KCJsZWZ0IixudWxsPT1uLnNsaWRlcj9udWxsOm4uc2xpZGVyLmgsInB4IikscmMoMSksZHUoImRpc3BsYXkiLDI9PT0obi5jcENvbG9yTW9kZXx8MSk/ImJsb2NrIjoibm9uZSIpLERtKCJyZ1giLDEpLHJjKDIpLGR1KCJyaWdodCIsbnVsbD09bi5zbGlkZXI/bnVsbDpuLnNsaWRlci52LCJweCIpLHJjKDEpLGR1KCJkaXNwbGF5IiwiZGlzYWJsZWQiPT09bi5jcEFscGhhQ2hhbm5lbD8ibm9uZSI6ImJsb2NrIikoImJhY2tncm91bmQtY29sb3IiLG4uYWxwaGFTbGlkZXJDb2xvciksRG0oInJnWCIsMSkscmMoMiksZHUoImxlZnQiLG51bGw9PW4uc2xpZGVyP251bGw6bi5zbGlkZXIuYSwicHgiKSxyYygxKSxEbSgibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLHJjKDEpLERtKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMT09PShuLmNwQ29sb3JNb2RlfHwxKSkscmMoMSksRG0oIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxyYygxKSxEbSgibmdJZiIsIW4uY3BEaXNhYmxlSW5wdXQmJjE9PT0obi5jcENvbG9yTW9kZXx8MSkpLHJjKDEpLERtKCJuZ0lmIiwhbi5jcERpc2FibGVJbnB1dCYmMj09PShuLmNwQ29sb3JNb2RlfHwxKSkscmMoMSksRG0oIm5nSWYiLCFuLmNwRGlzYWJsZUlucHV0JiYxPT09KG4uY3BDb2xvck1vZGV8fDEpKSxyYygxKSxEbSgibmdJZiIsKG51bGw9PW4uY3BQcmVzZXRDb2xvcnM/bnVsbDpuLmNwUHJlc2V0Q29sb3JzLmxlbmd0aCl8fG4uY3BBZGRDb2xvckJ1dHRvbikscmMoMSksRG0oIm5nSWYiLG4uY3BPS0J1dHRvbnx8bi5jcENhbmNlbEJ1dHRvbikpfSxkaXJlY3RpdmVzOltkTSxtMyxwMyxsTV0sc3R5bGVzOlsnLmNvbG9yLXBpY2tlcnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICM3Nzc7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoyMzBweDt6LWluZGV4OjEwMDB9LmNvbG9yLXBpY2tlciAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MTFweDttYXJnaW46MH0uY29sb3ItcGlja2VyIGlucHV0e2NvbG9yOiMwMDA7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OjI2cHg7bWluLXdpZHRoOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MH0uY29sb3ItcGlja2VyIGlucHV0Oi1tb3otc3VibWl0LWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXVpLWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZX0uY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciAuYXJyb3d7Ym9yZGVyLXN0eWxlOnNvbGlkO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7ei1pbmRleDo5OTk5OTl9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9we2JvcmRlci1jb2xvcjojNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4O3RvcDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtbGVmdHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtyaWdodDotMjFweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLXJpZ2h0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O2xlZnQ6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7cmlnaHQ6LTIxcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtsZWZ0Oi0yMHB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuY3Vyc29ye2JvcmRlcjoycHggc29saWQgIzIyMjtib3JkZXItcmFkaXVzOjUwJTtjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLmJveHtkaXNwbGF5OmZsZXg7cGFkZGluZzo0cHggOHB4fS5jb2xvci1waWNrZXIgLmxlZnR7cGFkZGluZzoxNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZX0uY29sb3ItcGlja2VyIC5yaWdodHtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MTJweCA4cHh9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWF7cGFkZGluZzowIDE2cHggMTZweDt0ZXh0LWFsaWduOnJpZ2h0fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhIGJ1dHRvbnttYXJnaW4tbGVmdDo4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWF7cGFkZGluZzo0cHggMTVweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWxhYmVse2NvbG9yOiM1NTU7Zm9udC1zaXplOjExcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6MjUlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxOHB4O21hcmdpbjo0cHggNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxOHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtZW1wdHktbWVzc2FnZXtmb250LXN0eWxlOml0YWxpYzttYXJnaW4tYm90dG9tOjhweDttYXJnaW4tdG9wOjRweDttaW4taGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggZGl2e2NsZWFyOmxlZnQ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBkaXY6Zmlyc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggaW5wdXQ6Zmlyc3QtY2hpbGR7ZmxleC1ncm93OjM7bWFyZ2luLXJpZ2h0OjhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94e3BhZGRpbmc6MCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXZ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO21hcmdpbi1yaWdodDo4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxO2Zsb2F0OmxlZnQ7bWFyZ2luOjAgOHB4IDAgMDtwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5odWUtYWxwaGF7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206M3B4fS5jb2xvci1waWNrZXIgLmh1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tVRldiQ0NBQUFBRnhKUkVGVWFON3Qwa0VLZzBBUUFNRTJ4ODMvbjJxdTVxQ2dEMWlEaENvWWRwbmJRQzliYlkxcVZPL2p2YzZrM2FkOTFzNy83RjEvY3NnUHJ1anVRMTdCRFlTRnNCQVd3Z0poSVN5RUJjSkNXQWdMaElXd0VCWUlpMmY3QXIvMVRDZ0ZIMlg5QUFBQUFFbEZUa1N1UW1DQyIpO2RpcmVjdGlvbjpsdHJ9LmNvbG9yLXBpY2tlciAuaHVlLC5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjE2cHg7bWFyZ2luLWJvdHRvbToxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUNUa2xFUVZSNDJ1M1NZVWNyQUJoQTRVMlNrbVJKTW1XU0prbEtKaVdaWnBLVUpKc2tLVW1hVEZJbUtaT1V6TXlTcEdSbWxpUk5KaWxKU3BLU0pFdG1TcElwbVdtU2RPNzM2LzZEK3g3T1AzZ1VDb1dDdjFjcWxTUWxKWkdjbkV4S1NncXBxYW1rcGFXUm5wNU9Sa1lHbVptWnFGUXFzckt5eU03T0ppY25oOXpjWE5ScU5YbDVlZVRuNTZQUmFDZ29LS0N3c0pDaW9pSzBXaTNGeGNXVWxKUlFXbHBLV1ZrWjVlWGxWRlJVVUZsWmlVNm5vNnFxaXVycWFtcHFhcWl0cmFXdXJnNjlYazk5ZlQwR2d3R2owVWhEUXdPTmpZMDBOVFhSM054TVMwc0xyYTJ0dExXMTBkN2Vqc2xrd213MjA5SFJRV2RuSjExZFhYUjNkOVBUMDBOdmJ5OTlmWDMwOS9jek1EREE0T0FnRm91Rm9hRWhyRllydzhQRGpJeU1NRG82eXRqWUdEYWJqZkh4Y1NZbUpwaWNuR1JxYWdxNzNjNzA5RFF6TXpQTXpzNHlOemZIL1B3OERvY0RwOU9KeStYQzdYYXpzTERBNHVJaVMwdExMQzh2czdLeXd1cnFLbXRyYTNnOEhyeGVMejZmRDcvZnovcjZPaHNiRzJ4dWJySzF0Y1gyOWphQlFJQ2RuUjJDd1NDN3U3dnM3ZTJ4djcvUHdjRUJoNGVISEIwZGNYeDh6TW5KQ2FlbnA1eWRuWEYrZnM3RnhRV1hsNWRjWFYxeGZYM056YzBOdDdlMzNOM2RFUXFGdUwrLzUrSGhnWEE0VENRUzRmSHhrYWVuSjU2Zm4zbDVlZUgxOVpWb05NcmIyeHZ2Nys5OGZId1FpOFdJeCtOOGZuNlNTQ1Q0K3ZyaSsvdWJuNThmZm45LytWY0tnU1d3QkpiQUVsZ0NTMkFKTElFbHNBU1d3QkpZQWt0Z0NTeUJKYkFFbHNBU1dBSkxZQWtzZ1NXd0JKYkFFbGdDUzJBSkxJRWxzUDQvV0g4QW1KNVo2akhTNGg4QUFBQUFTVVZPUks1Q1lJST0iKTtkaXJlY3Rpb246cnRsfS5jb2xvci1waWNrZXIgLmFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3WVFsWk1hM2dBQUFXVkpSRUZVYU43dG1FR082akFRUkNzT0FySGdCcHlBSllHamNHb2N4QW00QTJJSHBtb1dFMGVCSCtlem1GbE52VTA2c2hKM1c2VkVlbFdNVVFBSUlGOWY2cVpwaW1zQTFMWXRTMnVGNTEvdTI3WVZBRlpWUlVrRW9HSGRQVi9zSWNiSUVJSWtVZEkvOVhhN25leXY2MStTV0ZVVkFWQ1NjdDAwVFduMmZ2NnUzK0VjZmQzdFh6eS8wK25FVXUrU1Bqby9rcXpybWlRcFNjTjZ2OThYZXdmQTgvbE1raUxKMld4R1NVb3BjVDZmTTZVME5YOS9mcmZiamV2MVd0ZnJsWmZMaFlmRFFRSEcvQUlPbG5Hd2pJTmxIQ3hqSEN6allKbS9USldkQ3dxdUpYc2VGRnpHd0ROTmVpS01PSlRPOHhRZERRYWVCMjkrSzllZmVMYUJvOUo3dmR2dEpqMVJqRkZqZml2N3F2OTV0angvN2xlU1FnaDkzZTFmZk1lSXA2TytZUWpoby9ONzkxdDFYVk9TU0k3Ti8vSys0L0dveFdMQngrUEI1L09wNVhMSisvM09sSkpXcXhVM204M292djVpR2Y4S2pZTmxIQ3hqSEN6allCa0h5NWdmNWd1c3ZRVTdVMzdqVEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCSUFBQUFnQ0FZQUFBQWZmQ2p4QUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFDZXdBQUFuc0IwMUNPM0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSUFTVVJCVkVpSjdaWTlheFJSRklhZnN4TVN0ckxRSnBBZ3BCRmhpK0M5dzFZU28wMEk2UlovZzl2WnBCZi9RT3I0R3lSZ2tTS05TckFhZHNacVFHd0NrdUFXeVJaSnN5U3d2aFo3Ti92aHpyZ2JMSDNMZDg1OTdqbHp6NTB6Sm9reXhYSDhEcURWYXIwcWk2djhCYkl0cVNHcEVjZnhkbG1zRldYa3ZYOEFmQVZXZzNVS1BFblQ5R0t1ak16c0FGZ1pzVmFDTjFWVFFkNzdYVW5yZ0Uxa3YrNjkzNTI2OFdScHpybkhadllSV0M3WXZDM3BSWlpsM3dvenF0VnFpeUg5SWdqQXNwa2QxR3ExeFVKUXRWcmRCOVpLSUFPdGhkZy9RYzY1TFVrN3dOSU1vQ1ZKTzg2NXJZRmhrcWpYNi9kN3ZWNEdQSndCTXFvZlVSUzVKRWs2RllCZXIvZWVZYi9NbzlXd0ZuUE92UWJlQXZmdUFBSzRCTjRzQUp0QUcvZ0pJRWxtTnVpSnliYTNFR05tWmlQZVp1RVZtVmVsbC9ZLzZOK0N6RG4zQVhoRU9PbzdIdi8zQmVBejhJelFrTVBuSmJ1UHgxd0MreVlKNy8wbllJUDVTLzBGSEtkcCtyd0NFRVhSUy9yZjVIbDFHdGIyTTBpU3BDT3BDWnpQQVRtWDFFeVNwSE1MQXNpeTdNak1Eb0hyR1NEWFpuYVlaZG5Sd0JoN0o5MXV0d21jekFBNkNiRzNHZ1BsZVg0anFVSC9hMUNrdHFSR251YzNoU0NBTUIzMmdLc3BrQ3RnYjNLQ1FNbWtqZVA0V05KVGhyTk5admFsMVdwdFRJc3Y3SnRRNHRtSWRSYThxU29FcFdsNllXWk5vQU4wekt4Wk5QZWhwTFNCWnYydCtRMENKOWxMbkFSUUxBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTo4cHggMTZweDtoZWlnaHQ6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMnB4O3RvcDoyMThweDt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5IC50eXBlLXBvbGljeS1hcnJvd3tkaXNwbGF5OmJsb2NrO2hlaWdodDo1MCU7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7bGVmdDo4cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE2cHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvci1iYWNrZ3JvdW5ke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBaDBsRVFWUllSKzJXMFFsQU1RZ0Q2MHpkZndPZHFhOFRtSS93UU1yNUswSTViWkxJekxPYTJudDM3VlZWYmQrZER4NW9iZ0NDM0tCTHdKMmZmNFBuVmlka2YrdWNJaHc4MEhRYUNMbzNETUgzQ1JLM2lGc21BV1ZsNmhQTkR3dDhFdk5FNXErWXVFWGNNZ2tvblZNNlNkeUNvRXZBblo4djFIang4MTdNaWxteFNVQjVyZExKRHljWmdVQVpVY2gvQUFBQUFFbEZUa1N1UW1DQyIpO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2F0dXJhdGlvbi1saWdodG5lc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBT1lBQUFDQ0NBWUFBQUJTRDdUM0FBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrc1BXUjZsZ0FBSUFCSlJFRlVlTnJ0blZ1VDQ3Z1JyQUhOK1AvL09yLzYxWTV3T05aN21aMXUzWEFlTE1qSlpHWlZnZEtzZmM1eFIzUzBSSUlVVytDSHpDcGMyTWNZbzdYR3YzZXg3VWlaZDU3cmp5enp2K3YrMzNYL1IvKzNyL2Y3dlIzODZZK1R2S05jZi93ZGhUTFBjdjlxVTJ3WmQ3NHV0aDB0MTgyMWprSVpMUGNzSS82bldhNFh2dXRxdVUwWjg1bW54ODBTL1p6Z3BuTG5PdEhOdDcvb2Z4MVRLWGNTTnpOLzdxYk1RM2p1N3JOUW1NWVlkLzRzMmo5YWErUCtnR2FNY1pyYjFNL3RkcnZmNy9kMnY5OVA5L3Q5M08vM2NidmR4dTEyRzlmcmRWd3VsM0UrbjhjLy8vblArMisvL1hiNjZhZWZ4bC8vK3RmeDV6Ly8yWUs1QWwycmd2ZjRVc2JwZEdyQjUyYkF2QXJYcHV6am1pcUFWU0d6NWVEbUdZWHpoYkFabUNybm16ZGRwVVUrOFkxZEFPWWVYQ3REVXdWd1Y3WUNHSDZ1QW15TWNaOWw1dmtVYUJQR01VWjcvSjV3Lzc5Mi9mdnY5WHE5MzI2M2RyL2ZUeFBFQ2VNRThuSzVqTS9Qei9IVFR6L2R2MzM3ZHZybGwxL0dQLzd4ai9HM3YvMXQvT1V2ZndrVnN3b25namRPcDlQekgzVTNEM3ptV0duWlZYbjRqQ3FzN3dDMkJLUDQvOHRBemtac29XeDZYcnFlSFp5bXZwNEFCQ0JKaFRRd0tmRFQ4Z3pyWkNJcWk1QWhpQUNqQmZFQjJyUDgvWDYzTU03ZjYvVjZ2OS92N1hhN2JZQzgzVzdqY3Jsc1ZISXE1ZmZ2MzArLy9mYmIrT1dYWDhaUFAvMDAvdjczdjQrZmYvNzVKU3ZiZXUrYkwyV01NYUZiQWxwQk5NODVRWCtjdDZxb1Nxa1BBd3VRbEJWS3FHTkZTVU9BQTNCbXU3Z0M1aE5PZDE1blN3dkFPVVc3QzRnaVVDVjhTZ241TDloTkZJcVRzcDBHeEkweXNpb3lqQWprWS90R0pWRXB6K2Z6K09XWFgrN2Z2MzgvL2Y3NzcrUGJ0Mi9qMTE5L0hULy8vUFA0OWRkZng4ZkhSd3JtVGpWNzc5RVh1MnB4Mnhoand0ZEpaUWNBV1FJUExQSVNzTUphU3dpRDhneklLcndTeUFURTVqNW5BYlI1YzFkQlV3QmxzRVdXMGg2THFpWXNxRlBBUXhDeVJaM3dPU0FSeG1sWE1YNWs2NHBRZnZ2MjdmNzUrZGsrUGo1T0h4OGY0L3YzNytQYnQyL2p0OTkrRzkrK2ZSc2ZIeC9qY3JtVUZMTzMxZ1lEV2JseFJJcy9UcWZUN291c3hKc0F4WEEyR2M3VEE5WGRnZmRvSGJGc2o3NlgyKzFXQXJnSTFhZ2VHd0EzcXVwcW9Ic21jYkk2RnU5M3F1Z2dGYTlkN0xlRHRnS2ZBRkhCSitORUJ5SWtjSjVLZXJ2ZFRtaGhHY2dKSlNaNXZuLy9maitmeisxOFBwOCtQei9INStmbm1HRCsvdnZ2NC92MzcrUGo0Mk44Zm42TzIrMVdzN0pqalA2d3JhTUk1RTRSWjh4MnZWNVRTd2txdW90VjcvZDdUejZIRldzRC9xTmNkdzBDUTNxLzMyMWM2ODZUd0RWSWRidXk3M3pObGRoU0hiOEkya2xaem5tK0luQlM0VTZuMDMwMmFCRnNMaEhEQUtKVkpWZ2xmSTlqaHZ1NTNXNTNzTEFOWU54QWlEQTZNQ2VVSHg4ZjkrdjEyaTZYUzd0Y0xxY1pXNTdQNXllWTgvZno4M09jeitmbnNTbVlVeWtuV0VHODVXQnN0OXN0elNMeU1kZnI5UWkwOGlZMTVVWjBMbERHTGhSM281eksyajdPUFVURDBFK25VM3RrN1hiLzE2TkZiaGxvQU11WTF6akxVT08zQktlSURlK1o4czMvSjRnRm80VE01alBtdVJnMjhmb1VLS1ZTd28xNlRnQTVucHl3Y1dMSGdZbC9QejgvNzMvNjA1L2FiNy85MW02M1c3dGNMaWUwc1pqNG1hbzVnVHlmejg4RTBmMStqOEVjWXp3VFBFRzJjcWp5ZkhORjBNOGZ1cUVpYU9WblJ6WlpRTmg1ZndReUhnL0hER2ZKbzg5UTF6Yi9xdXU1WEM2NzczSTJYS2ZUcWQvdjkrZDN3dXFXdmEvWVRkVWRFVjNmaEl2L1ZpeXBzNllFM3gzcjQzSzViSlFTNjZ6YXhWR0ZzdmQrLy9qNGFGKy9mbTNmdjM5dnQ5dXRmZjM2dGYzKysrL3RkcnVkdm4zN1p1TkxCYWFDTWdVekMrclpSaUZvd3hVdUpJOFlNcWNDcDlPcHE1dmFnYVlVNmxHSkExWFFxZWpjaHc2Q2owR3c1bllCckd3MDFBMk8yMDZuMDRCR291Tk55VGZwL0Z3RWxoVWV5Nm5YcklLdzdRUVdkZHh1TjJsZEw1Zkw4MzlnU1BGOGFodS9KdkJPNDhDUFN1cU1mOFZwOS9QNTNMNTgrZEx1OTNzN244L3RmcjgvMzkvdjkvYjUrVGtoUEozUDU2bVE0MzYvaisvZnYrL2lTZ2J6ZXIwK0FaeC81Kzg4YnY2T01kYTZTNXo2a2QyMWZZQzlkeHY3Y0lKSjJkOUFPUzMwZlBNenlIaVRNOEI0REY2WFVsWUhwNEtRVzNXKzF0NzdNTkIxdkdIeFdxN1hhN3ZmNzgreTUvTjVBK0gxZXQyOXh1UDVkYll0eWFSdTRBa3NiUHE2OTM2ZmpSelhSeEJiUHIvYitiMTgrZktsalRIYUJCQmZuOC9uMC8xK0gxKytmQm5uOHptMHNCOGZINXU0Y3I1R3VCaE1WazBFRW45UnNjdGdWaE0raXhsSnRNQTIzUjhCNnl5c0FzdEJPZ0ZYSUtLQ01JZ1RvTXFORXUyZllNSDd6dGM3MzJkUUtrQ2oxeXRBWnRZMEt4OHBJcjhHR0orQVQzVisySGlyaGwrK2ZCbVh5Mld6NzN3K2IxN1A4cCtmbjgvdFV3R1ZsZVZrVHlVYjY4RGtmYXlXWTR6eE5SaWhVNEVwTEpQWlZySyt1N0o0L21nZktxZUxXOVgyUkVXbEl0TDFkaXluYkREYjMralhnWWpRcW4wcnJ4V2MrTmtJTFA3Rjd4SWJNdng3dlY1M3g0MHhubGJXSkYxMlpTYWcvTjBwVzZ0K1p6bU9NekhqYWpLd0Rmb25kNzh6WVRkZnExOHVwOTd6cjJxOHYzSWlvQnByUnRCbDBFWjlvZzVXQlJHT2RPSGpJalhGN1VvdEZiZ09Xblh6SUp5ell2akc1SVlnc21NT3hIa3o4T3NNU3JWTldlcTVUOERhT2NiRXYxT2Q1cmJzOWFPN1l2TWV0NjNFa0YrK2ZNRXhxK01SbDQvTDViTFpOLytleitmblo2S2F6dU1xWFNRVk81c3BKWGZsSEFJemVzL3hKc2Vja1JKaURNb2c5ZDZWZlJycVhNcjZLcFZWMjdqUndKYWNHb3ZPQU0xek1kUU1ud0sxQXViSzYza2RDQ2h2STFDN2cwejluZi9EK1h6ZTJWajhIN0d4NFA5ZHVRbHNZQ3JxeU44WHFHM0htLzEwT2ozancvbitjcmxzdHVNK2pQbW14VDJkVHVQejgzUHp0MnBuMVhzRUhYL2JuUGFWcVZtaDB4d090MG82WExMQUhlUFVVMjAzd0hmY3JzcEN3bVYzVHJ5QjVzME1zZWVnOTd4L0J3ekNqQmxiQitwUkFQbGEwQlZRdVQ2VjZRSGRCbGozZDBLRzE0N2IrRHF4UWVVeW1ETzQzVzRkUWFyK1RJandtQWQwejgvaDY1dmYwL3lMdjNQYjVYTHBydS95ZERvOXM3RVQwSStQajZkS0s5VlVFSWVLV1FXUEFPcko4TEtkNHZFK3Q5MVkzZTdVRmxXYXRnMlZ3Sm5iK0hQbXR2bS9zZks1OS9PYVdGM3gvZVAxVVBIdkE1RERZRHBZWGZiMGRydjFWMkRrQmt4dHcvdEVXVlZsWFdkQzlwRllzNS9qZmg5ZFMvMTZ2VzdzNmxURytUZnFzeFNKSHhrWFhxL1hkcjFldTRMc2ZENlAzdnNUM043N0RrTCt6UG01alNkS0w0elIzQXhRZDZySGtMa1lsU293c3JxN3puenU2d1N3ZHNNSk9YbUE1ZkJjanh0Z01HQllIbHI1em9raHRzTUNUZ1hMUU9XNFhDNmRFeUVNcHJMOG1BUXpYUmdkdWl4Mnlaem9yeGtZc0RuM2hCMVZlTUxHc1hzVnRnbDJwVzhTM3N2azB2dzdSNGhOYUh2djRjQUNsNUhGendJSDBLYzZ6dTRYakRQUi9qcEFWeFd6TzFYazJERGIzdlRjeGVHVTFpV1pIa21JRFd6aVdLdmlyQ0o0RHJhdnM2SUovR0c2Y1RxV2RYRHkrZkFyUURWVmtMcWtWakFvWklJVGRtbUlxWHdxYTk1TjMrTUdZb1pRZFJWTk81M1kxeFJraE8xNnZZN2V1NTA3Q2E5bEpuYkdweE9lbVFoU3cvQVFzbW1wNXpVOUJpVThHNnd2WDc2TTYvVTZQajQrZG8wQno0Q3BnaWtuVFVlRHF3bEtCbWczdTRPVmpyWjFBK3JBY2dhZWpXcTZlSkN2Q1lGRE9OU3dPZ0hYNEVRUnc4bHhiekRPZEVLNmdaM0hrMWIrOGcybzFKRnRLWHl2L2ZFZFRYdVdqV1hkQVppQnA2QURlRHJDRmlpbTdCNlpGbmVlSTdHdm0vUE1rVURYNjdXN3hJOGIwRDcvdjhkQTlxZk41b2FDZjc0V1pqSDBtZjFjbWZZMVkwSlVGbVZyVFd1OHV6a05jTHRFajd1NUZYQlRrZkM2R09BNXE4WU14TzhLVnZGNnNBVkdkY3JVYnNLT0RjUUtrTE1PTWRtbHh1bTY0MllyUG0yNkFsaFpXMVlCMVIrcnJHc3dFOFRhWUFXZVVNeGRmK1dqd1N2WjJFZjN5dE95Zm41K1BwVlBBYXFPbjQzTXROQnF2bWpqeGJqTTRsWmpaWTRncU5NSTVrdGFXL3NZS053Uys5bEZRekdpaG1NQ0tQYTcrWjBWNkViMEdSbW9idHBYOEpsald1NUZNTE41amE2aEc5a3dRZ1pxZjUrMU5INVV4emtGUmVDZFdoSjhYZGxHVWt4TzdIUmxZUm00bVZPNDNXN3RlcjEyVFBKRXcvcm1FTjNMNVNLSElXWmc5bXorcFVvS09ZcTViSlRKZFgyZ21lMVVjeE1aUUZhRVFJbEhjdDMyTStZMUJ6R2tHdXpmaXlBTjl6K3VncGxaMXN5bUNyRENZWWtHeERUcEk5UnpCeTBySHllRFVDMW5XYWVVYUQ5bjR4a055WU1CRFp0elozQisrZkpsWTIxWEZET2NBUkpsYWJPeWlTM3VDcExJOWpyWmpDRGthVnZjQ0Nqd29nbktTaFdkelhaV2xaTXZWVGdEOExwcWxDTHJxZ2JjQitxWXdyZ0tZcFQwY2NDcWJLeUNWYWxrRWFibi9GeW5vZ0NyUEtmcWY1MXhKN3NHQjJaWGNabXhvU096dGp4MzAwRFppN2EwLzJBSVIwVWxCYWc5U3VEdzZLY0F6bGFCN3ZIWnZXcGpLOTBkeXJxNmJLeURVWlFiUjBCMDViaUxRa0hJY1NVbWdJSytTd3VxZ0hDbm9pbzJSUVUxeWorQm5CeTlwcGhWS0xHeUM3WnpGSzFweFdLK0U4SWhWQ1dMTi91THRuVVU0YXlvWUxvYUFOejhGZHRhU3ZZNHBWMEJFVzJsczYxY3pxbGxCS3BUeUtnTUFocloxY2RjMVJST3RQbXZXTmtkY0taN1pLeGFXamlQTEpNcHA3T1pLeEErcnFHL29KTGp4ZjBwbkpscUxvRFpvM2d5VTBtS0d5czJ0YUtlY2ovZDFDK3JKU3BsQnFsVHlBcWdSK0Q4S2pLbG1STDJndFVjQWRDdHNMK2lqQ05UMW9xcXFrSDJPSEViRzVzREZuVWc1QWEreUxvdTJWVTFwdGoxUzJaUXF2MU9SWk45SVd6UmZnYVJCeEtvQkU4VVd5cWxKRnRySWMwQXhOalNqZWQ5OUNUWS9YRGZTekN6NU0wSVpvVkVzV25QRk5Uc2w4b29WQzFUemJHZ3FGWk5EU2dWd0tLKzFzR0RNS3F4WkNXR1ZNRHlzaUVyMWpWU1FKVVl3ajVpSE9sVGhkSHQ0NFNRZzlDTitubDhEOTBOTUlnQWRncjQ2SnFSaVI5STh2UmRGdmJyMTdtL3l4VU1Lak5MTWlWVUFEd3UyQ1dHaGhpK0Y1NVRXTTlNOWNvZ3ptczFkbk00dU9GL0xBRVlXZGNxbk03eUZteXEzSWZ3bU9ST2Q3WTFpRld0T2pvWThUbzQxbVRWNUl5c2dGRnVSenNiV0ZHYk5JSUpDRHYxZE9vNGxaRzdqV0J3UkZ0VlRLdVd5ZUNCeUpLT2FuOG9aM2VwOVhkZE5sMHREdWF5d0x6OWNYUFllREFBMFNwa0JPOXNiVmNUT1ZXbGRQdjR1eXpFa3p4SHRqdm9uSG9Ta0ZFV05vbzFkOERoY1FwdXRkMnBwTm9uNEJ6b0FpSjFoQkZRZzBkVnRkYkdISERRV3VzaG1ORVF1a0xNMlFPMUcyWThiZ1RYcUZoY0JKajdFalBnY1B0czhVUzhxUHBQQi9kWHpuT2g1WjQzOHR6SDVlYzZRZ3JPS3JSUmZLbXlzQm1VREIrUGhZYWJNbFZQRVIrR0NTSVRUenI3YW0ydEFySDNiZ2NFelBKbStjcjVqSjRObkhORkRWckZYY0k1TGU5azVKbncrYmVkYlYrRmZSelpJSGFPT2FPc0xZMC83VUdzNThEanJHd0tNSU1GSUd6T0VXMS9qR3NkQXRDTjZoRUFJNGhCZTlZWGVSUk9CU1ZQQVZQQXF2SU01Yng1aFZLV0FNUDZ6QlJ5M2llc2NyaWRWZEZCaW5CeFhEbkcyR1JZMlhiQ3ZwMWxodkd0TzlCeHU1aDkwOFhRdTQybG5TQXJNRmRpek1pbTh1d1JDeFBHbm5PUzhsd3BuYk9pRHFUQWpzclJOL1Bjb0FTY0NiYUFDcVZNNDB5bG5qalRCcytid1dsQUcyMy9VS2Jka2l3S1dJUVBHeldhY3pwb1NseFBFajgyMmNOV2twUzdGeXpzRHJxcGZncEczamFodzJ2Z2JhU1FBeHVMV1pZdDdKenlOZThKb1pwTkFjdkRGT2R3MHdxWVQ5QUsxclp6L0RkYlNsTFBwMHJ5SXhnUUpsSzlBWmxFcTdJT1hwb2hnOVBJaHJDbmc4OEpzT3hpVjRaV0FZZmc0c2lreC84a3kyWjlsODYydXF3cmZzY0lIOCt1Z1RtVkd5aWRkZVZZVWdFTW40R1p6ZzE0RXdJc2g5c3gyY0tLaVdYUmV1T0U1Z3pHT1FnZGxSS1ZWZGxldnFiMjc5WHEwUW5zdHMyVkRhQk8wY29lenNydVd0SEFwdTZzS0c0SUJoTjBhR1Uya0xyTUtHUlROM0htYkNEd0tWMTR6dmtNRURHNFFmWlZzcFZsYU5VMm1oYzVURVozTjFoL3pxVGhldUxwVzA1WldUR1ZqYjNkYm5ObXhLWkJuTjhKcWlkYVZMS0FPeUFSTkxTK01CNTRaMitWYXFvTUxLcm9WQmxuZ2VmblRQQWNvSE5XQ1N2bGZBOENJMEhFbUJOQm5CbFh5TXJ6VTdBN1dWbTk0UFBxUTJnbXFLeCtXREdzbnZpbG1jU09CSnFPSzFuWXlBSXp1QXllc3EzVWRTSzNLZldjWUtEOTVIbWZZT1UzcXNlcjJDdFlFVUErRnBmcWROdmdQQlpVQmhEckdPTlJWbFFzaDhyTGNhVUN5a0hHME9PVXdUbExCcnNoNXNvRU1HZXppMUU0SFJWdDFpY3A1d1pFRlhkaWJDa0c4WTh2WDc1c2JPNEUwaW9tOXoraGpTaU9meTNEaHBYSXRwVmhFK1VHUWR2b1dqdENobXJHSGY0WUF6S2dCTm5HdHVKeEZDZUdkaFVBZlFMTEs4a0JZQVA2Z3ZGSlphak1HM1hreWN5OEt1QzBxNEV5eW13dHdkeGR2Mk0wbUlCdEswTEtuZjY0MGowMEF1cTRnVWtkV0dsaHMyMnFKYzZkWkNzTDE5b3hubFRKRzRTWVZSSUdwRDhUUEZCdU02T0VsYlMxcGxkaWQ0bUdBeU42Wkl1cGJDNWJYSk45ZmRwYlRoU3hMVWFJOElHMVhJWUJ4VzNUanM2S1Fvc0tjeGZ4Y1FtZG53UkdNMTBHbkZjQ3kyWFl1bkxNeUFrZGdrNG1lUGljenNMeWd0aGNCdXQ2Z29PcVM3WVZGWEFETGphb3NCNnM2b2ZjWldBWlNJUllxU1VraXpZd3R0WWFiM3ZVT1E5dzJIUnhJSWc4V3dSVmVFNjh4aTRVdEwzelJwaHhwbHp3dVpyY3FZQ3ExSTNqUEk1ZG5KSXlnRW9oTWJQcVZKU3pyd3p4QkpUczV6TitSZVVTZ3hpa1BRVkYzSlZCZU5ReGJIRU5yRU1OdkVkRlpWVjlsSDkrT1JHRXNOWlFweVROYzRDM0FHN1hGNG5nenErRHJPMnpidWFhT1hnZGFGY2RrRW90b1NGQlZYMnFKMEM4T1daZUc0S0dscGdoQTBYZlRPUENxVjJxcXdRMjZRV2ZGMlBNTGhJMncxbFZBYTJhUHNZZDB6YTI1TVFSd2djWk42dVFEQ2krWnhpRDRYRU0ya1p4T1Q0MUZuWm5hUmxjcFpvdXpsUnFxZGJRVldvcFFvU0I1OFJWNTBsQk5ySGkvQXdYUzVMcndEVmxwWTNGYzNCeWlZR2M1MlRyaXN0NmtPWGR3SW5BUXRKcHA1UWNoeWFxdVlPVjdTdStmeFZNYVYzZGMwUkUyUzZtVVkwZ0x0MnBNY1lxcktJUTl3MmwxZ3BRVU10UVljbW1idDVEVE54ZGhuVUNqUXF0Yks5U1VTenZyQzBtbWhoRTFlMkZTMitveHlweS9aQVN1dGttdGp4M3ZjQkMyNFBYNjVuYnFrQkNSaGZqUzlrSVlQbmVlOGNNYWdWT2hJLzNUMWZBbWR0QVdac0Nzd1RKQ2tRVk5hMHFXS1NLUE9wSEFVaEQ5RHJiVmN5b1lrd3FodmgxN3ZZQWF5WExReUtHWWR4bFVERnA0OTRyQlhSallnTzE3RERZZXROSVVqL2V6cDZTMGxubHBFd3NXbUpNa093c0tYZVpLRUFqSUhuMEVRSklTYVJCY082VU1JTno3cC9iRWpqbnc0ZnQreG1EdmtzeFg0RzJySXJpczdxYWVLd0FGTVAyT2k3bjRjcml1Wnd0cFNVd3BmTHhTbk9SU3JJcXVzYzVaRmFYeXNxUldqaVoyRHlBV0VJTDM1dFZTb1FFbEZBQ2pPZUdHU0U3QUhFUWdkby9MU3ZDT2dHQnZreHNtRGJ2bFMzRnA1dmhhQjJUQUdxUktyS0tNcmhMVnBhR3pFVmpaME9ReERoYUNUQStReVJSMWQxNWFRenJKbnRMM1JpYnNpcGpHNmpsZ0w0eXFiUzBzTllnMWU4NHZoYkJWckVsSzY0Q1VjV1lYRGZLeGhwSXV4aVZKWlV4c2JNeS91UkJLVE5SUTRrUTNMZFJZTFMwckpqUlBsVFBxWTZnZEpzRURjK2FRWEFuK0hnc05VQ2JSdUYwT2owenduQTdiV0RrYmhPNUVuczAwcWVRaFMxbGFCTWw1TS9jQWF4c0xGOHJLeXFsK1RmN0VMTEVHdS9peGlpbWRDdm8wVGpmcGpLd2FnZ2VuNGVoNXY3TG9rTEtiTHV5dkhoY1pHOGRoR3JFRHg3SGc5M1pwcEpGN3FCcU8zaVZ2ZVhFRFFOSW56ZW9lOFlxNmVQYVpCWjJKdmlNM1cyVUFHb3Rla1JDQUdxNEVrRjFYM0RPblIxMXlSc0JMMXRSYTBQVmNaaU5GWFoyYzM0RnNrdm9tSW5RUTZsenBKb1piSnhrNDNOd0tKRkJxdUpTc3JCeUh5ZHhLT25UeFFBU0JtUzNqK0pNbnNIU2xhM0VjNks5VldvSlZuOXpmandPTTdocVlBQXFKUXdFMmEzbkE0OEoyUUdlZ1JrcFpOaXZTWSt5czNFa0tkNG9KSXdzdklIbDNjV2dMdDVrNE5INk9tdExXZHB1ck9rd0VNdXBZYzdlTXREUmhPY0kydWk1SmhWSXpYekx5dG8vR0FQdVpveW84d2tvZHVWZ0pnbEN0N09oR2JnSUQ0TXE0c2krNjN6VVMxRnVGRlhGbHF5YWoyZW1IbExNY0JxWXUwRk11UjI4QmJCN2xPeFJNU2lDUVhGaENLdXdraForcFlEaUdTZ2JzS0tWOE1pU1JzdUhTSVdNOXJrbFJpSWxaWnVxWGpzUUs4b29ZSk1ncTNKS1dWa2hIYmhzVnhGVXp0aE9XUGtZaWpjYng1NElLc1NkVCt1THIzY3JHS3lvWWdGaUdSOWlCazRrZmxvVVgrSklsUVJRcWFibXBnbmhxdHBRcGI2UlZRMVdINURuclM0aEVvR1pxYWVyUTJkaEZiejhYZVB4U2htRGJvNzBlSVNqb29yTzJ2SzhTSlhJNFNVbUVVNHpXS0R6VUR0V1RZdzd4WGxiU1RFajRGUmc3ektuS29HUkFMdjBHczlUZ2MxQnBDeXdHWlJRQXRxVnoyeHJCY0FNekVwZlp3RlNhMkc1VzBRQkZqU01hcFdBRUZhM0hjR043Q3hEekVDeUlrSjk3cXdycVdOVFdWbzg3NlBQc2pQa2oyd3Zncm9NNWxMWktNRVRLVnFsL0N2bldWRmlGYS9TekpVUXdrb1pzcjY3WTZ2bFNSVjMvMnRtTlRPWTN2bmF4WXdNdW9QS3FkelIxdzdJcUh5bWxQeGFBVGhmVTdLbzJaWFlqNEFZSkhMK2tOZEt3UlFZRVNUUmE1ZnNVWi9yVkMxVE1UeVdWeVlvcU50dXphSHNNeXYydHZvYXJ4ZGZxd1lnVTFheEZvL2NucWwxRkdzcUsrdUFST1Y4Qlg0R1U4V2NaVEFUaTJxN1FjeWkwTzBWK0doV0JNTlJVa244SDFTc1dWRTVCeTNHaTBFQ3FVZUpvQmZBdERhNGFta2RYRzM3QUdQNUdnZWI4NHA3VWF6cG9LUnpkRnplUThIa29IR3hwckt5L0hwbTV0MTJwNDdKNnhUWURFejd1SU5FWFN1eFlYdkZza1lBYyt5U3hIOXNmNWZ0S3pVNklid1ZCY1VHZzVlNUZNQ0VYU0VyWlIwd0dheVYxOXdvTTlndVBqVHFKZFZUcVI0dUU0bkpuTGxkV1ZrRUNDWkxkMlZMRit4dGFtZXg3SXBpcmlTRFVwdnJwbjlscndHTUNIeXBwTUgrcHM2TElMc3VGR1VqMVhFT1hpcWJxU0hQVUtuQ2xwV1Y2OGtxdFVSVk5EWTRUTmFvY3lrb1llVFU1bmdHRVFhL1MxRG5uRTRBZVhNY0tqSFBBbUZWakNCRU5hZXlMVk5IZnIzcHg4eFVzdEo5NGhJcGZINEhLRS9lRGFBcks2bFN5VlZGYmR0MWd4VElWazNwcHBWbEZYaTRwRWhWQlRPYnF1b2hVODVNTFhuMWlhaHZVa0hKalNDTWMwMXRMRnZlVlZCeDBEb2RNNmpmdEN1N0RPdEl6WXhyYzBxcDFKR1AyYXlZRnoyR2I2SHZNck84Y25HdFY2R2ptM3VJbVNmRDJHcFdLNnVvd2JaR014RktRQ28xcE9NdGNNWEZwUnN0K2hYR29Bb21GM3NTVEJHZ1RnbGJCS1d3c1EzdFpxYVlTcDBaMUNpbVJEV0ZjQ0pVUFlKMDBCSTVGa0tZTm9pZnVReG1OODhTV1ZYV0xNYVVxcXFnQzBCbVFKUjZzazN1OU5DZjZqWUxYeEFmcXNZRWdWTEFoUlkyQXRndGZsWk5GbUZ5aHhkckxrQWRXbGs0RDg4TTJpeEh5ZXBJZGhNSHJHL2lSMVpHdHEwTUdwYkRiUlBZT1hlU1kxTTZOeTRac3R2R1NrdEsrWGJGUEFUajJEMzcxc2FQRXNBTVhoWHJzWjBrbS9YU3RraGhNeUJmc2E2dVhGWmUyVkNlK1lNcjErR0tnd3JReU5ZcTFWUnJCK0VpekFvdzZOc2ROS2N5VkVrWWVNNzN5czZxNGtBSHA2QmlGa2xUa0lyVkM1b1lWN3V6d09HQ3o0VUowU3RxMmxXTUp5NHd0YitSZXRMNnRaRmljbkptQnc1VWpDdlhYTVpWSlgyTVFrYmYrWE41RVdkNzhWejgvSkVzTVpUQmlLTnpzbTFpbkxSVVE3NEg0TmlkYXFJNjhqNXNBRmd4Y1J2ZUM3aWVMSlhmUVl4alpaMkNzaVdGZXdaWEptQklsWjF0ZHRyWDRoU3VhdGVLc28vUlpPdE9LVzJubXExb1R6ZUs2ZFJXQVd1Mk5SVmI0aHEwU1htMUd2dHVnSHJicjVJWHFtU2t0ZzVDdURFMk1TbFB3c1k1a05FMldwM0FxaVpiV1ZMQXhpQkYrMmlCWmJ1Tmo2TUI2cnNNTEM3Rnlhc2FZRHlvN0trb1B5RXR3M3BFTVhmUHZ4QUppMmpBUVFnanJ6MHJMSVpTV1psSW9OaHdkNXhLNEFSOW1ZTmpXQWFMcm51SW1KZUJWTjl6Qk9ST2JWdmJyK21UVGZGU0VKTFNSbkhvN2hFSm9JaThNRnFqeG12Z21GNVVSWno0ekxGZ1paOEN0dTJYN2dnVmNjS205Z1Z4SXNPSHF4WGdOTUtuRldaWW5mMWRCbk9oYXlYcTE3UXdGbFdXMDllTkt5VkpGbVhxYU9OR0E1YUNlZ01iSjNVVWtHWTFpYzNuS1dnanE4cWZWWUdRRzFnUnQ2cnM2MmE2SGlxcVVPcWRlc0s1Tm1YNG5Hb2ZKb2lFMWQwZEY5bFZWa3ZUMS9rRUVhYUNvWU93RnBjVmNvTE0rNzY2OVB4QzlyV3FrdEgwc1dVWWxkMFZDcHVCWi9zdFZSY0dneTlXWDIrVTFRdGhpOVN6QXFTeHpac3krT2lGekJZbnlTR1Y2R2t1NDRyRDhCQ09aQlYzQnZENStBS1JITndNRXNCNkV6SG5KcGtUQWVpVWxFR2tjRUNlQjZHRFpUcDVZRUpUbHZkcmtueFlqVGxsTWtmTnRYd0RqTTd1VmpLNUpYVVVuNDNycnFwSzJqeXRheEhXME01RzhEQzhydEhNWXM3S1NnZHVWUU1HVFlGcUZ2VlM2cmtEM3NESjQ2YWZkWUZ3b3ExMUFPS0NCTGh2d29VZ2M4SUdBTnljUjZrblpyZEpQZHN1eG55amZkM0ZvdlRsUk1kRWR0T2w1Q01WNUVIc1hRQmlzN1RPd3ZJRFphR2oyVm5wYmg3Y3BLNjNWd1lFTUx3cWJqenlsNjk5c2F3RkZrRjF5cWpVVTMxSGZDNnNXMVpGVkZ1WFZYVmd6OWtlRWF3MHlzMWxXZm0rYXpRQVFTV0EraEtZVmZzWmpQbmNBY1VCOW9JYXl5L1VaWFJOY2tER2ppNzdHc1didkJvNnRQcldQcU95VmtCVXErSU5lcXB6TmRZcy91MGlmaDVxbXBxSVcrMzNKVlNVY3dZNzBLTDRVOWxZZFU2bGp0U2xzN2xtZmk5ZzNZemVRZlZrYUdGYVYzT0RDbmFEMk44d3NFREZrbEUzUnpNM1pnaGRZa1dIc3N6cTcwRkllY25La1ZrdDhlek16UnE5YmtHdUtvalJMQlZTb2QzWTF5UHFLZ1lXN0pSUVRQVnl5NXhJWUxqT2d4Z1Q1MlJLSlVZMWRPcklpUmQ0ZnV0UXgvQTVBY1NtRWp6MHZGV3JrTHp2YldBdTlIT1diR2d4RmsxVk5UcG5CS2s2VGd3aXNJL0hjeFlYUDF1QVdPNzJVTEZsQlRxK2FTdTJWVFVzNmhyeE0yQ0YraEVvcjFWSUE5Wm1GVWFhYjFsU1NnWnNWczRzeHpIbFZMb0pIcjlINERoT05Ua0kxWEMwL3dpWTJOb1dBRzVSbG5IRm5xNm9MY2NwUWRkTXVKL08xN0pWQTVPSExpMEJxQ3p0cTdZMSsrdWNDZDk4cUxJOE1JSEJWL2NLanhRVG1lM2hGQlMzTXlDcW5Ec3V5bTJvODBIanZGRlR0clVSbU5hR0pzbVZhaEltalRzVVhLdFFaVEFWczdNdnY4LytmelVyWkFYY0xKNk00a29lNlhQMGI2U21XV05EenlVcFE4YmwrTHRXeDR0dXFaMzZjUllWM3l1VnhQTnd2SWlxaVFDU211N3NyZ1R6UjZua3locENhclh3RnkxdkdkNWlQMmNZMDZsRnI1TmpoaGcxWTYrTkIyOGZ0Yks4M3M4cmY3a0xKYkt3REZQYkxnMjVhMEFkWkpFaXFyNXBoaXhLTURsUlV0Y3NzcTFocmlMcUdvSCt6ZU5nVm05T2VtanNFVFY4SmRGME5IbmtJRnhXWTFPQjRZcnA3cnRXSjdOZ0FBQVBYa2xFUVZRM29OczVucGx5VmY4dTJGb0x1MUpySHZlYVpXUWpxQWtzaHRGYTJnenNTRzNacGtidmczSGFmRjlzbFBQbGxkakZsSzgwR3lzbThNcjRNUGhuZU5XRU5QR2pBSXBtaWxUUEFUZFRSVFhsQ0JZSFlBUXVQd0EzNnhJcFd0R040cTNZMk1oaUdzVXB1U1NubEVKUkQ4UG9yQzdDRllWdytGNTFxVGhnYWJ4c1R4V3pDR1kwWlNzYjNsZnFBeTBPUE5qTnk4eGlRUUtzSFlGUTJIQlpWdlZiQnVxM20xb1dLYWpxYW9uc002dVpVcjZDalhXTlowbDVFM2gzalVSbWE2a1AzTUpJaXkxTG0ra2FoUXE0MU4yaVpqYTVzanRsTFlOWkhackg2cVVHbTR2TWJEcDZSdzJDRm12dXlGa3JCY0N5TXRGcUJhRUNtc0hvSzlCWjJMQS9sSmNScVNhRHFuYVdiclpkR2F6M0RMZ0l2QmxuNHdvR3p0YnlKR3FzbHd4a2hoSHJUalRZRlhDdE9vS1M4dUxkb2ZWZEFiT3lsR1U2bmxZcFhXWnRzNG5YQnE2V3hKaXRNTm9rSFVKbmJuSnBsUW0rYUdwWTJhNUdNVjJRRDFoUnViQlBGS2R1bWY1T0hrTEh6MEY5bHVFNWtqQmpSYTBuRkU1Q1VHcUh3MzJNbWpaNnhrZ0lOVm5TbloxVlpTdEsycUtsUmFMbFFnSzd1VHE3SkZYSndNKzNTT0VLeWhaTkkrdEowSTVxTVl5OWsycUpEN2RWV2RxS1hhMENLTlIwQ2NqZytCMklZdTJmY0JaSlprTUZnTTExcjBYOTJ3aWxnaEZHZ3pWbmV4bHFCN3hMOW1TMjlTaVlVVlkyblhPWmpOQlJzeURzUVBSV1c1aHJaNFhjZEM0SFZXUmJqZ0pyNHNGb2ZLNVN6alE3cmhJMVVlYmRQZEViajZzcUl2VFpRWjV2YTA4ckFCc0FXMFV4ZVd5dEFrN0EyS0o5WnB4ekNpb0IyNFhGdFlBZVhZeHI2YW5TcWhMZ3BwRXFXYkd3THVuVGdyVitJaldsTDI5bGphQWw0RVFNR3NFcnA0YXBlWmlxdXdSWExYQXFPQ2VydTMybW15ZGM2b1dUU1dwRkFHZHplVEI4UlRIVk1FdGxNOTBDYmJRQ1loUGpxM2VnWXIxRkdkWUlRaml1REdaNXpaL0F6b2JLR095THh0aTZjNFJ3dHYyYW55V2xMSUNubExoeEpSWHQ2QTVlYkRCV0ZOT05ieFdaMmQwMm1udTRTOVlFQ3BlcHBWMXpTV1JCV3hIWXpWSXYxQ1hTb3V3cXFYM2pCQkJEWmRZUWJwVFFXNFpRbFM4cjVrSDRzdVNSbWcyKyszSk4xMHgxUGFBbUVrbXRZbEVkZUdwSkVNNmtPdUNxQ1IyMm9TdWpqNUlWMkhkVDB6ajVwckxLVGpYRkFQamRRbHlxN3hJQnhBUVA1eU1jekc0VnhBS3cwbjZpbFoyUUJjZTJwTHVsa3V4eHFub0l6RmZncXlxamlsOVMxVk53QnJGbWV5ZW9wczh5T2paVXliWmRmUzhDdWFUSUp1bXpzNXRPRGFOdExwRkRRL1BjSkd3ZUxobWVMMW5CMEtxaVVEU2NzaVVWRDg5RGkzSHRyS3RTVUx3M1JMaXlnWkQrN3NGOEpUT2JnWXNyR3ZETlVGUkdsMWl5MExsMVlrVWMyYUpZTW9nOTIwSThxVzZZRENnMU1xazBKSEpGS1hrYmdiUnJlSStxcFlOT1pIclZjRFViYTdwanNwaFNKTnRLNnVwZ1JOQVZvT1MwbXVnQmVONGJJWmdIaHVQWi9zMUVOYVg2S3NWcitZTnJoMU5iN2lwUjBQRTV6Yk5SZWdDYnJIUlV3NllmMDdkTEJKbDFmOEtCOWFzMlYxbk5xQXNsNjJMQkJoZWh3YWxlcmtIbUIxSkZJRVpLU0V1c2RsNUpRajFuSmxIWFNDRjM0MmdKOUNZR3JYZWxrbkpJWHFWUDhzRCtxdHBsQ1IzWEgycWZLcTB5Z01wK0tuVmtLeE5sWjhtMllrSWxWTWlDblhVd2w3cXpuQktTdlF6M20zUHQ2b1FiWE81YjVGaXhDaC9mSHhVUVcvQUVjSzZ6Q05xS1FuTDlzeXdxbUt1d3ZxU1l6VC9hUFZOTnBWeWh2UlcyMWFxY2lDc2pkV3ZCd0lMVXZoNVZ5Q3piV29DMXBKako2ODBDV3NsK3VkS0I2VDVSd0cxbWxvaG5scGJnNDdpejVVOWhhMEZHdG1STEZZQnRPOTl5OTdBcDB6K1pEVEFvZzZrU0xac01IZy9JRmtrZ3A2Q3B2VTJVMGNZVlNkbm1randCZE9tWGJ4VFdOV3p1SWJpcE1pb1Z4RWNrWkVvYWhTT2l5Mk0zSzBqY0MxTGhWRHdhcUcwWnZrY1dxQ25yRzRHSXh5a3JxbGJXZHc2TFF5QmFaUjhIbUxSSWhRV3NIc3dENDJaWFZMTmtmOWwrRmxXMEhWUTJsd0ZzQy9aMUZkemxRUjBLYVBmbytGZGZ1Ky9kd1ZSSUN1MUNHUjdBRUlpQWhjK0FaVUYwa09CYVB4bVVxZzRpNjR2UW5VNG5GRFlKOU56KzFmVlh2ZUg5cW1yK2tQSUx4OG9LY1JWL0JGYnhiRTBKTVQwa1NENHc2TC9sTlk4b2NzcWFnVmRVM0EzTWp4aHhjR3VxenNQSDRpcnBhb3cxcTZPeXJWanZwOU5wYzU5RTkxTGxkYm9ZVnpKV2RpbVdmQVcyU05FS2NEYVgyRm1CTExBL3VLeGxtaGg2MTNJczFVUlFBcGJLZnR0d3hMMDJxNk9ueDVwUXhTYlBvakFnK3Y1aEFuTjZMSFZSRFhJc3ZLdFJqaVMwcUpVeVpUQVhWYkFLODJFbEZKV2FRZFZvcVVDMVVudDdCVmFUUXVkTTZTdXFleGpRSk40KzBpY2F4di91dGJLdjgzRVRiVDhIOGdqY09LeE9KbWJVYTZPT1ZYaHQzZEZZNnJIdjlYb056RkxjZUVBMW84K3BLbTBMQUhQSFoycllLakZxMGhmWkZpeHNxSEpnRDNlRDVuK1Uwa2IxbUZqWGtuMmx2TVNTT3NORS9DZElBS0YwU3l0cTZ1ck9IVU41Z3dnNEdab3NnYm1nZ001dWNyYTJxclMySWcxY2JpQkJjeFl6Z3pVRE5MQ3ZMOEdiWlhOcDZPUnkzTG1TK0trODN6UklBSzZBMWlvS2EySTlOYXBJdWlVRmRmQzk3NjZQRlpVdHFVcjZLYldrK3paVTFhL1pySVhFenRyalRPZno3aHdLemlDZVhJYXJhSHRiWklNeisycEdnYXpDbXc0cVdBRnZFZGhvZFlwMFhxMHBWN0cxWVdZV2JPNHFoR3E0MitaOEJZdHJMV3ZsdU5QcFpBZWFGRlMxdnViUGdiZ3hzcWNwbkFhc3pCb3ZLYUZvRFE4Qkd0amZVT2w0TkFHMm5tUVYwNGZlSmd1bXZYMmZzclFFV1pnaEwwSm5WZFlrbjNET1pJZVJOODZScVBXQ21zdkdWcUVNUm53eFFBeHdTOEVNWW8zSXptWTIrQkNjTHA0TUtpdXl1aEltYW1sYlpGY05vTmw3dHArUkhkMThaalFJUkt5WGRGUmhOOTgvaHlLcXdYV05vN08xd2lhWG9ITjEwOFJFWlpXRXE2Z3JuSWZqemVnOGpkUmYxWEVMNGtrWGE1YkJqS3hvS2FsakJqZUhsVnhRNEdheWNwVzRsRE9BS3RuVHhIQXRPZnpPdFp3SEFNN3NxVlhrVjZ5dTZrYXAxbkhrWEtxV0YvNFhIcWplbk5LcUJqcFIzbDFjaDNFamcxK0VzZ2RRaHNkRzBCNEZNOXNXQVZXcHVBeWl3VFBsZVp4dDlWeVpWUzJxWGZSZVdxVEFpbHByOUFwb1dUanh5bWl0N053VjRKVHJpWnlPQTlCMGs3SEZmVUxvdXJtS1lIVm5SUXZxR0w1SE1IZHFGY1IycVdwbWNLNmVUd3gyZGlwV3J2aURpbHIrZktXcTNPV1JXZEhLd0E0ZXU4d2pjaGJlUnpGaWxxampaTjN1ZkNwZmtKMC9zY1ZwbllrNkwwUEk3N2x4ZFdDWjg3V2lXbTdCL0FHcXVRU251akdLc0I4Q0ptaUpxOHExcEtJVld5cU9pVEs2NnIxOEJOOHI3NC9BRTcxZmRDM3lQUzJNeGRPcG5FMXRsVnhEOUptVk9vZ2dOK3I0UGpBWFZGUGEzRWc1alZKR0ZWVUdOb2xIMjBHVnJVQjdCT3lTV3E2V3FZUWRXUjkycGNGTVlNd2NrYlNnQ0tDcUQ2N0RpaVd1MWc4TVFDOUJ5ZmNGcVcxTCtqTDcxNHFOQ3V6bm9TeHQwZGEyZ3RXTjFHOEYwQkswTk4wbnVpbWVsVUY5ZElkQWZqTzQ0VVQzQ2pRTG9VZUxISkZUTzNnbXBSdUlJT3Z3QlFDYnFOZW8zcXRaOWlGNnhWSzEzR1JsbzR6cWltcStDR2RUaVIxdVJZOG9xZ0UwMmhaQmE3OWtaWFBNcXV4UkhLbGEyc2FaV040bVJxWlVqMHZMQ0toa2pLbnFPUUhOdVNaVkpvS3ZBcVMxd3BFcXV2V0RDMUIyeXB3ckNQc1JNRVBWVE9ETUxKTUR2NnFlS1h3aTJKWVY1U3E0cUt5dmdHc0hDTGl1ajJqUjU5VjhnTXFTSjJGSlpSWEVIVlJIajNzRlByY3Q2T3BxbFcxR3BhdFFkdDBHdndmTTZuNjNJbnNHVkZoSkdhQnFncXFJVjZJc1hsbFpneVNQcTRSM2JudDN3aTVjditjTjJ5cVFMVzFUOTVLWVZzV1d0S2s0Y0I5VzUzV1FRZmxRWVI2V2w0SGFKWmp2VkUwRDV5dnErUktnWkNzNXFkQkVQNXNEOTRjQXZRTGxTZ05hU01BdEh4ODhCdU5RNDF6ZEZzWDMwektiY3MwTUxEL2loa3BRemwwd2lUcUtMVGZiS21DbXlZSUNuSzBJYmFpZUM0Q0c5aVN5TFE3Y0lNR1F3YXU2VEtvcTYwQXBsM1dONDBMWnBjYTFDS0tLOVZReXlJRW44dzBGOEY2Q0wyaDhvM2l4R3dDN3M3RVd6Q09xbWNBcFl4WUQ0anNBelZTMHNsMnQ5OHBBN3ZyS29waENWU29uYllwZ0g2bXZTbjI0cFRCVjRzZHRWM0J0TXE1azgyeStJQUR2VUowdUFsa0NWVHhJYVBtK1VOdS9xa1Y0RjFUekhYQ0dyWElBcUl0Qkt5cHFLOTlWdEFPVnM2NE80T2JYN3BITFZDcFlIY1Jtd3ZMUjdUdllBS0JCTjU4TEdWekR1RnoraFFiV2duY1F5Q1pBaytWYnNQU291ZjkzMjYxaVpnbWZDcHdSYkF2cW1TcXJpVTJQd2hqYW9PeVlxdEllZ1ZYVmlUc215dGE2Ykd5U3BZM2d5UnJwSXlBZWFXRER4dHBzWHdLeWFsTURLTlA3WUJYTXFFc2tVc2kydUM4Rk5BUHhBS1RWZlQxbzZWek0wRTBqRisxcldjVXVIdmR5Zzd2Z29GcGxYOEhwdkhwTUNPTVJVUEh6WmtJbnNxbEZLTlgvRUlPNTJFMFN4U3pPd29iMlZtUkxXNUQxWElVMHJiZ00xQXpXZ3lDN2ZlOEc3eFVBSy90YUVCYXQ3bHVxdHlQN0Vtc2FKUU9qNUYrbXJuWmZDdVlDZkJVQVd3U2h5ZDZwTVkvdkFIRzFVcU9ZcGJJL2d5NVQwQ01LbStVTzNnRnVDODVkZ2ZEVmVndVBEZklUcklCTHNMcmNnZGgzQ0ZnRlpqYUtKNEl2M0Y4QU5FcXZ1eFIxdFZLT2dMb0NhMWp4Ym9CQWtqNnY3ai9pY0ZiQTdmNHJmUm5RRExSVmlHMTNpMHZxQlFyWVZxQmJBRFpUMFpwaUhvU3p2UXBvcEtJRlMzc0UxSGZCV2xIWGQwSDdMbkFycXZvdWdNdGxqSEJnWm5oM0Vvei9CS2pMTUw0WjJBcTAraEVKcjlqYVZVQmJ2TnpDSVVpcm9DN0FXbW1GdzRvNUFLM010QjVWeXBaTVNGZ3MwNUp5R1Z3bHdCcXNFR0FBYTJaVTFDalVleFhHc0U0cktyaWlsQnZGek9LS28zQXVBcm9FNlFGUVUzdThZcE5Yd1M1aysxVFp0NVVyd291TjRLaVVFdytrM1pXRHAxUlhITlJxWGIyMVRzMzk5NDV5WlNnM1ZuWkZOUTlDRjNYZVp5cjVEZ0JYS2l3Q01hMk14ZVREWVhnUDFGc2Y5UU5LWmMwazgxUkprM3I2RVEzckNtQlZ5TEw3NUVqWjFwSVZESG9GdGlPQUhvQjBCZFRWeWxxQnNLS0tTK0FlQlhKVkxZK0NYQVN1R3ZPL0F1cTdHdUVqRGZHS2cxb0thMXovZG1taTlJOVNVR05obDBBdGZ1bEhBYXdvWXJuU2ttTlhBVnVHRWhyRVZYdlVGK0E1Q3QyUHFOT2pEZXR5bmE0Q21lVW9sbWVYTE40QXE3QzVTajEwUTd5amdsK3Q2Q054U1JIbUk1WCtDcHdyZVlCM1FmZHFuYTRxMjFLZEJ1YzRHb1pzbjQ5Wk9PaVZpbndIcUs5V3pqdmdld2VFaDJBVTUrdnR4WjlDZDlXcWtoNDlWMThFNW9qNnZWeW4wUlN0QXlHSU81ZWRYUktkNUIwVkdWWHEyeXIzeFlwKzVVdCtDNFFKNFAxTjMzOXBRTWpSZWpqNHZiL0RjcjZyUWMzTy8wcmptdFpwZVlDQmlDSGZDZW1SYk5oYksvcE5VUGMzd2ZLeTVmMkQ3T2xMMy91UGh2ZS9vVTRUMEY4ZitWTk0ydnlvaXYwaksrS0hRZmRIcSswYm5jejRvejczLytZNkxiS3cxby81QjdlT2YxUmwvMGR1OUI5dG4vOWJ2cmYvait2MGg2dHRuMnRwL3IvNDgxOXk0L3p2NTM5MXV2enpmd0RpZno2cGhUMU1QZ0FBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTMwcHg7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZTttYXJnaW46M3B4IC0zcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzoxcHggMXB4IDVweCAjMzMzO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTVweDt0ZXh0LWFsaWduOmNlbnRlcjt0b3A6LTVweDt3aWR0aDoxMHB4fS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3M6YmVmb3Jle2JvdHRvbTozLjVweDtjb250ZW50OiJ4IjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0nXSxlbmNhcHN1bGF0aW9uOjJ9KSxoMy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6ZzN9XSxoMy5wcm9wRGVjb3JhdG9ycz17ZGlhbG9nRWxlbWVudDpbe3R5cGU6WmEsYXJnczpbImRpYWxvZ1BvcHVwIix7c3RhdGljOiEwfV19XSxodWVTbGlkZXI6W3t0eXBlOlphLGFyZ3M6WyJodWVTbGlkZXIiLHtzdGF0aWM6ITB9XX1dLGFscGhhU2xpZGVyOlt7dHlwZTpaYSxhcmdzOlsiYWxwaGFTbGlkZXIiLHtzdGF0aWM6ITB9XX1dLGhhbmRsZUVzYzpbe3R5cGU6d3ksYXJnczpbImRvY3VtZW50OmtleXVwLmVzYyIsWyIkZXZlbnQiXV19XSxoYW5kbGVFbnRlcjpbe3R5cGU6d3ksYXJnczpbImRvY3VtZW50OmtleXVwLmVudGVyIixbIiRldmVudCJdXX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGgzLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImNvbG9yLXBpY2tlciIsdGVtcGxhdGU6JzxkaXYgI2RpYWxvZ1BvcHVwIGNsYXNzPSJjb2xvci1waWNrZXIiIFtjbGFzcy5vcGVuXT0ic2hvdyIgW3N0eWxlLmRpc3BsYXldPSIhc2hvdyA/IFwnbm9uZVwnIDogXCdibG9ja1wnIiBbc3R5bGUudmlzaWJpbGl0eV09ImhpZGRlbiA/IFwnaGlkZGVuXCcgOiBcJ3Zpc2libGVcJyIgW3N0eWxlLnRvcC5weF09InRvcCIgW3N0eWxlLmxlZnQucHhdPSJsZWZ0IiBbc3R5bGUucG9zaXRpb25dPSJwb3NpdGlvbiIgW3N0eWxlLmhlaWdodC5weF09ImNwSGVpZ2h0IiBbc3R5bGUud2lkdGgucHhdPSJjcFdpZHRoIiAoY2xpY2spPSIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPlxuICA8ZGl2ICpuZ0lmPSJjcERpYWxvZ0Rpc3BsYXk9PVwncG9wdXBcJyIgY2xhc3M9ImFycm93IGFycm93LXt7Y3BVc2VQb3NpdGlvbn19IiBbc3R5bGUudG9wLnB4XT0iYXJyb3dUb3AiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IihjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEiIGNsYXNzPSJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIgW3NsaWRlcl0gW3JnWF09IjEiIFtyZ1ldPSIxIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09Imh1ZVNsaWRlckNvbG9yIiAobmV3VmFsdWUpPSJvbkNvbG9yQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydChcJ3NhdHVyYXRpb24tbGlnaHRuZXNzXCcpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZChcJ3NhdHVyYXRpb24tbGlnaHRuZXNzXCcpIj5cbiAgICA8ZGl2IGNsYXNzPSJjdXJzb3IiIFtzdHlsZS50b3AucHhdPSJzbGlkZXI/LnYiIFtzdHlsZS5sZWZ0LnB4XT0ic2xpZGVyPy5zIj48L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz0iaHVlLWFscGhhIGJveCI+XG4gICAgPGRpdiBjbGFzcz0ibGVmdCI+XG4gICAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZC1jb2xvci1iYWNrZ3JvdW5kIj48L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQtY29sb3IiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0ic2VsZWN0ZWRDb2xvciI+PC9kaXY+XG5cbiAgICAgIDxidXR0b24gKm5nSWY9ImNwQWRkQ29sb3JCdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Int7Y3BBZGRDb2xvckJ1dHRvbkNsYXNzfX0iIFtkaXNhYmxlZF09ImNwUHJlc2V0Q29sb3JzICYmIGNwUHJlc2V0Q29sb3JzLmxlbmd0aCA+PSBjcE1heFByZXNldENvbG9yc0xlbmd0aCIgKGNsaWNrKT0ib25BZGRQcmVzZXRDb2xvcigkZXZlbnQsIHNlbGVjdGVkQ29sb3IpIj5cbiAgICAgICAge3tjcEFkZENvbG9yQnV0dG9uVGV4dH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9InJpZ2h0Ij5cbiAgICAgIDxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsPT09XCdkaXNhYmxlZFwnIiBzdHlsZT0iaGVpZ2h0OiAxNnB4OyI+PC9kaXY+XG5cbiAgICAgIDxkaXYgI2h1ZVNsaWRlciBjbGFzcz0iaHVlIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3N0eWxlLmRpc3BsYXldPSIoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxID8gXCdibG9ja1wnIDogXCdub25lXCciIChuZXdWYWx1ZSk9Im9uSHVlQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydChcJ2h1ZVwnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoXCdodWVcJykiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJjdXJzb3IiIFtzdHlsZS5sZWZ0LnB4XT0ic2xpZGVyPy5oIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICN2YWx1ZVNsaWRlciBjbGFzcz0idmFsdWUiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbc3R5bGUuZGlzcGxheV09IihjcENvbG9yTW9kZSB8fMKgMSkgPT09IDIgPyBcJ2Jsb2NrXCc6IFwnbm9uZVwnIiAobmV3VmFsdWUpPSJvblZhbHVlQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydChcJ3ZhbHVlXCcpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZChcJ3ZhbHVlXCcpIj5cbiAgICAgICAgPGRpdiBjbGFzcz0iY3Vyc29yIiBbc3R5bGUucmlnaHQucHhdPSJzbGlkZXI/LnYiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgI2FscGhhU2xpZGVyIGNsYXNzPSJhbHBoYSIgW3NsaWRlcl0gW3JnWF09IjEiIFtzdHlsZS5kaXNwbGF5XT0iY3BBbHBoYUNoYW5uZWwgPT09IFwnZGlzYWJsZWRcJyA/IFwnbm9uZVwnIDogXCdibG9ja1wnIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09ImFscGhhU2xpZGVyQ29sb3IiIChuZXdWYWx1ZSk9Im9uQWxwaGFDaGFuZ2UoJGV2ZW50KSIgKGRyYWdTdGFydCk9Im9uRHJhZ1N0YXJ0KFwnYWxwaGFcJykiIChkcmFnRW5kKT0ib25EcmFnRW5kKFwnYWxwaGFcJykiPlxuICAgICAgICA8ZGl2IGNsYXNzPSJjdXJzb3IiIFtzdHlsZS5sZWZ0LnB4XT0ic2xpZGVyPy5hIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9ImNteWstdGV4dCIgW3N0eWxlLmRpc3BsYXldPSJmb3JtYXQgIT09IDMgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iY215a1RleHQ/LmMiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25DeWFuSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iY215a1RleHQ/Lm0iIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25NYWdlbnRhSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iY215a1RleHQ/LnkiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25ZZWxsb3dJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8uayIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkJsYWNrSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImNteWtUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8ZGl2PkM8L2Rpdj48ZGl2Pk08L2Rpdj48ZGl2Plk8L2Rpdj48ZGl2Pks8L2Rpdj48ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PVwnZGlzYWJsZWRcJyIgPkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEgIiBjbGFzcz0iaHNsYS10ZXh0IiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMiA/IFwnbm9uZVwnIDogXCdibG9ja1wnIj5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMzYwIiBbdGV4dF0gW3JnXT0iMzYwIiBbdmFsdWVdPSJoc2xhVGV4dD8uaCIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkh1ZUlucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImhzbGFUZXh0Py5zIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uU2F0dXJhdGlvbklucHV0KCRldmVudCkiIC8+XG4gICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImhzbGFUZXh0Py5sIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uTGlnaHRuZXNzSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhzbGFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+SDwvZGl2PjxkaXY+UzwvZGl2PjxkaXY+TDwvZGl2PjxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIj5BPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHzCoDEpID09PSAxICIgW3N0eWxlLmRpc3BsYXldPSJmb3JtYXQgIT09IDEgPyBcJ25vbmVcJyA6IFwnYmxvY2tcJyIgY2xhc3M9InJnYmEtdGV4dCI+XG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjI1NSIgW3RleHRdIFtyZ109IjI1NSIgW3ZhbHVlXT0icmdiYVRleHQ/LnIiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25SZWRJbnB1dCgkZXZlbnQpIiAvPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uZyIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkdyZWVuSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjI1NSIgW3RleHRdIFtyZ109IjI1NSIgW3ZhbHVlXT0icmdiYVRleHQ/LmIiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25CbHVlSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09InJnYmFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+UjwvZGl2PjxkaXY+RzwvZGl2PjxkaXY+QjwvZGl2PjxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09XCdkaXNhYmxlZFwnIiA+QTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8wqAxKSA9PT0gMSIgY2xhc3M9ImhleC10ZXh0IiBbY2xhc3MuaGV4LWFscGhhXT0iY3BBbHBoYUNoYW5uZWw9PT1cJ2ZvcmNlZFwnIlxuICAgIFtzdHlsZS5kaXNwbGF5XT0iZm9ybWF0ICE9PSAwID8gXCdub25lXCcgOiBcJ2Jsb2NrXCciPlxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8aW5wdXQgW3RleHRdIFt2YWx1ZV09ImhleFRleHQiIChibHVyKT0ib25IZXhJbnB1dChudWxsKSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkhleElucHV0KCRldmVudCkiLz5cbiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWw9PT1cJ2ZvcmNlZFwnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJoZXhBbHBoYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz0iYm94Ij5cbiAgICAgIDxkaXY+SGV4PC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbD09PVwnZm9yY2VkXCciPkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDIiIGNsYXNzPSJ2YWx1ZS10ZXh0Ij5cbiAgICA8ZGl2IGNsYXNzPSJib3giPlxuICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJoc2xhVGV4dD8ubCIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblZhbHVlSW5wdXQoJGV2ZW50KSIgLz5cbiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT1cJ2Rpc2FibGVkXCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJoc2xhVGV4dD8uYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9ImJveCI+XG4gICAgICA8ZGl2PlY8L2Rpdj48ZGl2PkE8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fMKgMSkgPT09IDEiIGNsYXNzPSJ0eXBlLXBvbGljeSI+XG4gICAgPHNwYW4gY2xhc3M9InR5cGUtcG9saWN5LWFycm93IiAoY2xpY2spPSJvbkZvcm1hdFRvZ2dsZSgtMSkiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0idHlwZS1wb2xpY3ktYXJyb3ciIChjbGljayk9Im9uRm9ybWF0VG9nZ2xlKDEpIj48L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9ImNwUHJlc2V0Q29sb3JzPy5sZW5ndGggfHwgY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9InByZXNldC1hcmVhIj5cbiAgICA8aHI+XG5cbiAgICA8ZGl2IGNsYXNzPSJwcmVzZXQtbGFiZWwiPnt7Y3BQcmVzZXRMYWJlbH19PC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPSJjcFByZXNldENvbG9ycz8ubGVuZ3RoIiBjbGFzcz0ie3tjcFByZXNldENvbG9yc0NsYXNzfX0iPlxuICAgICAgPGRpdiAqbmdGb3I9ImxldCBjb2xvciBvZiBjcFByZXNldENvbG9ycyIgY2xhc3M9InByZXNldC1jb2xvciIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09ImNvbG9yIiAoY2xpY2spPSJzZXRDb2xvckZyb21TdHJpbmcoY29sb3IpIj5cbiAgICAgICAgPHNwYW4gKm5nSWY9ImNwQWRkQ29sb3JCdXR0b24iIGNsYXNzPSJ7e2NwUmVtb3ZlQ29sb3JCdXR0b25DbGFzc319IiAoY2xpY2spPSJvblJlbW92ZVByZXNldENvbG9yKCRldmVudCwgY29sb3IpIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9IiFjcFByZXNldENvbG9ycz8ubGVuZ3RoICYmIGNwQWRkQ29sb3JCdXR0b24iIGNsYXNzPSJ7e2NwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3N9fSI+e3tjcFByZXNldEVtcHR5TWVzc2FnZX19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9ImNwT0tCdXR0b24gfHwgY3BDYW5jZWxCdXR0b24iIGNsYXNzPSJidXR0b24tYXJlYSI+XG4gICAgPGJ1dHRvbiAqbmdJZj0iY3BDYW5jZWxCdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Int7Y3BDYW5jZWxCdXR0b25DbGFzc319IiAoY2xpY2spPSJvbkNhbmNlbENvbG9yKCRldmVudCkiPnt7Y3BDYW5jZWxCdXR0b25UZXh0fX08L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9ImNwT0tCdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Int7Y3BPS0J1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSI+e3tjcE9LQnV0dG9uVGV4dH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4nLGVuY2Fwc3VsYXRpb246SG4uTm9uZSxzdHlsZXM6WycuY29sb3ItcGlja2Vyey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzc3NztjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjIzMHB4O3otaW5kZXg6MTAwMH0uY29sb3ItcGlja2VyICp7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowfS5jb2xvci1waWNrZXIgaW5wdXR7Y29sb3I6IzAwMDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjZweDttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDowfS5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei1zdWJtaXQtaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0Oi1tb3otdWktaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lfS5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0uY29sb3ItcGlja2VyIC5hcnJvd3tib3JkZXItc3R5bGU6c29saWQ7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDt6LWluZGV4Ojk5OTk5OX0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3B7Ym9yZGVyLWNvbG9yOiM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHg7dG9wOi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1sZWZ0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O3JpZ2h0Oi0yMXB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtcmlnaHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7bGVmdDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtyaWdodDotMjFweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2xlZnQ6LTIwcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5jdXJzb3J7Ym9yZGVyOjJweCBzb2xpZCAjMjIyO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpkZWZhdWx0O2hlaWdodDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAuYm94e2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjRweCA4cHh9LmNvbG9yLXBpY2tlciAubGVmdHtwYWRkaW5nOjE2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb2xvci1waWNrZXIgLnJpZ2h0e2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxMnB4IDhweH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYXtwYWRkaW5nOjAgMTZweCAxNnB4O3RleHQtYWxpZ246cmlnaHR9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWEgYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYXtwYWRkaW5nOjRweCAxNXB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtbGFiZWx7Y29sb3I6IzU1NTtmb250LXNpemU6MTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czoyNSU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE4cHg7bWFyZ2luOjRweCA2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1lbXB0eS1tZXNzYWdle2ZvbnQtc3R5bGU6aXRhbGljO21hcmdpbi1ib3R0b206OHB4O21hcmdpbi10b3A6NHB4O21pbi1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBkaXZ7Y2xlYXI6bGVmdDtjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGRpdjpmaXJzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBpbnB1dDpmaXJzdC1jaGlsZHtmbGV4LWdyb3c6MzttYXJnaW4tcmlnaHQ6OHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3h7cGFkZGluZzowIDhweCA4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdntjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjE7ZmxvYXQ6bGVmdDttYXJnaW46MCA4cHggMCAwO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmh1ZS1hbHBoYXthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTozcHh9LmNvbG9yLXBpY2tlciAuaHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a1VGV2JDQ0FBQUFGeEpSRUZVYU43dDBrRUtnMEFRQU1FMng4My9uMnF1NXFDZ0QxaURoQ29ZZHBuYlFDOWJiWTFxVk8vanZjNmszYWQ5MXM3LzdGMS9jc2dQcnVqdVExN0JEWVNGc0JBV3dnSmhJU3lFQmNKQ1dBZ0xoSVd3RUJZSWkyZjdBci8xVENnRkgyWDlBQUFBQUVsRlRrU3VRbUNDIik7ZGlyZWN0aW9uOmx0cn0uY29sb3ItcGlja2VyIC5odWUsLmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTZweDttYXJnaW4tYm90dG9tOjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQ1RrbEVRVlI0MnUzU1lVY3JBQmhBNFUyU2ttUkpNbVdTSmtsS0ppV1pacEtVSkpza0tVbWFURkltS1pPVXpNeVNwR1JtbGlSTkppbEpTcEtTSkV0bVNwSXBtV21TZE83MzYvNkQreDdPUDNnVUNvV0N2MWNxbFNRbEpaR2NuRXhLU2dxcHFhbWtwYVdSbnA1T1JrWUdtWm1acUZRcXNyS3l5TTdPSmljbmg5emNYTlJxTlhsNWVlVG41NlBSYUNnb0tLQ3dzSkNpb2lLMFdpM0Z4Y1dVbEpSUVdscEtXVmtaNWVYbFZGUlVVRmxaaVU2bm82cXFpdXJxYW1wcWFxaXRyYVd1cmc2OVhrOTlmVDBHZ3dHajBVaERRd09OalkwME5UWFIzTnhNUzBzTHJhMnR0TFcxMGQ3ZWpzbGt3bXcyMDlIUlFXZG5KMTFkWFhSM2Q5UFQwME52Ynk5OWZYMzA5L2N6TUREQTRPQWdGb3VGb2FFaHJGWXJ3OFBEakl5TU1EbzZ5dGpZR0RhYmpmSHhjU1ltSnBpY25HUnFhZ3E3M2M3MDlEUXpNelBNenM0eU56ZkgvUHc4RG9jRHA5T0p5K1hDN1hhenNMREE0dUlpUzB0TExDOHZzN0t5d3VycUttdHJhM2c4SHJ4ZUx6NmZENy9mei9yNk9oc2JHMnh1YnJLMXRjWDI5amFCUUlDZG5SMkN3U0M3dTd2czdlMnh2Ny9Qd2NFQmg0ZUhIQjBkY1h4OHpNbkpDYWVucDV5ZG5YRitmczdGeFFXWGw1ZGNYVjF4ZlgzTnpjME50N2UzM04zZEVRcUZ1TCsvNStIaGdYQTRUQ1FTNGZIeGthZW5KNTZmbjNsNWVlSDE5WlZvTk1yYjJ4dnY3Kzk4Zkh3UWk4V0l4K044Zm42U1NDVDQrdnJpKy91Ym41OGZmbjkvK1ZjS2dTV3dCSmJBRWxnQ1MyQUpMSUVsc0FTV3dCSllBa3RnQ1N5QkpiQUVsc0FTV0FKTFlBa3NnU1d3QkpiQUVsZ0NTMkFKTElFbHNQNC9XSDhBbUo1WjZqSFM0aDhBQUFBQVNVVk9SSzVDWUlJPSIpO2RpcmVjdGlvbjpydGx9LmNvbG9yLXBpY2tlciAuYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdZUWxaTWEzZ0FBQVdWSlJFRlVhTjd0bUVHTzZqQVFSQ3NPQXJIZ0JweUFKWUdqY0dvY3hBbTRBMklIcG1vV0UwZUJIK2V6bUZsTnZVMDZzaEozVzZWRWVsV01VUUFJSUY5ZjZxWnBpbXNBMUxZdFMydUY1MS91MjdZVkFGWlZSVWtFb0dIZFBWL3NJY2JJRUlJa1VkSS85WGE3bmV5djYxK1NXRlVWQVZDU2N0MDBUV24yZnY2dTMrRWNmZDN0WHp5LzArbkVVdStTUGpvL2txenJtaVFwU2NONnY5OFhld2ZBOC9sTWtpTEoyV3hHU1VvcGNUNmZNNlUwTlg5L2ZyZmJqZXYxV3RmcmxaZkxoWWZEUVFIRy9BSU9sbkd3aklObEhDeGpIQ3pqWUptL1RKV2RDd3F1SlhzZUZGekd3RE5OZWlLTU9KVE84eFFkRFFhZUIyOStLOWVmZUxhQm85Sjd2ZHZ0SmoxUmpGRmpmaXY3cXY5NXRqeC83bGVTUWdoOTNlMWZmTWVJcDZPK1lRamhvL043OTF0MVhWT1NTSTdOLy9LKzQvR294V0xCeCtQQjUvT3A1WExKKy8zT2xKSldxeFUzbTgzb3Z2NWlHZjhLallObEhDeGpIQ3pqWUJrSHk1Z2Y1Z3VzdlFVN1UzN2pUQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5e2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQWdDQVlBQUFBZmZDanhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUNld0FBQW5zQjAxQ08zQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJQVNVUkJWRWlKN1pZOWF4UlJGSWFmc3hNU3RyTFFKcEFncEJGaGkrQzl3MVlTbzAwSTZSWi9nOXZacEJmL1FPcjRHeVJna1NLTlNyQWFkc1pxUUd3Q2t1QVd5UlpKc3lTd3ZoWjdOL3ZoenJnYkxIM0xkODU5N2pseno1MHpKb2t5eFhIOERxRFZhcjBxaTZ2OEJiSXRxU0dwRWNmeGRsbXNGV1hrdlg4QWZBVldnM1VLUEVuVDlHS3VqTXpzQUZnWnNWYUNOMVZUUWQ3N1hVbnJnRTFrdis2OTM1MjY4V1JwenJuSFp2WVJXQzdZdkMzcFJaWmwzd296cXRWcWl5SDlJZ2pBc3BrZDFHcTF4VUpRdFZyZEI5WktJQU90aGRnL1FjNjVMVWs3d05JTW9DVkpPODY1cllGaGtxalg2L2Q3dlY0R1BKd0JNcW9mVVJTNUpFazZGWUJlci9lZVliL01vOVd3Rm5QT3ZRYmVBdmZ1QUFLNEJONHNBSnRBRy9nSklFbG1OdWlKeWJhM0VHTm1aaVBlWnVFVm1WZWxsL1kvNk4rQ3pEbjNBWGhFT09vN0h2LzNCZUF6OEl6UWtNUG5KYnVQeDF3Qyt5WUo3LzBuWUlQNVMvMEZIS2RwK3J3Q0VFWFJTL3JmNUhsMUd0YjJNMGlTcENPcENaelBBVG1YMUV5U3BITUxBc2l5N01qTURvSHJHU0RYWm5hWVpkblJ3Qmg3SjkxdXR3bWN6QUE2Q2JHM0dnUGxlWDRqcVVIL2ExQ2t0cVJHbnVjM2hTQ0FNQjMyZ0tzcGtDdGdiM0tDUU1ta2plUDRXTkpUaHJOTlp2YWwxV3B0VElzdjdKdFE0dG1JZFJhOHFTb0VwV2w2WVdaTm9BTjB6S3haTlBlaHBMU0JadjJ0K1EwQ0o5bExuQVJRTEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjhweCAxNnB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEycHg7dG9wOjIxOHB4O3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3kgLnR5cGUtcG9saWN5LWFycm93e2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDtsZWZ0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFoMGxFUVZSWVIrMlcwUWxBTVFnRDYwemRmd09kcWE4VG1JL3dRTXI1SzBJNWJaTEl6TE9hMm50MzdWVlZiZCtkRHg1b2JnQ0MzS0JMd0oyZmY0UG5WaWRrZit1Y0lodzgwSFFhQ0xvM0RNSDNDUkszaUZzbUFXVmw2aFBORHd0OEV2TkU1cStZdUVYY01na29uVk02U2R5Q29FdkFuWjh2MUhqeDgxN01pbG14U1VCNXJkTEpEeWNaZ1VBWlVjaC9BQUFBQUVsRlRrU3VRbUNDIik7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zYXR1cmF0aW9uLWxpZ2h0bmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPWUFBQUNDQ0FZQUFBQlNEN1QzQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tzUFdSNmxnQUFJQUJKUkVGVWVOcnRuVnVUNDdnUnJBSE4rUC8vT3IvNjFZNXdPTlo3bVoxdTNYQWVMTWpKWkdaVmdkS3NmYzV4UjNTMFJJSVVXK0NIekNwYzJNY1lvN1hHdjNleDdVaVpkNTdyanl6enYrdiszM1gvUi8rM3IvZjd2UjM4NlkrVHZLTmNmL3dkaFRMUGN2OXFVMndaZDc0dXRoMHQxODIxamtJWkxQY3NJLzZuV2E0WHZ1dHF1VTBaODVtbng4MFMvWnpncG5Mbk90SE50Ny9vZngxVEtYY1NOek4vN3FiTVEzanU3ck5RbU1ZWWQvNHMyajlhYStQK2dHYU1jWnJiMU0vdGRydmY3L2Qydjk5UDkvdDkzTy8zY2J2ZHh1MTJHOWZyZFZ3dWwzRStuOGMvLy9uUCsyKy8vWGI2NmFlZnhsLy8rdGZ4NXovLzJZSzVBbDJyZ3ZmNFVzYnBkR3JCNTJiQXZBclhwdXpqbWlxQVZTR3o1ZURtR1lYemhiQVptQ3JubXpkZHBVVSs4WTFkQU9ZZVhDdERVd1Z3VjdZQ0dINnVBbXlNY1o5bDV2a1VhQlBHTVVaNy9KNXcvNzkyL2Z2djlYcTkzMjYzZHIvZlR4UEVDZU1FOG5LNWpNL1B6L0hUVHovZHYzMzdkdnJsbDEvR1AvN3hqL0czdi8xdC9PVXZmd2tWc3dvbmdqZE9wOVB6SDNVM0Qzem1XR25aVlhuNGpDcXM3d0MyQktQNC84dEF6a1pzb1d4NlhycWVIWnltdnA0QUJDQkpoVFF3S2ZEVDhnenJaQ0lxaTVBaGlBQ2pCZkVCMnJQOC9YNjNNTTdmNi9WNnY5L3Y3WGE3YllDODNXN2pjcmxzVkhJcTVmZnYzMCsvL2ZiYitPV1hYOFpQUC8wMC92NzN2NCtmZi83NUpTdmJldStiTDJXTU1hRmJBbHBCTk04NVFYK2N0NnFvU3FrUEF3dVFsQlZLcUdORlNVT0FBM0JtdTdnQzVoTk9kMTVuU3d2QU9VVzdDNGdpVUNWOFNnbjVMOWhORklxVHNwMEd4STB5c2lveWpBamtZL3RHSlZFcHorZnorT1dYWCs3ZnYzOC8vZjc3NytQYnQyL2oxMTkvSFQvLy9QUDQ5ZGRmeDhmSFJ3cm1UalY3NzlFWHUycHgyeGhqd3RkSlpRY0FXUUlQTFBJU3NNSmFTd2lEOGd6SUtyd1N5QVRFNWo1bkFiUjVjMWRCVXdCbHNFV1cwaDZMcWlZc3FGUEFReEN5Ulozd09TQVJ4bWxYTVg1azY0cFFmdnYyN2Y3NStkaytQajVPSHg4ZjQvdjM3K1BidDIvanQ5OStHOSsrZlJzZkh4L2pjcm1VRkxPMzFnWURXYmx4UklzL1RxZlQ3b3VzeEpzQXhYQTJHYzdUQTlYZGdmZG9IYkZzajc2WDIrMVdBcmdJMWFnZUd3QTNxdXBxb0hzbWNiSTZGdTkzcXVnZ0ZhOWQ3TGVEdGdLZkFGSEJKK05FQnlJa2NKNUtlcnZkVG1oaEdjZ0pKU1o1dm4vL2ZqK2Z6KzE4UHA4K1B6L0g1K2ZubUdEKy92dnY0L3YzNytQajQyTjhmbjZPMisxV3M3SmpqUDZ3cmFNSTVFNFJaOHgydlY1VFN3a3F1b3RWNy9kN1R6NkhGV3NEL3FOY2R3MENRM3EvMzIxYzY4NlR3RFZJZGJ1eTczek5sZGhTSGI4STJrbFp6bm0rSW5CUzRVNm4wMzAyYUJGc0xoSERBS0pWSlZnbGZJOWpodnU1M1c1M3NMQU5ZTnhBaURBNk1DZVVIeDhmOSt2MTJpNlhTN3RjTHFjWlc1N1A1eWVZOC9mejgzT2N6K2Zuc1NtWVV5a25XRUc4NVdCc3Q5c3R6U0x5TWRmcjlRaTA4aVkxNVVaMExsREdMaFIzbzV6SzJqN09QVVREMEUrblUzdGs3WGIvMTZORmJobG9BTXVZMXpqTFVPTzNCS2VJRGUrWjhzMy9KNGdGbzRUTTVqUG11UmcyOGZvVUtLVlN3bzE2VGdBNW5weXdjV0xIZ1lsL1B6OC83My82MDUvYWI3LzkxbTYzVzd0Y0xpZTBzWmo0bWFvNWdUeWZ6ODhFMGYxK2o4RWNZendUUEVHMmNxanlmSE5GME04ZnVxRWlhT1ZuUnpaWlFOaDVmd1F5SGcvSERHZkpvODlRMXpiL3F1dTVYQzY3NzNJMlhLZlRxZC92OStkM3d1cVd2YS9ZVGRVZEVWM2ZoSXYvVml5cHM2WUUzeDNyNDNLNWJKUVM2NnpheFZHRnN2ZCsvL2o0YUYrL2ZtM2Z2Mzl2dDl1dGZmMzZ0ZjMrKysvdGRydWR2bjM3WnVOTEJhYUNNZ1V6QytyWlJpRm93eFV1Skk4WU1xY0NwOU9wcTV2YWdhWVU2bEdKQTFYUXFlamNodzZDajBHdzVuWUJyR3cwMUEyTzIwNm4wNEJHb3VOTnlUZnAvRndFbGhVZXk2blhySUt3N1FRV2RkeHVOMmxkTDVmTDgzOWdTUEY4YWh1L0p2Qk80OENQU3VxTWY4VnA5L1A1M0w1OCtkTHU5M3M3bjgvdGZyOC8zOS92OS9iNStUa2hQSjNQNTZtUTQzNi9qKy9mdisvaVNnYnplcjArQVp4LzUrODhidjZPTWRhNlM1ejZrZDIxZllDOWR4djdjSUpKMmQ5QU9TMzBmUE16eUhpVE04QjRERjZYVWxZSHA0S1FXM1crMXQ3N01OQjF2R0h4V3E3WGE3dmY3OCt5NS9ONUErSDFldDI5eHVQNWRiWXR5YVJ1NEFrc2JQcTY5MzZmalJ6WFJ4QmJQci9iK2IxOCtmS2xqVEhhQkJCZm44L24wLzErSDErK2ZCbm44em0wc0I4Zkg1dTRjcjVHdUJoTVZrMEVFbjlSc2N0Z1ZoTStpeGxKdE1BMjNSOEI2eXlzQXN0Qk9nRlhJS0tDTUlnVG9NcU5FdTJmWU1IN3p0YzczMmRRS2tDajF5dEFadFkwS3g4cElyOEdHSitBVDNWKzJIaXJobCsrZkJtWHkyV3o3M3crYjE3UDhwK2ZuOC90VXdHVmxlVmtUeVViNjhEa2ZheVdZNHp4TlJpaFU0RXBMSlBaVnJLK3U3SjQvbWdmS3FlTFc5WDJSRVdsSXRMMWRpeW5iRERiMytqWGdZalFxbjBycnhXYytOa0lMUDdGN3hJYk12eDd2VjUzeDQweG5sYldKRjEyWlNhZy9OMHBXNnQrWnptT016SGphakt3RGZvbmQ3OHpZVGRmcTE4dXA5N3pyMnE4djNJaW9CcHJSdEJsMEVaOW9nNVdCUkdPZE9IaklqWEY3VW90RmJnT1duWHpJSnl6WXZqRzVJWWdzbU1PeEhrejhPc01TclZOV2VxNVQ4RGFPY2JFdjFPZDVyYnM5YU83WXZNZXQ2M0VrRisrZk1FeHErTVJsNC9MNWJMWk4vK2V6K2ZuWjZLYXp1TXFYU1FWTzVzcEpYZmxIQUl6ZXMveEpzZWNrUkppRE1vZzlkNlZmUnJxWE1yNktwVlYyN2pSd0phY0dvdk9BTTF6TWRRTW53SzFBdWJLNjNrZENDaHZJMUM3ZzB6OW5mL0QrWHplMlZqOEg3R3g0UDlkdVFsc1lDcnF5TjhYcUczSG0vMTBPajNqdy9uK2NybHN0dU0ralBtbXhUMmRUdVB6ODNQenQycG4xWHNFSFgvYm5QYVZxVm1oMHh3T3QwbzZYTExBSGVQVVUyMDN3SGZjcnNwQ3dtVjNUcnlCNXMwTXNlZWc5N3gvQnd6Q2pCbGJCK3BSQVBsYTBCVlF1VDZWNlFIZEJsajNkMEtHMTQ3YitEcXhRZVV5bURPNDNXNGRRYXIrVElqd21BZDB6OC9oNjV2ZjAveUx2M1BiNVhMcHJ1L3lkRG85czdFVDBJK1BqNmRLSzlWVUVJZUtXUVdQQU9ySjhMS2Q0dkUrdDkxWTNlN1VGbFdhdGcyVndKbmIrSFBtdHZtL3NmSzU5L09hV0YzeC9lUDFVUEh2QTVERFlEcFlYZmIwZHJ2MVYyRGtCa3h0dy90RVdWVmxYV2RDOXBGWXM1L2pmaDlkUy8xNnZXN3M2bFRHK1RmcXN4U0pIeGtYWHEvWGRyMWV1NExzZkQ2UDN2c1QzTjc3RGtMK3pQbTVqU2RLTDR6UjNBeFFkNnJIa0xrWWxTb3dzcnE3em56dTZ3U3dkc01KT1htQTVmQmNqeHRnTUdCWUhscjV6b2todHNNQ1RnWExRT1c0WEM2ZEV5RU1wckw4bUFRelhSZ2R1aXgyeVp6b3J4a1lzRG4zaEIxVmVNTEdzWHNWdGdsMnBXOFMzc3ZrMHZ3N1I0aE5hSHZ2NGNBQ2w1SEZ6d0lIMEtjNnp1NFhqRFBSL2pwQVZ4V3pPMVhrMkREYjN2VGN4ZUdVMWlXWkhrbUlEV3ppV0t2aXJDSjREcmF2czZJSi9HRzZjVHFXZFhEeStmQXJRRFZWa0xxa1ZqQW9aSUlUZG1tSXFYd3FhOTVOMytNR1lvWlFkUlZOTzUzWTF4UmtoTzE2dlk3ZXU1MDdDYTlsSm5iR3B4T2VtUWhTdy9BUXNtbXA1elU5QmlVOEc2d3ZYNzZNNi9VNlBqNCtkbzBCejRDcGdpa25UVWVEcXdsS0JtZzN1NE9WanJaMUErckFjZ2FlaldxNmVKQ3ZDWUZET05Td09nSFg0RVFSdzhseGJ6RE9kRUs2Z1ozSGsxYis4ZzJvMUpGdEtYeXYvZkVkVFh1V2pXWGRBWmlCcDZBRGVEckNGaWltN0I2WkZuZWVJN0d2bS9QTWtVRFg2N1c3eEk4YjBENy92OGRBOXFmTjVvYUNmNzRXWmpIMG1mMWNtZlkxWTBKVUZtVnJUV3U4dXprTmNMdEVqN3U1RlhCVGtmQzZHT0E1cThZTXhPOEtWdkY2c0FWR2RjclVic0tPRGNRS2tMTU9NZG1seHVtNjQyWXJQbTI2QWxoWlcxWUIxUityckdzd0U4VGFZQVdlVU14ZGYrV2p3U3ZaMkVmM3l0T3lmbjUrUHBWUEFhcU9uNDNNdE5CcXZtamp4YmpNNGxaalpZNGdxTk1JNWt0YVcvc1lLTndTKzlsRlF6R2lobU1DS1BhNytaMFY2RWIwR1Jtb2J0cFg4SmxqV3U1Rk1MTjVqYTZoRzlrd1FnWnFmNSsxTkg1VXh6a0ZSZUNkV2hKOFhkbEdVa3hPN0hSbFlSbTRtVk80M1c3dGVyMTJUUEpFdy9ybUVOM0w1U0tISVdaZzlteitwVW9LT1lxNWJKVEpkWDJnbWUxVWN4TVpRRmFFUUlsSGN0MzJNK1kxQnpHa0d1emZpeUFOOXordWdwbFoxc3ltQ3JEQ1lZa0d4RFRwSTlSekJ5MHJIeWVEVUMxbldhZVVhRDluNHhrTnlZTUJEWnR6WjNCKytmSmxZMjFYRkRPY0FSSmxhYk95aVMzdUNwTEk5anJaakNEa2FWdmNDQ2p3b2duS1NoV2R6WFpXbFpNdlZUZ0Q4THBxbENMcnFnYmNCK3FZd3JnS1lwVDBjY0NxYkt5Q1ZhbGtFYWJuL0Z5bm9nQ3JQS2ZxZjUxeEo3c0dCMlpYY1pteG9TT3p0angzMDBEWmk3YTAvMkFJUjBVbEJhZzlTdUR3NktjQXpsYUI3dkhadldwaks5MGR5cnE2Ykt5RFVaUWJSMEIwNWJpTFFrSEljU1VtZ0lLK1N3dXFnSENub2lvMlJRVTF5aitCbkJ5OXBwaFZLTEd5QzdaekZLMXB4V0srRThJaFZDV0xOL3VMdG5VVTRheW9ZTG9hQU56OEZkdGFTdlk0cFYwQkVXMmxzNjFjenFsbEJLcFR5S2dNQWhyWjFjZGMxUlJPdFBtdldOa2RjS1o3Wkt4YVdqaVBMSk1wcDdPWkt4QStycUcvb0pManhmMHBuSmxxTG9EWm8zZ3lVMG1LR3lzMnRhS2Vjai9kMUMrckpTcGxCcWxUeUFxZ1IrRDhLaktsbVJMMmd0VWNBZEN0c0wraWpDTlQxb3FxcWtIMk9IRWJHNXNERm5VZzVBYSt5TG91MlZVMXB0ajFTMlpRcXYxT1JaTjlJV3pSZmdhUkJ4S29CRThVV3lxbEpGdHJJYzBBeE5qU2plZDk5Q1RZL1hEZlN6Q3o1TTBJWm9WRXNXblBGTlRzbDhvb1ZDMVR6YkdncUZaTkRTZ1Z3S0srMXNHRE1LcXhaQ1dHVk1EeXNpRXIxalZTUUpVWXdqNWlIT2xUaGRIdDQ0U1FnOUNOK25sOEQ5ME5NSWdBZGdyNDZKcVJpUjlJOHZSZEZ2YnIxN20veXhVTUtqTkxNaVZVQUR3dTJDV0doaGkrRjU1VFdNOU05Y29nem1zMWRuTTR1T0YvTEFFWVdkY3FuTTd5Rm15cTNJZndtT1JPZDdZMWlGV3RPam9ZOFRvNDFtVFY1SXlzZ0ZGdVJ6c2JXRkdiTklJSkNEdjFkT280bFpHN2pXQndSRnRWVEt1V3llQ0J5SktPYW44b1ozZXA5WGRkTmwwdER1YXl3THo5Y1hQWWVEQUEwU3BrQk85c2JWY1RPVldsZFB2NHV5ekVrenhIdGp2b25Ib1NrRkVXTm9vMWQ4RGhjUXB1dGQycHBOb240QnpvQWlKMWhCRlFnMGRWdGRiR0hIRFFXdXNobU5FUXVrTE0yUU8xRzJZOGJnVFhxRmhjQkpqN0VqUGdjUHRzOFVTOHFQcFBCL2RYem5PaDVaNDM4dHpINWVjNlFnck9LclJSZktteXNCbVVEQitQaFlhYk1sVlBFUitHQ1NJVFR6cjdhbTJ0QXJIM2JnY0V6UEptK2NyNWpKNE5uSE5GRFZyRlhjSTVMZTlrNUpudytiZWRiVitGZlJ6WklIYU9PYU9zTFkwLzdVR3M1OERqckd3S01JTUZJR3pPRVcxL2pHc2RBdENONmhFQUk0aEJlOVlYZVJST0JTVlBBVlBBcXZJTTVieDVoVktXQU1QNnpCUnkzaWVzY3JpZFZkRkJpbkJ4WERuRzJHUlkyWGJDdnAxbGh2R3RPOUJ4dTVoOTA4WFF1NDJsblNBck1GZGl6TWltOHV3UkN4UEdubk9TOGx3cG5iT2lEcVRBanNyUk4vUGNvQVNjQ2JhQUNxVk00MHlsbmpqVEJzK2J3V2xBRzIzL1VLYmRraXdLV0lRUEd6V2FjenBvU2x4UEVqODIyY05Xa3BTN0Z5enNEcnFwZmdwRzNqYWh3MnZnYmFTUUF4dUxXWll0N0p6eU5lOEpvWnBOQWN2REZPZHcwd3FZVDlBSzFyWnovRGRiU2xMUHAwcnlJeGdRSmxLOUFabEVxN0lPWHBvaGc5UElockNuZzg4SnNPeGlWNFpXQVlmZzRzaWt4LzhreTJaOWw4NjJ1cXdyZnNjSUg4K3VnVG1WR3lpZGRlVllVZ0VNbjRHWnpnMTRFd0lzaDlzeDJjS0tpV1hSZXVPRTVnekdPUWdkbFJLVlZkbGV2cWIyNzlYcTBRbnN0czJWRGFCTzBjb2V6c3J1V3RIQXB1NnNLRzRJQmhOMGFHVTJrTHJNS0dSVE4zSG1iQ0R3S1YxNHp2a01FREc0UWZaVnNwVmxhTlUybWhjNVRFWjNOMWgvenFUaGV1THBXMDVaV1RHVmpiM2Ribk5teEtaQm5OOEpxaWRhVkxLQU95QVJOTFMrTUI1NFoyK1ZhcW9NTEtyb1ZCbG5nZWZuVFBBY29ITldDU3ZsZkE4Q0kwSEVtQk5CbkJsWHlNcnpVN0E3V1ZtOTRQUHFRMmdtcUt4K1dER3NudmlsbWNTT0JKcU9LMW5ZeUFJenVBeWVzcTNVZFNLM0tmV2NZS0Q5NUhtZllPVTNxc2VyMkN0WUVVQStGcGZxZE52Z1BCWlVCaERyR09OUlZsUXNoOHJMY2FVQ3lrSEcwT09Vd1RsTEJyc2g1c29FTUdlemkxRTRIUlZ0MWljcDV3WkVGWGRpYkNrRzhZOHZYNzVzYk80RTBpb205eitoalNpT2Z5M0RocFhJdHBWaEUrVUdRZHZvV2p0Q2htckdIZjRZQXpLZ0JObkd0dUp4RkNlR2RoVUFmUUxMSzhrQllBUDZndkZKWmFqTUczWGt5Y3k4S3VDMHE0RXl5bXd0d2R4ZHYyTTBtSUJ0SzBMS25mNjQwajAwQXVxNGdVa2RXR2xoczIycUpjNmRaQ3NMMTlveG5sVEpHNFNZVlJJR3BEOFRQRkJ1TTZPRWxiUzFwbGRpZDRtR0F5TjZaSXVwYkM1YlhKTjlmZHBiVGhTeExVYUk4SUcxWElZQnhXM1RqczZLUW9zS2N4ZnhjUW1kbndSR00xMEduRmNDeTJYWXVuTE15QWtkZ2s0bWVQaWN6c0x5Z3RoY0J1dDZnb09xUzdZVkZYQURMamFvc0I2czZvZmNaV0FaU0lSWXFTVWtpell3dHRZYWIzdlVPUTl3MkhSeElJZzhXd1JWZUU2OHhpNFV0TDN6UnBoeHBsend1WnJjcVlDcTFJM2pQSTVkbkpJeWdFb2hNYlBxVkpTenJ3enhCSlRzNXpOK1JlVVNneGlrUFFWRjNKVkJlTlF4YkhFTnJFTU52RWRGWlZWOWxIOStPUkdFc05aUXB5VE5jNEMzQUc3WEY0bmd6cStEck8yemJ1YWFPWGdkYUZjZGtFb3RvU0ZCVlgycUowQzhPV1plRzRLR2xwZ2hBMFhmVE9QQ3FWMnFxd1EyNlFXZkYyUE1MaEkydzFsVkFhMmFQc1lkMHphMjVNUVJ3Z2NaTjZ1UURDaStaeGlENFhFTTJrWnhPVDQxRm5abmFSbGNwWm91emxScXFkYlFWV29wUW9TQjU4UlY1MGxCTnJIaS9Bd1hTNUxyd0RWbHBZM0ZjM0J5aVlHYzUyVHJpc3Q2a09YZHdJbkFRdEpwcDVRY2h5YXF1WU9WN1N1K2Z4Vk1hVjNkYzBSRTJTNm1VWTBnTHQycE1jWXFyS0lROXcybDFncFFVTXRRWWNtbWJ0NURUTnhkaG5VQ2pRcXRiSzlTVVN6dnJDMG1taGhFMWUyRlMyK294eXB5L1pBU3V0a210angzdmNCQzI0UFg2NW5icWtCQ1JoZmpTOWtJWVBuZWU4Y01hZ1ZPaEkvM1QxZkFtZHRBV1pzQ3N3VEpDa1FWTmEwcVdLU0tQT3BIQVVoRDlEcmJWY3lvWWt3cWh2aDE3dllBYXlYTFF5S0dZZHhsVURGcDQ5NHJCWFJqWWdPMTdERFlldE5JVWovZXpwNlMwbG5scEV3c1dtSk1rT3dzS1hlWktFQWpJSG4wRVFKSVNhUkJjTzZVTUlOejdwL2JFampudzRmdCt4bUR2a3N4WDRHMnJJcmlzN3FhZUt3QUZNUDJPaTduNGNyaXVad3RwU1V3cGZMeFNuT1JTcklxdXNjNVpGYVh5c3FSV2ppWjJEeUFXRUlMMzV0VlNvUUVsRkFDak9lR0dTRTdBSEVRZ2RvL0xTdkNPZ0dCdmt4c21EYnZsUzNGcDV2aGFCMlRBR3FSS3JLS01yaExWcGFHekVWalowT1F4RGhhQ1RBK1F5UlIxZDE1YVF6ckpudEwzUmlic2lwakc2amxnTDR5cWJTMHNOWWcxZTg0dmhiQlZyRWxLNjRDVWNXWVhEZkt4aHBJdXhpVkpaVXhzYk15L3VSQktUTlJRNGtRM0xkUllMUzBySmpSUGxUUHFZNmdkSnNFRGMrYVFYQW4rSGdzTlVDYlJ1RjBPajB6d25BN2JXRGtiaE81RW5zMDBxZVFoUzFsYUJNbDVNL2NBYXhzTEY4ckt5cWwrVGY3RUxMRUd1L2l4aWltZEN2bzBUamZwakt3YWdnZW40ZWg1djdMb2tMS2JMdXl2SGhjWkc4ZGhHckVEeDdIZzkzWnBwSkY3cUJxTzNpVnZlWEVEUU5Jbnplb2U4WXE2ZVBhWkJaMkp2aU0zVzJVQUdvdGVrUkNBR3E0RWtGMVgzRE9uUjExeVJzQkwxdFJhMFBWY1ppTkZYWjJjMzRGc2t2b21JblFRNmx6cEpvWmJKeGs0M053S0pGQnF1SlNzckJ5SHlkeEtPblR4UUFTQm1TM2orSk1uc0hTbGEzRWM2SzlWV29KVm45emZqd09NN2hxWUFBcUpRd0UyYTNuQTQ4SjJRR2VnUmtwWk5pdlNZK3lzM0VrS2Q0b0pJd3N2SUhsM2NXZ0x0NWs0Tkg2T210TFdkcHVyT2t3RU11cFljN2VNdERSaE9jSTJ1aTVKaFZJelh6THl0by9HQVB1Wm95bzh3a29kdVZnSmdsQ3Q3T2hHYmdJRDRNcTRzaSs2M3pVUzFGdUZGWEZscXlhajJlbUhsTE1jQnFZdTBGTXVSMjhCYkI3bE94Uk1TaUNRWEZoQ0t1d2toWitwWURpR1NnYnNLS1Y4TWlTUnN1SFNJV005cmtsUmlJbFpadXFYanNRSzhvb1lKTWdxM0pLV1ZraEhiaHNWeEZVenRoT1dQa1lpamNieDU0SUtzU2RUK3VMcjNjckdLeW9ZZ0ZpR1I5aUJrNGtmbG9VWCtKSWxRUlFxYWJtcGduaHF0cFFwYjZSVlExV0g1RG5yUzRoRW9HWnFhZXJRMmRoRmJ6OFhlUHhTaG1EYm83MGVJU2pvb3JPMnZLOFNKWEk0U1VtRVU0eldLRHpVRHRXVFl3N3hYbGJTVEVqNEZSZzd6S25Lb0dSQUx2MEdzOVRnYzFCcEN5d0daUlFBdHFWejJ4ckJjQU16RXBmWndGU2EyRzVXMFFCRmpTTWFwV0FFRmEzSGNHTjdDeER6RUN5SWtKOTdxd3JxV05UV1ZvODc2UFBzalBrajJ3dmdyb001bExaS01FVEtWcWwvQ3ZuV1ZGaUZhL1N6SlVRd2tvWnNyNjdZNnZsU1JWMy8ydG1OVE9ZM3ZuYXhZd011b1BLcWR6UjF3N0lxSHltbFB4YUFUaGZVN0tvMlpYWWo0QVlKSEwra05kS3dSUVlFU1RSYTVmc1VaL3JWQzFUTVR5V1Z5WW9xTnR1emFIc015djJ0dm9hcnhkZnF3WWdVMWF4Rm8vY25xbDFGR3NxSyt1QVJPVjhCWDRHVThXY1pUQVRpMnE3UWN5aTBPMFYrR2hXQk1OUlVrbjhIMVNzV1ZFNUJ5M0dpMEVDcVVlSm9CZkF0RGE0YW1rZFhHMzdBR1A1R2dlYjg0cDdVYXpwb0tSemRGemVROEhrb0hHeHByS3kvSHBtNXQxMnA0N0o2eFRZREV6N3VJTkVYU3V4WVh2RnNrWUFjK3lTeEg5c2Y1ZnRLelU2SWJ3VkJjVUdnNWU1Rk1DRVhTRXJaUjB3R2F5VjE5d29NOWd1UGpUcUpkVlRxUjR1RTRuSm5MbGRXVmtFQ0NaTGQyVkxGK3h0YW1leDdJcGlyaVNEVXB2cnBuOWxyd0dNQ0h5cHBNSCtwczZMSUxzdUZHVWoxWEVPWGlxYnFTSFBVS25DbHBXVjY4a3F0VVJWTkRZNFROYW9jeWtvWWVUVTVuZ0dFUWEvUzFEbm5FNEFlWE1jS2pIUEFtRlZqQ0JFTmFleUxWTkhmcjNweDh4VXN0Sjk0aElwZkg0SEtFL2VEYUFySzZsU3lWVkZiZHQxZ3hUSVZrM3BwcFZsRlhpNHBFaFZCVE9icXVvaFU4NU1MWG4xaWFodlVrSEpqU0NNYzAxdExGdmVWVkJ4MERvZE02amZ0Q3U3RE90SXpZeHJjMHFwMUpHUDJheVlGejJHYjZIdk1yTzhjbkd0VjZHam0zdUltU2ZEMkdwV0s2dW93YlpHTXhGS1FDbzFwT010Y01YRnBSc3QraFhHb0FvbUYzc1NUQkdnVGdsYkJLV3dzUTN0WnFhWVNwMFoxQ2ltUkRXRmNDSlVQWUowMEJJNUZrS1lOb2lmdVF4bU44OFNXVlhXTE1hVXFxcWdDMEJtUUpSNnNrM3U5TkNmNmpZTFh4QWZxc1lFZ1ZMQWhSWTJBdGd0ZmxaTkZtRnloeGRyTGtBZFdsazREODhNMml4SHllcElkaE1IckcvaVIxWkd0cTBNR3BiRGJSUFlPWGVTWTFNNk55NFpzdHZHU2t0SytYYkZQQVRqMkQzNzFzYVBFc0FNWGhYcnNaMGttL1hTdGtoaE15QmZzYTZ1WEZaZTJWQ2UrWU1yMStHS2d3clF5TllxMVZSckIrRWl6QW93Nk5zZE5LY3lWRWtZZU03M3lzNnE0a0FIcDZCaUZrbFRrSXJWQzVvWVY3dXp3T0dDejRVSjBTdHEybFdNSnk0d3RiK1JldEw2dFpGaWNuSm1CdzVVakN2WFhNWlZKWDJNUWtiZitYTjVFV2Q3OFZ6OC9KRXNNWlRCaUtOenNtMWluTFJVUTc0SDROaWRhcUk2OGo1c0FGZ3hjUnZlQzdpZUxKWGZRWXhqWloyQ3NpV0Zld1pYSm1CSWxaMXRkdHJYNGhTdWF0ZUtzby9SWk90T0tXMm5tcTFvVHplSzZkUldBV3UyTlJWYjRocTBTWG0xR3Z0dWdIcmJyNUlYcW1Ta3RnNUN1REUyTVNsUHdzWTVrTkUyV3AzQXFpWmJXVkxBeGlCRisyaUJaYnVOajZNQjZyc01MQzdGeWFzYVlEeW83S2tvUHlFdHczcEVNWGZQdnhBSmkyakFRUWdqcnowckxJWlNXWmxJb05od2Q1eEs0QVI5bVlOaldBYUxybnVJbUplQlZOOXpCT1JPYlZ2YnIrbVRUZkZTRUpMU1JuSG83aEVKb0lpOE1GcWp4bXZnbUY1VVJaejR6TEZnWlo4Q3R1Mlg3Z2dWY2NLbTlnVnhJc09IcXhYZ05NS25GV1pZbmYxZEJuT2hheVhxMTdRd0ZsV1cwOWVOS3lWSkZtWHFhT05HQTVhQ2VnTWJKM1VVa0dZMWljM25LV2dqcThxZlZZR1FHMWdSdDZyczYyYTZIaXFxVU9xZGVzSzVObVg0bkdvZkpvaUUxZDBkRjlsVlZrdlQxL2tFRWFhQ29ZT3dGcGNWY29MTSs3NjY5UHhDOXJXcWt0SDBzV1VZbGQwVkNwdUJaL3N0VlJjR2d5OVdYMitVMVF0aGk5U3pBcVN4elpzeStPaUZ6QllueVNHVjZHa3U0NHJEOEJDT1pCVjNCdkQ1K0FLUkhOd01Fc0I2RXpIbkpwa1RBZWlVbEVHa2NFQ2VCNkdEWlRwNVlFSlRsdmRya254WWpUbGxNa2ZOdFh3RGpNN3VWaks1SlhVVW40M3JycXBLMmp5dGF4SFcwTTVHOERDOHJ0SE1ZczdLU2dkdVZRTUdUWUZxRnZWUzZya0Qzc0RKNDZhZmRZRndvcTExQU9LQ0JMaHZ3b1VnYzhJR0FOeWNSNmtuWnJkSlBkc3V4bnlqZmQzRm92VGxSTWRFZHRPbDVDTVY1RUhzWFFCaXM3VE93dklEWmFHajJWbnBiaDdjcEs2M1Z3WUVNTHdxYmp6eWw2OTlzYXdGRmtGMXlxalVVMzFIZkM2c1cxWkZWRnVYVlhWZ3o5a2VFYXcweXMxbFdmbSthelFBUVNXQStoS1lWZnNaalBuY0FjVUI5b0lheXkvVVpYUk5ja0RHamk3N0dzV2J2Qm82dFByV1BxT3lWa0JVcStJTmVxcHpOZFlzL3UwaWZoNXFtcHFJVyszM0pWU1Vjd1k3MEtMNFU5bFlkVTZsanRTbHM3bG1maTlnM1l6ZVFmVmthR0ZhVjNPRENuYUQyTjh3c0VERmtsRTNSek0zWmdoZFlrV0hzc3pxNzBGSWVjbktrVmt0OGV6TXpScTlia0d1S29qUkxCVlNvZDNZMXlQcUtnWVc3SlJRVFBWeXk1eElZTGpPZ3hnVDUyUktKVVkxZE9ySWlSZDRmdXRReC9BNUFjU21FanowdkZXcmtMenZiV0F1OUhPV2JHZ3hGazFWTlRwbkJLazZUZ3dpc0kvSGN4WVhQMXVBV083MlVMRmxCVHErYVN1MlZUVXM2aHJ4TTJDRitoRW9yMVZJQTlabUZVYWFiMWxTU2dac1ZzNHN4ekhsVkxvSkhyOUg0RGhPTlRrSTFYQzAvd2lZMk5vV0FHNVJsbkhGbnE2b0xjY3BRZGRNdUovTzE3SlZBNU9ITGkwQnFDenRxN1kxKyt1Y0NkOThxTEk4TUlIQlYvY0tqeFFUbWUzaEZCUzNNeUNxbkRzdXltMm84MEhqdkZGVHRyVVJtTmFHSnNtVmFoSW1qVHNVWEt0UVpUQVZzN012djgvK2Z6VXJaQVhjTEo2TTRrb2U2WFAwYjZTbVdXTkR6eVVwUThibCtMdFd4NHR1cVozNmNSWVYzeXVWeFBOd3ZJaXFpUUNTbXU3c3JnVHpSNm5reWhwQ2FyWHdGeTF2R2Q1aVAyY1kwNmxGcjVOamhoZzFZNitOQjI4ZnRiSzgzczhyZjdrTEpiS3dERlBiTGcyNWEwQWRaSkVpcXI1cGhpeEtNRGxSVXRjc3NxMWhyaUxxR29IK3plTmdWbTlPZW1qc0VUVjhKZEYwTkhua0lGeFdZMU9CNFlycDdydFdKN05nQUFBUFhrbEVRVlEzb05zNW5wbHlWZjh1MkZvTHUxSnJIdmVhWldRanFBa3NodEZhMmd6c1NHM1pwa2J2ZzNIYWZGOXNsUFBsbGRqRmxLODBHeXNtOE1yNE1QaG5lTldFTlBHakFJcG1pbFRQQVRkVFJUWGxDQllIWUFRdVB3QTM2eElwV3RHTjRxM1kyTWhpR3NVcHVTU25sRUpSRDhQb3JDN0NGWVZ3K0Y1MXFUaGdhYnhzVHhXekNHWTBaU3NiM2xmcUF5ME9QTmpOeTh4aVFRS3NIWUZRMkhCWlZ2VmJCdXEzbTFvV0thanFhb25zTTZ1WlVyNkNqWFdOWjBsNUUzaDNqVVJtYTZrUDNNSklpeTFMbStrYWhRcTQxTjJpWmphNXNqdGxMWU5aSFpySDZxVUdtNHZNYkRwNlJ3MkNGbXZ1eUZrckJjQ3lNdEZxQmFFQ21zSG9LOUJaMkxBL2xKY1JxU2FEcW5hV2JyWmRHYXozRExnSXZCbG40d29HenRieUpHcXNsd3hraGhIclRqVFlGWEN0T29LUzh1TGRvZlZkQWJPeWxHVTZubFlwWFdadHM0blhCcTZXeEppdE1Ob2tIVUpuYm5KcGxRbSthR3BZMmE1R01WMlFEMWhSdWJCUEZLZHVtZjVPSGtMSHowRjlsdUU1a2pCalJhMG5GRTVDVUdxSHczMk1talo2eGtnSU5WblNuWjFWWlN0SzJxS2xSYUxsUWdLN3VUcTdKRlhKd00rM1NPRUt5aFpOSSt0SjBJNXFNWXk5azJxSkQ3ZFZXZHFLWGEwQ0tOUjBDY2pnK0IySVl1MmZjQlpKWmtNRmdNMTFyMFg5MndpbGdoRkdnelZuZXhscUI3eEw5bVMyOVNpWVVWWTJuWE9aak5CUnN5RHNRUFJXVzVoclo0WGNkQzRIVldSYmpnSnI0c0ZvZks1U3pqUTdyaEkxVWViZFBkRWJqNnNxSXZUWlFaNXZhMDhyQUJzQVcwVXhlV3l0QWs3QTJLSjlacHh6Q2lvQjI0WEZ0WUFlWFl4cjZhblNxaExncHBFcVdiR3dMdW5UZ3JWK0lqV2xMMjlsamFBbDRFUU1Hc0VycDRhcGVaaXF1d1JYTFhBcU9DZXJ1MzJtbXlkYzZvV1RTV3BGQUdkemVUQjhSVEhWTUV0bE05MENiYlFDWWhQanEzZWdZcjFGR2RZSVFqaXVER1o1elovQXpvYktHT3lMeHRpNmM0Und0djJhbnlXbExJQ25sTGh4SlJYdDZBNWViREJXRk5PTmJ4V1oyZDAybW51NFM5WUVDcGVwcFYxelNXUkJXeEhZelZJdjFDWFNvdXdxcVgzakJCQkRaZFlRYnBUUVc0WlFsUzhyNWtINHN1U1JtZzIrKzNKTjEweDFQYUFtRWttdFlsRWRlR3BKRU02a091Q3FDUjIyb1N1amo1SVYySGRUMHpqNXByTEtUalhGQVBqZFFseXE3eElCeEFRUDV5TWN6RzRWeEFLdzBuNmlsWjJRQmNlMnBMdWxrdXh4cW5vSXpGZmdxeXFqaWw5UzFWTndCckZtZXllb3BzOHlPalpVeWJaZGZTOEN1YVRJSnVtenM1dE9EYU50THBGRFEvUGNKR3dlTGhtZUwxbkIwS3FpVURTY3NpVVZEODlEaTNIdHJLdFNVTHczUkxpeWdaRCs3c0Y4SlRPYmdZc3JHdkROVUZSR2wxaXkwTGwxWWtVYzJhSllNb2c5MjBJOHFXNllEQ2cxTXFrMEpISkZLWGtiZ2JScmVJK3FwWU5PWkhyVmNEVWJhN3Bqc3BoU0pOdEs2dXBnUk5BVm9PUzBtdWdCZU40YklaZ0hodVBaL3MxRU5hWDZLc1ZyK1lOcmgxTmI3aXBSMFBFNXpiTlJlZ0NickhSVXc2WWYwN2RMQkpsMWY4S0I5YXMyVjFuTnFBc2w2MkxCQmhlaHdhbGVya0htQjFKRklFWktTRXVzZGw1SlFqMW5KbEhYU0NGMzQyZ0o5Q1lHclhlbGtuSklYcVZQOHNEK3F0cGxDUjNYSDJxZktxMHlnTXArS25Wa0t4TmxaOG0yWWtJbFZNaUNuWFV3bDdxem5CS1N2UXozbTNQdDZvUWJYTzViNUZpeENoL2ZIeFVRVy9BRWNLNnpDTnFLUW5MOXN5d3FtS3V3dnFTWXpUL2FQVk5OcFZ5aHZSVzIxYXFjaUNzamRXdkJ3SUxVdmg1VnlDemJXb0MxcEpqSjY4MENXc2wrdWRLQjZUNVJ3RzFtbG9obmxwYmc0N2l6NVU5aGEwRkd0bVJMRllCdE85OXk5N0FwMHorWkRUQW9nNmtTTFpzTUhnL0lGa2tncDZDcHZVMlUwY1lWU2RubWtqd0JkT21YYnhUV05XenVJYmlwTWlvVnhFY2taRW9haFNPaXkyTTNLMGpjQzFMaFZEd2FxRzBadmtjV3FDbnJHNEdJeHlrcnFsYldkdzZMUXlCYVpSOEhtTFJJaFFXc0hzd0Q0MlpYVkxOa2Y5bCtGbFcwSFZRMmx3RnNDL1oxRmR6bFFSMEthUGZvK0ZkZnUrL2R3VlJJQ3UxQ0dSN0FFSWlBaGMrQVpVRjBrT0JhUHhtVXFnNGk2NHZRblU0bkZEWUo5TnorMWZWWHZlSDlxbXIra1BJTHg4b0tjUlYvQkZieGJFMEpNVDBrU0Q0dzZML2xOWThvY3NxYWdWZFUzQTNNanhoeGNHdXF6c1BINGlycGFvdzFxNk95clZqdnA5TnBjNTlFOTFMbGRib1lWekpXZGltV2ZBVzJTTkVLY0RhWDJGbUJMTEEvdUt4bG1oaDYxM0lzMVVSUUFwYktmdHR3eEwwMnE2T254NXBReFNiUG9qQWcrdjVoQW5ONkxIVlJEWElzdkt0UmppUzBxSlV5WlRBWFZiQUs4MkVsRkpXYVFkVm9xVUMxVW50N0JWYVRRdWRNNlN1cWV4alFKTjQrMGljYXh2L3V0Ykt2ODNFVGJUOEg4Z2pjT0t4T0ptYlVhNk9PVlhodDNkRlk2ckh2OVhvTnpGTGNlRUExbzgrcEttMExBSFBIWjJyWUtqRnEwaGZaRml4c3FISmdEM2VENW4rVTBrYjFtRmpYa24ybHZNU1NPc05FL0NkSUFLRjBTeXRxNnVyT0hVTjVnd2c0R1pvc2dibWdnTTV1Y3JhMnFyUzJJZzFjYmlCQmN4WXpnelVETkxDdkw4R2JaWE5wNk9SeTNMbVMrS2s4M3pSSUFLNkExaW9LYTJJOU5hcEl1aVVGZGZDOTc2NlBGWlV0cVVyNktiV2srelpVMWEvWnJJWEV6dHJqVE9mejdod0t6aUNlWElhcmFIdGJaSU16KzJwR2dhekNtdzRxV0FGdkVkaG9kWXAwWHEwcFY3RzFZV1lXYk80cWhHcTQyK1o4Qll0ckxXdmx1TlBwWkFlYUZGUzF2dWJQZ2JneHNxY3BuQWFzekJvdkthRm9EUThCR3RqZlVPbDROQUcybm1RVjA0ZmVKZ3VtdlgyZnNyUUVXWmdoTDBKblZkWWtuM0RPWkllUk44NlJxUFdDbXN2R1ZxRU1Sbnd4UUF4d1M4RU1ZbzNJem1ZMitCQ2NMcDRNS2l1eXVoSW1hbWxiWkZjTm9ObDd0cCtSSGQxOFpqUUlSS3lYZEZSaE45OC9oeUtxd1hXTm83TzF3aWFYb0hOMTA4UkVaWldFcTZncm5JZmp6ZWc4amRSZjFYRUw0a2tYYTViQmpLeG9LYWxqQmplSGxWeFE0R2F5Y3BXNGxET0FLdG5UeEhBdE9mek90WndIQU03c3FWWGtWNnl1NmthcDFuSGtYS3FXRi80WEhxamVuTktxQmpwUjNsMWNoM0VqZzErRXNnZFFoc2RHMEI0Rk05c1dBVldwdUF5aXdUUGxlWnh0OVZ5WlZTMnFYZlJlV3FUQWlscHI5QXBvV1RqeHltaXQ3TndWNEpUcmlaeU9BOUIwazdIRmZVTG91cm1LWUhWblJRdnFHTDVITUhkcUZjUjJxV3BtY0s2ZVR3eDJkaXBXcnZpRGlscitmS1dxM09XUldkSEt3QTRldTh3amNoYmVSekZpbHFqalpOM3VmQ3Bma0owL3NjVnBuWWs2TDBQSTc3bHhkV0NaODdXaVdtN0IvQUdxdVFTbnVqR0tzQjhDSm1pSnE4cTFwS0lWV3lxT2lUSzY2cjE4Qk44cjc0L0FFNzFmZEMzeVBTMk14ZE9wbkUxdGxWeEQ5Sm1WT29nZ04rcjRQakFYVkZQYTNFZzVqVkpHRlZVR05vbEgyMEdWclVCN0JPeVNXcTZXcVlRZFdSOTJwY0ZNWU13Y2tiU2dDS0NxRDY3RGlpV3UxZzhNUUM5QnlmY0ZxVzFMK2pMNzE0cU5DdXpub1N4dDBkYTJndFdOMUc4RjBCSzBOTjBudWltZWxVRjlkSWRBZmpPNDRVVDNDalFMb1VlTEhKRlRPM2dtcFJ1SUlPdndCUUNicU5lbzNxdFo5aUY2eFZLMTNHUmxvNHpxaW1xK0NHZFRpUjF1Ulk4b3FnRTAyaFpCYTc5a1pYUE1xdXhSSEtsYTJzYVpXTjRtUnFaVWowdkxDS2hraktucU9RSE51U1pWSm9LdkFxUzF3cEVxdXZXREMxQjJ5cHdyQ1BzUk1FUFZUT0RNTEpNRHY2cWVLWHdpMkpZVjVTcTRxS3l2Z0dzSENMaXVqMmpSNTlWOGdNcVNKMkZKWlJYRUhWUkhqM3NGUHJjdDZPcHFsVzFHcGF0UWR0MEd2d2ZNNm42M0luc0dWRmhKR2FCcWdxcUlWNklzWGxsWmd5U1BxNFIzYm50M3dpNWN2K2NOMnlxUUxXMVQ5NUtZVnNXV3RLazRjQjlXNTNXUVFmbFFZUjZXbDRIYUpaanZWRTBENXl2cStSS2daQ3M1cWRCRVA1c0Q5NGNBdlFMbFNnTmFTTUF0SHg4OEJ1TlE0MXpkRnNYMzB6S2JjczBNTEQvaWhrcFF6bDB3aVRxS0xUZmJLbUNteVlJQ25LMEliYWllQzRDRzlpU3lMUTdjSU1HUXdhdTZUS29xNjBBcGwzV040MExacGNhMUNLS0s5VlF5eUlFbjh3MEY4RjZDTDJoOG8zaXhHd0M3czdFV3pDT3FtY0FwWXhZRDRqc0F6VlMwc2wydDk4cEE3dnJLb3BoQ1ZTb25iWXBnSDZtdlNuMjRwVEJWNHNkdFYzQnRNcTVrODJ5K0lBRHZVSjB1QWxrQ1ZUeElhUG0rVU51L3FrVjRGMVR6SFhDR3JYSUFxSXRCS3lwcUs5OVZ0QU9WczY0TzRPYlg3cEhMVkNwWUhjUm13dkxSN1R2WUFLQkJONThMR1Z6RHVGeitoUWJXZ25jUXlDWkFrK1Zic1BTb3VmOTMyNjFpWmdtZkNwd1JiQXZxbVNxcmlVMlB3aGphb095WXF0SWVnVlhWaVRzbXl0YTZiR3lTcFkzZ3lScnBJeUFlYVdERHh0cHNYd0t5YWxNREtOUDdZQlhNcUVza1VzaTJ1QzhGTkFQeEFLVFZmVDFvNlZ6TTBFMGpGKzFyV2NVdUh2ZHlnN3Znb0ZwbFg4SHB2SHBNQ09NUlVQSHpaa0luc3FsRktOWC9FSU81MkUwU3hTek93b2IyVm1STFc1RDFYSVUwcmJnTTFBeldneUM3ZmU4Rzd4VUFLL3RhRUJhdDdsdXF0eVA3RW1zYUpRT2o1Rittcm5aZkN1WUNmQlVBV3dTaHlkNnBNWS92QUhHMVVxT1lwYkkvZ3k1VDBDTUttK1VPM2dGdUM4NWRnZkRWZWd1UERmSVRySUJMc0xyY2dkaDNDRmdGWmphS0o0SXYzRjhBTkVxdnV4UjF0VktPZ0xvQ2Exanhib0JBa2o2djdqL2ljRmJBN2Y0cmZSblFETFJWaUcxM2kwdnFCUXJZVnFCYkFEWlQwWnBpSG9TenZRcG9wS0lGUzNzRTFIZkJXbEhYZDBIN0xuQXJxdm91Z010bGpIQmdabmgzRW96L0JLakxNTDRaMkFxMCtoRUpyOWphVlVCYnZOekNJVWlyb0M3QVdtbUZ3NG81QUszTXRCNVZ5cFpNU0ZnczA1SnlHVndsd0Jxc0VHQUFhMlpVMUNqVWV4WEdzRTRyS3JpaWxCdkZ6T0tLbzNBdUFyb0U2UUZRVTN1OFlwTlh3UzVrKzFUWnQ1VXJ3b3VONEtpVUV3K2szWldEcDFSWEhOUnFYYjIxVHMzOTk0NXlaU2czVm5aRk5ROUNGM1hlWnlyNURnQlhLaXdDTWEyTXhlVERZWGdQMUZzZjlRTktaYzBrODFSSmszcjZFUTNyQ21CVnlMTDc1RWpaMXBJVkRIb0Z0aU9BSG9CMEJkVFZ5bHFCc0tLS1MrQWVCWEpWTFkrQ1hBU3VHdk8vQXVxN0d1RWpEZkdLZzFvS2Exei9kbW1pOUk5U1VHTmhsMEF0ZnVsSEFhd29Zcm5Ta21OWEFWdUdFaHJFVlh2VUYrQTVDdDJQcU5PakRldHluYTRDbWVVb2xtZVhMTjRBcTdDNVNqMTBRN3lqZ2wrdDZDTnhTUkhtSTVYK0Nwd3JlWUIzUWZkcW5hNHEyMUtkQnVjNEdvWnNuNDlaT09pVmlud0hxSzlXemp2Z2V3ZUVoMkFVNSt2dHhaOUNkOVdxa2g0OVYxOEU1b2o2dlZ5bjBSU3RBeUdJTzVlZFhSS2Q1QjBWR1ZYcTJ5cjN4WXArNVV0K0M0UUo0UDFOMzM5cFFNalJlamo0dmIvRGNyNnJRYzNPLzByam10WnBlWUNCaUNIZkNlbVJiTmhiSy9wTlVQYzN3Zkt5NWYyRDdPbEwzL3VQaHZlL29VNFQwRjhmK1ZOTTJ2eW9pdjBqSytLSFFmZEhxKzBibmN6NG96NzMvK1k2TGJLdzFvLzVCN2VPZjFSbC8wZHU5Qjl0bi85YnZyZi9qK3YwaDZ0dG4ydHAvci80ODE5eTQvenY1MzkxdXZ6emZ3RGlmejZwaFQxTVBnQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxMzBweDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lO21hcmdpbjozcHggLTNweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWR7Y29sb3I6Izk5OTtjdXJzb3I6bm90LWFsbG93ZWR9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjFweCAxcHggNXB4ICMzMzM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4O3RleHQtYWxpZ246Y2VudGVyO3RvcDotNXB4O3dpZHRoOjEwcHh9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzczpiZWZvcmV7Ym90dG9tOjMuNXB4O2NvbnRlbnQ6IngiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSddfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTpnM31dfSkse2hhbmRsZUVzYzpbe3R5cGU6d3ksYXJnczpbImRvY3VtZW50OmtleXVwLmVzYyIsWyIkZXZlbnQiXV19XSxoYW5kbGVFbnRlcjpbe3R5cGU6d3ksYXJnczpbImRvY3VtZW50OmtleXVwLmVudGVyIixbIiRldmVudCJdXX1dLGRpYWxvZ0VsZW1lbnQ6W3t0eXBlOlphLGFyZ3M6WyJkaWFsb2dQb3B1cCIse3N0YXRpYzohMH1dfV0saHVlU2xpZGVyOlt7dHlwZTpaYSxhcmdzOlsiaHVlU2xpZGVyIix7c3RhdGljOiEwfV19XSxhbHBoYVNsaWRlcjpbe3R5cGU6WmEsYXJnczpbImFscGhhU2xpZGVyIix7c3RhdGljOiEwfV19XX0pO2NsYXNzIGIze2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhKXt0aGlzLmluamVjdG9yPXQsdGhpcy5jZnI9ZSx0aGlzLmFwcFJlZj1uLHRoaXMudmNSZWY9byx0aGlzLmVsUmVmPWksdGhpcy5fc2VydmljZT1hLHRoaXMuZGlhbG9nQ3JlYXRlZD0hMSx0aGlzLmlnbm9yZUNoYW5nZXM9ITEsdGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMSx0aGlzLmNwV2lkdGg9IjIzMHB4Iix0aGlzLmNwSGVpZ2h0PSJhdXRvIix0aGlzLmNwVG9nZ2xlPSExLHRoaXMuY3BEaXNhYmxlZD0hMSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPVtdLHRoaXMuY3BGYWxsYmFja0NvbG9yPSIiLHRoaXMuY3BDb2xvck1vZGU9ImNvbG9yIix0aGlzLmNwQ215a0VuYWJsZWQ9ITEsdGhpcy5jcE91dHB1dEZvcm1hdD0iYXV0byIsdGhpcy5jcEFscGhhQ2hhbm5lbD0iZW5hYmxlZCIsdGhpcy5jcERpc2FibGVJbnB1dD0hMSx0aGlzLmNwRGlhbG9nRGlzcGxheT0icG9wdXAiLHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlPSEwLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZT0hMCx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXI9ITEsdGhpcy5jcFBvc2l0aW9uPSJhdXRvIix0aGlzLmNwUG9zaXRpb25PZmZzZXQ9IjAlIix0aGlzLmNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c9ITEsdGhpcy5jcE9LQnV0dG9uPSExLHRoaXMuY3BPS0J1dHRvblRleHQ9Ik9LIix0aGlzLmNwT0tCdXR0b25DbGFzcz0iY3Atb2stYnV0dG9uLWNsYXNzIix0aGlzLmNwQ2FuY2VsQnV0dG9uPSExLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PSJDYW5jZWwiLHRoaXMuY3BDYW5jZWxCdXR0b25DbGFzcz0iY3AtY2FuY2VsLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcFByZXNldExhYmVsPSJQcmVzZXQgY29sb3JzIix0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3M9ImNwLXByZXNldC1jb2xvcnMtY2xhc3MiLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9Nix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPSJObyBjb2xvcnMgYWRkZWQiLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcz0icHJlc2V0LWVtcHR5LW1lc3NhZ2UiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbj0hMSx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0PSJBZGQgY29sb3IiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPSJjcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzIix0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcz0iY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcElucHV0Q2hhbmdlPW5ldyBMaCghMCksdGhpcy5jcFRvZ2dsZUNoYW5nZT1uZXcgTGgoITApLHRoaXMuY3BTbGlkZXJDaGFuZ2U9bmV3IExoKCEwKSx0aGlzLmNwU2xpZGVyRHJhZ0VuZD1uZXcgTGgoITApLHRoaXMuY3BTbGlkZXJEcmFnU3RhcnQ9bmV3IExoKCEwKSx0aGlzLmNvbG9yUGlja2VyT3Blbj1uZXcgTGgoITApLHRoaXMuY29sb3JQaWNrZXJDbG9zZT1uZXcgTGgoITApLHRoaXMuY29sb3JQaWNrZXJDYW5jZWw9bmV3IExoKCEwKSx0aGlzLmNvbG9yUGlja2VyU2VsZWN0PW5ldyBMaCghMCksdGhpcy5jb2xvclBpY2tlckNoYW5nZT1uZXcgTGgoITEpLHRoaXMuY3BDbXlrQ29sb3JDaGFuZ2U9bmV3IExoKCEwKSx0aGlzLmNwUHJlc2V0Q29sb3JzQ2hhbmdlPW5ldyBMaCghMCl9aGFuZGxlQ2xpY2soKXt0aGlzLmlucHV0Rm9jdXMoKX1oYW5kbGVGb2N1cygpe3RoaXMuaW5wdXRGb2N1cygpfWhhbmRsZUlucHV0KHQpe3RoaXMuaW5wdXRDaGFuZ2UodCl9bmdPbkRlc3Ryb3koKXtudWxsIT10aGlzLmNtcFJlZiYmKHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWYmJnRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLHRoaXMuY21wUmVmLmRlc3Ryb3koKSx0aGlzLmNtcFJlZj1udWxsLHRoaXMuZGlhbG9nPW51bGwpfW5nT25DaGFuZ2VzKHQpe3QuY3BUb2dnbGUmJiF0aGlzLmNwRGlzYWJsZWQmJih0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZT90aGlzLm9wZW5EaWFsb2coKTp0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZXx8dGhpcy5jbG9zZURpYWxvZygpKSx0LmNvbG9yUGlja2VyJiYodGhpcy5kaWFsb2cmJiF0aGlzLmlnbm9yZUNoYW5nZXMmJigiaW5saW5lIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLmRpYWxvZy5zZXRJbml0aWFsQ29sb3IodC5jb2xvclBpY2tlci5jdXJyZW50VmFsdWUpLHRoaXMuZGlhbG9nLnNldENvbG9yRnJvbVN0cmluZyh0LmNvbG9yUGlja2VyLmN1cnJlbnRWYWx1ZSwhMSksdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyJiYiaW5saW5lIiE9PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpLHRoaXMuaWdub3JlQ2hhbmdlcz0hMSksKHQuY3BQcmVzZXRMYWJlbHx8dC5jcFByZXNldENvbG9ycykmJnRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5zZXRQcmVzZXRDb25maWcodGhpcy5jcFByZXNldExhYmVsLHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5EaWFsb2coKXtpZih0aGlzLmRpYWxvZ0NyZWF0ZWQpdGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLm9wZW5EaWFsb2codGhpcy5jb2xvclBpY2tlcik7ZWxzZXtsZXQgdD10aGlzLnZjUmVmO2lmKHRoaXMuZGlhbG9nQ3JlYXRlZD0hMCx0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSExLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lciYmImlubGluZSIhPT10aGlzLmNwRGlhbG9nRGlzcGxheSl7Y29uc3QgZT10aGlzLmluamVjdG9yLmdldCh0aGlzLmFwcFJlZi5jb21wb25lbnRUeXBlc1swXSxycC5OVUxMKTtlIT09cnAuTlVMTD8odD1lLnZjUmVmfHxlLnZpZXdDb250YWluZXJSZWZ8fHRoaXMudmNSZWYsdD09PXRoaXMudmNSZWYmJmNvbnNvbGUud2FybigiWW91IGFyZSB1c2luZyBjcFVzZVJvb3RWaWV3Q29udGFpbmVyLCBidXQgdGhlIHJvb3QgY29tcG9uZW50IGlzIG5vdCBleHBvc2luZyB2aWV3Q29udGFpbmVyUmVmIVBsZWFzZSBleHBvc2UgaXQgYnkgYWRkaW5nICdwdWJsaWMgdmNSZWY6IFZpZXdDb250YWluZXJSZWYnIHRvIHRoZSBjb25zdHJ1Y3Rvci4iKSk6dGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMH1jb25zdCBlPXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGgzKTtpZih0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmKXRoaXMuY21wUmVmPWUuY3JlYXRlKHRoaXMuaW5qZWN0b3IpLHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jbXBSZWYuaG9zdFZpZXcucm9vdE5vZGVzWzBdKTtlbHNle2NvbnN0IG49d20uZnJvbVJlc29sdmVkUHJvdmlkZXJzKFtdLHQucGFyZW50SW5qZWN0b3IpO3RoaXMuY21wUmVmPXQuY3JlYXRlQ29tcG9uZW50KGUsMCxuLFtdKX10aGlzLmNtcFJlZi5pbnN0YW5jZS5zZXR1cERpYWxvZyh0aGlzLHRoaXMuZWxSZWYsdGhpcy5jb2xvclBpY2tlcix0aGlzLmNwV2lkdGgsdGhpcy5jcEhlaWdodCx0aGlzLmNwRGlhbG9nRGlzcGxheSx0aGlzLmNwRmFsbGJhY2tDb2xvcix0aGlzLmNwQ29sb3JNb2RlLHRoaXMuY3BDbXlrRW5hYmxlZCx0aGlzLmNwQWxwaGFDaGFubmVsLHRoaXMuY3BPdXRwdXRGb3JtYXQsdGhpcy5jcERpc2FibGVJbnB1dCx0aGlzLmNwSWdub3JlZEVsZW1lbnRzLHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZSx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXIsdGhpcy5jcFBvc2l0aW9uLHRoaXMuY3BQb3NpdGlvbk9mZnNldCx0aGlzLmNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3csdGhpcy5jcFByZXNldExhYmVsLHRoaXMuY3BQcmVzZXRDb2xvcnMsdGhpcy5jcFByZXNldENvbG9yc0NsYXNzLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZSx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3MsdGhpcy5jcE9LQnV0dG9uLHRoaXMuY3BPS0J1dHRvbkNsYXNzLHRoaXMuY3BPS0J1dHRvblRleHQsdGhpcy5jcENhbmNlbEJ1dHRvbix0aGlzLmNwQ2FuY2VsQnV0dG9uQ2xhc3MsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQsdGhpcy5jcEFkZENvbG9yQnV0dG9uLHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzLHRoaXMuY3BBZGRDb2xvckJ1dHRvblRleHQsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3MsdGhpcy5lbFJlZiksdGhpcy5kaWFsb2c9dGhpcy5jbXBSZWYuaW5zdGFuY2UsdGhpcy52Y1JlZiE9PXQmJnRoaXMuY21wUmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX19Y2xvc2VEaWFsb2coKXt0aGlzLmRpYWxvZyYmInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLmRpYWxvZy5jbG9zZURpYWxvZygpfWNteWtDaGFuZ2VkKHQpe3RoaXMuY3BDbXlrQ29sb3JDaGFuZ2UuZW1pdCh0KX1zdGF0ZUNoYW5nZWQodCl7dGhpcy5jcFRvZ2dsZUNoYW5nZS5lbWl0KHQpLHQ/dGhpcy5jb2xvclBpY2tlck9wZW4uZW1pdCh0aGlzLmNvbG9yUGlja2VyKTp0aGlzLmNvbG9yUGlja2VyQ2xvc2UuZW1pdCh0aGlzLmNvbG9yUGlja2VyKX1jb2xvckNoYW5nZWQodCxlPSEwKXt0aGlzLmlnbm9yZUNoYW5nZXM9ZSx0aGlzLmNvbG9yUGlja2VyQ2hhbmdlLmVtaXQodCl9Y29sb3JTZWxlY3RlZCh0KXt0aGlzLmNvbG9yUGlja2VyU2VsZWN0LmVtaXQodCl9Y29sb3JDYW5jZWxlZCgpe3RoaXMuY29sb3JQaWNrZXJDYW5jZWwuZW1pdCgpfWlucHV0Rm9jdXMoKXtjb25zdCB0PXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCxlPXRoaXMuY3BJZ25vcmVkRWxlbWVudHMuZmlsdGVyKChlPT5lPT09dCkpO3RoaXMuY3BEaXNhYmxlZHx8ZS5sZW5ndGh8fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZ0PT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD90aGlzLm9wZW5EaWFsb2coKTp0aGlzLmRpYWxvZyYmdGhpcy5kaWFsb2cuc2hvdz90aGlzLmNsb3NlRGlhbG9nKCk6dGhpcy5vcGVuRGlhbG9nKCkpfWlucHV0Q2hhbmdlKHQpe3RoaXMuZGlhbG9nP3RoaXMuZGlhbG9nLnNldENvbG9yRnJvbVN0cmluZyh0LnRhcmdldC52YWx1ZSwhMCk6KHRoaXMuY29sb3JQaWNrZXI9dC50YXJnZXQudmFsdWUsdGhpcy5jb2xvclBpY2tlckNoYW5nZS5lbWl0KHRoaXMuY29sb3JQaWNrZXIpKX1pbnB1dENoYW5nZWQodCl7dGhpcy5jcElucHV0Q2hhbmdlLmVtaXQodCl9c2xpZGVyQ2hhbmdlZCh0KXt0aGlzLmNwU2xpZGVyQ2hhbmdlLmVtaXQodCl9c2xpZGVyRHJhZ0VuZCh0KXt0aGlzLmNwU2xpZGVyRHJhZ0VuZC5lbWl0KHQpfXNsaWRlckRyYWdTdGFydCh0KXt0aGlzLmNwU2xpZGVyRHJhZ1N0YXJ0LmVtaXQodCl9cHJlc2V0Q29sb3JzQ2hhbmdlZCh0KXt0aGlzLmNwUHJlc2V0Q29sb3JzQ2hhbmdlLmVtaXQodCl9fWIzLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiMykoU20ocnApLFNtKHVnKSxTbShPXyksU20oZWgpLFNtKGhnKSxTbShnMykpfSxiMy7JtWRpcj1sbyh7dHlwZTpiMyxzZWxlY3RvcnM6W1siIiwiY29sb3JQaWNrZXIiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5oYW5kbGVDbGljaygpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5oYW5kbGVGb2N1cygpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uaGFuZGxlSW5wdXQoZSl9KSl9LGlucHV0czp7Y3BXaWR0aDoiY3BXaWR0aCIsY3BIZWlnaHQ6ImNwSGVpZ2h0IixjcFRvZ2dsZToiY3BUb2dnbGUiLGNwRGlzYWJsZWQ6ImNwRGlzYWJsZWQiLGNwSWdub3JlZEVsZW1lbnRzOiJjcElnbm9yZWRFbGVtZW50cyIsY3BGYWxsYmFja0NvbG9yOiJjcEZhbGxiYWNrQ29sb3IiLGNwQ29sb3JNb2RlOiJjcENvbG9yTW9kZSIsY3BDbXlrRW5hYmxlZDoiY3BDbXlrRW5hYmxlZCIsY3BPdXRwdXRGb3JtYXQ6ImNwT3V0cHV0Rm9ybWF0IixjcEFscGhhQ2hhbm5lbDoiY3BBbHBoYUNoYW5uZWwiLGNwRGlzYWJsZUlucHV0OiJjcERpc2FibGVJbnB1dCIsY3BEaWFsb2dEaXNwbGF5OiJjcERpYWxvZ0Rpc3BsYXkiLGNwU2F2ZUNsaWNrT3V0c2lkZToiY3BTYXZlQ2xpY2tPdXRzaWRlIixjcENsb3NlQ2xpY2tPdXRzaWRlOiJjcENsb3NlQ2xpY2tPdXRzaWRlIixjcFVzZVJvb3RWaWV3Q29udGFpbmVyOiJjcFVzZVJvb3RWaWV3Q29udGFpbmVyIixjcFBvc2l0aW9uOiJjcFBvc2l0aW9uIixjcFBvc2l0aW9uT2Zmc2V0OiJjcFBvc2l0aW9uT2Zmc2V0IixjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93OiJjcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93IixjcE9LQnV0dG9uOiJjcE9LQnV0dG9uIixjcE9LQnV0dG9uVGV4dDoiY3BPS0J1dHRvblRleHQiLGNwT0tCdXR0b25DbGFzczoiY3BPS0J1dHRvbkNsYXNzIixjcENhbmNlbEJ1dHRvbjoiY3BDYW5jZWxCdXR0b24iLGNwQ2FuY2VsQnV0dG9uVGV4dDoiY3BDYW5jZWxCdXR0b25UZXh0IixjcENhbmNlbEJ1dHRvbkNsYXNzOiJjcENhbmNlbEJ1dHRvbkNsYXNzIixjcFByZXNldExhYmVsOiJjcFByZXNldExhYmVsIixjcFByZXNldENvbG9yc0NsYXNzOiJjcFByZXNldENvbG9yc0NsYXNzIixjcE1heFByZXNldENvbG9yc0xlbmd0aDoiY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgiLGNwUHJlc2V0RW1wdHlNZXNzYWdlOiJjcFByZXNldEVtcHR5TWVzc2FnZSIsY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzczoiY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyIsY3BBZGRDb2xvckJ1dHRvbjoiY3BBZGRDb2xvckJ1dHRvbiIsY3BBZGRDb2xvckJ1dHRvblRleHQ6ImNwQWRkQ29sb3JCdXR0b25UZXh0IixjcEFkZENvbG9yQnV0dG9uQ2xhc3M6ImNwQWRkQ29sb3JCdXR0b25DbGFzcyIsY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzOiJjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3MiLGNvbG9yUGlja2VyOiJjb2xvclBpY2tlciIsY3BQcmVzZXRDb2xvcnM6ImNwUHJlc2V0Q29sb3JzIn0sb3V0cHV0czp7Y3BJbnB1dENoYW5nZToiY3BJbnB1dENoYW5nZSIsY3BUb2dnbGVDaGFuZ2U6ImNwVG9nZ2xlQ2hhbmdlIixjcFNsaWRlckNoYW5nZToiY3BTbGlkZXJDaGFuZ2UiLGNwU2xpZGVyRHJhZ0VuZDoiY3BTbGlkZXJEcmFnRW5kIixjcFNsaWRlckRyYWdTdGFydDoiY3BTbGlkZXJEcmFnU3RhcnQiLGNvbG9yUGlja2VyT3BlbjoiY29sb3JQaWNrZXJPcGVuIixjb2xvclBpY2tlckNsb3NlOiJjb2xvclBpY2tlckNsb3NlIixjb2xvclBpY2tlckNhbmNlbDoiY29sb3JQaWNrZXJDYW5jZWwiLGNvbG9yUGlja2VyU2VsZWN0OiJjb2xvclBpY2tlclNlbGVjdCIsY29sb3JQaWNrZXJDaGFuZ2U6ImNvbG9yUGlja2VyQ2hhbmdlIixjcENteWtDb2xvckNoYW5nZToiY3BDbXlrQ29sb3JDaGFuZ2UiLGNwUHJlc2V0Q29sb3JzQ2hhbmdlOiJjcFByZXNldENvbG9yc0NoYW5nZSJ9LGV4cG9ydEFzOlsibmd4Q29sb3JQaWNrZXIiXSxmZWF0dXJlczpbQm9dfSksYjMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpycH0se3R5cGU6dWd9LHt0eXBlOk9ffSx7dHlwZTplaH0se3R5cGU6aGd9LHt0eXBlOmczfV0sYjMucHJvcERlY29yYXRvcnM9e2NvbG9yUGlja2VyOlt7dHlwZTp4eX1dLGNwV2lkdGg6W3t0eXBlOnh5fV0sY3BIZWlnaHQ6W3t0eXBlOnh5fV0sY3BUb2dnbGU6W3t0eXBlOnh5fV0sY3BEaXNhYmxlZDpbe3R5cGU6eHl9XSxjcElnbm9yZWRFbGVtZW50czpbe3R5cGU6eHl9XSxjcEZhbGxiYWNrQ29sb3I6W3t0eXBlOnh5fV0sY3BDb2xvck1vZGU6W3t0eXBlOnh5fV0sY3BDbXlrRW5hYmxlZDpbe3R5cGU6eHl9XSxjcE91dHB1dEZvcm1hdDpbe3R5cGU6eHl9XSxjcEFscGhhQ2hhbm5lbDpbe3R5cGU6eHl9XSxjcERpc2FibGVJbnB1dDpbe3R5cGU6eHl9XSxjcERpYWxvZ0Rpc3BsYXk6W3t0eXBlOnh5fV0sY3BTYXZlQ2xpY2tPdXRzaWRlOlt7dHlwZTp4eX1dLGNwQ2xvc2VDbGlja091dHNpZGU6W3t0eXBlOnh5fV0sY3BVc2VSb290Vmlld0NvbnRhaW5lcjpbe3R5cGU6eHl9XSxjcFBvc2l0aW9uOlt7dHlwZTp4eX1dLGNwUG9zaXRpb25PZmZzZXQ6W3t0eXBlOnh5fV0sY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzpbe3R5cGU6eHl9XSxjcE9LQnV0dG9uOlt7dHlwZTp4eX1dLGNwT0tCdXR0b25UZXh0Olt7dHlwZTp4eX1dLGNwT0tCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcENhbmNlbEJ1dHRvbjpbe3R5cGU6eHl9XSxjcENhbmNlbEJ1dHRvblRleHQ6W3t0eXBlOnh5fV0sY3BDYW5jZWxCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcFByZXNldExhYmVsOlt7dHlwZTp4eX1dLGNwUHJlc2V0Q29sb3JzOlt7dHlwZTp4eX1dLGNwUHJlc2V0Q29sb3JzQ2xhc3M6W3t0eXBlOnh5fV0sY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg6W3t0eXBlOnh5fV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2U6W3t0eXBlOnh5fV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzczpbe3R5cGU6eHl9XSxjcEFkZENvbG9yQnV0dG9uOlt7dHlwZTp4eX1dLGNwQWRkQ29sb3JCdXR0b25UZXh0Olt7dHlwZTp4eX1dLGNwQWRkQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M6W3t0eXBlOnh5fV0sY3BJbnB1dENoYW5nZTpbe3R5cGU6T3l9XSxjcFRvZ2dsZUNoYW5nZTpbe3R5cGU6T3l9XSxjcFNsaWRlckNoYW5nZTpbe3R5cGU6T3l9XSxjcFNsaWRlckRyYWdFbmQ6W3t0eXBlOk95fV0sY3BTbGlkZXJEcmFnU3RhcnQ6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJPcGVuOlt7dHlwZTpPeX1dLGNvbG9yUGlja2VyQ2xvc2U6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJDYW5jZWw6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJTZWxlY3Q6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJDaGFuZ2U6W3t0eXBlOk95fV0sY3BDbXlrQ29sb3JDaGFuZ2U6W3t0eXBlOk95fV0sY3BQcmVzZXRDb2xvcnNDaGFuZ2U6W3t0eXBlOk95fV0saGFuZGxlQ2xpY2s6W3t0eXBlOnd5LGFyZ3M6WyJjbGljayJdfV0saGFuZGxlRm9jdXM6W3t0eXBlOnd5LGFyZ3M6WyJmb2N1cyJdfV0saGFuZGxlSW5wdXQ6W3t0eXBlOnd5LGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChiMyxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbY29sb3JQaWNrZXJdIixleHBvcnRBczoibmd4Q29sb3JQaWNrZXIifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cnB9LHt0eXBlOnVnfSx7dHlwZTpPX30se3R5cGU6ZWh9LHt0eXBlOmhnfSx7dHlwZTpnM31dfSkse2NwV2lkdGg6W3t0eXBlOnh5fV0sY3BIZWlnaHQ6W3t0eXBlOnh5fV0sY3BUb2dnbGU6W3t0eXBlOnh5fV0sY3BEaXNhYmxlZDpbe3R5cGU6eHl9XSxjcElnbm9yZWRFbGVtZW50czpbe3R5cGU6eHl9XSxjcEZhbGxiYWNrQ29sb3I6W3t0eXBlOnh5fV0sY3BDb2xvck1vZGU6W3t0eXBlOnh5fV0sY3BDbXlrRW5hYmxlZDpbe3R5cGU6eHl9XSxjcE91dHB1dEZvcm1hdDpbe3R5cGU6eHl9XSxjcEFscGhhQ2hhbm5lbDpbe3R5cGU6eHl9XSxjcERpc2FibGVJbnB1dDpbe3R5cGU6eHl9XSxjcERpYWxvZ0Rpc3BsYXk6W3t0eXBlOnh5fV0sY3BTYXZlQ2xpY2tPdXRzaWRlOlt7dHlwZTp4eX1dLGNwQ2xvc2VDbGlja091dHNpZGU6W3t0eXBlOnh5fV0sY3BVc2VSb290Vmlld0NvbnRhaW5lcjpbe3R5cGU6eHl9XSxjcFBvc2l0aW9uOlt7dHlwZTp4eX1dLGNwUG9zaXRpb25PZmZzZXQ6W3t0eXBlOnh5fV0sY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzpbe3R5cGU6eHl9XSxjcE9LQnV0dG9uOlt7dHlwZTp4eX1dLGNwT0tCdXR0b25UZXh0Olt7dHlwZTp4eX1dLGNwT0tCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcENhbmNlbEJ1dHRvbjpbe3R5cGU6eHl9XSxjcENhbmNlbEJ1dHRvblRleHQ6W3t0eXBlOnh5fV0sY3BDYW5jZWxCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcFByZXNldExhYmVsOlt7dHlwZTp4eX1dLGNwUHJlc2V0Q29sb3JzQ2xhc3M6W3t0eXBlOnh5fV0sY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg6W3t0eXBlOnh5fV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2U6W3t0eXBlOnh5fV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzczpbe3R5cGU6eHl9XSxjcEFkZENvbG9yQnV0dG9uOlt7dHlwZTp4eX1dLGNwQWRkQ29sb3JCdXR0b25UZXh0Olt7dHlwZTp4eX1dLGNwQWRkQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6eHl9XSxjcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M6W3t0eXBlOnh5fV0sY3BJbnB1dENoYW5nZTpbe3R5cGU6T3l9XSxjcFRvZ2dsZUNoYW5nZTpbe3R5cGU6T3l9XSxjcFNsaWRlckNoYW5nZTpbe3R5cGU6T3l9XSxjcFNsaWRlckRyYWdFbmQ6W3t0eXBlOk95fV0sY3BTbGlkZXJEcmFnU3RhcnQ6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJPcGVuOlt7dHlwZTpPeX1dLGNvbG9yUGlja2VyQ2xvc2U6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJDYW5jZWw6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJTZWxlY3Q6W3t0eXBlOk95fV0sY29sb3JQaWNrZXJDaGFuZ2U6W3t0eXBlOk95fV0sY3BDbXlrQ29sb3JDaGFuZ2U6W3t0eXBlOk95fV0sY3BQcmVzZXRDb2xvcnNDaGFuZ2U6W3t0eXBlOk95fV0saGFuZGxlQ2xpY2s6W3t0eXBlOnd5LGFyZ3M6WyJjbGljayJdfV0saGFuZGxlRm9jdXM6W3t0eXBlOnd5LGFyZ3M6WyJmb2N1cyJdfV0saGFuZGxlSW5wdXQ6W3t0eXBlOnd5LGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XSxjb2xvclBpY2tlcjpbe3R5cGU6eHl9XSxjcFByZXNldENvbG9yczpbe3R5cGU6eHl9XX0pO2NsYXNzIHkze315My7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eTMpfSx5My7JtW1vZD1hbyh7dHlwZTp5M30pLHkzLsm1aW5qPXZuKHtwcm92aWRlcnM6W2czXSxpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeTMsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltXTV0sZXhwb3J0czpbYjNdLHByb3ZpZGVyczpbZzNdLGRlY2xhcmF0aW9uczpbaDMsYjMscDMsbTNdLGVudHJ5Q29tcG9uZW50czpbaDNdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oeTMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltoMyxiMyxwMyxtM119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bV01dfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2IzXX19KTtjb25zdCBfMz1bImZpbHRlciJdO2Z1bmN0aW9uIEMzKHQsZSl7MSZ0JiZJbSgwKX1mdW5jdGlvbiBNMyh0LGUpezEmdCYmSW0oMCl9Y29uc3QgdjM9ZnVuY3Rpb24odCl7cmV0dXJue2l0ZW06dH19O2Z1bmN0aW9uIHgzKHQsZSl7aWYoMSZ0JiYoTm0oMCksUXAoMSxNMywxLDAsIm5nLWNvbnRhaW5lciIsMTIpLHptKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtZbSgpO2NvbnN0IG49JHAoMTQpO3JjKDEpLERtKCJuZ1RlbXBsYXRlT3V0bGV0IixuKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLE1oKDIsdjMsdCkpfX1mdW5jdGlvbiBPMyh0LGUpezEmdCYmKFJtKDAsImRpdiIsMTMpLFRtKDEsIm1hdC1zcGlubmVyIiwxNCksQW0oKSl9ZnVuY3Rpb24gUDModCxlKXsxJnQmJihSbSgwLCJkaXYiLDE1KSxrdSgxLCJObyBSdW5zIiksQW0oKSl9ZnVuY3Rpb24gdzModCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDE1KSxSbSgxLCJzcGFuIiksa3UoMiwnTm8gcnVucyBtYXRjaCAiJyksUm0oMywiY29kZSIpLGt1KDQpLEFtKCksa3UoNSwnIicpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoNCksU3UodC5yZWdleEZpbHRlcil9fWNvbnN0IGszPWZ1bmN0aW9uKCl7cmV0dXJuWzUsMTAsMjBdfTtmdW5jdGlvbiBTMyh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsIm1hdC1wYWdpbmF0b3IiLDE2KSxWbSgicGFnZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25QYWdpbmF0aW9uQ2hhbmdlLmVtaXQobil9KSksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtEbSgicGFnZVNpemVPcHRpb25zIixDaCg0LGszKSkoInBhZ2VJbmRleCIsdC5wYWdpbmF0aW9uT3B0aW9uLnBhZ2VJbmRleCkoInBhZ2VTaXplIix0LnBhZ2luYXRpb25PcHRpb24ucGFnZVNpemUpKCJsZW5ndGgiLHQuZmlsdGVyZWRJdGVtc0xlbmd0aCl9fWZ1bmN0aW9uIEQzKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwibWF0LWNoZWNrYm94IiwyNiksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oMykuaGFuZGxlUGFnZVRvZ2dsZSgpfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDMpO0RtKCJjaGVja2VkIix0LmFsbFBhZ2VJdGVtc1NlbGVjdGVkKCkpKCJpbmRldGVybWluYXRlIiwhdC5hbGxQYWdlSXRlbXNTZWxlY3RlZCgpJiZ0LnNvbWVQYWdlSXRlbXNTZWxlY3RlZCgpKX19Y29uc3QgRTM9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6dH19O2Z1bmN0aW9uIFIzKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMjcpLGt1KDEsIkV4cGVyaW1lbnQiKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMyk7RG0oIm1hdC1zb3J0LWhlYWRlciIsTWgoMSxFMyx0LlNvcnRUeXBlLkVYUEVSSU1FTlRfTkFNRSkpfX1mdW5jdGlvbiBBMyh0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDI3KSxrdSgxLCJSdW4iKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMyk7RG0oIm1hdC1zb3J0LWhlYWRlciIsTWgoMSxFMyx0LlNvcnRUeXBlLlJVTl9OQU1FKSl9fWZ1bmN0aW9uIFQzKHQsZSl7MSZ0JiZUbSgwLCJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIiwyOSksMiZ0JiZEbSgiZXhwZXJpbWVudElkcyIsWW0oNCkuZXhwZXJpbWVudElkcyl9ZnVuY3Rpb24gTjModCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiksUXAoMSxUMywxLDEsInJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLDI4KSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMyk7cmMoMSksRG0oIm5nSWYiLHQuc2hvd0dyb3VwQ29udHJvbCl9fWNvbnN0IHozPWZ1bmN0aW9uKHQpe3JldHVyblsiY29sdW1uIix0XX07ZnVuY3Rpb24gSTModCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiwyMSksTm0oMSwyMiksUXAoMixEMywxLDIsIm1hdC1jaGVja2JveCIsMjMpLFFwKDMsUjMsMiwzLCJzcGFuIiwyNCksUXAoNCxBMywyLDMsInNwYW4iLDI0KSxRcCg1LE4zLDIsMSwic3BhbiIsMjUpLHptKCksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7RG0oIm5nQ2xhc3MiLE1oKDYsejMsInRiLWNvbHVtbi0iK3QpKSxyYygxKSxEbSgibmdTd2l0Y2giLHQpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkNIRUNLQk9YKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5FWFBFUklNRU5UX05BTUUpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9OQU1FKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fQ09MT1IpfX1mdW5jdGlvbiBIMyh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO05tKDApLFJtKDEsImRpdiIsMzgpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksUm0oMiwidGItcmFuZ2UtaW5wdXQiLDM5KSxWbSgidmFsdWUiLChmdW5jdGlvbiBlKG4pe2hpKHQpO2NvbnN0IG89WW0oMikuJGltcGxpY2l0O3JldHVybiBZbSgyKS5oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQobyxuKX0pKSxBbSgpLEFtKCksem0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oMikuJGltcGxpY2l0O3JjKDIpLERtKCJtaW4iLHQuZmlsdGVyLm1pblZhbHVlKSgibWF4Iix0LmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLHQuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIix0LmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19ZnVuY3Rpb24gRjModCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDQxKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLFJtKDEsIm1hdC1jaGVja2JveCIsMzcpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1oaSh0KS4kaW1wbGljaXQsbz1ZbSgzKS4kaW1wbGljaXQ7cmV0dXJuIFltKDIpLmhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZChvLG4pfSkpLFJtKDIsInNwYW4iKSxrdSgzKSxBbSgpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgzKS4kaW1wbGljaXQ7cmMoMSksRG0oImNoZWNrZWQiLG4uZmlsdGVyLmZpbHRlclZhbHVlcy5pbmNsdWRlcyh0KSkscmMoMiksU3UodCl9fWZ1bmN0aW9uIEwzKHQsZSl7aWYoMSZ0JiYoTm0oMCksUXAoMSxGMyw0LDIsImRpdiIsNDApLHptKCkpLDImdCl7Y29uc3QgdD1ZbSgyKS4kaW1wbGljaXQ7cmMoMSksRG0oIm5nRm9yT2YiLHQuZmlsdGVyLnBvc3NpYmxlVmFsdWVzKX19ZnVuY3Rpb24gQjModCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtObSgwKSxSbSgxLCJidXR0b24iLDMzKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpLFRtKDIsIm1hdC1pY29uIiwzNCksQW0oKSxSbSgzLCJtYXQtbWVudSIsbnVsbCwzNSksUm0oNSwiZGl2IiwzNiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxSbSg2LCJtYXQtY2hlY2tib3giLDM3KSxWbSgiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe2hpKHQpO2NvbnN0IG49WW0oKS4kaW1wbGljaXQ7cmV0dXJuIFltKDIpLmhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKG4pfSkpLFJtKDcsInNwYW4iKSxrdSg4LCIoc2hvdyBlbXB0eSB2YWx1ZSkiKSxBbSgpLEFtKCksQW0oKSxRcCg5LEgzLDMsNCwibmctY29udGFpbmVyIiwzMiksUXAoMTAsTDMsMiwxLCJuZy1jb250YWluZXIiLDMyKSxBbSgpLHptKCl9aWYoMiZ0KXtjb25zdCB0PSRwKDQpLGU9WW0oKS4kaW1wbGljaXQsbj1ZbSgyKTtyYygxKSxEbSgibWF0TWVudVRyaWdnZXJGb3IiLHQpLGpwKCJhcmlhLWxhYmVsIiwiRmlsdGVyIGhwYXJhbSAiKyhlLmRpc3BsYXlOYW1lfHxlLm5hbWUpKSxyYyg1KSxEbSgiY2hlY2tlZCIsZS5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCkscmMoMyksRG0oIm5nSWYiLGUuZmlsdGVyLnR5cGU9PT1uLkRvbWFpblR5cGUuSU5URVJWQUwpLHJjKDEpLERtKCJuZ0lmIixlLmZpbHRlci50eXBlPT09bi5Eb21haW5UeXBlLkRJU0NSRVRFKX19Y29uc3QgVjM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LG5hbWU6ZX19O2Z1bmN0aW9uIGozKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMzApLFJtKDEsInNwYW4iLDMxKSxrdSgyKSxBbSgpLFFwKDMsQjMsMTEsNSwibmctY29udGFpbmVyIiwzMiksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7RG0oIm1hdC1zb3J0LWhlYWRlciIsdmgoMyxWMyxuLlNvcnRUeXBlLkhQQVJBTSx0Lm5hbWUpKSxyYygyKSxTdSh0LmRpc3BsYXlOYW1lfHx0Lm5hbWUpLHJjKDEpLERtKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIFUzKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Tm0oMCksUm0oMSwiYnV0dG9uIiwzMyksVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxUbSgyLCJtYXQtaWNvbiIsMzQpLEFtKCksUm0oMywibWF0LW1lbnUiLG51bGwsMzUpLFJtKDUsImRpdiIsMzYpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksUm0oNiwibWF0LWNoZWNrYm94IiwzNyksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtoaSh0KTtjb25zdCBuPVltKCkuJGltcGxpY2l0O3JldHVybiBZbSgyKS5oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZChuKX0pKSxSbSg3LCJzcGFuIiksa3UoOCwiKHNob3cgZW1wdHkgdmFsdWUpIiksQW0oKSxBbSgpLEFtKCksUm0oOSwiZGl2IiwzOCksVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxSbSgxMCwidGItcmFuZ2UtaW5wdXQiLDM5KSxWbSgidmFsdWUiLChmdW5jdGlvbiBlKG4pe2hpKHQpO2NvbnN0IG89WW0oKS4kaW1wbGljaXQ7cmV0dXJuIFltKDIpLmhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQobyxuKX0pKSxBbSgpLEFtKCksQW0oKSx6bSgpfWlmKDImdCl7Y29uc3QgdD0kcCg0KSxlPVltKCkuJGltcGxpY2l0O3JjKDEpLERtKCJtYXRNZW51VHJpZ2dlckZvciIsdCksanAoImFyaWEtbGFiZWwiLCJGaWx0ZXIgbWV0cmljICIrKGUuZGlzcGxheU5hbWV8fGUudGFnKSkscmMoNSksRG0oImNoZWNrZWQiLGUuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQpLHJjKDQpLERtKCJtaW4iLGUuZmlsdGVyLm1pblZhbHVlKSgibWF4IixlLmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLGUuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIixlLmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19Y29uc3QgRzM9ZnVuY3Rpb24odCxlKXtyZXR1cm57dHlwZTp0LHRhZzplfX07ZnVuY3Rpb24gVzModCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiwzMCksUm0oMSwic3BhbiIsMzEpLGt1KDIpLEFtKCksUXAoMyxVMywxMSw3LCJuZy1jb250YWluZXIiLDMyKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgyKTtEbSgibWF0LXNvcnQtaGVhZGVyIix2aCgzLEczLG4uU29ydFR5cGUuTUVUUklDLHQudGFnKSkscmMoMiksU3UodC5kaXNwbGF5TmFtZXx8dC50YWcpLHJjKDEpLERtKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIFkzKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwxNyksUm0oMSwiZGl2IiwxOCksVm0oIm1hdFNvcnRDaGFuZ2UiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLmhhbmRsZVNvcnRDaGFuZ2Uobil9KSksUXAoMixJMyw2LDgsInNwYW4iLDE5KSxRcCgzLGozLDQsNiwic3BhbiIsMjApLFFwKDQsVzMsNCw2LCJzcGFuIiwyMCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLERtKCJtYXRTb3J0QWN0aXZlIix0LnNvcnRPcHRpb24uY29sdW1uKSxyYygxKSxEbSgibmdGb3JPZiIsdC5jb2x1bW5zKSxyYygxKSxEbSgibmdGb3JPZiIsdC5ocGFyYW1Db2x1bW5zKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlIcGFyYW1Db2x1bW4pLHJjKDEpLERtKCJuZ0Zvck9mIix0Lm1ldHJpY0NvbHVtbnMpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeU1ldHJpY0NvbHVtbil9fWZ1bmN0aW9uIHEzKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwic3BhbiIpLFJtKDEsIm1hdC1jaGVja2JveCIsMzcpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7aGkodCk7Y29uc3Qgbj1ZbSgyKS5pdGVtO3JldHVybiBZbSgpLm9uU2VsZWN0aW9uVG9nZ2xlLmVtaXQobil9KSksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKS5pdGVtO3JjKDEpLERtKCJjaGVja2VkIix0LnNlbGVjdGVkKX19ZnVuY3Rpb24gWjModCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiwzMSksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpLml0ZW07anAoInRpdGxlIix0LmV4cGVyaW1lbnROYW1lKSxyYygxKSxTdSh0LmV4cGVyaW1lbnRBbGlhcyl9fWZ1bmN0aW9uIFgzKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMzEpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKS5pdGVtO3JjKDEpLFN1KHQucnVuLm5hbWUpfX1jb25zdCBLMz1mdW5jdGlvbih0KXtyZXR1cm57InJ1bi1jb2xvci1zd2F0Y2giOiEwLCJuby1jb2xvciI6dH19O2Z1bmN0aW9uIEozKHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwic3BhbiIpLFJtKDEsImJ1dHRvbiIsNDcpLFZtKCJjb2xvclBpY2tlckNoYW5nZSIsKGZ1bmN0aW9uIGUobil7aGkodCk7Y29uc3Qgbz1ZbSgyKS5pdGVtO3JldHVybiBZbSgpLm9uUnVuQ29sb3JDaGFuZ2UuZW1pdCh7cnVuSWQ6by5ydW4uaWQsbmV3Q29sb3I6bn0pfSkpLEFtKCksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oMikuaXRlbTtyYygxKSxkdSgiYmFja2dyb3VuZCIsdC5ydW5Db2xvciksRG0oIm5nQ2xhc3MiLE1oKDgsSzMsIXQucnVuQ29sb3IpKSgiY29sb3JQaWNrZXIiLHQucnVuQ29sb3IpKCJjcERpYWxvZ0Rpc3BsYXkiLCJwb3B1cCIpKCJjcFBvc2l0aW9uT2Zmc2V0IiwtMjApKCJjcFVzZVJvb3RWaWV3Q29udGFpbmVyIiwhMCkoImNwT3V0cHV0Rm9ybWF0IiwiaGV4Iil9fWZ1bmN0aW9uIFEzKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsNDUpLE5tKDEsMjIpLFFwKDIscTMsMiwxLCJzcGFuIiwyNSksUXAoMyxaMywyLDIsInNwYW4iLDQ2KSxRcCg0LFgzLDIsMSwic3BhbiIsNDYpLFFwKDUsSjMsMiwxMCwic3BhbiIsMjUpLHptKCksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7RG0oIm5nQ2xhc3MiLE1oKDYsejMsInRiLWNvbHVtbi0iK3QpKSxyYygxKSxEbSgibmdTd2l0Y2giLHQpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLkNIRUNLQk9YKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5FWFBFUklNRU5UX05BTUUpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLG4uUnVuc1RhYmxlQ29sdW1uLlJVTl9OQU1FKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIixuLlJ1bnNUYWJsZUNvbHVtbi5SVU5fQ09MT1IpfX1mdW5jdGlvbiAkMyh0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDQ4KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgpLml0ZW07cmMoMSksU3Uobi5ocGFyYW1zLmdldCh0Lm5hbWUpKX19ZnVuY3Rpb24gdDIodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiw0OCksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oKS5pdGVtO3JjKDEpLFN1KG4ubWV0cmljcy5nZXQodC50YWcpKX19ZnVuY3Rpb24gZTIodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDQyKSxRcCgxLFEzLDYsOCwic3BhbiIsNDMpLFFwKDIsJDMsMiwxLCJzcGFuIiw0NCksUXAoMyx0MiwyLDEsInNwYW4iLDQ0KSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS5pdGVtLG49WW0oKTtqcCgiZGF0YS1pZCIsdC5ydW4uaWQpLHJjKDEpLERtKCJuZ0Zvck9mIixuLmNvbHVtbnMpLHJjKDEpLERtKCJuZ0Zvck9mIixuLmhwYXJhbUNvbHVtbnMpLHJjKDEpLERtKCJuZ0Zvck9mIixuLm1ldHJpY0NvbHVtbnMpfX1jbGFzcyBuMiBleHRlbmRzIFpRe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLml0ZW1zUGVyUGFnZUxhYmVsPSJTaG93IHJ1bnM6In19bjIuybVmYWM9KGZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uIGUobil7cmV0dXJuKHR8fCh0PUFhKG4yKSkpKG58fG4yKX19KSgpLG4yLsm1cHJvdj1Nbih7dG9rZW46bjIsZmFjdG9yeTpuMi7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobjIsW3t0eXBlOmltfV0sbnVsbCxudWxsKTtjbGFzcyBvMntjb25zdHJ1Y3Rvcigpe3RoaXMuZGF0YVNvdXJjZT1uZXcgUzAsdGhpcy5Eb21haW5UeXBlPVpSLHRoaXMuUnVuc1RhYmxlQ29sdW1uPXZRLHRoaXMuU29ydFR5cGU9JFQsdGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlPW5ldyBMaCx0aGlzLm9uU2VsZWN0aW9uVG9nZ2xlPW5ldyBMaCx0aGlzLm9uUGFnZVNlbGVjdGlvblRvZ2dsZT1uZXcgTGgsdGhpcy5vblBhZ2luYXRpb25DaGFuZ2U9bmV3IExoLHRoaXMub25Tb3J0Q2hhbmdlPW5ldyBMaCx0aGlzLm9uUnVuQ29sb3JDaGFuZ2U9bmV3IExoLHRoaXMub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQ9bmV3IExoLHRoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQ9bmV3IExoLHRoaXMub25NZXRyaWNGaWx0ZXJDaGFuZ2VkPW5ldyBMaH1uZ09uQ2hhbmdlcygpe3RoaXMuZGF0YVNvdXJjZS5kYXRhPXRoaXMucGFnZUl0ZW1zfWdldEhwYXJhbUNvbHVtbklkKHQpe3JldHVybmBoOiR7dC5uYW1lfWB9Z2V0TWV0cmljQ29sdW1uSWQodCl7cmV0dXJuYG06JHt0LnRhZ31gfWdldENvbHVtbklkcygpe3JldHVyblsuLi50aGlzLmNvbHVtbnMsLi4udGhpcy5ocGFyYW1Db2x1bW5zLm1hcCh0aGlzLmdldEhwYXJhbUNvbHVtbklkKSwuLi50aGlzLm1ldHJpY0NvbHVtbnMubWFwKHRoaXMuZ2V0TWV0cmljQ29sdW1uSWQpXX1hbGxQYWdlSXRlbXNTZWxlY3RlZCgpe3JldHVybiBCb29sZWFuKHRoaXMucGFnZUl0ZW1zLmxlbmd0aCkmJnRoaXMucGFnZUl0ZW1zLmV2ZXJ5KCh0PT50LnNlbGVjdGVkKSl9c29tZVBhZ2VJdGVtc1NlbGVjdGVkKCl7cmV0dXJuIHRoaXMucGFnZUl0ZW1zLnNvbWUoKHQ9PnQuc2VsZWN0ZWQpKX1oYW5kbGVQYWdlVG9nZ2xlKCl7dGhpcy5vblBhZ2VTZWxlY3Rpb25Ub2dnbGUuZW1pdCh7aXRlbXM6dGhpcy5wYWdlSXRlbXN9KX1oYW5kbGVTb3J0Q2hhbmdlKHQpe2xldCBlO3N3aXRjaCh0LmRpcmVjdGlvbil7Y2FzZSJhc2MiOmU9Rk4uQVNDO2JyZWFrO2Nhc2UiZGVzYyI6ZT1GTi5ERVNDO2JyZWFrO2RlZmF1bHQ6ZT1GTi5VTlNFVH10aGlzLm9uU29ydENoYW5nZS5lbWl0KHtrZXk6dC5hY3RpdmUsZGlyZWN0aW9uOmV9KX1vbkZpbHRlcktleVVwKHQpe3RoaXMub25SZWdleEZpbHRlckNoYW5nZS5lbWl0KHQudGFyZ2V0LnZhbHVlKX10YWJsZVRyYWNrQnkodCxlKXtyZXR1cm4gZS5ydW4uaWR9aGFuZGxlSHBhcmFtSW5jbHVkZVVuZGVmaW5lZFRvZ2dsZWQodCl7Y29uc3R7bmFtZTplLGZpbHRlcjpufT10O2lmKCFuKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTtuLnR5cGU9PT1aUi5ESVNDUkVURT90aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkLmVtaXQoe2hwYXJhbU5hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOiFuLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyVmFsdWVzOm4uZmlsdGVyVmFsdWVzfSk6dGhpcy5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOmUsaW5jbHVkZVVuZGVmaW5lZDohbi5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6bi5maWx0ZXJMb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6bi5maWx0ZXJVcHBlclZhbHVlfSl9aGFuZGxlSHBhcmFtSW50ZXJ2YWxDaGFuZ2VkKHQsZSl7Y29uc3R7bmFtZTpuLGZpbHRlcjpvfT10O2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6bixpbmNsdWRlVW5kZWZpbmVkOm8uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOmUubG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOmUudXBwZXJWYWx1ZX0pfWhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZCh0LGUpe2NvbnN0e25hbWU6bixmaWx0ZXI6b309dDtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7aWYoby50eXBlIT09WlIuRElTQ1JFVEUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFyaWFudCBlcnJvcjogZXhwZWN0ZWQgZGlzY3JldGUgZG9tYWluIGZvciAke259YCk7Y29uc3QgaT1uZXcgU2V0KFsuLi5vLmZpbHRlclZhbHVlc10pO2kuaGFzKGUpP2kuZGVsZXRlKGUpOmkuYWRkKGUpLHRoaXMub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQuZW1pdCh7aHBhcmFtTmFtZTpuLGluY2x1ZGVVbmRlZmluZWQ6by5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlclZhbHVlczpbLi4uaV19KX1oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZCh0KXtpZighdC5maWx0ZXIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO3RoaXMub25NZXRyaWNGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6dC50YWcsaW5jbHVkZVVuZGVmaW5lZDohdC5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOnQuZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTp0LmZpbHRlci5maWx0ZXJVcHBlclZhbHVlfSl9aGFuZGxlTWV0cmljRmlsdGVyQ2hhbmdlZCh0LGUpe2lmKCF0LmZpbHRlcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTp0LnRhZyxpbmNsdWRlVW5kZWZpbmVkOnQuZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTplLmxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTplLnVwcGVyVmFsdWV9KX10cmFja0J5SHBhcmFtQ29sdW1uKHQpe3JldHVybiB0Lm5hbWV9dHJhY2tCeU1ldHJpY0NvbHVtbih0KXtyZXR1cm4gdC50YWd9fW8yLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvMil9LG8yLsm1Y21wPXRvKHt0eXBlOm8yLHNlbGVjdG9yczpbWyJydW5zLXRhYmxlLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKF8zLDcsaGcpLFFoKHQkLDcpLFFoKGEkLDcpKSwyJmUpe2xldCB0O0poKHQ9dGIoKSkmJihuLmZpbHRlcj10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5wYWdpbmF0b3I9dC5maXJzdCksSmgodD10YigpKSYmKG4uc29ydD10LmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJmbGV4LWxheW91dCIsbi51c2VGbGV4aWJsZUxheW91dCl9LGlucHV0czp7ZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIsc2hvd0V4cGVyaW1lbnROYW1lOiJzaG93RXhwZXJpbWVudE5hbWUiLGNvbHVtbnM6ImNvbHVtbnMiLGhwYXJhbUNvbHVtbnM6ImhwYXJhbUNvbHVtbnMiLG1ldHJpY0NvbHVtbnM6Im1ldHJpY0NvbHVtbnMiLGFsbEl0ZW1zTGVuZ3RoOiJhbGxJdGVtc0xlbmd0aCIsZmlsdGVyZWRJdGVtc0xlbmd0aDoiZmlsdGVyZWRJdGVtc0xlbmd0aCIsdXNlRmxleGlibGVMYXlvdXQ6InVzZUZsZXhpYmxlTGF5b3V0Iix1c2VQYWdpbmF0aW9uOiJ1c2VQYWdpbmF0aW9uIixzaG93R3JvdXBDb250cm9sOiJzaG93R3JvdXBDb250cm9sIixwYWdlSXRlbXM6InBhZ2VJdGVtcyIsbG9hZGluZzoibG9hZGluZyIsbnVtU2VsZWN0ZWRJdGVtczoibnVtU2VsZWN0ZWRJdGVtcyIsc29ydE9wdGlvbjoic29ydE9wdGlvbiIscGFnaW5hdGlvbk9wdGlvbjoicGFnaW5hdGlvbk9wdGlvbiIscmVnZXhGaWx0ZXI6InJlZ2V4RmlsdGVyIn0sb3V0cHV0czp7b25SZWdleEZpbHRlckNoYW5nZToib25SZWdleEZpbHRlckNoYW5nZSIsb25TZWxlY3Rpb25Ub2dnbGU6Im9uU2VsZWN0aW9uVG9nZ2xlIixvblBhZ2VTZWxlY3Rpb25Ub2dnbGU6Im9uUGFnZVNlbGVjdGlvblRvZ2dsZSIsb25QYWdpbmF0aW9uQ2hhbmdlOiJvblBhZ2luYXRpb25DaGFuZ2UiLG9uU29ydENoYW5nZToib25Tb3J0Q2hhbmdlIixvblJ1bkNvbG9yQ2hhbmdlOiJvblJ1bkNvbG9yQ2hhbmdlIixvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDoib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkOiJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsb25NZXRyaWNGaWx0ZXJDaGFuZ2VkOiJvbk1ldHJpY0ZpbHRlckNoYW5nZWQifSxmZWF0dXJlczpbcGcoW3twcm92aWRlOlpRLHVzZUNsYXNzOm4yfV0pLEJvXSxkZWNsczoxNSx2YXJzOjcsY29uc3RzOltbMSwiZmlsdGVyLXJvdyJdLFsicGxhY2Vob2xkZXIiLCJGaWx0ZXIgcnVucyAocmVnZXgpIiwxLCJydW4tZmlsdGVyIiwzLCJrZXl1cCJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbInJvbGUiLCJ0YWJsZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93Z3JvdXAiLDEsInJvd3MiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsImxvYWRpbmciLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tcnVucyIsNCwibmdJZiJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSIsNCwibmdJZiJdLFsiaGVhZGVyIiwiIl0sWyJyb3ciLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImxvYWRpbmciXSxbIm1vZGUiLCJpbmRldGVybWluYXRlIiwiZGlhbWV0ZXIiLCIyOCJdLFsxLCJuby1ydW5zIl0sWyJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsIiIsMywicGFnZVNpemVPcHRpb25zIiwicGFnZUluZGV4IiwicGFnZVNpemUiLCJsZW5ndGgiLCJwYWdlIl0sWyJyb2xlIiwicm93Z3JvdXAiLDEsImhlYWRlciJdLFsibWF0U29ydCIsIiIsInJvbGUiLCJyb3ciLDMsIm1hdFNvcnRBY3RpdmUiLCJtYXRTb3J0Q2hhbmdlIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdTd2l0Y2giXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJtYXQtc29ydC1oZWFkZXIiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiXSxbMywibWF0LXNvcnQtaGVhZGVyIl0sWzMsImV4cGVyaW1lbnRJZHMiLDQsIm5nSWYiXSxbMywiZXhwZXJpbWVudElkcyJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwiY29sdW1uIiwzLCJtYXQtc29ydC1oZWFkZXIiXSxbMSwibmFtZSJdLFs0LCJuZ0lmIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwiY2xpY2siXSxbInN2Z0ljb24iLCJmaWx0ZXJfYWx0XzI0cHgiXSxbImZpbHRlck1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLCJkaXNhYmxlUmlwcGxlIiwiIiwxLCJmaWx0ZXItbWVudS1jaGVja2JveC1yb3ciLDMsImNsaWNrIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbImRpc2FibGVSaXBwbGUiLCIiLCJtYXQtbWVudS1pdGVtIiwiIiwxLCJyYW5nZS1pbnB1dC1jb250YWluZXIiLDMsImNsaWNrIl0sWzMsIm1pbiIsIm1heCIsImxvd2VyVmFsdWUiLCJ1cHBlclZhbHVlIiwidmFsdWUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJjbGFzcyIsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsInJvbGUiLCJtZW51aXRlbWNoZWNrYm94IiwzLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDEsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsMywiY2xpY2siXSxbInJvbGUiLCJyb3ciXSxbInJvbGUiLCJjZWxsIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjZWxsIiwiY2xhc3MiLCJjb2x1bW4iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiXSxbImNsYXNzIiwibmFtZSIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsIm5nQ2xhc3MiLCJjb2xvclBpY2tlciIsImNwRGlhbG9nRGlzcGxheSIsImNwUG9zaXRpb25PZmZzZXQiLCJjcFVzZVJvb3RWaWV3Q29udGFpbmVyIiwiY3BPdXRwdXRGb3JtYXQiLCJjb2xvclBpY2tlckNoYW5nZSJdLFsicm9sZSIsImNlbGwiLDEsImNvbHVtbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJ0Yi1maWx0ZXItaW5wdXQiLDEpLFZtKCJrZXl1cCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25GaWx0ZXJLZXlVcChlKX0pKSxBbSgpLEFtKCksUm0oMiwiZGl2IiwyKSxSbSgzLCJkaXYiLDMpLFFwKDQsQzMsMSwwLCJuZy1jb250YWluZXIiLDQpLFJtKDUsImRpdiIsNSksUXAoNix4MywyLDQsIm5nLWNvbnRhaW5lciIsNiksQW0oKSxBbSgpLFFwKDcsTzMsMiwwLCJkaXYiLDcpLFFwKDgsUDMsMiwwLCJkaXYiLDgpLFFwKDksdzMsNiwxLCJkaXYiLDgpLEFtKCksUXAoMTAsUzMsMSw1LCJtYXQtcGFnaW5hdG9yIiw5KSxRcCgxMSxZMyw1LDYsIm5nLXRlbXBsYXRlIixudWxsLDEwLGliKSxRcCgxMyxlMiw0LDQsIm5nLXRlbXBsYXRlIixudWxsLDExLGliKSksMiZlKXtjb25zdCB0PSRwKDEyKTtyYyg0KSxEbSgibmdUZW1wbGF0ZU91dGxldCIsdCkscmMoMiksRG0oIm5nRm9yT2YiLG4ucGFnZUl0ZW1zKSgibmdGb3JUcmFja0J5IixuLnRhYmxlVHJhY2tCeSkscmMoMSksRG0oIm5nSWYiLG4ubG9hZGluZykscmMoMSksRG0oIm5nSWYiLCFuLmxvYWRpbmcmJjA9PT1uLmFsbEl0ZW1zTGVuZ3RoKSxyYygxKSxEbSgibmdJZiIsIW4ubG9hZGluZyYmbi5hbGxJdGVtc0xlbmd0aD4wJiYwPT09bi5maWx0ZXJlZEl0ZW1zTGVuZ3RoKSxyYygxKSxEbSgibmdJZiIsbi51c2VQYWdpbmF0aW9uKX19LGRpcmVjdGl2ZXM6W3EwLE1NLGxNLGRNLG8xLHQkLGEkLGFNLGZNLGdNLE9ZLG0kLHcxLFhILGVZLERXLEtXLFdXLEQxLGIzXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Zm9udC1zaXplOjEzcHg7b3ZlcmZsb3c6aGlkZGVufS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmV9LnRhYmxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpsYXlvdXQgcGFpbnQ7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCU7b3ZlcmZsb3cteDphdXRvO292ZXJmbG93LXk6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICAubmFtZVtfbmdjb250ZW50LSVDT01QJV17d29yZC1icmVhazpicmVhay13b3JkO292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nLWJvdHRvbToxMnB4fWJvZHkuZGFyay1tb2RlICAgLmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OnRhYmxlO3dpZHRoOjEwMCV9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1jb2x1bW5oZWFkZXJdW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBbcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1jb2x1bW5oZWFkZXJdW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOnN0cmljdDtkaXNwbGF5OnRhYmxlLXJvdztoZWlnaHQ6NDNweH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6dGFibGUtY2VsbDtwYWRkaW5nOjVweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjI0cHh9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV06bGFzdC1jaGlsZHtwYWRkaW5nLXJpZ2h0OjI0cHh9W3JvbGU9cm93Z3JvdXBdW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OnRhYmxlLXJvdy1ncm91cH1bcm9sZT1yb3dncm91cF0uaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OnRhYmxlLWhlYWRlci1ncm91cH0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV0sIC5uby1ydW5zW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5uby1ydW5zW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5zZWxlY3QtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxMnB4O3BhZGRpbmctdG9wOjEycHh9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS42O3RleHQtYWxpZ246bGVmdH0uc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmc6MCA0cHh9LmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweCAwIDIxcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICB0Yi1maWx0ZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxfS50Yi1jb2x1bW4tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdLCAudGItY29sdW1uLXJ1bl9jb2xvcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjBweH0udGItY29sdW1uLXJ1bl9jb2xvcltfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpjZW50ZXJ9LnJ1bi1jb2xvci1zd2F0Y2hbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtvdXRsaW5lOm5vbmV9LnJ1bi1jb2xvci1zd2F0Y2gubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYzZjYWQxO2JvcmRlci13aWR0aDoycHh9LnJhbmdlLWlucHV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OmF1dG99W19uZ2hvc3QtJUNPTVAlXSAgICAgbWF0LXBhZ2luYXRvciBtYXQtZm9ybS1maWVsZHttYXJnaW46MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVse2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTthbGlnbi1pdGVtczpjZW50ZXJ9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbCAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDowfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1sYWJlbHtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBtYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvMixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJydW5zLXRhYmxlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InJ1bnNfdGFibGVfY29tcG9uZW50Lm5nLmh0bWwiLGhvc3Q6eyJbY2xhc3MuZmxleC1sYXlvdXRdIjoidXNlRmxleGlibGVMYXlvdXQifSxzdHlsZVVybHM6WyJydW5zX3RhYmxlX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6WlEsdXNlQ2xhc3M6bjJ9XX1dfV0sbnVsbCx7ZXhwZXJpbWVudElkczpbe3R5cGU6eHl9XSxzaG93RXhwZXJpbWVudE5hbWU6W3t0eXBlOnh5fV0sY29sdW1uczpbe3R5cGU6eHl9XSxocGFyYW1Db2x1bW5zOlt7dHlwZTp4eX1dLG1ldHJpY0NvbHVtbnM6W3t0eXBlOnh5fV0sYWxsSXRlbXNMZW5ndGg6W3t0eXBlOnh5fV0sZmlsdGVyZWRJdGVtc0xlbmd0aDpbe3R5cGU6eHl9XSx1c2VGbGV4aWJsZUxheW91dDpbe3R5cGU6eHl9XSx1c2VQYWdpbmF0aW9uOlt7dHlwZTp4eX1dLHNob3dHcm91cENvbnRyb2w6W3t0eXBlOnh5fV0scGFnZUl0ZW1zOlt7dHlwZTp4eX1dLGxvYWRpbmc6W3t0eXBlOnh5fV0sbnVtU2VsZWN0ZWRJdGVtczpbe3R5cGU6eHl9XSxzb3J0T3B0aW9uOlt7dHlwZTp4eX1dLHBhZ2luYXRpb25PcHRpb246W3t0eXBlOnh5fV0scmVnZXhGaWx0ZXI6W3t0eXBlOnh5fV0sb25SZWdleEZpbHRlckNoYW5nZTpbe3R5cGU6T3l9XSxvblNlbGVjdGlvblRvZ2dsZTpbe3R5cGU6T3l9XSxvblBhZ2VTZWxlY3Rpb25Ub2dnbGU6W3t0eXBlOk95fV0sb25QYWdpbmF0aW9uQ2hhbmdlOlt7dHlwZTpPeX1dLG9uU29ydENoYW5nZTpbe3R5cGU6T3l9XSxvblJ1bkNvbG9yQ2hhbmdlOlt7dHlwZTpPeX1dLG9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkOlt7dHlwZTpPeX1dLG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkOlt7dHlwZTpPeX1dLG9uTWV0cmljRmlsdGVyQ2hhbmdlZDpbe3R5cGU6T3l9XSxmaWx0ZXI6W3t0eXBlOlphLGFyZ3M6WyJmaWx0ZXIiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0scGFnaW5hdG9yOlt7dHlwZTpaYSxhcmdzOlt0JCx7c3RhdGljOiEwfV19XSxzb3J0Olt7dHlwZTpaYSxhcmdzOlthJCx7c3RhdGljOiEwfV19XX0pO2NvbnN0IGkyPVp3KHBOLCh0PT50LnN0YXRlPT09eUUuTE9BRElORykpO2Z1bmN0aW9uIGEyKHQsZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSAkVC5FWFBFUklNRU5UX05BTUU6cmV0dXJuW3QuZXhwZXJpbWVudEFsaWFzLHQucnVuLm5hbWUsdC5ydW4uaWRdO2Nhc2UgJFQuUlVOX05BTUU6cmV0dXJuW3QucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2Nhc2UgJFQuSFBBUkFNOnJldHVyblt0LmhwYXJhbXMuZ2V0KGUubmFtZSksdC5ydW4ubmFtZSx0LmV4cGVyaW1lbnRBbGlhcyx0LnJ1bi5pZF07Y2FzZSAkVC5NRVRSSUM6cmV0dXJuW3QubWV0cmljcy5nZXQoZS50YWcpLHQucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkOiAke2V9YCl9fWZ1bmN0aW9uIHIyKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dC5pbmNsdWRlVW5kZWZpbmVkOnQudHlwZT09PVpSLkRJU0NSRVRFP3QuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGUpOnQudHlwZT09PVpSLklOVEVSVkFMJiZ0LmZpbHRlckxvd2VyVmFsdWU8PWUmJmU8PXQuZmlsdGVyVXBwZXJWYWx1ZX1jbGFzcyBzMntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2FkaW5nJD1udWxsLHRoaXMuaHBhcmFtQ29sdW1ucyQ9RXQoW10pLHRoaXMubWV0cmljQ29sdW1ucyQ9RXQoW10pLHRoaXMudXNlRmxleGlibGVMYXlvdXQ9ITEsdGhpcy51c2VQYWdpbmF0aW9uPSExLHRoaXMuY29sdW1ucz1bdlEuUlVOX05BTUVdLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzPSExLHRoaXMuc29ydE9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QoeU4pLHRoaXMucGFnaW5hdGlvbk9wdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QoYk4pLHRoaXMucmVnZXhGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KGdOKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEl9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKHQ9PnQ9PT12US5FWFBFUklNRU5UX05BTUUpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9V3QodGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5nZXRSdW5UYWJsZUl0ZW1zRm9yRXhwZXJpbWVudCh0KSkpKS5waXBlKEl0KCh0PT5bXS5jb25jYXQoLi4udCkpKSk7dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkPXQucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEFlKDEpKSx0aGlzLmFsbEl0ZW1zTGVuZ3RoJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShJdCgodD0+dC5sZW5ndGgpKSk7Y29uc3QgZT10aGlzLmdldEZpbHRlcmVkSXRlbXMkKHRoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJCkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEFlKDEpKTt0aGlzLmZpbHRlcmVkSXRlbXNMZW5ndGgkPWUucGlwZShJdCgodD0+dC5sZW5ndGgpKSksdGhpcy5wYWdlSXRlbXMkPXRoaXMuc29ydGVkQW5kU2xpY2VkSXRlbXMkKGUpLHRoaXMubnVtU2VsZWN0ZWRJdGVtcyQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoSXQoKHQ9PnQucmVkdWNlKCgodCxlKT0+dCtOdW1iZXIoZS5zZWxlY3RlZCkpLDApKSkpO2NvbnN0IG49dGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5zdG9yZS5zZWxlY3QoaTIse2V4cGVyaW1lbnRJZDp0fSkpKTtpZih0aGlzLmxvYWRpbmckPVd0KG4pLnBpcGUoSXQoKHQ9PnQuc29tZSgodD0+dCkpKSkpLHRoaXMuc2hvd0hwYXJhbXNBbmRNZXRyaWNzKXtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KFNRLHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pO3RoaXMuaHBhcmFtQ29sdW1ucyQ9V3QoW3RoaXMuc3RvcmUuc2VsZWN0KFBRLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoSXQoKChbdCx7aHBhcmFtczplfV0pPT5lLm1hcCgoKHtuYW1lOmUsZGlzcGxheU5hbWU6bn0pPT57Y29uc3Qgbz10LmdldChlKTtpZighbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBhIGZpbHRlciBmb3IgJHtlfSBtdXN0IGV4aXN0IHdoZW4gdGhlIGhwYXJhbSBleGlzdHNgKTtyZXR1cm57ZGlzcGxheU5hbWU6bixuYW1lOmUsZmlsdGVyOm99fSkpKSkpLHRoaXMubWV0cmljQ29sdW1ucyQ9V3QoW3RoaXMuc3RvcmUuc2VsZWN0KGtRLHRoaXMuZXhwZXJpbWVudElkcyksdF0pLnBpcGUoSXQoKChbdCx7bWV0cmljczplfV0pPT5lLm1hcCgoKHt0YWc6ZSxkaXNwbGF5TmFtZTpufSk9Pntjb25zdCBvPXQuZ2V0KGUpO2lmKCFvKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke2V9IG11c3QgZXhpc3Qgd2hlbiB0aGUgbWV0cmljIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTpuLHRhZzplLGZpbHRlcjpvfX0pKSkpKX10aGlzLmNvbHVtbnMuaW5jbHVkZXModlEuQ0hFQ0tCT1gpJiZ0aGlzLnN0b3JlLnNlbGVjdChOUykucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHplKCgoKT0+dC5waXBlKGNlKCh0PT50Lmxlbmd0aD41MDApKSxiZSgxKSkpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gobHooe2xvY2FsaXplZE1lc3NhZ2U6IlRoZSBudW1iZXIgb2YgcnVucyBleGNlZWRzIDUwMC4gTmV3IHJ1bnMgYXJlIHVuc2VsZWN0ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIn0pKX0pKSx0aGlzLnNob3dHcm91cENvbnRyb2wkPXRoaXMuc3RvcmUuc2VsZWN0KGVFKS5waXBlKEl0KCh0PT50JiZ0aGlzLmNvbHVtbnMuaW5jbHVkZXModlEuUlVOX0NPTE9SKSkpKSx0aGlzLnN0b3JlLmRpc3BhdGNoKFVSKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0RmlsdGVyZWRJdGVtcyQodCl7cmV0dXJuIFd0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KGdOKV0pLnBpcGUoSXQoKChbdCxlXSk9PntpZighZSlyZXR1cm4gdDtjb25zdCBuPXRoaXMuY29sdW1ucy5pbmNsdWRlcyh2US5FWFBFUklNRU5UX05BTUUpO3JldHVybiB0LmZpbHRlcigodD0+VE4oe3J1bk5hbWU6dC5ydW4ubmFtZSxleHBlcmltZW50QWxpYXM6dC5leHBlcmltZW50QWxpYXMsZXhwZXJpbWVudE5hbWU6dC5leHBlcmltZW50TmFtZX0sZSxuKSkpfSkpLHplKCh0PT50aGlzLnNob3dIcGFyYW1zQW5kTWV0cmljcz9XdCh0aGlzLnN0b3JlLnNlbGVjdChQUSx0aGlzLmV4cGVyaW1lbnRJZHMpLHRoaXMuc3RvcmUuc2VsZWN0KGtRLHRoaXMuZXhwZXJpbWVudElkcykpLnBpcGUoSXQoKChbZSxuXSk9PnQuZmlsdGVyKCgoe2hwYXJhbXM6dCxtZXRyaWNzOm99KT0+Wy4uLmUuZW50cmllcygpXS5ldmVyeSgoKFtlLG5dKT0+cjIobix0LmdldChlKSkpKSYmWy4uLm4uZW50cmllcygpXS5ldmVyeSgoKFt0LGVdKT0+cjIoZSxvLmdldCh0KSkpKSkpKSkpOkV0KHQpKSkpfXNvcnRlZEFuZFNsaWNlZEl0ZW1zJCh0KXtjb25zdCBlPVd0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KHlOKV0pLnBpcGUoSXQoKChbdCxlXSk9PihmdW5jdGlvbiBuKHQsZSl7Y29uc3Qgbj1lLmtleSxvPVsuLi50XTtyZXR1cm4gbnVsbD09PW58fGUuZGlyZWN0aW9uPT09Rk4uVU5TRVR8fG8uc29ydCgoKHQsbyk9Pntjb25zdCBpPWEyKHQsbiksYT1hMihvLG4pO2lmKGkubGVuZ3RoIT09YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZ2l2ZW4gc29ydCBzaG91bGQgcmVzdWx0IGluIHNhbWUgbnVtYmVyIG9mIGl0ZW1zOiAke2V9YCk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IG49aVt0XSxvPWFbdF07aWYobiE9PW8pe2lmKHZvaWQgMD09PW58fHZvaWQgMD09PW8pcmV0dXJuIHZvaWQgMD09PW8/LTE6MTtpZih0eXBlb2YgbiE9dHlwZW9mIG8pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tcGFyZSB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzOiAke3R5cGVvZiBufSB2cy4gJHt0eXBlb2Ygb31gKTtyZXR1cm4gbjxvPT0oZS5kaXJlY3Rpb249PT1GTi5BU0MpPy0xOjF9fXJldHVybiAwfSkpLG99KSh0LGUpKSkpO3JldHVybiBXdChbZSx0aGlzLnN0b3JlLnNlbGVjdChiTildKS5waXBlKEl0KCgoW3QsZV0pPT57aWYoIXRoaXMudXNlUGFnaW5hdGlvbilyZXR1cm4gdC5zbGljZSgpO2NvbnN0e3BhZ2VTaXplOm4scGFnZUluZGV4Om99PWU7cmV0dXJuIHQuc2xpY2UobypuLChvKzEpKm4pfSkpLE5lKFtdKSl9Z2V0UnVuVGFibGVJdGVtc0ZvckV4cGVyaW1lbnQodCl7cmV0dXJuIFd0KFt0aGlzLnN0b3JlLnNlbGVjdChsTix7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdCh1QSx7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChOTiksdGhpcy5zdG9yZS5zZWxlY3Qoek4pLHRoaXMuc3RvcmUuc2VsZWN0KHpTKV0pLnBpcGUoSXQoKChbZSxuLG8saSxhXSk9PmUubWFwKChlPT57Y29uc3Qgcj1uZXcgTWFwOyhlLmhwYXJhbXN8fFtdKS5mb3JFYWNoKCh0PT57ci5zZXQodC5uYW1lLHQudmFsdWUpfSkpO2NvbnN0IHM9bmV3IE1hcDtyZXR1cm4oZS5tZXRyaWNzfHxbXSkuZm9yRWFjaCgodD0+e3Muc2V0KHQudGFnLHQudmFsdWUpfSkpLHtydW46ZSxleHBlcmltZW50TmFtZToobnVsbD09bj92b2lkIDA6bi5uYW1lKXx8IiIsZXhwZXJpbWVudEFsaWFzOmFbdF0sc2VsZWN0ZWQ6Qm9vbGVhbihvJiZvLmdldChlLmlkKSkscnVuQ29sb3I6aVtlLmlkXSxocGFyYW1zOnIsbWV0cmljczpzfX0pKSkpKX1vblJ1blNlbGVjdGlvblRvZ2dsZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEhSKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxydW5JZDp0LnJ1bi5pZH0pKX1vblBhZ2VTZWxlY3Rpb25Ub2dnbGUodCl7Y29uc3R7aXRlbXM6ZX09dCxuPWUubWFwKCgoe3J1bjp0fSk9PnQuaWQpKTt0aGlzLnN0b3JlLmRpc3BhdGNoKEZSKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxydW5JZHM6bn0pKX1vblBhZ2luYXRpb25DaGFuZ2UodCl7aWYoIXRoaXMudXNlUGFnaW5hdGlvbil0aHJvdyBuZXcgRXJyb3IoIlBhZ2luYXRpb24gZXZlbnRzIGNhbm5vdCBiZSBkaXNwYXRjaGVkIHdoZW4gcGFnaW5hdGlvbiBpcyBkaXNhYmxlZCIpO2NvbnN0e3BhZ2VJbmRleDplLHBhZ2VTaXplOm59PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChMUih7cGFnZUluZGV4OmUscGFnZVNpemU6bn0pKX1vblNvcnRDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChCUih0KSl9b25SZWdleEZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFZSKHtyZWdleFN0cmluZzp0fSkpfW9uUnVuQ29sb3JDaGFuZ2Uoe3J1bklkOnQsbmV3Q29sb3I6ZX0pe3RoaXMuc3RvcmUuZGlzcGF0Y2goalIoe3J1bklkOnQsbmV3Q29sb3I6ZX0pKX1vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCh0KXtjb25zdHtocGFyYW1OYW1lOmUsZmlsdGVyVmFsdWVzOm4saW5jbHVkZVVuZGVmaW5lZDpvfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goS1Ioe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGhwYXJhbU5hbWU6ZSxmaWx0ZXJWYWx1ZXM6bixpbmNsdWRlVW5kZWZpbmVkOm99KSl9b25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQodCl7Y29uc3R7bmFtZTplLGZpbHRlckxvd2VyVmFsdWU6bixmaWx0ZXJVcHBlclZhbHVlOm8saW5jbHVkZVVuZGVmaW5lZDppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goSlIoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGhwYXJhbU5hbWU6ZSxmaWx0ZXJMb3dlclZhbHVlOm4sZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6aX0pKX1vbk1ldHJpY0ZpbHRlckNoYW5nZWQodCl7Y29uc3R7bmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goUVIoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLG1ldHJpY1RhZzplLGluY2x1ZGVVbmRlZmluZWQ6bixmaWx0ZXJMb3dlclZhbHVlOm8sZmlsdGVyVXBwZXJWYWx1ZTppfSkpfX1zMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8czIpKFNtKEl3KSl9LHMyLsm1Y21wPXRvKHt0eXBlOnMyLHNlbGVjdG9yczpbWyJydW5zLXRhYmxlIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJmbGV4LWxheW91dCIsbi51c2VGbGV4aWJsZUxheW91dCl9LGlucHV0czp7dXNlRmxleGlibGVMYXlvdXQ6InVzZUZsZXhpYmxlTGF5b3V0Iix1c2VQYWdpbmF0aW9uOiJ1c2VQYWdpbmF0aW9uIixjb2x1bW5zOiJjb2x1bW5zIixleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixzaG93SHBhcmFtc0FuZE1ldHJpY3M6InNob3dIcGFyYW1zQW5kTWV0cmljcyJ9LGRlY2xzOjEyLHZhcnM6MzgsY29uc3RzOltbMywiZXhwZXJpbWVudElkcyIsInVzZUZsZXhpYmxlTGF5b3V0IiwibnVtU2VsZWN0ZWRJdGVtcyIsImNvbHVtbnMiLCJocGFyYW1Db2x1bW5zIiwibWV0cmljQ29sdW1ucyIsInNob3dFeHBlcmltZW50TmFtZSIsInBhZ2VJdGVtcyIsImZpbHRlcmVkSXRlbXNMZW5ndGgiLCJhbGxJdGVtc0xlbmd0aCIsImxvYWRpbmciLCJwYWdpbmF0aW9uT3B0aW9uIiwicmVnZXhGaWx0ZXIiLCJzaG93R3JvdXBDb250cm9sIiwic29ydE9wdGlvbiIsInVzZVBhZ2luYXRpb24iLCJvblNlbGVjdGlvblRvZ2dsZSIsIm9uUGFnZVNlbGVjdGlvblRvZ2dsZSIsIm9uUGFnaW5hdGlvbkNoYW5nZSIsIm9uUmVnZXhGaWx0ZXJDaGFuZ2UiLCJvblNvcnRDaGFuZ2UiLCJvblJ1bkNvbG9yQ2hhbmdlIiwib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQiLCJvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCIsIm9uTWV0cmljRmlsdGVyQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwicnVucy10YWJsZS1jb21wb25lbnQiLDApLFZtKCJvblNlbGVjdGlvblRvZ2dsZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SdW5TZWxlY3Rpb25Ub2dnbGUoZSl9KSkoIm9uUGFnZVNlbGVjdGlvblRvZ2dsZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlU2VsZWN0aW9uVG9nZ2xlKGUpfSkpKCJvblBhZ2luYXRpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUGFnaW5hdGlvbkNoYW5nZShlKX0pKSgib25SZWdleEZpbHRlckNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleEZpbHRlckNoYW5nZShlKX0pKSgib25Tb3J0Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblNvcnRDaGFuZ2UoZSl9KSkoIm9uUnVuQ29sb3JDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUnVuQ29sb3JDaGFuZ2UoZSl9KSkoIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZChlKX0pKSgib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKGUpfSkpKCJvbk1ldHJpY0ZpbHRlckNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uTWV0cmljRmlsdGVyQ2hhbmdlZChlKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBaCg0LCJhc3luYyIpLEFoKDUsImFzeW5jIiksQWgoNiwiYXN5bmMiKSxBaCg3LCJhc3luYyIpLEFoKDgsImFzeW5jIiksQWgoOSwiYXN5bmMiKSxBaCgxMCwiYXN5bmMiKSxBaCgxMSwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJleHBlcmltZW50SWRzIixuLmV4cGVyaW1lbnRJZHMpKCJ1c2VGbGV4aWJsZUxheW91dCIsbi51c2VGbGV4aWJsZUxheW91dCkoIm51bVNlbGVjdGVkSXRlbXMiLFRoKDEsMTYsbi5udW1TZWxlY3RlZEl0ZW1zJCkpKCJjb2x1bW5zIixuLmNvbHVtbnMpKCJocGFyYW1Db2x1bW5zIixUaCgyLDE4LG4uaHBhcmFtQ29sdW1ucyQpKSgibWV0cmljQ29sdW1ucyIsVGgoMywyMCxuLm1ldHJpY0NvbHVtbnMkKSkoInNob3dFeHBlcmltZW50TmFtZSIsbi5pc0V4cGVyaW1lbnROYW1lVmlzaWJsZSgpKSgicGFnZUl0ZW1zIixUaCg0LDIyLG4ucGFnZUl0ZW1zJCkpKCJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIixUaCg1LDI0LG4uZmlsdGVyZWRJdGVtc0xlbmd0aCQpKSgiYWxsSXRlbXNMZW5ndGgiLFRoKDYsMjYsbi5hbGxJdGVtc0xlbmd0aCQpKSgibG9hZGluZyIsVGgoNywyOCxuLmxvYWRpbmckKSkoInBhZ2luYXRpb25PcHRpb24iLFRoKDgsMzAsbi5wYWdpbmF0aW9uT3B0aW9uJCkpKCJyZWdleEZpbHRlciIsVGgoOSwzMixuLnJlZ2V4RmlsdGVyJCkpKCJzaG93R3JvdXBDb250cm9sIixUaCgxMCwzNCxuLnNob3dHcm91cENvbnRyb2wkKSkoInNvcnRPcHRpb24iLFRoKDExLDM2LG4uc29ydE9wdGlvbiQpKSgidXNlUGFnaW5hdGlvbiIsbi51c2VQYWdpbmF0aW9uKX0sZGlyZWN0aXZlczpbbzJdLHBpcGVzOlt3TV0sc3R5bGVzOlsiLmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICAgPiBydW5zLXRhYmxlLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoczIsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoicnVucy10YWJsZSIsdGVtcGxhdGU6J1xuICAgIDxydW5zLXRhYmxlLWNvbXBvbmVudFxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIlxuICAgICAgW3VzZUZsZXhpYmxlTGF5b3V0XT0idXNlRmxleGlibGVMYXlvdXQiXG4gICAgICBbbnVtU2VsZWN0ZWRJdGVtc109Im51bVNlbGVjdGVkSXRlbXMkIHwgYXN5bmMiXG4gICAgICBbY29sdW1uc109ImNvbHVtbnMiXG4gICAgICBbaHBhcmFtQ29sdW1uc109ImhwYXJhbUNvbHVtbnMkIHwgYXN5bmMiXG4gICAgICBbbWV0cmljQ29sdW1uc109Im1ldHJpY0NvbHVtbnMkIHwgYXN5bmMiXG4gICAgICBbc2hvd0V4cGVyaW1lbnROYW1lXT0iaXNFeHBlcmltZW50TmFtZVZpc2libGUoKSJcbiAgICAgIFtwYWdlSXRlbXNdPSJwYWdlSXRlbXMkIHwgYXN5bmMiXG4gICAgICBbZmlsdGVyZWRJdGVtc0xlbmd0aF09ImZpbHRlcmVkSXRlbXNMZW5ndGgkIHwgYXN5bmMiXG4gICAgICBbYWxsSXRlbXNMZW5ndGhdPSJhbGxJdGVtc0xlbmd0aCQgfCBhc3luYyJcbiAgICAgIFtsb2FkaW5nXT0ibG9hZGluZyQgfCBhc3luYyJcbiAgICAgIFtwYWdpbmF0aW9uT3B0aW9uXT0icGFnaW5hdGlvbk9wdGlvbiQgfCBhc3luYyJcbiAgICAgIFtyZWdleEZpbHRlcl09InJlZ2V4RmlsdGVyJCB8IGFzeW5jIlxuICAgICAgW3Nob3dHcm91cENvbnRyb2xdPSJzaG93R3JvdXBDb250cm9sJCB8IGFzeW5jIlxuICAgICAgW3NvcnRPcHRpb25dPSJzb3J0T3B0aW9uJCB8IGFzeW5jIlxuICAgICAgW3VzZVBhZ2luYXRpb25dPSJ1c2VQYWdpbmF0aW9uIlxuICAgICAgKG9uU2VsZWN0aW9uVG9nZ2xlKT0ib25SdW5TZWxlY3Rpb25Ub2dnbGUoJGV2ZW50KSJcbiAgICAgIChvblBhZ2VTZWxlY3Rpb25Ub2dnbGUpPSJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUoJGV2ZW50KSJcbiAgICAgIChvblBhZ2luYXRpb25DaGFuZ2UpPSJvblBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvblJlZ2V4RmlsdGVyQ2hhbmdlKT0ib25SZWdleEZpbHRlckNoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uU29ydENoYW5nZSk9Im9uU29ydENoYW5nZSgkZXZlbnQpIlxuICAgICAgKG9uUnVuQ29sb3JDaGFuZ2UpPSJvblJ1bkNvbG9yQ2hhbmdlKCRldmVudCkiXG4gICAgICAob25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQpPSJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCgkZXZlbnQpIlxuICAgICAgKG9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKT0ib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChvbk1ldHJpY0ZpbHRlckNoYW5nZWQpPSJvbk1ldHJpY0ZpbHRlckNoYW5nZWQoJGV2ZW50KSJcbiAgICA+PC9ydW5zLXRhYmxlLWNvbXBvbmVudD5cbiAgJyxob3N0OnsiW2NsYXNzLmZsZXgtbGF5b3V0XSI6InVzZUZsZXhpYmxlTGF5b3V0In0sc3R5bGVzOlsiXG4gICAgICA6aG9zdC5mbGV4LWxheW91dCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LmZsZXgtbGF5b3V0ID4gcnVucy10YWJsZS1jb21wb25lbnQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLHt1c2VGbGV4aWJsZUxheW91dDpbe3R5cGU6eHl9XSx1c2VQYWdpbmF0aW9uOlt7dHlwZTp4eX1dLGNvbHVtbnM6W3t0eXBlOnh5fV0sZXhwZXJpbWVudElkczpbe3R5cGU6eHl9XSxzaG93SHBhcmFtc0FuZE1ldHJpY3M6W3t0eXBlOnh5fV19KTtjbGFzcyBsMnt9bDIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGwyKX0sbDIuybVjbXA9dG8oe3R5cGU6bDIsc2VsZWN0b3JzOltbInJ1bnMtc2VsZWN0b3ItY29tcG9uZW50Il1dLGlucHV0czp7ZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyIsc2hvd0hwYXJhbXNBbmRNZXRyaWNzOiJzaG93SHBhcmFtc0FuZE1ldHJpY3MiLGNvbHVtbnM6ImNvbHVtbnMifSxkZWNsczoxLHZhcnM6NCxjb25zdHM6W1szLCJ1c2VGbGV4aWJsZUxheW91dCIsImNvbHVtbnMiLCJleHBlcmltZW50SWRzIiwic2hvd0hwYXJhbXNBbmRNZXRyaWNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJlRtKDAsInJ1bnMtdGFibGUiLDApLDImZSYmRG0oInVzZUZsZXhpYmxlTGF5b3V0IiwhMCkoImNvbHVtbnMiLG4uY29sdW1ucykoImV4cGVyaW1lbnRJZHMiLG4uZXhwZXJpbWVudElkcykoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsbi5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOltzMl0sc3R5bGVzOlsicnVucy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGwyLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InJ1bnMtc2VsZWN0b3ItY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPHJ1bnMtdGFibGVcbiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InRydWUiXG4gICAgICBbY29sdW1uc109ImNvbHVtbnMiXG4gICAgICBbZXhwZXJpbWVudElkc109ImV4cGVyaW1lbnRJZHMiXG4gICAgICBbc2hvd0hwYXJhbXNBbmRNZXRyaWNzXT0ic2hvd0hwYXJhbXNBbmRNZXRyaWNzIlxuICAgID48L3J1bnMtdGFibGU+XG4gICcsc3R5bGVzOlsiXG4gICAgICBydW5zLXRhYmxlIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse2V4cGVyaW1lbnRJZHM6W3t0eXBlOnh5fV0sc2hvd0hwYXJhbXNBbmRNZXRyaWNzOlt7dHlwZTp4eX1dLGNvbHVtbnM6W3t0eXBlOnh5fV19KTtjbGFzcyBjMntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5leHBlcmltZW50SWRzJD10aGlzLnN0b3JlLnNlbGVjdChUUykucGlwZShJdCgodD0+bnVsbCE9dD90OltdKSkpLHRoaXMuY29sdW1ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoVFMpLnBpcGUoSXQoKHQ9Plt2US5DSEVDS0JPWCx2US5SVU5fTkFNRSx0JiZ0Lmxlbmd0aD4xP3ZRLkVYUEVSSU1FTlRfTkFNRTpudWxsLHZRLlJVTl9DT0xPUl0uZmlsdGVyKCh0PT5udWxsIT09dCkpKSkpfX1jMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8YzIpKFNtKEl3KSl9LGMyLsm1Y21wPXRvKHt0eXBlOmMyLHNlbGVjdG9yczpbWyJydW5zLXNlbGVjdG9yIl1dLGlucHV0czp7c2hvd0hwYXJhbXNBbmRNZXRyaWNzOiJzaG93SHBhcmFtc0FuZE1ldHJpY3MifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJleHBlcmltZW50SWRzIiwiY29sdW1ucyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwicnVucy1zZWxlY3Rvci1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSksMiZlJiZEbSgiZXhwZXJpbWVudElkcyIsVGgoMSwzLG4uZXhwZXJpbWVudElkcyQpKSgiY29sdW1ucyIsVGgoMiw1LG4uY29sdW1ucyQpKSgic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixuLnNob3dIcGFyYW1zQW5kTWV0cmljcyl9LGRpcmVjdGl2ZXM6W2wyXSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoYzIsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoicnVucy1zZWxlY3RvciIsdGVtcGxhdGU6J1xuICAgIDxydW5zLXNlbGVjdG9yLWNvbXBvbmVudFxuICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzJCB8IGFzeW5jIlxuICAgICAgW2NvbHVtbnNdPSJjb2x1bW5zJCB8IGFzeW5jIlxuICAgICAgW3Nob3dIcGFyYW1zQW5kTWV0cmljc109InNob3dIcGFyYW1zQW5kTWV0cmljcyJcbiAgICA+PC9ydW5zLXNlbGVjdG9yLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLHtzaG93SHBhcmFtc0FuZE1ldHJpY3M6W3t0eXBlOnh5fV19KTtjb25zdCBkMj1uZXcgV2Vha01hcDtjbGFzcyBwMntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucm9vdD10LHRoaXMuYnVmZmVyPWUsdGhpcy5kZXN0cm95ZWRUYXJnZXRzPW5ldyBXZWFrU2V0fWluaXRpYWxpemUodCl7dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcnx8KHRoaXMuaW50ZXJzZWN0aW9uQ2FsbGJhY2s9dCx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih0aGlzLm9uQ2FyZEludGVyc2VjdGlvbi5iaW5kKHRoaXMpLHt0aHJlc2hvbGQ6MCxyb290OnRoaXMucm9vdCxyb290TWFyZ2luOnRoaXMuYnVmZmVyfSkpfWFkZCh0KXt0aGlzLmVuc3VyZUluaXRpYWxpemVkKCkmJnRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0KX13aWxsRGVzdHJveSh0KXt0aGlzLmVuc3VyZUluaXRpYWxpemVkKCkmJnRoaXMuZGVzdHJveWVkVGFyZ2V0cy5hZGQodCl9ZW5zdXJlSW5pdGlhbGl6ZWQoKXtpZighdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcil0aHJvdyBuZXcgRXJyb3IoIkNhcmRPYnNlcnZlciBtdXN0IGJlIGluaXRpYWxpemVkIGJlZm9yZSB1c2UiKTtyZXR1cm4hMH1vbkNhcmRJbnRlcnNlY3Rpb24odCl7dC5zb3J0KCgodCxlKT0+dC50aW1lLWUudGltZSkpO2NvbnN0IGU9bmV3IFNldCxuPW5ldyBTZXQ7Zm9yKGNvbnN0e2lzSW50ZXJzZWN0aW5nOm8sdGFyZ2V0Oml9b2YgdClvPyhlLmFkZChpKSxuLmRlbGV0ZShpKSk6KGUuZGVsZXRlKGkpLG4uYWRkKGkpKSx0aGlzLmRlc3Ryb3llZFRhcmdldHMuaGFzKGkpJiYhbyYmKHRoaXMuZGVzdHJveWVkVGFyZ2V0cy5kZWxldGUoaSksdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci51bm9ic2VydmUoaSkpO3RoaXMuaW50ZXJzZWN0aW9uQ2FsbGJhY2soZSxuKX1vbkNhcmRJbnRlcnNlY3Rpb25Gb3JUZXN0KHQpe3RoaXMub25DYXJkSW50ZXJzZWN0aW9uKHQpfX1jbGFzcyBtMntjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaG9zdD10LHRoaXMuc3RvcmU9ZX1vbkNhcmRJbnRlcnNlY3Rpb24odCxlKXtjb25zdCBuPVsuLi50XS5tYXAoKHQ9Pntjb25zdCBlPWQyLmdldCh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkEgQ2FyZE9ic2VydmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgZWxlbWVudCBpZCBhbmQgY2FyZCBpZC4iKTtyZXR1cm57ZWxlbWVudElkOmUuZWxlbWVudElkLGNhcmRJZDplLmNhcmRJZH19KSksbz1bLi4uZV0ubWFwKCh0PT57Y29uc3QgZT1kMi5nZXQodCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJBIENhcmRPYnNlcnZlciBlbGVtZW50IG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGVsZW1lbnQgaWQgYW5kIGNhcmQgaWQuIik7cmV0dXJue2VsZW1lbnRJZDplLmVsZW1lbnRJZCxjYXJkSWQ6ZS5jYXJkSWR9fSkpO3RoaXMuc3RvcmUuZGlzcGF0Y2goJEUoe2VudGVyZWRDYXJkczpuLGV4aXRlZENhcmRzOm99KSl9bmdPbkluaXQoKXtjb25zdCB0PXRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O2QyLnNldCh0LHtlbGVtZW50SWQ6KGhRKyssU3ltYm9sKGhRKSksY2FyZElkOnRoaXMuY2FyZElkfSksdGhpcy5jYXJkT2JzZXJ2ZXJ8fCh0aGlzLmNhcmRPYnNlcnZlcj1uZXcgcDIpLHRoaXMuY2FyZE9ic2VydmVyLmluaXRpYWxpemUodGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24uYmluZCh0aGlzKSksdGhpcy5jYXJkT2JzZXJ2ZXIuYWRkKHQpfW5nT25EZXN0cm95KCl7dGhpcy5jYXJkT2JzZXJ2ZXImJnRoaXMuY2FyZE9ic2VydmVyLndpbGxEZXN0cm95KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KX1ob3N0Rm9yVGVzdCgpe3JldHVybiB0aGlzLmhvc3R9fW0yLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtMikoU20oaGcpLFNtKEl3KSl9LG0yLsm1ZGlyPWxvKHt0eXBlOm0yLHNlbGVjdG9yczpbWyIiLCJjYXJkTGF6eUxvYWRlciIsIiJdXSxpbnB1dHM6e2NhcmRJZDpbImNhcmRMYXp5TG9hZGVyIiwiY2FyZElkIl0sY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobTIsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW2NhcmRMYXp5TG9hZGVyXSJ9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6SXd9XX0pLHtjYXJkSWQ6W3t0eXBlOnh5LGFyZ3M6WyJjYXJkTGF6eUxvYWRlciJdfV0sY2FyZE9ic2VydmVyOlt7dHlwZTp4eX1dfSk7Y29uc3QgdTI9Ii9zY2FsYXJfc3VtbWFyeSI7ZnVuY3Rpb24gZjIodCxlKXtsZXQgbj10O3JldHVybiBlJiZ0LnN0YXJ0c1dpdGgoZSsiLyIpJiYobj10LnNsaWNlKGUubGVuZ3RoKzEpKSxuLmVuZHNXaXRoKHUyKSYmKG49bi5zbGljZSgwLC11Mi5sZW5ndGgpKSxufHx0fWZ1bmN0aW9uIGcyKHQsZSl7bGV0IG49MCxvPTA7Zm9yKDs7KXtpZihuPT09dC5sZW5ndGgpcmV0dXJuIG89PT1lLmxlbmd0aD8wOi0xO2lmKG89PT1lLmxlbmd0aClyZXR1cm4gMTtpZihiMih0W25dKSYmYjIoZVtvXSkpe2NvbnN0IGk9bixhPW87bj1oMih0LG4rMSksbz1oMihlLG8rMSk7Y29uc3Qgcj1OdW1iZXIodC5zbGljZShpLG4pKSxzPU51bWJlcihlLnNsaWNlKGEsbykpO2lmKHI8cylyZXR1cm4tMTtpZihyPnMpcmV0dXJuIDF9ZWxzZXtpZih5Mih0W25dKSl7aWYoIXkyKGVbb10pKXJldHVybi0xfWVsc2V7aWYoeTIoZVtvXSkpcmV0dXJuIDE7aWYodFtuXTxlW29dKXJldHVybi0xO2lmKHRbbl0+ZVtvXSlyZXR1cm4gMX1uKyssbysrfX19ZnVuY3Rpb24gaDIodCxlKXtsZXQgbjshKGZ1bmN0aW9uKHQpe3RbdC5OQVRVUkFMPTBdPSJOQVRVUkFMIix0W3QuUkVBTD0xXT0iUkVBTCIsdFt0LkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLHRbdC5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkobnx8KG49e30pKTtsZXQgbz1uLk5BVFVSQUwsaT1lO2Zvcig7aTx0Lmxlbmd0aDtpKyspaWYobz09PW4uTkFUVVJBTCl7aWYoIi4iPT09dFtpXSlvPW4uUkVBTDtlbHNlIGlmKCJlIj09PXRbaV18fCJFIj09PXRbaV0pbz1uLkVYUE9ORU5UX1NJR047ZWxzZSBpZighYjIodFtpXSkpYnJlYWt9ZWxzZSBpZihvPT09bi5SRUFMKXtpZigiZSI9PT10W2ldfHwiRSI9PT10W2ldKW89bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIWIyKHRbaV0pKWJyZWFrfWVsc2UgaWYobz09PW4uRVhQT05FTlRfU0lHTil7aWYoIWIyKHRbaV0pJiYiKyIhPT10W2ldJiYiLSIhPT10W2ldKWJyZWFrO289bi5FWFBPTkVOVH1lbHNlIGlmKG89PT1uLkVYUE9ORU5UJiYhYjIodFtpXSkpYnJlYWs7cmV0dXJuIGl9ZnVuY3Rpb24gYjIodCl7cmV0dXJuIjAiPD10JiZ0PD0iOSJ9ZnVuY3Rpb24geTIodCl7cmV0dXJuIi8iPT09dHx8YjIodCl9ZnVuY3Rpb24gXzIodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiw3KX1mdW5jdGlvbiBDMih0LGUpe2lmKDEmdCYmKFJtKDAsIm1hdC1vcHRpb24iLDgpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEbSgidmFsdWUiLHQpLGpwKCJ0aXRsZSIsdCkscmMoMSksU3UodCl9fWZ1bmN0aW9uIE0yKHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiw5KSxSbSgxLCJlbSIpLGt1KDIpLEFoKDMsIm51bWJlciIpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMiksRHUoImFuZCAiLFRoKDMsMSx0LmNvbXBsZXRpb25zLmxlbmd0aC0yNSksIiBtb3JlIHRhZ3MgbWF0Y2hlZCIpfX1jbGFzcyB2Mntjb25zdHJ1Y3Rvcigpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlPW5ldyBMaH1vbkNvbXBsZXRpb25BY2NlcHRlZCh0KXt0aGlzLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KChmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoQkwsIlxcJCYiKX0pKHQpKX19djIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHYyKX0sdjIuybVjbXA9dG8oe3R5cGU6djIsc2VsZWN0b3JzOltbIm1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoInZhbGlkIixuLmlzUmVnZXhGaWx0ZXJWYWxpZCl9LGlucHV0czp7cmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQiLGNvbXBsZXRpb25zOiJjb21wbGV0aW9ucyJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZToib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIn0sZGVjbHM6Nyx2YXJzOjUsY29uc3RzOltbMSwidGFnLWZpbHRlciJdLFsicGxhY2Vob2xkZXIiLCJGaWx0ZXIgdGFncyAocmVnZXgpIiwzLCJ2YWx1ZSIsIm1hdEF1dG9jb21wbGV0ZSIsImlucHV0Il0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsImNsYXNzIiwiZXJyb3ItaWNvbiIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFsxLCJ0YWctb3B0aW9ucyIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbImNsYXNzIiwib3B0aW9uIiwzLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsImFuZC1tb3JlIiw0LCJuZ0lmIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFsxLCJvcHRpb24iLDMsInZhbHVlIl0sWzEsImFuZC1tb3JlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsInRiLWZpbHRlci1pbnB1dCIsMSksVm0oImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChlLnRhcmdldC52YWx1ZSl9KSksQW0oKSxRcCgyLF8yLDEsMCwibWF0LWljb24iLDIpLEFtKCksUm0oMywibWF0LWF1dG9jb21wbGV0ZSIsMyw0KSxWbSgib3B0aW9uU2VsZWN0ZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQ29tcGxldGlvbkFjY2VwdGVkKGUub3B0aW9uLnZhbHVlKX0pKSxRcCg1LEMyLDIsMywibWF0LW9wdGlvbiIsNSksUXAoNixNMiw0LDMsImRpdiIsNiksQW0oKSksMiZlKXtjb25zdCB0PSRwKDQpO3JjKDEpLERtKCJ2YWx1ZSIsbi5yZWdleEZpbHRlclZhbHVlKSgibWF0QXV0b2NvbXBsZXRlIix0KSxyYygxKSxEbSgibmdJZiIsIW4uaXNSZWdleEZpbHRlclZhbGlkKSxyYygzKSxEbSgibmdGb3JPZiIsbnVsbD09bi5jb21wbGV0aW9ucz9udWxsOm4uY29tcGxldGlvbnMuc2xpY2UoMCwyNSkpLHJjKDEpLERtKCJuZ0lmIiwobnVsbD09bi5jb21wbGV0aW9ucz9udWxsOm4uY29tcGxldGlvbnMubGVuZ3RoKT4yNSl9fSxkaXJlY3RpdmVzOltxMCxkTSxIMCxsTSxEVyxCSF0scGlwZXM6W0ZNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0udGFnLWZpbHRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfXRiLWZpbHRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjF9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojMjEyMTIxfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZmZmfVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCl7Y29sb3I6I2M2MjgyOH1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgLmVycm9yLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNjNjI4Mjg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0gIC50YWctb3B0aW9ucyAub3B0aW9uLCAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtbGluZS1jbGFtcDozO2Rpc3BsYXk6LXdlYmtpdC1ib3g7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS40O3BhZGRpbmc6OHB4IDE2cHh9ICAudGFnLW9wdGlvbnMgLmFuZC1tb3Jle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgICAudGFnLW9wdGlvbnMgLmFuZC1tb3JlLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAgIC50YWctb3B0aW9ucyAuYW5kLW1vcmV7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHYyLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJmaWx0ZXJfaW5wdXRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImZpbHRlcl9pbnB1dF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6eHl9XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOlB5LGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTp4eX1dLGNvbXBsZXRpb25zOlt7dHlwZTp4eX1dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6T3l9XX0pO2NsYXNzIHgye2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnRhZ0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QoQlQpLHRoaXMuaXNUYWdGaWx0ZXJSZWdleFZhbGlkJD10aGlzLnRhZ0ZpbHRlciQucGlwZShJdCgodD0+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KSkpLHRoaXMuY29tcGxldGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KE1UKS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KHFUKSksSXQoKChbdCxlXSk9PnQuZmlsdGVyKCgoe3BsdWdpbjp0fSk9PiFlLnNpemV8fGUuaGFzKHQpKSkubWFwKCgoe3RhZzp0fSk9PnQpKSkpLEl0KCh0PT5bLi4ubmV3IFNldCh0KV0pKSxJdCgodD0+dC5zb3J0KGcyKSkpLGZlKHRoaXMuc3RvcmUuc2VsZWN0KEJUKSksSXQoKChbdCxlXSk9Pnt0cnl7cmV0dXJuW3QsbmV3IFJlZ0V4cChlLCJpIildfWNhdGNoKGUpe3JldHVyblt0LG51bGxdfX0pKSxjZSgoKFssdF0pPT5udWxsIT09dCkpLEl0KCgoW3QsZV0pPT50LmZpbHRlcigodD0+ZS50ZXN0KHQpKSkpKSl9b25UYWdGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChlUih7dGFnRmlsdGVyOnR9KSl9fXgyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4MikoU20oSXcpKX0seDIuybVjbXA9dG8oe3R5cGU6eDIsc2VsZWN0b3JzOltbIm1ldHJpY3MtdGFnLWZpbHRlciJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwiY29tcGxldGlvbnMiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsIm1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiLDApLFZtKCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVGFnRmlsdGVyQ2hhbmdlKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFtKCkpLDImZSYmRG0oInJlZ2V4RmlsdGVyVmFsdWUiLFRoKDEsMyxuLnRhZ0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixUaCgyLDUsbi5pc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkKSkoImNvbXBsZXRpb25zIixUaCgzLDcsbi5jb21wbGV0aW9ucyQpKX0sZGlyZWN0aXZlczpbdjJdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh4Mixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXRhZy1maWx0ZXIiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudFxuICAgICAgW3JlZ2V4RmlsdGVyVmFsdWVdPSJ0YWdGaWx0ZXIkIHwgYXN5bmMiXG4gICAgICBbaXNSZWdleEZpbHRlclZhbGlkXT0iaXNUYWdGaWx0ZXJSZWdleFZhbGlkJCB8IGFzeW5jIlxuICAgICAgW2NvbXBsZXRpb25zXT0iY29tcGxldGlvbnMkIHwgYXN5bmMiXG4gICAgICAob25SZWdleEZpbHRlclZhbHVlQ2hhbmdlKT0ib25UYWdGaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9tZXRyaWNzLXRhZy1maWx0ZXItY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y29uc3QgTzI9WyJidXR0b24iXSxQMj1uZXcgR2EoIk1BVF9CVVRUT05fVE9HR0xFX0RFRkFVTFRfT1BUSU9OUyIpLHcyPW5ldyBHYSgiTWF0QnV0dG9uVG9nZ2xlR3JvdXAiKSxrMj17cHJvdmlkZTpJVix1c2VFeGlzdGluZzpxZSgoKCk9PkUyKSksbXVsdGk6ITB9O2xldCBTMj0wO2NsYXNzIEQye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPWV9fWNsYXNzIEUye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLl92ZXJ0aWNhbD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX25hbWU9Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLSIrUzIrKyx0aGlzLnZhbHVlQ2hhbmdlPW5ldyBMaCx0aGlzLmNoYW5nZT1uZXcgTGgsdGhpcy5hcHBlYXJhbmNlPWUmJmUuYXBwZWFyYW5jZT9lLmFwcGVhcmFuY2U6InN0YW5kYXJkIn1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX25hbWU9dCx0aGlzLl9idXR0b25Ub2dnbGVzJiZ0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9Pnt0Lm5hbWU9dGhpcy5fbmFtZSx0Ll9tYXJrRm9yQ2hlY2soKX0pKX1nZXQgdmVydGljYWwoKXtyZXR1cm4gdGhpcy5fdmVydGljYWx9c2V0IHZlcnRpY2FsKHQpe3RoaXMuX3ZlcnRpY2FsPXl6KHQpfWdldCB2YWx1ZSgpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dC5tYXAoKHQ9PnQudmFsdWUpKTp0WzBdP3RbMF0udmFsdWU6dm9pZCAwfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKX1nZXQgc2VsZWN0ZWQoKXtjb25zdCB0PXRoaXMuX3NlbGVjdGlvbk1vZGVsP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOltdO3JldHVybiB0aGlzLm11bHRpcGxlP3Q6dFswXXx8bnVsbH1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9c2V0IG11bHRpcGxlKHQpe3RoaXMuX211bHRpcGxlPXl6KHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9eXoodCksdGhpcy5fYnV0dG9uVG9nZ2xlcyYmdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKCh0PT50Ll9tYXJrRm9yQ2hlY2soKSkpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3IG9GKHRoaXMubXVsdGlwbGUsdm9pZCAwLCExKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoLi4udGhpcy5fYnV0dG9uVG9nZ2xlcy5maWx0ZXIoKHQ9PnQuY2hlY2tlZCkpKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dCx0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dH1fZW1pdENoYW5nZUV2ZW50KCl7Y29uc3QgdD10aGlzLnNlbGVjdGVkLGU9QXJyYXkuaXNBcnJheSh0KT90W3QubGVuZ3RoLTFdOnQsbj1uZXcgRDIoZSx0aGlzLnZhbHVlKTt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKG4udmFsdWUpLHRoaXMuY2hhbmdlLmVtaXQobil9X3N5bmNCdXR0b25Ub2dnbGUodCxlLG49ITEsbz0hMSl7dGhpcy5tdWx0aXBsZXx8IXRoaXMuc2VsZWN0ZWR8fHQuY2hlY2tlZHx8KHRoaXMuc2VsZWN0ZWQuY2hlY2tlZD0hMSksdGhpcy5fc2VsZWN0aW9uTW9kZWw/ZT90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodCk6bz0hMCxvP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT50aGlzLl91cGRhdGVNb2RlbFZhbHVlKG4pKSk6dGhpcy5fdXBkYXRlTW9kZWxWYWx1ZShuKX1faXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCl9X2lzUHJlY2hlY2tlZCh0KXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmF3VmFsdWUmJih0aGlzLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHRoaXMuX3Jhd1ZhbHVlKT90aGlzLl9yYXdWYWx1ZS5zb21lKChlPT5udWxsIT10LnZhbHVlJiZlPT09dC52YWx1ZSkpOnQudmFsdWU9PT10aGlzLl9yYXdWYWx1ZSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCl7aWYodGhpcy5fcmF3VmFsdWU9dCx0aGlzLl9idXR0b25Ub2dnbGVzKWlmKHRoaXMubXVsdGlwbGUmJnQpe2lmKCFBcnJheS5pc0FycmF5KHQpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuIik7dGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0LmZvckVhY2goKHQ9PnRoaXMuX3NlbGVjdFZhbHVlKHQpKSl9ZWxzZSB0aGlzLl9jbGVhclNlbGVjdGlvbigpLHRoaXMuX3NlbGVjdFZhbHVlKHQpfV9jbGVhclNlbGVjdGlvbigpe3RoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKCh0PT50LmNoZWNrZWQ9ITEpKX1fc2VsZWN0VmFsdWUodCl7Y29uc3QgZT10aGlzLl9idXR0b25Ub2dnbGVzLmZpbmQoKGU9Pm51bGwhPWUudmFsdWUmJmUudmFsdWU9PT10KSk7ZSYmKGUuY2hlY2tlZD0hMCx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoZSkpfV91cGRhdGVNb2RlbFZhbHVlKHQpe3QmJnRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKX19RTIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEUyKShTbShVZyksU20oUDIsOCkpfSxFMi7JtWRpcj1sbyh7dHlwZTpFMixzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChlLG4sbyl7aWYoMSZlJiYkaChvLEEyLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX2J1dHRvblRvZ2dsZXM9dCl9fSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JvdXAiLDEsIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmKGpwKCJhcmlhLWRpc2FibGVkIixuLmRpc2FibGVkKSxwdSgibWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwiLG4udmVydGljYWwpKCJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT09bi5hcHBlYXJhbmNlKSl9LGlucHV0czp7YXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsbmFtZToibmFtZSIsdmVydGljYWw6InZlcnRpY2FsIix2YWx1ZToidmFsdWUiLG11bHRpcGxlOiJtdWx0aXBsZSIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7dmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIixjaGFuZ2U6ImNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uVG9nZ2xlR3JvdXAiXSxmZWF0dXJlczpbcGcoW2syLHtwcm92aWRlOncyLHVzZUV4aXN0aW5nOkUyfV0pXX0pLEUyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUDJdfV19XSxFMi5wcm9wRGVjb3JhdG9ycz17X2J1dHRvblRvZ2dsZXM6W3t0eXBlOllhLGFyZ3M6W3FlKCgoKT0+QTIpKSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFwcGVhcmFuY2U6W3t0eXBlOnh5fV0sbmFtZTpbe3R5cGU6eHl9XSx2ZXJ0aWNhbDpbe3R5cGU6eHl9XSx2YWx1ZTpbe3R5cGU6eHl9XSx2YWx1ZUNoYW5nZTpbe3R5cGU6T3l9XSxtdWx0aXBsZTpbe3R5cGU6eHl9XSxkaXNhYmxlZDpbe3R5cGU6eHl9XSxjaGFuZ2U6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRTIsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiLHByb3ZpZGVyczpbazIse3Byb3ZpZGU6dzIsdXNlRXhpc3Rpbmc6RTJ9XSxob3N0Ontyb2xlOiJncm91cCIsY2xhc3M6Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbF0iOiJ2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT09ICJzdGFuZGFyZCInfSxleHBvcnRBczoibWF0QnV0dG9uVG9nZ2xlR3JvdXAifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUDJdfV19XX0pLHt2YWx1ZUNoYW5nZTpbe3R5cGU6T3l9XSxjaGFuZ2U6W3t0eXBlOk95fV0sYXBwZWFyYW5jZTpbe3R5cGU6eHl9XSxuYW1lOlt7dHlwZTp4eX1dLHZlcnRpY2FsOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLG11bHRpcGxlOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dLF9idXR0b25Ub2dnbGVzOlt7dHlwZTpZYSxhcmdzOltxZSgoKCk9PkEyKSkse2Rlc2NlbmRhbnRzOiEwfV19XX0pO2NvbnN0IFIyPVFJKGNsYXNze30pO2NsYXNzIEEyIGV4dGVuZHMgUjJ7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3N1cGVyKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fZm9jdXNNb25pdG9yPW8sdGhpcy5faXNTaW5nbGVTZWxlY3Rvcj0hMSx0aGlzLl9jaGVja2VkPSExLHRoaXMuYXJpYUxhYmVsbGVkYnk9bnVsbCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmNoYW5nZT1uZXcgTGg7Y29uc3Qgcj1OdW1iZXIoaSk7dGhpcy50YWJJbmRleD1yfHwwPT09cj9yOm51bGwsdGhpcy5idXR0b25Ub2dnbGVHcm91cD10LHRoaXMuYXBwZWFyYW5jZT1hJiZhLmFwcGVhcmFuY2U/YS5hcHBlYXJhbmNlOiJzdGFuZGFyZCJ9Z2V0IGJ1dHRvbklkKCl7cmV0dXJuYCR7dGhpcy5pZH0tYnV0dG9uYH1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuYXBwZWFyYW5jZTp0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe3RoaXMuX2FwcGVhcmFuY2U9dH1nZXQgY2hlY2tlZCgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX2lzU2VsZWN0ZWQodGhpcyk6dGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXtjb25zdCBlPXl6KHQpO2UhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD1lLHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwJiZ0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD15eih0KX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPXQmJiF0Lm11bHRpcGxlLHRoaXMuaWQ9dGhpcy5pZHx8Im1hdC1idXR0b24tdG9nZ2xlLSIrUzIrKyx0aGlzLl9pc1NpbmdsZVNlbGVjdG9yJiYodGhpcy5uYW1lPXQubmFtZSksdCYmKHQuX2lzUHJlY2hlY2tlZCh0aGlzKT90aGlzLmNoZWNrZWQ9ITA6dC5faXNTZWxlY3RlZCh0aGlzKSE9PXRoaXMuX2NoZWNrZWQmJnQuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCl9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHQmJnQuX2lzU2VsZWN0ZWQodGhpcykmJnQuX3N5bmNCdXR0b25Ub2dnbGUodGhpcywhMSwhMSwhMCl9Zm9jdXModCl7dGhpcy5fYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9vbkJ1dHRvbkNsaWNrKCl7Y29uc3QgdD0hIXRoaXMuX2lzU2luZ2xlU2VsZWN0b3J8fCF0aGlzLl9jaGVja2VkO3QhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJih0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLl9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsdGhpcy5fY2hlY2tlZCwhMCksdGhpcy5idXR0b25Ub2dnbGVHcm91cC5fb25Ub3VjaGVkKCkpKSx0aGlzLmNoYW5nZS5lbWl0KG5ldyBEMih0aGlzLHRoaXMudmFsdWUpKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fUEyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBMikoU20odzIsOCksU20oVWcpLFNtKGhnKSxTbShTSSksTmEoInRhYmluZGV4IiksU20oUDIsOCkpfSxBMi7JtWNtcD10byh7dHlwZTpBMixzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJlFoKE8yLDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uX2J1dHRvbkVsZW1lbnQ9dC5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwicHJlc2VudGF0aW9uIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZSJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXMoKX0pKSwyJmUmJihqcCgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkoImlkIixuLmlkKSgibmFtZSIsbnVsbCkscHUoIm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUiLCFuLmJ1dHRvblRvZ2dsZUdyb3VwKSgibWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCIsbi5jaGVja2VkKSgibWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT09bi5hcHBlYXJhbmNlKSl9LGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLHRhYkluZGV4OiJ0YWJJbmRleCIsYXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsY2hlY2tlZDoiY2hlY2tlZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixpZDoiaWQiLG5hbWU6Im5hbWUiLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSx2YWx1ZToidmFsdWUifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uVG9nZ2xlIl0sZmVhdHVyZXM6W3hwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6Nix2YXJzOjksY29uc3RzOltbInR5cGUiLCJidXR0b24iLDEsIm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbiIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiYnV0dG9uIiwiIl0sWzEsIm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQiXSxbMSwibWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoWm0oKSxSbSgwLCJidXR0b24iLDAsMSksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkJ1dHRvbkNsaWNrKCl9KSksUm0oMiwic3BhbiIsMiksWG0oMyksQW0oKSxBbSgpLFRtKDQsInNwYW4iLDMpLFRtKDUsInNwYW4iLDQpKSwyJmUpe2NvbnN0IHQ9JHAoMSk7RG0oImlkIixuLmJ1dHRvbklkKSgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpLGpwKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD8tMTpuLnRhYkluZGV4KSgiYXJpYS1wcmVzc2VkIixuLmNoZWNrZWQpKCJuYW1lIixuLm5hbWV8fG51bGwpKCJhcmlhLWxhYmVsIixuLmFyaWFMYWJlbCkoImFyaWEtbGFiZWxsZWRieSIsbi5hcmlhTGFiZWxsZWRieSkscmMoNSksRG0oIm1hdFJpcHBsZVRyaWdnZXIiLHQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsbi5kaXNhYmxlUmlwcGxlfHxuLmRpc2FibGVkKX19LGRpcmVjdGl2ZXM6W2tIXSxzdHlsZXM6WyIubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjJweDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke2JvcmRlci1yYWRpdXM6NHB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJke291dGxpbmU6MH0ubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtkaXNwbGF5OmJsb2NrfS5tYXQtYnV0dG9uLXRvZ2dsZXt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfS5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKTpob3ZlciAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjV9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKTpob3ZlciAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtkaXNwbGF5Om5vbmV9fS5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e3BhZGRpbmc6MCAxMnB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50Pip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1yYWRpdXM6aW5oZXJpdDtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItYm90dG9tOnNvbGlkIDM2cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41O2hlaWdodDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItYm90dG9tOnNvbGlkIDUwMHB4fS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWJ1dHRvbi10b2dnbGUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjA7bWFyZ2luOjA7Zm9udDppbmhlcml0O291dGxpbmU6bm9uZTt3aWR0aDoxMDAlO2N1cnNvcjpwb2ludGVyfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCAubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2N1cnNvcjpkZWZhdWx0fS5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxBMi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkUyLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt3Ml19XX0se3R5cGU6VWd9LHt0eXBlOmhnfSx7dHlwZTpTSX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpTcn0se3R5cGU6a3IsYXJnczpbUDJdfV19XSxBMi5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLF9idXR0b25FbGVtZW50Olt7dHlwZTpaYSxhcmdzOlsiYnV0dG9uIl19XSxpZDpbe3R5cGU6eHl9XSxuYW1lOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLHRhYkluZGV4Olt7dHlwZTp4eX1dLGFwcGVhcmFuY2U6W3t0eXBlOnh5fV0sY2hlY2tlZDpbe3R5cGU6eHl9XSxkaXNhYmxlZDpbe3R5cGU6eHl9XSxjaGFuZ2U6W3t0eXBlOk95fV19LCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQTIsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWJ1dHRvbi10b2dnbGUiLHRlbXBsYXRlOic8YnV0dG9uICNidXR0b24gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIlxuICAgICAgICB0eXBlPSJidXR0b24iXG4gICAgICAgIFtpZF09ImJ1dHRvbklkIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09ImRpc2FibGVkID8gLTEgOiB0YWJJbmRleCJcbiAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT0iY2hlY2tlZCJcbiAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQgfHwgbnVsbCJcbiAgICAgICAgW2F0dHIubmFtZV09Im5hbWUgfHwgbnVsbCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgIChjbGljayk9Il9vbkJ1dHRvbkNsaWNrKCkiPlxuICA8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3NwYW4+XG48L2J1dHRvbj5cblxuPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkiPjwvc3Bhbj5cbjxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGUiIG1hdFJpcHBsZVxuICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09ImJ1dHRvbiJcbiAgICAgW21hdFJpcHBsZURpc2FibGVkXT0idGhpcy5kaXNhYmxlUmlwcGxlIHx8IHRoaXMuZGlzYWJsZWQiPlxuPC9zcGFuPlxuJyxlbmNhcHN1bGF0aW9uOkhuLk5vbmUsZXhwb3J0QXM6Im1hdEJ1dHRvblRvZ2dsZSIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lXSI6IiFidXR0b25Ub2dnbGVHcm91cCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZF0iOidhcHBlYXJhbmNlID09PSAic3RhbmRhcmQiJyxjbGFzczoibWF0LWJ1dHRvbi10b2dnbGUiLCJbYXR0ci5hcmlhLWxhYmVsXSI6Im51bGwiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoibnVsbCIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIubmFtZV0iOiJudWxsIiwiKGZvY3VzKSI6ImZvY3VzKCkiLHJvbGU6InByZXNlbnRhdGlvbiJ9LHN0eWxlczpbIi5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1cbiJdfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RTIsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3cyXX1dfSx7dHlwZTpVZ30se3R5cGU6aGd9LHt0eXBlOlNJfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltQMl19XX1dfSkse2FyaWFMYWJlbGxlZGJ5Olt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxjaGFuZ2U6W3t0eXBlOk95fV0sdGFiSW5kZXg6W3t0eXBlOnh5fV0sYXBwZWFyYW5jZTpbe3R5cGU6eHl9XSxjaGVja2VkOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dLGlkOlt7dHlwZTp4eX1dLG5hbWU6W3t0eXBlOnh5fV0sYXJpYUxhYmVsOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sX2J1dHRvbkVsZW1lbnQ6W3t0eXBlOlphLGFyZ3M6WyJidXR0b24iXX1dLHZhbHVlOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBUMnt9ZnVuY3Rpb24gTjIodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiwyKSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxTdSh0LmZpcnN0VGV4dFBhcnQoKSl9fVQyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUMil9LFQyLsm1bW9kPWFvKHt0eXBlOlQyfSksVDIuybVpbmo9dm4oe2ltcG9ydHM6W1tYSSxTSF0sWEldfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChUMixbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1hJLFNIXSxleHBvcnRzOltYSSxFMixBMl0sZGVjbGFyYXRpb25zOltFMixBMl19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhUMix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0UyLEEyXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltYSSxTSF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWEksRTIsQTJdfX0pO2NsYXNzIHoye3BhcnNlVmFsdWUoKXtjb25zdCB0PXRoaXMudmFsdWUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXQ/e2ZpcnN0OiIiLHNlY29uZDp0aGlzLnZhbHVlfTp7Zmlyc3Q6dGhpcy52YWx1ZS5zbGljZSgwLHQpLHNlY29uZDp0aGlzLnZhbHVlLnNsaWNlKHQpfX1maXJzdFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLmZpcnN0fXNlY29uZFRleHRQYXJ0KCl7cmV0dXJuIHRoaXMucGFyc2VWYWx1ZSgpLnNlY29uZH19ZnVuY3Rpb24gSTIodCxlLG4pe3JldHVybiBlfHxuP1tuLGU/ZS5uYW1lOiIuLi4iXS5maWx0ZXIoQm9vbGVhbikuam9pbigiLyIpOnR9ZnVuY3Rpb24gSDIodCxlLG4pe3ZhciBvLGksYSxyO3JldHVybiB0LnN0YXJ0LnN0ZXA8PWUmJnQuZW5kJiZuPD10LmVuZC5zdGVwfHxlPD10LnN0YXJ0LnN0ZXAmJnQuc3RhcnQuc3RlcDw9bnx8dC5lbmQmJmU8PShudWxsPT09KG89dC5lbmQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0ZXApJiYobnVsbD09PShpPXQuZW5kKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGVwKTw9bj97c3RhcnRTdGVwOnQuc3RhcnQuc3RlcCxlbmRTdGVwOm51bGwhPT0ocj1udWxsPT09KGE9dC5lbmQpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnN0ZXApJiZ2b2lkIDAhPT1yP3I6bnVsbCxjbGlwcGVkOiExfTpuPD10LnN0YXJ0LnN0ZXA/e3N0YXJ0U3RlcDpuLGVuZFN0ZXA6bnVsbCxjbGlwcGVkOiEwfTp7c3RhcnRTdGVwOmUsZW5kU3RlcDpudWxsLGNsaXBwZWQ6ITB9fXoyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6Mil9LHoyLsm1Y21wPXRvKHt0eXBlOnoyLHNlbGVjdG9yczpbWyJ0Yi10cnVuY2F0ZWQtcGF0aCJdXSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsImZpcnN0LXRleHQtcGFydCIsNCwibmdJZiJdLFsxLCJzZWNvbmQtdGV4dC1wYXJ0Il0sWzEsImZpcnN0LXRleHQtcGFydCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUXAoMCxOMiwyLDEsInNwYW4iLDApLFJtKDEsInNwYW4iLDEpLGt1KDIpLEFtKCkpLDImZSYmKERtKCJuZ0lmIixuLmZpcnN0VGV4dFBhcnQoKS5sZW5ndGg+MCkscmMoMiksU3Uobi5zZWNvbmRUZXh0UGFydCgpKSl9LGRpcmVjdGl2ZXM6W2RNXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWZsZXg7d2hpdGUtc3BhY2U6bm93cmFwfS5maXJzdC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDRjaDttYXgtd2lkdGg6bWF4LWNvbnRlbnR9LmZpcnN0LXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV0sIC5zZWNvbmQtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30iXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoejIsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGItdHJ1bmNhdGVkLXBhdGgiLHRlbXBsYXRlOidcbiAgICA8c3BhbiAqbmdJZj0iZmlyc3RUZXh0UGFydCgpLmxlbmd0aCA+IDAiIGNsYXNzPSJmaXJzdC10ZXh0LXBhcnQiPnt7XG4gICAgICBmaXJzdFRleHRQYXJ0KClcbiAgICB9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz0ic2Vjb25kLXRleHQtcGFydCI+e3sgc2Vjb25kVGV4dFBhcnQoKSB9fTwvc3Bhbj5cbiAgJyxzdHlsZVVybHM6WyJ0cnVuY2F0ZWRfcGF0aF9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse3ZhbHVlOlt7dHlwZTp4eX1dfSk7Y2xhc3MgRjJ7fUYyLsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxGMil9LEYyLsm1Y21wPXRvKHt0eXBlOkYyLHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudCJdXSxpbnB1dHM6e25hbWU6Im5hbWUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZrdSgwKSwyJmUmJlN1KG4ubmFtZSl9LHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEYyLFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImNhcmQtcnVuLW5hbWUtY29tcG9uZW50Iix0ZW1wbGF0ZToie3sgbmFtZSB9fSIsc3R5bGVVcmxzOlsicnVuX25hbWVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse25hbWU6W3t0eXBlOnh5fV19KTtjbGFzcyBMMntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXR9bmdPbkluaXQoKXt0aGlzLm5hbWUkPVd0KFt0aGlzLnN0b3JlLnNlbGVjdChzTix7cnVuSWQ6dGhpcy5ydW5JZH0pLHRoaXMuc3RvcmUuc2VsZWN0KHJOLHtydW5JZDp0aGlzLnJ1bklkfSksdGhpcy5zdG9yZS5zZWxlY3QoelMpXSkucGlwZShJdCgoKFt0LGUsbl0pPT5JMih0aGlzLnJ1bklkLHQsZT9uW2VdOm51bGwpKSkpfX1mdW5jdGlvbiBCMih0LGUpe2lmKDEmdCYmKFJtKDAsInNwYW4iLDE3KSxrdSgxKSxBaCgyLCJudW1iZXIiKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEdSgiU3RlcCAiLFRoKDIsMSx0LnN0ZXBWYWx1ZXNbdC5zdGVwSW5kZXhdKSwiIil9fWZ1bmN0aW9uIFYyKHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTgpLGt1KDEpLEFoKDIsIm51bWJlciIpLEFoKDMsIm51bWJlciIpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLEV1KCJTYW1wbGUgIixUaCgyLDIsdC5zYW1wbGUrMSksIi8iLFRoKDMsNCx0Lm51bVNhbXBsZSksIiIpfX1mdW5jdGlvbiBqMih0LGUpezEmdCYmVG0oMCwibWF0LXNwaW5uZXIiLDE5KX1MMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TDIpKFNtKEl3KSl9LEwyLsm1Y21wPXRvKHt0eXBlOkwyLHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lIl1dLGlucHV0czp7cnVuSWQ6InJ1bklkIn0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywibmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwiY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSksMiZlJiYoRG0oIm5hbWUiLFRoKDEsMixuLm5hbWUkKSksanAoInRpdGxlIixUaCgyLDQsbi5uYW1lJCkpKX0sZGlyZWN0aXZlczpbRjJdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMMixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lIix0ZW1wbGF0ZTonXG4gICAgPGNhcmQtcnVuLW5hbWUtY29tcG9uZW50XG4gICAgICBbbmFtZV09Im5hbWUkIHwgYXN5bmMiXG4gICAgICBbYXR0ci50aXRsZV09Im5hbWUkIHwgYXN5bmMiXG4gICAgPjwvY2FyZC1ydW4tbmFtZS1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7cnVuSWQ6W3t0eXBlOnh5fV19KTtjb25zdCBVMj1mdW5jdGlvbih0KXtyZXR1cm57ZmlsdGVyOnR9fTtmdW5jdGlvbiBHMih0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO05tKDApLFJtKDEsImRpdiIsMjApLFJtKDIsIm1hdC1zbGlkZXIiLDIxKSxWbSgiaW5wdXQiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLm9uU2xpZGVySW5wdXQobil9KSksQW0oKSxBbSgpLFJtKDMsImRpdiIsMjIpLFRtKDQsImltZyIsMjMpLEFtKCksem0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKTtyYygyKSxEbSgiZGlzYWJsZWQiLHQuc3RlcFZhbHVlcy5sZW5ndGg8PTEpKCJtaW4iLDApKCJtYXgiLHQuc3RlcFZhbHVlcy5sZW5ndGgtMSkoInN0ZXAiLDEpKCJ0aWNrSW50ZXJ2YWwiLDEpKCJ2YWx1ZSIsdC5zdGVwSW5kZXgpLHJjKDIpLEptKCJhbHQiLCJJbWFnZSBhdCBzdGVwICIsdC5zdGVwVmFsdWVzW3Quc3RlcEluZGV4XSwiIiksS20oInNyYyIsdC5pbWFnZVVybCxUcyksRG0oIm5nU3R5bGUiLE1oKDksVTIsdC5jc3NGaWx0ZXIoKSkpfX1mdW5jdGlvbiBXMih0LGUpezEmdCYmKFJtKDAsImRpdiIsMjUpLGt1KDEsIiBEYXRhIGZhaWxlZCB0byBsb2FkLiAiKSxBbSgpKX1mdW5jdGlvbiBZMih0LGUpe2lmKDEmdCYmUXAoMCxXMiwyLDAsImRpdiIsMjQpLDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJuZ0lmIix0LmxvYWRTdGF0ZT09PXQuRGF0YUxvYWRTdGF0ZS5GQUlMRUQpfX1jb25zdCBxMj1mdW5jdGlvbih0KXtyZXR1cm57YmFja2dyb3VuZENvbG9yOnR9fTtjbGFzcyBaMntjb25zdHJ1Y3Rvcigpe3RoaXMuRGF0YUxvYWRTdGF0ZT15RSx0aGlzLm9uQWN0dWFsU2l6ZVRvZ2dsZT1uZXcgTGgsdGhpcy5zdGVwSW5kZXhDaGFuZ2U9bmV3IExoLHRoaXMub25QaW5DbGlja2VkPW5ldyBMaH1jc3NGaWx0ZXIoKXtyZXR1cm5gY29udHJhc3QoJHt0aGlzLmNvbnRyYXN0SW5NaWxsaS8xMH0lKSBicmlnaHRuZXNzKCR7dGhpcy5icmlnaHRuZXNzSW5NaWxsaS8xZTN9KWB9b25TbGlkZXJJbnB1dCh0KXt0aGlzLnN0ZXBJbmRleENoYW5nZS5lbWl0KHQudmFsdWUpfX1aMi7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WjIpfSxaMi7JtWNtcD10byh7dHlwZTpaMixzZWxlY3RvcnM6W1siaW1hZ2UtY2FyZC1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezImZSYmcHUoImFjdHVhbC1zaXplIixuLnNob3dBY3R1YWxTaXplKX0saW5wdXRzOntsb2FkU3RhdGU6ImxvYWRTdGF0ZSIsdGl0bGU6InRpdGxlIix0YWc6InRhZyIscnVuSWQ6InJ1bklkIixzYW1wbGU6InNhbXBsZSIsbnVtU2FtcGxlOiJudW1TYW1wbGUiLGltYWdlVXJsOiJpbWFnZVVybCIsc3RlcEluZGV4OiJzdGVwSW5kZXgiLHN0ZXBWYWx1ZXM6InN0ZXBWYWx1ZXMiLGJyaWdodG5lc3NJbk1pbGxpOiJicmlnaHRuZXNzSW5NaWxsaSIsY29udHJhc3RJbk1pbGxpOiJjb250cmFzdEluTWlsbGkiLHNob3dBY3R1YWxTaXplOiJzaG93QWN0dWFsU2l6ZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSIsYWxsb3dUb2dnbGVBY3R1YWxTaXplOiJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLGlzUGlubmVkOiJpc1Bpbm5lZCJ9LG91dHB1dHM6e29uQWN0dWFsU2l6ZVRvZ2dsZToib25BY3R1YWxTaXplVG9nZ2xlIixzdGVwSW5kZXhDaGFuZ2U6InN0ZXBJbmRleENoYW5nZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQifSxkZWNsczoxOSx2YXJzOjE0LGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7cmV0dXJuIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIlBpbiBjYXJkIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYCxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgYWN0dWFsIGltYWdlIHNpemUiKTokbG9jYWxpemVgOkEgYnV0dG9uIG9uIGFuIGltYWdlIGNhcmQgdGhhdCB0b2dnbGVzIGFjdHVhbCBpbWFnZSBzaXplLuKQnzNjYTA1ZWYzYTZlM2EzNzA2NWY1ZTBmNjljNWQ1YTIxNzhkOTA3OTHikJ83NjM1MTAxOTM2NjY0Nzg5MTQwOlRvZ2dsZSBhY3R1YWwgaW1hZ2Ugc2l6ZWAsW1sxLCJoZWFkaW5nIl0sWzEsImxpbmUiXSxbMSwidGFnIiwzLCJ0aXRsZSIsInZhbHVlIl0sWzEsImNvbnRyb2xzIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsInBpbi1idXR0b24iLDMsImNsaWNrIl0sWzMsInN2Z0ljb24iXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwiaW1hZ2Vfc2VhcmNoXzI0cHgiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwibWV0YWRhdGEiXSxbImNsYXNzIiwic3RlcCIsNCwibmdJZiJdLFsiY2xhc3MiLCJzYW1wbGUiLDQsIm5nSWYiXSxbImNsYXNzIiwibG9hZGluZyIsImRpYW1ldGVyIiwiMTgiLDQsIm5nSWYiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0ltYWdlRGF0YSIsIiJdLFsxLCJzdGVwIl0sWzEsInNhbXBsZSJdLFsiZGlhbWV0ZXIiLCIxOCIsMSwibG9hZGluZyJdLFsxLCJzbGlkZXItcm93Il0sWyJjb2xvciIsInByaW1hcnkiLDEsInN0ZXAtc2xpZGVyIiwzLCJkaXNhYmxlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ0aWNrSW50ZXJ2YWwiLCJ2YWx1ZSIsImlucHV0Il0sWzEsImltZy1jb250YWluZXIiXSxbMywiYWx0Iiwic3JjIiwibmdTdHlsZSJdLFsiY2xhc3MiLCJlbXB0eS1tZXNzYWdlIiw0LCJuZ0lmIl0sWzEsImVtcHR5LW1lc3NhZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsImRpdiIsMSksVG0oMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLFJtKDMsInNwYW4iLDMpLFJtKDQsImJ1dHRvbiIsNCksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGluQ2xpY2tlZC5lbWl0KCFuLmlzUGlubmVkKX0pKSxUbSg1LCJtYXQtaWNvbiIsNSksQW0oKSxSbSg2LCJidXR0b24iLDYpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkFjdHVhbFNpemVUb2dnbGUuZW1pdCgpfSkpLFRtKDcsIm1hdC1pY29uIiw3KSxBbSgpLEFtKCksQW0oKSxSbSg4LCJkaXYiLDEpLFJtKDksInNwYW4iLDgpLFRtKDEwLCJzcGFuIiw5KSxUbSgxMSwiY2FyZC1ydW4tbmFtZSIsMTApLEFtKCksUm0oMTIsImRpdiIsMTEpLFFwKDEzLEIyLDMsMywic3BhbiIsMTIpLFFwKDE0LFYyLDQsNiwic3BhbiIsMTMpLFFwKDE1LGoyLDEsMCwibWF0LXNwaW5uZXIiLDE0KSxBbSgpLEFtKCksQW0oKSxRcCgxNixHMiw1LDExLCJuZy1jb250YWluZXIiLDE1KSxRcCgxNyxZMiwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDE2LGliKSksMiZlKXtjb25zdCB0PSRwKDE4KTtyYygyKSxLbSgidGl0bGUiLG4udGFnKSxLbSgidmFsdWUiLG4udGl0bGUpLHJjKDIpLGpwKCJ0aXRsZSIsbi5pc1Bpbm5lZD8iVW5waW4gY2FyZCI6IlBpbiBjYXJkIikscmMoMSksRG0oInN2Z0ljb24iLG4uaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IikscmMoMSksRG0oImRpc2FibGVkIiwhbi5hbGxvd1RvZ2dsZUFjdHVhbFNpemUpLHJjKDQpLERtKCJuZ1N0eWxlIixNaCgxMixxMixuLnJ1bkNvbG9yU2NhbGUobi5ydW5JZCkpKSxyYygxKSxEbSgicnVuSWQiLG4ucnVuSWQpLHJjKDIpLERtKCJuZ0lmIixudWxsIT09bi5zdGVwSW5kZXgmJm4uc3RlcEluZGV4PG4uc3RlcFZhbHVlcy5sZW5ndGgpLHJjKDEpLERtKCJuZ0lmIixuLm51bVNhbXBsZT4xKSxyYygxKSxEbSgibmdJZiIsbi5sb2FkU3RhdGU9PT1uLkRhdGFMb2FkU3RhdGUuTE9BRElORykscmMoMSksRG0oIm5nSWYiLG51bGwhPT1uLnN0ZXBJbmRleCYmbi5zdGVwSW5kZXg8bi5zdGVwVmFsdWVzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W3oyLFhILERXLENNLEwyLGRNLG8xLFJYXSxwaXBlczpbRk1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV17aGVpZ2h0OmF1dG99LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIG1heC1jb250ZW50fS5tZXRhZGF0YVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo1cHg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21heC13aWR0aDoxNzVweDt0ZXh0LWFsaWduOmVuZH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVde2FsaWduLXNlbGY6YmFzZWxpbmU7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAuZG90W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tcmlnaHQ6NHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLnJ1bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTIwcHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0sIC5zYW1wbGVbX25nY29udGVudC0lQ09NUCVdLCAuc3RlcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTNweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJ1bltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zYW1wbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnN0ZXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDA7b3ZlcmZsb3cteTphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlfS5pbWctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGltZ1tfbmdjb250ZW50LSVDT01QJV17aW1hZ2UtcmVuZGVyaW5nOi1tb3otY3Jpc3AtZWRnZXM7aW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZH0uYWN0dWFsLXNpemVbX25naG9zdC0lQ09NUCVdICAgLmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmF1dG87ZmxleDpub25lfVtfbmdob3N0LSVDT01QJV06bm90KC5hY3R1YWwtc2l6ZSkgICBpbWdbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDphdXRvO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbn0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjRweH0uc3RlcC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MX1bX25naG9zdC0lQ09NUCVdICAgICAubWF0LXNsaWRlci1taW4tdmFsdWUgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjFlbTtmb250LXNpemU6MTNweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWjIsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiaW1hZ2UtY2FyZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJpbWFnZV9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJpbWFnZV9jYXJkX2NvbXBvbmVudC5jc3MiXSxob3N0OnsiW2NsYXNzLmFjdHVhbC1zaXplXSI6InNob3dBY3R1YWxTaXplIn0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7bG9hZFN0YXRlOlt7dHlwZTp4eX1dLHRpdGxlOlt7dHlwZTp4eX1dLHRhZzpbe3R5cGU6eHl9XSxydW5JZDpbe3R5cGU6eHl9XSxzYW1wbGU6W3t0eXBlOnh5fV0sbnVtU2FtcGxlOlt7dHlwZTp4eX1dLGltYWdlVXJsOlt7dHlwZTp4eX1dLHN0ZXBJbmRleDpbe3R5cGU6eHl9XSxzdGVwVmFsdWVzOlt7dHlwZTp4eX1dLGJyaWdodG5lc3NJbk1pbGxpOlt7dHlwZTp4eX1dLGNvbnRyYXN0SW5NaWxsaTpbe3R5cGU6eHl9XSxzaG93QWN0dWFsU2l6ZTpbe3R5cGU6eHl9XSxydW5Db2xvclNjYWxlOlt7dHlwZTp4eX1dLGFsbG93VG9nZ2xlQWN0dWFsU2l6ZTpbe3R5cGU6eHl9XSxpc1Bpbm5lZDpbe3R5cGU6eHl9XSxvbkFjdHVhbFNpemVUb2dnbGU6W3t0eXBlOk95fV0sc3RlcEluZGV4Q2hhbmdlOlt7dHlwZTpPeX1dLG9uUGluQ2xpY2tlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIFgye2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuZGF0YVNvdXJjZT1lLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZD1uZXcgTGgsdGhpcy5waW5TdGF0ZUNoYW5nZWQ9bmV3IExoLHRoaXMuYnJpZ2h0bmVzc0luTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KEhUKSx0aGlzLmNvbnRyYXN0SW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QoRlQpLHRoaXMuYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KExUKSx0aGlzLnNob3dBY3R1YWxTaXplPSExLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZD0hMSx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3Q9bmV3IEYodGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEl9b25TdGVwSW5kZXhDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2godFIoe2NhcmRJZDp0aGlzLmNhcmRJZCxzdGVwSW5kZXg6dH0pKX1pc0ltYWdlQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjplfT10O3JldHVybiBlPT09aEEuSU1BR0VTfW9uQWN0dWFsU2l6ZVRvZ2dsZSgpe3RoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZD0hdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVkLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdC5uZXh0KHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCl9bmdPbkluaXQoKXtXdChbdGhpcy5hY3R1YWxTaXplR2xvYmFsU2V0dGluZyQsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0XSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKCgoW3QsZV0pPT57dGhpcy5zaG93QWN0dWFsU2l6ZT10fHxlLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0FjdHVhbFNpemUpfSkpKS5zdWJzY3JpYmUoKCgpPT57fSkpO2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoeVQsdGhpcy5jYXJkSWQpLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxjZSgodD0+ISF0JiZ0aGlzLmlzSW1hZ2VDYXJkTWV0YWRhdGEodCkpKSxJdCgodD0+dCkpLEFlKDEpKSxlPVd0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KGhULHRoaXMuY2FyZElkKV0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxJdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5ydW5JZDtyZXR1cm4gZSYmZS5oYXNPd25Qcm9wZXJ0eShuKT9lW25dOltdfSkpLE1lKCgodCxlKT0+dC5sZW5ndGg9PT1lLmxlbmd0aCYmMD09PXQubGVuZ3RofHx0PT09ZSkpLEFlKDEpKTt0aGlzLnN0ZXBJbmRleCQ9dGhpcy5zdG9yZS5zZWxlY3QodlQsdGhpcy5jYXJkSWQpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdChnVCx0aGlzLmNhcmRJZCk7Y29uc3Qgbj1XdChbZSx0aGlzLnN0ZXBJbmRleCRdKS5waXBlKEl0KCgoW3QsZV0pPT5udWxsIT09ZSYmdFtlXT90W2VdOm51bGwpKSk7dGhpcy50YWckPXQucGlwZShJdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoSXQoKHQ9PmYyKHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMucnVuSWQkPXQucGlwZShJdCgodD0+dC5ydW5JZCkpKSx0aGlzLnNhbXBsZSQ9dC5waXBlKEl0KCh0PT50LnNhbXBsZSkpKSx0aGlzLm51bVNhbXBsZSQ9dC5waXBlKEl0KCh0PT50Lm51bVNhbXBsZSkpKSx0aGlzLmltYWdlVXJsJD1uLnBpcGUoSXQoKHQ9PnQ/dGhpcy5kYXRhU291cmNlLmltYWdlVXJsKHQuaW1hZ2VJZCk6bnVsbCkpKSx0aGlzLnN0ZXBWYWx1ZXMkPWUucGlwZShJdCgodD0+dC5tYXAoKHQ9PnQuc3RlcCkpKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHdULHRoaXMuY2FyZElkKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9fXZhciBLMixKMixRMjtmdW5jdGlvbiAkMih0LGUpezEmdCYmKFJtKDAsInNwYW4iKSxrdSgxLCJzY2FsYXIiKSxBbSgpKX1mdW5jdGlvbiB0NSh0LGUpezEmdCYmKFJtKDAsInNwYW4iKSxrdSgxLCJoaXN0b2dyYW0iKSxBbSgpKX1mdW5jdGlvbiBlNSh0LGUpezEmdCYmKFJtKDAsInNwYW4iKSxrdSgxLCJ1bmtub3duIiksQW0oKSl9ZnVuY3Rpb24gbjUodCxlKXtpZigxJnQmJihObSgwLDEzKSxRcCgxLCQyLDIsMCwic3BhbiIsMTQpLFFwKDIsdDUsMiwwLCJzcGFuIiwxNCksUXAoMyxlNSwyLDAsInNwYW4iLDE1KSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oMik7RG0oIm5nU3dpdGNoIix0LmNhcmRNZXRhZGF0YS5wbHVnaW4pLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5TQ0FMQVJTKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSElTVE9HUkFNUyl9fWZ1bmN0aW9uIG81KHQsZSl7MSZ0JiZJbSgwKX1mdW5jdGlvbiBpNSh0LGUpe2lmKDEmdCYmKFJtKDAsIm9wdGlvbiIsMTYpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEbSgidmFsdWUiLHQuaWQpLHJjKDEpLFN1KHQubmFtZSl9fWZ1bmN0aW9uIGE1KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Tm0oMCksUm0oMSwiaDIiKSxRcCgyLG41LDQsMywibmctdGVtcGxhdGUiLG51bGwsMixpYiksUm0oNCwic3BhbiIpLGt1KDUsIkRvd25sb2FkwqAiKSxBbSgpLFFwKDYsbzUsMSwwLCJuZy1jb250YWluZXIiLDMpLFJtKDcsInNwYW4iKSxrdSg4LCLCoGRhdGEgZm9ywqAiKSxBbSgpLFJtKDksImNvZGUiLDQpLGt1KDEwKSxBbSgpLEFtKCksUm0oMTEsIm1hdC1kaWFsb2ctY29udGVudCIpLFJtKDEyLCJtYXQtZm9ybS1maWVsZCIsNSksUm0oMTMsIm1hdC1sYWJlbCIpLGt1KDE0LCJTZWxlY3QgYSBydW4gdG8gZG93bmxvYWQgYSBkYXRhIGZvciBhIHNlcmllcyIpLEFtKCksUm0oMTUsInNlbGVjdCIsNiksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkucnVuU2VsZWN0ZWQuZW1pdChuLnRhcmdldC52YWx1ZSl9KSksUm0oMTYsIm9wdGlvbiIsNyksa3UoMTcsIi0iKSxBbSgpLFFwKDE4LGk1LDIsMiwib3B0aW9uIiw4KSxBbSgpLEFtKCksUm0oMTksImRpdiIsOSksUm0oMjAsInNwYW4iKSxrdSgyMSwiRG93bmxvYWQgYXPigKYiKSxBbSgpLGt1KDIyLCLCoCIpLFJtKDIzLCJhIiwxMCksa3UoMjQsIkpTT04iKSxBbSgpLFJtKDI1LCJhIiwxMCksa3UoMjYsIkNTViIpLEFtKCksQW0oKSxBbSgpLFJtKDI3LCJtYXQtZGlhbG9nLWFjdGlvbnMiLDExKSxSbSgyOCwiYnV0dG9uIiwxMiksa3UoMjksIkNsb3NlIiksQW0oKSxBbSgpLHptKCl9aWYoMiZ0KXtjb25zdCB0PSRwKDMpLGU9WW0oKTtyYyg2KSxEbSgibmdUZW1wbGF0ZU91dGxldCIsdCkscmMoMyksRG0oInRpdGxlIixlLmNhcmRNZXRhZGF0YS50YWcpLHJjKDEpLFN1KGUuY2FyZE1ldGFkYXRhLnRhZykscmMoNSksRG0oInZhbHVlIixlLnNlbGVjdGVkUnVuSWR8fCIiKSxyYygxKSxEbSgidmFsdWUiLCIiKSxyYygyKSxEbSgibmdGb3JPZiIsZS5ydW5zKSxyYyg1KSxEbSgiZGlzYWJsZWQiLCFlLmRvd25sb2FkVXJsSnNvbikoImRvd25sb2FkIixlLmdldERvd25sb2FkTmFtZSgianNvbiIpKSxqcCgiaHJlZiIsZS5kb3dubG9hZFVybEpzb24sVHMpLHJjKDIpLERtKCJkaXNhYmxlZCIsIWUuZG93bmxvYWRVcmxDc3YpKCJkb3dubG9hZCIsZS5nZXREb3dubG9hZE5hbWUoImNzdiIpKSxqcCgiaHJlZiIsZS5kb3dubG9hZFVybENzdixUcyl9fWZ1bmN0aW9uIHI1KHQsZSl7MSZ0JiZrdSgwLCJMb2FkaW5nLi4uIil9WDIuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFgyKShTbShJdyksU20oUEEpKX0sWDIuybVjbXA9dG8oe3R5cGU6WDIsc2VsZWN0b3JzOltbImltYWdlLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjE0LHZhcnM6NDEsY29uc3RzOltbMywibG9hZFN0YXRlIiwidGl0bGUiLCJ0YWciLCJydW5JZCIsInNhbXBsZSIsIm51bVNhbXBsZSIsImltYWdlVXJsIiwic3RlcEluZGV4Iiwic3RlcFZhbHVlcyIsImJyaWdodG5lc3NJbk1pbGxpIiwiY29udHJhc3RJbk1pbGxpIiwicnVuQ29sb3JTY2FsZSIsInNob3dBY3R1YWxTaXplIiwiYWxsb3dUb2dnbGVBY3R1YWxTaXplIiwiaXNQaW5uZWQiLCJzdGVwSW5kZXhDaGFuZ2UiLCJvbkFjdHVhbFNpemVUb2dnbGUiLCJvblBpbkNsaWNrZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImltYWdlLWNhcmQtY29tcG9uZW50IiwwKSxWbSgic3RlcEluZGV4Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblN0ZXBJbmRleENoYW5nZWQoZSl9KSkoIm9uQWN0dWFsU2l6ZVRvZ2dsZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkFjdHVhbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBaCg0LCJhc3luYyIpLEFoKDUsImFzeW5jIiksQWgoNiwiYXN5bmMiKSxBaCg3LCJhc3luYyIpLEFoKDgsImFzeW5jIiksQWgoOSwiYXN5bmMiKSxBaCgxMCwiYXN5bmMiKSxBaCgxMSwiYXN5bmMiKSxBaCgxMiwiYXN5bmMiKSxBaCgxMywiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJsb2FkU3RhdGUiLFRoKDEsMTUsbi5sb2FkU3RhdGUkKSkoInRpdGxlIixUaCgyLDE3LG4udGl0bGUkKSkoInRhZyIsVGgoMywxOSxuLnRhZyQpKSgicnVuSWQiLFRoKDQsMjEsbi5ydW5JZCQpKSgic2FtcGxlIixUaCg1LDIzLG4uc2FtcGxlJCkpKCJudW1TYW1wbGUiLFRoKDYsMjUsbi5udW1TYW1wbGUkKSkoImltYWdlVXJsIixUaCg3LDI3LG4uaW1hZ2VVcmwkKSkoInN0ZXBJbmRleCIsVGgoOCwyOSxuLnN0ZXBJbmRleCQpKSgic3RlcFZhbHVlcyIsVGgoOSwzMSxuLnN0ZXBWYWx1ZXMkKSkoImJyaWdodG5lc3NJbk1pbGxpIixUaCgxMCwzMyxuLmJyaWdodG5lc3NJbk1pbGxpJCkpKCJjb250cmFzdEluTWlsbGkiLFRoKDExLDM1LG4uY29udHJhc3RJbk1pbGxpJCkpKCJydW5Db2xvclNjYWxlIixuLnJ1bkNvbG9yU2NhbGUpKCJzaG93QWN0dWFsU2l6ZSIsbi5zaG93QWN0dWFsU2l6ZSkoImFsbG93VG9nZ2xlQWN0dWFsU2l6ZSIsITE9PT1UaCgxMiwzNyxuLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCkpKCJpc1Bpbm5lZCIsVGgoMTMsMzksbi5pc1Bpbm5lZCQpKX0sZGlyZWN0aXZlczpbWjJdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYMixbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPGltYWdlLWNhcmQtY29tcG9uZW50XG4gICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiXG4gICAgICBbdGFnXT0idGFnJCB8IGFzeW5jIlxuICAgICAgW3J1bklkXT0icnVuSWQkIHwgYXN5bmMiXG4gICAgICBbc2FtcGxlXT0ic2FtcGxlJCB8IGFzeW5jIlxuICAgICAgW251bVNhbXBsZV09Im51bVNhbXBsZSQgfCBhc3luYyJcbiAgICAgIFtpbWFnZVVybF09ImltYWdlVXJsJCB8IGFzeW5jIlxuICAgICAgW3N0ZXBJbmRleF09InN0ZXBJbmRleCQgfCBhc3luYyJcbiAgICAgIFtzdGVwVmFsdWVzXT0ic3RlcFZhbHVlcyQgfCBhc3luYyJcbiAgICAgIChzdGVwSW5kZXhDaGFuZ2UpPSJvblN0ZXBJbmRleENoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFticmlnaHRuZXNzSW5NaWxsaV09ImJyaWdodG5lc3NJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgW2NvbnRyYXN0SW5NaWxsaV09ImNvbnRyYXN0SW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSJcbiAgICAgIFtzaG93QWN0dWFsU2l6ZV09InNob3dBY3R1YWxTaXplIlxuICAgICAgW2FsbG93VG9nZ2xlQWN0dWFsU2l6ZV09IihhY3R1YWxTaXplR2xvYmFsU2V0dGluZyQgfCBhc3luYykgPT09IGZhbHNlIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICAob25BY3R1YWxTaXplVG9nZ2xlKT0ib25BY3R1YWxTaXplVG9nZ2xlKCkiXG4gICAgICAob25QaW5DbGlja2VkKT0icGluU3RhdGVDaGFuZ2VkLmVtaXQoJGV2ZW50KSJcbiAgICA+PC9pbWFnZS1jYXJkLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9LHt0eXBlOlBBfV19KSx7Y2FyZElkOlt7dHlwZTp4eX1dLGdyb3VwTmFtZTpbe3R5cGU6eHl9XSxydW5Db2xvclNjYWxlOlt7dHlwZTp4eX1dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOk95fV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpPeX1dfSksKGZ1bmN0aW9uKHQpe3RbdC5TVkc9MF09IlNWRyIsdFt0LldFQkdMPTFdPSJXRUJHTCJ9KShLMnx8KEsyPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5MSU5FQVI9MF09IkxJTkVBUiIsdFt0LkxPRzEwPTFdPSJMT0cxMCIsdFt0LlRJTUU9Ml09IlRJTUUifSkoSjJ8fChKMj17fSkpO2NsYXNzIHM1e2NvbnN0cnVjdG9yKCl7dGhpcy5ydW5TZWxlY3RlZD1uZXcgTGgsdGhpcy5QbHVnaW5UeXBlPWhBfWdldERvd25sb2FkTmFtZSh0KXtjb25zdCBlPXRoaXMucnVucy5maW5kKCh0PT50LmlkPT09dGhpcy5zZWxlY3RlZFJ1bklkKSk7cmV0dXJuIGU/YCR7ZS5uYW1lfS4ke3R9YDoiIn19czUuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHM1KX0sczUuybVjbXA9dG8oe3R5cGU6czUsc2VsZWN0b3JzOltbImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRNZXRhZGF0YToiY2FyZE1ldGFkYXRhIixydW5zOiJydW5zIixzZWxlY3RlZFJ1bklkOiJzZWxlY3RlZFJ1bklkIixkb3dubG9hZFVybENzdjoiZG93bmxvYWRVcmxDc3YiLGRvd25sb2FkVXJsSnNvbjoiZG93bmxvYWRVcmxKc29uIn0sb3V0cHV0czp7cnVuU2VsZWN0ZWQ6InJ1blNlbGVjdGVkIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0NhcmRNZXRhZGF0YSIsIiJdLFsiZGF0YU5hbWUiLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJ0YWctbmFtZSIsMywidGl0bGUiXSxbImFwcGVhcmFuY2UiLCJmaWxsIiwxLCJydW4tc2VsZWN0b3IiXSxbIm1hdE5hdGl2ZUNvbnRyb2wiLCIiLCJuYW1lIiwicnVuIiwiY2RrRm9jdXNJbml0aWFsIiwiIiwicmVxdWlyZWQiLCIiLDMsInZhbHVlIiwiY2hhbmdlIl0sWyJzZWxlY3RlZCIsIiIsMywidmFsdWUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJkb3dubG9hZC1jb250cm9scyJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImRvd25sb2FkIl0sWyJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzQsIk5nU3dpdGNoRGVmYXVsdCJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUXAoMCxhNSwzMCwxMiwibmctY29udGFpbmVyIiwwKSxRcCgxLHI1LDEsMCwibmctdGVtcGxhdGUiLG51bGwsMSxpYikpLDImZSl7Y29uc3QgdD0kcCgyKTtEbSgibmdJZiIsbi5jYXJkTWV0YWRhdGEpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltkTSxNTSxzVyxBVix2VixMWSxJVSxCVSxsTSxLSCxsVyxYSCxhVyxmTSxnTV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9aDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxLjI1ZW07b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS5ydW4tc2VsZWN0b3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtO3dpZHRoOjEwMCV9LmRvd25sb2FkLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjllbX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdICAgYVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjNweCAxMHB4IDNweCAwfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChzNSxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse2NhcmRNZXRhZGF0YTpbe3R5cGU6eHl9XSxydW5zOlt7dHlwZTp4eX1dLHNlbGVjdGVkUnVuSWQ6W3t0eXBlOnh5fV0sZG93bmxvYWRVcmxDc3Y6W3t0eXBlOnh5fV0sZG93bmxvYWRVcmxKc29uOlt7dHlwZTp4eX1dLHJ1blNlbGVjdGVkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgbDV7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuc2VsZWN0ZWRSdW5JZCQ9bmV3IEYobnVsbCksdGhpcy5jYXJkTWV0YWRhdGEkPXQuc2VsZWN0KHlULG4uY2FyZElkKS5waXBlKGNlKCh0PT5Cb29sZWFuKHQpKSkpLHRoaXMuZG93bmxvYWRVcmxDc3YkPVd0KFt0LnNlbGVjdCh5VCxuLmNhcmRJZCksdGhpcy5zZWxlY3RlZFJ1bklkJF0pLnBpcGUoSXQoKChbdCxuXSk9PnQmJm4/ZS5kb3dubG9hZFVybCh0LnBsdWdpbix0LnRhZyxuLCJjc3YiKTpudWxsKSksTmUobnVsbCkpLHRoaXMuZG93bmxvYWRVcmxKc29uJD1XdChbdC5zZWxlY3QoeVQsbi5jYXJkSWQpLHRoaXMuc2VsZWN0ZWRSdW5JZCRdKS5waXBlKEl0KCgoW3Qsbl0pPT50JiZuP2UuZG93bmxvYWRVcmwodC5wbHVnaW4sdC50YWcsbiwianNvbiIpOm51bGwpKSxOZShudWxsKSksdGhpcy5ydW5zJD1XdChbdC5zZWxlY3QoZE4pLHQuc2VsZWN0KGhULG4uY2FyZElkKV0pLnBpcGUoSXQoKChbdCxlXSk9PmU/T2JqZWN0LmtleXMoZSkubWFwKChlPT50LmdldChlKSkpLmZpbHRlcihCb29sZWFuKTpbXSkpKX19ZnVuY3Rpb24gYzUodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gZDUodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGM1KHQoZSksbil9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKGUsbixvLGkpe2ZvcihudWxsPT1vJiYobz0wKSxudWxsPT1pJiYoaT1lLmxlbmd0aCk7bzxpOyl7dmFyIGE9bytpPj4+MTt0KGVbYV0sbik8MD9vPWErMTppPWF9cmV0dXJuIG99LHJpZ2h0OmZ1bmN0aW9uKGUsbixvLGkpe2ZvcihudWxsPT1vJiYobz0wKSxudWxsPT1pJiYoaT1lLmxlbmd0aCk7bzxpOyl7dmFyIGE9bytpPj4+MTt0KGVbYV0sbik+MD9pPWE6bz1hKzF9cmV0dXJuIG99fX1sNS7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bDUpKFNtKEl3KSxTbShQQSksU20oSkcpKX0sbDUuybVjbXA9dG8oe3R5cGU6bDUsc2VsZWN0b3JzOltbImRhdGFfZG93bmxvYWRfZGlhbG9nIl1dLGRlY2xzOjYsdmFyczoxNSxjb25zdHM6W1szLCJjYXJkTWV0YWRhdGEiLCJydW5zIiwic2VsZWN0ZWRSdW5JZCIsImRvd25sb2FkVXJsQ3N2IiwiZG93bmxvYWRVcmxKc29uIiwicnVuU2VsZWN0ZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCIsMCksVm0oInJ1blNlbGVjdGVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3RlZFJ1bklkJC5uZXh0KGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQWgoNSwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJjYXJkTWV0YWRhdGEiLFRoKDEsNSxuLmNhcmRNZXRhZGF0YSQpKSgicnVucyIsVGgoMiw3LG4ucnVucyQpKSgic2VsZWN0ZWRSdW5JZCIsVGgoMyw5LG4uc2VsZWN0ZWRSdW5JZCQpKSgiZG93bmxvYWRVcmxDc3YiLFRoKDQsMTEsbi5kb3dubG9hZFVybENzdiQpKSgiZG93bmxvYWRVcmxKc29uIixUaCg1LDEzLG4uZG93bmxvYWRVcmxKc29uJCkpfSxkaXJlY3RpdmVzOltzNV0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGw1LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImRhdGFfZG93bmxvYWRfZGlhbG9nIix0ZW1wbGF0ZTonPGRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudFxuICAgIFtjYXJkTWV0YWRhdGFdPSJjYXJkTWV0YWRhdGEkIHwgYXN5bmMiXG4gICAgW3J1bnNdPSJydW5zJCB8IGFzeW5jIlxuICAgIFtzZWxlY3RlZFJ1bklkXT0ic2VsZWN0ZWRSdW5JZCQgfCBhc3luYyJcbiAgICBbZG93bmxvYWRVcmxDc3ZdPSJkb3dubG9hZFVybENzdiQgfCBhc3luYyJcbiAgICBbZG93bmxvYWRVcmxKc29uXT0iZG93bmxvYWRVcmxKc29uJCB8IGFzeW5jIlxuICAgIChydW5TZWxlY3RlZCk9InNlbGVjdGVkUnVuSWQkLm5leHQoJGV2ZW50KSJcbiAgPjwvZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50PicsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fSx7dHlwZTpQQX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W0pHXX1dfV19KSxudWxsKSwoZnVuY3Rpb24odCl7dFt0Lk9SSUdJTkFMPTBdPSJPUklHSU5BTCIsdFt0LkRFUklWRUQ9MV09IkRFUklWRUQifSkoUTJ8fChRMj17fSkpO3ZhciBwNT1kNShjNSkucmlnaHQ7ZnVuY3Rpb24gbTUodCxlKXt2YXIgbixvLGksYT10Lmxlbmd0aCxyPS0xO2lmKG51bGw9PWUpe2Zvcig7KytyPGE7KWlmKG51bGwhPShuPXRbcl0pJiZuPj1uKWZvcihvPWk9bjsrK3I8YTspbnVsbCE9KG49dFtyXSkmJihvPm4mJihvPW4pLGk8biYmKGk9bikpfWVsc2UgZm9yKDsrK3I8YTspaWYobnVsbCE9KG49ZSh0W3JdLHIsdCkpJiZuPj1uKWZvcihvPWk9bjsrK3I8YTspbnVsbCE9KG49ZSh0W3JdLHIsdCkpJiYobz5uJiYobz1uKSxpPG4mJihpPW4pKTtyZXR1cm5bbyxpXX12YXIgdTU9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGY1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBnNSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBoNSh0LGUsbil7dD0rdCxlPStlLG49KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTppPDM/MTorbjtmb3IodmFyIG89LTEsaT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxhPW5ldyBBcnJheShpKTsrK288aTspYVtvXT10K28qbjtyZXR1cm4gYX12YXIgYjU9TWF0aC5zcXJ0KDUwKSx5NT1NYXRoLnNxcnQoMTApLF81PU1hdGguc3FydCgyKTtmdW5jdGlvbiBDNSh0LGUsbil7dmFyIG8saSxhLHIscz0tMTtpZihuPStuLCh0PSt0KT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChvPWU8dCkmJihpPXQsdD1lLGU9aSksMD09PShyPU01KHQsZSxuKSl8fCFpc0Zpbml0ZShyKSlyZXR1cm5bXTtpZihyPjApZm9yKHQ9TWF0aC5jZWlsKHQvciksZT1NYXRoLmZsb29yKGUvciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwoZS10KzEpKTsrK3M8aTspYVtzXT0odCtzKSpyO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KnIpLGU9TWF0aC5jZWlsKGUqciksYT1uZXcgQXJyYXkoaT1NYXRoLmNlaWwodC1lKzEpKTsrK3M8aTspYVtzXT0odC1zKS9yO3JldHVybiBvJiZhLnJldmVyc2UoKSxhfWZ1bmN0aW9uIE01KHQsZSxuKXt2YXIgbz0oZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApLGE9by9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49YjU/MTA6YT49eTU/NTphPj1fNT8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PWI1PzEwOmE+PXk1PzU6YT49XzU/MjoxKX1mdW5jdGlvbiB2NSh0LGUsbil7dmFyIG89TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApKSxhPW8vaTtyZXR1cm4gYT49YjU/aSo9MTA6YT49eTU/aSo9NTphPj1fNSYmKGkqPTIpLGU8dD8taTppfWZ1bmN0aW9uIHg1KHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIE81KCl7dmFyIHQ9ZzUsZT1tNSxuPXg1O2Z1bmN0aW9uIG8obyl7dmFyIGksYSxyPW8ubGVuZ3RoLHM9bmV3IEFycmF5KHIpO2ZvcihpPTA7aTxyOysraSlzW2ldPXQob1tpXSxpLG8pO3ZhciBsPWUocyksYz1sWzBdLGQ9bFsxXSxwPW4ocyxjLGQpO0FycmF5LmlzQXJyYXkocCl8fChwPXY1KGMsZCxwKSxwPWg1KE1hdGguY2VpbChjL3ApKnAsZCxwKSk7Zm9yKHZhciBtPXAubGVuZ3RoO3BbMF08PWM7KXAuc2hpZnQoKSwtLW07Zm9yKDtwW20tMV0+ZDspcC5wb3AoKSwtLW07dmFyIHUsZj1uZXcgQXJyYXkobSsxKTtmb3IoaT0wO2k8PW07KytpKSh1PWZbaV09W10pLngwPWk+MD9wW2ktMV06Yyx1LngxPWk8bT9wW2ldOmQ7Zm9yKGk9MDtpPHI7KytpKWM8PShhPXNbaV0pJiZhPD1kJiZmW3A1KHAsYSwwLG0pXS5wdXNoKG9baV0pO3JldHVybiBmfXJldHVybiBvLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZjUoZSksbyk6dH0sby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpmNShbdFswXSx0WzFdXSksbyk6ZX0sby50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9mNSh1NS5jYWxsKHQpKTpmNSh0KSxvKTpufSxvfXZhciBQNT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gdzUodCl7cmV0dXJuIHR9dmFyIGs1PTFlLTY7ZnVuY3Rpb24gUzUodCl7cmV0dXJuInRyYW5zbGF0ZSgiKyh0Ky41KSsiLDApIn1mdW5jdGlvbiBENSh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIEU1KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4rdChlKX19ZnVuY3Rpb24gUjUodCl7dmFyIGU9TWF0aC5tYXgoMCx0LmJhbmR3aWR0aCgpLTEpLzI7cmV0dXJuIHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSksZnVuY3Rpb24obil7cmV0dXJuK3QobikrZX19ZnVuY3Rpb24gQTUoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gVDUodCxlKXt2YXIgbj1bXSxvPW51bGwsaT1udWxsLGE9NixyPTYscz0zLGw9MT09PXR8fDQ9PT10Py0xOjEsYz00PT09dHx8Mj09PXQ/IngiOiJ5IixkPTE9PT10fHwzPT09dD9TNTpENTtmdW5jdGlvbiBwKHApe3ZhciBtPW51bGw9PW8/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUsbik6ZS5kb21haW4oKTpvLHU9bnVsbD09aT9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUsbik6dzU6aSxmPU1hdGgubWF4KGEsMCkrcyxnPWUucmFuZ2UoKSxoPStnWzBdKy41LGI9K2dbZy5sZW5ndGgtMV0rLjUseT0oZS5iYW5kd2lkdGg/UjU6RTUpKGUuY29weSgpKSxfPXAuc2VsZWN0aW9uP3Auc2VsZWN0aW9uKCk6cCxDPV8uc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLE09Xy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShtLGUpLm9yZGVyKCksdj1NLmV4aXQoKSx4PU0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxPPU0uc2VsZWN0KCJsaW5lIiksUD1NLnNlbGVjdCgidGV4dCIpO0M9Qy5tZXJnZShDLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxNPU0ubWVyZ2UoeCksTz1PLm1lcmdlKHguYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixsKmEpKSxQPVAubWVyZ2UoeC5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGwqZikuYXR0cigiZHkiLDE9PT10PyIwZW0iOjM9PT10PyIwLjcxZW0iOiIwLjMyZW0iKSkscCE9PV8mJihDPUMudHJhbnNpdGlvbihwKSxNPU0udHJhbnNpdGlvbihwKSxPPU8udHJhbnNpdGlvbihwKSxQPVAudHJhbnNpdGlvbihwKSx2PXYudHJhbnNpdGlvbihwKS5hdHRyKCJvcGFjaXR5IixrNSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9eSh0KSk/ZCh0KTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSkseC5hdHRyKCJvcGFjaXR5IixrNSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gZChlJiZpc0Zpbml0ZShlPWUodCkpP2U6eSh0KSl9KSkpLHYucmVtb3ZlKCksQy5hdHRyKCJkIiw0PT09dHx8Mj09dD9yPyJNIitsKnIrIiwiK2grIkgwLjVWIitiKyJIIitsKnI6Ik0wLjUsIitoKyJWIitiOnI/Ik0iK2grIiwiK2wqcisiVjAuNUgiK2IrIlYiK2wqcjoiTSIraCsiLDAuNUgiK2IpLE0uYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuIGQoeSh0KSl9KSksTy5hdHRyKGMrIjIiLGwqYSksUC5hdHRyKGMsbCpmKS50ZXh0KHUpLF8uZmlsdGVyKEE1KS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIiwyPT09dD8ic3RhcnQiOjQ9PT10PyJlbmQiOiJtaWRkbGUiKSxfLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9eX0pKX1yZXR1cm4gcC5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LHApOmV9LHAudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gbj1QNS5jYWxsKGFyZ3VtZW50cykscH0scC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/W106UDUuY2FsbCh0KSxwKTpuLnNsaWNlKCl9LHAudGlja1ZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6UDUuY2FsbCh0KSxwKTpvJiZvLnNsaWNlKCl9LHAudGlja0Zvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHApOml9LHAudGlja1NpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cj0rdCxwKTphfSxwLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QscCk6YX0scC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LHApOnJ9LHAudGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K3QscCk6c30scH1mdW5jdGlvbiBONSh0KXtyZXR1cm4gVDUoMix0KX1mdW5jdGlvbiB6NSh0KXtyZXR1cm4gVDUoMyx0KX12YXIgSTU9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gSDUoKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxvPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIG98fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtvW3RdPVtdfXJldHVybiBuZXcgRjUobyl9ZnVuY3Rpb24gRjUodCl7dGhpcy5fPXR9ZnVuY3Rpb24gTDUodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixvPXQuaW5kZXhPZigiLiIpO2lmKG8+PTAmJihuPXQuc2xpY2UobysxKSx0PXQuc2xpY2UoMCxvKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIEI1KHQsZSl7Zm9yKHZhciBuLG89MCxpPXQubGVuZ3RoO288aTsrK28paWYoKG49dFtvXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gVjUodCxlLG4pe2Zvcih2YXIgbz0wLGk9dC5sZW5ndGg7bzxpOysrbylpZih0W29dLm5hbWU9PT1lKXt0W29dPUk1LHQ9dC5zbGljZSgwLG8pLmNvbmNhdCh0LnNsaWNlKG8rMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1GNS5wcm90b3R5cGU9SDUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGNSxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcy5fLGk9TDUodCsiIixvKSxhPS0xLHI9aS5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK2E8cjspaWYobj0odD1pW2FdKS50eXBlKW9bbl09VjUob1tuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIG8pb1tuXT1WNShvW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrYTxyOylpZigobj0odD1pW2FdKS50eXBlKSYmKG49QjUob1tuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgRjUodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLG8saT1uZXcgQXJyYXkobiksYT0wO2E8bjsrK2EpaVthXT1hcmd1bWVudHNbYSsyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihhPTAsbj0obz10aGlzLl9bdF0pLmxlbmd0aDthPG47KythKW9bYV0udmFsdWUuYXBwbHkoZSxpKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBvPXRoaXMuX1t0XSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKW9baV0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBqNT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsVTU9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOmo1LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gRzUodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksVTUuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOlU1W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gVzUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1qNSYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09ajU/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIFk1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHE1KHQpe3ZhciBlPUc1KHQpO3JldHVybihlLmxvY2FsP1k1Olc1KShlKX1mdW5jdGlvbiBaNSgpe31mdW5jdGlvbiBYNSh0KXtyZXR1cm4gbnVsbD09dD9aNTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIEs1KCl7cmV0dXJuW119ZnVuY3Rpb24gSjUodCl7cmV0dXJuIG51bGw9PXQ/SzU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBRNSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiAkNSh0KXtyZXR1cm4gbmV3IEFycmF5KHQubGVuZ3RoKX1mdW5jdGlvbiB0NCh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiBlNCh0LGUsbixvLGksYSl7Zm9yKHZhciByLHM9MCxsPWUubGVuZ3RoLGM9YS5sZW5ndGg7czxjOysrcykocj1lW3NdKT8oci5fX2RhdGFfXz1hW3NdLG9bc109cik6bltzXT1uZXcgdDQodCxhW3NdKTtmb3IoO3M8bDsrK3MpKHI9ZVtzXSkmJihpW3NdPXIpfWZ1bmN0aW9uIG40KHQsZSxuLG8saSxhLHIpe3ZhciBzLGwsYyxkPXt9LHA9ZS5sZW5ndGgsbT1hLmxlbmd0aCx1PW5ldyBBcnJheShwKTtmb3Iocz0wO3M8cDsrK3MpKGw9ZVtzXSkmJih1W3NdPWM9IiQiK3IuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIGQ/aVtzXT1sOmRbY109bCk7Zm9yKHM9MDtzPG07KytzKShsPWRbYz0iJCIrci5jYWxsKHQsYVtzXSxzLGEpXSk/KG9bc109bCxsLl9fZGF0YV9fPWFbc10sZFtjXT1udWxsKTpuW3NdPW5ldyB0NCh0LGFbc10pO2ZvcihzPTA7czxwOysrcykobD1lW3NdKSYmZFt1W3NdXT09PWwmJihpW3NdPWwpfWZ1bmN0aW9uIG80KHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGk0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBhNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHI0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gczQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gbDQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIGM0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uIGQ0KHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBwNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBtNCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUsbil9fWZ1bmN0aW9uIHU0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1vP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LG8sbil9fWZ1bmN0aW9uIGY0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8ZDQodCkuZ2V0Q29tcHV0ZWRTdHlsZSh0LG51bGwpLmdldFByb3BlcnR5VmFsdWUoZSl9ZnVuY3Rpb24gZzQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGg0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBiNCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1ufX1mdW5jdGlvbiB5NCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gXzQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgQzQodCl9ZnVuY3Rpb24gQzQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPXk0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gTTQodCxlKXtmb3IodmFyIG49XzQodCksbz0tMSxpPWUubGVuZ3RoOysrbzxpOyluLmFkZChlW29dKX1mdW5jdGlvbiB2NCh0LGUpe2Zvcih2YXIgbj1fNCh0KSxvPS0xLGk9ZS5sZW5ndGg7KytvPGk7KW4ucmVtb3ZlKGVbb10pfWZ1bmN0aW9uIHg0KHQpe3JldHVybiBmdW5jdGlvbigpe000KHRoaXMsdCl9fWZ1bmN0aW9uIE80KHQpe3JldHVybiBmdW5jdGlvbigpe3Y0KHRoaXMsdCl9fWZ1bmN0aW9uIFA0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP000OnY0KSh0aGlzLHQpfX1mdW5jdGlvbiB3NCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gazQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX1mdW5jdGlvbiBTNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gRDQoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBFNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD10fX1mdW5jdGlvbiBSNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIEE0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFQ0KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gTjQoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB6NCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIEk0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITEpLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1mdW5jdGlvbiBINCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9dDQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp0NCxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSxDNC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciBGND17fSxMND1udWxsO2Z1bmN0aW9uIEI0KHQsZSxuKXtyZXR1cm4gdD1WNCh0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIFY0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGk9TDQ7TDQ9bzt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7TDQ9aX19fWZ1bmN0aW9uIGo0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIFU0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4sbz0wLGk9LTEsYT1lLmxlbmd0aDtvPGE7KytvKW49ZVtvXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytpXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysraT9lLmxlbmd0aD1pOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBHNCh0LGUsbil7dmFyIG89RjQuaGFzT3duUHJvcGVydHkodC50eXBlKT9CNDpWNDtyZXR1cm4gZnVuY3Rpb24oaSxhLHIpe3ZhciBzLGw9dGhpcy5fX29uLGM9byhlLGEscik7aWYobClmb3IodmFyIGQ9MCxwPWwubGVuZ3RoO2Q8cDsrK2QpaWYoKHM9bFtkXSkudHlwZT09PXQudHlwZSYmcy5uYW1lPT09dC5uYW1lKXJldHVybiB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXIscy5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIocy50eXBlLHMubGlzdGVuZXI9YyxzLmNhcHR1cmU9biksdm9pZChzLnZhbHVlPWUpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcih0LnR5cGUsYyxuKSxzPXt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSx2YWx1ZTplLGxpc3RlbmVyOmMsY2FwdHVyZTpufSxsP2wucHVzaChzKTp0aGlzLl9fb249W3NdfX1mdW5jdGlvbiBXNCh0LGUsbil7dmFyIG89ZDQodCksaT1vLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkoZSxuKTooaT1vLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KGkuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksaS5kZXRhaWw9bi5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gWTQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVzQodGhpcyx0LGUpfX1mdW5jdGlvbiBxNCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBXNCh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX0idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoIm9ubW91c2VlbnRlciJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChGND17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIFo0PVtudWxsXTtmdW5jdGlvbiBYNCh0LGUpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZX1mdW5jdGlvbiBLNCgpe3JldHVybiBuZXcgWDQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxaNCl9ZnVuY3Rpb24gSjQodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBYNChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IFg0KFtbdF1dLFo0KX1mdW5jdGlvbiBRNCgpe2Zvcih2YXIgdCxlPUw0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uICQ0KHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIG89bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBvLng9ZS5jbGllbnRYLG8ueT1lLmNsaWVudFksWyhvPW8ubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxvLnldfXZhciBpPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1pLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1pLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gdDYodCl7dmFyIGU9UTQoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksJDQodCxlKX1mdW5jdGlvbiBlNigpe0w0LnByZXZlbnREZWZhdWx0KCksTDQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gbjYodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1KNCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLGU2LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLGU2LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBvNih0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89SjQodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoby5vbigiY2xpY2suZHJhZyIsZTYsITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9vLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBpNih0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gYTYodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIG8gaW4gZSluW29dPWVbb107cmV0dXJuIG59ZnVuY3Rpb24gcjYoKXt9WDQucHJvdG90eXBlPUs0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WDQsc2VsZWN0OmZ1bmN0aW9uIHM2KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YNSh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLG89bmV3IEFycmF5KG4pLGk9MDtpPG47KytpKWZvcih2YXIgYSxyLHM9ZVtpXSxsPXMubGVuZ3RoLGM9b1tpXT1uZXcgQXJyYXkobCksZD0wO2Q8bDsrK2QpKGE9c1tkXSkmJihyPXQuY2FsbChhLGEuX19kYXRhX18sZCxzKSkmJigiX19kYXRhX18iaW4gYSYmKHIuX19kYXRhX189YS5fX2RhdGFfXyksY1tkXT1yKTtyZXR1cm4gbmV3IFg0KG8sdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBsNih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SjUodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPVtdLGk9W10sYT0wO2E8bjsrK2EpZm9yKHZhciByLHM9ZVthXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShyPXNbY10pJiYoby5wdXNoKHQuY2FsbChyLHIuX19kYXRhX18sYyxzKSksaS5wdXNoKHIpKTtyZXR1cm4gbmV3IFg0KG8saSl9LGZpbHRlcjpmdW5jdGlvbiBjNih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UTUodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxvPW5ldyBBcnJheShuKSxpPTA7aTxuOysraSlmb3IodmFyIGEscj1lW2ldLHM9ci5sZW5ndGgsbD1vW2ldPVtdLGM9MDtjPHM7KytjKShhPXJbY10pJiZ0LmNhbGwoYSxhLl9fZGF0YV9fLGMscikmJmwucHVzaChhKTtyZXR1cm4gbmV3IFg0KG8sdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gZDYodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGQ9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrZF09dH0pKSxmO3ZhciBuPWU/bjQ6ZTQsbz10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciByPWkubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpLGQ9MDtkPHI7KytkKXt2YXIgcD1vW2RdLG09aVtkXSx1PW0ubGVuZ3RoLGY9dC5jYWxsKHAscCYmcC5fX2RhdGFfXyxkLG8pLGc9Zi5sZW5ndGgsaD1sW2RdPW5ldyBBcnJheShnKSxiPXNbZF09bmV3IEFycmF5KGcpO24ocCxtLGgsYixjW2RdPW5ldyBBcnJheSh1KSxmLGUpO2Zvcih2YXIgeSxfLEM9MCxNPTA7QzxnOysrQylpZih5PWhbQ10pe2ZvcihDPj1NJiYoTT1DKzEpOyEoXz1iW01dKSYmKytNPGc7KTt5Ll9uZXh0PV98fG51bGx9fXJldHVybihzPW5ldyBYNChzLG8pKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gcDYoKXtyZXR1cm4gbmV3IFg0KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKCQ1KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBtNigpe3JldHVybiBuZXcgWDQodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcCgkNSksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gdTYodCxlLG4pe3ZhciBvPXRoaXMuZW50ZXIoKSxpPXRoaXMsYT10aGlzLmV4aXQoKTtyZXR1cm4gbz0iZnVuY3Rpb24iPT10eXBlb2YgdD90KG8pOm8uYXBwZW5kKHQrIiIpLG51bGwhPWUmJihpPWUoaSkpLG51bGw9PW4/YS5yZW1vdmUoKTpuKGEpLG8mJmk/by5tZXJnZShpKS5vcmRlcigpOml9LG1lcmdlOmZ1bmN0aW9uIGY2KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IFg0KGEsdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGc2KCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgbyxpPXRbZV0sYT1pLmxlbmd0aC0xLHI9aVthXTstLWE+PTA7KShvPWlbYV0pJiYociYmNF5vLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpJiZyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8scikscj1vKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBoNih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PW80KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLG89bi5sZW5ndGgsaT1uZXcgQXJyYXkobyksYT0wO2E8bzsrK2Epe2Zvcih2YXIgcixzPW5bYV0sbD1zLmxlbmd0aCxjPWlbYV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShyPXNbZF0pJiYoY1tkXT1yKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBYNChpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gYjYoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIHk2KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBfNigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIG89dFtlXSxpPTAsYT1vLmxlbmd0aDtpPGE7KytpKXt2YXIgcj1vW2ldO2lmKHIpcmV0dXJuIHJ9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gQzYoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIE02KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIHY2KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLG89ZS5sZW5ndGg7bjxvOysrbilmb3IodmFyIGksYT1lW25dLHI9MCxzPWEubGVuZ3RoO3I8czsrK3IpKGk9YVtyXSkmJnQuY2FsbChpLGkuX19kYXRhX18scixhKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiB4Nih0LGUpe3ZhciBuPUc1KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG89dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/by5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOm8uZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9hNDppNDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2M0Omw0Om4ubG9jYWw/czQ6cjQpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBPNih0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/cDQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dTQ6bTQpKHQsZSxudWxsPT1uPyIiOm4pKTpmNCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gUDYodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9nNDoiZnVuY3Rpb24iPT10eXBlb2YgZT9iNDpoNCkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gdzYodCxlKXt2YXIgbj15NCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbz1fNCh0aGlzLm5vZGUoKSksaT0tMSxhPW4ubGVuZ3RoOysraTxhOylpZighby5jb250YWlucyhuW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9QNDplP3g0Ok80KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBrNih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD93NDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UzQ6azQpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBTNih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9ENDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/UjQ6RTQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIEQ2KCl7cmV0dXJuIHRoaXMuZWFjaChBNCl9LGxvd2VyOmZ1bmN0aW9uIEU2KCl7cmV0dXJuIHRoaXMuZWFjaChUNCl9LGFwcGVuZDpmdW5jdGlvbiBSNih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnE1KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBBNih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cTUodCksbz1udWxsPT1lP040OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WDUoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBUNigpe3JldHVybiB0aGlzLmVhY2goejQpfSxjbG9uZTpmdW5jdGlvbiBONih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9INDpJNCl9LGRhdHVtOmZ1bmN0aW9uIHo2KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gSTYodCxlLG4pe3ZhciBvLGksYT1qNCh0KyIiKSxyPWEubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9HNDpVNCxudWxsPT1uJiYobj0hMSksbz0wO288cjsrK28pdGhpcy5lYWNoKHMoYVtvXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCxkPXMubGVuZ3RoO2M8ZDsrK2MpZm9yKG89MCxsPXNbY107bzxyOysrbylpZigoaT1hW29dKS50eXBlPT09bC50eXBlJiZpLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIEg2KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/cTQ6WTQpKHQsZSkpfX07dmFyIEY2PS43LEw2PTEvRjYsQjY9IlxccyooWystXT9cXGQrKVxccyoiLFY2PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGo2PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixVNj0vXiMoWzAtOWEtZl17Myw4fSkkLyxHNj1uZXcgUmVnRXhwKCJecmdiXFwoIitbQjYsQjYsQjZdKyJcXCkkIiksVzY9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2o2LGo2LGo2XSsiXFwpJCIpLFk2PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbQjYsQjYsQjYsVjZdKyJcXCkkIikscTY9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tqNixqNixqNixWNl0rIlxcKSQiKSxaNj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbVjYsajYsajZdKyJcXCkkIiksWDY9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tWNixqNixqNixWNl0rIlxcKSQiKSxLNj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBKNigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFE2KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gJDYodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9VTYuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj90NyhlKTozPT09bj9uZXcgaTcoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP2U3KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP2U3KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9RzYuZXhlYyh0KSk/bmV3IGk3KGVbMV0sZVsyXSxlWzNdLDEpOihlPVc2LmV4ZWModCkpP25ldyBpNygyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1ZNi5leGVjKHQpKT9lNyhlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1xNi5leGVjKHQpKT9lNygyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1aNi5leGVjKHQpKT9sNyhlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPVg2LmV4ZWModCkpP2w3KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6SzYuaGFzT3duUHJvcGVydHkodCk/dDcoSzZbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBpNyhOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIHQ3KHQpe3JldHVybiBuZXcgaTcodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIGU3KHQsZSxuLG8pe3JldHVybiBvPD0wJiYodD1lPW49TmFOKSxuZXcgaTcodCxlLG4sbyl9ZnVuY3Rpb24gbjcodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiByNnx8KHQ9JDYodCkpLHQ/bmV3IGk3KCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBpN31mdW5jdGlvbiBvNyh0LGUsbixvKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/bjcodCk6bmV3IGk3KHQsZSxuLG51bGw9PW8/MTpvKX1mdW5jdGlvbiBpNyh0LGUsbixvKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gYTcoKXtyZXR1cm4iIyIrczcodGhpcy5yKStzNyh0aGlzLmcpK3M3KHRoaXMuYil9ZnVuY3Rpb24gcjcoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBzNyh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGw3KHQsZSxuLG8pe3JldHVybiBvPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgcDcodCxlLG4sbyl9ZnVuY3Rpb24gYzcodCl7aWYodCBpbnN0YW5jZW9mIHA3KXJldHVybiBuZXcgcDcodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgcjZ8fCh0PSQ2KHQpKSwhdClyZXR1cm4gbmV3IHA3O2lmKHQgaW5zdGFuY2VvZiBwNylyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsbz10LmIvMjU1LGk9TWF0aC5taW4oZSxuLG8pLGE9TWF0aC5tYXgoZSxuLG8pLHI9TmFOLHM9YS1pLGw9KGEraSkvMjtyZXR1cm4gcz8ocj1lPT09YT8obi1vKS9zKzYqKG48byk6bj09PWE/KG8tZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P2EraToyLWEtaSxyKj02MCk6cz1sPjAmJmw8MT8wOnIsbmV3IHA3KHIscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gZDcodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M3KHQpOm5ldyBwNyh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gcDcodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIG03KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1pNihyNiwkNix7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpKNixmb3JtYXRIZXg6SjYsZm9ybWF0SHNsOmZ1bmN0aW9uIHU3KCl7cmV0dXJuIGM3KHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6UTYsdG9TdHJpbmc6UTZ9KSxpNihpNyxvNyxhNihyNix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9MNjpNYXRoLnBvdyhMNix0KSxuZXcgaTcodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/RjY6TWF0aC5wb3coRjYsdCksbmV3IGk3KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6YTcsZm9ybWF0SGV4OmE3LGZvcm1hdFJnYjpyNyx0b1N0cmluZzpyN30pKSxpNihwNyxkNyxhNihyNix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9MNjpNYXRoLnBvdyhMNix0KSxuZXcgcDcodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9GNjpNYXRoLnBvdyhGNix0KSxuZXcgcDcodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsbz1uKyhuPC41P246MS1uKSplLGk9MipuLW87cmV0dXJuIG5ldyBpNyhtNyh0Pj0yNDA/dC0yNDA6dCsxMjAsaSxvKSxtNyh0LGksbyksbTcodDwxMjA/dCsyNDA6dC0xMjAsaSxvKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgZjc9TWF0aC5QSS8xODAsZzc9MTgwL01hdGguUEksaDc9Ljk2NDIyLGI3PS44MjUyMSx5Nz00LzI5LF83PTYvMjksQzc9MypfNypfNztmdW5jdGlvbiBNNyh0KXtpZih0IGluc3RhbmNlb2YgdjcpcmV0dXJuIG5ldyB2Nyh0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBENylyZXR1cm4gRTcodCk7dCBpbnN0YW5jZW9mIGk3fHwodD1uNyh0KSk7dmFyIGUsbixvPXc3KHQuciksaT13Nyh0LmcpLGE9dzcodC5iKSxyPXg3KCguMjIyNTA0NSpvKy43MTY4Nzg2KmkrLjA2MDYxNjkqYSkvMSk7cmV0dXJuIG89PT1pJiZpPT09YT9lPW49cjooZT14NygoLjQzNjA3NDcqbysuMzg1MDY0OSppKy4xNDMwODA0KmEpL2g3KSxuPXg3KCguMDEzOTMyMipvKy4wOTcxMDQ1KmkrLjcxNDE3MzMqYSkvYjcpKSxuZXcgdjcoMTE2KnItMTYsNTAwKihlLXIpLDIwMCooci1uKSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHY3KHQsZSxuLG8pe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStuLHRoaXMub3BhY2l0eT0rb31mdW5jdGlvbiB4Nyh0KXtyZXR1cm4gdD4uMDA4ODU2NDUxNjc5MDM1NjMxP01hdGgucG93KHQsMS8zKTp0L0M3K3k3fWZ1bmN0aW9uIE83KHQpe3JldHVybiB0Pl83P3QqdCp0OkM3Kih0LXk3KX1mdW5jdGlvbiBQNyh0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIHc3KHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIGs3KHQpe2lmKHQgaW5zdGFuY2VvZiBENylyZXR1cm4gbmV3IEQ3KHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHY3fHwodD1NNyh0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IEQ3KE5hTiwwPHQubCYmdC5sPDEwMD8wOk5hTix0LmwsdC5vcGFjaXR5KTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKmc3O3JldHVybiBuZXcgRDcoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gUzcodCxlLG4sbyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2s3KHQpOm5ldyBENyh0LGUsbixudWxsPT1vPzE6byl9ZnVuY3Rpb24gRDcodCxlLG4sbyl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStvfWZ1bmN0aW9uIEU3KHQpe2lmKGlzTmFOKHQuaCkpcmV0dXJuIG5ldyB2Nyh0LmwsMCwwLHQub3BhY2l0eSk7dmFyIGU9dC5oKmY3O3JldHVybiBuZXcgdjcodC5sLE1hdGguY29zKGUpKnQuYyxNYXRoLnNpbihlKSp0LmMsdC5vcGFjaXR5KX1mdW5jdGlvbiBSNyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQTcodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBUNyh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9BNyh0LG4+MTgwfHxuPC0xODA/bi0zNjAqTWF0aC5yb3VuZChuLzM2MCk6bik6UjcoaXNOYU4odCk/ZTp0KX1mdW5jdGlvbiBONyh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9BNyh0LG4pOlI3KGlzTmFOKHQpP2U6dCl9aTYodjcsKGZ1bmN0aW9uIHo3KHQsZSxuLG8pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9NNyh0KTpuZXcgdjcodCxlLG4sbnVsbD09bz8xOm8pfSksYTYocjYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgdjcodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB2Nyh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgaTcoUDcoMy4xMzM4NTYxKihlPWg3Kk83KGUpKS0xLjYxNjg2NjcqKHQ9MSpPNyh0KSktLjQ5MDYxNDYqKG49YjcqTzcobikpKSxQNygtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLFA3KC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksaTYoRDcsUzcsYTYocjYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRDcodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBENyh0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBFNyh0aGlzKS5yZ2IoKX19KSk7dmFyIEk3PShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBvKHQpe3JldHVybiAxPT0odD0rdCk/Tjc6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKG8pe3JldHVybiBNYXRoLnBvdyh0K28qZSxuKX19KShlLG4sdCk6UjcoaXNOYU4oZSk/bjplKX19KShlKTtmdW5jdGlvbiBpKHQsZSl7dmFyIG89bigodD1vNyh0KSkuciwoZT1vNyhlKSkuciksaT1uKHQuZyxlLmcpLGE9bih0LmIsZS5iKSxyPU43KHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPW8oZSksdC5nPWkoZSksdC5iPWEoZSksdC5vcGFjaXR5PXIoZSksdCsiIn19cmV0dXJuIGkuZ2FtbWE9dCxpfSkoMSksSDc9KGZ1bmN0aW9uIEw3KHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbixvLGk9ZS5sZW5ndGgsYT1uZXcgQXJyYXkoaSkscj1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPGk7KytuKW89bzcoZVtuXSksYVtuXT1vLnJ8fDAscltuXT1vLmd8fDAsc1tuXT1vLmJ8fDA7cmV0dXJuIGE9dChhKSxyPXQocikscz10KHMpLG8ub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiBvLnI9YSh0KSxvLmc9cih0KSxvLmI9cyh0KSxvKyIifX19KSgoZnVuY3Rpb24gRjcodCl7dmFyIGU9dC5sZW5ndGgtMTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG89bjw9MD9uPTA6bj49MT8obj0xLGUtMSk6TWF0aC5mbG9vcihuKmUpLGk9dFtvXSxhPXRbbysxXTtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixvLGkpe3ZhciBhPXQqdCxyPWEqdDtyZXR1cm4oKDEtMyp0KzMqYS1yKSplKyg0LTYqYSszKnIpKm4rKDErMyp0KzMqYS0zKnIpKm8rcippKS82fSkoKG4tby9lKSplLG8+MD90W28tMV06MippLWEsaSxhLG88ZS0xP3RbbysyXToyKmEtaSl9fSkpO2Z1bmN0aW9uIEI3KHQsZSl7ZXx8KGU9W10pO3ZhciBuLG89dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxpPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24oYSl7Zm9yKG49MDtuPG87KytuKWlbbl09dFtuXSooMS1hKStlW25dKmE7cmV0dXJuIGl9fWZ1bmN0aW9uIFY3KHQsZSl7dmFyIG4sbz1lP2UubGVuZ3RoOjAsaT10P01hdGgubWluKG8sdC5sZW5ndGgpOjAsYT1uZXcgQXJyYXkoaSkscj1uZXcgQXJyYXkobyk7Zm9yKG49MDtuPGk7KytuKWFbbl09WjcodFtuXSxlW25dKTtmb3IoO248bzsrK24pcltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248aTsrK24pcltuXT1hW25dKHQpO3JldHVybiByfX1mdW5jdGlvbiBqNyh0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obyl7cmV0dXJuIG4uc2V0VGltZSh0KigxLW8pK2Uqbyksbn19ZnVuY3Rpb24gVTcodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gRzcodCxlKXt2YXIgbixvPXt9LGk9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9vW25dPVo3KHRbbl0sZVtuXSk6aVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBvKWlbbl09b1tuXSh0KTtyZXR1cm4gaX19dmFyIFc3PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxZNz1uZXcgUmVnRXhwKFc3LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIHE3KHQsZSl7dmFyIG4sbyxpLGE9VzcubGFzdEluZGV4PVk3Lmxhc3RJbmRleD0wLHI9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1XNy5leGVjKHQpKSYmKG89WTcuZXhlYyhlKSk7KShpPW8uaW5kZXgpPmEmJihpPWUuc2xpY2UoYSxpKSxzW3JdP3Nbcl0rPWk6c1srK3JdPWkpLChuPW5bMF0pPT09KG89b1swXSk/c1tyXT9zW3JdKz1vOnNbKytyXT1vOihzWysrcl09bnVsbCxsLnB1c2goe2k6cix4OlU3KG4sbyl9KSksYT1ZNy5sYXN0SW5kZXg7cmV0dXJuIGE8ZS5sZW5ndGgmJihpPWUuc2xpY2UoYSksc1tyXT9zW3JdKz1pOnNbKytyXT1pKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIGQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLG89MDtvPGU7KytvKXNbKG49bFtvXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gWjcodCxlKXt2YXIgbixvPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1vP1I3KGUpOigibnVtYmVyIj09PW8/VTc6InN0cmluZyI9PT1vPyhuPSQ2KGUpKT8oZT1uLEk3KTpxNzplIGluc3RhbmNlb2YgJDY/STc6ZSBpbnN0YW5jZW9mIERhdGU/ajc6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/Qjc6QXJyYXkuaXNBcnJheShlKT9WNzoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/Rzc6VTcpKHQsZSl9ZnVuY3Rpb24gWDcodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19dmFyIEs3LEo3LFE3LCQ3LHQ4PTE4MC9NYXRoLlBJLGU4PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIG44KHQsZSxuLG8saSxhKXt2YXIgcixzLGw7cmV0dXJuKHI9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPXIsZS89ciksKGw9dCpuK2UqbykmJihuLT10Kmwsby09ZSpsKSwocz1NYXRoLnNxcnQobipuK28qbykpJiYobi89cyxvLz1zLGwvPXMpLHQqbzxlKm4mJih0PS10LGU9LWUsbD0tbCxyPS1yKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6YSxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKnQ4LHNrZXdYOk1hdGguYXRhbihsKSp0OCxzY2FsZVg6cixzY2FsZVk6c319ZnVuY3Rpb24gbzgodCxlLG4sbyl7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKGEscil7dmFyIHM9W10sbD1bXTtyZXR1cm4gYT10KGEpLHI9dChyKSwoZnVuY3Rpb24gYyh0LG8saSxhLHIscyl7aWYodCE9PWl8fG8hPT1hKXt2YXIgbD1yLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpVNyh0LGkpfSx7aTpsLTIseDpVNyhvLGEpfSl9ZWxzZShpfHxhKSYmci5wdXNoKCJ0cmFuc2xhdGUoIitpK2UrYStuKX0pKGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVksci50cmFuc2xhdGVYLHIudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGEpe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxhLnB1c2goe2k6bi5wdXNoKGkobikrInJvdGF0ZSgiLG51bGwsbyktMix4OlU3KHQsZSl9KSk6ZSYmbi5wdXNoKGkobikrInJvdGF0ZSgiK2Urbyl9KShhLnJvdGF0ZSxyLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBwKHQsZSxuLGEpe3QhPT1lP2EucHVzaCh7aTpuLnB1c2goaShuKSsic2tld1goIixudWxsLG8pLTIseDpVNyh0LGUpfSk6ZSYmbi5wdXNoKGkobikrInNrZXdYKCIrZStvKX0pKGEuc2tld1gsci5za2V3WCxzLGwpLChmdW5jdGlvbiBtKHQsZSxuLG8sYSxyKXtpZih0IT09bnx8ZSE9PW8pe3ZhciBzPWEucHVzaChpKGEpKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtyLnB1c2goe2k6cy00LHg6VTcodCxuKX0se2k6cy0yLHg6VTcoZSxvKX0pfWVsc2UgMT09PW4mJjE9PT1vfHxhLnB1c2goaShhKSsic2NhbGUoIituKyIsIitvKyIpIil9KShhLnNjYWxlWCxhLnNjYWxlWSxyLnNjYWxlWCxyLnNjYWxlWSxzLGwpLGE9cj1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLG89bC5sZW5ndGg7KytuPG87KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIGk4LGE4LHI4PW84KChmdW5jdGlvbiBzOCh0KXtyZXR1cm4ibm9uZSI9PT10P2U4OihLN3x8KEs3PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLEo3PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxRNz1kb2N1bWVudC5kZWZhdWx0VmlldyksSzcuc3R5bGUudHJhbnNmb3JtPXQsdD1RNy5nZXRDb21wdXRlZFN0eWxlKEo3LmFwcGVuZENoaWxkKEs3KSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxKNy5yZW1vdmVDaGlsZChLNyksbjgoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLGw4PW84KChmdW5jdGlvbiBjOCh0KXtyZXR1cm4gbnVsbD09dD9lODooJDd8fCgkNz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSwkNy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9JDcudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/bjgoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6ZTgpfSksIiwgIiwiKSIsIikiKSxkOD0oZnVuY3Rpb24gcDgodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIG89dCgoZT1kNyhlKSkuaCwobj1kNyhuKSkuaCksaT1ONyhlLnMsbi5zKSxhPU43KGUubCxuLmwpLHI9TjcoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9byh0KSxlLnM9aSh0KSxlLmw9YSh0KSxlLm9wYWNpdHk9cih0KSxlKyIifX19KShUNyksbTg9KGZ1bmN0aW9uIHU4KHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvPXQoKGU9UzcoZSkpLmgsKG49UzcobikpLmgpLGk9TjcoZS5jLG4uYyksYT1ONyhlLmwsbi5sKSxyPU43KGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPW8odCksZS5jPWkodCksZS5sPWEodCksZS5vcGFjaXR5PXIodCksZSsiIn19fSkoVDcpLGY4PTAsZzg9MCxoOD0wLGI4PTAseTg9MCxfOD0wLEM4PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLE04PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHY4KCl7cmV0dXJuIHk4fHwoTTgoeDgpLHk4PUM4Lm5vdygpK184KX1mdW5jdGlvbiB4OCgpe3k4PTB9ZnVuY3Rpb24gTzgoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIFA4KHQsZSxuKXt2YXIgbz1uZXcgTzg7cmV0dXJuIG8ucmVzdGFydCh0LGUsbiksb31mdW5jdGlvbiB3OCgpe3k4PShiOD1DOC5ub3coKSkrXzgsZjg9Zzg9MDt0cnl7IShmdW5jdGlvbiB0KCl7djgoKSwrK2Y4O2Zvcih2YXIgdCxlPWk4O2U7KSh0PXk4LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1mOH0pKCl9ZmluYWxseXtmOD0wLChmdW5jdGlvbiBlKCl7Zm9yKHZhciB0LGUsbj1pOCxvPTEvMDtuOyluLl9jYWxsPyhvPm4uX3RpbWUmJihvPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6aTg9ZSk7YTg9dCxTOChvKX0pKCkseTg9MH19ZnVuY3Rpb24gazgoKXt2YXIgdD1DOC5ub3coKSxlPXQtYjg7ZT4xZTMmJihfOC09ZSxiOD10KX1mdW5jdGlvbiBTOCh0KXtmOHx8KGc4JiYoZzg9Y2xlYXJUaW1lb3V0KGc4KSksdC15OD4yND8odDwxLzAmJihnOD1zZXRUaW1lb3V0KHc4LHQtQzgubm93KCktXzgpKSxoOCYmKGg4PWNsZWFySW50ZXJ2YWwoaDgpKSk6KGg4fHwoYjg9Qzgubm93KCksaDg9c2V0SW50ZXJ2YWwoazgsMWUzKSksZjg9MSxNOCh3OCkpKX1mdW5jdGlvbiBEOCh0LGUsbil7dmFyIG89bmV3IE84O3JldHVybiBvLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe28uc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLG99TzgucHJvdG90eXBlPVA4LnByb3RvdHlwZT17Y29uc3RydWN0b3I6TzgscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP3Y4KCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fGE4PT09dGhpc3x8KGE4P2E4Ll9uZXh0PXRoaXM6aTg9dGhpcyxhOD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLFM4KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLFM4KCkpfX07dmFyIEU4PUg1KCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLFI4PVtdO2Z1bmN0aW9uIEE4KHQsZSxuLG8saSxhKXt2YXIgcj10Ll9fdHJhbnNpdGlvbjtpZihyKXtpZihuIGluIHIpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgbyxpPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIGEobCl7dmFyIGMsZCxwLG07aWYoMSE9PW4uc3RhdGUpcmV0dXJuIHMoKTtmb3IoYyBpbiBpKWlmKChtPWlbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1tLnN0YXRlKXJldHVybiBEOChhKTs0PT09bS5zdGF0ZT8obS5zdGF0ZT02LG0udGltZXIuc3RvcCgpLG0ub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sbS5pbmRleCxtLmdyb3VwKSxkZWxldGUgaVtjXSk6K2M8ZSYmKG0uc3RhdGU9NixtLnRpbWVyLnN0b3AoKSxtLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG0uaW5kZXgsbS5ncm91cCksZGVsZXRlIGlbY10pfWlmKEQ4KChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChyLG4uZGVsYXksbi50aW1lKSxyKGwpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMsbz1uZXcgQXJyYXkocD1uLnR3ZWVuLmxlbmd0aCksYz0wLGQ9LTE7YzxwOysrYykobT1uLnR3ZWVuW2NdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYob1srK2RdPW0pO28ubGVuZ3RoPWQrMX19ZnVuY3Rpb24gcihlKXtmb3IodmFyIGk9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KHMpLG4uc3RhdGU9NSwxKSxhPS0xLHI9by5sZW5ndGg7KythPHI7KW9bYV0uY2FsbCh0LGkpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLHMoKSl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgbyBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIGlbZV0saSlyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufWlbZV09bixuLnRpbWVyPVA4KChmdW5jdGlvbiBsKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmYSh0LW4uZGVsYXkpfSksMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6byxncm91cDppLG9uOkU4LHR3ZWVuOlI4LHRpbWU6YS50aW1lLGRlbGF5OmEuZGVsYXksZHVyYXRpb246YS5kdXJhdGlvbixlYXNlOmEuZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBUOCh0LGUpe3ZhciBuPXo4KHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gTjgodCxlKXt2YXIgbj16OCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiB6OCh0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIEk4KHQsZSl7dmFyIG4sbyxpLGE9dC5fX3RyYW5zaXRpb24scj0hMDtpZihhKXtmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLGEpKG49YVtpXSkubmFtZT09PWU/KG89bi5zdGF0ZT4yJiZuLnN0YXRlPDUsbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLG4ub24uY2FsbChvPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBhW2ldKTpyPSExO3ImJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gSDgodCxlKXt2YXIgbixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPU44KHRoaXMsdCksYT1pLnR3ZWVuO2lmKGEhPT1uKWZvcih2YXIgcj0wLHM9KG89bj1hKS5sZW5ndGg7cjxzOysrcilpZihvW3JdLm5hbWU9PT1lKXsobz1vLnNsaWNlKCkpLnNwbGljZShyLDEpO2JyZWFrfWkudHdlZW49b319ZnVuY3Rpb24gRjgodCxlLG4pe3ZhciBvLGk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPU44KHRoaXMsdCkscj1hLnR3ZWVuO2lmKHIhPT1vKXtpPShvPXIpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9aS5sZW5ndGg7bDxjOysrbClpZihpW2xdLm5hbWU9PT1lKXtpW2xdPXM7YnJlYWt9bD09PWMmJmkucHVzaChzKX1hLnR3ZWVuPWl9fWZ1bmN0aW9uIEw4KHQsZSxuKXt2YXIgbz10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PU44KHRoaXMsbyk7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIHo4KHQsbykudmFsdWVbZV19fWZ1bmN0aW9uIEI4KHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9VNzplIGluc3RhbmNlb2YgJDY/STc6KG49JDYoZSkpPyhlPW4sSTcpOnE3KSh0LGUpfWZ1bmN0aW9uIFY4KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBqOCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFU4KHQsZSxuKXt2YXIgbyxpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gcj09PWE/bnVsbDpyPT09bz9pOmk9ZShvPXIsbil9fWZ1bmN0aW9uIEc4KHQsZSxuKXt2YXIgbyxpLGE9bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIHI9PT1hP251bGw6cj09PW8/aTppPWUobz1yLG4pfX1mdW5jdGlvbiBXOCh0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKHI9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDpyPT09byYmcz09PWk/YTooaT1zLGE9ZShvPXIsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBZOCh0LGUsbil7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKHI9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWwrIiIpP251bGw6cj09PW8mJnM9PT1pP2E6KGk9cyxhPWUobz1yLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHE4KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBaOCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIFg4KHQsZSl7dmFyIG4sbztmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1vJiYobj0obz1pKSYmWjgodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIEs4KHQsZSl7dmFyIG4sbztmdW5jdGlvbiBpKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1vJiYobj0obz1pKSYmcTgodCxpKSksbn1yZXR1cm4gaS5fdmFsdWU9ZSxpfWZ1bmN0aW9uIEo4KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7VDgodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFE4KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtUOCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uICQ4KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7TjgodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHQ5KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtOOCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIGU5KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe044KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBuOSh0LGUsbil7dmFyIG8saSxhPShmdW5jdGlvbiByKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP1Q4Ok44O3JldHVybiBmdW5jdGlvbigpe3ZhciByPWEodGhpcyx0KSxzPXIub247cyE9PW8mJihpPShvPXMpLmNvcHkoKSkub24oZSxuKSxyLm9uPWl9fXZhciBvOT1LNC5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gaTkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gYTkodCxlLG4pe3JldHVybiBmdW5jdGlvbihvKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsbyksbil9fWZ1bmN0aW9uIHI5KHQsZSxuKXt2YXIgbyxpO2Z1bmN0aW9uIGEoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PWkmJihvPShpPWEpJiZhOSh0LGEsbikpLG99cmV0dXJuIGEuX3ZhbHVlPWUsYX1mdW5jdGlvbiBzOSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gbDkodCl7dmFyIGUsbjtmdW5jdGlvbiBvKCl7dmFyIG89dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1uJiYoZT0obj1vKSYmczkobykpLGV9cmV0dXJuIG8uX3ZhbHVlPXQsb312YXIgYzk9MDtmdW5jdGlvbiBkOSh0LGUsbixvKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPW99ZnVuY3Rpb24gcDkoKXtyZXR1cm4rK2M5fXZhciBtOT1LNC5wcm90b3R5cGU7ZDkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkOSxzZWxlY3Q6ZnVuY3Rpb24gdTkodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YNSh0KSk7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9bmV3IEFycmF5KGkpLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsLGM9b1tyXSxkPWMubGVuZ3RoLHA9YVtyXT1uZXcgQXJyYXkoZCksbT0wO208ZDsrK20pKHM9Y1ttXSkmJihsPXQuY2FsbChzLHMuX19kYXRhX18sbSxjKSkmJigiX19kYXRhX18iaW4gcyYmKGwuX19kYXRhX189cy5fX2RhdGFfXykscFttXT1sLEE4KHBbbV0sZSxuLG0scCx6OChzLG4pKSk7cmV0dXJuIG5ldyBkOShhLHRoaXMuX3BhcmVudHMsZSxuKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIGY5KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9SjUodCkpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPVtdLHI9W10scz0wO3M8aTsrK3MpZm9yKHZhciBsLGM9b1tzXSxkPWMubGVuZ3RoLHA9MDtwPGQ7KytwKWlmKGw9Y1twXSl7Zm9yKHZhciBtLHU9dC5jYWxsKGwsbC5fX2RhdGFfXyxwLGMpLGY9ejgobCxuKSxnPTAsaD11Lmxlbmd0aDtnPGg7KytnKShtPXVbZ10pJiZBOChtLGUsbixnLHUsZik7YS5wdXNoKHUpLHIucHVzaChsKX1yZXR1cm4gbmV3IGQ5KGEscixlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gZzkodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVE1KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsbz1uZXcgQXJyYXkobiksaT0wO2k8bjsrK2kpZm9yKHZhciBhLHI9ZVtpXSxzPXIubGVuZ3RoLGw9b1tpXT1bXSxjPTA7YzxzOysrYykoYT1yW2NdKSYmdC5jYWxsKGEsYS5fX2RhdGFfXyxjLHIpJiZsLnB1c2goYSk7cmV0dXJuIG5ldyBkOShvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIGg5KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsbz1lLmxlbmd0aCxpPU1hdGgubWluKG8sbi5sZW5ndGgpLGE9bmV3IEFycmF5KG8pLHI9MDtyPGk7KytyKWZvcih2YXIgcyxsPWVbcl0sYz1uW3JdLGQ9bC5sZW5ndGgscD1hW3JdPW5ldyBBcnJheShkKSxtPTA7bTxkOysrbSkocz1sW21dfHxjW21dKSYmKHBbbV09cyk7Zm9yKDtyPG87KytyKWFbcl09ZVtyXTtyZXR1cm4gbmV3IGQ5KGEsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIGI5KCl7cmV0dXJuIG5ldyBvOSh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24geTkoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49cDkoKSxvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcixzPW9bYV0sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihyPXNbY10pe3ZhciBkPXo4KHIsZSk7QTgocix0LG4sYyxzLHt0aW1lOmQudGltZStkLmRlbGF5K2QuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjpkLmR1cmF0aW9uLGVhc2U6ZC5lYXNlfSl9cmV0dXJuIG5ldyBkOShvLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDptOS5jYWxsLG5vZGVzOm05Lm5vZGVzLG5vZGU6bTkubm9kZSxzaXplOm05LnNpemUsZW1wdHk6bTkuZW1wdHksZWFjaDptOS5lYWNoLG9uOmZ1bmN0aW9uIF85KHQsZSl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj96OCh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2gobjkobix0LGUpKX0sYXR0cjpmdW5jdGlvbiBDOSh0LGUpe3ZhciBuPUc1KHQpLG89InRyYW5zZm9ybSI9PT1uP2w4OkI4O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBlPyhuLmxvY2FsP1k4Olc4KShuLG8sTDgodGhpcywiYXR0ci4iK3QsZSkpOm51bGw9PWU/KG4ubG9jYWw/ajg6VjgpKG4pOihuLmxvY2FsP0c4OlU4KShuLG8sZSkpfSxhdHRyVHdlZW46ZnVuY3Rpb24gTTkodCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBvPUc1KHQpO3JldHVybiB0aGlzLnR3ZWVuKG4sKG8ubG9jYWw/WDg6SzgpKG8sZSkpfSxzdHlsZTpmdW5jdGlvbiB2OSh0LGUsbil7dmFyIG89InRyYW5zZm9ybSI9PSh0Kz0iIik/cjg6Qjg7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGkodCxlKXt2YXIgbixvLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9ZjQodGhpcyx0KSxyPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGY0KHRoaXMsdCkpO3JldHVybiBhPT09cj9udWxsOmE9PT1uJiZyPT09bz9pOmk9ZShuPWEsbz1yKX19KSh0LG8pKS5vbigiZW5kLnN0eWxlLiIrdCxpOSh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlLG4pe3ZhciBvLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1mNCh0aGlzLHQpLHM9bih0aGlzKSxsPXMrIiI7cmV0dXJuIG51bGw9PXMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGw9cz1mNCh0aGlzLHQpKSxyPT09bD9udWxsOnI9PT1vJiZsPT09aT9hOihpPWwsYT1lKG89cixzKSl9fSkodCxvLEw4KHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIGEodCxlKXt2YXIgbixvLGksYSxyPSJzdHlsZS4iK2Uscz0iZW5kLiIrcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1OOCh0aGlzLHQpLGM9bC5vbixkPW51bGw9PWwudmFsdWVbcl0/YXx8KGE9aTkoZSkpOnZvaWQgMDtjPT09biYmaT09PWR8fChvPShuPWMpLmNvcHkoKSkub24ocyxpPWQpLGwub249b319KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBvLGksYT1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciByPWY0KHRoaXMsdCk7cmV0dXJuIHI9PT1hP251bGw6cj09PW8/aTppPWUobz1yLG4pfX0pKHQsbyxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiB4OSh0LGUsbil7dmFyIG89InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG89dGhpcy50d2VlbihvKSkmJm8uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obyxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obyxyOSh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gTzkodCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoTDgodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIFA5KHQpe3ZhciBlPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oZSxsOSh0KSl9LHJlbW92ZTpmdW5jdGlvbiB3OSgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBuIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtuIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBrOSh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBvLGk9ejgodGhpcy5ub2RlKCksbikudHdlZW4sYT0wLHI9aS5sZW5ndGg7YTxyOysrYSlpZigobz1pW2FdKS5uYW1lPT09dClyZXR1cm4gby52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP0g4OkY4KShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBTOSh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P0o4OlE4KShlLHQpKTp6OCh0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gRDkodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD8kODp0OSkoZSx0KSk6ejgodGhpcy5ub2RlKCksZSkuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gRTkodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGU5KGUsdCkpOno4KHRoaXMubm9kZSgpLGUpLmVhc2V9LGVuZDpmdW5jdGlvbiBSOSgpe3ZhciB0LGUsbj10aGlzLG89bi5faWQsaT1uLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEscil7dmFyIHM9e3ZhbHVlOnJ9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1pJiZhKCl9fTtuLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49TjgodGhpcyxvKSxpPW4ub247aSE9PXQmJigoZT0odD1pKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIEE5PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBUOSh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn19O2Z1bmN0aW9uIE45KHQsZSl7Zm9yKHZhciBuOyEobj10Ll9fdHJhbnNpdGlvbil8fCEobj1uW2VdKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIEE5LnRpbWU9djgoKSxBOTtyZXR1cm4gbn1mdW5jdGlvbiB6OSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSTkodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiBIOSgpe0w0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIEY5KCl7TDQucHJldmVudERlZmF1bHQoKSxMNC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1LNC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIEw5KHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7STgodGhpcyx0KX0pKX0sSzQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gQjkodCl7dmFyIGUsbjt0IGluc3RhbmNlb2YgZDk/KGU9dC5faWQsdD10Ll9uYW1lKTooZT1wOSgpLChuPUE5KS50aW1lPXY4KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcixzPW9bYV0sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykocj1zW2NdKSYmQTgocix0LGUsYyxzLG58fE45KHIsZSkpO3JldHVybiBuZXcgZDkobyx0aGlzLl9wYXJlbnRzLHQsZSl9O3ZhciBWOT17bmFtZToiZHJhZyJ9LGo5PXtuYW1lOiJzcGFjZSJ9LFU5PXtuYW1lOiJoYW5kbGUifSxHOT17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gVzkodCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiBZOSh0KXtyZXR1cm5bVzkodFswXSksVzkodFsxXSldfWZ1bmN0aW9uIHE5KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4oZnVuY3Rpb24gbih0LGUsbyl7YXJndW1lbnRzLmxlbmd0aDwzJiYobz1lLGU9UTQoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLGE9MCxyPWU/ZS5sZW5ndGg6MDthPHI7KythKWlmKChpPWVbYV0pLmlkZW50aWZpZXI9PT1vKXJldHVybiAkNCh0LGkpO3JldHVybiBudWxsfSkoZSxMNC50b3VjaGVzLHQpfX12YXIgWjk9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcChldHQpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bnVsbDpbWyt0WzBdLGVbMF1bMV1dLFsrdFsxXSxlWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSxYOT17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKGV0dCksaW5wdXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD9udWxsOltbZVswXVswXSwrdFswXV0sW2VbMV1bMF0sK3RbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LEs5PXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxKOT17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sUTk9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LCQ5PXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LHR0dD17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBldHQodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gbnR0KCl7cmV0dXJuIUw0LmN0cmxLZXkmJiFMNC5idXR0b259ZnVuY3Rpb24gb3R0KCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1sodD10LnZpZXdCb3guYmFzZVZhbCkueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXTpbWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gaXR0KCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIGF0dCh0KXtmb3IoOyF0Ll9fYnJ1c2g7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdC5fX2JydXNofWZ1bmN0aW9uIHJ0dCh0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfXZhciBzdHQ9TWF0aC5QSSxsdHQ9MipzdHQsY3R0PTFlLTYsZHR0PWx0dC1jdHQ7ZnVuY3Rpb24gcHR0KCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gbXR0KCl7cmV0dXJuIG5ldyBwdHR9cHR0LnByb3RvdHlwZT1tdHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwdHQsbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K28pfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK28rIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rYSl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLG8saSl7dmFyIGE9dGhpcy5feDEscj10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0obz0rbyktKGU9K2UpLGM9YS10LGQ9ci1lLHA9YypjK2QqZDtpZigoaT0raSk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihwPmN0dClpZihNYXRoLmFicyhkKnMtbCpjKT5jdHQmJmkpe3ZhciBtPW4tYSx1PW8tcixmPXMqcytsKmwsZz1tKm0rdSp1LGg9TWF0aC5zcXJ0KGYpLGI9TWF0aC5zcXJ0KHApLHk9aSpNYXRoLnRhbigoc3R0LU1hdGguYWNvcygoZitwLWcpLygyKmgqYikpKS8yKSxfPXkvYixDPXkvaDtNYXRoLmFicyhfLTEpPmN0dCYmKHRoaXMuXys9IkwiKyh0K18qYykrIiwiKyhlK18qZCkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhkKm0+Yyp1KSsiLCIrKHRoaXMuX3gxPXQrQypzKSsiLCIrKHRoaXMuX3kxPWUrQypsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpfSxhcmM6ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3Q9K3QsZT0rZSxhPSEhYTt2YXIgcj0obj0rbikqTWF0aC5jb3Mobykscz1uKk1hdGguc2luKG8pLGw9dCtyLGM9ZStzLGQ9MV5hLHA9YT9vLWk6aS1vO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+Y3R0fHxNYXRoLmFicyh0aGlzLl95MS1jKT5jdHQpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKHA8MCYmKHA9cCVsdHQrbHR0KSxwPmR0dD90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHQtcikrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrZCsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6cD5jdHQmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKHA+PXN0dCkrIiwiK2QrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLG8pe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtvKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciB1dHQ9IiQiO2Z1bmN0aW9uIGZ0dCgpe31mdW5jdGlvbiBndHQodCxlKXt2YXIgbj1uZXcgZnR0O2lmKHQgaW5zdGFuY2VvZiBmdHQpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgbyxpPS0xLGE9dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysraTxhOyluLnNldChpLHRbaV0pO2Vsc2UgZm9yKDsrK2k8YTspbi5zZXQoZShvPXRbaV0saSx0KSxvKX1lbHNlIGlmKHQpZm9yKHZhciByIGluIHQpbi5zZXQocix0W3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBodHQoKXt9ZnR0LnByb3RvdHlwZT1ndHQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpmdHQsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiB1dHQrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdXR0K3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1t1dHQrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dXR0K3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PXV0dCYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dXR0JiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT11dHQmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT11dHQmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dXR0JiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PXV0dClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09dXR0JiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciBidHQ9Z3R0LnByb3RvdHlwZTtmdW5jdGlvbiB5dHQodCxlKXtpZigobj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4sbz10LnNsaWNlKDAsbik7cmV0dXJuW28ubGVuZ3RoPjE/b1swXStvLnNsaWNlKDIpOm8sK3Quc2xpY2UobisxKV19ZnVuY3Rpb24gX3R0KHQpe3JldHVybih0PXl0dChNYXRoLmFicyh0KSkpP3RbMV06TmFOfWh0dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmh0dCxoYXM6YnR0LmhhcyxhZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbdXR0Kyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOmJ0dC5yZW1vdmUsY2xlYXI6YnR0LmNsZWFyLHZhbHVlczpidHQua2V5cyxzaXplOmJ0dC5zaXplLGVtcHR5OmJ0dC5lbXB0eSxlYWNoOmJ0dC5lYWNofTt2YXIgQ3R0LE10dD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiB2dHQodCl7aWYoIShlPU10dC5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgeHR0KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIHh0dCh0KXt0aGlzLmZpbGw9dm9pZCAwPT09dC5maWxsPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj12b2lkIDA9PT10LmFsaWduPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj12b2lkIDA9PT10LnNpZ24/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD12b2lkIDA9PT10LnN5bWJvbD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD12b2lkIDA9PT10LndpZHRoP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj12b2lkIDA9PT10LnByZWNpc2lvbj92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dm9pZCAwPT09dC50eXBlPyIiOnQudHlwZSsiIn1mdW5jdGlvbiBPdHQodCxlKXt2YXIgbj15dHQodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgbz1uWzBdLGk9blsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrbzpvLmxlbmd0aD5pKzE/by5zbGljZSgwLGkrMSkrIi4iK28uc2xpY2UoaSsxKTpvK25ldyBBcnJheShpLW8ubGVuZ3RoKzIpLmpvaW4oIjAiKX12dHQucHJvdG90eXBlPXh0dC5wcm90b3R5cGUseHR0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBQdHQ9eyIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbiB3dHQodCl7cmV0dXJuIE1hdGguYWJzKHQ9TWF0aC5yb3VuZCh0KSk+PTFlMjE/dC50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOnQudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBPdHQoMTAwKnQsZSl9LHI6T3R0LHM6ZnVuY3Rpb24ga3R0KHQsZSl7dmFyIG49eXR0KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIG89blswXSxpPW5bMV0sYT1pLShDdHQ9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKSsxLHI9by5sZW5ndGg7cmV0dXJuIGE9PT1yP286YT5yP28rbmV3IEFycmF5KGEtcisxKS5qb2luKCIwIik6YT4wP28uc2xpY2UoMCxhKSsiLiIrby5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKSt5dHQodCxNYXRoLm1heCgwLGUrYS0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gU3R0KHQpe3JldHVybiB0fXZhciBEdHQsRXR0LFJ0dCxBdHQ9QXJyYXkucHJvdG90eXBlLm1hcCxUdHQ9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIE50dCh0LGUpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6YnJlYWs7Y2FzZSAxOnRoaXMucmFuZ2UodCk7YnJlYWs7ZGVmYXVsdDp0aGlzLnJhbmdlKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc30hKGZ1bmN0aW9uIHp0dCh0KXtEdHQ9KGZ1bmN0aW9uIGUodCl7dmFyIGU9dm9pZCAwPT09dC5ncm91cGluZ3x8dm9pZCAwPT09dC50aG91c2FuZHM/U3R0OihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7Zm9yKHZhciBpPW4ubGVuZ3RoLGE9W10scj0wLHM9dFswXSxsPTA7aT4wJiZzPjAmJihsK3MrMT5vJiYocz1NYXRoLm1heCgxLG8tbCkpLGEucHVzaChuLnN1YnN0cmluZyhpLT1zLGkrcykpLCEoKGwrPXMrMSk+bykpOylzPXRbcj0ocisxKSV0Lmxlbmd0aF07cmV0dXJuIGEucmV2ZXJzZSgpLmpvaW4oZSl9fSkoQXR0LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxvPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixhPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLHI9dm9pZCAwPT09dC5udW1lcmFscz9TdHQ6KGZ1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKGUpe3JldHVybiB0WytlXX0pKX19KShBdHQuY2FsbCh0Lm51bWVyYWxzLFN0cmluZykpLGw9dm9pZCAwPT09dC5wZXJjZW50PyIlIjp0LnBlcmNlbnQrIiIsYz12b2lkIDA9PT10Lm1pbnVzPyItIjp0Lm1pbnVzKyIiLGQ9dm9pZCAwPT09dC5uYW4/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gcCh0KXt2YXIgbj0odD12dHQodCkpLmZpbGwscz10LmFsaWduLHA9dC5zaWduLG09dC5zeW1ib2wsdT10Lnplcm8sZj10LndpZHRoLGc9dC5jb21tYSxoPXQucHJlY2lzaW9uLGI9dC50cmltLHk9dC50eXBlOyJuIj09PXk/KGc9ITAseT0iZyIpOlB0dFt5XXx8KHZvaWQgMD09PWgmJihoPTEyKSxiPSEwLHk9ImciKSwodXx8IjAiPT09biYmIj0iPT09cykmJih1PSEwLG49IjAiLHM9Ij0iKTt2YXIgXz0iJCI9PT1tP286IiMiPT09bSYmL1tib3hYXS8udGVzdCh5KT8iMCIreS50b0xvd2VyQ2FzZSgpOiIiLEM9IiQiPT09bT9pOi9bJXBdLy50ZXN0KHkpP2w6IiIsTT1QdHRbeV0sdj0vW2RlZmdwcnMlXS8udGVzdCh5KTtmdW5jdGlvbiB4KHQpe3ZhciBvLGksbCxtPV8seD1DO2lmKCJjIj09PXkpeD1NKHQpK3gsdD0iIjtlbHNle3ZhciBPPSh0PSt0KTwwfHwxL3Q8MDtpZih0PWlzTmFOKHQpP2Q6TShNYXRoLmFicyh0KSxoKSxiJiYodD0oZnVuY3Rpb24gUCh0KXt0OmZvcih2YXIgZSxuPXQubGVuZ3RoLG89MSxpPS0xO288bjsrK28pc3dpdGNoKHRbb10pe2Nhc2UiLiI6aT1lPW87YnJlYWs7Y2FzZSIwIjowPT09aSYmKGk9byksZT1vO2JyZWFrO2RlZmF1bHQ6aWYoISt0W29dKWJyZWFrIHQ7aT4wJiYoaT0wKX1yZXR1cm4gaT4wP3Quc2xpY2UoMCxpKSt0LnNsaWNlKGUrMSk6dH0pKHQpKSxPJiYwPT0rdCYmIisiIT09cCYmKE89ITEpLG09KE8/IigiPT09cD9wOmM6Ii0iPT09cHx8IigiPT09cD8iIjpwKSttLHg9KCJzIj09PXk/VHR0WzgrQ3R0LzNdOiIiKSt4KyhPJiYiKCI9PT1wPyIpIjoiIiksdilmb3Iobz0tMSxpPXQubGVuZ3RoOysrbzxpOylpZig0OD4obD10LmNoYXJDb2RlQXQobykpfHxsPjU3KXt4PSg0Nj09PWw/YSt0LnNsaWNlKG8rMSk6dC5zbGljZShvKSkreCx0PXQuc2xpY2UoMCxvKTticmVha319ZyYmIXUmJih0PWUodCwxLzApKTt2YXIgdz1tLmxlbmd0aCt0Lmxlbmd0aCt4Lmxlbmd0aCxrPXc8Zj9uZXcgQXJyYXkoZi13KzEpLmpvaW4obik6IiI7c3dpdGNoKGcmJnUmJih0PWUoayt0LGsubGVuZ3RoP2YteC5sZW5ndGg6MS8wKSxrPSIiKSxzKXtjYXNlIjwiOnQ9bSt0K3grazticmVhaztjYXNlIj0iOnQ9bStrK3QreDticmVhaztjYXNlIl4iOnQ9ay5zbGljZSgwLHc9ay5sZW5ndGg+PjEpK20rdCt4K2suc2xpY2Uodyk7YnJlYWs7ZGVmYXVsdDp0PWsrbSt0K3h9cmV0dXJuIHIodCl9cmV0dXJuIGg9dm9pZCAwPT09aD82Oi9bZ3Byc10vLnRlc3QoeSk/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxoKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxoKSkseC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx4fXJldHVybntmb3JtYXQ6cCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gbSh0LGUpe3ZhciBuPXAoKCh0PXZ0dCh0KSkudHlwZT0iZiIsdCkpLG89MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoX3R0KGUpLzMpKSksaT1NYXRoLnBvdygxMCwtbyksYT1UdHRbOCtvLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbihpKnQpK2F9fX19KSh0KSxFdHQ9RHR0LmZvcm1hdCxSdHQ9RHR0LmZvcm1hdFByZWZpeH0pKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KTt2YXIgSXR0PUFycmF5LnByb3RvdHlwZSxIdHQ9SXR0Lm1hcCxGdHQ9SXR0LnNsaWNlLEx0dD17bmFtZToiaW1wbGljaXQifTtmdW5jdGlvbiBCdHQoKXt2YXIgdD1ndHQoKSxlPVtdLG49W10sbz1MdHQ7ZnVuY3Rpb24gaShpKXt2YXIgYT1pKyIiLHI9dC5nZXQoYSk7aWYoIXIpe2lmKG8hPT1MdHQpcmV0dXJuIG87dC5zZXQoYSxyPWUucHVzaChpKSl9cmV0dXJuIG5bKHItMSklbi5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W10sdD1ndHQoKTtmb3IodmFyIG8sYSxyPS0xLHM9bi5sZW5ndGg7KytyPHM7KXQuaGFzKGE9KG89bltyXSkrIiIpfHx0LnNldChhLGUucHVzaChvKSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49RnR0LmNhbGwodCksaSk6bi5zbGljZSgpfSxpLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxpKTpvfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQnR0KGUsbikudW5rbm93bihvKX0sTnR0LmFwcGx5KGksYXJndW1lbnRzKSxpfWZ1bmN0aW9uIFZ0dCgpe3ZhciB0LGUsbj1CdHQoKS51bmtub3duKHZvaWQgMCksbz1uLmRvbWFpbixpPW4ucmFuZ2UsYT1bMCwxXSxyPSExLHM9MCxsPTAsYz0uNTtmdW5jdGlvbiBkKCl7dmFyIG49bygpLmxlbmd0aCxkPWFbMV08YVswXSxwPWFbZC0wXSxtPWFbMS1kXTt0PShtLXApL01hdGgubWF4KDEsbi1zKzIqbCksciYmKHQ9TWF0aC5mbG9vcih0KSkscCs9KG0tcC10KihuLXMpKSpjLGU9dCooMS1zKSxyJiYocD1NYXRoLnJvdW5kKHApLGU9TWF0aC5yb3VuZChlKSk7dmFyIHU9aDUobikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gcCt0KmV9KSk7cmV0dXJuIGkoZD91LnJldmVyc2UoKTp1KX1yZXR1cm4gZGVsZXRlIG4udW5rbm93bixuLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obyh0KSxkKCkpOm8oKX0sbi5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1bK3RbMF0sK3RbMV1dLGQoKSk6YS5zbGljZSgpfSxuLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGE9Wyt0WzBdLCt0WzFdXSxyPSEwLGQoKX0sbi5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGQoKSk6cn0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsbD0rdCksZCgpKTpzfSxuLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLHQpLGQoKSk6c30sbi5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsZCgpKTpsfSxuLmFsaWduPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksZCgpKTpjfSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVnR0KG8oKSxhKS5yb3VuZChyKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSxOdHQuYXBwbHkoZCgpLGFyZ3VtZW50cyl9ZnVuY3Rpb24ganR0KHQpe3ZhciBlPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGp0dChlKCkpfSx0fWZ1bmN0aW9uIFV0dCgpe3JldHVybiBqdHQoVnR0LmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIEd0dCh0KXtyZXR1cm4rdH12YXIgV3R0PVswLDFdO2Z1bmN0aW9uIFl0dCh0KXtyZXR1cm4gdH1mdW5jdGlvbiBxdHQodCxlKXtyZXR1cm4oZS09dD0rdCk/ZnVuY3Rpb24obil7cmV0dXJuKG4tdCkvZX06KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoaXNOYU4oZSk/TmFOOi41KX1mdW5jdGlvbiBadHQodCl7dmFyIGUsbj10WzBdLG89dFt0Lmxlbmd0aC0xXTtyZXR1cm4gbj5vJiYoZT1uLG49byxvPWUpLGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKG8sdCkpfX1mdW5jdGlvbiBYdHQodCxlLG4pe3ZhciBvPXRbMF0saT10WzFdLGE9ZVswXSxyPWVbMV07cmV0dXJuIGk8bz8obz1xdHQoaSxvKSxhPW4ocixhKSk6KG89cXR0KG8saSksYT1uKGEscikpLGZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCkpfX1mdW5jdGlvbiBLdHQodCxlLG4pe3ZhciBvPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLGk9bmV3IEFycmF5KG8pLGE9bmV3IEFycmF5KG8pLHI9LTE7Zm9yKHRbb108dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrcjxvOylpW3JdPXF0dCh0W3JdLHRbcisxXSksYVtyXT1uKGVbcl0sZVtyKzFdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49cDUodCxlLDEsbyktMTtyZXR1cm4gYVtuXShpW25dKGUpKX19ZnVuY3Rpb24gSnR0KHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpLnVua25vd24odC51bmtub3duKCkpfWZ1bmN0aW9uIFF0dCgpe3ZhciB0LGUsbixvLGksYSxyPVd0dCxzPVd0dCxsPVo3LGM9WXR0O2Z1bmN0aW9uIGQoKXtyZXR1cm4gbz1NYXRoLm1pbihyLmxlbmd0aCxzLmxlbmd0aCk+Mj9LdHQ6WHR0LGk9YT1udWxsLHB9ZnVuY3Rpb24gcChlKXtyZXR1cm4gaXNOYU4oZT0rZSk/bjooaXx8KGk9byhyLm1hcCh0KSxzLGwpKSkodChjKGUpKSl9cmV0dXJuIHAuaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybiBjKGUoKGF8fChhPW8ocyxyLm1hcCh0KSxVNykpKShuKSkpfSxwLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1IdHQuY2FsbCh0LEd0dCksYz09PVl0dHx8KGM9WnR0KHIpKSxkKCkpOnIuc2xpY2UoKX0scC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1GdHQuY2FsbCh0KSxkKCkpOnMuc2xpY2UoKX0scC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPUZ0dC5jYWxsKHQpLGw9WDcsZCgpfSxwLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQ/WnR0KHIpOll0dCxwKTpjIT09WXR0fSxwLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQsZCgpKTpsfSxwLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxwKTpufSxmdW5jdGlvbihuLG8pe3JldHVybiB0PW4sZT1vLGQoKX19ZnVuY3Rpb24gJHR0KHQsZSl7cmV0dXJuIFF0dCgpKHQsZSl9ZnVuY3Rpb24gdGV0KHQpe3ZhciBlPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuPWUoKTtyZXR1cm4gQzUoblswXSxuW24ubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0LG4pe3ZhciBvPWUoKTtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixvKXt2YXIgaSxhPXY1KHQsZSxuKTtzd2l0Y2goKG89dnR0KG51bGw9PW8/IixmIjpvKSkudHlwZSl7Y2FzZSJzIjp2YXIgcj1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBzKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoX3R0KGUpLzMpKSktX3R0KE1hdGguYWJzKHQpKSl9KShhLHIpKXx8KG8ucHJlY2lzaW9uPWkpLFJ0dChvLHIpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW8ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsX3R0KGUpLV90dCh0KSkrMX0pKGEsTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSl8fChvLnByZWNpc2lvbj1pLSgiZSI9PT1vLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9by5wcmVjaXNpb258fGlzTmFOKGk9KGZ1bmN0aW9uIGModCl7cmV0dXJuIE1hdGgubWF4KDAsLV90dChNYXRoLmFicyh0KSkpfSkoYSkpfHwoby5wcmVjaXNpb249aS0yKigiJSI9PT1vLnR5cGUpKX1yZXR1cm4gRXR0KG8pfSkob1swXSxvW28ubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCxuKX0sdC5uaWNlPWZ1bmN0aW9uKG4pe251bGw9PW4mJihuPTEwKTt2YXIgbyxpPWUoKSxhPTAscj1pLmxlbmd0aC0xLHM9aVthXSxsPWlbcl07cmV0dXJuIGw8cyYmKG89cyxzPWwsbD1vLG89YSxhPXIscj1vKSwobz1NNShzLGwsbikpPjA/bz1NNShzPU1hdGguZmxvb3Iocy9vKSpvLGw9TWF0aC5jZWlsKGwvbykqbyxuKTpvPDAmJihvPU01KHM9TWF0aC5jZWlsKHMqbykvbyxsPU1hdGguZmxvb3IobCpvKS9vLG4pKSxvPjA/KGlbYV09TWF0aC5mbG9vcihzL28pKm8saVtyXT1NYXRoLmNlaWwobC9vKSpvLGUoaSkpOm88MCYmKGlbYV09TWF0aC5jZWlsKHMqbykvbyxpW3JdPU1hdGguZmxvb3IobCpvKS9vLGUoaSkpLHR9LHR9ZnVuY3Rpb24gZWV0KCl7dmFyIHQ9JHR0KFl0dCxZdHQpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSnR0KHQsZWV0KCkpfSxOdHQuYXBwbHkodCxhcmd1bWVudHMpLHRldCh0KX1mdW5jdGlvbiBuZXQodCxlKXt2YXIgbixvPTAsaT0odD10LnNsaWNlKCkpLmxlbmd0aC0xLGE9dFtvXSxyPXRbaV07cmV0dXJuIHI8YSYmKG49byxvPWksaT1uLG49YSxhPXIscj1uKSx0W29dPWUuZmxvb3IoYSksdFtpXT1lLmNlaWwociksdH1mdW5jdGlvbiBvZXQodCl7cmV0dXJuIE1hdGgubG9nKHQpfWZ1bmN0aW9uIGlldCh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gYWV0KHQpe3JldHVybi1NYXRoLmxvZygtdCl9ZnVuY3Rpb24gcmV0KHQpe3JldHVybi1NYXRoLmV4cCgtdCl9ZnVuY3Rpb24gc2V0KHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBjZXQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi10KC1lKX19ZnVuY3Rpb24gZGV0KHQpe3ZhciBlLG4sbz10KG9ldCxpZXQpLGk9by5kb21haW4sYT0xMDtmdW5jdGlvbiByKCl7cmV0dXJuIGU9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvdH0pfSkoYSksbj0oZnVuY3Rpb24gcyh0KXtyZXR1cm4gMTA9PT10P3NldDp0PT09TWF0aC5FP01hdGguZXhwOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyh0LGUpfX0pKGEpLGkoKVswXTwwPyhlPWNldChlKSxuPWNldChuKSx0KGFldCxyZXQpKTp0KG9ldCxpZXQpLG99cmV0dXJuIG8uYmFzZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxyKCkpOmF9LG8uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLHIoKSk6aSgpfSxvLnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBvLHI9aSgpLHM9clswXSxsPXJbci5sZW5ndGgtMV07KG89bDxzKSYmKG09cyxzPWwsbD1tKTt2YXIgYyxkLHAsbT1lKHMpLHU9ZShsKSxmPW51bGw9PXQ/MTA6K3QsZz1bXTtpZighKGElMSkmJnUtbTxmKXtpZihtPU1hdGgucm91bmQobSktMSx1PU1hdGgucm91bmQodSkrMSxzPjApe2Zvcig7bTx1OysrbSlmb3IoZD0xLGM9bihtKTtkPGE7KytkKWlmKCEoKHA9YypkKTxzKSl7aWYocD5sKWJyZWFrO2cucHVzaChwKX19ZWxzZSBmb3IoO208dTsrK20pZm9yKGQ9YS0xLGM9bihtKTtkPj0xOy0tZClpZighKChwPWMqZCk8cykpe2lmKHA+bClicmVhaztnLnB1c2gocCl9fWVsc2UgZz1DNShtLHUsTWF0aC5taW4odS1tLGYpKS5tYXAobik7cmV0dXJuIG8/Zy5yZXZlcnNlKCk6Z30sby50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsaSl7aWYobnVsbD09aSYmKGk9MTA9PT1hPyIuMGUiOiIsIiksImZ1bmN0aW9uIiE9dHlwZW9mIGkmJihpPUV0dChpKSksdD09PTEvMClyZXR1cm4gaTtudWxsPT10JiYodD0xMCk7dmFyIHI9TWF0aC5tYXgoMSxhKnQvby50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBvPXQvbihNYXRoLnJvdW5kKGUodCkpKTtyZXR1cm4gbyphPGEtLjUmJihvKj1hKSxvPD1yP2kodCk6IiJ9fSxvLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gaShuZXQoaSgpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmZsb29yKGUodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmNlaWwoZSh0KSkpfX0pKX0sb31mdW5jdGlvbiBwZXQoKXt2YXIgdD1kZXQoUXR0KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSnR0KHQscGV0KCkpLmJhc2UodC5iYXNlKCkpfSxOdHQuYXBwbHkodCxhcmd1bWVudHMpLHR9dmFyIG1ldD1uZXcgRGF0ZSx1ZXQ9bmV3IERhdGU7ZnVuY3Rpb24gZmV0KHQsZSxuLG8pe2Z1bmN0aW9uIGkoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIGkuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LGkuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LGkucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9aSh0KSxuPWkuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LGkub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LGkucmFuZ2U9ZnVuY3Rpb24obixvLGEpe3ZhciByLHM9W107aWYobj1pLmNlaWwobiksYT1udWxsPT1hPzE6TWF0aC5mbG9vcihhKSwhKG48byYmYT4wKSlyZXR1cm4gcztkb3tzLnB1c2gocj1uZXcgRGF0ZSgrbikpLGUobixhKSx0KG4pfXdoaWxlKHI8biYmbjxvKTtyZXR1cm4gc30saS5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGZldCgoZnVuY3Rpb24oZSl7aWYoZT49ZSlmb3IoO3QoZSksIW4oZSk7KWUuc2V0VGltZShlLTEpfSksKGZ1bmN0aW9uKHQsbyl7aWYodD49dClpZihvPDApZm9yKDsrK288PTA7KWZvcig7ZSh0LC0xKSwhbih0KTspO2Vsc2UgZm9yKDstLW8+PTA7KWZvcig7ZSh0LDEpLCFuKHQpOyk7fSkpfSxuJiYoaS5jb3VudD1mdW5jdGlvbihlLG8pe3JldHVybiBtZXQuc2V0VGltZSgrZSksdWV0LnNldFRpbWUoK28pLHQobWV0KSx0KHVldCksTWF0aC5mbG9vcihuKG1ldCx1ZXQpKX0saS5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2kuZmlsdGVyKG8/ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkldD09MH06ZnVuY3Rpb24oZSl7cmV0dXJuIGkuY291bnQoMCxlKSV0PT0wfSk6aTpudWxsfSksaX12YXIgZ2V0PWZldCgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO2dldC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdD1NYXRoLmZsb29yKHQpLGlzRmluaXRlKHQpJiZ0PjA/dD4xP2ZldCgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpnZXQ6bnVsbH07dmFyIGhldD1nZXQsYmV0PTFlMyx5ZXQ9NmU0LF9ldD0zNmU1LENldD04NjRlNSxNZXQ9NjA0OGU1LHZldD1mZXQoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCkpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqYmV0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2JldH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSkseGV0PWZldCgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpiZXQpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqeWV0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3lldH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNaW51dGVzKCl9KSksT2V0PWZldCgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpiZXQtdC5nZXRNaW51dGVzKCkqeWV0KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKl9ldCl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9fZXR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pKSxQZXQ9ZmV0KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqeWV0KS9DZXR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSk7ZnVuY3Rpb24gd2V0KHQpe3JldHVybiBmZXQoKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKnlldCkvTWV0fSkpfXZhciBrZXQ9d2V0KDApLERldD13ZXQoMSk7d2V0KDIpLHdldCgzKTt2YXIgRWV0PXdldCg0KTt3ZXQoNSksd2V0KDYpO3ZhciBSZXQ9ZmV0KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksQWV0PWZldCgoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7QWV0LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/ZmV0KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgVGV0PUFldCxOZXQ9ZmV0KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvQ2V0fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpO2Z1bmN0aW9uIHpldCh0KXtyZXR1cm4gZmV0KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9NZXR9KSl9dmFyIElldD16ZXQoMCksSGV0PXpldCgxKTt6ZXQoMiksemV0KDMpO3ZhciBGZXQ9emV0KDQpO3pldCg1KSx6ZXQoNik7dmFyIExldD1mZXQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO0xldC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP2ZldCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIEJldD1MZXQ7ZnVuY3Rpb24gVmV0KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBqZXQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gVWV0KHQsZSxuKXtyZXR1cm57eTp0LG06ZSxkOm4sSDowLE06MCxTOjAsTDowfX12YXIgR2V0LFdldCxZZXQ9eyItIjoiIixfOiIgIiwwOiIwIn0scWV0PS9eXHMqXGQrLyxaZXQ9L14lLyxYZXQ9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIEtldCh0LGUsbil7dmFyIG89dDwwPyItIjoiIixpPShvPy10OnQpKyIiLGE9aS5sZW5ndGg7cmV0dXJuIG8rKGE8bj9uZXcgQXJyYXkobi1hKzEpLmpvaW4oZSkraTppKX1mdW5jdGlvbiBKZXQodCl7cmV0dXJuIHQucmVwbGFjZShYZXQsIlxcJCYiKX1mdW5jdGlvbiBRZXQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKEpldCkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uICRldCh0KXtmb3IodmFyIGU9e30sbj0tMSxvPXQubGVuZ3RoOysrbjxvOyllW3Rbbl0udG9Mb3dlckNhc2UoKV09bjtyZXR1cm4gZX1mdW5jdGlvbiB0bnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gbz8odC53PStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVudCh0LGUsbil7dmFyIG89cWV0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBvPyh0LnU9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbm50KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuVT0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvbnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5WPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGludCh0LGUsbil7dmFyIG89cWV0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0Llc9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gYW50KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4sbis0KSk7cmV0dXJuIG8/KHQueT0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBybnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC55PStvWzBdKygrb1swXT42OD8xOTAwOjJlMyksbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gc250KHQsZSxuKXt2YXIgbz0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIG8/KHQuWj1vWzFdPzA6LShvWzJdKyhvWzNdfHwiMDAiKSksbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbG50KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIG8/KHQucT0zKm9bMF0tMyxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjbnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5tPW9bMF0tMSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBkbnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5kPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHBudCh0LGUsbil7dmFyIG89cWV0LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBvPyh0Lm09MCx0LmQ9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbW50KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIG8/KHQuSD0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1bnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gbz8odC5NPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGZudCh0LGUsbil7dmFyIG89cWV0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBvPyh0LlM9K29bMF0sbitvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZ250KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIG8/KHQuTD0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBobnQodCxlLG4pe3ZhciBvPXFldC5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gbz8odC5MPU1hdGguZmxvb3Iob1swXS8xZTMpLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGJudCh0LGUsbil7dmFyIG89WmV0LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBvP24rb1swXS5sZW5ndGg6LTF9ZnVuY3Rpb24geW50KHQsZSxuKXt2YXIgbz1xZXQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5RPStvWzBdLG4rb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF9udCh0LGUsbil7dmFyIG89cWV0LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIG8/KHQucz0rb1swXSxuK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDbnQodCxlKXtyZXR1cm4gS2V0KHQuZ2V0RGF0ZSgpLGUsMil9ZnVuY3Rpb24gTW50KHQsZSl7cmV0dXJuIEtldCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiB2bnQodCxlKXtyZXR1cm4gS2V0KHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiB4bnQodCxlKXtyZXR1cm4gS2V0KDErUGV0LmNvdW50KFRldCh0KSx0KSxlLDMpfWZ1bmN0aW9uIE9udCh0LGUpe3JldHVybiBLZXQodC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIFBudCh0LGUpe3JldHVybiBPbnQodCxlKSsiMDAwIn1mdW5jdGlvbiB3bnQodCxlKXtyZXR1cm4gS2V0KHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24ga250KHQsZSl7cmV0dXJuIEtldCh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIFNudCh0LGUpe3JldHVybiBLZXQodC5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBEbnQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIEVudCh0LGUpe3JldHVybiBLZXQoa2V0LmNvdW50KFRldCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gUm50KHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIGU+PTR8fDA9PT1lP0VldCh0KTpFZXQuY2VpbCh0KX1mdW5jdGlvbiBBbnQodCxlKXtyZXR1cm4gdD1SbnQodCksS2V0KEVldC5jb3VudChUZXQodCksdCkrKDQ9PT1UZXQodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24gVG50KHQpe3JldHVybiB0LmdldERheSgpfWZ1bmN0aW9uIE5udCh0LGUpe3JldHVybiBLZXQoRGV0LmNvdW50KFRldCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gem50KHQsZSl7cmV0dXJuIEtldCh0LmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gSW50KHQsZSl7cmV0dXJuIEtldCgodD1SbnQodCkpLmdldEZ1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gSG50KHQsZSl7cmV0dXJuIEtldCh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gRm50KHQsZSl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gS2V0KCh0PW4+PTR8fDA9PT1uP0VldCh0KTpFZXQuY2VpbCh0KSkuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBMbnQodCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKStLZXQoZS82MHwwLCIwIiwyKStLZXQoZSU2MCwiMCIsMil9ZnVuY3Rpb24gQm50KHQsZSl7cmV0dXJuIEtldCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIFZudCh0LGUpe3JldHVybiBLZXQodC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gam50KHQsZSl7cmV0dXJuIEtldCh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gVW50KHQsZSl7cmV0dXJuIEtldCgxK05ldC5jb3VudChCZXQodCksdCksZSwzKX1mdW5jdGlvbiBHbnQodCxlKXtyZXR1cm4gS2V0KHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBXbnQodCxlKXtyZXR1cm4gR250KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gWW50KHQsZSl7cmV0dXJuIEtldCh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIHFudCh0LGUpe3JldHVybiBLZXQodC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBabnQodCxlKXtyZXR1cm4gS2V0KHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gWG50KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBLbnQodCxlKXtyZXR1cm4gS2V0KElldC5jb3VudChCZXQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIEpudCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHwwPT09ZT9GZXQodCk6RmV0LmNlaWwodCl9ZnVuY3Rpb24gUW50KHQsZSl7cmV0dXJuIHQ9Sm50KHQpLEtldChGZXQuY291bnQoQmV0KHQpLHQpKyg0PT09QmV0KHQpLmdldFVUQ0RheSgpKSxlLDIpfWZ1bmN0aW9uICRudCh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiB0b3QodCxlKXtyZXR1cm4gS2V0KEhldC5jb3VudChCZXQodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGVvdCh0LGUpe3JldHVybiBLZXQodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIG5vdCh0LGUpe3JldHVybiBLZXQoKHQ9Sm50KHQpKS5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIG9vdCh0LGUpe3JldHVybiBLZXQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIGlvdCh0LGUpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIEtldCgodD1uPj00fHwwPT09bj9GZXQodCk6RmV0LmNlaWwodCkpLmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gYW90KCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiByb3QoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gc290KHQpe3JldHVybit0fWZ1bmN0aW9uIGxvdCh0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfSEoZnVuY3Rpb24gY290KHQpe0dldD0oZnVuY3Rpb24gZSh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLG89dC50aW1lLGk9dC5wZXJpb2RzLGE9dC5kYXlzLHI9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1RZXQoaSksZD0kZXQoaSkscD1RZXQoYSksbT0kZXQoYSksdT1RZXQociksZj0kZXQociksZz1RZXQocyksaD0kZXQocyksYj1RZXQobCkseT0kZXQobCksXz17YTpmdW5jdGlvbiBDKHQpe3JldHVybiByW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIE0odCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdih0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIHgodCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6Q250LGU6Q250LGY6UG50LGc6SW50LEc6Rm50LEg6TW50LEk6dm50LGo6eG50LEw6T250LG06d250LE06a250LHA6ZnVuY3Rpb24gTyh0KXtyZXR1cm4gaVsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBQKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpzb3Qsczpsb3QsUzpTbnQsdTpEbnQsVTpFbnQsVjpBbnQsdzpUbnQsVzpObnQseDpudWxsLFg6bnVsbCx5OnpudCxZOkhudCxaOkxudCwiJSI6cm90fSx3PXthOmZ1bmN0aW9uIGsodCl7cmV0dXJuIHJbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBEKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gRSh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpCbnQsZTpCbnQsZjpXbnQsZzpub3QsRzppb3QsSDpWbnQsSTpqbnQsajpVbnQsTDpHbnQsbTpZbnQsTTpxbnQscDpmdW5jdGlvbiBSKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEEodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROnNvdCxzOmxvdCxTOlpudCx1OlhudCxVOktudCxWOlFudCx3OiRudCxXOnRvdCx4Om51bGwsWDpudWxsLHk6ZW90LFk6b290LFo6YW90LCIlIjpyb3R9LFQ9e2E6ZnVuY3Rpb24gTih0LGUsbil7dmFyIG89dS5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lnc9ZltvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBvPXAuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC53PW1bb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBJKHQsZSxuKXt2YXIgbz1iLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIG8/KHQubT15W29bMF0udG9Mb3dlckNhc2UoKV0sbitvWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIG89Zy5leGVjKGUuc2xpY2UobikpO3JldHVybiBvPyh0Lm09aFtvWzBdLnRvTG93ZXJDYXNlKCldLG4rb1swXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEYodCxuLG8pe3JldHVybiBHKHQsZSxuLG8pfSxkOmRudCxlOmRudCxmOmhudCxnOnJudCxHOmFudCxIOm1udCxJOm1udCxqOnBudCxMOmdudCxtOmNudCxNOnVudCxwOmZ1bmN0aW9uIEwodCxlLG4pe3ZhciBvPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gbz8odC5wPWRbb1swXS50b0xvd2VyQ2FzZSgpXSxuK29bMF0ubGVuZ3RoKTotMX0scTpsbnQsUTp5bnQsczpfbnQsUzpmbnQsdTplbnQsVTpubnQsVjpvbnQsdzp0bnQsVzppbnQseDpmdW5jdGlvbiBCKHQsZSxvKXtyZXR1cm4gRyh0LG4sZSxvKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LG8sZSxuKX0seTpybnQsWTphbnQsWjpzbnQsIiUiOmJudH07ZnVuY3Rpb24gaih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgbyxpLGEscj1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihyLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0oaT1ZZXRbbz10LmNoYXJBdCgrK3MpXSk/bz10LmNoYXJBdCgrK3MpOmk9ImUiPT09bz8iICI6IjAiLChhPWVbb10pJiYobz1hKG4saSkpLHIucHVzaChvKSxsPXMrMSk7cmV0dXJuIHIucHVzaCh0LnNsaWNlKGwscykpLHIuam9pbigiIil9fWZ1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIG8saSxhPVVldCgxOTAwLHZvaWQgMCwxKTtpZihHKGEsdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gYSlyZXR1cm4gbmV3IERhdGUoYS5RKTtpZigicyJpbiBhKXJldHVybiBuZXcgRGF0ZSgxZTMqYS5zKygiTCJpbiBhP2EuTDowKSk7aWYoZSYmISgiWiJpbiBhKSYmKGEuWj0wKSwicCJpbiBhJiYoYS5IPWEuSCUxMisxMiphLnApLHZvaWQgMD09PWEubSYmKGEubT0icSJpbiBhP2EucTowKSwiViJpbiBhKXtpZihhLlY8MXx8YS5WPjUzKXJldHVybiBudWxsOyJ3ImluIGF8fChhLnc9MSksIloiaW4gYT8oaT0obz1qZXQoVWV0KGEueSwwLDEpKSkuZ2V0VVRDRGF5KCksbz1pPjR8fDA9PT1pP0hldC5jZWlsKG8pOkhldChvKSxvPU5ldC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldFVUQ0Z1bGxZZWFyKCksYS5tPW8uZ2V0VVRDTW9udGgoKSxhLmQ9by5nZXRVVENEYXRlKCkrKGEudys2KSU3KTooaT0obz1WZXQoVWV0KGEueSwwLDEpKSkuZ2V0RGF5KCksbz1pPjR8fDA9PT1pP0RldC5jZWlsKG8pOkRldChvKSxvPVBldC5vZmZzZXQobyw3KihhLlYtMSkpLGEueT1vLmdldEZ1bGxZZWFyKCksYS5tPW8uZ2V0TW9udGgoKSxhLmQ9by5nZXREYXRlKCkrKGEudys2KSU3KX1lbHNlKCJXImluIGF8fCJVImluIGEpJiYoInciaW4gYXx8KGEudz0idSJpbiBhP2EudSU3OiJXImluIGE/MTowKSxpPSJaImluIGE/amV0KFVldChhLnksMCwxKSkuZ2V0VVRDRGF5KCk6VmV0KFVldChhLnksMCwxKSkuZ2V0RGF5KCksYS5tPTAsYS5kPSJXImluIGE/KGEudys2KSU3KzcqYS5XLShpKzUpJTc6YS53KzcqYS5VLShpKzYpJTcpO3JldHVybiJaImluIGE/KGEuSCs9YS5aLzEwMHwwLGEuTSs9YS5aJTEwMCxqZXQoYSkpOlZldChhKX19ZnVuY3Rpb24gRyh0LGUsbixvKXtmb3IodmFyIGksYSxyPTAscz1lLmxlbmd0aCxsPW4ubGVuZ3RoO3I8czspe2lmKG8+PWwpcmV0dXJuLTE7aWYoMzc9PT0oaT1lLmNoYXJDb2RlQXQocisrKSkpe2lmKGk9ZS5jaGFyQXQocisrKSwhKGE9VFtpIGluIFlldD9lLmNoYXJBdChyKyspOmldKXx8KG89YSh0LG4sbykpPDApcmV0dXJuLTF9ZWxzZSBpZihpIT1uLmNoYXJDb2RlQXQobysrKSlyZXR1cm4tMX1yZXR1cm4gb31yZXR1cm4gXy54PWoobixfKSxfLlg9aihvLF8pLF8uYz1qKGUsXyksdy54PWoobix3KSx3Llg9aihvLHcpLHcuYz1qKGUsdykse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLF8pO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLHcpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0pKHQpLFdldD1HZXQuZm9ybWF0fSkoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTt2YXIgZG90PTMxNTM2ZTY7ZnVuY3Rpb24gcG90KHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiBtb3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gdW90KHQsZSxuLG8saSxhLHIscyxsKXt2YXIgYz0kdHQoWXR0LFl0dCksZD1jLmludmVydCxwPWMuZG9tYWluLG09bCgiLiVMIiksdT1sKCI6JVMiKSxmPWwoIiVJOiVNIiksZz1sKCIlSSAlcCIpLGg9bCgiJWEgJWQiKSxiPWwoIiViICVkIikseT1sKCIlQiIpLF89bCgiJVkiKSxDPVtbciwxLDFlM10sW3IsNSw1ZTNdLFtyLDE1LDE1ZTNdLFtyLDMwLDNlNF0sW2EsMSw2ZTRdLFthLDUsM2U1XSxbYSwxNSw5ZTVdLFthLDMwLDE4ZTVdLFtpLDEsMzZlNV0sW2ksMywxMDhlNV0sW2ksNiwyMTZlNV0sW2ksMTIsNDMyZTVdLFtvLDEsODY0ZTVdLFtvLDIsMTcyOGU1XSxbbiwxLDYwNDhlNV0sW2UsMSwyNTkyZTZdLFtlLDMsNzc3NmU2XSxbdCwxLGRvdF1dO2Z1bmN0aW9uIE0ocyl7cmV0dXJuKHIocyk8cz9tOmEocyk8cz91Omkocyk8cz9mOm8ocyk8cz9nOmUocyk8cz9uKHMpPHM/aDpiOnQocyk8cz95Ol8pKHMpfWZ1bmN0aW9uIHYoZSxuLG8saSl7aWYobnVsbD09ZSYmKGU9MTApLCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIGE9TWF0aC5hYnMoby1uKS9lLHI9ZDUoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KEMsYSk7cj09PUMubGVuZ3RoPyhpPXY1KG4vZG90LG8vZG90LGUpLGU9dCk6cj8oaT0ocj1DW2EvQ1tyLTFdWzJdPENbcl1bMl0vYT9yLTE6cl0pWzFdLGU9clswXSk6KGk9TWF0aC5tYXgodjUobixvLGUpLDEpLGU9cyl9cmV0dXJuIG51bGw9PWk/ZTplLmV2ZXJ5KGkpfXJldHVybiBjLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUoZCh0KSl9LGMuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3AoSHR0LmNhbGwodCxtb3QpKTpwKCkubWFwKHBvdCl9LGMudGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgbixvPXAoKSxpPW9bMF0sYT1vW28ubGVuZ3RoLTFdLHI9YTxpO3JldHVybiByJiYobj1pLGk9YSxhPW4pLG49KG49dih0LGksYSxlKSk/bi5yYW5nZShpLGErMSk6W10scj9uLnJldmVyc2UoKTpufSxjLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT9NOmwoZSl9LGMubmljZT1mdW5jdGlvbih0LGUpe3ZhciBuPXAoKTtyZXR1cm4odD12KHQsblswXSxuW24ubGVuZ3RoLTFdLGUpKT9wKG5ldChuLHQpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSnR0KGMsdW90KHQsZSxuLG8saSxhLHIscyxsKSl9LGN9ZnVuY3Rpb24gZm90KCl7cmV0dXJuIE50dC5hcHBseSh1b3QoVGV0LFJldCxrZXQsUGV0LE9ldCx4ZXQsdmV0LGhldCxXZXQpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKSxhcmd1bWVudHMpfWZ1bmN0aW9uIGdvdCh0KXtmb3IodmFyIGU9dC5sZW5ndGgvNnwwLG49bmV3IEFycmF5KGUpLG89MDtvPGU7KW5bb109IiMiK3Quc2xpY2UoNipvLDYqKytvKTtyZXR1cm4gbn1mdW5jdGlvbiBob3QodCl7cmV0dXJuIEg3KHRbdC5sZW5ndGgtMV0pfXZhciBib3Q9aG90KG5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChnb3QpKSx5b3Q9aG90KG5ldyBBcnJheSgzKS5jb25jYXQoImYwZjBmMGJkYmRiZDYzNjM2MyIsImY3ZjdmN2NjY2NjYzk2OTY5NjUyNTI1MiIsImY3ZjdmN2NjY2NjYzk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNTAwMDAwMCIpLm1hcChnb3QpKSxfb3Q9aG90KG5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChnb3QpKTtmdW5jdGlvbiBDb3QodCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4gdH19ZnVuY3Rpb24gTW90KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiB2b3QodCl7cmV0dXJuIG5ldyBNb3QodCl9ZnVuY3Rpb24geG90KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIE9vdCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBQb3QoKXt2YXIgdD14b3QsZT1Pb3Qsbj1Db3QoITApLG89bnVsbCxpPXZvdCxhPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgcyxsLGMsZD1yLmxlbmd0aCxwPSExO2ZvcihudWxsPT1vJiYoYT1pKGM9bXR0KCkpKSxzPTA7czw9ZDsrK3MpIShzPGQmJm4obD1yW3NdLHMscikpPT09cCYmKChwPSFwKT9hLmxpbmVTdGFydCgpOmEubGluZUVuZCgpKSxwJiZhLnBvaW50KCt0KGwscyxyKSwrZShsLHMscikpO2lmKGMpcmV0dXJuIGE9bnVsbCxjKyIifHxudWxsfXJldHVybiByLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpDb3QoK2UpLHIpOnR9LHIueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNvdCgrdCkscik6ZX0sci5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q290KCEhdCkscik6bn0sci5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG51bGwhPW8mJihhPWkobykpLHIpOml9LHIuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9vPWE9bnVsbDphPWkobz10KSxyKTpvfSxyfWZ1bmN0aW9uIHdvdCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQuX3gxK3QuX2sqKHQuX3gyLXQuX3gwKSx0Ll95MSt0Ll9rKih0Ll95Mi10Ll95MCksdC5feDIrdC5fayoodC5feDEtZSksdC5feTIrdC5fayoodC5feTEtbiksdC5feDIsdC5feTIpfWZ1bmN0aW9uIGtvdCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9ZnVuY3Rpb24gU290KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9TW90LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp0aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpfX19LGtvdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6d290KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDp3b3QodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19LFNvdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIG49dGhpcy5feDItdCxvPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhuKm4rbypvLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OiEoZnVuY3Rpb24gaSh0LGUsbil7dmFyIG89dC5feDEsaT10Ll95MSxhPXQuX3gyLHI9dC5feTI7aWYodC5fbDAxX2E+MWUtMTIpe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGw9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO289KG8qcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9sLGk9KGkqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9sfWlmKHQuX2wyM19hPjFlLTEyKXt2YXIgYz0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxkPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTthPShhKmMrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS9kLHI9KHIqYyt0Ll95MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL2R9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG8saSxhLHIsdC5feDIsdC5feTIpfSkodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgRG90PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IFNvdCh0LGUpOm5ldyBrb3QodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7Y29uc3QgRW90PTFlNCxSb3Q9LjAwMSxBb3Q9RXR0KCIuMn5lIiksVG90PUV0dCgiLjR+ciIpLE5vdD1FdHQoIix+Iik7ZnVuY3Rpb24gem90KHQpe2lmKDA9PT10KXJldHVybiIwIjtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1Fb3R8fGU8Um90P0FvdCh0KTpUb3QodCl9Y29uc3QgSW90PXtmb3JtYXRUaWNrOnpvdCxmb3JtYXRTaG9ydDp6b3QsZm9ybWF0UmVhZGFibGUodCl7Y29uc3QgZT1NYXRoLmFicyh0KTtyZXR1cm4gZT49RW90fHxlPFJvdD9Bb3QodCk6Tm90KHQpfSxmb3JtYXRMb25nOk5vdH0sSG90PW5ldyBJbnRsLk51bWJlckZvcm1hdCh2b2lkIDAse21heGltdW1GcmFjdGlvbkRpZ2l0czozfSk7ZnVuY3Rpb24gRm90KHQpe3JldHVybiBIb3QuZm9ybWF0KHQpfWNvbnN0IExvdD17Zm9ybWF0VGljazpGb3QsZm9ybWF0U2hvcnQ6Rm90LGZvcm1hdFJlYWRhYmxlOkZvdCxmb3JtYXRMb25nOkZvdH0sQm90PUV0dCgiMC4zfnMiKSxWb3Q9RXR0KCIsLjN+ZiIpO2Z1bmN0aW9uIGpvdCh0KXtjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj1Fb3R8fGU8Um90P0JvdCh0KTpWb3QodCl9Y29uc3QgVW90PXtmb3JtYXRUaWNrOmpvdCxmb3JtYXRTaG9ydDpqb3QsZm9ybWF0UmVhZGFibGU6am90LGZvcm1hdExvbmc6am90fSxHb3Q9MzZlNSxXb3Q9ODY0ZTUsWW90PTMxNTM2ZTYscW90PUV0dCgiLjR+Iik7ZnVuY3Rpb24gWm90KHQpe2lmKDA9PT10KXJldHVybiIwIjtsZXQgZT1NYXRoLnNpZ24odCk+MD8iIjoiLSI7Y29uc3Qgbj1NYXRoLmFicyh0KTtyZXR1cm4gZSs9bjwxZTM/YCR7cW90KG4pfSBtc2A6bjw2ZTQ/YCR7cW90KG4vMWUzKX0gc2VjYDpuPEdvdD9gJHtxb3Qobi82ZTQpfSBtaW5gOm48V290P2Ake3FvdChuL0dvdCl9IGhyYDpuPFlvdD9gJHtxb3Qobi9Xb3QpfSBkYXlgOmAke3FvdChuL1lvdCl9IHlyYCxlfWNvbnN0IFhvdD17Zm9ybWF0VGljazpab3QsZm9ybWF0U2hvcnQ6Wm90LGZvcm1hdFJlYWRhYmxlOlpvdCxmb3JtYXRMb25nOlpvdH0sS290PWZvdCgpLnRpY2tGb3JtYXQoKTtsZXQgSm90O2NvbnN0IFFvdD17Zm9ybWF0VGljazp0PT5Lb3QobmV3IERhdGUodCkpLGZvcm1hdFNob3J0OnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKEpvdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKEpvdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pLGZvcm1hdExvbmc6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcoSm90LHt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCIsZnJhY3Rpb25hbFNlY29uZERpZ2l0czozfSl9O2Z1bmN0aW9uICRvdCh0KXtzd2l0Y2godCl7Y2FzZSBKMi5MSU5FQVI6cmV0dXJuIG5ldyB0aXQ7Y2FzZSBKMi5MT0cxMDpyZXR1cm4gbmV3IGVpdDtjYXNlIEoyLlRJTUU6cmV0dXJuIG5ldyBuaXQ7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19Y2xhc3MgdGl0e2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPUlvdH10cmFuc2Zvcm0odCxlLG4pe2NvbnN0W28saV09dCxhPWktbyxbcixzXT1lO3JldHVybiAwPT09YT9yOihzLXIpL2EqKG4tbykrcn1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0odCxlLG4pfXJldmVyc2UodCxlLG4pe3JldHVybiB0aGlzLnRyYW5zZm9ybShlLHQsbil9bmljZURvbWFpbih0KXtsZXRbZSxuXT10O2lmKG48ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtpZihuPT09ZSlyZXR1cm4gMD09PWU/Wy0xLDFdOmU8MD9bMiplLDBdOlswLDIqZV07Y29uc3Qgbz1lZXQoKSxpPS4wNSoobi1lK051bWJlci5FUFNJTE9OKSxbYSxyXT1vLmRvbWFpbihbZS1pLG4raV0pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bYSxyXX10aWNrcyh0LGUpe3JldHVybiBlZXQoKS5kb21haW4odCkudGlja3MoZSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNsYXNzIGVpdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1Jb3R9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxuKXtpZihuPD0wKXJldHVybiBlWzBdO2NvbnN0W28saV09dCxbYSxyXT1lLHM9dGhpcy50cmFuc2Zvcm0obyksbD10aGlzLnRyYW5zZm9ybShpKS1zLGM9ci1hO3JldHVybiBuPXRoaXMudHJhbnNmb3JtKG4pLGMvKGwrTnVtYmVyLkVQU0lMT04pKihuLXMpK2F9cmV2ZXJzZSh0LGUsbil7Y29uc3RbbyxpXT10LFthLHJdPWUscz10aGlzLnRyYW5zZm9ybShvKSxsPXRoaXMudHJhbnNmb3JtKGkpO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKChsLXMpLyhyLWErTnVtYmVyLkVQU0lMT04pKihuLWEpK3MpfW5pY2VEb21haW4odCl7Y29uc3RbZSxuXT10O2lmKGU+bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtjb25zdCBvPU1hdGgubWF4KGUsTnVtYmVyLk1JTl9WQUxVRSksaT1NYXRoLm1heChuLE51bWJlci5NSU5fVkFMVUUpO3JldHVybiBuPD0wP1tOdW1iZXIuTUlOX1ZBTFVFLDFdOltNYXRoLm1heChOdW1iZXIuTUlOX1ZBTFVFLC41Km8pLDIqaV19dGlja3ModCxlKXtjb25zdCBuPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLG89dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0saT1wZXQoKS5kb21haW4oW24sb10pLnRpY2tzKGUpO3JldHVybiBpLmxlbmd0aD9pOnR9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJnQ+MH19Y2xhc3Mgbml0e2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT1mb3QoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9UW90fWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShuKX1yZXZlcnNlKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG4pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2NvbnN0W2Usbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKCh0PT50LmdldFRpbWUoKSkpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX1jb25zdCBvaXQ9Qm9vbGVhbihzZWxmLmhhc093blByb3BlcnR5KCJkb2N1bWVudCIpJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCJ3ZWJnbDIiKSk7ZnVuY3Rpb24gaWl0KCl7cmV0dXJuIHNlbGYuaGFzT3duUHJvcGVydHkoIk9mZnNjcmVlbkNhbnZhcyIpfWZ1bmN0aW9uIGFpdCh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYodFtuXSE9PWVbbl0pcmV0dXJuITE7cmV0dXJuITB9Y2xhc3Mgcml0e2NvbnN0cnVjdG9yKCl7dGhpcy54U2NhbGU9JG90KEoyLkxJTkVBUiksdGhpcy55U2NhbGU9JG90KEoyLkxJTkVBUiksdGhpcy5kb21Db250YWluZXJSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMubGFzdFVwZGF0ZWQ9MCx0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD17eDowLHdpZHRoOjEseTowLGhlaWdodDoxfX1nZXRVcGRhdGVJZGVudGlmaWVyKCl7cmV0dXJuIHRoaXMubGFzdFVwZGF0ZWR9dXBkYXRlSWRlbnRpZmllcigpe3RoaXMubGFzdFVwZGF0ZWQrK31pc1lBeGlzUG9pbnRlZERvd24oKXtyZXR1cm4hMH1zZXRYU2NhbGUodCl7dGhpcy54U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXRZU2NhbGUodCl7dGhpcy55U2NhbGU9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1nZXRDdXJyZW50Vmlld0JveFJlY3QoKXtyZXR1cm4gdGhpcy5jdXJyZW50Vmlld0JveFJlY3R9c2V0Vmlld0JveFJlY3QodCl7dGhpcy5jdXJyZW50Vmlld0JveFJlY3Q9dCx0aGlzLnVwZGF0ZUlkZW50aWZpZXIoKX1zZXREb21Db250YWluZXJSZWN0KHQpe3RoaXMuZG9tQ29udGFpbmVyUmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxlKXtjb25zdCBuPXQsbz0oZnVuY3Rpb24gaSh0KXtyZXR1cm57eDpbdC54LHQueCt0LndpZHRoXSx5Olt0LnksdC55K3QuaGVpZ2h0XX19KSh0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdCk7cmV0dXJuW3RoaXMueFNjYWxlLmZvcndhcmQoby54LFtuLngsbi54K24ud2lkdGhdLGVbMF0pLHRoaXMueVNjYWxlLmZvcndhcmQoby55LHRoaXMuaXNZQXhpc1BvaW50ZWREb3duKCk/W24ueStuLmhlaWdodCxuLnldOltuLnksbi55K24uaGVpZ2h0XSxlWzFdKV19fWZ1bmN0aW9uIHNpdCh0LGUsbixvKXtjb25zdHtjb2xvcjppLHZpc2libGU6YSxvcGFjaXR5OnJ9PW87bGV0IHM9dDtpZihzKXtpZighYSlyZXR1cm4gcy5zdHlsZS5kaXNwbGF5PSJub25lIixzfWVsc2V7aWYoIWEpcmV0dXJuIG51bGw7cz1lKCl9cmV0dXJuIHM9bihzKSxzLnN0eWxlLmRpc3BsYXk9IiIscy5zdHlsZS5zdHJva2U9aSxzLnN0eWxlLm9wYWNpdHk9U3RyaW5nKG51bGwhPXI/cjoxKSxzfWNsYXNzIGxpdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN2Zz10fWZsdXNoKCl7fW9uUmVzaXplKHQpe31kZXN0cm95T2JqZWN0KHQpe3RoaXMuc3ZnLnJlbW92ZUNoaWxkKHQuZG9tKX1zZXRVc2VEYXJrTW9kZSh0KXt9Y3JlYXRlUGF0aERTdHJpbmcodCl7aWYoIXQubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9bmV3IEFycmF5KHQubGVuZ3RoLzIpO2VbMF09YE0ke3RbMF19LCR7dFsxXX1gO2ZvcihsZXQgbj0xO248dC5sZW5ndGgvMjtuKyspZVtuXT1gTCR7dFsyKm5dfSwke3RbMipuKzFdfWA7cmV0dXJuIGUuam9pbigiIil9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXtjb25zdCBvPXNpdChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5zdHlsZS5maWxsPSJub25lIjtjb25zdCBuPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixuKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKG49PntpZighKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fCFhaXQoZSxudWxsPT10P3ZvaWQgMDp0LmRhdGEpKXtjb25zdCB0PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoZSk7bi5zZXRBdHRyaWJ1dGUoImQiLHQpfXJldHVybiBufSksbik7cmV0dXJuIG51bGw9PT1vP251bGw6KG8uc3R5bGUuc3Ryb2tlV2lkdGg9U3RyaW5nKG4ud2lkdGgpLHtkb206byxkYXRhOmV9KX1jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHQsZSxuKXtjb25zdHtzaXplOm8sY29sb3I6aX09bixhPW8qTWF0aC5zcXJ0KDMpLzIscj1uZXcgRmxvYXQzMkFycmF5KFtlLngtby8yLGUueSthLzMsZS54K28vMixlLnkrYS8zLGUueCxlLnktMiphLzNdKSxzPXNpdChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmlhbmdsZSIpLHQuc3R5bGUuZmlsbD0ibm9uZSI7Y29uc3QgZT10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKHIpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsZSsiWiIpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKHQpLHR9KSwodD0+e2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhyKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0fSksbik7cmV0dXJuIG51bGw9PT1zP251bGw6KHMuc3R5bGUuZmlsbD1pLHtkb206cyxkYXRhOnJ9KX1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7Y29sb3I6byxyYWRpdXM6aX09bixhPXNpdChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtyZXR1cm4gdC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLCh0PT4odC5zdHlsZS5maWxsPW8sdC5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksdC5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksdC5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhpKSksdCkpLG4pO3JldHVybiBudWxsPT09YT9udWxsOntkb206YSxkYXRhOmV9fWNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHQsZSxuLG8pe2lmKGUueSE9PW4ueSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5wdXQgZXJyb3I6IHN0YXJ0LnkgIT0gZW5kLnkuIik7Y29uc3R7YWx0aXR1ZGU6aSxjb2xvcjphfT1vLHI9Mi9NYXRoLnNxcnQoMykqaSxzPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1yLzIsZS55K2kvMixlLngsZS55LWkvMixuLngsbi55LWkvMixuLngrci8yLG4ueStpLzJdKSxsPXNpdChudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSx0LnN0eWxlLmZpbGw9Im5vbmUiO2NvbnN0IGU9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhzKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLGUrIloiKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKHQ9Pntjb25zdCBlPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixlKyJaIiksdH0pLG8pO3JldHVybiBudWxsPT09bD9udWxsOihsLnN0eWxlLmZpbGw9YSx7ZG9tOmwsZGF0YTpzfSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgMjAxMC0yMDIxIFRocmVlLmpzIEF1dGhvcnMKICAgICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICAgICAqL2NvbnN0IGNpdD0xMDAsZGl0PTMwMSxwaXQ9MzAyLG1pdD0zMDYsdWl0PTFlMyxmaXQ9MTAwMSxnaXQ9MTAwMixoaXQ9MTAwMyxiaXQ9MTAwNix5aXQ9MTAwOCxfaXQ9MTAwOSxDaXQ9MTAxMixNaXQ9MTAxNCx2aXQ9MTAxNSx4aXQ9MTAxNixPaXQ9MTAyMCxQaXQ9MTAyMix3aXQ9MTAyMyxraXQ9MTAyNixTaXQ9MTAyNyxEaXQ9MjMwMCxFaXQ9MjMwMSxSaXQ9MjMwMixBaXQ9MjQwMCxUaXQ9MjQwMSxOaXQ9MjQwMix6aXQ9M2UzLElpdD0zMDAxLEhpdD0zMDA3LEZpdD0zMDAyLExpdD03NjgwLEJpdD0zNTA0NCxWaXQ9MzUwNDgsaml0PSIzMDAgZXMiO2NsYXNzIFVpdHthZGRFdmVudExpc3RlbmVyKHQsZSl7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtjb25zdCBuPXRoaXMuX2xpc3RlbmVyczt2b2lkIDA9PT1uW3RdJiYoblt0XT1bXSksLTE9PT1uW3RdLmluZGV4T2YoZSkmJm5bdF0ucHVzaChlKX1oYXNFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1uW3RdJiYtMSE9PW5bdF0uaW5kZXhPZihlKX1yZW1vdmVFdmVudExpc3RlbmVyKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVyc1t0XTtpZih2b2lkIDAhPT1uKXtjb25zdCB0PW4uaW5kZXhPZihlKTstMSE9PXQmJm4uc3BsaWNlKHQsMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBlPXRoaXMuX2xpc3RlbmVyc1t0LnR5cGVdO2lmKHZvaWQgMCE9PWUpe3QudGFyZ2V0PXRoaXM7Y29uc3Qgbj1lLnNsaWNlKDApO2ZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKyluW2VdLmNhbGwodGhpcyx0KTt0LnRhcmdldD1udWxsfX19Y29uc3QgR2l0PVtdO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKylHaXRbdF09KHQ8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KTtjb25zdCBXaXQ9TWF0aC5QSS8xODAsWWl0PTE4MC9NYXRoLlBJO2Z1bmN0aW9uIHFpdCgpe2NvbnN0IHQ9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsZT00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxuPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLG89NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDA7cmV0dXJuKEdpdFsyNTUmdF0rR2l0W3Q+PjgmMjU1XStHaXRbdD4+MTYmMjU1XStHaXRbdD4+MjQmMjU1XSsiLSIrR2l0WzI1NSZlXStHaXRbZT4+OCYyNTVdKyItIitHaXRbZT4+MTYmMTV8NjRdK0dpdFtlPj4yNCYyNTVdKyItIitHaXRbNjMmbnwxMjhdK0dpdFtuPj44JjI1NV0rIi0iK0dpdFtuPj4xNiYyNTVdK0dpdFtuPj4yNCYyNTVdK0dpdFsyNTUmb10rR2l0W28+PjgmMjU1XStHaXRbbz4+MTYmMjU1XStHaXRbbz4+MjQmMjU1XSkudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBaaXQodCxlLG4pe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKG4sdCkpfWZ1bmN0aW9uIFhpdCh0LGUsbil7cmV0dXJuKDEtbikqdCtuKmV9ZnVuY3Rpb24gS2l0KHQpe3JldHVybiAwPT0odCZ0LTEpJiYwIT09dH1mdW5jdGlvbiBKaXQodCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfWNsYXNzIFFpdHtjb25zdHJ1Y3Rvcih0PTAsZT0wKXt0aGlzLng9dCx0aGlzLnk9ZX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy54fXNldCB3aWR0aCh0KXt0aGlzLng9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMueX1zZXQgaGVpZ2h0KHQpe3RoaXMueT10fXNldCh0LGUpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9ZSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnkpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXN9ZGl2aWRlKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKmUrb1szXSpuK29bNl0sdGhpcy55PW9bMV0qZStvWzRdKm4rb1s3XSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55fWNyb3NzKHQpe3JldHVybiB0aGlzLngqdC55LXRoaXMueSp0Lnh9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1hbmdsZSgpe3JldHVybiBNYXRoLmF0YW4yKC10aGlzLnksLXRoaXMueCkrTWF0aC5QSX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7Y29uc3QgZT10aGlzLngtdC54LG49dGhpcy55LXQueTtyZXR1cm4gZSplK24qbn1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnl9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzfXJvdGF0ZUFyb3VuZCh0LGUpe2NvbnN0IG49TWF0aC5jb3MoZSksbz1NYXRoLnNpbihlKSxpPXRoaXMueC10LngsYT10aGlzLnktdC55O3JldHVybiB0aGlzLng9aSpuLWEqbyt0LngsdGhpcy55PWkqbythKm4rdC55LHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXN9fVFpdC5wcm90b3R5cGUuaXNWZWN0b3IyPSEwO2NsYXNzICRpdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZWxlbWVudHM9WzEsMCwwLDAsMSwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsZSxuLG8saSxhLHIscyxsKXtjb25zdCBjPXRoaXMuZWxlbWVudHM7cmV0dXJuIGNbMF09dCxjWzFdPW8sY1syXT1yLGNbM109ZSxjWzRdPWksY1s1XT1zLGNbNl09bixjWzddPWEsY1s4XT1sLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwxLDAsMCwwLDEpLHRoaXN9Y29weSh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiBlWzBdPW5bMF0sZVsxXT1uWzFdLGVbMl09blsyXSxlWzNdPW5bM10sZVs0XT1uWzRdLGVbNV09bls1XSxlWzZdPW5bNl0sZVs3XT1uWzddLGVbOF09bls4XSx0aGlzfWV4dHJhY3RCYXNpcyh0LGUsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywwKSxlLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDIpLHRoaXN9c2V0RnJvbU1hdHJpeDQodCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChlWzBdLGVbNF0sZVs4XSxlWzFdLGVbNV0sZVs5XSxlWzJdLGVbNl0sZVsxMF0pLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModCx0aGlzKX1tdWx0aXBseU1hdHJpY2VzKHQsZSl7Y29uc3Qgbj10LmVsZW1lbnRzLG89ZS5lbGVtZW50cyxpPXRoaXMuZWxlbWVudHMsYT1uWzBdLHI9blszXSxzPW5bNl0sbD1uWzFdLGM9bls0XSxkPW5bN10scD1uWzJdLG09bls1XSx1PW5bOF0sZj1vWzBdLGc9b1szXSxoPW9bNl0sYj1vWzFdLHk9b1s0XSxfPW9bN10sQz1vWzJdLE09b1s1XSx2PW9bOF07cmV0dXJuIGlbMF09YSpmK3IqYitzKkMsaVszXT1hKmcrcip5K3MqTSxpWzZdPWEqaCtyKl8rcyp2LGlbMV09bCpmK2MqYitkKkMsaVs0XT1sKmcrYyp5K2QqTSxpWzddPWwqaCtjKl8rZCp2LGlbMl09cCpmK20qYit1KkMsaVs1XT1wKmcrbSp5K3UqTSxpWzhdPXAqaCttKl8rdSp2LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbM10qPXQsZVs2XSo9dCxlWzFdKj10LGVbNF0qPXQsZVs3XSo9dCxlWzJdKj10LGVbNV0qPXQsZVs4XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0sbz10WzJdLGk9dFszXSxhPXRbNF0scj10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdO3JldHVybiBlKmEqYy1lKnIqbC1uKmkqYytuKnIqcytvKmkqbC1vKmEqc31pbnZlcnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLG49dFsxXSxvPXRbMl0saT10WzNdLGE9dFs0XSxyPXRbNV0scz10WzZdLGw9dFs3XSxjPXRbOF0sZD1jKmEtcipsLHA9cipzLWMqaSxtPWwqaS1hKnMsdT1lKmQrbipwK28qbTtpZigwPT09dSlyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDApO2NvbnN0IGY9MS91O3JldHVybiB0WzBdPWQqZix0WzFdPShvKmwtYypuKSpmLHRbMl09KHIqbi1vKmEpKmYsdFszXT1wKmYsdFs0XT0oYyplLW8qcykqZix0WzVdPShvKmktciplKSpmLHRbNl09bSpmLHRbN109KG4qcy1sKmUpKmYsdFs4XT0oYSplLW4qaSkqZix0aGlzfXRyYW5zcG9zZSgpe2xldCB0O2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gdD1lWzFdLGVbMV09ZVszXSxlWzNdPXQsdD1lWzJdLGVbMl09ZVs2XSxlWzZdPXQsdD1lWzVdLGVbNV09ZVs3XSxlWzddPXQsdGhpc31nZXROb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeDQodCkuaW52ZXJ0KCkudHJhbnNwb3NlKCl9dHJhbnNwb3NlSW50b0FycmF5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVszXSx0WzJdPWVbNl0sdFszXT1lWzFdLHRbNF09ZVs0XSx0WzVdPWVbN10sdFs2XT1lWzJdLHRbN109ZVs1XSx0WzhdPWVbOF0sdGhpc31zZXRVdlRyYW5zZm9ybSh0LGUsbixvLGksYSxyKXtjb25zdCBzPU1hdGguY29zKGkpLGw9TWF0aC5zaW4oaSk7cmV0dXJuIHRoaXMuc2V0KG4qcyxuKmwsLW4qKHMqYStsKnIpK2ErdCwtbypsLG8qcywtbyooLWwqYStzKnIpK3IrZSwwLDAsMSksdGhpc31zY2FsZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSo9dCxuWzNdKj10LG5bNl0qPXQsblsxXSo9ZSxuWzRdKj1lLG5bN10qPWUsdGhpc31yb3RhdGUodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpLG89dGhpcy5lbGVtZW50cyxpPW9bMF0sYT1vWzNdLHI9b1s2XSxzPW9bMV0sbD1vWzRdLGM9b1s3XTtyZXR1cm4gb1swXT1lKmkrbipzLG9bM109ZSphK24qbCxvWzZdPWUqcituKmMsb1sxXT0tbippK2UqcyxvWzRdPS1uKmErZSpsLG9bN109LW4qcitlKmMsdGhpc310cmFuc2xhdGUodCxlKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0rPXQqblsyXSxuWzNdKz10Km5bNV0sbls2XSs9dCpuWzhdLG5bMV0rPWUqblsyXSxuWzRdKz1lKm5bNV0sbls3XSs9ZSpuWzhdLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDw5O3QrKylpZihlW3RdIT09blt0XSlyZXR1cm4hMTtyZXR1cm4hMH1mcm9tQXJyYXkodCxlPTApe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfX1sZXQgdGF0OyRpdC5wcm90b3R5cGUuaXNNYXRyaXgzPSEwO2NsYXNzIGVhdHtzdGF0aWMgZ2V0RGF0YVVSTCh0KXtpZigvXmRhdGE6L2kudGVzdCh0LnNyYykpcmV0dXJuIHQuc3JjO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQpcmV0dXJuIHQuc3JjO2xldCBlO2lmKHQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCllPXQ7ZWxzZXt2b2lkIDA9PT10YXQmJih0YXQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIikpLHRhdC53aWR0aD10LndpZHRoLHRhdC5oZWlnaHQ9dC5oZWlnaHQ7Y29uc3Qgbj10YXQuZ2V0Q29udGV4dCgiMmQiKTt0IGluc3RhbmNlb2YgSW1hZ2VEYXRhP24ucHV0SW1hZ2VEYXRhKHQsMCwwKTpuLmRyYXdJbWFnZSh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KSxlPXRhdH1yZXR1cm4gZS53aWR0aD4yMDQ4fHxlLmhlaWdodD4yMDQ4Pyhjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMuZ2V0RGF0YVVSTDogSW1hZ2UgY29udmVydGVkIHRvIGpwZyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyIsdCksZS50b0RhdGFVUkwoImltYWdlL2pwZWciLC42KSk6ZS50b0RhdGFVUkwoImltYWdlL3BuZyIpfX1sZXQgbmF0PTA7Y2xhc3Mgb2F0IGV4dGVuZHMgVWl0e2NvbnN0cnVjdG9yKHQ9b2F0LkRFRkFVTFRfSU1BR0UsZT1vYXQuREVGQVVMVF9NQVBQSU5HLG49MTAwMSxvPTEwMDEsaT0xMDA2LGE9MTAwOCxyPTEwMjMscz0xMDA5LGw9MSxjPTNlMyl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpuYXQrK30pLHRoaXMudXVpZD1xaXQoKSx0aGlzLm5hbWU9IiIsdGhpcy5pbWFnZT10LHRoaXMubWlwbWFwcz1bXSx0aGlzLm1hcHBpbmc9ZSx0aGlzLndyYXBTPW4sdGhpcy53cmFwVD1vLHRoaXMubWFnRmlsdGVyPWksdGhpcy5taW5GaWx0ZXI9YSx0aGlzLmFuaXNvdHJvcHk9bCx0aGlzLmZvcm1hdD1yLHRoaXMuaW50ZXJuYWxGb3JtYXQ9bnVsbCx0aGlzLnR5cGU9cyx0aGlzLm9mZnNldD1uZXcgUWl0KDAsMCksdGhpcy5yZXBlYXQ9bmV3IFFpdCgxLDEpLHRoaXMuY2VudGVyPW5ldyBRaXQoMCwwKSx0aGlzLnJvdGF0aW9uPTAsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSEwLHRoaXMubWF0cml4PW5ldyAkaXQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITAsdGhpcy5wcmVtdWx0aXBseUFscGhhPSExLHRoaXMuZmxpcFk9ITAsdGhpcy51bnBhY2tBbGlnbm1lbnQ9NCx0aGlzLmVuY29kaW5nPWMsdGhpcy52ZXJzaW9uPTAsdGhpcy5vblVwZGF0ZT1udWxsLHRoaXMuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSExfXVwZGF0ZU1hdHJpeCgpe3RoaXMubWF0cml4LnNldFV2VHJhbnNmb3JtKHRoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueSx0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnksdGhpcy5yb3RhdGlvbix0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnkpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubmFtZT10Lm5hbWUsdGhpcy5pbWFnZT10LmltYWdlLHRoaXMubWlwbWFwcz10Lm1pcG1hcHMuc2xpY2UoMCksdGhpcy5tYXBwaW5nPXQubWFwcGluZyx0aGlzLndyYXBTPXQud3JhcFMsdGhpcy53cmFwVD10LndyYXBULHRoaXMubWFnRmlsdGVyPXQubWFnRmlsdGVyLHRoaXMubWluRmlsdGVyPXQubWluRmlsdGVyLHRoaXMuYW5pc290cm9weT10LmFuaXNvdHJvcHksdGhpcy5mb3JtYXQ9dC5mb3JtYXQsdGhpcy5pbnRlcm5hbEZvcm1hdD10LmludGVybmFsRm9ybWF0LHRoaXMudHlwZT10LnR5cGUsdGhpcy5vZmZzZXQuY29weSh0Lm9mZnNldCksdGhpcy5yZXBlYXQuY29weSh0LnJlcGVhdCksdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5yb3RhdGlvbj10LnJvdGF0aW9uLHRoaXMubWF0cml4QXV0b1VwZGF0ZT10Lm1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXguY29weSh0Lm1hdHJpeCksdGhpcy5nZW5lcmF0ZU1pcG1hcHM9dC5nZW5lcmF0ZU1pcG1hcHMsdGhpcy5wcmVtdWx0aXBseUFscGhhPXQucHJlbXVsdGlwbHlBbHBoYSx0aGlzLmZsaXBZPXQuZmxpcFksdGhpcy51bnBhY2tBbGlnbm1lbnQ9dC51bnBhY2tBbGlnbm1lbnQsdGhpcy5lbmNvZGluZz10LmVuY29kaW5nLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2lmKCFlJiZ2b2lkIDAhPT10LnRleHR1cmVzW3RoaXMudXVpZF0pcmV0dXJuIHQudGV4dHVyZXNbdGhpcy51dWlkXTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiVGV4dHVyZSIsZ2VuZXJhdG9yOiJUZXh0dXJlLnRvSlNPTiJ9LHV1aWQ6dGhpcy51dWlkLG5hbWU6dGhpcy5uYW1lLG1hcHBpbmc6dGhpcy5tYXBwaW5nLHJlcGVhdDpbdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55XSxvZmZzZXQ6W3RoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueV0sY2VudGVyOlt0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnldLHJvdGF0aW9uOnRoaXMucm90YXRpb24sd3JhcDpbdGhpcy53cmFwUyx0aGlzLndyYXBUXSxmb3JtYXQ6dGhpcy5mb3JtYXQsdHlwZTp0aGlzLnR5cGUsZW5jb2Rpbmc6dGhpcy5lbmNvZGluZyxtaW5GaWx0ZXI6dGhpcy5taW5GaWx0ZXIsbWFnRmlsdGVyOnRoaXMubWFnRmlsdGVyLGFuaXNvdHJvcHk6dGhpcy5hbmlzb3Ryb3B5LGZsaXBZOnRoaXMuZmxpcFkscHJlbXVsdGlwbHlBbHBoYTp0aGlzLnByZW11bHRpcGx5QWxwaGEsdW5wYWNrQWxpZ25tZW50OnRoaXMudW5wYWNrQWxpZ25tZW50fTtpZih2b2lkIDAhPT10aGlzLmltYWdlKXtjb25zdCBvPXRoaXMuaW1hZ2U7aWYodm9pZCAwPT09by51dWlkJiYoby51dWlkPXFpdCgpKSwhZSYmdm9pZCAwPT09dC5pbWFnZXNbby51dWlkXSl7bGV0IGU7aWYoQXJyYXkuaXNBcnJheShvKSl7ZT1bXTtmb3IobGV0IHQ9MCxuPW8ubGVuZ3RoO3Q8bjt0KyspZS5wdXNoKGlhdChvW3RdLmlzRGF0YVRleHR1cmU/b1t0XS5pbWFnZTpvW3RdKSl9ZWxzZSBlPWlhdChvKTt0LmltYWdlc1tvLnV1aWRdPXt1dWlkOm8udXVpZCx1cmw6ZX19bi5pbWFnZT1vLnV1aWR9cmV0dXJuIGV8fCh0LnRleHR1cmVzW3RoaXMudXVpZF09biksbn1kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXRyYW5zZm9ybVV2KHQpe2lmKDMwMCE9PXRoaXMubWFwcGluZylyZXR1cm4gdDtpZih0LmFwcGx5TWF0cml4Myh0aGlzLm1hdHJpeCksdC54PDB8fHQueD4xKXN3aXRjaCh0aGlzLndyYXBTKXtjYXNlIHVpdDp0Lng9dC54LU1hdGguZmxvb3IodC54KTticmVhaztjYXNlIGZpdDp0Lng9dC54PDA/MDoxO2JyZWFrO2Nhc2UgZ2l0OnQueD0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LngpJTIpP01hdGguY2VpbCh0LngpLXQueDp0LngtTWF0aC5mbG9vcih0LngpfWlmKHQueTwwfHx0Lnk+MSlzd2l0Y2godGhpcy53cmFwVCl7Y2FzZSB1aXQ6dC55PXQueS1NYXRoLmZsb29yKHQueSk7YnJlYWs7Y2FzZSBmaXQ6dC55PXQueTwwPzA6MTticmVhaztjYXNlIGdpdDp0Lnk9MT09PU1hdGguYWJzKE1hdGguZmxvb3IodC55KSUyKT9NYXRoLmNlaWwodC55KS10Lnk6dC55LU1hdGguZmxvb3IodC55KX1yZXR1cm4gdGhpcy5mbGlwWSYmKHQueT0xLXQueSksdH1zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319ZnVuY3Rpb24gaWF0KHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZUJpdG1hcCYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwP2VhdC5nZXREYXRhVVJMKHQpOnQuZGF0YT97ZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LmRhdGEpLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LHR5cGU6dC5kYXRhLmNvbnN0cnVjdG9yLm5hbWV9Oihjb25zb2xlLndhcm4oIlRIUkVFLlRleHR1cmU6IFVuYWJsZSB0byBzZXJpYWxpemUgVGV4dHVyZS4iKSx7fSl9b2F0LkRFRkFVTFRfSU1BR0U9dm9pZCAwLG9hdC5ERUZBVUxUX01BUFBJTkc9MzAwLG9hdC5wcm90b3R5cGUuaXNUZXh0dXJlPSEwO2NsYXNzIGFhdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxvPTEpe3RoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1vfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnp9c2V0IHdpZHRoKHQpe3RoaXMuej10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy53fXNldCBoZWlnaHQodCl7dGhpcy53PXR9c2V0KHQsZSxuLG8pe3JldHVybiB0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzLnc9byx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpcy53PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRXKHQpe3JldHVybiB0aGlzLnc9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztjYXNlIDM6dGhpcy53PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2Nhc2UgMzpyZXR1cm4gdGhpcy53O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56LHRoaXMudyl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpcy53PXZvaWQgMCE9PXQudz90Lnc6MSx0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMudys9dC53LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpcy53Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzLnc9dC53K2Uudyx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzLncrPXQudyplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcy53LT10LncsdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzLnctPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXMudz10LnctZS53LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMudyo9dC53LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXMudyo9dCx0aGlzfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXRoaXMueixpPXRoaXMudyxhPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1hWzBdKmUrYVs0XSpuK2FbOF0qbythWzEyXSppLHRoaXMueT1hWzFdKmUrYVs1XSpuK2FbOV0qbythWzEzXSppLHRoaXMuej1hWzJdKmUrYVs2XSpuK2FbMTBdKm8rYVsxNF0qaSx0aGlzLnc9YVszXSplK2FbN10qbithWzExXSpvK2FbMTVdKmksdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1zZXRBeGlzQW5nbGVGcm9tUXVhdGVybmlvbih0KXt0aGlzLnc9MipNYXRoLmFjb3ModC53KTtjb25zdCBlPU1hdGguc3FydCgxLXQudyp0LncpO3JldHVybiBlPDFlLTQ/KHRoaXMueD0xLHRoaXMueT0wLHRoaXMuej0wKToodGhpcy54PXQueC9lLHRoaXMueT10LnkvZSx0aGlzLno9dC56L2UpLHRoaXN9c2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4KHQpe2xldCBlLG4sbyxpO2NvbnN0IGE9LjAxLHI9LjEscz10LmVsZW1lbnRzLGw9c1swXSxjPXNbNF0sZD1zWzhdLHA9c1sxXSxtPXNbNV0sdT1zWzldLGY9c1syXSxnPXNbNl0saD1zWzEwXTtpZihNYXRoLmFicyhjLXApPGEmJk1hdGguYWJzKGQtZik8YSYmTWF0aC5hYnModS1nKTxhKXtpZihNYXRoLmFicyhjK3ApPHImJk1hdGguYWJzKGQrZik8ciYmTWF0aC5hYnModStnKTxyJiZNYXRoLmFicyhsK20raC0zKTxyKXJldHVybiB0aGlzLnNldCgxLDAsMCwwKSx0aGlzO2U9TWF0aC5QSTtjb25zdCB0PShsKzEpLzIscz0obSsxKS8yLGI9KGgrMSkvMix5PShjK3ApLzQsXz0oZCtmKS80LEM9KHUrZykvNDtyZXR1cm4gdD5zJiZ0PmI/dDxhPyhuPTAsbz0uNzA3MTA2NzgxLGk9LjcwNzEwNjc4MSk6KG49TWF0aC5zcXJ0KHQpLG89eS9uLGk9Xy9uKTpzPmI/czxhPyhuPS43MDcxMDY3ODEsbz0wLGk9LjcwNzEwNjc4MSk6KG89TWF0aC5zcXJ0KHMpLG49eS9vLGk9Qy9vKTpiPGE/KG49LjcwNzEwNjc4MSxvPS43MDcxMDY3ODEsaT0wKTooaT1NYXRoLnNxcnQoYiksbj1fL2ksbz1DL2kpLHRoaXMuc2V0KG4sbyxpLGUpLHRoaXN9bGV0IGI9TWF0aC5zcXJ0KChnLXUpKihnLXUpKyhkLWYpKihkLWYpKyhwLWMpKihwLWMpKTtyZXR1cm4gTWF0aC5hYnMoYik8LjAwMSYmKGI9MSksdGhpcy54PShnLXUpL2IsdGhpcy55PShkLWYpL2IsdGhpcy56PShwLWMpL2IsdGhpcy53PU1hdGguYWNvcygobCttK2gtMSkvMiksdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1pbih0aGlzLncsdC53KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpcy53PU1hdGgubWF4KHRoaXMudyx0LncpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQudyxNYXRoLm1pbihlLncsdGhpcy53KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMudykpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz1NYXRoLmZsb29yKHRoaXMudyksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXMudz1NYXRoLmNlaWwodGhpcy53KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXMudz1NYXRoLnJvdW5kKHRoaXMudyksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9dGhpcy53PDA/TWF0aC5jZWlsKHRoaXMudyk6TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXMudz0tdGhpcy53LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQueit0aGlzLncqdC53fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueikrTWF0aC5hYnModGhpcy53KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpcy53Kz0odC53LXRoaXMudykqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpcy53PXQudysoZS53LXQudykqbix0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMueiYmdC53PT09dGhpcy53fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzLnc9dFtlKzNdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0W2UrM109dGhpcy53LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXMudz10LmdldFcoZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpcy53PU1hdGgucmFuZG9tKCksdGhpc319YWF0LnByb3RvdHlwZS5pc1ZlY3RvcjQ9ITA7Y2xhc3MgcmF0IGV4dGVuZHMgVWl0e2NvbnN0cnVjdG9yKHQsZSxuPXt9KXtzdXBlcigpLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9MSx0aGlzLnNjaXNzb3I9bmV3IGFhdCgwLDAsdCxlKSx0aGlzLnNjaXNzb3JUZXN0PSExLHRoaXMudmlld3BvcnQ9bmV3IGFhdCgwLDAsdCxlKSx0aGlzLnRleHR1cmU9bmV3IG9hdCh2b2lkIDAsbi5tYXBwaW5nLG4ud3JhcFMsbi53cmFwVCxuLm1hZ0ZpbHRlcixuLm1pbkZpbHRlcixuLmZvcm1hdCxuLnR5cGUsbi5hbmlzb3Ryb3B5LG4uZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmltYWdlPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOjF9LHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09bi5nZW5lcmF0ZU1pcG1hcHMmJm4uZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09bi5taW5GaWx0ZXI/bi5taW5GaWx0ZXI6Yml0LHRoaXMuZGVwdGhCdWZmZXI9dm9pZCAwPT09bi5kZXB0aEJ1ZmZlcnx8bi5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dm9pZCAwIT09bi5zdGVuY2lsQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIsdGhpcy5kZXB0aFRleHR1cmU9dm9pZCAwIT09bi5kZXB0aFRleHR1cmU/bi5kZXB0aFRleHR1cmU6bnVsbH1zZXRUZXh0dXJlKHQpe3QuaW1hZ2U9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LGRlcHRoOnRoaXMuZGVwdGh9LHRoaXMudGV4dHVyZT10fXNldFNpemUodCxlLG49MSl7dGhpcy53aWR0aD09PXQmJnRoaXMuaGVpZ2h0PT09ZSYmdGhpcy5kZXB0aD09PW58fCh0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW4sdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZS5pbWFnZS5kZXB0aD1uLHRoaXMuZGlzcG9zZSgpKSx0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5jb3B5KHQudmlld3BvcnQpLHRoaXMudGV4dHVyZT10LnRleHR1cmUuY2xvbmUoKSx0aGlzLnRleHR1cmUuaW1hZ2U9ey4uLnRoaXMudGV4dHVyZS5pbWFnZX0sdGhpcy5kZXB0aEJ1ZmZlcj10LmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj10LnN0ZW5jaWxCdWZmZXIsdGhpcy5kZXB0aFRleHR1cmU9dC5kZXB0aFRleHR1cmUsdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1yYXQucHJvdG90eXBlLmlzV2ViR0xSZW5kZXJUYXJnZXQ9ITAsY2xhc3MgZXh0ZW5kcyByYXR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKHQsZSk7Y29uc3Qgbz10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgdD0wO3Q8bjt0KyspdGhpcy50ZXh0dXJlW3RdPW8uY2xvbmUoKX1zZXRTaXplKHQsZSxuPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1uKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW47Zm9yKGxldCBvPTAsaT10aGlzLnRleHR1cmUubGVuZ3RoO288aTtvKyspdGhpcy50ZXh0dXJlW29dLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW29dLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtvXS5pbWFnZS5kZXB0aD1uO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbj10LnRleHR1cmUubGVuZ3RoO2U8bjtlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX0ucHJvdG90eXBlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9ITA7Y2xhc3Mgc2F0IGV4dGVuZHMgcmF0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUsbiksdGhpcy5zYW1wbGVzPTR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzfX1zYXQucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDtjbGFzcyBsYXR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsbz0xKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PW99c3RhdGljIHNsZXJwKHQsZSxuLG8pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxuLnNsZXJwUXVhdGVybmlvbnModCxlLG8pfXN0YXRpYyBzbGVycEZsYXQodCxlLG4sbyxpLGEscil7bGV0IHM9bltvKzBdLGw9bltvKzFdLGM9bltvKzJdLGQ9bltvKzNdO2NvbnN0IHA9aVthKzBdLG09aVthKzFdLHU9aVthKzJdLGY9aVthKzNdO2lmKDA9PT1yKXJldHVybiB0W2UrMF09cyx0W2UrMV09bCx0W2UrMl09Yyx2b2lkKHRbZSszXT1kKTtpZigxPT09cilyZXR1cm4gdFtlKzBdPXAsdFtlKzFdPW0sdFtlKzJdPXUsdm9pZCh0W2UrM109Zik7aWYoZCE9PWZ8fHMhPT1wfHxsIT09bXx8YyE9PXUpe2xldCB0PTEtcjtjb25zdCBlPXMqcCtsKm0rYyp1K2QqZixuPWU+PTA/MTotMSxvPTEtZSplO2lmKG8+TnVtYmVyLkVQU0lMT04pe2NvbnN0IGk9TWF0aC5zcXJ0KG8pLGE9TWF0aC5hdGFuMihpLGUqbik7dD1NYXRoLnNpbih0KmEpL2kscj1NYXRoLnNpbihyKmEpL2l9Y29uc3QgaT1yKm47aWYocz1zKnQrcCppLGw9bCp0K20qaSxjPWMqdCt1KmksZD1kKnQrZippLHQ9PT0xLXIpe2NvbnN0IHQ9MS9NYXRoLnNxcnQocypzK2wqbCtjKmMrZCpkKTtzKj10LGwqPXQsYyo9dCxkKj10fX10W2VdPXMsdFtlKzFdPWwsdFtlKzJdPWMsdFtlKzNdPWR9c3RhdGljIG11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsZSxuLG8saSxhKXtjb25zdCByPW5bb10scz1uW28rMV0sbD1uW28rMl0sYz1uW28rM10sZD1pW2FdLHA9aVthKzFdLG09aVthKzJdLHU9aVthKzNdO3JldHVybiB0W2VdPXIqdStjKmQrcyptLWwqcCx0W2UrMV09cyp1K2MqcCtsKmQtciptLHRbZSsyXT1sKnUrYyptK3IqcC1zKmQsdFtlKzNdPWMqdS1yKmQtcypwLWwqbSx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLG4sbyl7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1uLHRoaXMuX3c9byx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxlKXtpZighdHx8IXQuaXNFdWxlcil0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLlF1YXRlcm5pb246IC5zZXRGcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO2NvbnN0IG49dC5feCxvPXQuX3ksaT10Ll96LGE9dC5fb3JkZXIscj1NYXRoLmNvcyxzPU1hdGguc2luLGw9cihuLzIpLGM9cihvLzIpLGQ9cihpLzIpLHA9cyhuLzIpLG09cyhvLzIpLHU9cyhpLzIpO3N3aXRjaChhKXtjYXNlIlhZWiI6dGhpcy5feD1wKmMqZCtsKm0qdSx0aGlzLl95PWwqbSpkLXAqYyp1LHRoaXMuX3o9bCpjKnUrcCptKmQsdGhpcy5fdz1sKmMqZC1wKm0qdTticmVhaztjYXNlIllYWiI6dGhpcy5feD1wKmMqZCtsKm0qdSx0aGlzLl95PWwqbSpkLXAqYyp1LHRoaXMuX3o9bCpjKnUtcCptKmQsdGhpcy5fdz1sKmMqZCtwKm0qdTticmVhaztjYXNlIlpYWSI6dGhpcy5feD1wKmMqZC1sKm0qdSx0aGlzLl95PWwqbSpkK3AqYyp1LHRoaXMuX3o9bCpjKnUrcCptKmQsdGhpcy5fdz1sKmMqZC1wKm0qdTticmVhaztjYXNlIlpZWCI6dGhpcy5feD1wKmMqZC1sKm0qdSx0aGlzLl95PWwqbSpkK3AqYyp1LHRoaXMuX3o9bCpjKnUtcCptKmQsdGhpcy5fdz1sKmMqZCtwKm0qdTticmVhaztjYXNlIllaWCI6dGhpcy5feD1wKmMqZCtsKm0qdSx0aGlzLl95PWwqbSpkK3AqYyp1LHRoaXMuX3o9bCpjKnUtcCptKmQsdGhpcy5fdz1sKmMqZC1wKm0qdTticmVhaztjYXNlIlhaWSI6dGhpcy5feD1wKmMqZC1sKm0qdSx0aGlzLl95PWwqbSpkLXAqYyp1LHRoaXMuX3o9bCpjKnUrcCptKmQsdGhpcy5fdz1sKmMqZCtwKm0qdTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrYSl9cmV0dXJuITEhPT1lJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQsZSl7Y29uc3Qgbj1lLzIsbz1NYXRoLnNpbihuKTtyZXR1cm4gdGhpcy5feD10Lngqbyx0aGlzLl95PXQueSpvLHRoaXMuX3o9dC56Km8sdGhpcy5fdz1NYXRoLmNvcyhuKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCl7Y29uc3QgZT10LmVsZW1lbnRzLG49ZVswXSxvPWVbNF0saT1lWzhdLGE9ZVsxXSxyPWVbNV0scz1lWzldLGw9ZVsyXSxjPWVbNl0sZD1lWzEwXSxwPW4rcitkO2lmKHA+MCl7Y29uc3QgdD0uNS9NYXRoLnNxcnQocCsxKTt0aGlzLl93PS4yNS90LHRoaXMuX3g9KGMtcykqdCx0aGlzLl95PShpLWwpKnQsdGhpcy5fej0oYS1vKSp0fWVsc2UgaWYobj5yJiZuPmQpe2NvbnN0IHQ9MipNYXRoLnNxcnQoMStuLXItZCk7dGhpcy5fdz0oYy1zKS90LHRoaXMuX3g9LjI1KnQsdGhpcy5feT0obythKS90LHRoaXMuX3o9KGkrbCkvdH1lbHNlIGlmKHI+ZCl7Y29uc3QgdD0yKk1hdGguc3FydCgxK3Itbi1kKTt0aGlzLl93PShpLWwpL3QsdGhpcy5feD0obythKS90LHRoaXMuX3k9LjI1KnQsdGhpcy5fej0ocytjKS90fWVsc2V7Y29uc3QgdD0yKk1hdGguc3FydCgxK2Qtbi1yKTt0aGlzLl93PShhLW8pL3QsdGhpcy5feD0oaStsKS90LHRoaXMuX3k9KHMrYykvdCx0aGlzLl96PS4yNSp0fXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxlKXtsZXQgbj10LmRvdChlKSsxO3JldHVybiBuPE51bWJlci5FUFNJTE9OPyhuPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9bik6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1uKSk6KHRoaXMuX3g9dC55KmUuei10LnoqZS55LHRoaXMuX3k9dC56KmUueC10LngqZS56LHRoaXMuX3o9dC54KmUueS10LnkqZS54LHRoaXMuX3c9biksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhaaXQodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsZSl7Y29uc3Qgbj10aGlzLmFuZ2xlVG8odCk7aWYoMD09PW4pcmV0dXJuIHRoaXM7Y29uc3Qgbz1NYXRoLm1pbigxLGUvbik7cmV0dXJuIHRoaXMuc2xlcnAodCxvKSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDAsMCwwLDEpfWludmVydCgpe3JldHVybiB0aGlzLmNvbmp1Z2F0ZSgpfWNvbmp1Z2F0ZSgpe3JldHVybiB0aGlzLl94Kj0tMSx0aGlzLl95Kj0tMSx0aGlzLl96Kj0tMSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMuX3gqdC5feCt0aGlzLl95KnQuX3krdGhpcy5feip0Ll96K3RoaXMuX3cqdC5fd31sZW5ndGhTcSgpe3JldHVybiB0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3d9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfW5vcm1hbGl6ZSgpe2xldCB0PXRoaXMubGVuZ3RoKCk7cmV0dXJuIDA9PT10Pyh0aGlzLl94PTAsdGhpcy5feT0wLHRoaXMuX3o9MCx0aGlzLl93PTEpOih0PTEvdCx0aGlzLl94PXRoaXMuX3gqdCx0aGlzLl95PXRoaXMuX3kqdCx0aGlzLl96PXRoaXMuX3oqdCx0aGlzLl93PXRoaXMuX3cqdCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCxlKSk6dGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LHRoaXMpfW11bHRpcGx5UXVhdGVybmlvbnModCxlKXtjb25zdCBuPXQuX3gsbz10Ll95LGk9dC5feixhPXQuX3cscj1lLl94LHM9ZS5feSxsPWUuX3osYz1lLl93O3JldHVybiB0aGlzLl94PW4qYythKnIrbypsLWkqcyx0aGlzLl95PW8qYythKnMraSpyLW4qbCx0aGlzLl96PWkqYythKmwrbipzLW8qcix0aGlzLl93PWEqYy1uKnItbypzLWkqbCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LGUpe2lmKDA9PT1lKXJldHVybiB0aGlzO2lmKDE9PT1lKXJldHVybiB0aGlzLmNvcHkodCk7Y29uc3Qgbj10aGlzLl94LG89dGhpcy5feSxpPXRoaXMuX3osYT10aGlzLl93O2xldCByPWEqdC5fdytuKnQuX3grbyp0Ll95K2kqdC5fejtpZihyPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3oscj0tcik6dGhpcy5jb3B5KHQpLHI+PTEpcmV0dXJuIHRoaXMuX3c9YSx0aGlzLl94PW4sdGhpcy5feT1vLHRoaXMuX3o9aSx0aGlzO2NvbnN0IHM9MS1yKnI7aWYoczw9TnVtYmVyLkVQU0lMT04pe2NvbnN0IHQ9MS1lO3JldHVybiB0aGlzLl93PXQqYStlKnRoaXMuX3csdGhpcy5feD10Km4rZSp0aGlzLl94LHRoaXMuX3k9dCpvK2UqdGhpcy5feSx0aGlzLl96PXQqaStlKnRoaXMuX3osdGhpcy5ub3JtYWxpemUoKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jb25zdCBsPU1hdGguc3FydChzKSxjPU1hdGguYXRhbjIobCxyKSxkPU1hdGguc2luKCgxLWUpKmMpL2wscD1NYXRoLnNpbihlKmMpL2w7cmV0dXJuIHRoaXMuX3c9YSpkK3RoaXMuX3cqcCx0aGlzLl94PW4qZCt0aGlzLl94KnAsdGhpcy5feT1vKmQrdGhpcy5feSpwLHRoaXMuX3o9aSpkK3RoaXMuX3oqcCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycFF1YXRlcm5pb25zKHQsZSxuKXt0aGlzLmNvcHkodCkuc2xlcnAoZSxuKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMuX3g9dFtlXSx0aGlzLl95PXRbZSsxXSx0aGlzLl96PXRbZSsyXSx0aGlzLl93PXRbZSszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLl94PXQuZ2V0WChlKSx0aGlzLl95PXQuZ2V0WShlKSx0aGlzLl96PXQuZ2V0WihlKSx0aGlzLl93PXQuZ2V0VyhlKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fWxhdC5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO2NsYXNzIGNhdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCl7dGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW59c2V0KHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dGhpcy56KSx0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpc31hZGRWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngrZS54LHRoaXMueT10LnkrZS55LHRoaXMuej10LnorZS56LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsZSl7cmV0dXJuIHRoaXMueCs9dC54KmUsdGhpcy55Kz10LnkqZSx0aGlzLnorPXQueiplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzfXN1YlZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueC1lLngsdGhpcy55PXQueS1lLnksdGhpcy56PXQuei1lLnosdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnModCxlKSk6KHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMpfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzfW11bHRpcGx5VmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54KmUueCx0aGlzLnk9dC55KmUueSx0aGlzLno9dC56KmUueix0aGlzfWFwcGx5RXVsZXIodCl7cmV0dXJuIHQmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpLHRoaXMuYXBwbHlRdWF0ZXJuaW9uKHBhdC5zZXRGcm9tRXVsZXIodCkpfWFwcGx5QXhpc0FuZ2xlKHQsZSl7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKHBhdC5zZXRGcm9tQXhpc0FuZ2xlKHQsZSkpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXRoaXMueixpPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1pWzBdKmUraVszXSpuK2lbNl0qbyx0aGlzLnk9aVsxXSplK2lbNF0qbitpWzddKm8sdGhpcy56PWlbMl0qZStpWzVdKm4raVs4XSpvLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXRoaXMueixpPXQuZWxlbWVudHMsYT0xLyhpWzNdKmUraVs3XSpuK2lbMTFdKm8raVsxNV0pO3JldHVybiB0aGlzLng9KGlbMF0qZStpWzRdKm4raVs4XSpvK2lbMTJdKSphLHRoaXMueT0oaVsxXSplK2lbNV0qbitpWzldKm8raVsxM10pKmEsdGhpcy56PShpWzJdKmUraVs2XSpuK2lbMTBdKm8raVsxNF0pKmEsdGhpc31hcHBseVF1YXRlcm5pb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksbz10aGlzLnosaT10LngsYT10Lnkscj10Lnoscz10LncsbD1zKmUrYSpvLXIqbixjPXMqbityKmUtaSpvLGQ9cypvK2kqbi1hKmUscD0taSplLWEqbi1yKm87cmV0dXJuIHRoaXMueD1sKnMrcCotaStjKi1yLWQqLWEsdGhpcy55PWMqcytwKi1hK2QqLWktbCotcix0aGlzLno9ZCpzK3AqLXIrbCotYS1jKi1pLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxvPXRoaXMueixpPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1pWzBdKmUraVs0XSpuK2lbOF0qbyx0aGlzLnk9aVsxXSplK2lbNV0qbitpWzldKm8sdGhpcy56PWlbMl0qZStpWzZdKm4raVsxMF0qbyx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oZS56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpc31jcm9zcyh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxlKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxlKXtjb25zdCBuPXQueCxvPXQueSxpPXQueixhPWUueCxyPWUueSxzPWUuejtyZXR1cm4gdGhpcy54PW8qcy1pKnIsdGhpcy55PWkqYS1uKnMsdGhpcy56PW4qci1vKmEsdGhpc31wcm9qZWN0T25WZWN0b3IodCl7Y29uc3QgZT10Lmxlbmd0aFNxKCk7aWYoMD09PWUpcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtjb25zdCBuPXQuZG90KHRoaXMpL2U7cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihuKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gZGF0LmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKHQpLHRoaXMuc3ViKGRhdCl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIoZGF0LmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7Y29uc3QgZT1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoMD09PWUpcmV0dXJuIE1hdGguUEkvMjtjb25zdCBuPXRoaXMuZG90KHQpL2U7cmV0dXJuIE1hdGguYWNvcyhaaXQobiwtMSwxKSl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IGU9dGhpcy54LXQueCxuPXRoaXMueS10Lnksbz10aGlzLnotdC56O3JldHVybiBlKmUrbipuK28qb31tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KStNYXRoLmFicyh0aGlzLnotdC56KX1zZXRGcm9tU3BoZXJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHModC5yYWRpdXMsdC5waGksdC50aGV0YSl9c2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LGUsbil7Y29uc3Qgbz1NYXRoLnNpbihlKSp0O3JldHVybiB0aGlzLng9bypNYXRoLnNpbihuKSx0aGlzLnk9TWF0aC5jb3MoZSkqdCx0aGlzLno9bypNYXRoLmNvcyhuKSx0aGlzfXNldEZyb21DeWxpbmRyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModC5yYWRpdXMsdC50aGV0YSx0LnkpfXNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LGUsbil7cmV0dXJuIHRoaXMueD10Kk1hdGguc2luKGUpLHRoaXMueT1uLHRoaXMuej10Kk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWVbMTJdLHRoaXMueT1lWzEzXSx0aGlzLno9ZVsxNF0sdGhpc31zZXRGcm9tTWF0cml4U2NhbGUodCl7Y29uc3QgZT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLG89dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIHRoaXMueD1lLHRoaXMueT1uLHRoaXMuej1vLHRoaXN9c2V0RnJvbU1hdHJpeENvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDQqZSl9c2V0RnJvbU1hdHJpeDNDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cywzKmUpfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMuen1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLngsdFtlKzFdPXRoaXMueSx0W2UrMl09dGhpcy56LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXN9fWNhdC5wcm90b3R5cGUuaXNWZWN0b3IzPSEwO2NvbnN0IGRhdD1uZXcgY2F0LHBhdD1uZXcgbGF0O2NsYXNzIG1hdHtjb25zdHJ1Y3Rvcih0PW5ldyBjYXQoMS8wLDEvMCwxLzApLGU9bmV3IGNhdCgtMS8wLC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KGUpLHRoaXN9c2V0RnJvbUFycmF5KHQpe2xldCBlPTEvMCxuPTEvMCxvPTEvMCxpPS0xLzAsYT0tMS8wLHI9LTEvMDtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKz0zKXtjb25zdCBsPXRbc10sYz10W3MrMV0sZD10W3MrMl07bDxlJiYoZT1sKSxjPG4mJihuPWMpLGQ8byYmKG89ZCksbD5pJiYoaT1sKSxjPmEmJihhPWMpLGQ+ciYmKHI9ZCl9cmV0dXJuIHRoaXMubWluLnNldChlLG4sbyksdGhpcy5tYXguc2V0KGksYSxyKSx0aGlzfXNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCl7bGV0IGU9MS8wLG49MS8wLG89MS8wLGk9LTEvMCxhPS0xLzAscj0tMS8wO2ZvcihsZXQgcz0wLGw9dC5jb3VudDtzPGw7cysrKXtjb25zdCBsPXQuZ2V0WChzKSxjPXQuZ2V0WShzKSxkPXQuZ2V0WihzKTtsPGUmJihlPWwpLGM8biYmKG49YyksZDxvJiYobz1kKSxsPmkmJihpPWwpLGM+YSYmKGE9YyksZD5yJiYocj1kKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixvKSx0aGlzLm1heC5zZXQoaSxhLHIpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtjb25zdCBuPWZhdC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobiksdGhpcy5tYXguY29weSh0KS5hZGQobiksdGhpc31zZXRGcm9tT2JqZWN0KHQpe3JldHVybiB0aGlzLm1ha2VFbXB0eSgpLHRoaXMuZXhwYW5kQnlPYmplY3QodCl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PXRoaXMubWluLno9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT10aGlzLm1heC56PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fHx0aGlzLm1heC56PHRoaXMubWluLnp9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9ZXhwYW5kQnlPYmplY3QodCl7dC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7Y29uc3QgZT10Lmdlb21ldHJ5O3ZvaWQgMCE9PWUmJihudWxsPT09ZS5ib3VuZGluZ0JveCYmZS5jb21wdXRlQm91bmRpbmdCb3goKSxnYXQuY29weShlLmJvdW5kaW5nQm94KSxnYXQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oZ2F0KSk7Y29uc3Qgbj10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKyl0aGlzLmV4cGFuZEJ5T2JqZWN0KG5bdF0pO3JldHVybiB0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueXx8dC56PHRoaXMubWluLnp8fHQuej50aGlzLm1heC56KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9dC5taW4ueiYmdC5tYXguejw9dGhpcy5tYXguen1nZXRQYXJhbWV0ZXIodCxlKXtyZXR1cm4gZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsZmF0KSxmYXQuZGlzdGFuY2VUb1NxdWFyZWQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31pbnRlcnNlY3RzUGxhbmUodCl7bGV0IGUsbjtyZXR1cm4gdC5ub3JtYWwueD4wPyhlPXQubm9ybWFsLngqdGhpcy5taW4ueCxuPXQubm9ybWFsLngqdGhpcy5tYXgueCk6KGU9dC5ub3JtYWwueCp0aGlzLm1heC54LG49dC5ub3JtYWwueCp0aGlzLm1pbi54KSx0Lm5vcm1hbC55PjA/KGUrPXQubm9ybWFsLnkqdGhpcy5taW4ueSxuKz10Lm5vcm1hbC55KnRoaXMubWF4LnkpOihlKz10Lm5vcm1hbC55KnRoaXMubWF4Lnksbis9dC5ub3JtYWwueSp0aGlzLm1pbi55KSx0Lm5vcm1hbC56PjA/KGUrPXQubm9ybWFsLnoqdGhpcy5taW4ueixuKz10Lm5vcm1hbC56KnRoaXMubWF4LnopOihlKz10Lm5vcm1hbC56KnRoaXMubWF4Lnosbis9dC5ub3JtYWwueip0aGlzLm1pbi56KSxlPD0tdC5jb25zdGFudCYmbj49LXQuY29uc3RhbnR9aW50ZXJzZWN0c1RyaWFuZ2xlKHQpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiExO3RoaXMuZ2V0Q2VudGVyKHZhdCkseGF0LnN1YlZlY3RvcnModGhpcy5tYXgsdmF0KSxoYXQuc3ViVmVjdG9ycyh0LmEsdmF0KSxiYXQuc3ViVmVjdG9ycyh0LmIsdmF0KSx5YXQuc3ViVmVjdG9ycyh0LmMsdmF0KSxfYXQuc3ViVmVjdG9ycyhiYXQsaGF0KSxDYXQuc3ViVmVjdG9ycyh5YXQsYmF0KSxNYXQuc3ViVmVjdG9ycyhoYXQseWF0KTtsZXQgZT1bMCwtX2F0LnosX2F0LnksMCwtQ2F0LnosQ2F0LnksMCwtTWF0LnosTWF0LnksX2F0LnosMCwtX2F0LngsQ2F0LnosMCwtQ2F0LngsTWF0LnosMCwtTWF0LngsLV9hdC55LF9hdC54LDAsLUNhdC55LENhdC54LDAsLU1hdC55LE1hdC54LDBdO3JldHVybiEhd2F0KGUsaGF0LGJhdCx5YXQseGF0KSYmKGU9WzEsMCwwLDAsMSwwLDAsMCwxXSwhIXdhdChlLGhhdCxiYXQseWF0LHhhdCkmJihPYXQuY3Jvc3NWZWN0b3JzKF9hdCxDYXQpLGU9W09hdC54LE9hdC55LE9hdC56XSx3YXQoZSxoYXQsYmF0LHlhdCx4YXQpKSl9Y2xhbXBQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gZmF0LmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1Yih0KS5sZW5ndGgoKX1nZXRCb3VuZGluZ1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShmYXQpLmxlbmd0aCgpLHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKXx8KHVhdFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSx1YXRbMV0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdWF0WzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLHVhdFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx1YXRbNF0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksdWF0WzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHVhdFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSx1YXRbN10uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRGcm9tUG9pbnRzKHVhdCkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX1tYXQucHJvdG90eXBlLmlzQm94Mz0hMDtjb25zdCB1YXQ9W25ldyBjYXQsbmV3IGNhdCxuZXcgY2F0LG5ldyBjYXQsbmV3IGNhdCxuZXcgY2F0LG5ldyBjYXQsbmV3IGNhdF0sZmF0PW5ldyBjYXQsZ2F0PW5ldyBtYXQsaGF0PW5ldyBjYXQsYmF0PW5ldyBjYXQseWF0PW5ldyBjYXQsX2F0PW5ldyBjYXQsQ2F0PW5ldyBjYXQsTWF0PW5ldyBjYXQsdmF0PW5ldyBjYXQseGF0PW5ldyBjYXQsT2F0PW5ldyBjYXQsUGF0PW5ldyBjYXQ7ZnVuY3Rpb24gd2F0KHQsZSxuLG8saSl7Zm9yKGxldCBhPTAscj10Lmxlbmd0aC0zO2E8PXI7YSs9Myl7UGF0LmZyb21BcnJheSh0LGEpO2NvbnN0IHI9aS54Kk1hdGguYWJzKFBhdC54KStpLnkqTWF0aC5hYnMoUGF0LnkpK2kueipNYXRoLmFicyhQYXQueikscz1lLmRvdChQYXQpLGw9bi5kb3QoUGF0KSxjPW8uZG90KFBhdCk7aWYoTWF0aC5tYXgoLU1hdGgubWF4KHMsbCxjKSxNYXRoLm1pbihzLGwsYykpPnIpcmV0dXJuITF9cmV0dXJuITB9Y29uc3Qga2F0PW5ldyBtYXQsU2F0PW5ldyBjYXQsRGF0PW5ldyBjYXQsRWF0PW5ldyBjYXQ7Y2xhc3MgUmF0e2NvbnN0cnVjdG9yKHQ9bmV3IGNhdCxlPS0xKXt0aGlzLmNlbnRlcj10LHRoaXMucmFkaXVzPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodCksdGhpcy5yYWRpdXM9ZSx0aGlzfXNldEZyb21Qb2ludHModCxlKXtjb25zdCBuPXRoaXMuY2VudGVyO3ZvaWQgMCE9PWU/bi5jb3B5KGUpOmthdC5zZXRGcm9tUG9pbnRzKHQpLmdldENlbnRlcihuKTtsZXQgbz0wO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKylvPU1hdGgubWF4KG8sbi5kaXN0YW5jZVRvU3F1YXJlZCh0W2VdKSk7cmV0dXJuIHRoaXMucmFkaXVzPU1hdGguc3FydChvKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLnJhZGl1czwwfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLmNlbnRlci5zZXQoMCwwLDApLHRoaXMucmFkaXVzPS0xLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PXRoaXMucmFkaXVzKnRoaXMucmFkaXVzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdC5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKS10aGlzLnJhZGl1c31pbnRlcnNlY3RzU3BoZXJlKHQpe2NvbnN0IGU9dGhpcy5yYWRpdXMrdC5yYWRpdXM7cmV0dXJuIHQuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9ZSplfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1NwaGVyZSh0aGlzKX1pbnRlcnNlY3RzUGxhbmUodCl7cmV0dXJuIE1hdGguYWJzKHQuZGlzdGFuY2VUb1BvaW50KHRoaXMuY2VudGVyKSk8PXRoaXMucmFkaXVzfWNsYW1wUG9pbnQodCxlKXtjb25zdCBuPXRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHQpO3JldHVybiBlLmNvcHkodCksbj50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyYmKGUuc3ViKHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKSxlLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy5jZW50ZXIpKSxlfWdldEJvdW5kaW5nQm94KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT8odC5tYWtlRW1wdHkoKSx0KToodC5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpLHQuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpLHQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KHQpLHRoaXMucmFkaXVzPXRoaXMucmFkaXVzKnQuZ2V0TWF4U2NhbGVPbkF4aXMoKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYWRkKHQpLHRoaXN9ZXhwYW5kQnlQb2ludCh0KXtFYXQuc3ViVmVjdG9ycyh0LHRoaXMuY2VudGVyKTtjb25zdCBlPUVhdC5sZW5ndGhTcSgpO2lmKGU+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMpe2NvbnN0IHQ9TWF0aC5zcXJ0KGUpLG49LjUqKHQtdGhpcy5yYWRpdXMpO3RoaXMuY2VudGVyLmFkZChFYXQubXVsdGlwbHlTY2FsYXIobi90KSksdGhpcy5yYWRpdXMrPW59cmV0dXJuIHRoaXN9dW5pb24odCl7cmV0dXJuIERhdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyksdGhpcy5leHBhbmRCeVBvaW50KFNhdC5jb3B5KHQuY2VudGVyKS5hZGQoRGF0KSksdGhpcy5leHBhbmRCeVBvaW50KFNhdC5jb3B5KHQuY2VudGVyKS5zdWIoRGF0KSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fWNvbnN0IEFhdD1uZXcgY2F0LFRhdD1uZXcgY2F0LE5hdD1uZXcgY2F0LHphdD1uZXcgY2F0LElhdD1uZXcgY2F0LEhhdD1uZXcgY2F0LEZhdD1uZXcgY2F0O2NsYXNzIExhdHtjb25zdHJ1Y3Rvcih0PW5ldyBjYXQsZT1uZXcgY2F0KDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LEFhdCkpLHRoaXN9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2Uuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBuPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IGU9QWF0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihBYXQuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZSkuYWRkKHRoaXMub3JpZ2luKSxBYXQuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLG4sbyl7VGF0LmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSxOYXQuY29weShlKS5zdWIodCkubm9ybWFsaXplKCksemF0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihUYXQpO2NvbnN0IGk9LjUqdC5kaXN0YW5jZVRvKGUpLGE9LXRoaXMuZGlyZWN0aW9uLmRvdChOYXQpLHI9emF0LmRvdCh0aGlzLmRpcmVjdGlvbikscz0temF0LmRvdChOYXQpLGw9emF0Lmxlbmd0aFNxKCksYz1NYXRoLmFicygxLWEqYSk7bGV0IGQscCxtLHU7aWYoYz4wKWlmKGQ9YSpzLXIscD1hKnItcyx1PWkqYyxkPj0wKWlmKHA+PS11KWlmKHA8PXUpe2NvbnN0IHQ9MS9jO2QqPXQscCo9dCxtPWQqKGQrYSpwKzIqcikrcCooYSpkK3ArMipzKStsfWVsc2UgcD1pLGQ9TWF0aC5tYXgoMCwtKGEqcCtyKSksbT0tZCpkK3AqKHArMipzKStsO2Vsc2UgcD0taSxkPU1hdGgubWF4KDAsLShhKnArcikpLG09LWQqZCtwKihwKzIqcykrbDtlbHNlIHA8PS11PyhkPU1hdGgubWF4KDAsLSgtYSppK3IpKSxwPWQ+MD8taTpNYXRoLm1pbihNYXRoLm1heCgtaSwtcyksaSksbT0tZCpkK3AqKHArMipzKStsKTpwPD11PyhkPTAscD1NYXRoLm1pbihNYXRoLm1heCgtaSwtcyksaSksbT1wKihwKzIqcykrbCk6KGQ9TWF0aC5tYXgoMCwtKGEqaStyKSkscD1kPjA/aTpNYXRoLm1pbihNYXRoLm1heCgtaSwtcyksaSksbT0tZCpkK3AqKHArMipzKStsKTtlbHNlIHA9YT4wPy1pOmksZD1NYXRoLm1heCgwLC0oYSpwK3IpKSxtPS1kKmQrcCoocCsyKnMpK2w7cmV0dXJuIG4mJm4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZCkuYWRkKHRoaXMub3JpZ2luKSxvJiZvLmNvcHkoTmF0KS5tdWx0aXBseVNjYWxhcihwKS5hZGQoVGF0KSxtfWludGVyc2VjdFNwaGVyZSh0LGUpe0FhdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBuPUFhdC5kb3QodGhpcy5kaXJlY3Rpb24pLG89QWF0LmRvdChBYXQpLW4qbixpPXQucmFkaXVzKnQucmFkaXVzO2lmKG8+aSlyZXR1cm4gbnVsbDtjb25zdCBhPU1hdGguc3FydChpLW8pLHI9bi1hLHM9bithO3JldHVybiByPDAmJnM8MD9udWxsOnRoaXMuYXQocjwwP3M6cixlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09ZSlyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3Qgbj0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvZTtyZXR1cm4gbj49MD9uOm51bGx9aW50ZXJzZWN0UGxhbmUodCxlKXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09bj9udWxsOnRoaXMuYXQobixlKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3QgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7cmV0dXJuIDA9PT1lfHx0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmU8MH1pbnRlcnNlY3RCb3godCxlKXtsZXQgbixvLGksYSxyLHM7Y29uc3QgbD0xL3RoaXMuZGlyZWN0aW9uLngsYz0xL3RoaXMuZGlyZWN0aW9uLnksZD0xL3RoaXMuZGlyZWN0aW9uLnoscD10aGlzLm9yaWdpbjtyZXR1cm4gbD49MD8obj0odC5taW4ueC1wLngpKmwsbz0odC5tYXgueC1wLngpKmwpOihuPSh0Lm1heC54LXAueCkqbCxvPSh0Lm1pbi54LXAueCkqbCksYz49MD8oaT0odC5taW4ueS1wLnkpKmMsYT0odC5tYXgueS1wLnkpKmMpOihpPSh0Lm1heC55LXAueSkqYyxhPSh0Lm1pbi55LXAueSkqYyksbj5hfHxpPm8/bnVsbDooKGk+bnx8biE9bikmJihuPWkpLChhPG98fG8hPW8pJiYobz1hKSxkPj0wPyhyPSh0Lm1pbi56LXAueikqZCxzPSh0Lm1heC56LXAueikqZCk6KHI9KHQubWF4LnotcC56KSpkLHM9KHQubWluLnotcC56KSpkKSxuPnN8fHI+bz9udWxsOigocj5ufHxuIT1uKSYmKG49ciksKHM8b3x8byE9bykmJihvPXMpLG88MD9udWxsOnRoaXMuYXQobj49MD9uOm8sZSkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3godCxBYXQpfWludGVyc2VjdFRyaWFuZ2xlKHQsZSxuLG8saSl7SWF0LnN1YlZlY3RvcnMoZSx0KSxIYXQuc3ViVmVjdG9ycyhuLHQpLEZhdC5jcm9zc1ZlY3RvcnMoSWF0LEhhdCk7bGV0IGEscj10aGlzLmRpcmVjdGlvbi5kb3QoRmF0KTtpZihyPjApe2lmKG8pcmV0dXJuIG51bGw7YT0xfWVsc2V7aWYoIShyPDApKXJldHVybiBudWxsO2E9LTEscj0tcn16YXQuc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtjb25zdCBzPWEqdGhpcy5kaXJlY3Rpb24uZG90KEhhdC5jcm9zc1ZlY3RvcnMoemF0LEhhdCkpO2lmKHM8MClyZXR1cm4gbnVsbDtjb25zdCBsPWEqdGhpcy5kaXJlY3Rpb24uZG90KElhdC5jcm9zcyh6YXQpKTtpZihsPDApcmV0dXJuIG51bGw7aWYocytsPnIpcmV0dXJuIG51bGw7Y29uc3QgYz0tYSp6YXQuZG90KEZhdCk7cmV0dXJuIGM8MD9udWxsOnRoaXMuYXQoYy9yLGkpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19Y2xhc3MgQmF0e2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixvLGksYSxyLHMsbCxjLGQscCxtLHUsZixnKXtjb25zdCBoPXRoaXMuZWxlbWVudHM7cmV0dXJuIGhbMF09dCxoWzRdPWUsaFs4XT1uLGhbMTJdPW8saFsxXT1pLGhbNV09YSxoWzldPXIsaFsxM109cyxoWzJdPWwsaFs2XT1jLGhbMTBdPWQsaFsxNF09cCxoWzNdPW0saFs3XT11LGhbMTFdPWYsaFsxNV09Zyx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IEJhdCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sZVs5XT1uWzldLGVbMTBdPW5bMTBdLGVbMTFdPW5bMTFdLGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLGVbMTVdPW5bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChlWzBdLGVbM10sZVs2XSwwLGVbMV0sZVs0XSxlWzddLDAsZVsyXSxlWzVdLGVbOF0sMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RCYXNpcyh0LGUsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDIpLHRoaXN9bWFrZUJhc2lzKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodC54LGUueCxuLngsMCx0LnksZS55LG4ueSwwLHQueixlLnosbi56LDAsMCwwLDAsMSksdGhpc31leHRyYWN0Um90YXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cyxvPTEvVmF0LnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxpPTEvVmF0LnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxhPTEvVmF0LnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gZVswXT1uWzBdKm8sZVsxXT1uWzFdKm8sZVsyXT1uWzJdKm8sZVszXT0wLGVbNF09bls0XSppLGVbNV09bls1XSppLGVbNl09bls2XSppLGVbN109MCxlWzhdPW5bOF0qYSxlWzldPW5bOV0qYSxlWzEwXT1uWzEwXSphLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56LGE9TWF0aC5jb3Mobikscj1NYXRoLnNpbihuKSxzPU1hdGguY29zKG8pLGw9TWF0aC5zaW4obyksYz1NYXRoLmNvcyhpKSxkPU1hdGguc2luKGkpO2lmKCJYWVoiPT09dC5vcmRlcil7Y29uc3QgdD1hKmMsbj1hKmQsbz1yKmMsaT1yKmQ7ZVswXT1zKmMsZVs0XT0tcypkLGVbOF09bCxlWzFdPW4rbypsLGVbNV09dC1pKmwsZVs5XT0tcipzLGVbMl09aS10KmwsZVs2XT1vK24qbCxlWzEwXT1hKnN9ZWxzZSBpZigiWVhaIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dCtpKnIsZVs0XT1vKnItbixlWzhdPWEqbCxlWzFdPWEqZCxlWzVdPWEqYyxlWzldPS1yLGVbMl09bipyLW8sZVs2XT1pK3QqcixlWzEwXT1hKnN9ZWxzZSBpZigiWlhZIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cypkLG89bCpjLGk9bCpkO2VbMF09dC1pKnIsZVs0XT0tYSpkLGVbOF09bytuKnIsZVsxXT1uK28qcixlWzVdPWEqYyxlWzldPWktdCpyLGVbMl09LWEqbCxlWzZdPXIsZVsxMF09YSpzfWVsc2UgaWYoIlpZWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqYyxuPWEqZCxvPXIqYyxpPXIqZDtlWzBdPXMqYyxlWzRdPW8qbC1uLGVbOF09dCpsK2ksZVsxXT1zKmQsZVs1XT1pKmwrdCxlWzldPW4qbC1vLGVbMl09LWwsZVs2XT1yKnMsZVsxMF09YSpzfWVsc2UgaWYoIllaWCI9PT10Lm9yZGVyKXtjb25zdCB0PWEqcyxuPWEqbCxvPXIqcyxpPXIqbDtlWzBdPXMqYyxlWzRdPWktdCpkLGVbOF09bypkK24sZVsxXT1kLGVbNV09YSpjLGVbOV09LXIqYyxlWzJdPS1sKmMsZVs2XT1uKmQrbyxlWzEwXT10LWkqZH1lbHNlIGlmKCJYWlkiPT09dC5vcmRlcil7Y29uc3QgdD1hKnMsbj1hKmwsbz1yKnMsaT1yKmw7ZVswXT1zKmMsZVs0XT0tZCxlWzhdPWwqYyxlWzFdPXQqZCtpLGVbNV09YSpjLGVbOV09bipkLW8sZVsyXT1vKmQtbixlWzZdPXIqYyxlWzEwXT1pKmQrdH1yZXR1cm4gZVszXT0wLGVbN109MCxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKFVhdCx0LEdhdCl9bG9va0F0KHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIHFhdC5zdWJWZWN0b3JzKHQsZSksMD09PXFhdC5sZW5ndGhTcSgpJiYocWF0Lno9MSkscWF0Lm5vcm1hbGl6ZSgpLFdhdC5jcm9zc1ZlY3RvcnMobixxYXQpLDA9PT1XYXQubGVuZ3RoU3EoKSYmKDE9PT1NYXRoLmFicyhuLnopP3FhdC54Kz0xZS00OnFhdC56Kz0xZS00LHFhdC5ub3JtYWxpemUoKSxXYXQuY3Jvc3NWZWN0b3JzKG4scWF0KSksV2F0Lm5vcm1hbGl6ZSgpLFlhdC5jcm9zc1ZlY3RvcnMocWF0LFdhdCksb1swXT1XYXQueCxvWzRdPVlhdC54LG9bOF09cWF0Lngsb1sxXT1XYXQueSxvWzVdPVlhdC55LG9bOV09cWF0Lnksb1syXT1XYXQueixvWzZdPVlhdC56LG9bMTBdPXFhdC56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5TWF0cmljZXModCxlKSk6dGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsbz1lLmVsZW1lbnRzLGk9dGhpcy5lbGVtZW50cyxhPW5bMF0scj1uWzRdLHM9bls4XSxsPW5bMTJdLGM9blsxXSxkPW5bNV0scD1uWzldLG09blsxM10sdT1uWzJdLGY9bls2XSxnPW5bMTBdLGg9blsxNF0sYj1uWzNdLHk9bls3XSxfPW5bMTFdLEM9blsxNV0sTT1vWzBdLHY9b1s0XSx4PW9bOF0sTz1vWzEyXSxQPW9bMV0sdz1vWzVdLGs9b1s5XSxTPW9bMTNdLEQ9b1syXSxFPW9bNl0sUj1vWzEwXSxBPW9bMTRdLFQ9b1szXSxOPW9bN10sej1vWzExXSxJPW9bMTVdO3JldHVybiBpWzBdPWEqTStyKlArcypEK2wqVCxpWzRdPWEqdityKncrcypFK2wqTixpWzhdPWEqeCtyKmsrcypSK2wqeixpWzEyXT1hKk8rcipTK3MqQStsKkksaVsxXT1jKk0rZCpQK3AqRCttKlQsaVs1XT1jKnYrZCp3K3AqRSttKk4saVs5XT1jKngrZCprK3AqUittKnosaVsxM109YypPK2QqUytwKkErbSpJLGlbMl09dSpNK2YqUCtnKkQraCpULGlbNl09dSp2K2YqdytnKkUraCpOLGlbMTBdPXUqeCtmKmsrZypSK2gqeixpWzE0XT11Kk8rZipTK2cqQStoKkksaVszXT1iKk0reSpQK18qRCtDKlQsaVs3XT1iKnYreSp3K18qRStDKk4saVsxMV09Yip4K3kqaytfKlIrQyp6LGlbMTVdPWIqTyt5KlMrXypBK0MqSSx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzRdKj10LGVbOF0qPXQsZVsxMl0qPXQsZVsxXSo9dCxlWzVdKj10LGVbOV0qPXQsZVsxM10qPXQsZVsyXSo9dCxlWzZdKj10LGVbMTBdKj10LGVbMTRdKj10LGVbM10qPXQsZVs3XSo9dCxlWzExXSo9dCxlWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbNF0sbz10WzhdLGk9dFsxMl0sYT10WzFdLHI9dFs1XSxzPXRbOV0sbD10WzEzXSxjPXRbMl0sZD10WzZdLHA9dFsxMF0sbT10WzE0XTtyZXR1cm4gdFszXSooK2kqcypkLW8qbCpkLWkqcipwK24qbCpwK28qciptLW4qcyptKSt0WzddKigrZSpzKm0tZSpsKnAraSphKnAtbyphKm0rbypsKmMtaSpzKmMpK3RbMTFdKigrZSpsKmQtZSpyKm0taSphKmQrbiphKm0raSpyKmMtbipsKmMpK3RbMTVdKigtbypyKmMtZSpzKmQrZSpyKnArbyphKmQtbiphKnArbipzKmMpfXRyYW5zcG9zZSgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztsZXQgZTtyZXR1cm4gZT10WzFdLHRbMV09dFs0XSx0WzRdPWUsZT10WzJdLHRbMl09dFs4XSx0WzhdPWUsZT10WzZdLHRbNl09dFs5XSx0WzldPWUsZT10WzNdLHRbM109dFsxMl0sdFsxMl09ZSxlPXRbN10sdFs3XT10WzEzXSx0WzEzXT1lLGU9dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09ZSx0aGlzfXNldFBvc2l0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhvWzEyXT10Lngsb1sxM109dC55LG9bMTRdPXQueik6KG9bMTJdPXQsb1sxM109ZSxvWzE0XT1uKSx0aGlzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLG89dFsyXSxpPXRbM10sYT10WzRdLHI9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSxkPXRbOV0scD10WzEwXSxtPXRbMTFdLHU9dFsxMl0sZj10WzEzXSxnPXRbMTRdLGg9dFsxNV0sYj1kKmcqbC1mKnAqbCtmKnMqbS1yKmcqbS1kKnMqaCtyKnAqaCx5PXUqcCpsLWMqZypsLXUqcyptK2EqZyptK2MqcypoLWEqcCpoLF89YypmKmwtdSpkKmwrdSpyKm0tYSpmKm0tYypyKmgrYSpkKmgsQz11KmQqcy1jKmYqcy11KnIqcCthKmYqcCtjKnIqZy1hKmQqZyxNPWUqYituKnkrbypfK2kqQztpZigwPT09TSlyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3Qgdj0xL007cmV0dXJuIHRbMF09Yip2LHRbMV09KGYqcCppLWQqZyppLWYqbyptK24qZyptK2QqbypoLW4qcCpoKSp2LHRbMl09KHIqZyppLWYqcyppK2YqbypsLW4qZypsLXIqbypoK24qcypoKSp2LHRbM109KGQqcyppLXIqcCppLWQqbypsK24qcCpsK3IqbyptLW4qcyptKSp2LHRbNF09eSp2LHRbNV09KGMqZyppLXUqcCppK3UqbyptLWUqZyptLWMqbypoK2UqcCpoKSp2LHRbNl09KHUqcyppLWEqZyppLXUqbypsK2UqZypsK2EqbypoLWUqcypoKSp2LHRbN109KGEqcCppLWMqcyppK2MqbypsLWUqcCpsLWEqbyptK2UqcyptKSp2LHRbOF09Xyp2LHRbOV09KHUqZCppLWMqZippLXUqbiptK2UqZiptK2MqbipoLWUqZCpoKSp2LHRbMTBdPShhKmYqaS11KnIqaSt1Km4qbC1lKmYqbC1hKm4qaCtlKnIqaCkqdix0WzExXT0oYypyKmktYSpkKmktYypuKmwrZSpkKmwrYSpuKm0tZSpyKm0pKnYsdFsxMl09Qyp2LHRbMTNdPShjKmYqby11KmQqbyt1Km4qcC1lKmYqcC1jKm4qZytlKmQqZykqdix0WzE0XT0odSpyKm8tYSpmKm8tdSpuKnMrZSpmKnMrYSpuKmctZSpyKmcpKnYsdFsxNV09KGEqZCpvLWMqcipvK2MqbipzLWUqZCpzLWEqbipwK2UqcipwKSp2LHRoaXN9c2NhbGUodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LG89dC55LGk9dC56O3JldHVybiBlWzBdKj1uLGVbNF0qPW8sZVs4XSo9aSxlWzFdKj1uLGVbNV0qPW8sZVs5XSo9aSxlWzJdKj1uLGVbNl0qPW8sZVsxMF0qPWksZVszXSo9bixlWzddKj1vLGVbMTFdKj1pLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSx0WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSx0WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdKSl9bWFrZVRyYW5zbGF0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxlLDAsMCwxLG4sMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsMCxuLDAsMCwxLDAsMCwtbiwwLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLC1uLDAsMCxuLGUsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxvPU1hdGguc2luKGUpLGk9MS1uLGE9dC54LHI9dC55LHM9dC56LGw9aSphLGM9aSpyO3JldHVybiB0aGlzLnNldChsKmErbixsKnItbypzLGwqcytvKnIsMCxsKnIrbypzLGMqcituLGMqcy1vKmEsMCxsKnMtbypyLGMqcytvKmEsaSpzKnMrbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLGUsMCwwLDAsMCxuLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxlLG4sbyxpLGEpe3JldHVybiB0aGlzLnNldCgxLG4saSwwLHQsMSxhLDAsZSxvLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxlLG4pe2NvbnN0IG89dGhpcy5lbGVtZW50cyxpPWUuX3gsYT1lLl95LHI9ZS5feixzPWUuX3csbD1pK2ksYz1hK2EsZD1yK3IscD1pKmwsbT1pKmMsdT1pKmQsZj1hKmMsZz1hKmQsaD1yKmQsYj1zKmwseT1zKmMsXz1zKmQsQz1uLngsTT1uLnksdj1uLno7cmV0dXJuIG9bMF09KDEtKGYraCkpKkMsb1sxXT0obStfKSpDLG9bMl09KHUteSkqQyxvWzNdPTAsb1s0XT0obS1fKSpNLG9bNV09KDEtKHAraCkpKk0sb1s2XT0oZytiKSpNLG9bN109MCxvWzhdPSh1K3kpKnYsb1s5XT0oZy1iKSp2LG9bMTBdPSgxLShwK2YpKSp2LG9bMTFdPTAsb1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10Lnosb1sxNV09MSx0aGlzfWRlY29tcG9zZSh0LGUsbil7Y29uc3Qgbz10aGlzLmVsZW1lbnRzO2xldCBpPVZhdC5zZXQob1swXSxvWzFdLG9bMl0pLmxlbmd0aCgpO2NvbnN0IGE9VmF0LnNldChvWzRdLG9bNV0sb1s2XSkubGVuZ3RoKCkscj1WYXQuc2V0KG9bOF0sb1s5XSxvWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihpPS1pKSx0Lng9b1sxMl0sdC55PW9bMTNdLHQuej1vWzE0XSxqYXQuY29weSh0aGlzKTtjb25zdCBzPTEvaSxsPTEvYSxjPTEvcjtyZXR1cm4gamF0LmVsZW1lbnRzWzBdKj1zLGphdC5lbGVtZW50c1sxXSo9cyxqYXQuZWxlbWVudHNbMl0qPXMsamF0LmVsZW1lbnRzWzRdKj1sLGphdC5lbGVtZW50c1s1XSo9bCxqYXQuZWxlbWVudHNbNl0qPWwsamF0LmVsZW1lbnRzWzhdKj1jLGphdC5lbGVtZW50c1s5XSo9YyxqYXQuZWxlbWVudHNbMTBdKj1jLGUuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGphdCksbi54PWksbi55PWEsbi56PXIsdGhpc31tYWtlUGVyc3BlY3RpdmUodCxlLG4sbyxpLGEpe3ZvaWQgMD09PWEmJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTIqaS8obi1vKSxsPShlK3QpLyhlLXQpLGM9KG4rbykvKG4tbyksZD0tKGEraSkvKGEtaSkscD0tMiphKmkvKGEtaSk7cmV0dXJuIHJbMF09MippLyhlLXQpLHJbNF09MCxyWzhdPWwsclsxMl09MCxyWzFdPTAscls1XT1zLHJbOV09YyxyWzEzXT0wLHJbMl09MCxyWzZdPTAsclsxMF09ZCxyWzE0XT1wLHJbM109MCxyWzddPTAsclsxMV09LTEsclsxNV09MCx0aGlzfW1ha2VPcnRob2dyYXBoaWModCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5lbGVtZW50cyxzPTEvKGUtdCksbD0xLyhuLW8pLGM9MS8oYS1pKSxkPShlK3QpKnMscD0obitvKSpsLG09KGEraSkqYztyZXR1cm4gclswXT0yKnMscls0XT0wLHJbOF09MCxyWzEyXT0tZCxyWzFdPTAscls1XT0yKmwscls5XT0wLHJbMTNdPS1wLHJbMl09MCxyWzZdPTAsclsxMF09LTIqYyxyWzE0XT0tbSxyWzNdPTAscls3XT0wLHJbMTFdPTAsclsxNV09MSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8MTY7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjwxNjtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdFtlKzldPW5bOV0sdFtlKzEwXT1uWzEwXSx0W2UrMTFdPW5bMTFdLHRbZSsxMl09blsxMl0sdFtlKzEzXT1uWzEzXSx0W2UrMTRdPW5bMTRdLHRbZSsxNV09blsxNV0sdH19QmF0LnByb3RvdHlwZS5pc01hdHJpeDQ9ITA7Y29uc3QgVmF0PW5ldyBjYXQsamF0PW5ldyBCYXQsVWF0PW5ldyBjYXQoMCwwLDApLEdhdD1uZXcgY2F0KDEsMSwxKSxXYXQ9bmV3IGNhdCxZYXQ9bmV3IGNhdCxxYXQ9bmV3IGNhdCxaYXQ9bmV3IEJhdCxYYXQ9bmV3IGxhdDtjbGFzcyBLYXR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsbz1LYXQuRGVmYXVsdE9yZGVyKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vfWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCBvcmRlcigpe3JldHVybiB0aGlzLl9vcmRlcn1zZXQgb3JkZXIodCl7dGhpcy5fb3JkZXI9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxuLG89dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl9vcmRlcj1vLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX29yZGVyKX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQuX3gsdGhpcy5feT10Ll95LHRoaXMuX3o9dC5feix0aGlzLl9vcmRlcj10Ll9vcmRlcix0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUm90YXRpb25NYXRyaXgodCxlPXRoaXMuX29yZGVyLG49ITApe2NvbnN0IG89dC5lbGVtZW50cyxpPW9bMF0sYT1vWzRdLHI9b1s4XSxzPW9bMV0sbD1vWzVdLGM9b1s5XSxkPW9bMl0scD1vWzZdLG09b1sxMF07c3dpdGNoKGUpe2Nhc2UiWFlaIjp0aGlzLl95PU1hdGguYXNpbihaaXQociwtMSwxKSksTWF0aC5hYnMocik8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsaSkpOih0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PU1hdGguYXNpbigtWml0KGMsLTEsMSkpLE1hdGguYWJzKGMpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIocixtKSx0aGlzLl96PU1hdGguYXRhbjIocyxsKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxpKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihaaXQocCwtMSwxKSksTWF0aC5hYnMocCk8Ljk5OTk5OTk/KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxtKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpOih0aGlzLl95PTAsdGhpcy5fej1NYXRoLmF0YW4yKHMsaSkpO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl95PU1hdGguYXNpbigtWml0KGQsLTEsMSkpLE1hdGguYWJzKGQpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxtKSx0aGlzLl96PU1hdGguYXRhbjIocyxpKSk6KHRoaXMuX3g9MCx0aGlzLl96PU1hdGguYXRhbjIoLWEsbCkpO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl96PU1hdGguYXNpbihaaXQocywtMSwxKSksTWF0aC5hYnMocyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxsKSx0aGlzLl95PU1hdGguYXRhbjIoLWQsaSkpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKHIsbSkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtWml0KGEsLTEsMSkpLE1hdGguYWJzKGEpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIocCxsKSx0aGlzLl95PU1hdGguYXRhbjIocixpKSk6KHRoaXMuX3g9TWF0aC5hdGFuMigtYyxtKSx0aGlzLl95PTApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5FdWxlcjogLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrZSl9cmV0dXJuIHRoaXMuX29yZGVyPWUsITA9PT1uJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tUXVhdGVybmlvbih0LGUsbil7cmV0dXJuIFphdC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLnNldEZyb21Sb3RhdGlvbk1hdHJpeChaYXQsZSxuKX1zZXRGcm9tVmVjdG9yMyh0LGU9dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLnNldCh0LngsdC55LHQueixlKX1yZW9yZGVyKHQpe3JldHVybiBYYXQuc2V0RnJvbUV1bGVyKHRoaXMpLHRoaXMuc2V0RnJvbVF1YXRlcm5pb24oWGF0LHQpfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fb3JkZXI9PT10aGlzLl9vcmRlcn1mcm9tQXJyYXkodCl7cmV0dXJuIHRoaXMuX3g9dFswXSx0aGlzLl95PXRbMV0sdGhpcy5fej10WzJdLHZvaWQgMCE9PXRbM10mJih0aGlzLl9vcmRlcj10WzNdKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl9vcmRlcix0fXRvVmVjdG9yMyh0KXtyZXR1cm4gdD90LnNldCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feik6bmV3IGNhdCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feil9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319S2F0LnByb3RvdHlwZS5pc0V1bGVyPSEwLEthdC5EZWZhdWx0T3JkZXI9IlhZWiIsS2F0LlJvdGF0aW9uT3JkZXJzPVsiWFlaIiwiWVpYIiwiWlhZIiwiWFpZIiwiWVhaIiwiWllYIl07Y2xhc3MgSmF0e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXNrPTF9c2V0KHQpe3RoaXMubWFzaz0xPDx0fDB9ZW5hYmxlKHQpe3RoaXMubWFza3w9MTw8dHwwfWVuYWJsZUFsbCgpe3RoaXMubWFzaz0tMX10b2dnbGUodCl7dGhpcy5tYXNrXj0xPDx0fDB9ZGlzYWJsZSh0KXt0aGlzLm1hc2smPX4oMTw8dHwwKX1kaXNhYmxlQWxsKCl7dGhpcy5tYXNrPTB9dGVzdCh0KXtyZXR1cm4gMCE9KHRoaXMubWFzayZ0Lm1hc2spfX1sZXQgUWF0PTA7Y29uc3QgJGF0PW5ldyBjYXQsdHJ0PW5ldyBsYXQsZXJ0PW5ldyBCYXQsbnJ0PW5ldyBjYXQsb3J0PW5ldyBjYXQsaXJ0PW5ldyBjYXQsYXJ0PW5ldyBsYXQscnJ0PW5ldyBjYXQoMSwwLDApLHNydD1uZXcgY2F0KDAsMSwwKSxscnQ9bmV3IGNhdCgwLDAsMSksY3J0PXt0eXBlOiJhZGRlZCJ9LGRydD17dHlwZToicmVtb3ZlZCJ9O2NsYXNzIHBydCBleHRlbmRzIFVpdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6UWF0Kyt9KSx0aGlzLnV1aWQ9cWl0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iT2JqZWN0M0QiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnVwPXBydC5EZWZhdWx0VXAuY2xvbmUoKTtjb25zdCB0PW5ldyBjYXQsZT1uZXcgS2F0LG49bmV3IGxhdCxvPW5ldyBjYXQoMSwxLDEpO2UuX29uQ2hhbmdlKChmdW5jdGlvbiBpKCl7bi5zZXRGcm9tRXVsZXIoZSwhMSl9KSksbi5fb25DaGFuZ2UoKGZ1bmN0aW9uIGEoKXtlLnNldEZyb21RdWF0ZXJuaW9uKG4sdm9pZCAwLCExKX0pKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwb3NpdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dH0scm90YXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmV9LHF1YXRlcm5pb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm59LHNjYWxlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpvfSxtb2RlbFZpZXdNYXRyaXg6e3ZhbHVlOm5ldyBCYXR9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3ICRpdH19KSx0aGlzLm1hdHJpeD1uZXcgQmF0LHRoaXMubWF0cml4V29ybGQ9bmV3IEJhdCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9cHJ0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgSmF0LHRoaXMudmlzaWJsZT0hMCx0aGlzLmNhc3RTaGFkb3c9ITEsdGhpcy5yZWNlaXZlU2hhZG93PSExLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMCx0aGlzLnJlbmRlck9yZGVyPTAsdGhpcy5hbmltYXRpb25zPVtdLHRoaXMudXNlckRhdGE9e319b25CZWZvcmVSZW5kZXIoKXt9b25BZnRlclJlbmRlcigpe31hcHBseU1hdHJpeDQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMubWF0cml4LnByZW11bHRpcGx5KHQpLHRoaXMubWF0cml4LmRlY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKX1hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0KSx0aGlzfXNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZSh0LGUpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKHQsZSl9c2V0Um90YXRpb25Gcm9tRXVsZXIodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21FdWxlcih0LCEwKX1zZXRSb3RhdGlvbkZyb21NYXRyaXgodCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KX1zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpe3RoaXMucXVhdGVybmlvbi5jb3B5KHQpfXJvdGF0ZU9uQXhpcyh0LGUpe3JldHVybiB0cnQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5tdWx0aXBseSh0cnQpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4gdHJ0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkodHJ0KSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKHJydCx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhzcnQsdCl9cm90YXRlWih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMobHJ0LHQpfXRyYW5zbGF0ZU9uQXhpcyh0LGUpe3JldHVybiAkYXQuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZCgkYXQubXVsdGlwbHlTY2FsYXIoZSkpLHRoaXN9dHJhbnNsYXRlWCh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMocnJ0LHQpfXRyYW5zbGF0ZVkodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKHNydCx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhscnQsdCl9bG9jYWxUb1dvcmxkKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX13b3JsZFRvTG9jYWwodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KGVydC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX1sb29rQXQodCxlLG4pe3QuaXNWZWN0b3IzP25ydC5jb3B5KHQpOm5ydC5zZXQodCxlLG4pO2NvbnN0IG89dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksb3J0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/ZXJ0Lmxvb2tBdChvcnQsbnJ0LHRoaXMudXApOmVydC5sb29rQXQobnJ0LG9ydCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KGVydCksbyYmKGVydC5leHRyYWN0Um90YXRpb24oby5tYXRyaXhXb3JsZCksdHJ0LnNldEZyb21Sb3RhdGlvbk1hdHJpeChlcnQpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0cnQuaW52ZXJ0KCkpKX1hZGQodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMuYWRkKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQ9PT10aGlzPyhjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLHQpLHRoaXMpOih0JiZ0LmlzT2JqZWN0M0Q/KG51bGwhPT10LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpLHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHQuZGlzcGF0Y2hFdmVudChjcnQpKTpjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuT2JqZWN0M0QuIix0KSx0aGlzKX1yZW1vdmUodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9Y29uc3QgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuLTEhPT1lJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShlLDEpLHQuZGlzcGF0Y2hFdmVudChkcnQpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtjb25zdCB0PXRoaXMucGFyZW50O3JldHVybiBudWxsIT09dCYmdC5yZW1vdmUodGhpcyksdGhpc31jbGVhcigpe2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPXRoaXMuY2hpbGRyZW5bdF07ZS5wYXJlbnQ9bnVsbCxlLmRpc3BhdGNoRXZlbnQoZHJ0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfWF0dGFjaCh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksZXJ0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbnVsbCE9PXQucGFyZW50JiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLGVydC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KGVydCksdGhpcy5hZGQodCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCksdGhpc31nZXRPYmplY3RCeUlkKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIix0KX1nZXRPYmplY3RCeU5hbWUodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9Z2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbj0wLG89dGhpcy5jaGlsZHJlbi5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxlKTtpZih2b2lkIDAhPT1vKXJldHVybiBvfX1nZXRXb3JsZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX1nZXRXb3JsZFF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKG9ydCx0LGlydCksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShvcnQsYXJ0LHQpLHR9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldChlWzhdLGVbOV0sZVsxMF0pLm5vcm1hbGl6ZSgpfXJheWNhc3QoKXt9dHJhdmVyc2UodCl7dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWVbbl0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKCExPT09dGhpcy52aXNpYmxlKXJldHVybjt0KHRoaXMpO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspZVtuXS50cmF2ZXJzZVZpc2libGUodCl9dHJhdmVyc2VBbmNlc3RvcnModCl7Y29uc3QgZT10aGlzLnBhcmVudDtudWxsIT09ZSYmKHQoZSksZS50cmF2ZXJzZUFuY2VzdG9ycyh0KSl9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9dXBkYXRlTWF0cml4V29ybGQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLCh0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGV8fHQpJiYobnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdD0hMCk7Y29uc3QgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rKyllW25dLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7Y29uc3Qgbj10aGlzLnBhcmVudDtpZighMD09PXQmJm51bGwhPT1uJiZuLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksbnVsbD09PXRoaXMucGFyZW50P3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSwhMD09PWUpe2NvbnN0IHQ9dGhpcy5jaGlsZHJlbjtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCl9fXRvSlNPTih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxuPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IG89e307ZnVuY3Rpb24gaShlLG4pe3JldHVybiB2b2lkIDA9PT1lW24udXVpZF0mJihlW24udXVpZF09bi50b0pTT04odCkpLG4udXVpZH1pZihvLnV1aWQ9dGhpcy51dWlkLG8udHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihvLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKG8uY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihvLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoby52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKG8uZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihvLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG8udXNlckRhdGE9dGhpcy51c2VyRGF0YSksby5sYXllcnM9dGhpcy5sYXllcnMubWFzayxvLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihvLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoby50eXBlPSJJbnN0YW5jZWRNZXNoIixvLmNvdW50PXRoaXMuY291bnQsby5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpLG51bGwhPT10aGlzLmluc3RhbmNlQ29sb3ImJihvLmluc3RhbmNlQ29sb3I9dGhpcy5pbnN0YW5jZUNvbG9yLnRvSlNPTigpKSksdGhpcy5pc1NjZW5lKXRoaXMuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZC5pc0NvbG9yP28uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKCk6dGhpcy5iYWNrZ3JvdW5kLmlzVGV4dHVyZSYmKG8uYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKHQpLnV1aWQpKSx0aGlzLmVudmlyb25tZW50JiZ0aGlzLmVudmlyb25tZW50LmlzVGV4dHVyZSYmKG8uZW52aXJvbm1lbnQ9dGhpcy5lbnZpcm9ubWVudC50b0pTT04odCkudXVpZCk7ZWxzZSBpZih0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe28uZ2VvbWV0cnk9aSh0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3QgZT10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09ZS5zaGFwZXMpe2NvbnN0IG49ZS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspaSh0LnNoYXBlcyxuW2VdKTtlbHNlIGkodC5zaGFwZXMsbil9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKG8uYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxvLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx2b2lkIDAhPT10aGlzLnNrZWxldG9uJiYoaSh0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxvLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxvPXRoaXMubWF0ZXJpYWwubGVuZ3RoO248bztuKyspZS5wdXNoKGkodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbFtuXSkpO28ubWF0ZXJpYWw9ZX1lbHNlIG8ubWF0ZXJpYWw9aSh0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZih0aGlzLmNoaWxkcmVuLmxlbmd0aD4wKXtvLmNoaWxkcmVuPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKW8uY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2VdLnRvSlNPTih0KS5vYmplY3QpfWlmKHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCl7by5hbmltYXRpb25zPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5hbmltYXRpb25zLmxlbmd0aDtlKyspby5hbmltYXRpb25zLnB1c2goaSh0LmFuaW1hdGlvbnMsdGhpcy5hbmltYXRpb25zW2VdKSl9aWYoZSl7Y29uc3QgZT1hKHQuZ2VvbWV0cmllcyksbz1hKHQubWF0ZXJpYWxzKSxpPWEodC50ZXh0dXJlcykscj1hKHQuaW1hZ2VzKSxzPWEodC5zaGFwZXMpLGw9YSh0LnNrZWxldG9ucyksYz1hKHQuYW5pbWF0aW9ucyk7ZS5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1lKSxvLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9byksaS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9aSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpLHMubGVuZ3RoPjAmJihuLnNoYXBlcz1zKSxsLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9bCksYy5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1jKX1yZXR1cm4gbi5vYmplY3Q9byxuO2Z1bmN0aW9uIGEodCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ZGVsZXRlIG8ubWV0YWRhdGEsZS5wdXNoKG8pfXJldHVybiBlfX1jbG9uZSh0KXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyx0KX1jb3B5KHQsZT0hMCl7aWYodGhpcy5uYW1lPXQubmFtZSx0aGlzLnVwLmNvcHkodC51cCksdGhpcy5wb3NpdGlvbi5jb3B5KHQucG9zaXRpb24pLHRoaXMucm90YXRpb24ub3JkZXI9dC5yb3RhdGlvbi5vcmRlcix0aGlzLnF1YXRlcm5pb24uY29weSh0LnF1YXRlcm5pb24pLHRoaXMuc2NhbGUuY29weSh0LnNjYWxlKSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCksdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9dC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlLHRoaXMubGF5ZXJzLm1hc2s9dC5sYXllcnMubWFzayx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMuY2FzdFNoYWRvdz10LmNhc3RTaGFkb3csdGhpcy5yZWNlaXZlU2hhZG93PXQucmVjZWl2ZVNoYWRvdyx0aGlzLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkLHRoaXMucmVuZGVyT3JkZXI9dC5yZW5kZXJPcmRlcix0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLCEwPT09ZSlmb3IobGV0IGU9MDtlPHQuY2hpbGRyZW4ubGVuZ3RoO2UrKyl0aGlzLmFkZCh0LmNoaWxkcmVuW2VdLmNsb25lKCkpO3JldHVybiB0aGlzfX1wcnQuRGVmYXVsdFVwPW5ldyBjYXQoMCwxLDApLHBydC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZT0hMCxwcnQucHJvdG90eXBlLmlzT2JqZWN0M0Q9ITA7Y29uc3QgbXJ0PW5ldyBjYXQsdXJ0PW5ldyBjYXQsZnJ0PW5ldyBjYXQsZ3J0PW5ldyBjYXQsaHJ0PW5ldyBjYXQsYnJ0PW5ldyBjYXQseXJ0PW5ldyBjYXQsX3J0PW5ldyBjYXQsQ3J0PW5ldyBjYXQsTXJ0PW5ldyBjYXQ7Y2xhc3MgdnJ0e2NvbnN0cnVjdG9yKHQ9bmV3IGNhdCxlPW5ldyBjYXQsbj1uZXcgY2F0KXt0aGlzLmE9dCx0aGlzLmI9ZSx0aGlzLmM9bn1zdGF0aWMgZ2V0Tm9ybWFsKHQsZSxuLG8pe28uc3ViVmVjdG9ycyhuLGUpLG1ydC5zdWJWZWN0b3JzKHQsZSksby5jcm9zcyhtcnQpO2NvbnN0IGk9by5sZW5ndGhTcSgpO3JldHVybiBpPjA/by5tdWx0aXBseVNjYWxhcigxL01hdGguc3FydChpKSk6by5zZXQoMCwwLDApfXN0YXRpYyBnZXRCYXJ5Y29vcmQodCxlLG4sbyxpKXttcnQuc3ViVmVjdG9ycyhvLGUpLHVydC5zdWJWZWN0b3JzKG4sZSksZnJ0LnN1YlZlY3RvcnModCxlKTtjb25zdCBhPW1ydC5kb3QobXJ0KSxyPW1ydC5kb3QodXJ0KSxzPW1ydC5kb3QoZnJ0KSxsPXVydC5kb3QodXJ0KSxjPXVydC5kb3QoZnJ0KSxkPWEqbC1yKnI7aWYoMD09PWQpcmV0dXJuIGkuc2V0KC0yLC0xLC0xKTtjb25zdCBwPTEvZCxtPShsKnMtcipjKSpwLHU9KGEqYy1yKnMpKnA7cmV0dXJuIGkuc2V0KDEtbS11LHUsbSl9c3RhdGljIGNvbnRhaW5zUG9pbnQodCxlLG4sbyl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLG8sZ3J0KSxncnQueD49MCYmZ3J0Lnk+PTAmJmdydC54K2dydC55PD0xfXN0YXRpYyBnZXRVVih0LGUsbixvLGksYSxyLHMpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbixvLGdydCkscy5zZXQoMCwwKSxzLmFkZFNjYWxlZFZlY3RvcihpLGdydC54KSxzLmFkZFNjYWxlZFZlY3RvcihhLGdydC55KSxzLmFkZFNjYWxlZFZlY3RvcihyLGdydC56KSxzfXN0YXRpYyBpc0Zyb250RmFjaW5nKHQsZSxuLG8pe3JldHVybiBtcnQuc3ViVmVjdG9ycyhuLGUpLHVydC5zdWJWZWN0b3JzKHQsZSksbXJ0LmNyb3NzKHVydCkuZG90KG8pPDB9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5hLmNvcHkodCksdGhpcy5iLmNvcHkoZSksdGhpcy5jLmNvcHkobiksdGhpc31zZXRGcm9tUG9pbnRzQW5kSW5kaWNlcyh0LGUsbixvKXtyZXR1cm4gdGhpcy5hLmNvcHkodFtlXSksdGhpcy5iLmNvcHkodFtuXSksdGhpcy5jLmNvcHkodFtvXSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmEuY29weSh0LmEpLHRoaXMuYi5jb3B5KHQuYiksdGhpcy5jLmNvcHkodC5jKSx0aGlzfWdldEFyZWEoKXtyZXR1cm4gbXJ0LnN1YlZlY3RvcnModGhpcy5jLHRoaXMuYiksdXJ0LnN1YlZlY3RvcnModGhpcy5hLHRoaXMuYiksLjUqbXJ0LmNyb3NzKHVydCkubGVuZ3RoKCl9Z2V0TWlkcG9pbnQodCl7cmV0dXJuIHQuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfWdldE5vcm1hbCh0KXtyZXR1cm4gdnJ0LmdldE5vcm1hbCh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1nZXRQbGFuZSh0KXtyZXR1cm4gdC5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfWdldEJhcnljb29yZCh0LGUpe3JldHVybiB2cnQuZ2V0QmFyeWNvb3JkKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSl9Z2V0VVYodCxlLG4sbyxpKXtyZXR1cm4gdnJ0LmdldFVWKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSxuLG8saSl9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gdnJ0LmNvbnRhaW5zUG9pbnQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9aXNGcm9udEZhY2luZyh0KXtyZXR1cm4gdnJ0LmlzRnJvbnRGYWNpbmcodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2NvbnN0IG49dGhpcy5hLG89dGhpcy5iLGk9dGhpcy5jO2xldCBhLHI7aHJ0LnN1YlZlY3RvcnMobyxuKSxicnQuc3ViVmVjdG9ycyhpLG4pLF9ydC5zdWJWZWN0b3JzKHQsbik7Y29uc3Qgcz1ocnQuZG90KF9ydCksbD1icnQuZG90KF9ydCk7aWYoczw9MCYmbDw9MClyZXR1cm4gZS5jb3B5KG4pO0NydC5zdWJWZWN0b3JzKHQsbyk7Y29uc3QgYz1ocnQuZG90KENydCksZD1icnQuZG90KENydCk7aWYoYz49MCYmZDw9YylyZXR1cm4gZS5jb3B5KG8pO2NvbnN0IHA9cypkLWMqbDtpZihwPD0wJiZzPj0wJiZjPD0wKXJldHVybiBhPXMvKHMtYyksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihocnQsYSk7TXJ0LnN1YlZlY3RvcnModCxpKTtjb25zdCBtPWhydC5kb3QoTXJ0KSx1PWJydC5kb3QoTXJ0KTtpZih1Pj0wJiZtPD11KXJldHVybiBlLmNvcHkoaSk7Y29uc3QgZj1tKmwtcyp1O2lmKGY8PTAmJmw+PTAmJnU8PTApcmV0dXJuIHI9bC8obC11KSxlLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKGJydCxyKTtjb25zdCBnPWMqdS1tKmQ7aWYoZzw9MCYmZC1jPj0wJiZtLXU+PTApcmV0dXJuIHlydC5zdWJWZWN0b3JzKGksbykscj0oZC1jKS8oZC1jKyhtLXUpKSxlLmNvcHkobykuYWRkU2NhbGVkVmVjdG9yKHlydCxyKTtjb25zdCBoPTEvKGcrZitwKTtyZXR1cm4gYT1mKmgscj1wKmgsZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihocnQsYSkuYWRkU2NhbGVkVmVjdG9yKGJydCxyKX1lcXVhbHModCl7cmV0dXJuIHQuYS5lcXVhbHModGhpcy5hKSYmdC5iLmVxdWFscyh0aGlzLmIpJiZ0LmMuZXF1YWxzKHRoaXMuYyl9fWxldCB4cnQ9MDtjbGFzcyBPcnQgZXh0ZW5kcyBVaXR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOnhydCsrfSksdGhpcy51dWlkPXFpdCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik1hdGVyaWFsIix0aGlzLmZvZz0hMCx0aGlzLmJsZW5kaW5nPTEsdGhpcy5zaWRlPTAsdGhpcy52ZXJ0ZXhDb2xvcnM9ITEsdGhpcy5vcGFjaXR5PTEsdGhpcy50cmFuc3BhcmVudD0hMSx0aGlzLmJsZW5kU3JjPTIwNCx0aGlzLmJsZW5kRHN0PTIwNSx0aGlzLmJsZW5kRXF1YXRpb249Y2l0LHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9Myx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPTUxOSx0aGlzLnN0ZW5jaWxSZWY9MCx0aGlzLnN0ZW5jaWxGdW5jTWFzaz0yNTUsdGhpcy5zdGVuY2lsRmFpbD1MaXQsdGhpcy5zdGVuY2lsWkZhaWw9TGl0LHRoaXMuc3RlbmNpbFpQYXNzPUxpdCx0aGlzLnN0ZW5jaWxXcml0ZT0hMSx0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGwsdGhpcy5jbGlwSW50ZXJzZWN0aW9uPSExLHRoaXMuY2xpcFNoYWRvd3M9ITEsdGhpcy5zaGFkb3dTaWRlPW51bGwsdGhpcy5jb2xvcldyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRlc3Q9MCx0aGlzLmFscGhhVG9Db3ZlcmFnZT0hMSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTB9b25CdWlsZCgpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IGUgaW4gdCl7Y29uc3Qgbj10W2VdO2lmKHZvaWQgMD09PW4pe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6ICciK2UrIicgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1pZigic2hhZGluZyI9PT1lKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1uO2NvbnRpbnVlfWNvbnN0IG89dGhpc1tlXTt2b2lkIDAhPT1vP28mJm8uaXNDb2xvcj9vLnNldChuKTpvJiZvLmlzVmVjdG9yMyYmbiYmbi5pc1ZlY3RvcjM/by5jb3B5KG4pOnRoaXNbZV09bjpjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK2UrIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKX19dG9KU09OKHQpe2NvbnN0IGU9dm9pZCAwPT09dHx8InN0cmluZyI9PXR5cGVvZiB0O2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtjb25zdCBuPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiTWF0ZXJpYWwiLGdlbmVyYXRvcjoiTWF0ZXJpYWwudG9KU09OIn19O2Z1bmN0aW9uIG8odCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBvPXRbbl07ZGVsZXRlIG8ubWV0YWRhdGEsZS5wdXNoKG8pfXJldHVybiBlfWlmKG4udXVpZD10aGlzLnV1aWQsbi50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKG4ubmFtZT10aGlzLm5hbWUpLHRoaXMuY29sb3ImJnRoaXMuY29sb3IuaXNDb2xvciYmKG4uY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5yb3VnaG5lc3MmJihuLnJvdWdobmVzcz10aGlzLnJvdWdobmVzcyksdm9pZCAwIT09dGhpcy5tZXRhbG5lc3MmJihuLm1ldGFsbmVzcz10aGlzLm1ldGFsbmVzcyksdGhpcy5zaGVlbiYmdGhpcy5zaGVlbi5pc0NvbG9yJiYobi5zaGVlbj10aGlzLnNoZWVuLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihuLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJjEhPT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYobi5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihuLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkmJihuLnNwZWN1bGFySW50ZW5zaXR5PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXJUaW50JiZ0aGlzLnNwZWN1bGFyVGludC5pc0NvbG9yJiYobi5zcGVjdWxhclRpbnQ9dGhpcy5zcGVjdWxhclRpbnQuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuc2hpbmluZXNzJiYobi5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYobi5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpLHZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYobi5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpLHRoaXMuY2xlYXJjb2F0TWFwJiZ0aGlzLmNsZWFyY29hdE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE1hcD10aGlzLmNsZWFyY29hdE1hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJnRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcCYmdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXROb3JtYWxNYXA9dGhpcy5jbGVhcmNvYXROb3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5jbGVhcmNvYXROb3JtYWxTY2FsZT10aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5tYXAmJnRoaXMubWFwLmlzVGV4dHVyZSYmKG4ubWFwPXRoaXMubWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1hdGNhcCYmdGhpcy5tYXRjYXAuaXNUZXh0dXJlJiYobi5tYXRjYXA9dGhpcy5tYXRjYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuYWxwaGFNYXAmJnRoaXMuYWxwaGFNYXAuaXNUZXh0dXJlJiYobi5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKG4ubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04odCkudXVpZCxuLmxpZ2h0TWFwSW50ZW5zaXR5PXRoaXMubGlnaHRNYXBJbnRlbnNpdHkpLHRoaXMuYW9NYXAmJnRoaXMuYW9NYXAuaXNUZXh0dXJlJiYobi5hb01hcD10aGlzLmFvTWFwLnRvSlNPTih0KS51dWlkLG4uYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSksdGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYobi5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04odCkudXVpZCxuLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSksdGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKG4ubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG4ubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsbi5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKG4uZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTih0KS51dWlkLG4uZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxuLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKSx0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihuLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihuLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhck1hcD10aGlzLnNwZWN1bGFyTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwJiZ0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA9dGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhclRpbnRNYXAmJnRoaXMuc3BlY3VsYXJUaW50TWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJUaW50TWFwPXRoaXMuc3BlY3VsYXJUaW50TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYobi5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsdm9pZCAwIT09dGhpcy5jb21iaW5lJiYobi5jb21iaW5lPXRoaXMuY29tYmluZSkpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXRoaXMucmVmbGVjdGl2aXR5JiYobi5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXRoaXMucmVmcmFjdGlvblJhdGlvJiYobi5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8pLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYobi5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnRyYW5zbWlzc2lvbiYmKG4udHJhbnNtaXNzaW9uPXRoaXMudHJhbnNtaXNzaW9uKSx0aGlzLnRyYW5zbWlzc2lvbk1hcCYmdGhpcy50cmFuc21pc3Npb25NYXAuaXNUZXh0dXJlJiYobi50cmFuc21pc3Npb25NYXA9dGhpcy50cmFuc21pc3Npb25NYXAudG9KU09OKHQpLnV1aWQpLHZvaWQgMCE9PXRoaXMudGhpY2tuZXNzJiYobi50aGlja25lc3M9dGhpcy50aGlja25lc3MpLHRoaXMudGhpY2tuZXNzTWFwJiZ0aGlzLnRoaWNrbmVzc01hcC5pc1RleHR1cmUmJihuLnRoaWNrbmVzc01hcD10aGlzLnRoaWNrbmVzc01hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlJiYobi5hdHRlbnVhdGlvbkRpc3RhbmNlPXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hdHRlbnVhdGlvblRpbnQmJihuLmF0dGVudWF0aW9uVGludD10aGlzLmF0dGVudWF0aW9uVGludC5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaXplJiYobi5zaXplPXRoaXMuc2l6ZSksbnVsbCE9PXRoaXMuc2hhZG93U2lkZSYmKG4uc2hhZG93U2lkZT10aGlzLnNoYWRvd1NpZGUpLHZvaWQgMCE9PXRoaXMuc2l6ZUF0dGVudWF0aW9uJiYobi5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pLDEhPT10aGlzLmJsZW5kaW5nJiYobi5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSwwIT09dGhpcy5zaWRlJiYobi5zaWRlPXRoaXMuc2lkZSksdGhpcy52ZXJ0ZXhDb2xvcnMmJihuLnZlcnRleENvbG9ycz0hMCksdGhpcy5vcGFjaXR5PDEmJihuLm9wYWNpdHk9dGhpcy5vcGFjaXR5KSwhMD09PXRoaXMudHJhbnNwYXJlbnQmJihuLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpLG4uZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jLG4uZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0LG4uZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGUsbi5jb2xvcldyaXRlPXRoaXMuY29sb3JXcml0ZSxuLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxuLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLG4uc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxuLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLG4uc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLG4uc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxuLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxuLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiYwIT09dGhpcy5yb3RhdGlvbiYmKG4ucm90YXRpb249dGhpcy5yb3RhdGlvbiksITA9PT10aGlzLnBvbHlnb25PZmZzZXQmJihuLnBvbHlnb25PZmZzZXQ9ITApLDAhPT10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3ImJihuLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMmJihuLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJjEhPT10aGlzLmxpbmV3aWR0aCYmKG4ubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx2b2lkIDAhPT10aGlzLmRhc2hTaXplJiYobi5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx2b2lkIDAhPT10aGlzLmdhcFNpemUmJihuLmdhcFNpemU9dGhpcy5nYXBTaXplKSx2b2lkIDAhPT10aGlzLnNjYWxlJiYobi5zY2FsZT10aGlzLnNjYWxlKSwhMD09PXRoaXMuZGl0aGVyaW5nJiYobi5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihuLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksITA9PT10aGlzLmFscGhhVG9Db3ZlcmFnZSYmKG4uYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSwhMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYobi5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLCEwPT09dGhpcy53aXJlZnJhbWUmJihuLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG4ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lY2FwJiYobi53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWpvaW4mJihuLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLCEwPT09dGhpcy5mbGF0U2hhZGluZyYmKG4uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksITE9PT10aGlzLnZpc2libGUmJihuLnZpc2libGU9ITEpLCExPT09dGhpcy50b25lTWFwcGVkJiYobi50b25lTWFwcGVkPSExKSwie30iIT09SlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkmJihuLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGUpe2NvbnN0IGU9byh0LnRleHR1cmVzKSxpPW8odC5pbWFnZXMpO2UubGVuZ3RoPjAmJihuLnRleHR1cmVzPWUpLGkubGVuZ3RoPjAmJihuLmltYWdlcz1pKX1yZXR1cm4gbn1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy52ZXJ0ZXhDb2xvcnM9dC52ZXJ0ZXhDb2xvcnMsdGhpcy5vcGFjaXR5PXQub3BhY2l0eSx0aGlzLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQsdGhpcy5ibGVuZFNyYz10LmJsZW5kU3JjLHRoaXMuYmxlbmREc3Q9dC5ibGVuZERzdCx0aGlzLmJsZW5kRXF1YXRpb249dC5ibGVuZEVxdWF0aW9uLHRoaXMuYmxlbmRTcmNBbHBoYT10LmJsZW5kU3JjQWxwaGEsdGhpcy5ibGVuZERzdEFscGhhPXQuYmxlbmREc3RBbHBoYSx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10LmJsZW5kRXF1YXRpb25BbHBoYSx0aGlzLmRlcHRoRnVuYz10LmRlcHRoRnVuYyx0aGlzLmRlcHRoVGVzdD10LmRlcHRoVGVzdCx0aGlzLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2ssdGhpcy5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jLHRoaXMuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYsdGhpcy5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2ssdGhpcy5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsLHRoaXMuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsLHRoaXMuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzLHRoaXMuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlO2NvbnN0IGU9dC5jbGlwcGluZ1BsYW5lcztsZXQgbj1udWxsO2lmKG51bGwhPT1lKXtjb25zdCB0PWUubGVuZ3RoO249bmV3IEFycmF5KHQpO2ZvcihsZXQgbz0wO28hPT10OysrbyluW29dPWVbb10uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1uLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLnByZWNpc2lvbj10LnByZWNpc2lvbix0aGlzLnBvbHlnb25PZmZzZXQ9dC5wb2x5Z29uT2Zmc2V0LHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMsdGhpcy5kaXRoZXJpbmc9dC5kaXRoZXJpbmcsdGhpcy5hbHBoYVRlc3Q9dC5hbHBoYVRlc3QsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEsdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLnRvbmVNYXBwZWQ9dC50b25lTWFwcGVkLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXNldCBuZWVkc1VwZGF0ZSh0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX1PcnQucHJvdG90eXBlLmlzTWF0ZXJpYWw9ITA7Y29uc3QgUHJ0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9LHdydD17aDowLHM6MCxsOjB9LGtydD17aDowLHM6MCxsOjB9O2Z1bmN0aW9uIFNydCh0LGUsbil7cmV0dXJuIG48MCYmKG4rPTEpLG4+MSYmKG4tPTEpLG48MS82P3QrNiooZS10KSpuOm48LjU/ZTpuPDIvMz90KzYqKGUtdCkqKDIvMy1uKTp0fWZ1bmN0aW9uIERydCh0KXtyZXR1cm4gdDwuMDQwNDU/LjA3NzM5OTM4MDgqdDpNYXRoLnBvdyguOTQ3ODY3Mjk4Nip0Ky4wNTIxMzI3MDE0LDIuNCl9ZnVuY3Rpb24gRXJ0KHQpe3JldHVybiB0PC4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwuNDE2NjYpLS4wNTV9Y2xhc3MgUnJ0e2NvbnN0cnVjdG9yKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZSYmdm9pZCAwPT09bj90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsbil9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOiJudW1iZXIiPT10eXBlb2YgdD90aGlzLnNldEhleCh0KToic3RyaW5nIj09dHlwZW9mIHQmJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSgyNTUmdCkvMjU1LHRoaXN9c2V0UkdCKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW4sdGhpc31zZXRIU0wodCxlLG4pe2lmKHQ9KGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4odCVlK2UpJWV9KSh0LDEpLGU9Wml0KGUsMCwxKSxuPVppdChuLDAsMSksMD09PWUpdGhpcy5yPXRoaXMuZz10aGlzLmI9bjtlbHNle2NvbnN0IG89bjw9LjU/biooMStlKTpuK2UtbiplLGk9MipuLW87dGhpcy5yPVNydChpLG8sdCsxLzMpLHRoaXMuZz1TcnQoaSxvLHQpLHRoaXMuYj1TcnQoaSxvLHQtMS8zKX1yZXR1cm4gdGhpc31zZXRTdHlsZSh0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMCE9PWUmJnBhcnNlRmxvYXQoZSk8MSYmY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogQWxwaGEgY29tcG9uZW50IG9mICIrdCsiIHdpbGwgYmUgaWdub3JlZC4iKX1sZXQgbjtpZihuPS9eKCg/OnJnYnxoc2wpYT8pXCgoW15cKV0qKVwpLy5leGVjKHQpKXtsZXQgdDtjb25zdCBvPW5bMl07c3dpdGNoKG5bMV0pe2Nhc2UicmdiIjpjYXNlInJnYmEiOmlmKHQ9L15ccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhvKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzFdLDEwKSkvMjU1LHRoaXMuZz1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsyXSwxMCkpLzI1NSx0aGlzLmI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbM10sMTApKS8yNTUsZSh0WzRdKSx0aGlzO2lmKHQ9L15ccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhvKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzFdLDEwKSkvMTAwLHRoaXMuZz1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsyXSwxMCkpLzEwMCx0aGlzLmI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbM10sMTApKS8xMDAsZSh0WzRdKSx0aGlzO2JyZWFrO2Nhc2UiaHNsIjpjYXNlImhzbGEiOmlmKHQ9L15ccyooXGQqXC4/XGQrKVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpe2NvbnN0IG49cGFyc2VGbG9hdCh0WzFdKS8zNjAsbz1wYXJzZUludCh0WzJdLDEwKS8xMDAsaT1wYXJzZUludCh0WzNdLDEwKS8xMDA7cmV0dXJuIGUodFs0XSksdGhpcy5zZXRIU0wobixvLGkpfX19ZWxzZSBpZihuPS9eXCMoW0EtRmEtZlxkXSspJC8uZXhlYyh0KSl7Y29uc3QgdD1uWzFdLGU9dC5sZW5ndGg7aWYoMz09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgxKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYoNj09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCg0KSt0LmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIHQmJnQubGVuZ3RoPjA/dGhpcy5zZXRDb2xvck5hbWUodCk6dGhpc31zZXRDb2xvck5hbWUodCl7Y29uc3QgZT1QcnRbdC50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gdm9pZCAwIT09ZT90aGlzLnNldEhleChlKTpjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBVbmtub3duIGNvbG9yICIrdCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLnIsdGhpcy5nLHRoaXMuYil9Y29weSh0KXtyZXR1cm4gdGhpcy5yPXQucix0aGlzLmc9dC5nLHRoaXMuYj10LmIsdGhpc31jb3B5R2FtbWFUb0xpbmVhcih0LGU9Mil7cmV0dXJuIHRoaXMucj1NYXRoLnBvdyh0LnIsZSksdGhpcy5nPU1hdGgucG93KHQuZyxlKSx0aGlzLmI9TWF0aC5wb3codC5iLGUpLHRoaXN9Y29weUxpbmVhclRvR2FtbWEodCxlPTIpe2NvbnN0IG49ZT4wPzEvZToxO3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLG4pLHRoaXMuZz1NYXRoLnBvdyh0LmcsbiksdGhpcy5iPU1hdGgucG93KHQuYixuKSx0aGlzfWNvbnZlcnRHYW1tYVRvTGluZWFyKHQpe3JldHVybiB0aGlzLmNvcHlHYW1tYVRvTGluZWFyKHRoaXMsdCksdGhpc31jb252ZXJ0TGluZWFyVG9HYW1tYSh0KXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9HYW1tYSh0aGlzLHQpLHRoaXN9Y29weVNSR0JUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5yPURydCh0LnIpLHRoaXMuZz1EcnQodC5nKSx0aGlzLmI9RHJ0KHQuYiksdGhpc31jb3B5TGluZWFyVG9TUkdCKHQpe3JldHVybiB0aGlzLnI9RXJ0KHQuciksdGhpcy5nPUVydCh0LmcpLHRoaXMuYj1FcnQodC5iKSx0aGlzfWNvbnZlcnRTUkdCVG9MaW5lYXIoKXtyZXR1cm4gdGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpLHRoaXN9Y29udmVydExpbmVhclRvU1JHQigpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyksdGhpc31nZXRIZXgoKXtyZXR1cm4gMjU1KnRoaXMucjw8MTZeMjU1KnRoaXMuZzw8OF4yNTUqdGhpcy5iPDwwfWdldEhleFN0cmluZygpe3JldHVybigiMDAwMDAwIit0aGlzLmdldEhleCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpfWdldEhTTCh0KXtjb25zdCBlPXRoaXMucixuPXRoaXMuZyxvPXRoaXMuYixpPU1hdGgubWF4KGUsbixvKSxhPU1hdGgubWluKGUsbixvKTtsZXQgcixzO2NvbnN0IGw9KGEraSkvMjtpZihhPT09aSlyPTAscz0wO2Vsc2V7Y29uc3QgdD1pLWE7c3dpdGNoKHM9bDw9LjU/dC8oaSthKTp0LygyLWktYSksaSl7Y2FzZSBlOnI9KG4tbykvdCsobjxvPzY6MCk7YnJlYWs7Y2FzZSBuOnI9KG8tZSkvdCsyO2JyZWFrO2Nhc2UgbzpyPShlLW4pL3QrNH1yLz02fXJldHVybiB0Lmg9cix0LnM9cyx0Lmw9bCx0fWdldFN0eWxlKCl7cmV0dXJuInJnYigiKygyNTUqdGhpcy5yfDApKyIsIisoMjU1KnRoaXMuZ3wwKSsiLCIrKDI1NSp0aGlzLmJ8MCkrIikifW9mZnNldEhTTCh0LGUsbil7cmV0dXJuIHRoaXMuZ2V0SFNMKHdydCksd3J0LmgrPXQsd3J0LnMrPWUsd3J0LmwrPW4sdGhpcy5zZXRIU0wod3J0Lmgsd3J0LnMsd3J0LmwpLHRoaXN9YWRkKHQpe3JldHVybiB0aGlzLnIrPXQucix0aGlzLmcrPXQuZyx0aGlzLmIrPXQuYix0aGlzfWFkZENvbG9ycyh0LGUpe3JldHVybiB0aGlzLnI9dC5yK2Uucix0aGlzLmc9dC5nK2UuZyx0aGlzLmI9dC5iK2UuYix0aGlzfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXMuZys9dCx0aGlzLmIrPXQsdGhpc31zdWIodCl7cmV0dXJuIHRoaXMucj1NYXRoLm1heCgwLHRoaXMuci10LnIpLHRoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy10LmcpLHRoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi10LmIpLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMucio9dC5yLHRoaXMuZyo9dC5nLHRoaXMuYio9dC5iLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMucio9dCx0aGlzLmcqPXQsdGhpcy5iKj10LHRoaXN9bGVycCh0LGUpe3JldHVybiB0aGlzLnIrPSh0LnItdGhpcy5yKSplLHRoaXMuZys9KHQuZy10aGlzLmcpKmUsdGhpcy5iKz0odC5iLXRoaXMuYikqZSx0aGlzfWxlcnBDb2xvcnModCxlLG4pe3JldHVybiB0aGlzLnI9dC5yKyhlLnItdC5yKSpuLHRoaXMuZz10LmcrKGUuZy10LmcpKm4sdGhpcy5iPXQuYisoZS5iLXQuYikqbix0aGlzfWxlcnBIU0wodCxlKXt0aGlzLmdldEhTTCh3cnQpLHQuZ2V0SFNMKGtydCk7Y29uc3Qgbj1YaXQod3J0Lmgsa3J0LmgsZSksbz1YaXQod3J0LnMsa3J0LnMsZSksaT1YaXQod3J0Lmwsa3J0LmwsZSk7cmV0dXJuIHRoaXMuc2V0SFNMKG4sbyxpKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5yPT09dGhpcy5yJiZ0Lmc9PT10aGlzLmcmJnQuYj09PXRoaXMuYn1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLnI9dFtlXSx0aGlzLmc9dFtlKzFdLHRoaXMuYj10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLnIsdFtlKzFdPXRoaXMuZyx0W2UrMl09dGhpcy5iLHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLnI9dC5nZXRYKGUpLHRoaXMuZz10LmdldFkoZSksdGhpcy5iPXQuZ2V0WihlKSwhMD09PXQubm9ybWFsaXplZCYmKHRoaXMuci89MjU1LHRoaXMuZy89MjU1LHRoaXMuYi89MjU1KSx0aGlzfXRvSlNPTigpe3JldHVybiB0aGlzLmdldEhleCgpfX1ScnQuTkFNRVM9UHJ0LFJydC5wcm90b3R5cGUuaXNDb2xvcj0hMCxScnQucHJvdG90eXBlLnI9MSxScnQucHJvdG90eXBlLmc9MSxScnQucHJvdG90eXBlLmI9MTtjbGFzcyBBcnQgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBScnQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9MCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fUFydC5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0hMDtjb25zdCBUcnQ9bmV3IGNhdCxOcnQ9bmV3IFFpdDtjbGFzcyB6cnR7Y29uc3RydWN0b3IodCxlLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiBhcnJheSBzaG91bGQgYmUgYSBUeXBlZCBBcnJheS4iKTt0aGlzLm5hbWU9IiIsdGhpcy5hcnJheT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMubm9ybWFsaXplZD0hMD09PW4sdGhpcy51c2FnZT1CaXQsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfW9uVXBsb2FkQ2FsbGJhY2soKXt9c2V0IG5lZWRzVXBkYXRlKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9c2V0VXNhZ2UodCl7cmV0dXJuIHRoaXMudXNhZ2U9dCx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubmFtZT10Lm5hbWUsdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLml0ZW1TaXplPXQuaXRlbVNpemUsdGhpcy5jb3VudD10LmNvdW50LHRoaXMubm9ybWFsaXplZD10Lm5vcm1hbGl6ZWQsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLml0ZW1TaXplLG4qPWUuaXRlbVNpemU7Zm9yKGxldCBvPTAsaT10aGlzLml0ZW1TaXplO288aTtvKyspdGhpcy5hcnJheVt0K29dPWUuYXJyYXlbbitvXTtyZXR1cm4gdGhpc31jb3B5QXJyYXkodCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQpLHRoaXN9Y29weUNvbG9yc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGk9dFtvXTt2b2lkIDA9PT1pJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weUNvbG9yc0FycmF5KCk6IGNvbG9yIGlzIHVuZGVmaW5lZCIsbyksaT1uZXcgUnJ0KSxlW24rK109aS5yLGVbbisrXT1pLmcsZVtuKytdPWkuYn1yZXR1cm4gdGhpc31jb3B5VmVjdG9yMnNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IFFpdCksZVtuKytdPWkueCxlW24rK109aS55fXJldHVybiB0aGlzfWNvcHlWZWN0b3Izc0FycmF5KHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGk9dFtvXTt2b2lkIDA9PT1pJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjNzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsbyksaT1uZXcgY2F0KSxlW24rK109aS54LGVbbisrXT1pLnksZVtuKytdPWkuen1yZXR1cm4gdGhpc31jb3B5VmVjdG9yNHNBcnJheSh0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO288aTtvKyspe2xldCBpPXRbb107dm9pZCAwPT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3I0c0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLG8pLGk9bmV3IGFhdCksZVtuKytdPWkueCxlW24rK109aS55LGVbbisrXT1pLnosZVtuKytdPWkud31yZXR1cm4gdGhpc31hcHBseU1hdHJpeDModCl7aWYoMj09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspTnJ0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxOcnQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFkoZSxOcnQueCxOcnQueSk7ZWxzZSBpZigzPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylUcnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLFRydC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWVooZSxUcnQueCxUcnQueSxUcnQueik7cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXg0KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKVRydC54PXRoaXMuZ2V0WChlKSxUcnQueT10aGlzLmdldFkoZSksVHJ0Lno9dGhpcy5nZXRaKGUpLFRydC5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVooZSxUcnQueCxUcnQueSxUcnQueik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspVHJ0Lng9dGhpcy5nZXRYKGUpLFRydC55PXRoaXMuZ2V0WShlKSxUcnQuej10aGlzLmdldFooZSksVHJ0LmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKGUsVHJ0LngsVHJ0LnksVHJ0LnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylUcnQueD10aGlzLmdldFgoZSksVHJ0Lnk9dGhpcy5nZXRZKGUpLFRydC56PXRoaXMuZ2V0WihlKSxUcnQudHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXMuc2V0WFlaKGUsVHJ0LngsVHJ0LnksVHJ0LnopO3JldHVybiB0aGlzfXNldCh0LGU9MCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQsZSksdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV19c2V0WCh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV09ZSx0aGlzfWdldFkodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdfXNldFkodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV09ZSx0aGlzfWdldFoodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdfXNldFoodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl09ZSx0aGlzfWdldFcodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdfXNldFcodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM109ZSx0aGlzfXNldFhZKHQsZSxuKXtyZXR1cm4gdGhpcy5hcnJheVswKyh0Kj10aGlzLml0ZW1TaXplKV09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixvKXtyZXR1cm4gdGhpcy5hcnJheVswKyh0Kj10aGlzLml0ZW1TaXplKV09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzLmFycmF5W3QrMl09byx0aGlzfXNldFhZWlcodCxlLG4sbyxpKXtyZXR1cm4gdGhpcy5hcnJheVswKyh0Kj10aGlzLml0ZW1TaXplKV09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzLmFycmF5W3QrMl09byx0aGlzLmFycmF5W3QrM109aSx0aGlzfW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuYXJyYXksdGhpcy5pdGVtU2l6ZSkuY29weSh0aGlzKX10b0pTT04oKXtjb25zdCB0PXtpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYXJyYXkpLG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfTtyZXR1cm4iIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLHRoaXMudXNhZ2UhPT1CaXQmJih0LnVzYWdlPXRoaXMudXNhZ2UpLDA9PT10aGlzLnVwZGF0ZVJhbmdlLm9mZnNldCYmLTE9PT10aGlzLnVwZGF0ZVJhbmdlLmNvdW50fHwodC51cGRhdGVSYW5nZT10aGlzLnVwZGF0ZVJhbmdlKSx0fX16cnQucHJvdG90eXBlLmlzQnVmZmVyQXR0cmlidXRlPSEwO2NsYXNzIElydCBleHRlbmRzIHpydHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbil9fWNsYXNzIEhydCBleHRlbmRzIHpydHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQzMkFycmF5KHQpLGUsbil9fShjbGFzcyBleHRlbmRzIHpydHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbil9fSkucHJvdG90eXBlLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyBGcnQgZXh0ZW5kcyB6cnR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKG5ldyBGbG9hdDMyQXJyYXkodCksZSxuKX19ZnVuY3Rpb24gTHJ0KHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4tMS8wO2xldCBlPXRbMF07Zm9yKGxldCBuPTEsbz10Lmxlbmd0aDtuPG87KytuKXRbbl0+ZSYmKGU9dFtuXSk7cmV0dXJuIGV9bGV0IEJydD0wO2NvbnN0IFZydD1uZXcgQmF0LGpydD1uZXcgcHJ0LFVydD1uZXcgY2F0LEdydD1uZXcgbWF0LFdydD1uZXcgbWF0LFlydD1uZXcgY2F0O2NsYXNzIHFydCBleHRlbmRzIFVpdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6QnJ0Kyt9KSx0aGlzLnV1aWQ9cWl0KCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsLHRoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OjEvMH0sdGhpcy51c2VyRGF0YT17fX1nZXRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4fXNldEluZGV4KHQpe3JldHVybiB0aGlzLmluZGV4PUFycmF5LmlzQXJyYXkodCk/bmV3KExydCh0KT42NTUzNT9IcnQ6SXJ0KSh0LDEpOnQsdGhpc31nZXRBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XX1zZXRBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdPWUsdGhpc31kZWxldGVBdHRyaWJ1dGUodCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbdF0sdGhpc31oYXNBdHRyaWJ1dGUodCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuYXR0cmlidXRlc1t0XX1hZGRHcm91cCh0LGUsbj0wKXt0aGlzLmdyb3Vwcy5wdXNoKHtzdGFydDp0LGNvdW50OmUsbWF0ZXJpYWxJbmRleDpufSl9Y2xlYXJHcm91cHMoKXt0aGlzLmdyb3Vwcz1bXX1zZXREcmF3UmFuZ2UodCxlKXt0aGlzLmRyYXdSYW5nZS5zdGFydD10LHRoaXMuZHJhd1JhbmdlLmNvdW50PWV9YXBwbHlNYXRyaXg0KHQpe2NvbnN0IGU9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO3ZvaWQgMCE9PWUmJihlLmFwcGx5TWF0cml4NCh0KSxlLm5lZWRzVXBkYXRlPSEwKTtjb25zdCBuPXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7aWYodm9pZCAwIT09bil7Y29uc3QgZT0obmV3ICRpdCkuZ2V0Tm9ybWFsTWF0cml4KHQpO24uYXBwbHlOb3JtYWxNYXRyaXgoZSksbi5uZWVkc1VwZGF0ZT0hMH1jb25zdCBvPXRoaXMuYXR0cmlidXRlcy50YW5nZW50O3JldHVybiB2b2lkIDAhPT1vJiYoby50cmFuc2Zvcm1EaXJlY3Rpb24odCksby5uZWVkc1VwZGF0ZT0hMCksbnVsbCE9PXRoaXMuYm91bmRpbmdCb3gmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksbnVsbCE9PXRoaXMuYm91bmRpbmdTcGhlcmUmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksdGhpc31hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIFZydC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KSx0aGlzLmFwcGx5TWF0cml4NChWcnQpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gVnJ0Lm1ha2VSb3RhdGlvblgodCksdGhpcy5hcHBseU1hdHJpeDQoVnJ0KSx0aGlzfXJvdGF0ZVkodCl7cmV0dXJuIFZydC5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFZydCksdGhpc31yb3RhdGVaKHQpe3JldHVybiBWcnQubWFrZVJvdGF0aW9uWih0KSx0aGlzLmFwcGx5TWF0cml4NChWcnQpLHRoaXN9dHJhbnNsYXRlKHQsZSxuKXtyZXR1cm4gVnJ0Lm1ha2VUcmFuc2xhdGlvbih0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVnJ0KSx0aGlzfXNjYWxlKHQsZSxuKXtyZXR1cm4gVnJ0Lm1ha2VTY2FsZSh0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoVnJ0KSx0aGlzfWxvb2tBdCh0KXtyZXR1cm4ganJ0Lmxvb2tBdCh0KSxqcnQudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQoanJ0Lm1hdHJpeCksdGhpc31jZW50ZXIoKXtyZXR1cm4gdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihVcnQpLm5lZ2F0ZSgpLHRoaXMudHJhbnNsYXRlKFVydC54LFVydC55LFVydC56KSx0aGlzfXNldEZyb21Qb2ludHModCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspe2NvbnN0IG89dFtuXTtlLnB1c2goby54LG8ueSxvLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGcnQoZSwzKSksdGhpc31jb21wdXRlQm91bmRpbmdCb3goKXtudWxsPT09dGhpcy5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IG1hdCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBib3guIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdCb3guc2V0KG5ldyBjYXQoLTEvMCwtMS8wLC0xLzApLG5ldyBjYXQoMS8wLDEvMCwxLzApKTtpZih2b2lkIDAhPT10KXtpZih0aGlzLmJvdW5kaW5nQm94LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspR3J0LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUoZVt0XSksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oWXJ0LmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5taW4sR3J0Lm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KFlydCksWXJ0LmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5tYXgsR3J0Lm1heCksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KFlydCkpOih0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoR3J0Lm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KEdydC5tYXgpKX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9Y29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBSYXQpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgY2F0LDEvMCk7aWYodCl7Y29uc3Qgbj10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihHcnQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylXcnQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShlW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhZcnQuYWRkVmVjdG9ycyhHcnQubWluLFdydC5taW4pLEdydC5leHBhbmRCeVBvaW50KFlydCksWXJ0LmFkZFZlY3RvcnMoR3J0Lm1heCxXcnQubWF4KSxHcnQuZXhwYW5kQnlQb2ludChZcnQpKTooR3J0LmV4cGFuZEJ5UG9pbnQoV3J0Lm1pbiksR3J0LmV4cGFuZEJ5UG9pbnQoV3J0Lm1heCkpO0dydC5nZXRDZW50ZXIobik7bGV0IG89MDtmb3IobGV0IGU9MCxpPXQuY291bnQ7ZTxpO2UrKylZcnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLG89TWF0aC5tYXgobyxuLmRpc3RhbmNlVG9TcXVhcmVkKFlydCkpO2lmKGUpZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPWVbaV0scj10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2ZvcihsZXQgZT0wLGk9YS5jb3VudDtlPGk7ZSsrKVlydC5mcm9tQnVmZmVyQXR0cmlidXRlKGEsZSksciYmKFVydC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksWXJ0LmFkZChVcnQpKSxvPU1hdGgubWF4KG8sbi5kaXN0YW5jZVRvU3F1YXJlZChZcnQpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQobyksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19Y29tcHV0ZUZhY2VOb3JtYWxzKCl7fWNvbXB1dGVUYW5nZW50cygpe2NvbnN0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZihudWxsPT09dHx8dm9pZCAwPT09ZS5wb3NpdGlvbnx8dm9pZCAwPT09ZS5ub3JtYWx8fHZvaWQgMD09PWUudXYpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlVGFuZ2VudHMoKSBmYWlsZWQuIE1pc3NpbmcgcmVxdWlyZWQgYXR0cmlidXRlcyAoaW5kZXgsIHBvc2l0aW9uLCBub3JtYWwgb3IgdXYpIik7Y29uc3Qgbj10LmFycmF5LG89ZS5wb3NpdGlvbi5hcnJheSxpPWUubm9ybWFsLmFycmF5LGE9ZS51di5hcnJheSxyPW8ubGVuZ3RoLzM7dm9pZCAwPT09ZS50YW5nZW50JiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IHpydChuZXcgRmxvYXQzMkFycmF5KDQqciksNCkpO2NvbnN0IHM9ZS50YW5nZW50LmFycmF5LGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKWxbdF09bmV3IGNhdCxjW3RdPW5ldyBjYXQ7Y29uc3QgZD1uZXcgY2F0LHA9bmV3IGNhdCxtPW5ldyBjYXQsdT1uZXcgUWl0LGY9bmV3IFFpdCxnPW5ldyBRaXQsaD1uZXcgY2F0LGI9bmV3IGNhdDtmdW5jdGlvbiB5KHQsZSxuKXtkLmZyb21BcnJheShvLDMqdCkscC5mcm9tQXJyYXkobywzKmUpLG0uZnJvbUFycmF5KG8sMypuKSx1LmZyb21BcnJheShhLDIqdCksZi5mcm9tQXJyYXkoYSwyKmUpLGcuZnJvbUFycmF5KGEsMipuKSxwLnN1YihkKSxtLnN1YihkKSxmLnN1Yih1KSxnLnN1Yih1KTtjb25zdCBpPTEvKGYueCpnLnktZy54KmYueSk7aXNGaW5pdGUoaSkmJihoLmNvcHkocCkubXVsdGlwbHlTY2FsYXIoZy55KS5hZGRTY2FsZWRWZWN0b3IobSwtZi55KS5tdWx0aXBseVNjYWxhcihpKSxiLmNvcHkobSkubXVsdGlwbHlTY2FsYXIoZi54KS5hZGRTY2FsZWRWZWN0b3IocCwtZy54KS5tdWx0aXBseVNjYWxhcihpKSxsW3RdLmFkZChoKSxsW2VdLmFkZChoKSxsW25dLmFkZChoKSxjW3RdLmFkZChiKSxjW2VdLmFkZChiKSxjW25dLmFkZChiKSl9bGV0IF89dGhpcy5ncm91cHM7MD09PV8ubGVuZ3RoJiYoXz1be3N0YXJ0OjAsY291bnQ6bi5sZW5ndGh9XSk7Zm9yKGxldCB0PTAsZT1fLmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPV9bdF0sbz1lLnN0YXJ0O2ZvcihsZXQgdD1vLGk9bytlLmNvdW50O3Q8aTt0Kz0zKXkoblt0KzBdLG5bdCsxXSxuW3QrMl0pfWNvbnN0IEM9bmV3IGNhdCxNPW5ldyBjYXQsdj1uZXcgY2F0LHg9bmV3IGNhdDtmdW5jdGlvbiBPKHQpe3YuZnJvbUFycmF5KGksMyp0KSx4LmNvcHkodik7Y29uc3QgZT1sW3RdO0MuY29weShlKSxDLnN1Yih2Lm11bHRpcGx5U2NhbGFyKHYuZG90KGUpKSkubm9ybWFsaXplKCksTS5jcm9zc1ZlY3RvcnMoeCxlKTtjb25zdCBuPU0uZG90KGNbdF0pPDA/LTE6MTtzWzQqdF09Qy54LHNbNCp0KzFdPUMueSxzWzQqdCsyXT1DLnosc1s0KnQrM109bn1mb3IobGV0IHQ9MCxlPV8ubGVuZ3RoO3Q8ZTsrK3Qpe2NvbnN0IGU9X1t0XSxvPWUuc3RhcnQ7Zm9yKGxldCB0PW8saT1vK2UuY291bnQ7dDxpO3QrPTMpTyhuW3QrMF0pLE8oblt0KzFdKSxPKG5bdCsyXSl9fWNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl7Y29uc3QgdD10aGlzLmluZGV4LGU9dGhpcy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7aWYodm9pZCAwIT09ZSl7bGV0IG49dGhpcy5nZXRBdHRyaWJ1dGUoIm5vcm1hbCIpO2lmKHZvaWQgMD09PW4pbj1uZXcgenJ0KG5ldyBGbG9hdDMyQXJyYXkoMyplLmNvdW50KSwzKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuKTtlbHNlIGZvcihsZXQgdD0wLGU9bi5jb3VudDt0PGU7dCsrKW4uc2V0WFlaKHQsMCwwLDApO2NvbnN0IG89bmV3IGNhdCxpPW5ldyBjYXQsYT1uZXcgY2F0LHI9bmV3IGNhdCxzPW5ldyBjYXQsbD1uZXcgY2F0LGM9bmV3IGNhdCxkPW5ldyBjYXQ7aWYodClmb3IobGV0IHA9MCxtPXQuY291bnQ7cDxtO3ArPTMpe2NvbnN0IG09dC5nZXRYKHArMCksdT10LmdldFgocCsxKSxmPXQuZ2V0WChwKzIpO28uZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLG0pLGkuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHUpLGEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGYpLGMuc3ViVmVjdG9ycyhhLGkpLGQuc3ViVmVjdG9ycyhvLGkpLGMuY3Jvc3MoZCksci5mcm9tQnVmZmVyQXR0cmlidXRlKG4sbSkscy5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdSksbC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sZiksci5hZGQoYykscy5hZGQoYyksbC5hZGQoYyksbi5zZXRYWVoobSxyLngsci55LHIueiksbi5zZXRYWVoodSxzLngscy55LHMueiksbi5zZXRYWVooZixsLngsbC55LGwueil9ZWxzZSBmb3IobGV0IHQ9MCxyPWUuY291bnQ7dDxyO3QrPTMpby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCswKSxpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLGEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMiksYy5zdWJWZWN0b3JzKGEsaSksZC5zdWJWZWN0b3JzKG8saSksYy5jcm9zcyhkKSxuLnNldFhZWih0KzAsYy54LGMueSxjLnopLG4uc2V0WFlaKHQrMSxjLngsYy55LGMueiksbi5zZXRYWVoodCsyLGMueCxjLnksYy56KTt0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKSxuLm5lZWRzVXBkYXRlPSEwfX1tZXJnZSh0LGUpe2lmKCF0fHwhdC5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3ZvaWQgMD09PWUmJihlPTAsY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBPdmVyd3JpdGluZyBvcmlnaW5hbCBnZW9tZXRyeSwgc3RhcnRpbmcgYXQgb2Zmc2V0PTAuIFVzZSBCdWZmZXJHZW9tZXRyeVV0aWxzLm1lcmdlQnVmZmVyR2VvbWV0cmllcygpIGZvciBsb3NzbGVzcyBtZXJnZS4iKSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IG8gaW4gbil7aWYodm9pZCAwPT09dC5hdHRyaWJ1dGVzW29dKWNvbnRpbnVlO2NvbnN0IGk9bltvXS5hcnJheSxhPXQuYXR0cmlidXRlc1tvXSxyPWEuYXJyYXkscz1hLml0ZW1TaXplKmUsbD1NYXRoLm1pbihyLmxlbmd0aCxpLmxlbmd0aC1zKTtmb3IobGV0IHQ9MCxlPXM7dDxsO3QrKyxlKyspaVtlXT1yW3RdfXJldHVybiB0aGlzfW5vcm1hbGl6ZU5vcm1hbHMoKXtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCBlPTAsbj10LmNvdW50O2U8bjtlKyspWXJ0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxZcnQubm9ybWFsaXplKCksdC5zZXRYWVooZSxZcnQueCxZcnQueSxZcnQueil9dG9Ob25JbmRleGVkKCl7ZnVuY3Rpb24gdCh0LGUpe2NvbnN0IG49dC5hcnJheSxvPXQuaXRlbVNpemUsaT10Lm5vcm1hbGl6ZWQsYT1uZXcgbi5jb25zdHJ1Y3RvcihlLmxlbmd0aCpvKTtsZXQgcj0wLHM9MDtmb3IobGV0IGk9MCxsPWUubGVuZ3RoO2k8bDtpKyspe3I9dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP2VbaV0qdC5kYXRhLnN0cmlkZSt0Lm9mZnNldDplW2ldKm87Zm9yKGxldCB0PTA7dDxvO3QrKylhW3MrK109bltyKytdfXJldHVybiBuZXcgenJ0KGEsbyxpKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogQnVmZmVyR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO2NvbnN0IGU9bmV3IHFydCxuPXRoaXMuaW5kZXguYXJyYXksbz10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gbyl7Y29uc3QgYT10KG9baV0sbik7ZS5zZXRBdHRyaWJ1dGUoaSxhKX1jb25zdCBpPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCBvIGluIGkpe2NvbnN0IGE9W10scj1pW29dO2ZvcihsZXQgZT0wLG89ci5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10KHJbZV0sbik7YS5wdXNoKG8pfWUubW9ycGhBdHRyaWJ1dGVzW29dPWF9ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IGE9dGhpcy5ncm91cHM7Zm9yKGxldCB0PTAsbj1hLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWFbdF07ZS5hZGRHcm91cChuLnN0YXJ0LG4uY291bnQsbi5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX10b0pTT04oKXtjb25zdCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2lmKHQudXVpZD10aGlzLnV1aWQsdC50eXBlPXRoaXMudHlwZSwiIiE9PXRoaXMubmFtZSYmKHQubmFtZT10aGlzLm5hbWUpLE9iamVjdC5rZXlzKHRoaXMudXNlckRhdGEpLmxlbmd0aD4wJiYodC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSx2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe2NvbnN0IGU9dGhpcy5wYXJhbWV0ZXJzO2Zvcihjb25zdCBuIGluIGUpdm9pZCAwIT09ZVtuXSYmKHRbbl09ZVtuXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtjb25zdCBlPXRoaXMuaW5kZXg7bnVsbCE9PWUmJih0LmRhdGEuaW5kZXg9e3R5cGU6ZS5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuYXJyYXkpfSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGUgaW4gbil0LmRhdGEuYXR0cmlidXRlc1tlXT1uW2VdLnRvSlNPTih0LmRhdGEpO2NvbnN0IG89e307bGV0IGk9ITE7Zm9yKGNvbnN0IGUgaW4gdGhpcy5tb3JwaEF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5tb3JwaEF0dHJpYnV0ZXNbZV0sYT1bXTtmb3IobGV0IGU9MCxvPW4ubGVuZ3RoO2U8bztlKyspYS5wdXNoKG5bZV0udG9KU09OKHQuZGF0YSkpO2EubGVuZ3RoPjAmJihvW2VdPWEsaT0hMCl9aSYmKHQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM9byx0LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZSk7Y29uc3QgYT10aGlzLmdyb3VwczthLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKSk7Y29uc3Qgcj10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09ciYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOnIuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6ci5yYWRpdXN9KSx0fWNsb25lKCl7cmV0dXJuKG5ldyBxcnQpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7Y29uc3QgZT17fTt0aGlzLm5hbWU9dC5uYW1lO2NvbnN0IG49dC5pbmRleDtudWxsIT09biYmdGhpcy5zZXRJbmRleChuLmNsb25lKGUpKTtjb25zdCBvPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBvKXRoaXMuc2V0QXR0cmlidXRlKHQsb1t0XS5jbG9uZShlKSk7Y29uc3QgaT10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBuPVtdLG89aVt0XTtmb3IobGV0IHQ9MCxpPW8ubGVuZ3RoO3Q8aTt0Kyspbi5wdXNoKG9bdF0uY2xvbmUoZSkpO3RoaXMubW9ycGhBdHRyaWJ1dGVzW3RdPW59dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT10Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IGE9dC5ncm91cHM7Zm9yKGxldCB0PTAsZT1hLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWFbdF07dGhpcy5hZGRHcm91cChlLnN0YXJ0LGUuY291bnQsZS5tYXRlcmlhbEluZGV4KX1jb25zdCByPXQuYm91bmRpbmdCb3g7bnVsbCE9PXImJih0aGlzLmJvdW5kaW5nQm94PXIuY2xvbmUoKSk7Y29uc3Qgcz10LmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09cyYmKHRoaXMuYm91bmRpbmdTcGhlcmU9cy5jbG9uZSgpKSx0aGlzLmRyYXdSYW5nZS5zdGFydD10LmRyYXdSYW5nZS5zdGFydCx0aGlzLmRyYXdSYW5nZS5jb3VudD10LmRyYXdSYW5nZS5jb3VudCx0aGlzLnVzZXJEYXRhPXQudXNlckRhdGEsdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1xcnQucHJvdG90eXBlLmlzQnVmZmVyR2VvbWV0cnk9ITA7Y29uc3QgWnJ0PW5ldyBCYXQsWHJ0PW5ldyBMYXQsS3J0PW5ldyBSYXQsSnJ0PW5ldyBjYXQsUXJ0PW5ldyBjYXQsJHJ0PW5ldyBjYXQsdHN0PW5ldyBjYXQsZXN0PW5ldyBjYXQsbnN0PW5ldyBjYXQsb3N0PW5ldyBjYXQsaXN0PW5ldyBjYXQsYXN0PW5ldyBjYXQscnN0PW5ldyBRaXQsc3N0PW5ldyBRaXQsbHN0PW5ldyBRaXQsY3N0PW5ldyBjYXQsZHN0PW5ldyBjYXQ7Y2xhc3MgcHN0IGV4dGVuZHMgcHJ0e2NvbnN0cnVjdG9yKHQ9bmV3IHFydCxlPW5ldyBBcnQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyYmKHRoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnNsaWNlKCkpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5JiYodGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9T2JqZWN0LmFzc2lnbih7fSx0Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSkpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc311cGRhdGVNb3JwaFRhcmdldHMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxvPXRoaXMubWF0ZXJpYWwsaT10aGlzLm1hdHJpeFdvcmxkO2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEtydC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLEtydC5hcHBseU1hdHJpeDQoaSksITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKEtydCkpcmV0dXJuO2lmKFpydC5jb3B5KGkpLmludmVydCgpLFhydC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoWnJ0KSxudWxsIT09bi5ib3VuZGluZ0JveCYmITE9PT1YcnQuaW50ZXJzZWN0c0JveChuLmJvdW5kaW5nQm94KSlyZXR1cm47bGV0IGE7aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBpPW4uaW5kZXgscj1uLmF0dHJpYnV0ZXMucG9zaXRpb24scz1uLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixsPW4ubW9ycGhUYXJnZXRzUmVsYXRpdmUsYz1uLmF0dHJpYnV0ZXMudXYsZD1uLmF0dHJpYnV0ZXMudXYyLHA9bi5ncm91cHMsbT1uLmRyYXdSYW5nZTtpZihudWxsIT09aSlpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgbj0wLHU9cC5sZW5ndGg7bjx1O24rKyl7Y29uc3QgdT1wW25dLGY9b1t1Lm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgbj1NYXRoLm1heCh1LnN0YXJ0LG0uc3RhcnQpLG89TWF0aC5taW4odS5zdGFydCt1LmNvdW50LG0uc3RhcnQrbS5jb3VudCk7bjxvO24rPTMpe2NvbnN0IG89aS5nZXRYKG4pLHA9aS5nZXRYKG4rMSksbT1pLmdldFgobisyKTthPW1zdCh0aGlzLGYsdCxYcnQscixzLGwsYyxkLG8scCxtKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLGEuZmFjZS5tYXRlcmlhbEluZGV4PXUubWF0ZXJpYWxJbmRleCxlLnB1c2goYSkpfX1lbHNlIGZvcihsZXQgbj1NYXRoLm1heCgwLG0uc3RhcnQpLHA9TWF0aC5taW4oaS5jb3VudCxtLnN0YXJ0K20uY291bnQpO248cDtuKz0zKXtjb25zdCBwPWkuZ2V0WChuKSxtPWkuZ2V0WChuKzEpLHU9aS5nZXRYKG4rMik7YT1tc3QodGhpcyxvLHQsWHJ0LHIscyxsLGMsZCxwLG0sdSksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxlLnB1c2goYSkpfWVsc2UgaWYodm9pZCAwIT09cilpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgbj0wLGk9cC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT1wW25dLHU9b1tpLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgbj1NYXRoLm1heChpLnN0YXJ0LG0uc3RhcnQpLG89TWF0aC5taW4oaS5zdGFydCtpLmNvdW50LG0uc3RhcnQrbS5jb3VudCk7bjxvO24rPTMpYT1tc3QodGhpcyx1LHQsWHJ0LHIscyxsLGMsZCxuLG4rMSxuKzIpLGEmJihhLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksYS5mYWNlLm1hdGVyaWFsSW5kZXg9aS5tYXRlcmlhbEluZGV4LGUucHVzaChhKSl9ZWxzZSBmb3IobGV0IG49TWF0aC5tYXgoMCxtLnN0YXJ0KSxpPU1hdGgubWluKHIuY291bnQsbS5zdGFydCttLmNvdW50KTtuPGk7bis9MylhPW1zdCh0aGlzLG8sdCxYcnQscixzLGwsYyxkLG4sbisxLG4rMiksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxlLnB1c2goYSkpfWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX1mdW5jdGlvbiBtc3QodCxlLG4sbyxpLGEscixzLGwsYyxkLHApe0pydC5mcm9tQnVmZmVyQXR0cmlidXRlKGksYyksUXJ0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxkKSwkcnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLHApO2NvbnN0IG09dC5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYoYSYmbSl7b3N0LnNldCgwLDAsMCksaXN0LnNldCgwLDAsMCksYXN0LnNldCgwLDAsMCk7Zm9yKGxldCB0PTAsZT1hLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW1bdF0sbj1hW3RdOzAhPT1lJiYodHN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixjKSxlc3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGQpLG5zdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4scCkscj8ob3N0LmFkZFNjYWxlZFZlY3Rvcih0c3QsZSksaXN0LmFkZFNjYWxlZFZlY3Rvcihlc3QsZSksYXN0LmFkZFNjYWxlZFZlY3Rvcihuc3QsZSkpOihvc3QuYWRkU2NhbGVkVmVjdG9yKHRzdC5zdWIoSnJ0KSxlKSxpc3QuYWRkU2NhbGVkVmVjdG9yKGVzdC5zdWIoUXJ0KSxlKSxhc3QuYWRkU2NhbGVkVmVjdG9yKG5zdC5zdWIoJHJ0KSxlKSkpfUpydC5hZGQob3N0KSxRcnQuYWRkKGlzdCksJHJ0LmFkZChhc3QpfXQuaXNTa2lubmVkTWVzaCYmKHQuYm9uZVRyYW5zZm9ybShjLEpydCksdC5ib25lVHJhbnNmb3JtKGQsUXJ0KSx0LmJvbmVUcmFuc2Zvcm0ocCwkcnQpKTtjb25zdCB1PShmdW5jdGlvbiBmKHQsZSxuLG8saSxhLHIscyl7bGV0IGw7aWYobD0xPT09ZS5zaWRlP28uaW50ZXJzZWN0VHJpYW5nbGUocixhLGksITAscyk6by5pbnRlcnNlY3RUcmlhbmdsZShpLGEsciwyIT09ZS5zaWRlLHMpLG51bGw9PT1sKXJldHVybiBudWxsO2RzdC5jb3B5KHMpLGRzdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCk7Y29uc3QgYz1uLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhkc3QpO3JldHVybiBjPG4ubmVhcnx8Yz5uLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OmRzdC5jbG9uZSgpLG9iamVjdDp0fX0pKHQsZSxuLG8sSnJ0LFFydCwkcnQsY3N0KTtpZih1KXtzJiYocnN0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxzc3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGQpLGxzdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMscCksdS51dj12cnQuZ2V0VVYoY3N0LEpydCxRcnQsJHJ0LHJzdCxzc3QsbHN0LG5ldyBRaXQpKSxsJiYocnN0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxjKSxzc3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLGQpLGxzdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwscCksdS51djI9dnJ0LmdldFVWKGNzdCxKcnQsUXJ0LCRydCxyc3Qsc3N0LGxzdCxuZXcgUWl0KSk7Y29uc3QgdD17YTpjLGI6ZCxjOnAsbm9ybWFsOm5ldyBjYXQsbWF0ZXJpYWxJbmRleDowfTt2cnQuZ2V0Tm9ybWFsKEpydCxRcnQsJHJ0LHQubm9ybWFsKSx1LmZhY2U9dH1yZXR1cm4gdX1wc3QucHJvdG90eXBlLmlzTWVzaD0hMDtjbGFzcyB1c3QgZXh0ZW5kcyBxcnR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsbz0xLGk9MSxhPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOm4sd2lkdGhTZWdtZW50czpvLGhlaWdodFNlZ21lbnRzOmksZGVwdGhTZWdtZW50czphfTtjb25zdCByPXRoaXM7bz1NYXRoLmZsb29yKG8pLGk9TWF0aC5mbG9vcihpKSxhPU1hdGguZmxvb3IoYSk7Y29uc3Qgcz1bXSxsPVtdLGM9W10sZD1bXTtsZXQgcD0wLG09MDtmdW5jdGlvbiB1KHQsZSxuLG8saSxhLHUsZixnLGgsYil7Y29uc3QgeT1hL2csXz11L2gsQz1hLzIsTT11LzIsdj1mLzIseD1nKzEsTz1oKzE7bGV0IFA9MCx3PTA7Y29uc3Qgaz1uZXcgY2F0O2ZvcihsZXQgYT0wO2E8TzthKyspe2NvbnN0IHI9YSpfLU07Zm9yKGxldCBzPTA7czx4O3MrKylrW3RdPShzKnktQykqbyxrW2VdPXIqaSxrW25dPXYsbC5wdXNoKGsueCxrLnksay56KSxrW3RdPTAsa1tlXT0wLGtbbl09Zj4wPzE6LTEsYy5wdXNoKGsueCxrLnksay56KSxkLnB1c2gocy9nKSxkLnB1c2goMS1hL2gpLFArPTF9Zm9yKGxldCB0PTA7dDxoO3QrKylmb3IobGV0IGU9MDtlPGc7ZSsrKXtjb25zdCBuPXArZSt4Kih0KzEpLG89cCsoZSsxKSt4Kih0KzEpLGk9cCsoZSsxKSt4KnQ7cy5wdXNoKHArZSt4KnQsbixpKSxzLnB1c2gobixvLGkpLHcrPTZ9ci5hZGRHcm91cChtLHcsYiksbSs9dyxwKz1QfXUoInoiLCJ5IiwieCIsLTEsLTEsbixlLHQsYSxpLDApLHUoInoiLCJ5IiwieCIsMSwtMSxuLGUsLXQsYSxpLDEpLHUoIngiLCJ6IiwieSIsMSwxLHQsbixlLG8sYSwyKSx1KCJ4IiwieiIsInkiLDEsLTEsdCxuLC1lLG8sYSwzKSx1KCJ4IiwieSIsInoiLDEsLTEsdCxlLG4sbyxpLDQpLHUoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1uLG8saSw1KSx0aGlzLnNldEluZGV4KHMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEZydChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgRnJ0KGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEZydChkLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyB1c3QodC53aWR0aCx0LmhlaWdodCx0LmRlcHRoLHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQuZGVwdGhTZWdtZW50cyl9fWZ1bmN0aW9uIGZzdCh0KXtjb25zdCBlPXt9O2Zvcihjb25zdCBuIGluIHQpe2Vbbl09e307Zm9yKGNvbnN0IG8gaW4gdFtuXSl7Y29uc3QgaT10W25dW29dO2Vbbl1bb109aSYmKGkuaXNDb2xvcnx8aS5pc01hdHJpeDN8fGkuaXNNYXRyaXg0fHxpLmlzVmVjdG9yMnx8aS5pc1ZlY3RvcjN8fGkuaXNWZWN0b3I0fHxpLmlzVGV4dHVyZXx8aS5pc1F1YXRlcm5pb24pP2kuY2xvbmUoKTpBcnJheS5pc0FycmF5KGkpP2kuc2xpY2UoKTppfX1yZXR1cm4gZX1mdW5jdGlvbiBnc3QodCl7Y29uc3QgZT17fTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3Qgbz1mc3QodFtuXSk7Zm9yKGNvbnN0IHQgaW4gbyllW3RdPW9bdF19cmV0dXJuIGV9Y29uc3QgaHN0PXtjbG9uZTpmc3QsbWVyZ2U6Z3N0fTtjbGFzcyBic3QgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRlck1hdGVyaWFsIix0aGlzLmRlZmluZXM9e30sdGhpcy51bmlmb3Jtcz17fSx0aGlzLnZlcnRleFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59Iix0aGlzLmZyYWdtZW50U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAwLjAsIDEuMCApO1xufSIsdGhpcy5saW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMubGlnaHRzPSExLHRoaXMuY2xpcHBpbmc9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdm9pZCAwIT09dCYmKHZvaWQgMCE9PXQuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9ZnN0KHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO2UuZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixlLnVuaWZvcm1zPXt9O2Zvcihjb25zdCBuIGluIHRoaXMudW5pZm9ybXMpe2NvbnN0IG89dGhpcy51bmlmb3Jtc1tuXS52YWx1ZTtlLnVuaWZvcm1zW25dPW8mJm8uaXNUZXh0dXJlP3t0eXBlOiJ0Iix2YWx1ZTpvLnRvSlNPTih0KS51dWlkfTpvJiZvLmlzQ29sb3I/e3R5cGU6ImMiLHZhbHVlOm8uZ2V0SGV4KCl9Om8mJm8uaXNWZWN0b3IyP3t0eXBlOiJ2MiIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3IzP3t0eXBlOiJ2MyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3I0P3t0eXBlOiJ2NCIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXgzP3t0eXBlOiJtMyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXg0P3t0eXBlOiJtNCIsdmFsdWU6by50b0FycmF5KCl9Ont2YWx1ZTpvfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYoZS5kZWZpbmVzPXRoaXMuZGVmaW5lcyksZS52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsZS5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2NvbnN0IG49e307Zm9yKGNvbnN0IHQgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW3RdJiYoblt0XT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmxlbmd0aD4wJiYoZS5leHRlbnNpb25zPW4pLGV9fWJzdC5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMDtjbGFzcyB5c3QgZXh0ZW5kcyBwcnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgQmF0LHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgQmF0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IEJhdH1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLnByb2plY3Rpb25NYXRyaXguY29weSh0LnByb2plY3Rpb25NYXRyaXgpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx0aGlzfWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoLWVbOF0sLWVbOV0sLWVbMTBdKS5ub3JtYWxpemUoKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7c3VwZXIudXBkYXRlV29ybGRNYXRyaXgodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX15c3QucHJvdG90eXBlLmlzQ2FtZXJhPSEwO2NsYXNzIF9zdCBleHRlbmRzIHlzdHtjb25zdHJ1Y3Rvcih0PTUwLGU9MSxuPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPW4sdGhpcy5mYXI9byx0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9c2V0Rm9jYWxMZW5ndGgodCl7Y29uc3QgZT0uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90O3RoaXMuZm92PTIqWWl0Kk1hdGguYXRhbihlKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1nZXRGb2NhbExlbmd0aCgpe2NvbnN0IHQ9TWF0aC50YW4oLjUqV2l0KnRoaXMuZm92KTtyZXR1cm4uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90fWdldEVmZmVjdGl2ZUZPVigpe3JldHVybiAyKllpdCpNYXRoLmF0YW4oTWF0aC50YW4oLjUqV2l0KnRoaXMuZm92KS90aGlzLnpvb20pfWdldEZpbG1XaWR0aCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZSpNYXRoLm1pbih0aGlzLmFzcGVjdCwxKX1nZXRGaWxtSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfXNldFZpZXdPZmZzZXQodCxlLG4sbyxpLGEpe3RoaXMuYXNwZWN0PXQvZSxudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPW8sdGhpcy52aWV3LndpZHRoPWksdGhpcy52aWV3LmhlaWdodD1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe251bGwhPT10aGlzLnZpZXcmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2NvbnN0IHQ9dGhpcy5uZWFyO2xldCBlPXQqTWF0aC50YW4oLjUqV2l0KnRoaXMuZm92KS90aGlzLnpvb20sbj0yKmUsbz10aGlzLmFzcGVjdCpuLGk9LS41Km87Y29uc3QgYT10aGlzLnZpZXc7aWYobnVsbCE9PXRoaXMudmlldyYmdGhpcy52aWV3LmVuYWJsZWQpe2NvbnN0IHQ9YS5mdWxsV2lkdGgscj1hLmZ1bGxIZWlnaHQ7aSs9YS5vZmZzZXRYKm8vdCxlLT1hLm9mZnNldFkqbi9yLG8qPWEud2lkdGgvdCxuKj1hLmhlaWdodC9yfWNvbnN0IHI9dGhpcy5maWxtT2Zmc2V0OzAhPT1yJiYoaSs9dCpyL3RoaXMuZ2V0RmlsbVdpZHRoKCkpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoaSxpK28sZSxlLW4sdCx0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5mb3Y9dGhpcy5mb3YsZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubmVhcj10aGlzLm5lYXIsZS5vYmplY3QuZmFyPXRoaXMuZmFyLGUub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXMsZS5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0LG51bGwhPT10aGlzLnZpZXcmJihlLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksZS5vYmplY3QuZmlsbUdhdWdlPXRoaXMuZmlsbUdhdWdlLGUub2JqZWN0LmZpbG1PZmZzZXQ9dGhpcy5maWxtT2Zmc2V0LGV9fV9zdC5wcm90b3R5cGUuaXNQZXJzcGVjdGl2ZUNhbWVyYT0hMDtjb25zdCBDc3Q9OTA7Y2xhc3MgTXN0IGV4dGVuZHMgcHJ0e2NvbnN0cnVjdG9yKHQsZSxuKXtpZihzdXBlcigpLHRoaXMudHlwZT0iQ3ViZUNhbWVyYSIsITAhPT1uLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkN1YmVDYW1lcmE6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBhbiBpbnN0YW5jZSBvZiBXZWJHTEN1YmVSZW5kZXJUYXJnZXQgYXMgdGhpcmQgcGFyYW1ldGVyLiIpO3RoaXMucmVuZGVyVGFyZ2V0PW47Y29uc3Qgbz1uZXcgX3N0KENzdCwxLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwtMSwwKSxvLmxvb2tBdChuZXcgY2F0KDEsMCwwKSksdGhpcy5hZGQobyk7Y29uc3QgaT1uZXcgX3N0KENzdCwxLHQsZSk7aS5sYXllcnM9dGhpcy5sYXllcnMsaS51cC5zZXQoMCwtMSwwKSxpLmxvb2tBdChuZXcgY2F0KC0xLDAsMCkpLHRoaXMuYWRkKGkpO2NvbnN0IGE9bmV3IF9zdChDc3QsMSx0LGUpO2EubGF5ZXJzPXRoaXMubGF5ZXJzLGEudXAuc2V0KDAsMCwxKSxhLmxvb2tBdChuZXcgY2F0KDAsMSwwKSksdGhpcy5hZGQoYSk7Y29uc3Qgcj1uZXcgX3N0KENzdCwxLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwwLC0xKSxyLmxvb2tBdChuZXcgY2F0KDAsLTEsMCkpLHRoaXMuYWRkKHIpO2NvbnN0IHM9bmV3IF9zdChDc3QsMSx0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsLTEsMCkscy5sb29rQXQobmV3IGNhdCgwLDAsMSkpLHRoaXMuYWRkKHMpO2NvbnN0IGw9bmV3IF9zdChDc3QsMSx0LGUpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IGNhdCgwLDAsLTEpKSx0aGlzLmFkZChsKX11cGRhdGUodCxlKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBuPXRoaXMucmVuZGVyVGFyZ2V0LFtvLGksYSxyLHMsbF09dGhpcy5jaGlsZHJlbixjPXQueHIuZW5hYmxlZCxkPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IHA9bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMCksdC5yZW5kZXIoZSxvKSx0LnNldFJlbmRlclRhcmdldChuLDEpLHQucmVuZGVyKGUsaSksdC5zZXRSZW5kZXJUYXJnZXQobiwyKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMyksdC5yZW5kZXIoZSxyKSx0LnNldFJlbmRlclRhcmdldChuLDQpLHQucmVuZGVyKGUscyksbi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1wLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNSksdC5yZW5kZXIoZSxsKSx0LnNldFJlbmRlclRhcmdldChkKSx0LnhyLmVuYWJsZWQ9Y319Y2xhc3MgdnN0IGV4dGVuZHMgb2F0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe3N1cGVyKHQ9dm9pZCAwIT09dD90OltdLGU9dm9pZCAwIT09ZT9lOmRpdCxuLG8saSxhLHI9dm9pZCAwIT09cj9yOlBpdCxzLGwsYyksdGhpcy5mbGlwWT0hMX1nZXQgaW1hZ2VzKCl7cmV0dXJuIHRoaXMuaW1hZ2V9c2V0IGltYWdlcyh0KXt0aGlzLmltYWdlPXR9fXZzdC5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMDtjbGFzcyB4c3QgZXh0ZW5kcyByYXR7Y29uc3RydWN0b3IodCxlLG4pe051bWJlci5pc0ludGVnZXIoZSkmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldDogY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzIG5vdyBXZWJHTEN1YmVSZW5kZXJUYXJnZXQoIHNpemUsIG9wdGlvbnMgKSIpLGU9biksc3VwZXIodCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgdnN0KHZvaWQgMCwoZT1lfHx7fSkubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09ZS5nZW5lcmF0ZU1pcG1hcHMmJmUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09ZS5taW5GaWx0ZXI/ZS5taW5GaWx0ZXI6Yml0LHRoaXMudGV4dHVyZS5fbmVlZHNGbGlwRW52TWFwPSExfWZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsZSl7dGhpcy50ZXh0dXJlLnR5cGU9ZS50eXBlLHRoaXMudGV4dHVyZS5mb3JtYXQ9d2l0LHRoaXMudGV4dHVyZS5lbmNvZGluZz1lLmVuY29kaW5nLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLm1pbkZpbHRlcix0aGlzLnRleHR1cmUubWFnRmlsdGVyPWUubWFnRmlsdGVyO2NvbnN0IG49bmV3IHVzdCg1LDUsNSksbz1uZXcgYnN0KHtuYW1lOiJDdWJlbWFwRnJvbUVxdWlyZWN0Iix1bmlmb3Jtczpmc3Qoe3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19KSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0dmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblxuXHRcdFx0XHRcdHJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXG5cdFx0XHRcdFx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0XHRcdFx0XHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cblx0XHRcdFx0fVxuXHRcdFx0IixmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xuXG5cdFx0XHRcdHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG5cblx0XHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblxuXHRcdFx0XHR9XG5cdFx0XHQiLHNpZGU6MSxibGVuZGluZzowfSk7by51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9ZTtjb25zdCBpPW5ldyBwc3QobixvKSxhPWUubWluRmlsdGVyO3JldHVybiBlLm1pbkZpbHRlcj09PXlpdCYmKGUubWluRmlsdGVyPWJpdCksbmV3IE1zdCgxLDEwLHRoaXMpLnVwZGF0ZSh0LGkpLGUubWluRmlsdGVyPWEsaS5nZW9tZXRyeS5kaXNwb3NlKCksaS5tYXRlcmlhbC5kaXNwb3NlKCksdGhpc31jbGVhcih0LGUsbixvKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7Zm9yKGxldCBpPTA7aTw2O2krKyl0LnNldFJlbmRlclRhcmdldCh0aGlzLGkpLHQuY2xlYXIoZSxuLG8pO3Quc2V0UmVuZGVyVGFyZ2V0KGkpfX14c3QucHJvdG90eXBlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PSEwO2NvbnN0IE9zdD1uZXcgY2F0LFBzdD1uZXcgY2F0LHdzdD1uZXcgJGl0O2NsYXNzIGtzdHtjb25zdHJ1Y3Rvcih0PW5ldyBjYXQoMSwwLDApLGU9MCl7dGhpcy5ub3JtYWw9dCx0aGlzLmNvbnN0YW50PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD1lLHRoaXN9c2V0Q29tcG9uZW50cyh0LGUsbixvKXtyZXR1cm4gdGhpcy5ub3JtYWwuc2V0KHQsZSxuKSx0aGlzLmNvbnN0YW50PW8sdGhpc31zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9LWUuZG90KHRoaXMubm9ybWFsKSx0aGlzfXNldEZyb21Db3BsYW5hclBvaW50cyh0LGUsbil7Y29uc3Qgbz1Pc3Quc3ViVmVjdG9ycyhuLGUpLmNyb3NzKFBzdC5zdWJWZWN0b3JzKHQsZSkpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KG8sdCksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbnN0YW50PXQuY29uc3RhbnQsdGhpc31ub3JtYWxpemUoKXtjb25zdCB0PTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7cmV0dXJuIHRoaXMubm9ybWFsLm11bHRpcGx5U2NhbGFyKHQpLHRoaXMuY29uc3RhbnQqPXQsdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy5jb25zdGFudCo9LTEsdGhpcy5ub3JtYWwubmVnYXRlKCksdGhpc31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHRoaXMubm9ybWFsLmRvdCh0KSt0aGlzLmNvbnN0YW50fWRpc3RhbmNlVG9TcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KHQuY2VudGVyKS10LnJhZGl1c31wcm9qZWN0UG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5kaXN0YW5jZVRvUG9pbnQodCkpLmFkZCh0KX1pbnRlcnNlY3RMaW5lKHQsZSl7Y29uc3Qgbj10LmRlbHRhKE9zdCksbz10aGlzLm5vcm1hbC5kb3Qobik7aWYoMD09PW8pcmV0dXJuIDA9PT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KT9lLmNvcHkodC5zdGFydCk6bnVsbDtjb25zdCBpPS0odC5zdGFydC5kb3QodGhpcy5ub3JtYWwpK3RoaXMuY29uc3RhbnQpL287cmV0dXJuIGk8MHx8aT4xP251bGw6ZS5jb3B5KG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0LnN0YXJ0KX1pbnRlcnNlY3RzTGluZSh0KXtjb25zdCBlPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpLG49dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5lbmQpO3JldHVybiBlPDAmJm4+MHx8bjwwJiZlPjB9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9Y29wbGFuYXJQb2ludCh0KXtyZXR1cm4gdC5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5jb25zdGFudCl9YXBwbHlNYXRyaXg0KHQsZSl7Y29uc3Qgbj1lfHx3c3QuZ2V0Tm9ybWFsTWF0cml4KHQpLG89dGhpcy5jb3BsYW5hclBvaW50KE9zdCkuYXBwbHlNYXRyaXg0KHQpLGk9dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKG4pLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLmNvbnN0YW50PS1vLmRvdChpKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jb25zdGFudC09dC5kb3QodGhpcy5ub3JtYWwpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZ0LmNvbnN0YW50PT09dGhpcy5jb25zdGFudH1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19a3N0LnByb3RvdHlwZS5pc1BsYW5lPSEwO2NvbnN0IFNzdD1uZXcgUmF0LERzdD1uZXcgY2F0O2NsYXNzIEVzdHtjb25zdHJ1Y3Rvcih0PW5ldyBrc3QsZT1uZXcga3N0LG49bmV3IGtzdCxvPW5ldyBrc3QsaT1uZXcga3N0LGE9bmV3IGtzdCl7dGhpcy5wbGFuZXM9W3QsZSxuLG8saSxhXX1zZXQodCxlLG4sbyxpLGEpe2NvbnN0IHI9dGhpcy5wbGFuZXM7cmV0dXJuIHJbMF0uY29weSh0KSxyWzFdLmNvcHkoZSksclsyXS5jb3B5KG4pLHJbM10uY29weShvKSxyWzRdLmNvcHkoaSkscls1XS5jb3B5KGEpLHRoaXN9Y29weSh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspZVtuXS5jb3B5KHQucGxhbmVzW25dKTtyZXR1cm4gdGhpc31zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KXtjb25zdCBlPXRoaXMucGxhbmVzLG49dC5lbGVtZW50cyxvPW5bMF0saT1uWzFdLGE9blsyXSxyPW5bM10scz1uWzRdLGw9bls1XSxjPW5bNl0sZD1uWzddLHA9bls4XSxtPW5bOV0sdT1uWzEwXSxmPW5bMTFdLGc9blsxMl0saD1uWzEzXSxiPW5bMTRdLHk9blsxNV07cmV0dXJuIGVbMF0uc2V0Q29tcG9uZW50cyhyLW8sZC1zLGYtcCx5LWcpLm5vcm1hbGl6ZSgpLGVbMV0uc2V0Q29tcG9uZW50cyhyK28sZCtzLGYrcCx5K2cpLm5vcm1hbGl6ZSgpLGVbMl0uc2V0Q29tcG9uZW50cyhyK2ksZCtsLGYrbSx5K2gpLm5vcm1hbGl6ZSgpLGVbM10uc2V0Q29tcG9uZW50cyhyLWksZC1sLGYtbSx5LWgpLm5vcm1hbGl6ZSgpLGVbNF0uc2V0Q29tcG9uZW50cyhyLWEsZC1jLGYtdSx5LWIpLm5vcm1hbGl6ZSgpLGVbNV0uc2V0Q29tcG9uZW50cyhyK2EsZCtjLGYrdSx5K2IpLm5vcm1hbGl6ZSgpLHRoaXN9aW50ZXJzZWN0c09iamVjdCh0KXtjb25zdCBlPXQuZ2VvbWV0cnk7cmV0dXJuIG51bGw9PT1lLmJvdW5kaW5nU3BoZXJlJiZlLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFNzdC5jb3B5KGUuYm91bmRpbmdTcGhlcmUpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoU3N0KX1pbnRlcnNlY3RzU3ByaXRlKHQpe3JldHVybiBTc3QuY2VudGVyLnNldCgwLDAsMCksU3N0LnJhZGl1cz0uNzA3MTA2NzgxMTg2NTQ3NixTc3QuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShTc3QpfWludGVyc2VjdHNTcGhlcmUodCl7Y29uc3QgZT10aGlzLnBsYW5lcyxuPXQuY2VudGVyLG89LXQucmFkaXVzO2ZvcihsZXQgdD0wO3Q8Njt0KyspaWYoZVt0XS5kaXN0YW5jZVRvUG9pbnQobik8bylyZXR1cm4hMTtyZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKyl7Y29uc3Qgbz1lW25dO2lmKERzdC54PW8ubm9ybWFsLng+MD90Lm1heC54OnQubWluLngsRHN0Lnk9by5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxEc3Quej1vLm5vcm1hbC56PjA/dC5tYXguejp0Lm1pbi56LG8uZGlzdGFuY2VUb1BvaW50KERzdCk8MClyZXR1cm4hMX1yZXR1cm4hMH1jb250YWluc1BvaW50KHQpe2NvbnN0IGU9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKylpZihlW25dLmRpc3RhbmNlVG9Qb2ludCh0KTwwKXJldHVybiExO3JldHVybiEwfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfX1mdW5jdGlvbiBSc3QoKXtsZXQgdD1udWxsLGU9ITEsbj1udWxsLG89bnVsbDtmdW5jdGlvbiBpKGUsYSl7bihlLGEpLG89dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaSl9cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7ITAhPT1lJiZudWxsIT09biYmKG89dC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaSksZT0hMCl9LHN0b3A6ZnVuY3Rpb24oKXt0LmNhbmNlbEFuaW1hdGlvbkZyYW1lKG8pLGU9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24odCl7bj10fSxzZXRDb250ZXh0OmZ1bmN0aW9uKGUpe3Q9ZX19fWZ1bmN0aW9uIEFzdCh0LGUpe2NvbnN0IG49ZS5pc1dlYkdMMixvPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYodD10LmRhdGEpLG8uZ2V0KHQpfSxyZW1vdmU6ZnVuY3Rpb24gYShlKXtlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3Qgbj1vLmdldChlKTtuJiYodC5kZWxldGVCdWZmZXIobi5idWZmZXIpLG8uZGVsZXRlKGUpKX0sdXBkYXRlOmZ1bmN0aW9uIHIoZSxpKXtpZihlLmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IHQ9by5nZXQoZSk7cmV0dXJuIHZvaWQoKCF0fHx0LnZlcnNpb248ZS52ZXJzaW9uKSYmby5zZXQoZSx7YnVmZmVyOmUuYnVmZmVyLHR5cGU6ZS50eXBlLGJ5dGVzUGVyRWxlbWVudDplLmVsZW1lbnRTaXplLHZlcnNpb246ZS52ZXJzaW9ufSkpfWUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGU9ZS5kYXRhKTtjb25zdCBhPW8uZ2V0KGUpO3ZvaWQgMD09PWE/by5zZXQoZSwoZnVuY3Rpb24gcihlLG8pe2NvbnN0IGk9ZS5hcnJheSxhPWUudXNhZ2Uscj10LmNyZWF0ZUJ1ZmZlcigpO3QuYmluZEJ1ZmZlcihvLHIpLHQuYnVmZmVyRGF0YShvLGksYSksZS5vblVwbG9hZENhbGxiYWNrKCk7bGV0IHM9NTEyNjtyZXR1cm4gaSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheT9zPTUxMjY6aSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheT9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVW5zdXBwb3J0ZWQgZGF0YSBidWZmZXIgZm9ybWF0OiBGbG9hdDY0QXJyYXkuIik6aSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5P2UuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlP24/cz01MTMxOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVc2FnZSBvZiBGbG9hdDE2QnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIFdlYkdMMi4iKTpzPTUxMjM6aSBpbnN0YW5jZW9mIEludDE2QXJyYXk/cz01MTIyOmkgaW5zdGFuY2VvZiBVaW50MzJBcnJheT9zPTUxMjU6aSBpbnN0YW5jZW9mIEludDMyQXJyYXk/cz01MTI0OmkgaW5zdGFuY2VvZiBJbnQ4QXJyYXk/cz01MTIwOihpIGluc3RhbmNlb2YgVWludDhBcnJheXx8aSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5KSYmKHM9NTEyMSkse2J1ZmZlcjpyLHR5cGU6cyxieXRlc1BlckVsZW1lbnQ6aS5CWVRFU19QRVJfRUxFTUVOVCx2ZXJzaW9uOmUudmVyc2lvbn19KShlLGkpKTphLnZlcnNpb248ZS52ZXJzaW9uJiYoKGZ1bmN0aW9uIHMoZSxvLGkpe2NvbnN0IGE9by5hcnJheSxyPW8udXBkYXRlUmFuZ2U7dC5iaW5kQnVmZmVyKGksZSksLTE9PT1yLmNvdW50P3QuYnVmZmVyU3ViRGF0YShpLDAsYSk6KG4/dC5idWZmZXJTdWJEYXRhKGksci5vZmZzZXQqYS5CWVRFU19QRVJfRUxFTUVOVCxhLHIub2Zmc2V0LHIuY291bnQpOnQuYnVmZmVyU3ViRGF0YShpLHIub2Zmc2V0KmEuQllURVNfUEVSX0VMRU1FTlQsYS5zdWJhcnJheShyLm9mZnNldCxyLm9mZnNldCtyLmNvdW50KSksci5jb3VudD0tMSl9KShhLmJ1ZmZlcixlLGkpLGEudmVyc2lvbj1lLnZlcnNpb24pfX19Y2xhc3MgVHN0IGV4dGVuZHMgcXJ0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLG89MSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBsYW5lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSx3aWR0aFNlZ21lbnRzOm4saGVpZ2h0U2VnbWVudHM6b307Y29uc3QgaT10LzIsYT1lLzIscj1NYXRoLmZsb29yKG4pLHM9TWF0aC5mbG9vcihvKSxsPXIrMSxjPXMrMSxkPXQvcixwPWUvcyxtPVtdLHU9W10sZj1bXSxnPVtdO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGU9dCpwLWE7Zm9yKGxldCBuPTA7bjxsO24rKyl1LnB1c2gobipkLWksLWUsMCksZi5wdXNoKDAsMCwxKSxnLnB1c2gobi9yKSxnLnB1c2goMS10L3MpfWZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3Qgbj1lK2wqKHQrMSksbz1lKzErbCoodCsxKSxpPWUrMStsKnQ7bS5wdXNoKGUrbCp0LG4saSksbS5wdXNoKG4sbyxpKX10aGlzLnNldEluZGV4KG0pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEZydCh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgRnJ0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEZydChnLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBUc3QodC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fWNvbnN0IE5zdD17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsYW9tYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcblx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcbiNlbmRpZiIsYmVnaW5fdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyggcG9zaXRpb24gKTsiLGJlZ2lubm9ybWFsX3ZlcnRleDoidmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApO1xuI2VuZGlmIixic2RmczoidmVjMiBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IHZlYzQgYzAgPSB2ZWM0KCAtIDEsIC0gMC4wMjc1LCAtIDAuNTcyLCAwLjAyMiApO1xuXHRjb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTtcblx0dmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTtcblx0ZmxvYXQgYTAwNCA9IG1pbiggci54ICogci54LCBleHAyKCAtIDkuMjggKiBkb3ROViApICkgKiByLnggKyByLnk7XG5cdHJldHVybiB2ZWMyKCAtMS4wNCwgMS4wNCApICogYTAwNCArIHIuenc7XG59XG5mbG9hdCBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHtcbiNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXG5cdGZsb2F0IGRpc3RhbmNlRmFsbG9mZiA9IDEuMCAvIG1heCggcG93KCBsaWdodERpc3RhbmNlLCBkZWNheUV4cG9uZW50ICksIDAuMDEgKTtcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICkge1xuXHRcdGRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApO1xuXHR9XG5cdHJldHVybiBkaXN0YW5jZUZhbGxvZmY7XG4jZWxzZVxuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcblx0XHRyZXR1cm4gcG93KCBzYXR1cmF0ZSggLWxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7XG5cdH1cblx0cmV0dXJuIDEuMDtcbiNlbmRpZlxufVxudmVjMyBCUkRGX0RpZmZ1c2VfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yO1xufVxudmVjMyBGX1NjaGxpY2soIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3RWSCAtIDYuOTgzMTYgKSAqIGRvdFZIICk7XG5cdHJldHVybiAoIGY5MCAtIGYwICkgKiBmcmVzbmVsICsgZjA7XG59XG52ZWMzIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIGNvbnN0IGluIHZlYzMgRjAsIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90TlYgLSA2Ljk4MzE2ICkgKiBkb3ROViApO1xuXHR2ZWMzIEZyID0gbWF4KCB2ZWMzKCAxLjAgLSByb3VnaG5lc3MgKSwgRjAgKSAtIEYwO1xuXHRyZXR1cm4gRnIgKiBmcmVzbmVsICsgRjA7XG59XG5mbG9hdCBHX0dHWF9TbWl0aCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBnbCA9IGRvdE5MICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdGZsb2F0IGd2ID0gZG90TlYgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0cmV0dXJuIDEuMCAvICggZ2wgKiBndiApO1xufVxuZmxvYXQgR19HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2ID0gZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIHZlYzMgZjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyB2aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBmMCwgZjkwLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7XG5cdGZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxudmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDtcblx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XG5cdGNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzID0gRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzID0gYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgdmVjMyggMS4wICksIGRvdExIICk7XG5cdGZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7XG5cdGZsb2F0IEQgPSBEX0JsaW5uUGhvbmcoIHNoaW5pbmVzcywgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG5mbG9hdCBHR1hSb3VnaG5lc3NUb0JsaW5uRXhwb25lbnQoIGNvbnN0IGluIGZsb2F0IGdneFJvdWdobmVzcyApIHtcblx0cmV0dXJuICggMi4wIC8gcG93MiggZ2d4Um91Z2huZXNzICsgMC4wMDAxICkgLSAyLjAgKTtcbn1cbmZsb2F0IEJsaW5uRXhwb25lbnRUb0dHWFJvdWdobmVzcyggY29uc3QgaW4gZmxvYXQgYmxpbm5FeHBvbmVudCApIHtcblx0cmV0dXJuIHNxcnQoIDIuMCAvICggYmxpbm5FeHBvbmVudCArIDIuMCApICk7XG59XG4jaWYgZGVmaW5lZCggVVNFX1NIRUVOIClcbmZsb2F0IERfQ2hhcmxpZShmbG9hdCByb3VnaG5lc3MsIGZsb2F0IE5vSCkge1xuXHRmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIHJvdWdobmVzcztcblx0ZmxvYXQgY29zMmggPSBOb0ggKiBOb0g7XG5cdGZsb2F0IHNpbjJoID0gbWF4KDEuMCAtIGNvczJoLCAwLjAwNzgxMjUpO1x0cmV0dXJuICgyLjAgKyBpbnZBbHBoYSkgKiBwb3coc2luMmgsIGludkFscGhhICogMC41KSAvICgyLjAgKiBQSSk7XG59XG5mbG9hdCBWX05ldWJlbHQoZmxvYXQgTm9WLCBmbG9hdCBOb0wpIHtcblx0cmV0dXJuIHNhdHVyYXRlKDEuMCAvICg0LjAgKiAoTm9MICsgTm9WIC0gTm9MICogTm9WKSkpO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX1NoZWVuKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgTCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgdmVjMyBzcGVjdWxhckNvbG9yICkge1xuXHR2ZWMzIE4gPSBnZW9tZXRyeS5ub3JtYWw7XG5cdHZlYzMgViA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdHZlYzMgSCA9IG5vcm1hbGl6ZSggViArIEwgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBOLCBIICkgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBEX0NoYXJsaWUoIHJvdWdobmVzcywgZG90TkggKSAqIFZfTmV1YmVsdCggZG90KE4sIFYpLCBkb3QoTiwgTCkgKTtcbn1cbiNlbmRpZiIsYnVtcG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0JVTVBNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYnVtcE1hcDtcblx0dW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7XG5cdHZlYzIgZEhkeHlfZndkKCkge1xuXHRcdHZlYzIgZFNUZHggPSBkRmR4KCB2VXYgKTtcblx0XHR2ZWMyIGRTVGR5ID0gZEZkeSggdlV2ICk7XG5cdFx0ZmxvYXQgSGxsID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKS54O1xuXHRcdGZsb2F0IGRCeCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHggKS54IC0gSGxsO1xuXHRcdGZsb2F0IGRCeSA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICsgZFNUZHkgKS54IC0gSGxsO1xuXHRcdHJldHVybiB2ZWMyKCBkQngsIGRCeSApO1xuXHR9XG5cdHZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7XG5cdFx0dmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZOID0gc3VyZl9ub3JtO1xuXHRcdHZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTtcblx0XHR2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7XG5cdFx0ZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZlYzQgcGxhbmU7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FU1xuXHRcdGJvb2wgY2xpcHBlZCA9IHRydWU7XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRcdGNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0XHRpZiAoIGNsaXBwZWQgKSBkaXNjYXJkO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcblx0dW5pZm9ybSB2ZWM0IGNsaXBwaW5nUGxhbmVzWyBOVU1fQ0xJUFBJTkdfUExBTkVTIF07XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWYiLGNvbG9yX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0ZGlmZnVzZUNvbG9yICo9IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdGRpZmZ1c2VDb2xvci5yZ2IgKj0gdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dmFyeWluZyB2ZWM0IHZDb2xvcjtcbiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBIClcblx0dkNvbG9yID0gdmVjNCggMS4wICk7XG4jZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZDb2xvciA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvciAqPSBjb2xvcjtcbiNlbmRpZlxuI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SXG5cdHZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OTc5M1xuI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODZcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjZcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4Mzc5MDdcbiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNVxuI2RlZmluZSBFUFNJTE9OIDFlLTZcbiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxuI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoYSkgKCAxLjAgLSBzYXR1cmF0ZSggYSApIClcbmZsb2F0IHBvdzIoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4Kng7IH1cbmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfVxuZmxvYXQgcG93NCggY29uc3QgaW4gZmxvYXQgeCApIHsgZmxvYXQgeDIgPSB4Kng7IHJldHVybiB4Mip4MjsgfVxuZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH1cbmhpZ2hwIGZsb2F0IHJhbmQoIGNvbnN0IGluIHZlYzIgdXYgKSB7XG5cdGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1Mztcblx0aGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7XG5cdHJldHVybiBmcmFjdChzaW4oc24pICogYyk7XG59XG4jaWZkZWYgSElHSF9QUkVDSVNJT05cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkgeyByZXR1cm4gbGVuZ3RoKCB2ICk7IH1cbiNlbHNlXG5cdGZsb2F0IG1heDMoIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfVxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7XG5cdFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTtcblx0XHRyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7XG5cdH1cbiNlbmRpZlxuc3RydWN0IEluY2lkZW50TGlnaHQge1xuXHR2ZWMzIGNvbG9yO1xuXHR2ZWMzIGRpcmVjdGlvbjtcblx0Ym9vbCB2aXNpYmxlO1xufTtcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XG5cdHZlYzMgZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcblx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcbn07XG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XG5cdHZlYzMgcG9zaXRpb247XG5cdHZlYzMgbm9ybWFsO1xuXHR2ZWMzIHZpZXdEaXI7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG59O1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7XG59XG52ZWMzIHByb2plY3RPblBsYW5lKGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRmbG9hdCBkaXN0YW5jZSA9IGRvdCggcGxhbmVOb3JtYWwsIHBvaW50IC0gcG9pbnRPblBsYW5lICk7XG5cdHJldHVybiAtIGRpc3RhbmNlICogcGxhbmVOb3JtYWwgKyBwb2ludDtcbn1cbmZsb2F0IHNpZGVPZlBsYW5lKCBpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIHNpZ24oIGRvdCggcG9pbnQgLSBwb2ludE9uUGxhbmUsIHBsYW5lTm9ybWFsICkgKTtcbn1cbnZlYzMgbGluZVBsYW5lSW50ZXJzZWN0KCBpbiB2ZWMzIHBvaW50T25MaW5lLCBpbiB2ZWMzIGxpbmVEaXJlY3Rpb24sIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gbGluZURpcmVjdGlvbiAqICggZG90KCBwbGFuZU5vcm1hbCwgcG9pbnRPblBsYW5lIC0gcG9pbnRPbkxpbmUgKSAvIGRvdCggcGxhbmVOb3JtYWwsIGxpbmVEaXJlY3Rpb24gKSApICsgcG9pbnRPbkxpbmU7XG59XG5tYXQzIHRyYW5zcG9zZU1hdDMoIGNvbnN0IGluIG1hdDMgbSApIHtcblx0bWF0MyB0bXA7XG5cdHRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApO1xuXHR0bXBbIDEgXSA9IHZlYzMoIG1bIDAgXS55LCBtWyAxIF0ueSwgbVsgMiBdLnkgKTtcblx0dG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7XG5cdHJldHVybiB0bXA7XG59XG5mbG9hdCBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkge1xuXHR2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7XG5cdHJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApO1xufVxuYm9vbCBpc1BlcnNwZWN0aXZlTWF0cml4KCBtYXQ0IG0gKSB7XG5cdHJldHVybiBtWyAyIF1bIDMgXSA9PSAtIDEuMDtcbn1cbnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7XG5cdGZsb2F0IHUgPSBhdGFuKCBkaXIueiwgZGlyLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRmbG9hdCB2ID0gYXNpbiggY2xhbXAoIGRpci55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHJldHVybiB2ZWMyKCB1LCB2ICk7XG59IixjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6IiNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdCNkZWZpbmUgY3ViZVVWX21heE1pcExldmVsIDguMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5NaXBMZXZlbCA0LjBcblx0I2RlZmluZSBjdWJlVVZfbWF4VGlsZVNpemUgMjU2LjBcblx0I2RlZmluZSBjdWJlVVZfbWluVGlsZVNpemUgMTYuMFxuXHRmbG9hdCBnZXRGYWNlKCB2ZWMzIGRpcmVjdGlvbiApIHtcblx0XHR2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmFjZSA9IC0gMS4wO1xuXHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAuMCA6IDMuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyLjAgOiA1LjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2U7XG5cdH1cblx0dmVjMiBnZXRVViggdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGZhY2UgKSB7XG5cdFx0dmVjMiB1djtcblx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgLSBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH1cblx0XHRyZXR1cm4gMC41ICogKCB1diArIDEuMCApO1xuXHR9XG5cdHZlYzMgYmlsaW5lYXJDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBtaXBJbnQgKSB7XG5cdFx0ZmxvYXQgZmFjZSA9IGdldEZhY2UoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZpbHRlckludCA9IG1heCggY3ViZVVWX21pbk1pcExldmVsIC0gbWlwSW50LCAwLjAgKTtcblx0XHRtaXBJbnQgPSBtYXgoIG1pcEludCwgY3ViZVVWX21pbk1pcExldmVsICk7XG5cdFx0ZmxvYXQgZmFjZVNpemUgPSBleHAyKCBtaXBJbnQgKTtcblx0XHRmbG9hdCB0ZXhlbFNpemUgPSAxLjAgLyAoIDMuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZSApO1xuXHRcdHZlYzIgdXYgPSBnZXRVViggZGlyZWN0aW9uLCBmYWNlICkgKiAoIGZhY2VTaXplIC0gMS4wICk7XG5cdFx0dmVjMiBmID0gZnJhY3QoIHV2ICk7XG5cdFx0dXYgKz0gMC41IC0gZjtcblx0XHRpZiAoIGZhY2UgPiAyLjAgKSB7XG5cdFx0XHR1di55ICs9IGZhY2VTaXplO1xuXHRcdFx0ZmFjZSAtPSAzLjA7XG5cdFx0fVxuXHRcdHV2LnggKz0gZmFjZSAqIGZhY2VTaXplO1xuXHRcdGlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkge1xuXHRcdFx0dXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7XG5cdFx0fVxuXHRcdHV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplO1xuXHRcdHV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7XG5cdFx0dXYgKj0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdGwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueSArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggLT0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYmwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0cmV0dXJuIG1peCggdG0sIGJtLCBmLnkgKTtcblx0fVxuXHQjZGVmaW5lIHIwIDEuMFxuXHQjZGVmaW5lIHYwIDAuMzM5XG5cdCNkZWZpbmUgbTAgLSAyLjBcblx0I2RlZmluZSByMSAwLjhcblx0I2RlZmluZSB2MSAwLjI3NlxuXHQjZGVmaW5lIG0xIC0gMS4wXG5cdCNkZWZpbmUgcjQgMC40XG5cdCNkZWZpbmUgdjQgMC4wNDZcblx0I2RlZmluZSBtNCAyLjBcblx0I2RlZmluZSByNSAwLjMwNVxuXHQjZGVmaW5lIHY1IDAuMDE2XG5cdCNkZWZpbmUgbTUgMy4wXG5cdCNkZWZpbmUgcjYgMC4yMVxuXHQjZGVmaW5lIHY2IDAuMDAzOFxuXHQjZGVmaW5lIG02IDQuMFxuXHRmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IDAuMDtcblx0XHRpZiAoIHJvdWdobmVzcyA+PSByMSApIHtcblx0XHRcdG1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7XG5cdFx0XHRtaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkge1xuXHRcdFx0bWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00O1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHtcblx0XHRcdG1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7XHRcdH1cblx0XHRyZXR1cm4gbWlwO1xuXHR9XG5cdHZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7XG5cdFx0ZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTtcblx0XHRmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7XG5cdFx0dmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApO1xuXHRcdGlmICggbWlwRiA9PSAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApO1xuXHRcdFx0cmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7XG5cdFx0fVxuXHR9XG4jZW5kaWYiLGRlZmF1bHRub3JtYWxfdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9ICggbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0ZW1pc3NpdmVDb2xvci5yZ2IgPSBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJcbnZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgR2FtbWFUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvR2FtbWEoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDEuMCAvIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBzUkdCVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHZhbHVlLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IFJHQkVUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIGV4cDIoIHZhbHVlLmEgKiAyNTUuMCAtIDEyOC4wICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkUoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IG1heENvbXBvbmVudCA9IG1heCggbWF4KCB2YWx1ZS5yLCB2YWx1ZS5nICksIHZhbHVlLmIgKTtcblx0ZmxvYXQgZkV4cCA9IGNsYW1wKCBjZWlsKCBsb2cyKCBtYXhDb21wb25lbnQgKSApLCAtMTI4LjAsIDEyNy4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyBleHAyKCBmRXhwICksICggZkV4cCArIDEyOC4wICkgLyAyNTUuMCApO1xufVxudmVjNCBSR0JNVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogdmFsdWUuYSAqIG1heFJhbmdlLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JNKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBNID0gY2xhbXAoIG1heFJHQiAvIG1heFJhbmdlLCAwLjAsIDEuMCApO1xuXHRNID0gY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcbn1cbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IEQgPSBtYXgoIG1heFJhbmdlIC8gbWF4UkdCLCAxLjAgKTtcblx0RCA9IGNsYW1wKCBmbG9vciggRCApIC8gMjU1LjAsIDAuMCwgMS4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoIEQgKiAoIDI1NS4wIC8gbWF4UmFuZ2UgKSApLCBEICk7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZNID0gbWF0MyggMC4yMjA5LCAwLjMzOTAsIDAuNDE4NCwgMC4xMTM4LCAwLjY3ODAsIDAuNzMxOSwgMC4wMTAyLCAwLjExMzAsIDAuMjk2OSApO1xudmVjNCBMaW5lYXJUb0xvZ0x1diggaW4gdmVjNCB2YWx1ZSApIHtcblx0dmVjMyBYcF9ZX1hZWnAgPSBjTG9nTHV2TSAqIHZhbHVlLnJnYjtcblx0WHBfWV9YWVpwID0gbWF4KCBYcF9ZX1hZWnAsIHZlYzMoIDFlLTYsIDFlLTYsIDFlLTYgKSApO1xuXHR2ZWM0IHZSZXN1bHQ7XG5cdHZSZXN1bHQueHkgPSBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcblx0ZmxvYXQgTGUgPSAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xuXHR2UmVzdWx0LncgPSBmcmFjdCggTGUgKTtcblx0dlJlc3VsdC56ID0gKCBMZSAtICggZmxvb3IoIHZSZXN1bHQudyAqIDI1NS4wICkgKSAvIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZSZXN1bHQ7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZJbnZlcnNlTSA9IG1hdDMoIDYuMDAxNCwgLTIuNzAwOCwgLTEuNzk5NiwgLTEuMzMyMCwgMy4xMDI5LCAtNS43NzIxLCAwLjMwMDgsIC0xLjA4ODIsIDUuNjI2OCApO1xudmVjNCBMb2dMdXZUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgTGUgPSB2YWx1ZS56ICogMjU1LjAgKyB2YWx1ZS53O1xuXHR2ZWMzIFhwX1lfWFlacDtcblx0WHBfWV9YWVpwLnkgPSBleHAyKCAoIExlIC0gMTI3LjAgKSAvIDIuMCApO1xuXHRYcF9ZX1hZWnAueiA9IFhwX1lfWFlacC55IC8gdmFsdWUueTtcblx0WHBfWV9YWVpwLnggPSB2YWx1ZS54ICogWHBfWV9YWVpwLno7XG5cdHZlYzMgdlJHQiA9IGNMb2dMdXZJbnZlcnNlTSAqIFhwX1lfWFlacC5yZ2I7XG5cdHJldHVybiB2ZWM0KCBtYXgoIHZSR0IsIDAuMCApLCAxLjAgKTtcbn0iLGVudm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZlYzMgY2FtZXJhVG9GcmFnO1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZXb3JsZFBvc2l0aW9uIC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZWxzZVxuXHRcdHZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0O1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApO1xuXHQjZWxzZVxuXHRcdHZlYzQgZW52Q29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0I2VuZGlmXG5cdCNpZm5kZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdGVudkNvbG9yID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52Q29sb3IgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5O1xuXHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XG5cdHVuaWZvcm0gaW50IG1heE1pcExldmVsO1xuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0I2VuZGlmXG5cdFxuI2VuZGlmIixlbnZtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHxkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHRcblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQIClcblx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRlJBQ1RJT05cblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiB3b3JsZE5vcm1hbC54LCB3b3JsZE5vcm1hbC55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgd29ybGROb3JtYWwsIDEuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdmVjNCggMC4wICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG5cdGZsb2F0IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdGZsb2F0IG1heE1JUExldmVsU2NhbGFyID0gZmxvYXQoIG1heE1JUExldmVsICk7XG5cdFx0ZmxvYXQgc2lnbWEgPSBQSSAqIHJvdWdobmVzcyAqIHJvdWdobmVzcyAvICggMS4wICsgcm91Z2huZXNzICk7XG5cdFx0ZmxvYXQgZGVzaXJlZE1JUExldmVsID0gbWF4TUlQTGV2ZWxTY2FsYXIgKyBsb2cyKCBzaWdtYSApO1xuXHRcdHJldHVybiBjbGFtcCggZGVzaXJlZE1JUExldmVsLCAwLjAsIG1heE1JUExldmVsU2NhbGFyICk7XG5cdH1cblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIC12aWV3RGlyLCBub3JtYWwgKTtcblx0XHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIC12aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHRcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XG5cdFx0ZmxvYXQgc3BlY3VsYXJNSVBMZXZlbCA9IGdldFNwZWN1bGFyTUlQTGV2ZWwoIHJvdWdobmVzcywgbWF4TUlQTGV2ZWwgKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVJlZmxlY3RWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG4jZW5kaWYiLGVudm1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuXHQjZWxzZVxuXHRcdHZlYzMgY2FtZXJhVG9WZXJ0ZXg7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLGZvZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdGZvZ0RlcHRoID0gLSBtdlBvc2l0aW9uLno7XG4jZW5kaWYiLGZvZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiBmb2dEZXB0aCAqIGZvZ0RlcHRoICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCBmb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcbiNlbmRpZlxudmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApO1xuXHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0cmV0dXJuIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkucmdiO1xuXHQjZWxzZVxuXHRcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdCNlbmRpZlxufSIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBQSSAqIGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG52SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0dkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5ICk7XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHR2SW5kaXJlY3RGcm9udCArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkluZGlyZWN0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeSApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWYiLGxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdztcbnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcbnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07XG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHRmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56O1xuXHR2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7XG5cdHJldHVybiByZXN1bHQ7XG59XG52ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBzaEdldElycmFkaWFuY2VBdCggd29ybGROb3JtYWwsIGxpZ2h0UHJvYmUgKTtcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG52ZWMzIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgYW1iaWVudExpZ2h0Q29sb3IgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGFtYmllbnRMaWdodENvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07XG5cdHZvaWQgZ2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUG9pbnRMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHR9O1xuXHR1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9ICggZGlyZWN0TGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHRzdHJ1Y3QgU3BvdExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0ZmxvYXQgY29uZUNvcztcblx0XHRmbG9hdCBwZW51bWJyYUNvcztcblx0fTtcblx0dW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07XG5cdHZvaWQgZ2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XG5cdFx0XHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6IlRvb25NYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7IixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBUb29uTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcbn07XG52b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1Rvb25cbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3Bob25nX2ZyYWdtZW50OiJCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO1xubWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IHNwZWN1bGFyO1xubWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgPSBzaGluaW5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDsiLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclNoaW5pbmVzcztcblx0ZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbn07XG52b2lkIFJFX0RpcmVjdF9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X0JsaW5uUGhvbmdcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50OiJQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7XG52ZWMzIGR4eSA9IG1heCggYWJzKCBkRmR4KCBnZW9tZXRyeU5vcm1hbCApICksIGFicyggZEZkeSggZ2VvbWV0cnlOb3JtYWwgKSApICk7XG5mbG9hdCBnZW9tZXRyeVJvdWdobmVzcyA9IG1heCggbWF4KCBkeHkueCwgZHh5LnkgKSwgZHh5LnogKTtcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCAxLjAgKTtcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0I2lmZGVmIFNQRUNVTEFSXG5cdFx0dmVjMyBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHZlYzMoIHNwZWN1bGFySW50ZW5zaXR5ICk7XG5cdFx0dmVjMyBzcGVjdWxhclRpbnRGYWN0b3IgPSBzcGVjdWxhclRpbnQ7XG5cdFx0I2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUFxuXHRcdFx0c3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckludGVuc2l0eU1hcCwgdlV2ICkuYTtcblx0XHQjZW5kaWZcblx0XHQjaWZkZWYgVVNFX1NQRUNVTEFSVElOVE1BUFxuXHRcdFx0c3BlY3VsYXJUaW50RmFjdG9yICo9IHNwZWN1bGFyVGludE1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggc3BlY3VsYXJUaW50TWFwLCB2VXYgKSApLnJnYjtcblx0XHQjZW5kaWZcblx0XHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gbWl4KCBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgdmVjMyggMS4wICksIG1ldGFsbmVzc0ZhY3RvciApO1xuXHQjZWxzZVxuXHRcdHZlYzMgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSB2ZWMzKCAxLjAgKTtcblx0XHR2ZWMzIHNwZWN1bGFyVGludEZhY3RvciA9IHZlYzMoIDEuMCApO1xuXHRcdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3JGOTAgPSB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIG1pbiggdmVjMyggTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAqIHBvdzIoIHJlZmxlY3Rpdml0eSApICkgKiBzcGVjdWxhclRpbnRGYWN0b3IsIHZlYzMoIDEuMCApICkgKiBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZWxzZVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwID0gdmVjMyggMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBDTEVBUkNPQVRcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gY2xlYXJjb2F0O1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBjbGVhcmNvYXRSb3VnaG5lc3M7XG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0ICo9IHRleHR1cmUyRCggY2xlYXJjb2F0TWFwLCB2VXYgKS54O1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdFx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICo9IHRleHR1cmUyRCggY2xlYXJjb2F0Um91Z2huZXNzTWFwLCB2VXYgKS55O1xuXHQjZW5kaWZcblx0bWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIG1hdGVyaWFsLmNsZWFyY29hdCApO1x0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWF4KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDAuMDUyNSApO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHRtYXRlcmlhbC5zaGVlbkNvbG9yID0gc2hlZW47XG4jZW5kaWYiLGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50OiJzdHJ1Y3QgUGh5c2ljYWxNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclJvdWdobmVzcztcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3JGOTA7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGZsb2F0IGNsZWFyY29hdDtcblx0ZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHZlYzMgc2hlZW5Db2xvcjtcbiNlbmRpZlxufTtcbiNkZWZpbmUgTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjE2XG4jZGVmaW5lIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4wNFxuZmxvYXQgY2xlYXJjb2F0REhSQXBwcm94KCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCArICggMS4wIC0gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApICogKCBwb3coIDEuMCAtIGRvdE5MLCA1LjAgKSAqIHBvdyggMS4wIC0gcm91Z2huZXNzLCAyLjAgKSApO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBjY0RvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRjY0lycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCB2ZWMzKCAxLjAgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9TSEVFTlxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9TaGVlbihcblx0XHRcdG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLFxuXHRcdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uLFxuXHRcdFx0Z2VvbWV0cnksXG5cdFx0XHRtYXRlcmlhbC5zaGVlbkNvbG9yXG5cdFx0KTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yRjkwLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyk7XG5cdCNlbmRpZlxuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRmbG9hdCBjY0RvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdFJhZGlhbmNlICogbWF0ZXJpYWwuY2xlYXJjb2F0ICogQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBjY0RvdE5MID0gY2NEb3ROVjtcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdGZsb2F0IGNsZWFyY29hdEludiA9IDEuMCAtIGNsZWFyY29hdERIUjtcblx0dmVjMyBzaW5nbGVTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlID0gaXJyYWRpYW5jZSAqIFJFQ0lQUk9DQUxfUEk7XG5cdEJSREZfU3BlY3VsYXJfTXVsdGlzY2F0dGVyaW5nX0Vudmlyb25tZW50KCBnZW9tZXRyeSwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIHNpbmdsZVNjYXR0ZXJpbmcsIG11bHRpU2NhdHRlcmluZyApO1xuXHR2ZWMzIGRpZmZ1c2UgPSBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKiAoIDEuMCAtICggc2luZ2xlU2NhdHRlcmluZyArIG11bHRpU2NhdHRlcmluZyApICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0SW52ICogcmFkaWFuY2UgKiBzaW5nbGVTY2F0dGVyaW5nO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IG11bHRpU2NhdHRlcmluZyAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGRpZmZ1c2UgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1BoeXNpY2FsXG4jZGVmaW5lIFJFX0RpcmVjdF9SZWN0QXJlYVx0XHRSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdFNwZWN1bGFyXHRcdFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWxcbmZsb2F0IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IGFtYmllbnRPY2NsdXNpb24sIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0cmV0dXJuIHNhdHVyYXRlKCBwb3coIGRvdE5WICsgYW1iaWVudE9jY2x1c2lvbiwgZXhwMiggLSAxNi4wICogcm91Z2huZXNzIC0gMS4wICkgKSAtIDEuMCArIGFtYmllbnRPY2NsdXNpb24gKTtcbn0iLGxpZ2h0c19mcmFnbWVudF9iZWdpbjoiXG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSAtIHZWaWV3UG9zaXRpb247XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0U3BvdExpZ2h0IHNwb3RMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdO1xuXHRcdGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIClcblx0XHRzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0IClcblx0RGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhIClcblx0UmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkge1xuXHRcdHJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdO1xuXHRcdFJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHR2ZWMzIGlibElycmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0aXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcblx0I2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApXG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHRcdGlycmFkaWFuY2UgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeSApO1xuXHRcdH1cblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHR2ZWMzIHJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X21hcHM6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdFx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRpcnJhZGlhbmNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTtcblx0I2VuZGlmXG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKSAmJiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRpYmxJcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdElycmFkaWFuY2UoIGdlb21ldHJ5LCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0cmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNpZmRlZiBDTEVBUkNPQVRcblx0XHRjbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfZW5kOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0UkVfSW5kaXJlY3REaWZmdXNlKCBpcnJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0UkVfSW5kaXJlY3RTcGVjdWxhciggcmFkaWFuY2UsIGlibElycmFkaWFuY2UsIGNsZWFyY29hdFJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdGdsX0ZyYWdEZXB0aEVYVCA9IHZJc1BlcnNwZWN0aXZlID09IDAuMCA/IGdsX0ZyYWdDb29yZC56IDogbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdFx0dmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdCNlbmRpZlxuI2VuZGlmIixsb2dkZXB0aGJ1Zl92ZXJ0ZXg6IiNpZmRlZiBVU0VfTE9HREVQVEhCVUZcblx0I2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFRcblx0XHR2RnJhZ0RlcHRoID0gMS4wICsgZ2xfUG9zaXRpb24udztcblx0XHR2SXNQZXJzcGVjdGl2ZSA9IGZsb2F0KCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKTtcblx0I2Vsc2Vcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApIHtcblx0XHRcdGdsX1Bvc2l0aW9uLnogPSBsb2cyKCBtYXgoIEVQU0lMT04sIGdsX1Bvc2l0aW9uLncgKyAxLjAgKSApICogbG9nRGVwdGhCdWZGQyAtIDEuMDtcblx0XHRcdGdsX1Bvc2l0aW9uLnogKj0gZ2xfUG9zaXRpb24udztcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgdGV4ZWxDb2xvciA9IHRleHR1cmUyRCggbWFwLCB2VXYgKTtcblx0dGV4ZWxDb2xvciA9IG1hcFRleGVsVG9MaW5lYXIoIHRleGVsQ29sb3IgKTtcblx0ZGlmZnVzZUNvbG9yICo9IHRleGVsQ29sb3I7XG4jZW5kaWYiLG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR2ZWMyIHV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIGdsX1BvaW50Q29vcmQueCwgMS4wIC0gZ2xfUG9pbnRDb29yZC55LCAxICkgKS54eTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dmVjNCBtYXBUZXhlbCA9IHRleHR1cmUyRCggbWFwLCB1diApO1xuXHRkaWZmdXNlQ29sb3IgKj0gbWFwVGV4ZWxUb0xpbmVhciggbWFwVGV4ZWwgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB1diApLmc7XG4jZW5kaWYiLG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzcztcbiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7XG5cdG1ldGFsbmVzc0ZhY3RvciAqPSB0ZXhlbE1ldGFsbmVzcy5iO1xuI2VuZGlmIixtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWV0YWxuZXNzTWFwO1xuI2VuZGlmIixtb3JwaG5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdG9iamVjdE5vcm1hbCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcbiNlbmRpZiIsbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdCNlbmRpZlxuI2VuZGlmIixtb3JwaHRhcmdldF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHRyYW5zZm9ybWVkICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdO1xuXHRcdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiJmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtIDEuMDtcbiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2ZWMzIHRhbmdlbnQgPSBub3JtYWxpemUoIHZUYW5nZW50ICk7XG5cdFx0dmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR0YW5nZW50ID0gdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247XG5cdFx0XHRiaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uO1xuXHRcdCNlbmRpZlxuXHRcdCNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKVxuXHRcdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7Iixub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247XG5cdCNlbmRpZlxuXHRub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdG1hcE4ueHkgKj0gbm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbWFwTiwgZmFjZURpcmVjdGlvbiApO1xuXHQjZW5kaWZcbiNlbGlmIGRlZmluZWQoIFVTRV9CVU1QTUFQIClcblx0bm9ybWFsID0gcGVydHVyYk5vcm1hbEFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCksIGZhY2VEaXJlY3Rpb24gKTtcbiNlbmRpZiIsbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlO1xuI2VuZGlmXG4jaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdHVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7XG4jZW5kaWZcbiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApXG5cdHZlYzMgcGVydHVyYk5vcm1hbDJBcmIoIHZlYzMgZXllX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzMgbWFwTiwgZmxvYXQgZmFjZURpcmVjdGlvbiApIHtcblx0XHR2ZWMzIHEwID0gdmVjMyggZEZkeCggZXllX3Bvcy54ICksIGRGZHgoIGV5ZV9wb3MueSApLCBkRmR4KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzMgcTEgPSB2ZWMzKCBkRmR5KCBleWVfcG9zLnggKSwgZEZkeSggZXllX3Bvcy55ICksIGRGZHkoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMiBzdDAgPSBkRmR4KCB2VXYuc3QgKTtcblx0XHR2ZWMyIHN0MSA9IGRGZHkoIHZVdi5zdCApO1xuXHRcdHZlYzMgTiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIHExcGVycCA9IGNyb3NzKCBxMSwgTiApO1xuXHRcdHZlYzMgcTBwZXJwID0gY3Jvc3MoIE4sIHEwICk7XG5cdFx0dmVjMyBUID0gcTFwZXJwICogc3QwLnggKyBxMHBlcnAgKiBzdDEueDtcblx0XHR2ZWMzIEIgPSBxMXBlcnAgKiBzdDAueSArIHEwcGVycCAqIHN0MS55O1xuXHRcdGZsb2F0IGRldCA9IG1heCggZG90KCBULCBUICksIGRvdCggQiwgQiApICk7XG5cdFx0ZmxvYXQgc2NhbGUgPSAoIGRldCA9PSAwLjAgKSA/IDAuMCA6IGZhY2VEaXJlY3Rpb24gKiBpbnZlcnNlc3FydCggZGV0ICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggVCAqICggbWFwTi54ICogc2NhbGUgKSArIEIgKiAoIG1hcE4ueSAqIHNjYWxlICkgKyBOICogbWFwTi56ICk7XG5cdH1cbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjoiI2lmZGVmIENMRUFSQ09BVFxuXHR2ZWMzIGNsZWFyY29hdE5vcm1hbCA9IGdlb21ldHJ5Tm9ybWFsO1xuI2VuZGlmIixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR2ZWMzIGNsZWFyY29hdE1hcE4gPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRjbGVhcmNvYXRNYXBOLnh5ICo9IGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBjbGVhcmNvYXRNYXBOICk7XG5cdCNlbHNlXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgY2xlYXJjb2F0Tm9ybWFsLCBjbGVhcmNvYXRNYXBOLCBmYWNlRGlyZWN0aW9uICk7XG5cdCNlbmRpZlxuI2VuZGlmIixjbGVhcmNvYXRfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0TWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Um91Z2huZXNzTWFwO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Tm9ybWFsTWFwO1xuXHR1bmlmb3JtIHZlYzIgY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG4jZW5kaWYiLHBhY2tpbmc6InZlYzMgcGFja05vcm1hbFRvUkdCKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7XG59XG52ZWMzIHVucGFja1JHQlRvTm9ybWFsKCBjb25zdCBpbiB2ZWMzIHJnYiApIHtcblx0cmV0dXJuIDIuMCAqIHJnYi54eXogLSAxLjA7XG59XG5jb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuO1xuY29uc3QgdmVjMyBQYWNrRmFjdG9ycyA9IHZlYzMoIDI1Ni4gKiAyNTYuICogMjU2LiwgMjU2LiAqIDI1Ni4sIDI1Ni4gKTtcbmNvbnN0IHZlYzQgVW5wYWNrRmFjdG9ycyA9IFVucGFja0Rvd25zY2FsZSAvIHZlYzQoIFBhY2tGYWN0b3JzLCAxLiApO1xuY29uc3QgZmxvYXQgU2hpZnRSaWdodDggPSAxLiAvIDI1Ni47XG52ZWM0IHBhY2tEZXB0aFRvUkdCQSggY29uc3QgaW4gZmxvYXQgdiApIHtcblx0dmVjNCByID0gdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7XG5cdHIueXp3IC09IHIueHl6ICogU2hpZnRSaWdodDg7XHRyZXR1cm4gciAqIFBhY2tVcHNjYWxlO1xufVxuZmxvYXQgdW5wYWNrUkdCQVRvRGVwdGgoIGNvbnN0IGluIHZlYzQgdiApIHtcblx0cmV0dXJuIGRvdCggdiwgVW5wYWNrRmFjdG9ycyApO1xufVxudmVjNCBwYWNrMkhhbGZUb1JHQkEoIHZlYzIgdiApIHtcblx0dmVjNCByID0gdmVjNCggdi54LCBmcmFjdCggdi54ICogMjU1LjAgKSwgdi55LCBmcmFjdCggdi55ICogMjU1LjAgKSk7XG5cdHJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53KTtcbn1cbnZlYzIgdW5wYWNrUkdCQVRvMkhhbGYoIHZlYzQgdiApIHtcblx0cmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7XG59XG5mbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIHZpZXdaICsgbmVhciApIC8gKCBuZWFyIC0gZmFyICk7XG59XG5mbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjtcbn1cbmZsb2F0IHZpZXdaVG9QZXJzcGVjdGl2ZURlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCggbmVhciArIHZpZXdaICkgKiBmYXIgKSAvICgoIGZhciAtIG5lYXIgKSAqIHZpZXdaICk7XG59XG5mbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7XG59IixwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50OiIjaWZkZWYgUFJFTVVMVElQTElFRF9BTFBIQVxuXHRnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hO1xuI2VuZGlmIixwcm9qZWN0X3ZlcnRleDoidmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247XG4jZW5kaWZcbm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uO1xuZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsiLGRpdGhlcmluZ19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHRnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdHZlYzMgZGl0aGVyaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRcdGZsb2F0IGdyaWRfcG9zaXRpb24gPSByYW5kKCBnbF9GcmFnQ29vcmQueHkgKTtcblx0XHR2ZWMzIGRpdGhlcl9zaGlmdF9SR0IgPSB2ZWMzKCAwLjI1IC8gMjU1LjAsIC0wLjI1IC8gMjU1LjAsIDAuMjUgLyAyNTUuMCApO1xuXHRcdGRpdGhlcl9zaGlmdF9SR0IgPSBtaXgoIDIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIC0yLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCBncmlkX3Bvc2l0aW9uICk7XG5cdFx0cmV0dXJuIGNvbG9yICsgZGl0aGVyX3NoaWZ0X1JHQjtcblx0fVxuI2VuZGlmIixyb3VnaG5lc3NtYXBfZnJhZ21lbnQ6ImZsb2F0IHJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzcztcbiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHZlYzQgdGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7XG5cdHJvdWdobmVzc0ZhY3RvciAqPSB0ZXhlbFJvdWdobmVzcy5nO1xuI2VuZGlmIixyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwO1xuI2VuZGlmIixzaGFkb3dtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHRmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdHJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApO1xuXHR9XG5cdHZlYzIgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2ICkge1xuXHRcdHJldHVybiB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3csIHV2ICkgKTtcblx0fVxuXHRmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXtcblx0XHRmbG9hdCBvY2NsdXNpb24gPSAxLjA7XG5cdFx0dmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTtcblx0XHRmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApO1xuXHRcdGlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7XG5cdFx0XHRmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7XG5cdFx0XHRmbG9hdCB2YXJpYW5jZSA9IG1heCggMC4wMDAwMCwgZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSApO1xuXHRcdFx0ZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTtcdFx0XHRzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTtcdFx0XHRvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9jY2x1c2lvbjtcblx0fVxuXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xuXHRcdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0XHRzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudztcblx0XHRzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7XG5cdFx0YnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApO1xuXHRcdGJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTtcblx0XHRidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7XG5cdFx0Ym9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcblx0XHRpZiAoIGZydXN0dW1UZXN0ICkge1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSA9ICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgyID0gZHgwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkyID0gZHkwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHgzID0gZHgxIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkzID0gZHkxIC8gMi4wO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyAxNy4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeCA9IHRleGVsU2l6ZS54O1xuXHRcdFx0ZmxvYXQgZHkgPSB0ZXhlbFNpemUueTtcblx0XHRcdHZlYzIgdXYgPSBzaGFkb3dDb29yZC54eTtcblx0XHRcdHZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTtcblx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB0ZXhlbFNpemUsIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IGYueSApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0c2hhZG93ID0gVlNNU2hhZG93KCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZW5kaWZcblx0XHR9XG5cdFx0cmV0dXJuIHNoYWRvdztcblx0fVxuXHR2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7XG5cdFx0dmVjMyBhYnNWID0gYWJzKCB2ICk7XG5cdFx0ZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7XG5cdFx0YWJzViAqPSBzY2FsZVRvQ3ViZTtcblx0XHR2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7XG5cdFx0dmVjMiBwbGFuYXIgPSB2Lnh5O1xuXHRcdGZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7XG5cdFx0ZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsO1xuXHRcdGlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGlmICggdi56ID4gMC4wIClcblx0XHRcdFx0cGxhbmFyLnggPSA0LjAgLSB2Lng7XG5cdFx0fSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25YID0gc2lnbiggdi54ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7XG5cdFx0fSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHtcblx0XHRcdGZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7XG5cdFx0XHRwbGFuYXIueCA9IHYueCArIDIuMCAqIHNpZ25ZICsgMi4wO1xuXHRcdFx0cGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDtcblx0XHR9XG5cdFx0cmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApO1xuXHR9XG5cdGZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkge1xuXHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7XG5cdFx0dmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7XG5cdFx0ZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTtcdFx0ZHAgKz0gc2hhZG93Qmlhcztcblx0XHR2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApO1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHR2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IHBvaW50U2hhZG93TWF0cml4WyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFGYXI7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXBfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHR2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdCNlbmRpZlxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBzcG90TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogcG9pbnRMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlBvaW50U2hhZG93Q29vcmRbIGkgXSA9IHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmIixzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6ImZsb2F0IGdldFNoYWRvd01hc2soKSB7XG5cdGZsb2F0IHNoYWRvdyA9IDEuMDtcblx0I2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0RGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodC5zaGFkb3dCaWFzLCBwb2ludExpZ2h0LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjZW5kaWZcblx0cmV0dXJuIHNoYWRvdztcbn0iLHNraW5iYXNlX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTtcblx0bWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7XG5cdG1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApO1xuXHRtYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTtcbiNlbmRpZiIsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXg7XG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTtcblx0I2lmZGVmIEJPTkVfVEVYVFVSRVxuXHRcdHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlO1xuXHRcdHVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRmbG9hdCBqID0gaSAqIDQuMDtcblx0XHRcdGZsb2F0IHggPSBtb2QoIGosIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdGZsb2F0IGR5ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0eSA9IGR5ICogKCB5ICsgMC41ICk7XG5cdFx0XHR2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYyID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAxLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7XG5cdFx0XHR2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7XG5cdFx0XHRtYXQ0IGJvbmUgPSBtYXQ0KCB2MSwgdjIsIHYzLCB2NCApO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZWxzZVxuXHRcdHVuaWZvcm0gbWF0NCBib25lTWF0cmljZXNbIE1BWF9CT05FUyBdO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdG1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmIixza2lubmluZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0dmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0dmVjNCBza2lubmVkID0gdmVjNCggMC4wICk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54O1xuXHRza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTtcblx0c2tpbm5lZCArPSBib25lTWF0WiAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lno7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53O1xuXHR0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6O1xuI2VuZGlmIixza2lubm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHRtYXQ0IHNraW5NYXRyaXggPSBtYXQ0KCAwLjAgKTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnggKiBib25lTWF0WDtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnkgKiBib25lTWF0WTtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnogKiBib25lTWF0Wjtcblx0c2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LncgKiBib25lTWF0Vztcblx0c2tpbk1hdHJpeCA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XG5cdG9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRvYmplY3RUYW5nZW50ID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjZW5kaWZcbiNlbmRpZiIsc3BlY3VsYXJtYXBfZnJhZ21lbnQ6ImZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7XG4jaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApO1xuXHRzcGVjdWxhclN0cmVuZ3RoID0gdGV4ZWxTcGVjdWxhci5yO1xuI2Vsc2Vcblx0c3BlY3VsYXJTdHJlbmd0aCA9IDEuMDtcbiNlbmRpZiIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKVxuXHRnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG52ZWMzIExpbmVhclRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRyZXR1cm4gdG9uZU1hcHBpbmdFeHBvc3VyZSAqIGNvbG9yO1xufVxudmVjMyBSZWluaGFyZFRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yIC8gKCB2ZWMzKCAxLjAgKSArIGNvbG9yICkgKTtcbn1cbnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdGNvbG9yID0gbWF4KCB2ZWMzKCAwLjAgKSwgY29sb3IgLSAwLjAwNCApO1xuXHRyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApO1xufVxudmVjMyBSUlRBbmRPRFRGaXQoIHZlYzMgdiApIHtcblx0dmVjMyBhID0gdiAqICggdiArIDAuMDI0NTc4NiApIC0gMC4wMDAwOTA1Mzc7XG5cdHZlYzMgYiA9IHYgKiAoIDAuOTgzNzI5ICogdiArIDAuNDMyOTUxMCApICsgMC4yMzgwODE7XG5cdHJldHVybiBhIC8gYjtcbn1cbnZlYzMgQUNFU0ZpbG1pY1RvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb25zdCBtYXQzIEFDRVNJbnB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggMC41OTcxOSwgMC4wNzYwMCwgMC4wMjg0MCApLFx0XHR2ZWMzKCAwLjM1NDU4LCAwLjkwODM0LCAwLjEzMzgzICksXG5cdFx0dmVjMyggMC4wNDgyMywgMC4wMTU2NiwgMC44Mzc3NyApXG5cdCk7XG5cdGNvbnN0IG1hdDMgQUNFU091dHB1dE1hdCA9IG1hdDMoXG5cdFx0dmVjMyggIDEuNjA0NzUsIC0wLjEwMjA4LCAtMC4wMDMyNyApLFx0XHR2ZWMzKCAtMC41MzEwOCwgIDEuMTA4MTMsIC0wLjA3Mjc2ICksXG5cdFx0dmVjMyggLTAuMDczNjcsIC0wLjAwNjA1LCAgMS4wNzYwMiApXG5cdCk7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmUgLyAwLjY7XG5cdGNvbG9yID0gQUNFU0lucHV0TWF0ICogY29sb3I7XG5cdGNvbG9yID0gUlJUQW5kT0RURml0KCBjb2xvciApO1xuXHRjb2xvciA9IEFDRVNPdXRwdXRNYXQgKiBjb2xvcjtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciApO1xufVxudmVjMyBDdXN0b21Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHsgcmV0dXJuIGNvbG9yOyB9Iix0cmFuc21pc3Npb25fZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdGZsb2F0IHRyYW5zbWlzc2lvbkZhY3RvciA9IHRyYW5zbWlzc2lvbjtcblx0ZmxvYXQgdGhpY2tuZXNzRmFjdG9yID0gdGhpY2tuZXNzO1xuXHQjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHRcdHRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQXG5cdFx0dGhpY2tuZXNzRmFjdG9yICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nO1xuXHQjZW5kaWZcblx0dmVjMyBwb3MgPSB2V29ybGRQb3NpdGlvbi54eXogLyB2V29ybGRQb3NpdGlvbi53O1xuXHR2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7XG5cdHZlYzMgbiA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRmbG9hdCBpb3IgPSAoIDEuMCArIDAuNCAqIHJlZmxlY3Rpdml0eSApIC8gKCAxLjAgLSAwLjQgKiByZWZsZWN0aXZpdHkgKTtcblx0dmVjMyB0cmFuc21pc3Npb24gPSB0cmFuc21pc3Npb25GYWN0b3IgKiBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKFxuXHRcdG4sIHYsIHJvdWdobmVzc0ZhY3RvciwgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLFxuXHRcdHBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIGlvciwgdGhpY2tuZXNzRmFjdG9yLFxuXHRcdGF0dGVudWF0aW9uVGludCwgYXR0ZW51YXRpb25EaXN0YW5jZSApO1xuXHR0b3RhbERpZmZ1c2UgPSBtaXgoIHRvdGFsRGlmZnVzZSwgdHJhbnNtaXNzaW9uLCB0cmFuc21pc3Npb25GYWN0b3IgKTtcbiNlbmRpZiIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OXG5cdCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9USElDS05FU1NNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzIgdHJhbnNtaXNzaW9uU2FtcGxlclNpemU7XG5cdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7XG5cdHVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7XG5cdHZhcnlpbmcgdmVjNCB2V29ybGRQb3NpdGlvbjtcblx0dmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkodmVjMyBuLCB2ZWMzIHYsIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgaW9yLCBtYXQ0IG1vZGVsTWF0cml4KSB7XG5cdFx0dmVjMyByZWZyYWN0aW9uVmVjdG9yID0gcmVmcmFjdCgtdiwgbm9ybWFsaXplKG4pLCAxLjAgLyBpb3IpO1xuXHRcdHZlYzMgbW9kZWxTY2FsZTtcblx0XHRtb2RlbFNjYWxlLnggPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFswXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnkgPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsxXS54eXopKTtcblx0XHRtb2RlbFNjYWxlLnogPSBsZW5ndGgodmVjMyhtb2RlbE1hdHJpeFsyXS54eXopKTtcblx0XHRyZXR1cm4gbm9ybWFsaXplKHJlZnJhY3Rpb25WZWN0b3IpICogdGhpY2tuZXNzICogbW9kZWxTY2FsZTtcblx0fVxuXHRmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgaW9yKSB7XG5cdFx0cmV0dXJuIHJvdWdobmVzcyAqIGNsYW1wKGlvciAqIDIuMCAtIDIuMCwgMC4wLCAxLjApO1xuXHR9XG5cdHZlYzMgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKHZlYzIgZnJhZ0Nvb3JkLCBmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGlvcikge1xuXHRcdGZsb2F0IGZyYW1lYnVmZmVyTG9kID0gbG9nMih0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54KSAqIGFwcGx5SW9yVG9Sb3VnaG5lc3Mocm91Z2huZXNzLCBpb3IpO1xuXHRcdHJldHVybiB0ZXh0dXJlMkRMb2RFWFQodHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCkucmdiO1xuXHR9XG5cdHZlYzMgYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih2ZWMzIHJhZGlhbmNlLCBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0aWYgKGF0dGVudWF0aW9uRGlzdGFuY2UgPT0gMC4wKSB7XG5cdFx0XHRyZXR1cm4gcmFkaWFuY2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZlYzMgYXR0ZW51YXRpb25Db2VmZmljaWVudCA9IC1sb2coYXR0ZW51YXRpb25Db2xvcikgLyBhdHRlbnVhdGlvbkRpc3RhbmNlO1xuXHRcdFx0dmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKC1hdHRlbnVhdGlvbkNvZWZmaWNpZW50ICogdHJhbnNtaXNzaW9uRGlzdGFuY2UpO1x0XHRcdHJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7XG5cdFx0fVxuXHR9XG5cdHZlYzMgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbih2ZWMzIG4sIHZlYzMgdiwgZmxvYXQgcGVyY2VwdHVhbFJvdWdobmVzcywgdmVjMyBiYXNlQ29sb3IsIHZlYzMgc3BlY3VsYXJDb2xvcixcblx0XHR2ZWMzIHBvc2l0aW9uLCBtYXQ0IG1vZGVsTWF0cml4LCBtYXQ0IHZpZXdNYXRyaXgsIG1hdDQgcHJvak1hdHJpeCwgZmxvYXQgaW9yLCBmbG9hdCB0aGlja25lc3MsXG5cdFx0dmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlKSB7XG5cdFx0dmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkobiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4KTtcblx0XHR2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTtcblx0XHR2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNChyZWZyYWN0ZWRSYXlFeGl0LCAxLjApO1xuXHRcdHZlYzIgcmVmcmFjdGlvbkNvb3JkcyA9IG5kY1Bvcy54eSAvIG5kY1Bvcy53O1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgKz0gMS4wO1xuXHRcdHJlZnJhY3Rpb25Db29yZHMgLz0gMi4wO1xuXHRcdHZlYzMgdHJhbnNtaXR0ZWRMaWdodCA9IGdldFRyYW5zbWlzc2lvblNhbXBsZShyZWZyYWN0aW9uQ29vcmRzLCBwZXJjZXB0dWFsUm91Z2huZXNzLCBpb3IpO1xuXHRcdHZlYzMgYXR0ZW51YXRlZENvbG9yID0gYXBwbHlWb2x1bWVBdHRlbnVhdGlvbih0cmFuc21pdHRlZExpZ2h0LCBsZW5ndGgodHJhbnNtaXNzaW9uUmF5KSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSk7XG5cdFx0cmV0dXJuICgxLjAgLSBzcGVjdWxhckNvbG9yKSAqIGF0dGVudWF0ZWRDb2xvciAqIGJhc2VDb2xvcjtcblx0fVxuI2VuZGlmIix1dl9wYXJzX2ZyYWdtZW50OiIjaWYgKCBkZWZpbmVkKCBVU0VfVVYgKSAmJiAhIGRlZmluZWQoIFVWU19WRVJURVhfT05MWSApIClcblx0dmFyeWluZyB2ZWMyIHZVdjtcbiNlbmRpZiIsdXZfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0I2lmZGVmIFVWU19WRVJURVhfT05MWVxuXHRcdHZlYzIgdlV2O1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMiB2VXY7XG5cdCNlbmRpZlxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWYiLHV2X3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuI2VuZGlmIix1djJfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuI2VuZGlmIix1djJfcGFyc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHRhdHRyaWJ1dGUgdmVjMiB1djI7XG5cdHZhcnlpbmcgdmVjMiB2VXYyO1xuXHR1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtO1xuI2VuZGlmIix1djJfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTtcbiNlbmRpZiIsd29ybGRwb3NfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKSB8fCBkZWZpbmVkICggVVNFX1RSQU5TTUlTU0lPTiApXG5cdHZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0I2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdFx0d29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG4jZW5kaWYiLGJhY2tncm91bmRfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdDJEO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdDJELCB2VXYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsY3ViZV9mcmFnOiIjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgdlJlZmxlY3QgPSB2V29ybGREaXJlY3Rpb247XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IGVudkNvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0ZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdGZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoIDEuMCAtIGZyYWdDb29yZFogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTtcblx0I2VuZGlmXG59IixkZXB0aF92ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dztcbn0iLGRpc3RhbmNlUkdCQV9mcmFnOiIjZGVmaW5lIERJU1RBTkNFXG51bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247XG51bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTtcbnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7XG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluICgpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7XG5cdGRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTtcblx0ZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApO1xufSIsZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IixlcXVpcmVjdF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLGxpbmVkYXNoZWRfdmVydDoidW5pZm9ybSBmbG9hdCBzY2FsZTtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdHZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNoYmFzaWNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGJhc2ljX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2lmIGRlZmluZWQgKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9TS0lOTklORyApXG5cdFx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hsYW1iZXJ0X2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobGFtYmVydF92ZXJ0OiIjZGVmaW5lIExBTUJFUlRcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2htYXRjYXBfZnJhZzoiI2RlZmluZSBNQVRDQVBcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwO1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHR2ZWMzIHZpZXdEaXIgPSBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcblx0dmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApO1xuXHR2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApO1xuXHR2ZWMyIHV2ID0gdmVjMiggZG90KCB4LCBub3JtYWwgKSwgZG90KCB5LCBub3JtYWwgKSApICogMC40OTUgKyAwLjU7XG5cdCNpZmRlZiBVU0VfTUFUQ0FQXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApO1xuXHRcdG1hdGNhcENvbG9yID0gbWF0Y2FwVGV4ZWxUb0xpbmVhciggbWF0Y2FwQ29sb3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggMS4wICk7XG5cdCNlbmRpZlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaG1hdGNhcF92ZXJ0OiIjZGVmaW5lIE1BVENBUFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2lmbmRlZiBGTEFUX1NIQURFRFxuXHRcdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdFx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbn0iLG1lc2h0b29uX2ZyYWc6IiNkZWZpbmUgVE9PTlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHRvb25fdmVydDoiI2RlZmluZSBUT09OXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBob25nX3ZlcnQ6IiNkZWZpbmUgUEhPTkdcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBTUEVDVUxBUlxuI2VuZGlmXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzO1xudW5pZm9ybSBmbG9hdCBtZXRhbG5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZkZWYgVVNFX1RSQU5TTUlTU0lPTlxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjtcblx0dW5pZm9ybSBmbG9hdCB0aGlja25lc3M7XG5cdHVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTtcblx0dW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uVGludDtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIFNQRUNVTEFSXG5cdHVuaWZvcm0gZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHk7XG5cdHVuaWZvcm0gdmVjMyBzcGVjdWxhclRpbnQ7XG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckludGVuc2l0eU1hcDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU1BFQ1VMQVJUSU5UTUFQXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJUaW50TWFwO1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHJvdWdobmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgdG90YWxEaWZmdXNlID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyO1xuXHQjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB0b3RhbERpZmZ1c2UgKyB0b3RhbFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dmFyeWluZyB2ZWM0IHZXb3JsZFBvc2l0aW9uO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuI2lmZGVmIFVTRV9UUkFOU01JU1NJT05cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uO1xuI2VuZGlmXG59Iixub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsbm9ybWFsX3ZlcnQ6IiNkZWZpbmUgTk9STUFMXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLHBvaW50c19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLHBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc2hhZG93X3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc3ByaXRlX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNwcml0ZV92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHJvdGF0aW9uO1xudW5pZm9ybSB2ZWMyIGNlbnRlcjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0dmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdHZlYzIgc2NhbGU7XG5cdHNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApO1xuXHRzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTtcblx0I2lmbmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIHNjYWxlICo9IC0gbXZQb3NpdGlvbi56O1xuXHQjZW5kaWZcblx0dmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTtcblx0dmVjMiByb3RhdGVkUG9zaXRpb247XG5cdHJvdGF0ZWRQb3NpdGlvbi54ID0gY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0cm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRtdlBvc2l0aW9uLnh5ICs9IHJvdGF0ZWRQb3NpdGlvbjtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSJ9LHpzdD17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgUnJ0KDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3ICRpdH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgJGl0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH19LHNwZWN1bGFybWFwOntzcGVjdWxhck1hcDp7dmFsdWU6bnVsbH19LGVudm1hcDp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX0scmVmbGVjdGl2aXR5Ont2YWx1ZToxfSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH0sbWF4TWlwTGV2ZWw6e3ZhbHVlOjB9fSxhb21hcDp7YW9NYXA6e3ZhbHVlOm51bGx9LGFvTWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sbGlnaHRtYXA6e2xpZ2h0TWFwOnt2YWx1ZTpudWxsfSxsaWdodE1hcEludGVuc2l0eTp7dmFsdWU6MX19LGVtaXNzaXZlbWFwOntlbWlzc2l2ZU1hcDp7dmFsdWU6bnVsbH19LGJ1bXBtYXA6e2J1bXBNYXA6e3ZhbHVlOm51bGx9LGJ1bXBTY2FsZTp7dmFsdWU6MX19LG5vcm1hbG1hcDp7bm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxub3JtYWxTY2FsZTp7dmFsdWU6bmV3IFFpdCgxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6MjVlLTV9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MmUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IFJydCgxNjc3NzIxNSl9fSxsaWdodHM6e2FtYmllbnRMaWdodENvbG9yOnt2YWx1ZTpbXX0sbGlnaHRQcm9iZTp7dmFsdWU6W119LGRpcmVjdGlvbmFsTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sY29sb3I6e319fSxkaXJlY3Rpb25hbExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sZGlyZWN0aW9uYWxTaGFkb3dNYXA6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHNwb3RMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRpcmVjdGlvbjp7fSxkaXN0YW5jZTp7fSxjb25lQ29zOnt9LHBlbnVtYnJhQ29zOnt9LGRlY2F5Ont9fX0sc3BvdExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sc3BvdFNoYWRvd01hcDp7dmFsdWU6W119LHNwb3RTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxwb2ludExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGVjYXk6e30sZGlzdGFuY2U6e319fSxwb2ludExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0scG9pbnRTaGFkb3dNYXA6e3ZhbHVlOltdfSxwb2ludFNoYWRvd01hdHJpeDp7dmFsdWU6W119LGhlbWlzcGhlcmVMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxza3lDb2xvcjp7fSxncm91bmRDb2xvcjp7fX19LHJlY3RBcmVhTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSx3aWR0aDp7fSxoZWlnaHQ6e319fSxsdGNfMTp7dmFsdWU6bnVsbH0sbHRjXzI6e3ZhbHVlOm51bGx9fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBScnQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyAkaXR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBScnQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBRaXQoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyAkaXR9fX0sSXN0PXtiYXNpYzp7dW5pZm9ybXM6Z3N0KFt6c3QuY29tbW9uLHpzdC5zcGVjdWxhcm1hcCx6c3QuZW52bWFwLHpzdC5hb21hcCx6c3QubGlnaHRtYXAsenN0LmZvZ10pLHZlcnRleFNoYWRlcjpOc3QubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0Lm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LnNwZWN1bGFybWFwLHpzdC5lbnZtYXAsenN0LmFvbWFwLHpzdC5saWdodG1hcCx6c3QuZW1pc3NpdmVtYXAsenN0LmZvZyx6c3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IFJydCgwKX19XSksdmVydGV4U2hhZGVyOk5zdC5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6Z3N0KFt6c3QuY29tbW9uLHpzdC5zcGVjdWxhcm1hcCx6c3QuZW52bWFwLHpzdC5hb21hcCx6c3QubGlnaHRtYXAsenN0LmVtaXNzaXZlbWFwLHpzdC5idW1wbWFwLHpzdC5ub3JtYWxtYXAsenN0LmRpc3BsYWNlbWVudG1hcCx6c3QuZm9nLHpzdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgUnJ0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IFJydCgxMTE4NDgxKX0sc2hpbmluZXNzOnt2YWx1ZTozMH19XSksdmVydGV4U2hhZGVyOk5zdC5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjpOc3QubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LmVudm1hcCx6c3QuYW9tYXAsenN0LmxpZ2h0bWFwLHpzdC5lbWlzc2l2ZW1hcCx6c3QuYnVtcG1hcCx6c3Qubm9ybWFsbWFwLHpzdC5kaXNwbGFjZW1lbnRtYXAsenN0LnJvdWdobmVzc21hcCx6c3QubWV0YWxuZXNzbWFwLHpzdC5mb2csenN0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBScnQoMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpOc3QubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0Lm1lc2hwaHlzaWNhbF9mcmFnfSx0b29uOnt1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LmFvbWFwLHpzdC5saWdodG1hcCx6c3QuZW1pc3NpdmVtYXAsenN0LmJ1bXBtYXAsenN0Lm5vcm1hbG1hcCx6c3QuZGlzcGxhY2VtZW50bWFwLHpzdC5ncmFkaWVudG1hcCx6c3QuZm9nLHpzdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgUnJ0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6TnN0Lm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6Z3N0KFt6c3QuY29tbW9uLHpzdC5idW1wbWFwLHpzdC5ub3JtYWxtYXAsenN0LmRpc3BsYWNlbWVudG1hcCx6c3QuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpOc3QubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6Z3N0KFt6c3QucG9pbnRzLHpzdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6TnN0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjpOc3QubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjpOc3QuZGVwdGhfdmVydCxmcmFnbWVudFNoYWRlcjpOc3QuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3Jtczpnc3QoW3pzdC5jb21tb24senN0LmJ1bXBtYXAsenN0Lm5vcm1hbG1hcCx6c3QuZGlzcGxhY2VtZW50bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6TnN0Lm5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5ub3JtYWxfZnJhZ30sc3ByaXRlOnt1bmlmb3Jtczpnc3QoW3pzdC5zcHJpdGUsenN0LmZvZ10pLHZlcnRleFNoYWRlcjpOc3Quc3ByaXRlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0LnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyAkaXR9LHQyRDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpOc3QuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOk5zdC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOmdzdChbenN0LmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOk5zdC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0LmN1YmVfZnJhZ30sZXF1aXJlY3Q6e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6TnN0LmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6Z3N0KFt6c3QuY29tbW9uLHpzdC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgY2F0fSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxZTN9fV0pLHZlcnRleFNoYWRlcjpOc3QuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0LmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOmdzdChbenN0LmxpZ2h0cyx6c3QuZm9nLHtjb2xvcjp7dmFsdWU6bmV3IFJydCgwKX0sb3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOk5zdC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpOc3Quc2hhZG93X2ZyYWd9fTtmdW5jdGlvbiBIc3QodCxlLG4sbyxpKXtjb25zdCBhPW5ldyBScnQoMCk7bGV0IHIscyxsPTAsYz1udWxsLGQ9MCxwPW51bGw7ZnVuY3Rpb24gbSh0LGUpe24uYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixlLGkpfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxlPTEpe2Euc2V0KHQpLGw9ZSxtKGEsbCl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtsPXQsbShhLGwpfSxyZW5kZXI6ZnVuY3Rpb24gdShuLGkpe2xldCB1PSExLGY9ITA9PT1pLmlzU2NlbmU/aS5iYWNrZ3JvdW5kOm51bGw7ZiYmZi5pc1RleHR1cmUmJihmPWUuZ2V0KGYpKTtjb25zdCBnPXQueHIsaD1nLmdldFNlc3Npb24mJmcuZ2V0U2Vzc2lvbigpO2gmJiJhZGRpdGl2ZSI9PT1oLmVudmlyb25tZW50QmxlbmRNb2RlJiYoZj1udWxsKSxudWxsPT09Zj9tKGEsbCk6ZiYmZi5pc0NvbG9yJiYobShmLDEpLHU9ITApLCh0LmF1dG9DbGVhcnx8dSkmJnQuY2xlYXIodC5hdXRvQ2xlYXJDb2xvcix0LmF1dG9DbGVhckRlcHRoLHQuYXV0b0NsZWFyU3RlbmNpbCksZiYmKGYuaXNDdWJlVGV4dHVyZXx8Zi5tYXBwaW5nPT09bWl0KT8odm9pZCAwPT09cyYmKHM9bmV3IHBzdChuZXcgdXN0KDEsMSwxKSxuZXcgYnN0KHtuYW1lOiJCYWNrZ3JvdW5kQ3ViZU1hdGVyaWFsIix1bmlmb3Jtczpmc3QoSXN0LmN1YmUudW5pZm9ybXMpLHZlcnRleFNoYWRlcjpJc3QuY3ViZS52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6SXN0LmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZToxLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIikscy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoInV2Iikscy5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbih0LGUsbil7dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24obi5tYXRyaXhXb3JsZCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzLm1hdGVyaWFsLCJlbnZNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmlmb3Jtcy5lbnZNYXAudmFsdWV9fSksby51cGRhdGUocykpLHMubWF0ZXJpYWwudW5pZm9ybXMuZW52TWFwLnZhbHVlPWYscy5tYXRlcmlhbC51bmlmb3Jtcy5mbGlwRW52TWFwLnZhbHVlPWYuaXNDdWJlVGV4dHVyZSYmITE9PT1mLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGM9PT1mJiZkPT09Zi52ZXJzaW9uJiZwPT09dC50b25lTWFwcGluZ3x8KHMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz1mLGQ9Zi52ZXJzaW9uLHA9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHMscy5nZW9tZXRyeSxzLm1hdGVyaWFsLDAsMCxudWxsKSk6ZiYmZi5pc1RleHR1cmUmJih2b2lkIDA9PT1yJiYocj1uZXcgcHN0KG5ldyBUc3QoMiwyKSxuZXcgYnN0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOmZzdChJc3QuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOklzdC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpJc3QuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLHIuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoci5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLG8udXBkYXRlKHIpKSxyLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1mLCEwPT09Zi5tYXRyaXhBdXRvVXBkYXRlJiZmLnVwZGF0ZU1hdHJpeCgpLHIubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShmLm1hdHJpeCksYz09PWYmJmQ9PT1mLnZlcnNpb24mJnA9PT10LnRvbmVNYXBwaW5nfHwoci5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxjPWYsZD1mLnZlcnNpb24scD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQocixyLmdlb21ldHJ5LHIubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIEZzdCh0LGUsbixvKXtjb25zdCBpPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxhPW8uaXNXZWJHTDI/bnVsbDplLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxyPW8uaXNXZWJHTDJ8fG51bGwhPT1hLHM9e30sbD1tKG51bGwpO2xldCBjPWw7ZnVuY3Rpb24gZChlKXtyZXR1cm4gby5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShlKTphLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBwKGUpe3JldHVybiBvLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkoZSk6YS5kZWxldGVWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBtKHQpe2NvbnN0IGU9W10sbj1bXSxvPVtdO2ZvcihsZXQgdD0wO3Q8aTt0KyspZVt0XT0wLG5bdF09MCxvW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOmUsZW5hYmxlZEF0dHJpYnV0ZXM6bixhdHRyaWJ1dGVEaXZpc29yczpvLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gdSgpe2NvbnN0IHQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdPTB9ZnVuY3Rpb24gZih0KXtnKHQsMCl9ZnVuY3Rpb24gZyhuLGkpe2NvbnN0IGE9Yy5lbmFibGVkQXR0cmlidXRlcyxyPWMuYXR0cmlidXRlRGl2aXNvcnM7Yy5uZXdBdHRyaWJ1dGVzW25dPTEsMD09PWFbbl0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pLGFbbl09MSkscltuXSE9PWkmJigoby5pc1dlYkdMMj90OmUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW28uaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShuLGkpLHJbbl09aSl9ZnVuY3Rpb24gaCgpe2NvbnN0IGU9Yy5uZXdBdHRyaWJ1dGVzLG49Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IG89MCxpPW4ubGVuZ3RoO288aTtvKyspbltvXSE9PWVbb10mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShvKSxuW29dPTApfWZ1bmN0aW9uIGIoZSxuLGksYSxyLHMpeyEwIT09by5pc1dlYkdMMnx8NTEyNCE9PWkmJjUxMjUhPT1pP3QudmVydGV4QXR0cmliUG9pbnRlcihlLG4saSxhLHIscyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihlLG4saSxyLHMpfWZ1bmN0aW9uIHkoKXtfKCksYyE9PWwmJihjPWwsZChjLm9iamVjdCkpfWZ1bmN0aW9uIF8oKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIEMoaSxsLHAseSxfKXtsZXQgQz0hMTtpZihyKXtjb25zdCBlPShmdW5jdGlvbiBNKGUsbixpKXtjb25zdCByPSEwPT09aS53aXJlZnJhbWU7bGV0IGw9c1tlLmlkXTt2b2lkIDA9PT1sJiYobD17fSxzW2UuaWRdPWwpO2xldCBjPWxbbi5pZF07dm9pZCAwPT09YyYmKGM9e30sbFtuLmlkXT1jKTtsZXQgZD1jW3JdO3JldHVybiB2b2lkIDA9PT1kJiYoZD1tKChmdW5jdGlvbiBwKCl7cmV0dXJuIG8uaXNXZWJHTDI/dC5jcmVhdGVWZXJ0ZXhBcnJheSgpOmEuY3JlYXRlVmVydGV4QXJyYXlPRVMoKX0pKCkpLGNbcl09ZCksZH0pKHkscCxsKTtjIT09ZSYmKGM9ZSxkKGMub2JqZWN0KSksQz0oZnVuY3Rpb24gdih0LGUpe2NvbnN0IG49Yy5hdHRyaWJ1dGVzLG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1uW3RdLGE9b1t0XTtpZih2b2lkIDA9PT1lKXJldHVybiEwO2lmKGUuYXR0cmlidXRlIT09YSlyZXR1cm4hMDtpZihlLmRhdGEhPT1hLmRhdGEpcmV0dXJuITA7aSsrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1pfHxjLmluZGV4IT09ZX0pKHksXyksQyYmKGZ1bmN0aW9uIHgodCxlKXtjb25zdCBuPXt9LG89dC5hdHRyaWJ1dGVzO2xldCBpPTA7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3QgZT1vW3RdLGE9e307YS5hdHRyaWJ1dGU9ZSxlLmRhdGEmJihhLmRhdGE9ZS5kYXRhKSxuW3RdPWEsaSsrfWMuYXR0cmlidXRlcz1uLGMuYXR0cmlidXRlc051bT1pLGMuaW5kZXg9ZX0pKHksXyl9ZWxzZXtjb25zdCB0PSEwPT09bC53aXJlZnJhbWU7Yy5nZW9tZXRyeT09PXkuaWQmJmMucHJvZ3JhbT09PXAuaWQmJmMud2lyZWZyYW1lPT09dHx8KGMuZ2VvbWV0cnk9eS5pZCxjLnByb2dyYW09cC5pZCxjLndpcmVmcmFtZT10LEM9ITApfSEwPT09aS5pc0luc3RhbmNlZE1lc2gmJihDPSEwKSxudWxsIT09XyYmbi51cGRhdGUoXywzNDk2MyksQyYmKChmdW5jdGlvbiBPKGksYSxyLHMpe2lmKCExPT09by5pc1dlYkdMMiYmKGkuaXNJbnN0YW5jZWRNZXNofHxzLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47dSgpO2NvbnN0IGw9cy5hdHRyaWJ1dGVzLGM9ci5nZXRBdHRyaWJ1dGVzKCksZD1hLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3Qgbz1jW2VdO2lmKG8+PTApe2NvbnN0IGE9bFtlXTtpZih2b2lkIDAhPT1hKXtjb25zdCBlPWEubm9ybWFsaXplZCxpPWEuaXRlbVNpemUscj1uLmdldChhKTtpZih2b2lkIDA9PT1yKWNvbnRpbnVlO2NvbnN0IGw9ci5idWZmZXIsYz1yLnR5cGUsZD1yLmJ5dGVzUGVyRWxlbWVudDtpZihhLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IG49YS5kYXRhLHI9bi5zdHJpZGUscD1hLm9mZnNldDtuJiZuLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KGcobyxuLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PW4ubWVzaFBlckF0dHJpYnV0ZSpuLmNvdW50KSk6ZihvKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksYihvLGksYyxlLHIqZCxwKmQpfWVsc2UgYS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT8oZyhvLGEubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9YS5tZXNoUGVyQXR0cmlidXRlKmEuY291bnQpKTpmKG8pLHQuYmluZEJ1ZmZlcigzNDk2MixsKSxiKG8saSxjLGUsMCwwKX1lbHNlIGlmKCJpbnN0YW5jZU1hdHJpeCI9PT1lKXtjb25zdCBlPW4uZ2V0KGkuaW5zdGFuY2VNYXRyaXgpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3QgYT1lLmJ1ZmZlcixyPWUudHlwZTtnKG8rMCwxKSxnKG8rMSwxKSxnKG8rMiwxKSxnKG8rMywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsYSksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8rMCw0LHIsITEsNjQsMCksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8rMSw0LHIsITEsNjQsMTYpLHQudmVydGV4QXR0cmliUG9pbnRlcihvKzIsNCxyLCExLDY0LDMyKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIobyszLDQsciwhMSw2NCw0OCl9ZWxzZSBpZigiaW5zdGFuY2VDb2xvciI9PT1lKXtjb25zdCBlPW4uZ2V0KGkuaW5zdGFuY2VDb2xvcik7aWYodm9pZCAwPT09ZSljb250aW51ZTtjb25zdCBhPWUuYnVmZmVyLHI9ZS50eXBlO2cobywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsYSksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKG8sMyxyLCExLDEyLDApfWVsc2UgaWYodm9pZCAwIT09ZCl7Y29uc3Qgbj1kW2VdO2lmKHZvaWQgMCE9PW4pc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYobyxuKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYobyxuKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYobyxuKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KG8sbil9fX19aCgpfSkoaSxsLHAseSksbnVsbCE9PV8mJnQuYmluZEJ1ZmZlcigzNDk2MyxuLmdldChfKS5idWZmZXIpKX0scmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTpfLGRpc3Bvc2U6ZnVuY3Rpb24gTSgpe3koKTtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4pcChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiB2KHQpe2lmKHZvaWQgMD09PXNbdC5pZF0pcmV0dXJuO2NvbnN0IGU9c1t0LmlkXTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbilwKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiB4KHQpe2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXTtpZih2b2lkIDA9PT1uW3QuaWRdKWNvbnRpbnVlO2NvbnN0IG89blt0LmlkXTtmb3IoY29uc3QgdCBpbiBvKXAob1t0XS5vYmplY3QpLGRlbGV0ZSBvW3RdO2RlbGV0ZSBuW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6dSxlbmFibGVBdHRyaWJ1dGU6ZixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpofX1mdW5jdGlvbiBMc3QodCxlLG4sbyl7Y29uc3QgaT1vLmlzV2ViR0wyO2xldCBhO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiByKHQpe2E9dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gcyhlLG8pe3QuZHJhd0FycmF5cyhhLGUsbyksbi51cGRhdGUobyxhLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBsKG8scixzKXtpZigwPT09cylyZXR1cm47bGV0IGwsYztpZihpKWw9dCxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGw9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1sKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2xbY10oYSxvLHIscyksbi51cGRhdGUocixhLHMpfX1mdW5jdGlvbiBCc3QodCxlLG4pe2xldCBvO2Z1bmN0aW9uIGkoZSl7aWYoImhpZ2hwIj09PWUpe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7ZT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09ZSYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCBhPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgcj12b2lkIDAhPT1uLnByZWNpc2lvbj9uLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IHM9aShyKTtzIT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLHIsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixzLCJpbnN0ZWFkLiIpLHI9cyk7Y29uc3QgbD1hfHxlLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIiksYz0hMD09PW4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixkPXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxwPXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxtPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLHU9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLGY9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLGc9dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLGg9dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLGI9dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLHk9cD4wLF89YXx8ZS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iik7cmV0dXJue2lzV2ViR0wyOmEsZHJhd0J1ZmZlcnM6bCxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIEMoKXtpZih2b2lkIDAhPT1vKXJldHVybiBvO2lmKCEwPT09ZS5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKXtjb25zdCBuPWUuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtvPXQuZ2V0UGFyYW1ldGVyKG4uTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKX1lbHNlIG89MDtyZXR1cm4gb30sZ2V0TWF4UHJlY2lzaW9uOmkscHJlY2lzaW9uOnIsbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpjLG1heFRleHR1cmVzOmQsbWF4VmVydGV4VGV4dHVyZXM6cCxtYXhUZXh0dXJlU2l6ZTptLG1heEN1YmVtYXBTaXplOnUsbWF4QXR0cmlidXRlczpmLG1heFZlcnRleFVuaWZvcm1zOmcsbWF4VmFyeWluZ3M6aCxtYXhGcmFnbWVudFVuaWZvcm1zOmIsdmVydGV4VGV4dHVyZXM6eSxmbG9hdEZyYWdtZW50VGV4dHVyZXM6XyxmbG9hdFZlcnRleFRleHR1cmVzOnkmJl8sbWF4U2FtcGxlczphP3QuZ2V0UGFyYW1ldGVyKDM2MTgzKTowfX1mdW5jdGlvbiBWc3QodCl7Y29uc3QgZT10aGlzO2xldCBuPW51bGwsbz0wLGk9ITEsYT0hMTtjb25zdCByPW5ldyBrc3Qscz1uZXcgJGl0LGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09biYmKGwudmFsdWU9bixsLm5lZWRzVXBkYXRlPW8+MCksZS5udW1QbGFuZXM9byxlLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIGQodCxuLG8saSl7Y29uc3QgYT1udWxsIT09dD90Lmxlbmd0aDowO2xldCBjPW51bGw7aWYoMCE9PWEpe2lmKGM9bC52YWx1ZSwhMCE9PWl8fG51bGw9PT1jKXtjb25zdCBlPW8rNCphLGk9bi5tYXRyaXhXb3JsZEludmVyc2U7cy5nZXROb3JtYWxNYXRyaXgoaSksKG51bGw9PT1jfHxjLmxlbmd0aDxlKSYmKGM9bmV3IEZsb2F0MzJBcnJheShlKSk7Zm9yKGxldCBlPTAsbj1vO2UhPT1hOysrZSxuKz00KXIuY29weSh0W2VdKS5hcHBseU1hdHJpeDQoaSxzKSxyLm5vcm1hbC50b0FycmF5KGMsbiksY1tuKzNdPXIuY29uc3RhbnR9bC52YWx1ZT1jLGwubmVlZHNVcGRhdGU9ITB9cmV0dXJuIGUubnVtUGxhbmVzPWEsZS5udW1JbnRlcnNlY3Rpb249MCxjfXRoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24odCxlLGEpe2NvbnN0IHI9MCE9PXQubGVuZ3RofHxlfHwwIT09b3x8aTtyZXR1cm4gaT1lLG49ZCh0LGEsMCksbz10Lmxlbmd0aCxyfSx0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe2E9ITAsZChudWxsKX0sdGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7YT0hMSxjKCl9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oZSxyLHMpe2NvbnN0IHA9ZS5jbGlwcGluZ1BsYW5lcyxtPWUuY2xpcEludGVyc2VjdGlvbix1PWUuY2xpcFNoYWRvd3MsZj10LmdldChlKTtpZighaXx8bnVsbD09PXB8fDA9PT1wLmxlbmd0aHx8YSYmIXUpYT9kKG51bGwpOmMoKTtlbHNle2NvbnN0IHQ9YT8wOm8sZT00KnQ7bGV0IGk9Zi5jbGlwcGluZ1N0YXRlfHxudWxsO2wudmFsdWU9aSxpPWQocCxyLGUscyk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KWlbdF09blt0XTtmLmNsaXBwaW5nU3RhdGU9aSx0aGlzLm51bUludGVyc2VjdGlvbj1tP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPXR9fX1mdW5jdGlvbiBqc3QodCl7bGV0IGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbih0LGUpe3JldHVybiAzMDM9PT1lP3QubWFwcGluZz1kaXQ6MzA0PT09ZSYmKHQubWFwcGluZz1waXQpLHR9ZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyk7Y29uc3QgaT1lLmdldChuKTt2b2lkIDAhPT1pJiYoZS5kZWxldGUobiksaS5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gaShhKXtpZihhJiZhLmlzVGV4dHVyZSYmITE9PT1hLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSl7Y29uc3QgaT1hLm1hcHBpbmc7aWYoMzAzPT09aXx8MzA0PT09aSl7aWYoZS5oYXMoYSkpcmV0dXJuIG4oZS5nZXQoYSkudGV4dHVyZSxhLm1hcHBpbmcpO3tjb25zdCBpPWEuaW1hZ2U7aWYoaSYmaS5oZWlnaHQ+MCl7Y29uc3Qgcj10LmdldFJlbmRlclRhcmdldCgpLHM9bmV3IHhzdChpLmhlaWdodC8yKTtyZXR1cm4gcy5mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LGEpLGUuc2V0KGEscyksdC5zZXRSZW5kZXJUYXJnZXQociksYS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuKHMudGV4dHVyZSxhLm1hcHBpbmcpfXJldHVybiBudWxsfX19cmV0dXJuIGF9LGRpc3Bvc2U6ZnVuY3Rpb24gYSgpe2U9bmV3IFdlYWtNYXB9fX1Jc3QucGh5c2ljYWw9e3VuaWZvcm1zOmdzdChbSXN0LnN0YW5kYXJkLnVuaWZvcm1zLHtjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdE1hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Um91Z2huZXNzOnt2YWx1ZTowfSxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdE5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgUWl0KDEsMSl9LGNsZWFyY29hdE5vcm1hbE1hcDp7dmFsdWU6bnVsbH0sc2hlZW46e3ZhbHVlOm5ldyBScnQoMCl9LHRyYW5zbWlzc2lvbjp7dmFsdWU6MH0sdHJhbnNtaXNzaW9uTWFwOnt2YWx1ZTpudWxsfSx0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTp7dmFsdWU6bmV3IFFpdH0sdHJhbnNtaXNzaW9uU2FtcGxlck1hcDp7dmFsdWU6bnVsbH0sdGhpY2tuZXNzOnt2YWx1ZTowfSx0aGlja25lc3NNYXA6e3ZhbHVlOm51bGx9LGF0dGVudWF0aW9uRGlzdGFuY2U6e3ZhbHVlOjB9LGF0dGVudWF0aW9uVGludDp7dmFsdWU6bmV3IFJydCgwKX0sc3BlY3VsYXJJbnRlbnNpdHk6e3ZhbHVlOjB9LHNwZWN1bGFySW50ZW5zaXR5TWFwOnt2YWx1ZTpudWxsfSxzcGVjdWxhclRpbnQ6e3ZhbHVlOm5ldyBScnQoMSwxLDEpfSxzcGVjdWxhclRpbnRNYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpOc3QubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6TnN0Lm1lc2hwaHlzaWNhbF9mcmFnfTtjbGFzcyBVc3QgZXh0ZW5kcyB5c3R7Y29uc3RydWN0b3IodD0tMSxlPTEsbj0xLG89LTEsaT0uMSxhPTJlMyl7c3VwZXIoKSx0aGlzLnR5cGU9Ik9ydGhvZ3JhcGhpY0NhbWVyYSIsdGhpcy56b29tPTEsdGhpcy52aWV3PW51bGwsdGhpcy5sZWZ0PXQsdGhpcy5yaWdodD1lLHRoaXMudG9wPW4sdGhpcy5ib3R0b209byx0aGlzLm5lYXI9aSx0aGlzLmZhcj1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMudG9wPXQudG9wLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy56b29tPXQuem9vbSx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzfXNldFZpZXdPZmZzZXQodCxlLG4sbyxpLGEpe251bGw9PT10aGlzLnZpZXcmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9byx0aGlzLnZpZXcud2lkdGg9aSx0aGlzLnZpZXcuaGVpZ2h0PWEsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpLygyKnRoaXMuem9vbSksZT0odGhpcy50b3AtdGhpcy5ib3R0b20pLygyKnRoaXMuem9vbSksbj0odGhpcy5yaWdodCt0aGlzLmxlZnQpLzIsbz0odGhpcy50b3ArdGhpcy5ib3R0b20pLzI7bGV0IGk9bi10LGE9bit0LHI9bytlLHM9by1lO2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvdGhpcy52aWV3LmZ1bGxXaWR0aC90aGlzLnpvb20sZT0odGhpcy50b3AtdGhpcy5ib3R0b20pL3RoaXMudmlldy5mdWxsSGVpZ2h0L3RoaXMuem9vbTtpKz10KnRoaXMudmlldy5vZmZzZXRYLGE9aSt0KnRoaXMudmlldy53aWR0aCxyLT1lKnRoaXMudmlldy5vZmZzZXRZLHM9ci1lKnRoaXMudmlldy5oZWlnaHR9dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VPcnRob2dyYXBoaWMoaSxhLHIscyx0aGlzLm5lYXIsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubGVmdD10aGlzLmxlZnQsZS5vYmplY3QucmlnaHQ9dGhpcy5yaWdodCxlLm9iamVjdC50b3A9dGhpcy50b3AsZS5vYmplY3QuYm90dG9tPXRoaXMuYm90dG9tLGUub2JqZWN0Lm5lYXI9dGhpcy5uZWFyLGUub2JqZWN0LmZhcj10aGlzLmZhcixudWxsIT09dGhpcy52aWV3JiYoZS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpLGV9fVVzdC5wcm90b3R5cGUuaXNPcnRob2dyYXBoaWNDYW1lcmE9ITA7Y2xhc3MgR3N0IGV4dGVuZHMgYnN0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudHlwZT0iUmF3U2hhZGVyTWF0ZXJpYWwifX1Hc3QucHJvdG90eXBlLmlzUmF3U2hhZGVyTWF0ZXJpYWw9ITA7Y29uc3QgV3N0PU1hdGgucG93KDIsOCksWXN0PVsuMTI1LC4yMTUsLjM1LC40NDYsLjUyNiwuNTgyXSxxc3Q9NStZc3QubGVuZ3RoLFpzdD17W3ppdF06MCxbSWl0XToxLFtGaXRdOjIsMzAwNDozLDMwMDU6NCwzMDA2OjUsW0hpdF06Nn0sWHN0PW5ldyBBcnQoe3NpZGU6MSxkZXB0aFdyaXRlOiExLGRlcHRoVGVzdDohMX0pLEtzdD1uZXcgcHN0KG5ldyB1c3QsWHN0KSxKc3Q9bmV3IFVzdCx7X2xvZFBsYW5lczpRc3QsX3NpemVMb2RzOiRzdCxfc2lnbWFzOnRsdH09Y2x0KCksZWx0PW5ldyBScnQ7bGV0IG5sdD1udWxsO2NvbnN0IG9sdD0oMStNYXRoLnNxcnQoNSkpLzIsaWx0PTEvb2x0LGFsdD1bbmV3IGNhdCgxLDEsMSksbmV3IGNhdCgtMSwxLDEpLG5ldyBjYXQoMSwxLC0xKSxuZXcgY2F0KC0xLDEsLTEpLG5ldyBjYXQoMCxvbHQsaWx0KSxuZXcgY2F0KDAsb2x0LC1pbHQpLG5ldyBjYXQoaWx0LDAsb2x0KSxuZXcgY2F0KC1pbHQsMCxvbHQpLG5ldyBjYXQob2x0LGlsdCwwKSxuZXcgY2F0KC1vbHQsaWx0LDApXTtmdW5jdGlvbiBybHQodCl7Y29uc3QgZT1NYXRoLm1heCh0LnIsdC5nLHQuYiksbj1NYXRoLm1pbihNYXRoLm1heChNYXRoLmNlaWwoTWF0aC5sb2cyKGUpKSwtMTI4KSwxMjcpO3JldHVybiB0Lm11bHRpcGx5U2NhbGFyKE1hdGgucG93KDIsLW4pKSwobisxMjgpLzI1NX1jbGFzcyBzbHR7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1udWxsLHRoaXMuX2JsdXJNYXRlcmlhbD0oZnVuY3Rpb24gZSh0KXtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkodCksbj1uZXcgY2F0KDAsMSwwKTtyZXR1cm4gbmV3IEdzdCh7bmFtZToiU3BoZXJpY2FsR2F1c3NpYW5CbHVyIixkZWZpbmVzOntuOnR9LHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHNhbXBsZXM6e3ZhbHVlOjF9LHdlaWdodHM6e3ZhbHVlOmV9LGxhdGl0dWRpbmFsOnt2YWx1ZTohMX0sZFRoZXRhOnt2YWx1ZTowfSxtaXBJbnQ6e3ZhbHVlOjB9LHBvbGVBeGlzOnt2YWx1ZTpufSxpbnB1dEVuY29kaW5nOnt2YWx1ZTpac3RbM2UzXX0sb3V0cHV0RW5jb2Rpbmc6e3ZhbHVlOlpzdFszZTNdfX0sdmVydGV4U2hhZGVyOiJcblxuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdGF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uO1xuXHRcdGF0dHJpYnV0ZSB2ZWMyIHV2O1xuXHRcdGF0dHJpYnV0ZSBmbG9hdCBmYWNlSW5kZXg7XG5cblx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdC8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb25cblx0XHR2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHtcblxuXHRcdFx0dXYgPSAyLjAgKiB1diAtIDEuMDtcblxuXHRcdFx0dmVjMyBkaXJlY3Rpb24gPSB2ZWMzKCB1diwgMS4wICk7XG5cblx0XHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLXUsIDEsIC12ICkgcG9zIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC0xLCB2LCAtdSApIG5lZyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi56ICo9IC0xLjA7IC8vICggdSwgdiwgLTEgKSBuZWcgelxuXG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBkaXJlY3Rpb247XG5cblx0XHR9XG5cblx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdHZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTtcblx0XHRcdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xuXG5cdFx0fVxuXHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdFx0XHR1bmlmb3JtIGludCBzYW1wbGVzO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCB3ZWlnaHRzWyBuIF07XG5cdFx0XHR1bmlmb3JtIGJvb2wgbGF0aXR1ZGluYWw7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IGRUaGV0YTtcblx0XHRcdHVuaWZvcm0gZmxvYXQgbWlwSW50O1xuXHRcdFx0dW5pZm9ybSB2ZWMzIHBvbGVBeGlzO1xuXG5cdFx0XHRcblxuXHRcdHVuaWZvcm0gaW50IGlucHV0RW5jb2Rpbmc7XG5cdFx0dW5pZm9ybSBpbnQgb3V0cHV0RW5jb2Rpbmc7XG5cblx0XHQjaW5jbHVkZSA8ZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ+XG5cblx0XHR2ZWM0IGlucHV0VGV4ZWxUb0xpbmVhciggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBpbnB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHNSR0JUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JFVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkRUb0xpbmVhciggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIEdhbW1hVG9MaW5lYXIoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBsaW5lYXJUb091dHB1dFRleGVsKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIG91dHB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb3NSR0IoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRSggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JEKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9HYW1tYSggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGVudk1hcFRleGVsVG9MaW5lYXIoIHZlYzQgY29sb3IgKSB7XG5cblx0XHRcdHJldHVybiBpbnB1dFRleGVsVG9MaW5lYXIoIGNvbG9yICk7XG5cblx0XHR9XG5cdFxuXG5cdFx0XHQjZGVmaW5lIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0XHRcdCNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG5cblx0XHRcdHZlYzMgZ2V0U2FtcGxlKCBmbG9hdCB0aGV0YSwgdmVjMyBheGlzICkge1xuXG5cdFx0XHRcdGZsb2F0IGNvc1RoZXRhID0gY29zKCB0aGV0YSApO1xuXHRcdFx0XHQvLyBSb2RyaWd1ZXMnIGF4aXMtYW5nbGUgcm90YXRpb25cblx0XHRcdFx0dmVjMyBzYW1wbGVEaXJlY3Rpb24gPSB2T3V0cHV0RGlyZWN0aW9uICogY29zVGhldGFcblx0XHRcdFx0XHQrIGNyb3NzKCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiBzaW4oIHRoZXRhIClcblx0XHRcdFx0XHQrIGF4aXMgKiBkb3QoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqICggMS4wIC0gY29zVGhldGEgKTtcblxuXHRcdFx0XHRyZXR1cm4gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyZWN0aW9uLCBtaXBJbnQgKTtcblxuXHRcdFx0fVxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0dmVjMyBheGlzID0gbGF0aXR1ZGluYWwgPyBwb2xlQXhpcyA6IGNyb3NzKCBwb2xlQXhpcywgdk91dHB1dERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdGlmICggYWxsKCBlcXVhbCggYXhpcywgdmVjMyggMC4wICkgKSApICkge1xuXG5cdFx0XHRcdFx0YXhpcyA9IHZlYzMoIHZPdXRwdXREaXJlY3Rpb24ueiwgMC4wLCAtIHZPdXRwdXREaXJlY3Rpb24ueCApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRheGlzID0gbm9ybWFsaXplKCBheGlzICk7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgMCBdICogZ2V0U2FtcGxlKCAwLjAsIGF4aXMgKTtcblxuXHRcdFx0XHRmb3IgKCBpbnQgaSA9IDE7IGkgPCBuOyBpKysgKSB7XG5cblx0XHRcdFx0XHRpZiAoIGkgPj0gc2FtcGxlcyApIHtcblxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRmbG9hdCB0aGV0YSA9IGRUaGV0YSAqIGZsb2F0KCBpICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIC0xLjAgKiB0aGV0YSwgYXhpcyApO1xuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCB0aGV0YSwgYXhpcyApO1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcblxuXHRcdFx0fVxuXHRcdCIsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfSkoMjApLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LGU9MCxuPS4xLG89MTAwKXtubHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgaT10aGlzLl9hbGxvY2F0ZVRhcmdldHMoKTtyZXR1cm4gdGhpcy5fc2NlbmVUb0N1YmVVVih0LG4sbyxpKSxlPjAmJnRoaXMuX2JsdXIoaSwwLDAsZSksdGhpcy5fYXBwbHlQTVJFTShpKSx0aGlzLl9jbGVhbnVwKGkpLGl9ZnJvbUVxdWlyZWN0YW5ndWxhcih0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9ZnJvbUN1YmVtYXAodCl7cmV0dXJuIHRoaXMuX2Zyb21UZXh0dXJlKHQpfWNvbXBpbGVDdWJlbWFwU2hhZGVyKCl7bnVsbD09PXRoaXMuX2N1YmVtYXBTaGFkZXImJih0aGlzLl9jdWJlbWFwU2hhZGVyPXVsdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe251bGw9PT10aGlzLl9lcXVpcmVjdFNoYWRlciYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPW1sdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9lcXVpcmVjdFNoYWRlcikpfWRpc3Bvc2UoKXt0aGlzLl9ibHVyTWF0ZXJpYWwuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9jdWJlbWFwU2hhZGVyJiZ0aGlzLl9jdWJlbWFwU2hhZGVyLmRpc3Bvc2UoKSxudWxsIT09dGhpcy5fZXF1aXJlY3RTaGFkZXImJnRoaXMuX2VxdWlyZWN0U2hhZGVyLmRpc3Bvc2UoKTtmb3IobGV0IHQ9MDt0PFFzdC5sZW5ndGg7dCsrKVFzdFt0XS5kaXNwb3NlKCl9X2NsZWFudXAodCl7dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQuZGlzcG9zZSgpLHRoaXMuX3JlbmRlcmVyLnNldFJlbmRlclRhcmdldChubHQpLHQuc2Npc3NvclRlc3Q9ITEscGx0KHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0KXtubHQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7Y29uc3QgZT10aGlzLl9hbGxvY2F0ZVRhcmdldHModCk7cmV0dXJuIHRoaXMuX3RleHR1cmVUb0N1YmVVVih0LGUpLHRoaXMuX2FwcGx5UE1SRU0oZSksdGhpcy5fY2xlYW51cChlKSxlfV9hbGxvY2F0ZVRhcmdldHModCl7Y29uc3QgZT17bWFnRmlsdGVyOmhpdCxtaW5GaWx0ZXI6aGl0LGdlbmVyYXRlTWlwbWFwczohMSx0eXBlOl9pdCxmb3JtYXQ6MTAyMyxlbmNvZGluZzpsbHQodCk/dC5lbmNvZGluZzpGaXQsZGVwdGhCdWZmZXI6ITF9LG49ZGx0KGUpO3JldHVybiBuLmRlcHRoQnVmZmVyPSF0LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PWRsdChlKSxufV9jb21waWxlTWF0ZXJpYWwodCl7Y29uc3QgZT1uZXcgcHN0KFFzdFswXSx0KTt0aGlzLl9yZW5kZXJlci5jb21waWxlKGUsSnN0KX1fc2NlbmVUb0N1YmVVVih0LGUsbixvKXtjb25zdCBpPW5ldyBfc3QoOTAsMSxlLG4pLGE9WzEsLTEsMSwxLDEsMV0scj1bMSwxLDEsLTEsLTEsLTFdLHM9dGhpcy5fcmVuZGVyZXIsbD1zLmF1dG9DbGVhcixjPXMub3V0cHV0RW5jb2RpbmcsZD1zLnRvbmVNYXBwaW5nO3MuZ2V0Q2xlYXJDb2xvcihlbHQpLHMudG9uZU1hcHBpbmc9MCxzLm91dHB1dEVuY29kaW5nPXppdCxzLmF1dG9DbGVhcj0hMTtsZXQgcD0hMTtjb25zdCBtPXQuYmFja2dyb3VuZDtpZihtKXtpZihtLmlzQ29sb3Ipe1hzdC5jb2xvci5jb3B5KG0pLmNvbnZlcnRTUkdCVG9MaW5lYXIoKSx0LmJhY2tncm91bmQ9bnVsbDtjb25zdCBlPXJsdChYc3QuY29sb3IpO1hzdC5vcGFjaXR5PWUscD0hMH19ZWxzZXtYc3QuY29sb3IuY29weShlbHQpLmNvbnZlcnRTUkdCVG9MaW5lYXIoKTtjb25zdCB0PXJsdChYc3QuY29sb3IpO1hzdC5vcGFjaXR5PXQscD0hMH1mb3IobGV0IGU9MDtlPDY7ZSsrKXtjb25zdCBuPWUlMzswPT1uPyhpLnVwLnNldCgwLGFbZV0sMCksaS5sb29rQXQocltlXSwwLDApKToxPT1uPyhpLnVwLnNldCgwLDAsYVtlXSksaS5sb29rQXQoMCxyW2VdLDApKTooaS51cC5zZXQoMCxhW2VdLDApLGkubG9va0F0KDAsMCxyW2VdKSkscGx0KG8sbipXc3QsZT4yP1dzdDowLFdzdCxXc3QpLHMuc2V0UmVuZGVyVGFyZ2V0KG8pLHAmJnMucmVuZGVyKEtzdCxpKSxzLnJlbmRlcih0LGkpfXMudG9uZU1hcHBpbmc9ZCxzLm91dHB1dEVuY29kaW5nPWMscy5hdXRvQ2xlYXI9bH1fdGV4dHVyZVRvQ3ViZVVWKHQsZSl7Y29uc3Qgbj10aGlzLl9yZW5kZXJlcjt0LmlzQ3ViZVRleHR1cmU/bnVsbD09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9dWx0KCkpOm51bGw9PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9bWx0KCkpO2NvbnN0IG89dC5pc0N1YmVUZXh0dXJlP3RoaXMuX2N1YmVtYXBTaGFkZXI6dGhpcy5fZXF1aXJlY3RTaGFkZXIsaT1uZXcgcHN0KFFzdFswXSxvKSxhPW8udW5pZm9ybXM7YS5lbnZNYXAudmFsdWU9dCx0LmlzQ3ViZVRleHR1cmV8fGEudGV4ZWxTaXplLnZhbHVlLnNldCgxL3QuaW1hZ2Uud2lkdGgsMS90LmltYWdlLmhlaWdodCksYS5pbnB1dEVuY29kaW5nLnZhbHVlPVpzdFt0LmVuY29kaW5nXSxhLm91dHB1dEVuY29kaW5nLnZhbHVlPVpzdFtlLnRleHR1cmUuZW5jb2RpbmddLHBsdChlLDAsMCwzKldzdCwyKldzdCksbi5zZXRSZW5kZXJUYXJnZXQoZSksbi5yZW5kZXIoaSxKc3QpfV9hcHBseVBNUkVNKHQpe2NvbnN0IGU9dGhpcy5fcmVuZGVyZXIsbj1lLmF1dG9DbGVhcjtlLmF1dG9DbGVhcj0hMTtmb3IobGV0IGU9MTtlPHFzdDtlKyspe2NvbnN0IG49TWF0aC5zcXJ0KHRsdFtlXSp0bHRbZV0tdGx0W2UtMV0qdGx0W2UtMV0pO3RoaXMuX2JsdXIodCxlLTEsZSxuLGFsdFsoZS0xKSVhbHQubGVuZ3RoXSl9ZS5hdXRvQ2xlYXI9bn1fYmx1cih0LGUsbixvLGkpe2NvbnN0IGE9dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ7dGhpcy5faGFsZkJsdXIodCxhLGUsbixvLCJsYXRpdHVkaW5hbCIsaSksdGhpcy5faGFsZkJsdXIoYSx0LG4sbixvLCJsb25naXR1ZGluYWwiLGkpfV9oYWxmQmx1cih0LGUsbixvLGksYSxyKXtjb25zdCBzPXRoaXMuX3JlbmRlcmVyLGw9dGhpcy5fYmx1ck1hdGVyaWFsOyJsYXRpdHVkaW5hbCIhPT1hJiYibG9uZ2l0dWRpbmFsIiE9PWEmJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtjb25zdCBjPW5ldyBwc3QoUXN0W29dLGwpLGQ9bC51bmlmb3JtcyxwPSRzdFtuXS0xLG09aXNGaW5pdGUoaSk/TWF0aC5QSS8oMipwKToyKk1hdGguUEkvMzksdT1pL20sZj1pc0Zpbml0ZShpKT8xK01hdGguZmxvb3IoMyp1KToyMDtmPjIwJiZjb25zb2xlLndhcm4oYHNpZ21hUmFkaWFucywgJHtpfSwgaXMgdG9vIGxhcmdlIGFuZCB3aWxsIGNsaXAsIGFzIGl0IHJlcXVlc3RlZCAke2Z9IHNhbXBsZXMgd2hlbiB0aGUgbWF4aW11bSBpcyBzZXQgdG8gMjBgKTtjb25zdCBnPVtdO2xldCBoPTA7Zm9yKGxldCB0PTA7dDwyMDsrK3Qpe2NvbnN0IGU9dC91LG49TWF0aC5leHAoLWUqZS8yKTtnLnB1c2gobiksMD09dD9oKz1uOnQ8ZiYmKGgrPTIqbil9Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0KyspZ1t0XT1nW3RdL2g7ZC5lbnZNYXAudmFsdWU9dC50ZXh0dXJlLGQuc2FtcGxlcy52YWx1ZT1mLGQud2VpZ2h0cy52YWx1ZT1nLGQubGF0aXR1ZGluYWwudmFsdWU9ImxhdGl0dWRpbmFsIj09PWEsciYmKGQucG9sZUF4aXMudmFsdWU9ciksZC5kVGhldGEudmFsdWU9bSxkLm1pcEludC52YWx1ZT04LW4sZC5pbnB1dEVuY29kaW5nLnZhbHVlPVpzdFt0LnRleHR1cmUuZW5jb2RpbmddLGQub3V0cHV0RW5jb2RpbmcudmFsdWU9WnN0W3QudGV4dHVyZS5lbmNvZGluZ107Y29uc3QgYj0kc3Rbb107cGx0KGUsMypNYXRoLm1heCgwLFdzdC0yKmIpLCgwPT09bz8wOjIqV3N0KSsyKmIqKG8+ND9vLTgrNDowKSwzKmIsMipiKSxzLnNldFJlbmRlclRhcmdldChlKSxzLnJlbmRlcihjLEpzdCl9fWZ1bmN0aW9uIGxsdCh0KXtyZXR1cm4gdm9pZCAwIT09dCYmdC50eXBlPT09X2l0JiYodC5lbmNvZGluZz09PXppdHx8dC5lbmNvZGluZz09PUlpdHx8dC5lbmNvZGluZz09PUhpdCl9ZnVuY3Rpb24gY2x0KCl7Y29uc3QgdD1bXSxlPVtdLG49W107bGV0IG89ODtmb3IobGV0IGk9MDtpPHFzdDtpKyspe2NvbnN0IGE9TWF0aC5wb3coMixvKTtlLnB1c2goYSk7bGV0IHI9MS9hO2k+ND9yPVlzdFtpLTgrNC0xXTowPT1pJiYocj0wKSxuLnB1c2gocik7Y29uc3Qgcz0xLyhhLTEpLGw9LXMvMixjPTErcy8yLGQ9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxwPTYsbT02LHU9MyxmPTIsZz0xLGg9bmV3IEZsb2F0MzJBcnJheSh1Km0qcCksYj1uZXcgRmxvYXQzMkFycmF5KGYqbSpwKSx5PW5ldyBGbG9hdDMyQXJyYXkoZyptKnApO2ZvcihsZXQgdD0wO3Q8cDt0Kyspe2NvbnN0IGU9dCUzKjIvMy0xLG49dD4yPzA6LTE7aC5zZXQoW2UsbiwwLGUrMi8zLG4sMCxlKzIvMyxuKzEsMCxlLG4sMCxlKzIvMyxuKzEsMCxlLG4rMSwwXSx1Km0qdCksYi5zZXQoZCxmKm0qdCkseS5zZXQoW3QsdCx0LHQsdCx0XSxnKm0qdCl9Y29uc3QgXz1uZXcgcXJ0O18uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHpydChoLHUpKSxfLnNldEF0dHJpYnV0ZSgidXYiLG5ldyB6cnQoYixmKSksXy5zZXRBdHRyaWJ1dGUoImZhY2VJbmRleCIsbmV3IHpydCh5LGcpKSx0LnB1c2goXyksbz40JiZvLS19cmV0dXJue19sb2RQbGFuZXM6dCxfc2l6ZUxvZHM6ZSxfc2lnbWFzOm59fWZ1bmN0aW9uIGRsdCh0KXtjb25zdCBlPW5ldyByYXQoMypXc3QsMypXc3QsdCk7cmV0dXJuIGUudGV4dHVyZS5tYXBwaW5nPW1pdCxlLnRleHR1cmUubmFtZT0iUE1SRU0uY3ViZVV2IixlLnNjaXNzb3JUZXN0PSEwLGV9ZnVuY3Rpb24gcGx0KHQsZSxuLG8saSl7dC52aWV3cG9ydC5zZXQoZSxuLG8saSksdC5zY2lzc29yLnNldChlLG4sbyxpKX1mdW5jdGlvbiBtbHQoKXtjb25zdCB0PW5ldyBRaXQoMSwxKTtyZXR1cm4gbmV3IEdzdCh7bmFtZToiRXF1aXJlY3Rhbmd1bGFyVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHRleGVsU2l6ZTp7dmFsdWU6dH0saW5wdXRFbmNvZGluZzp7dmFsdWU6WnN0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTpac3RbM2UzXX19LHZlcnRleFNoYWRlcjoiXG5cblx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblx0XHRhdHRyaWJ1dGUgdmVjMiB1djtcblx0XHRhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4O1xuXG5cdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHQvLyBSSCBjb29yZGluYXRlIHN5c3RlbTsgUE1SRU0gZmFjZS1pbmRleGluZyBjb252ZW50aW9uXG5cdFx0dmVjMyBnZXREaXJlY3Rpb24oIHZlYzIgdXYsIGZsb2F0IGZhY2UgKSB7XG5cblx0XHRcdHV2ID0gMi4wICogdXYgLSAxLjA7XG5cblx0XHRcdHZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApO1xuXG5cdFx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7IC8vICggMSwgdiwgdSApIHBvcyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi54ICo9IC0xLjA7IC8vICggLXUsIHYsIDEgKSBwb3MgelxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHpcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGlyZWN0aW9uO1xuXG5cdFx0fVxuXG5cdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHR2T3V0cHV0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKCB1diwgZmFjZUluZGV4ICk7XG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblxuXHRcdH1cblx0IixmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHRcdFx0dW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTtcblxuXHRcdFx0XG5cblx0XHR1bmlmb3JtIGludCBpbnB1dEVuY29kaW5nO1xuXHRcdHVuaWZvcm0gaW50IG91dHB1dEVuY29kaW5nO1xuXG5cdFx0I2luY2x1ZGUgPGVuY29kaW5nc19wYXJzX2ZyYWdtZW50PlxuXG5cdFx0dmVjNCBpbnB1dFRleGVsVG9MaW5lYXIoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggaW5wdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBzUkdCVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRVRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQk1Ub0xpbmVhciggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JEVG9MaW5lYXIoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBHYW1tYVRvTGluZWFyKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgbGluZWFyVG9PdXRwdXRUZXhlbCggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBvdXRwdXRFbmNvZGluZyA9PSAwICkge1xuXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9zUkdCKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkUoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDMgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDcuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRCggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvR2FtbWEoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBlbnZNYXBUZXhlbFRvTGluZWFyKCB2ZWM0IGNvbG9yICkge1xuXG5cdFx0XHRyZXR1cm4gaW5wdXRUZXhlbFRvTGluZWFyKCBjb2xvciApO1xuXG5cdFx0fVxuXHRcblxuXHRcdFx0I2luY2x1ZGUgPGNvbW1vbj5cblxuXHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXG5cdFx0XHRcdHZlYzMgb3V0cHV0RGlyZWN0aW9uID0gbm9ybWFsaXplKCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cdFx0XHRcdHZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTtcblx0XHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdFx0dmVjMyB0bCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCArPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyB0ciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueSArPSB0ZXhlbFNpemUueTtcblx0XHRcdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHRcdFx0dXYueCAtPSB0ZXhlbFNpemUueDtcblx0XHRcdFx0dmVjMyBibCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKSApLnJnYjtcblxuXHRcdFx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdFx0XHR2ZWMzIGJtID0gbWl4KCBibCwgYnIsIGYueCApO1xuXHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCB0bSwgYm0sIGYueSApO1xuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gdWx0KCl7cmV0dXJuIG5ldyBHc3Qoe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0saW5wdXRFbmNvZGluZzp7dmFsdWU6WnN0WzNlM119LG91dHB1dEVuY29kaW5nOnt2YWx1ZTpac3RbM2UzXX19LHZlcnRleFNoYWRlcjoiXG5cblx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG5cblx0XHRhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjtcblx0XHRhdHRyaWJ1dGUgdmVjMiB1djtcblx0XHRhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4O1xuXG5cdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHQvLyBSSCBjb29yZGluYXRlIHN5c3RlbTsgUE1SRU0gZmFjZS1pbmRleGluZyBjb252ZW50aW9uXG5cdFx0dmVjMyBnZXREaXJlY3Rpb24oIHZlYzIgdXYsIGZsb2F0IGZhY2UgKSB7XG5cblx0XHRcdHV2ID0gMi4wICogdXYgLSAxLjA7XG5cblx0XHRcdHZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApO1xuXG5cdFx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7IC8vICggMSwgdiwgdSApIHBvcyB4XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7XG5cdFx0XHRcdGRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5XG5cblx0XHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXG5cdFx0XHRcdGRpcmVjdGlvbi54ICo9IC0xLjA7IC8vICggLXUsIHYsIDEgKSBwb3MgelxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHpcblxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGlyZWN0aW9uO1xuXG5cdFx0fVxuXG5cdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHR2T3V0cHV0RGlyZWN0aW9uID0gZ2V0RGlyZWN0aW9uKCB1diwgZmFjZUluZGV4ICk7XG5cdFx0XHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblxuXHRcdH1cblx0IixmcmFnbWVudFNoYWRlcjoiXG5cblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuXHRcdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0XHR2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjtcblxuXHRcdFx0dW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG5cblx0XHRcdFxuXG5cdFx0dW5pZm9ybSBpbnQgaW5wdXRFbmNvZGluZztcblx0XHR1bmlmb3JtIGludCBvdXRwdXRFbmNvZGluZztcblxuXHRcdCNpbmNsdWRlIDxlbmNvZGluZ3NfcGFyc19mcmFnbWVudD5cblxuXHRcdHZlYzQgaW5wdXRUZXhlbFRvTGluZWFyKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIGlucHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gc1JHQlRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkVUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRFRvTGluZWFyKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gR2FtbWFUb0xpbmVhciggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGxpbmVhclRvT3V0cHV0VGV4ZWwoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvc1JHQiggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JFKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkQoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb0dhbW1hKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgZW52TWFwVGV4ZWxUb0xpbmVhciggdmVjNCBjb2xvciApIHtcblxuXHRcdFx0cmV0dXJuIGlucHV0VGV4ZWxUb0xpbmVhciggY29sb3IgKTtcblxuXHRcdH1cblx0XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIC0gdk91dHB1dERpcmVjdGlvbi54LCB2T3V0cHV0RGlyZWN0aW9uLnl6ICkgKSApLnJnYjtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7XG5cblx0XHRcdH1cblx0XHQiLGJsZW5kaW5nOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBmbHQodCl7bGV0IGU9bmV3IFdlYWtNYXAsbj1udWxsO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pO2NvbnN0IGk9ZS5nZXQobik7dm9pZCAwIT09aSYmKGkuZGVsZXRlKG4pLGkuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGkoYSl7aWYoYSYmYS5pc1RleHR1cmUmJiExPT09YS5pc1JlbmRlclRhcmdldFRleHR1cmUpe2NvbnN0IGk9YS5tYXBwaW5nLHI9MzAzPT09aXx8MzA0PT09aSxzPWk9PT1kaXR8fGk9PT1waXQ7aWYocnx8cyl7aWYoZS5oYXMoYSkpcmV0dXJuIGUuZ2V0KGEpLnRleHR1cmU7e2NvbnN0IGk9YS5pbWFnZTtpZihyJiZpJiZpLmhlaWdodD4wfHxzJiZpJiYoZnVuY3Rpb24gcih0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248NjtuKyspdm9pZCAwIT09dFtuXSYmZSsrO3JldHVybiA2PT09ZX0pKGkpKXtjb25zdCBpPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7bnVsbD09PW4mJihuPW5ldyBzbHQodCkpO2NvbnN0IHM9cj9uLmZyb21FcXVpcmVjdGFuZ3VsYXIoYSk6bi5mcm9tQ3ViZW1hcChhKTtyZXR1cm4gZS5zZXQoYSxzKSx0LnNldFJlbmRlclRhcmdldChpKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLHMudGV4dHVyZX1yZXR1cm4gbnVsbH19fXJldHVybiBhfSxkaXNwb3NlOmZ1bmN0aW9uIGEoKXtlPW5ldyBXZWFrTWFwLG51bGwhPT1uJiYobi5kaXNwb3NlKCksbj1udWxsKX19fWZ1bmN0aW9uIGdsdCh0KXtjb25zdCBlPXt9O2Z1bmN0aW9uIG4obil7aWYodm9pZCAwIT09ZVtuXSlyZXR1cm4gZVtuXTtsZXQgbztzd2l0Y2gobil7Y2FzZSJXRUJHTF9kZXB0aF90ZXh0dXJlIjpvPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTticmVhaztjYXNlIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyI6bz10LmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyI6bz10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOm89dC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpO2JyZWFrO2RlZmF1bHQ6bz10LmdldEV4dGVuc2lvbihuKX1yZXR1cm4gZVtuXT1vLG99cmV0dXJue2hhczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9PW4odCl9LGluaXQ6ZnVuY3Rpb24odCl7dC5pc1dlYkdMMj9uKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6KG4oIldFQkdMX2RlcHRoX3RleHR1cmUiKSxuKCJPRVNfdGV4dHVyZV9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxuKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLG4oIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLG4oIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSxuKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLG4oIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSksbigiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksbigiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil9LGdldDpmdW5jdGlvbih0KXtjb25zdCBlPW4odCk7cmV0dXJuIG51bGw9PT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdCsiIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkLiIpLGV9fX1mdW5jdGlvbiBobHQodCxlLG4sbyl7Y29uc3QgaT17fSxhPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIodCl7Y29uc3Qgcz10LnRhcmdldDtudWxsIT09cy5pbmRleCYmZS5yZW1vdmUocy5pbmRleCk7Zm9yKGNvbnN0IHQgaW4gcy5hdHRyaWJ1dGVzKWUucmVtb3ZlKHMuYXR0cmlidXRlc1t0XSk7cy5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixyKSxkZWxldGUgaVtzLmlkXTtjb25zdCBsPWEuZ2V0KHMpO2wmJihlLnJlbW92ZShsKSxhLmRlbGV0ZShzKSksby5yZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeShzKSwhMD09PXMuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSYmZGVsZXRlIHMuX21heEluc3RhbmNlQ291bnQsbi5tZW1vcnkuZ2VvbWV0cmllcy0tfWZ1bmN0aW9uIHModCl7Y29uc3Qgbj1bXSxvPXQuaW5kZXgsaT10LmF0dHJpYnV0ZXMucG9zaXRpb247bGV0IHI9MDtpZihudWxsIT09byl7Y29uc3QgdD1vLmFycmF5O3I9by52ZXJzaW9uO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrPTMpe2NvbnN0IG89dFtlKzBdLGk9dFtlKzFdLGE9dFtlKzJdO24ucHVzaChvLGksaSxhLGEsbyl9fWVsc2V7cj1pLnZlcnNpb247Zm9yKGxldCB0PTAsZT1pLmFycmF5Lmxlbmd0aC8zLTE7dDxlO3QrPTMpe2NvbnN0IGU9dCswLG89dCsxLGk9dCsyO24ucHVzaChlLG8sbyxpLGksZSl9fWNvbnN0IHM9bmV3KExydChuKT42NTUzNT9IcnQ6SXJ0KShuLDEpO3MudmVyc2lvbj1yO2NvbnN0IGw9YS5nZXQodCk7bCYmZS5yZW1vdmUobCksYS5zZXQodCxzKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIGwodCxlKXtyZXR1cm4hMD09PWlbZS5pZF18fChlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGlbZS5pZF09ITAsbi5tZW1vcnkuZ2VvbWV0cmllcysrKSxlfSx1cGRhdGU6ZnVuY3Rpb24gYyh0KXtjb25zdCBuPXQuYXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBuKWUudXBkYXRlKG5bdF0sMzQ5NjIpO2NvbnN0IG89dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gbyl7Y29uc3Qgbj1vW3RdO2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dDxvO3QrKyllLnVwZGF0ZShuW3RdLDM0OTYyKX19LGdldFdpcmVmcmFtZUF0dHJpYnV0ZTpmdW5jdGlvbiBkKHQpe2NvbnN0IGU9YS5nZXQodCk7aWYoZSl7Y29uc3Qgbj10LmluZGV4O251bGwhPT1uJiZlLnZlcnNpb248bi52ZXJzaW9uJiZzKHQpfWVsc2Ugcyh0KTtyZXR1cm4gYS5nZXQodCl9fX1mdW5jdGlvbiBibHQodCxlLG4sbyl7Y29uc3QgaT1vLmlzV2ViR0wyO2xldCBhLHIsczt0aGlzLnNldE1vZGU9ZnVuY3Rpb24gbCh0KXthPXR9LHRoaXMuc2V0SW5kZXg9ZnVuY3Rpb24gYyh0KXtyPXQudHlwZSxzPXQuYnl0ZXNQZXJFbGVtZW50fSx0aGlzLnJlbmRlcj1mdW5jdGlvbiBkKGUsbyl7dC5kcmF3RWxlbWVudHMoYSxvLHIsZSpzKSxuLnVwZGF0ZShvLGEsMSl9LHRoaXMucmVuZGVySW5zdGFuY2VzPWZ1bmN0aW9uIHAobyxsLGMpe2lmKDA9PT1jKXJldHVybjtsZXQgZCxwO2lmKGkpZD10LHA9ImRyYXdFbGVtZW50c0luc3RhbmNlZCI7ZWxzZSBpZihkPWUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikscD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1kKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtkW3BdKGEsbCxyLG8qcyxjKSxuLnVwZGF0ZShsLGEsYyl9fWZ1bmN0aW9uIHlsdCh0KXtjb25zdCBlPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07cmV0dXJue21lbW9yeTp7Z2VvbWV0cmllczowLHRleHR1cmVzOjB9LHJlbmRlcjplLHByb2dyYW1zOm51bGwsYXV0b1Jlc2V0OiEwLHJlc2V0OmZ1bmN0aW9uIG4oKXtlLmZyYW1lKyssZS5jYWxscz0wLGUudHJpYW5nbGVzPTAsZS5wb2ludHM9MCxlLmxpbmVzPTB9LHVwZGF0ZTpmdW5jdGlvbiBvKHQsbixpKXtzd2l0Y2goZS5jYWxscysrLG4pe2Nhc2UgNDplLnRyaWFuZ2xlcys9aSoodC8zKTticmVhaztjYXNlIDE6ZS5saW5lcys9aSoodC8yKTticmVhaztjYXNlIDM6ZS5saW5lcys9aSoodC0xKTticmVhaztjYXNlIDI6ZS5saW5lcys9aSp0O2JyZWFrO2Nhc2UgMDplLnBvaW50cys9aSp0O2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmZvOiBVbmtub3duIGRyYXcgbW9kZToiLG4pfX19fWZ1bmN0aW9uIF9sdCh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24gQ2x0KHQsZSl7cmV0dXJuIE1hdGguYWJzKGVbMV0pLU1hdGguYWJzKHRbMV0pfWZ1bmN0aW9uIE1sdCh0KXtjb25zdCBlPXt9LG49bmV3IEZsb2F0MzJBcnJheSg4KSxvPVtdO2ZvcihsZXQgdD0wO3Q8ODt0Kyspb1t0XT1bdCwwXTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uIGkoYSxyLHMsbCl7Y29uc3QgYz1hLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyxkPXZvaWQgMD09PWM/MDpjLmxlbmd0aDtsZXQgcD1lW3IuaWRdO2lmKHZvaWQgMD09PXB8fHAubGVuZ3RoIT09ZCl7cD1bXTtmb3IobGV0IHQ9MDt0PGQ7dCsrKXBbdF09W3QsMF07ZVtyLmlkXT1wfWZvcihsZXQgdD0wO3Q8ZDt0Kyspe2NvbnN0IGU9cFt0XTtlWzBdPXQsZVsxXT1jW3RdfXAuc29ydChDbHQpO2ZvcihsZXQgdD0wO3Q8ODt0KyspdDxkJiZwW3RdWzFdPyhvW3RdWzBdPXBbdF1bMF0sb1t0XVsxXT1wW3RdWzFdKToob1t0XVswXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUixvW3RdWzFdPTApO28uc29ydChfbHQpO2NvbnN0IG09ci5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sdT1yLm1vcnBoQXR0cmlidXRlcy5ub3JtYWw7bGV0IGY9MDtmb3IobGV0IHQ9MDt0PDg7dCsrKXtjb25zdCBlPW9bdF0saT1lWzBdLGE9ZVsxXTtpIT09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVImJmE/KG0mJnIuZ2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkhPT1tW2ldJiZyLnNldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QsbVtpXSksdSYmci5nZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSE9PXVbaV0mJnIuc2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCx1W2ldKSxuW3RdPWEsZis9YSk6KG0mJiEwPT09ci5oYXNBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSYmci5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSx1JiYhMD09PXIuaGFzQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCkmJnIuZGVsZXRlQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCksblt0XT0wKX1jb25zdCBnPXIubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLWY7bC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsZyksbC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKHQsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsbil9fX1mdW5jdGlvbiB2bHQodCxlLG4sbyl7bGV0IGk9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksbi5yZW1vdmUoZS5pbnN0YW5jZU1hdHJpeCksbnVsbCE9PWUuaW5zdGFuY2VDb2xvciYmbi5yZW1vdmUoZS5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOmZ1bmN0aW9uIHIodCl7Y29uc3Qgcj1vLnJlbmRlci5mcmFtZSxzPWUuZ2V0KHQsdC5nZW9tZXRyeSk7cmV0dXJuIGkuZ2V0KHMpIT09ciYmKGUudXBkYXRlKHMpLGkuc2V0KHMscikpLHQuaXNJbnN0YW5jZWRNZXNoJiYoITE9PT10Lmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpJiZ0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLG4udXBkYXRlKHQuaW5zdGFuY2VNYXRyaXgsMzQ5NjIpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJm4udXBkYXRlKHQuaW5zdGFuY2VDb2xvciwzNDk2MikpLHN9LGRpc3Bvc2U6ZnVuY3Rpb24gcygpe2k9bmV3IFdlYWtNYXB9fX1jbGFzcyB4bHQgZXh0ZW5kcyBvYXR7Y29uc3RydWN0b3IodD1udWxsLGU9MSxuPTEsbz0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bixkZXB0aDpvfSx0aGlzLm1hZ0ZpbHRlcj1oaXQsdGhpcy5taW5GaWx0ZXI9aGl0LHRoaXMud3JhcFI9Zml0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MSx0aGlzLm5lZWRzVXBkYXRlPSEwfX14bHQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO2NsYXNzIE9sdCBleHRlbmRzIG9hdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpuLGRlcHRoOm99LHRoaXMubWFnRmlsdGVyPWhpdCx0aGlzLm1pbkZpbHRlcj1oaXQsdGhpcy53cmFwUj1maXQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fU9sdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IFBsdD1uZXcgb2F0LHdsdD1uZXcgeGx0LGtsdD1uZXcgT2x0LFNsdD1uZXcgdnN0LERsdD1bXSxFbHQ9W10sUmx0PW5ldyBGbG9hdDMyQXJyYXkoMTYpLEFsdD1uZXcgRmxvYXQzMkFycmF5KDkpLFRsdD1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIE5sdCh0LGUsbil7Y29uc3Qgbz10WzBdO2lmKG88PTB8fG8+MClyZXR1cm4gdDtjb25zdCBpPWUqbjtsZXQgYT1EbHRbaV07aWYodm9pZCAwPT09YSYmKGE9bmV3IEZsb2F0MzJBcnJheShpKSxEbHRbaV09YSksMCE9PWUpe28udG9BcnJheShhLDApO2ZvcihsZXQgbz0xLGk9MDtvIT09ZTsrK28paSs9bix0W29dLnRvQXJyYXkoYSxpKX1yZXR1cm4gYX1mdW5jdGlvbiB6bHQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBJbHQodCxlKXtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspdFtuXT1lW25dfWZ1bmN0aW9uIEhsdCh0LGUpe2xldCBuPUVsdFtlXTt2b2lkIDA9PT1uJiYobj1uZXcgSW50MzJBcnJheShlKSxFbHRbZV09bik7Zm9yKGxldCBvPTA7byE9PWU7KytvKW5bb109dC5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIG59ZnVuY3Rpb24gRmx0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWYodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gTGx0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55fHwodC51bmlmb3JtMmYodGhpcy5hZGRyLGUueCxlLnkpLG5bMF09ZS54LG5bMV09ZS55KTtlbHNle2lmKHpsdChuLGUpKXJldHVybjt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLGUpLElsdChuLGUpfX1mdW5jdGlvbiBCbHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnp8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS54LGUueSxlLnopLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56KTtlbHNlIGlmKHZvaWQgMCE9PWUuciluWzBdPT09ZS5yJiZuWzFdPT09ZS5nJiZuWzJdPT09ZS5ifHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUucixlLmcsZS5iKSxuWzBdPWUucixuWzFdPWUuZyxuWzJdPWUuYik7ZWxzZXtpZih6bHQobixlKSlyZXR1cm47dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKSxJbHQobixlKX19ZnVuY3Rpb24gVmx0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56JiZuWzNdPT09ZS53fHwodC51bmlmb3JtNGYodGhpcy5hZGRyLGUueCxlLnksZS56LGUudyksblswXT1lLngsblsxXT1lLnksblsyXT1lLnosblszXT1lLncpO2Vsc2V7aWYoemx0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsZSksSWx0KG4sZSl9fWZ1bmN0aW9uIGpsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoemx0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSksSWx0KG4sZSl9ZWxzZXtpZih6bHQobixvKSlyZXR1cm47VGx0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLFRsdCksSWx0KG4sbyl9fWZ1bmN0aW9uIFVsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoemx0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZSksSWx0KG4sZSl9ZWxzZXtpZih6bHQobixvKSlyZXR1cm47QWx0LnNldChvKSx0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLEFsdCksSWx0KG4sbyl9fWZ1bmN0aW9uIEdsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxvPWUuZWxlbWVudHM7aWYodm9pZCAwPT09byl7aWYoemx0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSksSWx0KG4sZSl9ZWxzZXtpZih6bHQobixvKSlyZXR1cm47Umx0LnNldChvKSx0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLFJsdCksSWx0KG4sbyl9fWZ1bmN0aW9uIFdsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIFlsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTt6bHQobixlKXx8KHQudW5pZm9ybTJpdih0aGlzLmFkZHIsZSksSWx0KG4sZSkpfWZ1bmN0aW9uIHFsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTt6bHQobixlKXx8KHQudW5pZm9ybTNpdih0aGlzLmFkZHIsZSksSWx0KG4sZSkpfWZ1bmN0aW9uIFpsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTt6bHQobixlKXx8KHQudW5pZm9ybTRpdih0aGlzLmFkZHIsZSksSWx0KG4sZSkpfWZ1bmN0aW9uIFhsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTtuWzBdIT09ZSYmKHQudW5pZm9ybTF1aSh0aGlzLmFkZHIsZSksblswXT1lKX1mdW5jdGlvbiBLbHQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7emx0KG4sZSl8fCh0LnVuaWZvcm0ydWl2KHRoaXMuYWRkcixlKSxJbHQobixlKSl9ZnVuY3Rpb24gSmx0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO3psdChuLGUpfHwodC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSksSWx0KG4sZSkpfWZ1bmN0aW9uIFFsdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZTt6bHQobixlKXx8KHQudW5pZm9ybTR1aXYodGhpcy5hZGRyLGUpLElsdChuLGUpKX1mdW5jdGlvbiAkbHQodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zYWZlU2V0VGV4dHVyZTJEKGV8fFBsdCxpKX1mdW5jdGlvbiB0Y3QodCxlLG4pe2NvbnN0IG89dGhpcy5jYWNoZSxpPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO29bMF0hPT1pJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGkpLG9bMF09aSksbi5zZXRUZXh0dXJlM0QoZXx8a2x0LGkpfWZ1bmN0aW9uIGVjdCh0LGUsbil7Y29uc3Qgbz10aGlzLmNhY2hlLGk9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxuLnNhZmVTZXRUZXh0dXJlQ3ViZShlfHxTbHQsaSl9ZnVuY3Rpb24gbmN0KHQsZSxuKXtjb25zdCBvPXRoaXMuY2FjaGUsaT1uLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLG4uc2V0VGV4dHVyZTJEQXJyYXkoZXx8d2x0LGkpfWZ1bmN0aW9uIG9jdCh0LGUpe3QudW5pZm9ybTFmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gaWN0KHQsZSl7Y29uc3Qgbj1ObHQoZSx0aGlzLnNpemUsMik7dC51bmlmb3JtMmZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBhY3QodCxlKXtjb25zdCBuPU5sdChlLHRoaXMuc2l6ZSwzKTt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIHJjdCh0LGUpe2NvbnN0IG49Tmx0KGUsdGhpcy5zaXplLDQpO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gc2N0KHQsZSl7Y29uc3Qgbj1ObHQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxuKX1mdW5jdGlvbiBsY3QodCxlKXtjb25zdCBuPU5sdChlLHRoaXMuc2l6ZSw5KTt0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIGNjdCh0LGUpe2NvbnN0IG49Tmx0KGUsdGhpcy5zaXplLDE2KTt0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIGRjdCh0LGUpe3QudW5pZm9ybTFpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gcGN0KHQsZSl7dC51bmlmb3JtMml2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBtY3QodCxlKXt0LnVuaWZvcm0zaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHVjdCh0LGUpe3QudW5pZm9ybTRpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gZmN0KHQsZSl7dC51bmlmb3JtMXVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gZ2N0KHQsZSl7dC51bmlmb3JtMnVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gaGN0KHQsZSl7dC51bmlmb3JtM3Vpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gYmN0KHQsZSl7dC51bmlmb3JtNHVpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24geWN0KHQsZSxuKXtjb25zdCBvPWUubGVuZ3RoLGk9SGx0KG4sbyk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpbi5zYWZlU2V0VGV4dHVyZTJEKGVbdF18fFBsdCxpW3RdKX1mdW5jdGlvbiBfY3QodCxlLG4pe2NvbnN0IG89ZS5sZW5ndGgsaT1IbHQobixvKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgdD0wO3QhPT1vOysrdCluLnNhZmVTZXRUZXh0dXJlQ3ViZShlW3RdfHxTbHQsaVt0XSl9ZnVuY3Rpb24gQ2N0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIEZsdDtjYXNlIDM1NjY0OnJldHVybiBMbHQ7Y2FzZSAzNTY2NTpyZXR1cm4gQmx0O2Nhc2UgMzU2NjY6cmV0dXJuIFZsdDtjYXNlIDM1Njc0OnJldHVybiBqbHQ7Y2FzZSAzNTY3NTpyZXR1cm4gVWx0O2Nhc2UgMzU2NzY6cmV0dXJuIEdsdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gV2x0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gWWx0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gcWx0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gWmx0O2Nhc2UgNTEyNTpyZXR1cm4gWGx0O2Nhc2UgMzYyOTQ6cmV0dXJuIEtsdDtjYXNlIDM2Mjk1OnJldHVybiBKbHQ7Y2FzZSAzNjI5NjpyZXR1cm4gUWx0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gJGx0O2Nhc2UgMzU2Nzk6Y2FzZSAzNjI5OTpjYXNlIDM2MzA3OnJldHVybiB0Y3Q7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gZWN0O2Nhc2UgMzYyODk6Y2FzZSAzNjMwMzpjYXNlIDM2MzExOmNhc2UgMzYyOTI6cmV0dXJuIG5jdH19KShlLnR5cGUpfWZ1bmN0aW9uIE1jdCh0LGUsbil7dGhpcy5pZD10LHRoaXMuYWRkcj1uLHRoaXMuY2FjaGU9W10sdGhpcy5zaXplPWUuc2l6ZSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBvKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIG9jdDtjYXNlIDM1NjY0OnJldHVybiBpY3Q7Y2FzZSAzNTY2NTpyZXR1cm4gYWN0O2Nhc2UgMzU2NjY6cmV0dXJuIHJjdDtjYXNlIDM1Njc0OnJldHVybiBzY3Q7Y2FzZSAzNTY3NTpyZXR1cm4gbGN0O2Nhc2UgMzU2NzY6cmV0dXJuIGNjdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gZGN0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gcGN0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gbWN0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gdWN0O2Nhc2UgNTEyNTpyZXR1cm4gZmN0O2Nhc2UgMzYyOTQ6cmV0dXJuIGdjdDtjYXNlIDM2Mjk1OnJldHVybiBoY3Q7Y2FzZSAzNjI5NjpyZXR1cm4gYmN0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4geWN0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuIF9jdH19KShlLnR5cGUpfWZ1bmN0aW9uIHZjdCh0KXt0aGlzLmlkPXQsdGhpcy5zZXE9W10sdGhpcy5tYXA9e319TWN0LnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuY2FjaGU7dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmZS5sZW5ndGghPT10Lmxlbmd0aCYmKHRoaXMuY2FjaGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCkpLElsdChlLHQpfSx2Y3QucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXRoaXMuc2VxO2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKXtjb25zdCBhPW9baV07YS5zZXRWYWx1ZSh0LGVbYS5pZF0sbil9fTtjb25zdCB4Y3Q9LyhcdyspKFxdKT8oXFt8XC4pPy9nO2Z1bmN0aW9uIE9jdCh0LGUpe3Quc2VxLnB1c2goZSksdC5tYXBbZS5pZF09ZX1mdW5jdGlvbiBQY3QodCxlLG4pe2NvbnN0IG89dC5uYW1lLGk9by5sZW5ndGg7Zm9yKHhjdC5sYXN0SW5kZXg9MDs7KXtjb25zdCBhPXhjdC5leGVjKG8pLHI9eGN0Lmxhc3RJbmRleDtsZXQgcz1hWzFdO2NvbnN0IGw9YVszXTtpZigiXSI9PT1hWzJdJiYoc3w9MCksdm9pZCAwPT09bHx8IlsiPT09bCYmcisyPT09aSl7T2N0KG4sdm9pZCAwPT09bD9uZXcgQ2N0KHMsdCxlKTpuZXcgTWN0KHMsdCxlKSk7YnJlYWt9e2xldCB0PW4ubWFwW3NdO3ZvaWQgMD09PXQmJih0PW5ldyB2Y3QocyksT2N0KG4sdCkpLG49dH19fWZ1bmN0aW9uIHdjdCh0LGUpe3RoaXMuc2VxPVtdLHRoaXMubWFwPXt9O2NvbnN0IG49dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsMzU3MTgpO2ZvcihsZXQgbz0wO288bjsrK28pe2NvbnN0IG49dC5nZXRBY3RpdmVVbmlmb3JtKGUsbyk7UGN0KG4sdC5nZXRVbmlmb3JtTG9jYXRpb24oZSxuLm5hbWUpLHRoaXMpfX1mdW5jdGlvbiBrY3QodCxlLG4pe2NvbnN0IG89dC5jcmVhdGVTaGFkZXIoZSk7cmV0dXJuIHQuc2hhZGVyU291cmNlKG8sbiksdC5jb21waWxlU2hhZGVyKG8pLG99d2N0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUsbixvKXtjb25zdCBpPXRoaXMubWFwW2VdO3ZvaWQgMCE9PWkmJmkuc2V0VmFsdWUodCxuLG8pfSx3Y3QucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPWVbbl07dm9pZCAwIT09byYmdGhpcy5zZXRWYWx1ZSh0LG4sbyl9LHdjdC51cGxvYWQ9ZnVuY3Rpb24odCxlLG4sbyl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpIT09YTsrK2kpe2NvbnN0IGE9ZVtpXSxyPW5bYS5pZF07ITEhPT1yLm5lZWRzVXBkYXRlJiZhLnNldFZhbHVlKHQsci52YWx1ZSxvKX19LHdjdC5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7byE9PWk7KytvKXtjb25zdCBpPXRbb107aS5pZCBpbiBlJiZuLnB1c2goaSl9cmV0dXJuIG59O2xldCBTY3Q9MDtmdW5jdGlvbiBEY3QodCl7c3dpdGNoKHQpe2Nhc2Ugeml0OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSBJaXQ6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07Y2FzZSBGaXQ6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDA0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDcuMCApIl07Y2FzZSAzMDA1OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgMzAwNjpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSBIaXQ6cmV0dXJuWyJHYW1tYSIsIiggdmFsdWUsIGZsb2F0KCBHQU1NQV9GQUNUT1IgKSApIl07Y2FzZSAzMDAzOnJldHVyblsiTG9nTHV2IiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsdCksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19ZnVuY3Rpb24gRWN0KHQsZSxuKXtjb25zdCBvPXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsMzU3MTMpLGk9dC5nZXRTaGFkZXJJbmZvTG9nKGUpLnRyaW0oKTtyZXR1cm4gbyYmIiI9PT1pPyIiOiJUSFJFRS5XZWJHTFNoYWRlcjogZ2wuZ2V0U2hhZGVySW5mb0xvZygpICIrbisiXG4iK2krKGZ1bmN0aW9uIGEodCl7Y29uc3QgZT10LnNwbGl0KCJcbiIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09dCsxKyI6ICIrZVt0XTtyZXR1cm4gZS5qb2luKCJcbiIpfSkodC5nZXRTaGFkZXJTb3VyY2UoZSkpfWZ1bmN0aW9uIFJjdCh0LGUpe2NvbnN0IG49RGN0KGUpO3JldHVybiJ2ZWM0ICIrdCsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gIituWzBdKyJUb0xpbmVhciIrblsxXSsiOyB9In1mdW5jdGlvbiBBY3QodCxlKXtjb25zdCBuPURjdChlKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuIExpbmVhclRvIituWzBdK25bMV0rIjsgfSJ9ZnVuY3Rpb24gVGN0KHQsZSl7bGV0IG47c3dpdGNoKGUpe2Nhc2UgMTpuPSJMaW5lYXIiO2JyZWFrO2Nhc2UgMjpuPSJSZWluaGFyZCI7YnJlYWs7Y2FzZSAzOm49Ik9wdGltaXplZENpbmVvbiI7YnJlYWs7Y2FzZSA0Om49IkFDRVNGaWxtaWMiO2JyZWFrO2Nhc2UgNTpuPSJDdXN0b20iO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIHRvbmVNYXBwaW5nOiIsZSksbj0iTGluZWFyIn1yZXR1cm4idmVjMyAiK3QrIiggdmVjMyBjb2xvciApIHsgcmV0dXJuICIrbisiVG9uZU1hcHBpbmcoIGNvbG9yICk7IH0ifWZ1bmN0aW9uIE5jdCh0KXtyZXR1cm4iIiE9PXR9ZnVuY3Rpb24gemN0KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0RJUl9MSUdIVFMvZyxlLm51bURpckxpZ2h0cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRTL2csZS5udW1TcG90TGlnaHRzKS5yZXBsYWNlKC9OVU1fUkVDVF9BUkVBX0xJR0hUUy9nLGUubnVtUmVjdEFyZWFMaWdodHMpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVFMvZyxlLm51bVBvaW50TGlnaHRzKS5yZXBsYWNlKC9OVU1fSEVNSV9MSUdIVFMvZyxlLm51bUhlbWlMaWdodHMpLnJlcGxhY2UoL05VTV9ESVJfTElHSFRfU0hBRE9XUy9nLGUubnVtRGlyTGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVF9TSEFET1dTL2csZS5udW1TcG90TGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRfU0hBRE9XUy9nLGUubnVtUG9pbnRMaWdodFNoYWRvd3MpfWZ1bmN0aW9uIEljdCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzKS5yZXBsYWNlKC9VTklPTl9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzLWUubnVtQ2xpcEludGVyc2VjdGlvbil9Y29uc3QgSGN0PS9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ207ZnVuY3Rpb24gRmN0KHQpe3JldHVybiB0LnJlcGxhY2UoSGN0LExjdCl9ZnVuY3Rpb24gTGN0KHQsZSl7Y29uc3Qgbj1Oc3RbZV07aWYodm9pZCAwPT09bil0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSA8IitlKyI+Iik7cmV0dXJuIEZjdChuKX1jb25zdCBCY3Q9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgXD0gKFxkKylcOyBpIDwgKFxkKylcOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxWY3Q9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiBqY3QodCl7cmV0dXJuIHQucmVwbGFjZShWY3QsR2N0KS5yZXBsYWNlKEJjdCxVY3QpfWZ1bmN0aW9uIFVjdCh0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksR2N0KDAsZSxuLG8pfWZ1bmN0aW9uIEdjdCh0LGUsbixvKXtsZXQgaT0iIjtmb3IobGV0IHQ9cGFyc2VJbnQoZSk7dDxwYXJzZUludChuKTt0KyspaSs9by5yZXBsYWNlKC9cW1xzKmlccypcXS9nLCJbICIrdCsiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csdCk7cmV0dXJuIGl9ZnVuY3Rpb24gV2N0KHQpe2xldCBlPSJwcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGZsb2F0O1xucHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBpbnQ7IjtyZXR1cm4iaGlnaHAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBISUdIX1BSRUNJU0lPTiI6Im1lZGl1bXAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIjoibG93cCI9PT10LnByZWNpc2lvbiYmKGUrPSJcbiNkZWZpbmUgTE9XX1BSRUNJU0lPTiIpLGV9ZnVuY3Rpb24gWWN0KHQsZSxuLG8pe2NvbnN0IGk9dC5nZXRDb250ZXh0KCksYT1uLmRlZmluZXM7bGV0IHI9bi52ZXJ0ZXhTaGFkZXIscz1uLmZyYWdtZW50U2hhZGVyO2NvbnN0IGw9KGZ1bmN0aW9uIGModCl7bGV0IGU9IlNIQURPV01BUF9UWVBFX0JBU0lDIjtyZXR1cm4gMT09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0YiOjI9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQiOjM9PT10LnNoYWRvd01hcFR5cGUmJihlPSJTSEFET1dNQVBfVFlQRV9WU00iKSxlfSkobiksZD0oZnVuY3Rpb24gcCh0KXtsZXQgZT0iRU5WTUFQX1RZUEVfQ1VCRSI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSBkaXQ6Y2FzZSBwaXQ6ZT0iRU5WTUFQX1RZUEVfQ1VCRSI7YnJlYWs7Y2FzZSBtaXQ6Y2FzZSAzMDc6ZT0iRU5WTUFQX1RZUEVfQ1VCRV9VViJ9cmV0dXJuIGV9KShuKSxtPShmdW5jdGlvbiB1KHQpe2xldCBlPSJFTlZNQVBfTU9ERV9SRUZMRUNUSU9OIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIHBpdDpjYXNlIDMwNzplPSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIn1yZXR1cm4gZX0pKG4pLGY9KGZ1bmN0aW9uIGcodCl7bGV0IGU9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZih0LmVudk1hcClzd2l0Y2godC5jb21iaW5lKXtjYXNlIDA6ZT0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjticmVhaztjYXNlIDE6ZT0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSAyOmU9IkVOVk1BUF9CTEVORElOR19BREQifXJldHVybiBlfSkobiksaD10LmdhbW1hRmFjdG9yPjA/dC5nYW1tYUZhY3RvcjoxLGI9bi5pc1dlYkdMMj8iIjooZnVuY3Rpb24geSh0KXtyZXR1cm5bdC5leHRlbnNpb25EZXJpdmF0aXZlc3x8dC5lbnZNYXBDdWJlVVZ8fHQuYnVtcE1hcHx8dC50YW5nZW50U3BhY2VOb3JtYWxNYXB8fHQuY2xlYXJjb2F0Tm9ybWFsTWFwfHx0LmZsYXRTaGFkaW5nfHwicGh5c2ljYWwiPT09dC5zaGFkZXJJRD8iI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUiOiIiLCh0LmV4dGVuc2lvbkZyYWdEZXB0aHx8dC5sb2dhcml0aG1pY0RlcHRoQnVmZmVyKSYmdC5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2V4dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCA6IGVuYWJsZSI6IiIsdC5leHRlbnNpb25EcmF3QnVmZmVycyYmdC5yZW5kZXJlckV4dGVuc2lvbkRyYXdCdWZmZXJzPyIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlIjoiIiwodC5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHx0LmVudk1hcHx8dC50cmFuc21pc3Npb24+MCkmJnQucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIoTmN0KS5qb2luKCJcbiIpfSkobiksXz0oZnVuY3Rpb24gQyh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IG89dFtuXTshMSE9PW8mJmUucHVzaCgiI2RlZmluZSAiK24rIiAiK28pfXJldHVybiBlLmpvaW4oIlxuIil9KShhKSxNPWkuY3JlYXRlUHJvZ3JhbSgpO2xldCB2LHgsTz1uLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK24uZ2xzbFZlcnNpb24rIlxuIjoiIjtuLmlzUmF3U2hhZGVyTWF0ZXJpYWw/KHY9W19dLmZpbHRlcihOY3QpLmpvaW4oIlxuIiksdi5sZW5ndGg+MCYmKHYrPSJcbiIpLHg9W2IsX10uZmlsdGVyKE5jdCkuam9pbigiXG4iKSx4Lmxlbmd0aD4wJiYoeCs9IlxuIikpOih2PVtXY3QobiksIiNkZWZpbmUgU0hBREVSX05BTUUgIituLnNoYWRlck5hbWUsXyxuLmluc3RhbmNpbmc/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkciOiIiLG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HX0NPTE9SIjoiIixuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVkVSVEVYX1RFWFRVUkVTIjoiIiwiI2RlZmluZSBHQU1NQV9GQUNUT1IgIitoLCIjZGVmaW5lIE1BWF9CT05FUyAiK24ubWF4Qm9uZXMsbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrbToiIixuLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsbi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLG4uZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixuLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLG4ubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4udGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLG4uY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixuLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsbi5kaXNwbGFjZW1lbnRNYXAmJm4uc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBVU0VfRElTUExBQ0VNRU5UTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLG4uc3BlY3VsYXJUaW50TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUlRJTlRNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixuLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixuLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixuLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixuLnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLG4udmVydGV4QWxwaGFzPyIjZGVmaW5lIFVTRV9DT0xPUl9BTFBIQSI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLnNraW5uaW5nPyIjZGVmaW5lIFVTRV9TS0lOTklORyI6IiIsbi51c2VWZXJ0ZXhUZXh0dXJlPyIjZGVmaW5lIEJPTkVfVEVYVFVSRSI6IiIsbi5tb3JwaFRhcmdldHM/IiNkZWZpbmUgVVNFX01PUlBIVEFSR0VUUyI6IiIsbi5tb3JwaE5vcm1hbHMmJiExPT09bi5mbGF0U2hhZGluZz8iI2RlZmluZSBVU0VfTU9SUEhOT1JNQUxTIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5zaXplQXR0ZW51YXRpb24/IiNkZWZpbmUgVVNFX1NJWkVBVFRFTlVBVElPTiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HIiwiXHRhdHRyaWJ1dGUgbWF0NCBpbnN0YW5jZU1hdHJpeDsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IiLCJcdGF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlQ29sb3I7IiwiI2VuZGlmIiwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247IiwiYXR0cmlidXRlIHZlYzMgbm9ybWFsOyIsImF0dHJpYnV0ZSB2ZWMyIHV2OyIsIiNpZmRlZiBVU0VfVEFOR0VOVCIsIlx0YXR0cmlidXRlIHZlYzQgdGFuZ2VudDsiLCIjZW5kaWYiLCIjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkiLCJcdGF0dHJpYnV0ZSB2ZWM0IGNvbG9yOyIsIiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIiwiXHRhdHRyaWJ1dGUgdmVjMyBjb2xvcjsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX01PUlBIVEFSR0VUUyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQwOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQxOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQyOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQzOyIsIlx0I2lmZGVmIFVTRV9NT1JQSE5PUk1BTFMiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwwOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDE7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOyIsIlx0I2Vsc2UiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDU7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OyIsIlx0I2VuZGlmIiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9TS0lOTklORyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbkluZGV4OyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLCJcbiJdLmZpbHRlcihOY3QpLmpvaW4oIlxuIikseD1bYixXY3QobiksIiNkZWZpbmUgU0hBREVSX05BTUUgIituLnNoYWRlck5hbWUsXyxuLmFscGhhVGVzdD8iI2RlZmluZSBBTFBIQVRFU1QgIituLmFscGhhVGVzdCsobi5hbHBoYVRlc3QlMT8iIjoiLjAiKToiIiwiI2RlZmluZSBHQU1NQV9GQUNUT1IgIitoLG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLm1hdGNhcD8iI2RlZmluZSBVU0VfTUFUQ0FQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK2Q6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIittOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZjoiIixuLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsbi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLG4uZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixuLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLG4ubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4udGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLG4uY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixuLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4uc3BlY3VsYXJJbnRlbnNpdHlNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQIjoiIixuLnNwZWN1bGFyVGludE1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJUSU5UTUFQIjoiIixuLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixuLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixuLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsbi5zaGVlbj8iI2RlZmluZSBVU0VfU0hFRU4iOiIiLG4udHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLG4udHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLG4udGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzfHxuLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLG4udmVydGV4QWxwaGFzPyIjZGVmaW5lIFVTRV9DT0xPUl9BTFBIQSI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmdyYWRpZW50TWFwPyIjZGVmaW5lIFVTRV9HUkFESUVOVE1BUCI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4ucHJlbXVsdGlwbGllZEFscGhhPyIjZGVmaW5lIFBSRU1VTFRJUExJRURfQUxQSEEiOiIiLG4ucGh5c2ljYWxseUNvcnJlY3RMaWdodHM/IiNkZWZpbmUgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLChuLmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fG4uZW52TWFwKSYmbi5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNkZWZpbmUgVEVYVFVSRV9MT0RfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLDAhPT1uLnRvbmVNYXBwaW5nPyIjZGVmaW5lIFRPTkVfTUFQUElORyI6IiIsMCE9PW4udG9uZU1hcHBpbmc/TnN0LnRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiIsMCE9PW4udG9uZU1hcHBpbmc/VGN0KCJ0b25lTWFwcGluZyIsbi50b25lTWFwcGluZyk6IiIsbi5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixOc3QuZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQsbi5tYXA/UmN0KCJtYXBUZXhlbFRvTGluZWFyIixuLm1hcEVuY29kaW5nKToiIixuLm1hdGNhcD9SY3QoIm1hdGNhcFRleGVsVG9MaW5lYXIiLG4ubWF0Y2FwRW5jb2RpbmcpOiIiLG4uZW52TWFwP1JjdCgiZW52TWFwVGV4ZWxUb0xpbmVhciIsbi5lbnZNYXBFbmNvZGluZyk6IiIsbi5lbWlzc2l2ZU1hcD9SY3QoImVtaXNzaXZlTWFwVGV4ZWxUb0xpbmVhciIsbi5lbWlzc2l2ZU1hcEVuY29kaW5nKToiIixuLnNwZWN1bGFyVGludE1hcD9SY3QoInNwZWN1bGFyVGludE1hcFRleGVsVG9MaW5lYXIiLG4uc3BlY3VsYXJUaW50TWFwRW5jb2RpbmcpOiIiLG4ubGlnaHRNYXA/UmN0KCJsaWdodE1hcFRleGVsVG9MaW5lYXIiLG4ubGlnaHRNYXBFbmNvZGluZyk6IiIsQWN0KCJsaW5lYXJUb091dHB1dFRleGVsIixuLm91dHB1dEVuY29kaW5nKSxuLmRlcHRoUGFja2luZz8iI2RlZmluZSBERVBUSF9QQUNLSU5HICIrbi5kZXB0aFBhY2tpbmc6IiIsIlxuIl0uZmlsdGVyKE5jdCkuam9pbigiXG4iKSkscj1GY3Qocikscj16Y3QocixuKSxyPUljdChyLG4pLHM9RmN0KHMpLHM9emN0KHMsbikscz1JY3QocyxuKSxyPWpjdChyKSxzPWpjdChzKSxuLmlzV2ViR0wyJiYhMCE9PW4uaXNSYXdTaGFkZXJNYXRlcmlhbCYmKE89IiN2ZXJzaW9uIDMwMCBlc1xuIix2PVsiI2RlZmluZSBhdHRyaWJ1dGUgaW4iLCIjZGVmaW5lIHZhcnlpbmcgb3V0IiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSJdLmpvaW4oIlxuIikrIlxuIit2LHg9WyIjZGVmaW5lIHZhcnlpbmcgaW4iLG4uZ2xzbFZlcnNpb249PT1qaXQ/IiI6Im91dCBoaWdocCB2ZWM0IHBjX2ZyYWdDb2xvcjsiLG4uZ2xzbFZlcnNpb249PT1qaXQ/IiI6IiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIHBjX2ZyYWdDb2xvciIsIiNkZWZpbmUgZ2xfRnJhZ0RlcHRoRVhUIGdsX0ZyYWdEZXB0aCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmVDdWJlIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmUyRFByb2ogdGV4dHVyZVByb2oiLCIjZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qTG9kRVhUIHRleHR1cmVQcm9qTG9kIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUxvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qR3JhZEVYVCB0ZXh0dXJlUHJvakdyYWQiLCIjZGVmaW5lIHRleHR1cmVDdWJlR3JhZEVYVCB0ZXh0dXJlR3JhZCJdLmpvaW4oIlxuIikrIlxuIit4KTtjb25zdCBQPU8reCtzLHc9a2N0KGksMzU2MzMsTyt2K3IpLGs9a2N0KGksMzU2MzIsUCk7aWYoaS5hdHRhY2hTaGFkZXIoTSx3KSxpLmF0dGFjaFNoYWRlcihNLGspLHZvaWQgMCE9PW4uaW5kZXgwQXR0cmlidXRlTmFtZT9pLmJpbmRBdHRyaWJMb2NhdGlvbihNLDAsbi5pbmRleDBBdHRyaWJ1dGVOYW1lKTohMD09PW4ubW9ycGhUYXJnZXRzJiZpLmJpbmRBdHRyaWJMb2NhdGlvbihNLDAsInBvc2l0aW9uIiksaS5saW5rUHJvZ3JhbShNKSx0LmRlYnVnLmNoZWNrU2hhZGVyRXJyb3JzKXtjb25zdCB0PWkuZ2V0UHJvZ3JhbUluZm9Mb2coTSkudHJpbSgpLGU9aS5nZXRTaGFkZXJJbmZvTG9nKHcpLnRyaW0oKSxuPWkuZ2V0U2hhZGVySW5mb0xvZyhrKS50cmltKCk7bGV0IG89ITAsYT0hMDtpZighMT09PWkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihNLDM1NzE0KSl7bz0hMTtjb25zdCBlPUVjdChpLHcsInZlcnRleCIpLG49RWN0KGksaywiZnJhZ21lbnQiKTtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFByb2dyYW06IHNoYWRlciBlcnJvcjogIixpLmdldEVycm9yKCksIjM1NzE1IixpLmdldFByb2dyYW1QYXJhbWV0ZXIoTSwzNTcxNSksImdsLmdldFByb2dyYW1JbmZvTG9nIix0LGUsbil9ZWxzZSIiIT09dD9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogZ2wuZ2V0UHJvZ3JhbUluZm9Mb2coKSIsdCk6IiIhPT1lJiYiIiE9PW58fChhPSExKTthJiYodGhpcy5kaWFnbm9zdGljcz17cnVubmFibGU6byxwcm9ncmFtTG9nOnQsdmVydGV4U2hhZGVyOntsb2c6ZSxwcmVmaXg6dn0sZnJhZ21lbnRTaGFkZXI6e2xvZzpuLHByZWZpeDp4fX0pfWxldCBTLEQ7cmV0dXJuIGkuZGVsZXRlU2hhZGVyKHcpLGkuZGVsZXRlU2hhZGVyKGspLHRoaXMuZ2V0VW5pZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09UyYmKFM9bmV3IHdjdChpLE0pKSxTfSx0aGlzLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09RCYmKEQ9KGZ1bmN0aW9uIHQoZSxuKXtjb25zdCBvPXt9LGk9ZS5nZXRQcm9ncmFtUGFyYW1ldGVyKG4sMzU3MjEpO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2NvbnN0IGk9ZS5nZXRBY3RpdmVBdHRyaWIobix0KS5uYW1lO29baV09ZS5nZXRBdHRyaWJMb2NhdGlvbihuLGkpfXJldHVybiBvfSkoaSxNKSksRH0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7by5yZWxlYXNlU3RhdGVzT2ZQcm9ncmFtKHRoaXMpLGkuZGVsZXRlUHJvZ3JhbShNKSx0aGlzLnByb2dyYW09dm9pZCAwfSx0aGlzLm5hbWU9bi5zaGFkZXJOYW1lLHRoaXMuaWQ9U2N0KyssdGhpcy5jYWNoZUtleT1lLHRoaXMudXNlZFRpbWVzPTEsdGhpcy5wcm9ncmFtPU0sdGhpcy52ZXJ0ZXhTaGFkZXI9dyx0aGlzLmZyYWdtZW50U2hhZGVyPWssdGhpc31mdW5jdGlvbiBxY3QodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1bXSxsPWkuaXNXZWJHTDIsYz1pLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZD1pLmZsb2F0VmVydGV4VGV4dHVyZXMscD1pLm1heFZlcnRleFVuaWZvcm1zLG09aS52ZXJ0ZXhUZXh0dXJlcztsZXQgdT1pLnByZWNpc2lvbjtjb25zdCBmPXtNZXNoRGVwdGhNYXRlcmlhbDoiZGVwdGgiLE1lc2hEaXN0YW5jZU1hdGVyaWFsOiJkaXN0YW5jZVJHQkEiLE1lc2hOb3JtYWxNYXRlcmlhbDoibm9ybWFsIixNZXNoQmFzaWNNYXRlcmlhbDoiYmFzaWMiLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ImxhbWJlcnQiLE1lc2hQaG9uZ01hdGVyaWFsOiJwaG9uZyIsTWVzaFRvb25NYXRlcmlhbDoidG9vbiIsTWVzaFN0YW5kYXJkTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoUGh5c2ljYWxNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hNYXRjYXBNYXRlcmlhbDoibWF0Y2FwIixMaW5lQmFzaWNNYXRlcmlhbDoiYmFzaWMiLExpbmVEYXNoZWRNYXRlcmlhbDoiZGFzaGVkIixQb2ludHNNYXRlcmlhbDoicG9pbnRzIixTaGFkb3dNYXRlcmlhbDoic2hhZG93IixTcHJpdGVNYXRlcmlhbDoic3ByaXRlIn0sZz1bInByZWNpc2lvbiIsImlzV2ViR0wyIiwic3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyIsIm91dHB1dEVuY29kaW5nIiwiaW5zdGFuY2luZyIsImluc3RhbmNpbmdDb2xvciIsIm1hcCIsIm1hcEVuY29kaW5nIiwibWF0Y2FwIiwibWF0Y2FwRW5jb2RpbmciLCJlbnZNYXAiLCJlbnZNYXBNb2RlIiwiZW52TWFwRW5jb2RpbmciLCJlbnZNYXBDdWJlVVYiLCJsaWdodE1hcCIsImxpZ2h0TWFwRW5jb2RpbmciLCJhb01hcCIsImVtaXNzaXZlTWFwIiwiZW1pc3NpdmVNYXBFbmNvZGluZyIsImJ1bXBNYXAiLCJub3JtYWxNYXAiLCJvYmplY3RTcGFjZU5vcm1hbE1hcCIsInRhbmdlbnRTcGFjZU5vcm1hbE1hcCIsImNsZWFyY29hdE1hcCIsImNsZWFyY29hdFJvdWdobmVzc01hcCIsImNsZWFyY29hdE5vcm1hbE1hcCIsImRpc3BsYWNlbWVudE1hcCIsInNwZWN1bGFyTWFwIiwic3BlY3VsYXJJbnRlbnNpdHlNYXAiLCJzcGVjdWxhclRpbnRNYXAiLCJzcGVjdWxhclRpbnRNYXBFbmNvZGluZyIsInJvdWdobmVzc01hcCIsIm1ldGFsbmVzc01hcCIsImdyYWRpZW50TWFwIiwiYWxwaGFNYXAiLCJjb21iaW5lIiwidmVydGV4Q29sb3JzIiwidmVydGV4QWxwaGFzIiwidmVydGV4VGFuZ2VudHMiLCJ2ZXJ0ZXhVdnMiLCJ1dnNWZXJ0ZXhPbmx5IiwiZm9nIiwidXNlRm9nIiwiZm9nRXhwMiIsImZsYXRTaGFkaW5nIiwic2l6ZUF0dGVudWF0aW9uIiwibG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciIsInNraW5uaW5nIiwibWF4Qm9uZXMiLCJ1c2VWZXJ0ZXhUZXh0dXJlIiwibW9ycGhUYXJnZXRzIiwibW9ycGhOb3JtYWxzIiwicHJlbXVsdGlwbGllZEFscGhhIiwibnVtRGlyTGlnaHRzIiwibnVtUG9pbnRMaWdodHMiLCJudW1TcG90TGlnaHRzIiwibnVtSGVtaUxpZ2h0cyIsIm51bVJlY3RBcmVhTGlnaHRzIiwibnVtRGlyTGlnaHRTaGFkb3dzIiwibnVtUG9pbnRMaWdodFNoYWRvd3MiLCJudW1TcG90TGlnaHRTaGFkb3dzIiwic2hhZG93TWFwRW5hYmxlZCIsInNoYWRvd01hcFR5cGUiLCJ0b25lTWFwcGluZyIsInBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzIiwiYWxwaGFUZXN0IiwiZG91YmxlU2lkZWQiLCJmbGlwU2lkZWQiLCJudW1DbGlwcGluZ1BsYW5lcyIsIm51bUNsaXBJbnRlcnNlY3Rpb24iLCJkZXB0aFBhY2tpbmciLCJkaXRoZXJpbmciLCJzaGVlbiIsInRyYW5zbWlzc2lvbiIsInRyYW5zbWlzc2lvbk1hcCIsInRoaWNrbmVzc01hcCJdO2Z1bmN0aW9uIGgodCl7bGV0IGU7cmV0dXJuIHQmJnQuaXNUZXh0dXJlP2U9dC5lbmNvZGluZzp0JiZ0LmlzV2ViR0xSZW5kZXJUYXJnZXQ/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtcy5nZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLGU9dC50ZXh0dXJlLmVuY29kaW5nKTplPXppdCxlfXJldHVybntnZXRQYXJhbWV0ZXJzOmZ1bmN0aW9uIGIoYSxzLGcseSxfKXtjb25zdCBDPXkuZm9nLE09KGEuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9uOmUpLmdldChhLmVudk1hcHx8KGEuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD95LmVudmlyb25tZW50Om51bGwpKSx2PWZbYS50eXBlXSx4PV8uaXNTa2lubmVkTWVzaD8oZnVuY3Rpb24gTyh0KXtjb25zdCBlPXQuc2tlbGV0b24uYm9uZXM7aWYoZClyZXR1cm4gMTAyNDt7Y29uc3QgdD1NYXRoLmZsb29yKChwLTIwKS80KSxuPU1hdGgubWluKHQsZS5sZW5ndGgpO3JldHVybiBuPGUubGVuZ3RoPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFNrZWxldG9uIGhhcyAiK2UubGVuZ3RoKyIgYm9uZXMuIFRoaXMgR1BVIHN1cHBvcnRzICIrbisiLiIpLDApOm59fSkoXyk6MDtsZXQgUCx3O2lmKG51bGwhPT1hLnByZWNpc2lvbiYmKHU9aS5nZXRNYXhQcmVjaXNpb24oYS5wcmVjaXNpb24pLHUhPT1hLnByZWNpc2lvbiYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczoiLGEucHJlY2lzaW9uLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsdSwiaW5zdGVhZC4iKSksdil7Y29uc3QgdD1Jc3Rbdl07UD10LnZlcnRleFNoYWRlcix3PXQuZnJhZ21lbnRTaGFkZXJ9ZWxzZSBQPWEudmVydGV4U2hhZGVyLHc9YS5mcmFnbWVudFNoYWRlcjtjb25zdCBrPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7cmV0dXJue2lzV2ViR0wyOmwsc2hhZGVySUQ6dixzaGFkZXJOYW1lOmEudHlwZSx2ZXJ0ZXhTaGFkZXI6UCxmcmFnbWVudFNoYWRlcjp3LGRlZmluZXM6YS5kZWZpbmVzLGlzUmF3U2hhZGVyTWF0ZXJpYWw6ITA9PT1hLmlzUmF3U2hhZGVyTWF0ZXJpYWwsZ2xzbFZlcnNpb246YS5nbHNsVmVyc2lvbixwcmVjaXNpb246dSxpbnN0YW5jaW5nOiEwPT09Xy5pc0luc3RhbmNlZE1lc2gsaW5zdGFuY2luZ0NvbG9yOiEwPT09Xy5pc0luc3RhbmNlZE1lc2gmJm51bGwhPT1fLmluc3RhbmNlQ29sb3Isc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczptLG91dHB1dEVuY29kaW5nOm51bGwhPT1rP2goay50ZXh0dXJlKTp0Lm91dHB1dEVuY29kaW5nLG1hcDohIWEubWFwLG1hcEVuY29kaW5nOmgoYS5tYXApLG1hdGNhcDohIWEubWF0Y2FwLG1hdGNhcEVuY29kaW5nOmgoYS5tYXRjYXApLGVudk1hcDohIU0sZW52TWFwTW9kZTpNJiZNLm1hcHBpbmcsZW52TWFwRW5jb2Rpbmc6aChNKSxlbnZNYXBDdWJlVVY6ISFNJiYoTS5tYXBwaW5nPT09bWl0fHwzMDc9PT1NLm1hcHBpbmcpLGxpZ2h0TWFwOiEhYS5saWdodE1hcCxsaWdodE1hcEVuY29kaW5nOmgoYS5saWdodE1hcCksYW9NYXA6ISFhLmFvTWFwLGVtaXNzaXZlTWFwOiEhYS5lbWlzc2l2ZU1hcCxlbWlzc2l2ZU1hcEVuY29kaW5nOmgoYS5lbWlzc2l2ZU1hcCksYnVtcE1hcDohIWEuYnVtcE1hcCxub3JtYWxNYXA6ISFhLm5vcm1hbE1hcCxvYmplY3RTcGFjZU5vcm1hbE1hcDoxPT09YS5ub3JtYWxNYXBUeXBlLHRhbmdlbnRTcGFjZU5vcm1hbE1hcDowPT09YS5ub3JtYWxNYXBUeXBlLGNsZWFyY29hdE1hcDohIWEuY2xlYXJjb2F0TWFwLGNsZWFyY29hdFJvdWdobmVzc01hcDohIWEuY2xlYXJjb2F0Um91Z2huZXNzTWFwLGNsZWFyY29hdE5vcm1hbE1hcDohIWEuY2xlYXJjb2F0Tm9ybWFsTWFwLGRpc3BsYWNlbWVudE1hcDohIWEuZGlzcGxhY2VtZW50TWFwLHJvdWdobmVzc01hcDohIWEucm91Z2huZXNzTWFwLG1ldGFsbmVzc01hcDohIWEubWV0YWxuZXNzTWFwLHNwZWN1bGFyTWFwOiEhYS5zcGVjdWxhck1hcCxzcGVjdWxhckludGVuc2l0eU1hcDohIWEuc3BlY3VsYXJJbnRlbnNpdHlNYXAsc3BlY3VsYXJUaW50TWFwOiEhYS5zcGVjdWxhclRpbnRNYXAsc3BlY3VsYXJUaW50TWFwRW5jb2Rpbmc6aChhLnNwZWN1bGFyVGludE1hcCksYWxwaGFNYXA6ISFhLmFscGhhTWFwLGdyYWRpZW50TWFwOiEhYS5ncmFkaWVudE1hcCxzaGVlbjohIWEuc2hlZW4sdHJhbnNtaXNzaW9uOiEhYS50cmFuc21pc3Npb24sdHJhbnNtaXNzaW9uTWFwOiEhYS50cmFuc21pc3Npb25NYXAsdGhpY2tuZXNzTWFwOiEhYS50aGlja25lc3NNYXAsY29tYmluZTphLmNvbWJpbmUsdmVydGV4VGFuZ2VudHM6ISFhLm5vcm1hbE1hcCYmISFfLmdlb21ldHJ5JiYhIV8uZ2VvbWV0cnkuYXR0cmlidXRlcy50YW5nZW50LHZlcnRleENvbG9yczphLnZlcnRleENvbG9ycyx2ZXJ0ZXhBbHBoYXM6ITA9PT1hLnZlcnRleENvbG9ycyYmISFfLmdlb21ldHJ5JiYhIV8uZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvciYmND09PV8uZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5pdGVtU2l6ZSx2ZXJ0ZXhVdnM6ISEoYS5tYXB8fGEuYnVtcE1hcHx8YS5ub3JtYWxNYXB8fGEuc3BlY3VsYXJNYXB8fGEuYWxwaGFNYXB8fGEuZW1pc3NpdmVNYXB8fGEucm91Z2huZXNzTWFwfHxhLm1ldGFsbmVzc01hcHx8YS5jbGVhcmNvYXRNYXB8fGEuY2xlYXJjb2F0Um91Z2huZXNzTWFwfHxhLmNsZWFyY29hdE5vcm1hbE1hcHx8YS5kaXNwbGFjZW1lbnRNYXB8fGEudHJhbnNtaXNzaW9uTWFwfHxhLnRoaWNrbmVzc01hcHx8YS5zcGVjdWxhckludGVuc2l0eU1hcHx8YS5zcGVjdWxhclRpbnRNYXApLHV2c1ZlcnRleE9ubHk6IShhLm1hcHx8YS5idW1wTWFwfHxhLm5vcm1hbE1hcHx8YS5zcGVjdWxhck1hcHx8YS5hbHBoYU1hcHx8YS5lbWlzc2l2ZU1hcHx8YS5yb3VnaG5lc3NNYXB8fGEubWV0YWxuZXNzTWFwfHxhLmNsZWFyY29hdE5vcm1hbE1hcHx8YS50cmFuc21pc3Npb258fGEudHJhbnNtaXNzaW9uTWFwfHxhLnRoaWNrbmVzc01hcHx8YS5zcGVjdWxhckludGVuc2l0eU1hcHx8YS5zcGVjdWxhclRpbnRNYXB8fCFhLmRpc3BsYWNlbWVudE1hcCksZm9nOiEhQyx1c2VGb2c6YS5mb2csZm9nRXhwMjpDJiZDLmlzRm9nRXhwMixmbGF0U2hhZGluZzohIWEuZmxhdFNoYWRpbmcsc2l6ZUF0dGVudWF0aW9uOmEuc2l6ZUF0dGVudWF0aW9uLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6Yyxza2lubmluZzohMD09PV8uaXNTa2lubmVkTWVzaCYmeD4wLG1heEJvbmVzOngsdXNlVmVydGV4VGV4dHVyZTpkLG1vcnBoVGFyZ2V0czohIV8uZ2VvbWV0cnkmJiEhXy5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbW9ycGhOb3JtYWxzOiEhXy5nZW9tZXRyeSYmISFfLmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsbnVtRGlyTGlnaHRzOnMuZGlyZWN0aW9uYWwubGVuZ3RoLG51bVBvaW50TGlnaHRzOnMucG9pbnQubGVuZ3RoLG51bVNwb3RMaWdodHM6cy5zcG90Lmxlbmd0aCxudW1SZWN0QXJlYUxpZ2h0czpzLnJlY3RBcmVhLmxlbmd0aCxudW1IZW1pTGlnaHRzOnMuaGVtaS5sZW5ndGgsbnVtRGlyTGlnaHRTaGFkb3dzOnMuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoLG51bVBvaW50TGlnaHRTaGFkb3dzOnMucG9pbnRTaGFkb3dNYXAubGVuZ3RoLG51bVNwb3RMaWdodFNoYWRvd3M6cy5zcG90U2hhZG93TWFwLmxlbmd0aCxudW1DbGlwcGluZ1BsYW5lczpyLm51bVBsYW5lcyxudW1DbGlwSW50ZXJzZWN0aW9uOnIubnVtSW50ZXJzZWN0aW9uLGRpdGhlcmluZzphLmRpdGhlcmluZyxzaGFkb3dNYXBFbmFibGVkOnQuc2hhZG93TWFwLmVuYWJsZWQmJmcubGVuZ3RoPjAsc2hhZG93TWFwVHlwZTp0LnNoYWRvd01hcC50eXBlLHRvbmVNYXBwaW5nOmEudG9uZU1hcHBlZD90LnRvbmVNYXBwaW5nOjAscGh5c2ljYWxseUNvcnJlY3RMaWdodHM6dC5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyxwcmVtdWx0aXBsaWVkQWxwaGE6YS5wcmVtdWx0aXBsaWVkQWxwaGEsYWxwaGFUZXN0OmEuYWxwaGFUZXN0LGRvdWJsZVNpZGVkOjI9PT1hLnNpZGUsZmxpcFNpZGVkOjE9PT1hLnNpZGUsZGVwdGhQYWNraW5nOnZvaWQgMCE9PWEuZGVwdGhQYWNraW5nJiZhLmRlcHRoUGFja2luZyxpbmRleDBBdHRyaWJ1dGVOYW1lOmEuaW5kZXgwQXR0cmlidXRlTmFtZSxleHRlbnNpb25EZXJpdmF0aXZlczphLmV4dGVuc2lvbnMmJmEuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcyxleHRlbnNpb25GcmFnRGVwdGg6YS5leHRlbnNpb25zJiZhLmV4dGVuc2lvbnMuZnJhZ0RlcHRoLGV4dGVuc2lvbkRyYXdCdWZmZXJzOmEuZXh0ZW5zaW9ucyYmYS5leHRlbnNpb25zLmRyYXdCdWZmZXJzLGV4dGVuc2lvblNoYWRlclRleHR1cmVMT0Q6YS5leHRlbnNpb25zJiZhLmV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxPRCxyZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aDpsfHxvLmhhcygiRVhUX2ZyYWdfZGVwdGgiKSxyZW5kZXJlckV4dGVuc2lvbkRyYXdCdWZmZXJzOmx8fG8uaGFzKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKSxyZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q6bHx8by5oYXMoIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSxjdXN0b21Qcm9ncmFtQ2FjaGVLZXk6YS5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkoKX19LGdldFByb2dyYW1DYWNoZUtleTpmdW5jdGlvbiB5KGUpe2NvbnN0IG49W107aWYoZS5zaGFkZXJJRD9uLnB1c2goZS5zaGFkZXJJRCk6KG4ucHVzaChlLmZyYWdtZW50U2hhZGVyKSxuLnB1c2goZS52ZXJ0ZXhTaGFkZXIpKSx2b2lkIDAhPT1lLmRlZmluZXMpZm9yKGNvbnN0IHQgaW4gZS5kZWZpbmVzKW4ucHVzaCh0KSxuLnB1c2goZS5kZWZpbmVzW3RdKTtpZighMT09PWUuaXNSYXdTaGFkZXJNYXRlcmlhbCl7Zm9yKGxldCB0PTA7dDxnLmxlbmd0aDt0Kyspbi5wdXNoKGVbZ1t0XV0pO24ucHVzaCh0Lm91dHB1dEVuY29kaW5nKSxuLnB1c2godC5nYW1tYUZhY3Rvcil9cmV0dXJuIG4ucHVzaChlLmN1c3RvbVByb2dyYW1DYWNoZUtleSksbi5qb2luKCl9LGdldFVuaWZvcm1zOmZ1bmN0aW9uIF8odCl7Y29uc3QgZT1mW3QudHlwZV07bGV0IG47cmV0dXJuIG49ZT9oc3QuY2xvbmUoSXN0W2VdLnVuaWZvcm1zKTp0LnVuaWZvcm1zLG59LGFjcXVpcmVQcm9ncmFtOmZ1bmN0aW9uIEMoZSxuKXtsZXQgbztmb3IobGV0IHQ9MCxlPXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9c1t0XTtpZihlLmNhY2hlS2V5PT09bil7bz1lLCsrby51c2VkVGltZXM7YnJlYWt9fXJldHVybiB2b2lkIDA9PT1vJiYobz1uZXcgWWN0KHQsbixlLGEpLHMucHVzaChvKSksb30scmVsZWFzZVByb2dyYW06ZnVuY3Rpb24gTSh0KXtpZigwPT0tLXQudXNlZFRpbWVzKXtjb25zdCBlPXMuaW5kZXhPZih0KTtzW2VdPXNbcy5sZW5ndGgtMV0scy5wb3AoKSx0LmRlc3Ryb3koKX19LHByb2dyYW1zOnN9fWZ1bmN0aW9uIFpjdCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuKXtsZXQgbz10LmdldChuKTtyZXR1cm4gdm9pZCAwPT09byYmKG89e30sdC5zZXQobixvKSksb30scmVtb3ZlOmZ1bmN0aW9uIG4oZSl7dC5kZWxldGUoZSl9LHVwZGF0ZTpmdW5jdGlvbiBvKGUsbixpKXt0LmdldChlKVtuXT1pfSxkaXNwb3NlOmZ1bmN0aW9uIGkoKXt0PW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gWGN0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnByb2dyYW0hPT1lLnByb2dyYW0/dC5wcm9ncmFtLmlkLWUucHJvZ3JhbS5pZDp0Lm1hdGVyaWFsLmlkIT09ZS5tYXRlcmlhbC5pZD90Lm1hdGVyaWFsLmlkLWUubWF0ZXJpYWwuaWQ6dC56IT09ZS56P3Quei1lLno6dC5pZC1lLmlkfWZ1bmN0aW9uIEtjdCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC56IT09ZS56P2Uuei10Lno6dC5pZC1lLmlkfWZ1bmN0aW9uIEpjdCh0KXtjb25zdCBlPVtdO2xldCBuPTA7Y29uc3Qgbz1bXSxpPVtdLGE9W10scj17aWQ6LTF9O2Z1bmN0aW9uIHMobyxpLGEscyxsLGMpe2xldCBkPWVbbl07Y29uc3QgcD10LmdldChhKTtyZXR1cm4gdm9pZCAwPT09ZD8oZD17aWQ6by5pZCxvYmplY3Q6byxnZW9tZXRyeTppLG1hdGVyaWFsOmEscHJvZ3JhbTpwLnByb2dyYW18fHIsZ3JvdXBPcmRlcjpzLHJlbmRlck9yZGVyOm8ucmVuZGVyT3JkZXIsejpsLGdyb3VwOmN9LGVbbl09ZCk6KGQuaWQ9by5pZCxkLm9iamVjdD1vLGQuZ2VvbWV0cnk9aSxkLm1hdGVyaWFsPWEsZC5wcm9ncmFtPXAucHJvZ3JhbXx8cixkLmdyb3VwT3JkZXI9cyxkLnJlbmRlck9yZGVyPW8ucmVuZGVyT3JkZXIsZC56PWwsZC5ncm91cD1jKSxuKyssZH1yZXR1cm57b3BhcXVlOm8sdHJhbnNtaXNzaXZlOmksdHJhbnNwYXJlbnQ6YSxpbml0OmZ1bmN0aW9uIGwoKXtuPTAsby5sZW5ndGg9MCxpLmxlbmd0aD0wLGEubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24gYyh0LGUsbixyLGwsZCl7Y29uc3QgcD1zKHQsZSxuLHIsbCxkKTtuLnRyYW5zbWlzc2lvbj4wP2kucHVzaChwKTohMD09PW4udHJhbnNwYXJlbnQ/YS5wdXNoKHApOm8ucHVzaChwKX0sdW5zaGlmdDpmdW5jdGlvbiBkKHQsZSxuLHIsbCxjKXtjb25zdCBkPXModCxlLG4scixsLGMpO24udHJhbnNtaXNzaW9uPjA/aS51bnNoaWZ0KGQpOiEwPT09bi50cmFuc3BhcmVudD9hLnVuc2hpZnQoZCk6by51bnNoaWZ0KGQpfSxmaW5pc2g6ZnVuY3Rpb24gcCgpe2ZvcihsZXQgdD1uLG89ZS5sZW5ndGg7dDxvO3QrKyl7Y29uc3Qgbj1lW3RdO2lmKG51bGw9PT1uLmlkKWJyZWFrO24uaWQ9bnVsbCxuLm9iamVjdD1udWxsLG4uZ2VvbWV0cnk9bnVsbCxuLm1hdGVyaWFsPW51bGwsbi5wcm9ncmFtPW51bGwsbi5ncm91cD1udWxsfX0sc29ydDpmdW5jdGlvbiBtKHQsZSl7by5sZW5ndGg+MSYmby5zb3J0KHR8fFhjdCksaS5sZW5ndGg+MSYmaS5zb3J0KGV8fEtjdCksYS5sZW5ndGg+MSYmYS5zb3J0KGV8fEtjdCl9fX1mdW5jdGlvbiBRY3QodCl7bGV0IGU9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBuKG8saSl7bGV0IGE7cmV0dXJuITE9PT1lLmhhcyhvKT8oYT1uZXcgSmN0KHQpLGUuc2V0KG8sW2FdKSk6aT49ZS5nZXQobykubGVuZ3RoPyhhPW5ldyBKY3QodCksZS5nZXQobykucHVzaChhKSk6YT1lLmdldChvKVtpXSxhfSxkaXNwb3NlOmZ1bmN0aW9uIG8oKXtlPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gJGN0KCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IGNhdCxjb2xvcjpuZXcgUnJ0fTticmVhaztjYXNlIlNwb3RMaWdodCI6bj17cG9zaXRpb246bmV3IGNhdCxkaXJlY3Rpb246bmV3IGNhdCxjb2xvcjpuZXcgUnJ0LGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgY2F0LGNvbG9yOm5ldyBScnQsZGlzdGFuY2U6MCxkZWNheTowfTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6bj17ZGlyZWN0aW9uOm5ldyBjYXQsc2t5Q29sb3I6bmV3IFJydCxncm91bmRDb2xvcjpuZXcgUnJ0fTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOm49e2NvbG9yOm5ldyBScnQscG9zaXRpb246bmV3IGNhdCxoYWxmV2lkdGg6bmV3IGNhdCxoYWxmSGVpZ2h0Om5ldyBjYXR9fXJldHVybiB0W2UuaWRdPW4sbn19fWxldCB0ZHQ9MDtmdW5jdGlvbiBlZHQodCxlKXtyZXR1cm4oZS5jYXN0U2hhZG93PzE6MCktKHQuY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIG5kdCh0LGUpe2NvbnN0IG49bmV3ICRjdCxvPShmdW5jdGlvbiBpKCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PXRbZS5pZF0pcmV0dXJuIHRbZS5pZF07bGV0IG47c3dpdGNoKGUudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpjYXNlIlNwb3RMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBRaXR9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6bj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBRaXQsc2hhZG93Q2FtZXJhTmVhcjoxLHNoYWRvd0NhbWVyYUZhcjoxZTN9fXJldHVybiB0W2UuaWRdPW4sbn19fSkoKSxhPXt2ZXJzaW9uOjAsaGFzaDp7ZGlyZWN0aW9uYWxMZW5ndGg6LTEscG9pbnRMZW5ndGg6LTEsc3BvdExlbmd0aDotMSxyZWN0QXJlYUxlbmd0aDotMSxoZW1pTGVuZ3RoOi0xLG51bURpcmVjdGlvbmFsU2hhZG93czotMSxudW1Qb2ludFNoYWRvd3M6LTEsbnVtU3BvdFNoYWRvd3M6LTF9LGFtYmllbnQ6WzAsMCwwXSxwcm9iZTpbXSxkaXJlY3Rpb25hbDpbXSxkaXJlY3Rpb25hbFNoYWRvdzpbXSxkaXJlY3Rpb25hbFNoYWRvd01hcDpbXSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDpbXSxzcG90OltdLHNwb3RTaGFkb3c6W10sc3BvdFNoYWRvd01hcDpbXSxzcG90U2hhZG93TWF0cml4OltdLHJlY3RBcmVhOltdLHJlY3RBcmVhTFRDMTpudWxsLHJlY3RBcmVhTFRDMjpudWxsLHBvaW50OltdLHBvaW50U2hhZG93OltdLHBvaW50U2hhZG93TWFwOltdLHBvaW50U2hhZG93TWF0cml4OltdLGhlbWk6W119O2ZvcihsZXQgdD0wO3Q8OTt0KyspYS5wcm9iZS5wdXNoKG5ldyBjYXQpO2NvbnN0IHI9bmV3IGNhdCxzPW5ldyBCYXQsbD1uZXcgQmF0O3JldHVybntzZXR1cDpmdW5jdGlvbiBjKGkpe2xldCByPTAscz0wLGw9MDtmb3IobGV0IHQ9MDt0PDk7dCsrKWEucHJvYmVbdF0uc2V0KDAsMCwwKTtsZXQgYz0wLGQ9MCxwPTAsbT0wLHU9MCxmPTAsZz0wLGg9MDtpLnNvcnQoZWR0KTtmb3IobGV0IHQ9MCxlPWkubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9aVt0XSxiPWUuY29sb3IseT1lLmludGVuc2l0eSxfPWUuZGlzdGFuY2UsQz1lLnNoYWRvdyYmZS5zaGFkb3cubWFwP2Uuc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYoZS5pc0FtYmllbnRMaWdodClyKz1iLnIqeSxzKz1iLmcqeSxsKz1iLmIqeTtlbHNlIGlmKGUuaXNMaWdodFByb2JlKWZvcihsZXQgdD0wO3Q8OTt0KyspYS5wcm9iZVt0XS5hZGRTY2FsZWRWZWN0b3IoZS5zaC5jb2VmZmljaWVudHNbdF0seSk7ZWxzZSBpZihlLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkpLGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPW8uZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLGEuZGlyZWN0aW9uYWxTaGFkb3dbY109bixhLmRpcmVjdGlvbmFsU2hhZG93TWFwW2NdPUMsYS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFtjXT1lLnNoYWRvdy5tYXRyaXgsZisrfWEuZGlyZWN0aW9uYWxbY109dCxjKyt9ZWxzZSBpZihlLmlzU3BvdExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLHQuY29sb3IuY29weShiKS5tdWx0aXBseVNjYWxhcih5KSx0LmRpc3RhbmNlPV8sdC5jb25lQ29zPU1hdGguY29zKGUuYW5nbGUpLHQucGVudW1icmFDb3M9TWF0aC5jb3MoZS5hbmdsZSooMS1lLnBlbnVtYnJhKSksdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPW8uZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLGEuc3BvdFNoYWRvd1twXT1uLGEuc3BvdFNoYWRvd01hcFtwXT1DLGEuc3BvdFNoYWRvd01hdHJpeFtwXT1lLnNoYWRvdy5tYXRyaXgsaCsrfWEuc3BvdFtwXT10LHArK31lbHNlIGlmKGUuaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3QuY29sb3IuY29weShiKS5tdWx0aXBseVNjYWxhcih5KSx0LmhhbGZXaWR0aC5zZXQoLjUqZS53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSplLmhlaWdodCwwKSxhLnJlY3RBcmVhW21dPXQsbSsrfWVsc2UgaWYoZS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5jb2xvci5jb3B5KGUuY29sb3IpLm11bHRpcGx5U2NhbGFyKGUuaW50ZW5zaXR5KSx0LmRpc3RhbmNlPWUuZGlzdGFuY2UsdC5kZWNheT1lLmRlY2F5LGUuY2FzdFNoYWRvdyl7Y29uc3QgdD1lLnNoYWRvdyxuPW8uZ2V0KGUpO24uc2hhZG93Qmlhcz10LmJpYXMsbi5zaGFkb3dOb3JtYWxCaWFzPXQubm9ybWFsQmlhcyxuLnNoYWRvd1JhZGl1cz10LnJhZGl1cyxuLnNoYWRvd01hcFNpemU9dC5tYXBTaXplLG4uc2hhZG93Q2FtZXJhTmVhcj10LmNhbWVyYS5uZWFyLG4uc2hhZG93Q2FtZXJhRmFyPXQuY2FtZXJhLmZhcixhLnBvaW50U2hhZG93W2RdPW4sYS5wb2ludFNoYWRvd01hcFtkXT1DLGEucG9pbnRTaGFkb3dNYXRyaXhbZF09ZS5zaGFkb3cubWF0cml4LGcrK31hLnBvaW50W2RdPXQsZCsrfWVsc2UgaWYoZS5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1uLmdldChlKTt0LnNreUNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoeSksdC5ncm91bmRDb2xvci5jb3B5KGUuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKHkpLGEuaGVtaVt1XT10LHUrK319bT4wJiYoZS5pc1dlYkdMMnx8ITA9PT10LmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik/KGEucmVjdEFyZWFMVEMxPXpzdC5MVENfRkxPQVRfMSxhLnJlY3RBcmVhTFRDMj16c3QuTFRDX0ZMT0FUXzIpOiEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik/KGEucmVjdEFyZWFMVEMxPXpzdC5MVENfSEFMRl8xLGEucmVjdEFyZWFMVEMyPXpzdC5MVENfSEFMRl8yKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVbmFibGUgdG8gdXNlIFJlY3RBcmVhTGlnaHQuIE1pc3NpbmcgV2ViR0wgZXh0ZW5zaW9ucy4iKSksYS5hbWJpZW50WzBdPXIsYS5hbWJpZW50WzFdPXMsYS5hbWJpZW50WzJdPWw7Y29uc3QgYj1hLmhhc2g7Yi5kaXJlY3Rpb25hbExlbmd0aD09PWMmJmIucG9pbnRMZW5ndGg9PT1kJiZiLnNwb3RMZW5ndGg9PT1wJiZiLnJlY3RBcmVhTGVuZ3RoPT09bSYmYi5oZW1pTGVuZ3RoPT09dSYmYi5udW1EaXJlY3Rpb25hbFNoYWRvd3M9PT1mJiZiLm51bVBvaW50U2hhZG93cz09PWcmJmIubnVtU3BvdFNoYWRvd3M9PT1ofHwoYS5kaXJlY3Rpb25hbC5sZW5ndGg9YyxhLnNwb3QubGVuZ3RoPXAsYS5yZWN0QXJlYS5sZW5ndGg9bSxhLnBvaW50Lmxlbmd0aD1kLGEuaGVtaS5sZW5ndGg9dSxhLmRpcmVjdGlvbmFsU2hhZG93Lmxlbmd0aD1mLGEuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoPWYsYS5wb2ludFNoYWRvdy5sZW5ndGg9ZyxhLnBvaW50U2hhZG93TWFwLmxlbmd0aD1nLGEuc3BvdFNoYWRvdy5sZW5ndGg9aCxhLnNwb3RTaGFkb3dNYXAubGVuZ3RoPWgsYS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC5sZW5ndGg9ZixhLnBvaW50U2hhZG93TWF0cml4Lmxlbmd0aD1nLGEuc3BvdFNoYWRvd01hdHJpeC5sZW5ndGg9aCxiLmRpcmVjdGlvbmFsTGVuZ3RoPWMsYi5wb2ludExlbmd0aD1kLGIuc3BvdExlbmd0aD1wLGIucmVjdEFyZWFMZW5ndGg9bSxiLmhlbWlMZW5ndGg9dSxiLm51bURpcmVjdGlvbmFsU2hhZG93cz1mLGIubnVtUG9pbnRTaGFkb3dzPWcsYi5udW1TcG90U2hhZG93cz1oLGEudmVyc2lvbj10ZHQrKyl9LHNldHVwVmlldzpmdW5jdGlvbiBkKHQsZSl7bGV0IG49MCxvPTAsaT0wLGM9MCxkPTA7Y29uc3QgcD1lLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IGU9MCxtPXQubGVuZ3RoO2U8bTtlKyspe2NvbnN0IG09dFtlXTtpZihtLmlzRGlyZWN0aW9uYWxMaWdodCl7Y29uc3QgdD1hLmRpcmVjdGlvbmFsW25dO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSxyLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKHIpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihwKSxuKyt9ZWxzZSBpZihtLmlzU3BvdExpZ2h0KXtjb25zdCB0PWEuc3BvdFtpXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSx0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksci5zZXRGcm9tTWF0cml4UG9zaXRpb24obS50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihyKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24ocCksaSsrfWVsc2UgaWYobS5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9YS5yZWN0QXJlYVtjXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSxsLmlkZW50aXR5KCkscy5jb3B5KG0ubWF0cml4V29ybGQpLHMucHJlbXVsdGlwbHkocCksbC5leHRyYWN0Um90YXRpb24ocyksdC5oYWxmV2lkdGguc2V0KC41Km0ud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqbS5oZWlnaHQsMCksdC5oYWxmV2lkdGguYXBwbHlNYXRyaXg0KGwpLHQuaGFsZkhlaWdodC5hcHBseU1hdHJpeDQobCksYysrfWVsc2UgaWYobS5pc1BvaW50TGlnaHQpe2NvbnN0IHQ9YS5wb2ludFtvXTt0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihtLm1hdHJpeFdvcmxkKSx0LnBvc2l0aW9uLmFwcGx5TWF0cml4NChwKSxvKyt9ZWxzZSBpZihtLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PWEuaGVtaVtkXTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obS5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHApLHQuZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLGQrK319fSxzdGF0ZTphfX1mdW5jdGlvbiBvZHQodCxlKXtjb25zdCBuPW5ldyBuZHQodCxlKSxvPVtdLGk9W107cmV0dXJue2luaXQ6ZnVuY3Rpb24gYSgpe28ubGVuZ3RoPTAsaS5sZW5ndGg9MH0sc3RhdGU6e2xpZ2h0c0FycmF5Om8sc2hhZG93c0FycmF5OmksbGlnaHRzOm59LHNldHVwTGlnaHRzOmZ1bmN0aW9uIHIoKXtuLnNldHVwKG8pfSxzZXR1cExpZ2h0c1ZpZXc6ZnVuY3Rpb24gcyh0KXtuLnNldHVwVmlldyhvLHQpfSxwdXNoTGlnaHQ6ZnVuY3Rpb24gbCh0KXtvLnB1c2godCl9LHB1c2hTaGFkb3c6ZnVuY3Rpb24gYyh0KXtpLnB1c2godCl9fX1mdW5jdGlvbiBpZHQodCxlKXtsZXQgbj1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIG8oaSxhPTApe2xldCByO3JldHVybiExPT09bi5oYXMoaSk/KHI9bmV3IG9kdCh0LGUpLG4uc2V0KGksW3JdKSk6YT49bi5nZXQoaSkubGVuZ3RoPyhyPW5ldyBvZHQodCxlKSxuLmdldChpKS5wdXNoKHIpKTpyPW4uZ2V0KGkpW2FdLHJ9LGRpc3Bvc2U6ZnVuY3Rpb24gaSgpe249bmV3IFdlYWtNYXB9fX1jbGFzcyBhZHQgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz0zMjAwLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319YWR0LnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO2NsYXNzIHJkdCBleHRlbmRzIE9ydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IGNhdCx0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpc319ZnVuY3Rpb24gc2R0KHQsZSxuKXtsZXQgbz1uZXcgRXN0O2NvbnN0IGk9bmV3IFFpdCxhPW5ldyBRaXQscj1uZXcgYWF0LHM9bmV3IGFkdCh7ZGVwdGhQYWNraW5nOjMyMDF9KSxsPW5ldyByZHQsYz17fSxkPW4ubWF4VGV4dHVyZVNpemUscD17MDoxLDE6MCwyOjJ9LG09bmV3IGJzdCh7ZGVmaW5lczp7U0FNUExFX1JBVEU6Mi84LEhBTEZfU0FNUExFX1JBVEU6MS84fSx1bmlmb3Jtczp7c2hhZG93X3Bhc3M6e3ZhbHVlOm51bGx9LHJlc29sdXRpb246e3ZhbHVlOm5ldyBRaXR9LHJhZGl1czp7dmFsdWU6NH19LHZlcnRleFNoYWRlcjoidm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLGZyYWdtZW50U2hhZGVyOiJ1bmlmb3JtIHNhbXBsZXIyRCBzaGFkb3dfcGFzcztcbnVuaWZvcm0gdmVjMiByZXNvbHV0aW9uO1xudW5pZm9ybSBmbG9hdCByYWRpdXM7XG4jaW5jbHVkZSA8cGFja2luZz5cbnZvaWQgbWFpbigpIHtcblx0ZmxvYXQgbWVhbiA9IDAuMDtcblx0ZmxvYXQgc3F1YXJlZF9tZWFuID0gMC4wO1xuXHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSApIC8gcmVzb2x1dGlvbiApICk7XG5cdGZvciAoIGZsb2F0IGkgPSAtMS4wOyBpIDwgMS4wIDsgaSArPSBTQU1QTEVfUkFURSkge1xuXHRcdCNpZmRlZiBIT1JJWk9OVEFMX1BBU1Ncblx0XHRcdHZlYzIgZGlzdHJpYnV0aW9uID0gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggaSwgMC4wICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkaXN0cmlidXRpb24ueDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICsgZGlzdHJpYnV0aW9uLnggKiBkaXN0cmlidXRpb24ueDtcblx0XHQjZWxzZVxuXHRcdFx0ZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCAwLjAsIGkgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG5cdFx0XHRtZWFuICs9IGRlcHRoO1xuXHRcdFx0c3F1YXJlZF9tZWFuICs9IGRlcHRoICogZGVwdGg7XG5cdFx0I2VuZGlmXG5cdH1cblx0bWVhbiA9IG1lYW4gKiBIQUxGX1NBTVBMRV9SQVRFO1xuXHRzcXVhcmVkX21lYW4gPSBzcXVhcmVkX21lYW4gKiBIQUxGX1NBTVBMRV9SQVRFO1xuXHRmbG9hdCBzdGRfZGV2ID0gc3FydCggc3F1YXJlZF9tZWFuIC0gbWVhbiAqIG1lYW4gKTtcblx0Z2xfRnJhZ0NvbG9yID0gcGFjazJIYWxmVG9SR0JBKCB2ZWMyKCBtZWFuLCBzdGRfZGV2ICkgKTtcbn0ifSksdT1tLmNsb25lKCk7dS5kZWZpbmVzLkhPUklaT05UQUxfUEFTUz0xO2NvbnN0IGY9bmV3IHFydDtmLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB6cnQobmV3IEZsb2F0MzJBcnJheShbLTEsLTEsLjUsMywtMSwuNSwtMSwzLC41XSksMykpO2NvbnN0IGc9bmV3IHBzdChmLG0pLGg9dGhpcztmdW5jdGlvbiBiKG4sbyl7Y29uc3QgaT1lLnVwZGF0ZShnKTttLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPW4ubWFwLnRleHR1cmUsbS51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPW4ubWFwU2l6ZSxtLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1uLnJhZGl1cyx0LnNldFJlbmRlclRhcmdldChuLm1hcFBhc3MpLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChvLG51bGwsaSxtLGcsbnVsbCksdS51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1uLm1hcFBhc3MudGV4dHVyZSx1LnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9bi5tYXBTaXplLHUudW5pZm9ybXMucmFkaXVzLnZhbHVlPW4ucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KG4ubWFwKSx0LmNsZWFyKCksdC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksdSxnLG51bGwpfWZ1bmN0aW9uIHkoZSxuLG8saSxhLHIsZCl7bGV0IG09bnVsbDtjb25zdCB1PSEwPT09aS5pc1BvaW50TGlnaHQ/ZS5jdXN0b21EaXN0YW5jZU1hdGVyaWFsOmUuY3VzdG9tRGVwdGhNYXRlcmlhbDtpZihtPXZvaWQgMCE9PXU/dTohMD09PWkuaXNQb2ludExpZ2h0P2w6cyx0LmxvY2FsQ2xpcHBpbmdFbmFibGVkJiYhMD09PW8uY2xpcFNoYWRvd3MmJjAhPT1vLmNsaXBwaW5nUGxhbmVzLmxlbmd0aCl7Y29uc3QgdD1tLnV1aWQsZT1vLnV1aWQ7bGV0IG49Y1t0XTt2b2lkIDA9PT1uJiYobj17fSxjW3RdPW4pO2xldCBpPW5bZV07dm9pZCAwPT09aSYmKGk9bS5jbG9uZSgpLG5bZV09aSksbT1pfXJldHVybiBtLnZpc2libGU9by52aXNpYmxlLG0ud2lyZWZyYW1lPW8ud2lyZWZyYW1lLG0uc2lkZT0zPT09ZD9udWxsIT09by5zaGFkb3dTaWRlP28uc2hhZG93U2lkZTpvLnNpZGU6bnVsbCE9PW8uc2hhZG93U2lkZT9vLnNoYWRvd1NpZGU6cFtvLnNpZGVdLG0uY2xpcFNoYWRvd3M9by5jbGlwU2hhZG93cyxtLmNsaXBwaW5nUGxhbmVzPW8uY2xpcHBpbmdQbGFuZXMsbS5jbGlwSW50ZXJzZWN0aW9uPW8uY2xpcEludGVyc2VjdGlvbixtLndpcmVmcmFtZUxpbmV3aWR0aD1vLndpcmVmcmFtZUxpbmV3aWR0aCxtLmxpbmV3aWR0aD1vLmxpbmV3aWR0aCwhMD09PWkuaXNQb2ludExpZ2h0JiYhMD09PW0uaXNNZXNoRGlzdGFuY2VNYXRlcmlhbCYmKG0ucmVmZXJlbmNlUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGkubWF0cml4V29ybGQpLG0ubmVhckRpc3RhbmNlPWEsbS5mYXJEaXN0YW5jZT1yKSxtfWZ1bmN0aW9uIF8obixpLGEscixzKXtpZighMT09PW4udmlzaWJsZSlyZXR1cm47aWYobi5sYXllcnMudGVzdChpLmxheWVycykmJihuLmlzTWVzaHx8bi5pc0xpbmV8fG4uaXNQb2ludHMpJiYobi5jYXN0U2hhZG93fHxuLnJlY2VpdmVTaGFkb3cmJjM9PT1zKSYmKCFuLmZydXN0dW1DdWxsZWR8fG8uaW50ZXJzZWN0c09iamVjdChuKSkpe24ubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoYS5tYXRyaXhXb3JsZEludmVyc2Usbi5tYXRyaXhXb3JsZCk7Y29uc3Qgbz1lLnVwZGF0ZShuKSxpPW4ubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgZT1vLmdyb3Vwcztmb3IobGV0IGw9MCxjPWUubGVuZ3RoO2w8YztsKyspe2NvbnN0IGM9ZVtsXSxkPWlbYy5tYXRlcmlhbEluZGV4XTtpZihkJiZkLnZpc2libGUpe2NvbnN0IGU9eShuLDAsZCxyLGEubmVhcixhLmZhcixzKTt0LnJlbmRlckJ1ZmZlckRpcmVjdChhLG51bGwsbyxlLG4sYyl9fX1lbHNlIGlmKGkudmlzaWJsZSl7Y29uc3QgZT15KG4sMCxpLHIsYS5uZWFyLGEuZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KGEsbnVsbCxvLGUsbixudWxsKX19Y29uc3QgbD1uLmNoaWxkcmVuO2ZvcihsZXQgdD0wLGU9bC5sZW5ndGg7dDxlO3QrKylfKGxbdF0saSxhLHIscyl9dGhpcy5lbmFibGVkPSExLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMudHlwZT0xLHRoaXMucmVuZGVyPWZ1bmN0aW9uKGUsbixzKXtpZighMT09PWguZW5hYmxlZClyZXR1cm47aWYoITE9PT1oLmF1dG9VcGRhdGUmJiExPT09aC5uZWVkc1VwZGF0ZSlyZXR1cm47aWYoMD09PWUubGVuZ3RoKXJldHVybjtjb25zdCBsPXQuZ2V0UmVuZGVyVGFyZ2V0KCksYz10LmdldEFjdGl2ZUN1YmVGYWNlKCkscD10LmdldEFjdGl2ZU1pcG1hcExldmVsKCksbT10LnN0YXRlO20uc2V0QmxlbmRpbmcoMCksbS5idWZmZXJzLmNvbG9yLnNldENsZWFyKDEsMSwxLDEpLG0uYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxtLnNldFNjaXNzb3JUZXN0KCExKTtmb3IobGV0IGw9MCxjPWUubGVuZ3RoO2w8YztsKyspe2NvbnN0IGM9ZVtsXSxwPWMuc2hhZG93O2lmKHZvaWQgMD09PXApe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xTaGFkb3dNYXA6IixjLCJoYXMgbm8gc2hhZG93LiIpO2NvbnRpbnVlfWlmKCExPT09cC5hdXRvVXBkYXRlJiYhMT09PXAubmVlZHNVcGRhdGUpY29udGludWU7aS5jb3B5KHAubWFwU2l6ZSk7Y29uc3QgdT1wLmdldEZyYW1lRXh0ZW50cygpO2lmKGkubXVsdGlwbHkodSksYS5jb3B5KHAubWFwU2l6ZSksKGkueD5kfHxpLnk+ZCkmJihpLng+ZCYmKGEueD1NYXRoLmZsb29yKGQvdS54KSxpLng9YS54KnUueCxwLm1hcFNpemUueD1hLngpLGkueT5kJiYoYS55PU1hdGguZmxvb3IoZC91LnkpLGkueT1hLnkqdS55LHAubWFwU2l6ZS55PWEueSkpLG51bGw9PT1wLm1hcCYmIXAuaXNQb2ludExpZ2h0U2hhZG93JiYzPT09dGhpcy50eXBlKXtjb25zdCB0PXttaW5GaWx0ZXI6Yml0LG1hZ0ZpbHRlcjpiaXQsZm9ybWF0OndpdH07cC5tYXA9bmV3IHJhdChpLngsaS55LHQpLHAubWFwLnRleHR1cmUubmFtZT1jLm5hbWUrIi5zaGFkb3dNYXAiLHAubWFwUGFzcz1uZXcgcmF0KGkueCxpLnksdCkscC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfW51bGw9PT1wLm1hcCYmKHAubWFwPW5ldyByYXQoaS54LGkueSx7bWluRmlsdGVyOmhpdCxtYWdGaWx0ZXI6aGl0LGZvcm1hdDp3aXR9KSxwLm1hcC50ZXh0dXJlLm5hbWU9Yy5uYW1lKyIuc2hhZG93TWFwIixwLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHQuc2V0UmVuZGVyVGFyZ2V0KHAubWFwKSx0LmNsZWFyKCk7Y29uc3QgZj1wLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IHQ9MDt0PGY7dCsrKXtjb25zdCBlPXAuZ2V0Vmlld3BvcnQodCk7ci5zZXQoYS54KmUueCxhLnkqZS55LGEueCplLnosYS55KmUudyksbS52aWV3cG9ydChyKSxwLnVwZGF0ZU1hdHJpY2VzKGMsdCksbz1wLmdldEZydXN0dW0oKSxfKG4scyxwLmNhbWVyYSxjLHRoaXMudHlwZSl9cC5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fGIocCxzKSxwLm5lZWRzVXBkYXRlPSExfWgubmVlZHNVcGRhdGU9ITEsdC5zZXRSZW5kZXJUYXJnZXQobCxjLHApfX1mdW5jdGlvbiBsZHQodCxlLG4pe2NvbnN0IG89bi5pc1dlYkdMMixpPW5ldyhmdW5jdGlvbiBhKCl7bGV0IGU9ITE7Y29uc3Qgbj1uZXcgYWF0O2xldCBvPW51bGw7Y29uc3QgaT1uZXcgYWF0KDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKG4pe289PT1ufHxlfHwodC5jb2xvck1hc2sobixuLG4sbiksbz1uKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSxvLGEscixzKXshMD09PXMmJihlKj1yLG8qPXIsYSo9ciksbi5zZXQoZSxvLGEsciksITE9PT1pLmVxdWFscyhuKSYmKHQuY2xlYXJDb2xvcihlLG8sYSxyKSxpLmNvcHkobikpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbz1udWxsLGkuc2V0KC0xLDAsMCwwKX19fSkscj1uZXcoZnVuY3Rpb24gcygpe2xldCBlPSExLG49bnVsbCxvPW51bGwsaT1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe3Q/QigyOTI5KTpWKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKG8pe249PT1vfHxlfHwodC5kZXB0aE1hc2sobyksbj1vKX0sc2V0RnVuYzpmdW5jdGlvbihlKXtpZihvIT09ZSl7aWYoZSlzd2l0Y2goZSl7Y2FzZSAwOnQuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOnQuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOnQuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOnQuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OnQuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OnQuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OnQuZGVwdGhGdW5jKDUxNik7YnJlYWs7Y2FzZSA3OnQuZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDp0LmRlcHRoRnVuYyg1MTUpfWVsc2UgdC5kZXB0aEZ1bmMoNTE1KTtvPWV9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtpIT09ZSYmKHQuY2xlYXJEZXB0aChlKSxpPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGx9fX0pLGw9bmV3KGZ1bmN0aW9uIGMoKXtsZXQgZT0hMSxuPW51bGwsbz1udWxsLGk9bnVsbCxhPW51bGwscj1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsO3JldHVybntzZXRUZXN0OmZ1bmN0aW9uKHQpe2V8fCh0P0IoMjk2MCk6VigyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24obyl7bj09PW98fGV8fCh0LnN0ZW5jaWxNYXNrKG8pLG49byl9LHNldEZ1bmM6ZnVuY3Rpb24oZSxuLHIpe289PT1lJiZpPT09biYmYT09PXJ8fCh0LnN0ZW5jaWxGdW5jKGUsbixyKSxvPWUsaT1uLGE9cil9LHNldE9wOmZ1bmN0aW9uKGUsbixvKXtyPT09ZSYmcz09PW4mJmw9PT1vfHwodC5zdGVuY2lsT3AoZSxuLG8pLHI9ZSxzPW4sbD1vKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe2U9dH0sc2V0Q2xlYXI6ZnVuY3Rpb24oZSl7YyE9PWUmJih0LmNsZWFyU3RlbmNpbChlKSxjPWUpfSxyZXNldDpmdW5jdGlvbigpe2U9ITEsbj1udWxsLG89bnVsbCxpPW51bGwsYT1udWxsLHI9bnVsbCxzPW51bGwsbD1udWxsLGM9bnVsbH19fSk7bGV0IGQ9e30scD1udWxsLG09e30sdT1udWxsLGY9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbDtjb25zdCBTPXQuZ2V0UGFyYW1ldGVyKDM1NjYxKTtsZXQgRD0hMSxFPTA7Y29uc3QgUj10LmdldFBhcmFtZXRlcig3OTM4KTstMSE9PVIuaW5kZXhPZigiV2ViR0wiKT8oRT1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhSKVsxXSksRD1FPj0xKTotMSE9PVIuaW5kZXhPZigiT3BlbkdMIEVTIikmJihFPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhSKVsxXSksRD1FPj0yKTtsZXQgQT1udWxsLFQ9e307Y29uc3QgTj10LmdldFBhcmFtZXRlcigzMDg4KSx6PXQuZ2V0UGFyYW1ldGVyKDI5NzgpLEk9KG5ldyBhYXQpLmZyb21BcnJheShOKSxIPShuZXcgYWF0KS5mcm9tQXJyYXkoeik7ZnVuY3Rpb24gRihlLG4sbyl7Y29uc3QgaT1uZXcgVWludDhBcnJheSg0KSxhPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUoZSxhKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCw5NzI4KTtmb3IobGV0IGU9MDtlPG87ZSsrKXQudGV4SW1hZ2UyRChuK2UsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxpKTtyZXR1cm4gYX1jb25zdCBMPXt9O2Z1bmN0aW9uIEIoZSl7ITAhPT1kW2VdJiYodC5lbmFibGUoZSksZFtlXT0hMCl9ZnVuY3Rpb24gVihlKXshMSE9PWRbZV0mJih0LmRpc2FibGUoZSksZFtlXT0hMSl9TFszNTUzXT1GKDM1NTMsMzU1MywxKSxMWzM0MDY3XT1GKDM0MDY3LDM0MDY5LDYpLGkuc2V0Q2xlYXIoMCwwLDAsMSksci5zZXRDbGVhcigxKSxsLnNldENsZWFyKDApLEIoMjkyOSksci5zZXRGdW5jKDMpLFcoITEpLFkoMSksQigyODg0KSxHKDApO2NvbnN0IGo9e1tjaXRdOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2lmKG8palsxMDNdPTMyNzc1LGpbMTA0XT0zMjc3NjtlbHNle2NvbnN0IHQ9ZS5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKTtudWxsIT09dCYmKGpbMTAzXT10Lk1JTl9FWFQsalsxMDRdPXQuTUFYX0VYVCl9Y29uc3QgVT17MjAwOjAsMjAxOjEsMjAyOjc2OCwyMDQ6NzcwLDIxMDo3NzYsMjA4Ojc3NCwyMDY6NzcyLDIwMzo3NjksMjA1Ojc3MSwyMDk6Nzc1LDIwNzo3NzN9O2Z1bmN0aW9uIEcoZSxuLG8saSxhLHIscyxsKXtpZigwIT09ZSl7aWYoITE9PT1mJiYoQigzMDQyKSxmPSEwKSw1PT09ZSlhPWF8fG4scj1yfHxvLHM9c3x8aSxuPT09aCYmYT09PV98fCh0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShqW25dLGpbYV0pLGg9bixfPWEpLG89PT1iJiZpPT09eSYmcj09PUMmJnM9PT1NfHwodC5ibGVuZEZ1bmNTZXBhcmF0ZShVW29dLFVbaV0sVVtyXSxVW3NdKSxiPW8seT1pLEM9cixNPXMpLGc9ZSx2PW51bGw7ZWxzZSBpZihlIT09Z3x8bCE9PXYpe2lmKGg9PT1jaXQmJl89PT1jaXR8fCh0LmJsZW5kRXF1YXRpb24oMzI3NzQpLGg9Y2l0LF89Y2l0KSxsKXN3aXRjaChlKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jU2VwYXJhdGUoMCwwLDc2OSw3NzEpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsZSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSAxOnQuYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOnQuYmxlbmRGdW5jKDc3MCwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmMoMCw3NjkpO2JyZWFrO2Nhc2UgNDp0LmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfWI9bnVsbCx5PW51bGwsQz1udWxsLE09bnVsbCxnPWUsdj1sfX1lbHNlITA9PT1mJiYoVigzMDQyKSxmPSExKX1mdW5jdGlvbiBXKGUpe3ghPT1lJiYodC5mcm9udEZhY2UoZT8yMzA0OjIzMDUpLHg9ZSl9ZnVuY3Rpb24gWShlKXswIT09ZT8oQigyODg0KSxlIT09TyYmdC5jdWxsRmFjZSgxPT09ZT8xMDI5OjI9PT1lPzEwMjg6MTAzMikpOlYoMjg4NCksTz1lfWZ1bmN0aW9uIHEoZSxuLG8pe2U/KEIoMzI4MjMpLHc9PT1uJiZrPT09b3x8KHQucG9seWdvbk9mZnNldChuLG8pLHc9bixrPW8pKTpWKDMyODIzKX1mdW5jdGlvbiBaKGUpe3ZvaWQgMD09PWUmJihlPTMzOTg0K1MtMSksQSE9PWUmJih0LmFjdGl2ZVRleHR1cmUoZSksQT1lKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6aSxkZXB0aDpyLHN0ZW5jaWw6bH0sZW5hYmxlOkIsZGlzYWJsZTpWLGJpbmRGcmFtZWJ1ZmZlcjpmdW5jdGlvbiBYKGUsbil7cmV0dXJuIG51bGw9PT1uJiZudWxsIT09cCYmKG49cCksbVtlXSE9PW4mJih0LmJpbmRGcmFtZWJ1ZmZlcihlLG4pLG1bZV09bixvJiYoMzYwMDk9PT1lJiYobVszNjE2MF09biksMzYxNjA9PT1lJiYobVszNjAwOV09bikpLCEwKX0sYmluZFhSRnJhbWVidWZmZXI6ZnVuY3Rpb24gSyhlKXtlIT09cCYmKHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHA9ZSl9LHVzZVByb2dyYW06ZnVuY3Rpb24gSihlKXtyZXR1cm4gdSE9PWUmJih0LnVzZVByb2dyYW0oZSksdT1lLCEwKX0sc2V0QmxlbmRpbmc6RyxzZXRNYXRlcmlhbDpmdW5jdGlvbiBRKHQsZSl7Mj09PXQuc2lkZT9WKDI4ODQpOkIoMjg4NCk7bGV0IG49MT09PXQuc2lkZTtlJiYobj0hbiksVyhuKSwxPT09dC5ibGVuZGluZyYmITE9PT10LnRyYW5zcGFyZW50P0coMCk6Ryh0LmJsZW5kaW5nLHQuYmxlbmRFcXVhdGlvbix0LmJsZW5kU3JjLHQuYmxlbmREc3QsdC5ibGVuZEVxdWF0aW9uQWxwaGEsdC5ibGVuZFNyY0FscGhhLHQuYmxlbmREc3RBbHBoYSx0LnByZW11bHRpcGxpZWRBbHBoYSksci5zZXRGdW5jKHQuZGVwdGhGdW5jKSxyLnNldFRlc3QodC5kZXB0aFRlc3QpLHIuc2V0TWFzayh0LmRlcHRoV3JpdGUpLGkuc2V0TWFzayh0LmNvbG9yV3JpdGUpO2NvbnN0IG89dC5zdGVuY2lsV3JpdGU7bC5zZXRUZXN0KG8pLG8mJihsLnNldE1hc2sodC5zdGVuY2lsV3JpdGVNYXNrKSxsLnNldEZ1bmModC5zdGVuY2lsRnVuYyx0LnN0ZW5jaWxSZWYsdC5zdGVuY2lsRnVuY01hc2spLGwuc2V0T3AodC5zdGVuY2lsRmFpbCx0LnN0ZW5jaWxaRmFpbCx0LnN0ZW5jaWxaUGFzcykpLHEodC5wb2x5Z29uT2Zmc2V0LHQucG9seWdvbk9mZnNldEZhY3Rvcix0LnBvbHlnb25PZmZzZXRVbml0cyksITA9PT10LmFscGhhVG9Db3ZlcmFnZT9CKDMyOTI2KTpWKDMyOTI2KX0sc2V0RmxpcFNpZGVkOlcsc2V0Q3VsbEZhY2U6WSxzZXRMaW5lV2lkdGg6ZnVuY3Rpb24gJChlKXtlIT09UCYmKEQmJnQubGluZVdpZHRoKGUpLFA9ZSl9LHNldFBvbHlnb25PZmZzZXQ6cSxzZXRTY2lzc29yVGVzdDpmdW5jdGlvbiB0dCh0KXt0P0IoMzA4OSk6VigzMDg5KX0sYWN0aXZlVGV4dHVyZTpaLGJpbmRUZXh0dXJlOmZ1bmN0aW9uIGV0KGUsbil7bnVsbD09PUEmJlooKTtsZXQgbz1UW0FdO3ZvaWQgMD09PW8mJihvPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0sVFtBXT1vKSxvLnR5cGU9PT1lJiZvLnRleHR1cmU9PT1ufHwodC5iaW5kVGV4dHVyZShlLG58fExbZV0pLG8udHlwZT1lLG8udGV4dHVyZT1uKX0sdW5iaW5kVGV4dHVyZTpmdW5jdGlvbiBudCgpe2NvbnN0IGU9VFtBXTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1lLnR5cGUmJih0LmJpbmRUZXh0dXJlKGUudHlwZSxudWxsKSxlLnR5cGU9dm9pZCAwLGUudGV4dHVyZT12b2lkIDApfSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdW5jdGlvbiBvdCgpe3RyeXt0LmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uIGl0KCl7dHJ5e3QudGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UzRDpmdW5jdGlvbiBhdCgpe3RyeXt0LnRleEltYWdlM0QuYXBwbHkodCxhcmd1bWVudHMpfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix0KX19LHNjaXNzb3I6ZnVuY3Rpb24gcnQoZSl7ITE9PT1JLmVxdWFscyhlKSYmKHQuc2Npc3NvcihlLngsZS55LGUueixlLncpLEkuY29weShlKSl9LHZpZXdwb3J0OmZ1bmN0aW9uIHN0KGUpeyExPT09SC5lcXVhbHMoZSkmJih0LnZpZXdwb3J0KGUueCxlLnksZS56LGUudyksSC5jb3B5KGUpKX0scmVzZXQ6ZnVuY3Rpb24gbHQoKXt0LmRpc2FibGUoMzA0MiksdC5kaXNhYmxlKDI4ODQpLHQuZGlzYWJsZSgyOTI5KSx0LmRpc2FibGUoMzI4MjMpLHQuZGlzYWJsZSgzMDg5KSx0LmRpc2FibGUoMjk2MCksdC5kaXNhYmxlKDMyOTI2KSx0LmJsZW5kRXF1YXRpb24oMzI3NzQpLHQuYmxlbmRGdW5jKDEsMCksdC5ibGVuZEZ1bmNTZXBhcmF0ZSgxLDAsMSwwKSx0LmNvbG9yTWFzayghMCwhMCwhMCwhMCksdC5jbGVhckNvbG9yKDAsMCwwLDApLHQuZGVwdGhNYXNrKCEwKSx0LmRlcHRoRnVuYyg1MTMpLHQuY2xlYXJEZXB0aCgxKSx0LnN0ZW5jaWxNYXNrKDQyOTQ5NjcyOTUpLHQuc3RlbmNpbEZ1bmMoNTE5LDAsNDI5NDk2NzI5NSksdC5zdGVuY2lsT3AoNzY4MCw3NjgwLDc2ODApLHQuY2xlYXJTdGVuY2lsKDApLHQuY3VsbEZhY2UoMTAyOSksdC5mcm9udEZhY2UoMjMwNSksdC5wb2x5Z29uT2Zmc2V0KDAsMCksdC5hY3RpdmVUZXh0dXJlKDMzOTg0KSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKSwhMD09PW8mJih0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxudWxsKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSksdC51c2VQcm9ncmFtKG51bGwpLHQubGluZVdpZHRoKDEpLHQuc2Npc3NvcigwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSx0LnZpZXdwb3J0KDAsMCx0LmNhbnZhcy53aWR0aCx0LmNhbnZhcy5oZWlnaHQpLGQ9e30sQT1udWxsLFQ9e30scD1udWxsLG09e30sdT1udWxsLGY9ITEsZz1udWxsLGg9bnVsbCxiPW51bGwseT1udWxsLF89bnVsbCxDPW51bGwsTT1udWxsLHY9ITEseD1udWxsLE89bnVsbCxQPW51bGwsdz1udWxsLGs9bnVsbCxJLnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxILnNldCgwLDAsdC5jYW52YXMud2lkdGgsdC5jYW52YXMuaGVpZ2h0KSxpLnJlc2V0KCksci5yZXNldCgpLGwucmVzZXQoKX19fWZ1bmN0aW9uIGNkdCh0LGUsbixvLGksYSxyKXtjb25zdCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSxkPWkubWF4VGV4dHVyZVNpemUscD1pLm1heFNhbXBsZXMsbT1uZXcgV2Vha01hcDtsZXQgdSxmPSExO3RyeXtmPSJ1bmRlZmluZWQiIT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzJiZudWxsIT09bmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpLmdldENvbnRleHQoIjJkIil9Y2F0Y2godCl7fWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gZj9uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsZSk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIil9ZnVuY3Rpb24gaCh0LGUsbixvKXtsZXQgaT0xO2lmKCh0LndpZHRoPm98fHQuaGVpZ2h0Pm8pJiYoaT1vL01hdGgubWF4KHQud2lkdGgsdC5oZWlnaHQpKSxpPDF8fCEwPT09ZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApe2NvbnN0IG89ZT9KaXQ6TWF0aC5mbG9vcixhPW8oaSp0LndpZHRoKSxyPW8oaSp0LmhlaWdodCk7dm9pZCAwPT09dSYmKHU9ZyhhLHIpKTtjb25zdCBzPW4/ZyhhLHIpOnU7cmV0dXJuIHMud2lkdGg9YSxzLmhlaWdodD1yLHMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodCwwLDAsYSxyKSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK3Qud2lkdGgrIngiK3QuaGVpZ2h0KyIpIHRvICgiK2ErIngiK3IrIikuIiksc31yZXR1cm4iZGF0YSJpbiB0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikuIiksdH1yZXR1cm4gdH1mdW5jdGlvbiBiKHQpe3JldHVybiBLaXQodC53aWR0aCkmJktpdCh0LmhlaWdodCl9ZnVuY3Rpb24geSh0LGUpe3JldHVybiB0LmdlbmVyYXRlTWlwbWFwcyYmZSYmdC5taW5GaWx0ZXIhPT1oaXQmJnQubWluRmlsdGVyIT09Yml0fWZ1bmN0aW9uIF8oZSxuLGksYSxyPTEpe3QuZ2VuZXJhdGVNaXBtYXAoZSksby5nZXQobikuX19tYXhNaXBMZXZlbD1NYXRoLmxvZzIoTWF0aC5tYXgoaSxhLHIpKX1mdW5jdGlvbiBDKG4sbyxpKXtpZighMT09PXMpcmV0dXJuIG87aWYobnVsbCE9PW4pe2lmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl07Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIHVzZSBub24tZXhpc3RpbmcgV2ViR0wgaW50ZXJuYWwgZm9ybWF0ICciK24rIiciKX1sZXQgYT1vO3JldHVybiA2NDAzPT09byYmKDUxMjY9PT1pJiYoYT0zMzMyNiksNTEzMT09PWkmJihhPTMzMzI1KSw1MTIxPT09aSYmKGE9MzMzMjEpKSw2NDA3PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNyksNTEzMT09PWkmJihhPTM0ODQzKSw1MTIxPT09aSYmKGE9MzI4NDkpKSw2NDA4PT09byYmKDUxMjY9PT1pJiYoYT0zNDgzNiksNTEzMT09PWkmJihhPTM0ODQyKSw1MTIxPT09aSYmKGE9MzI4NTYpKSwzMzMyNSE9PWEmJjMzMzI2IT09YSYmMzQ4NDIhPT1hJiYzNDgzNiE9PWF8fGUuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiksYX1mdW5jdGlvbiBNKHQpe3JldHVybiB0PT09aGl0fHwxMDA0PT09dHx8MTAwNT09PXQ/OTcyODo5NzI5fWZ1bmN0aW9uIHYoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLChmdW5jdGlvbiBpKGUpe2NvbnN0IG49by5nZXQoZSk7dm9pZCAwIT09bi5fX3dlYmdsSW5pdCYmKHQuZGVsZXRlVGV4dHVyZShuLl9fd2ViZ2xUZXh0dXJlKSxvLnJlbW92ZShlKSl9KShuKSxuLmlzVmlkZW9UZXh0dXJlJiZtLmRlbGV0ZShuKSxyLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIHgoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHgpLChmdW5jdGlvbiBpKGUpe2NvbnN0IG49ZS50ZXh0dXJlLGk9by5nZXQoZSksYT1vLmdldChuKTtpZihlKXtpZih2b2lkIDAhPT1hLl9fd2ViZ2xUZXh0dXJlJiYodC5kZWxldGVUZXh0dXJlKGEuX193ZWJnbFRleHR1cmUpLHIubWVtb3J5LnRleHR1cmVzLS0pLGUuZGVwdGhUZXh0dXJlJiZlLmRlcHRoVGV4dHVyZS5kaXNwb3NlKCksZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldClmb3IobGV0IGU9MDtlPDY7ZSsrKXQuZGVsZXRlRnJhbWVidWZmZXIoaS5fX3dlYmdsRnJhbWVidWZmZXJbZV0pLGkuX193ZWJnbERlcHRoYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xEZXB0aGJ1ZmZlcltlXSk7ZWxzZSB0LmRlbGV0ZUZyYW1lYnVmZmVyKGkuX193ZWJnbEZyYW1lYnVmZmVyKSxpLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoaS5fX3dlYmdsRGVwdGhidWZmZXIpLGkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyJiZ0LmRlbGV0ZUZyYW1lYnVmZmVyKGkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxpLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoaS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpLGkuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyJiZ0LmRlbGV0ZVJlbmRlcmJ1ZmZlcihpLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcik7aWYoZS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKWZvcihsZXQgZT0wLGk9bi5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT1vLmdldChuW2VdKTtpLl9fd2ViZ2xUZXh0dXJlJiYodC5kZWxldGVUZXh0dXJlKGkuX193ZWJnbFRleHR1cmUpLHIubWVtb3J5LnRleHR1cmVzLS0pLG8ucmVtb3ZlKG5bZV0pfW8ucmVtb3ZlKG4pLG8ucmVtb3ZlKGUpfX0pKG4pfWxldCBPPTA7ZnVuY3Rpb24gUCh0LGUpe2NvbnN0IGk9by5nZXQodCk7aWYodC5pc1ZpZGVvVGV4dHVyZSYmKGZ1bmN0aW9uIGEodCl7Y29uc3QgZT1yLnJlbmRlci5mcmFtZTttLmdldCh0KSE9PWUmJihtLnNldCh0LGUpLHQudXBkYXRlKCkpfSkodCksdC52ZXJzaW9uPjAmJmkuX192ZXJzaW9uIT09dC52ZXJzaW9uKXtjb25zdCBuPXQuaW1hZ2U7aWYodm9pZCAwPT09biljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIHVuZGVmaW5lZCIpO2Vsc2V7aWYoITEhPT1uLmNvbXBsZXRlKXJldHVybiB2b2lkIFIoaSx0LGUpO2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgaW5jb21wbGV0ZSIpfX1uLmFjdGl2ZVRleHR1cmUoMzM5ODQrZSksbi5iaW5kVGV4dHVyZSgzNTUzLGkuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIHcoZSxpKXtjb25zdCByPW8uZ2V0KGUpO2UudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PWUudmVyc2lvbj8oZnVuY3Rpb24gbChlLG8saSl7aWYoNiE9PW8uaW1hZ2UubGVuZ3RoKXJldHVybjtFKGUsbyksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUoMzQwNjcsZS5fX3dlYmdsVGV4dHVyZSksdC5waXhlbFN0b3JlaSgzNzQ0MCxvLmZsaXBZKSx0LnBpeGVsU3RvcmVpKDM3NDQxLG8ucHJlbXVsdGlwbHlBbHBoYSksdC5waXhlbFN0b3JlaSgzMzE3LG8udW5wYWNrQWxpZ25tZW50KSx0LnBpeGVsU3RvcmVpKDM3NDQzLDApO2NvbnN0IHI9byYmKG8uaXNDb21wcmVzc2VkVGV4dHVyZXx8by5pbWFnZVswXS5pc0NvbXByZXNzZWRUZXh0dXJlKSxsPW8uaW1hZ2VbMF0mJm8uaW1hZ2VbMF0uaXNEYXRhVGV4dHVyZSxkPVtdO2ZvcihsZXQgdD0wO3Q8Njt0KyspZFt0XT1yfHxsP2w/by5pbWFnZVt0XS5pbWFnZTpvLmltYWdlW3RdOmgoby5pbWFnZVt0XSwhMSwhMCxjKTtjb25zdCBwPWRbMF0sbT1iKHApfHxzLHU9YS5jb252ZXJ0KG8uZm9ybWF0KSxmPWEuY29udmVydChvLnR5cGUpLGc9QyhvLmludGVybmFsRm9ybWF0LHUsZik7bGV0IE07aWYoRCgzNDA2NyxvLG0pLHIpe2ZvcihsZXQgdD0wO3Q8Njt0Kyspe009ZFt0XS5taXBtYXBzO2ZvcihsZXQgZT0wO2U8TS5sZW5ndGg7ZSsrKXtjb25zdCBpPU1bZV07by5mb3JtYXQhPT13aXQmJm8uZm9ybWF0IT09UGl0P251bGwhPT11P24uY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrdCxlLGcsaS53aWR0aCxpLmhlaWdodCwwLGkuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOm4udGV4SW1hZ2UyRCgzNDA2OSt0LGUsZyxpLndpZHRoLGkuaGVpZ2h0LDAsdSxmLGkuZGF0YSl9fWUuX19tYXhNaXBMZXZlbD1NLmxlbmd0aC0xfWVsc2V7TT1vLm1pcG1hcHM7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihsKXtuLnRleEltYWdlMkQoMzQwNjkrdCwwLGcsZFt0XS53aWR0aCxkW3RdLmhlaWdodCwwLHUsZixkW3RdLmRhdGEpO2ZvcihsZXQgZT0wO2U8TS5sZW5ndGg7ZSsrKXtjb25zdCBvPU1bZV0uaW1hZ2VbdF0uaW1hZ2U7bi50ZXhJbWFnZTJEKDM0MDY5K3QsZSsxLGcsby53aWR0aCxvLmhlaWdodCwwLHUsZixvLmRhdGEpfX1lbHNle24udGV4SW1hZ2UyRCgzNDA2OSt0LDAsZyx1LGYsZFt0XSk7Zm9yKGxldCBlPTA7ZTxNLmxlbmd0aDtlKyspbi50ZXhJbWFnZTJEKDM0MDY5K3QsZSsxLGcsdSxmLE1bZV0uaW1hZ2VbdF0pfWUuX19tYXhNaXBMZXZlbD1NLmxlbmd0aH15KG8sbSkmJl8oMzQwNjcsbyxwLndpZHRoLHAuaGVpZ2h0KSxlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX0pKHIsZSxpKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUoMzQwNjcsci5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IGs9e1t1aXRdOjEwNDk3LFtmaXRdOjMzMDcxLFtnaXRdOjMzNjQ4fSxTPXtbaGl0XTo5NzI4LDEwMDQ6OTk4NCwxMDA1Ojk5ODYsW2JpdF06OTcyOSwxMDA3Ojk5ODUsW3lpdF06OTk4N307ZnVuY3Rpb24gRChuLGEscil7aWYocj8odC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDIsa1thLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsa1thLndyYXBUXSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLGtbYS53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLFNbYS5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxTW2EubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkobiwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDMsMzMwNzEpLDMyODc5IT09biYmMzU4NjYhPT1ufHx0LnRleFBhcmFtZXRlcmkobiwzMjg4MiwzMzA3MSksYS53cmFwUz09PWZpdCYmYS53cmFwVD09PWZpdHx8Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQwLE0oYS5tYWdGaWx0ZXIpKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSxNKGEubWluRmlsdGVyKSksYS5taW5GaWx0ZXIhPT1oaXQmJmEubWluRmlsdGVyIT09Yml0JiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksITA9PT1lLmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpe2NvbnN0IHI9ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKGEudHlwZT09PXZpdCYmITE9PT1lLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKCExPT09cyYmYS50eXBlPT09eGl0JiYhMT09PWUuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXJldHVybjsoYS5hbmlzb3Ryb3B5PjF8fG8uZ2V0KGEpLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKG4sci5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihhLmFuaXNvdHJvcHksaS5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxvLmdldChhKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PWEuYW5pc290cm9weSl9fWZ1bmN0aW9uIEUoZSxuKXt2b2lkIDA9PT1lLl9fd2ViZ2xJbml0JiYoZS5fX3dlYmdsSW5pdD0hMCxuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHYpLGUuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gUihlLG8saSl7bGV0IHI9MzU1MztvLmlzRGF0YVRleHR1cmUyREFycmF5JiYocj0zNTg2Niksby5pc0RhdGFUZXh0dXJlM0QmJihyPTMyODc5KSxFKGUsbyksbi5hY3RpdmVUZXh0dXJlKDMzOTg0K2kpLG4uYmluZFRleHR1cmUocixlLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLG8uZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsby51bnBhY2tBbGlnbm1lbnQpLHQucGl4ZWxTdG9yZWkoMzc0NDMsMCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1maXR8fHQud3JhcFQhPT1maXR8fHQubWluRmlsdGVyIT09aGl0JiZ0Lm1pbkZpbHRlciE9PWJpdCl9KShvKSYmITE9PT1iKG8uaW1hZ2UpLHA9aChvLmltYWdlLGwsITEsZCksbT1iKHApfHxzLHU9YS5jb252ZXJ0KG8uZm9ybWF0KTtsZXQgZixnPWEuY29udmVydChvLnR5cGUpLE09QyhvLmludGVybmFsRm9ybWF0LHUsZyk7RChyLG8sbSk7Y29uc3Qgdj1vLm1pcG1hcHM7aWYoby5pc0RlcHRoVGV4dHVyZSlNPTY0MDIscz9NPW8udHlwZT09PXZpdD8zNjAxMjpvLnR5cGU9PT1NaXQ/MzMxOTA6by50eXBlPT09T2l0PzM1MDU2OjMzMTg5Om8udHlwZT09PXZpdCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksby5mb3JtYXQ9PT1raXQmJjY0MDI9PT1NJiZvLnR5cGUhPT1DaXQmJm8udHlwZSE9PU1pdCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLG8udHlwZT1DaXQsZz1hLmNvbnZlcnQoby50eXBlKSksby5mb3JtYXQ9PT1TaXQmJjY0MDI9PT1NJiYoTT0zNDA0MSxvLnR5cGUhPT1PaXQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksby50eXBlPU9pdCxnPWEuY29udmVydChvLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCx1LGcsbnVsbCk7ZWxzZSBpZihvLmlzRGF0YVRleHR1cmUpaWYodi5sZW5ndGg+MCYmbSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKWY9dlt0XSxuLnRleEltYWdlMkQoMzU1Myx0LE0sZi53aWR0aCxmLmhlaWdodCwwLHUsZyxmLmRhdGEpO28uZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCxNLHAud2lkdGgscC5oZWlnaHQsMCx1LGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKG8uaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7dCsrKWY9dlt0XSxvLmZvcm1hdCE9PXdpdCYmby5mb3JtYXQhPT1QaXQ/bnVsbCE9PXU/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQsTSxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LE0sZi53aWR0aCxmLmhlaWdodCwwLHUsZyxmLmRhdGEpO2UuX19tYXhNaXBMZXZlbD12Lmxlbmd0aC0xfWVsc2UgaWYoby5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCxNLHAud2lkdGgscC5oZWlnaHQscC5kZXB0aCwwLHUsZyxwLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoby5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAsTSxwLndpZHRoLHAuaGVpZ2h0LHAuZGVwdGgsMCx1LGcscC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHYubGVuZ3RoPjAmJm0pe2ZvcihsZXQgdD0wLGU9di5sZW5ndGg7dDxlO3QrKylmPXZbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCxNLHUsZyxmKTtvLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9di5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAsTSx1LGcscCksZS5fX21heE1pcExldmVsPTA7eShvLG0pJiZfKHIsbyxwLndpZHRoLHAuaGVpZ2h0KSxlLl9fdmVyc2lvbj1vLnZlcnNpb24sby5vblVwZGF0ZSYmby5vblVwZGF0ZShvKX1mdW5jdGlvbiBBKGUsaSxyLHMsbCl7Y29uc3QgYz1hLmNvbnZlcnQoci5mb3JtYXQpLGQ9YS5jb252ZXJ0KHIudHlwZSkscD1DKHIuaW50ZXJuYWxGb3JtYXQsYyxkKTszMjg3OT09PWx8fDM1ODY2PT09bD9uLnRleEltYWdlM0QobCwwLHAsaS53aWR0aCxpLmhlaWdodCxpLmRlcHRoLDAsYyxkLG51bGwpOm4udGV4SW1hZ2UyRChsLDAscCxpLndpZHRoLGkuaGVpZ2h0LDAsYyxkLG51bGwpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUpLHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscyxsLG8uZ2V0KHIpLl9fd2ViZ2xUZXh0dXJlLDApLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIFQoZSxuLG8pe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxlKSxuLmRlcHRoQnVmZmVyJiYhbi5zdGVuY2lsQnVmZmVyKXtsZXQgaT0zMzE4OTtpZihvKXtjb25zdCBlPW4uZGVwdGhUZXh0dXJlO2UmJmUuaXNEZXB0aFRleHR1cmUmJihlLnR5cGU9PT12aXQ/aT0zNjAxMjplLnR5cGU9PT1NaXQmJihpPTMzMTkwKSk7Y29uc3Qgbz1OKG4pO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLG8saSxuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxpLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZSl9ZWxzZSBpZihuLmRlcHRoQnVmZmVyJiZuLnN0ZW5jaWxCdWZmZXIpe2lmKG8pe2NvbnN0IGU9TihuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxlLDM1MDU2LG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLG4ud2lkdGgsbi5oZWlnaHQpO3QuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZSl9ZWxzZXtjb25zdCBlPSEwPT09bi5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzP24udGV4dHVyZVswXTpuLnRleHR1cmUsaT1hLmNvbnZlcnQoZS5mb3JtYXQpLHI9YS5jb252ZXJ0KGUudHlwZSkscz1DKGUuaW50ZXJuYWxGb3JtYXQsaSxyKTtpZihvKXtjb25zdCBlPU4obik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxzLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLHMsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIE4odCl7cmV0dXJuIHMmJnQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P01hdGgubWluKHAsdC5zYW1wbGVzKTowfWxldCB6PSExLEk9ITE7dGhpcy5hbGxvY2F0ZVRleHR1cmVVbml0PWZ1bmN0aW9uIEgoKXtjb25zdCB0PU87cmV0dXJuIHQ+PWwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK3QrIiB0ZXh0dXJlIHVuaXRzIHdoaWxlIHRoaXMgR1BVIHN1cHBvcnRzIG9ubHkgIitsKSxPKz0xLHR9LHRoaXMucmVzZXRUZXh0dXJlVW5pdHM9ZnVuY3Rpb24gRigpe089MH0sdGhpcy5zZXRUZXh0dXJlMkQ9UCx0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uIEwodCxlKXtjb25zdCBpPW8uZ2V0KHQpO3QudmVyc2lvbj4wJiZpLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9SKGksdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU4NjYsaS5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmUzRD1mdW5jdGlvbiBCKHQsZSl7Y29uc3QgaT1vLmdldCh0KTt0LnZlcnNpb24+MCYmaS5fX3ZlcnNpb24hPT10LnZlcnNpb24/UihpLHQsZSk6KG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSxuLmJpbmRUZXh0dXJlKDMyODc5LGkuX193ZWJnbFRleHR1cmUpKX0sdGhpcy5zZXRUZXh0dXJlQ3ViZT13LHRoaXMuc2V0dXBSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVihlKXtjb25zdCBsPWUudGV4dHVyZSxjPW8uZ2V0KGUpLGQ9by5nZXQobCk7ZS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix4KSwhMCE9PWUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyYmKGQuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksZC5fX3ZlcnNpb249bC52ZXJzaW9uLHIubWVtb3J5LnRleHR1cmVzKyspO2NvbnN0IHA9ITA9PT1lLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0LG09ITA9PT1lLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMsdT0hMD09PWUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0LGY9bC5pc0RhdGFUZXh0dXJlM0R8fGwuaXNEYXRhVGV4dHVyZTJEQXJyYXksZz1iKGUpfHxzO2lmKCFzfHxsLmZvcm1hdCE9PVBpdHx8bC50eXBlIT09dml0JiZsLnR5cGUhPT14aXR8fChsLmZvcm1hdD13aXQsY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBSZW5kZXJpbmcgdG8gdGV4dHVyZXMgd2l0aCBSR0IgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQuIFVzaW5nIFJHQkEgZm9ybWF0IGluc3RlYWQuIikpLHApe2MuX193ZWJnbEZyYW1lYnVmZmVyPVtdO2ZvcihsZXQgZT0wO2U8NjtlKyspYy5fX3dlYmdsRnJhbWVidWZmZXJbZV09dC5jcmVhdGVGcmFtZWJ1ZmZlcigpfWVsc2UgaWYoYy5fX3dlYmdsRnJhbWVidWZmZXI9dC5jcmVhdGVGcmFtZWJ1ZmZlcigpLG0paWYoaS5kcmF3QnVmZmVycyl7Y29uc3Qgbj1lLnRleHR1cmU7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBpPW8uZ2V0KG5bZV0pO3ZvaWQgMD09PWkuX193ZWJnbFRleHR1cmUmJihpLl9fd2ViZ2xUZXh0dXJlPXQuY3JlYXRlVGV4dHVyZSgpLHIubWVtb3J5LnRleHR1cmVzKyspfX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMiBvciBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uLiIpO2Vsc2UgaWYodSlpZihzKXtjLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksYy5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXI9dC5jcmVhdGVSZW5kZXJidWZmZXIoKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsYy5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2NvbnN0IG89YS5jb252ZXJ0KGwuZm9ybWF0KSxpPWEuY29udmVydChsLnR5cGUpLHI9QyhsLmludGVybmFsRm9ybWF0LG8saSkscz1OKGUpO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHMscixlLndpZHRoLGUuaGVpZ2h0KSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxjLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA2NCwzNjE2MSxjLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLGUuZGVwdGhCdWZmZXImJihjLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFQoYy5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIsZSwhMCkpLG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7aWYocCl7bi5iaW5kVGV4dHVyZSgzNDA2NyxkLl9fd2ViZ2xUZXh0dXJlKSxEKDM0MDY3LGwsZyk7Zm9yKGxldCB0PTA7dDw2O3QrKylBKGMuX193ZWJnbEZyYW1lYnVmZmVyW3RdLGUsbCwzNjA2NCwzNDA2OSt0KTt5KGwsZykmJl8oMzQwNjcsbCxlLndpZHRoLGUuaGVpZ2h0KSxuLmJpbmRUZXh0dXJlKDM0MDY3LG51bGwpfWVsc2UgaWYobSl7Y29uc3QgdD1lLnRleHR1cmU7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV0scj1vLmdldChhKTtuLmJpbmRUZXh0dXJlKDM1NTMsci5fX3dlYmdsVGV4dHVyZSksRCgzNTUzLGEsZyksQShjLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlLGEsMzYwNjQraSwzNTUzKSx5KGEsZykmJl8oMzU1MyxhLGUud2lkdGgsZS5oZWlnaHQpfW4uYmluZFRleHR1cmUoMzU1MyxudWxsKX1lbHNle2xldCB0PTM1NTM7ZiYmKHM/dD1sLmlzRGF0YVRleHR1cmUzRD8zMjg3OTozNTg2Njpjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheSBvbmx5IHN1cHBvcnRlZCB3aXRoIFdlYkdMMi4iKSksbi5iaW5kVGV4dHVyZSh0LGQuX193ZWJnbFRleHR1cmUpLEQodCxsLGcpLEEoYy5fX3dlYmdsRnJhbWVidWZmZXIsZSxsLDM2MDY0LHQpLHkobCxnKSYmXyh0LGwsZS53aWR0aCxlLmhlaWdodCxlLmRlcHRoKSxuLmJpbmRUZXh0dXJlKHQsbnVsbCl9ZS5kZXB0aEJ1ZmZlciYmKGZ1bmN0aW9uIGgoZSl7Y29uc3QgaT1vLmdldChlKSxhPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiByKGUsaSl7aWYoaSYmaS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihuLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhaS5kZXB0aFRleHR1cmV8fCFpLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtvLmdldChpLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJmkuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09aS53aWR0aCYmaS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09aS5oZWlnaHR8fChpLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1pLndpZHRoLGkuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1pLmhlaWdodCxpLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksUChpLmRlcHRoVGV4dHVyZSwwKTtjb25zdCBhPW8uZ2V0KGkuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1raXQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLGEsMCk7ZWxzZXtpZihpLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1TaXQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsYSwwKX19KShpLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKGEpe2kuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgbz0wO288NjtvKyspbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaS5fX3dlYmdsRnJhbWVidWZmZXJbb10pLGkuX193ZWJnbERlcHRoYnVmZmVyW29dPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChpLl9fd2ViZ2xEZXB0aGJ1ZmZlcltvXSxlLCExKX1lbHNlIG4uYmluZEZyYW1lYnVmZmVyKDM2MTYwLGkuX193ZWJnbEZyYW1lYnVmZmVyKSxpLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFQoaS5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7bi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9KShlKX0sdGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA9ZnVuY3Rpb24gaih0KXtjb25zdCBlPWIodCl8fHMsaT0hMD09PXQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz90LnRleHR1cmU6W3QudGV4dHVyZV07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWlbYV07aWYoeShyLGUpKXtjb25zdCBlPXQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/MzQwNjc6MzU1MyxpPW8uZ2V0KHIpLl9fd2ViZ2xUZXh0dXJlO24uYmluZFRleHR1cmUoZSxpKSxfKGUscix0LndpZHRoLHQuaGVpZ2h0KSxuLmJpbmRUZXh0dXJlKGUsbnVsbCl9fX0sdGhpcy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldD1mdW5jdGlvbiBVKGUpe2lmKGUuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KWlmKHMpe2NvbnN0IGk9ZS53aWR0aCxhPWUuaGVpZ2h0O2xldCByPTE2Mzg0O2UuZGVwdGhCdWZmZXImJihyfD0yNTYpLGUuc3RlbmNpbEJ1ZmZlciYmKHJ8PTEwMjQpO2NvbnN0IHM9by5nZXQoZSk7bi5iaW5kRnJhbWVidWZmZXIoMzYwMDgscy5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLG4uYmluZEZyYW1lYnVmZmVyKDM2MDA5LHMuX193ZWJnbEZyYW1lYnVmZmVyKSx0LmJsaXRGcmFtZWJ1ZmZlcigwLDAsaSxhLDAsMCxpLGEsciw5NzI4KSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSxuLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxzLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcil9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKX0sdGhpcy5zYWZlU2V0VGV4dHVyZTJEPWZ1bmN0aW9uIEcodCxlKXt0JiZ0LmlzV2ViR0xSZW5kZXJUYXJnZXQmJighMT09PXomJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmUyRDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSx6PSEwKSx0PXQudGV4dHVyZSksUCh0LGUpfSx0aGlzLnNhZmVTZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbiBXKHQsZSl7dCYmdC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKCExPT09SSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZUN1YmU6IGRvbid0IHVzZSBjdWJlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxJPSEwKSx0PXQudGV4dHVyZSksdyh0LGUpfX1mdW5jdGlvbiBkZHQodCxlLG4pe2NvbnN0IG89bi5pc1dlYkdMMjtyZXR1cm57Y29udmVydDpmdW5jdGlvbiBpKHQpe2xldCBuO2lmKHQ9PT1faXQpcmV0dXJuIDUxMjE7aWYoMTAxNz09PXQpcmV0dXJuIDMyODE5O2lmKDEwMTg9PT10KXJldHVybiAzMjgyMDtpZigxMDE5PT09dClyZXR1cm4gMzM2MzU7aWYoMTAxMD09PXQpcmV0dXJuIDUxMjA7aWYoMTAxMT09PXQpcmV0dXJuIDUxMjI7aWYodD09PUNpdClyZXR1cm4gNTEyMztpZigxMDEzPT09dClyZXR1cm4gNTEyNDtpZih0PT09TWl0KXJldHVybiA1MTI1O2lmKHQ9PT12aXQpcmV0dXJuIDUxMjY7aWYodD09PXhpdClyZXR1cm4gbz81MTMxOihuPWUuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksbnVsbCE9PW4/bi5IQUxGX0ZMT0FUX09FUzpudWxsKTtpZigxMDIxPT09dClyZXR1cm4gNjQwNjtpZih0PT09UGl0KXJldHVybiA2NDA3O2lmKHQ9PT13aXQpcmV0dXJuIDY0MDg7aWYoMTAyND09PXQpcmV0dXJuIDY0MDk7aWYoMTAyNT09PXQpcmV0dXJuIDY0MTA7aWYodD09PWtpdClyZXR1cm4gNjQwMjtpZih0PT09U2l0KXJldHVybiAzNDA0MTtpZigxMDI4PT09dClyZXR1cm4gNjQwMztpZigxMDI5PT09dClyZXR1cm4gMzYyNDQ7aWYoMTAzMD09PXQpcmV0dXJuIDMzMzE5O2lmKDEwMzE9PT10KXJldHVybiAzMzMyMDtpZigxMDMyPT09dClyZXR1cm4gMzYyNDg7aWYoMTAzMz09PXQpcmV0dXJuIDM2MjQ5O2lmKDMzNzc2PT09dHx8MzM3Nzc9PT10fHwzMzc3OD09PXR8fDMzNzc5PT09dCl7aWYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxudWxsPT09bilyZXR1cm4gbnVsbDtpZigzMzc3Nj09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZigzMzc3Nz09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYoMzM3Nzg9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKDMzNzc5PT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1pZigzNTg0MD09PXR8fDM1ODQxPT09dHx8MzU4NDI9PT10fHwzNTg0Mz09PXQpe2lmKG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLG51bGw9PT1uKXJldHVybiBudWxsO2lmKDM1ODQwPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQxPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKDM1ODQyPT09dClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztpZigzNTg0Mz09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUd9aWYoMzYxOTY9PT10KXJldHVybiBuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIpLG51bGwhPT1uP24uQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTDpudWxsO2lmKCgzNzQ5Mj09PXR8fDM3NDk2PT09dCkmJihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiksbnVsbCE9PW4pKXtpZigzNzQ5Mj09PXQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0I4X0VUQzI7aWYoMzc0OTY9PT10KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9cmV0dXJuIDM3ODA4PT09dHx8Mzc4MDk9PT10fHwzNzgxMD09PXR8fDM3ODExPT09dHx8Mzc4MTI9PT10fHwzNzgxMz09PXR8fDM3ODE0PT09dHx8Mzc4MTU9PT10fHwzNzgxNj09PXR8fDM3ODE3PT09dHx8Mzc4MTg9PT10fHwzNzgxOT09PXR8fDM3ODIwPT09dHx8Mzc4MjE9PT10fHwzNzg0MD09PXR8fDM3ODQxPT09dHx8Mzc4NDI9PT10fHwzNzg0Mz09PXR8fDM3ODQ0PT09dHx8Mzc4NDU9PT10fHwzNzg0Nj09PXR8fDM3ODQ3PT09dHx8Mzc4NDg9PT10fHwzNzg0OT09PXR8fDM3ODUwPT09dHx8Mzc4NTE9PT10fHwzNzg1Mj09PXR8fDM3ODUzPT09dD8obj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxudWxsIT09bj90Om51bGwpOjM2NDkyPT09dD8obj1lLmdldCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLG51bGwhPT1uP3Q6bnVsbCk6dD09PU9pdD9vPzM0MDQyOihuPWUuZ2V0KCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksbnVsbCE9PW4/bi5VTlNJR05FRF9JTlRfMjRfOF9XRUJHTDpudWxsKTp2b2lkIDB9fX1yZHQucHJvdG90eXBlLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw9ITA7Y2xhc3MgcGR0IGV4dGVuZHMgX3N0e2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy5jYW1lcmFzPXR9fXBkdC5wcm90b3R5cGUuaXNBcnJheUNhbWVyYT0hMDtjbGFzcyBtZHQgZXh0ZW5kcyBwcnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iR3JvdXAifX1tZHQucHJvdG90eXBlLmlzR3JvdXA9ITA7Y29uc3QgdWR0PXt0eXBlOiJtb3ZlIn07Y2xhc3MgZmR0e2NvbnN0cnVjdG9yKCl7dGhpcy5fdGFyZ2V0UmF5PW51bGwsdGhpcy5fZ3JpcD1udWxsLHRoaXMuX2hhbmQ9bnVsbH1nZXRIYW5kU3BhY2UoKXtyZXR1cm4gbnVsbD09PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kPW5ldyBtZHQsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiBudWxsPT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5PW5ldyBtZHQsdGhpcy5fdGFyZ2V0UmF5Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEsdGhpcy5fdGFyZ2V0UmF5Lmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5saW5lYXJWZWxvY2l0eT1uZXcgY2F0LHRoaXMuX3RhcmdldFJheS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmFuZ3VsYXJWZWxvY2l0eT1uZXcgY2F0KSx0aGlzLl90YXJnZXRSYXl9Z2V0R3JpcFNwYWNlKCl7cmV0dXJuIG51bGw9PT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcD1uZXcgbWR0LHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEsdGhpcy5fZ3JpcC5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmxpbmVhclZlbG9jaXR5PW5ldyBjYXQsdGhpcy5fZ3JpcC5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fZ3JpcC5hbmd1bGFyVmVsb2NpdHk9bmV3IGNhdCksdGhpcy5fZ3JpcH1kaXNwYXRjaEV2ZW50KHQpe3JldHVybiBudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiZ0aGlzLl90YXJnZXRSYXkuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5fZ3JpcCYmdGhpcy5fZ3JpcC5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9oYW5kJiZ0aGlzLl9oYW5kLmRpc3BhdGNoRXZlbnQodCksdGhpc31kaXNjb25uZWN0KHQpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTp0fSksbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSxudWxsIT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXAudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kLnZpc2libGU9ITEpLHRoaXN9dXBkYXRlKHQsZSxuKXtsZXQgbz1udWxsLGk9bnVsbCxhPW51bGw7Y29uc3Qgcj10aGlzLl90YXJnZXRSYXkscz10aGlzLl9ncmlwLGw9dGhpcy5faGFuZDtpZih0JiYidmlzaWJsZS1ibHVycmVkIiE9PWUuc2Vzc2lvbi52aXNpYmlsaXR5U3RhdGUpaWYobnVsbCE9PXImJihvPWUuZ2V0UG9zZSh0LnRhcmdldFJheVNwYWNlLG4pLG51bGwhPT1vJiYoci5tYXRyaXguZnJvbUFycmF5KG8udHJhbnNmb3JtLm1hdHJpeCksci5tYXRyaXguZGVjb21wb3NlKHIucG9zaXRpb24sci5yb3RhdGlvbixyLnNjYWxlKSxvLmxpbmVhclZlbG9jaXR5PyhyLmhhc0xpbmVhclZlbG9jaXR5PSEwLHIubGluZWFyVmVsb2NpdHkuY29weShvLmxpbmVhclZlbG9jaXR5KSk6ci5oYXNMaW5lYXJWZWxvY2l0eT0hMSxvLmFuZ3VsYXJWZWxvY2l0eT8oci5oYXNBbmd1bGFyVmVsb2NpdHk9ITAsci5hbmd1bGFyVmVsb2NpdHkuY29weShvLmFuZ3VsYXJWZWxvY2l0eSkpOnIuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuZGlzcGF0Y2hFdmVudCh1ZHQpKSksbCYmdC5oYW5kKXthPSEwO2Zvcihjb25zdCBvIG9mIHQuaGFuZC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldEpvaW50UG9zZShvLG4pO2lmKHZvaWQgMD09PWwuam9pbnRzW28uam9pbnROYW1lXSl7Y29uc3QgdD1uZXcgbWR0O3QubWF0cml4QXV0b1VwZGF0ZT0hMSx0LnZpc2libGU9ITEsbC5qb2ludHNbby5qb2ludE5hbWVdPXQsbC5hZGQodCl9Y29uc3QgaT1sLmpvaW50c1tvLmpvaW50TmFtZV07bnVsbCE9PXQmJihpLm1hdHJpeC5mcm9tQXJyYXkodC50cmFuc2Zvcm0ubWF0cml4KSxpLm1hdHJpeC5kZWNvbXBvc2UoaS5wb3NpdGlvbixpLnJvdGF0aW9uLGkuc2NhbGUpLGkuam9pbnRSYWRpdXM9dC5yYWRpdXMpLGkudmlzaWJsZT1udWxsIT09dH1jb25zdCBvPWwuam9pbnRzWyJpbmRleC1maW5nZXItdGlwIl0ucG9zaXRpb24uZGlzdGFuY2VUbyhsLmpvaW50c1sidGh1bWItdGlwIl0ucG9zaXRpb24pLGk9LjAyLHI9LjAwNTtsLmlucHV0U3RhdGUucGluY2hpbmcmJm8+aStyPyhsLmlucHV0U3RhdGUucGluY2hpbmc9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaGVuZCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSk6IWwuaW5wdXRTdGF0ZS5waW5jaGluZyYmbzw9aS1yJiYobC5pbnB1dFN0YXRlLnBpbmNoaW5nPSEwLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hzdGFydCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSl9ZWxzZSBudWxsIT09cyYmdC5ncmlwU3BhY2UmJihpPWUuZ2V0UG9zZSh0LmdyaXBTcGFjZSxuKSxudWxsIT09aSYmKHMubWF0cml4LmZyb21BcnJheShpLnRyYW5zZm9ybS5tYXRyaXgpLHMubWF0cml4LmRlY29tcG9zZShzLnBvc2l0aW9uLHMucm90YXRpb24scy5zY2FsZSksaS5saW5lYXJWZWxvY2l0eT8ocy5oYXNMaW5lYXJWZWxvY2l0eT0hMCxzLmxpbmVhclZlbG9jaXR5LmNvcHkoaS5saW5lYXJWZWxvY2l0eSkpOnMuaGFzTGluZWFyVmVsb2NpdHk9ITEsaS5hbmd1bGFyVmVsb2NpdHk/KHMuaGFzQW5ndWxhclZlbG9jaXR5PSEwLHMuYW5ndWxhclZlbG9jaXR5LmNvcHkoaS5hbmd1bGFyVmVsb2NpdHkpKTpzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSkpO3JldHVybiBudWxsIT09ciYmKHIudmlzaWJsZT1udWxsIT09byksbnVsbCE9PXMmJihzLnZpc2libGU9bnVsbCE9PWkpLG51bGwhPT1sJiYobC52aXNpYmxlPW51bGwhPT1hKSx0aGlzfX1jbGFzcyBnZHQgZXh0ZW5kcyBVaXR7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2NvbnN0IG49dGhpcyxvPXQuc3RhdGU7bGV0IGk9bnVsbCxhPTEscj1udWxsLHM9ImxvY2FsLWZsb29yIixsPW51bGwsYz1udWxsLGQ9bnVsbCxwPW51bGwsbT1udWxsO2NvbnN0IHU9W10sZj1uZXcgTWFwLGc9bmV3IF9zdDtnLmxheWVycy5lbmFibGUoMSksZy52aWV3cG9ydD1uZXcgYWF0O2NvbnN0IGg9bmV3IF9zdDtoLmxheWVycy5lbmFibGUoMiksaC52aWV3cG9ydD1uZXcgYWF0O2NvbnN0IGI9W2csaF0seT1uZXcgcGR0O3kubGF5ZXJzLmVuYWJsZSgxKSx5LmxheWVycy5lbmFibGUoMik7bGV0IF89bnVsbCxDPW51bGw7ZnVuY3Rpb24gTSh0KXtjb25zdCBlPWYuZ2V0KHQuaW5wdXRTb3VyY2UpO2UmJmUuZGlzcGF0Y2hFdmVudCh7dHlwZTp0LnR5cGUsZGF0YTp0LmlucHV0U291cmNlfSl9ZnVuY3Rpb24gdigpe2YuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LmRpc2Nvbm5lY3QoZSl9KSksZi5jbGVhcigpLF89bnVsbCxDPW51bGwsby5iaW5kWFJGcmFtZWJ1ZmZlcihudWxsKSx0LnNldFJlbmRlclRhcmdldCh0LmdldFJlbmRlclRhcmdldCgpKSxTLnN0b3AoKSxuLmlzUHJlc2VudGluZz0hMSxuLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25lbmQifSl9ZnVuY3Rpb24geCh0KXtjb25zdCBlPWkuaW5wdXRTb3VyY2VzO2ZvcihsZXQgdD0wO3Q8dS5sZW5ndGg7dCsrKWYuc2V0KGVbdF0sdVt0XSk7Zm9yKGxldCBlPTA7ZTx0LnJlbW92ZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LnJlbW92ZWRbZV0sbz1mLmdldChuKTtvJiYoby5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6bn0pLGYuZGVsZXRlKG4pKX1mb3IobGV0IGU9MDtlPHQuYWRkZWQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10LmFkZGVkW2VdLG89Zi5nZXQobik7byYmby5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6bn0pfX10aGlzLmNhbWVyYUF1dG9VcGRhdGU9ITAsdGhpcy5lbmFibGVkPSExLHRoaXMuaXNQcmVzZW50aW5nPSExLHRoaXMuZ2V0Q29udHJvbGxlcj1mdW5jdGlvbih0KXtsZXQgZT11W3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgZmR0LHVbdF09ZSksZS5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKHQpe2xldCBlPXVbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBmZHQsdVt0XT1lKSxlLmdldEdyaXBTcGFjZSgpfSx0aGlzLmdldEhhbmQ9ZnVuY3Rpb24odCl7bGV0IGU9dVt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IGZkdCx1W3RdPWUpLGUuZ2V0SGFuZFNwYWNlKCl9LHRoaXMuc2V0RnJhbWVidWZmZXJTY2FsZUZhY3Rvcj1mdW5jdGlvbih0KXthPXQsITA9PT1uLmlzUHJlc2VudGluZyYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgZnJhbWVidWZmZXIgc2NhbGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9ZnVuY3Rpb24odCl7cz10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIHJlZmVyZW5jZSBzcGFjZSB0eXBlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuZ2V0UmVmZXJlbmNlU3BhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sdGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGl9LHRoaXMuc2V0U2Vzc2lvbj1hc3luYyBmdW5jdGlvbih0KXtpZihpPXQsbnVsbCE9PWkpe2kuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0IixNKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IixNKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplIixNKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVzdGFydCIsTSksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplZW5kIixNKSxpLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsdiksaS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLHgpO2NvbnN0IHQ9ZS5nZXRDb250ZXh0QXR0cmlidXRlcygpO2lmKCEwIT09dC54ckNvbXBhdGlibGUmJmF3YWl0IGUubWFrZVhSQ29tcGF0aWJsZSgpLHZvaWQgMD09PWkucmVuZGVyU3RhdGUubGF5ZXJzKW09bmV3IFhSV2ViR0xMYXllcihpLGUse2FudGlhbGlhczp0LmFudGlhbGlhcyxhbHBoYTp0LmFscGhhLGRlcHRoOnQuZGVwdGgsc3RlbmNpbDp0LnN0ZW5jaWwsZnJhbWVidWZmZXJTY2FsZUZhY3RvcjphfSksaS51cGRhdGVSZW5kZXJTdGF0ZSh7YmFzZUxheWVyOm19KTtlbHNle2xldCBuPTA7aWYodC5hbnRpYWxpYXMpbT1uZXcgWFJXZWJHTExheWVyKGksZSx7YW50aWFsaWFzOiEwLGFscGhhOnQuYWxwaGEsZGVwdGg6dC5kZXB0aCxzdGVuY2lsOnQuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W21dfSk7ZWxzZXt0LmRlcHRoJiYobj10LnN0ZW5jaWw/MzQwNDE6NjQwMik7Y29uc3Qgbz17Y29sb3JGb3JtYXQ6dC5hbHBoYT82NDA4OjY0MDcsZGVwdGhGb3JtYXQ6bixzY2FsZUZhY3RvcjphfTtjPW5ldyBYUldlYkdMQmluZGluZyhpLGUpLHA9Yy5jcmVhdGVQcm9qZWN0aW9uTGF5ZXIobyksZD1lLmNyZWF0ZUZyYW1lYnVmZmVyKCksaS51cGRhdGVSZW5kZXJTdGF0ZSh7bGF5ZXJzOltwXX0pfX1yPWF3YWl0IGkucmVxdWVzdFJlZmVyZW5jZVNwYWNlKHMpLFMuc2V0Q29udGV4dChpKSxTLnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fTtjb25zdCBPPW5ldyBjYXQsUD1uZXcgY2F0O2Z1bmN0aW9uIHcodCxlKXtudWxsPT09ZT90Lm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXgpOnQubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkLHQubWF0cml4KSx0Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKHQpe2lmKG51bGw9PT1pKXJldHVybjt5Lm5lYXI9aC5uZWFyPWcubmVhcj10Lm5lYXIseS5mYXI9aC5mYXI9Zy5mYXI9dC5mYXIsXz09PXkubmVhciYmQz09PXkuZmFyfHwoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnkubmVhcixkZXB0aEZhcjp5LmZhcn0pLF89eS5uZWFyLEM9eS5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj15LmNhbWVyYXM7dyh5LGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXcoblt0XSxlKTt5Lm1hdHJpeFdvcmxkLmRlY29tcG9zZSh5LnBvc2l0aW9uLHkucXVhdGVybmlvbix5LnNjYWxlKSx0LnBvc2l0aW9uLmNvcHkoeS5wb3NpdGlvbiksdC5xdWF0ZXJuaW9uLmNvcHkoeS5xdWF0ZXJuaW9uKSx0LnNjYWxlLmNvcHkoeS5zY2FsZSksdC5tYXRyaXguY29weSh5Lm1hdHJpeCksdC5tYXRyaXhXb3JsZC5jb3B5KHkubWF0cml4V29ybGQpO2NvbnN0IG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspb1t0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7Mj09PW4ubGVuZ3RoPyhmdW5jdGlvbiBhKHQsZSxuKXtPLnNldEZyb21NYXRyaXhQb3NpdGlvbihlLm1hdHJpeFdvcmxkKSxQLnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKTtjb25zdCBvPU8uZGlzdGFuY2VUbyhQKSxpPWUucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxhPW4ucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxyPWlbMTRdLyhpWzEwXS0xKSxzPWlbMTRdLyhpWzEwXSsxKSxsPShpWzldKzEpL2lbNV0sYz0oaVs5XS0xKS9pWzVdLGQ9KGlbOF0tMSkvaVswXSxwPShhWzhdKzEpL2FbMF0sbT1yKmQsdT1yKnAsZj1vLygtZCtwKSxnPWYqLWQ7ZS5tYXRyaXhXb3JsZC5kZWNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC50cmFuc2xhdGVYKGcpLHQudHJhbnNsYXRlWihmKSx0Lm1hdHJpeFdvcmxkLmNvbXBvc2UodC5wb3NpdGlvbix0LnF1YXRlcm5pb24sdC5zY2FsZSksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtjb25zdCBoPXIrZixiPXMrZjt0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKG0tZyx1KyhvLWcpLGwqcy9iKmgsYypzL2IqaCxoLGIpfSkoeSxnLGgpOnkucHJvamVjdGlvbk1hdHJpeC5jb3B5KGcucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1wP3AuZml4ZWRGb3ZlYXRpb246bnVsbCE9PW0/bS5maXhlZEZvdmVhdGlvbjp2b2lkIDB9LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKHQpe251bGwhPT1wJiYocC5maXhlZEZvdmVhdGlvbj10KSxudWxsIT09bSYmdm9pZCAwIT09bS5maXhlZEZvdmVhdGlvbiYmKG0uZml4ZWRGb3ZlYXRpb249dCl9O2xldCBrPW51bGw7Y29uc3QgUz1uZXcgUnN0O1Muc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gRCh0LG4pe2lmKGw9bi5nZXRWaWV3ZXJQb3NlKHIpLG51bGwhPT1sKXtjb25zdCB0PWwudmlld3M7bnVsbCE9PW0mJm8uYmluZFhSRnJhbWVidWZmZXIobS5mcmFtZWJ1ZmZlcik7bGV0IG49ITE7dC5sZW5ndGghPT15LmNhbWVyYXMubGVuZ3RoJiYoeS5jYW1lcmFzLmxlbmd0aD0wLG49ITApO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCBhPXRbaV07bGV0IHI9bnVsbDtpZihudWxsIT09bSlyPW0uZ2V0Vmlld3BvcnQoYSk7ZWxzZXtjb25zdCB0PWMuZ2V0Vmlld1N1YkltYWdlKHAsYSk7by5iaW5kWFJGcmFtZWJ1ZmZlcihkKSx2b2lkIDAhPT10LmRlcHRoU3RlbmNpbFRleHR1cmUmJmUuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1Myx0LmRlcHRoU3RlbmNpbFRleHR1cmUsMCksZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNTUzLHQuY29sb3JUZXh0dXJlLDApLHI9dC52aWV3cG9ydH1jb25zdCBzPWJbaV07cy5tYXRyaXguZnJvbUFycmF5KGEudHJhbnNmb3JtLm1hdHJpeCkscy5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShhLnByb2plY3Rpb25NYXRyaXgpLHMudmlld3BvcnQuc2V0KHIueCxyLnksci53aWR0aCxyLmhlaWdodCksMD09PWkmJnkubWF0cml4LmNvcHkocy5tYXRyaXgpLCEwPT09biYmeS5jYW1lcmFzLnB1c2gocyl9fWNvbnN0IGE9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDx1Lmxlbmd0aDt0KyspdVt0XS51cGRhdGUoYVt0XSxuLHIpO2smJmsodCxuKX0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7az10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX1mdW5jdGlvbiBoZHQodCl7ZnVuY3Rpb24gZShlLG4pe2Uub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHksbi5jb2xvciYmZS5kaWZmdXNlLnZhbHVlLmNvcHkobi5jb2xvciksbi5lbWlzc2l2ZSYmZS5lbWlzc2l2ZS52YWx1ZS5jb3B5KG4uZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKG4uZW1pc3NpdmVJbnRlbnNpdHkpLG4ubWFwJiYoZS5tYXAudmFsdWU9bi5tYXApLG4uYWxwaGFNYXAmJihlLmFscGhhTWFwLnZhbHVlPW4uYWxwaGFNYXApLG4uc3BlY3VsYXJNYXAmJihlLnNwZWN1bGFyTWFwLnZhbHVlPW4uc3BlY3VsYXJNYXApO2NvbnN0IG89dC5nZXQobikuZW52TWFwO2lmKG8pe2UuZW52TWFwLnZhbHVlPW8sZS5mbGlwRW52TWFwLnZhbHVlPW8uaXNDdWJlVGV4dHVyZSYmITE9PT1vLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT8tMToxLGUucmVmbGVjdGl2aXR5LnZhbHVlPW4ucmVmbGVjdGl2aXR5LGUucmVmcmFjdGlvblJhdGlvLnZhbHVlPW4ucmVmcmFjdGlvblJhdGlvO2NvbnN0IGk9dC5nZXQobykuX19tYXhNaXBMZXZlbDt2b2lkIDAhPT1pJiYoZS5tYXhNaXBMZXZlbC52YWx1ZT1pKX1sZXQgaSxhO24ubGlnaHRNYXAmJihlLmxpZ2h0TWFwLnZhbHVlPW4ubGlnaHRNYXAsZS5saWdodE1hcEludGVuc2l0eS52YWx1ZT1uLmxpZ2h0TWFwSW50ZW5zaXR5KSxuLmFvTWFwJiYoZS5hb01hcC52YWx1ZT1uLmFvTWFwLGUuYW9NYXBJbnRlbnNpdHkudmFsdWU9bi5hb01hcEludGVuc2l0eSksbi5tYXA/aT1uLm1hcDpuLnNwZWN1bGFyTWFwP2k9bi5zcGVjdWxhck1hcDpuLmRpc3BsYWNlbWVudE1hcD9pPW4uZGlzcGxhY2VtZW50TWFwOm4ubm9ybWFsTWFwP2k9bi5ub3JtYWxNYXA6bi5idW1wTWFwP2k9bi5idW1wTWFwOm4ucm91Z2huZXNzTWFwP2k9bi5yb3VnaG5lc3NNYXA6bi5tZXRhbG5lc3NNYXA/aT1uLm1ldGFsbmVzc01hcDpuLmFscGhhTWFwP2k9bi5hbHBoYU1hcDpuLmVtaXNzaXZlTWFwP2k9bi5lbWlzc2l2ZU1hcDpuLmNsZWFyY29hdE1hcD9pPW4uY2xlYXJjb2F0TWFwOm4uY2xlYXJjb2F0Tm9ybWFsTWFwP2k9bi5jbGVhcmNvYXROb3JtYWxNYXA6bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/aT1uLmNsZWFyY29hdFJvdWdobmVzc01hcDpuLnNwZWN1bGFySW50ZW5zaXR5TWFwP2k9bi5zcGVjdWxhckludGVuc2l0eU1hcDpuLnNwZWN1bGFyVGludE1hcCYmKGk9bi5zcGVjdWxhclRpbnRNYXApLHZvaWQgMCE9PWkmJihpLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihpPWkudGV4dHVyZSksITA9PT1pLm1hdHJpeEF1dG9VcGRhdGUmJmkudXBkYXRlTWF0cml4KCksZS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KGkubWF0cml4KSksbi5hb01hcD9hPW4uYW9NYXA6bi5saWdodE1hcCYmKGE9bi5saWdodE1hcCksdm9pZCAwIT09YSYmKGEuaXNXZWJHTFJlbmRlclRhcmdldCYmKGE9YS50ZXh0dXJlKSwhMD09PWEubWF0cml4QXV0b1VwZGF0ZSYmYS51cGRhdGVNYXRyaXgoKSxlLnV2MlRyYW5zZm9ybS52YWx1ZS5jb3B5KGEubWF0cml4KSl9ZnVuY3Rpb24gbihlLG4pe2Uucm91Z2huZXNzLnZhbHVlPW4ucm91Z2huZXNzLGUubWV0YWxuZXNzLnZhbHVlPW4ubWV0YWxuZXNzLG4ucm91Z2huZXNzTWFwJiYoZS5yb3VnaG5lc3NNYXAudmFsdWU9bi5yb3VnaG5lc3NNYXApLG4ubWV0YWxuZXNzTWFwJiYoZS5tZXRhbG5lc3NNYXAudmFsdWU9bi5tZXRhbG5lc3NNYXApLG4uZW1pc3NpdmVNYXAmJihlLmVtaXNzaXZlTWFwLnZhbHVlPW4uZW1pc3NpdmVNYXApLG4uYnVtcE1hcCYmKGUuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsZS5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKGUuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYoZS5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsZS5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJmUubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYoZS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsZS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLGUuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpLHQuZ2V0KG4pLmVudk1hcCYmKGUuZW52TWFwSW50ZW5zaXR5LnZhbHVlPW4uZW52TWFwSW50ZW5zaXR5KX1yZXR1cm57cmVmcmVzaEZvZ1VuaWZvcm1zOmZ1bmN0aW9uIG8odCxlKXt0LmZvZ0NvbG9yLnZhbHVlLmNvcHkoZS5jb2xvciksZS5pc0ZvZz8odC5mb2dOZWFyLnZhbHVlPWUubmVhcix0LmZvZ0Zhci52YWx1ZT1lLmZhcik6ZS5pc0ZvZ0V4cDImJih0LmZvZ0RlbnNpdHkudmFsdWU9ZS5kZW5zaXR5KX0scmVmcmVzaE1hdGVyaWFsVW5pZm9ybXM6ZnVuY3Rpb24gaSh0LG8sYSxyLHMpe28uaXNNZXNoQmFzaWNNYXRlcmlhbD9lKHQsbyk6by5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gbCh0LGUpe2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApfSkodCxvKSk6by5pc01lc2hUb29uTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gYyh0LGUpe2UuZ3JhZGllbnRNYXAmJih0LmdyYWRpZW50TWFwLnZhbHVlPWUuZ3JhZGllbnRNYXApLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApLGUuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLGUubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLGUuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hQaG9uZ01hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGQodCxlKXt0LnNwZWN1bGFyLnZhbHVlLmNvcHkoZS5zcGVjdWxhciksdC5zaGluaW5lc3MudmFsdWU9TWF0aC5tYXgoZS5zaGluaW5lc3MsMWUtNCksZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCksZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LG8pKTpvLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGUodCxvKSxvLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/KGZ1bmN0aW9uIHAodCxlLG8pe24odCxlKSx0LnJlZmxlY3Rpdml0eS52YWx1ZT1lLnJlZmxlY3Rpdml0eSx0LmNsZWFyY29hdC52YWx1ZT1lLmNsZWFyY29hdCx0LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzcyxlLnNoZWVuJiZ0LnNoZWVuLnZhbHVlLmNvcHkoZS5zaGVlbiksZS5jbGVhcmNvYXRNYXAmJih0LmNsZWFyY29hdE1hcC52YWx1ZT1lLmNsZWFyY29hdE1hcCksZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAmJih0LmNsZWFyY29hdFJvdWdobmVzc01hcC52YWx1ZT1lLmNsZWFyY29hdFJvdWdobmVzc01hcCksZS5jbGVhcmNvYXROb3JtYWxNYXAmJih0LmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5jbGVhcmNvYXROb3JtYWxTY2FsZSksdC5jbGVhcmNvYXROb3JtYWxNYXAudmFsdWU9ZS5jbGVhcmNvYXROb3JtYWxNYXAsMT09PWUuc2lkZSYmdC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksdC50cmFuc21pc3Npb24udmFsdWU9ZS50cmFuc21pc3Npb24sZS50cmFuc21pc3Npb25NYXAmJih0LnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1lLnRyYW5zbWlzc2lvbk1hcCksZS50cmFuc21pc3Npb24+MCYmKHQudHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1vLnRleHR1cmUsdC50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoby53aWR0aCxvLmhlaWdodCkpLHQudGhpY2tuZXNzLnZhbHVlPWUudGhpY2tuZXNzLGUudGhpY2tuZXNzTWFwJiYodC50aGlja25lc3NNYXAudmFsdWU9ZS50aGlja25lc3NNYXApLHQuYXR0ZW51YXRpb25EaXN0YW5jZS52YWx1ZT1lLmF0dGVudWF0aW9uRGlzdGFuY2UsdC5hdHRlbnVhdGlvblRpbnQudmFsdWUuY29weShlLmF0dGVudWF0aW9uVGludCksdC5zcGVjdWxhckludGVuc2l0eS52YWx1ZT1lLnNwZWN1bGFySW50ZW5zaXR5LHQuc3BlY3VsYXJUaW50LnZhbHVlLmNvcHkoZS5zcGVjdWxhclRpbnQpLGUuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJih0LnNwZWN1bGFySW50ZW5zaXR5TWFwLnZhbHVlPWUuc3BlY3VsYXJJbnRlbnNpdHlNYXApLGUuc3BlY3VsYXJUaW50TWFwJiYodC5zcGVjdWxhclRpbnRNYXAudmFsdWU9ZS5zcGVjdWxhclRpbnRNYXApfSkodCxvLHMpOm4odCxvKSk6by5pc01lc2hNYXRjYXBNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBtKHQsZSl7ZS5tYXRjYXAmJih0Lm1hdGNhcC52YWx1ZT1lLm1hdGNhcCksZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LG8pKTpvLmlzTWVzaERlcHRoTWF0ZXJpYWw/KGUodCxvKSwoZnVuY3Rpb24gdSh0LGUpe2UuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxvKSk6by5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPyhlKHQsbyksKGZ1bmN0aW9uIGYodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKSx0LnJlZmVyZW5jZVBvc2l0aW9uLnZhbHVlLmNvcHkoZS5yZWZlcmVuY2VQb3NpdGlvbiksdC5uZWFyRGlzdGFuY2UudmFsdWU9ZS5uZWFyRGlzdGFuY2UsdC5mYXJEaXN0YW5jZS52YWx1ZT1lLmZhckRpc3RhbmNlfSkodCxvKSk6by5pc01lc2hOb3JtYWxNYXRlcmlhbD8oZSh0LG8pLChmdW5jdGlvbiBnKHQsZSl7ZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LG8pKTpvLmlzTGluZUJhc2ljTWF0ZXJpYWw/KChmdW5jdGlvbiBoKHQsZSl7dC5kaWZmdXNlLnZhbHVlLmNvcHkoZS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eX0pKHQsbyksby5pc0xpbmVEYXNoZWRNYXRlcmlhbCYmKGZ1bmN0aW9uIGIodCxlKXt0LmRhc2hTaXplLnZhbHVlPWUuZGFzaFNpemUsdC50b3RhbFNpemUudmFsdWU9ZS5kYXNoU2l6ZStlLmdhcFNpemUsdC5zY2FsZS52YWx1ZT1lLnNjYWxlfSkodCxvKSk6by5pc1BvaW50c01hdGVyaWFsPyhmdW5jdGlvbiB5KHQsZSxuLG8pe2xldCBpO3QuZGlmZnVzZS52YWx1ZS5jb3B5KGUuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1lLm9wYWNpdHksdC5zaXplLnZhbHVlPWUuc2l6ZSpuLHQuc2NhbGUudmFsdWU9LjUqbyxlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKSxlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKSxlLm1hcD9pPWUubWFwOmUuYWxwaGFNYXAmJihpPWUuYWxwaGFNYXApLHZvaWQgMCE9PWkmJighMD09PWkubWF0cml4QXV0b1VwZGF0ZSYmaS51cGRhdGVNYXRyaXgoKSx0LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoaS5tYXRyaXgpKX0pKHQsbyxhLHIpOm8uaXNTcHJpdGVNYXRlcmlhbD8oZnVuY3Rpb24gXyh0LGUpe2xldCBuO3QuZGlmZnVzZS52YWx1ZS5jb3B5KGUuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1lLm9wYWNpdHksdC5yb3RhdGlvbi52YWx1ZT1lLnJvdGF0aW9uLGUubWFwJiYodC5tYXAudmFsdWU9ZS5tYXApLGUuYWxwaGFNYXAmJih0LmFscGhhTWFwLnZhbHVlPWUuYWxwaGFNYXApLGUubWFwP249ZS5tYXA6ZS5hbHBoYU1hcCYmKG49ZS5hbHBoYU1hcCksdm9pZCAwIT09biYmKCEwPT09bi5tYXRyaXhBdXRvVXBkYXRlJiZuLnVwZGF0ZU1hdHJpeCgpLHQudXZUcmFuc2Zvcm0udmFsdWUuY29weShuLm1hdHJpeCkpfSkodCxvKTpvLmlzU2hhZG93TWF0ZXJpYWw/KHQuY29sb3IudmFsdWUuY29weShvLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9by5vcGFjaXR5KTpvLmlzU2hhZGVyTWF0ZXJpYWwmJihvLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSl9fX1mdW5jdGlvbiBiZHQodD17fSl7Y29uc3QgZT12b2lkIDAhPT10LmNhbnZhcz90LmNhbnZhczooZnVuY3Rpb24gbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT0iYmxvY2siLHR9KSgpLG89dm9pZCAwIT09dC5jb250ZXh0P3QuY29udGV4dDpudWxsLGk9dm9pZCAwIT09dC5hbHBoYSYmdC5hbHBoYSxhPXZvaWQgMD09PXQuZGVwdGh8fHQuZGVwdGgscj12b2lkIDA9PT10LnN0ZW5jaWx8fHQuc3RlbmNpbCxzPXZvaWQgMCE9PXQuYW50aWFsaWFzJiZ0LmFudGlhbGlhcyxsPXZvaWQgMD09PXQucHJlbXVsdGlwbGllZEFscGhhfHx0LnByZW11bHRpcGxpZWRBbHBoYSxjPXZvaWQgMCE9PXQucHJlc2VydmVEcmF3aW5nQnVmZmVyJiZ0LnByZXNlcnZlRHJhd2luZ0J1ZmZlcixkPXZvaWQgMCE9PXQucG93ZXJQcmVmZXJlbmNlP3QucG93ZXJQcmVmZXJlbmNlOiJkZWZhdWx0IixwPXZvaWQgMCE9PXQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCYmdC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0O2xldCBtPW51bGwsdT1udWxsO2NvbnN0IGY9W10sZz1bXTt0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmRlYnVnPXtjaGVja1NoYWRlckVycm9yczohMH0sdGhpcy5hdXRvQ2xlYXI9ITAsdGhpcy5hdXRvQ2xlYXJDb2xvcj0hMCx0aGlzLmF1dG9DbGVhckRlcHRoPSEwLHRoaXMuYXV0b0NsZWFyU3RlbmNpbD0hMCx0aGlzLnNvcnRPYmplY3RzPSEwLHRoaXMuY2xpcHBpbmdQbGFuZXM9W10sdGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZD0hMSx0aGlzLmdhbW1hRmFjdG9yPTIsdGhpcy5vdXRwdXRFbmNvZGluZz16aXQsdGhpcy5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz0hMSx0aGlzLnRvbmVNYXBwaW5nPTAsdGhpcy50b25lTWFwcGluZ0V4cG9zdXJlPTE7Y29uc3QgaD10aGlzO2xldCBiPSExLHk9MCxfPTAsQz1udWxsLE09LTEsdj1udWxsO2NvbnN0IHg9bmV3IGFhdCxPPW5ldyBhYXQ7bGV0IFA9bnVsbCx3PWUud2lkdGgsaz1lLmhlaWdodCxTPTEsRD1udWxsLEU9bnVsbDtjb25zdCBSPW5ldyBhYXQoMCwwLHcsayksQT1uZXcgYWF0KDAsMCx3LGspO2xldCBUPSExO2NvbnN0IE49W10sej1uZXcgRXN0O2xldCBJPSExLEg9ITEsRj1udWxsO2NvbnN0IEw9bmV3IEJhdCxCPW5ldyBjYXQsVj17YmFja2dyb3VuZDpudWxsLGZvZzpudWxsLGVudmlyb25tZW50Om51bGwsb3ZlcnJpZGVNYXRlcmlhbDpudWxsLGlzU2NlbmU6ITB9O2Z1bmN0aW9uIGooKXtyZXR1cm4gbnVsbD09PUM/UzoxfWxldCBVLEcsVyxZLHEsWixYLEssSixRLCQsdHQsZXQsbnQsb3QsaXQsYXQscnQsc3QsbHQsY3QsZHQscHQsbXQ9bztmdW5jdGlvbiB1dCh0LG4pe2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBpPWUuZ2V0Q29udGV4dCh0W29dLG4pO2lmKG51bGwhPT1pKXJldHVybiBpfXJldHVybiBudWxsfXRyeXtjb25zdCB0PXthbHBoYTppLGRlcHRoOmEsc3RlbmNpbDpyLGFudGlhbGlhczpzLHByZW11bHRpcGxpZWRBbHBoYTpsLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpjLHBvd2VyUHJlZmVyZW5jZTpkLGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6cH07aWYoZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixodCwhMSksZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsYnQsITEpLG51bGw9PT1tdCl7Y29uc3QgZT1bIndlYmdsMiIsIndlYmdsIiwiZXhwZXJpbWVudGFsLXdlYmdsIl07aWYoITA9PT1oLmlzV2ViR0wxUmVuZGVyZXImJmUuc2hpZnQoKSxtdD11dChlLHQpLG51bGw9PT1tdCl0aHJvdyB1dChlKT9uZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQgd2l0aCB5b3VyIHNlbGVjdGVkIGF0dHJpYnV0ZXMuIik6bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0LiIpfXZvaWQgMD09PW10LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCYmKG10LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdD1mdW5jdGlvbigpe3JldHVybntyYW5nZU1pbjoxLHJhbmdlTWF4OjEscHJlY2lzaW9uOjF9fSl9Y2F0Y2godCl7dGhyb3cgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0Lm1lc3NhZ2UpLHR9ZnVuY3Rpb24gZnQoKXtVPW5ldyBnbHQobXQpLEc9bmV3IEJzdChtdCxVLHQpLFUuaW5pdChHKSxkdD1uZXcgZGR0KG10LFUsRyksVz1uZXcgbGR0KG10LFUsRyksTlswXT0xMDI5LFk9bmV3IHlsdChtdCkscT1uZXcgWmN0LFo9bmV3IGNkdChtdCxVLFcscSxHLGR0LFkpLFg9bmV3IGpzdChoKSxLPW5ldyBmbHQoaCksSj1uZXcgQXN0KG10LEcpLHB0PW5ldyBGc3QobXQsVSxKLEcpLFE9bmV3IGhsdChtdCxKLFkscHQpLCQ9bmV3IHZsdChtdCxRLEosWSksc3Q9bmV3IE1sdChtdCksaXQ9bmV3IFZzdChxKSx0dD1uZXcgcWN0KGgsWCxLLFUsRyxwdCxpdCksZXQ9bmV3IGhkdChxKSxudD1uZXcgUWN0KHEpLG90PW5ldyBpZHQoVSxHKSxydD1uZXcgSHN0KGgsWCxXLCQsbCksYXQ9bmV3IHNkdChoLCQsRyksbHQ9bmV3IExzdChtdCxVLFksRyksY3Q9bmV3IGJsdChtdCxVLFksRyksWS5wcm9ncmFtcz10dC5wcm9ncmFtcyxoLmNhcGFiaWxpdGllcz1HLGguZXh0ZW5zaW9ucz1VLGgucHJvcGVydGllcz1xLGgucmVuZGVyTGlzdHM9bnQsaC5zaGFkb3dNYXA9YXQsaC5zdGF0ZT1XLGguaW5mbz1ZfWZ0KCk7Y29uc3QgZ3Q9bmV3IGdkdChoLG10KTtmdW5jdGlvbiBodCh0KXt0LnByZXZlbnREZWZhdWx0KCksY29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgTG9zdC4iKSxiPSEwfWZ1bmN0aW9uIGJ0KCl7Y29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgUmVzdG9yZWQuIiksYj0hMTtjb25zdCB0PVkuYXV0b1Jlc2V0LGU9YXQuZW5hYmxlZCxuPWF0LmF1dG9VcGRhdGUsbz1hdC5uZWVkc1VwZGF0ZSxpPWF0LnR5cGU7ZnQoKSxZLmF1dG9SZXNldD10LGF0LmVuYWJsZWQ9ZSxhdC5hdXRvVXBkYXRlPW4sYXQubmVlZHNVcGRhdGU9byxhdC50eXBlPWl9ZnVuY3Rpb24geXQodCl7Y29uc3QgZT10LnRhcmdldDtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHl0KSwoZnVuY3Rpb24gbih0KXsoZnVuY3Rpb24gZSh0KXtjb25zdCBlPXEuZ2V0KHQpLnByb2dyYW1zO3ZvaWQgMCE9PWUmJmUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dHQucmVsZWFzZVByb2dyYW0odCl9KSl9KSh0KSxxLnJlbW92ZSh0KX0pKGUpfXRoaXMueHI9Z3QsdGhpcy5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIG10fSx0aGlzLmdldENvbnRleHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIG10LmdldENvbnRleHRBdHRyaWJ1dGVzKCl9LHRoaXMuZm9yY2VDb250ZXh0TG9zcz1mdW5jdGlvbigpe2NvbnN0IHQ9VS5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO3QmJnQubG9zZUNvbnRleHQoKX0sdGhpcy5mb3JjZUNvbnRleHRSZXN0b3JlPWZ1bmN0aW9uKCl7Y29uc3QgdD1VLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5yZXN0b3JlQ29udGV4dCgpfSx0aGlzLmdldFBpeGVsUmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gU30sdGhpcy5zZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJihTPXQsdGhpcy5zZXRTaXplKHcsaywhMSkpfSx0aGlzLmdldFNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0KHcsayl9LHRoaXMuc2V0U2l6ZT1mdW5jdGlvbih0LG4sbyl7Z3QuaXNQcmVzZW50aW5nP2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ2FuJ3QgY2hhbmdlIHNpemUgd2hpbGUgVlIgZGV2aWNlIGlzIHByZXNlbnRpbmcuIik6KHc9dCxrPW4sZS53aWR0aD1NYXRoLmZsb29yKHQqUyksZS5oZWlnaHQ9TWF0aC5mbG9vcihuKlMpLCExIT09byYmKGUuc3R5bGUud2lkdGg9dCsicHgiLGUuc3R5bGUuaGVpZ2h0PW4rInB4IiksdGhpcy5zZXRWaWV3cG9ydCgwLDAsdCxuKSl9LHRoaXMuZ2V0RHJhd2luZ0J1ZmZlclNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0KHcqUyxrKlMpLmZsb29yKCl9LHRoaXMuc2V0RHJhd2luZ0J1ZmZlclNpemU9ZnVuY3Rpb24odCxuLG8pe3c9dCxrPW4sUz1vLGUud2lkdGg9TWF0aC5mbG9vcih0Km8pLGUuaGVpZ2h0PU1hdGguZmxvb3IobipvKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LG4pfSx0aGlzLmdldEN1cnJlbnRWaWV3cG9ydD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KHgpfSx0aGlzLmdldFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoUil9LHRoaXMuc2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCxlLG4sbyl7dC5pc1ZlY3RvcjQ/Ui5zZXQodC54LHQueSx0LnosdC53KTpSLnNldCh0LGUsbixvKSxXLnZpZXdwb3J0KHguY29weShSKS5tdWx0aXBseVNjYWxhcihTKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoQSl9LHRoaXMuc2V0U2Npc3Nvcj1mdW5jdGlvbih0LGUsbixvKXt0LmlzVmVjdG9yND9BLnNldCh0LngsdC55LHQueix0LncpOkEuc2V0KHQsZSxuLG8pLFcuc2Npc3NvcihPLmNvcHkoQSkubXVsdGlwbHlTY2FsYXIoUykuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gVH0sdGhpcy5zZXRTY2lzc29yVGVzdD1mdW5jdGlvbih0KXtXLnNldFNjaXNzb3JUZXN0KFQ9dCl9LHRoaXMuc2V0T3BhcXVlU29ydD1mdW5jdGlvbih0KXtEPXR9LHRoaXMuc2V0VHJhbnNwYXJlbnRTb3J0PWZ1bmN0aW9uKHQpe0U9dH0sdGhpcy5nZXRDbGVhckNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkocnQuZ2V0Q2xlYXJDb2xvcigpKX0sdGhpcy5zZXRDbGVhckNvbG9yPWZ1bmN0aW9uKCl7cnQuc2V0Q2xlYXJDb2xvci5hcHBseShydCxhcmd1bWVudHMpfSx0aGlzLmdldENsZWFyQWxwaGE9ZnVuY3Rpb24oKXtyZXR1cm4gcnQuZ2V0Q2xlYXJBbHBoYSgpfSx0aGlzLnNldENsZWFyQWxwaGE9ZnVuY3Rpb24oKXtydC5zZXRDbGVhckFscGhhLmFwcGx5KHJ0LGFyZ3VtZW50cyl9LHRoaXMuY2xlYXI9ZnVuY3Rpb24odCxlLG4pe2xldCBvPTA7KHZvaWQgMD09PXR8fHQpJiYob3w9MTYzODQpLCh2b2lkIDA9PT1lfHxlKSYmKG98PTI1NiksKHZvaWQgMD09PW58fG4pJiYob3w9MTAyNCksbXQuY2xlYXIobyl9LHRoaXMuY2xlYXJDb2xvcj1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITAsITEsITEpfSx0aGlzLmNsZWFyRGVwdGg9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCEwLCExKX0sdGhpcy5jbGVhclN0ZW5jaWw9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCExLCEwKX0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixodCwhMSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsYnQsITEpLG50LmRpc3Bvc2UoKSxvdC5kaXNwb3NlKCkscS5kaXNwb3NlKCksWC5kaXNwb3NlKCksSy5kaXNwb3NlKCksJC5kaXNwb3NlKCkscHQuZGlzcG9zZSgpLGd0LmRpc3Bvc2UoKSxndC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZXNzaW9uc3RhcnQiLEN0KSxndC5yZW1vdmVFdmVudExpc3RlbmVyKCJzZXNzaW9uZW5kIixNdCksRiYmKEYuZGlzcG9zZSgpLEY9bnVsbCksdnQuc3RvcCgpfSx0aGlzLnJlbmRlckJ1ZmZlckltbWVkaWF0ZT1mdW5jdGlvbih0LGUpe3B0LmluaXRBdHRyaWJ1dGVzKCk7Y29uc3Qgbj1xLmdldCh0KTt0Lmhhc1Bvc2l0aW9ucyYmIW4ucG9zaXRpb24mJihuLnBvc2l0aW9uPW10LmNyZWF0ZUJ1ZmZlcigpKSx0Lmhhc05vcm1hbHMmJiFuLm5vcm1hbCYmKG4ubm9ybWFsPW10LmNyZWF0ZUJ1ZmZlcigpKSx0Lmhhc1V2cyYmIW4udXYmJihuLnV2PW10LmNyZWF0ZUJ1ZmZlcigpKSx0Lmhhc0NvbG9ycyYmIW4uY29sb3ImJihuLmNvbG9yPW10LmNyZWF0ZUJ1ZmZlcigpKTtjb25zdCBvPWUuZ2V0QXR0cmlidXRlcygpO3QuaGFzUG9zaXRpb25zJiYobXQuYmluZEJ1ZmZlcigzNDk2MixuLnBvc2l0aW9uKSxtdC5idWZmZXJEYXRhKDM0OTYyLHQucG9zaXRpb25BcnJheSwzNTA0OCkscHQuZW5hYmxlQXR0cmlidXRlKG8ucG9zaXRpb24pLG10LnZlcnRleEF0dHJpYlBvaW50ZXIoby5wb3NpdGlvbiwzLDUxMjYsITEsMCwwKSksdC5oYXNOb3JtYWxzJiYobXQuYmluZEJ1ZmZlcigzNDk2MixuLm5vcm1hbCksbXQuYnVmZmVyRGF0YSgzNDk2Mix0Lm5vcm1hbEFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby5ub3JtYWwpLG10LnZlcnRleEF0dHJpYlBvaW50ZXIoby5ub3JtYWwsMyw1MTI2LCExLDAsMCkpLHQuaGFzVXZzJiYobXQuYmluZEJ1ZmZlcigzNDk2MixuLnV2KSxtdC5idWZmZXJEYXRhKDM0OTYyLHQudXZBcnJheSwzNTA0OCkscHQuZW5hYmxlQXR0cmlidXRlKG8udXYpLG10LnZlcnRleEF0dHJpYlBvaW50ZXIoby51diwyLDUxMjYsITEsMCwwKSksdC5oYXNDb2xvcnMmJihtdC5iaW5kQnVmZmVyKDM0OTYyLG4uY29sb3IpLG10LmJ1ZmZlckRhdGEoMzQ5NjIsdC5jb2xvckFycmF5LDM1MDQ4KSxwdC5lbmFibGVBdHRyaWJ1dGUoby5jb2xvciksbXQudmVydGV4QXR0cmliUG9pbnRlcihvLmNvbG9yLDMsNTEyNiwhMSwwLDApKSxwdC5kaXNhYmxlVW51c2VkQXR0cmlidXRlcygpLG10LmRyYXdBcnJheXMoNCwwLHQuY291bnQpLHQuY291bnQ9MH0sdGhpcy5yZW5kZXJCdWZmZXJEaXJlY3Q9ZnVuY3Rpb24odCxlLG4sbyxpLGEpe251bGw9PT1lJiYoZT1WKTtjb25zdCByPWkuaXNNZXNoJiZpLm1hdHJpeFdvcmxkLmRldGVybWluYW50KCk8MCxzPVN0KHQsZSxvLGkpO1cuc2V0TWF0ZXJpYWwobyxyKTtsZXQgbD1uLmluZGV4O2NvbnN0IGM9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGw9PT1sKXtpZih2b2lkIDA9PT1jfHwwPT09Yy5jb3VudClyZXR1cm59ZWxzZSBpZigwPT09bC5jb3VudClyZXR1cm47bGV0IGQscD0xOyEwPT09by53aXJlZnJhbWUmJihsPVEuZ2V0V2lyZWZyYW1lQXR0cmlidXRlKG4pLHA9Miksdm9pZCAwPT09bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24mJnZvaWQgMD09PW4ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbHx8c3QudXBkYXRlKGksbixvLHMpLHB0LnNldHVwKGksbyxzLG4sbCk7bGV0IG09bHQ7bnVsbCE9PWwmJihkPUouZ2V0KGwpLG09Y3QsbS5zZXRJbmRleChkKSk7Y29uc3QgdT1udWxsIT09bD9sLmNvdW50OmMuY291bnQsZj1uLmRyYXdSYW5nZS5zdGFydCpwLGc9bi5kcmF3UmFuZ2UuY291bnQqcCxoPW51bGwhPT1hP2Euc3RhcnQqcDowLGI9bnVsbCE9PWE/YS5jb3VudCpwOjEvMCx5PU1hdGgubWF4KGYsaCksXz1NYXRoLm1pbih1LGYrZyxoK2IpLTEsQz1NYXRoLm1heCgwLF8teSsxKTtpZigwIT09Qyl7aWYoaS5pc01lc2gpITA9PT1vLndpcmVmcmFtZT8oVy5zZXRMaW5lV2lkdGgoby53aXJlZnJhbWVMaW5ld2lkdGgqaigpKSxtLnNldE1vZGUoMSkpOm0uc2V0TW9kZSg0KTtlbHNlIGlmKGkuaXNMaW5lKXtsZXQgdD1vLmxpbmV3aWR0aDt2b2lkIDA9PT10JiYodD0xKSxXLnNldExpbmVXaWR0aCh0KmooKSksbS5zZXRNb2RlKGkuaXNMaW5lU2VnbWVudHM/MTppLmlzTGluZUxvb3A/MjozKX1lbHNlIGkuaXNQb2ludHM/bS5zZXRNb2RlKDApOmkuaXNTcHJpdGUmJm0uc2V0TW9kZSg0KTtpZihpLmlzSW5zdGFuY2VkTWVzaCltLnJlbmRlckluc3RhbmNlcyh5LEMsaS5jb3VudCk7ZWxzZSBpZihuLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHQ9TWF0aC5taW4obi5pbnN0YW5jZUNvdW50LG4uX21heEluc3RhbmNlQ291bnQpO20ucmVuZGVySW5zdGFuY2VzKHksQyx0KX1lbHNlIG0ucmVuZGVyKHksQyl9fSx0aGlzLmNvbXBpbGU9ZnVuY3Rpb24odCxlKXt1PW90LmdldCh0KSx1LmluaXQoKSxnLnB1c2godSksdC50cmF2ZXJzZVZpc2libGUoKGZ1bmN0aW9uKHQpe3QuaXNMaWdodCYmdC5sYXllcnMudGVzdChlLmxheWVycykmJih1LnB1c2hMaWdodCh0KSx0LmNhc3RTaGFkb3cmJnUucHVzaFNoYWRvdyh0KSl9KSksdS5zZXR1cExpZ2h0cygpLHQudHJhdmVyc2UoKGZ1bmN0aW9uKGUpe2NvbnN0IG49ZS5tYXRlcmlhbDtpZihuKWlmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspd3QobltvXSx0LGUpO2Vsc2Ugd3Qobix0LGUpfSkpLGcucG9wKCksdT1udWxsfTtsZXQgX3Q9bnVsbDtmdW5jdGlvbiBDdCgpe3Z0LnN0b3AoKX1mdW5jdGlvbiBNdCgpe3Z0LnN0YXJ0KCl9Y29uc3QgdnQ9bmV3IFJzdDtmdW5jdGlvbiB4dCh0LGUsbixvKXtpZighMT09PXQudmlzaWJsZSlyZXR1cm47aWYodC5sYXllcnMudGVzdChlLmxheWVycykpaWYodC5pc0dyb3VwKW49dC5yZW5kZXJPcmRlcjtlbHNlIGlmKHQuaXNMT0QpITA9PT10LmF1dG9VcGRhdGUmJnQudXBkYXRlKGUpO2Vsc2UgaWYodC5pc0xpZ2h0KXUucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmdS5wdXNoU2hhZG93KHQpO2Vsc2UgaWYodC5pc1Nwcml0ZSl7aWYoIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzU3ByaXRlKHQpKXtvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCk7Y29uc3QgZT0kLnVwZGF0ZSh0KSxpPXQubWF0ZXJpYWw7aS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9fWVsc2UgaWYodC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdClvJiZCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCksbS5wdXNoKHQsbnVsbCx0Lm1hdGVyaWFsLG4sQi56LG51bGwpO2Vsc2UgaWYoKHQuaXNNZXNofHx0LmlzTGluZXx8dC5pc1BvaW50cykmJih0LmlzU2tpbm5lZE1lc2gmJnQuc2tlbGV0b24uZnJhbWUhPT1ZLnJlbmRlci5mcmFtZSYmKHQuc2tlbGV0b24udXBkYXRlKCksdC5za2VsZXRvbi5mcmFtZT1ZLnJlbmRlci5mcmFtZSksIXQuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzT2JqZWN0KHQpKSl7byYmQi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEwpO2NvbnN0IGU9JC51cGRhdGUodCksaT10Lm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IG89ZS5ncm91cHM7Zm9yKGxldCBhPTAscj1vLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPW9bYV0scz1pW3IubWF0ZXJpYWxJbmRleF07cyYmcy52aXNpYmxlJiZtLnB1c2godCxlLHMsbixCLnoscil9fWVsc2UgaS52aXNpYmxlJiZtLnB1c2godCxlLGksbixCLnosbnVsbCl9Y29uc3QgaT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wLGE9aS5sZW5ndGg7dDxhO3QrKyl4dChpW3RdLGUsbixvKX1mdW5jdGlvbiBPdCh0LGUsbil7Y29uc3Qgbz0hMD09PWUuaXNTY2VuZT9lLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtpZihuLmlzQXJyYXlDYW1lcmEpe2NvbnN0IGk9bi5jYW1lcmFzO2ZvcihsZXQgbj0wLGE9aS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1pW25dO1cudmlld3BvcnQoeC5jb3B5KGEudmlld3BvcnQpKSx1LnNldHVwTGlnaHRzVmlldyhhKTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXSxyPWkub2JqZWN0LHM9aS5nZW9tZXRyeSxsPW51bGw9PT1vP2kubWF0ZXJpYWw6byxjPWkuZ3JvdXA7ci5sYXllcnMudGVzdChhLmxheWVycykmJlB0KHIsZSxhLHMsbCxjKX19fWVsc2UgZm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07UHQoYS5vYmplY3QsZSxuLGEuZ2VvbWV0cnksbnVsbD09PW8/YS5tYXRlcmlhbDpvLGEuZ3JvdXApfX1mdW5jdGlvbiBQdCh0LGUsbixvLGksYSl7aWYodC5vbkJlZm9yZVJlbmRlcihoLGUsbixvLGksYSksdC5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhuLm1hdHJpeFdvcmxkSW52ZXJzZSx0Lm1hdHJpeFdvcmxkKSx0Lm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgodC5tb2RlbFZpZXdNYXRyaXgpLHQuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Qpe2NvbnN0IG89U3QobixlLGksdCk7Vy5zZXRNYXRlcmlhbChpKSxwdC5yZXNldCgpLChmdW5jdGlvbiByKHQsZSl7dC5yZW5kZXIoKGZ1bmN0aW9uKHQpe2gucmVuZGVyQnVmZmVySW1tZWRpYXRlKHQsZSl9KSl9KSh0LG8pfWVsc2UhMD09PWkudHJhbnNwYXJlbnQmJjI9PT1pLnNpZGU/KGkuc2lkZT0xLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0wLGkubmVlZHNVcGRhdGU9ITAsaC5yZW5kZXJCdWZmZXJEaXJlY3QobixlLG8saSx0LGEpLGkuc2lkZT0yKTpoLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsbyxpLHQsYSk7dC5vbkFmdGVyUmVuZGVyKGgsZSxuLG8saSxhKX1mdW5jdGlvbiB3dCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPVYpO2NvbnN0IG89cS5nZXQodCksaT11LnN0YXRlLmxpZ2h0cyxhPWkuc3RhdGUudmVyc2lvbixyPXR0LmdldFBhcmFtZXRlcnModCxpLnN0YXRlLHUuc3RhdGUuc2hhZG93c0FycmF5LGUsbikscz10dC5nZXRQcm9ncmFtQ2FjaGVLZXkocik7bGV0IGw9by5wcm9ncmFtcztvLmVudmlyb25tZW50PXQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwsby5mb2c9ZS5mb2csby5lbnZNYXA9KHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldCh0LmVudk1hcHx8by5lbnZpcm9ubWVudCksdm9pZCAwPT09bCYmKHQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseXQpLGw9bmV3IE1hcCxvLnByb2dyYW1zPWwpO2xldCBjPWwuZ2V0KHMpO2lmKHZvaWQgMCE9PWMpe2lmKG8uY3VycmVudFByb2dyYW09PT1jJiZvLmxpZ2h0c1N0YXRlVmVyc2lvbj09PWEpcmV0dXJuIGt0KHQsciksY31lbHNlIHIudW5pZm9ybXM9dHQuZ2V0VW5pZm9ybXModCksdC5vbkJ1aWxkKHIsaCksdC5vbkJlZm9yZUNvbXBpbGUocixoKSxjPXR0LmFjcXVpcmVQcm9ncmFtKHIscyksbC5zZXQocyxjKSxvLnVuaWZvcm1zPXIudW5pZm9ybXM7Y29uc3QgZD1vLnVuaWZvcm1zOyh0LmlzU2hhZGVyTWF0ZXJpYWx8fHQuaXNSYXdTaGFkZXJNYXRlcmlhbCkmJiEwIT09dC5jbGlwcGluZ3x8KGQuY2xpcHBpbmdQbGFuZXM9aXQudW5pZm9ybSksa3QodCxyKSxvLm5lZWRzTGlnaHRzPShmdW5jdGlvbiBwKHQpe3JldHVybiB0LmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8dC5pc01lc2hUb29uTWF0ZXJpYWx8fHQuaXNNZXNoUGhvbmdNYXRlcmlhbHx8dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHx0LmlzU2hhZG93TWF0ZXJpYWx8fHQuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT10LmxpZ2h0c30pKHQpLG8ubGlnaHRzU3RhdGVWZXJzaW9uPWEsby5uZWVkc0xpZ2h0cyYmKGQuYW1iaWVudExpZ2h0Q29sb3IudmFsdWU9aS5zdGF0ZS5hbWJpZW50LGQubGlnaHRQcm9iZS52YWx1ZT1pLnN0YXRlLnByb2JlLGQuZGlyZWN0aW9uYWxMaWdodHMudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbCxkLmRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzLnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3csZC5zcG90TGlnaHRzLnZhbHVlPWkuc3RhdGUuc3BvdCxkLnNwb3RMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93LGQucmVjdEFyZWFMaWdodHMudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYSxkLmx0Y18xLnZhbHVlPWkuc3RhdGUucmVjdEFyZWFMVEMxLGQubHRjXzIudmFsdWU9aS5zdGF0ZS5yZWN0QXJlYUxUQzIsZC5wb2ludExpZ2h0cy52YWx1ZT1pLnN0YXRlLnBvaW50LGQucG9pbnRMaWdodFNoYWRvd3MudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvdyxkLmhlbWlzcGhlcmVMaWdodHMudmFsdWU9aS5zdGF0ZS5oZW1pLGQuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxkLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsZC5zcG90U2hhZG93TWFwLnZhbHVlPWkuc3RhdGUuc3BvdFNoYWRvd01hcCxkLnNwb3RTaGFkb3dNYXRyaXgudmFsdWU9aS5zdGF0ZS5zcG90U2hhZG93TWF0cml4LGQucG9pbnRTaGFkb3dNYXAudmFsdWU9aS5zdGF0ZS5wb2ludFNoYWRvd01hcCxkLnBvaW50U2hhZG93TWF0cml4LnZhbHVlPWkuc3RhdGUucG9pbnRTaGFkb3dNYXRyaXgpO2NvbnN0IG09Yy5nZXRVbmlmb3JtcygpLGY9d2N0LnNlcVdpdGhWYWx1ZShtLnNlcSxkKTtyZXR1cm4gby5jdXJyZW50UHJvZ3JhbT1jLG8udW5pZm9ybXNMaXN0PWYsY31mdW5jdGlvbiBrdCh0LGUpe2NvbnN0IG49cS5nZXQodCk7bi5vdXRwdXRFbmNvZGluZz1lLm91dHB1dEVuY29kaW5nLG4uaW5zdGFuY2luZz1lLmluc3RhbmNpbmcsbi5za2lubmluZz1lLnNraW5uaW5nLG4ubW9ycGhUYXJnZXRzPWUubW9ycGhUYXJnZXRzLG4ubW9ycGhOb3JtYWxzPWUubW9ycGhOb3JtYWxzLG4ubnVtQ2xpcHBpbmdQbGFuZXM9ZS5udW1DbGlwcGluZ1BsYW5lcyxuLm51bUludGVyc2VjdGlvbj1lLm51bUNsaXBJbnRlcnNlY3Rpb24sbi52ZXJ0ZXhBbHBoYXM9ZS52ZXJ0ZXhBbHBoYXMsbi52ZXJ0ZXhUYW5nZW50cz1lLnZlcnRleFRhbmdlbnRzfWZ1bmN0aW9uIFN0KHQsZSxuLG8peyEwIT09ZS5pc1NjZW5lJiYoZT1WKSxaLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3QgaT1lLmZvZyxhPW51bGw9PT1DP2gub3V0cHV0RW5jb2Rpbmc6Qy50ZXh0dXJlLmVuY29kaW5nLHI9KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9LOlgpLmdldChuLmVudk1hcHx8KG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwpKSxzPSEwPT09bi52ZXJ0ZXhDb2xvcnMmJiEhby5nZW9tZXRyeSYmISFvLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3ImJjQ9PT1vLmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemUsbD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsYz0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sZD0hIW8uZ2VvbWV0cnkmJiEhby5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLHA9cS5nZXQobiksbT11LnN0YXRlLmxpZ2h0czshMCE9PUl8fCEwIT09SCYmdD09PXZ8fGl0LnNldFN0YXRlKG4sdCx0PT09diYmbi5pZD09PU0pO2xldCBmPSExO24udmVyc2lvbj09PXAuX192ZXJzaW9uP3AubmVlZHNMaWdodHMmJnAubGlnaHRzU3RhdGVWZXJzaW9uIT09bS5zdGF0ZS52ZXJzaW9ufHxwLm91dHB1dEVuY29kaW5nIT09YXx8by5pc0luc3RhbmNlZE1lc2gmJiExPT09cC5pbnN0YW5jaW5nP2Y9ITA6by5pc0luc3RhbmNlZE1lc2h8fCEwIT09cC5pbnN0YW5jaW5nP28uaXNTa2lubmVkTWVzaCYmITE9PT1wLnNraW5uaW5nP2Y9ITA6by5pc1NraW5uZWRNZXNofHwhMCE9PXAuc2tpbm5pbmc/cC5lbnZNYXAhPT1yfHxuLmZvZyYmcC5mb2chPT1pP2Y9ITA6dm9pZCAwPT09cC5udW1DbGlwcGluZ1BsYW5lc3x8cC5udW1DbGlwcGluZ1BsYW5lcz09PWl0Lm51bVBsYW5lcyYmcC5udW1JbnRlcnNlY3Rpb249PT1pdC5udW1JbnRlcnNlY3Rpb24/KHAudmVydGV4QWxwaGFzIT09c3x8cC52ZXJ0ZXhUYW5nZW50cyE9PWx8fHAubW9ycGhUYXJnZXRzIT09Y3x8cC5tb3JwaE5vcm1hbHMhPT1kKSYmKGY9ITApOmY9ITA6Zj0hMDpmPSEwOihmPSEwLHAuX192ZXJzaW9uPW4udmVyc2lvbik7bGV0IGc9cC5jdXJyZW50UHJvZ3JhbTshMD09PWYmJihnPXd0KG4sZSxvKSk7bGV0IGI9ITEseT0hMSxfPSExO2NvbnN0IHg9Zy5nZXRVbmlmb3JtcygpLE89cC51bmlmb3JtcztpZihXLnVzZVByb2dyYW0oZy5wcm9ncmFtKSYmKGI9ITAseT0hMCxfPSEwKSxuLmlkIT09TSYmKE09bi5pZCx5PSEwKSxifHx2IT09dCl7aWYoeC5zZXRWYWx1ZShtdCwicHJvamVjdGlvbk1hdHJpeCIsdC5wcm9qZWN0aW9uTWF0cml4KSxHLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJnguc2V0VmFsdWUobXQsImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKHQuZmFyKzEpL01hdGguTE4yKSksdiE9PXQmJih2PXQseT0hMCxfPSEwKSxuLmlzU2hhZGVyTWF0ZXJpYWx8fG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5lbnZNYXApe2NvbnN0IGU9eC5tYXAuY2FtZXJhUG9zaXRpb247dm9pZCAwIT09ZSYmZS5zZXRWYWx1ZShtdCxCLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSl9KG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoTGFtYmVydE1hdGVyaWFsfHxuLmlzTWVzaEJhc2ljTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5pc1NoYWRlck1hdGVyaWFsKSYmeC5zZXRWYWx1ZShtdCwiaXNPcnRob2dyYXBoaWMiLCEwPT09dC5pc09ydGhvZ3JhcGhpY0NhbWVyYSksKG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoTGFtYmVydE1hdGVyaWFsfHxuLmlzTWVzaEJhc2ljTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5pc1NoYWRlck1hdGVyaWFsfHxuLmlzU2hhZG93TWF0ZXJpYWx8fG8uaXNTa2lubmVkTWVzaCkmJnguc2V0VmFsdWUobXQsInZpZXdNYXRyaXgiLHQubWF0cml4V29ybGRJbnZlcnNlKX1pZihvLmlzU2tpbm5lZE1lc2gpe3guc2V0T3B0aW9uYWwobXQsbywiYmluZE1hdHJpeCIpLHguc2V0T3B0aW9uYWwobXQsbywiYmluZE1hdHJpeEludmVyc2UiKTtjb25zdCB0PW8uc2tlbGV0b247dCYmKEcuZmxvYXRWZXJ0ZXhUZXh0dXJlcz8obnVsbD09PXQuYm9uZVRleHR1cmUmJnQuY29tcHV0ZUJvbmVUZXh0dXJlKCkseC5zZXRWYWx1ZShtdCwiYm9uZVRleHR1cmUiLHQuYm9uZVRleHR1cmUsWikseC5zZXRWYWx1ZShtdCwiYm9uZVRleHR1cmVTaXplIix0LmJvbmVUZXh0dXJlU2l6ZSkpOnguc2V0T3B0aW9uYWwobXQsdCwiYm9uZU1hdHJpY2VzIikpfXJldHVybih5fHxwLnJlY2VpdmVTaGFkb3chPT1vLnJlY2VpdmVTaGFkb3cpJiYocC5yZWNlaXZlU2hhZG93PW8ucmVjZWl2ZVNoYWRvdyx4LnNldFZhbHVlKG10LCJyZWNlaXZlU2hhZG93IixvLnJlY2VpdmVTaGFkb3cpKSx5JiYoeC5zZXRWYWx1ZShtdCwidG9uZU1hcHBpbmdFeHBvc3VyZSIsaC50b25lTWFwcGluZ0V4cG9zdXJlKSxwLm5lZWRzTGlnaHRzJiYoZnVuY3Rpb24gUCh0LGUpe3QuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9ZSx0LmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1lfSkoTyxfKSxpJiZuLmZvZyYmZXQucmVmcmVzaEZvZ1VuaWZvcm1zKE8saSksZXQucmVmcmVzaE1hdGVyaWFsVW5pZm9ybXMoTyxuLFMsayxGKSx3Y3QudXBsb2FkKG10LHAudW5pZm9ybXNMaXN0LE8sWikpLG4uaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1uLnVuaWZvcm1zTmVlZFVwZGF0ZSYmKHdjdC51cGxvYWQobXQscC51bmlmb3Jtc0xpc3QsTyxaKSxuLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSksbi5pc1Nwcml0ZU1hdGVyaWFsJiZ4LnNldFZhbHVlKG10LCJjZW50ZXIiLG8uY2VudGVyKSx4LnNldFZhbHVlKG10LCJtb2RlbFZpZXdNYXRyaXgiLG8ubW9kZWxWaWV3TWF0cml4KSx4LnNldFZhbHVlKG10LCJub3JtYWxNYXRyaXgiLG8ubm9ybWFsTWF0cml4KSx4LnNldFZhbHVlKG10LCJtb2RlbE1hdHJpeCIsby5tYXRyaXhXb3JsZCksZ312dC5zZXRBbmltYXRpb25Mb29wKChmdW5jdGlvbiBEdCh0KXtfdCYmX3QodCl9KSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJnZ0LnNldENvbnRleHQod2luZG93KSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7X3Q9dCxndC5zZXRBbmltYXRpb25Mb29wKHQpLG51bGw9PT10P3Z0LnN0b3AoKTp2dC5zdGFydCgpfSxndC5hZGRFdmVudExpc3RlbmVyKCJzZXNzaW9uc3RhcnQiLEN0KSxndC5hZGRFdmVudExpc3RlbmVyKCJzZXNzaW9uZW5kIixNdCksdGhpcy5yZW5kZXI9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lJiYhMCE9PWUuaXNDYW1lcmEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXI6IGNhbWVyYSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQ2FtZXJhLiIpO2lmKCEwPT09YilyZXR1cm47ITA9PT10LmF1dG9VcGRhdGUmJnQudXBkYXRlTWF0cml4V29ybGQoKSxudWxsPT09ZS5wYXJlbnQmJmUudXBkYXRlTWF0cml4V29ybGQoKSwhMD09PWd0LmVuYWJsZWQmJiEwPT09Z3QuaXNQcmVzZW50aW5nJiYoITA9PT1ndC5jYW1lcmFBdXRvVXBkYXRlJiZndC51cGRhdGVDYW1lcmEoZSksZT1ndC5nZXRDYW1lcmEoKSksITA9PT10LmlzU2NlbmUmJnQub25CZWZvcmVSZW5kZXIoaCx0LGUsQyksdT1vdC5nZXQodCxnLmxlbmd0aCksdS5pbml0KCksZy5wdXNoKHUpLEwubXVsdGlwbHlNYXRyaWNlcyhlLnByb2plY3Rpb25NYXRyaXgsZS5tYXRyaXhXb3JsZEludmVyc2UpLHouc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoTCksSD10aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkLEk9aXQuaW5pdCh0aGlzLmNsaXBwaW5nUGxhbmVzLEgsZSksbT1udC5nZXQodCxmLmxlbmd0aCksbS5pbml0KCksZi5wdXNoKG0pLHh0KHQsZSwwLGguc29ydE9iamVjdHMpLG0uZmluaXNoKCksITA9PT1oLnNvcnRPYmplY3RzJiZtLnNvcnQoRCxFKSwhMD09PUkmJml0LmJlZ2luU2hhZG93cygpLGF0LnJlbmRlcih1LnN0YXRlLnNoYWRvd3NBcnJheSx0LGUpLHUuc2V0dXBMaWdodHMoKSx1LnNldHVwTGlnaHRzVmlldyhlKSwhMD09PUkmJml0LmVuZFNoYWRvd3MoKSwhMD09PXRoaXMuaW5mby5hdXRvUmVzZXQmJnRoaXMuaW5mby5yZXNldCgpLHJ0LnJlbmRlcihtLHQpO2NvbnN0IG49bS5vcGFxdWUsbz1tLnRyYW5zbWlzc2l2ZSxpPW0udHJhbnNwYXJlbnQ7bi5sZW5ndGg+MCYmT3Qobix0LGUpLG8ubGVuZ3RoPjAmJihmdW5jdGlvbiBhKHQsZSxuLG8pe251bGw9PT1GJiYoRj1uZXcoITA9PT1zJiYhMD09PUcuaXNXZWJHTDI/c2F0OnJhdCkoMTAyNCwxMDI0LHtnZW5lcmF0ZU1pcG1hcHM6ITAsdHlwZTpudWxsIT09ZHQuY29udmVydCh4aXQpP3hpdDpfaXQsbWluRmlsdGVyOnlpdCxtYWdGaWx0ZXI6aGl0LHdyYXBTOmZpdCx3cmFwVDpmaXR9KSk7Y29uc3QgaT1oLmdldFJlbmRlclRhcmdldCgpO2guc2V0UmVuZGVyVGFyZ2V0KEYpLGguY2xlYXIoKTtjb25zdCBhPWgudG9uZU1hcHBpbmc7aC50b25lTWFwcGluZz0wLE90KHQsbixvKSxoLnRvbmVNYXBwaW5nPWEsWi51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChGKSxaLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChGKSxoLnNldFJlbmRlclRhcmdldChpKSxPdChlLG4sbyl9KShuLG8sdCxlKSxpLmxlbmd0aD4wJiZPdChpLHQsZSksbnVsbCE9PUMmJihaLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEMpLFoudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEMpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkFmdGVyUmVuZGVyKGgsdCxlKSxXLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksVy5idWZmZXJzLmRlcHRoLnNldE1hc2soITApLFcuYnVmZmVycy5jb2xvci5zZXRNYXNrKCEwKSxXLnNldFBvbHlnb25PZmZzZXQoITEpLHB0LnJlc2V0RGVmYXVsdFN0YXRlKCksTT0tMSx2PW51bGwsZy5wb3AoKSx1PWcubGVuZ3RoPjA/Z1tnLmxlbmd0aC0xXTpudWxsLGYucG9wKCksbT1mLmxlbmd0aD4wP2ZbZi5sZW5ndGgtMV06bnVsbH0sdGhpcy5nZXRBY3RpdmVDdWJlRmFjZT1mdW5jdGlvbigpe3JldHVybiB5fSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHRoaXMuZ2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIEN9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKHQsZT0wLG49MCl7Qz10LHk9ZSxfPW4sdCYmdm9pZCAwPT09cS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyJiZaLnNldHVwUmVuZGVyVGFyZ2V0KHQpO2xldCBvPW51bGwsaT0hMSxhPSExO2lmKHQpe2NvbnN0IG49dC50ZXh0dXJlOyhuLmlzRGF0YVRleHR1cmUzRHx8bi5pc0RhdGFUZXh0dXJlMkRBcnJheSkmJihhPSEwKTtjb25zdCByPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjt0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PyhvPXJbZV0saT0hMCk6bz10LmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9xLmdldCh0KS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI6cix4LmNvcHkodC52aWV3cG9ydCksTy5jb3B5KHQuc2Npc3NvciksUD10LnNjaXNzb3JUZXN0fWVsc2UgeC5jb3B5KFIpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksTy5jb3B5KEEpLm11bHRpcGx5U2NhbGFyKFMpLmZsb29yKCksUD1UO2lmKFcuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG8pJiZHLmRyYXdCdWZmZXJzKXtsZXQgZT0hMTtpZih0KWlmKHQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyl7Y29uc3Qgbj10LnRleHR1cmU7aWYoTi5sZW5ndGghPT1uLmxlbmd0aHx8MzYwNjQhPT1OWzBdKXtmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0KyspTlt0XT0zNjA2NCt0O04ubGVuZ3RoPW4ubGVuZ3RoLGU9ITB9fWVsc2UgMT09PU4ubGVuZ3RoJiYzNjA2ND09PU5bMF18fChOWzBdPTM2MDY0LE4ubGVuZ3RoPTEsZT0hMCk7ZWxzZSAxPT09Ti5sZW5ndGgmJjEwMjk9PT1OWzBdfHwoTlswXT0xMDI5LE4ubGVuZ3RoPTEsZT0hMCk7ZSYmKEcuaXNXZWJHTDI/bXQuZHJhd0J1ZmZlcnMoTik6VS5nZXQoIldFQkdMX2RyYXdfYnVmZmVycyIpLmRyYXdCdWZmZXJzV0VCR0woTikpfWlmKFcudmlld3BvcnQoeCksVy5zY2lzc29yKE8pLFcuc2V0U2Npc3NvclRlc3QoUCksaSl7Y29uc3Qgbz1xLmdldCh0LnRleHR1cmUpO210LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5K2Usby5fX3dlYmdsVGV4dHVyZSxuKX1lbHNlIGlmKGEpe2NvbnN0IG89cS5nZXQodC50ZXh0dXJlKTttdC5mcmFtZWJ1ZmZlclRleHR1cmVMYXllcigzNjE2MCwzNjA2NCxvLl9fd2ViZ2xUZXh0dXJlLG58fDAsZXx8MCl9fSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24odCxlLG4sbyxpLGEscil7aWYoIXR8fCF0LmlzV2ViR0xSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0LiIpO2xldCBzPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtpZih0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZ2b2lkIDAhPT1yJiYocz1zW3JdKSxzKXtXLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxzKTt0cnl7Y29uc3Qgcj10LnRleHR1cmUscz1yLmZvcm1hdCxsPXIudHlwZTtpZihzIT09d2l0JiZkdC5jb252ZXJ0KHMpIT09bXQuZ2V0UGFyYW1ldGVyKDM1NzM5KSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gUkdCQSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGZvcm1hdC4iKTtjb25zdCBjPWw9PT14aXQmJihVLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil8fEcuaXNXZWJHTDImJlUuaGFzKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpO2lmKCEobD09PV9pdHx8ZHQuY29udmVydChsKT09PW10LmdldFBhcmFtZXRlcigzNTczOCl8fGw9PT12aXQmJihHLmlzV2ViR0wyfHxVLmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKXx8VS5oYXMoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKXx8YykpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpOzM2MDUzPT09bXQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygzNjE2MCk/ZT49MCYmZTw9dC53aWR0aC1vJiZuPj0wJiZuPD10LmhlaWdodC1pJiZtdC5yZWFkUGl4ZWxzKGUsbixvLGksZHQuY29udmVydChzKSxkdC5jb252ZXJ0KGwpLGEpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKX1maW5hbGx5e2NvbnN0IHQ9bnVsbCE9PUM/cS5nZXQoQykuX193ZWJnbEZyYW1lYnVmZmVyOm51bGw7Vy5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdCl9fX0sdGhpcy5jb3B5RnJhbWVidWZmZXJUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG49MCl7Y29uc3Qgbz1NYXRoLnBvdygyLC1uKSxpPU1hdGguZmxvb3IoZS5pbWFnZS53aWR0aCpvKSxhPU1hdGguZmxvb3IoZS5pbWFnZS5oZWlnaHQqbyk7bGV0IHI9ZHQuY29udmVydChlLmZvcm1hdCk7Ry5pc1dlYkdMMiYmKDY0MDc9PT1yJiYocj0zMjg0OSksNjQwOD09PXImJihyPTMyODU2KSksWi5zZXRUZXh0dXJlMkQoZSwwKSxtdC5jb3B5VGV4SW1hZ2UyRCgzNTUzLG4scix0LngsdC55LGksYSwwKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbixvPTApe2NvbnN0IGk9ZS5pbWFnZS53aWR0aCxhPWUuaW1hZ2UuaGVpZ2h0LHI9ZHQuY29udmVydChuLmZvcm1hdCkscz1kdC5jb252ZXJ0KG4udHlwZSk7Wi5zZXRUZXh0dXJlMkQobiwwKSxtdC5waXhlbFN0b3JlaSgzNzQ0MCxuLmZsaXBZKSxtdC5waXhlbFN0b3JlaSgzNzQ0MSxuLnByZW11bHRpcGx5QWxwaGEpLG10LnBpeGVsU3RvcmVpKDMzMTcsbi51bnBhY2tBbGlnbm1lbnQpLGUuaXNEYXRhVGV4dHVyZT9tdC50ZXhTdWJJbWFnZTJEKDM1NTMsbyx0LngsdC55LGksYSxyLHMsZS5pbWFnZS5kYXRhKTplLmlzQ29tcHJlc3NlZFRleHR1cmU/bXQuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoMzU1MyxvLHQueCx0LnksZS5taXBtYXBzWzBdLndpZHRoLGUubWlwbWFwc1swXS5oZWlnaHQscixlLm1pcG1hcHNbMF0uZGF0YSk6bXQudGV4U3ViSW1hZ2UyRCgzNTUzLG8sdC54LHQueSxyLHMsZS5pbWFnZSksMD09PW8mJm4uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcCgzNTUzKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEPWZ1bmN0aW9uKHQsZSxuLG8saT0wKXtpZihoLmlzV2ViR0wxUmVuZGVyZXIpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7Y29uc3QgYT10Lm1heC54LXQubWluLngrMSxyPXQubWF4LnktdC5taW4ueSsxLHM9dC5tYXguei10Lm1pbi56KzEsbD1kdC5jb252ZXJ0KG8uZm9ybWF0KSxjPWR0LmNvbnZlcnQoby50eXBlKTtsZXQgZDtpZihvLmlzRGF0YVRleHR1cmUzRClaLnNldFRleHR1cmUzRChvLDApLGQ9MzI4Nzk7ZWxzZXtpZighby5pc0RhdGFUZXh0dXJlMkRBcnJheSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIuY29weVRleHR1cmVUb1RleHR1cmUzRDogb25seSBzdXBwb3J0cyBUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkuIik7Wi5zZXRUZXh0dXJlMkRBcnJheShvLDApLGQ9MzU4NjZ9bXQucGl4ZWxTdG9yZWkoMzc0NDAsby5mbGlwWSksbXQucGl4ZWxTdG9yZWkoMzc0NDEsby5wcmVtdWx0aXBseUFscGhhKSxtdC5waXhlbFN0b3JlaSgzMzE3LG8udW5wYWNrQWxpZ25tZW50KTtjb25zdCBwPW10LmdldFBhcmFtZXRlcigzMzE0KSxtPW10LmdldFBhcmFtZXRlcigzMjg3OCksdT1tdC5nZXRQYXJhbWV0ZXIoMzMxNiksZj1tdC5nZXRQYXJhbWV0ZXIoMzMxNSksZz1tdC5nZXRQYXJhbWV0ZXIoMzI4NzcpLGI9bi5pc0NvbXByZXNzZWRUZXh0dXJlP24ubWlwbWFwc1swXTpuLmltYWdlO210LnBpeGVsU3RvcmVpKDMzMTQsYi53aWR0aCksbXQucGl4ZWxTdG9yZWkoMzI4NzgsYi5oZWlnaHQpLG10LnBpeGVsU3RvcmVpKDMzMTYsdC5taW4ueCksbXQucGl4ZWxTdG9yZWkoMzMxNSx0Lm1pbi55KSxtdC5waXhlbFN0b3JlaSgzMjg3Nyx0Lm1pbi56KSxuLmlzRGF0YVRleHR1cmV8fG4uaXNEYXRhVGV4dHVyZTNEP210LnRleFN1YkltYWdlM0QoZCxpLGUueCxlLnksZS56LGEscixzLGwsYyxiLmRhdGEpOm4uaXNDb21wcmVzc2VkVGV4dHVyZT8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IHVudGVzdGVkIHN1cHBvcnQgZm9yIGNvbXByZXNzZWQgc3JjVGV4dHVyZS4iKSxtdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChkLGksZS54LGUueSxlLnosYSxyLHMsbCxiLmRhdGEpKTptdC50ZXhTdWJJbWFnZTNEKGQsaSxlLngsZS55LGUueixhLHIscyxsLGMsYiksbXQucGl4ZWxTdG9yZWkoMzMxNCxwKSxtdC5waXhlbFN0b3JlaSgzMjg3OCxtKSxtdC5waXhlbFN0b3JlaSgzMzE2LHUpLG10LnBpeGVsU3RvcmVpKDMzMTUsZiksbXQucGl4ZWxTdG9yZWkoMzI4NzcsZyksMD09PWkmJm8uZ2VuZXJhdGVNaXBtYXBzJiZtdC5nZW5lcmF0ZU1pcG1hcChkKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbih0KXtaLnNldFRleHR1cmUyRCh0LDApLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXt5PTAsXz0wLEM9bnVsbCxXLnJlc2V0KCkscHQucmVzZXQoKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfShjbGFzcyBleHRlbmRzIGJkdHt9KS5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDtjbGFzcyB5ZHQgZXh0ZW5kcyBwcnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5mb2cmJihlLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLGV9fXlkdC5wcm90b3R5cGUuaXNTY2VuZT0hMDtjbGFzcyBfZHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9Qml0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9cWl0KCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxuKXt0Kj10aGlzLnN0cmlkZSxuKj1lLnN0cmlkZTtmb3IobGV0IG89MCxpPXRoaXMuc3RyaWRlO288aTtvKyspdGhpcy5hcnJheVt0K29dPWUuYXJyYXlbbitvXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1xaXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPXRoaXMuYXJyYXkuc2xpY2UoMCkuYnVmZmVyKTtjb25zdCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gbi5zZXRVc2FnZSh0aGlzLnVzYWdlKSxufW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnMmJih0LmFycmF5QnVmZmVycz17fSksdm9pZCAwPT09dGhpcy5hcnJheS5idWZmZXIuX3V1aWQmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1xaXQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fV9kdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlcj0hMDtjb25zdCBDZHQ9bmV3IGNhdDtjbGFzcyBNZHR7Y29uc3RydWN0b3IodCxlLG4sbz0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1uLHRoaXMubm9ybWFsaXplZD0hMD09PW99Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKylDZHQueD10aGlzLmdldFgoZSksQ2R0Lnk9dGhpcy5nZXRZKGUpLENkdC56PXRoaXMuZ2V0WihlKSxDZHQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsQ2R0LngsQ2R0LnksQ2R0LnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG49dGhpcy5jb3VudDtlPG47ZSsrKUNkdC54PXRoaXMuZ2V0WChlKSxDZHQueT10aGlzLmdldFkoZSksQ2R0Lno9dGhpcy5nZXRaKGUpLENkdC5hcHBseU5vcm1hbE1hdHJpeCh0KSx0aGlzLnNldFhZWihlLENkdC54LENkdC55LENkdC56KTtyZXR1cm4gdGhpc310cmFuc2Zvcm1EaXJlY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspQ2R0Lng9dGhpcy5nZXRYKGUpLENkdC55PXRoaXMuZ2V0WShlKSxDZHQuej10aGlzLmdldFooZSksQ2R0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLENkdC54LENkdC55LENkdC56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzfXNldFhZWih0LGUsbixvKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPW8sdGhpc31zZXRYWVpXKHQsZSxuLG8saSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1vLHRoaXMuZGF0YS5hcnJheVt0KzNdPWksdGhpc31jbG9uZSh0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY291bnQ7ZSsrKXtjb25zdCBuPWUqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IGU9MDtlPHRoaXMuaXRlbVNpemU7ZSsrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbbitlXSl9cmV0dXJuIG5ldyB6cnQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgTWR0KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fU1kdC5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDtjbGFzcyB2ZHQgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBScnQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319bGV0IHhkdDt2ZHQucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7Y29uc3QgT2R0PW5ldyBjYXQsUGR0PW5ldyBjYXQsd2R0PW5ldyBjYXQsa2R0PW5ldyBRaXQsU2R0PW5ldyBRaXQsRGR0PW5ldyBCYXQsRWR0PW5ldyBjYXQsUmR0PW5ldyBjYXQsQWR0PW5ldyBjYXQsVGR0PW5ldyBRaXQsTmR0PW5ldyBRaXQsemR0PW5ldyBRaXQ7ZnVuY3Rpb24gSWR0KHQsZSxuLG8saSxhKXtrZHQuc3ViVmVjdG9ycyh0LG4pLmFkZFNjYWxhciguNSkubXVsdGlwbHkobyksdm9pZCAwIT09aT8oU2R0Lng9YSprZHQueC1pKmtkdC55LFNkdC55PWkqa2R0LngrYSprZHQueSk6U2R0LmNvcHkoa2R0KSx0LmNvcHkoZSksdC54Kz1TZHQueCx0LnkrPVNkdC55LHQuYXBwbHlNYXRyaXg0KERkdCl9KGNsYXNzIGV4dGVuZHMgcHJ0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PXhkdCl7eGR0PW5ldyBxcnQ7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSxlPW5ldyBfZHQodCw1KTt4ZHQuc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSkseGR0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBNZHQoZSwzLDAsITEpKSx4ZHQuc2V0QXR0cmlidXRlKCJ1diIsbmV3IE1kdChlLDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9eGR0LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyB2ZHQsdGhpcy5jZW50ZXI9bmV3IFFpdCguNSwuNSl9cmF5Y2FzdCh0LGUpe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLFBkdC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksRGR0LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLHdkdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJlBkdC5tdWx0aXBseVNjYWxhcigtd2R0LnopO2NvbnN0IG49dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgbyxpOzAhPT1uJiYoaT1NYXRoLmNvcyhuKSxvPU1hdGguc2luKG4pKTtjb25zdCBhPXRoaXMuY2VudGVyO0lkdChFZHQuc2V0KC0uNSwtLjUsMCksd2R0LGEsUGR0LG8saSksSWR0KFJkdC5zZXQoLjUsLS41LDApLHdkdCxhLFBkdCxvLGkpLElkdChBZHQuc2V0KC41LC41LDApLHdkdCxhLFBkdCxvLGkpLFRkdC5zZXQoMCwwKSxOZHQuc2V0KDEsMCksemR0LnNldCgxLDEpO2xldCByPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKEVkdCxSZHQsQWR0LCExLE9kdCk7aWYobnVsbD09PXImJihJZHQoUmR0LnNldCgtLjUsLjUsMCksd2R0LGEsUGR0LG8saSksTmR0LnNldCgwLDEpLHI9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoRWR0LEFkdCxSZHQsITEsT2R0KSxudWxsPT09cikpcmV0dXJuO2NvbnN0IHM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oT2R0KTtzPHQubmVhcnx8cz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpzLHBvaW50Ok9kdC5jbG9uZSgpLHV2OnZydC5nZXRVVihPZHQsRWR0LFJkdCxBZHQsVGR0LE5kdCx6ZHQsbmV3IFFpdCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fSkucHJvdG90eXBlLmlzU3ByaXRlPSEwO2NvbnN0IEhkdD1uZXcgY2F0LEZkdD1uZXcgYWF0LExkdD1uZXcgYWF0LEJkdD1uZXcgY2F0LFZkdD1uZXcgQmF0O2NsYXNzIGpkdCBleHRlbmRzIHBzdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTa2lubmVkTWVzaCIsdGhpcy5iaW5kTW9kZT0iYXR0YWNoZWQiLHRoaXMuYmluZE1hdHJpeD1uZXcgQmF0LHRoaXMuYmluZE1hdHJpeEludmVyc2U9bmV3IEJhdH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYmluZE1vZGU9dC5iaW5kTW9kZSx0aGlzLmJpbmRNYXRyaXguY29weSh0LmJpbmRNYXRyaXgpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0LmJpbmRNYXRyaXhJbnZlcnNlKSx0aGlzLnNrZWxldG9uPXQuc2tlbGV0b24sdGhpc31iaW5kKHQsZSl7dGhpcy5za2VsZXRvbj10LHZvaWQgMD09PWUmJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksZT10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShlKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkoZSkuaW52ZXJ0KCl9cG9zZSgpe3RoaXMuc2tlbGV0b24ucG9zZSgpfW5vcm1hbGl6ZVNraW5XZWlnaHRzKCl7Y29uc3QgdD1uZXcgYWF0LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQ7Zm9yKGxldCBuPTAsbz1lLmNvdW50O248bztuKyspe3QueD1lLmdldFgobiksdC55PWUuZ2V0WShuKSx0Lno9ZS5nZXRaKG4pLHQudz1lLmdldFcobik7Y29uc3Qgbz0xL3QubWFuaGF0dGFuTGVuZ3RoKCk7byE9PTEvMD90Lm11bHRpcGx5U2NhbGFyKG8pOnQuc2V0KDEsMCwwLDApLGUuc2V0WFlaVyhuLHQueCx0LnksdC56LHQudyl9fXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLCJhdHRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKToiZGV0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5iaW5kTWF0cml4KS5pbnZlcnQoKTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9Ym9uZVRyYW5zZm9ybSh0LGUpe2NvbnN0IG49dGhpcy5za2VsZXRvbixvPXRoaXMuZ2VvbWV0cnk7RmR0LmZyb21CdWZmZXJBdHRyaWJ1dGUoby5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxMZHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxIZHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLmF0dHJpYnV0ZXMucG9zaXRpb24sdCkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksZS5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IG89TGR0LmdldENvbXBvbmVudCh0KTtpZigwIT09byl7Y29uc3QgaT1GZHQuZ2V0Q29tcG9uZW50KHQpO1ZkdC5tdWx0aXBseU1hdHJpY2VzKG4uYm9uZXNbaV0ubWF0cml4V29ybGQsbi5ib25lSW52ZXJzZXNbaV0pLGUuYWRkU2NhbGVkVmVjdG9yKEJkdC5jb3B5KEhkdCkuYXBwbHlNYXRyaXg0KFZkdCksbyl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19amR0LnByb3RvdHlwZS5pc1NraW5uZWRNZXNoPSEwLGNsYXNzIGV4dGVuZHMgcHJ0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkJvbmUifX0ucHJvdG90eXBlLmlzQm9uZT0hMCxjbGFzcyBleHRlbmRzIG9hdHtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG49MSxvLGksYSxyLHMsbD0xMDAzLGM9MTAwMyxkLHApe3N1cGVyKG51bGwsYSxyLHMsbCxjLG8saSxkLHApLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpufSx0aGlzLm1hZ0ZpbHRlcj1sLHRoaXMubWluRmlsdGVyPWMsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9fS5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDtjb25zdCBVZHQ9bmV3IEJhdCxHZHQ9bmV3IEJhdCxXZHQ9W10sWWR0PW5ldyBwc3Q7KGNsYXNzIGV4dGVuZHMgcHN0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IHpydChuZXcgRmxvYXQzMkFycmF5KDE2Km4pLDE2KSx0aGlzLmluc3RhbmNlQ29sb3I9bnVsbCx0aGlzLmNvdW50PW4sdGhpcy5mcnVzdHVtQ3VsbGVkPSExfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3B5KHQuaW5zdGFuY2VNYXRyaXgpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9dC5pbnN0YW5jZUNvbG9yLmNsb25lKCkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzfWdldENvbG9yQXQodCxlKXtlLmZyb21BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX1nZXRNYXRyaXhBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9cmF5Y2FzdCh0LGUpe2NvbnN0IG49dGhpcy5tYXRyaXhXb3JsZCxvPXRoaXMuY291bnQ7aWYoWWR0Lmdlb21ldHJ5PXRoaXMuZ2VvbWV0cnksWWR0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdm9pZCAwIT09WWR0Lm1hdGVyaWFsKWZvcihsZXQgaT0wO2k8bztpKyspe3RoaXMuZ2V0TWF0cml4QXQoaSxVZHQpLEdkdC5tdWx0aXBseU1hdHJpY2VzKG4sVWR0KSxZZHQubWF0cml4V29ybGQ9R2R0LFlkdC5yYXljYXN0KHQsV2R0KTtmb3IobGV0IHQ9MCxuPVdkdC5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1XZHRbdF07bi5pbnN0YW5jZUlkPWksbi5vYmplY3Q9dGhpcyxlLnB1c2gobil9V2R0Lmxlbmd0aD0wfX1zZXRDb2xvckF0KHQsZSl7bnVsbD09PXRoaXMuaW5zdGFuY2VDb2xvciYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgenJ0KG5ldyBGbG9hdDMyQXJyYXkoMyp0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KSwzKSksZS50b0FycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSwzKnQpfXNldE1hdHJpeEF0KHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9dXBkYXRlTW9ycGhUYXJnZXRzKCl7fWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSkucHJvdG90eXBlLmlzSW5zdGFuY2VkTWVzaD0hMDtjbGFzcyBxZHQgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBScnQoMTY3NzcyMTUpLHRoaXMubGluZXdpZHRoPTEsdGhpcy5saW5lY2FwPSJyb3VuZCIsdGhpcy5saW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubGluZXdpZHRoPXQubGluZXdpZHRoLHRoaXMubGluZWNhcD10LmxpbmVjYXAsdGhpcy5saW5lam9pbj10LmxpbmVqb2luLHRoaXN9fXFkdC5wcm90b3R5cGUuaXNMaW5lQmFzaWNNYXRlcmlhbD0hMDtjb25zdCBaZHQ9bmV3IGNhdCxYZHQ9bmV3IGNhdCxLZHQ9bmV3IEJhdCxKZHQ9bmV3IExhdCxRZHQ9bmV3IFJhdDtjbGFzcyAkZHQgZXh0ZW5kcyBwcnR7Y29uc3RydWN0b3IodD1uZXcgcXJ0LGU9bmV3IHFkdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmUiLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc31jb21wdXRlTGluZURpc3RhbmNlcygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49WzBdO2ZvcihsZXQgdD0xLG89ZS5jb3VudDt0PG87dCsrKVpkdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdC0xKSxYZHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQpLG5bdF09blt0LTFdLG5bdF0rPVpkdC5kaXN0YW5jZVRvKFhkdCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IEZydChuLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdHJpeFdvcmxkLGk9dC5wYXJhbXMuTGluZS50aHJlc2hvbGQsYT1uLmRyYXdSYW5nZTtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxRZHQuY29weShuLmJvdW5kaW5nU3BoZXJlKSxRZHQuYXBwbHlNYXRyaXg0KG8pLFFkdC5yYWRpdXMrPWksITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKFFkdCkpcmV0dXJuO0tkdC5jb3B5KG8pLmludmVydCgpLEpkdC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoS2R0KTtjb25zdCByPWkvKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMykscz1yKnIsbD1uZXcgY2F0LGM9bmV3IGNhdCxkPW5ldyBjYXQscD1uZXcgY2F0LG09dGhpcy5pc0xpbmVTZWdtZW50cz8yOjE7aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBvPW4uaW5kZXgsaT1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbCE9PW8pZm9yKGxldCBuPU1hdGgubWF4KDAsYS5zdGFydCkscj1NYXRoLm1pbihvLmNvdW50LGEuc3RhcnQrYS5jb3VudCktMTtuPHI7bis9bSl7Y29uc3QgYT1vLmdldFgobikscj1vLmdldFgobisxKTtpZihsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxhKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxyKSxKZHQuZGlzdGFuY2VTcVRvU2VnbWVudChsLGMscCxkKT5zKWNvbnRpbnVlO3AuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IG09dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8ocCk7bTx0Lm5lYXJ8fG0+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6bSxwb2ludDpkLmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4Om4sZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9ZWxzZSBmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxvPU1hdGgubWluKGkuY291bnQsYS5zdGFydCthLmNvdW50KS0xO248bztuKz1tKXtpZihsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxuKzEpLEpkdC5kaXN0YW5jZVNxVG9TZWdtZW50KGwsYyxwLGQpPnMpY29udGludWU7cC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTtvPHQubmVhcnx8bz50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpvLHBvaW50OmQuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZSBuLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9dXBkYXRlTW9ycGhUYXJnZXRzKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19JGR0LnByb3RvdHlwZS5pc0xpbmU9ITA7Y29uc3QgdHB0PW5ldyBjYXQsZXB0PW5ldyBjYXQ7Y2xhc3MgbnB0IGV4dGVuZHMgJGR0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVTZWdtZW50cyJ9Y29tcHV0ZUxpbmVEaXN0YW5jZXMoKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT10LmluZGV4KXtjb25zdCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVtdO2ZvcihsZXQgdD0wLG89ZS5jb3VudDt0PG87dCs9Mil0cHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQpLGVwdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsxKSxuW3RdPTA9PT10PzA6blt0LTFdLG5bdCsxXT1uW3RdK3RwdC5kaXN0YW5jZVRvKGVwdCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IEZydChuLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZVNlZ21lbnRzLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZVNlZ21lbnRzLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc319bnB0LnByb3RvdHlwZS5pc0xpbmVTZWdtZW50cz0hMCxjbGFzcyBleHRlbmRzICRkdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lTG9vcCJ9fS5wcm90b3R5cGUuaXNMaW5lTG9vcD0hMDtjbGFzcyBvcHQgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBScnQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fW9wdC5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDtjb25zdCBpcHQ9bmV3IEJhdCxhcHQ9bmV3IExhdCxycHQ9bmV3IFJhdCxzcHQ9bmV3IGNhdDtmdW5jdGlvbiBscHQodCxlLG4sbyxpLGEscil7Y29uc3Qgcz1hcHQuZGlzdGFuY2VTcVRvUG9pbnQodCk7aWYoczxuKXtjb25zdCBuPW5ldyBjYXQ7YXB0LmNsb3Nlc3RQb2ludFRvUG9pbnQodCxuKSxuLmFwcGx5TWF0cml4NChvKTtjb25zdCBsPWkucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG4pO2lmKGw8aS5uZWFyfHxsPmkuZmFyKXJldHVybjthLnB1c2goe2Rpc3RhbmNlOmwsZGlzdGFuY2VUb1JheTpNYXRoLnNxcnQocykscG9pbnQ6bixpbmRleDplLGZhY2U6bnVsbCxvYmplY3Q6cn0pfX0oY2xhc3MgZXh0ZW5kcyBwcnR7Y29uc3RydWN0b3IodD1uZXcgcXJ0LGU9bmV3IG9wdCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXJheWNhc3QodCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksbz10aGlzLm1hdHJpeFdvcmxkLGk9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHJwdC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLHJwdC5hcHBseU1hdHJpeDQobykscnB0LnJhZGl1cys9aSwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUocnB0KSlyZXR1cm47aXB0LmNvcHkobykuaW52ZXJ0KCksYXB0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChpcHQpO2NvbnN0IHI9aS8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxzPXIqcjtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSlmb3IobGV0IG49TWF0aC5tYXgoMCxhLnN0YXJ0KSxsPU1hdGgubWluKGkuY291bnQsYS5zdGFydCthLmNvdW50KTtuPGw7bisrKXtjb25zdCBhPWkuZ2V0WChuKTtzcHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGEpLGxwdChzcHQsYSxzLG8sdCxlLHRoaXMpfWVsc2UgZm9yKGxldCBuPU1hdGgubWF4KDAsYS5zdGFydCksaT1NYXRoLm1pbihyLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7bjxpO24rKylzcHQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLG4pLGxwdChzcHQsbixzLG8sdCxlLHRoaXMpfWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KS5wcm90b3R5cGUuaXNQb2ludHM9ITAsY2xhc3MgZXh0ZW5kcyBvYXR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwpe3N1cGVyKHQsZSxuLG8saSxhLHIscyxsKSx0aGlzLmZvcm1hdD12b2lkIDAhPT1yP3I6UGl0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PWE/YTpiaXQsdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09aT9pOmJpdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtjb25zdCBjPXRoaXM7InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKChmdW5jdGlvbiBlKCl7Yy5uZWVkc1VwZGF0ZT0hMCx0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soZSl9KSl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuaW1hZ2U7MD09InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fS5wcm90b3R5cGUuaXNWaWRlb1RleHR1cmU9ITAsY2xhc3MgZXh0ZW5kcyBvYXR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscixzLGwsYyxkLHApe3N1cGVyKG51bGwsYSxyLHMsbCxjLG8saSxkLHApLHRoaXMuaW1hZ2U9e3dpZHRoOmUsaGVpZ2h0Om59LHRoaXMubWlwbWFwcz10LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fS5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMCxjbGFzcyBleHRlbmRzIG9hdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSxyLHMsbCl7c3VwZXIodCxlLG4sbyxpLGEscixzLGwpLHRoaXMubmVlZHNVcGRhdGU9ITB9fS5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwLGNsYXNzIGV4dGVuZHMgb2F0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyxsLGMpe2lmKChjPXZvaWQgMCE9PWM/YzpraXQpIT09a2l0JiZjIT09U2l0KXRocm93IG5ldyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1uJiZjPT09a2l0JiYobj1DaXQpLHZvaWQgMD09PW4mJmM9PT1TaXQmJihuPU9pdCksc3VwZXIobnVsbCxvLGksYSxyLHMsYyxuLGwpLHRoaXMuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmV9LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PXI/cjpoaXQsdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09cz9zOmhpdCx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX0ucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlPSEwO2NsYXNzIGNwdCBleHRlbmRzIHFydHtjb25zdHJ1Y3Rvcih0PTEsZT04LG49MCxvPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOmUsdGhldGFTdGFydDpuLHRoZXRhTGVuZ3RoOm99LGU9TWF0aC5tYXgoMyxlKTtjb25zdCBpPVtdLGE9W10scj1bXSxzPVtdLGw9bmV3IGNhdCxjPW5ldyBRaXQ7YS5wdXNoKDAsMCwwKSxyLnB1c2goMCwwLDEpLHMucHVzaCguNSwuNSk7Zm9yKGxldCBpPTAsZD0zO2k8PWU7aSsrLGQrPTMpe2NvbnN0IHA9bitpL2UqbztsLng9dCpNYXRoLmNvcyhwKSxsLnk9dCpNYXRoLnNpbihwKSxhLnB1c2gobC54LGwueSxsLnopLHIucHVzaCgwLDAsMSksYy54PShhW2RdL3QrMSkvMixjLnk9KGFbZCsxXS90KzEpLzIscy5wdXNoKGMueCxjLnkpfWZvcihsZXQgdD0xO3Q8PWU7dCsrKWkucHVzaCh0LHQrMSwwKTt0aGlzLnNldEluZGV4KGkpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEZydChhLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgRnJ0KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEZydChzLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBjcHQodC5yYWRpdXMsdC5zZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fW5ldyBjYXQsbmV3IGNhdCxuZXcgY2F0LG5ldyB2cnQ7Y2xhc3MgZHB0e2NvbnN0cnVjdG9yKCl7dGhpcy50eXBlPSJDdXJ2ZSIsdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9MjAwfWdldFBvaW50KCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3VydmU6IC5nZXRQb2ludCgpIG5vdCBpbXBsZW1lbnRlZC4iKSxudWxsfWdldFBvaW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0UG9pbnQobixlKX1nZXRQb2ludHModD01KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiBlfWdldFNwYWNlZFBvaW50cyh0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnRBdChuL3QpKTtyZXR1cm4gZX1nZXRMZW5ndGgoKXtjb25zdCB0PXRoaXMuZ2V0TGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfWdldExlbmd0aHModD10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyl7aWYodGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PXQrMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzO3RoaXMubmVlZHNVcGRhdGU9ITE7Y29uc3QgZT1bXTtsZXQgbixvPXRoaXMuZ2V0UG9pbnQoMCksaT0wO2UucHVzaCgwKTtmb3IobGV0IGE9MTthPD10O2ErKyluPXRoaXMuZ2V0UG9pbnQoYS90KSxpKz1uLmRpc3RhbmNlVG8obyksZS5wdXNoKGkpLG89bjtyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM9ZSxlfXVwZGF0ZUFyY0xlbmd0aHMoKXt0aGlzLm5lZWRzVXBkYXRlPSEwLHRoaXMuZ2V0TGVuZ3RocygpfWdldFV0b1RtYXBwaW5nKHQsZSl7Y29uc3Qgbj10aGlzLmdldExlbmd0aHMoKTtsZXQgbz0wO2NvbnN0IGk9bi5sZW5ndGg7bGV0IGE7YT1lfHx0Km5baS0xXTtsZXQgcixzPTAsbD1pLTE7Zm9yKDtzPD1sOylpZihvPU1hdGguZmxvb3IocysobC1zKS8yKSxyPW5bb10tYSxyPDApcz1vKzE7ZWxzZXtpZighKHI+MCkpe2w9bzticmVha31sPW8tMX1pZihvPWwsbltvXT09PWEpcmV0dXJuIG8vKGktMSk7Y29uc3QgYz1uW29dO3JldHVybihvKyhhLWMpLyhuW28rMV0tYykpLyhpLTEpfWdldFRhbmdlbnQodCxlKXtjb25zdCBuPTFlLTQ7bGV0IG89dC1uLGk9dCtuO288MCYmKG89MCksaT4xJiYoaT0xKTtjb25zdCBhPXRoaXMuZ2V0UG9pbnQobykscj10aGlzLmdldFBvaW50KGkpLHM9ZXx8KGEuaXNWZWN0b3IyP25ldyBRaXQ6bmV3IGNhdCk7cmV0dXJuIHMuY29weShyKS5zdWIoYSkubm9ybWFsaXplKCksc31nZXRUYW5nZW50QXQodCxlKXtjb25zdCBuPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChuLGUpfWNvbXB1dGVGcmVuZXRGcmFtZXModCxlKXtjb25zdCBuPW5ldyBjYXQsbz1bXSxpPVtdLGE9W10scj1uZXcgY2F0LHM9bmV3IEJhdDtmb3IobGV0IGU9MDtlPD10O2UrKylvW2VdPXRoaXMuZ2V0VGFuZ2VudEF0KGUvdCxuZXcgY2F0KSxvW2VdLm5vcm1hbGl6ZSgpO2lbMF09bmV3IGNhdCxhWzBdPW5ldyBjYXQ7bGV0IGw9TnVtYmVyLk1BWF9WQUxVRTtjb25zdCBjPU1hdGguYWJzKG9bMF0ueCksZD1NYXRoLmFicyhvWzBdLnkpLHA9TWF0aC5hYnMob1swXS56KTtjPD1sJiYobD1jLG4uc2V0KDEsMCwwKSksZDw9bCYmKGw9ZCxuLnNldCgwLDEsMCkpLHA8PWwmJm4uc2V0KDAsMCwxKSxyLmNyb3NzVmVjdG9ycyhvWzBdLG4pLm5vcm1hbGl6ZSgpLGlbMF0uY3Jvc3NWZWN0b3JzKG9bMF0sciksYVswXS5jcm9zc1ZlY3RvcnMob1swXSxpWzBdKTtmb3IobGV0IGU9MTtlPD10O2UrKyl7aWYoaVtlXT1pW2UtMV0uY2xvbmUoKSxhW2VdPWFbZS0xXS5jbG9uZSgpLHIuY3Jvc3NWZWN0b3JzKG9bZS0xXSxvW2VdKSxyLmxlbmd0aCgpPk51bWJlci5FUFNJTE9OKXtyLm5vcm1hbGl6ZSgpO2NvbnN0IHQ9TWF0aC5hY29zKFppdChvW2UtMV0uZG90KG9bZV0pLC0xLDEpKTtpW2VdLmFwcGx5TWF0cml4NChzLm1ha2VSb3RhdGlvbkF4aXMocix0KSl9YVtlXS5jcm9zc1ZlY3RvcnMob1tlXSxpW2VdKX1pZighMD09PWUpe2xldCBlPU1hdGguYWNvcyhaaXQoaVswXS5kb3QoaVt0XSksLTEsMSkpO2UvPXQsb1swXS5kb3Qoci5jcm9zc1ZlY3RvcnMoaVswXSxpW3RdKSk+MCYmKGU9LWUpO2ZvcihsZXQgbj0xO248PXQ7bisrKWlbbl0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhvW25dLGUqbikpLGFbbl0uY3Jvc3NWZWN0b3JzKG9bbl0saVtuXSl9cmV0dXJue3RhbmdlbnRzOm8sbm9ybWFsczppLGJpbm9ybWFsczphfX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJDdXJ2ZSIsZ2VuZXJhdG9yOiJDdXJ2ZS50b0pTT04ifX07cmV0dXJuIHQuYXJjTGVuZ3RoRGl2aXNpb25zPXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zLHQudHlwZT10aGlzLnR5cGUsdH1mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc319Y2xhc3MgcHB0IGV4dGVuZHMgZHB0e2NvbnN0cnVjdG9yKHQ9MCxlPTAsbj0xLG89MSxpPTAsYT0yKk1hdGguUEkscj0hMSxzPTApe3N1cGVyKCksdGhpcy50eXBlPSJFbGxpcHNlQ3VydmUiLHRoaXMuYVg9dCx0aGlzLmFZPWUsdGhpcy54UmFkaXVzPW4sdGhpcy55UmFkaXVzPW8sdGhpcy5hU3RhcnRBbmdsZT1pLHRoaXMuYUVuZEFuZ2xlPWEsdGhpcy5hQ2xvY2t3aXNlPXIsdGhpcy5hUm90YXRpb249c31nZXRQb2ludCh0LGUpe2NvbnN0IG49ZXx8bmV3IFFpdCxvPTIqTWF0aC5QSTtsZXQgaT10aGlzLmFFbmRBbmdsZS10aGlzLmFTdGFydEFuZ2xlO2NvbnN0IGE9TWF0aC5hYnMoaSk8TnVtYmVyLkVQU0lMT047Zm9yKDtpPDA7KWkrPW87Zm9yKDtpPm87KWktPW87aTxOdW1iZXIuRVBTSUxPTiYmKGk9YT8wOm8pLCEwIT09dGhpcy5hQ2xvY2t3aXNlfHxhfHwoaT09PW8/aT0tbzppLT1vKTtjb25zdCByPXRoaXMuYVN0YXJ0QW5nbGUrdCppO2xldCBzPXRoaXMuYVgrdGhpcy54UmFkaXVzKk1hdGguY29zKHIpLGw9dGhpcy5hWSt0aGlzLnlSYWRpdXMqTWF0aC5zaW4ocik7aWYoMCE9PXRoaXMuYVJvdGF0aW9uKXtjb25zdCB0PU1hdGguY29zKHRoaXMuYVJvdGF0aW9uKSxlPU1hdGguc2luKHRoaXMuYVJvdGF0aW9uKSxuPXMtdGhpcy5hWCxvPWwtdGhpcy5hWTtzPW4qdC1vKmUrdGhpcy5hWCxsPW4qZStvKnQrdGhpcy5hWX1yZXR1cm4gbi5zZXQocyxsKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5hWD10aGlzLmFYLHQuYVk9dGhpcy5hWSx0LnhSYWRpdXM9dGhpcy54UmFkaXVzLHQueVJhZGl1cz10aGlzLnlSYWRpdXMsdC5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlLHQuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlLHQuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2UsdC5hUm90YXRpb249dGhpcy5hUm90YXRpb24sdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc319cHB0LnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMDtjbGFzcyBtcHQgZXh0ZW5kcyBwcHR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEpe3N1cGVyKHQsZSxuLG4sbyxpLGEpLHRoaXMudHlwZT0iQXJjQ3VydmUifX1mdW5jdGlvbiB1cHQoKXtsZXQgdD0wLGU9MCxuPTAsbz0wO2Z1bmN0aW9uIGkoaSxhLHIscyl7dD1pLGU9cixuPS0zKmkrMyphLTIqci1zLG89MippLTIqYStyK3N9cmV0dXJue2luaXRDYXRtdWxsUm9tOmZ1bmN0aW9uKHQsZSxuLG8sYSl7aShlLG4sYSoobi10KSxhKihvLWUpKX0saW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tOmZ1bmN0aW9uKHQsZSxuLG8sYSxyLHMpe2xldCBsPShlLXQpL2EtKG4tdCkvKGErcikrKG4tZSkvcixjPShuLWUpL3ItKG8tZSkvKHIrcykrKG8tbikvcztsKj1yLGMqPXIsaShlLG4sbCxjKX0sY2FsYzpmdW5jdGlvbihpKXtjb25zdCBhPWkqaTtyZXR1cm4gdCtlKmkrbiphK28qKGEqaSl9fX1tcHQucHJvdG90eXBlLmlzQXJjQ3VydmU9ITA7Y29uc3QgZnB0PW5ldyBjYXQsZ3B0PW5ldyB1cHQsaHB0PW5ldyB1cHQsYnB0PW5ldyB1cHQ7Y2xhc3MgeXB0IGV4dGVuZHMgZHB0e2NvbnN0cnVjdG9yKHQ9W10sZT0hMSxuPSJjZW50cmlwZXRhbCIsbz0uNSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNhdG11bGxSb21DdXJ2ZTMiLHRoaXMucG9pbnRzPXQsdGhpcy5jbG9zZWQ9ZSx0aGlzLmN1cnZlVHlwZT1uLHRoaXMudGVuc2lvbj1vfWdldFBvaW50KHQsZT1uZXcgY2F0KXtjb25zdCBuPWUsbz10aGlzLnBvaW50cyxpPW8ubGVuZ3RoLGE9KGktKHRoaXMuY2xvc2VkPzA6MSkpKnQ7bGV0IHIscyxsPU1hdGguZmxvb3IoYSksYz1hLWw7dGhpcy5jbG9zZWQ/bCs9bD4wPzA6KE1hdGguZmxvb3IoTWF0aC5hYnMobCkvaSkrMSkqaTowPT09YyYmbD09PWktMSYmKGw9aS0yLGM9MSksdGhpcy5jbG9zZWR8fGw+MD9yPW9bKGwtMSklaV06KGZwdC5zdWJWZWN0b3JzKG9bMF0sb1sxXSkuYWRkKG9bMF0pLHI9ZnB0KTtjb25zdCBkPW9bbCVpXSxwPW9bKGwrMSklaV07aWYodGhpcy5jbG9zZWR8fGwrMjxpP3M9b1sobCsyKSVpXTooZnB0LnN1YlZlY3RvcnMob1tpLTFdLG9baS0yXSkuYWRkKG9baS0xXSkscz1mcHQpLCJjZW50cmlwZXRhbCI9PT10aGlzLmN1cnZlVHlwZXx8ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGUpe2NvbnN0IHQ9ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGU/LjU6LjI1O2xldCBlPU1hdGgucG93KHIuZGlzdGFuY2VUb1NxdWFyZWQoZCksdCksbj1NYXRoLnBvdyhkLmRpc3RhbmNlVG9TcXVhcmVkKHApLHQpLG89TWF0aC5wb3cocC5kaXN0YW5jZVRvU3F1YXJlZChzKSx0KTtuPDFlLTQmJihuPTEpLGU8MWUtNCYmKGU9biksbzwxZS00JiYobz1uKSxncHQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHIueCxkLngscC54LHMueCxlLG4sbyksaHB0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShyLnksZC55LHAueSxzLnksZSxuLG8pLGJwdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oci56LGQueixwLnoscy56LGUsbixvKX1lbHNlImNhdG11bGxyb20iPT09dGhpcy5jdXJ2ZVR5cGUmJihncHQuaW5pdENhdG11bGxSb20oci54LGQueCxwLngscy54LHRoaXMudGVuc2lvbiksaHB0LmluaXRDYXRtdWxsUm9tKHIueSxkLnkscC55LHMueSx0aGlzLnRlbnNpb24pLGJwdC5pbml0Q2F0bXVsbFJvbShyLnosZC56LHAueixzLnosdGhpcy50ZW5zaW9uKSk7cmV0dXJuIG4uc2V0KGdwdC5jYWxjKGMpLGhwdC5jYWxjKGMpLGJwdC5jYWxjKGMpKSxufWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXRoaXMucG9pbnRzLnB1c2godC5wb2ludHNbZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXMuY2xvc2VkPXQuY2xvc2VkLHRoaXMuY3VydmVUeXBlPXQuY3VydmVUeXBlLHRoaXMudGVuc2lvbj10LnRlbnNpb24sdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspdC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpO3JldHVybiB0LmNsb3NlZD10aGlzLmNsb3NlZCx0LmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZSx0LnRlbnNpb249dGhpcy50ZW5zaW9uLHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgY2F0KS5mcm9tQXJyYXkobikpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9fWZ1bmN0aW9uIF9wdCh0LGUsbixvLGkpe2NvbnN0IGE9LjUqKG8tZSkscj0uNSooaS1uKSxzPXQqdDtyZXR1cm4oMipuLTIqbythK3IpKih0KnMpKygtMypuKzMqby0yKmEtcikqcythKnQrbn1mdW5jdGlvbiBDcHQodCxlLG4sbyl7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIDIqKDEtdCkqdCplfSkodCxuKSsoZnVuY3Rpb24gcih0LGUpe3JldHVybiB0KnQqZX0pKHQsbyl9ZnVuY3Rpb24gTXB0KHQsZSxuLG8saSl7cmV0dXJuKGZ1bmN0aW9uIGEodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gbipuKm4qZX0pKHQsZSkrKGZ1bmN0aW9uIHIodCxlKXtjb25zdCBuPTEtdDtyZXR1cm4gMypuKm4qdCplfSkodCxuKSsoZnVuY3Rpb24gcyh0LGUpe3JldHVybiAzKigxLXQpKnQqdCplfSkodCxvKSsoZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0KnQqdCplfSkodCxpKX15cHQucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMz0hMDtjbGFzcyB2cHQgZXh0ZW5kcyBkcHR7Y29uc3RydWN0b3IodD1uZXcgUWl0LGU9bmV3IFFpdCxuPW5ldyBRaXQsbz1uZXcgUWl0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1vfWdldFBvaW50KHQsZT1uZXcgUWl0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjIscj10aGlzLnYzO3JldHVybiBuLnNldChNcHQodCxvLngsaS54LGEueCxyLngpLE1wdCh0LG8ueSxpLnksYS55LHIueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fXZwdC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlPSEwO2NsYXNzIHhwdCBleHRlbmRzIGRwdHtjb25zdHJ1Y3Rvcih0PW5ldyBjYXQsZT1uZXcgY2F0LG49bmV3IGNhdCxvPW5ldyBjYXQpe3N1cGVyKCksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1vfWdldFBvaW50KHQsZT1uZXcgY2F0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjIscj10aGlzLnYzO3JldHVybiBuLnNldChNcHQodCxvLngsaS54LGEueCxyLngpLE1wdCh0LG8ueSxpLnksYS55LHIueSksTXB0KHQsby56LGkueixhLnosci56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHQudjM9dGhpcy52My50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpcy52My5mcm9tQXJyYXkodC52MyksdGhpc319eHB0LnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIE9wdCBleHRlbmRzIGRwdHtjb25zdHJ1Y3Rvcih0PW5ldyBRaXQsZT1uZXcgUWl0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlIix0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgUWl0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn1nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1nZXRUYW5nZW50KHQsZSl7Y29uc3Qgbj1lfHxuZXcgUWl0O3JldHVybiBuLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLm5vcm1hbGl6ZSgpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fU9wdC5wcm90b3R5cGUuaXNMaW5lQ3VydmU9ITA7Y2xhc3MgUHB0IGV4dGVuZHMgZHB0e2NvbnN0cnVjdG9yKHQ9bmV3IFFpdCxlPW5ldyBRaXQsbj1uZXcgUWl0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgUWl0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjI7cmV0dXJuIG4uc2V0KENwdCh0LG8ueCxpLngsYS54KSxDcHQodCxvLnksaS55LGEueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fVBwdC5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZT0hMDtjbGFzcyB3cHQgZXh0ZW5kcyBkcHR7Y29uc3RydWN0b3IodD1uZXcgY2F0LGU9bmV3IGNhdCxuPW5ldyBjYXQpe3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1ufWdldFBvaW50KHQsZT1uZXcgY2F0KXtjb25zdCBuPWUsbz10aGlzLnYwLGk9dGhpcy52MSxhPXRoaXMudjI7cmV0dXJuIG4uc2V0KENwdCh0LG8ueCxpLngsYS54KSxDcHQodCxvLnksaS55LGEueSksQ3B0KHQsby56LGkueixhLnopKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX13cHQucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmUzPSEwO2NsYXNzIGtwdCBleHRlbmRzIGRwdHtjb25zdHJ1Y3Rvcih0PVtdKXtzdXBlcigpLHRoaXMudHlwZT0iU3BsaW5lQ3VydmUiLHRoaXMucG9pbnRzPXR9Z2V0UG9pbnQodCxlPW5ldyBRaXQpe2NvbnN0IG49ZSxvPXRoaXMucG9pbnRzLGk9KG8ubGVuZ3RoLTEpKnQsYT1NYXRoLmZsb29yKGkpLHI9aS1hLHM9b1swPT09YT9hOmEtMV0sbD1vW2FdLGM9b1thPm8ubGVuZ3RoLTI/by5sZW5ndGgtMTphKzFdLGQ9b1thPm8ubGVuZ3RoLTM/by5sZW5ndGgtMTphKzJdO3JldHVybiBuLnNldChfcHQocixzLngsbC54LGMueCxkLngpLF9wdChyLHMueSxsLnksYy55LGQueSkpLG59Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspdGhpcy5wb2ludHMucHVzaCh0LnBvaW50c1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5wb2ludHMubGVuZ3RoO2U8bjtlKyspdC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tlXS50b0FycmF5KCkpO3JldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IFFpdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpc319a3B0LnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBTcHQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6bXB0LENhdG11bGxSb21DdXJ2ZTM6eXB0LEN1YmljQmV6aWVyQ3VydmU6dnB0LEN1YmljQmV6aWVyQ3VydmUzOnhwdCxFbGxpcHNlQ3VydmU6cHB0LExpbmVDdXJ2ZTpPcHQsTGluZUN1cnZlMzpjbGFzcyBleHRlbmRzIGRwdHtjb25zdHJ1Y3Rvcih0PW5ldyBjYXQsZT1uZXcgY2F0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlMyIsdGhpcy5pc0xpbmVDdXJ2ZTM9ITAsdGhpcy52MT10LHRoaXMudjI9ZX1nZXRQb2ludCh0LGU9bmV3IGNhdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpQcHQsUXVhZHJhdGljQmV6aWVyQ3VydmUzOndwdCxTcGxpbmVDdXJ2ZTprcHR9KTtmdW5jdGlvbiBEcHQodCxlLG4sbyxpKXtsZXQgYSxyO2lmKGk9PT0oZnVuY3Rpb24gcyh0LGUsbixvKXtsZXQgaT0wO2ZvcihsZXQgYT1lLHI9bi1vO2E8bjthKz1vKWkrPSh0W3JdLXRbYV0pKih0W2ErMV0rdFtyKzFdKSxyPWE7cmV0dXJuIGl9KSh0LGUsbixvKT4wKWZvcihhPWU7YTxuO2ErPW8pcj1LcHQoYSx0W2FdLHRbYSsxXSxyKTtlbHNlIGZvcihhPW4tbzthPj1lO2EtPW8pcj1LcHQoYSx0W2FdLHRbYSsxXSxyKTtyZXR1cm4gciYmR3B0KHIsci5uZXh0KSYmKEpwdChyKSxyPXIubmV4dCkscn1mdW5jdGlvbiBFcHQodCxlKXtpZighdClyZXR1cm4gdDtlfHwoZT10KTtsZXQgbixvPXQ7ZG97aWYobj0hMSxvLnN0ZWluZXJ8fCFHcHQobyxvLm5leHQpJiYwIT09VXB0KG8ucHJldixvLG8ubmV4dCkpbz1vLm5leHQ7ZWxzZXtpZihKcHQobyksbz1lPW8ucHJldixvPT09by5uZXh0KWJyZWFrO249ITB9fXdoaWxlKG58fG8hPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiBScHQodCxlLG4sbyxpLGEscil7aWYoIXQpcmV0dXJuOyFyJiZhJiYoZnVuY3Rpb24gcyh0LGUsbixvKXtsZXQgaT10O2Rve251bGw9PT1pLnomJihpLno9THB0KGkueCxpLnksZSxuLG8pKSxpLnByZXZaPWkucHJldixpLm5leHRaPWkubmV4dCxpPWkubmV4dH13aGlsZShpIT09dCk7aS5wcmV2Wi5uZXh0Wj1udWxsLGkucHJldlo9bnVsbCwoZnVuY3Rpb24gYSh0KXtsZXQgZSxuLG8saSxhLHIscyxsLGM9MTtkb3tmb3Iobj10LHQ9bnVsbCxhPW51bGwscj0wO247KXtmb3IocisrLG89bixzPTAsZT0wO2U8YyYmKHMrKyxvPW8ubmV4dFosbyk7ZSsrKTtmb3IobD1jO3M+MHx8bD4wJiZvOykwIT09cyYmKDA9PT1sfHwhb3x8bi56PD1vLnopPyhpPW4sbj1uLm5leHRaLHMtLSk6KGk9byxvPW8ubmV4dFosbC0tKSxhP2EubmV4dFo9aTp0PWksaS5wcmV2Wj1hLGE9aTtuPW99YS5uZXh0Wj1udWxsLGMqPTJ9d2hpbGUocj4xKX0pKGkpfSkodCxvLGksYSk7bGV0IGwsYyxkPXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KWlmKGw9dC5wcmV2LGM9dC5uZXh0LGE/VHB0KHQsbyxpLGEpOkFwdCh0KSllLnB1c2gobC5pL24pLGUucHVzaCh0LmkvbiksZS5wdXNoKGMuaS9uKSxKcHQodCksdD1jLm5leHQsZD1jLm5leHQ7ZWxzZSBpZigodD1jKT09PWQpe3I/MT09PXI/UnB0KHQ9TnB0KEVwdCh0KSxlLG4pLGUsbixvLGksYSwyKToyPT09ciYmenB0KHQsZSxuLG8saSxhKTpScHQoRXB0KHQpLGUsbixvLGksYSwxKTticmVha319ZnVuY3Rpb24gQXB0KHQpe2NvbnN0IGU9dC5wcmV2LG49dCxvPXQubmV4dDtpZihVcHQoZSxuLG8pPj0wKXJldHVybiExO2xldCBpPXQubmV4dC5uZXh0O2Zvcig7aSE9PXQucHJldjspe2lmKFZwdChlLngsZS55LG4ueCxuLnksby54LG8ueSxpLngsaS55KSYmVXB0KGkucHJldixpLGkubmV4dCk+PTApcmV0dXJuITE7aT1pLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gVHB0KHQsZSxuLG8pe2NvbnN0IGk9dC5wcmV2LGE9dCxyPXQubmV4dDtpZihVcHQoaSxhLHIpPj0wKXJldHVybiExO2NvbnN0IHM9aS54PmEueD9pLng+ci54P2kueDpyLng6YS54PnIueD9hLng6ci54LGw9aS55PmEueT9pLnk+ci55P2kueTpyLnk6YS55PnIueT9hLnk6ci55LGM9THB0KGkueDxhLng/aS54PHIueD9pLng6ci54OmEueDxyLng/YS54OnIueCxpLnk8YS55P2kueTxyLnk/aS55OnIueTphLnk8ci55P2EueTpyLnksZSxuLG8pLGQ9THB0KHMsbCxlLG4sbyk7bGV0IHA9dC5wcmV2WixtPXQubmV4dFo7Zm9yKDtwJiZwLno+PWMmJm0mJm0uejw9ZDspe2lmKHAhPT10LnByZXYmJnAhPT10Lm5leHQmJlZwdChpLngsaS55LGEueCxhLnksci54LHIueSxwLngscC55KSYmVXB0KHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7aWYocD1wLnByZXZaLG0hPT10LnByZXYmJm0hPT10Lm5leHQmJlZwdChpLngsaS55LGEueCxhLnksci54LHIueSxtLngsbS55KSYmVXB0KG0ucHJldixtLG0ubmV4dCk+PTApcmV0dXJuITE7bT1tLm5leHRafWZvcig7cCYmcC56Pj1jOyl7aWYocCE9PXQucHJldiYmcCE9PXQubmV4dCYmVnB0KGkueCxpLnksYS54LGEueSxyLngsci55LHAueCxwLnkpJiZVcHQocC5wcmV2LHAscC5uZXh0KT49MClyZXR1cm4hMTtwPXAucHJldlp9Zm9yKDttJiZtLno8PWQ7KXtpZihtIT09dC5wcmV2JiZtIT09dC5uZXh0JiZWcHQoaS54LGkueSxhLngsYS55LHIueCxyLnksbS54LG0ueSkmJlVwdChtLnByZXYsbSxtLm5leHQpPj0wKXJldHVybiExO209bS5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBOcHQodCxlLG4pe2xldCBvPXQ7ZG97Y29uc3QgaT1vLnByZXYsYT1vLm5leHQubmV4dDshR3B0KGksYSkmJldwdChpLG8sby5uZXh0LGEpJiZacHQoaSxhKSYmWnB0KGEsaSkmJihlLnB1c2goaS5pL24pLGUucHVzaChvLmkvbiksZS5wdXNoKGEuaS9uKSxKcHQobyksSnB0KG8ubmV4dCksbz10PWEpLG89by5uZXh0fXdoaWxlKG8hPT10KTtyZXR1cm4gRXB0KG8pfWZ1bmN0aW9uIHpwdCh0LGUsbixvLGksYSl7bGV0IHI9dDtkb3tsZXQgdD1yLm5leHQubmV4dDtmb3IoO3QhPT1yLnByZXY7KXtpZihyLmkhPT10LmkmJmpwdChyLHQpKXtsZXQgcz1YcHQocix0KTtyZXR1cm4gcj1FcHQocixyLm5leHQpLHM9RXB0KHMscy5uZXh0KSxScHQocixlLG4sbyxpLGEpLHZvaWQgUnB0KHMsZSxuLG8saSxhKX10PXQubmV4dH1yPXIubmV4dH13aGlsZShyIT09dCl9ZnVuY3Rpb24gSXB0KHQsZSl7cmV0dXJuIHQueC1lLnh9ZnVuY3Rpb24gSHB0KHQsZSl7aWYoZT0oZnVuY3Rpb24gbih0LGUpe2xldCBuPWU7Y29uc3Qgbz10LngsaT10Lnk7bGV0IGEscj0tMS8wO2Rve2lmKGk8PW4ueSYmaT49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXtjb25zdCB0PW4ueCsoaS1uLnkpKihuLm5leHQueC1uLngpLyhuLm5leHQueS1uLnkpO2lmKHQ8PW8mJnQ+cil7aWYocj10LHQ9PT1vKXtpZihpPT09bi55KXJldHVybiBuO2lmKGk9PT1uLm5leHQueSlyZXR1cm4gbi5uZXh0fWE9bi54PG4ubmV4dC54P246bi5uZXh0fX1uPW4ubmV4dH13aGlsZShuIT09ZSk7aWYoIWEpcmV0dXJuIG51bGw7aWYobz09PXIpcmV0dXJuIGE7Y29uc3Qgcz1hLGw9YS54LGM9YS55O2xldCBkLHA9MS8wO249YTtkb3tvPj1uLngmJm4ueD49bCYmbyE9PW4ueCYmVnB0KGk8Yz9vOnIsaSxsLGMsaTxjP3I6byxpLG4ueCxuLnkpJiYoZD1NYXRoLmFicyhpLW4ueSkvKG8tbi54KSxacHQobix0KSYmKGQ8cHx8ZD09PXAmJihuLng+YS54fHxuLng9PT1hLngmJkZwdChhLG4pKSkmJihhPW4scD1kKSksbj1uLm5leHR9d2hpbGUobiE9PXMpO3JldHVybiBhfSkodCxlKSl7Y29uc3Qgbj1YcHQoZSx0KTtFcHQoZSxlLm5leHQpLEVwdChuLG4ubmV4dCl9fWZ1bmN0aW9uIEZwdCh0LGUpe3JldHVybiBVcHQodC5wcmV2LHQsZS5wcmV2KTwwJiZVcHQoZS5uZXh0LHQsdC5uZXh0KTwwfWZ1bmN0aW9uIExwdCh0LGUsbixvLGkpe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtbikqaSl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChlPTE0MzE2NTU3NjUmKChlPTg1ODk5MzQ1OSYoKGU9MjUyNjQ1MTM1JigoZT0xNjcxMTkzNSYoKGU9MzI3NjcqKGUtbykqaSl8ZTw8OCkpfGU8PDQpKXxlPDwyKSl8ZTw8MSkpPDwxfWZ1bmN0aW9uIEJwdCh0KXtsZXQgZT10LG49dDtkb3soZS54PG4ueHx8ZS54PT09bi54JiZlLnk8bi55KSYmKG49ZSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiBufWZ1bmN0aW9uIFZwdCh0LGUsbixvLGksYSxyLHMpe3JldHVybihpLXIpKihlLXMpLSh0LXIpKihhLXMpPj0wJiYodC1yKSooby1zKS0obi1yKSooZS1zKT49MCYmKG4tcikqKGEtcyktKGktcikqKG8tcyk+PTB9ZnVuY3Rpb24ganB0KHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIShmdW5jdGlvbiBuKHQsZSl7bGV0IG49dDtkb3tpZihuLmkhPT10LmkmJm4ubmV4dC5pIT09dC5pJiZuLmkhPT1lLmkmJm4ubmV4dC5pIT09ZS5pJiZXcHQobixuLm5leHQsdCxlKSlyZXR1cm4hMDtuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuITF9KSh0LGUpJiYoWnB0KHQsZSkmJlpwdChlLHQpJiYoZnVuY3Rpb24gbyh0LGUpe2xldCBuPXQsbz0hMTtjb25zdCBpPSh0LngrZS54KS8yLGE9KHQueStlLnkpLzI7ZG97bi55PmEhPW4ubmV4dC55PmEmJm4ubmV4dC55IT09bi55JiZpPChuLm5leHQueC1uLngpKihhLW4ueSkvKG4ubmV4dC55LW4ueSkrbi54JiYobz0hbyksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBvfSkodCxlKSYmKFVwdCh0LnByZXYsdCxlLnByZXYpfHxVcHQodCxlLnByZXYsZSkpfHxHcHQodCxlKSYmVXB0KHQucHJldix0LHQubmV4dCk+MCYmVXB0KGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gVXB0KHQsZSxuKXtyZXR1cm4oZS55LXQueSkqKG4ueC1lLngpLShlLngtdC54KSoobi55LWUueSl9ZnVuY3Rpb24gR3B0KHQsZSl7cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fWZ1bmN0aW9uIFdwdCh0LGUsbixvKXtjb25zdCBpPXFwdChVcHQodCxlLG4pKSxhPXFwdChVcHQodCxlLG8pKSxyPXFwdChVcHQobixvLHQpKSxzPXFwdChVcHQobixvLGUpKTtyZXR1cm4gaSE9PWEmJnIhPT1zfHwhKDAhPT1pfHwhWXB0KHQsbixlKSl8fCEoMCE9PWF8fCFZcHQodCxvLGUpKXx8ISgwIT09cnx8IVlwdChuLHQsbykpfHwhKDAhPT1zfHwhWXB0KG4sZSxvKSl9ZnVuY3Rpb24gWXB0KHQsZSxuKXtyZXR1cm4gZS54PD1NYXRoLm1heCh0Lngsbi54KSYmZS54Pj1NYXRoLm1pbih0Lngsbi54KSYmZS55PD1NYXRoLm1heCh0Lnksbi55KSYmZS55Pj1NYXRoLm1pbih0Lnksbi55KX1mdW5jdGlvbiBxcHQodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIFpwdCh0LGUpe3JldHVybiBVcHQodC5wcmV2LHQsdC5uZXh0KTwwP1VwdCh0LGUsdC5uZXh0KT49MCYmVXB0KHQsdC5wcmV2LGUpPj0wOlVwdCh0LGUsdC5wcmV2KTwwfHxVcHQodCx0Lm5leHQsZSk8MH1mdW5jdGlvbiBYcHQodCxlKXtjb25zdCBuPW5ldyBRcHQodC5pLHQueCx0LnkpLG89bmV3IFFwdChlLmksZS54LGUueSksaT10Lm5leHQsYT1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LG4ubmV4dD1pLGkucHJldj1uLG8ubmV4dD1uLG4ucHJldj1vLGEubmV4dD1vLG8ucHJldj1hLG99ZnVuY3Rpb24gS3B0KHQsZSxuLG8pe2NvbnN0IGk9bmV3IFFwdCh0LGUsbik7cmV0dXJuIG8/KGkubmV4dD1vLm5leHQsaS5wcmV2PW8sby5uZXh0LnByZXY9aSxvLm5leHQ9aSk6KGkucHJldj1pLGkubmV4dD1pKSxpfWZ1bmN0aW9uIEpwdCh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIFFwdCh0LGUsbil7dGhpcy5pPXQsdGhpcy54PWUsdGhpcy55PW4sdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9Y2xhc3MgJHB0e3N0YXRpYyBhcmVhKHQpe2NvbnN0IGU9dC5sZW5ndGg7bGV0IG49MDtmb3IobGV0IG89ZS0xLGk9MDtpPGU7bz1pKyspbis9dFtvXS54KnRbaV0ueS10W2ldLngqdFtvXS55O3JldHVybi41Km59c3RhdGljIGlzQ2xvY2tXaXNlKHQpe3JldHVybiAkcHQuYXJlYSh0KTwwfXN0YXRpYyB0cmlhbmd1bGF0ZVNoYXBlKHQsZSl7Y29uc3Qgbj1bXSxvPVtdLGk9W107dG10KHQpLGVtdChuLHQpO2xldCBhPXQubGVuZ3RoO2UuZm9yRWFjaCh0bXQpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW8ucHVzaChhKSxhKz1lW3RdLmxlbmd0aCxlbXQobixlW3RdKTtjb25zdCByPShmdW5jdGlvbih0LGUsbj0yKXtjb25zdCBvPWUmJmUubGVuZ3RoLGk9bz9lWzBdKm46dC5sZW5ndGg7bGV0IGE9RHB0KHQsMCxpLG4sITApO2NvbnN0IHI9W107aWYoIWF8fGEubmV4dD09PWEucHJldilyZXR1cm4gcjtsZXQgcyxsLGMsZCxwLG0sdTtpZihvJiYoYT0oZnVuY3Rpb24gZih0LGUsbixvKXtjb25zdCBpPVtdO2xldCBhLHIscyxsLGM7Zm9yKGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcz1lW2FdKm8sbD1hPHItMT9lW2ErMV0qbzp0Lmxlbmd0aCxjPURwdCh0LHMsbCxvLCExKSxjPT09Yy5uZXh0JiYoYy5zdGVpbmVyPSEwKSxpLnB1c2goQnB0KGMpKTtmb3IoaS5zb3J0KElwdCksYT0wO2E8aS5sZW5ndGg7YSsrKUhwdChpW2FdLG4pLG49RXB0KG4sbi5uZXh0KTtyZXR1cm4gbn0pKHQsZSxhLG4pKSx0Lmxlbmd0aD44MCpuKXtzPWM9dFswXSxsPWQ9dFsxXTtmb3IobGV0IGU9bjtlPGk7ZSs9bilwPXRbZV0sbT10W2UrMV0scDxzJiYocz1wKSxtPGwmJihsPW0pLHA+YyYmKGM9cCksbT5kJiYoZD1tKTt1PU1hdGgubWF4KGMtcyxkLWwpLHU9MCE9PXU/MS91OjB9cmV0dXJuIFJwdChhLHIsbixzLGwsdSkscn0pKG4sbyk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kz0zKWkucHVzaChyLnNsaWNlKHQsdCszKSk7cmV0dXJuIGl9fWZ1bmN0aW9uIHRtdCh0KXtjb25zdCBlPXQubGVuZ3RoO2U+MiYmdFtlLTFdLmVxdWFscyh0WzBdKSYmdC5wb3AoKX1mdW5jdGlvbiBlbXQodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0LnB1c2goZVtuXS54KSx0LnB1c2goZVtuXS55KX1jbGFzcyBubXQgZXh0ZW5kcyBxcnR7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMudHlwZT0iRXh0cnVkZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LG9wdGlvbnM6ZX0sdD1BcnJheS5pc0FycmF5KHQpP3Q6W3RdO2NvbnN0IG49dGhpcyxvPVtdLGk9W107Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWEodFtlXSk7ZnVuY3Rpb24gYSh0KXtjb25zdCBhPVtdLHI9dm9pZCAwIT09ZS5jdXJ2ZVNlZ21lbnRzP2UuY3VydmVTZWdtZW50czoxMixzPXZvaWQgMCE9PWUuc3RlcHM/ZS5zdGVwczoxO2xldCBsPXZvaWQgMCE9PWUuZGVwdGg/ZS5kZXB0aDoxMDAsYz12b2lkIDA9PT1lLmJldmVsRW5hYmxlZHx8ZS5iZXZlbEVuYWJsZWQsZD12b2lkIDAhPT1lLmJldmVsVGhpY2tuZXNzP2UuYmV2ZWxUaGlja25lc3M6NixwPXZvaWQgMCE9PWUuYmV2ZWxTaXplP2UuYmV2ZWxTaXplOmQtMixtPXZvaWQgMCE9PWUuYmV2ZWxPZmZzZXQ/ZS5iZXZlbE9mZnNldDowLHU9dm9pZCAwIT09ZS5iZXZlbFNlZ21lbnRzP2UuYmV2ZWxTZWdtZW50czozO2NvbnN0IGY9ZS5leHRydWRlUGF0aCxnPXZvaWQgMCE9PWUuVVZHZW5lcmF0b3I/ZS5VVkdlbmVyYXRvcjpvbXQ7dm9pZCAwIT09ZS5hbW91bnQmJihjb25zb2xlLndhcm4oIlRIUkVFLkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTogYW1vdW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gZGVwdGguIiksbD1lLmFtb3VudCk7bGV0IGgsYix5LF8sQyxNPSExO2YmJihoPWYuZ2V0U3BhY2VkUG9pbnRzKHMpLE09ITAsYz0hMSxiPWYuY29tcHV0ZUZyZW5ldEZyYW1lcyhzLCExKSx5PW5ldyBjYXQsXz1uZXcgY2F0LEM9bmV3IGNhdCksY3x8KHU9MCxkPTAscD0wLG09MCk7Y29uc3Qgdj10LmV4dHJhY3RQb2ludHMocik7bGV0IHg9di5zaGFwZTtjb25zdCBPPXYuaG9sZXM7aWYoISRwdC5pc0Nsb2NrV2lzZSh4KSl7eD14LnJldmVyc2UoKTtmb3IobGV0IHQ9MCxlPU8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9T1t0XTskcHQuaXNDbG9ja1dpc2UoZSkmJihPW3RdPWUucmV2ZXJzZSgpKX19Y29uc3QgUD0kcHQudHJpYW5ndWxhdGVTaGFwZSh4LE8pLHc9eDtmb3IobGV0IHQ9MCxlPU8ubGVuZ3RoO3Q8ZTt0KyspeD14LmNvbmNhdChPW3RdKTtmdW5jdGlvbiBrKHQsZSxuKXtyZXR1cm4gZXx8Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiB2ZWMgZG9lcyBub3QgZXhpc3QiKSxlLmNsb25lKCkubXVsdGlwbHlTY2FsYXIobikuYWRkKHQpfWNvbnN0IFM9eC5sZW5ndGgsRD1QLmxlbmd0aDtmdW5jdGlvbiBFKHQsZSxuKXtsZXQgbyxpLGE7Y29uc3Qgcj10LngtZS54LHM9dC55LWUueSxsPW4ueC10LngsYz1uLnktdC55LGQ9cipyK3MqcztpZihNYXRoLmFicyhyKmMtcypsKT5OdW1iZXIuRVBTSUxPTil7Y29uc3QgcD1NYXRoLnNxcnQoZCksbT1NYXRoLnNxcnQobCpsK2MqYyksdT1lLngtcy9wLGY9ZS55K3IvcCxnPSgobi54LWMvbS11KSpjLShuLnkrbC9tLWYpKmwpLyhyKmMtcypsKTtvPXUrcipnLXQueCxpPWYrcypnLXQueTtjb25zdCBoPW8qbytpKmk7aWYoaDw9MilyZXR1cm4gbmV3IFFpdChvLGkpO2E9TWF0aC5zcXJ0KGgvMil9ZWxzZXtsZXQgdD0hMTtyPk51bWJlci5FUFNJTE9OP2w+TnVtYmVyLkVQU0lMT04mJih0PSEwKTpyPC1OdW1iZXIuRVBTSUxPTj9sPC1OdW1iZXIuRVBTSUxPTiYmKHQ9ITApOk1hdGguc2lnbihzKT09PU1hdGguc2lnbihjKSYmKHQ9ITApLHQ/KG89LXMsaT1yLGE9TWF0aC5zcXJ0KGQpKToobz1yLGk9cyxhPU1hdGguc3FydChkLzIpKX1yZXR1cm4gbmV3IFFpdChvL2EsaS9hKX1jb25zdCBSPVtdO2ZvcihsZXQgdD0wLGU9dy5sZW5ndGgsbj1lLTEsbz10KzE7dDxlO3QrKyxuKyssbysrKW49PT1lJiYobj0wKSxvPT09ZSYmKG89MCksUlt0XT1FKHdbdF0sd1tuXSx3W29dKTtjb25zdCBBPVtdO2xldCBULE49Ui5jb25jYXQoKTtmb3IobGV0IHQ9MCxlPU8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9T1t0XTtUPVtdO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGgsbz1uLTEsaT10KzE7dDxuO3QrKyxvKyssaSsrKW89PT1uJiYobz0wKSxpPT09biYmKGk9MCksVFt0XT1FKGVbdF0sZVtvXSxlW2ldKTtBLnB1c2goVCksTj1OLmNvbmNhdChUKX1mb3IobGV0IHQ9MDt0PHU7dCsrKXtjb25zdCBlPXQvdSxuPWQqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLG89cCpNYXRoLnNpbihlKk1hdGguUEkvMikrbTtmb3IobGV0IHQ9MCxlPXcubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9ayh3W3RdLFJbdF0sbyk7SChlLngsZS55LC1uKX1mb3IobGV0IHQ9MCxlPU8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9T1t0XTtUPUFbdF07Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWsoZVt0XSxUW3RdLG8pO0goaS54LGkueSwtbil9fX1jb25zdCB6PXArbTtmb3IobGV0IHQ9MDt0PFM7dCsrKXtjb25zdCBlPWM/ayh4W3RdLE5bdF0seik6eFt0XTtNPyhfLmNvcHkoYi5ub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihlLngpLHkuY29weShiLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS55KSxDLmNvcHkoaFswXSkuYWRkKF8pLmFkZCh5KSxIKEMueCxDLnksQy56KSk6SChlLngsZS55LDApfWZvcihsZXQgdD0xO3Q8PXM7dCsrKWZvcihsZXQgZT0wO2U8UztlKyspe2NvbnN0IG49Yz9rKHhbZV0sTltlXSx6KTp4W2VdO00/KF8uY29weShiLm5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKG4ueCkseS5jb3B5KGIuYmlub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLnkpLEMuY29weShoW3RdKS5hZGQoXykuYWRkKHkpLEgoQy54LEMueSxDLnopKTpIKG4ueCxuLnksbC9zKnQpfWZvcihsZXQgdD11LTE7dD49MDt0LS0pe2NvbnN0IGU9dC91LG49ZCpNYXRoLmNvcyhlKk1hdGguUEkvMiksbz1wKk1hdGguc2luKGUqTWF0aC5QSS8yKSttO2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1rKHdbdF0sUlt0XSxvKTtIKGUueCxlLnksbCtuKX1mb3IobGV0IHQ9MCxlPU8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9T1t0XTtUPUFbdF07Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWsoZVt0XSxUW3RdLG8pO00/SChpLngsaS55K2hbcy0xXS55LGhbcy0xXS54K24pOkgoaS54LGkueSxsK24pfX19ZnVuY3Rpb24gSSh0LGUpe2xldCBuPXQubGVuZ3RoO2Zvcig7LS1uPj0wOyl7Y29uc3Qgbz1uO2xldCBpPW4tMTtpPDAmJihpPXQubGVuZ3RoLTEpO2ZvcihsZXQgdD0wLG49cysyKnU7dDxuO3QrKyl7Y29uc3Qgbj1TKnQsYT1TKih0KzEpO0woZStvK24sZStpK24sZStpK2EsZStvK2EpfX19ZnVuY3Rpb24gSCh0LGUsbil7YS5wdXNoKHQpLGEucHVzaChlKSxhLnB1c2gobil9ZnVuY3Rpb24gRih0LGUsaSl7Qih0KSxCKGUpLEIoaSk7Y29uc3QgYT1vLmxlbmd0aC8zLHI9Zy5nZW5lcmF0ZVRvcFVWKG4sbyxhLTMsYS0yLGEtMSk7VihyWzBdKSxWKHJbMV0pLFYoclsyXSl9ZnVuY3Rpb24gTCh0LGUsaSxhKXtCKHQpLEIoZSksQihhKSxCKGUpLEIoaSksQihhKTtjb25zdCByPW8ubGVuZ3RoLzMscz1nLmdlbmVyYXRlU2lkZVdhbGxVVihuLG8sci02LHItMyxyLTIsci0xKTtWKHNbMF0pLFYoc1sxXSksVihzWzNdKSxWKHNbMV0pLFYoc1syXSksVihzWzNdKX1mdW5jdGlvbiBCKHQpe28ucHVzaChhWzMqdCswXSksby5wdXNoKGFbMyp0KzFdKSxvLnB1c2goYVszKnQrMl0pfWZ1bmN0aW9uIFYodCl7aS5wdXNoKHQueCksaS5wdXNoKHQueSl9IShmdW5jdGlvbiBqKCl7Y29uc3QgdD1vLmxlbmd0aC8zO2lmKGMpe2xldCB0PTAsZT1TKnQ7Zm9yKGxldCB0PTA7dDxEO3QrKyl7Y29uc3Qgbj1QW3RdO0YoblsyXStlLG5bMV0rZSxuWzBdK2UpfXQ9cysyKnUsZT1TKnQ7Zm9yKGxldCB0PTA7dDxEO3QrKyl7Y29uc3Qgbj1QW3RdO0YoblswXStlLG5bMV0rZSxuWzJdK2UpfX1lbHNle2ZvcihsZXQgdD0wO3Q8RDt0Kyspe2NvbnN0IGU9UFt0XTtGKGVbMl0sZVsxXSxlWzBdKX1mb3IobGV0IHQ9MDt0PEQ7dCsrKXtjb25zdCBlPVBbdF07RihlWzBdK1MqcyxlWzFdK1MqcyxlWzJdK1Mqcyl9fW4uYWRkR3JvdXAodCxvLmxlbmd0aC8zLXQsMCl9KSgpLChmdW5jdGlvbiBVKCl7Y29uc3QgdD1vLmxlbmd0aC8zO2xldCBlPTA7SSh3LGUpLGUrPXcubGVuZ3RoO2ZvcihsZXQgdD0wLG49Ty5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1PW3RdO0kobixlKSxlKz1uLmxlbmd0aH1uLmFkZEdyb3VwKHQsby5sZW5ndGgvMy10LDEpfSkoKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGcnQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgRnJ0KGksMikpLHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbixvKXtpZihvLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylvLnNoYXBlcy5wdXNoKHRbZV0udXVpZCk7ZWxzZSBvLnNoYXBlcy5wdXNoKHQudXVpZCk7cmV0dXJuIHZvaWQgMCE9PW4uZXh0cnVkZVBhdGgmJihvLm9wdGlvbnMuZXh0cnVkZVBhdGg9bi5leHRydWRlUGF0aC50b0pTT04oKSksb30pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnMsdCl9c3RhdGljIGZyb21KU09OKHQsZSl7Y29uc3Qgbj1bXTtmb3IobGV0IG89MCxpPXQuc2hhcGVzLmxlbmd0aDtvPGk7bysrKW4ucHVzaChlW3Quc2hhcGVzW29dXSk7Y29uc3Qgbz10Lm9wdGlvbnMuZXh0cnVkZVBhdGg7cmV0dXJuIHZvaWQgMCE9PW8mJih0Lm9wdGlvbnMuZXh0cnVkZVBhdGg9KG5ldyBTcHRbby50eXBlXSkuZnJvbUpTT04obykpLG5ldyBubXQobix0Lm9wdGlvbnMpfX1jb25zdCBvbXQ9e2dlbmVyYXRlVG9wVVY6ZnVuY3Rpb24odCxlLG4sbyxpKXtjb25zdCBhPWVbMypvXSxyPWVbMypvKzFdLHM9ZVszKmldLGw9ZVszKmkrMV07cmV0dXJuW25ldyBRaXQoZVszKm5dLGVbMypuKzFdKSxuZXcgUWl0KGEsciksbmV3IFFpdChzLGwpXX0sZ2VuZXJhdGVTaWRlV2FsbFVWOmZ1bmN0aW9uKHQsZSxuLG8saSxhKXtjb25zdCByPWVbMypuXSxzPWVbMypuKzFdLGw9ZVszKm4rMl0sYz1lWzMqb10sZD1lWzMqbysxXSxwPWVbMypvKzJdLG09ZVszKmldLHU9ZVszKmkrMV0sZj1lWzMqaSsyXSxnPWVbMyphXSxoPWVbMyphKzFdLGI9ZVszKmErMl07cmV0dXJuIE1hdGguYWJzKHMtZCk8TWF0aC5hYnMoci1jKT9bbmV3IFFpdChyLDEtbCksbmV3IFFpdChjLDEtcCksbmV3IFFpdChtLDEtZiksbmV3IFFpdChnLDEtYildOltuZXcgUWl0KHMsMS1sKSxuZXcgUWl0KGQsMS1wKSxuZXcgUWl0KHUsMS1mKSxuZXcgUWl0KGgsMS1iKV19fTtjbGFzcyBpbXQgZXh0ZW5kcyBxcnR7Y29uc3RydWN0b3IodCxlPTEyKXtzdXBlcigpLHRoaXMudHlwZT0iU2hhcGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxjdXJ2ZVNlZ21lbnRzOmV9O2NvbnN0IG49W10sbz1bXSxpPVtdLGE9W107bGV0IHI9MCxzPTA7aWYoITE9PT1BcnJheS5pc0FycmF5KHQpKWwodCk7ZWxzZSBmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylsKHRbZV0pLHRoaXMuYWRkR3JvdXAocixzLGUpLHIrPXMscz0wO2Z1bmN0aW9uIGwodCl7Y29uc3Qgcj1vLmxlbmd0aC8zLGw9dC5leHRyYWN0UG9pbnRzKGUpO2xldCBjPWwuc2hhcGU7Y29uc3QgZD1sLmhvbGVzOyExPT09JHB0LmlzQ2xvY2tXaXNlKGMpJiYoYz1jLnJldmVyc2UoKSk7Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWRbdF07ITA9PT0kcHQuaXNDbG9ja1dpc2UoZSkmJihkW3RdPWUucmV2ZXJzZSgpKX1jb25zdCBwPSRwdC50cmlhbmd1bGF0ZVNoYXBlKGMsZCk7Zm9yKGxldCB0PTAsZT1kLmxlbmd0aDt0PGU7dCsrKWM9Yy5jb25jYXQoZFt0XSk7Zm9yKGxldCB0PTAsZT1jLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWNbdF07by5wdXNoKGUueCxlLnksMCksaS5wdXNoKDAsMCwxKSxhLnB1c2goZS54LGUueSl9Zm9yKGxldCB0PTAsZT1wLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXBbdF07bi5wdXNoKGVbMF0rcixlWzFdK3IsZVsyXStyKSxzKz0zfX10aGlzLnNldEluZGV4KG4pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEZydChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgRnJ0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEZydChhLDIpKX10b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobi5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspbi5zaGFwZXMucHVzaCh0W2VdLnV1aWQpO2Vsc2Ugbi5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiBufSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgbz0wLGk9dC5zaGFwZXMubGVuZ3RoO288aTtvKyspbi5wdXNoKGVbdC5zaGFwZXNbb11dKTtyZXR1cm4gbmV3IGltdChuLHQuY3VydmVTZWdtZW50cyl9fShjbGFzcyBleHRlbmRzIE9ydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFJydCgwKSx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXN9fSkucHJvdG90eXBlLmlzU2hhZG93TWF0ZXJpYWw9ITA7Y2xhc3MgYW10IGV4dGVuZHMgT3J0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgUnJ0KDE2Nzc3MjE1KSx0aGlzLnJvdWdobmVzcz0xLHRoaXMubWV0YWxuZXNzPTAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgUnJ0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IFFpdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMucm91Z2huZXNzTWFwPW51bGwsdGhpcy5tZXRhbG5lc3NNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmVudk1hcEludGVuc2l0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMucm91Z2huZXNzPXQucm91Z2huZXNzLHRoaXMubWV0YWxuZXNzPXQubWV0YWxuZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMucm91Z2huZXNzTWFwPXQucm91Z2huZXNzTWFwLHRoaXMubWV0YWxuZXNzTWFwPXQubWV0YWxuZXNzTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmVudk1hcEludGVuc2l0eT10LmVudk1hcEludGVuc2l0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319YW10LnByb3RvdHlwZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPSEwLGNsYXNzIGV4dGVuZHMgYW10e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXQ9MCx0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBRaXQoMSwxKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsLHRoaXMucmVmbGVjdGl2aXR5PS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMSsuNCp0aGlzLnJlZmxlY3Rpdml0eSkvKDEtLjQqdGhpcy5yZWZsZWN0aXZpdHkpfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aXZpdHk9Wml0KDIuNSoodC0xKS8odCsxKSwwLDEpfX0pLHRoaXMuc2hlZW49bnVsbCx0aGlzLnRyYW5zbWlzc2lvbj0wLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy50aGlja25lc3M9LjAxLHRoaXMudGhpY2tuZXNzTWFwPW51bGwsdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlPTAsdGhpcy5hdHRlbnVhdGlvblRpbnQ9bmV3IFJydCgxLDEsMSksdGhpcy5zcGVjdWxhckludGVuc2l0eT0xLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9bnVsbCx0aGlzLnNwZWN1bGFyVGludD1uZXcgUnJ0KDEsMSwxKSx0aGlzLnNwZWN1bGFyVGludE1hcD1udWxsLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMuc2hlZW49dC5zaGVlbj8odGhpcy5zaGVlbnx8bmV3IFJydCkuY29weSh0LnNoZWVuKTpudWxsLHRoaXMudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uLHRoaXMudHJhbnNtaXNzaW9uTWFwPXQudHJhbnNtaXNzaW9uTWFwLHRoaXMudGhpY2tuZXNzPXQudGhpY2tuZXNzLHRoaXMudGhpY2tuZXNzTWFwPXQudGhpY2tuZXNzTWFwLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UsdGhpcy5hdHRlbnVhdGlvblRpbnQuY29weSh0LmF0dGVudWF0aW9uVGludCksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyVGludC5jb3B5KHQuc3BlY3VsYXJUaW50KSx0aGlzLnNwZWN1bGFyVGludE1hcD10LnNwZWN1bGFyVGludE1hcCx0aGlzfX0ucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITAsY2xhc3MgZXh0ZW5kcyBPcnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBScnQoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3IFJydCgxMTE4NDgxKSx0aGlzLnNoaW5pbmVzcz0zMCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBScnQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgUWl0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5zcGVjdWxhci5jb3B5KHQuc3BlY3VsYXIpLHRoaXMuc2hpbmluZXNzPXQuc2hpbmluZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319LnByb3RvdHlwZS5pc01lc2hQaG9uZ01hdGVyaWFsPSEwLGNsYXNzIGV4dGVuZHMgT3J0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtUT09OOiIifSx0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IFJydCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IFJydCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBRaXQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5ncmFkaWVudE1hcD10LmdyYWRpZW50TWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX0ucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0hMCxjbGFzcyBleHRlbmRzIE9ydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaE5vcm1hbE1hdGVyaWFsIix0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgUWl0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319LnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMCxjbGFzcyBleHRlbmRzIE9ydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgUnJ0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBScnQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJNYXA9dC5zcGVjdWxhck1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5jb21iaW5lPXQuY29tYmluZSx0aGlzLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX0ucHJvdG90eXBlLmlzTWVzaExhbWJlcnRNYXRlcmlhbD0hMCxjbGFzcyBleHRlbmRzIE9ydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLnR5cGU9Ik1lc2hNYXRjYXBNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgUnJ0KDE2Nzc3MjE1KSx0aGlzLm1hdGNhcD1udWxsLHRoaXMubWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IFFpdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319LnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMCxjbGFzcyBleHRlbmRzIHFkdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zY2FsZT10LnNjYWxlLHRoaXMuZGFzaFNpemU9dC5kYXNoU2l6ZSx0aGlzLmdhcFNpemU9dC5nYXBTaXplLHRoaXN9fS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7Y29uc3Qgcm10PXthcnJheVNsaWNlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gcm10LmlzVHlwZWRBcnJheSh0KT9uZXcgdC5jb25zdHJ1Y3Rvcih0LnN1YmFycmF5KGUsdm9pZCAwIT09bj9uOnQubGVuZ3RoKSk6dC5zbGljZShlLG4pfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiF0fHwhbiYmdC5jb25zdHJ1Y3Rvcj09PWU/dDoibnVtYmVyIj09dHlwZW9mIGUuQllURVNfUEVSX0VMRU1FTlQ/bmV3IGUodCk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCl9LGlzVHlwZWRBcnJheTpmdW5jdGlvbih0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGdldEtleWZyYW1lT3JkZXI6ZnVuY3Rpb24odCl7Y29uc3QgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0IT09ZTsrK3Qpblt0XT10O3JldHVybiBuLnNvcnQoKGZ1bmN0aW9uIG8oZSxuKXtyZXR1cm4gdFtlXS10W25dfSkpLG59LHNvcnRlZEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtjb25zdCBvPXQubGVuZ3RoLGk9bmV3IHQuY29uc3RydWN0b3Iobyk7Zm9yKGxldCBhPTAscj0wO3IhPT1vOysrYSl7Y29uc3Qgbz1uW2FdKmU7Zm9yKGxldCBuPTA7biE9PWU7KytuKWlbcisrXT10W28rbl19cmV0dXJuIGl9LGZsYXR0ZW5KU09OOmZ1bmN0aW9uKHQsZSxuLG8pe2xldCBpPTEsYT10WzBdO2Zvcig7dm9pZCAwIT09YSYmdm9pZCAwPT09YVtvXTspYT10W2krK107aWYodm9pZCAwPT09YSlyZXR1cm47bGV0IHI9YVtvXTtpZih2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkocikpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2guYXBwbHkobixyKSksYT10W2krK119d2hpbGUodm9pZCAwIT09YSk7ZWxzZSBpZih2b2lkIDAhPT1yLnRvQXJyYXkpZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxyLnRvQXJyYXkobixuLmxlbmd0aCkpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpO2Vsc2UgZG97cj1hW29dLHZvaWQgMCE9PXImJihlLnB1c2goYS50aW1lKSxuLnB1c2gocikpLGE9dFtpKytdfXdoaWxlKHZvaWQgMCE9PWEpfSxzdWJjbGlwOmZ1bmN0aW9uKHQsZSxuLG8saT0zMCl7Y29uc3QgYT10LmNsb25lKCk7YS5uYW1lPWU7Y29uc3Qgcj1bXTtmb3IobGV0IHQ9MDt0PGEudHJhY2tzLmxlbmd0aDsrK3Qpe2NvbnN0IGU9YS50cmFja3NbdF0scz1lLmdldFZhbHVlU2l6ZSgpLGw9W10sYz1bXTtmb3IobGV0IHQ9MDt0PGUudGltZXMubGVuZ3RoOysrdCl7Y29uc3QgYT1lLnRpbWVzW3RdKmk7aWYoIShhPG58fGE+PW8pKXtsLnB1c2goZS50aW1lc1t0XSk7Zm9yKGxldCBuPTA7bjxzOysrbiljLnB1c2goZS52YWx1ZXNbdCpzK25dKX19MCE9PWwubGVuZ3RoJiYoZS50aW1lcz1ybXQuY29udmVydEFycmF5KGwsZS50aW1lcy5jb25zdHJ1Y3RvciksZS52YWx1ZXM9cm10LmNvbnZlcnRBcnJheShjLGUudmFsdWVzLmNvbnN0cnVjdG9yKSxyLnB1c2goZSkpfWEudHJhY2tzPXI7bGV0IHM9MS8wO2ZvcihsZXQgdD0wO3Q8YS50cmFja3MubGVuZ3RoOysrdClzPmEudHJhY2tzW3RdLnRpbWVzWzBdJiYocz1hLnRyYWNrc1t0XS50aW1lc1swXSk7Zm9yKGxldCB0PTA7dDxhLnRyYWNrcy5sZW5ndGg7Kyt0KWEudHJhY2tzW3RdLnNoaWZ0KC0xKnMpO3JldHVybiBhLnJlc2V0RHVyYXRpb24oKSxhfSxtYWtlQ2xpcEFkZGl0aXZlOmZ1bmN0aW9uKHQsZT0wLG49dCxvPTMwKXtvPD0wJiYobz0zMCk7Y29uc3QgaT1uLnRyYWNrcy5sZW5ndGgsYT1lL287Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3Qgbz1uLnRyYWNrc1tlXSxpPW8uVmFsdWVUeXBlTmFtZTtpZigiYm9vbCI9PT1pfHwic3RyaW5nIj09PWkpY29udGludWU7Y29uc3Qgcj10LnRyYWNrcy5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09by5uYW1lJiZ0LlZhbHVlVHlwZU5hbWU9PT1pfSkpO2lmKHZvaWQgMD09PXIpY29udGludWU7bGV0IHM9MDtjb25zdCBsPW8uZ2V0VmFsdWVTaXplKCk7by5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKHM9bC8zKTtsZXQgYz0wO2NvbnN0IGQ9ci5nZXRWYWx1ZVNpemUoKTtyLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYoYz1kLzMpO2NvbnN0IHA9by50aW1lcy5sZW5ndGgtMTtsZXQgbTtpZihhPD1vLnRpbWVzWzBdKW09cm10LmFycmF5U2xpY2Uoby52YWx1ZXMscyxsLXMpO2Vsc2UgaWYoYT49by50aW1lc1twXSl7Y29uc3QgdD1wKmwrczttPXJtdC5hcnJheVNsaWNlKG8udmFsdWVzLHQsdCtsLXMpfWVsc2V7Y29uc3QgdD1vLmNyZWF0ZUludGVycG9sYW50KCksZT1zLG49bC1zO3QuZXZhbHVhdGUoYSksbT1ybXQuYXJyYXlTbGljZSh0LnJlc3VsdEJ1ZmZlcixlLG4pfSJxdWF0ZXJuaW9uIj09PWkmJihuZXcgbGF0KS5mcm9tQXJyYXkobSkubm9ybWFsaXplKCkuY29uanVnYXRlKCkudG9BcnJheShtKTtjb25zdCB1PXIudGltZXMubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8dTsrK3Qpe2NvbnN0IGU9dCpkK2M7aWYoInF1YXRlcm5pb24iPT09aSlsYXQubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoci52YWx1ZXMsZSxtLDAsci52YWx1ZXMsZSk7ZWxzZXtjb25zdCB0PWQtMipjO2ZvcihsZXQgbj0wO248dDsrK24pci52YWx1ZXNbZStuXS09bVtuXX19fXJldHVybiB0LmJsZW5kTW9kZT0yNTAxLHR9fTtjbGFzcyBzbXR7Y29uc3RydWN0b3IodCxlLG4sbyl7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9dCx0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMucmVzdWx0QnVmZmVyPXZvaWQgMCE9PW8/bzpuZXcgZS5jb25zdHJ1Y3RvcihuKSx0aGlzLnNhbXBsZVZhbHVlcz1lLHRoaXMudmFsdWVTaXplPW4sdGhpcy5zZXR0aW5ncz1udWxsLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17fX1ldmFsdWF0ZSh0KXtjb25zdCBlPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCBuPXRoaXMuX2NhY2hlZEluZGV4LG89ZVtuXSxpPWVbbi0xXTt0OntlOntsZXQgYTtuOntvOmlmKCEodDxvKSl7Zm9yKGxldCBhPW4rMjs7KXtpZih2b2lkIDA9PT1vKXtpZih0PGkpYnJlYWsgbztyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSx0LGkpfWlmKG49PT1hKWJyZWFrO2lmKGk9byxvPWVbKytuXSx0PG8pYnJlYWsgZX1hPWUubGVuZ3RoO2JyZWFrIG59aWYodD49aSlicmVhayB0O3tjb25zdCByPWVbMV07dDxyJiYobj0yLGk9cik7Zm9yKGxldCBhPW4tMjs7KXtpZih2b2lkIDA9PT1pKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxvKTtpZihuPT09YSlicmVhaztpZihvPWksaT1lWy0tbi0xXSx0Pj1pKWJyZWFrIGV9YT1uLG49MH19Zm9yKDtuPGE7KXtjb25zdCBvPW4rYT4+PjE7dDxlW29dP2E9bzpuPW8rMX1pZihvPWVbbl0saT1lW24tMV0sdm9pZCAwPT09aSlyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsbyk7aWYodm9pZCAwPT09bylyZXR1cm4gbj1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuYWZ0ZXJFbmRfKG4tMSxpLHQpfXRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5pbnRlcnZhbENoYW5nZWRfKG4saSxvKX1yZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZV8obixpLHQsbyl9Z2V0U2V0dGluZ3NfKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N8fHRoaXMuRGVmYXVsdFNldHRpbmdzX31jb3B5U2FtcGxlVmFsdWVfKHQpe2NvbnN0IGU9dGhpcy5yZXN1bHRCdWZmZXIsbj10aGlzLnNhbXBsZVZhbHVlcyxvPXRoaXMudmFsdWVTaXplLGk9dCpvO2ZvcihsZXQgdD0wO3QhPT1vOysrdCllW3RdPW5baSt0XTtyZXR1cm4gZX1pbnRlcnBvbGF0ZV8oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9aW50ZXJ2YWxDaGFuZ2VkXygpe319c210LnByb3RvdHlwZS5iZWZvcmVTdGFydF89c210LnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLHNtdC5wcm90b3R5cGUuYWZ0ZXJFbmRfPXNtdC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXztjbGFzcyBsbXQgZXh0ZW5kcyBzbXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyksdGhpcy5fd2VpZ2h0UHJldj0tMCx0aGlzLl9vZmZzZXRQcmV2PS0wLHRoaXMuX3dlaWdodE5leHQ9LTAsdGhpcy5fb2Zmc2V0TmV4dD0tMCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e2VuZGluZ1N0YXJ0OkFpdCxlbmRpbmdFbmQ6QWl0fX1pbnRlcnZhbENoYW5nZWRfKHQsZSxuKXtjb25zdCBvPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zO2xldCBpPXQtMixhPXQrMSxyPW9baV0scz1vW2FdO2lmKHZvaWQgMD09PXIpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nU3RhcnQpe2Nhc2UgVGl0Omk9dCxyPTIqZS1uO2JyZWFrO2Nhc2UgTml0Omk9by5sZW5ndGgtMixyPWUrb1tpXS1vW2krMV07YnJlYWs7ZGVmYXVsdDppPXQscj1ufWlmKHZvaWQgMD09PXMpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nRW5kKXtjYXNlIFRpdDphPXQscz0yKm4tZTticmVhaztjYXNlIE5pdDphPTEscz1uK29bMV0tb1swXTticmVhaztkZWZhdWx0OmE9dC0xLHM9ZX1jb25zdCBsPS41KihuLWUpLGM9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1sLyhlLXIpLHRoaXMuX3dlaWdodE5leHQ9bC8ocy1uKSx0aGlzLl9vZmZzZXRQcmV2PWkqYyx0aGlzLl9vZmZzZXROZXh0PWEqY31pbnRlcnBvbGF0ZV8odCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlc3VsdEJ1ZmZlcixhPXRoaXMuc2FtcGxlVmFsdWVzLHI9dGhpcy52YWx1ZVNpemUscz10KnIsbD1zLXIsYz10aGlzLl9vZmZzZXRQcmV2LGQ9dGhpcy5fb2Zmc2V0TmV4dCxwPXRoaXMuX3dlaWdodFByZXYsbT10aGlzLl93ZWlnaHROZXh0LHU9KG4tZSkvKG8tZSksZj11KnUsZz1mKnUsaD0tcCpnKzIqcCpmLXAqdSxiPSgxK3ApKmcrKC0xLjUtMipwKSpmKygtLjUrcCkqdSsxLHk9KC0xLW0pKmcrKDEuNSttKSpmKy41KnUsXz1tKmctbSpmO2ZvcihsZXQgdD0wO3QhPT1yOysrdClpW3RdPWgqYVtjK3RdK2IqYVtsK3RdK3kqYVtzK3RdK18qYVtkK3RdO3JldHVybiBpfX1jbGFzcyBjbXQgZXh0ZW5kcyBzbXR7Y29uc3RydWN0b3IodCxlLG4sbyl7c3VwZXIodCxlLG4sbyl9aW50ZXJwb2xhdGVfKHQsZSxuLG8pe2NvbnN0IGk9dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxyPXRoaXMudmFsdWVTaXplLHM9dCpyLGw9cy1yLGM9KG4tZSkvKG8tZSksZD0xLWM7Zm9yKGxldCB0PTA7dCE9PXI7Kyt0KWlbdF09YVtsK3RdKmQrYVtzK3RdKmM7cmV0dXJuIGl9fWNsYXNzIGRtdCBleHRlbmRzIHNtdHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX1pbnRlcnBvbGF0ZV8odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX1jbGFzcyBwbXR7Y29uc3RydWN0b3IodCxlLG4sbyl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYodm9pZCAwPT09ZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz1ybXQuY29udmVydEFycmF5KGUsdGhpcy5UaW1lQnVmZmVyVHlwZSksdGhpcy52YWx1ZXM9cm10LmNvbnZlcnRBcnJheShuLHRoaXMuVmFsdWVCdWZmZXJUeXBlKSx0aGlzLnNldEludGVycG9sYXRpb24ob3x8dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9c3RhdGljIHRvSlNPTih0KXtjb25zdCBlPXQuY29uc3RydWN0b3I7bGV0IG47aWYoZS50b0pTT04hPT10aGlzLnRvSlNPTiluPWUudG9KU09OKHQpO2Vsc2V7bj17bmFtZTp0Lm5hbWUsdGltZXM6cm10LmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6cm10LmNvbnZlcnRBcnJheSh0LnZhbHVlcyxBcnJheSl9O2NvbnN0IGU9dC5nZXRJbnRlcnBvbGF0aW9uKCk7ZSE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihuLmludGVycG9sYXRpb249ZSl9cmV0dXJuIG4udHlwZT10LlZhbHVlVHlwZU5hbWUsbn1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZSh0KXtyZXR1cm4gbmV3IGRtdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgY210KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGgodCl7cmV0dXJuIG5ldyBsbXQodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfXNldEludGVycG9sYXRpb24odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgRGl0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTticmVhaztjYXNlIEVpdDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyO2JyZWFrO2Nhc2UgUml0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09ZSl7Y29uc3QgZT0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KXtpZih0PT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aHJvdyBuZXcgRXJyb3IoZSk7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixlKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PWUsdGhpc31nZXRJbnRlcnBvbGF0aW9uKCl7c3dpdGNoKHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpyZXR1cm4gRGl0O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIEVpdDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnJldHVybiBSaXR9fWdldFZhbHVlU2l6ZSgpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9c2hpZnQodCl7aWYoMCE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxvPWUubGVuZ3RoO24hPT1vOysrbillW25dKz10fXJldHVybiB0aGlzfXNjYWxlKHQpe2lmKDEhPT10KXtjb25zdCBlPXRoaXMudGltZXM7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuIT09bzsrK24pZVtuXSo9dH1yZXR1cm4gdGhpc310cmltKHQsZSl7Y29uc3Qgbj10aGlzLnRpbWVzLG89bi5sZW5ndGg7bGV0IGk9MCxhPW8tMTtmb3IoO2khPT1vJiZuW2ldPHQ7KSsraTtmb3IoOy0xIT09YSYmblthXT5lOyktLWE7aWYoKythLDAhPT1pfHxhIT09byl7aT49YSYmKGE9TWF0aC5tYXgoYSwxKSxpPWEtMSk7Y29uc3QgdD10aGlzLmdldFZhbHVlU2l6ZSgpO3RoaXMudGltZXM9cm10LmFycmF5U2xpY2UobixpLGEpLHRoaXMudmFsdWVzPXJtdC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLGkqdCxhKnQpfXJldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITA7Y29uc3QgZT10aGlzLmdldFZhbHVlU2l6ZSgpO2UtTWF0aC5mbG9vcihlKSE9MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLHQ9ITEpO2NvbnN0IG49dGhpcy50aW1lcyxvPXRoaXMudmFsdWVzLGk9bi5sZW5ndGg7MD09PWkmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCBhPW51bGw7Zm9yKGxldCBlPTA7ZSE9PWk7ZSsrKXtjb25zdCBvPW5bZV07aWYoIm51bWJlciI9PXR5cGVvZiBvJiZpc05hTihvKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsbyksdD0hMTticmVha31pZihudWxsIT09YSYmYT5vKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMsZSxvLGEpLHQ9ITE7YnJlYWt9YT1vfWlmKHZvaWQgMCE9PW8mJnJtdC5pc1R5cGVkQXJyYXkobykpZm9yKGxldCBlPTAsbj1vLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49b1tlXTtpZihpc05hTihuKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG4pLHQ9ITE7YnJlYWt9fXJldHVybiB0fW9wdGltaXplKCl7Y29uc3QgdD1ybXQuYXJyYXlTbGljZSh0aGlzLnRpbWVzKSxlPXJtdC5hcnJheVNsaWNlKHRoaXMudmFsdWVzKSxuPXRoaXMuZ2V0VmFsdWVTaXplKCksbz10aGlzLmdldEludGVycG9sYXRpb24oKT09PVJpdCxpPXQubGVuZ3RoLTE7bGV0IGE9MTtmb3IobGV0IHI9MTtyPGk7KytyKXtsZXQgaT0hMTtjb25zdCBzPXRbcl07aWYocyE9PXRbcisxXSYmKDEhPT1yfHxzIT09dFswXSkpaWYobylpPSEwO2Vsc2V7Y29uc3QgdD1yKm4sbz10LW4sYT10K247Zm9yKGxldCByPTA7ciE9PW47KytyKXtjb25zdCBuPWVbdCtyXTtpZihuIT09ZVtvK3JdfHxuIT09ZVthK3JdKXtpPSEwO2JyZWFrfX19aWYoaSl7aWYociE9PWEpe3RbYV09dFtyXTtjb25zdCBvPXIqbixpPWEqbjtmb3IobGV0IHQ9MDt0IT09bjsrK3QpZVtpK3RdPWVbbyt0XX0rK2F9fWlmKGk+MCl7dFthXT10W2ldO2ZvcihsZXQgdD1pKm4sbz1hKm4scj0wO3IhPT1uOysrcillW28rcl09ZVt0K3JdOysrYX1yZXR1cm4gYSE9PXQubGVuZ3RoPyh0aGlzLnRpbWVzPXJtdC5hcnJheVNsaWNlKHQsMCxhKSx0aGlzLnZhbHVlcz1ybXQuYXJyYXlTbGljZShlLDAsYSpuKSk6KHRoaXMudGltZXM9dCx0aGlzLnZhbHVlcz1lKSx0aGlzfWNsb25lKCl7Y29uc3QgdD1ybXQuYXJyYXlTbGljZSh0aGlzLnRpbWVzLDApLGU9cm10LmFycmF5U2xpY2UodGhpcy52YWx1ZXMsMCksbj1uZXcoMCx0aGlzLmNvbnN0cnVjdG9yKSh0aGlzLm5hbWUsdCxlKTtyZXR1cm4gbi5jcmVhdGVJbnRlcnBvbGFudD10aGlzLmNyZWF0ZUludGVycG9sYW50LG59fXBtdC5wcm90b3R5cGUuVGltZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5LHBtdC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUZsb2F0MzJBcnJheSxwbXQucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUVpdDtjbGFzcyBtbXQgZXh0ZW5kcyBwbXR7fW1tdC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iYm9vbCIsbW10LnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXksbW10LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1EaXQsbW10LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwLG1tdC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDtjbGFzcyB1bXQgZXh0ZW5kcyBwbXR7fXVtdC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0iY29sb3IiO2NsYXNzIGZtdCBleHRlbmRzIHBtdHt9Zm10LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJudW1iZXIiO2NsYXNzIGdtdCBleHRlbmRzIHNtdHtjb25zdHJ1Y3Rvcih0LGUsbixvKXtzdXBlcih0LGUsbixvKX1pbnRlcnBvbGF0ZV8odCxlLG4sbyl7Y29uc3QgaT10aGlzLnJlc3VsdEJ1ZmZlcixhPXRoaXMuc2FtcGxlVmFsdWVzLHI9dGhpcy52YWx1ZVNpemUscz0obi1lKS8oby1lKTtsZXQgbD10KnI7Zm9yKGxldCB0PWwrcjtsIT09dDtsKz00KWxhdC5zbGVycEZsYXQoaSwwLGEsbC1yLGEsbCxzKTtyZXR1cm4gaX19Y2xhc3MgaG10IGV4dGVuZHMgcG10e0ludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IGdtdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9fWhtdC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0icXVhdGVybmlvbiIsaG10LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1FaXQsaG10LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO2NsYXNzIGJtdCBleHRlbmRzIHBtdHt9Ym10LnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJzdHJpbmciLGJtdC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5LGJtdC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249RGl0LGJtdC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMCxibXQucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7Y2xhc3MgeW10IGV4dGVuZHMgcG10e315bXQucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InZlY3RvciI7Y2xhc3MgX210e2NvbnN0cnVjdG9yKHQsZT0tMSxuLG89MjUwMCl7dGhpcy5uYW1lPXQsdGhpcy50cmFja3M9bix0aGlzLmR1cmF0aW9uPWUsdGhpcy5ibGVuZE1vZGU9byx0aGlzLnV1aWQ9cWl0KCksdGhpcy5kdXJhdGlvbjwwJiZ0aGlzLnJlc2V0RHVyYXRpb24oKX1zdGF0aWMgcGFyc2UodCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLG89MS8odC5mcHN8fDEpO2ZvcihsZXQgdD0wLGk9bi5sZW5ndGg7dCE9PWk7Kyt0KWUucHVzaChDbXQoblt0XSkuc2NhbGUobykpO2NvbnN0IGk9bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24sZSx0LmJsZW5kTW9kZSk7cmV0dXJuIGkudXVpZD10LnV1aWQsaX1zdGF0aWMgdG9KU09OKHQpe2NvbnN0IGU9W10sbj10LnRyYWNrcyxvPXtuYW1lOnQubmFtZSxkdXJhdGlvbjp0LmR1cmF0aW9uLHRyYWNrczplLHV1aWQ6dC51dWlkLGJsZW5kTW9kZTp0LmJsZW5kTW9kZX07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0IT09bzsrK3QpZS5wdXNoKHBtdC50b0pTT04oblt0XSkpO3JldHVybiBvfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGUsbixvKXtjb25zdCBpPWUubGVuZ3RoLGE9W107Zm9yKGxldCB0PTA7dDxpO3QrKyl7bGV0IHI9W10scz1bXTtyLnB1c2goKHQraS0xKSVpLHQsKHQrMSklaSkscy5wdXNoKDAsMSwwKTtjb25zdCBsPXJtdC5nZXRLZXlmcmFtZU9yZGVyKHIpO3I9cm10LnNvcnRlZEFycmF5KHIsMSxsKSxzPXJtdC5zb3J0ZWRBcnJheShzLDEsbCksb3x8MCE9PXJbMF18fChyLnB1c2goaSkscy5wdXNoKHNbMF0pKSxhLnB1c2gobmV3IGZtdCgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1siK2VbdF0ubmFtZSsiXSIscixzKS5zY2FsZSgxL24pKX1yZXR1cm4gbmV3IHRoaXModCwtMSxhKX1zdGF0aWMgZmluZEJ5TmFtZSh0LGUpe2xldCBuPXQ7aWYoIUFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9dDtuPWUuZ2VvbWV0cnkmJmUuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8ZS5hbmltYXRpb25zfWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKWlmKG5bdF0ubmFtZT09PWUpcmV0dXJuIG5bdF07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQsZSxuKXtjb25zdCBvPXt9LGk9L14oW1x3LV0qPykoW1xkXSspJC87Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0sYT1uLm5hbWUubWF0Y2goaSk7aWYoYSYmYS5sZW5ndGg+MSl7Y29uc3QgdD1hWzFdO2xldCBlPW9bdF07ZXx8KG9bdF09ZT1bXSksZS5wdXNoKG4pfX1jb25zdCBhPVtdO2Zvcihjb25zdCB0IGluIG8pYS5wdXNoKHRoaXMuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxvW3RdLGUsbikpO3JldHVybiBhfXN0YXRpYyBwYXJzZUFuaW1hdGlvbih0LGUpe2lmKCF0KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLiIpLG51bGw7Y29uc3Qgbj1mdW5jdGlvbih0LGUsbixvLGkpe2lmKDAhPT1uLmxlbmd0aCl7Y29uc3QgYT1bXSxyPVtdO3JtdC5mbGF0dGVuSlNPTihuLGEscixvKSwwIT09YS5sZW5ndGgmJmkucHVzaChuZXcgdChlLGEscikpfX0sbz1bXSxpPXQubmFtZXx8ImRlZmF1bHQiLGE9dC5mcHN8fDMwLHI9dC5ibGVuZE1vZGU7bGV0IHM9dC5sZW5ndGh8fC0xO2NvbnN0IGw9dC5oaWVyYXJjaHl8fFtdO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtjb25zdCBpPWxbdF0ua2V5cztpZihpJiYwIT09aS5sZW5ndGgpaWYoaVswXS5tb3JwaFRhcmdldHMpe2NvbnN0IHQ9e307bGV0IGU7Zm9yKGU9MDtlPGkubGVuZ3RoO2UrKylpZihpW2VdLm1vcnBoVGFyZ2V0cylmb3IobGV0IG49MDtuPGlbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDtuKyspdFtpW2VdLm1vcnBoVGFyZ2V0c1tuXV09LTE7Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgdD1bXSxhPVtdO2ZvcihsZXQgbz0wO28hPT1pW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7KytvKXtjb25zdCBvPWlbZV07dC5wdXNoKG8udGltZSksYS5wdXNoKG8ubW9ycGhUYXJnZXQ9PT1uPzE6MCl9by5wdXNoKG5ldyBmbXQoIi5tb3JwaFRhcmdldEluZmx1ZW5jZVsiK24rIl0iLHQsYSkpfXM9dC5sZW5ndGgqKGF8fDEpfWVsc2V7Y29uc3QgYT0iLmJvbmVzWyIrZVt0XS5uYW1lKyJdIjtuKHltdCxhKyIucG9zaXRpb24iLGksInBvcyIsbyksbihobXQsYSsiLnF1YXRlcm5pb24iLGksInJvdCIsbyksbih5bXQsYSsiLnNjYWxlIixpLCJzY2wiLG8pfX1yZXR1cm4gMD09PW8ubGVuZ3RoP251bGw6bmV3IHRoaXMoaSxzLG8scil9cmVzZXREdXJhdGlvbigpe2xldCB0PTA7Zm9yKGxldCBlPTAsbj10aGlzLnRyYWNrcy5sZW5ndGg7ZSE9PW47KytlKXtjb25zdCBuPXRoaXMudHJhY2tzW2VdO3Q9TWF0aC5tYXgodCxuLnRpbWVzW24udGltZXMubGVuZ3RoLTFdKX1yZXR1cm4gdGhpcy5kdXJhdGlvbj10LHRoaXN9dHJpbSgpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9dmFsaWRhdGUoKXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdD10JiZ0aGlzLnRyYWNrc1tlXS52YWxpZGF0ZSgpO3JldHVybiB0fW9wdGltaXplKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLm9wdGltaXplKCk7cmV0dXJuIHRoaXN9Y2xvbmUoKXtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19ZnVuY3Rpb24gQ210KHQpe2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBmbXQ7Y2FzZSJ2ZWN0b3IiOmNhc2UidmVjdG9yMiI6Y2FzZSJ2ZWN0b3IzIjpjYXNlInZlY3RvcjQiOnJldHVybiB5bXQ7Y2FzZSJjb2xvciI6cmV0dXJuIHVtdDtjYXNlInF1YXRlcm5pb24iOnJldHVybiBobXQ7Y2FzZSJib29sIjpjYXNlImJvb2xlYW4iOnJldHVybiBtbXQ7Y2FzZSJzdHJpbmciOnJldHVybiBibXR9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIit0KX0pKHQudHlwZSk7aWYodm9pZCAwPT09dC50aW1lcyl7Y29uc3QgZT1bXSxuPVtdO3JtdC5mbGF0dGVuSlNPTih0LmtleXMsZSxuLCJ2YWx1ZSIpLHQudGltZXM9ZSx0LnZhbHVlcz1ufXJldHVybiB2b2lkIDAhPT1lLnBhcnNlP2UucGFyc2UodCk6bmV3IGUodC5uYW1lLHQudGltZXMsdC52YWx1ZXMsdC5pbnRlcnBvbGF0aW9uKX1jb25zdCBNbXQ9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKHQsZSl7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW3RdPWUpfSxnZXQ6ZnVuY3Rpb24odCl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbdF19LHJlbW92ZTpmdW5jdGlvbih0KXtkZWxldGUgdGhpcy5maWxlc1t0XX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPXt9fX0sdm10PW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbil7Y29uc3Qgbz10aGlzO2xldCBpLGE9ITEscj0wLHM9MDtjb25zdCBsPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9ZSx0aGlzLm9uRXJyb3I9bix0aGlzLml0ZW1TdGFydD1mdW5jdGlvbih0KXtzKyssITE9PT1hJiZ2b2lkIDAhPT1vLm9uU3RhcnQmJm8ub25TdGFydCh0LHIscyksYT0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKHQpe3IrKyx2b2lkIDAhPT1vLm9uUHJvZ3Jlc3MmJm8ub25Qcm9ncmVzcyh0LHIscykscj09PXMmJihhPSExLHZvaWQgMCE9PW8ub25Mb2FkJiZvLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24odCl7dm9pZCAwIT09by5vbkVycm9yJiZvLm9uRXJyb3IodCl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbih0KXtyZXR1cm4gaT9pKHQpOnR9LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGk9dCx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbC5wdXNoKHQsZSksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKHQpe2NvbnN0IGU9bC5pbmRleE9mKHQpO3JldHVybi0xIT09ZSYmbC5zcGxpY2UoZSwyKSx0aGlzfSx0aGlzLmdldEhhbmRsZXI9ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTAsbj1sLmxlbmd0aDtlPG47ZSs9Mil7Y29uc3Qgbj1sW2VdLG89bFtlKzFdO2lmKG4uZ2xvYmFsJiYobi5sYXN0SW5kZXg9MCksbi50ZXN0KHQpKXJldHVybiBvfXJldHVybiBudWxsfX19O2NsYXNzIHhtdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLm1hbmFnZXI9dm9pZCAwIT09dD90OnZtdCx0aGlzLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucGF0aD0iIix0aGlzLnJlc291cmNlUGF0aD0iIix0aGlzLnJlcXVlc3RIZWFkZXI9e319bG9hZCgpe31sb2FkQXN5bmModCxlKXtjb25zdCBuPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGkpe24ubG9hZCh0LG8sZSxpKX0pKX1wYXJzZSgpe31zZXRDcm9zc09yaWdpbih0KXtyZXR1cm4gdGhpcy5jcm9zc09yaWdpbj10LHRoaXN9c2V0V2l0aENyZWRlbnRpYWxzKHQpe3JldHVybiB0aGlzLndpdGhDcmVkZW50aWFscz10LHRoaXN9c2V0UGF0aCh0KXtyZXR1cm4gdGhpcy5wYXRoPXQsdGhpc31zZXRSZXNvdXJjZVBhdGgodCl7cmV0dXJuIHRoaXMucmVzb3VyY2VQYXRoPXQsdGhpc31zZXRSZXF1ZXN0SGVhZGVyKHQpe3JldHVybiB0aGlzLnJlcXVlc3RIZWFkZXI9dCx0aGlzfX1jb25zdCBPbXQ9e307Y2xhc3MgUG10IGV4dGVuZHMgeG10e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3QgaT10aGlzLGE9TW10LmdldCh0KTtpZih2b2lkIDAhPT1hKXJldHVybiBpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShhKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLGE7aWYodm9pZCAwIT09T210W3RdKXJldHVybiB2b2lkIE9tdFt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOm4sb25FcnJvcjpvfSk7Y29uc3Qgcj10Lm1hdGNoKC9eZGF0YTooLio/KSg7YmFzZTY0KT8sKC4qKSQvKTtsZXQgcztpZihyKXtjb25zdCBuPXJbMV0sYT0hIXJbMl07bGV0IHM9clszXTtzPWRlY29kZVVSSUNvbXBvbmVudChzKSxhJiYocz1hdG9iKHMpKTt0cnl7bGV0IG87Y29uc3QgYT0odGhpcy5yZXNwb25zZVR5cGV8fCIiKS50b0xvd2VyQ2FzZSgpO3N3aXRjaChhKXtjYXNlImFycmF5YnVmZmVyIjpjYXNlImJsb2IiOmNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkocy5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXRbZV09cy5jaGFyQ29kZUF0KGUpO289ImJsb2IiPT09YT9uZXcgQmxvYihbdC5idWZmZXJdLHt0eXBlOm59KTp0LmJ1ZmZlcjticmVhaztjYXNlImRvY3VtZW50Ijpjb25zdCBlPW5ldyBET01QYXJzZXI7bz1lLnBhcnNlRnJvbVN0cmluZyhzLG4pO2JyZWFrO2Nhc2UianNvbiI6bz1KU09OLnBhcnNlKHMpO2JyZWFrO2RlZmF1bHQ6bz1zfXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShvKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApfWNhdGNoKGUpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7byYmbyhlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfSksMCl9fWVsc2V7T210W3RdPVtdLE9tdFt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOm4sb25FcnJvcjpvfSkscz1uZXcgWE1MSHR0cFJlcXVlc3Qscy5vcGVuKCJHRVQiLHQsITApLHMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49dGhpcy5yZXNwb25zZSxvPU9tdFt0XTtpZihkZWxldGUgT210W3RdLDIwMD09PXRoaXMuc3RhdHVzfHwwPT09dGhpcy5zdGF0dXMpezA9PT10aGlzLnN0YXR1cyYmY29uc29sZS53YXJuKCJUSFJFRS5GaWxlTG9hZGVyOiBIVFRQIFN0YXR1cyAwIHJlY2VpdmVkLiIpLE1tdC5hZGQodCxuKTtmb3IobGV0IHQ9MCxlPW8ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9b1t0XTtlLm9uTG9hZCYmZS5vbkxvYWQobil9aS5tYW5hZ2VyLml0ZW1FbmQodCl9ZWxzZXtmb3IobGV0IHQ9MCxuPW8ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49b1t0XTtuLm9uRXJyb3ImJm4ub25FcnJvcihlKX1pLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1PbXRbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPW5bdF07by5vblByb2dyZXNzJiZvLm9uUHJvZ3Jlc3MoZSl9fSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLChmdW5jdGlvbihlKXtjb25zdCBuPU9tdFt0XTtkZWxldGUgT210W3RdO2ZvcihsZXQgdD0wLG89bi5sZW5ndGg7dDxvO3QrKyl7Y29uc3Qgbz1uW3RdO28ub25FcnJvciYmby5vbkVycm9yKGUpfWkubWFuYWdlci5pdGVtRXJyb3IodCksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49T210W3RdO2RlbGV0ZSBPbXRbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPW5bdF07by5vbkVycm9yJiZvLm9uRXJyb3IoZSl9aS5tYW5hZ2VyLml0ZW1FcnJvcih0KSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLCExKSx2b2lkIDAhPT10aGlzLnJlc3BvbnNlVHlwZSYmKHMucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUeXBlKSx2b2lkIDAhPT10aGlzLndpdGhDcmVkZW50aWFscyYmKHMud2l0aENyZWRlbnRpYWxzPXRoaXMud2l0aENyZWRlbnRpYWxzKSxzLm92ZXJyaWRlTWltZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZSh2b2lkIDAhPT10aGlzLm1pbWVUeXBlP3RoaXMubWltZVR5cGU6InRleHQvcGxhaW4iKTtmb3IoY29uc3QgdCBpbiB0aGlzLnJlcXVlc3RIZWFkZXIpcy5zZXRSZXF1ZXN0SGVhZGVyKHQsdGhpcy5yZXF1ZXN0SGVhZGVyW3RdKTtzLnNlbmQobnVsbCl9cmV0dXJuIGkubWFuYWdlci5pdGVtU3RhcnQodCksc31zZXRSZXNwb25zZVR5cGUodCl7cmV0dXJuIHRoaXMucmVzcG9uc2VUeXBlPXQsdGhpc31zZXRNaW1lVHlwZSh0KXtyZXR1cm4gdGhpcy5taW1lVHlwZT10LHRoaXN9fWNsYXNzIHdtdCBleHRlbmRzIHhtdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLG8pe3ZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3QgaT10aGlzLGE9TW10LmdldCh0KTtpZih2b2lkIDAhPT1hKXJldHVybiBpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShhKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLGE7Y29uc3Qgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJpbWciKTtmdW5jdGlvbiBzKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSxNbXQuYWRkKHQsdGhpcyksZSYmZSh0aGlzKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX1mdW5jdGlvbiBsKGUpe3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksci5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksbyYmbyhlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpLGkubWFuYWdlci5pdGVtRW5kKHQpfXJldHVybiByLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLHIuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLCJkYXRhOiIhPT10LnN1YnN0cigwLDUpJiZ2b2lkIDAhPT10aGlzLmNyb3NzT3JpZ2luJiYoci5jcm9zc09yaWdpbj10aGlzLmNyb3NzT3JpZ2luKSxpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHIuc3JjPXQscn19Y2xhc3Mga210IGV4dGVuZHMgeG10e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT1uZXcgdnN0LGE9bmV3IHdtdCh0aGlzLm1hbmFnZXIpO2Euc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksYS5zZXRQYXRoKHRoaXMucGF0aCk7bGV0IHI9MDtmdW5jdGlvbiBzKG4pe2EubG9hZCh0W25dLChmdW5jdGlvbih0KXtpLmltYWdlc1tuXT10LHIrKyw2PT09ciYmKGkubmVlZHNVcGRhdGU9ITAsZSYmZShpKSl9KSx2b2lkIDAsbyl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDsrK2UpcyhlKTtyZXR1cm4gaX19Y2xhc3MgU210IGV4dGVuZHMgeG10e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT1uZXcgb2F0LGE9bmV3IHdtdCh0aGlzLm1hbmFnZXIpO3JldHVybiBhLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEubG9hZCh0LChmdW5jdGlvbihuKXtpLmltYWdlPW47Y29uc3Qgbz10LnNlYXJjaCgvXC5qcGU/ZygkfFw/KS9pKT4wfHwwPT09dC5zZWFyY2goL15kYXRhXDppbWFnZVwvanBlZy8pO2kuZm9ybWF0PW8/UGl0OndpdCxpLm5lZWRzVXBkYXRlPSEwLHZvaWQgMCE9PWUmJmUoaSl9KSxuLG8pLGl9fWNsYXNzIERtdCBleHRlbmRzIGRwdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDdXJ2ZVBhdGgiLHRoaXMuY3VydmVzPVtdLHRoaXMuYXV0b0Nsb3NlPSExfWFkZCh0KXt0aGlzLmN1cnZlcy5wdXNoKHQpfWNsb3NlUGF0aCgpe2NvbnN0IHQ9dGhpcy5jdXJ2ZXNbMF0uZ2V0UG9pbnQoMCksZT10aGlzLmN1cnZlc1t0aGlzLmN1cnZlcy5sZW5ndGgtMV0uZ2V0UG9pbnQoMSk7dC5lcXVhbHMoZSl8fHRoaXMuY3VydmVzLnB1c2gobmV3IE9wdChlLHQpKX1nZXRQb2ludCh0KXtjb25zdCBlPXQqdGhpcy5nZXRMZW5ndGgoKSxuPXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7bGV0IG89MDtmb3IoO288bi5sZW5ndGg7KXtpZihuW29dPj1lKXtjb25zdCB0PW5bb10tZSxpPXRoaXMuY3VydmVzW29dLGE9aS5nZXRMZW5ndGgoKTtyZXR1cm4gaS5nZXRQb2ludEF0KDA9PT1hPzA6MS10L2EpfW8rK31yZXR1cm4gbnVsbH1nZXRMZW5ndGgoKXtjb25zdCB0PXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5jYWNoZUxlbmd0aHM9bnVsbCx0aGlzLmdldEN1cnZlTGVuZ3RocygpfWdldEN1cnZlTGVuZ3Rocygpe2lmKHRoaXMuY2FjaGVMZW5ndGhzJiZ0aGlzLmNhY2hlTGVuZ3Rocy5sZW5ndGg9PT10aGlzLmN1cnZlcy5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO2NvbnN0IHQ9W107bGV0IGU9MDtmb3IobGV0IG49MCxvPXRoaXMuY3VydmVzLmxlbmd0aDtuPG87bisrKWUrPXRoaXMuY3VydmVzW25dLmdldExlbmd0aCgpLHQucHVzaChlKTtyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM9dCx0fWdldFNwYWNlZFBvaW50cyh0PTQwKXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKWUucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5wdXNoKGVbMF0pLGV9Z2V0UG9pbnRzKHQ9MTIpe2NvbnN0IGU9W107bGV0IG47Zm9yKGxldCBvPTAsaT10aGlzLmN1cnZlcztvPGkubGVuZ3RoO28rKyl7Y29uc3QgYT1pW29dLHI9YS5nZXRQb2ludHMoYSYmYS5pc0VsbGlwc2VDdXJ2ZT8yKnQ6YSYmKGEuaXNMaW5lQ3VydmV8fGEuaXNMaW5lQ3VydmUzKT8xOmEmJmEuaXNTcGxpbmVDdXJ2ZT90KmEucG9pbnRzLmxlbmd0aDp0KTtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7Y29uc3Qgbz1yW3RdO24mJm4uZXF1YWxzKG8pfHwoZS5wdXNoKG8pLG49byl9fXJldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5sZW5ndGg+MSYmIWVbZS5sZW5ndGgtMV0uZXF1YWxzKGVbMF0pJiZlLnB1c2goZVswXSksZX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10LmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl0aGlzLmN1cnZlcy5wdXNoKHQuY3VydmVzW2VdLmNsb25lKCkpO3JldHVybiB0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7dC5hdXRvQ2xvc2U9dGhpcy5hdXRvQ2xvc2UsdC5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmN1cnZlcy5sZW5ndGg7ZTxuO2UrKyl0LmN1cnZlcy5wdXNoKHRoaXMuY3VydmVzW2VdLnRvSlNPTigpKTtyZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzLmN1cnZlcz1bXTtmb3IobGV0IGU9MCxuPXQuY3VydmVzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2goKG5ldyBTcHRbbi50eXBlXSkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX1jbGFzcyBFbXQgZXh0ZW5kcyBEbXR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBhdGgiLHRoaXMuY3VycmVudFBvaW50PW5ldyBRaXQsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfXNldEZyb21Qb2ludHModCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBlPTEsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMubGluZVRvKHRbZV0ueCx0W2VdLnkpO3JldHVybiB0aGlzfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfWxpbmVUbyh0LGUpe2NvbnN0IG49bmV3IE9wdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBRaXQodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxuLG8pe2NvbnN0IGk9bmV3IFBwdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBRaXQodCxlKSxuZXcgUWl0KG4sbykpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGkpLHRoaXMuY3VycmVudFBvaW50LnNldChuLG8pLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbixvLGksYSl7Y29uc3Qgcj1uZXcgdnB0KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IFFpdCh0LGUpLG5ldyBRaXQobixvKSxuZXcgUWl0KGksYSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKHIpLHRoaXMuY3VycmVudFBvaW50LnNldChpLGEpLHRoaXN9c3BsaW5lVGhydSh0KXtjb25zdCBlPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQodCksbj1uZXcga3B0KGUpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG4pLHRoaXMuY3VycmVudFBvaW50LmNvcHkodFt0Lmxlbmd0aC0xXSksdGhpc31hcmModCxlLG4sbyxpLGEpe3JldHVybiB0aGlzLmFic2FyYyh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4sbyxpLGEpLHRoaXN9YWJzYXJjKHQsZSxuLG8saSxhKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsZSxuLG4sbyxpLGEpLHRoaXN9ZWxsaXBzZSh0LGUsbixvLGksYSxyLHMpe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCt0aGlzLmN1cnJlbnRQb2ludC54LGUrdGhpcy5jdXJyZW50UG9pbnQueSxuLG8saSxhLHIscyksdGhpc31hYnNlbGxpcHNlKHQsZSxuLG8saSxhLHIscyl7Y29uc3QgbD1uZXcgcHB0KHQsZSxuLG8saSxhLHIscyk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2NvbnN0IHQ9bC5nZXRQb2ludCgwKTt0LmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKHQueCx0LnkpfXRoaXMuY3VydmVzLnB1c2gobCk7Y29uc3QgYz1sLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGMpLHRoaXN9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfXRvSlNPTigpe2NvbnN0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmN1cnJlbnRQb2ludC5mcm9tQXJyYXkodC5jdXJyZW50UG9pbnQpLHRoaXN9fWNsYXNzIFJtdCBleHRlbmRzIEVtdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnV1aWQ9cWl0KCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1nZXRQb2ludHNIb2xlcyh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLG89dGhpcy5ob2xlcy5sZW5ndGg7bjxvO24rKyllW25dPXRoaXMuaG9sZXNbbl0uZ2V0UG9pbnRzKHQpO3JldHVybiBlfWV4dHJhY3RQb2ludHModCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl0aGlzLmhvbGVzLnB1c2godC5ob2xlc1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpc310b0pTT04oKXtjb25zdCB0PXN1cGVyLnRvSlNPTigpO3QudXVpZD10aGlzLnV1aWQsdC5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXRoaXMuaG9sZXMubGVuZ3RoO2U8bjtlKyspdC5ob2xlcy5wdXNoKHRoaXMuaG9sZXNbZV0udG9KU09OKCkpO3JldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMudXVpZD10LnV1aWQsdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5ob2xlc1tlXTt0aGlzLmhvbGVzLnB1c2goKG5ldyBFbXQpLmZyb21KU09OKG4pKX1yZXR1cm4gdGhpc319Y2xhc3MgQW10IGV4dGVuZHMgcHJ0e2NvbnN0cnVjdG9yKHQsZT0xKXtzdXBlcigpLHRoaXMudHlwZT0iTGlnaHQiLHRoaXMuY29sb3I9bmV3IFJydCh0KSx0aGlzLmludGVuc2l0eT1lfWRpc3Bvc2UoKXt9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCksZS5vYmplY3QuaW50ZW5zaXR5PXRoaXMuaW50ZW5zaXR5LHZvaWQgMCE9PXRoaXMuZ3JvdW5kQ29sb3ImJihlLm9iamVjdC5ncm91bmRDb2xvcj10aGlzLmdyb3VuZENvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLmRpc3RhbmNlJiYoZS5vYmplY3QuZGlzdGFuY2U9dGhpcy5kaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hbmdsZSYmKGUub2JqZWN0LmFuZ2xlPXRoaXMuYW5nbGUpLHZvaWQgMCE9PXRoaXMuZGVjYXkmJihlLm9iamVjdC5kZWNheT10aGlzLmRlY2F5KSx2b2lkIDAhPT10aGlzLnBlbnVtYnJhJiYoZS5vYmplY3QucGVudW1icmE9dGhpcy5wZW51bWJyYSksdm9pZCAwIT09dGhpcy5zaGFkb3cmJihlLm9iamVjdC5zaGFkb3c9dGhpcy5zaGFkb3cudG9KU09OKCkpLGV9fUFtdC5wcm90b3R5cGUuaXNMaWdodD0hMCxjbGFzcyBleHRlbmRzIEFtdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxuKSx0aGlzLnR5cGU9IkhlbWlzcGhlcmVMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KHBydC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5ncm91bmRDb2xvcj1uZXcgUnJ0KGUpfWNvcHkodCl7cmV0dXJuIEFtdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ncm91bmRDb2xvci5jb3B5KHQuZ3JvdW5kQ29sb3IpLHRoaXN9fS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHQ9ITA7Y29uc3QgVG10PW5ldyBCYXQsTm10PW5ldyBjYXQsem10PW5ldyBjYXQ7Y2xhc3MgSW10e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLm1hcFNpemU9bmV3IFFpdCg1MTIsNTEyKSx0aGlzLm1hcD1udWxsLHRoaXMubWFwUGFzcz1udWxsLHRoaXMubWF0cml4PW5ldyBCYXQsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy5fZnJ1c3R1bT1uZXcgRXN0LHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgUWl0KDEsMSksdGhpcy5fdmlld3BvcnRDb3VudD0xLHRoaXMuX3ZpZXdwb3J0cz1bbmV3IGFhdCgwLDAsMSwxKV19Z2V0Vmlld3BvcnRDb3VudCgpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fWdldEZydXN0dW0oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX11cGRhdGVNYXRyaWNlcyh0KXtjb25zdCBlPXRoaXMuY2FtZXJhLG49dGhpcy5tYXRyaXg7Tm10LnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkoTm10KSx6bXQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSxlLmxvb2tBdCh6bXQpLGUudXBkYXRlTWF0cml4V29ybGQoKSxUbXQubXVsdGlwbHlNYXRyaWNlcyhlLnByb2plY3Rpb25NYXRyaXgsZS5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoVG10KSxuLnNldCguNSwwLDAsLjUsMCwuNSwwLC41LDAsMCwuNSwuNSwwLDAsMCwxKSxuLm11bHRpcGx5KGUucHJvamVjdGlvbk1hdHJpeCksbi5tdWx0aXBseShlLm1hdHJpeFdvcmxkSW52ZXJzZSl9Z2V0Vmlld3BvcnQodCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1t0XX1nZXRGcmFtZUV4dGVudHMoKXtyZXR1cm4gdGhpcy5fZnJhbWVFeHRlbnRzfWRpc3Bvc2UoKXt0aGlzLm1hcCYmdGhpcy5tYXAuZGlzcG9zZSgpLHRoaXMubWFwUGFzcyYmdGhpcy5tYXBQYXNzLmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiB0aGlzLmNhbWVyYT10LmNhbWVyYS5jbG9uZSgpLHRoaXMuYmlhcz10LmJpYXMsdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5tYXBTaXplLmNvcHkodC5tYXBTaXplKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfXRvSlNPTigpe2NvbnN0IHQ9e307cmV0dXJuIDAhPT10aGlzLmJpYXMmJih0LmJpYXM9dGhpcy5iaWFzKSwwIT09dGhpcy5ub3JtYWxCaWFzJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksMSE9PXRoaXMucmFkaXVzJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLDUxMj09PXRoaXMubWFwU2l6ZS54JiY1MTI9PT10aGlzLm1hcFNpemUueXx8KHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fWNsYXNzIEhtdCBleHRlbmRzIEltdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBfc3QoNTAsMSwuNSw1MDApKSx0aGlzLmZvY3VzPTF9dXBkYXRlTWF0cmljZXModCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPTIqWWl0KnQuYW5nbGUqdGhpcy5mb2N1cyxvPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LGk9dC5kaXN0YW5jZXx8ZS5mYXI7bj09PWUuZm92JiZvPT09ZS5hc3BlY3QmJmk9PT1lLmZhcnx8KGUuZm92PW4sZS5hc3BlY3Q9byxlLmZhcj1pLGUudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX1IbXQucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwLGNsYXNzIGV4dGVuZHMgQW10e2NvbnN0cnVjdG9yKHQsZSxuPTAsbz1NYXRoLlBJLzMsaT0wLGE9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KHBydC5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IHBydCx0aGlzLmRpc3RhbmNlPW4sdGhpcy5hbmdsZT1vLHRoaXMucGVudW1icmE9aSx0aGlzLmRlY2F5PWEsdGhpcy5zaGFkb3c9bmV3IEhtdH1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fS5wcm90b3R5cGUuaXNTcG90TGlnaHQ9ITA7Y29uc3QgRm10PW5ldyBCYXQsTG10PW5ldyBjYXQsQm10PW5ldyBjYXQ7Y2xhc3MgVm10IGV4dGVuZHMgSW10e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IF9zdCg5MCwxLC41LDUwMCkpLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgUWl0KDQsMiksdGhpcy5fdmlld3BvcnRDb3VudD02LHRoaXMuX3ZpZXdwb3J0cz1bbmV3IGFhdCgyLDEsMSwxKSxuZXcgYWF0KDAsMSwxLDEpLG5ldyBhYXQoMywxLDEsMSksbmV3IGFhdCgxLDEsMSwxKSxuZXcgYWF0KDMsMCwxLDEpLG5ldyBhYXQoMSwwLDEsMSldLHRoaXMuX2N1YmVEaXJlY3Rpb25zPVtuZXcgY2F0KDEsMCwwKSxuZXcgY2F0KC0xLDAsMCksbmV3IGNhdCgwLDAsMSksbmV3IGNhdCgwLDAsLTEpLG5ldyBjYXQoMCwxLDApLG5ldyBjYXQoMCwtMSwwKV0sdGhpcy5fY3ViZVVwcz1bbmV3IGNhdCgwLDEsMCksbmV3IGNhdCgwLDEsMCksbmV3IGNhdCgwLDEsMCksbmV3IGNhdCgwLDEsMCksbmV3IGNhdCgwLDAsMSksbmV3IGNhdCgwLDAsLTEpXX11cGRhdGVNYXRyaWNlcyh0LGU9MCl7Y29uc3Qgbj10aGlzLmNhbWVyYSxvPXRoaXMubWF0cml4LGk9dC5kaXN0YW5jZXx8bi5mYXI7aSE9PW4uZmFyJiYobi5mYXI9aSxuLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksTG10LnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxuLnBvc2l0aW9uLmNvcHkoTG10KSxCbXQuY29weShuLnBvc2l0aW9uKSxCbXQuYWRkKHRoaXMuX2N1YmVEaXJlY3Rpb25zW2VdKSxuLnVwLmNvcHkodGhpcy5fY3ViZVVwc1tlXSksbi5sb29rQXQoQm10KSxuLnVwZGF0ZU1hdHJpeFdvcmxkKCksby5tYWtlVHJhbnNsYXRpb24oLUxtdC54LC1MbXQueSwtTG10LnopLEZtdC5tdWx0aXBseU1hdHJpY2VzKG4ucHJvamVjdGlvbk1hdHJpeCxuLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChGbXQpfX1WbXQucHJvdG90eXBlLmlzUG9pbnRMaWdodFNoYWRvdz0hMCxjbGFzcyBleHRlbmRzIEFtdHtjb25zdHJ1Y3Rvcih0LGUsbj0wLG89MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlBvaW50TGlnaHQiLHRoaXMuZGlzdGFuY2U9bix0aGlzLmRlY2F5PW8sdGhpcy5zaGFkb3c9bmV3IFZtdH1nZXQgcG93ZXIoKXtyZXR1cm4gNCp0aGlzLmludGVuc2l0eSpNYXRoLlBJfXNldCBwb3dlcih0KXt0aGlzLmludGVuc2l0eT10Lyg0Kk1hdGguUEkpfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319LnByb3RvdHlwZS5pc1BvaW50TGlnaHQ9ITA7Y2xhc3Mgam10IGV4dGVuZHMgSW10e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVzdCgtNSw1LDUsLTUsLjUsNTAwKSl9fWptdC5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93PSEwLGNsYXNzIGV4dGVuZHMgQW10e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShwcnQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBwcnQsdGhpcy5zaGFkb3c9bmV3IGptdH1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fS5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0PSEwLGNsYXNzIGV4dGVuZHMgQW10e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHQ9ITAsY2xhc3MgZXh0ZW5kcyBBbXR7Y29uc3RydWN0b3IodCxlLG49MTAsbz0xMCl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlJlY3RBcmVhTGlnaHQiLHRoaXMud2lkdGg9bix0aGlzLmhlaWdodD1vfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXN9dG9KU09OKHQpe2NvbnN0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC53aWR0aD10aGlzLndpZHRoLGUub2JqZWN0LmhlaWdodD10aGlzLmhlaWdodCxlfX0ucHJvdG90eXBlLmlzUmVjdEFyZWFMaWdodD0hMDtjbGFzcyBVbXR7Y29uc3RydWN0b3IoKXt0aGlzLmNvZWZmaWNpZW50cz1bXTtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzLnB1c2gobmV3IGNhdCl9c2V0KHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uY29weSh0W2VdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC4yODIwOTUpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sLjQ4ODYwMypvKSxlLmFkZFNjYWxlZFZlY3RvcihhWzJdLC40ODg2MDMqaSksZS5hZGRTY2FsZWRWZWN0b3IoYVszXSwuNDg4NjAzKm4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sbipvKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihhWzVdLG8qaSoxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3IoYVs2XSwuMzE1MzkyKigzKmkqaS0xKSksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSxuKmkqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKGFbOF0sLjU0NjI3NCoobipuLW8qbykpLGV9Z2V0SXJyYWRpYW5jZUF0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10LnosYT10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KGFbMF0pLm11bHRpcGx5U2NhbGFyKC44ODYyMjcpLGUuYWRkU2NhbGVkVmVjdG9yKGFbMV0sMS4wMjMzMjgqbyksZS5hZGRTY2FsZWRWZWN0b3IoYVsyXSwxLjAyMzMyOCppKSxlLmFkZFNjYWxlZFZlY3RvcihhWzNdLDEuMDIzMzI4Km4pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNF0sLjg1ODA4NipuKm8pLGUuYWRkU2NhbGVkVmVjdG9yKGFbNV0sLjg1ODA4NipvKmkpLGUuYWRkU2NhbGVkVmVjdG9yKGFbNl0sLjc0MzEyNSppKmktLjI0NzcwOCksZS5hZGRTY2FsZWRWZWN0b3IoYVs3XSwuODU4MDg2Km4qaSksZS5hZGRTY2FsZWRWZWN0b3IoYVs4XSwuNDI5MDQzKihuKm4tbypvKSksZX1hZGQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5hZGQodC5jb2VmZmljaWVudHNbZV0pO3JldHVybiB0aGlzfWFkZFNjYWxlZFNIKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5hZGRTY2FsZWRWZWN0b3IodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9c2NhbGUodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5tdWx0aXBseVNjYWxhcih0KTtyZXR1cm4gdGhpc31sZXJwKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5sZXJwKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfWVxdWFscyh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKWlmKCF0aGlzLmNvZWZmaWNpZW50c1tlXS5lcXVhbHModC5jb2VmZmljaWVudHNbZV0pKXJldHVybiExO3JldHVybiEwfWNvcHkodCl7cmV0dXJuIHRoaXMuc2V0KHQuY29lZmZpY2llbnRzKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1mcm9tQXJyYXkodCxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBvPTA7bzw5O28rKyluW29dLmZyb21BcnJheSh0LGUrMypvKTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgbz0wO288OTtvKyspbltvXS50b0FycmF5KHQsZSszKm8pO3JldHVybiB0fXN0YXRpYyBnZXRCYXNpc0F0KHQsZSl7Y29uc3Qgbj10Lngsbz10LnksaT10Lno7ZVswXT0uMjgyMDk1LGVbMV09LjQ4ODYwMypvLGVbMl09LjQ4ODYwMyppLGVbM109LjQ4ODYwMypuLGVbNF09MS4wOTI1NDgqbipvLGVbNV09MS4wOTI1NDgqbyppLGVbNl09LjMxNTM5MiooMyppKmktMSksZVs3XT0xLjA5MjU0OCpuKmksZVs4XT0uNTQ2Mjc0KihuKm4tbypvKX19VW10LnByb3RvdHlwZS5pc1NwaGVyaWNhbEhhcm1vbmljczM9ITA7Y2xhc3MgR210IGV4dGVuZHMgQW10e2NvbnN0cnVjdG9yKHQ9bmV3IFVtdCxlPTEpe3N1cGVyKHZvaWQgMCxlKSx0aGlzLnNoPXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc31mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpcy5zaC5mcm9tQXJyYXkodC5zaCksdGhpc310b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LnNoPXRoaXMuc2gudG9BcnJheSgpLGV9fWxldCBXbXQ7R210LnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITAsY2xhc3MgZXh0ZW5kcyBxcnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5zdGFuY2VDb3VudD0xLzB9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmluc3RhbmNlQ291bnQ9dC5pbnN0YW5jZUNvdW50LHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04odGhpcyk7cmV0dXJuIHQuaW5zdGFuY2VDb3VudD10aGlzLmluc3RhbmNlQ291bnQsdC5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwLHR9fS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMCxjbGFzcyBleHRlbmRzIHpydHtjb25zdHJ1Y3Rvcih0LGUsbixvPTEpeyJudW1iZXIiPT10eXBlb2YgbiYmKG89bixuPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LGUsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPW99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7Y29uc3QgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSx0LmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwLHR9fS5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITAsY2xhc3MgZXh0ZW5kcyB4bXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksInVuZGVmaW5lZCI9PXR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogY3JlYXRlSW1hZ2VCaXRtYXAoKSBub3Qgc3VwcG9ydGVkLiIpLCJ1bmRlZmluZWQiPT10eXBlb2YgZmV0Y2gmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGZldGNoKCkgbm90IHN1cHBvcnRlZC4iKSx0aGlzLm9wdGlvbnM9e3ByZW11bHRpcGx5QWxwaGE6Im5vbmUifX1zZXRPcHRpb25zKHQpe3JldHVybiB0aGlzLm9wdGlvbnM9dCx0aGlzfWxvYWQodCxlLG4sbyl7dm9pZCAwPT09dCYmKHQ9IiIpLHZvaWQgMCE9PXRoaXMucGF0aCYmKHQ9dGhpcy5wYXRoK3QpLHQ9dGhpcy5tYW5hZ2VyLnJlc29sdmVVUkwodCk7Y29uc3QgaT10aGlzLGE9TW10LmdldCh0KTtpZih2b2lkIDAhPT1hKXJldHVybiBpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSYmZShhKSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApLGE7Y29uc3Qgcj17fTtyLmNyZWRlbnRpYWxzPSJhbm9ueW1vdXMiPT09dGhpcy5jcm9zc09yaWdpbj8ic2FtZS1vcmlnaW4iOiJpbmNsdWRlIixyLmhlYWRlcnM9dGhpcy5yZXF1ZXN0SGVhZGVyLGZldGNoKHQscikudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmxvYigpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBjcmVhdGVJbWFnZUJpdG1hcCh0LE9iamVjdC5hc3NpZ24oaS5vcHRpb25zLHtjb2xvclNwYWNlQ29udmVyc2lvbjoibm9uZSJ9KSl9KSkudGhlbigoZnVuY3Rpb24obil7TW10LmFkZCh0LG4pLGUmJmUobiksaS5tYW5hZ2VyLml0ZW1FbmQodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe28mJm8oZSksaS5tYW5hZ2VyLml0ZW1FcnJvcih0KSxpLm1hbmFnZXIuaXRlbUVuZCh0KX0pKSxpLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfX0ucHJvdG90eXBlLmlzSW1hZ2VCaXRtYXBMb2FkZXI9ITA7Y2xhc3MgWW10IGV4dGVuZHMgeG10e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG4sbyl7Y29uc3QgaT10aGlzLGE9bmV3IFBtdCh0aGlzLm1hbmFnZXIpO2Euc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2NvbnN0IHQ9bi5zbGljZSgwKTsodm9pZCAwPT09V210JiYoV210PW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksV210KS5kZWNvZGVBdWRpb0RhdGEodCwoZnVuY3Rpb24odCl7ZSh0KX0pKX1jYXRjaChlKXtvP28oZSk6Y29uc29sZS5lcnJvcihlKSxpLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4sbyl9fShjbGFzcyBleHRlbmRzIEdtdHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih2b2lkIDAsbik7Y29uc3Qgbz0obmV3IFJydCkuc2V0KHQpLGk9KG5ldyBScnQpLnNldChlKSxhPW5ldyBjYXQoby5yLG8uZyxvLmIpLHI9bmV3IGNhdChpLnIsaS5nLGkuYikscz1NYXRoLnNxcnQoTWF0aC5QSSksbD1zKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkoYSkuYWRkKHIpLm11bHRpcGx5U2NhbGFyKHMpLHRoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkoYSkuc3ViKHIpLm11bHRpcGx5U2NhbGFyKGwpfX0pLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodFByb2JlPSEwLGNsYXNzIGV4dGVuZHMgR210e2NvbnN0cnVjdG9yKHQsZT0xKXtzdXBlcih2b2lkIDAsZSk7Y29uc3Qgbj0obmV3IFJydCkuc2V0KHQpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLnNldChuLnIsbi5nLG4uYikubXVsdGlwbHlTY2FsYXIoMipNYXRoLnNxcnQoTWF0aC5QSSkpfX0ucHJvdG90eXBlLmlzQW1iaWVudExpZ2h0UHJvYmU9ITA7Y2xhc3MgcW10e2NvbnN0cnVjdG9yKHQsZSxuKXtsZXQgbyxpLGE7c3dpdGNoKHRoaXMuYmluZGluZz10LHRoaXMudmFsdWVTaXplPW4sZSl7Y2FzZSJxdWF0ZXJuaW9uIjpvPXRoaXMuX3NsZXJwLGk9dGhpcy5fc2xlcnBBZGRpdGl2ZSxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoNipuKSx0aGlzLl93b3JrSW5kZXg9NTticmVhaztjYXNlInN0cmluZyI6Y2FzZSJib29sIjpvPXRoaXMuX3NlbGVjdCxpPXRoaXMuX3NlbGVjdCxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcix0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkoNSpuKTticmVhaztkZWZhdWx0Om89dGhpcy5fbGVycCxpPXRoaXMuX2xlcnBBZGRpdGl2ZSxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoNSpuKX10aGlzLl9taXhCdWZmZXJSZWdpb249byx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZT1pLHRoaXMuX3NldElkZW50aXR5PWEsdGhpcy5fb3JpZ0luZGV4PTMsdGhpcy5fYWRkSW5kZXg9NCx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHRoaXMudXNlQ291bnQ9MCx0aGlzLnJlZmVyZW5jZUNvdW50PTB9YWNjdW11bGF0ZSh0LGUpe2NvbnN0IG49dGhpcy5idWZmZXIsbz10aGlzLnZhbHVlU2l6ZSxpPXQqbytvO2xldCBhPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZigwPT09YSl7Zm9yKGxldCB0PTA7dCE9PW87Kyt0KW5baSt0XT1uW3RdO2E9ZX1lbHNlIGErPWUsdGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSwwLGUvYSxvKTt0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9YX1hY2N1bXVsYXRlQWRkaXRpdmUodCl7Y29uc3QgZT10aGlzLmJ1ZmZlcixuPXRoaXMudmFsdWVTaXplLG89bip0aGlzLl9hZGRJbmRleDswPT09dGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUmJnRoaXMuX3NldElkZW50aXR5KCksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUoZSxvLDAsdCxuKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSs9dH1hcHBseSh0KXtjb25zdCBlPXRoaXMudmFsdWVTaXplLG49dGhpcy5idWZmZXIsbz10KmUrZSxpPXRoaXMuY3VtdWxhdGl2ZVdlaWdodCxhPXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlLHI9dGhpcy5iaW5kaW5nO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTAsaTwxJiZ0aGlzLl9taXhCdWZmZXJSZWdpb24obixvLGUqdGhpcy5fb3JpZ0luZGV4LDEtaSxlKSxhPjAmJnRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKG4sbyx0aGlzLl9hZGRJbmRleCplLDEsZSk7Zm9yKGxldCB0PWUsaT1lK2U7dCE9PWk7Kyt0KWlmKG5bdF0hPT1uW3QrZV0pe3Iuc2V0VmFsdWUobixvKTticmVha319c2F2ZU9yaWdpbmFsU3RhdGUoKXtjb25zdCB0PXRoaXMuYnVmZmVyLGU9dGhpcy52YWx1ZVNpemUsbj1lKnRoaXMuX29yaWdJbmRleDt0aGlzLmJpbmRpbmcuZ2V0VmFsdWUodCxuKTtmb3IobGV0IG89ZSxpPW47byE9PWk7KytvKXRbb109dFtuK28lZV07dGhpcy5fc2V0SWRlbnRpdHkoKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wfXJlc3RvcmVPcmlnaW5hbFN0YXRlKCl7dGhpcy5iaW5kaW5nLnNldFZhbHVlKHRoaXMuYnVmZmVyLDMqdGhpcy52YWx1ZVNpemUpfV9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYygpe2NvbnN0IHQ9dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUsZT10K3RoaXMudmFsdWVTaXplO2ZvcihsZXQgbj10O248ZTtuKyspdGhpcy5idWZmZXJbbl09MH1fc2V0QWRkaXRpdmVJZGVudGl0eVF1YXRlcm5pb24oKXt0aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYygpLHRoaXMuYnVmZmVyW3RoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplKzNdPTF9X3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcigpe2NvbnN0IHQ9dGhpcy5fb3JpZ0luZGV4KnRoaXMudmFsdWVTaXplLGU9dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPTA7bjx0aGlzLnZhbHVlU2l6ZTtuKyspdGhpcy5idWZmZXJbZStuXT10aGlzLmJ1ZmZlclt0K25dfV9zZWxlY3QodCxlLG4sbyxpKXtpZihvPj0uNSlmb3IobGV0IG89MDtvIT09aTsrK28pdFtlK29dPXRbbitvXX1fc2xlcnAodCxlLG4sbyl7bGF0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbixvKX1fc2xlcnBBZGRpdGl2ZSh0LGUsbixvLGkpe2NvbnN0IGE9dGhpcy5fd29ya0luZGV4Kmk7bGF0Lm11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsYSx0LGUsdCxuKSxsYXQuc2xlcnBGbGF0KHQsZSx0LGUsdCxhLG8pfV9sZXJwKHQsZSxuLG8saSl7Y29uc3QgYT0xLW87Zm9yKGxldCByPTA7ciE9PWk7KytyKXtjb25zdCBpPWUrcjt0W2ldPXRbaV0qYSt0W24rcl0qb319X2xlcnBBZGRpdGl2ZSh0LGUsbixvLGkpe2ZvcihsZXQgYT0wO2EhPT1pOysrYSl7Y29uc3QgaT1lK2E7dFtpXT10W2ldK3RbbithXSpvfX19Y29uc3QgWm10PW5ldyBSZWdFeHAoIltcXFtcXF1cXC46XFwvXSIsImciKSxYbXQ9IlteXFxbXFxdXFwuOlxcL10iLEttdD0iW14iKyJcXFtcXF1cXC46XFwvIi5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsSm10PS8oKD86V0MrW1wvOl0pKikvLnNvdXJjZS5yZXBsYWNlKCJXQyIsWG10KSxRbXQ9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIsS210KSwkbXQ9Lyg/OlwuKFdDKykoPzpcWyguKylcXSk/KT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsWG10KSx0dXQ9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLFhtdCksZXV0PW5ldyBSZWdFeHAoIl4iK0ptdCtRbXQrJG10K3R1dCsiJCIpLG51dD1bIm1hdGVyaWFsIiwibWF0ZXJpYWxzIiwiYm9uZXMiXTtjbGFzcyBvdXR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxvdXQucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPW91dC5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsbil7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgb3V0LkNvbXBvc2l0ZSh0LGUsbik6bmV3IG91dCh0LGUsbil9c3RhdGljIHNhbml0aXplTm9kZU5hbWUodCl7cmV0dXJuIHQucmVwbGFjZSgvXHMvZywiXyIpLnJlcGxhY2UoWm10LCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7Y29uc3QgZT1ldXQuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtjb25zdCBuPXtub2RlTmFtZTplWzJdLG9iamVjdE5hbWU6ZVszXSxvYmplY3RJbmRleDplWzRdLHByb3BlcnR5TmFtZTplWzVdLHByb3BlcnR5SW5kZXg6ZVs2XX0sbz1uLm5vZGVOYW1lJiZuLm5vZGVOYW1lLmxhc3RJbmRleE9mKCIuIik7aWYodm9pZCAwIT09byYmLTEhPT1vKXtjb25zdCB0PW4ubm9kZU5hbWUuc3Vic3RyaW5nKG8rMSk7LTEhPT1udXQuaW5kZXhPZih0KSYmKG4ubm9kZU5hbWU9bi5ub2RlTmFtZS5zdWJzdHJpbmcoMCxvKSxuLm9iamVjdE5hbWU9dCl9aWYobnVsbD09PW4ucHJvcGVydHlOYW1lfHwwPT09bi5wcm9wZXJ0eU5hbWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBjYW4gbm90IHBhcnNlIHByb3BlcnR5TmFtZSBmcm9tIHRyYWNrTmFtZTogIit0KTtyZXR1cm4gbn1zdGF0aWMgZmluZE5vZGUodCxlKXtpZighZXx8IiI9PT1lfHwiLiI9PT1lfHwtMT09PWV8fGU9PT10Lm5hbWV8fGU9PT10LnV1aWQpcmV0dXJuIHQ7aWYodC5za2VsZXRvbil7Y29uc3Qgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYodm9pZCAwIT09bilyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtjb25zdCBuPWZ1bmN0aW9uKHQpe2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBpPXRbb107aWYoaS5uYW1lPT09ZXx8aS51dWlkPT09ZSlyZXR1cm4gaTtjb25zdCBhPW4oaS5jaGlsZHJlbik7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sbz1uKHQuY2hpbGRyZW4pO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLm5vZGVbdGhpcy5wcm9wZXJ0eU5hbWVdfV9nZXRWYWx1ZV9hcnJheSh0LGUpe2NvbnN0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKXRbZSsrXT1uW29dfV9nZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0W2VdPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdfV9nZXRWYWx1ZV90b0FycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkodCxlKX1fc2V0VmFsdWVfZGlyZWN0KHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV19X3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5KHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvIT09aTsrK28pbltvXT10W2UrK119X3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7Y29uc3Qgbj10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCBvPTAsaT1uLmxlbmd0aDtvIT09aTsrK28pbltvXT10W2UrK107dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXtjb25zdCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IG89MCxpPW4ubGVuZ3RoO28hPT1pOysrbyluW29dPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X2dldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLmdldFZhbHVlKHQsZSl9X3NldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLnNldFZhbHVlKHQsZSl9YmluZCgpe2xldCB0PXRoaXMubm9kZTtjb25zdCBlPXRoaXMucGFyc2VkUGF0aCxuPWUub2JqZWN0TmFtZSxvPWUucHJvcGVydHlOYW1lO2xldCBpPWUucHJvcGVydHlJbmRleDtpZih0fHwodD1vdXQuZmluZE5vZGUodGhpcy5yb290Tm9kZSxlLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSx0aGlzLm5vZGU9dCksdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZSx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYXZhaWxhYmxlLCF0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBub2RlIGZvciB0cmFjazogIit0aGlzLnBhdGgrIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIpO2lmKG4pe2xldCBvPWUub2JqZWN0SW5kZXg7c3dpdGNoKG4pe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO2lmKCF0Lm1hdGVyaWFsLm1hdGVyaWFscylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7dD10Lm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlImJvbmVzIjppZighdC5za2VsZXRvbilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBib25lcyBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBza2VsZXRvbi4iLHRoaXMpO3Q9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdLm5hbWU9PT1vKXtvPWU7YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih2b2lkIDA9PT10W25dKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG9iamVjdE5hbWUgb2Ygbm9kZSB1bmRlZmluZWQuIix0aGlzKTt0PXRbbl19aWYodm9pZCAwIT09byl7aWYodm9pZCAwPT09dFtvXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3Q9dFtvXX19Y29uc3QgYT10W29dO2lmKHZvaWQgMD09PWEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogIitlLm5vZGVOYW1lKyIuIitvKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iLHQpO2xldCByPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdm9pZCAwIT09dC5uZWVkc1VwZGF0ZT9yPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp2b2lkIDAhPT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUmJihyPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgcz10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZih2b2lkIDAhPT1pKXtpZigibW9ycGhUYXJnZXRJbmZsdWVuY2VzIj09PW8pe2lmKCF0Lmdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4iLHRoaXMpO3ZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2ldJiYoaT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtpXSl9cz10aGlzLkJpbmRpbmdUeXBlLkFycmF5RWxlbWVudCx0aGlzLnJlc29sdmVkUHJvcGVydHk9YSx0aGlzLnByb3BlcnR5SW5kZXg9aX1lbHNlIHZvaWQgMCE9PWEuZnJvbUFycmF5JiZ2b2lkIDAhPT1hLnRvQXJyYXk/KHM9dGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9YSk6QXJyYXkuaXNBcnJheShhKT8ocz10aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hKTp0aGlzLnByb3BlcnR5TmFtZT1vO3RoaXMuZ2V0VmFsdWU9dGhpcy5HZXR0ZXJCeUJpbmRpbmdUeXBlW3NdLHRoaXMuc2V0VmFsdWU9dGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1tzXVtyXX11bmJpbmQoKXt0aGlzLm5vZGU9bnVsbCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfX1vdXQuQ29tcG9zaXRlPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxuKXtjb25zdCBvPW58fG91dC5wYXJzZVRyYWNrTmFtZShlKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhlLG8pfWdldFZhbHVlKHQsZSl7dGhpcy5iaW5kKCk7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc1t0aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c19dO3ZvaWQgMCE9PW4mJm4uZ2V0VmFsdWUodCxlKX1zZXRWYWx1ZSh0LGUpe2NvbnN0IG49dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBvPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxpPW4ubGVuZ3RoO28hPT1pOysrbyluW29dLnNldFZhbHVlKHQsZSl9YmluZCgpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO2UhPT1uOysrZSl0W2VdLmJpbmQoKX11bmJpbmQoKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS51bmJpbmQoKX19LG91dC5wcm90b3R5cGUuQmluZGluZ1R5cGU9e0RpcmVjdDowLEVudGlyZUFycmF5OjEsQXJyYXlFbGVtZW50OjIsSGFzRnJvbVRvQXJyYXk6M30sb3V0LnByb3RvdHlwZS5WZXJzaW9uaW5nPXtOb25lOjAsTmVlZHNVcGRhdGU6MSxNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOjJ9LG91dC5wcm90b3R5cGUuR2V0dGVyQnlCaW5kaW5nVHlwZT1bb3V0LnByb3RvdHlwZS5fZ2V0VmFsdWVfZGlyZWN0LG91dC5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5LG91dC5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5RWxlbWVudCxvdXQucHJvdG90eXBlLl9nZXRWYWx1ZV90b0FycmF5XSxvdXQucHJvdG90eXBlLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nPVtbb3V0LnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0LG91dC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSxvdXQucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW291dC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5LG91dC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlLG91dC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtvdXQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnQsb3V0LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlLG91dC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbb3V0LnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5LG91dC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSxvdXQucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV1dO2NsYXNzIGl1dHtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsLG89ZS5ibGVuZE1vZGUpe3RoaXMuX21peGVyPXQsdGhpcy5fY2xpcD1lLHRoaXMuX2xvY2FsUm9vdD1uLHRoaXMuYmxlbmRNb2RlPW87Y29uc3QgaT1lLnRyYWNrcyxhPWkubGVuZ3RoLHI9bmV3IEFycmF5KGEpLHM9e2VuZGluZ1N0YXJ0OkFpdCxlbmRpbmdFbmQ6QWl0fTtmb3IobGV0IHQ9MDt0IT09YTsrK3Qpe2NvbnN0IGU9aVt0XS5jcmVhdGVJbnRlcnBvbGFudChudWxsKTtyW3RdPWUsZS5zZXR0aW5ncz1zfXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M9cyx0aGlzLl9pbnRlcnBvbGFudHM9cix0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzPW5ldyBBcnJheShhKSx0aGlzLl9jYWNoZUluZGV4PW51bGwsdGhpcy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLmxvb3A9MjIwMSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LGUpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPWUsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LGUsbil7aWYodC5mYWRlT3V0KGUpLHRoaXMuZmFkZUluKGUpLG4pe2NvbnN0IG49dGhpcy5fY2xpcC5kdXJhdGlvbixvPXQuX2NsaXAuZHVyYXRpb24saT1uL287dC53YXJwKDEsby9uLGUpLHRoaXMud2FycChpLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG4pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG4pfXN0b3BGYWRpbmcoKXtjb25zdCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiBudWxsIT09dCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LGUsbil7Y29uc3Qgbz10aGlzLl9taXhlcixpPW8udGltZSxhPXRoaXMudGltZVNjYWxlO2xldCByPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGw9PT1yJiYocj1vLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9cik7Y29uc3Qgcz1yLnBhcmFtZXRlclBvc2l0aW9ucyxsPXIuc2FtcGxlVmFsdWVzO3JldHVybiBzWzBdPWksc1sxXT1pK24sbFswXT10L2EsbFsxXT1lL2EsdGhpc31zdG9wV2FycGluZygpe2NvbnN0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxuLG8pe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2NvbnN0IGk9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1pKXtjb25zdCBvPSh0LWkpKm47aWYobzwwfHwwPT09bilyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwsZT1uKm99ZSo9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2NvbnN0IGE9dGhpcy5fdXBkYXRlVGltZShlKSxyPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihyPjApe2NvbnN0IHQ9dGhpcy5faW50ZXJwb2xhbnRzLGU9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgMjUwMTpmb3IobGV0IG49MCxvPXQubGVuZ3RoO24hPT1vOysrbil0W25dLmV2YWx1YXRlKGEpLGVbbl0uYWNjdW11bGF0ZUFkZGl0aXZlKHIpO2JyZWFrO2Nhc2UgMjUwMDpkZWZhdWx0OmZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXRbbl0uZXZhbHVhdGUoYSksZVtuXS5hY2N1bXVsYXRlKG8scil9fX1fdXBkYXRlV2VpZ2h0KHQpe2xldCBlPTA7aWYodGhpcy5lbmFibGVkKXtlPXRoaXMud2VpZ2h0O2NvbnN0IG49dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7aWYobnVsbCE9PW4pe2NvbnN0IG89bi5ldmFsdWF0ZSh0KVswXTtlKj1vLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BGYWRpbmcoKSwwPT09byYmKHRoaXMuZW5hYmxlZD0hMSkpfX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PWUsZX1fdXBkYXRlVGltZVNjYWxlKHQpe2xldCBlPTA7aWYoIXRoaXMucGF1c2VkKXtlPXRoaXMudGltZVNjYWxlO2NvbnN0IG49dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbCE9PW4mJihlKj1uLmV2YWx1YXRlKHQpWzBdLHQ+bi5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksMD09PWU/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSkpfXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2NvbnN0IGU9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcDtsZXQgbz10aGlzLnRpbWUrdCxpPXRoaXMuX2xvb3BDb3VudDtjb25zdCBhPTIyMDI9PT1uO2lmKDA9PT10KXJldHVybi0xPT09aT9vOmEmJjE9PSgxJmkpP2UtbzpvO2lmKDIyMDA9PT1uKXstMT09PWkmJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYobz49ZSlvPWU7ZWxzZXtpZighKG88MCkpe3RoaXMudGltZT1vO2JyZWFrIHR9bz0wfXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1vLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZigtMT09PWkmJih0Pj0wPyhpPTAsdGhpcy5fc2V0RW5kaW5ncyghMCwwPT09dGhpcy5yZXBldGl0aW9ucyxhKSk6dGhpcy5fc2V0RW5kaW5ncygwPT09dGhpcy5yZXBldGl0aW9ucywhMCxhKSksbz49ZXx8bzwwKXtjb25zdCBuPU1hdGguZmxvb3Ioby9lKTtvLT1lKm4saSs9TWF0aC5hYnMobik7Y29uc3Qgcj10aGlzLnJlcGV0aXRpb25zLWk7aWYocjw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxvPXQ+MD9lOjAsdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYoMT09PXIpe2NvbnN0IGU9dDwwO3RoaXMuX3NldEVuZGluZ3MoZSwhZSxhKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsYSk7dGhpcy5fbG9vcENvdW50PWksdGhpcy50aW1lPW8sdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOm59KX19ZWxzZSB0aGlzLnRpbWU9bztpZihhJiYxPT0oMSZpKSlyZXR1cm4gZS1vfXJldHVybiBvfV9zZXRFbmRpbmdzKHQsZSxuKXtjb25zdCBvPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bj8oby5lbmRpbmdTdGFydD1UaXQsby5lbmRpbmdFbmQ9VGl0KTooby5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9UaXQ6QWl0Ok5pdCxvLmVuZGluZ0VuZD1lP3RoaXMuemVyb1Nsb3BlQXRFbmQ/VGl0OkFpdDpOaXQpfV9zY2hlZHVsZUZhZGluZyh0LGUsbil7Y29uc3Qgbz10aGlzLl9taXhlcixpPW8udGltZTtsZXQgYT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09YSYmKGE9by5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PWEpO2NvbnN0IHI9YS5wYXJhbWV0ZXJQb3NpdGlvbnMscz1hLnNhbXBsZVZhbHVlcztyZXR1cm4gclswXT1pLHNbMF09ZSxyWzFdPWkrdCxzWzFdPW4sdGhpc319KGNsYXNzIGV4dGVuZHMgVWl0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2NvbnN0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LG89dC5fY2xpcC50cmFja3MsaT1vLmxlbmd0aCxhPXQuX3Byb3BlcnR5QmluZGluZ3Mscj10Ll9pbnRlcnBvbGFudHMscz1uLnV1aWQsbD10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU7bGV0IGM9bFtzXTt2b2lkIDA9PT1jJiYoYz17fSxsW3NdPWMpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCl7Y29uc3QgaT1vW3RdLGw9aS5uYW1lO2xldCBkPWNbbF07aWYodm9pZCAwIT09ZClhW3RdPWQ7ZWxzZXtpZihkPWFbdF0sdm9pZCAwIT09ZCl7bnVsbD09PWQuX2NhY2hlSW5kZXgmJigrK2QucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGQscyxsKSk7Y29udGludWV9ZD1uZXcgcW10KG91dC5jcmVhdGUobixsLGUmJmUuX3Byb3BlcnR5QmluZGluZ3NbdF0uYmluZGluZy5wYXJzZWRQYXRoKSxpLlZhbHVlVHlwZU5hbWUsaS5nZXRWYWx1ZVNpemUoKSksKytkLnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyhkLHMsbCksYVt0XT1kfXJbdF0ucmVzdWx0QnVmZmVyPWQuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3QgZT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLG49dC5fY2xpcC51dWlkLG89dGhpcy5fYWN0aW9uc0J5Q2xpcFtuXTt0aGlzLl9iaW5kQWN0aW9uKHQsbyYmby5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsbixlKX1jb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT1uLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhuKSxuLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtjb25zdCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtjb25zdCBlPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1lJiZlPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LGUsbil7Y29uc3Qgbz10aGlzLl9hY3Rpb25zLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgYT1pW2VdO2lmKHZvaWQgMD09PWEpYT17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxpW2VdPWE7ZWxzZXtjb25zdCBlPWEua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9by5sZW5ndGgsby5wdXNoKHQpLGEuYWN0aW9uQnlSb290W25dPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYWN0aW9ucyxuPWVbZS5sZW5ndGgtMV0sbz10Ll9jYWNoZUluZGV4O24uX2NhY2hlSW5kZXg9byxlW29dPW4sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7Y29uc3QgaT10Ll9jbGlwLnV1aWQsYT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9YVtpXSxzPXIua25vd25BY3Rpb25zLGw9c1tzLmxlbmd0aC0xXSxjPXQuX2J5Q2xpcENhY2hlSW5kZXg7bC5fYnlDbGlwQ2FjaGVJbmRleD1jLHNbY109bCxzLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxkZWxldGUgci5hY3Rpb25CeVJvb3RbKHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZF0sMD09PXMubGVuZ3RoJiZkZWxldGUgYVtpXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2NvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PS0tbi5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX1fbGVuZEFjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV90YWtlQmFja0FjdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPWVbb107dC5fY2FjaGVJbmRleD1vLGVbb109dCxpLl9jYWNoZUluZGV4PW4sZVtuXT1pfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG4pe2NvbnN0IG89dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLGk9dGhpcy5fYmluZGluZ3M7bGV0IGE9b1tlXTt2b2lkIDA9PT1hJiYoYT17fSxvW2VdPWEpLGFbbl09dCx0Ll9jYWNoZUluZGV4PWkubGVuZ3RoLGkucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsbz1uLnJvb3ROb2RlLnV1aWQsaT1uLnBhdGgsYT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscj1hW29dLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSByW2ldLDA9PT1PYmplY3Qua2V5cyhyKS5sZW5ndGgmJmRlbGV0ZSBhW29dfV9sZW5kQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X3Rha2VCYWNrQmluZGluZyh0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzLG49dC5fY2FjaGVJbmRleCxvPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLGk9ZVtvXTt0Ll9jYWNoZUluZGV4PW8sZVtvXT10LGkuX2NhY2hlSW5kZXg9bixlW25dPWl9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBjbXQobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2NvbnN0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxuPXQuX19jYWNoZUluZGV4LG89LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxpPWVbb107dC5fX2NhY2hlSW5kZXg9byxlW29dPXQsaS5fX2NhY2hlSW5kZXg9bixlW25dPWl9Y2xpcEFjdGlvbih0LGUsbil7Y29uc3Qgbz1lfHx0aGlzLl9yb290LGk9by51dWlkO2xldCBhPSJzdHJpbmciPT10eXBlb2YgdD9fbXQuZmluZEJ5TmFtZShvLHQpOnQ7Y29uc3Qgcj1udWxsIT09YT9hLnV1aWQ6dCxzPXRoaXMuX2FjdGlvbnNCeUNsaXBbcl07bGV0IGw9bnVsbDtpZih2b2lkIDA9PT1uJiYobj1udWxsIT09YT9hLmJsZW5kTW9kZToyNTAwKSx2b2lkIDAhPT1zKXtjb25zdCB0PXMuYWN0aW9uQnlSb290W2ldO2lmKHZvaWQgMCE9PXQmJnQuYmxlbmRNb2RlPT09bilyZXR1cm4gdDtsPXMua25vd25BY3Rpb25zWzBdLG51bGw9PT1hJiYoYT1sLl9jbGlwKX1pZihudWxsPT09YSlyZXR1cm4gbnVsbDtjb25zdCBjPW5ldyBpdXQodGhpcyxhLGUsbik7cmV0dXJuIHRoaXMuX2JpbmRBY3Rpb24oYyxsKSx0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihjLHIsaSksY31leGlzdGluZ0FjdGlvbih0LGUpe2NvbnN0IG49ZXx8dGhpcy5fcm9vdCxvPW4udXVpZCxpPSJzdHJpbmciPT10eXBlb2YgdD9fbXQuZmluZEJ5TmFtZShuLHQpOnQsYT10aGlzLl9hY3Rpb25zQnlDbGlwW2k/aS51dWlkOnRdO3JldHVybiB2b2lkIDAhPT1hJiZhLmFjdGlvbkJ5Um9vdFtvXXx8bnVsbH1zdG9wQWxsQWN0aW9uKCl7Y29uc3QgdD10aGlzLl9hY3Rpb25zO2ZvcihsZXQgZT10aGlzLl9uQWN0aXZlQWN0aW9ucy0xO2U+PTA7LS1lKXRbZV0uc3RvcCgpO3JldHVybiB0aGlzfXVwZGF0ZSh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10aGlzLl9uQWN0aXZlQWN0aW9ucyxvPXRoaXMudGltZSs9dCo9dGhpcy50aW1lU2NhbGUsaT1NYXRoLnNpZ24odCksYT10aGlzLl9hY2N1SW5kZXhePTE7Zm9yKGxldCByPTA7ciE9PW47KytyKWVbcl0uX3VwZGF0ZShvLHQsaSxhKTtjb25zdCByPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClyW3RdLmFwcGx5KGEpO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwLGk9b1tuXTtpZih2b2lkIDAhPT1pKXtjb25zdCB0PWkua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7biE9PW87KytuKXtjb25zdCBvPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihvKTtjb25zdCBpPW8uX2NhY2hlSW5kZXgsYT1lW2UubGVuZ3RoLTFdO28uX2NhY2hlSW5kZXg9bnVsbCxvLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsYS5fY2FjaGVJbmRleD1pLGVbaV09YSxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24obyl9ZGVsZXRlIG9bbl19fXVuY2FjaGVSb290KHQpe2NvbnN0IGU9dC51dWlkLG49dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBvPW5bdF0uYWN0aW9uQnlSb290W2VdO3ZvaWQgMCE9PW8mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG8pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG8pKX1jb25zdCBvPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtlXTtpZih2b2lkIDAhPT1vKWZvcihjb25zdCB0IGluIG8pe2NvbnN0IGU9b1t0XTtlLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX11bmNhY2hlQWN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmV4aXN0aW5nQWN0aW9uKHQsZSk7bnVsbCE9PW4mJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKG4pLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKG4pKX19KS5wcm90b3R5cGUuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgxKSxjbGFzcyBleHRlbmRzIF9kdHtjb25zdHJ1Y3Rvcih0LGUsbj0xKXtzdXBlcih0LGUpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1ufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfWNsb25lKHQpe2NvbnN0IGU9c3VwZXIuY2xvbmUodCk7cmV0dXJuIGUubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsZX10b0pTT04odCl7Y29uc3QgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9fS5wcm90b3R5cGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxjbGFzcyBleHRlbmRzIHBydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubWF0ZXJpYWw9dCx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe30sdGhpcy5oYXNQb3NpdGlvbnM9ITEsdGhpcy5oYXNOb3JtYWxzPSExLHRoaXMuaGFzQ29sb3JzPSExLHRoaXMuaGFzVXZzPSExLHRoaXMucG9zaXRpb25BcnJheT1udWxsLHRoaXMubm9ybWFsQXJyYXk9bnVsbCx0aGlzLmNvbG9yQXJyYXk9bnVsbCx0aGlzLnV2QXJyYXk9bnVsbCx0aGlzLmNvdW50PTB9fS5wcm90b3R5cGUuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Q9ITA7Y29uc3QgYXV0PW5ldyBjYXQscnV0PW5ldyBCYXQsc3V0PW5ldyBCYXQ7ZnVuY3Rpb24gbHV0KHQpe2NvbnN0IGU9W107dCYmdC5pc0JvbmUmJmUucHVzaCh0KTtmb3IobGV0IG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyllLnB1c2guYXBwbHkoZSxsdXQodC5jaGlsZHJlbltuXSkpO3JldHVybiBlfWNvbnN0IGN1dD1uZXcgRmxvYXQzMkFycmF5KDEpO2Z1bmN0aW9uIGR1dCh0LGUsbil7aWYoMT09PW4pcmV0dXJuIG5ldyBScnQoZSk7Y29uc3Qgbz1kNyhlKTtpZighbyl0aHJvdyBuZXcgRXJyb3IoYGQzIGZhaWxlZCB0byByZWNvZ25pemUgdGhlIGNvbG9yOiAke2V9YCk7cmV0dXJuIG5ldyBScnQoZDgobyx0KSgxLW4pKX12YXIgcHV0LG11dCx1dXQsZnV0O2Z1bmN0aW9uIGd1dCh0LGUpe2NvbnN0IG49ZS5sZW5ndGgvMjtsZXQgbz10LmF0dHJpYnV0ZXMucG9zaXRpb247byYmby5jb3VudD09PTMqbnx8KG89bmV3IHpydChuZXcgRmxvYXQzMkFycmF5KDMqbiksMyksdC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixvKSk7Y29uc3QgaT1vLmFycmF5O2ZvcihsZXQgdD0wO3Q8bjt0KyspaVszKnRdPWVbMip0XSxpWzMqdCsxXT1lWzIqdCsxXTtvLm5lZWRzVXBkYXRlPSEwLHQuc2V0RHJhd1JhbmdlKDAsMypuKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIGh1dCh0LGUsbil7Y29uc3Qgbz1NYXRoLm1heChlLmxlbmd0aC8yLTEsMCksaT0yKm8qMyxhPTMqaTtsZXQgcj10LmF0dHJpYnV0ZXMucG9zaXRpb247ciYmci5jb3VudD09PWl8fChyPW5ldyB6cnQobmV3IEZsb2F0MzJBcnJheShhKSwzKSx0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLHIpKTtjb25zdCBzPXIuYXJyYXk7Zm9yKGxldCB0PTA7dDxvO3QrKyl7Y29uc3RbbyxpLGEscl09W2VbMip0XSxlWzIqdCsxXSxlWzIqdCsyXSxlWzIqdCszXV0sbD1uZXcgUWl0KG8saSksYz1uZXcgUWl0KGEsciksZD1uZXcgUWl0KGEtbyxyLWkpLHA9bmV3IFFpdCgtZC55LGQueCkuc2V0TGVuZ3RoKG4vMiksbT1sLmNsb25lKCkuYWRkKHApLHU9bC5jbG9uZSgpLnN1YihwKSxmPWMuY2xvbmUoKS5hZGQocCksZz1jLmNsb25lKCkuc3ViKHApLGg9W20ueCxtLnksMCx1LngsdS55LDAsZi54LGYueSwwLGYueCxmLnksMCx1LngsdS55LDAsZy54LGcueSwwXTtzLnNldChoLHQqaC5sZW5ndGgpfXIubmVlZHNVcGRhdGU9ITAsdC5zZXREcmF3UmFuZ2UoMCxhKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIGJ1dCh0LGUsbixvKXtjb25zdHt2aXNpYmxlOmksY29sb3I6YSxvcGFjaXR5OnJ9PW87aWYoQXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFyaWFudCBlcnJvcjogb25seSBleHBlY3Qgb25lIG1hdGVyaWFsIG9uIGFuIG9iamVjdCIpO2NvbnN0IHM9ZS5tYXRlcmlhbDtpZihzLnZpc2libGUhPT1pJiYocy52aXNpYmxlPWkscy5uZWVkc1VwZGF0ZT0hMCksIWkpcmV0dXJuITE7Y29uc3QgbD1kdXQodCxhLG51bGwhPXI/cjoxKSxjPW4oZS5nZW9tZXRyeSk7cmV0dXJuIGUuZ2VvbWV0cnkhPT1jJiYoZS5nZW9tZXRyeT1jKSxzLmNvbG9yLmVxdWFscyhsKXx8KHMuY29sb3Iuc2V0KGwpLHMubmVlZHNVcGRhdGU9ITApLCEwfW5ldyBJbnQzMkFycmF5KGN1dC5idWZmZXIpLGRwdC5jcmVhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGRwdC5wcm90b3R5cGUpLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZSx0fSxFbXQucHJvdG90eXBlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGF0aDogLmZyb21Qb2ludHMoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUG9pbnRzKCkuIiksdGhpcy5zZXRGcm9tUG9pbnRzKHQpfSxjbGFzcyBleHRlbmRzIG5wdHtjb25zdHJ1Y3Rvcih0PTEwLGU9MTAsbj00NDczOTI0LG89ODk0Nzg0OCl7bj1uZXcgUnJ0KG4pLG89bmV3IFJydChvKTtjb25zdCBpPWUvMixhPXQvZSxyPXQvMixzPVtdLGw9W107Zm9yKGxldCB0PTAsYz0wLGQ9LXI7dDw9ZTt0KyssZCs9YSl7cy5wdXNoKC1yLDAsZCxyLDAsZCkscy5wdXNoKGQsMCwtcixkLDAscik7Y29uc3QgZT10PT09aT9uOm87ZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9M31jb25zdCBjPW5ldyBxcnQ7Yy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRnJ0KHMsMykpLGMuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IEZydChsLDMpKSxzdXBlcihjLG5ldyBxZHQoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iR3JpZEhlbHBlciJ9fS5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLiIpfSxjbGFzcyBleHRlbmRzIG5wdHtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPWx1dCh0KSxuPW5ldyBxcnQsbz1bXSxpPVtdLGE9bmV3IFJydCgwLDAsMSkscj1uZXcgUnJ0KDAsMSwwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO24ucGFyZW50JiZuLnBhcmVudC5pc0JvbmUmJihvLnB1c2goMCwwLDApLG8ucHVzaCgwLDAsMCksaS5wdXNoKGEucixhLmcsYS5iKSxpLnB1c2goci5yLHIuZyxyLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGcnQobywzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgRnJ0KGksMykpLHN1cGVyKG4sbmV3IHFkdCh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KSksdGhpcy50eXBlPSJTa2VsZXRvbkhlbHBlciIsdGhpcy5pc1NrZWxldG9uSGVscGVyPSEwLHRoaXMucm9vdD10LHRoaXMuYm9uZXM9ZSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMX11cGRhdGVNYXRyaXhXb3JsZCh0KXtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LG89bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7c3V0LmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IHQ9MCxuPTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IGk9ZVt0XTtpLnBhcmVudCYmaS5wYXJlbnQuaXNCb25lJiYocnV0Lm11bHRpcGx5TWF0cmljZXMoc3V0LGkubWF0cml4V29ybGQpLGF1dC5zZXRGcm9tTWF0cml4UG9zaXRpb24ocnV0KSxvLnNldFhZWihuLGF1dC54LGF1dC55LGF1dC56KSxydXQubXVsdGlwbHlNYXRyaWNlcyhzdXQsaS5wYXJlbnQubWF0cml4V29ybGQpLGF1dC5zZXRGcm9tTWF0cml4UG9zaXRpb24ocnV0KSxvLnNldFhZWihuKzEsYXV0LngsYXV0LnksYXV0LnopLG4rPTIpfW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX0ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfSx4bXQucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxjbGFzc3tzdGF0aWMgZGVjb2RlVGV4dCh0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyKXJldHVybihuZXcgVGV4dERlY29kZXIpLmRlY29kZSh0KTtsZXQgZT0iIjtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWNhdGNoKHQpe3JldHVybiBlfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7Y29uc3QgZT10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1lPyIuLyI6dC5zdWJzdHIoMCxlKzEpfX0uZXh0cmFjdFVybEJhc2UodCl9LHhtdC5IYW5kbGVycz17YWRkOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5hZGQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuYWRkSGFuZGxlcigpIGluc3RlYWQuIil9LGdldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuZ2V0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmdldEhhbmRsZXIoKSBpbnN0ZWFkLiIpfX0sbWF0LnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKHQpfSxtYXQucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxtYXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LG1hdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX0sbWF0LnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZSh0KX0sUmF0LnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfSxFc3QucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LCRpdC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheSh0LGUpfSwkaXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LCRpdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSwkaXQucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0sJGl0LnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSwkaXQucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX0sQmF0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxCYXQucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxlKX0sQmF0LnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSwobmV3IGNhdCkuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxCYXQucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LEJhdC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmF0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSxCYXQucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LEJhdC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxCYXQucHJvdG90eXBlLnJvdGF0ZUF4aXM9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnRyYW5zZm9ybURpcmVjdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSx0LnRyYW5zZm9ybURpcmVjdGlvbih0aGlzKX0sQmF0LnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sQmF0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmF0LnByb3RvdHlwZS5yb3RhdGVYPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxCYXQucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LEJhdC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmF0LnByb3RvdHlwZS5yb3RhdGVCeUF4aXM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmF0LnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LEJhdC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sQmF0LnByb3RvdHlwZS5tYWtlRnJ1c3R1bT1mdW5jdGlvbih0LGUsbixvLGksYSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VGcnVzdHVtKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5tYWtlUGVyc3BlY3RpdmUoIGxlZnQsIHJpZ2h0LCB0b3AsIGJvdHRvbSwgbmVhciwgZmFyICkgaW5zdGVhZC4iKSx0aGlzLm1ha2VQZXJzcGVjdGl2ZSh0LGUsbyxuLGksYSl9LEJhdC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfSxrc3QucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZSh0KX0sbGF0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LGxhdC5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfSxMYXQucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0sTGF0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0sTGF0LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LHZydC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sdnJ0LnByb3RvdHlwZS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSl9LHZydC5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sdnJ0LnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKHQpfSx2cnQucHJvdG90eXBlLnBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9LHZydC5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLHZydC5nZXRCYXJ5Y29vcmQodCxlLG4sbyxpKX0sdnJ0Lm5vcm1hbD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHZydC5nZXROb3JtYWwodCxlLG4sbyl9LFJtdC5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sUm10LnByb3RvdHlwZS5leHRydWRlPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBubXQodGhpcyx0KX0sUm10LnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IGltdCh0aGlzLHQpfSxRaXQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LFFpdC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8odCl9LFFpdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9LGNhdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX0sY2F0LnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSxjYXQucHJvdG90eXBlLmdldFBvc2l0aW9uRnJvbU1hdHJpeD1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LGNhdC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZSh0KX0sY2F0LnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGUsdCl9LGNhdC5wcm90b3R5cGUuYXBwbHlQcm9qZWN0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LGNhdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKX0sY2F0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyh0KX0sY2F0LnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX0sYWF0LnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pfSxhYXQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfSxwcnQucHJvdG90eXBlLmdldENoaWxkQnlOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKSx0aGlzLmdldE9iamVjdEJ5TmFtZSh0KX0scHJ0LnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSxwcnQucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhlLHQpfSxwcnQucHJvdG90eXBlLmdldFdvcmxkUm90YXRpb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUm90YXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuT2JqZWN0M0QuZ2V0V29ybGRRdWF0ZXJuaW9uKCB0YXJnZXQgKSBpbnN0ZWFkLiIpfSxwcnQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocHJ0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj10fX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSkscHN0LnByb3RvdHlwZS5zZXREcmF3TW9kZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5zZXREcmF3TW9kZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBzdC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLGpkdC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LF9zdC5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbih0LGUpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx2b2lkIDAhPT1lJiYodGhpcy5maWxtR2F1Z2U9ZSksdGhpcy5zZXRGb2NhbExlbmd0aCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQW10LnByb3RvdHlwZSx7b25seVNoYWRvdzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLm9ubHlTaGFkb3cgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd0NhbWVyYUZvdjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGb3YgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZvdi4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZm92PXR9fSxzaGFkb3dDYW1lcmFMZWZ0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUxlZnQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmxlZnQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmxlZnQ9dH19LHNoYWRvd0NhbWVyYVJpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVJpZ2h0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5yaWdodC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEucmlnaHQ9dH19LHNoYWRvd0NhbWVyYVRvcDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFUb3AgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnRvcC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEudG9wPXR9fSxzaGFkb3dDYW1lcmFCb3R0b206e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhQm90dG9tIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5ib3R0b20uIiksdGhpcy5zaGFkb3cuY2FtZXJhLmJvdHRvbT10fX0sc2hhZG93Q2FtZXJhTmVhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFOZWFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5uZWFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5uZWFyPXR9fSxzaGFkb3dDYW1lcmFGYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRmFyIGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZhcj10fX0sc2hhZG93Q2FtZXJhVmlzaWJsZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVZpc2libGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5DYW1lcmFIZWxwZXIoIGxpZ2h0LnNoYWRvdy5jYW1lcmEgKSBpbnN0ZWFkLiIpfX0sc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIiksdGhpcy5zaGFkb3cuYmlhcz10fX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPXR9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpLHRoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHpydC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAubGVuZ3RoIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuY291bnQgaW5zdGVhZC4iKSx0aGlzLmFycmF5Lmxlbmd0aH19LGR5bmFtaWM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmR5bmFtaWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1WaXR9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShWaXQpfX19KSx6cnQucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1ZpdDpCaXQpLHRoaXN9LHpydC5wcm90b3R5cGUuY29weUluZGljZXNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSx6cnQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX0scXJ0LnByb3RvdHlwZS5hZGRJbmRleD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LHFydC5wcm90b3R5cGUuYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRBdHRyaWJ1dGUoKS4iKSxlJiZlLmlzQnVmZmVyQXR0cmlidXRlfHxlJiZlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ImluZGV4Ij09PXQ/KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGUpLHRoaXMpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSk6KGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuc2V0QXR0cmlidXRlKHQsbmV3IHpydChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpfSxxcnQucHJvdG90eXBlLmFkZERyYXdDYWxsPWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxlKX0scXJ0LnByb3RvdHlwZS5jbGVhckRyYXdDYWxscz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LHFydC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxxcnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxxcnQucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocXJ0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksX2R0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0RHluYW1pYygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0VXNhZ2UoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UoITA9PT10P1ZpdDpCaXQpLHRoaXN9LF9kdC5wcm90b3R5cGUuc2V0QXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9LG5tdC5wcm90b3R5cGUuZ2V0QXJyYXlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbm10LnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxubXQucHJvdG90eXBlLmFkZFNoYXBlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSx5ZHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPcnQucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBScnR9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT10fX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz10fX0sdmVydGV4VGFuZ2VudHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGJzdC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPXR9fX0pLGJkdC5wcm90b3R5cGUuY2xlYXJUYXJnZXQ9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY2xlYXJUYXJnZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGFuZCAuY2xlYXIoKSBpbnN0ZWFkLiIpLHRoaXMuc2V0UmVuZGVyVGFyZ2V0KHQpLHRoaXMuY2xlYXIoZSxuLG8pfSxiZHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcCh0KX0sYmR0LnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9LGJkdC5wcm90b3R5cGUuZ2V0TWF4QW5pc290cm9weT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRNYXhBbmlzb3Ryb3B5KCkgaXMgbm93IC5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpLiIpLHRoaXMuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKX0sYmR0LnByb3RvdHlwZS5nZXRQcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn0sYmR0LnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX0sYmR0LnByb3RvdHlwZS5zdXBwb3J0c0Zsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iil9LGJkdC5wcm90b3R5cGUuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxiZHQucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxiZHQucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVTM1RDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil9LGJkdC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LGJkdC5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfSxiZHQucHJvdG90eXBlLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcygpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnZlcnRleFRleHR1cmVzfSxiZHQucHJvdG90eXBlLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfSxiZHQucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QodCl9LGJkdC5wcm90b3R5cGUuaW5pdE1hdGVyaWFsPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuaW5pdE1hdGVyaWFsKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmR0LnByb3RvdHlwZS5hZGRQcmVQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxiZHQucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmR0LnByb3RvdHlwZS51cGRhdGVTaGFkb3dNYXA9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC51cGRhdGVTaGFkb3dNYXAoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxiZHQucHJvdG90eXBlLnNldEZhY2VDdWxsaW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxiZHQucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmR0LnByb3RvdHlwZS5zZXRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGJkdC5wcm90b3R5cGUuc2V0VGV4dHVyZTJEPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmR0LnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYmR0LnByb3RvdHlwZS5nZXRBY3RpdmVNaXBNYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRBY3RpdmVNaXBNYXBMZXZlbCgpIGlzIG5vdyAuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKS4iKSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGJkdC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9dH19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9dH19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPSEwPT09dD9JaXQ6eml0fX0sdG9uZU1hcHBpbmdXaGl0ZVBvaW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIiksMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNkdC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmF0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxjbGFzcyBleHRlbmRzIHBydHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtjb25zdCBlPXRoaXM7cmV0dXJuKG5ldyBZbXQpLmxvYWQodCwoZnVuY3Rpb24odCl7ZS5zZXRCdWZmZXIodCl9KSksdGhpc30sTXN0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKHQsZSl9LE1zdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcih0LGUsbixvKX0sZWF0LmNyb3NzT3JpZ2luPXZvaWQgMCxlYXQubG9hZFRleHR1cmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCBpPW5ldyBTbXQ7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBhPWkubG9hZCh0LG4sdm9pZCAwLG8pO3JldHVybiBlJiYoYS5tYXBwaW5nPWUpLGF9LGVhdC5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24odCxlLG4sbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IGk9bmV3IGttdDtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IGE9aS5sb2FkKHQsbix2b2lkIDAsbyk7cmV0dXJuIGUmJihhLm1hcHBpbmc9ZSksYX0sZWF0LmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX0sZWF0LmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246IjEzMSJ9fSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPSIxMzEiKSwoZnVuY3Rpb24odCl7dFt0LkNJUkNMRT0wXT0iQ0lSQ0xFIix0W3QuTElORT0xXT0iTElORSIsdFt0LlRSSUFOR0xFPTJdPSJUUklBTkdMRSIsdFt0LlRSQVBFWk9JRD0zXT0iVFJBUEVaT0lEIn0pKHB1dHx8KHB1dD17fSkpO2NsYXNzIHl1dHtjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLmNvb3JkaW5hdG9yPWUsdGhpcy5zY2VuZT1uZXcgeWR0LHRoaXMuYmFja2dyb3VuZENvbG9yPSIjZmZmIixpaXQoKSYmdCBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcyYmKHQuc3R5bGU9dC5zdHlsZXx8e30pLG8mJnQuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsbyksdGhpcy5yZW5kZXJlcj1uZXcgYmR0KHtjYW52YXM6dCxjb250ZXh0OnQuZ2V0Q29udGV4dCgid2ViZ2wyIix7YW50aWFsaWFzOiEwLHByZWNpc2lvbjoiaGlnaHAiLGFscGhhOiEwfSl9KSx0aGlzLnJlbmRlcmVyLnNldFBpeGVsUmF0aW8obil9b25SZXNpemUodCl7dGhpcy5yZW5kZXJlci5zZXRTaXplKHQud2lkdGgsdC5oZWlnaHQpfWRlc3Ryb3lPYmplY3QodCl7Y29uc3QgZT10Lm9iajNkO2lmKHRoaXMuc2NlbmUucmVtb3ZlKGUpLGUgaW5zdGFuY2VvZiBwc3Qpe2UuZ2VvbWV0cnkuZGlzcG9zZSgpO2NvbnN0IHQ9QXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKT9lLm1hdGVyaWFsOltlLm1hdGVyaWFsXTtmb3IoY29uc3QgZSBvZiB0KWUuZGlzcG9zZSgpfX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLmJhY2tncm91bmRDb2xvcj10PyIjMzAzMDMwIjoiI2ZmZiJ9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxuKXt2YXIgbztpZighdCYmIW4udmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOmksd2lkdGg6YX09bjtpZighdCl7Y29uc3QgdD1kdXQodGhpcy5iYWNrZ3JvdW5kQ29sb3Isbi5jb2xvcixudWxsIT09KG89bi5vcGFjaXR5KSYmdm9pZCAwIT09bz9vOjEpLHI9bmV3IHFydCxzPW5ldyBxZHQoe2NvbG9yOnR9KSxsPW5ldyBwc3QocixzKTtyZXR1cm4gcy52aXNpYmxlPWksaHV0KHIsZSxhKSx0aGlzLnNjZW5lLmFkZChsKSx7dHlwZTpwdXQuTElORSxkYXRhOmUsb2JqM2Q6bCx3aWR0aDphfX1jb25zdHtkYXRhOnIsb2JqM2Q6cyx3aWR0aDpsfT10O3JldHVybiBidXQodGhpcy5iYWNrZ3JvdW5kQ29sb3IscywodD0+KGE9PT1sJiZyJiZhaXQocixlKXx8aHV0KHQsZSxhKSx0KSksbik/e3R5cGU6cHV0LkxJTkUsZGF0YTplLG9iajNkOnMsd2lkdGg6YX06dH1jcmVhdGVNZXNoKHQsZSl7aWYoIWUudmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOm4sY29sb3I6byxvcGFjaXR5Oml9PWUsYT1kdXQodGhpcy5iYWNrZ3JvdW5kQ29sb3IsbyxudWxsIT1pP2k6MSkscj1uZXcgQXJ0KHtjb2xvcjphLHZpc2libGU6bn0pO3JldHVybiBuZXcgcHN0KHQscil9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsbil7Y29uc3R7c2l6ZTpvfT1uLGk9bypNYXRoLnNxcnQoMykvMixhPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1vLzIsZS55LWkvMyxlLngrby8yLGUueS1pLzMsZS54LGUueSsyKmkvM10pO2lmKCF0KXtjb25zdCB0PW5ldyBxcnQ7Z3V0KHQsYSk7Y29uc3Qgbz10aGlzLmNyZWF0ZU1lc2godCxuKTtyZXR1cm4gbnVsbD09PW8/bnVsbDoodGhpcy5zY2VuZS5hZGQobykse3R5cGU6cHV0LlRSSUFOR0xFLGRhdGE6ZSxvYmozZDpvfSl9cmV0dXJuIGJ1dCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCh0PT4oZ3V0KHQsYSksdCkpLG4pP3t0eXBlOnB1dC5UUklBTkdMRSxkYXRhOmUsb2JqM2Q6dC5vYmozZH06dH1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbil7Y29uc3R7cmFkaXVzOm99PW4saT1uZXcgY3B0KG4ucmFkaXVzKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2goaSxuKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodC5wb3NpdGlvbi5zZXQoZS54LGUueSwwKSx0aGlzLnNjZW5lLmFkZCh0KSx7dHlwZTpwdXQuQ0lSQ0xFLGRhdGE6e2xvYzplLHJhZGl1czpvfSxvYmozZDp0fSl9cmV0dXJuIGJ1dCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+aSksbik/KHQub2JqM2QucG9zaXRpb24uc2V0KGUueCxlLnksMCkse3R5cGU6cHV0LkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6b30sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxlLG4sbyl7aWYoZS55IT09bi55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtjb25zdHthbHRpdHVkZTppfT1vLGE9Mi9NYXRoLnNxcnQoMykqaSxyPW5ldyBSbXQoW25ldyBRaXQoZS54LWEvMixlLnktaS8yKSxuZXcgUWl0KGUueCxlLnkraS8yKSxuZXcgUWl0KG4ueCxuLnkraS8yKSxuZXcgUWl0KG4ueCthLzIsbi55LWkvMildKTtyLmF1dG9DbG9zZT0hMDtjb25zdCBzPW5ldyBpbXQocik7aWYoIXQpe2NvbnN0IHQ9dGhpcy5jcmVhdGVNZXNoKHMsbyk7cmV0dXJuIG51bGw9PT10P251bGw6KHRoaXMuc2NlbmUuYWRkKHQpLHt0eXBlOnB1dC5UUkFQRVpPSUQsZGF0YTpbZSxuXSxvYmozZDp0fSl9cmV0dXJuIGJ1dCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgoKT0+cyksbyk/e3R5cGU6cHV0LlRSQVBFWk9JRCxkYXRhOltlLG5dLG9iajNkOnQub2JqM2R9OnR9Zmx1c2goKXt0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLHRoaXMuY29vcmRpbmF0b3IuZ2V0Q2FtZXJhKCkpfX1jbGFzcyBfdXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlbmRlckNhY2hlPXQsdGhpcy5yZW5kZXJlcj1lfXNldExpbmUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUxpbmVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRUcmlhbmdsZSh0LGUsbil7Y29uc3Qgbz10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlVHJpYW5nbGVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4pO28mJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxvKX1zZXRDaXJjbGUodCxlLG4pe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLGUsbik7byYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LG8pfXNldFRyYXBlem9pZCh0LGUsbixvKXtjb25zdCBpPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLG4sbyk7aSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGkpfX1jbGFzcyBDdXR7Y29uc3RydWN0b3IoKXt0aGlzLnByZXZGcmFtZUNhY2hlPW5ldyBNYXAsdGhpcy5jdXJyRnJhbWVDYWNoZT1uZXcgTWFwfWdldEZyb21QcmV2aW91c0ZyYW1lKHQpe2NvbnN0IGU9dGhpcy5wcmV2RnJhbWVDYWNoZS5nZXQodCk7cmV0dXJuIG51bGwhPWU/ZTpudWxsfXNldFRvQ3VycmVudEZyYW1lKHQsZSl7dGhpcy5jdXJyRnJhbWVDYWNoZS5zZXQodCxlKX1maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpe2NvbnN0IHQ9W107Zm9yKGNvbnN0W2Usbl1vZiB0aGlzLnByZXZGcmFtZUNhY2hlLmVudHJpZXMoKSl0aGlzLmN1cnJGcmFtZUNhY2hlLmhhcyhlKXx8dC5wdXNoKG4pO3JldHVybiB0aGlzLnByZXZGcmFtZUNhY2hlPXRoaXMuY3VyckZyYW1lQ2FjaGUsdGhpcy5jdXJyRnJhbWVDYWNoZT1uZXcgTWFwLHR9fSEoZnVuY3Rpb24odCl7dFt0Lk5VTUJFUj0wXT0iTlVNQkVSIix0W3QuTkFOPTFdPSJOQU4ifSkobXV0fHwobXV0PXt9KSk7Y2xhc3MgTXV0IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5yYXdTZXJpZXNEYXRhPVtdLHRoaXMuc2VyaWVzPVtdLHRoaXMucGFpbnREaXJ0eT0hMCx0aGlzLnJlbmRlckNhY2hlPW5ldyBDdXQsdGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj1udWxsLHRoaXMubGF5b3V0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsPXQuZ2V0TWV0YWRhdGFNYXAsdGhpcy5jb29yZGluYXRvcj10LmNvb3JkaW5hdG9yLHRoaXMucmVuZGVyZXI9dC5yZW5kZXJlcix0aGlzLnBhaW50QnJ1c2g9bmV3IF91dCh0aGlzLnJlbmRlckNhY2hlLHRoaXMucmVuZGVyZXIpfXNldExheW91dFJlY3QodCl7dGhpcy5sYXlvdXQueD09PXQueCYmdGhpcy5sYXlvdXQud2lkdGg9PT10LndpZHRoJiZ0aGlzLmxheW91dC55PT09dC55JiZ0aGlzLmxheW91dC5oZWlnaHQ9PT10LmhlaWdodHx8KHRoaXMucGFpbnREaXJ0eT0hMCksdGhpcy5sYXlvdXQ9dH1nZXRMYXlvdXRSZWN0KCl7cmV0dXJuIHRoaXMubGF5b3V0fWdldE1ldGFkYXRhTWFwKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsKCl9bWFya0FzUGFpbnREaXJ0eSgpe3RoaXMucGFpbnREaXJ0eT0hMH1yZW5kZXIoKXtpZih0aGlzLnRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpLHRoaXMucGFpbnREaXJ0eSl7dGhpcy5yZWRyYXcoKTtmb3IoY29uc3QgdCBvZiB0aGlzLnJlbmRlckNhY2hlLmZpbmFsaXplRnJhbWVBbmRHZXRSZW1vdmVkKCkpdGhpcy5yZW5kZXJlci5kZXN0cm95T2JqZWN0KHQpO3RoaXMucGFpbnREaXJ0eT0hMX19aXNDb29yZGluYXRlVXBkYXRlZCgpe3JldHVybiB0aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSE9PXRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXJ9Y2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpe3RoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9bnVsbH1zZXREYXRhKHQpe3RoaXMuY2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpLHRoaXMucmF3U2VyaWVzRGF0YT10fXRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpe2lmKCF0aGlzLmlzQ29vcmRpbmF0ZVVwZGF0ZWQoKSlyZXR1cm47Y29uc3QgdD10aGlzLmdldExheW91dFJlY3QoKTt0aGlzLnNlcmllcz1uZXcgQXJyYXkodGhpcy5yYXdTZXJpZXNEYXRhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJhd1Nlcmllc0RhdGEubGVuZ3RoO2UrKyl7Y29uc3Qgbj10aGlzLnJhd1Nlcmllc0RhdGFbZV07dGhpcy5zZXJpZXNbZV09e2lkOm4uaWQscG9seWxpbmU6bmV3IEZsb2F0MzJBcnJheSgyKm4ucG9pbnRzLmxlbmd0aCl9O2ZvcihsZXQgbz0wO288bi5wb2ludHMubGVuZ3RoO28rKyl7Y29uc3RbaSxhXT10aGlzLmNvb3JkaW5hdG9yLnRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxbbi5wb2ludHNbb10ueCxuLnBvaW50c1tvXS55XSk7dGhpcy5zZXJpZXNbZV0ucG9seWxpbmVbMipvXT1pLHRoaXMuc2VyaWVzW2VdLnBvbHlsaW5lWzIqbysxXT1hfX10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPXRoaXMuY29vcmRpbmF0b3IuZ2V0VXBkYXRlSWRlbnRpZmllcigpLHRoaXMubWFya0FzUGFpbnREaXJ0eSgpfX17cmVjb3JkUGFydGl0aW9uKHQsZSxuKXtyZXR1cm4gdD97dHlwZTptdXQuTlVNQkVSLHBvbHlsaW5lOmV9Ont0eXBlOm11dC5OQU4scG9seWxpbmU6ZS5tYXAoKCh0LGUpPT5pc05hTih0KT9lJTI9PTA/bi54Om4ueTp0KSl9fXBhcnRpdGlvblBvbHlsaW5lKHQpe2NvbnN0IGU9W107bGV0IG49MCxvPSExO2NvbnN0IGk9dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHRoaXMuZ2V0TGF5b3V0UmVjdCgpLFswLDBdKSxhPXt4OmlbMF0seTppWzFdfTtsZXQgcj1udWxsO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSs9Mil7Y29uc3QgYT10W2ldLHM9dFtpKzFdLGw9aXNOYU4oYSl8fGlzTmFOKHMpO2whPT1vJiZuIT09aSYmKGUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighbyx0LnNsaWNlKG4saSksbnVsbD09PXI/e3g6YSx5OnN9OnIpKSxuPWkpLGx8fChyPXt4OmEseTpzfSksbz1sfXJldHVybiBuIT09dC5sZW5ndGgtMSYmZS5wdXNoKHRoaXMucmVjb3JkUGFydGl0aW9uKCFvLHQuc2xpY2Uobix0Lmxlbmd0aCksbnVsbCE9cj9yOmEpKSxlfXJlZHJhdygpe3ZhciB0LGUsbjtmb3IoY29uc3QgbyBvZiB0aGlzLnNlcmllcyl7Y29uc3QgaT10aGlzLmdldE1ldGFkYXRhTWFwKClbby5pZF07aWYoIWkpY29udGludWU7aWYoby5wb2x5bGluZS5sZW5ndGglMiE9MCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBoYXZlIG9kZCBsZW5ndGgtZWQgcG9seWxpbmU6ICR7by5wb2x5bGluZS5sZW5ndGh9YCk7Y29uc3QgYT10aGlzLnBhcnRpdGlvblBvbHlsaW5lKG8ucG9seWxpbmUpO2Zvcihjb25zdFtyLHt0eXBlOnMscG9seWxpbmU6bH1db2YgYS5lbnRyaWVzKCkpaWYocz09PW11dC5OVU1CRVIpMj09PWwubGVuZ3RoP3RoaXMucGFpbnRCcnVzaC5zZXRDaXJjbGUoSlNPTi5zdHJpbmdpZnkoWyJjaXJjbGUiLG8uaWQscl0pLHt4OmxbMF0seTpsWzFdfSx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0odD1pLm9wYWNpdHkpJiZ2b2lkIDAhPT10P3Q6MSxyYWRpdXM6NH0pOnRoaXMucGFpbnRCcnVzaC5zZXRMaW5lKEpTT04uc3RyaW5naWZ5KFsibGluZSIsby5pZCxyXSksbCx7Y29sb3I6aS5jb2xvcix2aXNpYmxlOmkudmlzaWJsZSxvcGFjaXR5Om51bGwhPT0oZT1pLm9wYWNpdHkpJiZ2b2lkIDAhPT1lP2U6MSx3aWR0aDoyfSk7ZWxzZSBpZighaS5hdXgpZm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kz0yKXRoaXMucGFpbnRCcnVzaC5zZXRUcmlhbmdsZShKU09OLnN0cmluZ2lmeShbIk5hTiIsby5pZCxsW3RdLGxbdCsxXV0pLHt4OmxbdF0seTpsW3QrMV19LHtjb2xvcjppLmNvbG9yLHZpc2libGU6aS52aXNpYmxlLG9wYWNpdHk6bnVsbCE9PShuPWkub3BhY2l0eSkmJnZvaWQgMCE9PW4/bjoxLHNpemU6MTJ9KX19fWNsYXNzIHZ1dCBleHRlbmRzIHJpdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jYW1lcmE9bmV3IFVzdCgwLDFlMywxZTMsMCwwLDEwMCl9aXNZQXhpc1BvaW50ZWREb3duKCl7cmV0dXJuITF9c2V0RG9tQ29udGFpbmVyUmVjdCh0KXtzdXBlci5zZXREb21Db250YWluZXJSZWN0KHQpLHRoaXMuY2FtZXJhLmxlZnQ9dC54LHRoaXMuY2FtZXJhLnJpZ2h0PXQueCt0LndpZHRoLHRoaXMuY2FtZXJhLnRvcD10LnkrdC5oZWlnaHQsdGhpcy5jYW1lcmEuYm90dG9tPXQueSx0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Z2V0Q2FtZXJhKCl7cmV0dXJuIHRoaXMuY2FtZXJhfX1jbGFzcyB4dXR7Y29uc3RydWN0b3IodCl7c3dpdGNoKHRoaXMubWV0YWRhdGFNYXA9e30sdGhpcy5zaG91bGRSZXBhaW50PSExLHRoaXMuY2FsbGJhY2tzPXQuY2FsbGJhY2tzLHQudHlwZSl7Y2FzZSBLMi5TVkc6dGhpcy5jb29yZGluYXRvcj1uZXcgcml0LHRoaXMucmVuZGVyZXI9bmV3IGxpdCh0LmNvbnRhaW5lcik7YnJlYWs7Y2FzZSBLMi5XRUJHTDp7Y29uc3QgZT1uZXcgdnV0O3RoaXMuY29vcmRpbmF0b3I9ZSx0aGlzLnJlbmRlcmVyPW5ldyB5dXQodC5jb250YWluZXIsZSx0LmRldmljZVBpeGVsUmF0aW8sdC5jYWxsYmFja3Mub25Db250ZXh0TG9zdCk7YnJlYWt9fXRoaXMucmVuZGVyZXIuc2V0VXNlRGFya01vZGUodC51c2VEYXJrTW9kZSksdGhpcy5zZXJpZXNMaW5lVmlldz1uZXcgTXV0KHtyZW5kZXJlcjp0aGlzLnJlbmRlcmVyLGNvb3JkaW5hdG9yOnRoaXMuY29vcmRpbmF0b3IsZ2V0TWV0YWRhdGFNYXA6KCk9PnRoaXMubWV0YWRhdGFNYXB9KSx0aGlzLnJlc2l6ZSh0LmRvbURpbWVuc2lvbil9ZGlzcG9zZSgpe31zZXRYU2NhbGVUeXBlKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0WFNjYWxlKCRvdCh0KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0WVNjYWxlKCRvdCh0KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1yZXNpemUodCl7dGhpcy5jb29yZGluYXRvci5zZXREb21Db250YWluZXJSZWN0KE9iamVjdC5hc3NpZ24oe3g6MCx5OjB9LHQpKSx0aGlzLnJlbmRlcmVyLm9uUmVzaXplKE9iamVjdC5hc3NpZ24oe3g6MCx5OjB9LHQpKSx0aGlzLnNlcmllc0xpbmVWaWV3LnNldExheW91dFJlY3QoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt4OjAseTowfSkpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0TWV0YWRhdGEodCl7bGV0IGU9ITE7T2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG5dKT0+e2NvbnN0IG89dGhpcy5tZXRhZGF0YU1hcFt0XTtvJiZuLmNvbG9yPT09by5jb2xvciYmbi52aXNpYmxlPT09by52aXNpYmxlJiZuLm9wYWNpdHk9PT1vLm9wYWNpdHl8fChlPSEwKSx0aGlzLm1ldGFkYXRhTWFwW3RdPW59KSksZSYmdGhpcy5zZXJpZXNMaW5lVmlldy5tYXJrQXNQYWludERpcnR5KCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRWaWV3Qm94KHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0Vmlld0JveFJlY3Qoe3g6dC54WzBdLHdpZHRoOnQueFsxXS10LnhbMF0seTp0LnlbMF0saGVpZ2h0OnQueVsxXS10LnlbMF19KSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldERhdGEodCl7dGhpcy5zZXJpZXNMaW5lVmlldy5zZXREYXRhKHQpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0VXNlRGFya01vZGUodCl7dGhpcy5yZW5kZXJlci5zZXRVc2VEYXJrTW9kZSh0KSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNjaGVkdWxlUmVwYWludCgpe3RoaXMuc2hvdWxkUmVwYWludHx8KHRoaXMuc2hvdWxkUmVwYWludD0hMCxzZWxmLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLnJlcGFpbnQoKSx0aGlzLnNob3VsZFJlcGFpbnQ9ITF9KSkpfXJlcGFpbnQoKXt0aGlzLnNlcmllc0xpbmVWaWV3LnJlbmRlcigpLHRoaXMucmVuZGVyZXIuZmx1c2goKSx0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKX19ZnVuY3Rpb24gT3V0KHQpe2lmKHQuaW5jbHVkZXMoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiV29ya2VyIGZhY3Rvcnkgb25seSBhbGxvd3MgZmlsZSBuYW1lIGFuZCBubyByZXNvdXJjZSBwYXRoLiIpO3JldHVybiBuZXcgV29ya2VyKHQpfSEoZnVuY3Rpb24odCl7dFt0LlNFUklFU19EQVRBX1VQREFURUQ9MF09IlNFUklFU19EQVRBX1VQREFURUQiLHRbdC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRD0xXT0iU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQiLHRbdC5TQ0FMRV9VUERBVEVEPTJdPSJTQ0FMRV9VUERBVEVEIix0W3QuVklFV19CT1hfVVBEQVRFRD0zXT0iVklFV19CT1hfVVBEQVRFRCIsdFt0LklOSVQ9NF09IklOSVQiLHRbdC5ET01fUkVTSVpFRD01XT0iRE9NX1JFU0laRUQiLHRbdC5EQVJLX01PREVfVVBEQVRFRD02XT0iREFSS19NT0RFX1VQREFURUQifSkodXV0fHwodXV0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5PTl9SRURSQVdfRU5EPTBdPSJPTl9SRURSQVdfRU5EIix0W3QuT05fQ09OVEVYVF9MT1NUPTFdPSJPTl9DT05URVhUX0xPU1QifSkoZnV0fHwoZnV0PXt9KSk7Y2xhc3MgUHV0e2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMuY2FsbGJhY2tzPXQuY2FsbGJhY2tzLHQudHlwZSE9PUsyLldFQkdMKXRocm93IG5ldyBSYW5nZUVycm9yKGBDYW5ub3QgdXNlIG5vbiBXRUJHTCByZW5kZXJlciBmb3IgdGhlIG9mZnNjcmVlbiBsaW5lIGNoYXJ0LiBSZWNlaXZlZCAke0syW3QudHlwZV19IGApO2NvbnN0IGU9bmV3IE1lc3NhZ2VDaGFubmVsO2UucG9ydDEub25tZXNzYWdlPXQ9Pnt0aGlzLm9uTWVzc2FnZUZyb21Xb3JrZXIodC5kYXRhKX0sdGhpcy50eE1lc3NhZ2VQb3J0PWUucG9ydDE7Y29uc3Qgbj10LmNvbnRhaW5lci50cmFuc2ZlckNvbnRyb2xUb09mZnNjcmVlbigpO3RoaXMud29ya2VySW5zdGFuY2U9UHV0LndvcmtlclBvb2wuZ2V0TmV4dCgpO2NvbnN0IG89e3R5cGU6dXV0LklOSVQsY2FudmFzOm4sZGV2aWNlUGl4ZWxSYXRpbzp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxkaW06dC5kb21EaW1lbnNpb24scmVuZGVyZXJUeXBlOnQudHlwZSx1c2VEYXJrTW9kZTp0LnVzZURhcmtNb2RlfTt0aGlzLndvcmtlckluc3RhbmNlLnBvc3RNZXNzYWdlKG8sW24sZS5wb3J0Ml0pfWRpc3Bvc2UoKXt0aGlzLndvcmtlckluc3RhbmNlLmZyZWUoKSx0aGlzLnR4TWVzc2FnZVBvcnQuY2xvc2UoKX1zZXRYU2NhbGVUeXBlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6dXV0LlNDQUxFX1VQREFURUQsYXhpczoieCIsc2NhbGVUeXBlOnR9KX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6dXV0LlNDQUxFX1VQREFURUQsYXhpczoieSIsc2NhbGVUeXBlOnR9KX1yZXNpemUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTp1dXQuRE9NX1JFU0laRUQsZGltOnR9KX1zZXRNZXRhZGF0YSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOnV1dC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRCxtZXRhZGF0YTp0fSl9c2V0Vmlld0JveCh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOnV1dC5WSUVXX0JPWF9VUERBVEVELGV4dGVudDp0fSl9c2V0RGF0YSh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9dC5yZWR1Y2UoKCh0LGUpPT50K2UucG9pbnRzLmxlbmd0aCksMCk7bGV0IG49MDtjb25zdCBvPW5ldyBGbG9hdDY0QXJyYXkoMiplKSxpPVtdO2Zvcihjb25zdCBlIG9mIHQpe2kucHVzaCh7aWQ6ZS5pZCxsZW5ndGg6ZS5wb2ludHMubGVuZ3RofSk7Zm9yKGxldCB0PTA7dDxlLnBvaW50cy5sZW5ndGg7dCsrKW9bbisrXT1lLnBvaW50c1t0XS54LG9bbisrXT1lLnBvaW50c1t0XS55fXJldHVybntpZHNBbmRMZW5ndGhzOmksZmxhdHRlbmVkU2VyaWVzOm8uYnVmZmVyfX0pKHQpO3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6dXV0LlNFUklFU19EQVRBX1VQREFURUQsY29tcGFjdERhdGFTZXJpZXM6ZX0sW2UuZmxhdHRlbmVkU2VyaWVzXSl9c2V0VXNlRGFya01vZGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTp1dXQuREFSS19NT0RFX1VQREFURUQsdXNlRGFya01vZGU6dH0pfXNlbmRNZXNzYWdlKHQsZSl7ZT90aGlzLnR4TWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UodCxlKTp0aGlzLnR4TWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UodCl9b25NZXNzYWdlRnJvbVdvcmtlcih0KXtzd2l0Y2godC50eXBlKXtjYXNlIGZ1dC5PTl9SRURSQVdfRU5EOnRoaXMuY2FsbGJhY2tzLm9uRHJhd0VuZCgpO2JyZWFrO2Nhc2UgZnV0Lk9OX0NPTlRFWFRfTE9TVDp0aGlzLmNhbGxiYWNrcy5vbkNvbnRleHRMb3N0KCl9fX1mdW5jdGlvbiB3dXQodCxlKXtyZXR1cm4ieCI9PT1lP1swLHQud2lkdGhdOlt0LmhlaWdodCwwXX1mdW5jdGlvbiBrdXQodCxlKXtjb25zdCBuPU1hdGguZmxvb3IodC81MCk7cmV0dXJuIE1hdGgubWluKG4sZSl9ZnVuY3Rpb24gU3V0KHQsZSl7aWYoMSZ0JiYocWkoKSxUbSgwLCJsaW5lIiwyKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oKTtwdSgiemVybyIsMD09PXQpLGpwKCJ4MSIsbi5nZXREb21YKHQpKSgieDIiLG4uZ2V0RG9tWCh0KSkoInkyIixuLmRvbURpbS5oZWlnaHQpfX1mdW5jdGlvbiBEdXQodCxlKXtpZigxJnQmJihxaSgpLFRtKDAsImxpbmUiLDMpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgpO3B1KCJ6ZXJvIiwwPT09dCksanAoInkxIixuLmdldERvbVkodCkpKCJ4MiIsbi5kb21EaW0ud2lkdGgpKCJ5MiIsbi5nZXREb21ZKHQpKX19UHV0LndvcmtlclBvb2w9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsZT0xMCxuPU91dCl7dGhpcy53b3JrZXJSZXNvdXJjZVBhdGg9dCx0aGlzLm1heFBvb2xTaXplPWUsdGhpcy53b3JrZXJGYWN0b3J5PW4sdGhpcy53b3JrZXJzPVtdfWdldE5leHQoKXtsZXQgdDtpZih0aGlzLndvcmtlcnMuZXZlcnkoKCh7YWN0aXZlQ291bnQ6dH0pPT50PjApKSYmdGhpcy53b3JrZXJzLmxlbmd0aDx0aGlzLm1heFBvb2xTaXplKXtjb25zdCBlPXRoaXMud29ya2VyRmFjdG9yeSh0aGlzLndvcmtlclJlc291cmNlUGF0aCk7dD17YWN0aXZlQ291bnQ6MCxwb3N0TWVzc2FnZToodCxuKT0+e2UucG9zdE1lc3NhZ2UodCxuKX0sZnJlZTooKT0+e3QuYWN0aXZlQ291bnQ9TWF0aC5tYXgodC5hY3RpdmVDb3VudC0xLDApfX0sdGhpcy53b3JrZXJzLnB1c2godCl9ZWxzZXtjb25zdCBlPXRoaXMud29ya2Vycy5tYXAoKCh7YWN0aXZlQ291bnQ6dH0pPT50KSksbj1lLmluZGV4T2YoTWF0aC5taW4oLi4uZSkpO3Q9dGhpcy53b3JrZXJzW25dfXJldHVybiB0LmFjdGl2ZUNvdW50KyssdH19KCJjaGFydF93b3JrZXIuanM/X2ZpbGVfaGFzaD0yNTMzODA2NSIpO2NsYXNzIEV1dHtnZXREb21YKHQpe3JldHVybiB0aGlzLnhTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC54LHd1dCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50Lnksd3V0KHRoaXMuZG9tRGltLCJ5IiksdCl9Z2V0WFRpY2tzKCl7cmV0dXJuIHRoaXMueFNjYWxlLnRpY2tzKHRoaXMudmlld0V4dGVudC54LGt1dCh0aGlzLmRvbURpbS53aWR0aCx0aGlzLnhHcmlkQ291bnQpKX1nZXRZVGlja3MoKXtyZXR1cm4gdGhpcy55U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50Lnksa3V0KHRoaXMuZG9tRGltLmhlaWdodCx0aGlzLnlHcmlkQ291bnQpKX19ZnVuY3Rpb24gUnV0KHQsZSxuLG8saSxhKXtsZXQgcjtzd2l0Y2godC5kZWx0YU1vZGUpe2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfUElYRUw6cj0xO2JyZWFrO2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfTElORTpyPTg7YnJlYWs7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9QQUdFOnI9MjA7YnJlYWs7ZGVmYXVsdDpyPTEsY29uc29sZS53YXJuKGBVbmtub3duIFdoZWVsRXZlbnQgZGVsdGFNb2RlOiAke3QuZGVsdGFNb2RlfS5gKX1jb25zdCBzPXQuZGVsdGFZKnIsbD1zPDA/TWF0aC5tYXgocypvLC0uOTUpOnMqbyx7d2lkdGg6YyxoZWlnaHQ6ZH09bixwPVtpLnJldmVyc2UoZS54LFswLGNdLC10Lm9mZnNldFgqbCksaS5yZXZlcnNlKGUueCxbMCxjXSxjKyhjLXQub2Zmc2V0WCkqbCldLG09W2EucmV2ZXJzZShlLnksW2QsMF0sLXQub2Zmc2V0WSpsKSxhLnJldmVyc2UoZS55LFtkLDBdLGQrKGQtdC5vZmZzZXRZKSpsKV07cmV0dXJue3g6cFsxXTxwWzBdP1twWzFdLHBbMF1dOnAseTptWzFdPG1bMF0/W21bMV0sbVswXV06bX19RXV0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFdXQpfSxFdXQuybVjbXA9dG8oe3R5cGU6RXV0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWdyaWQtdmlldyJdXSxpbnB1dHM6e3ZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix4R3JpZENvdW50OiJ4R3JpZENvdW50Iix5U2NhbGU6InlTY2FsZSIseUdyaWRDb3VudDoieUdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0ifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1sieTEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIngxIiwiMCIsMywiemVybyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ5MSIsIjAiXSxbIngxIiwiMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYocWkoKSxSbSgwLCJzdmciKSxRcCgxLFN1dCwxLDUsImxpbmUiLDApLFFwKDIsRHV0LDEsNSwibGluZSIsMSksQW0oKSksMiZlJiYocmMoMSksRG0oIm5nRm9yT2YiLG4uZ2V0WFRpY2tzKCkpLHJjKDEpLERtKCJuZ0Zvck9mIixuLmdldFlUaWNrcygpKSl9LGRpcmVjdGl2ZXM6W2xNXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjY2NjO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgICAgIH1cblxuICAgICAgLnplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChFdXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1ncmlkLXZpZXciLHRlbXBsYXRlOic8c3ZnPlxuICAgIDxsaW5lXG4gICAgICAqbmdGb3I9ImxldCB0aWNrIG9mIGdldFhUaWNrcygpIlxuICAgICAgW2NsYXNzLnplcm9dPSJ0aWNrID09PSAwIlxuICAgICAgW2F0dHIueDFdPSJnZXREb21YKHRpY2spIlxuICAgICAgeTE9IjAiXG4gICAgICBbYXR0ci54Ml09ImdldERvbVgodGljaykiXG4gICAgICBbYXR0ci55Ml09ImRvbURpbS5oZWlnaHQiXG4gICAgPjwvbGluZT5cbiAgICA8bGluZVxuICAgICAgKm5nRm9yPSJsZXQgdGljayBvZiBnZXRZVGlja3MoKSJcbiAgICAgIFtjbGFzcy56ZXJvXT0idGljayA9PT0gMCJcbiAgICAgIHgxPSIwIlxuICAgICAgW2F0dHIueTFdPSJnZXREb21ZKHRpY2spIlxuICAgICAgW2F0dHIueDJdPSJkb21EaW0ud2lkdGgiXG4gICAgICBbYXR0ci55Ml09ImdldERvbVkodGljaykiXG4gICAgPjwvbGluZT5cbiAgPC9zdmc+JyxzdHlsZXM6WyJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgbGluZSB7XG4gICAgICAgIHN0cm9rZTogI2NjYztcbiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gICAgICB9XG5cbiAgICAgIC56ZXJvIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse3ZpZXdFeHRlbnQ6W3t0eXBlOnh5fV0seFNjYWxlOlt7dHlwZTp4eX1dLHhHcmlkQ291bnQ6W3t0eXBlOnh5fV0seVNjYWxlOlt7dHlwZTp4eX1dLHlHcmlkQ291bnQ6W3t0eXBlOnh5fV0sZG9tRGltOlt7dHlwZTp4eX1dfSk7Y29uc3QgQXV0PVsiZG90cyJdO2Z1bmN0aW9uIFR1dCh0LGUpe2lmKDEmdCYmKHFpKCksVG0oMCwiY2lyY2xlIiwxMikpLDImdCl7Y29uc3QgdD1ZbSgpLiRpbXBsaWNpdCxlPVltKDIpO2pwKCJjeCIsZS5nZXREb21YKHQucG9pbnQueCkpKCJjeSIsZS5nZXREb21ZKHQucG9pbnQueSkpKCJmaWxsIix0Lm1ldGFkYXRhLmNvbG9yKX19ZnVuY3Rpb24gTnV0KHQsZSl7aWYoMSZ0JiYocWkoKSxObSgwKSxRcCgxLFR1dCwxLDMsImNpcmNsZSIsMTEpLHptKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPVltKDIpO3JjKDEpLERtKCJuZ0lmIixuLnNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0LnBvaW50KSl9fWZ1bmN0aW9uIHp1dCh0LGUpe2lmKDEmdCYmKHFpKCksTm0oMCksUXAoMSxOdXQsMiwxLCJuZy1jb250YWluZXIiLDEwKSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEbSgibmdGb3JPZiIsdC5jdXJzb3JlZERhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeVNlcmllc05hbWUpfX1mdW5jdGlvbiBJdXQodCxlKXtpZigxJnQmJihxaSgpLFRtKDAsInJlY3QiLDEzKSksMiZ0KXtjb25zdCB0PVltKCk7anAoIngiLHQuem9vbUJveEluVWlDb29yZGluYXRlLngpKCJ3aWR0aCIsdC56b29tQm94SW5VaUNvb3JkaW5hdGUud2lkdGgpKCJ5Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS55KSgiaGVpZ2h0Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS5oZWlnaHQpfX1jb25zdCBIdXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57ZGF0YTp0LGN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ6ZX19O2Z1bmN0aW9uIEZ1dCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTQpLEltKDEsMTUpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpLGU9JHAoMTEpO3JjKDEpLERtKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LnRvb2x0aXBUZW1wbGF0ZT90LnRvb2x0aXBUZW1wbGF0ZTplKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLHZoKDIsSHV0LHQuY3Vyc29yZWREYXRhLHQuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCkpfX1mdW5jdGlvbiBMdXQodCxlKXtpZigxJnQmJihObSgwKSxSbSgxLCJ0ciIsMTcpLFJtKDIsInRkIiwxOCksVG0oMywic3BhbiIpLEFtKCksUm0oNCwidGQiLDE5KSxrdSg1KSxBbSgpLFJtKDYsInRkIiksa3UoNyksQW0oKSxSbSg4LCJ0ZCIpLGt1KDkpLEFtKCksQW0oKSx6bSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQ7cmMoMyksZHUoImJhY2tncm91bmQtY29sb3IiLHQubWV0YWRhdGEuY29sb3IpLHJjKDIpLFN1KHQubWV0YWRhdGEuZGlzcGxheU5hbWUpLHJjKDIpLFN1KHQucG9pbnQueSkscmMoMiksU3UodC5wb2ludC54KX19ZnVuY3Rpb24gQnV0KHQsZSl7aWYoMSZ0JiYoUm0oMCwidGFibGUiKSxSbSgxLCJ0aGVhZCIpLFJtKDIsInRyIiksVG0oMywidGgiLDE2KSxSbSg0LCJ0aCIpLGt1KDUsIk5hbWUiKSxBbSgpLFJtKDYsInRoIiksa3UoNywiWSIpLEFtKCksUm0oOCwidGgiKSxrdSg5LCJYIiksQW0oKSxBbSgpLEFtKCksUm0oMTAsInRib2R5IiksUXAoMTEsTHV0LDEwLDUsIm5nLWNvbnRhaW5lciIsMTApLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PWUuZGF0YSxuPVltKCk7cmMoMTEpLERtKCJuZ0Zvck9mIix0KSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlTZXJpZXNOYW1lKX19dmFyIFZ1dDtmdW5jdGlvbiBqdXQodCl7cmV0dXJuIHQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9IShmdW5jdGlvbih0KXt0W3QuTk9ORT0wXT0iTk9ORSIsdFt0LkRSQUdfWk9PTUlORz0xXT0iRFJBR19aT09NSU5HIix0W3QuU0NST0xMX1pPT01JTkc9Ml09IlNDUk9MTF9aT09NSU5HIix0W3QuUEFOTklORz0zXT0iUEFOTklORyJ9KShWdXR8fChWdXQ9e30pKTtjbGFzcyBVdXR7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5zY3JvbGxTdHJhdGVneT1lLHRoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyBMaCx0aGlzLm9uVmlld0V4dGVudFJlc2V0PW5ldyBMaCx0aGlzLkludGVyYWN0aW9uU3RhdGU9VnV0LHRoaXMuc3RhdGU9VnV0Lk5PTkUsdGhpcy5zcGVjaWFsS2V5UHJlc3NlZD0hMSx0aGlzLnpvb21Cb3hJblVpQ29vcmRpbmF0ZT17eDowLHdpZHRoOjAsaGVpZ2h0OjAseTowfSx0aGlzLnRvb2x0aXBQb3NpdGlvbnM9W3tvZmZzZXRZOjUsb3JpZ2luWDoic3RhcnQiLG92ZXJsYXlYOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6NSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WTotMTUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJib3R0b20ifSx7b2Zmc2V0WDo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WDotNSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WToidG9wIn1dLHRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD1udWxsLHRoaXMuY3Vyc29yZWREYXRhPVtdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMSx0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249ITEsdGhpcy5kcmFnU3RhcnRDb29yZD1udWxsLHRoaXMuaXNDdXJzb3JJbnNpZGU9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBJfW5nQWZ0ZXJWaWV3SW5pdCgpe29lKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJkYmxjbGljayIse3Bhc3NpdmU6ITB9KS5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm9uVmlld0V4dGVudFJlc2V0LmVtaXQoKSx0aGlzLnN0YXRlPVZ1dC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksb2Uod2luZG93LCJrZXlkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxvZSh3aW5kb3csImtleXVwIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxvZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2Vkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10aGlzLnN0YXRlLG49dGhpcy5zaG91bGRQYW4odCk/VnV0LlBBTk5JTkc6VnV0LkRSQUdfWk9PTUlORztlPT09VnV0Lk5PTkUmJm49PT1WdXQuRFJBR19aT09NSU5HJiYodGhpcy5kcmFnU3RhcnRDb29yZD17eDp0Lm9mZnNldFgseTp0Lm9mZnNldFl9LHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OnQub2Zmc2V0WCx3aWR0aDowLHk6dC5vZmZzZXRZLGhlaWdodDowfSksZSE9PW4mJih0aGlzLnN0YXRlPW4sdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSksb2UodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPSh0LmJ1dHRvbnMmZ1EuTEVGVCk9PT1nUS5MRUZUO3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbDtjb25zdCBuPXRoaXMuem9vbUJveEluVWlDb29yZGluYXRlO2lmKCFlJiZ0aGlzLnN0YXRlPT09VnV0LkRSQUdfWk9PTUlORyYmbi53aWR0aD4wJiZuLmhlaWdodD4wKXtjb25zdCB0PXRoaXMuZ2V0RGF0YVgobi54KSxlPXRoaXMuZ2V0RGF0YVgobi54K24ud2lkdGgpLG89dGhpcy5nZXREYXRhWShuLnkrbi5oZWlnaHQpLGk9dGhpcy5nZXREYXRhWShuLnkpO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W3QsZV0seTpbbyxpXX19KX10aGlzLnN0YXRlIT09VnV0Lk5PTkUmJih0aGlzLnN0YXRlPVZ1dC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLG9lKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWVudGVyIix7cGFzc2l2ZTohMH0pLnBpcGUoSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5pc0N1cnNvckluc2lkZT0hMCx0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxvZSh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2VsZWF2ZSIse3Bhc3NpdmU6ITB9KS5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbCx0aGlzLmlzQ3Vyc29ySW5zaWRlPSExLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLnN0YXRlPVZ1dC5OT05FLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksb2UodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbW92ZSIse3Bhc3NpdmU6ITB9KS5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlIFZ1dC5TQ1JPTExfWk9PTUlORzp0aGlzLnN0YXRlPVZ1dC5OT05FLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrO2Nhc2UgVnV0Lk5PTkU6dGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7YnJlYWs7Y2FzZSBWdXQuUEFOTklORzp7Y29uc3QgZT0tdC5tb3ZlbWVudFgsbj0tdC5tb3ZlbWVudFkse3dpZHRoOm8saGVpZ2h0Oml9PXRoaXMuZG9tRGltLGE9dGhpcy5nZXREYXRhWChlKSxyPXRoaXMuZ2V0RGF0YVgobytlKSxzPXRoaXMuZ2V0RGF0YVkoaStuKSxsPXRoaXMuZ2V0RGF0YVkobik7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDp7eDpbYSxyXSx5OltzLGxdfX0pO2JyZWFrfWNhc2UgVnV0LkRSQUdfWk9PTUlORzp7aWYoIXRoaXMuZHJhZ1N0YXJ0Q29vcmQpYnJlYWs7Y29uc3QgZT1bdGhpcy5kcmFnU3RhcnRDb29yZC54LHQub2Zmc2V0WF0sbj1bdGhpcy5kcmFnU3RhcnRDb29yZC55LHQub2Zmc2V0WV07dGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU9e3g6TWF0aC5taW4oLi4uZSksd2lkdGg6TWF0aC5tYXgoLi4uZSktTWF0aC5taW4oLi4uZSkseTpNYXRoLm1pbiguLi5uKSxoZWlnaHQ6TWF0aC5tYXgoLi4ubiktTWF0aC5taW4oLi4ubil9fXRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9fSkpLG9lKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJ3aGVlbCIse3Bhc3NpdmU6ITF9KS5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSksemUoKHQ9Pntjb25zdCBlPSF0LmN0cmxLZXkmJiF0LnNoaWZ0S2V5JiZ0LmFsdEtleTtyZXR1cm4gdGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSFlLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksZT8odC5wcmV2ZW50RGVmYXVsdCgpLEV0KHQpKTphZSgzZTMpLnBpcGUoRmUoKCgpPT57dGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSExLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksSXQoKCgpPT5udWxsKSkpfSkpLGNlKCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6UnV0KHQsdGhpcy52aWV3RXh0ZW50LHRoaXMuZG9tRGltLC4wMSx0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSl9KSx0aGlzLnN0YXRlIT09VnV0LlNDUk9MTF9aT09NSU5HJiYodGhpcy5zdGF0ZT1WdXQuU0NST0xMX1pPT01JTkcsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSl9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXNob3VsZFBhbih0KXtjb25zdCBlPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2lmKHQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KXJldHVybiBlO2NvbnN0IG49KHQuYnV0dG9ucyZnUS5MRUZUKT09PWdRLkxFRlQsbz0odC5idXR0b25zJmdRLk1JRERMRSk9PT1nUS5NSURETEU7cmV0dXJuISghbiYmIW8pJiYobyYmIW58fGUpfXRyYWNrQnlTZXJpZXNOYW1lKHQsZSl7cmV0dXJuIGUuaWR9Z2V0RG9tWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueCx3dXQodGhpcy5kb21EaW0sIngiKSx0KX1nZXREYXRhWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueCx3dXQodGhpcy5kb21EaW0sIngiKSx0KX1nZXREb21ZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC55LHd1dCh0aGlzLmRvbURpbSwieSIpLHQpfWdldERhdGFZKHQpe3JldHVybiB0aGlzLnlTY2FsZS5yZXZlcnNlKHRoaXMudmlld0V4dGVudC55LHd1dCh0aGlzLmRvbURpbSwieSIpLHQpfXNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0KXtyZXR1cm4gbnVsbCE9PXQmJiFpc05hTih0LngpJiYhaXNOYU4odC55KX11cGRhdGVUb29sdGlwKHQpe3RoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD17eDp0aGlzLmdldERhdGFYKHQub2Zmc2V0WCkseTp0aGlzLmdldERhdGFZKHQub2Zmc2V0WSl9LHRoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKXt0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITF9dXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZDtpZihudWxsPT09dClyZXR1cm4gdGhpcy5jdXJzb3JlZERhdGE9W10sdm9pZCh0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITEpO3RoaXMuY3Vyc29yZWREYXRhPXRoaXMuaXNDdXJzb3JJbnNpZGU/dGhpcy5zZXJpZXNEYXRhLm1hcCgodD0+KHtzZXJpZXNEYXR1bTp0LG1ldGFkYXRhOnRoaXMuc2VyaWVzTWV0YWRhdGFNYXBbdC5pZF19KSkpLmZpbHRlcigoKHttZXRhZGF0YTp0fSk9PnQmJnQudmlzaWJsZSYmIUJvb2xlYW4odC5hdXgpKSkubWFwKCgoe3Nlcmllc0RhdHVtOmUsbWV0YWRhdGE6bn0pPT57Y29uc3Qgbz0oZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49TWF0aC5taW4ocDUodC5tYXAoKCh7eDp0fSk9PnQpKSxlKSx0Lmxlbmd0aC0xKSxvPU1hdGgubWF4KDAsbi0xKTtyZXR1cm4gTWF0aC5hYnModFtvXS54LWUpLU1hdGguYWJzKHRbbl0ueC1lKTw9MD9vOm59KShlLnBvaW50cyx0LngpO3JldHVybntpZDplLmlkLGNsb3Nlc3RQb2ludEluZGV4Om8scG9pbnQ6ZS5wb2ludHNbb10sbWV0YWRhdGE6bn19KSkuZmlsdGVyKCh0PT50KSk6W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPUJvb2xlYW4odGhpcy5jdXJzb3JlZERhdGEubGVuZ3RoKX19ZnVuY3Rpb24gR3V0KHQsZSxuLG8pe3JldHVybnttYWpvcjpbXSxtaW5vcjp0LnRpY2tzKG8sbikubWFwKCh0PT4oe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KSkpfX1VdXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFV1dCkoU20oVWcpLFNtKExGKSl9LFV1dC7JtWNtcD10byh7dHlwZTpVdXQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKEF1dCw3LGhnKSxRaChnTCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5kb3RzQ29udGFpbmVyPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLm92ZXJsYXk9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgic2hvdy16b29tLWluc3RydWN0aW9uIixuLnNob3dab29tSW5zdHJ1Y3Rpb24pfSxpbnB1dHM6e3Nlcmllc0RhdGE6InNlcmllc0RhdGEiLHNlcmllc01ldGFkYXRhTWFwOiJzZXJpZXNNZXRhZGF0YU1hcCIsdmlld0V4dGVudDoidmlld0V4dGVudCIseFNjYWxlOiJ4U2NhbGUiLHlTY2FsZToieVNjYWxlIixkb21EaW06ImRvbURpbSIsdG9vbHRpcE9yaWdpbkVsOiJ0b29sdGlwT3JpZ2luRWwiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UiLG9uVmlld0V4dGVudFJlc2V0OiJvblZpZXdFeHRlbnRSZXNldCJ9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6TEYsdXNlRmFjdG9yeTpqdXQsZGVwczpbcExdfV0pLEJvXSxkZWNsczoxMix2YXJzOjE1LGNvbnN0czpbWzEsImRvdHMiXSxbImRvdHMiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJ6b29tLWJveCIsNCwibmdJZiJdLFsxLCJ6b29tLWluc3RydWN0aW9uIl0sWzEsImluc3RydWN0aW9uLWNvbnRlbnQiXSxbImNka092ZXJsYXlPcmlnaW4iLCIiLDEsInRvb2x0aXAtb3JpZ2luIl0sWyJ0b29sdGlwT3JpZ2luIiwiY2RrT3ZlcmxheU9yaWdpbiJdLFsiY2RrQ29ubmVjdGVkT3ZlcmxheSIsIiIsMywiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCJkZXRhY2giXSxbImRlZmF1bHRUb29sdGlwIiwiIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiciIsIjQiLDQsIm5nSWYiXSxbInIiLCI0Il0sWzEsInpvb20tYm94Il0sWzEsInRvb2x0aXAtY29udGFpbmVyIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzEsInRvb2x0aXAtcm93Il0sWzEsInRvb2x0aXAtcm93LWNpcmNsZSJdLFsxLCJuYW1lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihxaSgpLFJtKDAsInN2ZyIsMCwxKSxRcCgyLHp1dCwyLDIsIm5nLWNvbnRhaW5lciIsMiksUXAoMyxJdXQsMSw0LCJyZWN0IiwzKSxBbSgpLFppKCksUm0oNCwiZGl2Iiw0KSxSbSg1LCJzcGFuIiw1KSxrdSg2LCJBbHQgKyBTY3JvbGwgdG8gWm9vbSIpLEFtKCksQW0oKSxUbSg3LCJkaXYiLDYsNyksUXAoOSxGdXQsMiw1LCJuZy10ZW1wbGF0ZSIsOCksVm0oImRldGFjaCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKX0pKSxRcCgxMCxCdXQsMTIsMiwibmctdGVtcGxhdGUiLG51bGwsOSxpYikpLDImZSYmKHB1KCJwYW5uYWJsZSIsbi5zcGVjaWFsS2V5UHJlc3NlZCkoImRyYWdnYWJsZSIsbi5zdGF0ZT09PW4uSW50ZXJhY3Rpb25TdGF0ZS5OT05FfHxuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLkRSQUdfWk9PTUlORykoInBhbm5pbmciLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuUEFOTklORykscmMoMiksRG0oIm5nSWYiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuTk9ORSkscmMoMSksRG0oIm5nSWYiLG4uc3RhdGU9PT1uLkludGVyYWN0aW9uU3RhdGUuRFJBR19aT09NSU5HKSxyYyg2KSxEbSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsbi50b29sdGlwT3JpZ2luRWwpKCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsbi50b29sdGlwRGlzcGxheUF0dGFjaGVkJiZuLnN0YXRlPT09bi5JbnRlcmFjdGlvblN0YXRlLk5PTkUpKCJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIixuLnRvb2x0aXBQb3NpdGlvbnMpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLG4uc2Nyb2xsU3RyYXRlZ3kpKCJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwhMSkoImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiLCEwKSgiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCEwKSl9LGRpcmVjdGl2ZXM6W2RNLGZMLGdMLGxNLE1NXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZTt1c2VyLXNlbGVjdDpub25lfS5kb3RzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5kb3RzLmRyYWdnYWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmNyb3NzaGFpcn0uZG90cy5wYW5uYWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmdyYWJ9LmRvdHMucGFubmluZ1tfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOmdyYWJiaW5nfS50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjYpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXAtb3JpZ2luW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0udG9vbHRpcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuODUpO2JvcmRlci1yYWRpdXM6NHB4O2NvbG9yOiNmZmY7Y29udGFpbjpwYWludCBzdHlsZSBsYXlvdXQ7Zm9udC1zaXplOi45ZW07b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjVweDtwb2ludGVyLWV2ZW50czpub25lO3dpZHRoOjEwMCV9dGhbX25nY29udGVudC0lQ09NUCVdLCB0ZFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggNXB4O3RleHQtYWxpZ246bGVmdH10aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctYm90dG9tOjVweH0uem9vbS1ib3hbX25nY29udGVudC0lQ09NUCVde2ZpbGwtb3BhY2l0eTouMDM7ZmlsbDojMDAwO3N0cm9rZTojY2NjfS56b29tLWluc3RydWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGVmdDowO29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjEwcHg7dHJhbnNpdGlvbjpvcGFjaXR5IC41czt6LWluZGV4OjF9Lmluc3RydWN0aW9uLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNik7Ym9yZGVyLXJhZGl1czo1cHg7Y29sb3I6I2ZmZjtwYWRkaW5nOjVweCAxMHB4O3VzZXItc2VsZWN0Om5vbmV9LnNob3ctem9vbS1pbnN0cnVjdGlvbltfbmdob3N0LSVDT01QJV0gICAuem9vbS1pbnN0cnVjdGlvbltfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVdXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibGluZS1jaGFydC1pbnRlcmFjdGl2ZS12aWV3Iix0ZW1wbGF0ZVVybDoiLi9saW5lX2NoYXJ0X2ludGVyYWN0aXZlX3ZpZXcubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9saW5lX2NoYXJ0X2ludGVyYWN0aXZlX3ZpZXcuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxwcm92aWRlcnM6W3twcm92aWRlOkxGLHVzZUZhY3Rvcnk6anV0LGRlcHM6W3BMXX1dfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWd9LHt0eXBlOkxGfV19KSx7ZG90c0NvbnRhaW5lcjpbe3R5cGU6WmEsYXJnczpbImRvdHMiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0sb3ZlcmxheTpbe3R5cGU6WmEsYXJnczpbZ0xdfV0sc2VyaWVzRGF0YTpbe3R5cGU6eHl9XSxzZXJpZXNNZXRhZGF0YU1hcDpbe3R5cGU6eHl9XSx2aWV3RXh0ZW50Olt7dHlwZTp4eX1dLHhTY2FsZTpbe3R5cGU6eHl9XSx5U2NhbGU6W3t0eXBlOnh5fV0sZG9tRGltOlt7dHlwZTp4eX1dLHRvb2x0aXBPcmlnaW5FbDpbe3R5cGU6eHl9XSx0b29sdGlwVGVtcGxhdGU6W3t0eXBlOnh5fV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpPeX1dLG9uVmlld0V4dGVudFJlc2V0Olt7dHlwZTpPeX1dLHNob3dab29tSW5zdHJ1Y3Rpb246W3t0eXBlOlB5LGFyZ3M6WyJjbGFzcy5zaG93LXpvb20taW5zdHJ1Y3Rpb24iXX1dfSk7Y29uc3QgV3V0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gWXV0KHQsZSl7aWYoMSZ0JiYocWkoKSxSbSgwLCJnIiwxNyksUm0oMSwidGV4dCIpLGt1KDIpLEFtKCksUm0oMywidGl0bGUiKSxrdSg0KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdCxuPVltKCk7cmMoMSksZHUoImZvbnQiLG4uYXhpc0ZvbnQpLGpwKCJ4IixuLnRleHRYUG9zaXRpb24odC52YWx1ZSkpKCJ5IixuLnRleHRZUG9zaXRpb24odC52YWx1ZSkpLHJjKDEpLER1KCIgIix0LnRpY2tGb3JtYXR0ZWRTdHJpbmcsIiAiKSxyYygyKSxTdShuLmdldEZvcm1hdHRlcigpLmZvcm1hdExvbmcodC52YWx1ZSkpfX1mdW5jdGlvbiBxdXQodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiwyMCksUm0oMSwic3BhbiIpLGt1KDIpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49ZS5pbmRleCxvPWUubGFzdCxpPVltKDIpO2R1KCJsZWZ0IixpLmdldE1ham9yWFBvc2l0aW9uKHQpLCJweCIpKCJ3aWR0aCIsaS5nZXRNYWpvcldpZHRoU3RyaW5nKHQsbyxpLm1ham9yVGlja3NbbisxXSkpKCJib3R0b20iLGkuZ2V0TWFqb3JZUG9zaXRpb24odCksInB4IikoImhlaWdodCIsaS5nZXRNYWpvckhlaWdodFN0cmluZyh0LG8saS5tYWpvclRpY2tzW24rMV0pKSgiZm9udCIsaS5heGlzRm9udCkscHUoIm1ham9yLWxhYmVsIiwhMCkoImxhc3QiLG8pLERtKCJ0aXRsZSIsaS5nZXRGb3JtYXR0ZXIoKS5mb3JtYXRMb25nKHQuc3RhcnQpKSxyYygyKSxTdSh0LnRpY2tGb3JtYXR0ZWRTdHJpbmcpfX1mdW5jdGlvbiBadXQodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDE4KSxRcCgxLHF1dCwzLDE2LCJzcGFuIiwxOSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRG0oIm5nRm9yT2YiLHQubWFqb3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsdC50cmFja0J5TWFqb3JUaWNrKX19Y2xhc3MgWHV0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2U9bmV3IExoLHRoaXMuZWRpdE1lbnVPcGVuZWQ9ITEsdGhpcy5tYWpvclRpY2tzPVtdLHRoaXMubWlub3JUaWNrcz1bXX1uZ09uQ2hhbmdlcygpe2xldCB0PW51bGw7Y29uc3QgZT1rdXQoIngiPT09dGhpcy5heGlzP3RoaXMuZG9tRGltLndpZHRoOnRoaXMuZG9tRGltLmhlaWdodCx0aGlzLmdyaWRDb3VudCk7dD10aGlzLnNjYWxlIGluc3RhbmNlb2YgdGl0PyhmdW5jdGlvbiBuKHQsZSxvLGkpe2NvbnN0W2Escl09aSxzPU1hdGguYWJzKHItYSk7aWYocz4uMDAxKXJldHVybiBHdXQodCxlLG8saSk7Y29uc3QgbD10LnRpY2tzKFthLHJdLG8pLGM9dC50aWNrcyhbYSxyXSwyKSxkPVtdO2xldCBwPShmdW5jdGlvbiBtKHQpe2NvbnN0IGU9dC50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUtIiwyKTtyZXR1cm4gMj09PWUubGVuZ3RoP051bWJlcihlWzFdKS0xOjB9KShzKTtzPDEmJmMuZXZlcnkoKHQ9Pntjb25zdCBlPU1hdGguYWJzKHQpO3JldHVybiBlPj0wJiZlPDF9KSkmJihwKz0xKTtjb25zdCB1PW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgYyl7Y29uc3RbbixvPSIiXT1TdHJpbmcodCkuc3BsaXQoIi4iLDIpLGk9TnVtYmVyKG4rIi4iK28uc2xpY2UoMCxwKSk7dS5zZXQoaSx7c3RhcnQ6aSx0aWNrRm9ybWF0dGVkU3RyaW5nOjA9PT1pPyLigJQiOmUuZm9ybWF0UmVhZGFibGUoaSl9KX1jb25zdCBmPTEwKk1hdGgucG93KDEwLC1wKTtmb3IoY29uc3QgdCBvZiBsKWZvcihjb25zdCBuIG9mWy4uLnUua2V5cygpXS5yZXZlcnNlKCkpe2NvbnN0IG89dC1uO2lmKG8+PTAmJm88Zil7aWYoMD09PW4pZC5wdXNoKHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6ZS5mb3JtYXRUaWNrKHQpfSk7ZWxzZXtjb25zdCBlPVN0cmluZyh0KS5zbGljZShTdHJpbmcobikubGVuZ3RoKTtkLnB1c2goe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzpg4oCmJHtlfHwiMCJ9YH0pfWJyZWFrfX1yZXR1cm57bWFqb3I6QXJyYXkuZnJvbSh1LnZhbHVlcygpKSxtaW5vcjpkfX0pKHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6dGhpcy5zY2FsZSBpbnN0YW5jZW9mIG5pdD8oZnVuY3Rpb24gbyh0LGUsbixpKXtjb25zdFthLHJdPWk7bGV0IHM9dC50aWNrcyhpLDIpO2lmKHItYT49ODY0ZTV8fHMubGVuZ3RoPjIpcmV0dXJuIEd1dCh0LGUsbixpKTtjb25zdCBsPXQudGlja3MoaSxuKTtyZXR1cm57bWFqb3I6cy5tYXAoKHQ9Pih7c3RhcnQ6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmUuZm9ybWF0U2hvcnQodCl9KSkpLG1pbm9yOmwubWFwKCh0PT4oe3ZhbHVlOnQsdGlja0Zvcm1hdHRlZFN0cmluZzplLmZvcm1hdFRpY2sodCl9KSkpfX0pKHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCk6R3V0KHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxlLHRoaXMuYXhpc0V4dGVudCksdGhpcy5tYWpvclRpY2tzPXQubWFqb3IsdGhpcy5taW5vclRpY2tzPShmdW5jdGlvbiBpKHQsZSxuLG8sYT01KXtpZighdC5sZW5ndGh8fCFXdXQpcmV0dXJuIHQ7Y29uc3Qgcj0ieCI9PT1uPzE6LTE7bGV0IHM9bnVsbDtyZXR1cm4gdC5maWx0ZXIoKHQ9Pntjb25zdCBpPWUodCk7V3V0LmZvbnQ9bztjb25zdCBsPVd1dC5tZWFzdXJlVGV4dCh0LnRpY2tGb3JtYXR0ZWRTdHJpbmcpLGM9IngiPT09bj9sLndpZHRoOmwuYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQtbC5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7cmV0dXJuIG51bGw9PT1zPyEoaStyKmM8MHx8KHM9aStyKmMsMCkpOiEocioocytyKmEtaSk+MHx8KHM9aStyKmMsMCkpfSkpfSkodC5taW5vciwodD0+dGhpcy5nZXREb21Qb3ModC52YWx1ZSkpLHRoaXMuYXhpcywiMTFweCBSb2JvdG8sIHNhbnMtc2VyaWYiKX1nZXRGb3JtYXR0ZXIoKXt2YXIgdDtyZXR1cm4gbnVsbCE9PSh0PXRoaXMuY3VzdG9tRm9ybWF0dGVyKSYmdm9pZCAwIT09dD90OnRoaXMuc2NhbGUuZGVmYXVsdEZvcm1hdHRlcn10cmFja0J5TWlub3JUaWNrKHQpe3JldHVybiB0LnZhbHVlfXRyYWNrQnlNYWpvclRpY2sodCl7cmV0dXJuIHQuc3RhcnR9Z2V0RG9tUG9zKHQpe3JldHVybiB0aGlzLnNjYWxlLmZvcndhcmQodGhpcy5heGlzRXh0ZW50LHd1dCh0aGlzLmRvbURpbSx0aGlzLmF4aXMpLHQpfXRleHRYUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzP1N0cmluZyh0aGlzLmdldERvbVBvcyh0KSk6IjEwMCUifXRleHRZUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzPyIiOlN0cmluZyh0aGlzLmdldERvbVBvcyh0KSl9Z2V0TWFqb3JYUG9zaXRpb24odCl7cmV0dXJuInkiPT09dGhpcy5heGlzPzA6TWF0aC5taW4odGhpcy5kb21EaW0ud2lkdGgsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9yV2lkdGhTdHJpbmcodCxlLG4pe3JldHVybiJ5Ij09PXRoaXMuYXhpcz8iIjooZXx8IW4/dGhpcy5kb21EaW0ud2lkdGg6dGhpcy5nZXRNYWpvclhQb3NpdGlvbihuKSktdGhpcy5nZXRNYWpvclhQb3NpdGlvbih0KSsicHgifWdldE1ham9yWVBvc2l0aW9uKHQpe3JldHVybiJ4Ij09PXRoaXMuYXhpcz8wOnRoaXMuZG9tRGltLmhlaWdodC1NYXRoLm1pbih0aGlzLmRvbURpbS5oZWlnaHQsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9ySGVpZ2h0U3RyaW5nKHQsZSxuKXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/IiI6KGV8fCFuP3RoaXMuZG9tRGltLmhlaWdodDp0aGlzLmdldE1ham9yWVBvc2l0aW9uKG4pKS10aGlzLmdldE1ham9yWVBvc2l0aW9uKHQpKyJweCJ9a2V5ZG93blByZXZlbnRDbG9zZSh0KXsiRXNjYXBlIiE9PXQua2V5JiZ0LnN0b3BQcm9wYWdhdGlvbigpfWV4dGVudENoYW5nZWQodCxlKXtsZXQgbj1OdW1iZXIodCksbz1OdW1iZXIoZSk7aWYobzxuKXtjb25zdCB0PW47bj1vLG89dH1OdW1iZXIuaXNGaW5pdGUobikmJk51bWJlci5pc0Zpbml0ZShvKSYmdGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdChbbixvXSl9b25BeGlzVXBkYXRlTWVudU9wZW4odCxlLG4pe3QudmFsdWU9U3RyaW5nKG5bMF0pLGUudmFsdWU9U3RyaW5nKG5bMV0pLHQuZm9jdXMoKX1zZXRFZGl0TWVudU9wZW5lZCh0KXt0aGlzLmVkaXRNZW51T3BlbmVkPXR9fVh1dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WHV0KX0sWHV0Lsm1Y21wPXRvKHt0eXBlOlh1dCxzZWxlY3RvcnM6W1sibGluZS1jaGFydC1heGlzIl1dLGlucHV0czp7YXhpc0V4dGVudDoiYXhpc0V4dGVudCIsYXhpczoiYXhpcyIsc2NhbGU6InNjYWxlIixncmlkQ291bnQ6ImdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0iLGN1c3RvbUZvcm1hdHRlcjoiY3VzdG9tRm9ybWF0dGVyIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UifSxmZWF0dXJlczpbQm9dLGRlY2xzOjI2LHZhcnM6MTMsY29uc3RzOltbMSwibGluZSJdLFsxLCJtaW5vciJdLFsxLCJ0aWNrcyJdLFsiY2xhc3MiLCJtaW5vci10aWNrLWxhYmVsIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gbWFudWFsbHkgc2V0IG1pbiAmIG1heCB2YWx1ZXMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIiwibWVudU9wZW5lZCIsIm1lbnVDbG9zZWQiXSxbIm1hdE1lbnVUcmlnZ2VyIiwibWF0TWVudVRyaWdnZXIiXSxbInN2Z0ljb24iLCJlZGl0XzI0cHgiXSxbImNsYXNzIiwibWFqb3IgdGlja3MiLDQsIm5nSWYiXSxbInhQb3NpdGlvbiIsImJlZm9yZSIsMywieVBvc2l0aW9uIl0sWyJtYW51YWxDb250cm9sIiwibWF0TWVudSJdLFsxLCJleHRlbnQtZWRpdC1pbnB1dCIsMywiY2xpY2siLCJrZXlkb3duIl0sWyJ0eXBlIiwibnVtYmVyIiwzLCJ2YWx1ZSJdLFsibWluSW5wdXQiLCIiXSxbIm1heElucHV0IiwiIl0sWzEsImV4dGVudC1lZGl0LWNvbnRyb2wiLDMsImtleWRvd24iXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwxLCJleHRlbnQtZWRpdC1jaGFuZ2UiLDMsImNsaWNrIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDEsImV4dGVudC1lZGl0LWNhbmNlbCIsMywiY2xpY2siXSxbMSwibWlub3ItdGljay1sYWJlbCJdLFsxLCJtYWpvciIsInRpY2tzIl0sWzMsIm1ham9yLWxhYmVsIiwibGFzdCIsImxlZnQiLCJ3aWR0aCIsImJvdHRvbSIsImhlaWdodCIsImZvbnQiLCJ0aXRsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzMsInRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiKSxUbSgxLCJkaXYiLDApLFJtKDIsImRpdiIsMSkscWkoKSxSbSgzLCJzdmciLDIpLFFwKDQsWXV0LDUsNiwiZyIsMyksQW0oKSxaaSgpLFJtKDUsImJ1dHRvbiIsNCw1KSxWbSgibWVudU9wZW5lZCIsKGZ1bmN0aW9uIGUoKXtoaSh0KTtjb25zdCBvPSRwKDE1KSxpPSRwKDIwKTtyZXR1cm4gbi5vbkF4aXNVcGRhdGVNZW51T3BlbihvLGksbi5heGlzRXh0ZW50KSxuLnNldEVkaXRNZW51T3BlbmVkKCEwKX0pKSgibWVudUNsb3NlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zZXRFZGl0TWVudU9wZW5lZCghMSl9KSksVG0oNywibWF0LWljb24iLDYpLEFtKCksQW0oKSxRcCg4LFp1dCwyLDIsImRpdiIsNyksQW0oKSxSbSg5LCJtYXQtbWVudSIsOCw5KSxSbSgxMSwiZGl2IiwxMCksVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5zdG9wUHJvcGFnYXRpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ua2V5ZG93blByZXZlbnRDbG9zZShlKX0pKSxSbSgxMiwibGFiZWwiKSxrdSgxMywibWluIiksQW0oKSxUbSgxNCwiaW5wdXQiLDExLDEyKSxBbSgpLFJtKDE2LCJkaXYiLDEwKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLFJtKDE3LCJsYWJlbCIpLGt1KDE4LCJtYXgiKSxBbSgpLFRtKDE5LCJpbnB1dCIsMTEsMTMpLEFtKCksUm0oMjEsImRpdiIsMTQpLFZtKCJrZXlkb3duIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5rZXlkb3duUHJldmVudENsb3NlKGUpfSkpLFJtKDIyLCJidXR0b24iLDE1KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7aGkodCk7Y29uc3Qgbz0kcCgxNSksaT0kcCgyMCksYT0kcCg2KTtyZXR1cm4gbi5leHRlbnRDaGFuZ2VkKG8udmFsdWUsaS52YWx1ZSksYS5jbG9zZU1lbnUoKX0pKSxrdSgyMywiIENoYW5nZSAiKSxBbSgpLFJtKDI0LCJidXR0b24iLDE2KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLCRwKDYpLmNsb3NlTWVudSgpfSkpLGt1KDI1LCIgQ2FuY2VsICIpLEFtKCksQW0oKSxBbSgpfWlmKDImZSl7Y29uc3QgdD0kcCgxMCk7ZnUobi5heGlzKyItYXhpcyBheGlzIikscmMoNCksRG0oIm5nRm9yT2YiLG4ubWlub3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5TWlub3JUaWNrKSxyYygxKSxwdSgiZXh0ZW50LWVkaXQtYnV0dG9uIiwhMCkoImV4dGVudC1lZGl0LW1lbnUtb3BlbmVkIixuLmVkaXRNZW51T3BlbmVkKSxEbSgibWF0TWVudVRyaWdnZXJGb3IiLHQpLHJjKDMpLERtKCJuZ0lmIixuLm1ham9yVGlja3MubGVuZ3RoKSxyYygxKSxEbSgieVBvc2l0aW9uIiwieSI9PT1uLmF4aXM/ImFib3ZlIjoiYmVsb3ciKSxyYyg1KSxEbSgidmFsdWUiLG4uYXhpc0V4dGVudFswXSkscmMoNSksRG0oInZhbHVlIixuLmF4aXNFeHRlbnRbMV0pfX0sZGlyZWN0aXZlczpbbE0sWEgsZVksRFcsZE0sS1ddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbn0ubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOmN1cnJlbnRDb2xvcjtmb250LXNpemU6MTFweDt1c2VyLXNlbGVjdDpub25lfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdLCAubWlub3JbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAwO292ZXJmbG93OmhpZGRlbn0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYWFhO2ZsZXg6MCAwIDFweDtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaH0udGlja3NbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246Y29sdW1ufS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206M3B4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6dGV4dC1iZWZvcmUtZWRnZTt0ZXh0LWFuY2hvcjptaWRkbGV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDo1cHh9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTpjZW50cmFsO3RleHQtYW5jaG9yOmVuZH0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrc1tfbmdjb250ZW50LSVDT01QJV17LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlO2Rpc3BsYXk6bm9uZTtmb250LXNpemU6MDtoZWlnaHQ6MjRweDtsaW5lLWhlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjVweDt0b3A6NXB4O3dpZHRoOjI0cHh9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5leHRlbnQtZWRpdC1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2NvbHVtbi1nYXA6NXB4O2Rpc3BsYXk6Z3JpZDtmb250LXNpemU6MTJweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MzBweCBtaW5tYXgoYXV0bywgMTAwcHgpO2hlaWdodDozMHB4O21hcmdpbjoxMHB4IDIwcHh9LmV4dGVudC1lZGl0LWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2NvbG9yOmluaGVyaXR9LmV4dGVudC1lZGl0LWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2U7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO21hcmdpbjoxMHB4IDIwcHh9LmV4dGVudC1lZGl0LWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtoZWlnaHQ6MzBweDtsaW5lLWhlaWdodDoxLjQ7bWFyZ2luLWxlZnQ6NXB4O3BhZGRpbmc6MCAxMHB4fS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5leHRlbnQtZWRpdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAuZXh0ZW50LWVkaXQtbWVudS1vcGVuZWRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5pdGlhbH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtjb250YWluOnN0cmljdH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7d2hpdGUtc3BhY2U6bm93cmFwfS5tYWpvcltfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjOWU5ZTllO3BhZGRpbmc6MCA1cHh9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWwubGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOWU5ZTllfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOWU5ZTllO2hlaWdodDoxMDAlO3BhZGRpbmc6NXB4IDA7d2lkdGg6MTAwJX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbC5sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjOWU5ZTllfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSA+IHNwYW5bX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWHV0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImxpbmUtY2hhcnQtYXhpcyIsdGVtcGxhdGVVcmw6ImxpbmVfY2hhcnRfYXhpc192aWV3Lm5nLmh0bWwiLHN0eWxlVXJsczpbImxpbmVfY2hhcnRfYXhpc192aWV3LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse2F4aXNFeHRlbnQ6W3t0eXBlOnh5fV0sYXhpczpbe3R5cGU6eHl9XSxzY2FsZTpbe3R5cGU6eHl9XSxncmlkQ291bnQ6W3t0eXBlOnh5fV0sZG9tRGltOlt7dHlwZTp4eX1dLGN1c3RvbUZvcm1hdHRlcjpbe3R5cGU6eHl9XSxvblZpZXdFeHRlbnRDaGFuZ2U6W3t0eXBlOk95fV19KTtjb25zdCBLdXQ9WyJzZXJpZXNWaWV3Il0sSnV0PVsieEF4aXMiXSxRdXQ9WyJ5QXhpcyJdLCR1dD1bImNoYXJ0RWwiXTtmdW5jdGlvbiB0ZnQodCxlKXtpZigxJnQmJlRtKDAsImxpbmUtY2hhcnQtZ3JpZC12aWV3IiwxNSksMiZ0KXtjb25zdCB0PVltKCk7RG0oInZpZXdFeHRlbnQiLHQudmlld0JveCkoInhTY2FsZSIsdC54U2NhbGUpKCJ5U2NhbGUiLHQueVNjYWxlKSgieEdyaWRDb3VudCIsdC5YX0dSSURfQ09VTlQpKCJ5R3JpZENvdW50Iix0LllfR1JJRF9DT1VOVCkoImRvbURpbSIsdC5kb21EaW1lbnNpb25zLm1haW4pfX1mdW5jdGlvbiBlZnQodCxlKXsxJnQmJihxaSgpLFRtKDAsInN2ZyIsbnVsbCwxNikpfWZ1bmN0aW9uIG5mdCh0LGUpezEmdCYmVG0oMCwiY2FudmFzIixudWxsLDE2KX1mdW5jdGlvbiBvZnQodCxlKXtpZigxJnQmJihObSgwKSxRcCgxLGVmdCwyLDAsInN2ZyIsNSksUXAoMixuZnQsMiwwLCJjYW52YXMiLDUpLHptKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLERtKCJuZ0lmIix0LmdldFJlbmRlcmVyVHlwZSgpPT09dC5SZW5kZXJlclR5cGUuU1ZHKSxyYygxKSxEbSgibmdJZiIsdC5nZXRSZW5kZXJlclR5cGUoKT09PXQuUmVuZGVyZXJUeXBlLldFQkdMKX19ZnVuY3Rpb24gaWZ0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwibGluZS1jaGFydC1pbnRlcmFjdGl2ZS12aWV3IiwxNyksVm0oIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKCkub25WaWV3Qm94Q2hhbmdlZChuKX0pKSgib25WaWV3RXh0ZW50UmVzZXQiLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkudmlld0JveFJlc2V0KCl9KSksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oKSxlPSRwKDEpO0RtKCJzZXJpZXNEYXRhIix0LnNlcmllc0RhdGEpKCJzZXJpZXNNZXRhZGF0YU1hcCIsdC5zZXJpZXNNZXRhZGF0YU1hcCkoInZpZXdFeHRlbnQiLHQudmlld0JveCkoInhTY2FsZSIsdC54U2NhbGUpKCJ5U2NhbGUiLHQueVNjYWxlKSgidG9vbHRpcE9yaWdpbkVsIixlKSgiZG9tRGltIix0LmRvbURpbWVuc2lvbnMubWFpbikoInRvb2x0aXBUZW1wbGF0ZSIsdC50b29sdGlwVGVtcGxhdGUpfX1jb25zdCBhZnQ9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJue3hTY2FsZTp0LHlTY2FsZTplLGRvbURpbWVuc2lvbjpuLHZpZXdFeHRlbnQ6b319O2Z1bmN0aW9uIHJmdCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMTgpLEltKDEsMTkpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLERtKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LmN1c3RvbVZpc1RlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLE9oKDIsYWZ0LHQueFNjYWxlLHQueVNjYWxlLHQuZG9tRGltZW5zaW9ucy5tYWluLHQudmlld0JveCkpfX1mdW5jdGlvbiBzZnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJsaW5lLWNoYXJ0LWF4aXMiLDIwKSxWbSgib25WaWV3RXh0ZW50Q2hhbmdlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXMobiwieSIpfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7RG0oImF4aXNFeHRlbnQiLHQudmlld0JveC55KSgiY3VzdG9tRm9ybWF0dGVyIix0LmN1c3RvbVlGb3JtYXR0ZXIpKCJkb21EaW0iLHQuZG9tRGltZW5zaW9ucy55QXhpcykoImdyaWRDb3VudCIsdC5ZX0dSSURfQ09VTlQpKCJzY2FsZSIsdC55U2NhbGUpfX1mdW5jdGlvbiBsZnQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJsaW5lLWNoYXJ0LWF4aXMiLDIxKSxWbSgib25WaWV3RXh0ZW50Q2hhbmdlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXMobiwieCIpfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7RG0oImF4aXNFeHRlbnQiLHQudmlld0JveC54KSgiY3VzdG9tRm9ybWF0dGVyIix0LmN1c3RvbVhGb3JtYXR0ZXIpKCJkb21EaW0iLHQuZG9tRGltZW5zaW9ucy54QXhpcykoImdyaWRDb3VudCIsdC5YX0dSSURfQ09VTlQpKCJzY2FsZSIsdC54U2NhbGUpfX1jb25zdCBjZnQ9ZnVuY3Rpb24odCxlLG4sbyxpKXtyZXR1cm57eFNjYWxlOnQseVNjYWxlOmUsZG9tRGltZW5zaW9uOm4sdmlld0V4dGVudDpvLGZvcm1hdHRlcjppfX07ZnVuY3Rpb24gZGZ0KHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwxOCksSW0oMSwxOSksQW0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRG0oIm5nVGVtcGxhdGVPdXRsZXQiLHQuY3VzdG9tWEF4aXNUZW1wbGF0ZSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixQaCgyLGNmdCx0LnhTY2FsZSx0LnlTY2FsZSx0LmRvbURpbWVuc2lvbnMueEF4aXMsdC52aWV3Qm94LHQuY3VzdG9tWEZvcm1hdHRlcnx8dC54U2NhbGUuZGVmYXVsdEZvcm1hdHRlcikpfX1mdW5jdGlvbiBwZnQodCxlKXsxJnQmJihSbSgwLCJkaXYiLDIyKSxUbSgxLCJzcGFuIiwyMyksQW0oKSl9Y29uc3QgbWZ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJue2NvbnRhaW5lcjohMCwiZGFyay1tb2RlIjp0LCJsaW5lLW9ubHktbW9kZSI6ZX19LHVmdD17eDpbMCwxXSx5OlswLDFdfTtjbGFzcyBmZnR7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2VEZXRlY3Rvcj10LHRoaXMuUmVuZGVyZXJUeXBlPUsyLHRoaXMudXNlRGFya01vZGU9ITEsdGhpcy5wcmVmZXJyZWRSZW5kZXJlclR5cGU9SzIuV0VCR0wsdGhpcy54U2NhbGVUeXBlPUoyLkxJTkVBUix0aGlzLnlTY2FsZVR5cGU9SjIuTElORUFSLHRoaXMubGluZU9ubHk9ITEsdGhpcy5vblZpZXdCb3hPdmVycmlkZGVuPW5ldyBCKDEpLHRoaXMuaWdub3JlWU91dGxpZXJzPSExLHRoaXMuWV9HUklEX0NPVU5UPTYsdGhpcy5YX0dSSURfQ09VTlQ9MTAsdGhpcy54U2NhbGU9JG90KHRoaXMueFNjYWxlVHlwZSksdGhpcy55U2NhbGU9JG90KHRoaXMueFNjYWxlVHlwZSksdGhpcy52aWV3Qm94PXVmdCx0aGlzLmRvbURpbWVuc2lvbnM9e21haW46e3dpZHRoOjAsaGVpZ2h0OjB9LHhBeGlzOnt3aWR0aDowLGhlaWdodDowfSx5QXhpczp7d2lkdGg6MCxoZWlnaHQ6MH19LHRoaXMuc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50PSEwLHRoaXMubGluZUNoYXJ0PW51bGwsdGhpcy5pc0RhdGFVcGRhdGVkPSExLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQ9ITEsdGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITEsdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSExLHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnNjYWxlVXBkYXRlZD0hMCx0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3Q9ITF9bmdPbkluaXQoKXt0aGlzLm9uVmlld0JveE92ZXJyaWRkZW4ubmV4dCh0aGlzLmlzVmlld0JveE92ZXJyaWRkZW4pfW5nT25DaGFuZ2VzKHQpe3QueFNjYWxlVHlwZSYmKHRoaXMueFNjYWxlPSRvdCh0aGlzLnhTY2FsZVR5cGUpLHRoaXMuc2NhbGVVcGRhdGVkPSEwKSx0LnlTY2FsZVR5cGUmJih0aGlzLnlTY2FsZT0kb3QodGhpcy55U2NhbGVUeXBlKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCksdC5zZXJpZXNEYXRhJiYodGhpcy5pc0RhdGFVcGRhdGVkPSEwKSx0LmZpeGVkVmlld0JveCYmKHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSEwKSx0LnNlcmllc01ldGFkYXRhTWFwJiYodGhpcy5pc01ldGFkYXRhVXBkYXRlZD0hMCksdC51c2VEYXJrTW9kZSYmKHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSEwKSx0aGlzLnNjYWxlVXBkYXRlZCYmdGhpcy5zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCExKSx0aGlzLmlzVmlld0JveENoYW5nZWQ9dGhpcy5pc1ZpZXdCb3hDaGFuZ2VkfHx0aGlzLnNjYWxlVXBkYXRlZHx8IXRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbiYmdGhpcy5zaG91bGRVcGRhdGVEZWZhdWx0Vmlld0JveCh0KSx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuaW5pdGlhbGl6ZUNoYXJ0KCksdGhpcy51cGRhdGVMaW5lQ2hhcnQoKSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKX1yZWNvdmVyUmVuZGVyZXJJZk5lZWRlZCgpe3RoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdCYmIXRoaXMuZGlzYWJsZVVwZGF0ZSYmKHRoaXMuc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50PSExLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50PSEwLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuaW5pdGlhbGl6ZUNoYXJ0KCksdGhpcy5zY2FsZVVwZGF0ZWQ9ITAsdGhpcy5pc01ldGFkYXRhVXBkYXRlZD0hMCx0aGlzLmlzRGF0YVVwZGF0ZWQ9ITAsdGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITAsdGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITAsdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkPSEwLHRoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdD0hMSl9b25WaWV3UmVzaXplKCl7dGhpcy5saW5lQ2hhcnQmJih0aGlzLnJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCksdGhpcy5saW5lQ2hhcnQucmVzaXplKHRoaXMuZG9tRGltZW5zaW9ucy5tYWluKSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSl9c2hvdWxkVXBkYXRlRGVmYXVsdFZpZXdCb3godCl7aWYodC54U2NhbGVUeXBlfHx0LnlTY2FsZVR5cGV8fHQuaWdub3JlWU91dGxpZXJzKXJldHVybiEwO2lmKHQuc2VyaWVzRGF0YSlyZXR1cm4hMDtjb25zdCBlPXQuc2VyaWVzTWV0YWRhdGFNYXA7aWYoZSl7Y29uc3QgdD1lLnByZXZpb3VzVmFsdWU7aWYoT2JqZWN0LmtleXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkubGVuZ3RoIT09T2JqZWN0LmtleXMobnVsbCE9dD90Ont9KS5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0W2Usbl1vZiBPYmplY3QuZW50cmllcyh0aGlzLnNlcmllc01ldGFkYXRhTWFwKSl7Y29uc3Qgbz10JiZ0W2VdO2lmKCFvfHxuLnZpc2libGUhPT1vLnZpc2libGUpcmV0dXJuITB9fXJldHVybiExfW9uQ29udGV4dExvc3QoKXt0aGlzLmlzUmVuZGVyaW5nQ29udGV4dExvc3Q9ITAsdGhpcy5saW5lQ2hhcnQmJih0aGlzLmxpbmVDaGFydC5kaXNwb3NlKCksdGhpcy5saW5lQ2hhcnQ9bnVsbCl9dHJpZ2dlckNvbnRleHRMb3N0Rm9yVGVzdCgpe3RoaXMub25Db250ZXh0TG9zdCgpfWdldExpbmVDaGFydEZvclRlc3QoKXtyZXR1cm4gdGhpcy5saW5lQ2hhcnR9aW5pdGlhbGl6ZUNoYXJ0KCl7dGhpcy5saW5lQ2hhcnQmJnRoaXMubGluZUNoYXJ0LmRpc3Bvc2UoKTtjb25zdCB0PXRoaXMuZ2V0UmVuZGVyZXJUeXBlKCksZT17b25EcmF3RW5kOigpPT57fSxvbkNvbnRleHRMb3N0OnRoaXMub25Db250ZXh0TG9zdC5iaW5kKHRoaXMpfTtsZXQgbj1udWxsO3N3aXRjaCh0aGlzLnJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCksdCl7Y2FzZSBLMi5TVkc6bj17dHlwZTpLMi5TVkcsY29udGFpbmVyOnRoaXMuY2hhcnRFbC5uYXRpdmVFbGVtZW50LGNhbGxiYWNrczplLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbix1c2VEYXJrTW9kZTp0aGlzLnVzZURhcmtNb2RlfTticmVhaztjYXNlIEsyLldFQkdMOm49e3R5cGU6SzIuV0VCR0wsY29udGFpbmVyOnRoaXMuY2hhcnRFbC5uYXRpdmVFbGVtZW50LGRldmljZVBpeGVsUmF0aW86d2luZG93LmRldmljZVBpeGVsUmF0aW8sY2FsbGJhY2tzOmUsZG9tRGltZW5zaW9uOnRoaXMuZG9tRGltZW5zaW9ucy5tYWluLHVzZURhcmtNb2RlOnRoaXMudXNlRGFya01vZGV9O2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGA8bGluZS1jaGFydD4gZG9lcyBub3QgeWV0IHN1cHBvcnQgcmVuZGVyZXJUeXBlOiAke3R9YCl9Y29uc3Qgbz10IT09SzIuU1ZHJiZpaXQoKTt0aGlzLmxpbmVDaGFydD1uZXcobz9QdXQ6eHV0KShuKX1uZ09uRGVzdHJveSgpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC5kaXNwb3NlKCl9Z2V0UmVuZGVyZXJUeXBlKCl7cmV0dXJuKGZ1bmN0aW9uIHQoZSl7c3dpdGNoKGUpe2Nhc2UgSzIuU1ZHOnJldHVybiBLMi5TVkc7Y2FzZSBLMi5XRUJHTDpyZXR1cm4oZnVuY3Rpb24gdCgpe3JldHVybiBvaXR9KSgpP0syLldFQkdMOksyLlNWRztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biByZW5kZXJlclR5cGU6ICR7ZX1gKX19KSh0aGlzLnByZWZlcnJlZFJlbmRlcmVyVHlwZSl9cmVhZEFuZFVwZGF0ZURvbURpbWVuc2lvbnMoKXt0aGlzLmRvbURpbWVuc2lvbnM9e21haW46e3dpZHRoOnRoaXMuc2VyaWVzVmlldy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnNlcmllc1ZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9LHhBeGlzOnt3aWR0aDp0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMueEF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9LHlBeGlzOnt3aWR0aDp0aGlzLnlBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMueUF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9fX11cGRhdGVMaW5lQ2hhcnQoKXt2YXIgdCxlO2lmKHRoaXMucmVjb3ZlclJlbmRlcmVySWZOZWVkZWQoKSx0aGlzLmxpbmVDaGFydCYmIXRoaXMuZGlzYWJsZVVwZGF0ZSl7aWYodGhpcy5zY2FsZVVwZGF0ZWQmJih0aGlzLnNjYWxlVXBkYXRlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXRYU2NhbGVUeXBlKHRoaXMueFNjYWxlVHlwZSksdGhpcy5saW5lQ2hhcnQuc2V0WVNjYWxlVHlwZSh0aGlzLnlTY2FsZVR5cGUpKSx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkJiYodGhpcy5pc01ldGFkYXRhVXBkYXRlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXRNZXRhZGF0YSh0aGlzLnNlcmllc01ldGFkYXRhTWFwKSksdGhpcy5pc0RhdGFVcGRhdGVkJiYodGhpcy5pc0RhdGFVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldERhdGEodGhpcy5zZXJpZXNEYXRhKSksdGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQmJih0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMSx0aGlzLmxpbmVDaGFydC5zZXRVc2VEYXJrTW9kZSh0aGlzLnVzZURhcmtNb2RlKSksIXRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbiYmdGhpcy5maXhlZFZpZXdCb3gpdGhpcy52aWV3Qm94PXRoaXMuZml4ZWRWaWV3Qm94O2Vsc2UgaWYoIXRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbiYmdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkKXtjb25zdCBuPShmdW5jdGlvbiBvKHQsZSxuLGksYSl7bGV0IHI9bnVsbCxzPW51bGwsbD1bXTtmb3IoY29uc3R7aWQ6bixwb2ludHM6b31vZiB0KXtjb25zdCB0PWVbbl07aWYodCYmIXQuYXV4JiZ0LnZpc2libGUpZm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2NvbnN0e3g6ZSx5Om59PW9bdF07aShlKSYmKHI9bnVsbD09PXJ8fGU8cj9lOnIscz1udWxsPT09c3x8ZT5zP2U6cyksYShuKSYmbC5wdXNoKG4pfX1sLnNvcnQoYzUpO2xldCBjPWxbMF0sZD1sW2wubGVuZ3RoLTFdO3JldHVybiBuJiZsLmxlbmd0aD4yJiYoYz1sW01hdGguY2VpbCguMDUqKGwubGVuZ3RoLTEpKV0sZD1sW01hdGguZmxvb3IoLjk1KihsLmxlbmd0aC0xKSldKSx7eDpudWxsIT09ciYmbnVsbCE9PXM/W3Isc106dm9pZCAwLHk6dm9pZCAwIT09YyYmdm9pZCAwIT09ZD9bYyxkXTp2b2lkIDB9fSkodGhpcy5zZXJpZXNEYXRhLHRoaXMuc2VyaWVzTWV0YWRhdGFNYXAsdGhpcy5pZ25vcmVZT3V0bGllcnMsdGhpcy54U2NhbGUuaXNTYWZlTnVtYmVyLHRoaXMueVNjYWxlLmlzU2FmZU51bWJlcik7dGhpcy52aWV3Qm94PXt4OnRoaXMueFNjYWxlLm5pY2VEb21haW4obnVsbCE9PSh0PW4ueCkmJnZvaWQgMCE9PXQ/dDp1ZnQueCkseTp0aGlzLnlTY2FsZS5uaWNlRG9tYWluKG51bGwhPT0oZT1uLnkpJiZ2b2lkIDAhPT1lP2U6dWZ0LnkpfX0odGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWR8fHRoaXMuaXNWaWV3Qm94Q2hhbmdlZCkmJih0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0Vmlld0JveCh0aGlzLnZpZXdCb3gpKX19b25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDp0fSl7dGhpcy5zZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCEwKSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy52aWV3Qm94PXQsdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX12aWV3Qm94UmVzZXQoKXt0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpfXNldElzVmlld0JveE92ZXJyaWRkZW4odCl7Y29uc3QgZT10aGlzLmlzVmlld0JveE92ZXJyaWRkZW47dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPXQsZSE9PXQmJnRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbi5uZXh0KHQpfWdldElzVmlld0JveE92ZXJyaWRkZW4oKXtyZXR1cm4gdGhpcy5vblZpZXdCb3hPdmVycmlkZGVufW9uVmlld0JveENoYW5nZWRGcm9tQXhpcyh0LGUpe2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMudmlld0JveCkse1tlXTp0fSk7dGhpcy5vblZpZXdCb3hDaGFuZ2VkKHtkYXRhRXh0ZW50Om59KX19ZmZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmZnQpKFNtKFVnKSl9LGZmdC7JtWNtcD10byh7dHlwZTpmZnQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaChLdXQsNyxoZyksUWgoSnV0LDcsaGcpLFFoKFF1dCw3LGhnKSxRaCgkdXQsNSxoZykpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uc2VyaWVzVmlldz10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi54QXhpcz10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi55QXhpcz10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5jaGFydEVsPXQuZmlyc3QpfX0saW5wdXRzOntjdXN0b21WaXNUZW1wbGF0ZToiY3VzdG9tVmlzVGVtcGxhdGUiLGN1c3RvbVhBeGlzVGVtcGxhdGU6ImN1c3RvbVhBeGlzVGVtcGxhdGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIscHJlZmVycmVkUmVuZGVyZXJUeXBlOiJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHNlcmllc0RhdGE6InNlcmllc0RhdGEiLGZpeGVkVmlld0JveDoiZml4ZWRWaWV3Qm94IixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHlTY2FsZVR5cGU6InlTY2FsZVR5cGUiLGN1c3RvbVhGb3JtYXR0ZXI6ImN1c3RvbVhGb3JtYXR0ZXIiLGN1c3RvbVlGb3JtYXR0ZXI6ImN1c3RvbVlGb3JtYXR0ZXIiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIixsaW5lT25seToibGluZU9ubHkiLGRpc2FibGVVcGRhdGU6ImRpc2FibGVVcGRhdGUiLGlnbm9yZVlPdXRsaWVyczoiaWdub3JlWU91dGxpZXJzIn0sZmVhdHVyZXM6W0JvXSxkZWNsczoxNix2YXJzOjEzLGNvbnN0czpbWyJkZXRlY3RSZXNpemUiLCIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIiwzLCJuZ0NsYXNzIiwicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsib3ZlcmxheVRhcmdldCIsImNka092ZXJsYXlPcmlnaW4iXSxbMSwic2VyaWVzLXZpZXciXSxbInNlcmllc1ZpZXciLCIiXSxbMywidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInhHcmlkQ291bnQiLCJ5R3JpZENvdW50IiwiZG9tRGltIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImN1c3RvbS12aXMiLDQsIm5nSWYiXSxbMSwieS1heGlzIl0sWyJ5QXhpcyIsIiJdLFsiYXhpcyIsInkiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSIsNCwibmdJZiJdLFsxLCJ4LWF4aXMiXSxbInhBeGlzIiwiIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImRvdCIsNCwibmdJZiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iXSxbImNoYXJ0RWwiLCIiXSxbMywic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwidmlld0V4dGVudCIsInhTY2FsZSIsInlTY2FsZSIsInRvb2x0aXBPcmlnaW5FbCIsImRvbURpbSIsInRvb2x0aXBUZW1wbGF0ZSIsIm9uVmlld0V4dGVudENoYW5nZSIsIm9uVmlld0V4dGVudFJlc2V0Il0sWzEsImN1c3RvbS12aXMiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWyJheGlzIiwieSIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWyJheGlzIiwieCIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIl0sWzEsImRvdCJdLFsxLCJyZWN0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDAsMSksVm0oIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uVmlld1Jlc2l6ZSgpfSkpLFJtKDIsImRpdiIsMiwzKSxRcCg0LHRmdCwxLDYsImxpbmUtY2hhcnQtZ3JpZC12aWV3Iiw0KSxRcCg1LG9mdCwzLDIsIm5nLWNvbnRhaW5lciIsNSksUXAoNixpZnQsMSw4LCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDYpLFFwKDcscmZ0LDIsNywiZGl2Iiw3KSxBbSgpLFJtKDgsImRpdiIsOCw5KSxRcCgxMCxzZnQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEwKSxBbSgpLFJtKDExLCJkaXYiLDExLDEyKSxRcCgxMyxsZnQsMSw1LCJsaW5lLWNoYXJ0LWF4aXMiLDEzKSxRcCgxNCxkZnQsMiw4LCJkaXYiLDcpLEFtKCksUXAoMTUscGZ0LDIsMCwiZGl2IiwxNCksQW0oKSksMiZlJiYoRG0oIm5nQ2xhc3MiLHZoKDEwLG1mdCxuLnVzZURhcmtNb2RlLG4ubGluZU9ubHkpKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLDApLHJjKDQpLERtKCJuZ0lmIiwhbi5saW5lT25seSkscmMoMSksRG0oIm5nSWYiLG4uc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50KSxyYygxKSxEbSgibmdJZiIsIW4ubGluZU9ubHkpLHJjKDEpLERtKCJuZ0lmIixuLmN1c3RvbVZpc1RlbXBsYXRlKSxyYygzKSxEbSgibmdJZiIsIW4ubGluZU9ubHkpLHJjKDMpLERtKCJuZ0lmIiwhbi5saW5lT25seSkscmMoMSksRG0oIm5nSWYiLG4uY3VzdG9tWEF4aXNUZW1wbGF0ZSkscmMoMSksRG0oIm5nSWYiLCFuLmxpbmVPbmx5KSl9LGRpcmVjdGl2ZXM6W29KLGZMLGFNLGRNLEV1dCxVdXQsTU0sWHV0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdDtkaXNwbGF5OmdyaWQ7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCU7Z3JpZC10ZW1wbGF0ZS1hcmVhczoieWF4aXMgc2VyaWVzIiAiZG90IHhheGlzIjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6NTBweCAxZnI7Z3JpZC1hdXRvLXJvd3M6MWZyIDMwcHh9LmNvbnRhaW5lci5kYXJrLW1vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmNvbnRhaW5lci5saW5lLW9ubHktbW9kZVtfbmdjb250ZW50LSVDT01QJV17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjAgMWZyO2dyaWQtYXV0by1yb3dzOjFmciAwfS5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnNlcmllcztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59LnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jdXN0b20tdmlzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNhbnZhc1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBzdmdbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbGluZS1jaGFydC1ncmlkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbGluZS1jaGFydC1pbnRlcmFjdGl2ZS12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJX0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0LWF4aXNbX25nY29udGVudC0lQ09NUCVdLCAueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtYXhpc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnhheGlzO3Bvc2l0aW9uOnJlbGF0aXZlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5YXhpc30uZG90W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6ZG90O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MXB4O3dpZHRoOjFweDtiYWNrZ3JvdW5kLWNvbG9yOiNhYWF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGZmdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0Iix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlVnfV19KSx7c2VyaWVzVmlldzpbe3R5cGU6WmEsYXJnczpbInNlcmllc1ZpZXciLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0seEF4aXM6W3t0eXBlOlphLGFyZ3M6WyJ4QXhpcyIse3N0YXRpYzohMCxyZWFkOmhnfV19XSx5QXhpczpbe3R5cGU6WmEsYXJnczpbInlBeGlzIix7c3RhdGljOiEwLHJlYWQ6aGd9XX1dLGNoYXJ0RWw6W3t0eXBlOlphLGFyZ3M6WyJjaGFydEVsIix7c3RhdGljOiExLHJlYWQ6aGd9XX1dLGN1c3RvbVZpc1RlbXBsYXRlOlt7dHlwZTp4eX1dLGN1c3RvbVhBeGlzVGVtcGxhdGU6W3t0eXBlOnh5fV0sdXNlRGFya01vZGU6W3t0eXBlOnh5fV0scHJlZmVycmVkUmVuZGVyZXJUeXBlOlt7dHlwZTp4eX1dLHNlcmllc0RhdGE6W3t0eXBlOnh5fV0sZml4ZWRWaWV3Qm94Olt7dHlwZTp4eX1dLHNlcmllc01ldGFkYXRhTWFwOlt7dHlwZTp4eX1dLHhTY2FsZVR5cGU6W3t0eXBlOnh5fV0seVNjYWxlVHlwZTpbe3R5cGU6eHl9XSxjdXN0b21YRm9ybWF0dGVyOlt7dHlwZTp4eX1dLGN1c3RvbVlGb3JtYXR0ZXI6W3t0eXBlOnh5fV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTp4eX1dLGxpbmVPbmx5Olt7dHlwZTp4eX1dLGRpc2FibGVVcGRhdGU6W3t0eXBlOnh5fV0saWdub3JlWU91dGxpZXJzOlt7dHlwZTp4eX1dfSk7Y2xhc3MgZ2Z0e31nZnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGdmdCl9LGdmdC7JtWNtcD10byh7dHlwZTpnZnQsc2VsZWN0b3JzOltbInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiXV0saW5wdXRzOntzZWxlY3RlZFRpbWU6InNlbGVjdGVkVGltZSJ9LGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkxpbmtlZCBzdGVwIGlzIG5vdCBmb3VuZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24uIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmVG0oMCwibWF0LWljb24iLDApfSxkaXJlY3RpdmVzOltEV10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZDMyZjJmO2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MDt3aWR0aDoxZW19Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOiNkMzJmMmZ9W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnZnQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsdGVtcGxhdGU6J1xuICAgIDxtYXQtaWNvblxuICAgICAgc3ZnSWNvbj0iaW5mb19vdXRsaW5lXzI0cHgiXG4gICAgICB0aXRsZT0iTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiJcbiAgICA+PC9tYXQtaWNvbj5cbiAgJyxzdHlsZVVybHM6WyJ2aXNfc2VsZWN0ZWRfdGltZV9jbGlwcGVkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtzZWxlY3RlZFRpbWU6W3t0eXBlOnh5fV19KTtjbGFzcyBoZnR7fWZ1bmN0aW9uIGJmdCh0LGUpezEmdCYmVG0oMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIpfWZ1bmN0aW9uIHlmdCh0LGUpezEmdCYmVG0oMCwibWF0LXNwaW5uZXIiLDIzKX1mdW5jdGlvbiBfZnQodCxlKXsxJnQmJihSbSgwLCJ0aCIpLGt1KDEsIlNtb290aGVkIiksQW0oKSl9ZnVuY3Rpb24gQ2Z0KHQsZSl7aWYoMSZ0JiYoUm0oMCwidGQiKSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKS4kaW1wbGljaXQsZT1ZbSgyKTtyYygxKSxEdSgiICIsZS52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnkpLCIgIil9fWZ1bmN0aW9uIE1mdCh0LGUpe2lmKDEmdCYmKE5tKDApLFJtKDEsInRyIiwyNyksUm0oMiwidGQiLDI4KSxUbSgzLCJzcGFuIiksQW0oKSxSbSg0LCJ0ZCIsMSksa3UoNSksQW0oKSxRcCg2LENmdCwyLDEsInRkIiwzKSxSbSg3LCJ0ZCIpLGt1KDgpLEFtKCksUm0oOSwidGQiKSxrdSgxMCksQW0oKSxSbSgxMSwidGQiKSxrdSgxMiksQWgoMTMsImRhdGUiKSxBbSgpLFJtKDE0LCJ0ZCIpLGt1KDE1KSxBbSgpLEFtKCksem0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7cmMoMSkscHUoImNsb3Nlc3QiLHQubWV0YWRhdGEuY2xvc2VzdCkscmMoMiksZHUoImJhY2tncm91bmQtY29sb3IiLHQubWV0YWRhdGEuY29sb3IpLHJjKDIpLFN1KHQubWV0YWRhdGEuZGlzcGxheU5hbWUpLHJjKDEpLERtKCJuZ0lmIixuLnNtb290aGluZ0VuYWJsZWQpLHJjKDIpLFN1KG4udmFsdWVGb3JtYXR0ZXIuZm9ybWF0U2hvcnQodC5wb2ludC52YWx1ZSkpLHJjKDIpLFN1KG4uc3RlcEZvcm1hdHRlci5mb3JtYXRTaG9ydCh0LnBvaW50LnN0ZXApKSxyYygyKSxTdShOaCgxMywxMCx0LnBvaW50LndhbGxUaW1lLCJzaG9ydCIpKSxyYygzKSxEdSgiICIsbi5yZWxhdGl2ZVhGb3JtYXR0ZXIuZm9ybWF0UmVhZGFibGUodC5wb2ludC5yZWxhdGl2ZVRpbWVJbk1zKSwiICIpfX1mdW5jdGlvbiB2ZnQodCxlKXtpZigxJnQmJihSbSgwLCJ0YWJsZSIsMjQpLFJtKDEsInRoZWFkIiksUm0oMiwidHIiKSxUbSgzLCJ0aCIsMjUpLFJtKDQsInRoIiksa3UoNSwiUnVuIiksQW0oKSxRcCg2LF9mdCwyLDAsInRoIiwzKSxSbSg3LCJ0aCIpLGt1KDgsIlZhbHVlIiksQW0oKSxSbSg5LCJ0aCIpLGt1KDEwLCJTdGVwIiksQW0oKSxSbSgxMSwidGgiKSxrdSgxMiwiVGltZSIpLEFtKCksUm0oMTMsInRoIiksa3UoMTQsIlJlbGF0aXZlIiksQW0oKSxBbSgpLEFtKCksUm0oMTUsInRib2R5IiksUXAoMTYsTWZ0LDE2LDEzLCJuZy1jb250YWluZXIiLDI2KSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1lLmRhdGEsbj1lLmN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQsbz1ZbSgpO3JjKDYpLERtKCJuZ0lmIixvLnNtb290aGluZ0VuYWJsZWQpLHJjKDEwKSxEbSgibmdGb3JPZiIsby5nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsbikpKCJuZ0ZvclRyYWNrQnkiLG8udHJhY2tCeVRvb2x0aXBEYXR1bSl9fWhmdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aGZ0KX0saGZ0Lsm1Y21wPXRvKHt0eXBlOmhmdCxzZWxlY3RvcnM6W1sibGlua2VkLXRpbWUtZm9iIl1dLGlucHV0czp7c3RlcDoic3RlcCJ9LGRlY2xzOjMsdmFyczozLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJzcGFuIiksa3UoMSksQWgoMiwibnVtYmVyIiksQW0oKSksMiZlJiYocmMoMSksU3UoVGgoMiwxLG4uc3RlcCkpKX0scGlwZXM6W0ZNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfXNwYW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItcmFkaXVzOjI1cHg7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTFweDtwYWRkaW5nOjJweCA1cHh9c3Bhbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIHNwYW5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZXtib3JkZXItY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2JvcmRlci1jb2xvcjojOGU5OGEzfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmV7Ym9yZGVyLWNvbG9yOiNlZWV9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGhmdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJsaW5rZWQtdGltZS1mb2IiLHRlbXBsYXRlOiI8c3Bhbj57eyBzdGVwIHwgbnVtYmVyIH19PC9zcGFuPiIsc3R5bGVVcmxzOlsibGlua2VkX3RpbWVfZm9iX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtzdGVwOlt7dHlwZTp4eX1dfSk7Y29uc3QgeGZ0PWZ1bmN0aW9uKHQpe3JldHVyblswLHRdfSxPZnQ9ZnVuY3Rpb24oKXtyZXR1cm57Im91dC1vZi1zZWxlY3RlZC10aW1lIjohMCxlbmQ6ITAscmFuZ2U6ITB9fTtmdW5jdGlvbiBQZnQodCxlKXtpZigxJnQmJlRtKDAsImRpdiIsMjkpLDImdCl7Y29uc3QgdD1ZbSgyKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT1ZbSgpO2R1KCJsZWZ0IixvLmZvcndhcmQoZS54LE1oKDMseGZ0LG4ud2lkdGgpLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKyJweCIpLERtKCJuZ0NsYXNzIixDaCg1LE9mdCkpfX1jb25zdCB3ZnQ9ZnVuY3Rpb24odCl7cmV0dXJuW3QsMF19LGtmdD1mdW5jdGlvbih0KXtyZXR1cm57Im91dC1vZi1zZWxlY3RlZC10aW1lIjohMCxzdGFydDohMCxyYW5nZTp0fX07ZnVuY3Rpb24gU2Z0KHQsZSl7aWYoMSZ0JiYoTm0oMCksVG0oMSwiZGl2IiwyOSksUXAoMixQZnQsMSw2LCJkaXYiLDMwKSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oKSxlPXQudmlld0V4dGVudCxuPXQuZG9tRGltZW5zaW9uLG89dC54U2NhbGUsaT1ZbSgpO3JjKDEpLGR1KCJyaWdodCIsby5mb3J3YXJkKGUueCxNaCg0LHdmdCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5zdGFydFN0ZXApKyJweCIpLERtKCJuZ0NsYXNzIixNaCg2LGtmdCwhIWkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApKSxyYygxKSxEbSgibmdJZiIsaS5zZWxlY3RlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIERmdCh0LGUpezEmdCYmUXAoMCxTZnQsMyw4LCJuZy1jb250YWluZXIiLDMpLDImdCYmRG0oIm5nSWYiLFltKCkuc2VsZWN0ZWRUaW1lKX1mdW5jdGlvbiBFZnQodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDMxKSxUbSgxLCJsaW5rZWQtdGltZS1mb2IiLDMyKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oMiksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9WW0oKTtkdSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5mb3J3YXJkKGUueCxNaCgzLHhmdCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5lbmRTdGVwKSsicHgsIDApIikscmMoMSksRG0oInN0ZXAiLGkuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApfX1mdW5jdGlvbiBSZnQodCxlKXtpZigxJnQmJihObSgwKSxSbSgxLCJkaXYiLDMxKSxUbSgyLCJsaW5rZWQtdGltZS1mb2IiLDMyKSxBbSgpLFFwKDMsRWZ0LDIsNSwiZGl2IiwzMyksem0oKSksMiZ0KXtjb25zdCB0PVltKCksZT10LnZpZXdFeHRlbnQsbj10LmRvbURpbWVuc2lvbixvPXQueFNjYWxlLGk9WW0oKTtyYygxKSxkdSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5mb3J3YXJkKGUueCxNaCg0LHhmdCxuLndpZHRoKSxpLnNlbGVjdGVkVGltZS5zdGFydFN0ZXApKyJweCwgMCkiKSxyYygxKSxEbSgic3RlcCIsaS5zZWxlY3RlZFRpbWUuc3RhcnRTdGVwKSxyYygxKSxEbSgibmdJZiIsaS5zZWxlY3RlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIEFmdCh0LGUpezEmdCYmUXAoMCxSZnQsNCw2LCJuZy1jb250YWluZXIiLDMpLDImdCYmRG0oIm5nSWYiLFltKCkuc2VsZWN0ZWRUaW1lKX1jbGFzcyBUZnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuZGlhbG9nPWUsdGhpcy5EYXRhTG9hZFN0YXRlPXlFLHRoaXMuUmVuZGVyZXJUeXBlPUsyLHRoaXMuU2NhbGVUeXBlPUoyLHRoaXMub25GdWxsU2l6ZVRvZ2dsZT1uZXcgTGgsdGhpcy5vblBpbkNsaWNrZWQ9bmV3IExoLHRoaXMueVNjYWxlVHlwZT1KMi5MSU5FQVIsdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSExLHRoaXMucmVsYXRpdmVYRm9ybWF0dGVyPVhvdCx0aGlzLnZhbHVlRm9ybWF0dGVyPUlvdCx0aGlzLnN0ZXBGb3JtYXR0ZXI9TG90fXRvZ2dsZVlTY2FsZVR5cGUoKXt0aGlzLnlTY2FsZVR5cGU9dGhpcy55U2NhbGVUeXBlPT09SjIuTElORUFSP0oyLkxPRzEwOkoyLkxJTkVBUn1yZXNldERvbWFpbigpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLmxpbmVDaGFydC52aWV3Qm94UmVzZXQoKX10cmFja0J5VG9vbHRpcERhdHVtKHQsZSl7cmV0dXJuIGUuaWR9Z2V0Q3VzdG9tWEZvcm1hdHRlcigpe3N3aXRjaCh0aGlzLnhBeGlzVHlwZSl7Y2FzZSB5QS5SRUxBVElWRTpyZXR1cm4gWG90O2Nhc2UgeUEuU1RFUDpyZXR1cm4gVW90O2Nhc2UgeUEuV0FMTF9USU1FOmRlZmF1bHQ6cmV0dXJufX1nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsZSl7Y29uc3Qgbj10Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRhZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRhZGF0YSkse2Nsb3Nlc3Q6ITEsZGlzdFNxVG9DdXJzb3I6TWF0aC5oeXBvdCh0LnBvaW50LngtZS54LHQucG9pbnQueS1lLnkpfSl9KSkpO2xldCBvPTEvMCxpPTA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspbz5uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yJiYobz1uW3RdLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLGk9dCk7c3dpdGNoKG4ubGVuZ3RoJiYobltpXS5tZXRhZGF0YS5jbG9zZXN0PSEwKSx0aGlzLnRvb2x0aXBTb3J0KXtjYXNlIGJBLkRFRkFVTFQ6cmV0dXJuIG47Y2FzZSBiQS5BU0NFTkRJTkc6cmV0dXJuIG4uc29ydCgoKHQsZSk9PnQucG9pbnQueS1lLnBvaW50LnkpKTtjYXNlIGJBLkRFU0NFTkRJTkc6cmV0dXJuIG4uc29ydCgoKHQsZSk9PmUucG9pbnQueS10LnBvaW50LnkpKTtjYXNlIGJBLk5FQVJFU1Q6cmV0dXJuIG4uc29ydCgoKHQsZSk9PnQubWV0YWRhdGEuZGlzdFNxVG9DdXJzb3ItZS5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvcikpfX1vcGVuRGF0YURvd25sb2FkRGlhbG9nKCl7dGhpcy5kaWFsb2cub3Blbih0aGlzLkRhdGFEb3dubG9hZENvbXBvbmVudCx7ZGF0YTp7Y2FyZElkOnRoaXMuY2FyZElkfX0pfX1UZnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFRmdCkoU20oaGcpLFNtKG9XKSl9LFRmdC7JtWNtcD10byh7dHlwZTpUZnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoZmZ0LDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4ubGluZUNoYXJ0PXQuZmlyc3QpfX0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsY2hhcnRNZXRhZGF0YU1hcDoiY2hhcnRNZXRhZGF0YU1hcCIsRGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGRhdGFTZXJpZXM6ImRhdGFTZXJpZXMiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIsaXNDYXJkVmlzaWJsZToiaXNDYXJkVmlzaWJsZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixsb2FkU3RhdGU6ImxvYWRTdGF0ZSIsc2hvd0Z1bGxTaXplOiJzaG93RnVsbFNpemUiLHNtb290aGluZ0VuYWJsZWQ6InNtb290aGluZ0VuYWJsZWQiLHRhZzoidGFnIix0aXRsZToidGl0bGUiLHRvb2x0aXBTb3J0OiJ0b29sdGlwU29ydCIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUifSxvdXRwdXRzOntvbkZ1bGxTaXplVG9nZ2xlOiJvbkZ1bGxTaXplVG9nZ2xlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGRlY2xzOjM0LHZhcnM6MjYsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuLG8saTtyZXR1cm4gdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHJlc2V0cyBsaW5lIGNoYXJ0IGRvbWFpbiB0byB0aGUgZGF0YeKQn2U2OGE1NTI5NDFhYjQyN2E5OWU3NDM3ZTA4NDQzZjMwYWM3MWNjZDbikJ8zODMwNjQ2NTIxMDU4MjY4NTU4OkZpdCBsaW5lIGNoYXJ0IGRvbWFpbnMgdG8gZGF0YWAsZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiUGluIGNhcmQiKTokbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgLG49InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIpOiRsb2NhbGl6ZWA6QSBidXR0b24gb24gbGluZSBjaGFydCB0aGF0IHRvZ2dsZXMgZnVsbCBzaXplIG1vZGUu4pCfZmM4Zjc2N2QwYjlmOTMwMTg3YTFiYWUzNDQ3N2FkMjg3MzZlY2UzM+KQnzkxNTcyMTU2MzYzODkyNjU5NzpUb2dnbGUgZnVsbCBzaXplIG1vZGVgLG89InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIik6JGxvY2FsaXplYDpBbiBvdmVyZmxvdyBtZW51IGJ1dHRvbiB0aGF0IG9wZW5zIG1vcmUgbGluZSBjaGFydCBvcHRpb25z4pCfYjI2MGZhYjk0NmEzMDc3Y2UyMGZkMjhlMzM2OTc5ZjU4NjcyMGU4ZOKQnzg3ODA1Mzc0MDIxMDMzNjQzNTpNb3JlIGxpbmUgY2hhcnQgb3B0aW9uc2AsaT0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydCIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCB0b2dnbGVzIGxvZyBzY2FsZSBvbiB5LWF4aXMgb24gYSBsaW5lIGNoYXJ04pCfZmU5MWY5NmFiOWIzYmFjYTVhNDg5MTNmMmIwZmFlODQ0ODNkOTNlM+KQnzMzNzQ2NDU2MjA2Mzg4ODM5MjY6VG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydGAsW1sxLCJoZWFkaW5nIl0sWzEsIm5hbWUiXSxbMSwidGFnIiwzLCJ0aXRsZSIsInZhbHVlIl0sWzQsIm5nSWYiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiZGlzYWJsZWQiLCJ0aXRsZSIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG8sInRpdGxlIiwiTW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnMiLDMsIm1hdE1lbnVUcmlnZ2VyRm9yIl0sWyJzdmdJY29uIiwibW9yZV92ZXJ0XzI0cHgiXSxbIm1lbnUiLCJtYXRNZW51Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwiYXJpYS1sYWJlbCIsaSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImxpbmVfd2VpZ2h0XzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJhcmlhLWxhYmVsIiwiT3BlbiBkaWFsb2cgdG8gZG93bmxvYWQgZGF0YSIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXSxbMSwiY2hhcnQtY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzMsImRpc2FibGVVcGRhdGUiLCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ4U2NhbGVUeXBlIiwieVNjYWxlVHlwZSIsImN1c3RvbVhGb3JtYXR0ZXIiLCJpZ25vcmVZT3V0bGllcnMiLCJ0b29sdGlwVGVtcGxhdGUiLCJ1c2VEYXJrTW9kZSIsImN1c3RvbVZpc1RlbXBsYXRlIiwiY3VzdG9tWEF4aXNUZW1wbGF0ZSIsIm9uVmlld0JveE92ZXJyaWRkZW4iXSxbInRvb2x0aXAiLCIiXSxbImxpbmVDaGFydEN1c3RvbVZpcyIsIiJdLFsibGluZUNoYXJ0Q3VzdG9tWEF4aXNWaXMiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwidG9vbHRpcCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMywibmdDbGFzcyJdLFszLCJuZ0NsYXNzIiwibGVmdCIsNCwibmdJZiJdLFsxLCJsaW5rZWQtdGltZS1mb2ItY29udGFpbmVyIl0sWzEsInNlbGVjdGVkLXRpbWUtZm9iIiwzLCJzdGVwIl0sWyJjbGFzcyIsImxpbmtlZC10aW1lLWZvYi1jb250YWluZXIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFJtKDAsImRpdiIsMCksUm0oMSwic3BhbiIsMSksVG0oMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLFFwKDMsYmZ0LDEsMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsMyksQW0oKSxSbSg0LCJzcGFuIiw0KSxSbSg1LCJidXR0b24iLDUpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5yZXNldERvbWFpbigpfSkpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxUbSg4LCJtYXQtaWNvbiIsNiksQW0oKSxSbSg5LCJidXR0b24iLDcpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblBpbkNsaWNrZWQuZW1pdCghbi5pc1Bpbm5lZCl9KSksVG0oMTAsIm1hdC1pY29uIiw4KSxBbSgpLFJtKDExLCJidXR0b24iLDkpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkZ1bGxTaXplVG9nZ2xlLmVtaXQoKX0pKSxUbSgxMiwibWF0LWljb24iLDgpLEFtKCksUm0oMTMsImJ1dHRvbiIsMTApLFRtKDE0LCJtYXQtaWNvbiIsMTEpLEFtKCksUm0oMTUsIm1hdC1tZW51IixudWxsLDEyKSxSbSgxNywiYnV0dG9uIiwxMyksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZVlTY2FsZVR5cGUoKX0pKSxUbSgxOCwibWF0LWljb24iLDE0KSxSbSgxOSwic3BhbiIpLGt1KDIwLCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSIpLEFtKCksQW0oKSxSbSgyMSwiYnV0dG9uIiwxNSksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9wZW5EYXRhRG93bmxvYWREaWFsb2coKX0pKSxUbSgyMiwibWF0LWljb24iLDE2KSxSbSgyMywic3BhbiIpLGt1KDI0LCJEb3dubG9hZCBkYXRhIiksQW0oKSxBbSgpLEFtKCksQW0oKSxBbSgpLFJtKDI1LCJkaXYiLDE3KSxRcCgyNix5ZnQsMSwwLCJtYXQtc3Bpbm5lciIsMTgpLFJtKDI3LCJsaW5lLWNoYXJ0IiwxOSksVm0oIm9uVmlld0JveE92ZXJyaWRkZW4iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlzVmlld0JveE92ZXJyaWRkZW49ZX0pKSxBbSgpLFFwKDI4LHZmdCwxNywzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMCxpYiksQW0oKSxRcCgzMCxEZnQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwyMSxpYiksUXAoMzIsQWZ0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMjIsaWIpKSwyJmUpe2NvbnN0IHQ9JHAoMTYpLGU9JHAoMjkpLG89JHAoMzEpLGk9JHAoMzMpO3JjKDIpLEttKCJ0aXRsZSIsbi50YWcpLEttKCJ2YWx1ZSIsbi50aXRsZSkscmMoMSksRG0oIm5nSWYiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSxyYygyKSxEbSgiZGlzYWJsZWQiLCFuLmxpbmVDaGFydHx8IVRoKDYsMjIsbi5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKSkoInRpdGxlIixuLmxpbmVDaGFydCYmVGgoNywyNCxuLmxpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCkpPyJMaW5lIGNoYXJ0IGlzIGFscmVhZHkgZml0dGVkIHRvIGRhdGEuIFdoZW4gZGF0YSB1cGRhdGVzLCB0aGUgbGluZSBjaGFydCB3aWxsIGF1dG8gZml0IHRvIGl0cyBkb21haW4uIjoiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIikscmMoNCksanAoInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxyYygxKSxEbSgic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxyYygyKSxEbSgic3ZnSWNvbiIsbi5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4IikscmMoMSksRG0oIm1hdE1lbnVUcmlnZ2VyRm9yIix0KSxyYygxMyksRG0oIm5nSWYiLG4ubG9hZFN0YXRlPT09bi5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLHJjKDEpLERtKCJkaXNhYmxlVXBkYXRlIiwhbi5pc0NhcmRWaXNpYmxlKSgicHJlZmVycmVkUmVuZGVyZXJUeXBlIixuLlJlbmRlcmVyVHlwZS5XRUJHTCkoInNlcmllc0RhdGEiLG4uZGF0YVNlcmllcykoInNlcmllc01ldGFkYXRhTWFwIixuLmNoYXJ0TWV0YWRhdGFNYXApKCJ4U2NhbGVUeXBlIixuLnhTY2FsZVR5cGUpKCJ5U2NhbGVUeXBlIixuLnlTY2FsZVR5cGUpKCJjdXN0b21YRm9ybWF0dGVyIixuLmdldEN1c3RvbVhGb3JtYXR0ZXIoKSkoImlnbm9yZVlPdXRsaWVycyIsbi5pZ25vcmVPdXRsaWVycykoInRvb2x0aXBUZW1wbGF0ZSIsZSkoInVzZURhcmtNb2RlIixuLnVzZURhcmtNb2RlKSgiY3VzdG9tVmlzVGVtcGxhdGUiLG8pKCJjdXN0b21YQXhpc1RlbXBsYXRlIixpKX19LGRpcmVjdGl2ZXM6W3oyLGRNLFhILERXLGVZLEtXLFdXLGZmdCxnZnQsbzEsbE0sYU0saGZ0XSxwaXBlczpbd00sUk1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxNHB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO21hcmdpbi1ib3R0b206NHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dhcDo1cHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gYXV0b30uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV0gICB2aXMtc2VsZWN0ZWQtdGltZS1jbGlwcGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MS4yZW07bGluZS1oZWlnaHQ6MH0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OjF9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTFweDt0b3A6MTFweH0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCV9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1zcGFjaW5nOjRweDtmb250LXNpemU6MTNweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1hbGlnbjpsZWZ0fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvd1tfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLmNsb3Nlc3RbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5vdXQtb2Ytc2VsZWN0ZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjAgZGFzaGVkIGN1cnJlbnRDb2xvcjtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZX0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC13aWR0aDoycHg7bWFyZ2luLWxlZnQ6LTFweH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnQucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdC13aWR0aDoycHg7bWFyZ2luLXJpZ2h0Oi0xcHg7cmlnaHQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5saW5rZWQtdGltZS1mb2ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9bGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVGZ0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNjYWxhcl9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJzY2FsYXJfY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpvV31dfSkse2NhcmRJZDpbe3R5cGU6eHl9XSxjaGFydE1ldGFkYXRhTWFwOlt7dHlwZTp4eX1dLERhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6eHl9XSxkYXRhU2VyaWVzOlt7dHlwZTp4eX1dLGlnbm9yZU91dGxpZXJzOlt7dHlwZTp4eX1dLGlzQ2FyZFZpc2libGU6W3t0eXBlOnh5fV0saXNQaW5uZWQ6W3t0eXBlOnh5fV0sbG9hZFN0YXRlOlt7dHlwZTp4eX1dLHNob3dGdWxsU2l6ZTpbe3R5cGU6eHl9XSxzbW9vdGhpbmdFbmFibGVkOlt7dHlwZTp4eX1dLHRhZzpbe3R5cGU6eHl9XSx0aXRsZTpbe3R5cGU6eHl9XSx0b29sdGlwU29ydDpbe3R5cGU6eHl9XSx4QXhpc1R5cGU6W3t0eXBlOnh5fV0seFNjYWxlVHlwZTpbe3R5cGU6eHl9XSx1c2VEYXJrTW9kZTpbe3R5cGU6eHl9XSxzZWxlY3RlZFRpbWU6W3t0eXBlOnh5fV0sb25GdWxsU2l6ZVRvZ2dsZTpbe3R5cGU6T3l9XSxvblBpbkNsaWNrZWQ6W3t0eXBlOk95fV0sbGluZUNoYXJ0Olt7dHlwZTpaYSxhcmdzOltmZnRdfV19KTtjbGFzcyBOZnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlZj10LHRoaXMuY2RrU2Nyb2xsYWJsZT1lLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlPW5ldyBMaCx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBJLHRoaXMub25FdmVudCQ9bmV3IEl9bmdPbkluaXQoKXtjb25zdCB0PW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigodD0+e3RoaXMub25FdmVudCQubmV4dCh0KX0pLHtyb290OnRoaXMuY2RrU2Nyb2xsYWJsZT90aGlzLmNka1Njcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ6bnVsbCxyb290TWFyZ2luOnRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW59KTt0Lm9ic2VydmUodGhpcy5yZWYubmF0aXZlRWxlbWVudCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5zdWJzY3JpYmUoKCgpPT57dC51bm9ic2VydmUodGhpcy5yZWYubmF0aXZlRWxlbWVudCl9KSksdGhpcy5vbkV2ZW50JC5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBlPXQuc2xpY2UoLTEpWzBdO3RoaXMub25WaXNpYmlsaXR5Q2hhbmdlLmVtaXQoe3Zpc2libGU6ZS5pc0ludGVyc2VjdGluZ30pfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpfXdhaXRGb3JFdmVudEZvclRlc3RPbmx5KCl7cmV0dXJuIG5ldyBQcm9taXNlKCh0PT50aGlzLm9uRXZlbnQkLnBpcGUoYmUoMSkpLnN1YnNjcmliZSgoKCk9Pnt0KCl9KSkpKX19ZnVuY3Rpb24gemZ0KHQsZSl7cmV0dXJuIHQubGVuZ3RoPT09ZS5sZW5ndGgmJnQuZXZlcnkoKCh0LG4pPT57Y29uc3Qgbz1lW25dLGk9dC5wb2ludHMsYT1vLnBvaW50cztyZXR1cm4gdC5ydW5JZD09PW8ucnVuSWQmJmkubGVuZ3RoPT09YS5sZW5ndGgmJmkuZXZlcnkoKCh0LGUpPT57Y29uc3Qgbj1hW2VdO3JldHVybiB0Lng9PT1uLngmJnQueT09PW4ueX0pKX0pKX1OZnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fE5mdCkoU20oaGcpLFNtKG1GLDgpKX0sTmZ0Lsm1ZGlyPWxvKHt0eXBlOk5mdCxzZWxlY3RvcnM6W1siIiwib2JzZXJ2ZUludGVyc2VjdGlvbiIsIiJdXSxpbnB1dHM6e2ludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luOiJpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiJ9LG91dHB1dHM6e29uVmlzaWJpbGl0eUNoYW5nZToib25WaXNpYmlsaXR5Q2hhbmdlIn19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE5mdCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJbb2JzZXJ2ZUludGVyc2VjdGlvbl0ifV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOm1GLGRlY29yYXRvcnM6W3t0eXBlOlNyfV19XX0pLHtpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbjpbe3R5cGU6eHl9XSxvblZpc2liaWxpdHlDaGFuZ2U6W3t0eXBlOk95fV19KTtjbGFzcyBJZnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuRGF0YURvd25sb2FkQ29tcG9uZW50PWw1LHRoaXMuZnVsbFdpZHRoQ2hhbmdlZD1uZXcgTGgsdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZD1uZXcgTGgsdGhpcy5waW5TdGF0ZUNoYW5nZWQ9bmV3IExoLHRoaXMuaXNWaXNpYmxlPSExLHRoaXMudXNlRGFya01vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KEpEKSx0aGlzLmlnbm9yZU91dGxpZXJzJD10aGlzLnN0b3JlLnNlbGVjdChBVCksdGhpcy50b29sdGlwU29ydCQ9dGhpcy5zdG9yZS5zZWxlY3QoUlQpLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChUVCksdGhpcy54U2NhbGVUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChUVCkucGlwZShJdCgodD0+e3N3aXRjaCh0KXtjYXNlIHlBLlNURVA6Y2FzZSB5QS5SRUxBVElWRTpyZXR1cm4gSjIuTElORUFSO2Nhc2UgeUEuV0FMTF9USU1FOnJldHVybiBKMi5USU1FO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHhBeGlzVHlwZSBmb3IgbGluZSBjaGFydC4gJHt0fWApfX0pKSksdGhpcy5zY2FsYXJTbW9vdGhpbmckPXRoaXMuc3RvcmUuc2VsZWN0KHpUKSx0aGlzLnNtb290aGluZ0VuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHpUKS5waXBlKEl0KCh0PT50PjApKSksdGhpcy5zaG93RnVsbFNpemU9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBJfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5pc1Zpc2libGU9dH1pc1NjYWxhckNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PWhBLlNDQUxBUlN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoeVQsdGhpcy5jYXJkSWQpLnBpcGUoY2UoKHQ9PiEhdCYmdGhpcy5pc1NjYWxhckNhcmRNZXRhZGF0YSh0KSkpLEl0KCh0PT50KSkpO2Z1bmN0aW9uIGUodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFsic21vb3RoZWQiLHRdKX1jb25zdCBuPXRoaXMuc3RvcmUuc2VsZWN0KGhULHRoaXMuY2FyZElkKS5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSksY2UoKHQ9PkJvb2xlYW4odCkpKSxJdCgodD0+dCkpLEFlKDEpKS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KFRUKSksSXQoKChbdCxlXSk9Pk9iamVjdC5rZXlzKHQpLm1hcCgobj0+KHtydW5JZDpuLHBvaW50czp0aGlzLnN0ZXBTZXJpZXNUb0xpbmVTZXJpZXModFtuXSxlKX0pKSkpKSxNZSh6ZnQpKS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KElUKSksSWUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxJdCgoKFt0LGVdKT0+ZT8oZnVuY3Rpb24gbih0KXt2YXIgZTtjb25zdCBuPVtdO2Zvcihjb25zdCBvIG9mIHQpe2NvbnN0IHQ9W107bGV0IGk9TnVtYmVyLmlzRmluaXRlKG51bGw9PT0oZT1vLnBvaW50c1swXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUueCk/by5wb2ludHNbMF0ueDotMS8wLGE9W107Zm9yKGNvbnN0IGUgb2Ygby5wb2ludHMpTnVtYmVyLmlzRmluaXRlKGUueCk/KGUueDxpJiYodC5wdXNoKHtzZXJpZXNJZDpKU09OLnN0cmluZ2lmeShbby5ydW5JZCx0Lmxlbmd0aF0pLHJ1bklkOm8ucnVuSWQscG9pbnRzOmF9KSxhPVtdKSxhLnB1c2goZSksaT1lLngpOmEucHVzaChlKTt0LnB1c2goe3Nlcmllc0lkOkpTT04uc3RyaW5naWZ5KFtvLnJ1bklkLHQubGVuZ3RoXSkscnVuSWQ6by5ydW5JZCxwb2ludHM6YX0pO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4ucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdFtlXSkse3BhcnRpdGlvbkluZGV4OmUscGFydGl0aW9uU2l6ZTp0Lmxlbmd0aH0pKX1yZXR1cm4gbn0pKHQpOnQubWFwKCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Nlcmllc0lkOnQucnVuSWQscGFydGl0aW9uSW5kZXg6MCxwYXJ0aXRpb25TaXplOjF9KSkpKSksSXQoKHQ9PnQubWFwKCh0PT57dmFyIGU7Y29uc3Qgbj1udWxsPT09KGU9dC5wb2ludHNbMF0pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLndhbGxUaW1lO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BvaW50czp0LnBvaW50cy5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVsYXRpdmVUaW1lSW5Nczp0LndhbGxUaW1lLW59KSkpfSl9KSkpKSxmZSh0aGlzLnN0b3JlLnNlbGVjdChUVCkpLEl0KCgoW3QsZV0pPT50Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2ludHM6dC5wb2ludHMubWFwKCh0PT57bGV0IG47c3dpdGNoKGUpe2Nhc2UgeUEuUkVMQVRJVkU6bj10LnJlbGF0aXZlVGltZUluTXM7YnJlYWs7Y2FzZSB5QS5XQUxMX1RJTUU6bj10LndhbGxUaW1lO2JyZWFrO2Nhc2UgeUEuU1RFUDpkZWZhdWx0Om49dC5zdGVwfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6bn0pfSkpfSkpKSkpLEFlKDEpKTt0aGlzLmRhdGFTZXJpZXMkPW4ucGlwZShmZSh0aGlzLnN0b3JlLnNlbGVjdCh6VCkpLHplKCgoW3Qsbl0pPT57Y29uc3Qgbz10Lm1hcCgoKHtzZXJpZXNJZDp0LHBvaW50czplfSk9Pih7aWQ6dCxwb2ludHM6ZX0pKSk7cmV0dXJuIG48PTA/RXQobyk6Q3QoKGZ1bmN0aW9uIGkodCxlKXt2YXIgbjtyZXR1cm4gZ0EodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtOdW1iZXIuaXNGaW5pdGUoZSl8fChlPTApLGU9TWF0aC5tYXgoMCxNYXRoLm1pbihlLDEpKTtjb25zdCBvPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IHQ9bnVsbD09PShuPWkucG9pbnRzWzBdKXx8dm9pZCAwPT09bj92b2lkIDA6bi55O2lmKGkucG9pbnRzLmV2ZXJ5KChlPT5lLnk9PXQpKSl7by5wdXNoKGkpO2NvbnRpbnVlfWxldCBhPWkucG9pbnRzLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBzPWkucG9pbnRzLm1hcCgodD0+e2NvbnN0IG49dC55O2lmKE51bWJlci5pc0Zpbml0ZShuKSl7YT1hKmUrKDEtZSkqbixyKys7Y29uc3Qgbz0xPT09ZT8xOjEtTWF0aC5wb3coZSxyKTtyZXR1cm57eDp0LngseTphL299fXJldHVybnt4OnQueCx5Om59fSkpO28ucHVzaCh7aWQ6aS5pZCxwb2ludHM6c30pfXJldHVybiBvfSkpfSkobyxuKSkucGlwZShJdCgodD0+e2NvbnN0IG49by5tYXAoKChuLG8pPT4oe2lkOmUobi5pZCkscG9pbnRzOnRbb10ucG9pbnRzLm1hcCgoKHt5OnR9LGUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5wb2ludHNbZV0pLHt5OnR9KSkpfSkpKTtyZXR1cm5bLi4ubywuLi5uXX0pKSl9KSksTmUoW10pKSx0aGlzLnNlbGVjdGVkVGltZSQ9V3QoW24sdGhpcy5zdG9yZS5zZWxlY3QoWVQpLHRoaXMuc3RvcmUuc2VsZWN0KFRUKV0pLnBpcGUoSXQoKChbdCxlLG5dKT0+e2lmKG4hPT15QS5TVEVQfHwhZSlyZXR1cm4gbnVsbDtsZXQgbz0xLzAsaT0tMS8wO2Zvcihjb25zdHtwb2ludHM6ZX1vZiB0KWZvcihjb25zdCB0IG9mIGUpbz1vPnQueD90Lng6byxpPWk8dC54P3QueDppO3JldHVybiBIMihlLG8saSl9KSkpLHRoaXMuY2hhcnRNZXRhZGF0YU1hcCQ9bi5waXBlKHplKCh0PT5XdCh0Lm1hcCgodD0+dGhpcy5nZXRSdW5EaXNwbGF5TmFtZSh0LnJ1bklkKS5waXBlKEl0KChlPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2Rpc3BsYXlOYW1lOmV9KSkpKSkpKSkpLGZlKHRoaXMuc3RvcmUuc2VsZWN0KE5OKSx0aGlzLnN0b3JlLnNlbGVjdCh6TiksdGhpcy5zdG9yZS5zZWxlY3QoelQpKSxnZSgwKSxJdCgoKFt0LG4sbyxpXSk9Pnt2YXIgYTtjb25zdCByPXt9LHM9aT4wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0e3Nlcmllc0lkOnQscnVuSWQ6aSxkaXNwbGF5TmFtZTpzLHBhcnRpdGlvbkluZGV4OmwscGFydGl0aW9uU2l6ZTpjfT1lO3JbdF09e3R5cGU6UTIuT1JJR0lOQUwsaWQ6dCxkaXNwbGF5TmFtZTpjPjE/YCR7c306ICR7bH1gOnMsdmlzaWJsZTpCb29sZWFuKG4mJm4uZ2V0KGkpKSxjb2xvcjpudWxsIT09KGE9b1tpXSkmJnZvaWQgMCE9PWE/YToiI2ZmZiIsYXV4OiExLG9wYWNpdHk6MX19aWYoIXMpcmV0dXJuIHI7Zm9yKGNvbnN0W3Qsbl1vZiBPYmplY3QuZW50cmllcyhyKSl7Y29uc3Qgbz1lKHQpO3Jbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtpZDpvLHR5cGU6UTIuREVSSVZFRCxhdXg6ITEsb3JpZ2luYWxTZXJpZXNJZDp0fSksbi5hdXg9ITAsbi5vcGFjaXR5PS4yNX1yZXR1cm4gcn0pKSxOZSh7fSkpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdChnVCx0aGlzLmNhcmRJZCksdGhpcy50YWckPXQucGlwZShJdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoSXQoKHQ9PmYyKHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHdULHRoaXMuY2FyZElkKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9Z2V0UnVuRGlzcGxheU5hbWUodCl7cmV0dXJuIFd0KFt0aGlzLnN0b3JlLnNlbGVjdChyTix7cnVuSWQ6dH0pLHRoaXMuc3RvcmUuc2VsZWN0KHpTKSx0aGlzLnN0b3JlLnNlbGVjdChzTix7cnVuSWQ6dH0pXSkucGlwZShJdCgoKFtlLG4sb10pPT5JMih0LG8sZT9uW2VdOm51bGwpKSkpfXN0ZXBTZXJpZXNUb0xpbmVTZXJpZXModCxlKXtjb25zdCBuPWU9PT15QS5TVEVQO3JldHVybiB0Lm1hcCgodD0+e2NvbnN0IGU9MWUzKnQud2FsbFRpbWU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDpuP3Quc3RlcDplLHk6dC52YWx1ZSx3YWxsVGltZTplLHJlbGF0aXZlVGltZUluTXM6MH0pfSkpfX1mdW5jdGlvbiBIZnQodCxlLG4pe2NvbnN0IG89W10se2xlZnQ6aSxyaWdodDphfT1lLHI9KGEtaSkvbjtsZXQgcz0wLGw9MDtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCBhPWkrZSpyLGM9YStyLGQ9ZT09PW4tMTtsZXQgcD1sO2ZvcihsPTA7czx0Lmxlbmd0aDspe2NvbnN0IGU9dFtzXSxuPUZmdChlLGEsYywhZCk7aWYocCs9bi5jdXJyLGwrPW4ubmV4dCxlLngrZS5keD5jKWJyZWFrO3MrK31vLnB1c2goe3g6YSxkeDpyLHk6cH0pfXJldHVybiBvfWZ1bmN0aW9uIEZmdCh0LGUsbixvKXtjb25zdCBpPXQueCxhPXQueCt0LmR4O2lmKGk+bnx8YTxlKXJldHVybntjdXJyOjAsbmV4dDowfTtpZigwPT09dC5keClyZXR1cm4gbyYmYT09PW4/e2N1cnI6LjUqdC55LG5leHQ6LjUqdC55fTp7Y3Vycjp0LnksbmV4dDowfTtjb25zdCByPU1hdGgubWluKGEsbiktTWF0aC5tYXgoaSxlKTtyZXR1cm57Y3Vycjp0Lnkqci90LmR4LG5leHQ6MH19SWZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJZnQpKFNtKEl3KSl9LElmdC7JtWNtcD10byh7dHlwZTpJZnQsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkIl1dLGlucHV0czp7RGF0YURvd25sb2FkQ29tcG9uZW50OiJEYXRhRG93bmxvYWRDb21wb25lbnQiLGNhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxNCx2YXJzOjQzLGNvbnN0czpbWyJvYnNlcnZlSW50ZXJzZWN0aW9uIiwiIiwzLCJjYXJkSWQiLCJjaGFydE1ldGFkYXRhTWFwIiwiRGF0YURvd25sb2FkQ29tcG9uZW50IiwiZGF0YVNlcmllcyIsImlnbm9yZU91dGxpZXJzIiwiaXNDYXJkVmlzaWJsZSIsImlzUGlubmVkIiwibG9hZFN0YXRlIiwic2hvd0Z1bGxTaXplIiwic21vb3RoaW5nRW5hYmxlZCIsInRhZyIsInRpdGxlIiwidG9vbHRpcFNvcnQiLCJ4QXhpc1R5cGUiLCJ4U2NhbGVUeXBlIiwidXNlRGFya01vZGUiLCJzZWxlY3RlZFRpbWUiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJzY2FsYXItY2FyZC1jb21wb25lbnQiLDApLFZtKCJvbkZ1bGxTaXplVG9nZ2xlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uRnVsbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5waW5TdGF0ZUNoYW5nZWQuZW1pdChlKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxBaCg4LCJhc3luYyIpLEFoKDksImFzeW5jIiksQWgoMTAsImFzeW5jIiksQWgoMTEsImFzeW5jIiksQWgoMTIsImFzeW5jIiksQWgoMTMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgiY2FyZElkIixuLmNhcmRJZCkoImNoYXJ0TWV0YWRhdGFNYXAiLFRoKDEsMTcsbi5jaGFydE1ldGFkYXRhTWFwJCkpKCJEYXRhRG93bmxvYWRDb21wb25lbnQiLG4uRGF0YURvd25sb2FkQ29tcG9uZW50KSgiZGF0YVNlcmllcyIsVGgoMiwxOSxuLmRhdGFTZXJpZXMkKSkoImlnbm9yZU91dGxpZXJzIixUaCgzLDIxLG4uaWdub3JlT3V0bGllcnMkKSkoImlzQ2FyZFZpc2libGUiLG4uaXNWaXNpYmxlKSgiaXNQaW5uZWQiLFRoKDQsMjMsbi5pc1Bpbm5lZCQpKSgibG9hZFN0YXRlIixUaCg1LDI1LG4ubG9hZFN0YXRlJCkpKCJzaG93RnVsbFNpemUiLG4uc2hvd0Z1bGxTaXplKSgic21vb3RoaW5nRW5hYmxlZCIsVGgoNiwyNyxuLnNtb290aGluZ0VuYWJsZWQkKSkoInRhZyIsVGgoNywyOSxuLnRhZyQpKSgidGl0bGUiLFRoKDgsMzEsbi50aXRsZSQpKSgidG9vbHRpcFNvcnQiLFRoKDksMzMsbi50b29sdGlwU29ydCQpKSgieEF4aXNUeXBlIixUaCgxMCwzNSxuLnhBeGlzVHlwZSQpKSgieFNjYWxlVHlwZSIsVGgoMTEsMzcsbi54U2NhbGVUeXBlJCkpKCJ1c2VEYXJrTW9kZSIsVGgoMTIsMzksbi51c2VEYXJrTW9kZSQpKSgic2VsZWN0ZWRUaW1lIixUaCgxMyw0MSxuLnNlbGVjdGVkVGltZSQpKX0sZGlyZWN0aXZlczpbVGZ0LE5mdF0scGlwZXM6W3dNXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSWZ0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkIix0ZW1wbGF0ZTonXG4gICAgPHNjYWxhci1jYXJkLWNvbXBvbmVudFxuICAgICAgW2NhcmRJZF09ImNhcmRJZCJcbiAgICAgIFtjaGFydE1ldGFkYXRhTWFwXT0iY2hhcnRNZXRhZGF0YU1hcCQgfCBhc3luYyJcbiAgICAgIFtEYXRhRG93bmxvYWRDb21wb25lbnRdPSJEYXRhRG93bmxvYWRDb21wb25lbnQiXG4gICAgICBbZGF0YVNlcmllc109ImRhdGFTZXJpZXMkIHwgYXN5bmMiXG4gICAgICBbaWdub3JlT3V0bGllcnNdPSJpZ25vcmVPdXRsaWVycyQgfCBhc3luYyJcbiAgICAgIFtpc0NhcmRWaXNpYmxlXT0iaXNWaXNpYmxlIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW3Nob3dGdWxsU2l6ZV09InNob3dGdWxsU2l6ZSJcbiAgICAgIFtzbW9vdGhpbmdFbmFibGVkXT0ic21vb3RoaW5nRW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0b29sdGlwU29ydF09InRvb2x0aXBTb3J0JCB8IGFzeW5jIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgIFt4U2NhbGVUeXBlXT0ieFNjYWxlVHlwZSQgfCBhc3luYyJcbiAgICAgIFt1c2VEYXJrTW9kZV09InVzZURhcmtNb2RlJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkVGltZV09InNlbGVjdGVkVGltZSQgfCBhc3luYyJcbiAgICAgIChvbkZ1bGxTaXplVG9nZ2xlKT0ib25GdWxsU2l6ZVRvZ2dsZSgpIlxuICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiXG4gICAgICBvYnNlcnZlSW50ZXJzZWN0aW9uXG4gICAgICAob25WaXNpYmlsaXR5Q2hhbmdlKT0ib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudCkiXG4gICAgPjwvc2NhbGFyLWNhcmQtY29tcG9uZW50PlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSkse0RhdGFEb3dubG9hZENvbXBvbmVudDpbe3R5cGU6eHl9XSxjYXJkSWQ6W3t0eXBlOnh5fV0sZ3JvdXBOYW1lOlt7dHlwZTp4eX1dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOk95fV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOk95fV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpPeX1dfSk7Y29uc3QgTGZ0PVsibWFpbiJdLEJmdD1bInhBeGlzIl0sVmZ0PVsieUF4aXMiXSxqZnQ9WyJjb250ZW50Il0sVWZ0PVsiaGlzdG9ncmFtcyJdO2Z1bmN0aW9uIEdmdCh0LGUpe2lmKDEmdCYmKHFpKCksUm0oMCwiZyIpLFJtKDEsInRleHQiKSxrdSgyKSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO2R1KCJ0cmFuc2Zvcm0iLHQuZ2V0Q3NzVHJhbnNsYXRlUHgodC50b29sdGlwRGF0YS54QXhpcy5wb3NpdGlvbiw5KSkscmMoMiksU3UodC50b29sdGlwRGF0YS54QXhpcy5sYWJlbCl9fWZ1bmN0aW9uIFdmdCh0LGUpe2lmKDEmdCYmKHFpKCksUm0oMCwiZyIpLFJtKDEsInRleHQiKSxrdSgyKSxBbSgpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO2R1KCJ0cmFuc2Zvcm0iLHQuZ2V0R3JvdXBUcmFuc2Zvcm0odC50b29sdGlwRGF0YS5jbG9zZXN0RGF0dW0pKSxyYygxKSxqcCgieSIsdC50b29sdGlwRGF0YS55QXhpcy5wb3NpdGlvbikscmMoMSksRHUoIiAiLHQudG9vbHRpcERhdGEueUF4aXMubGFiZWwsIiAiKX19ZnVuY3Rpb24gWWZ0KHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2IiwxNiksVG0oMSwibGlua2VkLXRpbWUtZm9iIiwxNyksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO2R1KCJ0cmFuc2Zvcm0iLHQuZ2V0Q3NzVHJhbnNsYXRlUHgoMCx0LnNjYWxlcy50ZW1wb3JhbFNjYWxlKHQubGlua2VkVGltZS5lbmRTdGVwKSkpLHJjKDEpLERtKCJzdGVwIix0LmxpbmtlZFRpbWUuZW5kU3RlcCl9fWZ1bmN0aW9uIHFmdCh0LGUpe2lmKDEmdCYmKHFpKCksWmkoKSxObSgwKSxSbSgxLCJkaXYiLDE2KSxUbSgyLCJsaW5rZWQtdGltZS1mb2IiLDE3KSxBbSgpLFFwKDMsWWZ0LDIsMywiZGl2IiwxOCksem0oKSksMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksZHUoInRyYW5zZm9ybSIsdC5nZXRDc3NUcmFuc2xhdGVQeCgwLHQuc2NhbGVzLnRlbXBvcmFsU2NhbGUodC5saW5rZWRUaW1lLnN0YXJ0U3RlcCkpKSxyYygxKSxEbSgic3RlcCIsdC5saW5rZWRUaW1lLnN0YXJ0U3RlcCkscmMoMSksRG0oIm5nSWYiLHQubGlua2VkVGltZS5lbmRTdGVwKX19ZnVuY3Rpb24gWmZ0KHQsZSl7aWYoMSZ0JiYocWkoKSxSbSgwLCJnIiksVG0oMSwibGluZSIsMTkpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtkdSgidHJhbnNmb3JtIixZbSgpLmdldENzc1RyYW5zbGF0ZVB4KDAsdCkpfX1mdW5jdGlvbiBYZnQodCxlKXsxJnQmJihxaSgpLFRtKDAsImxpbmUiLDIyKSl9ZnVuY3Rpb24gS2Z0KHQsZSl7aWYoMSZ0JiYocWkoKSxUbSgwLCJjaXJjbGUiLDIzKSksMiZ0KXtjb25zdCB0PVltKCkuJGltcGxpY2l0LGU9WW0oKTtkdSgidHJhbnNmb3JtIixlLmdldENzc1RyYW5zbGF0ZVB4KGUuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KGUuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKHQsZS50b29sdGlwRGF0YS54UG9zaXRpb25JbkJpbkNvb3JkKSkueCxlLmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudChlLmdldENsb3Nlc3RCaW5Gcm9tQmluQ29vcmRpbmF0ZSh0LGUudG9vbHRpcERhdGEueFBvc2l0aW9uSW5CaW5Db29yZCkpLnkpKX19ZnVuY3Rpb24gSmZ0KHQsZSl7aWYoMSZ0JiYocWkoKSxSbSgwLCJnIiksUXAoMSxYZnQsMSwwLCJsaW5lIiwyMCksVG0oMiwicGF0aCIpLFFwKDMsS2Z0LDEsMiwiY2lyY2xlIiwyMSksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oKTtkdSgidHJhbnNmb3JtIixuLmdldEdyb3VwVHJhbnNmb3JtKHQpKSgiY29sb3IiLG4uZ2V0SGlzdG9ncmFtRmlsbCh0KSkscHUoImhpc3RvZ3JhbSIsITApKCJuby1jb2xvciIsIW4uaXNEYXR1bUluTGlua2VkVGltZVJhbmdlKHQpKSxyYygxKSxEbSgibmdJZiIsbi5tb2RlPT09bi5IaXN0b2dyYW1Nb2RlLk9GRlNFVCkscmMoMSksanAoImQiLG4uZ2V0SGlzdG9ncmFtUGF0aCh0KSkscmMoMSksRG0oIm5nSWYiLG4udG9vbHRpcERhdGEpfX1mdW5jdGlvbiBRZnQodCxlKXtpZigxJnQmJihxaSgpLFRtKDAsImNpcmNsZSIsMjMpKSwyJnQpe2NvbnN0IHQ9WW0oMik7anAoImN4Iix0LmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudCh0LnRvb2x0aXBEYXRhLmNsb3Nlc3RCaW4pLngpKCJjeSIsdC5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodC50b29sdGlwRGF0YS5jbG9zZXN0QmluKS55KX19ZnVuY3Rpb24gJGZ0KHQsZSl7aWYoMSZ0JiYocWkoKSxSbSgwLCJnIiw0KSxSbSgxLCJnIiksVG0oMiwicGF0aCIpLFFwKDMsUWZ0LDEsMiwiY2lyY2xlIiwyNCksQW0oKSxSbSg0LCJnIiwyNSksUm0oNSwidGV4dCIsMjYpLGt1KDYpLEFtKCksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxkdSgidHJhbnNmb3JtIix0LmdldEdyb3VwVHJhbnNmb3JtKHQudG9vbHRpcERhdGEuY2xvc2VzdERhdHVtKSkscmMoMSksanAoImQiLHQuZ2V0SGlzdG9ncmFtUGF0aCh0LnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLHJjKDEpLERtKCJuZ0lmIix0LnRvb2x0aXBEYXRhLmNsb3Nlc3RCaW4pLHJjKDEpLGR1KCJ0cmFuc2Zvcm0iLHQuZ2V0Q3NzVHJhbnNsYXRlUHgodC50b29sdGlwRGF0YS52YWx1ZS5wb3NpdGlvbi54LHQudG9vbHRpcERhdGEudmFsdWUucG9zaXRpb24ueSkpLHJjKDIpLFN1KHQudG9vbHRpcERhdGEudmFsdWUubGFiZWwpfX1jbGFzcyB0Z3R7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2VEZXRlY3Rvcj10LHRoaXMubW9kZT1wRS5PRkZTRVQsdGhpcy50aW1lUHJvcGVydHk9ZEUuU1RFUCx0aGlzLmxpbmtlZFRpbWU9bnVsbCx0aGlzLkhpc3RvZ3JhbU1vZGU9cEUsdGhpcy5UaW1lUHJvcGVydHk9ZEUsdGhpcy50b29sdGlwRGF0YT1udWxsLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSSx0aGlzLmxheW91dD17aGlzdG9ncmFtSGVpZ2h0OjAsY29udGVudENsaWVudFJlY3Q6e2hlaWdodDowLHdpZHRoOjB9fSx0aGlzLnNjYWxlcz1udWxsLHRoaXMuZm9ybWF0dGVycz17YmluTnVtYmVyOkV0dCgiLjN+cyIpLGNvdW50OkV0dCgiLjNuIiksd2FsbFRpbWU6V2V0KCIlbS8lZCAlWCIpLHN0ZXA6RXR0KCIuMGYiKSxyZWxhdGl2ZTp0PT5FdHQoIi4xciIpKHQvMzZlNSkrImgifSx0aGlzLmRvbVZpc2libGU9ITF9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nQWZ0ZXJWaWV3SW5pdCgpe29lKHRoaXMubWFpbi5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiLHtwYXNzaXZlOiEwfSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9PnRoaXMub25Nb3VzZU1vdmUodCkpKX1nZXRDc3NUcmFuc2xhdGVQeCh0LGUpe3JldHVybmB0cmFuc2xhdGUoJHt0fXB4LCAke2V9cHgpYH1nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlKXtpZighdC5iaW5zLmxlbmd0aClyZXR1cm57eDowLGR4OjAseTowfTtjb25zdCBuPXQuYmluc1swXSxvPXQuYmlucy5zbGljZSgtMSlbMF07cmV0dXJuIGU8bi54P246ZT49by54K28uZHg/bzp0LmJpbnMuZmluZCgodD0+dC54PD1lJiZlPHQueCt0LmR4KSl9Z2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KHQpe3JldHVybiB0aGlzLnNjYWxlcz97eDp0aGlzLnNjYWxlcy5iaW5TY2FsZShvZ3QodCkpLHk6dGhpcy5zY2FsZXMuY291bnRTY2FsZSh0LnkpfTp7eDowLHk6MH19Z2V0SGlzdG9ncmFtUGF0aCh0KXtpZighdGhpcy5zY2FsZXN8fCF0LmJpbnMubGVuZ3RoKXJldHVybiIiO2NvbnN0IGU9dGhpcy5zY2FsZXMuYmluU2NhbGUsbj10aGlzLnNjYWxlcy5jb3VudFNjYWxlLG89dC5iaW5zWzBdLGk9dC5iaW5zLnNsaWNlKC0xKVswXSxhPVtgTSR7ZShvZ3QobykpfSwke24oMCl9YF07Zm9yKGNvbnN0IG8gb2YgdC5iaW5zKWEucHVzaChgTCR7ZShvZ3QobykpfSwke24oby55KX1gKTtyZXR1cm4gYS5wdXNoKGBMJHtlKG9ndChpKSl9LCR7bigwKX1gKSxhLmpvaW4oIiIpfXRyYWNrQnlXYWxsVGltZSh0KXtyZXR1cm4gdC53YWxsVGltZX1nZXRHcm91cFRyYW5zZm9ybSh0KXtyZXR1cm4gdGhpcy5zY2FsZXMmJnRoaXMubW9kZSE9PXBFLk9WRVJMQVk/dGhpcy5nZXRDc3NUcmFuc2xhdGVQeCgwLHRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUodGhpcy5nZXRUaW1lVmFsdWUodCkpKToiIn1pc0xpbmtlZFRpbWVFbmFibGVkKHQpe3JldHVybiBCb29sZWFuKHRoaXMubW9kZT09PXBFLk9GRlNFVCYmdGhpcy50aW1lUHJvcGVydHk9PT1kRS5TVEVQJiZ0aGlzLnNjYWxlcyYmdCl9aXNEYXR1bUluTGlua2VkVGltZVJhbmdlKHQpe3JldHVybiF0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQodGhpcy5saW5rZWRUaW1lKXx8KG51bGw9PT10aGlzLmxpbmtlZFRpbWUuZW5kU3RlcD90aGlzLmxpbmtlZFRpbWUuc3RhcnRTdGVwPT09dC5zdGVwOnRoaXMubGlua2VkVGltZS5zdGFydFN0ZXA8PXQuc3RlcCYmdGhpcy5saW5rZWRUaW1lLmVuZFN0ZXA+PXQuc3RlcCl9Z2V0SGlzdG9ncmFtRmlsbCh0KXtyZXR1cm4gdGhpcy5zY2FsZXM/dGhpcy5zY2FsZXMuZDNDb2xvclNjYWxlKHRoaXMuZ2V0VGltZVZhbHVlKHQpKToiIn1nZXRHcmlkVGlja1lMb2NzKCl7aWYoIXRoaXMuc2NhbGVzfHx0aGlzLm1vZGU9PT1wRS5PRkZTRVQpcmV0dXJuW107Y29uc3QgdD10aGlzLnNjYWxlcy5jb3VudFNjYWxlO3JldHVybiB0LnRpY2tzKCkubWFwKChlPT50KGUpKSl9b25SZXNpemUoKXt0aGlzLnVwZGF0ZUNsaWVudFJlY3RzKCksdGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5kb21WaXNpYmxlPXQsdCYmKHRoaXMudXBkYXRlQ2xpZW50UmVjdHMoKSx0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCkpfWdldFRpbWVWYWx1ZSh0KXtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgZEUuV0FMTF9USU1FOnJldHVybiB0LndhbGxUaW1lO2Nhc2UgZEUuU1RFUDpyZXR1cm4gdC5zdGVwO2Nhc2UgZEUuUkVMQVRJVkU6cmV0dXJuIHQud2FsbFRpbWUtdGhpcy5kYXRhWzBdLndhbGxUaW1lfX11cGRhdGVDbGllbnRSZWN0cygpe3RoaXMuY29udGVudCYmKHRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0PXRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodD10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdC5oZWlnaHQvMi41KX11cGRhdGVDaGFydElmVmlzaWJsZSgpe3RoaXMuZG9tVmlzaWJsZSYmKHRoaXMuc2NhbGVzPXRoaXMuY29tcHV0ZVNjYWxlcyh0aGlzLmRhdGEpLHRoaXMucmVuZGVyWEF4aXMoKSx0aGlzLnJlbmRlcllBeGlzKCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfWNvbXB1dGVTY2FsZXModCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6bn09dGhpcy5sYXlvdXQuY29udGVudENsaWVudFJlY3Qse21pbjpvLG1heDppfT1uZ3QodCwodD0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdC5yZWR1Y2UoKCh0LGUpPT5NYXRoLm1pbih0LG4oZSkpKSwxLzApfSkodC5iaW5zLCh0PT50LngpKSksKHQ9PmVndCh0LmJpbnMsKCh7eDp0LGR4OmV9KT0+dCtlKSkpKSxhPWVndCh0LCh0PT5lZ3QodC5iaW5zLCgoe3k6dH0pPT50KSkpKSxyPWVldCgpLmRvbWFpbihbbyxpXSkubmljZSgpLHM9dGhpcy5tb2RlIT09cEUuT1ZFUkxBWSYmdGhpcy50aW1lUHJvcGVydHk9PWRFLldBTExfVElNRT9mb3QoKTplZXQoKSxsPXQubWFwKCh0PT50aGlzLmdldFRpbWVWYWx1ZSh0KSkpLHttaW46YyxtYXg6ZH09bmd0KGwsKHQ9PnQpKSxwPVtjLGRdO3MuZG9tYWluKHApO2NvbnN0IG09ZWV0KCk7bS5kb21haW4oWzAsYV0pO2NvbnN0IHU9UzcodGhpcy5jb2xvcnx8IiMwMDAiKSxmPWVldCgpO3JldHVybiBmLmRvbWFpbihwKSxyLnJhbmdlKFswLGVdKSxmLnJhbmdlKFt1LmJyaWdodGVyKCksdS5kYXJrZXIoKV0pLGYuaW50ZXJwb2xhdGUobTgpLHRoaXMubW9kZT09PXBFLk9WRVJMQVk/KHMucmFuZ2UoW24sbl0pLG0ucmFuZ2UoW24sMF0pKToocy5yYW5nZShbbi0odGhpcy5tb2RlPT09cEUuT0ZGU0VUP24tdGhpcy5sYXlvdXQuaGlzdG9ncmFtSGVpZ2h0OjApLG5dKSxtLnJhbmdlKFswLC10aGlzLmxheW91dC5oaXN0b2dyYW1IZWlnaHRdKSkse2JpblNjYWxlOnIsZDNDb2xvclNjYWxlOmYsY291bnRTY2FsZTptLHRlbXBvcmFsU2NhbGU6c319cmVuZGVyWEF4aXMoKXtpZighdGhpcy5zY2FsZXMpcmV0dXJuO2NvbnN0e3dpZHRoOnR9PXRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0LGU9ejUodGhpcy5zY2FsZXMuYmluU2NhbGUpLnRpY2tzKE1hdGgubWF4KDIsdC8yMCkpO2UudGlja0Zvcm1hdCh0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKSxlKEo0KHRoaXMueEF4aXMubmF0aXZlRWxlbWVudCkpfWdldFlBeGlzRm9ybWF0dGVyKCl7aWYodGhpcy5tb2RlPT09cEUuT1ZFUkxBWSlyZXR1cm4gdGhpcy5mb3JtYXR0ZXJzLmNvdW50O3N3aXRjaCh0aGlzLnRpbWVQcm9wZXJ0eSl7Y2FzZSBkRS5XQUxMX1RJTUU6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy53YWxsVGltZTtjYXNlIGRFLlNURVA6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy5zdGVwO2Nhc2UgZEUuUkVMQVRJVkU6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy5yZWxhdGl2ZTtkZWZhdWx0OnRocm93IFJhbmdlRXJyb3IoYFkgYXhpcyBmb3JtYXR0ZXIgZm9yICR7dGhpcy50aW1lUHJvcGVydHl9IG11c3QgYmUgaW1wbGVtZW50ZWRgKX19cmVuZGVyWUF4aXMoKXtpZighdGhpcy5zY2FsZXMpcmV0dXJuO2NvbnN0IHQ9dGhpcy5tb2RlPT09cEUuT1ZFUkxBWT90aGlzLnNjYWxlcy5jb3VudFNjYWxlOnRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUse2hlaWdodDplfT10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdCxuPU41KHQpLnRpY2tzKE1hdGgubWF4KDIsZS8xNSkpO24udGlja0Zvcm1hdCh0aGlzLmdldFlBeGlzRm9ybWF0dGVyKCkpLG4oSjQodGhpcy55QXhpcy5uYXRpdmVFbGVtZW50KSl9ZmluZENsb3Nlc3REYXR1bUluZGV4KHQpe2xldCBlPXQudGFyZ2V0LG49ZTtmb3IoO2UmJmUhPT10aGlzLmhpc3RvZ3JhbXMubmF0aXZlRWxlbWVudDspbj1lLGU9ZS5wYXJlbnRFbGVtZW50O3JldHVybiBlP0FycmF5LmZyb20oZS5jaGlsZHJlbikuaW5kZXhPZihuKTotMX1vbk1vdXNlTW92ZUZvclRlc3RPbmx5KHQpe3JldHVybiB0aGlzLm9uTW91c2VNb3ZlKHQpfW9uTW91c2VNb3ZlKHQpe2lmKCF0aGlzLnNjYWxlcylyZXR1cm47Y29uc3QgZT10Lm9mZnNldFgsbj10Lm9mZnNldFksbz10aGlzLmZpbmRDbG9zZXN0RGF0dW1JbmRleCh0KTtpZihvPDApcmV0dXJuO2NvbnN0IGk9dGhpcy5zY2FsZXMuYmluU2NhbGUuaW52ZXJ0KGUpLGE9dGhpcy5kYXRhW29dLHI9dGhpcy5nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUoYSxpKTt0aGlzLnRvb2x0aXBEYXRhPXt2YWx1ZTp7cG9zaXRpb246e3g6ZSx5Om59LGxhYmVsOnRoaXMubW9kZT09PXBFLk9GRlNFVD90aGlzLmZvcm1hdHRlcnMuY291bnQoci55KTpgU3RlcDogJHt0aGlzLmZvcm1hdHRlcnMuc3RlcChhLnN0ZXApfWB9LHhBeGlzOntwb3NpdGlvbjp0aGlzLmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudChyKS54LGxhYmVsOnRoaXMuZm9ybWF0dGVycy5iaW5OdW1iZXIob2d0KHIpKX0seUF4aXM6e3Bvc2l0aW9uOnRoaXMuc2NhbGVzLmNvdW50U2NhbGUodGhpcy5tb2RlPT09cEUuT0ZGU0VUPzA6ci55KSxsYWJlbDp0aGlzLm1vZGU9PT1wRS5PRkZTRVQ/dGhpcy5nZXRZQXhpc0Zvcm1hdHRlcigpKHRoaXMuZ2V0VGltZVZhbHVlKGEpKTp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKHIueSl9LHhQb3NpdGlvbkluQmluQ29vcmQ6aSxjbG9zZXN0RGF0dW06YSxjbG9zZXN0QmluOnJ9LHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpfX1mdW5jdGlvbiBlZ3QodCxlKXtyZXR1cm4gdC5yZWR1Y2UoKCh0LG4pPT5NYXRoLm1heCh0LGUobikpKSwtMS8wKX1mdW5jdGlvbiBuZ3QodCxlLG4pe258fChuPWUpO2xldCBvPTEvMCxpPS0xLzA7Zm9yKGNvbnN0IGEgb2YgdClvPU1hdGgubWluKG8sZShhKSksaT1NYXRoLm1heChpLG4oYSkpO3JldHVybnttaW46byxtYXg6aX19ZnVuY3Rpb24gb2d0KHQpe3JldHVybiB0LngrLjUqdC5keH1mdW5jdGlvbiBpZ3QodCxlKXsxJnQmJlRtKDAsInZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWQiKX1mdW5jdGlvbiBhZ3QodCxlKXsxJnQmJihSbSgwLCJzcGFuIiwxNCksVG0oMSwibWF0LXNwaW5uZXIiLDE1KSxBbSgpKX10Z3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHRndCkoU20oVWcpKX0sdGd0Lsm1Y21wPXRvKHt0eXBlOnRndCxzZWxlY3RvcnM6W1sidGItaGlzdG9ncmFtIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUWgoTGZ0LDUpLFFoKEJmdCw1KSxRaChWZnQsNSksUWgoamZ0LDUpLFFoKFVmdCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5tYWluPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLnhBeGlzPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLnlBeGlzPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLmNvbnRlbnQ9dC5maXJzdCksSmgodD10YigpKSYmKG4uaGlzdG9ncmFtcz10LmZpcnN0KX19LGlucHV0czp7bW9kZToibW9kZSIsdGltZVByb3BlcnR5OiJ0aW1lUHJvcGVydHkiLGNvbG9yOiJjb2xvciIsZGF0YToiZGF0YSIsbGlua2VkVGltZToibGlua2VkVGltZSJ9LGZlYXR1cmVzOltCb10sZGVjbHM6MjIsdmFyczoxNyxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwib2JzZXJ2ZUludGVyc2VjdGlvbiIsIiIsMywib25SZXNpemUiLCJvblZpc2liaWxpdHlDaGFuZ2UiXSxbIm1haW4iLCIiXSxbMSwiYXhpcyIsIngtYXhpcyJdLFsieEF4aXMiLCIiXSxbMSwidG9vbHRpcCJdLFszLCJ0cmFuc2Zvcm0iLDQsIm5nSWYiXSxbMSwiYXhpcyIsInktYXhpcyJdLFsieUF4aXMiLCIiXSxbNCwibmdJZiJdLFsxLCJjb250ZW50Il0sWyJjb250ZW50IiwiIl0sWzEsImdyaWQiXSxbMywidHJhbnNmb3JtIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImhpc3RvZ3JhbXMiLCIiXSxbMywidHJhbnNmb3JtIiwiaGlzdG9ncmFtIiwibm8tY29sb3IiLCJjb2xvciIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsInRvb2x0aXAiLDQsIm5nSWYiXSxbMSwibGlua2VkLXRpbWUiXSxbMSwibGlua2VkLXRpbWUtZm9iIiwzLCJzdGVwIl0sWyJjbGFzcyIsImxpbmtlZC10aW1lIiwzLCJ0cmFuc2Zvcm0iLDQsIm5nSWYiXSxbIngyIiwiMTAwJSIsMSwidGljayJdLFsiY2xhc3MiLCJiYXNlbGluZSIsIngyIiwiMTAwJSIsNCwibmdJZiJdLFsiciIsIjIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdLFsieDIiLCIxMDAlIiwxLCJiYXNlbGluZSJdLFsiciIsIjIiXSxbInIiLCIyIiw0LCJuZ0lmIl0sWzEsInZhbHVlLWxhYmVsIl0sWyJ4IiwiMyIsInkiLCItMyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwLDEpLFZtKCJvblJlc2l6ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZSgpfSkpKCJvblZpc2liaWxpdHlDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVmlzaWJpbGl0eUNoYW5nZShlKX0pKSxxaSgpLFJtKDIsInN2ZyIsMiksVG0oMywiZyIsbnVsbCwzKSxSbSg1LCJnIiw0KSxRcCg2LEdmdCwzLDMsImciLDUpLEFtKCksQW0oKSxaaSgpLFJtKDcsImRpdiIsNikscWkoKSxSbSg4LCJzdmciKSxUbSg5LCJnIixudWxsLDcpLFJtKDExLCJnIiw0KSxRcCgxMixXZnQsMyw0LCJnIiw1KSxBbSgpLEFtKCksUXAoMTMscWZ0LDQsNCwibmctY29udGFpbmVyIiw4KSxBbSgpLFJtKDE0LCJzdmciLDksMTApLFJtKDE2LCJnIiwxMSksUXAoMTcsWmZ0LDIsMiwiZyIsMTIpLEFtKCksUm0oMTgsImciLG51bGwsMTMpLFFwKDIwLEpmdCw0LDExLCJnIiwxNCksQW0oKSxRcCgyMSwkZnQsNyw3LCJnIiwxNSksQW0oKSxBbSgpKSwyJmUmJihmdSgibWFpbiAiK24ubW9kZSsiICIrbi50aW1lUHJvcGVydHkpLHJjKDYpLERtKCJuZ0lmIixuLnRvb2x0aXBEYXRhKSxyYyg1KSxkdSgidHJhbnNmb3JtIixuLmdldENzc1RyYW5zbGF0ZVB4KDksMCkpLHJjKDEpLERtKCJuZ0lmIixuLnRvb2x0aXBEYXRhKSxyYygxKSxEbSgibmdJZiIsbi5pc0xpbmtlZFRpbWVFbmFibGVkKG4ubGlua2VkVGltZSkpLHJjKDQpLERtKCJuZ0Zvck9mIixuLmdldEdyaWRUaWNrWUxvY3MoKSkscmMoMSkscHUoImhpc3RvZ3JhbXMiLCEwKSgibGlua2VkLXRpbWUtZW5hYmxlZCIsbi5saW5rZWRUaW1lKSgibGlua2VkLXRpbWUtc2luZ2xlLXN0ZXAiLG4ubGlua2VkVGltZSYmIW4ubGlua2VkVGltZS5lbmRTdGVwKSxyYygyKSxEbSgibmdGb3JPZiIsbi5kYXRhKSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlXYWxsVGltZSkscmMoMSksRG0oIm5nSWYiLG4udG9vbHRpcERhdGEpKX0sZGlyZWN0aXZlczpbb0osTmZ0LGRNLGxNLGhmdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSwgLm1haW5bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9W19uZ2hvc3QtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxMHB4fS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczoiY29udGVudCB5LWF4aXMiICJ4LWF4aXMgLiI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciA1MHB4O2dyaWQtdGVtcGxhdGUtcm93czoxZnIgMzBweH0ubWFpbi53YWxsX3RpbWVbX25nY29udGVudC0lQ09NUCVde2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgNzVweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0sIC5iYXNlbGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzAwMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5iYXNlbGluZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5iYXNlbGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpib2xkO2ZvbnQtc2l6ZToxMHB4fS5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV0sIC5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17ZmlsbDpjdXJyZW50Q29sb3J9LmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudmFsdWUtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOmlkZW9ncmFwaGljO3RleHQtYW5jaG9yOnN0YXJ0fS5saW5rZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7bGVmdDo5cHg7dG9wOjA7aGVpZ2h0OjEwMCU7cmlnaHQ6MH0ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgLmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgIHtjb2xvcjojNjE2MTYxO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAge2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLmRvbWFpbiwgLmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAudGljayB0ZXh0e2Rpc3BsYXk6bm9uZX0uYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrOm50aC1jaGlsZCgybisxKSB0ZXh0e2Rpc3BsYXk6aW5pdGlhbH1zdmdbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7cG9pbnRlci1ldmVudHM6dmlzaWJsZVBhaW50ZWR9c3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdLCBzdmdbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lfXN2Z1tfbmdjb250ZW50LSVDT01QJV0gICBnW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWxsLWNoYW5nZTp0cmFuc2Zvcm19LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOngtYXhpc30ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTpoYW5naW5nO3RleHQtYW5jaG9yOm1pZGRsZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6eS1heGlzOy13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOm1pZGRsZTt0ZXh0LWFuY2hvcjpzdGFydH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV0sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZXtzdHJva2U6I2RkZH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6IzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmUsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZXtzdHJva2U6IzU1NX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOmNvbnRlbnR9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWRhc2hhcnJheToyfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yO3N0cm9rZS1vcGFjaXR5Oi42O3N0cm9rZS13aWR0aDoxcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWx0ZXI6ZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuNikpO3N0cm9rZTojZmZmO3dpbGwtY2hhbmdlOnRyYW5zZm9ybX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5Oi4xO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlOmN1cnJlbnRDb2xvcjt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5OjE7c3Ryb2tlOmN1cnJlbnRDb2xvcjtmaWxsOnRyYW5zcGFyZW50fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyMjEsMjIxLDIyMSwuNCkgIWltcG9ydGFudH0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlLW9wYWNpdHk6LjJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDUxLDUxLDUxLC40KSAhaW1wb3J0YW50fS5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZmZ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtc1tfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtc1tfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6IzU1NX0ub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zLmxpbmtlZC10aW1lLXNpbmdsZS1zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtfbmdjb250ZW50LSVDT01QJV06bm90KC5uby1jb2xvcikgICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6IzAwMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zLmxpbmtlZC10aW1lLXNpbmdsZS1zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtfbmdjb250ZW50LSVDT01QJV06bm90KC5uby1jb2xvcikgICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtcy5saW5rZWQtdGltZS1zaW5nbGUtc3RlcFtfbmdjb250ZW50LSVDT01QJV0gICBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubm8tY29sb3IpICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZmZ9Lm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdICAgLngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmV7ZGlzcGxheTpub25lfS5vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde2ZpbGwtb3BhY2l0eTowO3N0cm9rZTpjdXJyZW50Q29sb3J9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWFpbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWFpbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodGd0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRiLWhpc3RvZ3JhbSIsdGVtcGxhdGVVcmw6Imhpc3RvZ3JhbV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiaGlzdG9ncmFtX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWd9XX0pLHttYWluOlt7dHlwZTpaYSxhcmdzOlsibWFpbiJdfV0seEF4aXM6W3t0eXBlOlphLGFyZ3M6WyJ4QXhpcyJdfV0seUF4aXM6W3t0eXBlOlphLGFyZ3M6WyJ5QXhpcyJdfV0sY29udGVudDpbe3R5cGU6WmEsYXJnczpbImNvbnRlbnQiXX1dLGhpc3RvZ3JhbXM6W3t0eXBlOlphLGFyZ3M6WyJoaXN0b2dyYW1zIl19XSxtb2RlOlt7dHlwZTp4eX1dLHRpbWVQcm9wZXJ0eTpbe3R5cGU6eHl9XSxjb2xvcjpbe3R5cGU6eHl9XSxkYXRhOlt7dHlwZTp4eX1dLGxpbmtlZFRpbWU6W3t0eXBlOnh5fV19KTtjb25zdCByZ3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm57c3RhcnRTdGVwOnQsZW5kU3RlcDplfX07ZnVuY3Rpb24gc2d0KHQsZSl7aWYoMSZ0JiZUbSgwLCJ0Yi1oaXN0b2dyYW0iLDE2KSwyJnQpe2NvbnN0IHQ9WW0oKTtEbSgiZGF0YSIsdC5kYXRhKSgibW9kZSIsdC5tb2RlKSgidGltZVByb3BlcnR5Iix0LnRpbWVQcm9wZXJ0eSh0LnhBeGlzVHlwZSkpKCJjb2xvciIsdC5ydW5Db2xvclNjYWxlKHQucnVuSWQpKSgibGlua2VkVGltZSIsdC5zZWxlY3RlZFRpbWU/dmgoNSxyZ3QsdC5zZWxlY3RlZFRpbWUuc3RhcnRTdGVwLHQuc2VsZWN0ZWRUaW1lLmVuZFN0ZXApOm51bGwpfX1mdW5jdGlvbiBsZ3QodCxlKXsxJnQmJihSbSgwLCJkaXYiLDE4KSxrdSgxLCIgRGF0YSBmYWlsZWQgdG8gbG9hZC4gIiksQW0oKSl9ZnVuY3Rpb24gY2d0KHQsZSl7aWYoMSZ0JiZRcCgwLGxndCwyLDAsImRpdiIsMTcpLDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJuZ0lmIix0LmxvYWRTdGF0ZT09PXQuRGF0YUxvYWRTdGF0ZS5GQUlMRUQpfX1jb25zdCBkZ3Q9ZnVuY3Rpb24odCl7cmV0dXJue2JhY2tncm91bmRDb2xvcjp0fX07Y2xhc3MgcGd0e2NvbnN0cnVjdG9yKCl7dGhpcy5EYXRhTG9hZFN0YXRlPXlFLHRoaXMub25GdWxsU2l6ZVRvZ2dsZT1uZXcgTGgsdGhpcy5vblBpbkNsaWNrZWQ9bmV3IExofXRpbWVQcm9wZXJ0eSh0KXtzd2l0Y2godCl7Y2FzZSB5QS5TVEVQOnJldHVybiBkRS5TVEVQO2Nhc2UgeUEuV0FMTF9USU1FOnJldHVybiBkRS5XQUxMX1RJTUU7Y2FzZSB5QS5SRUxBVElWRTpyZXR1cm4gZEUuUkVMQVRJVkU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgeEF4aXNUeXBlIGZvciBoaXN0b2dyYW0gdGltZSBwcm9wZXJ0eS4iKX19fXBndC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cGd0KX0scGd0Lsm1Y21wPXRvKHt0eXBlOnBndCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50Il1dLGlucHV0czp7bG9hZFN0YXRlOiJsb2FkU3RhdGUiLHRpdGxlOiJ0aXRsZSIsdGFnOiJ0YWciLHJ1bklkOiJydW5JZCIsZGF0YToiZGF0YSIsbW9kZToibW9kZSIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUiLHNob3dGdWxsU2l6ZToic2hvd0Z1bGxTaXplIixpc1Bpbm5lZDoiaXNQaW5uZWQiLHNlbGVjdGVkVGltZToic2VsZWN0ZWRUaW1lIn0sb3V0cHV0czp7b25GdWxsU2l6ZVRvZ2dsZToib25GdWxsU2l6ZVRvZ2dsZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQifSxkZWNsczoxNix2YXJzOjEzLGNvbnN0czpmdW5jdGlvbigpe2xldCB0LGU7cmV0dXJuIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIlBpbiBjYXJkIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYCxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKTokbG9jYWxpemVgOkEgYnV0dG9uIG9uIGEgaGlzdG9ncmFtIGNhcmQgdGhhdCB0b2dnbGVzIGZ1bGwgc2l6ZSBtb2RlLuKQn2ZjOGY3NjdkMGI5ZjkzMDE4N2ExYmFlMzQ0NzdhZDI4NzM2ZWNlMzPikJ85MTU3MjE1NjM2Mzg5MjY1OTc6VG9nZ2xlIGZ1bGwgc2l6ZSBtb2RlYCxbWzEsImhlYWRpbmciXSxbMSwidGFnIl0sWzMsInRpdGxlIiwidmFsdWUiXSxbNCwibmdJZiJdLFsxLCJydW4iXSxbMSwiZG90IiwzLCJuZ1N0eWxlIl0sWzEsInJ1bi10ZXh0IiwzLCJydW5JZCJdLFsxLCJjb250cm9scyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siXSxbImNsYXNzIiwic3Bpbm5lciIsNCwibmdJZiJdLFszLCJkYXRhIiwibW9kZSIsInRpbWVQcm9wZXJ0eSIsImNvbG9yIiwibGlua2VkVGltZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0RhdGEiLCIiXSxbMSwic3Bpbm5lciJdLFsiZGlhbWV0ZXIiLCIxOCJdLFszLCJkYXRhIiwibW9kZSIsInRpbWVQcm9wZXJ0eSIsImNvbG9yIiwibGlua2VkVGltZSJdLFsiY2xhc3MiLCJlbXB0eS1tZXNzYWdlIiw0LCJuZ0lmIl0sWzEsImVtcHR5LW1lc3NhZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsImRpdiIsMSksVG0oMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLFFwKDMsaWd0LDEsMCwidmlzLXNlbGVjdGVkLXRpbWUtY2xpcHBlZCIsMyksQW0oKSxSbSg0LCJkaXYiLDQpLFRtKDUsInNwYW4iLDUpLFRtKDYsImNhcmQtcnVuLW5hbWUiLDYpLEFtKCksUm0oNywic3BhbiIsNyksUm0oOCwiYnV0dG9uIiw4KSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5DbGlja2VkLmVtaXQoIW4uaXNQaW5uZWQpfSkpLFRtKDksIm1hdC1pY29uIiw5KSxBbSgpLFJtKDEwLCJidXR0b24iLDEwKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25GdWxsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksVG0oMTEsIm1hdC1pY29uIiw5KSxBbSgpLEFtKCksUXAoMTIsYWd0LDIsMCwic3BhbiIsMTEpLEFtKCksUXAoMTMsc2d0LDEsOCwidGItaGlzdG9ncmFtIiwxMiksUXAoMTQsY2d0LDEsMSwibmctdGVtcGxhdGUiLG51bGwsMTMsaWIpKSwyJmUpe2NvbnN0IHQ9JHAoMTUpO3JjKDIpLERtKCJ0aXRsZSIsbi50YWcpKCJ2YWx1ZSIsbi50aXRsZSkscmMoMSksRG0oIm5nSWYiLG4uc2VsZWN0ZWRUaW1lJiZuLnNlbGVjdGVkVGltZS5jbGlwcGVkKSxyYygyKSxEbSgibmdTdHlsZSIsTWgoMTEsZGd0LG4ucnVuQ29sb3JTY2FsZShuLnJ1bklkKSkpLHJjKDEpLERtKCJydW5JZCIsbi5ydW5JZCkscmMoMiksanAoInRpdGxlIixuLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSxyYygxKSxEbSgic3ZnSWNvbiIsbi5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSxyYygyKSxEbSgic3ZnSWNvbiIsbi5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4IikscmMoMSksRG0oIm5nSWYiLG4ubG9hZFN0YXRlPT09bi5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLHJjKDEpLERtKCJuZ0lmIixuLmRhdGEmJm4uZGF0YS5sZW5ndGgpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOlt6MixkTSxDTSxMMixYSCxEVyxnZnQsbzEsdGd0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG87cGFkZGluZzoxNnB4O3BhZGRpbmctdG9wOjRweH0uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWFyZWFzOiJ0YWcgY29udHJvbHMiICJydW4gc3Bpbm5lciI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NHB4fS50YWdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOjVweDtncmlkLWFyZWE6dGFnO292ZXJmbG93OmhpZGRlbn0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjB9LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpydW47ZGlzcGxheTpmbGV4O3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kb3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo0cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAucnVuLXRleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO21heC13aWR0aDoxMjBweH0uY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7d2hpdGUtc3BhY2U6bm93cmFwO2dyaWQtYXJlYTpjb250cm9scztqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2dyaWQtYXJlYTpzcGlubmVyO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9bWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3RvcDowO3JpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGV9dGItaGlzdG9ncmFtW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW59LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MWVtO2ZvbnQtc2l6ZToxM3B4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwZ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiaGlzdG9ncmFtX2NhcmRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImhpc3RvZ3JhbV9jYXJkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtsb2FkU3RhdGU6W3t0eXBlOnh5fV0sdGl0bGU6W3t0eXBlOnh5fV0sdGFnOlt7dHlwZTp4eX1dLHJ1bklkOlt7dHlwZTp4eX1dLGRhdGE6W3t0eXBlOnh5fV0sbW9kZTpbe3R5cGU6eHl9XSx4QXhpc1R5cGU6W3t0eXBlOnh5fV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6eHl9XSxzaG93RnVsbFNpemU6W3t0eXBlOnh5fV0saXNQaW5uZWQ6W3t0eXBlOnh5fV0sc2VsZWN0ZWRUaW1lOlt7dHlwZTp4eX1dLG9uRnVsbFNpemVUb2dnbGU6W3t0eXBlOk95fV0sb25QaW5DbGlja2VkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgbWd0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IExoLHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3IExoLHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBMaCx0aGlzLm1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KE5UKSx0aGlzLnhBeGlzVHlwZSQ9dGhpcy5zdG9yZS5zZWxlY3QoVFQpLHRoaXMuc2hvd0Z1bGxTaXplPSExfWlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjplfT10O3JldHVybiBlPT09aEEuSElTVE9HUkFNU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdCh5VCx0aGlzLmNhcmRJZCkucGlwZShjZSgodD0+ISF0JiZ0aGlzLmlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpKSksSXQoKHQ9PnQpKSksZT1XdChbdCx0aGlzLnN0b3JlLnNlbGVjdChoVCx0aGlzLmNhcmRJZCldKTt0aGlzLmRhdGEkPWUucGlwZShJdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5ydW5JZDtyZXR1cm4gZSYmZS5oYXNPd25Qcm9wZXJ0eShuKT8oZnVuY3Rpb24gbyh0LGU9MzApe2lmKCF0Lmxlbmd0aHx8ZTwxKXJldHVybltdO2NvbnN0IG49KGZ1bmN0aW9uIG8odCl7bGV0IGU9bnVsbCxuPW51bGw7Zm9yKGNvbnN0e2JpbnM6b31vZiB0KXtpZighby5sZW5ndGgpY29udGludWU7Y29uc3QgdD1vW28ubGVuZ3RoLTFdLGk9b1swXS54LGE9dC54K3QuZHg7KG51bGw9PT1lfHxpPGUpJiYoZT1pKSwobnVsbD09PW58fGE+bikmJihuPWEpfXJldHVybiBudWxsPT09ZXx8bnVsbD09PW4/bnVsbDp7bGVmdDplLHJpZ2h0Om59fSkodCk7cmV0dXJuIG4mJm4ubGVmdD09PW4ucmlnaHQmJihuLnJpZ2h0PTEuMSpuLnJpZ2h0KzEsbi5sZWZ0PW4ubGVmdC8xLjEtMSksdC5tYXAoKHQ9Pih7c3RlcDp0LnN0ZXAsd2FsbFRpbWU6dC53YWxsVGltZSxiaW5zOm4/SGZ0KHQuYmlucyxuLGUpOltdfSkpKX0pKGVbbl0ubWFwKCh0PT57Y29uc3R7d2FsbFRpbWU6ZSxzdGVwOm59PXQ7cmV0dXJue3dhbGxUaW1lOmUsc3RlcDpuLGJpbnM6dC5iaW5zLm1hcCgodD0+KHt4OnQubWluLGR4OnQubWF4LXQubWluLHk6dC5jb3VudH0pKSl9fSkpKTpbXX0pKSksdGhpcy5zZWxlY3RlZFRpbWUkPXRoaXMuc3RvcmUuc2VsZWN0KFlUKS5waXBlKGZlKHRoaXMuZGF0YSQpLEl0KCgoW3QsZV0pPT57aWYoIXQpcmV0dXJuIG51bGw7bGV0IG49MS8wLG89LTEvMDtmb3IoY29uc3QgdCBvZiBlKW49TWF0aC5taW4odC5zdGVwLG4pLG89TWF0aC5tYXgodC5zdGVwLG8pO3JldHVybiBIMih0LG4sbyl9KSkpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdChnVCx0aGlzLmNhcmRJZCksdGhpcy50YWckPXQucGlwZShJdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoSXQoKHQ9PmYyKHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMucnVuSWQkPXQucGlwZShJdCgodD0+dC5ydW5JZCkpKSx0aGlzLmlzUGlubmVkJD10aGlzLnN0b3JlLnNlbGVjdCh3VCx0aGlzLmNhcmRJZCl9fWZ1bmN0aW9uIHVndCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImltYWdlLWNhcmQiLDYpLFZtKCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25GdWxsV2lkdGhDaGFuZ2VkKG4pfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKDIpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oMik7RG0oImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKSgicnVuQ29sb3JTY2FsZSIsdC5ydW5Db2xvclNjYWxlKX19ZnVuY3Rpb24gZmd0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwic2NhbGFyLWNhcmQiLDcpLFZtKCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25GdWxsV2lkdGhDaGFuZ2VkKG4pfSkpKCJmdWxsSGVpZ2h0Q2hhbmdlZCIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uRnVsbEhlaWdodENoYW5nZWQobil9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oMikub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgiY2FyZElkIix0LmNhcmRJZCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpfX1mdW5jdGlvbiBnZ3QodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJoaXN0b2dyYW0tY2FyZCIsOCksVm0oImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgyKS5vbkZ1bGxXaWR0aENoYW5nZWQobil9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25GdWxsSGVpZ2h0Q2hhbmdlZChuKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgyKS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSkoInJ1bkNvbG9yU2NhbGUiLHQucnVuQ29sb3JTY2FsZSl9fWZ1bmN0aW9uIGhndCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgyKTtyYygxKSxEdSgiUGxhY2Vob2xkZXIgZXJyb3IgZm9yOiAiLHQuY2FyZElkLCIiKX19ZnVuY3Rpb24gYmd0KHQsZSl7aWYoMSZ0JiYoTm0oMCwxKSxRcCgxLHVndCwxLDMsImltYWdlLWNhcmQiLDIpLFFwKDIsZmd0LDEsMiwic2NhbGFyLWNhcmQiLDMpLFFwKDMsZ2d0LDEsMywiaGlzdG9ncmFtLWNhcmQiLDQpLFFwKDQsaGd0LDIsMSwiZGl2Iiw1KSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtEbSgibmdTd2l0Y2giLHQucGx1Z2luVHlwZSkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLklNQUdFUykscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5UeXBlLlNDQUxBUlMpLHJjKDEpLERtKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5ISVNUT0dSQU1TKX19bWd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxtZ3QpKFNtKEl3KSl9LG1ndC7JtWNtcD10byh7dHlwZTptZ3Qsc2VsZWN0b3JzOltbImhpc3RvZ3JhbS1jYXJkIl1dLGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIn0sb3V0cHV0czp7ZnVsbFdpZHRoQ2hhbmdlZDoiZnVsbFdpZHRoQ2hhbmdlZCIsZnVsbEhlaWdodENoYW5nZWQ6ImZ1bGxIZWlnaHRDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjEwLHZhcnM6MjksY29uc3RzOltbMywibG9hZFN0YXRlIiwidGl0bGUiLCJ0YWciLCJydW5JZCIsImRhdGEiLCJtb2RlIiwieEF4aXNUeXBlIiwicnVuQ29sb3JTY2FsZSIsInNob3dGdWxsU2l6ZSIsImlzUGlubmVkIiwic2VsZWN0ZWRUaW1lIiwib25GdWxsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50IiwwKSxWbSgib25GdWxsU2l6ZVRvZ2dsZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkZ1bGxTaXplVG9nZ2xlKCl9KSkoIm9uUGluQ2xpY2tlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucGluU3RhdGVDaGFuZ2VkLmVtaXQoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxBaCg4LCJhc3luYyIpLEFoKDksImFzeW5jIiksQW0oKSksMiZlJiZEbSgibG9hZFN0YXRlIixUaCgxLDExLG4ubG9hZFN0YXRlJCkpKCJ0aXRsZSIsVGgoMiwxMyxuLnRpdGxlJCkpKCJ0YWciLFRoKDMsMTUsbi50YWckKSkoInJ1bklkIixUaCg0LDE3LG4ucnVuSWQkKSkoImRhdGEiLFRoKDUsMTksbi5kYXRhJCkpKCJtb2RlIixUaCg2LDIxLG4ubW9kZSQpKSgieEF4aXNUeXBlIixUaCg3LDIzLG4ueEF4aXNUeXBlJCkpKCJydW5Db2xvclNjYWxlIixuLnJ1bkNvbG9yU2NhbGUpKCJzaG93RnVsbFNpemUiLG4uc2hvd0Z1bGxTaXplKSgiaXNQaW5uZWQiLFRoKDgsMjUsbi5pc1Bpbm5lZCQpKSgic2VsZWN0ZWRUaW1lIixUaCg5LDI3LG4uc2VsZWN0ZWRUaW1lJCkpfSxkaXJlY3RpdmVzOltwZ3RdLHBpcGVzOlt3TV0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG1ndCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJoaXN0b2dyYW0tY2FyZCIsdGVtcGxhdGU6J1xuICAgIDxoaXN0b2dyYW0tY2FyZC1jb21wb25lbnRcbiAgICAgIFtsb2FkU3RhdGVdPSJsb2FkU3RhdGUkIHwgYXN5bmMiXG4gICAgICBbdGl0bGVdPSJ0aXRsZSQgfCBhc3luYyJcbiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiXG4gICAgICBbcnVuSWRdPSJydW5JZCQgfCBhc3luYyJcbiAgICAgIFtkYXRhXT0iZGF0YSQgfCBhc3luYyJcbiAgICAgIFttb2RlXT0ibW9kZSQgfCBhc3luYyJcbiAgICAgIFt4QXhpc1R5cGVdPSJ4QXhpc1R5cGUkIHwgYXN5bmMiXG4gICAgICBbcnVuQ29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUiXG4gICAgICBbc2hvd0Z1bGxTaXplXT0ic2hvd0Z1bGxTaXplIlxuICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgKG9uRnVsbFNpemVUb2dnbGUpPSJvbkZ1bGxTaXplVG9nZ2xlKCkiXG4gICAgICAob25QaW5DbGlja2VkKT0icGluU3RhdGVDaGFuZ2VkLmVtaXQoJGV2ZW50KSJcbiAgICA+PC9oaXN0b2dyYW0tY2FyZC1jb21wb25lbnQ+XG4gICcsc3R5bGVzOlsiXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG4gICAgIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7Y2FyZElkOlt7dHlwZTp4eX1dLGdyb3VwTmFtZTpbe3R5cGU6eHl9XSxydW5Db2xvclNjYWxlOlt7dHlwZTp4eX1dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOk95fV0sZnVsbEhlaWdodENoYW5nZWQ6W3t0eXBlOk95fV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgeWd0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPWhBLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZD1uZXcgTGgsdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZD1uZXcgTGgsdGhpcy5waW5TdGF0ZUNoYW5nZWQ9bmV3IExofW9uRnVsbFdpZHRoQ2hhbmdlZCh0KXt0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0KX1vbkZ1bGxIZWlnaHRDaGFuZ2VkKHQpe3RoaXMuZnVsbEhlaWdodENoYW5nZWQuZW1pdCh0KX1vblBpblN0YXRlQ2hhbmdlZCgpe3RoaXMucGluU3RhdGVDaGFuZ2VkLmVtaXQoKX19eWd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5Z3QpfSx5Z3QuybVjbXA9dG8oe3R5cGU6eWd0LHNlbGVjdG9yczpbWyJjYXJkLXZpZXctY29tcG9uZW50Il1dLGlucHV0czp7aXNFdmVyVmlzaWJsZToiaXNFdmVyVmlzaWJsZSIsY2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixwbHVnaW5UeXBlOiJwbHVnaW5UeXBlIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIn0sb3V0cHV0czp7ZnVsbFdpZHRoQ2hhbmdlZDoiZnVsbFdpZHRoQ2hhbmdlZCIsZnVsbEhlaWdodENoYW5nZWQ6ImZ1bGxIZWlnaHRDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzMsIm5nU3dpdGNoIiw0LCJuZ0lmIl0sWzMsIm5nU3dpdGNoIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzQsIm5nU3dpdGNoRGVmYXVsdCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZRcCgwLGJndCw1LDQsIm5nLWNvbnRhaW5lciIsMCksMiZlJiZEbSgibmdJZiIsbi5pc0V2ZXJWaXNpYmxlKX0sZGlyZWN0aXZlczpbZE0sZk0sZ00saE0sWDIsSWZ0LG1ndF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh5Z3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiY2FyZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImNhcmRfdmlld19jb21wb25lbnQubmcuaHRtbCIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7aXNFdmVyVmlzaWJsZTpbe3R5cGU6eHl9XSxjYXJkSWQ6W3t0eXBlOnh5fV0sZ3JvdXBOYW1lOlt7dHlwZTp4eX1dLHBsdWdpblR5cGU6W3t0eXBlOnh5fV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6eHl9XSxmdWxsV2lkdGhDaGFuZ2VkOlt7dHlwZTpPeX1dLGZ1bGxIZWlnaHRDaGFuZ2VkOlt7dHlwZTpPeX1dLHBpblN0YXRlQ2hhbmdlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIF9ndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0V2ZXJWaXNpYmxlPSExLHRoaXMuc2hvd0Z1bGxXaWR0aD0hMSx0aGlzLnNob3dGdWxsSGVpZ2h0PSExLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoek4pLnBpcGUoQmUoMzUwLHZvaWQgMCx7bGVhZGluZzohMCx0cmFpbGluZzohMH0pLEl0KCh0PT5lPT50Lmhhc093blByb3BlcnR5KGUpP3RbZV06IiNmZmYiKSkpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5pc0V2ZXJWaXNpYmxlPXRoaXMuaXNFdmVyVmlzaWJsZXx8dH1vbkZ1bGxXaWR0aENoYW5nZWQodCl7dGhpcy5zaG93RnVsbFdpZHRoPXR9b25GdWxsSGVpZ2h0Q2hhbmdlZCh0KXt0aGlzLnNob3dGdWxsSGVpZ2h0PXR9b25QaW5TdGF0ZUNoYW5nZWQoKXt0aGlzLnN0b3JlLnNlbGVjdCh3VCx0aGlzLmNhcmRJZCkucGlwZShiZSgxKSxWZSh0aGlzLnN0b3JlLnNlbGVjdChTVCkpKS5zdWJzY3JpYmUoKChbdCxlXSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9SKHtjYXJkSWQ6dGhpcy5jYXJkSWQsY2FuQ3JlYXRlTmV3UGluczplLHdhc1Bpbm5lZDp0fSkpfSkpfX1mdW5jdGlvbiBDZ3QodCxlKXsxJnQmJkltKDApfWZ1bmN0aW9uIE1ndCh0LGUpe2lmKDEmdCYmVG0oMCwiY2FyZC12aWV3Iiw0KSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgpO0RtKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLHQucGx1Z2luKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImNhcmRMYXp5TG9hZGVyIix0LmNhcmRJZCl9fWZ1bmN0aW9uIHZndCh0LGUpezEmdCYmSW0oMCl9ZnVuY3Rpb24geGd0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwxMyksVm0oImNsaWNrIiwoZnVuY3Rpb24gZShuKXtoaSh0KTtjb25zdCBvPVltKDMpO3JldHVybiBvLmhhbmRsZVBhZ2VDaGFuZ2Uoby5wYWdlSW5kZXgtMSxuLnRhcmdldCl9KSksa3UoMSwiIFByZXZpb3VzICIpLEFtKCl9MiZ0JiZEbSgiZGlzYWJsZWQiLDA9PT1ZbSgzKS5wYWdlSW5kZXgpfWZ1bmN0aW9uIE9ndCh0LGUpezEmdCYmVG0oMCwibWF0LWljb24iLDE3KX1mdW5jdGlvbiBQZ3QodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiwxOCl9ZnVuY3Rpb24gd2d0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiYnV0dG9uIiwxNCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgzKS5ncm91cEV4cGFuc2lvblRvZ2dsZWQuZW1pdCgpfSkpLFFwKDEsT2d0LDEsMCwibWF0LWljb24iLDE1KSxRcCgyLFBndCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDE2LGliKSxBbSgpfWlmKDImdCl7Y29uc3QgdD0kcCgzKSxlPVltKDMpO3JjKDEpLERtKCJuZ0lmIixlLmlzR3JvdXBFeHBhbmRlZCkoIm5nSWZFbHNlIix0KX19ZnVuY3Rpb24ga2d0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwic3BhbiIsMjEpLFJtKDEsImlucHV0IiwyMiksVm0oImlucHV0IiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oNCkub25QYWdpbmF0aW9uSW5wdXRDaGFuZ2Uobil9KSkoImNoYW5nZSIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKG4pfSkpLEFtKCksa3UoMiksQW0oKX1pZigyJnQpe2NvbnN0IHQ9WW0oNCk7cmMoMSksRG0oInZhbHVlIix0LnBhZ2VJbmRleCsxKSgibWF4Iix0Lm51bVBhZ2VzKSxyYygxKSxEdSgiIG9mICIsdC5udW1QYWdlcywiIil9fWZ1bmN0aW9uIFNndCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsInNwYW4iKSxRcCgxLGtndCwzLDMsInNwYW4iLDE5KSxSbSgyLCJidXR0b24iLDIwKSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKG4pe2hpKHQpO2NvbnN0IG89WW0oMyk7cmV0dXJuIG8uaGFuZGxlUGFnZUNoYW5nZShvLnBhZ2VJbmRleCsxLG4udGFyZ2V0KX0pKSxrdSgzLCIgTmV4dCAiKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpLmlzQm90dG9tQ29udHJvbCxlPVltKCk7cmMoMSksRG0oIm5nSWYiLGUuc2hvd1BhZ2luYXRpb25JbnB1dCh0KSkscmMoMSksRG0oImRpc2FibGVkIixlLnBhZ2VJbmRleCsxPj1lLm51bVBhZ2VzKX19ZnVuY3Rpb24gRGd0KHQsZSl7aWYoMSZ0JiYoUm0oMCwiZGl2Iiw2KSxSbSgxLCJzcGFuIiw3KSxRcCgyLHhndCwyLDEsImJ1dHRvbiIsOCksQW0oKSxSbSgzLCJzcGFuIiw5KSxRcCg0LHdndCw0LDIsImJ1dHRvbiIsMTApLEFtKCksUm0oNSwic3BhbiIsMTEpLFFwKDYsU2d0LDQsMiwic3BhbiIsMTIpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKCkuaXNCb3R0b21Db250cm9sLGU9WW0oKTtyYygyKSxEbSgibmdJZiIsZS5zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSxyYygyKSxEbSgibmdJZiIsZS5zaG93RXhwYW5kKHQpKSxyYygyKSxEbSgibmdJZiIsZS5zaG93UGFnaW5hdGlvbkNvbnRyb2xzKX19ZnVuY3Rpb24gRWd0KHQsZSl7aWYoMSZ0JiZRcCgwLERndCw3LDMsImRpdiIsNSksMiZ0KXtjb25zdCB0PWUuaXNCb3R0b21Db250cm9sLG49WW0oKTtEbSgibmdJZiIsbi5zaG93UGFnaW5hdGlvbkNvbnRyb2xzfHxuLnNob3dFeHBhbmQodCkpfX1fZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fF9ndCkoU20oSXcpKX0sX2d0Lsm1Y21wPXRvKHt0eXBlOl9ndCxzZWxlY3RvcnM6W1siY2FyZC12aWV3Il1dLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJnB1KCJmdWxsLXdpZHRoIixuLnNob3dGdWxsV2lkdGgpKCJmdWxsLWhlaWdodCIsbi5zaG93RnVsbEhlaWdodCl9LGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixwbHVnaW5UeXBlOiJwbHVnaW5UeXBlIn0sZGVjbHM6Mix2YXJzOjcsY29uc3RzOltbIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLCJpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiIsIjIwMHB4IDIwMHB4IDIwMHB4IDIwMHB4IiwzLCJpc0V2ZXJWaXNpYmxlIiwiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLCJvblZpc2liaWxpdHlDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImNhcmQtdmlldy1jb21wb25lbnQiLDApLFZtKCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZ1bGxXaWR0aENoYW5nZWQoZSl9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkZ1bGxIZWlnaHRDaGFuZ2VkKGUpfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSgib25WaXNpYmlsaXR5Q2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblZpc2liaWxpdHlDaGFuZ2UoZSl9KSksQWgoMSwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJpc0V2ZXJWaXNpYmxlIixuLmlzRXZlclZpc2libGUpKCJjYXJkSWQiLG4uY2FyZElkKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLG4ucGx1Z2luVHlwZSkoInJ1bkNvbG9yU2NhbGUiLFRoKDEsNSxuLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W3lndCxOZnRdLHBpcGVzOlt3TV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoX2d0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6ImNhcmQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxjYXJkLXZpZXctY29tcG9uZW50XG4gICAgICBbaXNFdmVyVmlzaWJsZV09ImlzRXZlclZpc2libGUiXG4gICAgICBbY2FyZElkXT0iY2FyZElkIlxuICAgICAgW2dyb3VwTmFtZV09Imdyb3VwTmFtZSJcbiAgICAgIFtwbHVnaW5UeXBlXT0icGx1Z2luVHlwZSJcbiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSQgfCBhc3luYyJcbiAgICAgIChmdWxsV2lkdGhDaGFuZ2VkKT0ib25GdWxsV2lkdGhDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoZnVsbEhlaWdodENoYW5nZWQpPSJvbkZ1bGxIZWlnaHRDaGFuZ2VkKCRldmVudCkiXG4gICAgICAocGluU3RhdGVDaGFuZ2VkKT0ib25QaW5TdGF0ZUNoYW5nZWQoKSJcbiAgICAgIG9ic2VydmVJbnRlcnNlY3Rpb25cbiAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luPSIyMDBweCAyMDBweCAyMDBweCAyMDBweCJcbiAgICAgIChvblZpc2liaWxpdHlDaGFuZ2UpPSJvblZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KSJcbiAgICA+XG4gICAgPC9jYXJkLXZpZXctY29tcG9uZW50PlxuICAnLHN0eWxlVXJsczpbImNhcmRfdmlld19jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7Y2FyZElkOlt7dHlwZTp4eX1dLGdyb3VwTmFtZTpbe3R5cGU6eHl9XSxwbHVnaW5UeXBlOlt7dHlwZTp4eX1dLHNob3dGdWxsV2lkdGg6W3t0eXBlOlB5LGFyZ3M6WyJjbGFzcy5mdWxsLXdpZHRoIl19XSxzaG93RnVsbEhlaWdodDpbe3R5cGU6UHksYXJnczpbImNsYXNzLmZ1bGwtaGVpZ2h0Il19XX0pO2NvbnN0IFJndD1mdW5jdGlvbigpe3JldHVybntpc0JvdHRvbUNvbnRyb2w6ITF9fSxBZ3Q9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiEwfX07Y2xhc3MgVGd0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2RrU2Nyb2xsYWJsZT10LHRoaXMuUGx1Z2luVHlwZT1oQSx0aGlzLnBhZ2VJbmRleENoYW5nZWQ9bmV3IExoLHRoaXMuZ3JvdXBFeHBhbnNpb25Ub2dnbGVkPW5ldyBMaH1zaG93RXhwYW5kKHQpe3JldHVybiEhdCYmdGhpcy5pc0dyb3VwRXhwYW5kYWJsZX1zaG93UGFnaW5hdGlvbklucHV0KHQpe3JldHVybiB0fWhhbmRsZVBhZ2VDaGFuZ2UodCxlKXtjb25zdCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3NldFRpbWVvdXQoKCgpPT57dGhpcy5zY3JvbGxUb0tlZXBUYXJnZXRQb3NpdGlvbihlLG4pfSksMCksdGhpcy5wYWdlSW5kZXhDaGFuZ2VkLmVtaXQodCl9c2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24odCxlKXt2YXIgbjtjb25zdCBvPW51bGw9PT0obj10aGlzLmNka1Njcm9sbGFibGUpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50O28mJm8uc2Nyb2xsVG8oMCx0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC1lK28uc2Nyb2xsVG9wKX10cmFja0J5Q2FyZHModCxlKXtyZXR1cm4gZS5jYXJkSWR9b25QYWdpbmF0aW9uSW5wdXRDaGFuZ2UodCl7Y29uc3QgZT10LnRhcmdldDtpZigiaW5wdXQiPT09dC50eXBlJiYiIj09PWUudmFsdWUpcmV0dXJuO2NvbnN0IG49TnVtYmVyKGUudmFsdWUpLTEsbz1NYXRoLm1pbihNYXRoLm1heCgwLG4pLHRoaXMubnVtUGFnZXMtMSk7ZS52YWx1ZSE9PVN0cmluZyhvKzEpJiYoZS52YWx1ZT1TdHJpbmcobysxKSksdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKG8sZSl9fVRndC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VGd0KShTbShtRiw4KSl9LFRndC7JtWNtcD10byh7dHlwZTpUZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzR3JvdXBFeHBhbmRhYmxlOiJpc0dyb3VwRXhwYW5kYWJsZSIsaXNHcm91cEV4cGFuZGVkOiJpc0dyb3VwRXhwYW5kZWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixwYWdlSW5kZXg6InBhZ2VJbmRleCIsbnVtUGFnZXM6Im51bVBhZ2VzIixjYXJkSWRzV2l0aE1ldGFkYXRhOiJjYXJkSWRzV2l0aE1ldGFkYXRhIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsc2hvd1BhZ2luYXRpb25Db250cm9sczoic2hvd1BhZ2luYXRpb25Db250cm9scyJ9LG91dHB1dHM6e3BhZ2VJbmRleENoYW5nZWQ6InBhZ2VJbmRleENoYW5nZWQiLGdyb3VwRXhwYW5zaW9uVG9nZ2xlZDoiZ3JvdXBFeHBhbnNpb25Ub2dnbGVkIn0sZGVjbHM6Nix2YXJzOjgsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuO3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJQcmV2aW91cyBwYWdlIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgcHJldmlvdXMgcGFnZS7ikJ81NzVlNzgyZmQyN2YyZWU3MGEwMzRhNzc1ZWZlOWFkMTYyNDcyMjUw4pCfMzYyOTk2MDU0NDg3NTM2MDA0NjpQcmV2aW91cyBwYWdlYCxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJFeHBhbmQgZ3JvdXAiKTokbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgYWxsb3dzIHVzZXIgdG8gZXhwYW5kIGEgdGFnIGdyb3VwLuKQn2ZmYWExMTQ3MWI4NzhhNmRmZmUyZTY4YzZmMzcwNjRhOWUwNzQ4NTPikJ81Mzg2MDU0MzI1Mjc0Nzc5MjU4OkV4cGFuZCBncm91cGAsbj0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiTmV4dCBwYWdlIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgbmV4dCBwYWdlLuKQn2NlM2NlZmIxY2QwMDk5YWE1MDAzZGRhMTZlYzllYjIxZmQ4YmE3ODnikJ8zMzM3MzAxNjk0MjEwMjg3NTk1Ok5leHQgcGFnZWAsW1s0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbMSwiY2FyZC1ncmlkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInBsdWdpblR5cGUiLCJjYXJkT2JzZXJ2ZXIiLCJjYXJkTGF6eUxvYWRlciIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJncm91cENvbnRyb2xzIiwiIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInBsdWdpblR5cGUiLCJjYXJkT2JzZXJ2ZXIiLCJjYXJkTGF6eUxvYWRlciJdLFsiY2xhc3MiLCJncm91cC1jb250cm9scyIsNCwibmdJZiJdLFsxLCJncm91cC1jb250cm9scyJdLFsxLCJwcmV2LWNvbnRhaW5lciJdLFsiY2xhc3MiLCJwcmV2IHBhZ2luYXRpb24tYnV0dG9uIiwibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJleHBhbmQtY29udGFpbmVyIl0sWyJjbGFzcyIsImV4cGFuZC1ncm91cC1idXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixlLDMsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImlucHV0LWFuZC1uZXh0LWNvbnRhaW5lciJdLFs0LCJuZ0lmIl0sWyJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwxLCJwcmV2IiwicGFnaW5hdGlvbi1idXR0b24iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsMSwiZXhwYW5kLWdyb3VwLWJ1dHRvbiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImV4cGFuZE1vcmUiLCIiXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Il0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCJdLFsiY2xhc3MiLCJwYWdpbmF0aW9uLWlucHV0Iiw0LCJuZ0lmIl0sWyJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwxLCJuZXh0IiwicGFnaW5hdGlvbi1idXR0b24iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbMSwicGFnaW5hdGlvbi1pbnB1dCJdLFsidHlwZSIsIm51bWJlciIsIm1pbiIsIjEiLDMsInZhbHVlIiwibWF4IiwiaW5wdXQiLCJjaGFuZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRcCgwLENndCwxLDAsIm5nLWNvbnRhaW5lciIsMCksUm0oMSwiZGl2IiwxKSxRcCgyLE1ndCwxLDUsImNhcmQtdmlldyIsMiksQW0oKSxRcCgzLHZndCwxLDAsIm5nLWNvbnRhaW5lciIsMCksUXAoNCxFZ3QsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwzLGliKSksMiZlKXtjb25zdCB0PSRwKDUpO0RtKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLENoKDYsUmd0KSkscmMoMiksRG0oIm5nRm9yT2YiLG4uY2FyZElkc1dpdGhNZXRhZGF0YSkoIm5nRm9yVHJhY2tCeSIsbi50cmFja0J5Q2FyZHMpLHJjKDEpLERtKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLENoKDcsQWd0KSl9fSxkaXJlY3RpdmVzOltNTSxsTSxfZ3QsbTIsZE0sWEgsRFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17Y29udGFpbjpjb250ZW50fS5jYXJkLWdyaWRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMzNXB4LCBhdXRvKSk7Z2FwOjE2cHg7cGFkZGluZzoxNnB4fWNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb250YWluOnN0cmljdDtoZWlnaHQ6MTAwJTttaW4taGVpZ2h0OjMyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGNhcmQtdmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWNhcmQtdmlldy5mdWxsLXdpZHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmxheW91dCBwYWludDtncmlkLWNvbHVtbi1zdGFydDoxO2dyaWQtY29sdW1uLWVuZDotMX1jYXJkLXZpZXcuZnVsbC1oZWlnaHRbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDgwcHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6Z3JpZDthbGlnbi1pdGVtczpjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIgMWZyO2dhcDoxNnB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1vZi10eXBle3BhZGRpbmctdG9wOjE2cHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LW9mLXR5cGV7cGFkZGluZy1ib3R0b206MTZweH0ucHJldi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LXN0YXJ0fS5leHBhbmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtqdXN0aWZ5LXNlbGY6Y2VudGVyfS5pbnB1dC1hbmQtbmV4dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LWVuZH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjE2cHh9LnBhZ2luYXRpb24taW5wdXRbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXR9LmV4cGFuZC1ncm91cC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4cGFuZC1ncm91cC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmV4cGFuZC1ncm91cC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVke2NvbG9yOiM3NTc1NzV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmV4cGFuZC1ncm91cC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kLWdyb3VwLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVke2NvbG9yOiM2MTYxNjF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFRndCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2NhcmRfZ3JpZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9jYXJkX2dyaWRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTptRixkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfV19KSx7aXNHcm91cEV4cGFuZGFibGU6W3t0eXBlOnh5fV0saXNHcm91cEV4cGFuZGVkOlt7dHlwZTp4eX1dLGdyb3VwTmFtZTpbe3R5cGU6eHl9XSxwYWdlSW5kZXg6W3t0eXBlOnh5fV0sbnVtUGFnZXM6W3t0eXBlOnh5fV0sY2FyZElkc1dpdGhNZXRhZGF0YTpbe3R5cGU6eHl9XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOnh5fV0sc2hvd1BhZ2luYXRpb25Db250cm9sczpbe3R5cGU6eHl9XSxwYWdlSW5kZXhDaGFuZ2VkOlt7dHlwZTpPeX1dLGdyb3VwRXhwYW5zaW9uVG9nZ2xlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIE5ndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ncm91cE5hbWU9bnVsbCx0aGlzLmdyb3VwTmFtZSQ9bmV3IEYobnVsbCksdGhpcy5wYWdlSW5kZXgkPW5ldyBGKDApLHRoaXMuaXRlbXMkPW5ldyBGKFtdKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEksdGhpcy5udW1QYWdlcyQ9V3QoW3RoaXMuaXRlbXMkLHRoaXMuc3RvcmUuc2VsZWN0KFJOKV0pLnBpcGUoSXQoKChbdCxlXSk9Pk1hdGguY2VpbCh0Lmxlbmd0aC9lKSkpKSx0aGlzLmlzR3JvdXBFeHBhbmRlZCQ9dGhpcy5ncm91cE5hbWUkLnBpcGUoemUoKHQ9Pm51bGwhPT10P3RoaXMuc3RvcmUuc2VsZWN0KFZULHQpOkV0KCEwKSkpKSx0aGlzLnNob3dQYWdpbmF0aW9uQ29udHJvbHMkPVd0KFt0aGlzLm51bVBhZ2VzJCx0aGlzLnN0b3JlLnNlbGVjdChSTiksdGhpcy5pc0dyb3VwRXhwYW5kZWQkXSkucGlwZShJdCgoKFt0LGUsbl0pPT4hKHQ8PTEpJiYoZTw9M3x8bikpKSksdGhpcy5pc0dyb3VwRXhwYW5kYWJsZSQ9V3QoW3RoaXMuaXRlbXMkLHRoaXMuc3RvcmUuc2VsZWN0KFJOKV0pLnBpcGUoSXQoKChbdCxlXSk9PiEobnVsbD09PXRoaXMuZ3JvdXBOYW1lfHxlPD0zfHx0Lmxlbmd0aDw9MykpKSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JD1XdChbdGhpcy5wYWdlSW5kZXgkLHRoaXMubnVtUGFnZXMkXSkucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEZlKCgoW3QsZV0pPT57MCE9PWUmJih0Pj1lP3RoaXMucGFnZUluZGV4JC5uZXh0KGUtMSk6dDwwJiZ0aGlzLnBhZ2VJbmRleCQubmV4dCgwKSl9KSksSXQoKChbdCxlXSk9Pk1hdGgubWluKE1hdGgubWF4KHQsMCksZS0xKSkpLEFlKDEpKSx0aGlzLnBhZ2VkSXRlbXMkPVd0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChSTiksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JCx0aGlzLmlzR3JvdXBFeHBhbmRlZCRdKS5waXBlKEl0KCgoW3QsZSxuLG9dKT0+e2NvbnN0IGk9ZSpuLGE9ZSpuK01hdGgubWluKG8/ZTozLGUpO3JldHVybiB0LnNsaWNlKGksYSl9KSkpfW5nT25DaGFuZ2VzKHQpe3QuY2FyZElkc1dpdGhNZXRhZGF0YSYmdGhpcy5pdGVtcyQubmV4dCh0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEpLHQuZ3JvdXBOYW1lJiZ0aGlzLmdyb3VwTmFtZSQubmV4dCh0aGlzLmdyb3VwTmFtZSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW9uUGFnZUluZGV4Q2hhbmdlZCh0KXt0aGlzLnBhZ2VJbmRleCQubmV4dCh0KX1vbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpe2lmKG51bGw9PT10aGlzLmdyb3VwTmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiBleHBhbnNpb24gY2Fubm90IGJlIHRvZ2dsZWQgd2hlbiBncm91cE5hbWUgaXMgbnVsbCIpO3RoaXMuc3RvcmUuZGlzcGF0Y2goblIoe3RhZ0dyb3VwOnRoaXMuZ3JvdXBOYW1lfSkpfX1mdW5jdGlvbiB6Z3QodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiw4KSxrdSgxKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEdSgiIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoLCIgY2FyZHMiKX19ZnVuY3Rpb24gSWd0KHQsZSl7MSZ0JiYoUm0oMCwic3BhbiIsOSksa3UoMSwiTmV3IGNhcmQgcGlubmVkIiksQW0oKSksMiZ0JiZqcCgiZGF0YS1pZCIsZS4kaW1wbGljaXQpfWZ1bmN0aW9uIEhndCh0LGUpe2lmKDEmdCYmVG0oMCwibWV0cmljcy1jYXJkLWdyaWQiLDEwKSwyJnQpe2NvbnN0IHQ9WW0oKTtEbSgiY2FyZElkc1dpdGhNZXRhZGF0YSIsdC5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIix0LmNhcmRPYnNlcnZlcil9fWZ1bmN0aW9uIEZndCh0LGUpezEmdCYmKFJtKDAsImRpdiIsMTEpLGt1KDEsIlBpbiBjYXJkcyBmb3IgYSBxdWljayB2aWV3IGFuZCBjb21wYXJpc29uIiksQW0oKSl9Tmd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxOZ3QpKFNtKEl3KSl9LE5ndC7JtWNtcD10byh7dHlwZTpOZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncmlkIl1dLGlucHV0czp7Z3JvdXBOYW1lOiJncm91cE5hbWUiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZmVhdHVyZXM6W0JvXSxkZWNsczo3LHZhcnM6MjAsY29uc3RzOltbMywiaXNHcm91cEV4cGFuZGFibGUiLCJpc0dyb3VwRXhwYW5kZWQiLCJncm91cE5hbWUiLCJwYWdlSW5kZXgiLCJudW1QYWdlcyIsInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIiwicGFnZUluZGV4Q2hhbmdlZCIsImdyb3VwRXhwYW5zaW9uVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50IiwwKSxWbSgicGFnZUluZGV4Q2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25QYWdlSW5kZXhDaGFuZ2VkKGUpfSkpKCJncm91cEV4cGFuc2lvblRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Hcm91cEV4cGFuc2lvblRvZ2dsZWQoKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBaCg0LCJhc3luYyIpLEFoKDUsImFzeW5jIiksQWgoNiwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJpc0dyb3VwRXhwYW5kYWJsZSIsVGgoMSw4LG4uaXNHcm91cEV4cGFuZGFibGUkKSkoImlzR3JvdXBFeHBhbmRlZCIsVGgoMiwxMCxuLmlzR3JvdXBFeHBhbmRlZCQpKSgiZ3JvdXBOYW1lIixuLmdyb3VwTmFtZSkoInBhZ2VJbmRleCIsVGgoMywxMixuLm5vcm1hbGl6ZWRQYWdlSW5kZXgkKSkoIm51bVBhZ2VzIixUaCg0LDE0LG4ubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLFRoKDUsMTYsbi5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixUaCg2LDE4LG4ucGFnZWRJdGVtcyQpKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W1RndF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE5ndCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JpZCIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnRcbiAgICAgIFtpc0dyb3VwRXhwYW5kYWJsZV09ImlzR3JvdXBFeHBhbmRhYmxlJCB8IGFzeW5jIlxuICAgICAgW2lzR3JvdXBFeHBhbmRlZF09ImlzR3JvdXBFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtncm91cE5hbWVdPSJncm91cE5hbWUiXG4gICAgICBbcGFnZUluZGV4XT0ibm9ybWFsaXplZFBhZ2VJbmRleCQgfCBhc3luYyJcbiAgICAgIFtudW1QYWdlc109Im51bVBhZ2VzJCB8IGFzeW5jIlxuICAgICAgW3Nob3dQYWdpbmF0aW9uQ29udHJvbHNdPSJzaG93UGFnaW5hdGlvbkNvbnRyb2xzJCB8IGFzeW5jIlxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJwYWdlZEl0ZW1zJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICAgIChwYWdlSW5kZXhDaGFuZ2VkKT0ib25QYWdlSW5kZXhDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoZ3JvdXBFeHBhbnNpb25Ub2dnbGVkKT0ib25Hcm91cEV4cGFuc2lvblRvZ2dsZWQoKSJcbiAgICA+XG4gICAgPC9tZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7Z3JvdXBOYW1lOlt7dHlwZTp4eX1dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOnh5fV0sY2FyZE9ic2VydmVyOlt7dHlwZTp4eX1dfSk7Y2xhc3MgTGd0e31MZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExndCl9LExndC7JtWNtcD10byh7dHlwZTpMZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEiLG5ld0NhcmRQaW5uZWRJZHM6Im5ld0NhcmRQaW5uZWRJZHMifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwiZ3JvdXAtdG9vbGJhciJdLFsic3ZnSWNvbiIsImtlZXBfMjRweCJdLFsxLCJncm91cC10ZXh0Il0sWyJhcmlhLXJvbGUiLCJoZWFkaW5nIiwiYXJpYS1sZXZlbCIsIjMiLDEsImdyb3VwLXRpdGxlIl0sWyJjbGFzcyIsImdyb3VwLWNhcmQtY291bnQiLDQsIm5nSWYiXSxbImNsYXNzIiwibmV3LWNhcmQtcGlubmVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJlbXB0eVBpbm5lZFZpZXciLCIiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdLFsxLCJuZXctY2FyZC1waW5uZWQiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFRtKDEsIm1hdC1pY29uIiwxKSxSbSgyLCJzcGFuIiwyKSxSbSgzLCJzcGFuIiwzKSxrdSg0LCJQaW5uZWQiKSxBbSgpLFFwKDUsemd0LDIsMSwic3BhbiIsNCksUXAoNixJZ3QsMiwxLCJzcGFuIiw1KSxBbSgpLEFtKCksUXAoNyxIZ3QsMSwyLCJtZXRyaWNzLWNhcmQtZ3JpZCIsNiksUXAoOCxGZ3QsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw3LGliKSksMiZlKXtjb25zdCB0PSRwKDkpO3JjKDUpLERtKCJuZ0lmIixuLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoPjEpLHJjKDEpLERtKCJuZ0Zvck9mIixuLm5ld0NhcmRQaW5uZWRJZHMpLHJjKDEpLERtKCJuZ0lmIixuLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbRFcsZE0sbE0sTmd0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6bm9uZTtoZWlnaHQ6NDJweDttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDAsMCwwLC4xNSl9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgyNTUsMjU1LDI1NSwuMTUpfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5ncm91cC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweH0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOjEzcHg7Zm9udC1zdHlsZTppdGFsaWM7cGFkZGluZzoxNnB4O3RleHQtYWxpZ246Y2VudGVyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5uZXctY2FyZC1waW5uZWRbX25nY29udGVudC0lQ09NUCVde2FuaW1hdGlvbjpwaW5uZWQtdmlldy1mYWRlLW91dCAzcyBsaW5lYXI7YmFja2dyb3VuZDojZjQ0MzM2O2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEzcHg7b3BhY2l0eTowO3BhZGRpbmc6M3B4IDVweH1Aa2V5ZnJhbWVzIHBpbm5lZC12aWV3LWZhZGUtb3V0e2Zyb217b3BhY2l0eToxfTY2JXtvcGFjaXR5Oi45OX10b3tvcGFjaXR5OjB9fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMZ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8ZGl2IGNsYXNzPSJncm91cC10b29sYmFyIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPSJrZWVwXzI0cHgiPjwvbWF0LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGV4dCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPSJncm91cC10aXRsZSIgYXJpYS1yb2xlPSJoZWFkaW5nIiBhcmlhLWxldmVsPSIzIlxuICAgICAgICAgID5QaW5uZWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggPiAxIiBjbGFzcz0iZ3JvdXAtY2FyZC1jb3VudCJcbiAgICAgICAgICA+e3sgY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggfX0gY2FyZHM8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0Zvcj0ibGV0IGlkIG9mIG5ld0NhcmRQaW5uZWRJZHMiXG4gICAgICAgICAgW2F0dHIuZGF0YS1pZF09ImlkIlxuICAgICAgICAgIGNsYXNzPSJuZXctY2FyZC1waW5uZWQiXG4gICAgICAgICAgPk5ldyBjYXJkIHBpbm5lZDwvc3BhblxuICAgICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPG1ldHJpY3MtY2FyZC1ncmlkXG4gICAgICAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg7IGVsc2UgZW1wdHlQaW5uZWRWaWV3IlxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgICA8bmctdGVtcGxhdGUgI2VtcHR5UGlubmVkVmlldz5cbiAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LW1lc3NhZ2UiPlBpbiBjYXJkcyBmb3IgYSBxdWljayB2aWV3IGFuZCBjb21wYXJpc29uPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgJyxzdHlsZVVybHM6WyJwaW5uZWRfdmlld19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7Y2FyZE9ic2VydmVyOlt7dHlwZTp4eX1dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOnh5fV0sbmV3Q2FyZFBpbm5lZElkczpbe3R5cGU6eHl9XX0pO2NsYXNzIEJndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhJD10aGlzLnN0b3JlLnNlbGVjdChQVCkucGlwZShOZShbXSkpLHRoaXMubmV3Q2FyZFBpbm5lZElkcyQ9dGhpcy5zdG9yZS5zZWxlY3QoUFQpLnBpcGUoVGUoMSksSXQoKHQ9PnQubWFwKCh0PT50LmNhcmRJZCkpKSksRGUoKSxJdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldCh0KSxvPW5ldyBTZXQoZSk7Zm9yKGNvbnN0IHQgb2YgbylpZighbi5oYXModCkpcmV0dXJuIERhdGUubm93KCk7cmV0dXJuIG51bGx9KSksTmUobnVsbCksRGUoKSxJdCgoKFt0LGVdKT0+bnVsbD09PXQmJm51bGw9PT1lP251bGw6bnVsbD09PWU/W3RdOltlXSkpLGNlKCh0PT5udWxsIT09dCkpLEl0KCh0PT5bdFswXV0pKSl9fUJndC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Qmd0KShTbShJdykpfSxCZ3QuybVjbXA9dG8oe3R5cGU6Qmd0LHNlbGVjdG9yczpbWyJtZXRyaWNzLXBpbm5lZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwibmV3Q2FyZFBpbm5lZElkcyIsImNhcmRPYnNlcnZlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwibWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQiLDApLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSksMiZlJiZEbSgiY2FyZElkc1dpdGhNZXRhZGF0YSIsVGgoMSwzLG4uY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgibmV3Q2FyZFBpbm5lZElkcyIsVGgoMiw1LG4ubmV3Q2FyZFBpbm5lZElkcyQpKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W0xndF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJndCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLXBpbm5lZC12aWV3Iix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50XG4gICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09ImNhcmRJZHNXaXRoTWV0YWRhdGEkIHwgYXN5bmMiXG4gICAgICBbbmV3Q2FyZFBpbm5lZElkc109Im5ld0NhcmRQaW5uZWRJZHMkIHwgYXN5bmMiXG4gICAgICBbY2FyZE9ic2VydmVyXT0iY2FyZE9ic2VydmVyIlxuICAgID48L21ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSkse2NhcmRPYnNlcnZlcjpbe3R5cGU6eHl9XX0pO2NvbnN0IFZndD1adyhNVCxOTiwoKHQsZSk9PnQuZmlsdGVyKCh0PT4heEEodC5wbHVnaW4pfHxCb29sZWFuKGUmJmUuZ2V0KHQucnVuSWQpKSkpKSksamd0PVp3KFZndCwodD0+dC5zb3J0KCgodCxlKT0+ZzIodC50YWcsZS50YWcpKSkpKTtmdW5jdGlvbiBVZ3QodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiw2KSxrdSgxKSxBaCgyLCJudW1iZXIiKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKS4kaW1wbGljaXQ7cmMoMSksRHUoIiIsVGgoMiwxLHQuaXRlbXMubGVuZ3RoKSwiIGNhcmRzIil9fWZ1bmN0aW9uIEdndCh0LGUpe2lmKDEmdCYmKFJtKDAsImRpdiIsMSksUm0oMSwiZGl2IiwyKSxSbSgyLCJzcGFuIiksUm0oMywic3BhbiIsMyksa3UoNCksQW0oKSxRcCg1LFVndCwzLDMsInNwYW4iLDQpLEFtKCksQW0oKSxUbSg2LCJtZXRyaWNzLWNhcmQtZ3JpZCIsNSksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oKTtyYygzKSxLbSgidGl0bGUiLHQuZ3JvdXBOYW1lKSxyYygxKSxTdSh0Lmdyb3VwTmFtZSkscmMoMSksRG0oIm5nSWYiLHQuaXRlbXMubGVuZ3RoPjEpLHJjKDEpLERtKCJjYXJkSWRzV2l0aE1ldGFkYXRhIix0Lml0ZW1zKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpfX1jbGFzcyBXZ3R7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9aEF9dHJhY2tCeUdyb3VwKHQsZSl7cmV0dXJuIGUuZ3JvdXBOYW1lfX1XZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFdndCl9LFdndC7JtWNtcD10byh7dHlwZTpXZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZEdyb3VwczoiY2FyZEdyb3VwcyIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczoxLHZhcnM6Mixjb25zdHM6W1siY2xhc3MiLCJjYXJkLWdyb3VwIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMSwiY2FyZC1ncm91cCJdLFsxLCJncm91cC10b29sYmFyIl0sWyJhcmlhLXJvbGUiLCJoZWFkaW5nIiwiYXJpYS1sZXZlbCIsIjMiLDEsImdyb3VwLXRpdGxlIiwzLCJ0aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLCJncm91cE5hbWUiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZRcCgwLEdndCw3LDYsImRpdiIsMCksMiZlJiZEbSgibmdGb3JPZiIsbi5jYXJkR3JvdXBzKSgibmdGb3JUcmFja0J5IixuLnRyYWNrQnlHcm91cCl9LGRpcmVjdGl2ZXM6W2xNLGRNLE5ndF0scGlwZXM6W0ZNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6bm9uZTtoZWlnaHQ6NDJweDttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDAsMCwwLC4xNSl9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgyNTUsMjU1LDI1NSwuMTUpfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgI2ViZWJlYjt0b3A6LTFweH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0uY2FyZC1ncm91cFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3Qtb2YtdHlwZSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOm5vbmV9Lmdyb3VwLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjE2MTYxO21hcmdpbi1sZWZ0OjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoV2d0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50Iix0ZW1wbGF0ZTonXG4gICAgPGRpdlxuICAgICAgKm5nRm9yPSJsZXQgZ3JvdXAgb2YgY2FyZEdyb3VwczsgdHJhY2tCeTogdHJhY2tCeUdyb3VwIlxuICAgICAgY2xhc3M9ImNhcmQtZ3JvdXAiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz0iZ3JvdXAtdG9vbGJhciI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz0iZ3JvdXAtdGl0bGUiXG4gICAgICAgICAgICBhcmlhLXJvbGU9ImhlYWRpbmciXG4gICAgICAgICAgICBhcmlhLWxldmVsPSIzIlxuICAgICAgICAgICAgdGl0bGU9Int7IGdyb3VwLmdyb3VwTmFtZSB9fSJcbiAgICAgICAgICAgID57eyBncm91cC5ncm91cE5hbWUgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9Imdyb3VwLml0ZW1zLmxlbmd0aCA+IDEiIGNsYXNzPSJncm91cC1jYXJkLWNvdW50IlxuICAgICAgICAgICAgPnt7IGdyb3VwLml0ZW1zLmxlbmd0aCB8IG51bWJlciB9fSBjYXJkczwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWV0cmljcy1jYXJkLWdyaWRcbiAgICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJncm91cC5pdGVtcyJcbiAgICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICAgICAgW2dyb3VwTmFtZV09Imdyb3VwLmdyb3VwTmFtZSJcbiAgICAgID48L21ldHJpY3MtY2FyZC1ncmlkPlxuICAgIDwvZGl2PlxuICAnLHN0eWxlVXJsczpbImNhcmRfZ3JvdXBzX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtjYXJkR3JvdXBzOlt7dHlwZTp4eX1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6eHl9XX0pO2NsYXNzIFlndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jYXJkR3JvdXBzJD10aGlzLnN0b3JlLnNlbGVjdChqZ3QpLnBpcGUoZmUodGhpcy5zdG9yZS5zZWxlY3QocVQpKSxJdCgoKFt0LGVdKT0+ZS5zaXplP3QuZmlsdGVyKCh0PT5lLmhhcyh0LnBsdWdpbikpKTp0KSksSXQoKHQ9PihmdW5jdGlvbiBlKHQpe2NvbnN0IGU9bmV3IE1hcCxuPXQuc2xpY2UoKS5zb3J0KCgodCxlKT0+ZzIodC50YWcsZS50YWcpKSk7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj10LnRhZy5zcGxpdCgiLyIsMSlbMF07ZS5oYXMobil8fGUuc2V0KG4se2dyb3VwTmFtZTpuLGl0ZW1zOltdfSksZS5nZXQobikuaXRlbXMucHVzaCh0KX1yZXR1cm5bLi4uZS52YWx1ZXMoKV19KSh0KSkpKX19ZnVuY3Rpb24gcWd0KHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDEpLER1KCIgYW5kICIsdC5nZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHQucGx1Z2luVHlwZXMpLCIgdmlzdWFsaXphdGlvbiBmaWx0ZXIiKX19WWd0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZZ3QpKFNtKEl3KSl9LFlndC7JtWNtcD10byh7dHlwZTpZZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsImNhcmRHcm91cHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpKSwyJmUmJkRtKCJjYXJkR3JvdXBzIixUaCgxLDIsbi5jYXJkR3JvdXBzJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbV2d0XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWWd0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnRcbiAgICAgIFtjYXJkR3JvdXBzXT0iY2FyZEdyb3VwcyQgfCBhc3luYyJcbiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiXG4gICAgPjwvbWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7Y2FyZE9ic2VydmVyOlt7dHlwZTp4eX1dfSk7Y2xhc3MgWmd0e2NvbnN0cnVjdG9yKCl7dGhpcy5QbHVnaW5UeXBlPWhBLHRoaXMubGlzdEZvcm1hdHRlcj1uZXcgSW50bC5MaXN0Rm9ybWF0KHZvaWQgMCx7c3R5bGU6ImxvbmciLHR5cGU6ImRpc2p1bmN0aW9uIn0pfWdldFBsdWdpblR5cGVGaWx0ZXJTdHJpbmcodCl7Y29uc3QgZT1bLi4udF0ubWFwKCh0PT57c3dpdGNoKHQpe2Nhc2UgaEEuU0NBTEFSUzpyZXR1cm4ic2NhbGFyIjtjYXNlIGhBLklNQUdFUzpyZXR1cm4iaW1hZ2UiO2Nhc2UgaEEuSElTVE9HUkFNUzpyZXR1cm4iaGlzdG9ncmFtIjtkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKGBQbGVhc2UgaW1wbGVtZW50IGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHBsdWdpbiB0eXBlOiAke3R9YCl9fSkpO3JldHVybiB0aGlzLmxpc3RGb3JtYXR0ZXIuZm9ybWF0KGUpfX1aZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFpndCl9LFpndC7JtWNtcD10byh7dHlwZTpaZ3Qsc2VsZWN0b3JzOltbIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BsdWdpblR5cGVzOiJwbHVnaW5UeXBlcyIsdGFnRmlsdGVyUmVnZXg6InRhZ0ZpbHRlclJlZ2V4Iix0YWdDb3VudHM6InRhZ0NvdW50cyJ9LGRlY2xzOjYsdmFyczo1LGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKGt1KDAsIk5vIG1hdGNoZXMgZm9yIHRhZyBmaWx0ZXIgIiksUm0oMSwiY29kZSIpLGt1KDIpLEFtKCksUXAoMyxxZ3QsMiwxLCJzcGFuIiwwKSxrdSg0KSxBaCg1LCJudW1iZXIiKSksMiZlJiYocmMoMiksRHUoIi8iLG4udGFnRmlsdGVyUmVnZXgsIi8iKSxyYygxKSxEbSgibmdJZiIsbi5wbHVnaW5UeXBlcy5zaXplKSxyYygxKSxEdSgiIG91dCBvZiAiLFRoKDUsMyxuLnRhZ0NvdW50cyksIiB0YWdzLiIpKX0sZGlyZWN0aXZlczpbZE1dLHBpcGVzOltGTV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChaZ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50Iix0ZW1wbGF0ZTonTm8gbWF0Y2hlcyBmb3IgdGFnIGZpbHRlciA8Y29kZT4ve3sgdGFnRmlsdGVyUmVnZXggfX0vPC9jb2RlXG4gICAgPjxzcGFuICpuZ0lmPSJwbHVnaW5UeXBlcy5zaXplIj5cbiAgICAgIGFuZCB7eyBnZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHBsdWdpblR5cGVzKSB9fSB2aXN1YWxpemF0aW9uXG4gICAgICBmaWx0ZXI8L3NwYW5cbiAgICA+XG4gICAgb3V0IG9mIHt7IHRhZ0NvdW50cyB8IG51bWJlciB9fSB0YWdzLicsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cGx1Z2luVHlwZXM6W3t0eXBlOnh5fV0sdGFnRmlsdGVyUmVnZXg6W3t0eXBlOnh5fV0sdGFnQ291bnRzOlt7dHlwZTp4eX1dfSk7Y2xhc3MgWGd0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBsdWdpblR5cGVzJD10aGlzLnN0b3JlLnNlbGVjdChxVCksdGhpcy50YWdGaWx0ZXJSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoQlQpLHRoaXMudGFnQ291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChqZ3QpLnBpcGUoSXQoKHQ9Pm5ldyBTZXQodC5tYXAoKCh7dGFnOnR9KT0+dCkpKS5zaXplKSkpfX1mdW5jdGlvbiBLZ3QodCxlKXtpZigxJnQmJihSbSgwLCJzcGFuIiw2KSxrdSgxKSxBaCgyLCJudW1iZXIiKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEdSgiIixUaCgyLDEsdC5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCksIiBjYXJkcyIpfX1mdW5jdGlvbiBKZ3QodCxlKXsxJnQmJlRtKDAsIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoIiw3KX1YZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFhndCkoU20oSXcpKX0sWGd0Lsm1Y21wPXRvKHt0eXBlOlhndCxzZWxlY3RvcnM6W1sibWV0cmljcy1lbXB0eS10YWctbWF0Y2giXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicGx1Z2luVHlwZXMiLCJ0YWdGaWx0ZXJSZWdleCIsInRhZ0NvdW50cyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSksMiZlJiZEbSgicGx1Z2luVHlwZXMiLFRoKDEsMyxuLnBsdWdpblR5cGVzJCkpKCJ0YWdGaWx0ZXJSZWdleCIsVGgoMiw1LG4udGFnRmlsdGVyUmVnZXgkKSkoInRhZ0NvdW50cyIsVGgoMyw3LG4udGFnQ291bnRzJCkpfSxkaXJlY3RpdmVzOltaZ3RdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYZ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50XG4gICAgICBbcGx1Z2luVHlwZXNdPSJwbHVnaW5UeXBlcyQgfCBhc3luYyJcbiAgICAgIFt0YWdGaWx0ZXJSZWdleF09InRhZ0ZpbHRlclJlZ2V4JCB8IGFzeW5jIlxuICAgICAgW3RhZ0NvdW50c109InRhZ0NvdW50cyQgfCBhc3luYyJcbiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjbGFzcyBRZ3R7fVFndC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UWd0KX0sUWd0Lsm1Y21wPXRvKHt0eXBlOlFndCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRW1wdHlNYXRjaDoiaXNFbXB0eU1hdGNoIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIndhcm4iLDQsIm5nSWYiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJncm91cC1jYXJkLWNvdW50Il0sWzEsIndhcm4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksUm0oMSwic3BhbiIsMSksUm0oMiwic3BhbiIsMiksa3UoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSxBbSgpLFFwKDQsS2d0LDMsMywic3BhbiIsMyksQW0oKSxBbSgpLFFwKDUsSmd0LDEsMCwibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLDQpLFRtKDYsIm1ldHJpY3MtY2FyZC1ncmlkIiw1KSksMiZlJiYocmMoNCksRG0oIm5nSWYiLG4uY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg+MSkscmMoMSksRG0oIm5nSWYiLG4uaXNFbXB0eU1hdGNoKSxyYygxKSxEbSgiY2FyZElkc1dpdGhNZXRhZGF0YSIsbi5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikpfSxkaXJlY3RpdmVzOltkTSxOZ3QsWGd0XSxwaXBlczpbRk1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfW1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWV0cmljcy1lbXB0eS10YWctbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChRZ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGU6J1xuICAgIDxkaXYgY2xhc3M9Imdyb3VwLXRvb2xiYXIiPlxuICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRleHQiPlxuICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyJcbiAgICAgICAgICA+VGFncyBtYXRjaGluZyBmaWx0ZXI8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8c3BhbiAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggPiAxIiBjbGFzcz0iZ3JvdXAtY2FyZC1jb3VudCJcbiAgICAgICAgICA+e3sgY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggfCBudW1iZXIgfX0gY2FyZHM8L3NwYW5cbiAgICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaFxuICAgICAgKm5nSWY9ImlzRW1wdHlNYXRjaCJcbiAgICAgIGNsYXNzPSJ3YXJuIlxuICAgID48L21ldHJpY3MtZW1wdHktdGFnLW1hdGNoPlxuICAgIDxtZXRyaWNzLWNhcmQtZ3JpZFxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD5cbiAgJyxzdHlsZVVybHM6WyJmaWx0ZXJlZF92aWV3X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtpc0VtcHR5TWF0Y2g6W3t0eXBlOnh5fV0sY2FyZE9ic2VydmVyOlt7dHlwZTp4eX1dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOnh5fV19KTtjbGFzcyAkZ3R7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQ9dGhpcy5zdG9yZS5zZWxlY3Qoamd0KS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KHFUKSksSXQoKChbdCxlXSk9PmUuc2l6ZT90LmZpbHRlcigodD0+ZS5oYXModC5wbHVnaW4pKSk6dCkpLGZlKHRoaXMuc3RvcmUuc2VsZWN0KEJUKSksZ2UoMjAwKSxJdCgoKFt0LGVdKT0+e3RyeXtyZXR1cm57Y2FyZExpc3Q6dCxyZWdleDpuZXcgUmVnRXhwKGUsImkiKX19Y2F0Y2goZSl7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bnVsbH19fSkpLGNlKCgoe3JlZ2V4OnR9KT0+bnVsbCE9PXQpKSxJdCgoKHtjYXJkTGlzdDp0LHJlZ2V4OmV9KT0+dC5maWx0ZXIoKCh7dGFnOnR9KT0+ZS50ZXN0KHQpKSkpKSxNZSgoKHQsZSk9PnQubGVuZ3RoPT09ZS5sZW5ndGgmJnQuZXZlcnkoKCh0LG4pPT50LmNhcmRJZD09PWVbbl0uY2FyZElkKSkpKSxFZSgpLE5lKFtdKSksdGhpcy5pc0VtcHR5TWF0Y2gkPXRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSQucGlwZShmZSh0aGlzLnN0b3JlLnNlbGVjdChqZ3QpKSxJdCgoKFt0LGVdKT0+Qm9vbGVhbihlLmxlbmd0aCkmJjA9PT10Lmxlbmd0aCkpKX19ZnVuY3Rpb24gdGh0KHQsZSl7aWYoMSZ0JiYoUm0oMCwibWF0LW9wdGlvbiIsMiksa3UoMSksQW0oKSksMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0O0RtKCJ2YWx1ZSIsdC52YWx1ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSxyYygxKSxEdSgiICIsdC5kaXNwbGF5VGV4dCwiICIpfX0kZ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fCRndCkoU20oSXcpKX0sJGd0Lsm1Y21wPXRvKHt0eXBlOiRndCxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJpc0VtcHR5TWF0Y2giLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50IiwwKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIikpLDImZSYmRG0oImlzRW1wdHlNYXRjaCIsVGgoMSwzLG4uaXNFbXB0eU1hdGNoJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixUaCgyLDUsbi5jYXJkSWRzV2l0aE1ldGFkYXRhJCkpKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbUWd0XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoJGd0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZmlsdGVyZWQtdmlldyIsdGVtcGxhdGU6J1xuICAgIDxtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50XG4gICAgICBbaXNFbXB0eU1hdGNoXT0iaXNFbXB0eU1hdGNoJCB8IGFzeW5jIlxuICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIlxuICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciJcbiAgICA+PC9tZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSkse2NhcmRPYnNlcnZlcjpbe3R5cGU6eHl9XX0pO2NsYXNzIGVodHtjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9IiIsdGhpcy5vcHRpb25zPVtdLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBMaH19ZnVuY3Rpb24gbmh0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwibWF0LXNsaWRlciIsMjYpLFZtKCJpbnB1dCIsKGZ1bmN0aW9uIGUobil7cmV0dXJuIGhpKHQpLFltKDIpLm9uU3RlcFN0YXJ0Q2hhbmdlZChuLnZhbHVlKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgyKTtEbSgiZGlzYWJsZWQiLCF0LnNlbGVjdFRpbWVFbmFibGVkKSgibWluIix0LnN0ZXBNaW5NYXgubWluKSgibWF4Iix0LnN0ZXBNaW5NYXgubWF4KSgic3RlcCIsMSkoInZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ0aHVtYkxhYmVsIiwhMCl9fWZ1bmN0aW9uIG9odCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsInRiLXJhbmdlLWlucHV0IiwyNyksVm0oInZhbHVlIiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oMikub25TdGVwUmFuZ2VDaGFuZ2VkKG4pfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJtaW4iLHQuc3RlcE1pbk1heC5taW4pKCJtYXgiLHQuc3RlcE1pbk1heC5tYXgpKCJsb3dlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZT9udWxsOnQuc2VsZWN0ZWRUaW1lLnN0YXJ0LnN0ZXApKCJ1cHBlclZhbHVlIixudWxsPT10LnNlbGVjdGVkVGltZXx8bnVsbD09dC5zZWxlY3RlZFRpbWUuZW5kP251bGw6dC5zZWxlY3RlZFRpbWUuZW5kLnN0ZXApLGpwKCJkaXNhYmxlZCIsIXQuc2VsZWN0VGltZUVuYWJsZWQpfX1mdW5jdGlvbiBpaHQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDIxKSxSbSgxLCJsYWJlbCIpLGt1KDIsIkxpbmsgdmlzdWFsaXphdGlvbiBieSBzdGVwIiksQW0oKSxSbSgzLCJkaXYiLDIyKSxSbSg0LCJkaXYiKSxSbSg1LCJtYXQtY2hlY2tib3giLDE1KSxWbSgiY2hhbmdlIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLnNlbGVjdFRpbWVFbmFibGVUb2dnbGVkLmVtaXQoKX0pKSxrdSg2LCJFbmFibGVkIiksQW0oKSxBbSgpLFJtKDcsImRpdiIpLFJtKDgsIm1hdC1jaGVja2JveCIsMTUpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkudXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZC5lbWl0KCl9KSksa3UoOSwiVXNlIHJhbmdlIiksQW0oKSxBbSgpLFJtKDEwLCJkaXYiLDIzKSxRcCgxMSxuaHQsMSw2LCJtYXQtc2xpZGVyIiwyNCksUXAoMTIsb2h0LDEsNSwibmctdGVtcGxhdGUiLG51bGwsMjUsaWIpLEFtKCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD0kcCgxMyksZT1ZbSgpO3JjKDUpLERtKCJjaGVja2VkIixlLnNlbGVjdFRpbWVFbmFibGVkKSxyYygzKSxEbSgiY2hlY2tlZCIsZS51c2VSYW5nZVNlbGVjdFRpbWUpLHJjKDMpLERtKCJuZ0lmIiwhZS51c2VSYW5nZVNlbGVjdFRpbWUpKCJuZ0lmRWxzZSIsdCl9fWZ1bmN0aW9uIGFodCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsInNlY3Rpb24iLDI4KSxSbSgxLCJoMyIsMSksa3UoMiwiSW1hZ2VzIiksQW0oKSxSbSgzLCJkaXYiLDI5KSxSbSg0LCJkaXYiLDMwKSxrdSg1LCJCcmlnaHRuZXNzIiksQW0oKSxSbSg2LCJkaXYiLDkpLFJtKDcsIm1hdC1zbGlkZXIiLDMxKSxWbSgiaW5wdXQiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLmltYWdlQnJpZ2h0bmVzc1NsaWRlckNoYW5nZWQkLmVtaXQobi52YWx1ZSl9KSksQW0oKSxSbSg4LCJidXR0b24iLDMyKSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkuaW1hZ2VCcmlnaHRuZXNzUmVzZXQuZW1pdCgpfSkpLFRtKDksIm1hdC1pY29uIiwzMyksQW0oKSxBbSgpLEFtKCksUm0oMTAsImRpdiIsMzQpLFJtKDExLCJkaXYiLDM1KSxrdSgxMiwiQ29udHJhc3QiKSxBbSgpLFJtKDEzLCJkaXYiLDkpLFJtKDE0LCJtYXQtc2xpZGVyIiwzNiksVm0oImlucHV0IiwoZnVuY3Rpb24gZShuKXtyZXR1cm4gaGkodCksWW0oKS5pbWFnZUNvbnRyYXN0U2xpZGVyQ2hhbmdlZCQuZW1pdChuLnZhbHVlKX0pKSxBbSgpLFJtKDE1LCJidXR0b24iLDM3KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkuaW1hZ2VDb250cmFzdFJlc2V0LmVtaXQoKX0pKSxUbSgxNiwibWF0LWljb24iLDMzKSxBbSgpLEFtKCksQW0oKSxSbSgxNywiZGl2IiwzOCksUm0oMTgsIm1hdC1jaGVja2JveCIsMTUpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKG4pe3JldHVybiBoaSh0KSxZbSgpLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkLmVtaXQobi5jaGVja2VkKX0pKSxrdSgxOSwiU2hvdyBhY3R1YWwgaW1hZ2Ugc2l6ZSIpLEFtKCksQW0oKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO3JjKDcpLERtKCJtYXgiLDJlMykoIm1pbiIsMCkoInN0ZXAiLDEwKSgidmFsdWUiLHQuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSkoInRodW1iTGFiZWwiLCEwKSgiZGlzcGxheVdpdGgiLHQuZm9ybWF0TWlsbGlUb1plcm90aCkscmMoNyksRG0oIm1heCIsNWUzKSgibWluIiwwKSgic3RlcCIsMTApKCJ2YWx1ZSIsdC5pbWFnZUNvbnRyYXN0SW5NaWxsaSkoInRodW1iTGFiZWwiLCEwKSgiZGlzcGxheVdpdGgiLHQuZm9ybWF0TWlsbGlUb1plcm90aCkscmMoNCksRG0oImNoZWNrZWQiLHQuaW1hZ2VTaG93QWN0dWFsU2l6ZSl9fWVodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8ZWh0KX0sZWh0Lsm1Y21wPXRvKHt0eXBlOmVodCxzZWxlY3RvcnM6W1sidGItZHJvcGRvd24iXV0saW5wdXRzOnt2YWx1ZToidmFsdWUiLG9wdGlvbnM6Im9wdGlvbnMifSxvdXRwdXRzOntzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSJ9LGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWzMsInZhbHVlIiwic2VsZWN0aW9uQ2hhbmdlIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSIsImRpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtYXQtc2VsZWN0IiwwKSxWbSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zZWxlY3Rpb25DaGFuZ2UuZW1pdChlLnZhbHVlKX0pKSxRcCgxLHRodCwyLDMsIm1hdC1vcHRpb24iLDEpLEFtKCkpLDImZSYmKERtKCJ2YWx1ZSIsbi52YWx1ZSkscmMoMSksRG0oIm5nRm9yT2YiLG4ub3B0aW9ucykpfSxkaXJlY3RpdmVzOltBRyxsTSxCSF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9bWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjOGU5OGEzO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjZweH1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLXN0eWxlOmF1dG99ICAubWF0LXNlbGVjdC1wYW5lbHttYXgtd2lkdGg6NzB2d30gIG1hdC1vcHRpb24ubWF0LW9wdGlvbntoZWlnaHQ6YXV0b30gIC5tYXQtb3B0aW9uLXRleHR7d2hpdGUtc3BhY2U6bm9ybWFsO3dvcmQtYnJlYWs6YnJlYWstYWxsfSddfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChlaHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGItZHJvcGRvd24iLHRlbXBsYXRlOidcbiAgICA8bWF0LXNlbGVjdFxuICAgICAgW3ZhbHVlXT0idmFsdWUiXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlKT0ic2VsZWN0aW9uQ2hhbmdlLmVtaXQoJGV2ZW50LnZhbHVlKSJcbiAgICA+XG4gICAgICA8bWF0LW9wdGlvblxuICAgICAgICAqbmdGb3I9ImxldCBvcHRpb24gb2Ygb3B0aW9ucyJcbiAgICAgICAgW3ZhbHVlXT0ib3B0aW9uLnZhbHVlIlxuICAgICAgICBbZGlzYWJsZWRdPSJvcHRpb24uZGlzYWJsZWQiXG4gICAgICA+XG4gICAgICAgIHt7IG9wdGlvbi5kaXNwbGF5VGV4dCB9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgJyxzdHlsZVVybHM6WyJkcm9wZG93bl9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse3ZhbHVlOlt7dHlwZTp4eX1dLG9wdGlvbnM6W3t0eXBlOnh5fV0sc2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpPeX1dfSk7Y2xhc3Mgcmh0e2NvbnN0cnVjdG9yKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5zZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZD1uZXcgTGgsdGhpcy51c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkPW5ldyBMaCx0aGlzLnNlbGVjdFRpbWVDaGFuZ2VkPW5ldyBMaCx0aGlzLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zPVt7dmFsdWU6YkEuREVGQVVMVCxkaXNwbGF5VGV4dDoiRGVmYXVsdCJ9LHt2YWx1ZTpiQS5BU0NFTkRJTkcsZGlzcGxheVRleHQ6IkFzY2VuZGluZyJ9LHt2YWx1ZTpiQS5ERVNDRU5ESU5HLGRpc3BsYXlUZXh0OiJEZXNjZW5kaW5nIn0se3ZhbHVlOmJBLk5FQVJFU1QsZGlzcGxheVRleHQ6Ik5lYXJlc3QifV0sdGhpcy50b29sdGlwU29ydENoYW5nZWQ9bmV3IExoLHRoaXMuaWdub3JlT3V0bGllcnNDaGFuZ2VkPW5ldyBMaCx0aGlzLlhBeGlzVHlwZT15QSx0aGlzLlhBeGlzVHlwZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOnlBLlNURVAsZGlzcGxheVRleHQ6IlN0ZXAifSx7dmFsdWU6eUEuUkVMQVRJVkUsZGlzcGxheVRleHQ6IlJlbGF0aXZlIn0se3ZhbHVlOnlBLldBTExfVElNRSxkaXNwbGF5VGV4dDoiV2FsbCJ9XSx0aGlzLnhBeGlzVHlwZUNoYW5nZWQ9bmV3IExoLHRoaXMuSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOnBFLk9GRlNFVCxkaXNwbGF5VGV4dDoiT2Zmc2V0In0se3ZhbHVlOnBFLk9WRVJMQVksZGlzcGxheVRleHQ6Ik92ZXJsYXkifV0sdGhpcy5oaXN0b2dyYW1Nb2RlQ2hhbmdlZD1uZXcgTGgsdGhpcy5NQVhfU01PT1RISU5HX1ZBTFVFPS45OTksdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT0uOTksdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3IExoLHRoaXMuc2NhbGFyU21vb3RoaW5nQ2hhbmdlZD10aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5waXBlKGRlKDI1MCkpLHRoaXMuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ9bmV3IExoLHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3IExoLHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ9dGhpcy5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5waXBlKGRlKDI1MCkpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzUmVzZXQ9bmV3IExoLHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyBMaCx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5waXBlKGRlKDI1MCkpLHRoaXMuaW1hZ2VDb250cmFzdFJlc2V0PW5ldyBMaCx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyBMaH1vblNjYWxhclNtb290aGluZ0lucHV0KHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoIWUudmFsdWUpcmV0dXJuO2NvbnN0IG49TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUZsb2F0KGUudmFsdWUpKSwuOTk5KTtuIT09cGFyc2VGbG9hdChlLnZhbHVlKSYmKGUudmFsdWU9U3RyaW5nKG4pKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KG4pfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIFFDKHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfW9uU3RlcFN0YXJ0Q2hhbmdlZCh0KXt0aGlzLnNlbGVjdFRpbWVDaGFuZ2VkLmVtaXQoe3N0YXJ0OntzdGVwOnR9LGVuZDpudWxsfSl9b25TdGVwUmFuZ2VDaGFuZ2VkKHtsb3dlclZhbHVlOnQsdXBwZXJWYWx1ZTplfSl7dGhpcy5zZWxlY3RUaW1lQ2hhbmdlZC5lbWl0KHtzdGFydDp7c3RlcDp0fSxlbmQ6e3N0ZXA6ZX19KX19cmh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxyaHQpKFNtKFd5KSl9LHJodC7JtWNtcD10byh7dHlwZTpyaHQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOiJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsc2VsZWN0VGltZUVuYWJsZWQ6InNlbGVjdFRpbWVFbmFibGVkIix1c2VSYW5nZVNlbGVjdFRpbWU6InVzZVJhbmdlU2VsZWN0VGltZSIsc2VsZWN0ZWRUaW1lOiJzZWxlY3RlZFRpbWUiLHN0ZXBNaW5NYXg6InN0ZXBNaW5NYXgiLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDoiaXNJbWFnZVN1cHBvcnRFbmFibGVkIix0b29sdGlwU29ydDoidG9vbHRpcFNvcnQiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLGhpc3RvZ3JhbU1vZGU6Imhpc3RvZ3JhbU1vZGUiLHNjYWxhclNtb290aGluZzoic2NhbGFyU21vb3RoaW5nIixzY2FsYXJQYXJ0aXRpb25YOiJzY2FsYXJQYXJ0aXRpb25YIixpbWFnZUJyaWdodG5lc3NJbk1pbGxpOiJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIixpbWFnZUNvbnRyYXN0SW5NaWxsaToiaW1hZ2VDb250cmFzdEluTWlsbGkiLGltYWdlU2hvd0FjdHVhbFNpemU6ImltYWdlU2hvd0FjdHVhbFNpemUifSxvdXRwdXRzOntzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZDoic2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQiLHVzZVJhbmdlU2VsZWN0VGltZVRvZ2dsZWQ6InVzZVJhbmdlU2VsZWN0VGltZVRvZ2dsZWQiLHNlbGVjdFRpbWVDaGFuZ2VkOiJzZWxlY3RUaW1lQ2hhbmdlZCIsdG9vbHRpcFNvcnRDaGFuZ2VkOiJ0b29sdGlwU29ydENoYW5nZWQiLGlnbm9yZU91dGxpZXJzQ2hhbmdlZDoiaWdub3JlT3V0bGllcnNDaGFuZ2VkIix4QXhpc1R5cGVDaGFuZ2VkOiJ4QXhpc1R5cGVDaGFuZ2VkIixoaXN0b2dyYW1Nb2RlQ2hhbmdlZDoiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6InNjYWxhclNtb290aGluZ0NoYW5nZWQiLHNjYWxhclBhcnRpdGlvblhUb2dnbGVkOiJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ6ImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIixpbWFnZUJyaWdodG5lc3NSZXNldDoiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDoiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIixpbWFnZUNvbnRyYXN0UmVzZXQ6ImltYWdlQ29udHJhc3RSZXNldCIsaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQ6ImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIn0sZGVjbHM6MzYsdmFyczoxNyxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJSZXNldCBicmlnaHRuZXNzIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgaW1hZ2UgYnJpZ2h0bmVzcyBzZXR0aW5n4pCfYzQ4MmIzYTQ3ZWEwOTc1ZmE4YmUwMWFmYjNmYmVjOWI3NjYyOGJkN+KQnzExODkxNjE4NTcyNDAzNzgzOTU6UmVzZXQgYnJpZ2h0bmVzc2AsZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiUmVzZXQgY29udHJhc3QiKTokbG9jYWxpemVgOkEgYnV0dG9uIHRvIHJlc2V0IHRoZSBpbWFnZSBjb250cmFzdCBzZXR0aW5n4pCfZWQ3MTJhOGI5MjcwNDFiZTE1MjUyYjI5ZWI1MjFlYmIxMzc0YmFkOOKQnzUzNzA3MDMzNDI5MjM2MTE5NTU6UmVzZXQgY29udHJhc3RgLFtbMSwiZ2VuZXJhbCJdLFsxLCJzZWN0aW9uLXRpdGxlIl0sWzEsImNvbnRyb2wtcm93IiwieC1heGlzLXR5cGUiXSxbImlkIiwieC1heGlzLXR5cGUtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFszLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbImNsYXNzIiwiY29udHJvbC1yb3cgbGlua2VkLXRpbWUiLDQsIm5nSWYiXSxbMSwic2NhbGFycyJdLFsxLCJjb250cm9sLXJvdyIsInNjYWxhcnMtc21vb3RoaW5nIl0sWyJpZCIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbMSwic2xpZGVyLXJvdyJdLFsiYXJpYS1sYWJlbGxlZGJ5Iiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJpbnB1dCJdLFsiYXJpYS1sYWJlbGxlZGJ5Iiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiMCIsInN0ZXAiLCIwLjAwMSIsMSwic2xpZGVyLWlucHV0IiwzLCJtYXgiLCJ2YWx1ZSIsImlucHV0Il0sWzEsImNvbnRyb2wtcm93IiwidG9vbHRpcC1zb3J0Il0sWzEsImNvbnRyb2wtbmFtZSJdLFsxLCJjb250cm9sLXJvdyIsInNjYWxhcnMtaWdub3JlLW91dGxpZXJzIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLXBhcnRpdGlvbi14Il0sWyJzdmdJY29uIiwiaGVscF9vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIk5vbi1tb25vdG9uaWMgc3RlcHMgY2FuIG9jY3VyIHdoZW4gcmV1c2luZyBhIGxvZ2RpciB3aXRoIG11bHRpcGxlIHN1bW1hcnkgd3JpdGVycyBhbmQgb3ZlcmxhcHBpbmcgc3RlcHMuIExpbmUgY2hhcnRzLCB3aXRob3V0IHRoaXMgb3B0aW9uIGVuYWJsZWQsIGNhbiBhcHBlYXIgemlnIHphZ2dlZC4gVGhpcyBpcyBjb21tb24gd2hlbiByZXN0YXJ0aW5nIGZyb20gYSBjaGVja3BvaW50LlxuXG5XaGVuIGVuYWJsZWQsIGEgbm9uLW1vbm90b25pYyB0aW1lIHNlcmllcyBjb21wb3NlZCBvZiBOIG1vbm90b25pYyBwaWVjZXMgd2lsbCBiZSBzaG93biBhcyBOIG1vbm90b25pYyBsaW5lcy4iLDEsImluZm8iXSxbMSwiSGlzdG9ncmFtcyJdLFsxLCJjb250cm9sLXJvdyIsImhpc3RvZ3JhbS1tb2RlIl0sWyJjbGFzcyIsImltYWdlIiw0LCJuZ0lmIl0sWzEsImNvbnRyb2wtcm93IiwibGlua2VkLXRpbWUiXSxbMSwiY29udHJvbHMiXSxbMSwic3RlcC1zZWxlY3RvciJdLFsiY29sb3IiLCJwcmltYXJ5IiwzLCJkaXNhYmxlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJpbnB1dCIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJyYW5nZSIsIiJdLFsiY29sb3IiLCJwcmltYXJ5IiwzLCJkaXNhYmxlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJpbnB1dCJdLFszLCJtaW4iLCJtYXgiLCJsb3dlclZhbHVlIiwidXBwZXJWYWx1ZSIsInZhbHVlIl0sWzEsImltYWdlIl0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2UtYnJpZ2h0bmVzcyJdLFsiaWQiLCJpbWFnZS1icmlnaHRuZXNzLWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbImFyaWEtbGFiZWxsZWRieSIsImltYWdlLWJyaWdodG5lc3MtbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJkaXNwbGF5V2l0aCIsImlucHV0Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LCJ0aXRsZSIsIlJlc2V0IGJyaWdodG5lc3MiLDEsInJlc2V0LWJ1dHRvbiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJzZXR0aW5nc19iYWNrdXBfcmVzdG9yZV8yNHB4Il0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2UtY29udHJhc3QiXSxbImlkIiwiaW1hZ2UtY29uc3RyYXN0LWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbImFyaWEtbGFiZWxsZWRieSIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVzZXQgY29udHJhc3QiLDEsInJlc2V0LWJ1dHRvbiIsMywiY2xpY2siXSxbMSwiY29udHJvbC1yb3ciLCJpbWFnZS1zaG93LWFjdHVhbC1zaXplIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwic2VjdGlvbiIsMCksUm0oMSwiaDMiLDEpLGt1KDIsIkdlbmVyYWwiKSxBbSgpLFJtKDMsImRpdiIsMiksUm0oNCwiZGl2IiwzKSxrdSg1LCJIb3Jpem9udGFsIEF4aXMiKSxBbSgpLFJtKDYsInRiLWRyb3Bkb3duIiw0KSxWbSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi54QXhpc1R5cGVDaGFuZ2VkLmVtaXQoZSl9KSksQW0oKSxBbSgpLFFwKDcsaWh0LDE0LDQsImRpdiIsNSksQW0oKSxSbSg4LCJzZWN0aW9uIiw2KSxSbSg5LCJoMyIsMSksa3UoMTAsIlNjYWxhcnMiKSxBbSgpLFJtKDExLCJkaXYiLDcpLFJtKDEyLCJkaXYiLDgpLGt1KDEzLCJTbW9vdGhpbmciKSxBbSgpLFJtKDE0LCJkaXYiLDkpLFJtKDE1LCJtYXQtc2xpZGVyIiwxMCksVm0oImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQuZW1pdChlLnZhbHVlKX0pKSxBbSgpLFJtKDE2LCJpbnB1dCIsMTEpLFZtKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY2FsYXJTbW9vdGhpbmdJbnB1dChlKX0pKSxBbSgpLEFtKCksQW0oKSxSbSgxNywiZGl2IiwxMiksUm0oMTgsImRpdiIsMTMpLGt1KDE5LCJUb29sdGlwIHNvcnRpbmcgbWV0aG9kIiksQW0oKSxSbSgyMCwidGItZHJvcGRvd24iLDQpLFZtKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLnRvb2x0aXBTb3J0Q2hhbmdlZC5lbWl0KGUpfSkpLEFtKCksQW0oKSxSbSgyMSwiZGl2IiwxNCksUm0oMjIsIm1hdC1jaGVja2JveCIsMTUpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmlnbm9yZU91dGxpZXJzQ2hhbmdlZC5lbWl0KGUuY2hlY2tlZCl9KSksa3UoMjMsIklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nIiksQW0oKSxBbSgpLFJtKDI0LCJkaXYiLDE2KSxSbSgyNSwibWF0LWNoZWNrYm94IiwxNSksVm0oImNoYW5nZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5zY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZC5lbWl0KCl9KSksa3UoMjYsIlBhcnRpdGlvbiBub24tbW9ub3RvbmljIFggYXhpcyIpLEFtKCksVG0oMjcsIm1hdC1pY29uIiwxNyksQW0oKSxBbSgpLFJtKDI4LCJzZWN0aW9uIiwxOCksUm0oMjksImgzIiwxKSxrdSgzMCwiSGlzdG9ncmFtcyIpLEFtKCksUm0oMzEsImRpdiIsMTkpLFJtKDMyLCJkaXYiLDEzKSxrdSgzMywiTW9kZSIpLEFtKCksUm0oMzQsInRiLWRyb3Bkb3duIiw0KSxWbSgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5oaXN0b2dyYW1Nb2RlQ2hhbmdlZC5lbWl0KGUpfSkpLEFtKCksQW0oKSxBbSgpLFFwKDM1LGFodCwyMCwxMywic2VjdGlvbiIsMjApKSwyJmUmJihyYyg2KSxEbSgidmFsdWUiLG4ueEF4aXNUeXBlKSgib3B0aW9ucyIsbi5YQXhpc1R5cGVEcm9wZG93bk9wdGlvbnMpLHJjKDEpLERtKCJuZ0lmIixuLmlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJiZuLnhBeGlzVHlwZT09bi5YQXhpc1R5cGUuU1RFUCkscmMoOCksRG0oIm1heCIsbi5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRSkoIm1pbiIsMCkoInN0ZXAiLC4wMSkoInZhbHVlIixuLnNjYWxhclNtb290aGluZykoInRodW1iTGFiZWwiLCEwKSxyYygxKSxEbSgibWF4IixuLk1BWF9TTU9PVEhJTkdfVkFMVUUpKCJ2YWx1ZSIsbi5zY2FsYXJTbW9vdGhpbmcpLHJjKDQpLERtKCJ2YWx1ZSIsbi50b29sdGlwU29ydCkoIm9wdGlvbnMiLG4uVG9vbHRpcFNvcnREcm9wZG93bk9wdGlvbnMpLHJjKDIpLERtKCJjaGVja2VkIixuLmlnbm9yZU91dGxpZXJzKSxyYygzKSxEbSgiY2hlY2tlZCIsbi5zY2FsYXJQYXJ0aXRpb25YKSxyYyg5KSxEbSgidmFsdWUiLG4uaGlzdG9ncmFtTW9kZSkoIm9wdGlvbnMiLG4uSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucykscmMoMSksRG0oIm5nSWYiLG4uaXNJbWFnZVN1cHBvcnRFbmFibGVkKSl9LGRpcmVjdGl2ZXM6W2VodCxkTSxSWCxPWSxEVyxEMSxYSF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxMnB4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO3BhZGRpbmc6MTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW46MCAwIDEycHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZWN0aW9uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRyb2wtcm93W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1ib3R0b206MTJweH0uY29udHJvbC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjhweH0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjhweH0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAucmVzZXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDo2cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlcjoxcHggc29saWQgIzhlOThhMztib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDoxMnB4O3BhZGRpbmc6MCA0cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNDI1MDY2fS5zY2FsYXJzLXNtb290aGluZ1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7d2lkdGg6NWVtfS5zY2FsYXJzLXBhcnRpdGlvbi14W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5zY2FsYXJzLXBhcnRpdGlvbi14W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTVweDttYXJnaW4tbGVmdDo1cHg7d2lkdGg6MTVweH1tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjE7bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6LThweH10Yi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVdICAgLnN0ZXAtc2VsZWN0b3JbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MCAxMHB4fS5saW5rZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV0gICBtYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmxpbmtlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRiLXJhbmdlLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5saW5rZWQtdGltZVtfbmdjb250ZW50LSVDT01QJV0gICAuY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6NXB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChyaHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoic2V0dGluZ3Nfdmlld19jb21wb25lbnQubmcuaHRtbCIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaCxzdHlsZVVybHM6WyJzZXR0aW5nc192aWV3X2NvbXBvbmVudC5jc3MiXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltXeV19XX1dfSkse2lzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkOlt7dHlwZTp4eX1dLHNlbGVjdFRpbWVFbmFibGVkOlt7dHlwZTp4eX1dLHVzZVJhbmdlU2VsZWN0VGltZTpbe3R5cGU6eHl9XSxzZWxlY3RlZFRpbWU6W3t0eXBlOnh5fV0sc3RlcE1pbk1heDpbe3R5cGU6eHl9XSxzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZDpbe3R5cGU6T3l9XSx1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkOlt7dHlwZTpPeX1dLHNlbGVjdFRpbWVDaGFuZ2VkOlt7dHlwZTpPeX1dLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDpbe3R5cGU6eHl9XSx0b29sdGlwU29ydDpbe3R5cGU6eHl9XSx0b29sdGlwU29ydENoYW5nZWQ6W3t0eXBlOk95fV0saWdub3JlT3V0bGllcnM6W3t0eXBlOnh5fV0saWdub3JlT3V0bGllcnNDaGFuZ2VkOlt7dHlwZTpPeX1dLHhBeGlzVHlwZTpbe3R5cGU6eHl9XSx4QXhpc1R5cGVDaGFuZ2VkOlt7dHlwZTpPeX1dLGhpc3RvZ3JhbU1vZGU6W3t0eXBlOnh5fV0saGlzdG9ncmFtTW9kZUNoYW5nZWQ6W3t0eXBlOk95fV0sc2NhbGFyU21vb3RoaW5nOlt7dHlwZTp4eX1dLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6W3t0eXBlOk95fV0sc2NhbGFyUGFydGl0aW9uWDpbe3R5cGU6eHl9XSxzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZDpbe3R5cGU6T3l9XSxpbWFnZUJyaWdodG5lc3NJbk1pbGxpOlt7dHlwZTp4eX1dLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOlt7dHlwZTpPeX1dLGltYWdlQnJpZ2h0bmVzc1Jlc2V0Olt7dHlwZTpPeX1dLGltYWdlQ29udHJhc3RJbk1pbGxpOlt7dHlwZTp4eX1dLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDpbe3R5cGU6T3l9XSxpbWFnZUNvbnRyYXN0UmVzZXQ6W3t0eXBlOk95fV0saW1hZ2VTaG93QWN0dWFsU2l6ZTpbe3R5cGU6eHl9XSxpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIHNodHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoaUUpLHRoaXMuc2VsZWN0VGltZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGpUKSx0aGlzLnVzZVJhbmdlU2VsZWN0VGltZSQ9dGhpcy5zdG9yZS5zZWxlY3QoVVQpLHRoaXMuc2VsZWN0ZWRUaW1lJD10aGlzLnN0b3JlLnNlbGVjdChXVCksdGhpcy5zdGVwTWluTWF4JD10aGlzLnN0b3JlLnNlbGVjdChHVCksdGhpcy5pc0ltYWdlU3VwcG9ydEVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHFEKS5waXBlKGNlKEJvb2xlYW4pLGJlKDEpLFZlKHRoaXMuc3RvcmUuc2VsZWN0KG9FKSksSXQoKChbLHRdKT0+dCkpKSx0aGlzLnRvb2x0aXBTb3J0JD10aGlzLnN0b3JlLnNlbGVjdChSVCksdGhpcy5pZ25vcmVPdXRsaWVycyQ9dGhpcy5zdG9yZS5zZWxlY3QoQVQpLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChUVCksdGhpcy5oaXN0b2dyYW1Nb2RlJD10aGlzLnN0b3JlLnNlbGVjdChOVCksdGhpcy5zY2FsYXJTbW9vdGhpbmckPXRoaXMuc3RvcmUuc2VsZWN0KHpUKSx0aGlzLnNjYWxhclBhcnRpdGlvblgkPXRoaXMuc3RvcmUuc2VsZWN0KElUKSx0aGlzLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KEhUKSx0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChGVCksdGhpcy5pbWFnZVNob3dBY3R1YWxTaXplJD10aGlzLnN0b3JlLnNlbGVjdChMVCl9b25Ub29sdGlwU29ydENoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChMRSh7c29ydDp0fSkpfW9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChCRSgpKX1vblhBeGlzVHlwZUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChWRSh7eEF4aXNUeXBlOnR9KSl9b25IaXN0b2dyYW1Nb2RlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFhFKHtoaXN0b2dyYW1Nb2RlOnR9KSl9b25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goakUoe3Ntb290aGluZzp0fSkpfW9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFVFKCkpfW9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChHRSh7YnJpZ2h0bmVzc0luTWlsbGk6dH0pKX1vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChZRSgpKX1vbkltYWdlQ29udHJhc3RSZXNldCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocUUoKSl9b25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChXRSh7Y29udHJhc3RJbk1pbGxpOnR9KSl9b25JbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWkUoKSl9b25TZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2gobFIoKSl9b25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChjUigpKX1vblNlbGVjdFRpbWVDaGFuZ2VkKHQpe3ZhciBlO3RoaXMuc3RvcmUuZGlzcGF0Y2goclIoe3N0YXJ0U3RlcDp0LnN0YXJ0LnN0ZXAsZW5kU3RlcDpudWxsPT09KGU9dC5lbmQpfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnN0ZXB9KSl9fXNodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8c2h0KShTbShJdykpfSxzaHQuybVjbXA9dG8oe3R5cGU6c2h0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyJdXSxkZWNsczoxNix2YXJzOjQ1LGNvbnN0czpbWzMsImlzSW1hZ2VTdXBwb3J0RW5hYmxlZCIsInRvb2x0aXBTb3J0IiwiaWdub3JlT3V0bGllcnMiLCJ4QXhpc1R5cGUiLCJoaXN0b2dyYW1Nb2RlIiwic2NhbGFyU21vb3RoaW5nIiwic2NhbGFyUGFydGl0aW9uWCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaSIsImltYWdlU2hvd0FjdHVhbFNpemUiLCJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsInNlbGVjdFRpbWVFbmFibGVkIiwic2VsZWN0ZWRUaW1lIiwidXNlUmFuZ2VTZWxlY3RUaW1lIiwic3RlcE1pbk1heCIsInRvb2x0aXBTb3J0Q2hhbmdlZCIsImlnbm9yZU91dGxpZXJzQ2hhbmdlZCIsInhBeGlzVHlwZUNoYW5nZWQiLCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsInNjYWxhclNtb290aGluZ0NoYW5nZWQiLCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQiLCJpbWFnZUNvbnRyYXN0UmVzZXQiLCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsInNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIiwidXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZCIsInNlbGVjdFRpbWVDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnQiLDApLFZtKCJ0b29sdGlwU29ydENoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uVG9vbHRpcFNvcnRDaGFuZ2VkKGUpfSkpKCJpZ25vcmVPdXRsaWVyc0NoYW5nZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKX0pKSgieEF4aXNUeXBlQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25YQXhpc1R5cGVDaGFuZ2VkKGUpfSkpKCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25IaXN0b2dyYW1Nb2RlQ2hhbmdlZChlKX0pKSgic2NhbGFyU21vb3RoaW5nQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKGUpfSkpKCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblNjYWxhclBhcnRpdGlvblhUb2dnbGVkKCl9KSkoImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vbkltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkKGUpfSkpKCJpbWFnZUJyaWdodG5lc3NSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl9KSkoImltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQoZSl9KSkoImltYWdlQ29udHJhc3RSZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlQ29udHJhc3RSZXNldCgpfSkpKCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCl9KSkoInNlbGVjdFRpbWVFbmFibGVUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKX0pKSgidXNlUmFuZ2VTZWxlY3RUaW1lVG9nZ2xlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblVzZVJhbmdlU2VsZWN0VGltZVRvZ2dsZWQoKX0pKSgic2VsZWN0VGltZUNoYW5nZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uU2VsZWN0VGltZUNoYW5nZWQoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxBaCg4LCJhc3luYyIpLEFoKDksImFzeW5jIiksQWgoMTAsImFzeW5jIiksQWgoMTEsImFzeW5jIiksQWgoMTIsImFzeW5jIiksQWgoMTMsImFzeW5jIiksQWgoMTQsImFzeW5jIiksQWgoMTUsImFzeW5jIiksQW0oKSksMiZlJiZEbSgiaXNJbWFnZVN1cHBvcnRFbmFibGVkIixUaCgxLDE1LG4uaXNJbWFnZVN1cHBvcnRFbmFibGVkJCkpKCJ0b29sdGlwU29ydCIsVGgoMiwxNyxuLnRvb2x0aXBTb3J0JCkpKCJpZ25vcmVPdXRsaWVycyIsVGgoMywxOSxuLmlnbm9yZU91dGxpZXJzJCkpKCJ4QXhpc1R5cGUiLFRoKDQsMjEsbi54QXhpc1R5cGUkKSkoImhpc3RvZ3JhbU1vZGUiLFRoKDUsMjMsbi5oaXN0b2dyYW1Nb2RlJCkpKCJzY2FsYXJTbW9vdGhpbmciLFRoKDYsMjUsbi5zY2FsYXJTbW9vdGhpbmckKSkoInNjYWxhclBhcnRpdGlvblgiLFRoKDcsMjcsbi5zY2FsYXJQYXJ0aXRpb25YJCkpKCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIixUaCg4LDI5LG4uaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQpKSgiaW1hZ2VDb250cmFzdEluTWlsbGkiLFRoKDksMzEsbi5pbWFnZUNvbnRyYXN0SW5NaWxsaSQpKSgiaW1hZ2VTaG93QWN0dWFsU2l6ZSIsVGgoMTAsMzMsbi5pbWFnZVNob3dBY3R1YWxTaXplJCkpKCJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsVGgoMTEsMzUsbi5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQpKSgic2VsZWN0VGltZUVuYWJsZWQiLFRoKDEyLDM3LG4uc2VsZWN0VGltZUVuYWJsZWQkKSkoInNlbGVjdGVkVGltZSIsVGgoMTMsMzksbi5zZWxlY3RlZFRpbWUkKSkoInVzZVJhbmdlU2VsZWN0VGltZSIsVGgoMTQsNDEsbi51c2VSYW5nZVNlbGVjdFRpbWUkKSkoInN0ZXBNaW5NYXgiLFRoKDE1LDQzLG4uc3RlcE1pbk1heCQpKX0sZGlyZWN0aXZlczpbcmh0XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoc2h0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzIix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudFxuICAgICAgW2lzSW1hZ2VTdXBwb3J0RW5hYmxlZF09ImlzSW1hZ2VTdXBwb3J0RW5hYmxlZCQgfCBhc3luYyJcbiAgICAgIFt0b29sdGlwU29ydF09InRvb2x0aXBTb3J0JCB8IGFzeW5jIlxuICAgICAgKHRvb2x0aXBTb3J0Q2hhbmdlZCk9Im9uVG9vbHRpcFNvcnRDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbaWdub3JlT3V0bGllcnNdPSJpZ25vcmVPdXRsaWVycyQgfCBhc3luYyJcbiAgICAgIChpZ25vcmVPdXRsaWVyc0NoYW5nZWQpPSJvbklnbm9yZU91dGxpZXJzQ2hhbmdlZCgpIlxuICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyJcbiAgICAgICh4QXhpc1R5cGVDaGFuZ2VkKT0ib25YQXhpc1R5cGVDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbaGlzdG9ncmFtTW9kZV09Imhpc3RvZ3JhbU1vZGUkIHwgYXN5bmMiXG4gICAgICAoaGlzdG9ncmFtTW9kZUNoYW5nZWQpPSJvbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKCRldmVudCkiXG4gICAgICBbc2NhbGFyU21vb3RoaW5nXT0ic2NhbGFyU21vb3RoaW5nJCB8IGFzeW5jIlxuICAgICAgKHNjYWxhclNtb290aGluZ0NoYW5nZWQpPSJvblNjYWxhclNtb290aGluZ0NoYW5nZWQoJGV2ZW50KSJcbiAgICAgIFtzY2FsYXJQYXJ0aXRpb25YXT0ic2NhbGFyUGFydGl0aW9uWCQgfCBhc3luYyJcbiAgICAgIChzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCk9Im9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKSJcbiAgICAgIFtpbWFnZUJyaWdodG5lc3NJbk1pbGxpXT0iaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQgfCBhc3luYyJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQoJGV2ZW50KSJcbiAgICAgIChpbWFnZUJyaWdodG5lc3NSZXNldCk9Im9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKSJcbiAgICAgIFtpbWFnZUNvbnRyYXN0SW5NaWxsaV09ImltYWdlQ29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIlxuICAgICAgKGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCk9Im9uSW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKCRldmVudCkiXG4gICAgICAoaW1hZ2VDb250cmFzdFJlc2V0KT0ib25JbWFnZUNvbnRyYXN0UmVzZXQoKSJcbiAgICAgIFtpbWFnZVNob3dBY3R1YWxTaXplXT0iaW1hZ2VTaG93QWN0dWFsU2l6ZSQgfCBhc3luYyJcbiAgICAgIChpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCk9Im9uSW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQoKSJcbiAgICAgIFtpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZF09ImlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdFRpbWVFbmFibGVkXT0ic2VsZWN0VGltZUVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBbc2VsZWN0ZWRUaW1lXT0ic2VsZWN0ZWRUaW1lJCB8IGFzeW5jIlxuICAgICAgW3VzZVJhbmdlU2VsZWN0VGltZV09InVzZVJhbmdlU2VsZWN0VGltZSQgfCBhc3luYyJcbiAgICAgIFtzdGVwTWluTWF4XT0ic3RlcE1pbk1heCQgfCBhc3luYyJcbiAgICAgIChzZWxlY3RUaW1lRW5hYmxlVG9nZ2xlZCk9Im9uU2VsZWN0VGltZUVuYWJsZVRvZ2dsZWQoKSJcbiAgICAgICh1c2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKT0ib25Vc2VSYW5nZVNlbGVjdFRpbWVUb2dnbGVkKCkiXG4gICAgICAoc2VsZWN0VGltZUNoYW5nZWQpPSJvblNlbGVjdFRpbWVDaGFuZ2VkKCRldmVudCkiXG4gICAgPlxuICAgIDwvbWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgbGh0e31mdW5jdGlvbiBjaHQodCxlKXsxJnQmJlRtKDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsOSksMiZ0JiZEbSgiY2FyZE9ic2VydmVyIixZbSgpLmNhcmRPYnNlcnZlcil9ZnVuY3Rpb24gZGh0KHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwxMiksVG0oMSwibWF0LXNwaW5uZXIiLDEzKSxBbSgpKX1mdW5jdGlvbiBwaHQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDE0KSxSbSgxLCJkaXYiLDE1KSxSbSgyLCJoMiIsMTYpLGt1KDMsIlNldHRpbmdzIiksQW0oKSxSbSg0LCJidXR0b24iLDE3KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZC5lbWl0KCl9KSksVG0oNSwibWF0LWljb24iLDE4KSxBbSgpLEFtKCksVG0oNiwibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSIpLEFtKCl9fWxodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bGh0KX0sbGh0Lsm1Y21wPXRvKHt0eXBlOmxodCxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZUbSgwLCJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIpfSxkaXJlY3RpdmVzOltzaHRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobGh0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkLXJpZ2h0LXBhbmUiLHRlbXBsYXRlOiI8bWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3M+PC9tZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncz4iLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwsbnVsbCk7Y29uc3QgbWh0PWZ1bmN0aW9uKHQpe3JldHVybntjaGVja2VkOnQsInNldHRpbmdzLWJ1dHRvbiI6ITB9fTtjbGFzcyB1aHR7Y29uc3RydWN0b3IodCl7dGhpcy5ob3N0PXQsdGhpcy5vblNldHRpbmdzQnV0dG9uQ2xpY2tlZD1uZXcgTGgsdGhpcy5vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkPW5ldyBMaCx0aGlzLm9uUGx1Z2luVHlwZVRvZ2dsZWQ9bmV3IExoLHRoaXMub25QbHVnaW5UeXBlQWxsVG9nZ2xlZD1uZXcgTGgsdGhpcy5QbHVnaW5UeXBlPWhBLHRoaXMuY2FyZE9ic2VydmVyPW5ldyBwMih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwiNjAwcHggMHB4IDYwMHB4IDBweCIpfX11aHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHVodCkoU20oaGcpKX0sdWh0Lsm1Y21wPXRvKHt0eXBlOnVodCxzZWxlY3RvcnM6W1sibWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50Il1dLGlucHV0czp7c2hvd0ZpbHRlcmVkVmlldzoic2hvd0ZpbHRlcmVkVmlldyIsaXNTaWRlcGFuZU9wZW46ImlzU2lkZXBhbmVPcGVuIixmaWx0ZXJlZFBsdWdpblR5cGVzOiJmaWx0ZXJlZFBsdWdpblR5cGVzIixpbml0aWFsVGFnc0xvYWRpbmc6ImluaXRpYWxUYWdzTG9hZGluZyJ9LG91dHB1dHM6e29uU2V0dGluZ3NCdXR0b25DbGlja2VkOiJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCIsb25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZDoib25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCIsb25QbHVnaW5UeXBlVG9nZ2xlZDoib25QbHVnaW5UeXBlVG9nZ2xlZCIsb25QbHVnaW5UeXBlQWxsVG9nZ2xlZDoib25QbHVnaW5UeXBlQWxsVG9nZ2xlZCJ9LGRlY2xzOjIyLHZhcnM6MjEsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZTtyZXR1cm4gdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIHNldHRpbmdzIHNpZGUgcGFuZSIpOiRsb2NhbGl6ZWA6TGFiZWwgb24gYSB0b29sYmFyIGJ1dHRvbiB0byB0b2dnbGUgdGhlIHNldHRpbmdzIHNpZGUgcGFuZS7ikJ9kMzUxNmRiNmJiZTY4NjBhNTViZWFiNjZlNDk2OWRhYzYyNWI4ZDcy4pCfNzY1OTI4NTQ0NTU4MDgzODkyNTpUb2dnbGUgc2V0dGluZ3Mgc2lkZSBwYW5lYCxlPSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJDbG9zZSBzaWRlIHBhbmUiKTokbG9jYWxpemVgOkxhYmVsIG9uIGEgYnV0dG9uIHRvIGNsb3NlIHRoZSBzZXR0aW5ncyBzaWRlIHBhbmUu4pCfMDQ1MjFkYzBiNmE2NWNmNWMzODI5NDRjOWE4YjRiODQ0YTNlOTU5OOKQnzgxNTY3NjY5OTc3NDcxNjU4NzE6Q2xvc2Ugc2lkZSBwYW5lYCxbWzEsInRvb2xiYXIiXSxbIm11bHRpcGxlIiwiIiwiYXBwZWFyYW5jZSIsInN0YW5kYXJkIiwxLCJmaWx0ZXItdmlldyJdLFszLCJjaGVja2VkIiwiY2xpY2siXSxbMSwicmlnaHQtaXRlbXMiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywibmdDbGFzcyIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdLFsxLCJzcGxpdC1jb250ZW50Il0sWyJjZGtTY3JvbGxhYmxlIiwiIl0sWzMsImNhcmRPYnNlcnZlciIsNCwibmdJZiJdLFszLCJjYXJkT2JzZXJ2ZXIiXSxbImNsYXNzIiwibG9hZGluZy1jb250YWluZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2lkZWJhciIsNCwibmdJZiJdLFsxLCJsb2FkaW5nLWNvbnRhaW5lciJdLFsiZGlhbWV0ZXIiLCIzNiJdLFsxLCJzaWRlYmFyIl0sWzEsImhlYWRlciJdLFsxLCJ0aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDApLFRtKDEsIm1ldHJpY3MtdGFnLWZpbHRlciIpLFJtKDIsIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwxKSxSbSgzLCJtYXQtYnV0dG9uLXRvZ2dsZSIsMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQuZW1pdCgpfSkpLGt1KDQsIiBBbGwgIiksQW0oKSxSbSg1LCJtYXQtYnV0dG9uLXRvZ2dsZSIsMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuU0NBTEFSUyl9KSksa3UoNiwiIFNjYWxhcnMgIiksQW0oKSxSbSg3LCJtYXQtYnV0dG9uLXRvZ2dsZSIsMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuSU1BR0VTKX0pKSxrdSg4LCIgSW1hZ2UgIiksQW0oKSxSbSg5LCJtYXQtYnV0dG9uLXRvZ2dsZSIsMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChuLlBsdWdpblR5cGUuSElTVE9HUkFNUyl9KSksa3UoMTAsIiBIaXN0b2dyYW0gIiksQW0oKSxBbSgpLFJtKDExLCJkaXYiLDMpLFJtKDEyLCJidXR0b24iLDQpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblNldHRpbmdzQnV0dG9uQ2xpY2tlZC5lbWl0KCl9KSksVG0oMTMsIm1hdC1pY29uIiw1KSxrdSgxNCwiIFNldHRpbmdzICIpLEFtKCksQW0oKSxBbSgpLFJtKDE1LCJkaXYiLDYpLFJtKDE2LCJkaXYiLDcpLFFwKDE3LGNodCwxLDEsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsOCksVG0oMTgsIm1ldHJpY3MtcGlubmVkLXZpZXciLDkpLFFwKDE5LGRodCwyLDAsImRpdiIsMTApLFRtKDIwLCJtZXRyaWNzLWNhcmQtZ3JvdXBzIiw5KSxBbSgpLFFwKDIxLHBodCw3LDAsImRpdiIsMTEpLEFtKCkpLDImZSYmKHJjKDMpLERtKCJjaGVja2VkIiwwPT09bi5maWx0ZXJlZFBsdWdpblR5cGVzLnNpemUpLHJjKDIpLERtKCJjaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5TQ0FMQVJTKSkscmMoMiksRG0oImNoZWNrZWQiLG4uZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMobi5QbHVnaW5UeXBlLklNQUdFUykpLHJjKDIpLERtKCJjaGVja2VkIixuLmZpbHRlcmVkUGx1Z2luVHlwZXMuaGFzKG4uUGx1Z2luVHlwZS5ISVNUT0dSQU1TKSkscmMoMyksRG0oIm5nQ2xhc3MiLE1oKDE5LG1odCxuLmlzU2lkZXBhbmVPcGVuKSksanAoImFyaWEtcHJlc3NlZCIsbi5pc1NpZGVwYW5lT3BlbikscmMoNCkscHUoIm1haW4iLCEwKSgiZmlsdGVyLXZpZXciLG4uc2hvd0ZpbHRlcmVkVmlldykscmMoMSksRG0oIm5nSWYiLG4uc2hvd0ZpbHRlcmVkVmlldykscmMoMSksZHUoImRpc3BsYXkiLG4uc2hvd0ZpbHRlcmVkVmlldz8ibm9uZSI6IiIpLERtKCJjYXJkT2JzZXJ2ZXIiLG4uY2FyZE9ic2VydmVyKSxyYygxKSxEbSgibmdJZiIsbi5pbml0aWFsVGFnc0xvYWRpbmcpLHJjKDEpLGR1KCJkaXNwbGF5IixuLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxEbSgiY2FyZE9ic2VydmVyIixuLmNhcmRPYnNlcnZlcikscmMoMSksRG0oIm5nSWYiLG4uaXNTaWRlcGFuZU9wZW4pKX0sZGlyZWN0aXZlczpbeDIsRTIsQTIsWEgsYU0sRFcsbUYsZE0sQmd0LFlndCwkZ3QsbzEsbGh0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZmxleDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXRhZy1maWx0ZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDEwMHB4fS50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yaWdodC1pdGVtc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7bWFyZ2luLWxlZnQ6MTZweDtwYWRkaW5nLWxlZnQ6MTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MjVweDtmb250LXNpemU6MTJweH0uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtsaW5lLWhlaWdodDoyNXB4fS5zcGxpdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7b3ZlcmZsb3cteTphdXRvO2ZsZXg6MX0ubWFpbltfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOnN0cmljdDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0ubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjVmNmY3O2ZsZXg6MSAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojM2EzYTNhfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtZmlsdGVyZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXBpbm5lZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5tYWluLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59Lm1haW4uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmNvbnRlbnQ7b3ZlcmZsb3c6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5sb2FkaW5nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDB9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6MCAwIDI1MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW46MH1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmlubGluZS1mbGV4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItY29sb3I6I2UwZTBlMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzIxMjEyMX1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAgIC5tYXQtYnV0dG9uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9W19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo0cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHVodCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJtYWluX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIm1haW5fdmlld19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfV19KSx7c2hvd0ZpbHRlcmVkVmlldzpbe3R5cGU6eHl9XSxpc1NpZGVwYW5lT3Blbjpbe3R5cGU6eHl9XSxmaWx0ZXJlZFBsdWdpblR5cGVzOlt7dHlwZTp4eX1dLGluaXRpYWxUYWdzTG9hZGluZzpbe3R5cGU6eHl9XSxvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDpbe3R5cGU6T3l9XSxvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkOlt7dHlwZTpPeX1dLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6W3t0eXBlOk95fV0sb25QbHVnaW5UeXBlQWxsVG9nZ2xlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIGZodHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc1NpZGVwYW5lT3BlbiQ9dGhpcy5zdG9yZS5zZWxlY3QoWFQpLHRoaXMuaW5pdGlhbFRhZ3NMb2FkaW5nJD10aGlzLnN0b3JlLnNlbGVjdCh1VCkucGlwZShIZSgodD0+bnVsbD09PXQubGFzdExvYWRlZFRpbWVJbk1zKSwhMCksSXQoKHQ9PnQuc3RhdGU9PT15RS5MT0FESU5HJiZudWxsPT09dC5sYXN0TG9hZGVkVGltZUluTXMpKSksdGhpcy5zaG93RmlsdGVyZWRWaWV3JD10aGlzLnN0b3JlLnNlbGVjdChCVCkucGlwZShJdCgodD0+dC5sZW5ndGg+MCkpKSx0aGlzLmZpbHRlcmVkUGx1Z2luVHlwZXMkPXRoaXMuc3RvcmUuc2VsZWN0KHFUKX1vblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goekUoKSl9b25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTkUoKSl9b25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGlSKHtwbHVnaW46dH0pKX1vblNob3dBbGxQbHVnaW5zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChhUigpKX19Zmh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxmaHQpKFNtKEl3KSl9LGZodC7JtWNtcD10byh7dHlwZTpmaHQsc2VsZWN0b3JzOltbIm1ldHJpY3MtbWFpbi12aWV3Il1dLGRlY2xzOjUsdmFyczoxMixjb25zdHM6W1szLCJzaG93RmlsdGVyZWRWaWV3IiwiaXNTaWRlcGFuZU9wZW4iLCJpbml0aWFsVGFnc0xvYWRpbmciLCJmaWx0ZXJlZFBsdWdpblR5cGVzIiwib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLCJvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkIiwib25QbHVnaW5UeXBlVG9nZ2xlZCIsIm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCIsMCksVm0oIm9uU2V0dGluZ3NCdXR0b25DbGlja2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl9KSkoIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpfSkpKCJvblBsdWdpblR5cGVUb2dnbGVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblBsdWdpblZpc2liaWxpdHlUb2dnbGVkKGUpfSkpKCJvblBsdWdpblR5cGVBbGxUb2dnbGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uU2hvd0FsbFBsdWdpbnMoKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQWgoMywiYXN5bmMiKSxBaCg0LCJhc3luYyIpLEFtKCkpLDImZSYmRG0oInNob3dGaWx0ZXJlZFZpZXciLFRoKDEsNCxuLnNob3dGaWx0ZXJlZFZpZXckKSkoImlzU2lkZXBhbmVPcGVuIixUaCgyLDYsbi5pc1NpZGVwYW5lT3BlbiQpKSgiaW5pdGlhbFRhZ3NMb2FkaW5nIixUaCgzLDgsbi5pbml0aWFsVGFnc0xvYWRpbmckKSkoImZpbHRlcmVkUGx1Z2luVHlwZXMiLFRoKDQsMTAsbi5maWx0ZXJlZFBsdWdpblR5cGVzJCkpfSxkaXJlY3RpdmVzOlt1aHRdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChmaHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1tYWluLXZpZXciLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50XG4gICAgICBbc2hvd0ZpbHRlcmVkVmlld109InNob3dGaWx0ZXJlZFZpZXckIHwgYXN5bmMiXG4gICAgICBbaXNTaWRlcGFuZU9wZW5dPSJpc1NpZGVwYW5lT3BlbiQgfCBhc3luYyJcbiAgICAgIFtpbml0aWFsVGFnc0xvYWRpbmddPSJpbml0aWFsVGFnc0xvYWRpbmckIHwgYXN5bmMiXG4gICAgICBbZmlsdGVyZWRQbHVnaW5UeXBlc109ImZpbHRlcmVkUGx1Z2luVHlwZXMkIHwgYXN5bmMiXG4gICAgICAob25TZXR0aW5nc0J1dHRvbkNsaWNrZWQpPSJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpIlxuICAgICAgKG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQpPSJvbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCkiXG4gICAgICAob25QbHVnaW5UeXBlVG9nZ2xlZCk9Im9uUGx1Z2luVmlzaWJpbGl0eVRvZ2dsZWQoJGV2ZW50KSJcbiAgICAgIChvblBsdWdpblR5cGVBbGxUb2dnbGVkKT0ib25TaG93QWxsUGx1Z2lucygpIlxuICAgID48L21ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IGdodD1uZXcgR2EoIltNZXRyaWNzXSBNRVRSSUNTX1Byb21vIE1lc3NhZ2UgQ29tcG9uZW50Iik7ZnVuY3Rpb24gaGh0KHQsZSl7MSZ0JiYoTm0oMCksWG0oMSksem0oKSl9Y2xhc3MgYmh0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9ZX1uZ09uSW5pdCgpe2lmKHRoaXMuY3VzdG9taXphYmxlQ29tcG9uZW50KXtjb25zdCB0PXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY3VzdG9taXphYmxlQ29tcG9uZW50LmNvbnN0cnVjdG9yKTt0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHQpfX19Ymh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxiaHQpKFNtKGVoKSxTbSh1ZykpfSxiaHQuybVjbXA9dG8oe3R5cGU6Ymh0LHNlbGVjdG9yczpbWyJ0Yi1jdXN0b21pemF0aW9uIl1dLGlucHV0czp7Y3VzdG9taXphYmxlQ29tcG9uZW50OiJjdXN0b21pemFibGVDb21wb25lbnQifSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MSx2YXJzOjEsY29uc3RzOltbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoWm0oKSxRcCgwLGhodCwyLDAsIm5nLWNvbnRhaW5lciIsMCkpLDImZSYmRG0oIm5nSWYiLCFuLmN1c3RvbWl6YWJsZUNvbXBvbmVudCl9LGRpcmVjdGl2ZXM6W2RNXSxlbmNhcHN1bGF0aW9uOjJ9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGJodCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ0Yi1jdXN0b21pemF0aW9uIix0ZW1wbGF0ZTonXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj0iIWN1c3RvbWl6YWJsZUNvbXBvbmVudCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICd9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTplaH0se3R5cGU6dWd9XX0pLHtjdXN0b21pemFibGVDb21wb25lbnQ6W3t0eXBlOnh5fV19KTtjbGFzcyB5aHR7Y29uc3RydWN0b3IodCl7dGhpcy5jdXN0b21Qcm9tb01lc3NhZ2U9dCx0aGlzLm9uRGlzbWlzcz1uZXcgTGgsdGhpcy5vbkdvVG9TY2FsYXJzPW5ldyBMaH19eWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5aHQpKFNtKGdodCw4KSl9LHlodC7JtWNtcD10byh7dHlwZTp5aHQsc2VsZWN0b3JzOltbIm1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCJdXSxvdXRwdXRzOntvbkRpc21pc3M6Im9uRGlzbWlzcyIsb25Hb1RvU2NhbGFyczoib25Hb1RvU2NhbGFycyJ9LGRlY2xzOjcsdmFyczoxLGNvbnN0czpbWzEsIm1lc3NhZ2UiLDMsImN1c3RvbWl6YWJsZUNvbXBvbmVudCJdLFsxLCJnby10by1zY2FsYXJzIiwzLCJjbGljayJdLFsxLCJkaXNtaXNzIiwzLCJjbGljayJdLFsiaW5saW5lIiwiIiwic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsInRiLWN1c3RvbWl6YXRpb24iLDApLGt1KDEsIiBXZWxjb21lIHRvIG5ldyBkZWZhdWx0IGV4cGVyaWVuY2Ugb2YgVGVuc29yQm9hcmQuIFRpbWUgU2VyaWVzIGxldHMgeW91IHZpZXcgYWxsIHZpc3VhbGl6YXRpb25zIGF0IG9uY2UsIHB1dCB0aGVtIHNpZGUtYnktc2lkZSB3aXRoIHBpbnMsIGFuZCBjdXN0b21pemUgY29sb3JzLiBTY2FsYXJzIGFuZCBvdGhlciBwbHVnaW5zIGFyZSBzdGlsbCBhdmFpbGFibGUuICIpLFJtKDIsImJ1dHRvbiIsMSksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uR29Ub1NjYWxhcnMuZW1pdCgpfSkpLGt1KDMsIiBHbyB0byBTY2FsYXJzIHBsdWdpbiIpLEFtKCksa3UoNCwiLlxuIiksQW0oKSxSbSg1LCJidXR0b24iLDIpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRpc21pc3MuZW1pdCgpfSkpLFRtKDYsIm1hdC1pY29uIiwzKSxBbSgpKSwyJmUmJkRtKCJjdXN0b21pemFibGVDb21wb25lbnQiLG4uY3VzdG9tUHJvbW9NZXNzYWdlKX0sZGlyZWN0aXZlczpbYmh0LERXXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTRweDtnYXA6NXB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2xpbmUtaGVpZ2h0OjIwcHg7cGFkZGluZzo1cHggMTBweH1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjtmb250OmluaGVyaXQ7cGFkZGluZzowfWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX10Yi1jdXN0b21pemF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzE5NzZkMn0uZGlzbWlzc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpiYXNlbGluZTtmbGV4Om5vbmU7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeWh0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Im1ldHJpY3NfcHJvbW9fbm90aWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJtZXRyaWNzX3Byb21vX25vdGljZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFhLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltnaHRdfV19XX0pLHtvbkRpc21pc3M6W3t0eXBlOk95fV0sb25Hb1RvU2NhbGFyczpbe3R5cGU6T3l9XX0pO2NsYXNzIF9odHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXR9b25EaXNtaXNzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChkUigpKX1vbkdvVG9TY2FsYXJzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChwUigpKX19ZnVuY3Rpb24gQ2h0KHQsZSl7MSZ0JiZUbSgwLCJtZXRyaWNzLXByb21vLW5vdGljZSIsMyl9X2h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfaHQpKFNtKEl3KSl9LF9odC7JtWNtcD10byh7dHlwZTpfaHQsc2VsZWN0b3JzOltbIm1ldHJpY3MtcHJvbW8tbm90aWNlIl1dLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWzMsIm9uRGlzbWlzcyIsIm9uR29Ub1NjYWxhcnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlLWNvbXBvbmVudCIsMCksVm0oIm9uRGlzbWlzcyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkRpc21pc3MoKX0pKSgib25Hb1RvU2NhbGFycyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkdvVG9TY2FsYXJzKCl9KSksQW0oKSl9LGRpcmVjdGl2ZXM6W3lodF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChfaHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1wcm9tby1ub3RpY2UiLHRlbXBsYXRlOic8bWV0cmljcy1wcm9tby1ub3RpY2UtY29tcG9uZW50XG4gICAgKG9uRGlzbWlzcyk9Im9uRGlzbWlzcygpIlxuICAgIChvbkdvVG9TY2FsYXJzKT0ib25Hb1RvU2NhbGFycygpIlxuICA+PC9tZXRyaWNzLXByb21vLW5vdGljZS1jb21wb25lbnQ+JyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIE1odHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0J1dHRlckJhckVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGFFKS5waXBlKGZlKHRoaXMuc3RvcmUuc2VsZWN0KFpUKSksSXQoKChbdCxlXSk9PnQmJmUpKSl9fU1odC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8TWh0KShTbShJdykpfSxNaHQuybVjbXA9dG8oe3R5cGU6TWh0LHNlbGVjdG9yczpbWyJtZXRyaWNzLWRhc2hib2FyZCJdXSxkZWNsczo1LHZhcnM6Myxjb25zdHM6W1siY2xhc3MiLCJub3RpY2UiLDQsIm5nSWYiXSxbInNpZGViYXIiLCIiXSxbIm1haW4iLCIiXSxbMSwibm90aWNlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihRcCgwLENodCwxLDAsIm1ldHJpY3MtcHJvbW8tbm90aWNlIiwwKSxBaCgxLCJhc3luYyIpLFJtKDIsInRiLWRhc2hib2FyZC1sYXlvdXQiKSxUbSgzLCJydW5zLXNlbGVjdG9yIiwxKSxUbSg0LCJtZXRyaWNzLW1haW4tdmlldyIsMiksQW0oKSksMiZlJiZEbSgibmdJZiIsVGgoMSwxLG4uaXNCdXR0ZXJCYXJFbmFibGVkJCkpfSxkaXJlY3RpdmVzOltkTSxNUSxjMixmaHQsX2h0XSxwaXBlczpbd01dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6c3RyZXRjaDtvdmVyZmxvdzpoaWRkZW59Lm5vdGljZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNDUsMTU3LC44NSk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ZmZWIzYjtjb2xvcjojMjEyMTIxO2Rpc3BsYXk6YmxvY2s7ZmxleDowIDB9dGItZGFzaGJvYXJkLWxheW91dFtfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDE7b3ZlcmZsb3c6aGlkZGVufW5hdltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yaWdodDoxcHggc29saWQgI2ViZWJlYjtmbGV4Om5vbmU7d2lkdGg6MzQwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbmF2W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbmF2W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzA7Ym9yZGVyLXJpZ2h0LWNvbG9yOiM1NTV9bWV0cmljcy1tYWluLXZpZXdbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChNaHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1kYXNoYm9hcmQiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljcy1wcm9tby1ub3RpY2VcbiAgICAgICpuZ0lmPSJpc0J1dHRlckJhckVuYWJsZWQkIHwgYXN5bmMiXG4gICAgICBjbGFzcz0ibm90aWNlIlxuICAgID48L21ldHJpY3MtcHJvbW8tbm90aWNlPlxuICAgIDx0Yi1kYXNoYm9hcmQtbGF5b3V0PlxuICAgICAgPHJ1bnMtc2VsZWN0b3Igc2lkZWJhcj48L3J1bnMtc2VsZWN0b3I+XG4gICAgICA8bWV0cmljcy1tYWluLXZpZXcgbWFpbj48L21ldHJpY3MtbWFpbi12aWV3PlxuICAgIDwvdGItZGFzaGJvYXJkLWxheW91dD5cbiAgJyxzdHlsZVVybHM6WyJtZXRyaWNzX2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIHZodHt9dmh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx2aHQpfSx2aHQuybVtb2Q9YW8oe3R5cGU6dmh0fSksdmh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sRVcsSkhdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodmh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltNUV0sZXhwb3J0czpbTVFdLGltcG9ydHM6W1dNLEVXLEpIXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHZodCx7ZGVjbGFyYXRpb25zOltNUV0saW1wb3J0czpbV00sRVcsSkhdLGV4cG9ydHM6W01RXX0pO2NsYXNzIHhodHt9eGh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4aHQpfSx4aHQuybVtb2Q9YW8oe3R5cGU6eGh0fSkseGh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeGh0LFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbV01dLGRlY2xhcmF0aW9uczpbYmh0XSxleHBvcnRzOltiaHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oeGh0LHtkZWNsYXJhdGlvbnM6W2JodF0saW1wb3J0czpbV01dLGV4cG9ydHM6W2JodF19KTtjbGFzcyBPaHR7fU9odC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8T2h0KX0sT2h0Lsm1bW9kPWFvKHt0eXBlOk9odH0pLE9odC7JtWluaj12bih7aW1wb3J0czpbW1dNLFkwLEVXXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKE9odCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbcTBdLGV4cG9ydHM6W3EwXSxpbXBvcnRzOltXTSxZMCxFV119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhPaHQse2RlY2xhcmF0aW9uczpbcTBdLGltcG9ydHM6W1dNLFkwLEVXXSxleHBvcnRzOltxMF19KTtjbGFzcyBQaHR7fVBodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UGh0KX0sUGh0Lsm1bW9kPWFvKHt0eXBlOlBodH0pLFBodC7JtWluaj12bih7aW1wb3J0czpbW1dNXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFBodCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1dNXSxleHBvcnRzOltEMV0sZGVjbGFyYXRpb25zOltEMV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhQaHQse2RlY2xhcmF0aW9uczpbRDFdLGltcG9ydHM6W1dNXSxleHBvcnRzOltEMV19KTtjbGFzcyB3aHR7fXdodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d2h0KX0sd2h0Lsm1bW9kPWFvKHt0eXBlOndodH0pLHdodC7JtWluaj12bih7aW1wb3J0czpbW3kzLFdNLE9odCxUVixKSCxTWSxkVyxCWSxFVyxvWSxlJCxpMSx1JCx3MCxQaHQsSkxdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgod2h0LFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbeTMsV00sT2h0LFRWLEpILFNZLGRXLEJZLEVXLG9ZLGUkLGkxLHUkLHcwLFBodCxKTF0sZXhwb3J0czpbczJdLGVudHJ5Q29tcG9uZW50czpbaDFdLGRlY2xhcmF0aW9uczpbZzEsaDEsUDEsdzEsbzIsczJdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8od2h0LHtkZWNsYXJhdGlvbnM6W2cxLGgxLFAxLHcxLG8yLHMyXSxpbXBvcnRzOlt5MyxXTSxPaHQsVFYsSkgsU1ksZFcsQlksRVcsb1ksZSQsaTEsdSQsdzAsUGh0LEpMXSxleHBvcnRzOltzMl19KTtjbGFzcyBraHR7fWtodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8a2h0KX0sa2h0Lsm1bW9kPWFvKHt0eXBlOmtodH0pLGtodC7JtWluaj12bih7aW1wb3J0czpbW1dNLHdodF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChraHQsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltXTSx3aHRdLGV4cG9ydHM6W2MyXSxkZWNsYXJhdGlvbnM6W2wyLGMyXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKGtodCx7ZGVjbGFyYXRpb25zOltsMixjMl0saW1wb3J0czpbV00sd2h0XSxleHBvcnRzOltjMl19KTtjbGFzcyBTaHR7fVNodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8U2h0KX0sU2h0Lsm1bW9kPWFvKHt0eXBlOlNodH0pLFNodC7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChTaHQsW3t0eXBlOkF5LGFyZ3M6W3tleHBvcnRzOltOZnRdLGRlY2xhcmF0aW9uczpbTmZ0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFNodCx7ZGVjbGFyYXRpb25zOltOZnRdLGV4cG9ydHM6W05mdF19KTtjbGFzcyBEaHR7fURodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8RGh0KX0sRGh0Lsm1bW9kPWFvKHt0eXBlOkRodH0pLERodC7JtWluaj12bih7aW1wb3J0czpbW1dNXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKERodCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbaGZ0XSxleHBvcnRzOltoZnRdLGltcG9ydHM6W1dNXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKERodCx7ZGVjbGFyYXRpb25zOltoZnRdLGltcG9ydHM6W1dNXSxleHBvcnRzOltoZnRdfSk7Y2xhc3MgRWh0e31FaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEVodCl9LEVodC7JtW1vZD1hbyh7dHlwZTpFaHR9KSxFaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxWSixTaHQsRGh0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEVodCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbdGd0XSxleHBvcnRzOlt0Z3RdLGltcG9ydHM6W1dNLFZKLFNodCxEaHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oRWh0LHtkZWNsYXJhdGlvbnM6W3RndF0saW1wb3J0czpbV00sVkosU2h0LERodF0sZXhwb3J0czpbdGd0XX0pO2NsYXNzIFJodHt9Umh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxSaHQpfSxSaHQuybVtb2Q9YW8oe3R5cGU6Umh0fSksUmh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUmh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOlt6Ml0sZXhwb3J0czpbejJdLGltcG9ydHM6W1dNXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFJodCx7ZGVjbGFyYXRpb25zOlt6Ml0saW1wb3J0czpbV01dLGV4cG9ydHM6W3oyXX0pO2NsYXNzIEFodHt9QWh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBaHQpfSxBaHQuybVtb2Q9YW8oe3R5cGU6QWh0fSksQWh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQWh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltMMixGMl0sZXhwb3J0czpbTDJdLGltcG9ydHM6W1dNXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEFodCx7ZGVjbGFyYXRpb25zOltMMixGMl0saW1wb3J0czpbV01dLGV4cG9ydHM6W0wyXX0pO2NsYXNzIFRodHt9VGh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxUaHQpfSxUaHQuybVtb2Q9YW8oe3R5cGU6VGh0fSksVGh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sRVddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoVGh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltnZnRdLGV4cG9ydHM6W2dmdF0saW1wb3J0czpbV00sRVddfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVGh0LHtkZWNsYXJhdGlvbnM6W2dmdF0saW1wb3J0czpbV00sRVddLGV4cG9ydHM6W2dmdF19KTtjbGFzcyBOaHR7fU5odC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Tmh0KX0sTmh0Lsm1bW9kPWFvKHt0eXBlOk5odH0pLE5odC7JtWluaj12bih7aW1wb3J0czpbW1dNLEVodCxKSCxFVyxpMSxBaHQsUmh0LFRodF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChOaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W21ndCxwZ3RdLGV4cG9ydHM6W21ndF0saW1wb3J0czpbV00sRWh0LEpILEVXLGkxLEFodCxSaHQsVGh0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKE5odCx7ZGVjbGFyYXRpb25zOlttZ3QscGd0XSxpbXBvcnRzOltXTSxFaHQsSkgsRVcsaTEsQWh0LFJodCxUaHRdLGV4cG9ydHM6W21ndF19KTtjbGFzcyB6aHR7fXpodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8emh0KX0semh0Lsm1bW9kPWFvKHt0eXBlOnpodH0pLHpodC7JtWluaj12bih7aW1wb3J0czpbW1dNLEpILEVXLGkxLHpYLEFodCxSaHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoemh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltYMixaMl0sZXhwb3J0czpbWDJdLGltcG9ydHM6W1dNLEpILEVXLGkxLHpYLEFodCxSaHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oemh0LHtkZWNsYXJhdGlvbnM6W1gyLFoyXSxpbXBvcnRzOltXTSxKSCxFVyxpMSx6WCxBaHQsUmh0XSxleHBvcnRzOltYMl19KTtjbGFzcyBJaHR7fUlodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SWh0KX0sSWh0Lsm1bW9kPWFvKHt0eXBlOklodH0pLElodC7JtWluaj12bih7aW1wb3J0czpbW1dNLHlMLEpILEVXLEJZLG9ZXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElodCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbWHV0LFV1dCxFdXRdLGV4cG9ydHM6W1h1dCxVdXQsRXV0XSxpbXBvcnRzOltXTSx5TCxKSCxFVyxCWSxvWV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhJaHQse2RlY2xhcmF0aW9uczpbWHV0LFV1dCxFdXRdLGltcG9ydHM6W1dNLHlMLEpILEVXLEJZLG9ZXSxleHBvcnRzOltYdXQsVXV0LEV1dF19KTtjbGFzcyBIaHR7fUhodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SGh0KX0sSGh0Lsm1bW9kPWFvKHt0eXBlOkhodH0pLEhodC7JtWluaj12bih7aW1wb3J0czpbW1dNLHlMLElodCxWSl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChIaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2ZmdF0sZXhwb3J0czpbZmZ0XSxpbXBvcnRzOltXTSx5TCxJaHQsVkpdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oSGh0LHtkZWNsYXJhdGlvbnM6W2ZmdF0saW1wb3J0czpbV00seUwsSWh0LFZKXSxleHBvcnRzOltmZnRdfSk7Y2xhc3MgRmh0e31GaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEZodCl9LEZodC7JtW1vZD1hbyh7dHlwZTpGaHR9KSxGaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjRyxKSCxkVyxCWSxURyxlVF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChGaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2w1LHM1XSxleHBvcnRzOltsNV0saW1wb3J0czpbV00sY0csSkgsZFcsQlksVEcsZVRdLGVudHJ5Q29tcG9uZW50czpbbDVdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oRmh0LHtkZWNsYXJhdGlvbnM6W2w1LHM1XSxpbXBvcnRzOltXTSxjRyxKSCxkVyxCWSxURyxlVF0sZXhwb3J0czpbbDVdfSk7Y2xhc3MgTGh0e31MaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExodCl9LExodC7JtW1vZD1hbyh7dHlwZTpMaHR9KSxMaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxGaHQsU2h0LEhodCxEaHQsSkgsRVcsb1ksaTEsVkosUmh0LFRodF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChMaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0lmdCxUZnRdLGV4cG9ydHM6W0lmdF0saW1wb3J0czpbV00sRmh0LFNodCxIaHQsRGh0LEpILEVXLG9ZLGkxLFZKLFJodCxUaHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oTGh0LHtkZWNsYXJhdGlvbnM6W0lmdCxUZnRdLGltcG9ydHM6W1dNLEZodCxTaHQsSGh0LERodCxKSCxFVyxvWSxpMSxWSixSaHQsVGh0XSxleHBvcnRzOltJZnRdfSk7Y2xhc3MgQmh0e31CaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJodCl9LEJodC7JtW1vZD1hbyh7dHlwZTpCaHR9KSxCaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSx6aHQsTGh0LE5odCxTaHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoQmh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOlttMix5Z3QsX2d0XSxleHBvcnRzOlttMixfZ3RdLGltcG9ydHM6W1dNLHpodCxMaHQsTmh0LFNodF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhCaHQse2RlY2xhcmF0aW9uczpbbTIseWd0LF9ndF0saW1wb3J0czpbV00semh0LExodCxOaHQsU2h0XSxleHBvcnRzOlttMixfZ3RdfSk7Y2xhc3MgVmh0e31WaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZodCl9LFZodC7JtW1vZD1hbyh7dHlwZTpWaHR9KSxWaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxUR11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2VodF0sZXhwb3J0czpbZWh0XSxpbXBvcnRzOltXTSxUR119XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhWaHQse2RlY2xhcmF0aW9uczpbZWh0XSxpbXBvcnRzOltXTSxUR10sZXhwb3J0czpbZWh0XX0pO2NsYXNzIGpodHt9amh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxqaHQpfSxqaHQuybVtb2Q9YW8oe3R5cGU6amh0fSksamh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sVmh0LEpILFQyLFNZLEVXLFRHLHpYLHRULFBodF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChqaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2xodCxyaHQsc2h0XSxleHBvcnRzOltsaHRdLGltcG9ydHM6W1dNLFZodCxKSCxUMixTWSxFVyxURyx6WCx0VCxQaHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oamh0LHtkZWNsYXJhdGlvbnM6W2xodCxyaHQsc2h0XSxpbXBvcnRzOltXTSxWaHQsSkgsVDIsU1ksRVcsVEcselgsdFQsUGh0XSxleHBvcnRzOltsaHRdfSk7Y2xhc3MgVWh0e31VaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFVodCl9LFVodC7JtW1vZD1hbyh7dHlwZTpVaHR9KSxVaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tCaHQsV00sT2h0LFkwLEpILFQyLEVXLEJZLGkxLGpodCxfRl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVaHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1RndCxOZ3QsV2d0LFlndCxaZ3QsWGd0LFFndCwkZ3QsdWh0LGZodCx2Mix4MixMZ3QsQmd0XSxleHBvcnRzOltmaHRdLGltcG9ydHM6W0JodCxXTSxPaHQsWTAsSkgsVDIsRVcsQlksaTEsamh0LF9GXX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFVodCx7ZGVjbGFyYXRpb25zOltUZ3QsTmd0LFdndCxZZ3QsWmd0LFhndCxRZ3QsJGd0LHVodCxmaHQsdjIseDIsTGd0LEJndF0saW1wb3J0czpbQmh0LFdNLE9odCxZMCxKSCxUMixFVyxCWSxpMSxqaHQsX0ZdLGV4cG9ydHM6W2ZodF19KTtjbGFzcyBHaHR7fWZ1bmN0aW9uIFdodCgpe3JldHVyblt7YWN0aW9uQ3JlYXRvcjpvUixhbGVydEZyb21BY3Rpb246dD0+e2NvbnN0e3dhc1Bpbm5lZDplLGNhbkNyZWF0ZU5ld1BpbnM6bn09dDtyZXR1cm4gZXx8bj9udWxsOntsb2NhbGl6ZWRNZXNzYWdlOiJNYXggcGluIGxpbWl0IGV4Y2VlZGVkLiBSZW1vdmUgZXhpc3RpbmcgcGlucyBiZWZvcmUgYWRkaW5nIG1vcmUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvNDI0MiJ9fX1dfWZ1bmN0aW9uIFlodCgpe3JldHVybiBadyh6VCwodD0+KHtzY2FsYXJTbW9vdGhpbmc6dH0pKSl9ZnVuY3Rpb24gcWh0KCl7cmV0dXJuIFp3KEFULCh0PT4oe2lnbm9yZU91dGxpZXJzOnR9KSkpfWZ1bmN0aW9uIFpodCgpe3JldHVybiBadyhSVCwodD0+KHt0b29sdGlwU29ydFN0cmluZzpTdHJpbmcodCl9KSkpfWZ1bmN0aW9uIFhodCgpe3JldHVybiBadyhaVCwodD0+KHt0aW1lU2VyaWVzUHJvbW90aW9uRGlzbWlzc2VkOiF0fSkpKX1mdW5jdGlvbiBLaHQoKXtyZXR1cm4gWncoWFQsKHQ9Pih7dGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZDp0fSkpKX1HaHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEdodCl9LEdodC7JtW1vZD1hbyh7dHlwZTpHaHR9KSxHaHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSx4aHQsdmh0LFVodCxFVyxqaHQsa2h0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEdodCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbTWh0LHlodCxfaHRdLGV4cG9ydHM6W01odF0saW1wb3J0czpbV00seGh0LHZodCxVaHQsRVcsamh0LGtodF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhHaHQse2RlY2xhcmF0aW9uczpbTWh0LHlodCxfaHRdLGltcG9ydHM6W1dNLHhodCx2aHQsVWh0LEVXLGpodCxraHRdLGV4cG9ydHM6W01odF19KTtjbGFzcyBKaHR7fUpodC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Smh0KX0sSmh0Lsm1bW9kPWFvKHt0eXBlOkpodH0pLEpodC7JtWluaj12bih7cHJvdmlkZXJzOlt7cHJvdmlkZTptUSx1c2VGYWN0b3J5OmZRLGRlcHM6W3VRXX0se3Byb3ZpZGU6dVEsdXNlVmFsdWU6cFR9XSxpbXBvcnRzOltbV00sQlMsRVIsd3EuZm9yUGx1Z2luKF9BLE1odCksZVQsR2h0LGRrLmZvckZlYXR1cmUoZFQsclEsbVEpLFdrLmZvckZlYXR1cmUoW3BRXSksQVIucmVnaXN0ZXJBbGVydEFjdGlvbnMoV2h0KSxxUy5kZWZpbmVHbG9iYWxTZXR0aW5nKFlodCkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhxaHQpLHFTLmRlZmluZUdsb2JhbFNldHRpbmcoWmh0KSxxUy5kZWZpbmVHbG9iYWxTZXR0aW5nKFhodCkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhLaHQpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEpodCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1dNLEJTLEVSLHdxLmZvclBsdWdpbihfQSxNaHQpLGVULEdodCxkay5mb3JGZWF0dXJlKGRULHJRLG1RKSxXay5mb3JGZWF0dXJlKFtwUV0pLEFSLnJlZ2lzdGVyQWxlcnRBY3Rpb25zKFdodCkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhZaHQpLHFTLmRlZmluZUdsb2JhbFNldHRpbmcocWh0KSxxUy5kZWZpbmVHbG9iYWxTZXR0aW5nKFpodCkscVMuZGVmaW5lR2xvYmFsU2V0dGluZyhYaHQpLHFTLmRlZmluZUdsb2JhbFNldHRpbmcoS2h0KV0scHJvdmlkZXJzOlt7cHJvdmlkZTptUSx1c2VGYWN0b3J5OmZRLGRlcHM6W3VRXX0se3Byb3ZpZGU6dVEsdXNlVmFsdWU6cFR9XSxlbnRyeUNvbXBvbmVudHM6W01odF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhKaHQse2ltcG9ydHM6W1dNLEJTLEVSLHdxLGVULEdodCxjayxHayxBUixxUyxxUyxxUyxxUyxxU119KTtjb25zdCBRaHQ9Im5wbWkiO3ZhciAkaHQsdGJ0LGVidCxuYnQ7IShmdW5jdGlvbih0KXt0W3QuQU5EPTBdPSJBTkQifSkoJGh0fHwoJGh0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5NRVRSSUM9MF09Ik1FVFJJQyIsdFt0Lk9QRVJBVE9SPTFdPSJPUEVSQVRPUiJ9KSh0YnR8fCh0YnQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRFRkFVTFQ9MF09IkRFRkFVTFQiLHRbdC5FTUJFRERJTkdTPTFdPSJFTUJFRERJTkdTIn0pKGVidHx8KGVidD17fSkpLChmdW5jdGlvbih0KXt0W3QuREVTQ0VORElORz0wXT0iREVTQ0VORElORyIsdFt0LkFTQ0VORE5HPTFdPSJBU0NFTkRORyIsdFt0LlNJTUlMQVI9Ml09IlNJTUlMQVIiLHRbdC5ESVNTSU1JTEFSPTNdPSJESVNTSU1JTEFSIn0pKG5idHx8KG5idD17fSkpO2NsYXNzIG9idHt9b2J0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxvYnQpfSxvYnQuybVjbXA9dG8oe3R5cGU6b2J0LHNlbGVjdG9yczpbWyJucG1pLWluYWN0aXZlLXZpZXciXV0sZGVjbHM6Nix2YXJzOjAsY29uc3RzOltbMSwiY29udGFpbmVyIl0sWzEsInRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiKSxSbSgxLCJkaXYiLDApLFJtKDIsImRpdiIsMSksa3UoMywiblBNSSBpcyBpbmFjdGl2ZSBiZWNhdXNlIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiIpLEFtKCksUm0oNCwiZGl2Iiksa3UoNSwiIFRvIHVzZSB0aGUgblBNSSwgY2FsY3VsYXRlIG5QTUkgdmFsdWVzLCBhbmQgbG9nIHRoZW0gdXNpbmcgdGhlIHN1bW1hcnkgd3JpdGVyLiAiKSxBbSgpLEFtKCksQW0oKSl9LHN0eWxlczpbIi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE1cHg7XG4gIHBhZGRpbmc6IDUwcHg7XG59XG5cbi50aXRsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDEzNSU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChvYnQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1pbmFjdGl2ZS12aWV3Iix0ZW1wbGF0ZVVybDoiLi9pbmFjdGl2ZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9pbmFjdGl2ZV9jb21wb25lbnQuY3NzIl19XX1dLG51bGwsbnVsbCk7Y29uc3QgaWJ0PUt3KFFodCksYWJ0PVp3KGlidCwodD0+dC5wbHVnaW5EYXRhTG9hZGVkLnN0YXRlKSkscmJ0PVp3KGlidCwodD0+dC5hbm5vdGF0aW9uRGF0YSkpLHNidD1adyhpYnQsKHQ9PnQucnVuVG9NZXRyaWNzKSksbGJ0PVp3KGlidCwodD0+dC5lbWJlZGRpbmdEYXRhU2V0KSksY2J0PVp3KGlidCwodD0+dC5zZWxlY3RlZEFubm90YXRpb25zKSksZGJ0PVp3KGlidCwodD0+dC5mbGFnZ2VkQW5ub3RhdGlvbnMpKSxwYnQ9WncoaWJ0LCh0PT50LmhpZGRlbkFubm90YXRpb25zKSksbWJ0PVp3KGlidCwodD0+dC5hbm5vdGF0aW9uc1JlZ2V4KSksdWJ0PVp3KGlidCwodD0+dC5tZXRyaWNzUmVnZXgpKSxmYnQ9WncoaWJ0LCh0PT50Lm1ldHJpY0FyaXRobWV0aWMpKSxnYnQ9WncoaWJ0LCh0PT50Lm1ldHJpY0ZpbHRlcnMpKSxoYnQ9WncoaWJ0LCh0PT50LnNvcnQpKSxiYnQ9WncoaWJ0LCh0PT50LnBjRXhwYW5kZWQpKSx5YnQ9WncoaWJ0LCh0PT50LmFubm90YXRpb25zRXhwYW5kZWQpKSxfYnQ9WncoaWJ0LCh0PT50LnNpZGViYXJFeHBhbmRlZCkpLENidD1adyhpYnQsKHQ9PnQuc2hvd0NvdW50cykpLE1idD1adyhpYnQsKHQ9PnQuc2hvd0hpZGRlbkFubm90YXRpb25zKSksdmJ0PVp3KGlidCwodD0+dC52aWV3QWN0aXZlKSkseGJ0PVp3KGlidCwodD0+dC5zaWRlYmFyV2lkdGgpKSxPYnQ9WncoaWJ0LCh0PT50LmVtYmVkZGluZ3NNZXRyaWMpKSxQYnQ9WncoaWJ0LCh0PT50LmVtYmVkZGluZ3NTaWRlYmFyV2lkdGgpKSx3YnQ9WncoaWJ0LCh0PT50LmVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQpKSxrYnQ9SlAoIltOUE1JXSBuUE1JIExvYWRlZCIpLFNidD1KUCgiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgUmVxdWVzdGVkIiksRGJ0PUpQKCJbTlBNSV0gblBNSSBQbHVnaW4gRGF0YSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxFYnQ9SlAoIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3QgRmFpbGVkIiksUmJ0PUpQKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gU2VsZWN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxBYnQ9SlAoIltOUE1JXSBBbm5vdGF0aW9ucyBTZXQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxUYnQ9SlAoIltOUE1JXSBDbGVhcmluZyB0aGUgQW5ub3RhdGlvbiBTZWxlY3Rpb24iKSxOYnQ9SlAoIltOUE1JXSBBZGRpbmcvUmVtb3ZpbmcgQW5ub3RhdGlvbnMgdG8vZnJvbSBGbGFnZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksemJ0PUpQKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gSGlkZGVuIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksSWJ0PUpQKCJbTlBNSV0gQW5ub3RhdGlvbnMgUmVnZXggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEhidD1KUCgiW05QTUldIE1ldHJpY3MgUmVnZXggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEZidD1KUCgiW05QTUldIE1ldHJpYyBGaWx0ZXIgQWRkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxMYnQ9SlAoIltOUE1JXSBNZXRyaWMgRmlsdGVyIFJlbW92ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxCYnQ9SlAoIltOUE1JXSBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxWYnQ9SlAoIltOUE1JXSBBbm5vdGF0aW9uIFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGpidD1KUCgiW05QTUldIFNpbWlsYXJpdHkgU29ydCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksVWJ0PUpQKCJbTlBNSV0gVG9nZ2xlIFBDIEV4cGFuZGVkIiksR2J0PUpQKCJbTlBNSV0gVG9nZ2xlIEFubm90YXRpb25zIEV4cGFuZGVkIiksV2J0PUpQKCJbTlBNSV0gVG9nZ2xlIFNpZGViYXIgRXhwYW5kZWQiKSxZYnQ9SlAoIltOUE1JXSBTaG93IENvdW50cyBUb2dnbGVkIikscWJ0PUpQKCJbTlBNSV0gU2hvdyBIaWRkZW4gQW5ub3RhdGlvbnMgVG9nZ2xlZCIpLFpidD1KUCgiW05QTUldIEVtYmVkZGluZ3MgVmlldyBUb2dnbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksWGJ0PUpQKCJbTlBNSV0gU2lkZWJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksS2J0PUpQKCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIFdpZHRoIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxKYnQ9SlAoIltOUE1JXSBUb2dnbGUgRW1iZWRkaW5ncyBTaWRlYmFyIEV4cGFuZGVkIiksUWJ0PUpQKCJbTlBNSV0gQ2hhbmdlIEVtYmVkZGluZyBEYXRhU2V0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSk7ZnVuY3Rpb24gJGJ0KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoImNvdW50QCIpfWZ1bmN0aW9uIHR5dCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJuUE1JQCIpfHx0LnN0YXJ0c1dpdGgoIm5QTUlfZGlmZkAiKX1mdW5jdGlvbiBleXQodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiblBNSUAiKX1mdW5jdGlvbiBueXQodCl7cmV0dXJuIHQuc3BsaXQoIkAiLDIpWzFdfWNvbnN0IG95dD15ayh7cGx1Z2luRGF0YUxvYWRlZDp7c3RhdGU6eUUuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sYW5ub3RhdGlvbkRhdGE6e30scnVuVG9NZXRyaWNzOnt9LHNlbGVjdGVkQW5ub3RhdGlvbnM6W10sZmxhZ2dlZEFubm90YXRpb25zOltdLGhpZGRlbkFubm90YXRpb25zOltdLGFubm90YXRpb25zUmVnZXg6IiIsbWV0cmljc1JlZ2V4OiIiLG1ldHJpY0FyaXRobWV0aWM6W10sbWV0cmljRmlsdGVyczp7fSxzb3J0OnttZXRyaWM6IiIsb3JkZXI6bmJ0LkRFU0NFTkRJTkd9LHBjRXhwYW5kZWQ6ITAsYW5ub3RhdGlvbnNFeHBhbmRlZDohMCxzaWRlYmFyRXhwYW5kZWQ6ITAsc2hvd0NvdW50czohMCxzaG93SGlkZGVuQW5ub3RhdGlvbnM6ITEsc2lkZWJhcldpZHRoOjMwMCx2aWV3QWN0aXZlOmVidC5ERUZBVUxULGVtYmVkZGluZ3NNZXRyaWM6IiIsZW1iZWRkaW5nc1NpZGViYXJXaWR0aDo1MDAsZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZDohMH0sYmsoU2J0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BsdWdpbkRhdGFMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luRGF0YUxvYWRlZCkse3N0YXRlOnlFLkxPQURJTkd9KX0pKSksYmsoRWJ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BsdWdpbkRhdGFMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luRGF0YUxvYWRlZCkse3N0YXRlOnlFLkZBSUxFRH0pfSkpKSxiayhEYnQsKCh0LHthbm5vdGF0aW9uRGF0YTplLG1ldHJpY3M6bixlbWJlZGRpbmdEYXRhU2V0Om99KT0+e2NvbnN0IGk9e307Zm9yKGNvbnN0IHQgaW4gbil7aVt0XT1bXTtmb3IoY29uc3QgZSBvZiBuW3RdKXR5dChlKSYmaVt0XS5wdXNoKGUpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1blRvTWV0cmljczppLGFubm90YXRpb25EYXRhOmUsZW1iZWRkaW5nRGF0YVNldDpvLHBsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOnlFLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX19KX0pKSxiayhSYnQsKCh0LHthbm5vdGF0aW9uczplfSk9Pntjb25zdCBuPW5ldyBTZXQoWy4uLnQuc2VsZWN0ZWRBbm5vdGF0aW9ucywuLi5lXSk7aWYobi5zaXplPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aClmb3IoY29uc3QgdCBvZiBlKW4uZGVsZXRlKHQpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6Wy4uLm5dfSl9KSksYmsoQWJ0LCgodCx7YW5ub3RhdGlvbnM6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6ZX0pKSksYmsoVGJ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGVkQW5ub3RhdGlvbnM6W119KSkpLGJrKE5idCwoKHQse2Fubm90YXRpb25zOmV9KT0+e2NvbnN0IG49bmV3IFNldChbLi4udC5mbGFnZ2VkQW5ub3RhdGlvbnMsLi4uZV0pO2lmKG4uc2l6ZT09PXQuZmxhZ2dlZEFubm90YXRpb25zLmxlbmd0aClmb3IoY29uc3QgdCBvZiBlKW4uZGVsZXRlKHQpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2ZsYWdnZWRBbm5vdGF0aW9uczpbLi4ubl0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pfSkpLGJrKHpidCwoKHQse2Fubm90YXRpb25zOmV9KT0+e2NvbnN0IG49bmV3IFNldChbLi4udC5oaWRkZW5Bbm5vdGF0aW9ucywuLi5lXSk7aWYobi5zaXplPT09dC5oaWRkZW5Bbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgZSluLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtoaWRkZW5Bbm5vdGF0aW9uczpbLi4ubl0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pfSkpLGJrKElidCwoKHQse3JlZ2V4OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthbm5vdGF0aW9uc1JlZ2V4OmV9KSkpLGJrKEhidCwoKHQse3JlZ2V4OmV9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNzUmVnZXg6ZX0pKSksYmsoRmJ0LCgodCx7bWV0cmljOmV9KT0+e2lmKHQubWV0cmljRmlsdGVyc1tlXSlyZXR1cm4gdDtjb25zdCBuPVtdO3JldHVybiAwIT09dC5tZXRyaWNBcml0aG1ldGljLmxlbmd0aCYmbi5wdXNoKHtraW5kOnRidC5PUEVSQVRPUixvcGVyYXRvcjokaHQuQU5EfSksbi5wdXNoKHtraW5kOnRidC5NRVRSSUMsbWV0cmljOmV9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse21ldHJpY0FyaXRobWV0aWM6Wy4uLnQubWV0cmljQXJpdGhtZXRpYywuLi5uXSxtZXRyaWNGaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0Lm1ldHJpY0ZpbHRlcnMpLHtbZV06e21heDoxLG1pbjotMSxpbmNsdWRlTmFOOiExfX0pLHNvcnQ6e21ldHJpYzplLG9yZGVyOm5idC5ERVNDRU5ESU5HfX0pfSkpLGJrKExidCwoKHQse21ldHJpYzplfSk9PntpZighdC5tZXRyaWNGaWx0ZXJzW2VdKXJldHVybiB0O2xldCBuPTAsbz0wLGk9Mjtjb25zdCBhPWZBKHQubWV0cmljRmlsdGVycyxbInN5bWJvbCI9PXR5cGVvZiBlP2U6ZSsiIl0pO2Zvcihjb25zdCBvIGluIHQubWV0cmljQXJpdGhtZXRpYyl7Y29uc3QgaT10Lm1ldHJpY0FyaXRobWV0aWNbb107aS5raW5kPT09dGJ0Lk1FVFJJQyYmaS5tZXRyaWM9PT1lJiYobj1wYXJzZUludChvKSl9cmV0dXJuIDAhPT1uJiYobz1uLTEsaT1uKzEpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljQXJpdGhtZXRpYzpbLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKDAsbyksLi4udC5tZXRyaWNBcml0aG1ldGljLnNsaWNlKGkpXSxtZXRyaWNGaWx0ZXJzOmF9KX0pKSxiayhCYnQsKCh0LHttZXRyaWM6ZSxtYXg6bixtaW46byxpbmNsdWRlTmFOOml9KT0+dC5tZXRyaWNGaWx0ZXJzW2VdP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W2VdOnttYXg6bixtaW46byxpbmNsdWRlTmFOOml9fSl9KTp0KSksYmsoVmJ0LCgodCx7bWV0cmljOmV9KT0+e2NvbnN0IG49e21ldHJpYzplLG9yZGVyOm5idC5ERVNDRU5ESU5HfTtyZXR1cm4gdC5zb3J0Lm1ldHJpYz09PWUmJnQuc29ydC5vcmRlcj09PW5idC5ERVNDRU5ESU5HJiYobi5vcmRlcj1uYnQuQVNDRU5ETkcpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksYmsoamJ0LCgodCx7YW5ub3RhdGlvbjplfSk9Pntjb25zdCBuPXttZXRyaWM6ZSxvcmRlcjpuYnQuU0lNSUxBUn07cmV0dXJuIHQuc29ydC5tZXRyaWM9PT1lJiZ0LnNvcnQub3JkZXI9PT1uYnQuU0lNSUxBUiYmKG4ub3JkZXI9bmJ0LkRJU1NJTUlMQVIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDpufSl9KSksYmsoVWJ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BjRXhwYW5kZWQ6IXQucGNFeHBhbmRlZH0pKSksYmsoR2J0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2Fubm90YXRpb25zRXhwYW5kZWQ6IXQuYW5ub3RhdGlvbnNFeHBhbmRlZH0pKSksYmsoV2J0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJFeHBhbmRlZDohdC5zaWRlYmFyRXhwYW5kZWR9KSkpLGJrKFlidCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93Q291bnRzOiF0LnNob3dDb3VudHN9KSkpLGJrKHFidCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaG93SGlkZGVuQW5ub3RhdGlvbnM6IXQuc2hvd0hpZGRlbkFubm90YXRpb25zfSkpKSxiayhaYnQsKCh0LHttZXRyaWM6ZX0pPT57bGV0IG49ZWJ0LkVNQkVERElOR1Msbz1lO3JldHVybiBlPT09dC5lbWJlZGRpbmdzTWV0cmljJiYobj1lYnQuREVGQVVMVCxvPSIiKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3ZpZXdBY3RpdmU6bixlbWJlZGRpbmdzTWV0cmljOm99KX0pKSxiayhYYnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NpZGViYXJXaWR0aDplfSkpKSxiayhLYnQsKCh0LHtzaWRlYmFyV2lkdGg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyV2lkdGg6ZX0pKSksYmsoSmJ0LCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6IXQuZW1iZWRkaW5nc1NpZGViYXJFeHBhbmRlZH0pKSksYmsoUWJ0LCgodCx7ZGF0YVNldDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW1iZWRkaW5nRGF0YVNldDplfSkpKSk7ZnVuY3Rpb24gaXl0KHQsZSl7cmV0dXJuIG95dCh0LGUpfWZ1bmN0aW9uIGF5dCh0LGUpezEmdCYmVG0oMCwibWF0LWljb24iLDcpfWZ1bmN0aW9uIHJ5dCh0LGUpe2lmKDEmdCYmKFJtKDAsIm1hdC1vcHRpb24iLDgpLGt1KDEpLEFtKCkpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEbSgidmFsdWUiLHQpLHJjKDEpLFN1KHQpfX1jbGFzcyBzeXR7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZT1uZXcgTGgsdGhpcy5vbkFkZEZpbHRlcj1uZXcgTGh9b25PcHRpb25TZWxlY3RlZCh0LGUpe3RoaXMub25BZGRGaWx0ZXIuZW1pdCh0Lm9wdGlvbi52YWx1ZSksZS52YWx1ZT0iIn19c3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzeXQpfSxzeXQuybVjbXA9dG8oe3R5cGU6c3l0LHNlbGVjdG9yczpbWyJtZXRyaWMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntjb21wbGV0aW9uczoiY29tcGxldGlvbnMiLHJlZ2V4RmlsdGVyVmFsdWU6InJlZ2V4RmlsdGVyVmFsdWUiLGlzUmVnZXhGaWx0ZXJWYWxpZDoiaXNSZWdleEZpbHRlclZhbGlkIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLG9uQWRkRmlsdGVyOiJvbkFkZEZpbHRlciJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbIm1hdElucHV0IiwiIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJBZGQgTWV0cmljIEZpbHRlciIsMywidmFsdWUiLCJtYXRBdXRvY29tcGxldGUiLCJpbnB1dCJdLFsibWF0SW5wdXQiLCIiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbImF1dG9BY3RpdmVGaXJzdE9wdGlvbiIsIiIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlKXtjb25zdCB0PUhtKCk7VG0oMCwibWF0LWljb24iLDApLFJtKDEsImlucHV0IiwxLDIpLFZtKCJpbnB1dCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoZS50YXJnZXQudmFsdWUpfSkpLEFtKCksUXAoMyxheXQsMSwwLCJtYXQtaWNvbiIsMyksUm0oNCwibWF0LWF1dG9jb21wbGV0ZSIsNCw1KSxWbSgib3B0aW9uU2VsZWN0ZWQiLChmdW5jdGlvbiBlKG8pe2hpKHQpO2NvbnN0IGk9JHAoMik7cmV0dXJuIG4ub25PcHRpb25TZWxlY3RlZChvLGkpfSkpLFFwKDYscnl0LDIsMiwibWF0LW9wdGlvbiIsNiksQW0oKX1pZigyJmUpe2NvbnN0IHQ9JHAoNSk7cmMoMSksRG0oInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLHJjKDIpLERtKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpLHJjKDMpLERtKCJuZ0Zvck9mIixuLmNvbXBsZXRpb25zKX19LGRpcmVjdGl2ZXM6W0RXLExZLFcwLGRNLEgwLGxNLEJIXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChzeXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7Y29tcGxldGlvbnM6W3t0eXBlOnh5fV0scmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6eHl9XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOlB5LGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTp4eX1dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6T3l9XSxvbkFkZEZpbHRlcjpbe3R5cGU6T3l9XX0pO2NsYXNzIGx5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNzUmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KHVidCksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoRncoTk4pKS5waXBlKEl0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMubWV0cmljc0ZvckFjdGl2ZVJ1bnMkPVd0KHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3Qoc2J0KSkucGlwZShJdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0KWlmKGVbb10pZm9yKGNvbnN0IHQgb2YgZVtvXSluLmFkZCh0KTtyZXR1cm5bLi4ubl19KSkpLHRoaXMuaXNNZXRyaWNzRmlsdGVyVmFsaWQkPXRoaXMubWV0cmljc1JlZ2V4JC5waXBlKEl0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSksdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJD10aGlzLnN0b3JlLnBpcGUoRncoZ2J0KSkucGlwZShJdCgodD0+T2JqZWN0LmtleXModCkpKSksdGhpcy5jb21wbGV0aW9ucyQ9V3QodGhpcy5tZXRyaWNzRm9yQWN0aXZlUnVucyQsdGhpcy5tZXRyaWNzUmVnZXgkLHRoaXMubWV0cmljRmlsdGVyS2V5cyQpLnBpcGUoSXQoKChbdCxlLG5dKT0+e2NvbnN0IG89dC5maWx0ZXIoKHQ9PiFuLmluY2x1ZGVzKHQpKSk7dHJ5e2NvbnN0IHQ9bmV3IFJlZ0V4cChlLCJpIik7cmV0dXJuIG8uZmlsdGVyKChlPT50LnRlc3QoZSkpKS5zb3J0KCl9Y2F0Y2godCl7cmV0dXJuW119fSkpKX1vbkZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEhidCh7cmVnZXg6dH0pKX1vbkFkZEZpbHRlcih0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEZidCh7bWV0cmljOnR9KSksdGhpcy5zdG9yZS5kaXNwYXRjaChIYnQoe3JlZ2V4OiIifSkpfX1mdW5jdGlvbiBjeXQodCxlLG4pe2NvbnN0IG89W1tlLC4uLm5dXTtpZighbi5sZW5ndGh8fCF0Lmxlbmd0aClyZXR1cm4iZGF0YTp0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04LCIrby5tYXAoKHQ9PnQuam9pbigiLCIpKSkuam9pbigiXG4iKTtjb25zdCBpPW4ubWFwKCh0PT5ueXQodCkpKTtmb3IoY29uc3RbbixhXW9mIHQpe2NvbnN0IHQ9YS5maWx0ZXIoKHQ9PnQucnVuPT09ZSkpO2lmKHQubGVuZ3RoKXtjb25zdCBlPVtuXTtmb3IoY29uc3QgbiBvZiBpKXtjb25zdCBvPXQuZmluZCgodD0+dC5tZXRyaWM9PT1uKSk7ZS5wdXNoKHZvaWQgMD09PW8/Im51bGwiOmAke28ublBNSVZhbHVlfWApfW8ucHVzaChlKX19cmV0dXJuImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwiK28ubWFwKCh0PT50LmpvaW4oIiwiKSkpLmpvaW4oIlxuIil9bHl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxseXQpKFNtKEl3KSl9LGx5dC7JtWNtcD10byh7dHlwZTpseXQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLXNlYXJjaCJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiY29tcGxldGlvbnMiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLCJvbkFkZEZpbHRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLDApLFZtKCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uRmlsdGVyQ2hhbmdlKGUpfSkpKCJvbkFkZEZpbHRlciIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ub25BZGRGaWx0ZXIoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgicmVnZXhGaWx0ZXJWYWx1ZSIsVGgoMSwzLG4ubWV0cmljc1JlZ2V4JCkpKCJjb21wbGV0aW9ucyIsVGgoMiw1LG4uY29tcGxldGlvbnMkKSkoImlzUmVnZXhGaWx0ZXJWYWxpZCIsVGgoMyw3LG4uaXNNZXRyaWNzRmlsdGVyVmFsaWQkKSl9LGRpcmVjdGl2ZXM6W3N5dF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGx5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1zZWFyY2giLHRlbXBsYXRlOidcbiAgICA8bWV0cmljLXNlYXJjaC1jb21wb25lbnRcbiAgICAgIFtyZWdleEZpbHRlclZhbHVlXT0ibWV0cmljc1JlZ2V4JCB8IGFzeW5jIlxuICAgICAgW2NvbXBsZXRpb25zXT0iY29tcGxldGlvbnMkIHwgYXN5bmMiXG4gICAgICBbaXNSZWdleEZpbHRlclZhbGlkXT0iaXNNZXRyaWNzRmlsdGVyVmFsaWQkIHwgYXN5bmMiXG4gICAgICAob25SZWdleEZpbHRlclZhbHVlQ2hhbmdlKT0ib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICAgIChvbkFkZEZpbHRlcik9Im9uQWRkRmlsdGVyKCRldmVudCkiXG4gICAgPjwvbWV0cmljLXNlYXJjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjb25zdCBkeXQ9ZnVuY3Rpb24odCl7cmV0dXJueyJhY3RpdmUtYnV0dG9uIjp0fX07Y2xhc3MgcHl0e2Rvd25sb2FkUmVzdWx0cygpe2Zvcihjb25zdCB0IG9mIHRoaXMucnVucyl7Y29uc3QgZT1jeXQodGhpcy5mbGFnZ2VkRGF0YSx0LHRoaXMubWV0cmljcyksbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7bi5zZXRBdHRyaWJ1dGUoImhyZWYiLGUpLG4uc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsYHJlcG9ydF8ke3R9LmNzdmApLG4uY2xpY2soKX19fXB5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cHl0KX0scHl0Lsm1Y21wPXRvKHt0eXBlOnB5dCxzZWxlY3RvcnM6W1sicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiXV0saW5wdXRzOntudW1GbGFnZ2VkQW5ub3RhdGlvbnM6Im51bUZsYWdnZWRBbm5vdGF0aW9ucyIscnVuczoicnVucyIsZmxhZ2dlZERhdGE6ImZsYWdnZWREYXRhIixtZXRyaWNzOiJtZXRyaWNzIn0sZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsInRpdGxlIiwiRXhwb3J0IENTViByZXBvcnRzIG9mIGFsbCBmbGFnZ2VkIGFubm90YXRpb25zLiBXaWxsIGdlbmVyYXRlIG9uZSBDU1YgcGVyIGFjdGl2ZSBydW4uIiwzLCJkaXNhYmxlZCIsIm5nQ2xhc3MiLCJjbGljayJdLFsxLCJidXR0b24tY29udGVudHMiXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImJ1dHRvbiIsMCksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmRvd25sb2FkUmVzdWx0cygpfSkpLFJtKDEsInNwYW4iLDEpLFRtKDIsIm1hdC1pY29uIiwyKSxrdSgzKSxBbSgpLEFtKCkpLDImZSYmKERtKCJkaXNhYmxlZCIsMD09PW4ubnVtRmxhZ2dlZEFubm90YXRpb25zKSgibmdDbGFzcyIsTWgoMyxkeXQsbi5udW1GbGFnZ2VkQW5ub3RhdGlvbnM+MCkpLHJjKDMpLER1KCIgRmxhZ2dlZCBSb3dzICgiLG4ubnVtRmxhZ2dlZEFubm90YXRpb25zLCIpICIpKX0sZGlyZWN0aXZlczpbWEgsYU0sRFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5hY3RpdmUtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiNmZmZ9LmJ1dHRvbi1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo2cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHB5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJyZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vcmVzdWx0c19kb3dubG9hZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9yZXN1bHRzX2Rvd25sb2FkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtudW1GbGFnZ2VkQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0scnVuczpbe3R5cGU6eHl9XSxmbGFnZ2VkRGF0YTpbe3R5cGU6eHl9XSxtZXRyaWNzOlt7dHlwZTp4eX1dfSk7Y2xhc3MgbXl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoZGJ0KSx0aGlzLm51bUZsYWdnZWRBbm5vdGF0aW9ucyQ9dGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkLnBpcGUoSXQoKHQ9PnQubGVuZ3RoKSkpLHRoaXMuYWN0aXZlUnVucyQ9dGhpcy5zdG9yZS5zZWxlY3QoTk4pLnBpcGUoSXQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5mbGFnZ2VkRGF0YSQ9V3QoW3RoaXMuc3RvcmUuc2VsZWN0KHJidCksdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkXSkucGlwZShJdCgoKFt0LGVdKT0+e2NvbnN0IG49bmV3IFNldChlKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKCh0PT5uLmhhcyh0WzBdKSkpfSkpKSx0aGlzLm1ldHJpY3MkPVd0KFt0aGlzLnN0b3JlLnNlbGVjdChzYnQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoZ2J0KV0pLnBpcGUoSXQoKChbdCxlLG5dKT0+e2xldCBvPU9iamVjdC5rZXlzKG4pO2Zvcihjb25zdCBuIG9mIGUpdFtuXSYmKG89by5jb25jYXQodFtuXS5maWx0ZXIoKHQ9PmV5dCh0KSkpKSk7cmV0dXJuIG89Wy4uLm5ldyBTZXQobyldLG99KSkpfX1teXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG15dCkoU20oSXcpKX0sbXl0Lsm1Y21wPXRvKHt0eXBlOm15dCxzZWxlY3RvcnM6W1sibnBtaS1yZXN1bHRzLWRvd25sb2FkIl1dLGRlY2xzOjUsdmFyczoxMixjb25zdHM6W1szLCJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLCJydW5zIiwiZmxhZ2dlZERhdGEiLCJtZXRyaWNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJyZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudCIsMCksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSksMiZlJiZEbSgibnVtRmxhZ2dlZEFubm90YXRpb25zIixUaCgxLDQsbi5udW1GbGFnZ2VkQW5ub3RhdGlvbnMkKSkoInJ1bnMiLFRoKDIsNixuLmFjdGl2ZVJ1bnMkKSkoImZsYWdnZWREYXRhIixUaCgzLDgsbi5mbGFnZ2VkRGF0YSQpKSgibWV0cmljcyIsVGgoNCwxMCxuLm1ldHJpY3MkKSl9LGRpcmVjdGl2ZXM6W3B5dF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKG15dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLXJlc3VsdHMtZG93bmxvYWQiLHRlbXBsYXRlOidcbiAgICA8cmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnRcbiAgICAgIFtudW1GbGFnZ2VkQW5ub3RhdGlvbnNdPSJudW1GbGFnZ2VkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbcnVuc109ImFjdGl2ZVJ1bnMkIHwgYXN5bmMiXG4gICAgICBbZmxhZ2dlZERhdGFdPSJmbGFnZ2VkRGF0YSQgfCBhc3luYyJcbiAgICAgIFttZXRyaWNzXT0ibWV0cmljcyQgfCBhc3luYyJcbiAgICA+PC9yZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IHV5dD1uZXcgR2EoIk1hdENoaXBSZW1vdmUiKSxmeXQ9bmV3IEdhKCJNYXRDaGlwQXZhdGFyIiksZ3l0PW5ldyBHYSgiTWF0Q2hpcFRyYWlsaW5nSWNvbiIpLGh5dD0kSShKSShRSShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksInByaW1hcnkiKSwtMSk7Y2xhc3MgYnl0e31ieXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGJ5dCl9LGJ5dC7JtWRpcj1sbyh7dHlwZTpieXQsc2VsZWN0b3JzOltbIm1hdC1jaGlwLWF2YXRhciJdLFsiIiwibWF0Q2hpcEF2YXRhciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLWF2YXRhciJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6Znl0LHVzZUV4aXN0aW5nOmJ5dH1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGJ5dCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hpcC1hdmF0YXIsIFttYXRDaGlwQXZhdGFyXSIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLWF2YXRhciJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6Znl0LHVzZUV4aXN0aW5nOmJ5dH1dfV19XSxudWxsLG51bGwpO2NsYXNzIHl5dHt9eXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx5eXQpfSx5eXQuybVkaXI9bG8oe3R5cGU6eXl0LHNlbGVjdG9yczpbWyJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0sWyIiLCJtYXRDaGlwVHJhaWxpbmdJY29uIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6Z3l0LHVzZUV4aXN0aW5nOnl5dH1dKV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHl5dCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hpcC10cmFpbGluZy1pY29uLCBbbWF0Q2hpcFRyYWlsaW5nSWNvbl0iLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcC10cmFpbGluZy1pY29uIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpneXQsdXNlRXhpc3Rpbmc6eXl0fV19XX1dLG51bGwsbnVsbCk7Y2xhc3MgX3l0IGV4dGVuZHMgaHl0e2NvbnN0cnVjdG9yKHQsZSxuLG8saSxhLHIscyl7c3VwZXIodCksdGhpcy5fbmdab25lPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9aSx0aGlzLl9oYXNGb2N1cz0hMSx0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZT0hMCx0aGlzLl9jaGlwTGlzdE11bHRpcGxlPSExLHRoaXMuX2NoaXBMaXN0RGlzYWJsZWQ9ITEsdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fc2VsZWN0YWJsZT0hMCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9yZW1vdmFibGU9ITAsdGhpcy5fb25Gb2N1cz1uZXcgSSx0aGlzLl9vbkJsdXI9bmV3IEksdGhpcy5zZWxlY3Rpb25DaGFuZ2U9bmV3IExoLHRoaXMuZGVzdHJveWVkPW5ldyBMaCx0aGlzLnJlbW92ZWQ9bmV3IExoLHRoaXMuX2FkZEhvc3RDbGFzc05hbWUoKSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0PWEuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fY2hpcFJpcHBsZVRhcmdldC5jbGFzc0xpc3QuYWRkKCJtYXQtY2hpcC1yaXBwbGUiKSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2hpcFJpcHBsZVRhcmdldCksdGhpcy5fY2hpcFJpcHBsZT1uZXcgUEgodGhpcyxlLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQsbiksdGhpcy5fY2hpcFJpcHBsZS5zZXR1cFRyaWdnZXJFdmVudHModCksdGhpcy5yaXBwbGVDb25maWc9b3x8e30sdGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkPSJOb29wQW5pbWF0aW9ucyI9PT1yLHRoaXMudGFiSW5kZXg9bnVsbCE9cyYmcGFyc2VJbnQocyl8fC0xfWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHx0aGlzLmRpc2FibGVSaXBwbGV8fHRoaXMuX2FuaW1hdGlvbnNEaXNhYmxlZHx8ISF0aGlzLnJpcHBsZUNvbmZpZy5kaXNhYmxlZH1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR9c2V0IHNlbGVjdGVkKHQpe2NvbnN0IGU9eXoodCk7ZSE9PXRoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ZSx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpKX1nZXQgdmFsdWUoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fdmFsdWU/dGhpcy5fdmFsdWU6dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50fXNldCB2YWx1ZSh0KXt0aGlzLl92YWx1ZT10fWdldCBzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGFibGUmJnRoaXMuY2hpcExpc3RTZWxlY3RhYmxlfXNldCBzZWxlY3RhYmxlKHQpe3RoaXMuX3NlbGVjdGFibGU9eXoodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2NoaXBMaXN0RGlzYWJsZWR8fHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD15eih0KX1nZXQgcmVtb3ZhYmxlKCl7cmV0dXJuIHRoaXMuX3JlbW92YWJsZX1zZXQgcmVtb3ZhYmxlKHQpe3RoaXMuX3JlbW92YWJsZT15eih0KX1nZXQgYXJpYVNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuc2VsZWN0YWJsZSYmKHRoaXMuX2NoaXBMaXN0TXVsdGlwbGV8fHRoaXMuc2VsZWN0ZWQpP3RoaXMuc2VsZWN0ZWQudG9TdHJpbmcoKTpudWxsfV9hZGRIb3N0Q2xhc3NOYW1lKCl7Y29uc3QgdD0ibWF0LWJhc2ljLWNoaXAiLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2UuaGFzQXR0cmlidXRlKHQpfHxlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PXQ/ZS5jbGFzc0xpc3QuYWRkKHQpOmUuY2xhc3NMaXN0LmFkZCgibWF0LXN0YW5kYXJkLWNoaXAiKX1uZ09uRGVzdHJveSgpe3RoaXMuZGVzdHJveWVkLmVtaXQoe2NoaXA6dGhpc30pLHRoaXMuX2NoaXBSaXBwbGUuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX1zZWxlY3QoKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWRlc2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWQmJih0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1zZWxlY3RWaWFJbnRlcmFjdGlvbigpe3RoaXMuX3NlbGVjdGVkfHwodGhpcy5fc2VsZWN0ZWQ9ITAsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoITApLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX10b2dnbGVTZWxlY3RlZCh0PSExKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWQ9IXRoaXMuc2VsZWN0ZWQsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zZWxlY3RlZH1mb2N1cygpe3RoaXMuX2hhc0ZvY3VzfHwodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5fb25Gb2N1cy5uZXh0KHtjaGlwOnRoaXN9KSksdGhpcy5faGFzRm9jdXM9ITB9cmVtb3ZlKCl7dGhpcy5yZW1vdmFibGUmJnRoaXMucmVtb3ZlZC5lbWl0KHtjaGlwOnRoaXN9KX1faGFuZGxlQ2xpY2sodCl7dGhpcy5kaXNhYmxlZD90LnByZXZlbnREZWZhdWx0KCk6dC5zdG9wUHJvcGFnYXRpb24oKX1faGFuZGxlS2V5ZG93bih0KXtpZighdGhpcy5kaXNhYmxlZClzd2l0Y2godC5rZXlDb2RlKXtjYXNlIDQ2OmNhc2UgODp0aGlzLnJlbW92ZSgpLHQucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIGZ6OnRoaXMuc2VsZWN0YWJsZSYmdGhpcy50b2dnbGVTZWxlY3RlZCghMCksdC5wcmV2ZW50RGVmYXVsdCgpfX1fYmx1cigpe3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGJlKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0aGlzLl9oYXNGb2N1cz0hMSx0aGlzLl9vbkJsdXIubmV4dCh7Y2hpcDp0aGlzfSl9KSl9KSl9X2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKHQ9ITEpe3RoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe3NvdXJjZTp0aGlzLGlzVXNlcklucHV0OnQsc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0ZWR9KX19X3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfeXQpKFNtKGhnKSxTbShhXyksU20od3opLFNtKHdILDgpLFNtKFVnKSxTbShaXyksU20oVlAsOCksTmEoInRhYmluZGV4IikpfSxfeXQuybVkaXI9bG8oe3R5cGU6X3l0LHNlbGVjdG9yczpbWyJtYXQtYmFzaWMtY2hpcCJdLFsiIiwibWF0LWJhc2ljLWNoaXAiLCIiXSxbIm1hdC1jaGlwIl0sWyIiLCJtYXQtY2hpcCIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJigkaChvLGZ5dCw1KSwkaChvLGd5dCw1KSwkaChvLHV5dCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5hdmF0YXI9dC5maXJzdCksSmgodD10YigpKSYmKG4udHJhaWxpbmdJY29uPXQuZmlyc3QpLEpoKHQ9dGIoKSkmJihuLnJlbW92ZUljb249dC5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwib3B0aW9uIiwxLCJtYXQtY2hpcCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlQ2xpY2soZSl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9oYW5kbGVLZXlkb3duKGUpfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9ibHVyKCl9KSksMiZlJiYoanAoInRhYmluZGV4IixuLmRpc2FibGVkP251bGw6bi50YWJJbmRleCkoImRpc2FibGVkIixuLmRpc2FibGVkfHxudWxsKSgiYXJpYS1kaXNhYmxlZCIsbi5kaXNhYmxlZC50b1N0cmluZygpKSgiYXJpYS1zZWxlY3RlZCIsbi5hcmlhU2VsZWN0ZWQpLHB1KCJtYXQtY2hpcC1zZWxlY3RlZCIsbi5zZWxlY3RlZCkoIm1hdC1jaGlwLXdpdGgtYXZhdGFyIixuLmF2YXRhcikoIm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbiIsbi50cmFpbGluZ0ljb258fG4ucmVtb3ZlSWNvbikoIm1hdC1jaGlwLWRpc2FibGVkIixuLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLG4uX2FuaW1hdGlvbnNEaXNhYmxlZCkpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4IixzZWxlY3RlZDoic2VsZWN0ZWQiLHZhbHVlOiJ2YWx1ZSIsc2VsZWN0YWJsZToic2VsZWN0YWJsZSIsZGlzYWJsZWQ6ImRpc2FibGVkIixyZW1vdmFibGU6InJlbW92YWJsZSJ9LG91dHB1dHM6e3NlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIixkZXN0cm95ZWQ6ImRlc3Ryb3llZCIscmVtb3ZlZDoicmVtb3ZlZCJ9LGV4cG9ydEFzOlsibWF0Q2hpcCJdLGZlYXR1cmVzOlt4cF19KSxfeXQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoZ30se3R5cGU6YV99LHt0eXBlOnd6fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W3dIXX1dfSx7dHlwZTpVZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W1pfXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX1dLF95dC5wcm9wRGVjb3JhdG9ycz17YXZhdGFyOlt7dHlwZTpxYSxhcmdzOltmeXRdfV0sdHJhaWxpbmdJY29uOlt7dHlwZTpxYSxhcmdzOltneXRdfV0scmVtb3ZlSWNvbjpbe3R5cGU6cWEsYXJnczpbdXl0XX1dLHNlbGVjdGVkOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLHNlbGVjdGFibGU6W3t0eXBlOnh5fV0sZGlzYWJsZWQ6W3t0eXBlOnh5fV0scmVtb3ZhYmxlOlt7dHlwZTp4eX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6T3l9XSxkZXN0cm95ZWQ6W3t0eXBlOk95fV0scmVtb3ZlZDpbe3R5cGU6T3l9XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChfeXQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWJhc2ljLWNoaXAsIFttYXQtYmFzaWMtY2hpcF0sIG1hdC1jaGlwLCBbbWF0LWNoaXBdIixpbnB1dHM6WyJjb2xvciIsImRpc2FibGVSaXBwbGUiLCJ0YWJJbmRleCJdLGV4cG9ydEFzOiJtYXRDaGlwIixob3N0OntjbGFzczoibWF0LWNoaXAgbWF0LWZvY3VzLWluZGljYXRvciIsIlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IHRhYkluZGV4Iixyb2xlOiJvcHRpb24iLCJbY2xhc3MubWF0LWNoaXAtc2VsZWN0ZWRdIjoic2VsZWN0ZWQiLCJbY2xhc3MubWF0LWNoaXAtd2l0aC1hdmF0YXJdIjoiYXZhdGFyIiwiW2NsYXNzLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbl0iOiJ0cmFpbGluZ0ljb24gfHwgcmVtb3ZlSWNvbiIsIltjbGFzcy5tYXQtY2hpcC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfYW5pbWF0aW9uc0Rpc2FibGVkIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtc2VsZWN0ZWRdIjoiYXJpYVNlbGVjdGVkIiwiKGNsaWNrKSI6Il9oYW5kbGVDbGljaygkZXZlbnQpIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihmb2N1cykiOiJmb2N1cygpIiwiKGJsdXIpIjoiX2JsdXIoKSJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOmFffSx7dHlwZTp3en0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOlt3SF19XX0se3R5cGU6VWd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltaX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmphLGFyZ3M6WyJ0YWJpbmRleCJdfV19XX0pLHtzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOk95fV0sZGVzdHJveWVkOlt7dHlwZTpPeX1dLHJlbW92ZWQ6W3t0eXBlOk95fV0sc2VsZWN0ZWQ6W3t0eXBlOnh5fV0sdmFsdWU6W3t0eXBlOnh5fV0sc2VsZWN0YWJsZTpbe3R5cGU6eHl9XSxkaXNhYmxlZDpbe3R5cGU6eHl9XSxyZW1vdmFibGU6W3t0eXBlOnh5fV0sYXZhdGFyOlt7dHlwZTpxYSxhcmdzOltmeXRdfV0sdHJhaWxpbmdJY29uOlt7dHlwZTpxYSxhcmdzOltneXRdfV0scmVtb3ZlSWNvbjpbe3R5cGU6cWEsYXJnczpbdXl0XX1dfSk7Y2xhc3MgQ3l0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcGFyZW50Q2hpcD10LCJCVVRUT04iPT09ZS5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lJiZlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0eXBlIiwiYnV0dG9uIil9X2hhbmRsZUNsaWNrKHQpe2NvbnN0IGU9dGhpcy5fcGFyZW50Q2hpcDtlLnJlbW92YWJsZSYmIWUuZGlzYWJsZWQmJmUucmVtb3ZlKCksdC5zdG9wUHJvcGFnYXRpb24oKX19Q3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxDeXQpKFNtKF95dCksU20oaGcpKX0sQ3l0Lsm1ZGlyPWxvKHt0eXBlOkN5dCxzZWxlY3RvcnM6W1siIiwibWF0Q2hpcFJlbW92ZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLXJlbW92ZSIsIm1hdC1jaGlwLXRyYWlsaW5nLWljb24iXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5faGFuZGxlQ2xpY2soZSl9KSl9LGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6dXl0LHVzZUV4aXN0aW5nOkN5dH1dKV19KSxDeXQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfeXR9LHt0eXBlOmhnfV0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChDeXQsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoiW21hdENoaXBSZW1vdmVdIixob3N0OntjbGFzczoibWF0LWNoaXAtcmVtb3ZlIG1hdC1jaGlwLXRyYWlsaW5nLWljb24iLCIoY2xpY2spIjoiX2hhbmRsZUNsaWNrKCRldmVudCkifSxwcm92aWRlcnM6W3twcm92aWRlOnV5dCx1c2VFeGlzdGluZzpDeXR9XX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl95dH0se3R5cGU6aGd9XX0pLG51bGwpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTXl0PW5ldyBHYSgibWF0LWNoaXBzLWRlZmF1bHQtb3B0aW9ucyIpLHZ5dD10SChjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbixvKXt0aGlzLl9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI9dCx0aGlzLl9wYXJlbnRGb3JtPWUsdGhpcy5fcGFyZW50Rm9ybUdyb3VwPW4sdGhpcy5uZ0NvbnRyb2w9b319KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHh5dD0wO2NsYXNzIE95dHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc291cmNlPXQsdGhpcy52YWx1ZT1lfX1jbGFzcyBQeXQgZXh0ZW5kcyB2eXR7Y29uc3RydWN0b3IodCxlLG4sbyxpLGEscil7c3VwZXIoYSxvLGksciksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZGlyPW4sdGhpcy5jb250cm9sVHlwZT0ibWF0LWNoaXAtbGlzdCIsdGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleD1udWxsLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSSx0aGlzLl91aWQ9Im1hdC1jaGlwLWxpc3QtIit4eXQrKyx0aGlzLl90YWJJbmRleD0wLHRoaXMuX3VzZXJUYWJJbmRleD1udWxsLHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2NvbXBhcmVXaXRoPSh0LGUpPT50PT09ZSx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmFyaWFPcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsdGhpcy5fc2VsZWN0YWJsZT0hMCx0aGlzLmNoYW5nZT1uZXcgTGgsdGhpcy52YWx1ZUNoYW5nZT1uZXcgTGgsdGhpcy5uZ0NvbnRyb2wmJih0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yPXRoaXMpfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLm11bHRpcGxlP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOnRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdfWdldCByb2xlKCl7cmV0dXJuIHRoaXMuZW1wdHk/bnVsbDoibGlzdGJveCJ9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfXNldCBtdWx0aXBsZSh0KXt0aGlzLl9tdWx0aXBsZT15eih0KSx0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpfWdldCBjb21wYXJlV2l0aCgpe3JldHVybiB0aGlzLl9jb21wYXJlV2l0aH1zZXQgY29tcGFyZVdpdGgodCl7dGhpcy5fY29tcGFyZVdpdGg9dCx0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7dGhpcy53cml0ZVZhbHVlKHQpLHRoaXMuX3ZhbHVlPXR9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2NoaXBJbnB1dD90aGlzLl9jaGlwSW5wdXQuaWQ6dGhpcy5fdWlkfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9eXoodCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLl9jaGlwSW5wdXQ/dGhpcy5fY2hpcElucHV0LnBsYWNlaG9sZGVyOnRoaXMuX3BsYWNlaG9sZGVyfXNldCBwbGFjZWhvbGRlcih0KXt0aGlzLl9wbGFjZWhvbGRlcj10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgZm9jdXNlZCgpe3JldHVybiB0aGlzLl9jaGlwSW5wdXQmJnRoaXMuX2NoaXBJbnB1dC5mb2N1c2VkfHx0aGlzLl9oYXNGb2N1c2VkQ2hpcCgpfWdldCBlbXB0eSgpe3JldHVybighdGhpcy5fY2hpcElucHV0fHx0aGlzLl9jaGlwSW5wdXQuZW1wdHkpJiYoIXRoaXMuY2hpcHN8fDA9PT10aGlzLmNoaXBzLmxlbmd0aCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4hdGhpcy5lbXB0eXx8dGhpcy5mb2N1c2VkfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLm5nQ29udHJvbD8hIXRoaXMubmdDb250cm9sLmRpc2FibGVkOnRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD15eih0KSx0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpfWdldCBzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGFibGV9c2V0IHNlbGVjdGFibGUodCl7dGhpcy5fc2VsZWN0YWJsZT15eih0KSx0aGlzLmNoaXBzJiZ0aGlzLmNoaXBzLmZvckVhY2goKHQ9PnQuY2hpcExpc3RTZWxlY3RhYmxlPXRoaXMuX3NlbGVjdGFibGUpKX1zZXQgdGFiSW5kZXgodCl7dGhpcy5fdXNlclRhYkluZGV4PXQsdGhpcy5fdGFiSW5kZXg9dH1nZXQgY2hpcFNlbGVjdGlvbkNoYW5nZXMoKXtyZXR1cm4gcmUoLi4udGhpcy5jaGlwcy5tYXAoKHQ9PnQuc2VsZWN0aW9uQ2hhbmdlKSkpfWdldCBjaGlwRm9jdXNDaGFuZ2VzKCl7cmV0dXJuIHJlKC4uLnRoaXMuY2hpcHMubWFwKCh0PT50Ll9vbkZvY3VzKSkpfWdldCBjaGlwQmx1ckNoYW5nZXMoKXtyZXR1cm4gcmUoLi4udGhpcy5jaGlwcy5tYXAoKHQ9PnQuX29uQmx1cikpKX1nZXQgY2hpcFJlbW92ZUNoYW5nZXMoKXtyZXR1cm4gcmUoLi4udGhpcy5jaGlwcy5tYXAoKHQ9PnQuZGVzdHJveWVkKSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2tleU1hbmFnZXI9bmV3IGVJKHRoaXMuY2hpcHMpLndpdGhXcmFwKCkud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oKS53aXRoSG9tZUFuZEVuZCgpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyP3RoaXMuX2Rpci52YWx1ZToibHRyIiksdGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUoSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT50aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odCkpKSx0aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKEllKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9hbGxvd0ZvY3VzRXNjYXBlKCl9KSksdGhpcy5jaGlwcy5jaGFuZ2VzLnBpcGUoTmUobnVsbCksSWUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuZGlzYWJsZWQmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fc3luY0NoaXBzU3RhdGUoKX0pKSx0aGlzLl9yZXNldENoaXBzKCksdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpLHRoaXMuX3VwZGF0ZVRhYkluZGV4KCksdGhpcy5fdXBkYXRlRm9jdXNGb3JEZXN0cm95ZWRDaGlwcygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1uZ09uSW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsPW5ldyBvRih0aGlzLm11bHRpcGxlLHZvaWQgMCwhMSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nRG9DaGVjaygpe3RoaXMubmdDb250cm9sJiYodGhpcy51cGRhdGVFcnJvclN0YXRlKCksdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQhPT10aGlzLl9kaXNhYmxlZCYmKHRoaXMuZGlzYWJsZWQ9ISF0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuX2Ryb3BTdWJzY3JpcHRpb25zKCl9cmVnaXN0ZXJJbnB1dCh0KXt0aGlzLl9jaGlwSW5wdXQ9dCx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJkYXRhLW1hdC1jaGlwLWlucHV0Iix0LmlkKX1zZXREZXNjcmliZWRCeUlkcyh0KXt0aGlzLl9hcmlhRGVzY3JpYmVkYnk9dC5qb2luKCIgIil9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoaXBzJiZ0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQsITEpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9b25Db250YWluZXJDbGljayh0KXt0aGlzLl9vcmlnaW5hdGVzRnJvbUNoaXAodCl8fHRoaXMuZm9jdXMoKX1mb2N1cyh0KXt0aGlzLmRpc2FibGVkfHx0aGlzLl9jaGlwSW5wdXQmJnRoaXMuX2NoaXBJbnB1dC5mb2N1c2VkfHwodGhpcy5jaGlwcy5sZW5ndGg+MD8odGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpOih0aGlzLl9mb2N1c0lucHV0KHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSkpfV9mb2N1c0lucHV0KHQpe3RoaXMuX2NoaXBJbnB1dCYmdGhpcy5fY2hpcElucHV0LmZvY3VzKHQpfV9rZXlkb3duKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZSYmZS5jbGFzc0xpc3QuY29udGFpbnMoIm1hdC1jaGlwIikmJih0aGlzLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bih0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV91cGRhdGVUYWJJbmRleCgpe3RoaXMuX3RhYkluZGV4PXRoaXMuX3VzZXJUYWJJbmRleHx8KDA9PT10aGlzLmNoaXBzLmxlbmd0aD8tMTowKX1fdXBkYXRlRm9jdXNGb3JEZXN0cm95ZWRDaGlwcygpe2lmKG51bGwhPXRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXgpaWYodGhpcy5jaGlwcy5sZW5ndGgpe2NvbnN0IHQ9TWF0aC5taW4odGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleCx0aGlzLmNoaXBzLmxlbmd0aC0xKTt0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odCl9ZWxzZSB0aGlzLmZvY3VzKCk7dGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleD1udWxsfV9pc1ZhbGlkSW5kZXgodCl7cmV0dXJuIHQ+PTAmJnQ8dGhpcy5jaGlwcy5sZW5ndGh9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCxlPSEwKXtpZih0aGlzLl9jbGVhclNlbGVjdGlvbigpLHRoaXMuY2hpcHMuZm9yRWFjaCgodD0+dC5kZXNlbGVjdCgpKSksQXJyYXkuaXNBcnJheSh0KSl0LmZvckVhY2goKHQ9PnRoaXMuX3NlbGVjdFZhbHVlKHQsZSkpKSx0aGlzLl9zb3J0VmFsdWVzKCk7ZWxzZXtjb25zdCBuPXRoaXMuX3NlbGVjdFZhbHVlKHQsZSk7biYmZSYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG4pfX1fc2VsZWN0VmFsdWUodCxlPSEwKXtjb25zdCBuPXRoaXMuY2hpcHMuZmluZCgoZT0+bnVsbCE9ZS52YWx1ZSYmdGhpcy5fY29tcGFyZVdpdGgoZS52YWx1ZSx0KSkpO3JldHVybiBuJiYoZT9uLnNlbGVjdFZpYUludGVyYWN0aW9uKCk6bi5zZWxlY3QoKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QobikpLG59X2luaXRpYWxpemVTZWxlY3Rpb24oKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+eyh0aGlzLm5nQ29udHJvbHx8dGhpcy5fdmFsdWUpJiYodGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0aGlzLm5nQ29udHJvbD90aGlzLm5nQ29udHJvbC52YWx1ZTp0aGlzLl92YWx1ZSwhMSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX0pKX1fY2xlYXJTZWxlY3Rpb24odCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLmNoaXBzLmZvckVhY2goKGU9PntlIT09dCYmZS5kZXNlbGVjdCgpfSkpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fc29ydFZhbHVlcygpe3RoaXMuX211bHRpcGxlJiYodGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLmNoaXBzLmZvckVhY2goKHQ9Pnt0LnNlbGVjdGVkJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCl9KSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fcHJvcGFnYXRlQ2hhbmdlcyh0KXtsZXQgZT1udWxsO2U9QXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkKT90aGlzLnNlbGVjdGVkLm1hcCgodD0+dC52YWx1ZSkpOnRoaXMuc2VsZWN0ZWQ/dGhpcy5zZWxlY3RlZC52YWx1ZTp0LHRoaXMuX3ZhbHVlPWUsdGhpcy5jaGFuZ2UuZW1pdChuZXcgT3l0KHRoaXMsZSkpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdChlKSx0aGlzLl9vbkNoYW5nZShlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1fYmx1cigpe3RoaXMuX2hhc0ZvY3VzZWRDaGlwKCl8fHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSksdGhpcy5kaXNhYmxlZHx8KHRoaXMuX2NoaXBJbnB1dD9zZXRUaW1lb3V0KCgoKT0+e3RoaXMuZm9jdXNlZHx8dGhpcy5fbWFya0FzVG91Y2hlZCgpfSkpOnRoaXMuX21hcmtBc1RvdWNoZWQoKSl9X21hcmtBc1RvdWNoZWQoKXt0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2FsbG93Rm9jdXNFc2NhcGUoKXstMSE9PXRoaXMuX3RhYkluZGV4JiYodGhpcy5fdGFiSW5kZXg9LTEsc2V0VGltZW91dCgoKCk9Pnt0aGlzLl90YWJJbmRleD10aGlzLl91c2VyVGFiSW5kZXh8fDAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfV9yZXNldENoaXBzKCl7dGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzRm9jdXMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzU2VsZWN0aW9uKCksdGhpcy5fbGlzdGVuVG9DaGlwc1JlbW92ZWQoKX1fZHJvcFN1YnNjcmlwdGlvbnMoKXt0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb249bnVsbCl9X2xpc3RlblRvQ2hpcHNTZWxlY3Rpb24oKXt0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uPXRoaXMuY2hpcFNlbGVjdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCh0PT57dC5zb3VyY2Uuc2VsZWN0ZWQ/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KHQuc291cmNlKTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0LnNvdXJjZSksdGhpcy5tdWx0aXBsZXx8dGhpcy5jaGlwcy5mb3JFYWNoKCh0PT57IXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCkmJnQuc2VsZWN0ZWQmJnQuZGVzZWxlY3QoKX0pKSx0LmlzVXNlcklucHV0JiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCl9KSl9X2xpc3RlblRvQ2hpcHNGb2N1cygpe3RoaXMuX2NoaXBGb2N1c1N1YnNjcmlwdGlvbj10aGlzLmNoaXBGb2N1c0NoYW5nZXMuc3Vic2NyaWJlKCh0PT57bGV0IGU9dGhpcy5jaGlwcy50b0FycmF5KCkuaW5kZXhPZih0LmNoaXApO3RoaXMuX2lzVmFsaWRJbmRleChlKSYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKGUpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbj10aGlzLmNoaXBCbHVyQ2hhbmdlcy5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYmx1cigpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fbGlzdGVuVG9DaGlwc1JlbW92ZWQoKXt0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uPXRoaXMuY2hpcFJlbW92ZUNoYW5nZXMuc3Vic2NyaWJlKCh0PT57Y29uc3QgZT10LmNoaXAsbj10aGlzLmNoaXBzLnRvQXJyYXkoKS5pbmRleE9mKHQuY2hpcCk7dGhpcy5faXNWYWxpZEluZGV4KG4pJiZlLl9oYXNGb2N1cyYmKHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bil9KSl9X29yaWdpbmF0ZXNGcm9tQ2hpcCh0KXtsZXQgZT10LnRhcmdldDtmb3IoO2UmJmUhPT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7KXtpZihlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWNoaXAiKSlyZXR1cm4hMDtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMX1faGFzRm9jdXNlZENoaXAoKXtyZXR1cm4gdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5zb21lKCh0PT50Ll9oYXNGb2N1cykpfV9zeW5jQ2hpcHNTdGF0ZSgpe3RoaXMuY2hpcHMmJnRoaXMuY2hpcHMuZm9yRWFjaCgodD0+e3QuX2NoaXBMaXN0RGlzYWJsZWQ9dGhpcy5fZGlzYWJsZWQsdC5fY2hpcExpc3RNdWx0aXBsZT10aGlzLm11bHRpcGxlfSkpfX1QeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFB5dCkoU20oaGcpLFNtKFVnKSxTbShISSw4KSxTbShpVSw4KSxTbShQVSw4KSxTbShiSCksU20oTWosMTApKX0sUHl0Lsm1Y21wPXRvKHt0eXBlOlB5dCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtbGlzdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KGUsbixvKXtpZigxJmUmJiRoKG8sX3l0LDUpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uY2hpcHM9dCl9fSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLWxpc3QiXSxob3N0VmFyczoxNSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChlLG4pezEmZSYmVm0oImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2JsdXIoKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2tleWRvd24oZSl9KSksMiZlJiYoVHUoImlkIixuLl91aWQpLGpwKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD9udWxsOm4uX3RhYkluZGV4KSgiYXJpYS1kZXNjcmliZWRieSIsbi5fYXJpYURlc2NyaWJlZGJ5fHxudWxsKSgiYXJpYS1yZXF1aXJlZCIsbi5yb2xlP24ucmVxdWlyZWQ6bnVsbCkoImFyaWEtZGlzYWJsZWQiLG4uZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtaW52YWxpZCIsbi5lcnJvclN0YXRlKSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLG4ubXVsdGlwbGUpKCJyb2xlIixuLnJvbGUpKCJhcmlhLW9yaWVudGF0aW9uIixuLmFyaWFPcmllbnRhdGlvbikscHUoIm1hdC1jaGlwLWxpc3QtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtY2hpcC1saXN0LWludmFsaWQiLG4uZXJyb3JTdGF0ZSkoIm1hdC1jaGlwLWxpc3QtcmVxdWlyZWQiLG4ucmVxdWlyZWQpKX0saW5wdXRzOnthcmlhT3JpZW50YXRpb246WyJhcmlhLW9yaWVudGF0aW9uIiwiYXJpYU9yaWVudGF0aW9uIl0sbXVsdGlwbGU6Im11bHRpcGxlIixjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgiLHZhbHVlOiJ2YWx1ZSIscmVxdWlyZWQ6InJlcXVpcmVkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGRpc2FibGVkOiJkaXNhYmxlZCIsc2VsZWN0YWJsZToic2VsZWN0YWJsZSIsdGFiSW5kZXg6InRhYkluZGV4IixlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRDaGlwTGlzdCJdLGZlYXR1cmVzOltwZyhbe3Byb3ZpZGU6YlYsdXNlRXhpc3Rpbmc6UHl0fV0pLHhwXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbMSwibWF0LWNoaXAtbGlzdC13cmFwcGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihabSgpLFJtKDAsImRpdiIsMCksWG0oMSksQW0oKSl9LHN0eWxlczpbJy5tYXQtY2hpcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtkaXNwbGF5OmlubGluZS1mbGV4O3BhZGRpbmc6N3B4IDEycHg7Ym9yZGVyLXJhZGl1czoxNnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdDttaW4taGVpZ2h0OjMycHg7aGVpZ2h0OjFweH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9Lm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcnt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO2NvbnRlbnQ6IiI7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtc3RhbmRhcmQtY2hpcDpob3Zlcjo6YWZ0ZXJ7b3BhY2l0eTouMTJ9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXM6OmFmdGVye29wYWNpdHk6LjE2fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwe291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQ6OmFmdGVye29wYWNpdHk6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhciwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1ib3R0b206N3B4O3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjRweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDo0cHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsW2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9Lm1hdC1jaGlwLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweH0ubWF0LWNoaXAtbGlzdC13cmFwcGVyIGlucHV0Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe21hcmdpbjo0cHh9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7d2lkdGg6MTAwJX0ubWF0LWNoaXAtYXZhdGFye2JvcmRlci1yYWRpdXM6NTAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47b2JqZWN0LWZpdDpjb3Zlcn1pbnB1dC5tYXQtY2hpcC1pbnB1dHt3aWR0aDoxNTBweDttYXJnaW46NHB4O2ZsZXg6MSAwIDE1MHB4fVxuJ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksUHl0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aGd9LHt0eXBlOlVnfSx7dHlwZTpISSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTppVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpQVSxkZWNvcmF0b3JzOlt7dHlwZTpTcn1dfSx7dHlwZTpiSH0se3R5cGU6TWosZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOkRyfV19XSxQeXQucHJvcERlY29yYXRvcnM9e2Vycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTp4eX1dLG11bHRpcGxlOlt7dHlwZTp4eX1dLGNvbXBhcmVXaXRoOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLHJlcXVpcmVkOlt7dHlwZTp4eX1dLHBsYWNlaG9sZGVyOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dLGFyaWFPcmllbnRhdGlvbjpbe3R5cGU6eHksYXJnczpbImFyaWEtb3JpZW50YXRpb24iXX1dLHNlbGVjdGFibGU6W3t0eXBlOnh5fV0sdGFiSW5kZXg6W3t0eXBlOnh5fV0sY2hhbmdlOlt7dHlwZTpPeX1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpPeX1dLGNoaXBzOlt7dHlwZTpZYSxhcmdzOltfeXQse2Rlc2NlbmRhbnRzOiEwfV19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChQeXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtbGlzdCIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9Im1hdC1jaGlwLWxpc3Qtd3JhcHBlciI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PicsZXhwb3J0QXM6Im1hdENoaXBMaXN0Iixob3N0OnsiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyBudWxsIDogX3RhYkluZGV4IiwiW2F0dHIuYXJpYS1kZXNjcmliZWRieV0iOiJfYXJpYURlc2NyaWJlZGJ5IHx8IG51bGwiLCJbYXR0ci5hcmlhLXJlcXVpcmVkXSI6InJvbGUgPyByZXF1aXJlZCA6IG51bGwiLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkLnRvU3RyaW5nKCkiLCJbYXR0ci5hcmlhLWludmFsaWRdIjoiZXJyb3JTdGF0ZSIsIlthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXSI6Im11bHRpcGxlIiwiW2F0dHIucm9sZV0iOiJyb2xlIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWNoaXAtbGlzdC1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbY2xhc3MubWF0LWNoaXAtbGlzdC1yZXF1aXJlZF0iOiJyZXF1aXJlZCIsIlthdHRyLmFyaWEtb3JpZW50YXRpb25dIjoiYXJpYU9yaWVudGF0aW9uIixjbGFzczoibWF0LWNoaXAtbGlzdCIsIihmb2N1cykiOiJmb2N1cygpIiwiKGJsdXIpIjoiX2JsdXIoKSIsIihrZXlkb3duKSI6Il9rZXlkb3duKCRldmVudCkiLCJbaWRdIjoiX3VpZCJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6YlYsdXNlRXhpc3Rpbmc6UHl0fV0sZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsc3R5bGVzOlsnLm1hdC1jaGlwe3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246Ym94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2Rpc3BsYXk6aW5saW5lLWZsZXg7cGFkZGluZzo3cHggMTJweDtib3JkZXItcmFkaXVzOjE2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2N1cnNvcjpkZWZhdWx0O21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MXB4fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweH0ubWF0LXN0YW5kYXJkLWNoaXA6OmFmdGVye3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvcGFjaXR5OjA7Y29udGVudDoiIjtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1zdGFuZGFyZC1jaGlwOmhvdmVyOjphZnRlcntvcGFjaXR5Oi4xMn0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1czo6YWZ0ZXJ7b3BhY2l0eTouMTZ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXB7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZDo6YWZ0ZXJ7b3BhY2l0eTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFyLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctdG9wOjdweDtwYWRkaW5nLWJvdHRvbTo3cHg7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6NHB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjRweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweDtjdXJzb3I6cG9pbnRlcn0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSxbZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH0ubWF0LWNoaXAtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0O292ZXJmbG93OmhpZGRlbn0ubWF0LWNoaXAtbGlzdC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjotNHB4fS5tYXQtY2hpcC1saXN0LXdyYXBwZXIgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7bWFyZ2luOjRweH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHt3aWR0aDoxMDAlfS5tYXQtY2hpcC1hdmF0YXJ7Ym9yZGVyLXJhZGl1czo1MCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtvYmplY3QtZml0OmNvdmVyfWlucHV0Lm1hdC1jaGlwLWlucHV0e3dpZHRoOjE1MHB4O21hcmdpbjo0cHg7ZmxleDoxIDAgMTUwcHh9XG4nXX1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhnfSx7dHlwZTpVZ30se3R5cGU6SEksZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6aVUsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6UFUsZGVjb3JhdG9yczpbe3R5cGU6U3J9XX0se3R5cGU6Ykh9LHt0eXBlOk1qLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTpEcn1dfV19KSx7YXJpYU9yaWVudGF0aW9uOlt7dHlwZTp4eSxhcmdzOlsiYXJpYS1vcmllbnRhdGlvbiJdfV0sY2hhbmdlOlt7dHlwZTpPeX1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpPeX1dLG11bHRpcGxlOlt7dHlwZTp4eX1dLGNvbXBhcmVXaXRoOlt7dHlwZTp4eX1dLHZhbHVlOlt7dHlwZTp4eX1dLHJlcXVpcmVkOlt7dHlwZTp4eX1dLHBsYWNlaG9sZGVyOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dLHNlbGVjdGFibGU6W3t0eXBlOnh5fV0sdGFiSW5kZXg6W3t0eXBlOnh5fV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOnh5fV0sY2hpcHM6W3t0eXBlOllhLGFyZ3M6W195dCx7ZGVzY2VuZGFudHM6ITB9XX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgd3l0PTA7Y2xhc3Mga3l0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2RlZmF1bHRPcHRpb25zPWUsdGhpcy5mb2N1c2VkPSExLHRoaXMuX2FkZE9uQmx1cj0hMSx0aGlzLnNlcGFyYXRvcktleUNvZGVzPXRoaXMuX2RlZmF1bHRPcHRpb25zLnNlcGFyYXRvcktleUNvZGVzLHRoaXMuY2hpcEVuZD1uZXcgTGgsdGhpcy5wbGFjZWhvbGRlcj0iIix0aGlzLmlkPSJtYXQtY2hpcC1saXN0LWlucHV0LSIrd3l0KyssdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5pbnB1dEVsZW1lbnQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50fXNldCBjaGlwTGlzdCh0KXt0JiYodGhpcy5fY2hpcExpc3Q9dCx0aGlzLl9jaGlwTGlzdC5yZWdpc3RlcklucHV0KHRoaXMpKX1nZXQgYWRkT25CbHVyKCl7cmV0dXJuIHRoaXMuX2FkZE9uQmx1cn1zZXQgYWRkT25CbHVyKHQpe3RoaXMuX2FkZE9uQmx1cj15eih0KX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR8fHRoaXMuX2NoaXBMaXN0JiZ0aGlzLl9jaGlwTGlzdC5kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9eXoodCl9Z2V0IGVtcHR5KCl7cmV0dXJuIXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlfW5nT25DaGFuZ2VzKCl7dGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuY2hpcEVuZC5jb21wbGV0ZSgpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT10aGlzLmVtcHR5fV9rZXlkb3duKHQpe2lmKHQpe2lmKDkhPT10LmtleUNvZGV8fGJ6KHQsInNoaWZ0S2V5Iil8fHRoaXMuX2NoaXBMaXN0Ll9hbGxvd0ZvY3VzRXNjYXBlKCksOD09PXQua2V5Q29kZSYmdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlKXJldHVybiB0aGlzLl9jaGlwTGlzdC5fa2V5TWFuYWdlci5zZXRMYXN0SXRlbUFjdGl2ZSgpLHZvaWQgdC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT0hMX10aGlzLl9lbWl0Q2hpcEVuZCh0KX1fa2V5dXAodCl7IXRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSYmOD09PXQua2V5Q29kZSYmdGhpcy5lbXB0eSYmKHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT0hMCx0LnByZXZlbnREZWZhdWx0KCkpfV9ibHVyKCl7dGhpcy5hZGRPbkJsdXImJnRoaXMuX2VtaXRDaGlwRW5kKCksdGhpcy5mb2N1c2VkPSExLHRoaXMuX2NoaXBMaXN0LmZvY3VzZWR8fHRoaXMuX2NoaXBMaXN0Ll9ibHVyKCksdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZm9jdXMoKXt0aGlzLmZvY3VzZWQ9ITAsdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPXRoaXMuZW1wdHksdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZW1pdENoaXBFbmQodCl7IXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiZ0JiZ0aGlzLl9jaGlwTGlzdC5fa2V5ZG93bih0KSx0JiYhdGhpcy5faXNTZXBhcmF0b3JLZXkodCl8fCh0aGlzLmNoaXBFbmQuZW1pdCh7aW5wdXQ6dGhpcy5pbnB1dEVsZW1lbnQsdmFsdWU6dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUsY2hpcElucHV0OnRoaXN9KSxudWxsPT10fHx0LnByZXZlbnREZWZhdWx0KCkpfV9vbklucHV0KCl7dGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1mb2N1cyh0KXt0aGlzLmlucHV0RWxlbWVudC5mb2N1cyh0KX1jbGVhcigpe3RoaXMuaW5wdXRFbGVtZW50LnZhbHVlPSIiLHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT0hMH1faXNTZXBhcmF0b3JLZXkodCl7cmV0dXJuIWJ6KHQpJiZuZXcgU2V0KHRoaXMuc2VwYXJhdG9yS2V5Q29kZXMpLmhhcyh0LmtleUNvZGUpfX1reXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGt5dCkoU20oaGcpLFNtKE15dCkpfSxreXQuybVkaXI9bG8oe3R5cGU6a3l0LHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdENoaXBJbnB1dEZvciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLWlucHV0IiwibWF0LWlucHV0LWVsZW1lbnQiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX2tleWRvd24oZSl9KSkoImtleXVwIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5fa2V5dXAoZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2JsdXIoKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uX2ZvY3VzKCl9KSkoImlucHV0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbklucHV0KCl9KSksMiZlJiYoVHUoImlkIixuLmlkKSxqcCgiZGlzYWJsZWQiLG4uZGlzYWJsZWR8fG51bGwpKCJwbGFjZWhvbGRlciIsbi5wbGFjZWhvbGRlcnx8bnVsbCkoImFyaWEtaW52YWxpZCIsbi5fY2hpcExpc3QmJm4uX2NoaXBMaXN0Lm5nQ29udHJvbD9uLl9jaGlwTGlzdC5uZ0NvbnRyb2wuaW52YWxpZDpudWxsKSgiYXJpYS1yZXF1aXJlZCIsbi5fY2hpcExpc3QmJm4uX2NoaXBMaXN0LnJlcXVpcmVkfHxudWxsKSl9LGlucHV0czp7c2VwYXJhdG9yS2V5Q29kZXM6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyIsInNlcGFyYXRvcktleUNvZGVzIl0scGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixpZDoiaWQiLGNoaXBMaXN0OlsibWF0Q2hpcElucHV0Rm9yIiwiY2hpcExpc3QiXSxhZGRPbkJsdXI6WyJtYXRDaGlwSW5wdXRBZGRPbkJsdXIiLCJhZGRPbkJsdXIiXSxkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOntjaGlwRW5kOiJtYXRDaGlwSW5wdXRUb2tlbkVuZCJ9LGV4cG9ydEFzOlsibWF0Q2hpcElucHV0IiwibWF0Q2hpcElucHV0Rm9yIl0sZmVhdHVyZXM6W0JvXX0pLGt5dC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbTXl0XX1dfV0sa3l0LnByb3BEZWNvcmF0b3JzPXtjaGlwTGlzdDpbe3R5cGU6eHksYXJnczpbIm1hdENoaXBJbnB1dEZvciJdfV0sYWRkT25CbHVyOlt7dHlwZTp4eSxhcmdzOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIl19XSxzZXBhcmF0b3JLZXlDb2Rlczpbe3R5cGU6eHksYXJnczpbIm1hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzIl19XSxjaGlwRW5kOlt7dHlwZTpPeSxhcmdzOlsibWF0Q2hpcElucHV0VG9rZW5FbmQiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTp4eX1dLGlkOlt7dHlwZTp4eX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dfSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGt5dCxbe3R5cGU6Q3ksYXJnczpbe3NlbGVjdG9yOiJpbnB1dFttYXRDaGlwSW5wdXRGb3JdIixleHBvcnRBczoibWF0Q2hpcElucHV0LCBtYXRDaGlwSW5wdXRGb3IiLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcC1pbnB1dCBtYXQtaW5wdXQtZWxlbWVudCIsIihrZXlkb3duKSI6Il9rZXlkb3duKCRldmVudCkiLCIoa2V5dXApIjoiX2tleXVwKCRldmVudCkiLCIoYmx1cikiOiJfYmx1cigpIiwiKGZvY3VzKSI6Il9mb2N1cygpIiwiKGlucHV0KSI6Il9vbklucHV0KCkiLCJbaWRdIjoiaWQiLCJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2F0dHIucGxhY2Vob2xkZXJdIjoicGxhY2Vob2xkZXIgfHwgbnVsbCIsIlthdHRyLmFyaWEtaW52YWxpZF0iOiJfY2hpcExpc3QgJiYgX2NoaXBMaXN0Lm5nQ29udHJvbCA/IF9jaGlwTGlzdC5uZ0NvbnRyb2wuaW52YWxpZCA6IG51bGwiLCJbYXR0ci5hcmlhLXJlcXVpcmVkXSI6Il9jaGlwTGlzdCAmJiBfY2hpcExpc3QucmVxdWlyZWQgfHwgbnVsbCJ9fV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6aGd9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTprcixhcmdzOltNeXRdfV19XX0pLHtzZXBhcmF0b3JLZXlDb2Rlczpbe3R5cGU6eHksYXJnczpbIm1hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzIl19XSxjaGlwRW5kOlt7dHlwZTpPeSxhcmdzOlsibWF0Q2hpcElucHV0VG9rZW5FbmQiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTp4eX1dLGlkOlt7dHlwZTp4eX1dLGNoaXBMaXN0Olt7dHlwZTp4eSxhcmdzOlsibWF0Q2hpcElucHV0Rm9yIl19XSxhZGRPbkJsdXI6W3t0eXBlOnh5LGFyZ3M6WyJtYXRDaGlwSW5wdXRBZGRPbkJsdXIiXX1dLGRpc2FibGVkOlt7dHlwZTp4eX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBTeXQ9W1B5dCxfeXQsa3l0LEN5dCxieXQseXl0XSxEeXQ9e3NlcGFyYXRvcktleUNvZGVzOlttel19O2NsYXNzIEV5dHt9RXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxFeXQpfSxFeXQuybVtb2Q9YW8oe3R5cGU6RXl0fSksRXl0Lsm1aW5qPXZuKHtwcm92aWRlcnM6W2JILHtwcm92aWRlOk15dCx1c2VWYWx1ZTpEeXR9XSxpbXBvcnRzOltbWEldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoRXl0LFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbWEldLGV4cG9ydHM6U3l0LGRlY2xhcmF0aW9uczpTeXQscHJvdmlkZXJzOltiSCx7cHJvdmlkZTpNeXQsdXNlVmFsdWU6RHl0fV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhFeXQse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltQeXQsX3l0LGt5dCxDeXQsYnl0LHl5dF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWEldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1B5dCxfeXQsa3l0LEN5dCxieXQseXl0XX19KTtjb25zdCBSeXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm57ImVtYmVkZGluZy1zZWxlY3RlZCI6dCwiZW1iZWRkaW5nLXVuc2VsZWN0ZWQiOmV9fTtmdW5jdGlvbiBBeXQodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJtYXQtaWNvbiIsNSksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe2hpKHQpO2NvbnN0IG49WW0oKTtyZXR1cm4gbi5vblNlbGVjdC5lbWl0KG4ubWV0cmljKX0pKSxBbSgpfWlmKDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJuZ0NsYXNzIix2aCgxLFJ5dCx0LmVtYmVkZGluZ3NNZXRyaWM9PT10Lm1ldHJpYyx0LmVtYmVkZGluZ3NNZXRyaWMhPT10Lm1ldHJpYykpfX1jb25zdCBUeXQ9ZnVuY3Rpb24odCl7cmV0dXJue3dpZHRoOnR9fSxOeXQ9ZnVuY3Rpb24odCl7cmV0dXJueyJ2YWx1ZS1pbnZhbGlkIjp0fX07Y2xhc3Mgenl0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlbW92ZT1uZXcgTGgsdGhpcy5vblNlbGVjdD1uZXcgTGgsdGhpcy5vbkZpbHRlckNoYW5nZT1uZXcgTGgsdGhpcy5mb2N1c01pbj0hMSx0aGlzLmZvY3VzTWF4PSExLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSX1uZ09uSW5pdCgpe3RoaXMubWluRm9ybUNvbnRyb2w9bmV3ICRqKHRoaXMuZmlsdGVyVmFsdWVzLm1pbixbcVYucmVxdWlyZWQscVYubWluKC0xKSxxVi5tYXgoMSksdGhpcy5taW5WYWx1ZVZhbGlkYXRvci5iaW5kKHRoaXMpXSksdGhpcy5tYXhGb3JtQ29udHJvbD1uZXcgJGoodGhpcy5maWx0ZXJWYWx1ZXMubWF4LFtxVi5yZXF1aXJlZCxxVi5taW4oLTEpLHFWLm1heCgxKSx0aGlzLm1heFZhbHVlVmFsaWRhdG9yLmJpbmQodGhpcyldKSx0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKEllKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm1pbkZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm1heEZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQoe21pbjpwYXJzZUZsb2F0KHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUpLG1heDpwYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpfSl9KSksdGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShJZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5taW5Gb3JtQ29udHJvbC52YWxpZCYmdGhpcy5tYXhGb3JtQ29udHJvbC52YWxpZCYmdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHttaW46cGFyc2VGbG9hdCh0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlKSxtYXg6cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKX0pfSkpfW5nT25DaGFuZ2VzKHQpe3RoaXMubWluRm9ybUNvbnRyb2wmJnRoaXMubWF4Rm9ybUNvbnRyb2wmJih0aGlzLm1pbkZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZmlsdGVyVmFsdWVzLm1pbix7ZW1pdEV2ZW50OiExfSksdGhpcy5tYXhGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpbHRlclZhbHVlcy5tYXgse2VtaXRFdmVudDohMX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bWluVmFsdWVWYWxpZGF0b3IodCl7cmV0dXJuIHRoaXMubWF4Rm9ybUNvbnRyb2wmJiJOYU4iIT09dC52YWx1ZT9pc05hTihwYXJzZUZsb2F0KHQudmFsdWUpKT97dmFsdWU6InRoZSBzdHJpbmcgeW91IGVudGVyZWQgaXMgbmVpdGhlciBOYU4gbm9yIGEgbnVtYmVyIn06cGFyc2VGbG9hdCh0LnZhbHVlKT5wYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpP3t2YWx1ZToidGhlIG51bWJlciB5b3UgZW50ZXJlZCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IHZhbHVlIn06bnVsbDpudWxsfW1heFZhbHVlVmFsaWRhdG9yKHQpe3JldHVybiB0aGlzLm1pbkZvcm1Db250cm9sPyJOYU4iPT09dGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZSYmIk5hTiI9PT10LnZhbHVlP251bGw6aXNOYU4ocGFyc2VGbG9hdCh0LnZhbHVlKSk/e3ZhbHVlOiJ0aGUgc3RyaW5nIHlvdSBlbnRlcmVkIGlzIG5laXRoZXIgTmFOIG5vciBhIG51bWJlciJ9OnQudmFsdWU8dGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZT97dmFsdWU6InRoZSBudW1iZXIgeW91IGVudGVyZWQgaXMgc21hbGxlciB0aGFuIHRoZSBtaW4gdmFsdWUifTpudWxsOm51bGx9Z2V0RXJyb3JEZXNjcmlwdGlvbih0KXtpZih0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpWzBdO3JldHVybiJyZXF1aXJlZCI9PT1lPyJ5b3UgZGlkIG5vdCBlbnRlciBhbnl0aGluZyI6Im1pbiI9PT1lPyJ0aGUgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgLTEuMCI6Im1heCI9PT1lPyJ0aGUgbnVtYmVyIGlzIGJpZ2dlciB0aGFuIDEuMCI6dFtlXX1yZXR1cm4iIn19enl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx6eXQpfSx6eXQuybVjbXA9dG8oe3R5cGU6enl0LHNlbGVjdG9yczpbWyJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudCJdXSxpbnB1dHM6e21ldHJpYzoibWV0cmljIixmaWx0ZXJWYWx1ZXM6ImZpbHRlclZhbHVlcyIsaGFzRW1iZWRkaW5nc0RhdGE6Imhhc0VtYmVkZGluZ3NEYXRhIixlbWJlZGRpbmdzTWV0cmljOiJlbWJlZGRpbmdzTWV0cmljIn0sb3V0cHV0czp7b25SZW1vdmU6Im9uUmVtb3ZlIixvblNlbGVjdDoib25TZWxlY3QiLG9uRmlsdGVyQ2hhbmdlOiJvbkZpbHRlckNoYW5nZSJ9LGZlYXR1cmVzOltCb10sZGVjbHM6MTAsdmFyczoyMixjb25zdHM6W1sxLCJmaWx0ZXItY2hpcCIsMywicmVtb3ZlZCJdLFsiY2xhc3MiLCJlbWJlZGRpbmdzLWJ1dHRvbiIsInN2Z0ljb24iLCJncm91cF93b3JrXzI0cHgiLDMsIm5nQ2xhc3MiLCJjbGljayIsNCwibmdJZiJdLFsxLCJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LXJhbmdlIiwzLCJrZXlkb3duIl0sWyJtYXRJbnB1dCIsIiIsMSwiaW5wdXQtZmllbGQiLDMsInZhbHVlIiwibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm5nU3R5bGUiLCJuZ0NsYXNzIiwiZm9ybUNvbnRyb2wiLCJmb2N1cyIsImZvY3Vzb3V0Il0sWyJtYXRDaGlwUmVtb3ZlIiwiIiwic3ZnSWNvbiIsImNhbmNlbF8yNHB4Il0sWyJzdmdJY29uIiwiZ3JvdXBfd29ya18yNHB4IiwxLCJlbWJlZGRpbmdzLWJ1dHRvbiIsMywibmdDbGFzcyIsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtYXQtY2hpcCIsMCksVm0oInJlbW92ZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZW1vdmUuZW1pdChuLm1ldHJpYyl9KSksUXAoMSxBeXQsMSw0LCJtYXQtaWNvbiIsMSksa3UoMiksUm0oMywiZGl2IiwyKSxWbSgia2V5ZG93biIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksa3UoNCwiIFsgIiksUm0oNSwiaW5wdXQiLDMpLFZtKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1c01pbj0hMH0pKSgiZm9jdXNvdXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uZm9jdXNNaW49ITF9KSksQW0oKSxrdSg2LCIgOyAiKSxSbSg3LCJpbnB1dCIsMyksVm0oImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLmZvY3VzTWF4PSEwfSkpKCJmb2N1c291dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5mb2N1c01heD0hMX0pKSxBbSgpLGt1KDgsIiBdICIpLEFtKCksVG0oOSwibWF0LWljb24iLDQpLEFtKCkpLDImZSYmKHJjKDEpLERtKCJuZ0lmIixuLmhhc0VtYmVkZGluZ3NEYXRhKSxyYygxKSxEdSgiICIsbi5tZXRyaWMsIiAiKSxyYygzKSxEbSgidmFsdWUiLG4uZmlsdGVyVmFsdWVzLm1pbikoIm1hdFRvb2x0aXAiLG4uZ2V0RXJyb3JEZXNjcmlwdGlvbihuLm1pbkZvcm1Db250cm9sLmVycm9ycykpKCJtYXRUb29sdGlwRGlzYWJsZWQiLCFuLm1pbkZvcm1Db250cm9sLmludmFsaWQpKCJuZ1N0eWxlIixNaCgxNCxUeXQsbi5mb2N1c01pbj8iMTAwcHgiOm4ubWluRm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgrImNoIikpKCJuZ0NsYXNzIixNaCgxNixOeXQsIW4ubWluRm9ybUNvbnRyb2wudmFsaWQpKSgiZm9ybUNvbnRyb2wiLG4ubWluRm9ybUNvbnRyb2wpLHJjKDIpLERtKCJ2YWx1ZSIsbi5maWx0ZXJWYWx1ZXMubWF4KSgibWF0VG9vbHRpcCIsbi5nZXRFcnJvckRlc2NyaXB0aW9uKG4ubWF4Rm9ybUNvbnRyb2wuZXJyb3JzKSkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsIW4ubWF4Rm9ybUNvbnRyb2wuaW52YWxpZCkoIm5nU3R5bGUiLE1oKDE4LFR5dCxuLmZvY3VzTWF4PyIxMDBweCI6bi5tYXhGb3JtQ29udHJvbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCsiY2giKSkoIm5nQ2xhc3MiLE1oKDIwLE55dCwhbi5tYXhGb3JtQ29udHJvbC52YWxpZCkpKCJmb3JtQ29udHJvbCIsbi5tYXhGb3JtQ29udHJvbCkpfSxkaXJlY3RpdmVzOltfeXQsZE0sVlYsRlEsQ00sYU0seGoseFUsRFcsQ3l0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZmlsdGVyLWNoaXBbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7bWFyZ2luLWxlZnQ6NXB4fS5tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2ZvbnQtc2l6ZTouOGVtO2hlaWdodDozMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bGluZS1oZWlnaHQ6MzBweDtwYWRkaW5nOjAgNXB4O21hcmdpbi1sZWZ0OjVweH0uaW5wdXQtZmllbGRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxLjFlbTt0cmFuc2l0aW9uOndpZHRoIDFzfS5pbnB1dC1maWVsZFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lfS52YWx1ZS1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5lbWJlZGRpbmctc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDA7b3BhY2l0eToxfS5lbWJlZGRpbmctdW5zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0uZW1iZWRkaW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXJpZ2h0OjhweDtjdXJzb3I6cG9pbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoenl0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tZXRyaWNfYXJpdGhtZXRpY19lbGVtZW50X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL21ldHJpY19hcml0aG1ldGljX2VsZW1lbnRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse21ldHJpYzpbe3R5cGU6eHl9XSxmaWx0ZXJWYWx1ZXM6W3t0eXBlOnh5fV0saGFzRW1iZWRkaW5nc0RhdGE6W3t0eXBlOnh5fV0sZW1iZWRkaW5nc01ldHJpYzpbe3R5cGU6eHl9XSxvblJlbW92ZTpbe3R5cGU6T3l9XSxvblNlbGVjdDpbe3R5cGU6T3l9XSxvbkZpbHRlckNoYW5nZTpbe3R5cGU6T3l9XX0pO2NsYXNzIEl5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5maWx0ZXJWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShGdyhnYnQpKS5waXBlKEl0KCh0PT57Y29uc3QgZT10W3RoaXMubWV0cmljXTtyZXR1cm4gZT97bWluOmUuaW5jbHVkZU5hTj8iTmFOIjp0aGlzLnJvdW5kVG9UaHJlZURlY2ltYWxQb2ludHMoZS5taW4pLG1heDplLm1heDxlLm1pbj8iTmFOIjp0aGlzLnJvdW5kVG9UaHJlZURlY2ltYWxQb2ludHMoZS5tYXgpfTp7bWluOi0xLG1heDoxfX0pKSksdGhpcy5oYXNFbWJlZGRpbmdzRGF0YSQ9dGhpcy5zdG9yZS5waXBlKEZ3KGxidCkpLnBpcGUoSXQoKHQ9PnZvaWQgMCE9PXQpKSksdGhpcy5lbWJlZGRpbmdzTWV0cmljJD10aGlzLnN0b3JlLnBpcGUoRncoT2J0KSl9cmVtb3ZlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTGJ0KHttZXRyaWM6dH0pKX1zZWxlY3QodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChaYnQoe21ldHJpYzp0fSkpfWZpbHRlckNoYW5nZSh0KXtjb25zdCBlPWlzTmFOKHQubWluKT8tMTp0Lm1pbixuPWlzTmFOKHQubWF4KT8tMjp0Lm1heCxvPWlzTmFOKHQubWluKTt0aGlzLnN0b3JlLmRpc3BhdGNoKEJidCh7bWV0cmljOnRoaXMubWV0cmljLG1heDpuLG1pbjplLGluY2x1ZGVOYU46b30pKX1yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKHQpe3JldHVybiBNYXRoLnJvdW5kKDFlMyoodCtOdW1iZXIuRVBTSUxPTikpLzFlM319SXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJeXQpKFNtKEl3KSl9LEl5dC7JtWNtcD10byh7dHlwZTpJeXQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCJdXSxpbnB1dHM6e21ldHJpYzoibWV0cmljIn0sZGVjbHM6NCx2YXJzOjEwLGNvbnN0czpbWzMsIm1ldHJpYyIsImZpbHRlclZhbHVlcyIsImhhc0VtYmVkZGluZ3NEYXRhIiwiZW1iZWRkaW5nc01ldHJpYyIsIm9uUmVtb3ZlIiwib25TZWxlY3QiLCJvbkZpbHRlckNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQiLDApLFZtKCJvblJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucmVtb3ZlKGUpfSkpKCJvblNlbGVjdCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uc2VsZWN0KGUpfSkpKCJvbkZpbHRlckNoYW5nZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uZmlsdGVyQ2hhbmdlKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFtKCkpLDImZSYmRG0oIm1ldHJpYyIsbi5tZXRyaWMpKCJmaWx0ZXJWYWx1ZXMiLFRoKDEsNCxuLmZpbHRlclZhbHVlcyQpKSgiaGFzRW1iZWRkaW5nc0RhdGEiLFRoKDIsNixuLmhhc0VtYmVkZGluZ3NEYXRhJCkpKCJlbWJlZGRpbmdzTWV0cmljIixUaCgzLDgsbi5lbWJlZGRpbmdzTWV0cmljJCkpfSxkaXJlY3RpdmVzOlt6eXRdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChJeXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50Iix0ZW1wbGF0ZTonXG4gICAgPG1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50XG4gICAgICBbbWV0cmljXT0ibWV0cmljIlxuICAgICAgW2ZpbHRlclZhbHVlc109ImZpbHRlclZhbHVlcyQgfCBhc3luYyJcbiAgICAgIFtoYXNFbWJlZGRpbmdzRGF0YV09Imhhc0VtYmVkZGluZ3NEYXRhJCB8IGFzeW5jIlxuICAgICAgW2VtYmVkZGluZ3NNZXRyaWNdPSJlbWJlZGRpbmdzTWV0cmljJCB8IGFzeW5jIlxuICAgICAgKG9uUmVtb3ZlKT0icmVtb3ZlKCRldmVudCkiXG4gICAgICAob25TZWxlY3QpPSJzZWxlY3QoJGV2ZW50KSJcbiAgICAgIChvbkZpbHRlckNoYW5nZSk9ImZpbHRlckNoYW5nZSgkZXZlbnQpIlxuICAgID48L21ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSkse21ldHJpYzpbe3R5cGU6eHl9XX0pO2NsYXNzIEh5dHtjb25zdHJ1Y3Rvcigpe3RoaXMuT3BlcmF0b3I9JGh0fX1mdW5jdGlvbiBGeXQodCxlKXsxJnQmJlRtKDAsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsNCksMiZ0JiZEbSgibWV0cmljIixZbSgpLiRpbXBsaWNpdC5tZXRyaWMpfWZ1bmN0aW9uIEx5dCh0LGUpezEmdCYmVG0oMCwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsNSksMiZ0JiZEbSgib3BlcmF0b3IiLFltKCkuJGltcGxpY2l0Lm9wZXJhdG9yKX1mdW5jdGlvbiBCeXQodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiKSxRcCgxLEZ5dCwxLDEsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsMiksUXAoMixMeXQsMSwxLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIiwzKSxBbSgpKSwyJnQpe2NvbnN0IHQ9ZS4kaW1wbGljaXQsbj1ZbSgpO3JjKDEpLERtKCJuZ0lmIix0LmtpbmQ9PT1uLkFyaXRobWV0aWNLaW5kLk1FVFJJQykscmMoMSksRG0oIm5nSWYiLHQua2luZD09PW4uQXJpdGhtZXRpY0tpbmQuT1BFUkFUT1IpfX1IeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEh5dCl9LEh5dC7JtWNtcD10byh7dHlwZTpIeXQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLWFyaXRobWV0aWMtb3BlcmF0b3IiXV0saW5wdXRzOntvcGVyYXRvcjoib3BlcmF0b3IifSxkZWNsczoyLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibWF0LWNoaXAiKSxrdSgxKSxBbSgpKSwyJmUmJihyYygxKSxEdSgiICIsbi5vcGVyYXRvcj09PW4uT3BlcmF0b3IuQU5EPyImIjoiIiwiICIpKX0sZGlyZWN0aXZlczpbX3l0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEh5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIix0ZW1wbGF0ZToiXG4gICAgPG1hdC1jaGlwPlxuICAgICAge3sgb3BlcmF0b3IgPT09IE9wZXJhdG9yLkFORCA/ICcmJyA6ICcnIH19XG4gICAgPC9tYXQtY2hpcD5cbiAgIixjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHtvcGVyYXRvcjpbe3R5cGU6eHl9XX0pO2NsYXNzIFZ5dHtjb25zdHJ1Y3Rvcigpe3RoaXMuQXJpdGhtZXRpY0tpbmQ9dGJ0fX1WeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFZ5dCl9LFZ5dC7JtWNtcD10byh7dHlwZTpWeXQsc2VsZWN0b3JzOltbIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCJdXSxpbnB1dHM6e21ldHJpY0FyaXRobWV0aWM6Im1ldHJpY0FyaXRobWV0aWMifSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1szLCJzZWxlY3RhYmxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJtZXRyaWMiLDQsIm5nSWYiXSxbMywib3BlcmF0b3IiLDQsIm5nSWYiXSxbMywibWV0cmljIl0sWzMsIm9wZXJhdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtYXQtY2hpcC1saXN0IiwwKSxRcCgxLEJ5dCwzLDIsImRpdiIsMSksQW0oKSksMiZlJiYoRG0oInNlbGVjdGFibGUiLCExKSxyYygxKSxEbSgibmdGb3JPZiIsbi5tZXRyaWNBcml0aG1ldGljKSl9LGRpcmVjdGl2ZXM6W1B5dCxsTSxkTSxJeXQsSHl0XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWeXQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9tZXRyaWNfYXJpdGhtZXRpY19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7bWV0cmljQXJpdGhtZXRpYzpbe3R5cGU6eHl9XX0pO2NsYXNzIGp5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5tZXRyaWNBcml0aG1ldGljJD10aGlzLnN0b3JlLnBpcGUoRncoZmJ0KSl9fWp5dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8anl0KShTbShJdykpfSxqeXQuybVjbXA9dG8oe3R5cGU6anl0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsIm1ldHJpY0FyaXRobWV0aWMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsIm1ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudCIsMCksQWgoMSwiYXN5bmMiKSksMiZlJiZEbSgibWV0cmljQXJpdGhtZXRpYyIsVGgoMSwxLG4ubWV0cmljQXJpdGhtZXRpYyQpKX0sZGlyZWN0aXZlczpbVnl0XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoanl0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWV0cmljLWFyaXRobWV0aWMiLHRlbXBsYXRlOidcbiAgICA8bWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50XG4gICAgICBbbWV0cmljQXJpdGhtZXRpY109Im1ldHJpY0FyaXRobWV0aWMkIHwgYXN5bmMiXG4gICAgPjwvbWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgVXl0e31mdW5jdGlvbiBHeXQodCxlLG4pe2lmKG4pcmV0dXJuIHQ7Y29uc3Qgbz1PYmplY3QuYXNzaWduKHt9LHQpO3JldHVybiBlLmZvckVhY2goKHQ9PmRlbGV0ZSBvW3RdKSksb31VeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFV5dCl9LFV5dC7JtWNtcD10byh7dHlwZTpVeXQsc2VsZWN0b3JzOltbIm5wbWktZGF0YS1zZWxlY3Rpb24iXV0sZGVjbHM6NCx2YXJzOjAsY29uc3RzOltbMSwiZGF0YS1zZWxlY3Rpb24iXSxbMSwibWV0cmljcy1zZWxlY3RvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxUbSgxLCJucG1pLW1ldHJpYy1zZWFyY2giLDEpLFRtKDIsIm5wbWktcmVzdWx0cy1kb3dubG9hZCIpLEFtKCksVG0oMywibnBtaS1tZXRyaWMtYXJpdGhtZXRpYyIpKX0sZGlyZWN0aXZlczpbbHl0LG15dCxqeXRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO3BhZGRpbmc6MTBweCAyMHB4fS5kYXRhLXNlbGVjdGlvbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWV0cmljcy1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFV5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLWRhdGEtc2VsZWN0aW9uIix0ZW1wbGF0ZVVybDoiLi9kYXRhX3NlbGVjdGlvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9kYXRhX3NlbGVjdGlvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCxudWxsKTtjb25zdCBXeXQ9WyJjaGFydCJdO2NsYXNzIFl5dHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZW1vdmU9bmV3IExoLHRoaXMub25VcGRhdGVGaWx0ZXI9bmV3IExoLHRoaXMuaGVpZ2h0PTMwMCx0aGlzLmNoYXJ0V2lkdGg9MCx0aGlzLmNoYXJ0SGVpZ2h0PTAsdGhpcy5kcmF3SGVpZ2h0PTAsdGhpcy5kcmF3V2lkdGg9MCx0aGlzLm1hcmdpbj17dG9wOjIwLHJpZ2h0OjEwLGJvdHRvbToyMCxsZWZ0OjEwfSx0aGlzLmRyYXdNYXJnaW49e3RvcDowLHJpZ2h0OjAsYm90dG9tOjIwLGxlZnQ6MjB9LHRoaXMuYnJ1c2g9KGZ1bmN0aW9uIHQoKXtyZXR1cm4oZnVuY3Rpb24gdChlKXt2YXIgbixvPW90dCxpPW50dCxhPWl0dCxyPSEwLHM9SDUoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxsPTY7ZnVuY3Rpb24gYyh0KXt2YXIgbj10LnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbZXR0KCJvdmVybGF5IildKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLEs5Lm92ZXJsYXkpLm1lcmdlKG4pLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9YXR0KHRoaXMpLmV4dGVudDtKNCh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksdC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtldHQoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsSzkuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIG89dC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKGUuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtvLmV4aXQoKS5yZW1vdmUoKSxvLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIEs5W3QudHlwZV19KSksdC5lYWNoKGQpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIix1KS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuYnJ1c2giLHUpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLGYpLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsZykuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGQoKXt2YXIgdD1KNCh0aGlzKSxlPWF0dCh0aGlzKS5zZWxlY3Rpb247ZT8odC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZVswXVswXSkuYXR0cigieSIsZVswXVsxXSkuYXR0cigid2lkdGgiLGVbMV1bMF0tZVswXVswXSkuYXR0cigiaGVpZ2h0IixlWzFdWzFdLWVbMF1bMV0pLHQuc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGVbdC50eXBlLmxlbmd0aC0xXT9lWzFdWzBdLWwvMjplWzBdWzBdLWwvMn0pKS5hdHRyKCJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuInMiPT09dC50eXBlWzBdP2VbMV1bMV0tbC8yOmVbMF1bMV0tbC8yfSkpLmF0dHIoIndpZHRoIiwoZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/ZVsxXVswXS1lWzBdWzBdK2w6bH0pKS5hdHRyKCJoZWlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4iZSI9PT10LnR5cGV8fCJ3Ij09PXQudHlwZT9lWzFdWzFdLWVbMF1bMV0rbDpsfSkpKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gcCh0LGUsbil7dmFyIG89dC5fX2JydXNoLmVtaXR0ZXI7cmV0dXJuIW98fG4mJm8uY2xlYW4/bmV3IG0odCxlLG4pOm99ZnVuY3Rpb24gbSh0LGUsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MCx0aGlzLmNsZWFuPW59ZnVuY3Rpb24gdSgpe2lmKCghbnx8TDQudG91Y2hlcykmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdCxvLGEscyxsLGMsbSx1LGYsZyxoLGI9dGhpcyx5PUw0LnRhcmdldC5fX2RhdGFfXy50eXBlLF89InNlbGVjdGlvbiI9PT0ociYmTDQubWV0YUtleT95PSJvdmVybGF5Ijp5KT9WOTpyJiZMNC5hbHRLZXk/Rzk6VTksQz1lPT09WDk/bnVsbDokOVt5XSxNPWU9PT1aOT9udWxsOnR0dFt5XSx2PWF0dChiKSx4PXYuZXh0ZW50LE89di5zZWxlY3Rpb24sUD14WzBdWzBdLHc9eFswXVsxXSxrPXhbMV1bMF0sUz14WzFdWzFdLEQ9MCxFPTAsUj1DJiZNJiZyJiZMNC5zaGlmdEtleSxBPUw0LnRvdWNoZXM/cTkoTDQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcik6dDYsVD1BKGIpLE49VCx6PXAoYixhcmd1bWVudHMsITApLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09eT8oTyYmKGY9ITApLHYuc2VsZWN0aW9uPU89W1t0PWU9PT1YOT9QOlRbMF0sYT1lPT09Wjk/dzpUWzFdXSxbbD1lPT09WDk/azp0LG09ZT09PVo5P1M6YV1dKToodD1PWzBdWzBdLGE9T1swXVsxXSxsPU9bMV1bMF0sbT1PWzFdWzFdKSxvPXQscz1hLGM9bCx1PW07dmFyIEk9SjQoYikuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksSD1JLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLEs5W3ldKTtpZihMNC50b3VjaGVzKXoubW92ZWQ9TCx6LmVuZGVkPVY7ZWxzZXt2YXIgRj1KNChMNC52aWV3KS5vbigibW91c2Vtb3ZlLmJydXNoIixMLCEwKS5vbigibW91c2V1cC5icnVzaCIsViwhMCk7ciYmRi5vbigia2V5ZG93bi5icnVzaCIsaiwhMCkub24oImtleXVwLmJydXNoIixVLCEwKSxuNihMNC52aWV3KX1IOSgpLEk4KGIpLGQuY2FsbChiKSx6LnN0YXJ0KCl9ZnVuY3Rpb24gTCgpe3ZhciB0PUEoYik7IVJ8fGd8fGh8fChNYXRoLmFicyh0WzBdLU5bMF0pPk1hdGguYWJzKHRbMV0tTlsxXSk/aD0hMDpnPSEwKSxOPXQsZj0hMCxGOSgpLEIoKX1mdW5jdGlvbiBCKCl7dmFyIGU7c3dpdGNoKEQ9TlswXS1UWzBdLEU9TlsxXS1UWzFdLF8pe2Nhc2Ugajk6Y2FzZSBWOTpDJiYoRD1NYXRoLm1heChQLXQsTWF0aC5taW4oay1sLEQpKSxvPXQrRCxjPWwrRCksTSYmKEU9TWF0aC5tYXgody1hLE1hdGgubWluKFMtbSxFKSkscz1hK0UsdT1tK0UpO2JyZWFrO2Nhc2UgVTk6QzwwPyhEPU1hdGgubWF4KFAtdCxNYXRoLm1pbihrLXQsRCkpLG89dCtELGM9bCk6Qz4wJiYoRD1NYXRoLm1heChQLWwsTWF0aC5taW4oay1sLEQpKSxvPXQsYz1sK0QpLE08MD8oRT1NYXRoLm1heCh3LWEsTWF0aC5taW4oUy1hLEUpKSxzPWErRSx1PW0pOk0+MCYmKEU9TWF0aC5tYXgody1tLE1hdGgubWluKFMtbSxFKSkscz1hLHU9bStFKTticmVhaztjYXNlIEc5OkMmJihvPU1hdGgubWF4KFAsTWF0aC5taW4oayx0LUQqQykpLGM9TWF0aC5tYXgoUCxNYXRoLm1pbihrLGwrRCpDKSkpLE0mJihzPU1hdGgubWF4KHcsTWF0aC5taW4oUyxhLUUqTSkpLHU9TWF0aC5tYXgodyxNYXRoLm1pbihTLG0rRSpNKSkpfWM8byYmKEMqPS0xLGU9dCx0PWwsbD1lLGU9byxvPWMsYz1lLHkgaW4gSjkmJkguYXR0cigiY3Vyc29yIixLOVt5PUo5W3ldXSkpLHU8cyYmKE0qPS0xLGU9YSxhPW0sbT1lLGU9cyxzPXUsdT1lLHkgaW4gUTkmJkguYXR0cigiY3Vyc29yIixLOVt5PVE5W3ldXSkpLHYuc2VsZWN0aW9uJiYoTz12LnNlbGVjdGlvbiksZyYmKG89T1swXVswXSxjPU9bMV1bMF0pLGgmJihzPU9bMF1bMV0sdT1PWzFdWzFdKSxPWzBdWzBdPT09byYmT1swXVsxXT09PXMmJk9bMV1bMF09PT1jJiZPWzFdWzFdPT09dXx8KHYuc2VsZWN0aW9uPVtbbyxzXSxbYyx1XV0sZC5jYWxsKGIpLHouYnJ1c2goKSl9ZnVuY3Rpb24gVigpe2lmKEg5KCksTDQudG91Y2hlcyl7aWYoTDQudG91Y2hlcy5sZW5ndGgpcmV0dXJuO24mJmNsZWFyVGltZW91dChuKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bj1udWxsfSksNTAwKX1lbHNlIG82KEw0LnZpZXcsZiksRi5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7SS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLEguYXR0cigiY3Vyc29yIixLOS5vdmVybGF5KSx2LnNlbGVjdGlvbiYmKE89di5zZWxlY3Rpb24pLHJ0dChPKSYmKHYuc2VsZWN0aW9uPW51bGwsZC5jYWxsKGIpKSx6LmVuZCgpfWZ1bmN0aW9uIGooKXtzd2l0Y2goTDQua2V5Q29kZSl7Y2FzZSAxNjpSPUMmJk07YnJlYWs7Y2FzZSAxODpfPT09VTkmJihDJiYobD1jLUQqQyx0PW8rRCpDKSxNJiYobT11LUUqTSxhPXMrRSpNKSxfPUc5LEIoKSk7YnJlYWs7Y2FzZSAzMjpfIT09VTkmJl8hPT1HOXx8KEM8MD9sPWMtRDpDPjAmJih0PW8tRCksTTwwP209dS1FOk0+MCYmKGE9cy1FKSxfPWo5LEguYXR0cigiY3Vyc29yIixLOS5zZWxlY3Rpb24pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59RjkoKX1mdW5jdGlvbiBVKCl7c3dpdGNoKEw0LmtleUNvZGUpe2Nhc2UgMTY6UiYmKGc9aD1SPSExLEIoKSk7YnJlYWs7Y2FzZSAxODpfPT09RzkmJihDPDA/bD1jOkM+MCYmKHQ9byksTTwwP209dTpNPjAmJihhPXMpLF89VTksQigpKTticmVhaztjYXNlIDMyOl89PT1qOSYmKEw0LmFsdEtleT8oQyYmKGw9Yy1EKkMsdD1vK0QqQyksTSYmKG09dS1FKk0sYT1zK0UqTSksXz1HOSk6KEM8MD9sPWM6Qz4wJiYodD1vKSxNPDA/bT11Ok0+MCYmKGE9cyksXz1VOSksSC5hdHRyKCJjdXJzb3IiLEs5W3ldKSxCKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufUY5KCl9fWZ1bmN0aW9uIGYoKXtwKHRoaXMsYXJndW1lbnRzKS5tb3ZlZCgpfWZ1bmN0aW9uIGcoKXtwKHRoaXMsYXJndW1lbnRzKS5lbmRlZCgpfWZ1bmN0aW9uIGgoKXt2YXIgdD10aGlzLl9fYnJ1c2h8fHtzZWxlY3Rpb246bnVsbH07cmV0dXJuIHQuZXh0ZW50PVk5KG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx0LmRpbT1lLHR9cmV0dXJuIGMubW92ZT1mdW5jdGlvbih0LG4pe3Quc2VsZWN0aW9uP3Qub24oInN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXtwKHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLChmdW5jdGlvbigpe3AodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPXQuX19icnVzaCxpPXAodCxhcmd1bWVudHMpLGE9by5zZWxlY3Rpb24scj1lLmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4sby5leHRlbnQpLHM9WjcoYSxyKTtmdW5jdGlvbiBsKGUpe28uc2VsZWN0aW9uPTE9PT1lJiZudWxsPT09cj9udWxsOnMoZSksZC5jYWxsKHQpLGkuYnJ1c2goKX1yZXR1cm4gbnVsbCE9PWEmJm51bGwhPT1yP2w6bCgxKX0pKTp0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxvPWFyZ3VtZW50cyxpPXQuX19icnVzaCxhPWUuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LG8pOm4saS5leHRlbnQpLHI9cCh0LG8pLmJlZm9yZXN0YXJ0KCk7STgodCksaS5zZWxlY3Rpb249bnVsbD09PWE/bnVsbDphLGQuY2FsbCh0KSxyLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pKX0sYy5jbGVhcj1mdW5jdGlvbih0KXtjLm1vdmUodCxudWxsKX0sbS5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nPyh0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSk6dGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXshKGZ1bmN0aW9uIG4odCxlLG8saSl7dmFyIGE9TDQ7dC5zb3VyY2VFdmVudD1MNCxMND10O3RyeXtlLmFwcGx5KG8saSl9ZmluYWxseXtMND1hfX0pKG5ldyBJOShjLHQsZS5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxzLmFwcGx5LHMsW3QsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYy5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6OShZOSh0KSksYyk6b30sYy5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6OSghIXQpLGMpOml9LGMudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ejkoISF0KSxjKTphfSxjLmhhbmRsZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsYyk6bH0sYy5rZXlNb2RpZmllcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGMpOnJ9LGMub249ZnVuY3Rpb24oKXt2YXIgdD1zLm9uLmFwcGx5KHMsYXJndW1lbnRzKTtyZXR1cm4gdD09PXM/Yzp0fSxjfSkoWDkpfSkoKSx0aGlzLm1heEJpblNpemU9MCx0aGlzLmFyZWE9KGZ1bmN0aW9uIGUoKXt2YXIgdD14b3QsZT1udWxsLG49Q290KDApLG89T290LGk9Q290KCEwKSxhPW51bGwscj12b3Qscz1udWxsO2Z1bmN0aW9uIGwobCl7dmFyIGMsZCxwLG0sdSxmPWwubGVuZ3RoLGc9ITEsaD1uZXcgQXJyYXkoZiksYj1uZXcgQXJyYXkoZik7Zm9yKG51bGw9PWEmJihzPXIodT1tdHQoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJmkobT1sW2NdLGMsbCkpPT09ZylpZihnPSFnKWQ9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxwPWMtMTtwPj1kOy0tcClzLnBvaW50KGhbcF0sYltwXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9ZyYmKGhbY109K3QobSxjLGwpLGJbY109K24obSxjLGwpLHMucG9pbnQoZT8rZShtLGMsbCk6aFtjXSxvPytvKG0sYyxsKTpiW2NdKSl9aWYodSlyZXR1cm4gcz1udWxsLHUrIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBQb3QoKS5kZWZpbmVkKGkpLmN1cnZlKHIpLmNvbnRleHQoYSl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkNvdCgrbiksZT1udWxsLGwpOnR9LGwueDA9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpDb3QoK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q290KCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpDb3QoK3QpLG89bnVsbCxsKTpufSxsLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q290KCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OkNvdCgrdCksbCk6b30sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShvKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q290KCEhdCksbCk6aX0sbC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWEmJihzPXIoYSkpLGwpOnJ9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9hPXM9bnVsbDpzPXIoYT10KSxsKTphfSxsfSkoKS54MChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGVOdW0oLXQubGVuZ3RoKX0uYmluZCh0aGlzKSkueDEoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlTnVtKHQubGVuZ3RoKX0uYmluZCh0aGlzKSkueShmdW5jdGlvbih0KXtyZXR1cm4gdC54MD09PS0xLzA/dGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wOnRoaXMueVNjYWxlKCh0LngxK3QueDApLzIpfS5iaW5kKHRoaXMpKS5jdXJ2ZShEb3QpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc3ZnPUo0KHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJzdmciKSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmRyYXdDb250YWluZXI9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSwgJHt0aGlzLmRyYXdNYXJnaW4udG9wfSlgKSx0aGlzLmRvdHNHcm91cD10aGlzLmRyYXdDb250YWluZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJkb3RzR3JvdXAiKSx0aGlzLnlBeGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYXhpcyBheGlzLS15IiksdGhpcy54QXhpc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImF4aXMgYXhpcy0teCIpLHRoaXMubWlzY0dyb3VwPXRoaXMuZHJhd0NvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnhTY2FsZT1WdHQoKS5wYWRkaW5nKC4wNSksdGhpcy54QXhpcz16NSh0aGlzLnhTY2FsZSksdGhpcy55U2NhbGU9ZWV0KCkucmFuZ2UoW3RoaXMuZHJhd0hlaWdodCwwXSksdGhpcy55QXhpcz0oZnVuY3Rpb24gdChlKXtyZXR1cm4gVDUoNCxlKX0pKHRoaXMueVNjYWxlKSx0aGlzLnhTY2FsZU51bT1lZXQoKSx0aGlzLmluaXRpYWxpemVCcnVzaCgpLHRoaXMuZHJhd01pc2MoKSx0aGlzLnJlZHJhdygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuc3ZnJiZ0aGlzLnJlZHJhdygpfXJlZHJhdygpe3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc2V0TWF4QmluU2l6ZSgpLHRoaXMudXBkYXRlQXhlcygpLHRoaXMuZHJhdygpfXVwZGF0ZURpbWVuc2lvbnMoKXt0aGlzLmNoYXJ0V2lkdGg9dGhpcy53aWR0aC10aGlzLm1hcmdpbi5sZWZ0LXRoaXMubWFyZ2luLnJpZ2h0LHRoaXMuZHJhd1dpZHRoPXRoaXMuY2hhcnRXaWR0aC10aGlzLmRyYXdNYXJnaW4ubGVmdC10aGlzLmRyYXdNYXJnaW4ucmlnaHQsdGhpcy5jaGFydEhlaWdodD10aGlzLmhlaWdodC10aGlzLm1hcmdpbi50b3AtdGhpcy5tYXJnaW4uYm90dG9tLHRoaXMuZHJhd0hlaWdodD10aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3AtdGhpcy5kcmF3TWFyZ2luLmJvdHRvbX1zZXRNYXhCaW5TaXplKCl7T2JqZWN0LnZhbHVlcyh0aGlzLmNoYXJ0RGF0YS52aW9saW5EYXRhKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10Lm1hcCgodD0+dC5sZW5ndGgpKSxuPU1hdGgubWF4KC4uLmUpO3RoaXMubWF4QmluU2l6ZT1NYXRoLm1heChuLHRoaXMubWF4QmluU2l6ZSl9KSl9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlKFswLHRoaXMuZHJhd1dpZHRoXSkuZG9tYWluKE9iamVjdC5rZXlzKHRoaXMuY2hhcnREYXRhLnZpb2xpbkRhdGEpKSx0aGlzLnlTY2FsZS5kb21haW4oW3RoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbix0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5tYXhdKSx0aGlzLnhTY2FsZU51bS5yYW5nZShbMCx0aGlzLnhTY2FsZS5iYW5kd2lkdGgoKV0pLmRvbWFpbihbLXRoaXMubWF4QmluU2l6ZSx0aGlzLm1heEJpblNpemVdKX1pbml0aWFsaXplQnJ1c2goKXt0aGlzLmJydXNoLm9uKCJlbmQiLHRoaXMuYnJ1c2hNb3ZlZC5iaW5kKHRoaXMpKX1kcmF3KCl7dGhpcy5kcmF3QXhlcygpLHRoaXMuZHJhd1Bsb3QoKSx0aGlzLnJlZnJlc2hNaXNjKCksdGhpcy5yZWZyZXNoQnJ1c2goKX1kcmF3QXhlcygpe3RoaXMueUF4aXNHcm91cC5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLmRyYXdNYXJnaW4ubGVmdH0sXG4gICAgICAke3RoaXMuZHJhd01hcmdpbi50b3B9KWApLmNhbGwodGhpcy55QXhpcyksdGhpcy54QXhpc0dyb3VwLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSxcbiAgICAgICR7dGhpcy5kcmF3TWFyZ2luLnRvcCt0aGlzLmNoYXJ0SGVpZ2h0fSlgKS5jYWxsKHRoaXMueEF4aXMpfWRyYXdQbG90KCl7Y29uc3QgdD10aGlzLmRvdHNHcm91cC5zZWxlY3RBbGwoIi52aW9saW4tcGxvdCIpLmRhdGEoT2JqZWN0LmVudHJpZXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkpO3QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInZpb2xpbi1wbG90Iikuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZSh0WzBdKX0uYmluZCh0aGlzKSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybmAke3RoaXMuY29sb3JTY2FsZSh0WzBdKX0zM2B9LmJpbmQodGhpcykpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHRbMF0pfSwgMClgfS5iaW5kKHRoaXMpKS5kYXR1bSgoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkuYXR0cigiZCIsdGhpcy5hcmVhKSx0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHRbMF0pfSwgMClgfS5iaW5kKHRoaXMpKS5kYXR1bSgoZnVuY3Rpb24odCl7cmV0dXJuIHRbMV19KSkuYXR0cigiZCIsdGhpcy5hcmVhKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3TWlzYygpe3RoaXMuemVyb0xpbmU9dGhpcy5taXNjR3JvdXAuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImJsYWNrIikuYXR0cigieDEiLDApLmF0dHIoInkxIix0aGlzLnlTY2FsZSgwKSkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy55U2NhbGUoMCkpLHRoaXMubmFuVGV4dD10aGlzLm1pc2NHcm91cC5hcHBlbmQoInRleHQiKS5zdHlsZSgiZmlsbCIsImJsYWNrIikudGV4dCgiTmFOIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigieCIsLTUpLmF0dHIoInkiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCksdGhpcy5uYW5MaW5lPXRoaXMubWlzY0dyb3VwLmFwcGVuZCgibGluZSIpLnN0eWxlKCJzdHJva2UiLCJncmV5Iikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzLCAzIikuYXR0cigieDEiLDApLmF0dHIoInkxIix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCl9cmVmcmVzaE1pc2MoKXt0aGlzLnplcm9MaW5lLmF0dHIoInkxIix0aGlzLnlTY2FsZSgwKSkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy55U2NhbGUoMCkpLHRoaXMubmFuVGV4dC5hdHRyKCJ5Iix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApLHRoaXMubmFuTGluZS5hdHRyKCJ5MSIsdGhpcy5kcmF3SGVpZ2h0K3RoaXMuZHJhd01hcmdpbi50b3ApLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMuZHJhd0hlaWdodCt0aGlzLmRyYXdNYXJnaW4udG9wKX1yZWZyZXNoQnJ1c2goKXt0aGlzLmJydXNoLmV4dGVudChbWzAsMF0sW3RoaXMuZHJhd1dpZHRoLHRoaXMuZHJhd0hlaWdodCt0aGlzLm1hcmdpbi50b3BdXSk7Y29uc3QgdD1bMCx0aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wXTtpZih0aGlzLmZpbHRlci5tYXg8dGhpcy5maWx0ZXIubWluKXRbMF09dGhpcy5maWx0ZXIuaW5jbHVkZU5hTj90aGlzLnlTY2FsZSh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4pOnRbMV07ZWxzZXtpZighdGhpcy5maWx0ZXIuaW5jbHVkZU5hTil7Y29uc3QgZT1NYXRoLm1heCh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4sdGhpcy5maWx0ZXIubWluKTt0WzFdPXRoaXMueVNjYWxlKGUpfWNvbnN0IGU9TWF0aC5taW4odGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWF4LHRoaXMuZmlsdGVyLm1heCk7dFswXT10aGlzLnlTY2FsZShlKX10aGlzLmRyYXdDb250YWluZXIuY2FsbCh0aGlzLmJydXNoKS5jYWxsKHRoaXMuYnJ1c2gubW92ZSx0KX1icnVzaE1vdmVkKCl7aWYoIUw0KXJldHVybjtpZighTDQuc291cmNlRXZlbnQpcmV0dXJuO2NvbnN0IHQ9TDQuc2VsZWN0aW9uO2lmKHQpe2xldCBlPSExLG49LTIsbz10aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW47dFswXTw9dGhpcy5kcmF3SGVpZ2h0K3RoaXMubWFyZ2luLnRvcCYmdFsxXT49dGhpcy5kcmF3SGVpZ2h0JiYoZT0hMCksdFswXTx0aGlzLmRyYXdIZWlnaHQmJihuPXRoaXMueVNjYWxlLmludmVydCh0WzBdKSksdFsxXTx0aGlzLmRyYXdIZWlnaHQmJihvPXRoaXMueVNjYWxlLmludmVydCh0WzFdKSksdGhpcy5vblVwZGF0ZUZpbHRlci5lbWl0KHttYXg6bixtaW46byxpbmNsdWRlTmFOOmV9KX1lbHNlIHRoaXMub25VcGRhdGVGaWx0ZXIuZW1pdCh7bWF4OjEsbWluOi0xLGluY2x1ZGVOYU46ITB9KX19WXl0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxZeXQpfSxZeXQuybVjbXA9dG8oe3R5cGU6WXl0LHNlbGVjdG9yczpbWyJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoV3l0LDcsaGcpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uY2hhcnRDb250YWluZXI9dC5maXJzdCl9fSxpbnB1dHM6e21ldHJpY05hbWU6Im1ldHJpY05hbWUiLGZpbHRlcjoiZmlsdGVyIixjaGFydERhdGE6ImNoYXJ0RGF0YSIsd2lkdGg6IndpZHRoIixjb2xvclNjYWxlOiJjb2xvclNjYWxlIn0sb3V0cHV0czp7b25SZW1vdmU6Im9uUmVtb3ZlIixvblVwZGF0ZUZpbHRlcjoib25VcGRhdGVGaWx0ZXIifSxmZWF0dXJlczpbQm9dLGRlY2xzOjksdmFyczoxLGNvbnN0czpmdW5jdGlvbigpe2xldCB0O3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJSZW1vdmUgRmlsdGVyIik6JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCByZW1vdmVzIGEgbWV0cmljIGZpbHRlci7ikJ9hNmJmYWQ1OGJiMzYzZDVjODkxZDBhNTQ3NGIxZDc3ZWY5MGEzNGRh4pCfODQ1NDk2MTc5Nzc2MjkwNzYyNDpSZW1vdmUgRmlsdGVyYCxbWzEsImNoYXJ0LWNvbnRhaW5lciJdLFsidGl0bGUiLCJTaG93cyB0aGUgblBNSSB2YWx1ZSBkaXN0cmlidXRpb24gcGVyIHJ1bi4gUmFuZ2VzIG9mIHNlbGVjdGVkIHZhbHVlcyBjYW4gYmUgbWFuaXB1bGF0ZWQgYnkgbW9kaWZ5aW5nIHRoZSBncmV5IGJveC4iLDEsImNoYXJ0LWhlYWQiXSxbMSwiY2hhcnQtaGVhZGluZyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsZWFyXzI0cHgiXSxbMSwiY2hhcnQiXSxbImNoYXJ0IiwiIl0sWzEsImRyYXctYXJlYSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksUm0oMSwiZGl2IiwxKSxSbSgyLCJkaXYiLDIpLGt1KDMpLEFtKCksUm0oNCwiYnV0dG9uIiwzKSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZW1vdmUuZW1pdCgpfSkpLFRtKDUsIm1hdC1pY29uIiw0KSxBbSgpLEFtKCksUm0oNiwiZGl2Iiw1LDYpLHFpKCksVG0oOCwic3ZnIiw3KSxBbSgpLEFtKCkpLDImZSYmKHJjKDMpLFN1KG4ubWV0cmljTmFtZSkpfSxkaXJlY3RpdmVzOltYSCxEV10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW59LmNoYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MzAwcHg7d2lkdGg6MTAwJX0uY2hhcnQtaGVhZFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uY2hhcnQtaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHg7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy10b3A6MTBweH0uZHJhdy1hcmVhW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5zdHJva2VkLWxpbmVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTpyZ2JhKDAsMCwwLC4xMik7c3Ryb2tlLWRhc2hhcnJheTozIDN9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFl5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdmlvbGluX2ZpbHRlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi92aW9saW5fZmlsdGVyX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHttZXRyaWNOYW1lOlt7dHlwZTp4eX1dLGZpbHRlcjpbe3R5cGU6eHl9XSxjaGFydERhdGE6W3t0eXBlOnh5fV0sd2lkdGg6W3t0eXBlOnh5fV0sY29sb3JTY2FsZTpbe3R5cGU6eHl9XSxvblJlbW92ZTpbe3R5cGU6T3l9XSxvblVwZGF0ZUZpbHRlcjpbe3R5cGU6T3l9XSxjaGFydENvbnRhaW5lcjpbe3R5cGU6WmEsYXJnczpbImNoYXJ0Iix7c3RhdGljOiEwLHJlYWQ6aGd9XX1dfSk7Y2xhc3MgcXl0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShGdyhOTikpLnBpcGUoSXQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkPVd0KFt0aGlzLnN0b3JlLnNlbGVjdChyYnQpLHRoaXMuc3RvcmUuc2VsZWN0KHBidCksdGhpcy5zdG9yZS5zZWxlY3QoTWJ0KV0pLnBpcGUoSXQoKChbdCxlLG5dKT0+R3l0KHQsZSxuKSkpKSx0aGlzLmNoYXJ0V2lkdGgkPXRoaXMuc3RvcmUucGlwZShGdyh4YnQpKS5waXBlKEl0KCh0PT5NYXRoLm1heCgxNTAsdCkpKSksdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdCh6TikucGlwZShJdCgodD0+ZT0+e2lmKCF0Lmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgW0NvbG9yIHNjYWxlXSB1bmtub3duIHJ1bklkOiAke2V9LmApO3JldHVybiB0W2VdfSkpKX1uZ09uSW5pdCgpe3RoaXMuY2hhcnREYXRhJD1XdChbdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkLHRoaXMuYWN0aXZlUnVucyRdKS5waXBlKEl0KCgoW3QsZV0pPT4oZnVuY3Rpb24gbih0LGUsbyl7Y29uc3QgaT17fSxhPXt9LHI9bmV3IFNldChlKSxzPW55dChvKSxsPXttYXg6LTEsbWluOjF9O09iamVjdC52YWx1ZXModCkuZm9yRWFjaCgodD0+e3QuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5ydW47aWYoci5oYXMoZSkmJnQubWV0cmljPT09cylpZihudWxsPT09dC5uUE1JVmFsdWUpYVtlXT9hW2VdLnB1c2gobnVsbCk6YVtlXT1bbnVsbF07ZWxzZXtjb25zdCBuPXQublBNSVZhbHVlO2wubWF4PWwubWF4PG4/bjpsLm1heCxsLm1pbj1sLm1pbj5uP246bC5taW4saVt0LnJ1bl0/aVtlXS5wdXNoKG4pOmlbZV09W25dfX0pKX0pKTtjb25zdCBjPXt9LGQ9TzUoKS5kb21haW4oW2wubWluLGwubWF4XSkudmFsdWUoKHQ9PnQpKSxwPU81KCkuZG9tYWluKFstMS8wLDEvMF0pLnRocmVzaG9sZHMoMCkudmFsdWUoKHQ9PnQpKTtmb3IoY29uc3QgdCBvZiByKWlmKGNbdF09ZChpW3RdKSxhW3RdKXtjb25zdCBlPXAoYVt0XSk7Y1t0XS51bnNoaWZ0KGVbMF0pfXJldHVybnt2aW9saW5EYXRhOmMsZXh0cmVtZXM6bH19KSh0LGUsdGhpcy5tZXRyaWNOYW1lKSkpKX1yZW1vdmVNZXRyaWMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKExidCh7bWV0cmljOnRoaXMubWV0cmljTmFtZX0pKX11cGRhdGVGaWx0ZXIodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChCYnQoT2JqZWN0LmFzc2lnbih7bWV0cmljOnRoaXMubWV0cmljTmFtZX0sdCkpKX19ZnVuY3Rpb24gWnl0KHQsZSl7aWYoMSZ0JiZUbSgwLCJucG1pLXZpb2xpbi1maWx0ZXIiLDgpLDImdCl7Y29uc3QgdD1lLiRpbXBsaWNpdDtEbSgibWV0cmljTmFtZSIsdFswXSkoImZpbHRlciIsdFsxXSl9fWZ1bmN0aW9uIFh5dCh0LGUpezEmdCYmKFJtKDAsImRpdiIsOSksUm0oMSwic3BhbiIsMTApLGt1KDIsIiBZb3UgY2FuIGFkZCBtb3JlIGZpbHRlcnMgYXQgdGhlIHRvcC4gIiksQW0oKSxBbSgpKX1xeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHF5dCkoU20oSXcpKX0scXl0Lsm1Y21wPXRvKHt0eXBlOnF5dCxzZWxlY3RvcnM6W1sibnBtaS12aW9saW4tZmlsdGVyIl1dLGlucHV0czp7bWV0cmljTmFtZToibWV0cmljTmFtZSIsZmlsdGVyOiJmaWx0ZXIifSxkZWNsczo0LHZhcnM6MTEsY29uc3RzOltbMywibWV0cmljTmFtZSIsImZpbHRlciIsImNoYXJ0RGF0YSIsIndpZHRoIiwiY29sb3JTY2FsZSIsIm9uUmVtb3ZlIiwib25VcGRhdGVGaWx0ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsInZpb2xpbi1maWx0ZXItY29tcG9uZW50IiwwKSxWbSgib25SZW1vdmUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ucmVtb3ZlTWV0cmljKCl9KSkoIm9uVXBkYXRlRmlsdGVyIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi51cGRhdGVGaWx0ZXIoZSl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgibWV0cmljTmFtZSIsbi5tZXRyaWNOYW1lKSgiZmlsdGVyIixuLmZpbHRlcikoImNoYXJ0RGF0YSIsVGgoMSw1LG4uY2hhcnREYXRhJCkpKCJ3aWR0aCIsVGgoMiw3LG4uY2hhcnRXaWR0aCQpKSgiY29sb3JTY2FsZSIsVGgoMyw5LG4ucnVuQ29sb3JTY2FsZSQpKX0sZGlyZWN0aXZlczpbWXl0XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocXl0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktdmlvbGluLWZpbHRlciIsdGVtcGxhdGU6J1xuICAgIDx2aW9saW4tZmlsdGVyLWNvbXBvbmVudFxuICAgICAgW21ldHJpY05hbWVdPSJtZXRyaWNOYW1lIlxuICAgICAgW2ZpbHRlcl09ImZpbHRlciJcbiAgICAgIFtjaGFydERhdGFdPSJjaGFydERhdGEkIHwgYXN5bmMiXG4gICAgICBbd2lkdGhdPSJjaGFydFdpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlJCB8IGFzeW5jIlxuICAgICAgKG9uUmVtb3ZlKT0icmVtb3ZlTWV0cmljKCkiXG4gICAgICAob25VcGRhdGVGaWx0ZXIpPSJ1cGRhdGVGaWx0ZXIoJGV2ZW50KSJcbiAgICA+PC92aW9saW4tZmlsdGVyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLHttZXRyaWNOYW1lOlt7dHlwZTp4eX1dLGZpbHRlcjpbe3R5cGU6eHl9XX0pO2NsYXNzIEt5dHtjb25zdHJ1Y3Rvcigpe3RoaXMudG9nZ2xlU2lkZWJhckV4cGFuZGVkPW5ldyBMaH19S3l0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLeXQpfSxLeXQuybVjbXA9dG8oe3R5cGU6S3l0LHNlbGVjdG9yczpbWyJ2aW9saW4tZmlsdGVycy1jb21wb25lbnQiXV0saW5wdXRzOntzaWRlYmFyRXhwYW5kZWQ6InNpZGViYXJFeHBhbmRlZCIsbWV0cmljRmlsdGVyczoibWV0cmljRmlsdGVycyJ9LG91dHB1dHM6e3RvZ2dsZVNpZGViYXJFeHBhbmRlZDoidG9nZ2xlU2lkZWJhckV4cGFuZGVkIn0sZGVjbHM6OSx2YXJzOjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQ7cmV0dXJuIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkV4cGFuZC9IaWRlIFNpZGViYXIiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMvaGlkZXMgdGhlIHNpZGViYXIu4pCfNDhjMjk5MDNjZTg4MWFiNjEwODhmOGQ0OWQ4MjcyMDM3MTZhYWVkNOKQnzQ2NTg2MDI5OTE5NzAyNjAyMTU6RXhwYW5kL0hpZGUgU2lkZWJhcmAsW1sxLCJmaWx0ZXJzLXRvb2xiYXIiXSxbMSwiZmlsdGVycy10aXRsZSJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fbGVmdF8yNHB4Il0sWzEsImZpbHRlcnMiXSxbMywibWV0cmljTmFtZSIsImZpbHRlciIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsImZpbHRlcnMtaGludCIsNCwibmdJZiJdLFszLCJtZXRyaWNOYW1lIiwiZmlsdGVyIl0sWzEsImZpbHRlcnMtaGludCJdLFsxLCJmaWx0ZXJzLWhpbnQtdGV4dCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCksUm0oMSwiaDMiLDEpLGt1KDIsIkFjdGl2ZSBGaWx0ZXJzIiksQW0oKSxSbSgzLCJkaXYiLDIpLFJtKDQsImJ1dHRvbiIsMyksVm0oImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksVG0oNSwibWF0LWljb24iLDQpLEFtKCksQW0oKSxBbSgpLFJtKDYsImRpdiIsNSksUXAoNyxaeXQsMSwyLCJucG1pLXZpb2xpbi1maWx0ZXIiLDYpLEFtKCksUXAoOCxYeXQsMywwLCJkaXYiLDcpKSwyJmUmJihyYyg3KSxEbSgibmdGb3JPZiIsbi5tZXRyaWNGaWx0ZXJzKSxyYygxKSxEbSgibmdJZiIsMD09PW4ubWV0cmljRmlsdGVycy5sZW5ndGgpKX0sZGlyZWN0aXZlczpbWEgsRFcsbE0sZE0scXl0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmZpbHRlcnMtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MCAxMHB4fS5maWx0ZXJzLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozMHB4fS5maWx0ZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LmZpbHRlcnMtaGludFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH0uZmlsdGVycy1oaW50LXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoS3l0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse3NpZGViYXJFeHBhbmRlZDpbe3R5cGU6eHl9XSxtZXRyaWNGaWx0ZXJzOlt7dHlwZTp4eX1dLHRvZ2dsZVNpZGViYXJFeHBhbmRlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIEp5dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUuc2VsZWN0KF9idCksdGhpcy5tZXRyaWNGaWx0ZXJzJD10aGlzLnN0b3JlLnNlbGVjdChnYnQpLnBpcGUoSXQoKHQ9Pk9iamVjdC5lbnRyaWVzKHQpKSkpfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChXYnQoKSl9fWZ1bmN0aW9uIFF5dCh0LGUsbil7cmV0dXJuIHQubGVuZ3RoIT1lLmxlbmd0aD9uOmUubWFwKCgoZSxuKT0+ZS10W25dKSkubWFwKCh0PT5NYXRoLnBvdyh0LDIpKSkucmVkdWNlKCgodCxlKT0+dCtlKSwwKX1KeXQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEp5dCkoU20oSXcpKX0sSnl0Lsm1Y21wPXRvKHt0eXBlOkp5dCxzZWxlY3RvcnM6W1sibnBtaS12aW9saW4tZmlsdGVycyJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJzaWRlYmFyRXhwYW5kZWQiLCJtZXRyaWNGaWx0ZXJzIiwidG9nZ2xlU2lkZWJhckV4cGFuZGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJ2aW9saW4tZmlsdGVycy1jb21wb25lbnQiLDApLFZtKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQW0oKSksMiZlJiZEbSgic2lkZWJhckV4cGFuZGVkIixUaCgxLDIsbi5zaWRlYmFyRXhwYW5kZWQkKSkoIm1ldHJpY0ZpbHRlcnMiLFRoKDIsNCxuLm1ldHJpY0ZpbHRlcnMkKSl9LGRpcmVjdGl2ZXM6W0t5dF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEp5dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLXZpb2xpbi1maWx0ZXJzIix0ZW1wbGF0ZTonXG4gICAgPHZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudFxuICAgICAgW3NpZGViYXJFeHBhbmRlZF09InNpZGViYXJFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFttZXRyaWNGaWx0ZXJzXT0ibWV0cmljRmlsdGVycyQgfCBhc3luYyJcbiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIlxuICAgID48L3Zpb2xpbi1maWx0ZXJzLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0ICR5dD1bInRodW1iQ29udGFpbmVyIl0sdF90PVsidG9nZ2xlQmFyIl0sZV90PVsiaW5wdXQiXSxuX3Q9ZnVuY3Rpb24odCl7cmV0dXJue2VudGVyRHVyYXRpb246dH19LG9fdD1uZXcgR2EoIm1hdC1zbGlkZS10b2dnbGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+KHtkaXNhYmxlVG9nZ2xlVmFsdWU6ITF9KX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IGlfdD0wO2NvbnN0IGFfdD17cHJvdmlkZTpJVix1c2VFeGlzdGluZzpxZSgoKCk9PmxfdCkpLG11bHRpOiEwfTtjbGFzcyByX3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMuY2hlY2tlZD1lfX1jb25zdCBzX3Q9JEkoSkkoUUkoS0koY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pKSkpO2NsYXNzIGxfdCBleHRlbmRzIHNfdHtjb25zdHJ1Y3Rvcih0LGUsbixvLGksYSl7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLmRlZmF1bHRzPWksdGhpcy5fb25DaGFuZ2U9dD0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl91bmlxdWVJZD0ibWF0LXNsaWRlLXRvZ2dsZS0iKyArK2lfdCx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9jaGVja2VkPSExLHRoaXMubmFtZT1udWxsLHRoaXMuaWQ9dGhpcy5fdW5pcXVlSWQsdGhpcy5sYWJlbFBvc2l0aW9uPSJhZnRlciIsdGhpcy5hcmlhTGFiZWw9bnVsbCx0aGlzLmFyaWFMYWJlbGxlZGJ5PW51bGwsdGhpcy5jaGFuZ2U9bmV3IExoLHRoaXMudG9nZ2xlQ2hhbmdlPW5ldyBMaCx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLHRoaXMuY29sb3I9dGhpcy5kZWZhdWx0Q29sb3I9aS5jb2xvcnx8ImFjY2VudCIsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PWF9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD15eih0KX1nZXQgY2hlY2tlZCgpe3JldHVybiB0aGlzLl9jaGVja2VkfXNldCBjaGVja2VkKHQpe3RoaXMuX2NoZWNrZWQ9eXoodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IGlucHV0SWQoKXtyZXR1cm5gJHt0aGlzLmlkfHx0aGlzLl91bmlxdWVJZH0taW5wdXRgfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+eyJrZXlib2FyZCI9PT10fHwicHJvZ3JhbSI9PT10P3RoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk6dHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMuX29uVG91Y2hlZCgpKSl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9X29uQ2hhbmdlRXZlbnQodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnRvZ2dsZUNoYW5nZS5lbWl0KCksdGhpcy5kZWZhdWx0cy5kaXNhYmxlVG9nZ2xlVmFsdWU/dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZD10aGlzLmNoZWNrZWQ6KHRoaXMuY2hlY2tlZD10aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpKX1fb25JbnB1dENsaWNrKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoZWNrZWQ9ISF0fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1mb2N1cyh0LGUpe2U/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2lucHV0RWxlbWVudCxlLHQpOnRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfXRvZ2dsZSgpe3RoaXMuY2hlY2tlZD0hdGhpcy5jaGVja2VkLHRoaXMuX29uQ2hhbmdlKHRoaXMuY2hlY2tlZCl9X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX29uQ2hhbmdlKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdChuZXcgcl90KHRoaXMsdGhpcy5jaGVja2VkKSl9X29uTGFiZWxUZXh0Q2hhbmdlKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX1sX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGxfdCkoU20oaGcpLFNtKFNJKSxTbShVZyksTmEoInRhYmluZGV4IiksU20ob190KSxTbShWUCw4KSl9LGxfdC7JtWNtcD10byh7dHlwZTpsX3Qsc2VsZWN0b3JzOltbIm1hdC1zbGlkZS10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihRaCgkeXQsNSksUWgodF90LDUpLFFoKGVfdCw1KSksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5fdGh1bWJFbD10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5fdGh1bWJCYXJFbD10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5faW5wdXRFbGVtZW50PXQuZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtc2xpZGUtdG9nZ2xlIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQoZSxuKXsyJmUmJihUdSgiaWQiLG4uaWQpLGpwKCJ0YWJpbmRleCIsbi5kaXNhYmxlZD9udWxsOi0xKSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkscHUoIm1hdC1jaGVja2VkIixuLmNoZWNrZWQpKCJtYXQtZGlzYWJsZWQiLG4uZGlzYWJsZWQpKCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSIsImJlZm9yZSI9PW4ubGFiZWxQb3NpdGlvbikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixuLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsY29sb3I6ImNvbG9yIix0YWJJbmRleDoidGFiSW5kZXgiLG5hbWU6Im5hbWUiLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxyZXF1aXJlZDoicmVxdWlyZWQiLGNoZWNrZWQ6ImNoZWNrZWQiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXX0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLHRvZ2dsZUNoYW5nZToidG9nZ2xlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTbGlkZVRvZ2dsZSJdLGZlYXR1cmVzOltwZyhbYV90XSkseHBdLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxNix2YXJzOjIwLGNvbnN0czpbWzEsIm1hdC1zbGlkZS10b2dnbGUtbGFiZWwiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtYmFyIl0sWyJ0b2dnbGVCYXIiLCIiXSxbInR5cGUiLCJjaGVja2JveCIsInJvbGUiLCJzd2l0Y2giLDEsIm1hdC1zbGlkZS10b2dnbGUtaW5wdXQiLCJjZGstdmlzdWFsbHktaGlkZGVuIiwzLCJpZCIsInJlcXVpcmVkIiwidGFiSW5kZXgiLCJjaGVja2VkIiwiZGlzYWJsZWQiLCJjaGFuZ2UiLCJjbGljayJdLFsiaW5wdXQiLCIiXSxbMSwibWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIiXSxbInRodW1iQ29udGFpbmVyIiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtdGh1bWIiXSxbIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIiwibWF0UmlwcGxlQ2VudGVyZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVBbmltYXRpb24iXSxbMSwibWF0LXJpcHBsZS1lbGVtZW50IiwibWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJsYWJlbENvbnRlbnQiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFptKCksUm0oMCwibGFiZWwiLDAsMSksUm0oMiwiZGl2IiwyLDMpLFJtKDQsImlucHV0Iiw0LDUpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLl9vbkNoYW5nZUV2ZW50KGUpfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uX29uSW5wdXRDbGljayhlKX0pKSxBbSgpLFJtKDYsImRpdiIsNiw3KSxUbSg4LCJkaXYiLDgpLFJtKDksImRpdiIsOSksVG0oMTAsImRpdiIsMTApLEFtKCksQW0oKSxBbSgpLFJtKDExLCJzcGFuIiwxMSwxMiksVm0oImNka09ic2VydmVDb250ZW50IiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLl9vbkxhYmVsVGV4dENoYW5nZSgpfSkpLFJtKDEzLCJzcGFuIiwxMyksa3UoMTQsIsKgIiksQW0oKSxYbSgxNSksQW0oKSxBbSgpKSwyJmUpe2NvbnN0IHQ9JHAoMSksZT0kcCgxMik7anAoImZvciIsbi5pbnB1dElkKSxyYygyKSxwdSgibWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW4iLCFlLnRleHRDb250ZW50fHwhZS50ZXh0Q29udGVudC50cmltKCkpLHJjKDIpLERtKCJpZCIsbi5pbnB1dElkKSgicmVxdWlyZWQiLG4ucmVxdWlyZWQpKCJ0YWJJbmRleCIsbi50YWJJbmRleCkoImNoZWNrZWQiLG4uY2hlY2tlZCkoImRpc2FibGVkIixuLmRpc2FibGVkKSxqcCgibmFtZSIsbi5uYW1lKSgiYXJpYS1jaGVja2VkIixuLmNoZWNrZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWwiLG4uYXJpYUxhYmVsKSgiYXJpYS1sYWJlbGxlZGJ5IixuLmFyaWFMYWJlbGxlZGJ5KSgiYXJpYS1kZXNjcmliZWRieSIsbi5hcmlhRGVzY3JpYmVkYnkpLHJjKDUpLERtKCJtYXRSaXBwbGVUcmlnZ2VyIix0KSgibWF0UmlwcGxlRGlzYWJsZWQiLG4uZGlzYWJsZVJpcHBsZXx8bi5kaXNhYmxlZCkoIm1hdFJpcHBsZUNlbnRlcmVkIiwhMCkoIm1hdFJpcHBsZVJhZGl1cyIsMjApKCJtYXRSaXBwbGVBbmltYXRpb24iLE1oKDE4LG5fdCxuLl9ub29wQW5pbWF0aW9ucz8wOjE1MCkpfX0sZGlyZWN0aXZlczpba0gsanpdLHN0eWxlczpbIi5tYXQtc2xpZGUtdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O21heC13aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI0cHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxNnB4LCAwLCAwKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTZweCwgMCwgMCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVke29wYWNpdHk6LjM4fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbCwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVse29yZGVyOjF9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvcmRlcjoyfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7dG9wOi0zcHg7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zaXRpb246bm9uZX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1zbGlkZS10b2dnbGUtYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjM2cHg7aGVpZ2h0OjE0cHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjhweH0ubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtib3R0b206MDtsZWZ0OjEwcHh9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2xlZnQ6YXV0bztyaWdodDoxMHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3I7dHJhbnNpdGlvbi1kZWxheTo1MG1zfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gMjBweCk7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1kaXNhYmxlZCkuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JvcmRlcjoxcHggc29saWR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3V0bGluZToycHggZG90dGVkO291dGxpbmUtb2Zmc2V0OjVweH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGxfdC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhnfSx7dHlwZTpTSX0se3R5cGU6VWd9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpqYSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbb190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6U3J9LHt0eXBlOmtyLGFyZ3M6W1ZQXX1dfV0sbF90LnByb3BEZWNvcmF0b3JzPXtfdGh1bWJFbDpbe3R5cGU6WmEsYXJnczpbInRodW1iQ29udGFpbmVyIl19XSxfdGh1bWJCYXJFbDpbe3R5cGU6WmEsYXJnczpbInRvZ2dsZUJhciJdfV0sbmFtZTpbe3R5cGU6eHl9XSxpZDpbe3R5cGU6eHl9XSxsYWJlbFBvc2l0aW9uOlt7dHlwZTp4eX1dLGFyaWFMYWJlbDpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTp4eSxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSxyZXF1aXJlZDpbe3R5cGU6eHl9XSxjaGVja2VkOlt7dHlwZTp4eX1dLGNoYW5nZTpbe3R5cGU6T3l9XSx0b2dnbGVDaGFuZ2U6W3t0eXBlOk95fV0sX2lucHV0RWxlbWVudDpbe3R5cGU6WmEsYXJnczpbImlucHV0Il19XX0sKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChsX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXNsaWRlLXRvZ2dsZSIsZXhwb3J0QXM6Im1hdFNsaWRlVG9nZ2xlIixob3N0OntjbGFzczoibWF0LXNsaWRlLXRvZ2dsZSIsIltpZF0iOiJpZCIsIlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IC0xIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJudWxsIiwiW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSI6Im51bGwiLCJbY2xhc3MubWF0LWNoZWNrZWRdIjoiY2hlY2tlZCIsIltjbGFzcy5tYXQtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmVdIjonbGFiZWxQb3NpdGlvbiA9PSAiYmVmb3JlIicsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfbm9vcEFuaW1hdGlvbnMifSx0ZW1wbGF0ZTonPGxhYmVsIFthdHRyLmZvcl09ImlucHV0SWQiIGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsIiAjbGFiZWw+XG4gIDxkaXYgI3RvZ2dsZUJhciBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1iYXIiXG4gICAgICAgW2NsYXNzLm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2luXT0iIWxhYmVsQ29udGVudC50ZXh0Q29udGVudCB8fCAhbGFiZWxDb250ZW50LnRleHRDb250ZW50LnRyaW0oKSI+XG5cbiAgICA8aW5wdXQgI2lucHV0IGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWlucHV0IGNkay12aXN1YWxseS1oaWRkZW4iIHR5cGU9ImNoZWNrYm94IlxuICAgICAgICAgICByb2xlPSJzd2l0Y2giXG4gICAgICAgICAgIFtpZF09ImlucHV0SWQiXG4gICAgICAgICAgIFtyZXF1aXJlZF09InJlcXVpcmVkIlxuICAgICAgICAgICBbdGFiSW5kZXhdPSJ0YWJJbmRleCJcbiAgICAgICAgICAgW2NoZWNrZWRdPSJjaGVja2VkIlxuICAgICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCJcbiAgICAgICAgICAgW2F0dHIubmFtZV09Im5hbWUiXG4gICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09ImNoZWNrZWQudG9TdHJpbmcoKSJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiXG4gICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPSJhcmlhRGVzY3JpYmVkYnkiXG4gICAgICAgICAgIChjaGFuZ2UpPSJfb25DaGFuZ2VFdmVudCgkZXZlbnQpIlxuICAgICAgICAgICAoY2xpY2spPSJfb25JbnB1dENsaWNrKCRldmVudCkiPlxuXG4gICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIiICN0aHVtYkNvbnRhaW5lcj5cbiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtdGh1bWIiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGUgbWF0LWZvY3VzLWluZGljYXRvciIgbWF0LXJpcHBsZVxuICAgICAgICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09ImxhYmVsIlxuICAgICAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlUmlwcGxlIHx8IGRpc2FibGVkIlxuICAgICAgICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJ0cnVlIlxuICAgICAgICAgICBbbWF0UmlwcGxlUmFkaXVzXT0iMjAiXG4gICAgICAgICAgIFttYXRSaXBwbGVBbmltYXRpb25dPSJ7ZW50ZXJEdXJhdGlvbjogX25vb3BBbmltYXRpb25zID8gMCA6IDE1MH0iPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9Im1hdC1yaXBwbGUtZWxlbWVudCBtYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG4gIDxzcGFuIGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQiICNsYWJlbENvbnRlbnQgKGNka09ic2VydmVDb250ZW50KT0iX29uTGFiZWxUZXh0Q2hhbmdlKCkiPlxuICAgIFx4M2MhLS0gQWRkIGFuIGludmlzaWJsZSBzcGFuIHNvIEpBV1MgY2FuIHJlYWQgdGhlIGxhYmVsIC0tXHgzZVxuICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5Om5vbmUiPiZuYnNwOzwvc3Bhbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc3Bhbj5cbjwvbGFiZWw+XG4nLHByb3ZpZGVyczpbYV90XSxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpIbi5Ob25lLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2gsc3R5bGVzOlsiLm1hdC1zbGlkZS10b2dnbGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7bWF4LXdpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MjRweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDE2cHgsIDAsIDApfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xNnB4LCAwLCAwKX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWR7b3BhY2l0eTouMzh9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcn0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7b3JkZXI6MX0ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye29yZGVyOjJ9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLWJhci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt0b3A6LTNweDtsZWZ0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbjpub25lfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MzZweDtoZWlnaHQ6MTRweDtmbGV4LXNocmluazowO2JvcmRlci1yYWRpdXM6OHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2JvdHRvbTowO2xlZnQ6MTBweH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtaW5wdXR7bGVmdDphdXRvO3JpZ2h0OjEwcHh9Lm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcjt0cmFuc2l0aW9uLWRlbGF5OjUwbXN9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2xpZGUtdG9nZ2xlIC5tYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjEyfS5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWRpc2FibGVkKS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7Ym9yZGVyOjFweCBzb2xpZH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvdXRsaW5lOjJweCBkb3R0ZWQ7b3V0bGluZS1vZmZzZXQ6NXB4fVxuIl19XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpoZ30se3R5cGU6U0l9LHt0eXBlOlVnfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6amEsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOmtyLGFyZ3M6W29fdF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOlNyfSx7dHlwZTprcixhcmdzOltWUF19XX1dfSkse25hbWU6W3t0eXBlOnh5fV0saWQ6W3t0eXBlOnh5fV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6eHl9XSxhcmlhTGFiZWw6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6eHksYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sY2hhbmdlOlt7dHlwZTpPeX1dLHRvZ2dsZUNoYW5nZTpbe3R5cGU6T3l9XSxyZXF1aXJlZDpbe3R5cGU6eHl9XSxjaGVja2VkOlt7dHlwZTp4eX1dLF90aHVtYkVsOlt7dHlwZTpaYSxhcmdzOlsidGh1bWJDb250YWluZXIiXX1dLF90aHVtYkJhckVsOlt7dHlwZTpaYSxhcmdzOlsidG9nZ2xlQmFyIl19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOnh5LGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSxfaW5wdXRFbGVtZW50Olt7dHlwZTpaYSxhcmdzOlsiaW5wdXQiXX1dfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBjX3Q9e3Byb3ZpZGU6R1YsdXNlRXhpc3Rpbmc6cWUoKCgpPT5kX3QpKSxtdWx0aTohMH07Y2xhc3MgZF90IGV4dGVuZHMgS1V7fWRfdC7JtWZhYz0oZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gZnVuY3Rpb24gZShuKXtyZXR1cm4odHx8KHQ9QWEoZF90KSkpKG58fGRfdCl9fSkoKSxkX3QuybVkaXI9bG8oe3R5cGU6ZF90LHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1zbGlkZS10b2dnbGUiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltwZyhbY190XSkseHBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkX3QsW3t0eXBlOkN5LGFyZ3M6W3tzZWxlY3RvcjoibWF0LXNsaWRlLXRvZ2dsZVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxcbiAgICAgICAgICAgICBtYXQtc2xpZGUtdG9nZ2xlW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIG1hdC1zbGlkZS10b2dnbGVbcmVxdWlyZWRdW25nTW9kZWxdIixwcm92aWRlcnM6W2NfdF19XX1dLG51bGwsbnVsbCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBwX3R7fXBfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cF90KX0scF90Lsm1bW9kPWFvKHt0eXBlOnBfdH0pLHBfdC7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwX3QsW3t0eXBlOkF5LGFyZ3M6W3tleHBvcnRzOltkX3RdLGRlY2xhcmF0aW9uczpbZF90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHBfdCx7ZGVjbGFyYXRpb25zOltkX3RdLGV4cG9ydHM6W2RfdF19KTtjbGFzcyBtX3R7fWZ1bmN0aW9uIHVfdCh0LGUpezEmdCYmVG0oMCwibWF0LWljb24iLDMpfW1fdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bV90KX0sbV90Lsm1bW9kPWFvKHt0eXBlOm1fdH0pLG1fdC7JtWluaj12bih7aW1wb3J0czpbW3BfdCxTSCxYSSxVel0scF90LFhJXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobV90LFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbcF90LFNILFhJLFV6XSxleHBvcnRzOltwX3QsbF90LFhJXSxkZWNsYXJhdGlvbnM6W2xfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhtX3Qse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltsX3RdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3BfdCxTSCxYSSxVel19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcF90LGxfdCxYSV19fSk7Y2xhc3MgZl90e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IExofX1mX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGZfdCl9LGZfdC7JtWNtcD10byh7dHlwZTpmX3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MiZlJiZwdSgidmFsaWQiLG4uaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntyZWdleEZpbHRlclZhbHVlOiJyZWdleEZpbHRlclZhbHVlIixpc1JlZ2V4RmlsdGVyVmFsaWQ6ImlzUmVnZXhGaWx0ZXJWYWxpZCJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZToib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgQW5ub3RhdGlvbnMiLDMsInZhbHVlIiwiaW5wdXQiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDEsImVycm9yLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsIm1hdC1pY29uIiwwKSxSbSgxLCJpbnB1dCIsMSksVm0oImlucHV0IiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChlLnRhcmdldC52YWx1ZSl9KSksQW0oKSxRcCgyLHVfdCwxLDAsIm1hdC1pY29uIiwyKSksMiZlJiYocmMoMSksRG0oInZhbHVlIixuLnJlZ2V4RmlsdGVyVmFsdWUpLHJjKDEpLERtKCJuZ0lmIiwhbi5pc1JlZ2V4RmlsdGVyVmFsaWQpKX0sZGlyZWN0aXZlczpbRFcsZE1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCl7Y29sb3I6I2M2MjgyOH1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpICAgLmVycm9yLWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNjNjI4Mjg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZl90LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbnNfc2VhcmNoX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2Fubm90YXRpb25zX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cmVnZXhGaWx0ZXJWYWx1ZTpbe3R5cGU6eHl9XSxvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6W3t0eXBlOk95fV0saXNSZWdleEZpbHRlclZhbGlkOlt7dHlwZTpQeSxhcmdzOlsiY2xhc3MudmFsaWQiXX0se3R5cGU6eHl9XX0pO2NsYXNzIGdfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QobWJ0KSx0aGlzLmlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQ9dGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQucGlwZShJdCgodD0+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KSkpfWZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKElidCh7cmVnZXg6dH0pKX19ZnVuY3Rpb24gaF90KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Tm0oMCksUm0oMSwiYnV0dG9uIiw1KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7aGkodCk7Y29uc3Qgbj1ZbSgpO3JldHVybiBuLm9uRmxhZ0Fubm90YXRpb25zLmVtaXQobi5zZWxlY3RlZEFubm90YXRpb25zKX0pKSxUbSgyLCJtYXQtaWNvbiIsNiksQW0oKSxSbSgzLCJidXR0b24iLDcpLFZtKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtoaSh0KTtjb25zdCBuPVltKCk7cmV0dXJuIG4ub25IaWRlQW5ub3RhdGlvbnMuZW1pdChuLnNlbGVjdGVkQW5ub3RhdGlvbnMpfSkpLFRtKDQsIm1hdC1pY29uIiw4KSxBbSgpLHptKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRG0oImRpc2FibGVkIiwwPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCkscmMoMiksRG0oImRpc2FibGVkIiwwPT09dC5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aCl9fWZ1bmN0aW9uIGJfdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO05tKDApLFJtKDEsIm1hdC1zbGlkZS10b2dnbGUiLDkpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkub25Ub2dnbGVTaG93Q291bnRzLmVtaXQoKX0pKSxrdSgyLCIgU2FtcGxlIENvdW50ICIpLEFtKCksUm0oMywibWF0LXNsaWRlLXRvZ2dsZSIsMTApLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiBlKCl7cmV0dXJuIGhpKHQpLFltKCkub25Ub2dnbGVTaG93SGlkZGVuLmVtaXQoKX0pKSxrdSg0LCIgU2hvdyBIaWRkZW4gIiksQW0oKSxUbSg1LCJucG1pLWFubm90YXRpb25zLXNlYXJjaCIpLHptKCl9aWYoMiZ0KXtjb25zdCB0PVltKCk7cmMoMSksRG0oImNoZWNrZWQiLHQuc2hvd0NvdW50cykscmMoMiksRG0oImNoZWNrZWQiLHQuc2hvd0hpZGRlbil9fWdfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Z190KShTbShJdykpfSxnX3QuybVjbXA9dG8oe3R5cGU6Z190LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaCJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiLDApLFZtKCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZpbHRlckNoYW5nZShlKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQW0oKSksMiZlJiZEbSgicmVnZXhGaWx0ZXJWYWx1ZSIsVGgoMSwyLG4uYW5ub3RhdGlvbnNGaWx0ZXIkKSkoImlzUmVnZXhGaWx0ZXJWYWxpZCIsVGgoMiw0LG4uaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOltmX3RdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChnX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1zZWFyY2giLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1zZWFyY2gtY29tcG9uZW50XG4gICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09ImFubm90YXRpb25zRmlsdGVyJCB8IGFzeW5jIlxuICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQgfCBhc3luYyJcbiAgICAgIChvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UpPSJmaWx0ZXJDaGFuZ2UoJGV2ZW50KSJcbiAgICA+PC9ucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjbGFzcyB5X3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uRmxhZ0Fubm90YXRpb25zPW5ldyBMaCx0aGlzLm9uSGlkZUFubm90YXRpb25zPW5ldyBMaCx0aGlzLm9uVG9nZ2xlRXhwYW5kZWQ9bmV3IExoLHRoaXMub25Ub2dnbGVTaG93Q291bnRzPW5ldyBMaCx0aGlzLm9uVG9nZ2xlU2hvd0hpZGRlbj1uZXcgTGh9fXlfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8eV90KX0seV90Lsm1Y21wPXRvKHt0eXBlOnlfdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50Il1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixleHBhbmRlZDoiZXhwYW5kZWQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLHNob3dDb3VudHM6InNob3dDb3VudHMiLHNob3dIaWRkZW46InNob3dIaWRkZW4ifSxvdXRwdXRzOntvbkZsYWdBbm5vdGF0aW9uczoib25GbGFnQW5ub3RhdGlvbnMiLG9uSGlkZUFubm90YXRpb25zOiJvbkhpZGVBbm5vdGF0aW9ucyIsb25Ub2dnbGVFeHBhbmRlZDoib25Ub2dnbGVFeHBhbmRlZCIsb25Ub2dnbGVTaG93Q291bnRzOiJvblRvZ2dsZVNob3dDb3VudHMiLG9uVG9nZ2xlU2hvd0hpZGRlbjoib25Ub2dnbGVTaG93SGlkZGVuIn0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IHQsZSxuO3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJIaWRlcy9TaG93cyB0aGUgQW5ub3RhdGlvbnMgTGlzdCIpOiRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgaGlkZXMvc2hvd3MgdGhlIGFubm90YXRpb25zIGxpc3Qu4pCfYjM2MDNiYTMzZTUzMDhkZDhjNWU4MDVlNTA4YjJmNzIzM2RmODlkNOKQnzczMzYzNzQ0MTMwNTYzNDI0OTI6SGlkZXMvU2hvd3MgdGhlIEFubm90YXRpb25zIExpc3RgLGU9InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGZsYWdzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzU2OTJhZDg4MzEwMzhhOTBjNTg2M2ExZTlhZGY5NzQ4Y2FjM2NhZDjikJ8yMjQ0MDk5ODkxMzEzMzM2NTk1OkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgLG49InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkhpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGhpZGVzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzAzNDJjZGIzMzU4ZmE4ZTNmYTI3MjIwYTgyNThhNzI4NzQzMGI3MGbikJ81NDYyODMyMzkxMDkyMDg3NDg1OkhpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgLFtbMSwiYW5ub3RhdGlvbnMtdGl0bGUtY29udGFpbmVyIl0sWzEsImFubm90YXRpb25zLXRpdGxlIl0sWzQsIm5nSWYiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwiZXhwYW5kLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJGbGFnZ2luZyBhbm5vdGF0aW9ucyBhZGRzIHRoZW0gdG8geW91ciBpbnZlc3RpZ2F0aW9uIHJlc3VsdHMsIHdoaWNoIGNhbiBsYXRlciBiZSBleHBvcnRlZC4iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJmbGFnXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sInRpdGxlIiwiUmVtb3Zpbmcgbm9uLWNyaXRpY2FsIGFubm90YXRpb25zIHVuY2x1dHRlcnMgdGhlIHZpZXcuIFJlbW92ZWQgYW5ub3RhdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSBhbGwgdmlzdWFsaXphdGlvbnMuIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCJdLFsidGl0bGUiLCJIaWRlcyBhbmQgc2hvd3MgdGhlIHNhbXBsZSBjb3VudCB3aGVyZSBhcHBsaWNhYmxlIChob3cgbWFueSBzYW1wbGVzIGJlbG9uZyB0byBhIGNhdGVnb3J5KS4iLDEsInNob3ctdG9nZ2xlIiwzLCJjaGVja2VkIiwiY2hhbmdlIl0sWyJ0aXRsZSIsIkhpZGVzIGFuZCBzaG93cyBoaWRkZW4gYW5ub3RhdGlvbnMgaW4gYWxsIHZpc3VhbGl6YXRpb25zLiIsMSwic2hvdy10b2dnbGUiLDMsImNoZWNrZWQiLCJjaGFuZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsImgzIiwxKSxrdSgyKSxBbSgpLFFwKDMsaF90LDUsMiwibmctY29udGFpbmVyIiwyKSxBbSgpLFFwKDQsYl90LDYsMiwibmctY29udGFpbmVyIiwyKSxSbSg1LCJidXR0b24iLDMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZUV4cGFuZGVkLmVtaXQoKX0pKSxUbSg2LCJtYXQtaWNvbiIsNCksQW0oKSksMiZlJiYocmMoMiksRHUoIkFubm90YXRpb25zICgiLG4ubnVtQW5ub3RhdGlvbnMsIikiKSxyYygxKSxEbSgibmdJZiIsbi5leHBhbmRlZCkscmMoMSksRG0oIm5nSWYiLG4uZXhwYW5kZWQpLHJjKDIpLERtKCJzdmdJY29uIixuLmV4cGFuZGVkPyJleHBhbmRfbGVzc18yNHB4IjoiZXhwYW5kX21vcmVfMjRweCIpKX0sZGlyZWN0aXZlczpbZE0sWEgsRFcsbF90LGdfdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJX0uYW5ub3RhdGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZTouOWVtO2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmFubm90YXRpb25zLXRpdGxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2ZsZXg6MSAxO2hlaWdodDo0MnB4fS5zaG93LXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07bWFyZ2luLXJpZ2h0Oi44ZW19J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHlfdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25zX2xpc3RfdG9vbGJhcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbm5vdGF0aW9uc19saXN0X3Rvb2xiYXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse251bUFubm90YXRpb25zOlt7dHlwZTp4eX1dLGV4cGFuZGVkOlt7dHlwZTp4eX1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0sYW5ub3RhdGlvbnNFeHBhbmRlZDpbe3R5cGU6eHl9XSxzaG93Q291bnRzOlt7dHlwZTp4eX1dLHNob3dIaWRkZW46W3t0eXBlOnh5fV0sb25GbGFnQW5ub3RhdGlvbnM6W3t0eXBlOk95fV0sb25IaWRlQW5ub3RhdGlvbnM6W3t0eXBlOk95fV0sb25Ub2dnbGVFeHBhbmRlZDpbe3R5cGU6T3l9XSxvblRvZ2dsZVNob3dDb3VudHM6W3t0eXBlOk95fV0sb25Ub2dnbGVTaG93SGlkZGVuOlt7dHlwZTpPeX1dfSk7Y2xhc3MgX190e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGNidCksdGhpcy5hbm5vdGF0aW9uc0V4cGFuZGVkJD10aGlzLnN0b3JlLnNlbGVjdCh5YnQpLHRoaXMuc2hvd0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoQ2J0KSx0aGlzLnNob3dIaWRkZW4kPXRoaXMuc3RvcmUuc2VsZWN0KE1idCksdGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QobWJ0KSx0aGlzLmlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQ9dGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQucGlwZShJdCgodD0+e3RyeXtyZXR1cm4gQm9vbGVhbihuZXcgUmVnRXhwKHQpKX1jYXRjaCh0KXtyZXR1cm4hMX19KSkpfWZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKElidCh7cmVnZXg6dH0pKX1mbGFnQW5ub3RhdGlvbnModCl7dGhpcy5zdG9yZS5kaXNwYXRjaChOYnQoe2Fubm90YXRpb25zOnR9KSl9aGlkZUFubm90YXRpb25zKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goemJ0KHthbm5vdGF0aW9uczp0fSkpfXRvZ2dsZUV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChHYnQoKSl9dG9nZ2xlU2hvd0NvdW50cygpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWWJ0KCkpfXRvZ2dsZVNob3dIaWRkZW4oKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHFidCgpKX19X190Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxfX3QpKFNtKEl3KSl9LF9fdC7JtWNtcD10byh7dHlwZTpfX3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyIl1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixleHBhbmRlZDoiZXhwYW5kZWQifSxkZWNsczo1LHZhcnM6MTQsY29uc3RzOltbMywibnVtQW5ub3RhdGlvbnMiLCJleHBhbmRlZCIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJhbm5vdGF0aW9uc0V4cGFuZGVkIiwic2hvd0NvdW50cyIsInNob3dIaWRkZW4iLCJvbkZsYWdBbm5vdGF0aW9ucyIsIm9uSGlkZUFubm90YXRpb25zIiwib25Ub2dnbGVFeHBhbmRlZCIsIm9uVG9nZ2xlU2hvd0NvdW50cyIsIm9uVG9nZ2xlU2hvd0hpZGRlbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50IiwwKSxWbSgib25GbGFnQW5ub3RhdGlvbnMiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmZsYWdBbm5vdGF0aW9ucyhlKX0pKSgib25IaWRlQW5ub3RhdGlvbnMiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmhpZGVBbm5vdGF0aW9ucyhlKX0pKSgib25Ub2dnbGVFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVFeHBhbmRlZCgpfSkpKCJvblRvZ2dsZVNob3dDb3VudHMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlU2hvd0NvdW50cygpfSkpKCJvblRvZ2dsZVNob3dIaWRkZW4iLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4udG9nZ2xlU2hvd0hpZGRlbigpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQW0oKSksMiZlJiZEbSgibnVtQW5ub3RhdGlvbnMiLG4ubnVtQW5ub3RhdGlvbnMpKCJleHBhbmRlZCIsbi5leHBhbmRlZCkoInNlbGVjdGVkQW5ub3RhdGlvbnMiLFRoKDEsNixuLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSkoImFubm90YXRpb25zRXhwYW5kZWQiLFRoKDIsOCxuLmFubm90YXRpb25zRXhwYW5kZWQkKSkoInNob3dDb3VudHMiLFRoKDMsMTAsbi5zaG93Q291bnRzJCkpKCJzaG93SGlkZGVuIixUaCg0LDEyLG4uc2hvd0hpZGRlbiQpKX0sZGlyZWN0aXZlczpbeV90XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoX190LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyIix0ZW1wbGF0ZTonXG4gICAgPG5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudFxuICAgICAgW251bUFubm90YXRpb25zXT0ibnVtQW5ub3RhdGlvbnMiXG4gICAgICBbZXhwYW5kZWRdPSJleHBhbmRlZCJcbiAgICAgIFtzZWxlY3RlZEFubm90YXRpb25zXT0ic2VsZWN0ZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFthbm5vdGF0aW9uc0V4cGFuZGVkXT0iYW5ub3RhdGlvbnNFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtzaG93Q291bnRzXT0ic2hvd0NvdW50cyQgfCBhc3luYyJcbiAgICAgIFtzaG93SGlkZGVuXT0ic2hvd0hpZGRlbiQgfCBhc3luYyJcbiAgICAgIChvbkZsYWdBbm5vdGF0aW9ucyk9ImZsYWdBbm5vdGF0aW9ucygkZXZlbnQpIlxuICAgICAgKG9uSGlkZUFubm90YXRpb25zKT0iaGlkZUFubm90YXRpb25zKCRldmVudCkiXG4gICAgICAob25Ub2dnbGVFeHBhbmRlZCk9InRvZ2dsZUV4cGFuZGVkKCkiXG4gICAgICAob25Ub2dnbGVTaG93Q291bnRzKT0idG9nZ2xlU2hvd0NvdW50cygpIlxuICAgICAgKG9uVG9nZ2xlU2hvd0hpZGRlbik9InRvZ2dsZVNob3dIaWRkZW4oKSJcbiAgICA+PC9ucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7bnVtQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0sZXhwYW5kZWQ6W3t0eXBlOnh5fV19KTtjb25zdCBDX3Q9WyJnbHlwaCJdO2NsYXNzIE1fdHtuZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz1KNCh0aGlzLmdseXBoU1ZHLm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKSx0aGlzLmRyYXcoKX1kcmF3KCl7ImNpcmNsZSI9PXRoaXMuc2hhcGU/dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiZmlsbCIsdGhpcy5jb2xvcikuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJjeCIsNSkuYXR0cigiY3kiLDUpLmF0dHIoInIiLDUpOiJiYXIiPT10aGlzLnNoYXBlP3RoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoInJlY3QiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsMTApLmF0dHIoImhlaWdodCIsMTApOiJydW5JbmRpY2F0b3IiPT10aGlzLnNoYXBlJiZ0aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsdGhpcy5jb2xvcikuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJkIiwiTSAyIDAgTCAxMCAwIEwgNyA1IEwgMTAgMTAgTCAyIDEwIFoiKX19TV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxNX3QpfSxNX3QuybVjbXA9dG8oe3R5cGU6TV90LHNlbGVjdG9yczpbWyJucG1pLWxlZ2VuZC1lbGVtZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiZRaChDX3QsNyxoZyksMiZlKXtsZXQgdDtKaCh0PXRiKCkpJiYobi5nbHlwaFNWRz10LmZpcnN0KX19LGlucHV0czp7dGV4dDoidGV4dCIsY29sb3I6ImNvbG9yIixzaGFwZToic2hhcGUifSxkZWNsczo0LHZhcnM6MSxjb25zdHM6W1sxLCJnbHlwaCJdLFsiZ2x5cGgiLCIiXSxbMSwibGVnZW5kLWVsZW1lbnQtdGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHFpKCksVG0oMCwic3ZnIiwwLDEpLFppKCksUm0oMiwiZGl2IiwyKSxrdSgzKSxBbSgpKSwyJmUmJihyYygzKSxTdShuLnRleHQpKX0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3BhZGRpbmctcmlnaHQ6MTBweH0ubGVnZW5kLWVsZW1lbnQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOGVtO3BhZGRpbmctbGVmdDo1cHh9LmdseXBoW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMHB4O2hlaWdodDoxMHB4fSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChNX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1sZWdlbmQtZWxlbWVudCIsdGVtcGxhdGVVcmw6Ii4vbGVnZW5kX2VsZW1lbnRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbGVnZW5kX2VsZW1lbnRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse3RleHQ6W3t0eXBlOnh5fV0sY29sb3I6W3t0eXBlOnh5fV0sc2hhcGU6W3t0eXBlOnh5fV0sZ2x5cGhTVkc6W3t0eXBlOlphLGFyZ3M6WyJnbHlwaCIse3N0YXRpYzohMCxyZWFkOmhnfV19XX0pO2NsYXNzIHZfdHt9ZnVuY3Rpb24geF90KHQsZSl7aWYoMSZ0JiZUbSgwLCJtYXQtaWNvbiIsOCksMiZ0KXtjb25zdCB0PVltKDIpO0RtKCJzdmdJY29uIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5ERVNDRU5ESU5HPyJhcnJvd19kb3dud2FyZF8yNHB4IjoiYXJyb3dfdXB3YXJkXzI0cHgiKSgibmdDbGFzcyIsdC5zb3J0Lm9yZGVyPT09dC5Tb3J0T3JkZXIuREVTQ0VORElORz8iZG93bi1pY29uIjoidXAtaWNvbiIpfX1mdW5jdGlvbiBPX3QodCxlKXtpZigxJnQpe2NvbnN0IHQ9SG0oKTtSbSgwLCJkaXYiLDQpLFJtKDEsImRpdiIsNSksUm0oMiwiZGl2Iiw2KSxWbSgiY2xpY2siLChmdW5jdGlvbiBlKCl7Y29uc3Qgbj1oaSh0KS4kaW1wbGljaXQ7cmV0dXJuIFltKCkub25DaGFuZ2VTb3J0LmVtaXQobil9KSksa3UoMyksUXAoNCx4X3QsMSwyLCJtYXQtaWNvbiIsNyksQW0oKSxBbSgpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oKTtyYygzKSxEdSgiICIsbi5zdHJpcE1ldHJpYyh0KSwiICIpLHJjKDEpLERtKCJuZ0lmIix0PT09bi5zb3J0Lm1ldHJpYyl9fXZfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8dl90KX0sdl90Lsm1Y21wPXRvKHt0eXBlOnZfdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWxlZ2VuZCJdXSxkZWNsczo0LHZhcnM6MCxjb25zdHM6W1sidGV4dCIsInJ1biBpbmRpY2F0b3IiLCJjb2xvciIsInJnYigwLDAsMCkiLCJzaGFwZSIsInJ1bkluZGljYXRvciJdLFsidGV4dCIsInBvc2l0aXZlIGNvcnJlbGF0aW9uIiwiY29sb3IiLCJyZ2IoMTA5LCAxNzQsIDIxMykiLCJzaGFwZSIsImJhciJdLFsidGV4dCIsIm5lZ2F0aXZlIGNvcnJlbGF0aW9uIiwiY29sb3IiLCJyZ2IoMjQ5LCAxMDUsIDc2KSIsInNoYXBlIiwiYmFyIl0sWyJ0ZXh0Iiwic2FtcGxlIGNvdW50IiwiY29sb3IiLCJyZ2IoMTUxLCAxNTEsIDE1MSkiLCJzaGFwZSIsImNpcmNsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwibnBtaS1sZWdlbmQtZWxlbWVudCIsMCksVG0oMSwibnBtaS1sZWdlbmQtZWxlbWVudCIsMSksVG0oMiwibnBtaS1sZWdlbmQtZWxlbWVudCIsMiksVG0oMywibnBtaS1sZWdlbmQtZWxlbWVudCIsMykpfSxkaXJlY3RpdmVzOltNX3RdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O3BhZGRpbmc6MCAxNnB4fSJdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh2X3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LWxlZ2VuZCIsdGVtcGxhdGVVcmw6Ii4vbGVnZW5kX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2xlZ2VuZF9jb21wb25lbnQuY3NzIl19XX1dLG51bGwsbnVsbCk7Y2xhc3MgUF90e2NvbnN0cnVjdG9yKCl7dGhpcy5vbkNoYW5nZVNvcnQ9bmV3IExoLHRoaXMub25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ9bmV3IExoLHRoaXMuU29ydE9yZGVyPW5idH1zdHJpcE1ldHJpYyh0KXtyZXR1cm4gbnl0KHQpfX1QX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFBfdCl9LFBfdC7JtWNtcD10byh7dHlwZTpQX3Qsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXItY29tcG9uZW50Il1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixzb3J0OiJzb3J0In0sb3V0cHV0czp7b25DaGFuZ2VTb3J0OiJvbkNoYW5nZVNvcnQiLG9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkOiJvbkFsbEFubm90YXRpb25zVG9nZ2xlZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsInRvZ2dsZS1hbGwtY29udGFpbmVyIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbMSwiYW5ub3RhdGlvbnMtaGVhZGVyLWNvbnRhaW5lcnMiXSxbImNsYXNzIiwiaGVhZGVyLWNvbHVtbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImhlYWRlci1jb2x1bW4iXSxbMSwiaGVhZGVyLWNvbnRhaW5lciJdLFsidGFiaW5kZXgiLCIwIiwicm9sZSIsImJ1dHRvbiIsInRpdGxlIiwiQ2hhbmdlIHRoZSBzb3J0IGJ5IGNsaWNraW5nIGFueSBvZiB0aGUgbWV0cmljcy4iLDEsImhlYWRlci1jbGlja2FibGUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInNvcnQtaWNvbiIsMywic3ZnSWNvbiIsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbMSwic29ydC1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJtYXQtY2hlY2tib3giLDEpLFZtKCJjaGFuZ2UiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkLmVtaXQoZS5jaGVja2VkKX0pKSxBbSgpLEFtKCksUm0oMiwiZGl2IiwyKSxRcCgzLE9fdCw1LDIsImRpdiIsMyksQW0oKSksMiZlJiYocmMoMSksRG0oImNoZWNrZWQiLG4uc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGg9PT1uLm51bUFubm90YXRpb25zKSxyYygyKSxEbSgibmdGb3JPZiIsbi5hY3RpdmVNZXRyaWNzKSl9LGRpcmVjdGl2ZXM6W09ZLGxNLGRNLERXLGFNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JvcmRlci1ib3R0b206MnB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDoyOHB4O2FsaWduLWl0ZW1zOmZsZXgtZW5kO21hcmdpbi10b3A6OHB4fS5hbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVyc1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZTouOWVtO2ZvbnQtd2VpZ2h0OjUwMDtmbGV4LWdyb3c6MX0uaGVhZGVyLWNvbHVtbltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9LmhlYWRlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5oZWFkZXItY2xpY2thYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7b3V0bGluZTpub25lfS50b2dnbGUtYWxsLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MTBweDt3aWR0aDo5MHB4fS5zb3J0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxNnB4fSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChQX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2hlYWRlcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9oZWFkZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse251bUFubm90YXRpb25zOlt7dHlwZTp4eX1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0sYWN0aXZlTWV0cmljczpbe3R5cGU6eHl9XSxzb3J0Olt7dHlwZTp4eX1dLG9uQ2hhbmdlU29ydDpbe3R5cGU6T3l9XSxvbkFsbEFubm90YXRpb25zVG9nZ2xlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIHdfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChjYnQpLHRoaXMuYW5ub3RhdGlvblNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KGhidCl9Y2hhbmdlU29ydCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFZidCh7bWV0cmljOnR9KSl9YWxsQW5ub3RhdGlvbnNUb2dnbGVkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQWJ0KHQ/e2Fubm90YXRpb25zOk9iamVjdC5rZXlzKHRoaXMuYW5ub3RhdGlvbnMpfTp7YW5ub3RhdGlvbnM6W119KSl9fXdfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8d190KShTbShJdykpfSx3X3QuybVjbXA9dG8oe3R5cGU6d190LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIl1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixhbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MifSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJzb3J0IiwiYWN0aXZlTWV0cmljcyIsIm9uQ2hhbmdlU29ydCIsIm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudCIsMCksVm0oIm9uQ2hhbmdlU29ydCIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4uY2hhbmdlU29ydChlKX0pKSgib25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLmFsbEFubm90YXRpb25zVG9nZ2xlZChlKX0pKSxBaCgxLCJhc3luYyIpLEFoKDIsImFzeW5jIiksQW0oKSksMiZlJiZEbSgibnVtQW5ub3RhdGlvbnMiLG4ubnVtQW5ub3RhdGlvbnMpKCJzZWxlY3RlZEFubm90YXRpb25zIixUaCgxLDQsbi5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJzb3J0IixUaCgyLDYsbi5hbm5vdGF0aW9uU29ydCQpKSgiYWN0aXZlTWV0cmljcyIsbi5hY3RpdmVNZXRyaWNzKX0sZGlyZWN0aXZlczpbUF90XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgod190LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXIiLHRlbXBsYXRlOidcbiAgICA8bnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnRcbiAgICAgIFtudW1Bbm5vdGF0aW9uc109Im51bUFubm90YXRpb25zIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3NvcnRdPSJhbm5vdGF0aW9uU29ydCQgfCBhc3luYyJcbiAgICAgIFthY3RpdmVNZXRyaWNzXT0iYWN0aXZlTWV0cmljcyJcbiAgICAgIChvbkNoYW5nZVNvcnQpPSJjaGFuZ2VTb3J0KCRldmVudCkiXG4gICAgICAob25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQpPSJhbGxBbm5vdGF0aW9uc1RvZ2dsZWQoJGV2ZW50KSJcbiAgICA+PC9ucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxhbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTp4eX1dfSk7Y29uc3Qga190PVsiY2hhcnQiXSxTX3Q9WyJoaW50Q2xpcCJdO2Z1bmN0aW9uIERfdCh0LGUpezEmdCYmVG0oMCwibWF0LWljb24iLDEyKX1mdW5jdGlvbiBFX3QodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiwxMyl9ZnVuY3Rpb24gUl90KHQsZSl7aWYoMSZ0JiZUbSgwLCJtYXQtaWNvbiIsMTQpLDImdCl7Y29uc3QgdD1ZbSgpO0RtKCJzdmdJY29uIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5TSU1JTEFSPyJhcnJvd19kb3dud2FyZF8yNHB4IjoiYXJyb3dfdXB3YXJkXzI0cHgiKSgibmdDbGFzcyIsdC5zb3J0Lm9yZGVyPT09dC5Tb3J0T3JkZXIuU0lNSUxBUj8iZG93bi1pY29uIjoidXAtaWNvbiIpfX1jbGFzcyBBX3R7Y29uc3RydWN0b3IoKXt0aGlzLnNlbGVjdGVkPSExLHRoaXMub25TaG93U2ltaWxhckFubm90YXRpb25zPW5ldyBMaCx0aGlzLlNvcnRPcmRlcj1uYnQsdGhpcy53aWR0aD0xMCx0aGlzLmNoYXJ0V2lkdGg9MTAsdGhpcy5jaGFydEhlaWdodD0xMCx0aGlzLm1heERvdFJhZGl1cz0xMCx0aGlzLmNvdW50RG90T2Zmc2V0PTcwLHRoaXMuY291bnRUZXh0UGFkZGluZz0yLHRoaXMubWFyZ2luPXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MTAwfSx0aGlzLnN0cm9rZUNvbG9yPSIjZmZmIix0aGlzLnRleHRDbGFzcz0iZGVmYXVsdC10ZXh0Iix0aGlzLnJ1bnM9W119b25SZXNpemUodCl7dGhpcy5yZWRyYXcoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz1KNCh0aGlzLmFubm90YXRpb25Db250YWluZXIubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJzdmciKSx0aGlzLnhTY2FsZT1VdHQoKS5wYWRkaW5nKDApLHRoaXMueVNjYWxlPVV0dCgpLnBhZGRpbmcoMCksdGhpcy5zaXplU2NhbGU9ZWV0KCkuZG9tYWluKFswLDFdKSx0aGlzLmNvdW50U2l6ZVNjYWxlPWVldCgpLnJhbmdlKFsyLHRoaXMubWF4RG90UmFkaXVzXSksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMubWFyZ2luLmxlZnR9LCAke3RoaXMubWFyZ2luLnRvcH0pYCksdGhpcy5iYXJzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuY291bnREb3RzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMudGV4dHNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5jb3VudFRleHRzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMucnVuSGludEdyb3VwPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLHRoaXMucmVkcmF3KCl9bmdPbkNoYW5nZXModCl7dGhpcy5zdmcmJnRoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMuaW5jbHVkZXModGhpcy5hbm5vdGF0aW9uKSx0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnNldFRleHRDbGFzcygpLHRoaXMudXBkYXRlQXhlcygpLHRoaXMuZHJhdygpfXVwZGF0ZURpbWVuc2lvbnMoKXtjb25zdCB0PW5ldyBTZXQ7dGhpcy5kYXRhLmZvckVhY2goKGU9Pnt0LmFkZChlLnJ1bil9KSksdGhpcy5ydW5zPVsuLi50XSx0aGlzLnN2Zy5zdHlsZSgiaGVpZ2h0Iix0aGlzLm51bUFjdGl2ZVJ1bnMqdGhpcy5ydW5IZWlnaHQrInB4IiksdGhpcy5jaGFydEhlaWdodD10aGlzLnJ1bnMubGVuZ3RoKnRoaXMucnVuSGVpZ2h0LXRoaXMubWFyZ2luLnRvcC10aGlzLm1hcmdpbi5ib3R0b20sdGhpcy53aWR0aD10aGlzLmFubm90YXRpb25Db250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aHx8MTAsdGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodH1zZXRUZXh0Q2xhc3MoKXt0aGlzLnRleHRDbGFzcz0iZGVmYXVsdC10ZXh0Iix0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyh0aGlzLmFubm90YXRpb24pP3RoaXMudGV4dENsYXNzPSJmbGFnLXRleHQiOnRoaXMuaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXModGhpcy5hbm5vdGF0aW9uKSYmKHRoaXMudGV4dENsYXNzPSJoaWRkZW4tdGV4dCIpfXVwZGF0ZUF4ZXMoKXt0aGlzLnhTY2FsZS5yYW5nZVJvdW5kKFswLHRoaXMuY2hhcnRXaWR0aC10aGlzLmNoYXJ0V2lkdGgvdGhpcy5hY3RpdmVNZXRyaWNzLmxlbmd0aF0pLmRvbWFpbih0aGlzLmFjdGl2ZU1ldHJpY3MubWFwKCh0PT5ueXQodCkpKSksdGhpcy55U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMucnVuSGVpZ2h0XSkuZG9tYWluKHRoaXMucnVucyksdGhpcy5zaXplU2NhbGUucmFuZ2UoWzAsdGhpcy5jaGFydFdpZHRoL3RoaXMuYWN0aXZlTWV0cmljcy5sZW5ndGhdKSx0aGlzLmNvdW50U2l6ZVNjYWxlLmRvbWFpbihbMCx0aGlzLm1heENvdW50XSl9ZHJhdygpe3RoaXMuZHJhd1J1bkluZGljYXRvcnMoKSx0aGlzLmRyYXdSdW5IaW50VGV4dHMoKSx0aGlzLmRyYXdCYXJzKCksdGhpcy5kcmF3VGV4dHMoKSx0aGlzLnNob3dDb3VudHM/KHRoaXMuZHJhd0NvdW50RG90cygpLHRoaXMuZHJhd0NvdW50VGV4dHMoKSk6KHRoaXMuY291bnREb3RzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtZG90IikucmVtb3ZlKCksdGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtYmFja2dyb3VuZC10ZXh0IikucmVtb3ZlKCksdGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtdGV4dCIpLnJlbW92ZSgpKX1kcmF3UnVuSW5kaWNhdG9ycygpe0o0KHRoaXMuY2xpcFBhdGhFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIix0aGlzLm1hcmdpbi5sZWZ0LTMwKS5hdHRyKCJoZWlnaHQiLHRoaXMuY2hhcnRIZWlnaHQpO2NvbnN0IHQ9dGhpcy5ydW5IaW50R3JvdXAuc2VsZWN0QWxsKCIuaGludCIpLmRhdGEodGhpcy5ydW5zKSxlPXQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpbnQiKTtlLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDE1IDAgTCAxMCAxMCBMIDE1IDIwIEwgMCAyMCBaIiksZS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoMTAsICR7dGhpcy55U2NhbGUodCkrNX0pYH0uYmluZCh0aGlzKSkuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZSh0KX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd1J1bkhpbnRUZXh0cygpe2NvbnN0IHQ9dGhpcy5ydW5IaW50R3JvdXAuc2VsZWN0QWxsKCIuaGludC10ZXh0IikuZGF0YSh0aGlzLnJ1bnMpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IiwyNSkuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoImNsaXAtcGF0aCIsInVybCgjaGludC1jbGlwKSIpLm1lcmdlKHQpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0KSsxNX0uYmluZCh0aGlzKSkuYXR0cigiY2xhc3MiLGBoaW50LXRleHQgJHt0aGlzLnRleHRDbGFzc31gKS50ZXh0KCh0PT57dmFyIGU7cmV0dXJuKG51bGw9PT0oZT10aGlzLnJ1bklkVG9SdW5zLmdldCh0KSl8fHZvaWQgMD09PWU/dm9pZCAwOmUubmFtZSl8fCIifSkpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdCYXJzKCl7Y29uc3QgdD10aGlzLmJhcnNHcm91cC5zZWxlY3RBbGwoIi5iYXIiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFyIikuYXR0cigiaGVpZ2h0IiwyMCkubWVyZ2UodCkuYXR0cigiZmlsbCIsKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8iIjp0Lm5QTUlWYWx1ZT49MD9ib3QodC5uUE1JVmFsdWUpOl9vdCgtMSp0Lm5QTUlWYWx1ZSkpKS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpfS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pKzV9LmJpbmQodGhpcykpLmF0dHIoIndpZHRoIixmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQublBNSVZhbHVlPzA6dGhpcy5zaXplU2NhbGUoTWF0aC5hYnModC5uUE1JVmFsdWUpKX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd0NvdW50RG90cygpe2NvbnN0IHQ9dGhpcy5jb3VudERvdHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1kb3QiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY2xhc3MiLCJjb3VudC1kb3QiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLm1lcmdlKHQpLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5jb3VudFZhbHVlPyIiOnlvdCh0LmNvdW50VmFsdWUvdGhpcy5tYXhDb3VudCl9LmJpbmQodGhpcykpLmF0dHIoImN4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpK3RoaXMuY291bnREb3RPZmZzZXR9LmJpbmQodGhpcykpLmF0dHIoImN5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLmF0dHIoInIiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5jb3VudFZhbHVlPzA6dGhpcy5jb3VudFNpemVTY2FsZSh0LmNvdW50VmFsdWUpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3VGV4dHMoKXtjb25zdCB0PXRoaXMudGV4dHNHcm91cC5zZWxlY3RBbGwoIi5ucG1pLWJhY2tncm91bmQtdGV4dCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJucG1pLWJhY2tncm91bmQtdGV4dCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMykuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLHRoaXMuc3Ryb2tlQ29sb3IpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZSh0KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpKzV9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQublBNSVZhbHVlPyJudWxsIjpNYXRoLnJvdW5kKDFlMyoodC5uUE1JVmFsdWUrTnVtYmVyLkVQU0lMT04pKS8xZTMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBlPXRoaXMudGV4dHNHcm91cC5zZWxlY3RBbGwoIi5ucG1pLXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7ZS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnBtaS10ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKGUpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrNX0uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5uUE1JVmFsdWU/Im51bGwiOk1hdGgucm91bmQoMWUzKih0Lm5QTUlWYWx1ZStOdW1iZXIuRVBTSUxPTikpLzFlMykpLGUuZXhpdCgpLnJlbW92ZSgpfWRyYXdDb3VudFRleHRzKCl7Y29uc3QgdD10aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1iYWNrZ3JvdW5kLXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY291bnQtYmFja2dyb3VuZC10ZXh0IikuYXR0cigic3Ryb2tlLXdpZHRoIiwzKS5hdHRyKCJzdHJva2UtbGluZWpvaW4iLCJyb3VuZCIpLmF0dHIoInN0cm9rZSIsdGhpcy5zdHJva2VDb2xvcikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKHQpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrdGhpcy5jb3VudERvdE9mZnNldCt0aGlzLmNvdW50VGV4dFBhZGRpbmcrdGhpcy5tYXhEb3RSYWRpdXN9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQuY291bnRWYWx1ZT8iIjpJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCh0LmNvdW50VmFsdWUpKSksdC5leGl0KCkucmVtb3ZlKCk7Y29uc3QgZT10aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO2UuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImNvdW50LXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UoZSkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSt0aGlzLmNvdW50RG90T2Zmc2V0K3RoaXMuY291bnRUZXh0UGFkZGluZyt0aGlzLm1heERvdFJhZGl1c30uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KCh0PT5udWxsPT09dC5jb3VudFZhbHVlPyIiOkludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KHQuY291bnRWYWx1ZSkpKSxlLmV4aXQoKS5yZW1vdmUoKX1zaW1pbGFyaXR5U29ydCh0KXt0aGlzLmhhc0VtYmVkZGluZyYmKHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5vblNob3dTaW1pbGFyQW5ub3RhdGlvbnMuZW1pdCgpKX19QV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxBX3QpfSxBX3QuybVjbXA9dG8oe3R5cGU6QV90LHNlbGVjdG9yczpbWyJhbm5vdGF0aW9uLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKGtfdCw3LGhnKSxRaChTX3QsNyxoZykpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uYW5ub3RhdGlvbkNvbnRhaW5lcj10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5jbGlwUGF0aEVsZW1lbnQ9dC5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgicmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplKCl9KSwhMSxvbCksMiZlJiZwdSgic2VsZWN0ZWQtcm93IixuLnNlbGVjdGVkKX0saW5wdXRzOntkYXRhOiJkYXRhIixtYXhDb3VudDoibWF4Q291bnQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGZsYWdnZWRBbm5vdGF0aW9uczoiZmxhZ2dlZEFubm90YXRpb25zIixoaWRkZW5Bbm5vdGF0aW9uczoiaGlkZGVuQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLG51bUFjdGl2ZVJ1bnM6Im51bUFjdGl2ZVJ1bnMiLHNob3dDb3VudHM6InNob3dDb3VudHMiLGFubm90YXRpb246ImFubm90YXRpb24iLHJ1bkhlaWdodDoicnVuSGVpZ2h0IixoYXNFbWJlZGRpbmc6Imhhc0VtYmVkZGluZyIsc29ydDoic29ydCIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUiLHJ1bklkVG9SdW5zOiJydW5JZFRvUnVucyJ9LG91dHB1dHM6e29uU2hvd1NpbWlsYXJBbm5vdGF0aW9uczoib25TaG93U2ltaWxhckFubm90YXRpb25zIn0sZmVhdHVyZXM6W0JvXSxkZWNsczoxNCx2YXJzOjEwLGNvbnN0czpbWzEsImFubm90YXRpb24tdGl0bGUiXSxbMSwiYW5ub3RhdGlvbi1jaGVja2JveCIsMywiY2hlY2tlZCIsImNsaWNrIl0sWzEsImFubm90YXRpb24tYnV0dG9uIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbImNsYXNzIiwiZmxhZ2dlZC1pY29uIiwic3ZnSWNvbiIsImZsYWdfMjRweCIsNCwibmdJZiJdLFsiY2xhc3MiLCJoaWRkZW4taWNvbiIsInN2Z0ljb24iLCJ2aXNpYmlsaXR5X29mZl8yNHB4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFubm90YXRpb24taWNvbiIsMywic3ZnSWNvbiIsIm5nQ2xhc3MiLDQsIm5nSWYiXSxbMSwiY2hhcnQtZGl2Il0sWyJjaGFydCIsIiJdLFsxLCJjaGFydC1zdmciXSxbImlkIiwiaGludC1jbGlwIl0sWyJoaW50Q2xpcCIsIiJdLFsieCIsIjAiLCJ5IiwiMCJdLFsic3ZnSWNvbiIsImZsYWdfMjRweCIsMSwiZmxhZ2dlZC1pY29uIl0sWyJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCIsMSwiaGlkZGVuLWljb24iXSxbMSwiYW5ub3RhdGlvbi1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZGl2IiwwKSxSbSgxLCJtYXQtY2hlY2tib3giLDEpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGUucHJldmVudERlZmF1bHQoKX0pKSxBbSgpLFJtKDIsImJ1dHRvbiIsMiksVm0oImNsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5zaW1pbGFyaXR5U29ydChlKX0pKSxrdSgzKSxBbSgpLFFwKDQsRF90LDEsMCwibWF0LWljb24iLDMpLFFwKDUsRV90LDEsMCwibWF0LWljb24iLDQpLFFwKDYsUl90LDEsMiwibWF0LWljb24iLDUpLEFtKCksUm0oNywiZGl2Iiw2LDcpLHFpKCksUm0oOSwic3ZnIiw4KSxSbSgxMCwiZGVmcyIpLFJtKDExLCJjbGlwUGF0aCIsOSwxMCksVG0oMTMsInJlY3QiLDExKSxBbSgpLEFtKCksQW0oKSxBbSgpKSwyJmUmJihwdSgiZmxhZ2dlZC1hbm5vdGF0aW9uIixuLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhuLmFubm90YXRpb24pKSgiaGlkZGVuLWFubm90YXRpb24iLG4uaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSYmIW4uZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKG4uYW5ub3RhdGlvbikpLHJjKDEpLERtKCJjaGVja2VkIixuLnNlbGVjdGVkQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSkscmMoMSksRG0oIm5nQ2xhc3MiLG4uaGFzRW1iZWRkaW5nPyJjbGlja2FibGUtYW5ub3RhdGlvbiI6IiIpLHJjKDEpLER1KCIgIixuLmFubm90YXRpb24sIiAiKSxyYygxKSxEbSgibmdJZiIsbi5mbGFnZ2VkQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSkscmMoMSksRG0oIm5nSWYiLG4uaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMobi5hbm5vdGF0aW9uKSkscmMoMSksRG0oIm5nSWYiLG4uYW5ub3RhdGlvbj09PW4uc29ydC5tZXRyaWMpKX0sZGlyZWN0aXZlczpbT1ksYU0sZE0sRFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudHtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC1zaXplOjI0cHh9Lm1hdC1oMSwubWF0LWhlYWRsaW5lLC5tYXQtdHlwb2dyYXBoeSBoMXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMiwubWF0LXRpdGxlLC5tYXQtdHlwb2dyYXBoeSBoMntmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMywubWF0LXN1YmhlYWRpbmctMiwubWF0LXR5cG9ncmFwaHkgaDN7Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDQsLm1hdC1zdWJoZWFkaW5nLTEsLm1hdC10eXBvZ3JhcGh5IGg0e2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1LC5tYXQtdHlwb2dyYXBoeSBoNXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNiwubWF0LXR5cG9ncmFwaHkgaDZ7Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmcsLm1hdC1ib2R5LTJ7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5LC5tYXQtYm9keS0xLC5tYXQtdHlwb2dyYXBoeXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHkgcCwubWF0LWJvZHktMSBwLC5tYXQtdHlwb2dyYXBoeSBwe21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsLC5tYXQtY2FwdGlvbntmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNCwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTR7Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zLC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktM3tmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yLC5tYXQtdHlwb2dyYXBoeSAubWF0LWRpc3BsYXktMntmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMSwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTF7Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbiwubWF0LXJhaXNlZC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b24sLm1hdC1mYWIsLm1hdC1taW5pLWZhYntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJke2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGV7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZSwubWF0LWNhcmQtY29udGVudHtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dCAubWF0LWNoZWNrYm94LWxhYmVse2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sLm1hdC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb257Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbHtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsLC5tYXQtZm9vdGVyLWNlbGx7Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5e2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCwubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b257Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoe2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50e2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZHtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcnttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWR7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yaXBwbGUtZWxlbWVudHtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW57Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9we2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCwuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3h7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5ne3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3h7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7LyohKi99QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7LyohKi99LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX06aG9zdHtwYWRkaW5nLXRvcDo1cHh9LmFubm90YXRpb24tdGl0bGV7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjBweDtwYWRkaW5nOjAgMTBweDt1c2VyLXNlbGVjdDpub25lfS5zZWxlY3RlZC1yb3d7YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2Rpc3BsYXk6YmxvY2t9LmZsYWdnZWQtYW5ub3RhdGlvbntjb2xvcjojZjU3YzAwfS5oaWRkZW4tYW5ub3RhdGlvbntjb2xvcjojNzU3NTc1fS5hbm5vdGF0aW9uLWNoZWNrYm94e3BhZGRpbmctcmlnaHQ6NXB4fS5mbGFnZ2VkLWljb257dHJhbnNmb3JtOnNjYWxlKDAuNil9LmhpZGRlbi1pY29ue3RyYW5zZm9ybTpzY2FsZSgwLjYpfS5hbm5vdGF0aW9uLWljb257dHJhbnNmb3JtOnNjYWxlKDAuNil9LmNoYXJ0LWRpdntib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmVifS5jaGFydC1zdmd7d2lkdGg6MTAwJTt1c2VyLXNlbGVjdDpub25lfS5kZWZhdWx0LXRleHR7ZmlsbDojMDAwfS5mbGFnLXRleHR7ZmlsbDojZjU3YzAwfS5oaWRkZW4tdGV4dHtmaWxsOiM3NTc1NzV9LmNsaWNrYWJsZS1hbm5vdGF0aW9ue2N1cnNvcjpwb2ludGVyfWJ1dHRvbnthbGw6dW5zZXR9XG4nXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEFfdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJhbm5vdGF0aW9uLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbm5vdGF0aW9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNoLGVuY2Fwc3VsYXRpb246SG4uTm9uZX1dfV0sbnVsbCx7ZGF0YTpbe3R5cGU6eHl9XSxtYXhDb3VudDpbe3R5cGU6eHl9XSxzZWxlY3RlZEFubm90YXRpb25zOlt7dHlwZTp4eX1dLGZsYWdnZWRBbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxoaWRkZW5Bbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTp4eX1dLG51bUFjdGl2ZVJ1bnM6W3t0eXBlOnh5fV0sc2hvd0NvdW50czpbe3R5cGU6eHl9XSxhbm5vdGF0aW9uOlt7dHlwZTp4eX1dLHJ1bkhlaWdodDpbe3R5cGU6eHl9XSxoYXNFbWJlZGRpbmc6W3t0eXBlOnh5fV0sc29ydDpbe3R5cGU6eHl9XSxzaWRlYmFyV2lkdGg6W3t0eXBlOnh5fV0sY29sb3JTY2FsZTpbe3R5cGU6eHl9XSxydW5JZFRvUnVuczpbe3R5cGU6eHl9XSxhbm5vdGF0aW9uQ29udGFpbmVyOlt7dHlwZTpaYSxhcmdzOlsiY2hhcnQiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0sY2xpcFBhdGhFbGVtZW50Olt7dHlwZTpaYSxhcmdzOlsiaGludENsaXAiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0sc2VsZWN0ZWQ6W3t0eXBlOlB5LGFyZ3M6WyJjbGFzcy5zZWxlY3RlZC1yb3ciXX1dLG9uUmVzaXplOlt7dHlwZTp3eSxhcmdzOlsid2luZG93OnJlc2l6ZSJdfV0sb25TaG93U2ltaWxhckFubm90YXRpb25zOlt7dHlwZTpPeX1dfSk7Y2xhc3MgVF90e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KGhidCksdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGRidCksdGhpcy5oaWRkZW5Bbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QocGJ0KSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGNidCksdGhpcy5zaG93Q291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChDYnQpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdCh4YnQpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoek4pLnBpcGUoSXQoKHQ9PmU9PntpZighdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtlfS5gKTtyZXR1cm4gdFtlXX0pKSksdGhpcy5ydW5JZFRvUnVucyQ9dGhpcy5zdG9yZS5zZWxlY3QoZE4pfXNob3dTaW1pbGFyQW5ub3RhdGlvbnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGpidCh7YW5ub3RhdGlvbjp0aGlzLmFubm90YXRpb259KSl9fWZ1bmN0aW9uIE5fdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsIm5wbWktYW5ub3RhdGlvbiIsNSksVm0oImNsaWNrIiwoZnVuY3Rpb24gZShuKXtjb25zdCBvPWhpKHQpLiRpbXBsaWNpdDtyZXR1cm4gWW0oMikucm93Q2xpY2tlZChuLG8pfSkpLEFtKCl9aWYoMiZ0KXtjb25zdCB0PWUuJGltcGxpY2l0LG49WW0oMik7RG0oImRhdGEiLG4uYW5ub3RhdGlvbnNbdF0pKCJhY3RpdmVNZXRyaWNzIixuLmFjdGl2ZU1ldHJpY3MpKCJudW1BY3RpdmVSdW5zIixuLm51bUFjdGl2ZVJ1bnMpKCJtYXhDb3VudCIsbi5tYXhDb3VudCkoImFubm90YXRpb24iLHQpKCJydW5IZWlnaHQiLG4ucnVuSGVpZ2h0KSgiaGFzRW1iZWRkaW5nIixuLmVtYmVkZGluZ0RhdGEmJnZvaWQgMCE9PW4uZW1iZWRkaW5nRGF0YVt0XSl9fWZ1bmN0aW9uIHpfdCh0LGUpe2lmKDEmdCYmKE5tKDApLFRtKDEsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1sZWdlbmQiKSxUbSgyLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIiwyKSxSbSgzLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLDMpLFFwKDQsTl90LDEsNywibnBtaS1hbm5vdGF0aW9uIiw0KSxBbSgpLHptKCkpLDImdCl7Y29uc3QgdD1ZbSgpO3JjKDIpLERtKCJhbm5vdGF0aW9ucyIsdC5hbm5vdGF0aW9ucykoIm51bUFubm90YXRpb25zIix0Lm51bUFubm90YXRpb25zKSgiYWN0aXZlTWV0cmljcyIsdC5hY3RpdmVNZXRyaWNzKSxyYygxKSxLbSgiaXRlbVNpemUiLHQubnVtQWN0aXZlUnVucyp0LnJ1bkhlaWdodCsyNSkscmMoMSksRG0oImNka1ZpcnR1YWxGb3JPZiIsdC5zb3J0ZWRBbm5vdGF0aW9ucyl9fVRfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VF90KShTbShJdykpfSxUX3QuybVjbXA9dG8oe3R5cGU6VF90LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb24iXV0saW5wdXRzOntkYXRhOiJkYXRhIixtYXhDb3VudDoibWF4Q291bnQiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLG51bUFjdGl2ZVJ1bnM6Im51bUFjdGl2ZVJ1bnMiLGFubm90YXRpb246ImFubm90YXRpb24iLHJ1bkhlaWdodDoicnVuSGVpZ2h0IixoYXNFbWJlZGRpbmc6Imhhc0VtYmVkZGluZyJ9LGRlY2xzOjksdmFyczozMSxjb25zdHM6W1szLCJkYXRhIiwibWF4Q291bnQiLCJhY3RpdmVNZXRyaWNzIiwibnVtQWN0aXZlUnVucyIsImFubm90YXRpb24iLCJydW5IZWlnaHQiLCJoYXNFbWJlZGRpbmciLCJzb3J0Iiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsImZsYWdnZWRBbm5vdGF0aW9ucyIsImhpZGRlbkFubm90YXRpb25zIiwic2hvd0NvdW50cyIsInNpZGViYXJXaWR0aCIsImNvbG9yU2NhbGUiLCJydW5JZFRvUnVucyIsIm9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiYW5ub3RhdGlvbi1jb21wb25lbnQiLDApLFZtKCJvblNob3dTaW1pbGFyQW5ub3RhdGlvbnMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4uc2hvd1NpbWlsYXJBbm5vdGF0aW9ucygpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQWgoNSwiYXN5bmMiKSxBaCg2LCJhc3luYyIpLEFoKDcsImFzeW5jIiksQWgoOCwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJkYXRhIixuLmRhdGEpKCJtYXhDb3VudCIsbi5tYXhDb3VudCkoImFjdGl2ZU1ldHJpY3MiLG4uYWN0aXZlTWV0cmljcykoIm51bUFjdGl2ZVJ1bnMiLG4ubnVtQWN0aXZlUnVucykoImFubm90YXRpb24iLG4uYW5ub3RhdGlvbikoInJ1bkhlaWdodCIsbi5ydW5IZWlnaHQpKCJoYXNFbWJlZGRpbmciLG4uaGFzRW1iZWRkaW5nKSgic29ydCIsVGgoMSwxNSxuLnNvcnQkKSkoInNlbGVjdGVkQW5ub3RhdGlvbnMiLFRoKDIsMTcsbi5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJmbGFnZ2VkQW5ub3RhdGlvbnMiLFRoKDMsMTksbi5mbGFnZ2VkQW5ub3RhdGlvbnMkKSkoImhpZGRlbkFubm90YXRpb25zIixUaCg0LDIxLG4uaGlkZGVuQW5ub3RhdGlvbnMkKSkoInNob3dDb3VudHMiLFRoKDUsMjMsbi5zaG93Q291bnRzJCkpKCJzaWRlYmFyV2lkdGgiLFRoKDYsMjUsbi5zaWRlYmFyV2lkdGgkKSkoImNvbG9yU2NhbGUiLFRoKDcsMjcsbi5ydW5Db2xvclNjYWxlJCkpKCJydW5JZFRvUnVucyIsVGgoOCwyOSxuLnJ1bklkVG9SdW5zJCkpfSxkaXJlY3RpdmVzOltBX3RdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChUX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9uIix0ZW1wbGF0ZTonXG4gICAgPGFubm90YXRpb24tY29tcG9uZW50XG4gICAgICBbZGF0YV09ImRhdGEiXG4gICAgICBbbWF4Q291bnRdPSJtYXhDb3VudCJcbiAgICAgIFthY3RpdmVNZXRyaWNzXT0iYWN0aXZlTWV0cmljcyJcbiAgICAgIFtudW1BY3RpdmVSdW5zXT0ibnVtQWN0aXZlUnVucyJcbiAgICAgIFthbm5vdGF0aW9uXT0iYW5ub3RhdGlvbiJcbiAgICAgIFtydW5IZWlnaHRdPSJydW5IZWlnaHQiXG4gICAgICBbaGFzRW1iZWRkaW5nXT0iaGFzRW1iZWRkaW5nIlxuICAgICAgW3NvcnRdPSJzb3J0JCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW2ZsYWdnZWRBbm5vdGF0aW9uc109ImZsYWdnZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFtoaWRkZW5Bbm5vdGF0aW9uc109ImhpZGRlbkFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3Nob3dDb3VudHNdPSJzaG93Q291bnRzJCB8IGFzeW5jIlxuICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyJcbiAgICAgIFtjb2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSQgfCBhc3luYyJcbiAgICAgIFtydW5JZFRvUnVuc109InJ1bklkVG9SdW5zJCB8IGFzeW5jIlxuICAgICAgKG9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyk9InNob3dTaW1pbGFyQW5ub3RhdGlvbnMoKSJcbiAgICA+PC9hbm5vdGF0aW9uLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLHtkYXRhOlt7dHlwZTp4eX1dLG1heENvdW50Olt7dHlwZTp4eX1dLGFjdGl2ZU1ldHJpY3M6W3t0eXBlOnh5fV0sbnVtQWN0aXZlUnVuczpbe3R5cGU6eHl9XSxhbm5vdGF0aW9uOlt7dHlwZTp4eX1dLHJ1bkhlaWdodDpbe3R5cGU6eHl9XSxoYXNFbWJlZGRpbmc6W3t0eXBlOnh5fV19KTtjbGFzcyBJX3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uUm93Q2xpY2s9bmV3IExoLHRoaXMucnVuSGVpZ2h0PTMwfXJvd0NsaWNrZWQodCxlKXtpZih0LnNoaWZ0S2V5KXtsZXQgdD10aGlzLnNvcnRlZEFubm90YXRpb25zLmluZGV4T2YoZSk7aWYoMD09PXRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpdGhpcy5vblJvd0NsaWNrLmVtaXQodGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZSgwLHQrMSkpO2Vsc2V7Y29uc3QgZT10aGlzLnNvcnRlZEFubm90YXRpb25zLmluZGV4T2YodGhpcy5zZWxlY3RlZEFubm90YXRpb25zW3RoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgtMV0pO3RoaXMub25Sb3dDbGljay5lbWl0KGU8dD90aGlzLnNvcnRlZEFubm90YXRpb25zLnNsaWNlKGUsdCsxKTp0aGlzLnNvcnRlZEFubm90YXRpb25zLnNsaWNlKHQsZSsxKSl9fWVsc2UgdGhpcy5vblJvd0NsaWNrLmVtaXQoW2VdKX19SV90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxJX3QpfSxJX3QuybVjbXA9dG8oe3R5cGU6SV90LHNlbGVjdG9yczpbWyJhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudCJdXSxpbnB1dHM6e2Fubm90YXRpb25zOiJhbm5vdGF0aW9ucyIsZW1iZWRkaW5nRGF0YToiZW1iZWRkaW5nRGF0YSIsYW5ub3RhdGlvbnNFeHBhbmRlZDoiYW5ub3RhdGlvbnNFeHBhbmRlZCIsbnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixhbm5vdGF0aW9uU29ydDoiYW5ub3RhdGlvblNvcnQiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLG51bUFjdGl2ZVJ1bnM6Im51bUFjdGl2ZVJ1bnMiLHNvcnRlZEFubm90YXRpb25zOiJzb3J0ZWRBbm5vdGF0aW9ucyIsc2VsZWN0ZWRBbm5vdGF0aW9uczoic2VsZWN0ZWRBbm5vdGF0aW9ucyIsbWF4Q291bnQ6Im1heENvdW50In0sb3V0cHV0czp7b25Sb3dDbGljazoib25Sb3dDbGljayJ9LGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsIm51bUFubm90YXRpb25zIiwiZXhwYW5kZWQiXSxbNCwibmdJZiJdLFszLCJhbm5vdGF0aW9ucyIsIm51bUFubm90YXRpb25zIiwiYWN0aXZlTWV0cmljcyJdLFsibWluQnVmZmVyUHgiLCIzMDAiLCJtYXhCdWZmZXJQeCIsIjYwMCIsMSwiYW5ub3RhdGlvbi1yb3dzIiwzLCJpdGVtU2l6ZSJdLFszLCJkYXRhIiwiYWN0aXZlTWV0cmljcyIsIm51bUFjdGl2ZVJ1bnMiLCJtYXhDb3VudCIsImFubm90YXRpb24iLCJydW5IZWlnaHQiLCJoYXNFbWJlZGRpbmciLCJjbGljayIsNCwiY2RrVmlydHVhbEZvciIsImNka1ZpcnR1YWxGb3JPZiJdLFszLCJkYXRhIiwiYWN0aXZlTWV0cmljcyIsIm51bUFjdGl2ZVJ1bnMiLCJtYXhDb3VudCIsImFubm90YXRpb24iLCJydW5IZWlnaHQiLCJoYXNFbWJlZGRpbmciLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoVG0oMCwibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiLDApLFFwKDEsel90LDUsNSwibmctY29udGFpbmVyIiwxKSksMiZlJiYoRG0oIm51bUFubm90YXRpb25zIixuLm51bUFubm90YXRpb25zKSgiZXhwYW5kZWQiLG4uYW5ub3RhdGlvbnNFeHBhbmRlZCkscmMoMSksRG0oIm5nSWYiLG4uYW5ub3RhdGlvbnNFeHBhbmRlZCkpfSxkaXJlY3RpdmVzOltfX3QsZE0sdl90LHdfdCxnRixkRixiRixUX3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDpjYWxjKDEwMCUgLSAycHgpO3dpZHRoOmNhbGMoMTAwJSAtIDJweCl9LmFubm90YXRpb24tcm93c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4OjEgMTtvdmVyZmxvdy15OmF1dG99J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKElfdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYW5ub3RhdGlvbnNfbGlzdF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbm5vdGF0aW9uc19saXN0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSxudWxsLHthbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxlbWJlZGRpbmdEYXRhOlt7dHlwZTp4eX1dLGFubm90YXRpb25zRXhwYW5kZWQ6W3t0eXBlOnh5fV0sbnVtQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0sYW5ub3RhdGlvblNvcnQ6W3t0eXBlOnh5fV0sYWN0aXZlTWV0cmljczpbe3R5cGU6eHl9XSxudW1BY3RpdmVSdW5zOlt7dHlwZTp4eX1dLHNvcnRlZEFubm90YXRpb25zOlt7dHlwZTp4eX1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOnh5fV0sbWF4Q291bnQ6W3t0eXBlOnh5fV0sb25Sb3dDbGljazpbe3R5cGU6T3l9XX0pO2NsYXNzIEhfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hbm5vdGF0aW9uc0V4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUoRncoeWJ0KSksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoRncoTk4pKS5waXBlKEl0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMuZW1iZWRkaW5nRGF0YSQ9dGhpcy5zdG9yZS5waXBlKEZ3KGxidCkpLHRoaXMubnVtQWN0aXZlUnVucyQ9dGhpcy5hY3RpdmVSdW5zJC5waXBlKEl0KCh0PT50Lmxlbmd0aCkpKSx0aGlzLmFjdGl2ZU1ldHJpY3MkPVd0KFt0aGlzLnN0b3JlLnNlbGVjdChzYnQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoZ2J0KV0pLnBpcGUoSXQoKChbdCxlLG5dKT0+e2xldCBvPVtdO2Zvcihjb25zdCBuIG9mIGUpdFtuXSYmKG89by5jb25jYXQodFtuXS5maWx0ZXIoKHQ9PmV5dCh0KSkpKSk7cmV0dXJuIG89Wy4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKG4pLC4uLm9dKV0sb30pKSksdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkPVd0KFt0aGlzLnN0b3JlLnNlbGVjdChyYnQpLHRoaXMuc3RvcmUuc2VsZWN0KHBidCksdGhpcy5zdG9yZS5zZWxlY3QoTWJ0KV0pLnBpcGUoSXQoKChbdCxlLG5dKT0+R3l0KHQsZSxuKSkpKSx0aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkPVd0KFt0aGlzLnZpc2libGVBbm5vdGF0aW9ucyQsdGhpcy5zdG9yZS5zZWxlY3QoZmJ0KSx0aGlzLnN0b3JlLnNlbGVjdChnYnQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5hY3RpdmVNZXRyaWNzJCx0aGlzLnN0b3JlLnNlbGVjdChtYnQpXSkucGlwZShJdCgoKFt0LGUsbixvLGksYV0pPT4oZnVuY3Rpb24gcih0LGUsbixvLGksYSl7Y29uc3Qgcj17fSxzPW5ldyBTZXQoZSksbD1uZXcgU2V0KGkubWFwKCh0PT5ueXQodCkpKSksYz1uZXcgUmVnRXhwKGEsImkiKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgodD0+e2lmKCFjLnRlc3QodFswXSkpcmV0dXJuO2xldCBlPXRbMV07ZT1lLmZpbHRlcigodD0+cy5oYXModC5ydW4pJiZsLmhhcyh0Lm1ldHJpYykpKSwoZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuIHQuZXZlcnkoKHQ9PntpZih0LmtpbmQ9PT10YnQuT1BFUkFUT1IpcmV0dXJuITA7Y29uc3Qgbz1lW3QubWV0cmljXTtyZXR1cm4gdm9pZCAwPT09b3x8bi5zb21lKChlPT5lLm1ldHJpYz09PW55dCh0Lm1ldHJpYykmJihudWxsPT09ZS5uUE1JVmFsdWU/by5pbmNsdWRlTmFOOmUublBNSVZhbHVlPD1vLm1heCYmZS5uUE1JVmFsdWU+PW8ubWluKSkpfSkpfSkobixvLGUpJiYwIT09ZS5sZW5ndGgmJihyW3RbMF1dPWUpfSkpLHJ9KSh0LG8sZSxuLGksYSkpKSkucGlwZShFZSgpKSx0aGlzLm51bUFubm90YXRpb25zJD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoSXQoKHQ9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aCkpKSx0aGlzLnNvcnRlZEFubm90YXRpb25zJD1XdChbdGhpcy5maWx0ZXJlZEFubm90YXRpb25zJCx0aGlzLnN0b3JlLnBpcGUoRncoaGJ0KSksdGhpcy5lbWJlZGRpbmdEYXRhJF0pLnBpcGUoSXQoKChbdCxlLG5dKT0+KGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IG89T2JqZWN0LmtleXModCksaT1lLm9yZGVyPT09bmJ0LkRJU1NJTUlMQVJ8fGUub3JkZXI9PT1uYnQuU0lNSUxBUjtyZXR1cm4iIj09PWUubWV0cmljfHwodm9pZCAwPT09bnx8dm9pZCAwPT09bi5wb2ludHNbZS5tZXRyaWNdKSYmaT9vOihmdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gdC5zb3J0KG4/KHQsbik9PmVbdF0tZVtuXToodCxuKT0+ZVtuXS1lW3RdKX0pKG8saT8oZnVuY3Rpb24gYSh0LGUsbil7Y29uc3Qgbz17fTtsZXQgaT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5vcmRlcj09PW5idC5TSU1JTEFSJiYoaT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO2Zvcihjb25zdCByIG9mIHQpb1tyXT1yPT09bi5tZXRyaWM/aTp2b2lkIDA9PT1lLnBvaW50c1tyXT9hOmUucG9pbnRzW3JdLnZlY3Rvcj9ReXQoZS5wb2ludHNbbi5tZXRyaWNdLnZlY3RvcixlLnBvaW50c1tyXS52ZWN0b3IsYSk6YTtyZXR1cm4gb30pKG8sbixlKTooZnVuY3Rpb24gcih0LGUsbil7Y29uc3Qgbz1ueXQobi5tZXRyaWMpLGk9e307aWYobi5vcmRlcj09PW5idC5ERVNDRU5ESU5HKWZvcihjb25zdCBuIG9mIHQpaVtuXT1NYXRoLm1heCguLi5lW25dLmZpbHRlcigodD0+dC5tZXRyaWM9PT1vKSkubWFwKCh0PT5udWxsPT09dC5uUE1JVmFsdWU/LTEvMDp0Lm5QTUlWYWx1ZSkpKTtlbHNlIGZvcihjb25zdCBuIG9mIHQpaVtuXT1NYXRoLm1pbiguLi5lW25dLmZpbHRlcigodD0+dC5tZXRyaWM9PT1vKSkubWFwKCh0PT5udWxsPT09dC5uUE1JVmFsdWU/MS8wOnQublBNSVZhbHVlKSkpO3JldHVybiBpfSkobyx0LGUpLGUub3JkZXI9PT1uYnQuQVNDRU5ETkd8fGUub3JkZXI9PT1uYnQuU0lNSUxBUil9KSh0LGUsbikpKSksdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnBpcGUoRncoY2J0KSksdGhpcy5tYXhDb3VudCQ9dGhpcy5maWx0ZXJlZEFubm90YXRpb25zJC5waXBlKEl0KCh0PT57bGV0IGU9MDtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0KS5mb3JFYWNoKCh0PT57dC5mb3JFYWNoKCh0PT57dC5jb3VudFZhbHVlJiYoZT1NYXRoLm1heChlLHQuY291bnRWYWx1ZSkpfSkpfSkpLGV9KSkpfXJvd0NsaWNrZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChSYnQoe2Fubm90YXRpb25zOnR9KSl9fUhfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8SF90KShTbShJdykpfSxIX3QuybVjbXA9dG8oe3R5cGU6SF90LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QiXV0sZGVjbHM6MTAsdmFyczoyNyxjb25zdHM6W1szLCJhbm5vdGF0aW9ucyIsImVtYmVkZGluZ0RhdGEiLCJhbm5vdGF0aW9uc0V4cGFuZGVkIiwibnVtQW5ub3RhdGlvbnMiLCJhY3RpdmVNZXRyaWNzIiwibnVtQWN0aXZlUnVucyIsInNvcnRlZEFubm90YXRpb25zIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsIm1heENvdW50Iiwib25Sb3dDbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiYW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnQiLDApLFZtKCJvblJvd0NsaWNrIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yb3dDbGlja2VkKGUpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFoKDQsImFzeW5jIiksQWgoNSwiYXN5bmMiKSxBaCg2LCJhc3luYyIpLEFoKDcsImFzeW5jIiksQWgoOCwiYXN5bmMiKSxBaCg5LCJhc3luYyIpLEFtKCkpLDImZSYmRG0oImFubm90YXRpb25zIixUaCgxLDksbi5maWx0ZXJlZEFubm90YXRpb25zJCkpKCJlbWJlZGRpbmdEYXRhIixUaCgyLDExLG4uZW1iZWRkaW5nRGF0YSQpKSgiYW5ub3RhdGlvbnNFeHBhbmRlZCIsVGgoMywxMyxuLmFubm90YXRpb25zRXhwYW5kZWQkKSkoIm51bUFubm90YXRpb25zIixUaCg0LDE1LG4ubnVtQW5ub3RhdGlvbnMkKSkoImFjdGl2ZU1ldHJpY3MiLFRoKDUsMTcsbi5hY3RpdmVNZXRyaWNzJCkpKCJudW1BY3RpdmVSdW5zIixUaCg2LDE5LG4ubnVtQWN0aXZlUnVucyQpKSgic29ydGVkQW5ub3RhdGlvbnMiLFRoKDcsMjEsbi5zb3J0ZWRBbm5vdGF0aW9ucyQpKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsVGgoOCwyMyxuLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSkoIm1heENvdW50IixUaCg5LDI1LG4ubWF4Q291bnQkKSl9LGRpcmVjdGl2ZXM6W0lfdF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEhfdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QiLHRlbXBsYXRlOidcbiAgICA8YW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnRcbiAgICAgIFthbm5vdGF0aW9uc109ImZpbHRlcmVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiXG4gICAgICBbZW1iZWRkaW5nRGF0YV09ImVtYmVkZGluZ0RhdGEkIHwgYXN5bmMiXG4gICAgICBbYW5ub3RhdGlvbnNFeHBhbmRlZF09ImFubm90YXRpb25zRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbbnVtQW5ub3RhdGlvbnNdPSJudW1Bbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIFthY3RpdmVNZXRyaWNzXT0iYWN0aXZlTWV0cmljcyQgfCBhc3luYyJcbiAgICAgIFtudW1BY3RpdmVSdW5zXT0ibnVtQWN0aXZlUnVucyQgfCBhc3luYyJcbiAgICAgIFtzb3J0ZWRBbm5vdGF0aW9uc109InNvcnRlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW3NlbGVjdGVkQW5ub3RhdGlvbnNdPSJzZWxlY3RlZEFubm90YXRpb25zJCB8IGFzeW5jIlxuICAgICAgW21heENvdW50XT0ibWF4Q291bnQkIHwgYXN5bmMiXG4gICAgICAob25Sb3dDbGljayk9InJvd0NsaWNrZWQoJGV2ZW50KSJcbiAgICA+PC9hbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NvbnN0IEZfdD1bImNoYXJ0Il07Y2xhc3MgTF90e2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wLHRoaXMuY2hhcnRXaWR0aD0wLHRoaXMuaGVpZ2h0PTMwMCx0aGlzLm1hcmdpbj17dG9wOjIwLHJpZ2h0OjQwLGJvdHRvbToyMCxsZWZ0OjQwfSx0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMuaGVpZ2h0LXRoaXMubWFyZ2luLnRvcC10aGlzLm1hcmdpbi5ib3R0b219b25SZXNpemUodCl7dGhpcy5yZWRyYXcoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz1KNCh0aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudCksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMubWFyZ2luLmxlZnR9LCAke3RoaXMubWFyZ2luLnRvcH0pYCksdGhpcy5jb29yZGluYXRlc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmxhYmVsc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmF4aXNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy54U2NhbGU9VXR0KCkucGFkZGluZyguMSksdGhpcy55U2NhbGU9ZWV0KCkucmFuZ2UoW3RoaXMuY2hhcnRIZWlnaHQsMF0pLHRoaXMueUF4aXM9TjUodGhpcy55U2NhbGUpLHRoaXMucmVkcmF3KCl9bmdPbkNoYW5nZXModCl7dGhpcy5zdmcmJnRoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy51cGRhdGVBeGVzKCksdGhpcy5kcmF3KCl9dXBkYXRlRGltZW5zaW9ucygpe3RoaXMud2lkdGg9dGhpcy5zdmdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGh8fDEwLHRoaXMuY2hhcnRXaWR0aD10aGlzLndpZHRoLXRoaXMubWFyZ2luLmxlZnQtdGhpcy5tYXJnaW4ucmlnaHR9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlUm91bmQoWzAsdGhpcy5jaGFydFdpZHRoXSkuZG9tYWluKHRoaXMuYWN0aXZlTWV0cmljcyksdGhpcy55U2NhbGUuZG9tYWluKFt0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbix0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1heF0pfWRyYXcoKXt0aGlzLmRyYXdBeGVzKCksdGhpcy5kcmF3QXhpc0xhYmVscygpLHRoaXMuZHJhd0Nvb3JkaW5hdGVzKCksdGhpcy5kcmF3TGFiZWxzKCl9ZHJhd0F4ZXMoKXtjb25zdCB0PXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMteSIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTt0LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJheGlzLXkiKS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0KX0sIDApYH0uYmluZCh0aGlzKSkuY2FsbCh0aGlzLnlBeGlzKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3QXhpc0xhYmVscygpe2NvbnN0IHQ9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy1iZy10ZXh0IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImF4aXMtYmctdGV4dCIpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIikuYXR0cigic3Ryb2tlIiwid2hpdGUiKS5tZXJnZSh0KS50ZXh0KCh0PT50KSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodCktNX0sICR7dGhpcy55U2NhbGUodGhpcy5jb29yZGluYXRlRGF0YS5leHRyZW1lcy5taW4pfSkgcm90YXRlKC05MClgfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBlPXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMtdGV4dCIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTtlLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImNsYXNzIiwiYXhpcy10ZXh0IikubWVyZ2UoZSkudGV4dCgodD0+dCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHQpLTV9LCAke3RoaXMueVNjYWxlKHRoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWluKX0pIHJvdGF0ZSgtOTApYH0uYmluZCh0aGlzKSksZS5leGl0KCkucmVtb3ZlKCl9ZHJhd0Nvb3JkaW5hdGVzKCl7Y29uc3QgdD10aGlzLmNvb3JkaW5hdGVzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmQiKS5kYXRhKHRoaXMuY29vcmRpbmF0ZURhdGEuY29vcmRpbmF0ZXMpO3QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImNvb3JkIikuYXR0cigiZmlsbCIsIm5vbmUiKS5tZXJnZSh0KS5hdHRyKCJkIix0aGlzLnBhdGguYmluZCh0aGlzKSkuYXR0cigic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb2xvclNjYWxlKHQucnVuSWQpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBlPXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5oaWRkZW5Db29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7ZS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiaGlkZGVuQ29vcmQiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxMHB4IikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCJyZ2JhKDAsIDAsIDAsIDAuMCkiKS5vbigibW91c2VvdmVyIix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIuYmluZCh0aGlzKSkub24oIm1vdXNlb3V0Iix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU91dC5iaW5kKHRoaXMpKS5tZXJnZShlKS5hdHRyKCJkIix0aGlzLnBhdGguYmluZCh0aGlzKSksZS5leGl0KCkucmVtb3ZlKCl9cGF0aCh0KXtyZXR1cm4gdC52YWx1ZXMuc29ydCgoKHQsZSk9PnRoaXMuYWN0aXZlTWV0cmljcy5pbmRleE9mKHQubWV0cmljKS10aGlzLmFjdGl2ZU1ldHJpY3MuaW5kZXhPZihlLm1ldHJpYykpKSxQb3QoKSh0LnZhbHVlcy5tYXAoZnVuY3Rpb24odCl7bGV0IGU9dGhpcy55U2NhbGUodC5uUE1JVmFsdWUpO3JldHVyblt0aGlzLnhTY2FsZSh0Lm1ldHJpYyksZV19LmJpbmQodGhpcykpKX1oYW5kbGVDb29yZGluYXRlTW91c2VPdmVyKHQsZSl7dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hKGUuYW5ub3RhdGlvbj09PXQuYW5ub3RhdGlvbil9KSkuc3R5bGUoIm9wYWNpdHkiLC4xKSx0aGlzLmNvb3JkaW5hdGVzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmQiKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEoZS5hbm5vdGF0aW9uPT09dC5hbm5vdGF0aW9uKX0pKS5zdHlsZSgib3BhY2l0eSIsLjEpfWhhbmRsZUNvb3JkaW5hdGVNb3VzZU91dCgpe3RoaXMubGFiZWxzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmRpbmF0ZS1sYWJlbCIpLnN0eWxlKCJvcGFjaXR5IiwxKSx0aGlzLmNvb3JkaW5hdGVzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmQiKS5zdHlsZSgib3BhY2l0eSIsMSl9ZHJhd0xhYmVscygpe2NvbnN0IHQ9MzAvdGhpcy54U2NhbGUuc3RlcCgpLGU9dGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcy5sZW5ndGg8MzA/dGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlczpbXSxuPXRoaXMubGFiZWxzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmRpbmF0ZS1sYWJlbCIpLmRhdGEoZSk7bi5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiY29vcmRpbmF0ZS1sYWJlbCIpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5tZXJnZShuKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4gdC5hbm5vdGF0aW9ufSkpLmF0dHIoIngiLHRoaXMueFNjYWxlKHRoaXMuYWN0aXZlTWV0cmljc1swXSkrMzApLmF0dHIoInkiLGZ1bmN0aW9uKGUpe2NvbnN0IG49dGhpcy55U2NhbGUoZS52YWx1ZXNbMF0ublBNSVZhbHVlP2UudmFsdWVzWzBdLm5QTUlWYWx1ZTowKSxvPXRoaXMueVNjYWxlKGUudmFsdWVzWzFdLm5QTUlWYWx1ZT9lLnZhbHVlc1sxXS5uUE1JVmFsdWU6MCk7cmV0dXJuKDEtdCkqbit0Km99LmJpbmQodGhpcykpLG4uZXhpdCgpLnJlbW92ZSgpfX1MX3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fExfdCl9LExfdC7JtWNtcD10byh7dHlwZTpMX3Qsc2VsZWN0b3JzOltbInBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmUWgoRl90LDcsaGcpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4uc3ZnRWxlbWVudD10LmZpcnN0KX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KGUsbil7MSZlJiZWbSgicmVzaXplIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlc2l6ZShlKX0pLCExLG9sKX0saW5wdXRzOnthY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixjb29yZGluYXRlRGF0YToiY29vcmRpbmF0ZURhdGEiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIixjb2xvclNjYWxlOiJjb2xvclNjYWxlIn0sZmVhdHVyZXM6W0JvXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sxLCJwYy1jaGFydCJdLFsiY2hhcnQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKHFpKCksVG0oMCwic3ZnIiwwLDEpKX0sc3R5bGVzOlsiLnBjLWNoYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MzAwcHg7d2lkdGg6MTAwJX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoTF90LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vcGFyYWxsZWxfY29vcmRpbmF0ZXNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vcGFyYWxsZWxfY29vcmRpbmF0ZXNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse2FjdGl2ZU1ldHJpY3M6W3t0eXBlOnh5fV0sY29vcmRpbmF0ZURhdGE6W3t0eXBlOnh5fV0sc2lkZWJhcldpZHRoOlt7dHlwZTp4eX1dLGNvbG9yU2NhbGU6W3t0eXBlOnh5fV0sc3ZnRWxlbWVudDpbe3R5cGU6WmEsYXJnczpbImNoYXJ0Iix7c3RhdGljOiEwLHJlYWQ6aGd9XX1dLG9uUmVzaXplOlt7dHlwZTp3eSxhcmdzOlsid2luZG93OnJlc2l6ZSIsWyIkZXZlbnQiXV19XX0pO2NsYXNzIEJfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoRncoTk4pKS5waXBlKEl0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMuYWN0aXZlTWV0cmljcyQ9V3QodGhpcy5zdG9yZS5zZWxlY3Qoc2J0KSx0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KGdidCkpLnBpcGUoSXQoKChbdCxlLG5dKT0+e2xldCBvPVtdO2Zvcihjb25zdCBuIG9mIGUpdFtuXSYmKG89by5jb25jYXQodFtuXS5maWx0ZXIoKHQ9PmV5dCh0KSkpKSk7cmV0dXJuIG89Wy4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKG4pLC4uLm9dKV0sby5tYXAoKHQ9Pm55dCh0KSkpfSkpKSx0aGlzLmNvb3JkaW5hdGVEYXRhJD1XdChbdGhpcy5zdG9yZS5zZWxlY3QocmJ0KSx0aGlzLnN0b3JlLnNlbGVjdChjYnQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5hY3RpdmVNZXRyaWNzJF0pLnBpcGUoSXQoKChbdCxlLG4sb10pPT4oZnVuY3Rpb24gaSh0LGUsbixvKXtjb25zdCBpPVtdLGE9e21heDotMSxtaW46MX0scj1uZXcgU2V0KG4pLHM9bmV3IFNldChvKTtyZXR1cm4gMD09PXIuc2l6ZXx8MD09PXMuc2l6ZXx8MD09PU9iamVjdC5rZXlzKHQpLmxlbmd0aD97Y29vcmRpbmF0ZXM6W10sZXh0cmVtZXM6e21pbjotMSxtYXg6MX19OihlLmZvckVhY2goKGU9Pntjb25zdCBuPXt9O3RbZV0uZm9yRWFjaCgodD0+e3IuaGFzKHQucnVuKSYmcy5oYXModC5tZXRyaWMpJiYoblt0LnJ1bl0/blt0LnJ1bl0ucHVzaCh0KTpuW3QucnVuXT1bdF0sbnVsbCE9PXQublBNSVZhbHVlPyhhLm1heD1NYXRoLm1heChhLm1heCx0Lm5QTUlWYWx1ZSksYS5taW49TWF0aC5taW4oYS5taW4sdC5uUE1JVmFsdWUpKTooYS5tYXg9TWF0aC5tYXgoYS5tYXgsMCksYS5taW49TWF0aC5taW4oYS5taW4sMCkpKX0pKTtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyhuKSlpLnB1c2goe2Fubm90YXRpb246ZSxydW5JZDp0LHZhbHVlczpuW3RdfSl9KSksYS5tYXg8YS5taW4mJihhLm1heD0xLGEubWluPS0xKSx7Y29vcmRpbmF0ZXM6aSxleHRyZW1lczphfSl9KSh0LGUsbixvKSkpKSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5zZWxlY3QoeGJ0KSx0aGlzLnJ1bkNvbG9yU2NhbGUkPXRoaXMuc3RvcmUuc2VsZWN0KHpOKS5waXBlKEl0KCh0PT5lPT57aWYoIXQuaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKGBbQ29sb3Igc2NhbGVdIHVua25vd24gcnVuSWQ6ICR7ZX0uYCk7cmV0dXJuIHRbZV19KSkpfX1mdW5jdGlvbiBWX3QodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiw5KX1mdW5jdGlvbiBqX3QodCxlKXsxJnQmJlRtKDAsIm1hdC1pY29uIiwxMCl9ZnVuY3Rpb24gVV90KHQsZSl7MSZ0JiZUbSgwLCJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIil9Ql90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxCX3QpKFNtKEl3KSl9LEJfdC7JtWNtcD10byh7dHlwZTpCX3Qsc2VsZWN0b3JzOltbIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsImFjdGl2ZU1ldHJpY3MiLCJjb29yZGluYXRlRGF0YSIsInNpZGViYXJXaWR0aCIsImNvbG9yU2NhbGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFRtKDAsInBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCIsMCksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSksMiZlJiZEbSgiYWN0aXZlTWV0cmljcyIsVGgoMSw0LG4uYWN0aXZlTWV0cmljcyQpKSgiY29vcmRpbmF0ZURhdGEiLFRoKDIsNixuLmNvb3JkaW5hdGVEYXRhJCkpKCJzaWRlYmFyV2lkdGgiLFRoKDMsOCxuLnNpZGViYXJXaWR0aCQpKSgiY29sb3JTY2FsZSIsVGgoNCwxMCxuLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W0xfdF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEJfdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIix0ZW1wbGF0ZTonXG4gICAgPHBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzJCB8IGFzeW5jIlxuICAgICAgW2Nvb3JkaW5hdGVEYXRhXT0iY29vcmRpbmF0ZURhdGEkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhcldpZHRoXT0ic2lkZWJhcldpZHRoJCB8IGFzeW5jIlxuICAgICAgW2NvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlJCB8IGFzeW5jIlxuICAgID48L3BhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIEdfdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnM9bmV3IExoLHRoaXMub25Ub2dnbGVFeHBhbmRlZD1uZXcgTGh9fUdfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R190KX0sR190Lsm1Y21wPXRvKHt0eXBlOkdfdCxzZWxlY3RvcnM6W1sic2VsZWN0ZWQtYW5ub3RhdGlvbnMtY29tcG9uZW50Il1dLGlucHV0czp7cGNFeHBhbmRlZDoicGNFeHBhbmRlZCIsc2VsZWN0ZWRBbm5vdGF0aW9uczoic2VsZWN0ZWRBbm5vdGF0aW9ucyJ9LG91dHB1dHM6e29uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zOiJvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyIsb25Ub2dnbGVFeHBhbmRlZDoib25Ub2dnbGVFeHBhbmRlZCJ9LGRlY2xzOjExLHZhcnM6NCxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdCxlO3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJDbGVhciBBbm5vdGF0aW9uIFNlbGVjdGlvbiIpOiRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgY2xlYXJzIHRoZSBhbm5vdGF0aW9uIHNlbGVjdGlvbi7ikJ8yYjUyMjg5ZjJjNGI3ZjViMTgyZWQyM2M5MTU0NzIyZWNkNDZhMmQ04pCfMjQ5NDY2MDUyMDM0MTMwODgzMDpDbGVhciBBbm5vdGF0aW9uIFNlbGVjdGlvbmAsZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiRXhwYW5kL0hpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMgb3IgaGlkZXMgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfOGY0YWQzMDVjMTllMzY1NWYzMTg5ZTNlMjY0ZTgzZmI3NmY3YmI5NeKQnzU2NzA3OTc3ODQwNzA5NTIwOTU6RXhwYW5kL0hpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgLFtbMSwicGMtY29udGFpbmVyIl0sWzEsInBjLXRvb2xiYXIiXSxbMSwicGMtdGl0bGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsInRpdGxlIiwiRGVzZWxlY3RzIGFsbCBzZWxlY3RlZCBhbm5vdGF0aW9ucy4iLDEsImNsZWFyLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsImNsZWFyXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsMSwiZXhwYW5kLWJ1dHRvbiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwiY2xhc3MiLCJleHBhbmQtbGVzcy1pY29uIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vdEV4cGFuZGVkIiwiIl0sWzQsIm5nSWYiXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwxLCJleHBhbmQtbGVzcy1pY29uIl0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCIsMSwiZXhwYW5kLWljb24iXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihSbSgwLCJkaXYiLDApLFJtKDEsImRpdiIsMSksUm0oMiwiaDMiLDIpLGt1KDMsIlNlbGVjdGVkIEFubm90YXRpb25zIiksQW0oKSxSbSg0LCJidXR0b24iLDMpLFZtKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucy5lbWl0KCl9KSksVG0oNSwibWF0LWljb24iLDQpLEFtKCksUm0oNiwiYnV0dG9uIiw1KSxWbSgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVFeHBhbmRlZC5lbWl0KCl9KSksUXAoNyxWX3QsMSwwLCJtYXQtaWNvbiIsNiksUXAoOCxqX3QsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw3LGliKSxBbSgpLEFtKCksUXAoMTAsVV90LDEsMCwibnBtaS1wYXJhbGxlbC1jb29yZGluYXRlcyIsOCksQW0oKSksMiZlKXtjb25zdCB0PSRwKDkpO3JjKDQpLERtKCJkaXNhYmxlZCIsMD09PW4uc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpLHJjKDMpLERtKCJuZ0lmIixuLnBjRXhwYW5kZWQpKCJuZ0lmRWxzZSIsdCkscmMoMyksRG0oIm5nSWYiLG4ucGNFeHBhbmRlZCl9fSxkaXJlY3RpdmVzOltYSCxEVyxkTSxCX3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5wYy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWJ9LnBjLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH0ucGMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtkaXNwbGF5OmlubGluZTtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoR190LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc2VsZWN0ZWRfYW5ub3RhdGlvbnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vc2VsZWN0ZWRfYW5ub3RhdGlvbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse3BjRXhwYW5kZWQ6W3t0eXBlOnh5fV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6eHl9XSxvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6T3l9XSxvblRvZ2dsZUV4cGFuZGVkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgV190e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnBjRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShGdyhiYnQpKSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGNidCl9Y2xlYXJTZWxlY3RlZEFubm90YXRpb25zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChUYnQoKSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFVidCgpKX19ZnVuY3Rpb24gWV90KHQsZSl7MSZ0JiYoUm0oMCwiZGl2Iiw2KSxSbSgxLCJkaXYiLDcpLFRtKDIsIm5wbWktdmlvbGluLWZpbHRlcnMiLDgpLFJtKDMsImRpdiIsOSksVG0oNCwicnVucy1zZWxlY3RvciIpLEFtKCksQW0oKSxBbSgpKSwyJnQmJmR1KCJ3aWR0aCIsWW0oKS5zaWRlYmFyV2lkdGgsInB4Iil9ZnVuY3Rpb24gcV90KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwxMCksVm0oIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5yZXNpemVHcmFiYmVkLmVtaXQoKX0pKSxBbSgpfX1mdW5jdGlvbiBaX3QodCxlKXsxJnQmJihSbSgwLCJkaXYiLDExKSxUbSgxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDEyKSxUbSgyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksQW0oKSl9ZnVuY3Rpb24gWF90KHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwxMyksa3UoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksQW0oKSl9ZnVuY3Rpb24gS190KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwxNCksUm0oMSwiYnV0dG9uIiwxNSksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksVG0oMiwibWF0LWljb24iLDE2KSxBbSgpLEFtKCl9fVdfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V190KShTbShJdykpfSxXX3QuybVjbXA9dG8oe3R5cGU6V190LHNlbGVjdG9yczpbWyJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInBjRXhwYW5kZWQiLCJzZWxlY3RlZEFubm90YXRpb25zIiwib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLCJvblRvZ2dsZUV4cGFuZGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQiLDApLFZtKCJvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5jbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMoKX0pKSgib25Ub2dnbGVFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi50b2dnbGVFeHBhbmRlZCgpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBbSgpKSwyJmUmJkRtKCJwY0V4cGFuZGVkIixUaCgxLDIsbi5wY0V4cGFuZGVkJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixUaCgyLDQsbi5zZWxlY3RlZEFubm90YXRpb25zJCkpfSxkaXJlY3RpdmVzOltHX3RdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXX3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1zZWxlY3RlZC1hbm5vdGF0aW9ucyIsdGVtcGxhdGU6J1xuICAgIDxzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnRcbiAgICAgIFtwY0V4cGFuZGVkXT0icGNFeHBhbmRlZCQgfCBhc3luYyJcbiAgICAgIFtzZWxlY3RlZEFubm90YXRpb25zXT0ic2VsZWN0ZWRBbm5vdGF0aW9ucyQgfCBhc3luYyJcbiAgICAgIChvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyk9ImNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucygpIlxuICAgICAgKG9uVG9nZ2xlRXhwYW5kZWQpPSJ0b2dnbGVFeHBhbmRlZCgpIlxuICAgID48L3NlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudD5cbiAgJyxjaGFuZ2VEZXRlY3Rpb246em4uT25QdXNofV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO2NsYXNzIEpfdHtjb25zdHJ1Y3Rvcigpe3RoaXMudG9nZ2xlU2lkZWJhckV4cGFuZGVkPW5ldyBMaCx0aGlzLnJlc2l6ZVRyaWdnZXJlZD1uZXcgTGgsdGhpcy5yZXNpemVHcmFiYmVkPW5ldyBMaCx0aGlzLnJlc2l6ZVJlbGVhc2VkPW5ldyBMaH19Sl90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKX3QpfSxKX3QuybVjbXA9dG8oe3R5cGU6Sl90LHNlbGVjdG9yczpbWyJtYWluLWNvbXBvbmVudCJdXSxpbnB1dHM6e3J1bkFjdGl2ZToicnVuQWN0aXZlIixzaWRlYmFyRXhwYW5kZWQ6InNpZGViYXJFeHBhbmRlZCIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCIscmVzaXplVHJpZ2dlcmVkOiJyZXNpemVUcmlnZ2VyZWQiLHJlc2l6ZUdyYWJiZWQ6InJlc2l6ZUdyYWJiZWQiLHJlc2l6ZVJlbGVhc2VkOiJyZXNpemVSZWxlYXNlZCJ9LGRlY2xzOjgsdmFyczo1LGNvbnN0czpmdW5jdGlvbigpe2xldCB0O3JldHVybiB0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgU2lkZWJhciIpOiRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgdG9nZ2xlcyB0aGUgc2lkZWJhci7ikJ9mNjNiNTc5MzJkMTc5Y2NhNjJhYzlmY2FlNjNkZDdmNWU2ZmEzODlm4pCfNDQ4NTAwOTM0NzQ0NDcwNDg3ODpUb2dnbGUgU2lkZWJhcmAsW1sxLCJjb250ZW50IiwzLCJtb3VzZXVwIiwibW91c2Vtb3ZlIl0sWyJjbGFzcyIsInNpZGViYXItY29udGFpbmVyIiwzLCJ3aWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbImNsYXNzIiwiYW5hbHlzaXMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vUnVuIiwiIl0sWyJjbGFzcyIsInNpZGUtdG9nZ2xlIiw0LCJuZ0lmIl0sWzEsInNpZGViYXItY29udGFpbmVyIl0sWzEsInNpZGViYXItY29udGVudHMiXSxbMSwidmlvbGluLWZpbHRlcnMiXSxbMSwicnVuLXNlbGVjdG9yIl0sWzEsImdyYWJiZXIiLDMsIm1vdXNlZG93biJdLFsxLCJhbmFseXNpcy1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtbGlzdCJdLFsxLCJub1J1biJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fcmlnaHRfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFRtKDAsIm5wbWktZGF0YS1zZWxlY3Rpb24iKSxSbSgxLCJkaXYiLDApLFZtKCJtb3VzZXVwIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLnJlc2l6ZVJlbGVhc2VkLmVtaXQoKX0pKSgibW91c2Vtb3ZlIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5yZXNpemVUcmlnZ2VyZWQuZW1pdChlKX0pKSxRcCgyLFlfdCw1LDIsImRpdiIsMSksUXAoMyxxX3QsMSwwLCJkaXYiLDIpLFFwKDQsWl90LDMsMCwiZGl2IiwzKSxRcCg1LFhfdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQsaWIpLEFtKCksUXAoNyxLX3QsMywwLCJkaXYiLDUpKSwyJmUpe2NvbnN0IHQ9JHAoNik7cmMoMiksRG0oIm5nSWYiLG4uc2lkZWJhckV4cGFuZGVkKSxyYygxKSxEbSgibmdJZiIsbi5zaWRlYmFyRXhwYW5kZWQpLHJjKDEpLERtKCJuZ0lmIiwhMD09PW4ucnVuQWN0aXZlKSgibmdJZkVsc2UiLHQpLHJjKDMpLERtKCJuZ0lmIiwhbi5zaWRlYmFyRXhwYW5kZWQpfX0sZGlyZWN0aXZlczpbVXl0LGRNLEp5dCxjMixIX3QsV190LFhILERXXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtmbGV4OjEgMX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0udmlvbGluLWZpbHRlcnNbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDozMHB4O2hlaWdodDozMHB4O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MTBweDtib3R0b206MTBweDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ncmFiYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250ZW50OiIiO2N1cnNvcjpldy1yZXNpemU7aGVpZ2h0OjEwMCU7d2lkdGg6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0uYW5ub3RhdGlvbnMtbGlzdFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTttaW4taGVpZ2h0OjBweDtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoSl90LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im1haW4tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tYWluX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL21haW5fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwse3J1bkFjdGl2ZTpbe3R5cGU6eHl9XSxzaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOnh5fV0sc2lkZWJhcldpZHRoOlt7dHlwZTp4eX1dLHRvZ2dsZVNpZGViYXJFeHBhbmRlZDpbe3R5cGU6T3l9XSxyZXNpemVUcmlnZ2VyZWQ6W3t0eXBlOk95fV0scmVzaXplR3JhYmJlZDpbe3R5cGU6T3l9XSxyZXNpemVSZWxlYXNlZDpbe3R5cGU6T3l9XX0pO2NsYXNzIFFfdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5BY3RpdmUkPXRoaXMuc3RvcmUucGlwZShGdyhOTikpLnBpcGUoSXQoKHQ9PiEhdCYmWy4uLnQudmFsdWVzKCldLmluY2x1ZGVzKCEwKSkpKSx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5waXBlKEZ3KF9idCkpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnBpcGUoRncoeGJ0KSksdGhpcy5yZXNpemluZz0hMX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goV2J0KCkpfW9uUmVzaXplVHJpZ2dlcmVkKHQpe3RoaXMucmVzaXppbmcmJnRoaXMuc3RvcmUuZGlzcGF0Y2goWGJ0KHtzaWRlYmFyV2lkdGg6dC5jbGllbnRYfSkpfW9uUmVzaXplR3JhYmJlZCgpe3RoaXMucmVzaXppbmc9ITB9b25SZXNpemVSZWxlYXNlZCgpe3RoaXMucmVzaXppbmc9ITF9fWZ1bmN0aW9uICRfdCh0LGUpezEmdCYmKFJtKDAsImRpdiIsNiksUm0oMSwiZGl2Iiw3KSxSbSgyLCJkaXYiLDgpLFRtKDMsInJ1bnMtc2VsZWN0b3IiKSxBbSgpLEFtKCksQW0oKSksMiZ0JiZkdSgid2lkdGgiLFltKCkuc2lkZWJhcldpZHRoLCJweCIpfWZ1bmN0aW9uIHRDdCh0LGUpe2lmKDEmdCl7Y29uc3QgdD1IbSgpO1JtKDAsImRpdiIsOSksVm0oIm1vdXNlZG93biIsKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaGkodCksWW0oKS5yZXNpemVHcmFiYmVkLmVtaXQoKX0pKSxBbSgpfX1mdW5jdGlvbiBlQ3QodCxlKXsxJnQmJihSbSgwLCJkaXYiLDEwKSxUbSgxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDExKSxUbSgyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksQW0oKSl9ZnVuY3Rpb24gbkN0KHQsZSl7MSZ0JiYoUm0oMCwiZGl2IiwxMiksa3UoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksQW0oKSl9ZnVuY3Rpb24gb0N0KHQsZSl7aWYoMSZ0KXtjb25zdCB0PUhtKCk7Um0oMCwiZGl2IiwxMyksUm0oMSwiYnV0dG9uIiwxNCksVm0oImNsaWNrIiwoZnVuY3Rpb24gZSgpe3JldHVybiBoaSh0KSxZbSgpLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSksVG0oMiwibWF0LWljb24iLDE1KSxBbSgpLEFtKCl9fVFfdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8UV90KShTbShJdykpfSxRX3QuybVjbXA9dG8oe3R5cGU6UV90LHNlbGVjdG9yczpbWyJucG1pLW1haW4iXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicnVuQWN0aXZlIiwic2lkZWJhckV4cGFuZGVkIiwic2lkZWJhcldpZHRoIiwidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwicmVzaXplVHJpZ2dlcmVkIiwicmVzaXplR3JhYmJlZCIsInJlc2l6ZVJlbGVhc2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihSbSgwLCJtYWluLWNvbXBvbmVudCIsMCksVm0oInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpfSkpKCJyZXNpemVUcmlnZ2VyZWQiLChmdW5jdGlvbiB0KGUpe3JldHVybiBuLm9uUmVzaXplVHJpZ2dlcmVkKGUpfSkpKCJyZXNpemVHcmFiYmVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBuLm9uUmVzaXplR3JhYmJlZCgpfSkpKCJyZXNpemVSZWxlYXNlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZVJlbGVhc2VkKCl9KSksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQW0oKSksMiZlJiZEbSgicnVuQWN0aXZlIixUaCgxLDMsbi5ydW5BY3RpdmUkKSkoInNpZGViYXJFeHBhbmRlZCIsVGgoMiw1LG4uc2lkZWJhckV4cGFuZGVkJCkpKCJzaWRlYmFyV2lkdGgiLFRoKDMsNyxuLnNpZGViYXJXaWR0aCQpKX0sZGlyZWN0aXZlczpbSl90XSxwaXBlczpbd01dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUV90LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWFpbiIsdGVtcGxhdGU6J1xuICAgIDxtYWluLWNvbXBvbmVudFxuICAgICAgW3J1bkFjdGl2ZV09InJ1bkFjdGl2ZSQgfCBhc3luYyJcbiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhcldpZHRoXT0ic2lkZWJhcldpZHRoJCB8IGFzeW5jIlxuICAgICAgKHRvZ2dsZVNpZGViYXJFeHBhbmRlZCk9Im9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCkiXG4gICAgICAocmVzaXplVHJpZ2dlcmVkKT0ib25SZXNpemVUcmlnZ2VyZWQoJGV2ZW50KSJcbiAgICAgIChyZXNpemVHcmFiYmVkKT0ib25SZXNpemVHcmFiYmVkKCkiXG4gICAgICAocmVzaXplUmVsZWFzZWQpPSJvblJlc2l6ZVJlbGVhc2VkKCkiXG4gICAgPjwvbWFpbi1jb21wb25lbnQ+XG4gICcsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSxudWxsKTtjbGFzcyBpQ3R7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgTGgsdGhpcy5yZXNpemVUcmlnZ2VyZWQ9bmV3IExoLHRoaXMucmVzaXplR3JhYmJlZD1uZXcgTGgsdGhpcy5yZXNpemVSZWxlYXNlZD1uZXcgTGh9fWlDdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8aUN0KX0saUN0Lsm1Y21wPXRvKHt0eXBlOmlDdCxzZWxlY3RvcnM6W1siZW1iZWRkaW5ncy1jb21wb25lbnQiXV0saW5wdXRzOntydW5BY3RpdmU6InJ1bkFjdGl2ZSIsc2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLHJlc2l6ZVRyaWdnZXJlZDoicmVzaXplVHJpZ2dlcmVkIixyZXNpemVHcmFiYmVkOiJyZXNpemVHcmFiYmVkIixyZXNpemVSZWxlYXNlZDoicmVzaXplUmVsZWFzZWQifSxkZWNsczo4LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgdDtyZXR1cm4gdD0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIFNpZGViYXIiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgdGhlIHNpZGViYXIu4pCfZjYzYjU3OTMyZDE3OWNjYTYyYWM5ZmNhZTYzZGQ3ZjVlNmZhMzg5ZuKQnzQ0ODUwMDkzNDc0NDQ3MDQ4Nzg6VG9nZ2xlIFNpZGViYXJgLFtbMSwiY29udGVudCIsMywibW91c2V1cCIsIm1vdXNlbW92ZSJdLFsiY2xhc3MiLCJzaWRlYmFyLWNvbnRhaW5lciIsMywid2lkdGgiLDQsIm5nSWYiXSxbImNsYXNzIiwiZ3JhYmJlciIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFuYWx5c2lzLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1J1biIsIiJdLFsiY2xhc3MiLCJzaWRlLXRvZ2dsZSIsNCwibmdJZiJdLFsxLCJzaWRlYmFyLWNvbnRhaW5lciJdLFsxLCJzaWRlYmFyLWNvbnRlbnRzIl0sWzEsInJ1bi1zZWxlY3RvciJdLFsxLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iXSxbMSwiYW5hbHlzaXMtY29udGFpbmVyIl0sWzEsImFubm90YXRpb25zLWxpc3QiXSxbMSwibm9SdW4iXSxbMSwic2lkZS10b2dnbGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMywiY2xpY2siXSxbInN2Z0ljb24iLCJjaGV2cm9uX3JpZ2h0XzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXtpZigxJmUmJihUbSgwLCJucG1pLWRhdGEtc2VsZWN0aW9uIiksUm0oMSwiZGl2IiwwKSxWbSgibW91c2V1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5yZXNpemVSZWxlYXNlZC5lbWl0KCl9KSkoIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIG4ucmVzaXplVHJpZ2dlcmVkLmVtaXQoZSl9KSksUXAoMiwkX3QsNCwyLCJkaXYiLDEpLFFwKDMsdEN0LDEsMCwiZGl2IiwyKSxRcCg0LGVDdCwzLDAsImRpdiIsMyksUXAoNSxuQ3QsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LGliKSxBbSgpLFFwKDcsb0N0LDMsMCwiZGl2Iiw1KSksMiZlKXtjb25zdCB0PSRwKDYpO3JjKDIpLERtKCJuZ0lmIixuLnNpZGViYXJFeHBhbmRlZCkscmMoMSksRG0oIm5nSWYiLG4uc2lkZWJhckV4cGFuZGVkKSxyYygxKSxEbSgibmdJZiIsITA9PT1uLnJ1bkFjdGl2ZSkoIm5nSWZFbHNlIix0KSxyYygzKSxEbSgibmdJZiIsIW4uc2lkZWJhckV4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W1V5dCxkTSxjMixIX3QsV190LFhILERXXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtmbGV4OjEgMX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O2JvdHRvbToxMHB4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmdyYWJiZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRlbnQ6IiI7Y3Vyc29yOmV3LXJlc2l6ZTtoZWlnaHQ6MTAwJTt3aWR0aDozcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5hbm5vdGF0aW9ucy1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MHB4O2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChpQ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoiZW1iZWRkaW5ncy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2VtYmVkZGluZ3NfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZW1iZWRkaW5nc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cnVuQWN0aXZlOlt7dHlwZTp4eX1dLHNpZGViYXJFeHBhbmRlZDpbe3R5cGU6eHl9XSxzaWRlYmFyV2lkdGg6W3t0eXBlOnh5fV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpPeX1dLHJlc2l6ZVRyaWdnZXJlZDpbe3R5cGU6T3l9XSxyZXNpemVHcmFiYmVkOlt7dHlwZTpPeX1dLHJlc2l6ZVJlbGVhc2VkOlt7dHlwZTpPeX1dfSk7Y2xhc3MgYUN0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bkFjdGl2ZSQ9dGhpcy5zdG9yZS5waXBlKEZ3KE5OKSkucGlwZShJdCgodD0+ISF0JiZbLi4udC52YWx1ZXMoKV0uaW5jbHVkZXMoITApKSkpLHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUoRncod2J0KSksdGhpcy5zaWRlYmFyV2lkdGgkPXRoaXMuc3RvcmUucGlwZShGdyhQYnQpKSx0aGlzLnJlc2l6aW5nPSExfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChKYnQoKSl9b25SZXNpemVUcmlnZ2VyZWQodCl7dGhpcy5yZXNpemluZyYmdGhpcy5zdG9yZS5kaXNwYXRjaChLYnQoe3NpZGViYXJXaWR0aDp0LmNsaWVudFh9KSl9b25SZXNpemVHcmFiYmVkKCl7dGhpcy5yZXNpemluZz0hMH1vblJlc2l6ZVJlbGVhc2VkKCl7dGhpcy5yZXNpemluZz0hMX19ZnVuY3Rpb24gckN0KHQsZSl7MSZ0JiZUbSgwLCJucG1pLWluYWN0aXZlLXZpZXciKX1mdW5jdGlvbiBzQ3QodCxlKXsxJnQmJlRtKDAsIm5wbWktbWFpbiIpfWZ1bmN0aW9uIGxDdCh0LGUpezEmdCYmVG0oMCwibnBtaS1lbWJlZGRpbmdzIil9ZnVuY3Rpb24gY0N0KHQsZSl7aWYoMSZ0JiYoUXAoMCxzQ3QsMSwwLCJucG1pLW1haW4iLDMpLFFwKDEsbEN0LDEsMCwibnBtaS1lbWJlZGRpbmdzIiwzKSksMiZ0KXtjb25zdCB0PVltKCk7RG0oIm5nSWYiLHQuYWN0aXZlVmlldz09PXQuVmlld0FjdGl2ZS5ERUZBVUxUKSxyYygxKSxEbSgibmdJZiIsdC5hY3RpdmVWaWV3PT09dC5WaWV3QWN0aXZlLkVNQkVERElOR1MpfX1hQ3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGFDdCkoU20oSXcpKX0sYUN0Lsm1Y21wPXRvKHt0eXBlOmFDdCxzZWxlY3RvcnM6W1sibnBtaS1lbWJlZGRpbmdzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bkFjdGl2ZSIsInNpZGViYXJFeHBhbmRlZCIsInNpZGViYXJXaWR0aCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsInJlc2l6ZVRyaWdnZXJlZCIsInJlc2l6ZUdyYWJiZWQiLCJyZXNpemVSZWxlYXNlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiYoUm0oMCwiZW1iZWRkaW5ncy1jb21wb25lbnQiLDApLFZtKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSgicmVzaXplVHJpZ2dlcmVkIiwoZnVuY3Rpb24gdChlKXtyZXR1cm4gbi5vblJlc2l6ZVRyaWdnZXJlZChlKX0pKSgicmVzaXplR3JhYmJlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gbi5vblJlc2l6ZUdyYWJiZWQoKX0pKSgicmVzaXplUmVsZWFzZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIG4ub25SZXNpemVSZWxlYXNlZCgpfSkpLEFoKDEsImFzeW5jIiksQWgoMiwiYXN5bmMiKSxBaCgzLCJhc3luYyIpLEFtKCkpLDImZSYmRG0oInJ1bkFjdGl2ZSIsVGgoMSwzLG4ucnVuQWN0aXZlJCkpKCJzaWRlYmFyRXhwYW5kZWQiLFRoKDIsNSxuLnNpZGViYXJFeHBhbmRlZCQpKSgic2lkZWJhcldpZHRoIixUaCgzLDcsbi5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W2lDdF0scGlwZXM6W3dNXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGFDdCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJucG1pLWVtYmVkZGluZ3MiLHRlbXBsYXRlOidcbiAgICA8ZW1iZWRkaW5ncy1jb21wb25lbnRcbiAgICAgIFtydW5BY3RpdmVdPSJydW5BY3RpdmUkIHwgYXN5bmMiXG4gICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIlxuICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyJcbiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIlxuICAgICAgKHJlc2l6ZVRyaWdnZXJlZCk9Im9uUmVzaXplVHJpZ2dlcmVkKCRldmVudCkiXG4gICAgICAocmVzaXplR3JhYmJlZCk9Im9uUmVzaXplR3JhYmJlZCgpIlxuICAgICAgKHJlc2l6ZVJlbGVhc2VkKT0ib25SZXNpemVSZWxlYXNlZCgpIlxuICAgID48L2VtYmVkZGluZ3MtY29tcG9uZW50PlxuICAnLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd31dfSksbnVsbCk7Y2xhc3MgZEN0e2NvbnN0cnVjdG9yKCl7dGhpcy5WaWV3QWN0aXZlPWVidH19ZEN0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkQ3QpfSxkQ3QuybVjbXA9dG8oe3R5cGU6ZEN0LHNlbGVjdG9yczpbWyJucG1pLWNvbXBvbmVudCJdXSxpbnB1dHM6e3J1bnM6InJ1bnMiLGFjdGl2ZVZpZXc6ImFjdGl2ZVZpZXcifSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJucG1pLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7aWYoMSZlJiYoUm0oMCwiZGl2IiwwKSxRcCgxLHJDdCwxLDAsIm5wbWktaW5hY3RpdmUtdmlldyIsMSksUXAoMixjQ3QsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLGliKSxBbSgpKSwyJmUpe2NvbnN0IHQ9JHAoMyk7cmMoMSksRG0oIm5nSWYiLDA9PT1uLnJ1bnMuc2l6ZSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W2RNLG9idCxRX3QsYUN0XSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX0ubnBtaS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkQ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL25wbWlfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbnBtaV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6eHl9XSxhY3RpdmVWaWV3Olt7dHlwZTp4eX1dfSk7Y2xhc3MgcEN0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bnMkPXRoaXMuc3RvcmUucGlwZShGdyhOTikpLHRoaXMuYWN0aXZlVmlldyQ9dGhpcy5zdG9yZS5waXBlKEZ3KHZidCkpfW5nT25Jbml0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChrYnQoKSl9fXBDdC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cEN0KShTbShJdykpfSxwQ3QuybVjbXA9dG8oe3R5cGU6cEN0LHNlbGVjdG9yczpbWyJucG1pIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJ1bnMiLCJhY3RpdmVWaWV3Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJucG1pLWNvbXBvbmVudCIsMCksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpKSwyJmUmJkRtKCJydW5zIixUaCgxLDIsbi5ydW5zJCkpKCJhY3RpdmVWaWV3IixUaCgyLDQsbi5hY3RpdmVWaWV3JCkpfSxkaXJlY3RpdmVzOltkQ3RdLHBpcGVzOlt3TV0sZW5jYXBzdWxhdGlvbjoyfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChwQ3QsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoibnBtaSIsdGVtcGxhdGU6J1xuICAgIDxucG1pLWNvbXBvbmVudFxuICAgICAgW3J1bnNdPSJydW5zJCB8IGFzeW5jIlxuICAgICAgW2FjdGl2ZVZpZXddPSJhY3RpdmVWaWV3JCB8IGFzeW5jIlxuICAgID48L25wbWktY29tcG9uZW50PlxuICAnfV19XSwoZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6SXd9XX0pLG51bGwpO3ZhciBtQ3Q9e30sdUN0PXt9LGZDdD17fSxnQ3Q9e30saEN0PVF2JiZRdi5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fTtmdW5jdGlvbiBiQ3QodCxlKXtyZXR1cm4gTWF0aC5mbG9vcihlKCkqdCl9ZnVuY3Rpb24geUN0KHQpe2Zvcih2YXIgZT1bXSxuPTA7bjx0O24rKyllLnB1c2godm9pZCAwKTtyZXR1cm4gZX1mdW5jdGlvbiBfQ3QodCxlKXtyZXR1cm4geUN0KHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKX1mdW5jdGlvbiBDQ3QodCl7cmV0dXJuIF9DdCh0LDApfWZ1bmN0aW9uIE1DdCh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZ0N0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxnQ3QudGF1UmFuZEludD1iQ3QsZ0N0LnRhdVJhbmQ9ZnVuY3Rpb24gdkN0KHQpe3JldHVybiB0KCl9LGdDdC5ub3JtPWZ1bmN0aW9uIHhDdCh0KXt2YXIgZSxuLG89MDt0cnl7Zm9yKHZhciBpPWhDdCh0KSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSlvKz1NYXRoLnBvdyhhLnZhbHVlLDIpfWNhdGNoKHQpe2U9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihuPWkucmV0dXJuKSYmbi5jYWxsKGkpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX1yZXR1cm4gTWF0aC5zcXJ0KG8pfSxnQ3QuZW1wdHk9eUN0LGdDdC5yYW5nZT1mdW5jdGlvbiBPQ3QodCl7cmV0dXJuIHlDdCh0KS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSl9LGdDdC5maWxsZWQ9X0N0LGdDdC56ZXJvcz1DQ3QsZ0N0Lm9uZXM9ZnVuY3Rpb24gUEN0KHQpe3JldHVybiBfQ3QodCwxKX0sZ0N0LmxpbmVhcj1mdW5jdGlvbiB3Q3QodCxlLG4pe3JldHVybiB5Q3QobikubWFwKChmdW5jdGlvbihvLGkpe3JldHVybiB0K2kqKChlLXQpLyhuLTEpKX0pKX0sZ0N0LnN1bT1NQ3QsZ0N0Lm1lYW49ZnVuY3Rpb24ga0N0KHQpe3JldHVybiBNQ3QodCkvdC5sZW5ndGh9LGdDdC5tYXg9ZnVuY3Rpb24gU0N0KHQpe2Zvcih2YXIgZT0wLG49MDtuPHQubGVuZ3RoO24rKyllPXRbbl0+ZT90W25dOmU7cmV0dXJuIGV9LGdDdC5tYXgyZD1mdW5jdGlvbiBEQ3QodCl7Zm9yKHZhciBlPTAsbj0wO248dC5sZW5ndGg7bisrKWZvcih2YXIgbz0wO288dFtuXS5sZW5ndGg7bysrKWU9dFtuXVtvXT5lP3Rbbl1bb106ZTtyZXR1cm4gZX0sZ0N0LnJlamVjdGlvblNhbXBsZT1mdW5jdGlvbiBFQ3QodCxlLG4pe2Zvcih2YXIgbz1DQ3QodCksaT0wO2k8dDtpKyspZm9yKHZhciBhPSEwO2E7KXtmb3IodmFyIHI9YkN0KGUsbikscz0hMSxsPTA7bDxpO2wrKylpZihyPT09b1tsXSl7cz0hMDticmVha31zfHwoYT0hMSksb1tpXT1yfXJldHVybiBvfSxnQ3QucmVzaGFwZTJkPWZ1bmN0aW9uIFJDdCh0LGUsbil7dmFyIG89W10saT0wO2lmKHQubGVuZ3RoIT09ZSpuKXRocm93IG5ldyBFcnJvcigiQXJyYXkgZGltZW5zaW9ucyBtdXN0IG1hdGNoIGlucHV0IGxlbmd0aC4iKTtmb3IodmFyIGE9MDthPGU7YSsrKXtmb3IodmFyIHI9W10scz0wO3M8bjtzKyspci5wdXNoKHRbaV0pLGkrPTE7by5wdXNoKHIpfXJldHVybiBvfTt2YXIgQUN0PVF2JiZRdi5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZkN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVEN0PUFDdChnQ3QpO2Z1bmN0aW9uIE5DdCh0LGUpe3ZhciBuPWZ1bmN0aW9uKG4pe3JldHVybiBUQ3QuZW1wdHkodCkubWFwKChmdW5jdGlvbigpe3JldHVybiBUQ3QuZmlsbGVkKGUsbil9KSl9LG89W107cmV0dXJuIG8ucHVzaChuKC0xKSksby5wdXNoKG4oMS8wKSksby5wdXNoKG4oMCkpLG99ZnVuY3Rpb24gekN0KHQsZSxuLG8saSl7ZT1NYXRoLmZsb29yKGUpO3ZhciBhPXRbMF1bZV07aWYobj49dFsxXVtlXVswXSlyZXR1cm4gMDtmb3IodmFyIHI9MDtyPGEubGVuZ3RoO3IrKylpZihvPT09YVtyXSlyZXR1cm4gMDtyZXR1cm4gSUN0KHQsZSxuLG8saSl9ZnVuY3Rpb24gSUN0KHQsZSxuLG8saSl7dmFyIGE9dFswXVtlXSxyPXRbMV1bZV0scz10WzJdW2VdO2lmKG4+PXJbMF0pcmV0dXJuIDA7clswXT1uLGFbMF09byxzWzBdPWk7Zm9yKHZhciBsPTAsYz0wOzspe3ZhciBkPTIqbCsxLHA9ZCsxLG09dFswXVswXS5sZW5ndGg7aWYoZD49bSlicmVhaztpZihwPj1tKXtpZighKHJbZF0+bikpYnJlYWs7Yz1kfWVsc2UgaWYocltkXT49cltwXSl7aWYoIShuPHJbZF0pKWJyZWFrO2M9ZH1lbHNle2lmKCEobjxyW3BdKSlicmVhaztjPXB9cltsXT1yW2NdLGFbbF09YVtjXSxzW2xdPXNbY10sbD1jfXJldHVybiByW2xdPW4sYVtsXT1vLHNbbF09aSwxfWZ1bmN0aW9uIEhDdCh0LGUsbixvKXtmb3IoOzIqbysxPG47KXt2YXIgaT0yKm8rMSxhPWkrMSxyPW87aWYodFtyXTx0W2ldJiYocj1pKSxhPG4mJnRbcl08dFthXSYmKHI9YSkscj09PW8pYnJlYWs7dmFyIHM9dFtvXTt0W29dPXRbcl0sdFtyXT1zO3ZhciBsPWVbb107ZVtvXT1lW3JdLGVbcl09bCxvPXJ9fWZDdC5tYWtlSGVhcD1OQ3QsZkN0LnJlamVjdGlvblNhbXBsZT1mdW5jdGlvbiBGQ3QodCxlLG4pe2Zvcih2YXIgbz1UQ3QuemVyb3ModCksaT0wO2k8dDtpKyspe2Zvcih2YXIgYT0hMCxyPTA7YTspe3I9VEN0LnRhdVJhbmRJbnQoZSxuKTtmb3IodmFyIHM9ITEsbD0wO2w8aTtsKyspaWYocj09PW9bbF0pe3M9ITA7YnJlYWt9c3x8KGE9ITEpfW9baV09cn1yZXR1cm4gb30sZkN0LmhlYXBQdXNoPXpDdCxmQ3QudW5jaGVja2VkSGVhcFB1c2g9SUN0LGZDdC5idWlsZENhbmRpZGF0ZXM9ZnVuY3Rpb24gTEN0KHQsZSxuLG8saSl7Zm9yKHZhciBhPU5DdChlLG8pLHI9MDtyPGU7cisrKWZvcih2YXIgcz0wO3M8bjtzKyspaWYoISh0WzBdW3JdW3NdPDApKXt2YXIgbD10WzBdW3JdW3NdLGM9dFsyXVtyXVtzXSxkPVRDdC50YXVSYW5kKGkpO3pDdChhLHIsZCxsLGMpLHpDdChhLGwsZCxyLGMpLHRbMl1bcl1bc109MH1yZXR1cm4gYX0sZkN0LmRlaGVhcFNvcnQ9ZnVuY3Rpb24gQkN0KHQpe2Zvcih2YXIgZT10WzBdLG49dFsxXSxvPTA7bzxlLmxlbmd0aDtvKyspZm9yKHZhciBpPWVbb10sYT1uW29dLHI9MDtyPGkubGVuZ3RoLTE7cisrKXt2YXIgcz1pLmxlbmd0aC1yLTEsbD1hLmxlbmd0aC1yLTEsYz1pWzBdO2lbMF09aVtzXSxpW3NdPWM7dmFyIGQ9YVswXTthWzBdPWFbbF0sYVtsXT1kLEhDdChhLGksbCwwKX1yZXR1cm57aW5kaWNlczplLHdlaWdodHM6bn19LGZDdC5zbWFsbGVzdEZsYWdnZWQ9ZnVuY3Rpb24gVkN0KHQsZSl7Zm9yKHZhciBuPXRbMF1bZV0sbz10WzFdW2VdLGk9dFsyXVtlXSxhPTEvMCxyPS0xLHM9MDtzPm4ubGVuZ3RoO3MrKykxPT09aVtzXSYmb1tzXTxhJiYoYT1vW3NdLHI9cyk7cmV0dXJuIHI+PTA/KGlbcl09MCxNYXRoLmZsb29yKG5bcl0pKTotMX07dmFyIGpDdCxVQ3Q9e30sR0N0PVF2JiZRdi5fX3JlYWR8fGZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciBvLGksYT1uLmNhbGwodCkscj1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShvPWEubmV4dCgpKS5kb25lOylyLnB1c2goby52YWx1ZSl9Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKG49YS5yZXR1cm4pJiZuLmNhbGwoYSl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiByfSxXQ3Q9UXYmJlF2Ll9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19LFlDdD1RdiYmUXYuX19pbXBvcnRTdGFyfHxmdW5jdGlvbih0KXtpZih0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGU9e307aWYobnVsbCE9dClmb3IodmFyIG4gaW4gdClPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKTtyZXR1cm4gZS5kZWZhdWx0PXQsZX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFVDdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHFDdD1ZQ3QoZ0N0KSxaQ3Q9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixvKXtpZih0aGlzLmVudHJpZXM9bmV3IE1hcCx0aGlzLm5Sb3dzPTAsdGhpcy5uQ29scz0wLHQubGVuZ3RoIT09ZS5sZW5ndGh8fHQubGVuZ3RoIT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJyb3dzLCBjb2xzIGFuZCB2YWx1ZXMgYXJyYXlzIG11c3QgYWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIik7dGhpcy5uUm93cz1vWzBdLHRoaXMubkNvbHM9b1sxXTtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIGE9dFtpXSxyPWVbaV07dGhpcy5jaGVja0RpbXMoYSxyKTt2YXIgcz10aGlzLm1ha2VLZXkoYSxyKTt0aGlzLmVudHJpZXMuc2V0KHMse3ZhbHVlOm5baV0scm93OmEsY29sOnJ9KX19cmV0dXJuIHQucHJvdG90eXBlLm1ha2VLZXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCsiOiIrZX0sdC5wcm90b3R5cGUuY2hlY2tEaW1zPWZ1bmN0aW9uKHQsZSl7aWYoISh0PHRoaXMublJvd3MmJmU8dGhpcy5uQ29scykpdGhyb3cgbmV3IEVycm9yKCJyb3cgYW5kL29yIGNvbCBzcGVjaWZpZWQgb3V0c2lkZSBvZiBtYXRyaXggZGltZW5zaW9ucyIpfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlLG4pe3RoaXMuY2hlY2tEaW1zKHQsZSk7dmFyIG89dGhpcy5tYWtlS2V5KHQsZSk7dGhpcy5lbnRyaWVzLmhhcyhvKT90aGlzLmVudHJpZXMuZ2V0KG8pLnZhbHVlPW46dGhpcy5lbnRyaWVzLnNldChvLHt2YWx1ZTpuLHJvdzp0LGNvbDplfSl9LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49MCksdGhpcy5jaGVja0RpbXModCxlKTt2YXIgbz10aGlzLm1ha2VLZXkodCxlKTtyZXR1cm4gdGhpcy5lbnRyaWVzLmhhcyhvKT90aGlzLmVudHJpZXMuZ2V0KG8pLnZhbHVlOm59LHQucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIGU9W107cmV0dXJuIHRoaXMuZW50cmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnB1c2godCl9KSksdCYmZS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LnJvdz09PWUucm93P3QuY29sLWUuY29sOnQucm93LWUucm93fSkpLGV9LHQucHJvdG90eXBlLmdldERpbXM9ZnVuY3Rpb24oKXtyZXR1cm5bdGhpcy5uUm93cyx0aGlzLm5Db2xzXX0sdC5wcm90b3R5cGUuZ2V0Um93cz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIEdDdCh0LDIpWzFdLnJvd30pKX0sdC5wcm90b3R5cGUuZ2V0Q29scz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIEdDdCh0LDIpWzFdLmNvbH0pKX0sdC5wcm90b3R5cGUuZ2V0VmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXtyZXR1cm4gR0N0KHQsMilbMV0udmFsdWV9KSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0KGUudmFsdWUsZS5yb3csZS5jb2wpfSkpfSx0LnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24oZSl7dmFyIG49W107dGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe24ucHVzaChlKHQudmFsdWUsdC5yb3csdC5jb2wpKX0pKTt2YXIgbz1bdGhpcy5uUm93cyx0aGlzLm5Db2xzXTtyZXR1cm4gbmV3IHQodGhpcy5nZXRSb3dzKCksdGhpcy5nZXRDb2xzKCksbixvKX0sdC5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1xQ3QuZW1wdHkodGhpcy5uUm93cykubWFwKChmdW5jdGlvbigpe3JldHVybiBxQ3QuemVyb3ModC5uQ29scyl9KSk7cmV0dXJuIHRoaXMuZW50cmllcy5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3Qucm93XVt0LmNvbF09dC52YWx1ZX0pKSxlfSx0fSkoKTtVQ3QuU3BhcnNlTWF0cml4PVpDdCxVQ3QudHJhbnNwb3NlPWZ1bmN0aW9uIFhDdCh0KXt2YXIgZT1bXSxuPVtdLG89W107cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxpLGEpe2UucHVzaChpKSxuLnB1c2goYSksby5wdXNoKHQpfSkpLG5ldyBaQ3QobixlLG8sW3QubkNvbHMsdC5uUm93c10pfSxVQ3QuaWRlbnRpdHk9ZnVuY3Rpb24gS0N0KHQpe2Zvcih2YXIgZT1HQ3QodCwxKVswXSxuPW5ldyBaQ3QoW10sW10sW10sdCksbz0wO288ZTtvKyspbi5zZXQobyxvLDEpO3JldHVybiBufSxVQ3QucGFpcndpc2VNdWx0aXBseT1mdW5jdGlvbiBKQ3QodCxlKXtyZXR1cm4gYU10KHQsZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCplfSkpfSxVQ3QuYWRkPWZ1bmN0aW9uIFFDdCh0LGUpe3JldHVybiBhTXQodCxlLChmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9KSl9LFVDdC5zdWJ0cmFjdD1mdW5jdGlvbiAkQ3QodCxlKXtyZXR1cm4gYU10KHQsZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpfSxVQ3QubWF4aW11bT1mdW5jdGlvbiB0TXQodCxlKXtyZXR1cm4gYU10KHQsZSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD5lP3Q6ZX0pKX0sVUN0Lm11bHRpcGx5U2NhbGFyPWZ1bmN0aW9uIGVNdCh0LGUpe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQqZX0pKX0sVUN0LmVsaW1pbmF0ZVplcm9zPWZ1bmN0aW9uIG5NdCh0KXtmb3IodmFyIGU9bmV3IFNldCxuPXQuZ2V0VmFsdWVzKCksbz10LmdldFJvd3MoKSxpPXQuZ2V0Q29scygpLGE9MDthPG4ubGVuZ3RoO2ErKykwPT09blthXSYmZS5hZGQoYSk7dmFyIHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4hZS5oYXMobil9LHM9bi5maWx0ZXIociksbD1vLmZpbHRlcihyKSxjPWkuZmlsdGVyKHIpO3JldHVybiBuZXcgWkN0KGwsYyxzLHQuZ2V0RGltcygpKX0sVUN0Lm5vcm1hbGl6ZT1mdW5jdGlvbiBvTXQodCxlKXt2YXIgbixvO3ZvaWQgMD09PWUmJihlPSJsMiIpO3ZhciBpPWlNdFtlXSxhPW5ldyBNYXA7dC5mb3JFYWNoKChmdW5jdGlvbih0LGUsbil7dmFyIG89YS5nZXQoZSl8fFtdO28ucHVzaChuKSxhLnNldChlLG8pfSkpO3ZhciByPW5ldyBaQ3QoW10sW10sW10sdC5nZXREaW1zKCkpLHM9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPWEuZ2V0KGUpLnNvcnQoKSxvPW4ubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gdC5nZXQoZSxuKX0pKSxzPWkobyksbD0wO2w8cy5sZW5ndGg7bCsrKXIuc2V0KGUsbltsXSxzW2xdKX07dHJ5e2Zvcih2YXIgbD1XQ3QoYS5rZXlzKCkpLGM9bC5uZXh0KCk7IWMuZG9uZTtjPWwubmV4dCgpKXMoYy52YWx1ZSl9Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7YyYmIWMuZG9uZSYmKG89bC5yZXR1cm4pJiZvLmNhbGwobCl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiByfTt2YXIgaU10PSgoakN0PXt9KS5tYXg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPS0xLzAsbj0wO248dC5sZW5ndGg7bisrKWU9dFtuXT5lP3Rbbl06ZTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L2V9KSl9LGpDdC5sMT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZSs9dFtuXTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L2V9KSl9LGpDdC5sMj1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZSs9TWF0aC5wb3codFtuXSwyKTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwyKS9lKX0pKX0sakN0KTtmdW5jdGlvbiBhTXQodCxlLG4pe2Zvcih2YXIgbz1uZXcgU2V0LGk9W10sYT1bXSxyPVtdLHM9ZnVuY3Rpb24obyxzKXtpLnB1c2gobyksYS5wdXNoKHMpO3ZhciBsPW4odC5nZXQobyxzKSxlLmdldChvLHMpKTtyLnB1c2gobCl9LGw9dC5nZXRWYWx1ZXMoKSxjPXQuZ2V0Um93cygpLGQ9dC5nZXRDb2xzKCkscD0wO3A8bC5sZW5ndGg7cCsrKW8uYWRkKChnPWNbcF0pKyI6IisoaD1kW3BdKSkscyhnLGgpO3ZhciBtPWUuZ2V0VmFsdWVzKCksdT1lLmdldFJvd3MoKSxmPWUuZ2V0Q29scygpO2ZvcihwPTA7cDxtLmxlbmd0aDtwKyspe3ZhciBnLGg7by5oYXMoKGc9dVtwXSkrIjoiKyhoPWZbcF0pKXx8cyhnLGgpfXJldHVybiBuZXcgWkN0KGksYSxyLFt0Lm5Sb3dzLHQubkNvbHNdKX1VQ3QuZ2V0Q1NSPWZ1bmN0aW9uIHJNdCh0KXt2YXIgZT1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsbixvKXtlLnB1c2goe3ZhbHVlOnQscm93Om4sY29sOm99KX0pKSxlLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucm93PT09ZS5yb3c/dC5jb2wtZS5jb2w6dC5yb3ctZS5yb3d9KSk7Zm9yKHZhciBuPVtdLG89W10saT1bXSxhPS0xLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIHM9ZVtyXSxsPXMucm93LGM9cy5jb2wsZD1zLnZhbHVlO2whPT1hJiYoYT1sLGkucHVzaChyKSksbi5wdXNoKGMpLG8ucHVzaChkKX1yZXR1cm57aW5kaWNlczpuLHZhbHVlczpvLGluZHB0cjppfX07dmFyIHNNdD17fSxsTXQ9e30sY010PVF2JiZRdi5fX3JlYWR8fGZ1bmN0aW9uKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciBvLGksYT1uLmNhbGwodCkscj1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShvPWEubmV4dCgpKS5kb25lOylyLnB1c2goby52YWx1ZSl9Y2F0Y2godCl7aT17ZXJyb3I6dH19ZmluYWxseXt0cnl7byYmIW8uZG9uZSYmKG49YS5yZXR1cm4pJiZuLmNhbGwoYSl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiByfSxkTXQ9UXYmJlF2Ll9fc3ByZWFkfHxmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0PXQuY29uY2F0KGNNdChhcmd1bWVudHNbZV0pKTtyZXR1cm4gdH0scE10PVF2JiZRdi5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLG49MDtyZXR1cm4gZT9lLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmbj49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbbisrXSxkb25lOiF0fX19fSxtTXQ9UXYmJlF2Ll9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShsTXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1TXQsZk10PW1NdChnQ3QpO2Z1bmN0aW9uIGdNdCh0LGUsbixvLGkpe2lmKHZvaWQgMD09PW4mJihuPTMwKSxlLmxlbmd0aD5uKXt2YXIgYT0oZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBvPXRbMF0ubGVuZ3RoLGk9Zk10LnRhdVJhbmRJbnQoZS5sZW5ndGgsbiksYT1mTXQudGF1UmFuZEludChlLmxlbmd0aCxuKSxyPWVbaV0scz1lW2E9KGErPWk9PT1hPzE6MCklZS5sZW5ndGhdLGw9MCxjPWZNdC56ZXJvcyhvKSxkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXT10W3JdW2RdLXRbc11bZF0sbC09Y1tkXSoodFtyXVtkXSt0W3NdW2RdKS8yO3ZhciBwPTAsbT0wLHU9Zk10Lnplcm9zKGUubGVuZ3RoKTtmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtmb3IodmFyIGY9bCxnPTA7ZzxvO2crKylmKz1jW2ddKnRbZVtkXV1bZ107MD09PWY/KHVbZF09Zk10LnRhdVJhbmRJbnQoMixuKSwwPT09dVtkXT9wKz0xOm0rPTEpOmY+MD8odVtkXT0wLHArPTEpOih1W2RdPTEsbSs9MSl9dmFyIGg9Zk10Lnplcm9zKHApLGI9Zk10Lnplcm9zKG0pO2ZvcihwPTAsbT0wLGQ9MDtkPHUubGVuZ3RoO2QrKykwPT09dVtkXT8oaFtwXT1lW2RdLHArPTEpOihiW21dPWVbZF0sbSs9MSk7cmV0dXJue2luZGljZXNMZWZ0OmgsaW5kaWNlc1JpZ2h0OmIsaHlwZXJwbGFuZTpjLG9mZnNldDpsfX0pKHQsZSxpKSxzPWEuaW5kaWNlc1JpZ2h0LGw9YS5oeXBlcnBsYW5lLGM9YS5vZmZzZXQ7cmV0dXJue2xlZnRDaGlsZDpnTXQodCxhLmluZGljZXNMZWZ0LG4sbysxLGkpLHJpZ2h0Q2hpbGQ6Z010KHQscyxuLG8rMSxpKSxpc0xlYWY6ITEsaHlwZXJwbGFuZTpsLG9mZnNldDpjfX1yZXR1cm57aW5kaWNlczplLGlzTGVhZjohMH19ZnVuY3Rpb24gaE10KHQsZSxuLG8saSxhLHIpe3ZhciBzO2lmKHQuaXNMZWFmKXJldHVybiBvW2FdWzBdPS1yLChzPWlbcl0pLnNwbGljZS5hcHBseShzLGRNdChbMCx0LmluZGljZXMubGVuZ3RoXSx0LmluZGljZXMpKSx7bm9kZU51bTphLGxlYWZOdW06cis9MX07ZVthXT10Lmh5cGVycGxhbmUsblthXT10Lm9mZnNldCxvW2FdWzBdPWErMTt2YXIgbD1hLGM9aE10KHQubGVmdENoaWxkLGUsbixvLGksYSsxLHIpO3JldHVybiByPWMubGVhZk51bSxvW2xdWzFdPShhPWMubm9kZU51bSkrMSx7bm9kZU51bTooYz1oTXQodC5yaWdodENoaWxkLGUsbixvLGksYSsxLHIpKS5ub2RlTnVtLGxlYWZOdW06Yy5sZWFmTnVtfX1mdW5jdGlvbiBiTXQodCl7cmV0dXJuIHQuaXNMZWFmPzE6MStiTXQodC5sZWZ0Q2hpbGQpK2JNdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIHlNdCh0KXtyZXR1cm4gdC5pc0xlYWY/MTp5TXQodC5sZWZ0Q2hpbGQpK3lNdCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIF9NdCh0LGUsbixvKXtmb3IodmFyIGk9ZSxhPTA7YTxuLmxlbmd0aDthKyspaSs9dFthXSpuW2FdO3JldHVybiAwPT09aT9mTXQudGF1UmFuZEludCgyLG8pOmk+MD8wOjF9bE10LkZsYXRUcmVlPXVNdD1mdW5jdGlvbiB1TXQodCxlLG4sbyl7dGhpcy5oeXBlcnBsYW5lcz10LHRoaXMub2Zmc2V0cz1lLHRoaXMuY2hpbGRyZW49bix0aGlzLmluZGljZXM9b30sbE10Lm1ha2VGb3Jlc3Q9ZnVuY3Rpb24gQ010KHQsZSxuLG8pe3ZhciBpPU1hdGgubWF4KDEwLGUpO3JldHVybiBmTXQucmFuZ2UobikubWFwKChmdW5jdGlvbihlLG4pe3JldHVybihmdW5jdGlvbiBhKHQsZSxuLG8pe3JldHVybiB2b2lkIDA9PT1lJiYoZT0zMCksZ010KHQsZk10LnJhbmdlKHQubGVuZ3RoKSxlLG4sbyl9KSh0LGksbixvKX0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybihmdW5jdGlvbiBlKHQsbil7dmFyIG89Yk10KHQpLGk9eU10KHQpLGE9Zk10LnJhbmdlKG8pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gZk10Lnplcm9zKHQuaHlwZXJwbGFuZT90Lmh5cGVycGxhbmUubGVuZ3RoOjApfSkpLHI9Zk10Lnplcm9zKG8pLHM9Zk10LnJhbmdlKG8pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm5bLTEsLTFdfSkpLGw9Zk10LnJhbmdlKGkpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gZk10LnJhbmdlKG4pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4tMX0pKX0pKTtyZXR1cm4gaE10KHQsYSxyLHMsbCwwLDApLG5ldyB1TXQoYSxyLHMsbCl9KSh0LGkpfSkpfSxsTXQubWFrZUxlYWZBcnJheT1mdW5jdGlvbiBNTXQodCl7dmFyIGUsbjtpZih0Lmxlbmd0aD4wKXt2YXIgbz1bXTt0cnl7Zm9yKHZhciBpPXBNdCh0KSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSlvLnB1c2guYXBwbHkobyxkTXQoYS52YWx1ZS5pbmRpY2VzKSl9Y2F0Y2godCl7ZT17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihlKXRocm93IGUuZXJyb3J9fXJldHVybiBvfXJldHVybltbLTFdXX0sbE10LnNlYXJjaEZsYXRUcmVlPWZ1bmN0aW9uIHZNdCh0LGUsbil7Zm9yKHZhciBvPTA7ZS5jaGlsZHJlbltvXVswXT4wOylvPTA9PT1fTXQoZS5oeXBlcnBsYW5lc1tvXSxlLm9mZnNldHNbb10sdCxuKT9lLmNoaWxkcmVuW29dWzBdOmUuY2hpbGRyZW5bb11bMV07cmV0dXJuIGUuaW5kaWNlc1stMSplLmNoaWxkcmVuW29dWzBdXX07dmFyIHhNdD1RdiYmUXYuX192YWx1ZXN8fGZ1bmN0aW9uKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX0sT010PVF2JiZRdi5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgZT17fTtpZihudWxsIT10KWZvcih2YXIgbiBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pO3JldHVybiBlLmRlZmF1bHQ9dCxlfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoc010LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUE10PU9NdChmQ3QpLHdNdD1PTXQoVUN0KSxrTXQ9T010KGxNdCksU010PU9NdChnQ3QpO3NNdC5tYWtlTk5EZXNjZW50PWZ1bmN0aW9uIERNdCh0LGUpe3JldHVybiBmdW5jdGlvbiBuKG8saSxhLHIscyxsLGMsZCl7dm9pZCAwPT09ciYmKHI9MTApLHZvaWQgMD09PXMmJihzPTUwKSx2b2lkIDA9PT1sJiYobD0uMDAxKSx2b2lkIDA9PT1jJiYoYz0uNSksdm9pZCAwPT09ZCYmKGQ9ITApO2Zvcih2YXIgcD1vLmxlbmd0aCxtPVBNdC5tYWtlSGVhcChvLmxlbmd0aCxhKSx1PTA7dTxvLmxlbmd0aDt1KyspZm9yKHZhciBmPVBNdC5yZWplY3Rpb25TYW1wbGUoYSxvLmxlbmd0aCxlKSxnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPXQob1t1XSxvW2ZbZ11dKTtQTXQuaGVhcFB1c2gobSx1LGgsZltnXSwxKSxQTXQuaGVhcFB1c2gobSxmW2ddLGgsdSwxKX1pZihkKWZvcih2YXIgYj0wO2I8aS5sZW5ndGg7YisrKWZvcih1PTA7dTxpW2JdLmxlbmd0aCYmIShpW2JdW3VdPDApO3UrKylmb3IoZz11KzE7ZzxpW2JdLmxlbmd0aCYmIShpW2JdW2ddPDApO2crKyloPXQob1tpW2JdW3VdXSxvW2lbYl1bZ11dKSxQTXQuaGVhcFB1c2gobSxpW2JdW3VdLGgsaVtiXVtnXSwxKSxQTXQuaGVhcFB1c2gobSxpW2JdW2ddLGgsaVtiXVt1XSwxKTtmb3IoYj0wO2I8cjtiKyspe3ZhciB5PVBNdC5idWlsZENhbmRpZGF0ZXMobSxwLGEscyxlKSxfPTA7Zm9yKHU9MDt1PHA7dSsrKWZvcihnPTA7ZzxzO2crKyl7dmFyIEM9TWF0aC5mbG9vcih5WzBdW3VdW2ddKTtpZighKEM8MHx8U010LnRhdVJhbmQoZSk8YykpZm9yKHZhciBNPTA7TTxzO00rKyl7dmFyIHY9TWF0aC5mbG9vcih5WzBdW3VdW01dKTt2PDB8fCF5WzJdW3VdW2ddJiYheVsyXVt1XVtNXXx8KGg9dChvW0NdLG9bdl0pLF8rPVBNdC5oZWFwUHVzaChtLEMsaCx2LDEpLF8rPVBNdC5oZWFwUHVzaChtLHYsaCxDLDEpKX19aWYoXzw9bCphKm8ubGVuZ3RoKWJyZWFrfXJldHVybiBQTXQuZGVoZWFwU29ydChtKX19LHNNdC5tYWtlSW5pdGlhbGl6YXRpb25zPWZ1bmN0aW9uIEVNdCh0KXtyZXR1cm57aW5pdEZyb21SYW5kb206ZnVuY3Rpb24gZShuLG8saSxhLHIpe2Zvcih2YXIgcz0wO3M8aS5sZW5ndGg7cysrKWZvcih2YXIgbD1TTXQucmVqZWN0aW9uU2FtcGxlKG4sby5sZW5ndGgsciksYz0wO2M8bC5sZW5ndGg7YysrKWlmKCEobFtjXTwwKSl7dmFyIGQ9dChvW2xbY11dLGlbc10pO1BNdC5oZWFwUHVzaChhLHMsZCxsW2NdLDEpfX0saW5pdEZyb21UcmVlOmZ1bmN0aW9uIG4oZSxvLGksYSxyKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylmb3IodmFyIGw9a010LnNlYXJjaEZsYXRUcmVlKGlbc10sZSxyKSxjPTA7YzxsLmxlbmd0aDtjKyspe2lmKGxbY108MClyZXR1cm47dmFyIGQ9dChvW2xbY11dLGlbc10pO1BNdC5oZWFwUHVzaChhLHMsZCxsW2NdLDEpfX19fSxzTXQubWFrZUluaXRpYWxpemVkTk5TZWFyY2g9ZnVuY3Rpb24gUk10KHQpe3JldHVybiBmdW5jdGlvbiBlKG4sbyxpLGEpe2Zvcih2YXIgcixzLGw9d010LmdldENTUihvKSxjPWwuaW5kaWNlcyxkPWwuaW5kcHRyLHA9MDtwPGEubGVuZ3RoO3ArKylmb3IodmFyIG09bmV3IFNldChpWzBdW3BdKTs7KXt2YXIgdT1QTXQuc21hbGxlc3RGbGFnZ2VkKGkscCk7aWYoLTE9PT11KWJyZWFrO3ZhciBmPWMuc2xpY2UoZFt1XSxkW3UrMV0pO3RyeXtmb3IodmFyIGc9eE10KGYpLGg9Zy5uZXh0KCk7IWguZG9uZTtoPWcubmV4dCgpKXt2YXIgYj1oLnZhbHVlO2lmKGIhPT11JiYtMSE9PWImJiFtLmhhcyhiKSl7dmFyIHk9dChuW2JdLGFbcF0pO1BNdC51bmNoZWNrZWRIZWFwUHVzaChpLHAseSxiLDEpLG0uYWRkKGIpfX19Y2F0Y2godCl7cj17ZXJyb3I6dH19ZmluYWxseXt0cnl7aCYmIWguZG9uZSYmKHM9Zy5yZXR1cm4pJiZzLmNhbGwoZyl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fX1yZXR1cm4gaX19LHNNdC5pbml0aWFsaXplU2VhcmNoPWZ1bmN0aW9uIEFNdCh0LGUsbixvLGksYSxyKXt2YXIgcyxsLGM9UE10Lm1ha2VIZWFwKG4ubGVuZ3RoLG8pO2lmKGkobyxlLG4sYyxyKSx0KXRyeXtmb3IodmFyIGQ9eE10KHQpLHA9ZC5uZXh0KCk7IXAuZG9uZTtwPWQubmV4dCgpKWEocC52YWx1ZSxlLG4sYyxyKX1jYXRjaCh0KXtzPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtwJiYhcC5kb25lJiYobD1kLnJldHVybikmJmwuY2FsbChkKX1maW5hbGx5e2lmKHMpdGhyb3cgcy5lcnJvcn19cmV0dXJuIGN9O2NvbnN0IFRNdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIE5NdCh0KXtyZXR1cm4gVE10LmNhbGwodCkuZW5kc1dpdGgoIkFycmF5XSIpfWZ1bmN0aW9uIHpNdCh0LGUsbil7bGV0IG89MDtjb25zdCBpPW4oZSk7Zm9yKGxldCBlPTA7ZTx0LngubGVuZ3RoO2UrKylvKz1NYXRoLmFicyh0LnlbZV0taSh0LnhbZV0pKTtyZXR1cm4gb31jb25zdCBJTXQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBITXQodCl7cmV0dXJuIElNdC5jYWxsKHQpLmVuZHNXaXRoKCJBcnJheV0iKX1mdW5jdGlvbiBGTXQodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFITXQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBuPWUuZnJvbUluZGV4LG89dm9pZCAwPT09bj8wOm4saT1lLnRvSW5kZXgsYT12b2lkIDA9PT1pP3QubGVuZ3RoOmk7aWYobzwwfHxvPj10Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKGE8PW98fGE+dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIHI9dFtvXSxzPW8rMTtzPGE7cysrKXRbc10+ciYmKHI9dFtzXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gTE10KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighSE10KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTt2YXIgbj1lLmZyb21JbmRleCxvPXZvaWQgMD09PW4/MDpuLGk9ZS50b0luZGV4LGE9dm9pZCAwPT09aT90Lmxlbmd0aDppO2lmKG88MHx8bz49dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBFcnJvcigiZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgiKTtpZihhPD1vfHxhPnQubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRXJyb3IoInRvSW5kZXggbXVzdCBiZSBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBmcm9tSW5kZXggYW5kIGF0IG1vc3QgZXF1YWwgdG8gbGVuZ3RoIik7Zm9yKHZhciByPXRbb10scz1vKzE7czxhO3MrKyl0W3NdPHImJihyPXRbc10pO3JldHVybiByfWZ1bmN0aW9uIEJNdCh0KXt2YXIgZSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZighSE10KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3QgYmUgYW4gYXJyYXkiKTtpZigwPT09dC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBub3QgYmUgZW1wdHkiKTtpZih2b2lkIDAhPT1uLm91dHB1dCl7aWYoIUhNdChuLm91dHB1dCkpdGhyb3cgbmV3IFR5cGVFcnJvcigib3V0cHV0IG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IGlmIHNwZWNpZmllZCIpO2U9bi5vdXRwdXR9ZWxzZSBlPW5ldyBBcnJheSh0Lmxlbmd0aCk7dmFyIG89TE10KHQpLGk9Rk10KHQpO2lmKG89PT1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW5pbXVtIGFuZCBtYXhpbXVtIGlucHV0IHZhbHVlcyBhcmUgZXF1YWwuIENhbm5vdCByZXNjYWxlIGEgY29uc3RhbnQgYXJyYXkiKTt2YXIgYT1uLm1pbixyPXZvaWQgMD09PWE/bi5hdXRvTWluTWF4P286MDphLHM9bi5tYXgsbD12b2lkIDA9PT1zP24uYXV0b01pbk1heD9pOjE6cztpZihyPj1sKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gb3B0aW9uIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCBvcHRpb24iKTtmb3IodmFyIGM9KGwtcikvKGktbyksZD0wO2Q8dC5sZW5ndGg7ZCsrKWVbZF09KHRbZF0tbykqYytyO3JldHVybiBlfWNvbnN0IFZNdD0iICIucmVwZWF0KDIpLGpNdD0iICIucmVwZWF0KDQpO2Z1bmN0aW9uIFVNdCh0LGU9e30pe2NvbnN0e21heFJvd3M6bj0xNSxtYXhDb2x1bW5zOm89MTAsbWF4TnVtU2l6ZTppPTh9PWU7cmV0dXJuYCR7dC5jb25zdHJ1Y3Rvci5uYW1lfSB7XG4ke1ZNdH1bXG4ke2pNdH0keyhmdW5jdGlvbiBhKHQsZSxuLG8pe2NvbnN0e3Jvd3M6aSxjb2x1bW5zOmF9PXQscj1NYXRoLm1pbihpLGUpLHM9TWF0aC5taW4oYSxuKSxsPVtdO2ZvcihsZXQgZT0wO2U8cjtlKyspe2xldCBuPVtdO2ZvcihsZXQgaT0wO2k8cztpKyspbi5wdXNoKEdNdCh0LmdldChlLGkpLG8pKTtsLnB1c2goYCR7bi5qb2luKCIgIil9YCl9cmV0dXJuIHMhPT1hJiYobFtsLmxlbmd0aC0xXSs9YCAuLi4gJHthLW59IG1vcmUgY29sdW1uc2ApLHIhPT1pJiZsLnB1c2goYC4uLiAke2ktZX0gbW9yZSByb3dzYCksbC5qb2luKGBcbiR7ak10fWApfSkodCxuLG8saSl9XG4ke1ZNdH1dXG4ke1ZNdH1yb3dzOiAke3Qucm93c31cbiR7Vk10fWNvbHVtbnM6ICR7dC5jb2x1bW5zfVxufWB9ZnVuY3Rpb24gR010KHQsZSl7Y29uc3Qgbj1TdHJpbmcodCk7aWYobi5sZW5ndGg8PWUpcmV0dXJuIG4ucGFkRW5kKGUsIiAiKTtjb25zdCBvPXQudG9QcmVjaXNpb24oZS0yKTtpZihvLmxlbmd0aDw9ZSlyZXR1cm4gbztjb25zdCBpPXQudG9FeHBvbmVudGlhbChlLTIpLGE9aS5pbmRleE9mKCJlIikscj1pLnNsaWNlKGEpO3JldHVybiBpLnNsaWNlKDAsZS1yLmxlbmd0aCkrcn1mdW5jdGlvbiBXTXQodCxlLG4pe2lmKGU8MHx8ZT4obj90LnJvd3M6dC5yb3dzLTEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJSb3cgaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gWU10KHQsZSxuKXtpZihlPDB8fGU+KG4/dC5jb2x1bW5zOnQuY29sdW1ucy0xKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHFNdCh0LGUpe2lmKGUudG8xREFycmF5JiYoZT1lLnRvMURBcnJheSgpKSxlLmxlbmd0aCE9PXQuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMiKTtyZXR1cm4gZX1mdW5jdGlvbiBaTXQodCxlKXtpZihlLnRvMURBcnJheSYmKGU9ZS50bzFEQXJyYXkoKSksZS5sZW5ndGghPT10LnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiByb3dzIik7cmV0dXJuIGV9ZnVuY3Rpb24gWE10KHQsZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoInVuZXhwZWN0ZWQgdHlwZSBmb3Igcm93IGluZGljZXMiKTtpZihlLnNvbWUoKGU9PmU8MHx8ZT49dC5yb3dzKSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKXx8KGU9QXJyYXkuZnJvbShlKSksZX1mdW5jdGlvbiBLTXQodCxlKXtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciBjb2x1bW4gaW5kaWNlcyIpO2lmKGUuc29tZSgoZT0+ZTwwfHxlPj10LmNvbHVtbnMpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiY29sdW1uIGluZGljZXMgYXJlIG91dCBvZiByYW5nZSIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpfHwoZT1BcnJheS5mcm9tKGUpKSxlfWZ1bmN0aW9uIEpNdCh0LGUsbixvLGkpe2lmKDUhPT1hcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJleHBlY3RlZCA0IGFyZ3VtZW50cyIpO2lmKCRNdCgic3RhcnRSb3ciLGUpLCRNdCgiZW5kUm93IixuKSwkTXQoInN0YXJ0Q29sdW1uIixvKSwkTXQoImVuZENvbHVtbiIsaSksZT5ufHxvPml8fGU8MHx8ZT49dC5yb3dzfHxuPDB8fG4+PXQucm93c3x8bzwwfHxvPj10LmNvbHVtbnN8fGk8MHx8aT49dC5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJTdWJtYXRyaXggaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUU10KHQsZT0wKXtsZXQgbj1bXTtmb3IobGV0IG89MDtvPHQ7bysrKW4ucHVzaChlKTtyZXR1cm4gbn1mdW5jdGlvbiAkTXQodCxlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHt0fSBtdXN0IGJlIGEgbnVtYmVyYCl9ZnVuY3Rpb24gdHZ0KHQpe2lmKHQuaXNFbXB0eSgpKXRocm93IG5ldyBFcnJvcigiRW1wdHkgbWF0cml4IGhhcyBubyBlbGVtZW50cyB0byBpbmRleCIpfWNsYXNzIGV2dHtzdGF0aWMgZnJvbTFEQXJyYXkodCxlLG4pe2lmKHQqZSE9PW4ubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJkYXRhIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBkaW1lbnNpb25zIik7bGV0IG89bmV3IGl2dCh0LGUpO2ZvcihsZXQgaT0wO2k8dDtpKyspZm9yKGxldCB0PTA7dDxlO3QrKylvLnNldChpLHQsbltpKmUrdF0pO3JldHVybiBvfXN0YXRpYyByb3dWZWN0b3IodCl7bGV0IGU9bmV3IGl2dCgxLHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyllLnNldCgwLG4sdFtuXSk7cmV0dXJuIGV9c3RhdGljIGNvbHVtblZlY3Rvcih0KXtsZXQgZT1uZXcgaXZ0KHQubGVuZ3RoLDEpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUuc2V0KG4sMCx0W25dKTtyZXR1cm4gZX1zdGF0aWMgemVyb3ModCxlKXtyZXR1cm4gbmV3IGl2dCh0LGUpfXN0YXRpYyBvbmVzKHQsZSl7cmV0dXJuIG5ldyBpdnQodCxlKS5maWxsKDEpfXN0YXRpYyByYW5kKHQsZSxuPXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3JhbmRvbTpvPU1hdGgucmFuZG9tfT1uO2xldCBpPW5ldyBpdnQodCxlKTtmb3IobGV0IG49MDtuPHQ7bisrKWZvcihsZXQgdD0wO3Q8ZTt0KyspaS5zZXQobix0LG8oKSk7cmV0dXJuIGl9c3RhdGljIHJhbmRJbnQodCxlLG49e30pe2lmKCJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7bWluOm89MCxtYXg6aT0xZTMscmFuZG9tOmE9TWF0aC5yYW5kb219PW47aWYoIU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWluIG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoIm1heCBtdXN0IGJlIGFuIGludGVnZXIiKTtpZihvPj1pKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IHI9aS1vLHM9bmV3IGl2dCh0LGUpO2ZvcihsZXQgbj0wO248dDtuKyspZm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IGU9bytNYXRoLnJvdW5kKGEoKSpyKTtzLnNldChuLHQsZSl9cmV0dXJuIHN9c3RhdGljIGV5ZSh0LGUsbil7dm9pZCAwPT09ZSYmKGU9dCksdm9pZCAwPT09biYmKG49MSk7bGV0IG89TWF0aC5taW4odCxlKSxpPXRoaXMuemVyb3ModCxlKTtmb3IobGV0IHQ9MDt0PG87dCsrKWkuc2V0KHQsdCxuKTtyZXR1cm4gaX1zdGF0aWMgZGlhZyh0LGUsbil7bGV0IG89dC5sZW5ndGg7dm9pZCAwPT09ZSYmKGU9byksdm9pZCAwPT09biYmKG49ZSk7bGV0IGk9TWF0aC5taW4obyxlLG4pLGE9dGhpcy56ZXJvcyhlLG4pO2ZvcihsZXQgZT0wO2U8aTtlKyspYS5zZXQoZSxlLHRbZV0pO3JldHVybiBhfXN0YXRpYyBtaW4odCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyBpdnQobixvKTtmb3IobGV0IGE9MDthPG47YSsrKWZvcihsZXQgbj0wO248bztuKyspaS5zZXQoYSxuLE1hdGgubWluKHQuZ2V0KGEsbiksZS5nZXQoYSxuKSkpO3JldHVybiBpfXN0YXRpYyBtYXgodCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBuPXQucm93cyxvPXQuY29sdW1ucyxpPW5ldyB0aGlzKG4sbyk7Zm9yKGxldCBhPTA7YTxuO2ErKylmb3IobGV0IG49MDtuPG87bisrKWkuc2V0KGEsbixNYXRoLm1heCh0LmdldChhLG4pLGUuZ2V0KGEsbikpKTtyZXR1cm4gaX1zdGF0aWMgY2hlY2tNYXRyaXgodCl7cmV0dXJuIGV2dC5pc01hdHJpeCh0KT90Om5ldyBpdnQodCl9c3RhdGljIGlzTWF0cml4KHQpe3JldHVybiBudWxsIT10JiYiTWF0cml4Ij09PXQua2xhc3N9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5yb3dzKnRoaXMuY29sdW1uc31hcHBseSh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQuY2FsbCh0aGlzLGUsbik7cmV0dXJuIHRoaXN9dG8xREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnB1c2godGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9dG8yREFycmF5KCl7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXt0LnB1c2goW10pO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0W2VdLnB1c2godGhpcy5nZXQoZSxuKSl9cmV0dXJuIHR9dG9KU09OKCl7cmV0dXJuIHRoaXMudG8yREFycmF5KCl9aXNSb3dWZWN0b3IoKXtyZXR1cm4gMT09PXRoaXMucm93c31pc0NvbHVtblZlY3Rvcigpe3JldHVybiAxPT09dGhpcy5jb2x1bW5zfWlzVmVjdG9yKCl7cmV0dXJuIDE9PT10aGlzLnJvd3N8fDE9PT10aGlzLmNvbHVtbnN9aXNTcXVhcmUoKXtyZXR1cm4gdGhpcy5yb3dzPT09dGhpcy5jb2x1bW5zfWlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMucm93c3x8MD09PXRoaXMuY29sdW1uc31pc1N5bW1ldHJpYygpe2lmKHRoaXMuaXNTcXVhcmUoKSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8PXQ7ZSsrKWlmKHRoaXMuZ2V0KHQsZSkhPT10aGlzLmdldChlLHQpKXJldHVybiExO3JldHVybiEwfXJldHVybiExfWlzRWNoZWxvbkZvcm0oKXtsZXQgdD0wLGU9MCxuPS0xLG89ITAsaT0hMTtmb3IoO3Q8dGhpcy5yb3dzJiZvOyl7Zm9yKGU9MCxpPSExO2U8dGhpcy5jb2x1bW5zJiYhMT09PWk7KTA9PT10aGlzLmdldCh0LGUpP2UrKzoxPT09dGhpcy5nZXQodCxlKSYmZT5uPyhpPSEwLG49ZSk6KG89ITEsaT0hMCk7dCsrfXJldHVybiBvfWlzUmVkdWNlZEVjaGVsb25Gb3JtKCl7bGV0IHQ9MCxlPTAsbj0tMSxvPSEwLGk9ITE7Zm9yKDt0PHRoaXMucm93cyYmbzspe2ZvcihlPTAsaT0hMTtlPHRoaXMuY29sdW1ucyYmITE9PT1pOykwPT09dGhpcy5nZXQodCxlKT9lKys6MT09PXRoaXMuZ2V0KHQsZSkmJmU+bj8oaT0hMCxuPWUpOihvPSExLGk9ITApO2ZvcihsZXQgbj1lKzE7bjx0aGlzLnJvd3M7bisrKTAhPT10aGlzLmdldCh0LG4pJiYobz0hMSk7dCsrfXJldHVybiBvfWVjaGVsb25Gb3JtKCl7bGV0IHQ9dGhpcy5jbG9uZSgpLGU9MCxuPTA7Zm9yKDtlPHQucm93cyYmbjx0LmNvbHVtbnM7KXtsZXQgbz1lO2ZvcihsZXQgaT1lO2k8dC5yb3dzO2krKyl0LmdldChpLG4pPnQuZ2V0KG8sbikmJihvPWkpO2lmKDA9PT10LmdldChvLG4pKW4rKztlbHNle3Quc3dhcFJvd3MoZSxvKTtsZXQgaT10LmdldChlLG4pO2ZvcihsZXQgbz1uO288dC5jb2x1bW5zO28rKyl0LnNldChlLG8sdC5nZXQoZSxvKS9pKTtmb3IobGV0IG89ZSsxO288dC5yb3dzO28rKyl7bGV0IGk9dC5nZXQobyxuKS90LmdldChlLG4pO3Quc2V0KG8sbiwwKTtmb3IobGV0IGE9bisxO2E8dC5jb2x1bW5zO2ErKyl0LnNldChvLGEsdC5nZXQobyxhKS10LmdldChlLGEpKmkpfWUrKyxuKyt9fXJldHVybiB0fXJlZHVjZWRFY2hlbG9uRm9ybSgpe2xldCB0PXRoaXMuZWNoZWxvbkZvcm0oKSxlPXQuY29sdW1ucyxuPXQucm93cyxvPW4tMTtmb3IoO28+PTA7KWlmKDA9PT10Lm1heFJvdyhvKSlvLS07ZWxzZXtsZXQgaT0wLGE9ITE7Zm9yKDtpPG4mJiExPT09YTspMT09PXQuZ2V0KG8saSk/YT0hMDppKys7Zm9yKGxldCBuPTA7bjxvO24rKyl7bGV0IGE9dC5nZXQobixpKTtmb3IobGV0IHI9aTtyPGU7cisrKXtsZXQgZT10LmdldChuLHIpLWEqdC5nZXQobyxyKTt0LnNldChuLHIsZSl9fW8tLX1yZXR1cm4gdH1zZXQoKXt0aHJvdyBuZXcgRXJyb3IoInNldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCIpfWdldCgpe3Rocm93IG5ldyBFcnJvcigiZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkIil9cmVwZWF0KHQ9e30pe2lmKCJvYmplY3QiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7cm93czplPTEsY29sdW1uczpuPTF9PXQ7aWYoIU51bWJlci5pc0ludGVnZXIoZSl8fGU8PTApdGhyb3cgbmV3IFR5cGVFcnJvcigicm93cyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPD0wKXRocm93IG5ldyBUeXBlRXJyb3IoImNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtsZXQgbz1uZXcgaXZ0KHRoaXMucm93cyplLHRoaXMuY29sdW1ucypuKTtmb3IobGV0IHQ9MDt0PGU7dCsrKWZvcihsZXQgZT0wO2U8bjtlKyspby5zZXRTdWJNYXRyaXgodGhpcyx0aGlzLnJvd3MqdCx0aGlzLmNvbHVtbnMqZSk7cmV0dXJuIG99ZmlsbCh0KXtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0KTtyZXR1cm4gdGhpc31uZWcoKXtyZXR1cm4gdGhpcy5tdWxTKC0xKX1nZXRSb3codCl7V010KHRoaXMsdCk7bGV0IGU9W107Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKWUucHVzaCh0aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1nZXRSb3dWZWN0b3IodCl7cmV0dXJuIGl2dC5yb3dWZWN0b3IodGhpcy5nZXRSb3codCkpfXNldFJvdyh0LGUpe1dNdCh0aGlzLHQpLGU9cU10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixlW25dKTtyZXR1cm4gdGhpc31zd2FwUm93cyh0LGUpe1dNdCh0aGlzLHQpLFdNdCh0aGlzLGUpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl7bGV0IG89dGhpcy5nZXQodCxuKTt0aGlzLnNldCh0LG4sdGhpcy5nZXQoZSxuKSksdGhpcy5zZXQoZSxuLG8pfXJldHVybiB0aGlzfWdldENvbHVtbih0KXtZTXQodGhpcyx0KTtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZS5wdXNoKHRoaXMuZ2V0KG4sdCkpO3JldHVybiBlfWdldENvbHVtblZlY3Rvcih0KXtyZXR1cm4gaXZ0LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbih0KSl9c2V0Q29sdW1uKHQsZSl7WU10KHRoaXMsdCksZT1aTXQodGhpcyxlKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LGVbbl0pO3JldHVybiB0aGlzfXN3YXBDb2x1bW5zKHQsZSl7WU10KHRoaXMsdCksWU10KHRoaXMsZSk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXtsZXQgbz10aGlzLmdldChuLHQpO3RoaXMuc2V0KG4sdCx0aGlzLmdldChuLGUpKSx0aGlzLnNldChuLGUsbyl9cmV0dXJuIHRoaXN9YWRkUm93VmVjdG9yKHQpe3Q9cU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSt0W25dKTtyZXR1cm4gdGhpc31zdWJSb3dWZWN0b3IodCl7dD1xTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pLXRbbl0pO3JldHVybiB0aGlzfW11bFJvd1ZlY3Rvcih0KXt0PXFNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbikqdFtuXSk7cmV0dXJuIHRoaXN9ZGl2Um93VmVjdG9yKHQpe3Q9cU10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKS90W25dKTtyZXR1cm4gdGhpc31hZGRDb2x1bW5WZWN0b3IodCl7dD1aTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pK3RbZV0pO3JldHVybiB0aGlzfXN1YkNvbHVtblZlY3Rvcih0KXt0PVpNdCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQoZSxuLHRoaXMuZ2V0KGUsbiktdFtlXSk7cmV0dXJuIHRoaXN9bXVsQ29sdW1uVmVjdG9yKHQpe3Q9Wk10KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldChlLG4sdGhpcy5nZXQoZSxuKSp0W2VdKTtyZXR1cm4gdGhpc31kaXZDb2x1bW5WZWN0b3IodCl7dD1aTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KGUsbix0aGlzLmdldChlLG4pL3RbZV0pO3JldHVybiB0aGlzfW11bFJvdyh0LGUpe1dNdCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSplKTtyZXR1cm4gdGhpc31tdWxDb2x1bW4odCxlKXtZTXQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspdGhpcy5zZXQobix0LHRoaXMuZ2V0KG4sdCkqZSk7cmV0dXJuIHRoaXN9bWF4KCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKT50JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1tYXhJbmRleCgpe3R2dCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPnQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWluKCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQoZSxuKTx0JiYodD10aGlzLmdldChlLG4pKTtyZXR1cm4gdH1taW5JbmRleCgpe3R2dCh0aGlzKTtsZXQgdD10aGlzLmdldCgwLDApLGU9WzAsMF07Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChuLG8pPHQmJih0PXRoaXMuZ2V0KG4sbyksZVswXT1uLGVbMV09byk7cmV0dXJuIGV9bWF4Um93KHQpe2lmKFdNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQodCwwKTtmb3IobGV0IG49MTtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5nZXQodCxuKT5lJiYoZT10aGlzLmdldCh0LG4pKTtyZXR1cm4gZX1tYXhSb3dJbmRleCh0KXtXTXQodGhpcyx0KSx0dnQodGhpcyk7bGV0IGU9dGhpcy5nZXQodCwwKSxuPVt0LDBdO2ZvcihsZXQgbz0xO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldCh0LG8pPmUmJihlPXRoaXMuZ2V0KHQsbyksblsxXT1vKTtyZXR1cm4gbn1taW5Sb3codCl7aWYoV010KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCh0LDApO2ZvcihsZXQgbj0xO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLmdldCh0LG4pPGUmJihlPXRoaXMuZ2V0KHQsbikpO3JldHVybiBlfW1pblJvd0luZGV4KHQpe1dNdCh0aGlzLHQpLHR2dCh0aGlzKTtsZXQgZT10aGlzLmdldCh0LDApLG49W3QsMF07Zm9yKGxldCBvPTE7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuZ2V0KHQsbyk8ZSYmKGU9dGhpcy5nZXQodCxvKSxuWzFdPW8pO3JldHVybiBufW1heENvbHVtbih0KXtpZihZTXQodGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBlPXRoaXMuZ2V0KDAsdCk7Zm9yKGxldCBuPTE7bjx0aGlzLnJvd3M7bisrKXRoaXMuZ2V0KG4sdCk+ZSYmKGU9dGhpcy5nZXQobix0KSk7cmV0dXJuIGV9bWF4Q29sdW1uSW5kZXgodCl7WU10KHRoaXMsdCksdHZ0KHRoaXMpO2xldCBlPXRoaXMuZ2V0KDAsdCksbj1bMCx0XTtmb3IobGV0IG89MTtvPHRoaXMucm93cztvKyspdGhpcy5nZXQobyx0KT5lJiYoZT10aGlzLmdldChvLHQpLG5bMF09byk7cmV0dXJuIG59bWluQ29sdW1uKHQpe2lmKFlNdCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQoMCx0KTtmb3IobGV0IG49MTtuPHRoaXMucm93cztuKyspdGhpcy5nZXQobix0KTxlJiYoZT10aGlzLmdldChuLHQpKTtyZXR1cm4gZX1taW5Db2x1bW5JbmRleCh0KXtZTXQodGhpcyx0KSx0dnQodGhpcyk7bGV0IGU9dGhpcy5nZXQoMCx0KSxuPVswLHRdO2ZvcihsZXQgbz0xO288dGhpcy5yb3dzO28rKyl0aGlzLmdldChvLHQpPGUmJihlPXRoaXMuZ2V0KG8sdCksblswXT1vKTtyZXR1cm4gbn1kaWFnKCl7bGV0IHQ9TWF0aC5taW4odGhpcy5yb3dzLHRoaXMuY29sdW1ucyksZT1bXTtmb3IobGV0IG49MDtuPHQ7bisrKWUucHVzaCh0aGlzLmdldChuLG4pKTtyZXR1cm4gZX1ub3JtKHQ9ImZyb2Jlbml1cyIpe2xldCBlPTA7aWYoIm1heCI9PT10KXJldHVybiB0aGlzLm1heCgpO2lmKCJmcm9iZW5pdXMiPT09dCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyllKz10aGlzLmdldCh0LG4pKnRoaXMuZ2V0KHQsbik7cmV0dXJuIE1hdGguc3FydChlKX10aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dH1gKX1jdW11bGF0aXZlU3VtKCl7bGV0IHQ9MDtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXQrPXRoaXMuZ2V0KGUsbiksdGhpcy5zZXQoZSxuLHQpO3JldHVybiB0aGlzfWRvdCh0KXtldnQuaXNNYXRyaXgodCkmJih0PXQudG8xREFycmF5KCkpO2xldCBlPXRoaXMudG8xREFycmF5KCk7aWYoZS5sZW5ndGghPT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9ycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG49MDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyluKz1lW29dKnRbb107cmV0dXJuIG59bW11bCh0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LmNvbHVtbnMsaT1uZXcgaXZ0KGUsbyksYT1uZXcgRmxvYXQ2NEFycmF5KG4pO2ZvcihsZXQgcj0wO3I8bztyKyspe2ZvcihsZXQgZT0wO2U8bjtlKyspYVtlXT10LmdldChlLHIpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPTA7Zm9yKGxldCBvPTA7bzxuO28rKyllKz10aGlzLmdldCh0LG8pKmFbb107aS5zZXQodCxyLGUpfX1yZXR1cm4gaX1zdHJhc3NlbjJ4Mih0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT1uZXcgaXZ0KDIsMik7Y29uc3Qgbj10aGlzLmdldCgwLDApLG89dC5nZXQoMCwwKSxpPXRoaXMuZ2V0KDAsMSksYT10LmdldCgwLDEpLHI9dGhpcy5nZXQoMSwwKSxzPXQuZ2V0KDEsMCksbD10aGlzLmdldCgxLDEpLGM9dC5nZXQoMSwxKSxkPShuK2wpKihvK2MpLHA9KHIrbCkqbyxtPW4qKGEtYyksdT1sKihzLW8pLGY9KG4raSkqYyxnPW0rZixoPXArdSxiPWQtcCttKyhyLW4pKihvK2EpO3JldHVybiBlLnNldCgwLDAsZCt1LWYrKGktbCkqKHMrYykpLGUuc2V0KDAsMSxnKSxlLnNldCgxLDAsaCksZS5zZXQoMSwxLGIpLGV9c3RyYXNzZW4zeDModCl7dD1pdnQuY2hlY2tNYXRyaXgodCk7bGV0IGU9bmV3IGl2dCgzLDMpO2NvbnN0IG49dGhpcy5nZXQoMCwwKSxvPXRoaXMuZ2V0KDAsMSksaT10aGlzLmdldCgwLDIpLGE9dGhpcy5nZXQoMSwwKSxyPXRoaXMuZ2V0KDEsMSkscz10aGlzLmdldCgxLDIpLGw9dGhpcy5nZXQoMiwwKSxjPXRoaXMuZ2V0KDIsMSksZD10aGlzLmdldCgyLDIpLHA9dC5nZXQoMCwwKSxtPXQuZ2V0KDAsMSksdT10LmdldCgwLDIpLGY9dC5nZXQoMSwwKSxnPXQuZ2V0KDEsMSksaD10LmdldCgxLDIpLGI9dC5nZXQoMiwwKSx5PXQuZ2V0KDIsMSksXz10LmdldCgyLDIpLEM9KG4tYSkqKC1tK2cpLE09KC1uK2ErcikqKHAtbStnKSx2PShhK3IpKigtcCttKSx4PW4qcCxPPSgtbitsK2MpKihwLXUraCksUD0oLW4rbCkqKHUtaCksdz0obCtjKSooLXArdSksaz0oLWkrYytkKSooZytiLXkpLFM9KGktZCkqKGcteSksRD1pKmIsRT0oYytkKSooLWIreSksUj0oLWkrcitzKSooaCtiLV8pLEE9KGktcykqKGgtXyksVD0ocitzKSooLWIrXyksTj0obitvK2ktYS1yLWMtZCkqZytNK3YreCtrK0QrRSx6PXgrTyt3KyhuK28raS1yLXMtbC1jKSpoK0QrUitULEk9QytyKigtcCttK2YtZy1oLWIrXykrTSt4K0QrUitBLEg9QytNK3YreCtzKnksRj1EK1IrQStUK2EqdSxMPXgrTytQK2MqKC1wK3UrZi1nLWgtYit5KStrK1MrRCxCPWsrUytEK0UrbCptLFY9eCtPK1ArdytkKl87cmV0dXJuIGUuc2V0KDAsMCx4K0QrbypmKSxlLnNldCgwLDEsTiksZS5zZXQoMCwyLHopLGUuc2V0KDEsMCxJKSxlLnNldCgxLDEsSCksZS5zZXQoMSwyLEYpLGUuc2V0KDIsMCxMKSxlLnNldCgyLDEsQiksZS5zZXQoMiwyLFYpLGV9bW11bFN0cmFzc2VuKHQpe3Q9aXZ0LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuY2xvbmUoKSxuPWUucm93cyxvPWUuY29sdW1ucyxpPXQucm93cyxhPXQuY29sdW1ucztmdW5jdGlvbiByKHQsZSxuKXtpZih0LnJvd3M9PT1lJiZ0LmNvbHVtbnM9PT1uKXJldHVybiB0O3tsZXQgbz1ldnQuemVyb3MoZSxuKTtyZXR1cm4gbz1vLnNldFN1Yk1hdHJpeCh0LDAsMCksb319byE9PWkmJmNvbnNvbGUud2FybihgTXVsdGlwbHlpbmcgJHtufSB4ICR7b30gYW5kICR7aX0geCAke2F9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCk7bGV0IHM9TWF0aC5tYXgobixpKSxsPU1hdGgubWF4KG8sYSk7cmV0dXJuIGU9cihlLHMsbCksKGZ1bmN0aW9uIHQoZSxuLG8saSl7aWYobzw9NTEyfHxpPD01MTIpcmV0dXJuIGUubW11bChuKTtvJTI9PTEmJmklMj09MT8oZT1yKGUsbysxLGkrMSksbj1yKG4sbysxLGkrMSkpOm8lMj09MT8oZT1yKGUsbysxLGkpLG49cihuLG8rMSxpKSk6aSUyPT0xJiYoZT1yKGUsbyxpKzEpLG49cihuLG8saSsxKSk7bGV0IGE9cGFyc2VJbnQoZS5yb3dzLzIsMTApLHM9cGFyc2VJbnQoZS5jb2x1bW5zLzIsMTApLGw9ZS5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGM9bi5zdWJNYXRyaXgoMCxhLTEsMCxzLTEpLGQ9ZS5zdWJNYXRyaXgoMCxhLTEscyxlLmNvbHVtbnMtMSkscD1uLnN1Yk1hdHJpeCgwLGEtMSxzLG4uY29sdW1ucy0xKSxtPWUuc3ViTWF0cml4KGEsZS5yb3dzLTEsMCxzLTEpLHU9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSwwLHMtMSksZj1lLnN1Yk1hdHJpeChhLGUucm93cy0xLHMsZS5jb2x1bW5zLTEpLGc9bi5zdWJNYXRyaXgoYSxuLnJvd3MtMSxzLG4uY29sdW1ucy0xKSxoPXQoZXZ0LmFkZChsLGYpLGV2dC5hZGQoYyxnKSxhLHMpLGI9dChldnQuYWRkKG0sZiksYyxhLHMpLHk9dChsLGV2dC5zdWIocCxnKSxhLHMpLF89dChmLGV2dC5zdWIodSxjKSxhLHMpLEM9dChldnQuYWRkKGwsZCksZyxhLHMpLE09dChldnQuc3ViKG0sbCksZXZ0LmFkZChjLHApLGEscyksdj10KGV2dC5zdWIoZCxmKSxldnQuYWRkKHUsZyksYSxzKSx4PWV2dC5hZGQoaCxfKTt4LnN1YihDKSx4LmFkZCh2KTtsZXQgTz1ldnQuYWRkKHksQyksUD1ldnQuYWRkKGIsXyksdz1ldnQuc3ViKGgsYik7dy5hZGQoeSksdy5hZGQoTSk7bGV0IGs9ZXZ0Lnplcm9zKDIqeC5yb3dzLDIqeC5jb2x1bW5zKTtyZXR1cm4gaz1rLnNldFN1Yk1hdHJpeCh4LDAsMCksaz1rLnNldFN1Yk1hdHJpeChPLHgucm93cywwKSxrPWsuc2V0U3ViTWF0cml4KFAsMCx4LmNvbHVtbnMpLGs9ay5zZXRTdWJNYXRyaXgodyx4LnJvd3MseC5jb2x1bW5zKSxrLnN1Yk1hdHJpeCgwLG8tMSwwLGktMSl9KShlLHQ9cih0LHMsbCkscyxsKX1zY2FsZVJvd3ModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IGl2dCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0Kyspe2NvbnN0IGk9dGhpcy5nZXRSb3codCk7aS5sZW5ndGg+MCYmQk10KGkse21pbjplLG1heDpuLG91dHB1dDppfSksby5zZXRSb3codCxpKX1yZXR1cm4gb31zY2FsZUNvbHVtbnModD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46ZT0wLG1heDpuPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IG89bmV3IGl2dCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IHQ9MDt0PHRoaXMuY29sdW1uczt0Kyspe2NvbnN0IGk9dGhpcy5nZXRDb2x1bW4odCk7aS5sZW5ndGgmJkJNdChpLHttaW46ZSxtYXg6bixvdXRwdXQ6aX0pLG8uc2V0Q29sdW1uKHQsaSl9cmV0dXJuIG99ZmxpcFJvd3MoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLmNvbHVtbnMvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KGUsbiksbz10aGlzLmdldChlLHRoaXMuY29sdW1ucy0xLW4pO3RoaXMuc2V0KGUsbixvKSx0aGlzLnNldChlLHRoaXMuY29sdW1ucy0xLW4sdCl9cmV0dXJuIHRoaXN9ZmxpcENvbHVtbnMoKXtjb25zdCB0PU1hdGguY2VpbCh0aGlzLnJvd3MvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKWZvcihsZXQgbj0wO248dDtuKyspe2xldCB0PXRoaXMuZ2V0KG4sZSksbz10aGlzLmdldCh0aGlzLnJvd3MtMS1uLGUpO3RoaXMuc2V0KG4sZSxvKSx0aGlzLnNldCh0aGlzLnJvd3MtMS1uLGUsdCl9cmV0dXJuIHRoaXN9a3JvbmVja2VyUHJvZHVjdCh0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbj10aGlzLmNvbHVtbnMsbz10LnJvd3MsaT10LmNvbHVtbnMsYT1uZXcgaXZ0KGUqbyxuKmkpO2ZvcihsZXQgcj0wO3I8ZTtyKyspZm9yKGxldCBlPTA7ZTxuO2UrKylmb3IobGV0IG49MDtuPG87bisrKWZvcihsZXQgcz0wO3M8aTtzKyspYS5zZXQobypyK24saSplK3MsdGhpcy5nZXQocixlKSp0LmdldChuLHMpKTtyZXR1cm4gYX1rcm9uZWNrZXJTdW0odCl7aWYodD1pdnQuY2hlY2tNYXRyaXgodCksIXRoaXMuaXNTcXVhcmUoKXx8IXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIktyb25lY2tlciBTdW0gbmVlZHMgdHdvIFNxdWFyZSBNYXRyaWNlcyIpO2xldCBlPXRoaXMucm93cyxuPXQucm93cyxvPXRoaXMua3JvbmVja2VyUHJvZHVjdChpdnQuZXllKG4sbikpLGk9aXZ0LmV5ZShlLGUpLmtyb25lY2tlclByb2R1Y3QodCk7cmV0dXJuIG8uYWRkKGkpfXRyYW5zcG9zZSgpe2xldCB0PW5ldyBpdnQodGhpcy5jb2x1bW5zLHRoaXMucm93cyk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnNldChuLGUsdGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9c29ydFJvd3ModD1udnQpe2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl0aGlzLnNldFJvdyhlLHRoaXMuZ2V0Um93KGUpLnNvcnQodCkpO3JldHVybiB0aGlzfXNvcnRDb2x1bW5zKHQ9bnZ0KXtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXRDb2x1bW4oZSx0aGlzLmdldENvbHVtbihlKS5zb3J0KHQpKTtyZXR1cm4gdGhpc31zdWJNYXRyaXgodCxlLG4sbyl7Sk10KHRoaXMsdCxlLG4sbyk7bGV0IGk9bmV3IGl2dChlLXQrMSxvLW4rMSk7Zm9yKGxldCBhPXQ7YTw9ZTthKyspZm9yKGxldCBlPW47ZTw9bztlKyspaS5zZXQoYS10LGUtbix0aGlzLmdldChhLGUpKTtyZXR1cm4gaX1zdWJNYXRyaXhSb3codCxlLG4pe2lmKHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPXRoaXMuY29sdW1ucy0xKSxlPm58fGU8MHx8ZT49dGhpcy5jb2x1bW5zfHxuPDB8fG4+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJndW1lbnQgb3V0IG9mIHJhbmdlIik7bGV0IG89bmV3IGl2dCh0Lmxlbmd0aCxuLWUrMSk7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspZm9yKGxldCBhPWU7YTw9bjthKyspe2lmKHRbaV08MHx8dFtpXT49dGhpcy5yb3dzKXRocm93IG5ldyBSYW5nZUVycm9yKGBSb3cgaW5kZXggb3V0IG9mIHJhbmdlOiAke3RbaV19YCk7by5zZXQoaSxhLWUsdGhpcy5nZXQodFtpXSxhKSl9cmV0dXJuIG99c3ViTWF0cml4Q29sdW1uKHQsZSxuKXtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj10aGlzLnJvd3MtMSksZT5ufHxlPDB8fGU+PXRoaXMucm93c3x8bjwwfHxuPj10aGlzLnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkFyZ3VtZW50IG91dCBvZiByYW5nZSIpO2xldCBvPW5ldyBpdnQobi1lKzEsdC5sZW5ndGgpO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKWZvcihsZXQgYT1lO2E8PW47YSsrKXtpZih0W2ldPDB8fHRbaV0+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHt0W2ldfWApO28uc2V0KGEtZSxpLHRoaXMuZ2V0KGEsdFtpXSkpfXJldHVybiBvfXNldFN1Yk1hdHJpeCh0LGUsbil7aWYoKHQ9aXZ0LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpcmV0dXJuIHRoaXM7Sk10KHRoaXMsZSxlK3Qucm93cy0xLG4sbit0LmNvbHVtbnMtMSk7Zm9yKGxldCBvPTA7bzx0LnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dC5jb2x1bW5zO2krKyl0aGlzLnNldChlK28sbitpLHQuZ2V0KG8saSkpO3JldHVybiB0aGlzfXNlbGVjdGlvbih0LGUpe2xldCBuPShmdW5jdGlvbiBvKHQsZSxuKXtyZXR1cm57cm93OlhNdCh0LGUpLGNvbHVtbjpLTXQodCxuKX19KSh0aGlzLHQsZSksaT1uZXcgaXZ0KHQubGVuZ3RoLGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PG4ucm93Lmxlbmd0aDt0Kyspe2xldCBlPW4ucm93W3RdO2ZvcihsZXQgbz0wO288bi5jb2x1bW4ubGVuZ3RoO28rKylpLnNldCh0LG8sdGhpcy5nZXQoZSxuLmNvbHVtbltvXSkpfXJldHVybiBpfXRyYWNlKCl7bGV0IHQ9TWF0aC5taW4odGhpcy5yb3dzLHRoaXMuY29sdW1ucyksZT0wO2ZvcihsZXQgbj0wO248dDtuKyspZSs9dGhpcy5nZXQobixuKTtyZXR1cm4gZX1jbG9uZSgpe2xldCB0PW5ldyBpdnQodGhpcy5yb3dzLHRoaXMuY29sdW1ucyk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0LnNldChlLG4sdGhpcy5nZXQoZSxuKSk7cmV0dXJuIHR9c3VtKHQpe3N3aXRjaCh0KXtjYXNlInJvdyI6cmV0dXJuKGZ1bmN0aW9uIGUodCl7bGV0IGU9UU10KHQucm93cyk7Zm9yKGxldCBuPTA7bjx0LnJvd3M7KytuKWZvcihsZXQgbz0wO288dC5jb2x1bW5zOysrbyllW25dKz10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7Y2FzZSJjb2x1bW4iOnJldHVybihmdW5jdGlvbiBuKHQpe2xldCBlPVFNdCh0LmNvbHVtbnMpO2ZvcihsZXQgbj0wO248dC5yb3dzOysrbilmb3IobGV0IG89MDtvPHQuY29sdW1uczsrK28pZVtvXSs9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2Nhc2Ugdm9pZCAwOnJldHVybihmdW5jdGlvbiBvKHQpe2xldCBlPTA7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyllKz10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXByb2R1Y3QodCl7c3dpdGNoKHQpe2Nhc2Uicm93IjpyZXR1cm4oZnVuY3Rpb24gZSh0KXtsZXQgZT1RTXQodC5yb3dzLDEpO2ZvcihsZXQgbj0wO248dC5yb3dzOysrbilmb3IobGV0IG89MDtvPHQuY29sdW1uczsrK28pZVtuXSo9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2Nhc2UiY29sdW1uIjpyZXR1cm4oZnVuY3Rpb24gbih0KXtsZXQgZT1RTXQodC5jb2x1bW5zLDEpO2ZvcihsZXQgbj0wO248dC5yb3dzOysrbilmb3IobGV0IG89MDtvPHQuY29sdW1uczsrK28pZVtvXSo9dC5nZXQobixvKTtyZXR1cm4gZX0pKHRoaXMpO2Nhc2Ugdm9pZCAwOnJldHVybihmdW5jdGlvbiBvKHQpe2xldCBlPTE7Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyllKj10LmdldChuLG8pO3JldHVybiBlfSkodGhpcyk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fW1lYW4odCl7Y29uc3QgZT10aGlzLnN1bSh0KTtzd2l0Y2godCl7Y2FzZSJyb3ciOmZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKyllW3RdLz10aGlzLmNvbHVtbnM7cmV0dXJuIGU7Y2FzZSJjb2x1bW4iOmZvcihsZXQgdD0wO3Q8dGhpcy5jb2x1bW5zO3QrKyllW3RdLz10aGlzLnJvd3M7cmV0dXJuIGU7Y2FzZSB2b2lkIDA6cmV0dXJuIGUvdGhpcy5zaXplO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX12YXJpYW5jZSh0LGU9e30pe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmKGU9dCx0PXZvaWQgMCksIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHt1bmJpYXNlZDpuPSEwLG1lYW46bz10aGlzLm1lYW4odCl9PWU7aWYoImJvb2xlYW4iIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmJpYXNlZCBtdXN0IGJlIGEgYm9vbGVhbiIpO3N3aXRjaCh0KXtjYXNlInJvdyI6aWYoIUFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWVhbiBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGUodCxuLG8pe2NvbnN0IGk9dC5yb3dzLGE9dC5jb2x1bW5zLHI9W107Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bGV0IGk9MCxzPTAsbD0wO2ZvcihsZXQgbj0wO248YTtuKyspbD10LmdldChlLG4pLW9bZV0saSs9bCxzKz1sKmw7ci5wdXNoKG4/KHMtaSppL2EpLyhhLTEpOihzLWkqaS9hKS9hKX1yZXR1cm4gcn0pKHRoaXMsbixvKTtjYXNlImNvbHVtbiI6aWYoIUFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWVhbiBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IG89dC5yb3dzLGk9dC5jb2x1bW5zLGE9W107Zm9yKGxldCByPTA7cjxpO3IrKyl7bGV0IGk9MCxzPTAsbD0wO2ZvcihsZXQgZT0wO2U8bztlKyspbD10LmdldChlLHIpLW5bcl0saSs9bCxzKz1sKmw7YS5wdXNoKGU/KHMtaSppL28pLyhvLTEpOihzLWkqaS9vKS9vKX1yZXR1cm4gYX0pKHRoaXMsbixvKTtjYXNlIHZvaWQgMDppZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IFR5cGVFcnJvcigibWVhbiBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuKGZ1bmN0aW9uIGEodCxlLG4pe2NvbnN0IG89dC5yb3dzLGk9dC5jb2x1bW5zLGE9byppO2xldCByPTAscz0wLGw9MDtmb3IobGV0IGU9MDtlPG87ZSsrKWZvcihsZXQgbz0wO288aTtvKyspbD10LmdldChlLG8pLW4scis9bCxzKz1sKmw7cmV0dXJuIGU/KHMtcipyL2EpLyhhLTEpOihzLXIqci9hKS9hfSkodGhpcyxuLG8pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1zdGFuZGFyZERldmlhdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgdCYmKGU9dCx0PXZvaWQgMCk7Y29uc3Qgbj10aGlzLnZhcmlhbmNlKHQsZSk7aWYodm9pZCAwPT09dClyZXR1cm4gTWF0aC5zcXJ0KG4pO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF09TWF0aC5zcXJ0KG5bdF0pO3JldHVybiBufWNlbnRlcih0LGU9e30pe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmKGU9dCx0PXZvaWQgMCksIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHtjZW50ZXI6bj10aGlzLm1lYW4odCl9PWU7c3dpdGNoKHQpe2Nhc2Uicm93IjppZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBlKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dC5jb2x1bW5zO28rKyl0LnNldChlLG8sdC5nZXQoZSxvKS1uW2VdKX0pKHRoaXMsbiksdGhpcztjYXNlImNvbHVtbiI6aWYoIUFycmF5LmlzQXJyYXkobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gbyh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbyktZVtvXSl9KSh0aGlzLG4pLHRoaXM7Y2FzZSB2b2lkIDA6aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuKGZ1bmN0aW9uIGkodCxlKXtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KG4sbyx0LmdldChuLG8pLWUpfSkodGhpcyxuKSx0aGlzO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1zY2FsZSh0LGU9e30pe2lmKCJvYmplY3QiPT10eXBlb2YgdCYmKGU9dCx0PXZvaWQgMCksIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtsZXQgbj1lLnNjYWxlO3N3aXRjaCh0KXtjYXNlInJvdyI6aWYodm9pZCAwPT09biluPShmdW5jdGlvbiBlKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0LnJvd3M7bisrKXtsZXQgbz0wO2ZvcihsZXQgZT0wO2U8dC5jb2x1bW5zO2UrKylvKz1NYXRoLnBvdyh0LmdldChuLGUpLDIpLyh0LmNvbHVtbnMtMSk7ZS5wdXNoKE1hdGguc3FydChvKSl9cmV0dXJuIGV9KSh0aGlzKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gbyh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbykvZVtuXSl9KSh0aGlzLG4pLHRoaXM7Y2FzZSJjb2x1bW4iOmlmKHZvaWQgMD09PW4pbj0oZnVuY3Rpb24gaSh0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wO248dC5jb2x1bW5zO24rKyl7bGV0IG89MDtmb3IobGV0IGU9MDtlPHQucm93cztlKyspbys9TWF0aC5wb3codC5nZXQoZSxuKSwyKS8odC5yb3dzLTEpO2UucHVzaChNYXRoLnNxcnQobykpfXJldHVybiBlfSkodGhpcyk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzY2FsZSBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGEodCxlKXtmb3IobGV0IG49MDtuPHQucm93cztuKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXQuc2V0KG4sbyx0LmdldChuLG8pL2Vbb10pfSkodGhpcyxuKSx0aGlzO2Nhc2Ugdm9pZCAwOmlmKHZvaWQgMD09PW4pbj0oZnVuY3Rpb24gcih0KXtjb25zdCBlPXQuc2l6ZS0xO2xldCBuPTA7Zm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKWZvcihsZXQgaT0wO2k8dC5yb3dzO2krKyluKz1NYXRoLnBvdyh0LmdldChpLG8pLDIpL2U7cmV0dXJuIE1hdGguc3FydChuKX0pKHRoaXMpO2Vsc2UgaWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gcyh0LGUpe2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylmb3IobGV0IG89MDtvPHQuY29sdW1ucztvKyspdC5zZXQobixvLHQuZ2V0KG4sbykvZSl9KSh0aGlzLG4pLHRoaXM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXRvU3RyaW5nKHQpe3JldHVybiBVTXQodGhpcyx0KX19ZnVuY3Rpb24gbnZ0KHQsZSl7cmV0dXJuIHQtZX1ldnQucHJvdG90eXBlLmtsYXNzPSJNYXRyaXgiLCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiYoZXZ0LnByb3RvdHlwZVtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1mdW5jdGlvbiBvdnQoKXtyZXR1cm4gVU10KHRoaXMpfSksZXZ0LnJhbmRvbT1ldnQucmFuZCxldnQucmFuZG9tSW50PWV2dC5yYW5kSW50LGV2dC5kaWFnb25hbD1ldnQuZGlhZyxldnQucHJvdG90eXBlLmRpYWdvbmFsPWV2dC5wcm90b3R5cGUuZGlhZyxldnQuaWRlbnRpdHk9ZXZ0LmV5ZSxldnQucHJvdG90eXBlLm5lZ2F0ZT1ldnQucHJvdG90eXBlLm5lZyxldnQucHJvdG90eXBlLnRlbnNvclByb2R1Y3Q9ZXZ0LnByb3RvdHlwZS5rcm9uZWNrZXJQcm9kdWN0O2NsYXNzIGl2dCBleHRlbmRzIGV2dHtjb25zdHJ1Y3Rvcih0LGUpe2lmKHN1cGVyKCksaXZ0LmlzTWF0cml4KHQpKXJldHVybiB0LmNsb25lKCk7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCl7aWYodGhpcy5kYXRhPVtdLCEoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MCkpdGhyb3cgbmV3IFR5cGVFcnJvcigibkNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTtmb3IobGV0IG49MDtuPHQ7bisrKXRoaXMuZGF0YS5wdXNoKG5ldyBGbG9hdDY0QXJyYXkoZSkpfWVsc2V7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBvciBhbiBhcnJheSIpO3tjb25zdCBuPXQ7aWYoIm51bWJlciIhPXR5cGVvZihlPSh0PW4ubGVuZ3RoKT9uWzBdLmxlbmd0aDowKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEYXRhIG11c3QgYmUgYSAyRCBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50Iik7dGhpcy5kYXRhPVtdO2ZvcihsZXQgbz0wO288dDtvKyspe2lmKG5bb10ubGVuZ3RoIT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5jb25zaXN0ZW50IGFycmF5IGRpbWVuc2lvbnMiKTt0aGlzLmRhdGEucHVzaChGbG9hdDY0QXJyYXkuZnJvbShuW29dKSl9fX10aGlzLnJvd3M9dCx0aGlzLmNvbHVtbnM9ZX1zZXQodCxlLG4pe3JldHVybiB0aGlzLmRhdGFbdF1bZV09bix0aGlzfWdldCh0LGUpe3JldHVybiB0aGlzLmRhdGFbdF1bZV19cmVtb3ZlUm93KHQpe3JldHVybiBXTXQodGhpcyx0KSx0aGlzLmRhdGEuc3BsaWNlKHQsMSksdGhpcy5yb3dzLT0xLHRoaXN9YWRkUm93KHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXQsdD10aGlzLnJvd3MpLFdNdCh0aGlzLHQsITApLGU9RmxvYXQ2NEFycmF5LmZyb20ocU10KHRoaXMsZSkpLHRoaXMuZGF0YS5zcGxpY2UodCwwLGUpLHRoaXMucm93cys9MSx0aGlzfXJlbW92ZUNvbHVtbih0KXtZTXQodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspe2NvbnN0IG49bmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMtMSk7Zm9yKGxldCBvPTA7bzx0O28rKyluW29dPXRoaXMuZGF0YVtlXVtvXTtmb3IobGV0IG89dCsxO288dGhpcy5jb2x1bW5zO28rKyluW28tMV09dGhpcy5kYXRhW2VdW29dO3RoaXMuZGF0YVtlXT1ufXJldHVybiB0aGlzLmNvbHVtbnMtPTEsdGhpc31hZGRDb2x1bW4odCxlKXt2b2lkIDA9PT1lJiYoZT10LHQ9dGhpcy5jb2x1bW5zKSxZTXQodGhpcyx0LCEwKSxlPVpNdCh0aGlzLGUpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKyl7Y29uc3Qgbz1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucysxKTtsZXQgaT0wO2Zvcig7aTx0O2krKylvW2ldPXRoaXMuZGF0YVtuXVtpXTtmb3Iob1tpKytdPWVbbl07aTx0aGlzLmNvbHVtbnMrMTtpKyspb1tpXT10aGlzLmRhdGFbbl1baS0xXTt0aGlzLmRhdGFbbl09b31yZXR1cm4gdGhpcy5jb2x1bW5zKz0xLHRoaXN9fSEoZnVuY3Rpb24gYXZ0KHQsZSl7dC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMuYWRkUyhlKTp0aGlzLmFkZE0oZSl9LHQucHJvdG90eXBlLmFkZFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pK2UpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5hZGRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpK24uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LmFkZD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLmFkZChvKX0sdC5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMuc3ViUyhlKTp0aGlzLnN1Yk0oZSl9LHQucHJvdG90eXBlLnN1YlM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pLWUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zdWJNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpLW4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LnN1Yj1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLnN1YihvKX0sdC5wcm90b3R5cGUuc3VidHJhY3Q9dC5wcm90b3R5cGUuc3ViLHQucHJvdG90eXBlLnN1YnRyYWN0Uz10LnByb3RvdHlwZS5zdWJTLHQucHJvdG90eXBlLnN1YnRyYWN0TT10LnByb3RvdHlwZS5zdWJNLHQuc3VidHJhY3Q9dC5zdWIsdC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMubXVsUyhlKTp0aGlzLm11bE0oZSl9LHQucHJvdG90eXBlLm11bFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pKmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5tdWxNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpKm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0Lm11bD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLm11bChvKX0sdC5wcm90b3R5cGUubXVsdGlwbHk9dC5wcm90b3R5cGUubXVsLHQucHJvdG90eXBlLm11bHRpcGx5Uz10LnByb3RvdHlwZS5tdWxTLHQucHJvdG90eXBlLm11bHRpcGx5TT10LnByb3RvdHlwZS5tdWxNLHQubXVsdGlwbHk9dC5tdWwsdC5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMuZGl2UyhlKTp0aGlzLmRpdk0oZSl9LHQucHJvdG90eXBlLmRpdlM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pL2UpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaXZNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpL24uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LmRpdj1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLmRpdihvKX0sdC5wcm90b3R5cGUuZGl2aWRlPXQucHJvdG90eXBlLmRpdix0LnByb3RvdHlwZS5kaXZpZGVTPXQucHJvdG90eXBlLmRpdlMsdC5wcm90b3R5cGUuZGl2aWRlTT10LnByb3RvdHlwZS5kaXZNLHQuZGl2aWRlPXQuZGl2LHQucHJvdG90eXBlLm1vZD1mdW5jdGlvbiB0KGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZT90aGlzLm1vZFMoZSk6dGhpcy5tb2RNKGUpfSx0LnByb3RvdHlwZS5tb2RTPWZ1bmN0aW9uIHQoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKSVlKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUubW9kTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKSVuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5tb2Q9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5tb2Qobyl9LHQucHJvdG90eXBlLm1vZHVsdXM9dC5wcm90b3R5cGUubW9kLHQucHJvdG90eXBlLm1vZHVsdXNTPXQucHJvdG90eXBlLm1vZFMsdC5wcm90b3R5cGUubW9kdWx1c009dC5wcm90b3R5cGUubW9kTSx0Lm1vZHVsdXM9dC5tb2QsdC5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlP3RoaXMuYW5kUyhlKTp0aGlzLmFuZE0oZSl9LHQucHJvdG90eXBlLmFuZFM9ZnVuY3Rpb24gdChlKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pJmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5hbmRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpJm4uZ2V0KHQsZSkpO3JldHVybiB0aGlzfSx0LmFuZD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLmFuZChvKX0sdC5wcm90b3R5cGUub3I9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5vclMoZSk6dGhpcy5vck0oZSl9LHQucHJvdG90eXBlLm9yUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbil8ZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLm9yTT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKXxuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5vcj1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLm9yKG8pfSx0LnByb3RvdHlwZS54b3I9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy54b3JTKGUpOnRoaXMueG9yTShlKX0sdC5wcm90b3R5cGUueG9yUz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbileZSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnhvck09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSlebi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQueG9yPWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikueG9yKG8pfSx0LnByb3RvdHlwZS5sZWZ0U2hpZnQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5sZWZ0U2hpZnRTKGUpOnRoaXMubGVmdFNoaWZ0TShlKX0sdC5wcm90b3R5cGUubGVmdFNoaWZ0Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbik8PGUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5sZWZ0U2hpZnRNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpPDxuLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5sZWZ0U2hpZnQ9ZnVuY3Rpb24gdChuLG8pe3JldHVybiBuZXcgZShuKS5sZWZ0U2hpZnQobyl9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0UyhlKTp0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNKGUpfSx0LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbik+PmUpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TT1mdW5jdGlvbiB0KG4pe2lmKG49ZS5jaGVja01hdHJpeChuKSx0aGlzLnJvd3MhPT1uLnJvd3N8fHRoaXMuY29sdW1ucyE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKT4+bi5nZXQodCxlKSk7cmV0dXJuIHRoaXN9LHQuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdD1mdW5jdGlvbiB0KG4sbyl7cmV0dXJuIG5ldyBlKG4pLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQobyl9LHQucHJvdG90eXBlLnJpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5yaWdodFNoaWZ0UyhlKTp0aGlzLnJpZ2h0U2hpZnRNKGUpfSx0LnByb3RvdHlwZS5yaWdodFNoaWZ0Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbik+Pj5lKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucmlnaHRTaGlmdE09ZnVuY3Rpb24gdChuKXtpZihuPWUuY2hlY2tNYXRyaXgobiksdGhpcy5yb3dzIT09bi5yb3dzfHx0aGlzLmNvbHVtbnMhPT1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSk+Pj5uLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5yaWdodFNoaWZ0PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikucmlnaHRTaGlmdChvKX0sdC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0PXQucHJvdG90eXBlLnJpZ2h0U2hpZnQsdC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0Uz10LnByb3RvdHlwZS5yaWdodFNoaWZ0Uyx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRNPXQucHJvdG90eXBlLnJpZ2h0U2hpZnRNLHQuemVyb0ZpbGxSaWdodFNoaWZ0PXQucmlnaHRTaGlmdCx0LnByb3RvdHlwZS5ub3Q9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLH50aGlzLmdldCh0LGUpKTtyZXR1cm4gdGhpc30sdC5ub3Q9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubm90KCl9LHQucHJvdG90eXBlLmFicz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hYnModGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFicz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hYnMoKX0sdC5wcm90b3R5cGUuYWNvcz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hY29zKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hY29zPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFjb3MoKX0sdC5wcm90b3R5cGUuYWNvc2g9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYWNvc2godGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmFjb3NoPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmFjb3NoKCl9LHQucHJvdG90eXBlLmFzaW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguYXNpbih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYXNpbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hc2luKCl9LHQucHJvdG90eXBlLmFzaW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmFzaW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5hc2luaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5hc2luaCgpfSx0LnByb3RvdHlwZS5hdGFuPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmF0YW4odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmF0YW49ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYXRhbigpfSx0LnByb3RvdHlwZS5hdGFuaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5hdGFuaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuYXRhbmg9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuYXRhbmgoKX0sdC5wcm90b3R5cGUuY2JydD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jYnJ0KHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5jYnJ0PWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNicnQoKX0sdC5wcm90b3R5cGUuY2VpbD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jZWlsKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5jZWlsPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNlaWwoKX0sdC5wcm90b3R5cGUuY2x6MzI9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguY2x6MzIodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNsejMyPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNsejMyKCl9LHQucHJvdG90eXBlLmNvcz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jb3ModGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmNvcz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5jb3MoKX0sdC5wcm90b3R5cGUuY29zaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5jb3NoKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5jb3NoPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmNvc2goKX0sdC5wcm90b3R5cGUuZXhwPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmV4cCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZXhwPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmV4cCgpfSx0LnByb3RvdHlwZS5leHBtMT1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5leHBtMSh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuZXhwbTE9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuZXhwbTEoKX0sdC5wcm90b3R5cGUuZmxvb3I9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguZmxvb3IodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmZsb29yPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmZsb29yKCl9LHQucHJvdG90eXBlLmZyb3VuZD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5mcm91bmQodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmZyb3VuZD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5mcm91bmQoKX0sdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLmxvZyh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQubG9nPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmxvZygpfSx0LnByb3RvdHlwZS5sb2cxcD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5sb2cxcCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQubG9nMXA9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikubG9nMXAoKX0sdC5wcm90b3R5cGUubG9nMTA9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgubG9nMTAodGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LmxvZzEwPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLmxvZzEwKCl9LHQucHJvdG90eXBlLmxvZzI9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgubG9nMih0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQubG9nMj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5sb2cyKCl9LHQucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnJvdW5kKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5yb3VuZD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5yb3VuZCgpfSx0LnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnNpZ24odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnNpZ249ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuc2lnbigpfSx0LnByb3RvdHlwZS5zaW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguc2luKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC5zaW49ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3IGUobikuc2luKCl9LHQucHJvdG90eXBlLnNpbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguc2luaCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuc2luaD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zaW5oKCl9LHQucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGguc3FydCh0aGlzLmdldCh0LGUpKSk7cmV0dXJuIHRoaXN9LHQuc3FydD1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS5zcXJ0KCl9LHQucHJvdG90eXBlLnRhbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC50YW4odGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnRhbj1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcgZShuKS50YW4oKX0sdC5wcm90b3R5cGUudGFuaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC50YW5oKHRoaXMuZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc30sdC50YW5oPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnRhbmgoKX0sdC5wcm90b3R5cGUudHJ1bmM9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLE1hdGgudHJ1bmModGhpcy5nZXQodCxlKSkpO3JldHVybiB0aGlzfSx0LnRydW5jPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyBlKG4pLnRydW5jKCl9LHQucG93PWZ1bmN0aW9uIHQobixvKXtyZXR1cm4gbmV3IGUobikucG93KG8pfSx0LnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24gdChlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5wb3dTKGUpOnRoaXMucG93TShlKX0sdC5wcm90b3R5cGUucG93Uz1mdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGgucG93KHRoaXMuZ2V0KHQsbiksZSkpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5wb3dNPWZ1bmN0aW9uIHQobil7aWYobj1lLmNoZWNrTWF0cml4KG4pLHRoaXMucm93cyE9PW4ucm93c3x8dGhpcy5jb2x1bW5zIT09bi5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSxNYXRoLnBvdyh0aGlzLmdldCh0LGUpLG4uZ2V0KHQsZSkpKTtyZXR1cm4gdGhpc319KShldnQsaXZ0KTtjbGFzcyBydnQgZXh0ZW5kcyBldnR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRhdGE9dCx0aGlzLnJvd3M9dC5sZW5ndGgsdGhpcy5jb2x1bW5zPXRbMF0ubGVuZ3RofXNldCh0LGUsbil7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXT1uLHRoaXN9Z2V0KHQsZSl7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXX19Y2xhc3Mgc3Z0e2NvbnN0cnVjdG9yKHQpe2xldCBlLG4sbyxpLGEscixzLGwsYyxkPSh0PXJ2dC5jaGVja01hdHJpeCh0KSkuY2xvbmUoKSxwPWQucm93cyxtPWQuY29sdW1ucyx1PW5ldyBGbG9hdDY0QXJyYXkocCksZj0xO2ZvcihlPTA7ZTxwO2UrKyl1W2VdPWU7Zm9yKGw9bmV3IEZsb2F0NjRBcnJheShwKSxuPTA7bjxtO24rKyl7Zm9yKGU9MDtlPHA7ZSsrKWxbZV09ZC5nZXQoZSxuKTtmb3IoZT0wO2U8cDtlKyspe2ZvcihjPU1hdGgubWluKGUsbiksYT0wLG89MDtvPGM7bysrKWErPWQuZ2V0KGUsbykqbFtvXTtsW2VdLT1hLGQuc2V0KGUsbixsW2VdKX1mb3IoaT1uLGU9bisxO2U8cDtlKyspTWF0aC5hYnMobFtlXSk+TWF0aC5hYnMobFtpXSkmJihpPWUpO2lmKGkhPT1uKXtmb3Iobz0wO288bTtvKyspcj1kLmdldChpLG8pLGQuc2V0KGksbyxkLmdldChuLG8pKSxkLnNldChuLG8scik7cz11W2ldLHVbaV09dVtuXSx1W25dPXMsZj0tZn1pZihuPHAmJjAhPT1kLmdldChuLG4pKWZvcihlPW4rMTtlPHA7ZSsrKWQuc2V0KGUsbixkLmdldChlLG4pL2QuZ2V0KG4sbikpfXRoaXMuTFU9ZCx0aGlzLnBpdm90VmVjdG9yPXUsdGhpcy5waXZvdFNpZ249Zn1pc1Npbmd1bGFyKCl7bGV0IHQ9dGhpcy5MVSxlPXQuY29sdW1ucztmb3IobGV0IG49MDtuPGU7bisrKWlmKDA9PT10LmdldChuLG4pKXJldHVybiEwO3JldHVybiExfXNvbHZlKHQpe3Q9aXZ0LmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuTFU7aWYoZS5yb3dzIT09dC5yb3dzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtYXRyaXggZGltZW5zaW9ucyIpO2lmKHRoaXMuaXNTaW5ndWxhcigpKXRocm93IG5ldyBFcnJvcigiTFUgbWF0cml4IGlzIHNpbmd1bGFyIik7bGV0IG4sbyxpLGE9dC5jb2x1bW5zLHI9dC5zdWJNYXRyaXhSb3codGhpcy5waXZvdFZlY3RvciwwLGEtMSkscz1lLmNvbHVtbnM7Zm9yKGk9MDtpPHM7aSsrKWZvcihuPWkrMTtuPHM7bisrKWZvcihvPTA7bzxhO28rKylyLnNldChuLG8sci5nZXQobixvKS1yLmdldChpLG8pKmUuZ2V0KG4saSkpO2ZvcihpPXMtMTtpPj0wO2ktLSl7Zm9yKG89MDtvPGE7bysrKXIuc2V0KGksbyxyLmdldChpLG8pL2UuZ2V0KGksaSkpO2ZvcihuPTA7bjxpO24rKylmb3Iobz0wO288YTtvKyspci5zZXQobixvLHIuZ2V0KG4sbyktci5nZXQoaSxvKSplLmdldChuLGkpKX1yZXR1cm4gcn1nZXQgZGV0ZXJtaW5hbnQoKXtsZXQgdD10aGlzLkxVO2lmKCF0LmlzU3F1YXJlKCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggbXVzdCBiZSBzcXVhcmUiKTtsZXQgZT10aGlzLnBpdm90U2lnbixuPXQuY29sdW1ucztmb3IobGV0IG89MDtvPG47bysrKWUqPXQuZ2V0KG8sbyk7cmV0dXJuIGV9Z2V0IGxvd2VyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuTFUsZT10LnJvd3Msbj10LmNvbHVtbnMsbz1uZXcgaXZ0KGUsbik7Zm9yKGxldCBpPTA7aTxlO2krKylmb3IobGV0IGU9MDtlPG47ZSsrKW8uc2V0KGksZSxpPmU/dC5nZXQoaSxlKTppPT09ZT8xOjApO3JldHVybiBvfWdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKXtsZXQgdD10aGlzLkxVLGU9dC5yb3dzLG49dC5jb2x1bW5zLG89bmV3IGl2dChlLG4pO2ZvcihsZXQgaT0wO2k8ZTtpKyspZm9yKGxldCBlPTA7ZTxuO2UrKylvLnNldChpLGUsaTw9ZT90LmdldChpLGUpOjApO3JldHVybiBvfWdldCBwaXZvdFBlcm11dGF0aW9uVmVjdG9yKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5waXZvdFZlY3Rvcil9fWZ1bmN0aW9uIGx2dCh0LGUpe2xldCBuPTA7cmV0dXJuIE1hdGguYWJzKHQpPk1hdGguYWJzKGUpPyhuPWUvdCxNYXRoLmFicyh0KSpNYXRoLnNxcnQoMStuKm4pKTowIT09ZT8obj10L2UsTWF0aC5hYnMoZSkqTWF0aC5zcXJ0KDErbipuKSk6MH1jbGFzcyBjdnR7Y29uc3RydWN0b3IodCl7bGV0IGUsbixvLGksYT0odD1ydnQuY2hlY2tNYXRyaXgodCkpLmNsb25lKCkscj10LnJvd3Mscz10LmNvbHVtbnMsbD1uZXcgRmxvYXQ2NEFycmF5KHMpO2ZvcihvPTA7bzxzO28rKyl7bGV0IHQ9MDtmb3IoZT1vO2U8cjtlKyspdD1sdnQodCxhLmdldChlLG8pKTtpZigwIT09dCl7Zm9yKGEuZ2V0KG8sbyk8MCYmKHQ9LXQpLGU9bztlPHI7ZSsrKWEuc2V0KGUsbyxhLmdldChlLG8pL3QpO2ZvcihhLnNldChvLG8sYS5nZXQobyxvKSsxKSxuPW8rMTtuPHM7bisrKXtmb3IoaT0wLGU9bztlPHI7ZSsrKWkrPWEuZ2V0KGUsbykqYS5nZXQoZSxuKTtmb3IoaT0taS9hLmdldChvLG8pLGU9bztlPHI7ZSsrKWEuc2V0KGUsbixhLmdldChlLG4pK2kqYS5nZXQoZSxvKSl9fWxbb109LXR9dGhpcy5RUj1hLHRoaXMuUmRpYWc9bH1zb2x2ZSh0KXt0PWl2dC5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLlFSLG49ZS5yb3dzO2lmKHQucm93cyE9PW4pdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggcm93IGRpbWVuc2lvbnMgbXVzdCBhZ3JlZSIpO2lmKCF0aGlzLmlzRnVsbFJhbmsoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBpcyByYW5rIGRlZmljaWVudCIpO2xldCBvLGksYSxyLHM9dC5jb2x1bW5zLGw9dC5jbG9uZSgpLGM9ZS5jb2x1bW5zO2ZvcihhPTA7YTxjO2ErKylmb3IoaT0wO2k8cztpKyspe2ZvcihyPTAsbz1hO288bjtvKyspcis9ZS5nZXQobyxhKSpsLmdldChvLGkpO2ZvcihyPS1yL2UuZ2V0KGEsYSksbz1hO288bjtvKyspbC5zZXQobyxpLGwuZ2V0KG8saSkrciplLmdldChvLGEpKX1mb3IoYT1jLTE7YT49MDthLS0pe2ZvcihpPTA7aTxzO2krKylsLnNldChhLGksbC5nZXQoYSxpKS90aGlzLlJkaWFnW2FdKTtmb3Iobz0wO288YTtvKyspZm9yKGk9MDtpPHM7aSsrKWwuc2V0KG8saSxsLmdldChvLGkpLWwuZ2V0KGEsaSkqZS5nZXQobyxhKSl9cmV0dXJuIGwuc3ViTWF0cml4KDAsYy0xLDAscy0xKX1pc0Z1bGxSYW5rKCl7bGV0IHQ9dGhpcy5RUi5jb2x1bW5zO2ZvcihsZXQgZT0wO2U8dDtlKyspaWYoMD09PXRoaXMuUmRpYWdbZV0pcmV0dXJuITE7cmV0dXJuITB9Z2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0LGUsbj10aGlzLlFSLG89bi5jb2x1bW5zLGk9bmV3IGl2dChvLG8pO2Zvcih0PTA7dDxvO3QrKylmb3IoZT0wO2U8bztlKyspaS5zZXQodCxlLHQ8ZT9uLmdldCh0LGUpOnQ9PT1lP3RoaXMuUmRpYWdbdF06MCk7cmV0dXJuIGl9Z2V0IG9ydGhvZ29uYWxNYXRyaXgoKXtsZXQgdCxlLG4sbyxpPXRoaXMuUVIsYT1pLnJvd3Mscj1pLmNvbHVtbnMscz1uZXcgaXZ0KGEscik7Zm9yKG49ci0xO24+PTA7bi0tKXtmb3IodD0wO3Q8YTt0Kyspcy5zZXQodCxuLDApO2ZvcihzLnNldChuLG4sMSksZT1uO2U8cjtlKyspaWYoMCE9PWkuZ2V0KG4sbikpe2ZvcihvPTAsdD1uO3Q8YTt0Kyspbys9aS5nZXQodCxuKSpzLmdldCh0LGUpO2ZvcihvPS1vL2kuZ2V0KG4sbiksdD1uO3Q8YTt0Kyspcy5zZXQodCxlLHMuZ2V0KHQsZSkrbyppLmdldCh0LG4pKX19cmV0dXJuIHN9fWNsYXNzIGR2dHtjb25zdHJ1Y3Rvcih0LGU9e30pe2lmKCh0PXJ2dC5jaGVja01hdHJpeCh0KSkuaXNFbXB0eSgpKXRocm93IG5ldyBFcnJvcigiTWF0cml4IG11c3QgYmUgbm9uLWVtcHR5Iik7bGV0IG49dC5yb3dzLG89dC5jb2x1bW5zO2NvbnN0e2NvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzOmk9ITAsY29tcHV0ZVJpZ2h0U2luZ3VsYXJWZWN0b3JzOmE9ITAsYXV0b1RyYW5zcG9zZTpyPSExfT1lO2xldCBzLGw9Qm9vbGVhbihpKSxjPUJvb2xlYW4oYSksZD0hMTtpZihuPG8paWYocil7cz10LnRyYW5zcG9zZSgpLG49cy5yb3dzLG89cy5jb2x1bW5zLGQ9ITA7bGV0IGU9bDtsPWMsYz1lfWVsc2Ugcz10LmNsb25lKCksY29uc29sZS53YXJuKCJDb21wdXRpbmcgU1ZEIG9uIGEgbWF0cml4IHdpdGggbW9yZSBjb2x1bW5zIHRoYW4gcm93cy4gQ29uc2lkZXIgZW5hYmxpbmcgYXV0b1RyYW5zcG9zZSIpO2Vsc2Ugcz10LmNsb25lKCk7bGV0IHA9TWF0aC5taW4obixvKSxtPU1hdGgubWluKG4rMSxvKSx1PW5ldyBGbG9hdDY0QXJyYXkobSksZj1uZXcgaXZ0KG4scCksZz1uZXcgaXZ0KG8sbyksaD1uZXcgRmxvYXQ2NEFycmF5KG8pLGI9bmV3IEZsb2F0NjRBcnJheShuKSx5PW5ldyBGbG9hdDY0QXJyYXkobSk7Zm9yKGxldCB0PTA7dDxtO3QrKyl5W3RdPXQ7bGV0IF89TWF0aC5taW4obi0xLG8pLEM9TWF0aC5tYXgoMCxNYXRoLm1pbihvLTIsbikpLE09TWF0aC5tYXgoXyxDKTtmb3IobGV0IHQ9MDt0PE07dCsrKXtpZih0PF8pe3VbdF09MDtmb3IobGV0IGU9dDtlPG47ZSsrKXVbdF09bHZ0KHVbdF0scy5nZXQoZSx0KSk7aWYoMCE9PXVbdF0pe3MuZ2V0KHQsdCk8MCYmKHVbdF09LXVbdF0pO2ZvcihsZXQgZT10O2U8bjtlKyspcy5zZXQoZSx0LHMuZ2V0KGUsdCkvdVt0XSk7cy5zZXQodCx0LHMuZ2V0KHQsdCkrMSl9dVt0XT0tdVt0XX1mb3IobGV0IGU9dCsxO2U8bztlKyspe2lmKHQ8XyYmMCE9PXVbdF0pe2xldCBvPTA7Zm9yKGxldCBpPXQ7aTxuO2krKylvKz1zLmdldChpLHQpKnMuZ2V0KGksZSk7bz0tby9zLmdldCh0LHQpO2ZvcihsZXQgaT10O2k8bjtpKyspcy5zZXQoaSxlLHMuZ2V0KGksZSkrbypzLmdldChpLHQpKX1oW2VdPXMuZ2V0KHQsZSl9aWYobCYmdDxfKWZvcihsZXQgZT10O2U8bjtlKyspZi5zZXQoZSx0LHMuZ2V0KGUsdCkpO2lmKHQ8Qyl7aFt0XT0wO2ZvcihsZXQgZT10KzE7ZTxvO2UrKyloW3RdPWx2dChoW3RdLGhbZV0pO2lmKDAhPT1oW3RdKXtoW3QrMV08MCYmKGhbdF09MC1oW3RdKTtmb3IobGV0IGU9dCsxO2U8bztlKyspaFtlXS89aFt0XTtoW3QrMV0rPTF9aWYoaFt0XT0taFt0XSx0KzE8biYmMCE9PWhbdF0pe2ZvcihsZXQgZT10KzE7ZTxuO2UrKyliW2VdPTA7Zm9yKGxldCBlPXQrMTtlPG47ZSsrKWZvcihsZXQgbj10KzE7bjxvO24rKyliW2VdKz1oW25dKnMuZ2V0KGUsbik7Zm9yKGxldCBlPXQrMTtlPG87ZSsrKXtsZXQgbz0taFtlXS9oW3QrMV07Zm9yKGxldCBpPXQrMTtpPG47aSsrKXMuc2V0KGksZSxzLmdldChpLGUpK28qYltpXSl9fWlmKGMpZm9yKGxldCBlPXQrMTtlPG87ZSsrKWcuc2V0KGUsdCxoW2VdKX19bGV0IHY9TWF0aC5taW4obyxuKzEpO2lmKF88byYmKHVbX109cy5nZXQoXyxfKSksbjx2JiYodVt2LTFdPTApLEMrMTx2JiYoaFtDXT1zLmdldChDLHYtMSkpLGhbdi0xXT0wLGwpe2ZvcihsZXQgdD1fO3Q8cDt0Kyspe2ZvcihsZXQgZT0wO2U8bjtlKyspZi5zZXQoZSx0LDApO2Yuc2V0KHQsdCwxKX1mb3IobGV0IHQ9Xy0xO3Q+PTA7dC0tKWlmKDAhPT11W3RdKXtmb3IobGV0IGU9dCsxO2U8cDtlKyspe2xldCBvPTA7Zm9yKGxldCBpPXQ7aTxuO2krKylvKz1mLmdldChpLHQpKmYuZ2V0KGksZSk7bz0tby9mLmdldCh0LHQpO2ZvcihsZXQgaT10O2k8bjtpKyspZi5zZXQoaSxlLGYuZ2V0KGksZSkrbypmLmdldChpLHQpKX1mb3IobGV0IGU9dDtlPG47ZSsrKWYuc2V0KGUsdCwtZi5nZXQoZSx0KSk7Zi5zZXQodCx0LDErZi5nZXQodCx0KSk7Zm9yKGxldCBlPTA7ZTx0LTE7ZSsrKWYuc2V0KGUsdCwwKX1lbHNle2ZvcihsZXQgZT0wO2U8bjtlKyspZi5zZXQoZSx0LDApO2Yuc2V0KHQsdCwxKX19aWYoYylmb3IobGV0IHQ9by0xO3Q+PTA7dC0tKXtpZih0PEMmJjAhPT1oW3RdKWZvcihsZXQgZT10KzE7ZTxvO2UrKyl7bGV0IG49MDtmb3IobGV0IGk9dCsxO2k8bztpKyspbis9Zy5nZXQoaSx0KSpnLmdldChpLGUpO249LW4vZy5nZXQodCsxLHQpO2ZvcihsZXQgaT10KzE7aTxvO2krKylnLnNldChpLGUsZy5nZXQoaSxlKStuKmcuZ2V0KGksdCkpfWZvcihsZXQgZT0wO2U8bztlKyspZy5zZXQoZSx0LDApO2cuc2V0KHQsdCwxKX1sZXQgeD12LTEsTz1OdW1iZXIuRVBTSUxPTjtmb3IoO3Y+MDspe2xldCB0LGU7Zm9yKHQ9di0yO3Q+PS0xJiYtMSE9PXQ7dC0tKXtjb25zdCBlPU51bWJlci5NSU5fVkFMVUUrTypNYXRoLmFicyh1W3RdK01hdGguYWJzKHVbdCsxXSkpO2lmKE1hdGguYWJzKGhbdF0pPD1lfHxOdW1iZXIuaXNOYU4oaFt0XSkpe2hbdF09MDticmVha319aWYodD09PXYtMillPTQ7ZWxzZXtsZXQgbjtmb3Iobj12LTE7bj49dCYmbiE9PXQ7bi0tKXtsZXQgZT0obiE9PXY/TWF0aC5hYnMoaFtuXSk6MCkrKG4hPT10KzE/TWF0aC5hYnMoaFtuLTFdKTowKTtpZihNYXRoLmFicyh1W25dKTw9TyplKXt1W25dPTA7YnJlYWt9fW49PT10P2U9MzpuPT09di0xP2U9MTooZT0yLHQ9bil9c3dpdGNoKHQrKyxlKXtjYXNlIDE6e2xldCBlPWhbdi0yXTtoW3YtMl09MDtmb3IobGV0IG49di0yO24+PXQ7bi0tKXtsZXQgaT1sdnQodVtuXSxlKSxhPXVbbl0vaSxyPWUvaTtpZih1W25dPWksbiE9PXQmJihlPS1yKmhbbi0xXSxoW24tMV09YSpoW24tMV0pLGMpZm9yKGxldCB0PTA7dDxvO3QrKylpPWEqZy5nZXQodCxuKStyKmcuZ2V0KHQsdi0xKSxnLnNldCh0LHYtMSwtcipnLmdldCh0LG4pK2EqZy5nZXQodCx2LTEpKSxnLnNldCh0LG4saSl9YnJlYWt9Y2FzZSAyOntsZXQgZT1oW3QtMV07aFt0LTFdPTA7Zm9yKGxldCBvPXQ7bzx2O28rKyl7bGV0IGk9bHZ0KHVbb10sZSksYT11W29dL2kscj1lL2k7aWYodVtvXT1pLGU9LXIqaFtvXSxoW29dPWEqaFtvXSxsKWZvcihsZXQgZT0wO2U8bjtlKyspaT1hKmYuZ2V0KGUsbykrcipmLmdldChlLHQtMSksZi5zZXQoZSx0LTEsLXIqZi5nZXQoZSxvKSthKmYuZ2V0KGUsdC0xKSksZi5zZXQoZSxvLGkpfWJyZWFrfWNhc2UgMzp7Y29uc3QgZT1NYXRoLm1heChNYXRoLmFicyh1W3YtMV0pLE1hdGguYWJzKHVbdi0yXSksTWF0aC5hYnMoaFt2LTJdKSxNYXRoLmFicyh1W3RdKSxNYXRoLmFicyhoW3RdKSksaT11W3YtMV0vZSxhPXVbdi0yXS9lLHI9aFt2LTJdL2Uscz11W3RdL2UsZD1oW3RdL2UscD0oKGEraSkqKGEtaSkrcipyKS8yLG09aSpyKihpKnIpO2xldCBiPTA7MD09PXAmJjA9PT1tfHwoYj1wPDA/MC1NYXRoLnNxcnQocCpwK20pOk1hdGguc3FydChwKnArbSksYj1tLyhwK2IpKTtsZXQgeT0ocytpKSoocy1pKStiLF89cypkO2ZvcihsZXQgZT10O2U8di0xO2UrKyl7bGV0IGk9bHZ0KHksXyk7MD09PWkmJihpPU51bWJlci5NSU5fVkFMVUUpO2xldCBhPXkvaSxyPV8vaTtpZihlIT09dCYmKGhbZS0xXT1pKSx5PWEqdVtlXStyKmhbZV0saFtlXT1hKmhbZV0tcip1W2VdLF89cip1W2UrMV0sdVtlKzFdPWEqdVtlKzFdLGMpZm9yKGxldCB0PTA7dDxvO3QrKylpPWEqZy5nZXQodCxlKStyKmcuZ2V0KHQsZSsxKSxnLnNldCh0LGUrMSwtcipnLmdldCh0LGUpK2EqZy5nZXQodCxlKzEpKSxnLnNldCh0LGUsaSk7aWYoaT1sdnQoeSxfKSwwPT09aSYmKGk9TnVtYmVyLk1JTl9WQUxVRSksYT15L2kscj1fL2ksdVtlXT1pLHk9YSpoW2VdK3IqdVtlKzFdLHVbZSsxXT0tcipoW2VdK2EqdVtlKzFdLF89cipoW2UrMV0saFtlKzFdPWEqaFtlKzFdLGwmJmU8bi0xKWZvcihsZXQgdD0wO3Q8bjt0KyspaT1hKmYuZ2V0KHQsZSkrcipmLmdldCh0LGUrMSksZi5zZXQodCxlKzEsLXIqZi5nZXQodCxlKSthKmYuZ2V0KHQsZSsxKSksZi5zZXQodCxlLGkpfWhbdi0yXT15O2JyZWFrfWNhc2UgNDppZih1W3RdPD0wJiYodVt0XT11W3RdPDA/LXVbdF06MCxjKSlmb3IobGV0IGU9MDtlPD14O2UrKylnLnNldChlLHQsLWcuZ2V0KGUsdCkpO2Zvcig7dDx4JiYhKHVbdF0+PXVbdCsxXSk7KXtsZXQgZT11W3RdO2lmKHVbdF09dVt0KzFdLHVbdCsxXT1lLGMmJnQ8by0xKWZvcihsZXQgbj0wO248bztuKyspZT1nLmdldChuLHQrMSksZy5zZXQobix0KzEsZy5nZXQobix0KSksZy5zZXQobix0LGUpO2lmKGwmJnQ8bi0xKWZvcihsZXQgbz0wO288bjtvKyspZT1mLmdldChvLHQrMSksZi5zZXQobyx0KzEsZi5nZXQobyx0KSksZi5zZXQobyx0LGUpO3QrK312LS19fWlmKGQpe2xldCB0PWc7Zz1mLGY9dH10aGlzLm09bix0aGlzLm49byx0aGlzLnM9dSx0aGlzLlU9Zix0aGlzLlY9Z31zb2x2ZSh0KXtsZXQgZT10LG49dGhpcy50aHJlc2hvbGQsbz10aGlzLnMubGVuZ3RoLGk9aXZ0Lnplcm9zKG8sbyk7Zm9yKGxldCB0PTA7dDxvO3QrKylNYXRoLmFicyh0aGlzLnNbdF0pPD1uP2kuc2V0KHQsdCwwKTppLnNldCh0LHQsMS90aGlzLnNbdF0pO2xldCBhPXRoaXMuVSxyPXRoaXMucmlnaHRTaW5ndWxhclZlY3RvcnMscz1yLm1tdWwoaSksbD1yLnJvd3MsYz1hLnJvd3MsZD1pdnQuemVyb3MobCxjKTtmb3IobGV0IHQ9MDt0PGw7dCsrKWZvcihsZXQgZT0wO2U8YztlKyspe2xldCBuPTA7Zm9yKGxldCBpPTA7aTxvO2krKyluKz1zLmdldCh0LGkpKmEuZ2V0KGUsaSk7ZC5zZXQodCxlLG4pfXJldHVybiBkLm1tdWwoZSl9c29sdmVGb3JEaWFnb25hbCh0KXtyZXR1cm4gdGhpcy5zb2x2ZShpdnQuZGlhZyh0KSl9aW52ZXJzZSgpe2xldCB0PXRoaXMuVixlPXRoaXMudGhyZXNob2xkLG49dC5yb3dzLG89dC5jb2x1bW5zLGk9bmV3IGl2dChuLHRoaXMucy5sZW5ndGgpO2ZvcihsZXQgYT0wO2E8bjthKyspZm9yKGxldCBuPTA7bjxvO24rKylNYXRoLmFicyh0aGlzLnNbbl0pPmUmJmkuc2V0KGEsbix0LmdldChhLG4pL3RoaXMuc1tuXSk7bGV0IGE9dGhpcy5VLHI9YS5yb3dzLHM9YS5jb2x1bW5zLGw9bmV3IGl2dChuLHIpO2ZvcihsZXQgdD0wO3Q8bjt0KyspZm9yKGxldCBlPTA7ZTxyO2UrKyl7bGV0IG49MDtmb3IobGV0IG89MDtvPHM7bysrKW4rPWkuZ2V0KHQsbykqYS5nZXQoZSxvKTtsLnNldCh0LGUsbil9cmV0dXJuIGx9Z2V0IGNvbmRpdGlvbigpe3JldHVybiB0aGlzLnNbMF0vdGhpcy5zW01hdGgubWluKHRoaXMubSx0aGlzLm4pLTFdfWdldCBub3JtMigpe3JldHVybiB0aGlzLnNbMF19Z2V0IHJhbmsoKXtsZXQgdD1NYXRoLm1heCh0aGlzLm0sdGhpcy5uKSp0aGlzLnNbMF0qTnVtYmVyLkVQU0lMT04sZT0wLG49dGhpcy5zO2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7bzxpO28rKyluW29dPnQmJmUrKztyZXR1cm4gZX1nZXQgZGlhZ29uYWwoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnMpfWdldCB0aHJlc2hvbGQoKXtyZXR1cm4gTnVtYmVyLkVQU0lMT04vMipNYXRoLm1heCh0aGlzLm0sdGhpcy5uKSp0aGlzLnNbMF19Z2V0IGxlZnRTaW5ndWxhclZlY3RvcnMoKXtyZXR1cm4gdGhpcy5VfWdldCByaWdodFNpbmd1bGFyVmVjdG9ycygpe3JldHVybiB0aGlzLlZ9Z2V0IGRpYWdvbmFsTWF0cml4KCl7cmV0dXJuIGl2dC5kaWFnKHRoaXMucyl9fWZ1bmN0aW9uIHB2dCh0LGUsbixvLGkpe2xldCBhPWl2dC5leWUoZS5sZW5ndGgsZS5sZW5ndGgsbipvKm8pO2NvbnN0IHI9aShlKTtsZXQgcz1uZXcgRmxvYXQ2NEFycmF5KHQueC5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dC54Lmxlbmd0aDtlKyspc1tlXT1yKHQueFtlXSk7bGV0IGw9KGZ1bmN0aW9uIGModCxlLG4sbyxpKXtjb25zdCBhPW4ubGVuZ3RoLHI9dC54Lmxlbmd0aDtsZXQgcz1uZXcgQXJyYXkoYSk7Zm9yKGxldCBsPTA7bDxhO2wrKyl7c1tsXT1uZXcgQXJyYXkocik7bGV0IGE9bi5zbGljZSgpO2FbbF0rPW87bGV0IGM9aShhKTtmb3IobGV0IG49MDtuPHI7bisrKXNbbF1bbl09ZVtuXS1jKHQueFtuXSl9cmV0dXJuIG5ldyBpdnQocyl9KSh0LHMsZSxvLGkpLGQ9KGZ1bmN0aW9uIHAodCxlKXtjb25zdCBuPXQueC5sZW5ndGg7bGV0IG89bmV3IEFycmF5KG4pO2ZvcihsZXQgaT0wO2k8bjtpKyspb1tpXT1bdC55W2ldLWVbaV1dO3JldHVybiBuZXcgaXZ0KG8pfSkodCxzKSxtPShmdW5jdGlvbiB1KHQsZT0hMSl7cmV0dXJuIHQ9cnZ0LmNoZWNrTWF0cml4KHQpLGU/bmV3IGR2dCh0KS5pbnZlcnNlKCk6KGZ1bmN0aW9uIG4odCxlLG89ITEpe3JldHVybiB0PXJ2dC5jaGVja01hdHJpeCh0KSxlPXJ2dC5jaGVja01hdHJpeChlKSxvP25ldyBkdnQodCkuc29sdmUoZSk6dC5pc1NxdWFyZSgpP25ldyBzdnQodCkuc29sdmUoZSk6bmV3IGN2dCh0KS5zb2x2ZShlKX0pKHQsaXZ0LmV5ZSh0LnJvd3MpKX0pKGEuYWRkKGwubW11bChsLnRyYW5zcG9zZSgpKSkpO3JldHVybihlPShlPW5ldyBpdnQoW2VdKSkuc3ViKG0ubW11bChsKS5tbXVsKGQpLm11bChvKS50cmFuc3Bvc2UoKSkpLnRvMURBcnJheSgpfXZhciBtdnQ9JHYoT2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZGVmYXVsdDpmdW5jdGlvbiB1dnQodCxlLG49e30pe2xldHttYXhJdGVyYXRpb25zOm89MTAwLGdyYWRpZW50RGlmZmVyZW5jZTppPS4xLGRhbXBpbmc6YT0wLGVycm9yVG9sZXJhbmNlOnI9LjAxLG1pblZhbHVlczpzLG1heFZhbHVlczpsLGluaXRpYWxWYWx1ZXM6Y309bjtpZihhPD0wKXRocm93IG5ldyBFcnJvcigiVGhlIGRhbXBpbmcgb3B0aW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKTtpZighdC54fHwhdC55KXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIG11c3QgaGF2ZSB4IGFuZCB5IGVsZW1lbnRzIik7aWYoIU5NdCh0LngpfHx0LngubGVuZ3RoPDJ8fCFOTXQodC55KXx8dC55Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBtb3JlIHRoYW4gMiBwb2ludHMiKTtpZih0LngubGVuZ3RoIT09dC55Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZSIpO2xldCBkPWN8fG5ldyBBcnJheShlLmxlbmd0aCkuZmlsbCgxKSxwPWQubGVuZ3RoO2lmKGw9bHx8bmV3IEFycmF5KHApLmZpbGwoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLHM9c3x8bmV3IEFycmF5KHApLmZpbGwoTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpLGwubGVuZ3RoIT09cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJtaW5WYWx1ZXMgYW5kIG1heFZhbHVlcyBtdXN0IGJlIHRoZSBzYW1lIHNpemUiKTtpZighTk10KGQpKXRocm93IG5ldyBFcnJvcigiaW5pdGlhbFZhbHVlcyBtdXN0IGJlIGFuIGFycmF5Iik7bGV0IG0sdT16TXQodCxkLGUpLGY9dTw9cjtmb3IobT0wO208byYmIWY7bSsrKXtkPXB2dCh0LGQsYSxpLGUpO2ZvcihsZXQgdD0wO3Q8cDt0KyspZFt0XT1NYXRoLm1pbihNYXRoLm1heChzW3RdLGRbdF0pLGxbdF0pO2lmKHU9ek10KHQsZCxlKSxpc05hTih1KSlicmVhaztmPXU8PXJ9cmV0dXJue3BhcmFtZXRlclZhbHVlczpkLHBhcmFtZXRlckVycm9yOnUsaXRlcmF0aW9uczptfX19KSksZnZ0PVF2JiZRdi5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihpLGEpe2Z1bmN0aW9uIHIodCl7dHJ5e2woby5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKG8udGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP2kodC52YWx1ZSk6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodC52YWx1ZSl9KSkudGhlbihyLHMpfWwoKG89by5hcHBseSh0LGV8fFtdKSkubmV4dCgpKX0pKX0sZ3Z0PVF2JiZRdi5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odCxlKXt2YXIgbixvLGksYSxyPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJmlbMF0pdGhyb3cgaVsxXTtyZXR1cm4gaVsxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGEpe3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4oZnVuY3Rpb24gbChhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO3I7KXRyeXtpZihuPTEsbyYmKGk9MiZhWzBdP28ucmV0dXJuOmFbMF0/by50aHJvd3x8KChpPW8ucmV0dXJuKSYmaS5jYWxsKG8pLDApOm8ubmV4dCkmJiEoaT1pLmNhbGwobyxhWzFdKSkuZG9uZSlyZXR1cm4gaTtzd2l0Y2gobz0wLGkmJihhPVsyJmFbMF0saS52YWx1ZV0pLGFbMF0pe2Nhc2UgMDpjYXNlIDE6aT1hO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTphWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKyssbz1hWzFdLGE9WzBdO2NvbnRpbnVlO2Nhc2UgNzphPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKGk9KGk9ci50cnlzKS5sZW5ndGg+MCYmaVtpLmxlbmd0aC0xXSl8fDYhPT1hWzBdJiYyIT09YVswXSkpe3I9MDtjb250aW51ZX1pZigzPT09YVswXSYmKCFpfHxhWzFdPmlbMF0mJmFbMV08aVszXSkpe3IubGFiZWw9YVsxXTticmVha31pZig2PT09YVswXSYmci5sYWJlbDxpWzFdKXtyLmxhYmVsPWlbMV0saT1hO2JyZWFrfWlmKGkmJnIubGFiZWw8aVsyXSl7ci5sYWJlbD1pWzJdLHIub3BzLnB1c2goYSk7YnJlYWt9aVsyXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWE9ZS5jYWxsKHQscil9Y2F0Y2godCl7YT1bNix0XSxvPTB9ZmluYWxseXtuPWk9MH1pZig1JmFbMF0pdGhyb3cgYVsxXTtyZXR1cm57dmFsdWU6YVswXT9hWzFdOnZvaWQgMCxkb25lOiEwfX0pKFthLHNdKX19fSxodnQ9UXYmJlF2Ll9fcmVhZHx8ZnVuY3Rpb24odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIG8saSxhPW4uY2FsbCh0KSxyPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKG89YS5uZXh0KCkpLmRvbmU7KXIucHVzaChvLnZhbHVlKX1jYXRjaCh0KXtpPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtvJiYhby5kb25lJiYobj1hLnJldHVybikmJm4uY2FsbChhKX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19cmV0dXJuIHJ9LGJ2dD1RdiYmUXYuX19zcHJlYWR8fGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoaHZ0KGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fSx5dnQ9UXYmJlF2Ll9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9LF92dD1RdiYmUXYuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1Q3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBDdnQ9eXZ0KGZDdCksTXZ0PXl2dChVQ3QpLHZ2dD15dnQoc010KSx4dnQ9eXZ0KGxNdCksT3Z0PXl2dChnQ3QpLFB2dD1fdnQobXZ0KSx3dnQ9MWUtNSxrdnQ9LjAwMSxTdnQ9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIGU9dGhpczt0aGlzLmxlYXJuaW5nUmF0ZT0xLHRoaXMubG9jYWxDb25uZWN0aXZpdHk9MSx0aGlzLm1pbkRpc3Q9LjEsdGhpcy5uQ29tcG9uZW50cz0yLHRoaXMubkVwb2Nocz0wLHRoaXMubk5laWdoYm9ycz0xNSx0aGlzLm5lZ2F0aXZlU2FtcGxlUmF0ZT01LHRoaXMucmFuZG9tPU1hdGgucmFuZG9tLHRoaXMucmVwdWxzaW9uU3RyZW5ndGg9MSx0aGlzLnNldE9wTWl4UmF0aW89MSx0aGlzLnNwcmVhZD0xLHRoaXMudHJhbnNmb3JtUXVldWVTaXplPTQsdGhpcy50YXJnZXRNZXRyaWM9ImNhdGVnb3JpY2FsIix0aGlzLnRhcmdldFdlaWdodD0uNSx0aGlzLnRhcmdldE5OZWlnaGJvcnM9dGhpcy5uTmVpZ2hib3JzLHRoaXMuZGlzdGFuY2VGbj1EdnQsdGhpcy5pc0luaXRpYWxpemVkPSExLHRoaXMucnBGb3Jlc3Q9W10sdGhpcy5lbWJlZGRpbmc9W10sdGhpcy5vcHRpbWl6YXRpb25TdGF0ZT1uZXcgUnZ0O3ZhciBuPWZ1bmN0aW9uKG4pe3ZvaWQgMCE9PXRbbl0mJihlW25dPXRbbl0pfTtuKCJkaXN0YW5jZUZuIiksbigibGVhcm5pbmdSYXRlIiksbigibG9jYWxDb25uZWN0aXZpdHkiKSxuKCJtaW5EaXN0IiksbigibkNvbXBvbmVudHMiKSxuKCJuRXBvY2hzIiksbigibk5laWdoYm9ycyIpLG4oIm5lZ2F0aXZlU2FtcGxlUmF0ZSIpLG4oInJhbmRvbSIpLG4oInJlcHVsc2lvblN0cmVuZ3RoIiksbigic2V0T3BNaXhSYXRpbyIpLG4oInNwcmVhZCIpLG4oInRyYW5zZm9ybVF1ZXVlU2l6ZSIpfXJldHVybiB0LnByb3RvdHlwZS5maXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUZpdCh0KSx0aGlzLm9wdGltaXplTGF5b3V0KCksdGhpcy5lbWJlZGRpbmd9LHQucHJvdG90eXBlLmZpdEFzeW5jPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPWZ1bmN0aW9uKCl7cmV0dXJuITB9KSxmdnQodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBndnQodGhpcywoZnVuY3Rpb24obil7c3dpdGNoKG4ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gdGhpcy5pbml0aWFsaXplRml0KHQpLFs0LHRoaXMub3B0aW1pemVMYXlvdXRBc3luYyhlKV07Y2FzZSAxOnJldHVybiBuLnNlbnQoKSxbMix0aGlzLmVtYmVkZGluZ119fSkpfSkpfSx0LnByb3RvdHlwZS5zZXRTdXBlcnZpc2VkUHJvamVjdGlvbj1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXt9KSx0aGlzLlk9dCx0aGlzLnRhcmdldE1ldHJpYz1lLnRhcmdldE1ldHJpY3x8dGhpcy50YXJnZXRNZXRyaWMsdGhpcy50YXJnZXRXZWlnaHQ9ZS50YXJnZXRXZWlnaHR8fHRoaXMudGFyZ2V0V2VpZ2h0LHRoaXMudGFyZ2V0Tk5laWdoYm9ycz1lLnRhcmdldE5OZWlnaGJvcnN8fHRoaXMudGFyZ2V0Tk5laWdoYm9yc30sdC5wcm90b3R5cGUuc2V0UHJlY29tcHV0ZWRLTk49ZnVuY3Rpb24odCxlKXt0aGlzLmtubkluZGljZXM9dCx0aGlzLmtubkRpc3RhbmNlcz1lfSx0LnByb3RvdHlwZS5pbml0aWFsaXplRml0PWZ1bmN0aW9uKHQpe2lmKHQubGVuZ3RoPD10aGlzLm5OZWlnaGJvcnMpdGhyb3cgbmV3IEVycm9yKCJOb3QgZW5vdWdoIGRhdGEgcG9pbnRzICgiK3QubGVuZ3RoKyIpIHRvIGNyZWF0ZSBuTmVpZ2hib3JzOiAiK3RoaXMubk5laWdoYm9ycysiLiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLiIpO2lmKHRoaXMuWD09PXQmJnRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdGhpcy5nZXRORXBvY2hzKCk7aWYodGhpcy5YPXQsIXRoaXMua25uSW5kaWNlcyYmIXRoaXMua25uRGlzdGFuY2VzKXt2YXIgZT10aGlzLm5lYXJlc3ROZWlnaGJvcnModCk7dGhpcy5rbm5JbmRpY2VzPWUua25uSW5kaWNlcyx0aGlzLmtubkRpc3RhbmNlcz1lLmtubkRpc3RhbmNlc310aGlzLmdyYXBoPXRoaXMuZnV6enlTaW1wbGljaWFsU2V0KHQsdGhpcy5uTmVpZ2hib3JzLHRoaXMuc2V0T3BNaXhSYXRpbyksdGhpcy5tYWtlU2VhcmNoRm5zKCksdGhpcy5zZWFyY2hHcmFwaD10aGlzLm1ha2VTZWFyY2hHcmFwaCh0KSx0aGlzLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uKCk7dmFyIG49dGhpcy5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZygpLG89bi50YWlsLGk9bi5lcG9jaHNQZXJTYW1wbGU7cmV0dXJuIHRoaXMub3B0aW1pemF0aW9uU3RhdGUuaGVhZD1uLmhlYWQsdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS50YWlsPW8sdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGU9aSx0aGlzLmluaXRpYWxpemVPcHRpbWl6YXRpb24oKSx0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCksdGhpcy5pc0luaXRpYWxpemVkPSEwLHRoaXMuZ2V0TkVwb2NocygpfSx0LnByb3RvdHlwZS5tYWtlU2VhcmNoRm5zPWZ1bmN0aW9uKCl7dmFyIHQ9dnZ0Lm1ha2VJbml0aWFsaXphdGlvbnModGhpcy5kaXN0YW5jZUZuKSxlPXQuaW5pdEZyb21SYW5kb207dGhpcy5pbml0RnJvbVRyZWU9dC5pbml0RnJvbVRyZWUsdGhpcy5pbml0RnJvbVJhbmRvbT1lLHRoaXMuc2VhcmNoPXZ2dC5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCh0aGlzLmRpc3RhbmNlRm4pfSx0LnByb3RvdHlwZS5tYWtlU2VhcmNoR3JhcGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMua25uSW5kaWNlcyxuPXRoaXMua25uRGlzdGFuY2VzLG89bmV3IE12dC5TcGFyc2VNYXRyaXgoW10sW10sW10sW3QubGVuZ3RoLHQubGVuZ3RoXSksaT0wO2k8ZS5sZW5ndGg7aSsrKWZvcih2YXIgYT1lW2ldLHI9bltpXSxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPXJbc107bD4wJiZvLnNldChpLGFbc10sbCl9dmFyIGM9TXZ0LnRyYW5zcG9zZShvKTtyZXR1cm4gTXZ0Lm1heGltdW0obyxjKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLlg7aWYodm9pZCAwPT09bnx8MD09PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTm8gZGF0YSBoYXMgYmVlbiBmaXQuIik7dmFyIG89TWF0aC5mbG9vcih0aGlzLm5OZWlnaGJvcnMqdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO289TWF0aC5taW4obi5sZW5ndGgsbyk7dmFyIGk9dnZ0LmluaXRpYWxpemVTZWFyY2godGhpcy5ycEZvcmVzdCxuLHQsbyx0aGlzLmluaXRGcm9tUmFuZG9tLHRoaXMuaW5pdEZyb21UcmVlLHRoaXMucmFuZG9tKSxhPXRoaXMuc2VhcmNoKG4sdGhpcy5zZWFyY2hHcmFwaCxpLHQpLHI9Q3Z0LmRlaGVhcFNvcnQoYSkscz1yLmluZGljZXMsbD1yLndlaWdodHM7cz1zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMCxlLm5OZWlnaGJvcnMpfSkpLGw9bC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDAsZS5uTmVpZ2hib3JzKX0pKTt2YXIgYz1NYXRoLm1heCgwLHRoaXMubG9jYWxDb25uZWN0aXZpdHktMSksZD10aGlzLnNtb290aEtOTkRpc3RhbmNlKGwsdGhpcy5uTmVpZ2hib3JzLGMpLHA9dGhpcy5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyhzLGwsZC5zaWdtYXMsZC5yaG9zKSxtPW5ldyBNdnQuU3BhcnNlTWF0cml4KHAucm93cyxwLmNvbHMscC52YWxzLFt0Lmxlbmd0aCxuLmxlbmd0aF0pLHU9TXZ0Lm5vcm1hbGl6ZShtLCJsMSIpLGY9TXZ0LmdldENTUih1KSxnPXQubGVuZ3RoLGg9SHZ0KE92dC5yZXNoYXBlMmQoZi5pbmRpY2VzLGcsdGhpcy5uTmVpZ2hib3JzKSxPdnQucmVzaGFwZTJkKGYudmFsdWVzLGcsdGhpcy5uTmVpZ2hib3JzKSx0aGlzLmVtYmVkZGluZyksYj10aGlzLm5FcG9jaHM/dGhpcy5uRXBvY2hzLzM6bS5uUm93czw9MWU0PzEwMDozMCx5PW0uZ2V0VmFsdWVzKCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBlPnQ/ZTp0fSksMCk7bT1tLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ8eS9iPzA6dH0pKSxtPU12dC5lbGltaW5hdGVaZXJvcyhtKTt2YXIgXz10aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUobS5nZXRWYWx1ZXMoKSxiKSxDPW0uZ2V0Um93cygpLE09bS5nZXRDb2xzKCk7cmV0dXJuIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtoZWFkRW1iZWRkaW5nOmgsdGFpbEVtYmVkZGluZzp0aGlzLmVtYmVkZGluZyxoZWFkOkMsdGFpbDpNLGN1cnJlbnRFcG9jaDowLG5FcG9jaHM6YixuVmVydGljZXM6bS5nZXREaW1zKClbMV0sZXBvY2hzUGVyU2FtcGxlOl99KSx0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCksdGhpcy5vcHRpbWl6ZUxheW91dCgpfSx0LnByb3RvdHlwZS5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuWTtpZih0KXtpZih0Lmxlbmd0aCE9PXRoaXMuWC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggb2YgWCBhbmQgeSBtdXN0IGJlIGVxdWFsIik7ImNhdGVnb3JpY2FsIj09PXRoaXMudGFyZ2V0TWV0cmljJiYodGhpcy5ncmFwaD10aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLHQsdGhpcy50YXJnZXRXZWlnaHQ8MT8xLygxLXRoaXMudGFyZ2V0V2VpZ2h0KSoyLjU6MWUxMikpfX0sdC5wcm90b3R5cGUuc3RlcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO3JldHVybiB0PHRoaXMuZ2V0TkVwb2NocygpJiZ0aGlzLm9wdGltaXplTGF5b3V0U3RlcCh0KSx0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaH0sdC5wcm90b3R5cGUuZ2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1iZWRkaW5nfSx0LnByb3RvdHlwZS5uZWFyZXN0TmVpZ2hib3JzPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5uTmVpZ2hib3JzLG89dnZ0Lm1ha2VOTkRlc2NlbnQodGhpcy5kaXN0YW5jZUZuLHRoaXMucmFuZG9tKSxpPTUrTWF0aC5mbG9vciguNT09KGU9TWF0aC5wb3codC5sZW5ndGgsLjUpLzIwKT8wOk1hdGgucm91bmQoZSkpLGE9TWF0aC5tYXgoNSxNYXRoLmZsb29yKE1hdGgucm91bmQoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLmxvZygyKX0pKHQubGVuZ3RoKSkpKTt0aGlzLnJwRm9yZXN0PXh2dC5tYWtlRm9yZXN0KHQsbixpLHRoaXMucmFuZG9tKTt2YXIgcj1vKHQseHZ0Lm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCksbixhKTtyZXR1cm57a25uSW5kaWNlczpyLmluZGljZXMsa25uRGlzdGFuY2VzOnIud2VpZ2h0c319LHQucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldD1mdW5jdGlvbih0LGUsbil7dm9pZCAwPT09biYmKG49MSk7dmFyIG89dGhpcyxpPW8ua25uSW5kaWNlcyxhPXZvaWQgMD09PWk/W106aSxyPW8ua25uRGlzdGFuY2VzLHM9dm9pZCAwPT09cj9bXTpyLGw9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShzLGUsby5sb2NhbENvbm5lY3Rpdml0eSksYz10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGEscyxsLnNpZ21hcyxsLnJob3MpLGQ9bmV3IE12dC5TcGFyc2VNYXRyaXgoYy5yb3dzLGMuY29scyxjLnZhbHMsW3QubGVuZ3RoLHQubGVuZ3RoXSkscD1NdnQudHJhbnNwb3NlKGQpLG09TXZ0LnBhaXJ3aXNlTXVsdGlwbHkoZCxwKSx1PU12dC5zdWJ0cmFjdChNdnQuYWRkKGQscCksbSksZj1NdnQubXVsdGlwbHlTY2FsYXIodSxuKSxnPU12dC5tdWx0aXBseVNjYWxhcihtLDEtbik7cmV0dXJuIE12dC5hZGQoZixnKX0sdC5wcm90b3R5cGUuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsZSxuLG8pe3ZvaWQgMD09PW8mJihvPTEpO3ZhciBpPXp2dCh0LGUsbyxuKTtyZXR1cm4gSXZ0KGk9TXZ0LmVsaW1pbmF0ZVplcm9zKGkpKX0sdC5wcm90b3R5cGUuc21vb3RoS05ORGlzdGFuY2U9ZnVuY3Rpb24odCxlLG4sbyxpKXt2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz02NCksdm9pZCAwPT09aSYmKGk9MSk7Zm9yKHZhciBhPU1hdGgubG9nKGUpL01hdGgubG9nKDIpKmkscj1PdnQuemVyb3ModC5sZW5ndGgpLHM9T3Z0Lnplcm9zKHQubGVuZ3RoKSxsPTA7bDx0Lmxlbmd0aDtsKyspe3ZhciBjPTAsZD0xLzAscD0xLG09dFtsXSx1PW0uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdD4wfSkpO2lmKHUubGVuZ3RoPj1uKXt2YXIgZj1NYXRoLmZsb29yKG4pLGc9bi1mO2Y+MD8ocltsXT11W2YtMV0sZz53dnQmJihyW2xdKz1nKih1W2ZdLXVbZi0xXSkpKTpyW2xdPWcqdVswXX1lbHNlIHUubGVuZ3RoPjAmJihyW2xdPU92dC5tYXgodSkpO2Zvcih2YXIgaD0wO2g8bztoKyspe2Zvcih2YXIgYj0wLHk9MTt5PHRbbF0ubGVuZ3RoO3krKyl7dmFyIF89dFtsXVt5XS1yW2xdO2IrPV8+MD9NYXRoLmV4cCgtXy9wKToxfWlmKE1hdGguYWJzKGItYSk8d3Z0KWJyZWFrO2I+YT9wPShjKyhkPXApKS8yOihjPXAsZD09PTEvMD9wKj0yOnA9KGMrZCkvMil9aWYoc1tsXT1wLHJbbF0+MCl7dmFyIEM9T3Z0Lm1lYW4obSk7c1tsXTxrdnQqQyYmKHNbbF09a3Z0KkMpfWVsc2V7dmFyIE09T3Z0Lm1lYW4odC5tYXAoT3Z0Lm1lYW4pKTtzW2xdPGt2dCpNJiYoc1tsXT1rdnQqTSl9fXJldHVybntzaWdtYXM6cyxyaG9zOnJ9fSx0LnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocz1mdW5jdGlvbih0LGUsbixvKXtmb3IodmFyIGk9dC5sZW5ndGgsYT10WzBdLmxlbmd0aCxyPU92dC56ZXJvcyhpKmEpLHM9T3Z0Lnplcm9zKGkqYSksbD1PdnQuemVyb3MoaSphKSxjPTA7YzxpO2MrKylmb3IodmFyIGQ9MDtkPGE7ZCsrKXt2YXIgcD0wOy0xIT09dFtjXVtkXSYmKHA9dFtjXVtkXT09PWM/MDplW2NdW2RdLW9bY108PTA/MTpNYXRoLmV4cCgtKGVbY11bZF0tb1tjXSkvbltjXSkscltjKmErZF09YyxzW2MqYStkXT10W2NdW2RdLGxbYyphK2RdPXApfXJldHVybntyb3dzOnIsY29sczpzLHZhbHM6bH19LHQucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldE5FcG9jaHMoKSxuPXRoaXMubkNvbXBvbmVudHMsbz10aGlzLmdyYXBoLmdldFZhbHVlcygpLGk9MCxhPTA7YTxvLmxlbmd0aDthKyspaTxvW2FdJiYoaT1vW2FdKTt2YXIgcj10aGlzLmdyYXBoLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ8aS9lPzA6dH0pKTt0aGlzLmVtYmVkZGluZz1PdnQuemVyb3Moci5uUm93cykubWFwKChmdW5jdGlvbigpe3JldHVybiBPdnQuemVyb3MobikubWFwKChmdW5jdGlvbigpe3JldHVybiAyMCpPdnQudGF1UmFuZCh0LnJhbmRvbSktMTB9KSl9KSk7dmFyIHM9W10sbD1bXSxjPVtdLGQ9ci5nZXRBbGwoKTtmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKXt2YXIgcD1kW2FdO3AudmFsdWUmJihzLnB1c2gocC52YWx1ZSksYy5wdXNoKHAucm93KSxsLnB1c2gocC5jb2wpKX1yZXR1cm57aGVhZDpsLHRhaWw6YyxlcG9jaHNQZXJTYW1wbGU6dGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKHMsZSl9fSx0LnByb3RvdHlwZS5tYWtlRXBvY2hzUGVyU2FtcGxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49T3Z0LmZpbGxlZCh0Lmxlbmd0aCwtMSksbz1PdnQubWF4KHQpLGk9dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L28qZX0pKTtyZXR1cm4gaS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe3Q+MCYmKG5bb109ZS9pW29dKX0pKSxufSx0LnByb3RvdHlwZS5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLm9wdGltaXphdGlvblN0YXRlLHQpfSx0LnByb3RvdHlwZS5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LnJlcHVsc2lvblN0cmVuZ3RoLG49dC5sZWFybmluZ1JhdGUsbz10Lm5lZ2F0aXZlU2FtcGxlUmF0ZSxpPXRoaXMub3B0aW1pemF0aW9uU3RhdGUsYT1pLmVwb2Noc1BlclNhbXBsZSxyPWkuaGVhZEVtYmVkZGluZyxzPXJbMF0ubGVuZ3RoLGw9ci5sZW5ndGg9PT1pLnRhaWxFbWJlZGRpbmcubGVuZ3RoLGM9YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0L299KSksZD1idnQoYykscD1idnQoYSk7dGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2Vwb2NoT2ZOZXh0U2FtcGxlOnAsZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZTpkLGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlOmMsbW92ZU90aGVyOmwsaW5pdGlhbEFscGhhOm4sYWxwaGE6bixnYW1tYTplLGRpbTpzfSl9LHQucHJvdG90eXBlLmluaXRpYWxpemVPcHRpbWl6YXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVtYmVkZGluZyxlPXRoaXMuZW1iZWRkaW5nLG49dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxvPW4uaGVhZCxpPW4udGFpbCxhPW4uZXBvY2hzUGVyU2FtcGxlLHI9dGhpcy5nZXRORXBvY2hzKCkscz10aGlzLmdyYXBoLm5Db2xzLGw9TnZ0KHRoaXMuc3ByZWFkLHRoaXMubWluRGlzdCk7dGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2hlYWRFbWJlZGRpbmc6dCx0YWlsRW1iZWRkaW5nOmUsaGVhZDpvLHRhaWw6aSxlcG9jaHNQZXJTYW1wbGU6YSxhOmwuYSxiOmwuYixuRXBvY2hzOnIsblZlcnRpY2VzOnN9KX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRTdGVwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLm9wdGltaXphdGlvblN0YXRlLG49ZS5oZWFkLG89ZS50YWlsLGk9ZS5oZWFkRW1iZWRkaW5nLGE9ZS50YWlsRW1iZWRkaW5nLHI9ZS5lcG9jaHNQZXJTYW1wbGUscz1lLmVwb2NoT2ZOZXh0U2FtcGxlLGw9ZS5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLGM9ZS5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSxkPWUubW92ZU90aGVyLHA9ZS5pbml0aWFsQWxwaGEsbT1lLmFscGhhLHU9ZS5nYW1tYSxmPWUuYSxnPWUuYixoPWUuZGltLGI9ZS5uRXBvY2hzLHk9ZS5uVmVydGljZXMsXz0wO188ci5sZW5ndGg7XysrKWlmKCEoc1tfXT50KSl7dmFyIEM9bltfXSxNPWlbQ10sdj1hW29bX11dLHg9VHZ0KE0sdiksTz0wO3g+MCYmKE89LTIqZipnKk1hdGgucG93KHgsZy0xKSxPLz1mKk1hdGgucG93KHgsZykrMSk7Zm9yKHZhciBQPTA7UDxoO1ArKyl7dmFyIHc9QXZ0KE8qKE1bUF0tdltQXSksNCk7TVtQXSs9dyptLGQmJih2W1BdKz0tdyptKX1zW19dKz1yW19dO2Zvcih2YXIgaz1NYXRoLmZsb29yKCh0LWxbX10pL2NbX10pLFM9MDtTPGs7UysrKXt2YXIgRD1PdnQudGF1UmFuZEludCh5LHRoaXMucmFuZG9tKSxFPWFbRF0sUj1UdnQoTSxFKSxBPTA7aWYoUj4wKUE9Mip1KmcsQS89KC4wMDErUikqKGYqTWF0aC5wb3coUixnKSsxKTtlbHNlIGlmKEM9PT1EKWNvbnRpbnVlO2ZvcihQPTA7UDxoO1ArKyl3PTQsQT4wJiYodz1BdnQoQSooTVtQXS1FW1BdKSw0KSksTVtQXSs9dyptfWxbX10rPWsqY1tfXX1yZXR1cm4gZS5hbHBoYT1wKigxLXQvYiksZS5jdXJyZW50RXBvY2grPTEsaX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4sbyl7dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gZnZ0KGUsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgZSxhLHIscyxsO3JldHVybiBndnQodGhpcywoZnVuY3Rpb24oYyl7dHJ5e2lmKGE9KGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSkubkVwb2Nocyx0aGlzLmVtYmVkZGluZz10aGlzLm9wdGltaXplTGF5b3V0U3RlcChlLmN1cnJlbnRFcG9jaCkscz0hMT09PXQocj10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCksbD1yPT09YSxzfHxsKXJldHVyblsyLG4obCldO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoKX0pLDApfWNhdGNoKHQpe28odCl9cmV0dXJuWzJdfSkpfSkpfTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBpKCl9KSwwKX0pKX0sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0pO2Zvcih2YXIgZT0hMSxuPVtdOyFlOyl7dmFyIG89dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxpPW8ubkVwb2NocztuPXRoaXMub3B0aW1pemVMYXlvdXRTdGVwKG8uY3VycmVudEVwb2NoKTt2YXIgYT10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCxyPSExPT09dChhKTtlPWE9PT1pfHxyfXJldHVybiBufSx0LnByb3RvdHlwZS5nZXRORXBvY2hzPWZ1bmN0aW9uKCl7aWYodGhpcy5uRXBvY2hzPjApcmV0dXJuIHRoaXMubkVwb2Noczt2YXIgdD10aGlzLmdyYXBoLm5Sb3dzO3JldHVybiB0PD0yNTAwPzUwMDp0PD01ZTM/NDAwOnQ8PTc1MDA/MzAwOjIwMH0sdH0pKCk7ZnVuY3Rpb24gRHZ0KHQsZSl7Zm9yKHZhciBuPTAsbz0wO288dC5sZW5ndGg7bysrKW4rPU1hdGgucG93KHRbb10tZVtvXSwyKTtyZXR1cm4gTWF0aC5zcXJ0KG4pfXVDdC5VTUFQPVN2dCx1Q3QuZXVjbGlkZWFuPUR2dCx1Q3QuY29zaW5lPWZ1bmN0aW9uIEV2dCh0LGUpe2Zvcih2YXIgbj0wLG89MCxpPTAsYT0wO2E8dC5sZW5ndGg7YSsrKW4rPXRbYV0qZVthXSxvKz1NYXRoLnBvdyh0W2FdLDIpLGkrPU1hdGgucG93KGVbYV0sMik7cmV0dXJuIDA9PT1vJiYwPT09aT8wOjA9PT1vfHwwPT09aT8xOjEtbi9NYXRoLnNxcnQobyppKX07dmFyIFJ2dD1mdW5jdGlvbiBSdnQoKXt0aGlzLmN1cnJlbnRFcG9jaD0wLHRoaXMuaGVhZEVtYmVkZGluZz1bXSx0aGlzLnRhaWxFbWJlZGRpbmc9W10sdGhpcy5oZWFkPVtdLHRoaXMudGFpbD1bXSx0aGlzLmVwb2Noc1BlclNhbXBsZT1bXSx0aGlzLmVwb2NoT2ZOZXh0U2FtcGxlPVtdLHRoaXMuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZT1bXSx0aGlzLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlPVtdLHRoaXMubW92ZU90aGVyPSEwLHRoaXMuaW5pdGlhbEFscGhhPTEsdGhpcy5hbHBoYT0xLHRoaXMuZ2FtbWE9MSx0aGlzLmE9MS41NzY5NDM0NjAzMTEzMDc3LHRoaXMuYj0uODk1MDYwODc3OTEwOTczMyx0aGlzLmRpbT0yLHRoaXMubkVwb2Nocz01MDAsdGhpcy5uVmVydGljZXM9MH07ZnVuY3Rpb24gQXZ0KHQsZSl7cmV0dXJuIHQ+ZT9lOnQ8LWU/LWU6dH1mdW5jdGlvbiBUdnQodCxlKXtmb3IodmFyIG49MCxvPTA7bzx0Lmxlbmd0aDtvKyspbis9TWF0aC5wb3codFtvXS1lW29dLDIpO3JldHVybiBufWZ1bmN0aW9uIE52dCh0LGUpe3ZhciBuPU92dC5saW5lYXIoMCwzKnQsMzAwKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PGU/MTp0fSkpLG89T3Z0Lnplcm9zKG4ubGVuZ3RoKS5tYXAoKGZ1bmN0aW9uKG8saSl7cmV0dXJuIG5baV0+PWU/TWF0aC5leHAoLShuW2ldLWUpL3QpOm99KSksaT1QdnQuZGVmYXVsdCh7eDpuLHk6b30sKGZ1bmN0aW9uKHQpe3ZhciBlPWh2dCh0LDIpLG49ZVswXSxvPWVbMV07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLygxK24qTWF0aC5wb3codCwyKm8pKX19KSx7ZGFtcGluZzoxLjUsaW5pdGlhbFZhbHVlczpbLjUsLjVdLGdyYWRpZW50RGlmZmVyZW5jZTouMSxtYXhJdGVyYXRpb25zOjEwMCxlcnJvclRvbGVyYW5jZTouMDF9KS5wYXJhbWV0ZXJWYWx1ZXMsYT1odnQoaSwyKTtyZXR1cm57YTphWzBdLGI6YVsxXX19ZnVuY3Rpb24genZ0KHQsZSxuLG8pe3JldHVybiB2b2lkIDA9PT1uJiYobj0xKSx2b2lkIDA9PT1vJiYobz01KSx0Lm1hcCgoZnVuY3Rpb24odCxpLGEpe3JldHVybi0xPT09ZVtpXXx8LTE9PT1lW2FdP3QqTWF0aC5leHAoLW4pOmVbaV0hPT1lW2FdP3QqTWF0aC5leHAoLW8pOnR9KSl9ZnVuY3Rpb24gSXZ0KHQpe3Q9TXZ0Lm5vcm1hbGl6ZSh0LCJtYXgiKTt2YXIgZT1NdnQudHJhbnNwb3NlKHQpLG49TXZ0LnBhaXJ3aXNlTXVsdGlwbHkoZSx0KTtyZXR1cm4gdD1NdnQuYWRkKHQsTXZ0LnN1YnRyYWN0KGUsbikpLE12dC5lbGltaW5hdGVaZXJvcyh0KX1mdW5jdGlvbiBIdnQodCxlLG4pe2Zvcih2YXIgbz1PdnQuemVyb3ModC5sZW5ndGgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE92dC56ZXJvcyhuWzBdLmxlbmd0aCl9KSksaT0wO2k8dC5sZW5ndGg7aSsrKWZvcih2YXIgYT0wO2E8dFswXS5sZW5ndGg7YSsrKWZvcih2YXIgcj0wO3I8blswXS5sZW5ndGg7cisrKW9baV1bcl0rPWVbaV1bYV0qblt0W2ldW2FdXVtyXTtyZXR1cm4gb31mdW5jdGlvbiBGdnQodCl7bGV0IGUsbixvPXQubGVuZ3RoO2Zvcig7bzspbj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqby0tKSxlPXRbb10sdFtvXT10W25dLHRbbl09ZTtyZXR1cm4gdH1mdW5jdGlvbiBMdnQodCxlKXtyZXR1cm5gJHtlfS8ke3R9YH11Q3QuZmluZEFCUGFyYW1zPU52dCx1Q3QuZmFzdEludGVyc2VjdGlvbj16dnQsdUN0LnJlc2V0TG9jYWxDb25uZWN0aXZpdHk9SXZ0LHVDdC5pbml0VHJhbnNmb3JtPUh2dCxPYmplY3QuZGVmaW5lUHJvcGVydHkobUN0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxtQ3QuVU1BUD11Q3QuVU1BUDtjbGFzcyBCdnR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vbnBtaSJ9ZmV0Y2hEYXRhKHQpe3JldHVybiAkdCh0aGlzLmZldGNoQW5ub3RhdGlvbnModCksdGhpcy5mZXRjaE1ldHJpY3ModCksdGhpcy5mZXRjaFZhbHVlcyh0KSx0aGlzLmZldGNoRW1iZWRkaW5ncyh0KSkucGlwZShJdCgoKFt0LGUsbixvXSk9Pntjb25zdCBpPXt9LGE9e307bGV0IHIscz0wO2Zvcihjb25zdCByIG9mIE9iamVjdC5rZXlzKHQpKWZvcihjb25zdCBsIGluIHRbcl0pe2NvbnN0IGM9dFtyXVtsXTtPYmplY3Qua2V5cyhvKS5sZW5ndGgmJiFhW2NdJiZvW3JdW2xdJiZvW3JdW2xdLnNvbWUoKHQ9PjAhPT10KSkmJihhW2NdPXt2ZWN0b3I6b1tyXVtsXSxpbmRleDpzLG5hbWU6Y30scys9MSk7Y29uc3QgZD1uZXcgTWFwO2Zvcihjb25zdCB0IGluIGVbcl0pe2NvbnN0IG89ZVtyXVt0XSxpPW55dChvKTtsZXQgYT1kLmdldChpKTthfHwoYT17blBNSVZhbHVlOm51bGwsY291bnRWYWx1ZTpudWxsLGFubm90YXRpb246YyxtZXRyaWM6aSxydW46cn0sZC5zZXQoaSxhKSksJGJ0KG8pP2EuY291bnRWYWx1ZT1uW3JdW2xdW3RdOnR5dChvKSYmKGEublBNSVZhbHVlPW5bcl1bbF1bdF0pfWlbY109Wy4uLmlbY10/aVtjXTpbXSwuLi5kLnZhbHVlcygpXX1yZXR1cm4gT2JqZWN0LmtleXMoYSkubGVuZ3RoJiYocj0oZnVuY3Rpb24gbCh0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO3JldHVybntwb2ludHM6dCxwb2ludEtleXM6ZSxzaHVmZmxlZERhdGFJbmRpY2VzOkZ2dCgobj1lLmxlbmd0aCxbLi4ubmV3IEFycmF5KG4pXS5tYXAoKCh0LGUpPT5lKSkpKSxoYXNVbWFwUnVuOiExfTt2YXIgbn0pKGEpKSx7YW5ub3RhdGlvbkRhdGE6aSxtZXRyaWNzOmUsZW1iZWRkaW5nRGF0YVNldDpyfX0pKSxwZSgodD0+dCBpbnN0YW5jZW9mIHhEJiY0MDA8PXQuc3RhdHVzJiZ0LnN0YXR1czw1MDA/RXQoe2Fubm90YXRpb25EYXRhOnt9LG1ldHJpY3M6e30sZW1iZWRkaW5nRGF0YVNldDp2b2lkIDB9KTpSdCh0KSkpKX1mZXRjaEFubm90YXRpb25zKHQpe3JldHVybiAkdCh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L2Fubm90YXRpb25zYCkucGlwZShJdCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LG5dKT0+W0x2dCh0LGUpLG5dKSkpfSkoZSx0KSkpKSkpKS5waXBlKEl0KCh0PT57bGV0IGU9e307Zm9yKGNvbnN0IG4gb2YgdCllPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxuKTtyZXR1cm4gZX0pKSl9ZmV0Y2hNZXRyaWNzKHQpe3JldHVybiAkdCh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L21ldHJpY3NgKS5waXBlKEl0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bTHZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoSXQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX1mZXRjaFZhbHVlcyh0KXtyZXR1cm4gJHQodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS92YWx1ZXNgKS5waXBlKEl0KChlPT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3Qsbl0pPT5bTHZ0KHQsZSksbl0pKSl9KShlLHQpKSkpKSkpLnBpcGUoSXQoKHQ9PntsZXQgZT17fTtmb3IoY29uc3QgbiBvZiB0KWU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLG4pO3JldHVybiBlfSkpKX1mZXRjaEVtYmVkZGluZ3ModCl7cmV0dXJuICR0KHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vZW1iZWRkaW5nc2ApLnBpcGUoSXQoKGU9PihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxuXSk9PltMdnQodCxlKSxuXSkpKX0pKGUsdCkpKSkpKSkucGlwZShJdCgodD0+e2xldCBlPXt9O2Zvcihjb25zdCBuIG9mIHQpZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbik7cmV0dXJuIGV9KSkpfX1CdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fEJ2dCkodnIobEUpKX0sQnZ0Lsm1cHJvdj1Nbih7dG9rZW46QnZ0LGZhY3Rvcnk6QnZ0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChCdnQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxFfV19KSxudWxsKTtjbGFzcyBWdnR7fVZ2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VnZ0KX0sVnZ0Lsm1bW9kPWFvKHt0eXBlOlZ2dH0pLFZ2dC7JtWluaj12bih7cHJvdmlkZXJzOltCdnRdLGltcG9ydHM6W1tjRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChWdnQsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltjRV0scHJvdmlkZXJzOltCdnRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oVnZ0LHtpbXBvcnRzOltjRV19KTtjbGFzcyBqdnR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5sb2FkRGF0YSQ9TWsoKCgpPT5yZSh0aGlzLmxvYWRQbHVnaW5EYXRhKCkpLnBpcGUoSXQoKCgpPT4oe30pKSkpKSx7ZGlzcGF0Y2g6ITF9KX1sb2FkUGx1Z2luRGF0YSgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRGsoa2J0KSxWZSh0aGlzLnN0b3JlLnNlbGVjdChhYnQpLHRoaXMuc3RvcmUuc2VsZWN0KFRTKSksY2UoKChbLHQsZV0pPT50IT09eUUuTE9BRElORyYmbnVsbCE9PWUpKSxGZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goU2J0KCkpKSksWnQoKChbLCx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaERhdGEodCkucGlwZShGZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goRGJ0KHQpKX0pKSxJdCgoKCk9Pnt9KSkscGUoKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChFYnQoKSkscnQpKSkpKSkpfX1qdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGp2dCkodnIoU2spLHZyKEl3KSx2cihCdnQpKX0sanZ0Lsm1cHJvdj1Nbih7dG9rZW46anZ0LGZhY3Rvcnk6anZ0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChqdnQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlNrfSx7dHlwZTpJd30se3R5cGU6QnZ0fV19KSxudWxsKTtjbGFzcyBVdnR7fVV2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8VXZ0KX0sVXZ0Lsm1bW9kPWFvKHt0eXBlOlV2dH0pLFV2dC7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChVdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W29idF0sZXhwb3J0czpbb2J0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFV2dCx7ZGVjbGFyYXRpb25zOltvYnRdLGV4cG9ydHM6W29idF19KTtjbGFzcyBHdnR7fUd2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8R3Z0KX0sR3Z0Lsm1bW9kPWFvKHt0eXBlOkd2dH0pLEd2dC7JtWluaj12bih7aW1wb3J0czpbW1dNLEVXLEJZLFkwXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEd2dCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbc3l0LGx5dF0saW1wb3J0czpbV00sRVcsQlksWTBdLGV4cG9ydHM6W2x5dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhHdnQse2RlY2xhcmF0aW9uczpbc3l0LGx5dF0saW1wb3J0czpbV00sRVcsQlksWTBdLGV4cG9ydHM6W2x5dF19KTtjbGFzcyBXdnR7fVd2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8V3Z0KX0sV3Z0Lsm1bW9kPWFvKHt0eXBlOld2dH0pLFd2dC7JtWluaj12bih7aW1wb3J0czpbW1dNLGNHLGRHLEVXLEV5dCxWUV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3p5dCxJeXRdLGltcG9ydHM6W1dNLGNHLGRHLEVXLEV5dCxWUV0sZXhwb3J0czpbSXl0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFd2dCx7ZGVjbGFyYXRpb25zOlt6eXQsSXl0XSxpbXBvcnRzOltXTSxjRyxkRyxFVyxFeXQsVlFdLGV4cG9ydHM6W0l5dF19KTtjbGFzcyBZdnR7fVl2dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WXZ0KX0sWXZ0Lsm1bW9kPWFvKHt0eXBlOll2dH0pLFl2dC7JtWluaj12bih7aW1wb3J0czpbW1dNLEV5dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChZdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0h5dF0saW1wb3J0czpbV00sRXl0XSxleHBvcnRzOltIeXRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oWXZ0LHtkZWNsYXJhdGlvbnM6W0h5dF0saW1wb3J0czpbV00sRXl0XSxleHBvcnRzOltIeXRdfSk7Y2xhc3MgcXZ0e31xdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHF2dCl9LHF2dC7JtW1vZD1hbyh7dHlwZTpxdnR9KSxxdnQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxFeXQsV3Z0LFl2dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChxdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1Z5dCxqeXRdLGltcG9ydHM6W1dNLEV5dCxXdnQsWXZ0XSxleHBvcnRzOltqeXRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8ocXZ0LHtkZWNsYXJhdGlvbnM6W1Z5dCxqeXRdLGltcG9ydHM6W1dNLEV5dCxXdnQsWXZ0XSxleHBvcnRzOltqeXRdfSk7Y2xhc3MgWnZ0e31adnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFp2dCl9LFp2dC7JtW1vZD1hbyh7dHlwZTpadnR9KSxadnQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxFVyxKSF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChadnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3B5dCxteXRdLGltcG9ydHM6W1dNLEVXLEpIXSxleHBvcnRzOltteXRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oWnZ0LHtkZWNsYXJhdGlvbnM6W3B5dCxteXRdLGltcG9ydHM6W1dNLEVXLEpIXSxleHBvcnRzOltteXRdfSk7Y2xhc3MgWHZ0e31YdnQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh2dCl9LFh2dC7JtW1vZD1hbyh7dHlwZTpYdnR9KSxYdnQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxHdnQscXZ0LFp2dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChYdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1V5dF0saW1wb3J0czpbV00sR3Z0LHF2dCxadnRdLGV4cG9ydHM6W1V5dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhYdnQse2RlY2xhcmF0aW9uczpbVXl0XSxpbXBvcnRzOltXTSxHdnQscXZ0LFp2dF0sZXhwb3J0czpbVXl0XX0pO2NsYXNzIEt2dHt9S3Z0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxLdnQpfSxLdnQuybVtb2Q9YW8oe3R5cGU6S3Z0fSksS3Z0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sY0csSkgsRVddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoS3Z0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltZeXQscXl0XSxpbXBvcnRzOltXTSxjRyxKSCxFV10sZXhwb3J0czpbcXl0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKEt2dCx7ZGVjbGFyYXRpb25zOltZeXQscXl0XSxpbXBvcnRzOltXTSxjRyxKSCxFV10sZXhwb3J0czpbcXl0XX0pO2NsYXNzIEp2dHt9SnZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxKdnQpfSxKdnQuybVtb2Q9YW8oe3R5cGU6SnZ0fSksSnZ0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sY0csRVcsSkgsS3Z0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKEp2dCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbS3l0LEp5dF0saW1wb3J0czpbV00sY0csRVcsSkgsS3Z0XSxleHBvcnRzOltKeXRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oSnZ0LHtkZWNsYXJhdGlvbnM6W0t5dCxKeXRdLGltcG9ydHM6W1dNLGNHLEVXLEpILEt2dF0sZXhwb3J0czpbSnl0XX0pO2NsYXNzIFF2dHt9UXZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxRdnQpfSxRdnQuybVtb2Q9YW8oe3R5cGU6UXZ0fSksUXZ0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sY0csRVcsQlldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoUXZ0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltmX3QsZ190XSxpbXBvcnRzOltXTSxjRyxFVyxCWV0sZXhwb3J0czpbZ190XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKFF2dCx7ZGVjbGFyYXRpb25zOltmX3QsZ190XSxpbXBvcnRzOltXTSxjRyxFVyxCWV0sZXhwb3J0czpbZ190XX0pO2NsYXNzICR2dHt9JHZ0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHwkdnQpfSwkdnQuybVtb2Q9YW8oe3R5cGU6JHZ0fSksJHZ0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sY0csRVcsSkgsbV90LFF2dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCgkdnQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3lfdCxfX3RdLGltcG9ydHM6W1dNLGNHLEVXLEpILG1fdCxRdnRdLGV4cG9ydHM6W19fdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybygkdnQse2RlY2xhcmF0aW9uczpbeV90LF9fdF0saW1wb3J0czpbV00sY0csRVcsSkgsbV90LFF2dF0sZXhwb3J0czpbX190XX0pO2NsYXNzIHR4dHt9dHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx0eHQpfSx0eHQuybVtb2Q9YW8oe3R5cGU6dHh0fSksdHh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sY0csU1ksRVddXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgodHh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltQX3Qsd190XSxpbXBvcnRzOltXTSxjRyxTWSxFV10sZXhwb3J0czpbd190XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHR4dCx7ZGVjbGFyYXRpb25zOltQX3Qsd190XSxpbXBvcnRzOltXTSxjRyxTWSxFV10sZXhwb3J0czpbd190XX0pO2NsYXNzIGV4dHt9ZXh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxleHQpfSxleHQuybVtb2Q9YW8oe3R5cGU6ZXh0fSksZXh0Lsm1aW5qPXZuKHtpbXBvcnRzOltbV01dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZXh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltNX3RdLGltcG9ydHM6W1dNXSxleHBvcnRzOltNX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZXh0LHtkZWNsYXJhdGlvbnM6W01fdF0saW1wb3J0czpbV01dLGV4cG9ydHM6W01fdF19KTtjbGFzcyBueHR7fW54dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bnh0KX0sbnh0Lsm1bW9kPWFvKHt0eXBlOm54dH0pLG54dC7JtWluaj12bih7aW1wb3J0czpbW2V4dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChueHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3ZfdF0saW1wb3J0czpbZXh0XSxleHBvcnRzOlt2X3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8obnh0LHtkZWNsYXJhdGlvbnM6W3ZfdF0saW1wb3J0czpbZXh0XSxleHBvcnRzOlt2X3RdfSk7Y2xhc3Mgb3h0e31veHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fG94dCl9LG94dC7JtW1vZD1hbyh7dHlwZTpveHR9KSxveHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjRyxTWSxFVyxKSF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChveHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1RfdCxBX3RdLGltcG9ydHM6W1dNLGNHLFNZLEVXLEpIXSxleHBvcnRzOltUX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8ob3h0LHtkZWNsYXJhdGlvbnM6W1RfdCxBX3RdLGltcG9ydHM6W1dNLGNHLFNZLEVXLEpIXSxleHBvcnRzOltUX3RdfSk7Y2xhc3MgaXh0e31peHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGl4dCl9LGl4dC7JtW1vZD1hbyh7dHlwZTppeHR9KSxpeHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSwkdnQsdHh0LG54dCxfRixveHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoaXh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltJX3QsSF90XSxpbXBvcnRzOltXTSwkdnQsdHh0LG54dCxfRixveHRdLGV4cG9ydHM6W0hfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhpeHQse2RlY2xhcmF0aW9uczpbSV90LEhfdF0saW1wb3J0czpbV00sJHZ0LHR4dCxueHQsX0Ysb3h0XSxleHBvcnRzOltIX3RdfSk7Y2xhc3MgYXh0e31heHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGF4dCl9LGF4dC7JtW1vZD1hbyh7dHlwZTpheHR9KSxheHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChheHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0xfdCxCX3RdLGltcG9ydHM6W1dNXSxleHBvcnRzOltCX3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oYXh0LHtkZWNsYXJhdGlvbnM6W0xfdCxCX3RdLGltcG9ydHM6W1dNXSxleHBvcnRzOltCX3RdfSk7Y2xhc3Mgcnh0e31yeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHJ4dCl9LHJ4dC7JtW1vZD1hbyh7dHlwZTpyeHR9KSxyeHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxFVyxKSCxheHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgocnh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltHX3QsV190XSxpbXBvcnRzOltXTSxFVyxKSCxheHRdLGV4cG9ydHM6W1dfdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhyeHQse2RlY2xhcmF0aW9uczpbR190LFdfdF0saW1wb3J0czpbV00sRVcsSkgsYXh0XSxleHBvcnRzOltXX3RdfSk7Y2xhc3Mgc3h0e31zeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHN4dCl9LHN4dC7JtW1vZD1hbyh7dHlwZTpzeHR9KSxzeHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjRyxTWSxFVyxraHQsWHZ0LEpILEp2dCxpeHQscnh0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHN4dCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbSl90LFFfdF0saW1wb3J0czpbV00sY0csU1ksRVcsa2h0LFh2dCxKSCxKdnQsaXh0LHJ4dF0sZXhwb3J0czpbUV90XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHN4dCx7ZGVjbGFyYXRpb25zOltKX3QsUV90XSxpbXBvcnRzOltXTSxjRyxTWSxFVyxraHQsWHZ0LEpILEp2dCxpeHQscnh0XSxleHBvcnRzOltRX3RdfSk7Y2xhc3MgbHh0e31seHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGx4dCl9LGx4dC7JtW1vZD1hbyh7dHlwZTpseHR9KSxseHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxjRyxTWSxFVyxraHQsWHZ0LEpILGl4dCxyeHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgobHh0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltpQ3QsYUN0XSxpbXBvcnRzOltXTSxjRyxTWSxFVyxraHQsWHZ0LEpILGl4dCxyeHRdLGV4cG9ydHM6W2FDdF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhseHQse2RlY2xhcmF0aW9uczpbaUN0LGFDdF0saW1wb3J0czpbV00sY0csU1ksRVcsa2h0LFh2dCxKSCxpeHQscnh0XSxleHBvcnRzOlthQ3RdfSk7Y2xhc3MgY3h0e31jeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGN4dCl9LGN4dC7JtW1vZD1hbyh7dHlwZTpjeHR9KSxjeHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxVdnQsc3h0LGx4dCxWdnQsZGsuZm9yRmVhdHVyZShRaHQsaXl0KSxXay5mb3JGZWF0dXJlKFtqdnRdKSx3cS5mb3JQbHVnaW4oIm5wbWkiLHBDdCldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoY3h0LFt7dHlwZTpBeSxhcmdzOlt7ZGVjbGFyYXRpb25zOltkQ3QscEN0XSxpbXBvcnRzOltXTSxVdnQsc3h0LGx4dCxWdnQsZGsuZm9yRmVhdHVyZShRaHQsaXl0KSxXay5mb3JGZWF0dXJlKFtqdnRdKSx3cS5mb3JQbHVnaW4oIm5wbWkiLHBDdCldLGV4cG9ydHM6W3BDdF0sZW50cnlDb21wb25lbnRzOltwQ3RdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oY3h0LHtkZWNsYXJhdGlvbnM6W2RDdCxwQ3RdLGltcG9ydHM6W1dNLFV2dCxzeHQsbHh0LFZ2dCxjayxHayx3cV0sZXhwb3J0czpbcEN0XX0pO2NsYXNzIGR4dHt9ZHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxkeHQpfSxkeHQuybVjbXA9dG8oe3R5cGU6ZHh0LHNlbGVjdG9yczpbWyJ0ZXh0LWRhc2hib2FyZCJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KGUsbil7MSZlJiZrdSgwLCIgVGhpcyBpcyB0aGUgdGV4dCBkYXNoYm9hcmQgIil9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoZHh0LFt7dHlwZTpNeSxhcmdzOlt7c2VsZWN0b3I6InRleHQtZGFzaGJvYXJkIix0ZW1wbGF0ZToiIFRoaXMgaXMgdGhlIHRleHQgZGFzaGJvYXJkICIsY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sbnVsbCxudWxsKTtjbGFzcyBweHR7fXB4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cHh0KX0scHh0Lsm1bW9kPWFvKHt0eXBlOnB4dH0pLHB4dC7JtWluaj12bih7fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChweHQsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2R4dF0sZXhwb3J0czpbZHh0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHB4dCx7ZGVjbGFyYXRpb25zOltkeHRdLGV4cG9ydHM6W2R4dF19KTtjbGFzcyBteHR7fW14dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8bXh0KX0sbXh0Lsm1cHJvdj1Nbih7dG9rZW46bXh0LGZhY3Rvcnk6bXh0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChteHQsW3t0eXBlOmltfV0sbnVsbCxudWxsKTtjbGFzcyB1eHR7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vdGV4dF92MiJ9ZmV0Y2hSdW5Ub1RhZygpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi90YWdzIikucGlwZShJdCgodD0+e2NvbnN0IGU9bmV3IE1hcDtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoKFt0LG5dKT0+e2Uuc2V0KHQsbil9KSksZX0pKSl9ZmV0Y2hUZXh0RGF0YSh0LGUpe2NvbnN0IG49bmV3IFVSTFNlYXJjaFBhcmFtcyh7cnVuOnQsdGFnOmV9KTtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4K2AvdGV4dD8ke24udG9TdHJpbmcoKX1gKS5waXBlKEl0KCh0PT50Lm1hcCgodD0+KHtvcmlnaW5hbFNoYXBlOnQub3JpZ2luYWxfc2hhcGUsc3RlcDp0LnN0ZXAsc3RyaW5nQXJyYXk6dC5zdHJpbmdfYXJyYXksd2FsbFRpbWVJbk1zOjFlMyp0LndhbGxfdGltZSx0cnVuY2F0ZWQ6dC50cnVuY2F0ZWR9KSkpKSkpfX11eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHV4dCkodnIobEUpKX0sdXh0Lsm1cHJvdj1Nbih7dG9rZW46dXh0LGZhY3Rvcnk6dXh0Lsm1ZmFjfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaCh1eHQsW3t0eXBlOmltfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmxFfV19KSxudWxsKTtjbGFzcyBmeHR7fWZ4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8Znh0KX0sZnh0Lsm1bW9kPWFvKHt0eXBlOmZ4dH0pLGZ4dC7JtWluaj12bih7cHJvdmlkZXJzOlt1eHQse3Byb3ZpZGU6bXh0LHVzZUV4aXN0aW5nOnV4dH1dLGltcG9ydHM6W1tjRV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChmeHQsW3t0eXBlOkF5LGFyZ3M6W3tpbXBvcnRzOltjRV0scHJvdmlkZXJzOlt1eHQse3Byb3ZpZGU6bXh0LHVzZUV4aXN0aW5nOnV4dH1dfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oZnh0LHtpbXBvcnRzOltjRV19KTtjb25zdCBneHQ9SlAoIltUZXh0XSBUZXh0IFBsdWdpbiBMb2FkZWQiKSxoeHQ9SlAoIltUZXh0XSBSdW5zIFRvIFRhZyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxieHQ9SlAoIltUZXh0XSBUYWcgR3JvdXAgVmlzaWJpbGl0eSBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseXh0PUpQKCJbVGV4dF0gVGV4dCBEYXRhIExvYWRlZCBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxfeHQ9InRleHQiLEN4dD1LdyhfeHQpO1p3KEN4dCwodD0+dC5ydW5Ub1RhZ3MpKTtjb25zdCBNeHQ9WncoQ3h0LCh0PT57Y29uc3QgZT1uZXcgU2V0LG49bmV3IFNldDtmb3IoY29uc3QgbyBvZiB0LnZpc2libGVSdW5UYWdzLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIG8pe2NvbnN0IG89SlNPTi5zdHJpbmdpZnkodCk7ZS5oYXMobyl8fChlLmFkZChvKSxuLmFkZCh0KSl9cmV0dXJuWy4uLm5dfSkpLHZ4dD1adyhDeHQsKCh0LGUpPT57Y29uc3Qgbj10LmRhdGEuZ2V0KGUucnVuKTtyZXR1cm4gbiYmbi5nZXQoZS50YWcpfHxudWxsfSkpO2NsYXNzIHh4dHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmRhdGFTb3VyY2U9bix0aGlzLmxvYWRSdW5Ub1RhZ3MkPU1rKCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKERrKGd4dCksemUoKCgpPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hSdW5Ub1RhZygpLnBpcGUoRmUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGh4dCh7cnVuVG9UYWdzOnR9KSl9KSksSXQoKCgpPT57fSkpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5sb2FkRGF0YSQ9TWsoKCgpPT5yZSh0aGlzLmFjdGlvbnMkLnBpcGUoRGsoYnh0KSx6ZSgoKHt2aXNpYmxlVGV4dENhcmRzOnR9KT0+JHQodC5tYXAoKCh7cnVuOnQsdGFnOmV9KT0+dGhpcy5zdG9yZS5zZWxlY3Qodnh0LHtydW46dCx0YWc6ZX0pLnBpcGUoKGZ1bmN0aW9uIG4odCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gby5waXBlKHQ/Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuLG8pfSkpOncsU2UoMSksbj9oZShlKTp4ZSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHp0fSkpKX19KSgpLEl0KChuPT4oe3J1bjp0LHRhZzplLHRleHREYXRhOm59KSkpKSkpKS5waXBlKEl0KCh0PT50LmZpbHRlcigoKHt0ZXh0RGF0YTp0fSk9Pm51bGw9PT10KSkubWFwKCgoe3J1bjp0LHRhZzplfSk9Pih7cnVuOnQsdGFnOmV9KSkpKSkpKSkpLHRoaXMuYWN0aW9ucyQucGlwZShEayh2RSx4RSksVmUodGhpcy5zdG9yZS5zZWxlY3QoTXh0KSksSXQoKChbLHRdKT0+dCkpKSkucGlwZShadCgodD0+JHQodC5tYXAoKHQ9PnRoaXMuZmV0Y2hUZXh0RGF0YSh0KSkpKSkpKSkse2Rpc3BhdGNoOiExfSl9ZmV0Y2hUZXh0RGF0YSh0KXtjb25zdHtydW46ZSx0YWc6bn09dDtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoVGV4dERhdGEoZSxuKS5waXBlKEZlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaCh5eHQoe3J1bjplLHRhZzpuLHN0ZXBEYXRhOnR9KSl9KSksSXQoKCgpPT57fSkpKX19eHh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHx4eHQpKHZyKFNrKSx2cihJdyksdnIobXh0KSl9LHh4dC7JtXByb3Y9TW4oe3Rva2VuOnh4dCxmYWN0b3J5Onh4dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoeHh0LFt7dHlwZTppbX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTa30se3R5cGU6SXd9LHt0eXBlOm14dH1dfSksbnVsbCk7Y29uc3QgT3h0PXlrKHtydW5Ub1RhZ3M6bmV3IE1hcChbWyJydW4xIixbImEvYiIsImEvYyJdXSxbInJ1bjIiLFsiYS9iIiwiYS9kIl1dLFsicnVuMyIsWyJjIiwiYS9iIl1dXSksZGF0YTpuZXcgTWFwKFtbInJ1bjEiLG5ldyBNYXAoW1siYS9iIixbe29yaWdpbmFsU2hhcGU6WzNdLHN0ZXA6MCxzdHJpbmdBcnJheTpbWyJmb28iLCJiYXIiLCJiYXoiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbImZvbyIsImJheiJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXSxbImEvYyIsW3tvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjAsc3RyaW5nQXJyYXk6W1siV2UgY29uZHVjdGVkIGFuIGV4cGVyaW1lbnQgYW5kIGZvdW5kIHRoZSBmb2xsb3dpbmcgZGF0YTpcblxuUG91bmRzIG9mIGNob2NvbGF0ZSB8IEhhcHBpbmVzc1xuLS0tfC0tLVxuMCB8IDFcbjEgfCA0XG4yIHwgOVxuMyB8IDE2XG40IHwgMjVcbjUgfCAzNlxuNiB8IDQ5XG43IHwgNjRcbjggfCA4MVxuOSB8IDEwMFxuMTAgfCAxMjEiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbIsOXIiwiKiowKioiLCIqKjEqKiIsIioqMioqIiwiKiozKioiLCIqKjQqKiIsIioqNSoqIl0sWyIqKjAqKiIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCJdLFsiKioxKioiLCIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiXSxbIioqMioqIiwiMCIsIjIiLCI0IiwiNiIsIjgiLCIxMCJdLFsiKiozKioiLCIwIiwiMyIsIjYiLCI5IiwiMTIiLCIxNSJdLFsiKio0KioiLCIwIiwiNCIsIjgiLCIxMiIsIjE2IiwiMjAiXSxbIioqNSoqIiwiMCIsIjUiLCIxMCIsIjE1IiwiMjAiLCIyNSJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXV0pXV0pLHZpc2libGVSdW5UYWdzOm5ldyBNYXB9KTtmdW5jdGlvbiBQeHQodCxlKXtyZXR1cm4gT3h0KHQsZSl9Y2xhc3Mgd3h0e313eHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fHd4dCl9LHd4dC7JtW1vZD1hbyh7dHlwZTp3eHR9KSx3eHQuybVpbmo9dm4oe2ltcG9ydHM6W1tXTSxweHQsd3EuZm9yUGx1Z2luKCJ0ZXh0X3YyIixkeHQpLGZ4dCxkay5mb3JGZWF0dXJlKF94dCxQeHQpLFdrLmZvckZlYXR1cmUoW3h4dF0pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHd4dCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W1dNLHB4dCx3cS5mb3JQbHVnaW4oInRleHRfdjIiLGR4dCksZnh0LGRrLmZvckZlYXR1cmUoX3h0LFB4dCksV2suZm9yRmVhdHVyZShbeHh0XSldLGVudHJ5Q29tcG9uZW50czpbZHh0XX1dfV0sbnVsbCxudWxsKSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnJvKHd4dCx7aW1wb3J0czpbV00scHh0LHdxLGZ4dCxjayxHa119KTtjbGFzcyBreHR7fXZhciBTeHQ7a3h0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxreHQpfSxreHQuybVtb2Q9YW8oe3R5cGU6a3h0fSksa3h0Lsm1aW5qPXZuKHtpbXBvcnRzOltbS0osSmh0LGN4dCx3eHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoa3h0LFt7dHlwZTpBeSxhcmdzOlt7aW1wb3J0czpbS0osSmh0LGN4dCx3eHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8oa3h0LHtpbXBvcnRzOltLSixKaHQsY3h0LHd4dF19KSwoZnVuY3Rpb24odCl7dC5DVVNUT01fRUxFTUVOVD0iQ1VTVE9NX0VMRU1FTlQiLHQuSUZSQU1FPSJJRlJBTUUiLHQuTkdfQ09NUE9ORU5UPSJOR19DT01QT05FTlQiLHQuTk9ORT0iTk9ORSJ9KShTeHR8fChTeHQ9e30pKTtjb25zdCBEeHQ9WyJwbHVnaW5Db250YWluZXIiXSxFeHQ9WyJuZ1BsdWdpbkNvbnRhaW5lciJdO2Z1bmN0aW9uIFJ4dCh0LGUpezEmdCYmSW0oMCl9ZnVuY3Rpb24gQXh0KHQsZSl7aWYoMSZ0JiYoTm0oMCksUXAoMSxSeHQsMSwwLCJuZy1jb250YWluZXIiLDkpLHptKCkpLDImdCl7Y29uc3QgdD1ZbSgyKSxlPSRwKDYpO3JjKDEpLERtKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LmVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU/dC5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOmUpfX1mdW5jdGlvbiBUeHQodCxlKXsxJnQmJkltKDApfWZ1bmN0aW9uIE54dCh0LGUpe2lmKDEmdCYmKE5tKDApLFFwKDEsVHh0LDEsMCwibmctY29udGFpbmVyIiw5KSx6bSgpKSwyJnQpe2NvbnN0IHQ9WW0oMiksZT0kcCg2KTtyYygxKSxEbSgibmdUZW1wbGF0ZU91dGxldCIsdC5lbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU/dC5lbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6ZSl9fWZ1bmN0aW9uIHp4dCh0LGUpe2lmKDEmdCYmKE5tKDApLFJtKDEsImgzIiwxMCksa3UoMiwiIFRoZXJl4oCZcyBubyBkYXNoYm9hcmQgYnkgdGhlIG5hbWUgb2Yg4oCcIiksUm0oMywiY29kZSIpLGt1KDQpLEFtKCksa3UoNSwi4oCdLiAiKSxBbSgpLFJtKDYsInAiKSxrdSg3LCJZb3UgY2FuIHNlbGVjdCBhIGRhc2hib2FyZCBmcm9tIHRoZSBsaXN0IGFib3ZlLiIpLEFtKCksUm0oOCwicCIpLEltKDksMTEpLEFtKCksem0oKSksMiZ0KXtjb25zdCB0PVltKDIpLGU9JHAoOCk7cmMoNCksU3UodC5hY3RpdmVQbHVnaW5JZCkscmMoNSksRG0oIm5nVGVtcGxhdGVPdXRsZXQiLGUpfX1mdW5jdGlvbiBJeHQodCxlKXtpZigxJnQmJihObSgwKSxSbSgxLCJoMyIsMTIpLGt1KDIsIiBObyBkYXNoYm9hcmRzIGFyZSBhY3RpdmUgZm9yIHRoZSBjdXJyZW50IGRhdGEgc2V0LiAiKSxBbSgpLFJtKDMsInAiKSxrdSg0LCJQcm9iYWJsZSBjYXVzZXM6IiksQW0oKSxSbSg1LCJ1bCIpLFJtKDYsImxpIiksa3UoNywiWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuIiksQW0oKSxSbSg4LCJsaSIpLGt1KDksIlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLiIpLEFtKCksQW0oKSxrdSgxMCwiIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZSAiKSxSbSgxMSwiYSIsMTMpLGt1KDEyLCJSRUFETUUiKSxBbSgpLGt1KDEzLCIgYW5kIHBlcmhhcHMgdGhlICIpLFJtKDE0LCJhIiwxNCksa3UoMTUsIlRlbnNvckJvYXJkIHR1dG9yaWFsIiksQW0oKSxrdSgxNiwiLiAiKSxSbSgxNywicCIpLGt1KDE4LCIgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUgIiksUm0oMTksImEiLDE1KSxrdSgyMCwidGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtcyIpLEFtKCksa3UoMjEsIiBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4gIiksQW0oKSxSbSgyMiwicCIpLEltKDIzLDExKSxBbSgpLHptKCkpLDImdCl7WW0oMik7Y29uc3QgdD0kcCg4KTtyYygyMyksRG0oIm5nVGVtcGxhdGVPdXRsZXQiLHQpfX1mdW5jdGlvbiBIeHQodCxlKXtpZigxJnQmJihSbSgwLCJkaXYiLDYpLFJtKDEsImRpdiIsNyksUXAoMixBeHQsMiwxLCJuZy1jb250YWluZXIiLDgpLFFwKDMsTnh0LDIsMSwibmctY29udGFpbmVyIiw4KSxRcCg0LHp4dCwxMCwyLCJuZy1jb250YWluZXIiLDgpLFFwKDUsSXh0LDI0LDEsIm5nLWNvbnRhaW5lciIsOCksQW0oKSxBbSgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtEbSgibmdTd2l0Y2giLHQucGx1Z2luTG9hZFN0YXRlKSxyYygyKSxEbSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpbkxvYWRTdGF0ZS5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORCkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuRU5WSVJPTk1FTlRfRkFJTFVSRV9VTktOT1dOKSxyYygxKSxEbSgibmdTd2l0Y2hDYXNlIix0LlBsdWdpbkxvYWRTdGF0ZS5VTktOT1dOX1BMVUdJTl9JRCkscmMoMSksRG0oIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuTk9fRU5BQkxFRF9QTFVHSU5TKX19ZnVuY3Rpb24gRnh0KHQsZSl7aWYoMSZ0JiYoUm0oMCwiaDMiLDE2KSxrdSgxLCJEYXRhIGNvdWxkIG5vdCBiZSBsb2FkZWQuIiksQW0oKSxSbSgyLCJwIiksa3UoMywiVGhlIFRlbnNvckJvYXJkIHNlcnZlciBtYXkgYmUgZG93biBvciBpbmFjY2Vzc2libGUuIiksQW0oKSxSbSg0LCJwIiksSW0oNSwxMSksQW0oKSksMiZ0KXtZbSgpO2NvbnN0IHQ9JHAoOCk7cmMoNSksRG0oIm5nVGVtcGxhdGVPdXRsZXQiLHQpfX1mdW5jdGlvbiBMeHQodCxlKXtpZigxJnQmJihSbSgwLCJwIiwxOSksUm0oMSwiaSIpLGt1KDIsIkxvZyBkaXJlY3Rvcnk6ICIpLFJtKDMsInNwYW4iKSxrdSg0KSxBbSgpLEFtKCksQW0oKSksMiZ0KXtjb25zdCB0PVltKDIpO3JjKDQpLFN1KHQuZGF0YUxvY2F0aW9uKX19ZnVuY3Rpb24gQnh0KHQsZSl7aWYoMSZ0JiYoUm0oMCwic3BhbiIsMTcpLGt1KDEpLEFoKDIsImRhdGUiKSxBbSgpLFFwKDMsTHh0LDUsMSwicCIsMTgpKSwyJnQpe2NvbnN0IHQ9WW0oKTtyYygxKSxEdSgiTGFzdCByZWxvYWQ6ICIsTmgoMiwyLHQubGFzdFVwZGF0ZWQsIm1lZGl1bSIpLCIiKSxyYygyKSxEbSgibmdJZiIsdC5kYXRhTG9jYXRpb24pfX1jb25zdCBWeHQ9ZnVuY3Rpb24odCl7cmV0dXJue3BsdWdpbnM6ITAsImlzLWZpcnN0LXBhcnR5LXBsdWdpbiI6dH19O3ZhciBqeHQ7IShmdW5jdGlvbih0KXt0W3QuRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQ9MF09IkVOVklST05NRU5UX0ZBSUxVUkVfTk9UX0ZPVU5EIix0W3QuRU5WSVJPTk1FTlRfRkFJTFVSRV9VTktOT1dOPTFdPSJFTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV04iLHRbdC5OT19FTkFCTEVEX1BMVUdJTlM9Ml09Ik5PX0VOQUJMRURfUExVR0lOUyIsdFt0LlVOS05PV05fUExVR0lOX0lEPTNdPSJVTktOT1dOX1BMVUdJTl9JRCIsdFt0LkxPQURFRD00XT0iTE9BREVEIix0W3QuTE9BRElORz01XT0iTE9BRElORyJ9KShqeHR8fChqeHQ9e30pKTtjbGFzcyBVeHR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5wbHVnaW5SZWdpc3RyeT1lLHRoaXMucGx1Z2luQXBpSG9zdD1uLHRoaXMuUGx1Z2luTG9hZFN0YXRlPWp4dCx0aGlzLkxvYWRpbmdNZWNoYW5pc21UeXBlPVN4dCx0aGlzLnBsdWdpbkluc3RhbmNlcz1uZXcgTWFwfW5nT25DaGFuZ2VzKHQpe3ZhciBlO2lmKCF0aGlzLmlzRmVhdHVyZUZsYWdzTG9hZGVkfHwhdGhpcy5hY3RpdmVLbm93blBsdWdpbnx8dGhpcy5zZXR0aW5nc0xvYWRTdGF0ZT09PXlFLk5PVF9MT0FERUR8fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT15RS5MT0FESU5HKXJldHVybjtjb25zdCBuPUJvb2xlYW4odGhpcy5hY3RpdmVLbm93blBsdWdpbiYmIXRoaXMucGx1Z2luSW5zdGFuY2VzLmhhcyh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLmlkKSk7aWYodC5hY3RpdmVLbm93blBsdWdpbnx8dC5pc0ZlYXR1cmVGbGFnc0xvYWRlZHx8dC5zZXR0aW5nc0xvYWRTdGF0ZSl7Y29uc3Qgbz1udWxsPT09KGU9dC5hY3RpdmVLbm93blBsdWdpbil8fHZvaWQgMD09PWU/dm9pZCAwOmUucHJldmlvdXNWYWx1ZTtpZihvJiZvLmlkIT09dGhpcy5hY3RpdmVLbm93blBsdWdpbi5pZCYmdGhpcy5oaWRlUGx1Z2luKG8pLG4pe2NvbnN0IHQ9dGhpcy5jcmVhdGVQbHVnaW4odGhpcy5hY3RpdmVLbm93blBsdWdpbik7dCYmdGhpcy5wbHVnaW5JbnN0YW5jZXMuc2V0KHRoaXMuYWN0aXZlS25vd25QbHVnaW4uaWQsdCl9ZWxzZSB0aGlzLnNob3dQbHVnaW4odGhpcy5hY3RpdmVLbm93blBsdWdpbil9KG58fHQubGFzdFVwZGF0ZWQpJiZ0aGlzLnJlbG9hZCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLG4pfWhpZGVQbHVnaW4odCl7aWYoIXRoaXMucGx1Z2luSW5zdGFuY2VzLmhhcyh0LmlkKSlyZXR1cm47Y29uc3QgZT10aGlzLnBsdWdpbkluc3RhbmNlcy5nZXQodC5pZCk7T2JqZWN0LmFzc2lnbihlLnN0eWxlLHttYXhIZWlnaHQ6MCxvdmVyZmxvdzoiaGlkZGVuIix2aXNpYmlsaXR5OiJoaWRkZW4iLHBvc2l0aW9uOiJhYnNvbHV0ZSJ9KX1zaG93UGx1Z2luKHQpe2lmKCF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModC5pZCkpcmV0dXJuO2NvbnN0IGU9dGhpcy5wbHVnaW5JbnN0YW5jZXMuZ2V0KHQuaWQpO09iamVjdC5hc3NpZ24oZS5zdHlsZSx7bWF4SGVpZ2h0Om51bGwsb3ZlcmZsb3c6bnVsbCx2aXNpYmlsaXR5Om51bGwscG9zaXRpb246bnVsbH0pfWNyZWF0ZVBsdWdpbih0KXtsZXQgZT1udWxsO3N3aXRjaCh0LmxvYWRpbmdfbWVjaGFuaXNtLnR5cGUpe2Nhc2UgU3h0LkNVU1RPTV9FTEVNRU5UOmU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0LmxvYWRpbmdfbWVjaGFuaXNtLmVsZW1lbnRfbmFtZSksZS5yZWxvYWRPblJlYWR5PSExLGUuZmVhdHVyZUZsYWdzPXRoaXMuZmVhdHVyZUZsYWdzLHRoaXMucGx1Z2luc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGUpO2JyZWFrO2Nhc2UgU3h0LklGUkFNRTppZighdGhpcy5wbHVnaW5BcGlIb3N0KXRocm93IEVycm9yKGBJRlJBTUUtYmFzZWQgcGx1Z2lucyBub3Qgc3VwcG9ydGVkOiAke3QuaWR9YCk7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxlLnNldEF0dHJpYnV0ZSgic3JjIixgZGF0YS9wbHVnaW5fZW50cnkuaHRtbD9uYW1lPSR7dC5pZH1gKSx0aGlzLnBsdWdpbkFwaUhvc3QucmVnaXN0ZXJQbHVnaW5JZnJhbWUoZSx0LmlkKSx0aGlzLnBsdWdpbnNDb250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChlKTticmVhaztjYXNlIFN4dC5OR19DT01QT05FTlQ6Y29uc3Qgbj10aGlzLnBsdWdpblJlZ2lzdHJ5LmdldENvbXBvbmVudCh0LmlkKTtpZihuKXtjb25zdCB0PXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KG4pO2U9dGhpcy5uZ1BsdWdpbkNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQodCkubG9jYXRpb24ubmF0aXZlRWxlbWVudH1lbHNlIGNvbnNvbGUuZXJyb3IoYE5vIHJlZ2lzdGVyZWQgQW5ndWxhciBjb21wb25lbnQgZm9yIHBsdWdpbjogJHt0LmlkfWApO2JyZWFrO2Nhc2UgU3h0Lk5PTkU6YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJVbmV4cGVjdGVkIHBsdWdpbiIpfXJldHVybiBlfXJlbG9hZCh0LGUpe2lmKCFlJiZ0LmRpc2FibGVfcmVsb2FkKXJldHVybjtjb25zdCBuPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtuJiZuLnJlbG9hZCYmbi5yZWxvYWQoKX19VXh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxVeHQpKFNtKHVnKSxTbSh3cSksU20oc3osOCkpfSxVeHQuybVjbXA9dG8oe3R5cGU6VXh0LHNlbGVjdG9yczpbWyJwbHVnaW5zLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChlLG4pe2lmKDEmZSYmKFFoKER4dCw3LGhnKSxRaChFeHQsNyxlaCkpLDImZSl7bGV0IHQ7SmgodD10YigpKSYmKG4ucGx1Z2luc0NvbnRhaW5lcj10LmZpcnN0KSxKaCh0PXRiKCkpJiYobi5uZ1BsdWdpbkNvbnRhaW5lcj10LmZpcnN0KX19LGlucHV0czp7YWN0aXZlUGx1Z2luSWQ6ImFjdGl2ZVBsdWdpbklkIixhY3RpdmVLbm93blBsdWdpbjoiYWN0aXZlS25vd25QbHVnaW4iLHBsdWdpbkxvYWRTdGF0ZToicGx1Z2luTG9hZFN0YXRlIixkYXRhTG9jYXRpb246ImRhdGFMb2NhdGlvbiIsaXNGZWF0dXJlRmxhZ3NMb2FkZWQ6ImlzRmVhdHVyZUZsYWdzTG9hZGVkIixzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUiLGZlYXR1cmVGbGFnczoiZmVhdHVyZUZsYWdzIixsYXN0VXBkYXRlZDoibGFzdFVwZGF0ZWQiLGVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIn0sZmVhdHVyZXM6W0JvXSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1szLCJuZ0NsYXNzIl0sWyJwbHVnaW5Db250YWluZXIiLCIiXSxbIm5nUGx1Z2luQ29udGFpbmVyIiwiIl0sWyJjbGFzcyIsIndhcm5pbmciLDMsIm5nU3dpdGNoIiw0LCJuZ0lmIl0sWyJlbnZpcm9ubWVudEZhaWx1cmVEZWZhdWx0VGVtcGxhdGUiLCIiXSxbImRhdGVBbmREYXRhTG9jYXRpb24iLCIiXSxbMSwid2FybmluZyIsMywibmdTd2l0Y2giXSxbMSwid2FybmluZy1tZXNzYWdlIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsInVua25vd24tcGx1Z2luIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMSwibm8tYWN0aXZlLXBsdWdpbiJdLFsiaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCJdLFsiaHJlZiIsImh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiXSxbImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIl0sWzEsImVudmlyb25tZW50LW5vdC1sb2FkZWQiXSxbMSwibGFzdC1yZWxvYWQtdGltZSJdLFsiY2xhc3MiLCJkYXRhLWxvY2F0aW9uIiw0LCJuZ0lmIl0sWzEsImRhdGEtbG9jYXRpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pezEmZSYmKFJtKDAsImRpdiIsMCwxKSxJbSgyLG51bGwsMiksQW0oKSxRcCg0LEh4dCw2LDUsImRpdiIsMyksUXAoNSxGeHQsNiwxLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LGliKSxRcCg3LEJ4dCw0LDUsIm5nLXRlbXBsYXRlIixudWxsLDUsaWIpKSwyJmUmJihEbSgibmdDbGFzcyIsTWgoMixWeHQsKG51bGw9PW4uYWN0aXZlS25vd25QbHVnaW4/bnVsbDpuLmFjdGl2ZUtub3duUGx1Z2luLmxvYWRpbmdfbWVjaGFuaXNtLnR5cGUpIT09bi5Mb2FkaW5nTWVjaGFuaXNtVHlwZS5JRlJBTUUpKSxyYyg0KSxEbSgibmdJZiIsbi5wbHVnaW5Mb2FkU3RhdGUhPT1uLlBsdWdpbkxvYWRTdGF0ZS5MT0FERUQmJm4ucGx1Z2luTG9hZFN0YXRlIT09bi5QbHVnaW5Mb2FkU3RhdGUuTE9BRElORykpfSxkaXJlY3RpdmVzOlthTSxkTSxmTSxnTSxNTV0scGlwZXM6W1JNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnBsdWdpbnMuaXMtZmlyc3QtcGFydHktcGx1Z2luW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzA7Y29sb3I6I2ZmZn0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmV9Lndhcm5pbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtib3R0b206MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMzMDMwMzB9Lndhcm5pbmctbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTttYXJnaW46ODBweCBhdXRvIDA7bWF4LXdpZHRoOjU0MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC53YXJuaW5nLW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAud2FybmluZy1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5sYXN0LXJlbG9hZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXN0eWxlOml0YWxpY30ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV0gICAgIGlmcmFtZXtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFV4dCxbe3R5cGU6TXksYXJnczpbe3NlbGVjdG9yOiJwbHVnaW5zLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vcGx1Z2luc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsicGx1Z2luc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnVnfSx7dHlwZTp3cX0se3R5cGU6c3osZGVjb3JhdG9yczpbe3R5cGU6U3J9XX1dfSkse3BsdWdpbnNDb250YWluZXI6W3t0eXBlOlphLGFyZ3M6WyJwbHVnaW5Db250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpoZ31dfV0sbmdQbHVnaW5Db250YWluZXI6W3t0eXBlOlphLGFyZ3M6WyJuZ1BsdWdpbkNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOmVofV19XSxhY3RpdmVQbHVnaW5JZDpbe3R5cGU6eHl9XSxhY3RpdmVLbm93blBsdWdpbjpbe3R5cGU6eHl9XSxwbHVnaW5Mb2FkU3RhdGU6W3t0eXBlOnh5fV0sZGF0YUxvY2F0aW9uOlt7dHlwZTp4eX1dLGlzRmVhdHVyZUZsYWdzTG9hZGVkOlt7dHlwZTp4eX1dLHNldHRpbmdzTG9hZFN0YXRlOlt7dHlwZTp4eX1dLGZlYXR1cmVGbGFnczpbe3R5cGU6eHl9XSxsYXN0VXBkYXRlZDpbe3R5cGU6eHl9XSxlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOlt7dHlwZTp4eX1dLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZTpbe3R5cGU6eHl9XX0pO2NvbnN0IEd4dD1adyh2UixNUiwoKHQsZSk9PmUmJnRbZV0/T2JqZWN0LmFzc2lnbih7aWQ6ZX0sdFtlXSk6bnVsbCkpO2NsYXNzIFd4dHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVLbm93blBsdWdpbiQ9dGhpcy5zdG9yZS5zZWxlY3QoR3h0KSx0aGlzLmFjdGl2ZVBsdWdpbklkJD10aGlzLnN0b3JlLnNlbGVjdChNUiksdGhpcy5wbHVnaW5Mb2FkU3RhdGUkPVd0KHRoaXMuYWN0aXZlS25vd25QbHVnaW4kLHRoaXMuYWN0aXZlUGx1Z2luSWQkLHRoaXMuc3RvcmUuc2VsZWN0KGJSKSkucGlwZShJdCgoKFt0LGUsbl0pPT5udWxsIT09bi5mYWlsdXJlQ29kZT9uLmZhaWx1cmVDb2RlPT09bUUuTk9UX0ZPVU5EP2p4dC5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORDpqeHQuRU5WSVJPTk1FTlRfRkFJTFVSRV9VTktOT1dOOm51bGwhPT10P2p4dC5MT0FERUQ6bnVsbD09PW4ubGFzdExvYWRlZFRpbWVJbk1zJiZuLnN0YXRlPT09eUUuTE9BRElORz9qeHQuTE9BRElORzplP2p4dC5VTktOT1dOX1BMVUdJTl9JRDpqeHQuTk9fRU5BQkxFRF9QTFVHSU5TKSkpLHRoaXMubGFzdExvYWRlZFRpbWVJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChDUiksdGhpcy5kYXRhTG9jYXRpb24kPXRoaXMuc3RvcmUuc2VsZWN0KHhSKS5waXBlKEl0KCh0PT50LmRhdGFfbG9jYXRpb24pKSksdGhpcy5pc0ZlYXR1cmVGbGFnc0xvYWRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QocUQpLHRoaXMuZmVhdHVyZUZsYWdzJD10aGlzLnN0b3JlLnNlbGVjdChaRCksdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoU04pfX1XeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFd4dCkoU20oSXcpKX0sV3h0Lsm1Y21wPXRvKHt0eXBlOld4dCxzZWxlY3RvcnM6W1sicGx1Z2lucyJdXSxpbnB1dHM6e2Vudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIn0sZGVjbHM6OSx2YXJzOjI2LGNvbnN0czpbWzMsImFjdGl2ZUtub3duUGx1Z2luIiwiYWN0aXZlUGx1Z2luSWQiLCJkYXRhTG9jYXRpb24iLCJsYXN0VXBkYXRlZCIsInBsdWdpbkxvYWRTdGF0ZSIsImlzRmVhdHVyZUZsYWdzTG9hZGVkIiwic2V0dGluZ3NMb2FkU3RhdGUiLCJmZWF0dXJlRmxhZ3MiLCJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIiwiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJwbHVnaW5zLWNvbXBvbmVudCIsMCksQWgoMSwiYXN5bmMiKSxBaCgyLCJhc3luYyIpLEFoKDMsImFzeW5jIiksQWgoNCwiYXN5bmMiKSxBaCg1LCJhc3luYyIpLEFoKDYsImFzeW5jIiksQWgoNywiYXN5bmMiKSxBaCg4LCJhc3luYyIpKSwyJmUmJkRtKCJhY3RpdmVLbm93blBsdWdpbiIsVGgoMSwxMCxuLmFjdGl2ZUtub3duUGx1Z2luJCkpKCJhY3RpdmVQbHVnaW5JZCIsVGgoMiwxMixuLmFjdGl2ZVBsdWdpbklkJCkpKCJkYXRhTG9jYXRpb24iLFRoKDMsMTQsbi5kYXRhTG9jYXRpb24kKSkoImxhc3RVcGRhdGVkIixUaCg0LDE2LG4ubGFzdExvYWRlZFRpbWVJbk1zJCkpKCJwbHVnaW5Mb2FkU3RhdGUiLFRoKDUsMTgsbi5wbHVnaW5Mb2FkU3RhdGUkKSkoImlzRmVhdHVyZUZsYWdzTG9hZGVkIixUaCg2LDIwLG4uaXNGZWF0dXJlRmxhZ3NMb2FkZWQkKSkoInNldHRpbmdzTG9hZFN0YXRlIixUaCg3LDIyLG4uc2V0dGluZ3NMb2FkU3RhdGUkKSkoImZlYXR1cmVGbGFncyIsVGgoOCwyNCxuLmZlYXR1cmVGbGFncyQpKSgiZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSIsbi5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlKSgiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIixuLmVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSl9LHN0eWxlczpbInBsdWdpbnMtY29tcG9uZW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7IGhlaWdodDogMTAwJTsgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChXeHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2lucyIsdGVtcGxhdGU6J1xuICAgIDxwbHVnaW5zLWNvbXBvbmVudFxuICAgICAgW2FjdGl2ZUtub3duUGx1Z2luXT0iYWN0aXZlS25vd25QbHVnaW4kIHwgYXN5bmMiXG4gICAgICBbYWN0aXZlUGx1Z2luSWRdPSJhY3RpdmVQbHVnaW5JZCQgfCBhc3luYyJcbiAgICAgIFtkYXRhTG9jYXRpb25dPSJkYXRhTG9jYXRpb24kIHwgYXN5bmMiXG4gICAgICBbbGFzdFVwZGF0ZWRdPSJsYXN0TG9hZGVkVGltZUluTXMkIHwgYXN5bmMiXG4gICAgICBbcGx1Z2luTG9hZFN0YXRlXT0icGx1Z2luTG9hZFN0YXRlJCB8IGFzeW5jIlxuICAgICAgW2lzRmVhdHVyZUZsYWdzTG9hZGVkXT0iaXNGZWF0dXJlRmxhZ3NMb2FkZWQkIHwgYXN5bmMiXG4gICAgICBbc2V0dGluZ3NMb2FkU3RhdGVdPSJzZXR0aW5nc0xvYWRTdGF0ZSQgfCBhc3luYyJcbiAgICAgIFtmZWF0dXJlRmxhZ3NdPSJmZWF0dXJlRmxhZ3MkIHwgYXN5bmMiXG4gICAgICBbZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZV09ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiXG4gICAgICBbZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlXT0iZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIlxuICAgID48L3BsdWdpbnMtY29tcG9uZW50PlxuICAnLHN0eWxlczpbInBsdWdpbnMtY29tcG9uZW50IHsgaGVpZ2h0OiAxMDAlOyB9Il0sY2hhbmdlRGV0ZWN0aW9uOnpuLk9uUHVzaH1dfV0sKGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkl3fV19KSx7ZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZTpbe3R5cGU6eHl9XSxlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6W3t0eXBlOnh5fV19KTtjbGFzcyBZeHR7fVl4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8WXh0KX0sWXh0Lsm1bW9kPWFvKHt0eXBlOll4dH0pLFl4dC7JtWluaj12bih7aW1wb3J0czpbW0VSLFdNLHdxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKFl4dCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbV3h0LFV4dF0sZXhwb3J0czpbV3h0XSxpbXBvcnRzOltFUixXTSx3cV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhZeHQse2RlY2xhcmF0aW9uczpbV3h0LFV4dF0saW1wb3J0czpbRVIsV00sd3FdLGV4cG9ydHM6W1d4dF19KSxlbyhXeHQsW1V4dF0sW3dNXSk7Y2xhc3MgcXh0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuZG9jdW1lbnQ9ZSx0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZT10aGlzLm9uVmlzaWJpbGl0eUNoYW5nZUltcGwuYmluZCh0aGlzKSx0aGlzLnJlbG9hZEVuYWJsZWQkPXRoaXMuc3RvcmUucGlwZShGdyhETikpLHRoaXMucmVsb2FkUGVyaW9kSW5NcyQ9dGhpcy5zdG9yZS5waXBlKEZ3KEVOKSksdGhpcy5yZWxvYWRUaW1lcklkPW51bGwsdGhpcy5taXNzZWRBdXRvUmVsb2FkPSExfW5nT25Jbml0KCl7dGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZSksV3QodGhpcy5yZWxvYWRFbmFibGVkJC5waXBlKE1lKCkpLHRoaXMucmVsb2FkUGVyaW9kSW5NcyQucGlwZShNZSgpKSkuc3Vic2NyaWJlKCgoW3QsZV0pPT57dGhpcy5jYW5jZWxMb2FkKCksdCYmdGhpcy5sb2FkKGUpfSkpfW9uVmlzaWJpbGl0eUNoYW5nZUltcGwoKXsidmlzaWJsZSI9PT10aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSYmdGhpcy5taXNzZWRBdXRvUmVsb2FkJiYodGhpcy5taXNzZWRBdXRvUmVsb2FkPSExLHRoaXMuc3RvcmUuZGlzcGF0Y2goeEUoKSkpfWxvYWQodCl7dGhpcy5yZWxvYWRUaW1lcklkPXNldFRpbWVvdXQoKCgpPT57InZpc2libGUiPT09dGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU/dGhpcy5zdG9yZS5kaXNwYXRjaCh4RSgpKTp0aGlzLm1pc3NlZEF1dG9SZWxvYWQ9ITAsdGhpcy5sb2FkKHQpfSksdCl9Y2FuY2VsTG9hZCgpe251bGwhPT10aGlzLnJlbG9hZFRpbWVySWQmJmNsZWFyVGltZW91dCh0aGlzLnJlbG9hZFRpbWVySWQpLHRoaXMucmVsb2FkVGltZXJJZD1udWxsfW5nT25EZXN0cm95KCl7dGhpcy5jYW5jZWxMb2FkKCksdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZSl9fXF4dC7JtWZhYz1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcoZXx8cXh0KShTbShJdyksU20oWl8pKX0scXh0Lsm1Y21wPXRvKHt0eXBlOnF4dCxzZWxlY3RvcnM6W1sicmVsb2FkZXIiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChlLG4pe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChxeHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoicmVsb2FkZXIiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLChmdW5jdGlvbigpe3JldHVyblt7dHlwZTpJd30se3R5cGU6RG9jdW1lbnQsZGVjb3JhdG9yczpbe3R5cGU6a3IsYXJnczpbWl9dfV19XX0pLG51bGwpO2NsYXNzIFp4dHt9Wnh0Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxaeHQpfSxaeHQuybVjbXA9dG8oe3R5cGU6Wnh0LHNlbGVjdG9yczpbWyJ0ZW5zb3Jib2FyZC13cmFwcGVyLWNvbXBvbmVudCJdXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sxLCJwbHVnaW5zIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQoZSxuKXsxJmUmJihUbSgwLCJwbHVnaW5zIiwwKSxUbSgxLCJyZWxvYWRlciIpKX0sZGlyZWN0aXZlczpbV3h0LHF4dF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZmxleDogMSAxO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChaeHQsW3t0eXBlOk15LGFyZ3M6W3tzZWxlY3RvcjoidGVuc29yYm9hcmQtd3JhcHBlci1jb21wb25lbnQiLHRlbXBsYXRlOidcbiAgICA8cGx1Z2lucyBjbGFzcz0icGx1Z2lucyI+PC9wbHVnaW5zPlxuICAgIDxyZWxvYWRlcj48L3JlbG9hZGVyPlxuICAnLHN0eWxlczpbIlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5wbHVnaW5zIHtcbiAgICAgICAgZmxleDogMSAxO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgICJdLGNoYW5nZURldGVjdGlvbjp6bi5PblB1c2h9XX1dLG51bGwsbnVsbCk7Y2xhc3MgWHh0e31YeHQuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fFh4dCl9LFh4dC7JtXByb3Y9TW4oe3Rva2VuOlh4dCxmYWN0b3J5Olh4dC7JtWZhY30pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmaGgoWHh0LFt7dHlwZTppbX1dLG51bGwsbnVsbCk7Y29uc3QgS3h0PSJzbW9vdGhpbmciLEp4dD0icnVuQ29sb3JHcm91cCIsUXh0PSJ0YWdGaWx0ZXIiLCR4dD0icmVnZXg6IjtsZXQgdE90PWNsYXNzIGV4dGVuZHMgWHh0e2dldE1ldHJpY3NQaW5uZWRDYXJkcyh0KXtyZXR1cm4gV3QoW3Quc2VsZWN0KFBUKSx0LnNlbGVjdChrVCldKS5waXBlKEl0KCgoW3QsZV0pPT57aWYoIXQubGVuZ3RoJiYhZS5sZW5ndGgpcmV0dXJuW107Y29uc3Qgbj1bLi4udC5tYXAoKCh7cGx1Z2luOnQsdGFnOmUsc2FtcGxlOm4scnVuSWQ6b30pPT57Y29uc3QgaT17cGx1Z2luOnQsdGFnOmV9O3JldHVybiB4QSh0KSYmKGkucnVuSWQ9byksTUEodCkmJihpLnNhbXBsZT1uKSxpfSkpLC4uLmVdO3JldHVyblt7a2V5OiJwaW5uZWRDYXJkcyIsdmFsdWU6SlNPTi5zdHJpbmdpZnkobil9XX0pKSl9Z2V0RmVhdHVyZUZsYWdTdGF0ZXModCl7cmV0dXJuIFd0KFt0LnNlbGVjdCgkRCksdC5zZWxlY3QoWEQpXSkucGlwZShJdCgoKFt0LGVdKT0+e2NvbnN0IG49dC5tYXAoKHQ9Pih7a2V5Ok5BLHZhbHVlOnR9KSkpO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUuZW5hYmxlZENvbG9yR3JvdXAmJm4ucHVzaCh7a2V5OklBLHZhbHVlOlN0cmluZyhlLmVuYWJsZWRDb2xvckdyb3VwKX0pLCJib29sZWFuIj09dHlwZW9mIGUuZW5hYmxlZENvbG9yR3JvdXBCeVJlZ2V4JiZuLnB1c2goe2tleTpIQSx2YWx1ZTpTdHJpbmcoZS5lbmFibGVkQ29sb3JHcm91cEJ5UmVnZXgpfSksbn0pKSl9c2VyaWFsaXplU3RhdGVUb1F1ZXJ5UGFyYW1zKHQpe3JldHVybiBXdChbdGhpcy5nZXRNZXRyaWNzUGlubmVkQ2FyZHModCksdC5zZWxlY3QoQlQpLnBpcGUoSXQoKHQ9PnQ/W3trZXk6UXh0LHZhbHVlOnR9XTpbXSkpKSx0aGlzLmdldEZlYXR1cmVGbGFnU3RhdGVzKHQpLHQuc2VsZWN0KEVUKS5waXBlKEl0KCh0PT5OdW1iZXIuaXNGaW5pdGUodC5zY2FsYXJTbW9vdGhpbmcpP1t7a2V5Okt4dCx2YWx1ZTpTdHJpbmcodC5zY2FsYXJTbW9vdGhpbmcpfV06W10pKSksdC5zZWxlY3QodU4pLnBpcGUoSXQoKHQ9PntpZighdClyZXR1cm5bXTtsZXQgZTtzd2l0Y2godC5rZXkpe2Nhc2UgdE4uRVhQRVJJTUVOVDplPSJleHBlcmltZW50IjticmVhaztjYXNlIHROLlJVTjplPSJydW4iO2JyZWFrO2Nhc2UgdE4uUkVHRVg6ZT1gcmVnZXg6JHt0LnJlZ2V4U3RyaW5nfWA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcigiU2VyaWFsaXphdGlvbiBub3QgaW1wbGVtZW50ZWQiKX1yZXR1cm5be2tleTpKeHQsdmFsdWU6ZX1dfSkpKV0pLnBpcGUoSXQoKHQ9PnQuZmxhdCgpKSkpfWRlc2VyaWFsaXplUXVlcnlQYXJhbXModCl7bGV0IGU9bnVsbCxuPW51bGwsbz1udWxsLGk9bnVsbDtmb3IoY29uc3R7a2V5OmEsdmFsdWU6cn1vZiB0KXN3aXRjaChhKXtjYXNlInBpbm5lZENhcmRzIjplPWVPdChyKTticmVhaztjYXNlIEt4dDpuPU51bWJlcihyKTticmVhaztjYXNlIEp4dDpzd2l0Y2gocil7Y2FzZSJleHBlcmltZW50IjppPXtrZXk6dE4uRVhQRVJJTUVOVH07YnJlYWs7Y2FzZSJydW4iOmk9e2tleTp0Ti5SVU59fWlmKHIuc3RhcnRzV2l0aCgkeHQpKXtjb25zdCB0PXIuc2xpY2UoJHh0Lmxlbmd0aCk7aT17a2V5OnROLlJFR0VYLHJlZ2V4U3RyaW5nOnR9fWJyZWFrO2Nhc2UgUXh0Om89cn1yZXR1cm57bWV0cmljczp7cGlubmVkQ2FyZHM6ZXx8W10sc21vb3RoaW5nOm4sdGFnRmlsdGVyOm99LHJ1bnM6e2dyb3VwQnk6aX19fX07ZnVuY3Rpb24gZU90KHQpe2xldCBlO3RyeXtlPUpTT04ucGFyc2UodCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPSJzdHJpbmciPT10eXBlb2YgdC5ydW5JZCxpPSJudW1iZXIiPT10eXBlb2YgdC5zYW1wbGUsYT0ic3RyaW5nIj09dHlwZW9mIHQudGFnLHI9ZXx8dm9pZCAwPT09dC5ydW5JZCxzPWl8fHZvaWQgMD09PXQuc2FtcGxlO2lmKCEoInN0cmluZyI9PXR5cGVvZiB0LnBsdWdpbiYmYSYmciYmcykpY29udGludWU7aWYoKG89dC5wbHVnaW4pIT09aEEuU0NBTEFSUyYmbyE9PWhBLkhJU1RPR1JBTVMmJm8hPT1oQS5JTUFHRVMpY29udGludWU7aWYoIXQudGFnKWNvbnRpbnVlO2lmKHhBKHQucGx1Z2luKSl7aWYoIXQucnVuSWQpY29udGludWV9ZWxzZSBpZih0LnJ1bklkKWNvbnRpbnVlO2lmKGkpe2lmKCFNQSh0LnBsdWdpbikpY29udGludWU7aWYoIU51bWJlci5pc0ludGVnZXIodC5zYW1wbGUpfHx0LnNhbXBsZTwwKWNvbnRpbnVlfWNvbnN0IGw9e3BsdWdpbjp0LnBsdWdpbix0YWc6dC50YWd9O2UmJihsLnJ1bklkPXQucnVuSWQpLGkmJihsLnNhbXBsZT10LnNhbXBsZSksbi5wdXNoKGwpfXZhciBvO3JldHVybiBufWZ1bmN0aW9uIG5PdCgpe3JldHVyblt7cm91dGVLaW5kOlprLkVYUEVSSU1FTlQscGF0aDoiLyIsbmdDb21wb25lbnQ6Wnh0LGRlZmF1bHRSb3V0ZTohMCxkZWVwTGlua1Byb3ZpZGVyOm5ldyB0T3R9XX1mdW5jdGlvbiBvT3QodCl7cmV0dXJuKGUsbik9Pntjb25zdCBvPXQoZSxuKTtyZXR1cm4gY29uc29sZS5ncm91cENvbGxhcHNlZChuLnR5cGUpLGNvbnNvbGUubG9nKCJwcmV2IHN0YXRlIixlKSxjb25zb2xlLmxvZygiYWN0aW9uIixuKSxjb25zb2xlLmxvZygibmV4dCBzdGF0ZSIsbyksY29uc29sZS5ncm91cEVuZCgpLG99fWZ1bmN0aW9uIGlPdCgpe3JldHVybiB5XygpP29PdDp0PT4oZSxuKT0+dChlLG4pfXRPdD0oZnVuY3Rpb24gYU90KHQsZSxuLG8pe3ZhciBpLGE9YXJndW1lbnRzLmxlbmd0aCxyPWE8Mz9lOm51bGw9PT1vP289T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOm87aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlyPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4sbyk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkoaT10W3NdKSYmKHI9KGE8Mz9pKHIpOmE+Mz9pKGUsbixyKTppKGUsbikpfHxyKTtyZXR1cm4gYT4zJiZyJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHIpLHJ9KShbaW0oKV0sdE90KTtjb25zdCByT3Q9bmV3IEdhKCJSb290IHJlZHVjZXJzIHRva2VuIix7ZmFjdG9yeTooKT0+KHt9KX0pO2NsYXNzIHNPdHt9c090Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxzT3QpfSxzT3QuybVtb2Q9YW8oe3R5cGU6c090fSksc090Lsm1aW5qPXZuKHtwcm92aWRlcnM6W3twcm92aWRlOmJ3LHVzZUZhY3Rvcnk6aU90LG11bHRpOiEwfV0saW1wb3J0czpbW2RrLmZvclJvb3Qock90LHtydW50aW1lQ2hlY2tzOntzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExfX0pLFdrLmZvclJvb3QoW10pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKHNPdCxbe3R5cGU6QXksYXJnczpbe2ltcG9ydHM6W2RrLmZvclJvb3Qock90LHtydW50aW1lQ2hlY2tzOntzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExfX0pLFdrLmZvclJvb3QoW10pXSxwcm92aWRlcnM6W3twcm92aWRlOmJ3LHVzZUZhY3Rvcnk6aU90LG11bHRpOiEwfV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhzT3Qse2ltcG9ydHM6W2xrLFVrXX0pO2NsYXNzIGxPdHt9bE90Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxsT3QpfSxsT3QuybVtb2Q9YW8oe3R5cGU6bE90fSksbE90Lsm1aW5qPXZuKHt9KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmhoKGxPdCxbe3R5cGU6QXksYXJnczpbe2RlY2xhcmF0aW9uczpbcXh0XSxleHBvcnRzOltxeHRdfV19XSxudWxsLG51bGwpLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmcm8obE90LHtkZWNsYXJhdGlvbnM6W3F4dF0sZXhwb3J0czpbcXh0XX0pO2NsYXNzIGNPdHt9Y090Lsm1ZmFjPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyhlfHxjT3QpfSxjT3QuybVtb2Q9YW8oe3R5cGU6Y090fSksY090Lsm1aW5qPXZuKHtpbXBvcnRzOltbV00sWXh0LGxPdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChjT3QsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1p4dF0saW1wb3J0czpbV00sWXh0LGxPdF0sZXhwb3J0czpbWnh0XSxlbnRyeUNvbXBvbmVudHM6W1p4dF19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhjT3Qse2RlY2xhcmF0aW9uczpbWnh0XSxpbXBvcnRzOltXTSxZeHQsbE90XSxleHBvcnRzOltaeHRdfSk7Y2xhc3MgZE90e31kT3QuybVmYWM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3KGV8fGRPdCl9LGRPdC7JtW1vZD1hbyh7dHlwZTpkT3QsYm9vdHN0cmFwOlthcV19KSxkT3QuybVpbmo9dm4oe2ltcG9ydHM6W1t0VCxVdixaUCxCUyxzcSxQUy5yZWdpc3RlclJvdXRlcyhuT3QpLEpMLEtMLGxxLGNPdCxFUixncSxkcSx2cSxhQSx4cSxwcSxyRCxzeixZeHQsS04sQ3Esc090LGt4dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZoaChkT3QsW3t0eXBlOkF5LGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2FxXSxpbXBvcnRzOlt0VCxVdixaUCxCUyxzcSxQUy5yZWdpc3RlclJvdXRlcyhuT3QpLEpMLEtMLGxxLGNPdCxFUixncSxkcSx2cSxhQSx4cSxwcSxyRCxzeixZeHQsS04sQ3Esc090LGt4dF0sYm9vdHN0cmFwOlthcV19XX1dLG51bGwsbnVsbCksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZybyhkT3Qse2RlY2xhcmF0aW9uczpbYXFdLGltcG9ydHM6W3RULFV2LFpQLEJTLHNxLFBTLEpMLEtMLGxxLGNPdCxFUixncSxkcSx2cSxhQSx4cSxwcSxyRCxzeixZeHQsS04sQ3Esc090LGt4dF19KSwibG9hZGluZyIhPT1kb2N1bWVudC5yZWFkeVN0YXRlP0Z2KCkuYm9vdHN0cmFwTW9kdWxlKGRPdCk6d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCgoKT0+e0Z2KCkuYm9vdHN0cmFwTW9kdWxlKGRPdCl9KSksKGZ1bmN0aW9uIHBPdCgpe2lmKGJfKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuIik7KHZvaWQgMD09PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihqbi5uZ0Rldk1vZGU9ITEpLGhfPSExfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9KSgpOwo=", "headers": [ [ "content-type", "application/javascript; charset=utf-8" ] ], "ok": true, "status": 200, "status_text": "" } } }, "id": "_wpQGXu9aONh", "outputId": "8edb7bb8-0907-4f1f-ee6e-459cc4b3c8dc" }, "outputs": [ { "data": { "application/javascript": "\n (async () => {\n const url = new URL(await google.colab.kernel.proxyPort(6006, {'cache': true}));\n url.searchParams.set('tensorboardColab', 'true');\n const iframe = document.createElement('iframe');\n iframe.src = url;\n iframe.setAttribute('width', '100%');\n iframe.setAttribute('height', '800');\n iframe.setAttribute('frameborder', 0);\n document.body.appendChild(iframe);\n })();\n ", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# load tensorboard in colab\n", "%load_ext tensorboard\n", "\n", "# see curves in tensorboard\n", "%tensorboard --logdir ./tutorial_exps" ] }, { "cell_type": "markdown", "metadata": { "id": "MfQ-yspZLuuI" }, "source": [ "From the tensorboard, we can observe that changes of loss and learning rate. We can see the losses of each branch gradually decrease as the training goes by.\n", "\n", "## Test the Trained Detector\n", "\n", "After finetuning the detector, let's visualize the prediction results!" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 443 }, "id": "_MuZurfGLq0p", "outputId": "d035aec4-6bad-4e04-d105-d9557f058140" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/content/mmdetection/mmdet/datasets/utils.py:69: UserWarning: \"ImageToTensor\" pipeline is replaced by \"DefaultFormatBundle\" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file.\n", " 'data pipeline in your config file.', UserWarning)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABOgAAAGVCAYAAABEu85RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9WYxl23nf9/vWWns4U51TQ3dXz913IC8HiSIlxxJFRYLiwIgcWwniwEicAA4gGM5rgCBInvKYZz8FSAwEiR8SI4OBOI4jJYpljRwlUry889BjdXVNZz57WEMe1q7q5hV5yQSi7mW4fkChu845dc7ea6+9hv/3/74jIQQSiUQikUgkEolEIpFIJBKJxEeD+qgPIJFIJBKJRCKRSCQSiUQikfhJJgl0iUQikUgkEolEIpFIJBKJxEdIEugSiUQikUgkEolEIpFIJBKJj5Ak0CUSiUQikUgkEolEIpFIJBIfIUmgSyQSiUQikUgkEolEIpFIJD5CkkCXSCQSiUQikUgkEolEIpFIfIQkgS6RSCQSiUTiJwAR+eci8hsf9XEkEolEIpFIJP4sSaBLJBKJRCKR+AlDRP6OiPzeR30ciUQikUgkEolIEugSiUQikUgkPkaIiPmojyGRSCQSiUQi8RdLEugSiUQikUgkPmJE5H0R+U9E5FvASkS+JCJ/ICJTEfmmiPzKc6/9OyLyrogsROQ9Efnb3eP/uYj8w+ded0dEwgcFPxH5FPBfAr8gIksRmf7FnGUikUgkEolE4vuRIrSJRCKRSCQSHw/+HeCvAR74FvDvA/8M+FeA/0lEXgHWwN8H/lII4Q0RuQrs/L/5kBDCayLy94DfCCF86c/zBBKJRCKRSCQS/99IDrpEIpFIJBKJjwd/P4TwAPj3gH8aQvinIQQfQvgt4GvAr3Wv88BnRaQXQjgIIbz6UR1wIpFIJBKJROLPhyTQJRKJRCKRSHw8eND9exv4t7v01mmXgvol4GoIYQX8LeDvAQci8r91zrpEIpFIJBKJxI8xSaBLJBKJRCKR+HgQun8fAP9dCGHy3M8ghPBfAIQQ/o8Qwr8KXAVeB/6r7u9WQP+599v/IT4rkUgkEolEIvExIAl0iUQikUgkEh8v/iHw10Xkr4qIFpFSRH5FRG6IyBUR+XURGQA1sCSmvAL8CfAvi8gtERkD/+mHfMYhcENE8h/pmSQSiUQikUgkfiiSQJdIJBKJRCLxMaKrQ/frwH8GHBEddf8xcd2mgP8IeAycAr8M/Ifd3/0W8D8Qv2Di68A/+ZCP+W3gVeCJiBz/SE4kkUgkEolEIvFDIyGkDIdEIpFIJBKJRCKRSCQSiUTioyI56BKJRCKRSCQSiUQikUgkEomPkCTQJRKJRCKRSCQSiUQikUgkEh8hSaBLJBKJRCKRSCQSiUQikUgkPkKSQJdIJBKJRCKRSCQSiUQikUh8hCSBLpFIJBKJRCKRSCQSiUQikfgIMR/25Oc//7lQFAWgWK/XLJdLqqrC2QacZ1DkFEYzGfbZmYwYFgUKj3iLKKGRQBCPiCACRiuUAqVUfCwEvPM4F/AuELxgraWpWyobmK49bYDWOpxvOf/GWW1ACRSZJtNCv8wZD/oMyx55ZiiznMIIxrUYJQQRvNJsrOPx8TGn0wVoQ28wQpRBRCAErLW4psY7Bx6MLnHOobWm1yvItcF7j/cepQXbtEBABLRIfB9C90P3Owg+Hrv3hOAgBAgBTyAAPoD3AR/AEeLTCAgYYzCFQSkFAg7L+ffuilI452iqitViTVM1aK3Z3tpmsDXAG0cQT/ABWwU2q5rlcs1mWdM0FhFha2vI9s6EopcTQosNDUqBzjMy08M6jxPBK2FTO6aLObZu0WIoVE613mBEsXNpj+HWgHVbczY7Zblec+v2TbbGY0QMh0+OODg4ZFPVeA+ti+eJB4LDO0fwNnZKiX1EZYa2bXEuxN+la39r8d4DoBQURcFw2KdXFmgtGGPIDRQqcOfGVQa9jNVsymY2pd6syHPF3qU99m9cQ5Sw2KxpG0uZlQiKzXLN2gYeTWsenJ1ytprjFnNe6o35qRfuMrm6w3hvQpYbVPBkVcA6y6NqxuPHh+hVy87kEr3LV5DeAEfABY9SCksghIAuc9q2pbIt3ntaZ1lvNmw2G46Ojnh0/xH2tGJnsMXO7oReL0cpS1FoxpMRW5MRWgvKaEzepyz6DEdbFP0hBEXdOkRptFG0bU2gZVPXrNYrpmdz3n77bTbLmkGvz6A/QEug3iyo1nOqzQJXtQyyLfJej2wnZ2tvQq8/YDGtWBw3lE3Or/38L/ELv/qXuT9c8NVX/5D1O+9TbDxlMUJ0RlWvmc9nrKsWU/RRZY/GgycgmaJpa0JwVOsNm+WG9XLDalahvGKytUVRBIbDku3JhK1BH5xnfnYK3nFlb5tJr0evMOTBkeEZFTlbg4JLe7tcvbFHdrNgWc/59uv3+e3f+xO+8a33GG7t0xvssLezx+1bV8E3rOdnrBYz6nVFXTfUtae2LZevXGI8GWNUhm9bcjQ9Yyi0oldkaCO0rqENjiYENi0sqpZHh6fcf/chvZDzsz//c/z8v/krrJpT6gfvM7GOkTEcHx/ytddeY7pYon1gf3ebT3zyLrev7dHOTjh49z7aj3BS0tsekuXQC5a+AMs1mVGsvKUOgg8Z6B6bKrAWw58ePOTebMasqvFesFWNrS2T8Ta71/ZZupp7Dx5QasNOWfCFuy+xPxyRi2dVLZnZNafTKWFWc/Olz7D1c7/Avdbz2mtvs3j0hHG15PKoJJuUjK5eYbB/k+PTJQdv3ac5OyX3GyaDjMFwRCmeu9sFu4WnCC2LuuXMl7wzbViYEfQGnJ0eszw9ZKgc17fHZAFuX91lUliGPc0aw+Gi4X//na/w1qNjpBxx89ZtPnH3FtpVUM25uz/hpRuX2O4bejqw2TTM1p75vGXSH7N3eZ/X3n+Xe08e4YJF2oareckr128wmWyRjwa8d/yUN95/j2rTsphuOD1b0YQMekNufOIVhpeuUAfP8clTVrNTru2OGfdz5qenVFVLyHu4fMDD0zmnixk6bDCuYdzf5tblfW5s9bh7bZvaLnnn4BF/+J23WbaGrf42O6NtVrMl9x8dsci2aHzgc9fGfOnTdxiNSl57922OZ1O2Ll/i7ic/S9Yf8affeZPXXn8bpQ0//VM/xdagx5tvfpv333uLF25c52/967/Op195hU2WkW/vUvQmhDogTUCUwZcGb0BZjwKmGlZ4tr2m7zUIoIn/JhIfxHvwgYCwmS+Zn54igBFF0zSUgz7jSzuoLAPv8a0F0UiWId1aDiUE362VNATpVk8h4BZTwmpKpgQcoAyYEvoDJM9BFB6wHpyPa4jMKHJjaNc104MTXGvZvTlGRp5WIFCgEDI8OIGQoSRDghBkibjH1CcPcdNj+rZifXLMk5ljle0w2OrRz9ZodUqwxxi/YTTaIhvsQjsEN6LxJYvTA4ws6PX7PHl4yPsPHhI0XLp5k8o61ieH7GiHNJ7hYIfR1g5NtUI2j3HVA2RYovev0U4GjO/coWSH937zm/xf/+R3OJvOyEaKK3cm/OwXP0d/MuI3f/f3eXCyhHILH4ShEm6ORuz2h7jacfTohNlZRa0UG5MxVWNm6hKV6XPrzg3+5t/4VW7vGV776tf59pe/xTuvv8VyM+fuy9f52//Bv8uNF14BswN+C9QQQlyz2gA684BD4YirVg3BgI/r1Yufj4gQwsWa/Xz/oJS6+PnwP4aLxfYH+eA5/Xmf4/na2ALKgani4YSSOCjHfYXIBpwF1QOXgROqxYrvvPZVvv2tr1MUJS+98jN85me/iOl5hAWKBvEav/HMns746p98g6/88Td4970HVIuWUd5ye1/x1//mv8Vnv/g3CLrf7eF+MieC827gP/h4CARnMUqjQjdGdS+2ixVv/Omr/IN/8N/y5ttvMZ/P0T1Df9znszfv8C9dvYtS8PvvfpuTdsOm3lAboellZKIZt4pMNLUWgon7ZaUUWmuyLCPLMoyJ2/eqqi72qeePBSBIwIuglKHISvpFH60yAh6lBMmhlZqiZ7j74h0+/zOf4+7NFyiCQXmFUgZE8ZPq43n+1pfveiDu3yGAPBskAuC8RbQmBHB1TX005eH79/n2G6/x9PQY1VOUox5bezvs7l/CGMOtO7fZG+8iIpigEA/4uLdVutMHyFm2LQdPjjk8POTxvbe5/+ZrvPr1P+Ls4CHToyc0TY0Pik0bWNUBC2xtTajbhkC3d9zZ5ubN27z00qe5duMFvvCFL3L9xl2uX7+Myrp+Lh6hRfAYcuTDZaKPLZ3MEq+dgMjzV8pzcR0DiBPCqub08RFH9x/x4O17vPPwHgebBetgaWpL3TZY659TYMAFiw0e59qodanvHi1CAyIakXgPBekmxG7uaV18r//lv/9vvufg+uEtLx6RToDSglIQgsM5R7AOZzQtsKkaFqs1wToyHdAiaKWocQQJcXBX4L3GGEWmFCIKbTSiPdhAlhEHjxBompaysZispXWOqmmoGkvbxsbAxyZYNRu898wETrOMXl5Q5Dm9Xo9+njHulZR5gSkztMoJOeiigawlBKG1HpG2E+gcKoBRghJNCAEXLC5YvLPkweCV7i6IBUsc5PBxkXneCZ6/rZXqBvHQCUqxLbRWsU07sSYghCA4DzZ4vI/iVd02529D0IogUdwAjyiJ+ycRMp1TFFFU1Eg8dufw3oGBwhQUA02ZlxRZztqsqes2DuoCzWaNUp6yl1NkQ8DjCXjncM7jEYISJMTFt0fAO4I4tBa0EoJrsU2L4pkAu1wuCSEgYliv19+9SMLjfHh2J32/LtiJuyEEfHBY6+LGALr3ihNXCIG2bbEWnHPgBaeE2arC+8B0tmF6PENhGUgPdzqjUQZTFtS2pa5bMl2Tm4LCFAy2hsjsCf1yQCg0TZ6hgmG22bC4/4gnh08Yb08Ybw2Y9MdIv4emxRuNBIv3EIKQGYNRQutdPAcbhWZ1cY2etck5QQnStaEXwboo4Cnv0ZnCdQvO2JDxeocQcN7Rthbp+q/wbIEa8Bd90IgiU5p53WCzvNs4BQqTUWxtkevAvJlhrYWmIVSBpq4RpanrGucCohUowWQZvTyn0Ia1j/eukgadCS54vBKU1lFRd93KniiyF8oQghCyDJ872syhdIMLARscuShEhW4Mim2ijEb5KFxro/DeRqGPwCY4NJbxaEhQAURhtCEzhkwbNus1p9P7ZMWU9XJNXa3YnQwYD0uK7V3qomKzqVltGnRdczI9w+LZHe/QL3uUyqCcI4TYls2mwfqGoISgu91l1+bB+9jLvcK2DttYmqqmdS1BSozS7IwnlP0+/bzH3u6EYjBiuqqg9vTGu2zmEJShFYXzjkwbdJYRckdVb5DMoEXAKwIegkehKLRimGUUpguuqA2nzRln01OsDgwmE25ev8FyOmWzrrj38DG927e4cXmPWbWmbiyCog2Kxgv+uXVIt3bAh9BNOopnuxPfzRkgWoNSOG9j31WaMuvhRDNbQ7VcUecGYwqkmyedC3gUkhm8KILSBG0IVmFdAGVwNjA7PmG13hCamut7YyaloFWG0Rm5ydB4eoVgdMb8+DGrdkq/7LGczVjOlwy2hgz6BYXJUDqjzHsEArkSSmMYbvXYGUxomkc8OVtgcdy//y691Zz+zg51W+MFLMKyapktK0QpMpNhg6duYh8eDgZIq/DB0zQNVSU0TUteFly6dIk8u4evHXmRs7M9oa9zpvMKdB+ynN3dMaPxkMzAerXiyZMn0CvROm7QqiqObQicHJ9yduKZTuc0teXw5JR//Nu/yX/9j/8R92ZTbn/qM/y1f+3f4Oc++3Nsj0YohFri3FNojQMWmyXLqmJYjsDoJMwlPpQ478R1UNO23H/wgEf3H9DWNVmWcfflF3l5UFIO+nFNYHQU6KDb+AWC9djWEkRhCo0y55tBQSSHfAcxGSCQ5fEpo2grhxdLNshQGgRNCBpFXARnRc6g7PHuW6/y3ttTbn3uDtv7lyjLHAkShQ8rgEK0AB6xlvnBMW9+5Ss8feN1LhcDcgyvPXqfo7Dg1gtDXroz4Mb+DqPBiNmjFScHc/Zf3iI0M9aHBxxO4d479zh5fJ+ldTycz0BZPvOp27z84ovM7YpHR085mB6zNxlzdzRi7eaYgaYYTegZjSk8lELrLM3rBzx8/IA//v03uXe/Yd70GKsJ+njEn/zelL6cMXuzJtSKpmgIgwL2xjxZW14/ecBq1jJ/umZ12uARVFmyMRVHzVNkWPDCdoFeP+bJe8d87Y9+k298+Q2OjzeovGTnZsCiozAq8doRuAgqf8iy7WPH+ToI+PEQmgSCAm9Aq7ipk0AUlc+VIh2ftyrQ2jWFGjI/WfLtr32N2ekDfvpTn+LGzVvsXr0NRdcG0oJrWB3NePM7b/Fbv/UvOJnPIc+4du0q7TowzGquX4HBYBh3tYnvy4VwGQDvujWK5fDBfb761a/wla9/GReEq1ev8Jmf+gyf+0s/w+df/iTDec13Xv1TsoOSXgaSZeSZ0JQZKkBRC0Y0Tjxo9V2istYakRg5i+OvAbr9wnMqohiNUnGtnGVxDHXW4XFkmUGQaDbp3jf+vb/Ys/+kz//ndpvv+yTEPY1WnC9iFQrp/tJay9OnT3ly9JSz2Szu50Wxtg1ra7ESKMuSnd09xsMxOii0QKbLuF+i4eT0IQeHj3nvwQFvvH2PN9+6x8HBAWeHh5wePCJzDWG9grbFmBwkQxB6RQFGUVVL9i5t8/In7vLZn/4sn/z0p/jEy5/k9p1PMBrvA6YbxwXrA857lDk3DnnMDwpifIz5YPcNH3w2ENcCLhAaz2o25/Hjxzx6+IAnx4ecLGZUtDTB0XpL61vc+aQncX2sRCH+/H6JWkV8a42E2IbQDaNKodW5gK66x+2HnsOHCnRRPAqAuxABLp5TQuNiyGBdBwKOtq7IjMIojdYaXehuAIsuuuDBe985orhQ+/EQlEYElNaUWnfumdjJ13XFehPFgdZ5rPcEBE9B3VjatqWxHutqVnVLvmko85xFUdPv98mLkrIfkMzQYBDTi+u9Mgcf8LbGu5YQoMwMeRYjBydnM5z30cWWQVYYxHq8t1EE0rprnxDnzPBMUIoXzOHPJVwFEgJKBNGCFnmuTRWBuGZVXnWOq0CvKAnEhYVrW1pvQUAbhc7MxeSgVGzzoONjxkTHXdO2cTJ3ddzcK8N4q89o0IsCQ1WzrjbUmw3L2QbX9igHfbTWBCGKI+chITEoHS42h945GluD8zQB5vM5VdMQVGDTbGjrmpOnR5zKMc55NnXbTR4K6zxV3aLO3Yu+E5G86zpvbCecje3XhWGDjyIc3n/XuXvvo/vRWYKPzsC6MBRGc//RIb0sw9Yr6k1NmRuk9kzXc+atx/QKGmfZrGu0zhiUA4b9IaOtjBrwKIqspBwZRkETlObo9JjFeg4Ktidjbl6+yqVr+5jBgMl4j6adU4dA5iwqeDTxPoiSTRTrXNNitMaHgA2e4Ox3RXpFwCGdWNWJazp05xqFOJQnIyDa4nKPcx7lXBRvRXXCHBfCXBwQunbr+p8i/l+8Jy8Mo+EImQyZD7ZoVp6gFOQebx3Vas1isaHdCGWW0zqL8w4JoLoVu4QoOnpnqeqaum2xPlAicVHQuWRpPQQHEpDAxT3jCVgfaJxlZHpobdBao4wgPvb9DEVRFORFjvIWgkMHDyo6Fa2PrkSaGi0wHAy4ee0aV/ePePDojPVyzbE6Zrk4Y3PlEuraFUaDHkVZokyBzlrUak2zbGO/XmzYGgy5sr3DIC8IzrOpNogEgkQhUIs6D4rgXRSSrfIx4mI9zjps3dA0NRYQZ7m+f4UqBC7vXuaFl19ClPDGa9/k/fceYlc1g2yboqcxTYM2QmgDobYU1iOi0VkR53ELwSvwlkCDb2ukqRjkfbwLmKJAbe9weHrCwwcPGG82vPTiS/QnitqsOJme8ZprCRIIePK8ZLFc0wbBqW5TLcR7Mg7XtD5gXMDagLW+G+divzMmRnkRT+samtbhXIHpGXrk9L0wGPTAlLQI4gNaqThONBUhFDQ+oLIM0RneeVonZEWfvNcnVEs265qnT47Y7RVI0UcFwTcelwXaYOOI6hpuXNljvax5cvCIpmkweca6rullI4JoNlVD27YImlwZxv0+g7KP0QWbzYaNazmYLlifeQaZYI0QRIE2tAjBOTbOorqp1IkiqNifx5MJoS5oly2bqmFtJAYlrGWxWBCIY7VWijLLUT1HWWhcXlAOt9jb3WX30h5FrhiO+myqNaenJ1TVhmF/CESBvK4a3njzLarNijwTqtry5lvv8PDBfTZNxZO24uHZlMnWJV68+gJbN7aYrVeI0WR5TttF95qmodrUODP4QaG7RKJb48T1QX/Q5+r+Pm1VU63X7Ozucu3mDVSmaW2LNgaTFTTritVsQVH2GAyHF274QMC3EoMcXfDRFANs23D89BSMYu/KZSBQVS3rTUM+yDCdYCQqbihDAC9RUwqm5fT0Ed9561scTN/jE5/7NJ945RXyvHMhqQx8C86BDrh6wcH79/ja7/4+p2+9xctXb7J/eZ/F2VOO6wdsb2+R37pBr9yirdfYsyW5M7i33+Po4JDDucOMrlH4Cr9aUVtLngmjUZ/bV3a5urNNTyuqnUtkV/a5tr9Lr6cJWlFe2oNeDr4inB0Szp6SiWN+/JRv/u5rfOdr99nUBT4fsFyvcAdLTu6tuJxlDFEMsx6u7FHs7VGM+jx4cJ/Th1O2epfZ6Y0YDBrqagMijPKSQZkjfYWaPuXVf/F/Mj16izf/+FXaU8+WGTMYT7h19SZ7u1dB55xvV70PeC900wLfbZH7iO1y34PzNeL5/89//+FEuvPIFF0n++DzP7rNa3RAxY/owtAx/uV8VO66YwkBnAQa2/Ktb36Z73zjNa5Oxvzil77I9o3L3bXLwIGIAyz333uTr/7OH/LOG+8x3NrlF37513jxU5/GmD4nh2csT+5jl+/RK4sf2fn9uNFdiu9y0SkRlNIXgkx043hC8FRNTVYW/Mbf/bvceeEuL730IjuXduhNRmADm1ffYt3WrDYbWhXQmUH3SnShCc4jXWZZFp0rKKWjIUQUSsXPjUaMc9NH3EvFQGcbXTshZhdpnUVRr7MRqW6+98GjtOqC3ed/Hz5ut/BHinzwl/Ds/6HLeNPn194HhLhPCcFzenLG05MzTmZzVpsKS0A8tHWLUxv6q4prV2+Qm4K2saAyXPBM51NOj4+ZzU74+je/wv1H93n9rXd56717HD49JThPLpAHx3p5Rl8JpVFYW7GuVwQRdveusXvlMpO9F7n70i1+9me/wOc//3lu3LpJ3htCyAh2g+gBBB335kHIM9WZjcKPrXPuec618+8yQwdQITwzP7YONg2zk7PoTjw65GQ1Z2FrahytBBy+mzuiJnuuhQXVuf47m573nBuco0dP4mYgiCB0e/JOuAshnHs6vi8fegWicyk6uqxrcL6NDolzgYkQnUE2ijVVZch0p/Ar6Pd7KBVdc9F+C94L2oNIwIVukBOD9wHXNiilKLKCosgwtHgLuWhKlbHJhcb6TrSAxvrO9h3wIRCCYANY62mDZdPAsgGVNeSrmrIssd5hg0JroewN0AS8NdhKId6SG0Wmuo23ik6YIB6PQzRkOkPr511LFm87V2E3QMe2090ioBNAROJj5+0q0DZt19DnLpQoh52765QyUV/zLa4TSenOFx/FlW7q7gZpjRZFbjJ6eQ9RqlNw4xRvjKLINEbFYzOyFR0f65rZcsFyuWZ6chqjNHlG2e9ddC5EoYJglCbXJrb/usFbS3Ceqq7Q1QqU0HhHYxvGg2GXkurR59Zv76O4GRzP3DfRFei7NvVd2rB0vVcpgzHmQuA9v+bP/3gfnTuhiwiFEBBdsKlbbOPoZQXlwGAU0TKuM1RvRDCaql6zaAKElsVmRW/lKNaOs7phvlpSEBgrTX+0zaBXcFYvado1bXD41QoePmG1qunt7LKxLTZAriDzAdW2WBtdRKJju2cmQ3RsY5Qi2JbQREfdRT8SwXkfXWgh3uhKxcd98FjbooxcOCVD8HgX30NC3DhZ69FGYYO/SMNW3fwbQiDThjIvKLMcbxtMCJQ6us1kCG0e3Qg+ayFXbFpH2zY0jdCKZdPUbNoGWze4xqJ8wHQ2eyegcgO1YL2l9ZYSFcVSUbSuwTVRoMPFNOxO4Y733bkrlZgW7r1HdQOjVxLFJAWZ0ihlyCVQZIoiy8jyHKUV+EDrLG1t2dra4sU7d0ENOTg8Y7PZUFfQVhumx0fs7W5z9co1trd3yYwQxKBLzXK1YHE2p1nXlJJR7ka3oCCIcng8aA1aowNk2pCbDGMyJBgIGiFanL11bNZLNq6lqisenR7zzsNHZFmfXwnCX/6lX+TT/Z9nuar59te+yZPNIcNRzSBMmGwPojvEtuzkBeOtMZVv8c4SVFwYZEqwHoy3aNfiTqaUxZC8zHFGGAz6eK2xm5rXv/0qt6/fYP/SFaZa8+DxQ5b1mst7O1zZ2cG2gaqFjVPYrs9oAaO68Uo0ge4+8/H+Vupc1JdOVDV4FwMSouOYnxnDZNjn6l7BQg85Xjec+RDngACLdUVjHOt2wqYRilIhWQaqRmc5SmX0yj69/oDJZJutrV36pUarjGrdUAt45ellBuVa9sZbLILi+OgEoxV5WTJfb+L41Qbmyw3D/oayn5ObjL3JmGExwOiM+toVNr5lulngSsVoUFBtlgSTRZHcj8iKHqoc0FqLcvF+y7IMqhhMyEShdXx9tamo2xZ8y/HJSbwHO1eQEOLxKU2rhFyDyRQuWLKiz9Xr15jcu8fR8QnvvPsOL+cDRv0Bw16f5WLDwcEh0+kpVy5t0ytzSlOwuH+A8o7tQY/1w2Pe+YOv8u4Ln+XqaIet0YjAs/HWi0KbjCLvgjA/Ru6YxI+I5/vA91pIisR5xzqyLOPGCy9w49YtQtOCMUi/iBuZbs4WoG0bVtUaHwJlv4cqcvIuuON9oK0bfAhx06gNPlM0xAABGRAECYpikJOXGc51rl0lECw+NDFQJNByRm9iuXZji/XyiLYzZzwAACAASURBVMN7r3L7xpB8axsoIBt05xhAwbo54enBfVbzUyaTnBdfucLu3jbVaI+i8rz08i77t/Yx/QGz+6e0dc3uYMTj9+/x6OAx9CeMt8eUgzU3bhpuDIcc2Qq3WdF3Z4SjR6iVp98qysEWRV6S5y2eCr86ozoxtHVOeyQsH64ZDTzjywM+dXePejrHF2O2rl9DDwzXb0y4e2mMWsw4evSU6aKiv3edYvcKj54cY6Y5V65fpSdjcl9gdxuW6zMWdsGSiplztFphnzzk/dO3MG7GJ4c76OEY6wvKyYTP3rrBYGsr7kJcXEcGwDqPEYW6GCbO5YvnOszHbJP/wZTWHyzQxTXphSTzwdf/GXvNn69YJ90hyLkidG6OMFy0bSDQbDbcf/9dvvH1b1KvWn7qU5/lhds32NrpIcrDcgbDbZwTZqcHvPX21/jqH/xz3nv1DQb9Lf7KX/mrfOFLX4JeH98ExoMxs2Hg6b1jVJy0fzwch39BfC9XVfA+ZhNkBgJoY7hx6ya/kBVcunaN4e44vtA6xDlcYzmenXG2WpGVPZwmurCKAsmE1jddhgJok8e9gjKc5+oJAYJCFLEskCi0ik5i72K5pKgZSee0i1lFSimMzlGdO96FNppPjOlcec9d53TN/8yFDhfuqPOMuRioiAh42wlCwuzolIP7j3hyeMTx2ZTFZgMqZrjV3qGkZbWqOTw8YTqdYxB8G1ifzXjz9Tf5zquvcvT0hLffv0frA1Vrcd6DFrR4Ai2IRWtAtWSl4dJ4xN7lXW7deYGXXv4EV2/e4uVPfprReML27jbFcEiXYxfTMbGItNBlPHZhDERi/wrfOyrx44mcJ7WGbraSGMnzEGpPPV0xP5lxcnzG6XLJ3NVsxNPgQOg0Lw3O473DtQ7ro/kmdNqT6+YKcbHNzg1ugoqptj480zjOM+f0h4ugP1AifSaAuOfqfgmiDcE6QmeNDM7StjHlUXVplqt1dG4VRUbZi6JbyHScYxSI7eyh6nyB1tltRaM1KN9CsBgNRa7RWmic75xFwqpuu+MxUcxw0NgWbwN109KqQBsCYRMQWVL0SkQE52ysVaIU/TKnNIasVyA+I9MBg9CGuNlytqGpLF6iSyvLMvI8p+yVWGsRJ3jReGkIzuG9dO1kUaIRFdNDtXQDKlFkkkC0sXb20jg4qii+auleF6d9ZfIocDrdiS3nUZNu8BXf3XbxscJkFFkOJqbkBu+QEDAKpEuFC8GTDwbkaMq8R79fUo9blpuK1XJN1dScnZzG6E2WIZmJCfGiyAtDnmVkQWObthPDQIzGEVDBU5ZR+BERVF/jCWya6CRprCeUJZuqireLkovlzbnIKcLFgkrraNEWNEppbNNcuM3O/yYKXxoRgzGaPM/Jyx7kJTpAkSkyraKAKoGiZ+gPhzgBWo9TTRRcEdqmxbBhZVuapiHPMnSWkQ+HbO1M2O9n9CYjGmtp1hsWZ0vO7j+Cp0dIljPsj9jdLdFFnAydc9Gl4308Dx0dj+dmaHUeqH2+VkqIbjJHwEvsK6FzmZ0LbEYXCHQp0fG1eNfNJB5nPQGFCw6lvtsBKwFs0+DaFilCdIBJTDkK3fOxDmBG3ssx/RxV1WT5mlYcSiTeWxJN3QYh15q8UBRlSSuCUQW1d1T1nLaNTlejOgEQjxOFJ/ZdjSA6pkFpFFmRwbl71FqsaxDraduGoIj1+6pYy84EhyJQGEWWa0weU+VRmmpRc/TkkNUyMB5PuHt3yGCww9OjI46fHjKfzVnNzphPZ6yXNVevtezuXGEy2aWyJb1ej0wyqvmKtrU4azGDHmVesF7Pcd5Bl2rgvRCI9SmzzKBdhtYZmc7JlEG8o92s2diG1rbgWlarFQ8fvc/JYs3hasknX3mFnesvcGcdeOvb73CyWPOk2nDZ7nBrZxutcxplOFvVtOLwwaMd5DpQZHGhNe6XVJuK0HgKramVotaaYb/EFDnL5ZqzkzMOHx3gqob+1oDt/asEW/Pk5BTXWjIp2NiWVeNpWgc+oCWWOtAm1pHSOusiuwptBKVjhNb7zlEXdbwuBS327+AsogL9PEf1Bsyb+N4iMcW/alqc96zblnUT6NscTAEqQ3RB3XjaxrE9LsmzEqXiRn7QG5JrHcMVzuK8pcg1tt6gcIxGfVZVja9rTFnitAFd4ESoWocJcRLu9XpxDHYN26Me+7tjjmdbqOGE/t6Y9x4fsdlsaFpHMxoz7PXJ8h7WV/igyLQmMxoVotigsrjJWa9rni7XXDkuGY0LjMnROovnHjyCRwNGBwwuuiGDZbGYYwxcvX6Vz3z2U/zR177B4eNHXL9xl+3tbU5nK07PFhid0baW5apiNN7ixbt73HrpFfKm5f3ZlNefHPDwm9/hn+n/kX5W8oVf/CL94RCAloAl0C97FDonNyYJdIkfAolBJ6W6+StAntNFYhEf07PQCgkBZ2M696VLlzA6Q+lOeNNx7aIcGA9eAlpHl5AymvGlCUF5fKcB5T1NLgJiifbhli5VADqXEARGY8/lK4pq1nBFSgZs2Nz7FsW162SjXVyTIXkPLR5WK87efZ3D17/JIFRc2inZ3x/SG+X0lwP2hte5tH2VMgyxTypm7085OziFbUWmM8ZbY443DYeHj8nFsTPJuHzrGrcl4/DBI0ZSwHxFzyl2TMZiWXF0f8Fo4LC+5mxR8fi4JS9vcLUckjUlLmwII83NKzfpfX7E3FrUpMfocp+927tkoxKmjit5w2S6Id8a0Bph2q65WhrGt/fYyscUklHkGrLrnNkZD6ZrHs0C60YwmTDIG27u3eHO/nXElrReGF7eY+czn0Iai/UtTRXIyx5i4vrMB+kCxM/zfLmDj57zvcsH66c9n+76A+vQfZf34vnXSqee/YhcdBdrwvOP1jGbgVjfyraOejPn4fvv8I2v/BGlKfjiF7/IrTsvQj8HqcE1MOxTr1e8/aev8Xt/+Du8/vqXOXn6gFGWc+fGDS7v7yFlFoM1CvJRwbbfRrfX2Ll2/dnZfqD9vtfjPyl88Iy99xdpyAAoyHd3ubu7E93AAqGOGT6mXxI81OKpVSDrldjgsF32iHMBJRpT6lhOSJ1noT0vLqtnabVEZ07MitGIDnhv8MF3AZG2y7ACFbp/lQbiXie68uTiPOLh/9k7+yeO77P+eXZLdlJttx+TAEGbrm5ky2axYj6dc3x6xny1pm49GDA+xHIttWW92nB8dIJ3LtZwPZty8PARb776RiwV4QOVDei8wOiCvBDyzGBtRWi6kjfasDvZ4s6tfV5+8RYvvfQCd168w+3bd9neu0TWG2LyAtFCaFeAIFmByICgNPgGUYooBSm8C527K2az6fzH1EX3/LAt56GWKDnq8+e9JzQeP51z+uQpRwdPOJ2esdisWbqGTbAx+5N4z0XjcnTJOTojUbdHtef79k6bCXI+z4AWj6C5qEt3biyKv3zoaXxo6/vOwNlVsIpFJ/HPRigda8kF73FOcAGcDygC3jqaxpMpR9M6WudpraMocjJn0VpwxkfXV6fehxBQ3gNtdKZJg8JCiLZcozVog0PwQRgMt6jalrqxWBc7ft20NFWsr+YahwgxDcs7XNMgEtNmfQsz1yDjLUy/h5JOWe3SRQXI8gLVOqq6ol1uWK8rtNL0ej0GgwF5nse0VK0xqojtYC3Wxlp5UVB5rseEruZ2NAnFBSpw4WNX58Vf44B7/kUO4WIsEFTMlUV3aXUQBVOnNV75zrkXJQ8j6lmassR05BA8Ljhwlvlsg7MeEHrliMl4i8l4m8VixXQxZzqf4sTjgaZpaUIDxCiMUZoizzDEDln2+4hWVK7BhkCWZ9DYWN9MCYP+gPE4Y1O3zJcL1lUT0wTxcZDTdGmXIPIsVdc5d9Efz+sv+C6tVboI/nkttyjOqYsiqkWWY0RRrzdUdU1/vEVuNLWtIago9AI+SKyzh0YwUUxFsTuYMEdhveXJYha/kIOWUVFwc7LPfLFgaoVVUTPvahEq72G+xngDJmO8s43JMjzRgehcAB+LSkprab3vyrLFxVeMeMXoRazZoy5uaugEOtWlfYrgz2vZuWd97dxGa0MgeLDORvfdhcgev3TDO4+tG9q8IdeduKU1mQFfZPjKo7VQGEOeFVQ+OqAKo8nLgspZmhAFNuUCoXEEF6D0GJPhlUdnGsk02ICzFqdt7LsecqXxEuuUSbdQ0FrjJX5JSax7qbrCm+d3UfflIuLxwccvHLGW1tZoVTJWfYwxF6nRsW6eZbmoWa0cIj0uX96nP9xiZzxhuZiyXs6o1mvu3X/EwZMT9q9cj+6DoaHs5WyNx5gQ+5U6b3d/nm5sCdbjtKMJCmcDEuL9KUFBiNdTd0ImLqCMxwjcvXOXwaV93nrvMe/cf8g/+p//V7b3/pAb+1fYGYzpTfagqjiZHrF5coRvLFeHA2QwwG3W6FwI3pN5GJVCoQ29Xsn2aIRtLUWmUd4wVZ5GBRotKOfJgmaoC+ZnM957+x32795kd3+PIp9Qzxd4By4oVi2s2pjGKsGhnEUF180HMf07+Fh7T7oUX1EB8dIJbuc2boXJFEorbGuxtqKtAuRbnUMgxC+yCR6jNUHrGDFUJZvW07Q1FmFnd5fdS3Nazi68623d4EqhyEtMJmRakNZTNRuyLMf5FlEak2l8DS0eihxvNE4bWgJr31BICT72d1c3hNZhtFBquLqzje8P8BqUa2lWG7xkVKs1a1VQV5bg5VkakvcoQixFoA1exb5abSqmswUY+9zcEAd359ropPUWlQUyrTA61hZ0vmU47POJT7zEfLOhsVEItM7jXYzeF3mB0RmIoij7XN67zM/fuMVW0/LlN19jOZtzOD9j/vAhJw8e0CznDLr0GYwiiKKvNaIM2XMLm0Ti++FczB7Q2nSL/ADWxi+AUPELHPxzznFEYzKFlOqZABHjG9EBpwKq0KgAqFiTMuhAMTJxvS0WH9puwWsRV0O7BldB3gkm9RpcC9qjtCUrl2SrA64WYy5LSfvkLZrmiM32JXx/i8nlK+At9eP7tK/9MVfbJbdvXsKFOdPj+yyqHY6eLjmtDHa2ZDqyqHrNk4cnNOsp6kbOzs4IpUo26wqFsH/lEpf6hrIqadcZ5WobbzXHswOa5QnS36LWJeum4iTUNJs1i+WGRVsw3N2i3oGB9sxO13znzUcMByP2tsfkuUGsoxBPmJ9SPV3Sns0p9QAvhuVsiQ2WLV2wd+Uq/czg2wUER3/YRw8NurLM2oaNL9nJJgx6Q/q6ZX9LMzYGHyz9SxP09REykFhrOGhiCAEyJZhMX+hSz4aIc1vXRb7Px2r8+GCdX/ghxKULhex7baLOBZMPfnXAj0Kwi0H+INB6z3Qx5/jgKcePH3D66D6/+ku/zP71W6BNTDt2G9Axul8dn/DqV/+E//v3/oC33nkNW58xzIpYdzcTiryrn6UkZnQ4D96ilMLVzXm2VuJDeFavLUSXHIDW+ABNvabs96Ew6GBw1vHk/fd44933OJktsMjFfpag4lpaFFmu0ErRWheNHM8LpLEeTNwPGtO54M8NdjFootDdGPqcS04+eDXDRdaN7fatFymuMU3pY3UPfxy4MLQSnXISwAUf62UTCM6xPplxdnTK7GzOYrWh8SFm2Qj47no761gsNpydzHGuZXp8wtHjJ5wdHXN8fIoWQ2+QYUKLx8Uvd6wbQlEgKtArhEvbO1zeG3P7+mVeeekFbt28ys7uhPHWGAl92ioQdIXOBWV6PLPfxmwxCb6rdRdddBJAaRU1hv9ffjHIc/7XEOv+h7MZRwdHPHr/IY8eHXA6PWPlaio862ApVQwuElwsoe5jGSCR8F0lf4DOm9dpbqHrH6r7nA8chpw75/z3mlue8YPl0W7seV5pJ0SVVWuD0prgBOcN3jmEmFLnAuSdk65tHdB0G9qWrNUXQsp52tO5zTYoRd22tK3DKYdR4SL3t8uTuji04G10JQnoTKJwoIRGgXUqFlgVEwcf78myGH1qpZt0vY91zlwUBIO1BGeQPANjKIoehQ3YFlpb07QWa2uqqqGqGra3ty8KcOosj+2UeaRp4/t6S5Q5u6LqXWNqOjcU52pqN7x2bhzVpcZmWUEI/w97b9ok23He+f1yPUttvd+LuwAEQA451kbZ8jjG4RhHOOaNvoJf+J2/pu1whGNGM1ooaSiIK4C7995dVWfNbV7kqeoLEiTHDskaikhEo4HuvrerzsmTmc//+S+JwefUVRdGkgBjzVd8NMTkSSCnawUTSy/zXx9AGU0uYieD0auLywyK6IKUGsYxomQxofKHnJ6dMEbHpmm5vr+jX68zaEiPkQYtJG50GGOoJt8l7z2ehE2aqijZDGu88ywWC46Ojhm9Yxw7bm9vicGByICHQD5sOtN7U0pNss/MSExS7GWgIQR2qbl5c1FEk0MHYsxFbaENUsB92zD2W85WS5bLObfrwHZoKKj2YGhiSlol5mJj8j6bzWZAokmBbdvw9vyc1lYMy3neAIVA1TWHBwfM5kvGpufu/Ib7t29Rt5c8ef6U09NTiqKYjFp3QR/s5WVM0tOdFFpNFOpdEEMkh4foNDEKZaa0Z5AosJMHC7JcHDHtrZPOPbMNw/7/dxLEuqpQOvvg5TNa9qMo9HTt8ZkNJgUqQZqYelJKjC7YdC1t34Hx+K6j2WwYQiApjaxmdPgs/RNiX8DFEPcLnpIKKXKwgUh5g0gwgT0SYzXW6n1iVSRkLyNBZoqWJYWRhC4wuiwHllqhrM4SV6mY1QvmswXxcuD66oYuWFaHp8zncw6WC64u3vI2jAzDSIgD601DiO9ox5Hjx0uOj1cYoZBaYQqLMYaYIk3TorREJ50X7v3KPAHpShL6DODFnW8MOVClUBqspvWeg9UBv/d7h5QHp/z1T37Kz1+94/L6jqcnj/no7BkHp4/orOTm9oqfv3rDtq4pP/mEo8Uhbb/Jz19KWBWxRS6eykJRlxbTe4xWDAKE85RGszqYM7aOy7eXrGYzRjfSdR2v3rzm7OSUjz/8iMJ5Pv/JS3qfcKhsFUjIjGY/EvyI8xbvIsHnEBwxMeZQApkmIH3qyiurMWVJaRUxJBgibhxzYnb0mZERAykmjDZoY/ExMyCbYWTT9QRV8eTZc0ZRUnz+Cj94Dg8Pqaoqz8sALgyMSU21usANA/NFTTCK7qJjjB6MxAsYJWz8QPQBZKRcVCAiVWGQIaGlZHQjaehZVpaeRNM1aD8i3MB8VuGbjnsPw+Ax1qJKgQgREQNGkA12U56r9WKJsvkAtF5vOL+/ZhgcSlVIIDiPHzqid9hKURUWazVFXaK0wnvHajnne9/9Dk0XKauC129ec3N5Rd+0uDEzgKuqYj5bIGRmM5fLikcfnPBdnfj2dxWffue7/Pf/w/dZzizR90hh9s0JJcAmjXrfGOObA/o341cMOaXVxSmcBikZ+4Fus8GUBdVqmXlt3mO1QUhBdBGR8jq+k5YCu4V/2hvIjF2d2fUhZda/kBEtM2NOxB5/f0V/dwWuozQgZcQNLc4PJBUxteCDs4rDP/4O/vMLbC0pTo/pXQuqYXl6CqbJjIfxmsJv+O/+8HsURzVvzn/C53/3GcPFmrvrxM1G0Yo15QenPD1ecDw7QNaW1azGdw2LuuT7v/8HzI+fQt/w8j/9gHcvP0PrEx49/YSzT79D31/R3a/RSRFGT/CCEATNukVHeHx4CIVls94S48g4liBPgYrtNkIdkUXi1d/9lDG0fPeTT3i6+pjhvqVvBno3IHXi6OSAerEA6QmbhO9bhEw46bhrNtxtGqDk6PCA06NjpL8jjNe8ubokJMWzY4tsrxmvCw7PPkWZeV5Tp/O32tV5+7VBvPf5K9/4Jx+78/Avsr7+yySuu48dU+4fkTH3q4bMjEVSbrZ32y3vXrzkpz/6Mb5r+bf/8//C0cEKURbsQpqSSLi24e0XL/ibP/tzfvCXf83Pv3yB0YLj1QGzUnJ6OOP5k0csZhbwiGTJdjYRvVqy8scMPkuZv5E7Poz3SvyHmbBjz01A566pLkgUszrXwH2PnQzivfNsxo5tyOwlJaZwHKWy1NFn7+0UdwDKL0DE77FCtc717Y6wsPdcFCIrGIhZ8WXKvaQvhGwtkyRTEGCYPLzDe4yeb+75f+nYs6GioL1d8+b1a158/oJXL1/SuVwPJ5HruBhz42l0Ee8a3DiiELguMI4epQyr+YK1j/R9z2bYokuDNonZfM6jsxPqsmA5n/H00QmHywWrRU0xWzEGQd8nqkrgXKIfHYUF7bPCRTARPqSd2OcTC33HJsNOhII8T8V/XUv5P8gQk2ptB0Cv7+64ubzh/Pycy6srNl3LYMDJxEjEkP3ZU2SSp7KvzRU5Qf6re8lXW1bKmL0l2UPmQL6wIn3lqf7a8WsBupCyz9tuuYEJVJjAEedGYsz+SkIKUhS4yShRKksKYW9u6ZzD+QHnNFUsiTanfP6iBj4z6gxaSwg9WktKa7Emy15zGmyafLeyr5ZSDxelVBpKjUiB5HIyawiRfhwZnM9BEGX2O5JKUllDYTUpZe8fHxOt88iYZbxlUZOiZBgUQYe9tHJ0gYvLm/2iKJTCao2tSuZVTVmXhOAIcSD5vPBl+S6I9yj2SmmkUBm8dNlLTEqJ1tk83TlHiDlCW6oCl3KXI4caGmKMOOe+lsovRE43lDqR0ogQmbFYFRpbKAqrcWPA+9xJ8c7TjwFQaGPQUSCMYFFXKK0xtmC93tJ1AyE4mk2HEhItJX4YEUrmsIMU6LpAUS1Zr9eEEDg6OsRoSdP0dF2L9yMETxJxih5WD0lF02PkJv82EKQkp4CRsAeJUkr7aPGc/jsiRAZzFAJrBGHokckhk8f1W7RccLioiWlkbBtkVVBYTVkWGWxIguQTzg+EZY2VNaYdeXb2lIO65vWbF/z4xedU8yrLYwUkn1gtV1TlAcZUtMsF9nDF2G64urnm9v6O1WrFydExZVnm+24y8BRjYBhHXPD7Z8B7v7+XSimMtpOPo5jo6RmBSyFiC0tRzjBK76WCEsEwOoTKhrLGZPnb7vq1Tbv/PePoWNYSYy0xZimulYoxeAKRvncUWGazillZUpYlaRPo3UjvHDd3t5zOFhzPl3RlTbdZ0zYtVVFirJ7YtQGdpmRZKZBJ0Hcj6OxPJoVAT0xaJXJqrXcOPcu/T5kCHwJ+HPe+CMPoqAqL11DVFYVRkBzdMICQmOUBiEDfbzg+OeWD3nLfan728pJ37y5YHRxwsFpx8ugxZVVye33F9dUdr9+cc3FzS9CSkR4XHPOyQriAcAErBasqS1zXm2uUFkSZn0UtFTJ6rFEZlIsJoy0CQWEtVmmEkPT9gK0Nfd+TpGGxPOXJ04KXt/dcbRvabuRnn3/JTz/7Gd/6+GM++b3vcfT4jKsXL3n78iXbmx/w5PSEp88+YFbPYRhpR0dtC+43G9qhJwWPjJ6xX1OtFsyMph9HhPOoGDlaLFjfb3j+wROclfTkDqpzjlJpqsWC8e6OIUaqqqC7WxP6hhiGac3VkCQyZkBZkiavwJDtBrynXMyJPuC8p+1a2mQoqwoVoKgVgzUkOnbpYUIKts0WpQwHi5rRO5azgkoKNpuRJArOzs5Ybweuz6/wzmG0pi4UQz+wnNmHIJmUcuq3d0QB9XwGfo0T0PgRlxJaWnzfcXg4h8JQzUsKq9BlZHNxiUJyuFwxXt9yeLQiVXNeffkK0/dUZUAbkD4yOI8ylkprhmFAh0DoepKfIwvN6BwH8xWnx3OOZpJuuGe8fIuUKr8OrVFKMHiHluCCI7iBcegJvsB7ia1K2nFgtVxSVXB92/D29Ssu3r1FqoIYI6vViqIo6bqOGxH5sQ7IDx9xTsOwkBwcnsJRyZ/98C94tr3iex99yvL4CIklixwkqRuIWJQ22XTwm/HN+IXx/rFSqa/KGk1dYapyz77QUiOnM5uASQ4bsxG6nMzud/6jMTF2Pd6NmMISZC5abTFZhUTP0K4J3R3adejkmdUVm9eXfPGTzxDJo4ykHztmBzMef/cJqdTYZYl5eopYGu6b11xdv+PgeMWslEAPYYuhQcwknW9yc3FRszhYES8GlghUrVHBUXOLdh21uGe50ByuBLPjRzRNy/nlG7ptZKFK9FBwYEvsTLPtG754fcvhcoGrntMHh1OCtzcvKWeSR8/OWFrJpoPrbksXK8zsCbPFkkfPFpy/e8H57QtkSpSLmtuxAEoQHyLMh8hqoGrPqVaB2+aCjg2zwxqfHGvgagh0N2sWixX6+GNOjcCzIiR4+e4LHp1Izp5YTLkkmCWvB0cbHM+PH0GxQFBgSgMYdlFXaTcR9ufN92Rx76MY/4RLyPvg3C8Ccr8KoNtb+qSAwOP6lru7aw4Pjynq+h/9Ne9fBxBFJJBrLYMijZ5013JmZjz9k39FOa+YHa4g+CzNSYHkBtrbW/7mL3/A3/zFX/Lyi5fc3t2yWNSsljXHq5pFKagLmM2KbEsBpKlpjwB8AM9U+2RLmK8DOn/Xxm5a/+LMeSCukBnpux+SkkiuS8q6IvnEcHnLj370E97d3uK1wsfc2EiZXpVbZVI9kFD3IRAPtcEOkNNaZxXXe3N5V5+K6XUZbfDe04UOLTRKZFJMJiTk5uSuFjXGTI2T99/x7/iY5vselJ2ANngQ9OvJjHNoWi6vrnj7+pzrq1t8SBRVSd93DCHgYkCFzIiUUmVyRZJstw3bbYsfA2PvJuXc5K1dVBirmc1r5nVFVVrmdcnBcoW1JRFBO3pU02d1j7YosyXGiGkks6FiHmccCIW1kuACKXUonVB2mtFTorog5lCD9PDWf2tnwA6Fm2TgckcqkznpHZ8Yru+4OL/iZ198wfn1FZuuY4wRF6GLDmVNDjAkNy7EjlUaMlbjfVbAZVxHZxfWlD3iU9yRNeIv7TV5Dc1krBjcr30bvyHFVezR4ZR+eVPbg1PZMAw5mbcLodAkemXSTAAAIABJREFUqqKgtpl1klIgJk9KGWDpujEnYkwI/u7v01qjbURHgw8R4QLbMWKVxxpDYUw2oleKNMlplZo83sSuUASSQAuJEIkYsy/b6GXee2Ji8I6ysCxmFYvFgiQFw9AzDMNk6h9QtsQYmQ+XQuyllLvXnL2/wIVIdCODcMhuYGtatFFUlUFpQaEN1mrKidGV286Boe8h5Wvg/I4VNqX1SI1zIz5O7BuV7QZTmCaA/2rqp09ZYb3r8yUhGQc3SZIjRmuUBikTPkZin/9epTI7Mku0wHvH6Fw2ODcSWShMUVIVBmWPmM/n+DG/983NhnFibrhxYAiOdhyyl4WxBOOZV3V+bSnhhwGtNaW1CCJGy/fon2kPOoVJNhvFbjJPrLrpcxSC9z1EMotRYU3+vCt4x7ZBRI8RCW0NWgpECEgBs8qiZxUYQ2p6SqNznPIYMlAXA027ZVZW1AL01CEry5LVco6dFYwuMHhH6/oMiKVJAlrVJAVHhwu6zYaLiwsuLi44n7/j4OCA4+NjTk9PiT5LsI1SjN4xDAN91+XFVVu6OEzeZhGSRoi8GZjJk2/seqLKcnJCRJDl2VkqLTNwGxMh5sUkTZ0yF/ImryZwHJjkotOH2MnaE0Ik8A7f9QxfYS6CtIoheIa2pRCKbz17ikxPeHe75vXlJZSWu/t7htZR2hotM1iljEHHIofOTIupJDeL952GkO/9PjhDStKUAAzgXAY0Y4y4kCi0YjVbcHi4RBnNsN1Q2hqSpizmPHu2oj74kMPHV7x8fcnd/T1fvnjBbGapSsvy6Ahpa4YAd/ctZTVD6p3PYwYNx5Tv0agUShjKsmT0A24cKYzFWssQduy+grGbeiVpKhJSyoB8TMQAm2ZD8AmvZhS24pOPv40sat69esPtxRVCweXlNcOPf8SjJ484Oj5mVdY051e8eHvBKOHDp485XSywIdBP6V9SZXmDiwFBIvoRvEOGQCklui646UbqwhKkwBaGRb1gdbBktZgjRk+UgsaNXN+vOX/7lmZziXAdRnjcGNg2DUaXxJCQCazWOZAkOEKIKGmynFtkJqTWEu89jW/oRwmyIImITz7vC2RpSIwRN3Tc39wyHBaE2qJMgbGJxnu6Ia97Ssv3EpyzRFZrQ2UlSQnCmBmFIUaiiBR1hel6NheX3A4jx4fH+ORZzGsOTk/BSn785Ze8ff2KpSl5fnrG05MTTosKYyr0bEYyJR+dnpJcYt1scJ2jmC1RSSInuZ9RkspajBLYqQGkCok1FmsVVWlAjhhjCKPPxsFK5WS1XXuOTKMfxoG+7RDJI2RuRs2LgtFIts3A2G1Z31wiVMlivuKkPgIJXd9z0W2YxwZrPV+8e83t6Pj8zVvO/6//gygk//J7/5L//X/93/j9oz8h4vL1T6AFMA64fkDOyuyT9834ZvyqIXYdaTHV91N1OllzhJS4urrm+vKK46MjHj86o29G7q5uiN5zcHTEbLnADSPX5xe8e/eOsix49uFzytmckMANHiECxkoKW0IoQUTi3Zbu1Uvi3Q1F42nbNbLUhKHj+n7DEEcOnhxjvSSsW8x2RJdgzYL7N1cMXeDo+Ajdbbl99Y4XL19TxRkfW4VUkkcnZ3x0WvDi3ZYv3t5xslzx/Kjg4KDEViua20sos/zw7nbDz768IomeQ1NyWig+/fQTWuBn94H7sWd5/IxZDe/OX3Kzvac8O6Oa1xQLzaJU+NuWUmvs/AOef/pHHD/9Htv7jvbP/2+WHxyhlonbtObx4Sl1uaQoj7m/9HS3G8rZHPTI1XZD5T0hrTnf3OJmM+arMx6dHXNwcExRz3niCnyaEYLn/u4NVq9ZLAJ2cQiHH1KKkvtkqQ8/BFEiMOyj6abi7X0MLv+//Oo3/iuq7P7f+qQJIRBJcH+34T/9zV/i/cinn37KkyfP0Foj9P8PvkxiOgdl3AZDboodPHqUJdw7dCAqMIqEo9u2/N1f/wV//R/+I+3Nhg+ffsj/+K//DTc317TDlm67IfQN0jdo2WKtzswtmc1iQ9LZj1EqEhqZo+p+5TX6XRm/Dm9+8IKbvvsLrKME2YeObMczdj1d3+dwRWMwKZ/Tdub1erI5ckRCjDmxVTwEnOxsft5XGL1PztjXqSllO5VAroeM3tdQaaoV9+DT14Guvzu391eP96/L/nqkr1yanQpu6Hquri558/acN+fnXN3ecL9tuI8OLwGZsY0dIzLGmO2AQiL6SJhSeyGfB63N/uVCzFBGU1lDaS2FNrnplbIXmksgYqIPgdZ7zNAhW3BxxIyCQQw0Y89m02FNiVIWNakDtR2oqxkQkKpAqirb8oiJsfvbPgfEDoDMn1QCmeWMjOstm/s1N/f33G83bIaONowMKRCSyF7/Moc7pPhACtoxVFN8Dxvb+0NOisZpHdiRZXav5SHUMgdk7sE78TXP3zR+vQfdewhq4mEB2LGc3k/EyJHgYmLJKLQALWQOiTA2e49Mng7Oj4xjj49uD3h57wlpYgyZgDIaMUlSwaNEwEpHYQyV0WiZDRONEmglkSpvNkJMUlISWmZj8yRAC43VKjPk+hE/RogZrNmHCphcdGfmViCkDPYYpfFFmcGC+KDX9zHhfUBMgNYOTHAup7kMg0JrRV3mgIxoHEZngEVKhSmqCZycqMUpG6WH0TO4iELuF3ehBXLyOYsTyLnzeNolg4SU0JMrexSgjMrs+OgJIREkuDHhcTlxJt9YpNQYXVGUInuHhbz7CxlxaaTvWoYQ8QlQisJMoRVI3DDmjk5K6CHf0z7k63F3d4eR+RqO48gwDNi65PDogG3XsN1u90aKcRfsmrJ/WoD9YrZnk8ldKIbYb0pSZql0Wdp8bXcAnYAUHVokFrMCkqUqNNH1CKOYTwlyI5D8SHADfox4l9NQFQo7eqzOQRGXY8MmWkIYWBjLXBaURzMaPJ/fXnPRNbQvP0cJRalnnH1wihaKoqxYrg6oyhqjNePoOH/7jru7e2azGfVsRllXKJmZlELIfZ3unGccx9yBsxKhMgtNJoEiG3OLmKZ476mbIwRojZw07mnyRVBKkXjY4Hfx6llCm9OYo/A4r3Ahy9R9ynMkhsjQdLQxyzWFNLADhWVmUKmQEEJSlYZDoEuB26Yhjp6h74hjQniZU2+qagKO8xqyW56yLBfkJJn03tP1+bRfVWUGnqYDBlJxfXfH0WLOarXEykg/DFzf3GK0ppxX4BPjmOjHQKJgebDgQ7NA2SXnl+d8+XKgHVvabos1Bm1LVkdHuKQZo6OWhn0ox5TmnJLYh3YYZejHlq7vkbbA6JyG68acbuxdZstKmT3rQgIlBXECGo2uSNKw2TR4lQNojo+OCH1PKSXjtufm7pZ3P/kJl3c3fO+jj3l6eMLq5AypJD/+4hXvrq741qNHfLBaclSWzGYVRTWjH0ZklVAq0fsR37cMTY/VhsXJY6wUSGsYUySKyR4AGLuW5AOq0IwpocsKReTu4g2X775EKYlRdWYEWotMEJ0nTEbtUUyNC0QOtJ78SX1MBJEPhm6aO8potNUoq3LwjFDIaOnbHkmk7zoaK7Fzg9CSruloutzoESKhjUBrkQ8UImWJv4Lgcop0bB1FqQgpcnvfcnd3h5RgS0vbt5TKUgHN2ONRNOPIy4tLQtOzXbfIpHh0eMTBwTFJS1xKHM0qmkVN9FvWzSb7i5iSqCRhHLBVMa3xOXRFKwkGtM7PWz2rkUXEliXu/o4xDfkZd+M+ep0psdhojQ+By8s7/MU7pFacnD5iuTpmNat4fHbKze2G65stVuXAI6FlbpK5nrPjU56dfcD5xTXX1+9oupH78xukkLxwf8/P//aHfPzxJ1QfnE4GuAlhNClEovfZo+Sb8c2Ar69Q9+Acu0pl/3V4kITECNtti1aGw+WKdttwdX1FXZQZmA4R17W07RaIaJMZ8X3TE3xeP0PoqRcWW1nQNTQd8X6gvdoQtz3Wadptgqgo1Jx+23D5o2uadyNPP3jG0dl3EMczWCrKzR2Xn/096xdvKU56DJ7u3UC/jnR9w9Gsg9gyDrdUHyw4fKJpyxWPj1ccVomkRrwVbLeRQpfM5k84+/anHH3vAFuuWL/6CePlT4kzhSkWfPu/+RDx6COKmeLuYs3R4w94Wn+H2fIx2yZipeSgKlltGk66QKgWzJ9+GyfmuHf3nP7+n7A8M1y8/Xt+/vf/EV1XnD06ozp5TqVniC9/DrpncWr56AguXv+UbR949OhjTr/7HcThKagCYo8wEWVrlDkiuYR62zO2EZSH6hAxe0JVP6ISFcgFUPDgXfTezf9K8fbbXsk9jJ0XNgikUtnmpigoigqlbfaSQkwkgDRZd/zjaMHk1KCOKRKTztY3OTWO3NAW4HKwwM3FOT/6+7/msx/+FVeXV3z/9/+Yf/tv/xS9XJHaDdv7S7742U+4ePGSsUnYKdVd68yGDEjCVCtmlYYhBpUL9m/GLwHSv/KH4CsAda5jFKREHDzb+y2b+y1NCESpMIUijSMhZSuYQuX74WMgiIBEE6e6WQiRnVKmuSlUbsIDE4g3hQuKhPNj9hMMZIWbndQ38cFHK4n0S7N270H3zch2miE+AJuwlyXuPyMYB8/t1S1v3rzj1as3vLu44n7bMARHFAk5ESF2QWjjOOJHN4VFPiR6Simzck1IkrV4NCUlQilKI6iMoJCZLBKjZPQBGXL9p4JDupbYjAxhS9Xn8+bCH+Tfr0qMKSiKgrKumc1GynLAh0ACrKmZ1QIps00UySJ+yx/9xC6tdhekIhEB0gi+H+nbnndX11xuNtwOPU0IDNNaq8gS1OgTYiJiQQ4ylAi0ChOpKVtE5XsYIU3Bj2LSAaZdiGCarAqyxydC7evY/88AXZoMX/exwmQ5WhJTR2CKc943zcT0M+Tkmkyfzi8oRokxCmMtBRrvLW27JUwm/0qpnO45FebOB5I3UwJqNl1PUhJdZJQDmkRZGLQQGC0ZVGZpKC32iZRC68mzVk4Its1G/UnlJBUye807tweBrNXUpSUJRdOPOB/x1u7RTz8lcu5SKcfgcU4xjnJPPY4h39BxzEDV2A0ImTBSUFjNvJ5RlQWz2RwpFUknVCzwPjGMnr7v8cNAVZYPaCxikhInZCajPnQ+pCCRC7N9apoQmMIS3YgbBmIKqCTQQk8sq0DwY07nDQGSQymNUhZjdgtKpBug70bGvqX3AYTK11qanDakNfP5nKLKbCJ7U3Czuc8g5zCiigojJSE62qFlbiRWK1aLBW4YMrDos4daSJlZtNsj/A4h3qHR+1RXtZf1wgPopLVG7jwbJmBEa4nUFjEh103TYCpDXS0JwdMNI+tJlhmTys9OElilIQVUill26UdGF5EyoVJiaBvK0lCUlvlyTtAKExSuGdn098hLmK3mpBT2VPRZWTGOI+1mS7vZcnl5yXK55PDkmNlqSWFtlgCus29fCAE3AXTOKZyMBCMI3oNP+TUisil/yj52pPzfCrDWklIGTUJQJCHQYQqYUApPRE4JNDKCEDkJNsSAC54xeApAJUEcxwzCiHy9Q0ps+5FuGEjBIH2kb3twI8YUfHD2iHR1xWbT0Gw7nPf0fYdQJrNtlZgsJTO4H99j0e0+a5EPiCnmSZA3STEB45HVfEGMcHt7ixWJ0kqMqmjanvPzC5phxnZwbBtPlxJRK5KoODw+olrMma1mXLx7zds3L7m+vyN4GMdIEFmyKqSZFleBVBptC6q6pizLbOIrsnxYK0WIgTSME1Dvid4z9jmF2ijJODEhs4w6H9yKugZT0beOzXbNoDRD12Gk4PHxMb1tQUB3d83VzQ0/7EbWJ7d86/QRZ88+ZJSCq8t3/OTLl3RHR/iTY55UBWZWU/pAuxmRJHSA1XxGO3pc2xDdgAJGPyISzGcly2pGQNCs7xidow+KIAXaapbzksNZyZ3wNNuGWMLxkaa0JUZnGbMfB1x0CCVACpwL2GTxztM0Pb0xLOtJOumy/LQoNaYy2ctPa+ZllomGaqQuDUpKxqEHOxACBD+SAGMmTw2RyImNkZSytD5GkZsoMRBDZl0LqfCjp9s2pBgpCzs1WUa6ELm6vqEsDEkYysUBd80l59f31OYdwcHxyRGFlLihJ/QtlUg8Pz3irVhz03QE55FK4dyAsJKQPEKB9yMhjJklHAMyGayxoLIfZfCeddPn0A5t0BMtPk5pz2VZIkRgfX/H7f3tXhpR1wsKJTk7WrF58pim+Zzt+pam37A8WLE6OkBIw3y2YFEtmVFyIGcsT05JTuCbDn/d8OMf/B1/9Ad/xPOjFVbPsseUlGA1tqi/kbh+M379SOk93G7XKWZvfCwBpOBgtUR99FFm8StFXdc8e/aMsqgoZzUxeLTWPHr0iJPTU2xhMdqyvd+Ch6Iu6YMn9AFMkVOam5b+9p7QO9IQiGPEmBqERihJSCMqlAy3ihfjPbE+4XghideOvokMtwG2jtdvf84wtnRuoBlzM6oNktBlJuoHi1OenjznVBySnKOgJYQtfRhQZ8/xYkl69geYg48x1THEwMFSEm9BHR2APoDZKTz/lKHfslpoFkfLjL5EQ63qLG0TEd02rDYboipQR5roYf7dx5hFgWjPOQgLvr/6ProsqJbHaFnAzQ3L5yXUBhaCRXqKsCPhvkXrgvF6oIxbmHvQLViPUJm9EYJiMDAkRRwEYDBSIqlIswMQBVOs2cM9F7DzYvuVq8M/g2VDCMFivuCPv//H9MPAYr6AKTwuRUgpB7I9vNl/+DednUHT5NGcrXqic2hD9pd2CdeMvPryJf/u3/+ffPbZX+Hilm//i+/wL37/D9BHJ4gkYLGgUA7zKtcYwSeEyb66afJM8xNTLtvNSGIykDLR4puRx6+d71+lk07MmqlnISUpJsZ2YLve0G4bBu8JEgy5dlEpolJCpkSYIriyt3SYFBhqsnLanXuY1GG7n9V7tXn+/oPPuXyvdtr7YAkeGEbT2NeTE4v/d9p7cLo0aX+dMij3Ps4B7KWt11dXXJ1fcHt3x+AdQudApFVd4kl7IlKc2Fh7u6YQctKnUpRlmW1wUsip50nR+ez7aVTEKNAqZM/ikD3rZCGJXpBGgRcpe0r3UBowStMNEqE0VvVIbSmKitlspF86isrQ9k1e6xYrdGEpZTWxZt3EnP7tHDvVpydiUFMglSCFRLzbcH1+yeXlJVe3N9z2Ddvo6EQgkJ8XPXmiE+NeSeq9J7ldMviDzVYKIStEwySDlVM6PZHgAsjJOiuF98BYpmcw/Nqt4zekuEoiOVkmJ4NOZv4klJhAOMFeVrpvuIu8fZfGYlXGjMR02x+68pGqqvLFnKDa4NMe/BpjpmzGnS9rijghJ5m/JKRI9Cmb+k8AntYaY3WW7imBKwRKSZScoquNRGmLLXRmsUyFUKYpZ9qhRCBFTqotbPb9SikRJ5Aoe75pnA9stw3KZ9molIkQ9MODGCIhZglWdLlYH4NnMBI/BrrCEOJDIIKQOkuDraQQEm3DZJicuychRvLSnV9bTCmrmIWY7lN6oFPLqQszxSUnIVBCYbShKCxKTi4iscK5keA8AM4HYmwzICEyGysQKKxC6gUzssegdw8SXyMVRgkKo1FGUtc1rcu+UkVp0TKnce66PXf3N/TjgB8H9JRwIqQgyin9d7oVOUBh6vLsu5rsfep2X9vLMuPOSyHP9iATEQkif4iYcN5nTzQRsL4mSYV3mc5rbYkURQ4nGQNRQAgDAcORNRirodJApPeO9XpNe32OqCukMXzr7BHfOn7GZtvwwy8/5+X1O6qtzewyYLVcMa9q6rpGkWnoXdex2WwYnWPetdSrZQZZyQuwVJKdOTAx5W5mmFhzYUqRiQkZM8ovUga2lJAgNX7s8nyZghnCNI9DyvMpxIgXMUtZpSQpSFoSlcjSyxhyorGYgDMhkTIbnpISnR+4ur3lQAyoJFjNZ/gwsO07upRTWktlmNkShEGZEltYpFFIJaaDSP773qfoawRGSGxRTszbnI4aYsQNnuhHmrbj9PgIqXJIgU8e5yPD4GnbhpACt82WEUDP0UUFtiJEjUySQilOz84oSk0xM7x48YLPP3/J3d2W2fyQ05MTBH3uLqeIFDJ3n8oSaw2QN9q6qrPZbkoMMSClpLQFhTWsQ4uIEa0VSRgEEh8zuImSdL1n8APe53tWaMUgEkPwEBJGJI5XK+Si5Hqzob1b8+WLlwzrlqePHvHB8+fUyxXdzQ3rruHLtxckLTm0pzgpGVTEGM1hdcCjqqaa3fDm8oqxaRBEgh+RQnNgKx4fHJKM4HJ9w+tuzdV6oA8jm82aMPR8+OiYUnzEF69ecXHXcHNzjYolRVlRWsMgzEOQUEo5DCjWxLDzDBUEskw54Akie/dFwIWQO75RUxmN0pblrGB1YPCpp4+erhuyrFkUWKOwWhDDQApFZk6r7NfjUyKKzMIpdYFWGmsrnpyWXIyB68t3xL6nLkv0GKgKTVVahr7n+u6O7XZAqopydshmSLy+WiNMyaldYo2mLg3BFyyPzlDa0n75hpu2gbJAjy1ORQY35A51DKTgEVFBCDmpdaLOC5GTEbfbhtB5joo5R3U1NSYiupgCZXxACYnVJv/ZEEhuJEWFTHmOWCnwJgPwMThCGLEJ7q7u+WITaM5bPjn9mKe/9z3+7K/+gi/+5jNCOxK3Htd5UsweOAJBFJKk9NQQ+R0+oH8zfuNIMKkoJnhuevYReU1OQuAmX535bE5VFUhJfjbnda4BE6A1Zj7DCJHl+CEgrWZBTXIJWRpMVUNsCesrUrtGiRE9M8wP51AZ2vt76uoAJwVNCMxnc4ya0WwcrQzEgyPC4TExjNRFTfX9iu7mmp/8u/+HL758R08kasny8IDqk48opObLzzpeX/eUseeub7i9uaeUjuVhBUXB0299m8Xxc0T1GGFPQFiIHZyeouobRD2jD0v8KJh3UOgTisfPEAYYbyHcgWnBeBg3jPGKbXeDmZ+xrA7zPrlMDBc/5/aLH2JM5PjZMWgFpmfbXnFz9bcsDzWVUlydXzH4yNHRY1YHxwxv1vjLjvvze4qVRh4HzNMasapBFqiwQg4lw01ibEeMPMKGY/ArhJ/ls8dX8Lldq35X1MuHibAb/4yWDCk1sqhRusgJqfAg8RVT0uHXMUv/AUbGB2KWQaWcAJmMIBlLJCKjZ3N9z9/++x/yV//hz3nz6mcsDgzLxx/w7PmHLA6OGJqWsp5lME9bEArnE93oUXrEeU8gpzZO2aNINApNFtUa+IZB9xvHRK75hS88pDtKkVUfbdvS3m9xYyAJmc+NLiCkQKGQMZBctpuIKmYGU4zv/QI5Ff65Jsz1Tw4jFCKQ0i59M2aXG5HrV6XVvl7KJWVCiB1bNL/Kr5W5fsOmy0AKcY+2CiY2QSLb8TjP+vqWyzcXXF5c0/QdUQmSNdPzm0OS3FRjK5EDCJOGGEeGMVsa7UL7KLIXXIw+hyMFR5psmowGIx/uXYjQDxEo0MmiRokRkUJBpQVGw916jSkMpS3R1qPUQLFumG8bilpRzwrqukRZwyIMRDMAIOQ/g/xmASLlNHk13S+ut7z94gVffP4Fry8vuWka7v3IIBLdVBuXKaGimPznpmeHxOA6xolUtAsvjMll+V/wpJgyPhazZVsSWb0IU1NnWhF2mK9UEH4DL/fXmymI3F1JWb9KRu8fggj0Pkk0m/Dtwp7zVyLeDRRSo7XJrCwjkVpMKGIGr5LItEqhJBiJtZZxdOiQJ6WPAT86kg8En0Megsjy2amVNaWlgpQe7QzGRJRWNCOTsb5ES4+1CWtBIfFJ7dlu+c/KnA45PZAxBaTYAXSg5eR/hsyS2JBZG94rrJOMXhFimjyRfE44DNP6agNhHAneEYNjGLJssmkG2EmGjcHogqIqsbbElha8Y7cYj8HnBSKv2oiYWWe7qN8w6SIzcpwTSePYE5Kf0BVJRNANHpGyX1Jp9SQrVVMYgdoDjKSIG/LDGpg6a0KhlUCpInd1fEaV27bNybsTQy0zIiVVmVNSdwwZnzxN09IN/VdSWNVkgxGT3FO4Y2KSxMW9D9uOBrz72Mlcd9dckKb7pRAKklQIrbKJfcqysZQCUmliAF0UKB+xtkLZGq0qtpuW9bghuYipJcSRTGQVRJ/QpaE6OqCqCsaYiEZyGwLBDQztluQ8RaFZLJcYKQjO0bcdcrOhKkpmdY2dfBmllKy3G9bbLZuuYdY2mDpLrDPQU2GFyqmtavos8odWknEcAYgyIGKamKuZwSq1Rnq1v2Yqmw3meb17bsW0iABpAnbl9HNCCYILOUwFiVIm99JFnI7pEqFkDm9wDhUjIibGYWToR4KSGJ03nRQFylYgbT6YCIFLcb+BRdKUQstkVp/fQ14MJV4InMsBEgiFUjkxebPZcDAvmVUVMjlc37FptvlQqxXBJ5rRkbRiZqGwJTooousYQyCQUEazXB1wfNJyc3vP4ALSSEbvMvg3dRx3jNWYsqxdJgdpxBiJVTpLRUOmUyutMdpkEDwFlBAkbVDGEGRO7pMyBxvctyPOS3RVU1mLmM2g2zKst0QSRklmRUHSklJq+vuW27s1m03D9XbLs2cf8PSjj4nNBtotqqhBW6SG1dkxM2mYFzVWWvrOcXd3T9u1KGOz31wSlEKgnUfbglVVcbVVtENDEoqYIr7riM0dMnq+9ewJ5Wzgyze3xEFhi5Kjx0cU2mC0IqTAGCIpiiwVF5rCamxhCCnS9x19gKQLgowEmSWrPji8GxCxoJCKyhiOVwf0sWO439J1DeOYEEbi3EBMHik12maPO6UEMXqcgxQcgohWFpkk0SWSg7mteHb6mHUcuL6+wYREtTzg+OCQ+82GcH3D6HJB1I05bdL7LcZqytrw+GzFtz58Stv11Ksj0Ja3VzdsRkeMPncjk2OMDhdzUpqYKOa5B5X9IpMMqMk7U8jcuBjGAepq7y+TTYQnw2cBWgmGwdHe7ABSAAAgAElEQVRu1wxdS1ktMUowdB1SJBbLGqE1Q3AMXUs1X3LVdrSbgcYnnhye8of/+n+ievKUnx48I1zd8If/6r/l7KNPkEWNi7mRIYUGlZmqcXcE+LWHhG/G7/IQk1riK+fMlBMIk3xQFRiTzZnTOPXMduxM8SAXysyT/I9KEQqFUCPC3YH0+NRyd/2S2N1zeHRA+eQA5gq33sC4ZtCRVBaYouJbHzxlfTHw+vxnFEczFsdHmMOTXHRubjIx7PaSFD3desPFdouoDXZR4lQkCbhuHVJpbpo7vri8RBvD07MDjh59RH2yYvHhc1isECGBus8yUjyCgN+0dJcbmBvmj57gfEfYOspHp8TtlugC2gqIW5xr6Ls1LmxIxlMYD+0VPlzjxwElAkfPz1C2QMwXJFkQuoEiRJ589G1uzz/j8uYt1AYnC3725hKxbVjGGU/nJ9y8e4NrOuLGU3rJIknsck5VPUYWI017T3u5oShKZvMzKJfTQ/81qMNXbvTXpJq+J+/7bR4Pxv8ZFMlSzwdWUQwhpwz/Y74GmFgPcq9gUmQmRLPZ8OLFC37wV3/L3/3wRzx/dsKf/um/oVxJkrEcHp6h6+Ukp8ohfqawWUUkVVbdSIGPAQt7gE5N/5bCIuVvL4Pmn3TsztQAIhf6MSbWt/ds1w0A2hj8FKoFuzouK1oCEaF35BcgCnJezkRkCflnY8xnnhyk50kpM5QfGDq5Vn0A5+JkVfVV0t/74Nw3EtdfHnvWXJwWtx0413RcXl3x7tVr3r15y/X1NV1wBBIuBXrvUDErkVJiksrmazyOI13XEZzLElWlUFqhRMZOghP4FBAoYnCo5LEyoSV7dCcgp/NqBB8RRGTyWJkJ1YWVSOGwNjCUAqVy+KAuFO3QUdWKulOcnh2D8CQ8EZeDRADEP0Fq9T/YyE9gFFMNFgSpdWyvrjh/+YY3r95yfn/D/dixdQNOkf3nQkSriHIZL5DawOTrmILY4xA77CHFmIN0UiYY7fDzlOJkxSMmlelEqHqvHpDyq7vp143f4Hb6AMr9cpsgb2JKZAArMh3KUppSwQXj2FOqCkGJ0pMcTGdwICTPMDh8jBNJLF9QKSRaW5IUFDrLhYJWBJeZaCnGHC8LE3U4EsmeJS7COIIKEZTAx+4hJVZErA4UxmNUjs4l5AuotEREgzBqYrNNi9mkE86pOBIhsuxKGoFUibko8F7hnMqMpInK6lzAuUgYJjA1JmKVZW/OjbhhxPmBthv2gGcSI1L16K6nrGYUhUELsFMSZ/65HMedUsSnkH2cyHLXkGJmtKVISBN7Y8eOIi8KznkC03tP0AVPDA4BlKWllAZjFEJYpBD4KQGoGUa6vqNzGVA1psRaC0BwHh+zD18g4N0wMdnk5J1WZUmgMYxhnEIKRsJURO+54CJ3mvbzTIKSmWUSwgNT7n0GXU783W1aGVRMaWeommE1qXQGdogUky+bjzFHUJeJfhhpup4kJYWxuBCIQSLVJC8IASEDXuTOY6lKlkXNylpsPaPXEn9/w/nVNf3NhjDAKOFoteT07JTtes27N2/ZrjdEH1guFqwWS+oye5tYN6L7nj442q5Dp8AwDNOcm5iDIWsid55zaTLmV4g9Ai8maWgKMaPCMbOnZMrzWekMLkklsGWBsiYz9MhMSxc8TB2EOM2pXYctpeyhJcXE6Aw5cbOsaharFctlgbtcs91saPuGqCRVtSBJRWUKgk1IY/EoXMxMOI8HEmIKitkzICdPPSawT4jMcHXJYZVGyQwkK20xuqDrRrqmobaKVV0xK3MAyc3tPavjA/oh0DVbkm2gdIwZ8kVpTRSaMIHZymiqWc189ISgafsGZSUxFfk+xMA4jvR9j+U/s/deTbZk55nes1ya7coe06cdDGE4HHIgUTMT0oVCt7rXT+Uf0I0U0oSG5MyAJAA22h1bvrZJs6wuvty7qhtAgw4EMcSKqDh1yuzKnbns+72morJM0fRFQHArW9txHBkGkSeLd1Jg9D2mShhrSVqTQiSljLaG0I8MY6G1jjAO6JJYtS1jSoxDZBczRhXaqqY6cnjT4DcDwQe+ePMa2zjOj455/sGHHFlNIbIJHT702CzBJTZYxnHAlMLRfMbm6hqlFfPZkkZb5s6Rdz1DGEg2YSqNrQX8MlqRwsjlq1e8ffcJT168z+npC7ajZlwXLt5dohpNe9YeGKw5i7+gUerA8lVqSmzUsmgWrUWGWgp6SihWSpigVglIq1SmndXMU6LZ9AQyPitGP0iCuGWqIEMqSdYKJZtZjSHHLBscEtu7e7r1hnbZYKqKu4tLiJk0jpgCJ0cnPH8aicmwvRvY3m3xFpFNrzeYt4W2UZwcH3FyegLGcb8bWR3N2aRMj6IbeiiJZIrMhTmQoodYDr5y4uEo8vO6qlgulpgswSlojXGVMBpSPGycS86Mfc/19TXjOLJcrHj/wxW1s5ATbe1ISuY1Pw6MvqcYzZ2tsDhSpVnqTH92xMnih3xnLBwH+OGP/i3LFx+gbCXkJxxFCTh3YIr8mg3E79u/4rbvHEVChmTelkJFmYK15rOG+ax5+JXJPgs4VJrlNQpoSXKfEBFUHhju33L76hOKy7RLR1Rb6nnCcIcaRggd0a+5izdc3+9QiwVPv/st6hcrnh41VGZBdIXZcoFSmrHr2b55Q/fmZ9jNNX/0w+/w/PiYn/38CwYbePoH73FyPufqumMMirDRJNXjN7c8+egZH3/nhGffewpHR+B6VLmBugc6Ugr0dyPDy7c0Q2J+9i3K2RmqzcTP/hbfVTRnzygk4nZLajusicRNh6pmYgGzWqGi5v6nf0vGoNqaxelTzMlzmD+j2DPILffXF7z98X+muhn57CevoLrlf/4//nea7/2Am7cD2/uK8/oYNwSeLL5NvVgx6kCcGyr7HMpTVDkih0vu7xXvLm5ZPu150lhSrRj1ZMOAgDb6cKQ/PDy++fC2/9l/+Qe8r7OHHqdyFh6zSeTrJYvvm9b7wstv4JqmjzR9ZjLoeLgC7JipTc33/+0fcfrsOc9fnPDD/+mPifGeu7t7bNFyvlYWEGsSZRy2aTC7Cq2lCJwfgzM8ApWcEzn578Dz+423bzpFP1ogH4+Ox/+WUuh3gct3V9zd3FNSQTWOHCIosYoqJaNzwRgBhAedpmcv+/f9ByBzbJ7m2EdfN1YJIaVoUpqUVnuPdxVRWh0YQSgoj+dffhGo+9cUBPL1tj+WZqazVdn79ck8WLqB+5tbPv/kM169e8vl5SXrzYaoFViNzwmfojDmyBOxZq/AC5P9ifgHKq2w2mK1PhCEjFGQFAZHDAGdR5xJWAWFRFIaMOQsZ7QcR2FrZY9XCVWMkIm0w8fMrsuTx52mbi2peHxSJBzn6hRXO5RhulY55+2Zlr+rTYgfkHNCj4l0v+P28oqbtxfc3dzSh5EuBsZSCFozKJGLlwImgyqiJMvk6XkllNIcwudTAjJ7EzijJNDlkA+QMsYJyUE2SYLHTBcHCE72wLX9xfaNAF1VwEwPKe8rR0UqnCJWmthVlCmFREAiraRCWlktFzAhhSlL8IE2GqdqnKsZJo8tSTBJwJ6l5dj2W7RVVNZRNVboijkfJJbeB2H36SyHtGlFjalQciTkRIV45iWdSUFuXlAaTcYqxZgy/SCASOXBVRLskFUBUw6gm9pXsvRkAmgUFnPgK9qSH9hcNhJsJlpLToqcJmBxYnr5esT7GmMHlBIKZs6FMQT6weNDwhmL1dBUFltVBxaaRh+QWxBtc6IQklTWUoZQMjZPA22STBYEwa+ritY5rLWM3Y5hAO8Hdt1ASFHSfoymMoZ21mAzqDqQO0vqevpxxHtJui1ZYr+11iKdpeBKQU/MxJQSzom23hgDSUCNbuiJsT/0s/3WT5V9Aq9Qio2zgk2lB90+7A/86pDWKvddBkmZomcEHJEAiqinwWZls9FFz+gHVlXF3WbL5fU1BU3bBmKQwdVWltAPKFMzO17RVg78llISwUc5xFpPwVEpzaJpJQnWeHbbHbv7+4lxpjhaLJk3LaoUhmFgt95weXHB6viIDDSzOWYKXMgFfJREn5A8KSusgTFUjE5hjcKnxJgy2lSyfVJaKipFwNcSI1oLi1DASi1gJQWdxVx2759SSiGHJIy2rAjBYa0ipAzKkKPo8rMC0JNMNlNbxdw5jtqWduYItaY4g1UVJhXGYaBplzBJokuO4oU3bf6cccIaSo8lyqLl31coqqqiaRpyTozjgE+RympiUfgggGZbW9q6wRgYQwI8s7ZmfnSKL5ouFHyGyAPYq5Wmbhx1NuQ4kLPHGMPQj/RdTzNbMG8W4Hfyxq0il0KI4imZGzel31qCHwkxUDmHMRBTZBgHfI4koxhzJAw9ViWqAilLImzMRarYKaKnxCY/eEpOIjCxjlxZZrXBWvAl03cBHcEUR5sLVWjZ3K/5+Sc/ofrWxzRPz7i4vOCvvvg5YxhpDTxdzPnw9CkzW3E0X3Hiznl9d0vXbXFKc3RyxunRCqUK67Ej5YBNilobnIb722s2t6eQFDcX97y9uuPFDzTvv/8H3OgNb95ccD/ecPrBGXbhsEbCbKTiFxnTyDgUfDAsmhZnLTYHiteMgxQrSmHqjzIXRhKlBNIwsJjNOD86ovOatrPcdYFLfQ86s+023K0Nuq04XTQcNTXa1VR1TQXYIJXFyjjaWcvu3Rve3FxTnSw4Pj1lvN+yGUb8OHJ8NOP86BjvC7XZcRkL/egpxrBT8OX1JbrKfOdb77NaLKUgoGHRVpzNG277kb7bkVUDTU1U0KWCCQkXICcvXorFo7SmmgD641WiRtM2kE2iOIXJWmSswZO1lFhy0QxjIN5tubvbcP5kpKkd56dLFosZ625gOw5oU9MHzzjs0DPNYDSldYTVgs4avnj1luuLz/jo+z9k8XyJamS3YZQwrFNW07y1P3vsN/ETcPfoRKIe7zSAybDl8Td/3/47aF8/nz4cRAXITSlP6gCReYBwfmyZPsuJFBLaGEkFTok8CPNeGcX8aAVGQOkQPMpqaqtht2b79md8/rO/IJF48fEHPP3wBbOjJeuLN9y//oyqDOgYaFYRFwaUcpydnKLdHOYL2ueOsb8hhC0uKuL6jnevX/PzP/9zTkzmR//+TzlenfFsveM63NIuKkLxXNzeUrCs2hOiipwsNyxmmuX5MepoCZUFtYO8JqcbxvEtyghbfbt5g99UzBfAeqR/9Qnd5Ruq2Rnc/Ry9XFA/r8ElxttLQt8xn80Z7jtSNzDuBm5fveHphx/SPn0PliuUqcE6EoaE5fTZ+5z+xzP8u59Twkgf3jBvvkOO55w8PeLJRy8gGugHbB/IyjFcXnC/GWjNkhaZf3Jp6UPNpochaYLVRA1BPbjPfXXEy4Hz795+d1kYsuecvIamc4AxRhK1jfmNz3EFyEqjy/5EWATUrgz1yQnfbY741vf+CN2AHwP1XFF5i22XqLqFmKGRhFayRSuN0wWt8lR4NZRkUFRYZKaX/aQiW4ut3ORJ9y+07Semf0GXqB79m4uQkEwp9NstN/fX3Ha3+DxilBTXtFVED6EknNIoKwCARVQFB+uoAkVP9fEoKg5A5tO957iV8L6cM5Q4+bsL6GCUFD61FpueXCIlIQX8ojFZo7OAe+qQ2Gwf3WN5M+Uw89uvLQwPZ82DLPprz+eg1mHqZ3uy3uPXUVDUnkctarffWitQJvXUZCbIRGAl9APbzYY3b95wfXvDttsxpMikLRZLLK0gJmGMC6JDTmJI1VQVlbXsdjvZWSmFNqI2U0BKRtar4tBZT1ZVlqIKuUQhFqSCrjRZFRSRlAOkkaQzIVtsduSUiD4RY0dR0DQ189KgTE0CqsahdE3l5hjdyHucnn/JcWK6/zbn768Ven4ZWP41kHzfNIoaKLGQBs92u+Xi5ppXNxdc3l+xKYlUWQpJCC97//aiJLARGEIgJPGrFum4nbwgCz6kw55XafNARJBBKvLxYgBZR3JKhCzKQVWyEAm0Jqt/IEA3j16QWDfJ2aoKXwLBZ0IO4pGhFHaKjC0AHmLyhChdOw0Fr2BWhElVKsPMiqdXSomZk8NyjBGmxJSqqjCVo9u1xCx0UGGdSDCANhptHc2sPSDS/RjI48gY/AToJJp5RSme4KdYaqWJYe+pp6hdhe8yY0zUdaRyFjsWrBWAx1ZJQhm0kfugDCoJXRxgGHox5iejAEOhcgpT1aAMY9DEADEk8XuICZMsxjnqNlM1IzFK6muMCaUscQI6wxAo2jB2PTnv0E7TtjWzRUvbNrRuTjd2k+G+w9WNpAHmTFUKxmpyiojOVphKOI2ePO1UThgjIQohG0KKdH1P3CaMNVR1zbLOzNsZxTnQA3Xb0C4XDH3g5u5W5LsSFESjDMvlkgqLHhI5e4ouBw1/jJKAuw9MUJhp0isYq7BYtBOGSfRBwFxbk8d4CBFRSjGOo9CC4RGLzoi3ubM0TSUhBpOPV44KbTVjDGzGLShx8uv8yBeXVxgnwQxjhF3fAwatLWNIqFiIrWPIFq0qnG4JfqQHKqsY+4HUD+BHzJBAa5bLJVlbLq6vCLbn6HhJLBXJyP0ZhoGb2zucc7y5vGKMAetqjk5PmC8WjMGje4/WAVySsAEyI4k+BYovuNTQZAEoFdDWLcla+hBpqox17jCtZWSBGENk8IMAyLkw+pEUErW2qCi+jrW20s8zVK5ljJ6UA8k6cA2ljBSlGEpkuL/hW/4FbLeUp2fEhePlZ1cM2y2rxRl1PcOPQbDWyQezbmoCisGPoCRhZ2+Ga42EyOiJYSXXPKCDxMRXTT2FYCSpSCjL4Efp4zTYtqFQGPvImA1Lq9HzltFEbjYdbogcYZnVFaFkRj8y+I6SRMprlKVtWsi3Qhc3iUo74hApuqKyNbFkBu8J2dGNkbYyKCfhNEVrnNIyb4U1XUoM2nCz3TLThnnybAZPTuCaBWvf4VRm5jSf3d3z+vae0+U5R/Ol3ItVTfEKqx1VFFaUcYVcWSiOytVUww4Ve84XM+a1wji47rdc9JFNN2L6jvV8pI+GF8+eExGvweOzM+LbdxAC/f0d90qxPFqhjCV0PanzzLJDjxuUHfFjxJklZ+ff4vN3L/nLP/9vHL+65E/+8N/x7fkLXl1f8ulnn9IsG+a1Y5ESdRlpksLqDhUN1s3ALUlK0w935Aim1iybBZcYMgYP6LbGOkPII62eke7WVIslC9dgFk/waaCq39INV2Qy99sdLZq+L4wriy8S2oEFYzyx29G0NWEb8cry7q6nLYUXH76HcQsuvnxF1w989NTRd4aFseRVSzCnrN9ec7G+xzdzTheGzzc33H8eeP/Z+2xvdly/vuDu7TtenJ/xx9/+kJ+8eslfv33Dhjnq+ITONmjTcKQEHG90gLjDx5akDJWxnLSOeVVYLRUXmztuh0Rrl8x1Yu40OQXa2YITbdn0kV3X4bOwYGtXePFshQ+Jm9vCq8sNUSVcbelCJGzuaJYnDKriszdv+bM/+zM2F1+yWr/E/o/PcKcFjIecUUpCfw7OI9NirkigtATCFQXKCuifM1qVg/jqsFMqe/fbX9w8/b797rSCWImk6fMDm6hM+QZRDlBWK/rR0/cdtbPM5+2DXEtFYIsyUsCk7NNA5ZRjtREj5zGga4u2hso1FDIJT+ivKOMFz1qF72FpZtT6mM3bHdad8PQ73+eLn/xfXH7xY5ZWsdJzwjrzs//zP3NbPqE5fZ9vf+8PcK7A3VtWqoM4cvvqFX/9//w3dPYQHf/hR/+O1fkpn3/5mvu3r3hvdkLfJ4yqGYeBi9svCU3k/Pkf0tgZ4csL8WedFahH9Eyj7RHZ91RF8eTsBbc3HX/zn36Oa3dUy5qX1285Pr7nD59WpHUi01OdrqiXinqxoERPvb3DrAf6ruf4pKU9n6HiBrpAcbeE9UtS84Rm8SHKzWAO1fsnfPy//m8M/o6xWVDrZ+j2HFiANah2DnWg+BH7/D3OdC3ewE4RKSRbUS3Oce6MIdXskrDm5jzAcV9t+698Fbr75nZw43roXF9vh5cqfP2Y9VtrCvQjGeveaB/k67/pqU1jcFP6ICAPRuACubilFRBcQVNXQiKoFoh9aaEYQ1YKXRQ6WlzRpPGOpgpUbUNTH1GpY1QwVE4IDooMxmCOV1OV5oFN+JU2/d1var+Smfi1n3ksGXt8j0sppBSwVpIlvU8oFFVl2NtzK6Q+PTn8yH3Tj/vQP7z/HK5eff0L05fUV69fPFunEIYiBJa6OFLI3F1f8PriNZvSMdhA8J4SR4I2FCOF8wzsMmRfGFMhZsT72sifHsPekkmjdA1ATAmY7k8oqBhlb12gTGCbsw3W1ISkCDHhjMa5Gm0qVAkszQw1FBZmjokSKkBRkr+1f2YWihJ/vIJGFzuZ6D+6YTpPNRsBslRG1APiWwOqEKYdwx4GMunRayjBM4qCMBUGZTfxm50Dftl0tAci7VSEUuwXw0LZjrx59Zaff/Ypry8uWA8dXc4oV6EqKxZBKaITLOYVyY8MwRPjpBIqkr+ljGI2ax5UdKUQk1hCFCb/z5ywtSbZmpCC2HsZK/evZGIKpDAA0DiDcRWlJHIobL0nhZ7V8ojKWnzwxBzYDYWsEwvdoNeRUhY4e4pRKwwNqlgKBaV/jcDyN972HeyXPSH91R87gL/l0J1MKeALahe4v7nj01ef87PLl7wJa24Z2fgeo2rqAmkIuKJE3psgFAHUxtBNNjNiO6PdpMJLgRgT1kzezyVOStB8YB5qa3B1xRAkPDCXydf0EC4hSqNvYuh+4xNQ4wBGU6Ijq3zwDVNaY7QkFyojw80ZhbKaCNhkSRR2fseQRvpx4H67mQCUhlkjcb/LeYu1GmctdV1NXmOiyw9DxLkKWxRWG6IVoOYghyuKGMPEpDLMrKFpqwPbCgrb/l466+RRl6cFIE2HjFrXFCDkRA6KmBUmgjEiBWyLFrDOCgqqfKTEhHF2AoYqKBk9lTgMkuKhppmrthVGiy+aiYqc7cQUkonddnZ6T8I2izETYiSGQAyZHJJIUhH5SPKJbtPT7zqKKrRtS6llERXj/4KaEjh1MLiJPVWSTA5DypQUyN7iJ+lsKaJ/x2pBkXOmGI2xjk3fESbj+5Bl+U5JfAFzzgw+T1RgjS2ZmJV4T01R3q4WGawfBDiVSSqy2XZst1sBDicpnNYao6ZJf19xeOR3+PVAiJSSpN1GPQF0Ckol9FOlIEfyOBJGj7aaWCKZIhWrEunCKNRia1HaSXUqB3LZb0oUq+WKqm4JyuBzgWJIKbMeBnIKfPTRR9KPQqKyO3ofDgj5cjZjOZvROMeQ0sQwTRI4YA22rTl2Z+LfFxNdPxKTyC2TF2ReYpintFOjUK4iGcV29KTbW2FUKsUiJU6dhDEoreXQk0aIUGxBO0XdNBRV6IdB5A5KS7oTe287ASaFiSvXUVczYujofWC8v+c6dKx3A5SGuqq4fPmalzNDtmsiO5rVgvl8hi0N/c7j/Ui3HQTgqaWvZ6WFKamkOpYRxmIqkzx+v+qrQtM02LqiRJFOG6WxWuGcpmlqmsoRvGe93tJ1HbOmpqkqVCzcbAdyyFyvd+xGT8h5KkBH9mVJkRbstwsCLqgpvUflgtUOZyqUMuIVktOjEBYJYDHGYJQWZmCWpGhX1Zg6EG0WJkKMVDxEoqupryc8qUgRIGa4vLpne99xtFC0i5pEi0LhtMa6CqfdBIrLxL6cL3DJUuuC7zfEOGd+tGJ15tnla06Pz6k1XKwHLu5/zoun53z03nvUywX66poYI8YY2rbBVg5Doa0bFjHR7BLnqwWz1QnPzp9S+aWczquKlzfvuLu74r/85f/Lxx9/h48/fI67dby+est4H6hNS1nMqXSFUoVcMrsxkLQnK0PXR5JyUrUt031XRjzvtCFrjdICADWVI1nDdn3Hy6vMTZ/Z9gPZgMGAMgwhcXm9pnYVTVNhnWHYbpnrBGkk7DLVvOWPfvSn7Gaf8OOf/iW3u3tOz98nFIWPnjT22FSwWsB+4wzHT86IzrDe3eCHkY8/fI5pW252PX03MPiIyoWVtbxYzQjhlNtuw2Y3cn11Q310SomG1lSouqKuJOihD5kxaUrWGDStzcwahfWG1EdKiagYGPseazLboWPwgdXJGbae4YMkia9WK64u3qGy59nTY4ZxoOsuQFlU9DSuxuXELkW+fPWSm80dbC95li/o1z9CpQ44kj79aN3PIUIOaBunHYJBKYtWdpK/Pz5sTYehAr9H4/77afut8f4jxEjfDaSYscaSYuLq8oKrywuapuKD91+wmM/JWZQHdlqHSpG1pViNpMII7KMaS46J3d0dZZdoFw3z4xnFiFWFViP1USGdWzZv75m1DScLh7YF11h2myuM2vDei2e8WBVuP/85rz55Q7dd8PnlFV/uGo4/vmGsEh9/sKB78xknmwUlwu3lS56cnENOXF7e8dd/81OOVxWz+YwrP6KS4unxKS+/uGDTd7z/8YecfPspH/7Jn8LyGfF+TdndEoZRzp5HT6lWDsIdbO9ReYcqmWXdUDuxTjlatqi85eKT/4+dX5MrOD97ytzNsbMjfC5sX31J4zPzRUtzMkc5D92G0oM3hqE4KqNR6hjQhJAZdgN6fsL86VPMYo6yNZkKcfwoVNPejspIoBkOYwpKJxSZrDVJVRTkI09pkOJ1NoEBh2G91zo8Bun4NcP+MQPi78qm2//OP8988qukfOor4JT6tT//T3pNCNDxmJHFV+bcKZrlEbBZlCYfkhfVAWMxWWFMw7yZs1q2pHbEOEfbzKE4yAZTmJxmsjyl/f77F67ra3SVf4Jb8TgE7vDSk7d4jFH2WnlyxzMCzuUEwyA+TlUlxKUJHkMSdvcX+I8Dd77C3/naW98DcfAYvC0HCSlZQ0zEuw23V9esd2u6ODIUjyoFs3elMkyMHTWRz4p4Zj2625IEL+SN/dFAWZMAACAASURBVJ5VlEuzw9molDTdq31gHlSumZRGE5MnicVLzgLkGSZrqhQP1jgKUc9gJ1BK7dlv8QB/7Eey9MsCKk6IHNN39MOnB/BEHbCIIlvhh4LgLzTxfMx808/8Zpt4q05pnkWet7++58vPv+Dnn33Km8sLUSvkSJzujpqslnIq4q2axJ/MTO99P2aTEpuiQ0glE9irlaSCZgn2U2qvKhOujRwhHqyHQMA+oxRWyevnab7SWIyrp98TYsOeQVkUKG05OX3KcnVGU68wukWpSt7zb+OGf2Pbh6X8ivF8mIv2BUBhhuI9Zb3j+vKKd9eXXO/WbIsnVKAwB2k5k/oTZcglyH3OcQqCmOxm9s+JcnBiGqPgSykJoLwPV5PpQLPrhwNupSZs4nFgS/DhF+a+x+0bAbqYEkUVkU2qTI4JUhLTfTS1VWhVcErLYC8KoyBqCejVVDLJBo8fBzo4MKicMyxmc+rGsVgsWLQNzlXi9zBVH+TwK1LZnK3IQ73Hh0CIWeRUk9k2ynwFvCkkrDuapLCCYJaYyCmSEUR0mJh08hpi3F9VFZUVqdb9MFLVFls1IgtEo6yhyg26Vgc5R5k6dJkmFfm/QhswU4y52J9NDzjLA7JWH0wH90Cd9wHvR7yPxDFRJtQ9T6k9IXn8MBKSZ7tb4+oaY9zkO7df7GRSSZPcscQ40WvTBAxMUd1FPUo/RSjwzqGtPJ88TRbbXT/5oomnwehF6jcMQdiE2hJCOICj+07YVPXEZhMwrZvCIcZxnIxNpSUMldGgsyQeaYWa/tb+/uScD1TQAwJdymHBcs4cBshhzCoIKcprlSisgKwIaWTse+bzpQQroND78ISiUdMhXRvDGAKbzYbcVswqR9POcM4S/cDd+n6SPFiRBeTMMHhKUbSLObOlJNfFnOnHkb7vifuElyIAVEqJMXYMQ8c4DqQypeTGKGAO4vM3jF485bSjD55uHCZ2ZWY2m3F2d8fZ2TnPnj3jCKHJF60E8FZaZnH2mwoZh/vndEgSnuaJfX9LyDOqqoq6cbRDxgyR6IW1Op/NqeqaGCNjHCgUrHOYJGzHlKKEP0xUXm0k7loAYVmofJKwk5TSNJ70Hh9lHCUNU1KNMsZocsl4n+h1j9WKpqkx1AQvLI4QPLFuMDkyDDvu11tCLCLByomM+J7lEthXZ/IeGFT7/iOzvTHmYLIbQhAqupavlwlQryuLNuYhVVprqsphnaWoQbzEQkSrTDKKbDWNNihbc5lH+hRobYWuHVfDQNd301zncXNDbRzWaGIGckSVTOUMddPSasXCNsxNIHrPZn2PToXG2YkFWlgdHdMcVezWd7y8uGWzGThbzGlXx/jtBtNUuLaWcVwSThcqIxJVq6CqLMcnKxZlgVae2dIyO6755PPP2d2vefX5Z+A0R8sFvV+xvb6jH0bu1xtmC4d2Mm92YyDjqWdL6mZGKhpbV1iEMT1Ye2Amq1xIqjCESNPOsLYipsTtbsNdUPRpktMlhdeOZDTZaYbgubu7J6WGugKfM85YfCroWc33vv+HxONz3ty+4c3bL2lHT1vV5FwmsF+q4M5WHK1qih6xBe7TFqJnWbdYbdluOozSEm6kDFoblrMF71vL223H6+4Vl/cbPJaNHpnVLTtVyOczfNYMSTMGiFFRlYrGWRb1krbqZNO+DxtKCes0Xd+zG0bOzp5R1zV917HZbjlazIWV3mdWiyUvXmh6H7lZ76hdxeg9u3gP9Qlx8Nz0PTauafOGXTeSMGhdIQCcnoD5hHEGnTOUQIlZJDR6v/VR01oxrWdlP14etX95u7vft79n27On9vvejLDb/TBSrIScqALb9YbdOvPs7EyS3Cf5R8qZUiop5E4Maq0eXrjETLe+p+vuODtbMJsXlN6g4g5URDEQ7j+FfMXzHzzBmjnD7jXp81csP3hB86EDdQRlSf9Tz+c//r/520/f8uIH/4GjD57htzV/9O//hD/+X75LZXve/M0brq9e0vcbxrImV4rNuw2EgD+esXj+Hot+hk8zjt0SP0baSnF2ds5733mf+Yun0J6h7BH2uMUer8AMpO4Gfz1gesSUv11hl1uOZ++oTufYZ8fQak52kXRzQR476maJB8p1IpsI77fUJ0vy6ZbXf/GfuLt7x/kH5zz9+FtsksUtV9RHp9h6jnEzKC2wAKXRZqCeOcxckqyZ1nEzFfUEEBVbh8ppKLJn33NElFJopcSf6kHXPrFGvpHq9q+n/Vbe8tcOyb/6Pw9fe+wbNm2ixFNeis7KWoyrpJBtjCTTaiPFMZBnrn4zb/ebQNDHZwb4Kistpog27iHsIMNmM/L61Vvu7+/5wQ9+gLE1xh6wssOB958KR/1VL6MQy6c9OPcAohb2TPIUE+8urnj99h2bXUdWEFOWUET0ZBn1i39D7od8rpWcIcvk0ZxTmsiNEhiXi0iW80ScKGXPey5oHabnr0UNBijR0FJ0Et8xHSla9meJAbCTnNJRJnk3SGDhtPrLWUrxCD1LQJwYQWLOaDQorQ7S1q863k23SsOU3seeDikvq6e/9Ntpas+c2/cpCnkYeP3uLX/zyc/48uVLdn5giFFsbEqWoEYKOqvp7CZYxN7nUWs9yZSL+MBPnmVfAW3ytAeeFGZKP8I0pkGap7CKnNPBn/5AUpG/dDjXVbadXtdP/u3yE2Zi7z19es5qtaBylVzL9NcfkNXf0ITw92qPyxS/+mIevXsE0cyUvufy6oYvX73my5evuby9ZggSzumcI4xRgO0s+EkuaSKNQCxRMJr9fEKZyFdMrlJi8fV47Al+8WAJl0KaWJMT3pIyqaTJhzCyXq//4QDdV8vq5fBhSkGRqK3DkA7eYUpplAVrKtE7t5YcAzGFwwUBE2CmGHuPtZr7uw1N09A0jRjnT/rstlZgzAGEO6RPAlrFQyfUU0JpjoowTU6ZwvFyRZjM3b33JB+mVDEZJHJz9/TkEWslOre2TioyKtN7TVUF8WZTQnEMITGOUpXQRR6K1gqrFVZr6SCTv1RW+0VTHdhdpchHoxz7EIqcNSkWnFNYW6idIblyAMX2KK2PClUipRj6rieEgDFuSsM1gshPAMw49OQ4ig6egjXCNtsDpM5avPeUYRB2GwqVFDoByVJXjnEC3mAPznnG0Yvn3YFNJD5xMXnB7a0V4Na5qZJecMbSuIpopoTHSZpcikQTFx4t0Mi+MsRwYEw+DobAGPTh2U0ph9Oz20thyVA7YZipUrDKSJKw1YTgqLQVKnfKDGNP7yO5aHRVo61MnCFLQunQZ/rBcDSfMWsqYfxVNW8vLuW9VTXNbE4qihAzsRSsFpqwcRJSMviRGHts5Ygl47db6uYh+EIBOWZSTvhRvLmcEvAwKthutxQSLJZUTqphQwp0Xce627Lb7dhstpSUqWzNcrnENRWd7/FjJKmIT1P/n4CmvXTiMTuxlIwq0p8H76kUtE3DfDljVSlufGLnI2UsPH/+nG9/+9ssnjreXkWu7q+JYaCmxRhL3c6YRYWyQUDuqoJcsBh0pQkpELPoE0op4tuglLAFlaJyDmetmKlmqfrLAUM6yTgMzNqG1WJG8J5ht5366EgcB6gsIfTEqIjRk4t4Bj5uZQK+KfphscQcNnv7PplSFm9NpaFoUkwEAtaKd4QA7NPiq2TzlQqEEMVnzWTKxDKutUOjwUuabV01LBenRNOz3qwJccfFxT3VzHN0fMJqIUxcrRDvAgW1UTTGcDRvWGiPHzbs7u+5GwOb+x4/DPgRKtUwf++I02cL7q4veXd9wWaz4dnxipmrSNYQZZpFG9Api8uRKbK4+IDTmlllaSrDETWuecKs0lxd3vDJp5/zsx9vefbxtzk6OeHkxZx0vebi5pY+95w9WfH07JQxFm7X12DW3A+BaGpO3IwhZ8bg8T5gtCb4SLCKqiR24wBdwWFwruLoyQqrGvzFLbfX16hc2A4duijOzo6ZzeeUnNl0O0lUzIGTWYvOmrtuJN3e0S6WfPjxd/DRUzUzlq7G2prgI8MQ8F7m7NlsTgrQAvN8BqXleL5iVs+JY08uSpKfq4aUMuMw0lSWs8WC06rmzni6fqAbOu5sz7th4IOTluMnR1C1RGp8sjgUFRWNaalUxEyV8qIKprLY2hJLYbPraOc9oOjHkdvbW0iRpmnwfmS33XK0XPLBi/fpxy+kaOIj2Xu0CyxnLUVr1JCowo6iKiQUQrz/SpGAmDEIaL1b3xKHLct5y2J1jNaQsghczGPp02HT9A08/d+338n2eDvsrGE+a6ltRV1ZnDWsFnNWyzm7zZrlcikHv+k3hfeviBNjQCMMgL1EdrPesdltWcwr5scNuADdDfi1+CKmDTZcYWcBKof3nrhZU7kW5SJRFVjfY01D44748L0fktJTjs6/xdPZC77fnvHxj77N4klNvrvFjluuPvspPu6gFLbDPdZZPnr/fd7/7rdYfXjCiUpsb3Z89umX/OSv/gqGLc//4/8AbUHV00m0FkY14wbySDGKkjXaLEFb6LeYoaBPTjAfvY+yI2yu0Bb0+SnkI2ojOq7N55dc/OQVq6sed7LgfnvD66s7So68f3RC+/w9Whwsj8n1jL5T9N2AMR7jNLaZY80crEIpD9nLIV7nSYesHhDWaYgqtS/SZYqaEkofpbr/0/egv8+8sOcrPf7937d/SNvXT3SR2uzB/0sZlJZAIpRhcqX/xd/9yie/4v+/7hp+BUL2+EC6/5nH4NzD9zTOOqxx075MkUsmhHEqaI+HkLivNn1gGOl/JMLzTeBcgWnv/rj4nR9+LyvSGLm8uuLm5o4YEroW6sqeATfGKHvaEgXXy+XA1lJKoXKZFEWPCumPPh/HkVISKUdyjofzkBTEkcKy1giXUqO0RlstEm0lXUBZ8UwLZAni2pvlE4Fqej/xkdxUH/rTgwAxsrd6UmoKxJpu3p5xRBGW134+EiXNBPwpeW4KhHX96x7AP2Wb+tyeKLt/ngogCcPQ9wMXb9/x6Zdf8Obygs3Ykyh0yRNAyCyloKZnZxBgNeYkzEQErNQ8sEUfBx/KZTxIvffzssagVHwIT8qPx4zcJa0VRgtAJ2SbdPi+NZWcy5WoAY2R0JGmqTh/csrp2THzWSNKF/J03/cA3eEu/HbanjGn/g5rwrR0HPgVCVIfWN/c8erdBS9fv+Lt5QWbsSOUTERYiCEJESaXBxVXpkiuG0mwmkkhUtSkwGIfbJgmEkqcQNM8qUAfPeMUD+rIGP2BZDaOIyGEfxxAF5lomtNE73hY6y1GTLjLFIAAKC0VU2U1aEXK4mdmtAQ97Kl+YbroQmEMkX70sN6glQBMzglr5Pz0mNpVzJqKtm2/AsLsUeX9hJVzpCiDMRasoPYJMMrQVi2NayhN/AorS5VCCEE2fzGSwkj0A30WF5SjoxUlFryP2Ep8n2xKDHhhLjXit2KUpKNUxlBchbhHKIpKE+trvwGSyoJSTGoxTSkKictWZFswsWBsBQmCz+QwBXAUQ0oJG0GbjPXityZ0ZchpCkiYuMMKUOXrNYsHMCYlWMznwgZimkxjIuZMGEaG0jNYfQDnqqrCWkBJaq/OhWYmC6ePE+15CqaQRcvI4pILRmvausbZilQySgnza1fUYVKSgcG0sZeBmMtXFyatBWCklAONWzr3QwXioU+AjwkJ1VHM6orlfMG8rSklEWNk2w1sh5HduGHcDSStqbQB6ygU6kmDn3KiG2RgVVYJWFIkcWkYBmIpuLbF1Q02JsauJwyD9OVG+PcZNYHWLTWKzWYzsSgtcyWgoh+nwa+1BJ5k8YbbH3xCCAzBo1yNMYZ6PkNbgy7CQtLGApraOhbtDDuvyaoQx91UZSuH+xRDlJTfkgjJy6IYM7mYKfJbY5N44I3eozrowyA+ilpjakmnmc1mHB3NWPdzrDWEYSSVSOXE58ZYhQ4PR739OLDWCltH6V/YeEiKpKaqahSZzXbH5v5eKMfGMm8bjo5WmFk7xZWLXLudz9Fa0+823N3d0tgFqiRiLHTdlt1ug2sXB/bg19t+Y6Om0l6egP799/bj56GfPWJ3Zglo2UvC9my8ECP9MDBaYaCklEk5klTGTOlwKRVcVXF2Mmc2XxC2V1wNHTe315P8smG5aKmrmnlTk7uIHzuOVysaZ7El4GrHzntKCIzbLb4fqeyCt5e3XN2uefr0nPMnp3xwdMTm9pKXN9c8XS1RvaHabThzR7imIhFwg2ZWOeaNkfsXRnRVU6lEKIGFVbiTJW1O7G6X3HQjt+/esd3tePb0OfPlCr/ruF1v8SpjXIsyLdfrLZdXN1zcbWmPzvjANASluL1d0+02ZGvoZzV1baiKYt333G3vyOWa+7RgfvIhy9PndOUd280rXCx0ux3DeMPpyYrvPXnK8aymzz3r7ZZGF+qqobKO9bDjr/7ivxKahaRna4vRlvliSV23oAyj79luO3YlUKfEqj1CW8egPEo1VNpSVTV1Y3h7eyUylapl8IH7uztmqwULozk2hhPnUEFBzPhxy0W/4c2TBdXxEnM8o1QNIWpSzuLRlzQua1R6KDq4ysFUcd9st4T0mrpuMMB6s8UqhZuKCbuuo2BZzOY8O3/Cu+sb8jzhQuJ2HHF1hXU1Y6/QuiKXipwdOUkRQytAK9b9hpvbG376Vz8mbO75wz/4Dn/ww3/DzNXklIRZrH6J6ESpXzyL//58/TvdSimTL5UwGtrKgrPCjEBRGcPHHzyD8uzwrHMSBoc2hlIUMQn4P4xwf+shF46PakxlOT45ZjZXKJPJ9zfs3vwt/faSWQ1WdeR4gTFbFInKLajO3oPFC9ANuk+M28L25iXhakdWK2pV+OK/fIZdXfPko3Ou/vJn6KsFVmX8F5+wGjtWp0fcEDAfWHSn6bo1d7eXnH//jKPvfsSw3LLpBvF/84Gy6LFHgfqJgyMLDTBuCd0bdvdvGLoepRcc6YrGW/Ab4t0V4fqehQv0BjZffEpjC6vTlYRL1BaqlvnxMe15oU/w9t0dpbY8//afUNmMHyLvPr3n6IP3MaXCVXNqDAlZ8ylTCFhtZDOpNKhqOldZSJpHqhzg4fCyX4P1b5Sf8hic+zUTwS/99u8nj1/XHphi33Cvpm8prajrlna+IEUJJDNVLXP5BC4UyiOyytfA3b/XhX31b/+ya95//svSQh+/r6qqDhchHk6K09Mly+UPSSnjnLCCpiPolKo7/fz+i/8MrUxnElCH/XqmcHe34eLyju1uoCghBZQoVjoSjKgmBYl4Zu/vnVXi15mSn6w8BOjZM+BkHS4Pae85T6msQlc2xrH3jo176xb0ZFNhiXs2FoWxGHwx+KIIxRBw6AkaUAQUCU2ZWG0ainjVJiWvIeJOASgMEsC4J3N5+RGsKhii/GcC84oSrzWh1Mhvmj1r7WAkxj/rVKC+RmcsGuKQuXh3xU9/+rd89vln3G83jDnic2LIiaSLQGLTuX4ftlv26pwJ+XsYWnssAGLw05nDyHqb9+dZDuxmsGidpmeaRZWHQqlEKY8M/NiPqYdBG1MiFyHvKF0oJWGN5mi14MXz5zw9P2exkITz/Vn6YAT428yGAA5rSHl4IHsQ9SttD87tP8+F1AW6+y2v377j1cUFFze3bLqeMSdiyYRJpZL2Sr6J7JOnpNWChItqa0QZeQgzFOwghCChHFnuqZCuHsIs98QiPwykEPE+4v1wIIuFKeh0Hyz6q9o3AnSdH6Xz6AkyyYVGWWqrcSbTqEJOAuIEsaOfkPgASaPI6IlejxXgIJZMlRIxJ9Ik34wHaq7Cx8Tg5Y3vdjuayjJvZ8znc2azGXVdT2w6qG0tMdNKUYoWidmkPS5KjPH3h24A8gOwV0qhdo4QRsbRTEmygohK6iTshp6cI8pY6roWZQGAlsHU7XqUEo88ay3JOlKlyE68zmS2yVJR0PuBJgOvUCY/BWEj6KkS5CqR85IgB3lPMUpARiqZGN0hVCPGjA+B0Ud8DOQsFrJGSfKMc04qSFpNRuCKlBKd77FeTdUOWZxr63CuFlmoTwzBi2xvYrqFFElxmmy0pWkcdTsDYNsNBxmx1poQAqSIV6DyHlSVys2YI+og6f1qOuueRbdnHCrFwz2arnWfYBtj/IVqklyryNSMVaQsJuZlel5ybwQQctrQ2IbKbhkHz071xJyJMZD9xKCzGacUrmqwuki6sBJLF63BWcuYBACKqeCMo24LfnpvqWR8DBhjWK7EdPfk5AStDXVdk1LBWGFk5pwJPh0Yjipl8hix2tK0DabSQo/PmT54HI4QPVor5u2M5WzByfKY85NTTo9POD05IahEIpFNoXjZMCTk0D+EkZSl0iWJopqUFCVNG3+tySVQUiL4LEEIRfrxQYqIVIRCCPR9L/fYWmwRGftuvaXre7ohUhV1MNQEHmTVkw9gSoUcBaQt0+Lkx1H+3rRhiz4ypgE/dISxR52f4ZwVRoeSirBSirZtOVEw5IDVCk1is77l3bt3rE4Cq6MTlFWoRwvQnokrskU9bfHUgUmnjROZeBF/Pm00zlSH96Iw01yUDv3YGE1MkW4cGGpNDpEcIrs84EskOdl0rXdbhnxLu3jCyfEZ1cmc49WCd5eX9EPPzc0N3VpxdHJCVS2Y1RaKYdk2VLqgfKB1FuMsA4b2dodTAVIhhcx2t6P3I0kXXrx4wvHz93CVY7NZ019fM/iBMQVW8xklT9WjUmiqmlhgt93gbaRtHao4QugwKhErw3snK46ODZtY+PLymrvLG16cPuP506d0Ycfl9Ru2247vfVexWh7zxM4YuUDVLdZVlKIwxqIQuX8KkaAKvhR2OrHZ3rFbD/TqGOM+4OTZB2hXy+EyZ5aLI9DC/uq2O1Rb07a1AMU5cb/rWc0rTDXj4tU73nWXpNSRJ887bUSerrUhJfFoXPuBvNtRPbGctC3HJycok7jZ3tP7G7pk2P7/7L1Xk2THmab5uDoiZKqqyipUEaDuJptiZ3p7r8ZsZ//6XoztzbZik2wKiJKpM0Me4WouvhORWQCIoZGgdQ8NbpaARVRmCD/uftzf7xVtR5ElTCeqwKZtKGtHZQy1UYxSQtuC0aSgbzp8s+bi+or60QGT2WOSdmQM0fcQMjZpTNaoofKfkPUjhiQy+23DctMwHU+ZTsa0XS/WDjlSlSUoxXq9pRrPePHBBzRtR99u6VIkti1FMcIpSMqgs8MHRcwOpQt2m+w+BbbtltV2zburC179+pfQtzz94FuMJ/P7Kq6CENKQCicrwTcMur++JkbeAzNA39vTa6QOGIIcEvcykMxgaZEJYfBaBdoeLq82LBYrDmYjjBMPYqc9Om/Be1SOdOsNv/3Hf2F9d87h3HJwoHj0dMLB/BC6mhwz+AZVgCJTlSNyvGV5syQFxbiqmdqex6dHfO/HH2HyHXl5g9bwbFry/NmPUHXN/HxBZbe8+/iM1d2CT14npt95hB7VhNhycnrEs+Y5rz++5W57xyOjUAcHKGtpb664fvspN5e/o2/usMYxHle07YLSKI4mFq0r2vaa9advmD09ZXL4lNys2CxaqsMp5uRAGK65ZxM1fXJUJ095+tMfQ12y+uwTXv37L1ncatYuoVdrJoeaYjxjNHMoZ4WpE/2ASKQBk9ixv4cD1ntGUe+3e8YSwtjN+S80hb/szf+Ev/mmfWn7SpBuX/yWoAlT1RTjCV3j6X2HD0lYn1/VvsZL8WXg3I5BJPv89wfgQ5nn/T/JE85lnLsf3DsVmdFi3/MVpJS/WNtLiQdwM/aBN+/OuLi8pml7tLKQtQQCGkMMGWUMWguIknLc4WvsMJzep71J/edVHXkvr80SjBHF/3vngW6VpnAFTlkMRoCamEHtrJ48SSeCs6R+UFplsPtFI70PzmWNygaykDqMfoidDADgALLtmlVD4Tu3qNQBDRDIRvbMUvEoSbiBv6XeByU+B5h9ne0L4233/DCYdqrAbbPl7OyMV69fc35zhY8BnxLb0NPuvOC0XHOTtUglBeIZPLUffBV1T0p5+DlSigNILk1rUfSws8tSdpAr6wd4xoDpZkl0lde5/14xQgwt1hq0UUNRR1HVBcfHRzx99oSTR0eMyzHyLqKmEJCOP94y9C/Rdh2xG2BqxwB+/zaVGVTWD5hzBNjeLrm6uODVyzecX1ywWG3ooyQb9ynQD2fuPJyBVWZIx4WIeI2Lv3X/QNknvx+TH1hzQeDoASPZMeN2P957UgjkmAa8JuyBu13HSgDOn8ig63YfLgdUBmcMhbPUxjAuK2Z1QU5eGEkq0wNdgiZk+hiwGAGWoiQzahSF0URjcDnTa0H/i0FaloYvG0KQ9MquJcaevous1ttBmikMO2MVs8lcQiacw1qNwZB3NFIUZSmxwXtkU0narGwwZQSKTttRuB2rJu3DGhbrlZgFdp4YEsFnqipIAo7WRL9L95BJ0xs7yDoN2ipspcgqDV5WGmuTHEaHSap12KPkepDyAugcSTpTuYoUIylZci4FHEiC3vbe0/eerutwbU/bG9kUK7P3MDLGDmDV4P2lFVYj1GIyd4vBQ03Je5uixBUFpgJlDSFGWbxzw2q9pWlalNHU9QTn3B4k29E2Y5T+6FpPjh4bE7mUwei0EYZuSgSf9ghyHgCPnPOwvKv93UnMMIdi3oMxvLux76nAexmihDEIqCyBHBEB5mIU3XffKtxgij6dTgVQjIoI3LU9IgaW6dhHD1oLuOgMZVkwritGoxFV6bi+uARj6fqGxXZDl/IQPGEwhaOqKzofMCoxnk3leliZckVVEkMe2FzSjwxhJkZlopZN1c5DpCwlFrtNHX0IZKNpuo4UokSup0xlS0m8zRqrDUnBuBYJTNM3+N4TSbIYD4BmyGAf3PD3m6aY7g1OjaWuSibKsOwhbnuC91gjwHROieDDXgLvQ0Crnm7wiwzRY1U1HPA1kUgMO9NSjTEW5yQ+XmtDUHHwz0tMxzXz8ROOD4/wbcNmS6eF3wAAIABJREFUs8H3LUVh2W4b6romjmuMtvRBNFRVUTCfz2G9wg7jt1mvePf2Na3vRcY+kZy6HcirHsxBo3ZyavEYywgiq0ikKOymsqookIjaGNIwTgw59aTBL0IrRQyBTd/SBYdF4bLCq8w2iidmkS3rZsX19SumVcsHT57y+NGYo8dPKMdTVqtbFpfv2K7uWNzeUZYeV02YTuY4pSidxiRDaYGUmVQV89GYdavYrgJF4SgLRxs73rx7w6ZZcfr4hONHJ6xVplksOLtbsmoaDqcT5rMpKUEbMzFEsFkCXnrNyBhMYdmGgFaRZBW1ThjjGE0m9F3gzbsLLvpzxnWNKjSYik3b8u7yFmNHPH76lPrghCZmZkdHtCEyvZuRY6DMAescVitEya6YjScUuUL1NVufhHE2VMkshoPpAdV8xNRpYtfT3i6whyVlWUCMeJ/YdgFlRhhbEGJH13tGdYFxBRFF0/d4J4zJoigodGbbNtxcXTA6PObw8YxqPGbVbrlbrVl0iqDt4MNaoXUUKZ8WW4ZxUTIyZuiDiu22ZbGM3K3vyG8+Y+4mdHks69tQ9DZZ47TCqEzIgRA7fAwYo4lR5pd1wpjuuo4UI846iApXaKxxbDcdKXjq8YzD+QE31xe0mxWFKnE5EbdbLFJV75Me6t2DMCUKmxYN9XTCdD5ns1pzdX5Os7wjPXqCMSX54W5ZKbLKqJ0P3Tfn6r+qppTC5CyV5IfPDxVro6XAkuJDaY7CaE23bYh9TzEas9muWW9vqEaOg+MSVw7J9jFg+h7TdeiQUdESN4HmassojhidfsDB8++jOKR92bBYrCgOtxxOW8L1K/qbG9pFA9tAacfUByVHx0+Z/+C7FH/zN9DewCf/Sly+w7qEKyqaW09YdHSbFYvlBedXZ7xeFvTTmkenRxwdTTk5eo4d/y2L63ecnS15ts4oStp15JPfvuXXv/w1y5vXPD455Gc/+QlPnn2fmGvC5hYVV+DGHH/7Kd16TahHjJ8e01y+ZXP5BlXNqeoTtm1PUyrKF0/wnUKdnKJO/pbm9o5Xbz5m4Z/wNz/+OePHx6y3V3RxSbvxZLvBFWvIEPyGnCxFWYEyA6WlvE/fU8BwP8/IPUrINhmjxQg+54HlsQtMeu+s8M2E/s/ePg/Mff6xVkpOQwoZI9qJAkMbdFGTtJZESRgUN8ICgx02Mkz2L7Q//eT+8EB6Dz59EZyTf4/3Hm9qwKV3dCXAOTkbaP3+GeHha3z9Le9/cgRldoxygTlyguQTd3dr3r494+bujt5HstISBBcy9gEJXWHEM1Ipmad5yGYY1lQ50A8pt0rm9s7ex9oHFDNlCeFexWSVYmwUhcqoLAoPciLHTEo9IXcYC0WpcX1FGXqq0FPkHpR78D2BbFHJDFIrtb8WIlm1wvAjIuPCotIOPMmQe1R7Bdt30F+CjajxGMbHZH2EwglxYAcTqQfjTv2FEaL8/jjZyVR33uaruyWvX77ik5efcXV7Qx88IWc8mWQErxD5rpwzd8xGHWVNxbD3MNu938NWluUeWHvo4b7DFHK4B+Dl2qf958xZyE8xSjihMXuOnijzxG1fMAEl94CycBwczHj85ITHj0+Y1jVGDR76CoaUEvbM2f/IW8AfUGTkB//+Hll3ACvTpuXu8pa3r99wdnHB5e0d66ahS4lIwoco7DdEeamGIqSE0qQ9QJe1IUQ5k+4wo+SDFDe6lpj8Hldomoa2bUUt1XV7VWahxVJpT0Qa+ncXwuND+sLa97B9JUCXhkUgBzGnzMZQKo0tFKVWVFYSIK3VqMKSraMHtiHS+Ui7XdO3DZumkYCGnEFbMchUmrJwxCSUzF2qY1CShhgt1PUh0QsY0HjPpukHRpoM4Hf6iqqqmE8mTCYT6rqmKJzIApUkze4Sb/bSS6XQiDRzs1lJJzizB9F2gJOPgaSgD5626aTzm47lcklRSDJOXY4e3DwUXg2vow1oKHorNg8DiFgUGWPSgwUh7f31ioH9oxR7NhFu95mHRURLEqy18jOdzmiahu22pWgatq1E/4bQ4ztLWVmUUThdYIzGWQFu9JAKu0py4I1dh08R1/eUlfiHxZzoup6iKpjNZmAMdr3eg3Lee5pO6LnN0D/OFQLQdQLQVUoTFQQr7B5t3pdG7QIk9sBQTnv2USbj4+BxkHc3hUECORwERH4rm48QJCY+JUmmRMl30wrcMAHJYpLqlJZxqzSjsuRgmoWyrNe0KYlXkzbCyspITHJgn3pZjRTaOExZYYsK2p5t29B2PcoYqnokY7Equbm5AWA+n5NS5PZ2vfc+1Oo+cvnzgRghBKxWxJQIfSBEyFaCPwAKo6nHY9bLJXd3d2yXK/pNx7we88Gjp5Sjmno2xhTiyxhCYL3ZSmS7BueKL1RfZaMUSUOClHMSEb/7TFnn/VhUSrFcLvHeMypqxpMx3aJi23RslkvWqpXYcaMx1uIKJyCjUvR9h88DoAcYo8nZYvR9cMhuY5Jhz5jVWeRTqRQG4nYjslVNYDqeUI8qSmvFN7BvsYWmLmpCUNws1mxvb8E4Do9OMHU5BEPsADq9r04pZdCofUqujNVh45UTSmnKskDHDt8HYo4De0FkGLsqiYS6RLoYiFnGUzKWpGVTZnNiVJT4tOD12QWqu2N1s2SzPeHR00PqasTR8SOmpeXuumK5WLBcLSl9pnYlnTW40ZRRWWHo2TYbSJrCWiZ1Ra0Vq6WEjxiTCSFzcXFO223o+sd88OQxtii5fveOu6s7FtuO57ZkXNcEJcEMo8pgnaVPEZs6dOzAdxIClD2ORN+1KCzPjg6Y1mPOz6/41a9+yehozunzp4wfPWFxe8M//eu/8oPOMz95hB7Yh3szW2OplBK/Q2sYF4rRDOaTxxSp4mypeFkcUldjSlfisEyqGmfsAE47aiyp7WiXLXlsKaoaZR1dH9jELTEqrCnYpEwXI2NjIWnapsM7R0JRjsYcuClmvaS5umG5XjCuFeX4kMPDQzrtuL24wyM3bgqL0pGoIzhhWo/GEybjFl06XF1SWwU0XC7ueHceWFcHjKbPSFlsHjS74olITXOOhCjeLMa6PdNvNJ7gnPiGgkjendHklPHB46zFx8hisaAqS0Z1jVGZkbP0fcPN3Ya6KEipx0cttglJ4RQ4MwCOztFnSeA2VpOjx3cNKQaUlj5SWUlA05fuGt7bMn3T/jdte07kcPhQ5j55DKUGhY4i+jCs0YboA7HP2MJSlsXwp5HCRA5mBZPJhOmoIHiP3zY4ozDOcHd2jV+ck9cNz58854P5AaNKMRlVsJb7dshzYi7xG0XjG3JTkkKBc4n1+pa71TlPnn+Lb/+fP0U9e47q18S3r0mfvWIdblmojvFdT96U3N7egQ78X//wX3nz6i0vL28x2fFkfszzR3Nis+H44Jif/+hndHdLDmaPSW1icXbBmzfnbNaZ46Pv8YMf/i1Pv/9TqA7QQeFmx8Tuhnx5RQ6KTEQHRVxuxLe3HLMNlrefXHHVBU6mz/jO935ImUqCrSDNiW1HUAdMHh1x+OInUBQcHTwD1yDsEzGzbrZ3LO46crYcnTymHk1BO9lLx3uZFWpggu/v8dyzkhhAjS87IPzFSbG7w/9/uI7qf/v2/v5tT7MSkGOQreUswsJcVNSVxlrF7OjRFwCQ+8v+l09yfMige/j5HwImsg/c0XmE0WQfnFrjIKGXZel9yaz6GsGd/1Vf7BN1B0bqer3l9nbB7WLFpumIJJK693F1xqLTUKQYCsPyXXc2AfJd9umr6R642Z19BNTZqbMUZL0PDdBazr9GmQHYkWL/PeNN2Fk55SFHRktAQWYouO1+hjmad6D/g2uzozSpDDgBgB/0lkoZYg/LM/LFr9hc/ZrUvKOeWtzTD+DxhzAtMdRAJOGE+JszhsS999hfZo34smv68L6XQ+aTTz7hk08+4eXLl6w2a6ISOWtQoKxFhczOdxAlJCGDgN3xQSDg/Vnr3m8OBKCT894AvA2AtYwJ++CMG/afMCXBZWLcBU0yaLzvQyAgi2rO2P0U3xE9ZrMZBwcHTCcTdsOWLGcb/flO+QsyGP/clj//IAMBfNexWi65vb5jsVqxbho5w+dIUIkQIlFlnNbEnAdQfDiD50BIHpIAdNbVcs1SIkZP221Zr5e0zWawV2r27Lnee3mNXYcbkamDWFWhxfM+7aeVQWfBLf5Q+2qAjh3NU95HpIW9SDBxQojMCZUiFo11VhB9HzGmp1A13mis0fS9Fz10gpATIQaMcQxs4P2HdEbJ4U0LG0hrjTIWkxw5smfD7Xygmran6++4XqwonKGua8bjMWVZMhl863Y/u1SVHd1w50W1W9TggfROaUaTMbQdaaAO7yjFZvCRC10LsGegJS0AXVAWpYVFaJykOgav6NrwYPJprBVQUCtFimpgNoFC/N78QDlGSeC2kuAXnJO/CzEzHo8piorxeEyz9SwWC0AxmY5RKuFDO8gPJf2xKkqqQvrDODuUo+T9Q0z49QbQJD0ECSQJw7CupKrzXlobY6TZClLcDYBT1/X7ipjTZriJGEIIuCQV7DwkwO4BmJz3N4q9l6FSQ7qUGipm6UElaZiP+wXv/rHW4lkhrEAYj8dC6033N+6madh0Hc4arHNgLVVZcnhwSJ8VZ4s7eu+lMqcVfdejyNSFpesDb8/OeXt2RlkUwpCKEW0dla3Zp0Gu10KDjoG27fbswvl8Ts6Z7bZFofCpYd1sBQgj0oVOGJiuYLPa4nQBSuR7TdvgCWxDiy0M2WkqV6Cs4fHpM+g869WWf/znf+XVZ6/58Y9/zE//68+ZPzpgPJlQlRW+76mnI6bTKW/VW6l3pYSyg7efysK4Kkv60AMCru1YqgaGlOGeUVVTlAU5CaNnebfg9vYG+kBZlihVcLvd0nRbrCkHGavHD2uR+K+JpDCT8T4KaF9XtN2GkIT72Hc9RivqqhQfyxSIPjMajTh98gSrM9v1isvLS8iRw9mc6WwCSmGUpY8dbdOSYqR0NXUhMu62bXGlo/UCansfhhAb8fUwxZjgA6ZwAwgii3mMEhzSG7BKfl+CQhwBg7KWsq7w1xt6HzHWcXR0zPzQcv3mLW3bYCYTJpMRxirefXpH1gofIrcXV8Q+cbU459H5nB98/4ccHUw5OHqE1YayrLm8vCKExPn5Oe7kiDSt0Dbj246+79CupnIFRnlS7JkWGmccy2ZLG3tsZWnbhn/5xS+4uHjMRx+84Ec//3tury558/IV//a7lxwdH+OqmmwcIUZW2w0n8yNUbDHJMK5GZN9DXTGuSjY3K+aTOcenz2kjHIynzG5veLdY8Oqz1xzMpnzr+QtC39NsG+L1NeX0gAly04uhHw6OIo/vYmBcVKiYiF1LRlPoEaOiFDp6TFgU+Mh0WqMsjKzl2cEJj5Tixt/ybnGNUY6Do0eQDO1SEqRRmroe03UrVss1yrY8mle0vWfbtLy9XXLdb3nx4QfMT465vrhA0XPweA5KEXJCFQVVWWCUpfENRU6QAnpxx3Q6o5xM6eMFxnd897vfQinD6zPDtrvkpl+zvLuiiyWhb4BMHzwZ8SZ0zhCiRhstRaKuxVhDPR6hlGJxt2BUFhgrFWejNV0fWS+WtH0kK0vIidF0yre/9RGT0Zg2KgIFijOaZktROC6ur3l7ece0OGJSQIwbWr+VcCI7pixrfvbTv+N0VNE1a67P3lDNj6imByiKBxv1P3C4/6b9VbRdpZfhf/c1etkP6iEoSikl+4lhR2msRU57keNZzdFMGKPkjHMWU1lySFhlmU3H6PEzlHuGvzyi+eQ3hG5F3mxZvdqQqy3RPqeYPSH7Mb95/Yrp0YRv/8M/gD/j268/5fLdBdlUtNYwKiKkhrvVOW8//YSlabnMPYdV5tQ9oekz9azm5OSEEBNvru64fnnGEsX2ckRfasrnH/Di5APc0x9Aqcm+xyqoy5Lp5JgXzz/i+MnfoopnkA2UmtD1JBTuxbcJ11vi9RUmNNzd3XB2fcHjZx9QjY5oL5dEVTI5/THb4oTlyhODYnwwI6s1VTmmPpqgbA15DCqQek9CYUsr98AYGU/GjKeHGFuSkTQ60ChryEELUGflIqq9MoDBomJncSIXc3fozwNDOeV98PvX3HZ7uHt2zpfJNAW8yX8gBOCbBl/OEFMP1mXxp4oDw0lhioqTJ88gt1S1o6gP0NV4j8UIkyaRMX/eGq7YszG/6jMaYwYA6g99P4bz5/tUnv03zPchELsz70Ow8i/T3mcUKqP2T+VdYoKCtun4/e8/5uziDF06lE+k6Ek5URSFnAlS3NvF7H2rwr3Bv9aG6KOkd5EIKZGQM3EYwg+n04n0gUIsAKIjK7Gb8klzF0Sp5axDG0ceCsghZUK21IXjps3UWC67wJGrMKpAYXGAHTDemNUunFVwkB7qYYmXKa3vwV4N6AipJd+8o//3f2R99gtU+47UvqPVPeXFK9TjN7gPt1Qv/g8MjsSYLLqUYe35A/r8P/ZK/QFW5p4UuCs+7R+wr2Bs1ivO3l1wdnbGarMVUoixErSoFTkFNqEfroV4k6mBVm6UwSpNsoY2hPvk1oEIINdKnmv7e+kjiPeg1uIZmEPcq9P6vmWXEvoQiN/93b3d0z2Im3Mm60RMPb5vOH16wve/822+/Z0XfPj8BZWrcexAJI1RDwL0/pPs4XJCsAGV0W4YXwOZR6ks0u0kWpDsM7fnl7z99CUf//4TPv3sMy7uLln3LX3w9DmSjUI7K1Y+IeB9J/6Bg5dcyhLIGVIkZkVqPN4HuqZh26xpN2vaZkPoemL09ENoRN7lDAyp2MqIGvDeFkQK29gh4X5gXir4yr7+SoAuDtUNV0jqoIr3iDBImo5RIudSQYG3KF1SGoPRJSELpdANYQNijBnpQsCHQIxikBneWzQSOWVUUhSukM1Fvg8hCCkSevGwS10HiIdWH3q228BytcHaO6y1VKWjtJaqGmSJdUFVDAb7pRlklQ8phjKJjC0wIMb0mYH9VtxXOgYqZeh2oRMMVMfhcRQdc1GVWPsg+GIACp2Tqk/wYK2YhXqf90m1xgxMvwxq0KYrvfPJugcUi8INgF8awhM03o9QSjMdjVE244Mjlr0wMpIklWzaZg82Zq1IWnTzWee9LjtFaLoG1bWkJGwNYPguxRDkUcggHxhfOwPEnDPOGIy1lKOaqqpwRXG/aAyL1T5xdUi6zWpguWkN2mCyGkIw3jdR3HlWxCFuHGSBsgOYZIxBG/msCjA5U5U1VV2TU08XhBL88WefUlQl1WyGKoek0tBzs17TbRu0k9RRCUTT8p10xe6OvG07QpB+kbEhm42s2KcWP336FK01Nzc3rFYrDg+FBbRcLjEpYZ0dAjikWrLZbPC+ZzQdEze9zC3ywLApKDSgMzoPCU0DC01ZkbSutxu6psFYi6lLnr44ZXw4Y73eoo3BGIdvPTHufP8GUcPg5WhUFoq21pS2IMZ+8KHzBB3EK2G4DiklrNGM65rpZMK6runjBt95WfhSGuZzIsRINiKfEH+FjLaO4BwpS1VD5tL92DAPwHXrHIqEKyyahLMGZ2A2mXEwmzGqCm6vb2ibhpwiymhcVVFU5cD4KchK40PE+4gpwO79Gh5SCvRQGdwVAQJ9r/YVqozGD6mdUUWMkc8bogAtwXt2ibCuLPAxsN2siePJMNdkPJba0auIcgXjesJ0PGHpApu2Z921NL4h4Xh8fMCHzx4xKhwnj5/gihGrVcPy9o44+FMmAkKxh6hlbbFDKqvEeieMTpicqMuS0XTCbDZjdbfk17/+LZvFhscnj/jOD3/Mer2m8z2bpiej6UNm07U0sUcnCdYxgDUGExTTUUWIUJaWsc5MqhoezdEFrNotN+stzWZL7Dpm4zGzw0NwFe3AnHUD+NuR9vJ0YzQx9FhlKY0VfzYFFiVBDcbijMUE8Stx2jKyBZOiYF4YdJ5DrYXJ3TaMqxlHh8c82hq2NwvytsXVY6YHh9RAVReMZnMmyVH5RHN2xy9/93ueTecU1tClwN1yiVfgoySldcHjrPh9JmsJJG7alrvWs2oj8+MT6spwdDDBKE0Ic1bbI/RqyZJIs1mC90RtJC1Ki14kG00edtxaW4wpKAbPLq0MZki1szurBISBWlUVqEDImuizrDUHM372s5/QB3j57oKQEp98+inBe968O+NXv/kNj6PjxaMJs8IT+y0bn2hVQVXWxFENdFyev+bVu3e48QF/97O/5+TJs8/Bcg/XZ/Wfuur6Tfvjm2we1fvPvPdwYB8znG8ekh4GNjtEYRpomStd19MGT+U0xmpQFnN6Ats71PoaN3W45yd05w2phPpkDqMncPIjcN9me54wTc9Vc8FsHZiOLEuT6GqNritCqaBrodkwdjX14Qmfnb3kMkTqsmBydCJJ67Hl9atX9DHx4oNn/PZXv6VZNRx+9G3Ob9/ym3/5F06/l3j6/HvEZkkMC26XnvFozAc//Rnf+vaPUNUcKMBa0J6gEm2/pe4Cq/MbNjeXnHjP+dUnxMMp8+M5RTXnO7PHrHMNrmTpA2o8ZmQEcHe6YDaaYsuKHBKqMmAyyk4wZJr1Nbc3t1TlAYfHJyTlBtl5Gny9exSabAoxq88CzeXPz0el9nJXsrDUXeHEDgW+yKT42tr7AMf92vHFN9T6G3Duz21qAGKzVpTVCOuOUbqXw64do9J9v9/vpf+4cIXPe2kNzw6v88Vr98eAZu//zkM2nXr49Huf94t/+/VQP/+Y8MgUA0YP8YnDV+43ifPzS25ubsFoUhAP7y70cq8fosS0VvuADgHH5Q2FIXWfyOqsBCN2Xny+0QpnLNWopm092iqc0diioCiG4MDg8SgoDFoVeBgsdCTEUVUlRhVsUkNVWFJZ4p2lQQgjdmBdirINCZVQ8jhnMMUQwpgR2es+zlX8bLu4pFhcsvqn/0F69Vtce8nUtZA0MUBcrWn0GeWTa4iXkmxNRjEms0u6/YqO/7ra5wZRBmLbsVwsubm54e35GcvVmvV2K2zHbMhGE5MUM3weruXwOX0QmXhC7c9m+9fOkpQqoBN7pdRuDu1krQ+5q3JWvp8Hu3TinHdxdGKpJGmv9++XciKrjDEK4xRaOyaTEYeHh8znh9TVBKMc4jtnh354z1TwP34PN3wksVndYQcCoO3ZpFnISzlEtss1lxfnnF2cc319zc3NDU0QdWAcQD3fS0hETGIxVDsrNlHJ4/ueptuy7TuZazGz2XSkCD50xL4j+E6IHLtwFklXk8+yA8GNlVAOpRgVxbCOqD0ILySPhEqJ4L8Y5PmwfSVAp60Y1ldFjVVSIdQDIoyRJEexFYx439H0Hb2CMOjkS6MhZZyCsjB7X7A+OnwMBJ/l0JpFMtl1nq7vxdgeTWg3YO5THuVrZpECaUPpxvvFzXtPHzQxBjovYFHb5L0JfVmWVFXFuC73QRPj8Ri9I3TvJsDAiMlJUdQjTJaKokHdg3NRAI56Nn7gqebpBsQbLyCjsMsUuu/3k88Yswfrdo936bQ7ILAsC1mAjZalfHcwzoLUovT9ZFYKZQSpNTFjCqHGusoxqiwpCRMxJj9QMVu6phVAbTD2T0MFRKHEa8uI5rrQFX2KwpryEa3EUy/mQB6AS2cNdgBYH7Li3PCdyrKkrsdoYwZG5n1/Gy2sRjFikuQUFEPikMEaLfLBPb39vjq2M5XdVdju+1L6U5uhwj+8pgDNBWRF17b41qMLg88Rv16Tu452AF6tNmDl+mkUxij6IQCjLJ34rPlWPB2UFoDJe6xOQ+oUdF2Hyoqu6Tk8OuKDZ2O892y3W0IWT7qdj1/ne2zhmM5nNF3LZrNhXE8IVktcNBmTEihNoS2mNNRlzXg8YrtewdD/eSiJ+yxA3Wa9ISeFGcZ6LhXWOW7DHXVdywY45T1A+tBDyJBIiEQ5D1Umo42As8ajs6IagIPCOQH/lKYwjlxqCqdom60sqFmiqHUu9oc6tKThWmOHa6zE2yFmJNxKS3XRsGf4qSH9NQeJHa9rSW3JMUiQzAc1Ogs4cXV7Q1pvKKoRW5/oA1AkbDki+CSAaBrCPKTUu6/omiHJNiPx2DqHfVqzUuI70eZAQaIc1jrfdbQPDH0T4t3Uth3r2wXd1LCNniZ69LYFMkvV0uRAaRyH4zl3s0zvI32zYbHYsG0/5fx8SrNe8+zkgGdPH1ONJsRc0DdSees7L/6eSq7zvohApiwNyml0NPRE+lY8Kwpj0UVF33hur2549eoNwSc++ugjRrM5qmtZtXe0XU9ZlFCWpMLh+xaVFBNXMi0Litjj6gmHW0kBriuHrQtcOcFUmtvNhr4P+K5jc3fHtCwojaYLHZeXlyyaLbau6ftW4t/3vioF89mISZUorUJLXJh4+GlDZQsKZ0l9T04Jm6FIMkeMMoyLglyOCYs13WZL9lCMHeOqoi5aus6Qs5XKJYo+BtquI5CZnRxxkHt+9/HvsQkejUckY0hKUZYFdYKcGjbrDWU1xuSIaj3L0GBSxJiSVZtpOs/0oGY6rRkVJVZHfHeCKy2fNZqz5ZLcRDrnaHxi4zv6IaAjhEzXRaJPGC0yl9KVgKFwPVVVURaVsFoVoA22LDBZoZRFV4bNVpjTJycnHB+fUFYV13e3NO2Kxc0li9UdH7/8FD8+5PHsBfW4xKqSbbPG+w6rLL/65S/4+J//B13nqecn/PAnf8+Lj77LyZNT+j7gjKzRD3RRD3ZW37S/vvY59sievc6O6vLgXK5Q2kF2xD6RYhZAziuyl2q1sglSB2kDpgNWpNuXLN7+nr5fcvDoBHXiYH4E1QSSwswy8+cl6rpjvbgjtS2bFFEnE6pHx9hnhzB+Bn1FkQ9xv32J7yxtk0iHjifPnjCtC968fcVyvWHTd9ze3jKqNeu7Bb/4p18ze3HA/HiOb5ak9YJUZ2xdMtcFx6enTI5eoMqatGnJNmNLQ1YBrEeNsrDtyog3T6o6AAAgAElEQVSKHWe/+S2/e/lvTL73nM3pMU0+I1Vz7PwJ1ajGTiY0vRdj9r5he3PN2WcvmT47ZnJ8KkFcoUXbbsBHHY4JzhyAPkJjiKkn6w4JKOrJuUOrAqiB4g9eTQXUdcXzFy84spnj58+pq3KQvsq1/vOJSA9Bk4fjZ0gN5X5fJwcYOXTu/JO/aX9628/PlMjZyj6qHIMqENdldc+OhT1wlMU57AHE9oevg9rHXub9mJHnvwRY+9O+xZ/4K1/z2HkPrLv/nnqvH5SnU0isFmvO3p5zt1iIAtSAtnofbJVgj3RlxJx+VyfWTiIaYpDicNu3JJUpbIEtCqxVsjfOgouVxtCFjm3TkzsonUFbg0ITENZRVGIVk5Pag35Ga6yDuqopK4MZWdrccru9pdOBuhxT6RG5g3Gp6IFyOAuEvMFoJXsVNIWpZRjtBo0K5P6O9u5jqvVnhKuP6e9u2ISe1DcEE0jHW/rjjurxK6rHB+R5pMATcyTnKVB9XTirXJ6vYpvuZOAh0HUdN5dXfPrxx3zy8hXnF1e0XY/v/R6QzpEBoAvkFMDt1F4JH6PY3GQ5kya1I5nEe4bnAGreh3zsSAtyBt/78D9QlO3OIznKYBSSzgOCS7oPmkANsvGBuaeH7ICDwzmPHj3i+OgR43oyJPWa4WfHpFPvY3T/UUvwMJ6kuxTK3CvmlBnKDhnBD5C1a7G85d27d5yfn3N1e8PtekkTO7wWokgfxbu/i534q6eM32yIPtB2W7ELazdsB0lsGIhTe/+4FEGlYXVkKJBr1ODfb12JLiqwDj34wGqtBrsJjc4ZFSPZe7QK5BhxtvzKbvhKgG4HGrmyQA8DBxXRpaMaV0wPJpQ6oRBAbLVtSF1PHzrRzxcORZZK3iCh0wqcEvPSqjJYW4CxxCSeZ13XDQcnceeJeSdLjfiYJRWmkM1fCEH0vs5QlY4QH3p5CQU4I4+3W7kAi4Uc9o3KzKYHWKcpi5qychTWycXPcptKcbDJSplsMmXWuMJghm7zPgygUBYgCvHT23lnLdcrYRGFgPc9IdybQCoMVVXtJ5+1wqSq61p+SkeuSkBSRgbvTQEsdp5gOZO1Hhbz+CAh5N7DQGuNsQqwFIUd5LGWPng2V1eEGAh+mMiDRFfr4ZpZg00KqnvGWoyRvhdK7s7gEtR+EN8DPVrQZa2GhLdEGoA0jNBRv2xO7v6bUyI/oPI+BGn30tiHf6vUe6AliGccSktNJwSygqos8WEEGqazGU3fcbdes1qu2XSBtvf4wReRBNoVAsi0rbCUjARudK0w5+p6DCAH297vgTLvPYUtOTs7w3vP6dOnAJydndHHwIsXLzg+Pma1XnG7uCPGiHOOqq5ZbzZ0fY8uHOIZmyUAIUZsaRiVFQezOVpBk2GzXBF9QEVQzmIxtCGijWYyGnE0m1OMC0ahp/Mtm9WG8WQiXpAx7und9xVUMErT9T3ZC0vROUddG0ZtIGwbaIffeyBT2N9Q9FCFsxZrDCnfV1vVcK1QQ9KREncMNVT0Q3xI+Tb32/rB8yire6bncrnkaDZjPh0DY7rNhr7tmI4njOoRb96d07aB9aqlTaDKjCtb+j6QMgQv4HpOA8BlLNZI4pW1luTFXy6qIXJb3TPurHE4ldAamq7H50zCYE2BUv0Qwx1RbmBVAj4FqZimROp6WtMTyBjtJIX32LLtAo2OhL5hue5YbXq6ZsPZ25rbxYbD2YyikARUvGjelbFUzpKcMK6MDSit8cnjlMYWjjJVuEHC1HcBrROldhxN5uSUOHv3jhgjp8+eUo1HoARkRmm23rNoOrzvOdQaayswitKNcOWI6TiRfELCvgPZQZpXfOv0EQTFarmkUKCiJw8VqOXtFe3NNck6Oh+YTcbMSykm+Bwwu6qwUhJjryIqJyqlcFZYdkkpNJkig46REHv6kFEmUmg4nEy42/Ss75ZsGmg7CfBxxtL1ncy50QRXOHxMROD0+QumLz4gWs3m6hqKAqzDWEdd1qzbHhWiVEdTpCgLnLbQDT5yRU1IPat1SzP4NlZlwaQoORqNSSgWqeO8X+D7wDZ6Vl1i2ba0EXw0xOTwXtG2fm84vQt2scZRFDXOFRSuQJPwnXghtk2DLmpmhwdU44mkBqfM+PFjnqfIty7PaNoNq7tzXr99RX7yksnpt+i7Y8BSakVtLFGXHM2OKK0h+C3L5ZJl2zE5fsRmuyDnQOHsflzv146HO7tvWHR/ZS1/jlIyPJvvExPVIA/ayb2GuhvrVcPNzZLJZMzxyYyysHSrO67fvEL5Ow6PSgrb0ly+pLl+Sdtfk2lR00fweAqFgdwCa8rjkuezj0jbGWnxBpWXHBZH6JlG1zW4OTAGW9MhzOaj8SF9DpTZkacV0+MXHKeG7ZsGh8E4qOcTZuUhy05sMD78wYc8evItVBzBUUU4MEy2CTc5wdQTVFTkpEjZkJIhKo2yFbaqwSTmT5/A5Rv+7Z/PuDk7Z+sCV6fHHMwPKK2nrma4UUuOt4xNjXEONi3ad5RFRVVNcIUF5UEH8pCCWBYF5eMDUHNUciSlyLkYDMk7QmpJoceqDqsVDObrX9oUVJXlw4+eoU6PyKOKoBUhZXTO2D+bwPZljKYvP3Xv2BG7fZ3sJc1/3AHxr6Lt9BGDjFRJASerIRgk7//lS4dIGogJ/6t1/F6K+vC14oMX/VMH0h8et3/S333NTQF7WWeUDkgpcXN9x831LX0nabmRiHaayhYkDN7LOdfHfgjYkfVyJ+XdM1tR1HUtBIAUxcNba9brDVeX19wu7iCJcsNqw+xgzpPHJxwdHzOqS5RJ9LRoA8aI4skYh2S1ZZSKWKeIqWVx9Zpfba75zb/9M2kI4bB6wtOnP+CjDz/i6eGM8dEYxwqfl4gYUhNUSUaTVSlqIyKkNfnuFauXv2D87mPWn/yWm5fnhKZDZRgdTzksK8aHiubiJdXpBEqDqgwWR1QF5OprwHb/0AsIa1jAtogekjS32y1X5xe8evWKTz/5hLcXlzRdT4hpf4YNQZhYKYtvmbWSWi4JnxmyhGYl5NybBobkLigiD4wvxb0Uded/rZSCB/6Dkuo6AG6GIYlXbqpaa7SRM1bft3jfEaJ4E+8snsgJTKIoLeN6xMnJEU+ePOHo6IiyGMM+tfVeSrxfnf8TrLtybk8DJsEAaO/6D9lgeE/Omma14frijHfnb7m8uWLdrOmTJ6RAHwKN79n6hra/D3BIIdIsFqIQ891AspJwtj6J4tMYYcBp8r2cXt3jDD5lUVy6ElPWmLJC6QI1qOmC90PoyU7+rYXBikHrh3kEX96+EqCbzWbCPHJiZOj7Thg1VkMlfiNFXTKpJgBM245N09EOyRTZC1K5A47CAAYII02SZTSKQht0YRgXNXFUDGZ9GVsWIontOrbbLZumpet7Sb4YEG+lDXlAkp2SFNesFCFrVFVIQujuM0RZ6HwUg/r19hxrDWVZUdc1k3pEUVdUzqGMwdgSUhgqHAL09b0cznKKgyZ80BtrCYfQ2u71AcpK4ETbtrStQim/74uUA13fDCNxlxpp2Gw2VNWIorDMJqOB4mxxpaVMDpstWosxs9GC3u5BwT1IFodEErBGmEhKKbS1OAXKGmyMHIOAluuGpmmIfRBgKus9kLhjpgmAIj87VmLOeRjsD5OW5LP4EIjG0PWBTIu2BuMcygoTKu6kmWqXMqNA75LEhsrScN1kXMuk2NFEdz52u8pdfrAAxhhROWOVxQ5+AbuIZVNWlHlEMmCqgrq02Lpi1PYstx2L1ZrVasO26TDKkrWMRe89OUJRFENlRJPDAKqVJTEEtmsxjNRD5cKWBozl7vqGy8tLUkp0fY+yhsvLS8q62o+H3nuM07jKUdSF3AhSwtlCTHAHuaXKMh7KoiD6QGVLetPhjKUww9zxidb3vH7zhsenj5kez7CVxalM17fEoaqyM+BNQ38/DKvYbbqGqyTPJY3dpQshTLWu6zBmTF2UOFfQt0PMdOtx4xG2cMTIcAPaVVxlsU15B+gZnHVY69EDa7SPkuSKEelz3vkw7jcxA1gqqJnMyZggJQprsUXBs1PLsmkJfoHNCjeeMhpNUErTdX7w5wGl3wd3c8zi/+ADOQcUknSr1AD6MsjeHeQgzNSgFLooKEwBrRc2ccxU1ZzpdMp0MuG2LDHTKXWwBCLjyjCKgT5kqqpiNisxXY/OHZtFBm9oup6L6xWrxRJQNI8e8+jRKZVx6GHT5kpHVWpSNAREth4yrAavQ1OU9GlgxyojbOAsfVBqKRRsNit07NG5x+AgdPRdS0BxdnNLFzbM6bGHM0bK0G632FJYDiWGymp0CPShx9jItKo4qBzb2YTDuqIqhGJfG5n7pVa0PhB9YrvZkHyHmYyYlxbfw+3dLWNTUdiCPmf6pIEs7E5jSAayA+2MyJ2HMRlyxOaIUTAbjVCmJLaBu+2GzUaBKSiMosuRNKzhMUaytiQF266nryzFZELyidI5MuIh6duO5m4Jbc/UOvoQiXjMuMCNx6AM2z6zaCPe1gTtCEjCaqktc1dTHlTchS3vrjpu1wLELzaJ6+Waja3FK84YtK6JQdPjh2qqbFkYwORdYrXSeZ8idbdcgmkpJzOqekwxnoqvaAycnj7hb374XfrYcn39lt+8estnrz6lPnnGT751SDxyOG2otaEeHzKtpvw///d/57/9/AWfvXrF//v//RM312e8ef0p3/nBD6jrmazbXzhwv7/R+0+wz/um/dntfebTF675cO/PiBNA3we6tme13hL8EKZiLUXt0FZCwJQCkxOL2xtWZ1ecHjsq7fE2oHRPdXpI8fQQbt4St69h+iH68G/x9jGZEudmJLcmEjBzh54oUE4sQfprmos7zn/7/7NcXDFB80RXsN5w9enHPH1xSjUpmM4qXLTU9VPKYsSzFz/E43h785JVhvbtORefLfnw777PvDglu0PM5BlKzYESMyvF+wZQaoLKGd8t8M2aytWMTz/g+YffY9kvMBNLrRLTIlFNIatbLv/9NTcXkeff+TmTJ98jRcNkUvPDn/4MJiN0WYmXkw5yGIkdKmtwU0jCxhF/MY1STuxacCRkvUj3l+ZLW0oQkuzlVF2Duj9Myr3wa6SwfKFl1MCiSznvkzn3tifc70G/aX9mUwOOpHbsGDk8qp2hGAxslfyF1Xz3b7vXee9lhz2iJCIKW2S3+ss4EjXGX117j0031LeHhMZmHbm5FTubEDydb4kPvIqlXwIxeULoQYuVxS5AL+Yh/nRgVIkSSIrT2lpyVCSViTkRopyfy7JiMp7w+MkTTk9Pmc2nGK1IcctJkQn9Gt/3JA8kJSqzvqX3a1L29H5L7Dt2VbW+j7Stp0kV5eF3+flP/wv//b/8iNMfvYB0i+tvUEclOWZseQrZkpUVKyq/gfUZ/af/yvrX/0T63SesPjtj8eaGfutRGHIumDyJuJNAv7glb24k5bWaktUMnUeg5n+ZSzYcah4O5RQC7bbh/O07Pv30U968ecPtza1Y85AJSsAiYhrYqHIe+Z/svWeTJMl95vlzGREpS7UaiQEIwVtb3t5yze4++H2C3bOjGW2pIAgMBhjV07J0ZWYIl/fCPbOqIYYCONLIpZtVT3dOVVZkeLh6/o/QArSyDMEVr7la1BBSFcVvKiSf/Rmq/F5Ri+plXKRYxp2U9bCVy/NgjCLnSD9soZKMUqoVL7EvltXRtic/CIFSxQYr50QMgW6p6JaW45rcenp6ymKxQgpTQaM9OLdHnxL/fED9j9/kXqEBQEakWG5aLiSoNA64wXF5fsXLV9/w6tULzi9v6fuB3TQQcmQzbrnbbtgMxb5nmqaiInQOFcueOqVQJcgFaDfSkAT3rMaKS7Dvv3pFxhiUblCmQZoGoVqy0uT9PdQV2xA1l7j4oSGUR6REin+AxPWjjz6qvm+FTeGTx/mR3o/sRouRAWgwdk5rDF3XILVmlspBV+fiUzcNI8M04pwnprI8CClKGl31ldNRI5TGSnkAuIwCYSS5aRkaxc5KNtvM6DwuZHTTEDPUkNkCYuRU6Kc5IXSRAL2TkhkTsQKIhamT2G63bDc9N+auSmFnaKtYrRaFWVbOtkQRSSGQq7+YMaZ4UJV8nANbb08kMFYhVUbIBm0kKTXFny5Gci6fP6VybTHkg4db349ICbtNh9ayMusKiGhsRZNJB++y4n1WfulD3w5jDEqKQ7hO4SSqArJYw0IV9uEYMlPwxdcv1ftXwTH1AC1OtcpTZKtdvf70jsx0DzjFEPBG41Mke4dIClOrCWU9u/e5kFKiKuiS034hu++3/fvvN2v3TEHYgzX3fVwrUSHQtBYtJSFlvA8Mk8MEzRQ9vZu463dFbmwtymgW8zpphkB0xQAyxvrangnpIsaWKkUBJjVaWYyx9bWAlGWj2bYtbdsWgHm7LVRYY8gpc3NzQyKzWCyKNJHM5H1h+c06vI9sbycwMNMWKIbJStbCwTCxXi5paoplCIEUy3+FVsQQePHiBY8en3L69JT107MHYRmFvbZ/JtIhdVQS4/4ZFhhjiT4Sg2ccR3ZJMk0jMZTnYhxHnHMH5iBkjLHouaJpM0Nl2P3mRrs8A+m+violUmusLYzd/aSsrCmUf1WAaARItWdoZrquY5omzndbrFC0jWXWdmVs+8h6dYTQDhc0pluwOn1Cs1rQrdfFuFXmsjkSGiFk2WyGSA6JEUH0DoiF9VdljsWDbO+DKPDRHz6D0rZ+d7m3IcQCIHUt3XxOaxvSLKKmTEhFntBIS84jWWnaVoO0iDDi3ISYQOqyMZM6ImRLxpCp1PlcYrq9D0xS4FNkSpFxmNiOVbKdEjhf/QCLBFkrW5KM2444jrRSsjw55uTJCbPOEOKIyBO73YZWG1TTMJLYXV6Rt3fE9ZqjrgBdVitaCaay2VL26OwBRRy34CcWTUPXWWaNIYaJqd8x7Da4lFk9esxsMWPY9dze3jBXivnpMQJbizqeKSsmBORUJZ0lCa18piI1IAkSgShA54iIENxIoxrW8zljGAjjwCgiPjmi84x+hxg9a2d4tHwfaSXPX73k0g28vblioSxJKHJWWN2gcvE9Fd6RUkTbpiSV7yLLxZzl+pQpea6HckAOyjL64t/YasvT4zNEa9mIDecbyNMFt9eXXN1t0G8vcLNjdk7TFcgToxqk8Igskbmmd9Ux7Lyj73u6xhxCj0LwDP1Id3PDWiikNIyD4+6bb1AfPOHpe084v3rLj/70T9iEyE/fvOWXn/2c8x++R/jeU0Q3p0sZaRTeeb77nY9YmRXzVcfbmw1DMhyfrGpQVCjj9D8guP+F2rvgXKZ6m+U9xb8AAVLJMm9bg7KC+WxOZyWtAUImhYTtWk7OzljpieHa8/Wvfszt+a94/1HHB+8/QXQS8fIcv9vQ9yNutaNFsXjUAEe4cWC37UkM5Nyjc2Ix6zAiQOjZXn3N9fULVCdY6hmrxnDtd/z6i19DE3j8aM1jVrx6+QbnPaujI+xihV2v+C9/+gHX58/56V/+LbeXPUfbJ5zIjxDtCqFbcBHiWNjRuczHIoMUGiUNSWRQHn0y4/j73+GH7cTqyZzVuiW6HSJGdtstdy9eIfoZ7vKatNwRmOM7xWyxgq6BVpOZSGlE5h0CVwA5RhBtqVBQpTZClzVVdDTG1K6yfNv4lKKcH/AJvIfGVFb8vt7/xwTofhvkzbVIt0+kLLLW/ZzyH/PKH9xqeFEhMRSCc7EKKx7A5ALYfdudfocI/Q5Qd9+f+0L5u19FJfXvuuX9HwK0JMXMblfUOM6H6jaXiDEQqndt+YoIUYqNu3EotjG6fYdNJWXx016s5sUORkgSEjd6hLbMZys+/kSyXq0KYSUmkIIYBW8vrnHjiJ82xOmSadwxDBN+8lXmmgnREcOID0NRgNWAxbbtUMoQvGF0mfPdc2xMfFeNPL37irl/RWs2rJ4sEadn8Kx4bolcAu3ob+HiOc3rL5lfvEbc9MgBtNe4MeBTxO08cYjkKaK9gnGCqYc0gpgQjIU5jPnW2/9P768Ha9deNaQ1YRi5ePP2kNh6eXlJCpGkdT0DFlCFkKoHc7GVEqKcW3UWyJSrIkhWlUxV4eW9+qsewtNvpxQ/9GbP8V4qXpJa78lBhX1XgLwyZ4bi85oTxhbiy/68VbztIkorZjPLer1iuV7QtjOkMJA1KdXi2QGcK89zrvpFkKh/JbDuAGoKCkEjJ3IKRU34YFqRyjBsrzh/84o3r17z+vwtb88v2e4GbjZ3TH5kO2zZ7Lb0bjrc5+AcwXk6Y4vyZw/AFYlXvQhR/5p4ELH0YHWSaN2A0UilEdKCUCA0JTJEYM19am9KxZswiUwSmiz3ATC/v30rQKd18YyTSISSNGPL0G9xKdD7AT06lHBIAp0x9TMKkBYpYd51B3NyqaCxGnI18deqSj8LQ26fgiIPFbSEhWLMbwzLVjN1mn7R4WMBDTMCFyKjC8WgPdSwgiDxKTGJIj3IuVD2UyoouNLlhpmcidWvzvuIHyf6cUJtBqSCN2/eICU01jCbtaxmHW1naazFWl39MgqafTAwzKnSx3NhYJHLZ1e6sO3EPkqbGqgg6n0ITJMjBE8MnlBlq4XBaOinkWbosVYf+rRtS1hDoxuMMYWJFSaU1JV1EUvl5YDgPmStcVi0pS4eRlmkytQqv9uEwhgKMdbJIh4Yagcg7sE1vgOgybpIV5ZfYWDuk3xr6EdFj5VQ1dAYyKVS4PP9Ar8H6x5+vTOpPWDQ7QdDTokUIkKruulL+OgPHm+3t7dc3lwAspivK4O1DQKNnxwxhCovLd56SghSjCURN1qEFFjbHuSvOUFrLEaqYsypFMfrowMz0hhDloJhHBnHEaEV280W5xzdvCXmXN67zg1739WYEy4GtCj9KKUgu0C/3aJSrumqgjEENnc7bjd3mKaDEAlS883zlzx6/xnJKgKBMU4FiKr3vsRCp9qXtW99KOa2Ih02Zfso8BL2UgMJYiSGSKzeDSEErJQ0sxkog9velmof5Xeo+w4qkd57wPaw+CiU0EhZ2Jmmeqo9dKzOiMP8eXtzgxWSzuritVElfdZqlosFvQOywNqGo5NTHj97HzPvyNbSu4EpjAdA8p2vGAkiIEQB7IIsASFavrsATqkYlmqtUW2LE5JxLPRpa1qMGsk5M6UAVmGQOBfZOocjgVTYLIhKkRuNiZoUBKFp0U2LMBktEl0jmNvMfLminS1Q2pJTJCOIqSRBCRJDCgyREikePFHqIteOxbdSKInWReYgUmQ5m+FiZG41x0dLHp2ekmRiM9yhiQTvyAi65Yrl0nC1ueXt1QVy1xOO1yzXc5bzrjxbwWHdSCsjGEEvPLNG02iJlYJWKeaNpQ+OHAPRTUzO48YBM+uYz1q208jN7RVNDpzNNN6DNwkvIVYjW1WlAJ5IwOOTJ4aSWhhywhOQqfg7OOdBZwSxjB8SKQZ8mPBuJMiGbGxllEqstqTtQO9KGqMLCScj0mjapsUkz7xpOepgvN5gmhmm6ZimHuc8WQi6+RrdTFzf3nB+dctnccu0WPHx0QnP1ku65ZJXO8nT40QKDcTEdvOai9st3lvG3KHtjJwsWjUIWeUMNfV4b4cAMHmHMcUGQmrFfLEk9GMxkbYN8/mS+XJVNgfbDa3RnJ0dse0f8/Tiii/6Ky7O3/DLT3/On//oQ1azJUYVwGHc9sxEYQEbLfnwg2esn3zE0dGK29sbtO7Qs9/vb/Uf7d9++/3wzL0MsbCtxINNLSgj6IzBzs1B6CYRNS3N1/GYkfM5Vj/G7y7ILiOTRkSFHxNNyrgXF/TXN0yLjuvtG/z1xAc/EByvPyZvRloN3fFjsn8N4Q4R7iDdglPovMPMJO3smEdySTNq8rXi55cvOAo9T08eoVym04muXTHLc4xq4GyNOF7R9SPf/87HDB9ONGea2GWc38HuEmO6mt44gJiDmJOzQcpEa3OJIFQ94e41Xm05/vCMo6enoCVmt4PZGbPuiO+8d0K8tYSpQ8QGNZ+RlGHSCW0CCkGsyhWVRmTegg9oOyFaCaoEQEhpq8+URIi2HCz27IgMv0uaDLVjCv2vsufK/r0wo8o+7dtSNv/Qtvd7Lt6ysjJy94/Sv3Nw51+gFfwoH9gmOZd95eGo+ZBB9zsAtn9UE5R0QiClQEwOqIF3aCqP84/waR5e47e1f2lA4SC4I7nA2zdvuby8PJj/t63FATLIPRUOSAcp47MP3i+AXE3QjLlaKyVqGmvER08/eYbBsd3s6McJkkAqzd///FN8SLhpYnKOFENRm+QS/qdsC9Ki5YrGNDRNV8geraWxiuOTObZRWKOKMkpolNTEkBnGgV9/+Uumqyv8qxdsppew/RI169m8sSw++R7CzBFrA3ZeWDLX5/DiC9q332CGnqu7jI4LZlYgZi1TrDL9pmGmW7YuIXYJ7hzMHWLuIA0g74Dil/jH79N7tZUbBl5+84LPP/sVX375JdeXV7hxOlhThZiJOSNiKrJ/BFrKAyM1+BLQppUiiVznznx4UqWUCKVRVQqdxL0UFjiEfUG1bqpnsHKmjUipDmcUyA++NzxgzQmMLmNtDwIrXeSZbWtZLFuOjhcsl0u0NqRU7mhOak+t/Q3Qff+1J8H8K4F0D+aq6lBfrjNRPOTGgfMXr/jlL3/Fz37xKb/6/Eu+eP6Cy5sNd/3Aduhx47bIVkMgiP1eupwhrDaV2VXnsD1BroKtuQKuec+HExJFyU2QUoIoe/Esi+dcFuW1IvkuoZ1JCMixgLXsCySCXElV/9D6+q0A3csXz0EI7GyOaWxJRrQWQ8QKU5JeKvMr1YdKCo1VxbvLp0zKEmFaWl0AnMZYmrYwZTrbsNlsuL6+Zjv01eNu3yEQs4dYUgpzFiTv0VQaqZaYpmV0ga2aGKfMqCJeZYQWiCgIziMPKUWypIQqQVKSLGCcHMJKrOmwMZFCLjHXIRJTBCnwMUd7qrUAACAASURBVOO2O4ZhqOb9TUmC1aKGTOwj7Gs0MtUgnkgOFUcVAiUUqkbwFuAlY7tywCnSWceoJcNUvO1iTBU5h+AcKQe89yWxpQJOQ19CGJqm+MGBoB8DWsPoPGq7RekiYSjGA5U3JSVSyZocVNhIWpfAhpgSyFrl0QIqSLdHgPdyKrkrMcJSadqmwdi2UD9lLqxBIRGypA5Ko4m+sHic98RYky9DqNXfOunlAkjllEpEgdonv97//jJwC6XxIPuq7WE1Aspm00iDkqoARMpAlriQGCZHTAUkjiGgdUYKS9tqGm2YpCrRRVUesDcBdWNfPF6UpDs6IkwjPkRCcPV+qEr1F8znHcYYdruBa3eDHx0SaJqmgKRGs9vuCmCnYBwcQkusbQg+YCvoHVwJArCqSKhTDkQfOX+z4dGTx8xmLU1n8SFweReIbsA7Rz9lhJEsfn3ClAMYibKa4CNhCKQoir9ilRaLBLkuBlIK4jTVypxCaIvWCS09WgjIiqH69QktawVH4XzAD1tczHi13/RDTvu6g6ybxVxYYCmXCSzEQ5z2/dZconKRY7Kfl8mU2BBB03UM2y1j33O0WvL45JS2sbhhZLPZkFVDjAFikTyqajTqg2P0A96N+GkielerG5Ek9rHllaqeZdnUKoG2Bm0aspS4WMaC0iCaBtV2ZBcZphEfPF1jWLYSLTRjgqg0URdfuKG/IytFZ+cstGVuBGPSxBGGNBFiZoqFQYgMaCVQEoTce4hIBAnTGLQ1RQYFyFS8/xqlaK1hN46MLiGlqgE0LV3bYa1GuMQ09JADs3bGejnjeDkjZkfyEpMjXdvgY6YfHCdna07PntK7wNubKy43Gx4/PeP9fIroBNYNNMmxWlnmVkGGDx+fkqMhxcRs1nJ2eoxLGWUsl7d3xOtbrs7PmULgydMnLBZzhtsbvnn5Ek1gNv8IMVsQcjlIaDxGusKgE6JYG9S0JKEEyQi8qamFMZK1wOeR3gc8otoEKFzSpKyI3pewCSm46rc4Yck5YZRB5CLnNkoiZKlkyhRpu5aTZs4mCy5ublkdH3NyfMzt3R1Xl1eIZoUPE3ebO77c7bjKPW8WK8SPfsTx+hMa3SBiYi4jHz05Ar/hpb/GhUScQjloGwXKoLVB5nEfFAUSJBrTGIypaYvV59O0DcvZDLqJxdGa49MTumaO0obZbME0TRir+eCTT/Ai8wMf2KjX/NWPf8XPfvxTfvHxdzhSa2bLI4TNoBKjGwlWg1XcXJ3z8u0NP/np5zTzU773gz/lv/4ff87Z6UkZ11mxry7siwv7y/6to/bvkEw9PHbtf1b8hhTlX/zM/k8lEP27xhTumcGHV2rRCCBTGNjFuWJf+S59GepPNjnT2mKW3F9cka5esVgo5scrvvvxJ6TTjtmZhYUi390hhp65fMRqvWaxlvicWYothBua5aywjd2WeLch5yuyHBjHASNXtLlDJMVtv+HRUUMWI8NwzeXlOUfXa25ue7b9hF2fsHz0HouP/yt852MwHuFGlGjoR8fPf/FXLF+s6Iwmzz5AcIY5O2ZyPSEMzGdzyOVQPMUdMfU0ypPcDf3da0bl6axh3OzoFitYP4ZgYOMJI1y+vSbYxOPtgNQdouuQNcDIhYDVHV17ClGwudxw+eYN8y5w9vQMOav7HZHJqewplZBIoetJQNQBmN/pxUPLZX1GCTC6WiDsh/G9YuGP/wyJ+q8SLPVQh5tTKgUTinXMf0hc/5AmoaYD7xVxReuzn5kfjuf9a3vT+G9p9b2K5U2q1jORcZzY7bZkcgWB5pg/3MjwX6c9xALFb9+pQytaRlKGq+sNz1++5Pzygmkse/Z22WGFRVL847IUhJQIrhBDrm62TMEzjA43TfjBMwwj26FnmEYSgX4YcM6x9y7Pla1rdQG6rG1ZrdY0xj4IGmyQdobq1thuTTtbInVTlClS0RqN0TD0d5imKHTGcSQGh5KCVgh06xDiOUN/g5aWmZScCMVyDNw8f8NgMrMnj6Ez0ChIgXz1Kfnrn5NefQ3bLUeLJV1ecHS0YOjvuLy9IOQbbi6/YGgumHVPif0OtRtgHKDpAVNiYolkCkAnDkBvx545fOikcqg9rDn3XZcPIZDvdOQee0qJzz/9jK+++orPP/+c29sNQivsfM44Fa+y8v7lh4TMIKqtjijzrfeOpCVKKqSAmO/DHahMSCXVAaALqaj89p50PvpD0bWANRIl92dYVSWn6UC22ZOXiOBTKoSQagcQqt1OlpnZrGO+NCzmDUerJcfrI9bLJZ21lORWcUj5fueZF1S22Lss5t+xZfs9+6P8ewpC8rfe5N3vyvcstQyQSgHhAA6WAnWOgTiO3F1ecHN1wV/+5V/y05/8PT//5ae8vbrm9m5H7zw+Jkbn0LLgPlJKjChPFOmBXdIDq62CVZZSYsFz7sE7gYRqsyT3LLuqGsx733shiidsZcJm7gM3MqKurwKpZekBIfDe/a6beGjfCtDl6EBrttOONPX4yeEHx1JrjvWCR4sZ1mRMo8h6n8IUUVGQU+bF1YYowSBRMtEZg5AJE0Hogkp2rcHPLSEOTCGjTTlMRgkO6PsB1+9QCRqhkBmsKOmxC2OZpKLVil1jGGJkIpVIaSAPI9OuJ4y+HGSyYgqJPnmmnJEWfMq4EJASWitptEYHRYiJQUiivg9AGH2gn3pE7uuNviseZG1L285qqqktVH0hkMFXSRbFGy8phNAYKWlUSf+MKZBjQonEfGZYLHXdr0i2m4mcilzRhYCfHP2u+nYpjbUZNSasjWg9gSzm6ZrM68trjheWWaNp2xalCwMl5kQS5eEoc9Teuy6USUOAlNX80kWMKX5IIYTDIhFDYkqermnR2oBQ+FD8sKQ2iJSZfEAbzW5ymLRPCS3XnRDcbXdFFiJFOWyqorlPMZJkQkpNIKBE8QGI0ZMoAAVR4aMDBEorlNGVVVIAHyVASIObPNs8oBuDMpBiZj5fE5Lk1ctzcrSkUEwelGxRsiXGEvAQnCf7AlBGCVmCspL5oqVrGowSGBkIw0RwDpkKOOtDpA+++sdpFos5WhsWXUsw1WtCFnBycJ5F2xFTSXZazVugMNV0lPSjQ4iSlChryiUp01nLYjnj+vqazfaO5XpdaPKNpukszgW0VfgcON9s+J8//jFfv37F0ckJTQ29EDGBFxjVoAXIDFIoJBKZJK1qGMNIznAXEj5EhAURMn6KiGgIwrJxns12yzSMiKyhgkk2Z/opMI7FK2M2K2BtUcKWTV2IEaUkLvhywBOFkSZlYVfqDCrLkqqKrpOowsWMCJ6829G1De18QcyJq9s7ll1L2zTMZjMmkQn9FikSIo/ARJSaIRYgLvgJEQLJB5ybiGR8TmQf0Uhko9GzDgGMMSCDZIiOzSQZvaCxklYaQorc3G3ovS/50waSn9hdbvjw9ClJtdxkyUZlkgqcrlpCP5F8QPsE/UScJoKTJCKymaGaHhHvECIglKZrZwQXCS6U5FIjCOOEsmusbSB4GtvRDyOtVDQk1q2l0YJ+nNhtb2kay3rZ0DSKbT+WnK/kmKYeLY6QYUIQkW7CCiBmjLZMk+PLL76B21tOZ2vEWcPzV8/5+stXvLwd+MHZKe+v5qwXc4yRmJhY5IzLkbMji1QWKQzBjyhtOT0+pbUvmLUjQcB0O/HqmxecHh+zmi8IWvPF2ws2wvG//9l/4qOTR8w2I3644WQhUFoi1LxItQNkDapr2IQSid7phJCOlCdcAhYrghDYaAjXPQlDFhYpA5PbIU6OuSMwjI7RB3CRLmtsLDJklQNCgifzdnPD568umB0/Rq1mjNkTpwmhIo0VmE5jcsAKmM2OUKHhakz8zZcvGduWH7Utj58+QirB1k+smzNW7Hj+8pLRaG4TJJlxongqGiUxpnjRjTkilMBVyGPWNUgy2irON1fo2YxmPSPkQCYzm83oZgva2RHaCFyTMIuGj39guLi74+mrV3y0ltxebvmfP3nJn/xnw1OlUHjmRwbiAtl41scrFIEf/8Vf8/ato10/4/LP7/jw6XscL1uUbEonVN+rYCDIB7lg7+zEEu/8a0/SrRubmCtAJ4rAJYd7Am3KRREgaoreu2f3BxvK33ua+ofag2ur9PI9212KqkZ4uMn8Xe/9bYe5f2NN7M8++z/2H2YvaROlsg310EFGCkUIZT2TRh4AukR5HlJ0pP6Wz37yV3z+1/+dj1eK756sod/y4vzXmEeG9/7kO8zbNX1ccffygiNxy6KzMDOwPQcHcWpJymKXM5Q1xGvJ9WfPuXn5mm3suEktN/0dItzy+PuKx21L3F2jdo43X9/wN/IcaRSnJ0cc/+l/Rjz6CJojsjEktcN+0mJv3iL/+i9Q7g3uZ3/P/P0ZwkA6XUIzw2RDSqbIenEEMZI06Axpu8VKzXJ1xPZuh/PQPDtDHh2RNzv8dmCXHfrxnOX6CWZePGxSMois636kFFwEmiwVi3XLfPZdYtD0N4kuKdTc3DMUU0kOz+oeIJVVyXDg+Rz+qAXW/b8rGKbFA7aClH/YA1yVD+zDo9S9koKcUUajtEYAMSbGYWAaHUop5vM5Sv0bBXf+hdvvryPUgzj3UlZ5AEnl7yh+qPq6vH8pP5jyHv5ArlLJUKxXrq42/OQnf8f19TUffvghP/zhD9FqxrtMnH9O+81n4F94Ri3WckRRCk8AKpcvIgW8CQmMJgBfv3rF6BPL1TE+Oy52F+z6LX4XuO0dr7cbduNEHDx93+PChM+BIZdCcpdK0JgyBrTk6OiEk6VkPp+zXCxom1K4m7czFvMFRhWmjtWWeduhpcH7WvCWCpciHkOfZbGmGhx+HEjTAMFzc7thnDwow24cIAw8Pm75L//bdwjDxHYrsBzz5V3Av3zOB+ef8WfvW+Qy0PkRbr6E5g6W16AS7H6C332JzoEsQR9lzEkHU2DeZ46eWaICsY7Is4RjQxhu8HcL2qmHaVMWHmPITEQCIQcCOwRz5uITYFU8OAHwpYP2z4mqfUVhjpI9VuqyB0ni8NyOV7e8+uYFn//9Z7x++4a7mw2DL2QN1doibw0ei0To4i8tJBBLWmqMkUAiquInp2Qh/RAhUgIkBAIrdXktl0AAJTVamoNaZ3RT8RNM8b4YUc/nCInRTb32QmQQdeymqjSMvhSrrdJYo8lyIBGKNakSKJE5ni85Ozli3jUIURQlua7Xai+9rRVgkRWFJ3jfcmVn5/1d3m8F7ilhHJKNRQKVD8DUwa0tF0CfGBFas/9ID0negoCsJC2Rc7mOJMka+l3k+ddf8uKbL3n14jmf/uJn/OqzT/n6q6+YxoF+6IsfftoXDvZXXOTGOZX1UO1BMlEHcq5rZr3ITCrquBqYmeugV3tglIqd1HtCSqCrGkyWCkgWgIiln1Lxjd8XMwu4ez9jx3+gAPWtAN3xeoUDtqGYoNvUIrRDRkhjINuI0pqm6WgWliTADSN+N+F8xLQNKSbGcSC5iYFEmHVI5mg5Yxc9kIp8dtahYsS2Ddq2YBTbYSRJhTUNmpKiKlNEVsCn77e4HAuLR4DVkqaZIZoGqyTp9pZg1UF7H6JgM43kqQ4gqYphMQlCQlbWmswSLcAaRZAFnY4ykZKsCTdlrMeciC4zugG5nUoSq2kLq81I5p1CyIzKmpyKOXokkqoppDEGYw1y1pFlJMSJyfVMfof3kflsRQwZ7wsV0ipDkzI+ZkKK7LZDmRzUCEoekHhtFa0WyNQSrGZ0AWuLR5qo3yeMKn56EXIEkUSRAUN9kCRxH/+9H8J7E31BDTzw9dQiyTEdBsYezPMuMvmSTGu0RhuDEAprLW07Y9htKaETES+LTM/vwzf2TKkU7ieKvScdElFlvMREEImp/rwq0DQCwbDzDMOE1hLTFGCsmc/IWdK0S4bxrno6SXKqjDxRBqFSijikkhaZi8eTaRpWiwWPTte0jeHu8ookBakxeBfZbEfGfijyXCm5vr5h6nuklEzBo5RmPp/TzWaYpmWxWBFjZJgKK9HHQKkrC1SG5WxeJES5bphTIMREjE31AiyMH0goJejmHcvlgu12xzh5lNU4Hzi/uOT65pbGtAVQNpbGahqhsFIQDcQoSEkWY9OawGf0PoGVsiBET44eYpn0TFckktPYIymgmw+RlDxJCIxpkEqTvAckxrRYoyjOHA5i8Sork7nEhRLuQaUUJ59AFzD/vjRWpJpCaXTbIqTEpYiMhQEHBWBFStTckmVGyISiBF9EWa4vEtFakrxgyoGQPCEXHw9FRkvFFAM5CqySNEajrUboQguXWhJyZgwZHwKOSMxlUc0kYnSs2haFwOcMsxYxb+nThBknZkqz8yVJSGfopGLUGVwm5pIem4lIlbHGFI9Disza+wmREk0xPqqVpsPOBCslndZI09JmiW1a5K7KpULAecfBW9NoGqOLmXOIpOSQKdEpw3oxIzYWJSRu7Ll6+ZrzFNFLi5gvcMOO59d3xO1EePaE97tTyBrlI50AazTL6s3nfcb5QEaijabTBhUiJkOnLaNz9Lue4CJGClTT8fmrt/QhcfXolrP5GUdPjwjTlt1mS4xFYm7aDmkFyhqUBWEhKU8OCW0VOkui1IQh4HP11pCFJRBcz+XFDVKMfPDBe2XtcJEcAjoLsvdkX2SyPgQSkagVQwxcvn3F8uSMrATJB+bW0rQWZMJqwXzWlPnJF9+4802PfPkaWsNHRyuOO4P3t7Qq8Ox0jVUtGz3n+Z3HieJtGKMr7HEBWYvKUErEXIIfUooIbYgpcXV3SxoGlqtT5jODj5GEwJgWpTtQ4LNj9AmhNO+994y7q3P8buJXKfCLX77gy8+e896TP0NpQaM1Oc4gb7HW8vTZGd/75D3C9Jrz2wu++PTnXL7+P8mffAi2rRO0OITaHfCrb2Gh7RnUUurDXg9gs+t5/eoC13u+895jTk+WRZZRipQPfD737/Rwk/NHOMDlUq3PCFAlgP6dz5F/88D5+9C6f/tt/6nyHnncb8Rr86FYHmjdkFKxM9C6rA+DoxYny2HJkNAxcnvxhi9//jd8+ou/pT9pcWfH6OC4Hq6Q0XC79azNAkbFYrlASsf2m2/Qp2vM0YzLL37J3VZy+uxjTnTLeBc5/+wl4/MrrFPcXPX87OKadmH5/odPsKJhvNvy7OQRLq/4u28ueL35hj/5T9/n2Cy560eU96hOg7cIqwl+i1KSDz58n/e6jrP3vw/vfQKrEyKGIJpSNMpAmgj5lhzv6KyEKSG7Oe28RV9fYoFmdVxMlTcDzE6wq44TL0B0oOdg5qCKyqJEqFVz6lT2YkJY0Cv2oVq6EwjZQBQImZDCo6Sn5AdWS4N3OlHUv9579+5PWSJzQMFF9Yb94xDX6nMi94boibEfcd5Vryt7OKvInLHaojp1H0x2eOb+GNfyv1q7B+L2XX24lQ/msnf7Wb77ff+I36CVpu8n3r65QArLJ9/5Pp988h1Wy+UDqfI/lYr8bb/xX6HlggG9I/jbT4Oh+GUP25HLyyuSkNi2Zbvd8s3bl/z0i58WplPQjElxpw2q6Zg3S5bNCc28Qc8sZtHSGsuahrmdoRcL7KyhmxXrIZEh50TwxUpGpMKWDTHihpGr2y1husFPnqGfmAaH8yPbzRVjjmyjYUgSHyPZBZh6cgi03YLBRaSdM/kJIz0yznDDaT3rahwN26i4dYp0PtC4HR98d8VxWBBe36KNhtUl+XaLe/kl7u4CYyTyZAF6hgiRnBQ6rdFBQx6hNTDviBmG2x1B3tE+neDEgjaQHWxvUK1iGK6JcmA2e4+CmIqSmptTRTDSOw/toY4EaKEOTChSIvtEf33DV59/xRdffMGr12+5ubtjdIFIIuYaCKA0Uiv8MNV9R2Ur7z3jUyzn/5yRISOUfEflJeoZmlTYzQcWXi5MrPswvnvVVwnru7dwEhlM3VApUa5L8MDWKZVzpqQw1wtWVmWcRmIbyaOzJaenHeuFpbGFiVivpJyyDgCdKA95Fu/Ou2WBO9zTYnjG76bUif35J1fsOuGnCS0k1rb1PfeG+JnRR2IOzNrCloRY1UCBHDxuM/GTX77hq5cX/OxnP+GXv/w5L775msvL11zfXNEPG5bzBTF5ciXFSCGQooTXWa1xvvrZ12sWuQJloqbP7xm+IhcAsfadrMGaZRLb2ypV1vFhgaz9nR+Ak8SqGpNl3JIrHpEr6U4cJt1/TAjStwJ0JycnbKZi6h1jLOwYpcg+MAwDoy2smGbZopShbYtsNRjHOHncdsO6MTTLY6wu4Fr0xaD7or+gaZoChJCZfMYnCFPCKmi0plEtxkjQ+cAMK2msvhwwTUTFgHQBQijS1DAiRkcQMJeCrCxhZhHK4IXChsBsiricudnuSBmijQTnCS4WAEIJJJKwf+gFtQolSFocQKoQIMZM8L543gGTHpisRSlJX7X9jTZFmkaRm7amwUjNMHlkkmgK3UBIgepaFvMWJSTZQfKxVERqSlBE4F3Ax8Sgh0KXjhHvR6bRM4oCLg1KEvuWrVE0TYNpmkJ97lratkE3mRAi3idSEuQkK9JcQhlSysRQ/ehSeZiFkEiloaaEBQFyn9JBMcWP+5QbMtd3t3SuxTlP2zY0TXNIf9X6Xe19jLFMHhURTDkf/Or2wN8+XKOAerIuWtWrL2YC6f7/CYFtNMEXDz1CxLmRYRzQ2rJYLLi6uiHkhMiCGDPj5JCqAAkppcIEM8WAWeZqnlznl+hLHMBiPqe15TMKccvoy8HZGItWgpAzvvrOSSlL9HYuz8G6LRLYSKYfIjG4ArAqQdKyVFWQNNbQdg05RlL2B58DY3T107tD9YZhckipmM3mWBvZ7gaEKDJpJRUpF788P04MSrCeL8Co4p9ArXrU+aLIXO9l2yWZthh1ktUhCGMcB4ahpEm1tkEmiqm9teDKuPHeHwJFtDFFwhzLNQmZQVpScnWhooKOEFIkxIhJqlQ69hV5SlrR8fFxuSeuAFY2g0Ie5MM+xgKsPAjKEQ9WFGMMcSqgZIw1HIVcUo8rizRUOXHKEGUgOgdGY5Qt1aiSWY+quI8nY7xBCnlI6/Ip4JLHB4/znrFGu++iIxnLo8ePOJufcOMyX7055+tXr+j7W0JyqEq91kqhdPW/SxElIlLXRSJHRA6VrV3GltKl+iSFoW0MISX6ccBNgSGDr36XrSjm3EpXObUPpFj6vjGWUVAYlkaTY+Di/A1yY1g8PqZpG3ISnG8Hdp99zqvtLd//5EO+u14zkgm5yDw0JbFbCwGyVJ+0iCy6hlYvWSwjm2FkGD1hcqQsaVGsuhV+8Lz45hXxFFZPP8DahkU3ozEWYsaLTMhlY6KkwshyzPCpFB2stgRpICdCKOuGluWZj6pYGEz9gBsGtDTsQ0Fy9dcSsvilxpxRWjKbz2hmHW/eXqNmI48fP2ahF8Qa7tMuZyzWa276qfgjosi7nt2w4+tveoLbkZ495f2TYy6vbtj5ia6b8aQ5wiTLm/EK54vFQIz3kmslJTIX642Yy9wdY0YoRcyCu82OIW7IoqFrlgih0aZFmw6BwnvHFAIuJrpG8v57H5G9ZxwUu2HH51/c8ebVWwYXmSHRogE6pIBufsT3/vT7fO+HP+CrL1/x//4/f4eUS5ociEOs/ifioJBSIpRqKBrQv3Hguz+wHYJ/BFXqDlkKNpsNn//6V7x5/obu//pvnB4vibHE3Cv1/4f07jdbqZa6tCEylbEnykZ4nyK956Pcf1Wz5Sx++63+zbcqGz987hIIlLNCq5aQYJgCSgqsUVxcbvjm5Tm6U7z33imnM4PJHi57vvwff8Ff/vf/mxe3X5At7FZH/NoKLm5e4jZbHk8nPLuU+HDHyQenLP7bJ9i14MWP33D+6SuefXRMN3vGLFkUjyE+YXvb8+UXl4SbO47nHZdOsktrlrNjurZl2jmmW8d6/ZjHRxb5+YaL51ecnVzz5GiJPJlI44CZ1812yoiYaTrLez/6HmfrZ4ij78HjT6BrQSZE4VYgUiAOt7z6+sd8/cVPOZpLOr/jeKY5fbRiOn+BSyOtnohDQ2aBFitol2CPQXYgMzk5Mj1SZVIyRMoaIkWANFXvPgmyIWuDmJtazPIgHNAjxARZl8KOmFEkUvse/F29+u5f/uiPagZR0h/2/6wsElWYDEB+kGKnjUE3zf2Pp1TW1/9o/7wm7nc7Dz2af883P7CGuQfh92y68vrhbet/y1xujOHJkyc1IXLOfF4KNiFktP53MQEe2m+VYiRkFN73XF6f491ESvDm7Rs+/+ILkpScnJ3x7Ph9uvUZaX1MM1szkxaSKP7MMhOUgJiwu4ifAn1KXN8FPv3qVdmDOscw9ozjyDSNRc3mXJE0+oR3JSRO1fUoxYQIA3Nbwu763OCERqqicFI+Q8zEzcAYQaWWkDPKSpQu+4YsEyEFWi0hCDZj5s3VhPeS2ceP6e7O2Aye+GLDyd/+mnbsSW82NCjEHMY8YeaK3eAx2TDTLfhF2cRUaeB8sWYzwfhm4Fq/pL2UjKoj6A43RbLz3N5dsH5vyfqHH0Nbg29UpnoPlX/vmVw5o8ioh4Wk+tcsIDrHxeUlz1++5JvXr9nseobgSDXB2MdIniYQAe8novcHYOUepKsS1f3b50wO8Z0xJlVhKKdUrXsqUJPy/fk650TT3AdhxBiJFXxjD9JRzrPFy6yCeDkdAsP2AZEpFdpDzmWvaK2i7RTHZ4qTR5LVkaQxFdhDAe09Q54HpK539i971l78DeshyKLYIeyxUajpwlXmWbxnJW2jC261J1gEDr4nnVUEIjCRmLi6fsV4d4kfdly9fsWLF9f8j7/8nF99/pavvv6C7fYOH0amaUCKzHJerFuo3vn7+wqx5Bzk+1TqgqlVcO4AuN2Tjvbw+x40K68XUtW3FRliJdD8Zsv1vapV4YOLePf79n7Sv6996/9t2xYHiGEsHnOp0CIjJXAhxsQwTISrK7Z+oO1KNaHO6gAAIABJREFUqmiTFEJkWiVQImEJWAzaKBKG8R2DekHIicFH+tERGDBDoGssc4opn9AKqQRKG3RbQR0y/eUVSFXYWeXkQo4VXEgZMUxIUQ4xWQuEMUgs7VxCEix0UztSMnnPtt+xG3oG7/A5Y1yiJGT6CpAVrzQpipeAUpIsM1E39wbzueiKpymx3QWMURil0ZUyOWtb4mJGJzsaaxFKEClG+yEEkGCtKYBdLmCBMXtfCElO4hAIsZi3+GrQP44joy/SyZSL/93dXaihBUMBfhpL25Y0WFvBUZ9iBdYKWzOkfbpt7aNDEbQkbQqpCyiZ9sEBkZwd+TeePEHxuBunCUh4XxJqtdY1FMPfg3HV205wn1aDEPdafva/K1SgqCYa5jJJJTLJJ0Iuh6Yoai0wCSbvSrJkUsS7SJQlaXSzHXEhEGOZnIJIgCMTCX6EEFk0hXEmjSQrwGTG3cDbaUQJkCmhl4rFzGLsjNELdj6ifCim7V1LjJ5pHAHwITCOIyEU8+UswFqLr5RpKKBRAekS/TgR6zoEqXhhOY9zHAC/PahVSiglzUki0UpC6ssgV7qA4aLc+zBOuMmRusImfIcTIfeJqYLkJ1AapQxGKZIoG2tVU6UKmy4gcwGrYqXzWq0LaKXuq0MxRnzwhSqdIy4GlK6U4/ygipTuQdoYAyFrQs7VFeB+o1mKaJkUAimEUmkSAh9LrrlJEpfKmMrx/lnaT75SgUz3h/16LmOfBJxSKoCId0yjw5OJ1mDCktRYrLVlbqkHjSTA50SKHikESkrGfkfGk1Skn3q2Q19QvEYyxMwmeJw2zOZzTj/8gGfdjNnpMbpVjNOWV1eX+KkkhmZRWJLGquJRUXjTeDfhgsJU1o9UFIA3Ri6vLnHZgDZ18RaFkUskpYzrR5LIjPN5MaLNhU2aEtWYNpDChBGwPFqh3n+CyY7zzQ3nr19zdHrGyXxFt5wx3t3xi+fnXPWezfsf8vHZEcuFQqpY0mX9hBIWKzOIzExLLAktwbQNRhkmE9mKns2mZ3vbc3Qy52S14qhbkaXmZrPj7vYOQsL1A8l7eivZRhh9wyo2qFTugQDc5DFYVGuQorDqUiigm1GadrmktQvaRqCkYBp7/BSRQhC8w4riF1NLB2hlsO2M+WpNu3XEVMaLnXUEUUAyv9uSMUilODpasLaC4fqau0vHMO14c37OEQI5Oa6H4kU4W1q0miGGwDQNuKhIuSERDgWiJIpcMGeIBxZ1qfqVQ6zEOc92N3C0ThjbYZuOLCTD6PDJk9qycQ8+Me8aPvrwI77++pLlTHB6pBj6gf76ltXxiqQk3iWSLWCnB558+JR2NeP87WvWs2d89/0nNE0LQpUaa/UclkRECoAqc9c7+5d7TtbDxHFiIsuyqZ23DWcnx9xdXP9/7L1Xky3Zeab3LJdum3LHn7boJhqOGHAkUiExdDHUXEm/Q/9OEbodhRQxFxLJITicIYeEgG60OaaPqVNu+zTL6WKt3FV10CCBAUYUKGbH6TLbVO7MlSu/9X6vYW+4nIvJsSgVubP7X2QTCY7SyuTCLuREPkdyfFGpoZS9TW5VgfGfCCb3C1suakXqvEfinl1NgHbbM1hLCIJnT1/y5uKSO+/e5c5ox7NasP3Zpyw//Rvsm+dsL55xans2Aeo7Nc+en1LawPHDOxweTinbDX3bcnV+yezeh9z94AcMT14TzF2OP/oR26XHt0l/HPodQoONnrOrJXY44GR6Dy0KXry+xBnHsTSUpSYExb0797iwr3jy2VcUAu6fvI98dYH3NZPH70EYEiN92mDjIeL4Mci7YBqCCgThEzgXU9dcKk/lOtT6im65QwpPmE+xvmf56gWvz1/xldI8eu9jHnzrB/j1inDpMM0A1QxrNK2z6LqhKQyRpLhAg8g2BM7tMkjsEE6DmaYDqwLEHtilZFmhECJreihJJf7oBBl/za+/8ZBJC/Fc2wgpqSaTX/50OS64fxVA6Z+3cbueUf/zt5tBazeP/Tf1QnJ5nhumgqKQnJwc3HhNlpjJfyIz4S8FsMXew3m1SV7qXddiO8fi8oqu63j4nfc5vnufk8kJNhYsfGR5dkW/6hh6z2AH1m3LxnbgoOwCw25guevY2g7daBAR75MqyQebmXQDQ2/R2qTgLyFTLUDyQ0seWhqVA6+iVEhVIqVCSTCSZHMTJa4PCKmRApSOICW9dXR9T+s6mrrGS9iGyFIozHrg6fMdn7/4KT95/ZT11RXvNxX/4t17fHS/4tGjAnSgxNKHLQ6PEAW9N0iSDVS0gdVyTfvmkq9O3/Dk7JKtKuiLKVtZEooZUpYUTjDEHf/ij3/I8eEn1PdyTVQJnIxomZhmajxHqUjI5yfensqs42q54PT8jMVmlRQVShCkyOvXFFiXauHkl54sfm83BYWUNwLvvrkGEZnBHHNAC1xfYyN4A+xDAsbHUrLq+Flu/M3xvhsTAWRP3CJmsDD7dwuB0KPntKE0BXVRUxcNSpVASQwmkRBuLfx+2aZIkCeE0R04v1DFmOs7ud/Hm9dISoq2BLdLvqjagE6fwzvHtt2w2m1Z7xY8f/oln336E55/8QXnr17w6ulTXr68pAtzLtc9buhppg1KJ4DSuoEUopF834mGIALeZasuF/CKFN6Qmw/7td/oxx/jDYDu+hyNn+Xm11vbSMeTI9gn9gpGoZJveQy3D60Qv9hYHvfn79v+XoBOKYMxPiVQdn0GEQRaF5RVTdU0EHvatmXRrpOcUykaUWCUpqwUwQWs1xRNgykqpCmRKg1MVZhkxC4NsvKI3Y51t6P3kbDp8NZREhBGI0uFrktMXSZjdAEUCqU1E13RKIOMgtBbfD/A4IhKgxR0MrKLqRvgQoQgkV5wUlc0pqbUJTZ4rpqai+2aRb9jCI56iNhhoG09/ZBYY0ImaZhAErQghiQKGDMqR4DL+ggUhAiDjXSxQxKxrsdFS++6lAxZaoqiQKjMJLPgbEyTaASjJErqtDDzNsswBUamFNkgBWWh0KqkDjKnqyaaZb/zyU/SB5zroevZbnYp+dNo6romytsDZ59eExIKHUaKZx58SoApk9y47bp8XAaE1mhtUDIbRfuAMUnz7nzy2nMBtPaImLsNMjGjRnDz5kUSsvRZ3CjY4mjkH0QGjF1aMERy4IDMKPq4vwlEVUJTVBpt9HUgR98SQto3QvI2k9nXQAqN1JKmqZPZfHQoqbKseINSgmlZJ+DNR0BSFnVaxBcGRWIADkPyilLKUNUKlZlkvR0QThCurqiqKoGOzqbeVwyIkFDDqiqS14GzbLcJJPfe4pQmRJ8ZqIaD+SFFVbJYrhJDqusZvGM2m9G2LX1v6bqAlsWeeq2Evp6ARAZAExf71jFPNXYC2wCSLUw69koJqrpkNm8YetiuN7huoCwkvfPIyRFSJPZrMhJOQJ1QoLUh5naKEOlcj5NnuiGyl/P5OHZIkldAiOkm6rzbV4vJyyb5drkYiN4l+rJQ17RnoUAqZJaxR1z2QczJPiTwI3qfQOrgcUPL0HUM3hGMphSRYdrg+i6FoyiFEGWarG1iKEmhMKbI6u9kLhtViloPSGyyDcGi2NmI3e04sD3NyRHvvHufZmI4PJry1z/9KW/OLlCdT8nAOknYhYIYHRFB13e0+cQoYzL4KHB+4PJqwWrnQJoULFAY5GxCrUtKJWn7gdD3dF3PbtsxKUZAQuQuXWKTGSmYFAZ5eIhwA1HDm+UV68WSfmt5MD/h+N47uN2Gn7085eLKsvz4Az5+Z8bxzKBNgZTp+g7eUmjFybxhuV7SBYePgqqqqY7mOCe4vFiwXq9w3Y5GVUwnM16eXvDZ13/GF69eM5QajcRpgRMRK0hBM0JSiNTMCNLQ9x3GCApZYpRHiI4QBiJJWlBXNQczw6RKXqi7dmDZrhmcxPkBhGTTtZTKEKREGJ06g1JjypqymbDetuyWS+aTGlVUrLctl7tdCgEqNbODklpFtIxcLSLB2UQ4FhpT1FAoJtM50jRot8S6Dmsl1pbEOMtdV7JPZU6XylKCEBMDEKEp6wlyiGw3PavFFucFQum9r6LQmmY6odAe32/ZrHdMmsQkHoZThiwxXlxccfToAWZisN2WzfkrtnbFEFIAjAuO+azmuNZsLl4SvWRy9x3M4WHyzdn3U1Pk/Nv1n3j7//nWo7REJUEAdw4PmP7+93lw8oCjg+Q1WGRiTch2FmOz5rfrU3WjUEPhRI2nzoV2YoFGkRK9R2+v/cui/BWK3d/BLcIo3dizBqPOi4MAIs3Fl+dX/NW//785O19xcDCnmBasBvi//u5Lnv31v+O/fXjAHz04gGLJbvWCibX8wcMPOHn4MX7a0L7Yst2+pL26ZNcETu4d4MSM9ZeWLSsmd454/MEDrDrGqxOqu5rYXzAML5DVGx68X3PaF1w9veJOcZ8mwnK1ppsptqrgwExYtpKL3RVbu2bTXbLtLA8X73J11mH9Dn3UQdwADmEEjpw8Hw3BFxShxAuBAzSp+YwYCP2ak6rk6JOPWJ0/o91uaXc9tDu0VVw9XbDY9DT6MXdOOmJ1TiclV6tTQndAOXlIkEeoOIXQjATFzF0yhLDG2RVRR4zUSSUgBog6Pe4GvOsIoseYbKguBmAKHHA9rn+dr78NcOWaeZAsFfJ7jgBQCDBKfr5pIfRfnCn7/8/t12Ugv33aMh6wP22poZfqxj1jbr9Y/x2fFMUv/pgkfvnTOcdut+PLJ19xdnWZGqd5XmwmNfcfPcZMplxcbHny9RNebns2W4vfOkRMoNqm72h9oBSaWTAQFENMTbndm0uE9Cm1M4RUTwqB8h4TkldyIX2yb/Ee7we8EIl9S6Qsa7wUCD3ByZTQrmLABIU0kco0uOWWPkq8B28kPigGB7vB0uNZ2R2xusu9Dx/xsPp9wtOn7M4WnF5e0ZWKi5XnMGqcnOG1od+1VHGLEANVWVHpGkLFsIW+h87Dernlzek51va8uTxlvV6x9LDVNa1qWHmNFwajDM1JDaKinp9AOUFKcKOSaTwn17jRL57AkFhvi8sFT58854snT7m4vKIPgTYEWufwMSQfTpksbdKi7DYrLr3djfWyEGh/Hd5wUxF2LX0c2VoZgOMGAC7Aun7/1iGErGAb58zc+EwGQslCL46NdIgIrHcJRJRp32UmAhlTUJgaI08o5H2MvIeIxyAmaXh+0zgXI8VtIMUplAyUeEFqyOU7kkRktMMjos11WwKrtEigUlqd7BBcIYod6Y5ZEKXk7PUln37+jC+++po//4u/5uJqxfnZgu16i9t2uNYSOojxiAFLVWpUaXKYYUjWSzKnHvtMTNAZeJMphEoJndacHlDcAuPGNe9eSpwL0ZvnepQfj0fqprw98yHT6+X1uR/lqyNDb39IbyN1t/h4QvwGAB2QTrjRGaxJ7IOiSKDSZJJikAsMyvfJuD+ItCiWEj8MSBVASKKzRF+AlBhjQCaWjVAaWZRU2tDMZlSbLav1Ft+2WcIIQzvQtxa/BFHI5J8mYmKDAah0oAsUUUWCDAQRqA8PQUZ2REK/Y+gTSyv6mK7swSNi2tdKSmZNSSygiFUCBYZA3w5sNpskDXTXVEpPxIfkueV89jYSEq0SjVLrEofMMtFkZClEyItfjw+OzWqRPW5UBig02iQpamESwCRFAgVH3yHvPVoZpEkphILUPdCZZRdjyCBdpJKKEASDTekuPniij3R+gG7AuXCNKL+FJAtElmumz6yUQgpNIDKMvjPKYH3Ah+SZllB+iCGFURSF2XcYbk5gSl37jMQY8c7ic1KsHD3/gicqSXSBnCyQGAt5svMh75NMOIzWksLo1DnIF2uhDUVlKIoUnlA1JWVT43xAmZJd+4YwJKhbCJUCL/AIFIWMHM6nDLsd276jazt2tsW5gaqqiEWFUop+sCwWK4rSEoXMnQaJJ7DeblBCorXcp/SMLDGl1A0WYdgz6Jy1eeLxKFMg9sdKowqNlDXBeYbe4mwCUbUyKXRis6PvOqKPaCGpiiLLh7OvgUymoLrUKJkkJVJnYNl5nLU5VhxUCFmGnMdDTOBcjGlshWAxSlAVaZG/29ZpXDtHUApnB+j6xJrLXazrG1My+vc+Xw8yg4ZK5XjwRC8OIXVEvE+yaKFS+nBi5DliGP3ZNBqBCB6v0o3Rh4DRBcaURJcpzzp5/GgCISoQLvs2qn0nK/nvJWm1VgJdlVRK4voOFQLBO7brFefBcf/e/T2jUGoNUu1ZTvPplNVkTfCOwdmUAKsLLjctW+8oJxPKoxOGNqBckkspIdBGMq0LTg5mfPjBe5iiZHe+xJDSfxAxBakER1QS7x2eLL8PESHCdQpUFGxbSztsMYWmbmqklEyrhrJqMHMYVgucCwnInVQYncBMIWQCPYsk1fbW4VwCXx+cHDGZNZwvViyudjxdtiwPe5qDA6bH99luO/7jp0949Ro+fHzAx+8+Zt5MaIoCby0xBJqq5GhSsxksrU0egfOyQDcVDYa1KRn6LRNVEUKgHTpen77hcr2lOjrEHMwo5xXS6MQiMXn8oEBpNAXRRhQaSbpGtClyeERO2Q6B0AeiVByeHFMVnjdnV/RDDznevm1bbCVJdE9N70JKJxcpRdb5yOXFJZu1pqknye9NOjbtjt6W1M2cqippKkNUgdXlFbooaaYz2m3AxoBSKcinLHcYI1ExpuuMkP9OAiCTz0iOcFcJbA5REoVGFzVKOza7geV6R9sNuOBz06CgqmvUfILTgW4dWC0vaTc7XN/hbIfRknt3jpnPpigpcYPj9OUpP/7T/51Ywfvf/oAj59i2Sy4unvN//vv/jW5VcnTnI773R/89f/gn/4rH7z9GGwFBIUJqosWRvHNzi7BfvI8dyxugXRSCpjJ864MHCTT35ELorbf5rbNs9jliSY3hsiJDZR6SSOnEqUd2XWhde/4Kbldfv+Xd+8fcbnyW1JGGwSaG/OnrC/7iz/+af/tv/4zlsuXh40dUsxr15ed0dEzthleq54ne8OB77/Ov5v8Tp1+94utXb3CLNdob7uk72DowixYRDHc//D3qwwdENUGLltiuaO4d4w7uEwqNmc9SDbnqOVZ3qWdJxq3MjHfv/5DLVclPnj/HlZG1t7xabalNoJcdoXDcf+8uR0fv8N2Pf0TdHFMf3mf+8BEIDyoQdhuGywuG5Q55FJCNAV0gkSgKZASBo12+5vVP/xplN7z73jFHuqXaTFivLOdfP6F9+RLlNB+88x6zyQnPn59SnRxy/N5jotSEoqGezlDmBFlM9gc69cEiIUq8V8QoIPTE2BKcRdKCqUAYgttg3TYz1hvAJAAhquwt948wECN7qRa5+UWM+3vrtYzoBjiXuqsAt9h0/7z9atsvTLOZrfNN7I1vfL24ZpqMjJ5d12G0QWt163S8/XbpfI5/9+YC9D/30/x/ZPvG/b8Gsr3WvDm74Mmz5+x2O8qywAhFqZOJ/2bXooLi9NUZn3/5jDedw0WFHhSlKpI3ekxo/OAdq+2AHwKirGgaQ6ErBD1SGWQmLLiYEBalNKYskqJI5PuTTAqrppkwq0qk2+Gjp6XEqiI1F6Wn9CmUom8tu8HjLPQuqVKEUmkd6gZKpfGuZ34y40ff+Tbfnv2Q1d/9DebJGcv1lv/lx39B2605cwOnyxl3jmccTyPCVCA0rHuoZ4SV4/zlhrOV53Kx4+XrN2xWC5yPzE8Ujx494EBo3ljBkgLvDdQTfIDDR8c0JycpLVMlRv+QcBnMeDq+qRTInj0xwrBc8fLrFzx59pTXZ2/YDRapFYN39D4BdDIXKzLbiYxrUbiuNa7H9ThnwSikHK8buAbpjBklrCPp4TY6du3DexuoGX3gQrxWlY3Yw2jzs//YIqljRAbqjFGYsqAsGqaTE2b1PSpzgBQ1Y1rMrRJlRJJE8n97W5mQ/o64MepT0AQE9oFde+gqEXRcVhP1u1PevPyc89NLri43vDld8vLVOV89e8OzF29Ybz1Xyy277YCMEuUkoffICEZLum6HqlIAS9fv8N4mxY1RN473DWxBmj2xJJ3L6znt5nG+yWq8BlFv/i6dK7GPOrs+/zdrRPbMxyRBTIEa1/fc6+Mm8jm72aKGGL5p4F5vfy9ANzibfb+uJ3qEwDuf6LbeYwpJUzUUqk5JJREmuqIyGhEtg23ZbTtOz87x7ox6OuHk5ISDg8MUH20t3nlMWScKvFIMWjBoSa0bVAgIZ+k7mySgIRJ60qSzWNMWBX29w1YNk6Kikjp5uVU6GcSXklIqGgWoIYECXiG9wO06yMabXoCXKQG0LjRRCspaMZQ9k1KnhBAXMsMshRn0g6cdevouxfqGaxJouhC9SEBgSIy3spBM6oKilCgVKeYTBpdZVW2HiyBkkhRqKTg4nFBolRl0Wc4k8uUiQ1qsRX/N4s0XXshgSPJ7A6kFZXWdHOP2BpVcA3o2a7Czt5gQCucdISZ54GCzeWOMBB+Td5tUKGWIMaB08jcYh2ShFOIGQ0lrvQcDVV7RjFJday3WDkTv9yCW84lZ48OAysBmoTRaFzgRUspLBvR0lgFXozzUyP2FqJTM3nHZnL6pcc6zXu8wRjP0CbC9WTAKIloEqrJgWirK3nC5uqS3MYE8AnbtlmkzTXHXziG0R5oUYOCjpes6orV4IRAqewoKCVJRmhQWEUKSvI7+bCJC55OYSkgJNoGBRVEggEk1YTqd4pxjtVoRnKfd9dj+AqkVXdfjrMsMSUPX9ymVSGRzeevwOKI0qNJQFgVFoVDE7JeWgOco0jiQZIaj9zhH+owi1fxJcpl81rSCg8mU6XTK2mbGrVR0eGJMwKMUcg/Mjk7ySpk0oYVrY1QpJSJACBbnHdZJtHcpITCDeDKDd13XoaoKLUXyYRx6hE981kTwKLE+ZqA/T4xSopUGGQnW443CFMXeCyAEnwRBUlIWkqauUBH6NpnqzuqKpiwhBNarBUPfIk1BPZuiy5K6qkBKppMJWmmEHL2pFN5H2j4xIgvtKGykj5KZKihNgxYKP2wZ2h193zKdTpnPt8Rth8k+jz44VAAyCwwRkDJZAARvE1hjNFVVUtUNWjt8N+B6x+C3GcQThNmUmUpAXPDjukghVYqRT/ctSRRpHBglU/COEkzqgnpSYbSm0iWnrxc8/foZk9URDx8+pmxmXJ29ZrW6YLW5YrXpeffBPd6/f49KSqTwaEDFgHYOZR1hsLRBoFSFbwOlc0yrOh0TBIfHx7wbFb2LtNZy/vIlR/IudSXofUxNiEHhhMqm5ykBKzpB3w04n6SRSmusy93o3FkNNu3PtKqY1jWDk7S9T+yzEFMYSD8kNvZgE1AWBVFIZgdz2vWSxfIK5wWHJ3OqxuAvzvEhpSnXuqAoC4aY0tV0UWI9WB8YQgJwTUxyaaUlOgSkyny5mOSEInfFU/szyQ6QaXwJqZAy+8vomBoFQqZIeRUpqwKlFX3fEaOgLEqKwvD109d8/sWnDNbyne/8kO9//7scHc2RmRWhVMPp6ZZld8Xs6IhPvv2A+u6U6VzQDle8fhN49mKg45D3Pvo+9x/cRyvFjWgvRh7QuN3GrsZCJjVfQggEHzI7Q+UOaAIm91ljGfBL1+vfX9zcalzeeuSGUf4NUO7mI4EEzA09bJagpGA+gVKDyPIFNc6Ft97/ZgH+jwSO/Fa2kQkCqbDIpaIAcKmgD4LNIvD5Z6/46sunbDdLunbD2angHg+5e6CZFxseHdX03YanG8uj/+Z7TN75gGX4G17+9DPs6685ufsOJ+Uh8zvvoIctw1Lz2acrTr4jeP+Pv5Xmqxct4dChH08IDoKwCQyfv48sZzSzcx5UNQcfrzmafki8LKm059mLr9l0O3q348G85t5797jTvIM+PGE+e8Sd2XsEX+KrGqHKZAuhLMvla85ev+IgZpPx0oHwiFijhEkybr/Dbs7YXr6hEhDFEerD95iWE6ZDgf9Txeuf/5yHjx/z3ne/jzw4YbmzFJN7lNPfo2wOQddQzEBXpGslNU1j1rZLNIYpRltEWBKGBV27YnCvmBwU6d4Xd6ACyhwh5ATCHPwRSeLK25fgrzcEfpMtJvmVygtdly0+AMqyvF6UjnrJG8yU/fa7evn8v7H9Q+fnLfAA2C/0k0Rf7Ouem+Dc+LNzjs1mTVmW1HWdanhxHQQEyaP62pt5ZBBdy2X/SchcxfVMLsdf5CZTCIGLy0sWyyU2BJQwmTXjkt2J0piqQpkCpQ1FoZBO4oNN9UH20tZK0ZQljZZ4G/C6oKh0BuhTyF5V1wQR6Z1Fak3TNExnU9bbLUOuK2Q+n7qsMJVE7AKu7Ri8BxlpqopZU1BFT7ADr7sztFEUWuFxCCyD8zjvkCFy4JP6oWkEziw5+fCEB7O78K7Am4b59yd88fw1Yhd4MK05KHtk2QEbWGzg5YZg4OXLDT97seSsEzy/uGLRBo7vSOZ3DXc+fMDHP/gOrSl4rOZw9JCdmiOnc6IRzO42vPvtB4jjSVqfyDGfGAQhJereLCzG+SMAnSd2La9enfL8+QvOzy/pvCdIGIJj5y1OxuRDTtzjHcYkz/ioZWa2JQXXCI2pPBJG8CzdDsU1qBfyuiNLIdNzYwZkbgB63qe1nhwBNpH9eMcmsrxl+3MNKKXXyDg2M9i/r1LJd76ZVBzODpk0NVIrBANRCIRQyXog3p5qE6A5Bn6lf8W+jIsg0j6FDOLJsR8ZBdbDettzvtry5nLJ2XLFsL3iL/+P/5VXT37OyxcvWF2t2K77lHKrNH1woJMyzcckV44yIksPIeKjoWqqrMwAIUucy2tIkm+8GQPK8m7GG6q86ANaqltz2v6j5uek94q3fn/d+I3Xc128cVhEPq8xNY658ZQY495ub79T5CZUJjD9UkD5G7a/F6Dr+54uSwKdT/RLvKfrLGtnWU9KmomhMMW+CBBCZIplSVk2zNQBh8ee5XLJYrkk5MVO2Vt0UbLrVmx2O5QK0CEfAAAgAElEQVRaU2TGjwwDCoc2E7RSiGDBKJoQ0CaxvUJ0RJdihyUCP1g2g2PH2NEOzOZTSlmgCk0jQYsEWIkoEUGgD+ZYm5I+u27LpusYCHgBQsHs4ARZ6sRIKU1u8AW6wWGtp9OW2ih2eqAfBgbvGZyj9xY/QKQmhoQtKymptEIrgYoRXAovEEClDM20JAqNj+BsAs2urpYgI1LqzJRK3leFTl0EP3Yjo993sIQQeUKBEEd0XqWQDZ0ANB8hRI+zHuct/WCT35dLVOlgDEqbZKIfrkMcRhVqFAlwGYYMmiJv3eCVSgt629v9zzcZZGMqzAiIpUnxetyNTDypFMJd00e11mgt82d0dF3yCBBGIj34DAB6ny6UqqqSVFYLkjg2ewaJmJPnDEolBmT6YBKy25CPnuAsB4cz5oczdCkptxVCSay1rFarbAya2FNaa5QxDD5gbc9ut6HQaWIZJ1gpJVVV0TQVJycnbLdrYoxYa7OXUUypwkLmDkgFSmaZao/rB+q6pmmatLsehFgxDAOSZIivRDrGtu+ZzmfYMoF4u90upSmHyLSZonSNLgtMocAnz8Jk4SdSx1tJiIl9Z4NDKI+SLrNDk8xJG7X3KyzKgrLUrLI0UooRCCjwLslxq6oEZRI7ZUwIjkkeMR6jlJBkiUNqBDjl8N7tu+57kC96tJSURUFlNKEfIHiUERiVEhh3g6fve2QvUlhECCghcjgFeG3xWqc5RlwnKaXrNS3MCq0olUbnsIM7B3MOpylN7+XLl6zjClWUHMbIZC4QRqdgBxL9uihrJvWM6CXOgjYNKM3OwatXpziruFvd4d69Adk7cBFjSuazOaurxVvS7yTvRkiM0pm9l/wmlJD4wRKlTwBdWaGLXWLBKU2IgX7wOLdOycfbHeLgAAaHLlKohClMkjJHgfORPgTckJiK07qhPDpgIy27zYrBDclH7uSQupjw/OUb3pyfs10tuX/3AXfu30XFKZvdJT/58mvOzhcEF3h054TjaZP+npJMKpPSllxEBodwLUYoTF3Q1DVOSy69Z7m4ZLFYUpY1J7MDprMJ22FgvVohtWCzrdkJqINJbEoFBskwBHrf0fZJniiUQubmhJaSSVlQSI8bBqQRTOoGJwy78wUheJyI9MPAcr2i6w27XZu6hEjqesJ0dsCiqjBtAsHavqftI3Vdp664HbBCUpUlR8fHuH6gEAW7rkXpAiMTmzySu6U36POjpykkYD8leyW/uRhJ4JzWCO9AKKTW1JVmMp1T1Q1SiTSlKUFvOy7WG2RjOD6YMplOCd7yxeef0nZ3+O53PuL+gxP6fod0E8r5lHW/48WbUz777DOuLq84mhV8/NEJ3/rwu3z0P3+fq3PJX/3lU1wsCMOS2K8Q5RRkBRSA+uZaRLz1TUzF73h9py1JRrMq/cbTBd47hHhb3vqbLwRHWHH8/osnZ/zV337By5evmE0afvj97/DJ7z3iYGr2n+sWOPdPYC16axv1GXEMwhgL2ATgl4Vkt1nw5vUpJyd3+eCDD/n88y949/G7/Os/+dco1fKXf/5v+OzTL9DBsfu9h5xt/h3Pf/Izds9fU/lAU9b0ww6jCyYHd7j/6C6PPvyAeKjZVqdstq+YKEffLxF+RfSXWKco5ATaAmKB0HOYao6Oj2jWFyzeOLZScvTwEdvQU+wk98yEkwPD/ccnqINDWlGwXq+YzHZMZg3d5SWr5wPT+1Ncv2FxccZ2seZkfi8FGZkO7BZsRTAlUVqk32Fiz8l8gut7Li+WHM3uoAqD81DPj/j4B/+Sk4MZzck9OLpHdf89MEeIOIH6kGw0R2J6+BT4g0JInQaXBFFooCIOLb6DvnMs12uibKijJoiA0up6oRYTuyF3Kv4xRk7aRFKTjE0+m9UBSqVG0C9Qsn4ZSPfP229luwnOpbr9tkn52yw7KSV1XVOWBUWhb7zP+Hz21iephvM37FD+CZy/tz6ChOSXPNatznPx6pSzywu2XUsQQOhRA4jgEc6zW20JsqLfZQ9uYTBlgQyaQmqkEqy7HUFFDqcz7lUzohdsbEqdn87uMwyWoiiopxNCCKzbHdoYpvMDELBzAa090/mMsm7215nUEKVk8Ja2DxhlMHXB/GjOXApc37FcrUBr5rph0+3wbkNZJ99tNUhkiMzKgmG34j/++Mcc7w74oOqpdkuqk/t863/4PT7UfwDmCK6W8Onf0r16wmLdYRcrhq+vMK7jZ88veHIZaU3Bpg8cHBn+5R/9Pu++f4AsPLM7NfPJET/47h8ifvTHoObpBFSA7BCiJ4rkd+6jIQCFBIVL4U03z1lGVaKAaHtWyxVnZ2ecvnnDarvBRU/vHZuhSw3XEChMIkFE5wkiAaZaa4aRABOztcgNoOymb/Zo1j6uT7SUNwIf2L8mZrue8Vqz1iblh7heu+8lsgFUNFnSGjOAdt3UGIMM9qBQjAQZkVok/7mypCw0RkuE8CTpagShEzPs1mUqGFNcx8LmOjgiP5wbqWp8Qoy02w27XcvpmyVPnr3ipz//ip/8/As+e/KM9cUbTL+iX17gbcSoEq10JnULAgOt69GFRquIt8kDfrTw6WyHlILeZpJHJmgIkbLIR/B/PMZitCq6cRzftinee/1lZuII9sFta6f9B3+7gBX7R/b7dFN9GEUC7SQyoRw+XB/n/a1N/ELj5Jdt/6DENe1s8jbrh55KSMqqIfqUWldWMgF4NiB1Mo9vfYsSyWOuMBVFpZjKEicK2nZLjIreDqig0DpJuvphoFtfpbCA6BFCso0JKUsJhhqZL4RKGup6kgA6ERObre/x0eNipHc93dBz2i0oSsOsmjIpKwpZUUiVvJiUobMWVVeUTUG3CVSDpCIQvKfte9zQoZRGaIn1SVVtCoNRml72VIWmt5rDgxnOe7ZdT28HVpsd55drjFJYBzF4jEjBM0akz1vXiYXj3EDXDXR5IWy0gUJiCfRRY12PDzGbVvZsdi1FBurKskQKQSQDXy5dOFIkgCUGEuotIjbYdI5kMk7UOkkIFAJtDKaQdO2A8wPeJvZSDMlH6Ca7LGQvpBiu5bHOx7du+JFhGCAmLtNgHc6HW3HVAIPLwJ8brmmpI+OuqOiGHlSSRN8MG/DOpc6JSPJWlUra/XhNoIagGwZCdNAHTKHwhDROAhnEGii0odY5dcpahAxIAj7a5LcWAwJBU5VpsZiljEdHRxTSYLThzekFr16+xNQ1ViS6+TvvvYuwnnab5NHRO+q6pm5qlNFsNhtCSB4RY7pt27YsFgustZiYO5UxIEJKCdpsNrx+/ZrJZJbAvqLk4OAAbxOIHkySbA7DkOS1Eoqi3AdzdF2PypLqcaJSShNDYPCBKEzyrYpgfSRYBz4gtUm+D87hokOZiuglwXuKQiOVomsdUhomkxmF1vgYONt0xOhxbmAYOoqiQirDtmszs4y9sanWGqMUfkjpVEeHB8hsvLn/J1Qy5yZ75nnP0PeoGPIN7pptVJZVSj8Guq5HakPTTHEoQhwYrMVkvzudJdDKJKBKmuT1lcJMJLUpKLUhDENKKU6oIo8e3AMpsT6w63a0XYsqDF4qClNQNRN27ZA80IJCiwKpS2znCUrTTBrOLzYslhvO3lxRzuY0dcNAT2/ttbRRXE/mKUUqYqOjJ1IcTKmqCu0DQki6mKTKUinqasJkEnHSsFgvgMSqbfuek4M50/kBjTygXy/wPtB3PaopElAhwUeJFwohNK63+BBoJg0qOpSSLFdbNt2AnpfU5TvMm4qzN+dsrk5x/YrDk0NUMSdQcLrq+MkXX9MPntknH2FDklLURnOnmbC4WtJtOgpV0W+2IAx37h4T64roOsqFhmBxXaQXoCcNIgxsrrYII9lOJ7SmYNAS10MzqZBCUdeGro8QQCrNdD5Ddh19u8JZS3CC2eGEUquUIBgj2+02Mc7aASHi3p+tro4JPrDbtUip6PuBxdWSdtcnGa02NHXNzifJft8LLi4uiM2U8uQuzWTKw0ePcWeXLFZLdFMxPT6grCuiTIEU7dDjQupwFlWJ0YIwdOma9SExgXViPgqhcDbQdQPGlEymirDp8+/TOVI6slpeoGTB1fKKxas1+pOPOK4MR8czjo9n3Csf8ejRXepG03eB7WaBrATR7JjeUZRfaV5+ccGf/pufcvbJOzQTwe//17/P4f3I589e0tQVD+95wvYlVj3AlDOQJrW5x3ldJF9DshxhbEokQE6Qn3y9Lo+wFyrcrGEEN0C823y8b1oUhl949GbFdp0MPnaxx2cEwIkd9bznviooDVAsGZjjmec0sJu1W6rAxDfsw+/uNh7nsbhPbOD0H7gYOTia8od/9AN2G8v9k4c8vPsB0+mE9WKB3fT80bf/RyafWM5f/5yz7Wv+w0/+E+3iBUfKMYTIxfmSrX3B3UeH+KZj8uhbmA9Kph/c4VgdsPr6c85fPmNeFxR3BqRYo5UAOYAVcBHg6B5iMqG/bHF2QiVrDuuS8vERH310wqODwOlPfszZi+cI7jOtDzm8c587wROspZha5NWa06dn9LzH4YOa7nLH5ZsF5nQNtuP+H/wI5gIxOUSrCMKDjpSV5u7dI2Q9wQFOzZBqijI9qpkzFHN6M2fS3IFiDrFKX0MNQYMu8sD0kJUBImbPPwEIR/ArhvY1tl2iiRwev8PxvW8nINwY0J7o1/TbM7brJwzdpwydpGze4cH7f0AM1V5++OtteXE5Sh5zs0hm+ek+bfCmtpH0/NFPSSq1XyyNSgql1Dens/4zKPerbTcWjON5kZBsD0ZZMYDIYJJg7708DAPAvvFX1/Uv/TNSSmazSX6rsb6+eZpExlUTi26cl28vOn9TGuY/5pZZxPst86ZSN40weC4urji7vKB1PV3fM2umFCotz4NzaGnodwPBOe4dneDrCVIWqD7Qb3fcv3eHq+2CPlruHB5xr57je0cXPdV0TlVOePbsa1yIHM1qfAhstlcMbYtvCtbrNRfnZ5SThnce36Osa87Pt/jgqWZTiCVXS0dZlUznU5wfuLq6IBoF3jKZVLjYsbYtQnis7UAIBtsjZWKFGaPwV0sO7AbxdImdbtn5BUfNimZnEe98Gw6PoeuIoUU2Bt3cwUaNWDYMG0VceOzmik0/ECMc1JKDwnOvkYgSlldvmE6nyEd3EVqAC1BPgB2Ejqg9Ijpk7DAUCKEROGR0eB/RsYIx7GHfNYt4F/niq6f89NOfc75YsLMOS2AIARdiSuFUCk9M60ijiT6w2+4SEaUsM/NNIEWatxLzbWT7JwLMzbCBRD4R2Xta7K2prn3Q0vi5DsNLIYF7u6k4su9gGByjF1oUZB/igELdamgGEbNyzjFaUtVVyeHhLN0vCblxM7K5IqAI2VlubLzJkHy7EWPTON39ExFQEqNkvd7wxac/4elXn/H62TOWF+e8/Po1X3/9ivOLS9Y7y0AKKup9CzExEL1PwCUk6y0hFIoiKXg8iKjI5MMkcZWjYu1GmN++4bSHyPZzUIzsG73jmlLcIH/cZCG+bY/ydojEiHtdy4ozyWYM4hAQpRgVw/t74f79MwQnxa3u8ltsvt8wJMI5l/5IZghZ4VEKCl3QSJOBk3QD9jIlwsQY2XQtfT8QpELnxMph6BJIowpkWaKLCqMESka0iBQy4lVMIQkDtD7w5OwFNihUFFTaMC0KZlVDoStqWdLTp+QZpZG1xMu0sDRxggkDq+0SB7R9R+gclRgotEaZIgE/8xmiNIgi0JQzJnFGbQw6wDAMnF5cEAl71pAI48ENaCn2vjRSaYLQFEbReUOh00Drh5KutdgYEZn+3JiSw9mM+WySL1qP6x27PqXyuBBxNhC9p4dM2ZR7hkVvHX3nkO11iqeUOnmxaZ38AbXBaHVtZJ2/hBySIaIFKfLNWScDd1FkNptOg0dqFrsW5xJLzjnHKLFVUqcFZFEklp3L5uV7cAyIidmYBn4uCIRAiHjrBn6TOTVSfhMImBFzIOokm9VKZ6lXmpiK8Wc5BgyMheTIEoyErJUPMeCDZydFMrV1KaWYqNN5jakDKPYXmcfaHms1VZaWlrEmkHIhCmNoyoamrjG6oppMiVqz7jquVku2mzVFnrjrstr7OCbGZov1bl+sTiYT6rrCmCLRfW2gqtLN1wcHMUlCgMyEG/YAnTEGrQxVWdA0Mwpj2G23ECPOeYaQ9FjNpEJKibUJCG7bHiVXFFokGXWhEzvQZ39BY1BKZxNOgTYQYwIGnLX0XUgdw0zJdtksd7lcQfQM1iMnk0Thz4tz730az1KgzDiuZQZ3w37iG4Hcsiwpy8TC01rvDTljSNcHIdB3HbZtqYuCpihSgmz0KS03gnMpjanvbZI2mgQoGqPhRjT6HjjOvO2IwJhi73MYMxtJhJROVmbgM4RA7LssNUohFX3fsVkNeO9QUlPJEu1lYiO6kFhwUjD0DqJkvdnx+edfgVB8/P1POD6+x+lmTZTd/vNa5zE6MUtFTg8yWTbuvUf6kMFthchppQFBVAns0VlmWZclOgbKqkqJ26WmYMZ0MkEZs78WY0iAkfPJKL3rJThHZSSV0RA8pRY4LQnKMG1KaiWYacnVcsm67/j5l084uXuP9x8/oIqeq/UV/+mnn2GM4t0HdzBVTV0WzKdTCl2wUgv6TUupI9OmotaCoGAiNUeTku5wRgww9APrszW+NohSsmt7vnriUScbJt96n6kpWSy2HE+nSBWSPFup1IH2gs5bBm+pZfb18IHgEovODmkebjubQeCBtd8xKyX37t3l6OiEXdywOV+mec8HlEwJ11rlQBKZWLCFMWhpcM6zWKyQxnA4nyFdZOsDVAppNDYGpA9IZVDKpMIPgR08UWrKsqIkst5sGHpLHRW+rJNvpb7RRQ1pnhylsCF4jNYYqYhRMZvO2PQ7dheXHN6bU1UF00lNMZkynddUTUWUJb1MnWOvBF5A3UzwTvE3P/4pb56f8gf/3feAChd3qEry1Zd/x+nzn/Puex/xB//Vn/DuJ8cUk4oYU7BRCuUYWX8ys7lvlh43PEBuFE6/bL1+ff/4htZm/vabloUx7slK+03mRoGLMAx+n8wrtODh44fM7x7ig8MoxbQoqVRKb7YhmSMbeS22+YX9+J3exFvfpubfPllOpIaW0pJHj+8zm0z43vc+YbOOVDWUheD06ZL2yvJgWhM+fo+/+A9/xqeffk4j59jNa64uL9JY1YGXF09Zbd/w/PUz/u7sS+5/cJ+HszlquWK4esXhccmD2QmT+YpBaLrNFWENtTiktB6tppiJQfUdvYVQRIRao+oO51qM7bg/P2IyOaR48AiMRp6+ANcjJiVMAqtPv+Ly4iXz+ZRXz17y+vkVm2DZbM+w9oLZxzsOPnlAQBNjizt/xeXf/S0Ix/0f/ghz8AjUAYiBbvucs6sFi9ZRHlTMyyN0cwIme+epJOdJQFzq4ououMXJFClJe+g6hs4i0RRVjawOEWICXoITEPvsU1dSVTOqYoKvBJiaEW5OC6J04n5VHCxCWiyOi4qbi4m3wLih73Eu2WuUZckYRjU+bx/ElH//6wYV/PP2i1uyBPCoPJfGEPDWJguP7NXrbKr1+z6pKAAmk1TP/kPn4Jse/6aX/PL3GTnGv5tbJB3TECNRS0T0hCBREaIN7JZLvn7xgqvFksE5bAhYO6CDQBIwWmCHgensmGEy0PcRVyRf5KbWyGlDUSk6C27oCWEDXhCDTf6xFupJyawSnL4548XmnMlszv2DBi/A2jXr85fEoUeXYDeXaN9iwg7hHO2qo11csN1tiIXA2h4tAkhNCJ7oHYvlJZeLNYvW4Qh4t+N4DtYPyBDwMtly1LHivpnywLacDD2XRHabBawvaPor4BDqANMC3RuEmVF96xD57jHtsyvuH7/CfNRxfrbgy8++oAyWI+mZtDva1YYyRg4fgRgi2AhRg4U4tHSvn+CLjsnDbyErkftoKZwQkcCoW0MtQgyR1cWOV0+/5NXp66SAGHqs8wknEGlOKooi1fxZwnoL3JZib78D40PZA9qH/DWp19QeuMlNPiEQURBEuLUuDoQ9wDsCab/cI1Kgtbr1eiFTCMJ4H44x4oLHeoeNPUoHpqFK1ipNlXLyxmlbKMAghCaiCDHiQkQp0CT/apQH+nzbMNih4vTNmp9/8TO+ePpzXr1+yumrZzz96jPOvn6G3W3Aetzg8SGDWkqnfzLJhkWWJogocPk+FPIaS0qTPX1T629s6KaGQ/J0E5lxl45IYp/tG6HitjR/f+TENZFjBORugmNyrJn3j90G7WKWd4WYzA7Hn0e7tz0OLK7roZhfF3Jyb8i1+B7A43YQxa8yN/4DHnQe8iJwHEiQNc6FYjqfUNcaK3tQkaIqiT5ghw47eJ5//RLUiEhmbXehcNHjg2Xa1OCTH5CWiqoukVWBtz21j/h6wqqz9JsdMgc02L5nOQTa9YbZbEYQEUfE4aDQqMKgS0OpoTxo8NahW4/xUEWNJC2keztwevoipdbkYzyvasrZjFIndlo/m9HnixAMwQaGfiBYl9hbSqECKG2IUqCFQAeBJjAMJV322ejaxApUgoQmW48bkvyzKip0qZj4JJt1zuGsp40OsdvSO4tz2ffOJTaV80l62Pe7PBDVPhnXVIamrDCDYlqXSAkqU0KTEWQeFzItMpKPFSnxFJWozUohlSGIFBTRdZHgLdYmLzAvM5VdCMi+SSKMF8O1fJVMy7157YyD+ObFM140NxFuHxN6Pu5vJFPohUTELEN8u2OXL54hS1a11NknVBBILL70NwUxSIxu9murGEGEQPCJBixioN3t2OmIaQrKaYMRJYNzKVwDgXcOKZIMoBl6vJAEIm2nGWwPQVBoTV0lQDiEkD0He6y1DBnAG5xl15cMvacbLKVJgJ8xBX3bMrgUJjEMjrZtkdJR101iXnYJdNZyhhL/D3tv9iXXdZ15/s50p4jIEUACEEiKpAZKpstdtssP3auq33qt/nv7od/6qbuGXmVXWZJdIikSIIkpgZxiutOZ+mHfiExQlFTLdvWqQQcLSCAiM+Ii7r3nnP3tb1CU1qAb2Zhv/SCszsFPn5OAOWEIsjg5S/By7+35JSkxxkARIlpbUkygJTpDKfG7ykpCGEbvGcewT/0VI/tMTuBjoJy6LsK8FBDPaAkzsdqRVSakfvr8b+XRu47vDoh1Ru5bPZ1jNS1wKuTJDyETtSG7vA+WGMYRihrQxAQ+eAbv0aUEMjD58mWiMHuUQtld4SDP54mdO4aAnuSHPgmzoaprKufwMZCU9Ev8tOCNm46bmxX9GDjMUGOo4tQVzKBIqGljXRYFvYlcXV3x9PMvaeqa05+8z5MPPmT51ZeU9Q1VMyendtpViDQoBkkHBkMMCZMy1lis0Vgy2miqumY213Q+okyH0tJsKbTCOotxVoopEq5wZCIhyj3onLAWg1wUDG3HZntFU2kalaitpSlKRh8ZCBjruH8458AaLhvH65sl2Ras11s++/xLTmY1D4/mzA8PiLpk1XtMM2d+dEBTldT1jOQjq6trnDIcLhpmpSFaWKA4qgvS0RylDKtlS+w62utr3LxCGVinNV92HUYpnjx6wPFitvefsM4KuJ/FByTmKTRET4t3jCQfyDrsGcLDMIgkxDiskraeQdNUBU0d0WopYC2KuqxQVgBzkVDrfXKwMQ6jrXRkjeb0+Ihq1hC2W7wRHUHXd8TsJW3VWMYwMIwJpQx1PUNZGIeSNiVILXZK6tpL55WESsToQSWMlU1MTEGsILJmGAaauuHw8Ji+bxlSwjhHXVc0ixnFrIJZSW1nqARDynQdrNeJrg2czhb0ccX1xRtevjxiuVrTzGfMFyd0XebrL57yxa9f0bYN/9vpT7nfHKOMWDvI2G2IEinJRlM2WzLUnT9/58blt/aw/8AifwoukqbR5OEHFE7vZa4RSNGg8ozCaqwCHzKyzdA4U+75Ze+89D/NEf5XMO6wR0QnffvUpPGqKoezR7LeG0VZwGw2NegVPPnkCJA0+v4Cis/ndJvA26fnzPOKSkfK2mONJGY3swqKGU9fbPnNi6/50el93q8LdDI0Dxaog8eoxcfU1QnFYSIPEWtqKI9IegYkTNnSVD3NWYSwZPPsKd/87eeEVyNHsxP69JbXX38LB44ffvyhMLm7DXXhGW++4K//9tfM64cs6gfMqkfcrJ6xfv2cZbzkR4v7HP7sr9CqBDLGOWa2YAg9Kg+QHMnPyCqjE5RWUx0d4Rb3oDgG5hA10bcku0GZkkSBpsbkil0y5O0pUJBLFHOU8liT0EUlXnk5g+7IaiDS4pUwiavqIUYfkscpLEKXd67BOxXsfiP4u77e8YfjOyDMbs82/TOFQJjY5W63JwPy1FxC75oGvPNzfxy/f/yO9sPtY2qXXj9tYFFCPsiQQ2IcepbbDUVZoLXeKzWqqvo9oMAfByBzXBYTfFnCpgC8mEBrYkq8vbjk1fk5214Y7lZLHaVzprDSyCxcgbMlfgjEkFjM5jR1gxoCJnqOTw5QLqC3iVllKUuNVVITGN2hxiUz3VPnlm3X4srM8bGwxdYbz0cPj4ShlTNsLxh7hdOKQovh/unRAu0KhjzVc+2WYT2wigOp72m7geVyy9pnsBqjhNku0vREyANt70lhTqVrzEWPWkJRFGw3nrKKsBnheIBaw9Ecs1qKb9iDx/DwQ5qfj3z41Uvmz16y+PoVx5Xnnk58OJ9B0szXgZk2qMsR/sNn5M+uCeqQaAqW16+4WD/nB588Rp39RIjcKZIrg1aGpAZ0tiI/TUz+sJnNleerz7/i62ef8frNa9ZdzxCTAJ+ZKXDO7P0xcxYqR8zhDkg0gT/plhWV8i0wHqMQOpRSeyXQrY85Uo+mLJ5y3Aav7GWWKUlto28DE3OIxBylbkaDddKITQIUqameUknseEIIKL3zkkwYK3vCYRjo2lZYc2GUhD+fBZyz5f4yt9ohsGGLDyWd1EYAACAASURBVCv6/ppuc0PfLgmd4W/+ny949eKaz37zGV9985Tr5QXD0NMPPX4YUCmjcBhdgCmI2uGzoo+JOEZqN0cn+Ux1BjMdv/icC8N6xxbXWTzfVJJAQyXbLbkdp69Tm/DO5KimfeS0c8s7ynDeN4/ugmI7xpq6A9DdHe+y7BIZUWXt2XE7XUfOe6/N3YrJ3a93H7z73A7gm0ba2Wv9jvF7ATql1E5avX/ROMncgs7CbCkMymqsSZR1JcCFLiAlNm3PTh+tlJPOtBZZyXY7kmPAKGHQKaslMrowFHXDgbPQB8puwDcNNhsJgAiJOASiD2y7gZA8ffCM2aOcoWhKqsWMsi7Fo2tK+yytpTaVgD/jSAyiLQ9BUlzICRsDDQpnhRlorcNPJ8ZZSzYZFTM2sb8ZxxgEwMgJsseQMDqJTxwZ6zIu6MkkX/xz1qs1fdvSNA16Dq5pqMuKqox7ACsohd2UrIee9WrNJrTkJJ5rpSsm1P7WqDLuwh7aRBgCxiiCF2mD1ZJgaadE3sI6jJOCdbdQixh1YicliETpLkwsNQFPRmKYJhiliCmg0pSqeWcCUkq8k1S6s8m/cwPsyrIdlXTnoXd7Y2RCSmgkjCL5qRDlNmEn57wvwN9hPwFJCesrh2mxMbcTYtq3WhQheEgRtZdOpkkSkCmMYRgH2jZjymJiZxravifGyctuArcGH9hutwL0GvGbUkqizOuyonSO0QeRr03BKyklrHWEnIj9yBjSdB6FlZHRHBwcEqqawQ+MowdawhQWoJRi6AdSSgwp0m6W3FxeMGtqqrIka8Xpg3u4tmUYPMY6xjFydbOkze3UPXLEnOnHgRxHrBXvtowipsSQAzlFFBadxccvpETKMkmOfqQfR4YgxvlaG4qyxigwRcG4k7lM5zXGCDGSspKUXnW3IzFFw2vxnhq9gJhlWbAzXU0pySQ/eS+onKnKktJZDDD2A32cUoh0gXYFpqgwZgBE8r1jh8UUp3tHXltP9/Murz0jk2zKmay1bAYmxl3OGaNv/fByFkAspEQ3DJgJMNmF7LgAVYbKGoraorGMMUkIy+DRRrE4WFAkxetvXnBjIubBAcvtmnHyqMiuwERZWHadnJjkM013FyBlsFZRVw0PHx1QHGVMdU7IgWFoyTlhXTX5Lxr01OUaxgGyoi4NxmmqusLawJAiOkt38WZ5w9VVz3HhuH94RFnVOBdph540Djgcs7JAnxyjygIzD7y5WLJZr/CjwThHc3BElzKvl2t0DnilOPSBg6ZB1w3j1KUMJIrKgjWUY6BSiUVtaWYHHM9mHDUlT58/px1GotOYsqH1gaevzzHacXZyHzUtb1VVkVvP9WrJZTuw3mxQVnzqctyxKGWDZ42jcCWJDqM1R/MZR5XhoCnIKdJ3I77rJ9ZdIAVhV2llMQpyCqgk13m3aWmdoZxZgpfk4TjRuFzlGEInJBgfabuegQJtK5RVhKQJAfpuZBl6ln1L3/XEmAjK0222DNbRODuZyidyDEykVkCYfSpB9InryxVmMWdWL1CjQvtEHETy4KyVhDgUuSixaAYfaJoFP/nRJwxvO4brDuMMIUaeP3/DxdsVHx4ecbBY8Omf/inbJx/wN3/9S755/pzNsOTMRfK0MRPmza28Ne261RNI9y4u930Ujd+5Q/ldT8i9/Xufne6l3bozdXRjgrdXK7569opX5zd0vQRDpTBidebkcM4HTx7x/pMHHC5Kfhulu/uud5l1/62OHWiz6xTfXdP1XlUXpn2murN3NlbsHmKEWGjcQUl9YIk2MUb45Ccf8pOP7/H1t5/x+jLz3tljzh5/SDAzLi7WaA99jty7/4BH7/+I6uAhWdUoVQgD24BKhjFrfMoUSuGCgVyB9ty8ecX5F7+iCZaU5ly/vKHyA59f/IbLtCTxv/KjH34Kg6fUnntnNY3bcvP6Od4ZysOGmz5QuMT9yuHqDPoGqGDUbN685vLiDZULcHkJqkPNapQaMSpTOLC1oTgs0TVQaWhKMAo/9qToKcpyT3HI6laSuPvclTIUxQyrAOXFG1ZNu39jQDs0DmsqyA6jj1DpSJpTGUiJrKOUMROD7j8PoJsOQ+0arXnPViCl25TVSflQlqWsi3eZsdPPfJ9J9x/HP37s2PVhkq3aoiCMntXVFSGGvWWDtZa6ru9YA8gIIXyHyfzHcXfsQOZbWGACFxKMbcurV69YbTaSxF44HBqbFTYn1CTrsxMg4L0nxYhGsd22pG1H4xzDOMg9pcCPnja2jP3A2o90Y8B3kaHrKWcz6sUC4xzL5ZqIQlvD6ek9Ru9Zt1u22y3bMAhIZAVi8r2n85ltNgwxE/yASQEXexh7wBB9wuoC6wq00TgnipUcA/cXMyrfU1Q1KfS8efOWlAcOHywEzLtM8HoNxaUk3ZMJwwh9wD3MsFDk9x4xf3zE7H7Dg+OK8KBhtulQzpKHjtxF1n6g/cVnvP6br7m2h4TZfZIr8UNPeWh58uF7oOYQC8koKgzZTnDJ7Skijxk/RF5+8y2ff/45F9dvWG3X+JzIWpFC2gN0Rqn9jJfuzFFZTUBcTph8hwSSkWb+HUaW3fuq39bSMDGp4Hd7oE2y/6xvmXd78C7t6mOF0reN2D27785rxCxAojZaflsJbMk5E0KPViOoERjEDiEbSArvJ76Aztwsr3n98gu++uqXfPXVL3j+9edcvH1BuxwINzXtNrBcrVgPHQkJATTGYKsZRMhZk5MhKiuA1mS/YpQlZkXOO+l9mvamO9BLPnxZmzJ7Xa9Ot94kkuXG3SiHd9pD73R41VS93n5Gd0G423WIPfvtdk266/Wd9y+9A9W+O3aPhBBEoZTS/r2ljjSgNCbfXh+7n7tl1PHOc983fu/sXBQFQ0wTUiiPxSgeb11UrNdrUi6glPOurRF5pXOUxnIwm+0LcGU0GI0PgU3XMgw9VzfLvY8YMaJTpCo0i9mcetaQQkL5gFXQlAV12aCUEjpljKxXK3wwZAR59iERNh3eR4bCQg6YDNqWpMqSrUiKirIkhZHGHQvYGAIpeEyMqJDY9htGH+mdpQ8RM7Ek3GQcWVhNYR1aawYvCZzCdBPQQBWOcZ7YLj1JhYlxJuw0bQ1ZaSn8EUaMtlMKY1bSAgCsyhwtSrRJpM4w5ERInom4iUJT1QUgZpQ7GWpICZJIda4ur1GTL6AycsxlXVGXFbZwHMwX72quvXgnpUkWKf5nEZ2TbBCNEZmfUuQpZS8E8bbYUYFTSlNwQMYU7p3rSed3ZyvF3bQnfQu25SgAXd7p3+M04Sn0hIyr6XHQUzLNjvkEikkSPCXmaCPm6mrqjoD4CRgjwItWFqsNOSmSBmMStTPYNJCyMFyGHBljovcjKosv3rxs5DMfB1IY8Sli65LSaUiG49khs7rBKs1q20rYgcqEqfuSxgEfxROw0FbM4lNi23WM40hfVTRVgbMFyhlSrTCmJIbAOE4+Y3VNoRVD19JtN4Sxw9c1RVmyXC4ZYqQoKmbzA7yPtG3HVm8JOQiLZZKNhijgkm0V2kjRHoKwIeuioCwLfPJktWEMgd4ntBNZbMpK0i6j+DokIMQsdPIYp4Vtkk6GQO8Dw6gxpcEYmdSMsSgncvhMnsCPyI4xl6evRmkcmqgNpXPUZUlVOFIIdEOPH0asVZhy6oFpi9KarPXtYpwkJdhNU+Z+AdwtrtMvZQ3GgS0keCAFT8wZH4Ik5PowJQYrrJHwEW30njWZVU+MHutHFkpxMK9oD2sG5em7gc12w7Ad6EbFQXHEvaMzzs4ec07ml5/9msvlDe1yjelHCrR0cifkUGMJowS9ZGvIScJlfByIVjpyZ6cPOC0OmR8d4krLm7dvCGGkqgpc5VBWZLtpb1yrUcZgskGpEUUQtmUOHM0PWC8WXN/0LDct2WcOTxQha2w9Q9sCExQORS4sM5U5USOzsiCOxzijOZg3KGt4fXHFdnOD9yPHF9ccHy548vCMIoEvawyG5ByucmgTqXJiYYFsWMwK3HzOg8UhB2XFsxcveHZ5Tq8NzWKOWxySbMkwJlrdoa0imJLBj6zbLe0Q6f2InnxOdwxjo7SwRLXFuFI+C6CpSk4OG5pCoWKk26zptgNpDITQo3LCMeBUlnk3j9L5zBk/JLarntx6SZqelyKj1wpjNWH0WJVEWp4ynoQtKppZhVMWpRzb7Zbnb17yfHVDrzKL2YI8c3g/EMMoAHoWvw9J9JY1JGdJIrO2xKmSbnvBZn3J0dk9jmcL8jjihwiTIb3I/DXKWJQqIA7UVcWffvoJquv5xb/7BVdvOnLWtC9X/Pt/8wuODhref+8+f/EXP6VrBzbBY8tTUJnoB8Z+i7WKoqrZgQ1Z2Ylh9a73xjv7rLuglvovB3jtvV3uHIMPmW07sFpuefl8xdWlZxw8fuiwJnL/3gGhM6TR8OEPT4TNsD+knXvd7hV34Qr/rQITd8/R7jzIdQLS/c2Ij6m9aw1zB3DNAwwjtDHRuy3148Sf3Psp9B22GDEnNYebB4StIlxt6cvn3D87I6sly+s1y2rOez/+ZxTzx3z71VvG59csCsWJszSz+9A8xJYZ6+TaZQC/cWw3gTffbImt4qg+ZZUzwW+JauDHf/qET04/oiwqLs+vaZdrbq6/JbHko4/v89WwJnae1XrDqA2np4/55J99wg8+eg90iwrXbJeBty+/JsSeqio5f/6WonvJ8XuPoOrJaWC1ecPbmwsevn+MqhqoDLgSnQ+w6gjvFUoXKIuY7uSRrMP08VlytuQk/y9tKzHqSYNIW20NlBNWN8eqOO19ClBiB5FSJIRBvHO12d9bt41UJkb77sTd/Zpu/7mvCzPRewlemuRh2khQzR7ouVtwqFv1xB/BuX/ceHd+3D0oj8o+W+FHz/nz57x9+5aD+YKHTx5zsDiSc3Tn89+BAd8F7P443h1y6d/eBzkntDJEHzl/ec6LF6/o+1H2xU6CuCTMCVIc6doNtFvcoXj3tkPiernk8nJJnTRPHp2xbQMJi3EzcooMQdGPijEZxmh5OVlpFEVFU9eM28DNzQofE86WdL95Q5iUSzEFxjgSvCemiE5ZbEKypkP8hI3RlDpR46mUZfRSQxVW9jwxKEJIxKgoApjVhtBvOH9b0W7f8PmXv+FxWPFXP3rIveOCmgHSG1j2sGhgNdDdLPEhMDs+xzxpcBp4NAf7gJnxxNwRzz3Zw+qm5/Wm42I1cL694nwAe/qY5p6iSxZbH/KDg8eYwzOgBlVCKcqonMRuKWdhLGcyYzfy6uVrnj39ilevXtHmjj6KVdfUi5/4wSJB9SHsGW928qKLE3ikJqaWZsf2F3/3pNKeibVTRuWUJo+4idGV83Tt7OoQaaKy+94syrcUIU+2Ojpr4hQEIbWwFdWSSpPSbQIJgZgiMSWMFn/xOCaSDlQzmYtns4bFQYMyLeQrsk9s1lecv408/fqaL5++5vJqw1fPntIPazbLtyyXL9mu3tJ3S6LvJEE21PhoRDlnHOAYYkL7hEqBSjtylMBO+TwkPNBaQ9IGT0HWGhVvpaG3TVFhae40sDsWnCJNoReQlN7D43nXYPqtRu5O8rpDaQW/2AU2kN5V5+WJhJNz/gMecGoP0iu+yziW/08kC4HhLoB6F4/gdu3bgbp3v/6jADqza4/uDm73YWUxTby6vCGmBl1DNJkxjjjnqHHossThUVmAu6pocE1NQDo6G2sZhxFlxJ9q8CNDu0WlxHo7MJv1NE2DGoXFM0xmf8o4JKJPYw8XuB2tNCXxD+paQgjokGi0k5OdwfvAkhaiAWVQKGzKNNZRVjOcUmQ/0rcdXQxEMn6M4iuQMilsBaBD44wkj9Z1vfc9s0Gkf8pAQmOrkW1a06uED8hFaDV6CpkwxqCsE68IraQTn/K0yZKL1qpIaTKNg75QKG/wUYIlgocYnWy8tEhwlDETe0ekOkLFnUIdfGBUkX4IdMWItZa+8xPg6CbjcfGzE3nbxJBT4+Q/J5RPuE2FFS+Dcc/AU0rtY77hlhW3A950frebKvTOW4BuD9JlNaXmyM2jzWT6iJoScnaJhtNb7dJcpvsnZXkNY61EwGtF1oEY1aTll2N32kFiL6NMMRMJwgRzhnl1IN6IKtMNA+3oiTlhlMWg8FqkoxJZPxlI5iTdp2SoCse8qaRQdpamqQgxs25brm9uaHuPj4MwrXqRzCSmiSklbvoOX1cURUkIUnwXrkAVJc55unbD8eEBB4sFfbehXS2R8AxNJPLm/BVjyhRlTdd1xKho2y0g4DsKiinppyXQtRu22yXr9ZJ7xyfYZMVnUlsaVVLUFWXdYIsB2lG6BNoIS2IChUMCo6Zrb9fBQGTiAtzCarPFB8/hyYKqFgBNZUnZROVbKavWItu0FjsxJ/XUMcopU9oCq7QAeSlTWodVWjpIRpiNIQQmzHpaFCXtWKx/9AQc3qGdTxNtAqLaebiJZ4f4N0ZhS/oRZ8VfsCgLAclTJEePVpmidCijiWnEhpFGK+a1o6o1uleYqDgIhnQ85+XFmvPzl3xUnfJnP/sTwo/PqL7+Nb/8u1/yNmX8uJZY+STJsH5M6JQIKhFjIk/z8ugH+pgYnCOERGE0x6cn6FKkuChYrW6orNlT5Y3WKGtwpaWsHGVpCbFnGIUFYlSmMoZ7x0dE+4RyXtFdXtJverrzS3TdUN07pT5YcJAsRcq0oadNiUMkZTZFOT+zpuHg+Ii3F5F+o0m2YDkG2usl68EzMwU5QjmfUx4doUuNTp65g5N5jfWeojBi5msKmrOHqJBYdVvWMROtYX56j8XihHFIDESUS0RbE1KgairuHdXoa8XmopvWNS3BINriJwsSpe0kZYgQPaSAweG0EsPalFFZutF9ChibUW5qhGhLXQpwfHwwp9aa1cUl1sJJ46b5GLbdhk27IZWWQpW3/qIhkVUJSu67PEK76bi6uKIjk2PmyFXoopi2CTtbAfktXsCj+OX4SA4K52pIhs1yiy423Js9oCocTpdY7TDaTYwYDYjPpDEli+qYC68Yho5ko/wOiugjv/qPv8TqLZ/+2Yfcf3yfZC2L+/c5OnlMTC3Xl98w9gMHB4cUZTH1FhVKpVsG0B9MmPxDHLg/PL63sJ1G3KXfGruH/goHT57c4+TeKf/8n2dSkLmDDFZn6lLRVAo3dar/+x13qHBqBzxK8bAb2uzOo5fzm0UpEJMnhSjMLm0IOqCN570nh/zJTx/z5uU3xLHEhcQQAh99+BM+OvuYF6+f4erM++8/4OMPHvPv//Xf8sUXT2ke3OeV9/yHL7+gmFX87P37PJ5bZs2Ck8cfMTv7GLM4o71ec/7VS14879hsE93y7xkufs3F4pKfv/8XfPqzR3AW4AfiO0z5mNif8OL/+r/51WdP+fEnZxyfnRE/v+Bm+5zF/Sc8OH7EyT3L0ekZZhzxr78hqyVvv10ydkt++OmPidny6tkF8c1bdPWU+jCRWRPxlFWirAPJ3xCGHkyPcQ8x9gxjqklGNTWF3onNk0JCAVplAd2VNGJTNNhCg6vISaFMJhOAiJYNuswFJsueS09pqrvTqXbm1r8PNPsOq05JxSTqF9lDzGYzmsViYpcIKzbFCEphnLt9dfUuU+CPYN0/zdj5p2pjSDExTufl/v37HB0e0czmYM07378bfzwH/3njtteQ0ZNNw/ZqxcuXr1iuVuIZPXn15hxR2mCNNG1TFtsXHzMxy9f1pmO1bvHZ8ObtDaunS3SpGLQ0r8tR1AxtTpiyYfBR9ngRqXuzIsZMCImc19R1TQielPJUk1WgDNaCU6CiFyJCNhhbUJYW5QcYA6owGK0oVIHPEvY3DIFxzOSo0RiaukJpj9KapEu22bEeFC5UzKlQnYdXb2F5JQCdV7hegg37y0vi14HjtEG7A3h1TTh/S6InFpaLruM6Kt7aOctGSDTHbkZ18gCvC15ebBjKzHsf/Zjm40+gnEGwe5WLUhay2ZO6s89cXF7w7JunvHj1nHW/oVeePopnt0IUMVpLyFHMmTwG8iR3BfbKOAFcpA5VvOtXBreEkjTNbVI3COsNNYU5ZGn+ygWUv3Ndqb2X9F3W3K1MVtbSlG+tfzIaUbtOrP6UsGbXYMxTrasZvefq5orKtHxmt3xj4WYFz1+u+Pr5hi+fXvD06zfcrLYs1yvZP6Ye8oDOHq0SNjvQiqA0QUstp4wRADIJ6cUpQ2ULSSoNkUgkK4gqE1SaJKyWmBRKp6nXmqc6fYJCcyRO99fOuirF23VHsLg9L+7OHfnu/KV2MF7edZQmkFW9mxZ+C9S9K339LoNuh3covdsbvgu6Sa16i1vs3iMyrYNZ9ubqeyC2PwTK3R2/F6AbhoFwlx64R/+MpEOqNCUy5b0ZYgiBPkR09CgV0MmLjlpnXKGxVgCBpIQNZ3dG5+PIsN0Q/IgzltpZUt+jQkBlGNNA5wPRGHRVYcuKoDJOK+rCUlpLMTgKrchjoMiZIia0VniraQms25Yuip+XVZrTZoErSypdUBcOVRgqDHVVMFNw3XuqnPHdgB+GCe3OE+DnCeNAmNJXlBI6s9Ii/7ROMz9saHNgHESalA0krSYDRS2a9yQBC0krlDNoJUBMDhKckY0iF47cVDTaEpJ4Aw59YAxpT9fMgNHCbEsT2qyMJU5a6xij0OFTJg4R7TPL9eU+bMEYszf4retaivVCY63GWUN0doeD7Y2+c0YmCKvxaupLKEXhpMD16Za+q5TCqtuJDW4ZdDtEefecsOWm/oMSw1WlFGa6rsWP7I7h4h2ATvzrBAwsXTW9LqAs2TpilrAL0KgpfMMojdWIeT8ZrUQWfHhwQFFo8S7YrnFZi7+DdRiUpHxO8gKJu0mk4Nk1O8ahZXQWlSU9t2kanCsp65oMVKOkBQ+jlwBeNQUoGIfVinG9YuhGulauWW0NMeZ9OMd6YjumKdlWkntqFIn1ZiMS6Bxo245x9GQk1KBpGuq6niZaQ1VVOANV6dhsl/R9z8XlJaUq0Fj6biThmR0K+0Xu2cDQ9wx9zziOxJik8zQV3ykrjFZ7ADvGICliceRmuWTTbbGlQZsZRosPnPcSSLI3Zt11iHfXS5LH9gvltEHNRgqQoiimnxFPun5X/ORblpzSSkzqs8XkAKh95PbdiVn8HSIR8RsRb0iPdYaYE13XMahMCp7gxWg25CRpzylAjmAiKQWyH7ApkPPIMG5JfkOhNCeHDTYYupipcsHp4ZzTe6fMf/oT6p+9R72Y8Xd//R95OTwlrDakJOEGUQVMHgl7+vu0PCUl50EHcpagG60nL7rFnHre0Pcb3ORXIRvKQvzojIDuewPvFDEaKqsmhmbHdttirOP45AFj0XO5XDEkhR8CYTuiNRwVJbaeU6fAsF3R2IrZvJHPWWmskXnu8PQe667FA9lozlcd2m+YFwW2DGxiog8jReoolOHeoqbMNUFbwgAWRWkdPzg+ZTn2vPIdYVZjZzNs1ZCSNGXIHmpPymLBcHR6j5Qj7c3VHn8wakoTnaTre/kvIkXPUxBE4RzWGPEaVRqfp4JUg8p64kopSudw2tAUDQdlyfriihSTdExTAqvo+45+6EhbTWMXKF3iY2K9aQlKUdQlwxBwSnNwcMBsu+Lm6pK35+dUMVPFe9xbzKeNRpqCKSCnIMEMWaTcORtyAGcqZo0heE3XRg4XM7IuyFmMg2FKWEqKrBRGWU4XD/h8m3j1+iUX29dsU49KmoNyjgoDT3/9OacnNT//nzQHp485++GPsLrE5zWbTcfzb95w//Q9PmoaXFmz8y6702j8LUHob/99Bwz90xeU2lh2gJN0pSEoMaGe1YqqYuqgg9a3fDiELIkSwsR3jlpPZhHC5P7vYyi+R8srAM9e+hMmyc4ktTEGvMy/ZZ0oGjhd/JB5+zP+9befEeh5/N4Txk1gGCI5j6xIaOW4iPD4eMHZD97j+iKw3rQ8657yzeWSIz0jlveIZeTF5pwXLy44yOe8V/4JTVFQ2xvC+gU3bzbEcYPKD0i24fX1b7ghcfbBj1k8+qF4+mSNbzf0lWXx+EOefPqXHJ3UuOoe12+uqKpHPPt2SRo7Xr14w9XFOYdH99B6xZe/+AJTZJ785AG2OeP48THl/JDmGFST6XvN7GjG4UlBUzt8P4iNBRpcpjmI2PIEbI2iIGFIFDtojt0+xJgIeKSjZFB6Rg6W4Gu0smSz+/6ElAfIzyIsVWHI7VgKsPN9lLsp7efA7x+Gvb/ZxAAJ057DOYcriu9ldO0Au7uF0R/Hf4GhFMqa6dRHrLWcnT3EVpU8N3mn7QDSu6DcznT+D6UI/g89FOyAgh12nkLk/Pyc85evSHH6TKcCXcKdEsY4sb2YLIXGHGn9wM12wypkotIMPvPi1QUhekxd0CuxbaqiIgXo0JgQyHEgBk8KAtJZK1JUq0RKWBvDGAKjH8ljwlpNVVjxflUJcGBLlKmo5gvmdcl2dUUIHoMm5jgB9WYKQJM9f06aNkeu9YDTnjh6FqakODjlMPTYGMnDBjSM7SXlKsHbAnRBZWqqesa46klf3KBursjZ4Z/f0K09i/oEbMUmDqyKhu28wNcG7SpKW5FQrJZL3o49w9HHDD//CduH7wOWbBQqgUNRklFZT03JTH+z5fnzb3j27TMu1pcMBIYsBBuNKHASOxAoEbw0klTOxInIkpjqgInRtmNO3pWlAvt98q5uiHlnPaSn60ZxOw3u6hA1TZF3QLiJbBDiuzshhfh5++iBO+q0GPD+ljSTYmYMouLDB9ohcXVzzrPnv6FRif/j1QuKpLhZDVwsR7pg6L1mjBllLMbJdWLyOIGREqaYYyarhCkgJwFcSZo8XRtZSdheN0rzHZSQp4whW6aE00jOHnSEmCfp8FSr73/dfjagyFlP9o9q2mBlbl3b1H79um0gCgaye9UdUJfSFL50ZwnaM9e4BVp34ZTcWQn3LDsQ1qMyt5ast98k18iOLbfDx3Y/nI21YAAAIABJREFUv1/Fb1fb2/n33WbZ7xu/F6Bbd73ottVEj08RchSZaOU4XpQs5iW4TFJBENaUpthgj9di2B4Gz2YIuK5HWaFIDj6KH1qGqiwE8DOaFMbJkDuzmB2T/EgXI5t+4Krbsup6vFJyDEWF04ZZWdAUFUUW3zGnDIUrqBDwITcFZfKkdknqtkQfcGiGrseFyCZBmOSYSSW0Vbiy5KAoiSh627Ilo2KiKh2FscQYuNmsBeybzKXH6dhB0/e9iKezTABGaawxOGNQTKb8O8NHJclWkroq/lU5J0pn0SkLQFeWNKYAI7RYAenE8DLGyBCmJJcpEzlrQxiiXKNKkyfWX4wSwLC7MFPKbH0/JWmCc46qqijLgqODhl0JZZ0sDEopSeIE6ZhbhzYeNU4hEknov0YbASdgLyXbeYztNgXGTp2KNF3sO2BxN5HuWH0kdik7QhMWAG/fYp4mQZkXJyZLFumeRgovpWXDqJVlJ5clySZGGVBGjMJVLtBWYcuCsqpoaoeNAryQtXhNOAfTBD90/eQD5gl+ENAyFYCiDwLa9uOAT5GyqKkXmoiYlQ6+J2mFa2qcEg+zwQdG30PO6BwJXoI8yrIkK82ma4mbNcZoFvMZZV0RskgurdEcnYicUFvH+u1bgheZaQxBGDlMlOwYaJpmmsgyR0eHVNUDxq7l6uqCbrtFJUPbdnRDS9QDx7EhZRjGTIieru8ZhoFxCHif8TExhkjO0I6Ral6TfSIQCDFThMDgM23bst6sGfpjqrIgmUxOQZLgRs8YR4wpCX4kB1lECYFkNEyS60RmHDsKK6CnUUoMVqNc89YZqqwoDQxmx0CYkmK1kcJFiwfXfsKeKIA5xR08jMnip5CJGOOoypKmnpHCgO9a/Oj3BUxSipgVMSrGpAjZMOZETB3ELXlo8Zs1bDucbSispd9umZeOT//Fz/mzD/8c21Ssrm+IFXzw+Annz77hlfqKcehRwaNIaB1xKuHR+KzxWeGUAm0wNmOtwWZFjmLunnfQ0QREOWew06ZFAgbkevAhYyWaWuRLqccqiw+e569e8+tvv6Q5mvH+2WMW9xaY+QE3bcdN37NcLmnRhJMT5idzbKFoqpJCZ3QKVFVNXdXYsuDb9ZLXby+57jqKZs7Z2SOyMfShR2fN+XJL7S44bu4zJ1FYQ1FUHBiDB7o4UGRQWTFWmuNZhdIlYV5zOKtRCrrRE6PHZDAp0/qRDk2ZNCLEtaQU9oEFWoPOEWugLhxNWWLCiLYaWzuKusQ6I8w0AtqCTgLi9saQg0J7UDoS04gfe7bbloOixpgCYxKltbicJ4uBAj2W+KCIGsqioOw76Fuycdi5RVvL0eExs3sH2FlD+vw/cXl1xbDZEA4O2G3ccpJUL4tGRQVROol1VVNVNb7zKAOHp6fcdB3X6w3HhxrvE6OHGPWdDqVsKIxWrFdbdC44O3vCxeqSGC7xW7FBWA0DQ585f3nF8nLLo8VDXnzzgn/77/4tsyKgwog1h/yrf/m/8+Dhe5w8aNilVcrmKKGyAOv7nueuAZSno1Dvbmb+oeO3X0Ht/8xkYpS1wSqB1PIEHJr9MTCtT3dEq/b7YMPd634/1Pj/59gBNbtN8N3/83eP6PuPMIOaqINZErflm3ePS9hHzpMfqC7QWlhcSqXpM5264GnEuIDqNxzrzJ9//AGLsyOOz37IL//fv+c3v/4MkwJNWZGU4e9+8Rl/P3rsoAgavvrmOW9SwFdz2k3g9fMbVuGGt9dfsDE3pFnD//wvV/zVX/wvvPfnH+LHnjdvX5B15s/+8l/x+LTgb/7N/4nVkbPiUzEadzXjpoUQ+eSnj5jZSHd5zv3ZQ84eH3N0v2CzLjGvM4TAuFpTH88pjx/SxkM2268pkiHlBbo8oHk8ozo6BjqUDTA0NG5OZQP4hMPgjo+gPIbgoNTyfYx7CQ2YCWKb/q0yOY/kJMFVWhfosqBwFml4qP09I2BanpgZevIX9kAnHf0gIKrWHm016JKcHWmXHKtGdgItskZlAa/zVOSoabuVokjnm9kMV5aTeTlyoxizZ6Lsrj52V98d1ux3mSh/HP+wsQdCSSjnKAonp3KS0omUgDtnYdc/vQPW/RZCK/ftpGP4B8xeu9n83aL3t1/pDtPlt57Zx05OR56AAbGM383MBeSpsbR/vZ29gN6rb/bvfudtsvrOO+ep/XCLA+z/4kPCOif1go+ETcvN61dcXb4FFCYh8Hr0DKElWs+oKjziETz0A82Joyxq+t5zcblGKcvc1AydxzlN8okheWIY0dnt10liwqaEI2IrR1U1xAlMssbSzGbklDHzOTnMIItveFOWxDTQDwOHx6dk7fC6pF4scMbyKo5c3lwzehiHKPNIkVDOSO1gHEOE0Hu8BldqqCxHTcWZe0RTbJk1GpVbkdtvPHSJHCNeedxRBYVDtyOFTfD5N2DmuPIIWx0wtIqbIdLqGTfZc8nAlR8ZhpYxLBmGkZwSfnbIB3/+KUcffkCnHIFMncUSS2XE/yhLHZd9Znlzw+vXr7m4uqQde4ISZZMgeLLGqwl0TTHghx25YgLnUiJO9a54fYodFVOTP0ZhS+7k4Wm6Tna+5oLRCAEgT+DdDtDLO4bxXaacAnLaM4/vElVSliMJPk2MPj+RAUbC0O8Buj4kqafaNWPo8Hlk8C0hDtgYWURNoQtGn+jGhHKiSNI2Y52jDwPkQMpxwneYQvQsSgXxac8Jo4zU/7qQKT9NzZ+sydN6n2Im4YX4YjVJRZTN4sk8yVjTVJsLqUDITBpFzOzXHiYQU0iJ8c4NuZtTdkU/t02hO0DYHlzbkTjyuw2KXWPxXUbx1MhCi8oDYS/GOM0U+d33y4iaJaoIJmFkM4TOAvsY1HTt7EIpbkG63dSrvnMM3zd+L0Cnq4p+SuzIY8DlLE12AiM9Yxbkd15VGGsYYyDljGncBCgoxr6ja3uGEIhXK8YwJUpOC/Osbjg6mDOrK1T25MlnzTqDKg22ajgwmiok7MpRrJb4uPPXsYz9QFx3DK4laoMmEY0hq4bRLWhRVCh04ThghtXiUFa5CmLG9wM3XUfabAT11RkI8iErTdM0FMZCoQlhSvTRGWU0lan3wI11FqdmdENL348YYzE+MjcFwTj6bsSYxHxeUZiaYRwolKRZagw2awGilBYQxWh0FnYglRzn6D0mCdCXUIyFXOBRiUZ8DJIS2gfPmGRf3QdPihmtDc5qCXmYKLNjSHtUP+VMSiL7WbUdablms9mINGJiOtrCUZYFtpD4Z2EgKHQGm4Q9EEKAiHRmlJJUo4lJtUOYw+QpR3YyoVlhsmml9hJDjcJN0j256NJUwRmU2XnVsWfN7W+0OzcDhmnzu9O/3yLqWqlJmmpIRuFJjNkTFZS2IDrRzs8XDcdFRVFalqvNfgINIRKtxjnx/vAenJ2SE9NAytAO0gHRRlJ+ixBoUyTkRLAwEsiIoauyBq0cegS/HRjanjiOuMkBoetaUpLUWAn5UPTB8/ryLVXhBKDKcL3eMJvNsHXNRx98zHKz4e3FBavNlpw9tqjk3JEhRa4uztkuHScnRxwfHVE6w72TE/LhMf3G01cdN9sLXr7+lrfXhvnsCE0jxxLFrH67FBbguuvpMljXMHjDzTqw6SJDkhCOzcUV221Lt22JMfLVb55yfHzAo7N7HB4dENXIOI6EMJCchuiptMaSMCpBjoy+AxWJ2dONG6wF4yRoxVaOzWZD3/e4FLHW0FjPig5XZ2yhKEqLT4mqqAhZkbQhJjBZUWlLYTKtTiQV0DGjxoCyAR3Bh4Sf0lOP5zPUfEHbricfkkzQmmwcIyVjVqjS0HrPdrgh65aZ0RzQkEioWOJ9LUDZuOLrZ59zcO8D+nYLT3s8I4P2AiWZhCsU2hj6fpQdSlGRmoqLYaSyJVXVELqOGCXEJwYIY2TTSYJTziLHzfMZsVtDjuQ04odM9h3brceaGSFaEiKl11mjsqJLim4YefbinHSuef7yip//9KccHR5yVBS4VjPaTBo63l58w82m4P69U7Q2+Cns5bQpuVeVqJQ4Kyxd5UhZ8fZmy9i+5PEP3mNxcky/3bDuWp6+OKdQnvfvHXB6XDMvKiqjqVKkrhO+9wQTmM2hvhlQxtIsaobNklwndLNg0yW22wEfr+iMZdQV3htSLCA5tBXGc0gC4JZlpjQDuo0wJpHqaRi1IpSWbLQkjRcbxtTTdp4QDSufKWpLlwKzQqFNT+hbxmrG2o+opmZWGUwK+NWSnkhRzpjlku0QuLxYcdBE7pUNj2vLhRcbXWUgqcij+/dYLBrU0PH5OLC8uuRV8Bw1Nc1sLkV9sqRRoZP4a4YgieN9u6UymmKW2YRIbwqOTyx6boiXkHRJ1hUkDTmBDigsWWlJMI4wX5zx+OEnbC/+jnF7Sa8CReUYc+Lrr9/w9FdfcVQe8ZNHj1B/9ilvX33LZ7/6e66u3nDQvM9Pf/6XzA5OMaUFJd5/arfpuQNn7QsnNcl1mZLM/oFjZ9m4397tAb+7bVUJONu9/10z4u/WlPufVL/11Dvf9V8Db2gyFmCIIxmNmTbWZmK8KUT9pgGxrthtdBUxCABnnEhbFYWA/bI9IRlPZkCrAh8dbR/ISVNXlsIpMnFvlJwQpn1MCWMKqkXFg5NDigBsB7oY6UPmg+NTSh0gBzbR8Te/+ju+fPk1VJbsFgxxRk/Plb7g+m8/4yBHynLg7ONj/uTTf8FBccxXf/+3fPDwAacfzDn5vOLZb16QdGBx9h6P/vQvGIuIufdzKBcwbHD9Frd6ReUMH34Am6+f0b68oFqUdNpz43tu4hWLsee9xcfM752hy3s8/TKy5ed88MOfsTj5MSwirkgoHKQFpJHx6i3LZy3UiXKb8Wmgvp/RjabvHL4wLB7dB+Wmrv4o+140SUT8MgdgQE9ydiXzeNK3XIHdxZazhiz7MaU0OXn67jU+vGVWLnj99IKXLz7n45/d5+TJY0g1/x9777Ul2ZWf+f22OyZc+nIoAA2gvWM3RSONyDWUlpbEF5i7eQo9jS50ozeZC0lrDVvDYfc026DRAMpnZaULd8y2utjnRGYVCgCHI1Ik15y1oiKzMiJORJxtv/9n8HtIeQgqYMM1TXcxJFUfodVhZkogbtgDUjJdLJhlDGQAPW7WVCLuevItJfTbAZsb4sBN4Mg/tePNzdO4oRpDvowx/7BS0ZgDVtRQzwd2oX1yZHeJjC6JW99tRpvk6xiYAJdyMZphVNUMRcnbIJeMu/CuQEILfQNufelHvQ13jT/LNwbS24Pm8IZSyHPOiP6Si/8xBcIgl4eEThb6Z4TmBZv1FbLaZ37yPZI4ICZ5i9sbhpsGKQmCXSG/yKZl+exS0EHuJ8PXlfywGU75YV4IdAFa1ztnUSMFodkS1lck1xCTQnpPnTyGhrW/IjpFkxZsgsMJxUxoJkXNqU10W8dczUgYggsoqZFK5KwX1zOfTfC9JQTP++++h/SeRaFQyTOZVOzfOaTzltV6QzmdobRhebUhhMS8mnL96pyqMNy/c8Ly+py0VzM72ePsYkm7XWMmktBBv14jhML6BLrKEmki0TmEyuSQoAp0NUHHREyObhKZvn/Ah03iaL9j5s7BK1gHTL/g1dmGPhrWztOfvuL+h5r5gUZvBeh9sAXtJmJFwarXfPzknF89eUGnSl61HZe2QUwq2uhonQet+YOf/Ig//9Of8u7+nAkZuNUi29zoYQ4jaFIUrF+85OnjR1yeX7FtOqxI2OCQKlGIPHFprdClgZjoui7PZQNRRUJmfqchuBCxI4r4AWiLKYLIlkhSy8GeKwfMpZDbV0g+L6MGaaQSkn64psZkywfnHSF4pJLEgRgzOtWONiVjr5FyCA/0Htc3dE3DZr2m2Wzprc0J2oOnuQuWEN0AIkJIik4ZupD39lEKUvBZzSEENnpEGtOdUgbbhneRpARRkpJHiJz6GsNoUwWIHBoYQ/bwQ4nd50gpkplCARkyLjAGrIwhSDEGbobXkfHNIFHlxu4hjvy5oW8LcVMs3H1LOYF3/F0IkCITrkIQu9cU4/csBCEpdpXglAhpHO9vgNabAsHQ1m6x7hIZWDVG7t4nIYfDoPK4LGQOshwZdeO6KxOFMoYxhhV+2fHVHnRlgUqRIkBPRlij91gCXRD0HnoXKftICipTJGWWFCYpMJMpviiZ1J7CZ4mbtjZ/ECGIwZOIbDYb+u0KozOCb3TeRG8dmKKgLmumU40qM/DnnNvJkjrd0HXdwCLIKKZ1ORraxQ60YVIbykKgRESKhCkNldFZJ11UBOFzmp8AoscGT3AuMySsGy5oHNJxJGU5yab5wSOdw8e0M8k1UhClRoZE0gFEgWs80eao5OQ8Sfjc0FPKKbNJohh9oWJOlEkps4aGFMxSG6TJ0qpCKoQRMJmAzDr4KCAksswuRryAZZN903xvs5eeDXTJY53PNFYfb1DeodEkqSi1IAhJ1/W5YY8MP6sxvUUZhVKK2Wx+I+1MGS2TYvDi27XG3AFvVnHsJu6RHuy5WQzt/OqGRj8mtr6ZxPKmJ8Db/DViiDv565tHFOOCy4EbOq1PQ6pvILiWMvUYFTk4kJRFzXzGoP2HJHrKsiAEg68s3ip8MJnxFQIuQcJjY8R129xWTEFZtUiTk0n39hb4lGidp+0a2t5incv+EmIwKyWihco+WWgkaSdf9Amm0wllPYEY2K7WtF3PrMvegg/u7u8SmczFBcvlir5riN6ji4KqMJAim82a1fKSRykyqWvuHh9x9+Qud+/eQypo7SFXqzM22w3BQ3AeGSMvnj+l0IG6SEzmBusCV5sVLlhaH/FS0vaDZ5qwRBdpmw7bWiAgpKZvOtbLDYKUgbmYTfOVzimzkOWxUlZoo/PsrHIKpikKpvszClOybnIIhySbk/bOMisqSiNRRiCMwJSGejIB63KwiZCU1YTKWqx16GFSTtHnNE0YmAhyYFkZtDRoXaB0ZlTlCUwhYiQGcAMLwqeIjT77JeoEOlIpzdzUWB2IydAGTbSR67Mzfv34Ef/3Jy85fvhd/uAb3+SHP/oO+rCi9x2d7Wlti04JGy06Zt+NxjvqqsYrw7JpCW3HdFaxmFV0rWOr9VDJGVOihnCSEBGD0e2O1zD08RBCjmhvLd46YspjQjIFXYD1esXlcoMHPnz3IYeLKdPSMDNzfK/YbAPOdayWV0zMDKNLlBoWHn1LrQ339hc4qdi8eMV8MqHv4fPPH1PtzXlw7w4H0znu4ozffvaMl69e8fDuCe8+uMP+dIKMFhkDhVYIrXIoiAxMleJkVhOUJghF2665XLU4BFEJXl0v+ezJ55jqCZUumJgsGRdSDN4aCaWgnhgmrsQIjY3ZW7ELjtZZDHlCVQqKSlM5iVBTelPhyKzmIeICkTJLNkmJMEX2gyJhBLi+5/TlK5yeocspVRVzVdi1mNCjU0EIlkDAhYB3HZUSvHNyRGwf8pn3rFZLrq6vOWlahFSEIeFXSo1SJpsHh+yNEmUgSI8oC4qyppiBmkIXPV2fvSMTArwjdGusrpDVFK0TupDUswV37r1Df93wwimuVlf0CVyQPHp6xl//7OdMTcWP/uQn/Nn/+K95/umn/B//2//Ofzj/mL7pePrkKft3Tzi6e2fwXYlDxfINZgNDDebWhk/c+vc/57hda339FV5/rdtEEvGFv379Of7pHgN3TipA5vXUtsN2YVAaBySBV2cvCL7nww++wf7eHiHk+UUrTYo+L5TTMI3uCtcFQmhsCFwsV1xebVG65Phoj4Up0QxeuFEggkChEWoC1RHy4B7dk0e8evGMPVnz4Xc+xLuWeH3FZFpCEDgvmO2fMOstViWCr5lNjqn3DimmBSfTCarZcHb6CaGVnH2+5PMnf0OhGj6dClJXE9p9vvP+R5S+5dnj31LNS+5/+BH1/nuktoemRzgBscvfVb8mdGtYHDG5/w3qQqMXlsePNrRXl3ihqd75kLXao6WhM3Mue43Qd0B2RNERUoGQJSoJjJoxLw+p9wvCDF7+7hek64Y7Dw027jO/N4dUkKuIESF8ll6hhpLcWOk3CNSOBRVvMU5HawYjBzBP5DEmBkffrNhuLhCsmIiCftOyPH/F+qyllg2oI6z3zA+OoBJEPAiHFDIXw+KwZRS3+oYUGaS91RZ2wFEMuL7H+YBQkrKq0Pq2xGjs6HHoc//0ALmvO27LosbbP2jQghjAOTK5RQ52SrvgPXHrgW8+cURvBwJKklmJ+QVXz0RGpEKWSGe3AzXI9MXNZRsf+5WD3m2gbgxXuIUu3n5/w4aV6G8AOjG2+szKBQaWVMCvXnL+/JesNxfs3/0m85OPboHT48Y+An4o2psM0CVQaZDh9V0OcSg0lZQMvNT8sUYCzfC2dQRSLrb4CF4kfO+5PD/j8vIVXbchigLZBfzqFc6e0aYl6u4+1X5FkuTAtOgzQWAcQNNwIzO0YnIk75mUBe+9/wCA1WrD3v4MFTyzFNFCIwsJqSfSI4wnypam22CmBTUFd45PONifo1Ok1ILtOhBlAuFItCTfYNtrXA+ub/I4LiVhBCSSR8gAIgzrhYFR7noqE5jMC47v7PGggUpsENsWtoG49Vwt13x85RCTBVFrlu0VV4/PKC8FDx8eMpnOEWbBJkheXFken13x6emSp1eOl801rRKsfI+wgbWzbF3P/ffe58Of/jHvPXzIUVnnPQ8BM4yTIqWhICFJ65aXz1/w/NkzLpdXdM4SK4MUCrwlBpvzdZwkDpZaOSAAUrqxYEoDA2oXCiAVypTIOFjX+BwymKTI/SNlLzhIg8VI7qw5KLEbmGa5kY5WXimMaZ9ZCSYG1qeAQckyKhBDttLpG1rb024attsN7WZL13X43u7sV4AbmyeZFWRKlLvuv5NcinEPPY4dtzu32pFPxHgTAuJbIKJxHEwxkw2GeeJGfprlxJnLNMh60zgkvbkyuxkRRontrl/fnOqN4ePWXn/AGW7wgZt58vbHe+vaLt0+z5esFkfG2y0wMc+Fw3c0ztRpHMZSBhVlxkVC+iIAd9sP9uuOrwTotMyJhFFHrOhvqkcypwaGlOiGlFVtBraTVMgoEaFjIg0I0EJiijJLH1XWuiulcLbH256u62hsy6SuWMympBjZbC1Od5iqZMYg8YsJjMlSSQTTekKhCoxs8NbuQLvoI52LLK3HO0sXeoKOGJ0ZNEZLgnMoYfAie+oplRF2KaGkHPTdAZLcvW/vPZ3tWZ9f41NObPR+YA2avDFKAy0ypBxyIKVEGzOY5mYpLEKgC7V73fGGHCrZQ2Mry5JgHaIoUHOJLx3JB4wYaao6I/wpElLMCj0ShYAoBGVR0zqP7Tp6N2y8u55e++xlhx+ek+VGubImCENVwBhDYNDeE7G2x9p+B4B5O6D/Q8MUY0P3EEdjSfl6AATcgGtqkES/pu0f2H1CiAwE3e5kQrx2G1/r9v1rP7+xdnrtMSK/rzBQi0epRQg51agjYK8Dzeqa4+NjqskMMURZK2UoqgnEbCIptUGrguBt9n8KAR1z9aOzHq9z6EiIYJ2na3oiibKOKKOphUSbEuUjG2thGJyT9QQh83eY8iCfacUpFx9Jmb3t8/fZ944QAhJFURR89tlnaK0yxXdIYxYJ6rJgsb+XFx/O41P2covB0fjAqXesrlbsLy5ZLOZM9gzT2QxTGKyN+E7hdcC2Pc12y/VqiSjmhBRZLldcb66xMYO8NsTBMFwQfcB2HdE6pIByoul7y8XFFU2zJRHYtk1OYbYeHwPrtqH1HaJQTEVJby2dtSAS15stsjRo2bFerwkhUJiK0hiUElwsVzRNy3K74dnpKalecKfzCFMMoFRAF5qqqthsNyilISWcc8DgEUka1m2JKHMVKvtI5gSoIAVmUiAShD7Q+3wdWtcTvUcUmdHAaOqqNakq8UHh2g6lJXtHB8yXSx6vVrz85d+i1g1HB1Pu7X+QaS5aEmX2l0OKIZE2jxW60KhCDv5ZkV6kLHkOlpg8MVikUih5k7AMafCK0oQERIE2mrIssrw+hLw5Z/BkM4rSlCilB8/EPs9GIWDv3eHB8SH78xnVwR6Lfo+Li3M26xWuhdJo5rMKU5YYwCjNdDqlaG32PnQ9tss+o65vubw4Q5YlcyPo+sSr6xXSGA5OTriz2EeT6LdrGtcjBBRVzfHJCUkopoXObEGl0CnSbyVr67Hbjn614vrVK3xcUVc1e7VhemePvaIGka+1CwEbIz5lVp0cUp7HlYIcgIoxXGNWV0wXx7S65Gq7Ja43eQEmb4oEQiqEVPjgM4FeaXyC5WrNym2ZLg6ZmpweneebiFLkzS3ZIDpET1VVHJ8cI5WgdxY3eF2+LhfL11mIvIAMJIQxJJV9b4Qx1OWEok4I5bDe0/s+y9xTIvQt2+01tqiZ6gKlEsVEMFkYZLVPaO7TN1uu2hWN66mqkhgS/+k3v6N3nt8+e8rieA+7XtP3nj/64z/m7rsf8PHHvybpxB//qz9l/+AQ7132N/laedt/GQT2Lwds+/sfQkjSICUutKH1PZcXV3z26e8xSvDjH32POyeHFEbS9w4tczBQSuCTwbpsyFHqYY2aBCpK3OBDM1soks5rmWqS0yRjBEJm1gsPIBBOAjPE9F3KD1ri0R2UDBwfH3D3myekqzOESHzyyef8/Ge/4sLA+9//U95955t0q579xSEPPvou9dEBd+/UtKtH/OLn/ye/+tUv+O3HT5hOjpnqnqa7RPhjFpM73Nk/5MhdcPnyOfV7J0zjXbjYgFlAWWCVxa0+xVjPpD5i8tE3YP8D0BXYBi098/IIPd/QbDs++dnPORf7lA+/y3/7lz9gXh1CKSFNSWmKxSNpUWmDFD1mViEXC8qjGXe8zyK9oiamCjOZA/oNZCBmaC4NTIM0bnkGmakYpTMMGyOPFAGJHVaWWUokpEeqJieMc0CMM/YPS75jFHsHNqdIzjS6nCDh4miFAAAgAElEQVRkAXiM3IcyZIalmEModyDJTkY7FkuJg7Ji/GPegYXksSEXz03S5Hjat+2w/nkf41rxHyNoIUvwR1Azy5GzJxY5FODrRq68OM+yOSJ+UChlA/rhs4xoX7y5lsPqkrd5T371cauxvPb71zx891Hi0M4jImXw2l6v+OzXH/PZxz8n0vHt8g4nt4h/WVI2nHPYiWexfULgUSJkIDCM5BAFRlCQ6JVCYIijX2MiS4SDy+wsZTBSE4BGWE6bK67CFq8Sdrvl+W8eY6/OEPaMXrdU7h5FmuMaS9/bzO0RHiGzaX4kZBasiBmbVxKXPPNJyfHJEcoURPkS1OC3JcAn8K6l3Xb0weJShM6x3rYc7J2AlAidmOzVqBRJtsdMCnSpWewt8AO5pDCGGPoMxEk/gJEZik34PFiLQKInpR6BY6IChesRyw3+fEXqOkQTIRgSBasQeITks8IQpMCHgBWaj+7e5cMffJ93vv0jnj054ze/e8ynT894dHrJk5fXnK3XrLyjFRJrBE3UKF3QeEnSc771zh/wnZ/+BQfH90fUZTSGyuDZQLdPMXF9dcmjJ094dnrKersdLI0Uydu8Dgr5JuJg268EiSzlTTvuVQ6r3IFYt6yYRvnr6ANHjAiR11l5rkwkkV9nlLIG7wl+xBYUKUS6QZoqVSbcCCmyHHQonDvX0zUtTbuhbTusd7RdSz+GV7Ytwd546N/YOr3Rp9JN7x0ZtyM49ub++c3+/frfXh/jbvbPt/beI+48ssSG59wYa4i37815u9Lgxm/u9plefy9fJRF9E9B7+2NeJ/d88Ww3zxGDh//NeDb46stMaBgVf2I4eRrfxPCzj+HmOx9ef2fPlTJr86uOrwTo3sZc2h0yJ6iMYQDJR2ISOCyhc8QE15vNMDCUr4E9ZvAwM8qgSokIEZ8ihclSLRET9D3SgY+WdXvFVmWaJGTAL0hJq2xmtxRlXswYw3Q+x+gi0347h3M93nWE2Octd4rYNrN4pDB0NmJd3vhWkwn1tGY6qZBGs1o2mYIoFaoqic5hO8v1tsVay6ZtdhTXbJpboQcj8aQkQmlEUVLN5kRU9o03OgM95E3eCM5JKYfBIZtGhpC9AcKQilWWJUZpfG9RQlOXJVLrzHhxg0l/yCmjMWVWnZKaUmZ2XyEEE6WYlhU+RHwkS/OCp7eB3jmcj/gQSMFDjOi6zK8V8/URMWTgcWgTq9Uqb1YZWG9DZxBBgIj4FEBm0E8ouZOkjvdGZYAxDQadOWdieLwQN9HNY7e5NXh8Vccbf1ZG3aqyfRHIG39/M6AipYCPgaXraZuWs/MryqqiqGrKqmKxt2A6n6Ol2lVOpBrYK9GTYqQgS16NdtkORCtCCCzXawgdPgSa5YqiLKmnEwpTUCrJxGi2XYdznjZpgh8+l0/4YImDSb1EMJ1OST6wWm4QRLzPsjDvI8SOQmefBIFAS0lVlCRTsJjN2Z8t2Nvbo2m3bJbXtF32ZhRDtbHZbllebpjNauYHBZNFxWw2Y3++h15MSF7gredgb85iscipVSGy7Vsurxtam2htBiZFEvm7ShmEUElgtML5nOy6WS2z15eBvm/xPuB04Gq9wceQJzglcWHC1lqarsfajkldYc8TSogMNPpA314gEMxnM+pSY4Pj8nrF0/Nf8je//Yz947ssDo+Yz+ccHuxxfLhPSgHnA0kohFD4kHDBEwfpuB+MY10M9MHReot2kGxOyyyGZGYtPKK1+OhxzpFiQEadDWk7S99lL0KpFFIodCnAOxAKWZZoa4iNxXcdKYYcGlNVqLJCKL1bSIcYaFuX2VguL0Jm8wmp0nSu43K95qoNyFhjNldU08mwgcseG1IMHhlCElJEAMqUVGWV2RfaUJkCrSI+I+wYo9FFgdYFQmaWc9/1LK9X4AOb1Yo7J8fsHyy4owvqesbVy0tWqzUkh3hwBy0lwedEX+ct06pi1QWcSezPZ4jasFpe8uLVS9x0wmxeIyuDlZqLbUdxsaJSAkJACUVlJEVdsXcosa6HYJFCUhYSVSrM0T7FquWi7ZgbxaJQbNqAcD1bu+GCjsLPWdQl1aQAlQNhOu9xIQeA9H1PCBVSagpToJVGpNzWldZUZUmQJgPQIdJ7R3QZlBYif+suBKT0hIHGoAtNWVcsLy9oQ0IfzplXOdBGa5Hl1oXeySq01hiTb/P5nPv376O0Zu/gkOlshgsRbTqEcySfWb4+Zm2UqiqiiARlQGlMWSGNJyS3KxbllULeeBMD0fUQLWUF04Vh6gtED/PDOYd3j3ixumR9dUUqK+qiot1seHp6ztlmTVQBv93SrxqSfMUnj5+SpEKbxA//4HscHOyh1ABav8HQGOWlg8DkXyxo9o9zZJZGSJ7eOtptz3bTE3xmJC+vr5lPKkKI/Pa3H9NuN9y7c4d79+7DUPW2QdA5yWyiBn9dKE2RAf00eKMrjVns7SrU+axZReE3lrDxmEmBqhWIAj094egbhhQfINwScBAbrq88r16c8tmz51z1PT/+83/FH/03/wPvnrzP+vSCaEr2v/V9hFYIecXqfMUfLn7COx/c5xf/4bdoW/D+4ZSPHhzz8ccrPv5knUOJfMf73/6AybffpbeG7eUlupS0fUu7fcnV8wvq4NBhw3J7RSoaJodzZscz7rzzPg8ePuS3zx6zXgfmszkP3v0ITo7Q84KTxRySIySDixLkUNZRifJgQSnfh7qEScn0/Tl+veTly3P2Tx4gqgkjKpGX94PPM5nxSBqJAgM74dZGSzAwnnc9ZvRaGh4kJGU9oSxyGjRMOagV+9zH+zNkcUE9O0IWdwZpkkKJKUplTzyRFKDY+QQxJLKHuNuMpLDbJeUihBKUdY0sdIYUlfx6wtU/g+PNcAX4xwPoYgxYmwtZ+Xx5X3fj2/f150+k7OWLQGiJEiOuldk/KeRQMgSgs/olOzy/cfX+Th/1TXDu9c3nFyG78Rwxr4NCQOiCJLNElaRIPrG5WnP24oL1umFvb0JdzEGNsu9br7xDK3KH0QRMWsLmGpoGrpaQAixqxKyCvQUVhiA0IhVEIZFaDzZ3w/uKPgf/RTg7e86jZ4+4uL7k+vqSq+eXrF6eY7ots8G81NiI9BElNaowBCJBZkZNFBGfV+q5D0uycT6gioKkMgqvjQGR7VeikCSfZZ9CSPro8cSsTDAlEUnrPGeXl+ADGqi0IkiF0YbeOaRUVFWNkgWdGBJNBXhGUCmQ8KTkIY1yTo/AUUtBajq66yXr8yuakJhYScKwDobTYLleHNDKPVbCkIKkro45+cMf8+7/9D8Tt5Injzb8P8+u+f2jc86XHddtolUzUqXwydH6DqckQhvq2YRvfe+7/Pd/8We8++H7AxknXxI9jo3jgBgh9Y7L6yvOLs/ZNC0BASYTP3rrB4Aj+7vnvbbO+zWZBoujmyC524GFZC4XDJ76I4nkxg7iphXHlAM+RrLH6+DPaDkQ8cHig8ckSe99xib6LEt1vaVtG9qmoWm2NE2DdXk/H7hRko3klXHPfVvzPsrSU8rKiZQSSsov7JvfJMu8eYxkmfHn1/3Tbn4e779MxTae683XHP9vJHx92fE2VdybAOLtx70JBN4Gxd7299eut7j5LLdf73WP1Ne/qxgzQ06orKD62iHyNph5i6T0VcdXA3TB51u6QZl3HmmJW/eKpPJLiWEi9ynQrrdoJfFlyMb6g0FsUIqyTCjyBayqCi/ZpVNqIVEJpMtpHM57fAqZYm8yiykCry6ukEVJlNAnhwzQJs+srCiVYWoMwhU4pwmxgJTDK3rncTaw3K6zub3PaZYh5YpFCAGMAlOw3TR021X2DfOerm1xPiKFRpvprsFordG6RBcFhdIkDUEJijKhTIEuS1zndhRWFyOiMLsOmKsDtydEwWq1Irqc5IcpMnA1GJqjoJ6UeO9z+rbNlF0bMwMsCbCdg5Qtq1TKbjJGKryU+JioZUXvHZ0MdEpgrccKT0DiUqJ3lpT1aUjIMc4pyzBSygbpuXoAI4VVpLzkTGkIfRh+HxrKUHUdGuqgKR/taCX5YePjv2wh9DYE/G2LpdGnY0Tzx/vhDLkDKDWEMN2g55CTgqQ0BO9Yri1sLUKuUVozuVgync843D/AGJNZmUqiFCihUXpI+PEeOYA7WeqjmBR19vUQgtb22d+g6/CdRUhJIcCUFcEkeiOIA6jVW4vt+wxwCIFWmlIX9C6bQCupKHQ5DIS5n80Xc3zf0vcOQWJWlejCMJ9PmU0qlEgczBcczWb0fct2s6FpNrjekkJgagqEFGw3WzbNJRfGMKn3mE+OKfWM2WTKyckxh0d7bPsVLoZMm4+RTdOyafrMLhU6+z8Ilfu80nkD2FtSCvS2BSJlWRBFAhQxCZreMtmZ/luMK3J7lIqmtyhdUNUKU5RUdd5Q2NoSXKSoDEcnBwQROb3ecnl6zunZcx6dnlPUE8qy4p37d3nv4UNm0xpnO/rOIkSBQONd9rIMgsHnMeET2BDprUPLRCEZJN2CQMSFgIuBmAJSJBj7ZoSYspwgpICPHusDQhRYt2W5XdN2lhg1Kgk0IjOXSXgJbuzXzhK6noDF9g3dRjFXAr+YI0xNUWqiV7B1RBdoNtdIXQOHiJRTWaUQOWlJCSI6MzGkylVYIVFySCo2uVqfx6eYpdKFyT6UqsCUFfVshtCG88srHn+2ZDF/ynsfvMe9+3c5Or5PKWsuXp7SdVuatqU1Gtl7YopUVUWFYz8KCFti8EyKKfXRIZu+4+zlKa3d4+DkCBslv/38Cf/xb39FpTQPH9zjvXcecHywQKFIUiOEQxColMQkT9+1zPQRYj5BFz1KJx6JyHKzRVcVSgvWVx2pXWFUopxo9u7M0OUEmwLrtmX56hRvK6TwHC9mqMkMo3QuRAy+dcEHHDFLWWTC9T3BZpPjRKLzntY5VJkBUQcYKalnU3S5IpL9VGezKYQhJbjNhu3Ziyf7vvqUE7yESMz2ZuiyoCgryqokdP1uUTYu0FIS2JjYOkeMgW1IeBmph4VwkgpUTuIS0Q/MPcmkLpFIFA6lI1UlmEw1aLB7U47u3+Wk2bKMkeVqiwswNxWnl9cs0pxiYvB94PzVBdfrLb0P7B3s8dE3H7I+f4E/3ENVswF3SLv54Na0MPycoZ7/evx9j2HGC4noI+dnFzx98oK9xQGH+wf8+Ic/YlKXbDZbfv/Jp2glOdg7zOm0Iqe3n51tWG0C7iCx3X6ORrGYPmC7TmhTs388w0yyh1KIkEJCyZirwilvABvRo3Rm4eooqJIGUSJkTVy+ZPPJrzl79YxVs8FgmLYVH937Jj/9kz/l3Y+OgRU6bAmhQ9VXXC+v+PSTn/Hs2X/i+sVLXnzyjO58wwfH91jcfZ+9Cpr2JT/7zV/xZLPHD354wp/94AHCGn79m9/x+dNrVKypg2JfJea65vjBN2hsx+knvyHKCz786bep5gf4OqJnksP9E+b6mHvv/5D6pz/merlldb3GmQXF1JCwhFFOFlvsdkt7vgKt2Ns7AgwuRTZ9S6pmzI+O8hg8UtOSYJT3Mfh+fhnxbNdPEpCGwLGUbt0Y0jvTjSIDA1IgKDH1CabaA2UQsRipFSBygBQESH5ciOUE+sHgO4k8pqWhUDSabQsx9FYlKVS5k1GOJKd/ziDd7Y3s+PO4YR/VHv9Qx7g3YmDRrddLtM5FmjQUzr8uZCOJzO4JMUslFYPixgf6pqddbjnYO2A6mWePQ3IC/G5z+yXt8OsP8drda/+dEqOWNEVPv7zk4uIVUikO7tynnC/yPJAynqbRHB/cYVH/gNlezcHBHUhq0K/mlx0L0SO7NBEo4gaxeUz65Jf405d0yysikeJ4n+qD9xD73yRRoZjhCNio0dKQpCEgKIAiZEVB2Kw4f/w5F8+e0a/XNFeXXDx7QhU0IvjsPS18DmhCEGLC+UAUiSgcUXiSiLlMKgQSiU+J6C3VtGQ6n+XilIDZfI4SOYhOBU+3iQQBhdEkJ3HeUpsZRV0QbML7yMvzNc16QyFgMa3zvp0VvXtORGJ7jzEFtgts235gGuXiQF47ADKD6jG7MeUsIGvRKVIYQzWbY5ImNpLrbcvjzQX/128+5ZyKz71mKwrq6YS6V2x+9VvOtOFXv/wNv/vd53z22Uu2DdhQ0llBHOxilJIQLGUZKGRgbzHjL//i+/wvf/kDjqsekQwxDWyz26PJAKYsr6+5uL7merOlC44ksx1V8DmwLoqIJM8/Sulc7E/gncMPrLiR0BSHexJIsrWU1CKHCI5rFD92rMxk7dptBu589u4bEz1HRlVIOVgzq1ccwXlssKyXK1ara9ptfn5wHu9zOqsPdkdakcoMku1b8HdKu7CKXAjOBBilBssWcYMkpDeAsS9ToP1dj3EcfBvR5W2PfZuP51e99n/Oe3jbc28Tyr7sPb353jIT8O1A4+uvMaypUsI7v+uvIgSkvvGq27UBIXktCPQNBeHbPsebx1cCdGJXtnsdWbYh0nWWzmikUNnUVpq82B/ekEkJr9coKVA6J1/GyC4t1A8dSA+MCO8CYNFNy6Su0VoT+g7hI2pYyCgtkbrAkxkuTdMhfQCt6bzDhY5N31E3DVNdMHVQRBAyIHVOdjSlRvqI1B4bJboUmDjoibWi84FNt8QFjyonbJqOpmkyI2a4WFJmSexssf8aGpw9gPKG3YdE4/p8odKQrDVIOl0MOQU0CHzIhpEhgpJph+QqKYlSo4xADh4kPgZiitk7Lr0uEZVSYqTByGLXGLaRAUjzWDILjpGd5x1a51RYYRJKaiqt8FFnL60E674jDBTPkDITxMdA9Ln6djsVRe6AtrzWFAikfIM+K1+ftGOIjLRbNaDY4zPGZM2xo30dUn+7occYQcRd+x2NKW+GuBvgT6ms2Y8jeDdsHJOQGF0RlEHpNNCcwYXI9WrLctNweb2iKEqq0lAWBqM1ZkhCKrSmUDnNNbNfsqGwVpp2oDofHxzS91ni3TmbPQcJpJhBnaqYIJVBJPBFSWeKXaqrUoq+bZFCsFjMmU4ndF2HtZa6rplNalQKrF1PjJ5CGSbzCXU9YTKZUFUVfd8jZaQsNJNqwf5sStvMWF1fs95sMbqmLAyirNh2K65XSy7OVxhxRWlmnByf8OGH7zGb79HHFqU1s/mCeh2QjR3GM0EMCZ8CUmZPpCgi3gtKU6CFGlKIezo3pnTlazOdTjBljdYqM8iEwhQV3kek0jgfMeWE2XyOsw5JDrGw1tO2G1rryKICQVHXzPckNgqatufqes1qvWa1WrG3WKBFlnY7l7+r4PMkGFMOVREq999RDuljojKGGCyd88N41GdJ88CeS94SZSIlhSpKVFEShcB6h3UJlywxOlRRUE6n1KrGO4sWCRkjIZErqAOTT8a4A69D7+j7FqMUpdF07RavBWZWUZsZ2gf61Zbt6hJT6uwNOowtKJ0FUTJPIASDD5Gut8iUAZ00gEFCSqRSlGVFURYopQbZdJYNaGVIumTd9Jy+uuT8es17VxvefecBdxd77O3vs7x2SKEoTEUMLSKMCc6BojRUVUHbWUTylKVGL2Y5SqNQmV06rTk7W/Pi7Dyb7EpDExLvWc/x/pyDWUVVGKLdQMqpsUVKpOCohUbUBaaYc29vQrvqERK6ZoNSsLaRZ88SulS8Y+7To+hD5Gq95tXZKwgVs2lFc7cjzCNiMK9WMrMgpch+UYXWmMkEJQXBRaqqwMWwS3BOQhNFHsOt99m7ROZQnFxpzPOElBCCyyEsKnswWmsz4J/iTppvihxy4ZOnsx2tbbHOEnzIIJ0SLDdrwvNTXAostz3eVOyZmr29CV6I7JMpslw6xYiIAmUMpZBZnt9sabdLQrCYsqSoSmZ7C47vP+Cs6XFDuJGRBkKi6SxBRGZFwU9+8hMevPseZxfnaC347jc/oBSJbrOklJogEkplJu1uLAcYPuPNEvOf8/b+/79jhDeVEBSmoJ5MmM/nLOYLyrJEScFsWiOIuLZFScmDB+8wmUzzRjcKSJFgHc3Wcfr8HN/2TMsNlxcdWk356FsfcvLOSZY2+gYlHbNphRYVOKhKha4reinxEmToIWxAbiAsubq+4PSqoYk1B9/6Jh88eMir33zKVhTMDo4531xS6gYXNqROE5ZPOHv2hH//V/+O3/3qZ7Sv1rAS3J/tMbubaJZX/LtPPuNXz68I08ij9Sn+0ZbiFwfcfbnl8fOXPHt+zlSU/OCdb/CdB99gUhUUdw4w/ZYHry54tbnmenXB1ccds/WS/QcnPJz/OdVGoQ+P2axXtKuG48khE12B61Gyo9aBQN4stSlyaT2VmLAnJljrePToMaevzvjWt79NPTkhplyEGq22JDkR77VQlHHFD4zc0gGGuAFOknjzgbu/5bkrC9hi8mg9pLOqgZMiBrCNkS/iSakjJY0UAaH00BfzoUZJD9lr+OZ0gy/ezUKLsTD6L+W4vaFzzu2YH/+QAJ0QmUW32Ww4PT1lvV5zdHREVVVoXXwtQDems5uyQItIZxvOLs+4uLhEK8P+4gAhNJGxTUDeEvqb1vT3Gn6/5kkjykzA9z1PHn3Op59+ynQ24/v1lGq+yO/dW4TQTCYLju88pG81KI8PkmEiHCFlokhkEW9ueaSAiC2sLuDF58Rnz1GbDSI53KoipTX1TCHmh6RpxDAHWSJHgkKM9E2HaTqS8yxfnrJ59Bh5vaHqLLptEU3LZu1plld4uyROHPfu1SyI2AhNn4Nf8scNOfxICohikLll25nSFEyqGm9D9odDZRC1zwnQq7Wnt54yShobaDoLqacsNVeXK0DiOkffdmiRaBtPcB3b7YZElmpa67O9ShA46ymrKu/ThCDGAWQXWeoqk0ZEg6IYrJw0QRuuPHzWtoiLJS+uzvj81Ut+dbZiZQIvUsUy9JRtJIqeT69PuUqCD++/z8FWcd3VyKXFeUXtBdYHXPKE0GNUQmuB0XDnYM4Pv/sR33r3IUoM1ktCMrKKQwhoqUkkbNvz9PSU0/NXLLcbWmfxStIHT9I5MMd7j5Y5EiV7z2UMwjmHc+6m/yS5q3GMIEwkZQZdzBJU7z3RB+JYwADSAJBJKW4sO0JWovmYPYRb27BZN3TNBu89ITjabUvTbAnOZQJUzLFOI+tMKYVWmQyVxqTXlJl0IwCXg5hGyaV87Z6xmDDgLV9mDzWyCEfw7ja7bnzMm6DWVyorbz0P2KXN3mAnX83e+zJA76swgC9Tx+Vp8otEnjeBw3zJ3z5X5fOO72MEc9MOJBVKv75SHb/fW7e3fe9vex9vO74SoBtfbKQn5sacN9yd9ViX0CLQ6UCSHqHFQNdSCC2oqglKZGZcURQgVTa3d7nCEX1u+AyTnbOBTWrwzlFqTetaBJEUc4JhpQzFIIlNfaA2eeOpkNSmzFWQziPchmAMbRJ4KZAqkhwUQVNUucKXhKSczghRoFMGwEKKdK5j07Y0bcvF9VNMUVKWNcYUlGVJWRQ7M3VvPVrnzhljGuKSIRDok6NNHk/KhpYekk+IMTTldieJgRgHA8nBKypEKMoaI4AoCK7PQRhCkVLAOodbLocXi6BG00K5u051lU00vc8SWq88LmYz4YRAqMx+K5AoXRBDZmCEIeRAVQWOPChaH1DW0vZZ8pd1+G/4ypEZOqMJ4pctXnaVyIFi/SZ9dfzdDwknbw4a4/lG480vSlSHwS4NKXRJ5gryri+Mi5EMMoqUiCJRKIUqNCImrHOZJaMUIpDliinbNXsXsM6zuVhl+bBRaJ1ly1JBoRRaaw4Xe0yqiqqqkcpkFpkp0cFncEwkqtJQGMU01QTn6V2Pcx7rI0rmz5FISBEojaQ0xU4SvdlsKQvNwd6MxWKPtmvp2o7FYs7h4T5GJNarGdvtBimzb6HYlRwjh/v7mTm2bfHBYrSiKguqk2P2ZnPa1jGZVFRzjUsLpssZF+crtqtI33VcXVwDgtlsxqYtkcYgdKb2m6JAa58DLyKkOLa5zBzIRqgRXRk0FX6g1rvgd34PKYmcljsYoXbaEYPDdo4YBTFlMGS7alivN0SXfcOaTcv1+pp6pkELnrx4hcNkHy5tSNKThKBte168OOPq4nLXzrLcQ2F7Sy8jvsiFBSkVUmbfR6k0QqldtHjm8wqUVBlcEwIRY04hHvqOSxmMcd7hQmYaFkpQGIgWGhvYti3ORTQwKQqMzuEgSimU1JnFJhVCFtQiIoJlr55QSknfbHFKEAs5+B5EJAHvWrxroShI3ADiEfBJkLRBKE/vE03bUaoBHSbL8bUyWZJvVC7AKImpKkRKWOeJCMp6xnS+z3rb8fL8ksZ5Li+v+e5777E3LXOilZSYoiDFAG1L1zVY2xGiRsrEpM4gW/ItpRK8895DopHU+wuE1mzbCYuDQxCKLsHjlxdsGsu9430+eu8+h/OaGARCREqtqOsa70W2S5BQlCXv3TlCxQIXBE+fN7nimRLr1Ybf/f5TVm7F/t0H1NN73L13H9GvOZwJZvUEo7I/zdg2pQARE0YrCiHQTlKrmroy2DbR+Z4+hBzSQKK3ltZKbKzRQONcZlHqDFh3rkf4DB4aLYDBo02EnAyGITGAxjHkVGzyAsg7h3N2WHR6nO2xzrLtWprLS7oQsFHhxIpUTrhjFX0ZsCFlya3KsEDfdyjRI4xGJIXrWtaX13Qk6r1JZgerkoP9Ex488FgPL58+53q14WBSIXWkKHL1/cG9u/z0Jz/m6ekL7t054Nvf/IAUe559/nvufkOzd/IuSZjsYS6GEXkcrxki6v/r8V90CARGGpSEe3fucjA/YrPa8vjRI5bLKx7cv8e9O8d0XUdZFENhVHB5sSalxNHJlPneBBkVqRE0ckldaSoREGLC8rzj5YtfI8st073IyeEhoroPfuTE92ixBVkhMWhaEi8Q4hWeK6oPDnjw4ffZdoJSS5rmEjsrOLjzAfN3PiJxjVJXNJB97oSkLiYclgtmvmR9el7+2E4AACAASURBVMWd4j7/3ff/hO/98BscHx3xV//+P/LZLx+zJHK0v8CUBSGWnNz9Ht/76F/jrre0y0sMPW275uLpKdMnMFlogllSvVtz+NH7zO+8z/T4hKQkfXFN+WCOmE2xT15iX7aYj+4RX23oHv2OprwiPABzvIecHLFCsJQKVRwQ4pyL84/55LNf4L0mxT/C2WlOttfZ5VTswLlbQJsERCThyH0i7a7q7m5g2kWX/Y6ULpGmuLn+koHZbSmKEWnTeN8QQkdZDskBJBItMW1w8QrhPaXcBzHLa0vGjY3YMQTE4IuX2BH3CDGDiDcskn/eAN2bG8mvkln9f39kqxXnetpuS0yesioGosPNZvfrDoEkxsRydcHF9TmNbWiaDXU9pZ7OmVYL6sEiaKiQkAaQLh+3zN6+5kxf/Wne8kuCaB3bzYbl1RXeOZrtlsNhHiBlRpCcTanafVq/wvotk5QLpa9j0jHvP0hZFZAibDvi2ZLNixXx6TVVs2WCJ9YburbDhYj54fcRhSaZhEkVdC3hvOHy0QvOn51xeXqOTLDZLFlfXKNWW9LVFe75S2Tb0HWWy25LE1pCgJnw+FKiJwWmqPNqO6Rs1zN4QCvyHJnIXmLRBdptm8P8+hw6lqIkeUHyiqZp6fotZl1gfU/ne1y3JcaG7bZDiQKSQAtDFIF+20PwWCvQRYHQKlvlBJXJIigkJSFkZZsXjjQQKpIISFHlm3QkCoIpuBSSv12uePz0jO2zz7lcPuf8+pzL6warBNcCLjpPKrZ4abn3cJ/5Ox/yb/7t/8rjj5/zs5/9NX/9Nz/n6dNn+GZFTBu6bo0qEtOqIMnI8fEd/vAP/oxvf/SnaHEvsyQpgMwqTikNnm0J33qev3zJ7z/7nNOzV2y6niAlIQp651GDh1wKeS8cQiQltwOlvAsEn6XHYmABv40V1nbbvOa6DdDFmNeVpJ2tE5BDAYLD9j1d12O9wwXPcrNktVxju/YGS2GwiBixNAGv+cGJcU99U4wZx95Mxsl7wCGsdGj9g43krbHptgrtzfHsq8CwN///y1hlXweyvQ3MexuD7MsYeV8GFv7djhzS8vq5htsuOfrt7zM/Vr72d7gZcnbs6aGdydvA6Guf6YtzxxhSksHxL8T2vHZ8rQfdmCiSXzwzWVJ0xJiNtEOA3oacGKccSWW2SDH4GYjB5V8XOf1Qa03fuexFp7KHGikgUw5liN7SdhanPZihCuiH9FWd8kbRKBKRYoiwLXRJUZbEAF3TZJRdKRg2PyE6XHC43tEGR0JhfZad+SDwKcvyfIr0rqNpO/reIpWkrmvquh427xIhxf/L3nv+SJadaX6/464Jl7ZMlmnHbjbJ5QyH5BiOZmYXgrTCSisI0EKA/kl9FvRhdz/sLoYas+Q0OWyaNtXdZbMqbbhrjtOH90ZkVrHY5IAzq12AF0hUVmTEjYh7zz33vM/7GHJM9G03mMmXWCtXiVF524gyyVJVJW30hL6/MpcctMpKiyx26z+X40AtTsQYSMHjYyLbAoPGx8HLyxk0Du87+r4XLfqGeZcF8U+D76szDq0RI0sFLjoqrQh1oup7mr5Hx0w0Gh8SSQvDLmeFzokcAkqJpMtqMV9P7gqsjRL/dzVxDI+bIRxjY6D50gC/NlG8iiJf7x5oPfhjDY9dp+de359+9QLZXGxEVBTTZLJ+6T23Lhyh3x5vY5Sc61FJjomma2k78aJqmo6m60gpo60lK00AjKvQVpG0JsTBIy4ElAKrDW3bUZcVZVFQlAWj8YjpaIw2jqquiQm0UThX4IBUBMpUDN/L0rQ9TedZrxv6riPnJEARhpwNB3tTQAp6YyJWZ4yNGJ23shRrDaPRSLyz0EOMu0xO85MTqrpgOqoI3tD7ltCs0dpQFg6jCpTJBN8RdaSwjtFoTOw97Vo6L1VZUtWVJGoOISpd3w2LdS02HlEWexsD1iStMObzBeMo11bKg3Grtigl7NDgE4vFkhwio/GI5BNdux6AiA4VMqcvXmC0RSVNYQuRfGfN7nSHTrUyH5UVKRtyLzJVV5aU9QjfNgKcrNf4IfxkPNlhNJqQU0+lMn0p/hLaFSil0cqidYFWCh86TM7iI1g4ijJhmh4f4VL3FFY8vbo+sO4CzRCykohUZUHoW0z2aGNx1ZiRKnAESleQYkRlLfJgJfLgUltqV1AUFZ1WZN/gyISuRwuKKPKq1KEVOKMgS+CDGgAeYYpKBzoODCq0IURPH5R41GiDsQZjhBHhY6APAR/8NujCKk1RlKCthI8YiytKQpdZrnvggpFxvHl0QA4dy+WSxhXYLNT9kCIxBmFwZblPjKoCoyzEiNWJorIURSJkj8pC/U8YXKpwruLF5ZL5ak0XAvdv7rFbGcpZjbKWEHqssWgjhWLUUKnEbl1QjqY4FXny9OkQrhM5Pj5mERe8P5nx1W/eYWfnDo92ayrdsjurmU52sKYQyXnI4ivoe7l/GUMMQZLLC0v2VuZwdZXyt+5a1kaR8wxtzTZYqKgqiqIkpUjyHmMksCPnJA2MgTGnjSblRN/3xJyoawm3sHojMUuQo5zHrqFdr9FKvEgDkI2VEIy+JeZMQg9BGAZnDSpHmnWDYo2rpGlABN8GglIYCnS2aAzT6Q53lKUPmcXZJU4bUrPExx5tPKUzGBVxznB+fsZ6/oLUXHB+cQnFiD8odxjvHqFKaZaZgU2xjdDbbr9jz/02W0zCKFHKUBeG7COPHj3kRz/6AD3I2A/3d/nGN74BOROCjKO94b4SNVBmdFYc3D5gurPHztRgCzGZ//zBM04+XzCuYDKbMjvcwzoNPgAObEKZXtjJXc/p45/D8lMObmTc3ojRaIZKI1Q1xmbD+dk5sd6l3t9HKdFZrZdrzi8uqNWIcWG5+847/Evzz3lvx/GB+TGPfnrG8aPnvPH2bVzZcNp69u++zbvvvsu0yvRnD9nbvcnenTvsHr0Fi4blZx/xg+//Wz784G8Y6cgbN/bYnY35wecfc14XvLPM3L4TKKbnrH2PzUu+8813OX/0jEc/e8rs8F2KyRjIjN48pIw9ftyhbEYT6BXUFkprySET+8i9O3e5e++r7O4dsaEQKRUAD9mhKF8+eUqAhqwk/EFf8dQQ8EIWXjEF1qsFTdNji5LxdEZZjZCAhiEgxIgXoY+ewpRoW2JsFjkjkHMkJ2Eqtv0lhAhuTVFXAz4j4NymntkkH6Yoygpt5Ptopa+UD1wHsf7bBOquF3bX157OucHS5tfyG37LTVEUBYeHhxweHkIe/KzyFQvjV3xy+RlUAY8ffMaPf/J3FLXhD777bb767nuEmKmKHRQWiVKAGAClMFbWbr85wPobztOveZpSirKqqKoKBTTLFd1iSTnZAWMhgCod1c4eNWsqdpgeHJGzJXUBXdqtR9mGT2dSIreRtGq5/Pw5Jx8/o/vFZ1SLBTfHjumNKTZGcvWUVFboJkJ1QbfMzI9XfPKzB/zdX/0dn3zyEJ80dVkzcobD6YypHZPO5oSLC4oYCF1LMhCLEu86lrFn0axZd7K+UkqjswQU6JixiKzU5yznUyvWy9U2+b1rPVY7lDIYXZOixfeB1vcEH0hK1m9+3bNcNlTFhDQEwBVDkGLTdBROURQVbd+hqFBcsf43YycmT2ULclDD3yXYTWtZb2oK+gC2qqCccqocx6uO09MF54sV62WH1jWNV6w1RO2wVUlZVRzcv8tXv/Uddu/cZ7p7l93dN1BqQtd9H//kMWSHcRVtv8S4jI89d2++w5/96b/kjXtf3xIJpGxO0iAFaUxmaNuO58+f8+jRIy6XS/occa4koaAHYhKPPy0hPBsG3Oaa3uAir6tLN2NVIeutDUlp05zdYGAKNRB1PF3b0qyXooZaN3RdRx86lm2zVQ0WRYHWGu+7If1VkzYhAlyxtESxJmt1a6vhe0vNaoauyObz2AEDScPr8tC4Va8Ac68D5zYqvM3zrn/PzXf9dXPc9fnx+mO/Su326/b16mu+7G+vmwNfPodD8Mer+1Mby6vtjn4J/Nuciytw8qqrIApHI0StrF/CIOK145xyBiWAO7weLP2tADqlwTlD2yLghLrSqBtXkLMYjJaFABXZarCGqIRsvLmR9CGSlmusCcL0MhpjDTlotA4YU+Gshhjp2rWACCpiSwlcSCHj246z+RnL1VIM51Mm9gmdMroeM3Ui7cwIw8BYgxlVUFqyyvS+Y92u6IIXyVpVopKlW0sqZNO1XC7nxBQoK4cuHW/cvk3XtrRtI0BgUZCiRyUpfEmBZtUTQybESBomAKUUyRgWOdPmOJh3GkplqayT78q1E5lEHosSRkTbSgjFqCiuaJTOEXtPCJHCGMp6xGQ2xaAoKkdRFPR9x+ViTt/3AHS+G5hJg+WrMqQknc6oQFmNKw02K+gDvvfkQb7qfU9ZVfggOTdaGykak6QgjWxBO3gfbQZfYYwsXowMQGfLaxNi4tWJ7tUO4KuTiTVuG6KxAYs33h+bieO6xBhk8SSAT8CqQfcfB5rqECXttEiu4wDQ5RzFJ8eKXE0bhRqNUCbQLxtCFGBu4y2RMyJX9IMEcnN8TYFVdgAIE4umZdl2GC37dkVBMchdjVbMphPxsHMWZy3WWex1INIojFNUlQJGxJgkibdp8H6NMSJ3nV90tF1JYQtJKIoN62WWyTsNN6ocIF+xZWJMFNaiM8Q+kFKQ9LXSDscv47seY61I+qxDjwx9J954dmI52DukaTv6zrNcrpkvFlxcXBDCxnOyk+CMYsOoELm10hKqQs74GHFaUZYVOWd89PR9z3rdUx3VVEVBPS2pykLGgHakHFHKobJmXI4pXAkZClvQti2FLji6d8QiLDhbL7hY9zw/W4AuKF2F92nwehBPHWMsxdjhbIG2VvwFUmKV1jglBWpRlCItqeV9iQqSFqlJzJiYRSKYFaWxpNCjyIzqEevegymICRbLBTkIcIpv0MnTtJGQE9Y5soWuXUvSNYocpINmsib5ANlQ1xVFWaKMgr5HdR0jV6KsolUBvGd5ueTifCVeT9Yx2pOwnpQV63XDuCpp+57UNIx0Bp25ubfDZGSJvsGsOrRVGCyj0Zi6rtnd3+P52QkhBsaT6bYxYW3BqJ5QlCu6kHFFQVWNKYqKFBNVXW3IHjjr0FYCChbrNW1oKK1IQ5tmjTOynKycYVJbikLRpcysNlxUlstlz2K9oijl2C7bhp9+8gXz+Zz33riDLcqtEa8ls17NwTYkHRkVGnewQz3eYTqqmI0rPv7sM47PTqlnI/Z2d1itVuQU+cbXvkF39ozFySOZNzN0fS/nwhicK8jK0XUdqa6G+UcaLdpAUVhsVVKUjqxGpDahlGexWGCtpCyPRiMwYiStjATONM2atimw00SICVUJsJbbhrZv6XyHMWqQvRqsLZiMRuis6NZrGP6dX5xxlAJFYYm2IKiKvlWslwsWizE3Z3uMJjvYsiQET+o9o3FFTIHLxSVTa6hdzeHuEedtS+wyZTFhf3fKyXJFYXtuHBxyfnjAi08/wZKoK0dOHTFqmm7FfHnJxfycv//b70O3pO97jt56j2r3iP17X2VajhlqQiliVIIYSdkMjPDfAXS/zWYGg+0Y5d5YlwU70yk3D2/wxv27vPfu25RlQV2Vm3qenJTk1ljFRdcRjKz7uqrFFIm+cmTb07Rzilsw8RWfPnjMT794yL37j/jWN99kZzKBrKk28uW4Qs1PWT74EH/xnOl8FzXtcXdq6imoixc8fbRksei4fectqukuOc2Jywv8ZUdeeXK9xvsVVVmyd+8AxxvMP/2IFw9W/P1HP+LnJw944723GO/u8+0/+VN+/3v/E8vjJ3z///m/OH58zNPHP6EwF5Q+0MWnpJ2OZbmiDxF9krk47XjxLPJFe0pz8fcc7zwhpDEhWt5/03HafsEHT55i3vgub/3+O6jKQ7+AW2CK25jUSTJiu6A6Pmc37nBj10A3Z6eYMNp7n73pLVRuyTTildVnTFEOeJ2HQZgsRv3ChogMYD4RSybFBlKPNRLmksm06YLPHv6CvcMDqukboKaEBCGPsOYApSyQ0NqRKKRoIKCHRtnzZ4/44IP/l3X3iDt3p3z9/T+hKB1DzCcktV0/brYMEoqRpR4AhdmEtioJl9Avl0H/v26btefGLsA59xvJU19lzb1a1P5TbkoxqCdAADO1BUdB/Yr3HwBcpKaIPjG/XGKU5u7RHfZ3Z2JLYSwJRUgKEpghIlO4GJmEpxxOaCa/VLBv1vS/CYPv131BNxnxlffeoyoKjl+8IKZIzgox/krgBGi2+/sc7NdIIEoJGLQryJLhx7CqHYilomTIz+e4Zz3xixXqPBHbwOPnJ9yMgd3ZmPXnLyAU2Lnj5PGP+cu//hGPn5xxsewkCFBZml6R6w5lE+erJb3boVs3FDljUsDqjLMapYywwck4J0QWH4TdWmorwXkhU7sKHzTR9xRFMZAcNP1ijVJZGM8DUaMP4vFqnWVUGGLyxNjJd8yecWGIvhEihlUQGwyJae1ABTKBujIYK3W81opRKb5vxljqeod6VBFypCwtReWoqpLdg112ZlNsEzkxjvOmZa+Y8HzVcvZ8znoVeHGxpnAFKiYwlhZIznCxWnL/9m3+x3/1r/ju9/4QpTWmUNx99zbfu/hznj9aEJYVi9WK0/NTXFjiQ8c3v/U1/vf/9V/zB7/336GjAbuZczJ28DRVQeaV0PY8e/yEF8+OuVwsiDlTj8Q7OMdAVTh8DEQvxJ6YMjH6l8CkNNRoWtvBViRIuvxwfetBJcdAeiElUgiE3tM2kqjadx2hawne07YtXdMO4XBBQJ+BmWeHyyQFqcs1DAkhVww8aZRcySmFnaUwWqxRNiERA99p++92Dri2D0AsS9TLktVXa+jXqdI2+7wOIF3//VVizPXXXX/t5m/hmsR289yXyTIvv+7Vx6+/5+s+65dtWmsi8SVwbzuPbxiK1/bzKtFnQ+bZhH9cP54JIa7ZopSQiM15TIlBhzyQjIZovpzQWWOUYWPfkge275dtXwrQXf9gVwdd2Bc5D1/ICu3alZZsNUkrAoocPdH3dDGAD2LimTV5SOkEqKoKg8I5hTFycIwthKmnIqZQGJNJVr5zD5ATG3PdorSkztP3HefnZ0Am9H4In8jUaowymqKwuFGJG1W0vqcNiZgN3TrQ9J5V29N5T8gZUxQCDGrofSsFl5ZFbuh6/MaQOyWaZvg9RLz3g75cbjBRa7qqpA2R1HmMUoxtCVVNtgZnFN6AdYoiOmK25IEeqa3BqYIYNeeLBuKKqnRMxxNKZ/Bdz7JtqJOjrgqsK4Xdp7QwpUqFsZb5akmObNmBktYj803MCbRI1kgKZTYpTxanIBtF20iIAVmjtBU/wQ1FMGdKK8m8MrgVzliMle76ZvxsBvr1QX8dlX/dImMrgb02kWwml9dd4JvzcX2cZiIh9mh1Dbnmal9d1+GsFu8nLRJVN3SCY4zkKAsQZczgz6EhZZISOTMZshquA8QDQ20mZaTLjBFwOAzStK7roGuGyTXT9B3OWaqixBVStFdlyXgyoS4LfAhozfbaKEtNVRVMJmNyjjQr6dgs2xVqDUUhQG2oKnxfDoCcw1pZjNptFEnGKohDgqgyRmS+KRACQ1KQAEG2cGjnyTZhYpIukBFJzTAM0IOk1wzUXd/3tG2gcIUcryjAtUGOqR4WfGYIJgBEYaE1BovWkURktWowOVGYAl1bNIpgPZ6OFDN937Iwcw73bnB054jSFHz88ccs50v2D/ZQhRZJfczMZjuUkz0aH7i4WIr3AgpJdNIoJUB5DoPPF5rQSwKv94l1s0LP15A1e9NddnZmtKtznBaj3771rLtA2/eEIJ0tjadwFoyjG7R8k8kEHQenl9RL6m/M+CS+JzEF8aSMXsz6lcUi4RoOjc1y7vSQglkqy6QsGReF3AhCxPoE3lO6ip2DIyb7Byw7z2q1xjnHzBXkEAg+QAwUVhEV+JzoY8KHSJfS0MVLGGvY2dnh7t27XC7nNOtWvM6U3OyzzmhrKMqSIkaUtcQk83tV1RRuI+OSmi9lyFpY1SkEmq7B+IiqDFYPbLSkmY1KRtOSkC0qa1I2FGcrLltP07Us1i17OzPGkwmn8xX9Lx7Qd3d54/ZNCjImthitmE7HaJsJsaDrHdV4zM7OhL29Ga5wTI5nBJMZT2ta3/Ef/v2/5S/1X1OrzLQE8oSyKCnLkvVyhQ9yjlS+dvsc2OIK8ZVSRuYlYxUmSLOkCQ0pl9R1zWwv82LthXmeEt4n0oaRt5mzhjkGPaSPaTN0geU6TCmRYsBqRVVatMr4viN5g84BFXsInoQl64xTWkJxUGIuMOxTEiHFPkEbh3MF2hUUhaUsZrhocdUElwJBJ6ZZSeoacOf2TcxqzuLFM9p+TVY9qy7y+edfUM72ef7iBVop6qqkVIrUdTx59JhPPvuCIzNmPBujTcZkLwnSWg9AwO/Aud9+kznamOFYGsVXvnKfGwf71LVjd3e8PcopQrPuePDpQ9arltt37zBPSx5dPmI2m3L65DlnT1/w/lfeYVRHFosXvHhxzhdfnPDppy9oVoF79/dI7Tnf/c43OTzYhdxBTsyPT3jwwY/57KOPcUSST4xdQD19THVjn8uzwM8+eMSdN7/O/vtvc/74AV98/AOefPaIZtFy7/4h996+Td7rSV0PzYpwecloUvO13/8mi1RxFiMv1pccr57wVnWPBz/5jM9+9iHnlw3FYcHx2XMmhxVvHB4yjhV33rnNjScHrI5PUEHxsw9/wdOzFYzGzB8e85XpTW7ffYdPv3jK/Pgpn5efMzq8w9E77zGezqBrif0ZzfoEVVSMd29D7sixQ4cO3Z+j0wWX50ua08DN+99AJQfMUSZAVCg3gZAGvZMoO8DJ+lrKRzIGjUUTUXQY7ZDk24gyGaMSLq3Z36vZ3SuJaU4bego7pWAymOdrMpsQCJAYohpFIMSGi/NzHn72gJDOuH1rD60qlHaAFakVGyetzephY8GkUErAHbUZbkpB3oRxiUwzvVIE5YyklF8r5P5JRv+1AqxtWxYLkW6Px+Ohgfjl25etTf9Lba++20syrZe2fO0nDaBvQimoXMmd27e5f+eOKItUIqdI71tcMSFp8CEzX0QKm9mZWhROWNnDmLlejP/DpWavfFLFNqFYaY2bTLl95w5lPcJWI1xZSvBWilIrKEUSjQkqZxQbduhWTTaMPyW1TILc9Pj5ivnJGU4ZynpMDi3rDM2qo7hYs7KaRye/4OKvf87PPnnMw6dn9Lngoo9cdgHqCp8lOAObCN7TWEXoexrfEL1nZAxNiARTUjgYGQs+IsR6J1LElNAxoFMk9z05aAhRfI1TgBzIKmK1QicPOWKyA5XxqSUlCbLTOlHogDYaa8BZQ1nWlEU92DBZ8XUtFNZpnLOMZjOxYIqJwjomE6khUYqiMKShJqzqAu0G4NlofN/S95HxbMby0tO2mabNrNaZdQtdsmhrKAvL2ke8MVCUHExn/Mlf/Bl//t//BTduHEDXonKFcZpbN/b4yjv36ZqOp8+OaddzQtS8fe8N/ux73+MP/+iPuXHrgKyVqBSygK8byyR0JveJ85NTHn3xkMePn9C2LR7xdd84JyZESqxywhghGGg92IGE8BLo07btFqzfPBajpCd7PxBduo5muWK1knTVbvD6TuFKHZejBIVpXpkjkqznXga/rl3L+ZebAFfdsivwbqheuf5nrtW9wFYx8dI1OgDpr6rVNu93/fXXr+9fumbzL4dDvI7N9uq/r5svrz/n1RTXV5//uhTZ6/t99fVblqO6YgRe/6zbvw3N3+395zXvsXn+RpK6eZpSA8bxyne8PgOzwXKQc7L97rzMYPx195PfGKDTWpO1Hlh0VyfWGAEWitKBVUSlMFmipYVB4cWHKkZiTmLwPkgO/WqN1lB4R4hCG99wTw2KiSqwBpHPZUunRDJpB/11XUj33/eevpMIYzbdAgPLrkEljw0W4wxRQ58STedpu4bLRSdJdCFhnKWqa2xhKUotkymCfmtn6IbI8w0ibIxhPK63Jy4lSXWRAaLwaM67gE+dpPukTX9UklSNEvmuSleDKYRI5zv6IKw8iyMmuYgjhpg1IWvSAGz4lDEpixyzlYHpXEGhZd9VPSIMdNgQIzFm+uCJPhKTsJlIiZSgD146oQoptrWSAj6I+Eh8Op0U10nYHbL0U9vvJQMP0uBhtQHEXkXKNxfG6+id19l2KEVSVxfYdSBus6/rk+rmvYwxInElo4yM3TSwCKy16CyoeMrSnXTa4IyRMIi0MeSMxGxIWVKM5fHhMhzO3eYi3KDgKr+c5LIN5N5c9ABZSXoQkZOLS6w1lM6JtM0axuMJeyERZ7MhtVVuO84Z3HADHQS61KWlbVtC70HlwQsx0bUrmvWSFKEsa+pyJDehNDAbjcUZI9LHpFE6oXIkD6lTmoQxSujiRJGmGgF/q1FNVcrNT2srixBbUFXC6tJaE2Kk73o0pYDBwySaFdcmTo9WIo8MUaR61hQD00oTU2YxX6FSoixqJhOFKxwhOLrhxmKUIgYBYnPwtH1gMZ/TLFe07ZpqPBaWV4a2awlqRUBhjGU8sqS+Exl3lvj0NKDXamDvjOoxs+kuRVnTz+fMF2tSfEHfdDwuDPeObrA7qVB6SIhOPT5GGCTEANo6sAV9yiht2d3ZxSZFv5qjNFRaAkmShhBkeg9JwkKMVtisJZgAPfg7DgsWLUWO1uKdWGqFD1CkzMgYpmWNK8bcuf8WN+7e4/jigvO2I7U9OcVB6hwpU6SoHZV2DIIrorZgCtEeRrnCp9MJ9+/e5fLyguNnx3SNBFRsfCA3c2JZVSg7pHNpkTzFLCmkEZHC2tJRViN29xyq7Lk8XbJuOnCG6GASA5PxPjYndN9jDdROszcdSYL0ZUOfViyWS1KKxPGE0iiaPvPk+AKjsbKloQAAIABJREFUC44OD6idxZmAzy0mBXZmY2BCxtCJ/oT9vV0a72liTzVylErx+OExvr9gVlc0lULbzP7ejJ2ypigqYc/RSHBMHub9nMh5U8SIj1+KHgska1DEoaupca6gqkSuLoE7ihASDE0BYyTlWVtJ4+58D0rYC1VV0/edpMTmjFGZ0WjErcMD+rbl5PSU1DW080vW8zNK4/B6RC4LSlcyHtWMRzXabNLYFahhfWIMylYUBIx1qGjQusKaTE6G9WoJCaqypI49oXbcO7pF1Td81sxZn1+SVaRPgcfPnnHW/g0HN27yr/+X/5kbtWG9WHD77a9x+N53edQEHj19zlvVPUa1JaUIBLQyKKQRsr1n/Oolyu+2X7HJvWZjRyHBT2QY145xtYtSQ6Muyl3q8nJO3wVSCOItmqHahT0VOfvkCz754AGPPn7IB//3X5FCA6pluT7h7Xfu8afvfZWHXzzn4osX/OQiUZ4kvvXtNxntauy45mIe+OnjyFk65O5bM/TdEvIZLR16VvLkky/48Ef/keX5Z1j1kI8ffMQvPvwZcRHILXw2G/H2P3uXb/3FmN3bipPHDzn79CnrbsLh22/y9t2vUN++yeX5MT/8y//E2ePnpMuPeP7scy7THNcVqMdz6uKSuzffoXpzl+bh56wvLnjz6BZ3pju8f+8mfdA8O1ty+nzFXjkmhY65P+Xz+ac8U57v3Hqfu/YO5hxQPdo3qItn+DZCLsE52pMLLs5OMJMZi5NP+fzvP8XY+9x68zvge9ALYu6FRe0c6GJAK2Q9Jcy5TBruRzFbVEZCGbSTZygBTpRyZN8yq/eZTm+g6tFV1z+JH1NhzeC57K6NjAzZAgaSJ/tE33qq0YS7t7/KZHIbKBlajyi1SYbXVwXIZktsgy5UTqKTlA8st8BrBd92vTaAM78NyPObbtcLtRDCwH52/6TA4D/u9jowTl2dhJf+lLmyCsiAQ6OZTSbs7dbMdndQqZfC0lTC2FcCtvYhcHJ6znik2JkdQPaE6LG22soN4Wp9/g+alTckn+FHb+iXSgA1tKPav8HtyS4ZjS4qhi7VsB5URCTVXquMxaDRW09pAYzzIHEdxnTv6VOHuz1ipO9SntaE547mTKMszFctJzny+brj6bLn89M58+zQbspl13LuW0Th0UApftnz1KOyQeVEkqhCymyYZkvtKtRozA03ogyZHBPGWkrncCpjVcIO17kz4nU8GlcCfmeHs5m6LCQlPmsKO8KWllxIQqR1UBYG6wyFc4Ove4XRBc6VFEUlCiCVUQPxQztN0/YD61FSScuqlDCNlDAmopQAV0pFss7EoZpJuafrL2m7juAzBMNUT1DlLstiBeMGVWbm3YKlinSuINuAq0YcvX2PN998m0pJCKEkICr2bhX88Z+8zbvv7bBcXXJ88hUObh+wszfj7ffeY/fegfhm9hHjNJuMwZy3sxah7Th+8pTHjx9xdvoCTCaGgE/ih6y1FhrCEIjYty2DJbvUN9cCXrTWTEejbS2aY0/fBXrf0qw7uq5jtVrRdd1gIyDKthylRtzMbSoPZIPtNSK4yVC6c32ak9rwSiWV8muYbgz15oa5OoSJyevVdk+Zq51viSy8EuRwDSzbfoZXAKjr/25+f3Vufp3a7dXtyySq1x+/Xre/+tzXS01fft/rpJ3r3+0l7IBBPprCwIwbwNu0CS+SxzaP5y1wusEWkIKVq/OV82AlM9Sx0uz4knlwQ6RQrz++G7ugL9t+jQfdLx8ko4x42uSMVeJFtE0cGQpbjSZamBQVYRj03SA1FCmLUAJXqxU6SnHS9z1Ga4weyNw6EZIfwDYzJKMIoKIHiVHSGlPVZG3po1yQxopxX58idB2h68nrhDKKbBSd9yxWntW648XZkt5H6nrCZFJhSzssNgI5BQG1MmL+mOV8mcINE2KxpbrndDVAYk6kEOlRNPSErDEBVBLZn7GD3jxDaezgZyEDIPiexWLBfL2g7xPjYsJkPGUymaJy5nyxIMZA7Sx1XVJUBTklluuWFHqcc5TOEn1i3azptQRHGOOoXEnMCeMLlOlRIaCURE3HHAfJ3yDPVfKdCyfsihAFRBD2XEHOHoiEuJlwpDg3drjw00Cx11r8wbYAZNgCbK+bBK5PLDlnlNFf+rzN2Hz9xS6Al7WaGDNd36KzFSN/Y4fzFrYXWx4WyNaJiarLmfVaGJEhyaSeEGBUaUTmrAaD5awgXyH5ajgom8SzjIAqm8Wz3HgkIc/HSAhRAkC0YtV41q3nYrEE77FamEiyqHSCCWaRGaeUhuAS+T4xRrquIQShXGstMvTtRwuZQhvGoxF2NMYMCY5iOjxIYdkADoGUBQjLIUg3wLqtHxZk7BBbbq2lsI7SVbLAGG4UXd+xSaUT9qa+ep8sMtochf6rtAYtBWXKEpzS9h7XOfphbMZhYae0yJ6Pbt5gZzqjKkt8ivi2Y2dvxs7OjMl0TEKxt7vDfO25ePiEy8UJbjSiLCY4Z+jKmqhbUu9lvCoBlYyxGAWdDyzWDcYn2j6hixrtapZNx4vjC0LwHO7PGFeOonBkrbFFgc+RpAzoQDIJrxRxGDulMbhB4luXjjZligacs6yDHIes0rZTc90kVo5Z3JpEhyxMuxg8XegJg4fZTlWh3Ii//cUTnpz/mINnZ7hRTdcF+t6Ln2dhyI0nE0E5klYkrfBZPDmD0nK+B7sjrQ3j8ZjZZMpleUH0Mjc7rWXBujHRjXEI1im3Y1KpoXEBZKXRRrqvUXmiUijrUFak9E3Xo/uOGBMpmeG6SFgytbPsTh3K1bh6RF2OODk54+TFC24e7OPqCeu+52y+5PDwBpO6RtlIG5bEdsWocFid6JqePkTAMKpKdqYTKgJeNfjQURspbH3bcNl6cg7UTlOGRFWWuLKQxVNMQyGdSENecByy5DKZnITpYpHF99QanNW07Yr1uiX4IEEjSW76xkoQiElGqPFZ0/ae9XqFIjOpR4yrCqMVq8VCANucmVQl5c0b6JzQOXDy4ozz58+4PH7GzJT0ZUKpktFUkprHdSXSiazE5xQB6bKx4DRWJbS1rNcdfUpkrem6jtPTF1gMkxsHpCSMt92dKfboFouzF1y0c7rQoJLFJ/Drnn00N27c5O604D8/fMjzH/wQ9XDOxxeJt37/j9i5ecCkngzBkhuR0K+oP3+3/YM2NdyfIGO0Eo/bqDZ9JbS+kqmNRjV1BdPxlIP92xy/eM7PP/o558vnfPHJY54+OKG96Fidzym0YTJyGDfh6NabfPsP/oj7RwtWl5pulTl/ccYP/upDQn7Bzv6Md97/5/z5v/g3UFtmex61/ogvPvz3/PDDHzLvPPrCMxtpTp/8nH/3+O+Y9z3ajXjvvbcZp4LPHnzOxz/+CT4bRjducPzoU5rz53z3D/6CP/4f/jf60ZRsFG/X73Hv6IBPvv8Tfvrjzzh58hF92aFPSmy5x3o38vSDj+jaFxx/8SlHN+7w1Xfe563DG+Rmidkb8cWL5/zNf/o7Fv0p+9UON9+csXhcQD1iND2iZEa+8IS4RIVL8uUZi4sF6DH1dIdHP/2Es+UF737niMv5grOTF9y/c5P1s58SciDpNbPbO5idMaQlpA70CHQlYB0GgSSkPeaGhoxBmrnkDD5C8OAUCgeqkvVIO4AatsA3PVlnMNLUyfm6w6MaGCagsqXQhtpZdsYjDnaPUGoEyUBOwh7SDKhKZPjPsO6SuU+Y+RFykH83+qsBRDRK1hXb4vJXMCv+8cf/1XtUVbVt3pZl+V/k/f9xN1k7vgTObbcNwCs/mU3YjqzV6qoghjmqX7KxOlQ4rHISYjfM/yn39D4NoVey9iRlspJ71FWRnvmHzMwvMUuGT2YYCiolzSuUhcoNn8UClq0CWUHaeJIBKSv0xjODBFmJuFWJNxRKUGNVWiZv36V6Yw/OL+HFbUbnpyyOn/DRo8/56PiYky7DeJ/Rzj6+g1UHqxS5iI2oSbRmlMXT2ceOoD2FVhQWnNPQJSauhHoGZWBiCiotrFfyMMeayGw25s7dQ5zbxZgaV9VMpyOKUonSooBRVYnFTVRUtqaYlATTSmqoDrjBhscaSQw1RuaLFEXBpIwhpSCsu+xRxjB1irIyEkIYPFpLgzYljzaK0Ht638lh1qJws0VJWUZSpYnRUxiLzQqbNC5qiqBxOHxs2NndIcaWqAtmNw75Z+9/jfe/+nUmbibrfSskEKUNeq/gjd97k/vlV0TGH1uUlfuRLixK9TIatZF1IaARCyElA5T52TnHz55xeXY+AMWbRM1ITIlNDnb0CR96uuBhUO0l0raxqYCUAsvFgj50NKs1i9Wc1bKh7daEXohFTdNARM5B3g7Hbc2oQb7b5rFhfb5pREgj9NpV/AoL7FVvdblgNtf6Bsi5mjvlylNbJtbmMRjqX3Xtd3759y977Msev06s+U32d70+f3UfvwqAe91+X8fu+zIW36ub1nrr9f+SCs+al1iT+ZXpTADhKyLQ9mMME5nScs7iJlsgD/fmaz8pJcGu4JfP8Zd85uvblwJ0zllSzKhBypSiDJSNVnfjD2aNwijpiGSjQBsx/yYPEp1hRbhBKAd5VlHWiIl5wuch1ZFhkgUu1g3ZKowa2jw+YjSMy8i4yEzqikpJ+owzYmxdFpJ02MdAgyInofBuEhhz1hhEwtguV6SssZUSmaFWhNQToyeFKJLEPMiCjGNcjbDWoK343YUhQMPnKxNKHzy+6+lSpukk6TD6IP4hXgy3PeI5VRWWFNMQ6WMIKdJ2HfPFktWqZa479maJlGRi7ns/eKoJ+8s5hzMazVUYQ0gR3/Wsm4YmyMRoi1KQWq3IaYP+im9UHwOrdUsMefD2UttUUwGYhlS9FGAAY8tSo3Ukdx6lBIm21g5eDAqGDk3a3IM399KhMshqMwepl2/1myfmq07BdVT8OhAXY3z5ArtGN9Vas0FBY04DCCkSXx+FpSFjQqS9Ir+W15dlCaXBxsTKrykKubi9jwMrb/MemwtMDROm3AJkmMtYt8ZszTtTuqLbKkHZsLaQCT2LGXTOit5Hzs8vubxcYLOkRE4mQcITtMjOiiHJdTyaonQmJ/GQk1Rkvz1WJ6eXEoLhZSynPhJtQVk4yEkYeSmTgnS9td74PgloW5QjXGEJOhKJwlYa0ldjFC+5jS/h5qYHMik6Y/HJY50TKWMMqBRQOovBptLi1wDowRsQZFwkFDEr0sDW9SnThkDuEaaNNbi6ImpFUJkudPSrjhgG30ptWLcrclSowrEzm3F0O7FoRcLZ94mm9RitB57lILk1CmMNG9ltnzKLroc20nlPWdVMikKaEGXH87ML2nZNWci4KcoCV49IxqELi3aRqDJ9SkQlQTTNakXMmiIlZlVJh6Z2g/9c04FW4huZr4ohUVQrosp4EmEYZ7IUl4WIionkA6YwlM5S2ZJmHfjpo0+wDx5zdP8uprDS2XUGqxWmLFBhk96l8AlyjPgUaLM0PpUSqWUKUQpFI74aWkn4R0yewhQy7xrDuutQwYMqtuD3piDLWeanrve0nefRk6eczVtUtNT1mHI0Bm9pFg1Pnj2nsnsUbowxmjgkH4coCVaTuhTAqiw5fXFCs1oyJ3LzYI+6Fr/GdYjMRgWuHpNbL14kfUPfB6yraDsvDLSyYHcy43z9nPV6yawuOFu34gFnEvPlgs+/iKi248bBAU0WGbAYbF/xFeTiloKGQfKeQkuMidJaZpMSqxSr5ZL14soqoW07GQdaSQjJ0LGLKdH1kYvTMy7PT5lNJ9w/OmJclzhrISfxOkyB2ajG3rpJoaBUmmXTYoNnYrUAis4xKR2zUUlhrz53iGI6rYxF2QKcEpsCq+jTijYHkoV6MmK8M6Zdroi5o3AQo6F2JWU+4OL2ESfNimdnL+g7SWHXtiIpSd+sXMEvPnzAX//oQ9qdO/j9N+knh7z5ta+yN3LUtczFkLceXP+tldD/tW1KIUnkOYEycs3ma8c1Z/q+A6Wo64rzs0sWFw1GV5yeL/gPf/MLTnzL177+Pjd3bvK3//E/s8Twxq27vPH+u1QjRdyZcZ7v8ta3jzjYcyzmkUdfPGN1+YAnvzjm9OFH7I6+zu7dN/FnPcvjY/zJpzz+4EMe/P0PeXhxwcSMeXvnFn7VMtmt+L3v/SHjeze4sz9j3Hbc+EDzwQ8/4sd/8+9Q04qMYVrtEp0jlFDtlxAbVscPePyz77M6f8w33tllf/wOf/Wjn3Dx2Sm71RFL9ZwPP/gBTTimOpoyqW9w/CyTTi452DHsvVGi90pumSPK9YTbN+/yZr7P/k8Vt27e4s2vfAd76z5xmVl9/gx0ZHxwi926wJqO888+4id/9bc8OTvn4wfHuGLGrYMjdm8YOj4kpSmFuU9sx2A9Pp6STESpWxj9JsZalFVoI+wLQ0INQtfsW+LqkrhesDh7xvrynNn+Lrt3bqNiBm3J5QgitCdzGh/Zv3ko7HA0Zlh+b0QAG7ROkyhtYjox1KWRZJAIW8mHioLkbe9FAqKLzEeBjjAkzcrvVwwuhQUlMt3rEtlh6P2Tby81e5USz89h26Yp/lfPpNuuquT3VyvJ7TaAFQygak6S2KkcOnuePn1I11UcvXUkTKneo0ogF8JOy4FVcwEJej8l9XOMdbjCsdFsbNbcm3v5r9x+3blVw3OU3iz4gIwyhoyEsOWhFtDI8DNKWHSKX74vZDWofJTGZAnLwihyXWP276J2KpkDV3P05Rn1J7/A/cBSFBrz5JTYd5imo+wVSx/o8yWNbfDZ4KKjTwmXIj7LmjADxdBQM3UFuqZ3llXX0LWD4sw6qT1yiysyR/cPGe/sUo9vYN2Isqio65KsWnJqsSZhtYIQST7jVIEdFURX0vQrYuiG8LdMipIAj2+wtqJrPQyNfG0zMfek3GMwgGa9bFmtlqTYM5vNqMsSdBCZc7cmpYi1hQD5KFQM6BAxOeB0xllFCj3BQ04RaxW7dU1vM+vcY1OmtJrv/v63+D//zf/BH3/32zhVEnOgUR5KhaNCOYMezbYElaxGxBzoYj8wjcTnPCmkwU1klI3MfzHSL1ecHD/jxbOnrBaX5BRpuzVdiFIXDzNNTJncSzia1ULK6b0n5IBKWdbXPtCFjvPTC1rf0q3XrLs1oQv45AcbMQ3p1bAFqRU33uNxCCLc1J2GDei2kVIOJJ4Nqyvnlxh018kqgusMK5+hjs7D9ZS5xhS7tjq6Ys0NdTEvA2OvylKvf5bXSSyvv+76c163n9dtr5JlflMA7lfJPV9V2b26j+ufdwMeXt+XzmqLU22el5LMEVvmpOz55fcZgIiBhPjL7z+so/I1MI60adRL0ztruV9upmy9JfgMc5tWxBT4su3XAHSOpDPGBCnkN+b+SslARJB8kQgqSUW2wnDDGELopVOPwipQcZD3DZ+4rsZiUp880QcUicKIjj4qTRk9HgbUO5BVIKXIuhcT04ShMREVA74T77kMlNagnEV1gdJabGmpxxVFXdH0HqUuIVtOijnBCz1V5yxx2D6glLiBjOoJWYmP10an7lOi7Tv6rqMPER88fe9FIjrIRoMP+JDoOmFXqZjRRpGNtDFFdgmrxZKUhMVia4dPXjz6jEFZR9t6np+eMV+t2ZtN2dmdMh2NCL5nPhhV7swm7MwmjMqpgJ3RUxSaXetwXSSSiTFJrHSMQhPXVoCpGMlB0nMBnLHYwmGUDNz1ao7R0JNJIRPD4GEX89bDazPor8CxDeNGbzsJcXOx6ivwFa5JH1+DqCulfklffv2513XmwACwmKuuhEYWK4OHYFVJl3mLeiOyUWM2/QjpEIqPW0XIsPYCEnVdN3iZRVk4YIgpXXmvDBfzS12OfNVpIQ1BEte+p936LOUB5BTPCkjEmOg7SUSOMRFTSwyXLFeeUVUwGtVUpaF3hrJ0lIUTBuuQGpljJKTE/sEuXR9o1wIGZJ2HFNACbTYgWkfKYQiC2HRtBh8HBcoarHGAImWNGcIsjMlsZNl92+F7AQiJCZPF90j0+4bCWaJJpE4NN5I0THxyPqy14oNnJChGiIaySEvaENAC0CE+eVornCupRjVd7GlamTucES/MuqyxhWG+WnFxesqyjezOZuwejDg+OePp8kTYtkoWfonrNwqGVaHCuhpdFpAEKFz3nuOLCwogdg1HhztEqzhbLggXFxhn2dnbZzzblQWGkxS1kDNRaUKIrFcrYjY4p5lNHL0yFNZjnCPmFpUTfQz0UVJBN/eNNKxMI+JpaHQeVErCkiVFtBKOou8DjU+4cszujZL9Gzc4unebVbPk/PyFgKreo1Ig+Y4mR8iONgQqW5BsgSkjXbwg5YKc8uDJ4SEPsvyUxVE6JcaTmul0hitL1PPndEHAT2HVCY08cwXUMSzA103Lk+NjYgd7u/vYUcXOpKIYT2j6nvmqZTIZMa4dxmRU7uS8aU3tNDErZpMa4gzftoyLitl4wmw8lqRUrehVxqHAWqwuMK5EK5FXK62JCvqYGI0qlJmSomdSluhwwfH5JSmLjPry8pInMRC8J05GKC3S46u26gZYUtv1lcoJlcS42KhMaQsxLfYylouiYN2tWa1WVNlS1MVmFhzmMIMx4GPixckZpycnhK7j7u3bHO7tiqcjSlKGy8zudMzO+C0Od3c4ny+4efc2t+7cphsdsNZjxvWM2agS8+9hUYnSaCPJ0GgHxoitgwrowoJTZA0Htw8ZlZZnnz8k6My4LHGlxmqDTYrDW0fcaFpO1z3r9SUky3K5oO9bfn53n/2vvcXh3og37h3x0I8IxrFqez5/+Ii9SWZ8b49Z+bIJ/e8Aut9mk9RPrYYjOQzTrdzn/2PvPX8l284zv99KO1Q6qdPtdHOiKCZJI47GNjyAYcCAAf+b/u6PHmgM2xhpRIqkRV2Sl7y8ucPpPqnSDiv6w9q7TnXfQFnj0dgAF9DoqlO1d+2w1trrfd7nfZ4hYWXKzFoRJBaLObPJDNcL3nz7Lf7Hk0Oe9Gu6/orf/PJLqmPF0fFtbh+fsLJXXDWeqBX/59/9lLqa8Wc/+g7f+9PXmDWKD3/7jEdPzlg9+Zxfffo/IyZ/w2E14bVjxTR9zoe//hXJBv7kjfe4Oms4PdugrOedd9/jB9/9PvrWhPrGHNF23LpoOfzdKY8ePcHahigLrE6cnp9z/vwppu+ZHy7oNw1us+TG4ZQHt+9z6+CA7eUFHz5bsj0/5cpveGgCq60ltonF9JDOzfj8bMVkfpOpmRDrkgfvv8EJx9BUPDtdce/OPd7/3vfRN19D1CUiRPR0RrATNpstNhSUJLrtildfOcKYkp/8w0dMDm/yztvvM71xQHEgIB0j5H02F2dcfv4pixPB4sYckkFEfR0JpKxxk6Ijho5snmJJ9grfXrA++5TnT76gv5ph4gOmd+6AqsiusBGZ1hilEKoZ5lxNGkrHxQCcCamyjp2wHByXvP/ufcpySlWa4fmXTSsyu2kIVhifwXnNoqTIvBTvkSIM5D8PoSf5AKJCVNfutGJvRP9LMtj29YmvSzT//wDO5YoDRljqJXBuDN6vL+U+iy6QYo49IHD2/AmPHl9ydXkDVWqmx7e5/fBdoMenQOMsy9U5TCTWzmiXz0AYDk8mGDN7QZImv+YlVt03tZE7d80kEvCCDt0I/mbNw1yS7WMuqFAyDeCEfBGce+nkk5DZcAiBDoN2XiHQEwkzmUkiZYmYLCgmb/PDOzf47vmGL/7x9/zy7z7g419/jgmCUg5up6VEygK/SrjeE0WPlAZJlrqJwSOkxtQlbZBc2paL/hKxKZmHHMdFlUAFdAnHkxnzo5KiPMaHIVpQ2Z1eiATR4qMbAneIeDrbsdp0dLYBEtNpyawqMWYgZETYbBqatkepnAjXIiffhJIoo0kWlqsVT588wnvLnduOk6MDvHe0bcvy8go/jA/vIz5CUdVM6hrVWVL0WNcjUs/J0QmTOydcuCUubogu0C7POTw+5vUHr/Jvf/iX/Ld/8W+Y1xNiaoni+r5aBIprQFbGfAu1NhQ6O636FHHJImWRJV3G0mopSL3n6vyCZ6enLK+usG1HR8RZm6ukh8o9Yk6MAogk2Niepm3ZbtdYm2VdnM9Ge12XTR2ct7lkdRhDWgyxqsgljDGSy1p3tOOB3SdEZim/tFKR8joe3pfquAa7cr/fB39SehGMyiCeIqVwDWh/TRNCDCaFAz4jruOq3ecvVZyNx7L//uv2O37vZXLMP6f9c7cbpav2j+nlEt2RGf11Za+ErwKMGdS81qvLf/yaYx0r4NII1r14DqOc2bhpeunfuK80HvswgX3ds+ib2rcCdFprkgSl7LVQ494Px5hHmRQCLdVOLywnPzLDS5HQGkxREAaALsaB/RFjngyTRmuHSDHX9QIEOCwmWJ8RSaEjqUgE74gxAyVn6y1JZKHskDIXRrs2i+1LTRUFpVAoCQKJFppSSSa6whaBWVnThA7pswtjoQa2nhB4rVDVlJDyALAx4W1Ha3vW2w1t27LdtjjnaG0/IOlDTXLKNs4qFVlzTmQHHZnyJFWagsIIlsslEY+PAWMLRCEHbbspytT0OtI2ls22IYZAFHAwn6IlCGXo+4bVZg0pcDCbUZgcdAoh0KLEVIqQIsFH2t7S9z0u+AyQBti2LdaH7EBjLUrlQBiVl+xZX8qgjaC3HutT1jZJaSiP2QOlXsgC5I4rpcQPD/LMvMzXNsVMSbbBvzABjANNCokU1/1sbC9PGiGErywQRmanHJhxzjtiYtB1Au8DkQxG5v0IhIjDRJgBu6LUyJidGIuyQKlsOpEBQzlM2mE3uV5rYSREzM4/AZmp5AOQLclMpR2QKUQGPK5PjiRGOWaZy1mVJvpA13uc3bDetGglmVQFVak5nM+YzScczGdMJhVlpRFEbJcdi6uqQiqHFIKqzA/vUmq01EgkadQKFHInSh8HPTakpLMdslIoLVFJZUBCjFpzGXBkAAAgAElEQVR/ipREdjD2cecONN4vuTeZ5vuukCZT/kVKhGBJZAAvswYGZb3BnCBJsDFgRcSLhBcgQiDEQCFBG8Wma1ivl9i2Rcns4jqpKw7mC4qyoOtaLi8uWG4tExtR08R2u8VaS11WSGIuMZcC73tczNo/WmiU1vSuy/OfKZFlQfKRPjIYJ2iSKaCA0Epa60neI+sOOfF4kYZMIHhyCYaQAqMNVVJUWjIroZORQudy7DEb44PHDQ+mJNRgHgNJZjMHL2NetChJUhBE2GV0i8Jksw/nWG0bpJxx78FrvP3eWzw9fUTTbvDdFiVzeUPfbHACnK2yRs2Q3Eha41xAkEuH11dLts0G53zuI4wOWIJ6UnJ0fIPZPIuSn11dZffSlBk8o4u0HMBYQ6IoK2bzBfCcTbMlxMsskXD3FrerikoYlK7Q5YRyMqeWjqpPJJ+ye5syLFcbuhiYVSWzowMOZzNmVUVpcmk7WrO1DueWCLtipiMzM7grBc/hwRGzhWDeORrXIFRNjDNWV4mD2YTGedZtgws92mRQsbcW2whsEkip0SngUy6vCFHk+XYsew0uP3u0RsaIEiknMESm3WsNIWRncTEpM4uwahE2J/wTEiFAycwq2G42fPnFlyTrmBSGxXSSU1IxG0xIVXNweMjJ0RFN12HqKcdHh9jZCUufNejqQmOkJMAgOD+A5jHgQy771XKwY1QSVRtisAQZMLWhmBic7XApkiS5HwpBPTvg5p37nK47bK9wbc/B8QzXXvDzn/2chV3z7tvvcP+tP+Xf/+Ypn7qa5WbD3/79T1me/Z7yx9/lvdcfUJd1XmyOgNIfUbp/ZhuSRkIMAWVmPkmV+1QIWRdY6Sw1EFzIBiGlRkl4cP8AcdxhP/+CX/z+p6yffcidQ0tsLhF2SYqGq/MNi6JlfuuALz76PVen/yunn75Pu/Z89vEXXG2vuMSx3jznwcFt/uq//tf86N07nJ//A8/5iIvf9ZTVAcc373AWN0xCpF0VfPrT33P4YI48OeTjx8/pHm+Yz+7zzv2K6dGC+fEJ5eIAc3TEF599wc27U6pYwrrk/o3XUM7wyScXnD/5iNfuV5w8KPnodElZa+RkwbMzwcP5Q/7qv/ufMHLO5tFj+qtHxK7CxEN++8v/i9Y03Dx4nUe/PuPwzgRzXCOmCYSFUlPdPUGZBSk9hK4BAlNdcOe4oP58xe8+vuDWKzd47Z0bmPkB0tzM2IleE/Uzotygq3sIfQ9Y5BLVPP0PYz8HclpHoIe4RZcdGsfJUUD2jvl0g+JzQnNO//SSJni81MwOD5kf3QIRIN4COSM7uaYBJikRogIcQrfMjzXv13dB1kgTQHRcF8TuMlYDvBcRMmvr5LVfIKWe8eBjv8FuljgXUPUxk+por0e+uF6E/7xA3bjvl3V+dqZh/4Ig4f/zNkblYu/9N7UxJIwvvE64fMd8S9cuefz09zx7+lt0XXL3jXcQRcXi5hsoOUWLhPUbVmvLejXh8vkXOKcIccrN21UOgHdLbbHTO/7KYXztcX1TG3TotIYkGSurRtwug1D5nJTUu6shd/seAnIxmB6Rxw1KoCrNpIRw8SnyfEVqW9JqTeo9SpfocoGaLnhw+wHPF2ecVWtc44jWE1xJCAILGClIISBtoDYlRVIEb1EhIivYhI7TNvA4BLY0TKVig6cnkJRAqIRlS/TQ9w2ps7Q2RwWmgMXBBK0cUfSZSaclRVEjI2w7y8effEHjLEZJbhwvcIdzCp3X4ikmHj06o+89ShdMtpYkI9tujdSJSTVhe7am2TY8e3ZK22w4P72irkts19L3PYfzA/wQr3a9xbvIwfEJr9yZMzUFhZI431BNFO/++XeZPHzIp/9Qcbn8khjW3Jz9gIcPXuXeW3/Cn/3lf8MNM0dEiLLe8X8hV72LKFAvg03bLUpGKEuUgDKVEDKS4UPOGaYQuDg/55OPP+Hzzz9ltbyi7ba0zhIkDBlFgo/ZyLHtiJ3Decf5esnWdjstuRCymWM2dbSMbq1C5MqBlCCEHJdFGTCizLTzFAbCxagFPYIseVyG3UnFkfeWR2xKjKaauxTFOKUOH1+DdS+7Sqed8YN48c/szAb2/pzns+GTHfD0VYbaPtNs/Gx/Pv42JtsfSm6MwNM3Mef+EFD38m+/7Ji9TwYaj2d03d0HvcSAwwh5HVfugDGu8YOsV//tx5Ovz3Deu33Er5znDrQdz5Wvzn5fBxZ+W/tWgE4JATKbGkgpUSLhR/QxBKzt8KEgMdlRhiIJkiPEvZs4Ai9SIFLWQkkp0TQ9yYAScqg5Hzp7CPje56na5XIuU2SWjZNgU9b3KqpZLr0js0d89PTe00dHHwLe5e/20ROExA1aan4A+LIRR67HFyTKsiIlTYg9KXiapsGFhHMe6xzWejpn6V3Wp7Mu0XSerstaYuAYax9Tyj5IhciW0QJQwme9rpRQwpC0xqY8qSgBJQVCa0yZXQcLIqXxtJstm82azfqSy9mM2zdvcHJ8RH24YLO64nK5wfvIfDFDSYl3luiz/XahCoSWVEUuyxUuC9mnmBcuPuaMW/Q2lzp6lzWzYsyuhMWgf6YKTMw0ZB/B+chqtc0dTYrBbWfsgDKzJpUhuXA9AYzurjG8CE691IGVHmyuk4cXsgr5nmWpopw1SOy52ChQOjsYjaW6jc1aaFoFRBRYazGmRE8yeCgEJJn1C2O2NsyagikvFuIAMISRbUjIFNWYywvF0L8FZKZcSqRB1y8hd2whsT8pDqyqPMAZfifinN8xAKWUeDfqw0EQ2aEYoOsdhVFcXi2pq5L5pOZgMePocMFiOh2AHQMoUImiVJiJpjYFEkXoHa7r8VxnXBCCmDJomgF3SUiDdoRSkBz0jmR7mr5j3TmOOclsORHz/VCKJDQgUEmg1cgEkqhk0HVm+sXo6XtB33XZkGGn5ZfLaFPMfab3jioE4gDsBpEIIWuVJSSX6w2ud7kkNmanZS0UmxAJyw1Ns6WzHhs9dr0iND2bTQfBD2YLOcsoMPRW4dsWHzPrpCg0dTHL4tKjRphRKCkppKBUcHZ1Tl0oUvCEQfsy6RKhC6S2xDTaaOfgRmnNfFpzIAxz4ZmUUMqI0Q6tRC47ENmNKsKg4TjcnwEIyUkAhZD53sUYcM5jYtYE1FWJwaCT4+DggM0qEXpHXZYcHB9Rzaasuw3OuawfJyBYi0sB12ywSiAKiescKXiS0Gy7Frlcsmk39K5HpCw/rYSEgSJeTWowhvr8jKLZopWirAym0hQ6O5QlQQZfU0REMMqgTYEuAy4mnl9eUZWaxckN6kLhhMImgXOBvmlptz1bnxBlJGmHLhXzNCX2llor5pXiYG6YFIIULX0PTkWCS7Rry/P2lInasJgdspguiG2PVJrpdEq/aqlkiS8qrtozagmvHB/DBVwsG0xVMJ3NEKZg23acd5bpRKGqrDkanM/9UgDOk5zF2yz9UFWG4CIMrL3smmoR0SGCRYhEUddMDw4ptxax3RB8T/IFLnqs7xFSEoXgYrUiOs+inqBeucV0UuOCz4tVErP5jMVkTmkMnbUI16BDh/TZ7CV4kfVU0QRp8KLM5eTWEnsHxgzjOGBjzGBtsJxfXOC3LdveYkPgarNBacOkkHTWI3XB4dEJt26usVvHOp7TNEtUtGy6xN/98tf8+C9+zHs/+D4frEv+9m//EXu5pQs9T+4suFMp7iwWFLfqrEszSCuwx/66fhB826rlj21saY9lInW+lnlhOujD6pK+awEwuuTp46ecPj3jzq07TOY1H3/4j/zsZ3/Nk0dPMT2kYFmvTzlffUwRK3wn+GRzwbPPBMv1lzjX8Ouf/DVaTLFeQV1QnRySkkZXkcXdKeW9GYezm7z/Fz9ClAbVac67Fq0ED+4/QMaGz37/MevNlGVZ86iFv/yzv+KNP7/BR3/zEzobeO3dd7nz7ptcBc+TiyWkLCx//P534a2bbD8+5eDyI9x2QXRfcO/WEfP5Ib/54Ev+8XHHez/+7/nOv/3XTN98CxIsZgVheUR5XPP87Pd8+fnf0MiGyRu3ULJE64oYQzZOkoYgFRQZ1BB+CmWC2CDCOfHit8R2zcMHr/Pw/XeR1QTkAsRt0C1RPEaaBlMqgpUIX5IL9NZADdQ5STc88zJ5LeBdQ9xeUcQWJQKT2nBw5wB5XNJdPqVpzhCmxHcJX0iYzEjuFFFGUIegFqDMMHQiWZjWARaROpSJ9LanuTxlcqTRs8VOk1hKg5L5uS6FZpT52FUe6MzIJWWt2HVj8T4wMf9lebBjwnCUQtlVAO0Fbd/OABtCrAS7iBr+Cae0H5r9p7L0xkz1N/wMDEH4CF3lkuY4MJaiiLRNSx8lqBof14S+48mXX3J2tebuG8+4c/99pDjm7GxJf/WEKvU8f/ox3oOQc+bzOdP54dAXZS5FTXIIdcb1+decp3jxpdz7Now6WmJg1CViDLkEX0tkAqWBsOM8MJJQdtsPMjxhB9ll5EOoEgpgcsD21OHPnxOenxEvLgnrBpnIpoOdwNqC1nmmxze5SGtsd4kSJbWRRG8pCoUQUMSSCRVBSPqQKGIOnp+uL3m87niuNWohSOWMKArCoOscU89mu6RtGzabQIi5RH86nYKs6dqI1oIQGly7phCSNHHgFZu1w7aWbtvREZAu0K+7rDPXZ8PCzbLBxYApKqplQe86VpsVplAcLObYxjGpag4XJxihsZ2j2aywfTfIVhW5aqisUSqDjzJppNCZ1KA11rUczBJ/9V99l/cO7vH0kz9HpoZFramsYzo9RM5uoiZzpM+VBLJUdM7m0lkEMg3xYRYRBJfLcinLHON5QMndWEtpACdcpN+sefr4ER999CGffvox2+2W1ls2XUtQEowkCknXdWyuNmyXK/p1i/U9W9diY8D1Dh/9EHNlRubIRNx3+hxLTKWQOYEZr2W9cqxyDXjFGAnB5b+pr2rJ5e+EIZYch+qL34k7N2uFEJkwMlYYkbLJoRoGkNibAyJkosM4CQwxgkyjcVn+J19ilb1cCvpyFdv4vX3Tiv1r803lsX+oVHX/N/Zff91396/RCNC9vP34foyV912m94+32JPBggGTihmD2B0DXwU6M8A3yDrEkTU+MHnltT6gkDlOk1Luqr6UFESZY//Bmwuxmx/3wFpxXTX3Te3bS1xFFpEW5JJPDxRSEYSk61pCmqKLLDS6cR1GF6hS505GGpw+IeGHyWCvAwhJZXIGTqSEkQKZMsNIa0mlDL53CDlecIdzkZgEIiZCTFSVIQ7lhi4FiJltoFRmzVnXYYnQdZx3HeL8PDurZDyGLlrURKNKhU2edqgHjl7goiD4juA93nr6PgfCznqCTZkJ6EEkjRblThg8xgGgCTGX4epIHz0iRFZSULYtZrVEKphWNUJAXdfM9RSboFt39M6iSNw+PCbVkTQt2bQlV1dXNJsVZ2TW4Gw2zWDTtGQTAnZjKScV3guaZcONssSLbsgwSKLKAFcuOZP4bcdkUjKb1XjncE2Pt5bgLDZClzTrraO1W0CgTUFRlHkyQiBkGNb/A714ZMgNAq65DDZrqESGQDYE3MC2yiwSg1CZPu+sw0dHChGDRmtBDNeZukHmMGdyU0LrzBaSAqqqpqrKPKBjZhsKoSh0TfT5eJQxzOtpppDHiBTgokeGLKLtfWKzbnFdAdoQoyGEFuchxmFQhvywMVJnd2Ji1hUYhvhQHTmwAU0uTUxpN6HuT0cv18/vTEfGCUXuLRBlHoUxZXZJDBGRoPeOpvVcXG05fXbOfDblcDFnMqsxUlHXC0pt8M5h+x6ZIlVdMl/MYdCU69ot27bBOzuAnJldWBhDsIGoFN56JslyWCielopYDfSw4IGeYiK5aBrWLkKISO/RkEushuuRJEhtUGSdt4QYxsr1Q8LZHqKnNBIbPL2zNG1DaQxaCWzXseo6UoqUZTEIgBZ0PoOZ0Ums0VgbcEFyZS0uRU4OF9y+fY8YBY+fnvLk8VPKssR5TySLeaqqylm2mIFqtWMHyxychexyiFbosiKWhk3TEKPPFvdCs2ksUa0xSlMUxaDdKEBIXAgYkTiQiZPSkFKHrgsK5VG+QYsOLz1SlXgGnTgZUCIRfUAjMarAu5gBMhRGGOqyQFiLrkoa77h0Hc+WLS54NIKZURxNpzTKwrRAXimklxQaDm7fIrVbpkpxY1JSFdDHnr5vwPVgCmRpEKWhbyJ98OMgJLmArBXSGJIZEjBaQYxZxFm4nJUMHdFqqulthJBUpsZoTYqCyXTOxdoCgvlsTlXPKOdzhEq0QmRdtOCYGYOJBZcXV6zlksPbRxzUE0RyKC+YlgXHs4LFPBG7ltVyyVWSVDdOSMz48vkTPvndJzSrlpOjE9554y3efvNNFrMKESPzyQLXS0LqOK5K6FtETNw8OMAQqSrNbL5AlSWXH3/M2brhYuM4RnJ04ybzqkbZDmM0RmnWPoHQWX9U58WuS5KkK7TRlEmgtw2Vhs1my+PzC0Q9oVOapBKaHh0NlVHMJhW6NIStBlOzbT0f/Oq3rJcrXn/jVcr5lCQM0ii8kiShIHgmWqD6DXZ9jtZT6rmmmgSS2JBSTeNh5Q1SV5hCU8aUfVqCJKiColpQ6AsqGWk3PaurBtvD3fuvY5YrLs4vcE7gUchCcWs+J3qPXV5hN89QRAoludisuGwkr8aS1+e3kfUTal2AdTy4c5fbhws2V4nNVnPsNIaIUZnNl/xeUD1ku1OMSCUH3Roxrnv+2F5oY0icdk6Iu6WoyhfLR9CmQpKNhJwNPP78MU8+e4qQkZ//8m85ffKIiT5ByUNC0bIpAp37jG69RvYC2Qaai55Ne0mlNUo5mnTOxrc4U9A+eoSpDjFR8R/+t/+FsnubG7cq7t29y/L0nF/8Hz/B+Mhfffdtvvfj76MqzRe//Dnteo2cHvPqD7/D9374I3SK6HmJvWw4fvNt9J07HLSW+m5gNp+ilEc0l3D+DNNdofSGqpLEdEB/2vP+299BP3ydv//dFTdf+yvuvPUOPUsiHeb2FHXrTayc07UGf/Q6z1e/YVu3HL9+g3JWIcsTQqyxymBlNhOLBCqpwXuwitAHmi5w45X7/A//6l9j7j5AzQqIcxATUENQoDVVOac0c7IZw5ZoL6FPhDgnyIrq8DDTR8QUhEQZS9Jbrk5XJI45vH+HzflHiG7F/MaCsqjZLD2r55bNuqJ91FKcOPTNDQe33sZvFL4TlIsFyaicgPEtpohIaVg+veCjD79Amnu896OHJEqigHKQtwDFKGzDDigJw3vNqFlnpnNO6lfyNsIAZpd4f6F37qLN8bP4VSBs/+N/zgh4KRjeZ198WyCZ28BCS3EXvaWQtZV1UQzBdxqM0/aPc5/JNrZ/Lkj3h08+r5lCXrcpRRqTeygEnkQgSkNvjqmONbJ/yqQUCKm5PD/jKQ3HRzfQs1u4vuKT357y65/+nNX2GdNpwXy+4E//5C1gC0khUgF9QGhDStfmT8oMv52yhE4GGq7VB0eodjQM2YGYYkhqpcFVcUjIjGF5kpJBFBGVRt5QLi0MEZKSe0XAGTSOSaKEQUzuIhd/gljP0O5j4lVAnnX4bsOyafjyasmzPtLrGWe949Q3dEVCy8TUB3QBLnlIBfgJSRQ42ZLCJicA26xlpjWoIst5uG0F/RwtDEZElASNZHW+4snTJUVZI6WmXRWU1YRPVx2TaYW3a7bb58xmhlfvPWQxu5UJBZcbrk6fc3LjGBdaPv7kC5QWGKNJMXJ8dMy2bdhcnaHDnMqYbGjmEyE1GK2ZViWVVri+3V1TESA6RzVdXIMLRExZUs9KpnWR5V9SgY6JO5VlwRmT6T3e+s7bg29MyglGFBkRlYADFQlplA/KlW1CZD5dFhRUg079wI7aJ47FCKFHJAdCkSy0z895+tlnfPnZpzw5e4KNnj541l3DetvQW0vb9jRNh+0csQ8kH3MlicxmOWIHko1VXmHHgBNCsfMcESJX9AzzxE7nPIrdqBbDozUnKsaqqBcBpxfAJLE/12Raya5EYAAEU0xDvKdyzDy4f4bwUlXS3vyVxD64dK1DF/cSBC/ong/H9bJ01NcBX+N34h5gx0vgXtxLfjCMzX29+BEgHPf5Mktvn9G3D7Dty1ftH+u+ocb+MccYv1GrLm8tdoDn9TGoF8A/sbuxL4KGwed+oqXKeu/A6LLrScgUcx/PIR5SiAyaxqzpL40hAnJgvKaxP8gsORFjul7Dfk37VoAueku0geizm2V0fujYWVNtrOUNRIJ3eJcoTCINTo5lWWaUOQ4XfnDD3KG5wwN5ZF6Ngd94uEVdkgjZwCBmt6g0iDElOYoyKpSKqJDRyvGBISNEo4khlx+NnSumiA0Oa20eZCkvtFywSJc7m7eeECy97weXxJzNV+TSSGFAxURhNIWPWGV3GnQu5msVVNwNcJEgyuyK2ceQy3ZtFqxPKVH2jsblDK21lhgDRkjmZkNpclB+MJ+ihWRlDL21nJ2dcXl1xZ07r3B0coxzjqv1FtH2zGczjm/dRrVbZPTXAzembEThBj01ICaPiBIRA1qJrEmjJV2U+D5iU2al5QGSnUN9GM5xyB4IkUvdxG6Q5WljdG0dB+04uEbRxv1BmU0l4nVmgoA2Jk+U+noSzEzO3HW11oSgkCnrwaWUHVGzTIAatAMEWhaYQmXnXWOyQ6nzuIENNPisYrPwHFZFknQsu45V0w6lfmropxlVTwN4Q1KM7qNyXPTt9J2yg9o4dexnQHasu70J4eUFY2F0ZntGhuxSZgVKKTNbarwWIWshLlcbNqsN52fnFGWBLBTT2ZT5ZEpRFGiRWZO271kLwayu8vU0mpmeD+kt8N7Sd9l4IHmPcIYUoJAglCAM5adFUVBoNYhaR7oQaHtH33S4pkXIIju5Ssl0OkVriXcu043l4KoT45Axun6giJT1U5TODsDWOtquo9IKQtatkFIwqWqU1llDKwSarqN1idB5Qox03rPtHW3fE8V5doGWmu22IRFxMU+0QuVsmiwLghBYb3HBIcR4jSUiZUFtUsD3jpXr2E1WUuGCoHOOTbdk3fXM6hodAwZB9BFrXS5lDD0phhykHVVMqprJdEW5tGgdCdITqQlh0PAbCgXyIB6ySrlAGTFkd0IcjHaCp0mRzsfMSJagSBhAkw18wlAOoFNmuJZVgSYxVxnIU4QsMBw8KiWk1lR1TTmpkVud3dLI7mbEROgtTdOwaRuENkiTx6UY9B9jCsiYdqzInAkUqCSpi5JZPaMqG2wIWUdFGUxRUBaC6bxGlyXC96iQKHXFYnZMG5ecLa/Aew5UBuaF93TNkvl0wmI6oSxrVJQ82za01hJSRdQ1elYgJ3M+enTKl8/Oee3hPd5++JBpaXKZnzDUdU3Z9sSoUVpRkKhqzWxS08eIGPqoMYrVekXXO47mU47rKs+PnUUnjU0ys3KHZ1ZICevydfE2g8DzSjMpjimnM1rnObu4YrNZc/PYUMiYM6LRkSTouka4iJYeJSVCGZASL6AnIgYm3aKM2c27b5HRoYNlu2lZ90tO5C3mxQGakoQhYDJJ2TvwAeFTdm9G4WwguLQLNlLS+Oip6gPeOHkFrT5ju9miVUk2rMiar7dvnuDaJVrWxNDwed+x2no+vVjxyvMrRFHz3fff5+btu/zghz9kUhp837BdW/rOU5gCkQLOWoQsUFoTvCf0PcoY1B+wpv9jgzHlPqaOxtB2XAzm9ejwvEo5sJ3N5lR1zW9//RuePTvl9NkpF1eO4BrmiwOauOJsdUHsEzIIFmaC6CJSRO7Mb2Gbns1Fh5mXHCxmrGxHFIqyWPD8bMu/++t/z/nnP+HV125ycXXFky+e0Z6tOVSe88ewOj3i8JW73L57n83FmtNtR1hd8Ku/+2uOZjV3b7+BOnqIOKwRxlFjsp5iOkeoDdFd0F0+Y3l+zidffMCv/uEDXr13n++/8x7dag0WTg4nRDyyNJRSgNQEDJYKmHEwf8C9O+/hyzWLW7do7ASXPNYHtNIEIl4EDDmeiuREX9x2XH1xzmefnDO9UXPz5BhRVqSoSNJkAxShSL4kxAkpCWScgtVsLzd8+ckHXK22HB094P5b7wOaGDQJlRN9HgQVs4P7pCTQk4qpMDTbT3n06Smb9Zq6uMmte39OPX8Nu+xYtZ9D3xG2Pf2qoe8VStfoacAoBSaDb+5ixebZGhrJ9OYxVXVIEhVmdJZAAgox6uamvT6GIIlR+ywDeXmtMmrsjr1tv30dHez//fZ1DI9vev+1LQEhJ/6kVgOjXZFGg41/qfr7b7hc4ykolYXHx9BcUA5gCNkIwEa2tkCJGfNizqwSJKnZNkuunn+JbVfIWmA7zfqy5+p8zbrdEGJJUUiEtAiKvAaRJjNL0nXi2PUdLmbN8oy2ZA04uXf/X9Bnzkd/jXQwghTDOoc9QGFITA/lLdcxA+AHRgtkQE+Q1zlSDPS7coE+fpdZ9RCK1wjtz7h4/ku67RO2m47VOrAJkc70dCESZECpSJUyiUMJQeM9WoCkJEZJoAUcUiW0FhRKY2JAi4gQBYWYYOQElQQi5QLPYANd09Nutjlm0gLrFU1fcnXWUCwLpOgoTGQ+P+bw6JhCTWlXazSR+7dvcP/+KzTNhstzCx5MKbLMnon4kOiEI8UWQsTIkMkPEpyzdF1DSlCWJdP5AmUM1uYY7uTkZHC6HMq+iUynU6ZVhW96fCxJoqQkYuhJwhKVISaV50DFkKgX+b6r8Y/Z0MOLhCRQjkisSDAYzYDMrvcDiQEShbKgeog9eEHsBV9++gW/+uADPv3icy5Wl7TOsulbNk2WeHI+4HpPcAlCjuVy0BVzsl2EHYMpMMZoY/w56iKPfVJeYxF7Q++bZqwcl14P1DHW3gFUUn/jHq61zuB6/hw11+I4Sr6y9ahrtp9kSLv97SU+xHW5574+29edwzeVnn4dK3D/974J7NuBcGN+LGUAACAASURBVC/t64XPXnr/Mqvu6/7+Tcfzdcc9Xof0rc+br5b0Xs9V19uJUVR+YM59ZY9D/nPclSRXa+a4cQAWd0lSMiC7d4zf1L51pZvrtCPeXwMyKeRc7AiyGK0pdEYJEYIUBvdPnbcXZGvjETHOaGwOvIPLQrS7DMggBDpykTy5HCcQBi24fE5yl8HLE/sgccXgwUAacNNkVC7JHWqNldGEELDO4WJAmSIDhiRc8AhrB4DOEaNHKzUsYlO2S9aCImWB1BAF1kdMTJhCYbzOelzJ7/S4dvRLMugRQha5D8ETnGPrs2hlo1qarkUptduu1JLLq8SkLllMFUVdsjgsMVXF5eUlV8slqes5OzsjpJhdJE2edOTggldNatRgDJFLy7LOUHQ+l31qjR2OlRDRQqJF1m5SUVDpChGgcIbRlTWEQPAhA5y7+5Z24NnYQgj5nsf0wsQghEAPHTMMYBwDs3Lf5EEylEUrvRMiGrMeZkDSlVLE/IRACJENOrwftr12nyqMwhRFXkCQiCH36b7vkcMADVLgfaAbkfsYuWxbttZlN1/YacgBOXs6OBUzlGiK4fyElGP+NS9N9heKL42x/fe7a5SGbVNCpGF0xMFYgSGXLckgeSJrxJkCIwoKrSkKjR4YaGm4FyEEisIAYK3FWsvl2fPBGENT1zWz+YRyUpNSjTFDNirGXLIXAsnk0hs1GBM477G9G+YJz2h7LqVEmwIbwfYWKRUHBweURQYHrbWUZbkDfOMe3TgDwJlxWShDDBHnLNb2GJEdKI3MpbJHh4eD0zCIvqfxnk3XodSGMbEfYqBrO/ruGavVGqUMQpg9MDkzXkdLbGM0o1ttEglpsjGGIKGMRIkSb3uapkEpyXQ6B8jMO+dotx3rbQeLyNwYqqJEkPUxYkokJfESQiUR8wJdlehpgTQtmaGZgz7v8viRvJjpz0xEMTjoZhA8s0kH0wPrCTHXhUildjqRUo76U3lhND7oSmOohGCqMmAmZcCnbPqjhMCYIi/YZjOKVZn7fEpIIYkx0HYdLJeY2ZRyNh3GSdZfTCEvmCQgYjaaQTMAj5Kbhyd4WdLayHKzodaGQkoKISi1Qomc5Q3OIkLu67PZFG80F+0FV+sVSVoOxBRVZK5uTFnUN7Oo84InhexqN5YrZ8c3WLcNn3z+OX3X8vDeK5wcLBBlxIoVjkTTrIloai04mJZURpK6Hh16jLfY9RVBlriiI/Udcj6jOJxRqJIu5VIYFwJFDFkuIgiCizlRGkAlSWVKiqJCVzWtdTTrLa7tkDFhhESEfN2M1EwqgdCglWNqDJPJBKU1kTRILljavsNWjtIU+EGfoygq+stLrq4uQSXK2lDrw+H6CGKIpJCdoAWDAxUJpEQXJjMklB/m58xiK8uSo6NjYoh0bcIoSfSe+WLOnfQKKfQszx/RbTpm9RxrWx4/espvfv0hUk94++03ee2Nt/jRj97l6OCQdrNBCktZCCAzKnVhhtmO3JdV1njdCTpL+S1Lmz+2sX0TTDJ+EkIkeZhNZ9y8ecIvftbw+aOndFER6rvcfO1NXn/tNZ58+lP65Ye0SbB2kanS3J4eEO0l7fqS4CJCVnRuxp2D17g5F1jXUR2+xfPLSH/2K4iG1Am+/OiUzz4752h+wvzmnHsP71CpKY9+94yz0yuiC5yefoETP6E+ljx4/02mBwf01hPOP+fe6ydcnDZ8+cEn3Lxjuf8WpD5hipobr0woP5E8ac8x8ZiH2lG3K165X3P7zSnBfUD7xYTJ3ZsgEqqoqClJTnKLGd8/eovTqy/oVhXxzn3KyqFmEika6thQ+iIzSISDfgObHn+5od1oLlaavoJkJOvmORdX5xwc3WNxcB+lNCkeE4LIQWWcU8gjiknFw4e3eFVKklZU8wU7DpEAUMRQEOSM8mgOTiKEpi80n3z4OV8+3nJ0dMzrb3+PyYMfItKUshYcNEe4sgUxRxlBpQKqUggTh4WbB9uhleTk5D7G9aj5Q2ACnUWWGiFMBkjIDKlro4IRahnfy2uW5iAPwriafykw3A+A/z/fhEBqBeTgout7njx6Qj2b8srd2//5f/8PYZliZNZA4kUjBREHXeEoiEGitSEEycXFmuW64enzz3Diind+sEHNoesj221Ps+lpe089UYSYjcCMFqAyOBmdxfuYNaydZdNsKKqC4+MT6kleAwhBRrl26ekM2ok09JM9UGP3RgiEGIrChmy2D+NafgAkhoSDYHR2HfbLGIvkBCCAMIrq5hHSHoE8xl8JTj+54KOLZ1wuI62vaIPFdRblPPM+YEJCBQnJEKMbpHpA+ERIHhcs4JhojTGaspLUJObK442iKhSFzuYWiITCEHwiBE+mHfQgIlFCig0rt6KSFdO6oD6YcXhyzGS+QLgJynTUUziY1xyclHT+AmV6JtOKo5MaJQUHhzWLWDCdC8qqpCprvJtTljWmrOj6hDZVjh20Yj47QBlN3zvCUMWUUsJomdf1ZO143/Vs+i02lUQ5BVPjhcaSQQMhMjFHpZDDrDDGaNlMzkeBjwldCGTS17c6Df1iYIhlH7REEh5BT5/WlMKT0pbzZ5f87f/+If/xP/ySv/v7/8jziwtssGy7ltY2uWdJMeipJkiZsCOlzqxwAiG6DFRxDVS9uJ7efzF+NrzeG4DfBtCNJ/dyeeXXlXTub7MDn8T1d74pcbD7lT122Qv73w18wS5Q3ENTXt73jpU3MOL+UMLi684JrrXdxvP5Cvj28nm89J2Xpa6+jvG83/Yxhn/qcX8lfto7j3+KUdCuS+Q9fnX/e//vziGNv7WP3OXnZ85txOudf8sc/+0Muj3q4DXbKZekSiFwthtYVBO00iSVdat8b0lOYIN94UT2L0q+aHkREgcKqRCRKK7Rxs5m6+QUxU6KLLOUcnmfkplVpcRA7BYRLbLLY5KCECRJDy51eqA0KokJJUWKSJG10PYpm9duLgwMwMwwiClf7BCzjo9PkFKfaY1k59loMrU3M0cGIFPmACMEPZR3Rvq+3zHFIAMo1trdNdZa4wUsV5tc9ukTEzdhOpsymU5BZHZR27ZsNhuaruXk5IRbt25RFBl03KzX1NMKIUBpg5ICFcKu05dFsQNvrLP5QUwgigG8colYTPHxuhxADPeuUJpkEsL76w7Ji4NhR4tllxR7AYRJKQ26fezKO81Qsjh0CpTIlPckRrQ+7iaE0VXqOoORwQprLcSE1p6qqIfBkvC2z/9iyGYZLoOwQmSdKDkEe2LQgnMxsO57bIgZWGAAkIW4Pp8deDJSV8eZlmHBlHbf/adMJNdvMu7PCFylcRGSqddGK6rCDNncgJGSWV1z4+iQ46MDZtMaXRiKSZ0n7qHsOtNxIXqP63uuLs5z6avtWG7WbLuWsjIZsPSJUpcIJUnCEWxPGzxRZd1CKQV939P1HW3vcCHT15WW2VBBGNptR0oZuPPek01aw25eiWkwlwh+B7hmY5I8j6SUwdTo8+JYD46wpVYYqVhfLWm7Jmu4Skm0FpUSk6rC1CUBT9/VNLqn7y3etQjVUxYT6nqSQ3+pSCS888gYCCkO/YEMOgYzpGfFYEJR4l1PCBlIn8/n+XkoJFIZ+s7RNi2264lRIHWFigMIIgSpyO6isZSkSkEpEYVEqnHMKFTMWWoxgGxK5fKPPE/B+ODNmm6ZeVYXJrtRe4dM2eY90+Q94xMg99+xk+WFDRG0UhTGUKicOKm0YVLVFDonKUpjqMuKuijRepyzI8RIiIG43WKWS6aA98MDN+b5PSWBEjovzH3Mrlchh3y3bt6kODih85Inp8/QBAohwDuSTQTlsb1gMrClt82KK9/AjQmHR8d4UyE3lq7tmeiKoqoJCZbrLVJHnJAcz+dUZcVmvWE6qbF2xdXyksPDIwSGs+WKq+WKy9WKV+/fY1aVtC7QJ4EPWdt0Oplw83BGPa2oW8X94wMmZcmX50sa6xFIbIxcxYCSUBtJE8FGcN4TfBzo9DI/sKPYuZR570kyoVLWK53qAqt6hA/ImF2xFYLClAiRCHhUFEwmE+qqHhbYA6C/0/nz+JiZksJo6umE+cyz6huW55eY0nCrXCAJiBSJKbszimxrTFRZ31DpnIBzfU4kaSWp64qu7Xj8+DFd29I0DRdnzzFGs5jP0abMuTghmdUzbsxn3L39gC+fPOfzx+f84ud/z9HNV3jnvYrz81NOn92i71s++OXP+eR3v+Y7777Oj//Nv+Lo6BgRZWawh5iZc0NJgo9x0PH7Y/tDTbz0Or30YRrkQoQUmEpz594d3nn/PUw1o6hO2DhDb2pilc0H3n/3Twml5PHVlubRmrI85NbNt7j75jHrvuPnv/yIs03izBr8l2fcu33I9777A548a/np41/xs7//Db/5paOzHu8KbAEpFQgxZbkKXJz1/PbDJ/TrLWF7AfGS6Z0cRDarGZv1hFL3TN3bNM8t699/xg1TsKk2LJc9k/INDm++xdGD1zk4+UcuneWTs1NeX9S8cmvBsnnOoy8+I+jAu+JHsDhAzBTIErxEmZpb997g6rN/4N/99U+4PPyQ73//Lgt1ExPXHN6YIYuTvF7tHavHzzh7es50csDkxj2OH7yBOJzSmZQZ2tKjpEMqB2h0ccRiMSNUntLk8lVdTNCLOkvQIQatfJHlRof7pEqFFCWiqEEYCJpyIrl174eUi3u88tpD5jfukmxJ6EFXU4r6AYWKoA1lEUH0YLYktuSkZgATEZMScZWyBms6h26DWJTXuMnYX3Z1YOzWOyODaTjya5CO6/F5ze7Y63riDwdG/+Vbfl7GlOiblu224fLiip//4hfcuXuPk5MTinIPfBDX210zYv4TZqn9S/Y1u9mVgw2VQd4H5GB0lg29ABwkRbPpubJXhIsvWV085uzsgvPll8xuKC6u1kxvj34MWXNQ64KYFGcXS67WG27Wx8Qo6NotZ8+XbNZbVqsV62aD9547r9zi8PAwrzmGY8u561FXTHwlGM1r+pT1d8mJfvaIJWlILMKLwvZjtYAqzFAQmNe1ItOXhg6X13ZRCaSGWBi2esGzMOWLRrNqNKBJyePcFnyWA9ExVxdIoSH6rDecUT/64GhFj5RZ9kVoRVko5kISdKRTgkJJEIO2s8zgqBCGyWTB8VFClyB0QJeCFAU6FsxmC+bTmumkoqomhKBQomAyO+DVV1+lMLA4nBOTRarIwfGC6XSCDyEbMWpNc3JMWZaUZUXwAWNKhDJYl+V5nAtoo6mns2yupxxRQKE03nsQOXG4I1oIsq5bAv9/s/deT5Ikd57fx1WIVFXZJVqNagwGwN4Ct7d7t5Jnxru9N/65fCGNZnw4mi2PXCOwUIPB6BbTqnTKEK7uwT2yqnu6Bziu4JJcN6uu6qrMDOXh4f79fYXWOFXQC0WfKQIaCFHSk0grDHJBGTJBAoQSuJBIbSFEEtQfspQz3R/eedZ9SzUeIaLifNFwdf6Ul88f8/lvvuZ/+h//C988SmxuHz3eB5p+ixRQj5NiQUIKqIwkMC64REjJ0sNXbiMx+GJfB/bFyDVAN4DHN5Zy3ADFdn2ba0XYcIO+zkR7nQF282+ve6a9fl/f/Iyb778JML0C0H3rU15tr4OCw/8HBtxb16dCvCJbvbn/bzrW178GPOW7QLw3Hevw99e38/dpN3GKm9t5G5B68z3pj9yofqR/BhxHDN9lvK4UkDvfjb61Uza/jYn3WvtOgM7HxL6SErSRKC3ISdApxUkk7XT0IYcEZFN8mdgmnevTruSFuLMDUyZFCJuiTIuLcAN4ydRTodIAgcwL9+FEBY+IPps3xjQYRk8MFhE9QoT8GSm2PvlcpYWLiyGFH4jkIeXdFiFFqjDFAc0WCCVzkl32VrtBdky68zQNKYxEx7SgcTExCxKwkAerEF9JF4kx+fIVWlFoxbbtUhhATNR0n58vwaVObW2P9wHrww4E2Z/vMZpMKKqay8tzwjLirKXdNiwWV1RlmZISleRyuWJUFtQjMCRJoRKCUVFCWaGkpPOOrm1pZJuYksHT+8C27+galwzEuQZPhJRonUCDJh9XGDqneFUHngZ7satoRZGrHTExlERmcAgZ0UaiVZri+eDxzmH99Q2S+k+ffe3YhQ9opSiKBOo4715B5KNKP/uQvOYGaa71aaAPuUtpcU3Hjy7JRa13WFIq4/XFH6j6CRR86xJxmNgKsfPSGO5XIQZp942Xx2sgD0DINPE1RqFCssAVGTyRSlFXFaMct+69RSPYm005PjpI4SFlScCDKUCKJPPuk+m/FIIiAzJ7synWWTbrNYvlFZvNhs2mSYmU1jGZzKiqEUYa0Imd1Ge5pvcxTQSzNwGDP0DMj948sTJaIghsN2u8S0ElpU6yZGdtZveF64TPvBAPRJqu303IonNE59FlQWUK6tJw1Ta0mzVt1+cQDpBGIWOJIgUQlKZIDN8QieFVD4MQQpKu5P9760AkLgBS7ph9SZYfUqJXLJHZ59JIg5Y6pwQbKmWoa0vb9rje4XCocUrcSkm3icHViEArBNMCVKUwRqFVAh2j0ihZoVWJ0iYxInVychkAusHjUufK8tAXQx6/jDEYI5Eyp1EN7GXy+JJZrQnZTAw3GSIixJSGKzV1ITBqu5stKyUxhUHrtE3vfOJU5Ad417XIpkgS84GthyJ4idAJmHKDTMxFRBTUpkDVJUfzFc16TbQdRkpwAaFdklYqqIxBesVmveLr52e4q4rx0T4P7t1nNFZ0Z0sCDusjvQcRIhWCcVlBVaAEHO7PiPmcnV8uOLu4oGs7RnWNrCqenp6zahoevPcud44OmcwPuHxxQr/ZUpeKUakZFxITDe/emrGfpeOPTi653K4R1RjnJScX5ygpE1gqFNZmj6BSEmM6H4k5DMFFbGcRKOo6UkhFbUo60yMy+zgx4ErKoiREi8chhKQsClRhCFLggkN6KKVJoSdaJWk8aegyRcHx0REuOJ6fPuPF428oRnNir1EhdwoJUgukAS8zizMnnjmfmMnEyHg8QmvB5eUlTdNS1yMmsz2a7SaNTaMxQmiE0Ny9fZdbo5LeeoSsOL1YcXb2kiAkvf0ekZ7T02cIcYvptMIYuDh/yXZxwXwyStwIVSBNkZ+niUI/FHF+V9Hj/+/tJiD3xmdVBh+UAp2fxYfHB/zVv/8LfvLjLbPpFOcqPj9p+fLqBHdLIbb38NMx982Yhz9/yLQTvP8nH/DOH9+mcRuu/stP2TvbIoPh4S9/zsn5C37107/h/OUZ/fKc2fSQtV1hQ0OlI7fnFR/ce5fTk56ff/JrVr1j+XKB3nimccS0nDFqNd3jwNePvmK1CBzujeiOv4eJEyZ2j/4cfv3kEZ99/hUj/ZIfvLfANg63hLP1FUf7R9yqpnx92vLpl1/jlWIpPuHl1Tf8+E//kunhHsHNKGYVog6IvTH93h2enP/vfPXlp9ypf4SbCbzvYdIh+jXxck236lheOVbbMWq6hzKO6feO2X/vLkxrxnHMdDJFyzHESIgugR+mQuuQEt+9Q1QFmAxkFAFkTxBNYq4FQwxrlGkQWiTplzGgFEpMuf3hTziOLbI2EBVBS9RUEWVO2h4SMjNgEUWPCxdYv8GIiAmCfnXO6uVDrLUoGXDrPczkPriKaAYlwjCHS50q5kWI2EkUhy51wxeSYSF+k0l1A5jbFZv+ObZ0oNZ6Tl684MWLl+zvzamqEdPJjLKokEK9Bsxdv+/6OP+hj28Y1dPPIYRkcxISf05LkYHUCCiIkr53vDg55cXzR/Snn9CuzrHWY6NDNoGuTzZEQqW+aYoKHUtiDLy8uODscsH+QaDdbnj69JSnT1+yXK1omgbnLGVRcHT7EKVTcTedkgzI3VwSCIjCM/QHQUAPRFEhcz+V7NKWZAJ6AlwHemTQz0iVCrta5WRiGHKGdwXMAM5HtNBQJsCvdZIuFGxjgfVblPRs2y1GRoqiJChFcs7TyC6i87wviEAberaxRxeOVmqMTMqFsTJgJJuYjs17RxACoSU+BIwquT2fsFffSmF1wlNWGlCEeUlZ1uhSgk6KjeAVQhiKsuDwWNJtVxg15uCgZDY7ohqVxBDoXU+MgaKukHpCURiiVHRui7US4SLalCnsT0BUyQfZWkvvHaYsiCktLV2vG8CFMQZTGXpp6U3Ea0HrI62XSbmTz7ekzBjEkI7p8HiQOoG9okcIj5YeucvaFUQXcV6yaeG3Xzzi2ck5T56/4Oc//zkPv/6K8/NTzk5OqNQI11t8OU7rmNggTYVRCqMNbdsmb++YrrzLc/YBUyhLef0MFAKlcvjFDYDsVUbvqz7hrzOj3s6Ku37N9Wt542u/q30nQHTjNd8F0L2NhfYt5h7XHnVvet+b2k7hlr/exgx80+/etC+vh1G8/vqbx/z6fv/ukJ9X9/smOHlzDXhzG9/++QaQKl675lwXn8JgfZPc9ncegnnQY4fYk8FOBmD4u/vFd0tcnc3BDjdPavL7KpQG79mu1xA7hIjoskAUmig1ZWV2j6gBNVRC4OK1sWJwOVohLxqJibIspSQ6kEWZQJidVFQk8Cs4YvBkgWGS34VEGwykSkBEIJRGxmQi6mLAWZdkeZmJ5YjYGBBR7NJQBhBExOuHixTZJw+FkwEvIypCadTu4eFCMgntvbtGvF16eAqRwCkhNFEkFpAxJr9PIzJwFHwaYMifZWJECI/D0vuY6kRCMBlPMIVif/8WQkjWyyVt2+LPHVVVMZ1OMZMxffQob6EVdNloPmTWm84pNsRhYS6hMAg0RkgKoYm9x4cs6SUBFSJ7/MXMogyp9+ZOnKoiw+DxOjovMrA13Ni6LF7p8DYDNl3f46xFxEG3nVl33n3rBks+dCaBVfGa8ekzO1JkANgHjwuZ2ZjBr23XJtA0Zhg2JrDZu5yOo9L2oxiqctngM1dLZJb7pYmq2HnQCZkIrDqbj75yDjKI9Uq1IKTko1eqCzKiBDuvvkH+q1Riz9VVgTEFImi0Uswm4xySIQg+AYwCgSoMRie2nQw++9ellCzb95RVyWg0YrI3Y7tds91uaZqGtu2BJA2eTMcQDKW3xL5HysSMG8ZPLwRRyDyND3kCnwNfTAJ02rYhBM94PKbM1302m6XrvWM03mCVxkCpTbovnKdtWyqlqAuFGY0Z1yOq4+SzcXl1RdM19M5ClNhGE4Kj3pul/o1I12KYDcYsv/eBUpSYosAnGDpf44B3gbJIoSiJLdzTdRYlG4gR7yKmkEm6SszXSTMeTei6lIjpQkAqjZIaEQQi+/jE6PNkyAEeGT0ypFJjDAIfBZ1nd72VSp5zafIxGEFHlDEIPNYF2tAlqW4MFKOK0jmUcvlh4Hf99OaCIT0cszw7kuXoCWiXubjgY5K4hBBRMntHZmn3AJL7SAJb+57oMwNRJNsY2wei1DgL1noKk5iwiOS3KXSF1iabzaqc/Jvk20aLDNoPLbJYXPDsvEG9rGmvNnx07z0mZYlrLNumZzQeYYrEQqmrklXbomLkYDZhs94wHY8oyorzyyXbpqV1DhnSA3XrApfbjqmDw/099g4CW3Ge/GWCJ/QdJnj2q5JJrbhzdJtxVfHZ4+esbI/vSJJ7qYgRRkWN84Gmtwgp8EXEEUl+bQHrPD6A0ZrSlLS9S8UuRCoaxCSjN1JjlMGKiBceoyNGl6lf5XHTuoYQPfPZXir25IVC13WUzjEd73Nrb5+L8xds1mu2iwXYWfI4jD71Q0UOo0ny7rQaSvtntGbtPbWUyc8yg2R3797lnXfe4cmTJ/lZGanHUyaTPW7tlZShp1lvmY1q3r1/F8cLnNtyefUSlOfJ06/44z/6CX/153/KH/7wAU++/oLl1YL53px6Nmaz2dJsG6qqYjQe73wpvR/Sz/7fwMT5f64JgJiZTeLbcMGO6SJECvUScOt4zvxwH+kE0cImRPz4Pv18wtefO85aTzE/4vt/9h5zatpyy//yi9/i7QK8YP/4mPfvv49fXfK3v/0V65NnFDIwrhNTOHoYjSo+vHeX//Dv/pQfP/iIX/7dr7h6+IyXlxfEbc++qLncBBbrwN16yq1pTSVBlmtC4zn5+oL5rSNkWeOiAO5Qlg1nL5esTn/JdDynKGfY1SkXFyuW+wesLq9wpWHvcE4bOr7++Gtmt+/y44OfEO0qsad1RycumLx3yF/8h3/P3he/5M7+nKPZAVHNELXAXrzk/NFXtLZk7/j73HrvmF56Pv/yNwRxwbuTHyBFDRiMSimQ3jm879DaIShTsUgCsgfWtJsVV2dXrLcdsgrce++QstoD4Ql+RQiLxCD1fZrshyRzRZssQ0xzTBcDdakRpHmeJRA9qKhQSEAjRInRARU68Fui21CUgun9A7aNotmcY/o5VEXuQa9SSjJ/BBimyDL5s+6AvBu0lRvzn5j72fVi+MYL/hm2tm358rPP+dlPf8bJyRl//Z/+mh//5IPEmhcipYzCNUi3A+v+sY5pADyvATpE8vMSIs3rRExF8HZjqWQgdi3OWbbblvPzK+z5imh7pDKosqIo8vMKcWOemRbNQQjWm47nJ6fU4xcsFw2PH7/g7PQiPdOAotBUOvkYD+BcYhfBtRya3CUG4DKzC0UWrEZS8WVYC4hkZSAyI1zkuUuz2bBaLCkKzf58jlIir/nS+67TLtM5ErKnlB76gJAFo1uGWRlYX77k4uI59Z6iF5Yr21AZyayoCWi0qqko8SIS+h4hBB2eje/Z4tExsI4B5R0SgxKaUqnk/es9XejxGEQunimlmOwfIUWFFAlErMqSGBWF2UtkAWURRUTpSEDSdSUxr7+3TUPf9zm11tNZiyk19WhE223xIWJDqoxH79m06fqaQmJMWh8I5/ExpoK9SvYRWuv0uTGFNKb03KxOEjL5cwqNlyV9VPQ2Yi28wjqISSyh8nQhEnLBGBARiyVES+86sB2h7ek2TfLE3Vj+5v/8Bb/67Vd8+vAJL86uuFxvITvg9AAAIABJREFUGU2m3Ln7gNsf/AFnL15iu47Nck2zXkIuhgfnWK27DM5lkETkOW4mOEgZkyVdZrwN893XFV+vQiTDPHnol/G18Yodqw6uJZ47P9dvvzKfqjf7vP2+yqrXAao3b+XV90Aq5r8JOHv9dW9rQwjETcbZsCaVObTrd+370N7EmrsJ0L2NTfgmae0/BKvud7HnhtfsznAe36/pDt9uu5E5A3qvPD8jO+LKMOdC/j0AurZJvmnegbVpwj9M2MejEtF19H2L65P5JUYSc0KLqQz7kwpk1uhmUY+UKpmuK4P3AUG6aZROi84EpgSCDxgBIkAQmihEkr8OqGMYbsi487/zUWZABoRPCTrJd20gQUMyuo04n1OAdjdw+tzk6yWQKAp5I15GpgW2zvvofALlohTEKJE+Lyzd9YWW6vqmCgKUTImlhZa7jm+9p7WWtm3po0uVgJjYdEYqrE8hFkIoNk1PCCva3jGqSw5u7TMeT4jes16vsV2fpaHpIVXVBV0G/5SQ6LwQlxFC9LTWEQVY73HRE4RM3ghSIQsYFxUhJP8s531iU8SQvfQCN2/NNPFKgJUnJtD0tZtrmJzt5IxCEggZBHC7rwGok1HumD6vDIIxZpNFCM7T3zDDJMRdRSgEj5ISbRQyypROGEIybxQC2evkGRgSeAkJLINU39vJqDJyPgzM6TDErnL0ppVPHnKuK4lkgHL3nhsDZn67uHFuhIxZSp6Yajuimsi/EwIZA1qkqmlwlma7ReCpTAFK0q7XSJ3YWUTQZH8JmUCZ0hQYrREyYsqCuq6oxy2r1Qq13hCjoKoq6tKAj5igaVBItUGKxMjzPoG4g+mqEMP5T+CNiOAGKXOMlFoxGo0QIoXIeO/Zbrcsl0uapsE6zyCLLcsqPZhiuj626/F9QQwJBEJISmOY1BVagisKqqpiNt/HVCXb7LEhIFXfuI7GVjGmB7jWiZmZJ4jaJCmijz7JK4ZxNkb6zhK8R5Ikq15GmqbL1yux3MqioK5rts7T9D02BEIQKawERaVKSiEotSH2jih7RGcRnQXrcM7QSmhCYqZKbjrLDOOUyEDfUOCIeA8hOJTWKGMg2uQ7l7uflGnyteuvw5Mm5qpzPs8JYE0p0fgh4OVVZqyUAiN1HkcSgzc2LcoUGQxIE5e29wgPtRYYEemcpwgRR9hNXrUEaSSo3Vpjtw0f+rTQjal4MxpXjMY13ckV63bD+nwBjefB8R1McPhoQBgSZiOQ3qJySEkMYGKgVIrRaEpZjhBScXJ6xmZ9xv7+nNFozIuzSy4vlxzszbi9N0UiKLShqEfUhUTFlGqudYEwJQSH7XueXS5ZuYBXGgtsmx4tNV326lRK4YFC5/tCgNQmgXC6RGpNaBNDmHy9CIAnyZXyA70oCqooEpvRaITStNZysTpHXKUJ+cTUjIUm9B1t31NZi9Seuig5vnXApquotUFbkDEQfE8MPSE6iJ4oJOBzOFCacFdViRDsxtSyLGmaFgBtCkxRslqt6dotm7bDhsB4PGJejpA4TFewtbdYtRuevDzl449/Tj2ZMJ3O+OC9e1jbMZ9OOTq6TW0MpppydbHg448/Y7ne8MMf/pB3338fFVNf/Rdg7vdoNxbIaQzjW6SlYTgYirwIECpLy1RiUyoiBwJcNWN18ADKQDya05xs+ekvP+HZyVOW3Rn7oeUPDm/xJ3/+gPe+/x73+AsO7YJnTx4xHpX49pyTp7+l3b6k2wjOS8mnDx/z+OFTPvvNx6xWq1R86Hsebc9Zd4pifIvlds37reR4XnLwwR5Xi4b/7dNfMzucU0wU+8WM+eyAg3cFZ5tf8/jkjHlpqI8OKNoN3zw9YT6fce+9Me88OOZyueHpowuaLrBeblDlCrXnQG5AWHrZ0IpLitoz1gXN5ZblYsOt945Bb6FeIm/3lMEwuV+iJyPc2SX26pyr00ecTt7lzoMPMJMDhJYgO7w7pXNnydeRA7D72Ux5BZxQTlYcGo153rPYbOgXUGlD1IK+W9JcfcVkXFOoGTEkHyxRzkAlsDyI5MEpNbjYE2OPVjqN6ypJ2REa4iFK7AEtyEswL5GVRs8mmOKAShcwmkNZgda5YPXGLvVKG+bXQwpn6maRgSkVb7Incl/85wzOATjnOT+75JtvnrNYLNP8Xyn25rMEHL1pcb0D6f4x2zVAN0hAh6Jv31uePnzB40dPmJbwowd3iIRskTGQFkqSSa/FFEUeA2JSQan0bNKmoCwlbWd58vQl1peslg1nZwu6bvC9VciQFDbEuGMvwXDtHdcMEUFabkaI18vOmMEVGQM5QhxETwyO0AVWPVxcLGm3a148f8Hzp99w9+4d/ujf/BHzgzlC3fB/3n1ggK5DhAVUKzg7Qaw02ra8M15xf9LStx2x0Cxjy8K3dNpkz/FUaC2kpu8UThXEKOiATYxsMr/OBMB7qpjsPmyf2HrOB2xMlmxOeKIIRBEpRiPG9TFK1yhVYcoaaxUxFKgYMKVnNAWpOzbrDfZyS9dtsf2KTXdFyEFwMXqKsqAsDdOwT9f32OBYLDfowuCBzXbLZLbH3ByggsVIsMFjvcPLRDIIpP33MdlF7bRB+T4NIeAs+DjFxQ3WlvSdx/kOwWQ3Z+ziiiKCoEIInVilCLqtYNs5rtrIxeWSk6ePePrwS54//pLnTx7y4sUzrlYLLtdrlr1l1Xd4U3B47y7vf/+Ig9sHKFFTzCYsL9Y49RwH6LJGWIvrNvRNWgOF0KfxhbBbfwRSsF/02btbpDXKsAYdWE8qpQveuKeGH2+whuO3wbdX1rRv+P31z6+CdMP33yVtff33b9re7942O+LJ62y0oQ3zqLcx7d4kMZXiem0sb35u+vBXajPDGvm7tn9TYfj6cf4ucO73UVG8CQD8vd/3Srd4HXBMvvQotfOdv7FKy8v+wfbhGthLIHHCK+JrqsPX23cCdF2XJWgOrI30ziJDpKgUdVlw7+5t6kLgbU/bbwgCOp/8RfCe1eIygyopUlkJhVAapQqkNskjTKuUypgDEnrXY/sA0RFcn+KiUzRM6ixCooTIcsnsqSYhxpT2swMuPUidZGshJJ8Go0vQIVUbcoUxnbA0sZAy+5GJZJCuVV6EDjiKUMmjTOT44BgQA/tKipRelTOjJQLNNcruA0kSqBNACSDlJKWDtU0aMNJTHx8FhIBSBm8twUWkDMlbyLnEBAsBoxT1qOLg4AilFJcX52y3W8gsRKQgeotBMq5KxuMRk6pO2w+RpmmShNP29H1Kd7VZ4tpZT6kqBopn8j7TyJAGwRAj7Xa7Y9EopbIsMBAzE0rl/w++Y+mY034Bu0Rfl035B637LnbZszPrh8wmGyq3+fh9CFny53c3nRSJhq2lolASVZQJ7OgtrUtSYU8K/hBREmN6UO18G0n9K+TUoVTne2WaugN20zwzscZkHPh1cfcQiDcqKzKDdYN33TD4vA6ix1wV0lImJp1SCWzJfTvdDQEjVAKovWW53LJeXVGWJdPpJHkVakP0ji6zJIohqcmYHQslDECqjGhtmO6VlHXNZNZzebEgSoHtO1zf0CPpXQr38D6FKgiZQPngVQJ2XAqNIHC9jfwg1Dnhs8iBHXVd74DVIWhiqMjEGLE2mdYrmVhbAkHMAR/O9pRaMxuPMUrQtIbOWsbjMfP9fXRdIbZb6k2DkZomtCmoJZD83spULHDWYvvE4NNaMpYjjEoLnrZpcC5glEzb7Pp0H+Tr0ZMAlaoqMIXB3aBdO+9ZrdfMm4am67GdAy/QUVFKQ60KZN+jpKewkcInGbpSGnSJLwxBpApFSnIdOkmSTiJDSq6SMVfPVeqvhSFojXVdmnTL7HcmJTLm7yI9JFIhhB37WookzUzJozGlKu/CffIDamAkakWwaTzqvEdKKOo6SX5DSvSMBAiS1nkKEem8p84Afsj+aLoq0FVB1Ik17clWBDEQg6cqNBUFtktg8XRvSrW+ZLNt8UHSND2rzYZJIUBOiULjo2dUGqKzTAtDax1913MwmSLQnC8bBDAZj+l6S9tayrIGoWjbjkWz5ez0lOWtW9RacLw/4/axAGmQIlDqgsJoVKEYSc+8EhS3b3HZWZ6eL9h2lrKoQUDnLBEoqyKNk6bEaAnRY+oWFyNegA0hs3bljiUW4jW7PPrE8jOloUKmlDat0UqzsQ1nl5f0fcuoHHEwmhPLEXIougRwbY8Ebt86xMY9xGTKuU3hPiE4ordE3yOiQ5KCdxQxhbp0Fq0NRmu0SlYEWiWgvW1bmqbbyaaXm4Z12+EBbTSHhxMKA5ydUy0lhwdTNt2Gk6sF23bNkPartaGe7LNeP+SXn33MePQFs/kB1jlu377N4fFxYro6l5/5N6V0/9Le3L59fq7BkXTfayWHLCdU9oIKuxlmICi4c7fiyMGj5x1RFWjR4bdrRLPm3aMDbh/O6V3LeLvgw3HBPJbEyw1/9OEPWHzxGWfPnqB1xMkGFy+p6g7hNC9ePKVZRypV0iwXCNdzfDBncjTncrOEHqIZUx3sswk9nzx6xGgMnhHLreC4dhjX0XRjivgOgp6yhLsf3OPBD/6Uq0XPF4/OWFxtePL0hA9++CNCXPPxr37Bl18suHP0A85PAy8fP+PgXsl68xg5ljhv+O3/8Tf83d9+hg4F5UxzcqQ5ODqAZg89G3O4/31iNEgtEWGNkluqUrA8v+CzX3zMaP/HHM7ugAt0bcvp5SmX64fUI8/+5D5jHamNwrVPOTv5BZfnDxkV95hWH/HewW2k9LBeI0pNu95y8uQJ8Xifg7kGr8GMibIG10NREkLEejCm2slrJC0Rm1ktFYgyz0qHxM+WaJe07RVKe8TUUB3dhmo/ydy9zRLE+Er/id+uR36rt+1+zquWa+kh10jwK0jxf0O3/idqo9GIH//kJzRNy2Kx5MGDBwnGuKFeemP7JwPpUpJ7ekikedx2ueHzTz/l5z/7O+ZTzQ/f/x8IMXlcN12brBB0gdYGUaTivwsOH3qEiCgZ0ToFRtWTkqZznJxe4HzBZtvTtSHZXAhB7z22tVR1hRtYa/m6RiCGBPpdt4Fl+WoTALloHGPEtRsWlxdcLtZ89vA5v/jlb7g4P6VvWkZlwf7eLBWM5MD+vyltDURrsesF/fYbhH/IuNvAaY/48pw9dc5//+cfcvys4ldPHrFsPDakdVwfBdqDlB4hevAWKTVdhEZENki2pPTStRAQSBZALnkl9zFgkXip8CKFYSTbH4fUBjOdUYznqGKMqab4bWC5stRlyXhu2N+L4Bb0wSOvGmJwnJ6d0GwWRHwOYnP4hWe1XaGM5vbt21ytV7w8OSOIFMzQtC1Hd+7wzv2Wd+5/AMgEzjmPrgqMNkMoLoWU+OzDHmBHPkhXK4KQxCDSfNBFhPeZhwsCTyEkSkTwnmAt682Cp98858svvuHhNyf84tOvuLxacPbyGxYXL+jXC6JtiLEjEOi9Q44rwCZPvZFhfDBFjEq2W08nJNsQkyewKXZKD1RFWUmCswifirkxpv4cYyJ9hOjRDGw6uVurvpH5dRPc4rX57nfMMwZf3Jta7jeBSr8vU+5Nv3sbs+saDGcXlvft97xZWjq0mwy2N73ubfs1rOdf+bwb+wOvgnNvYs8N23/TMf2uY3/b337f134XaPcqmDgc0WvvTy/MeEbqVzHPSQd1XRA3WOO7DxuIRum8+/j3AOikMjifgLngE/uGkICtuq4pCs1kUjIu5yAy+BFJfm4qIkOKeG7bns55+qanaTYEvwGlKYpqJ5EcgDpTJjlNbSQ6y28GTyMpFAFBn423hdQZQAzpoSkknogSKqXK+ZwMqpLhd9/3WMLO9ypGcD4gQ0BLBeS0IDwhSHrfIzI6F6VAKZ/UBcETgqcszQ5cStKwxLYQSiJiSGw77xOWr5KJfJSJeiu1AmkRKhm8ekQymc8ply4KrHW7caPrHUpFKBR971iGNV3bMqpLDm/NOT4+pioLnj9/zmaTYrU72zOZjBjVJT4GNpsNGsG4rjFK4kuDDyHJIEcVqm25WK+xNuyMZ6PPQKZQmTnoEEJTlBrd59RVpa87qhDIAFEkuRwxmfsn/5P0UcPCP70mSWwzGTKBnflGtd6jpUzpZ3kSghQJuMpgXWKm+B1YNjDsnHOYcTpOqfVAFqJ1KZW16Tucj8SYkoLTTXczRVhgnUPIuItJJl5XRd5ayRgG55gORmTTlmupbGI1DcwsQQJHkvR1+NyQcyFSNcpkWVk6rlRdFGRDyhhwztJ2DV3bEYkUFwVlWYIymLKkrkqqqqRQmr7tqMqSoihwWu+ORaoEA4mQHsqmKJnO5gTfoUWH0TXexpz4dkjXneaQDVhutmxcmwzttURqQ99Gur7HaIORGYDL/oA3adMDoKW1BqlwLiVETkYjBILCaHzfs10taduGRosUQhPSwsf2fUr3HE8YiQToLhYL2GzoEdRVzXx/P6UXb1t8SBOVoDxCmyS99SGlUUuVvPqEBSHzpKvFi+sq0yDxFAi6pmUymSClxvYeG+zuNfV4RB8cZ5slLy8vcO4BNQW+CQTlUGGMihG/apiqgok0mKiJURCMoZeKPvgsQ+gYmExATioO1EpTFIIgoLc9hSkIQNd3Cex2HqMlztkkdQiJEWGtw8SIMRplNIoEiqtcGUMk1sPOlzGD5gMjw1pL6HtKoSnqEeOyZO/OEUKllF7XWKLSRCJRpUAdWRZs+x6xXSPLgmJSoeoRTgSkURR1xbZv8SLJQF0MuRDh0GZMkCkUqKoKlCnQZWRSjLE+0NsOM5kSIvS9pSgUXd9TxcT2JkSclDQ+UETYG9Wcr7aUUrM/nbFkw7geM5vNWLhLGreGGDlfrone4gLcvmsZj6ZI4agmU0oFxICOjloG9vb3OS5rtFF88eQ5TbfFK896tUYpTdfvE4Pn6PAWs8kY27esmm1akABCG2Tp6Qn0wedwI5mYjBngFtEnwFQnG4au61Bdep02Bav1hi+/+gq/bPjTn/wR871xYkhkxp4SiqBSyrMc1+hVg3cpLAcCi6tzvO2Y3T4kGmjaDW3TZDltGv+1MWlsiWuIqS8uV2tciOzN59gI602DUwpdSOa3ZkhheX7+ktFIcRAnbLoZF8srXGdRRGzXY3uPiAola05OVnzzzW955713+Iv/7i/58KOPqMfjNE5lae1QkLmeIP9L+29tCWy56SImds/o3f8lbL3g6fOWF1cN5VTx0WzG/qSgONij1mNaBWYWWT495xf/+Wf8+n/9NUfHB9w5mPDi0Sl22/Li+WMur75mvhf4t3/2Ey5frvn0N8/prU8hMmpCIQPHR/c4ujdjvHxJvVyzWG5Znj3EFgohPS+enSH1hLKY8fzR5xxNLHePDgl2xXg24d9++AG2POTKGU5OV3RuD1NK+hY++9VDQjjFXXr+5KN/R1l+n9/8dE2z+pgf/asRx/OOg/v7EAP/Wgruvn+XwozYbp4Rz74irH9EHD8gFrdQo4okI410/YLL1TOW7SXVvObBn3yf/Qc16+YrNhdLXK8wZo93j39CWTcU2iB9i12f8fUnf8snv/wp7xy9xwff+4iLx4rlo4fs3+lYtIHi1keMbo2YTY6ZH9+GaKCeQGOhXcFkDKFHi5R4L2LIfqwRwhVCXJFYbHtAjY+Ozl4S5ArhVnSbE2ZTjRoLRLmCApA9Qt5GUjOwk4b2KksgMkgud7BMDBk0GjpZYmTf4FPc6H1v+GCu3/qGV/2TNikk+/v7/Me//o/EGNMcbDiM30Xg/UcE6a4ZGgPTyWFMiW17Xj59wvNvvqZdXTI5uksIHRFLEB6tFUVdI3yLCwENqEJjKkVjt6ADKM90NkIWFT0doFhuOgILhNDEqPCRHOaVVAhFVeYwK40PyWc2RoGImujy6VK56Oo2FEUKN+ttR1mUQKRre5aLFS+evuCLz77k88++4OnLExbtltlsj3ffucf33v+AB++9yzvvvENZlgwEl0SRSGsAIonREgKr8zNG/oTo1ohlh+wv2bulaJsOoxtEbPGdRTkFWxCVpC4M+J4QGkoCvSlo+8A6WjZC06FpbE8XOtYyclTvMR3PUFJgQkcrJMveEtUosewFCC0JRlDujxgfH/ByueXJyVecXWxx1jCpKvY2grvbguM9iS7S+lUAVV2zWiUbF2stvrdY2yONYjQxXJxfselbYi7aKaWxMQX/VPUIhEjMOyFQRVoHhRhTcGJitlAag7c9WiSyTd/3SYonPJ4ldWWBJiV1b3qqaZK0Bqfx0bBeL/j6y4d8/Kuf8fDhJ5yevuD50xc8eXnB2banD5HYd0TbIZxFMTB6E/uy33Q4JHo8JbgJm1VNGzVN41muNrTWEUyBqcYoXSGKDq80vkuwrBQx2WWF7NGcxyQp9G4NOhBFXmfevx3kGcasb7e0ZpO7++/69Tdek4Ea79+cHntz22/ahwE4GzzV3/begdQSboyar4Bi8dvA29tkpW/6+RXCzI3fDzLXvr8OAn1TG+ZnbwIth/2/2XZklrxN59zubzc/401Mu5v/vz7//pXz9Pr5uZYof/sa3QTXhoKDj9nCTKQgUpGJKFoN9lYJmE+qJg9Ck9ZumSl44zgifueF+Lb2nQBdWVZImdgxLvpsoO9o28SeWgiLDBUyG0crnSb/whSgQAtH3xd0naXrHW3Zsc2yWUQCmqL3WN8TukCvBLrTaCUwMjIySZYnlEaaAmHAqIKiKglSsliu8T4ShYDBay4kMM755L+mZZK++hgIwiR5li5ApIuvsp9SjNmjTSZ2UogeI8sdc+r1Dn6zQw2LW3HDc4wgIDq0EEij8wXJLC0pU2w5ZnezDIuN4cvbQNd24EgVASL4gHWJHhlj8ifqnWe9afLnC+bzeUqsDJk5KBTGlBjAkACRzWaTZIIqez0YQ1VURFMSdEnRd4DEdz22S8ymVJ1IktLO9oRtAreikkQGr7nryOYk0cpeFEOnz0mUIopsQu5fYdjtbr58PYoihQqoONxgKbFnSF2NMU8ehUxSP1LVJ3iPcLCOawolEdogpKT3PgEIzmVvxbQ1MdBQd2XRNAtLaUYBydBH8t7l70NiFfkQZf5h0JlHbk6mbvQhblQLxHUfkm+d0Q0DR9ono5PfyHhUIwDvHUVpaIt2l0rsfKDt1si2YbNODMdSm+TlVNXpe10jlUIbhdIa6bNkO7Nheh+QMVKYZMjqSoOUBQeVxXuJXqQkKBcEvY/YzDLrbaB3g/TS7YC4m/LloihYr9e7e2kIh/BZSh2FoC4rptMxvuvwfUuwyQ/Eh8B20yBJ/asoK5RWuBDwPp0D7xzLJhlqR59A+/SVGLTW2gS2e08S5ObJnU8+lc45oirSfSDYsRdDSOEiMsv8koRWEGNiIw59XRcaWWpWtuGrx4/5dL7HO1XHfS3ofGB1smC/qDBCMRYFlTQYBERBF2FrE/NKi0Q4vTlODPca+OQP6RKjVeS009SDxe7eS/dO6mcegXWerrMYnR8mpI3E1EnzdkBkKwEGAH3Xe/MDUUQKY6hmMw7mc6yPrH1MzFYZkseSivQx0NiedSeJ0iG9o1eKqhrjRKo898HRR4+Xcsesm+3XAKxXG6Ivkj2CSeC8kAYhdXpI5spVzP6mUitUCAjvKWWFFrDaNPSbDSIqJqMJnY9cvniJDzDf2+f28W2KomC7WBCsxQ6en8DZasPHXz5ktVrzwb1jDicli80CoyL7+zN0VRF1QYuiOdxntVrz6MUZIQici3TtFhFTiJGUAe9tAqkzcBZVShsXXhGloI+etk/J2krJ6/FBXssAQohIqRFKkZJ6U8L4crni642lFJoH799juj9nqhJbNGRPzlQwyWCzBiEj3rU8e/6MF+st97//Ph98+IBKa4SApmkY1QIlJevVCqMMUiQfMWUMuigYVTV7e/u01qPLc8p6zHi2RyBgKsOdO0d4GQlCcLA/4d27xzx9fkqzWnN+esblxRXHR/c4OLrPD//wj/GipBqVFGWVwPv8fBgkKv8CzP0DtDiAdK/WiIewzoDAC2ito7Etfb/Ah5YijJkAQqjEPhYGtEaXBUcfHCKUZ7toOTvd0qzh7PlLFqvH1JPA3Xv3+LO//A/UsuZ/Nv+Zp4+X2D4i5QwhAxfLhsav2NpL6tGE2e09Lq42NLZj//AW47tznnx9xtWLC967pbm7t8+P3v+Ae7duExW0UrEIFWEr8F2gNMne4eT0GcurDfsTyd5sn3fv3WM0/R69XfP0yRl7ozX3j+5TdJ7u0UNuj2s++E9/DLpk++XPCGOPmIwR0zmhntHjECKi3IaXzx7y+IuHHN+acP/WR9SVJMZtYmqrhr35AaPpMdY2XLw45+r8BTo45mPFg/vv8O7BEXpyD63fZbY6od2eMBsZpvfuw/h7XJx8zeLpGftGEANcLR7Ru4rZ4RH7d47xSmLGU6QaE70gWocwgeBbbHsKwdH3Z0ShCTrQxgVOrSh0pBorVFSEZYdtrvBmi69ATfbQcpIs4GMgWRfIHSgCiWENLsudIkS5C3BL1cksW4wDc+p6RhQzO3iQaA798Z8bk04OxVG4nhq+qX2bZPGP3AaLFTBaIUhg2WRUMN+reV4GmmbBanOFUFCWJVEIeueplaaua8qpZTx1mMKkxaJI8kldjFAmsmoDTWOpxhBHEqKmtwHpEyOs0ArbbQnxunAjkWkh2/doUxFixHYOpSSqlBTGQJYiai25WlywWa/55tFTfv3r3/D5b79gdbmmrqccHB7yB/fvce/+PX7w4Ye8e/8+ZV1lWV2g63qKsgAREVGl/pZZdCEIRAti4cE5cBqhCxA9jWvYdlvW2w1d4xFWYXSFdJKAI9ATlCMYybrvWVtYe+iQ2ES7wJOCAcdSpXR671lHS2EdtfV0oqdtW1BzhJFEYdk0C/qLyMXVgvXlFX1jaTewuQhsS6i5xXx0gBYRVSjKqiYGg+0lzSap2CSKEDTRK/omcnV1RRAglKKh0soCAAAgAElEQVSsx+iywAcFsaBpbALLSX0zEndrLSmTdYoAopRJhTSsa3PBXqmktmibLZvFJaHrqZXGN57PP3/EJ7/6BZ98+lOuLs/48ssv+fLzT1ivzylMxChNF6BXZdKqhQAhZLVQkgmDQCEJKDQFIlYEr2maiIiBTePYdknCixCg1fVqrQjoAaSyaf4ePEkJAIntERMwklhwrwJV6TDfQrLYtd93QPq2NPP/DmPuTfsyeP0O73ldCvomZtjNL3ljf14HoW4CWG/b5x3zUIhvbf/1gIe/T3vTcQ3g3XdJXF8H+H4fOfLbmIJD8MTN1Nq4k0+m7SS7sVQgZ+hbw3aHz8k+7IljM4xJMo1TO5Duzcf2evtOgC4du0apzIQYkgjxWNuzXjYouyW0W4oyJaOaqkQUaSE9mRiMVOhKU5jIyNSMR4EYBcpotCoy9XpL3zUkrlk6boWHvkmsARvorEOIniAVUWgQino8QWfNf4RMs84XLKahSURQeREac2Whty6BTCFf4JDAr+A8UafZqsqvT/OOrLnOC96hY7rg80JYoeSuhphOviAzvGTyUxo87/AIIXMiKggVEcohpEL1fUqy1ApnA96lsINgHT7YfFEjRE/QEq0lznmWmw1N0zCdjdmf38K5wGJxCUChE4igAZGpv847XJ+ReZkAOmEtfb4JU4ItmKJEBbCwk4Qm8KfDOQsiM6F2RpRD6mXMg6LILK+YF/7XNVchdkpXghgG0HTDpHMvkLpI1ydXIbhx4xmZ5K0hD9mCnCY73OQh0jiHFTJXhAUuJjZoYk/mwT0DcwKxS5sdWqJEi50XXrgxgLzahsoNu36S+scbaMDwynEkcFd+a7AbBsDBwyPGuEs6TWmnGiWT0bQ2JaYwVHWdDOOtwwZP6AQ2h27EEGhy5dNkadxsOqWsKqqqoqjKzGLLII1UbDYdRkZqETDKgKwQymCMYFQWGB2yoazAI9MDcVctT4voGHzqH/kYuq6j6zqKothVSHwETwqUUFnqbq2lJSb2Zwb3gnf4GGj7DrH0FKWhriuE0rjoabuepu/onceFgNEFQhf0KqCUpq5HFGVg06Z9sBubAE8lCU4kirIU4MNOGh+UTtJPcT2GKJUqU8O+Otcltlf2clRKYkqN3XpWXcOXD79mLhTcn3H0zj5eVNgI7bKn1xLXe4SLqCjR0uB1QVAyVaWlREmBluB3NH2yYXDqY9Y7dAZtUlBEBqkBEUKWv/hdFcd5T9O11LVJwLuICSxSyXcjSrEDjsmgfnoA5b5NGttiiEipqMrE2AydvZHoLOitpe8sUTp01NQmUpgEqLXBc3HyAl+OWHeWqBWmLJHGEJTCxZgYcd6hg8GYkigibd9hvcOU1Q6kQ0mCSBNPgUoM25igR2ctUSrGdY1ebrg4OYNygx5N2ZvOWG6aDHZX1FXN4XyP2Hdstw1Xm4YoJZvO8ejFCdumQRlNPbpHNZkiY48RgWlhKOoxbRBs2pb9Ucl6NmFrky/Kuu/YLBcoAiJanOuY789TSnoISNvT2h4XI1EqhFIEkYMeSJOC3TiQr4f3KfDGO08fHc56CIIYJJu24+XLU+Z7E3yM6KLAeYFzDhEdZlgsi5gYpd4Sg6fbrPnm64d0dsN8b4xUFZvVmovLK/b29jAmyYqkEoTe40L20ZOp3zifDK51UeFMxWRvzniqCd5xcHhI5z2L1YZpXXNrOuHi7JLVZs2jh1/zm998glIjRvUet++/z7OTC5zbImWS0b9eafxnto7//2xTAqoycu+wYCQL1uueUgWW0RFKA7JA9B62K4Rq+fCP7vBv/uxHXD5tefzpc6b1mEmx4otPV5wsT5jN3ufwzr9ifXmJcx76FrtRoGYpJbFbsL8XmU0L7hze4533fsjjl+d8/vwJ03fnSGURTxtsE8BVTCd3COYAV9/jyYsn/Ow3P8Oxzw9+9Ff8wftHTMwpG9vw6Fng5fM1vS25dbvmzgd7/OgPP+Kjfz3hk49/Dv1jus2al4sTvvjZ/8Xhrft8/8EP2HjHajTh4J05TPfASPqwxfktkzJi21MWTz5j/eQRH3zvXepS0q1b/CZS7x9Q6gpcj1Tn+L5hvbnk8nxFSYHuNObWhNnBbcRqAVe/ZHygGH84RR7UEMdAYD7fZ2a+hzaO0+fPefb0lNv3PmR+yyD0AmkkQjQQChAl6P/K3nv9SJbld36fY++9YdJWZbmuajvkDGfoZldckguBK2mJfdaD/s59W0iAJEpYAgtyqSG549pOV3d1l08bEdcdp4dzwmR2dQ/NShQEXiC7KyMjbsS9cez39zWCsFoxLhdoOUXS0q6eEfBMDw+oJpI+AWnMdie+hnGKEVNsdQTNEVHMSZREj7Tue4lUNvx5NszgmyyBMgkyUCJFBuVE4LtQq5vLov9X8a2/y3ETkBOwHje3iNz6//L/cZAun1qype9lpnv+XAElI7fu7PNbP3iP6K5IoUUIT11PmEwmWFORtMVoUMYiZAZQlZYYq6iqnP5eEBW0Mhwf30LbhuhEUbzkGyGEQGuL0YpxdFwtrhjcwMROgby/QwSEcNim3J8kcINn1fa8ePGSx48f89FHH/H69Qsuz8/RWvDWg3v80R//N9y/e5f9w9vcuv+Qup5SG13C+/JnS0JuLFvWQOW2nUoQGusawhcCt0poDYvTnq9fPeeXX37JZy9PeXba0XsLvsLoBhkUXRrpaPHS4VCcDZErb1h4RZcoRBBJFBEv4KwfsSmRnGdUnnncJ0mJSnkPM8RIkhKtwPgWu+w57C6Y6RG5b6lvH6BNhVQR20isX7K8GrhYrGiXA4EGmKHUiJQhX7MAkRLKKO7e3c+eN0pSTabYqmJMAW0qDo/2kSJuwYPdEmtMZe9Umm2MWz+xVMgXUSF8g45TxiV8/uFnvP7sFLdyfPLRh3z68c95+vxTfHSMI7ihxxiFlprkDSlkH8cgU/E/ztLotbpKlr2XFoogsx9XHHv65RV+cCy7gXEYEL7ww6REKEFKEWWr/LuWxEETRUKOhUkWfWFfFIKIpLyvzF51UpWiwRt6WNopIrD1/t0FjlJKeV+7ftVOn78JEL0JxNoFot4EcL0JpPq2168Lleu99E0gbu2p/iZw7ub73/wsQhQMBbGprYi09X8n/foU1TcBiW+65l0AELbhG7+O8fhdANfN7+LmdwgU8tHOmvoGQEcqBXJVPnexnFqz5W5OYhn/Kf9Z/0kUXErA9sG/20TxnQBd1xY2jg+lEeYNojGSqjIc7x0wNWA1aJGy4V0MRJeBoIthkUEoMuU5+LyJVMogg2J/f8o4Gmor8bUpCa6ZDq0EhG6FH13ecLuQN/LO048Dw+jh/DzTZwVIU6F1llvaylJbTYzFL0obgpAEFGNM+Dgg/LrTSbIPTq4uyBgQEoI0QEmnFALSGgYqX1RZgwS2kblCUNyiJIKQacQpFkAqt3DJWkiZO5USoKUgGZ1fKbLx5SihmQTcmHCpI47ZQHVN440x4X3EqSzx9VpS+5grW0rSNNkvq9Jr4/ZNJC1SapTMyZQhRcI4EMaRMWYPA1/alhJi41EmoJiDZ79AGyLj6LMcK7EB6kII+JCQG4nc7uZelok0lYKIKonqCinTNwYRXwDU5HO6YV6M5ATSdXVgO+Vkz6bNGkmAlHrz2ULMjL2QcgAHAtIGkBPb/13rN9vH1+BEHjB2Bt10Y8CV60H92weP9aPr6sQ6HXN9zvUAoYsXlVLbeyLlll7sg9v4iimtMdZi6zoDI85h6grnPcH5nLLpPdF5urbDe89yuaSeNEwnU6pJk43ny3mUrehGRxCBQUa0THhT40TKoHrfI9fBISEv3LPPnERqhYygUiS49UCbP/8wDLRtizGGw8NDrq6uuLy8wpWB0lq7SXYN45DFC8U/RZHo+wERIr1SHBzsI7XEh8iq71i2bQbyUvY1PLp1B0KkbzuGrkfbCjvJyZrtakWIkcoYpBCkGHHjkD0yAaMlrfeEmEMhUAZkTidNxI0cN4SACrJ8Rwm8IyAxQiGVQBrB5WrFx7/6FXo5Z5Ye0E01SdT0xpOMousT4xCILm2AsU26KjGnmO00yQw9ZcA4J/gFAln2F0XEpQxwCmFK1dQTYwBNrvwoRUKSBHgiPmXmaVoXGRJlIZP/HUPcTMpi0+fyuWQB9WLIUusMpGamqx8dwQ9I6fEmFUAvX5d3jteLS8R0D6+q7LepDBGB85ExwBACzkUSTZ4zjMZYTWVrep8nCqkUmaybi0cprv1vMhuAmEFMZQxVU5NILJYL0jiiqylKC1LyKCVoKs3B/h5WCtq+hxevuGo7+nHAR8npcsVnz56DgQe39pmZ/D0pm1PslAOFpDE1R7OA6hxGJXQIrNoVvm25DIEwOnTWtROLNcIwjnlML8bN62JAKlJfF3IqMElsLAAykO3p3EDXjfgQUdJQW0VTTWkmM0zdZPZcLN6XsAkESBJc8Axjj9CSW8dHHL14xer1az7867/h4fvf59atW/TDyHK5RKmeumqYTmc45xidx1Y1UkqWyyXLbqAfHM1khmtX9GNCN3vofqDWllvHifPzBVpa/Jg4nV/Qrl7z5PFj/vIv/pLTsxUndx9y/+G7jElwdnbOi1evuPfg3pbFws4i+UZF/J+Pf+DxLUSBNWt22iimteTW7DYpHBMaTatgFTJMMxeaJtnsIyw6wsLz6Vdf8Ff/8T/huyU/+t5tfucH/yN/9fOfct4Lnjx+xVeff8LZ+SURj55kC4xhlWntVTWhmVaMQ2JxdkllDIeHewzDFbdvT/mN99/m5XDFgyOLD/DTD7/k61eCi/YVz0/POTne5/7hAZMmYGKFr064+2ifDz/+iiePX1Lv3WL/5AF7Dx8we/sY1Sx58tELVu0lsW9Z2T2CrEkvT0FpIoI7+7cJdoJzjpXrceMVzcEMFQx39+8weSiYmoigZe/gHtWsyfOetVk2KgKh7RijY35wyP17H1ApyeLzX3L25edIf87dh7eoDmri8pzulSNVj5icNKiJQtlD8EsOH7zFdP8OzfEJYs+CO0UQiaMjBoE2c9AWN5wzLj3N0UPQiWkQJBlRE8DCdL3hihJ6iVRzmJwgJvtEqfG+J4SIWSefy0QuW+cCOyKv8fLmIxFLIU4KwwbZSoU9V9Z8pHVjS1tmz04T/P/ssekbaXO93/x7YQmK796w/v2OLViwa1q//ltKosy1iTh2ED12Znn4vbeo9cDV5Sm2Uvgrz+g92jZU80OsyEV6FxLT6V62pnAjbZ89qU+Oj3j4zkOm8xlIw9fPXnN2fgUiUtcTdGVQxcdL4EFqRCEi5I8W8aPHaIHQeXPqB8/p6QUvnr/myydP+fDDT/jiyRNmsxnTyYTf/u13ePvtB7zz7lvcv3dCNW2QwiCLD3YGCRLJBxIRmTdOrMvs14YwqTCmZmaP6Jd7dC96hPA8PfV8/HzB5y97zseKXta0UeJlAqkJUtJGz0XoWDEwjrDqBW2s6EKdGe1kT1+f9RusYsITkBQGmtFZjRI1WijGJInKoqXEBsc0esywwKSASgOnz17Q7B0SdaLXkA6mVPU+e/v7CDFQK8Okrrl3/wFaCayRUKyfpFLY2uSgP8r+W2VVgdQaaw2+71gDqjmoJQPoErVhUElyYm8s6w1RAIYQEq4PNHaGjomPfvYhn/30V7z8+gVtuyCmDlQm1qRkkFKjk6AbAnHMfsKq1pDIvsmihKmlzKDcgPwyO2OG5PB9S7+6wOueYchp94qyfygMD6EkWSmRAZNEQqaRQqHLIFJaq7cg79JL00zXpzuRN2qbv7HDhstXIHf2iTt7vTcAT286vimb/ObzdwHAm++T1/FbUtBGbVeAq42EdFNQvw7GRee/8djue/46FmFe929BQoEoZKRyjjcAiNdev1aTvYHFdvN615/v28C8N7HjdqW33wbe3WTH7ar11oqz3Z83AazrgEpRlCdaa6TRxCSy3dbO95P3k+Ver0NyxHrtvr2u7wJp18d3AnS5HWbKMilLaqy1NFbRVDVHB3vUKmJEJOGzT5tWRKmIJLp2gJAI3jOOHucCMWTZZZZDFpN6sgeONSoz7lQGHdx0hjIRHSNKarSxhJjoup627Tm/vEQlTwKUzANLGEeCW9EVZlIyBqU9SWbzdSmz1A8kQ+eLtFDlmxqyhNcTUcrlyUEqskvTen1R6J6C7BEUs/Y9pmz8lxPwdKkwCVIYsvSNrVxpvWleL2SEBJVjXklJkaIGApOqzlKKYgAbw5rVpZBaZiAiRSptMNYSk2CxajGmxlYNVmQ5aIpbA9BYGoRQAjupSQWw8jEhokBFUAV4GLrMYIyRsnEs51G6SHFzymSMaafN7Pw7rs1bc3110wnXTygDj0p5kF0PMhuAzofcgZzPbMRSwdxQd9esplLBzCbXaZNcI5XO1hQlSCIlcYMJVAaLzUdO2zUkcYuEl1xxITPLTpQ0oE28d0pQgJT1+TMDrtRW05YhuEYBRQFns3yxAG8iAyKyACPaVmTkfd3JC4KYsseeUrkNyIIOC50j1aU2qCovjEIIG4DOjWNmjvUDSEHbZbbZMDjUcoXSCm0MtqkxtkYKS8DTMaJlADXLLDOVFwnBO8ZhoB9djm7XJTFXyS2QXY4svUy4cWCxWADQTGf0ztMX2XEq4HaIgRBGVGVZrVa4IfchrRVt3zN2HXVlUdYyRk8IiWXbsurazKqMicE7hLZopen7nhRTYR5WWOuwVUXf97n9KZUl6imRQvE5FBIlQ04mQxBjRjRSDCSV/eAynpXbg7WWJAKIkkKdPMYI6toQW8HFquPpeeD56pDZ9JDjeoLSPYHEMnjGkiidXMR3+TtKIWzkxmUwLv2rTHoRIplFWgjTrGcAKSVaZjB7PSmtmbtVVUHtEMoQhcwsqpSrwqRQPn8sEu4SFlHadV4q5/cwWmNkHjuz9NpgrUFpRXKeurJIK5moyKw2zOqKxlj6lKXmlDTeJPM42g8DKSYmCFJjqasGqRPjyiPI39m9B/e5GzSLr18jpUZqRZIFhC8BItFBiB7b7FGbmsWy42K5oo+Bo3snND7x5OUrLi9e4UPk4OCQ+XxCUxsWKlHXirqeYY3i2etTXp2eEWLCicTT83POFmd8OjE8Ojnm4b0TTo4OGZOgHx11M2Vvfsjr8xU6RA7riqmSXIp8fb5dsQqOC60yuKU1SprtIrD07WEcCMkTUfjk8cnnLWBJS5ZaI1UulkivcrHIZTZ4KnNlPZkglGTwIzEpjLV5m6cVSWVQMQPcjigFd05u88Gi5fGXn/H1p58xOrjz9vvcunULyOB612bfx5iyWbixFh0TDB4f8iZVm+x/+fmXz9i3gv3ZlMiA0ZG7tx+geMXyquP+8W0Wlx0vzy/58MOf8+z1OScP3uHHCEbhef76JZ999hkfvPcOs9lsw6KLhZF7s3r5z8eN4xsFp+9+WoG213ygIvsPBCJRClStUUHjlSApsDJ7EUmfU7GNCIjU4Zc9+6cveMsMPD57xk9/esXJn/5LfvDbf8hf/c1P+PBv/5bLF8+JIdGKSOtPsaJnagVzIXB9z5Pnlwx7PX/8+z/m3qMH/OrFr5DNkpOTKeF7U57d72mvXuLCK56+fMbTs4+5XDwnxEtOPqjZNwP91RlhsWA2P+HWO2/Rhjmvzge6seHlE8GsesXJo4r5geDOQ8u0njJpPuD4h3/K56+uOPMrHh7l8Vs3h2D3EdESU6DW+yg/h3TA8d1Dps0z+qufY/cUk4cVwlyR1wSK6D2RxHSyz2/8cB9EhYqWeLXCHxzQDa/pY+Bi9ZIJCe9azi56olU8PPkeKmra1RVhbJnMjpg9ugXa4NwZi6sXYFZMZ5LKWohnMArqRlLJCsFrqDRS1+A9wr0muSXIFokmrQysHCJWMHeQTmEQyFgjxJwk+rLRKMztjTBuDc7lOWMtdUUmkne4VU/Xr9CVpGpqdDXJ65hUNsQ7OFbaaYg3Ial/8uMb4Fy88fjusd6s/tf45G8CA3fPuy7ya1IYGPsWkcbsLzxJ3Hl0xMGVomr2ebXqIWmaZo95JZHJE2JETixIR4iCqp7x3nvv89ZE8879I97/3rvUkylff/UC1/+SxWVLRGJtjdSKEEf8EFA6UNc1s+ksqywAhERXFd45Xn3+jC8ef87nn3/O0+dPeX16ilCS3/rhb/Hf/9v/idEHTk7ucOfkLsZYJJlxLXye251LSBmKRzjZX65YCcUQs4c367XJ+r5pxGSOmt+mH6ecPQ+cL8756uyCLxeBp53lVYw86yJCKqIKGB0QKtDLxCImzkdP5yMpCIYocMkgkBiRR8aochiErC3GVOiY8NJDAdCUC8iQSNLgpSIEYHAoP6DOrojtAuElHxzeY7VYcT6ssPsTZseHRFMRk6cfe0gtkz3B/uEULSDGMYeuCYVSAqk8KIhS4IKnD/0m3GEcFBqDxOQ9iShm9mK7jlsvJ3clelswKxDjgJIDKQjGYWB5ObC69HhnUFZRNxP60DH6UuRlJImIsgKjbF7PI0nCEIXO35IgJ8bjSxBjAZnDSBo7fLcg2YgKIqunZFaxiExoKstcSUqSKD1RaZIySB2QMeY9OooUx7yvJFK4QyRVfK+5Dsas1Wl5fZ3K3u56l9uCQDfBoDcDQ+uZ9dqeeAdIWpMwrn+O6+dakzR2paa7arIYCzj9BoBu/e83f7Y3/757CL5ZAN1ltP06cDL9Hd5v99pvMuaE2Hr8fdt7ra2u1iDcTaBu7WF3E4S7+Zrd812712Xvz5qJunM7UtqGPWzARVH2RwXME9mkDlinuW7oDdvHvy0anV8D0DWTvVIlcZnBJPPmYc0OGoYBZRLabhlXyihUVeVBulybd4lx9EX6KBAxI/dhGIGih5dkMMg5Bhczoi9qfMwbYG0m1NMJWhtms5FhGDm5fQuIKCXQUjCMHYvFgrZdMI4eISUuRtpVSzs6xigyky4KxuDxLickVkpv74TIdFwJxeQvf94oc/gBbLXXUmukj4QYysIiDwzFfIn1YvcmUhpTzMBkiaSW5AUvQqDLeyWlSEZlUKC8PgZZDPVVMavPPmjW1tR1lSs6bY+1sDeZ5BEpJpJPJAVJCFxwhOAI0WdTUZO9nbQ2aCQhgRsjw9CRtEYIhXMFuBwdnoQQgSgFMcoSkEFOHlzfF5mZi2H0m3LFbiPeRDffHDw2e9S1f1lmaImYJYpaZ5+2NSAgStWHApAlKFWidfUgbQC0WPgjsfQN0g5Al7/W/IxS7c1AXZGuirWMlgLIrH0Hy+BQADmxlvqWCOXcQcWG8bfbBvLH+GZlJP9ZsZG4FumoT2XykeC8R47Ze279Ol1ZasA0dd40C4m1OUTFjxlIG/o++7yZnIYoZQvkVNax7wgxV7PUyqCVxVZTdBxJdqBva8Rco+aasQTFCJnZScPo8VXEKE1jLEsNQlyvVqzDIGKM9H2fKcXl+teT1Dh6fGFsxhgZnMsm/eOA1RpEDk6JKVI1Nf0w4GL2BAgxkYTEhUjvHOM4cnp6Tm0MSUjqpmHSTDMwoRRVVZVUrEjwPifLao1OCSVFXhx6CG4khkRKgRQiY5G/phiprEUpidYCYxRSa4SMRa6YAaoUJWGq0U6wioEz5zlNkVnwLMYBH0ZOewhSYeoa0+VrkSHkZKyY/TBjDDsS6926MUhU9gBVBmRCS0lVWWiv+zpImWUp1laI2qONLmnFiSBSZtOmLNP1KbeFFClR9WkTr77uz1upZdx49VS2QglJ7zyTylKbirmGg5nlYD5nNqtQo2MxOtzlitCNYDUp65wzK2z0jJ2AVKOVxZgaCkN2OptxckdyNkhS5zNLNq43iXl+8j778cSU8Ai8FIwp0Y49V/2IaiYc3znm1etTXNsTCSSRGQZ1lU2ipRBo1SDVEXVj6H0EY1i1LWenpzx90XO1vGQ1dHSD42j/EGunTKYNdT2ipaVRiXldo2aaeVVxtVzSDyOBROh7LpYtUmtiTBweHmLrOrfDXm+YbjHHlm36myIzbtfjhlKaqqqpq4au7YvPSwlUiolhGGnbHiE1RoHUMgOaIpEkWR6nMhAzaRoe3r2HDgMvLk5ZdD3Pnj6lme9x584dmqZhGF7Q9x0kqOqKGANudFhrsNLSD0tWXU/bjyxTYtXDg0cP8H3LIr3izu2K1eWKia25c+s2V4uO3kUWi0teL1teLpfUR4ccHByyGnvart36pMS82EkxFjbrPwN033UkuAYkiDevcbdPXld3Nw/kJOUkYg7KEREtsqdbCJ7kEjIahIZki2G3GxFh4M79A77X3cObU3758Sf8z//Lf+DB+++hdcPZ82eoELn/4Bbx9GtefvWEWs54dPdtbqsZp8slXddT1Qfcev8Od3/wiPppTzAdR+8/4tmnF6THH7O6XPLV0yfISvOjD97FNu9wcfWcaT3hwye/5PGnH/Ls2WPe+sEPeST3IWjuHp1wYPbw547XX3zJ3jRwevYRP/vZX7NcrPjBj/5bfu9P/pD+IPDy2a/o5SXGNAhTgaoQQVMlg6r3EHoCKITv6IaXXCwG7p8YkuyJ3fPsP8UMYfYRoiIlh2JECklyAakl8/tvM7t7xNmT/8JXX/2SQ7nH2z/4bWTnuTyN+LrG7k1o7B3GtscHSx33QVhUlWj2jgjCg+1I2kHI7DSRJLFb4C5PMWGGqAHniBdLgmhR88iqW3H22RmqnzFTLXvewYFBSIuZ3CdpRew7lFG5gpj0DkEs5aJ8yj+SUrGKDr/quTy7pO1X2EnFntjPoH0JvUopV4rF7n7lBjh3o0n+0x1i/anW43DaeQyubbjYjtX/VUC6m2+x+1h5OCXo2par83OaOlHXDiFGtOoQM4Oop1gLQmhiEAxDRMZA1TTs7zXcupWYTOacnNziwa0jpsP3mdW52O1Hx7SZUVcNta3xZe829gMxeXQtqesaQQ6mGtxAZSRD2/PFZ1/w9ZdP+OKTT3jx/CQUVQsAACAASURBVBmrdslbjx7yb/+H/4479044ODrk6NYxpqpzoU0YhMiFKqXN5hrNGpAJeS8jZG6Lqex91vsuEJknFfP6B2ORt+9w+If/Ch81T37+M74ennEeJ3Qm0kZNaytcHEky3y+jDTEplLdI7wmuz2QKsjJBASaV91UapxRJC2RlMQIkEmUkUkQskUpmGCym7LOmTENVTzA+EJJkXPUsOs9qdJjJjJOHD6lv3eKry47VYkkiUTWWSnlSDPT9ir5dEf2AEtnjt+tbQnQECd3Y0Q49zXTK8a0TmnqOSCbDAklkK6eU228oa8IQMms5xpi9fcseRIrMFLLWkkIHKQNus2ZGP3UMncOlnqvFOUGDVDYz2oQA7wkjJO/QxmY9WekyBS5Bxny/tFxbUSWkTzCOxL5HSoMRpaC43rkJQZRFB1CcqaISJKlAG0SM6Ji9g4WDKCMxuU2fuQbOrIkjabd/Xz/EBlT5Nd10y+rIr9sB29Zrl5vMtWvv8wYW2/o5aw+6b2Pibc5142+blNXvAP9+7XWR0Np8I2Dh29hmNw9BURh+x/uu94UbT/k3nO8mwLn772EYNufZ/VzrY/f+v4mhZ4y59vvNfXqK6/tc9rJrFl5KyKQxdicEI5aiVZG+ip25bT0vpLRVyglySOk/mEFndAXJIWUAstQOl9ld3vuSJqlKUkhmXQifwyKE3krxKqOZNRKlDMZYUoBxHLm4OENJRQlwzOd1I27s6Fwiao1LefPeDSvawVEZi1YClRJ+HDBKUFnDtDHIRnPQSIbO4hKMUdP7xNWqJy4WjKsB5wa6IctkExKtBLpuqLQpQQ8ZM5VSEnb02/nm7syVZXVxreMktWFghbKIzS9SsNN4QiyUy8255Ma7zBeWfDZ8FxgtiMFB0sT4TYBOqQwUZrCvSL0ShBDRCFLI1TKRBGhBTB7nHc4NMIDUGaAj6Swjk5rgcxiEtbm6kVJCRwkYtJTEmL2htgPBFtXPlOFyO2IW/IrEJjhh937ugl35tmUZXLgJ7KRtkoxIZRkU48Y8nJhleusF3aYjygShgIZCkkRO7I2prCXXTIx11YT1OX7dQLYd5PO1SIRI5TvcVjc2nqvyeqfftpfrMq0E10w9YwltIAZS9MhUNtUikWKWLaaUjdeVUtiqoZo01FWDtpqmtqWdiOz5JrKHXfRZsjiZzPDe048jgxtz0mrxZggx0LYtKjhUe8lyIRjPPGqvI9WGcdlivKTresRySQpFIi7y4k4pwRgyFT+s1dVrMA6xkdju7e3RNE0G71IeO7LENTKOI0ZLbFWhYNMulFYYWyFNZgqZylLNFHYcWLYd0jkmMS+Qks+y8P3DPR4+ehvd1FxcXHBxeclqteLy8pJ+tczSe73jsSZ3wajtZBhjllioKAnBAQo35n5opc2sInKq1KSyKGnRekbqIq9Pn/BfvviCV6szvrisuXdXImJgeV7jxAHT2YxOJAgam2RmXqaQfeR2Vuu5QgNSZnmntgZdwhJSYRTncJ8xV5mTyD6HWqF0CVHQJgOKShZ/zML828gpc3o2cTv57cDZuY2EsPVtSDl5ePPclAVRVmgmRjKrKmZVzX4zwZhAF8DKJT7lSU8jqU2FiQEitG3H5RVMmFLJGVIaXOcZU8RYy97eAX1ckVIkxOzhKWVhCweP0jCEkX4AJ6CaTxjPz3j89VdgLYcnd6imEzz5ecvVgv3ZBGNh6CNWKRSBw7llMr3NKA1OKF6cvmbZLfEpcLrq6H/1mFevznjn4ds8uPcOCMsYBEpW1I3mYFLT1Pm6F02Di+BSYtl29O0Fq64jxsR8vsf+wSEySYyyKCnKWJ6yR6dKyJgpuTEFfBhxXmKCJs/NKnsukrCiojJ1DhAp5+hXS6LrsTYxOZwg6zpbShiNNmUek5K9+Zzm4SMePLhPV8348nLJ89NTnj59mmXJr18zmcyY7+1TVc1G6qrsBKVzYmwIka4fOX74Lrfuvos1ezRqQiUMrl/Snqxwo0fK19w9uY0Tgs+fv+JyscIvTvnk8cccHR0jXS4osPZxWS9K4brs+5+Pbxy7245dHOTbnr3moa+fF4ERwYjMC9GYJdx5POyxcoWqBDo1rETFz58+4cOf/jnD889Jo2Q+u8voLpjcsfzr29/jL/7Tn/HXf/mUnkNev3jGW3cq/vhH73H/vcD0aMlkepcf/8bvMHGGjz76gvqywhrHxRc/wQyf8PzyJW/91u8gQkMXX7I8HvGiYrioUG7B0Z2e995/ny6+hzMzWgevqoDG4e2M1+dL3OVAvfSsXvyKr16d8nwW+dnfuGwav2gZ+5GJ/wVGHHAppyyC5zktU3HJ7bcWzJoVYbB4ZxDSoFQixJGhX9E7CGNFeN1BPEfUCTHXYBsYFSE0eJlQtkPKxOgjLgmm02MQexy9VzE7/j6q3kNO9qnlEmET9cFdovQwMUymEwg1YPL4ryY080BEE3mGDwuUyGqS0LYMixZ/FRgvEk1dARNinKL3TyBE0tVz3OUZfrkijc+wIVB3U7yyLFKLN4fsHz0EDErpAtKlnEZPJKWADwMxeLSSaGWztVMKVNag9AxZZb/ba8e68MPWO+nb2vA/7fGmjXvasG0gMyi2x9Yb7puP/WM+w5sfFuSUx2dPn/L0q0+4fVjhh4bgLpGMaNEwm9WMQyrr+4rp/JCDac3+0SF3357wW//iNnv33sYYhUUx0QYjSlE7eKQovm+xgE0hW8WgEorsgZ3tGSLGGLzzPH78Bf/nn/0ZX3z2KT/6/gf8u3/3b7h7/z71ZMJsbw89mWRWlForqfJ9Sgh8yBCO1ob1OlsgQKktBpryBsuliLTr4ID1Cr5IgSWIvQr9uw85tI69JuDbU86/Hnh6OXIWexYaPAGhRqZW4dSIHRWz0CC9xkTFhVzRywDJI5LGxKwaCgiSzoAcukA5grwO1JJGSWqlMrkjSZywuMk+8mCOODzCX17iFi2LVnBweMDxySH7J3v0jISLDoViolWec88XvHj+lBfPv2J5eUkMA4qccN/1LV2/wpO9mQfvefDoLX70e7/L/TsVE11l4kjxYUOm9XZnu3/5BviTn5uSIFEh5BQlA9G1DP1I23YE7xE2YqoKJSNDkozBIRNoWWGrCo2A2CFTtlKKRGKygEAkWfZx2dJJJUmUKuddORCjQBuR9zopq1iyeo1MNimkiKQ0yURUNBnAjYmQMrAiQ8SLQEh5dkvXBpu1NLIAWeXCN2Il2Cq62L031/vjd4Ne1//2baEKbyJv7AJNbwLm4g1Q6VphY/e13/Xp/g5rqJtA4C7YtyWR/P3Ovwvu3QTVdsHF9fvd/Nvu77spsjfZeBvF3o2f3dcrpa79vrm/a/yh1IZT8denWHHJG5/52n1OWxwiFfbPdnW1xUu+izm3Pr4ToAu+J/jMuNJSZUmdUoiyKRtdYJSZLhqco3cdUQqEzn4k0zonsBmlMdpgTPZHCzHgo6cxBm0Utq6oKg0y4dxIP7To0XOxcBAEyY+0o6MDKq2YNA11ZSE5fEg4Aj0BJTKwpGRGueb7txhR7DnPQTuw6HpWnWPRtrRtz/NnzzHK5M8nNSIGvAPvHUIHZD1F5BVP0b2vNzKZcutcGezWLDiR5Z4xBoiOMaYs19Vq46Xm/U4DKwCMEBTvsrT2s8zIt8zaZylFkcdS9M8mpyLJtfeV2jBcKlOjlcR7R200MZSBEVEAo8K70YrgPM6NRB9xPuaB1dYoWZKKvCeSDfcRCtPYEqUOjI7QD0ghCyst5/JkVk1x4UuRUJJcpYjIIEpoRPbEW9Nzb1JOc5BDym15nZ4uyLRlkdk9KkaMzMBYLJN2SuuybJ6yjTKZ/k2pEBVLFEIqEr7SyXYHzd0KpVjXUMTmb6lU6RCRKNdgINcmOcHaP4xr6Zei9NzdbinWVdfN7kht2lnwoWxMAynm604qv1+I+TqzrC+nFpOWaC0xxqKsziEK04a9eQbBjLUobYpkPQ+szjvsODCOA2Pw1yoRIWT5knQ1bdtzubiELmHnNdI5lgNUV4Z4uoeYKIalw7tUqviebHOf21wsIK2pLIIcDtE0OaBCa433nrrOAJdzI971GGnY25uhpWToWvp2RSBgpQYlaGZTKltRTSYobej6EWWXTGOithW3DvY5Pz9jtep4++13+cM/+iNO7t3j9PyUly+f8/VXT/jss0948uUXhH7EuYAIWWuqgsmsyxAJPuWgnMLA1EIitcxhFUIgR4EPAxMmVJXFKEmIkstuIMmK48ND1BwuL59y2XXMfU0vZnx9viK4gdALJo3ENhYz9gjfQyjgaNh6gggCQsYihwajBVYajFGZr5sC0Y2Z7excllalRFKCZNaBEzkII8rsKakQiFiA8ZT7h48lcCIJNkbgKct6k0wbZpdcFwpISF8W7jEitMhjhdRYmQN0lBAomTBCYCVYpbh35y6jmXLRR65Sj4jZGwUyWLjqHadiiRc1s0lFlAapIDDS+yED8EW+oMnWCELG0vdtnlxFAciTRBiFl4LX55d8eXrF/sEhk6ZmajRaAMHRtx1d22Hn+zTNNMum/ch0b8Jk/4CUPGcvn7HoIuMowAX61RlXC8/5InHn7lv0UXDRdtyeWmotmRhJrQ1W1siqwiP5+tUr2rEitNC3A5enl4CmbQc6F/AJnAsoZJE5Z2lKiIkxZll4Ht8DIXnCGIg+2xQkLRFSZxafmWK15LQ95+LslKpW3Da3aOoamQy10lRKImXxWFQS29TY2iKERS47jMlBEG3bslguEVLSTCaQAkZJ6sqUsRDqZsJsP3F2ek7dTAkJfv7hp+zNptzan9COgf1bt7nqVry+OGM2q7ib9rhanrMaJEkKlhcXpHFkKiRD3zP2PcG5DCivh8l/Zs/9w483rZvXAOi6dlZ+MrgiWV0FFs+WGDEiD1YM9hXDcsWwFFzZA/78w4/5iz/73/CvvsIPhr35XX7jziHvHwhW4wVJBV6cvsSrwL2Hd/k3f/Ij/tUfvMUXX/4NBweHHB2/z2++9wFnL57x0Vefsrpc8PL5C57++1/iQqLZP+JfvOo5/uSM5xfPObt6gU0Ng5bMG8ulP+cXX3xC6/e4/f73ufvuI+6eveT0s8+IXc/5y1dYHYn6ioErDurErTszfvHZh5xeOE5uv8PebMqzrz7jsy+fcP/7f8DJBz/kl588JXVPOGkE738woTq6ha5nIBOXZ0958umv0NQcNjOMbHj++HOOrhpmxwF31mGPA2pqUNYQo8tgRmWQtgIvacfAdDJDzSuaGpANJLD1MXqeSFoQYw9YpKxIviJ6gTQggmWkYXAKaydoIRlXS1zfU5kJZjpjefqc109fIJNg1txn/+gOc3sP584IneDo6A59GvBREc0c9k9ISXD19Wsuh5bp/ARlBkhbVhNxs5AihQHvRkS0WYYoFLqumU3mxb+DDGIlud6b5PYlrzfFN3NYCoiQobxvabs7MPQbKaL/WIBsvakqkyM7Mtf1n68FN2we/Mcf22XnBpeS6wfK4ULg6YtTPvnkMavbM9qrCf3qNUIG6ukh7773iFTVHN0+YLa/x28+usP33nnE7Tu3me1HRHUFasogQKdd2w6wTUVV1SQE4ziShMRIiSpzqpKQ/IhIFab4uQQ30jQNv/vj3+fHv/87vPPwPsd3bqNMthUSSkPKa1ukIrHdIAuxm1q5DVjbfK2p0KZk3pMZoQqIRFlX76zlBVl/P9fUv/cBP7h1yCsil3/xn3ny4ZLkRho1Z9mPCGnAqPzNxlwIm6YaL+CKMZdEY0AUqyApcoqjkYp5M8Foi4wlmE0oBAIZA9o7TAFPxuRpo+OSRJKS1mqupOZiXOLUIcu2Zfz0FSL57J2uJX03UsmaF5ctjz/5gk8//oiri1NIjhRHRt9jjGDwPbbSJCWJBA6O5ojoqK0ijG6jTJI6q7pk8b9NYutj5mNCiYTP2uFc3HOevusxKiCkRukaqRuUrnJDrDxD9NkbWCqEExDzWiIFxehHKl088wrrLcfBSYTIbuxrldrGHy/JTSpuUqEUnROkVJQOhVOnBClEUBIZTW68ZR0rfcyhYSIziXPhNt7wLi9A05ohtdPhhJCUb7oU7L/Jert+fPNv+fmZZHNToroLajnntu18s6bZLZVx7e/r167PcI11JgXERCAWIsu3MNx2AL1vk8Kuf1/vCUVMuc+lQmIqAXlvCrG4fqItWHaTqfYmZtxNj7hdiepNltwuAHfzHl2TA+8cN8//phTYXa86KTRr8fYuuLa2RtoFuCU5aFAKSEKhpGJM3zz/9vNSbLm+/fhOgA46MkLi8UEQHLi+I8lElA22yXHcyuQkSbxhcAMu5ejp5fkZk6bG1A3JO4bREbQiJUn0IQ96KKTUCFUTpSRQEWKNEj13dUAEj4wNMoFzI2PXMw4tY7/EThuG4FmsFrjXnkpbJtMJlckpeOM4MoaYO6pVVFikyUChTHC4v08MkbqqmU4mxGFkjAph8yY02bwRF0oilUZKTdEHEUNJGyWToGXxp4gyEImEFEnSMKYEY+4scl0BSJlZJzPGUszePTEJYtiittokovCI4BEpFr+yIvPMznlooTM7JgEkYjGpl1IQdUJqcpKsWiPtBe1KinpS4WMk+YBGosiyqH5sGd2I0DkF1PuQ9ftSI4Qv6ZEJH8sgn7ZUVaEVSoQcjFsqGUpKjDRobUgpZjkb4hpbLqw3miHgvMsgYCiTnVS5nViLNjmBJ8ZInxxKieIBofB+yGEDbiAlgWnmuBiLByCQPCk4BFBpQ0qS0UeCjwihCvsjkAoLcM3SWA/iIopisJqv2WoLhWG4cQFL2QONFNBK5nQnl70QjFZYY9EliSmEEiQiC+CqFFGITYXL5BVDljgSSSLhfcp+gUriXcQ7T1NVHMwOqK3GKkHwA1ftgquxpQ09y77L1coAWlsmkxnTZpKNLquaia2pgsONPd45Ygp5Aog90RvSeERUMHUwxMB4eQ6hRynN1y8WVO0V9fyA5Ef8oBFxgNiByrLQdfVMeEmgTIBJMFc5kXYyaTBGslyuGIaOmDx784Z20TG2A7qpmU+nTBvLMPTE4GmHFrmSDG7AhhFjKkBidYXwgXEYkbXmzsO7fP31C16dnXF+ueDk7n0O9g45OT6kMXD26ksup4pqfw4RLk4vGYeAUDrTs4O8XrURGXrsnCcW30MZImKMWGdzsErySGFwI3gU52mBjR5jBcPQMfRTvJfs7d3n6dlTXr26IPgl0tagLSjD8y9/zi9/MiH0K0LXE+JIFCNIhbUVlQTtIhqIwWOnDaHvqFTiYDYlxZ7nKhFFYJkiC++AGt+PCCVJSuKdQ0hBlbLPZhgT2WvIMvpV9ryMkUoprJJ5DJICYRUDvrBqE2L0VCEXEpYSsBKXFSlYbQj02VJgFAzLnP5sQ6C2NdgpJngUFsKSmDzBeIJJLMbIZNqwEBAIdA5cyEzLpBOekQTUokIOMLoBYWpEhHE5EE3ETBTTvTmhHzC24t6jd4kXHX/7i0847y+4f3TIdK4Iyx41C9A5uqUjhpb53hSUpW4kEytphOPh4YR49xZfDC1npxck06B1zdnS0z55zosu0kxnpKbCy0TdVMg0Irxjv4Z7j46Z3Trh85fH/Plf/i2LfkRjGfrEs2fntMGh9qaIypJUjSAi0EhRpBsyMxMrU2OURoRIZXIys5QqS8C1zqyaURO6hHADVntW3RVnV47W9zw0NbU6YOIS0SfiaKCa49SA9HmxHny2FpDK4ENk7+CI23fuMp9NkFLQdz1jewkBbLNXTLsFy87hkAgtsI3idXvFYDR3jx9iTaRdXjG/d4/95TnNXDN7EXj5Zc+z7gqo4PwKhoiaToqnTNzZA6dshs26DMN37Id/PXfs/8/HtjjEm9GP7TML/pBAJIQCkkcyIpKEVHP2quPP/ve/5vXLj7l1b+Rq+BUvXj4jihkXoebzVxf0i9eYVYdaCMYXPU8ef8zJ7x1z/3sPUHfPeHfvHpOq4Whe8xu//TaHd++wXLSozrN4EvhyfM7hI8u//NMf8+7K0Y4DQsAXnz/lP//53/Dy//gZD+6e0UwCbz065PDgFq++PuUXXz3jeX/BvXvfw3nBz5/9FXv/1094Xyb+9f07zG69xXj7hHg8chn3+Iuf/BWvQ8fdh7f50ckPIR6wWCn6/pz7d+/SD4af/vJj/tf/+BNOVz135iMf1ImjcZ/DQ009ndKvXnF28ZrPv/iai0vBH/zeHzGvKp5fXXKgI6vTL1kFsPfPCdUvOHrwLvb4HbQ+BjEhyoCpNVrMQGlEshn4GiIYidDbdFQ/LnDdOXZ6nAEvY0hSkpCkMCcOc1IcEMKQVgbXemQ9ZzKbMX94H9GcMnaBYQF6/z5JCdTQMj/ZJ/g5Zm5R4h52fgAVaBW5/5t3uKcbdLVHXLaMiw7bWHxwOD9g6gbV1FgTMUYjRGbyCmXy9WQdyoaJswE/ytp0F3R6kx9dLOu2aq1xfNNR1rybVNX1hu8bXf7vD9Il8lyfvZMzQJOtdyMpeFzXUTUNmJqtpc0OorbTtf7BR8YliCR88TNOLuKWAasU1VTS+ciLs56LRSL2K86eXNF2l0Qr2L8/Zfqoxs+m/MGf/C5GWx7eucXBtEIqiRIJQd4rSbLiRstcWCV4Rgeni3NeXpzi8NTVlBAdzvVUMu+hUvK4doHrW9zQ0jQzHj18yFsPHpJSLPPSzv0XOZxK2Qz8w3VwQJQC+/Zelop2SsWsefu8klWydolan357GFmahqQ6PuD43UfYjz4kaUkVKxaLSBOKjNJrolYIaxAllFBoTWOPGdNIDB5izCCcVkhraJoZE6HBC6KqkLYmqQkRi0FkmewwIHAQF1ycd6yunubgNJmVJEzhtHuNHCQp+hzIioYg0CIRuoDowV0NdOdLfDtgVETgseS9m0q5oB18QFcGowekaBGiRaopStlMuEgJVAYXYyoJqz5gpMFoA8EjAiihCC5gpaJpJM73SD3HjwqXKmQ1YxhavO+yB7AvnsVIRLTIAJD3EDFIosjrgqz8S0AOchBrtQ4QksjjQ0ooEUnCEZIAURELOQaR2ZIxBJIv839pB7EoMSiECyE1iohIMQN56yOWkUflzmWk2kRIpJjbWhIJkiYRchpviYIshlVl2NnaMH3Dt2znJ6ylprnRZpgnZYIH5C6w9skjbQkfong7E68z1m6CXLtqrBS2pJDyjI1tUSYQsbEiEInseR8im0VU6Xp5zEub981IUn4fv6Y+b4ao/IvaATF3r5+0DZlcvyKmsuaMsTBms4PkhqRTgtME2WM/rc9RgMEMkIntcC+23nii7J/zawoAnNZWVAXki9vr2xYEdsahJJEiYyYUC6W4BtVKGM6uIjDGCH4sILNESJMJNSGCzn1t3WYy/lP6QHn+dx3fCdBpmUgyMcpIihl9j+SUTuc9UhvqxrA3raisxnnPqu/oB0eIjonaozE5UCC6keCHzMpBEVM2nRxDpHMe3Y8IWxGFoHeR6D2+XzCRicZOsFrjhaHzDp2yJ4p3Hh89Xe/o/cioIUpDCNnwfHRndH7MyX5SQRJYW2O0omlq1sEwqqChSWtklZN6ooioSm0ojZD3CSkVs8mUE40gokXI7JU0bo3bpcg06CQ3PSaJWOTAOSCDmJltMeV+GMsglSflQJYROJKIJAKiGIRn6bAuJu4gtj0LocBIhTWCMY5UUiFMAbaIJUm3pDOWSpgwpoBOuSqhjeb/Zu9NfiRJ0zO/37fZ4lvskWutXdVV3eyVPeRwRiOOIEgXHfQ/6iRAgC4CBB1EERgOQc2QTfZe3ayqrsyq3DP28M3Mvk2H18wjIiureoCeFgcYGuCZGZ4e7uZm3/q8z4JW+OzJSZOUoPJDww45kSIs1725v8q4WKCtvRp4BuR88IlQupfkObSTFBofWrquY9U0eO/xoRM/v74qGWPqG7wCrfs6pty01N+7SCanIYTD9BvZLEXeLExPhvuMwiYBXFSWqo7Osa+VyD0SqWX/bxlPrnVgfQUY9gw3ISTJRlAGGMlQcNpSAOOdLSb1CGtlAs45ihytsKwWK9rg8VHCBbTtE4dzgpBxWUPyJKNxo5pyVJGNZtU0rNpWvKAwVMWIrdkW07KgtIoY1hQFXEZPo2DdX9/oZUtrzDnWWG4dHDIajRjVNWVZUzqH9y2h85A7SlMRfaJRpSTtFpqx9lJxVA2hWdE1kbhcsW4UrY902ZNth7OZyWRE0wZW65YcRGpNjP1ErWnbluVyTgityFq7Bh88KcliSCOM2K6VjaLSuV9oRGL0rL2mSy3We6xp5C4mQ4zymuPTY8pRxbJZs5yf8nd/9/c8f37E9mzMrcMdjl48xXdLxrWhqhwqWwyaZh3xvfdaSJ4QvPRLlXtQQJh11mYK56idZTyumU0m5BRYXrYs2xalx7RtpL08osyeKidGoxGTsqRQBd1KYfWM6ayiaQO2KKknEwF4/YK//n/+gsKKCbL3nYCXqcOaCaPRSBa/5I3MFA1GG5zWuGG+VYpgIFktHnv9pB2CZ2wMJmWpLPYkAakMV5Rlwpgg7Nq2IzQSed+0DW3oyBoJMUgBnTIm930uSciOz5EUZIEs42wGAiSwqqBUCpMVUqW0WOsobAnBs2pXLNZLxtUhUVm8yqyjp+0iLYmgEllFutQQogZXop2ElBR1wcgYxkATgnigKMVqvcKVFd/53ofsrxIPj5Yszi6I0eBMQa0dlTI4ZTG6IOuC82VDWWqm05qt2Zi6cFw0K8ZGcW9vj5GtODtfcT5vKEaWXEJ7doFZrgjrJVs7E4LKmAzWKCZ1xd3btxjdOuAsdLz//je4cz/x+IuXPH1yTLYFdjIi5ozPuU8QN5KMqGO/WRGQTvdFBKku98btqg9ZQRGyJgZF7oAYpbCC+Dou1ytWywWqHlGkLPchKGKCToufojHQNR2X8zkhRGazGTFFmq7BtZqycKxXc2HtAuM3sQAAIABJREFU2ZIcPMok6Q/1BOtKjNOUY8e7H77Psk28PD9jq64gBsJqwcG9e7x4OMc3l7xxsMN8BQ+eL4mrTL2rqcZjkcoZIwubJMUT2WCkjfdhP91cHa/u5/8rxOj+U77yUAgSfC5vfItVL19UiBm5D4rReMy3vvdtfvWLBb/4+V/w7MmvhCOtVuR6Sgod7WWLzo7depv/7nt/xgdvzTD2iGfLU95454f86Z99n5FZ0p0+443DHbrLNWdnmbMTxcTe4eBwi/034I1dgxnP+PTxEb/8xy/I48js4G3MOtBerli9PMefnHGyfcaTB5/z4vQlZ5eWh5+vmI7u887bb1Npjc0tB1XN3u17lD/6EflwzW8freDTyLqJTO/t8Y2de5T2Fr/+6AuWy4Lvfu8tJrM7mNGnfPTgL+nmK5YxcXrc8MkvPmFmjhjXlmhWXOSOWtfUe3t88o+/oHCXHGzXrNtE5Upuf+dbxJGha45Q1TlUERVrCE5sIJwCWlJYk33A6ApGDlnVeCmEK42taorCQDYo30IK5HIslh05MZ1uiwIjLKnqBrNaEcIEVd2jGkG5/T4ZR/Yakw2+e8lq7iknjmp7D7tzCOYu2Sva9hKcphiPxC5g2WDrMThDu15w9OwJTbNi/84ttuvboAwKKybwWGFE9Q+Fxg4BW6q3/FDCpxkYCqbfIKWUaVpP13qx56gLseNAwKMvt+cByIGraLzfp8d8RR+5/jnQF2RFDZNjQrnh89UVe+s/9znkXnIeApcnl6R1ZDaaklxFmzILHzmZd5yvG1xoGY0L3n7rm7zz3W9T7t1iazLjUM6Qypj+Hsg1tZQYEjZ7YvA9s16Bgcuzc/7vv/wLXpycoTGUKpKJWGdwVqNiwmgl/mH9iWol/r0Zg1iFvrIBVddv01ddL3Xzn5kvX9vN+ubaq1VfsBlerxiCONEjw87tQ7b2dynKkpQ6puWIzmdSkvnFK1EZUMpeTGExKmEimCysrGwUql+nF85RG0dGEuij1aAldZYQZE7sAUSVvYAGSQgB2iSUcYwnpdzfHMXSSFlUhtC1+LajygU2ZyzggKBkr5JSROWA7lUEMUdC6IgqENqG4Bty8mQ8hZN+FjKEJPsdZcSuKEZPUrK3RA3+3kpIilajVEfKHSkHQoaUHdkUch0GYGvAyDPoKCQUTRB1E9KHh6KaUj0QhezLUh5AK0VUGXIiEpGYSQkoyujeokg+Q/UehKI6S+J9rqXonIMWZqYKPXgkdJYrDzBpIMM2NfWb+tSrnrKSBM4eaiLHKKoveuCpt74ZAKhBXTBgBK8GFXydvxjXmvWXCXoSUqjVVYjEq3LT6xLTzXOvvNnwcy+4IiIqC5C+sQlZIF/zW7vmWz30ruvfY+hnXPVv3a9FXw1d8F13g9UGahOmKEWYxCDRffX3lco3Uk+vM8+G514NrXg1qVWrgqt7n6+BoF899lwRGfOmxqv6IpBSVyDq5vpeu9hDcCQbNZ/52tro77LT+h0Muqu3GU4lpUyIiabtxMhXJ8aV0N+NMbiyICqNCgZXFeheWpXbhrBeS4PPss1toiRLhpjJVoAklManSPQtU6dQzmCs79nNCU+PCFtN4QpSDHgUMYh3jy0KbFmidEb5FSEEuiADkFIOYwT40rFD9X5NQwFMuZ762pt7GtvfnQFEy1EkYAOarUSGarUVdDYYYg7SiekrnH3ghIA7vYlglIk/p3DVmYZq4DX6/JcRc64BdPIZajBl60fJwefLOS2JuU5+NkYLyMCwnlGEmDBai9F67lXSWmGLAgekTsnEnSAb2cDRd4IYrzpzjBBzhw6B3BvNK0D3CPbQaHMUn4rCClutqirx+iOSsshpB5aaUgafrjQRXddJKIIVyZwymRIjFYCURaZsNEaXYG1vsD8Ms8N1cyglQQMxSoITm0+4gcTJILzxGpFXDcapQxpv6mnhSvUsyOhBJZw21M4yLR070zH7e3vUdYXKCKChwTjNyekZ5+cXnF+c08WExmEVWK2ARF0UFGWFqwsm22PK6YiQM2cXl5xdJrrlEmss49IyKS2TkaMuDQ7HeFJQdQ1nq4aLdo73ARVlEvJdyzosWV4sKMqC6WgkctOyxBXC8itcQVVkKAxlPSbmkpgtXVzjPYSQRRqnWkKr8b5l1XREnShLTelKMhalvHhOyl2QyawHM7tmTQqetRnugCwaUwxEH7DKkVOibRrxqtAIwypGUo503UVfaemZrWjIUsnPZM4Xx4ynY4KH5aLho49+xcOHD5hNR+ztTIhxxeX8oh/YBdgez6ZUlWKx7qDzIjWMkZhi77HbV4CuUaQ779FrRWEtCpEdkzLrxZycDXQNIa5QBVRlgU0R1bbSzkJEhySLOWuZlAVFUVBYw/z0mNViyapd0wRhi5aVI8XMctXQhI6opFJrAJMihVNQOHzaCHMEsAwRx80Fsx5o2eQ+5Vjah4RJWLSSzUiMIjUoSvE0FG/JfrLUAphoK8zWYcxTKDGS7ytQWg/JYfmqH2Xdy+5l8jPakJUlxkzTtHRNQ2gatM7kDpp1S6sNlApnLcFYFOKdpoxFaSsVKdXLVXSm8YHQtoQMrfc0xyecrUFlkcBreiZvDyAXVcXuQU29vcvF5Sm+W7JcrLFaMT7Y62XihnpUk3EoXRH1ii5B0zSolHAp0jYrVr5ihWZr54BKgTOK8fYhs71DDppINTtgMtnh17/8mL/5939LVAYzGXGRPSrIRhxtpWekRMwKnZXIT1LqvUyHOUKhtEGZjNKDT13Pfh5eh5jS+rajWa0ojBeW8LUFmrJa/EqRIpw1YilRFIVYD6wDFxeXVKVlPp+TYsYWERMtOjkar0Uu71t8aEkpMJ1NWBxd8PT5c8ztfZQtUEXNdO+Ay9MXtD5zuVixXjey8SDSLOe0zURSvMlXUpe+3aZ8Vb395+N1x7CWuCqYXf1jePQryutG+Kqf8ZQi9cl8xipGU8XhnSk5f5uqSPz1ueLT3zzBuC3qXYdRZ7CyUNWksWI9PcMebrPl7mEWBwRdcG//HQ7uGfLZAUe//IjffPJbvlhEXh4pppVmN+1yf7RNXXeswgUnTx/x7LfPMY3m7f1btCcv2C0dmH3OXy4pTcUHB2/g2ktu39vnm+/9iLfu/ZAPPvwjnn/xMT//y/+TRTzhOwfv83aosI1jrzvk7eJNfvHbX/GQz3j337yHKcds1VNGquP0yTHJbfHBv/4+33/4kv/3r37OaDZirSccL1uMW7B9+w7TwwPGSjGa7PH4eM5/+MlPMKbl/X/xr7hz75YwUW7d6i1I9kg6oZiQGYHPsL4Et0YVEYwEmqGmJLWFz1IAjtrSkNGqYqKmQEaXiZxkjO26Jd36cya1FL1YLVDNKeH8mHUYMZ7twfQuKiQgQFHRXaw4fXzJcmk5qA+p67cgT+WhoahqYXFng/IeUwRUYfv2Y9B6iTYlxAn4GlyJpIRYVLbkrAWcQVgaqQ+Ak7lFGP9Xa1hDzolm3bFar/Ah4ooSowsZ13u0JXEl61JXW5Fr7fjqr35W3vz/df+o3+dQ1z44Z7H0CTFwJfz9A1UBsiQkx5RYzuc8evQIlSz5rmUcHEFllrFlrRJvvnmHD956k/2DHbYPd5nu71HNtlFaiS/oesUqBEiBwmjxKM6KsrDk4FnML1nMLzk7PeHxo8d88uBzfvLLj9k7vMvtw9soY3pWo0NrRRdaqvIaW+YVNshQNPq9j695i9f+19AWUiZ0EauExTcajajqGu8D67aRwr8xJKVpEHWNR4ppuTQixkxCwLBKGG9OgSssrix7NYyEW6SiJFqFcrZX/ERICpUtKjk0VvZrWUtAghL7Iptzvz7rPb1Vh1EKnQJWBbRRoFtSWpNpgFaAUCJJQw6xxyMNBodWDqdKClXjdEEEQuxEhaNlDxxzol2v6bpAVdSgI0pF0AllJCQtAVr3YHQejPFTv81U4kWuLSH5q8TTzV42X+uPG4T15i0ans69iH0ANhjeIm/2jKmXmtKXx+nXk/TFSbTgByYaok2bQl5WV+PDFSAzMK/kswaG2zBi5F7+y9VLrp3zlbzx1X/fOOdrAJq6tt6+ATCpK4+0m+d3EyTTvY3S1/m5fd3P5ms84oaPU9CrvoYV1ZA3+hog65WfNymrKd/wpB6+k+x3Nc7JSKmvreMGQE32JDdtruQ1iazFz3y4ztelrdfByVeBuc11UFfnMvx9w/f9K67r8F3zjR9f04aH68RVCx8k2Wza31d/xu8aHr8WoAshbdJeBlAwkokx0LYtl5dz8I7UtbiiL5Fp0eEmpYidpzaWkSlQlcNqeS1J/Ix26j0672m9x6fQLyejRCIrg7aKLicu10uhUHayGU4ZCOJW1ARPl/tNoLOSZllXVM7iW0WtlZhEaiFxZ21o2o4UPWqzeI2yt9eqf/RPD9c1iw9Gz52RQRNFzB0We3WLcq/VRuYqjXR4AXGkCoAFEwS4isYQht9JsqOOiKxMI1599Oj/YFbZS/BvLBhebQBKAVpRuLIHrVy/0b4KddCDhny4sfKbm8+h36STNTF7lIqopIlBjDiVkgSUmBPJSxBAjF5SQ5NU3wtTCMV0CMUIka7rCE7SgQaAblzXlGUpIQVDJ0ehRw4fgyQRtmuaRhJbrDVYa4iFERN9FMlksnM4rUAZiV/vv1umR9P1oJ2HwUxfruM11l8PxElo3WDkKL1Iqysqs1GIL2FPwdU5URSGuqqZjEeMq5Jb2xOc1YzKgvG4ZFyP+tSXTEqBW3vbnJ6ecXQ04nK5BKUwrhC2Z4hU2TKtR8x2phTjkqhg2a3pKk0KFU3lICmcThBbcgBTlYzrkloVsDTEmPFmLRVtK1XtSKbNWdJ5V2vO1g1nSqTQzjnK0lEWmlu7MwpXoG2JMqUEEmDQusa5TGk1VdnRNZq2jUSt8TliHaAzTReIIZI37WuYeHrvgizAyLCO05retLMHFZQAXTlnUpsEjO6l5MPAm7PaDOaqL5kqLMqA94HlcolzI6q6IvpM1zScNmuOXz6hqjQhNlidaV2H0S2FrbCm6hkOGhM0xipyGEDZtAFFQgzkJrLyHUujiV1HWRaolHHWUWrPyDhStqSQmRYFd3Z3ONzdYjquabxnfn7C8ekF81WDto7zk2PqUc3+zi53bh9SFrfoUuBiPufs4pzVcsF6uaLUmp16RD2u0aU8UgysQ0dYtVw2kS5ImM9qtWI+v0RVjug9pIi1vSelGkT6UZK2kiyKQghSle3V4ePRhGp7ytHJCc8eP8Gv1uJVl3MfaKMFXB/A+JT6Slkg5YAYFQsIZ7QATRaFMcio36dLO6MZjyfUFZSlw6iIy4nkW4JvabMiajEEtkYWuzFDSAIadz6yjkLnN1VFl8WIrhqN6U4WPHzyKcdryDFTlzVWW4gJ7z1tJ6nAAceq84ynM3xnuDw/5eTsnJ3tmaRdFyW6A1sYprOSbMesusCy7WhDkCqy1ixix/FyzXSyTbaOLiqynVLWO+zsJw6riu07dxiPa1YXp5yez7loPe2qk7ErSlq2MB4jIUtCo82a0BcgNvR5pdC93ylG9a4ZVwuWGNOGMSU+pravltPLHATYc85gkoEYKArH3Xv3WLWey/kcpWAynrBeLWhWa+qqljAS5dDOoZyDTjxLjNZUhWU6HdMkS11XXJ7Aw88fs7W3hy7HxC5TTHZos+bR0xc0neFg/5DoM81qxcnxSz7//CFPHz/h1p07VKN6M44YfV3Y9M/Hl48BeHvFM2tzqI0HrNbSnmLOcl2VQimL0gUqK1JWuBK2dgra1Q572++wO3vCpFTUZc3y4oiYO/Zmt7CjktFByXoK6t4Wb735PtPqgEyFLhesll/w+Ge/5dO//gfSeMLB/bdYdMdcHr9gfX6LcLbL8fmcRs/ZGx3wr3/wLjbWfPzTn/GTxw+op1u8fe9bHNUrvvnhu2ztW/76bxOHd7Z59+23OD8+woeOe+9+yKOPfsHjhx+zDB2rZ19QXWi22ebP3vpTwmnm019+wlvjj/nhD3e5s7/Pamk5O31Gt+x49Phjnj5/BEpxuYr8/LNnPMqeW4WmvD/j++9+F8qK1bKlffGY7NZc+pa5KrF33yG2a7ouYkczlBkTU4OPFhcizcUpJ08/wugVdZU4efkF2ztTxodvwfRNkh2JSb5ylFgsGZsTxABaE6Ph7PSMx48/4vTolxxMFG/uzSjSktL5XpWR+8VkBUWGuCAszzl5fsLR8Sl3bt+idjOal5e4ymBGI5TRkMX0N+sKyqpnDsijqAtu3ZvKescYoIBkZb3VF2ZAmp3u18ND4rJSsu601m42WrEv9C8WC7z3VFXFZFTjCiuFr5hwRZ9i2LdivWm9wx+b1t6Dy5l8TdKq/7NAdK9sVJP4rZq+6PUHOQa8fCBjpMzy7IKnz59R1hO28y3IiZWH+++8xd37d3j7/h3uH+xTlcIwDlnm1WbVcXl+weX8nOQDzjmmkxEpjDA58+LinGdPn/L55w95/vQpL1484/mz5xyfX1DOdjm8pymqghh6uxLd85tSxEewPePole3r72QP/cEPBbY0slwMiul0wt7uLnVds1pfoAtHSmsCUohIKpF0xmrbp6sDKWF8xCiH1oZCK1zpcGWJc2VfsHeosiQ5DWUpAJ6LGCuMUrJF4TBZYbIRC5Qo/aNbrnFFQWUNpLAptiqVyDahU0CpBlj1AJ3Y5SgCGtm/qSy2R0obrHIQDYuLNUcvThiNJ7ThjKaV9SDaUJRjbFFhnUPbCkUgKyP7JCUKpkwkqyj7oL6Io1KU8WG4uPCV2EPuPYsH366vOvK1P+X3XiPlBEhZ/OD7l98ITqAHfozDWFk3Zetk/9D7eA+7d3m9FPjUK/PidT+x3EvxjTKvBXmGc41xkCp++Tt+1fMb7ObVz+6PDejVA09f5Q/3OnDpOpinhp+5gon0Kz8rubSyVqcfX1XvVf0a4HEDwPWfMXjo6cxVYNw1gK4oXiMh/ZrjJkgXheCkzY3vfAXq3WQsXr8eG0Dv2i1+HUj3upTdG+ezAXhvvo/qr9UV7Du0zauysQzh+Svf/4Z/4FccXx8S0QOBGyNOrYRySe8xlsREcLGKsPSCdpYFrijBOVKCTnX4rAU4SUhoQE6YnKnrmlHhqHqWhu/ljVoLI6NZr/FtS9t6VEqYfs3RpUAIkdXlBV1ORDTGGmLfcVXKJGcxocN0UaRgxpGNQ1kZaEdti9EihVUWsD3VNmWiBp1EUqSTmHPrvrKsTd/JlSLmICmnGNG99rsl07f0LqdeQi4m6fQ3lj7wwTmLjlEYNyFIc8gSny0Ym8MkqWQkdZVVdPMxGE9eA/5zIiVxL0pGJJ8KRBark/hokGVz1XumCX3XirY70ctLDUplTF+NSH3lwhhJpe2CpDeFEOV79g9rbc9MGejMuWdqRFKI+GTEzNJ3GOcoCkdZlpRlIQuAlCArjKsIPrBet5iVpmkaWt+RSfiYCU3EGrXxEej6qpKk3DpUGhgi9AOdlkqT6Tv60F6uFWEH0E6pwYBS9wOq6j2PJcVJTO8h9WnGhXNszUYc7O+ws7PDZFRRZE/qhEWSw1ooxb3XTAwd43oEsxqndthe13gvgRxdEM+5w+mU2XhEOa7IFtaho8NT6YS3mULJdVfJk2NH9KCjpdBCw5+UJW0Z6EpH7gyhE+ZZjhJHXtfVZtoShk4idp5l17Ii0s4vsKZA2XOUGYtf3bhka7tka7pHTh3WlFSVpVl7IQbEDmwk9r4BMUa8D/1A3htrcjW4CuCpNgMvXAF1GjGtl0nEk5JMBrIoKq7o1dqiEAm1CJkNWSe0HeGj7019nUixnVD7206TU0PXBjoV8DGSfUPOCwpXo63D54QPHkg4J2mSOV8N6kOrMdoKuy9B13li66XamgvoWvxyjgkte6MZ79+/y8HeFj54stEQI4WxHJ2ds1g1LC/OuDg95vLkmOXFKVtbW0x3tplOZlSjMcvlnOV8QWjWnM+XJB/wnfhCTuoSbUpihiYn2t7jMYRA13Sk4AX0CQGTslRV7eDzOEyEoWeDSlv0MdH6DmMMW7vbHBxIwMAiCYNUwDFhc+UBAcoiwZD7I3YFKcgi0g7Gql3spRVilJoRzyHlFOPxmKqs2Z86dsc1ZXKsl5G19sSuI3SZdr0itJ7WZ9bK0VhNmTIxaYJSBK3oQiA7i1aWRbNgtW4wuqAuHVatcAYKY/v2ZIg5sViveHK25Hi54u6dWxzszphsbRG7BhmmPbpn/yqVaNsV5Mz21hZliDw7OmI5X2ALw2XTsn72jJOTObNizK3dfb7dWg7djO09RzErKEeWra2C27cmtM2c4/Nz6CLGOmHw9o+UJThD5iEpPmSF+K8gdgXZKJQx4i0ypPoi7TKGhMLgXMl4NGF7toUqxxTOyBgVPSkHlHIoa8E5xoxITcb3UqX1co0xmvFoSrteYQ0URUlSllWbiF0n56hl89E2a1L0OFdysL9P6lqePn5E0gV7h7dpFqeE509ZJ0MxnnF3f49sp5wfneIXnsvzE3790UfcuXuXW3du8/a77/apw73vi/kdIN0/8f7wv5zj1WJeL9UXR3hhKGhDH/eCD4HFvGFx1hC6ROvnRDyl3ebzz075m3//Cz7+xyfMZoYf/fF9uvU+P/vVx8xDx3vvfcC977zLZy8/4999+oB24rg3WXN7cpuL8wsePX9BO3fc+uZ/y879u1RvHPLn/9aw+PXHuFQy4z6tucXi/BHGJL717fexqWb+Yskviv+ILivGezNWTcH27du4SaLaPuDwnXdR2zW/+snfsDKJP/rgh8TpFl3tSPmcdPoxZl4xX7TYuubDb/wJjz854h/+w0/oVpHbb77F0ckF//jJbxl9/pzzdkXbrFBG0WVLk8ecpXNCc8apX7LUmq3bt5iGlu9vK/bemPDg+BKzf5tLClwBOXRwEUmdpVs5TB1p28/47a/+ho9//R9p52u2x7vMpgb9zg66bfDqEacLz3i2Tz3bJmvF7naFSsJUvzyPLIMmuKrHXd9k3lziyxpTjAjVFuWdqfi9TnZQaYn3S86OH0NITHdnTHbuYp3n/PI5nU+Y1QWz1DKaTUgmkVUnfmuqRhjpvYzcFRhX39yU975NwyJqAM5UX+wkQfadVKyNRSkp5F5eXrJaranrEZNxTVFuY434uIlvsQAOV6vc/uP6v1/lheTN//3hO70Qf/KNwuMf7EhSlEldZHF2yfnFGdOioC0U1oHWBe//0YdYq1AEjpsFuotU2mCUxujEarGgXS7IXubPbr3i8viY5WLBZ7/9hMeff8GDzz7j2fOnXF5c0HYtCqgmU97bOySmxLqRtHEUQtpIsq9ofcC6fj661jCkHfzTDsDCtmLYTDGajbh37y6Ht/ZZrs4JbSchA9aJLNJpYlmhbUlOihQSqg1YLE4nrBWJsKsk5EXUQAXWllA6glXkQsKqtFFoZcQaKlkkelS29bpXGKicSSGRcytrsehR3pO9J7QNvpUi6On5E1p/CbpDG0lvjbGT9ZRz5JjIQTpd6DKnLy74DZ/y8MFjIi2rrmWxami7QFGNuH33Pu++903u3rmPNiL3FBMjUTLpDCEHQkp9GKHaWADdNOsXjcYVyHb9fl+tB6+DcNc4LxtU/atITAowSsv81FswbTSPm0/RZBU391gZ8UFXyaKVBG5IeILaAFZXwJNmWELI0xrUwIiTv00PVg7f/frfN87jOmvuGhjzlcy39NWg3+bvDHGjQPlyAuxXgTvXn98AUENfyIitVX+7zPA8Srz4UpbBNQp7zfchDZtU03RFrsg5E0KQ8+u/5nVw7kaQwivX7dXv9JUA2SvA2/V94vXvd/247geYrs0UrwJ0r37ea89hAwYPeACb6/ml31WDVDddtbEvnd3N43eFbPwOiatCaYfSfagBBuMsKQaU0ljnKAtLYSFGqdrLJlkTYqbznnWILFcNhkz2DSl4dEoURlEtl7jeo07pTMxSYbOFwZWlfFmlsNpQGIszjuQDq7ah7TqCNugUiUpvNuvr9RrftKy0YqwyBI92FlN4snboqhJvBNWb8meFMq5PuEls6HMoDLZfqBhCPzZEgGFgyrKpIwngSG+0qrUW77Xet2ojQ1LXOqIS+mnqO4X4tQ03Wu7vdcaWUleyMrnxgx9W2tBolbrZ0du2I2WLUgbnDM6KXr7rGmKMEoseAjGLNNb01c0Q5Dtd6amRc+yRfytO5UI9HRr7sGHkaiCMKUHPcNP6ZiUz50TXRQog6Z5dY4yEcRSy+QoRTH9vbGlZtw2r1YqmacT7LmdS1n3FWJOCeCYqpUWG2kuAVU49G5ENXdYYs7nu1zcwcvny0AT6c9ey2FEa26fnapWxCrLVWOUY1wX721P2tyfMpjVVYfCLFcYklDVApFnPWa9ir+sXeWxlNdXeTu+noPAx4X0keWGfWq2IRAFJSFRW0RgwOaKSmLqKn17G6OH7yUCyNRrJd06e2hradS8n72VybdcK8yhFMeYk90EkIjG+vFyg1ZqsPUktwJZUo4rFqmAyLjA6UVpLXUzAKJQRcNoUBcporI0o1sLEjUM1ROOsSCUBiqLAWN0P/IP8RdI8rZIEaG0UIXQ9OALWGQF1sizdde/NqLVjSIzLRIwDH4NUhJQjR2F9loUj5xGr5Vx87XLEOksbG5bLNW0j/ppZq43MWpvBWwWsE//HwkrIBSH00jxN13Z061bOLXY4pbm1vcXd/fu8ebDFwfaUcWFY9qa+s3GF91POLs6JvsU6R4qBxcU5zXJBzhlX1+weHnD73l1mW1tMp1vErmVxeopvG56+OOb09Jyd7S0mk5rRuKbBkrSMo3VdM6prxvWI0lp6szhiyoTU+3kYJ/JGY9H9IiNl8b2ZL5ZcLOaMd7coXNmzO4SxtakM9ACfdW4jqTfKkJXc+xB6Vp244pJSwscWyoizCmcUvh8gjLEUVgnztCwZq5Iie0JULFctV7WJAAAgAElEQVSKpb2qXqWU6WKkSwLa+5BoZfokZDCFk3TDkAkxUxQlY1dTmHMKBNw3xmJsgXEFriyh6GguAp989oCLyy3u3z6kKgxogw8ZHyOrpoFciNm2Fn8/XZTMZjMul3MW6wVLv0LlxFFzxtSMWa8ynzx8zuT2bQ7e2KUoI+3lKV1zTl1rJpMCQ0SnSPJqwzT/UvVOmQ1bPSFFrxClmi5Kb2GCK2NgSGzLCmscVWWYTmbMZjskO8ZZQwwdqWtZLxfEaBg5KEYjtNWcnLxg2XQYa1mtVoTguXv7Foaas7NTvA/YcsTF5YpONXgqYoTlckHbTGmXc+zEoV3B1vY2ZVnSYrlsAkU5JZdjzGjG4f238NFxuQhM6xLGJRerhpOjI37y47/n9q1bVFXF7bt3X7tYfWXZ8s8HSjaFku/MwDy+MroWf1gfIl0MGCsFj7aF588XfPzxJ/z0737K44cPqOuWg1sTbu2/hW9mVGN4+4M7fP87B/ybf/Uu89MVb7/7Bp8+eYkfj3n6bM06Tam3dujIvDg/Y720BJ0IasR7P/gT3pxsoYsCNS4xaU6caJ7/wy/ploE7P/ohu3e+QXz5hOXxBfgGp2o+/Ob3mY082VYUU0e1t8Xp8gkXXUu1tcfhG2/wwY9WPH92zv/2f/0fnBw95e07W7idMXlWoEczbJgzmm6zV95i/+BtPv7x33Jx/lfcfvOQs7MLsldU9g2axYLLFy84O0ro6oDJdI+kLffffYtvvPcNlI8o3xHTCuKc23s1W/fuo299g6RHaDxunFGuoF20nP3jAx5cfERQpxw9+xX54oiLL86J1rP9zbt8/A+/QLvEW2++R1SWk+PHZFsxmkxJM8eozJTVLutTzzzA4bvvc+vu+zRNQdOesHvHoAgoCrIdociEFFgtznj66AFnZy/5xtvvMTo4QOlAaI8Z2wnTYsTqIhASJFWgrKx8Yw7E3GK1ucYOuLnRu4H5DhsX/Ur30woQW4SwXtF0nQSPeU/hHFVZUdXVRvrkvSeEuEmif5U1p3hN9/6n6O85/87N1+9/iPSLlImLFfOzc5q2pdYQTCZbmBQFl6uGk7NTLuZnhNAwq0u2bIFDszXdYXVxzvnZGfP5nNPjE14eveT5s+c8f/qER4++4PzsnGa9lnFVK6x1VNWIrd1dJpMJaFi1a0llL0phzgUPOWBMJqZMzPmqSeR8NWd9mVr3/9uREZWI0RajFXZkuX33Nvfv3+fl0XPmzQXWWZRRRJPBGUxRoVwpflxtQkeNyQlnwRWa2jmsE8Zc4QpKW2JtQXIOozM9nNFv0mVOTggZAEzPvtEYNdAtFCdHJ7x8/oTTkyNSu0anRGob1s2Kte9YrOYcvzii69ZoPfj9isqIbIVJo2RJ4GPi/PSSxaLBI37QTSf+zDv7h9y7f5+33nqDO4cHTGdjlIKsREGRcyIi/FMpvEZ0T9AYlEa53xOKn/bVACCAWy9B5Or+3ywLcfPJ/hAg6+rfmwd908k3f+fGr2slku+e/SdYk6yN0IasDapfhw4m/voa4GgGtdxm7z14Zpr++14BQF8FIl2XXv4u77nr1wxe49F4441ff62uv9dXfd5wTuZa59M3xnE2Sa8MwNvAgOv92VPOhBQ3BYlXTw3YAHDmlU5+hVvkL53zq+c5PF4F8OAKELvOKrz+Xq/73tef0+bLoO51jOR3gZ5XoFx/77mGeQzPDucvbypLr+H/rtEl/5OltdeOrwXolLpWod50IIlIDrmvWCnVb8p6WVHh0MahkiwQYkzEGGQTY2TCVWkwilcb6U3O6SrBUkkggE+RiKSAGusoixLlCgpX0aXAeJoI5L7jKWIXadZrQtsJ9bQqSFrsUDvvaaMnNy0+Ky5WaxnglJhKog1KJYSuDyiJozYJstYCxigZuGBgpfWbol7GZ4cIYqXIGKwdUkl6tJlhgSODmEEKkAMDgt7PTCv5TGF46Rto7bBhUwrx8lPXe7HaeNAVhZVrk8W/LWcD1kkhUwmAQcpYpdGu19RvgL6BJafQKm6kvoN3oO4j1kdm1DfMhqaT9E9BtDVZpb7Til+BUTBQjI3KuL7SYUtHUUrCqzaarLMw8KyDzgtyrw3almgr4A1G2HShi+QMPsoEY5U4aoWYyF2QKmw/KA/JrzeSdvSXO3T/RYGeAagUViusNThjhbGndD9xJawuGZeO2aRmNqkoVMavLvHLyKgwlIXDuUIYal7CEIxRGGM5Oz2W++VKnC1wtkBZQ+Us2jlqK76FbRdpYyQlCZMwqr+GzuCl8/QLAsRDwYg8vEAxKy16UlMZTRzHXggqG/dV29C0geV6xWLd0HStDMi9X1VdloAiYAlZ42Pg8vKC84uOTEftNIcHB9y5XaKtIRLoYkeVKwHhtCInTYwCAKdED96YzX1wzvWyVvkOQ5qtLOsNTlu0QYJfUiHXzg7MucEgfrinbrMAEp1NRNwUhR2itVTwBYAsyHkEWvqx1hqSoQtq49claUK590QUvwoxHlVopxmPxxRFQfYR3zUSDZ8jZVnitCH5RGUtP/zet/nTH3yICw2L8xeo5KlLTUSTdKYNJeO6oPM1k+msl1dk1suGtm1pQ+Do5QuOz06pRiP2dnfZ295h7+A2Frg4PcG3a9YhsbqYU3YeZSthPlmLsVZk4VoLsJVF7k3saes6E1XuyRB5k8DsU6RLgdW64eLyku3VmjQkYilhOKA1QcoEIrGwBc44OmUlDUvrnuWV8TERwlVBQaqIcu1Nv6YCLWB7TqTgyV7JuG8tceKYG82KTGkvUUaCLDIKT6aLgbbrWAaF1wozqrFZUWlDWY8oqxHrVcKgJdCj9WiSVLSVsCzr6ZR9N6I1JQ8+/YQvHj1B58ytg51N3wLNctlgdMa6kvG4RFmH0oqtrSnaaVbtioCnrCui9/gEJ2dLfvzjX7Am8IP4Idv7jtid03QrXGXY2plS1RV5vZINc74+Hg1pWDc9f2T8C3TBS4I1fZhOP1elDFo7jCuoqjHKJ8pSPOVaJQFAKXtC7LiYX3B51lGZxO3DA7BTGQd7RqV4m1qcc+QYxAsugkZTlxVlMWbhNapr0SozGdeMRwVYwzIEjLVs7+3x8NkJDx4+4f4bd7DjXdxkF7tYEtuENYnRqMSEipAz7Trw6NET/uqv/pqiqvk3f/7nHNw6vIlavnpcX/v8VwvWqZsbG9WDddcQDh8SF5cN82VD55ccvbzgydNjXrw84/MHD3j65BOOn/+a0p6zM/uQab3F/pt7HPz5B5iypO2esdRPOHx7h2K0j6ornl6MCNnwzjf3OahPOP7pz0lhRD1RvPn2Pe7NDtmqF5j0OVwYLp9b1k8ekE8/52T9hAcPn/OI37J39w6l2+Lks3M+/ughl6eXEDPPXs55uD7FFiVbhwXHiwc8fPKAu48+4P57P+Bf/tv/mXW75NHjB/z0x3/L/OSER15zOfe85SKzgxnleEx7OqfxsIyO3DV8+73bvLXzJi8//ZSTi8d0C9gKiUvn8FnDKjLbHnF3e59JNsSjM1YxcLJ6ycOP/56tccE7/+J/RCnLsmsodCadL+leLpjlMeV6wfLZF0R7jlms2c9jFudzNBEOAsenL3l5/JSj3x7xzne/wQd/+h3sdIdqfAudHMpWqHHNbj1n1MFoe5diYjFmTWHGmG4XcgN6Aa7FKBkTuhgYTQ6YTu5yePC2MPjDJbaYSfiDsrhqC5X3UNoQw5pIwFiHVoaoEil7SCIrN8iYMwSGWdOvP1VmI4cdEofysFNRhOBZLC5ZrxtcUTCbTinq+mpt1kvFjFaiZsmJFBLG6s1mR91s3TA0734P9CrL7g/V9Qf2x9durn//T2HovCllmss587MLKXRqWIUO0zY0XeTi/JSzyzMuFmcs1wvOjOawrCmxPO2+4PPPP+fZs2ccHR3x7NkzTk5OOD054+L8nMI5CfwzGldW1FVFVZdMJlMm29tsbW8xGo9RWhOSxICkGAldhzEyJ1xnrPyXcgxDnylkzUMEbTU7uzvcvXubL77YZb46x0RFsAmvIskpTOEw1or/pokom7FZ5rCyMNRFgSkc2RY4W2J6EbVC9rAxSrE2I+ELAU9QWeZZElldjcEKhU4QWs/56QWPHnzB2fERfr0G39GFlnVoyCoROo9KmbKwogoC2WdGWRdoo1FGiwI1Z2IXaGODVw3GGfZvHfDt73yXP/ru9zi4fQ+jLV1KUr7J4qEt4QiarIzIQ3tIR6eEuuKxoQfSRh+a9jok6XUyztcdw29eJ5fAFUDTDzZ9kXGoBct5SnigsP5yb2uSkRTQdP18lLDFZcl0E6DL6oqYcZ1dp1TegJFX5/O6c7z+nV8DPr3meXnxAOLIFbj6rCxXvX/v+Mr7Xf+sV9lkr2PuDWSQHmX7EpB4XSL6qo9bIovl12u+93WADtiERLx6PULwN1h0rwfEvsw0lFshykhIN+6Duaac+DoGnOzV4ArAuDFryB7o6mx7kHloOa/8zrWXXnnOKUhyvwQHkYL5Rkk0gHa/x/G1AF1/STYL9IzeGI6HnMVsP9n+QhiMVZRVhXU1ZUoUXQcqURSWyWhMVThUjiK1UrBeLCW903e0PpFSZE1A65akFKYw+K5Bh4S3LbEscdpibUFlC3xoBPhzDls4VAFLpfHaknPElQWZQoy2Y2C5asUovEvMV2thD6FIUUziyUp8xxSorPsL0OuNe9aUIdNjIT3yLGlOOdPr1XuzeqByhTBVYtxQMWWTJUdSm166aQu6B4N0gtZHhtFcKYXKagPOaS20UqXpqcYyoAqLRa5JXRaywe8aog9EFyhsT93VhhRCn9popCMmiD0oobVGW0WKhqCuNNdaKaLqO74xhOCwXYczWuK2ryHfZeEgZ3TvETgw8sQDyVDXNUVZUlcV2llAZJbIrWAyHkmFv+voIhSFmNNmbXDOcX52SYiRHH3v71eglXgnhhAoC9MzyixKSTUkpcG0OPcDtlzP3K/08nDP1RXCrpRI85zV8lBapM0hMK4rdrenbG+NGVfSvkPX0vmGJhaEYDBN2/fz1DMJNRpNWY/xXcdy1RDCAmsdZVFT1iMKayhdSV2W6MrQzhOr5ZzGB2LKWFswGk1Y604A6BBpfMCnTNIGo6Fbr+jahuwbTPI96WagH2VKW+FHie3tGp8ybfA0bct63dL5Djpou8iqi+QcNjKoFBXRw9lqzfZ2EC9Bq+E0sF4v8dlThojRjtB7QJQ92DeMJyEESWm75rEwDL5KycAXY0QZMWZMKaCUsKuum5EODE+5b7o36LW9n5ZsDFbrtZgbl+UGDFRKMZvNKMu6Bxoi1gbGYzlHHwI+ekkslt4qsfQxYbSccwhBpNlVRV2VqCRpqzl4SmNRfVBEXTju3r5FWp0zP3tECC2usFhnWYUWbTLT2Uj6lZXzq6qSwjiWS0NcLYlJwjEuLy64OLvgoXrI/tYu79y/x+7ODqP6Nl3XcHp+QpfAasc6NDRtxK7XrBZzRpOKdrUidC1Wa5RRKCOTis/i+WNS6mXWiS5mIkrAui7ig4TkyNioCEmYnetWZBQm9z4UQUyP00arLzYBIWW6ELFmAFhlISTkeqk6DwUgsjDuSFFywJShcAbrNToGchSz65QiXYob78rgA50Rz9H1xSV6vaL1HV3b0bYt1tZgCozSdDGRdBKJq3VyjlnRpcTae1xV4VeB1guwnZVcK1dWjMZjula861J2jOuKqDWLtoGcmc4mmFpRVSVn7RmqUXQ+8NvPHnDZXXC+PuI733+b3d2CFDrWvsWnRBMT6y5S1iORePXXQUI8vrwISkCMmZDkAVmSrbMsVGNOoA3WlrhSEtJUHwoUoidGsVZAwWrd8Pz0BBUa8Jm92yX3793j9GLO0xfP2d3dZXd7hxg8vmmZjCZ0nYec2d7eopjt8+jlGe3JOUpLX0g54ZzGGYOxhpw1aEdRT8i6QhVjgi5IpuDw9g6jasHl00dUzlBYg1GJ5XzBL3/+CyaTCffu3WcymVCPR7xqSv7Px7XjRjNRG7wE+g2ZAm20+Ck2mvnJBb/45af87Ge/Yb1O+NazujTosIMlcfTFKS58THrPsuoCJ6s1Dx/9I+dnj9ifVNzbvc93vvXf88cHP+LXT+Z88uQ3/OTH/w5z+SmjyS6n819z9vEt/od/+QHFzoLOnoLdYeLuMjqccdoqTudf8NnJS/zjf2Br/y5/8t/8T9Q791gs12g7Zu/WXT7/3PPi6HNGo5JffvYx56snPL8448npS6gnjPfuMbWBerek8Sd8+rOO44s5j48vmC/XfOvtuzi/Zr5e00VFWY4heeaXS4pbBXfvjnnjjTfgkxU//fg3pCzr2r3dLb73zdusjz/jf/9f/ldsUfDhH3/Iu3/0Fs3ZKRfPFpidt3j54IJffvRb7sxmfHB4iDlb8MVFx69/+jG/+fSX6KJhe+z40+/8gPc/3OfsZcvJ6Rn3773BO+++w5Onx5yfriBrsqtx+2+AmoEqQUeq6Q4lDqUmEtwzsrhiBK2FLpPzktheEkqwxZjt2S57WxNSsFLgUgWyjV2QQ4exFUaVQCWAhhGbg0gnFi5K95thTR7GFvJGPXGFkCUgsvGIRYCl0ES6zuO9bNT29vdxRXFNgsRGDWGtxViDQYogQ0NWwwaToch7jWnRz/v/H3tv9iRJdp35/e7m7rFlZmXtXUtvaACNBkCCYxBBERhyTDJpxmTzqn9PLzKT6UnSg2QjyoZGmIYcggAIgiS2bqDXWnNfIsKXu+nhXI/MrCoA5GBIjjTytuysiszy8HC/fv2e73yLLKPleVM4o/9RAbpxvTgehdQD/wjzj5J1ebfuaFcrYblkSbx3ncOsB46e7XF8fkgXes5XZxyfnbK36oltx9Pn+3z22SOOj485Ozvj9FRCsbQuKoCqZnt7h2Y6oWmazVdVV9imoaprqtoSfML7oVhhSBPIaluCiRzKWCE6cAGk/KewxbEuSol+2dL2azAaawxGKebTGcEksTlRWZj0tiIoJQmnsbCMrMbVFc5VonIowKQPCV3WKRFfXI6EgKJNJqiA156gAwYla6JC/8+lmXzj9m1h8WvLh1HxfP1YlGAxgjMoY0UxoiI5aUIIpCj3oEL8xK0xYIwE9CnAKAnHcFPu3LvHu196l3e+8EWu794qyizLtKrwQc5Pzrok4kpRJMo5CXERiWdCI7XhixJA2S6DH+Mc8OsHgYA9SmpvdfG12X0s+zESXiVAmy5fFwBYDko+Q5bVZCzEhZEVl1USAs5I2igyz3wJAtsAK7y8znrV9ir55Ss/n3oZgBrBRzn+8r9XsOG0fsU5uQSmXQauxrrm8nvF4WWJ6uXvG5LDC8yu8dxa514JMm2udh7PF5u67DIzLee4SbqVz6NfwYaTuvtqAqwq9Z7ZrHtfBcBtJLa/pEFw2QPu8o9fBlflty8uyAtDW139dyNItzkXSm3w5FRYdC8ezS9nCv7y7VcDdDkzDL6cBOkUOOdwOVMlL6CPD6xiLwbftcWniHUSxa3DgCZhSGhrsU5TW0s2ihAzdjaXaHUTcLUYr7a9l8TOHFi3LZXTmKxYn69ZHZ/R2IqmmWKcxadEMoo0eEIvcjinNdZW+BiIxmAnDTkrhrbDTAxT6zA+k6oJLFdk7wGL0xXGOXJQhDigkrAlRkBtRLtl0OgCOolhL0qL4bmSYyUjDMPiGSSTgRKPvZwlzUfpAgoKDdMVs3Lx7MoyoXDV5HC8JmKeWAZCTAw+4P0g85hRnBaG0c7WFsZoKidSPJWlEzOCbwb5fVu6lENKxYtI5MwauV6qrqWgDZ6YUlkkGRSJSeMwZk7bD5K8GD05yeLNKoWzGmKRM9rxu2OxWAi4MampKkfIAqqNkdgxK8SMWIpcRxbgYPBgJGQi+CTgXdsTY8J7OaEVwnIa/cLypiGhC6h6cYNI908mlxDHm128+JS1V24sAWXBOs3E1WSvmNSO2moxcibjKkM938baXQYfQCuij6zblbDnrIEw4L1nNpth6oZ5I++TEgSf6PqA95HT01PxDNSKoESm61MmoFCuYra1Q1Yt3iexjNWObCxDVgx9j8kBZ5PksxcfKessMUSW646mmaBImKxonGXHTUEpuZb9wPJozbodUOsBfKBLIhNUSu6xnCLGVbx2/zW0hs+ePOL8/JTuSIAWrSsUZhMOMD7chQYPQycrObWZqMokOzZ9CkvHFKr0hfGsTLzqUuflQqo8BnuId2MMocxfF3TsXCbS5XJJVTXUdY1SiF9FkZVPqoqKSNu2dN5vHhDiuThI8TGIwfW8mTCfzZk1NVU1I/uBVMIvJpOaupGiqO2XVJWjzz0+ijchBrLOwuSzCrTGaEMIHgXM51Om8yl9jHQh0g495+crludL+mXL0f4+W/MFN27ssnvjOpPZgkym94m26+mGxK4zHB8fs1yd065WmAw5RXzMHHcdM6dJ0bFaLUlxgJzpY5Zk4cpRNTUpJ548ecJnn33Ker2W2VAZBh85z2ve//mHGFehtKRFO1vRDwNdiEwmDuUMKRvQlqpusASszkSjGFYdMQWMlULQ2QprI96viANEBlRytEMnYLmzOG0YZwsfBk7Oe1wFN3YW2MoW35yOWk+kSdEPxBDBZhpXY42lzwUcHruExfx63Q+s2o6u9xhl6PuBvvdijaAt3kcZN5Vj2Q4s1wJo21oKGxN6cpuwxnBjZ852rjl6fEpqBfA9ODjgB395xtn6GbdvL7g2b6RJ5CoGDD2lkFaGyaRCdytW52e0AWazLRazCVrbspDWIgV3DlOCI3LxHkwKMJo+BtbDgLY1M+ewxpExGFcJaNq2LNcrktHi8doGPn30lKXXmMkZi+1r7O7s0rYdOYtM3HvPcrliMpkBirbr6NIJfhjEN7br5D5RFx3Y2jmy0mztbNPbKZHE8+Mz2iHx7OCYupqxtbWFP3S068hi2nC4lHsvhsgHH/ycn/zkx7z5ubdpplORAP+Dslj+X77lq3/c1AAbWY9iNnVYZxmGCNnQdp7TszWhs2zbL3Fn9+vQfUq/9yFPznsef/hjDof3OWfC2+99iZ0bX+TTRz+gmUKz7cg858lHf8G//5M/oj39gDduZ3L4kO7ZM8zqPr36iJ/qY7Y/f523/ot/jt2dQdLcnN/irWc7TKeK7fvv8PFJz8HpEV9797f5xr/+16i4zZ3Xtvj2v/tf+e7jH+DPBhZpm+W65bDPnOZTYhOJlRTXwQBpzVs3p3zt6/8Vh63mR9/5Nv/b//G/sxoUXW/haMVuVfPs+cD3/uYpizs3+crXvkntdtnNT9n+sOVn7z9iMTV88ctv8fnXbvLhn/2c5x89otqdcOPJnHfeus3E1Ryvztjbe85fffBjvvOdv+b+tZtU732eu5Xhp3/7C37x6RHrtuWt1+7xz/7wG3z1W78PrSEcdGR/gJ2ccdp6tvdb7n3+i8wfvoZyc6jvgq4gD5ATylxDYKrC3EkO5dcQ98nDKedPPuK0O+Pam68ze+0G0KCUk9CH6CBDyuKNpe0EVAOqgliaklqjlIUcrzSOZQyJzYkuRbUaR9bolXnFElIA+uX5GucqJtMpVWFCq7EjWvYzNupCCFRlza01FDPkchDje3HxfiCgkBqTp1P5USYrYRS9cBu8tP3dWF9lD6XwghKO9I+BQinN4FsePX7M3v4ezBv6dQs+cLK3x9njPZZHhxyeHHB0fsTJ6TGrgwOGpwecHR/z9OiYPkitJhZEmrppNizq6XQuoXrNRIgO1gjjvnJUkxpnNUPXYkxFUzeSmK6UBCBkaViO1y7GBK4ocfII2v5Tzc8jUJTpfcvENOjGcni4z8H+HilFJs2EaAJaJ4x2TK3UfClrVEyobIhosnWg4+a5qqEwsaQOSUnT9j1LvwZbglV0wqcObCSZgaAGtEpURvQcZE2KCVPV5HZg9+Ydrl2/xe1b9/nh977PJ7/4kHV3Tu9XJB9JMW28GY2pMMpIo2wYmEwnKKNYd2t8LEnIVlHXFQ/efovPffGLfOHzn2exc03WB1EUYzlrohewNoaEMQ6s+NfayqL0SnCHnMgxkGIkx3iJiTWe6QuQ5iVQI8s9ppXUq6OabHydAvJnioyxBLDYJN7wWktllQoIn6I0dY2TdVuQyGthVTkrAGUK6JjIWmq/C4BFbYCUy8e9OWQlByz1SaktCvnlAiS7es9fDRm4INBc7Oti31eBq5fnnk1tdAXAKXPYJbbceCzGGLz3m7rElzqFci5jjJh0sd/xdXhZWvsiOJpzLiqMi2t2+esl8Cnll/Y1Hv/IsL0Moo02U5fP3+XjlDr8Kph1GcAb92XtVQjr10lIX2QZvugBd/k8qLJ2TWRS9FeOLV/uQmRQWRSR2WjEA93I+rvUuuM1evH4fyOATjpkqdDZExBQWbzTjDIFMQ2Y8gHCkFmnJUm3GA0zazApgXMMOVCphG4auSeTeG3FmFHaUNkanSAxAI6YPTvb2zgLNmZi71EhYgpDLeYkKRUleEL8xGTySEPCp4B3GZuMMAYqJ/4apqaysLCWk2VbknqALFRoizBwMsIkGT1wR+M/uQ3lz1qA/7L4FYlY1kaKJsCri4j5VDzdUpZJXqkyqbww1DcofkyMCZWbm/byTULCWVPQd/H8G+XC0QuSbbURSjQNKhWfgRA2nRCtNdobrB3A2IL8CiCitWJY96iYUVGARqeLqeaYkook5I6U0xwFCJFzo6mMljhuH0g5biYFY4TlV9dO2DRZkmGtEomrGKmOfghyfowyQrUuSPhgDcN8gmmNMPeSJ6dIjJqIAqMKMCOpu0obtC4A0SiCGMMJSmiE5urkMn4uYfyJ/5xVAm4En7l5bZvppGJWW6zODN1aHhipItcTtBb/PEXG5YxJCW2kYxxDYN17FltbKG1ZLdfEmKirGu8j+8fHOCPjRzuNrRy2mTBzFVumAe1Yrj3NyYrlqiWGQFSGLkHlAyoFGpsFLGMAACAASURBVBXROZJ1wtiENZbZpAYFdWU5OT3FFy8LFStUCmQrXjaVymwv5sxnmms50WdY9oHjsxVHx2ecr1fUzlBVDdPZBGuhbqwEcHSRkFN5COtLZqFXu1ObyX4zSV3tgpgCtAY1PuiuRni/3Im4MHgFSflMKWyAPVXSlBOJlOD4+ARjHMYUQFZpbGWYTERyPGmmVHVNPQzEkGmHQdI0vWdIGayw+fpVy9nZCZWx4lGYKUl2Wfy0RnWZVqBF+p9VksTQCCGKIW8amQlGkhRj1wOZbAzaKCrjMJXD2ZppM6FbriFk2rbl5OQUtGYrbVFPG7R1uKpiojPWGk5PjqTh0vXUdY1V4HICr8EqgtakAZJgykQczbwmRY1PiSdPnxFi5OBon773WOswShFzZuhazpZL0AL6GGsgJrabBlxNyIGEJSrD4DOVA20dseskvTVLjtpIuBOfuoRRFqMsKsn5VIAyIpc3WlMZS9VYpkZTq8ykqamtlePPkUld0zQTJnWNVZrzemAo/pSVc/TOorWMQR89Q5AERFfVTOYLhraDviNlLWEiPqCVYQiBJ0+foHXNYrHLZDrDx0jbrkk500wmTMOEyURRaZgupuy+uU1oYe/gmJP2jOXeMZ/tfcB8bnnn9Qc8vP86s/kt3HQbXWu6mOiHgfWy5/TkiHa9Jpma5AND19OFxMRalLYEJQVSyomMlm6zNYQY8SWdM6OJWYr6rMXrMyXxsslKgOGQEt0QGUJiUle0nefxpz9jMtti59ouxhjatsWASPKdwxRQL4aAqTLz+ZSd7S2O9qXxYoxh9KTRWliIkuDteLb/nOd7h5yve5S2UiRaw2xaobuKZB0xHDP0MmbXyyWffvwJx4eHXL++izb2PypL5v9rWwIhNRVS/6X1pPw8C4ujrhS3bs35V//dN/nWH3ydg4OW549XzPOMRd7m/R/8kB/9cMX+kw857o4YJltMX7uJbW5w/d59rt++hfPP+dPvfIfDx5/xs5/8jJPnT5kuMgena05OD/jqg1t8/eFDmrOepycHHJglW/c+4e5kDqold0cstmac7J8xnLcstm7QLK7hpgve+tJ9cpqhbc/1B/fZvn2TDz94H2UmaKZYHIvK0Z0c8tcf/zmdb7lzq8KsEsPJmrT23L31Nv7zv8OQHZ9+doiOmne+0HB/EvnZx7f57gcf8X/+u1/Q3HnIV79yH33b4yeWatawWh/z1z/4c9Y/m7O1WrLdbGOcYcs1HD/e4/HHz9A7c96+9wZnh5GPKkN/eMDeJzWrtObg6AzbNNiouHV9i8+9eZdatzCfU914nbxsyMcfcn3nJjtv3KG69hrKNTCZkkxTVkHCctFIOmFC0rh19qDWwCkHH/+Yp5884cGXf4vp9kNUZ8m1gPEUFYawzTUxirLE6AZwF6aeRSuhVQWbeLGR9V8K0BGTo9gSKNl/DIGh6wjRy3rFVMwWBqsF9JGG5wuoHwXsgKtr3c2WL4C6oZd/bq2wFUKU4IMMyjpsPZEgCiMN8c1A/w+cJHIedSnjfsqCvxTHl6VW/yBbBmIUuWLvqesGXdWEruf5p484PTri+NMnnOzv8fT5U/YP9zg7PyGcn6NOV/ghEKxBWU1T17iqwtUVTTOhbgSgm0xmWOc2LJfRi9rWNVXtMEoa2MWhW9RCSH0gz4wo7O2YibGArr+efPSPsylQKZHCALqmX604Pj7i/PyUkCKuqaldxZA8QxKwMQep06osvnWrPKCdRjuLc9JozmSGoSfHnrP1GSlBGwOnsadyC0LoENsU8AwEHYjaC7MLBypjlCPGjB8GTFUJuOUTt197yO9+c4u7r73OJ5/8gkePPqYrgTVx6Evytnit6UozqxuOz45RSjHfnuNSZt2tmc22efOdd3j3y7/FjTv3uLa7S1YQUkBlTc6G7IESvpBLAIMEQprS+BpZR0kCq0hl/njxNI8NTg1JpH6btNACXOXy3wXz6xKYooR1mYsaTI37UuJLGVW+hM8LcERO6I1fvCStah1JRtiByURUNuSgS40u634BXMY6/lVMpqtzj9QN+oXfudhGgOhyTSPfR+BHX3n9RYAolBCGy+955dyqC3DuMuvt8hew+fkYoLUB5HLeSKIvM81eJc+9/JVSkvOmx+CDV9/Um8915ZgvA30vv3YFAPt7NDp+GUPxVduLbLu/TzNlc6zq6vG/JMNNIi2/9ArjmRglwtqIeuiXfZbfKCTCacUwxpfmTE6RMSDBaMX2Ys71a3Map4ixRxtDTIkuCDDQGIPRAVQmDgPr83O6dk0uAyhjZWLPoEIUrl1UKO2wSCHVOMukcVAFYu9JQcAnlRWqErllyDJwQwykMCaFBvb3j1CVxVS1yBy1IateEnoKohnHFNUoyyCDRitHVF5SLSnFdkFJR70xgrEX5F9Q5oBGGXBGJjiTIyKthGwUORsIxTA0JYyxGyZQKhOYTIuX6Zwj3V9vbjBjFcZcArsKgFQuPaRIGDxN7Zg2EyZNjdGa7D1eRaIvaT1ao4MiFjPxqHKhORuM1tSmJmc510SZLEo8BmQBfMSkPJFTIMZAGCSxyxorSZvjuM1Kzp1GfNyM+BnJTRCBXIz4nYyN6AkxbDwCRj25Kai5IrOYzrDKkoKk+sbsJeGoXJcYSnBCkfyOnQ0JMinLzwL4iS/B1RtJl1WJNcIcnVQOzRg3LmBk5SxbixlNZUihJ/kBo+T6ni/PUNaJ7wQZW1VUjaPRmtp7hiEwRIhhoIuRvh04OV9vmFxb21tYqzFOYyqLcYasDDErQjAoo9BVxPlMppdrZ6yAJErTWIulJoaA7wc5dpvl+kdPZTU6ZWF75kAM0qGKMRN9xqop1gjYqpUiG/CpYRgiKWa0Skyqhvl0gqlgPmmoK0vbRXLQhJRR6rJHwgiQXkS1Ky1j4+pWWm+wYYtePDx4CegDfeX18T2DD6hxbFmF0hmtM0RFTBJaMfSBRCjSZ4WrbZF4BqblIWu0w9YKtCGljDUepSQYIMVIGobC+vVYqwXI1lpYXjmxt7/Px599ghmWhBhwtcU1laSwBklRlk6fRlsrKdi5LMNyLl0smYNQirqyGBpUSKiURT6oLWHwtOuWSEK7WmTK2hEGz8HzPfq+Z/C9yMBJdF1HHHpWCpzODO2K6CXYIhtLanZoo+K869g7PGC9XtF2awwyD9V1jcpZxnHfE7MsWKyt5B7wgRg8s6lhezFDuSmRTO8hWgHQQwnYGH2LMiLpTBF0Y8TnLgMRWUSWYk6jIEa0UtRNzcxZFtMJs6bCWYW1itD2EAKNnrLY3iYrx9kAPRI8Mn6JfEvLTKwMdW1ZzKE7XRJ8wNpK/JlipqlrmnrCctWSYsf2tZtMZwvWQ8DkjFEQhpaYEwbLtGq4ttimijXt+cB0VnMedvj04FPaZeb4ZMVP+085PfFM56c8PVyzDpraVbjKUVeZ+WTK1sJzvvacnZyS64Bd7KC2tITqFC7hmLaecyYmSbRORov3qKtIHlKQYB20Ld50jmAUxjlcPcFVA3lQTGc7TCZzTk9+zqod2Lm2K8x1Y0UaZwzb2xL6IGzDjhQDphJgDpVYtWsG3zObKlC2tL8zjdPUtWIymTKZzlHWYqsGjMX7gcVizrXa8NnempvXb7LYzpjK8YUvfpGvf/13uXHjVmEQ/qrVy3/mmwKl82bNOK4wlLqIiaCseFCKyUQToqVuLPfub9G+HXBRcc067t18Da3f4Pt/uc9ET7j25n3srR2G6lOeHBzwhTfe4+7iLd7/q3/Lhz//EcuDj0nnJ+ydJdJUc/3GDK59jqfxBt/7ySc8X55yf+748INf8NMf/S2nfkk9cTxotrD1Ao/m2q3bvP/RPn/27/9HXn/7Ie995R3efOOLvHnvS7x7/2s8/puPmDnF7Z1ttlfXmO0HPvmT7/DzD57Q+8hsWnPy7AlvPXxAdrdgfof6RuIdf4sHW5HV/gmv7RywPf2MVt3krz494cc/fMxi9hOeH7YcD/u01ZJ+WLNwC8LRPofHJ2zNd3jn4ee4fnfB6w/vMaSe1Fo+evSI55/9LxwdnRAPDrFU/PRnS5pKc+fO63z14edxqceEI85+8X0m7XVUvkFdv8Hp6TGn3TNuffU2zb03yGpGSoYQ1nTrR0ybHWy+gaKCrEg6EY0HTolmyXB+wuO//RnDaeTeu99i+8E76MlM5rRcQh5S6RqhJFUyLsTgSE8g11fHTpI1oC4pqjCugS9kPWUQsWGkZEMeMkOniclgTI2paqzJZfyVQXnp2T4Cfygp0qXYUWxc5HKGGAjdmtPDQ44O9wl+wFor4UNeVCxZaSazBdeu32Sxcx1d1cL0AQHzfoMtl1M2fi/d+mI58A+MRJXz4oeBPgXqSUMfPGd7+3z28Sc8f/KUo8dPOT065PBgn7PzY2IYmKCYYrDGYpsG3dTUjQRFNZMJdZGuGmPRxggRQ8lzUFsjHtauorJmY4mjFFCAuDw297WRdX+po1L6u8ka/7E2hdQLk6Yi+cDJ0SEHhwes2pasoGpqQuoFZU6F1ZS1NAZ1TTaZmCPRBPHpjaEovDpW3uP7SGoDKSv6lFgpz2KWGYZOQC6TCHkAAsI+ScToyVEUVBlV1kyO6BN99EznC16/fpP59jbNYs58e4enTz7j2ZPHtD6LzDVrsfeIgc5HTCUKkD5G0Jabr73Gu+99mXe//BWu375PVc1AiQ97TgbtHAona94sii5ZWxeArtQfQpRgU3cJ0JPQOaHSJaBJjXj7Bcssl/9nSWSUdd0l9tyLV2pTh6lLTCul8DGSlcjJLwMdKcq+S4zK1b1tAJYrCRAbWO7lIToSkEq9XX5Fay3BZi+APJebCJeZaK+Su7oR6xiZVOX9RuAvpMhlph2je155wacLi6zRDmhsDoxe3i8CeCPopbUmRbk/x2O1ZgRf5T1CSYkdT+IVoC7lzZryxXP7y5hqLzLQXpWyeuXMb/79Cwy9XwGo/f2Yyy86kr74/eL9R1xnnOjzCOFeZr0VIg+Xz7OSxnOpSjc2EDEn7Dj21MvsyL/L9iufXlJkKoJRxCD4c45CL086YbXGWs2kdOmsEYmQ854cE7PaUaliEB4Gur5nWAfQGmsd3if6mOj7AR8SooPXUhA7jc4VtZlimgnGWEnpS4nK1hhnwWh8jvgghrg5JDARKnAqs24TXfIilXMOXSYp74WbJVNkguJnpJQRNiBZADwMUSeM0mXyUMXHS6FUJsS46SyBdAF8uZ4G+T1TLlzWwjobabMbinxZ5FgM2ZR/h4BRvhRao2+WRhVJqqQk5iASUGesLIiMgJopBHzfsZjPmRdPCU0m+4HgLcEPpBTou066QxiGGBh8TzcM5fgVla7Qudhp6ox2FZW1KGvQ1tD7IMefAikMhL6l7waUMuLRkALOiheXUgpl9ZXJRZUxppQqXkmqeNxldFaYpDbpUGPfwyjE586KfBBgGCq89/StUMFTzqiohR2iIRXthR0XG+WBkMrEt9HOq9EGFUkpSm5zIzojgESllXRvkmfoB0JtSWmCsw22NuRQQZbxtZhXoKykPvZr2ral9x7jJKxAWce6bemHgWHwrJYdfduxs3OdO3duY6ry4DOQdJYHlFL4CD4EQhbQSBlLypJyuu7E30znjum1KcY4XK2om0AOkeQHei9+XDFKJ85pBdaijBUjfAep1tR6ho+ZlW/phhY/BJFuZgkYqaqKyjnqpsI5aBrLpHK0FgHQkeQkrUdvuREQlYeg3chdxofc+F1Jkmhher40L5Uk3ovJv0yo+cIzUBUAh9J9MzbjnAYtyYV9Fxg8JCUhFlknEol+CAzhDKUy9XmFtY6qkgVuBKxxmIl0nFMIJGPAaHKKMs4Z048Tw5Bo10u+d3bIsD7i9k7N9swymRiqFFBaihKtDVpprHHUrqKpJigFpmpIKeJjoPOBbvAMIZJTQJFpnKWyjtlkxnTaYJ0j5ki3WtGGJccnS2w1xTnLMBQQJUUB83MW9towYLWEjnSt/N1pgzKQck+fBaA1WgkIHsSTT6viq6kECJfEZhmXMcgCpOs6Oj9hSDWzpmahBAxgoonZlJChAiSMrdmUSg9IbZoTOZRmSiqLO6XlHMcogJ3WklJt5HnV1IZGWfzQg+9IQ4WpHbWz2Bhpg2eIPZ3vsVmTsgUlqZayqFMYZQSsTlDZmrqaQFKkmASsn0zwXh7mXdex7j1uOkFpGLx4OVoVGBYBN7U4FLky3L3/Bs21OfVPHT/+oGO1OufsrCWHQ+pJpE0W1SzE/zMFjLbsXtsm1Q3PD8/Ye37I8myJ6gKTqmJHb0NtStNBkZJcI+8DMUeGKEbxozGBUKmMsHK0gP2rtqPtB9x2xWSxg0oOV8/Z2r7G9tYO861t7t65izEWayzRDxx5X/yJatp+AMB7zxBW9ENHyonD42P29va4W29TNTORxGvEXy7AzRtbnN+5wS8mU3wlXifDMLA7n7Gwc56fPGY+mzEzFdPZjD/8gz/g97/5TWbbi1JMXbr9///tha2g2sUTTAzKNxnrF89SMstVy/m6Y2/viBQ1b775kO1tw3B6zGp9ymS758a9GbtPtrn9+l2+8nu/jbs+42ePP+YHP/oJ3/uLI1gnzp/9lLA8RfkeGyJVNaXXMw5PAt/+01/wfGegXifOgmce4PF+y+OPP+GgX7N15zpnU88dW/Pgi1/GvvUee+k5n372Y/74j/6IP//zf8Mffuu/5Z/99h/yxXe+xPe//X+z/8ljVp/sgz/iseqolwE9OG4trnN+sOTph09pqgVrn9mebXPvwTZ3txL9rqefPyX23yOkgZ2buyy2b3L+k2f82z/+AT/86G8ZpqesekueLggxoSvYvXub3TsP+NK7X+D+vV2GYcXHjz7B223O+lP2H+3hbCC5wMon1ieeRb3gwcM5b7/9gHt3t3n68+9zdvSI3D1lfWxZnv0Nz06XuBsL0tZ9bjen2BtTDlcnnJx9ymI20Oha5qdcuvpWVABJ9fTtPk8efcj5as2DN7/CtTe/QrYzhqTQFgwJRQ/KAw6MJKZqai51T8sjNIEKkmCpqiKiLUVbLPOz0uMUKb1gL9YbIjDRTJotaYTZsUiTol62l4ukXIbqBaOC4n1Fka1C9p6ha+nblq5dwwg2a01dN6CtNHm4VLxpcwEe/gabfvHfp0wKka7vMcPAZPqb7f9Xb/LM3T844PHzZzw/OODR3nOeHx3w9Pkep8dHpMHjB2kMO2DRTNlqGmZVjXYVg7WYRpLcm6bBVVVhzIkdxeWCUWuNLvYxdV1R10Ykx5RCWikwYs2zyQMp8uKUXyjW/4nn5ItSW+a8oWt5+vgR+/t7+BQwtUXrQAxSAlujISRSUKSoRJFTGF9t6FmHjqFviV3PMAy0MZB9xkZFygoPdDaJ2iIFqUNSKEF+4jnNyEyKGa0iORkBaWIUabmzDEmYotVkwsO33uLmzZvs7t5gNl2w9/wJ52fHtKtzMhlnLe3gaaZzIhGfIzev3+Qrv/PbvPeVr7B74w590AxJkWMmZYW1sqYVKXjaJFJuJJqXQDbZxvs3bc7r5W3E2xSXgfhLTKwYZWmnL1hcyigJ9FMKp8X7N2VhJupLgQIbwGY8HH0B/o2gSSrrxlxIOiJjE9ZYljcEZUDFsdov36XGfrG82IBDZV2a08VrrwJXfhkD6rKUc8NIKwDa5vMh5+cKcy1f+jsQ01Up5ri/F1lwvwy0CllSWYkJZU1RNABJFDw6C0tO59IkQc6zzoqsFeFXAGybY8gjQPsyQPd3kXLm8hB4FYN6fCZcPm+X9/X3YeC94p1R6tXMvBFsE/KE4DhQHpOqNKpSunKXvPj1qu3FY/11LOxfLXFFGEiVNQQ0wScSgRwjMXrWqyXrWmFjhdKJVFXi+5ATSovhtnEOYw2qN4QhEhTUVU0zmWBDwIQgD4q2JwQx17Q6ScHYdeQcCb3HotElSELriEqJZj4hZVWkpRrlFK6pqKzDVIZZmnO2WjKEiKsbtLGsO89q1RGi+AF4Mip7VBpQZoyqTyJBU5psStDBeIIZ+WzlwigjcqIMKUsyY8xgYqYiopFkPaWkX221oTQNZfIqO5W1kgAu2iS00nQ+FVNWvxkUVwZ/CVtw1uGc2dBtQ454pOuhtcbqkr7jDI1t0NOGFANpPqeeOIyt6L3nZHnOumuJWViA7fGKHKOwhEjkmISRobVISMcJzyd0CiKDNUUqqBXB+xKsoS+SOxHwK4YBlR3GOKwzpJwkQTSPUyg0VSX28bGApsjDUCkISfZjjaapHb53EAI+h1LrpzL4C7syCAA7UviNMfh41UATciliiollMX/NRm8WgLp4hJmsqI2AO6en54Suo6401imMyig0VTWTz2fEq3DZCohms0S1932PD4m27ThbnhOD4truNW7evM1sa8FydUYfOrqhlXtBJbRxZGUJHlIyxCDgeYgBhbCRYhJG4dFpy7QyNHVFbeQ9rXYoZbGuoluuiaVzkPXY0RPgOYeIqhJOKaa1IWuLcoasLOs2b2SrWmvpwmmFc4aqqpk0BqOVALgjQLdhfl4AdcaOErWxo6PZ9JkyWJOLLHmjv9lM+lpr8WlTipGCvpm3tAAsTkt3WOkIOmOMdDbW7QC5o21bQoykpEu6liITSrfKE0LEmshQJwYvwFRKo9FpxlkJK7HOSiFSUlwJpduldWHwBeq6YbG1YDbROCPdWGsd0mfQ6Fy6lVmkQVoprIvkFLHZoCuHdhbTe4JSoDMRzaSqWcxmzObCbloPa/rzNd2qpe87fISmkXAMkgT85CzzSsqKpDXJGlnH1BmlbJEXGLLSDMOA1obFbMqseMv4YRBQPaWL0ktL6nNOF/48yhiCcSx95NHzQ4b9Y+7Opty7fQNrJpI27Cxm8KWQk+6wLKx0WRaWTlYy0qXSBoP4fVbW4NAYsoDiaYAwYHONqx13dnfp+4HUDyzDEeedZxU0vWoIKdANPTYq2kHTDwPeB0JI5GjJSWGUlTRV0QISY2LdepH4GkkMzsDp+RlPDw5x0ymz7QWRhKlkTj08PGfOlOvzbZppxc1b21y/f5fD7phPn35G8JG+72hXkRA6cj1B5UiOA6FP0ExZzOdMr9/i+s3IjWuHnO2fcbp3wNH+AahEc23BxgIhXSzuslYM0dMOPQHQ1QSjaprpHOsaukjx3RPzausapvMZKtXMt3aomymTyYTZbEZT17RtR9/1WKXIUVimfpBGhXNiFL7qBqL31FWNtY7Ts3Pykydcv+3Ymc3RBVytNGA0lTMl6Kmirmti6GkahSOyvbXNo8N91uuW1998k4cPX2c6mQiO8JsRY/4z2ATBzEI9BbgCzmXABzE1//kHP+P7P/gh88U2X/rSlxn6NaFP9KeH5NUZ16/d4pv/ze/x3jfeY7I1ZbG7w9mq59HHh3SPe1x9wvXrsNp7zrOnz1momhvXbuPrGX095fzomLO953T2iOu3Dct+SVvDJyeOo+Vb1NMZTz5+xEd7P+Jr797j5j+/S5y+Tv2g4fdmW6Q/9nz3+9/n9OzfcHi6z6zaws0WBDWnj4HaGfq0pM89MU846wbO+xWpDgz5lPX+Z/Sf3mQyvwuzGbaZMbtTk2MmD1s8+d7fcLQ+x12bcXS65vzxCrOVOGgHgjLc27nG7K3X2P2t91jP5vxUSbH/bO85Hzx9wt5Zy360vP7OO/zuN96lmju++90fwoHj9x/+Lm/e2+HOfcWnv/hL/vSv/ox+dcjnH9zl3u23mDWa3a1rzG6/jk1zlh+fssOM6bQnTgy71+5RNdeJXgKPlHFEEkMeWHcntCf71E3N7S89YOv6A7RJZDzZ1IBHqTPIS9ADUANTeSblIhdFAw5UjVDqOpTOKCaQG1S2oExhuhcbmXF9lLM0Zn0kK4srMsoy2DbNTdRYmFx6Tpc6pUxbIn/fPDs0OSdUSqgsPszT2YLJdArJS5PJWVzx0ExoXDWlmc9RznHhZauuvNffd1OXq6/NbZXJMWzM0P+htxgi52fnHBwd8dmjR7z//vs839vj9OyUrKBuaqzVzJo500pUHk0loXnaOWaVyGIr56QhWkA4PUp0ldoIGGTN4ajrmsm0oakstVOiDkipKF8cQWUiAuQ652Sdg7pYQ1NO+T8lSJeBlMl9B8Dp8z0+++hjDg8PSCqjKkuIoCYVKULfR7roGdaevvWETtj9fWrpUsc6dATfi7cZEEvYGwFhqpaiUPpkUk/EEDHZYpIpX6pkqeTigyygUYxBmIvOCkvPe5zV7OzuMJ9OmC/mvPbaHZ48+pQP3v8Zn336IW27koA/V9OFgXo65e03XucLX3qXh2++wWxrl5AtSYliSJaMUrulUh+lHCXoQwnz3yi5eqIniKVJftVvTG2+ZI2eCzB3AZrlAnoVn0hlLwCvwlBSStRKuowblC5/L8Ez4yXMmVwYsmi7GWfp8n23AYbV5Zc2zzilDAmpQ1SZizYf5JW378huk+dkHD+Tuiz5vQBaRnDp5cEnbzIy38bvF6F4Mod67y8+axbrqstyWVdf7QBora8kJ48hCWNdNB7bCOpdNCzke5m5pd6OETdKdFX5GlHW8vsb+6oXQLMrYNkloPMqQMcFGecFkG48F+P5GkG4V73PFdz/FWDfLwPp/q7A3Sv3xwU0rQrzXF1+n3JMIik2Ar6OIHT5sVKiEuIVIOWLTMRftv2aZW7GoESyqUAlj/flBs3Q9x19Z1ilHpUjtq4wTrryWWv6mGnQOAwhK3qlSNpCXWMnDVPnykQW6LoePwzoJLd/Upl133O2WnF8eERtHItmglEyKLsYMOemADcyuJyx1HXFVCmakFDJY2NHCiIDc9aga4NJNT5E1stzBpUwBFQeux1hw9pJSvx1KDeUSoLMm3ICHJpUmHEqK4ayWIgU7Xfw2BxIaBnwymwkspuLR0md0rokio4yWjbdjYuBU1iGuSQTmRGsuLhxlVKSalrorM4Ix9W7eQAAIABJREFUUzBH8WgzxcNJGZjWDfWkpp40wkycOLrBo4yhMo52usR3PV3X0Q69sA+TSDNDTOC0dI+SgLKVUeAsgkDK8TnnsEqOxZZUwhTFxwvAGkNVyThQ3gvltlAQbfEwjAgrLoxIOwqt0gZAtlZjnch8U9KComSRtYoWPCIhAxcTmbUWl2WS0IXZOLK9xhQBkd4KUBdCwA8dKoo3hVMJqxy9D8VH1JOyxQZhf8UYif6MuhjHK51oKiefqxGZQV6ec7Y6Ybk8x1rL9d1rLBbbWGfoh4GAHJtzFQnpVIMY0q5XAjQrHNZWaDLOKZqmoq4sQUX6QRZRIWoGl6m1plIKZydUsxqnagkliSLxTAApiIwhBIbUSsqn8WidqbRhOrUs5pqhi4zq1ZQCJI1VApYOdZFNIP4PY/KXscLwlL9f7kiNAN0Y8CAzvvjCjZPiBUX4YmKXxcf4wBonPgH5HVYZoRjrIJ49eqSCB/qhLw9NQyx+OsqM+9Ro7aB4R3ovoR2xFBAjODmfTrBWEpCtAasVxkiogtaW1dkapzU3Fg0PHjxkdwqhPSERiT5Qm0rK5aTIQbwzs8uoqFB6ZDwltNbC3CxjUSWZj4211NritEIVEF3nJCyyylI7IxT5EMgpYZX4Ro4L8VW7pvMemzO1c0RtwSoi5ToYK2EWg6Rlq5zwgyelhLEGV1Vi/BtFpptCluZMljmxj4mqXKfztkP5gAuR7cWCSeVQzSWQd/x8efOkJ3MhxcRYFFEaGEoaCEEJ5TwVGbROEasSzkp4i6ksvTZ0Q8uQE1oLi9IbaeCgwadA23es2pZZ1xOyRqmKylU0Vc2QNP26Y+g9IvuSY7TOkWNmMpuRXcWzo2POzs+x04Z61mCsg2TQekJG5tWBDqUTW9tTdrYX3Lpxi8rUHMVj2vMOq8TyIYSOppaxYTXMJhPM9g5VF0lBs7BzttyErl2j0ZIAZ+QeUJtFmcJ7z+nyHH1yTJ+NFLY64FzG7CnWaLrBk9GkrOm92DSgKqp6Dggj8vT0lP29PY5OTjk9OWVna4HTxYM1iwR7MpsTTM3ZIJYWzllu3LyBdY4nz5/hqZk+eMC0bsgDGDSNVQKyunLsWuZsYzPZS8pzXdecd0uUUtjaYapxRI3P5Vds/5SF4X9CWyktrrAjQkjy/Oh6urYnxMR62TOpJrx+/wFvPXxIzpm+XaGzollcZ3bzFjNj2H54k3W35uTomJ/88H1++p2/ITw/ZxmfsvfxU9ZnZzgzkQCV2YSIQ6uKh3fe5Atf/Rr/9bcecud2y3d/9AP++Icfkqn4F9/477l57SZ/+1ff5oyBrfmCJ3tHPDv7ET/9wV8yPz+jPRmo1Q4Hzw74k2//X2zPrnN8fo52lqwCAcX++QqePGPoVyStGfKSPq25O83gOhgO4NSTWw3NNvraNiTLJz9/yve+/xesh+fcuzvhcw8+x97eM/ZOj3BBM7k2p9GO1XLF46NDthYN58uW1+2Cb3zrX3L7+T7/w//0P7Pylq/89jf4L7/5O5yrE8yNbW4Or/G2f8Dy2U/4xU+/y2d7n9AaQ33jFne//B5vvfUF9Ow2aXEP1dzGdFPScUClNYuZZXbtNsZtoVSDrhTGRaIe6DnnsH3M8uwp25XjtdfuwrmFPkFjiWh89ljdkVmi1BpBEiQkbHV+StsfUdWG+WybFGuUnmMrjTIdKUdUiashNShdy2hSSRohYRC7G8AUNcXG+w1Zo16gNJT7VF+5XzP5SlmbETmXD5FJUwHCaM5RZJWuntDMJuLzEIcLxn/xmlO6Eq/ppAoDUDEStn+T7WrZjxRbxhYrh3/gLkFGGiH9QCQXBVILvedaPaWaTVATS9XUTOuKxhgqrTBOQ+XQVY21k9IkNmQl66dx/WusLfLEi08p/tCOpmmYTStqnVEx0kfEhbD4vojbUS7gTwEESi2mQMDcqyfwH39TGWUtYdVy8PQZTz97xNnZCYMfaMPAabuijQProWXZrmnXHX7tCW0gdFF8nRnwaiAUB7kqK5QRBYDKEYKsUbOWRtPoVa108c/ODhMdOhp0VFgsZIVB5K1KgzaKRCIkj1ZgGwsp0YdOwNfFjElTMd+asVjM2Nqe8eGHH3J0eIjShsW1m7z1ubd577d+i/sPH6CdJWYlYRfGlZtAmGwpJZLKWFXCAbPYHlxRq6hAzoaUvYBsORYwMaLyRWCCKqDXSzhXQSiUVlTaiTWMSgVYy5tbabSlQov7+4apudmPzAFKG9BlTVxk9uO4HW1fpCEpwRCUda7MIUr+bdSFfHFZFJs3jYRLb7n52Yvg28vg3MjA4kptsiF8ZMST79LrF7VL2tw3F/u8kKaOr73IGrvCyPslgNbmE+S88bPe7ENdBcJ0UedtPNGQJu+4n8seey/KT68cX8pXXrv8eV51XK+Se77qs7wIYF2AdvnKuXsRpPsPZ9WVY9ns6PKfL5GkXvwsXP29Ue2WU5FiX5JCX/5sv04C/KufMCkU5Fskj1lpktGYnHBZk4MnDh6fAil7bPAoa4gograoWrOMA7YXuU30GaUjaegJRJqqwmqNIpLSgM4Ro4VeplDMt2b4JPIuZTTKWoyz5KBxQXO6PiePDqZaMaRAnwK9D0ws2NCSQg9JToSOAW0sDpkTKpWxKhSzSS8AWU7SQUy6oPeGnGJhcRSfpFRubDWCanK6YlYEMh6FJeGA0V+NZEDLQ0u07YrRzy+Xm0bnUecvAKgkJmUuG01eGdwKBOOVItc6YXepXJNjEvmhq6icPJwJEsSgJV+aoW0JcaDt1mQyQxJTYIEjNZW1aCevCMikyBpilnSXs/W5pABGxRAilavpfaAbJNHJKgFtzGg+awQNt9pcJEZtbAIEzDNYYb/F4h2mhK2ncqExp0zSoCPoEsJhUFglNqB6w8660OfLRJFfQvKbppGHRElJevGWzrmwJct+/DAQGdBKUelM6DtqZ3DTSnw7qgZjslBflcLmJMcl0UMiKUqJ0EtqZSayWp4z+I7Xbtzn1q07xFAMaAsZ29UVzbRhoeYCYijFatVx6laEPgAaYxEJSkqEvmetAuv1iqqaEqLCh0DVRzqdaZSmtpraGIbe44MnhixslqqhrmZMJ6X7EiHhWcZI27eEkAm9JQwRPwzUTiTGMYrq3lpNXVdULhFCxlolY16N8gk2gPLF/HkBvl3uUEkCb0Cpi8ltTGdV6iIR5+pkXYCiJA/lVNiPxiayLo/s4sGUongvaKUlcSfnsn/pLplxcgXiIJ8vXXrvEAK+7wW4NBprFJUx1HUlaa5OMZvNcMDNGzvcv/saejjj8OyIZuqojRX2bYzkIMy2FMRDM/sEdpQS5Yv7AFksUcaq1QZrhLGZoyeFRIgenTN1ZakrAYkElFeoEcg00vHVxqF0JCpNKgxJY8EoYQgmY3FNQ44lKSqmUpiIxYDSCl/OhQ6JmOX8a6XQxuFDx5DA6QpdQQprluuO0+UKGoe3TsyHy318seiTKTOmLHIaJWEI5FRYdApjxP/PB08ICqoSfKEyViUsiTT0OBS2aYgGBmMFkFUV2kjKXwzCpFut16xWawZl6Y1l6KN4WBoDpYlkjKFyVgJEJhOUj1R1hZtM2d3dhfMzrLPY2pGyImeLq7eoZ1uo5Om7Net+zRCGzRyUoqKxExY3tnn9jTc5PD/hyfkhTgcUhuAHog/kwXN2uuTw8JAJNTdv3KTvWkyt0VXFxu9FnijEJDKs89USfT4hqIoUFWSPoifQ0yvLcr1m3Xacr9ZUyzW904Qh0vYBYzTOCtP3+PiYw4NDDg4OcVpz88YulbXEFFBB2Mqh3I9ipJ0wzjGdLzhdH3N0dMDutKG6cROYQM5YJD26ripS/H/Ye7Mny67rvPO3hzPcIecaUEAVZkAgKJLiIFPBVrfDUkR3v/SL/1Q/ucN2txRtO2RKLZPiiLlQAGquzMrMO5xz9rD8sPa591YBBClRtPuhT0RVVlbevMMZ9lnrW9+Q6PueRvTe77xjGAaapmF/T/0eN8VZzqSYMc4+Z9L7/2/bzWDGdJrynQjklElDJnaRe5+d8uT0lJOTY/7nH/0FV68eITnzyZ3PeXD3c+rQ8+bLLxNCZjmAmdS4ds66e8AHv/gJX7z3D8hlJq4TUr2Ay3OyecLJjTk3b17ho7tPuThfMDs54MWX9jnxET67S31/zfGy4Sydcfbo76nWR8R77+PPF5zfDjx4/O+5l4S7n32G7xKVP6ZJDdZV9Gcr7tz7guXTHic9vg1kMZyuKx7deUIy50wPZ1BnFnHNdHnB7YvPufrGFaq85uOffswvP3mMO7lKzKe8/4u/pml7/vW//j7Hds6N+hqfvX+f//D//B1/+95t+jBQPwlUg+fN71/hRz/6S5rosQvDUXXC/b+5h78zcLg/43BRwydPmZ0E/vj1V+nvZR5+codmD+r5Vb7x5qvIrz/n7PIR7uYrpBtXMc0+7cE++AoihGkiDZc4meHtCWRtcI3JGNOxjo+5t/qYi/4Bh5M512YvkVY1ObRU1RHIBHwmsGDIT5mZDo+FPIM0QXrDsL5gvV6DOJjuEwew0uColSUvazQrfgnSa2CEgRx6Urcip4j1Rr2v6gmmGN/r/UkZbIqOjf7JPOMf9Wxfpk1jBkKIXFwusXafuiqKC+epmokye6p6ROaLisNvGDjaypQwjJFwP/75PbYRNDA548oQyThb6tc/LECXY2L55JzHDx8zhECWzHwyhelAU1X4vQl2f0I9bWirihrB5ox4QyrKGJMrKlur9c3GWgeMr7DOKRhrDCIjw8fgnWE6bTncn+NyQELUFEN0GKeSZpUxU8CClJP6nhZSB+afYef/npsRkJhZ3bvPx7/6NZ/d/oSzxYrHl5ecDyvOuwVny0uVr8aAZItDwzLEWg0ItAYj2jMJAkntPGJhq9fZY42qEXQYovck58BbT04OExwyWCyeylYlDKsAfKXHy5JBhmKzISSJhNCrvD1p7zOdT3jtzdfZP9hjvrfHx598Qhbh9bfe5o++8S4n117AVBXJCM7ocDyV8DzVIiirzVoQtB5PfcQ4p4NVSq8qkLP6VI+SS0Q2Ki+tm1WmqsSTQh4xSm4wqLprlPeOvzMCt1+1fYmDJrq/R1BpBOGgrCVlHTDlZ8qYK/e4515DlQ7m2dNRRqqHAn/Is6DOl2WWX5ZgPv9/uyDc+H9W3Fc+5/j9l9YQ8yzQNJRk1l2Able99NvYZCKi53B5rKDAuowM0E3GgP7/CFoW3PMZEHHcF7tfN2AizwJuW/DyWSBt/LobZLF7YJ5/zFdNWJ5/T78POPf8c+086XPc0fH/vnwcn3/MuENHLvHvwpT7TdvX3mHGC1M3Uy40q75W1tLOWprZjMYZYurV48tZbAZjPZddR+wGXRiMUqS9E7ocCV0m1I2a0CPEfmwsa+oC3K1ixFpH1TRY60gGTM74uqadz/CTButHg74x6jthciKGROw7rBFSNnTDmrhYkTAkcYQRxS9/jxio1fURazUFUsYCIEkx+9eGUjDErKBIspmYS4qqMeqhYY1GdpsKStPqDYDDSSJZnQLkssCMKVqS7QaNraxVhp8xRNgsjKCDxF3ZwBbJ3S4YIQSVHVeF0m41vdMZkFghjZBEARrNWRS8NYhkbOwV+jOi0kXnqWpNkRy99K7bKwxJ00hX3cBy3bNY9lwulnRdT7ce1GvAuY35p7VW06OmUwVbrdmkx1rvqJzT1y8Lk5QbQxbBFuDOmIC1hpiigo1lMrjJHHP6XCmWaYUxZbHRQ6lMxETja6LXhMzxZJBR0paEyqlM2BlKemsuwJowGHBNhQgk0cTfkEV9mWqv4AmWFAJDCCTRgJWMpp3lFLn/4BFDP9A2E6xXT8XJpMXHiRY80RElcblYsVotSTFgrKPvA4vLFf2gst0qgZAUeJFMzpYQMxeLMypfMW1bZk1D60fWpfq4NdM96NfE1JNjJhBUc18a/MpVyqY0NdMsWJcxxnI5cVqcW4vJgksZL8qSVPlwxJqAL9emxYArp7jZXnXejzcvuwHfJO/cXPIo8R7TirZUYWPU+0sZdtocpKTyXgSiCUxchXVN8W2s8U0JQ8mGfhDOF4/IMWFcDcYiFJ+IIt10RUeXR38LW1hdiMpZrV60GZ0Eio3q6xYCTdXT+ClDyqxmNSElYj9werkk0SBkprN9snEqOcjjNVxCZbTMQYzfFCDOZpz1GC84MeQhQAlb8c4xhIEcIykEBJXT27plNpnSNs2GdZQtdENfpt/qKZOzFnW2pJyShHXfY8g0TYPDEHPG1paq9pui3hnRNE0H2WWisUgG6x3zek47mSgTUhJDTJx2K/YvptQHc0Kw1CFhM9iSHCYoe1rlU5GcDNFmMBBLETFK9RBLiebW92MNMSe6fo2QqEa5sHcESXRDzypZeqvy9hB60tDTRWHlYLmc0YlnQeTpcqBbr6h9TVPr/idFNe1OieQszliW3ZIuwlBA+RwDkmqs93TryNnlipODA46uHTEdarp+zYP7d+nWl0wnLes2QAv7szmv3HqB9HnPnSeDpu/NW/pssUNg3xgmTU1TOyqgbov3pIGQBrrViqHrsNbjvMGKZT474PjwCidXr0I1IcsMY2qODyccHE85X/YczmfQTqnrCfPZnPneCV0zUE0mZBuYzOeYfl0kPJaqaTi5dpXr168gKWnQyHKpRuYJEKGuPBbDYrHCNy9xdOWYR49OefTwLvuzCdWsQUJm3Tu6ISPiSNmRsmC8IduEzcLBrOGyg9lsyjt/9Ab7e3OGfsDV6oO6O93cWVb+R/eF/x/Zdu5pMhbchqqy7O21TKcNe/PZRi6ovqiG+/cf85Of/AMfvPcrXrl2hdViSfj1bc56YXq4x7e/9Q45WY72r/DW66+zOF3y9Dyy6BPRTjhfD/h2j5def5vZi5aPP7ugMTC9esj+6y+T7g/sf/SYP3n5KkdvvMrb332HmYHj4R5//W9/wtndFXbvkC4L8xDYm+5z6+Z1EhM+vvcZZ6vMxUIHXJklq3DJfrvH4ew6635AvOHWqy/z0qu3eP+TX3O5Oufu6V1+/ZFhdfecT392lw9un/F4gIEle/PAu++8zOtvfpvXbtyk+/A++bjnR9/5Pg8fdXz04DHNtOawbXjlxgkvXT/A+AM4Ndz78Yf8/O9+zpyKd//4W7x5/RYf/uRDwmFk/50XmZojptePuPbSlMwhq2Xi6sWU8GjC7Ucr2itwpWoZ7j2kbRZUx0fYA6usteYAmIHMNsPdvr/kzt1P+fz0Iw6vthydXKG2B7jJHth9jJ1oLZcHqsZAVj/iEaQFg68dRwd7HM5PMI3FNg2OBmKF9S04h88WST1GIpIGDewKPavVJf2wpiqsHuNrMEEH+ZJUI4ct9TGbdVpVHztnptk5P3UmBlno+oGLi3OapqLye3pfNw6sR5LowKQyUBVzXlM+167FRd762n3JP+6fchWN108ZIMIoxX3udXkm7/Ufv30JoYCUIk/PzzlfXILRUJ2TK1eojdPepPZUe1N829DUHpMiDAPByEba6E1VvEMVjEsxqKoBrZttcfg3oimXzkLdePb2Zhzu75FWa6KPBNszJPQ5UlSGmHEaOuS2Ej5hPN9sqam2H29LNSj7dvO/eedjj4FNum3NTXb3k7DR1D2z3/Izj5OU6M/O+eV7H/D3P/kp7334EQG4f/aEi2HNQORy6AhkxHnayYRJM8eairhKhPUKkwYk9aQcIAV185QEYvX8sigzMSdMNvgkxU/cILaCZCGAibaEcFQK4qGQWQxJB2veUvuKlBNh6HEYppOWftnRNg3W+GIt4rj24nVm+3Nee+tNjLXMDw7Y2z/Eea+fRbQfsCQqAmKi7lkDpvQ+ZEEShXHvsCI4SVrr5jIkjUsMQylOHYhFbEJMQH0mDNZogmo2RYpoTEll1jUrx6RHU2Vn+v+GYn1kECdqs1GuJ2OkXHNl4GjV6EQkacNcmLh2A/hRLlA9Lql4ro1fMU69LM14No3nXjmN7JYYsMuM28i1ZavY2WWujV9HFdwWpNvW8AZoa+0hnvdi2w26e/ZPfub1QtrKP40xhQhSK9PV+2fAwBEcHF/LWssQAta7wjREPTRLBLcxOwVU+bktoJ0rHoFfBc7tfr/9PHxp0/f95fCKXYBu+5zPsgWNMV+5gP9jZKtfC6T9jo+xKD6xedQIZpaf6b5+5kd6LESxHe/d5vOm54BK+D096MCq5C0KfYg6tRaVSEZAXEPA0voa57XBNV4li42rmON08pMixqnspfYgOZFyIMdACpkgurhhDP0wsO56klgCnq4vC5ax5IkwbZQpkVLC5kxtPHXtN55Uw7ojZJWvVbN9sjWYBMOqY7XuGaJK+GIud3DfgteEPu/1biwpFXCg1gUFZbnFMiUZadzee7xV7D7FgTonaqsswYhjbWusn9LmrDIy0QlXlkQ0Cd/CWiAaiNaRckmtyR6HJaUeh8q2Qk6bKYajSAg20djbxcNai/E64cN4cgneUMPLTDKZuqqp2hZSJsYAXgt37x2ZTMhB2SkusyLRLztiEEKO+KyegSkFZe9UnqNZzcG8YdXPeHJ+CTZhjOZ1eOdomobZfE4zaakajXqv6lrfY2GFKX0ZgpSEHmM2sGlMUS9yq6mLTvT1rVN5q9uh6SYD1liCiH6eIv0zKN23qi1NNeriI94bmsoTQyKETAojJ9HQOE9bF9Ncp0b06q3ksGTqylF5S+Utg2SG5ZLFeo2vPLXzWKuFkYKTjrqpmbUVwzBwsVzgbEMcOg0L8C1ULb11LOLA5eWCy4slXdexWCzo+06vrzKlSiljsDRNRVPXugCkwNNlx77d4/jqDVaLBU+fnvLoyYJ+Pudob65UekkkA9O6YjY5ZH4ghL4nBmVKkRNdEJYpEIZE6NQ7z1aCMyqLCM5Q47ARZlj2nAbF9CmS6TAEvK80MVLUU7FyHuttAaKzMm3GmwtlomV36L8lBl7ZdIJIkYQ79bKra6+A67g0GvXMyIDkgKsc1oZyjTi8n1BPJkRjuVgFqtoxmIzIUBqIEihhq/Ie9blHA/5xEqfs1eKbIYbKe7wDcqKpPZO2wUjGOuj7NathQvKOUNeY+R53L54S40CzGKjbKUGNPhUUbmp8U5FEWPZx42tiAJMstanI3kDOWJ+pvJrrrvtOgz+ipi5LzJgkzOYN0+kEEWE9DGQR9f4rnnF1Sfw15ZjEFMlDaeYRqnHSniFblUnaLFS1xRsHfaCuK3ISVr2mLotq7jFOyDngnYaH2NmULInLELliHN54fDDYQbBJQXpdC40yNHKgMpa16RBntEiMOpU1yYNryTZh6gl9TkTvyU2Na5XZlYdEs9eSjID3dALBOvx0RkZDOWqXsLkjdx39cklqpiyHxKJPKq1PAReUNSr9AGJJzjL4ihjW1ASybbC2oraOibE4scpuFUfGcvf0EavulBuH+zSNY3F5Tr9eMoSOIJFmWnNyPGc+zVR+oG3mJDNjmRoa0f3Ux4Q1ib29Sq0WqgCo/5uIo608T5/04MA5yH0mdVDbCW3V0puE8xnnwVQRZwNHE8ucwGUCIyqRygzkiUNaj6sspnbY7PFtg2k81JYu9Vx0KxZPT8kpIgK2biEKs6bGuZpHvkKwRGu48uIJtsqc3f6cx5Xj2msTvG3IzjDZ28c2R2R/QPIN0a0Rm2kcTN3A1KyI1ZSHDz/jP/z1v2fv6gu0+4dcuXKdG9evc3wwpfHqAWJG2cimct+G/vwhtt3J8C6jd8v4fXbivjvxfn6q/Ad7j8+EQ2xft6osztWFJaK+uYIwP5zxzre+yfWbL3L1aI+2quk6z/wi04clLsKLN15l/y+PWf9gwenpA/7hF3/D+eoRIke8914kpin3Hxxx4423+OY16Idzbn7nNQ7evYZ59Rp/+vZ3SMvE6vwCZw0HV+Z85396hxevGz798FP+9iefcPpgzcnxEd959y3evvU6V6+9zIPFN/g//+Nf8dHZOQsMDx4uqVzN4f6EV1+8xsnxFW69/BqT5ojHjy4I9SP8yYxXr97g6eXAz3/5EXvsc7h/xMc//zUrWVG/fI310xuc3n6ZF+xVnq4eYN94jRdee5fZnXusL86JfmCxF1jtX/JgeI/hoWW6OGbdBm7++Tf5MNzh4zs/5ZWHR3zz+z+kOTkm+opJfYgXhz9ac355xu0773F52iHrigFhOJvR9TWf/foXeFnzx//qz7A3rpNSyzpPac0+tveQDOeXl/zs5x/wxcPPuXbzFrduvc6BOdahim/ANpDASqI2vhjQ6zAzXjzi6Ucf0F9ccHR4CETqgzn26lW67pR+sOxNM8YdorYULWnwdIszKp+BwJPTx7jKceWFFxGrPmw5O02H97UqFkYZ62jIpWc4G8LLV5ydY38kWZjUFS9cvUJd14zkcUFwti6hU4zSCbR1KdN0dv+wIdmVl/gnA/bj+FuHP1oDDCHz6NEZYeho9w5o2w3CuPOLz645X9sCFiaWtXanWRYkZS6fXvL+px9z0a0YYqCZtnByCLXWtbby1LOJSiRFB8QUT+zKevU/E60VdO9EZUmJ2lHkHEHMJjTAGYukhLdwMG+ZtjVhyDxePsWEFpeFblhhbMJ6oaLCmZrKVuSYWC8u8VeOSt3uGH3Axr0z9k0GFBCisLZiD96V6bkyscW6DeNKkgYSKpibixEwaBecKBISCD14T8qZe598wo9//P/yN3/zd3zwwUfc+fQOXdeBhfWwJuSEeKtKHWOxdcOsndNMD3QoWoGdzrFDYOjX5H5FHDpIEWsSVrIy00xWP2GnIYS+z9AJvfescNQBUi+Ymce4Clc3DL2m3tdNswlqs1mBLY/DWl/8giO2Mgy5U1aiV3A45szkYMb8eL+okkSPrQ3Uxmow48jIiwu8KyqU0u8NoVelBoLN6sMeQ2SZ8gYc6/uBy9MlD+99xPUrV+nXlq6HqoV4sSJTxe45AAAgAElEQVRbwTm1+ahKgRolK0mFjBR1h6BBBOQREBkvxlx6ANSSyRRGrDHYnDFJWfQhRWUVCiU5tqSsFmZeCEmVVEYQZ8hW/4izGOOLMsojpHLu5c11bYtHtKpucjlPlaCS8qgG0XNP+y49F2OIGxapc+qfnlMugQ/ao1a+0v6mkENyqUkkqR2LKf5AQ+m5NknKZnuPFlECkIZTFgA0JyQGvT6KH7NeYw5HUYiVHiWXgSlZwOkayxg2AaUH0N8u0NjOoHME1MqS9hVrqJIjSp0zskAZ+7Ht70k5NyQGvB3fI0jKWOXebVmPGyaN/hkJOuO72wXsFcJ5jp0mbNYNvV8UBcEzH2AEPUcw8Nm6bFOziWCs4LFlHuDKe9GeNIrB5KQ2MxZMpQnQgiNnBbRNwWpyLPcm+6xE+LcBhF8L0OWcGYPzFA/SZnBICjIth0AzOGqfNQWHMTNHxRVWMq0D6zy2ctRKdsCII2ZHYCBJxmRfkkRUl0+OpGy4WCxJGZX4kOi7NZfe03idIM2mLeSIhNLUZ8EVAEpaS64bpG5I2RD9iuh6bEykUrhfXF5g8IApcio9GSzqu5dESAQk6YFLUj6jdXirB9oYPWm8MRhXGnwSvTGocNTgjaNBMJKoYINQY4UoiWgULIxidRkxKmkzxuBKw+UcSDKF0WWL2bYefJ1QCrsSQArarjTnjJioXmwps0oBK+BEJ2CVtYUGr4w5C4gz1K0nS80Qg8YZ2pLoVHy8YooY8STRBcOJZ9p61pOaOETqqIh8UzfM5zPm+/tUTa2LZ0mIGSO6DdtFwJQwCWN08RODsiN3LnwpN2pdRERZcE6BM2O9MoMEcBZvDM5kfX5JWsRYofG6QAXv8TZuJFqNa6m9ZVZbprWlbVu8t7S1o2k0YdiQNfjAqS8VQErqkydJlzzJCY9REDclcpHrplSke+UCtlVNM50Ss/DgyUPu3n/I0/MFT0/PGYZA3w8KSDP6sumOcsYyn+8hx4b9vT3qyQwDhOzohkQ7m3Gt8Zoeu+44u7ikbSrmbVMCOYSuTOuMZJUR54gtNx5fbsBWPLXrsa6EUJjMkCN1NkiIuJRoCuDhq5q6jhiBmKxeM6LHVNNXy8K7s0hZO8LgFKnpcwUvWwB69991U5VEY32uEFTyq4IXlf5iVA6XJVMnXc9iEmU15hKIPTLkCkNPh+Gj1+P2OtcbvCnpckKOGVtZ2qphOm1pasfhwZzDw0PqytKv1jw9e8xkb4ZtGqxM8PM9Jl7BxdAPOlPMhmY6JZkBcZYoSW++vtV9JHreSpl8pZTJIai3pNEbog4XDdYp0JdSwpWb09APDDGw7geMtbSTCZWt1DhavIb+xEgMgRyjrt3FTw8UMB9i0iFNisQEjVj2Jw3We9q6IsXE4ExhmCmrUKQkxRohleIjOcdgNPWsRdcMkywkiClpwE0OxGRxLhGHjqXPuEnNMCROn1yySJbF5Zpu0GaCXHxxRKddzhgFxmv1PRxSUE+WcT2uKg72D0iLFZNYs0/DvLJM2oqFgRB61kMkdEvqnGjsFO8806rC1wbjPIOI2jYYUYaw02GOSZqYhRiGIbKyA+t+xdnpmmFxSOxPqBroVgv6oWdIAy5BSD3WBFpvqHxLqg7IzjOQGGI5tyVTVyjg7aP6fkSdhruc8EnbotrUtK4hDxmTdYA2hCV9vMSbBMzxRiBHqpzwOLxtqV1FstAbQ/KGaDQ1PZAJJiHe4NuaQRL3H93n6ZPH3Lh2jWvXruGqlsdPlyxKcjpJ6LvIehWY7QuHh3u0105wOXH+5CH+5Aa2bvG+JktNyhXGNWDV1Nt5Q9UYpjPDOkfuff45//XnH7IIDqmnXLn+In/y3e/y7rtvc+vWdU6OZrTebfxWUwhYrzKvf3KH/jtuuwDcuI0m8lv27/+ITcjFdNqVwt1YKRNh9Tc1xSd0LNBn8wmvv/kGkhPTxiNJTfqzQIqZSeNonWfWnoAcsXc644vVxwz3H5J7mE4mnD5K/Oof7vD5vTXXX7/BO995m6svvcH5xRkPfvEB6fEXHDUNZ+crHjxdcOXaAdePGibzPY6vHPPyK5FFekLbtLx88xbvfu+b+P1j9paJ23dPuf3jH7NenbI8X2DrzLrJ9H3im998l+9+//s8vtuzuv8B8zhXT9iu4uHZBftHt/jem3/C3//4p9TtJ+wd7nFy5QUunxr+7b/5O/7zXuKF1xJ/+i+/z8nxC7z5vW/z8zt3uVw95MofvcrJmy/w8ZOP+fhn9/nhW/87h++8xsPPP+Xz/pSXjmqObl7n4NU3mRy+QA5WvTjrRHKPWacK4/e5ceNFXm9mNFcPOXnxdfrHFzTxE4wdoAuk8w7mV/DuGLLWpqePzvnlTz8k4/jz7/2vHF7dp53VOIEyKtfiyZesZnGllWkgV5iYqGKHhHPSYsHFxYLuMwdXr+FeuI4xntoIzkeo9zD2AN/MmVqPcT0QuOIaxAp+skcMgdCvlB3vWqyrMbZmlJnKmBLNmAP7G+A52QFsnME2GnZmjfpbarmnDLycDWRl12iz7HaeNyqjR+zOK41dyz/t2tOX1ze4ldEaMB5XNQrquOq5z6YsOtlh0/1OK8+zvaM2dCnT9R3n6yV9UpP7qq4QaWmNEGLEe/WLA9BppkOsxRqHFY9NCjZoNZXIOSooB2BF71emwqLsOU1Dh2lbsbfXsjdpuFip3FnyaMsjBRIocj7J+AQ5KsN+C5Fq/R31sGxr/LJn7Li/JJedXVQ/KSrzbLsr9ONJ3vqfld5LwTmD5Eh/8ZS7n3/GnTt3+PzzO/z6F7/iZ796jwfnax49fkq3XFHVBieGRAKjAGFVPM68Uba98w3R+AI6+AJ8GCocgiP1q1K763vR3kqHxyYammxpXE22nl4yU2dpa92vMfcMUfeH2KBniVOJsd/5wKawv0Sihi/mqPs2wzAE9e8Wg6+0f4kxEEJPjENJcQ+kGIhp0OeQRErCMHT03UDfrYjDeD5o/RtCJA2q0HHOkDPEPtA0FS/dvE5bT/jssy949OQuxkHtKhbLBZWvGC9VU46piJBHv+PNnQWkyF83Bxe2tlHk0g+NsWBsAF6tfcezRxGGvAFXylerKJi1EJ0tiJjdeS1Nsk0kVNGn6g/yToiDSPFUT0VVEphNJ89dqs++//HfW2+7EQHRx8W0DXF4dmD3rAfdxrtx56kFJbjsDvzGd/Gbtg0QJbsjkvJVZHOcRlBwVyW5exw3r/Q1C9hIaigdCJjd91ges8OEe+YnsvNY2QJjG2DOFOBR6aC6R0sNs/ke+ZK32zNb6TV3fz4yoXf35dcNSfV+I8V6qxx/0XN7HATl4oefcyaTCBhSdhqiYwsAubMHzM6O/b0AuiS57PqRkmiIORJiYIgd6dGK1E+JQ0tV6QtaP/p/OSZVTeUdta8xopHBoGxXY6wmvBplPBmrVNQkkELQ+Opi/GoxxDQwdGsk6QTNemXnpQj9AIgi9cYamqrC1hVDjDirhpkpq/9CQqnfSvtuSCYUfzND8eBX7x3n6GPGUgCurDfdbHw5gS19jAiaXIpxOOuxJmMkYRCcFGRY2OzHaLXBz0bZZz45KhFiSbA0RpvtjKLSMoIZ42JkVUZsniv6xxN5e2axOclTSohJOq0QSDkxhEiF132P8o6GOJByjxRfCudrrDX4ulLZr2/VgFZAxJNjj7MqjwthAG9o64ZJG1gterITjKghbVs3zKZTqrYhSiakSDuGOIiy+8avuvpmqrregCS7lGNrtvHN47/1jysXUflMRVrsjFFKsX549YgT9UpqvCHViaGKhEFp1JW3TOqag/0J08aWFEw1gK1qp2xtUvHW2y50o4G82XEnVqBQJxfDMDDewIyB6WzC5WpJjonFYsnZxYLbX3zB/YePWfcDfRcR2S4mQom4L8+tku4LhiFyuVgxaVqqylH5msXCcXg4ZzZt2JtXILC6XLBeR7wYaCp6G8hxwAFtU1EbR4qJhGi6phqS6TLhDdZFYk60k8xkMmDXabuIUW6SjBMdKcdIZZTPb865TcrQeCyzok+EoIxJPZ+fXYB3p0sKYLtNGIg+Rh9Xeb2GTc4MIW0GCwyRvgv0QyiN6nhTUEaZTm3sTmKP4JDNWm8wGF8cLyr13NufT5nNJzSV42B/j+OjA6Zty8XTp4Sho2ma0sw4rKuYz/Y5ONwjBE0Ordc9GI+/XBEGnZBWxYh6PHcQBYKceJ3iFeZSxiBGjborLEOIxCEyxEhyBhMCWdYMITDEhPUOFzxJtv59Kamn4NB3GyBY/ccAm8g4hhAJISgzLYFkw8T5jeejphvrgMFmtn50UdnKwVqtx61FnGXImUpEE7iNArPKQoISM7a5AeKshgZ1Pcv1muhqPcOyQvZWCiAbwfQZW2Vc8T6MQ083dPTOE4ZeC8dhoHaW2hmm3nMyaThoK9rZjDY7ljaQqoEFCRnWZIl0/Zp1t6IxfgPsjqbHej/RAKCcRRtJ45Rx2zTkPBBWgdV6RYyHes56lSbXtaZP5zjgHTS1U/Yloo1T1lTUHEtQi98yR+LQk3OirRv2ZnMumiXrdWC9uGRVT8hHQYcTgMkRRJm9TaVFdUqpWMg4LYBlTMwqwRNWtqbESSfms/mcuqk5e3xB1w80kwn1pGWx7Fgul3TBEIKWm5N2znx6SO1a6qrh8Krj/MEpn3/2GVWXOb75il6jkiEmKmPLtF0lAp3LrKtM6IW8DKw/v+T0cWCwUy5OhNsfnvOfXnufP/nhH/Otb73B2y+/wPV5SyUOv9Ef8YfG5zbF5ViID8PAYrGgqiomk8nG+3R87LiW/eE3s1EAbK4ldjmFysTOJoP1WkRaS9vWWIHWliLUgXjIaNjOOmlKseBY2Qo7Pebg6BZH9Zxb+++wPF2x7gL7x1e4dvMmtZ9x/uFjHp5+zN1f/JKqu8f07VuYrMqGcHnCaeehn9A0r/DOt17hxjvCahG4HCxPujXXX4Dp5BZXbv2I/J8+YPnwE6biqd2EF279CW995wfMbryC3Z/zwvQlZrM3MH895b/+w1/z07+/y/TFE95+5y2uXL0J0w85eOMlZoc1N65d5SAd8vD9p9w/f8z925GuDbz18otc3W+5dnyD04un/Or9z3F/9V+wx5YqHxJnh5zh+PmDB5wZw1/84F/w5re/B/WMGC2Vr7VWNgHnKvZPXmX+7ZdpOMGaCuPBuRZ/NOWVb32beP4RZnKAm7wA+QAJ6q92eXrOpx+9T5aOt999m2u3rhZvNtA10JBST4orpEgUraux1ivzpJ5jD64zfy3BcA3joblc0XXCMJ9hrh4r+1SgT0useLxpVKKHwbkWaKj3p4ypUNY6fGUwzuGrpkzdK9ToXdenLTD3289zs6mftmD29rdsaaAzONFkyXGqO7aSxqIJtP/MWykZzebi0cHP3t4eKcZtYu34OTcBV/+4l/nSWiCQY2S1XLJardS6AlWAuLrCx4gYnpG5pbQddiozSBBJuJIIr0NGNmuUcx5j/DPWGhiVZE2mNfv7U/anNeuLAewlQRR0EtcjTsiFMRNjBi/0wRKTR2gxuILKUfzWBIfWFUZfUO+RiLLf7ISRdejKvpaYCTHgaj+SYEBMSa0U1qslDx884L1f/ZJ79+5x985tbt/+hDuffsrTp08JQ6AbMoPUDElVA9ahw62yf7AaLDiSGZzVvtVYlXwi2qM5qywbEfVlkyHpZzRaf1k3hokFHXTmTCYyhDXd8JgwPCIlBcGM6PHo+471emfgHKLWaH1P3/cKxMVECImY1AM3xUzXqVIiRwW2hkEDW3JSEgtof6M+eY5lrLfXpBENkwKMUcar9zXOGYxxOCv4qlESgvW0ewNHE8t6veLu519w9+4XLJcL6rqm9hV17dXnWcZ+Z0y/1NovjeoZ0d6Fkoa5KwbPBaDLxhSZ8DaMUVCiinyJJbW9/vXeKtjCQpVy/merr10uJ5Wlp0SWqMdRIrEoJDYqntK7STkHd/uWTR1kvir4oCACG181syETjD3O8wDdJpDjuQt/g1mVfzxfO4y94/h8z9cVz68nm/eq3+jv7Dxml+H/1dvXL2bP/+7zHnW59FfP+7B9nS+bKWj+rpRYyshHz4kC3Not0aP84pffu2z5fLtH6xkWm36QLSC48/tmc06XXyxrvJb+yh7NJdBPATqVY0vWIdXOOxmf4Jn983sBdLvSs5GiPBqk5zDgbJEfigJJpkx+ohGIgRgS3lq8DyVpc2sQL5KV+WIMznq8N1jjdVH3DdYJE+Opm4bKe1JKrNdLYj9grFA5jyRdrI0o2h1DJEdtTmXoCcZjqo6YoesGhpBJYjEm7FxkTpvMwqTbPZiVGdNY1BQUMUrvL41xH1Kp/02hzOodSZMWM7XVE1TLB6E3pcAAshhqKpxJ1AgkKXTc7aKSjJAo6UgK3G6Owxav/81bjJFgCyDqBeug8g6THZW1zJop3qkc2VoNJ+iHSIyDSk5DpA/awGfrNnR/Y4pnlGuwBoa+x4BK2SYzYoJVrTcgk5Xx50pYhLZNmmJUV7V+tpgIREwqYlS9gjbg3EazvvNpFVjQveFseE5WpL9Xu6qEbuj3DjRpyVgqo5RvB9S+oq0CgwtITNr4Z52yjTRe68zGv03TC80IrwPPypdM8cQyVv26nDHktOODVwqC6WxGc3nBagicn53SpczQd1TeYkyLZPWcGD+XyVsWmTHK5FED9wvOzi6pS0jDZDKhbWu6bsVkUrE3nzNtJjjrWS0uWXY9IoK3Dlcms1Vd67RLMlKKjC72yvbrIjl0WBdYG4jRlumOL6CcAuO2TJnVP6LcbHY4yeN7t79Bdz8uyCklYoxUhcH1TOE+gq1sb1IjWyXnLWhnjSOmTI6JfsiIyaRFh+0jF5cL1l2vS76hUL3H41cYciYXkE7KR9iCUNaqzL+uauq6YtrWtM6SYuDy/CnkwEXlCYOmU7dNtUktDiEQRWnybTthNnPMZ4LzLWKecrnoQBTwUWm3JrBaI3ruVl7PZ1MzlKRfh/rAgdGGjY6QhSEHohuoC4BXe48Yw5AiaRi2oEIWUookKT5+qFl0iqJMQqOA3nglmQLYLJYLvBEqY8moebIGOijrzpZ06xyFaCK2NBXZWvqUcDHhi7F0Gr03xOBEXWhSztiqoaobVknohoF2NuXo4ARxZ/RdBzFgkg5DXBRMn0jSIxLx01a9ysqUsPKexlc6cEkDaeiQSr0+55OK+d6UiW+JU2jXiXs2011kzJDoujXL5aU2E0BdN5B7tpJnHfxsGlOrdgUYDV9Jnd/4K+Yk9F2v/jNlCcllMGENxNgjLpKzL8VqLpIgtOlGz/U0RCQmqonn6vEJlWk4O7uk6xKXlxes10u1AjBSAkMqZXpnHTxlwFlPFhiGyBATKVjEGZzxVF4bORGdqFvnMM5R1ROqpmUymWKs5cGDxzx6fAqupZ0dgbdM2hnONEhwdBeB7BLT5PCugbTm4vQMNztBco3LEXKAwjiuvMcgmjA6BJzUvHLrZd66+V1imDKYCWk6o71xwvHrL/LCaydcuzZhOi0G3EGUulH9YUGw54us8WtKiVA8VOu63qxJ//23AsZtJuU7haJhW7vItnQst1RigmChsXpuphgwPqjkx7uNumw+n/ONP/oWNt7ieLLHRCbkvkNyj51OcPN94mB4cu8RD08dL730KlVsuX33UxZD4q1v/YjX3/0hxkwgBEzroFUfynS+5u6v3+PCD5xcran8AW9+7zv82cc/pPt3H3H6dIV3DX0KnIVzHqwecLxyzGzmMtUcv3wT+8lVzkPFt7/9L3j3nW8wnF3w6tuvM7k557O7H9IPT5kfnDC5dYKpBz58+D7/97/7Gb8+3qdtX+Li4hJnaz788A7LyYJv/8tv8/0//gZXrt7g3t0F63XHbDrn5utvsH/9On2v4Sb1vMZ4XRPENLj6Cq33uNSivgUCyWBnU6Yv34CQMXszENFAHZfo1yvOLx4w3av4o+98g6qtIUdMU2sTECPYRBjW9P2aEJWtMWlmtJM52Rlitng3w5+8BHIMLlJdAZ892TnEq42NS6FINSzZRLKN6i+Vyj3RoA1vUoVC1TbaeFGkiYVhpAmuxZfndwChd4Ht8XugjLML+yALKZfhmLWMKjmz8/emGv5nveR3n1sHrcZ6JtM5OcaSaGqee+zv/gZG9oo1dnOP0iFJZug6zi8u1LYil0ArZ7G5BOPE3eZuWw89vy+tQ4f+xRdLH6cySms8IUViTKQ8FHsRi68MTWtpp5a6zRjXkyWSqBGXyFat1TBCyILLMGRI4sg4XAFoRy9vUPYbJQV09O0QY0k4IhQynaitRQVIxJbuNGVYrzvu3fuCO59+yumTJ5ydnvLg/n0+/PB9Hty7x9OzJ3RdR9d1iGStHX2FFc+kcljJCs5kwZtiYWKEVAb1Y4r4OPQ3ptSdvtLrAKHONTk3QEKi3pcVIHAbCeOQIqvViul0yt5sxtmjx3z83vvc+7Rlve6g1Kvr1Yp+6Fkul2qBUwZJu15im1MCrdOd9ZtryuGw1lBVdVGnVFhXqw+8VR1Jsi1uco0gFQI4a/DW45zFZDa1tvMOX+xLYlSPwRwSSSLr9YoPPnmfxw8fY4xQ1xV9vyanwHQ6Yb3u2PrDFX/2Al4kCdqzUEA7rE56GPvirYRyBEe0AyxM4KxBU3lzbNymhhpliSoNFxSgHwkB43AuMarJNiDMps5UIg07AJWqoXT/KGMv7ZA/7E4C61dvz197KaVnLHuefey2rx1/9/lr+eu23Zrj+frjq97T88DZ77r9NgBp9zHPA3Dw5dVw+16e7eXLD3fAs4KzFAAXdu8JbEC/XJisX/k+RDYg2TOA5vOg3leBc5v9tQUMyV8+js6VoEHyxhZzhAV29sb2Jc0/7hh8vQedtUhOjNh8zBBzVtAoZ/Ua8g5fV9S1egZkFKATMQxR6IcekQ5rDXVdKX1WEjklpVmPlOzCQnBOmWijJ5macqqxpvMOYxpGemjVNmp4L4aUgzasMWiiZSkoUkr0QyRlKay5ihATwxB1ygjKyLO2IOZZVZBAbdQrYbCi9VRhTWQBSbrwJAxRoDLKZHFOEJOxOVMVQ04xRedvSsFcqL4e9SdzKeJz2kyzVIyayUaZuiMQJwWkK2QHPdB2y1janKCiIFIeWWmigGiMmWQctbVYb5nOJmqC7msFJFbCkDR9y1hLFzIjaT2lREo9fSjiBYnUlcUZUQlyyrjG0lY10yYxaVpSFTCiIJXXN1TSsMBWCrDmMvExRnRS5fxGxtnHoZyGBaAZJyJlYXOuMMq+Is3GovRgSRHJCWuyetDZEnjhSooSVsMncsaUpF/nMpbE0C3wxmOdYGyFc5pkO3qnQVlkNxr2Qt6XErPuVaJcOY9UdpPQKznjjCPlSNM0xNLWt3XNtStXmc5WnJ8vSEFI4spCldjA5eOUBaPM02ICG2IkJjXjX/eeEAeayrI+GLh+9Srz6RQElpeXPF0syDkr+6uqEeOKL6MjiZq/UzdlcdlOQ5IIKUFOkSxuM+FwVuUWVaXegiYb+n5bhH7VpGacLo0L5wakYVzInz2u25tZuTFlCENgYNg8xhhDSoGBSB56UowMsZzHqzUJw3rdsVx16GrpNvtRn7hMfjGldBzp9uoF4W3xwNOlj8ppmIhF17r1qme1uFAQtmoIsWcyqbm4WGCJnJ1dEELHultzsL/P4cEhvm6oqgbvKyYTgzWVrr29Fj+7VP7d5noIUdPDTGFFotLRACRjGFLCS6J2hrptsdYRk5RhRSCEoTDlvE7jVYBPSoGYsoImha0hZX3GWkxJ+FqHQO1UmqogTlZ2oTXqlSECYkmpyB6txVuhT4nLrkOaika0SNbTRIsyUoKQiS4RozasCcBZppMZ+yfHXPYB6xyh74jDgHhw2eKzxww6rY5mwHtHnxNdiORBza1Dt6ZfrvS6N/pec1Sz88oaJt7RVgYriTGFeywpRnDdVxUpKI09pYRkTa51FvX9zIZYfF50eu82RVsIgdV6zdnpKZfLQIunt6IMv6T3Rm9RJrYUKb21WtDmsYCPOGsJORH6nv2TA46PrrJeDZyfL7k4X5BTpFuvMCLMmhYbLX3X0XnBzFpMpjAp1CvP2oqM3YCz2aIFe0x6BWSV2saUqaqG4GsWy56L83NW3cCtV2+yd3iV0/MV1nlmk30OZ1dwPiBxycXZIx7fe8DTxYqFvaSTClfPCN0laVgT1ytsk5lUNY0TDpo9jmuhbg740x9+j9fe+QFuuqfp6tYgtce0Hlvr1KQqtVf2CiT+oVlquwX7bhFc1zX7+/ub0KrRIxW2gMR/j00SjMVh6R/LLbRUkGWoMhJ/bKl7vC+qcWAwgreZSmmzUFiyJPAZ2tZx9NJ1jD3BWYONVuV2JpDpoerwpmYilv28z/6r73K89y63P/kFd+7fx9w4Ih3CdOKxUpOHCL4l4XAxcfXNI87Sfd4//TXv/er/4vH7Sxbnj2lTT5MsEgNPLn7F924c8YP/5VsczA55cvece4sHfHr5hPN55MV33uLorbeZXLnCfOr5s8MfsFo+4v4X+5xfXnLnFwseftbx+kvX+T/+8pucDyv+6r/8jP/8t+9xfhmJcc3+tOXPv/t9/re//AuuH7/OUV1zurikfXpGszwnPb5LOH9Ic3wTlXmqwKsyNVEqcqqQPICsyA6Sq8iuIvaRPq1o6kw7cawJXJhPWeUldWo5PDni6OiI6eEEySWQwUQwAWPVH65qSrp1Z8nJItmD1JthQYoRbxpwOio2daO2AjkpSO8SxnSIREK4ZJlX4PeYumO8bbUINdpkk5M+74YcsFv3OO3RN4AevxWv2r0WvqoZFIQoQhQNPdLXdZua2Dz36M335re/9u+y6dszBeQqkirncKOCZcOa+2d4sfLxU8pcXFxwdnpahl7FrqbUUN57Yow7A82tEfvmqUQZbrkkeEr599gLWC190InLWK0AACAASURBVIGq/ixlIYvFmIh1Ee8rmhqMKcwQo/1SsuqbbYz+O1GIBKLovgGMODYTvawpuBR2kVhL8hXBotYTBqwRKitUssaEc2T1hOXpJf/xl19w73TB/XsP+OyzO3x6+zZnZ2dq2xF6DKKJxKgnuGtbkEw/RNbrJbPZsQKgSfePNRbn9XxWJvxoWfL8gRdVU1mn431xuKahNhnjhNhDChmJllyAHO8dMSfOLy+o25br115i+OKMp/d7TuNK5Y7jAFsE5yZcn1/BOot3XoEy55XIYA3YjPcZTN6qzEYAUWwJ7Ciu6KKMySyjdFX/L8spKar3XCrAXx8CcVD1htaAHm+1Tuv7jq5TP2qRRIg9KQTtvwuw572yCdfr5QZERLber2ZMvAWwpgAX29p1PNeNQf0Px0AHu72PjiAMo1S+DP93gaYNMMOIZMqXrgFrbQlMsSSjjbMxpry+oa6bbfCDKG6g9RVApqmrDS6xua52rrXfBHxt+xj7pcfo1/wbrC+eXQM1WXX7ecrJud1Pz4Fzz3/dBeh+E4D3m/7veSDtq7avAwXLA77297+OSSZShv5266E7BkFapeYq1vM7bF/F9Pu6Omzz2cu5+FWP3OzTopoBQV2sigB3c3y3Pe0zSB3wVeqy3e235oTnspP0et8yzARYdmtmXUUXGpyrCjtCF2sBrLPEaAkpqq4+asLryJARSvOJ26CjutDVOGuoakc9DJvUku3JVi5/ydhsSCLkbMjWY2uPdxbnPT4MxJgxLiI4qqrBuIp1F1gul6zXvX6WYmoOFsmiAQPkwuqTDTsoZUfEKZFYwFW1JppayEbZgsZljMl4McQQETLJWjWvNAomeWex2RCT2g56sZA1ObI2huyElEWnrJmSCISCB9ZgnGWkhI/I71ia7FJYjVFGBq4sOmnAJNHgDAweS1015HaC846Uy42mpLplL9hscSHhs5CzApjqgeexUVk4KhtVA8zQDcR+gJzx3quU1OlE1UphIxkLTs+LDZOjnLMjEDH+GYE5Y/RGKgXtHgEcndDptpl2GK/mmSlps5/VzyFJJjnITunpKqEti0COOFH5dFNbpk3FdOJpW0fTeHxl9Xyw26JtK7MdF2G9nHTKozdMfb/qU2fKdDSPx8mYzXkdc6CuPHuTKdYYlsuOtm2JyW7lf4Uptrs556irwjoLWaXgfSxM14FJUxOzSu+unVzhYH8OGM5On3B2XoAk5wleQw9KYDF90ALNekdlGkztML6HlGlCxvkOSWUKN4IxmI20UQNLvPru7Wy7C/Iu/RvYTsbLfhlZKM9vIuobMZvNyjWwlcrCdn0JRSaQUi5geiZFBTKzaCk5HkvtXrfyGkMB6jYvr4WQKcWSs47KG7yz1N7Ttq02MF0qabIqTYgxcnFxySef3kZy5P7dz8hpYDZrOdjb58rVa8z/G3nv9WzJlZ35/bbLzGOuL4uCaTTa9ww9pQmOTDBiFPr/9KI/QG96GIUi9CCNgg8iNWySM7SNbnSj4aqAstcfm5nb6WHtPOfcQhUAspsMRUwGCtcdkydzm7W+9a3vm+6zbju6vkPrSlrKSyCZciXjN4k+YAieED1Jq8J482RvZAVNitZ7upSIRe9wM2C1RhkrQKM12CisZK2lRdhoTYpmA/QPrsPyyQdavRYx2ChahBYl66y1xGLyoI2WDSqUxAFdHPgiWQUB9Mmo+QI7GRGVRlUWWzmss6iQC8tLWqjazpNswE2mjKaaFmnf0lacPCMKX9opjK2oqjGNyQRjWOVE30fW0bOMkdliTddmllF0GY014jhqlYypGISVnUDnKOClc+gcSMnTtSusU3RZFyfmLIBVEKmFIU4cxr9zjrppqKtEqBqskb1NdBprMdZYrdG2JqUa73tyCigG1mYZb1ragYbqb0qZGGTOU+QXFKJ1aY3m+Gifk+NjKOK1fbfGKENtx6ioUSER2o7gAwZhZGhjqJqRsH6CFtMcJQLKShtx6lUGH3r6PgqQpzQ+BHyIGOOo6xF975nPlywWK64vZiyuVhwcNozdlDafs1ws0Upx/84tZv2aZ89fsJydE/oli6vEeKLIo30BNNeB9cWcMNFoB3u3G2wjjsuUfReVSdmXvcuglCUqSRYMqrTw/vMeu2vasA7Vdb0J4L5JFfqf7cibUFB+3FA1IEcpvymtyLFgH7qsdAq8KtpARIwRoLpde66ve1QaczBqcEZhHWA1UWmC0mgLOnUo5ckuQ+o5PLEc7r+Nocf2Mw4uj7mVM9OTA9TE4VXExsTs4pT5sysqV7Nen7GKZ7zwz/nl84/57Fcf8+IXzxktDyBb6nrCijnz2RPm50fMnj1AT+8xHd3iwbv7fPjwI7ow4+TWAaO9hsvFBeHiCccjza2jMZP6TWZdz9RG3pgm3nlwyLu/fZvoLP3oHp9fBPynn9NeXGHQnIwnvHN8j4mbkM7OuXj/feYffciDPcMkrlmeP+H45LaAmDkRo0NnJxq0ukYpB7kn60gs7CEcuMkUk9agLVezGT9//AGm7vnRGz9iMrqN8o7cX6OchkaRkxeQxQBEtDHUzYSqErayopbEEIWKisVVx+X8HDuCen/M3v4YlEXpjFERFVZ0ZzO++OQXfDE/pzq+zd13f4A73qNSexJzDpPIZJlzZd0ZCtsZYZ3cTD/+EcP0NXMkZ/AxFT1bNoyINOgtl/Diq9OcX+8Y0lStpIVFFRazaKDpnUf941/3BrCnlejH9h2Xl5ecXpzTdR1hcEjNW2BATMHil1wkb36fNwWmLYNOhPpzccQ0WpMJpQKWJZ7WsYDAUdhdSUkeorSAcTETtWg6ZwWRSEodKbUoOomdqFDYkt8rSq+rBFRKYgSQPKrrE6Fb081OuXr8Sy4+/4Crxx/z5MUVf/Pwiken11xdXeP7nhjKOZli3KUVTdOAUpu9sapqxpOK8STQtlLY1lp0OAf/VLl2EazdFAfzxoEzbW5Q0tKVgNEYHCLun8hFz884KV4JM1CxXrU8ffqUGBNHh3f53re/gw/CVG9GtWiuplCuvcL3XthlUQqjKQhbOUaJ7VbtEoiyH4cgWnEhFoDNS4imBCCIKWy06GKMqORRsStMsQJkJcSksBgd+M6L3rC2YvRYgDNjLMZW+D5gq7ow7AJKGaraEn2g7/sCsFFeP+1gcMJ1MkVqImZh9YlpXJFXKQlfLo9OBaAb9JRBifECQ9dM3MboO/lhKgDwYDQgXUe+fP8SQKbUDYZTCGHLWJSZRVQF68gRqL9URNiVtCi/3eBQu4y43Tn5ZQad/LxrcPjq48vPfxXo9vLrb15TbX/e/dvuc153bt+k5vB1sc3u9fomsdD2cwElF9mkaDufZTC+Gjq4Xvc5hqn8ulbcr/xcSub0AANL22Iu4HkhQcVS1UwJpSIqxc1aJ52d4SVgrmA2aYgVv/o8vlaDLjIwsJAzMoNEaGEVCBqEKlVrrQRuS1mRAmBLz7uGXHRORFctQ9HqGkCmGCkuNQGtkZZLazBdWypW8oGMHaoM28k3VAwEsHBYnTd6XdY6tHFUVQPaCjC2o4ElIGjeGEWAAEY5eIzKKCUME5+dgImxJPfalAVI2sJkEGkwFp0CFYGMwpPxSpOKVl1GWGzRy6bhkMQ5K43XGZfBZ1mYopIug41o4maEbf5XBtTOICzXZNP2WX5ltEJn0XZIIeDXLZVr6EcjYXKlQO87tM6bc9VaSeKcBYAyRtFYh7OQu5YQOjptxA0JRV/cQMW5VG9YgQPo4qwYgiSgqWoBdIy44GwmcB5AgaKXgWgK5LKIDguzVBVLS6PW4nSktGijKI1vWyojovAkEZNNfU+yGmUVZjAdMJppXUOSMVvVNU3tmDSOqtZFuBhIQTZQJYKizgrlPCtk7JfdKaviFaQg5UBKuoCJWhKmMi5dEfgN3pOiwmiHsqJT54zeTOycZNOx1pSxnkkpUtcN3nv6XlrtiIEUSjgZMyEKQzDmtQQCSQCCphqxt3/E7OKMxWpNzplxU4mGnRXw17iK5XqFFdtHmQclUPRRAhxVKqqbtmREpD/GSIhRxO5RAiRwM5GV599MbIWlGTebZujl592K1W4LQAgBay3OOaq6QivZrGNMBC9Mwr7rhQ2mpC03ZmH3iskKkDVF+1iAkTK2NBmjHBSQVSPP0UqceY0x1MWJuKprJpMJrrK42gg46D0pSnv6cr3m4cPPyTFwfvGcyiq6fkQoxguj5kqS4qwwJuJiLlU7AU+MNbIpRIv3RloYnCmBO2AMPovxxartaPuevjCchdkmLalKDQxFhbYWmzODaUcc7lthSIMUE3JZW3MJ1gcALydhwVrrsMZKcJmlDVMN1a1SZMgUA5Uk7ZY+R6LRVIsxk7aV4FrOqgROqgBPGh/BJIUpLK9sDKapME1FdoZoFD2ZdcosQ2QZApVyYBqoNb3J+CQFlLZfcXp5ycVK2J+NzkUbUAA/SrJpjaEyislohCGh+4Bu16SUZE9Kmq4XFjZREXMgJSkIeDLR601bVoiREJN8BYKPxOJEO5lMuV50GGXQxXEsl3U7pXij0BB6L+31w4KfMtkPjmRKmN7tmsV8wXSyz/HxMSlCU1ly8rSrNcokoCIrTbdaiVOaHjSe4maNNmmgabORJ8gpE0JptbKW7HtZc7SRPdVHrmbXLNaB2coLYGgqJpOavdEIY+Dg6IT9wwPSakVjJRA+DSucDkwaReqWrEJgUWf2D/cx2lIZhy16iNp6MOuymcl8BbYuZ0r0dkL5yxCE/3MBdLsB7rAmDT8PTBfY7sO7z/lnP7axucQrQX5hrCqyA7mwCQAFwUui7ypb2gklPIsogoq43KPR5C7Tnq9xxmCmDYwigY6UNW1vmC8DjQ206zPacMbdu0eoecfFh58yWrfcun8M1lNdvkCfn5FObjN6awqpQfkee9Vz8ad/xuWLL5hPM5+mGU8uT/HrBe/cOeLe/Tc4fVLxUMMXy0ucW/GtvSPWH894+hcfsP+7luWB5dnTGQdG873xhJPZHPX0Meeza66ePqK9f8DtB4fovQl7t06YTCvUt0eMDw4xY4XqFzx4+4gf/6u3mS0vCXGMTmt+8bfv8+kP3+N797/Pw799yvt/9qfY60v+4Pd+j3fvHrM+fUx3fII7uoN2E5QVAJ1sUdmiegWxAZc3DvQ6adAnEBKf/6eP+ZM/+09EE/ijP/59TvSUHM7RdYRYFXaxBj1FxQr6AG5o62rIJqJNLzecjhQMftGzvlqxuJxhJpaJltjG0aB0htjBIjL74BHv/+QveB5X/Ojf/luOmim1rgsxQJKUDWlsWHV0YpBEpxS7hgT/mxyvmwsDw4XyeiFB5yPGK2wEjBpwns0xcFmlpfs3NOdLKJVSka+RRKUUriQ+3maN7Ew4vtkJlAuWcipi+tKy1a7XXF5ecnV1Rd/39CHgQ5ACzS6gkIcYWaRbcvn9ltebCpOT7U3JQ7eALrGyKkmnuK4rk0BLMS3FjAqOHBvxIkHAJa8CQYuhXErC4gpxRUwL4LoUNxuyasRNWCsUCVIPoUOFjhwSse15+OgJnzx6wsPPH/P0yRMeP/yMy9Nn+PWCLkYWIbLo1pBF27y2DuccKWcxvcoWY6S4l1Jm3bZ0IRKSJ8VUcgTQJa/LJXYdZFF2yFebPHTIp9MQl1iN1rbkvgnlvWijm0rytmyIviXGgG47Ls4vWa/XnJ2dsT/9nEymqUdUtaXvI123ou8CIYrZQyYSB4DORzHWinJt2z4IAJ5FU5sCvKcSY8aYJK8TBkDR8i7GBDmhsy+tpLqAj4pBJEkrGI/2iMkztKUrSrseFqUtJyf7zBYL1usl1moqV9jgKmOd6L9twE1hX8h7D4QExZcYiikX/cEcSqoSiRlS0mjTk2OFigFli1mGkkKlKvPly4BZ2tzEG+DVl9aXvEPIELfZWEgmucyBIR4eCCAxRpLRO/pyXwa4JCfZntfrGGsvt6Rvl4EvP1btLKZfXidfBRLefI8hT8Js86uXQbLXgXa7r/uNgKzX/P7l93x1EWHnveUNC3h7E8x7mWm3XfteD9DJnqRe+Tm/ik0opJoB9GKznxSoS9bbIbhkG5MPGI1C8KO0Oy+Gt0tln1Svvn8vH18J0IWcilGEJGuq6DRJQptB35woMYu7q4BdEKNs5LaqyodU5YODcjJxlVEFWc8oHUsCLax6XaLMnIX1EkUJVQC4IgyflQAzoVgjkzNGO6wBq1XRX3OgzKY1KAS/AQ2GmxFiJusomj+qIOgpgU6SKJXqfE6aBIg8k2gTCLMw00s+urH+rc3QQquJWpLWKEglIYv2i9QVRKfNKUPWCZ/F0TbkIBTwlAhZ9NyG9mKlSrvs1yCw5e5graFxBqcCfZek7S9movaE4MhaWgN96BGHo0zvMzkb2aiSQilHbQ1BaZxWTCdTfC/6BTYmPJY+K+qm4UBXhP5CqlSIflHTNNTjUTGpkCQOJYti3mkbHY5+1W/dPhH9EaskGY3GlOpIxJp2w2bbHfDOGKZNzaipSLGnb1eQA5U2jCpH8J3o5jlLbcTIwnsBtYzOrJZzEXzuHdqIQLCr7MYdM8eA1oakDTa74opXwDyyFFcz5JwKQFcCWYSlFlOW+6o1o1FDVTcyXgrQLJ9vB5DUsjlvAKxhTqCK2KtDa03f98SYqKpK2lb7gNaa2WKFeXHKydEh+3tTfN/St2vmq3URBxaWVTaJpnLgrSS/SUHsEfvxoveGLECDCKixAlQ1zYg0DlTWk6LdtADusuWG4MhaewNgT1GMNNq2JYRAZevNRvOqBfX6+pqmadjf38cU4xelkujrOEXoPK0P9H0oFcHSGlMCBlNa3IfWY6UkCTFKtDJ1ud4556KnYjbCzLuUdwUYa2msgGkpRdF5CxnbtbTLJeu2JydPSuBcTVU1KGWZL1YsFmuMc1jXoJVHr9eS3KuMc5amqaiqCqsElNa6oaorFNKWHBOsu56+7Vn3AtDFVECMKPqZNqdNe+Rg/kPJOXwQ56/gRSJAZWFkGaWE/ZallVbpQdND2i1yWatjZhP0mi8FMYUhijhvxSQmJHSes8sr6ukU5yyLVUvb9bis8N7TqUwbA5NqTMYyW7VczlfURw3NdIJtaoJW9Agol3zk2Uzm3qquqWpDUg3LLAyvCFzO13zy8CmPL+aM9/a5e7jPQWNJuiIbi5iw5OIQJgmPc4bpaEwznXDrZAI6c7XsSK1IKmgrm21K4nKZgrAbyaKh1vcBo7fudjFLy1bKGteMQIs2XUrggwTQ8t6y56IV3ke6XnRctSmMyByoqpq+9wK+58h4vIfWmqYeU1nN5WJGSvuMmxHz1YyLsxe0Xeb4eJ+DcY0zYgIUSstt13UoU6FVTWUtWkVZq2JktVyyXq0wzlG5iq5dC1CfRWsQn2jbjrbzNM2E23fuMBmPsVqTQySFyOTgkG9997s8f/GUlsydw0PadsXlrT20PyCvZqT1UrRm98dizKNlf8xDFlWuSYrCDNlIUyhhwA/tVlv47p/veDk4/DqduZcTi5d/95s+FBADrBcty+UCpRTTvQmjaS2JecnV1uuW84sLMnB8fCSdBhoqLRYTGouotSZqp5nWGaU9pk70NnC16uh6zeXZnE9+9YiU5pxf/opm1PLv/rs/RF3N+fu//HO6Lx7z9vE+xnrasOTgnXc4qRvCizNOn15x9tFDqosL2mdPmH3+Mc/Hil+uLll1niPdcL3sMKoiM+XwzT3M/RFZnfHDb93nW/sTTj+85K2TGenQsD5fMc1grxc8+enPuby6pLIV796/z72De0wO9qBWhOC5Wr2gvVrhzRtMmlu4JtAc9bz3gzt89OkRDz/7lNHBGGsmoKecXq/5v/7D/83f/OSvefv+XfamE84vzvni04/5Xr3Hm6OpxKeItmcIlrHbZ6i2xhhY+RZXGyaVI89XnH3wAT//i79i/fkLbt05YXze4RYd67CgjzP2pm/Q96IFtl5ek+Ied946lhsYNaRiHGGkApizmGaNJiPqNx5w6+4JuVIoazFmJAKDUk2E3hBnPf3FktFexf2je+yNj9josg4PhVKwKcB40RRGSUzzjwHn4PWshmFfoRT+xHU9YDzYoDAYhmXw5mjffqHEYL/uIcX70uHBFszRBYz4TUCBu4X1nEX4f7VasV6vxViqFE+2hg43E1e5D3mT00isBSAOnwPYIHGUADWKiFJSBNwwnzRFM0tiVikCGeht0SK05Cw5WtRJANoMSQdyaCGuIK+gdB+AAV3hQ6ZbLJidP+Py2SNOnzzi8sVTri8vefjwEV88ecblrKWPmtk6sOoj1o2xtaV2HQcHB9RVRdf3wtqqKtCa2lVkFOv1mhSydHtYJ/FxjGL6h8SVKUUB3UIgplCIHDVtKUxsrycMYLPSQtpw2mGsFTCn90QgFyJA8AKOptLqLPGZYbFYMLu64rnyGC1M/BgD7bqVIljRVS8YsJgY5Fi+psJ0A60bjHZQHOpFO1ATQ8L3vQjmGynaynAXgykBXTNGyR4vxVbJvbXROOsw1uA7L8w1FMqJMU2IAZ8VIUfWsxkZqGpbCuClfRYp7m6YmoXIozdVMVkTUpEJyUmkEVKS8aOT7NS990JvyYpkDUaJ8YyKAWIkF23l3fE+AC8b8CVvY3rRV0xF+9MwmMdsCvsxoqIwnVKOQhjJO0YCRfJhmGKSu5gvzTngBmg3vMcucKTUzRhku9cLI/DV4NrO+6BurHG7c1+XWHwgebz8Ortkl+1rvxoYe/n77e9EzuebHF8F1L3q/F/HplPD+MmvO6dXX+/dv+0yG7Wymw+Tb77Qto6i1NZ4Yuf3m5hTKdAJxTa+k845mfvKaJTVZC3yYGSNQNDSMTfc1mHsym15PVC4e3wlQDcIVSqtBOEvlXaQwem022wqAwU7DOh9EbTU1mK1IaoszjwxSwJsjTBWlTQ4qiJgqYeLRiT6ILpgubhxWgdG+vQxYloQsxImCar06JdAPQvtVaksguh9oOs8MSvWrYhzrrteFiojnyGU3lVnLdopXAplkUkE3xM1qGyxSjTy0qAxRwYt7Jw+Im44SlwC0YqI0GVjMmCVVCmytKXGkEqrnREHWOGbCEprjLS6lus9DNobN1WVfucsLkJKS4sYSoAcp4W2nFImBAFBFSLEPYATicy4rjF2xNqv8X1LUhqlUkmqE8HL/Y095BBRTjNxjoE9UFWOFDUmwnQ6Jq06qqYmrVsysunEAo5mxCWyrmt8GTfCzDCbAMV7z7hpUFoLiKUUOooYfS7AVCrVsJwEQBGdvSBgqtXUVYXSUNcVdTWiXRmCX4uLYYZRVWONOC06J+LNsmkajFW0fgVaWkv72BfiQSKGiA8igOpshbGWoCzJ+g0dPOdI0tIykDOkmGXsWiteeH0o4KVM2K7zoCz1qKGpG8Z1pGvAR1XaNGPZ7ACtsHUlGyKANkj7G1gn7R8heXyMDH5qXecJ/hrfiW6H1YqDgyPCZEL0rbQ0xVjaFSPtek1EWitr5Rg5mcu1s4y8xroWvGjP9V0nGnTW0Hc9ZOh9JPptNXfYzF5eRIdNNoRA24lD1dC2sSlOv7QQD89TyoiD7XxBjHnjmCiARke7bgkp41wlYKDWxBBJiK6XKi2DIrIr7Z0x9NIO4SpQIsJrlRaThzSIxgroFFOisRa0oi0OqCFFnHOMJ/v0fY9xjslkjMqR4Dum0wlGS+UupiztpcZIRXjdFmFZWwI6MT9x1lLXFU1dU9XC2hOXPpkzpoDE4yzac+iWdd/jQyS0a0LOwugrrS22qgVMyCU4LwBb17V477Fa45wVh7YyvuQcwYcg4r2liJFSZrlakaIEO+QC6EUZqz4ELIhmG0laYbXoM6y6wNPnpxwdHZIyzJcrKjTjZkwXI2sV6XwirntaFel9xMTMJ59/zuMXpyz6jnVOrObXmL7j4uqCzyvHvpWxWB8fcbGY432HMpp5G7hceFZdxtSQtDjTRW3JRphXIpJdYQHnHKu1MEyb0UhA8spQe0VVJfpi0hLTir7XqK7DmiQFkOIwvmVCWkJhaKcEdTNiPNlnb7/DdhFXN6y7ntW6LSxzKQL5lFE+QNvjioYrgDKOrDyZUESNRbS6dpq6ktZ/pVUxxEjkEDl79oLFvCN3R5zsjdibHlBZXc5RyT5Ixhmpo+coXDSVE85s2bt938vnLtqD1tVizKDkmnW+YzG7xp7cQmuHRmNM5uzFY+bzCw5Pjpi3a1q/orKJEFZMphUP3nqP68cPWc0vubi+wq8LAykmgs/EUBHbSmKHbGSv3AAIEtjlf4me1q84/sUYct/wCH7Q2zU0o1pkHURjAbRisV4yn4vj7GQypnYV63WH1jBJIyk+Okc2U0hrdLXk6C3IKvC0fcp//PvPePhkxkFzzKjP1MGDijx8dMrh1HP66DlxOcOcHPLs+VP+5v2f0q4XdN2Stx495X8cH/CD7xvy7DkuX7FK13yyuuQ0RMb79/mdb3+Ppmp48ekpv/zZGUe3vsPk3ojjyZL7zVs8+VTRLfc4ixWrucb+bMm9txreunXC+eya+XLJ9WzNsWn4w9/6fb577ztUa83ikwsWYc7z0yc8+fRDZucvGN26y70ffZ83v33I+MRzdLeichWhd8xXlqAOiPYQtX+XeHKH66ri8+WS//yrj/iue5N674D5vOPs6TlXnz0m6Yo7995mMj4gpp7rsxXL045cedRBx8lknxcvXvDig7/j/Jd/w71bNb//b/4NqAz+Of25o7n3JpU7Jq4Vq8U1Ic8g7hO6zBcfP2G0v+Lw6C2MngjLSWtADGFyKnqp4wqXDclA0oacTCnxKxEbVBXWjdkfHTI9nLI/OUGrWkTdGdjxsiZR8oGSasjvGXRa9W9s7g3TSJXCzqrraPYcdV26LvKWu7flN+wevwFwrqzVxmxZ6KaAHb/xY0gyU2K5XHJ+fi6kiJQ3RcGoCoMr6qGDr8RVu8Va0WKTWyWifztb2QAAIABJREFU/SJlIW2LOUEIXoAabaS4giSawbf4IOeSk4BBTTXCaUdjNOusCOse7cBZLS7iIUOf6FcVue/pVwtcXZPWgeVixS8//AXv//wjHj/5gtn1JWfPHnF9/gV5fUnuZ4TlJSp7lLXU433untzCTG+Rq300msZkrJL4ZLla0XY9IUl3hC77qdNGikWdl+6ULAx02WtF903vMGm0ktZbKXRn0DtOmSmTjTDOtJLcIyrJAVNMRabIoLQlZ4+1VdFoEz3xWIrMmZI754ocKWQHjdUTicljcVcfBnqR6slm+2Mpo5JiFMMsKK20uRBRFLYUrEQeqnSGaCl8Z5WIOor2eak+Gy0upT5nehWggqwMKkPU4p6aBuAth42BheiZR2HUkjfSL1sTBbWRw4qhmF8VkoK05WYBMNDS2RMDqAQhiPEisndX1lLXDU3TEK0jKbOjHbdrAiGxiC5tBRol+UoMJS4ZMPpt/py12TjCCsCyo3FdgJlcAJkB1B7ktbbTVO28f5IcvQDoAs5uOxJyzriicbf7/J3p/lqgKmfJma26+d6vKmrc1O1WXyI06JLfDOc5gPqw7STcuKXu5FlS/Lx5Ti+f4+573GQUlo4CXc5n8BvYATXNJqZMGyLPBsIs52mMEQ26nes+nP83Me7ISXJJNQBvJe4Rr5qiJ48w4mLOkIeuFMjaCNhdzqtEnKQgxnZioJYhJqIKYGIB6QSLSBlsZWWb3TACXwJwv2ab+kqATi5E0Xt4af+TC/2S/sHOABJWibSy+lScXrNgkwmZmzLXpY1TwYYtJY9SOFtjlOjbDK20IMw+Qmm9BLIuukeDGw+FUh26UvETcCjGRMyKru+E/aDLwrsDPOacIYAdqscl8FdDC2WJQbQqYqdZqMhFJUiALS30YZVjQWc1OibsIHQ5DJThhlMqKQoJdUreYZUmqIEtVwKlGyi6LnpwoquwAUoLKDcAleLsGAk5olSAGIghUOtKWpcKsGC0o27GaCvtc84pYtS03pNTwHt5bJeBAOtKtNmUUsKeiJBtIyyWdkXb93TRU2nHVjtPbrCC4riUybpMxLx15rHW4kMoQLDZLCQDg0sHv9G+GlpcbwgubioUWQRorSEaQw4yVgzgjKZyjto5mspgjCsLtwUDt+p90WQrBiQpBgFmUyJ6z9XlFSkGQt8TfcRoy3g8ZTwZYytL9L0AsqXtssuq6MQl+t5jXI01Fdb0RC2ou7g+WsbjhE9OPI1K5dQP2mq+tJr60t9eWh1VLq0KWqOS6IUN5e+UFSom2r5nMV+WIG4frVMJOKTdD60K8A7rviX0nhgDfQZiS6c0fW/ouo7KiD6D94GUE0bbDcNHwFNpExjWkpdp0zedd4WeD2wYamKylL/0+Jdbydq2KwK3HVprafsNAW2szLlhEYzizGpRmExh4Uq7ioAc0tKlgBwDaF20MqVaUtU1TeWwSoImjSaFwHq1ZLmYsVqvaXtxQ3NVzWg0oaoq6sqJsQDStjkeOfb3p0QvenK99/iuwxfAtjKiCyfAZb+pqDvnaJpa2JZVxXyxxFYyZ11dMUKRlOh8RCCmToxD+l7W2bKXpYTou7WtXFeVxUzDR2m3VsJQUmV9zkaMc2JSxFgCRavpgrSsqrIGhgwqiO5cSFtHV60NKilyDOK0nWSDjDGxWnc0414CxCSBY+fFSWxkFX3SxACdysxXLZfxjKu25YvTF8wXK0LowffYmOgUrPqes5zl/K/mzFarImwOSVm8qkhYWp9YdT2r3tOnkWzG1qGMOL8NG/NGxIKBOSH6NxIoSuCjbSUMuDbS+54+D+NGWJvGZLkGMRGTIkSRgKhHY5rxlL5f4pOShNhYYu4JKeMzRAzzbsWLi0uM1ZwcH7O/N5FkIQNaSxHMWmwliYerSvtZ3u5rtXPUtmKVOuaX13z+2Wc8ePMtAd8sOKuAIPffaGzd4LSitgZnbHF8Li3PWTbvjflFL4Bs8EHYgFH0LxeLa0LosPv7UuTwPSvfMUoT2atiEFdxnTk42OPevdvsqcCzh2seP3+GTQZFKeT4SO8T42lN54Vhbofiet7eH1kn2IAK/1LHPxaY+5cC8qzVjMcN0GDrgcUtlyzGSFU5bt0+Fqa00aSArFemNN1l8K0iZIN1FldljF2yCi1/9+Ej/uQvPmG09w73fvwGRyrC/JQnj8/p2opl1Pz0bx/xxu0R+7dOuP2db/FkveDxR0vm14n5Z+dMfvLXzGdz1qtrpuMpozt73PntH/Ljkz9GOQu1o7JTPhw94we//Q4//sP/hg8e/zn/2//xP3P5i+f4S8VVc0XOieV6ydLt8T88eJM70zHP20ecXj3nzDse/Pbv8+5v/QHj0T559gzrFR/+9Bf85K/+X/rFGf3iHDttuPXFz3n+g1v88F+/x9tv/Cu+9953+Ml//DlXsyVnly1Pnl7R9xUXXc8KxUgreq1J1vHdH/yIu2+8y4vrGU9PX3DrwTtoYzAu4/Oc/VsTRrom2Q5OLFfLU07PH+Px3HvvXd68d4AZKXy35uJ0jlnPOLEaXTkSjgO9TzYaOMHP9nnx/AXPFw8ZjY4ZT/Q2yc9ZElqNBNoUowClN8m6GTAto0BbcDXKVaCcSHJgxazo5WFaYqpX8lPVbrL09SDW17W4yloD69ZzcXlNNdYc05CKdECt7abt9tWHRNff5FxefR5ibCv6rxljpbV2aCXVr2Cv/JOOgbKRIrHvmc9mwgor8gi7EiFfkvW5cb6D07yAGClHMazTYK0R53EkBqUUofuuJRNIuSPljr5VxYG9wlrHul3T+5YYLUo56UjSIneQg2iS9d2aJ49W/I2/5tGHPyWs18zPWhZXnhdPrvn08xecLTqCtvgcMUpzNL3F3Xt3+cGDA24f1Jwc7FGNxnRmzMxrLtZwPVtx/uQJKUTWYc1AEI0xo4IEDClmckyi4Z2ixBYD+29gr6jBhOrmXp5TAZVR2w1DQuDSYSCpujKmtFQbkTWyjmwDOfjisBsKOF1an8u9MMrilJNct1TTd0Eh2b5fPTaF2SOt8NLxNRS2xZU+qkzQuuSnkltJjC3MOa21FHCVkRY7PUz40nZXTkCkT0o7aC7ZacmPCjsFme9qA8QXBKLE3q18Hj1owedN151WJbb0gZgU2orZnt4Uli3KWpIqXXpVTd00jGopIBcoki0AP+QQN4EqtQkChnxixzzh5euqSv49YA6vQUhkLm2BlNcdWzDs5mO+6jlDXspXvP/LjL1dYsOrmHevA892waDd8/q6+OP1rLSbj/kSY/A1YOM3aefcvG4Za8Nzy53flGOALUB8A+QqzOvNuJWvw72WYaolZi7zRvSbh9cs5zmAtHl7DiKdkApIE0XGKkJdNaQBGCUVYD7z8mXYMiq3nyHnXLowX398rUnEZsEZkPOX0b9dNFSrIkKMAFmqtDSFWGQbCpik1OYClum2WZB2b44xRijeWgA66a9PCLEjkymuRJRK4YB9KjkBY4q9NpFBXFYrhbUC7g3gnY9hA8JJ4pCFYqwjlc5oJ9KituiIiexoQBknzrZZnFclwZdFNCpFUrlosSmq7MpNURsm3AD4hZQRCK0shcqUhChhKeguEmoMAzOnjB0MMSiVtZcmlda2/MtoK6BjZSw6R5K15F4WRu/FNCOmhK0dMWZhXAURL+1jxPeRGEVfMGTZKLU17O1NqaqKuFzSd5FqMkaNxqirq01clCnjukwKPQQYA6JfNqmh6pB2qhgDMp+1ImrRbBnA3kRhBJUE1WizeW0Zq9uFc6MttgP2WGOonRHdtRRBa5yr0ApCDFKB1hbnKiprIaeSoMu2fri3B0rOu1119F2ArEje04WOENsiKCmfwdgKV48wVoTucxHeVdZhCvMzI/TzqoFx0SEEAY9CTgTvy70pjNCi9xajVK6EyVmQ/ST3a6hE2NK+0HUds9kMlSJNbWjqCu20aGWlROMsjbO4UY1vO1QXYdPmqDDGUlUV2gsdPKSEDxFlLdZVeNWVBfnL7rqqjIHN98PdyoMZzU7QudtK89LriAh/VRzMYnGkkhmUkrBCXa3lNXJCKQEYjBZNQ60Vse/KGiTag9oYaiOtXD56qmoEiB28MxqnMyl09CGIQHZl8dkTvQAy67aj8/1GX3PultSjhr3JhJPjQ8aTPZbzK5aLNdPplOnePilFur7H1R19X0SAU2LVrqWlum42BKGcRWeubeX6ZqBKiZik2hOCgDKutowZi1tr15NzQFsJ8rJSWCuut31fXJIH4D8FUvTElOnVsM9lkrIkbUhJKlZWG6IzZN8TvCZWVtrWQwKtS+FCTBuMtWAdli0DWEURM48xEFJisVhhraVPiT5ELpcLbExELaxOXa/xxvL06oplSpwv15xeX0khAmFYOaUIWtORwXsZD0sBPW2S1lNMzXivxlYNMcFstuB6pFnt14T9BmWkTVoHgyJudE5DCCy8p4mafb0v6/Oge1k1uGqK1pG4uhJjktJOZG2Ncw5rwdkKlXwBObMAwdqhTUWiJSQF2pG1o8+KmBUrn6itAHcX8yXLxYLL2ZK7d24xqmqC74pLdabtOkZ9Jy6yRb8mpiCsvQx1NeLo4IDcQ9cvuDw74/BgH9+vSalHqYgmEENPCGKyYWwiBzHOSFGYk8Peo5SYy2glRkpDMK6VsO9i7Hj4+Se899YdDg/HYozU1MzPOuLlNdPphKZxrPtAJHO9nHNxWVErxfTwiHa9prtaoJIkPiF5UupAZ6JKZKMkuMnb3EMp0WwXSGKIIv6Fkbr/Px0KtBPAX+IbVVqoEOlAFBorIHyhbRorrOj5bMlivqKyIyb1mLoyqE4xO5vx+PJ9Tlcv+Pu/e8xHf/uM7/74iL3xhLrpOV2t+Pz8HGtvc3Jwi9n1NYdN5s3bDY3q+eITx8OkSX7M1azi0WkmffqCZ2ef8cabd/ij//qP+NFv/Q63ju6Q22swiSdftDR3HXe+/V3C3RVPP3qMrioO9/c4u37G88UVra7osbx/+owfnd/l9354zPFJzZ0395iO7vH9P/g9Dt9+E79cs7z2PH/2lI8fPuR0vqC9WvPm5IQ/+PbbfO9bt2j7BeufPeH8+JCrs+fE1BFj4LOPP+F//1//PZPxhC8+e8LEaR4cHzC1Cqci9964y+Rgj8urC/Ynjnfevs94f4LWAZU7jAJzPCYZw2Va8+jqHDM95jvv/ohJ8uQww6cZ4/0p7q0lKi4J8ZK09FTuLnpc4deK1fkCP2+o8gH15D612WNLb+sBD0a0jmMx+dDImuMpibMFk0qJ2GWoNWY6Ru/vQ9WQsiVr8wpuWn7p39cdvybbTEnHSd+LOP4mQY/C4n5puN88zV936hfQIqVciuYiBzCfXWO0Zv/gYEdi5p/+OXcBt8V8zuXlFW3bbnKTmLYdSruPzzkXo5dtEq0LW0wAOoX3xcFeZ5GfUJmQo4BXUQptMYrMRe89apm4vFpwfnFNHS0+r/F5xbpXrELmejXH07PyKxarltUy0K6WRD9D5yUqrUldwISaUQqk+SlYjd57g/1777H34Dsc33uDtx7c5ntvHPNbbx1zq8lUqifOZjx5dsbDx6d0VzPatsclxTpEQhcIXSCHKI6s0tJF7MX8TQpWg9h/JsUCyCnpjEgpk1PcFIElMS5JegGWyKowrYS1Kb+HqJLoqg843iYHHqQVZIyajLDFC7BjACdibMVkgw3oM9y/ja7jK8aqQkkrtzUYLVJKqkg15ZSks6zIxGxfN20YR1oblC86lwWMCC+BvWnn56xFdmn4GnXC5070snY01gqBb8MWHIAHcfItU09LwUCVBwuLq+geKoUzisoZVHGezUpDVVM1jWgMIuxHjCtg4quZZl81n3Z/3gBT8ovhRm7mVN4+eAfjYHOfXga6NvNv8+/L77cLWN18DRhAxq8CCP8pn/NVn/urrsfXAX8vr/GvAwdfx+7LLz3u5X83tTRvntfm9TJbbdFc9EZzFswjb3+f1ZZ5qsvzNuSOgj8YBIw2Sr6KGScbIJqyng6vO+Sjwxqai+SYVgZiKkD45mrIGkTRsEMkBbjx2bb6ejnnr20h/nqArlTjhq83aI0MSLPe0ChVuUBZQUriBKhBnEOHG57k0w8o5iCuP7DEhq0ulirH8GEpgMyApA+0yO0FkMcppVAp4MqiZZUGm1FosjJkJYBf1/pCrxS++NDPnXKm66X6FA1UKlMbwW8toAtWqovLXtayKkUl7MDAAOhZnBKn1toobBJwK8XyfC2soaClVpARxpFACIVBpwOOYhFNQXmL+HqKUSjXG4CudAQhQYUb+veViIHXFYxr0Y9TMbCaryBrQmHGdH0gGYWPkbb3LOeLwr6DXDToBt2BXDYwbQyuaWhyJrtMc7iPGU3YX61ou7CxGt6l/Q621bo4mGJ0oUfHzWQdxpRSW/OApASsaapaGHZeBGqdsRvwbQCApTpVxkSxTFeFCq6UEqBGSWXRWRFBt0ZE1bXWdF2kaztUldGVkwmdQadCLTcGqorKWTGhOFbkKJVd33rW3RofKmL2tK1nsVjThwXaOIxr0MZhmxHt2hMjaCsbXIgRmy3GWpwT1tJ2EdUYI0l/CImq6guzJGx06bz3aG3xxhDaXhYTraiso64qad8sLMDVckmKDkVGa4cN0PUZTYVxBsFUpCWU6CXhV5qYhM6ekYQ8JWEFDuBbzsXppohLD2NFlpN8A6AbFvahUjI8JudcAs1hpdkew/gY9Lpi3OraCcvJ4gqwopS0dlij0VmjkGBLQ7mPos3hfYAUqZwECBFLzNIeYa2hMpoceqLvcMYymYzYm4zEOCFnfPBUFlZtFpOG4Fm0YtqgMrz11pu89eYbPH38iI8/+hXzxYK9vTFVZanqiqquGY3HjChzOMaSlIiGWgj9RkdlMKkIIdC1reiQpSTr5Q6LNMVA34qTtVDNyyZl+tJyXjbHskar4gY2uORmUrnPlmQcOWtiQgC6oCH0xKhI3kAW85CkRG8uJAkerXH0rqaxTkwpCkCvsyZECa7blcc1cmdiTsw7j0mRrJW0wK97snNczsREoEuZuh4LMOx7fEgkkri6aoXWFalyoDQ2JnLfEYNoeKakMFVFVgJqLZcr1u2Irh+JyLORZNYV8IckIsadD7RKM01ZNucSmDvnaEaNAK3OAZZsNU5lUpL1LRfX8RAiXdfT+kCyWph0yoJx4oiaNX1WhKxRtiFqQ5c8KWuSrVj6yPzZC+bLNccH+0xGNbWzwmdRmUQUdrApbGWtCAX4rirLwXQflx19X5PpRWcyJ1LsIHdo5SG1hD6wRmEbi8pRQMDS2pyA2HtyErc50b8DZy2VdeSQSalnuVywuLrksy8ecft4n+OjfSaHh5jLPZZtx95+LW3dbeB6seZXv/gZnzvLvemYd966z4N3v82nP/uA02en+KqiagzNyBJTK+ut0cQs1rmbqjiiZ+uUJBgbmaj/gg8FW705IJf6pdLCdARZBzMUMyJhCcUY8TaiGk/n11x/MeOD93/Kw6e/JI0vqU80s6cvuFcpfv+9B7x3fw8zzdy597vsuVv85X/4Bz771VO+985dKpV4+skjxo3nvXvv8FH1lBkJjeGzTx/xxYuHXHfnzGLi7tunHB4/wJHxeJ4/e86f/+VHfPDhnHvnT3jjB8cc3h7zne//a9anz9ifjvmHX3zIbDnHU/GLTz7iT0dr3rttcEZTTxxqOuLkzgkp9rx4/Ih/+Ms/55cf/DUXi0tC0Jwc3ea/+vGPeGvacP3Fc+btFflwTNefc335nLqBqaqJ7ZonH31EZR39OrAPxMtTzsJzbp0o4uULYjTcPmg4evOQ6X5N1mtQHcQ5Pi7p1g0/++Dv+fvHHzA+vs0f/M5/y2T/ANtek0KFbW5LobE6AGakeI7yLVgPKZHbAJ1hVDsmeydEHTC6kpg6eVA9ymgyLRm3YYQDG0ZKVuV7lcjJU4004we3eK/7Afb2LY7vvyEsaO+pXVXYcq9JJDfslZe//vpHTtIJl4uLaIqZFBOrZUsMmemk2o7x4V8hEuzYr/8aJ1CM5jQlZoqslgsuLs4Z1Q3T6QStC4tud535x6455fEhBHFvPTtlvV5Ly1X5e8pbF9fduGmIcTZMHnWTfWNNJSDtJoEeEsdc4gpxC00pFHKAIwTNchE4z3POzk45vb7gxWnH5XzF+fUFbVixapcs257VMlFZQ+UyWvXksKbSNcfTE751Z4///nf/mKPbJ+Rb78LJtxnd+w7N4T4HU8eRNRyagAtz8uVTrs/OWV5cs768IizW5Lal7zratqVtW9FWTluTh82/XBzjS+vzpp0sI0YoA3PsxrgsCXNph80xblxAh8dLmx4okwsgQAGYBq1pi1KlvZWwMcazWm0KV7YMylwKSJKv78TCm1LSl+eRaFgOj1Ob520OLSCc5N7DGyRyKZRZJQVqHQftd2HUQXGPTIqc9eZ6pVCQN0RbNumIpycpMTHZ7VLKBTSWnHy4urIaaK0xTggBlVEDYgfaEAuW4Kymdk403bPEjArZt1XKknvHjHqJYCTj/+bP8s2r5pW6sRoNTMENGITa/HED3O18fR2A9jLw9iqM7ZVA0/avDHHLoM398vO2H/DVr/tNGG6vetzLj33V83fP+XXx08uA3MsMOQHnXg8+Sqr4ZWbgBsjKCAhdxoQuubv8V143bc0G8/AZCp5UcPRC2kLW8vKaIvGohFkaB1ZcQWBiWWeHkaMKG1cZAfFTiaXSALKJ4rHgLoIFZVWkndSAWr3++LoW3a8E6KRxsmx8myC49OdSziDD7gjVSpJ3lZHefKM3iHiOEFJkoBUPNPvixCxAnc7F/UWYBjmLmP7ugLGbVtbthqURV0ZZwwrNMElL4qCZAbmsEwprNd4oks+im5c1DhHZLxgqfQS0wWVLzra0k8oml1Ui44dRQFAGrQxeKaLS+JLkyUdT1EqTlCRLPoeyaWaSFgOIIrePDC+LyWC0JFy6DLpUQAyVsxgl+BK0KUUmSDuhMlLpiaLBF3QmGNERjhEx+CrXZzQayQaeDW3wJXk3ZGNpkISSKAzBnASe1KXiEGPk4uKCvm/JRomGk6log8elKA6PlcP0felFRxJVLYuuMkAe2ivl7iQlg8EMDrCxTJNyj60SHTQAnQ059cVMQW3GqC7tvSrnjUMVClRxxBT6t2huiKusoXEVkKhdxXTcYLTBOcM4FcdgayEFun6N94GcAtkaYtfTerGV11pTVTVNVdEYS1VrrNkj5sBq0VLZBcu2IyZNNhUozfVswarrUMZQOweU9tko91SXxClloeaa0gabUsRYEWfXRuaYCVp0KqwB0wtgmQaWohgy1HWNMRmL0OClBW7QbLBbQLRUV3Nxn9SluiCsxSEQiqQo442ciUF0MlIUsE5rS4jpBjgH20V0t2o8OLfGslk5J05dwYdSOYPBgWo3QPW+ALpIS3mSngVJcIxCR2nxcsaiScQQUCSstjhnuHV0i6ZuSDmyWCxo2zVVVTGejqnqmrPzM0L0VAoB2K3GjkYc7O1xfHRY2EsFtMg13jcs24r5csWi9fh5J3NIKY6OjnnnnW9Bjjx6+Bnz+TWz2TXGSgtf3RR6/2hEMx5TNyO0kWuTQsR7h/c9MXhyzgXA60swVDHkJdKK7sX9KxUB46G4oXY2wuJkOwT9KRcWlEShDAxp0fgQp7SEtGlqBBjV1qGQNhNpS9cEIIdA73tUDnR9j29bgqsZGYsrIrwhy7gVp0tNSgrtKpIyJK3R2dAzaLZJ+LbqA8uuJyhFVTdYlcl+ABqTyAErYb0aY6jqihQDPiaMiZAUvuupXEVVOSpbCUCbIil0xL5FU6FUhVVGjDNipDYWayvqSti0KpYW1kEbUymMVYxGNaMReKeJq57lUhU9xUTbd+S2Y65XrNY9ZtwUQFITsoBzSTuaySHHd/bQk7uc7Du0v2Z+fUl2DbaZ0LYr5uue3l9wtDfh6GDKZFwzCIWL+LAY3WzNmkBhGNUjGtOgGGGqTDNuxB1VJ1LqaNsZi9WM3hct2GoiYHYSbRelZD0eEiPfe/puXdZeWU9SiETvWa+XaKfw2fP42VM633N0/w733/4Oq/kCrSw5RFx1QKLh2YtrzpYLlscH3L57n/tvvcHbKRMUdH3HenlFjGtqXaOUp02htOzZbUEmKVx2WBx6QKK2orb/5R5J9kDMzYBbGy2tajFhTQllS442mkzI+5ZgO0w7o/30IV989BFX15k73/ou/vKK227OD373iEk64+Ev/4E73/shnprL65bPP/k56xenvDH9AacefvX+T1A6MD3ch+iYjmA6CljVgVJ0beCLX3zBz6afYNaGT5uf89njT/n4i8d8/vGMxVnmZ+//hDe+e8T3f/t3mC8Dzy5a2lXGmBFHRuPsCIXiVx8/5X/6X/49tw/3aNtIni748z/5P/ll89dcP3zOxx+/z9OLzzk6uYXpFROdOBjBB5+f8Z9/+pTxXsKNnqA/e8rj5yv6MCMmDeuWoANV3WD6QI1iYmsaD3p1zdmjT0i3A/vvvkVzUqHiBegRpBZNz+LZc/72//mAf/jlB7h7U+4/eIP7k0B//vd89sFfsV5e8+Cd73Dr1nsoe0TvV/RpSbN/RGiXdFfXaKOZPriLSpbF1Tnz82c00yl2bwL4LUtIR5KxIkuX865M4wa8RmeUTpB6Yl6zDEtc15BCh2sU6EF15xVJqoygGz9tYbLMb2LSKdiw5GLI0uaXS1uTyjfeRt55R87iN3Aaw0tpPSScYIymaWrqyhXw5+UE65sz6QREKoke0Hc9FxcXnJ2dsW5bktFQVRvmcoyprPGleL15DUoNeluYkLZcyT8HY7mcU4n74uazpRy3e5lW+C5xeb7g0/+Pujf7kuQ8z/x+3xYRuVRWVe8bgAYIUgBFSqKkMWVLFxr925aPL0YzYx9bM7K4AyS2Ru+15xYR3+aL94vIrEYThE3eTOIllRMGAAAgAElEQVT0KVRWZkZkxLc+77N89pSvUuSTX/ySL373jKurzHK15WpzQaTHxw6yQespW9+Ss+bGzQPu332Px+9+n48//Cs+fvwuf/mDB9gbx1AtCK4muErsJHJmpnpsv0LlDTltybkHm8hOEU3Gk+mCp/NRklnLXrCP4vHaBV8KUAWkG0ATlYu9S8Gs3mjDuzUoZaPN7j4MzJ6hAG0LAIYp66tMthntklhW+K6Ue7WQUbLsRWWvOCTo5hE9lnXv0DCH8Kg8FtlK7ClD9OM+JicBBkWNgynjuhIZvS0F9SQprhkhi1grRfaYZB1qis1QIhWliQCTKSVC8e3LKRWySCCoOBbirTEY7YSJPRTVlUEx+FQWiyJrsJXFGc20MvJ5SpNQospKaWQZlo4AUcIj8D0q+uL/tTPu3+/HuVQZRiIA6RtD1D57683n9wG6fVskaSXDd0tyfwY10n7b+cbnyb3Z39N8m6RTnn67HPTa6/a+9D7Q9jZm3NsAwTefG0gMw3v3wcE3z3UAjgYJ5pssud8nZd3/vKFd7HwK9U7Srb/JPnwrsw9GDGT3t28pBQ1javmbHvafpU9Lly/qOzWMlTKnkIvNUnm/UhJIOYwP4yXaA3VzzmN66/gdjPiUZyVqu2EPnPc+dwjH/ENeLN/uQYfCDugZSBVLxeIVpwTpTmJQmnwoDLjiB6BkoHDKYR2QNT6nstkfEh2HlEp2bBk5d8gaXdnxBsYY9ioJO5PDoSFdo0ySIHtMbcrkKgyPnDNJ5TGptcD1ULTDA6qtNaAcGVuMJe14DaxSZWIWQEA8vxRKWdC6iAkkDdCrgEqZCqE6K5KYficBYr0emIbDNF8g16jKpKsxuSDCWQkDpcCbZLk/Q8NVY4VjWIUNiZVy/UKIeDJt9kQlGymnHaky44QlMsOMMpqqbphnIIJPInVNSZODl1S+HNi0LV3oQCuagwOig/VqiQqRq/Wabd/ho6QYaWewtRuNNKFIF40eVckF+xTOVkwYZHIcjPSH8wwpEn0x7B8R8p0UUiszTgDSZNRY3RoGAa2VgDjFHF0aXZQNp1YSqKEciYTOsslWUaFyRGeNzYrpfCqJR70n+A4lFwmNIoaAtgI+TpoGZRyzIAzKkBR9VLw+f0IXeuqmQZWFQFbi5SATbJJJtXj0oQ0xJmHN9b1IZY1GBTW+1wA2GfHlcI5QOu4wOFoDOic0CWNNYRlC5RxNM6GqhucU2ioqazBOoZLDB6H41ln8THIn9fmB6h6DMPlClKNqVfwm9wbtnWxd2kAocfFDeuvQh5Uq/gDDuMBucGb8zN1qfBhLxoVWGsTBwnglJiyZpq45mEyZThqODxdMpw0KxbK2LJfSHo+OFhwdH3G8mLDZrAjtFq1hVlXMJg0H0wnzacN2vZE1UpFCJmDbVcxqw9WmZ9tntlEAOGstg0Shmc4KyCFgWwiB9rIjXVxgjKGeNNT1lNnsgKaeMmkaZrMZqQQ5dO0G73uRGZeqpoTilEkyy6asaWpSzPQ2gJLzQ2u0ttLPh4VWkKQtVQxSpfBR0l61QpkaTEXKYsascsZqkNzTIO3JiIdVJEPvCWVUDVHYZ9kHsrY4dPEqNNSzKa4WiV0foowzSjYaSRvpQ0Va4ZTBo/HFM5Nc0ukCmCh3OUZhjFmdcLXBOEmbNcZIqErIhBhwSrM4mDGpEgczTeM0hkSOPcl3ZOVQuhI6fBLvR5szIYo/T865+PwYchameM4Z6xxNbfGVZh0zm40X0CqJR2Qqqa59H6kbhY/CIOtDQk0aJgdH3Do+on64INU3mFQJ7S+5OH0F2rLtPCFDjoE29FyuN1SVZXEwKRsUAdN9aOljR+thmjMZ8c1zVjw2nVG4BrLJ5Owhe7zfcnnxmhcnLwixRt9VVHRcnp9ydb7ETQ/IWWFqi0Gq864wOVUB9FMIpByxRkKIJtMpN+/dxjUTtn3A9YHJ/JDFfIHfREhg6jmTyTGYKZ3fsNkmXp1esbixZHGwYDadcHHxgl9/8hve/eGPeLRY8MWLF6yDZ7o4YDqdMqsmss5QWrjnWf1JCDT/wz/KACgbzrKJKXrggbXhi2G8MRMZk/pE6CN97llXSzb+FB863Lzj3fcecnt5BLXlN09eM51N+cmPP+YqVvzrL3/JZ1++pg/wxb//jOXrzzmwmavTz7h6esnF6Qmbfkv79GsmB473v3eTezOFWp3z6sUZlZuwTA2nn73gdyHw+L3bxAxfPT3l2YtLXOcwmy3PfvGaqxeXRDPDp0S/2eBShc0J5w3T6ZyztuNXX7zgeX3JYX1AtZjwL//8n5mmKepiQ9Ib7Ezmn8bWPH7nBo8/eMhXJ1/xbG2Z6MjV01dcLC/xxqLUgtnBXNgXfosyhmbmWNQV924cUs0iF5fn/Pv/89/5s48U9b2bzNQBpJbU9eT1OZurMz79P37F2afP+eGDh3z4d3/NrQ/eZ3P+mk/+7Z+Z6zPef/99VGp5/dlnvHqxwR0YpvccN6xFpY7tas1sfgO6JeuT57TbNfPpBGMSqGVBs8S3MReht6Yavbt0lnUR5XeArCM5blmdveDXv/53fDXBzW/y+M9uCWi7vxEbp9wBiNt7/hsN70+AiqvdPJ9iIoWEUppJ3eDNjnGv3nYSfwKMUMEoQRySUSezKVXj5BsW6fgf+5BidKLvOy4vL1mv1nuFyTxauogkcl/OuJPMqaxLsENJni/Frb4UsNCBGMHYXIopu42n9z1t19F1W7xvef78OZNpRQyBl0+fc3ayJvqarvf4uEbbSKaTIqz3TKcTHn/4Pv/xn/6Bn/70b3j44AOO5vc5aKY0RqOqStjwKFxhdxiVsXiUiaBSKd5rktH4lFhvN1ytN7L/0iK/zErhc6LzPW3o8VFsV2KhNxQizK6JQukHu3X/PqC7S/5UYzsTc/dAzvra3wRsGPZXA4tOocVEhsToZleel5/yqXLcfSt3wZiuj8Wyqdv/CTEnzPC6ASFQwo43WqA94yRULFP86oIoICKDfFOUCpAIQYgiaUyNpUiDs5gsJUbv6oE0MrTBNFj1aLMDslKU71Y2caP6qVyjwcM9IuGQaEMoa9QcBQxRBRALIUPfk0JAmSzBJTnvea/venzev8nI3k0agB6f2wfp9sGfawDdW8aNHangOvvtbcDYm5+9D/L+PoAuD9X0P/DYcRK/eax9Fu3bzuH68Xbn9OZzb36n/c/bB+W+Kzj3je+tvnnO8vl7oKDagZFvMvNGfGPEtAWsHYixTgshSaVc/Pal1apijxSGcTML5qLLGmgE11KWsWUAmUfrNZFnD4SzQWJbenMBDfV4/kYrlBGfe2PKmKXMCGoMyeeZN675HwPQ5SjcC+kYBUzL8iVSjEWqxGiux35jzmB1MZuMAUbZ5+A4t9MJS/BaHsEWhZy3NoaEhkhBfIcvp8v5lMYwoKalSjBey9IQtC4JHANYkwrFd0e5k0GoDLW6yJfQriD/eqQ7Z5WwCpSS16c8xO9Koh3D99OKkBU6ZZwCErikUFG+a1QiRc0a8TxIcn7DNc5xWGrJP3HGKhTiAtqZMgAOk/W1e7cHVGQ5COQgYGeSuOnkE+tWKmFJGzCK1IOyBmvEAL+M2QVcKN+vdKKqqUY6p3YOXUkqYtKyOfcx4KN4u2kjjDXr7GiUOqYYaZk0UEpi0As4YEpij3mLB9k4uJRmP0wMxpjrAN2AV+rrA6syeoeaZ6Gii69bu5vhkwMtG1Fri218lkWi0wadEUP/WuGNHuVlRmmsrem2LVmJVDuFSC4b/G0XWLd96TMKpQ3WOJTRxYdwB2CmAmjnssFKWQz0vfdo4wqQEmVyHUDIAnwO10RlYVJZrTEDLZYkbUeLhLOuKqqqwjkjvhdKjYxHYxUqWSIalWSClussg2Xf95JiWqq2IURUFHnI4OUhi8uSNpnSCLwO98wWLw3vxV+v73sxpx/8BY0p41AcJ2qtTWnjpcg2gHTsJliVZaC11jCpahazKYvZnNpZSJEUBOiaNjUpNMQsHnwHk4q7xw/o2g3r5SW+b2mc4aBpqK2G3HN4Y743dkAXAoaA32ZaDZWzBGOwlcN7z8nJCcvVCmstrqowcQDFA0PaUcyZzXbLtu05O7/CaEkSrCtLbQ3NpGE2bTg6PMSHEuDhPduuKym/whC1RpOVLNyUMlI8SJmstITulPvBMKbnQq9NSYoZSB+MKpN1RdZO2J+kkuqpsYIIopNCDiHBJJWrRLJJREWP6hIqDAzGIhmuHJWpqF1D0oZ1u2XTdyTNyNywZJwSRqXRBlNVVDFjYqQyFV3ryV1Ei/HnWP3FGaxy5CwJzkbNcSkRu0DvA8eLOTeOj1BpS20jziisAUNExR7oBOzWqhQ3AknJaJyKwfJQaBimH2H5Jaw1JKNK4We3CBLvUrEP6EPApMy29fiUWRzd4sGDW9y7/5Dju3c4dvdo1QHJX2HSnKOjhaSBoXn25Gva1RXGKZppQzWZgDGjf6N2GmMleU2pUplHjeP3jpEd8QUkjsmTsyfFjrZdslpfYpShW8949eI5Z5crpoc9bjpn0tQi+TK6eHM6SIEUJdGclKgrx3TSUE0ch8c3uLU4JvaZV+dLbID7xwuaqYUEfYREBbqmqhd0XeTXn3zJxeUlf//RY949vMHENuh6wicvT/j3y45/+b/+jYvLDf/wtz/lP3z85yxuNjRNVYpuCjR4AgPT4E+wh/4f71E2NQN7Q/bFg8yryKeSME0EbJbQpovTq+JNFdmoF2x5ycn5Gc9+9Yqr55b7swlVCNQ5EVTNf//8Nbm6QQ4TOLmge/WUi1/8KxO/4b2Hj3j/3duEVvPuOw49tXz67Auulic8fnyXv3l4l8nVFat7W5I6xt58h/rOHZb9Cf/5//xf+fWXX3N5ldG5JleG5A3hcsvy/CvqaooyFb73WAPTakatZzgzY2tbVvoCmxr09oCNn6D8jONb92j1C9abc+o60McNvda8alf84ouvePX6BVVa49c9fQRlG5KHbZ+wGOrJEUxmrE0mJPGbnXmPXm54+fwVN062wC2ao9vcU7DdrDh78YrzV19y+uIzDrLlH/7mJ6TFHfx6SbrccnGy4uxsQ3NLk8yETV+zCYbffPmEu+8u+Ms//x5VHenXS/p2S3eVOD/7Ha+fP+Xeo/f5wY//mrjt6FafoZuGyeFNsJaUW3JoqGyNzkZM9Ys/Fkk2NEl5sm5RNlEdNDQ2s1lfkdotKhVB7JiKPCIeu//fRxt+Xxv8I5swCCN6MplijSP0pR0nhe+FYKb2NnjXzuePRenL+jKlRPA9ulibmMF2JBf9K/D/h0mnxmNIUXaz2XJ5eUnbtRKARqbrOgltyknWsiP4MTCIhrVx3t2iwgTJmcL4jgWEESJFSgEfevqu4+JiRbsV/9uu7/C+YzabcHi0oKom1LN71O2W7QZSWBUWyJaQOoxOKKswdebGnQO+/+eP+eFffp+D6S1QUzSV7C1GoCRDkgKayR6VerlXyZBjRZcqYnIoLJWyVAUIikqLKiln+pBoQ6BPmaQUMUfx/1Y7kaWAX8O2MF1vG8PdSlL8VtpIGKC1GGFmMEjztJKC33BN5VzVsCEqd1mJjHzsC0KmGIC6XAxVZO+Qy9p+RBuknZR5eodClDE6J6AfVWxDm8vj/lThbEVdi+1NzKLGiqUQqWIgJUnwRUvwVwi9jF0olEbWNCO4KaojVdJg5TiZGNW47xmB4eJ8nrNngDPY8+Qb8IJU2PcRYRMVQytSjPgUUVkUPuUCiZrGe4wVRucQETA07lzWNfu/j31pH6wqiAJvAmpqp7ZSgizugLw8PJ/Lcb7dJ25oR4Ps9q2A2VtBs12betu+9vrj9w+i19lv18G3a+fAdUDuuz7eBMv+0PNvA+f2z+NNUHH3xh1w9Sb7T0EBzUSaKnLTMt7r4f4Nr9nt94YbqgoYPA6PA+RT9kkDcCbHZJzy9K4Fyd/ycAxZTF0Dast93sdHYgH7x/eP1+W6Lx/f0rbgDwB00XuhApaLlIvXU588KQYOKitePcqQjSFYQQ1jLpa0uRKZTZTJXiNBEmqc4EoVbK/iLZ1GbkJMkLSAK+AQ6Q5jo7fWCXth32jQ7JDxbddSO0mPSVCQUkH8kxou8m5QSewmXVVeA0pYbzGh1M7RQ5uhkwnQlVSUz9aShprL5BKAkPVYLQEB2JJSGJUKIJiJGkiqTPO2sKfYbbCUlk1fqZ6gSpABpgyEwlkJoSRyxiwbZAXGWSqjUcZirMbkJP4JWdNvW9q+RzsLWeNDIgeNcwa8lyoHCrIWJlISWWQKMhGYShYM1jjctGE6mZGrCh88V2eaYMRPL2eZnI3SuAK4tH0vDdsokS1bi0kSepBSQke5XqmwNPcbuqSpikR4SB9VqvjbKQGiDGoMcxk6UNalDaqSmpoyVmvq2hVgSCZ55xzoRlJioXRmiWXPMSCnYzFGvL2CD2x8xNpIPZmIOXxdIrZDxGoBnJ3SqCqhq4qz7boMAgZb+EhpqFoBdd2MDLMY47g4NiXlk1J5UuOghkjFjQDQfZLrKECuKSb4FFBmJ30Udl15fxR5nLYyQSctElJURuUGqxW1VcxshTcildj6yNbHcfLMSaSBfZcJUaQpwjKSWyEVtsxsPqcyhsZa9MEcYzXr7Yau7WWciX3p5wPrcmDN5hGsl2TfvGdiqwpokmispbaS1Nu4ivlsynw6xRqRL0q/EZZjPanx0dO2WwHjYwQik8bgzAy/1ViVmdWueHdFnCmLrSw+jVoZUmUJkxqvLOYqoL2hMg6TM7Hbokk0k4a273BVRY4R77cozUiVzjGTAmxDIGRP3/WsAKuhaeR7TKdTFos5pqpxJT6+7wKd97R9z3bbYkwu3izFcmDwqWHwr6F4pmg5flJSbU/F001UG7K4jx4fC/iqiqWAQthTJCTCNRZvI41zFmssTXaoKqH6iPIRh2E+XbA4PCJpQz2f0gMXmw1t24uBdRmHVU4SbGNF7rxargg+CuZgsxiFy9xd7kNCk5k6w+F8Qpd7ppOaZtZgYqLbtJgucDCfczCbslmuIQZydtK2lClhRAHwYiEQM3VVczybcut4xnw+YbPuML7HpFzKTmWMyrnYASSiFzCw96kAycJwCL6n227RdUXoE9N6wnvvfcD33n/E8f0FbjqltjP6YEHX9FtLtDU3779DVIYQE8+fePAdk9kcVzX0PnC5XKIIZDWlaqoiizdoJcBsTDKyCBFXpG1Wl+VyhqqacHx0zHJ5wfbyhKvXL6nCMXG7xW/WhLrBNrUUeZIXYC96YrSlSKfEsDxF2TSOBQBhbNrGsb24xHeeg7rGTiTtOwKT2YLj4zscHd2mP33JxdkL/Oacz03k7nzC7MZtOL7Ni4sVX12+AnfAh9//AXduvMfcHlFRoaMWhr+FbCEXye/oHsw4/X7LYwCwhpd+s/D1/+XxXeCBP/zp333B/o135qIK0Pot51IKfJUhRUlldK5mcXQDqxTnl694/uRr7PSKrmv59IvP4XTGj77/txwvDjlffclrlfj8q2es2ldULNi+fMb9meaf/u7HdO2KH/74Y378Vx9z+vJzTl79jhcXzwhPzujaM1J3C5MSt2/e5oP7Nzk9iXz+6ooXFxf0dovGopOhUhCrIq9PFhtrDieW4/mc1kOjK7ahFale7qlVw+3jY5LaYLcKE6aEFiKel5xTqYw7OMDVHRfrFU/Pz/jieeaTT39H3mT8OoHq+cG797n96F1+89Upv31yyjaKpURK0IZIcoaN0TxrW5zpiJXDa8fTV5fkf/s19W8/ZbvccPn8hCdf/pz3353zN//4D7A94+WzZ6TpXV68WPP8bMPrkyVNhLs3A4v7t1Azx/0/e8C9h7ewZkbqtzz54hN+9q+fsr00rM6X+M0K3cGdg/ts/AXr+JrpwYzb995jcmOOchGjZuhkUdFCDGWNrSFYiAblEqoBlWXdmlIvSpiyjrje9tR3a9B/4oe1cPN2Q7YPmc0NjYMcDbmShNVRgjssmqCA0mWvUGwvvtvjDVAtFzlojKQYiD6y6T3bzRpjLAeLBc10unv9teO8zVvom6BdLnOXb3uWyyUXV0s27ZZmOsWHRN97lC0FWwXayPdMSoLplBIOVybvQKqkCDHRRwhKwrOi9/h+gw8runbJer2U+bYTHzqVlSSvG009WXDr/vssbt5FmSmTZ2ecPDslPH+G2gTIkZg2EtIgNGjcxFDPKqgyXm1GmWdA1iDWVmKPo3oMElwiu2UjN9k6krKEaAgeSf4MnpQEyPEpluKWF1k+sp72ye8VHnZD/dAWchz2UXp8egDLQGw9nNYoq3ekjTywvzS6qHh0caDPo+rHyLhaMJixa2RkPZ6L7YISkG6YWwboTvA+WXS/yQUdZx8lCfFqBOxkTywoAmA01jmMqzGVgxTRvZd50EdS8KQcaOoK5yxBK/roSTmV1PeqpFgKIKULLKH0To0VYoIcSnDiAFaJn9cg0EWVPXphd+pBVQaFQCD77zHkOZdAwCR6M2MLMlKeDyGQYw+mEqpvfmMefnMcGsgoyBpajP72+9qODckA2hUBbSrfSemhuF8Ualohq5Pf9yglrxi/SYIagmPMToZ+naG2A9T2Aa3rDDf5OXjMC4go55MLeeL6GCP3ZT+pGBjDEPYfbwJmb2PejecVB2RrH9hkxGDiGx5qI5yqBNNJA2A2+FsPhChKGGQB2RjVP7ko6ootQ0oMjOBdv0U25JlRrTVcI6VUUTkKkGbivpS2fMoACkT5PJXknqnShoQrNCiy0h42BftsV6XyOL4MSgWKxFxGOCnYU3AmuYcliHQ8p29rY38AoDPaYJQSMCJlYb/lzDp5KqOo0Sgf2fQdvteAISi5eJU11EpLLHeSQdpojVOW5CPBR6wumy0lE4PSevwyaE00ovZk+OIpYQtyOrAbVFYoZVFa6MAhBhTiLYYqdNpQJhIrm8eATG59lHyrhCVFhQqZqjEYo0lK02+CAFpadP69EhplyBkTssiz0NgsA6/NJW0uBgIKjyZj6VAQFX0CrStEl5XRdLgch1maiCPiJGFVCYAZiPjcE3Bom8QPTcv5WWOl6cZAinKPUogYI5NL0oE+bTHeYdAS+60bAV6K4W5Q4v1kaoepK6wRP7o2dFQl5Sf5AFkzqSxN3RBVoPVF1uQ1qtJcLVco3zE7DpjU4PCoGNApSppRTDTKMLOVUEFzoqoqgkABsomM4mPmnGM2FXle7D1934mUqixC+j7QRy/BGdZgagNWicdOyJCDrM+SwilhLYZe2JVaD0CY+O9EV0nsfO5JOUpHNYZkNNrpYhop473D4iIYhHWQQkQpUz7P0eXMxicqHZloJwBy32EzHDQ1eVLhyZjWo2pNva1pV5kqayY4snN0KpNUJORE2wszJRaTV5N2A4zOmhxjARMNJmlJeS309pR2ibOqTJ4ChlpB+EOk22zIjSPNpuOAKkxUSQ4Tj7GKPni0NkRqUspMSNShR5ks7L16TnN0h9nlOU5FjPLgMrHLtCHS95GcypRYAEWjMg6RzFWTmoPaUdkZSmV8CGz7Dqct3vtx4DWmjMt59zOlvKsQZqHtKwxOK6ZG02hpGoezCUfHR4ToabsNVV0Li62u8TqzXa1Zb9bCWtSKjfeEdU9TayaVo2ocue/pY0CnwKypcXtA6bZtiSSapqIPNc57kqoJKXM0mXNnPufOrSP67oqoM7ppSH0seLuGFMjaiLdadoQ+42xis9nS9R3GWmxV41Pm1fkF/vUJk7oha7DGMptOmUwmONcwU5aqmtL2iUgkdj0+CvAl46wccyAASK5KkYGURYX4pcjzWSGBBikTs8ha+r5DG0POkemkwTrDarUm5sxkWpNyoqqtsEpTSQP1AZ0NTVOha4syjqQNTTNhERNd15Oyx5WCQmi3WK3xviesr6iNQqeED4nttqfvAyTFrJmSorDAYuiYN45bR4ZeNbTRE1BEY+iNJtWWPke5pkqM5HOu2XqDtgpnMyH3bLwv8j8FsUdni8GhI8xyzyGeNiZCF5kvGrZ9lEq/dhgVcApcVZFMRcoWlSbMmsTUJe7ePETXAqwdHd7kvQ++x4MP3sXUkU3sR/ZXtoZUzwhJ4SMsbt3l8fdFRr48fYlxDltVpNjz/MUJXz9pmc0m3Lt7m7t3H6CyJXaeEDzZTqAS/0h0D7nDbz1Ez6QStsPELXh4+yGzXLE8u6KKkftHh9w4XEDdsIqRzfKMlDzKWtnEWCsJeyExn82Bnrb3GKB2Fq1gMp9isBwfzDhfXdFvl2xNoq4q3FSKRhbL8fEB9cyRfntCvz3hF79b8+ToBu8c3ORWfcDq9JxZynzw+Pt89PGPeHTnNjMMRidZ/TtNKmBU9kEkf2avury/0P/Ger9UacctnCz038a++C6PXA53HeK4hiJcP4m3fwLXP+GNE+ctEp3hrXBtk6LKJnFfUDVUfvVwGAOTicEaxckFLDeZL3/3O1588TnLJ5f84O6PmFeRuGm5f/cxN+srvjfZML95h+n8Lk+//orUXvLhO3fZnJ8Q05Zl+5KL9Wt+9ouf8elvf8mrV0/pVi0v3DHPJrfpppnFbM7Lyy2fX5zy8Acf8uDRfcLiJl8vHRfhhPZqST3VNMYBkY1VZJd4+PAB70+P+PVnn3C+OeW9x7f56Hsf8PXT1zx99gTjK2LfUZnExgcu1xfYxnBrMefg5m3Wy3NSk1j5wLMzxVwZbiwsH966yU9//D3M0QPOTjPPzRUHNtLkFnoPdU1rLVpn9LQhpZbt+oocHCm/5rTtqKvE6rWnzod89KN/YnZ0wacvz3jnxgNs8Jx8/iXVkWJhb/LZkw2//PwF6UXLDz66QN2eMD3KVIePsNUjutMv8esly4uv6VYG02XsNnLx2y/4+TKxeDDjwfcOqUKPe/0C9JRwHGnXHVVzn6Y5Iuqe2K3J2hG2NcrfgMkUXRsxk3cKO5tQK54UP7cAACAASURBVEVPJuvEYD0ytrnMtzfZP+Kxz/AY2EoaYQI3E83RtKZSY4kOVGFg6YQs7C05aDG0t7kAQJROKGu/mAJ926KMoqrqUvgfOQ6l2+xt7HOC6MnB8/r5C7786gnvvPMui8WRJMar6o3X739S2TCr3YWTZ2SdJb5HBbRQ4HvPF19+xcuzMzYxyphdCmkEkYFiCuM+Z6KKJAN9CcrJSfZSWhlIirbtueo6NrGnbT3dZUu3uiL4KxQdWgfx6dxmprqmcQ49cahpQ3N0i7y4R7p5HztfSKLy5Altv2LVX5FaTUONSCd7fApkZ6kmU5xtcBgMAUdLxoKxcg1KUjgIg6tU7iF7supJuUdpi3PNODxuu078jX2gbzvCsB5MUlSIPu3AGXbyMV1QM7nHuSwaFag9RrXKKB1RJMgGneMIYicMKcseS0y9C2DmJDQqGU02SsIPrRPrmziMyAJ1pSzEjVCAwFGCO/QjBYPoa18FNZBXhAWYyTmUrxALOKmxVY1zM7KxqKoC41Cpx6DJXSS3HZXRGCPe6UK+k2K7cRVVXeHqWlh1cRdUMUKESkgTKbQMEl72vdVUJKSAcaqQeBIUgDhnJX7zSPiavF4SiUGXQp58R5UTXRfIWkkAnQk4A652BK2KeqHs26Ls3weG38hwG/vtCBmC1ihtUcZCTCT0ACPI7ykXoHgAZcsVuDa9is1QUmm3B9EC2sYUpA9jRnuqGAWITIUkUBCl6+PccH/3rrOcg4Jc1mcqo7UtgLHI6GXtLViBQWGKgk+URalIOoVUoBBg2Jhif1MSj60q6qpi8WW1KanGmYFZyLVWMDDJZJxUavAUT0VJkotnNTtvudLXRp/LEfzUUlQfgMdc4E9lhJSikgT5aWnnKQVMzmJxk/eAweERAhQwbmAwMpC+ysVXWcb83T3N0k6R9ZAoW0z5vXzzkZUo7AThJ6lxXwzC6BZGn/iZhwQxKBnSMgQSWkWUEQJJ1lrC1qCEbSqUSqOC6dse3w7Q2SLriUkq8jmTiWSTJRkxKZSPdNsta+XxGtoUwVgaaziwEjagEHTSWYepajG4NKboiPNYrTBaduBaKzAarymedqpUxGQDbpOVgaAMGFppoZfkRI6ZrCMxG4ypSYgvTiRDElpvjJkQsqQbZotSuZDoBJDpcygJMg2DTCiiCAWZDToXynBJP9QKi+wFbGEtdSi8cgRjIRtyNgQE0TYajApiZJ5FUiaEuUKPTML88jHiM/QJQk5ieBgzQ+/PWTB1pczoRaV1McW3iqgCWEkW3aSIionkZWBKwRd2hSeQIXpMjKjKghJ5nI+dVICMxRSg2BlLPamoTUXbtwL+KEPf9XjfknRCbx3LVUvfbQFNrR0ma0Lv6batgIzOEHLCI1UpdJns9unhWTypxJxUBmAB9gCr6HLG5oSpK0wloO4w2JLA2Urka2rwrxMAOJKJGWptMVrklUYLkJzIAvQGL55qUeLpjQKnoNIKVzvq2mGMEylzgqQtvbGkmPDaFBAtoIJn4hNJZbwOdFk85JI2uKnD9gHrDa4sCoJO0gdIRfqoMcUzRCVKxUvvvFEYPLDSyJhAxdEnURUzSrXHEg0h4LtOJm8jMtEYAtH3o5xYK4g+kbQmJBmoA4YUEy5lXI7EHGTAsxVuuuAgBmEubWp8Smy2nQDaBdwxpRJptMgjayPpxrXROKdRFppgca1B97okRcn5SlrZdQr0IIuNcZDYl36kFM5o5nUl4Q5GYxX07YYuBJJKmErYWwqRdl1t12y2EhLRhEAfA71v6aMiTybMJxNcM4EYsGVRNtCZxdtSJqmqqai9R9uMsTVKJ6a2ZlFVHE9qXjUWbTTZinTfKIU2lhwNsbCFTbIklaks9KbHq0EG7Ag5kXwgJLhcb0g5CRu18zTrVoJFUgY0SVkRUViDM+ZaZTQluQajb2ORHw8PpZQs+qGMsWlcxHhdlrBGwh2UNcLOrSqc1hwcHFBZ2egTPbHvCWUJqI3FOE3Wmba0t8rMmTQTZpMpZI/KgeQ9VUo0ztEnzbbviAh4C1r8E6PGx8i2XUMKMqaqSGU8tY1MJg1ps2XbFWl/Oc8uBi6vLjlwGm0bMDU+V2wCWKIsNLUktcr8J/LPnGtIGhNa1HaNDglTW7RxYAzZOGJWArxGiCVZ2biajEMDlVPMphWubsjKcnTvPR48eER1cMgmrtiWzVkXZOyPypBdgwoRh2K2OGQ2n9MtLyRwyAsY1vtIu/VsWwkIuVoFptUNqmouw6GCLgZs9lQ6YK0wW3WZF2OvUNEydVPcwSELDDFlLtYbttuWLvRsgqdDEXLEuIaqagg+EHwoHqV5ZCQ7a2U+TmWhphXz6QSQ+/T6/DmzxTHz+RGT6YScJfTleD7nwZ0btKue1+enrFeOWRfxJ+c0OvMf/vLHfP/Pf0I9v0HlLBVZZMmxx8eaoCssMmcIIWIfEPu2xz4Po2z2vsO7vv0T3/bMUHEewIFvIIUwVse/+Qk7lORbgLnxCNeBFbX7X3l6MEhHQnbW25avn5xwdbXi9elrfvnlUy42He8/+iEf/dV9Km9Zt6c0E8P8xgHZJXIVuFi+ZN2t2eQWak199ybTw5qf/7f/wief/ZyXX3/Np7/6FdvlayoNPmh+88svef7kJdomQmro4pSbDx8w+eg95rMJ3eSAlVfEPlDpyHZzhveWo+qQbOFss0K/+pptdcLV+oStCdx49zYf/vgxV90abTVGV2hnyN6jc0/G4KPmah3w/ZYtmWl9yLZb0afIxz/5mH/86x9SXzyne/WcX3zylJdPV/TtitpkQhepe01tanLqSZXCLhqgpjYH+OB4ebbm9GzFgcncWbzH3/zk7/nr//hD8uEp3eUr7i/ucPn0KX33a47vNLT1FPXfOi5erfi6/4rV06/o5oHLmeb+u8/5yUeBWzct7zx+B0NmeZI5SAsOmPHy5QWfv3zOeYgc3/uQ3kcur54yuZxx8y8eMZnPUHkDOqNMh6k7lJ1hdQ39hFwfknSEvKGaTHnv8WPc7DaP3n+fqDWBRIUZrWe+0eT+BGDdvnf0dW+eXLxBFFhQVp5SoeyyTQ+qK+BbA1nGYKUhEwtAp0c2fFbw9MlX/PvP/o1bt27y47/8Cw4OFuUsfo8cVSmUzkTfsby6YLW8IsWEtQ5jG6pKgr2u97sdw4IBnMtCHkBBzsL01bkUThXEELm6WHJ6ek7W0BzMwYihvtZWlvsqgoaYxRPVx0QoMs1hYxr6nu22Y3WxZnm1ZtlesfZXGCx1qNExoOOaxIakPFY5bh/c5p3bD3n08AFHd2/TzxpeBDhRUzZVjZtOULWlupjTHM6IFxP6fkOMVo5vVAmJExkqyuJwQqQgopRl59NmAEPKCZ0tKukCflmUrTC2QuEAR0ajjBHWaudHJUnwAV+CzVJKo88xhSQx/jcoZopOBIqH3CAJzrHcpwRZXBtVWcMZY0mqkvcUlQpZQA8QkCgpJZ5sxgn0mkzZwKvyPkYkTul8rYmMa/Us6yHBo+UeDoyuVCTKPgRpzxkgFd9zg6WW72Es4jcu3udai6pNaSehVpX4YMUCwgy+36YEsUVjRAI9BAaUY+vyWqP0OB8N60SthQyAGrDL4QpLe1aqtEtEkSHgqexbFKa4Lgz9nBJSIWvolGIpkwmYohQj/3DQKg6AzLgXgOtMsBEUBzCFcSbXiDy+4PpcyDA770CkcsnKWwrDqqCsKmt0YQbqsk7MY7uioK7DQd42UA5gLGNIohxM7Z2YGoPzhtdeG2cUggilPIKjFMaaxo6g1lDwUFqNAuvh7YI5XF8b7F+X0RqsHGMYa3QZ10bAdpSqpXKuA1jGuPYYbs7AJS1E05Hht5MX5xLOUPy0985nuBAj+EdZ412/OAVcZWwzY7Ey77/k2++LWJUNs1/ZY6odyCevLuzMrDDZENVwjaUPjIcr90Lt7be+i9z42z3oCutGrnIa9brWWibOca9aMFUZf2Doa8U2RtZdS0gRkzOHGWogJ0l9y70ndj2p0BrDgBxbDVGLqb4zGMT7LUeF1VoqaSqhrRZzam2w2tButqU1CRIuVYphs67JSjZMIQmN2BqDMTLTOxMg9uQoyTtGaSqFBDEkYfiIv5xIC1PMklCIgjLh5ARGlwAINSy59yZsI5u8nEu6IZDGKr5UKFQOAnQqyFk2dD4EAeIARcZoCAMQUBbug/+W0mJQKOmnJVTBikfYuvNkL95AEdCxhBioTA4ea61IkMmk3pNCQHeyidVGoX0ngE2WcadLAU1PUzXYumLSOLSVZFUbWjahFdBHa6yVQIOcNMkqEkWCFEWCSR4mgCztzGh0FMQ6BU8b89hxrRGUOw0ToNYoZYtXQRgb/fgPKZZZWyS9ThJQU1Yic5bZswREmNIuxKdp8BnNKLoo1QwVAyqLlNLHVABWjaen2OQTlcK5CtMYtJHrohRYZ5nYQM6edd+z9p2EKth65xc3TFQlXGU0oS3yw2EgTKF4hCHXrqoq8H2pkMRxopLPTYUwIjIz4yT8IcbiP+I7rMl0XaBrDe3GUmsxk89aJh9lFMYkkhaGa07SJ7SSUIlu24/R9jkJJdkZQ2UkoKRyhspmgpbwAavlb42z1FZxeDCjqRRV5ST1SUHUijYmYobNaiuVlpSFai9mY7J4MJrB4C/nXSiFUvIdrAZXALq6qsga1tsNxjkWi0OmB3OMtWy3LevNlrbrhRmbICQBcDebFr0N+NaTQmIxm9IYRyYLyKpKMhJyW6x1oDTOeaxLGNtjtPjBVU6YY03lRBYdI7YUJijGomhhKcsiSCa3wZ9v8OEDjasq0AofSgJvFKbddr0ZJ7WhepjLxCSfaXbBEIVhOQC4Y5VonE9KZQrGBePwfCrBByCTcygL54G1KT9lAai0XE+dIelAytD2LX7bkXVFPVT4VMY6MSX3XU/XrqkQebIxCh8DfbsVQMrUu0RmI0BTU9dYZalcxlY1tqppplOWvcevtiLrMDXGGHzwdKstdjElzSXARduKTKZPpVhjDK6qsb5U8YxFuwpbNdguSIHKArai63vatpfXWEP0PUpD164J3QZTTWWjEDpIuoDsULmKg4ND6mZK7xM+KzAVscxXIXoSaSC/MiZFNw1106BjR2n4aGfR3tB3Hadn5yyXLXdvKm7fuT/u4WLKBRA2aB3HRLfgoyQkorDaYicTptbiQ+Sqa+n6jl5psSIoaZ85RLJOpN5jlMFU4pIaiw2A9x0qFGsGI9Lhqm6YG03UgeXFKZsIITv6UuFO2lBPJty59wCb5/S/jby62nLy8gWvzlYcTycs33mX89dnxNMWoy33bh6xmDvQtrQJCDHh1LAAu7Y12vv9TZBrmL0HaO6Pf4yL4bL0V3sLu915vLn8fBs49/bzuc7Iu/6Xt79ngOzKeajdJokMFxeX/PznP+OLL55wenlFqDM/+bt/5O//4vvcmzr6qxWxS5xfbvnf/9N/4sXrz3nw7i2Sq3CHtzm68y5t63l+tubRYsLi8B6vn51zdZaYVLe49c6C27crzk/WfPHZa066M3y/ok8zuhS5vHqF/83/zTvxCr/NJDpse0WdWpLJVG7K3M3RynOgO+7WGZsvcbojqJqfff6cV2drlqenHN6d0XeK0/MOZ5wwckNH9i3Zdyx78FljJlPuHTXcvt3w8Ud3uHHTctXWfN0aPn15ytnVGR5FYIZJNTEbUmvIOpBCx8XzDdZqtLpJyDUpWUybMFlx49BxYx7Itufm4x+Q/CPS2TnzhwfctguieY3LHTfuJdbnim2XuFXd4Gg6x1xcotUr9KNPmXzwDnl6yN3+Mcduxo2bPyDZOeGLX7G+W1FNN7gDxW9//gUHzT0+vv9DjLsrN7XywIYQLunbjtlshtZTUBMpGmSNSlPwFTYgFg61I2JRuO+0ifhTPsYi3F677Hzgq5dXdKsVx73H9RsOpjA5rIg2EzE4s6CeHqHqgdW2t6FPEnbkvcf3odhjGN6y9bt+LmUXq61mNm24c+cWdVOxWq1AO1zlmM6ab7zr2hiTpRiWcgl4UBT5326f4DvPi+fP+frJV6xXl2QDwQtJJHY7X2GihNz5kOl76FpJn99u17SbNZvNms1qTegClXXUzjPtTmiAqZozb2puHE25++ABdx7c4PjwBkeTWxwd3GTSTNDzGZcKwrPXnF60JBPwJlGZCjub0BzMiAczcr8m5lakXFo85vqY6LwEUWCLg1PW5GDIIl2S76AbNHXxcisba1OhJxXTukXTjt+t7z1977laLbm8usT3Is8cwLlc1oGGAvSOOMduH6DyICeV4qcqfpvDelvmRlmrj4b049yhRhLI8BmU/x+41mpYh8oHjM1p9C7L12eTYX02BDkoAoP0bgfMFfJFHuyNksj2hnMcpKRl3ai1JKlqLbYilatwOVPXFlcL26sLfgRTRq/uoV2xB1aUtfyw59ClCJ32ALD9149FXT2Ac6qEJpbXlGJwjKJs0QqxVHlLf5P9cR7/5VzAqQHk2aE8BYSXOVvmsR17UtbjA5C0+2zYs7aiDA97/VWV45fLwABVqRGoHdpZGZ+0fOBwTQdLrCFlusBQe0f/PY8y3g371jyAsUlwB12UhVoNkNqwWmFMb94dq3yT4VoVApAubEGNBHYM2gClpC2/GcIwLlVMOb8kzFFxDMkFlFTEoQD75jwxtAujyrpnd42HKzKwB6+vVn5Pv9l7Td7/uQfWvW3FpMpefvx9Dwx8sxHK51x/cmhPw1yQy8/h/ULQGN7/xror51EVOgByOwbd9f70+x7fCtCJw9mAcu5O2GpDYw23j465Oamobs9hXtHGwNVmxabtyH3L3WZChXTOrutYb1ravsOHQEhR/M60IvSJPgoVOBtJ4USVkIRyPKfFy6myFox4vDltis1mQYqNGjebylg6rwlZ4YNM1iYbhDGX0DkJYy9GYkhClc8ZZVVhyBh8jqhsMAWVzkkIpB0Kk0tk8DX/vGJSKq1vvDmp3NhU/gkQraR4Q+n0SMKtjhkbJVZeaZF0aCUTeyIJcg8Ys0tw1RRKbRnFRLeexlh2lMJajbKWbKSiIh0TlBUz1oE+H5KkPgUfUSmQcmHWxEybe9q+p6l6nJUkRuMMLosFVU5y3toUsNA4ep/YdD2LFHF1zXQ2RRkjNFBD8d8ro68qqaw+kKJHV7V8p9JZheWTyqSZShJmHOOjMxmllch52en08zCaJVBK6OZjNSwXOcEAiBqFMZZsNPNmQswC1lZaS9XA+zLgKTHwBXxS9DkRsiEpDdaitKZ2lkSkiqJX19pQ1zU5K5yred1dsD/cDNp0GbCH6sT1yXPogwNAlxET+wyonNBJqmypJARTgh5EviiHUwoBUENHUOLvl4uXYyKTSvKXtk68QXLEOIsPAe8TMekRNFAghq9di+9acgiFbahpqppQG1LIZDTO1jSuYlpbGqc5Pjqgdlo2ONbglQJn6ZMA2X3ryUFOePCyVIJUYJQilsj2ofqntQYzgFEUYEtTNTUpZ3xOVE3NZDYllw3pcrlks9nKpt5ajBXWWQwiewjBswwbVKl662kjgSJJUk8rV9idSjEmJyvGcWiga2vAaaGd5ySptyRhJ6g0LJyGayqFicgufVfrIfk246wtSct1YUP2eO9Fjl5iwomZ5L0kG0kMFjs2pRqbkxzTjCBOLmbAQztjGJ9K29OF7Tr8bq0d+2BIsmzdbDZMKoezhtoaJlXFpKlp3AFaazofWbeedRdHw+q23dK1G5xBasGFUd00IncRf7dEn6Q/+xgxxjKZzJk1U27dPILYkVOHUVES9rSBnEUik0Erh1ISfuPbjq3VtLOGEIrxstVjolki08zmJF2j+g0YRRdg0wW2PtFFWHc9ykQq47hz9y43bh2jCTx78juePntOt13Rri/wrsIQiEhfu7q6pAqJVMYJlCQhZ6XoQ2a16lC6Kn1aLAyi71EpYjTUlSvJ1hnnTDFa1uRhM5gSWGGqGi0M+N4HYgJT1xiniFnaxnDvGBmRMhYprTGVxTQNbjLBVRWNNWxCxCdJ/tss17TLFfPZgul0RtRSZMpk+tiTvcXHTChFKW0stbVQwVHoeXl6ztnFVzx9/pIuRHRV04YIIbM4POT48JjTizWby3M2/orLlPjn9Zb8v/1XvJpwdHSDf/i7/4mf/u2PWCwmElSiri/mxv/7xlpoXCaO/9Q4i+/een3h+90fw0JUjccaeRx7f9ln0+2f0z6IqPc+7fc83vzTsGL81gXg7k2D15DWmjt3b1FVFWdXK5jN+eHHP+LOvUOqsKZyFco4Xvaf8HL9lOAUj97/M1Z9z7PTC+4+avjwg4+Y0XP+1a8I3YaH926zvbxiPm2YTj3vf3CbLz57ya8/PcFni8fReunb6/WGGDzdZsX6YsuBDhzOK666nqV13Fg84N78EfM6Q36FS+eslmsMAaXmPHtxxetnZ3xw75j/5ad/zauLln/92eecPT9lEiM3ZxXv3b6Na2pevD5l0wbS9oKT5ZJ2afiX7jk/r2qO5nfpQ80SjXKanBRBV1DXeJXwYUszy9x7dI/F0QGrZc/Ll0uW7YrJNHL/0X3+6sGHvPPoFtPjyJdf/oIvll/hjOHFZ5/y6OGU7/3gXVLeMrFz/uf1x9gVLJdLbr1zn5vzBXodyNsWrl6wPkkcfPgui0ePyEe3cc0Dkm64f7NGXSw4ffkr3Lziwfe+z+LoMc2D90T2phNJdcTUypq7j2SXUX0Pl69Rsx51KKzw7qrnyW++wDw/w83f5fDx/0vbmzVJll1Xet+Z7uAeY0ZkZmXWXCgUBoIg0ECDk0BS6pZZmx5kMr3oQWb6hzKZSQ+SyaQHdosUB2NTBIEGgUKhxqyqHCJj8OEOZ9LDPve6R6KqKJpIhyU8ysPD/Q5n2Hvttdd6iKm/hFn2z/wQ+QopOHvvBUDQRnR9Etxcbfnbv/0Fm6sL3mgsjd9wsrScPzzHHbfcbLc4s+LkHA7P7mPtNG8QEwCrSSny8OHLnJ2d4+qKtl2yP/e/CCjPOUIYsZXh/v17HJ+coE3N548vUEZMtRbL5kswPjWDLpS9TO3F6WrKWXMmBU+3XTNsN5CLMVuU3ENlRxwjYxjphi1dt2W9WbPZrOm2G7puix97chrFTX3oMT7QqJo7S83JySEvn5/z1oOv89rDl7h375Cj84bFUUVVLzB5iaFm2w146zBAe6ERd+9EiBFjLbqusIsFdrHAbBuUryBFjM34BGOIhFTaG9FF91ajdIWaGUsT0lIuWc7gR0Rbe7rqYmgRUxAH+HFgs9mw3W7ncaLMznQulXjgy1a6fSAU2EuUp5hLMRko5cLkiiES1EjE7EC7aVSo3X2VeD3dMkmUDhyBHUQr2e9GVN6BSGQxWhzHcQdyTcesYQKenKuLOYmW2DGLJJC1TmKkAtIZ5cgqkFMl2nI5S85XvnfSH05KMJc5TlBqPpddy+gOoJuOe3qefj8BiS/O4xfBh2le75ecci7OwinIuc771Tz1JI8GlCr3d+oFJyFnML0/zfOqNEgxZ9s5oNQOuJ0RqfIfudz//d11AuP2z2kemxNwWL5h2qn1/J4yjlWJGVL5Od+OB3bP5TprJssNAdAUxcQnMplqmL1YRc+vcitkmBiKE3tLxm3CZNEMNFlWpelZMI1d0TCTRSeOPRYhc2JQwL7pNYlX52uX8wvnN12fRFKGueg4G4LsjZvpf2pai+Pu9qodwJYnZF3t7pFoyU/XGor4slxXhXQJKGHIRkTjrpCyZwLQfNwz0Mat85qvj2KWNJ7IL1O+NxsIa3ZEnzJmXlyb9skO/xhI99UMOhCzAwO59DwTA1lF8Jp+swENDVBZx9IomtSyyQIS3Ts+ojZyEWMMbLuO1XZL3/WMWQTFk1H0IbDabumCtEJBFgfZoS+916og9I5kDFELfbNpFgJ4FYMBrJGLpLScmT4kK7PvKY/oysijslbkHbQAdtkHxtETEWMFU7VoNNYqoTJrRSruNiErnDEkJPGfaJkq7wabVVrYYcKiLkNU+u7zfiyepxuZij1EEA28kIih6DdFScA10i6bskIruX1pbonRhR0jyZqzNbos1JWTagqqCPYj2l1aa7Rz1JWbF9Nh9ATviV6TgiTR0zhNMeB7AY5iitjK0jQtSotra50TISaGMRES+CTMAR8TPkRZKAoIEVMU18aEAGtGUWkBEVOSNrMQBZCbUGgQMdsQ9sC5abMoC7uYEAhAJ4U62Ugz0wIrwVeKmRQs2UbRGkhRGGyjMOIwPTFnamcwiwVNXaGtIYVACoHlckECQlRsg6cfE758v7WW7XaLzQHlRZw9NYWyT8YHoe2nIoJptCFqcUZNajeRdy5duwlttdltgOW7UAqd5XOnpB8jFH+pwpVrrDRaVajaYGhwOnPYNrR1Te0MmmIqQGJ1c0nWStqKa9FTG3wiKyftzFGAJzMFMClj0FTGYBR0JmFVwBU3prqyNFVF2whAt1y21NYIjlLOrcmZphmou5GqqglFWTarycVV1hMBlfKt66Ln4E9WUakSlvZeJW35SmnW6y2XV9fcrG5Yb7Z4H3B1zXKxJKPR/YjWmmW7JAVDGHq2vceZHqcNy7rGaU2OHqUM1lUlBc8MfmTwxb2YBDlK60Oa+LcSmIXRiyFHBoMvzN8SDGUxFgixbHqlKjk9lNY4pFVBaz2P/1SE+XIxVZlEfyXYE/2R6XpIQKNnIf9p75u2WYUq7ri7oGza9HVpOZfg3cwmLqG4+foYqaxF5cSiqjlcLjg6aEnLJW2zEPOI2tCHnpQi49gxDJ3o2tWGysjYMEnamDOZqnK0qSUikjxDyDS1gDR3z+/x5huvUTkYujXPn33O4DuG0ZMTs46MtHFHdFlPxnHkZr3lsq3EyXhRAO8sOj+uXVLVlnEcuFpvxD01BrbdwNW653qEOtao5UBjK9Ay569XW1brDSkODNvnbJThqG6wVpNS4PLyVZQB5QAAIABJREFUObYLtCeHkrwZ2bs2fccnjz7l8dNrTk7ucnp6iDNZmMMFENZToJTivG+kaT0Mwg6xtmK5PBBNQmOJKbLdblmvevKiYVkV7URicVqWKmsu1fMUJXj3SpGMoVq2mLqmSwnf9Wy3A94n0cFUWlr5c4To0SoiTSrSRvzZ549xbkHj5FhsZaito1ksqLcdN9sVIWVcs6Bul4xhhe8HjpcVp4dHvHJ+DnXN+uqGy8trwmZkzA0DNYeHx3z9tTdEozMqss6gKW5xfAGulV98gdvJeVlfZnxrmtX/dIBu/3PKxnT7O2+pmee9r8+337d3XLdO44te+CceZiptXqbM65PTI37ne9/CKFh1iU5rVn3Hu+9+xlsvLVnWDcEnzs7u81//N/8trVlyfvwSzy6f8fXXe15+7U2WywU6XnGWj3iK5vmN500O+enffcwvfvUxnz9+zPYmcLQ45407X2e9ueHi4hqlHK88eIU//u6Peevtt0j9lut7/wl3/YzL0fPXH3zGg4e/xe/96I+5e7fik/f/gr/89/8rN+s1bX2I8zX9qqPKI6987U3+y//s3/LpJvHk6f/C5mYD3TVLV/PNew85e+Mhn4YVv/7wPT781S8xqSd0lg9+OXB6cMr6vCFqzbObNZ13DGMk6AGlPKPyjKZjaCpOTi3doeHRk2uuxxVf+/Ydvv97r/Hdt3+Lb73+Q5ytyHnk848+5Od/+VdcXm/55PkNnz57lbx8mTvO0q8vuFed8m/+6E9Y9U9JyxU3Fx/SHF/T3STe+9sPeTmO6CqwPH2IqjS4jDYtrj3i2L1DtThl6TbE8TGVXaDyDSmuyYMhNfcYR4uzx9THFpUa+ueP6B9fcfDwAfb0PgRhwq6ebugvB978zsgZ9S7p+eoc4v/XY9pfpthz7xfyhGKz8nz26TULq7n7yl0WcUlrFIfLU8yiIWSNVpbaWZGcBCaHIwXCUNeKhT1kcXiEujUf909wL+md/rMYUVTOoE1L1hWLRYOrFxwcLG5PuSl/nH+Wz56T/KLNNb8nZ8Loubm5ZnVzTUoeC3RDz2a9YvSZzSYQfKLvO7bbDZvNim6zIgxbyAGnMk32HC1rXrp7yr2zl7l755iHL51z/94Zp3dOOWqOOG3POWgr6iZiWzEHycqyfj6Sg8UTMaZmaStad4DF45O0TYoEjRFZj9qJda5z0lli5dysqVm0h9S2pUThSOFpgNyA0mSdUGqDIohZmY5gB6AnD9cEc0E01wS1ok8r+rCV62+MdFdNHR5TIVIBeg88e2FsTaLvL443JuAUdrrLko3fYrNlssjYAKrohE+F/P3vm/KKVAwXtBJAStjkE0tPvsNaMdCagcIJtJtyMT3J1xQzOy3dE3VlsbaA2DFCke0xpSvMGina5pwYnCOMQzGuimLqV0gM+9chlNfEgK4wtdIOQNln3MUY98DFFy808/smLbKJiWgKfqBKJ5lCz7lsjgGlJQ/ESOyq561wB54UW/HpphbSAvN13Z97uztTQKU9IC1N79NCqlG5EHrYxwYnDcydvt30KamAfWkCmqavLMFzLgDtdIlyDlRqp3H2mwBdgbEyEtOpOVqfr0WxKZnPY7oyt5xJb53BBCqWvHEyQijfpvLehcpp/t0MsuXp/guwmMKUt6iStzOTSDJSSJ8AuYl8N7fWKpiMCPeX1hlMzbvjnbCMKaadWKkTEGoQTEkMNuU80jQGymdkJQSdXMYeSrop5HNUyWsFVIvlekyX/xawOOVCinKOpUSrCnZkhKQwmYFMY0COQV6bx9reY1oD0h4oau1XQnBfDdApMwEBIhBIaR+NweNTZNis6HRCX2qs3wj9OgZEszkyDBuS1TjncM7S6gZMxlWWmBJ126CdZfSBVd8x+BFlZTEmJfIwkH0gDKPoxYXCDkkySXy/FcdP6fMkKhiT6IYFHLY9JysHyqNUZKgMlRMtoBAiYz+QQ8YqTVU5VDL4MRRhWAGabJVQprTUGYdSdtczrZ20IOWET1HaY8kYZbBKkTQCkGhhcMiCkoQpmJNUbkoaLTzAVFozZTHQQVwJoSygShXRf7k/KU2L5rQyTZNcBorVBjJobXCuwjpBw1KUwV3VDoVonqF1aV8SBlpQBuqGYRjwo1SBtJF+/hRLqyPSDpmtMHB0zuSkSD4RfGAYA1FpsjH0o+fZ5SXjOLJcLqgWjVDhlTABUw4Qdy13SmmRu9xDy7WR34WUMNngrMVPrX/TBNkbv9oIOKsKF1jYd0E06GIgIiLmtauorBbx1yTszjFlae2KidALGynUFVZBFsEl6rpGW4cxmlo5lFW0xlI1C6qm5tmzBH4AP5aKlYyJYfCsBi/X1otGovw+ErMsaRMVO0+rB3tCnKXVPJQWR601pgAz0yKbkXErLkyKhLRkGq2obUVlFY2zGCKtM7jaYW1xHK2LFppB5rkf0bpYoAdPiIG+68QhtNDXUwikKNphoe8ZQ0RHg04yn8CgYsAo0fPTqugxWglIQoqFuVS0aLSWltG8V23Yq5poLeNKhdIikCRoAfn8pBXeD1hlGf0412RCTKy3K54+e8am6xkGjw8ZOwo43y1ahuAZwkhdVcK60uK+uVmPOGWpTU3dVhhrqWqLdVaqocNANwx0fY+PqVR5KfTyuLchAhN7KYNSSTQDy+KdckQlccxOU2A0LfBIFSgrEcqdtUKKYYVS0j6rhgEfhBXjnLh4zS0AZQM2ZhJKva2HML0vFQfeuYJa3jK13MbJ3KYEen3f40dPROQAdFb0aSCOI+vra9q64uj4mLY9IBtLSpnB+7n9SGrvArBYY8lemIYhigahs1bmXISsk+i3oIWZ1S64f/eOJC2149Gjj+j6DSFE0SPThmGM+HHEZAoLMrHerHmiIqMfaZetsEaVJmuLCw4/RjZX1/RXF4TtNXns8SEzREWyC1x0XA6JqMC9a9isr4h+SyxabN1mxeWocCdn1CYx5sTVzQo7ZNb+KQeffIxdHGIPFzxZXfD+e7/iydMVb7xhOGwdpgKVo7AvU6b3A0Np9UUlYjTzHJla440xVFWFMQq0FGRWG8/nj59yaQwqHPLq/eVOPzEXgNWPgICuGst29PicydaSjRVntSxFAWUUTos7ssmZYbtmdAasJqgsx5Yi3TCwXm9IVeZgscBYYR4PvqeuG06ODUfHxzhnxY1ZiYh1jInGWe6fHhN0y6ru2aLxXcQtKlx1wOHiiNPjOzT1QvZmPSXHSkDNXNj4e6nUFwN0e4/9oDf/5q+/9O++8JFf+HEOv7/6vfPnS2BJ3iUs/6Tv/EceE4scJWtV0ziqSvazagGjgk9+8hFPP/yIu83bNKdn9F1g0R7xjXfOMbFGR8tieQI6YS3E6ysuP/l7PvqHP+PJ809o751yeFzzyhvnHBzVfProgqAC/+p3f8APv/cHbK49f/UXf81mveIP/vD3+YM/+hOasyP88094vH6CeeOUI1Px/hi5++p93vjeN2mWI5vxlPPXX+Z6yDz+dMO4HWmd5eXTI+6f32V4vubm2YraWb725muMV09Izy6xSvHd732H7712xM9++f+wufg6Rwd3+MVP3+cv//Q/8vTzNZfPt9QnNQOGVZ8IWRPDyNaPRB0ZdWLVJ7Yff0yOI6bXfP3V1/nPf/xtvvm9I6oUGLqnbHJDJqG3HcvNwOXlNa+89BKvfO3bHC1f5uy4IvER/Qef0x4doQ+OuczXtOcND+6dc/3Rluefb+kvVvzqp0956bUbTo97qpMNeXFCyoqDg1dYtC02XqHPLN2zC64++CWLk4A9uC/u8jcbFgvPsnH019d8+sG7dM+e8eaZwtKAdhgVaZxliKkI8Yu0xj9S4P9neaSU5r1oSlhyEjAkR4UfFVYd8srLd/jWt19Br68I2y3NYoFZLKgXS3SlMW4BSmphxkzsIEgxYWxp9et6nHVYZ6Worncg+G+eqjCSu5srNtseYytOz+5zfvcMZRxV7X5zGbiFX0yJorq99Oxl6SEFPvvsEe/9+lc8evQxmcR6veL66pJ+DFzdbMjJiMZnTOQgRZBlZVk0NccHLffuHPOtr7/Fb3/nHd56/QHHxy11a9FVzdBndG6xvkKlkZBu6McVIY4IWaFm9KJdNw6eawzDtoeQyGFqMRSpgmwMSZe9wDkyIzEFTFaorEk+SQ6npL21chaMKvGsxHZJeRRj4foEVNwS+hv69VM+u3nK0+0Vl8Oa67Hnpu/YdB1xcgaf96tCFplYX9xe9aZ4JRXShAbRjUOKo3Lpd1pZwpKWCHEiLQjj0ZZ5sGOXzV0FZbwYY8lJjAykAymis5gQpujn+CoVMf6cjXxmOWJrbWlXldxGT8XScl6iQZYlNq+qWXQ+Z1P+pvwrxegULLp0lsWcpGhXNOG0MSJNMnWZKTXHbjNErdS8L0wdKROAPv9ea3TpIJsIBl/U/lpmENYosrbi/BpLw+MMwOdbn6t06X7KWTSa9WQmIF1Icm3iHtuK3d2ftP0m9MpIi2hmwsqn/W4fSd8dc54/asrv1bQ0zODZhAzmGTqi5JciwRRTFldgJSNK7YFT8zWenmfK1o59htrryMui/qUnoLCcn1z7LB1oWaQ6f+PaTzlDyqgiMaO1kGNiwVDQhU2Z9wHDciAFpcpR9My1MnsA4V4bqtktZ/uRzT4vMSFmdRYZy3m+0Lt7L5dYU5xAbgN67AAvMU6hMNXEsHMC/aZnWYML7DgDaeUDkwSJSgnBIc0u32o+EVUAXBQlHxGIVMZIlHlXul/i9Eal5nkFOxxiak+epRv279ELP3/R46vhu6TEBTDs2siMMSIbqxTLZUNdO1CxOPBlcRW0NdpZNmkkjhHrheWjM4x+LLbembzdipsSiiaBNY5F01I3jaDvCqIf6Lcdw+BhjNLznGTx7bqBkCNJGbLV+JxJfcc4dvgY6funKFOhjVT0lQZjy2aSIHqBSduqFUFN5yA3ZKuxRhHGgMkTeyHPAYtSAkzFPA1JNc99yiDTWuEQG+msMl4posrEYjoRsrCNxC1ItJfEnEEGlTD3tOjGFRRXGRHflkWdGcXO8xjJsngbqVxEHwuVe1p3dKFoJ5S1aOfQSlxhQJGCtH8aNNo6bOWEZs8gc8YaYcCR9wCkQoHXEyVZPmccomxayoieV9cTfaBbrzk6OuLg5JDjkxOMNmhjiMmTYyKoKDTfBNlUt6o+MacJuUJbI2LgIaCN2THNykKbgNnSWZfloLBACylWzlqLrlJVWZSuyQibzpNRtmEMgRxDYUdKNUqrjLYKH+SYEzL2fMokNN3Qo9ZGWEyTmK1OGCPOScY4vA2orp8XoQnAi8QCEBQ9QyRQmtYPWXZKa2exwFZKFt8cpT1g2tCVYq74TLphuYBfzhqa2mHR1EYLKw9pi6udpa4cTVsxDB032y1ZK1Tv6UMkREm+tTbEGBi6Ld16Tex7MdTIChUDja3odcAyMScTTmes0eI8azTOaJQRQf3sC4BVWkHVpBkybZiFgzq1vRsL0SvGGMnJo7TDWFV0OGwJLPS88Fpn0dbhEpye3KGqB0KMjD7Q+4EQA90wkoHReyyWg0VLbSwpR7p+xKhMW1VUlcU1leiv+MQYRoYxMHppAYw5Y43CaYXVlOAhCNBO0fLKAroYEspkskqFEeohSxEhZQkuBXyU1oycZDMQJziLNVmCbSVgfDay+8a0EcDfgDUC6KGm4Eg2WtlXbrdSy2viZqv17WBqag0xxmC1gGx1Ldpu2+22vF5KDsXwJUURCnbWslwuOTw6QVlLuF5xfXnNZujl02NAK2nFMigpkoxBnLmtwdYFgEyyrvkQ2G47rq6v+fjjR+ScWLaOWIKWm5s12+0WlC6GR5BDKtUzMd7p+kROnjF4mk0jLAEjotXajQz9wPrygvXzp/j1DcQo5iS2YcyR3AXcugfnyATW6yuODlqWbUNWPV2/ZdgkVFJUJtLW4JzGDonhYuRmm3n0+AlHd+8QXWZ18YTUJ/LYEYeeiMKoBMEzDFturi5Zr27EwMMW9lthBJqiKaqKBmTOiVxc2oYYeH61wnc9OVyj0ykHbSNYf0a0KWPAWYWpnIDFIRALaxxkHLZtS1O1JB+5urhkWG/YVBU+ReqDBcuTQ7LTGKs4cEteunvOay+/jNNWGLpOkXQkdSOJzGilDaPbblg7TVUlnFaM40DerEldB0bz8vkZh+0x3ajxuqWPhuODIxbtgYzliV07rahT0LUXKN5+7BW1psiPF956KwnYf3zZ61/0HVPo+hXv/5JffRGcOL//Vn7xQgbwVR+6/w7F3KqkNVIsKTVQZyQ5evvhfV4/PuD8zjHW1SzsUlqJrbCYyYoKLQGzFlmN7cU1YRU4WbxMTgd8+OsP6HzPt7//Ju989yGrVeQb3/h93nzt+4zrmgdf+x38oHnlzYccvnwAZkuIFenNM3zjicpxd/gWDx6+Q32vpuuucQ/u8q//3X/Fvbcf8+x/+3M+uHmPxEB9dofjN19hVdVc+8/Rrmdp4LA+Zu0GnvZrNnSct4cEv6H3I4e1IzQ1r775OotBc31zyefdJYOO9IwkU6OyJfcK31uCMYxY6rbmpTtn/Kvf+Ro/eustTP+Mn/7Pf85Hv3zG2fLbnN57ievuguHiOVxv2aiRb379db7zzjkndzVuXLFaX7DNEd1UpPYYvzqA6pj65HXePIncPfk5T/2n5Kbm9N59XHUkGrxao9xA1p/jEqgw0BwsMCkSb0b0dUDhyH5F3F6CGfBxzbiRvTubA7Q7Aw5I/QZ/+Rn1QeSlw0OqOqAYEZfSf/nHtO/EGOn7HuccVVVJx0qGlA3WHXF0dE67dPTr4gKZFFpVVE2FctIpMLkDqly0oMprwhI1OFMJK0oWSAkO5Sh+88Byxvc9z58/Y7XeorRleXBEtTgkeDESc1V9a57uktSi3VU+ef9bcsr4MdD3PZ8//pS//pu/4e9++vd88OGHqJxYr28Yui1ojQ+RjEFlkUZJmCI/ULE8OeCVN17loG0JzR0+uhx5Pn6K1iM+bfEpM0YLwWG9xeDRZk02G7IZRAajU9hUkYdE0JaV0jxaeQbfMpoKugN01oQS94lwukWbCpMCeE/wkc8fPeav/uwvuXz0GQfG0liHbVtivaDPNcNoS3fBDd4PpNHAMLK6eEwargjDJU8+e8yzx1uur695dvE53o/kqKXRYI8pNeUZUMCGvf+eWU8TyycXvW4lchchSqHeKiTBLqYEOk1dTYXFlUsuMzmXUrS+CgqglOhZK61RWkwPmQroWjExorQSTW4tlK1ZS3jqABInWWlfnQA6Zvgno1XRVi3faYzkPRHpGlOFzSPdlLkAGAW0LECH0iKLpAtzJ+0x4/bbW/dBlXK487lO1/iWhtfea7+pq1XIPDEI8FayzJ00ipEWXZUxSaOdJRlLMhXOVhhlSUKHL/nQdGyJnOW+KSVyLPstx1OfmuSjutyvqQNE/k2qYpCLrn6aSS97KM38XbeAlXJ+U8uumtgG85iT2HuGYPOXl+QowOYkqyJv1rNMBxlyKGYmCgGvJq09Cnnnxc8vMYtSIp+T8iCdF/IqOpf2c3IhCO3Wp6l5OBVgCiWGmqqclxgPFk36EoDo0rI6M09VAecKRS4hxIkXY5np+kzA1/78miXAdBlHc3wz3ZvCblSqtOTu3Tp2gJzSGptl7BjEHFLLtiHO5UZjzNQCK+u1QUnunctzAcBtmdup6J0bY6RjE4oJSRkfpWNyGmL7Y2a63188X7748ZUAXQyBnBXBB4gZp0T7pnaJWikOjo84qB0sDT0DKYgzqastWEU2Bj8OdN4XByGpYBDS7OZotBHAbCz0YAc2KibRx1isq63S6KowPjBklWnbBVkbTF3h2pakFeu+Y71ZM/iIoSkuOZ7ed/RjJ1ocIeFDpttsSUkSXWU0zoits1bC7FkuFpJIV1P7rBFWYXHO8aG43ShVxLeF5aOQBdrlgFEylbTSjCqXJWaa5IqMIWUrEy0JeFaMvwVYSbFoS0WMErBCdK0Uzrl5YdrRcXf/b4yRNpacC9OpmBAg1N5hHHHOYJ0VwKNMWFcAOmkfFoaLuOAK8KAMGCuAZooiNm5KUm6UIgVhdVVNSzckhnEkE8iuQqNwXUdS0C4WNM6g7E5fbqK+al2Al3ktLbbqU/WsrEqz5wa7RWOasLG08KSycOSp+qOYK7YpSdUvRS8bpFXFVMKgtBG3VsnsSeNA8qL/V9dOGEYpMSbZ/JzWjCkJMy5GnHPYJAFxSpHkPc6Zcv01TdPgvaaKTlgrWss9dqIJOA5htshWpbIyUdJDCPPiYRRlEZsYnBpl9QxIqhyJCFAYlYjFpywadpXKNEbTOoNRIkwvVYyAsYiDZRjAVkLDN8j9Ngpta0BcUMe+xyjNyeEhrc34MLLaRsKYGQdDiEoMG5xl0da0jaOyCleJQUdCgC2dxIHVOXuLPTjpFMg6LRp0pqpIYSQYcVmuDDRVTds2tE3NstIcHx6QFYyjx1Y12lY07ZLzu/dYdz0oaXW8vL7ianWD956YEl0/8DxdoZWmOWqwVizjt31g0w00TUNVVYQx4v3AGEZx/S2t2dootJbWZlXYm6m0aytKa7Jz2JyxZTOISVoRYhD2T3phoZ+sv6WdXpFjlCCwbB4xSpA5VVSbup6DOrI4YO+3IswtDOo2i05eE927NAN6Zeyx+wzZfBJt21LXNavVimEY0FoLCyNrnNbUzrBsa+6enXJ+9y6ubuhGjzMaP/asu16CAw3joCB5AcSToq6kWLM4WM6tFn3fM4yRpnXCcOh63v/gA66untMuKpSK3FzfcHl5Rbfd4qqGdqmLQGuGKBo3vjC9jEoMgxG7dAai0mhToytP3w+sLq9ZXa4I3RYD1BW4OjEkT9951HakWR6IhACG5cExBwcN1+s1nQ+EIeAD6DxyclTT1JbKCZh+vf6ATz77lNN7d7j36j0aY9CVI/Vr8ihJYc6JcejY3lxxefGM7XpFZRRGi8tX8r7oyO1kAFIZZzlHYpQ9ZUyw2nQ8+mwNfsXrD18iFiOc6Z8urSbRB5I4nJC8L7II0i6ckeKYURrXOKwx+M5L0KhhDCPBD/gUqDScHbVoRDNyCp5j5airGpUNi1ra09ra0dYZ6x0VhqRhHHtu1muWZ6/y1utvcf/Vdzi59yqXqwFb1bzxtVeoWyuRjIIcA+hcYma1Cxh/A+raLS5fFiLl+bdfBtJ99WMuBE+b1IuH8EUfkfee1O3nF4/kVmB6O0r9Jxyl7JsxBRSSbM6E/Ji4d3KEPj3ETiwMjRgtaY0IvyMBaKmkV4tDXvrm96kWB1w9fsznl5c8e7whmoGuj7z1zbdoF3c5On2b+ugO1ckBb917jXGb8MOW7XjN4jBQn1hOl2/w2eozbjY9b/7gW7x6/jX0ssHWR5wu36Z2NRw/5vynH6J+/h53z8/44Q9+yNe+8S36baZZNhwdWh4/fczLpw84blt+9uufsfqf/ke+//vf5enzp7z73gcMP3mXbkj84fd/yI++/h1++Q/v8n/8X3/G4w/fJzlNHwNNfYixFaGPhGxp7SFnyxPuHjScL49xET754HM2W8WRus+JOuBhe8aps1wFxVgvuX9+yNvf+DaVtYzXF6gY0HXFNdc8vf6Ut15/h1ffPOeTX13w9z9f8bU7LadHd7jrHPr+MZef9lh7xfmrJ2wfP+Yqfkp7es7p0R1gRI1eikbdkicff0L/6SXt+SGLO4ZmcYhKisXZkofVQ8KzSHXyBlBz/fwJ733wAfXRAd/8/vc4ePUuWfdlL7F8VYr5z/GYmDzX19c8efKE5XLJS/dfojJVkeLSGNWiVc04RMa+p3IOe3CIqhegR4hbpC1Q4jOFEUZ/ThhriUFiZOuq0gUkheWvnCFZHGC7bSdmDP3I6dk97i+PBFAxU1r74vV5gdWVpYZCzOSQ2KzXPHn6jI8++pA//Q9/yl/85f/Ns2dPCKHHacXm+goFotUbB7QSJn/WFcXLh9pWpGT5+NEF2tboj2/kWumIMgMhbxljZPSOOBjUkDFpwLgV6BVJrSEGzGiokkV7cQ0fqopwdI578A62PiCsV0KIGIbZEAttMLoi20irIpvxhvf+4V1WT59yWDkW1rJwjmwtG20IekFWh2AM2gSMttjU4rKhIpL8ihxuuHz6nNWlZxhHtkNAKymeVZUTqYuciTndSmxzIY682L45tbKC5BJKa+kmQUzzUEVORtAFSfRTkC6W6MWNHdGnm8ZoLuYHWU2sGDMn7BlE71BLccpkTYrCNLPWzuwb5yzGaLzPUnhUFBZnieWNrPI5R9EbrxzWudnUQWI2jdF2ZvFM+70Ub1NpwSwAR1Kze2dSQnLQRbpkHxzYac+Va7cHfMyMxMnAgp0G3ZcBDhPQEn1AWbleKeViRiUAXeUsRiVSsujKkY0lqorKVVhjJU8uRovx1rHEuWnAWjUfc96ToxCcatIhn+7QBPWUgjSKFH2ZsdPnK2YXWMXcrTR1nswkkAn8nWRmiMLeo3gVa1WcXtmTuviNZaKAaPI9WSGGZFoVc5NEDkJ0EcAzFUSrFMCnvHfv83MB82Y+cGGQKoRthyoElbwzgJvCh93zblxYU+oYORbN/Env27ww76a5JB80abXdWh3V1Okhx7UjXuw1NBci1A4o3YFb0/nl/aPda3GfpY4mtm0x45lMeaaWVvGkLGxNbcr10rv3TZ+5lyvZqSCQPKHkXajiLzAhnOzAuh0GkURiczqPvMd61ZoQwpcMjnL9v+qXC1cLCOVkskcv1t5Ji6jvkAKqbolOiQC1rYTlYITa7BrHuBU7aoPCYYUyGYVFYpSIcGoUB1UzX/T1upf2NCttnDEJE0ClHRiGUcIC0xbjqtKapKiqRJOhip6ldlSVQemKIVj6saLzA10f6IaIHwNdH9HOYeuGlCNZJbQT98/GiWNsMpZkteil6V28LYSUPaFADEoLo01nd9B1AAAgAElEQVSliMsZpURPLlorCY0xeBQxK3xMRcRdQ5JgIWd5LeVMKDd233VnGojTz/taBpk4659ZbVCFXDEtqCEEss6zULzRu8/cTQLZlGKMKONwVU3Mma5oa2UlTp2ic5YxtjiOKjFXUEmmUF031FGz7jeAwpf7CDAMA6ZyhBDkb8sGA8w98tYYktay4OQiNBogBM/oR4YkDlIx7S3KWpdFTwBDYZnI5hynzd2I503MiSFGsmrEeTF4tl1PRtyCkzLoujjEkgSwylA5jdEKn6RdVPayXMZeLQCZK5PbGPI4UEUBa0aj2G47+mFgFTKDD/T9wDZAo2tiW6GrMvGZqn8FLCzVguk6SVvwbuNMeWeUYLRQBq21DINHmRIkaDl3pw1WCWvOqCmRT6BM+S6pZkv7r+HwYMl29MQoDLCYYXGwYLOS+1c5xzD2VCZzdnJKWjq23ZZlK9RolTPPb1ZYA3dODzk4WNJUlraxTLR16ywuK2pjqENEsZVq1CQ0oKblWao8xmjqykKqiYOYXbR1TdvWHB0ecnZ6hCt5u3aOykdW6w0qwfHJKXXTcHp2jnEVkLler/j88Wd8+vgzVjc3pJgZQmS97rDKsKgdxlYolRhDohs8Oa+FmWaVVE+tlcU9BJQOhOgZxp4YA7a46DrnGIKXFtg81QQRNoA22MqiTCXrgVIwasZxnFuZpxbWCQgz1sz6fVDaTZGWhBR3LbD7VcBpvZhA6i+q4uSJ6VeqRDGIrp4AP5rohblqrMEZudBt03BdQDTnHDobnBYH26qqpH0pi0RCCCMxeqyVFsSUBFgOIUjiUK6JYmSxWFDVtejE1RU+JlAR0fMTJoK1hsurK1YbRdM4mmYx68cMw8A4Rgm+cqYymtpqFlWFITH0G/p+4PDkDtVyKcPOGOq6oRtGhpAIaLxyZBRO1wTt8IVR4MeAqTxVU9EuD8nKMoRMROOzBlOxDUgQth1xfc+ySdjCFHN1xdCCGQ84f3Cf7aAwYcBGj06Z7XrFxdMnXF08ZX19hS7rOdbNe4DWhmTy7LptrJ3dlrXWxBAwVYNbHNL554SsSWhpoUG0RWP0ZCWgH4WhGmKkHwbR5HM1dV3TbTq00hwcHFBZhw8eM2q6rqN/OjIS6TZr6uaA2mQBIrKRAlgaySmydJpRGcKi4XBRU5lMZRVVpcCL7id1RXKW3GqcgVdfeZkf/OEfcv7qa6w3Aa0Vx2cLtNUlkQeVs2jaaIN5sSp+67HTmFGlfWZG1KYYcdrY/7+gXLcmz5QOTG056vZnyvawY75/0UfsvW8+dIXIAMzY4g5g/KJC7M68av9zS+Ja5EpQewHudPBlrdU6op2wP4kJVACriMZKG/NMGhFgOqNRdklVvc4ph2Df48r/hAcPX+b+Ky/z9re+ycHJKdoeUjfnKL1EVeDDllX/mGdP3sc+3/Dqqyc4m3j6ySf83d//lJPzE370e69zsBCTClOdYqoWq+HOQ3jptQc01qK7zObRiifmIy6eXPDZ1SOeXX6MaqGve8Zxi7Oa9/7uPS4+fk59fEBHZDOsePOtV/idH32Lt77xDY4e3mPdZ4ZO8/Gzx4QwwsIxmgQNOJdJ+YZuk7ipjnmy2vLWm2/x+o/+DfdfukfaXBGeP+W4XrC+trz62iHUkcWDt7j3Wz/GHN1B6YBOHebBBS/ffZ+PH/+aD67e56h+FZZ3eOO1Nziylrp+g9p1fPz4E3727rvce1hxcfUuq8v30e2S1775fYKzKNOzvXzC5QfXfPLoM553lyQdeXh9lzd5mydPt7j2GHtkOb77JvmwgkXLJnQ820Ryc8758TEnD38bfXJONn0ZeEv+pQG6qeh4cXHBhx9+yIMHD7h/7/48FJ3TYpiWtBTANTPbKGfIQ5C4qcRjMh8UGCvGcKoAK3mn3auN+c19b6/YrRTCPg6Bqq45OTHcqxcsDw7k87QixiAaW18I0u2mbQZS8Dz66DN+8h9/ws//08949OmnPHn+hF+9/z6rzQ1dv0WROFq0vPX1b/D7P/whD48qlnGNGjOZY2Ku2fQRT8a0luwsq97TRUcfHFE7xhzYDtcENli3IAwNjT5m9fSaD379Mz5/9h6YXnKSEDjUjioFKhI+R3rrsdURKgZS36PGgE8duR+Kl4PBGkfUljQmUkjooBg3PZf+gq0GmwIO6XLI2rJY3uH3f/xv+de/+wNcm7BG07oD0hA4rCoWzjBsr/nFz97n3/+ff8fjzy/ZcMSoB3w9MKZhbsU0WphXwhTLEMRMIsRd4XAC80iim7XPFBNTADENEXO0VIzddm6tqMmJszCwCjAjrZyTDI/oVIcYxVSwJOyThpxCUVmLjiXO0qCUKa2iae4CyaRZwzknkaHR5dxSyiidZ0OHmMJ8jEpLbpCiGL8wwRZKY6wVnfQUJD7MUgzc15SbXVz3CrgT61BPQFSe3FT3WHaleDv9/TiOc1vuRHiYc8pc9NZjBm0K4C9xrrNGQDqryTkSsmgLY6VLJHgvbbExEVXeuciW79Gl5RZ2rcxQTNiytPKmcvPkHDVEPUN0Uy6h9FT03q0BAuJkZqWwpIrz86T5J7FWSkmM+gqg6UzRyS5Gi6I/PWm0vQiCyXNMeS/EUKWQX9ailDGomQ0c1Y7xlrNoBVsn0h5mPvwJeM0zoGj2rtVOY67cny8KHL5gBcuqgGdFdCurSd6mrJV5j0VWQLRIxlhH1pLjhMJcnboBk0rEqfOukLdknsfdIUwopNo9T9dAvj/OWtrG2L02cZmPzrnSJbILqKbrIzGOKa7IO/OYNGEKZfynGAmlWJOSuCSIxJIA5VMANutWlrg8K0Pcyc2Vr1fzfZCiOl95D74SoHOlJUrrAhgUtmUCxpzY9B1bX5FGzSYPVHWNstJ+aJxj2/ekkDA42kocHFVWEAU97botidLGZg1aGcbg6f2W3kdskomimVpsZCAIDVQWz5gzvhsI/YAvWnAhJ1T0NFXPZNmhSTQ2Y62jco6mVaw2IyEHXFsLA4+MihWuslijsEqSqKQNQZeBmSNkTY55nlSUttU4UYspYvwEdBaTBIVUXsSlqFQHsoB60gibZnRYmlrTDnFmWrAn55zfTKonhH+68TFp8ijsK13auyZK7AR8jKGHaLG1K2w+PU8elCl6oVrYfIUJllVGBUHztap3iwGUKlRxWS3imFlLkmhTKjoJssE5I6xBozXGCFsP5H7nlKSddpRqkCnnZ62Z2XApKvq4t6lOR5HlOZa2r5gR/UIdiDGX8xTGlU4RuTuI4L6zMzswKSNj85adtIi0Jy9sOuccMSSptinNMPSSx2iLdTJJjREnSmtBWwh+IKZMYxWOAWsDOhY9h3IPKRXe2VFzqk7paYOUjTDEaSErEH7Z2ENKM4tRAovSjiQjRyyy9ypeKSdiAHRgcr4lByqdMbbIi04Lu9KgElpbqkbAlWEY2G42RB0hdig8ldG41hGPUhGej9SLJXfPTjg6OsJZTQoDMXpSnnTpMlYx0/2dcyUoUjIuIkLX1uJqrPJkzJIgRgyZyigaq2nriqbWxCAApTBIpVXZaEVd1xyfnFDVLcoolocHAswi7kTb9QY/ejZdhzUaaGmspnYKZaR66eoa6wQICMkT/Cjaiz6wHQbREyy6hlNAKM5knnH0DJ3HKWhsxrhEdjIGVMoQI9noneV8jLd1QJQSMwgvcy8WHbGUBIQWgBphg+4lI1OwOgW8t9ePF6qqKZWqsZ4DX2lnLwGaleOJBbhLe3+vlMIZS20ddWWKnp/G+5HkR2klzgnnLHVdYTM4rSGJYYYGjHKlUiymMSF4yAJC1ZUBdCmSFLZ1ub45eZRqUFpR2YqYwMckBkDBk7RGVxbT1CyaGmcVIYi2hPeRIWZ07ehHXwC6TMjS1mqsJRrHdutR1qGtQxV28jB6QlRovcWNmuvVhm0/0jZLjK2JQYmhUPIYHzhsNFZnLJ7Ubxg3l4RNje8h6IFnn2WqumKzvuHpk89Z31yTU8AqMTiyurAs9yqHU7A4rct6Qmm0wVQt9dKgR8/y8BhXt9KeAwTv2W63+BAxKVM3C4ZhnMeE1QZrLSFKkkCp8prZxKOCHPApEaOYDGnd061vyONAQmOSAHBZgydgyDiVMVkcww0Ji7T5G11A75w4XLa88tZr/M73fpuHb76KO1jSHBRAzha2eUQYq1qhsEXKYb8WPK2TtxEv+X0q+62W+ETtvS/vvf3W50zzZu/lvHuS/b5oak6Frxf+ZgITBCybVDKlCjglbCJnvGvV0jOyJ/vo1LAzH+YesHcL3Hvx+Pcq2LunvT/IGVSUGEQ50LXo/FrPqBIDGZVHHAmrW3y0+OipjMXYivrknPOl5eBBzdfX79Ac3mNx+jKKlpy1aAMG6McVq+cfs7n5hJvnv8Kqgecck1Pg018/4tkvH/Hg+IyTZok2lRiCJIfVihg3DP0WH0dQiu125Bc//xWbz66olebZ6jFPb55Sn9QoK+7ip/ePuHN4jN9kbj7v6So4PrvDyeEZT6+uqJ58ymsPXuFP/vjHhLXnf/8Pf0a3WbHuB4YhcOhaDpY1yngaHajwnJ5UvP3bb3L39W+gVcPNBz8hLW5YugZay+LOguq4xp1+g+bO28RKJC7IG5qDhtMTi7lvee+jD/irv/0blvEuP37nv8CqQ276jrZRrPuBdz/6GT9/9Etef2h47Txx7/wljs8eopuKfrulGz3L+gBlKp52G4yO3NkccVTfI5pTvKnwHhQHJNfifYLmlPuvf5v7B3epcOj2nBQg6yiF+X/Bx37RSGvNcrnk7OyMo6OjXVKppcicknR9GCsxeLftoHI0dSsAQEKK9qrMhayKhpSeQfZdjrcXP++B3/OPk0mkMrRHxzxoG3IWF2ptnMS+2iCtW18MzgGQMkNIYiYXM2M/sF6tePz4Cf/wi1/w0WePiBqGGPHGkHxkqS3f+u73+e/++/+Be2cNxj+HPkA4IPuKmBTJGlQlsiVjMvSpYaTGNBpV5VK8jlKkHzWbC/jp37zPn5vMex8MeBYkc0jyPY2qMT7gUmRIomtql+fU7RlUC2mxTQMpeGQ/KXpnRvI1nQ3LqiXlkdD3kKRwp63FJA+M3L17jx+88wb/7o9+F3uoEJZRSwoKW/bzOHQ8XLzE9lHm1+4zrtfXbFjzPF+w8jcMXY+f9h4gx0TMqcj97IzSpjgmpUgK4lRutbQGhyIjkxE5jRgj1gigZozkF9KyuIuP58VcBsQcj6ImCZaiGacVxlmayuE00lmUhZUn8fQ03speA3PdWUA9Nf+3dMsIQBBjFGaVykxGCSnr0rYYd90QlA4kJUBJypJH6QIa3NZ9Ywb9brGgpJ98974JoJiYcy/8+7L5PM9phbQRToCqUkwOeJJPgveh5CyZgEIrR4oJlabrtGtxnIpLSn0BuD7fpqkT5Dar8pZh07xRFkmdPQBHsWPdK6RovPuzPF+zW8SWJPrb0z2TDqTymZOWJ18E0En+IkuXMOl0OWs1Mff2ht8Euu0/UkqlMCEtq3tvleONCSkVC6NM51nUQ3LuKC65upy3RhWnX/lmVVqLdS5adTPDENCla1AmQLm1qqylZS5O8jl6AtD0DOQCezlNlg4gNCpNryFyK+xArP21e58td6urZ//92twav9PrKUt3ng87ncj8wlifcme5ntPrcUeUmsBFdvHXfHsKSQZ4Ya7cPo4X2b8vPr5agy5O7h1K2kZ0Lk4xIlD/5OIZVRxIB5qODlvXLJYLbNUIGBeE0m2Nw2hFZQ3aulLxVlRtK2iksZiq6AT4kX5l0c6ig8cq6RfOBXRQqaDYRc9IWc3oA+u+w4892mgq7TAJTOrI3uPHyJgCSSuyrYjZiri2LhdSabIp7BdjoBIGIDkgGgFStYl5ArkCKEmOtNHo0usesrBijJHBCKIlpRSoHMThNStpWcwG8WIUPTzpKBejCz9TQfOMsocYZdEwGpedDItiMjElqEoJlXpybwzBC7yWMylC1OJ8KTbLCpPlNK2yWC2AWcwJ0bPKorOXkIntLHUJgETMc1r0ZFjusHakWoKi956UI1o7ad1UU5Ii7c0xCKtuHoQlqRJGEUUfQu02LUREOGlFbTV+GEtFQxdnSYMyIqI5JT4pZUbvCUz2WYpZJNUIwj34sNOlK4qfKWfqpsHYSgyGUoTsS84YBZDJiTEGjK0gw2q1wvuIaxZoY1GAI2GiULF7q4g5CPvLVFQpY23AxqkqY4DiTpsDkq4JJVkCg+k6TQuV/GxL4qa1iF6qwAzuzQtBlkV/ovEaVYRelVQ0KDJncxCbBIgzSoMxuJSxLqODbAo+CCNpDCMhRqq6ZlmD344yPZxBYeBgAUrR9z26MiyaimVbozVEkwihsHKDRhupeFon1TWrtTgzkotVeXEiShGCx1YilFQZAT9rA401NLaA67N2RyYbRWU0KUvwU1lHZRy1syhnyVpxenrCGAY63zP0vQDIxpCRll1xaDYzIDVRmVNWc0uE2EGIu2Uu4z3mNAPcIUaiL9cvMN9jqyFrUUDUvjgXx6kto4jdl0TDaot2Rph1JdAKOc2mHTlGfBkX0ZTW9Tloke8U4F3WCtSOsj5VKUHJ5r4nN2D2KlPTZB+Hga7riDEydH0Rtt3pGUorgytMLghxxIfIMHgyCussbduQEBp5DoYYtbhPm0ZAiJwZhh58JpYg0igrgGTM5JgJQZhZMY90OtNtLCGMSDtIUbywCoxmUTuOli2HywWLtoLU4H0gastmCAzDiFGGlGX2ubopjs8JW9dYZfGpQxUGYQwerUUf1FiNsQ6lEGOekjgkFIMXwOaoFWby8fExOWRS7NFppLu54JnyXFz2hFxx+PSU0/M75BTpVityEJOVELzsg7WYqEgApCWoyyKSkDNzNRBAW0fVtmjbYEPi4OSEut0BdClFNpsVw/UaQuTo8JhkHFZZiJCUOMX6MZTW50DOSVxcXU2jwObIEDwhJYhwdXHBz3/6U+4sjrl3dpfDwwNs0sTUSyuP0pgcUCmgSOISVv5pI7IKox9pjOXkZMnJS+e4ZQsgLOUi4pz4f2l78x/JsuvO73Pu8t6LiNwqa+ulemOTIilSIilqm7FsYTyA4QUY+K814LEBD6CB5ZmRKEqkuPfeXV1bVuUaEe/d5fiHc19kVrFJG7AcRLG7urIyI967795zvue7tOKxVhvoOUeqVvTN3qivlrp2pliRri3F1gCp6z83D5/flq/d+A6v/He5/gqpiCRsjhwQiYi6uX5tj5D9fCEDuR2eASE2r8cEbkJqG9ZUDyE21poD/A2Qzr1coL/6duff7grC6/fyVS+TpzgDs9XjxVOcMIknYSz1TpTIBldHPIXeTzgpuDQgJdJ1PfH+A/bv3gWNiOtBBmACdwVZiVI5PFqwfnbOw5/9nLqplNfuc/L8Cc/Oznjjtdd47d4DtA5UHVCJBBHy6RnPPv8VP/3VT/nFT3/JqEruHR+vT/j4yWfsVQ/OswWcH7l1/4Cvfftr3Dq+R3/Z8eF/+Yh//NWHXJTE2cbziw/P+ejxf+Httz7hr3/wXVYpketzVBLiIOAIYclAT7nIxC6xNwT67Qnbhz/m7FeR+0NmWL6Dr4lE5snpI050xbsPvku89w4id8B3iEwIp2w444KJva5n/9ZbvM8+3fQR0u2xen8BdWC/3sXVwOvLff766JhaT7l/G6K+IKdiDe0Y6Yd3CQ/exN3r+IN3/5jD54/YPH9Bd74luDeIB/cIvafLa9CIcwOIMuJY7B2z6HvIHuqyAQ7aRqPud66Rf6nXzPI4Pj42j8thsFomz47BpnSzvXbi/OKM9fNnLC6vuOcHimT6qkTfITt7ObkBtv+ONd72SFVTgqhWak6Wto2x3pzzhGEFOzXHbKR+DQZem9bc+Eztc8VgNVboAm+/+4Dj4yO+973v8R//9v/iP/ztf+Qff/kzTk7WSPD0y336/SPuvfk2D772DZaLArqArFCPoA6AonVC3QaJgOupOlC0pyhcbRNPnhsb9er0S9KL55x+ecpv/vlzTr74BXX7iNAl1BeKgGYhTUpOsM7ClQuEdU/dDMgQjQHlRuo4WT1g5mxNHhaQ2FmtkoAqBGfgOSiJieVBx3vffYt3v/Mu+3eP7edWReqSLobmvQ34Jf3xlv7OHfzJGapXeA0MtSdLj6YbA0VVC5CrDViAHWvJyAlWB1nSeUWDb0Cvmn+vXO/Wcz1jaiK/G5SbR1dh9tn8HQuX4P2Ohdd1HcvVkhiEabOljFuuA/y0ESiEOcRgrsnc7LksslM3KWJDWjUftyytYvOhfd7G4PKhsclc8yu2s7A0okSz8do9Z2DgoamXrqWaNEBP6vXv5796E5Dbsfka2+lVoOwmSy84hzRblUpTQbXvP1tr5Gz7q5Ec/I4JJ/MASqz/s+TQGRwy8opzZhe0q/Epu+d595ngOlxO9fqsV7X7UBpItyPDtDoYRWifQaweLcqOgOJozLGazQ/TjPF3TLbZNWRHAPvKXzP54EZVoS0ttV1XhV2Y1/VrBniviROq2piNgM4EG6vFfNunRNu6mvctodVwbS+0Vbn7CSJWvcykoDYLnv8PIyXd7PxlN6sQhCrSaEcwB5jt1mBT9Bkj2uGDI8SOHuzezsQUH34ngDUrzOZ//8p/1pvEphtXUNt99C8TFmqdw2JaT7TzNnbXN6kNBMR7rIV75RnAeu3ftW3M7+/3sxft9fs96Mpsp92u+rx5qBl0F+eNoql2Y0tRNtsJN2Wy6ziMC3PrTokpK7pN5rsUI3hvgQkiuE6J0eF7j48DnVMkRvTyil5aqky5ThUaWirhcrmkXy5QUV6cneGvLhobyhOkZ5g8mjest2szB6/mSzbVynYyKVYuFb/T29uiULEUnCqe2iSAIk1XDqiomVbmspt8lFrJJV9vNCJkWuy77mYYOCA4naNpADMnLC3VNVc1qm+xII2i88ZuMJhWpbR0RtVi768V+855S31pSHnX+WZ2qlCyIekCLpiP3wzWOYzaOR9sohafI7En1UxulE/nxA5fAbTi8deQ8byxtsNFnDP/u1LNFFzF0nDbzxOZWU213QdtwJPa/il2H92NTRFqS3CqO3nnDJIYQm8AnW/afzPbLEyp4FpwRwiWfqTOI+JJtbIeJytEKLhinyFX6JLQxYEQTNbqvRqIINa498MClS2LxQrxgU0u+Kgs9vYopZKmEc2VccyMY2YbIDsQF8i46+TW4q4PFJn9FLDpnrgdEDpvNrsNR2f8vn3WRtU19iY7oFZaYcmNzWZm1KF27ZxvAJkDxOOqI1KJweOjo0igU4dP7ZrmkWlbrCgG+q5nufQkRvI4oTmb3+BqwAfP+fk5BcfQeRZ9pIoSfLVrqhVJjtye85grXYj2dNRryYnD5C2+rb88bhGtFmrhYX81cLi3YG/R0QVI0xYVJYaOEITl0DNlnUfyTE0m6rBCwXlhGDr6PuJE6RYDi24wuaYTqlrKbq6VKWfWm5EQzYtGUaqKhVAMAwMBd5Z2YBfijHnnAzixKagzhtyYRrY5kZ3xbVyOoM6S5mymtNt3Sy62I89TvDbA92q/n4tUo2mbL91EZk5Gnv8p7prNap517sZhZwsjxB7hujiY30NuRXDasa4yijEpZ+msd54QHCHYM+ebtFybGW4Iju2YySmZ1ERtaCMVA8OqJS6r0mjlBcUAFBWHSKQW8/AUSbZva0U14byS0wxYAc6Szfq+Z+gih/tL7hyuiA6io7G9HBI6ChObZEE1Q9/TDwv2VgeM25H1eoMXx2JYcFucMfJKJqWRfrlg//CA2HeW7kfh4GDg0aNHnJ1OTJMVpc5VQr9k7/CQ+6+9juTKtDmnsma56NCaOD97wcVVYRonlovOwE2tdN7MptOYGjOjDUxmYOgGuGqFqkHGVox5fFzggyPWymK1j4+zLrRJtnLm9PQFV+cXnK3OObp9n25YcrDaY8yZq3FkO5oxempgcKeV4AIh9PZcupExZ4KLbK62fPzhhxwvD9m8/S7vvvs2+wcLpKt4F3bFt7ZiqbYCvraawgVPHDpcEEpNVFchztXJzAywQtDqJ5OVWHnod191Azbb7XnX/0naJlhoUB9QWyq0tH3yFVBO3cvfb/6zeWIC2AG/ARJCRBgQ6bFYPAEtBszJBGSkrW002O9VzVdLtqCZmjL4iHMLcNEazWprW1yHZa/PBbi7MWlvU94bb/dmiuDveilCFjFWg5NmTO5I7fsFhEDET2vS2XPW5+fAOYs9T7+4B2UFNSOhUn2FnIEFQkfNawgbXOjxznHy+VN++g8/4lc//w1lHfBpydHhXW7vDbz7tW/x7tf+EB8PUOmouZKen3P24Yd89sGv+MmP/5GPf/2h+c12yvIgICGyX1bcOX7AViviLtgfekqZePziC/amBd2+sn9ryaOTc06ebnn6AhZDgI3yny7PSaef8fDRhVlxnK+pORNRymg2KF9/7z1++L2v49NzbvcX6NljHv3k79HwJWVck8ozHk0T4e1j5PZ9dP8uOa1wVQiyRfJDxu1zMgPaH1LGjsP+Dot3IrUHt5dQzbgE4wYWd+7wh3f3cXJO9Oc8+/RnfPzJB3z67O/JsuS997/F26+/DcFx6/h19l9/izJO6FWC/hDiAnOeWYEMSHHmJ+tAqwPtbMol18mbpUDnf+8y+f/8utmwzeEQrrEP1IFlZgldZ4ytzVXi+bNnvHj0Ca57xro4uuWCg+OB436B68y/dR602g/5rcV9/fObHJEGyJQ84Xy02jN4ROwMLtn81+YgnjyNgBC7/qUfITd/hNpQIwazGVgMCxbdgsOjW6yOj3nt61/j3X/6Ef/+P/wffPTZp2xrpfZL6FZMEvHqcf4IFUdJA6qeLmo7SwvKyPrqhPMXE0++3PLllyc8evyYJyef8PjJLzk7+Yh69Zx8MbI5V7bbRO+zndvbLZst+LqPbh1ShG2trEOk2yYYEyx2gyIAACAASURBVH474aWYF9w0ktNkyaBqIXFz559H26+GYaB3gqstkb0L9Acrvv3D7/PeH36HEjqqZtQFvFjAlm/WD2gkx4HS92y8Yy3V2OYY0KHV/LiQVquKDVrzlMi1UJsFh3mMZ8DY1AYWGh/Ii5hNETRbEPP9dRIaoGdgjWppwHBlNtfc1dFWMBsbDKu5dyGKIdAvBrroKS0BPfgG0szAXGMUmQrBNenktSfVtQWJ9ULiGjhVivWcrbGRJtXd9T04I3K8xKrWXS0njZig2Rb/LK+zD6E75pxZFLHzEHPSztebj88NFt1NJc7Nl/ee4B3B9ajOSdjzGSs7LIEmCUav5aPBe0vHbcPDwqwsauCScUisRphVRaiV9dr6RzNPvsFqq22d1cZOU6Td79ait+dXDf9DmWlj1i/b9zMWmdUeYF7Q6PUe4nZrRV8ehn3FHrHDurA6dQck8jJLzBhy7f1j9985SyGdmWreBZyz3hekWVs1wlFTBdHu5Uv3qn34GZ4sv3Ut5nt2DZbaAMeh6lognVzXSjfkouKaxYfTth/PARXXa6g25ZPEuQeRHVAu4kjlmhk497431+Ds4fZVLDlgx6Cbr+WO/dbqpBjjbv3a95gBuvY8amPz7fwXr63FdHfX5/9jphnODwpe/G6v2P3cG6+brL+vev1egC6X1MyAww5hFbHCsObK3tEeB3v7hMOeHEzCWFqzG3D0IeJajm/RSt5uSdNoHnUCV9NIEajemZ9cZ0X7VBKaMmEqRBF8g3gDxnyJTghBEKl0wdDXtOiYkifVQuwcfViYJDL3VN9BHMlgjJJsSafudMLEjsZQcS5SpTbU3EA4S1W1zTIAtU0/1CkhYp5zAmS1798QZ6ceR48nIJIRKdYLUQlqYQCuSAuGsLNhaql7NKaNL4ZvKjYNtnvepL25MeNqpebckF9HcGK+UMD+om/hQg2V14JXwZf2AwXUOepkKYlVGnDlAhLsXlZubEYG1RtoUvJLi01Fr2WtDdTtuojbbKmaTaIQQtt8PZZSa4lGzMWUmJeQhXQEQp2BBmPJzD5ypRpQMqbENE3GkMuZXA0FnzkP3vnGbKrkYvJJnDd2mzOvpSlXhERwNHp7Y/qJsB4nUsbSdAW8V7rgEGdTLcSxnRKhr3S9p18sCBUWiyXTNLFaDJAmottSywQRsrfNMzdWaM6ZlO297A6+3ciLlyYk1JcpuNqmXi3Os4G57eo7j0g11ga71tKMSxH77w1YN9DFiqFcaovmTgwzrxlvAKv4uaI1ppjaBrJNEy9OX1C2gtM1vk6WOpkmun6Br+C0WLnj7HqKE6q0JFg8EhzZCTVV/JiYGVjq7FCM3tJZgxhw2QXPoov00aN7AyVNDJ2xPMu44SJvcZ0QOm8SxGoA+xA9QcRksbWgtaBZqDlRW2EXggXdODUKd4gBL0ZHN5lni7gPTerhrwsip55QlagRH68sUVPEADFvycmIBRJ4pN1TW9dJjOfpiyDqSaUgztJPXStw0pSoxUC6EMLOfy745nXRPOiK2sFp4IxrnjutMW/3MGcFMR9BV+YV0pKt6jW9/yXJQ1uzufngbcdxd9DkatPSGCPBh/ZPASq5TIwTbZoK1c1wQisOUQRvSZKi1MbQZFdkzGWnAQyqLdAAxwzW7NjOruKdIxWTtVMLEi2ZO3iBUhg3a7plj8OSxCQ4XPTE5OljIC4WrFZLShVYeG7d6khTJqVM33Us+oFazMMm5dFYvDGgAovVkq5zHO3dYy86fj1+yUagj/uIyxwcHHL37j329/eZLtfU5MF3LJZLOwu9yQVLyZATpRbSZmOBZsGZ41docpfa7rOCFVGKSmtsbDNu10ZwPoJ0+DKBj82z88Z0Vszj8+rqipwrXb/HUgK39g8YS2H99CmKkopJWasqSW2Q5MThgiOI0sWBoV9wdHiLw6NbvDi/4OpnP2Mat7z3/tvcunfIZruh+mKTdYydPuXCVMzvJc2TcO8gCFPZMKUrcp2oYuezF0dRsf1DLDiKWqE05pzMgzEbSvxWpz5PlOdTSwqQUEaKjm3vs/3SClC3K+xeBuRu/ppPn4xyibJF6BFWIAtEo92UmoGtAXSSQXMbjEegsxpr+wLyBVCpKSOxw8kBxEUDDhxobMDkLOUzP7jrz+t260N27/f/3asgZGmDSWEngRGAXCE5ZDsQNhvc2SVPvvwpMV7x2pvvEt0CDQn3xiE1DpQy4F1P8D01C1o7XOzYTld89vgJHzw7hzv3eevu27z9rT/m9ePbPP71r9jbBuTzM559cYYcHLM8OGbz7BEXTx9zdnLOw89OIMHCZTRfsiiRfddzR5e8e/dN1kPkyfljTk7P+eTLX3Jx9Zg7+yvuHt1B9z2cOTaXme3VJauVZy8UPi/P2XeJo1tvMHVLXoyfcrE+QdIVmhN0A3feeJ33vvMDzr78lOn5pzx9pjx69oyT7TmPTl9wujmlrgbelSOWn/6SO9NzYn/Afn/M3rjFXzzjYH0FrhCXPdX10AX620tSuWB7dUbXBVxd0TtB+oWd6ShM53RMLPslk9xC3JLLy4kqoe1BExquCL7gXEF8NiDjNDHs74N62Bb8ytMVkDxPDm1NqyskN9q5S4/w/x9K92pD5b3f1UDSgGYLBcsgtfXamc32jM3ZC4pfsjo6pnDI6tYRw6pvTVRv9dO1kxQw7wPt32Xu3Y3NU3Mi5Qmc0jsD3kpVNtstZ6dnVJSjo1sMywV4/1t7yrzfzv8uQmPQadtrFE029Hzzrbus7h3w5jffRQ4O+V/+/f/KRx98xKY6NuqY1BQEqVq9MmXHdAlDJ6TtxGcf/xNffv4rdBq5OBk5eTjy+IsTXjx/SilnTPkR55fPmKZM2kAde1SWZD+yroWzlBknpfcJkhKoFJP/QDgF9xzwlNQbkzYlshaKKMUp1Vnf5iVSS6ROiZQzziurIbK3XLJYDdx/803effuPODp8naqOpMWUEbZr4UO7ZrVaAF/oEbcAWeJ8hXK5q5OncbQmOwRqtVqolGKSPBH62OHFsVWzBDGB1HWXMluDoEpubBnXhqRzGB+lGKDgrCfUam9vN9++nom3isT21tJSW33sCVHAm13KPFieF4efw5iajQftPbn5f3PNheJaME97Bw1EtBBDw31s/RmIY3Xu7MM9M5ZooV6zP5hI85idAbpr9gdgmNQNKPIl8O0mGHcNJL5ii3JjmOudJ/oZXL3+GfZ2TSXjgscL5No4az42Kwf7lWcWrLanasdqv3Gm7QCyBt7UuYdyO+UN2myPmspgBsO8cw18aVdZr+HNWrF+vJhllzgoWRtgbN/H+QY5tnUxj/Pc7ruwe1+/83Wjb2O3h0hDdputE7M6WHdnsa0dkw9TeemegA3nZ/np/PXGAr7xo+cbwjV4JDPtD8sJwBlQPYOC0khM9rVWexkxdUaj232RamQaqdbrzHWTNmlrtQGGQJOsK5m8A7iMSBKgJenOnoLXDEmuAbd53c5r07kGFnpuBr1YySu7tSqOJtsXBAtkqzfuhZ+JLBiAV9QGNdr6cBfi7nLuLmsjfFXqzitRXrnG8+urwO2br98L0CXa7lRLm2zPH9QYOjUXpEAnkaHzhBgppTDphACL5WD+Y97M/POUmEoipUzKxnxJNTPmxDRuSRfWxM9xuL0PxtArFSmFAOQYoBRyMp84m9JakmQd1+YzVTtK35OnitZAZTBGGG1jwNEpeNcRXCaIJ4hRnA2OaMd4iKibk0Xb5ogd5gJIDMxmy9WDD0KtdvAk9SjRfHVcxkvCu2KbsBoAZBsFO6W9cbhMomQmlfaA4rJNyhVD07E91YunaCEnm4rVUmaAHUdF04LVMrIcFgRvjZ2oIsWuKd4YezU1MNIHNJgnHNmRWvooJSG1GrAhTRmsiiu5HVxWtt8Mq7PF2Tz1SsVXdqwebSyfGaWG62sws+vmAIbd4m7NhdCMWNVoqnOiac5592DNBxJtsmDBG9ds0Fk0inMUZyxOdSZNc8E2ISeOZVjiJeC0UsqEaiG1aVYumc35OdtxZFsKwzix2YxUFbZTYRy3HB4cEEumE4hdxC0iGi391zyvGqBZm8xq/ve2j9nE6QZD5pUH+qUpwrypNu8Cp9KY9G3aiE0D7MvcbjOzGvNaPmtyMUv+LVnJtvOTlRZqYnT00phUIdjGOY5b1lqJjPRktGZyMqBE8Yg2sXK1A8Z7Y3GiwQIYvSdWSDU3jzwlOEd1BadCDJ4hRmKwtOXoHQfLBYf7ewQHabttgGQljRO55p3cYhy3bLeJ6AdWq0NWqyXLfmAYBnwXjXlYrSRRNfp6DJ6aG2Z8U+XmDIwuKMNiIEaLurd04YqvFbynxspiuSTGc6AlNbVvVoAxJepmwlcluox4mgehAZ9ULFnYG2CdnY0Mc86UZMlT5j9hYKc6Y/EZk7c02as9M5Yka8BzKdnkoG26f5P6beupNimIUnN+ac3tWHyNDq5t6jQbBnuMrr4LqRGb1I4lkbN5jdWaTbEjgnTL3QRT2gJ3Yj4wlUItmHSzFQG0aRwqpl5R3w7vGajSnU+j1tIkuYALdF1H30VEKuN2TdlmBn+LxWrRgjYcqVbyOEKtLIeeWjIXV1uci9y6NXBwdGxS2HZ+LRdLVouOWjJTnri8umI9jXTDwN5qn6+9fZuVy5w9OedZ2aI+Ir5yfHTE22+/zdIveDEmGxgExXe9gZGxh2DSie1mbRHvNVtxpLSJ5DxRLCDXBYzOxZ1cr2edUwXaddTqWhqgXP/dRu0PIdAterrYE7zn/Pkpl5cbNAZqLixXe8a0cSPTZqLgyArBOYIEnJjUrO8Gbh9HHjx4B03K86cnfPDhJ6zHNe/rexzcOUSdomLSBvGhgW0O8RGVQqqwyYlcJy63a84uz8hPvmA7Tewte27fOibEJQVjvO/On9oaEjeXyDcKoOuqeRe2YMdLbRXPBtUNyoi0BmsHbMkMeF0XmrtNobHvr39WptYzKmvEDRiTLoF0jcE7QtmAbszjKW3RUnFuwPkViEfqBXAFWvAlIcWDbiAuIC6RuADpbdCQzcZCfGfp2hLs+QBmU62Xm6nZs3aHy/zWy934RW2NSDDvI+8qdUyMz7cEIquDY+RR4Fe//g2PP/uc44NbLN+4xdHttwlRKVJBLwhuwHXSwEWI3ZL3v/k9zi6u+OKzz/n+93/Iu++8y2e/+jU/++Bj9lLmNx99yKfnjxlef53v/8Vfsa+RzaTcff0d/vv/6S6/+MU/8Z//9n/jxdkLbt0+4psP3uGt4dvkgyN+/egTnl1cQp6YzjODRKTLnF485/RcqZNj6T0uQKBweZH5Miv1aJ9uWDJO4H3P0A/WcNTExIbHJw95evKUvcUKVveZ8siXL57x4cnnPDy7QF1PWMP6737CdPmU1x7sszo4oqRIfnZKd37O/YMD7r32BgfvfIP9b3wLkUTZnpK2LwjLHl0/58WXn9IPx+y99jZIhJqgTCyXgXffeRd/8Mdot0JkRDoPWnCMOLchly2+C/gwMo2J0xfnxIs1LiuMI8fvvk7fm3yQUQyc6cFckJs/1W8vi3+x1zzwuRmANv83aCWNozVNE+ISy72Ou3fvsD5fMp2cEbxJ9i4vr9iOGwYGVALoYGebzA/8q1J1dvueWHeHj55QPacvnnFxccnl1Yb1mLhz556dQ95T1OEktDpqrknnb/jyP+eB/DRu8dUTw4DEa9bTIi65273Jv/o3/y0Xqmzr/850ccVlrqyL0jewZr2FZ48KZ0+vGC+fcfL4V7x49s/4ekYH5CtHXweG4sinGzbrUzb5lLOrSybXM24ddWsYfomeEnrwB4Qexk1FcgFXUDeDNufU/AJyROSQqgHN2QY/DmoQanBoFsYpma2Kd9y5c8wPv/9d/uKHP+CN11/Du0Ds9/nuH/0p0ZnPdJS4u2bGnFLQgmqilIlaUhtCX9e3cKMhdo4utL2tfU0tudl1mB1T5wOEYINgqtUPzmR/4vxujamyO/tn9vlNPyvvPPnVB6ANGGdgzEmTxM6+zrOfXPP91VLaGnRcM2uua/75xJD5PGmgk8x/oroDjqzuslTIEIoRDqTVds6DU8RNVhM2iaDJHa8Boh1zqbbne37WrmHMXTF2ffZ9NTh3M4Xyq0A6JwacGqd9fg7b0Kv1fm4HrLX6JRdcLuCr2T61IdoMNLHzn2s9UJ3/zFaArRv73DPrcRdSL2K993zwoQbYtgfWGITtd2p7Qs0VCdpAVCPM3AQwDagzKbXUZkO18/G2evYG9PZbr/m9fNVXqCqFwkyimPczY7EaUWX2gX7Zg67J9ZUWLtHG2E52zEipBvjFFq7pEPBmfTT/fmZwmsWN3/Ua5u3ZPlcbomjrcVS1hVy21dTwYm39f0F2xIS5l5/BVdVq9ix1Dk/wBG8QlSnDXmEWvrLuXl2b0rwntd54iOXad3Gun+1Zn/sb2UnL7XsyI9WN2W37B64pH9mZjDEzUC0ul4Z9lF0DOT/XN3v4+az7Xa/fC9DNE4Pa0GdVwUkw7wGxFJ+yTdQx4Zzi1EGpdFkgttTTZSAMA1EhbUdkdLAFxTbiGAJD8wJTFB8Cw2JB1/ds80TJhTwlpGSTVXjoxIzZ1xenXJwmlNqM4E1utLkqiO8RHUA8WQspV1vsvpLVk4rgnPmLeQkG0Ik93DNrExfQ2Zdm3ryVXeHuRaliwFpwQomhNT9CUU/VDhGITERxKObVAiBaGuClu2ZCKoi35erFk1QoWdDGwLPN2jap+QBRVYhqktVQdkwrNFNqAhW8U7wXOnHElqqppVKlpfStN0xaTGjjQF1reLygVIIa8BAQOufovLM0ljZVUBdQ73ceCBkhiUngajX6u1ZjZ6RpCy6SpomcKyVX1Dd2OfODbe+t1mKfpbH95q1x/p/3zTSbG4eCM3DNtYfNtUlObQyxqk0sV5QuRvNd8x4XHS4EG4E0aUPfL/ASUU2QzD+rUtBiYFVwntj3gCMlO6hKKaRkAMnZ2Rk9Nj3yDmOM0TemtTZ/M3bSLlSvp3Tu+jPN28tu87HfoW3a7Jzb6d2lAb86pzbNSxlpQJ20CG/ZbehtLrGbFNa2gUvbWEq1ROFc2AGb1lBPII7FcsnxndssQ2K6PKGOGyiZ1bAk9h1ZHavFQBLPMHRmpNt3pOSMQaotkSgUQqkmjWysKVpB4ghGmQ/eGLROjI2rBrYRPTFY8WYJXJX1dIU64fl0RtpuWBwMHB0dcHBwi2GxJPQLM6xXpQ+BqYutUTBqtkk0LRlIazZwq0AqmSlNTTJtAJ2x9IUoQugyZGW52hJiZ+y4ko39LCYvVhUuLi6RXIi+4INSvElcyREqxCgGZLaDz6To12lcOZsXpjhHpnmw1LqbllatJklLaXd4zoxT5onUXAC27zuHPVC1XWdnfpru5WfsZvO2A9qFXTqeefSZkTUUk1Kp2QCMU2aqSrocyTjbK3E4SXiR3RSyKnZtnWK7SrUJGJYa7iRas6S2fo2NVyl1YsoJkYhIwN5+K+CdI7pAdI6h6+hDA/CBVJUpjYxbC/ygwrjdkOuI+I7VykY3ecqk7QhqE3HBDKlrye2XFRmHy57lG/f44u5Drs4fs7V4LqIPHB4ccu/oLgfLfdZXR1QZ6fYC5+MI8YTqJjbjlhfPnjH00aSpLiJtgjhNEzGaP4e6dtDXudCfQcrGDFCTODjf2NG1sdZ29hTsps6x61iuViz7PQ6We5ydPOTJ5w85uHeH5fExYbFo1g/tHrhoV9ZZkqyrFYfHS0C9o18sWRwu8a5jGjd8+MmnXKRL/uCPvsXe8V3UedQHCo6xKEmFIIEiQIhICNSaDGMKcLG54PNHDwlSuH/nLm+++R6LvbtW3NsGeJ1YN9cxbW9rffiNAgfmhkQpqI5UXVPZIjLh3Bwh1MQMcr2bwiwjnuUb0vxKWkVKAT1DuaKWHkdGJAGL1pSOwBrqJWVzxubyjLRNRDew6I8I3YD4CdwWcqJuR8YxMRVQN9CvDun3jnD9HvgBLQ4tDmJuqFoFjag420NveundBBJeaUDn3qVowTmlF0VTQnNGQqbqxMQlOW0Z/G2WR7eNddHvcRT/nKOhh3HD6sE7HL3xOt1qQGLBhxEkUeszxumKmiqd3MPlY/x5hzsPXH2x5vHwOenpE37xsx/xi09+w+HePd5/Y8n+YU93G/w+HAyvE/M+BMfbR5579yOXT3/Ew4eP+dd/9h3+4M736Kc3+fVm4pNPXnA+nbPYZuRFZuWWUCNpo3zt9i3+4G7kg88+4/HZJesNXJ56vH/A3aNvczklnjz7Dc9fnLKplYCnJ+J9pq6fsZTnfPu99/jiF895+MkLLqZTdHGKu7okXfVMJ5n0xPHo6UMujnv29/cZ15mzZ+fUaeLr7z/g/W+e0z/+gtuf/4ajuz237kckj6xPlRdfPuTZh7/m/oNvshz+G1SXbB4+proL9u5G9g9XuMMFKgNoQK6ugAnZs2cIvySHwEYz2meWtxQ3rYk6IosNEgSkMzbJVYXQgYsUcUzSE8OSV56Yf9HXrpF6pbm/+XvnoOuFbvD4KPRD5M79e6TtfWI/cO/BAy7Wyvn6ku1mCzfgAHQGnlvD/CpIJ3Z21ZpI44jzwrjd8sEHv+EXP/8555cbVge3+a//+jUevPEAEWm2E86a4wZA3ITlX3q22pYRgqXJzo1qniq1d+AhdoG33nmTP/3Xf8Xnj5/xix//lKTOwvZEiRSCV167FXj9YMHF6SGRjrfeeIu33/kBrlvAuGQ66fjlTz6m/M3/ycefKrrekl1iQ2GMQvVKyoksiVwTU81QhT70uOpwZlxMUCUUwRVj7WYdKTUhuZgXplPz8vYOiYFAj4bK7cPb/MWffp//8b/7t/zZn/6AveWSkjIh7tGHA+rU5HPmcWPKnps3wmP7o4542eL9mlq2Bkg3bzQHRB+s3pPr9NF5kh9C2K0p1HwFTd4HFupg4W1mFZJISSx5U6zGCd6ArroLBrCbuGuo5XooIzNAuwuKaA23VmPdY+w96ztmKejLy29e61b/XoMB9vbtHK9adrXXrHSRokhn/aA0VpNzxnR6Vb5Yq7H1lOvabk5a/Spvr1ef9lcHuPbZr6WCr36Pm8oeVUtUf1V6qFgiZpGWYlozuZi/sNOAxGR7LGISyt2Q1gAhsaaz9Tnze7Z7ff0Izl3Pjb5JZ4GtMHPnpbI7B12rhWYc1ZhxusP4Z6BUtD33zsFcj+v1gy83gGUrL37XHtqsPH7Hn+ebn+jGsHG31tqnvglk2725VsuYyqR5ibsGULZ1pgJD1+2Y8UhjmDrZAadVSwPo3G5iUttfrpj0vyJolWuv7RkEpZjKcAZIzfCcmY4qzM9sG7zjmrmwxzlwLti5RnzprLh5ZtyUat9cl/PF9+qo7maYpLS20u5jbMEVc5ja7pSYn29r2nY/z8I0ZAfQzffpldvKDACrawDsV01A+e3n59XX/zNAJ+wKUTBGQmweRrkUxpyR9RqXPTmOzTtIkCEy9o6x90zOWxM0WcphzoVajPYoAp209MRaicCedyyGyOVo5pilpQV13jcDcqB5IG3HLYqyt1oRuoBeXTJenDGtN80E0DbkqSQqxTjVPoJGuhCZQm3m3h7f5IdBzGOhNBNsVAkNWfbNAD20dWbbTUEkEoJH1UIfKI5aA0JbyGDm9rCbgtjltYM+uIJKaUi/a4aUQvKKiloABdABXixFMZdi4GAMxi5yBkxZ8mNiEWF/EVkMPdE5gjgWXWeeGCIMw8Bmu+VyvWadEkkbMCZNcimKtMQgzQlyQUumFku23U5pd0BoiFRn8GNGSeLQbJr4zrm20MRot1RjStbS4qh3EJQ1BzVjptcNoKPuNs2i5uuZdU73dUYprRjoqEJt1HDzwrNDW2rz7KvVvo65cWt+XCHgYzS/gRjwPlBr3iHxHo+EDqRSi4NsUe2dtwYVaX4kLlOq0nU9WjJBFd2ObJIxTiQnk7CpJVPWUpmqpQ+7JhcTb8EotSHxcvMZbiAyGBjiUPOQofmCNJZinn3qMKNbNwPMXAOaxrKyKY2FiZgUMaUJmSbCcqAGT/aByZY6TjA2W9eRF5Uu9uwtltw+PCLIhqcXTxg3W7wqXie0quU1Fpv2mBxO7JlzkIqxOBOTFUnBzPVjH3f+ErRJzuyB6J15TgxdZLXsWQ4dOY3GfPMmgcUHQu9RL1ytt7iwNu+wW7dY7R9hsbrGEpVa6frI0i/o1hZoM4OZ84RNZ++/atfKzVO3diBLK9S17RHRwbLriM6K+bE0+aoPdCHQxUA/RDQJWq5lgwr4anDSOFqqWkrJ5BvOM3uFuOYbiAiltr+fE6UxEmKMxC5SK6QpMzUJypQSWo3Z6Gevn91EuUna54JDPZ4WEkRLa9XKLpbc2/2sWnaFjMe830rO9G4gOAtPWA6R3gspb1mvRzap8Pxyg/pIjJ1N5HI2MN6babLHCmYhmxUGFY95VXgzmGyMOWPvITbLmlJGJ2U7bqjq8T6RpkQeehZDZLHsOVj1HB4c0HlLE9cbIMY4Jc7OLzm+e5+9vX0u140dt0kM/YKh6/HRk9LExYUNIUIQYhdYNfn25cUFm82a4/097t+7w8PHZ0yXl2zzxNV6zeXVmnfe3GfoV4zjIVlHki+cPXvGVYLzbSJrZtpcMcTQ5LZKiDYx3UnByiz7mqvLGb7H9ruSQSteIc5rxtueN5WJVFqYTJP0BN8RYyZ2HS6EJuF23L9/n8P793l08pz1ZkMqivOBEGI7xx2mwTUWvCqUnAnOcf/uHQ6GJaenz3j+YuThF1+QpfL2+99g79Z9pnHNdrzkylWWoSeWiY0kmBK5KtF7fD+w2j9g6jpOnjzls49+w96i5y/+4r/i29/5ISEM7Hzcdh5rtv/tJmxfJUmbv04ztWzI9QrxW7zLiEzAaF+n0nxt5jAG+yVtys/cPOx+VkFYI7qm1pFCBkk4t7T35zL4BDJRQRI8ugAAIABJREFUyxXj5Qs251d00uOWW9xij1o21HxJLhOb9cjVemS9yeA6Do7usH90ybA8JCwOkbDA+c5+fvV236UiwWHmIPa+ZuG77JQADUlo4KLS/HTrhJYNWq+QMhKD4EPhfHrOw+ef8OTJU+6vvsMfvPGX+LCgiGP52tf5xu03yeOGoe/ol0uUiZKf492IkFifv+D05AleIr0TTp+e8vOf/Iwf/f3fcPL4EU8/+IjFIvH0+SecbpTL6gjPE9/87m3e+cOvcfu1Y5bxiNXqNbQkXFyzjO/z2bfeY7z6hHfe/TqH+2/x4snA3Tff4MHZh/z0n/6Zy6stq9IxrA7ZX/WEReEH3/o6faeM2xPcAs4vHY8fjRzeuc83v/dnXD5/wsmXnxIvhCwLHANlVLSOiI5cPn/Eb8YzPvzZp5y+2HDv60ccAI+fXjC4yOuv3eVbb73OxfkJp2en6HbkMC5x4ZDPXzzhZ7/5mOfbE/aGBfJ3/4lv/cl7/NX/8GeM44Zf/uNv+OyXP4bxKVVG7n39myziXdYPP2OdT0n5kLPtCfce7EHqKVPi8uqcuw9ukzYjF+szDu+/Tti7Q6kTuA37tweYIm4rXH75hE9/9At0v2c/7rGaBhaLAVcilxIZV/c5PFo0H1+uB4DX3UFrSt01SCIGwNjIwlo8PzfQOybb/LfbdxMx/+EbYNrcY2mxv7NcCscHnkW0wfiw6Lh99w5useTeO6+RPz/h0ekVV+OVDetRRC2xU3bdltz88fajK6Qx8/TpY7748iGqlWm74e///h/4hx//I2OBd97/Dn+axAJ15neutaXOt2HpV4azzBWmfXY3X0RRXGeD8CQwFWVdHffeeJNv/9Gf8PTRBS4ubIiaC95tGaKw3Pe4Gjg4OOD23W8geZ/VQQdhD8oR6fY+mzTwkw8+g5NHTOkF43jGppyTvZBjJbX3VRyUItRSrNfBALCqSsm2NYVU0SmT8pasDimGEUgRqs7sEaWWxOH+ij/50+/z7/7nf8ef/+AHHOwt7RIMgiOaA0u7C1X8ziN7R3sWh3lzuqawKIiMUDeIlp33csoF53Oz0oBSElDp+47VasXBwQEInJ1dcH5+RkojIZhPegViNJBnN9Rvlhwird7w3gb0mDdWFuGG6Skzb0pak25+0bO/lUmxc86tB5s/tBizbWb3zOf2jQHnTcsae12DZ8YLm4HkYtYfXujUWPQza+8aJBTrLdXQKJUGzM0AXbU+W6Ex7WTXX4jOK1bbWaDM6bCvAuf2ma+ZXa5dG23ghDablFkOYm7BBrLa0FBJtZo3em1hcYB3Iz4vcDWhM1uJpnlyNiC1a6e7a7fTl778eDdSu2ugXrv+M71B7d9sgFxtuNZKqBlUm6+vrZXZg8zYxRbI0Bx+dQaKaYhZA0pbXfCVHKnZT6+tA+defv+1zoAbSLDPMd+D2atvBqTM7qXgq+AITdZpQG+IHSLWc0kjr7SZ5A3gyfbv3cBeLaxOTcYzvyPDq2je8Y2BKq6FlmiruVTwKEWu748DvDfyRBciDqE2xr+b+zvs2qpU61fnkAYipsC6BlpfXoM3wHJpz1Jj42kVUwO2UBC5+Xfcy6nHM/OPmaDQrtHMNJ0/iw2ya/PJN4m2o1WZ8zKcz8WveN0EGE3R9NtBKzdfvz/Fdd40nMcFMWCiJGI2z5nkhUsyear4LOQYjXqZlZojCSVdbgnuzNhG3hh202ZL2mxY9ZE+eHpnLC+H4kslJyjrREwTrmZqVhBPkI7gvJlHuojgiXuOgpBCB7HD7/V0bkCvNiy8oy0fUmk+xSEQ+xXSrdB6wpQno7AGYyLkasbu5qnUDtZG6Qg7uqSQZ6R8h+o3tpaYgbIxljxSBNGApkLGPIqiF3wUWziu4hp1OdSE1kLUYghzqYioWdJUk6Y615JiSrEpG56oSodjcI4QHBmlqLAAet9bqq0z6ZjGDrxHHayODvBrb74R2u0iy0vKpGlibzGgpTR/BfOsSnkyaVyFPBkzJ6uStplN2rAeJ9ZpZJsV8QPTZiIMA6uDwzatAj9E1AtVlFQSXjq63szzkVnCq4iYrMrSGu2QmQG6UkELSHUEAp3vyb4l5ba2w0ehOm20d4eoM2N4MQagtDVesQfSeY+PlhBseGxBZWsPa2CXMIT3dNFZsEC7/zOLqFOTc4OQS6SqMgnQB7xrKUziiUS6OhJCRwqJCxKhpTxGPNF35EYrRmdwROdL1A4SZ9LGebqWC6XMXl4B5xNFR3z1iCxxlBbK4UAi2zQRgmOIAY+Sxw3T1ZY8bvElsTw6sDAXLKnK10KsBacjtUxEH+l9h8vtARsUgm3anQsEMV8Nb/pNciqICsFb0dMNA0xikk1xhBDpfc+QIHSXJiWtmb6LLRkZuuiQnPFeGboF0SleGrNKFFHz7nIEI166Ht8tkW6NeVx4ulVPDYH1dtvWh6NQWuKwEp3lK+dih8iYJlDzA9uWibLoKTlQpi1J2/zEOZwPqJjkT9TR1czg1dKMfGBbGkOuTLhsIEDtDNTPxeO1mEejioVBNINqVdimgmreTSeh+Ti0zX1OWu18MD80aDR1q4PHlJhy3nk+zEMHY5oaMJyrfRbfGIx7oWcIkc24xYnj4OiAXAqbcdsKUStSSirUXI0lPCXwyn6/ZCEDfRfBF4YucDAEKD1TzGyLUuWcy1JRLCXSdw7RTPXFGFNqrCTXZEXSDlfaZ9LmA+hDbNJak7ToZaFcXpFTRdVRciZNhXE7IQd73N7fZ3//kK63Z8J5Gz5UVUqBlJVUYLV3wGE3cH5xyenZBbkU+s6xWvXm/dECInwMDIuBEAMxBrqhp+Ytl9vCahFZ3rpFf7gglC1ddpxdrfnlhx+z3LvNrYNj1uuEeseoytkmoPGA4q84314yVdjWwmW+4my9ZbUcONhfsRx6nNTGkmZnQwGzoXEGyYjLBDXPmUHFwEudyNozqWAurLNfSWS5OKKKIy4GSudh0eHHAWmed6cvThlT4fDoFovDPbzznJ+eMyysKbvabBpwC9uLcz762U8Ynz/hzvExdw4HurDHevI8f/aYX67XPHjvG3Sy5XBZWZ8/5Lz23Fp1iDM/Qq2FLJGLq8pHv/qU3L/g+WdP+OyXH5OuzrkTBt67d5/j116zQqeCdz3ZQzZ+5vUgRwJahZoaC9SZJFDTGtyIMBHciMoVyhVVr5C6sUJUelCzfhAJ5GySfd9YG6Yj97vCTKWiOuIwH8lpe0qRNd2wh5PQBv4VyoQUpZeI8wPnJ2fk52vC/TeoNbO+uGAqW8YpkSZHkJ5pO5HLGdt14iI/ZP/W66zefh930IFsqeLJGg0gpSJ+Qa4ecbGdryOBRNDUisnQmowmgfZCYktKT0jjF5R8znLZoWPm6ekTHn7xOeenifv7X0f6RJGeqh7nlwz9Cl1V0IksI14m0tkp29OnLA9uka4K6WlhuP8Gy6N7bPMF6+4Fn19+yOnJl+TLfY739wm6oNcLXnz+z2xOA6H+IW88+A79WxGmU9wkNmEvlZIqZaM8e5755RdrPtm7YnPl+Vd//IC/XH+Nsw8/Q90bXPWncBz54b/5Ljo94vEXH/PG/a/zrW//NfL5C4arDRs+Z719xDI85i//6juMjz7kxbPHoFsqwuTA+Y7V0X384j5fPD3l4bMNF2fPWVw4/Kpya/8W53kg7Q+Mrw08HxNPri44mISjvQUb9fi9W0y65uGzDat9OFtf8uSncBJ7zp5f8tHPP2HantIPlc+nL/nk6m+4M9zl5Ncfs388sHf+nE8/e8ib977gG9/8Hhp7nj57xudPP+CTxx8wypa3H/wBt/feIvaOp+efslwc8e5bf8zx3n3C4gFHR3vI8cB2c0EZlGl6wWc//ilnKfLW9/4t/f4d8xsOvQFKDXMI3ppuXyuSGzhXJugd6oSJQGpl88A8YFSQct1Y49rwuzXCNxoYa/RmuxuHJ/PWUeVWtwHnya4wVugO9vD7jtJv2fpLzjanTNObDHEBWmy43KTZRZUoDkqT+AVhWk88/uQL/vPf/R2/+PhDEOH147ts15HTC5Bhn5NLz8TSwAPAq0JNFoiDNC/fVxssAw2MQd5kY7VAkTYYhOqMeTGKMDphnSAubrF//ADv94gVFk4QCQabu2I9kHcs/YJ06akaENlHGXAxEPsF6wS5DgQ5YHAXZE1symT2G43FXkrFZUu8FibwiSSQVagS8ASTzE/J1CQakBqMaVc9UpWsUwN5Cl1f+fO//B7f/5Pvsre3ap+53zWeIu6l0IH5Eu1mGQpCj+ghokdoGVoitymjVIRUCyknCwxqksKUTdGyv7fizu1jVqslKWUbEE4jJ6cbAyvEAgy9b2qTWhAt1o/WhB8WCJYEL6VQpJLFBpEGnrgbn8V8iaGpA0TJmqlUttOW9bhBXE8qGRcC0S8sFFCvG/ZaCkWx/tKZx3qFFjYGuYF+LnhTj3hnPuPZBqs4b72jQKGaLYxKA8WEoB7Jjb3nZz89Wnic7HzsDTO/BiDmVayqLRjCBuPGirL3FLU0wMT69eB8A25tEOYRXDZLoM2YWv1aSFp3HnAz20xFGgPNpKQFkJDQmlBJVv/WTJVGIJulo3O6pghQd6FStSQjdaDNj1aZ5lCIGYAp7VFSAecpdWqSTbfD8M37THZ+gDMwb1iSNrWMAT7eNzlptc9TaUBms7ryLaSgNnDNzR5uauo0bXV7dtfyx/keOP5vxt6ry5LsuvP7HRcR16WrLNsWDUMHcMAZLHLN0sy7XvSgj6jn+QB60BIlSjQihyIINkGYRruqLpc+r42I4/SwT8S91SQIXaxCdWdn5o0b5py9//tvoDZKSCOHAKzWWOOKl7oeLWfkKEVVY63BVRUiHT2YTBS586DiijEMD+D+YURJcw3ocp+JKk3LumeMeANnCVmIBdiV4xdFivceHwv5Scv3GV0G+oX8w6j8ko59DKEYFTpCmMIIY5ECzA7vhRKAVauM1lYGO0mV8z0AqmoUNYgNDAXXKn0Psjak4qudYzpQow3BJvL8oCjDaCWPsz4YwpS7ROVhRHsgg87l+VdCHhLAvPw+bd8dHH3r9TtTXOVtUwHDo2jE+4iOmVQbmDjcxGF1xhmHUfLh9XTKUkEfI70P4BTOOEF0o5YJESUNMMuJtiS61BLDltZo6lyQazRZGYL1GBvBWrJ2JKUJygnrK2t8kKlZ1A5Mj9IJZxJOa1Iy4otpHdP5DDc7ZrnZsOo6MQwdNOxFKhZKUxjlaYRUWAJyiVA5DVLjgrbKxVZJWCSahFUSv02ClBVkI9HmORGUpBKqHMhZkGOtMraksmoFOy1eXTlB1Em8Q5KkX5IVIecy8ZHjcVqM0LOBHBUVDmdqkcKWqU7nJe2IHOH2mr7dEtodhoRpGqqqwjmNNRVTqzGVnIOAIhlTJEdIwyuu76Ss6ENi27Wsu5bWB3xU3NxuiUjzsZgtaJoaZTR1U1HVlQRRpEgIvcijNcWEsshycjFFZkD/RbooDjaKnEMJPZAzrsvkKaHknMb9pEBYV3JtjBLja6eFNSkTKCtG8YXyKh4smUwY9fSDzjwNvk4loUWaPZmCSDMnMmeQf09ajOidFi1/zDJPaqKirmo2fWKbeglF0RmrLIGMdsK2kE0uFwqxArQsTEbOfSIX1iTFA7HIKIUPURg2vgw55PhDDNhUiUcGkqQae0/2EZsk4GU2nZCNUIx1Ah17qqDpSXQRll3GYLFZo6IwSbOSez0FxG9FabQyGK2x2tJMpiyOj6jqirbvUCaiY4IsnyllJcEeKWOKv5sAkpGcowA1OlNZQ2U1ldU4W4r9wraM0ZOyI2eHSsKmyyWKPiPATjDgdWF95bLWKlmcjVY4pYvscggIGZiUCWcMViu2m9W4COsi+1XGic+JdqS2Bd8TUk1QShhyGXSK2OyxRpioMSvwYLKhchaTZQI1zHxkGFkSLnPxqcwZ5QMgybvGKCprcVaKeCkS8pjqOiSvJsBqg9W2FDVlSpaTyEutpMc6a3Ha0tQNKUWMsxwdH9P3LSF5Uo6E2IFC2HpWbAJykGcjek/vRU4qTD+wRuTJJipSCjjrMDkSixS9kmEaXiehhieDyWLka5QZ9yJQRKXQVYWyIuPLBSSx1jJNE3zvIfWEICCm0ppJU3O0OOL09IyzB2dMGkuORf7rA74NaCsJ4z5G0IbJdIY2wqiNIYn9QlUTfMDWDTYYlEaYbSpjK8tsPsHqKeeP3mOxmDC5WTE9mXNEou08y9WGF69eEaPm/WcfUk9m2KqmjYk+OR4+fZ/Z8Rm3b1/ht0sJXOlbuq0kpEroiGLe1BhT5CSooROGXAoUIqhUmsqMy8W0VyPDGmXEnkBJ0a6zlRTiqsc2Fckqcu3IznJ9f8/druXq8oqz84c8e/qU5XLDcrlku9vRNBPqusZYQ4iSiJz6jquXL2hvL7l/cMLjZ49opg0PjhcYq7i8X/H8i1+xvl9xunBoD75bskqG8/lDuX9DQhnHy9fXfH35f3C/Ddzd3tOu77Fpx/N/+Wd+c37EH/7xH3H09BmYCkxEK2m6FBnfd/S9p7IVVTWVIpmEih4IYCIoD3GDyneEeI/SW7TtILUQMjk5UrAoPUVXU/nZwq6WDbrcmtqArgAj/qe+Z7m84/5+SVU1nJ6e4VwtLIeQibuedr2m3+5QQewk4m5Nf3dJM1swm8yZqKY0pROsXnB/fQmhpfIdOoLZbWG3lgFJBdkplJlhTS1MU5WxGaKSIZcikmJbhjceul6OuZqhTINSGmczhoSKO9p4R9tFbu6u+eLrr7i+WnN28hHTWtOHJZOqQatK9jsAZQgxEfMam+/wl68IVzdMqUg+41sFoaFqJpw/Mzz74JhJ46keOP7Dhx8xa07wWnO7uuAXv/4Z1xdLlheGiidMm4eozRLyihwyr379OZ/+3V/zy09/ye1ty6+fX/PJjybE+ZQuej4+P+fRZMrFBmYPjpg9dbTTjifvn5Lp8OvM44ffZVclzP01y+T5+jef8uuf/Xf+5OMP+c777/HzxZTd7Ru6GOlj5vGzp3zv937E+ePvELav+PCTinZ7yc3yK0zwOL0gZMtnr9/yYveKuFwx2xm6zT1vr+7Fh2dSk1SiW+2Idzu801x8veLL619hWtBbOHnwPnmq+Pryjk5fUD+b8t4nH9DFDc9fvybGyNXbN3zn+3/M4w8/RjVTfv2Ln/Hmm+e4aWZrZrSbG7b9loefnDKZHbO9vSKvNLmtie6U6XzG/OEjTGzprjzT4wVHk4ecnz6UMLHC3BA1QukLSgOi0QcWb1qG0FHRa0Mo0qZ3FTx5/GlA1Cb5IGqhfK8q4JZ0wAqr4cglGh0ATaRm19XkLJoS20yYLI6w1YycahSVDM01FEpLORDF4MOSM2w2O3756S/5v/78/+b53Q3f/e73+B/+4x9w/mDF12+WLL3CzR5h6mNptsmiNCBLAqTW0kIdfsbSyA2e0kGlEnJXmrnCnPPInw5FmzLL9YbluqNPDmVqnJZBf1KV1LkkSfHMUocGL/WRqacicUb2BGk8DUSNyxV1rok5iMpHi8l9SrlIcxUxtMKUUYZQfKgxTmyMUOiSpKqzwmQJzpKRjgwmsoWm0Tx+fMZ8XpchmmQ878+J2v8lNK3y9eG6iDw/pgk5TsnRFXzgW9wjpSQ5trifJBWJKaB0xjqNc8XLMEZ22wnr9UoMhTIjSKHYM4V0IWI4I+muw6AyH4Bve/nKAIAMeihRnAyMHTVQTQuopbRGWUP2AsYlMc0VkGHw4tZD014Ajm8BZejBI06Nf6zRUNQPZgha0KWuLadUISqMHAuQgDAWlVIYWaAxSktYR0r7Zy9L/SwMoqLmMIXBNxr3q1Hmp5VGpyCrflJjr5VjUY0pCU4ki/IiFrYaWToTSeItyZ6p3B85gZK6BRUlG1HJeR/M9+Xn90oCeZUoBZVQuigLEDWXJKuWkbUaehILOsmzosdLV9arTM5SI8jbHlybA8ZZzuLBF2McpZYDkJUL+JQURCPrjVaaXAZ6gxWRHbwKS3KpLooQYZlmVPQCpI9EDAGmJEhDQKvRH3okYEQZ0mtTPksej30Y5A+kDmNLAJtif1zjlUZsuDgAzoYBJLKOaiVYR7m1C5ClyvEXohIUD/+BkSks6az0O+C3KccgvnQGlLBmVWGiZpChJgXAVMJdy1kVD2XxfEwpEmMQ9lveS2Clh977z+WcUdqOXvairsvjOlMg6uHJkvtIS+Ce1hr0nh35jvmWUuNzON4z3wLh5Pwxro2/7fXvM+hS2ShhlDAlpJkb4nets0wmE6zKJXVR4VzFZDHD+S1tn/B9wpjI1GaqSkywQ63ROZZJV4naVUkklKFj23uUq+UQlaRIxjYQWUtDpi2t92QjtGFjjNDrc5b02eClqa4MygoVOeaMLYXGgDBbawmeIvuS5nxobIeQBkHbpXCggG+DnEaVh1WRRjq/QRp98SyTm0hkYQ6lDIlATALqZUxZqGRBUkRZFBI0xhJUllTHcoONBpdKiQ9GMWzUWhYrZy3JCj3VKIe2VmjVlHOQhGWVkkwqVIryZjnQbXeo4NFNTe1qun5HXUkceh8jCkszqYrfAYCTpEbriAl2YcrCS7x4Vo4QXxEjhYI+5/T0GFtXQjU3mkTEWjtSr9EZjUUVlFmT9ok8w0KkVXlIpfmSRUGNzLICrBd9eB6ntznm4g+hiUqQ7uwKqi7QEjEldBLdfU6JphLGBWXz1HqfnJiQZKkh7nwwrheUXRIdYyibnC7pumVxjEkAarWLAp4CPngUUBewI+YkvnYFHRxo6magxyb9blR6WSbksS0yRS0UX10a8JRVAbMUbfDUuiETxddCg3WOejanUjCxmr7vSTrS6kzIBpOEKeV9oAsBHzLUIlcdFi5X1UTXoTygLQkl/nWZAoSDUgbrKiqSpCIrRVeCYHIo1GoyRguwp/VQxJfEK61lclckZUrr4v8kExdVqMq6+KeZkhY8xHfnUhBpI9CuTTIxNJRUVrU3HDZGixzVaQwVJgemk4ZJXRH6Xoo0iqycATCVDXe73tJ3HTFMCHGICM/FF1HjnCYZBxFMElmOhC2AyqZM2crGnjM6CUtS6n2Rag8lnSqFgS6Fm9aaWLSGKYnnR4ppX1gVNvOwcxgjfoq2dtjKCYU+ZurZFI+sfdpZQg+7viOEwHQ6Hd/PaWFZKicNS/RRJny1JblEnz1tKp4TWvYVWxJ1dRqugzhASBCJHFpRHsh5KJ+TUbYg/jG5gNQ5CxuyqWryfE63u5fCV4uXYDOpRPZLou07KpPFn7NyOGOotGOymFO1nj4G7u7uRp+2lCS9KYbALgTatmU2m5WJfKLrAyF4Uoo0k5pmNkVrw3bXsVytiSkxnU0xLrBabVmtVtxWtxwfnYlJtfd4FPV0xmIGOUbWriIaMdV2WpF6RYie7baltpZJSa0rBh8MPiKSSLef2g4FlgwlNElZuQ457c9vaWB1OVfOOZm0a0NV1XR9x261ZrPZcvpAvEdubm7YtS1H8wV17agrx3QywXedpNt2PVdXF7xJPVdXC9puw/njR5wZzWK+IGnHVy9e8uKbl+zWayZVhTaa7fKOt2/ecqS8SCHdlLZLvH7zmldvb9htttQ2U+ue5198xr8sDKdzTXPSUB2dghqGZxXCe5c9Wc5Q8TtJwjDE9OSwJHYX5HyJqdZYswTVovpA3HVgJhAyu/s1rtE01MIULc2aqgwYAQIyRVaMIfYRlRypd/Rb6Hct0zpQLybgA8l7VA4YFei6Jdvbe9rlCr/d4fs7Hj56iqlrlBHPpBA8ffKs19f0uyXzSUPtJnStxW5uqE41WD0mERrboKIDrVAmkPFAxiqF7wKp3WJMhLhFPPNWoBYYt8BgwU6oJ+dMyWxWV9w9v+Kbn3/JctVRfbAgf7TBnXtUbslRDLIzidX6nudf/grWb3lSR3ZvnlPpzMn7j5ifnVLNJlTTKcpEnDKcmobTnbBsf/zdJ+ijI9bGsftNS6rPWDz4iOMHP6aefAfDGW23Y315iV9fcn/5gnb5hnazodtG3rx4w+OPX7NpL/h//vIrmn7N9cVb1m3kg2dP+f6HTzl7+oxH333Mw+kV13//nEePjskf1Lz86SXOOCqm/NPf/4rz5i+ZTOacnJ9y2d/Rh0DeyYBiu1qxvLnh7HjBn/7pn9CnDb/4+V8TVMvnn1+xW9+y3Xl0qHl28hEPporLb17Q9ltwiX6XicmgzQwfDX2nCKHCpQUP5g/5+Nlj5qeW37z9OfMm8+Mffp/jKqF319SVgskcrY75+c/e8L/9xT/xZ+Y9Hp48psoLnthjPjhveHpywovra66vLzDvzaj9juXLz7hs36DrZ/gm8OhkweOT93E8RD2qeXz0CFudoN0TPBblRMpIltpDco5Lw6YUWpfm21UQMt295+J2RX3aMDsfZKHfrlGGuC5Zut5Rdx1IYZWWIAKjahp3RKVriBU6PaAyBWz25xzPJnzw9IyjkwW1PSIHXYg2Q1HICC6OBSKJvuvZrrdUVc3Z6QPOzx9ydHTCcrUhxUTbBU6dI2stBAXpRkamxiBTe+ejDX/GL5X12SiS1vQaWgUtsAU2KbHa7ri5vubq8oLNZjsEMROzGvf3oeOTYasixUyKSrztBr8pMs5pjErkKL7dqe/AB1RRvaQiP9EqYYwkn2YNxlUkY0muYTpdMHE1vTH4IikcaguNEuZxsUXIWeOMDEpj7MnGYpSVHjFroT59+zyRh9vgnS9JX0IJJJQ6PMXCJtN6BDBQhRVJpi/WHiEF0lDTOUkzVsaU+qwMuGMsAVgJxj5clcF/ATtQBz1zqb0Lm0lehZGUBdDLOaMHmW5OAkgMvtmx9AhlSCpSRI0piisJf8pjirAqvtQUACUUT69U2FWDUf5wPYwW+4kBmB16JFHolZ8pGKPWg6pLSajF8KiNAGABDAqQnEqtbrSCGAUsUgqbi8l2N2VmAAAgAElEQVR/Rj5nAcKGu31gRJkByix+gMU8hZzi6IEWGfjm+/MuO3Qej2O8NlB+z2DP8O10TEotRgGbEKDImNInliGuoshKhzVMnk9d2G8chNuCsB0HaekAHo2y0oEZZswohTyUn2Yl9e7IiCys/UOftDG048Ajdu+Zt5fr5wIyD6ECOR8elz5Iv1bj13Whfb17/LzjHyhsUEbg7h3/T8DqAXsYnofhOEuvmfaPsyq/Z2DwKS3LpFJyj0eGa6PK+VCjlHe8f3IewWylc+mx9+cpx/DOepBC/84xM6wdSQA6bd2eXZjFS/0dgM7Y/e/OGYUuLF+5V4yRz6uz7CcCnhZJctkXVLmvBJ94F6yTflMxhNcNAKes5d9C7f6N178L0JmCBKuh6SyNwIB8xuDJKQiopjI5CYUzGU2OPRMCRnX0KmAVTE2isaCdJTktOv/gibGAGFa86kLv6FoP9QRnK7RzpKzo2o7oe2k0c5LkDa3ERDx7YgiQIhWgnTysPmVSH4nRk0OEPtImg+0zbduVIAMzTiqMKjdwVgRjBWQodPQRoMtRwAGjoCRe6qKzF622LIJZe1LSwvoySvTKxkLBxHTxd9MkoZKmQI6q+DohZuZI0zkkyw6+Q7IgiaeVVbqACQZbOYKOhAMapTJm1P8Pkx8x8lZMphWNc6gciG0vJuch4LUhJU8MIvsSMFSzS56cFV3fQ0CYNq4GpeizAEkZMUesKvH208ZgK0szmzKZTDBuLwPSWhMpgJxmBKxkCdWFAlykxAWwUIeLVT7cHuT/BHDX4/RFESGIf1guQ09rxKdHoYlpr0eXXyQr/EA0TOVLg6IwRykidBakX2VdigpZNI3WmCyNvaz/4nGgy0ab1OCDsU8wi6UQqeqKqqrYdR0x7QE4ATDVuCArlUZfhH/1OlxwCnofYyKqiDMVMWZ631NVlQS3WQE1JnZCpaBWitpkfLsU7w9tCApySPQxlpAET4hKQk2skYmD1ti6pqobNBFT1WXqISw2pfaTPpTCuVqShZSiigHTd4UqX85zLkbM2uCsoXJOhgAF0A3FV632BgqD1RiDUZVMRpR4aNl3QLoh3QmsdVilcWVRt8qOmytKgDGrNNZomrqi0qByoKlrmtrhpg3WyqQqxETnPW3n2XW9SEr7Xnwis4DjqfiECZipsVkTtRHq/XBeKI2PUsLGKQVKzhR5TpF3ljteKwmSsEbtwdthCqVlVTIpl8lyOW8EMUhVRUKqFK5yTCYN1bRGOUlI6ztPdo5sNb3v2fmOru/IOTOdNJw/OJXEVlMAHyjAjmK92tBvetrUybpoM6oWSWr2IuuztXiKRo/gA4XpxficlH8lM6S0jZ4rSstENgnDSpoEYdmlmEoCrYRTaKNxDpyDmHvuV7d07T3LpmYyEVY3xuLR2KbCNTXr+xXfvHxBfXUJaEKQcrKuRLrjvRfzb6uLZ1IixkBVOW7vbjiaTWmXt8TQ88XXX3F1e0MznSFeO6nc14rQtWxRmMpRz2YcTWt637JZ3dG2G3zwmJyprAVV47uSqE5J+x2YIeWhGWQQsTAfSjlbvm2QSgjcLX40A4ArIK7Ocj8ba0lB7h81yikyxjnatuP58xfcLZecnT3gwfkDNusN7W4HZJqmYjqZFJA4EXzg5uYWbRQ+JroYOXv8mLPzx2y2PV9+8TW317c8PjvjyaMn3ClNe38jHmhtB7pHNVMmVUPtKrbxnl2/4+GTE549ecDpyQynA3QrCGJ/kWOPUlOUmRaWgZN1E/E5DN1OknNtIvkVm7vXpHTFfN5j7QZlPNkr0jqias1m1fL6q1fM5hsePzPYpha5WobcdfShows9aIWra1w9ExZIp7BBc1zPQSusrWW/8J7N/R0qBHSUwWTXbsi5BxXISiyi+66l9Tvul3d4XzFpzog5YZxjs92yilsmXUbPFrgHE5Qx+M6jXMK4GTnXCLktoVVEMsw1Ybfl/uU3qO4eq3do7akXMyYP38MuIEVD2tyhUosJmXizg1XPWTVncTxnhiGtN9DuUOzQOZKNRcLCdsTtHZtvXhHWt2wuv+LJ+yco9QPcwqEtkHoIOwiGymuOc83MJR4cGey5Zbdr2aUeVZ+w6ye8uul5+WrFk/cTy+stf/sXf8vq4pe8/3jCbnPL/WpJjoHbqzf8zV/+OW+u17htzymw6tZMz495eP4+P/zhd/n+n/1H6uMJuAv4/I5vXv+SNyc1z1/+I2+/eYPqNMubzE9/9gU//JPf5+jROf3rr9h4T7KGNgSwht/7gx/w+Ml7PHjvKZvrt8wmhovbK37xy7/Ax8yzRx/wRz/4PX7yB9/DrK75u7/+33l7+5LL5SUxwemDx1TuAZfLFqUrPvrBH/LBe98lr3v623ter+7o2g1uGrl88SV3asPm/pLee67uPX2/4O6uxjWJr1/+Nx7MGybxjt31r1BXNfPvK/AZYxxffPkalOHh0RFuDo+++x6tWZGna3LaotQptn6AaUQymZKYh8dSv9gsotWIG/celDTxIWcCmk0Hby9bXr2+51HOnD+YyBo09jsD4DRw5vIeKBi/LCwYYX6A0orpvGJiTgTQQGPrhgePn5ItWFtxfOSYTucSJKEKvWrf7+4Lw7z/95QSfecBxWJxRIqeDz/4gMVijrGWzXrDatNxHnt88kQmDGKawVvqW6jTv3oNTVoqdV7MmvssypiOzCrD0nsuLy94/eol1xdv2W03xBRJWhhI5hDFGupfJXYtOo/jOVnLQ4dKHTltiWFDClty8OicqArrKpXTY4wMCGsnypG6mZCso9cOM5mJT3ISQCkxDEMFIMsaskHkZBFSiETvCW0H0xqI5NChTf07z5F8LvYARD4EwIamec8SEuwmEXMcU01DivjBAkZD8Tth9FM7aMhTkVkOXxdMqtQdAwhmLAYtYXlJvXOgKlMsE+RvCe2TPzlnkg/0KtNvt6gUUCXkIsdYehfxuRsCq3zwMljTeRx2AsXWJ461/ACIkymSTkFFZN8Wr/QxyIJB5VP65CTDZgv4DBSgMiXKMAmpDdT+Ygzeb7ELB4CJQeeMjkJ40LHIRw8v5Pj+AGkkSgwg6aEaXC5zHk33R5xl7F+Ge2Agy5RTPdaAeybaO3XvAFQqqf3I+xC9/fsLCBlKcJcuSqVh4ZD6W8Iax77hAIA7HIQf9lqHx5CVjPAOQyMEE90zQ4X5xt4f8IDtpnPCAor9vfttoDAVoNAO/Y1JI3g43EuHx2bMuwEfIXoGZt3wvuOxgSgLMwfHtQcQD/+Mn2kA34xBaRnu5PwukeQQMOt7/875oJwLwZKG4fzhsxvHz26MkUHrwXGrg3tm+F3De8nvYDzPcl5+Sw/9zrmQ+zdGUXPGlEWaqqU2zgPiPG4JQ5erx5p8eDQVg/dkfve8/ZbX7wDoxFclFw+BIdFi9BIo1MAQPDEHuXmzxkePDzsMvRjU5ox2GZ1qTE5CrbWWvlAeUzaCuZu6mFI3WOPZxYhyU2bTmaTYTT2h98QkpuR1U6F1KqDejq5vySlgjUZXjjZIY+X7TpDTJPK3jV8S1x33257dtsU4SVZLUZKKjFFkbUV+pjXxYLEXM8CMyZAxGEAr8dZSOYofVhLKtG4qdiHhQyBnCCmSsy401IAzGp01TqAFjBIAz1YGE8Xc3aqE1RZXkhTNgDLHiHLCCjJK7xFsrQtDpSyAI7WMYWYwLvg5REzjmDYNRkMwHb5vqZTI3Kh1mUwpXN2QMvSxJ/hYJj+Z3Hui78TnwYj/Whc9fbTlQYgiqxqmQTmKkbxSuKoqU5lEyCIpNQXRDilhy1QgIZ8jF/wzGpFCCvAlhv0KAeCiGI+NIIcq4F8KAZUi8lwJ64s0TCEoAEraL4KUlL6CAYofRWmGBePEFtBJZSlSvBe6s9EabSO6rgooI9TuVJ6bgCFkMc1sKkddVfQ+igdekZzFGLFVLc9fWUCSGoDJ4st3sNAdLj6DrHHwBssZgg/orDHKE7U8EzFFrNVMJ9XonzjUsSkKgy0bUMVbSaLq9QhgZi0sJqWNbKCp+PkZTbaKrQ8yXVeOiBqfp4Haz1B4mTJhKNMzCfOI4z07MM5MYYmlshbJc1DYYTnIc2DKdS/g1gC2Da9xWjKY6iPXZAAKtVIjhdlqAYrJuYQdyD3nrAQ9CNAiUgEUxCSebILbi3R9mOwNtPJh4R8ncVqL18oAwg1rfClapLMpE/Iy/RoAX6ULE88O7ztMmIdN3OKQEAkTrDAUfcTHRCaAthIeUGTEMiFSpBDoY6TtA7bv2PQdfbtDGYjBM59OOT8/ZTGfyb0WIjkFXF1zdLKgmkw56Xq6Tc/t3TX37R3r1QZ8ha9qYuvFCNuAKqAjZSghAzhT0mArkV3mJOsqMpRBC4ik0AIeuapMiEXO2G22bFdLVPLCXDWK2imqymAMxBjYpchue4+zSgBlVxO1ZRcyMUf66Fmtt1I8Z1W8+zR13QjrtxTAoyxB5zJxU9zd3dBUjouXL4ih5+b2hl3f0cxELuv7wKSqCf2Ou9tLZtMFk+kUrTLbyrC+uyX2O5rKoWKQcKUYxScjRAkDMmZkylqtZI8u67+c0D0YnpKsp5EEtiRHF+b0uHaUZ04pWwJErATExCxBEoJ0Yl1FyrDebtlsNsxmc3a7Hcv7OyrnOFrMUSlgtHhMfvDRR6gcefP6JZeX10Rg03UsNztiMsynCxbzI/q2Y71c083mzCYzFtayu37L3eaOmLfYUNN2iW67pe92VDbx4PSYZ88e8ejhCZWDtLsjN5BtBXoHtgftUdoVglsen6UY1oTNjmpRY6oSurTp2ezu0WpNU2tUNOxWiaruaO+2rC7W0Fp2zZp6FnDTGl1DTC2+W+NDj64szmZ0MmhX4Xcd2+UF1lqOFkdYmwm7Nf1qSe46rBLm5rSaEZojkp5wt73l4u2SdmvpQ+Z2ecPN7Q3WHfPkcc3x0QJna7rdSgZtesH6pgN7QX3qaGPGK890PmFyPEOpqvjXKlCR3K2Iq9e0d89ZXnxDu75hvmh47+OPmM1nZclx6LBEtXd0m1vC8oYHk4rT730inp5mwcQa/HZFVR+jTC3sdmAxP+b3/uCHbKZz3vzj37G8u+V4kci7LWrV4Tc9WQXstAY1IbqG6uSc86PIw48f09eK7uevWF5d07aBTbfh7c0L/u7v/pwvfvPXrK7ecvnVZzxetFRPZjx8cM6zDz/hovuSqzbRLhOoOZo7ar3Du46kV1SLwPmzKcdnlTCaZhXqfMrty5dc3azZ3P4a1e84P/mYxj3mV9+85lVc4SaW62VHyppmUrP1kYv1Gn084/TxCRWR1cZz9WrHP376gtcXLd/70R/zpz/5T/zeBx/w3vkZpt9yeu744vWv+Ouf/ncuV1s++sMfcHr2iL/5+0/xEWK94u3mn4nrFXF5z/Lumum84en5I8wuodyci8tbLm92dL5iu+0gZaa7NwIg0nJ2ZDB2x9dBcb/LVNMnTN/7hG3lyLNnnD85IWI4fmKY2xlRGaxRxO6esAmYqsFMJvt9KElomiIAEYvYWugsCexKGSya9VXLP31+zW82PdSOZjplpeAIcAdbsKgNyj6Yh9pIj42NgDOxoHYGFFgnA60hcVErTVVVFNWasNpMaeiyyJQG6VZm3zgWOyXQkHzi7vaWF9+84O3bC0JtOVkccbRYMK1rZtMJMxQSspXG45cxfhl2l77sW9jf+CoVjjDrFeyy4jrCVkFQmfu+5eJ2ycsXz3n94jnLmxu6tqX3vZDb32n2hnpJ+g6rK4wqAWWyoJP6LaFbY7VnMpEBdzVZEIigHdq6UQVijRixR9+DkYCzoA27pEjaEqOwXrQ1e4Ds4NMd4BzkGAl9X1QiCuFYDp6c/75Ia/hlqtTGQ1BT0c0wgLhSQ1ECBQJ9DMKuMUVqpoRRJ99cyBDWiA/tcKi5gCXs5/p7T7wyzhpqJ6ULcy0Xj7Jy8QvHS5d6VABTabpDSMSuJyRN6no0UWo1lcdzN9SwIHI7lfI4hLZGrEVSLOFtMRa8S2rQoQOJRcZH+R6dYvHg0mPv4L0n+gDZj328+PkidXqOxIH8kPd3rzCpGPsW+Rmp0YwSKxiVhe1HOmQW7u+H4R+kXcuj/6CA9Kb0LXJdUwLsMGBktOvJB7/u2/DJAEQONbUa8JFvgUYohSpEjFzqRmUMRrmidtO4WpheA/khpwP/eA0pB2zlxAuxSGy1KdJMo8dAgdIpSJ8b03hP+DEYcqizeKcPcCVVOLHvDwaSgFVGlHUZUdkUObPRg0+6xsc4fn8q0ukY92QT8cgb7u39czD8PfysUvvrP17BLGFv6uBnVD4AIZEUXuk5C5gcYvnsAwAu/dzQ7wzHMPTagh+9C7IJ8UaP4SccnJsBqBtAxgGEHJ/b8pwNoGBI7/bIw/3624CxQw/AQfEkxIFU+jl5ZrSW8+8aVUrKwePkgJFKFHJK8TdEK7IqnnbFeiF+W8b/rdfvWD3VCAyOj3CG4bEReWPx3wKck4vQ+sB2u0VnkYFoY8ipJ6Y1u12PMRVKWQFzQsR7YQeZViSzEVmTkges+KfUykooQlZj2mVTVRgtZGevEk4JCb2qLKaZsEmObduRNoUmaypUTrQ+0XuRCoUQShRwIgc1FgzaSFJTOpi0hDJlGW6DHMUnYqD96nJqVDm+qooEIwVHSJkk4ldhG2rxkDOJcQPUAyEs2yIpliwsqzRWiSZb6MXDcRzekKlczoFGqdDWgjZjumeKwjDMKZBij82ZroVWaSonSZsyIXAYZ1AWvBd6cDOfClWz3WJ9pNJWANuwp6EnbfApEDuPj2FvBopsJD702GAKq04RwrBAUORZjJuRHuCanAo1X87ZwJrTSlE5J8m/zo5a/mGj1ciUJ2cBEHzfkbwnWCNsxxypnQWV8T4LcLvZlAso2+liMpPJoTJYWzwfykJgUcLIHMwTMiNAJLJK8euLJSV0SJBNShGJxKxR2RZ/B40xwiId6NxDkZDHTajo+rWW4ulgKjj8c4wZ7z3Be7z3w6mUDafElMeQyFokhH2IRBKm1+xsS06RXgmDLhpoKjE57nPCp0QMvRRGKRZ2nyaWTQetwRmhGVqL1Zrl/UrSZI2iz0K/jglCFMBg8CvIZfPQVkugRaHtO2uLeapQzVORJujCanNOJNbGWpHG5r2MQcIGCiO3+DLEGIlBjj1m2TwzCauGSU+W4s5o2dhSecjLRiNTrdIXFJmtHRqBKIt3ZQ25Fnmg1a0wzAYj+QHiLdfWGBl+aMM7G84Q3JCHynVcf/f3hhQTadwsjdHlXs0Hm0wai51hejP+7kwxiGVv9JvlPIfk6bwnZ03rO3rf46Nnt1mjYqCZTXBkaq3RTrNNnt572bRUwpjE8cmc+rxGV4nd5Zrd7Y7trmVmFqgsUhxdppdKK1Qqk0mj0S6TK0PGkbMu672wXVECTGZtkOxWRfAChibf49sd/XZFt9tiTSn6U0ZFLewqp4pkSRjPfS/hGVnv8NkQlRN2rJbWiiwr7JBkm1MUH58s/iHWlHToGIpsFELf08ZA2G4k5MBLUtl2swUUlauYzmtqa4l9R5szwe9Yre5xyxsubm/Z9b0w+3Iap4Eg+1jMma73wuq0Fm0LNzrFUrgW9mTeJ2WHGMc0dAGT494qYGgEFfsC0BgChpgUKIt2NQSRlmgjz51SmuVySd+1qJw4fvwYZzVr39P3PU3T8PDsTLwiq4qryzdsNy13918zu75ltfE8efY+JkvQz931HX614XQx46Onj5mcntOtt/is6LY7VpuOzXaF9x21NVxfX/HZZwGVNxgTyCYyaVf0GZStmC9OqespxtWYugbrAEPfeu5uLum2O076BfOpJW89aSOMTOcs1taEXtOvd2yuV9zdrQktqKmlX/WEzmM2K2ytsHXC2oSbVOimxhjIuyVKVTitmNpADC27ux1Nv6VyFbpvae/u2fpEYxv8tid0kHqFZYJJios3d6x3LUkF8fYKgcvLe2JUnBzNUHrC0eKE8/Nn3C/XLC+uOUoNUWluVze0i8zj5pSqqRhnt7mH7g7dXTIzK/SkZ+sTM6tx3tNfXxCXN7hJQ1Vr0Dt0XLOYKE7Pn5CNEYsGvcBUM2xjStlRFAApYYxmcXrGFFCrW/rVc7TesL28ZT59j8rNyfUcqilQ05malWp4Njc0j85ZrW65v74ldSLT69oNl5cb2v/3M8L2nrhTnE5PmD21rO6XfPDhJ+zMQz678by5vGWyeB9jpnz/O5H/8DDx9z//e175npdv3/D5Z79gfjxlNj/hy198zoXvePjJJ1x++Sm22/H4aMr3vvNHnD7+MT/99c/46a//ilffXJOCzEuS36Fsxer+lvvbt8QnR6xWO37xD5/y03/4nPnpB/xP/+P/zLMfPOF+ecH/+Zf/K3/24x/zk5/8hI/P/hN87miPptjZEZ/84Ps8ePiAH/zZT7jZtOhKsd3ektdrzKrl+Wdf0W46nj18j3az5fa+o+tnxF6hOsXMWmLuUf0Nx9Zz/mDO0dmcmBfsukinZkyOzvj4939Emh+R+zt8Vpw8mIHaoEKLUpHgI2Gzpr2P1JNHzKyWQM0QIHRoByCsrlyV4VeMhF6CgiyOft3y6vVrvrKKo8VjurrGK1GMDdEp7+BNQOlW5d7JBQFRAzi3/0Zp6KMMwlUS01iEYYopgEkGpSxixg3gGDY+aaLNiCopwHvP1fUtVze3GGfBGF6/fs2X8xOev3iOLV6uKXty8daVw1cFWtiDVWNLq/ZfUFBUHwNzSNMBywRLn/Gp5/ruli++es7XX3zO229esL3fEDsIoSvBbIoByOCgFhATeyuD0ywAXS6sYGLL40dHNO99zGZzxGa3oY9RnlljQQlBQLzHMjFUAiJkhQ8DcyWDlsGjh4PPKfVXLsMpSoiezprV3T3b5T0z4wCN1g0y3TX8/3oVpvugAiAXgDAPfU65ZVIutZzUoQOLKKZIHzwmDSb0iMTVi3XMmFTKoMIpYIi1aFXY6Glg8Em4lOyNe1ABpeT3FDbhKCcV42WRfIaE1iJfdVqLjRAU4EOJLHX4uSTAnS7sRqPLtRzZQrkwwPY3WUpRHIlSfnf4rPafLRUQU8LSIskiA+jxeklNLao1uR9SiOONqzLoLF6F1gj9IedUwMW9B5361nNweJ7kORwIDyNMfqD+2P89XNucB3seyAMQpOR5SwfvI8DJQbjFQC4Y3/6Qcbm3hRL5s6NCi1pGyV6PKYCgKhY5CZQyGJVJOTAkrKZBLg2FCCJg6LcH8AOcrrXUPWO9njMx5XePjwKEHXy+kSEmD7YoX/ReJjsw94Z/P/zcwqTLMHq9qbEPHF7vSDqLfHToTwYJ9/BZgvfvgGOKd6XF4v+WDv4cfK+inB+R+lZVNQ4IDvvX4e+BBaiUwhoJjpQ6No5AXhw6ofL+toSXjedzYJey75vfBaB599yXnx1JMCPjbt9DZWKxA0qjH/kYRpIDY4rveH4Tgz3RAI5CWXMO1vT8rev3b71+Z4pr+Qd5iwM6q9zQ0lBWlcMoTV0X+U9OkpqKE/8zbfAJwqYn5Q6tKrStSgOR8akY4NMJkq1FNrSYNJi+R202tG1HjmUqkAT86ZuKyiLGmYiBrDagiyQnZU1QhlTMsFECnOnCvEINdM+yYWkxhNdkUgoUqHAUr1ImJkmJrDGUR1GMIYMsKhRdJJB8J8MBpcQ0WykxCC4sKd8FkpZzIGaUSqaEgQJgaEH65UqjsvhkDX57UB5WEC8AJci/LiCRUG7UwcoJlPQZrRR15VBK0fc9pMJQKs2rD5J81cZigOpj8Y1TxWDTUGlZhLMpaSgadFTi6KY11nqE0CETnzFZpejUvfckhJ00AG8qy3RKG4P4umV8CHJ/KLnhB8DFWkuMkcqJOb4rnhO2MIlyinI+bIYgBVJKieB7+t4Ivb9Ujd4HupJOqTQ448g+YLXFOjcCc1rlMn00ZYEbpjXF5NPokSoefSDlKEaqedhiyqKLInhP33f4INP5mBUhBipb4aq6GMLvI9eV2k8hhE7vvwXQFSCqLJZaCWystaGqGpn4BU/MUphYV4DHqhItPlLMZhnpoZ0q7EdV2H/yDGhjMVVN2gjQFjISrmEMgUzIck1NLXJalJUUSGNJaAk5oHgkpGGRFNZmlRVVZUdgyxbASqmhHJBJmDEaYy3OVVS2wmhFzlEAlOzHTXlgRg4A3VBYUoxbM4Pfxp5WPzyvKpQpSC4JbmUqx1Cgai2Fove0fScpQEq+1nsJUJCiUza1VBqSwUdvkJceXtfhec5GU/DIdyaIY9GiJWFoT18f7gv20gjkWRmMbIeNUA+FluCRci6H2PayntnCmFJEamdY1DMaozE5cjyd0KjI3dtvODpaMKsqpq6mmddEv+X67S3T2ZxHDx7z8GTO6fn38f1TzmrH6WTK5csLblcdut2IZKI87yUUSVLRYpSk5qRQKaKSL54cFCanSIYE8I1Fmt9C6FGpx5DkeDUokzEGHAlCT0yyNkwnldzbxecyBk/QGYXFGUMytjAkBQikFOeUQlIrkRbHIAWbPOOKFCLC9xMZa103qGiLnELRVAKszSYN/bZjt1pKE+kss7ig29zT+0CLJoQk0/UifTdK9q+27ZhPG0xdY4rPRk77ayz9hoDTIUYCkWRKUVs8a4aCE/YFG4piyluaoQy2Etn6ru1R2oh8HMV8vsBaw2p5j9WK1XrFerXE9x2TSU2/m3B0fMJ8NmU6nXB+/oCvn3/N1y+e013dEZOj62SAcnZ0ytXbt1xfXhO3O47rmpnT2GZKDIngZUrrnMU6S9t3vL28IoUVRgVyDlxcX6Eqy6bvqCYNH334IWcnp8wXCxYnp0Rj2Gw7bm6WvHl9QU5wMlswrTRxe4dNW44nYE+P0HaOyxrNHS+/+Zqvv35ZCsAaaxqOTqaQA37XgunRLjNdNDij0MqR+46wXaLQzBvNdtVz9/aGrppw9la+ZkcAACAASURBVOARVdbUOeKD7A955+lWO9pNT1NNeHC6YNe+AiJnZwuwx1zftFzfvWXb3dP5E6Z1QzOp6foNvl8T1Qq8F+bvbssmZFZvj1ikluroRICNcI+KS5xe0eglrvEsVENTT7AxsL26YNVvUS6zOJ7QOEXfrnDTmsnZlBASftOjqyzT4xowvdC7dak5VGa3WZPbDcdnJ7z/nY/ZLF+xaTOub1D1MUnVZDPB2RnJzdnpCVe7Lfe3ay7fXvPVixs2qx0memq9JPQt29uOOmWOmveYNXPm04rjoyNuty2/ennBi9sdd32NtufMTh7x4cc13z1b88vPfskUzcVFz1/9zT/T5Cmnkxl/9dN/oZ2espjN+fLTG8J1ReMmLKan/Of/8l/45IcfsPtffsE/XH2FrhtizoSuxSYNb2o2v/oZ+Shyd3XD55/+LbdvOj567wf86Hsfcf605pf+Jb/WK1LdoY8s9fFTninN0fd+H7eQkIzjozPc8Tm/+eozQtTMZg9Zthfc3L1mdXfEcrkm9XeovOXy9g1JJT48eYTZwuRozumHD0G3PDqbs+07blY7Hhw9xS/h8v6eoDV3ly/YfrXmxcvP2PzoI/7zf/2vmK4nrO7pwoY2Z9zkFDN9hHGnEh5DZre85uqLn3NiGo7rB6SHZ+weT8R2JHYQeiyqeOn1uGaLSYl+PSVuIhY7rC5DBzHsYuMgfM84GGqjSIpeSHWmDKB1QpVIBfCgPKRO/iBAlcKArsnJFPZ8DWiycsUegf1RZEW79Szv7slK0TQTVm3L1cUVbxZvuLq+YrfbsF6vOLcJdJReJYsX6MDs2zP//q2XAIcWCe3KStNnuN5FLnYb1ttrXr96wVe/+YKXX33N5u0lu/tALCqjUXL2zu8sKZGoYQ4tk1bvyX3PbnVH3y158uSUjz/8iPv7S55/84rNtmXb9oQ02M56AeNyoq4qCD0hZtmLGQY8BoNY/QxDVEaVSamlYkIl6LuOT3/2T5jQ8ezhI56cP+J73/8DzMxCdr/tBJVLPiBnxQKm9Cs5s697gUP+3rC/Da+YRKXU9uX+SBkfwzvfIwqRolo4sI4xgxw2F4uHmArGW5Q7pZZXyH5J6cekJ5P6VSUgKXLMosBSlto4mkoTQ2n+41B7KfZJjwWcKmCk9wKHxrgf6kWZsJOD+F5nEiHtgQSr9Hhe9lJgPVq9GKupBlUHAhJoVUgfRrxmowoSZJHzwYBXkZQWK6CUiO9iceUalP8dAGUDMK20fM49hqDLkDiN1zQPSPZwK5NHe6fhnhj+Hq7+iEgcgExaDzYjw7cfgOdFko0SNq02ZThe+pnO9yUYoNRMaQBODVrBdFKPPcQh42x4b+fcv5KTwh5kS2qvoIE9hDL+9/J7Q95/phG4yoOv//5zqaK6SQfvJUxLNQJ0qgwlvg2AHZ4bYbYlfHsIwQ/g0nBuk6zFh/jBAKeOz60ZQfsYE4N/pPy3TI6pYACDFLf6V599APcGH71BSuycKwDdHgDNUb9znmJkJCkIQ5ZxjRoGI//WSx3cW3sAkhHQHZiOShUEKB+Y7TGEagy/LQmuogYp+nCjCuAJBw/PgNEVyFn/luMbXr+bfzy+2b/ei3wQgEWXaZNzTowRvUHFSrwLXIXWjhQDMfXEkLDGYWxFbR0oTVIaHwNtL0CM+EZBiIG2j0TfyWcrAJ1KQh1eGU1tNVXtMEYhPisKZXfgOnpbse0iofWk6IXJhHiqpSym+MqnUa5ktMKZYfIRMIhsLiHHGBWAKdTnApKoAayUgIecE1kFtBLfO1t81QKKPhXjz5iJShFKNHVI4geVyjRFOQdJo3yUtLgskjwVc4kcNiXNqPgFKTEmVcZgnME6g4mxoLhCsTTGlBAMU0zoPdOqEk03AjrVTtD+lAI+BPqEmMSmTLvakpQw08ShNdEoix02PmOEbITQPytncK7Qw8vDvmeBiUw65ojKeo9WF9DDapG45cKLDikRQhwXncGDoe/9OCnKZfIlkwtVFsyMsxatHKmqCcGjlWLaVDRNjdHQNDVVJY9B30vyX1M7JvWEFOMYVJB8T9d1BN/ji2ci7BfVmGVjHBhvkYyua7TWOJVwRgw3ZSERvwNdIqkHWSpk2taMU8TDzQj2U8CBKXY4udnr3PfTmeH7RAIt5ziECCbhdKGaa4W1FbaqcArxV9QC8iorJYSKMiHI2mBswuaKKmq0DePnTUCIieV6ze52SaNrUhbPqUhks+vIJrNtO3a7DmMN08YJqBiGAAW1T/FFpoUZAeCrYlxvrCX1pWAejPCNwZmqAFQB3wugElWRII/nhBIoItLQavBuzIzmo2W3GacfA7tPfN4kdS4PBVUfUSqPfiFKSVqwJxeQjPH9cx6mMfsNPBd5pyzqal9gDUtuQdwOluCxANMaMft9B5zLpBgIqcTbuIoYk3gGBk+IobDDyj2W0ii5kJVCNhmjFbWxhJDIvmPeOJ6dP+BsPmNWO05mE6LvuLx4w9mDM+qmxmcJlNh2HW2Y8P4HH/Hh0w+p6ormqGK7u2OSIzNt+Ln6OdvPviT7jiiWYOSkyCHjfcsmt/QkVLaopFDF51SNFHNDVgbxuy6JtjlhiVQaGmepK8u8VrIOVQ22mWLchKQVffD4PolfTN+hjcXVFcmIpD0hYTFmuF+GIUceJDgDC1HOlXYGpcQnESUSB6MMVg+SYwlPUlGYbc4YovdUC4NtKnYx0nYtyUdIDSoFiNJEhZjJxuJ1BmvG+2kIfaE0HSgZZgzroDRRYjkQUpIEz7IGDR5+EpqTRo/EwbNmKM6yKtNzNCGKNFobh3UO7z27tuX4aEHTNDSVI4TA8u4WozJNXRNz4vTBOQ/Pz7i+tGitxuf14vKa2+tblsstjx495vj4lJu3V3S7nlWIvHjxkuNFg1aZajYl9AHjPfWkBjWna8E2BjeZ/n+MvVmzJFeWnfedyd1jvGMOGAtAoQtd1SObrSaNZpJJDzKj+Av0N/UL9CCjiVRTbLGnKgCFxJDznW9MPpxJD/t4xE0UqpoBu4bMvBEe7sePn7P32muvxZAM37+44Lff/lDWXcuTp09x2dHebTk5O2G3a7nfbHjx6oLr23vuVxuImlnd8OhoztTCRAfSVNOoIxo3ZbMduL7e8fLNPa/f3jGbzalvt6SsGXxPVWdy3oEeqGqoSNSuhj7g12v69U704JRoLVYx09/ecd9HlvMjFtYSnJb7bhSnizmxyUzPHtFMpmSdmWwaposK7TQxW3bdPT523K1v6IaG7W7H27eXaKU4ObGErqeuLI+WFfe+5+btM7QOVNMIMcDuCswOxQaTtrTbW7b3O84efcj06SPyENi+vmG1WpG6ijCpiLEnxUA9meBDoO0GjFf0vaLKItMANSRhIOzaHS+//x42W47JBAJH5+fM3/8MFu+x9aBcw9zN6JPGzRacffARw+Ybvnv+mhcvLvj2+R0311tyytQ6MG0MU1dzPp/z6NHnTKcf8NF55OPPjrgLlvRsS68n7LLneDJnkxMX99f0S5EjOZ2eUh0fc3O74e//7tew2fLtqmX++RGvX17w8qs1dTjDuprV+o4vf/OfGeKdaK+FQLZe4qqUYRig3dHfXvHm2Zf89ptnTKzif/2f/xc2XcPN6zecPn3CF3/yR5x/cM7R4kSe0+kpi4/PmdtIVC0xRHZt4ofvnvPDs+/oB8WbH+64/Po1dpfJqcLV73GzukHFNcdHDR9+dMYyWvzFlp//xed8/Df/il27Zrmcs42Zq3XkbPI+u9ct5vmX3Po3vHz+W26eP8fOAq75kM36lpffXvP6u2/ZttdsUos7PUepp0zdZ8yPHjOkgburZ9x8/w88NUf8/PxXnP/Zn8DJDGUVykZsjNguo1Um2QHyLXXrccFRb3sqbzFOkpRDNFOS9gyjEPyobZBzJvie3ndkrTDOoZzDagUE+mFNv7sjxY4ce6LvyICPicEnlKowpmY+P+Ho5DFKN1B6WwpvSorDOdO3PavVitV2y/1qhbaOn330MfPlgrZrub27wVSO45MFk0lVdI3L+RcAg/EyHuzPe6YgwL6lUIrzrY9c3qx5dvWWq8vvePXDt9y+uWB9eUVYrRjWkWwVlVKFufQj7SZk6MYkdF/B84HYtaxurri7ueDR4485f3SEtj2XN9f0IaKCR0WJT0ZyRY6BSNwXBp3WBC2tnT5HIQ7YMSSScUs5PfiRnGS12vAf/6//yK//7r/ywZNz/u2//mvef/yExXRegNI/8BqLQmV8VZkfoyTOAeA5vA5dA+LabksiP0q75JSlWFrmmfAB1KHQO96/McZLqRTt0j6W1krIDQHR8tZ5BAY4nFMuMKxUwwT9LB0zTikqY6XpLUUiUWLEPF6nvEZwwnu/LyLvgQvA55L8x4PGuUdJzrM3kMuY4nwsxgWWpplglcPagDEimi9SJNKeqqyMoTNG2ve0FummAihhSvcYBYcscyAWcountOGOA/Eg/xhrmaaAkeJCqohqHK9SqC6xmxxhlLcpLLpyv2KMJKWkWKwlj9Fa7xl1e+22d0CkMU5mr1UXC5iYUiSqhGTbQTTYigkkBdhSWnhiSh3AHmCv9Qbs75W1dg847efTOIdK/PcwT8ul22z8/d79Vb+rZZdLzr8vKhRESGn9znvHY4wg3XhsH6QF/GGX1WFcBH4e88PDo3gAvvYmCipJ3vSgRfWnclOpXctEeZiTjmjVgcV2OIfxGX6HSVjOJ+pCPviJ5/6hFl8IYQ/ojUSIdwDa37N+7Mf5wb9R5t/Dz4lDci4eBcKMkxbb9A5zYrxUkdopre+/+9X7YsNeC/En3vPw9Yc16IwpLAoR3445IaYHcnStDN57+mFAVZoheKnOF5Q3ZofSjegYZNFGUzqWzUCAEnEZtRLwu47BewH5dKZ2lhQG4tATYyjI9oPNIkFIGpOy6FplQ8yJ6COxa/E2MIRIGHpi3zEKDOasGBIFIHkX8aa0PlVaoVKLRqN0RdLSbidulIaQM85WJDJDYb+lrDFENBabAzp5GWAtzLaxMoQaxV6lnhCVAFtqFDxLcq0jCqyL2EYi4GOk0gmVNCFJWxcobHmwQggEJawSYsJpi02qHDuJBqDV0o6W076VFIRVVdeV3NN2S9aGSdOAUmzaHd4P1KbCagpjRUACbYqtdk4MKdCFQJ88fe8RMw9d6lFCKdZazt06J62gypSJK3oXDy2QR9FWHSUokIoXZALOQdd1B8HQwnMOKVHXNSD6Ds46dKUhS7BQO0NdO2IYyiYl80AVE4JJU1FXDuemaMSSPiVHGCrC4KQSo8H3AW003kd2XUcoIGmMkU3boYcKZx3BZHqy6LcYYXSGrPHKlfawTFM1pQVBFleFRhu3T8Blw86lyiYLWyoL2mFRzXsqsACXcl9DCGIKYZ3EximhlCVn8D7IMScVVV1jVaLKCmMzPnqCyoXxVjZcLQw6Z8WcJaaMsRUZGLwnKYWPEUJPiND7QFIGnxIpBy4uL1EKnjw5Z5hOaCaOmNLeWWvU1hvp2aLJEUn6ILhprMWHgeA9fdfhq4qq0oxOqsY6AReSlrF8EJQ558SYgLGSaDAkohY9SGOE3RpCEAfPlEg674MyCSRlvvV9JwBwYYA9BEpB7okfpN3PWgkm42631zOUIFCc8bRW8jwV6vxBtFa9o1shRy6gcAkErTWokngYI9oredQL5UEQkw+bnLi+HiqZIxVbU4R6UoIYiN5zNGv4+PEZH7/3lKNpw9G0obaa7fYjMokhBEJOuNkUN51RN1MWy2MeHz3i5OQU3cB6c43f3JF2HVNrmDpHbQ1p17FrPSlq8hDxwdMbjyeioiEOgdqMunuR4JNQ5a20X1NWR1dcTU8WExyJRWM4m1UcLyYoV6NsA6Zi0w+0XUfXO9p2h3E12hkR5u49wWe8WHDvq6wqj/dfFUKyFA9SzgIcqmKoFIuzedGukYkwgnLC+NxXJsNA326pjWU6qVBE+hjo2g3J96iU8X0vjAebyCngtTAbjVaEIXF/r2maivlsKkDxMDB0AyDaITEWVqQZnf5UcaUVNrTJh+1fKV3aYSPaSQLQD6kAfzD0QarL5doF21f7hEK0N0coOdO2LVfX11zf3PLRRx/y+MlTKmdpmoaj4xPOL695+eotF1c3vHr5WopYMeJsRYie27t72n6Dqw1Lo8BUJKMIKuNzBuNoQ+Tybkc/BGoLkNBW4yrHdv2auzct88mE+XKOmzasuy1d8BhXsWs7NvcrTE5szo45ndVMTGDbgA4nhKHn9W3Hb5/f8PLyHq8qgnJ0QbHaDWRWnJw0aBVod3c4m5jP5qigiKstYdUSu0S7DkTfM5tOUNGwvd6yCvekRwOL+UIKjmisAqM6MAmGa7A9zdSiWkvnI9O6YrFccrTLvL28oMqW5fExoY/s2p5KW7abnmt1z/nZEYvlhG0fuNvd0J9OIGh2qwvWb5/TOIUaWobVFp0ghZ7N/RuqiQHb4LRBB8fN6w1vui1aZxbLObdv13gS1WTCbAmmkuIPswomc9rNmm51z/36nm59y9JO2K02vHn5NWcnR5x8McPMzlBZ9G0p3QtPnp7xZ3/2K7oLGPyaZ99dcrfSdINj2ljmzQJdaxZVZjFpmE+X6CqzHW4YMHz8+Z/z+d2E//PvvsH4DUGv2bYX3OxaLlfg6p5fffqY2flT/v7X/8SX3z0j7HZssIS3r9hd9AxdwpSeiaTveP76/+afv/mG7+/vSJNTUjSYAEpZOh24jBX/6dkrLvodCzdhtjxnsfyIenHON2++Ql2s+Msv/pLBzbn87i2VViwmRxjnQGt0DthqIIQrju2U9+ePabsdr9a/5ubFP3LqTvm3/9N/4NFnX/D1P/8/PPtv33G+qPjTXzymzpb6T8/44C/+hubJR5zqKYaKI9PwKDtoLcOJ5/EvP+Plxd/x3ddf8ejsKbrZkHXH1etXXD9LfPfsDZt4w1245374in4baTjB1k8IzTHu2JJZExcT/vKPP2b2/jlKDeTYkrKH9Q7/Ysu671nNLWfLOcr16BhZtnfU/QxrIyl7VGm5UihplTcSaxM8OQdZN6zMhxgCWYOrpQ0NZK/L2WL0HJUaMgGtPUrBrDYM3hNzwjUNzXRGxuODmKiNupw5g7ZKJO5QDP3AZrfl9v6OJ0/e49NPP6Udelrfo7XiaDnj/HTBtLb7GFkBKqt9Ufl3RbjGTVraIXNpfUxa0e56nn3zA99fX/DyxdfcXb6mv7sn3t2jNltUrzAECEH2n+oQm+9fI5sGSq4QQSv8esXN9SXOGnbdBh89UUWCkuKMqyuSF0a91rYMtcH7nqay+JjpugFMRlsx4hpCINlGGJOA0uJYmscij/Dt8UPi9maF36zRYWD181vRJ4peWg/+UBKq1VgTLT/lPmlNpV2RQfLowqhBCXgXvIAP1lrq0kaYorTEpjI2+/axByBBLG72SimsNvtuilEPeGyTSyqRVCSPoA3ChtdKk0MoxTqRe0jaEzLleNIarnOm27X7YlmOgQR7QGd/+QVg+R1NLPWgRS5niVOLSV3tHE1VE0PAZfax8iiJU9c1zKbk2Ms560SKYLTfgxepxNzBeykml+8au29GFDEi5OhUWFBWgRvjTaMg6wPgu5+fBUzaI9e6MIxAGFcFlDeS8+5N0BBwLuVUOqskjk1FkkXnjC652t5M5KcevX0+FA9dAmPca4XQUmmNVoZKOdGaG68hFeaU6ELtW82F3Wn2phcyb0XrUIAo4eiSYTRTEXDnXcDoIftuBNaAvRbZw9+llHC6GAiOlfwhFNKCETmwvame5Cxd1x0IHzkTCpNUAKSiza7fPR/54hLPjrk3aq8pqzUPgLQft+e+qw835qpycGmTHkG9n2ztfXD+I/B2AAPH79cHrb6gHnyXKrI+8m8xxT0AvP/hkPOA3N9Rw24EQcfjPRwTIeCMAHhCj8h6PtwjXc5Zl2c0J2G4jo7QWhXy0Th/9s90KuuHQui3v//1BwE6OeDY/sXhQSzIdDf0bHYttVMMXvTh0IohJlofSHhsnaidQ2XRQDMq44g4NJVKaOXRRLQKaOOpUhATCq2wOhN0Iihx5EMLe0wVRlAqoo2xWHNqI7TUWJLRyWTKRINOiTDsSH50rJH2qPXO0w6h3KCi+VReRkEeWnGAM4mkavmtEt0tRRGIzGNdQ9hQuiSMKcGESrSTotBULYX1YsUdUilhN/goVObDpBJKvnUGHRUmObQV5l4u7cAqQc6FfkzpDB/xvSgLi06yaUUtunOkiNFZKNw6M7QCUNnC1PfBk42SRE1pnGswtkaYIg6nwRhHbSzaRPIQcMUlM+dEDqG0WQkjxhUtMoVoMtR1zXQ6xdROtK2GQQZKq71Yq2ADheaqRUevUgaMpioLf8wCVA3DQNu2WCutFDGJ41AOSItyqWAYI6xCCug5btZ7gfdy/1OMZB9og6fXwtyyRR9MIf0BqtCkjVKYWglYVVpFMRpXNeSc2Q2ebihuv8mT4oDJ0voZlbQv+q4j9AM5KmxjsIVxJ526slnuKxb5wOoaKxoPN9afqpJAWTCjBDSVdUVzQWGtw1jZhHQxG9BaCyMScHashGVUMjKPYiYmcXAdejHFCLpsMCnRewG1ZPOy1JUja09UGuOljfju7r4EI5H6gw+YTOsiyGrF4FJplJaWWKVGl6QDezKkiEHmgK2KWysUR0slAUCRPQkxic5eTj8apySs5LHKpiTUVFpjrGgkKmMwRthmeqxeKQPaFlqypnaN6CQohQ6DbIpaYVOUIHdf/5L5HGNk6Ie9ZuN4r2QffFBWVbI56jS2tJRzRaEKSzhR1kgrDrWKhFIC3lij9gzDsbUipzHI1vuNQao9AryaMges0SIenBWKxMQZlk0FQ8vV6+fcpsCsdixmYiwTY2SIRRvi3lE1U2w94VK/4qo+4vT0lGpZUdcwN1BlcZRrjC0VVtlbQggMfS9sP5fxOeJSJvQeVxkmtWPazMQkwVWgNEOIKG2wxjCtK45mDR88OaVWmaOJ5WxqWTQVQ84kXeOzQt2t0VkxrRu6upFAU2V2bU8YEl3s8F3RpVMWraVVPJWgRfaYQ3U+UmjqKpWgSpLNqBVDcXdWWmHrSoxplOyRWit8P6BtwhqhKaQY6Dctq9WKNnhi1mjtCCkyFFakc7aAzLDdwXY7oXEORmMVJQUFrVSZy+K6GGIk6oRKEvyGGLFjK8C+yjpqC0VSYUONwbYkTQatxyBK2vz3Qr8anBP9SK0UPnkSijeXl/z2m2ccLabMF0um0ymLtsVWDcY1uGrC8xcvaXc7tNZM5zN8u6Mftgy7DuMhGI2pJuz6VtiPKRJjYr3ZsdGSz04bJ+07BJpGo1Lmqtuy0j2TeY9tLEElqtmEeVVTGUhxxep+RWxbhuMZc5e5jlt29zd86jPXneLN3Zq71tNUU8xkScTR9tJKr3TE6Z7kI7pW5C6R73vCtkMHQ82ELhq6dseqHxi6lnY9UDlD2Hq6vEMrsNaw2+14+/aClBLz+RLjplyvIqtdZLZo6IfMZtvTtgNDH8kzjTEN9aIhNwrfdoS0ISWDthOMrdG5w9mEMz27m2dcvPwt7f0158tjJqamMgY9mRGGgRgD3eaeaqrRuqayYguw3ezIKVCrVAqhIrRs60TyW6I2cHoELuHSCq03ZLtDuS2zKtOcWWx/TGWbkiwaajsh24QPLV27YnN3he9uWEwdCz0jR0tdnXD26JjlUUMXBokDaGnXV3z/4iVDzkzsK7atxv7DM75607DbrTDaU5sdIa/4+pvf0LzqOZ8t+PjDM7KrCN2W11dXRBQhOtIPb6nClOlkiYod2/aGF69/g9nAD2+vuekmqOYUGx3D0IJ22Frxw/3A7svnuMWCf/8//jWfPv4FTf0JbTxi1UTskeXlxSVf/tM/cGyXVNOpPEsJ0BVa1ZArtMt8+PGf8fj4Azbrt9Sh5VwNrF/fcXoGf/U/fM75csOpe8FkFnj/s084ffQRtnkPd/whuT7B1McwaDk3bRlMpmoyy+kMfdqzfPSYiZ3x4tX/x839b1jdd6xXNfe3mbfrO67WL0hqYDmvmU+lnTwBjXuPPD9n5yriXGHiCrOKtE3i1f0VN795Rfrqjlg38Mljmqnjg8mER9Mjlm6gji2Sxxe+S4bdes3rH16w3Wxo6ooPP3iKcwbTOLRpMFYxMTPRFrZVAVcQUNM1YI8KW6kk+aWoNDGQCNJh7Qyi+CytuqMKWiaLpmYSMKVpJkyXC6rdluVyyenZGdf3t/RhYNfuUIPD6IDOXhg15RpSKiHGg8T7J18574s7KWR2dy2vv3vFm9srrl9f0G/X6K6HYUD5gInSfplDLBpxDpVFH+6AzD2IE0rmMdytefH117x8/kNZz7NoQQPaWrS1OKuJOkKUwmC32xKixxhhlHf9QNt7djERu45kJ2grsex44WoPtJREWwuTXWEwpqKqVNEFNrhKlUH6FygiHOL+QyI/7qnFpRL20hsJaa0l5/2/6X0ckRDxxFRMwATIEcbhu8ygXHTCxa1Ti2urktwtllgzqkQ2I8JY9OgyY0RW2H7sWX85ZYZhQCUvMy8Nok1c4s4R8BD9VrVv6RtfIzCxJ4sohbLmwbUK2KScw04mYhxY5pnkgRFKTmC0dBikPBpjHNqCx/+nnGg7L3nsHpg5AB/JKKJoPhEjZJUJCpJRgAFb9PQePAZ5BHXK06clbSerRCpFZLU/BxmDqETaSSstUjjKSH04Hdrf9+zFdx6vvG/pHM0uHjLAYowyX/JB1kmM+DTWZIxOhEgx4ZUkWI+FhALQGa0ezJkyn8pxtDFY5945H8nJSptufpehJsDZu3nayHLzo3ZiPoBCOSV8ibEeMuvGOVQj4Fl+8P0jOWN/TowAFIzGCQ+dicfxG+PZUUMORkaYdOsIwKV4sPj86M/j3w96dgdg8HfBufF84dAC/JAB+FOgpvqd8oURNAAAIABJREFU9fZdsJHMQUbrR7nw4dgPPl3Wmv0z+GB+HZ7LsTgvLGyl0o8+/+457cFj9L6wwYN8fHzPocWWP/j6gwBdytImOe6FKeXilGNkUdMVVTWhamYYLRbTKSeUFqMGHxKkgdAHdE6IJW4iR0XwmiHvCv1VxM1NYXntW+aCKzpEsSTVglCKu0ehmqZMDknAI+swzmJHxkmGaVMzqRzJN/i2FdF+XaGcQ9mOTdfTdwXYySMSDoqEVaJHp1UiESVBRxWbbAgpkCkut8oW/aIs4BmZmpqcpaWRJJPBqkJfN+IS45NCeRhSJJbKXNZCxR86Xx7euGcHMQKUxb1oBE3HRIoCXAqgIomZk11HNJyUTDWnFAOgi3OqUkp0tLq2aC9oOr8lbXZ7kXFyJtgAxlEphQqJjC2sMEVW0hZljMNZg2l7KaBlcVH1w0DXt+gc6P0gi4ORa9H7Eozaa32JNEABR7QVMFRDDqKZoIylnkwZQgRtZC4UoCNmYQ+aArpYa4UyHNOeMaRLi6OzFqMc2VWofUAnFTRrBKgIgyd6LxpDWpPLGuh9T4i5nKthyKm0QYLTxck2JjRQO0td19KyFsHnAWs1oTC7qrou4FYuOlwJpQ5iqOnhogE/CjgOtGqjNckYcZ5UkEnEAhzUdSWOaEaxb6EojJ6hz3stRoulnhiiBhUMOkoFYayaorK0plrZOGPK+BwYfCBlVVwmhY1ljLgOUVxu/SDsyrFVWchzSp4VDm11UnwrVTolLshDUDgEgNBWmHDtMBCiKq6mMjwxZXzMDIVVOjLEhGEYwekDeywdqi3sAV1bxu8g7jrqv6SUGXykqZ2AFA8qIrnclxhCYSoeGJBDYdM9pKOPr7G19dDmqvax+AjQjeK8+2rgg+CW8v7RMKJwnlGE/fXtPye3TzT/lKIyWoJqK58V52NZD6qqotYK3+64vtkSfMu8caymtXxfGSuMIWxhiNcMIZMjzNyC87NzTp4e8+TpMZOjOY2tmNQ1k9JiLmu4gLshRKnOG00qY19pxbyZcHw0Zzad0LYdOYssQEgSoDlrqZxlMqk4PlowMTCzmXmtqA1kn4uYuN4HalUzoapcmQMJayoywmYMPjIMoq2p1SgLXoI8KHqH7NcQW9YwhSXjGPUlhsHTth3eB6qmppk0sukqjaoyrhE5BWWkIuqMkVZk7xn6fu+6ZxTSIhIjfhhIIRK0aAZt1htUSmWfyjij9sY7trQAVVVNpmZQh/aMtu1olEgDjMLYsoXkfaC+n3sckgcxEZLEIitpNRnnpAQio+6pGH5kMqvNmtXqhvmk4fhowXQ64/TsDFM11NMZu37gh+++Q2nNbLlgsIrtNtL7DV0/EDdrtBnofSCjsM6RE7hqijOabCaErCBGdE7YYIhBEciYSokOiTJUVUXlKobes17v6FovQImq8aFi6z2hjQzdBqo7hmpGlzRdUjhXoZupuP96T4gQYsdiqjmeH1GZzPamI9x5fNdjlEObxPX1iovLK3IOJcsJHC1m7HYDIcg8sday3u64udtRNw3H1RxlpwxR2KUBGG7uuL/d0raR+7uOy8s7Xr644f33fsbjRx/h1Jz5Ys506um2mdXdW25ajzs9JseW3d09freiNom6UkymDdQZghLTg/WO9S6hhh6fMsZMeXy+pEmaod1yPD9mfjQjxIGUA3ndoY3GGQdXl3B/i25bVhdvef3mNX3fsqksjdPEdku9fFJMw8RZUA0e5Vfk7RWr11/z8qv/ylK1NI9OmbuGs+MJTz77nMWjBW+urtFGcz7XrK9f8OzZD1zfXHO+7EnqjBAyu9UtJu7wq1tWry1DHti+veVi5sid559+/R0xKS5fXbNtI1RzVJyzu3GErDARrAoYE1mv7ogejqdHhKHi7brHq4S3BpQjpsAEy6OTp3zy8S/4+Z//ax5//AuIR8x9w+znM3x+zfOLf+Sue8HjTz+nOt2RqzvIMzBigKO9RfVHNNQ0iwXTk0fMT4/55P0nvP76n3H2jv7tf+Ozz894+sv/nRg8zWTJ7PhjMKdkJihbgRV95SxbJQqNi4pcT6mrT3l89hTjW1reZ37e8Gj5S84fLZgef8XJN5avvrwiqcgHHzzivZ99TOwarl56djc3BD8nT3reXHzP97/5O+5vblFPTnijAsPFhg+Y8PMPP+Hok0/Y+p43z5/j1Jp8e0mY7KgnT8E5oh/odz33N/dcXLxlu15zfn6Cm36CrrTIaZRiiLOmUFqqIuFTYg5dYp9RBEw2Wwhe3LxJkGOJHYRZptAPmDxqT3QxxbF8s9sKq0xp2q5lvdvw5vKCq9trmtMp5yeLouElu61OucjnHfb73/s6LJ7kIbG73XL78pK7uythr8aACQlixqSDtphomY0f1yM+tC+YJrK4AaqSLw09oe/E0T5BO3gubm65X99weX3DerUjZkVXYjNrLN12Q7vb4rsd6+2GkBLJVHilUdWEZumonGUYY5Ex7izXJNrIog+V923EI6PlkJL8ywDdYaz22rz6XbfH8RDSihpFAjCPhXP5d2HPlbyvAHiKwmLMjD2aD6ZNhiTdJooCLJWcMY9JeUrC1CjgaBE82Z+yxKzsC58Z0ctWGZzKJY6KRRNb74ujDxlCewOxAtiNP3udLqRFVqcsRbgcSUr0wlFSpI1lTycDxSRtBLQkBpd25FRQ0KRAUZzdC6A0iqNpI4w5Vd6blRQhY5mEIpkvJI9sxhj68BqZQkpZNGKapnISfbnD7N1/yGpLkWDHag2uQk8m0kqaC3g2ArF7MOZdIOch+AGHQvx+/ozFaaUwSAHzoVupHKswLvfmFEA+fGf8ERlivH+jbuAIDI4dTeN5HUwHCnCYx+87sLpCCCX+DTwElnLODDnIXFSqdKKNS0osMkdiDJlz+EmihuQeI/CXGVs0x5fRdg/i/TiXHMHnd2C5w607gFsFjFQPQODxLv13Pv3vjMdIZgghSPdHPpzb+PuH3/+7wB37tfnQMTSyNB+Or8zXh8Duw+t7cLCyiIwjsR+Bcp+lCzCjyxJyAMTHbqmHLEP281X9iwP0BwG6sfc85UiQvWAvjq2Npaotk/mc+eIIrTJD38miYSu0MSLuH7xUaIdIzgGVAsFHYo6ETjZK54rDh9UYYAiDUK6TFsZKqVCIbTR7IdMhiJMkxkmrUtVjq1oARJVRNuFMotGgkpg3SNVE0HphfxkGE8u15iLDKUtybZ10YWgBoMqoyCIJ4saKKlo9EEsgobVAH0PKZLQ44pTAQhYKEYGtC6CHTcWlVwbcI4u/9wIcDjHgc/F50QpV0PvDg4VQsnOhKCsRbCRAMmMViL32ltNCl27qGmuEEq2toe17+t2WhKKqG3RWhEGMDtxojBATobSGJi/VPmIim2L2kcQkIKaE74Qh5ypHZQ0pBPq+xxUQJObi0lR2OV2CoFwq7SmMyL/aL+Ky6ZTW4CgtpbZUWrOSz2VVQLIHQrtKSQCo0siako1vFNR3VnSo3OiylALaKqxTxOBpyXgSzhicEZ0+ozRdEajPKAEyu0GAVmXovSwsKg04DbZywijMGTBMJw2Vc3Jvjd7f01goyg9pvu9sOOV6HpofCFjHAWhCgNFxERuZg8bqUrnxZVMS6rjKQIrkGCXgSoah7+mVok8Z7xM2jquXOlT4SuucYqyCHFpRtdZYFMo4nBX9Pwp4TCpteD6RwqhDVzorky73WIIKce1U4toVMmL8oel9QOuBlBK9EBjLeQnbT2kr7sml6pVSxg8DfhgwtoFSWXxYbRutynMp/2QE7A2FQaiydOgQIrqZMJoGoEoApikutKY4XcmxRED199Pyy03dV5wEJnv3vfu/jRvx4a/7gGME6VAancaNqgRfWjQ0nNHolKmco9JC96+sFb3FcSPLSYw+EKDnaLmkeXSCNZmmMggmp7FVRd1MsHVNiLBpO9abFt9HzpeP+OjDDzn/4IzZwmKGljh4AYCtoWpqrOuJxQU2p4SrapLVEDxWa6azCU/Pzzg+PkIp6HctvZdnzIC0jioFOUIKGKQy7vueLmVMZYRV5HJpzzZoI60SoxuY0YZJU+8D0VSA/qgMqrjSCYNOSxFIjxqJ8nw5Z7BudNdSwuJQir4bIMIqbNhXuUNgCInYe/Ae3w9M6lrWyxTwSYpcWolenDNyfJQiBr23sy95Hyl4dtsN5EhlNKoRvaRkoGkaJrMZVVPjg6VvB4IHpT1KHdgpOWUBR4u7X4oBjd2zP0bQWPQbD8mGJBMWo4W9LkmKImVhuLq6pp5OsHXFsOt5e/mWN29e8fjxEx4/fY8nsznT+ZKr61t+eP4DKmumi7mMpVNsthDalWghhp7BR6x1wjisVDG+EcZD7zNOGWFtm0pYuUaBSXShpW87atWAV3TDwNXVLUM3cLw4pmnmxKTYDjuIC1KXeXXpcScZbINnw64PrHY9oW+xJOLEstm1aDvnvD4ixZ7rm21x8svE0JHYsm53XK1WhL5nUjnmswkRh4+G0CbatsO5CuOmTOdP0cax6Sz3mw3fv9qw84ZTPafdea6u7uh3gW5o8XHAh8xssaOqt1Sm4uT0iGwNu92KYfD0MdJt1qg3nlmTmVRzat2I2ci0xueBbr1jvYm8fL3i9eU9Pll80pyenvH+yRHt/QqVIouUMUrcyYPvGXYtEPEh013fl/aYyLdf/5avvvwtIXlcA4keo+GTT3/F5MNL5se3xNyidMZoT5M9an1Nd/kDm7tL+tdHXF14dsOS23bL6i5zuVox9DvCkzk5R97e3nJ1ecOjs6f80a/+HU/e/xSqL3n1+oKb2zfE1QprHKQZmzahc2K5DhyfLPnwow849eCZEf2CRp1y3DTQXdFuWrRz7GjobcXZ2R9hVcvlxQ90scNMK5Rx9JueTz78gH//v/0H/s1f/SmL5QnKKdRCU8WI7jTrlebk7DG/PPsrjpdzch1RRuQbghaHdUdNt/asb3bMlorF41MW84bpYsL5x++ze/uG9vaKejnn7INfEN2SHGuoTshZHK6zVWQtMgwZ0RPWTtwis7FouyjgRMvZo/eoqk9oZj9jcXrE+aPHfPJhw5Njx2r7mvkHR3zy53/KsTvj1d+/5R//6Ttevr1l9tFjbIo8e3PB9y8u+Pj4KScff8r8PcujPnFyckpSgeuLC77+8mu28wnLPBBNx6OlpV4uUQjwdnx6wmcKNtsNs2mNqTS6NtKqGT0YSe5RFrKVovmoESXQCuImVBKSnEAFhH4P6KpI3xTwA2QdS1GOWfZYYqbbddzerWi7ju1mw7Nvv+Vidc3d+p7l0ZJffP4Zf/zzzziaNqgc0bmUePY6pOxzrHEvHnMHNf5rce/MKeG3Pd3NhrBuMT04Y8hxBHkKeDHq8kER2VflqIfvgiQAXRbA3x0vefLRR5ydnfObV294c3lNl+9Zb294/eKCu/sVKRt8kBzBGkv0A+SARswHlvMFzWKJV5agLUEZNkMP9ZQ9RDcCbop93qOVI+CI0dP7SN8H+kH0buv8h9u3fif8KfGb3o/vIbElS9wYgoeIGIgo6QAgZmEdatmjc0yoWGBDrfcdOfviZ/mcj5Fdu0M7RzI11taFJMJ+v5O7MZ4Dh/texiSXE1dKiADaOCqrqY0w3kiJyjxgKZmDocAhhn6XPaRHHeYRFB4Bo5HBqEfXV8OoxzYCKXmc3w9QlTGORkEquiaxgAbamX0MIHnSQTtsNFjIKh/ysJKf7M+fEbzgcP4lzrKIhMxYds8gOZjWe11Ao0aAThGsBldD7UjOlXMd557kFj9mWY0twPkB4Da2K4NhiANq1MAswOQYj8szJHkHOZcOtcLGLP+WczowGpFcagSPRlDnnbbhH5ElxtceoClzcmx1HsGoH+d54zWOMkVqnGcPfsf+Nw+6797JL3JhxB1Awn3uxgEE3Hdo/c7nyyxXPDi/d8G6fbI0LncPvz0fzu+nmGa/7zWyQYchS3fQWMh/0A67P/4fAunkzQ9+9yOg7PCuw9WWhO0AQirU3tG5XG9Z5dVDxdFxLMpzur9r6nB/xu89nNfvHYL96w8DdOW/pPT+Ac9Kg84SHCgN2qBNJQYEGdHbqRqss9Qp0ncdbc5FRN1isoYUUTES4iBIe91QTadUjSQqqe/xvafd7rAK6kKlheKQlyToit4XAE8Tck/yAd0NmErca1SI9DqiwwDRF40gJVWGwdP3gRjCPqnNubT+lGJdyoKIqkRp8y3+k0qhiDhTEUnCNEwHMn3SmqQdbY4ENEZntBI2iyKhohfLa8BmJYtucf/sM4Qg7CRtLTlrFBGMlkBMjY+bYlQhjDESVSbqeOjhjwmTNeN/RoFGRNZzCuQgi/4oKmqbhqjAxUBEUTUNU1fhh4EMVMWht29bhrbDpCx6cmQRLFXsRTyjj3TDIG21IYCVliNyJPhB/m7E0Vbng1uNVqILMc5bX1xMYxJnR5DPjaKhPgz4mApwJ6wr0AVQiSQjLqQhRVTUjCOnC0Dgh0gMkaHtyIMnaIXXBqJUM0xtsZUhpyjaTjFgnMx9EAaSUZFKO7SrULYS8EZptKvZdQM5Z0z2GBVl82cE2fSePu0HjwsBEwOo4tBTxmL/LO5BtsPrp2jD43sFwJHgq9hMyRNdTEqGriWTsVZJu1eQgD/FsG9ZU0pA50MFRsZ5bOO2ShewXFhytWlo6oZkB1RWVM6hdRRzCa1LnVUqZc5IhSyXdmgp/8vxC2+VVBa6UdxXKNwRYxVOW4YQRNutks0uq1Kpy6qsVVIxNwiDL4bIZrMhVo6JhqqZFgBNmIOJg2GHMIELU7WI2cYk5660FYZrCMSkSFnaaM1DsM5IhfOgE5jQ2ojOX9FT2C/u6t17qcYIq5R7R4B5DGr2Qea+HUKCF51LG2LRi4jxXSv6UcuhKgy7McAdWxr21c+yOznniFnGcXl+xnvvPaKqNDl7UvLM5rMCeFmMdSQM8y5w1Huiz7z/6D0++/mnnL1/xjCsuPrhW3x5/rM12KqiamqqOmP7hA+eECJBR1KIaGuZNTUnyyXHiwV936MzpCAC1jFDNIasIyYrUrDFoS2JALbOoAQ8SimJpmJOBDK+7yCLlqRTGl0Z6lxRDVVpIzUYZdHG8g5AVwoVcqNt2TuEVWd1cXHWAirruqZtarphwJTWVJUhRKm6tm1P3w10VS/6rjnjlVyXtpLQWq2wZW21lQJs0R9xTOpKBPpzJAyekCNDL8mowbHdbri+vsbNbkh2iY+aoDJKiyaltUAB+qXVQlpHowrYPK4VgZQNOmt5WMs6QpaWH22kHXx0d0WbkhBIIUkZjbGayXRCip77m2sury5RxnB89ohmOmGxnGMrC1bhmpqUBrSagi7u7jkRQoIYyESUNTht9gGrVsK0bKxm3lScHc05O13SzC0+D9xv7kQXbbtlwhzvE8PQE5PGe8Xt0JFDRsWIM/J85J1lOtFEm4gJ7lc7+j4UoM3Q9Rbfr2m7HSkmaq2IQ4/JGpMUfggEEqax6MmM7a5DYziaLImmxlNTWUfrI29vtvR+TdsFbDXBOM/N/YY3VythFDSBHLbEtCMTmc0N1WSBsjX1THG7uWS37cCe8ORRhYkDRlui1txc3/H6dc/Z0YyTuWXRZGoXqNwOlRQ773n24oqvf3vF5W1HVI5tt2OxvOTy0TG0axpn2ObA7W7LbDJlVtfEUAKRNHB9ecHdzR05wd3NHc7XzKoZjdP0ccvt+o5/+Odv+Hr7f8CTL8nVkuV0ztJAuH7D3fNvWYTA4uSMdvDsQsd91nSbS1yeErKn7dd8/f0r+t0tV6sbMpZNW/H//sMFJ88HXr+5ZLvZ0W56UAPGVMzMElX1bAcB9E8fn/CzP36Pp48/YFI/os8n2OqcBQM3z/6W7767IU8MF5sZv/lhw6aPJOVwrqZWAYo5jZmCOjpi/uHHPPr8lzRHc1nrwz05eoJOqPmM88d/ybG2EhXqmqQ0g4JuTA4MpCZj5hVu0ZCdBVdjXcV89ojmaM325p6hjbS3E5qTc7BifJAsDCSiTpJAkzBAnbO0lGphTtcMZBVRtaMy52g9kUIYW+rjhsf2V8xPlrTtWzZ6y+nPPuVs+TMms4HO/Gc2//y3PF7UnDbHnD/+gt30Cz7/03/HdD6BsGVz+TX/5av/wmazIeeKatbgTh+jnSEtT7CTRjS+lEFbi62ljXO9W7NuNxz5JZN6Uli3MqdC19NuNoSg0WaCSOwPJDWgjcfYRKVF01cFaWX1W8W2C/RJse48ppnw8UcfUo26mAecR7ReAyilOTk744tHj/mTn/+Cs/Mznt++ZbKY84svPudv/s1fc356tHcvN2MEoyjxPvu2xXdhunFTj2XNhBwyufOoNuD6jPJSYEq5aFAbRdLyZ+lGGZO/XEC6McHPkg+oCFrMZXTlmC4WzBdL0I526JkmxcnZE4Zd5P52zW6zISa5ZpwQFSa1o2kci8WMn33yKUfnj7jdtFzcr7nbdrTbWIrJ5XIOZ1QST4MyFSCs0mFIdINnCLEQEv47MtCHI6bYxzMPk9rxlXPpTFAZnY2QJxKkEAgFfCOLrI/vA3EYxA01Z2LMB5dIDnFUGEYjQGGp5TwSBVRxlD3c3j2z7uEYjCy3st9VtmE6cTgDJgurzxoBj1PphFJKivmMII4aW+2KI20Bg1XR5yMVh93ynGdlDphYRuJEhcxN6UfcE07Exj4zSgkpK6ZvI5NHlTYGZUaeYNrHn9qIaaImFT0tMRMcmYsYIy24BzhjH4saZTFIT4HM5FJuNhmKlI5SCpIuubBU2LOxe5fSlHNhBKv9GB3m4mFuHQrV74J0lDwlF2BuZGKJ5E0Airlgodjuu3lyJsd8KMBWTkgsxpBCYvCevu8IMe4N/eQGjs+nKsws9szEQ0vju3H+Q7bdO++jAH7lqVMlLxyfx5jl56FH8u+Aa+OkevA7mbJCZFFKjMXG9x7aWMfnQ94v2IGM+WgKuP+OQyli5Ebul1s1jv2Pru3h538SqMsFjFOSiyl9ABNHcsLhrQ9MKR6c+8PDPiS3vOMyy49WbFWuSKl9TnZg8MpYjuu/9O9rUhQ2pi7Sirk8O4qRvDK+0gPA8kf36A+8/kUG3XgRSpVecyWPWk65uCdFusFjtSKmUv1IEIO0wPRZ0ydNwKB1aYsqYmmh79BVTaynpMmc2DSEHPF6IKge5RXaOUnkjJHJGYK0P6VIXU0w1qKtEwvxKAJ9VVPjakvwLSpF/G4r1aLSfplCwKdE8KLbo9QoLCpJUsjCyvBJiQvNOD0N0vKoJLnNOjGU7/WxNEdqh8KRlaLDErTB6tIumyImR3TypZkqY0v7jQytQGhDKgtquQf7mlo5zyRrD2hVdPCknTWZAqSU+yZ6SUXfLQNJxEKjSlLBVgLSDWEgDoiQv9KEnBh8j4meHALWOZyu0LKeFpZJYDaZlV75DM5gawfZEDoIeWDSKLZqRyog6Hw6Y7pcoGphjSXeRfJHgVKNAFXgSFmV1kbRdxJgD2IMpFJh8DHJBqmN4DxhXCwOegQifHpgn2mtqSqHQRXqfJbWYw3Je/qhR0WHGUr1KoGKYm6Rgwiit76jHwZSUgIClXuIMmgM02aK0lDphFOJFDwhDLK4aqkQm7EIVZ600c314eI9nrPShS3EYVN4l849tu4eFplxARvZPWKHLcl4P3Q4q3A6MTgxSIhFv0Alj06GwRg8IOavBfQLSRyhShKfk2hkWGulhcxaVFQFDE4CbBcXKnELdtRVLcHVgzbXFMv/08hiKkUCdQhWRgHZPG75WtzenCtCzupBIKsspERUGbdzhHbg7u6OHkhW00ymwgLKGa8Om9N4PxLiaqWygHHd4KmMJjhx+NztOnkmVAKVsUminCF42VgooGIMxJgwRlPXAgBRwDapvo4VXvZBrWIMMkrQWJ5rsS0/iM8efiigCe9UgIC9kOpYRbbG4rQhD30JguRejQ5eWSkx2BhbbrSlWSxZnJ9hnJjVKJ1xlZU2Th9QCdE1XMw4PZtQVxNOj06ZP31MfTrHrz2xtqhYUx/NqWYTqeIqqOqKyUSR+i1DL4LLGk2ltYBnGQgBkxOVNbRA1+5IiKOT0aArS/SO5AeSlaqKMRbjHDEp+uDZRcUQxYxh8LImWavJymKVIakCaatSjVcjPd7I+KNLQCabsTHlz2U/y/nQjkPW0naDoi57mHMVY2Oy1QaTlczPIiEQydJSrjWVq4qjuKK2lqqpi0DyOLdhPpsyaxpiGBg0ootGWWd04sWLF1zf3vPkYsPpez9ncfaUaj4BJYYuE13aaYwua4TFGE0Yq6pJdDlTyiQtwuGiMVrW1JwPQYcS1qguenq6uHDJnK9JOjOdNpCOycDl1SXrtmM6P2LT7og5UlVOEnsN2lmqWFOZmhQT1ia0k+E1WmNdhbWuVK0TtdUsGsfxrObkaMrx0ZTmeMoudmxjB90GnyImDORsinC8YvBRChbtQE6J2WRC0JZ+3TMzUM9FGiHFxG7bMfgeHzRtD5XN5E3H9tuXHM+nTFxNGiJDO8h+URnskNi1A9s2Y2rH7TaS7lY8edyQY8fLVzfsWs+uD8RkWBxNoU+8utpytx3IqmM3XLOYJs6Ol5wdn6FN4vLmgoubG2H1xZquC9i6Q7kFKnSs7ja00bH1is1qzcl8wqPTho+eLmkqy+Z+g49wt458+/Kab1/fcreOhKy529xiLzObbses0jileL3uceYtZ8dHfPjeU6a1o7HCsmiHhA+Jbtez3XQs50d89NHHzI8XfPvyO755ec+3F89ZP98Sz19w9OhDPnryEW7XcfXVr6mGNX/04ROa5ZKNXzPozPXuBnWZmLdHzKdzjucL3l7ecHO/YbY4wtaWt1dbrv7Tl5ws51Qm07YDWRt2u8Ck0hx9+JTarrh/9YL17T0pRz794mf8yZ//K5w5JuY5qlrQv/gt/asrzh8PfPSXXxDqxxz97Rt+++t7Xt6/xITz+WN6AAAgAElEQVSWudX0KdJFmMwbgg68vH7LXbvj0XtnqLwj7i6IeYuu59TuHDc5JaQGPRZ5cyKbWKIeCyYzWRqayRRbVyQDQWm0shg7Q81Pmc0TsUsYapRqIIqkQtCBZEtRqRS07L6mH0GJE7TOAVVpUHUB9yqUMriZghqojjk5O2IRP2XW31Ifz8GdUR1rnn7+S/76VNiUjz/8gn46sL0baOZP8due9eaOt/ct319cU+vMH//8Uz792a9YTI7Feb1O2GoAIiQp6Md+YLvbcn13TT/saBaO2TAhJxg6z249cHdxx+XbO7YbT0iaIXmG1BJUizIDzmUaC5WGKitUNrRtYNNFbrY9q97zxZ/9BUcnS04Xc+xeQU6N3Y/UE8dnn31G8/ic06MTPn78FN1Y1LMvqRqRGml3O3bre/x8gqumwp5LuQiP8v+T9ibPkmTXmd/v3MHdI+K9nLMKVYUqEAMBgiCb7Emytm51L7TRQtroX5X2mhaSzCQaySZBEMRYI3J8UwzufofTi3Pd42Vh6JYpYImsl2+K8Lh+7znf+YaVUSGyCJruPZYmsQW6iYIvSlcdffGGD7RmHhGqE4qH4jCfr4WFcd/gqz2q1GYnY3U8JSHF2OdFHXOGR08/4L/+1/+Mqy9/Qyf/Bz/5yU95e3NjiqU+MMTAZghQM2WcyePIaX/HzZtr9vsDKpEuRMb7UIi8+7eKWU1YjS5k55pNT6tj/r/hcytwttRAv9W8awNPhDZQhWkcjZXuphbKIU2ZUSy8KmdU7H1flCaCEQKk6wxM6SLVm8+3b+DW0pTL+vor6D1grKGVItKGt8ZeFe9wwSHebD6k+X0tK0QbIeEs4WtDLs5Be2bxZJ7uWhRKMTC3VaW11UPkjGuKKYexyKykbFYrqs1mwoAe9Q4XAl6tsnYi+EWS3PoLew3tVRuDY03HhVbjtefrxZ2TM3kXeHLirSdotbQxNS18g+V9btdjEb5WrWgp1IIFdjhoiOk762Khcd2vfeVroRELu805Z6w4Gke1mN2ParJGEUXduWdWNZ93qnn3SVMLLL97STBe6m/nz8mhq9wT1q//XSy6pX66r4L6faCVhc8tP8/6t+USqJ6v49eBnuXamB3L/YRYzu/3CsLJO9+3/O2bKkk4qyju/877/w0YMWK5N9aX8M4H77xGqw/9vecmDYupq1rTgI17vpdfv07Cb/XJKyvw3u/ha//NvWe1gpec19g710Wa6m0hYOgCELf3pr0X901hpIWCtov0W6///Ab+9qfuP/4zHnTmKbY8cZUWwFAKkjP76cRVZx45XTSz0BgDGppH2DAwzYU5O2oNOGozBjcQYlbF54795Ll24LOi4plLb7h7V/GiJPGWuOIsfdQ7O5C8y/gWv+zFCP44IXox34h+g2qBMiOYlLOLAwnHKVWSTnjvSSlTSmrFfwM9xFOleUw5ox374HDemEPB26ZvKK+9KVWNxeO1UF0g+UhyEEhEMrGBaU5sGiIlN4i5GWdWIVSI2ATtlBMzlbkUktomp436bDRimyp9fSEuXkFuITu0xkqrOWI6zDcpOEN/x2mypFyM/ZBrYZ5GUk6E1kBDIjiTqYpm0EIp80ofd87jojXVvTNw1s2FLkaqCMMwsLvY8fDRI7qLLdU1CSNGJy5laQYX2M6TkrHiQi5IMk81baBPbtHdKRdO40RuE6kFyAzBWEpG0ZY1tnsppFTNv8qmPNC5wK7vLOl0npqMqgdRfJOakTPzdDApnbSIbLUDIE3GDiwilCoUd8KCNAtDEDbRmZdhLWbe6ip+M5h/lq9Eb+EDpTW9soCq9x73ac1fp3ovvlOlGPMLWoJZO7BjF+i7gG8StbDZsBkiIrUxcXo2wdhGUZXoPbf7O0bnGSVTqwGltc7cpYm7U6HmCF0DziqUXFp6bMGrb2BGSyMuqaWxGttnOo1orm1SpbTQYXJV8xcr5VzQiAGfS4z38n76xtARsULCL/6ALTnLSQCn9MHR9R2TThwOBzRGtunhCsCcfduMHSXO9pFamnSoVKZ5hlItSVNsjzEPOsG7YAlnLc3Y5A4B5y1lTus5bde1okacnP0V14Pg64esyeW1mux+Ae0Wrui5cD4fgqsZctv/7fXZ5H9NaWI50Oz72tylAbt20IqYTCCECF3PpHCXCjFA6COxCxyqSb8tEVuI6hhcpB8uGB48xF9ecFsL4+GOcTpylxO9gN9uePDsCZcv3+L3E0VPBvI2E2ZRk/94hCjgVSlzotZM5z19NODVt1Aguy40+0aTgIbo6IaIC4GaKhqM7V28Y66FsWTyPOODkGvPMERyMYmpCoTO2MveLZMwY87adL8VzmvZbfHrVnzX9rnCNNn+2HUdIUZkBUpt+rYUEeZ5brYIi9zDNdmMgbYW6BGjN5l2MqZhDIHNZkCLp28JiFoSeZ7QWpnSyPXdnqtD5elt5vk3Jx49e8LFg47HDx/a8KcuBsQGOIIZF6eUqEWa5J11cqlLsnFtne4KzhlARwOVcZamikAqiS54hs3AOJ7Iqdj9OM8c3rzi7dVbxnlisx1wXcAFb011UbwGRAtD7BhcMNuMWgmYvHkqydjAHgbpmNzETT0wnt6ib3ecFMY0U0oPVHL2BB8JoTCNE6nMdN0GkiXa5RgJUbjeX3HSnsf6AClK33WtplLmPDPnzJPn32A7eK7fvIJT5jQ7xv2Jw92RWoTQm4/c4XCg9yY7f/P2ljSeSLpBUF7fjVSF45yoriJ1IqeRk2bGAuNoKa29H7j84Bkff/Rthk2gG7Ycp0/5zZsD0+xwruMwwt1R0bny5Ve3vL7JZB1I85Gb+Jb5uOXJg479PvHq1Vv2p0x1O5J2xIsLfJk4HCYSHSk7PnuT0ZrWtHeP8vzJidsSePpwS+cSURObKHz8J99l2h/4yd//mOu7N/R3Ow6bDT+9yvzNrw68vZoJz07EuGeMd7yub0mHE1d3I75M3Hz2Kf2nv8bRMfc7LobI3bTnen+ie/QBj599xMP+Q+RRz8ZVjm+uePH2LRMR310StXI3QvI945QYdo7hyROCdFzuJ/wMb758zc9+8SX9g2d88Fx58jTiQyLxJcJr/FAJDy549vxjfnT1iP2nf8uVm/C7ytV0y10x65Ch7Hi+fcR7O0WOb7j5/MhmM+PDG/L8krTf0G1/gB8emNS6Rsi2z8YY8GFJfysEVyDU1gx7LJzFE1yAGBBXkN5TUyQliNYXWOCGjewtFV68KVjamVJFzXydDaEqTJPV70OPitUFpd4wTS/ou0dU/wANQt9vIAe0Cv3FEz5+/uc8evacbvMesVxRrr7g5vAGrYFpd0nl+7g7j5uPDJff5r33PqavYiBAnKEc4XiEsGHMI7/++a/5yc9/zo9/9g+8uX7NdtcRo6fMiemYmPaJu7cHDtcjuRgTd6qJuU4knaliQWedg1AVmTOCkEtFup67knj64Yf88T/7gUmKS6ZRmgEbtqoHHzybzYZ8fcXf/fjv+eqXv+ab3/0WcRj4zve+h6+Z43FPmo4GdIrYpNwI2iaff6dEa53a6ld2xtZE2iAROyM79ca8r5DFPL2qw9jTYthdvf9j18cymizo+kRsr5UY6boBXKDikdDzwYef8P1vfptySvS+46c/+zl3hyPROUiFVDPeKVe31xz3d+1sFB48f49+N1BOCelbs+pao9mAq4UpkrOdiz70xM4TYod4/7twxd//WM+RZYh4BlgWAMd+q9V8LIwazJNVc6Y4C3oQtUGS1EZ+CAG8o9Sz35uoyXxtSN9B9GQ8NXaE4CnOrcCaoX5L37D8gYVTVBXrMbAzfC4Zyx0UXK1ItjW89metxiulMOdEwPpn55v8utUXzgleWvhcez3maZep3lj03jU2p7Zz/GsEBAPnsoUztHXiY1hr5oW8IfcUFGa5dx4WC5BqK85ZaiH7pUbGOTPGHG2YCiY7pppagqVSauEJGMEDDCNTsaDHVNRUD5hyQUJjPKquA/q1f+NrMtLfCoJrvbA4I29AK660BYgsRAiWm7StPbcCnQBVzn5z94GkEMIKAJ6X8W+DbEsvtnz/4kH3Dovr3vP9LUXUGlDW+j/nQe71+M5xTt19FyQ9g5rLIPV8Xy1MyaUmXRQ951ZEWk+gZ5JPGwAt9joNilrvCmlWX8s6V1HkngT4v/xxJhys2KQ9+3eA3d/73Qsuxrsg3Ne/xyTsZyajMWRp13H9KqR1X7L+xHYP3OvHzwjv/ednYKM0XEpk+XfFwL1FWfr7r8QfZtAtT1rEzrdG/8zWQVNT5jhO7I8dmz4Quw7BU0tmLIV5zuYBVXJDQR2+LVJj4C2bT0InRUK22GIfrAmunlxnY+l5oXeBiCI1o7kQgwUDLMk1KgakGch0bppMmhSQbkPYbFGEmJTB9/jDZNOWUky+JoHqPVU81XeASU+bAq8huIVYhBAcvjpKEHw1CmrRtjGJMU9UMAPrRq5wYrIl8Uqt44q+gtGYO7A3VZTsvT3XahLV9tY3KV7BubhOkiqc48+9SQ5rNrS/FGN3GHAQ6TcDQ2evq9REyom5ZGK0hs+Xwnw44EoiOhCtzOPJGDVq8tuSss34mszJFUFmk1Clkii1GHNIlakkXrx+xdV4xA89mwcX9JuBbujXTXGZUznX0gcl0HU7M8FUJTjBx2DvcS1Ihrv9nv3+wN3tHafjkZSskFLVJkPLBmZ6O6wEMelbm1qYxEDJYsVTqhmKBT/sxxO991SFTdfR9z2+sxRXLZlNHxjHCXFKtnCsJvm2Q7OUjHOOUjPTrDgNdKGxLXMhUxE9MY+TeRDcO2Bsk1kSZs83/NoYwzp9uf/xu9MQJbQIcBFrDLomsXPerTK+qongHZvNhiF4JGdCrYTguQiWthzoSLni5sKczQsyTQmHASQ4LIEyT4yHE/PphPeRQ545TSOVQJrMj3ApHMQ1cM0ia625V5DVJ8ZbYaRLsbvQ8RtLUiB2ncmA1WxpfLS03qqVNNsBbK810sWeyR9sP8IAXCs06nqweWziJA10MMawBzEPOspMFmHoIqqefojgLOwFIw6b8W51aEt8NfNQIbfQiiXIRJw/+yHC+nfTijeArR2sy+bT2IbSPnfftN+o1xnnZT2hbO9ezpGWglsStXjUeYK3onaVbUozOa1KLhWVQJHA9XHiF599yYu7W7qNyb5xVrzkUtAKXqK9N0UYuoGLywf02wHxyuYisOkg37zl2WZLFzo++OYnfHd2vNwXvvjqlxyOB6h27xfMviBXA7GHPhCCo84Qu8CF35FUuT2eSMX2oVo9tQWQdAouRqjKNE2MqVDjFhXhNJ54c33FaUx4B0PXNRaZN3lnA1K9c+RqB7hvMoulSLYpa6G2Qq62MyFnUAolzw2stuo9xHietEIrdrQBPi1IpBXN1YGv5o0qAvM8cjrsubu7pe97+q4ndiZt7WMgeAcuEIMQvG+edEJOo+3Lrlhyuqvk0543L0f2t46o7/H4csPxOHKaJsY0M+UCc+JwOpHFUXRY9xLQxtrQZqPQvHB8wLnS7ltvzA+tFIVxmklzQrCGJOWCCx273iS6BcftaSRj1g1djPTBM3fGaPTV9q2iSh8ixTmmaeLusEfFEbvOzkotePGcpkyZM6cA2+2WkB3J9/hoAR3TdDKJfGMpKsrN3S3OHVtDohzGTKqeuYzEGcb9ERC2u01jEyjTPDVEO5DVsz9V3l7dWB0xJuZxZpoqRfdUtaCiLjhevn2B08ym89yMvyYGG5CJE1KtSBCOd7fc3t2Rq8P3D+j8DimR06y8fDtycXHgw4/e5+GTj/hg7rjaf8rV7Z4Q4PpmwjslT0devR65OXh835HSzN3+mn7rOCTHy5vCFy8nbvcjcWPjw363Yde8XR2e42lmf1eYGmDcBU+gUK5H/JeveXsTCHoiMPOtj57zre3HiFN2j3ccTnt+/eIz5tuRn706sKcnbh/jZWCogW6GV5+/5Or6hlpn+t6zP52ohwNRPdodODlHmitSO+gec3x1S62VQOTq+ivu3v5mfT9evrkiULnaTxxm29+Tq1wf9mxCoXcdaUx8+dkLPjte85Off8pf/sVf8C/++Z+xCQX2L9k83PH8+XfpLt5jGj3j7ZH5zQv++P0dfPyI//Mf/p7D7ZFtiIR8yweXwl/84Ft8+NF7BE7I/JLp9lcUrtg8/CZ+mJF0g4TNuqc7FUgVUSF4bNApBUKrsdVMu6UV/NZ4F9Q7Smh+9ctZjyDZ7BssmMu1YSzgHRlHFju7a1YcEfVmWZEQOpTT4Y4XX/yci0efMPmO45jod1u2XvBdZPf4Ke7yEXJxwRGPXHRcPt3RP96QnPH1Zu25mm/Zf/Yrnj4o/On3I5KPvPjlZ5zG1wzbzMsXX1CI3I6Z/+v//n/5+3/6KV+9+g3HdKRqxokNYDSDZE8dK2QbnOU6GWOQSmmv3zmxsDW1S4cquWbirkd7z48++Et++MPvcbHpCFogj9bqBEv/pirT3R2f/uJn/NXf/x0qgQ/++V/yyR99yF2Zub1+y/72DVB49PAhQ9+3Jq2NyXxrRCvNxB4rAFrbujSvsNxP9tFqP3OvT1xYyIqd7ZbyWNe6Z+0JG8jiUJxCWZNdBYJHoqe/vODb3/su39lFPv7eezx9/xs8e/iI/3b3gD/9s7/kr//mb/npP/6MN69e8erFVxz2NzakKZ7b/UgW+OS7P+Df/If/wCyR//X/+XtOp9Z8qgGNVhOtba+Vu33EbyOxr3SXHb7vKLLUVvyOx/1/XEaP57TU9cSp66+2S+Adkc6ILGJ9pKmAzNOr89FCa9oeVkU5ZvO8zdlA0hAXG4xA9EK/6VHfWFbNR3VRoFgvca8uQ9ZSzF7Fwtax89vYWYVclOA8wRCO1uNpI4CcAZuGZtjAVYQF3arQamSH6jLIbWyLBaBoYEJwzYakrSGHnW0+eLR6ZrVzuzWfFr4AK7izAFsL0GQy2tbnitUUFFnBP60L0LTULw2oa4OB5d+02cRMzZe+5SSu69woUlgir3PkapL97BJOLfHehx4lvLNaVmuYBUCrS6DV8lUOd9brojUb6NZe01ITL6uwammhjrZHQwPxFiBNzwmq9wHBd1hXy/q8h7Tcl7DeTym9zzTECVoas/De0NO3gSfOpNCLnH5ZecvPcO7c93Hv958BOmf2W18DLb8OmJ2Bq/P9Z31L+21i19U+1PVLZWlclEWc9u7jPs74O1Co+8y2hVF4DrVo334/pfUegLh833323Du/Wt6VuS4fO5r9yvJH3/X61nZPoq3nxEI0VNpAZAXjpGHe5pdq23S1Pr7Zv2kBddruy+W9WW77Rsr6vXukPf4gQBea0XkRkJag6VZ2iRBcBIkGqHU9cdMROkcVpa+OoAZwUB0L/XNBEFVNmrgAafhlwSlaja2iWijFDl9BOZGNyprNmH8zbKAlzdoFpSUwKj56JFSqJlv0IRCzEEeTcRZ1HMaZQ1VGHORqkiJRNHs0eKRCH405hxZLXUIaSaAiFaIqCcGJkqoxBGtDuLsyU9pmpIC6nuwGnBEoKLVHilmTO2x60WtBSAgZ13vupsRQClVhrrlZddgkReYmwROHusIkld7yqvHBMZ1mqgRqiBYghzA7x4SgFZN04iyVNURrJJ3Rl8PQQy0M0aMqnKYRqtL1Hb7rSMy4aJso3hLzKGrJPgXynJm1Mjlln2aur16z/80XjKUwbDdsNzsut7sWTtA2KCrq1AxGvePx7gFdMyJ3IeKiMWIWAOPN2yuurm64vrnm7u4WrZWu64jerzeZmQ6bJ5gapQ3fQBvNZd3ri1b204lczJ9oTomQC0PXmwfddKL3jr6z5jnlbMlXTepVsals10Vwjq5EnHeMo0KtxL6ni8Eo9y5DhTlXPI22qxkv5mOVtDZAcfF4a4eiOMDSLms1ptxyYCw+Z9bwG3Cwbuxq5qdaDXiI3rPZDDa5JhCCx3eRXCpTSTBnugy7IbDpIo9jT66OkjpO04DuA7UemUukH0zOXEQZpOfCDfTDjEc4TCcUIc2JcTTPp4vdBR988CGXDx7Q7bYUBxqCebi5DqZMdBGpQpRgG2Db2UoxNlsQb8BcUVyFqIKvmI9gyTYRdOdkKxO4CEkAcRQR2zMa21Db5qq5QlJqdahEVDIVh4uxhcvYBL5S6YbBTPC7DvGOXLP5OXhw0SPZgUu4GMl2a5BxFDyhG/CxgzxT8gxqRWGpbZreWLJUXVQGpFIQ0VXiDFBcXr3LYmOIqSpFizH0oO2PBXE2iVQtjeIf7o2YrIKqLQjMcl+Eop5SPa/f7rk9TvRDhzplThO5ptWjZanZl8GLd4EQO7rtjmHTM3SOB4PncR94stvxjffe53s/+FPef1652H5m0+SSiLE3iXOqBBU6YNsHnFS63kBFyR6vnq1/yL5aujK1kosCjvk04cdCvstMXcB5GFUIuwfcpsLbN9e8fm1Js13syH0lTYVpSOYBepwhmxebhgAhMDVLhflwNClJtd8VQmdMM4HYd4AFITlRC0ZSb0EGwUEtiHMMMaLRAjkc5vnonCMXS6wathtO00TFmJ/jUbi5nijzCfHCsOm53PRsNgOXfUDUpLriPLuLC8Q7jinhnePyYsfjWvFxQyhH8v4VbuqYR8+X84HPcuL2+pbTnLg5HHh59ZZd2lLFwwhTyYyzpeYFZ955uZhvXxcNkK3qSBnEewbfU9QmvOKDMdXE41j8cHo0tJRk73Be6KiEYbDiOM8MKCebMKFe6QYhieB6R54rUy3cnU6kUun6jQVV9QHxniKFuQF9cbu1faAkNkOg7yIeez3jeOJ0mpmmmbu7PSlVdtsdF7sdNVUO4wmpldN4Qg+ZzXbL0Fe2D7aId8xpApTjMXHSxDgKNzeWTI14UoncjSfmecT7znx7qIhmhugYEW6u93TBs9l0iBPmksFVQgenIlzf3OEkMfQXCJnxWLn+8jWfXx9578sXPHr8kJyVSV3LlirsD5lxPFLmkdPJQrZqUqYixOER8uRD3ugFX315x+EAw+YJpwKv3rxhHE9c9AO7i57q4EDmq7uJXO3szOPE9mLDxXbDNI6k0KFaOJ723O4uePXqhsE7YthxGhPH8UTwD+m7wPZiQ/aefntJ7waYlLQ/MO8P5DozHRMxVqhCcZWLjTXrN29e4WrHnTqm8BaJkVMe2d+9Jc8JReiDZ+gV5yLDZoObJ0Qi0zhz/eo14cLjy8yNFuptZX878flXL7i7O3A8HfjhD77D88tHpEef4LwwjQ/4yd/9I7/8m18wn674o+ePOLgNudtx0kzAEV1iG+Hx5SX76xOf/eJv2coLyv7XzNM1H/1w4PmfZKuuxQYfxkqpOMk21MFbQy5ju4+CDQaWKb4ukxUbLIprCoEGFDh1KB2oNX1+pVgritU1HqxeFoEuIo7VE8qVis9CDJfs65afvDpQ5plvvL9h6DrC4NnsLhndxE1OhK5DtwPD+88Ztz1fXitT8by5rfzmN0duP7vjZ/0r+vhjPv3sH/jVr3/Km5efQjpw3O/BR/anma9evuUwjsy5IL5HicZed0J1xWSbvdi1yxNSYZon85ZtdZB5cHbgHOodVSvznEkps931PHn6lKePn9DXDIe34CM6XFCYKTiieOp8y3z3mnLaw8Ujnv3Rt3jw7AnDT79genvL67df8tFHlwy7HhfMowwH6gXBUvsMMLb62HCYe2ySxpJYrBFUKkmUU82MZJI3sC7XxRcbXIEY7L2UWmyNCM2k35iCQUHU0+UB6gb1G+gc4ckF3/nLH/DkT77P8HDH9mHHw0dbYvA8H7Y8+ehbfPCdP+HPfvU5v/niC/7mr/6av/7rv2I8HZjzNUWU/vKC7fM/4l/+u/+O4jv+6pfXvH5xQ6qs0kutlVwThRmRhPeJ5Gcef/9jnj0a+M6DS/7oh9/Hb3e29qE1tgvT6Mw4ss6+tHukDcvLbPVtMRVOLpnc/IBj3+NrxHsjEi11b/CBrotNheIXNI9KoUwnMmqA+GLfIWoDYIGsrXbBgNFaLCnVlBo2ELZK6qwkw5k/mwZHlUIMgouerJ4oEIMFyYkqPrTnU2kKodxeem2ki9Yf1tz8j0sj4ZhVhDQlkIievdAFAwDEfLrxnflh43HNd1idgQoL2FhQtBZTT4WwsnmC8wYS1HtgCdaz1KpkySa9zUa28D4QYiSLMKfUFFTn75cGcGgL/5Pmm2cEknsst6rGyqsW9FcRiigstZE4q8891Hom2qhwDyS7j1bYfbkEewgGnKLNzN8H1CULglABsUA0V+xr29i8AXU0ON7k0G5dte8COVrVfOKbhNhIOO+yGIMzqe+iVjCmY2NKtn2D5WtDMNCn4SQ110Y0aXdO88qzJVjX3uA+O86IgaZo8843abLYe7Q+/3sg4z1kbWE5gl1zcUpWIxj4pqRcv6YFZJ6ZgPrO/85YjyzLvylFKr7dezTLpaqVotZ8OFmYn+f9fgGTl0DEc8gFv/W4DzYu12MB8ByGlaw6ulrbXn5eQ8v32Y9waO3sdbJHa8JVA4BrdZQEfbcxcwmfyC6RsyB1CaMLZkPhynp9zkCnmNdi+V3I5vnxBwG6RYJDNWmlmQuaJw9uSSAytFB8NOZTJzhvaZnUBgy0xbwg/csF6VQozZjaBlN2c+RaqZqNzu9co+Q31FmVIhVc4HYyCZlrtE+7Nyq+ZiRniiRSTedYdD8hzlMbU2TO5qFXso3CcslMWcnFkztwvbnP2e5S6ESNcdIWjjSdel0U9iKWpgo4igVItJuTxlApOEYV5mJNlWiGPOGpRArOw9A5QvWcquc0V3qtloxaFMKC5gPFmj5p6alTyYwl4cU3iWCheKWIgZxTSVYUlIKX2jbslhgYnW3yzfRTasU3Jk0tkObmmRcM4BIfwAV81+NiwAwXTBbXqTIHIExoFErxHLVwM0/cjSfinNgcJnji2MaeIXb4zjPmkdvTnuv9LfPpiIyzFSstjESbAbCeRpUAACAASURBVKohuSb3miZrtACGoTdaO56sieCbJ4ss1OWyTgXswC0EF4jBfJiqqMlO+mC1dVI23UAQoaSJKSVEAtFBKQnn3GpsLzHgnJLKSJpq8x2DlGZbmrVSygCogV16Nuhk8XjQageqLlMQD1XXBNDSJgsLa6remzycGXTte52BAut2tUxQ9CyztGmiGnsteMaUuN4fKNPMRe95sH3INromA1RmPForg4/0zhhHSmKqE7lmOvH0Eq141kqVgaCOGAu1OoTIe8+e8/HHnzDsNqQ6mxektFQpsaRVR2MrKfh2KKtiAQIpQU70wAabevqq+GpyD3HmpSUuMksm1WI/S8yAtqiZvoNN76q3dV1qafe5TdJUAkVzS9Nd7uEm2dWKeEc39Gy3O0IIpFJIpVq6aEpU13MYC11/woyE7d4viIXuNNYvpba+yiZl5oPmrSAjN7mprIfz8hxEYNTJ1lkt+Ebbr82HzKjvkKtJQ1VLWxtN3uAWRliTLbQ/xtpoIF2LD0+zJUe6w0xKM4fDnroEBsjiebgcGro2l77fMmwGYs3sAjzbbei949ePvuD6ZuSknuPtnpJmY2ctQXxOGMRzsYnsNh1e1HzmmkdkKpWErRv1/v7cDy3GmvRV6Fy0Q7GU5h8EOSXG02RNmzpyAWoheuiiTYJLrkzjRO6skZ5OI5om5ru9SW4xBmbcmXdoDB3bzRYD6BLBKZMX5oy9/tjdKxxYpRFd7Kg14r2B2CLCZugJ3pi3fR/pop09aZrZbTY8enjB5WaDQ4hOVw9VbYMzFyLVBSQ6druBTbumRRPkI14Kqo6704FpzpSquNgx18Lbm2v244muiwwZiFtSKUynkxXZat6bFjluhaeoiR8Fj3PRzldtSc0F64CWIYYLJs5SiFUhgIuO0HdmkVAqoRYL0mgJcq4TNBfmOrOfJ+7GkbFUlnR0ckHEhnxD57nY9vQXF3S7S/JczIOrZtKUmecT0zxyGmdOp8RpLlQxCXitwnjKaM3kecJphRjoNp6ZiXyx1BrSPH6EeW75eX6D+ExSSFmZizBpIGFhWE4rTmqrb86Dl4IVelSxxG8tdKpUemYdKTmR3BERJVaPy4W3pxt+c3vg4YMbNn3POGVctMHQbjNALdzOFddFNheXHIrndHtizo5XdwVe3JGnE1dXb4ghcLm74G5/5LLv+MajR6TrG1KZcDpyrTPXWdAaEE1odngGHlzsuLzY4upEco5pFv7pZ18iWuwskwtcrGw3l3x0MUB1vHlzyzQrh9sTqc7sjxPj6YT105mJhAuVzdNLHj97wu3dDfN0Io8nxuNMFzc8ePiEywePuLz4iJvba67vbrh4eMHlo4dkhbvxwOZwohCIEvC54mdbt0cqNRXGlKiniV/98jOzU8Dx7//9f8OHP/oW0+HAdBq5HK7pOs+t7rnZz7yYeq5H8MMTomQ0XZEPJw5vvyKVI+P1DY8ulXmKhOmSPHoDXny1hPTFQVoUkQbIqDHFK4t9QWScRnK6YjfswPW4NmipWglirWJd6oOm7Fhr9fbzF5YrGEDnqU12bpukZMFrpY4jjInHu6dcbx7z+Y8/Jx336I++jbTU6OqFefGOE+E2Ca8OjlTg5b4yDJ6aR15/9YJ0fcf16x0//snEX//Tj/nlq19x/eorNqVCKnR9T0WI22d88GzL4yePee+953QhkNJoyoZpIk0jWgp5nrm7fsOLLz7l7ds3aErGqmmDp1oKh2kkdJHYRfymR4Ln8uFjPvroYy53l4yHW+T6Bb6POJ85VkVDhOxJ4xtquUX0ROyfIpveFCi5crq+4nD3hlxOVDKZTCAiFGsx1PyK3T0T8BbWeq63WHiQjV0EqBOSr+Rgth2lKlqbvJBAFKWKN6bkoqiQ5ecZ89Kpg+IIJYBGquuoAuHRBc82A09lgx88BLuviioajW38vN/x4Ok3+O4Pf8S3/uiHPPvgE/63//1/4SZBLpkQL0huS7h4RtdtcXEH7M91ZNuT1WEe1r6CK4wus/nwMd/5k+/wbz75Dn/+ve8x7B5TxHOGF5a6+2sfqrKk8C7WJCZtbdfQR3woxL435uJaxxj7uDariyW8QNU1IKSQNVNpgXHtlFpr5lZrlXnGhWD5xy11VWmTSq22P7OEH7RhuVi7XWkegAuAhtkXmVOEebcWNejIrIh0re2Dc/Z6DO9DxIAgbcCFD7ISOSQKnmBhCtlZcBvGHtOcMUmoPaNFwbWwNUUs6EBFDPhp6qtzYIKuzK2VhSbSvKObzBglZaulY9fTiaW0jzmTcrGaUhc1SEvWbedzcJaiWzGlhSUVGzinteIqzTak5by252LPVXHiDTdY10xjjbYezjAg02CdjWDsjzZyEA1iq0b5IksDRx0t/KrtyUvi8tLft+G1uHtSWBoIpMu9b32aE7OlciyMRHuPg/NIA6YWuGpVJTagTlRxjT3piq7XwXq7xuqTBeReXmODEPUMvC2sOfOps2vjxKPSkmrvAYxL33ifgXafaefaYkxl8YqvZzxI2uu+/xOXvW/BthqQLAv+0YA6k92ykktyzisouHzf+iPvMRDvS3nvsxPlbAbQQNYFpHtX1vsOy05h8fKrJbPMw1bF0vp1ghBtpTltSd7gJKw4mNMOjwM348ht9UekOpPXu7RueysADG2NVTP5+wOPPwjQlXYDF22bUpXWexnKSbEl5zCJ0DIZl2g3dknSmm5Do7WdNsvF8uJMGkluF7sBCNUkom7ZGF1Y5Vx2UW3xpmzsA9+aE9GzWhgHRQO+RkrWpsP3C9ZGqcUaNbW0zEVPrzmTyogvhVMtlNmbkX5LS4rirecoheBMAkVDZf3iv4NNRIKYpABawYOQS6O110Ln7VASjGkoTkzKKZ6giuRsxt1uYc4tK9cYNpbWqI0mW0klM80zvnhKTqieEylpoI04aT52yjTP64FSKqScVj8uJzCIZ06Zkg0ABJjmQogCzjczd9Y0qtw29aJi6HE9NbzD45YAjpxJ84lZJnahx22VXb9ht93Rac+smXx9xd3+DjdmyAZe5UpbhwsjLpBbbLwTYRg2+CEQpLP2p2obzJ19xtZGsVRyymx8sEY7eEuHbdNO5+2GHjYd0XmiOEr2aJptouIdXb9l6KJJpOaZuDFW1GEayXkm18o8Wlqjc46UUsNXPFU9qVYzQm03rQF4leqNtapYYU6T3ZVmIn8/ontO6R4497U/iy570dDLfTK2PWKM5DmvBY+qMk4n6pTYxg0hBmK796qaubXdb82rzfhelFrajIy2Wdnr6oP5iAVRclJEIpvNwLDp2QwD6TC33ZI2BmogWytaaFNbK2CNmYpWSiqcVNmFwBw8yXtqtskoXpHJg7fwiDlnyOaP57wHsQlgjJ0BF6Wiar55Wk0KYKp5Y60u6I+BYussCNXSbIPM38+pR7KSspJViS0IYwFS7f6Rs8edyHrELfvemYZuN3tte6IsJ19j8OGtWfPOmAeuHXraplZroYOzPdY78wyvuobwTLg2ZVsAuyY7bgOGUipTznjfipe276Y5keZ8HphgoS20iZe9JPNeCL3tqVJtXXiEOmfevHrNT/7hJ5TQc/XmrQXRILgFlHWOzgmb3vyJoFJqolTzCh1PE7fHkTRPrGas2ATcibDpey6HC7a9SSDLPBO3Oy43jsdZ2SeIw5bge1t+KTNsNvRdtL08RDRM3DZfspoTUjJ9DDzYDGyGgS4OiO/MGmCz5fLyAqRSyoRo4nTquDuMxGDsreW9LdUKZu+8+d0UK+ZiF8k5UbJJb514a0j9Bs2FKZzY9gMXuwu2fc88js0XRi2bu9p7o9h6MAA+mjdsm7jXVW5dbaiAvYc5TxyOB95evUUwhttmt6PbPeD6+pbD6UiaLri4uMDHSBqPiIt4IsErvReoM2U+4SkEV6kU0jyS5mQ3VJMkWSo5iBR73S4a6znGNpxYbjqTO4fgcV6atHRmmmcUsSRk7L5O7TX3nbGtq8Ld3Z5ajFlVjyNTnjjNJ6aSLGlwVlIRcAEXPXNRUpoaAGBy6e3jCz54/zmn6UhV5XQ6cUoTp3G01NuiBAlMUyJnu6bjlElNxm4kAWNdSXv9kuyeDo3xKsWKxTlDKpm5jE1qFYwFrGqKAd8UDbVyGo/c7Y9sh4E+RmuCxTFst3aPvr2hircEzTYsmg53vCwzNy++wkVlLgnvHfOc8FOijz1ddQQX8ZuBwzyhoZJOIzPCxW5DxXzynrz3jCEGbt6+ofjegJvbG6bjie1mS5ojh8OJrd9z8XRDt7lAwonD3Z79MZGKDQDmnBB19ENH8IFK4nhKvH5zzThNhP6BBSoRyX5grJ5nF495+OgREgemqvjQGQM3ZdI4kabJmkAXIIMW85/K1fa/mh3VKfubI5/++gs2ux0ffvNj/uxHP+TJ8+eWfNr33Lz4jF/89S3l5Cjb9wiuo44zMLLrMxdyIF/9EyLP+OhRx/PLHanrCQ8fEb7xCGIg6ZEgRzwdQuRcLS0ncYfywP5dPCmPHA8v2A7P1x7M8ocquIjzbR8B2/+XgnDtPZRFgiT3/tk8lXWVC0kBKYVyd8t0e8X73/2Af/fHH3I43PFgKMCRJB3FBbx01Crc3cFvvpr49efX6A4un2z4xkXl7fHARTfx7JPHfO/j5+weDKT6I+Lmkh/fVOY3b9mGSMwR1cIHz77B86dP+eAbz3j65AF1nrh++4J5HlESSUdyPjHOJygnrv2SiFjIua5yXudsDzB5nK1xSuby8iHf+uTbdL7nq89/zuuf/0eyZtg+4KCCxEhIyv6r13z26lekeuBygJyOoBAHiFv4YPeY999/wib2eHWNDbTYwjSVQrvS7fSx2vAdiK5y5m4YqCUeq1FoYH9ju+A93gMtNXwRgCwPaZWilQrWDZu3rRqrLxpjBg3gTJqXtQXgqVnESAj0m8Cw27C7uGT3+AHFwT/+7Kf85vVLplq5uHxo9bNCF0IbcLc6pDE6XRs0WC0TgYnqAu9/+C3+/M//FR8+fErwrr36P9CAvtvRW1O/1DBLTegEaWFGJq20tbCua9VzgMEyeMRAl8US5r4sUrVBHO17Q1jkh25tsJQGTNUKzoa+Iq49B3u6dTnLF5ni4uXKPaBEMguisXpFL2CDmLTRe2lsm2UQXajN5gfnzeMPA6wW5k9tPvCaCx1nM/yq5jNeSqYUC8goOtFym9DWf83zvNabpaXcAm1wf1bl3Adscs7kWuy9qKWtdAtPExGChOaDLa22XWIthPOOpOs1XkFDZ7WKqjCrWVflUgiLF3ljbi3y0AWgQUwls1jhLsy1+49V5thew/JsFpBQW++4AugsIIquz9lISUutC+e6V9f31TmHhCYZZiFMQHBuJRtkrWhOLHWqrGQnY0cv5KPVI27Rwa89wfnv5YZZAO3leS197nL/1FpZlfewvs/r7fc14Or++70MkasufUddn++9C7z2je/+ZPvcGYg8X7ezjFXPsup7su/FYuY+eLhKWe/9zuXrf+u1/dYTeffzZ+ugs4pzeb721z2upIA2Gwqh7flOcXL27zM7M1ipj06BQtEM1QJWcPZzl/1T0fU9cuH/B0BXa5NmtZufVrgauiwrk8f7QHCBLkRicLhgGvWkRnUtpbSLeX6TwAqm3zJFbBfeO4eXSsCS4JZDuaohs6XCZhjWi2/sIvOm8C0Zp2pHrqUBdGAMNvPQK6VQsx14wceVUpuTbXKa4JgTyXv6vsPtBjT0VB/Imq0Jb3IeQ9mt8XCNLqwqLeHGkP3agiRobDetlUSbA7TNTUXJFOaaGiBj00u8Bx8sSQ9W08ilQKsKJbcEVDcaKFAs5adzDjvyhRgCse8Y+oHYGnvnFm8Tk0iKsIKhVZU0Vea2iasqcx6JJRKGnpozp2IS4zEnkyE416jpldM0kmajbhsbyprwlGamrLyurzh2dxzv9lxeXuI7zymNUMG73mQ/pSVEZfOWETEwWNRo0bUlJ9YKtQilLNel2rSvNf1OFqcCk7rWWknNbDxrhdYgTTVTpDETuw1JIYo3ijxWCLomb+v7nm3ZGjjdmdS7166tR2W32VlyY6Pnam3egCrG1AR87PChrAdZ1XvNXUpLgvoaArHcK+8y52SdMLjmoeHcGSijKeBbmYKNsuwADK3o9AJd8FwMA9UHtn3PeBpxpRBCMAanthCLtoWZb9Z5RioiiG8hCGKyhIBjrpa+qZg01bdjMIawvGp8dq349jhfrVBo+6ZzQgwegtA5Y8t1Yl5wfRfNa49KrsYmqxmKmFT0NCdK9dyNM7kIF5cP2e52rQBqyVnVpCa5FlIpzClxmsb2vpsZt6hCbT4EtrDQJh/V5ZBs9zW1GGDvGzBfyrmAWw50cSz0cmWZL90v7tdyrNHDW7EqYf3aBYgxwKfZCLSJ2/I5jR1zzKScSNkYi5SKporreiR2lODbNLjt6dUo25oyIp6uC82zD0qZ10JsSaAyhqe9Nks2tbVna94Ro+fh5QXPnz4k1MLxeCRNE8fDSBlHorOkyGWKK+KIjiYNpAXcVGuS1PaP435PrkKMlkJGm9Z57xg2A7vdwOKBIyqoj2w2F3y4fUD34Blx2LLdXEJRxsPBfJDyTCoZTQlcoZYTKRfqPNMJPHxwwftPnrBr8p3jmHDzzGY7mDySTM6CVptijlMy5mMbyIDgZQGegiUPt/327CWi67VO2QptxYJIQjAZTxfj2vaUZIFM6hx5MullELt2tnqEGMwaQFxEnadU8KkwzZnTfs/V1RWHw8GCPoJ59NzcXKPuJVPOILCJSukcFM84jXT9Duc6wIzrS63oPBIoBA/VA7WZtC/gMkbmCcETo6O0JPEYwzp8Uz03VIu7jPPRvCrb/br6AKlNiJY9b+GspHnmOJmkPsTBhnF5pJAZk3naIgGVaMO+VKlZ6ULkouvxzuwkqiqhC0SNnOYTaZ8pYhYMNWdO4wkKHPcnjseJKRlot+zftTFPapP7lFaL5JSIsQ1inJmap8ZG0NQEOmpT5qqZnJLZHwTzOqk5QzXmf+ptiGRf7yklc73f40Jk2Mxsdxc8efSAmxe3SBoBcDg+eu8pXT8gVfngw2+yc5Grl6/QlEzOMmzoVGCcqDkTegNL1QvVOa4PRz7/6iXTccSLo6ZCGhPBnygpUarykIEcT1zd3PHqzTV3h4lUhaIGSPW7raUG14zzgaHrSWnkq6/eMKcM4QI2WyBSJLDPjqtjZebElBxxeIB4NY/icWqG8SbvLGlGNBDjANWbp2VSnPR00QCQ8Zj4xc9+xf88/k+8ffUV/+Hf/RsebDeQj7z3jcf863/7X1FOM5+/LfhfnfCidM4CWbyO1NMVT5884/GTx3ggDo/pv/1ddGcKjFk8wowxoWNbnQbSqVqoWJVuZcnF6Li46HGMUF2TgLYz35BcUPNJNvaEsa9WJG7ZCO/9v/2e2uwI/OqZ5qJnEwKhJjbzHX/y9DFp19HnV6iPSHxEaVYwUxKmWanFcf3qyKf/8DnPPnjEk3/5fX703Wf8i/f+Le8Hz6PdBh8D/2r6Nn/zk1+SvvqSX79+y+Pehh9O4PsffMDlbkOYZ/affc7125e8/OozpsMNlIn5eMfpeMc4ndgX5W2Bu2myRk2ElGfb44cB7xypFJxYc7y7vOSTb37C44ePefnyNX/1N/+Rz376V+zvbpk0csoK7UwZfOQ4ZYbLHVoTb796wYuHT3lx9ZLq4dvf/jYfvv8Bu+4Cr7FJ8YLtM2aba/LK1mCdW/yz5MtGV7rWXwZZmWqlNEYVsgrkQMxypqo0cd29xzstkgVrnZt42wsXkv2CRy2/18vXmkAVul3Hx9/9mP/+f/wf+NOf/4JPv/ictzfX7C4f8+zRI+6OJzpnwVteXDvf7TzRxRu4epx6nAzU2dPHhzx88D4xDpiu6D8D0H3t9a1AzAKUafO7LktyeGmeYItUsqwSu7Mnr3mDI2JWH2JBW7S+wYDN5Yo30NUZG1Jd831u11qVdaC6yOxUaaEDZ1CvtrUg0MIErW5EHF49JpUzIMu3Rn153qsXXAM0DKSrNEENKRvZI5UKJaNJqd7jJRJ7C7qrbWC/iBdqraSUmaaJrCMdFg6nqszzTM65bRetkV6WhbsPMJ7Bl/ViVD13E633dytY5lbgbIHBrF6r5++/D9S04fPigawqNjTQiiwsOuds+Lt8zwr4yBlMVb33fn0dxAIbprMCq7+17NbnvP7IVq7YXnofXLoPcK0kowUD6WJ7L5fPL7y9xkbMGa+WILuApQv785013567rQkb0P1e1Gl5ur/zxZ2lpv8lj6/71C2P+/559x/Lv9V7X79uO+tHWO37O57jKjtt99aKCTUyCrCGuixfBwas32f/+Xef1td+B+szOg+2zvArsIZ4nJ/TGfyrApoTSj7vxk4b67UB+s6Sie1ct1BC1YKS0QXzYQGBpeHU57X0+9bl8vjDElcfkVpgSXJD21SkVchiYg1jyXg8jiAB1bLSNu3maBeh2gVbi46lkfRLk3/evJw6gs5EEfPIam9iQZFW5Dlvm05Z0lnaxMh7+5OzbQBnD0shtxtapLKLNn2l1DbJcIS22VILRY01gghxGOhxJDEXjyyeWrGmlvMmIbUgtaWe6TKxKaxdhVp8dm2L2/hNjtwWEarkLLYxO6VUK+JNUmqFfy52sJs/fl0bZQqM2ph8WpGSGe0uxzuhLF5IVUlOSNOE9w6rMZQlLTC0hkfFkcQ2yWUh56bpDj5QaiKnbL5tpYBvXlptoj3PGS0GzgXvGUJk0w94Elntc4fDgel44urqitBHCJayKBLAdQv5ENcYmEsBYx2gvedVK7U4SlFqsUQsQdoUTFvx0qSTDfqQZddWY7P4FiThNJClrCBxmWcSGSeBKGbmPeXZGuc2yUNgHMcm42pLvWS8iwaAejvEz6le7d6RJX3VFqh9jflk1FZIBHFnwFRYJ4Zfp/veB+qcc7h6ngTIvWJPdVln1Z6j9b1oyXRBePbkIWQDxnMemdxy29oXem9JUCHGlkKsK/uvYECNAfilNagOiiVx4ix5sYuBoeuMZaMWkDGVjOJWBbPz54QpcRCcEEKP7zqCVDpgM/Rs+o5t3zUPSE8htyQ05TSbF1eqymkc6bodT58/471n77HZbC2JTW2SaVxA28DNyNkKfwGTvZWMpbEt4IOBcJTcABkDmCyp2gI61gRVpyttvpRCmjNpzgbmnXdblrrDSBDVaNXYHrqYyVtmRSvstRjwr9p80dr3sww4zG+wj5EpRabUgEJs7xlnA4C9WPhCpwYOdaJkzaSS8QF8EEK0wtx5aZZK5uO4NIHS1nIIxoYRD9uH/4m0N/+1JMnu+z6xZeZd3lJbV093z5AciSODlCUKEr3IsA37r7ZhwLBgybBhwSJHpGZEcpbunu7qWt92l8yM5eiHE5H3vpqZFgFn46G6Xr13b97MjIgT3/NdVqzXnmebNV88f8JnT6+wKXJ3e8vDcaLcqw+XtzXGXLICUcYSKtDkrM7/6iEWGKaJbhzrxkOBdyuNWaqybd/8H0phLoUxQycWazWsod9YVpsLnj97yRB64jSS08z93Q0PxxEzT0jUQirHGWJU+dR6zdXFBd57djuVw80p44JnnkeyJFKesEY3X8qEU2C35IQ1ymAuRcixUKo8HqigXNHmUUxg1fcz50ywlqEb6PtBt4Cl0IWOnKNS9EWbPBTtqvdeAa+chWgL1husCXjfaXiGdXRZsIcjDw/3jIc9lIwzhlUfmKfCOI2McY/vOtabFYGEzEeys0ixmFKIEfphZL3eaCdcIJBxCE4SzkiVZle4rTExqNKXarzbOtQNnGtNiZyFOamszDi7sLSLKKDlK5u3FA2FmU0hDx2+H/Arz/4Q2R8nDtMItmCD5TAmppQIndfGQymMc8SKJXSWKEKMiZQzH+5uWL02DOteZWS+dj+zbkBy1g7mPM+M40iMyrpNAnMpZAzYav9QNCxrLpnZGrrsMNZpaE05mW4XKepFmUudW5URYVDD7hYWpXu6TC4TnXckKeyOR3JKTDHhCpSHB667nr6zxDIxpcLzZ094erFmZQxmmrEu8OnTpxjr+Oa7V5SUWXc9uAHfWYZt1EbfsMKK8PBw4Ne/+pr5cOT+/R1linixbPqBrV3hxWPdivXVBr/dcpiFm7sdN3c7NbavNgM+BIbVgPOecTqSS9LUzmKJyRKzZ7V9Cv6K/TFhMmw3GyRc8v5+hzXC9ZOXWJs5Hh44jpOCvU7XTiuF4AMXF1c4A2mO7HcP5JLpVx3FZHbTA+9ev2e/u8OTsfHID3/wnOeXW378R1/wk5/8MWPy/Kv/8y+x/+E1ZT+RbM8Oz9c3M7/89sDF0w3D9hO1Zthcw+YHSPCIc2hrtKMgYCesqDoCqRt9UM81tJHoXcfQPcXKDDJDiphiNWxMwHaDAnS2egcvBX8rKlhW+9rqQNv3bWtS/Y8Ak1XmGu9uMLevme9/xf3dK4affIr/0Y9IOG7GHYfJENMKZGB70bPdrNj97XvG4w23Xzzjz/+Ll3zyiSW/fcNFn9g8ueBZFnZvR14M73nHK0J+4OnmBc+ePePzF453717x5vaOnDLHw5EP9w/M00xJiYe7mYf7UZOqvSEFWzeyWtcYVzd0ztEPPc8vr+iHgZgiq4sNXdfzF//uL3nYP/DXf/lvef/tlzzcPzDPhhjVM8qvAj/+yY/5/Id/RDBr4kHYvd3z9vKG37x6T1hf8+f/4n/gD37wKT6vNPBJWiWl63QplaR+fkhriNba0hQgsjDoiBpwVxKlJLKkulHPlJSJWTRMqtkBLfVbLTLPNpZSpW0KYsjp38+bVVXZ085bDBjP8jNhFfj8Dz/n+vkVP9n9hLv7BzCOl88uODzsICVdw6SqpBuwYiwGD5Io2dENK4Jfs1lds/JbpFRZ9vftns/qnnY+1jYbpRMIo6DByetZQbUTYNDYOG3D3hqhKeUqn2vXH1FECQAAIABJREFU7qRY0OunG/VcG6piThtzU2tzmgy13r9ylu5hrfof5mhPNW8db6owVM80Y4wSArLO86ZKGXPOpBRJKSkj0aJeolWmClRJZgX3csHkrE5CPkBX8HICG6zVBFVTPcty1iR2adJJZ7Fy2l+3ek3OPpMxRjcDZ7dtkbpWSWqpKhNQ8MnZluBulz1ixYux9d414oep99rUZp1UXz1V+9Tk3OZnszzn+orSnu0GIv1eZKN9v8p2rdFkX2toycNtDC+f2ZhlfJ+/6sK8/Og4Meg4a7ibR98/AccnME5r78fHiU2m5JaSq1+9qfuB+pGMOYFUH5/LOevtERHAGGKeWWTFH/3eOej2MZPuY8bgOWj+W1f8DMQ9B/kaE1W95j76Nzldp4/f7/zPtmeShmucvaeIejyev6bh/LOY5TEp9Vk0PP7Mzjy+v/II08w6hxu1mnCm2n8ZW5tCjmzV2stKXY9t/Ywl1SZAdwYQ6/5R5wVbH7vvnyO/F6CzTlMaFQXWTvBJA30avMvPY/VMcntATxeIen4ihQb35TP0fqEZU1FpAZsN3laWj1P2kzOAE1ybbK2qhNXk8zRojLU463WhK23cK/tGF0lBTJUORu1whtBpWiC1UEYBmZgL01zwEcRbjcQOhrlEnYQQrJQK1Knb1AJiopLPhs44DBhXTWWpiYmJVDebBsg4svHENKpHl8CJMK8ptdTXAbC24H0HjRYsLYlIgbt5nnWwRojzTBonvLPEacQ10EUVN7UD5avRe2DKql/X0AJdRAyaupNx6h1mPX0/4LsOnOE4TdqZqfLjzqiP2XrQDWb0mTlMWHGUlMlzZJ5nphQRp31HJfqoCUMxIE50n0M9iQwt8ts6lbp4X7sYTbcvRufpIvWrLBO7xRIqk6Xznm7QsIti1UcQAx2GeTpCLnTBK2DgDXE8kkvh7v6e9Wat4FmMzClqgloWxnFEZGSaJv330iTeCsjOxRD6YTH5V4q6gLGncWB9lTY3xN08esYb0P1bX42hReNa1cmxSDUctgsV3vn6jMZI8I71Zo3NhTQdsX6gCx7nFJQu1hFwdNHS9REzNanB42JSaoGaYiRjyDOkacZ6o55RogT54HVxSqXJPZapRQHoc1mpFJxV2UVnCkEU/HBG8JVFY6wlG0fWeoewGhDj2Y2Jh+NMPww8e/aMJ8+eYVEmlqALoxFbC1GL8/rsEwVypqRESTPWqjdDCQZKYjrukRSZjh5sNboV7XrGAsfxqN3KOreVUqUC6cSow8jiM3fewUG0aWCoxYMB49SbxBRTpR7lBGqYtjDZWjhV6X7tQk4pMc2ZkuPybKSUmEXnHTfNdMNA53p635FNYU6x1i1C6DzDsGa1Gnj69Cldp/JQaz1d19N1AyEEvNdwAOPg+pNrLi56nm/XfHK1YetgvL+j7z3m5o5dmhX0qObM1mrelrcWZ5oMCLrgGPpABPou0Hn1jVQLB00Gb9IMY3QtSDljQ89xf2A/qTdEHGfePRy5O4xcRmFOjs2wVoZejuz2I3MR8AHjgzLWzIRxjlXwXFXvrRwj43HP4XBgyqJeacHW8I1IF86cd0Tq6ye1ZMuZOM+LPMYYS86FvutZrVbEGJmmiVwUxAh9z3a15mKjht+SE7vdgVCDgIxRhkTwnlA3ZH3tPIqgLMPK3ShGGTfGOKyVyuILmp7aBdZDx6pXzz/vDCEmQtfR9R4rGUkT3na6tMWJPBUShmi16I/eICYzDB5vhGC1HlBwWwvOXAoxFpLTlL0mu9M5pK1rZgEdpI4pIxqUkktGJUytyFNgK5fMNOmGf/CWru9V7jpnUi50XdAUcI4Y65VxKMp0Ns7RdytC1zGniTSP6gclmf3xgatnF2yur+i3G97f3fL+9obxOOKN168Q6EIiJx2PXjsMTFlqkJCO5yab0sRvA+OMm+v2urGHrTZqYtQNHCLLtSv55CXprSUltQRY9R3FGKZxqkFJgWIs4/HIm1ffktNI1zv6YNj0jk+2a/bvb4jjzPbqCbfv3mLXG8J2S+4yfbfCTJEy39N3W3xv8T4Qp5GH+zt2N3tWoSO4jixZZbLF4HrD0Hes+4FhtWIqwn4c2R8mrSG8IyEYC8Mq0PeBLFITjqWm346klBk2lzz/5IeY9Sfc7ya8Dbx4+hRv4PWrr+kDXD25ZhrvOR73i+2JNLa+YWkmrboOt3F0YSDnxGqz0gbhnSGK5+mTDfu7Hf/Xv/7X/Ok/+iP+5//pv2d9dUmZO549+ZzLJ6/xneUwH4muJ4UVX9/Av/mL33C3/xn/Ig189sVnXF1eg+8Q8ZTcgw20VPIFPKkNjeZjJSaSpWCN12fADiBwuH/Plz/7GW+/fYPrBp59+gP+4T/+J7hhjUhCcCqvO9vcLLU0Jx8o3QwbbegoT7pBexz2B26+/oongyPf3fDw3S8Zhg88e3lBdoFcYNtdYDtd/6+3Fv/PX/L5Z/8cY4U//uEFT4bM7Xff8vVf/X/8+EcvGbY/4vhwQxy/4eoysbnIbDfCs5c9z56vsP3MId1yP98iOJLL2MuBlVmTc2HsdM4LCMYJSWYuEdbrNV0ISC4471lvFYxrLPU3799xe3PHT3/67/nLn/4V+8Oecdxz2N2Tx4wrHTY7usHSG8fFyy/4s3/533G9esbddzu+ePFHhM2ah3HG9x0/+OwPeHJxDcUt9RitzsmoF7Q9CVrNUu9Ta//6F6OWGPrdBCS9f9UXVihLengqhpwLqQF0bRpsm7uzQyoKcu5DiLWcnZBuVqUlwyac9epN1zahtROyuVizuVjz9Nk1kg0hOGxKGphXWWvtdXUu0uaCtQFrM9kKpRi863DGY2kKAK12f+/Rzr3O9W09bHIwZU2d1UT1l2zds6gU+ATKKZN/RkSIKZNKxHpfiRSVJWfAmLTcU2WXOxK2rkUKFrW6GVFgWxVQ1CaKfr+1+xsAKKLA2zQpI9uKaJhLhpIUZGheeTFG5jkSYw3bctB8jLTirauhdRiEzqhHuLEG8crkFJFqnaNewaaSWGxVzog07EmWGvQcAHHWUexj0HFhRTX0WT/w8qdpIEh7Hs5gz7Yf0emmmvGXxiI1Wsuf3VtVIpdlHW/kmgZEKbhTFoBUj+bF9vGD9NH4QBalmSxn2mpkPRdjzKPfPGecnUCv380sa0djexmkkjbOPg/UxnOTROcF5G3n0gA656qtDlRfufpM8ZjF18bCxwDb72PANSD6ETZy9nUObi9X83eAZKcwiNPPGE5A22+9729BkR+dU/1qZJN2Lc4Zhdpkzstrq72SeQTqLUy+piiDer3aM3Q6l9OYOL929ux8Tj/b9uNSvbbNMmdCaXtoofpxonNGEYpV5d6CJ9e1YAF7C1UJ1fCu/x8AXfMq08mzot3mpC1uvk1GtAhQ7y8tPiW3SaEN4rp1F1mAvWmeTzelUjrPqX+m8fGNPS2O9ZMba2qXufnU2ROCiwIRrsZnNwKfSE2oqYaeKp2qErViMKKAiKv+MEmsTiDGIdZrco1YHMrEaFHixRTU/DdhAOekmnSyyAiL0eU5i/5ZKuAWi0rlSjGVOk2luGuQQBLFulJRNp3BgPV4p0WziAPjlIHRvDFMNZVPpm5066ZHnxsyCmwY5xDqJkVvOJKFXCKGzHi/J5WsMtGzLoO1Fr/f05KSxFjC0BNyRirzYxrn6n+n98OJpXMOM6xIQZi8J02ZYh2lsl1SzqSinmaaIml0INTzpjLjFN1UsAOhGoqe7nHKagzuqrwU0YUg1w6Dq4VyTplJCiQF12xwmgpm68AMoRqq6uR7Ao9M9fgQlYsFRwidMhwNCAnnLc6GZXINIVBEn9kiYJxT75TSWKZtMrbL5trWxRlqd+RsfPyujsbHHZGG3C+LjdSFv0pcnakB5KJLoKbIgsdivVvOJSal2JcKHM9RE9OkPlfGsKTvOO8hBawIg1UN/pw1iEQjqJVh2mYwY1gMrtvCWRn/NG82XbUKFmUlOQymFAUlQiAE9Wuyy8voNckYcI4QtNNXSiGlxDTNLCxfx9Jlo7ISrbV03kOMIMoscs4SrIKBwRqCs8zHA/PxoOC11dCUmAvjPDNG4eZ2x35/ZFgPFTjSgIMmx0ilLj71GbHL5qlahxtBDYt1LrVOgUwxFnLrNFdgv/lg1utmjcOZuqAFQ3BT9dugBvboDiBX0HCaJu24iqYRh+BZrQZEoOs6Xrx4ziefvKTvewyW1WpdWWuBoe/xoTsDlh3GG7ZPL9hernh+seEyWOL9LR/IbI47DiniH+4RowwCqQxB6vqiU74Cj80YXHImxpmcIkaKsretejG1QiflpAnLovLLiMOvt7hhw9vbHa/evudhjNxPmZS9NgFEOcwmdFw+fYYbBhJvsbs9Vgq+3u8+eDqvzQlKrCxKQEp935kiEUzAGZU4WmPBQk7ahJjnmZgixlouLi7ZbrZM08wwDDx/8ZzjceT9u3dM88xms2VzccnFWv0uS45M+8h8HNnHmcvLDV2n9gxd8HincgpjNICmAMXX58Uo8zgvYFGT96jBthqwW2VPd4GhCwz1NRQENLVZR32WiyYHUxgPew7jUY3DvaHkQQGlkpnmiWkc6TZdlWhGckqUDCbYs03YWeEKS7MCW7d7bW4zRkOJCme/oxJgI5njYcSUTNd12E7HXfCe1TBgvGW1WnHRDxQs+/2EiNCFwGa9og+O8aCJ1CFYvBOct1xebdlcXTDVtSyVgvGeec7MKeGNpwsdBp3/bE3+vTsceZjmJU26FcqqbC+IRKzJOodiakKeUlxKMZTcWCUK+KYcyamGgngN2ALB2EImkmKuQF4mGEPXBXa7B3ov/Ok//DFPBstVb3lxsWXsAlJgffkEO2zItmPnj7x6/5bYF1wYmKIlHzVBHRxlTszRkkxhvV1xcX3Bfn/Pzft3PIx39HHPZT/xdHVNWjt2h8j9w0iJib4LZGCeZ8QaUp5ZuQELHA4TUnS9C76nJCgJ0pzZXq/49OULnj55wqrr+Pbrr4ip0HeBlJQpY61KHtfrNYfDSEqiDG9nmNNUAf6B7XYDYtheXpBN0WvtIheXHc5F0nTLu9fv+PIXvyS+/IxN+IS03/P6V9+yf/uWIIJ3K+bScXc0fPXdhORf8fT5M17+8AXYva5TbiCYLamsiOLwLtSaozbhrCoqtGbMCM3XpiA5MR0mfvXXv+Zf/a//O7/4+V8Thp4/+Wf/nJeffcb1D75ATCaJLHK5uuVc/qwr6QnhQSNJmsmHGAt9z/DsOf3lBW9+80v2uxvuPvyGwy8esD/8Avuja8JRuA49fR8Rm8FbLl4mrtbwcDxQpjv+4zcf+MVf/4xf/PTf89kvP+XFf3jBN6++5W+//DW//uoVR3eJ9E94kwPv3twRbg7sdjtujztyTjp/rYXVqqfDkDqLvwoEHwi+p/MrLjaXXF9fk2Lk1avvePf+PXd395RSGKcJAR72e8ZxxDqtT4w1DBc9E4UwdHR5IGTP0Hf4zcDTL17wx//0H/Fy9ZzbZzd8sn7JfZzpNxbjIQRdbyULcbcj5sz6cgNelQxN6tq2rcvGcGFE1NqlBg7oHCoLq7gFPZkK1ioDyVXQ7+Re972HKKtL9zd15qy/JnV+VOBfn4EzEc+yN8FoYx7RhqfvOvXuLIUhhHN8cXnK2n/WqOooZwXWY7W5EaneXiX/vRWuyzuY01pwqhHr5l0c1NCDtv19DBDIUvNaYwk+YJwqUqhKFKn7F+O0+R9CwNRmX13NT5v10oAJJTs0gKQxuPTnGphRFUYpMeZCttokMHVPJbmxyNAapwEUpc4FVd9jF4vKurEvgnUGHzydc9hiydZCVWgoOy9jcqK15E9qBofUtaNU5nn7MlKBNFdJDpwAOhH1bJesVjNGqnWOSPWfPmMZtmsvLZTCnoFw6j3ORwBzA7GknJ5yg6ne2g7beaxr15UTOPI7npXGyj+99olx2WSN7Vk6f42Gl5w9aQvovRAaKkDXmGm/i3HWACapVh6PADpTGaco+Kw3Qsdfq19S8wCsjaWPz7YRHD+eDc4Zc+fntNgpNXDxe4Cy9jq/73vnTMWP36f+zwKmtutlzq5dw3M+foffx6Zrz2072vPYklud1+TdBsj9fY7lvtb3Ud846hpJnZt1DlaE/QRqNrREsWQdJ9kI5zYVWEMygi/Vzsy0+ULnimZZVZETThWuAal+nt9z/GdDIhqCXKrHWxsAlEwz4nTGEWwt8J36pmRT/VWgGuudSVg4PWDtJjQdfjsMBu/UD0Z9zaiDRRckg9AE3zkX9X4RXXVc7ZZMVXICJ8DiBADlGnEu9SKJMiCgMk8CphgtuEPPsNkQhhXiOmLdShvTYWymkGonq1QmjsNLIdXIa6w+AEnUoHsuhVRULqoGzw0M1aI75cycZpVD1ZucSwWDrDIbXY3fBqN0S2fBVrTXGL1uRvNl20Uw9X3EWLCeftUtvlqNSWeNXuNcMnMuFFNFSSlV9L8tgoXQ9WSp4QXTiKm+OqUAGeZJ2SDFWFzWFKJQDVBtgbHE5TmYY9LJrFT5jvXKiKpSggbqLliO1UmvyQRNpfw7awhOEwa9a4anVVZW/bJ807Mbo0ETlf3muwDBkY0gkpFpqhR/Ic6tbDKamouCa7vDHj/PuBo0IRSsswy9+iOmpOftvMMbz5wSpWiIRswK1Bmn3XOajwMGmmy5gVgVCDvvGJoKSvzuo47V0kC6s4mnjmnvPIIGTXQh4J2tIK9h6Hu0C1WIaWKKM0U8xakMQ1CwUWxW8+2aHGTa5FSqh5gx5KVm1YWoAYTLpsKcCty2IXWtahQW0M5ao55wxQBVQpsTIoG2NdFCWN8upoTGqTtNzDQarDHFWcNskMWbsM13zQNBiqivkFN2khVHVWCz6TtWQ69AQgUb9d4LsWTm6cjhGDkej8SYWNWFRwRiVOmBLqLni56cgmDqHJtzAmZKqVsrUV9OxCz3RkQDPEQUaJLcOkmFaU7YCgTnIjrUqcWgsYt/iAbEqE+dFAUMGuin3b3AMAxcXV2yWq3IKeGDZ7PeaFfXQIyRcZpISWXFrgv45BhQNl2msB8P3B92HONMIjeCq87ZlamJmBOT1OoGQIvI6l05jcwV9BBOgQjGKjttnhNp0E5kykJ/ccnV1TXS9exef+AwJ7JxfLjb4ewtmMB66Lncbrm62mJM4e37NzUwAYJzarNgqc2O6i9oqSw+LaCRQkqRmCakgrpSCjaYyorKlR2U8N6z2Wy4vr7m6uqa4/HIarXii88/Z7/fk+LMbn+g7weGfqhpr5lUN54uBJW31paereuuBWL1uotJ5eUuBP05oxvAUwpabQDUAign9dnw3tHY3qFzmoJsDf2gXlkxRUouKDMoKNhW9P47r4XIbr8jzpH9fkcXesbjgbBSMN2HiI1Zr5k7FfuGE/gHOt/nkokpK8uqAQv1/GNOhGZxkcpi3luKBTF0XtlZUn+u7wJiYLte8/T5C6aYyfNbSlTmuzeF4BzSWUos5DRTDAzDJav1wO7wwFffvmJMCso541WWOc/gdRxt1mu2FxfY4Lm937GPEZfUF3Mp+JfPpk2ZEBxGjNpExImuCN6F6l+i0jpVYWViTCod835ZMxQstRzGWOcQw/FwZL1eY7rCIU1crFc8v7jgk03gundshkDsPJuLS1y3wvk1N/dHHj7c8vrVa8QHTL9iv8ukufqdDQH1+O1xQeVXhzixmw6MZSRsHMN2wA6GOMzEMPFwfOD9m1vmJNWb1NJ5fX6tKUzjnhA6ri+3iBh2D3uC6eltxxgzb799xW7uePmDH3ExfIrkxO37d5R5JrnCw13CmJk+dPRPnlCKsN+NPOwOylKWjJhMzCMpewT1Y+z7HlNZLL6DobfM8Y716goj8Mu/+ZLDhwM//uHAut/iUmJlwKZMooDvET8wm4539/d8+/o1b9684W+/+jmHdOTi6hnPXv4Rq+s/xK5/wGp7zRBUwi4SaZIZkUwWBfGLzHgDMU589Ysv+Tf/6v/h737+K+L+yO7+jm++/pJ3b75j8+QpfnVxapSfgdTLpuNs21srgYZ1aP1mDMV7Vp9+xot/8eekD1/Tjzds5QtYD/QXzyl0XHjPSjyuZDAaOlb27/n2737GL776mm++fc0v/+ZLbt8/cPP6hpT+Hb7r2B0PvL+/o9Q5wrzdM/RvoKhk0lnheHhAykQXLH1nudyuMGQOD3ekPNP5juDWOBl4a3vW6zUpJd69+8Dd3T1p2YQWnetq3eSDNogElaq7VYcrATkYYpxBEuwTx3KghAR+wpoDeb6jlMLFk0GtWnzGMHM87Pn6V18yzjN/8Mf/gKvnz3XdNzW0agFGa4Nw2cLUe/NojWeRcFqnTEpE1zicw+E1JKI288rvASbOX0/B/dNz0B4CrRUNJRes84vslDpnNnukqj2q6YQVSEgFW7IGNxlXn8+WrNrUKLk2rzVFO3hD5ytrqqYZqm/59yB0p6768vdl815r1BamBKH6N+c6jvR8WniEbtrr/qDtJ60jSV5AFyVNyGIfYxD1Xg2eJBY6wYWMWKeWEc6Scq7uLm5plOj1O4Fs0Db5lS3XmKrWVG+7Qut02cqga95ztvlv1eCN8+dHaB51j6+NqmRqKGPwpJqVW0RwomChdRomh5Ml9G5R1zQbnOYnA4uVTgM/FHg6oUOPGY200pwGp7a9GVKWpNpihOAUxRaaH6s+q43tHCrgZ60lWIfxATP0uC6QXWP9n9li1X0Q7XzM4+de788pBOIxmHpG4PkY3G2AEo9/Vs/1t8GkdjSgKOcG6J3UAtbapaaxC0uIpQ4gZ1IL+itne1lzks2meFIptQFzfn7nXuTtnjaATkPTapDB2e+1//+YOfcxU65hNefHx++1XP7fAdAJSkQQcwLbzl8D1Geu/fyjINByIjKc2HIKaLW/n5/n6T7qA2uWx7SO/XICTutJ0Bq/upttNfHZuDaiJB8DHs0bmF3BGU+XOnCBuYG82QK+NhBUpSKiXvxS625jT157uqeT6tP5+4/vBejmaarMtur1IhrGUGpikhPRm38Wfb0Yh1fPlcLpIYLqbVYvurfqP/RIw21Oxqa+msg36m7JmnKnIJrHB6cgYs4aXoHC7cYYpBjigtSfHhiVySSyKGtDrC5k2mmR6iGTcVInZ187/2e+H+pNV2OxbaV868jDnxm32pp8qYCSXfySQCV+DZnNxuh704AoBT6nOGnHo2jMtakTvEjTVJ/TPO3ycGoyDljxtSA6K9TQE0o1uENBj47QvD1M7dpIocdVYFBqh0AZEyVDLhEXenyjZlsDVuWouYZt2CS4rsPWhdTXSGExlt73eDczV0aTC2CdV2lzSsSk0l4cywBrjCNLNe+3VAt9AZKyV+jUV89ZXShLjXKu48DZk59hinGRhllv6LqefrsCb8k5kudR/SkKIJqYldKs18cocBFTZJwPuvjWxEFdtIymrKLvl6aZlEbmlMjioJq2z0m9vnxoLEapYHOpY4NTpwo5FR+0xe7x0SbZFszSjFy98/pZrfq5LRTikhFRHyvvPL3TTpnebzDWEfqBletIBeasMm7jlGXX/GBs9fET7yE5DG7pDlhbF4hy6saM00gyUJx6bnjvNSHYe6xtE7ZREk0NiaEuGLYC2VKDLqypZtmUKiGvpLucSXki4dUDCi0KnFO5gIJRy4X7rYX8vLsRgmfoPd4qe0MZM80Hrn4+a1SKmTumrAxeKuNtjno9c5XpSa0oTG3jGFrQA+SUlNpv6jVAC2318jBVCnJa5JaFtc2Dbb6tCWBTzkzjvABf0kAaowzHPqhkIs4z8zwhJpFFu3u5GJxL7PYHPtzcsJknlSFEwzjvGFYDxmihG+NM33f0fcc0QboH0xlWXv0v5xyZc2R32LM7HphiJFGQmlLSDJKt0fazJuQqC3Ucj0vxPY2jwoxW5aHOWpzzWO9o9MsodZsQOmwYyL7j6YuXzK7nYYxMU0Ks4zhPGrrgO1abC3xnud3fqyG4q+wyDH3wbNYDm2HgIIUQHM4nTGrFns5DKSdMFELfq5wUqmRX54XVasXV1RXDMGCMZb/fY6wldB3THBmnuQYMoCDXbkeOkaHzKl12HoKQk1f5fG1U7Pd7lcVWiXFKGeNcDQ8CTDWmLy09qxVE+t7OVSZhXYOdtRTnSNHQ9R3d0CGiXqM2eDCe4zGSUsQYT8pCzBEXDA7DPM3c3z8wjRExM8/LC566Fd4FetvhneE4R0bRItU7jwqNqgzXKtCm6cfa6PPeY53XZ7mIouV1E9SY4s45un5gs94qYEzEBkuZR/pVz9Wza3JJHO7vlR2JkOaRyQg2B6zJXKw0jOPZtaa4TtPIzcM9t3e3HOZIKtr9jGPE49TDtWii3f3uAescMeWqIDN1s1pqk0igBmzhPMb6xZJBN6QBaz2mri9QmOd5sUgoYvTemrR4LoqxGFeLVAM4zxgTcb/TUCNjGI8HZNjy4tkLtuueb159y+FwYGUCb958y9ffvmF3f0+KM2/evyNZh2GFl7Wui52y8oOBgGHAwH5E7ve8HDb88LOXDJ2lxIngLDbBmIUPjUVfNIHTlkRJhWHdc/XkUhtVc659Qk0VfHr9FGs7bsdCnB4Yb18z3V2wWW/45HrD3idiOnJ4eMDajLGZlBP7/UGT5I2GGaWSqoQ0M87Q+xXOdSqnN2rbsns4Mk0afrPuoTee3a7wKt1A/iWfviwMK6EfdHxMcyK4wJRndmPEZuEv/upv+O71HYfxjosnAz/6oz/kh3eBi5cd3RPD5z/aMOXCqg8qc5IZbOHu4YE5Zq4ur1kFr3VOFm4/3PP6u3fEOXO5vSCSmKaRDx/e86PGmqyNW/fIFwJOW+a6Z22gkVS2fAWWkrO4i0uG1Y/h5SWkWzAZug0SnpDsBdIF0mHmyy9/zS++/jVvbt/x9atv+Ouf/0e+efWWu9sdu7ujqi5SIqcJ4zKYjJQJfMcsgWlW4iinAAAgAElEQVTO3Ff2vLcK4pQ4E6zhUPR7D8HjjFBirDL2I7ADcdWnUxGlNo6k1tTehypfrPI+0+R9ok3f4CglMe4n3CT0wcKUeXi44zA+cJ8KX331d6Tt55jtFpGobL6uY5wf+Pqbv+Wv/uNfcZxHZDXxj67+S0I/EIsmAAbfAQaPrqsn8AemwwM53rPdXkAz5RFdI9p+pIiuX3gHSQkE58DHCXg43de25is54vH3l6eg/c7SjD6BuLVE4uS6q+CE86cGa7DaLEM0ObrUh0kanamCEaQJ28OwcvQ9WCIYjb9TUln4rXN7dOiirnWdPRnDt71NrP5wvgtM46h1mbekWRlLTfJWRK9bliqbq49MbsAQBpGotY9IbaglpjirmkUsbm1YrbJ6E9dnSK1TliKRpdF99tX2X8Uo4KqCDw1xMW1vax2N2aWgQ2sMN98xba6UGsCR6+dxTgih05CHGkYmRZAKoIkIPrjF/826WodXzIkGBrVH6QyoszXQTaWD2rQtRQMNJGlIkuS8eH+VUmpDTnBWThZXy97dVAWfrm/BGrbBU3KqzUv1XpR6/TH6mt4o29t3HTZ0SO8pTu2TlgCNxWTf1PtQlnpw+XRn+6EG3llrNQlXmt+9xZbK/qygruEM/KuenWbBLM5AHRqBwGJqwNtiX1TVOc0Hv+0dzNm1a6fYWGWNW9bYzudyzlLn+PPPdw7SteOc5HQOWv3uOeExqNWe79P10me+7R0bS7I9H+evs4C5LQD0/J3rfqQ57j0eJ49tmho7TtU4Cke163C61o/3O6ek2o+AytaQMoZGflh+1zWA1D66OgWzzLF6X062bILggsVbz8r1Ve02EXzPldkQBaKtc0py9GFFMoVUCsF1jDGC18agNY/vkePxefy+4/tDIqj+FZUJp32BXLskCjBJZdjMccbPKLuogl8xnQA6vdintzPGVIbNyUcAeTyBZNEJ2haVXSkfrC2CqERSNPkF3XtixVYZT26Pi8I3FYRIOVX2XKEYoVT5FO7k19Uoj+4s+jrnBDljrK9SIZVzGqkpR5X2qA5qVYVZBJUxiAIWqFl+WP698l1F/dwQdOJNiZIjkvPiQaabj5aQaTByGpy0BY3Hg1BZiJrC6JyCiClpsl7OylgLxoCt/gW1eDJOQCxd74k5YZJ2lRZwQJQRYiqN2nhbQ0q0HzdHTT7JSfClI6ekg9y4ilxrYlIqmqSqjUQLzuJEwz00aamBb4JQEzNFlEYI+j1aUIOyB/V7VoG5+vOZjCu5Ape6CMUIEtMyaZckagYfA0YMc5pxpTJFobJgVHKMKPbd9wPFGDX1zbkyMSqzj8qQrABLrsyLVEQ3VEXohqBy6gpsp5iqkWvtNtTneplM5ERpPp/szjsjwBk1n2WSXbpuLWjAWI1bNwp05cpA8suzVT1rTF1U0KIhZmGOM3Ocly5ErotTtFb9teYZkyN9H86WN6n1YktctAoMot/res+YJ0JQXxMtWOxJ/mGMMv+KLN47jbXljcEH1bgaqx4B2ajfh1S/tmWtNafJMivSrSBbLTRcK1aaN1bRlB5ngjKAajot1BRa48ii8uxcGabBaaiB7wLWa6XYkpAVoFO5tambipxq04O6DbEGHzot9K2yQRf5c/3vVHCovN1aq4BkSsqGEpV55FyYooa2aEe+JcTVorL6YqjUNZLjjKDy2xgL6nNpKcUwzZGunzE20HrlczwAGesyF+uei4sN1lr248QUj9w93BPIlKEjZG2MzDnW9UTHsu08xJPs1hoFn5tnMOasO05NDH00JgRrPc57jFeD9ozKiUmFMs9Y47h68gS3uWSMQqmG7Q41ivUhaPp0EWJWM3HnHS4EOqoHpXc1pbZ2EM3JF4M6Tkr1pFOfN918qcdbx6GGNxhjlFlcdEy52gBKSSVb0xxV7n88Ms8zRoRVf0HfBYJTf8FyuWE87FHvk8w4aqDEMAxI0KkjC5iY1Ai7XbdccO68LDCnhLqi454KBE/jzO44qT/hXH0ZjcV3PcYEQlEpszEekzzTfFQQPAtjZRVba3jY3RNfRe4Pkb6/5MVmRX+5oVsHMjXBHGG33/PgDUlMlVWqzBOBFHO1tNBCqqWnNWNxI+qu5X1gGFZstxfKlHoQMMppKPPEw83E7jBifc+Tiwt27HmYZ9J0YEzQBcOzJxd89oMX/OCT5zx9csXbDx9AhIvLK47vbzgejohYKBC6Hms1oTLnxP5wxFi99spSDjUoLy9gnanNR92MKlhurCzddpGsyEptCumzr8Bpycq6avYCzmt9Y53XddIIzijDMo7KylqvNwybLdlo+ioIQ7/mzZu3/PSvfs6r1x+4P87YfoULli5oIrAPnlVfcC4yHkechYvtmufPnvDi+VNKnHjroHeWF9snXAyB3lm8Mez3R6ahMD2BqRTGNLOfJ6ZZwyBynOlDoB823MZ7xvFIilGtUUTYrAa6leMQIR4+8Pbrv2W/3nLZ93z2/DPef3jLl1+/Y86j+g/GiYf9sTbAtBlZTAafq41BwQeLscI0jdjkiTFy2B+xo973aA3jZPEYJBd+U95yM858+e5bHuJI8R5vAsYK47jjNs+47Yr7fQ2qmA9sdwm6GRMiT3jg0/WRkvbMCUp0fPnlr5nTyGdffMq//9nPeX9zx3/zX/3X/PDTT7TOcD1dPwDaxAoG/ODZbC9Zbbb4YVXn8DaGT4zYx0CdnHAdFFA+McZRuxbnELum99d02ZLHicMObnd33D984Lif+ObLX/EXP/0pf/f1V7y5ueX93QPv3t1o3YvDGkdKE6VErBN6Z+i8w5qeWYTdPNNZ3ciJKCtL/9/gRZsGMkOaCtkYjPS6That7TKxejuph6F6Zjqt8erc75yuwwA5ZXJdX2LKzHOho8McUDagNZgIN+9u+PUvfsm97Xj/3Xe4SwsPW3b3D/juisNhxqcju/EB26tFx83uA9989yXr7QW+XxG6gQ4PuNN6lg0P93tuPrznzTe/JE83/Nk//TPC6oXO8THW5onW0a0mMRV8VABXHt/NCqg1YEz36W3DfvZDyw+y1H5aR7KYzp9euVVljSVzYsCY0hr+DiOnkBv1Tjp5d1mjLGvXQT84bTKbiCYXV7ADx9/3MKZ5y5mlVjQVyBHRoK95ngidU19tq7+jwEhj0SmbO0XdV1gHzR9YioDTxFNbg3ik2g1kkSrHrPW3ANJqbL0+2iTRfdvCdmrXHVU4tJaMsqQEKgCh6ZNnjKcKiCGVbFGksumax7htr6rr3FKTV1lsybjq3evCCYw7NW0rj68W7yKyPFeLXNB7+tA9bvbWhiOcaq+WYmsq0UGl0RUbkJMXn2BU1nsGAA7DQMmRedY9dUlVktua90Z9wH0IiHcYpxLeFmaTS64qLgs0NpldQteca5iCPPrT1POwTcXDGchT76nUPbip9U4bO2c7qd96Pn8fpHIOOp1/tbF69irLnuz8KOW0dy/1iRIpCxhllgngdDwG5h6/HihI2PbAp/M/nev5nvGc3fYxeHcOsJ3//fyzfwzSfXxtPj6H8/NvzLnGhl18/T4C5k4g5elenIP59er+zmskts2Fjz+Ts6f5Scfs2VgAQt9rzUzABkdn+pqRoM3EfujJxjMUS+d69jkRp8jQWyQKxp+vz+fnfnqP7zu+F6DrfFhkSKWBFVJT17zFJkWyNTFmYoqCLSBWC8WWorMM+AqatY6qpgCeJqhcwZBGc8wiKhOVUpP6lCooUs6M1qvEzCoEpsuNdiRSTCj7yqCixMoVNoCp72fqxFjpmgLLhOS9IxX10ik54SXT3CFKUfp2BpLRSc2JRXDViNciVJPnItgzwFB9OQ2hmcdWUXoBrBSsqIdaaECPUQ+gYhxOT31ZYhsa//Fk0LoLDZlWdFpBiJmKcJrmS6HdWDXvp83M+OAo1iISKaZUNN0tDKyCbpSMb0R5LYxdqZtAZynoBtFSpS3WUowlGypQmphyYs51cRR7orfSJiupxWUFhut3S6lufuaU/lRXI4qcEkZTNliflF3hNY00Y3EVWGlGtskWyqiDWQG6WSdvWw1ms0qupKjkskfviXoUKu19uffGELqayIqCe9YbvBgFO61jWK9ZTYnjpIEkRgrWiCYuOUeaR0phmShPg5vfOyE2EPV0yLI4S5WHSz2fmIuyMDrdSOcszGQFF1wAtOOV6ueORT0Uc2OCVI/IXOVXUxHmcaKMM6amBxVgnBLTFKsnUCbWDrNGxNcCyFisTVgrlW1Zp6Ymq6dh2W02aYa8E0YKIVpC53GdQ9wyaam3ZDEK1IiGYaRYnxsRxJTFy6GlUjljT8WziHof1nEUrCa1phTVB9Jqh6XUjmwLvun6DmsnLbhasWYMLqjUz1UPlHPGo+ZJGExxUCwly+IVApVRJNV6YNm4V+ZQlS4456rHHzXYR38+VVBQjBaGYtwyf5SsclPveoLXFO4SE/MUsb5XALXr6LuBEHr6PhA6S9dpkI1I4fLqiuvrS/o+EOOM7wP7rEbmcZ6JFmxRttQ8z6RqiOu9p+97jrOQoiygb8wq9Z/myGajAFoLT3A+IHEm13HYWIFinBbjbczV+TPHSCmQrMe4jn5wpCQE12GKJrUexyNh77FemNOE6zw+dNiS6S34+pzGrDJDTRU0dM7j+55i1YxaE23to0LCWGWb+lqEFGF5VmLKlHLkcJwZhp2O+6QMxpKiyv6lSbk0EdD7jj4MeG+ZppHxMKqvpVXG8zjNFWjMhJgY1huAhXGoz02d85JKukttwpkKjqacwXpsCOzHA/tJGIaefliR8gQmY/A4F1Q6a62OEyeIqMfearVis1phQyGXxP39PaUcOHjHzeDZPr/CX14uBf6HDx+Idx/Iw4rhyXNoXXJqSjJWvT5NM7/X+a2IaDp7HWPWKtPuhy8/4f5uw3evv+EYE/MYOUwjc8xcXHmCgc5ZgtWUz5wTxnp6b7hY91xuV1xdXHBzf08umfVmw+ow87CbFfTHqldqUbmweskKXVAndlcMHTpfSgHjHM5VYK3WHAqINi9DBRUauNKAcyoDUxCMVE/Y2kTQ8Z0XwN0aC0bTy51YBufxXU/pO95PO26+fM/Liwv+4Rc/4mIzs7v/BVEEvxnI1vDZJy/5cfgRb759xe5wxLhEIXE4joSuZ73dYkLiYbxXBoozJGv4zf0DcpOxReuEOM3EKRI6z7rrycZwfzxQMDwcR+Yx8uHDHetNYRxn9vsDpajtwu5wAGO5fvKUYe0pxbDqhDTd06+f8Px6ze6+kMadBjpV+wPnrbJfFOmstiiJbDLFOFKZmMcZKQec6xjjzDzruuRchzE9Ip6YDM4HUu559W7PL97ccGccZhtY2ZXaT8wZsUIqlmO2TBIYU+Dmw55jeODNeI//5Q1/8M2viPNb/vRP/4T9LvPz//A3HI4Tw/CEV9/c8ptX3/Jn/ySRi6bQe7vh08+/4J/9+T/m+gLi8cD64oIf/8mf8vkXf4h1XW0SqrS/tWy0ovxd9UCr5+oDJuqFVTDMWMbi2CfPE7fG9VtKcmQ5cHx4y5tvfsP/8b/9L/zf//b/5SiGZOr8aS2ds5Q8Yb3gu4TpLF2/JbgemQrzw5F8PNJnrbENqhgwYshiKUb9gHCqWFFT/zovGaNzOaIe0TTth1mqQYwyIGNKZFMwJi1hYIpvVOhEHFK8BhjgEWOwGe5f3/G3f/EzfnB1zVoGHg4HHm4PpBHiAb779oardeDZJz9ic/mMw3jUazYbVhLo/ZbODTiUQadWxoJk4f27A1/9+jXv377l+aVVXEGqH7bY6mfkao1u62c61WssjenffbRG/H8mAPDxL3x0tLlzeZeWnim10YTFGK/Nh6LAnM4/TWKpU77DIqYgkshFPVhznrQ5g//ez/HxubV7fAIeFEjSYKHE4XDgeNwTOpXFNeLBqUnNYmWTkpJEvFFmqv67gpR67lpjl5Rp0tITqGIW0HQBM+ruRq9P3ZFIA8YacNE+ztJSPf1+Bbsaw3+p39t9bHWC1aTwBg5ap8zLFjIgAsUo4Nfe8/G+r4Ih9bIrgeMMXNFv1v2tNiGBpanfam0ae8lq80dQkkwL4WukEdsaTB/dUCna3E9Jk+abFYz+SP1TRNdDqrKEUpVwAXGebANZKkC39CDaPdLXUMCzAVqKNjSwrQHJS4O/AXMVNxCjz/MJQFKY8Vwia05djvr2Z+CbnEsnT/u0xaPP2qXx38asxT4C6BYwvoLQudrUNLWRNeeA0gmUWhhu9T6VLB+do6qvTDZ1Efj+Qz56fs7ZdLYCpuevfw7Qnf/eR12D33mcg25d19Earr8Ftv2e8z6994mpuJw356B6vSdniiNDnS8q2NdSj9srNsmpqRNF6FfE46j1lAvV93+mc5HLqw377TXWDWz2ULLlcD8zMdLjyS4zNWbto/MGY8rf51L9Z1JcTWWZ1IX9BIYVlfLVDZJzBust3luMN2qUZ6hSKmpyjhbYjxg/9d9N3SCXZc46Q5/P5B/6cNbJqQI40i5ulXbpGeba4dCBakU9IxztvKrsc5mQzCL70oFe2WlG2USWUuWq6rkgCM6UJaTCiKZ3ZAwOjzMKV3nbo2b0aBEulSKun4guOIyA1jB1cbQQnGqUla5davKlApUiRouWyvRpErhTA0AWsMpVhk4zxwcqc8dU6qUWalmkGleL3ithKfj1spykgI8mBlM9okz7RDrJuSqRMs4tQJyvIFrwvi7+yrCccmLMkTmK+veZWtBQN2CmnpNp+nCWYqFtZOA0wOA0EGxly+UiGlNuNaFXO+wFU7Rz5tBn14eOru8xweFzhynHsw5U7fzaliBjSaJAn7hAM7gvtSBWVazRcI+cl2SegjKmssyI7xbfLqGQXdR7ZFJ9dh9r8MWcuhVSN9Hn3Ynzz+29x8ya2Kmy5SaLVlZKdpp0hQVTdCTlnJiBaK16b/WV3QdI3VQ6Z/Gz4HzRFMHWcTDqodB8IqmbZqGGnzit6MToWLPG4YInGWFKkZgic5zJ1RhdN+INilWKe2OAtfvhnFd5rXPVq8wpk8RpsTmPcwVNgFKweLxxBOdqAQkq722U7lpaiSjNP8tZodIKJqNBOIJ6oXlbjZJryEnK6Frp9Tx11Oh9cS3Uovqp1K5Zk3Uos6nNkzX1VzUDdfCpt4GzEIJU2YSyBorTDdvQ9xBUnjJNszKHa9G5eHhZhzFeU3xrsRasYd0PrIcVMR6ZazHhnKPrOoZhVb8GVquOYRUYhkDOK3ywXF9fsd2uETIpRy6tZzdDyoaezOAsIUNwHiuGOKuXmbUe7zusmWu3vAKRWdMhD+ORK7mkCz3pcCQXQ+h6zFQqO1JDdGIRlbUW5SplasEbFECT0CPdgOkGprlwf78DETbbDZ4VUrIyM4wybX1w6kmZIs5BCAqAzjGqj1wI6k/qOrphxZz13lmrm0FrnRqrG2XJtdTW0HWsV2ttPqXMFCPH48Q4zxQM69UaH3oEiw1CH9TKIcWZw36klETfeby1rNeDetNJwfc9XdBgjHluKYFykqVkBf8RUeC8NAa8bgbabCpYEPVnNaEj+MB4OHIY93R9x+X1tVoidGtCsKf1zZjaldexEUIgErHWst0OhCEgfsvxWMi7e969u+HN/XuGp0+Yc8AIjIcj83wgdSvCrKzFPEX6rlcgN3SshhU2xcqSmMlSCJW1VYx67+0OR7y74/pyy2a95uriinT3ntvbGw7TSL/e4KzV9xsn9XebJ4ITgu8wFB7u77jrA53zHHZ79rs9thP6fuDi6pr9fmI8zJRxhgh99QUUYLXaaHrg7sC8n6rFRpsHmiRLGcJ1x4B3temVNbRKWYWtgK8bRtM8W6z6Mhll8pd4sjMIVSai7HmPAW7vdvzm1RtsGbHxSJoSq35LcJ6Xn/+QTYocJbM/Hvjisxd8+vQpbzaBw3RkyokPD/fsDwasR8zIh/ujNi7FqBVFyqR3Hygx03k1+JeU6EW47Hv6QVlhCcNwjOxn4Thl9q9v6IYjLnSUYunXG7x1zOPMw36vAFhNkl6vtsxz4v7uLbe3r3n7/i3juGPYDHRDz8oNGO8YYySmop6gIsxzVL9YW0iuEKeCZMd6fYFYXYMw2jQTG7B+wHce4wJRBt497PnNh8iBDqwlSMKnQiiGDk/JhSnOxPmWw3zD+mlg+/wJo1nz5c//gt989ZpNf8tP/sFLDneZ27cfiMUj2RPcBZQVyICYgLWCxfPskxf8y//xv+VP/uQfsLt9YNhe8uJHf8jF02fUCCc09VX9Cx+141pfaVl16p9tCakqGI9lMoH7MXH34Z689TgC374+8P43bzC7Wy5XgetLz3Zr2PaXTFl9l7frNatgOBxv2M+3TFJI3uA7SyCQMupfPFX2rgirQee9mBNTGbFea8hUQfhU7RmSFpk0/pWCzsqu1ropgv4UTV6Xi/5dpe6V/V7rtrUNCIa+7+h8z+Y/cfamP5YkWXbfzzZ3f0tsuVRm1tLV3Ww2RwNxRiOREghKICgC/KMF6JsoUaSGwoCcpaeX6amuriWzMjOWt7i7LVcfrpm/F9k1RUCv0B0ZES/8uZubm9177rnnrHte/OiGf/LZ53xy84TPXr4gSMf924mvXn9LjIWLV58w9FsuLy/pvMF7ZTzfPzzQhY7ryxu87yjZUKLGO32n9ABx8PzJDes+EH/6is0ahssLUtR9vesGOM5a4KxxsBLvzyIFKTUyP7uJH7weM0t++HUeG5sPfmMbuGLAVLY8iBZnKjPfmuaA2jIGg8VhsMQ5MZmZw+HIcRzJkrRFrUrM/Fc00B9fEyy5y8ImWmLK2qUR1YCt6zpWqwHv/aPWwKb5XLLuu8apXrjGzrWLxHmcFMSdDPKUzdYKa7on8kGhu51kY0E/Yi6d7aHU42mOr3GDlLK8tciZwL+pWWfLke2JmabH0febpUVSy9626Yrb2qoJuhacAX2q3Z5PHTQLSHXKwad51uPUy1scNV1jP2rsbkUNkBRIqXkIVZalgY9nc02KkEnsdvOCHSQpyv6uhBtQ1rnJmqdNCMVaKB22H7R4v7jMis7PJSdteUGjcJw+vV2nMU3X7VxLrcVA9XZau2i0L+uOsbXFVZ/Px0yu70dVWp7WPn+Rx1mmyAn0bbkzQKl5+QLyPp5tj747ByDb83FO3viQqWZtJSfwh4DaMk4/8P1ynBpbfMigExEkf6BZV06/KzRWa1ly1vNW1/Nx+/D8vv/cTgDlaTw+PNeT0YlQ8+dHAJ09nRv6nMrZfGiAqALluh5YG/BG8D6QxVFy5tlHK/7ov/0j1j/+U4b+iuF2z5tvH3B/+y1f/P4bVsyUEpkWPuQfvs4xm3/o9YMAXUmxHonFXtkabfnCZEVoLRRTddMq+8ZUTbKuOXKc9kv9Wm9ISmc6WdZi6yRdUG+E4LUNSd0x9By8c5ig78+izmaNqqwHUGDBOdfkEclSnTfJCgAVwRkVZy4lV1FPt4AMuWrIWB80oTcFSoRck2Qqii9a+Sz15mZjcegESICVXBmA6qSlOiA6jmJMrYTUh6oi9lXOjZKktrxGGtKgbBd1TrWudTJ/MAeWfF4TALVx15ZRjfdPGiZKvag1SqnmEpW1I0V/7+wJFNXxAayySETRz6oBodVP1ddT7UCxDVhR1zHvXAX/wAevwGd0CpbmypizGgCouqgmN67e0+VREnDG0ZggkqUSPBXMsc5gvYei1tdYFZs3TZi8XUtNnKz39MOK1WaD6z0YwbEBKZRUyCnXzb+CocaQ5owLhU7aGCo4TAX+5lgUPWhOMJVZY2ob83GcGKdJDUFwGBsW1kRJClgvVPC60Jy/mo5g00HItcUxVQEOzZtbtaYtkFTjB7BR6fRZtNriROqoZ6LNrJy62OaibCftPdTZmou2TTpXgT9acnACT1NSxlYxFhMCxnXgVdvLhqBOWlIoeSbGTJozRSxwctzS23NqP2/8SanzO3Qdfd/MZFrbqk7rEhOSQay2o1mnLd+hstiktpOUUnUp2twqba5z0tlDWwCltMqu1/tc9U9KBbeLqPbNXA1nrHkcbOZcmKaJ4/FIzrVFvYbJ3lULL9EqqnM6D9vzYl3AuQ7nPF0n5JgpRauT8xzpnavAuN4M570GcrV9fxm3unYZY+m6ns57nEkE5xk61eESY5jLRLZGWa7zxO6wZ44ju71nGLrKYBX6IfD+/a5WDBPWQuhXzBkslk4SOwsbC/NhVDHtVDC5ilOLWdziNJxWBmPMhSkmimgluQDGOfrVijDLMl9iKcwpM8XMlDNzETpgzonewHq9or+8xq03ZOP57t0d0zwRJfLR06c8e3JDTjPWZqY00t2q9qn3nohev6kg/DiOHA4HHUfndH8InbZBO0/wQuiUiUhtW2lRmrGeLvQMq/VSHAkxImZHPhzqM6bsWiGy2W5Z92rekqtLbEwzc0Q1T+SituzDELxquBiHCyd9FGPUIKHkxFxq4emMvXVaE1har0uuGqXMpJTZ7x54++4NAux3D6xWWy4urtle3GBtp9qhzldCrRCztlnHeUY2RZPjoaPYAALeXmK3A7t0ZI6R3WFkmkZCCGy6C/Zi2e0PjAAxIhuhK0Ntc1WzjHEcyTHW/Ur1B8XAnBIP+73qKY4Hri829H2Hcx0xFazxXF3esFpfsD9MtWAhxDnh+hbEKSM158Sb1695uL8jTZF52uNWW7bbS6bpnlJmciyYnHQ/LQXvrd7/rkMeDozjSJxjZcJVQL0mZ64xRRCc8Vivz3lZohbViGxmU95rO3Uz92gB8lKs8h5T2wCDd9rCOY+Y+x0mJzYBNoPn23LgzS9+oUzNmNis1nz+6ce8/Pk/5snVBXk+sF9bnr96RXIW+e0XuP7AYZw5jhPOD3Rdz5wEh2q9HeORfNTY0HQQTOBi0/HRs2v61YoxZfJhpl9f8nx1zdvdnje39+wfZlbroC3J65U6Zvez6oblyH53x3F/ZOjXeN8hAml2J2sAACAASURBVN9+9w2lylvEeWRYDwyrngyEOwWYyRq/pGRqolCwJRGjSrRghdWmZ+O3CqDnRBRNEE3oidkwjo7pXcfxvYfYwTxh44GhGLZ9x8XliuFJz2c//pznz54j9i0ffbLip3/8v3CI/5hf/s01vfwdP//pJ9g5MT8cON7f02+3DL2Crc5cIrLCWqc6ipIJwfHk+SdcPXtFPE4Y5+kvr5Q9nQzWBS3qFsF/HwJSQTqaoVCdY1q6iBgSAYvLwtvv7vjN3/4W+/FHGLvm3/8/v+BXf/H/8kQe+Jf/4z/iT/7ZT7j6dIVbP+dXv/6av/2bL1iFAZ8jA54khilOjPMRO9/TmxV+9gQyky/ssyGJZXV5yfXHLzkc9qT3b+mDxwGHwx6fDdnq/m5qG+GChxhTY4IaWdQ4v4FzhjNdqBpD0+RyJGHNzJNnH/HZJz/m2bOPuLhY8/HHl/zo82tevNjy8ccXZAJh3fHF26/ZHgsvn254+mTDxcUFRqTKFKwZug3WWDrXKegeM4fbPTElVq+eYjDkCNvVhuvrDSLPIB8wBnI0OLfCur7mC4L1Tp0v67VZlKlWA40/vK+P7vGJOfl9r+9L+cz3fj37/5YEWzAu4Gr7o63FAaDmLC1mqULoUZinQopgjeqLGtq+dwIQ/msvLcLX1k80T0wxUUzV7K3xsPOe0Hf0w1DPiSVPMEXnReGMFVUBkpbPS5EFJDuxfhoj7rEpgBbGG7BiavxfW8VrB8ly7GXQdb4uIEl930kN7gxEr2CS/kyPrx0vZXlntkbNH6wapGVOcdwCRi2dFqebeyK5NMCmjmspxJSw87xoiPmag59PnKaf1hJS6/3iiruQAYw5u6o6f2q+V1JhSjOGyto1NU8ydZ7TsAA1TUpSyMZig+a1thIq2mGtPQPeWi5Yx6uyYOp4nO5dalp95wNfwT0lsdRTlkoEqU/VCYg86et/Hyh+aq08HwMeAVEtplie17M5R1EcgLP3L8y7CuYp16gs9++RsWa7rHPQ7Ay4asf6PoDuw+s4Z+Sd/3thW9Y8M6W05JsLuNmOU5+dUsqiIdgAunO24feNZRuzx8YQ5vH5neVS56Dfh9cAnJip33Pv2o74fatsA8pNlVOz3uJFNNeNhiyZJ08Df/bf/4Sf/E//hovNC4a3b/nbv/4dt/GXHA8FDu+IaaeELmkgXTuHxhBu0+D/J0AnWR39jFOBYGe0JcyggFzwms6P04G7h8J+tFgPuCryXNOthS4pPLpJJVcRzqYpJuZssKsjp280ZgVrnDMqQuwsg/d6jjktbYfWattZYxuVOjBiDMmo9oBUHalk1RQBY/AYnGi7SslKVc95pgOsBKxkJMW6GGgLoCQF9opRAMA0fQOMJp6pYMVgKXgK3licAWdVHyFV6m/KRceGds6g4TlQirK/ENRPrUmLUoWXTUWBFSDTAB+sqM6S1IXR1E3r1BZM3WRqEGScgoalLvRy0jFzNfiR3Ki/uqAaI5gKTipDRBcbqWYONFB2CRgralw/YrPdkudAMgZxkRQFk4GsC7hI1AWMUgE6WcZICtVdSvUYSlb9iVJsHSnTdnxdGivVlbbwUN16jVaIjPXV5EErbMYbyFIXVUsqOq/PTSacV80zV5F7oSBF9QpzKfgkJ62YRkWmtoSmRMGpzmLOxLnUZ0yvPRrh4f5Bq4BtcXH20aKUcv6D3n2ligvGetX0Kbm2fpQKrmrwUGLCekdCVftCcDgX6uIMSGFeAKBcjVFgysJxnDlOI/MMXV8FaZeNjmWTP4wjCQPZMqeMlayti3XDjCmTq8h1G9dcHVrVFemsjaDeh7o61BVKg7lmbpKyttI1R7eUVCy42KS6jkWNQVJMuiqY2lLTqpH1P29tbbFNaLuvB9M2OmqrmkdMJlcnYqrbWGoAbG6smXrPKjjSWgpPTq4sg9cc01SHhBOLpj6HRSzW1hZkawk+EFOhRG3nTkUwweM4o6nzuCiixxOS6DPlnJowSFHtvM1qzXY1UCzMvOX+OLHb7xCEu/s7ck6kqikJcqrgSnNdMlXM35JyZPCOwQhbb3lxueVyvaLMEZepSSLInCFpS541KlXgrK8FIKfOc5X557zHi6PrM1OOCmhXMG+OCtLFLKRaQS+UOlYaXNw/3PL7L3/P3/3dFwTjeHJxwbObK9WXs4aCW1iFPgSi0WM3tct5njmMR5Y2GFddh509CYY3Bp3MVSMJnPcKhg49PgR9dq3HS73Gyl5IRXUeD4eRq+2GLvg6T1UTFaP3K8ZZW1VCoMTMYRwZ55mu6xm6gRA6uqCaS6thYLtZg3HMMS37cIxRGUY5U7I9GUpQXaiK7vXb1cC0WnE8Htjf3fFwe8+7795ycfGEvt8wrNZsthu6IRA6hyXjDayGjqc317x68REEw90+Mx1HnHOs1xuc9DykmXd32i55sd3yfDNwGwuMM9PxyDRHjhyZ58TuYcd+PDJXxi01qS3UhKtKC2RRw4bv3r5nf7+j7wOZwsXFNavtlu3lFYfjTEpS1xSrbBGn61QqmZsnT9iuBr768kvu73dIUW1Va2ay6VQ2Q5o2r6lSGLqu7vZ77Hhk/7BjOh6JqYIJriZhFUAotehmjTJvjASc08RPaIWPk/SHsjN9TRR1r2GpSuszbo06cjvv2I9HxIIPgXlMyKhaXvuYuDvcM8eZddez3u+5XA385MVz1lJIVnj10RNkGPhuP2J8AOsYp8RxSqy96vymOSPZUGborepPrsPAdrXGIIQgXF5e0a/XzHcPZLFc3zzl8tlLVt+95yH+hne3d8RjVuMTm1j1gaubJ3hv2N2/x6eJbT/Qh4G+H8gxMU4jOauJWZomhjjQScBU7iwlaeE4FaapEGwtDNair6nJsvOWzeWGmBMPuwfGeWRKPStBmUH7CTkmfHIE0yMkvAhBhLUb2KzWXDy94qc/+zE/+8ln5PQbPnoJn//shn1+xcCP6Yrl5fNrVq4nT3fE8YHV1lPKDkuqTDivdbwqI2JsByao1K6LaoImnv3hyMPDHmd71quVPtMt9q/5HmfdBS3s1y1GaifIjCkTiMEnYXz3wFe//JJnEugvHK/f7fj9118zlm/ous/4F//8v+OfOcthDpj/7f/il3/1C8b7CcYZJKqGFAOdA1ztNrET3mWMhxlHMg5/teH65XPsrec47Vn1HeTENB+QXHWnagGw5GosgqkOeCf2yrL/14Rc917NH1JKGCkMnbpyX18NPHt+ydPnL3j+6iesLi7pB8erpxs+e7rhZhMYQqQMHZfdGtNF4rs9Eg9M056d94z7ifvbO9Zdz4uPnuOdY7q/R0omTTO/+i9/hXGWq4s/JWy2qi1X8+aSJubjkdX6Av2hA1GH0FIspcRHCb56Sp0AOnMW6Tx+1T33v0JPa1Pi0V/K9xyzxVd1PRNAXMD6oKdt5YNMtiWZHu8HnBUcPc6s8Gz03lMDN/PD53h+NtZp8aGxj/JZy6Weou65UvOY5o7dNKvgtGaeDl0BHbGPQKFcqqHWo/Fo7Y2nHBXTupNOSb7ik3Zh+i0qfnKWP9WfqYlVxVvlBJSJ01gmzfkRmHoeq0FVaanyK7o2VHYXLMBPA8QolSxTSSZStGPrxOozyxhF1VM5AWEN4H50Liq3o/OhdlTVvWkBNusxKi6qfy9VZKo8BiTPj9uyXLWUqvf1FOxrHuJddTuX04FpOfLp7x+/HreHPwKs2tyoYKepee75e+HxA/K94M73/VtO5/bh7z8E0ltRFKSacrVn2dAZo3FrPZ4zvl5/A+jOi69n8+57wLl/6PM//P2HXxtA1z5jYWS2+X+Wa7aW0JPZxNlxfwAYPAfT2vN77vR6Drqd3v/BMeB7QT/TMJGajy5nYJqcklnu1wJin33f2KfGOsR5bImQIpiEDytKAecPXF4I603g6bNrrrrC/Xe3XG8v2PaXSHzgGAI2zsv56v2xrctd8RNzNmjf8/pBgM4b1eMSg2q81AndJnLwDuc0v4w5qm7OnBcL7xQL6uZo66IITWNCz7ih4Y3KfBpwawTfBGetOthYIAR1AzXAqu+Q2hIC4J1Wvr11FRSyNSgzWr02VHZSpqRCGicQcDYoAFTAFAhGE67ZFoK3eKsgG0VNL7ClVvMUdEw1kDBSbYANGDHY7DTZNKpMF0j4kvEC1hQoej6pNLuDOhmtqa5UGVOaht1pAawExbqRnwC1JYBpgEmbnPWe5eo4mStA542BynLUiVk1TeoCSzkl4KYi4aUh29RNS7TKQP2d1GSdqnvV2FUIdePQNjaxqtMVEELKuAyl3kekQjHZKSirkAOa3ijzr7TFXKgafh7wiHhEVOcp5/xowFrHYDMe6FxQI4iqWZNEK0sEgysOFZ+v4J4XnKmMSlu1E1XOrjIh2jgk/VsBmYtu5ksir4uYVu+EYizTnHh42DOXo+ocOmXvSMlM00iqm5wxBtP0Is4AuvPNY/m5lMXtL8asOkg5L/ePevy432O8Oih1fYAOinN0VhUUhQySFyffVDJzEmLS9kRjq3tUq1i0+1JDw9Za2dqKW8yGMRgfSHEkGzUDwCooY4qcAoy2r3JaaKWCztTjiNTA3CqjMFVNIilCFwLFGRK+rgl1vuZCtqoriSknkE5kqZh778mmrVVNl+S8dYCaPOvfWassLy+eLgjFGUTa4nzSq1AmTKDv++VnqieHMkhLWQBesDruDVC3nnCYaousZR6PSAX+fQsgFXNQ0L1W6ksF/RtwSQU+izSgQK+7Dx2b1RokUqzhYrtmLIVxmjkeD6SkzKXdw54Ytc3ToO29OZ1s0bUCnul8YdMb1s4wrTq2KbNGk+V1N3CcBS87BeiytppbsTh0jfdeRfixjnhWCc2NZbFUEGvjlug+lXIh5qzAXhFSjsSoLM3Dfsc8jbX447AWbQetpZw4T6Q4E4Jn8lazJrFLwuhCwIXAPCed+3UOWuvwoVsqnyKoBqoztTXE0/WWrl8RQkcqM94HiiiAMqzWqhXadcSYlvU2l4SrgIwu19rClYqyOPvVgJiZu7t75nFmWK1Ja7DjhMmJ9Wrg8vKKZ0+fEvqB/WFkfzgyVWfQruvoug7rVL9ujgmqQ3IWZUg+ub7kYttzHI8cjkeOx4njceb27RvgPcNqw/Zyy2o9sFp3hM5Bntmsep4/e87nn39OWHfcPiTefveAHHaYPCLxyGhkMT8ahhWr9YpxTFwPa+au5/0UlUUW46JfmEXZio1R5qv5j62uyQXVfTNimGJhikf6Vc/lkxt83zNOid1hYn+ctEjoOkJXsF6IqXAYZ2IqTOPMfrdnPIxMGaYEKQmpeKZJNQQtFhG7FDOETLm9Rygcj7PGOG3daskGlVkBUE23ckoUZwhBCwK5ZFJdV9SVTxOHlhzpulH1eet+TG1nzkkLEA6L7zcEb5mnA1MW4jTji6OYgO88vu+I88TX77/jb35jeHm55uOnl2z6wJvbPbf3E+PoOB4tMQXEOPZTIaYjMRascfRD4GpzzRACJUZspzq102HPt2+/I+xW3B8jhyljtw7jV7gu4rsLCInDPDPd7vA7uLm+YHN9RTf0zPe3jALrYQUuYPuei5snvHj+jHke+cUv/pK7h/fMccKNjjgnbQ82p6Q4zuCCpxg1jrLWEIKv5kyFQqKQyZKY08RhOtJ1npIyMT1Q8gPY94zxQJGsCVNKlHHk7t7yyrxkXr3iL/7mHX/zF/+OP/rHG/5t+OdMvOP/+N//b+5f/zn/7M9+zr/615fMx3vyfMTIljjvcG7GuAPGTRSTVc9LKjOpFtSMMxgnFBxzFO4fjjgT6UNfW+E4bZJncf7S+FVjngQ4EkFGTD5gsiDHSHr7nvRux/z+wOFwy7u3d8xpRMweH3dsc2L70Qvu9jOfXTk+vXGMd5lcHHOyHIun6y5JQYhWNeEmjhQZSWXGpRnnBB9nzDzCeMCVxOAGUoHgLKWuaWItpWn5nlNn2gXKKTkXWrdJBbydtvxfrDc8ubnh6c01T67WPH9yQbe+oISO3XHkGOEyGFgH7MoTDxOrq6f0oSdlQzwkbl/f85f/+RcUK7x/+5r3777j1fNn/A9/8k95dn3FdH9LniasKXTmu2rS9BbjRpxv4HnB+B4/BDBhyX+0O8ArsJ0K3jdgvbZ3GgFqTvMD2Nb3MVC+79UgktNO+egoJ4CiVVhNjRO8dj207pqmMi01GBOxIA6Kx7mB4DZ4t1bApDiayc1jaObDizjdWgwLwWLR7a2yEN8HcLRukaZX3sZEWT/K+DmZE9ZnCsBUAFBO2lANIDqBLR8AL6YFnH94OY3B9giAquMkcmL60PKgR+fZ2uuq1vDZwDSAYenAeAQk6ac02ZV2egostpbBExGjnXZjUn3IsPoQFJEGfLe5oCetbCrrFlBB4812XbIUuMXUjgjRTqolgIeFGXgicLS+GE7ft6JTAx7PxvX8OCK1m+5s6B6VJeQxeLMw/5YxsB98385nSS9oAO+HQN335V1NZ+8R6HU2p/Rop3+fzwXTdAuNxudNY9DWc7SuzZf86P6dH+P8Xp7/bpm6Z3+3gLVnIOqHjq7nYF3DZVpr9ofHOgF4ZwaFRR59/h++9w/HtDHuzs/rMRvx9LOmm/9DrwbAnX/GAqJ+8EzWfyjmcZbnGYRcRihBNW5NJqYd8/yOkie8Lbi+0Dk15zMZjaFT1DXdnualUBZJA0PtDPyBa/hBgC4ETWoToi0DUqheYyDgnWXddzy5vOTiYk0IhkJmLmrFPB5mrPHVmUeZacXUCWAN69WGQlFx+hjJsdT2PPVFshLxDbzLqg3Uh4AxQk4zeTzSMlsRKEbz7Ej19vTqzKcBsiVLYUqZMSXmlNkfJvquZ92vMQFtkyzQ955+6Omt3hAFYARrBWMrep8jnQtKqRYhG+ULNsYWQLHoBDItqNYE0lazCWdP7S6lLoZqYtZAgVNAomtwq4UoktgWaGqALqZujFbvkXXaxlRyVvfanBTksycarYO2M2Kqy66prL9cEpRWpSnqckRRTQpbrZfrIkZbWGkbRakCobk6YVaQNyuAko1hTlETipJPwp1SlyrTNmZbk2d9+CtvB0M5JerG1cpbqJu7sviM0apcGyepsFNBH75SV8tSgJwgOWyKkCpTS+qD6hzeWLAoy8wo7di1BaOCNUWAqoFiMfR9FaoXoQlVQgW+0feGEJYFyxqpiYXes4XtWECsweaTDl0T70y1ktGYZKAad3PUdp6SBePsyWVUqIxHIaYJV9Q5ySZLNAkq8OadAhdIqS6lQsyFlHX+WWcWxpMRPd8oiZgSkgsWwYUeKdoerPdKdcVSTJVFotthqeBLydrjbGiVpTa39OvpubBko8DfnAsyR9Uvs0ZlM0RdP3un1fcmbtlo2bmaROScdH6obW0Fyk727aaajmj7tibO6rgpaNFHe/xLBfhEVINOtVf82eZjFiON1jrvrJoBGJpzLGSjDK1pnhlnNQRQUwitsjaNEedUhw4pDEPHsFqrYHLdTBCW1ugF1rbaOqppu1WjmgqWYwumaowgwm6/Yz+OygwWoWS1C8d2iIdsJ6YSyVGwIhjRoDyXzDhFjDiCE4atx4jgjWXbr9mu1nTWUbLgsQy+0yJBVqduKvsYGkiqybQR0ZbFFIkxM48z8xhBnD6DqPaQreYeUlRPMY+FxB1Yy5QS4nvynLhYr+g+/YQ8J5wR7u9uyWnCe8P97pb3b14Tx2N1nzY1wdfzW282GGO5f3jQFmM0WFSDDn2Oc1HQpFXZtXVEGeHug8AuFzUxUgCvV7fynBWUq4xgZ42C4TUSd06LUDknDNqm7L0nuVzdaGF32JPGSQNs61htNgzDmpb09l3HxXbL0HdYI+rojHA87pnGkZQi682aEALrvmezCmxWgXHdU3Acj5HxOHOcEjEVHh5ueX8bcd6w6g1GCtvNDfd3L3m4f+DJ6hkfPf+I588+xswT0/6O1++/w93f8frNPZKjBqgVaNv2K5IPjLsd8ziBMQTn8bWCb0Og67T91wPBqPQkkkkpMqdEbwP9qtd9xQUygcNuYnc8kpJwHLMClINnmkfSFDHWMcfCN6/fsvYdwoAPhuPuPYckJJtJxTMeM9OsrrlFIMWIqe6rKUasFbyzSHAYozFObkLcyzNf46LCknAOnSd4CwmkqKadda4GcSrJIZJV+0XaPNM4Q7UHj6Q5LXuB855oDRih61ZEq+28pkpuHGXiYt2xfXpNdPD24Z6LwbOKA1988Zrfvj8yFiiSefbsGVjPm7dvifPMxXZQXUXvefbiiuvLa+ZpxiBMxwNTHtkfIvfvXhPFMYtnfHfHLn/FMULXr7m+sTzsdzzs75nGmWHu2R2PzDmyH2eOc2acHvAu8KJf8cmnn/E//8t/we3773j95ivG+UDOmeP+wJwykjNtl3DW0XdDbeFXtnDXe9abFZuLjZpYZS3UKPulMI4HHqCuaxPG3YJ7YMwHoKN0PVMxTCJMx8RgLjiuPuX111/yxbsN17eXPMxb3HpgzBsO04rD6CGsGK4uWa07hqFjve4Y1oZXH2/ZbLTAYrFIbqYjLXnX4l4RXXteOi2i9qFXdk6NrfWiW2pZziANHQ1DwUgEGSHvISVkHGH/Hg57ju8feGBm3u8ZvGHaPfD3v/kNGw//CM9xmoi796zdTCaxvbxhjo6yO7J58gz37Cn0nsPunvfffMvd+B0cb+lR9kG6v+Pum2+4u3tPiTPh8kI7PZzHONVULsaQjT25dxeQyh46uT5CE6MwFrzXdfHq6oJPP/mUH33yKVcXF5QYSccdh4eRcRL25cB9TJjgiPcruuMDhRf89JOXbLfPeLjPjIdMKJZynPn7X/89t8d3vHv/e663K3784pJgJoIfsReCrHT/ffFRD1YY91+we3/A9YEpTgQTePHxf4MdnkOyWJMIPoCBcZopInRDTy4TjY1tbdu/lR/0Dza5LsDJY2DoD19NJKQO5gJ4noqoy1dTO0xq+uC8FhLr4kKpTtgL0CDaxRKzQBfwYaCzHisFkzO4jgUkOT/1R4Cyqcc/nZmzqvWtbai1hVKDZZX18Q7nO223tBr3l0b80E2VGo3r9RftcilOx8waU1uJNc9KFUOxlRVnatxpjZCtHk9ZcY+ZWG0gWl7WkAM5GyOAhXVmlbSgJAFZ/ieiAbk0NagG6hi9HcHVuC6lCiSppIrjVLwxTnWlTzlTO7MWQ7f8pAErprL+Pa0zrYEuxkiNM/VcijnNETUJPOWOC6tVzj+1GTXWQqUxNGEiQXMmzU3rXCh1jKxRyapl6pYF4Pug9nDC+xYgVc4+s3YytTOonVOm5rFFkcraTSZVu/Z0N9un6e7oKM6RjaMYJWiAxUjASqqyIJpjm1zb863UtKACPMsDc7YimzZSy7auc1BYOq7au1U2iiXzV1BRddVLNflTgFnq/dFOm9Pt/0Mg/7wLa3EVbuDl2XuM0W6i9rtWFEQEbx04R5zj45bY+lGn46qGqAJfGg8v0h5nOUrRMAZXxzJnzRmbpm4r/jdm4YnI9fi82523FYuw9gxMrXNvuf42ZerxxbTZc1qPUsoEY8im6sanRIkzqcwklznISCRiyoSPB0wakTKTRaWhXGex7hwIlUpEOrXAP1owPnj9MEDXKcW0iMEZIRejBy8OjxBwrF3gug/crHtCp/TMWVTsfao27N7rDUlFQQfnHKHr2Gy3YDRAPc6ReJyIJeNcoHeWUDK2JOY5MqeIc47VasA5S8mR4/FIjIkS1S3VGkXoUk5MJTM7D87RWxVsP44TKl0Jh5KJ1iC5sBZDIFBE2wNVaN7TDbqK1OdSB1Uy1hSMcQhql+6KoRhBJKmbijSNJ6HJFBgpdSNRgV8Q5pwRfAWgqk6BFJJEcsnkSkNuTkYa3EMx6kjrXGUFioIgpVBbNA0Jix26ypqjbnaK0pMzJGVKMKhukeSZ4qEPtZ2vFNVEoZz1lWdMyQuYl1LG2NpKVoq26VhbARHBlKjvRw0D9nPGRrDB44awLKIlztW11pFKIeWEMw6sgkPFVRANqtlBBTVrGFOM1dVt6RSrLZQi2rqMqwCRBnsSQKwjSYMv9GkMKLhXUm0BrBsftlW4zNJya6D+m2WjVZaLnDZY2zaPVnlom4Yyz5QiXI+TEyYE1IC0YK0m9FVOTue2lLONtFYUqK1VJTNHXRRTLuQEJVskq7iqRVtp1B2tUJxFxGG7QOhDdaWEPlhWviO4CgpYmFMklYLLCS8WPxhSeWB3iNVMQed9lMx+TqQp4p26+SqwoK6sKRbev3vH73/3O8bpyOZiQ1j3BFv1myqW5tCN01mHDZ0GWHUSj2bWthccyVim2pZuMHgcwfq6ACeKc9jgIRuybS1pRp3fxEDJuhW7WvkTdQ6NJZElAxlvqQzaE2OWAjFJDXsb2FsXWkMNeHKtohpt1zSONEfSNCNZkFTIsz7fuWmBGcuUM7tpYhpnTAiImGpGUyX8jcXmiDPa6k8Rri4vWfUdu7s7iuimrc6tsmxo2tpS57vRYkIxLAzGYizFaYCk7aIJGzakY2ZlPc56kt8wyYqyTrhgsNnjsyXvRzpnsZ1l2id8ASvasuk6jwuq1eZ9UF23WcEMh64x1hawbV1R9mLXOVY9XAwdndXz66uu2/HhQIkQrEewCngiuJTxJWNyRKK6veZj5nYccXd3ZBcYMyRx2g47TYz7W213N8LldqVr+/GAjxMdiWwL5KwES6PujtaqKywFJCeyHTGho5RIMYL1hmQE41FNMqfuXFYKjoQpUR26pYno6vqg+HLBmYQ32qYbU9VXQ9dWV1vq56ysQymq1+lsh3EZExymt+RZSM4S8URxFNwikB28GvkAdDcXkCdub9/jXUZS4u2brxmnyLOXP+LVq4+4uugx5cBuPyHBMVxcMUyJw/7I0xDYHSYO08w4TxwOdxz293QU7o8Tf/1f4NvX3/Lik0949vIzbp59xMunT3n64mPWyrZ4dgAAIABJREFU1zfcPNwxPYx8+Vd/zfHugXHosEBOE4jQDx2khDeBEhKzi6SkLqqxaJFw1XWEnHGi+pvZFmZbGEsiHidtuT5mdvGeInCcJtWezVpwdEZISeUFSjFMc+FwKOQQSLHjON0xTkKUQjSZOAt5MnTDoAzdcaITGLoVkBhCwVthl5Lq0Dp1pKQ6XwsGSUK2RTXlRME0yRDnghFTsXOHLaf1XWgBXdU/Et3XFxK4aPyQ81wNnBw+1UDUWEr29MEvzCspEfEJTEc2sIuZu8OR9w/fEGzg27t7vjvs6QbHjz9/xc9++iNIhrevV5ScWa0CxmZSErpuQ99v6Z9dsbnY8OXXX7DbPsG7Db/5ze+42x24vLhiN0XevX0DvmPVB/p+zao3kA+M46wyCNNEHxw31zcghd3dHZlInEeuLzc8f3LFfLhjCIHLzQUiwvE4kcZMjgKiLKWu6xj6nq7z9N4z9B1dF+j7Ad/1gIqUO0FjRBswCfIUF3F5awOd7wlmxg89wXZMWXDDmsuXr/BPP0OevOLTm88JN1d8/DSQn/+c1ZOX/PG//jdMb37C5x9tCRefcyl3fP6Tf8Tl0ytWmy0XVxf0W8966HFYGmFbrJqO0eKvCioMXdDW0JpkauGvQTnSFvkFkjPidCyK4Kw6nZoyQrwjT3ssK57eFNZrIZYMKfKs93z208+xR+HtaPjiwfL+b1/z5euvuH2YePbyBcbPvHzxxwyu4z/9h39Hjrdcui1DL7hg+O27kbHsOeQj5KjasCXy7v079sc91lmOKeH7jlAKkxRknhdG08IoMHp9BWXTGKMyNLoW67WuNiuePH/G1dU1L16+Qpzny9ffko4j4/0dZToiCBOGvXi6yydcXf6M/tNPkesVNx+9IAw3rI6Wj5//iKvtPX/2Z39M3l5zd3jg/f13vHr6nI/WV6zE0vVrcmdIc8HZgeHuiLHCeBjZz/d4Y5mnEfyWIplkLc6BsYneZ9UMFBYGkYITroIEgidrIbMsUtlndcozgXQes1++79UMQfSPVXLoA7n8CmmYWhTyC87rk2GwHU4CxcxMNlEkE7B4I4hJZIlMRSjVEKkPB4L5FmsF5AokoH3PZimG28qMOsmVeGr9GuOFwU8EO6vEhFkhZaxt0+oWnsSqlqkLZBx5zvXqHFKqlEmOSImQ0fliIHUW6RwdBpsEHwUnraPGaCuoabFRBQgzWLdSwEMqWFIpAks7ZiVtNDM74MyoRTuhSpVVEgeTJC2QeqrkAeSYCT4sBWTXedXyrPdKiiBJ76OzjSIjKj8jRWOp0GlL8pyUzlCZh1Xgp673suQf1mqe19h4CzgHVeqokiWsA+s0BipKFQnq1UA2Qs4RjKvaYLbCTkZjYLEU4zFopwq0HFRnp5GC9YpM5db50th/JdUCsoJeTQP/HMpo3TnQOrrsci8VKcoYX2d40yZH4yVLRlIFbkG1qwWMrfBMsRTbcfQX5OD49NWKDpj2Pbdv98x5TzSZYxGcywxEprijeDUmm/KMRTWAW4Gh7but/VvqOrYY+YnmltK6RU6YEirC1Ugmra1ar0sLw1V6DKn7h/5tSXkZ98Y6PBEQKrhYj5dLIyO0EaXOnzr2UjSflyq/hdHiMS03gaa5KFhy0mvMUsHISkAJToEzMYYueKaciN7igyeMgksQLaQKrnFKqdtCeGL7Lfm73r/Kz1x0M52ztShuGyzB4qxrNOYyVW9OiyQqqaNxmnoNJBGKV/kyxkRPQELHuxJYeeGVSXDYYd6/RfZvyWVHtBbpB8RMLISTOkdPNMDTVvcPvX4QoDNttT578EQSphScQBBHKOBihOMBSUIhq8abQF/ASsKhkyiVVB09HUEKIaIC5qLAnyUSjDIuOmdYDwPkzOQdMSl7ZbVeqcA7gg875nkmjpNW2irjI8WI5EgJCrRtw4DF4HyHK+qmmscD5jhjs7qubYctJRZiKbhVjwuBuoZxrl3QnDXVbLDgsQtLqonOU3RTiKhOjqkLYdNHUF0+iKWglJ/KHClaaY8xkyroqFmbQ+ys5hyA2EIxmTnNYCxzLIzHmZRqS7FRI4YQtD3YBzXsCBZF+XNUPb0yYyRXgLPgrGc19HjnKWmmszVplCognvXhNM6pdbYIxldgUU+Mc2TY1EpPqRM+VnDNOxiMo+s8W++IcSbNkSza7qMbnhotZE5VBvWsqLUnowGssjq1wiemuqy21jdjyKIghq1JigIiqn+GM8u5KotQNy6Luuta0flkco2SioKwDRg7r0IsQpyG+vCzIP4iCpaISE2S6/2fY9V5UvCnVUCs1dYPZ0wztFVGTR0LMU00v9GFnYJLpW1uBhGnbDgpdaNwdUMz9fxU+9EFdTR1tdLlQMFx7zC+CpdHi5OCyQ4nhiCO2/s9Ft0ULFW4XALiPSUHRM3xtLUUyB5yjOz3e968fk1KkZefvuKq93gHxVk6r/YqY8lIUXZbKy02XZAY1XnWW8OUNajKdUPRDhIF01LW47heyDiS0U04VjbpEDoFTEsj2ddnvL4vlYyvAZsxUHJmjrEGMBC8JacIVgjB44NWmnMuxHnmMBemeSbFUjUARYG5WkiwRjXkjDVMMakjL5WGbwx4p81v0pJxfRa15fy0cVljudhs6ULg4e6enHWuL5qWnKrJVmsHGhy0Ta4GWkgmijJ5fdezNo45ezrT4WzGuIH1k5esV2u+feP47psv8EnRgb5Tl6NsE9ZlehsgZoo4jOswXpmAqWr9Was8PmQGyRijgRimYLxggyEEQ/AwhBoQejWw8M4pC7FUJ6y6+Xdi6I2ht4bOCt4UvFHnsGOcyJKY8IxJyDawP07cP+zUJTIntkOHPH/CzXbNyipQlkwBIjHPOKsFBaomkmj5lJKFbLV4VETZk9nUIBdRpqlT5NlKdRLPCUTFz5uAdJGWXOt5OwvznNlJImWh74yuTUZZrS0JT7HpGDplQFsDAWxnsaKOvlGEKSW6nBXoKUnbu2uL62boGUNt25dCnKO2bBII/ZaSZ1xJXG43DAbMsMGvwHllFtsQGLLhME/4YLBjYWUy49HwcHvL+9sdv//6Lf32t2yurvjx55/z+aef8OL5UwbX8fLmmh+9eM6v72759u136qa9WiPO4TtPCR2D7UhdIZgjpURlGdWCijeOm+2GdTC8u33NbhoJnWPOlllVfkkxM+52dN2A4GjmY3PK5KhO2hebgX7oKJK5240MwxUxOnYPieMYiQ4IAS/VpMFaxIPzFheFNM9Yk3lyc0HvhPF4q59jlSFgxGjFXqr8wtLGp8WbWAoG1bR0tsVcGjTnCt40blRruV6SnbpOaf2gFm+cV5ZYUsOeNEekN3Sdx5BrHOM4zpHv7h4YfGA+zBx3k7ogGkFcYRgc1zc93o7klPjJqxu2/cB0vKPIhHUDu4PhcDgwx47gAqt+w83Tz7h68jHSX/H733/Nertltd9znGfGGKG61XqZ6Z1ggu4z5MR2veHq6gprDNPhyNAF1kPH+3dv+E9//h857B7IMZLnVE1Z0OTVJt0JpMVcynTAecRqMW1OCRmnWtDVRLg3Ad+ZJWKWrAmmDxdcrBObQyTOmULCdR22XxHxfPX6lv/8y19xub3hmzc7djzl47ljd3zgL774Lcevv8bYH/PzuMbITN+tEGPY7UcEw/F4IM8Rt66JSE1WM1kZ9eexuJy1wi0t0hWgM+fci6VhCopCIVYSMIOdoY8YM2KYsN177OqOQ37LeDS4+Q3dama4XCGrnv1wxS56/vb1Axvb8fJHP2HmltT3moiO7/jqi6/p3v49N9crPn22JRzfEtIdtkxazLTayTLnpCCctcySsb4jW2XplLp/K6NIQEpNtGvhU3RzNmJqsVsZVnOMZIQxJe72O+7e3/LVl1/iilCmCTPPDL3DdJ59CazMAJsLnvz859xcO/qLC4LfsHKOZ5cf8fzS8LOfvYLrF4xTZjdOXHRbyt2R3/ziP/PbL3+N+IkkI6tuzTr3rFYDd3nkzf6WfDeSx5GtvcCtfsTFq08IRrBmppQjkPHeYcVjTNvzbY1tRQ2apBDFkoDuLB8TeMSGEWmdNW2SnL5pMJ5ZUtb6N8a1SGeJV0/8pvpFBFKmzLMapGFIVgGqLhtcbQ3PplC8Yz/PfPP6a15/+2u+e7KnT4bL6z9S9mADt+r8bK229WJqPKonbJwQ/Iy3M8Y4nOnIMmksXq07c2mxjSVlxaeDtUtxxVQSgUGdQl1W7dloC8ULjkzIQqhgxiTteFJd5EtlbSXdU43OuzYvH5t4tK4fZTk1ra52PVJBUUPBenXBzZKIRFwRcokM3Yp4zBqjU0ksCZJNGutUnS9r1DihSnFrztBkKHKqRWBbDW9KU2zRGLHNiAqMmqrnKywHqzE8eANUlt5CFKzgXs7a/VG8FpGERkqwlQFV1xxxS0wt1tTxqoCxaJ6h80/PK0upuqv1v5JbsrcQXKjDruer3RKlbXgtbm78KWmQEerg6VrOo2ClM3YpZhUjlQmn52RLa92FjCOGKz772Y/4X//Vz7j2gd37NV/88hu+/u2v+erNt5iUKGViNe9BjswosaHkUo3kzs6lrtcZwVaduVMbpXk0n5bn17YWTeoYVdKQ0SKUoaj0ErouSgXYtOZna16px2/zo60Q7WfWnow/2j05Z/xZWFqts6kYQr0nzrYI5ATQlSUesZqLtuzKKJbiTO3coagxnrPI0NOvt1xKIiZhJDFKphTHI3VEc2J36hpYixbmrFhRYzNnGhC5PJKPJJjAnCTJKjaA9TrmxqpkmfGKfYSgxToBoWOSwOsjDHnmoYyw22PuHsjjO+b4wLFEJuvIWYFJPa2aJ5+deyk/jND9sItryYtW1iOKZX0QS9Fg/ngo2DLhgpBtJjtt5emiOvXh9Mn3RrDk6gI0MscHvbWVBUNW0WeMY4qBuFpXRkdUsXwRjsXha3R9QDWnZqtBrK1JfDGFaFR7yJZCEoerk1URVYvPASYFD33oGIZBg+2coO8wwRFCQ26b/kKpKGtlzbSFpgIsqn+jAFOqhYTaXVcXAH3pZHUKMkmhKTwY0RbXIoYsBm9BpE6clrjXT9SkTrUuUlRnyGmcdZNqm70zbFYD280K73qC0WTReY/rHUigDw4D6oQrSct2oiyUPEeMVyAoxbiwH601SCp1AQ1Y60glkeJcw0VRZ8Vx0jbLYjHO1yrV6QGzxrLqe9J6za6KNGNUr0mrNbJsfFLptbnOybaGyNlCcgo1NPjoO2VFqkaJwTsVTZdcmJLqbFmjOgbeWkRpZxipLr1Ze8oX7bK6Sddiizr1lUKm1tXqPdLzUtCjucWaukKZmrzr81VZHPWYKhCvbB3qg+xsdZR1VYfPnKj/J/T9hMiXSn0ulXlhWqVGpLIwc8UYmiCvq4uTqDabyboBe1edoczyXtc+I7dzcwtV3jllZvjQA5ngDYNVs5QoGUgKfuXMOI7cPzxwMz8lxlgBRr1vubrGZlGAVgExU1mA+r2pVZpUlKXnKkUeYxagNIuasOQo2m5hIcbE3f2dMmrsFZ1v+hWVlWgtPqg4MqZSuxF1xq2DnVPWdtTOa9XZG5wSuwBlQ80xMU2JlDIpFwXfRNlv3qmDbBcCyTZmseoJUhNrZ7XdVIrRRKxuQs60rywAcTMzcF7BmaWVubVW1/mnDLwaHLXgq5qLtAgoZ3VL64LHWsfh/oDzjjkatt0Vf/xP/gk/+dM/4Re/+zv+/D/8e9796lfEd+8x3YqEfq53qrs5TxO5+GUjL0VbD2NKCgR7p8WZuk4a0+7rWSsFapxiVegR4/V/4iDlgjfVSMgYus7S956hDwxDoPPa4h+sxWUHocOLU11Ip6zlh32hlAoS4gheixqmQBStZC7OyBVYMcZXM5VqMERSAN1Zdd1N2vaqGjJK6bVO3UuzaCudauS18W/JWX12a8nUGMs8J47HB+YYuLke6LpQHctFHfZcIOUTu8p5r8FyzpQS9XlipDAidsb6HhsEM9XiQqGChD3WrqvWZAFzSQiCdz1SEvvdHesu8erlx+xz4c39EecHri468jSxGgbwA/spMW6f0+UdIR/59tu3mDExZ219uL+745s3r/n9737Hf7m84MXzJ2yHnouh49Wrlxz2e7744kvuH27B7ejWa03csz5ztguE1YqVM7h1x2q9Io1HDuORZxcbnr98ju1g/GbkkNREw3iDOG3DKdYwl4hQWy2cV8Bm0pYREwLdak2cj7y9fdB1vHiQPd0QMFbYzzOkgrcD+MrGTobOOmXEUri6WnO58ry5fyBPM4hfAtQFTGv5sNHkJ6kFuf7CqWLSnIU56zooRjcZbVVqwujaxmlr8N72S2sNxjmMUzZBQvXsTE1YtWAl9L7DBCFJZk4GYz1TgV0sTFOs7NrMLIm/+91bdveRq2HDxYsbdvsjr7/9FlPB+7fvJiJbwjrjDjsun11zub3E9Stunn3E/WEkZd0Dur4j5kQSTcRKScoGDgEtsKYFa3ChZ3N5xcVmxdXNNV+/ec3vv/oSZwz3uz3jPGMqoNuJgcOEWNWTnet6IyjzfJ5nuuq63Hltj7bG4K0mxyE4mt7OOE61muEwxWBTwcSZEFa40HE3Hnj35ReYwwHrOko2/Oov/4off/YZn//kYz56+ZQ//4//J8fX3/GkM4y7f8r8cM+3X39FeSMUb9nFxGES5jkuUCst0l7E3d2Jvb+85/yl8fIJymMB8UrRdLBzGcoIeYeUe+L8luP0jof9ka/f/T3389+zS9+RJ4fxBw7zgULis89+zqtPr7h8+jGhN3z161/y9vUbjtMEw8QhTkxp4jAeKeOGktc409MHbfssJJwLGs+Wxj3SdTSmAlNknKOaRZ3pGp3KZTVxkpbQV82hWvQsBeZZ2b+pZFbrAUFdo3vnKV3g/yPtzZ8lua77zs+5S2ZW1Vt7RQMgABIUKZAy5dEscoQdE+EZ/zYe/82aCEuyxmN7FCHSIiWS2Hpf3lpVmXk3/3DuzXogQVIReoiObnS/JSvr5r3nfM93Cbe3bE420DnCPmOhDtBm3Oo+zvU443QIHTKX+2uePv2KcrHlche4uN1xvjnh/rDm6xdf8/e/+jvGtFWf4mJ4cv8JH37nQ97u3vGLz/+e6/07CBPvnT0k9x/wx49/jBOtfXMOxBRQORq1lmv1mSzNeQMff3/rxmI//bs/dP2wQGOm3t9loeiQtdShONSGxUAe2e8umMKOZDPiRG07sqGUwDL0s5YpRN69u+Lt22vevR1Iry/45I/e52j1eFmzhW9/PXdlZgo8NCaXguWmZEzOlSFcaCBGThr61Rh5QlEj9xiRFLE5q6imKOkipajycRS4l3rGtnWVMxXgoDKaQGp99E3ftmWUW9nKicYgaImXlsqrEFHcQOqA3RQkC86KKj2SEKMGAZhiajieoo6Chh6mlFR54L2CcjmRS/2Z0vwOC1Rpf6nSwOb3bUpjSFWwQpr/V8Nz259VQdNEmYtHV+21UvNQlSaWruoMsSxBjO3dFlFgTKxuT0VlmboMtQqVgspBqeylssCIyAJsat9RGriYi6qkKghm2nmKVPxRKphfn6vceq87fYzU56AcPBXbpR0WZX0UKJh+xWc/+Rf8X//h/+DRsGG6OeaXP3vOf/tPf8l/+i//Ga6vuLm+wM4T3nUkU1U2YnG+J83KYFNZagvYVN0cKCAqtJ41L/eARnKxzQ5JtCepxbIstkjV974c5MdSVI2DND/oQ+KpXsvh1S5eiFXF9M0BQCMUKERmF6XQt3+Pu76K7UaK2Grz1UCqurYqqJiMaM+12XB6es65BLa5cDFNpBDJxi3P1rJu5UBSOHgMHuTEi3+eNGblYZ/8Blxan4emMNCh650FQPs0g7HNRsuQsrAfE++utnSv3/DKn/Kdt++4vblmP24Z5z1jicxZ/ZOLOVxX+/2gnvn9LOjfC9ClChZkURCJ1szWNyimpGjnnDASkYQWw97SWbApIRUsMFiskzueT4l52us2n7XIkOrtFXNmwrAfRyaRqkdWCZTZWmwNfJjnefGUylEDFQp6splSvXqKYEULvjllcu8J3tWvVS8WlY7WRW0qECYo6CBlOTwVXWkLksUgvoocUcN5BTsEQbzXyVOqG1qdbCggUmUtJdcGSxeNFCVpmFzqF5bl4WzLrG2yzvm6wSSid5DqAVMU/HFGOO4tp+uOdd/hDXROWHfayHbeqh9aDkz7PTEqeGNw5OKQ6Om6DimoqXhK+F4n5BoAkXF9hxj1KLmdNGGvscKkTl1yUgjSunqnkiZgzfMe4y0lp4Ux1h6aqRpdLycJLBTwtikfPL4OG8/hMK3RzikRgxqtSy6UKHUqpgCgM4J4R5RCEGEGTJfJTqfvC20Xqt8g2PosWNLBzLZuIm3yULKCTUXadEqp4hqpnckxqLypMnJSgRASxupEyjhHNwy4BGLqw1xU/tskkcZIXedQiq0gdvML0DWl5qiVOl2LG4pucMUsvFi9Nykr0BIjuTYrNptlQzSNJpx1i8v1nTiEduT6HikDKC8FoQJGbWNu0+KUM3PUpjbmwjjNzCER60ERUsTUpFpnVW7rRNm4TnRiJKIeYZ139NZVjxFIeLLpNNrddKzWA2PYcXNzTWPCPrh3jjX6HFIquGoMznqs9RSSBt8UXbOlaCqXc3pwqp+GUSAuK/gSojKeUtHXjKlFqIjGdWeVelrnNJBEF25tOtRbqlRgVSolfwlqodz5Vb9OjHqe1alWzBo3Y7FLwV84FCNt8qovppAiOHdgvJacyTGpTIeI7xy7sYBZcX56xJ//L/+SDz/7MYUVX0jP5Re/4tXbt8xJfa+6bgUhkwjk5MkxkSQTjYZJaEhMlQdLTa+yegBKNSF2xtYpp1ZOVdhPotL3bSFKRoyabFtr8J2l7x2rlTJtvM2IVWntSizZe1wUcIlie4wz7MeBqTOYkjhardhsVvR9R4nj0tS3Yl736gaAKChtlFoMolI4YzJQk1uNqBcmFuN6KEIMmtDqTAEsznWUooVsrkw5Bf1qAYYyN1OspumlSgcwOvSyTkMxYktuFgqJHBMlhxqs4Ch5xlRWng4PlDVQMIQkhGTIeGJuL+cIa5RxNe1v6GVmvTnm9N5DwnbE7OD09BwXI/v5gqFbgx1YeUfanMN8A9MN2+2M7SMRix02zBlu9hO7/Y43b99wdfGGPI1sho6j1Zqr61s9U2sRPc+JMQSm/cjORw1PsAKmeg6iRWMisw0TuzRTXAVEw0zJiSQzOer3NF4DblIsGGPx4jVoovNkiYRSGHMiAWOOpHhLDoXjjeHBo/tMJLbPXxPjxNHxMfZoxS7vmXPEdxvWw0CMe3JRD5JiWjMV2y57AF6krq+szaCm5SnjIObMnBMhF0Ju3qYCxSzNRzPblpKJWcAo6476PBUDIQeaEUSxWtxnozIl4wzZqA2EiCObgSQrokR9Jt3AHCdCgrzLfP50x27vuLeBm5uvKGFke3vJHEZ2Y2C7L3z06Y949MFjknH49YZ3t1ve3syEkLGdZ9wF5pTqhFqHGVaEruvoh560rwPWlLi5uSWJYX16ypOPvsODe2ccrwcu3rzm6uINt1fXRBFM12vSWu8p06RFMSrzb7VcjFG9clDvxWFIlC5TvMM7tbqQWjjbajpunE7/U1LmN9PMYAwr74gl0jm4v15xfP+UT+6fsNtP7O5veHTWs7GJJ2cn/Os/+zHxdsuPv/89Bq+MGVutGiRpavX5yYl6kzUEIwvYKofCUKkQv1Wb15L/8G+/gX4oZqD7VSYijIjMjPtrnn71D7y++JLswAyB7322oesGSJa4F8IeVp3jo++cc3JeuPeg49H9f8Gze+dcPn9NsT3ZD1y9fsX27f/M/Q8/YnP/MffOTnl0vGZz9pSrYNjlV1xvEyXVeigqwzynzG67x4eoFjV14N5kV4vx99LQWETp7kujqGW+rpX9dof1npIi52en3Ds9ZdMP7K+vefPiGavjDXQDdky4/og47nnx7DkfPdooAJASkmF7c80//uM/8OXTr9gVx8UY2U2J73/vE/7Pf/Ov2Dw6YvuLwOdfPWeubOQ3T7bYsyMurm75/Mu3XFy8xZaZ6SF8/OaS97dbhiOvwzWjz6kxWieUMFXjzAZaaKNdSW9/AHz7p3zUNQQoUFfvZ+s1KFAiIUxIznjbQQIxPbBlHN8xx1uy8fUKa6r8MjAo5JDxvsO5I4bVA9abJ7z44pI5sAAq//SrrTC1VACgMtWkVMCqZFVy5FjVWjDNCvpbCiVFYpwoYVblSNEaSGl3Rv2vqzVAqSC2hiA2oKYyWgpkUR1nG27/1rXKt/z/nf5F7SpQILPVdSXV6zJqa5CK2sGIpZOeECPOFPp1z8xMjJFcaiBZHdS2AQ2UKo+UO4DrnZ7ot66vrrNGMPnGazh8nYJEDXBrfRV3V4z+m6jtCHUQmWn16eFeLPVrW3l1bSuTzdbPr72wMaq2KqhvvThMBS4Trc8zy7W2e23MnQVWMqlKmtW7va2jurYqYNXAX/UO/panbGkphWHVc//RPZ58+D6P+w3EM+4fP2AwhTFH+Md/4Is4I+MtvuuIVsMYTdH0TKOmcHXNVVUFB6DJO1UupHIHrJEKWxqt/ZsksxEQFKOrcuzq65aLKgibukv1BSy+hHfBubt/ts2n+87H0kdnWayZXPWCa0DZt4VENNnp4fvcwd7lAGA779T2QwyxRGyxdMPA0dERRymQdyM23ixncuv1G+6iJAW5A3DVVVna/qaryzSQThQELlDB76pEaMq5pTaThVBVF2x9jlUr1rCABIzzzNXFFeXrp3wxOc6/fMaL16+53m2Z0kQ0oJXk4T59G0D6hz7+AIOuglP2t79pAYyzGo3tPNZbRAOLyDVp1dqCSfXmeYPvO1znFvPEsh9VwldQ+al15KxgUJwjRJVIUgSpZoykpFJPEU5WG6BQumo0X5kqVpoj3bFSAAAgAElEQVSRZYIU6aJRxoURpOuhd0wlqyS0Kk1iVmaCchGanLDRMw88WymlilIr7VoO0wD9FH3IYt3407JxtYgCWTYxsaaCLVUy1cCdpVAR1FjULFOKOvNAaCbTOsVf9V5BC2OwOJ0QzHs23rCyQm+yJskWoTeGtYWTTa9y3wRdDoTqpaDVnWHYHNN1PRZhiuqd5TuPqwCdiOD7DnGe/TxzPI5MMdSYaHD+Ene7Zxoj1niM65ThEyNjDMxJpWdd13GyXtHZQZlPQYG9kKNOZX7zNGx/J+3fvn3Bh3nWJNRZJdA7o6zEznuGztciw1Rj24hMgWm7pfOu+oYkNJhiQQgB6sNv6PquAivaYNmqU8/U6c3yRmu4hDiHGEdBJ3khJlJSQM45vT/FqjbUuY6jo2Nd+xWBT6UyeuqULKP+ZD4kYsy4ELUZcZkYI9Okxu+LG+syOWBZgwfqfl1d+ZDU04xbFWWURhOkBW4oK1QTPENMmKwpizHMOjk0anLb5LTUr8MaxFsSRYHemIhFve7mmPW5NUrHLuQ6iVNwv4WTGEFZnLWp6jqPd745YGAlI94zp0ARy7Dq6edEDJnduGe723F0tAbTI6b6rpVc0xhBGa7VVLYeWLYWALbY+v5rwEfO2miknJQJa12VDgda4nMDMRUq1YTjxUuwHm5StAS2HFiPYko1X5VGJFjWe0v63I17nDEqj6igtFki0kUleLHOPcuhdjMCOUdIDaAr2gilyLTf0a9XVUYshCC8evmSm9trHjz6Ph99/BnncyJ/8j3+4q//H56+fEYqhq6z5LKvk85CCUl9TOskTKoUNFXmaQvHac9ym3oZDofrwqwsVVZjC9lmNV52BesVoOt6y9A7VoPDESlU8NoKyRliSfQua9BFafJZj7c9R5sV63VP5w1hUjaNNSpDdmLwzmmCGQZjHZ3vmeeaqFVNZ1ogSvM6ibF6nFmnwGeBkjK2E7zv8P2gEjTnyLP6ogGa2I1l6AcG7+k6U0NFEhktZmNKxKzMxBCVlaFqAR2E9J0jTeBKhykdJVrmsTDuA9MYiVHXVUxqlRCyPoO5SmQlgxAhTnQrS7ca2IfEdkqsNsfcu3ePePkWTMKGG24uX0N/gvhO/xx33N5eUYylWx/hB8fRsOHceHb7PddX1+QY2N/CxeUFz58/x2DpugGxPWI7ssB+juzmwJRhc3wMvaPMe+I8s09zZUoK1/sbnr7OkGYymd57xipJEleHdZ3Dxcw0RaY5EufIIMqWFzy7GMjbWrNZi/eeZANiIrmEKg8p+jw5TVTLuXo+lqwNIInLyzfcXs/s9hMFp/KupVjV1Z3QfU5EGcBaYiiwFlFGXSwKrddcHppFQz1QFl8TTfstlXlrq+wkE9JMKlGlMEa9nkKesXh614PJTGEmJkjMdM6SghDwZGtISZBuwA8d+xR49S7x5s1rNl744L0HDMcPuX73lje37yimoz8/48FHH+BXx4yhsN8FchSmmy3ZWoo1mM5hOo9MtfBWaoyeNaY++SJM00S8ueWo6/nO/Yf80Wc/5MP3HxOnkd31JV9/+SV//Zf/kadPnxLqAGWKgSkp86+zVlN9azOesvrZmpiwIdb7lij4bySpWWvxzuG8A3F04rk33ePm8lKHj9X/8JOPPuF/+vN/zQ/+5E958Ph9tvPMu4u3nJ4c8YPvf49H9+7xnX//78gpc9Z1nDqhi0f85LMfYo9WnH/0MdspYvtjjtZHLEtDDvs7tdr7to+l8fld/wALWFCKKj7Ak4rh6nrLs+ev6I4tp4/us3mwousHnHjmrWO6MYRd4PLiS3KeuXfvhEcPv8+94TPypz9Bho592vP62QskJFa//AK7PuL06IwH6w3iBl68e8ebqy3bcVtBuYJYFKQrmZGZlHTwn1Id9S36vVaB63u3ADelLE2eesLqMG+eJrbX11xdXHC6OeK9R4/wYnk57bG9I4owbI443TgkZbZX7/jy8y/50acfYHEaalXZeK+vbvnq1XPe3my53kW61TGn58ewFu5/9Jh7T97jV0+fc3tzC16IQ0d//5wjt+L8/kfYckyet8zzzNvLG66ubzhbrTXExoLzBu9Vmh+r/5OpIMfd3vCfD85BpdzW72ka5lC/twJgMU3sx2t9LlZr9eqSQk63hHBDKmOtgUyV5mt/oHYbUErC+w6xA0WO8f1j/PAW3x+1yeTvv8TWbiy1Tf3ryoCyKBFAmX4Zyfo7SW134jiBgKsAXYpB/cuqJ1XJQnEGW1/DQd4Ya61W96AGoNShXK5rT4vkeg9rX1lyVpuZRekQ9GtUtlJB2GqY3+6BaP1uTME7C7EwjxOd7SlEXFbVQrEZ3/z00NR4jCHWurAV7rUsrXWT9qLWqFLJmQMI9Y3VYA5A3MLm4e6zdgDhcmnPHlXVVq1WjF3OIWOz/n8F7Fp3uzAgaXq7w6Ucfmr73ahXpmZYV3WIqyCmDnHUtkutfJpVT3tPbHvzluvXV9CG0lTQ2yz/NfDxzsqUBuAdas7KrMB1liyJMewIncMZ4eTeis9+9BlBCuVowzxPXI237LcRKaEuYKNqGwzNnqcALaSkBYop46y9rXIAuUS95BdfGjEHdVZ7vaJ9p/ZphhYk1l5LW7NyeKXfeL6WvroBgPXvG1CYpdUWGionFZDF2DuAY1sfFawtqGqNVrsfPuTOM+Oco4jBhIKpgYfqPa2hU+2XkTqMNXrPjBzeN+1d82FPq8SLNuygXrPUXkJVbZXh17AbqwyK0q71N27Vwk7MoMGc+qVzSNxc75ifveTzq8zwxddcPHvJ1X7HXCIBQyyZugl8477f/f0PffxegE4BqsPiadRz9QDTxWG8xXUe13tMp98xe1ubTqXlUlSWVPoeuxo0qY6CNfvlQbVdR+c6Zd1ME2aakdvbBQkHlgYX0QL5wf2HCowgKp+aAjFFnFiMN0SJmqg2ZeZpJhXwp8fMvcfu9oAhTgGssvaUQaRGpgAhl4OOWdRLQLXaevC1e9/ADalgiJIgBJNSLYzU06i5hCi9vU1z6mbbvheN3WSqhNQBQd+FxmmvRUvTl1vqIM7pRMFXbXoIBV8yjoQtNRk3ZvIYNWEtjQjK4MtzVPo9hcbQS0Z/cjHqf0D1Eyg5YRuKXn85a1j1A77r1McoZU6Os2rIy4gYh7M9MUX1DcwJUzK7/Q7vDPfuPcCYgVQKu9tAKcLF7fVSTByorHVTl8OEpy34u58DQgwzqSXFpsQcI0YKsloxOLv4efkqk5OSVaJWsjIJXaExHVLOlaGoHonGGEqcl83NWQudJ4ssPmfWewUam+zNqK+biCeL4XY/MQZNUBSjKaGxsg5dUoakraEfQJ30FULS15OKMrq6mIkx0YXMHALzrECdStQTNfMcHV9VCWiq0d11A7fOakoi6m9nq2+SNbbKtg3Z2DoU1WvLdYNMSUG2UpKyRFNWJkhNmbPWoYEfCk6FUn1NkgJVYjW5UazR8ITG/jOVjWqVMq/YVAO66nN3d5IkshyGiE6U1GciYZzgO0cqaqybUmK3H5URaw3jHNjHyBgi0xw0YbVQJycVHHSV5VVDbtbrFdZaUo7MYSakg4yXkPH7HXZMdXMoy3Ou7MFUDX6bpNNQsh52thY8B7auHibN63D5EPUs2e13+rzmTIspb1/bidf9swjznCvrVwsWbwzkWGW0BgtquN93WCdchYk5zRgzYIzl7bsrfvXrL/njB9/n0+/9kBsxPNxY9jbxV3/zlzz9+jlRHMYZjKs09KzveS41pMC5St5Tf7jWOOc6/MhNnpG0+FLJrCx2AlI9i8WhAJ0pGAvWFZyFzkFnBAukGLBFQcmSUDZmLkDA5oAlYa0w9J5119F7W0MYwBn1YVz3PSKCM0LnOn3Onafre8x+XBpG0QOqKhRV2n048dtIRwsZY53Kkr3HxrrOC1UCQd2DYdU7Bj9gnSETmOJcU8VVTplaAWItYgrWFpwxNWylw2GxZYWXDV7WWBmwBAwBkYiIqfviTCpBS1ojiEvKqOgEqQB5zPDi3SVvbkeG9RFv377CXL1kzS0SZsrtFZ29DzIw3XxJihOmTHTDGX5wjPOeOWeMH3DOcnZ+osX7/TPeDD1f/PrXpAyuGyipMAwbcincbke1R/CG/mRNlzOlRGxReVbfWcYpspu3yC6ychpKNfgeWzLblHCd5fHjxxyfnvPm3SXPnr8i5Ki+dPNU0851f88FTUS2ysN1veizcHPF1X5kmjODXTOOO2IRost4caSYa5r2TFkn1kc966lwFTWxPLfBQ215lOGtZ0deDKKLFtq6oVUWrdqELAl8YpTBWQcVCsVp7aEJadVXJefqgwgiarqdoj77zhRk3anMXmCaRvb7LUZmOrdCpKssYPUpmlKnybW7G0wJrB6e4DYnrDfH+M0D7NGFgm+rNa9uLtmIJ5WObDtyTowpUpylO1qzcSoj8UNHipHdbsd2d0vKEedcHQpr8zDFyM3rN6xOTvnwo4/4ju9578FD5MkT+tWKn/387/n6+YvqylFl3tYR4qz2K0EDxpyt3rKiZ3BMmRB27CgMfU/fd3hn68BVW0Vtdq0mzabCm35NnC7JKWK84+x0ww8++ZAff/wB4jvwa77z6Ih+cLx31rEyI/efnKgMLyXsPGNPNvzRjz5D+h5/fEI0HcX0ytZuPdLSIByasAVQqRX43dK+jWu/rQnLGRJCZw8Ssn615tHj97mdrpjZYYwQ0o4p7HHDmmGtPrNvrnY8++I5pydvuHd+ztnZA4bNBzCcEiVze3vNu+srXl/t+OrFW/x6y3gSuZEb3r55wauXr9htb9XLr9YEJtak9JKJkrRBMsoOLnWfzlWZIU2xQvUarcClEafvJ5WBXQK5QJxnbq6vsPIdnjx6RA6BV8+1TRdnWZ2eYxJcv3zBdn/N6nxgvx3Z3e65vbzh2bOJp8+echsiWMdcMvtxx+bknK53zCYw5xnpPG7YUG4CxYI/PeXkyfsMR4n7z6+Z3kVmPQpIqBJC61EdNlKSDh2NclwKjdmjAEW1wmrkx3/mx28DZPKNP1XL+ZIoJSAkbbznHfN4Qy4TWSYylpI9pdjqmSR1YCsgqiwIwXC7FXbTitXxBwzrM6hDuT/0cRg8tl6rok5Uv96G4t35xIKWtU0xYfSLFZ65I6lsrDWbBSkWV5QPo9WwDtFLBfOgUF2HaqhYk9Ydrm35vYI51hjd32vtIjkfFBNGyRuYTCwFa4X3njzg+5/+gKP+hLcvr3n51Wu+/vw5JMdq6MgyM497UkmsjgaKddompqSvubJ+vtGPlwNoU7ujBfjUSz6Acm0AuqyFep/v+mHVSotCrWXa6xEW+wSobCojC3OpnTVtbWn1XN0lheoleADn2ltqFgzTaOquAEloZD4NyTGLBUqz19J62hyWWM7QrCJKU6HopSxhGcuiu/sk3Lk/C0Cm4NiURuY0glQ2lCgh8/zeCT/68WfsveXtm1f86t1rwrglTVPdk52W1qYCXo0IYbhj5WJqzVBhUDkw0cS66msca7prBZHac2IWZLYCzG2PrH/fALhv4kPf8uzpIvltKXcDqRdtX32PG9Jxl7lZwTmUydcsW6iv0RQdlDYQd1Fc1b6tXUdjsKtiyuFdhylNxnvAWb7R67cTsN2XBnaWUkG6BkR+s29qz7AVU20yzdJTLk9SUeCzZJWmF7TfECfEWNje7JleXfLMBPyvv2L7+oqrUZiKMl9DCtBSdn/jnn8Tq/jdH78XoDPSHvJqWKxjdcWKyMScCKkQkmVOgonoAZwTRizFOD2EsspUOxKzLXTVD2bMVlHGrJus19tCwqNBE7W4EQ1lUNP0ytyylk3X4zuLE0eMMxMTc5iwWExnicYRrcHUMIdkDP1mw9Q5blPGOUcKCmLElEipkER9CwyOOYOTaqJftcltobWGsroYLMtV6tK2RfXlTd+c5QAyCKIylAqwmiKkaqbojBbgyaAG4LnpyA+HbQOg2uGkKLb+LGtYkn5M53BWDzgn1KAITa0rOXF7dbX4WjVtvD5v+tBud7cgO/Vr8ZqEG6Pef+cdMRXYGmU7cXidIUQ1gs7q+9W8/7xVeXLnnG5+syHnmZX3rPuOrl9jXcfWz9zudlzvzMLmgsPD3HiopS524ZsbS7s/zlkoToEICmnW8JDOeQbvWbmO9cpzvBroO4erD7K3Bueg6y2FqOzMqDR1gM7oBjJNU2U5Cd57fKeWvlNUJpk4yxRmyAqc6fcJpKJg8dX1llgsU0wkUYnyNM7spxlrLKfHx0pbdq1pu/NgthUh2vSrBj9V8Eml1s479QCsU8i2reakckpXDFEKyQjiVEbqiiwSaVNTm5tcNlMPitIms9WPsh3u1VMvp0Sug5aMHpoxNV85qV5XOv2OOas9bt0wU/27nLMyINTQSzf3urFLXQJumQaybMKlslxMBe+o8l79vlGZLkAsWX2QopoKz3MgVH9DNcTVPQPRyY01GrQiUsFMrz5kzjmkVO87qYeoRKQ2nLZKc4sxyjgWW4E+qe9JlRXkogVJfX1WDsCdsaaCbIdCjLqXpKJhFMZooy/WQNI1KU5wxtHXAjKmQEoRgwJQoPuASueEkhLWCCdHa7p1x7tnTwk54Wyhs4aI5x9//ZwHH73mg8cf8PT6huOTFf/7v/13bKcb3l5vmcaRrt4jDb6ptUlqYFyprDlDksaga0Whvv4G0Gn+sspdm8yhUfoRDYoRUxCT6yGdsKXgUD9S3YebxCpjkia3mZJxJdLVNO7eCJ0VBfZEBxnkhDWFzumeZQU6Z9W3MOWFxdl3nr73iBOsgaH3+H5AjCHNOlhJdf9yztXpYfP9nDXpqhaVUg4SZoh4t2cY9DmYQqAwIuLBdPpcieD8gPUCWRO2JBpImbgr+isVwjaRpoJdObwd8DboOU0h5kAukSKRlKOuM5kxTkgpkFIPZiCLIxShWEuRxOXFG+Ttr1ivA76MnLodvR+J1nPaPyM4GFanrE7PceszLrczc7Fsp0AKQZ8fa1ivVsSzM573A9M+qAdrViDFFfBGWfpzicxpIsdASSObfuDk6Jj7D87YhT0v3rxg3G+ZQ+DYOR6d32MbZ+LlBcbCwwfnvPfkA2IMvHiW8Fb9PUOV2ZXW6Qh46TTlMydWg+d4Zdlvr4gJnO/xplfVKtXXc5rxslKZIJnvffqEH3z6Hn/zt7/k3fialB0hz7oOS9bhgXYNiFGfHk1xNAvgWxBMSTU4KRPLNy01qEwQU89FW3fjEqOC85JxtbHR16ZAuMoFZvI8YbwC0E6Ebdwxz1o7aYiEPl/6Iw3gmAOUMHOz3fL1s2eY4ui6Y/CO9XrD9X7k5c//O1P8JTENhKBWDpv1isePH3N+7z5hnumGnqNxJMbIq1evKG/Lco7mFNUvCq2xrm9u+NWvP0eAVy9f8t6De3gjvHr5nDdvL3G+W4YWznlWw0r38nlmssJohaHvVUpk1DI/xcC43xPCRN91HG3WbDZrVv2AccpQrVsxaU7c3OyYdlVB4BzZGV6+es5f/8e/4Jc//SkhJex6YCIgJvPR40fcW6/pj47IYhnE8rBf8fDoCMnw4u1bUr/iox/9KY8+/O5vEl3qR4ElgbPdjQry/EY7XlCAh+ZX3CrFor0qtkCZKXmLc4mHjx6Sy8hXL7/g6y+/JsiOo9OBrbuEGabrzHgdefzwHh9++AEnJxZjZ2WRxkRxwrvLC/72737Gz/7hK37+yy94/8N7rH3Pm9cv+fxXP+P5yy+Jqq2uZ1r9r4ha2nBHzlkOvxqLaQEW6mvUo6FaiYhd7oMOA7XvmOcJa4R7985I84z3ljnObPqe00ePKbuR3ctnlJKxGIZuYNqPfP35U371q0u++uoLbsOefuNwQ8+wilhgv9/z+uKC3W7L1XaLdZ6+X7Fngn5gdXrGuhe8H7h+ewV55OTxmnvn9zk5OsUbV8+1SIozIYzENFEksUR5FoOG5VE9iX9PV/1P+vhDwJjWTdY6VqsNhBmxnjwF9heXXLx5RwwThUAmUFKFwWqNk5Y1CiFkfOmYY88urDk7/QDXH1eA7p/wOlprY6jD4TYgNpCNKoiW2qGqMCowY6zXWomCRPXSUrA3LXfAQFWCaAt717g/kRYrFlP/VBpjCbv4Q0MDEQ4XXTgAyt94v+SgksLkJRxiver4wY8+5f/+9/+B7374x1y+vOGv/uKv+a9/87e8fHrNNI/swyWEPVaE3vdMogoBkxymJHIKNQ1cFi/mAtU+KS8qH0MDO7V3sLU3ax5/7aOxlrkDzlX5g6o3RGsiKE19v4QOxKX2BlNKxYgWOg1SItq163uhb1mDK+rPK/VMpPoh13O41cRiD+zZklWWU6QcesCU2i2HCsaW3NRqLISOBthK/f5yp5+++74VkeW1FLIy59KIWLUIocAcwZZI13vee/KE8/N7bDYbLqwnRT3H1N+2dkwiC4C2yICL9ifL2mrIgLRL0XrXFmViiWgvVZqFUdG+Rllzd2HrdlPrTyp/eCf4nR9yuI728W1AXvtovXpu6qB6T+9iUA2ca5ZILVRFREku3qonvK2M0KXx+c1XUZ85WzGBhlU1pOSgwDHLc4C0zytKgKo9VpO1CoAxy47VADoo2EqKMkZ7rJhgezNiXl1g2OFevSPcjGxnT0iZbIwGPZU73+9bwLh/FkAndcEYdJOkMsjQPxFSZI6GaQIkInMmGr04jCH6qt+NhZAjzlnGEOj7Xm9EKcwxVOmOUhytqVrnFDAxIDHUHUDp1SlHNesrHfvrK/LQkZ0nxci82ytAJxaTHdEoG8cGKDkixgOKaIc4E5IyZZJYkq0+e0aZPMZ1RIRiLBhtJqTB8aIbiDLo1F9NFgCECmaCyVlBxwowUKceVPAgoRMXI4lYN80iCq6lYkgS6wJvy25ZRroAF8213iKLSuSkAonOWXIphGnGloxf9cr+sQZDYgqhLm7BWl/XfT2ErEGoJveScVbNx8cwknOhL30NtKimmMbguh6xhhAj4zRxO0emSadyDUd2VvC+Zxg8+8mS8oT3DlIkh4nVsKIMHZr2IsrgK4epujYvLJtAQ/h/c8EbqaEQon/21qqf0zThraV3XlkyxtH7jsHbGjJSjelFZcMUowCV0wPDGsvgPc45pkkBOWsdfd/ruhaYwsw4TyQ0NTRFBScKGmywD4kxZGKGORtkDoxRz8g5JPZTwNnM8d1gkTYRkMP/35W/VJxuAawKRSPMo0p5UontNIScSHFm2geMFVLoMWWD6WqyKUKcBU2zd4QcyVbfi4QhZsd2u9Ofu3jeRUqMhHkiBk3eorMQ9FmZg3qIib3TABllRmlQRmAOgRDmyvq7c9QXZbWWw/LXNVpNYMs3xs56z4yRBVIES0qREGZSBms6xJoaFmHR5Gn1tvHGqlRWdCChrBRlU3mnBWcD7JbAlCRtQFYBJNdY4IucM1c/SWmT1TpJqyMhSk4LQNcmswBiFXxtvi/q/SEKANWp6vLy6z6TKfX16+8agmKhTOSsonvdfyuYiZBTZnt7y9XlBY6sZXkG1/eYWLCS6FcnvHxzy4unz/mjT97Hr9a8vhn57LM/4emLX/Pfv/iaL7/4ipz2rFZryqQSwCxqJzDNgWkOiENlhZU12SS+y4GKaMprVK8mU5Tp34b2UEgxYn3zplFprkn5YCrdCrWsrGgoFaAz+u8pY1MFr2cDQ69+WEbwUgGPokW7TnV1sGFNTbfMkVIU0PTOUozKqgevcupSDJPbA8pylVJwztH3HdYaQjWwnyKk5pkjReXz+gqh7El5Ws5eI23a6jBGz0JXCt56kEJK2tCkkon7PUSY0543L1/y9Xpge/9Mz52iQDUG9ZvUh17DMFJSENd1GGPphw39eoNxg1pZFAVHc9qxtjuOuxkfr1gNe0rZEbLhw/sB4zfc5jWxW2OGDfgBvz7h8nbPfgwMw4oSg8rbc9bU5RBwIZCzYZwmXEGDe0pinPbcbA2SIr1JPL5/zEfvP+GDj97nYn/NnLc8e36NE8PZ8REPzs7I15cM3pKNcPnuLXEOXLx+heSoyYre461lHGf1063FvjWek+MzvBecycRpy35KGNvj/RqXnTIFnK69mDQB2Qpsjjb85M/+jB98+ohffPGGobtijoYco66bWrg29oORouEeRptOtQKwdUCC/rJta9PhQdVKKyBvBN/kVDGSiqZcd05B5daLWWOwnas/P5OnPWMObDZrTtdrfIGreEOJYwWbBRMjlA5SZBwra9HAmzcvubkSTBnw3Sndes39XHh0tEKsY9wG5mCJqTDPamOy2e2xzpFSZIqBkEK1JMm1ttIhbikaRFVKUUXDnPj6q6+5urjg+ddfcXq0IVbbihQmndbHpMnOBTrfYcUqC7sUQojKAs91X60S+3GamcaRaZq1/K+s6JV1WO/1HDSOXYg8f33Bbj8pi7yoHcLz5894+usvtbaUohJ6n4klcG9Yceo7infI0HHqe3748DH/5k//jDwn/uvf/Yz+0RP+7XDKoycfV8PvBk4VBdSWZq6dYdrsQrpT7+hesBh9tfKgHNgvYjKGEeQWuIZ4gWHPpu84Xh0h0XJ5uYUMsbd0eK7fXTNeRd7/4WOOTzecnW+wdgICxlkihe048e5yy/VNBLH88Acf86/+7H/j61+84Or1F7x6nrHOU+gxpijj2DltzJLBWr+8z9o43ZFctaauelG2HbGUw5BO5Wt63jYvrhwjMQYag6Yx1YbNhnsPHhGvb9hvVmBXHK3XUAovnr/g5z/7Gc9fTEzjhPQd0nW8//AB3ceey1eXjLs9t7cz85zY3e4oKTF0jjknMJ6MpfeW3hskTVhJOjzE1n6mXb9CQiqJjLWPOChRlteXtWb650B0S1P4O/5dJZDK1/duhYpELWG34/Xzt7x4+obb230d7qZq9N5qDKHNCowYwhzIxRBzx+3ecu/4HBVq/ubV/I5rqVjJgUFTTdmTQck71n0AACAASURBVI15FOLJpYY8iEUDmHToYGlNuLJzpUDJLcQpwzLYr3ekoINUIxpco9UGtqh9UamgDiLLewKHPoTl/crqI5yaXQlay9SGLNfhsFita/pNz+MP3+NHf/oZHz/+EfsPAw8ffch3PviU/++v/p6f/vTvmC+2rNcb5jKRYgZvsN7TdxZSJEyZUoOpjNUBcawD4pzSwYbH2GrJUWF8ab6W7S2pti3WVnulOkltNCVjMUV9/7RlVSac1kSl4al3wLn2tUILPixZLV7U2LDVdrWOr73jkp4phz72UMdr/bowubIyUHWYbxfgjroXgO4WVFZfqcQTae950d5GdLEhKAGhtL6+PqO6TGqaqkmENDHOt6TVmga7hWnk+vqa7Vbl7CJVKVTAiMU5IaZQQb0Gv1UQWFrerRxAMAQ49LRQg+UqXpERtbzIQi4JY/R8RapV0zLl+M1H7rcBtW8wQet1NVbZXSahqZYZd33nmgR2CZC4w4CDA0j328/44WcuXqPWUqKujaZK6uay+N2p52j16G09wvIc5gZp6vXWgbWu1YNU2Tm1jGpKRipZoVHyWoq03LnOBuySTVUOmsWL3Ro9iWOEcRso6RpHz9XtRJoLU/VxbwB6S0O+C8Qd/B7/8CDm9wJ0ijCaxS+o/YyUVDLZDwPeFbzXxkMkU6oc0xhhcNrwiDeaAlMK5AnmBEYb3q6z0BmmkNXgM476AnKit/XQyvrAOycs+Sc5cnXxBuuUkWWMJcdImGfdcEZLd7JWuVnShyGXzHa75TJFtuOOcRopqWhyZclYU6esbVJiPGI7ktXbJBWhd0ZUPiI6qa5wAxp5LPW+FWyYsDSebruBZTnkTNEUyCRCTIfNwRaYyAy+YyKSrcM7T6pBDVkyxaqxvnO2eqJRQQZNaMs5LYe+SRmbCyGDL7qJOUw1aTdVxthAHz10xbZ0z2oa7S2u6+iAFBLilJk2p4gU9aJbrTfK9vIjQQrb+XZ5uEHNlsUIq95xtFnReaGUkRAj87QnJTg6OsZa9Yprm1fbAHL1R5OqI18e9robtY1FRCfxpUrkVK7mEKcsEEvG2Q5bN+aSk24EFHIK6icWCxadwhpjliASrCVUVpgVluTLlIQQasJejOprZ5W9YK0Br5r7OSaKGMTCerUijbNem3dMEco4a6MmytIz9X3QFCBtIHNpU5n6cFfAmArSWWuwxUKgTipS/ZxESgYjhb7rKDlinVH2DcpWcRZWzitgmiMpzNU7w5NC4Ho/sZ+F65trQKVBKSdyjHTWsh56RkaM6NRnnif2+y3b7UQujgcPH/Pw4SPWx2tW67UWSTEuz50y9pq1uZ4zLZp6nidSznROGbZeTH0fFFAtvat7VF0rITCGCXFr9fBKiXEMbNYdLZHYVjlvRjC5UFKVVUgDjMB3bglUIWe8BUqqpvt6X3NlQVWOIiUXQk0+rvUnUL0VY1iANFohroZwmAb45ILzmiab60TM1EAbqXtIWxshJpwzVdKmU6WU1ZNTBFJCm+FcE9BKriwFlcSnkjDWk3Li6vKS3lmys4i19KuOME9Ym8jJcNSfcXVxxfZ2z5QiL9++4fvfvcenP/gTvvfDX7CbJ/bPZuzOkGUi5sLgVVY2TTPTHFj3A7FOpLq+Z7VeMc2Fkswi3cs5Eybdu61OZyhBpZeSlQnnRaWkaQ7MoRCcSgkNyhzMMWkojDE16aym58VEZywm67NEShDrr0pJV9actGE1nbc0WaKxgvcG60Tl6zmimlv1E3NGPU+bSW2rlpyzdF4LqhBGEk7fV6ONhFDoOo/JQkiCsz0pJFISEK/AsniVzdUUWZGoIIcRxNbUxBRBJtQY3jCHCy4uHXO6xthaRNd0tDkEdruR3X5S8No6bFnXMJ0ejKeIA+uJWUipUNIMYU9nMycr4dyv1Pg9RfY54Vyh+EiJsHeWy9tbdnPGJJUGrFYrjo9PdP+cZ6b9iLWOcZywVpO8U8qaypcCzmTCdMu4S9w7PebTR+/z2Scf84PvfcKTD97jZ7/+BZ9/PRDjOSvjWBXL7fU1cZo4Wq1IYpl2e/a3e9IU6Iwh5oitPUlXJ7ZxjkChcz3e9fjOcHP1jt3lFSlmxA8YO2CAk6MVexOY9zd4Z5HgmKfMycmaB/cfcX5+j/V6zXpYkfeJMSs7w1hT5UoZax2u0wRslT5r4zkHDTVQJpl+nav1S4gJg7KjBbC5MT8yVtTfqOYjcHZ6zvHRKSHM7Le37LdbjIG+70hxJu4nYon4wXP/aEDCSEiBYchMIWiTmAPWGI6ONqy7E+b9nu0WJCe8t6yGFcPqmPVqw+nxGZt7Z8SyIecjYsm8u3rNq1cvefn2LRdXl0zjjjDuyVFDTPbbLTHMddCSlYnuPd45imhts72+JU8Tm84Tdjv2tzcYCkPnSTHgnWVztAaEHBPXtW5wxmGMYw6RMs0q+e88CISYmGOqa6EwzoFVTCQEX4ObsnXMc2E7R0LW5zplIZnCFCK3F1fk7YgYIVrIHWST2KXMm1RIBlJnORJLePCI94c1p+tjXnz5Jas5E/cj1Cb80Du3llotTAqVuaGnGtWRsLadh5a7gMpCayeqTU3BMEN+TUlfQ3pO3L9ie33D5bsd28tbPD0m9Fy/nijHAx9+8oQ+Dryd33Fzc8PnXwSKX/H4yYqTkw/JYvVZKB2UgZw7VqsV3/34IX/+5z/iw4fv88u/+8+8fnrED//FT5jNmp/+/Jfcbnfkon2BLYfrbuyGJq+zmnilDKjamInUGqUawrcGTYoOyxpa0HlPDDP7nYJoMSojuB8GCkIIgfPTMx49ecDqySNePHvOVdjz6tUrbq8VCAwx0onlw48+5n/9yb/k4tlbLm5v8KwIMZLnSJr3lBwxFPa3Ey+ev+bMecbdJZt1IYVAjhPzOBLngPR9lfehDNEcsIJKoBZwWkEGZxWNjzVAqlRgcunvlppPWVNNVPHbHweW5W9/tL8zaAiJ0fMrgbhj4uR4+eKSeWqe3Cx1VUUgyOKgqI2KbQw3LNvJMK4sYlURIL/7An/zciFRLTrqzzQWiqUYqy/bewXRhhXKmYtY4ygxMyftvUwNCcoxktIMRW1BSs4QM+L03DZSiBJIIeOMIadCZ2Cwln1hCYywclDu3AUZqnpO16H+5QEUrZ+XS9HBnVV/MNc71qcDm7MNWYR+c8R3f3jCxp/heMSLV2+5mV4zpYiXDL2lGzz9qqMXS5wn4jzp0NU5pOiATZxDUC9HW+pz0Hl20thjBzDFihAqQ9VZX0Evlt7KVCVNoZDDTDGiBNxSpdA5KhnFOKxBWaHlTv9VIFWGmrdaHxsj9ftr6JoRgxh3eO51Zq/gS53CGgNi9Wu1gsqHpS+29jmWkurwtOEvRcA6jC8UY5Xd6Tw+ReL2mvlKB5TESmQxQiSyIFqi771ilIJzEMOOnOc6LNG6ere9Zhx33N5ek2LQ+p+C7zuiFXLWwVBJURmI1bKCIlUpwQG4uwPe3AW6UkqLr3zFSRdgR22YKuGolMOakFDds2ooVOs8vgWku9tbH+7tN6+lFGi2GnpdBTFp2YdKXfuNodY0INTeIldQvA1RDj50GuA2h6LPbAXgnAVy0dBPGmvNHHCERiowTRIstZfRdZ5iwluHdarOXHzmnVMAGx1UUkG61muUBhjTMIW6GPTqFS8pmUhUSWwxTLcRxpHsHZkVQaq3fkx0dRhaOFiG3b3f7fd/FoOuZN1gGkDHnYLAGKHzns4W+r5nvRp0M04joSgL7HjlGQw406khfIzE3JJJE5v1mr7vMdaynyb2+31N6QSThQHI0S6G9Wqkr1O3mBO77Y44zZRoWfWDmvuLJ4VIlFwnMUa9hTBMFK7CzDxPy00y1f+nlLJIBxs7yThPNp4kumFJNezXSY2emkUOKYmGOkkoBSO6MUijuNbP0ne8PShJN0MjhLox5KKHR5aiNNlSSNZWULBK6XKp0r+ygAgK0Onmp0h8IqSsjSaGUIQpauhBiAkvmRAyRrKm3Modg8xcIEWSVQmdzVDGESO2glcRamrjHCOxQC+Ad5CE/VzDIrKyo6Qo3VNli4KVFUPnkGLw1rDfz+zHEddF4ukZYBd/nbsLewkvKIcNpMlZ725Ai9FlAWfVs8SbKrmzCZPBW4szGmLgnKXvOqTEep0FY+uBZRydc3V2rWy8Zk5sRJlHmhqUGMf94ilgnWMeoyZPJpUnZZSdPsXEblZgIIaZnAyus4TKNF80/PX1G6muGeXwmtv7pVTyWgi1sIe6ceWafrwYfOpdVInvqmez7ul6D2ROjjac9D2WwrrvyfNELpGMskNc38Nk2U4Rkep1lrSAocoJ+66DozWdi7r+O8N+Gpnnykw0huPTUx4/ecLRyYZiiqbGBp1yql+dQUL1DbEKHBtb2bbTRAmB5JTteLxa4bzKmEtOpAjK7knKiiMRUkTSTIiZFCKd7zg/P+f4+FiN/63FGHSSnTOxqL+idw4rmthqTZWbJU0RMw6kRHIY1eC26IxX03kVhEuxAmQok6GlDi0AXa262wHXKnBr1cg2xkTn9fnXQAk1Km1wz3JYAzFp+jKlMhmL+hrmrOmRKRXmOZKV6ro8M7ZNpHJSL09bwYFacMSQSAIpzxQiJUTOjs65ur7lv/z/P6WI5+tnX/P//rfAw8fHfPjd7/Lm4hWvbm+ZpoLphBgnQin46p+nwSKmAobK/lr1K3ZdJE4KNBljkJxroIzKXXWoWPBYNr1O/HMWiJp2OZMJg1/k3Yjg7KCTYKMOoJIiJSnzuxhN2SpJgx3maWbcT2SnDX1KLRUr1zRzVxN6lWEWc6p+MAqUuq6j6wdN9ysa0lKAYpR9XooWp6kCqOp7Rj3AqZ6ECe89tlhS6BCzJoYEWc2idXqvwJy1ykg3LmvxaIRiIsXWYJUukcaRzvf4PhOZCMnS+1Vltgj7KbDdjey2E9vbERHHsOoxrDAipGzZzjNutNh5qEBFondq9j6PkTRDNwz63JWZGEfyODLubglmgmNhniNzyMzzDVMsdIN6Ia6HHieGrutx9lDQUGqDGgIlzZicGJyld8JmcNw7X+Ndpvdw72zD6fHAydGAlBNMgm4unPRr+nzMLgeOTs84Pj7j7ZsLnr94ybSdmIpQoibAl1pEdlalmuthzW67Y3ex5/bmijKN9FaTNkOa6Uth3TmyV06xAor1gMBhXI91vgYzmLo/SJVt6F4jVUraV2aRyv41uTpOM3Gel3uhTbrBFPUXNKJ+oVRmiymFzqmX4tA1H0XhvQeP+O4nf0TnHa9ePOOX//hzpnHL6WqgFEeo/nsuBTonHA/Cfs5IvsWWwOALxnese8fZ8YbOJm5NT2+PGIaOh/c/Yr1+xNV2JPwP4t50x7LsuvP77fGcc4eYcs4q1tCsYpEUJTUp2N2wAX0Q/BiG+4H8An4IfzFg2IBhoGHYgGWw1TKollrsolgsVmXlEJkZ0x3O2aM/rH1uRBYpinS34UsEKzMyhnPPsPda//UfxsTmes/q9AGLbs0UHDFOaOcpSnG93aBrJe53Ag5OI1RpjruuQxGY2mQ+xIANgaQslII3ht56nDYN6NDokslBEkB9N3C0OkYB+80Oq2Tq7lrQxzRNxCg1zpyAOE5SnygtwWTjFBlDJqSKLTLpSlWTgKIt2bRANG2R4quZcrdk9oqEJRUta1zOiNqkyJpcpkCnDd//7ie8evWWa22bRQMHvESYBa1JbU1O6waERVvVQeCqlKFWQ0FjlGlG68gwrjWSkkm/Ydx/xdsXf00JX6Pqht1mpJY1627By7Bj8yazGW94Y6856+9TpszlmwtevDrn9Mkj3NExR/feYz1XsMpg6LBqQdevpTnOG3oXWK8Ni04zWMt3njwl+RUvzt+Qc2K7GwWcLjJs1MUe/Kzk/d8J1MmNEaHaXndgnTfGRnuXpdRW9yq889QC0zgRQ2CcArVCjIHzVy/ZvjpnPe2l2SyFZ8+e4bbXbC8Du91ATIXtuKd6AWwfPnrMn37vj3l1/obz7ZZvvvyG1y/PGTc3AqyjeP3NK774+T9w1ntePf+KnK8pNVKzF3ZIVgfZ5CxxrSWhXRXmVRGWyKz01VayP3NJh/NSKw2Ie7dtnJOc/7HX7IktJ/FOI3jo01uC48yOqwrlLLV23FxHSrGU0n5zrdSahBVWMqUKw0SVLMB1jZJumDV7IVXC7z68d97ffFxKNVZTpdmFaJTzuE6xSMd0WnP68AHOOHKIlDHhlaZvapm4H7m4eMPlxQVTnLDteVLzOajyDFuroCscD0cYq9hfblApoHOic8JKTtwCWzMwcvfsQiMzaN3UIE04ebDhQGo8Ley/YkA5MN6QlQTDqQL3nzzk40++z4PH7/Hm5teEqw3aWLrlArccsE5jq2Kqhb1SLcFcfNhySiK7U9KbeC+s8OhEEXXXf0tUCrr9VRRKpQ1qZ4Dl4ILPLNuV75/x2doSScX7XYgxOUuBNlt0WCUWJ50zUIIkpes5RbiBLsqKyi7l9vuUhPjIQbcUbo3ytinf9MHIXyuDcV5qJWVxLfTPe0/nLN5ZfPP4zVUIPCpENucvePXlL3n7MpGQ3jjmsQGsjbmpNaX1gNLLZ3IaUTWhm1y3pMBue812syXFPeJPJwCdsc02KGUJg5l7ANMWsgbKyUDl1kf9N1lt6tAE6sPTX8G0qIt2jrUW0GoOWZgJK7MtgLqzwXybrTX3kpXfBPDuPpszcWe2IVLNE27+fq1/Mwl2vtbv/NwGNurGkBXLl4LJUvulGElRkUKQ5PT6LvtP6t9yeF8SekIDdEVKWpUAfsoYCZJBLJVsrUKKaucl59r2rVvfT7nFpebKpVBb8KgQWCJFiQUaRlGLoYxgVKK6TIiWPLMZmw+jgJm3oOS7gOgtg/V3vX4nQJdSBqOE/QaNMirySaMUNZVmWm2lSFCIH1wrEqx1goxbd0AsyZna6MNaO6oy4i1Q5htXdPIzTVVLfIZ4E1iD8ZKU6dpXxxBBge88Q9+jlSLFyJQTSUHf96zdAq0Uu5iYRk2noc8Z3wINVL6lmaP04aZTRo5PaJD6kIxYEXlqVQqrxGPg8LkiZvk6Vwbn0KS2OQpDQi5Qu8kaZbhSxReuAW1yzjURMcJWSmReqjbGsKxibUExtyDgodCTTj439LtoKeRCBZUq2UDRFYwVT4wiSXRd75vJciTEICwQI1TtuN3LBCTXeT8XenXJ5CKA6ZgCaPGgm6LQv2OSuHPVNhVpVMBazTQJQLXbbbjZbnAusj45xbvh9onhDr31FmM6LBzzUjCDcjlnDmlFCIBkjUgUjRKWJXEWh4r8z3uHc6Y9/AaHHJ+i4p2n957qK6Smr8+Spmq0xVndIqMhJPEycs7R9T1lt8U3U/xpmlrSnm0F3FYmjM3zbJ5WlDa5S6rIuW6mvDJZbu+zeRForSQhk8YsVPMSI5trbgsruiX+NaDIWcui61gsO7x35JJY9J7BCY3e2uaJGApWz0wvAa6GrqNScNaQamOZtQmlUZXOGvxiwFpaeromRUUMlao7uq7Hdz1dvyCVCCoxp7YmUxtzKb2z3s9bjNaaqnWTSyu8tayGgfV6ydB7mYqWFgpSNUpZOjWQquZqe0OOmaPTU05PT/Het2K/nfsiz5jR+pDya3LBNzAuhokSIk5Bp3uU16Qpo1WP04akm0SwBXbkWMkxSJHeTGJzm+rPH4cFm8Zqo8m4Wwy5JAhV8aj81to83/+lseJq8zoopVByOny+1EqKElRSawP020qUS1u7mqxZWYvrO6z3hFLZjzfsUiWHwKJmzlYLPvv4Q3am8vr6nI/ef8qjB8d88/oCsx649+ABzmoqFsyCaqHURNYVZS3GCzvGNH8xXSq6gFUaqy3VCDtINdBLZc2UEi4mqlFQwCjLaliiVGS3D4KPNM8YkV8rQpXG1lgPyjSbgkpJE7tpx5gi1ViiDNVJIaNMYhEyYAipMqVCrIpQKilldKrECglNRBHan1MthLYexaqYYiHrJAbtSkt6rXUYoTyQ2/5RtEgWchUWc9VyvMNySWcM1nWUatls9yil6XVPLkX8OUylxh25ZFTOYpSuJbJeiAKVfakENE47dgl2ry/R5oajk2NWq6PmAyL3lbKWbjGglexvaZyoCvzCMiZLFzVmt+Fys6Max3C8IhVPiB27veaSCikzZcsmKGJIjAk2fQGXQduWXKiZcpJ7cT9SsjAZYxTWvTNSWM9liXWa7fWekhLLzuOUxlKxRrHdXfPNy6+59+gEo6Gzlh2KME2orDl77yGr0zO2MbA6Oub05Izn6xfEKXFztWVT9pSasUr2PW0tMWWMc4Rp4urmmpv9DussnRkEbMOSiwINu/GGMY5gxB7iIP0q4iMVUybETEwI8NkvyXGCEtukWNP3HYvFAq2thNRMkZTkZjLatDU8N8/Q2p4N04yXGzhRM8ZqjlYL1qseq4uAbcs1jx4/5sMPPub9957y4ptfM40bXr34muWiQ+Mog8c5i1KVcb/BmYpdWpSt9MOai5s9MRvOjhfUHIjTntWi53h1H2MMR0fHeD/w6u0Vb2824lFoF9gus9nBLo1kHaWO0AanFG61pEbHjoLTmqHviCGy3eyESR+TMFfsRNEZQ+VktWS1WNA73xjTrR5EAHYK1JSa8jcfvPlUq9vEvFoWzRyiDGJyaeCaZoripdyPiZAKPUaYqEUYVbkKmw6rDiyuQ7KecZRSm7eqrAMFffDWFBaOwmnL8f2HfPaTP2M/Bj4/f4v3Eu5yoEHV24+D7Gk25ldV2KylkmoWdqDyqCqieNWAYNkwC5SJnK64uvwVL5//NdPNL1gPI4uu0hnD+vg+IZ/y668yr77eM2VwDr74/A1hd8HLZ8/oVguWDx6ijdwjhShMiKqoEVSRxltTyHGDViM1XEMN5BjYXl9z76MHPH3yUCwm0jlTEIZNjFJLalsPXq0gYKawP2QPpFXWldLAOqlvpM69ZTr0fc9yucT7jhgSN9c3wsjVls3VDbv4Jbu3bznKE6azHJfA2VGHihMXFxeM8UROfU7sNjd89euv+Q+ff853/uUj3nv0BM4v+LeXW27eXpDjFqU8pVrMmNhfbNgOFsgsj3s6M9CvTlgNSzrjUTmzf3vJm1fnxDCixBQVrdUBBKrUxqoXlkZRd6XMf/hrriwaFNAQszv1A/O5mwEb6R9Kyuz2mXGqlGIBh0LkjqXIcZVayEWhs8Y25njJEzFP7FNiygJaS73+h72LW86K1GQpS3K7tp5htcItl7z/4YesVuLP7Ith0fWcDEucUrx++Yqf//3fsY+JUCThVTmLNo6KMHqq0phOEudP10c4W9l2nu3FhIoj1q9wVhF+y+D/23Wp1vLs1QbSafTBO/iuMX5tw4FUYxseCyhrFGivWB8fc3L2kGG1RG1FHtf1nuVqKecwZbLSTS3VjqstOCVnATyMY+h6bM5sGwsOZh8uWWTmkAbB7aTnVW04Lr2tJuXWjythF6OkhE1VYavs46oNQft+hckzi3+WRBo653Beo5QwrTvfY6wwxUWBLify6mbT1kwh9ShrsM5hraPantotUH6B9x3aCCBoXUfXDXRdx3JY4b1n0ff0fUfvPM7LAEsbS0hiG5LHkTe9J1xdcHH+XGw8Gutqvv3n+jlnCbtLGigJVSKUAM3kx6jKNO64vHjDdh8Yxy0pBXKRwXZWhVwSKqvW81bp86oA3SBzl5l4dAt8zfZEsncJeag9w3OK5OEDZjUHRbcghRYoh5BT5n5C7oH2e+6CXdyuoYeB/28F6W6TXe8C1iAsxrsEmrvgk6iKbh+Y2eZL6ebH3QZoJkVyES/tcayEKUiy9mxTJII1uXf1/PMqMxRS2/mUcA1RHQlz1YITTMM6AXC99XKtcmXovexBTWFnrcNYc3gvJYuIQ9eKqoGiClFpilFSmxSHjh1qL/09rsN6jS2gMQ1IvT1X3z6nv8/rdwN0WXTnuUJpGnPxShJj1hQD1VpqypQo05XcGASoypgKSasmSpWJfCmCaqLAVC3Gw7UQUyXUeZIkoQa6FRxyIQQAk/Q2OZZkDbEdj60Fq8C6JtdUQiF3FLRtUb1F4nyN0egmR5qTMQ+MOtTBE8k6iaWfJwlKy7REmFzS0Jd200i0NNDAOq0qnmaoj2rPhTxc9TD5ukW3Z9kaTf5YqiKlpvkvzeNuBqXa8R4euvbfmXU1P8KlCniqbIf2MgFWBqyzOANGVXJw5Jzw3rFYLLDOEWNEh4miCr6T5iNN8bZB1EauWZTkv1wkhbEAFJE8G2fZ7TbMhqSHYqqKzMxqmZI4q3BWAMwYR3a7DbWXxp6739s2vVvPuVt6qFbvauRn+R8l3RqvzwOtykHOG0MkWkUIhmBB1UjOEa0zqojHQQgRSqNcl8ZKC4mYAtlWvLfi7wWNGaHRSjYS54UdWkpj1LRnyChJhZwTh2aPhPmOgOah8K1nWPT4UqAqhUhoaZHu+naiMHslKi2R1maOJy8ii5CJjmaxGPBeAla8F2ZOSZlSmn9ESSJJafesNYrl0KGNovcbxpwO1HTdnkttNQaPc1JsFlcY+soUCrlFyR82DC3Tf2McaLBGGKXW6MN0b05rssYydJ0wOqxF14Q3lt5ZBu/ovENTsVWRjbn1M3KOjKGzI944Fn3P0PeAyAOiuvXfmiVVTmu81cLuMQWLhEYUVeisYfCGhTftmemxrmOMkZv9nv0UUFM8yH5nj69apKAqDdw9sIWQ4qTKYFLYVbqlYKtKEVY2KkuTNn8ttTEtuVMCH6aYtGtsJRyj5gNt39BMl9tCodqEN1OJRdLGUoXYAL6cszSeVNa95bMPn1IenPBv/+5vefL4Hp9+9ISf/rsv8KszPvvgmGdf/Jzdsy1vt6/ZpEnCcCxEhHWqtMJqQ4wZUqHGRA0ZlW/p5bO5SUUTcpYi0VkBo0tjCRcwGJRR6KJAV7KyBAxBWbSzVOWk7NOtMEyG7UrK+QAAIABJREFUicAuB4zWkmfaPCJ0hqnIczdlxT5WQq6MWVGwdNZTXU8ynqgrUVmS6chFM6HFM1Q7skG8ynqPqlaSLK1Hayu+eEYRayEqkREb4+iqJilDv1qxPL3HqutYhMh2X7ic3pBzwbmFJM4OHm0yYZPAJLBSBBjfkXUlYZlKZcRS/QDdgoBjN27JaWJSI1P1zaMLxv3IuB9RKBbDkq7roT2HmErVzcuyJvabG3AD6vgEGLjeWp7lzAWRNEWKNozRkCcB/qZ1wtqR4lZUY1Bawoa0nYslIw5aRlJTbfN51NoJKyEnattzLRVdKqth4OGjh5ysB5a9JylpJDrfY9SWEPaEmNmEzI9/8CPO7t/n6maD0YbvvP8xH374Xf71v/7f+OlP/4rdfsQ4x3IxsD4+YT9NvL284vLyklQK1nX0/ZK+pZhnFNaAM4lS9oS0JVdFh0NrT0qVcRwJ4x7qilwVY8qUIhP/XDIpRzqrMc7KxL/voCqm2b6iSeJlki+FuqFK3dTYnkoJe5uZsWAt6/WS5cIRpxuUgmHh+fjjj/jTH/8Zjx49YLnuOX/zDU+e3uP9pw9ZDh3bm42wQVPgzcUb/GBZnyw4vXfE+uSEn/7Vv+OXv3rJg4f32N/suL7c0PUD3hturjf88osvqfUFuwgRw26qvH69Awcha3Lz6aMqFoslq76j5sjm6gKjNM5ZkbK2EKnDHqalSatK09lMZzvWy4HBO6Z9ksAXa/DWCYu9FLbbHSkn9uPYWEkSzhJDFBl6vV0jawVjvVhXZNWK9MoUMvt9YljIUDnnwrjbEVIgKQnKUQZsUdjm+JtVJtGAdmaPJQleKgjbtmgjjNPNDj1FTtdHnMWEd7pN228xkrs1AEhwgJCgpB4xSmpFjUXhhClRoWYZDmsdwQSoW8btS379xc94/tXf8PSB4XixJocdu6sdV29e8uWzr/jFlxsu3ya060k28+b1hNPw4NETHr7/iPvvP+XR48csFytpGpHBfdyOhN2eGHZiBl9E6n/19hX7aYfzjmHoeP+9h1xsrnl78RqtC9YhgSdjAl0FYFTNW7gNmuBWBpXaXin1Xtsv5361DdK7vuP+wwfcu3+fruvZTxPX11vCJAPT3c0N09VI2u1xzjKOgced5ztPH+OmLS++umQ3JRmQFMsYR14+f8Vf/uX/hZsSP/zsRzy+/x5/9qM/5mxQVEaU0eySRvkz3v/gA1YLy/bDR7i6pTMKY1Y8+uiP6Zzl7csLXvzt3/MPn/+CsN9LL5MjMyWhHv4k1UAqUUA6/mNf9c5/67dvMAFJKvI8zRK1WtlPkSkWqrIoPBqL8EYzHHyxHUqBYULXQCh7prRhH/aMSd3ez38IPjc38Ifjax6zzWvTe8titeD47ITT03t0vuOoX1FjolMGqzRTCAzrNa7vUaOjksHqxnyY2T8G4xSurxydLnh4dsTqgw+5+OaS1+cTb0KmxoB2Qh6p9Vane2isZ1ZRI5IwA+qKQ3jDbINUEAleqYUQ9uTcLF2gBTDImme0Byq5RGgBVU4bUoqkEEkhiM3OXEsm2S/IQuIwjSygZg+w2hQLpQL20EPNybSqXe9aihBijKgKxONRH/Zra6RyNKVirKcbxI+2ALaT86Cb5NQ0prFVWlRIJPm78aIaaPec1g5jLd36TFI7naPrPH7o6Ice33doO1D8AtMt8L5HG4sxDtcAOmsdznbSq+tGFmiMZap4o5skwYtFG8blisViSed7grYyoHOWg9+jntfaW4VSDCPkCXJAifsY1lRymthcX3K1k541pUmIBhQBptvgxSsrfdEB5HoX9J3ZcN++v+4qx6SnnCk+td1jHEg52iiUMhhTmvUJB2sy1ZCTQ/989x6+83vme+HbYNIs777rKzcDdHd78nfCIe4Afe8ksLbvmQP/bntXDY0dTxVPbKMEs8m1pece9PLz6EFkvtZ3B39ujBYCTMlUrXDDQLc65fTeA7EbWQ4s/IKYJhSGZd/R9QPOGoZuoO+FQGKMWOKUXMlFQFWdApnMnkKo4h9voiVfZJ5/8YJnv/6GUSlsMRgVWx/phQDf3vt8fX9fcA7+qZCI+eK1U9IIOgfGScmJkoSxFvZZmrxaxLNMay5uRoxRGCOprkVpoa+3FvImbObbUqYyVZrqqhRGFZzKsvHXCkWhskbFGekXBshMQbwqma5E8fMqUGujne4rNstNHkppDJfU/KFEylSKFDliMHkw/MBomVDL+qUPkdN1pnmaNoTglp0ibCVhtcWSMYfJlcheZ7gRoNQoN11tE1KkGTHVYEzG5CTG6NSDQbo8k7eUbfH1E8DwIH9AbopcxbGvKPG5M8xhFbTFWHzStBGpQWk4kbaGTg8NpBT6qa1RUvf6QdJvc+T66oqiaImcmdiKDm00aNcSLGc5iIxh5mLLGMVqOZDyEcYJM3K3F/lkmhlA3FJw50Xk2/fn3fv07uc1unmNFuYwgYJ4gNR5IUEWnpgiIYC1VZg2iD+NUZaUJqYxtmtgoGZKC17Ybm9w3uD9gLGySGrT/ARHCYmY4kiKsQEdhRATU0hSUOfcJB+IEX1p63oDMSXh5naBzKUcPD3uLoK3G295p9HRRvw4ZuZiyUXMdkthlhdZI0Cgboa6CpE9o8F1wnyJBaq10hJUjbaKZd+RQz4kWzo9Px9KjPrbRqRRdNYx9D0p2yarbKV+vS0YamtvjNFNenrrnaFqk4lqizXCltFVvDEoVSTtWpgKysjXtpIeqy3eDhwtE5t9EV+/1gDENilTsyeb0W1jUFglz39nFZ21mN7gFKy6jqPVgkXfEcMk8nmnQRli1KQkctiSggCGSooV2yjdriXAWmvkPoDDJlswTTY1A7bis0ObYoLQ7ktpHLhZRgEtXlzkk1aLvMFozRQTSWd0A9Br2+RKFQas9xaNBaMFnAOUc1hnMM6iYsEYLyDC7powXXK6esRytSClwJNHj3lwfo3qBz58/z4/+fG/RF11XD58y/NXv+TN+a/INxdipqzkuqu2ZqlSKVNk2u0J4wTayMCnSspuUpoAJK2x1lONEUP4LIETOcu9k5C1ISjNqETe4fuBgiNniazHGEo11DFSsVTn8bZDF5GtKucoviNZS3YdtUv4FvNea6EfBujXTNoTVCH7BRrx5OyGJcNyyZAr+zG0CaHHHbfEa13RJLzVDL2wllKpJARYm6bEZrOlc56z0xOWvYA5R1Q4WRCmwOB7nDGslwusVex2Z5QsMshcNa5fMwZDSh3jpLCLCRX2LL3Gd4ZFCpQS6Po22Y6Bcb/lJt6w2W+xWuOXPYtOkyvkmoglUlSP7yxDZ7G6TYbRoAfGuuQyFq5TJMaebrGgugxljfOKqXSMu0S31lRtKVVkvarKWmmtxyvkeW9DBqs12krQyj5FirZY10ONaBIlZnb7PY+fPuTk3il6GFgdn/LZZ3/E44cbri63hFA4Oj7h6METvvuDH0iqVqksFgvSFFgdnfHdTz8jxkSh4ruB1dERY5j4+pvnvLm4IFcIVTzHPBpy4WpzwxS31OktRkWOl56baWT/WvyOYoRxLOz3O3mGrWWXCrUaOm1IShOrMEaVsxQtrDvnPS4nAfZDk+xpgzEWXSXNvaQi9YqaU6jr4Xy53rFYL+h7DWrPcuG4/+Qen/zoM777R9/HWMNpuOT7P/4Ry97w0Xc/Zn18xNXLczYXF1Qq290G12tWxwNH94/R1vDyzZ5fP9uQi6ZbLrDjyJgSIVVC8YQqQNbR8Ql+dczi6D5+cUIxjqrFhyqXiRhGnK4M3hLHPXG/Za9mdsGMx6uDvH1WSyilCVq8PKnisxmtSB1917FerQghEMaRfQjEGEmlyvNOs1SpIpVvq2QbTMwhPI1RAyhlmKbC1fUOY3sWWbMPiXF7Q4g7Ug0UHKoqTCnYKnVYrBBRoGxjk8uwUj5XZDiATOJf/OorPv83f8Wu5BbiUVudKs3HrEyYj1VKpRZGpjK1JowWT87aGBWq/ZpKRekAeg9qR60X1PwG70bu3zviaOXIoXD5OvLFF+fcbN7y+a8u+fL5xH40OBQlZt5ebvnepw/54fefsDzp8auBs6M1gx/QqoVmTSNX56+5PH/B9uY1OYmX8zQlzi+u2I4TfrnAeMNmc8nNzRu220tS3At7MQVyllpdG3Ur968zK5QmgxJYvOQWlqFKkxHOih4ZQh6fnvL+dz5gtVxCytzcbLi+3ohXXtGkMRDCDlUUeli29eJ7/Nkff8LN86/4+799xvlG7r1OQ8qV/W7k889/Sbq5RpXCf/UX7/GTH/8pP/yjf4ZCLCpCtkzBcnx2ivWQ46dYPaHJkC128YDNVHn25Ut++e8/59WzF2JDgvRO2pqDfxcKqpY+KNVIqnO00X+qlwB0d6G6edhbWu1FIywkIlllCaypRpiSNaN1ppoMeIrpBNTLE0oVct2yC1dsp2umJCSJ3y3e+s1X62qYQQy590XFoa0ERXSdZegt/eDxzlFIXF1fknZ7VKlcvbng4vqSMU4t1V6CI8RLTwnI4yzVVIqKGAcPH57xn336A8qm8rc/+5Kf/vwrzi93oh75tnThztmcj1l64ga1tgEASK+mUaiioBniT/stMUwoJyxoBdQMYYQwJXLKUHNjuhVSkPCSuN0xbnfkEKixUJX4rZssSfYCxhVhkIdwUGjU5ossx3OngWopH6oNOBQa7RRGibddRZJIh4UAGMo4IR5YUUGgtQxui/R7s4xVmxaAUKGSqCo3IEZsi3Kr+btuST8MnJ2d0Q0Di+WCrvfi9+w93dBhup6ARrlO8ANEGmuMF/VdU0o0Cl7zdm3y1NIG9NbhrYOi6HzPcrni+PiYNG3Y7zdC2DiArvNegMgmUcRpJI570jRSS0A1TCKFPeP+hjBFaokYo+icplOtH2hDpwFRDR4G800tNfu2VN16OG4tnEB+/zxQv+W4cftvWgKlyvws61lpZjBG8IrSzst87XVDyr4NEN3trf8pBh3cVbTpw7/fBZ7m31XusAdU+/y8/sj6DdoYCVdcDAzDwBAz3jkZEDe1wV2JaFW3xyc2ZI14pBTDMOC9ZxxHKrA+OeMHf/oT/uiPf8zxyQl9Z1l0S3KJeNPhjcLZDmsU3nZ4Z+hcz0xCnAMwDaCL+AHvdSHUSk4WHy27rzf8rPsbws7warfF7i9RZYuq0ntGVbibmnz3nP8+QN3vBOiMES2vLrMG+XaSoKDF4lqM0s1/pWB1Y8Q4QT9rgarahEY4rAckdLPbHSiT2sqGLD23FDna+8MVriBgUJWbODeTWKVFq15zYbefsCYJXVFVOgMxJzbbDRQlDZ5xh5tUJJuZkm2bus5DH2HY5bCfA6JpJk8yyVRKvNSsoZREKg1AqZJyVrWkI0URqDIXUlqlW3aTEoS2tolobufXKEM10sRYU7E648xsno6kR+rZ3FCoyJJadLsrqOa5oE1pQKZITcVVVEFRlKxQRTzpjNZMNZC28TDNFLPxFq7RfEM67zFVk3Ui50husrlcxCy2lsaoS4mqi/hYFfHJKc0zR45RJLX94LGd4vj0hOXxmjdvb8B6YrpjfnwYWN1lHspr9k+QjfHdKcScsHgwGW2rhUxp5Ye6zmNckxIqmkGqaNZzjGIsmUqTHRWRVrbphHWezXZs96PBdZbOi++BUiL91c6RQpAkOTNfM7mj+r5ns7+RjSQjqZBZcSuIrwdwfDYFPQQO6Lvv886ieGhyZho87fmTxWb++8zoEi+IOTq9JaVqxJ8Dg8qSTCjsWUhFfNzSVIhhkk1IyYBSqZa1VQslBUouTDmLfCg1k/4qdPycZBNVyNR2LsuoiMl+Y9Ed7gHqYYE3bVKpSqXvOjrvsUYYLlq3SXzJFKXwXY8xHuUcvR9wZkuKiRgSfd/hrW3eEBljKto21oYXHwudFN4pFp2jt5qFdxwtBpZdJzR3lfDeoK0UK840YE/JrMtpjdUcQL/ZE8la0xKt5f1po6CaxkZsm2iTL9z93y3TTi7qrQyqnaPmcWXb+pBzaXN4af7qAQ2Uc1uqFKzOWqwD1/esT0548OQx2hlebTekmy0qKeI+8OrVN/ziH/49f/LRd3j6+CHTzRtCTqxPBq72I/spc3z6Hp99lnn4n5/w5vpr/s+//F/5+V//FLNTrI6O6boOg6a3Hq8MpEzYT8RxwviOam/fa7Ga6h3ZSuIrxpAq7KbAbpxQ+OZpaUBpJm3YK81eW6zvGPpjDL5JXA1+mFi6HhUC2loWClLJTNMk8h3fkaxBLaD3PX5YUTCknIRxZwwpQ9YdemkwPoHW2GGBGZYSZrFIpFxAGVzVwtJME4qE9RbV9+gm16SAdh7fKRZ+KQWh8eyrRllLthV37wRXKl47LIp+ueRoOfC0/4DF0FHRTEnhuhOm1JPrmlwW1Ay9nuhMwJoKukhxSQakqJymLc+ffcXXX/2azdUli5ZEXaoixIDuHK6TIJjBG44Gz1TkWcN41HBC6Rw5CYPInp5SSyRtXuJ8pdzsSUWz6lYo10sASw7kDDFkkskYMxcq0riiqgDmtQjrzneQxZC95syL568ounL65AGPP/4QvVjy9PQhn/3wJ9SkmcZMKJpYKg8f3Kc/vsdR1wESJsKy8C/+/M/5k5/8hFpL8wnRGOtIJXO93XJ9s2E3BcasCLHQK4culV/86h/49defc3n+C9aLwNGTJb/65hm//JtXpOwZes/ZvSXd0IkRtdFgO0qxZI0AzrViamHlLK73LNZLjo9PWOwnIq/YpyQBMd5jXc8UEyHsCA3g1r5r9UJtvoOQyEQig/WcPTzle59+xD//8Z/xw3/+Jyzun1JK4dHHH3D0cEnvYXV8jLWWYblkvHkApaK9RfcGbRKm0+z3E4vjh2QWnF9sUSSub/bUrLDWY8wSt1zihwG/XKP8mqh7YtICiNkCIRDGDTUFdM1c5YiumZpy8xlLKPxtfaQ1xnCwHjBW45xmv5sIcWqAjEwqrbP4oQcjSYwhJWH9aoWyRoy7cxL5Wdsrc6mHWUfOFWOEvSmsGkcuit0+0e8i1mZhrEx7ShrJdRI2TQKTKybnZkcijGSFwWBl/6uZiEhyNLHteYpXL17z87//Offfe4I7PpLhYU3MYp2Z5d+oTI01UIDUEhHjXHkjvEp7GO4qk0DtoV6Rp3P22+fcbL4GfUk/SPO/ebPl6u1ESQOr9YrTe4bnl6+I44jRPf2yo5iRs4dHfPrDD9mNl4xhYnd1ydo+oF9lAcmmQLi5IuwviPGKGHdsLne8evaGF+cXvN1uud7v+ebVCy7Clmdff0UIO7rOEnOglixNkXcCxGlFmYkScz2DOrCTaimth5iZHDNlQJQAJ6enPH3/PSiVi/PXbLd7trsdpSD1dC3YklBI6NvRyT2++92P+eTjj3hRJk7v3ePri1H84cJEjRN0jv0UeH5+zi9/9Qu21y85ffiIYX1P6tCqqTjxD3aOqiu560FndI3oWsl4pnHP+YvXbK+31FQwWpGnSK4R68yhvqutzsnIoDuV/xQMuttXPVRTtzVV66pAZWb/bWwFm1FOhrS5KPHRq5miA8pkwDYGp3y7sYWct2y251ztLghpMf+SP/h1AAuqgJgx7lC+YrEyjDAFqyuqpeGmmqkqk0tk3O64uDrnenNJzBPKii/c7P1qlWrkAQmYSDUSc0DVxMcfvMf9oyes3SkvrwKfX31BLBml7IFR9ds8vA6EiEZaOVglUVFVmN8FYYqSAuN2S5z26KUosGbspUT5sFozdJ2sn6WIz2aI5JgwVeGNeEaHRnah3IYnpJTYh0QdR2KMB5WKugOoHGSOVVh4qtWJ6g5Iq5XGeE83LOj6pUhOnUcbf5CZlloF8G796CxnNrT+owoBJVUpcoUlb0R9XyvYAdutefD4Q2HN9T1VFXIOpCqKhporoQTpBQxSt2qFcaLCKamScpRepnFfNOJVr4wVQkaVWrvo2Gbcc5c/D6pnBGtmpAlKp6qsS4vOYWqhxoAqCUylxImw37HfyfBKWOxgTetPOkOpTiw7iqLGFkNRxVbk217pM/g1K61KFQ90pRQ5ZYyREJREAWvIZDSGmBK9u8Vk7vZ+0kk0ctM8xFfzv925f2vlLkA33+cz6WXusQ/ff4cxN2M3d3vQ22ek+aCnOdix/YxGHDGNsKCsI3cOe3TEer1mkULzpBWFk+u6tke08EfV+veZ4Vgy3ncMfc/ZvXusVisury6ZpsDR2Snf+6Mf8V/+xV+w7hdoBc44Cfo0thEFpP81SnoiM3sxlnZ+VLtTWtpvtpWAQheHjZrkAtuvt/zDl2/Z6te4FDDKNW9gK/v/txbCb/sN/q7X7wToZsT1tnCY2UlCdXdGDBq9tdKYolHOYboB3SlQgaqE3qvag6/miGwUFiebp7X4XpD5gshAanuDSpuWbibAXUhRGHBZvEhmk70URNvvjGPwHc4pjInYWmES9hFGS9FnPb7OWmphzxzomW0yqqmQJgkraBIX2c+ERlqVYjbHvxWr3f2bSB3LPOmcQQZqAzIqpdHEVS2Hh05jGiUStI4YVQ8plXLeFQeiZ5WFqXHN5BjaBNoqYYRp0xr6lpajlD5QTHOOeGdwxlDJxBjEW80YvOmpWYwO5T0L4LrPe1mENCJRK+VAKbZKPDVSToSciTESQkKjmqn1XHLIRGUYerRFkoI6jzYdU65cb8LM/QZqiyq+u5i9u8iU5n9wdwHJOaGMboDaXCzPzEX5WSEIs1OYfpmqNa5WSo3kFNF0pFQoUaSosQrbSmsBkEqBlCogTAylXJPWzexJSXktpR6ImcY0d5yZDq41utyCLnXml6qZCn373M0sA3SVRM/D+TyMSW4fXqWoZQ6nmD0e1aH2L0WK/zn6XAHzLqdUMzUtktxkUBIVXzJhGhnHFm5RyoGNKECjotZESfIszlLwObmI8u7CLri3Imct4TGIfFErAZgO9PtSmx+l0NiN1ugWge20oXcebVrB2a59igmDIWsgQZgiJWVsJ2aqXedJMRwAb5TCug60ZQqJ7dBRpglvEAN2b1gtOo5WA95oSgz45UDf92Dkmu8nAeeMAm91S4eUc1NmI91WkeVGGVBawLPZQqAg50maAFm3Zi+5Utu1pLb1qDJrtwRsFWq4beevpFkk14qS5nMnm+dsqiryj9p84vwwsFit0d7QLxfw+oI8BYIZefbyOX/1s7/i8Q8+4/1PPuXL3TVfvnyL95U+J7ZT4eTsCfo9zXv3Tvj06AOux3NeP/+S6VXBt423Jgme8doKm+jOfQQ0I1mF9grdDxRribVSjaVqQy6gjce6AWt9819R4HtGpbnOYv4/6YRStp2zzJQzewzBuMN6XY0lmUwomThFdIgoKsaIvUHMktAMBZ3m41MY3VF8B0qxTZqbzdiMjw2lWtDN+L8a0B5vPMlqtllxs52IOVOVQbtCVYZaNVYb0pQxY8T4jmh7ojmiX/RYbeiNph8c3cJydm/F8VFPrpmpKIb1PYpeodwZxp7inWWhC6bsqSWiGvBurYDO3ilUjVy+ueL5s294+/IcUsZozf56wzjt0b6gGbHhEmpkcBpdjTR0VlP7gdB1pKzIaNzqmDht2G8qoWZ2pWKqZlisccMSXxSmk+m+tRrvxP7CNL9FmbxnahG+Z1WGhCFmxaf/6hNWnx0dlre/4zV/F/53ePvtquXO6xz4u9/x73/o6/32wZILllwA6ocf8/73zhj/x2uWw30++u57fPTJx3TLJInAncfQU1WiZCvSR6MZjtc8fviQB/fOGJZL3r694s31NepamBZZyQCwVkhKEZE9wLZzpVVtXjsiI401Uo3j9OEZn/zgE773o884fXyf5CSDbNGfsDzzqBpaA6zx6zXaDdSUsUOP8gZUoJSJOsFw/IjH739GSoHn33zBxSawHETeHBOEvKfGK/QYiXXHVK4IxTGViLYZlSfi7obOahbekqY9i85xdrQ6DM1qTjIArOK7h5P6UCmFdYYOj9ogrKIcxL9JiTdfagmCGQjNA3eKkVCErQ71wM6MMUlNoEQxUKsCJX5GtYK2Hdp4xE/AopRFlb2ANXkS39gibBhTFA6a7EjYjFKFanRRFKWoWlN0+3pTcbanFkWKAuyJcCIhgHk5WAxJXUdb/wMQyHmL0uUgQ8q1QvVo3QGmDX0jtV4R919zdfkFN9dfMYbX7Ke3jNuRvi4ZN5HdPnJy7z79+piLEFhfana6YvvE2f2BoyPPww8X9CeR7etr0nbk6nXl2L9PP2ho8rXjRcfDswWbtOVN0Lx+ecHP/u//wJfPztnGwlQL17sbJiWDgH4Q1s2UMs62VEs7+1HdAeaUZh4oUZt8qxm218ZwmSV5VQnLZ7lccnx0wn6/p9Tm/xgiOUld2BmN7jphQGqL7Tph6FhYrpasj44xHlKKYn1TCwW5D7OCm+0lOW+hTkgV7kB7YR21QWhJiqwtWRkMBq8yJWluriJXb6+kEdSiWpEBdrM3UU3yBU31kkXiWn6zsfvDX+q3/vmw99GGqroF92kFOqJdRlkJCCt5VqckucdKasAk6Cw1tdWQ846rm1dc3bwh5PvcSXL7w45YzV1SpdaEqgmroLNyL3gLkEhpJCWREFpTUF4zbhNT2BPinlIDFQltqVpTq/hCltKG3aqiVGGMey4uz4nTjlXnOFuvOOp7GSTkhHb2VlV19/z9xvuawbnb860q6Cr7mtYKFQvTdkvcj4decL7wtQixQSvFou+oKqGKAFY1F5y2LBaWuugZY2KbClNTZ6lW90rKd6GEIP7xrfab+yJjTLMo0i35sjGddG3epkZa3AqLfuDk9D7D0RkYJ3WWdSIhbL1FqeK3bXWT9peMqWCsxlSRmooBQBXQTBtSTIwhYp3H9kuK7tiHwmZ/zXZ7w832mpQCzhr8omN9/5T18RGr5ZHU2TWhtBBdJEfmduCs73gAUpqsVEkgDEhdGVNimka885ycPKFfaPZpTwhgnyKyAAAgAElEQVRBWKu17UXKkDuHun/KehhQNbfzXMgxst1cc3N9yaZaxv2WadzJvVfEiwwjPbI6rFn1QFKYBxFzfzMDdLOyL9eKaVYudRJbrrHZz1SnKBRq1nResx784blRM8h45+fPN+Rd8OxdT8Vbieu7z2C7q9UczNFk4g0/KA0LMS0k5fDcVkTq2/CKA9FEfes+tLYpinqxvVku6fse7xsxTOvDfmi0kdR6pYilYUPWoK0l5Yi1ln4xsD495vTklKQqerthdXLM+vSUs9P7OCX9TnM6RYTH4N5J1W1kEYXYL0C7gILnoCTBVlfBsSxgvOd0ecrx0X2WIeG3lxjtBRwli/3DP3Juf5/X7wTocgNDZvmkmtHLxnALMRKzNCK6+QZpJR5vkpAp7JTSJuKitzZQBKDTVj7vPSwGg/OWXBED2VQJY8UqMbpWRjTVISumCrEKRmyrpVKJVURyvelZ2gFtFcpMgMgIYwpQRYbqlMEbizeWrKVpFTAho6rFtAs59J0AE1qmKLlwYDAprUlZTr4zSjTUmmb6q9BYaprTtVqyXlXUlvBBFUagpj1wSJOj2iXJqnm71USuqf03k2tGVXOHPQa1qia7FYNObWxjJiWpIJUYIntn6TtP7zVOQ5oUQ+fou45aMuM4Mk1BLn6RcAeaj51zTmizKYmBqXVo50kpQovS1laTamacRjECbww/qI05VtvMriGQs6ZcKbzvWCwyJhf2U5m/qk3pZCGrBz+F9gxpTanipXTL/BPQqyRuE4cQ5uGM4peSCCmIjNpJUV6qpLBpNYOpipQSOdUDsJJLoaQoaa/WCEBWm5F0S7YqiCdQroVxJx4/lIIKwhIoVFIW2Y7zFt85oq5Uo5v6WYnsWM/xzxmlRO4jtOY2aa2SEPbug9+4VnX+vltytIB+cuYqtaVQys9Ez6Btk0DrJkFtUVzGaAkOQAETVJFHhpgOP0M12rXGoKsVBr02JAqlynGUIp5stSQUFWdEBpW0eAHNByr3tTpMvGq99W2QfUHuhXGaWC6HZiorTIqYhS0aYpTex4hueL/bEUOgW8oinGIihIi3YlhqvWmJio4hTCyGnpS3eFNxRjF4y8lq4OG9Y3qrSWGi1kLfD1RtKDVzfXMDNaMBqw0P/uvv851Pjg/X6Dk3AJzxAWd88Hssz///vL5gB8DJv/iQH/PhO/+WeMb/8PK/hZf/xA+5af99AA/+m3vAPa6B63e+6IglT/gxP/m9juu4ffw+Z24H7Nr/f/vlv/X3Hg0Mv+WnhN/6WXnF3+MofvvLAO6f+JpZIjTLhKb2cXX3i+6+ten/9eHI6+TOn8/+ka/5FGDP3at4fuefn/PNnb8Z7IuOk59pnO/ohgGjLLoT8KTzjoUzmJqoKeFcdzu91RWlheUUK2As/8t/93/8R77B/29f+m3CGEf/b3r++//5f6LWxPmbK262sQ0oGyBVBQR9db7lb7tnGG3IJTNNgT//L37E+miBdoaUxBKjc4bVaoFxTkKVirAOF0PPydGC9cJxdNTz0YdPefL4jA8/fMr3f/QDTh48ENl6g/OlcfFtXxcZaEWhuh7dGxnw1YrWjv008frtDde7zPreU85OVxQVuNkG+u6UlDXDMLBwgevdG8ZU2EyBmB0FR0DAp7zfsbu4ZNU5hvun1ArjuCcMDqXF4Fr274xq+4xGGGnNufegrihF0ucrSlKItRiYiwxFBrf7/V48AEMU03OtWzq11KikjHMdw7A4/JyuGwghYK1v/sJS94YWlJVzFIVAzRREhaCNwjlF1xl6MiQB6BYabBWZvho8djGwcD1P+573h4EHZyc8+Oif0Z+dEJcDpluCsocUWNrwRWSdEzFcs9u8IkxXLAbPer1kCiMXN9ekajhenbJeHDUKQKKmt4Trr9m8+ZIpvcZ2I0enjmVviNeanZK0614LQ+PouOfx0zUn751QneO9pw+5f+JQZsOX3/wcpytXl1foKfD4LIBqCbY1NQacoesM6+MjjFtztckYv+bs4VMZ/i4WDH2HURKmk1Mix3iwcIghSEJjkw+hxeJD6ds6Rpk73l4HzEeYD1KziCUOSpib0rNophCZxkjnHH3nGQZHxqKsplQJgnj75jU6Sy2xn/aUHBm6DmUVW2MkIKgWqs74voi3n+oBgwQOyPC8tXVoJT6VRURR5FzZXe/Z3lxLenuT3TlnqLoTkHgGf5rFSCVSywRFPK/mfqA5Ux4Eb8zBcYfqrr3u9n8VZkoAt+UVTcElx60qsw+ifCZhrEjv8nxu56+fmVdVgPVaxVPWGEONif31NfvNJSVP7x7H4QzN0+bbPx4OeZ4hKkulBbY1Dzo5ZgVFlBvb62v2YyTljEN+d9oHbi6v2G6uqTkJk7UxnjBKepkiifezEsVqQwmJ66tr3r694KJ/zZuLC7bjnpIy2oo/bxVCL7NagTYUoN7x7FK35/jue6rSOGMU1JRJu0AZhUmsqoWcoFhy3DPuLonjXmT02qALbLciw+ytafZCBh8SZT8JC3gGs+ffOdfJjd1Xygwo+ObrKEFMtVa89y3orqCdA2OZoshdh+WC0/sPWJ09FC/CxpzTqgF0FRSalBLeOvHUprSgNQU5kVIUlVnNYqOkNSFE9DThfMdytWKaIrv9jrdvznl5/oKLt68JYcRahVt43vv4Ozx68oRHT57i+wGjO3xXZb3GSp+ClrBKZUSiiwyBcy50riNO4hnpOgmF3E8T66MF3/vsY87uH3Nx9YbXb865vrkmpoDWhlU/YFZLOD1ivVgKwFsUWmVS2HFz/ZaLt+dcK8v19QU3mw032y2jShivqMZSjOzjtcgQSuy4ZsWb3FOlik1X/X/Ye7NYy7L0zuv3rWHvc86d40ZERkZUzpk1l8sjFtXddrtRI2PTgxv8gkAgtVpGAiRACNSCh36ApxaDkJoWSDy0GiQGNcbCbVrG2FJ3te223eWqdFVlVWZWVlZmzDfufM7Zw5p4+NY+94YxZd5AiCOFIvPGveeec/Ze3/rW//sPRpVoMUZiLpSsrESTs1pP5axH3yQ12E3PwiITOGl0yF/r40QKmIY602OyjpqYns65Cqbpcak6UW3uX1MBOVPlywaj+2BStq9V9E5JSwRVmOS86XmsM8oNshqMZa1gTNmAeo3XoCbrFDiWStrwxuCtQVLCNh7xDhFwUfcK22ga8szMmC228IsZzaJlvrVgfjlDUuTG9g478wWNmBqypxVQOcDPFSeuEQ0367lcq+3T+p6MOTY4mwE/22K+vUtzea7qryoWzVI26/Ha09a/a139YwYY3xegK9ZrwyC68HNWw0dxlpxG+jCyHi2tczRqyoHPkJKhiRCHNeRRG0RjNajB6OYFbCLXS07YxmwWdhkjZrrRQiLGQeWvRjApUcaBNA5gPLnKV3IICrJYwxgckjJNYwgpU8ZMSPX1m0AWgT4gISMxUVImuUQqGVcBvJl1zJ3DuUphL4Uh1mkvBSsZI0nTeaTCCQaUgSQbphWpbHwmrNGbrJCrMbJTyWDUpFdnLRj9XUkS0UJykLyQnKgJeI1yTQYa58nGkGJdvEX9z7QCGIhVL14UzTcYnHXqf2IyREvjNf22pKwppaO+NoMCKiXpBMqIx5hqVp0LIWVc42tipigrad7iK59vLBHvC3R6kBVTWVtFm5iQCsvVCHLFCWzbGbEfIUddnJV9T5mmDzUcQcAiVT47Mc7YADjUyarJCVuMAnOp1GQsBT1DFIw3eG/Z292h9YLkyPa8YdY6+q5nvRqgmfzblBGYxFASiBS2t7eYUn9K0QnYOHQ4s8VsPmN12RMqoK3+YApiFRKxJOxsTlMKQ59rYpSQjbIlrDFoT6EsKk2ylg1wNyXkKLtTSCVtJJ5ihRLUXNdMq62CXlOoR8yFLkSK1TCYtpr3YxyxCKneDyJAFkIfSRmseEpOILb6lRiiEbJriNYShpE0KGU+UEgocNaPPZnJjzJiiFhxtTBWOW4RQsqs+p6QCyHrlCwVIZYKWIg2TeqXWFgOA7Jc4ZwypVJJpKSskRALJkWKg5TCxsSVovd441tyCoRYsF49HUxjsK0Ch421zC1sO89247l364C7LxyyPXeEcaDrOlIpjEnwJmOt+nHmpIeEX/kb//D7Ft//Lzz+0n/6M/9Pv4T///H/0ke8Y0lvF04vz5Cxx7YLhqQDqpA8RubszufMFttY15CLJaaCKRHvvNYvm0nmygioe7hiNp+xf+MGW9tbuqcyMRyePxXKNa7I/+lUeO17C/Cjf+2zvP2fvc94FjbfN31HKSBFCGGgW1+S44BvLIXMcUVGd+atBvI4o5JcKSyaFrLFefXWAR00TYEYyobTQJvWN/z8X/gZvvvRh3z7O++xXndINIQezrrI49MlKXeEkLCSuHO4zY998bN88vVX2N3d5u6rr3DnE/fY3pqzv7eNn8/IxldvUQN5Rs4eKS3GatOYEYxvEfGU6vNV4sjlyUO+8bV3+L2vfJP1OOPGzTk3bsxYbDUUaRhT5s6dWxzemvH4yHLRFfKJELsZJXrGJjPYnnUcmc13mM8bXDtXxlhKFKMeSjElvNdrLEQFflzL5NHjxJDFQDYaJpAdKRVyjBhanGnVvmMYCX1P6HvKGPCl4MVs2C/ee3zTYl2PMSrtTdUA2jpXU9sd3lcwpIysu0yIQ01rtmTjyMYySAFbmG3NeG37Bm/MPGMcaZ3nxu4eM+fIJnPzxRe589InaWe32J9tcdg49pqW/a0dxDSssyEtbjCUGQZDiGvW3SnWZGYzzxjWLE+fcvTxd3j88XeZO8OdgxvEvuPZ8pw889y7c49hvq0qBBspwyXD6SNWy6ekZsDtCe3BFvu7Mx49fsxytcLu7zAaw/n5Eo/jhYNbpO0Fsj3jEzdvkE6fcvL0iNWFEMNAWCZefuEeYwyUtEZkxRBWPD455eHjY84v1ji3jTQHhDIjlUAz26KZ7zEEwUqhWyUuVx2rricnwYglxZEsyoBXL+aCcQqASk7qb12K+p+JpvMZw5Uxfl2huQjDMHK5WjGMgW4YIReGMShQix4QFzsLlUgTGddH9OenmPEWJrb4LFg6cAHjWxa2rb6PEWMbss2swzlbeRvjdsi5kEQbkkJCcsFYjyVTYkacoWDIaSCuTwjjJZ0Io1elhrVCNA2x6PA/EzAevCRiv6Ipa2y4pGHQ46AYElo/EA13Q+rgtw5wM7YOgLWiqbgzo345qmyBjC86+jHF1N57UicJUsNVLI5UGmKxYDPZZWJBAZEiuCIgI9kkRpMZxsxcWvJxT7x5oab6dRBciTWYqRrXMlzM9DpTZf0YtREyOxRZ4JxFJGu/nWHdR867jvXRGY+eXiiQV5RlZAsQI2G9pl8tGfseiQlTspJD4ghiq1ejRUpLIx4XE7JOpBYePj7F22c8XK44jwFEw98SNXRgUnFUBZkYwThPH0f9HQJiLSVVr91qZxOMDlrC2LHTOkxvsWNBSg8xQsqU7BniI/rwmFwCQz+y2Gro1z39eqWMupwZ+kwyXj2uY8IUi801AK6ot69BA79AwwpCGnE0G2SgFKFgsUZofIMV0V7eKcNwyOrXVxpHu7OgaVQFVkgYKVhD9ZLXs6AhaSiFKONJwRvU8oiCKZaS1GbJWFWmNd7grXp59hcXnB4fc/+jD3n44COWy3MoESOZZAtPjx7x0uuv0vcDt+/cZXtnH+sbbFFgKaZccQUNlwJIIanc1Wig4ShCcZbkwDYG1xpyk2n2Z2zf3mWZLvBLi+uFPma8a5g3LSXD0A2kIXN0NNDfNizcknH1lG51zOnJI1amZb28ZBgzIYkGaqZMMJHiHbOYmM3Vdodi0TydhDeOMQWMUyZnIlfyjvYqpQZqVkaCkosmcCgbTNEEZSmmAkl2Q26Y1pqZCBcYymQvVXQApMy+Uj3iFXgylSQSJyKMEaxR6ycrTr1xocpkRWXA10I2DeCdxZpCStWoRiYLJQWbvAfjCklq4GcJeExNXheMBd8IjRWagnr6NZ6udRQibUlY6ZlVr9ymeRFsw96thjdee4Wbi9vc3b2JTyN3P/EKn3zhE9iQ8d7Urm4C/Cc2CFSfMWUwX+8SZfJnR/3njQZ1+gqbFQPZwTBzRAcRZfy2khAZCbFDLQT0E9YlmDe1EZT1+f2sDL4vQId1lJx02lkUjbdGdDHHTEQIpTCUrKirycRUiEETAW31HBHA2IwVizEJwdbAA02hzCHSrTpCrzHFZBRkqFLJnFUGY31TP0tlMalmW998iCMxa2JhH0bIGe8ccVRJR6KQcsKMCaxl6DrKMMKoGnadkOrDG8vMeFqjoKGr6YkIJFNA1LvNN2ZDT9cLpiALBZ2Ub/hx0z1QKoXfki2kmCu9q7KPqnQ2p6S0Xe904UUHXuUfpKzTb2s0QbYUYs4Ti1efs6iE1uLw4vT4kjIpZHKIjCQsiRwDo6HGCBfSGJGUFRgzhZxCnUoayqCoeEw19TAY2jJTKUGO1QdHDRFjVuQeU6nqE6iSCjFlluueZycXNJVBZpwlVrP2bujphwGhBgOg7ghOjE5W66YsQKgpqDrUUiBLmzen0yIEJ7YGdRhlElrUG8jqYrVWaLyjsQoYt+LZ8nNsEoh1GZVC0ttmUzhLKXjnCVEPdBNoFkMmNZHGQNM0kNSHypirpDqsIVtLEsE3HhujKgjQGWpKWROUKyC38ZzjSqoqYut9OMH16idhranR17Fu2GVDNd54ewFZhFU/1EjwgCZdqhFsxtbpqMqSc4bUjbr5FAVoSwXNpKhJdjSWgGMMmdBHjCSVlDcesQpeqywe/bcUGcJIsYaUtWbkor46IQPGUcSRSYRcsCnjgcYYsK5O3YWQC6sx4HPBOIcYR7F6vW0patBaGZigfouavrqNtY5xHICCbzzGe2zjMF7IkpAY8bZhf2uLmwdbvP7SXQ5v7dK4QlwvWa4Ky66n9Akh4u3kGags4OkxPurxjadpPLkU9TxLCmSbSr1OMVag9wpKmO69TX25JnkG+Mu/9C/wP/yVX6I77jaGrUamn66bTpVz67qtwINMoldt2q7M2Q2z2ZxmphyzvuuJIapE29paZwNNO+P27RfwTcOfbn+BW3df4Na9O3z1nW+xvbfH515/hbe/8XVcHPjhT73BN3/vt/mNv/tLxPMjZiXS1snSMGY+fvSU7z54wsmyI2KZb++yvbuv12I2VzaKotOgRw6m/iGn55Oj7NSEZg2SmOwJqAeYjN5Txs002dp6rPOVcSzkUhMijWCdIeZQU6SuPqPpOuTKxoZr7M76savc3pInNpBMPIdpTTsNcLk2rNLU3ikgZJq6CUUcyc4pThOMvRNam/FGE8i0TCnjdn+r4ZXb+3zxjTv8wEsH3LDnbPmeJiRisXS+4SJkvve9xzy+/wzvtrlz71VefOVVtrb3aQa4eHzKdz+6TzCFw9sHfPXt3+Nb7/4Bh4dzbB6I6xX78y0IhdPzFaMYgm9YpcD+jX1cHlk+/JjHPxVqzbKs+4EcIzZF1kOgAI11lLiDF00wHULUaWTrak0POBEayYRyxVY0xnL4xiGf+4ufZv/1XYwVwipy/t6Kx18+JizjNWAOeO6/5Q999Q/RPK59n9uyvPLP3mH39S1yLBz//hkf/72HODEka3HWM4zjhuLYzhpe+7m3uPnFW7i54+KDc77937+LOQ7M5nNe/rP3ePEnbj/3W2xrefrbR3z0Kw9gVvjpn/lp3n7794m5o1utaLJjWEa6PGP+6Jh3P/yYDmhdYnfheeXuTT756j2s8dzavckn7ryGb+cqz6jsopxGjFiczKnDbm2qiSpbEfXRokwkHkPDAonCcrXGbG9z56WbmHSfti1EsbTO47csbpExbYA+q39qb5BRk2Z731HI7B/ssreY0TqhRJV+F1SGSEm0RRDjKYyk6iOkwV2J2XwbKV69XIqH7AjDyNBl5jOYPJFTGMlxREpGs7y105Zs6n6a1P/RVGZ30ZCcGCMx1v5hUjlIoRt6cqd92zpFdFxsSWIZgCI6/N3en7G7N2cc1hjJ3DgQtheepjG89uZt3vrsp2m27pGzYeYcplhOz5acn/Usl4GdLMxunTOGc54ef8j3Pv4WOXccHOxQcuLy6BmP3v8ujz/8HmYYudkuaEtmcJl+Idw+PGTXOEIayCaxN2vY856xDKztyKrpWdya84XX3oAgdMPASqAxkd00pwRLwxZmtk+aN5wfr3jy9neIacnOS/ucX3Ycbt+gafeICNgEMjDkgUcnZ9x/fMLFck3TNnzPPeOii5yenXJxfspqNZBCZEXh9OSS5bpjjFml/7Vu28YR07hhaSgRrk5lq7m2rT2NsSBZTbtLKmRRg/SYNXir69R3a7XuyCFpAFTdh/uYaK0AAZdGuuUREgN78wNWl0tcMngGogT6XGgbhyuBRjS0ynpDtlHffy0e2agCRlsbHdiTC44IxTAmWK8u6FdHjHHJWmB0llSCprs7TZe3RTbMTDERSUvMeAGrUwXoxCLSVMmt8j8sGfJADig4YpWFORnuaNXNegith/SIgikQa1riNNSYgD2j5wYsrqiHVhILEshGez1dh5pfjBkJNhFsIgVhHheU00Ber5ASKkSkrfZUWyYm5EbSiwKmqmxpKqy4RWGme61BLSikkEPh4qLn2cUFcnSpMnhrkVJonVOvt3EgDwOkUAkSNXQwF5Wso6l+FqHBYaIj9QOjL9x/fErxJzztRy6V8oOIVO/npH5rte+eziZiFTDJlMq00zPOxE5KJWGdgBNyHzHS0J0PDBcd0FEwxG4kjJYhPGQdHhNzT4yJGBLLy0ty0Z+TnBnHQCQoszMCVokVtta8giqZCoWQIjHHKo0vOqMBUtIheC7gbSAJKjUvGsaVCgSxRCmIV7BFknqZmWwwol51KWeV3lZAiKRn+ak3AhQ4TNWiRkplM1e1VUmksWN1ueL40SOeffyAy2dHhNBhjcqrR5M47y7JprC12GF3d4/d3X1KUe9444oCg6IySGOMBuGlyuRzrgZBAd4SJSMmY7wwmsDoIoMEokREIpDx84aDgxvcaHY4vbhgdXrG6mCLBw8vOLqz4laTWZ49ol8ds7o4YSVzhq4jJKFUy66MkOaO5nCLe80WB3bO+rxndbrm8uiS1eVKBxNTKqCASN6cmU1xkC2qlKpBcZia4G2rfFfxAsHWxaUFVMGn2iuLUGSyslHmq5kwCqO1QSpzW+0zBIzD5FxDU5U05L2vTP/qR1A/c8UTJwuq6fs1EExQ7EYDr0wNtS04X/T4ZqZAzIAu9OrV7QTvDa2zNAiuDjTL3KuPZIrMbOCFe4e88fm3uHX442TTcOOu4fWXP8Gh3IKzjrlEFgeHbO3dwWTB5kKRXGtPbdQreed6F1hEmW8Kcmt6binVAkjAVsk6WcG7AKwpilOFCCEhKSGmKsU0VXSjXps2kKkr/eMkr9+fQZe03CsqCxhTD0gVPa+HjCIVIjUVfY+BMUTmG326sm0yFlNKNeaFnd39OjETYhwZgqKLqndXoGqKrJ5kf1jD3Fra2YyuVy8fRWvV0G8MgdwrQEf1fXJtgxghxqTpj77U6VM9rBplIk2RuBg1E218Q0GTHnMtfvralcGD6LRiujmleh3EGJV9lgvGOLxcMZdyph7QDCGMWG/wjVfCW1L/rEQCozp4k1yVONZ0WFO9BYpKMA1SB2t6MFcSn9JqpyQgqSh8iUXNSBEMWfG+cWA9VE+EYjbYbkwB45SamlJhPax1el3UPw5jGHPEefUIHMLIeljrEMwYimmIKZNFqbEZ9XMahoGnxyes+qHq0LWAhKwIVSZzuV5zfrHeBBkom0w3xulAPoFyE+gwfX3zd30fqd6aGGrBYjqlKGhbYN0PBJNxOXOxXBLDWCd4oqy5lDYa+un+pxTGqEasxtpqQK0MwTGMlOVKo5ZzldbGjKQEVrBAg6Hrg05cQ8Zlg8uCz8pC1WGyAtPeO3LOhEkuW5NAcyhXVaXU4Uj9kjHXqO9yvTSwkf4YdcmGrOy4GBOSIkE0dEUTZZWyHJL6W/RjZOhHwhh0PaVUvbbUhDtm/buIsjm9gZjVZy6lRNeNrJc93q/BGA3SyIW+D4SsrA51+HE4NyPFnpSUjScCxdXWrhQFK1qvRq4VBLROvevCAK2bEYO+zmqlqGXXOAVmxDCbz7DG1o1BTfGb1mOtyp4ba9jb3ubOzUNu3rrJ4mCOSMCZhHXaBIgNzBcrFn1mvlgwpAET41UdpbD/2h6f/Yuf4sabBxgndGc9D7/6mG//8nv0Z+PGw0Emr53JJ+K5inzFArqSVtTfUWC+2/Lj/+qP8OIPvEAKme/8xnf5/f/2bcrzP7r5ftdafuRf+iKvfOklmoXn6TvP+Orf/gZpmTZP/KmffZM3/+xrzHZb+vOBb/4v7/Ler32P1WrJoixIl+ccfdRDGgmnJzw6esyORFbnpyyPnnJ3e44VYXux4PgkMaaRpvF6SIOaGKrm7VQGpzaSiaHrydUfcJLgpSqb1zWo6z4n9eiTa28uV8Daty3tbBvrLanoxLWMQaUvJoGMdVKmQ5pKj8UaUc+rEpkaGLkG0F2PpJ9qznRdpjStWA+UdRPVGmsmL9bJvJ4rYK+GXVTYD5sTFAimJdkWXIM10EjCmYyrspRsHM5ZTlxh2PPMT26xff4C4abh7q0tBHQ44zzrixWyPmfLjgzjGQ8fvMsoIy/cfYUtFgwlYlrHsF5ydPRUvVaWZ2DW3D7YxnqnA4eibOwkllwlLt5aTLGa9jhJgKPHmQVU8NxVrNVb9X+NqSOmHhixNuC9+leWHLDZ0SaqB6A+PvGDL/Klf/uf4NGXn/AHv/KItC40Ow03f3ifnVfnnH79/A+tmuuV7+r/p5GFGLmyRr32eP0v3SWOmd//T97FLTyf/hdfIqxu8eGvrigYxiKM2W4Aunt//i3m93b47b/+dTyWN3/uJT7/V77A7/7H36nSrwAAACAASURBVMQ1M558+ZQnXz5lYvC2Nxs+9298iuM/OAejcrmjrnARHNg9XOO5sbfPwZsH3Lj1Mne//TFnJ7/Kk/EJL33iFp/7oc/y0iffpN3bY3W2ZnXeEVaFZjYHKySJ5DJU/1r1plRAq0BOdS+rMsLr4V/GsXNwk09++rPcefcBa5lx884h3cmM+dwwxoBtWxbbhnaRuXHDcXN/mz2Xedwva1jDAOGcloFt37IwYIvuObm0xM4Q+lYHWLJDxpDtjGQ7srFEErFEZtnrzzFHcMpcypHMQKYjiSOUFX1e0adek21tAzV9l2RIaWAY11gXNLylGJzpAR02DjKoDQV54wunoVcq30slU1KociNlyeRSWHeRRw9PePpYe62h7/D+EdvbC7YWcx4+7Pjww0v81h79EJg1C9p2zvJixdHREWPfc/fFOzx99BKr1RmPn3zMBx+8Q7e+YGu7wVroVpGL446wGmA9MA+J/bbF7s85Yk3jP2DPeYbQgTfcPbzBnb19hhw4Dhf0fsWdl3dZlIbt5LhxeJvjk2POV+ckgWGVWIXClswJXWL9+DGX9y/Z3m1xy5bVheXs0RMuTiyf/4FDXn5V+8mh73n27Bmnpyesux4E1qtTto8WDENHGHpyStidLXIp9P2KMI4VGM3kVAeHOas1yOSlVYOhNCiJmtruKGqmW4vlVGNVepgpm4Rw9TBq6MaV7gfGUcQQi7AKgRhXtHlE7As0zQznZpS0ZhgTXd+zLiMlBEL24Ir2gFTP2kWrfd4wkKVBvNQhDXq+jKqSKFIY+o6LdWB5fs5qeU4/dISUCFFVGDFGSg2rS0HPCSlFJGpgwdiv6JaXGBJGTxibmiVTLctRN89r1W2z1bBxpK7/V4k4E2w27ZV1X7o6LAJT+F6Zho25eoIKpdSDeUGfzSSyLRhRIsc49vRhTZakDMMKXsrVq37utV69pwowFIgJ9VGrA1UFHgVyqeQPFRGLtVWOV0hGu8ZStMefZpQTSJipHpH1WlHPlBRLCpnlsuPx0QnZbXGyyiz7sUri6hNN4PG1z18D+tJGqjcd/K/LSxV10MJhvRBTYLXs6dYdelKOXJ4d0/WZdXdCP5wRU89s3pBz0sT0CriJsXivFjJDr0xUsXB9YivV81KkBt2lhNmcOzPG12En2l+NAUo9w1lnidZq4KFFr1p906YmmupDm2i976/2j8npeGIdKSuyek9LDVW0lWSRcmUOwjAMXF5eaqhLKdiJoEJU1VyJXF6ec3l5RikJ79V2J+dM44UU1V7LVHspyQVjqvxb2Ehxp7DXgga1mFnL1vYW9166y7wxHKGy4sEItw9vsVNmDEMgr5Zcnq949OCYD/bvs24cRw/uc3zyjIuLc9ZmpOt7laWK2VyHxe4OL7/+En/mM1/gtt/m7OiCj99/yLtff5+HQ6g9kNN1QsUhphtsw/rR86blquZJ9bE0Rm2PjLFKoDJKQJmu06ZGilwvExXHU8xjcz3r19UHWM+9pQ6k1SfOK9ZT7yORKmOta07BkLJ5Hqg9cDbEaumlOEVdEwYNp/MeI1MYjspkNRhKf6f3XqOQvGO2u431mV03sjCWu/de4LOf+TRvvvEl/GyP+V7P3mLGbjnA3MrYPIBvoKhPNDkhJlf1V6YydbQWlmu1TXSaoIFqRUHmmnYNiVytBTaD9QilB9MbfJhhxwWxn1O8oxgDMigh5VqdrXMKrU/5j2g+rz2+L0A3MXBSuXrS64ifd36TzuKcxvsWkykkYjRg1cDbOg1DKJmKpCuDQGaLTarfeq3mmVDITgGrZluZPLkeWI0oSi62BkeYjrTuSClgKxg4jiNjivXGyVhraX1DMQISsfUQbrxn1QdsKgr+OV8BSEWtJ8ChiBYSnZapUaJYpxkGxlJK0IbDGqxx9WIaSukVrTdxo62W6uVnTKqpNKLsOdG02VIU2BNbcMZQgppym2yQJMosjDrBLSbVgx6VHjpNbgSqhDbGhLjKyqCo1LUIDjU4XDSeFAIx6GHKWEMRIVSPtsV8G2ctMSbCKhJCqiCpbkhDHJhv7zFrZ3T9inWnhqDWWYr1RHqKohhEDEMqrIbIsrvg6OSiFgr1hYg5qs7dG2Iq9ENAaCjFPnf4BTZA3PX//6MegVw9eHKl9GrQQ8gJk1QWOsTIcuiZO8NW4+ljZAwDi8Uc7xpKiJp2abR6xhz1czXqeeB9gzQGsWp+Pt2fKSScdVglNKoMGW36MWoIn7tAjhkZ9N7yRWiLIWDxNflzYu5cT/ux2E0ohr7/+idfZ1jVYrgZTV8vEApAt22LayxS5bEpZ/IYMLmQxxFTMt7oRl1qwEMIgW7o6fqOmAwuX4VBpJT0WiYFh0OBMiZCjHT9QE6F9brn8nIFpmFndwcxhb7vuTg7Zz2OiLMMITCse5W/M/ksSE29u6pLpoCXjC2BNETEQGvndZqmTW+ImTGVCgRBSJkhRnyMFeSzNZJctxFnPc56pMCinbGYt2zN5ywWc1zTVM8+h5nNaYAmgY+6cU61Ixb9DKbHnc/f5if+3S/xwf/+Pd7+21/n7MkFfsfzxk+9ys1PHfLxbz98rnm9gg/YNJrP1WUr077K1DaKwJ/8N3+c0Ed+8Rd+mXan5af+/T/FcDny9V98Z7PvX3+yH/1XfpDD1w74u//Or5KGxI//wo/wJ/6tH+PX/9o/hAJ3fvA2X/jnP8Ov/Yd/n7MPzrn51g1+8q/+Cc4eXnL+/iUlJd57+ytEYO/mIeeXF5xcnHH0wXusuxXriwvC8RNkWLG6vCSNgRwG2hoEog20qd6NRr38EB26hMgQV3UaK1cgGmVjUGzEbiTmqTIEBalNrZAQfCyImTFzc6y7CnHIogBsTDXJO+sGvEG6i0qEymQWUgH66SO8Smu7Vn9kkphblBE/GQHrz1vRr0uprOpS6rrJFdyXDZBncsGnACUT8ERpyEZlP6EkLFH9XcQQxTJfzLEzwxBmrOeB853M/uwmH+WR/vIch+HFT9xje9bQ3t7n1Xt3SHbGasy4+YLtmaFxnvl8RnuwRd+vkRIQznn85Fs8O33C3pZh0TSUqNIycR6KUTaDAUEBOrnWVoQuMq5HTFY/2Zn1+GZKG84YibS+MGsLyMAYtNF2rsEGweVCu3Higx/6l3+Ap195xkf/6yPdt62lP+v5+NcfQykcfmGXuz/5Au1BSx4zJ++c8d1ffkAadSb6Y//e53nyj0/Yf2Ob7XsL3v/F+zz72ikAfT8w9iPtQcvuG9v8o7/+TVaXI3IZ+ejvH/PyT97kg1/7CPAkMdctQHnxR2/ze3/rfc7PCvPW8P7fe8qX/oPPsP/mAeFxqDLZwuQ5dfOHD1k/7Fje70AMIQXefu9jHj68RPwtGhlx21u89JlP8am3vshs6wO++o+/xcXpBZ/93A/w03/hz/PG6/cwOfHke49xaUYpLZQGFYwKiYQ3Gt6l0wltVJHKBsq6toy1ynbPejDz8zl7N28z39nm6Pici9WScRyxeeRgyzKUjElL9rZ3eevlt3jz3qd48t01v/0b3+C99x9T4kCUntZEdmeOmYzkJHjnwbT0XVLpotmm5C1iKcQiREDEkF2hSCRJU/dtDYYJOZIlIi5RbCCUnj6tWY8r1mNPjIIzLdbO9B50Qq6m4DImFEkxrEuHSPU07vvqSzWx8XM96OiwxxhwueDE4YrFo69pHDIXZx1j39M0DcMQSWmkbRPOrfn2eyfMFu9hvTbh3i2YNTOcgb4/Q+h58vEu3/paq/1BgLPTM/r1ksJIiD19dMSyhTczfCicrwNLL0gQnuY1RQo7TYP1gptbOhl5ennOUAK9D+zfnrG9d5OE5XKI0Hi6ZWR1PnJyuubseEUyM/YHh2zPuXxygVl5FrsHdMuW02eFp/efcvq08OILS9IgmLknxsQ4dOzvbnH7hUMdKhGZzT05zQnjQE6Rw/09vAgpDVwuV+RaK0LIXKzWdH2gMTqA1jtRWSOmJD1QZYMU9RnOSdN/c0ybuuusw7YNKQScs9x54QViP/Lw/n1Wl8sKsBqK9YwZxpRZzObcufsJDu/cxcy2KPaSkKELkXWMpGEglkwzd8xcg6CyxhwTZDXgTybg2qscs4mPriFYkeXlkov1SBwDYz8QR2WHTqFa5BoYV7T3BaCyCo1YwhBYXS71+4weDk2ZxFH1B2UC4abwuee6gWtjiKu+4lq5uvZQCEvVPdqsmvpH6karYF31hZQKqJnqhVX9AlOJDKmnjyvG0pEmBh8FrtXv7/coBWL1Lpv25E1fVFE3lT1njOR6AK5DsgkSqwBBQfs9HajL5nXn+lylejoXMXRD4NnJKWPxLEerHnT56lObgCdE6mH+emBdeQ5x3BjhG1vPjoUxDZiciFLq2Urv4RxGTk6f8fTpGUfPHrHuLsklMJu1LFdrVXxV5lIxYL2DItV3U4dL4qQSkOrruKaGKCLEnDGVAWetw7UF6/1U+hXUrAPOmNXHfXpPm3NWBdyuDyKfu7dK2QA/zwUPmDrES5EiWX1A0XOQcdfk1ZS6B5Q6dJ0AKwWdUtKhiQ7RbQVhVf0k06UxWRnhtlBcwWQwtmDFEUva+KLN2gU7W9tkr8xNJ4a93V22Xn6VO7fucB4G0hAZTzpSzMSQuDxfcv/+Y3ascCSF8ydP+fjBY71nmsh66LF4pJ4lkmj4zCuvvMSf+ak/wYvzPU4enfHVra9zcXTGyZMjQoh6jxhdQ1fYyoSATz6cFSBmUtkpCWj6jDVQYQrayhskWSpIVnPNNr0m1MCSzeV7/poZmYbQVTEyPZ+RWgvN89f42pB6uv+nrzkg5qjrrdTQwqhnRYOqIYzJaqNV6muefOSthkAYU0gW/HzG7RcOeOnuDZq85M6L9zjcv8Xd23dotw7AXWJKVIbv3CvKnAoYX29VQ8lR9xU7IWRTr2+uBhaALUU9I1XKqecUyUw+oRPjjwh+BLscsctIMzp8mpHjjNE4gociaXLt2zwqB48roev/9eP7p7gyyXeuZITUi2M25vA1mMA4jIFSfcoKGWwDvsU2TV3gKjeLAsVYRmqKh7OkmBmDFmVTGUdb8+a5YhizSricqGxJ2RYao63JjxYxE8vMIlmTwYyoHFTNUg3GKXBijEOsbkC6v2aGEDDdCvXE0OvrbKPswILS2AWN8K5ebClmJCe8E5Xm1q0pSa8GmdOCspMHnR4FxavHQUqJMQZCCoSSKq3EEnsYu0Dokx4wYgV/RSgJjJsmG+qBRlZTV00Xm5pNRcOp6XiSwWTBSIYo6glTJlaaboChqFy1TxFb6fNJ1MfiKly1JkxWBplYMyG46r9QP/MklRpehFCEUAwpJmIIWKc+EiFFnUbZOqXGKKU/5doUmIru182DolMROyV9KktAhM3fgrIco0znXm1qIhBrUpcFxpToxxFvZrpxAeMQ8Skzmzc0AjbplCalQkgKdFrnMGJpZnOcc1jvNaFNkVtNDPUOE5POD4r6MExFriK0dVo5rX2dAJWYyC4yBT88vzFyVRArnfw55mAFy/IGrJtsdq+1cEojJMaMSdWLxKjDAbauaaf0fyOCM0bZlAjWJQWWywZCutpYCqSSN+wD5y3FJEIaiKkn5cK6v+T49Anny1O2L3YQ61h2a46endCNA67VNX+57lmt1ohY3HyL1hlMDvWd1MCNMJKCIUkkxYCzhpaWtnF44zk+7ekHjaRPRRTMKCqLiVnlMwVteKYKaq3Wi5ILs1nLrJ3RtB7vNDqbMehNWgRmcxqxtNkjviGUwpgiIddUvvr40b/8Q3z8Ww945398d9NIdacdb/+db2Kt5dUvvcRn/twn2bq9RRwiH//uA37nv/4KcdDm/ef/qz/He7/2AS9+4QVuvnmDL/+N3+G7X/7oquALbN/e4sUv3uF//td+hXEdCF3km7/0LT7/z32Gr//iO1zNbJjwJl790sv85n/xO3RnPcYIX/vvvsHP/c2fZf+1XZ69e8zW7TmnH51z/N4xxlqevX/C2Udn3Hhll2ffOKKkxB/87m8pWOYcqSTWXcd3zBXD+P4738SXwEwiTR6waWQ0jnY2U39BBIzHuqIpeEUn6DFFxkHrp1wDribQEsD4Rpn6OapkOGcdoKCmxiHBGAtDyLgMrfXYpqWUa2y6mBSzqC1+NV3Qg8qmUdVfOjWhcE3SSp3S1tpjMVVWr4OMVMomGGjanyg61bbWkg1ESRqestmu9aja1ENYLJmRyQA94UrAlkCJ+h7GBE3axjBjVhzzEvEpksfCRS6s+szZ6RG9Ed544xUODnc1vr5ZUIqD0hKjkG1BfIvf32KXPdo0sLcdODn9gN/6naeMY8fce3Lda7HKQIipyubrcFIv/tRDrHCyxpmZymO8Sr0N6vFoSiKnQMkqTUmx4Brd36NJRJ9UkrGG7VtbbN/Z4ju/+BEhZfr1oEO06TqRkSPD/f/yKZePViwOZ/z4v/5FDr+0zzf/pw8Anfze+pEDfudvfoPlgzXihDgqmH56dsH6uOfuy7cI68iD955W42SHe8/yyZ+7SzHVEwtIaXyug8o5sOouGXohtxovsnW35ezxQMmZGAMlJ4yDwx/a5+NffaDTG8qGJTTzCzXtj5FlOOUyJUaE+WKH7fk2JGFn54C7L73Kzs1D4jiyWFvoLdnOidmSshANpBwQEs5ODDkFnkGZorpESx3sXDEfRCzGz5ht7WBOVywvevrLyLZpeP3OC5z0A4+OniB3PW+99iafvnOPl8sK3uron60Zzy/VbsAq8z+imWbz1mHFs+o7Qh5YuBm+yZQYcHbEEhAsjVXg2dvKjvBSty3B+gZnCmIaYhKGACEbQpGaF5jJknBGm3ybHSVrQ2yt1vswhnqYrBmqOVV7gVzB4drTRh0MeWlw4rCpxeZGf0sciYMwjnpwDZXQVELGpEzqA2WVcF5wbqayJNbMW0spPc72WGtZW5Xs2jIjDA1hWJASjCERpKG4Ob7dZauxpLRijJF+DZ1rSFLox6yH9H7gZJXZagbsYsbi5h63dhbsHrzAwe3bHH34iCcPjjh5uqTEhgf3n3H0dAVui4O4RbOTuHzW0QahWTgWeLzc4tbhjMV8m6FzPHpwwu5BSxhGDg9v8Kd/6id4463Xmc08uQScMwx9z8XFOZdn5xqyVjKvvPYyp2cX9L2aiIdQePjwCd/93sd03YBYX9ktOjSxOUGWquiYamzZ9Dyq0FBw3jtX+8mINY75QpPVrTHqp5WzDjtEBwriPM1iG3FNJeVZTSQOmTFk4pjVjqcBitA2DYf7B9T5LK5p1dy/7qhTaIOmDhZSTKzWHatVwISqvonVPqfUPcKY6hldB0qTRDGDiCMOkbOTU9bLJfOdFhFljVEKpSQoQetGUVGoea67kyt/pT8SkqvN5uZbtB7IxKCYkgezJtpKVYBMh/oNQDelzksmpIGUB5IYQunowgWRDv9czNEf/VKqYYu+njrknSTuOVdwQpT8YKrstJTq+ywqwSuVgZ/r+dRURltCqrKFmtRYKoGiVJKSgLGEHLm4XDOWM/rcMNbrVXLRs7hQe/arvjdPljrT0LDuQdeBUn2LFcywliEOrLqBk7Mz0tCTi+H4+Jj3v/MBD+4/IowdpUQKlq5fE+JIydU8vwhSlDE4DIP6O3q1saGoh5kRDUsQO5EyVOU2ndGt99hYNkSUUtR7sxQdrCdArGwshKa1NoWzTADcBNAoWHQtKAM2/60EgsouzBoGlOoZdQJijDX4WcNiZ5vZ1oLVeknIWfdba2oPifbh87n6dW0CJ/Q+sE5BS5E6WDGFYqbzntb2XBs07xu2trbY2tqmLyviGPj4owc0FHZcy+7OHnnoOLp8zNnJCevVmn49kAWOnjyjjSOPx4HV8QkPHz3lfLkmtJYxZ+a2xaCBilFArGF3b4c7L+zz4vYNdlzL4w8fsLM1p/Gusj2VRykbsH0CzgpIYkO2qWytaUi8+bt+bWNRY8xGHabsRfVvLaQr4sa1sqDPZTeYzkTi2NhSobZgMV8l4Zb6O7n+Oq7dA1cKEgWIXcUrSNUDvdSwzYL+btEwFyWwoP1xvXeKEaS1JG/Y2t/jM1/4PP/kiwfMWNPsL7j70ptsz3ewTu2VAIroz1NcVUSaSs4CcBvLGWH6DOvn9RyRTRe9UBRzEV1Hqm6JFZwrSAAuB+T8GM6Pcf0lvvSICYwm0JUeb8tm/UwM8AnwrEjq9338MQBdHbLmCc29AujEWMYQGIyhsSqJs7aQZTLhj4gLjMnQ1IuUknpDlBqHuhwi7apDrKHv+xqTXqoRJyx6p4W1NlOIHqC9Szjn6Lqe9TAwDiMSNB0tVUYEueByYUxBbwyjYExjDIyRkKokL2nKJEY92VIaWfcDF6tL+jTQtp7ZbIE4UYmoZJz1GG/JqRDySAiJIho5bZ16NeU8YM1ALmMt0AZvGzAK7KlPm6n+can+nZUGP4zEUFidBcY+MnSj+g+EqLp/z9WMbLMpPH+ILUVTVhIgRap5foaskzBnzGaSBxq4MI4DMWcSkMSwXq4wbsSIMAyDMuiSejuAgp+rrleGVLdmGHq816Y8e/UojBWlNtXoV5zXib5xmwJfrHpzTVLmAjipaX5Q2TZl8z5KKmQyQ0+VTKghqlKB1WOCuuaymQ7PWljKtT/GOmKBIURaE+nHqDNcMcQMq35AJ5WaIjeGuPFvSKlgTMamrPe8GPI0yULIVcqWTSGKIRqzmSmqZVwhiSbvRMmErF6CIWW9N5IW5eshFJsijFLU/2hwLm9kf9T7YIr3rmVJAeKovmQuT9NJo4c1Ub74NF1MqWw2uUmuZ2pzXKph8xQXnhLEEIkhkUwmRN0s+26gH3tKgcvVBcv1kmEYKpirjLmL5ZKQlOFaKKz7iLgFi8UuZl5Ng0Os748a4550OpdNBRIViM4xkKIwhkifhGKFZPTQl2pT5pqG1jdIBZ2tE3zT0DQNbTtjPp9jO6Xd90PgYrni5OSUxkM7c7Stx8waxAni9Vp2IbEOkSFnJvXx9q0tdl7c5qt/622mydZmM6urb1wF/sF//o84+eiUndtb/FN/9Sf4gZ//HF/5b95mQqM++U+/wa/9R/+A4w9OsM21prfoHXfwyj7jamT5ZLW57scfnLJ9exs/d+T1WK/91U497bMKEMjE2mbv5R2evHPEh7/5Ea/95Cvc/OQNjt8/5dYnb7L74g4Pv/qInBJjSnz03juVGdkpq9QZuq5HnMXOtKlaNJaDhWNhYe40tCYkGLOGxYjzuNZUmrl6Z2AEawVbvR6maVep92ApYG31vsg6VacyiCdT8WgMWRxjzNghIDbiGq9DnVx964zeH1n0aCMT2CNgNr+zbEC4qcNR2Qmbz1r/xejPbPz+lPUp07/ruJpJby1WXUpNNYuGCpDUEUV9pSCQ6uFASLgyYlBWVmPUz0uSp0RozA5bM8fuYs7tW3eZ3dinyx2/87u/yQf3H3DvlXscbs2IcWB9dkmOAtEzBkdz4w7e+5omnqH07G97XvnEbb72tmO9XjJv5ioRtx4/c1iJV7XFGmyxWHvVVpR8ybw9pF1AIKCcSf2kWzejsQ2jtFizoKSWcXCk5AjR0uVELwUaXSfNtnojrs9Gxpi4XK0ZQ9yMbChw9tvrzQ1yftnxzv/2Ia//yXushwmUKbz36x/x8N1nm/pasl6f5bpjteoIRIbVyPJyRSkKWK1OZvp+HEgwOIselOvj/lce8el/5iUefusRQx9562ff0MGR10O1kIixI/Q9t3/0NmKFk68dIVXe563wubde4/LmwNxv8/TpU7727jM++Og+B7t3CSHTjyPduuPi9ILVqiPjwDfs3JohyWKaOcnp2krJYG2LlaRJcmHEWaehETotIkcdDI6xx/q5plhbIYsDt2Bn/xY7F4Hzs4HTZz0mOOwQsEMgrQaGywEJEE7P8ZcD9/YOuL13yNF4QZbIOo50g9A0ThmTbYszgriRYlYY8TgLOQVmMhKlw2SHz01lfgjJCDg9pOg+5SnAGAzhMnN5ERn6Qi4GpFBMJjPWPblF6qEp12EtRX2iKKpSoB7mpej+pSf3WguKUUPuChBItuRYofxU+6aUGONQD45aVzAaQCXO08wX7OzewNsFzjhKisRxhZVR66NY+otz8mhIwWrDgsP4Od5YxC+4cXCTbfFcDEf0cUXKCZEZRRJDGpXR1gWcGZn7EddHdpxl94bn9LTjw/SU8+NLvN/h9Zde4OI88PWvPeTp6YBYxyqe084Ty4slkgIXnbC11eBNgjJiTeLp09/l2+8+5e69V7GuoR8GfuhHPsOX/tSXmC1aChqqcHFyytHREU8ePSGlSC6R+c4Ol5crLi/W9F0gxkJKwoMHT1jnQQ/T0xC7TEmBWk+nijvV4Y10CyHFSO5htoicHJ8QxpGTZ8eEbtDrnDOpWEJW5px3Df3qgkdPj3jw8BF3d+6wXvf0QySEzDgm4hhwVnCDIFtbvPryq3z2s59lZ3tXX1/TILnRwUspKvPLKgNVoEmtPYYxImO4UjbU96FA19STZZybQrd0eCipEPqRp0+e8uTRI3abBa6ZbAOKyqUmgP0PJZ1eOxVcHQo3H+CmInOFJJVponLt3yIljRqsMLGnaj+tSoZSmfj1KF8UoKOMiHhy6hiHc1JaInYOtPzfetSXNb3YCSgAqfuN2wxPU4GUU23s1cOYrGmYUvLm6xRDSrpejdSlVf3YMAoWRCBm6PrAyJogWWtJtXMqf/h1ytU5exKyXr0FlW+mmIgSyGXEtvrajVGJ65iE+w+f8N3vfAg43nv/fd555x2eHZ2RU0RE+9pCxlhDPwZG57EESkzq7zn0jMliw4jEiE0J0ziapmXWeIhRgSsRrFMgzDpbvaknOw/t9Y1VFYJkqZ69juycen6jyp7rg/jp/LEB3yZw5tpE+jpIE2O1bJJJPaTfp/SRwnx7m8Pbt1l3vZ4Dzir/2xZwmZ2dllu373B48ybO+auHBgAAIABJREFUNdVPVEOWpjPRJLGcPEQxuSpx9Syl5xWv/alx7Cx2ONw94K3X3mRruyX1HRdPnvHo4SNOuhUXp+csj85Yr3u6rieRuThbcRQjdrWmPz/n4rJnzNCHqJ5rTsEmazTMIERlZZc8AB2GESFgJOOtJVm1dpFsNt6SzzPoqMCdrunNCi3lufU8sbxk4z0+4QBS146hFKufj+hzi/B/cPfewbZleX3fZ4W99znnxvf6ve73OocJPT1JE5gRwcwgkogCpEKiCigZySAsJ+wCJ5Uk2yq7LFVZZVFINsFlygQJ8AiQYDBpBswkJnSge7qn8+vul9+NJ+29V/j5j9/a59zXzDQghP/Qrrp17zvv3HPP2XvttX7r+/sGBrx5dfOZ4b6ToljMug8cxsr64uq34f8KSC1F0bZi4hWAri6SWRu1ia92GgoMGuPIoj6wMaaVTFi/FBALZPCG8c42d91/P3/uofvY8oHkLZPJHSCNupnZ8tpSFXWNAV+RjVlhAAx1bZFpa1E/vJ8Tc9DAlEtGQyqh1OEJCFq/9wbpHWnvMvnoZcziMjbMce4YX8+hDoS8wGE0v+EEwebV9kSvdbx2SESZ+Ir94+oiDSbdfR/oraVzjmS1m6Pib735Fm2PjZm6D0qJRjtaUi7qIgQ4PkZEisyxUHGLBHA6V+xY6ZsWbwvyXm7+vuuIsVcjyNwpw8f5MinpJifFSMwZUzoIVdVgXEWKffHMytpJcyqBaPtA6AKJxOHsmLqpGTXjElqhoJd6yCltM+WgRsNWcK7SlFv0hlhLpMrmxSilNSf9uyIqiWPYtBu0EG9bQt+zOJoTe5VUgiZ7ViWuOudKkegClmiZb8sWUwdhlLQqNoEyIVdUzYhx5crCq8lOi76lXSxYxqWClyYTE0inPndDak+OUW99Yxg1julMzaBj15NypGkqsAqYUSZwDPjak1ONWS6R0s2wRidZJ+v5XYbfsUIhl2JyMdKV4k9iCyk/OKJoca6TGZhC11d2mY6zAu9h0XGji736myBFmoxhsWxpnMVbX6SRSwVdnQJiIUZNJc1SwkcMfUglqlrT+DTaWoHGHHod1yGodLkURTkq2NWmRJsy85SU4o2jN0J0YL1VL6aSzmMLswFTbD0/D6tuBR5IoYljkRxKTLeCpNZSgOBYCg2994wIpEhqe6gEU2TiN0kArSXFgXGRiSko/bxIW/uc6Pue0PVYZ1jGDM6TgiOnGhHoWrPynciik3oGQrlPkwRSjLQhMt5y1LYl9q2mF0dlr/XG40VUJoyy4wyWLkGat4hkughtcERR/wRxnpg13a3tAn1UNuMwv/na4dseu1STXl81dNMZB9M5WTL7h/sczY6oPZza3eLULbuMNsaELBwve/ZnS44WHdM2MO8Ti06X1BWosK8+j0PXyZT7NOfMKw9f0m5xhuPLM5764DM88P77+DSPrq7s07/+HPsv7AOQ+rSa5IcR4MeefhFKJ1cX3H6uAEI1ruiXcZW4NCxEL3/qIm/51oe4/vQesY28/dvfrOnSIy3aFgctL338Fb7q771/9fc+9X8+wvHLx/q3RegXM/q2Zzab6xxdWQ3IsI68aHGVw40bjltYSmRz0pBixtVLsquYLXuScZiqpKxZh/Ge2vgCdmlwwyoQYigIBPq2U7BcNJER47C2wtcjXDOhrsdkW2Gsx1W1jpUsqzVK0PXZO4PYYrVsBimgXa3TK6n1cI+tNijrogZhvUKmjNrHaYlvMUVdmEqjSxfRGAdfPbVRYChsS0nWxxaRSDAVwSS091w2zRT/mwKUR+lYhkjI23Sp43g5p9nc5Mz5O+hzYGvrSS5evMji6hFy5iwGeOGF5zjYP2R38wxbO7cx2hjTjGoal6isxSyPkTBlZzxm3NTcOJwW1UBD02wydiPibEnoO0QivvJ4K/hq7WmWY8bhqF0NAq4aMWo2UJaxoY8eI9s0/gwmXWc5y8rirTzJQcgK6gH0sx6AZsdzdCmQciBJVHC58EjOv+UW3vZtr2Pn9k1lmFtDe9yv/FTAMLu+1PttYOWs7iJ9LCwD9aQqm2DdkfmRXutu3mtYh3FUzg5Oe3z6Jx/jnd/5Vr7pH7wPY+CJX3mOO991jsWRzid1pdLnbOD2L7uD6w9foxDcdYwYw+7OmKqeUI+2uTzb49LeNdpuxgP3PMjtZ+5m9+xpfO2YHR7SHs2ocERbUW1MVNY6FJk9VGLwpiamnh/5+D/k2ePP8Sc+RsAb4JMA7wXeu8sNjsp/7vA4Ux5/+UPr558GvgHAs3HxNIsPHjPyNZujDSoPo9qBBCa1xyXPZmPY9EISg5iaSdKwCSOGeRtYhkDXOLJTFpqtRuSAgiABhEjfCbEXiBlnoPYZOzCOymbHWodIaXJRNkNlxAyXXj2SFayVRBGlaBK6sRZcAy6pV+ugOLARIRT5laPyatgtSTdB1WTEbXfcxh133c3W5jbeNRwfzFnOW3JITA+nHB4dczQTnIk4K5rqh2eQ0TTWsD0eseVqls7QoQw9nyEUFmRT1TRWjeRziMyOZvREdiaRizueazZisuX1951nq9rlcO8Gx7PE1f25zn+HgndTteBwcLwI1CRIHYJaj8QIzfhF7rj9eU7dcgs7u9tgLc1kjKksMWSm8yXX9o44mnbMOtGGrrdkP8FPajbMBr7piSExnhyQsiGEjFOKU2l4DEqXoZaR4c4sTVpdd3KK9JKQFBl1HTeuX+fy5UtMD4/Y3txSb7uynzAWdnd3OX1qQrt/ja3tLZrxGF/VmvTqPE3VsOg7YtfTiXpgbm9ucNvZWzlzy1nqZlQoLwo0WBlmHBjoKVm0fk8JfNXAIGuVtcKDMvfjhmAjS8wRZ7SuJAmpT+xf3+elFy6wW485dctt1JteWWQi6w2kFO9EWdu9rDmH5qZp7QtvBpU1p09R5riknpx6cgqrX0dMqcbXTeGc9G87BCRhY4fp59iwoMpLvNM4hj/2UUzplcFaFDllLAyJnL40tbyxeD8QIpTps6ptjCl+YJb1pnyQXZYvpx50amThCMnQt5FoI0mqIr3MChTIGowbTqkpDX/K62EGn63CyI0q16XsE7MRhBrjRjz97Mv03W8SFi1PPvEUL194ha7V/ah6pdeo95Urtry6P2k7DV4JKSpbNyd8AWitMfhKlQnEQDNqqJYVFH8yZdLZMiyK/LSutfatGmpnwXkCnlACF4axdJIEsGbODefh5uecBPFAWdyC+nsab1agXsGyqccNu7ecJmWDWM/e9RHL5UzZ9iPHuXtv59Y7znH7HXexubmD8zXOVHhXK5MOVbsM5v6WAUDVK+v9SIEko0o3ibC9ucWd997OO9/+DuraMj864JlZx0sXXuJoesj0aMb06JDFvCNZT+gzXRuYW4Ob9/RdImSLGE/IGVO54vWW1NvbGmKItMsFSIeEGYvZEYv5MTl0DISuVIhKwzhV3z8KgKYnWO2MhuecAIwNBQcYZLBrUHSA6fVWKOFjBl0DT4Dx+muDXHXwqC1EjQEsP3F9h+8nr68UYHwA6HLOK2msc07VhsWuSUMSB3smZbrlKPSFAZ1SBgoDrshco0vYSpNcXVPTbIwY1SOSGCyV7utFsHg4seaDA5ewRn09Te6IYUlOizLPZSQplqNmprKem0mlkW4gV+WxFuggRzXKXAq0FfPLFwnHL0N4Gck9mBm+XlA1ggtRG+CFPi1l4lhZ8aCerK91vCZAp74cUvy2tFBNOSv0lMHVHl81GmFvyyTtjbJdvMrksjEqN/A6oQ7JN6DeO22vBawz4HOmD30JZaCAK5aU1e8hCxASOWvaqwGdsD2kXplfTVMzmUyonSe3HaFXCr0f1fimYby5qcbj8wUcHUNJkLJOJRkSAl3saPuevYPDkiKlwBuijK2T3R2RvKKDKpIydP4c5Bpr/GoS05CFVEzR9SINv78KIRDRrkPsyaEjRpXHeO+p64pxM6KSrP43okmFtvK42jOwP1KOpAg211jvdRFJWQMBXIX1Da5uyDnia01lczmQ6hnd9IjlfE4XIsZq3LzkwrgzGsEsWfX/Xch0vS6MCvo7+gC+N3hvqFyFcz115RmPGiQmJAViF/C+0mJWBvbOMBnoRKDFjwJBag6dSicyl2JB5S8uw6DZN6VYQYpcBe3+WVMWfuvIVY0XQ1NX6olUeXa3NqmdJbRzJFt8VRNih6srbNWov1jqwOnnitLSLud45+ljwHs17UxJPdqstfhRw6IP9FkBJwN4r2Bbypk+JSKGDmGJ/hyz0EqiI2GNdn9A019XRrQDi+jEMUzMOi9mTha2iE6i2iQZFkgFxI6Oj2ljTUq9xmOLYFOkqRqc0+uTyul1Tpkxxgp+qeDkcMkGb65hAs+lM+TdGOMbjKjJdgi6mU7JkbNfeesBeKvsDk04hdo6bBZS6OgWC2yKChpWtoSuqFyuS5bc57KoCNLpIpSyMknEeRrrMS4TcmY6n7N3sE8uDAqJsTDoHFXjqW5UtH3L3vV9zHTGNEWm8wXeZg6Oj0ECu7ub3HL2NDu7uyRjmfeRi9cOuXG85HgZmHeJeQHHBlBhfGpEt9evOturYk+Ec2+9jbf9lYfYuX0LW6k8oT1qb3ri7Np8fcGHThvrb3EZC6iwfrje0Nj50MXVoil5nXz68R//DO/56+/gG//R14AxPPFLT3HnF93B8qgl58Tbv/3N3Psld/OrP/gbHF+csnPnNu/7oS8ldZHnfusFBCms5cioUdPrtgtUlSMOISPZaPpezFgyfRc5zDPELUmuZhYynViyLYa5xlCXYJRU1oJhzOcy9+QSVhOTJmYZq5JWXzXUkw0mm5s0k02ya0jGDzMDA6uCUpCsZG2ANTIIjdabxdI1yCeiulcFabkXV5sfA6aYoA+2EMiQzGVL4V58a2R931LYf7poW/25gLdJIomoKcnlmlsjq7nRWkGcEEhYItk7aByL2HPx+hXu27/BLXfchXGOytXM9mZcfe4Vdre3meUln336OS5evswDdz/Am3fPkGlplzcgHxPbRDy6gSewUdec3jnFtf0Zx7MWckvTbDMajan6iImtWiWQEDPwtvVYLiL7ezMWvYGqZvvUBEY1MWRuXN2nX/SYbDk67Imxwfp6zYowBmJHynovzK7PmV2dc9s7b+HyE1eR4rRG6fJb53j/f/5OPvOzT/Hch18h9Zk3fu09PPQN961qhdIHY+3fJGsGpOi/Dy8cUW9UbN46Zn5tgQC7d49Z3Gjplz21czTWU1Xr8il3wid/4gnEPIl1lq3zG9TfVXHxsWv41uPcBF817N7TcOp1p3nsVx4hp0QIXQm5snzsox/nYCFU26e5trfHy1evYmPLcjmn2Ryxc/YUvnakrsW0PVWGaDKLGGmzNjU3HGwYqMu8sVgG/uHf+Mf8O30Y+LYf+fo/9tOvPXqdR/7JIyAqqdQN5yD1Y+Xtm02PmF6LzzphapVhx5jAWqxLWJdwomFIzugm1WGw2TCqPHfeeZ63vv1BNjc3iNGwd3VG6CoWU+HJ2dMs+sgyzbFuickdRqImhxqvKcZEbNYaalQZOicQO2w0mjzvLK5YTiAQcqaPPXGauXEx8JnjA6racNe9d3F/HvO5Jy/w6c88ycuX9jlaBESW1NZgcw/eIo1lM1WcahqstSQS4hxVU2NcxTxkRjFz6+Y2pm5IOPoucHw84/Kl61y6eANjPMlsQS2YytItFmSXmOw2bAGhD1y+coRxDanQG4xVxnIhMGpT0apPkUHAea1hTYGScio1oKVtl8zn8xL4kslRLVOG+3vSNOxsbXDr2VPY7TFvfuhN3H3XXWxubrDYmHD2zC3cevYMiUR7dEjsOsgdx4cVF168wDPPbHPm1OvY3r5V54qYMLXHn8DADIa+7bh86TJXDw+pJjuMrKpsrFEvLm/yav13VhuuOSuJwBfcbfB6a+ctVy5dZsMY7r43cvbOhma8qSyOHJDYEkJktGpIU3pHJ94UrAuNmwC6Vz8hnfhZfbBz7sk5qGWJcEKSSwm10I25zTC2jpTAtAtst2CSImPRcVsc1b/gfbt6vwaMLUFdvlI2EKbUrgoieOdoqkrT16uKqq5VYpoTPUUtJWWDXk6JemYN1ki6F7DOYB0gFucr1OKlIiQh5Ey0xYc8K2lDP7qsAcoysrCmeBUVUKr4z7qinrFi6BaBZqwJtSEKh8cdn37ks/zBI0/SLRZMD47p5kucdWxsbGjOblaf9pQ6rKsU7I2Rrg/EriPkothJoewnErnvca5jXClzzldVYURbXKXsOucrVcXk4ollLM4ZJpOGejQiG8e8VzslOLlfkFWdfrP39Rq0SXH9nIHJpQF6toRN6t7XFNDHeY/zNbUf04w22do5zdnz59m7fpnDw32chc3dDXbOnmLz1Danz5xdAXQijpzVLxqx6z3HalVfD/EhnDEVgoe3DmyltVqfyCgo3lQ1O1tbTEPP/t4Bfd/rOMRqSm6GnJVkg6kQ40naJsU5BediUvatNVYVJu2SHFv6ZeLwcI/jo33adsFgKdVH3c8oha6kjxeKzUCy0kBGMNkUvGy4X8wKEBs86XQeLcD2iX3GTTdcudfW1+oEoM8A1ElRytrV34F1s2G45tooUVLKSXBWRIaQWJXHGyVQOONWLMFVAnvKJU09rhozyph1WF/hGsHUjmQtkYzx+p6s8YCnbHdxeBJC1lOJ4MiyxLFE8pzUHtJP90ndMU4iLgckqiIRAZMEo9RcTIqQojbRQ/E+DQskLCEE6DN0IKHheK9ncXRIiFfpU6brl+Q0x9LgJau8+wQGN4Rnr0DUIuP/QscfERKhmxcyqxSUPDCTQBdN7/F1TV05ZQlZqOsK31QqHzKahOErR101uNoVJpAaxovJGBNIol5d0WoyS58ClasQjRJFCuU4FZP+FAN1VSvKbz2+KgO6+IHVvqINEVvVGOupmhEbO1uMN7YIIkSx1KMxXYLQDd2LlZsAOWe6rgdjsTaUgTug82vU2pQuygq8WwEoFmPiCqATGfwV1tJE612ZQtZXSITVBi+nXMxllX1hsqUxKFqPLlpx6AGVxUdPgqLutdN0v8pYpUFbSzKeLhsNL8hGJzpTId5iG8F2kdwnUuqx4tTAXWTFsc14MqloynUGEFEjamu1G5WSgyBoBLpjVHlGlSdXHg/0MZYFufyymAK+qfTUlE7CakkUBd4GifUAbFhLCfDQDhKSlNk2vFNrIHsqO9KJOYMXi/cNjXM4Y2hchcVpcZQMfQikPhFSz2jTEqQF0ceHSa3ve9oQqcri0EVlNMWoclTnHFZgnnoigwG8mrVSehg569q+jIkuZjKJro/6d4bPyrpz5b0no+AtFO+IAbAzQ0frVRNl8YJzxq8mxAHo6PqeNE0slpZsEpWzjJyn8Y4+JGwxPDXGQ4kAFymeLgaquqKOgneaKpRTJNu1eWiWiKtrMAHrE83IqgQoJZxkJpvD1LNe8FNKNLWQs9cFy2qij0N9ipBMDEJvEq6EWsw7dR5SavvAPSqMpJzIJlDHRC/KGuy6Fi5dYn9vX71KYsSJJuNaazCVzlmx62hCoiIzbx2VE5ZR6fcHi47LRzM2Jvv40Ygglss3jrlxqObQszawmCswN7s+Z3p5yl1ffAeHzxytOtDAqqP7/h/8Uj79U4/y9G8+T+wiD37d63nrtzx401x8MgDk5HyuID/sXzik3qjZuG2D+bU5YDh93ylmV2eEeVgVVrlQ0wUhLiMf/WefZFjGd+/a4T3f806uPH4VBE7fd4qXP3mRo4tTrDFML854+ZMXufPdd/Dcb71Qii2LcV6lPgi4TDIloME6alfhrMdZlbBHDLEUc8u2I/kKcZ4uJqIYxmMtvCXnMicrHBWDpuCpLN9qVzqXQtl56nrMaHObydYOzXiCqWpiLnR5CgO4jH+yMuVyVoBuGDXqtZpWneNBNZsLaPfqY9WokbWESQvRkvBG5m3fscstr/9jynz+rRyRixxwEXj06k/D1Z9e/9d74HM8Cs8VZuaOfj3N03zwhafhhdd42XuBey1zjrjGEc9yQR/fXT/lyvDDPevH5G+c5hJzYACY196J3Ln+cfQ+eAO3f8E//8IPPAnAIx94gi/+m+/iddO7ee73LtAedzSbNfe89y6Wh0tcZTE+Mjqd2bptkzd93T0YB9WpQCaAFeotGJ/R65k6S3dY5MXoOtLud1x5/Abv/s638pEffZRm4nnj19/Dhf/38mqT6pwysYe97ca5bVIvdMeB7fMT3vMfvIVnP/wSBy8dMR7X1JVlMmm440vPMXtpxvJqS7tUn80UBWMrPvLhxzgOFePT51j0S6aHgZ0x9MslOQW8E4xJxLBkdrhPN5uRRmOu7025etixOdnm/M4241GFpMzRdMml/f3VOTzjzhJDoG2XhBAZmClSfHkHg+ah/rly6cXXGBDr43t+4Tv4ue//ZWbX53/0k/+Mjg/8wK/+iZ5/vH8EGM6f2tLwAkANfm0J4VL7CbEJ21QwcmSvXKOUs/pJlprHVY7KKXguOWngk3Ocnmxx77l7eeDO1zGejOjaTJWOcewwPYLLLy/IcQNfTVh014hpSh8XWudVI3LqqE2izx0hOYwX8FBZXzywNQLLJDAxk2KAGKmMwSZYHra8dGPOZHeDc3ePOTwKfPbxF3j04c9xlCDhEeO1AZEzfR9oUwQazmyO2dk+RbCWPiac9TSjMaPtLZrtHUwzZh6Eq/tH7B8cMJ8vmE5bLl5fkJPl9tvvpq4beuk5Pkp0iwWNizTOkwPM2kymwrhafcGMspqSycSgpvi+8tS1JyeDlICywRc7WVSGZy05ZbquY7IxYTKe6PybtE7x3jKqLQ4NPtiejDh36xnGtXrKbu/ucs+dd3D+ykUOj/dpvCPFDivCbHrMk089xdmzFW998Bzbm2e0yR0HEExIkvBGWRIpRKbTKctlix1tE0pasq9q+qSNeWt1LSILYjI5K4tOirexKWtVCpnjwyNe7FtCFOxoi/N3jlBaXiK3c0Kn3te4AZYodaBuIpQoIOvGw4r3kvT8CoLEHmNTSffMSOwJoSWlgHHK/IqoZNCiqhZTanYj4DGrsKYmJSYpEff3WFy9ys75e/Seeo3j5r2p3GTpYoZ9VdYGbOUd46ahHjVU1Ug9JY3W4zZHTK5IxiApag1diATKvrPagBMNgwGtv6z3mNLAG2qFWJhNK2Z8ATzUhkeZS5ywkVmrGYTKezZHDSNrabPQtS0dUT3xxHB03LK/fwxdUNsBgUndUPuaUTWml0y37LEVgCMloe96bEqrNNa+DyQLbjQmS1JJq/X0fcfRccLFpDI/a/G+pqoc3lclAGAAzlT6ar1jvLFJMxqx7AO5DQX/UUbVSUDuJGA37FOBm+rZ4chZgRddY4zKt6WwlAUsNX5UsTHZpPIjmnqCiHDb+VuZz6dYIzSTBlN76vGIyWQT7xvUyMgi2RFD8RUdgCKTdE4wvnjhKwxinfqyVs4reBaFxXTOKxdeYTTyLKaHHNzYp2979aPN0NQNzngyForfuBFbwLkawalyx2uIRzZqRaJeyEIOmfl0zv7eHk1Ts7d3naPDA0KIxJLorCEOWnfm4fyW5qwt59p5i3GQohI0NAlXASxQYsGqti97i1zuf1VnqLxYypgf9s7rUIebrzHouJHhe9ljxhKqN+AYw2uEvi8BbeqpPNRHg62LLRkAA440vP5qjIREjOt9qwaOKkCP1c8XSmhnHyNSQjUNFYgrRbhRO7sB9CpEJ7Ban0VBZj0y7ahAfRajaADksoWgdgSEpHr3EJC+Q0LQ1O6uR7oWWS6Q5RKTDBIdi94yzyP6RaCNCxZRPdhjEGQpVKYiSFyfd1gxwCVntfPK+dWT4E3HawJ0rnQWlSRc4BIpkiKUxaWByGogL+jEFZNgs6KwIqnIBfSiDqb0WTLL5ZI+9vRd0LSPjE44WS+aSPGWEqPsIArIFZMyMmxeTeTD/qntA8a25CoR+qC0zpTJnadOQiPqe1WPxohRiVwWCDGwEvIWgKOqKzDuDw3gYUJKcrNZ5slOg4heDTV4LcunFZw3w/pZuksnJ7thE1504LbCiS8bR/UkyKh/XZ96Nb0PEFJf3uMwSSrBV0MtnFJLnU4Gsz7SxxlHBcDxlUp/k4UuRuZdTxcgitOBWFJUQ0GaBYOIVQaS3g1l5FkkG0x29EEQ6elzh8kRciT3HQ7YGI/wQO21iyGoF6D6hQxnWLsFKUX1cxGLKZ4Dw9dwHaI1+Fx07sU4NMVQOpRWC5ikJpk5ioZkWKPfy5lazpcEg0rFQl9MfROdoOM8DV9DYukgW9DFTFYMP8ok4zFdT28VPMw5qxwrJZV1Woc12n3p2kBIhaId1PB3XDeMqobYBxZZgcGNjQ29oaXIdYsxaEqJdedjXQwNTDlbAjaGSdYO5zFnYtLJ3zjUVNwqiGrFkiqNwZYU1cC+AIYh62tuTMYaAmMrJGdC32H9MLEPQRiJkHtAqGplJfV9wptM1VSIaPqQt668v0RKVWE0aXKfdR5rvUIoSUhJWHa9Ml5NXiVaaTc9F28RgZypRAFx1/dQObKoTPnw6JBjSjctZWxOUKjpyeZiPu3YsDUeQ8iike6tUNcVoYNZ7Nk7PqQaNdiqpk8W40ZUY6GWHhhBuwTgUz/xCF/+Q19CPws8/5sv0l5rGe02PPD++5jfWOAqSz/rSX1i985tHvr6N6wn4XJ7yYkHbm6I60+za3MuPXqFd33X2/jYP/0kzVbDQ3/pjTz968+VRTtj8tBg0bl889YJuU+0hx07d2zxZf/xe3nmt57n+OIM5yw3nt7n/vfdw7O/+QLzawt27tjhri+6g+c//CJDiy9kAe9VCi0CTa2yc1TGbazDuxrnBFNiysVowRax4Grlf0nG1RWTjQ3quqKdzxEMztUrX6mQlIHgrcpGGAB94zHViHqyST3ZwlSNBhesKPtKYjOi0nhLNuYOAAAgAElEQVQMq/FcKAEKMotKvcWIrlEUvx23Ps/D/Dw8MgDepV+jzzEa0WMN/M4//S3+XT++7R//8dlLf9rj2tM3+J0f/jgPfvUDfOUP/XtYZ+mmHZc/e40Lv/8yj/zCE7z1m97IO7/9LRy8dMTLn7nEPe+98wu+nmuKATA6Vq2zOGf55I89zju++838lR/+SlLMXPi9yzz36y/rWpwzd3/DHfhtx+/87x8DYPvObb7ou99Es1XTTXue/92XePTnn8IILJeR+cxRN4Yzf+4WXv7gy+pDGyLWOHyjdUZtdwizJSKBLiVcqpAYOD484Hhvj24+xebAbHrAs889xdm7ztGcPsu1q4dc3VuST59n19S6bsWexx//HI8+88zqsx4dHTE53/C273yIs288ja0c/TSw99QRFz50lfY4lPGszNThMPj1v1ZdgpulTFYsDmWjVFvwJd/3RdzxtnOkPvHMb7/Ip376sZXX31DvnL5vm6OLUy1Sy/H+H/gS7v/Se/iVv/MbXH1KfQLvfMd53vLNb+L0PbsYazh4+ZBP/8xjXH3y+r/xONq+dweAr/0zHrvXucpv8GuwLA+cW38/9UY4BcBm+frCRwa2Ocf2n+K9PMWM8YMP8hXf9+Af/eTPcyxfinQfbbDNhFmfuH445YVXrnL5ylWSWLwdcTAX9veOcZOMH2WOl0tu3FjSzeaYlBg5i4SeV64cMO8S4iqMUQkcXvcb2UqR4FWMRg0pGGKrHqq2+PZaC84OoIkh9D2h8lTGEYOGznhnGDWeymRCO2c+NWxubrI9mbAxbrB1hWsyo6qiqTyboxFnT+0iMmI0qTB1w+bpU0w2t9nY3oESCSHeKyuibAqtsaQYWcwX9F1PzrrGdv0Adhi6vifEgC4+WkMqf0eBfiVDKX0wxoREoWt79pdz+iD4yQ513bAx8mzkJbFdEHurUqwVXeZEE6lYJlAYGjZr8ql6nzhSTmozkg/Y2PCMxhsKOnUt88Wcrmu1sVxq2CTrNc4N4AFGg9xShj4yrgwbAv2NPWZXrrBz7m5eVax84aNgniklYlSvYbvyOVNQTUOYhMpAZQRJUeXGOSpbxVqSU8sThjU5CTiLEwqI0yFJQzZE1DMuD1Lk0pxQj0d9TypBswyesoVoVPYtWkMI5XVKA9E7T20dwTgq42iXgWSEqq60/jaOKGt24KTZYOQrRtUImzOLea8enFVFH1qWyw6rmlm12gk94g112fNhBFfuneVyiU+J0HfMZ3N8JYzGFXU9YWCbWe/VW7M0/bsQCDmz7AMhZZyvcM4ryOcsJq4BOhiYVJx4zKz2GJ8v2dN6HTPDuYtRwXJfOcabG9TVmLqaIEA1atja3dHgLwNiPc14RFOPFYwXDbETTPEBL3s/Y0nld9aKo/X/x7xmn8WQWMwWXH7lMhBZHB9yfO0a+0cHHC3nSBKaqiKEtAqr0NNskGw16GCQR1tLzImxczhnyDmi7gCR+fGcq1eu4Sdjrl/f5/DwmBDTKrF2AJ/WTfubW+/OeoxTlpuUvbLzHosyH01hItohoLGs3aozG/CIdKK5POyfcwGwhuvFq7CLQpoRWSlNTgaErGWtWsNIAeWsU7VkZT3eWqKBMuOtwkysqK8hgCS1ScqDPB3FnHzxS7TWKDkLVFUhaG0OKHS19uJeMfbKbJgNVKitCtERpsd0B4aJr6ibGpcMkizSQ1y2pHlAouCTwUVLXkJuE7KM5EWH7wJmmWCesWJZ5kg3D/RjR0qGHk+PINYjOSCto659AW9PUuh0b1p0bjfhSp/veO2QCGs13tsUOVsuG2BjVlTcNkbqPuikJso00AGY8FYQSSRZs3qMKV4GIoQQiCmqhxxZb4AB0IhCiAZMwoZQUNgCjpTUT9U7F7SftUa+63qVE8aE5ERMYBdL5qFnc9Hi6hExC8u2J8SScDIsOs5RN7V+dl9hVrTM4fyuWU0DynyS8nvSMDxn7cq4wrJbuSFIPiFXlFW3Z9CH6zmy+r7LQM05IpJKB0eBpZSlLJ7mRKPqhGwUhyQwXpCC1rcxQQylKFb5pPMecVr4qEDQqT/bwC2xJ9hrcnNBMJjeD8koWQxdTOQUwWu3r2+XLHLC4tmajNiZTKirCvKaPp1ykU+vAAQtCjSVUbtWg5RyuEUHau2a4jxIMR3e6tl2ZWNusnbgnKl0wy5F9lvinzV4UKnuzqtEed5qaEZMkRjyCmAb3kDON7MflYbvVe6CwYpBSihKDtpRUoAuYYzX6xcKDVY6SNBgcTiqDN1ySW9VUmMMjCYTHRs5E4IGi2jwyjr9KoSSfjWMI1F5YXSRXHntKpV7LKaIrVSOo2B7RILGU+emwfYBcioFjRZIYvX8jlyFqy0h5rXEtry3LHodUjL0vXrcSRZCTHSdgq51Xa+kAOVmwIjgTMIaBZVHQxx2KZCScWVcAyXwQezaG0Xl12WhcAZixEpSQNbpxF8P4yUlqrrRBSMDBfwkB3IWQhDiuMIYS7Ar5EX9ZaQwUEU4XmqQSj3eYDzZpk+OLB3jxsLeVQCuPXGDD/33v8dD3/pG/sI/+HL15ztsufTwFZ778At84sc+w7u+6+188fe9mxvP7vP8777I67/yfi0wX2uCftXxkf/1E7zn+97FX/7RbyKFzHO//QKP/+KT5fMKX/y33snmmQ1+/X/4HTBw6u5dvvh7381op6E97njuwy/y2M89oanEzvHib7zCZHvMV/3dL6feauhnPS997BUe/5dP6SYb9JpUBuOyLrg5rQpXJ07nZuex3hRANSkVPGdsM6IXQ5cSvq7Z3N6maRqkeBu6Mv/mEEr/f/DSMCq5MYYhzdu4GnyDuIZsq1WXd1X5F76bYSgu18WJKf4Tw7lWAKFYORhTGIdl8S8T0PDvYTaUYug7sEGwhhPLMtPLgZuOE3upkxJx/S9Zv+ehKbJ+dwrRljX1u3/uW/m57/81ZjeWeGfYGI8ZVbpxC32vhtXFlsGgBZ2vKnzt8d4TQ6RbLlbNGhBGdUNTqVzaueLfZwzT2Zyu73HWUflKJeqSueeJB2ilY7QxppvNOLp6g+VX6efN/1yYbG9hKocfNYQcwQqbGxuc3tnFYTjcP+DxJ57gwsuvUI9HiLWF+Qtp2SFxfSbTDeH4aMHHHn1MjZhlaMzqCd1/9iWe+KULulahi+Wn/q9nV/XHL/1nv6fvSyyTM2W9LUCTykMsgqWdRj72z54gC8S+Y9zoJl6y0C5bnviZp2j7duWBfukzV/mlT19TiwUSKcciXzCQhOV8jpPER/7rj1BXlSa6pkxdV9TNmJiEpm7ppq8wPbiE9RYrMzppeeXFlxilhqOrVyH2XLt+hU98+vfZ7xeMd86wfxSZzoTTO2e4esst3Hn+NLec2ubp55/h05/69Orcbd6/wZf/F+/hqQ8+y8M/9VlsVzE+PeaOL7mVjbtH7H/yeMVkv3msCq52NNsVrlGbBkmQY6Y7CjedwyyZ9/2nX0ZoAz/7N3+ZZrPiL/7d97M8bnn0A0/y6iOXZivA/V96N5PTmn47ObNBszVlvrfAjzyP/6unuPQHVwjLyINf+zq+5r95Hz//H/1rJAvNZs03/Y9fzZXPXuOjP/Yp5jcWq9d/yzc/yINf8zrGOyMWhy1P/OuneOr/eXb1/39S5t2/yfH/J4D9Z3mM7/b0n6zB1XQJDmcd1w6m7B8vwdYghhtHHS9e3OOoe46N3W0WYclyuYDQU5vMxDlS23I0W9L2CTEKxBkniEmYpOu3Sl0zzllIOu/rPb2ev4dm1aqGDMoWyVHJAM5oiE5lQWLP4viY1NRsTMZsbW4hXeLg+nWefvpzXL16BWNgPFbvuM3NCfXWNhtnzrB7y61sbG2DrSANye8qm7QFBIt9z2w2ZTabsegDdrzEx5KOmVORipb3X5Ld1vL69Z5hYHunKMSQIUWuXb1GtE/SdYHbTm9y+yTRHRwS3VhvRHKpi9Y+fqtkwqR1la9130EMiK3plz0XLrxE313h9rtu5dz5EU4S3XLO8WxKF4NieVZWYJVyFxREHEICchaICZuFWhwjsVQp4UNUMND+8YsYbaTZVa2PYa2kkYyEUPyIUbuTLMUDufhJScbkIvktb1lp8xkklsc9Jgdt3KPAgYhZBaUNIJwpZvoUC6JVg66811VpIQVYHdhPw/7Q6PpVWUebe2KKarXUNFTGk3tlwJKjJkTjlL2TBYsjiSNFUVAtCTmWxPksmuhqbEl3pfxtfT9V5anrmrxc0i47qpixRgjjHue0LlKCTFQbEgfH0ykpZ0xV4ZtNqmZM1TQ479fXgpv3tzcfa3XHyf9fyTGzWZ+rE2nASoKpcXWN93XxSLekXDxDscRsqKoNqnpU6g2t02POq3AWX3mMrTCxB9GaQPfJxbNbpOyJ9P208yXH0z2ODm6QUke3mNIeHTFbzDjMikn4LmkIZOUxdYPIiFySzlNp9MoQ8igCrviVYrA5E7pAO11y9co+jBouX77Ojf1j3VOmXE6LGShBheey3mdQVCJDO96WJHbndQ9kncpZRVa0ohU4evIL9FpL2bsPXqyqOmIFGAlKZpHC6BsuY0219rYbxkFWkE5iLoJc3WNb0flGkl4DMbr3s8ZhE0h26zTlwlJSH9gC+uUE4kvzxeGdJUkodbcdxPzlHlQG+2qsnWiQl0fIGJw0IB4JpwnzKV1e4F1UvEQMJtWEWc/yWJA+M8ZRR0teWtLMUKURMsvY1mBag1k4TMrEEJjOA7PtwMxXdHh6m+lFiEk0YMqakij96nqqgNcZXPWaENwfIXE1Ogjs4NNmjE5sVqNrF32nQFlIVN7iinePgiRSFNrKQjg5aFZ6/rxmJQ0T3GpCzpBKj2l4L3als9THQoy6+TZFOlg2330flMVThnwWyDGwCJGjRQvWk0qHK6fMsAIZox4I3ntyEkYpM6Ss6Thas+QGs8RX6/TXE5RBkt7EtkzglkHQugb3Vq9L6cZIZkg6WfZJtfrOIZTESkk6gP1wAxYR9uC7sNpJqsTVYssNszY5zygY54wlGk0ekwIaGmNwtlqZTWoc8Pr9QZmIjLmJ9jq8tqGkKFr9rM5YQgjM2o6mapiMRtS+Vmakd6vLOUyikvOqmOlTWnXqT57rk5LI4XwPYwl0/HlnlTGUIiH0ZGupfD3YQenfShmVmxd5iqAFjyjqHTEqh87KFBpos2Zgr4WwoggP4ROVr8oYcsQQ1cNAFHDy+HJ9DcZpopzUyoLsQyAasLbCFsmgqR25FKkn7/GBPp6BGCMh6r9TUpZcTlJ07+suyjDeNGExFw+vpP4oxiq7LAniynsuk792PzJGkk6Hrvi1eU9dj1i2nTLOqkolxSiztBJL5Rui1fGXBu/ArH59ldvA+QJ+Z8p9mLUb6Lx2iKzyc9VXxBRvi2L+awxdjCufg2HxwSituvJOu6zWYZwWrJW3KtHOmSgK2FoxOLErgE6SJhoLligKOPcpY0PCtglvM96qLZFFWPYd1jo2thLiKxbHMxZtizkxtYoIBy8c8vF/8ilt6MSgPkYFpH/6N5/jqV9/pow/Hc8P/4vHV3Xtz3/vL5/Ac17daVs/2h73/O4/+tiKSStZVnMqAh/73z61YhwYY7n0mat84G/9CpycY52a6Q8+ME994Dke/ZnPlk6cIacS/142J5PtLTIQUqYNPSZEQlKD1cZW6n1S1/hK56qcApmoacxOw1iydWxsbLKxuYEh07U9hqxSVzEqO4AiUzGrRX2wChC0GDO2QobgkFJ8DKW1To/5JoBfi568ar2ZMjMPU/haMlDOsKwBOgXKhpl8eGhdLA0F/Mnrc+a+Xd72bW/g1jeexnrL8rDj4iNXeeKXn6U96lZPHF735Htdb+JYyQcGqc5gh23EMNqqeNdffzNnHrqF1Cde/PAFHv0Xj2uRLxkTk3Z9g3og3fMVd3Hv+++k2aqRDIcvHPD0B54mXu8HpBI3tjzwl+7l9JtOYZxlcX3BJ3/4UfrjgEjm8h0v0+/26w/71vWP9q8ZWmZ/aLy2HHCDV/QfD8AtX7TDLez8oecNxzM/8IKOgTOGjBZtn99+fL2ZuvkQ1l5LNx/N6VSeYVYNM208x3JP5hUjO8TEcrlgOlM5Y33buPzVtW+M9pVUrldWDPqu57jv6WtNgBYgpIhNXv1IY+alS0/Qtsd0ix4EUmVJ1nDh+Qvko8B0/4DKWw6nh3z68Ud46uIFXLVJ7hri3NL4EZNJzR33nOH+N97H3lHL0dHh6nO++99/Ky9+5BUe+dnPFplMxXzZcv0XDhGEu957G2/+xvvZODMm9ZkXP3Ge3//Jz+CMZ3xmxNf+nffzzG8/z20P3cqZ153mkz/5CC9+9JXymZVFPjm7wR1vP8fP/+1/RTfraKctj37gs7zj29/CY//ySb0Mg2fayWuwWfPnv+dd/Pb/8hG++X/6GmbX5tSTipxGPPvhF2967pO/+gzv+mtv4853nOfy49c4ePmIn/ru/5sv+w/fy1f/V+/jF3/gg0gW7n7Pnbzzr76VX/v7H+bqkze49cFb+It//ys4vjzj8iPXMAY2wkaREw3AgF3Njxjt3vd9T9f1mhpamLcG9TSsa1+AGv1YvjAwzaoYE/7LyVdTb+wCopslH5G81EaE8zgzJneGlCx9jMzmU2b9gqeu7PHRx5/j+PqU7uoBs8ND5svlyldpTqR3Ft8nNpKu470kgqhxufcGJBCdECRilxGOl3Qx01WezlisrXDZ0GAINrK0HTsbDa87fztnbruD3GwhruHO79S7zfoaWzXElJkve+ZtpEsGi2Ox6Ll+MOPCpWvcmCbued39iIfsKt3I5UQyAw6hShaSpa4bjE30Ma02jplMiD1tZ5E+ajp8jDiju4CVhMmYIjdMhBB005uygjVAjlGN8Eu91nc9saTBd4dHPPvEE3zm4Yd58cY13Kiinx8TuhnH8xo/nTPuIq87vJ0uZHxjwboV4DCsD05M8UpV2dogO1N3hsHHya6mJh0VRe43jKYV4mPISZO5Q4hYEabTGbP+JRaLlmunNpjuWurZJTZOnysAHWWBW69dZpiIgiZIu7oip8z84IiQl+xPM5/73OeYLy4SaPHjhpHA3o099o+P1VrNr7rb5fUoMlDKnsmVdddirad26utssmDz0Mj+fIDOFzhW+82yF2T4/XKWJEIs8s7s1QKohJmpfFUbBBITNmX1lRrWbBKRjPMGT6YqxI5gFfAwRn1skxTTeatAcS61sCuBdgow6fs01mkTxhqsV/85W4JbvLGI94QQ8EbodRnReidGnU/aXlO1swCZ0PaEnEl9JBgh5IipCgPNObWMKgyuaIcUzaiyY9TXcGM8YXe8yVTgaO8ahp6mqvFeG3KV83jn6IMpTDY07A2hrjT1cqgrvF/7pw9zvJwYY1/oMb2UhYGVB7BdwMjw0gyeabnsRfKwfloFlWwBwJxUON/gq0bPey52JZIQo3se59Z7m5xPgNQygHMKOBljMWJo50uuH1wlS0dMLbGdkRYLlrFjbvWerKIOHBk3VAg5baxqwyzF07jsm3QPnpVgIGCzkLvI8njB1SsHhKri4sUbXLtxyHTe0YVInwtAZ5RkM5wHfeeWgTgiGaQEyui+0633+LZ4KheboGFfOnjHKexQ7GCKp+KgHDGGVW2j+Pc65OEkjuGsQfRmKCxJbWibAge4Vc0sGmCShdQHrDEkIwR0nXTiyLUGLiiYpgoTVxqxZUuhae9WfVWdtSWHQD3s9CyvPjwDg26ok21BCleYERpEZrKjqXbYGt9ClUc400GsMCZAjtQR6ATo8dnoPWzUM7uOEUKlErPsC+uup+8iy07Ymy05msBCIi3QmwGRKfeEZU1gMuuGEgOoWhoCX+h4TYAurQIRsmqEbGGsWEu2lmXoiTEQuh5fTrR1A6ssszlp9HHvSoTzAJmVSdfoJGjtzQCeFjJql5rKQFGwQD+JAuNGQRhzM0VTygSpzQ8pia6uILpWDTZTIKZMKMkhKcfC8kkKNBQW1iC5tCdaSDmrT42y9YbhAQzA23CTGU3EEgRT6NbqgXSiA2jW0kxTqJtZknZ0BJwYiJpYZazgyySn600qCHpe/f1VF634Q1RWkEIh7Rn+TgEFzfr9KKIrK6nJwIYiK3XYlsnAFADW2NL9MNpJHJJkdOIYmIiGxVI/ax8Soe0ILuo1daIy1GHyH94T62udQQE6WC/aQ+vlxDFc/5zW3hWpUN1tCTlhYDNmCGXxJ+tEkK1RxHsAf4cOg8m4plbpjhGwa18M5xTArGIsISI6xqw5YY5qLJW4cr1sua55xW4bAGmsJ4ZMu1RpROUbrPUE6TEjEF9koN6vxs7JLtXABjsJ0KW4luLmIlFX6rAu0jknZcPKsCHVe4WUScNyb3ST4ZzFG732NqfiV+SgeD12fVzfu2V8ee9pRrV6TjpD18cSd66ptMZa1Ju3ABpZ0MTa4fqrvL3verIETcQ0CiisADpKInRZ2FIe2IkGYukupaC+PM6SnKONgYiAscQQmc8yJAU2jNXudSjdbmN1wyECkiKkgMkBbzK1s1TO4KyCn9Za2mWL4Fh2HW3okRNTa8oqmzXlXkrGIkQkSVlE1yD/elzzeWpb86rvrBZHZR/ffHsMHTRbEku12zssXuamec2s7iU1G00pIZ2sNt6rv1q6ta509MaTDZWsZqFOSaWlgMXRWFfSLg3eKUCSY8DFiE+JRcxEY2gmEyZbW1R1RVjOMZIZ1w1iHF0fSSmQU8SaTGVL+nS5l9R4WHRBdyUIw5RzMXyuNWRWToxuZgZ5hrLeylkxTuUxOinq/C2sFlY91wOmt24oDXP/8PxhTRqO8285y1f90Hv57Aef5+M/8RjLg5bxbsPrv/Jezr3pFl782KWbLvOwIeLk9xP/sM6Q46sHiPDu730b0mc+9EO/S/KZL/3BP08363nilz5X5upEjgZXgKhLD1/h+d99keXhAu8tr//a+3n3f/Jufu+//ShNVVGPKt76t9/C0QvH/M7f+xizgzlb5zZppx2xC4gI//y/+8VXD9R/68fhy0d/9JP+FMfDP/cHHF+7vko+1mO9tu9s3YmxjpBQFrBErBVqFKDLOWszbGg+Gq2VVM4g5KhzYIyBru9VrmMg95EsS1KGR559HhtBuggxk6zOFe1RT3uwpFsuMJWn7xLTwz1uzKZYGeHDBq6v8dYT6XnhFeGx5x7m/PkHOHPqPACbZzfYOrfJ7//4w1qLpERKgq9qrNcGUFgEPvGjT8Dcs3tuizd8xzne/pffwjMfeoGwUMbK6//C/Xzof/4ohxeOcLUjFkPx8ZkRpobzb7mNfhGYllAbg6Gf92zdtsnpe3cQERZ77avOM3zZ97+H5z9ygb3n1DPPGGinHePtEcuD9qbnnrpnl9F2w+JgyfJwiSS1/fjMTz/KX/3xb+G2h27l6mevs3P7FkeXpuw/f4hzjhvPHHDw0iHnHjrLfG8BAq//xvv43C8+j5Qm1jBPSrnnjYcHv+V+7nz3rVTjiqtP3uATP/EY8722bDAcr//Ku3nD193H+NSI2dU5j//Mk1x/al83PwZ+5P/4ZaxplP1gI4kFkRlZogbcmA2QDepmi8nGFuNJTT2paKuaex54I6P7HHIw56UXXuTZCy9weHBA37b0OdFKospCkw1ihU4yvfx/7L15tGbnVeb3e4dzvvHeW6NUqipNLlmWLEsy8oBx22DhdrADsY3pXgQaulnJIr0SktBDmk4ToLMc0lndnRVCJtJAJ+kGGlgLGoOZjAfZYGMbS7KseSyVVHPde+sO33TOeaf8sd9zvq9kITJ0kpWEo1Uq6Y7fd8777nfvZz/7eQImKZQqsLoHyeNrh2oCpS5QxhOjNNpizKyQDDippLo4r7UIzEe9PMsU4gpYuYbpbI5zgcFghLJ9ptUU0y8ZbqyhraUcDbB9S0oe5R3WN5QxoHxF2bMU1pBcoshjDk3OQ+TMjTSVYxESOuc43Wto+xPIQxJdpIj3TtgzMbVJqsTo7DxR1Q07u3tcvrzJLTctCCFyeXOb/ekCn8TEar6o8HVNFRyERKksu7OK2kdGPd0eol2ZCOCjgKr7+3vUdSWs6pSdK4XK0311h8PlAk5yzeUJ1bLzfAi4RgwhvI800zmNu8julUi1oThiptw4OkQ7NUR7Rq1GrxCJUxlXVWqIdzNeeu55dnYrtheGZ595lsAO5cgQjGGEYvvMGS5vb9NEmaYRJ+uWqaLJUIqQ85QwiZQSrdcs9yRGCzG+4tX8GdcKsNjWgKk73xWFlqkIqxImtnJJIgnTyrnEJFMh4m4KJIXy0vRNIM6gKVFqRWnESbLSYkKYsl6f/JycPwPKmpwLr9SnStB4pZfgRHuHUhTTj4AiBYdOnl6hSYUhGo33jsViga8WmOCl4U3CJBGjDyHiG4fDUwWPiQqdLLrQlFbMEYwJuLzeS1LnCqqAwljWRiN03bA+WqOp9ym1pdCGwlgG/QHj0ZjGWhl5Tp7Cakqjsf0BQSka72lCuGYC4NWuFtD50x6zyhtFJd3VXKlzDVUyPh1bDbaQQTlBaTpySCzQRmoSeTY5/9EitSRsLjGmErdYMQARwkaiqX0GqfLvRRF8pJotaNyUulmI+H9d00RHU6ROcz0BSQeUVcKIZ0lEEb10OoOhlKLU5FFAOmoZgdy6MqG2hktX9tjZmzOvZILE5f1KSQbnWv16lUdpVRfXlGnxgRxD8vNuc432WXR6clq1uFt+z5pXa052DMf8A1fJRe0eDNmhNanYMYZVBubQ2eQvKZlAS4i+ZZ5Ii/lMiUkiB1Gjia3tijS0MtlBOBKyx41WOcKI9nxWThR5NTyRAnkFKq9h3T0V2cnLEVIZAa2guUiYv0Ssdmj8lOQmaO1RoRZ9ufkC1TiiS6Tao+YValHjqwYWDh1E8qvyFbOm5mrw7OuK3WjZj45pnLNIFq8tWIkDUclkpMpO8J32XhJWc2if3qImLskAACAASURBVGuEydcE6HwI4iyuyT5xAtqFDKAoJWyZJnqcy6M3KmtQ6chgOEArjdGFMIYyoJO6xZiXg14ijN2wj8r4aIrdJu7eR1u9dojkctNI11O+0qVGOnVRWGIB2UAC2CQa5/NMf00IMm/e6/WweW69akTk0qiv16B7NarvEpyTjmpMjlZ7b/nil1VX8NlRSGnZhOQCKiZiAM2Q4IQir3TCWt25roToxSp8BdRahmnZRNFXmW0hdyToVgxVnl9ZFN2BqDvavWwmDTS+kSTH5KDRvmcjhay2AsqCleeQNa5SkDFHn9H91G1LQfNDkHtvMwVZqZi7jQKUGKUwIJpr3SNXX3fvW3ATEFMDvXyNRmlCEoal0a1Rx7VFc1FYUG3Qb4Fe8uGccjfdom1r6KE7cXDRfxMXS20MCmSNeZ/1Ez2FNtk1yqKUhUzBj3kMVLaLIihF1ACSVCYlunw6SUe+KC2i0eZyUM6j4ivjvXIg5Z8dUweaCh7VAltLpmeMUdh0ugW35bWnEJjnZMX7fHgX4lhGCuKuiLhuqmJB7Ty9wQjnHASoqgXVbIqr5ii1k0fYAy546Qrne13VU2J7wAc5iCQjULkI0ASyg29YjjBnWCTnSIpEgOQhRbROYkShRBeziaJrF43CoVi4hmTFpTeGxMIHokvZiSsDdDkB1cYKQJ8ShCCjCEQGhUb3S4pSRqWHZUlRFKIpFRqGRtE3PVzS0LwyLtAB2O3H2+5KJ06+kqiuHL/dmu3CkFJ89Vcex83c14HWq98loTJ/XrOMr2n5w1b9D1ISZiWZ4afymln+d9uNlK8P3kl3TWkKU8gYuRF2jlFaOmYE0Fm0J1v/Km1pmjnFYMh4fYOy1xMgLgasVsJ4SFBHh3cLgq9FdUK1Pnet9mjWKdVa2Csakpb4SyZlwnJINLVvfuVNdzEhNwqUAWLEqJXEm5YZJ0EipUwEyvE1CPrVPbM2OW2vb/q37+H0F87x0L94srv/1W7N4//yWQBu+abj3PXh1zM+OiTUgXMPXeLBf/44rvKgEn/pv/vXeO6Blzh21xGO3HaQL/3Mwx17qX0Po6Mjrn/TER740c9Tz2rq2vHUbz3LG7/zDTz2sWckWYqJ5D1tgjS/Ms8ArMp7DQaHBqRSHO6OfdNx7MDy3K+9gF84FIrJhUlXGK+uTXc1IWPICntQEsK41xcdGyVnawLm8zkhtEL7+cxXorMiMd10MZUU+eA/+UZ+/6MPMN9ZUF1yDEd9bBZnlnwjMzlyR7WNf2KytByAVYrMSJfEPgyWzL4Xv3gWnXr0R72c/MqGSUgM/omf/C9RvaP80q/+Fs89/hBUFxmWM977U/cD8KV/OKGgDyEy1w110VBYR5rvoqsZbn8XtZgztMKmNmWPNBgyizCpHSEpXrywC85ToqTAJKGVpbKe2X4NOjJzDY0SswITkuimVjWpiaiiJBjHdDph7/wOhR2wVowAKMfCgFpcrfI5p7pYJMlv5PxXL6ONYTwas3M28PQnJtz2nlt54Y/OMN+qScBznzrN1TN7aKXwTeh0axZXK/YuTDh66jCucvTXe8w2RXitWQgY56vA3sXp14HXN3/jSdZvWOORX3+C0MQcVyJu7hgdHqKtJuYx2P5Gj/f9vW/m0d94kunmvFt/WmvJMYEjrzvE1jNXeemL53nD+2/jujuOcOmJTa67/TAbx9d5+JcfZe/sBKUVR+8+xP72hCd/6/llZtYBdJG3/1v3cuDmMR//kc/gKs87fvDN3P8j38hv/Z3PEFLixDuu566/dDuf/Ojn2X1pl9f/xVt5x998K7/5w7/PdKtCG8OnnrrCZG+eGSmBQIUpHDF6rC1wjcbqEQphzxelphwY+mslaweG3HjoMDf01jl29Ai9YY9qsWBvb48zV69wfrKNmjdEJ+BU9leSs0QlTFHim4hKknslLdo7KoFVBS62I1bCSNApoKM45GktTGrfATSSVxkl3+8ah3ee0doaPikgsHFwjVvUSbZ3Z9RuRrG2jm8aSpsojaZMUNJnfTygtBqfRCMYgkiOhCQSG0FYJV4FbG5itZIYIY8HtXGYXFOEIGNpKpElFaSbHFbkNfbClJcvXOT2/SmHe0dYO3CYEzfdip/scGl7k8pFtBbDFG176HKA6fVRtoCcF7V/5UCPD469vV12dq4yX8xwpsC5BqU0LsiYq48ij9LxO3JDqGXtdmdLDlYxCmAYXI2MqSmm0zl71R5xt8EPHYdPvo4Y4lKJSeWjPi/gFAL1zh6XtzdJ0z4uzHj68Sc5f/Eqc9a4cPkippxRvKyZ1A1jpZi89DJbV68Sktw3KZCXIIyAcyJxJGZQ8jEFNFqRehbV7xMLS1ujvdaVco6l2lw1A2CJTFaIEWM1VmeQTkm1IZFZ1kFbA4QMjqkQhcmUtegg5dQ6oVPEkiSfzbWdaBmqbh3FrEcbIpBsx1hv9btYbaaqZU6torDjmgoW2uGrKc5XYAxF0cOphK8bvK9BJYrSYKN4gRrylBoRopcxyiB7MQbRK/RJQZJx3rbgMug8zSGSA9GL+2RZlIwGQ6Kbo/M/1liM7WGMxnuP0iFDroGkFLosCcoy95Gy1195z9fWuqvEFGEFrda3y0snaZiazPGXCQYxHlErdXXbJ24b/Drn9koLKNICoW1t06IERqvMUMqMOmI3IRWio3aBGIulXptaAQpDJPhIdB5CxKRMRiGRNNkgM9H4muBtJzGlcyxSOXfRGgF4M4vXZC6TchG3cFy5ss/CFmxdXTCbe1xQBIS4gc5JpIIU2jHVXH0nIzBTjHltyu8WB14BrURiieWEYkvj5k/bc+3nrtUKXH2WIK+fJCCZkCeWGAI5BrckHqOE6djlxCz3sGzLTPJIOmtXygReC6S1L1m1Obp8KwoBXnXM5jlR9oMjEBH5LZlMzPl2V/QIsCdPOgILUtgl1edIi5fR8y2od6DZR2kHbiGOrS7/qTyqqmHeQOOhaeRMSgUuKXb8giuuYTPAFold1WNKYkGNoyDqHljJP12Semb13qoWZFh5Gq91vSZAF7OAYYhKxPLRWQxcQDqjNcvYHUQUnCQsBKNzQJENEVymsmZEliQ/3yh50N1IZf7dSZEdMEPnftoWhi2Y15oztEmirB+dWV6ZWZUCqQmiixYRPSRlRPQ0krva0tmOQYrlqATQqxspPl8J0LWL8RrWn2oLYikwMIrkFdA6m+SNockUVDmUUlDXPrRk0JkRU5gCb2J2bBWnVqOycYdqUfT8rOLygFdKyQEVvCQ31hAzaCEW6nk8rDAZkDOZUqqwSmO1UPQrjQBmRklikYOgMSp/bIkMKyWmFN4HfBLdP2UsJIOxyGFkDMr20FpRZCRetcElB2101lZQCMtjpY/TBmg503MSEpcnQ4Y9liBUiqSk0W0CFFe0CFAQfFdgt88vktdb9FTer7w+sX/WMaF9RGWArqUUxyRjps45vMvMtSLT/60UqDHP2YvrjQCAJPBBaMEkg9YVKilcaBiqHgNbYuyy8Oy6JmpJR24p3CkJSLpKO+90+2K2tCZrHgKmKEDLAU0Qs5TGOWLjqaqKarHAWk1ZGHEqS8LU8yHhkiIqcUc+ev0xASVVZL6o2NvZIbo67+u8l7KOmOmXKGVwvpIR1Uzjbk8aiemZUal1ptyT91AmNhuNNYqilLFaa0zWLEhonbA6iY6dKvFROr0z70kVJKMpyh4xQjWd54Q5QcrcskQ+MTJzNMnBobWl1DAe9ji0PmJ9NGDYLxkP+5TWUtc1Td10SXIVNLd89C8A8MiPfoWTN57k0OFD+OjZvLrFpUuXmM7m9AdDekWPxXzB/u6Euqo7YbMurinTaSRK4SAAxuXP7XBk/Qj6QH5GpgXcJAG1SRKHJkSiVkRrsrK2gLsGhY6QvCOFgLIaWxQonRsxyMirdM2EpRa8mIaUZUlKiWo+zwCdjJgqY0ElggqYohBGA4GikM6eT9CESOU9SWmGoxGj8VjArSTaZAV9YQvFhE6B6GsINcZYrDIYhOGqjckANNjMMJbzIVdROR4sD8JXZpFtnJD/sznxaNearIucnCSE6bDKoMiZpTSPsmZm+8xafRiEvbR+w5gv/tNHV17CMg4pBc3C8/n/9mH2L0xZu27It/xHb+fuj9zOw7/8ZNffuf29N/Ppf/Rlds7sYLPbMNBpGh28ZSOzl6bCbI+RrRd3GV83wvQMvmpZqvK+rDYUZcnGqXXe9kPfQDGQdOCp336Bah4YbWjWT61Tb9fc8Vdu5+AbDtJMal787Fle/IMzgIze1Pj8lhQHb93gjR88xdE3bOQx3oaLj27z7CfOkrzK5jQ5juBzkivFQwvStfGrBepWr+H6BuPDQ+7+N2/j8O0bRB+58JVtXvjEhbY6zV31HOuTQhWKUx84xg1vPkwxsGw+u8tX/tmT1yyHW995E6fedQuDg30ml2Y89ItPcuWZXXrWMuwXfMNdN3H+0oJ+nKObKToEUlwCF04fRNPDqoBigk6RgTIYM0L3CsJ6n4XeZ1FV+MqjnIIq4BKgsglOk8XLC0Mgor2A0XWIVGmGN4EmVIhBk0aFiA0KqwtSUeBVwiGjLNoHNi+cY3FlAkAzlW7B4FCfvQtTWeMZKAsxEKPn+jce4t7vuoP142O0lZG8al9Gr1uduOnmnHZUI3bnqeR3APXMUfQtRU/WkgLKQQHAYr/u9lJ7leOSv/DvvI0HfuoLMoYdVs77pWsUSivGR0a8/z+9nwuPXuLBX3qU4aEBw4N9fO05fOoA937kLlJMjI8NsUPLfLfiwtcu8b4f/+YOJ3j0Y09x6alN+T0Bnvit53jTd97OY7/xbAet5/IAgJvfcZwv/ezD1PsVKcFXf+VJ/vLPfIDr7zjE5Se3ufmbTnD6D1/m6pldIPHsJ0/zpg+/gVP338Kjv/40xlqO3XI96uIlmsbh64hKBePxYQojTTvvHIcOHkQrmM0mNHWFXzj2KsfVyw3bSfOy7jMYDFg7fJCjR45ww+ENBocGcCER5zXq6oxFtSDZRFFajM7jbFrOJhUlN3MxN1dRWbqmbWxL7mtSQqsChYWUgVEljVYQTa1SW/pFSc+KiVRTV+zPF0xn+yQSw1HBzsQxXVyl9Jrd3S36WuGNZqQUY6Pp9wwqOQiO0AhgoYKMi6ok+r2qFdLXy31GamUHYqcJlevArOsjZkit4L8P4KPCR0XE4Hzi3IXLnH7pLPr6knIw5tiNN7PYGXNlfx+XslZ0AFEGU0RtSEpgIXE7pVsr4ioLwcuERa9XYsseZVliY5IGZXbgDDHLJWRwSAqULhx3J0Knc5oghATK4EOiqhvq2ZxiMaG/qNnf38d5J2DCCkuvPVNSDMz39jn/4hl2zzpCqnjp9Itc2pwQBkeYT2cEvUsqAjuzOeuFxW1uMatrdLGBjlHO0yV0Lf/ORXlUmpilWjAKBj1GRw5z6MQx+gc2JNf4M0vQlSvn2jrnrFJLZoaYytBgCqgozJv2/LbZyM8h2mQxT9KY/I9SIt/jVBS2GhGTMoCtFTZpUspu1imhY/59WkbJdTvpkQE6pVTHeNLGkFzOu/KUWIyRxntcJSytZDTB93GmoHEJHx2FCiIVlCIxiuGftRZLJEVHzNNLhZGzQcYHhbSSkoDIVptu6kkh9bSrHU1dY7RmPB4TmhnWaqy2GG0wRUlRWpk2USGDkwEXA9iCZEsZeR/2SRkQWp7Hq3p0+ZG1gXWlPl5+jI692mK1q1MGy4NA/m61x9ufp7UAYca05InYAaTCsFvqCJPPMQHqEyE2xAi93kjwiAgxO2+nGAnOi2ur8+gkgG5bK2na6QoBgWPyhOjk3M2EDN1OFJIZZgnJoVPWbXeeeu7Y2tyjKvvsTSqqOpGwoI2srwKSCcLsbHNtA8oYUjTZjbTJNa+8bx/bkdrV+mA5taVy7dyN9q4kOYo8ss61JIE/fTsu64lu70fJvcn5cGGM5J8xg9RdISoP3JaZ1BJayTH5nMkAnsrFafCe6L0wpaPkJgbB101eK8F7fPREXdDGFaNe8fpTQkbyM3lJUEV00WO8cRA71tCUUPVAOXAz8BmMqxtYNGAtKAs2kHRfWMxBMfORq0lxJQQ2o2IrJnZ9oEImJsgjwFFHPAEXZc22GuutU2234lNa9bl41eu1XVyNarELWp20mFJ3/0NYBdikcDKZhVb2pJUXlZgdpBWgTeVFFYPoOWmt82CdkgeYx+tkgdL9SUlc/IS6DiQlgEemMWud9UB0kbXDZQUElTApF9zGSjGex+E0YKwATb3C0u/1UClSO4/Nh14XmJJAOGQQ5BoL6nZRK5UdSCwqlrIkcxIrQV9lJFkQ4YR0C1OI3ZmtWzScPI+tBClukeUWBGypuzJJ0TqvqW7EVUFmMIomU4jLcTCtdNaVEjwiKkk20O33iUac0koK9pBwmeGio6wNH5d6VmjR6wopEn3CR0WIJSFGMVjIAqeomsJIT8U7R76Zy8DbjbPK/ersoVeYX6sagKvg7Ko2XYwxi35zLUU/LcGYdmwUlVmfSujG3jsBIpzvGHJG684RaPl6lp2I1dcnvyJRpdYd1GSATrTYYg4cMSoJ6kHWhDZFXtsiktpLZb4nGUhNAqyGrL0RYsqsuaw5l5ZDfe1rlGAgh5f34hqoM6U9ZM22QhsKLR+LzoseQUz0+v2sCZBpyFH2WYgRFxLzesE4d5KM0ZTGsLY2RqcanIOYMKbAec/+fE5UmsFoREIxnS6oqpkAOEmKBtMmmfmASQpxVVS6RR5F+Lmw9KxmNCwZlpZRv6AsFFoFjIoUFgrbwxRDXDS4lNhbzNme7NPEiLYF0SdshFAIH1spGWXwOdgKY1LiBMGjQqBnYGM04PDGOgfWxhzcGDMayBi/a2rqWpi4PgTmQTFp46gVhune/j7T+YzJdIJ3IY+P57WZEwSjTdbAWlnXkPem6poZVptOcyXEQEMgeLJwriQchlbPR0uS2OqHxjySF6FQSrp03pG8woaAsYaQtRyib/VnImU2BmiCJzqVzz+RthZdTIuKER8bfEoo60laGEgUPawR97gmJion41293pDClLhQMxyMOXH8OvqlYfPyJfZ2d5jPF12HTSuRNdBRYXOnVJKXsOzApdABvS0YtTzClyV4RuxzZ0MI8SrrXrTnemo7lN23t5+Qn94yOaPSuXiAjEh24tOwZC/NtxfXvA5JleTfFx+50sWw6eU5z37yRV737hszGC/f9cynX2L7zC4KcE3scuI2B7YDg5v7fIjIpq3n0sGzg4K6ajrAUZGBzcIwO7fg4//BJ0kmceu7b2J+te7Eze3QsH5qnc2PbfHELz1N72ift/77b6bar7nwpUsikJMBumN3X8+7/sabee6T53j0449R7dWoOObUNx/n6BsOcuVru9kdUMZDUwz5lpr24JOXp/KQgkFi1MqVbMk93387vg78/o89SDkqeOcP3cls0vDcJ891jRbRrNUYbbnrwzcxvqHPH3z0K7jK8/a/eifv+Vv38en/6g8hwYl7j/HGD7yeP/7pJ9g/P+OWdx/j/r/zdj77kw+TZpFBYXjdyTVmV7e5buy4Mkr4WuPNUgXP0QOnIXlSdFjjKKOicIWs77JHZSJBG3SZNWZ8wub8wMeGobHowhJxQJKiKo9NOK1xVuFNQZGgCA7tIjZZrC0IphCdT21R0QizrvY0XtbcdHPG/sUJN7/zJBe+diUvUyWxLYIyiff8rbfz2K89x+UHn8FXnsNvHXD3h+4E6ESqOxShZWjna3R0gO1rfOMohyXj60bsnZuAggMnN5hemeHnvkv62+vQzQcYHhrwvr/3LbSscID3//j9PPPJ53n+D88I6HbdiG//6Ht58Utn+ZP/+avoQsuY+ME+B06u820/dj/PfuYFXOXZeXmfatLwDd99FyfvO85v/u1PsH1ml+tuP8R7/+67mFye8vTvvwDA1gs7jK8bYQeWZhHy3l8WjtdMdeQ9A3DolgNcfmq7Y3/kirMD8A/eekDABZ1YG9Tsl1OSX2AKRfSWIkFPW1QKHDl+gHe/6y0cPbrOpUvnefnMS5w5c5a9qSPSo3AR4xzTvRlbO5e5fL7PeDym7mkOjgesHTqIPdCwdXWbzcUeHgEVCi2NWpNknTUhkjAUZV/YI0majinnXQojJksUKF1IPulFB3l5CfvUKGkKRV9z+eIWO5MJPmkaD0n3OHJozIGjhxkdGLPYv0RsaupaBPDHoxFGtc3igGuc5JmQGVKAbkedUvdPXFlvOmu6teNC7dqUIrEN1Vr0k5QhODFdUCguXNziqWdeoN6JvHT6DPvzOkv3GHTRyw1SLywM3aqeahJSNLc1kdRFiqr27EymbO/tE2KD1oZeboAttQ3bolgtz5O2u9QCEy3amJT8rqRJQeOCY1476uiIWqZRXB1oFjXeBWyMuWHeLlIBi0JMTKczzr98njP7l8EGdja3qRtQhUiCOOeZzxY0Cej1iIsGF0AXBtRSBH5Jc2qLFPIfmQBJxqAHI9aOHePwjScZHT4oAN1r4HMtc1r+zs21VtNOyQiqTL/kkUUf8V5G/kwG8oqyyFIqBlN4hJcj5xcYrLagIqkQxp/o6i1HU5cMsXxu0wIHqmtE0L7/FSadauNnil2+rHP+piGz6SUuNK6icg5vSiJG8q3ghT2qwAVHoS3aFJ1+pUFyUJ1DiwAjwj5r5wGkPpacRGtFCommqpjPZgyMpTCGQdkTUkgSmQWdazqTm9ApBWnKIs6yHp31pUtsYa/RI5Pb0CYdq3+1ANqyHlo2cWLm6Ah+IP8OxNDmuF3L8BVgkay3IsvyyPSG7vIX2S+St2kjbKqYssZnp6GnxXAm5t+fWgJP1vHLeAT5cx3+0IGHSUBCUteEJdf3rR5y9GIC2OaLZHZxcKIzuLc3Iw5gVjnRsobWA0KMHqxBjC2yxqCGZAwxmgwP6uW6iwgQRuxqzuX91qhc9OdZxhWiylKn8lq0gm49L7Xc2z0htY9t6/EVAFNGb2UKQ8VC/s7rcHUqSGlFHQSXEANpTYoyISUmJxaVtOAFTqQ/qrIQDVWlsNrS4MmBPhvCBIIG2wWgrw8wS8EAQ7Ijkko0vkeqe6jUx/gBhBq03OMUFL5JqNpgmgLtIjSJNPcQhszmC6aNY8crLi4MF+uCrRC5EgOLpFGpQFmNjgYVBPDOnHB5xm3S0N7rdgWnJY3gT7te2yQiZiG/vNkEB0u5S5WE+qeVsCfyrzW6wNqSsuxRFCYHHOneKQLGLINiUS41u2LXpYtoZVFaDiyNlcI8vyFDDhJKOscx+rxPE0ZbtBGTA3TCK7EHtlFTFhmYSUosrHNXS5mE0gWoQM9a+v0Sqw29GKiiONJ2rIikpRiMGSVv5+9zktDGl6gzUGKtdPl0puaqvLHyAVAFEdle0iBTxySERAgun4d5W+W1qHR7kKQOoFturAz4RU/PGkHnfZAgmWI3Fw4rKG5KuZgRrTPbAkoIW0aYcyJI6pyXZ5SptDG/po4E1W0RQwgVPuT7l3UdFtZSWukcd0BaWtlWSZhlxmhCbCQwxrZrmoN4XuTWFB0Nvr0/XXcrSjBtQczW0EJnLTajVNedkuJfUrAu+MQIMaFtgRVBC0JqtbqWeySRUMZkHRUyO032RagrYtAUxYiYPEYFikJRiVUZsVHYoOkHJNntZ5ZTLEipEH0gU4Iycn+VgIkpSIcupda8QhLF3Jui1ZATvEBm3YOKJJ06SrhGOhIKGJQDYenFUmjETYNB0S8KRr2+dPiSI6VA1dQsmsB04fBoyl4PbSwpCZi8MR6y3oeChKscxpYsXIPZtzQRBqMRISq8z3snZn28dgw3qiXtW0dMKc/IOSf0/RQprGHUKyitYti3jIcF/dJQ6IQ1UFpNYQtsMWThEnWMRDyzhSE5sNoSTYKiR1RRjCJMgTJaQCktiWIksx5dQ3INpZKiqtSWvinYGK7R7xdoIs7IKHCIkUW9oF4sgYW20VDVDfP5gqYWV2CiQkXREotB1p7K4LkCfCvgCnlUOo/+Cbqfu8ViiCNj/DGzkxNNHg0R4Vgr+zeoTJuXhEOmqiUhTUaSwMY5ks/mLCaSdMhM4yhajdrigow6FUUPpWS00JiCaGxOJDNolDtGUUFKkUJZFkkxcxHvFePBkFExRnuLVZqTN5/ijfe+iZ3pHm54CH/2ZfYnDeg90MJmVtaKOzdZZDs3L8g6HjrHa3ErRr5qVR4hJxMqJ+Nt90cr0TrS2VJeKY1TJhdoqgO4O7mFhIxCdIB9ftNdIaO7QNGyl0aHB5m9pFZejcTgG+4+yt3fdTsbx8fdc2vZS/mLmG7OOnBxBWqUv1PCLTzF0EqzzCRsigzGwl4yI8PaaMzq5YEpAuCoDbkfLz1ylu/4z9/H5/7rP2bryh7T+YJit+Rrn3tavunKlLMPn+eGb7yes09fQPqHcr3lB+7g7MMXePKTTyzfn57y/OdljPfkN97A7e99E6PDA0ITuPj4FR79zacITQBqvu3H38NLXz7H0dsOc/CmDR7+1cc499WL17zmwbGa6+48wG/+yBeYbM1hEx7/7Rd5079xK4987FkgddqKMi5jue7uDR76xedxs8CgLLnw2S1u/tFjHL71INundzjx5ht4+aELFPOCwwcPMHm8wn+b59Q3n+DlT54npcje3ia2qLnt1FH2d44wnfXR/UH3uoq0jwX6RWSj1GwcOEJqGna2tgToMJreYIgtexLnku6Eln12pTeFFL4hChPXRisjTrYglIZgIjE5SpUoiBiX8jhiQcSI5p2FqA5BchS6h44adi4B8OWfe5hv/Y/fxWK35unffZ5qz9FbK7nt/puodht0ofGVNCCPnDrEHR+4Uc5dFynzOmqX3DXANeCqwN75Gbvnplx8/DJ3f+hOrjxzld5ajze87xTPPvAiHXq6cl15Zotf+cGPYXuWtevH7J7f43t+7jv53E9/ka0Xdyj7lvXja3z7A3EkzAAAIABJREFUf/Zenv30aR78xUcBYdpprZlmrbvf+bFP0V/vc+9H7uLCY5dJMXLk1EEuPHaJnXP7AOxdmHDh0Uvc9NYTHUDXauEVg0IAOrV8Y0opzj10ibs+dDtXnt2hqRzf8N3C0iuGAhyce/gSb/3+uzn9hy+z89IOt7/vFKMjQyaXJpCL4u1zF5jv7uJjxBZ9MAEXZ4yHA06cPMkdd5zibd/8Nm644QiT/R2ee/Z5+NzneeKJp9HKUvQUqvb06JNcw6JpWOzuUetE6BnUMDK2fdaOHEX7NeZNQ9M09HXByPSgrnGzmZxzhbCcxe1SitvUTogohVGWgCIogy57os2qlw/NJS36ZClArEl+xtUrZ9ne3eOG4zczHg4IqUTbIePBkGG/ZH9UMg9zClVQhB7EQppJWAIGFzSFsmjjAIdStQzlGYsxIu+RlLyOkEGsFqBTIWSQRM6sduw+Inm4Kq2cXXWgqQI+JlwDVy5f5dKZbV565gxJWw7ccIzCZFH0IKYHxITyjtQ4UqOglHxeqYRJ0qCpfeTqpGariuwHMROg9ti6QdtCQBuQAtN5IQpEqdBb8CtlCQjJ76Qh61MiREsKBY0PVL6m1h4GlqLYYNCA8RbjVNYzEtMwnYoM6ihiVMwqx+XNq1zcvEIykabxRFtSqkBIHh8UTSO5ZYMipULO1eil2SURFY1FOGxZcys6VHAYHxDfqB6NLpklwzQmKu/oEzs24BLQlHxbqZUimva4VNjColWBUQaNQSubc39NUNKsiErjkzCFSltCOaA/6INPuGiooyLoQBOBssQUWnShVCDYRGNKqgzeRS2azUnLRJgKMQMIAtdoKwyhkGIGBYW1L2xfycV1RNxyozAvYxKgxgVwWOpcRwohIgozMWsqJqvxKIItcFg8Qc6tJCBdCz7HmKijNPzrqAlaZ6ZpwqZE8NJcUEkx259KzlvNqSdzijLL/wRhxQooL3tYZ0kQhRG9baSBW6Dp2wIVRQu17Z0vwRuZlEupPQ3oSCWg8mRxFIDcyFpMHX3UkIIieiH5FCujma1hj0FjdYmhgJjNAFJmtLKUrXBetOHE+Vl+T5t/aStrywVPitlQzuo8nZcyiCI/KHshS2xBZXBdTEB01LlxKOe40sgkVZB8U2XppojGxYTXQlQKLlBVHsJccnkLKXlMKb/H2CRGic6I1lwQXEXYcoF2rDWXkxLzUtsY1l2/2BgjIJgxWZonSV2ulIzRdjlrizMsD/IlvtDt0IwppA4voAUvUwv9kaXCIq7NnTPBpxtPbpsRdSCWOuNHiRgtSvXAWpQt0akPvqBpAjPn2EtiARaiErzFlHhlJDbqjBEli6ZERbt82eSaQynII7CgUEaRYkGYQNiqKWOTUTEDRkyK0kLBAtI8EaceNY0wSaRpwHvY3qu5WM3ZDoErleNy47gaAjsaKhMpYkKZQohLLmBdpIoRY0phG+dSIKl2D2XGXUrElbP11a7XHnH1EhCUEdUfKX7aP2Ay60XnbSO0OkUSySbKQQ9TZA8Ok912rOi/Oe/k8CXlkVkvwoisMMhSdvBQS4MD0+oEgdBJkyVFBYjjaiISssCiyw6sJko3XScJEimPkDkXCSq7m9AKgwb6tgSrcSlQxyQMvbwxEqJjIAww0Zdri2Jh4ixHdNDtKG0OzhJBOwp30zRdwZcJBJnZJk6mWgmLZ2k8oK7p6MYgAqrkDgv594YIMTh6/Z68XtrCX4rZ1tI45kI95uAjI0VFLroTxiRcXYnOhRWXMO9FLFrrnFzkzd46i8UUc0InKzJ4T2HFlVOEtFu2j89dMTHFaN1phFlkMIUhxFq0VPJ8frfC8/v3MZsEBPm7jUm5ySndYOGE544a9IuCXr9HaY0wiDKbzKRE8oEUPMpa0a5Tml52s3S+EdcjDcYKfVZbsYTu9fsM+uIyVDcL6roWmntfEglr16mdx9hIsVZwNS0kGVoUFAtYI1BYqPoKV1qitzReCztFFcRk8FFs0UEcM50PMm6xWqPne5RSTqLyeo0ImCBiFdktKARxqwnQt7qjvQev8K7BGsPG2hrHDh+mbmbM5nu40IBJJBOZO0/Z6wmI2FLtk7DtrAWrFCUFtiwxTrPwNToEeoOC4BX9fkGvKIQNhaawwsSLCRmrLjQuNJT9ghgjda0ITtaTNYq1YUlZaPqlZVBaej3DwBp6haFXWhmZwxJDhULJ57TGa+gVJdGA8uCSQwUkOS80qR1nUGI9HoIhBDETsQlMTFnmIGbmYUFKXpJJmyAFcBof6y6O+twMaAVVrSkw2hKDI3jRF6nrWkDIVjMrtSKiuZtsBJxSLTCeZJRDRjBkzCSGzDLUBp/doZJCEu2Qk+EkoDIpglH4JOY4qmPzaRSyrokeoyWZiRFc3uvJDDD9EdH0JXlXBkwu7JAi12pFCjXKQJMijXdYrVk0noULlLpkNBgzLIa4JnLouhu47x3v4a63volHTp9mMxjM7oygzuEpiLoEY1BGurpRkXV9JCqHGEmhbZiojoEYs0xCGzdTZmEaLW5zJCXCvkZjVT7jcpGnlSaZrF/ZiHFRy1IOuXMuwq8rwHjXE8sgHS17acqt7zzBxcc2O5Hf9jlrq/mWv/02Hv4XT/LCZ18musTt33YLb/z2U7QnupI3s4IfLONgy5bee2mfclgwODJg78IewXsO3LTO9MqMnbM7r3XUd5cAuvJzd8/ucempTdaPr11j0lBPGrTV13xMW80f/IPPCVOq9q/6s6ebM578veeILqCtZnRkiFt4qj0B+X7v738GgNnWnOACLWvhX/7N32X/wkRcCLfm/PoP/w5XX5p09/DpT+xy4bEz9Acj3CIsTT3y80e1zBphWNo8FnHgxDrbp3e6u9kvDOR4iVKMbxgQo5jg6F6P8YERx04c5OiFgxwrb+DQdSe4yssAnDgExw4f5uT1Rzi8MWI8GvDs8y/w0GSbEBPWWtb7G5n1ncd3lcnuj8j+00vGRjtqTVKYwoLWeaxPutplIT1kIQtIRzoLwHTFb1N7JpMJ5Ed/8dFNPvHjn+Xu77qDD/7U+/IIcsW5hy7x8hcu8tVfeIq7PnKK8vsLpucXnP6j07z+W1/HfHvB+PpR1hbO+ZdR9NfKThuO/B5soXjwF7/Gfd9zN9/7P32I4CIv/ck5nvzd5zLYnXjnX38L46ND/uQXvkr0kdn2QmJvags4aGYNRc+w2K95+199M+MjI+7+4B3c/cE7uvX0xz//EM995kWSj6xdP+It33Mvz376NHvnhbt86alN7nz/bazfMGL37D7rx8Ycv+cYz3zqhW4jFSMBHpvFcs0uG3CKr/yzx3jL993Ft/8X70FpxRMff44b33oD9URA99Ofe5nBRo93/4dvp79ecvYrF7j42GUB5RPEEJlsTQkOkjFg5YzxuuHojQd573d8KzfedBIzKNiuFlD2cL2SuYYaGNiC/mBMsxAzjCL0USFI/GoqJvM5VyZX2TaWwWhEbzhgMBoyHMFYG/ohUpV7TIB+WaJ0kd1SFdpaKex0bhprMvPWoIqSoj8QA51kaMeqgjEEbQge6qbGNwtCPaWe7NDjOOPBAerasLs34fmz5+iPDfv7V1DJsXbwJKUe4xqo6gimR8DiksVQgo6E2BCoickKAKGtjDpnTUoZX1yekaZltIWUdZylGopK4/JIZBEkz8EJgNKzQ+bTmtPPneblMy/T6w2498gB+kajk4yiGmNQUSDEZjplsb/g4OhwBzDp6FHK4OvI1s6ciTeEco3SNERywabM8kSIieAiGnGBVfncUklM6pSKBAIaOaobF/FBo2JPWEEm4otIORpy8OAGRydDhmpIGeV3iP1V1m4OkgTHpJg5x850znxW43XEaw06kVJDExoaFzGN1B7eKlA9EcYPHpOnPRIGKHM8TblZ69CxRvkALoEpWTjFpb0pZze3ubp7hAPXn6CtedqA3GrdJ9WCLHrlKFPYwkj+oQwm5xYxRZIqwPag7JNhXGJKTF2k1J5xX5G0ZmYK6nKQp1k8ejig6Fu0ldxEGYUr+zS6wBQ9dBlJoUFpgy4sKnqJp/IUUVrMAlOKUu9qg4qiAU6I6EBOrqU2Da1JVlngkmbuLdIGz+ypECB4dMrAirF4ZXGmJEaFlJoavJd8Moo+nPcRnzwpWakdkPOjUJqINBBNfg3VfIGbztCuISxqCkrUUGovrSLaxjzp5FDKZvKCkukd2WQkFyAGrLV4Lw1gchSQ/ddOmHThn3aiIJEZjzEKC9CK3FNKGVTMDaoYkUZ9LtoiUabfkMaaVSUpajL2vgROlc6a1AoQ6SqpQ42wLVsgKoO/IXqyqLuMOsdIE7yA4Dnf8zEKgOsz0JjBRI2CmKU3NHnaB0yKaBfzZIuWXF0Lcz0mKIqiA5ar2qFsns7wkZ6V6RelwRpL9BEXAypkbCUbCraTISGE3JDIbDgNBnEVRilsUchq1dLUCDH/cC3MNZUb2MuWWgvOqZXcQ3cfo3vSdEz5FodVxOWEGyAmMkuQTyHYkEBEAaIR4FpFce+OFlRJMpaIRvuC6C1eRxa+YTcGXIw4H0kBvG0BOjEZxCiJD6lEC5WO1XZhVszM7Q8k5wvQm0XqzQrqKdHUOD0lqQUmLoizKcp7WDQ0OzP0xGEnjmbqmGLYnM05V03ZioGrPrLtHLsxMutZqhgovEdbi4qJ0kM/KKqQwBqa5BE1Qy11FwL0pHy/4irb51Wu1wToWEH3hJapus3UPaB8c1ogKCZP04hoozGCbGuMCPYrgykNSkkiXNcCwAhAFzIVNUh3WQkwJpKJMrNttO3GSjUStFL0Aghm91Py9ycVSVaYPSZKN6Jd1CElPBEXIk3ygrAnj1FgjaJUBmU1sxjxLfi1Ms6o8kxxCtmlI9EBeB1EqrLmm0YWaBIwr9UuUClRlkUGymJHvJCkO2a2lsnPswXmdFdkQgvQad72N97Cdfde95qP8s+v/3uu3v+Grzn5f/mr+Fd3Ncg+b7k3B1/ja9uOlHuVz2284v9f6+f8771m+c+fdW3wuq97Hf9HrgRczX86Jwgsy3A6uubr7/vJt/wr+K3/X740cJVH+UUezUQtboPDt8HhD5wATvyf+Nmrz+XVruJP/czei5HnPh7xLmSDlswcThlIVjn5ScIIkP9u9UFEw6a9vvjzX+Mv/t13sNireOoTL1Lt1PQ3etx2/03MM0DRzBqCixw4MeYN77slH60t26BNiOgaNO3VnkuzrQWXn9jizo/cxpf/ycOUQ8udH3w9z3/qTPe1oRHAKqdo3Pn+23j5wfPMthb01nq89fvuwTeBy09uoaLixQfOcM+H7+Su97+BZz/5AhsnN3jdu2/miz/3kHS2lQLl+YFf+W5+/6MPML24kKaZ8vk3FF3jyM9EdsDqEhUVfhoohpaFX6aO9cThqpZN373rlTcr53HXl1CqveUMRn1SU3dd/ZQrwouPXuXOD9zI/pld0qLh5HuvI8WE7cu6uPTkFe7+4J00z7zM4tKCo/cdordRsNgywsS1msNHr6eqGobDkhuOX8/JG29l49D1PJABurW+4uaTR3nTHbdz+MAaezs7PB0DznthTpUFw+GQsiyRcRQZ8QCFyGzpju1Nkv9PZC0WIw2jliVvjMZaMalpJRWWa2F5oxrnsqnP8l7tvLjHA//wC5lhLvfd2oKi1+O5T5/h2U+/xHh9nQMHNnjumSd45NeegACTi1N+5z/5FKZvGB3rE2MiVAG/kJ/fXy/YODEkuMjkypQv/vxDzC9n5uj1PWnS5vzxyz//iNyzk8JAbPVSZ1sLhocG/PoP/w4kaOaOarfiD/+bL/GFn/kTBgf6KKvZvzBBG005LjhwYg1lFO/+oXfw/OfO8JV//rX8bhOP/sZTbJxY4/0/cT/9tZJ62nDxscs8/vGnu7V0+NYDTK7McAvfYgTS8Mw/xS0cX/zZr9JumgMn1njbX7uHy09uST5H4vGPPc3jH3saBZhC8Z3//bfz2K89mXM1CC5lPWIl5gcGSJ4m1JSDghMnT6BSonZz9vf3eOnsWa5sbXLoyCFOHD0uGqWzOdPJhMneBJxDK83ADOkPRkznC2aLOfvTCXG6jy1FIH4wGKC1Zn08xvnEvHIs6kA9r2gJIcFLg0ZbTQwRRaQshhSFNOy0LUjJ0p5zIXpx77R9YlHiVSlmPosJk50t+nYNpUbUVcOF85dpwpxeP3HwwIhuTBSPKgymp/E6gAo0KWITRGVI2pKi/CE3G2MQs6hlszYX0FroPdJUztI3StDGmBK1q1nXa5KzB3mws+kM1wR29nbYn00YK6jrOTrrLGstDbDCGkbDPq5eMNvfRx3LuTjCJQs+sb+7x5XLm2zv7uHqBdiAtRoiuOhoR75kLM5m4B1SyLWFomvwt4ZfJBGe90F0+bz3oBO2MBw6eohTt97KTVd3GBVjjG6hpADY7oxACZNrWtfsVxXTxQJKTbBKmh+uwaeIS4kytdqfwgLyQEqBmCUIyCBFG5LbJnhLXvcxgdb4CNN5xc7uHvP5fCVorwSor/vYsuXUfUS1I65ZSSoXmy2ArI0AtwFonKeKnlRV0vwwimLYFwKGb1D9Eno2C1opktHCILWFsPHbEeS8jlr2dSeOn17xkpPEqxZTvGbsWmuwhsJq+mWPsj9gsYikoEjJo/JEREskQAnrSZlCpJdQCJIsn9ckYYgpJdpcuh2XS4Q8CXZNkx4hXvjgaeoG5WvGgz5Fv6Aoimy2II3dmAIpSIPTWpFiikheY5RMacQQUEWxZFnltbCSjXQapMArWHatsVs2scv7Va3Usi2ol8jTXXlbt5NACoXz2ZghayHLiHkejU0xG+/IQmwB5O6hJSXM2jwNJSQaumeglTBtVY4nKQkolEKWL0qJoED52Bkgdu8VYdlFHztW3fKuZC2yLEGUyMYISggjKQmxrdWNs3mCqDC2m7RLSXX3RGSNspmOEq1obRQh6mycY5ZLIC1fh8pjz5C6Z/hqph+rH1vKIsk9aePVNU++XcMJaIkgSRjZWW6w019WiIyUj56QWikTTUyBxtekuhF/ARI+eea+wYca712Hl8ifRpo3UZyPdQfst++lZfsaWkdmRd5OVcTsLODcNn7nEtbvUcdtYpxiqfGLmcQZn6hmNXoeKReJ2cKzrS2XmopNX7FNYtdHdp1nqhW10TR5HRb5QLXG0jMWE7OTbGtwktpGrMo4muyxV4uMq9drA3TZXCCqvHlb1xGNjG0GYS5k4rM86CBOcE2TqKv9zAoTmrDWRthHWphusl9a0fqYyXn5jaRIcFlbKKlu9EuvaIGl0B5soq9G/n6SIumUk4uICuKIaVqXN8QFDWuogyck0daS9hW0oqeiUawz46xlaCmIWhx2aDd3hipzPNftwZtZS2nFEUVlxp1oWylUCuhciMkCywl6kvtKC8wp5BCFTvzR5JHgz/8vD/4Zj/n//ddHfupf/3/6Jfz59efXn1//P7o2btUoHCk6SC5L7uhlocK14JnOZ1SraZPSkpVz8bFNfvcn/oh7v+t2PvSPvxVjFYvdmnMPX+KFB17iy//0a9z3vXfxjh98M9sv7PLiH5/jtm+5+RWvaJl8LscSug8B8ODPPsZ9f+2NfMdPv4/gAi88cIYnP/5s9/l3/XtvZ+36MZ//mT+h6FuOf8MN3Pe991D0Lc3csfncNr/3E5+h2q/RWjHdnPPpf/B53vYD93Lf993DYmfBI7/6BKc/f7a9CegVodukRPdkcLDHO//62zh+zzFCE3j20y/yyK89wWBDWPVtky9m/RZTGu79yBs5fu8xikHBpSc2+cL/+BCzLSn07v7wndzz4Tu770sxUQwKnvid53jwFx4FoKl8ZgO0QJWMvz3yy09xz19+Pff/6FtRCl74gzMcvedwN9748lfO01/rcdtHbsUODVef2mf3hSl+ETogzNUBqwtOHDtOafvccuvrWdSBVmhye2uTF8sCvOPwwXW2rlzh9OnT7O/vi5hyIfpCZVl2mqRai7ZOjDlZz+y6VopBnjM559HXaK9aKzlQaEel0tenesPBgLSxMmq/0gkHGc0RMy3R8pXGu1kmMiuXqzzhSnYiXRXtz9diq2G2WaGAJtRU+zWlya69V+oMVKys21fgrikklBWWZWorNSUjKi3gMNuei0tn/rhbeHb290gp8bt//9MsrtYdeJsQ4PaJ336GL/wPX+lMLtaPj+mPe7i5ADF3fej1PPepMyvA5rUvb3x0iG8C1V7N+vEx7/x37+P5z77EfmbpFQPL6GCfvfMTeuslb/krd9PMG05/7kx+Y9kEKud4KQh7LXm4eP4CD375KxzeOMiNJ08y7A8ptOGuO+4k1Z7Z/oRhOaBX9Oj3+jR1zfmz57h44RJ7u3s4V9PrDzhwYI31jTGLumIymzGdz9mcTJgby/Vr6/RsycFDh+g3gclU9MZi1XSGbZGUtb5Eu27QK7BKEV1DfzAgppIWoIu5IFPlANMbosohyQiT3tqCwWCIKtc5TJ/dWc10MWfj4ABjGiazCps0/VLjqanCjKSdMIDIRaYuRXg/CmChklkCG0ly4BYkgbxeZT4GkvwM0aoyki9Hec6t/nXwnu3tLYwR7aSTN56kzHsTJfrDuh2lJQCeGD0hNIBItaQY0CkSfaSaz6irmTT2B32GymGspigsqa4ye14AByncVSfVIsBFZrGs6AdLPSOTPSZ5YsgAnTYcOXiA15+6lRMHDjDbmUPmZ7QiQ3ImCUkgRM+0WTBzNXPfYIuCpAwueGxw2RlUTN3EFCrlQlnqHR8ymKNk2iJFSEYexP9K2ZvHWpZd532/PZ1zpzdVdY09s7s5iDJJURRbFCWRNiXLzB92JMhIACOwAslIACdyAkdJnCiIAweIYQVxnAlBJGUAbAsOZUaWTI0WLQ4SKQ5N9txNdnd1dU1dw6s33eGcs6f8sfY591ZLbCdHeGJ11bvv3XvO3muv9a3v+5YqEIo1hqAKxSkm5icnHNyJLOf/X1qmb3P150OZfguRnCNZRZQyGCu/ux5VdF48TZVKyKwhAUgTwibOSVRaIcl50E/27gvknCkG+2u/8Z6I0ddjKqvCJu0tMoqMrxTcSSGkCqNxdc1oOmXSrpj7DpWLgmoDO6KAGaCxlWM8GqFRrIqfes4FRMtZrGlyiddKFyBZZK3Be5nIqoT4Mgztk3H2uMkYOzaYqirASEbFIncs/rvWqqL2Es9GAT9EddSfOX3jqLf3GEDVfh8O+Ug/YOFPe6Ti0SdkveKnbHQBjqT+zwVo6z3r5TeVDhx6sGrq38fgjUpvMVVYtOVPSpSlsrdykWkmmQxqsqan1eiMALSsdRAahe+fQX8Ilc+hlCqgrhoAPgGUBHAPASCyVMtC/JEaXhdAs+/d6soMIL6c8/IPxippdGZQMQpOEjOJgMpKYkzQw0AsbdYqO63KZ6XgCRv3fxOI63/vW6/eRgrks/QEpFxkrX16kDPyfvvhXKrc53KJSrX3GRZ5t1Kyl1MO4jNOKCiakLtS8vK8teAf4qFnidHjfYv3HcnIz1pPWNhAXTc+r07yTypkWHZUd0/Qb+6j2gMqf4ccjlG5ga4hKUUAVk0gdgnTKI7awG1XcScFDvEcKcVJSCxixCtD1KKwkWGG9KjvAMqFFMklf8kbT2Kzwd6v8e90vb0HnXMwoLhl8yjIqvj9UJ6SKn9WlANMAkAKIlHVWhevC0XwfWACyoJJBeEtxLTSMUtY1U/CE5qijBxUg99EDKFQP9UGeyELGgrShooikRT0uwB7xZ9LZK0BlBjPV9YKY6/QI3Th74Uc8Ek2qqZINUNcB/UBoBPwre/iyYNYU0sLq7t4P0HqOvnLLMlB/+AkvBTkGzmohqZA6UrIeuwfuSzUo0uH8vcDmKnWAaR/jeqLATVszs2R4evvlt+jteYn/9FP8Jmf/S2WtxfDzxs2+MagDLi3y+B9f7iuf19Pq00pDsMz5FffW3D27IECTPPUf/x5DEVrX4BdlRQYsNpgnBb/ECVSt5AimiINCoFVuyKFQFVbJqMRdWWojGZcV0zrSkyLW09OAWc0lbVYIz5/Ci1JWul0yrQdQ4oeZQ2VsRjn1t3M4guXkmLVwn4Li5Ml7714kXd94J18Oxzy7KuvcPDqEW4FNiWsAzfVhMpy2MLhvC3TqsyQbLnKMZ1NqOu6DAcQHz/vw/DVdV6mxfnIYrESWa6C2WTEbDKmtopCisdlBSqxu7PNeDzCWqFlHx2Jf879587zwPnzpNhwsjgQ/znf0XSRO4cLDuctdT3j1O5pzpzaYXtsqJWnVh3OKDEENY5523Lr8ICl97h6CsrQLhtCGwhtR+4ClXVUlZiuxyzyhExgVFeAeKP1noXOaLZmM0aVY+wss+mI6aSm0lJU5CTASEqKZevJrqJJmZtHRzQ+YauxDC7xMkEP72XCVWVIpZOTAG0qclLEzpO6Fp0z48qyN9tiazbmwvkzVOWA9aGhCx0hSWdoFWH5Vx4B4Kn/4utcuHCelDKr1YoYI8vFsiSWUpQ3TVP+riMGSU60kemWxlp08Ybs919CmLtd8ENRH4NIEibTCdqIVDkET/SRnEU6YoyhH0V+6tQOe6d2qccVJ8cn3Lp1h+WywZqauh4xmY2ZbU2xVYUPiaaLtD6itGUy20a7qjQne+/GJLL9KOPuVY74riH4Tvx2ipflbHvGqTNnsOOaJkV2z53jez7y/Tz5sR/m9Nnz1FXNa69+i1/5B/8Tz33ui6yODqiMkimtKRDaVgZ9ZOhiJtsxk9372Dp1ATvZxmdLG6S5U6anlGQaKa6UwlpJ23KZ+Db4WJYk/Xt/Vph1OQU0EaPKEVu65+vpURLfFJBNOTP6DnLckM0Bd1875F/+wh8P8U7CpsS8Vz77Bq/+yzfoA2BOmac/9dLw+n/613+Ht15qCJd9BzTTnnR87X99lqZZ4Tsv720DUPnK//kNts7PiD6y3F/x+/8G1OyZAAAgAElEQVTNF4pcsSb6OIBWsMZp3nz+Nr/xc/+iD8xDZ3wjT5c7ERLV1OJXgY/9jR/AN55f+elfZ7RV8Rf+y4+hreKbn3oBv5D95maGaksYdk/+1AfYe2iX3/z5zzK/s+Kj/+6H+LGf/yE+/R/+NgDP/tqLPP1Pn0cbzfbFLUiKH//7f4FXP3cZU4nRsF80eO+H563Lc22OM1/7318gF8n27v0zvvvfeDe3X9kf3vu3Pvsai68GFBqfIh/6uXdx6ffuslw1kBN//OWvMa4sBsX2eIJJkWZ+Mrz+6OAux3fvcvm11zh7+hSLxZwbt25zMl+gjWVrNivrKQ9d376kHoqdtPZb7W9rLg8iD4VS+RlZipy+WOr/7Z71gXhqrZ9nzypkaPoNOUDKGOuwrl/36Z6f1Q9FSln8tzZRrGc+9SJ+4d+Kub3lUqjNb3jLe80pEz3FOLt/9wwFSAqgjMaI+EKAuGKDsv6R+a0/9k9cy/0lk70xew9tQ4YrX3uT537928O/P/kz72d234Tf/7tfAmDngW2e/On3M9quaE86Xv3cG/fsy3pS8fG/+RGmZ6ekkLj21A1+72//wcBUlf1nMVqkrXLfFCRYHC947ulnyTHw7ne9i4sXL3Dx/DmeePQxbMw8/c1vsjxZcP7MGZ544glIiVHlmJ8cs3/ntkx89S1bWztMt7bY2t5ie3uHg6NDDvbv0s6XHKQTtqczlLZopdnZ2cGOxtw9OGa+XJLxJB/KxNyEdZraaioNLidmzpJtTWYuH1jPCMlhVCT6hpxqdvfOUFdT7jt7gdmpU9T1jLNnZ1y4+BCroDlZHnLjxissjudYCzF3NGFB4+egi7G/KgBxtuRsSdGIXQIBsli5aG0KEPcW2VWGoahIxfAnFeALylCtwoxTiqZpmE4tFy9e4Ny5izSrJZV1HB4WoKAYLxkDW9MxuzszRnU9+DmVhUnsGk6O7tIs5qQoZu9dWmKdJYeOHEOpbyhgnIA46xx5I8FVApJkJQzDWF4je209TXV7Mubcfac5pS1xdbPI2nuP7lzATHn/KQRO2iUtUZgeSuxZYswCPCgpImNaW3CklGXabBLyBTGBEgKF1H4ZpYWR1DNpBLnTeN9xfHTMvlsyPzoCH/6VUwq/41UYTTH5Um+KDZE0vRTi521QBkyisNWzKKpyYcLlJOdBisQU6ILHOM3YVcXQv7/9amA1q8KiU1qjYg9MrQkYqdSXgHyP0cX6IuNzwiowtaOajKhXY/T8BJ0iKYrcEpVR2QyxIeeMdY7pdIbVmhwTxhoxmo9h8MDVStbuYGlULDbSEJdTIdEIMBIKmNghQ7NS8Y1XIaGzlnWSEjF6knZoK/56GgrYGIuFSKIfNiA3YX3m9Nd6UMEaBLr378r3UM6sjXPHmL5+FBsV8aJXhBww2svgPMRvmALKpbQpc+/r156xJ88yF5hOlyExaCEa6SFe5HXsSGtAq5dgq34QWJnWSg/I0oNz8ne6fMCy+uT95cJ8zJlVylgtYLJSDGQcXWKAEPwi3idCCAhRLgp0QRY5ernbSRVlRirTob0qr4k4I/HdGiMzA5Q0qBTr994/l7eb3PrWSyu9HgABRZrP+twtzTQJwWt4Tt5vIqoyDE9nxGJc9iKIF6q1MrwzkwoWIwNvjBXvfgH1ZL3H6IWJpwrYPWDCafitavh6S7KRI6b1mKUAcqbrIHTk1GF9R6sVS2DetCx8JrWZgyZyNyVhzunEidHMEyxSImFIWqOcJWsjnoZZJM094tPHfAGke5xKDyzDTUuP73S9LUCXS/EoeuJ+ign0ZFKQBNAphd1MKY28q34yqTEyUUWpvjNVCiZd2KeUDVzGcvcFk81qHQxVr9tdFybKSbfNGCM00BAIpSuYofgo9TpshcVJd04bklIs2gZSImsYjypq58SPKRRzc8QUto0ChqQoXk0ml861SijKhshIwBsAOlncmTQEEF2S1B7USjkz6L/74KuQCT4aMfFXIPIpXXI7TS4GqVprMaUfNpPi1ON7vP8vfzdn330fxhlWhw03vnGDF/7ZyzSHTWn4SBFqzLqYHJZKCZa5D1jlARhFmWgD3/WXv4vzH7jA9gPb3HnpDl/8u18sT74ordd43xD43vHDj/DdP/ldjPdGHF055iu/+HXuvna3HIpw6h2n+NBPfw87D26zOmh49lMvcPmLbwx1wOndHXozzgHAK50ea4SZKYBeXK+DWIxCkyRbXbPEaHBOMaodI2tkGmT0RDJGZbQFa0DrxHhU4azBGkcmC9gRI8YYXFXRNsuNIJ0w2jByFc5alLJEn7Euc6I6VquGkTJMlBR53nuM0jLmXGWizlQqS+ca8exq5s0gcVAqs729xWQ8LqCwljWYxWUuD2GhfCn52oA9h38SX7LMppG9FD0FpCj7zVqLj5HQdaAN1ajGk8k+lsSmf31/wBW6tZKgGxKFUbOOpn0vWRvxbDPBkE0eWCIoRSzDZwxmWKMDvX04KOUKMdJ2HmvFRDoHKRSttcWgUwYJ9Jr/weZUFbYtSBdey5CFvpNMATU26foU2nLSSiQdOZFDLrICT0jiJ9dP7u0vpSlT6uR3t13HfLkgBGHoGGPWh3CSvWiMZuQUWnlU9thscMpJwpAKYxhQKRRAE0gBHQ34TE5iZjwkLGXPyHRjeWwhRvG+Sx0nizmt92TEVLedn+BzAusY6QqK3D5lGYfe+Q6TSzJfDpre9yWXzR+zeGvk4v9FjIzqiulohHOaNq4Y727x8LsfptpxHK/2OccZFotDrl+9xNHd2yIbKt37mNNgXC3ghID1yrhhAnL/fNUw+VdyCV067lhLP4wj50w1cmWac8Z7P0yn6q8UA4pUPDT7SVJ9QqA2vrf35yoNqCQ+d+urgDJl/cp679dESe9K8ibbpTCBNmq5PjGSbnAe9u49e3zjDwX2YfNdTO+b0M47lvvNwADIMbM6FB+4alox3q3RTtZMWAaaw254I7OLU7p5h60NpjYs7qwIrYB6y4OWelYx3htz//vP86m//hvENuJd4PnPfJv3/8R7+MY/eV7AFYcMHiif79EfeIin/smzNMctqYs89SvP8m/+4l/k/Hvuo1t1w/tPMeGbwPt//LvYv3TA/qW7bJ2biCdY0ojBbLmvJSRO9kbkmFne7di7f8b3/sz7uPJH14cBA3ZkGW/XtIeR8bbl0U+cpV14nv/dbyMj6BO/+Znf5dzpXXa3JlitaeZLjuerwa/gcP8OnY9UzrFcLPDeczKfE0qj0VpLXckkY5GsmmFf9hMMQc7mIVr2yfRQhGwsiCwWIJtTzIezvHxPmyIp+IF9/ts/8znGlUWTpLlpDNPtHaY7u0y29/juD36Ii488xiokPvCB9/JX/+qPyM89yCwWS6p6xN7eKSbTqUyqNwatFO3z8NjDjw9L7/LRJQAe3Hl0nawWyV4IaZDOvePPn+NL//CLdEuPUdXGLlnvrKzEPD+nRA6y76VRUWKZEaPowysn9wCU3yntzSmz2F8SvXzzN/7xC2xsLv74l5/e/G6uPnWDq0/dGCR3a8aI2LCsDlr++c99lj7Q9LlevzOlmDMYZWR5qtLkzZHQBQ7u3OXFZ1/g6M5dTu3tsbuzxdZ0yvz4mJs336RyjqZZcfvmm9y6dYuXXnyR69evc3h0SNd2aGNouw61WlFVNSNXc+bUGSbVmGa+YKwds8mEk5M5+3cPydowmsy4/+IFVm3D/p19lqslPhR2gjLkGDAqsTMZ8eiF83TKcgUBs31y+C6jnCdHcNZy9uz9NE2iHtfMdnd44PwFzt93lqRHLJPj0pXraB3YdzepjaVtDgTkIRJii9NamBaFBSdnjZxzilTOe732kqJ4iCqF74dN9YyPAtbJ3pc4EAtQ5pzEG6014/GIvb1dtrdnaIVMuNQMtjNS4gkoQAz4dkUOQQa5KEVoVhzcusntN6+zmh/jGZFDR0pzXOXolgtsEksEZXoJZQF5yqbo8xkpVpJ8Zi1DO4ZcR1OmgwpQsDMZMR2NsGOPqyupQQobak1SEIpCiIGD42OaGPAql3sphX9IoYA7ImWNpXbJsQfpZK/0BAjdW1JRnI+UKg5IfXxKBJ9oFkvmtaJZLKHzMPoOG/Geq4AhG5s2F4Au51T8EfNGuiqAlMqB0EkcMMpCpkjjBMyNOYpPeFCEFOhCi8tWmC1QAA1LNNJ07zWaPf60WUSrEqdJa8BEaVXUXbqAJ2UiqNZoZzGV1JtrppVGaVfy4wKWlFjiasfI1cQYGR+PWTWrUu9t5LyZkmPFwZOxVGsidwW6HAjR03qP71rCSccoVYxzxETxenbOYAuwkbpEQKNtRjlFthD7IShahqZtAjrrgYXrQRrfiYk1MOMSxX+8xw7kv6WG7sHPDfyggHAxBowTJmzPOpXvXZ95IcSNmLwmgaSSA1hdGpQZUpm8OsRpBcpYUfkliKowZHMuDQtk6q9eP0N5kd74EpksBTjrK+lBIVgaZynJIMK+P5eUANy+NNh7QDyEAtQleQ5ZyQAYshV2Flr2QtkHsTSYFQzD9kzxJUy5l/FukmPWz+qtz23z/omUuGf2rffDIE1WJe72+aug10QYANkEhBxx2hYAoch2c0QjAzKslXokxlA8uCOmxAJhut5L7MlrUbIoFIcIsl6jumAt5T9kNLjJ+Bwgeoz3ELw0EMjkEGk1zIH9GDhImYbMIZF50NzJmX2bmWNYJVgWr32VczEVkLibUi5+lcXWwFp89CLP3pDRp7Jfxa7k7TsYbwvQxZ6lk/LQoDJKYUvQcCpTK6i1xqpUgCSDsaVjGDclGTIlUQYiiFa362nnZcOZEsxEKpswWWimm9RjWZZyE8bTMdaVAjdnOt/RtZ086JwEtc4Zm2VCqbMjjDWFlqi4c3TEsmuJOTEaVdTWyZAAI+bfKTtCyuQYxFcrC9POKEUoBbg1BmeEZp9ikcIWhF1XeqDsorJ0LlQ59MqiFi8aAZoojCajNFojk0FL4dYzQLQSGrL4Wlg637G/ErPu+7/nIn/2P/1BXvzMt/jqLz9Fe9Aw3hvz+Cce5dx7z3Dlj64UcE42ndo4FNfhsQ92QpvtAxVraIPFzTkv/urznH3febYubpUtOpxo9Ii6/Bw4++4zfN/PfJAv/Hdf4s6Ld3jnJx/nz/6tH+LX/8ZvkppENbF87G/9IC/9xrf4/b/9Oc6+5z4++jc/wvLWgv1vS2Jo6KXP5VAr60puS0alSI/Ch+DL8AkDymEQxos1Cms0VfGJGI8qlEoyjYeMs7IurTZolRmP3ABkyv2GEMRPpKpkwhZKrYeAFDqwYsDH5P6WQlzFiOoCMQizyWoZd95lMSglm2JPm+hipGlaVBBQwBgBkHr/xVwSgoGJWGTifcehPzxVCan3FPHleYecsOT11J3SKRMWqMJatzHlTeOcYaxEjjJaRU4WkuTFJPs4RAg5oLOXqVZKvC2Ulv1njKx3pXswviyQ/qDrO2H0vg1FMsi6IJLPJnR+XYDTmDIhiswDpXHGUo1GdD6hkyIaQ86RIhqnB+r6RL7vkkpKXgCScuAMHXB5mfT0c8KThaVVQJvioCETojIy/blcukxXksETckj37zkTC9uyLJYCVFpjULqArzmLN0zWmKzXyWO/XwvASJbpXh4rEo/C4OoBof6zyiFvWK5WhCTTeVfNipw0s60ZWlmWTcey9ehVBy5S1TVuVJG1oevkICWUgTQ5l+eQSsKAmLWmiE9BJl4lWWvT2jEbVZA8XVxx4b4HeMfjD+FmE9rVMcfHN3n55Zf4wu/+NjevXCZ0K3oZqRzeDN3LjKwjba00XpAGUOrXlSwcjC5Tfa0pRdI67lV1RV1XJBK67ei8F7+XfqUYhc5mWK9d1xG7rgCkmp6tsJkUlt7uWwA6NSTcElMEfO5T7E0pic7SILkXlFkzqfuuOcDTv/pSYb3JDh86pmX8Vw/MAmir0U7T3fHrYqgkWf0JkHNmfntJ7CLaGbbOTam3He3RGiSrZxXzW0tiF8qalb8PbWR12PD4xx+iW3q01WxfmNAtA7de3md6esL2xRmxExlBt/BU0/V00P7zbfKgTj+6x40XbrJ5NUcNj/7Agzz/z19m+8KU9qRjddgwmlYoFE/+9J9henrMH/y9r0GC7funfPjffi/1dkU391z90nUu/c6VIftxI8uHf+qDTE9NyDFz67kD/sV//WWWx8vhnHz11cvcvnaNnUnFuftOsz2Z0i7Xg2Ca1RJtK4x1tD7Qtp0M9Smx1TnHZDyWmFqA3L5wgT63KSdp7juu/bMZboys+b5OoDDONl6XUi4eOrFMIw/0kV+G7bSkGAi+w1iHqUbYuqUaB07t7vHAhYs89/K3eeapZwZg77VfeJ2D44Ynf/Dj/Lkf/SSPPvEEs71tJrMRVWVxVmN1n/TDz33m3wLgP//R/4uTCFlrfJc5PGw5uH3I/PiIFAKTkePp3/oIk9Nw3/gRckri2VfYByEEuq4ZWLiVcexubTNzFaFZMW89rVJEEk3XEFMWpphUeOSc+Ym//6/x6X//91jcWUGG6QV56Isbbx1kkof7dM9/913uQY2wbjKtQ/zma/vntP63LkR0ScSlaBImTo6R0AYWR3OudVe5de0GOQUUmel4wmQyxlrLy6uXeOabT3PljSvc3T8QtnwXGU8mbG/t4lxNSrCcN2jti0RUobLG+0jbBVZtx8liQYiZsY/MZluMqorzZ8/Q+Zblcs5yOSeTqIxhMqp59NFH+fjHPsbd4xVXksjkbTwihYSqp6hqC1PtMq6g0idYFTi3s80jD1zk1OkduiTCWFefp1styL4lhxaVLaNRTVVVGK2pa4ezTiZI5lxYG3J+GauZTaaM6pqUIqvFguViie86+V4jE/t6oGLzZOzVO0P+DAMbaLVacfv2bY6PT1AoxqMayEwmI1arFWgIoePWrTe5uuW4dvUNHnrgIUZbI2IXmR/s8+bVK8yPjySfrMakaBgj55PVQFFypJzJ/VHRM7H79TMMGeqzNORsU+s4row0l6racmZnh0ldo12Dqxw5e1SKw/JLMdA1HV3bcvvObW7t3x5qHB8jOolUNMUo+UHqVUZRDO6jWBelci6YgcFVcMQ+pyx1hCkeWlkJY1nlnqHVI5Fvf6lNcK7HK8sziqkf1CDFrrFOgDdkQFxPckg5o4oXZwilgZcyIURCBqXNmq1SciwhSRisdQSdCljWx9G8BoQ2APdB6geD2ivlXlWmyLrEdMGWRSqc13FCgHqxWrJkjJY4L6oLT12PmM5m7O7t0YUO3wVikMZ/tpocYxlqgNSzVTXk7TlnAXT6tVXYokerJd4kotHU2cpAxGQEREyJZtHQzFckpdH1GG8tbYax94ynE0a1uxcAo2fFFc9UejC1fG2oojb3WyrAek7Fp6zU/qn8LxtscFRv6VSaOcP+GBbNEGDXEsG+rlX3NGcpGIIM5hoqVXkvSqZa61xqqpxlSFySAW2KvFEvlGdewGk2AEpRswgDUGfK1M6eKaXkvWc1LL9B4Yb48+sCQGclv1FpjY4ZoxKhuOopirVEYV9WlaWqRBGjiyx5qPf6+1cYuWFDlrwG5NaMxzV7tP+7vs5KJbenxKg87M8+bTSlyahyJucogzuRSchZCSDXs4aFpYtEEaXL3pcKNWVRSbVdwPW2AH2jpTAc++2oNtZCLvHyHng4b5zkBrLT4AwrI/ezLtYnKQcgMU+JQwW3ydxQmbsGltlw4jKrkDhIiYMEK63xKNoS71SW2i+nhNWmgKLFKkCJfJt+NmiiSF/vvfp98Z2ut5/iWjZQTjIOViuFUYpKi4nntDKMtUxPtEokRcYoqtpS1U6mcMRQ5BNmGMM8MJA6ScZ87FkRZpBt5BghJAExrJPXKwGyeknVdHuGq+Rwz8jQiWWzKjKryKgqo28xOG1xboS2lmwNUSt88qhlpg0ia3RG6LDCyHL4pLEpE4OnNRqj5CCvnBuAK2ddYUyZElCyAGxWJpplJcF0yLEHVocYXGotPzdL5SUd1sKsqq0mp7ieAtl30/tCz1iRWhUK3ZN/7YO8/sXLfPMfPSPnkNJ0Rw0vfvollIKHP/og7/5L72Z6dkpsI28+dYPn//FzJC/3/xP/7Y9y+fOXOfOeM+y+Y49v/vJTXP2SeA2Jl6AcBlc+fxmU4tRjp8pGZu3R0Aez8hqAx3/kHVz56jVuPnMTpRQv/8a3ePzPP8ZDH76f179whQc+/ACxDbz4z15CoXjzmVtc+8o1HvvEo+x/e19AjRBKzFVDoaKNeA2qchCqAtDlGMoAjVxQfQmj1pTukVEiWctR5J6qN/FUEpx0D1pJR857L8lAASD6roUWLQ4+etpWDIF9F3FOCkWTDT4qfEHc8YHcdqTkBWA0GmXEu7gHIfqSPpLwPuCyLuuhL+pSmVC57n720qg+0dn8kmsjfJXKIiMMTW312rcCRFIUUzGmzVJYKEXTtegIqpgd58w9Ex8z5WDrqfEq4qq61Ji6yDficJgNzDR6dqiYovd0fdg8+IUt1Rerue+wawsk6XAZK78jQUQTlSWqSMiakBRdyvjiBSQMpdKtRiQwFkkCxa8myPTlAgijVGETQ1Tgc6aNkSbKdNSUonS1jHRHupRZ+TDc9YQqh1WZNqokpvVDR6UoFXq01mLmq42ht9lHlc5bzCJ7VmvD3GQludFKxtJmpQimgiysPksavK7WCY5CW00mFHDV0/mAMSJxq9yIhKVZNnRJ45NiZComkzF1HVks5vjgaZtWnrWYVw3PD6XJSjrYEfE1UhmcUkzrmknlWIYWa+DihbM8eP85gsrcvvUmX3v9Nb78hT/k2T/+OuHuApLIn1VOxNh3nYXBnChrwJjBX4WYSqLae5wYKldMksseziqJTL00jtCy1rMC6yw4B4j3WVWPURlsJT5FtuvIiyWxaSi47vCMxA9JusYZOXx7kOMP/qvrGC1T6qbjMbOZFJ1997BtG7q2A4QR3DPseuC/soaRcxAzR8dz7h4e06XM4oWKU+efACJnz+zx5Ifez0MXz3L59W/z4vPPc3R0xGS8xUtvvsqpR/f4+M9+hN/8uT/g4MrxAOr0iVtvnaCdQlWyXp74yGM88oP38/X//lmMVnz/z3+QN79yixd/7du03qMw7B/dGcJLbAOhzXSLjqNrx8RQpC1WAIrl3YblneXQFV0eCHPvyteu8dgPP8qlP7qCG1k+9FfeN/jMvfV6+MkHUFrz9P/zMqFZ7zNKIf61/+OFIRFNKnPtGzf59DduoHKksorRqGJUj4eftzps+P2/9wXscsJsOuVksWBxvCzrGVROnBzNaY48cwsVitV8TttuyIFTGsDT+WJJCGXqtgLKdGZj7SDjT6lnv/Uxu3yK0ruTnsW6600pIKQ+UKXONINX3VDUxijM19Kxz71mp8ToECPRezkvYhQ7hJhYLpfs395n99Qtrrx2iYODA84+Im9psbS847EP8H0f/jjvfM+fYee+HappRVCSeix9xHcti+WS45O199QfPvMiajRmOh1TGwcxsb0Fp7Z2qJSi3pDfdssFPgR8Jw3WWIZniQ9TROVM7RwjWxG6wKr1JK3BGFE9KAsqDg2Vfls+/asv0y3DsEfX158Cxg1/Zrjfa9HOBlDKvYl2vuf/v+XnZLH6sKpXTSCWKFkGNLTLFosMJnNjKbNySvimYxlFKuV9oG0ajo5P8D4RA1T1hFN7Z5hMZ4xGY7rOc3B4zMlqIevAB6Lv0Dmxf3DIYrHA+4C1ldgpLFdUlSus/JpRpRmPHCF0jGrHdDzm3Nmz3H///YzqIygY+ZZtsPWU0XSLydZ9TLZOM9ErYjohLJe0h4cc3LolzHkzImsje2V1ArGldpCdYWs85dTOKUbKMR5NMNoRfKBtWtrGE7InZYkNxlZUtSHFTNdkUIGUZe+JfF98yaRoXqsAhiddVCohhGGPHB4ecu3aNZRS7O3tcfH8eVKOuMqwXEWMlumhq2bFjZtv8uorr3DhzAXqrWOaxYqTO7e5+sZV9o8aUr1F9IrQNSgnAGvMwkRcLhc0XYsPodcgFRSqT9DUeqnkUgOUQlTSFGHRGa2ZjSec2dthMhqR7JKqqsjJS+6YRSnSzo+5cf1N3rx5i8tvXOfOwV1a3xBTRIVMilaAppggyQRGnbLIOcsXsQej1l5ZSt7g+n8zJe8sUx1L2ayVwhmD60kH/z+uzZy1b0JlJSCGUa7k20ZYfkjen1GEEIn9lNFUYiaalFSpQ4RRZ5UoK4zpDdo3rC/oAV5V1ovUL3HjIwygwIC4qYG5pqRAksY5mS4FWt/hY5AciYxVGmMNTkn9YQvA2YbIyWJBXY/Yms7YObVH4xuW8xWr5UrsOPrhKFpjVMZVFePxWBqndS05MAprHCokrHOEFMjekJ0hWyMKE4SZpEueH7vAarVi5SO5qum0YhECs65jujVjd3trOKt6QsQ9z0vroR7KvZd7uVcD2C4F4mbXAvGcl+FbOoYynEOei0x5lXqsC16AIGMGEAkK0Jc311cPNEmeobIu54e8ryLSXn9pRTKSk+ssCz0kiEr8BI0WNr6PEZUjoQdtN4srrSWP7229Sps+FqBSmFIZdCr1g97woyt+gaxta6SRn7ExkpN4/mejyrAZyS1TAfpGlWU0knzCObf24it7VCtN0kIK0tmUhm7Prl3nFvLnMgX+nvsI9JZmMHiprTeC1Iupf1Z9vZQAVawIisolRAHUXcwkTDmrDSnJ51HKAsIabNtI9gLkKQy+64ghEaP8nBgF/usHQchZrwcUXD7SmsQgWzqLtYHWtAaSVaSkCdmQYuRQKw7I3FKKm0qxrzUra1kEsdA5ynCUoUOTNQQl9YZSfe2Y0dqSjHgEhpTkuac+ExH1DSUfzD2gWPK4t7vefkhE7PHNNSoboNDHE1v1hJmrmFYGk4XBZJ0kwFVdEYIwKJIXllzPpqvqitFoxHQEq6ah7Y7xXKMAACAASURBVDq01jhXo7SMI4/Rk9qIdZrKjjBOFxAsFlQ2sTebUI0qnKuIKdFUGmuhaRSh7cS3yCqMMlhl0IahIxWtRQgVEa2km2EUGGuptREgAkMbIqbVmMpgsmE0HmGtLZ4WGqdlcygUKcmYc63MIOs1VmG1k0ARIyn3Hhq9TwJQuBf9ItcqF+BOEuyYJQEOIRZZrARaYwxdkVvNzkzZurDFV37p65QzR5D5DaQ8rAJf+5+/yuLNBbNzMz78H3yYd/3r7+Jbn35ZUk6leOTjj/C1f/AVTq4cg1VDAcBGcHzrBt8YSr5xKK+D8t7Du1z63OvrpEnB4euH7D68h/rCFXYf3uHg9cOS/srhf/fSAY/+8MPy7TlLEp4KG0uZQZKaEQar0vKctRa2jjLSdenvg9Va2Dxa/qwVBO+lGFV6MEtWpkzuM0KU7bseQkNGgKJiQjybbpFyolmu6BpP14nMShcwMCYZ2x1Ll80pjU0KHTMqJkAOTTHmjqQQQYdCAy4eO6l0JPQ6qQ8hFgBWQJqBmjyEA0rSVICzHgxTa0BBZYq/BZDz8P06F5asdcUQXD7HatVgrMKN6gGE7Q9Eo8v4eV063333NOfBC6HvnkinqtCXVZlkaHIxf81DEqsQGrAPIitPZHwUMEhbRVKazgcq51C2JilLLMzSkBOLphM/AO3EADQFshIpvI8Zo10xKoWMJvbtMWOGvUgB1tAWZcR7JSlNQAC/VUzSYda2SMEzIYOPkS7FYaKvdRVN0+K9AGHei6mvMQI+xsLYEg+oarg/oQBQOUZU2rDS1lqOKKXF7FoLa6uqXPEPUWsAoGxf6dSY4c8irxWJfCgNEvHIa+jaxMonsrIoU4GpCovSUNeGrrMslyfM5/PhtcY6slKFxWKwuSKbXEze5XBy1jKuKqyCHDyz2YQHzp/l7M42q67ludcu8dSXv8KlF7+FP5yjuuKBQR4G6xS3U2JM6KrCGIcypgCEAnxkLQ0hnYXZ0yfludc8qj6kCRjbboDuwmxbxzlXjwZGo7GObBwrnyAUs9wsrHFbV9T1iHo0ZrlYcHJ0hNpgEChbSQdNa9qYyauWedOWmB/xxexZay1+qM5QVw5XWazW1MZSW4cGYswsmxa/bIeiU5oMpejQmrquqUaWfBTxUQrdbi4sOLdty+Qs+pbkcGZceN9Z3veT72b74pacuVrhTzxu8IpRdIdeOrcxck8pXJKk0HjcpABrJVHqmXJ+5e8BNBRS0Hzpl77Okz/1Qf7SL/wYSiue/bWXeOjD99OcrFlq/fXuH32cVz73OqHZYEEJcjUUIP0vz+Vcy6UDmxKELuLpoLr35xoNKQW87whRRsvq0ildzJfUBJRTzOcLrl29zsliCR+QPVVXNblMYYuDB6kwAIzWhM7TNU0xun9L1ZeHekT64EUir5UazgJYy19BtrWc73lo2sSyr1OQBhVlXfWzxaNQ9gZGc8821UoTfeCNy6+zbDuuXr7M/uExZ9kFYPed38MHfuiHeff3P8neg/dhnQCIzdJzcrJicXzE65de4eXnX+Dm9Ruoj8t7/L9/8X9gdt+Miw9c4KH77+fimXOc3t4j+8Cq6XjjzVsDgH3wDy2rpqNtA10XaJoVOTZo5fG548LZc/zFD3+MJx98D9968RW+/tprNOfPcLy7xUnMHB0ccvf2PsujI+habBI2+fzVwANPXJAuPPCD/9kWAF/4O8fDIxAQUORNsoMk1sQQiV58oKqR5H3i95kKXyEXkENem6In+bYwk6IUKajCBNID8yBGKeTIithFWtWxQOGbVnI/BfNYTPpZM+djNIQQaRrxDVs1EW2E3+19wreZ1bzFe/ElyjHgKo33Hp8yCUVX2IlKKXIK3PUd41ElZ0EMEg9XK+bHx1x97VU+/zu/xcHRHN5b9ogdM3IVxp/gjzyHesX4zB5WT7h9uM9q9Sr7h7exVY0d7aBH21y9ep1Lr72C71acPb2HzpGRrjl/6jxq7xzkzHK54OjokBgafLfC+4acA8FrVqvEYnGI7xpSFBBXGcV4PCElYVpaWxGKn7S1NSjJlY2yGGPJRUWTUub4+IS2bTk6OmI8HjGdTvC+K59fmKf9tO6uixwdHXPjxg2++cwzHC0iJ4fH0KyYn8zpkoPxDtHOyKFlt86gMoE3ZW01Da1v6XppN6x9uJC8LW4gU/Ke5Txvg8flMMSwyWjErK4xzpGVyCjFw9oDltgFbl67yh9/9avs3znkzv4xi8WCGIJI8ACVxMPXqpL3IPJVHbM06pPUe9FLvp1jHNQdqHVupyjvM6fSyJAmsUZimO863oKI/4lraA5RYqIko4MKiSwFvFWOnMXaJyZFCHKoxBzQ2tKFLFYEQAoy5VrYRqXBJW9qnSuzJhH0bDmF1BabLJcetBggeqWGZ6ayxAlUmYRcaiyUsOyXy6VYcqjCpC8/a7ByQRr0zlhiypwsVlh7hDEGO6rY2t0BZYplk7xb6xzGWmIK5DIo0TpXvDmt5OBZFcWH5NJuPGY0nTLdmlEbRe46uuUc76PkFFVVSDKKlfcEoIue1VJYqjFGetY/sFaI9SnyW0CydbNP6ouU08CW0kUJlxVSXxs9yIJ7wGKwEkDqXjWwy+V+r492yUUUPVCXCzilhueQSv2stCZHGX4SFUStiBqS1UIw75WCIiYlKpHGaqVkjaWET0HA2kI0EHBXvPVVLExJxJ5KURhjMRJyz4KFpJLk0VCmq4LtJzsX5aDSWrJ0Y8Sz1AnuIAAdxCxrp64sVWWw1uKck/eLwRSVSA+o6qzFq72s3+FJqfXfbbKL77HJUJCMEXuY4fwqSiXEzy/Tg3NStw82q1nAO6ssWYMmoExFKhYGWlUoXFky8vmiV8SoxJ6HsuejJidNCALO+ZDJ2RKi4DU9M5FSs+keaOzXiQeWHfiEMo5GKZmQrTRNEgD+MGT2U+QOcJAVB0mxirAKUucttKbRipaiplJSI/cs4dx/Zq0LoUUT8VK3KT00bjOpPOt1I2LAV77D9bYAnVFCnTQWGSWcEyqUhCMlaq2ZVI5Z7dA5kHPEWhg5h3OWRmV00kSE5p9jxlrN2Dlq5wgx0hWDU6c1tZUiyvfEUi2Dw43qCeBy+GmQrlEK5KgKah2IviWFhuQbQteWZNegtBXUk04CW6jIzhWTzYRWooc2pRAaW0cEtLb4nEGDsQarLbayAy05k/HJQ0Hze228UhoTYJQtCkvU4gcRClNNl02aStebLBNue2aTSFiF6SeBJxF9h+/EK01rMwA4qkhtq5lUG83d1foBbiC1ALeevlmALMXy1pzLn73EAx99iG9/em16/MbnLnP8xqF0e/1mIbHugPRU2s2OCHkNBg2/vl9kI4tf+qEQBOiWHW4i3k/9v6t11McvPHbsSshHDE5RZay0EkpRXnfvjJIDwGZDUmEw+yTn4pWjSSGSzNrXEMAYizMGnQ1Wa6ajmlFdyzP2AevkIBQzzkYYZkp8EUajiSRdPrMyDT5LgpMjZSBKR0gaH0ROYJWh0oY6KCpt6ShmrlqJvMPLphbgxTCZTDBBbq6xmso5KdLKOrNaQmVMstFVvLfL0QMIg2xKFb+88uysNVCYCjklNCJXmE2mbG9vs7W1hTZGuvghSLHQKroIoRSDSqcNZqOSzk8ZLd42HTprAeqDMEFtKURjzKXLAlkHwfNYSx1ilgDsy0GTlCYqObQiijaIZ001rlBuRO885VxFTpGmbcWfRluCUoSkyNoVwFsVVqtBW/EvUyVpyEZJvMt9jwjxE3NO5PJWo0sxvugizims1oMkI+ZEiNAGNQB0s9mWFOxZiQRLJ+qRxaUk+zyD9zJ90uie7h1YhoRxNaHryL7DKhlgY8gyvCAnRk6AMZ8jGE1SMpoeq+i8yLL72GS0HZ5n13m0qUk+iqSsAPlN68kp0kVw0x1cNca6ipihaVusVnRNw8nREW3TSMKmNcmJVLcNAa0M1XiMnVQl0QpUWlGPajDQdS05BO7b3eXC3mmRlh4ccnTlOleff4nFjdvC1tQV2tjiJ9lP55TEKCtwVY12Y3Q9ZjSeYEcjgrJ4hF5uKQepUqU42ujw5kTwUcx2C7vBaE00ZmD+AsW/UOOTDMHwCUJWwtDMwprc2dnj4Ucf5fR9Z7DW8dprr9HFS6R2HYu1q4s0VxLANmR61mxOuRhNG5E+d4E2BJquY1xZamsIqqNT4jHivV8PI8o9C0AKDB/WnXttNdXIDp9nfnvB8Y0THvmB+7n+zM174jlZgO+P/0ffzzd/5Tle//wV6CLv/OTjPPHJx7FGD0BR7mOqtuIXuQ45AOxfOqCeVmydnXJ0bUFGpKonN+f4MoRizQaTR+IXni/+L18ZEv7dh3b5/p/+INefvYlf+kE6s/vANue/6yx/+L89tVH/lUaRtcM7GWQ5ZboZOaOTpTIyJCf6PyktcNYIY7oTX5j+jFYkmlUHKmCSZj5fcvnyFQ6OTjjLY/LaqgbjQBkqY+i6rvghgTOOFBPzkzltI4Cjc6UBoqQFSinCpQFVBh5lMXrfLJLu6XpnAa5jkYX2oLyw+dLa56dc1jqCF7DIF2b+OAvAoZXmzp3bzJcNRweHzBcrKADd7JEn2H3HEyztiDf2j9E5YVXi8O4h1y5f5uqrL/PNr36Zl595hsXhIT/y8Y8C8NXPfIo0yuydPsWjD97POx97jIvnLnC4f8j+rX0OD0/Y/qnTALxx6WVMNUa7MaPJjGrs8Eee7uiQsbM8fu5h3nHfWeY3r3Pr5Ah/5izqzB4+N3hd404/wBmzQzC3aBcLVt7T+iU6toMh/CZgkHDr9YdBMvoozTAlQL7WGW1FYqaLhEUGpWk5bwqqajToIfnWmCQAntU9872sSbVmBMqXMJ01itCJXULlrADKKRMC+CgND6XWRX1VV6SUuXswZ7VKoI5JKeNbj+8SMWR8iHRdQ5x7QuzIWdQe/cTSXKwxNKVRqV1pTIqn82K+4JWXXubqyy+zDJHJey8AcHi04vikYTW/hdOJ/VOn6R55J488+m7Gk1McHV/n9q03OLxzFzueosczDg7nzI/nssqXRzjjWB7OMclCSiyWxxwd7bNYzGlWS5pmISoDrcg4QtT4rpEhL0aVqdERpSPTyZjReErGcvfwRJr7yZMITCdbVFWNNTUKKZ5izBwcHJaGiGQNxkjc6JnMMpwgYHByNofIfNlw+eo1Xrl0g+O7h4xI+NaT9IhOj4huhtOZ02NZU8erDucqdqdT0Kb44Al00g8T0yU/VT0zjT4MSDOh6VrqIo3VWjOuarEX0rKWtXVSEaeIXyy4ce0mL7z4Ai+99CI5a46OG0LnBQxICaMdlGEZNlMk7iKnNtqSQkRjsMoSchI7iRI7VUZY5yqRijdWIapIIV+sLfr0v2maPxFf/7Srb8cynC0CeMmlyEmTs6HzmRgVFKmfNg7ftaCKp+xQCIPKRop7pJ7czINLJT2AcT2LRSuxIUH5tdIBLXaIBUjU5TmQiwQyizoqbNRGOcnAL1Mk9qNKvM3bRg/+1b0lTlQKnCbGxIlf0XYtrfecPnWK8dY2pjRrm+WKEBuMFXa/6qIoGNoW0wmoPxpLEzIFyc19LEMxrAEtn00ZRZcajo9PSG3HznTG7nSL0WgEOhGaFUkrKqOGART9vTX9cO+0BnTkeZVztgc/9ZowkJWi9Q2g1rLOAtD1Nh894USbMlFVF980VfKMQqiRGqb3s1sz86SJVVinxZFfAME0AIXGOaKHpBXZGpJRSITI4CyZIGtGZZLOxJAJKCqtpO7URpQ3ZIy1JBPJWbCFDSVtsTQqRW7fiFNrCSnlPWljhdRS7L3SwLZikFbnIlfOMZIoA1GU1Impx0eUGkhPuhBUXBnylFIShZ2WYTubQNzm9dZnOeQQ/X40Cl07rK3oJd+mNA8HVLLsLYVgRn38EnZcRT9YtBpZtHZkLNpUGFXjrEHrihw8KSrEX99JLhwVSjlUtgQf8W2kaWWoUBsC08qQKCMPJFowPI1UsI8EzDt0l7DK0sTMiY94lVmkTE6Kw6S40yT2USysZRUUyy7TJsMiBHxtCU7TkkveqKR2iwGTC9O3oHSqrGtCLM1PI/eTPARLUYwJ7vOvsgF4W4CupI09MC5Jbk6Y0o3WKWGSeMUZ1siipuhzfSeHZRBDPWeNsMqAFD2h69A5UxXQqJ96ZJRshFjutYw4N1hbxg8rGfRATrTNkg4tDYoUUSlggLEz4AM6i6SgL2YyieAzKQuDxFpDzlBZJwaL2qCNoAR+0L/L/yWdium80Dc7320k2OsCpbhmDclyosiFkzzc3s+h3xCDAenQ2ymbRon/l5wgengOgxGxKhuFNTtifGrM0dXjEhg2UHIyZ777LO/5ifewdXELXdgR3XG7Nj3PmeWdBWvj6fXB2f97j7ANKPuw6DZXTt9lksR4zagowB6ZalJxcnOOUhCawOTM5J7Xu6kjrHqvJPGGI0uHIhV6tramTJXJGz4CvU+GJNBJ9YuX4V70b7aqqrK+RPJmbQXKFF8tAVpyFnajD4kuZFJImOSJKTFfrEgx0K46QsiD8XeMiRBaSdydJvlA6710vkLAZtibbXHcJU5OVoTU4oyisiLXM2iqqsJOK2pVfAaM0PP76ZMpFTCrfG4pNoqnVWa4RyRhMZki6dNaiYSV0q0ta02k7BGnDdvTLc6fPUc9HqNsoWMb6eb5bkHjM6tlQwgRY+Mg++07kcZajNJ0XcBmYSUa64bptqXPJt6TYoy2boIMewOyNkSKr1hWRdIKURmaCDhDl5B9Ti70cVmznQ90nXj7Ja1l0AumMJlEDluNx6j+UC8ShaTlfaki3SBncgJbOqG9OXpUELpMm4IUWCmSsgTllMVfbrusudFoUkB4D9lQVyO0dgXULgzD2B+MciOSUtStpxrVJO+J7ZKxVqgYSN2KylpUjAKckGijDHfoYsQVQ2VT6UEqZozI7mUPi0dE7FlpWRX2DQO7xlY1o+k21WiCcTVGi9S/aVccHx6yOpFJv1llmbyHyD1CFyQBsRaXLT502JgYz7aYbE+JKpOCp6prLp49zyMX7ietPN/6xrNc+9ZrpOMlZuVxtiqsyhK/CqVcbBJKLFSSJI3GY7a3t6imO7RJsfLS0SQmZFJ3WXQFqJZkL94jWY85lQ5pL80Xd2vvAzF1xJyx1kmCmBXayiQ44yrOXXyAD37fk9x//4McHh2xfzRneveI9uRwiDvaVmWNr9miztgCYIoUEyPPJ+VEioEYBaBpi2mzLRG06wKrVYcyss/oSgKrpPDrothGaK1x1hLCOgn48i99g0/8Jx9lddTy0m+9Kt5tOxWP/7lHWO4v0U7TzjtC4zn14Dbv+MQj5b6ldTKnNNpYrINEZPfBHVnn4xlxZkkLuPnyHX7g3/k+vvg/Pkc9tXzPT76XVz57hfF0JnskJaaVZewMi+UKt1eRQ6Y5bNi+uMVH/r0P89rnrxGWE7Q27Dwg0sn3/fh72H/9AH8yYev0ZF0YKPixv/Z36LVZSrRbOGswONSq41RseGRmUEc3aU/u8tInb20eWnzw0vfy8muX+K0vfJ2rt0/QKTNSkZGSAVGBSJM9x/MFMStOlg1ny2tDKse0KFHKvXdo5xiPx2itxXqj72wXsE0XNrfqJeI5i5wpS/Own9KG2ojhai3N7/f35pCgXIyYU0psHsy7p08xPz5mtVriy4TAiDB1jFLCmgiJdrUkNGtwudu/yeXnnuPoylUUGaMT5I5mfpcb117juW9+lVdefB6/WqLjeq3FRUOYB27dXnL86nWuP/ttzp89R/SRZtkSs+K9CEAXVi0pGaxyuLpiazrBq4bj+U12p1s8fuYsVYI33rzO9ZMF/vzDMNomtwrMGFXNmMWKSVKEnY55DqzaBbFbCUDXs9+5DcD5Cw9CTmUifCQlL8y3LE0nYXcIu9gYAQWEHRmH/EhyjDR43pFkCrwqjUOrxTal9+tCQcrCUktRGtpGK6rKMKorxqOa8ajGaI33gZP5iuP5kj6jTIVVJ2siEUJkterohzAFH8VuxVlhnmsrTLQCQhknFgbOmtK7TGgFlXOMJyPq2g22Fdpami5gq4rJdJ2bHd56nbYLnMyPOb27y9lT57lz801Ob2/z/7L3pjGXpul91+9enuWc825Vb1V1V9d093T3rJ5xZ5iZ2LEtB0eKCImSSDGLFBAfAgSJDyCCFAmEkD+ESIYgQIryCWKERJQPCMty8IqTeMGxM+NZPHvP9N6117uec5713vhw3c9z3uq2x5EAoSAeqbqq33rrPec8y31f1//6L8vS8mS9Eemogf1FwfbyISYZDpYlp08e8+7JA4bO4frI0DvGsWcct7jQSpOeEjF6tJ3YrzA6R0JY0SEGrh9f49lnn2GxrDk8PCIkxd27D9l0LWhN2w3YomaxXGRw01BVizwUEH++GBNVVclzlxJlWTFmX7uUJITJUGGrisVexfm6wXnN5UZ8/MIw0Gy2RD1w0Z/RBINJnst9Q11XOGU5OjzCHOwxGe2nGPI9J+uTQVJUJ0B9kskJQJiTR2MEFTBJan2ThL1NlBohKvGPu//tN/mFX/xVvnPvHZxS2GLBgwenrDcjZ2cXQMTHEa0ii2XB9educ/v2sxxfv461JU+enPDOW3dZX1wSgsj9himQLU7ivQxskRlOOU1TfHvl3pSERivgtf/gEOSpQ03Dod2XpLHPjOAgbb9zknKpTcnB/hG6KDCFZdu2tP0g11hPzb1Dq511kCktprQiMySKxU1RoO3U6wl4pSfWHQJ6hAzszV7JeRgSyV5qaWfMb7SGmNMbo3yHdw4VI8vlAgUUxuLciFYKn20FSH4etHjvaKPHk7BVyfH1Y/aPrqGVodlsUWbD4EZG7xnHEaeEwR58QNk0r0dPDSFiZOwc2hrcMEDyuK6j36wxIWC1Zn+xZArNslaG2SZDmbsk79ybKrKXpsrnKeY1dQJ60pX9WPqsaa+bzQLmOizO5JT5JfL+pa/0uyEGtBbyzM72I87BneqKklrKdQG8UkzS0xDB5IAFY8BqklHCFIwBbfMQj2wXoeTfJI/Iq630Pir3/DMpRk9MP3WlP5fXjCSSTZkFn/snRGFkraWsaqpC+tlxGOR+yz2ZVtMgNBMxcr0qtTYyWCERNHi/s8qQIIg4g4LTuUcJ+URrk/GgK3VcbrSm0EqjJ6PMqaZIYDXKWlRpZ8Wf0RrD5Ou4A6cnpcksV046g+qKpANFaSmrBcZWgJBcjC6xusLoETVJ2BOkJLRXrTQuwDA4mralaVqGMJKiJ6pKQNWU0MlfKXXyOQgaHKTBEceRfhi5GEe64BlMojViY7BWlnMV2aBpk2FMCpcSXiUGFF6JjzkKVNIzeK1CoDYGm/f4aRmTWbJ+6lnU+ZmZ1o7pdk9XF78/4Pj+Ete8QYrIaEJ65WaRl1dMFF6NEbpflDQ8F0bxiYghL1BidCqTYS9IZAzi/aZLpkQzZTRFVYmuWu1ihLXWVHVFVVfYQrzqnHO0XUMIkbossbamLi1u9Ggivu3yNNqiVI7DVgaHwhnNSKIsC1KSxUlnYCklkalIgRBBZ18yrTBWWIUxKrzLM5nseTTlPGTtyR9w8tMErsvinr0QVH4wd8bgKvt5yU8QryUDxoqcE50lpXqmdG6fNGwebHjxx17k4dce7W6N/POV0fzIf/wjfP3vf513f+Nt8ImX/6VXeOXPfuSDDy2yKavJcFN+0FML73yTIU3zRDVO04dTOkdaRy7eueTaS9d2C3RSHL14yN0v3AUUF+9ccOePPze9CgDXP3zExTuX8/otUc/5XCEL43TL6yu3/w6syg9MukLZzT8/5YW1LGuGvqXrR6zR+CrR6xGrNdbqGfxCybTD+5CffY1Kis2mIUYvUph0tfGS91yvltiqwoatLNpaNpBaaW5fv0FZRIZ4wrgZMEiAhc+LsTGaxaJgv1hgyxKR+sv0c+eksDtjRml8DmlJOYloBr64OuHSkCYhAvNUUKEEFMiLtpnpugpTWJGTJEdoIhGfiyJ5HR+EhRWDTLtKW1BamRKYUqaA1haoLKubGg0VxQdFJBNq9juJE+VcTUw3AelckLu+tAZjK1zSNC4yxJEYhFVkcgEQvMgyQk7PCwp8FJZSTFqA1qRyIEsOp1EqL/iBgLD8phtai8MKMQlYm5948VxgkrWpuVAMV8xylTIiOYpqTnAsiwqUwTsxAi4L8VUIXoAZjEbVS6rlAhMDJh5ytKxg6Ah9w3O3brK/rDFZWjv5vQUUYwi0Q8+j0yfcffCQ07PLvBlI4m0IQYoxL42PgLXSwBoMZbWkXO5T7h1QVDXGFGgVCW6gaxv6thHfx5zSrTP7JPn8KxlUSJL8FoSdU69qymWNdwOkyKpacLja56Ba8fjxI974+rd59NZdymjQi325p9SUfpTv26kAREDm0XusdhS5ENNaUWojKXgoYUIFkRap+RnIhXYQxpEmA9h5491Rb+VwzuG8l/uxiGhTUJYVq6pisdpjsVxx50MvcHB4DVtISEBZ1hRVzbiVqancA5NVwHTGxdiA+SnOBZ9K2ZtD/DR779ExiM9FSkQfCF5CQ5RR89qmrMFWkmTbu4F26AgxYWyJD7uAhwdfe8Qv/ee/zqv/yif4i//Nn8ZYTXfRc/dLD3n9H7/FP/0fvsJn/o1P80N/9bOcv3HGe//kPT78Ex8WMH8qUrSmrCoSBud3TIn5jk+J3/ufv8pn/rVP85N/+08RfOTNX3+Pb//865mtoPmhf+fTHNxa8eX/7stoNAd39vnhf+9z1AcV42bk3d9+wDf/wV2KYpGZcQ260Lzw+Q/xtZ/7FmW14ukjsbr+EbmuKaF1RKWRvWVJZUviZk3dPOHaUU1ROO6vz3j/8XP/689zur6gaUYU0jjL2iiNREgJr2D0UERFVDt/vMVqH52l1MJQiqS9FYUtWC6XLJfLWWr9lA9SBrkniq1vRwAAIABJREFUm4upOYy58ZkTuvMgCUxmzaRc2If5HpB6RX6pvCHu9m/40f/yBz/wmf/g4/ip/3vmz7/BBW9w8f5vuwW8DJ/88Vt8coYqr1wRvaROigJDGAY2jx3lsKWuSowqrjxl0F5u0LVngSIMHaNJNM05KfU8d22PfSJvvfUmb9x7wHZ5A7U4wMVamIhYYhS2wKKqUCuL1g7bK9JYybl6H0B348ZNqXGk3SFGYZoFPwKBifgW8+BJGGkjoKnKkrqu5DoH2b+Cd0Qn/34KejBKBs/G6DmtLWZrE1mRpLgXlp0lJo3ziTE42q6l7UZSstiilKRpyKEPIzgHJmCLWljXIUrdq0ReaIxBmQpVqNyvSSCVnprKzIxRWgYr26al6aQBN7nh2NiCaweHFGPiOntyTfsnKKrs57xH00WU3/Lg7e/wzM0bFFHhx0SqNMoa1ODoNmuitzx5eJ/t+pxm02NYiW9PEiZcTDmpUFnq5QFlndi2DXFOZJWnQSnFneef51/8iR/nzp3nqBcLvvDFL/HGW+8QUxAGY2GwpWUYBspqSYyK1eoArRRd01PXF6SUODo6pK5rjLESDpZDCMSHNqJMya1nnueTH32B/uwRfe8wxRKVLM1my+gDUYsXqvOBpl1jfeLo6IBq/xqLRY02iuADMYwZWBDpuUphrv1VZtZNAEVMIrN13tET0DpggyL4mL3jIPhIOwwUwVF4z8XDE776hS/zzYdvcfzcc+wdHNMOA5frDU3bYIxCaTnXVbmiKkuODg949tYtYoSzkzMuLi548OBEzrexDNqy1QavLEYvMAthCSud8nqY908tJIKYYh7kyHo2Je7+YccEKF3tk+Y2JJMXArLWGWOpFkuqxQJbVSijses16eJSQqsQ5pPWwniVdcFgS42tLKiET04YqGWxS6HO7NgJnBNghLl5nvqIlIfeEwsKrhIUpgWP3B8oikz2kIA5UYMMGqIXGWWMIrmMufcIMeFdIDYt5WZDUdcc7CmWe3sorSXsom3l+71FmYKqqqiKEl1I75pCJIfcz4Ocoe/QWtE1ETcOpDCSxoFSCUOzHXpiSPioxEImq0EIUt+leXC8S54HNQ+UJx/u+RRMzKuUJleBKydHehixoIg45+afqVS2EQoRn7ywPhVg1c5zXesZEEzTa6WUgd7p3slD7pggBmE6zkw1GVgpKwPo0iZGL2n2SYsvs7EWjEb3AqanTFOa1GEpMdvwzGDYDEJm39Tc4cvnMlkWO5FTdn220hI4OFlXCVCaP0gG04wxcOUzqzyEvQqETu9rCrDQWhMtGUy/+ivboFwl3UjnJUCi3t3/cisHUFoIFkWRpdqyh6io8/Mu36zzPaeMRRnxoFPJkFweqptEURoKW6GVDPTlHjLscNqd17j0l0Zm1jHhxpG27WjaLe3Qgh8JC6kBAw6L2BukbFUkwL+FMUC7oeu2bFzHRfBsomeLZxvkXtlGWMfENiUuY6LJZBxPAmtIRkBKo2WGTgjSZ1rx27RXhqYTTCf3/k4iv6uNp7MuoPUfoXD9IwC6fMEneyaZlOzgaqEa58mcEkqii2OW9jmqheijdaa9Zt4qKW9ORZZc6ewNkZJM81arFfU0dXYj4ziilKZeVKyWS6paFtj1+oIUPcM4sKgqlosFzlciI4kBhwAXJhvIRjQeTYFiUGJuLN5EeQKQHwofxEeKwsrmgBizS5CEQSsxJqYohK6LGBcSs6eLzhHkOdJzajBVvhrTvxFKtTRwWmkB5eIUzyzeZSjEp8wYSSvMD53OxfnVCfmXfuYr/Phf/zH6i57v/cr3GC5HqsOKl3/iw3SnHbrQuMYRXOTwzgEf/tMvv+96T+JVTVLZ4HBi4elpUpDTSfLnQiuJok6y+cxHmgnlvP6P3uQn/tM/ydu/+Q6nr53w0X/5o5jScPeL9wG498X7vPpvvsrH/8LH+N4vfo8bn7jJnR/+EL/5X/zm9KPmqYnKgIoxVxa7K6X+1YYEmBfW/CFAibQxIbWO9zl9pyzQpoQkcmwXAvvLlQDT+UFW02JsZDELSfwTtAZbmMxMkw3cGD2hX0xpRBEBeY+KFdX+ktFu0Rdr0mVmUVp5TozSVIWlCJaitFR1CUTR3+e2XinZSKc/C1CSMqNQye9KM8vopkWc7GWkZXIn5yxPXBBqux9HurZDL1YinfHigxITjN4xDg7nHT4ElApZvu3xXuFSxBDQwOAcKULnAtumpfcOXZTEqBidQ6eEziCYyejtlMolMgNAG6wtxT8SJ750SajnMTh6L75B3o0SepGbVLlXbAblIRkl0mRZgkRun6dBRfacRCkc4n0Xop/l1LMvhgv5kZhSUwUQRVp4JFnWZIB/xyTxLspmlBCJqxGTVAFKZSPSE/UGI6l2eyvGsqQ6OOD4YJ/DZcV+oVg/fohyHT/6+c/y8gt3qMpJdg/aKOyiJqK4WF/wjW99g9/94hf56le/wcmTc9rOyf1qcgpSFNBYilFFTLJWGltRlku0tviYUM6TdMKPTuQWbqTQSkDWJAKxBFnWJY1OaSw6eCqgLgtsYXEq0vkR70e8jrz++uv82q/8GuvLS+6/fY8wRLQqMIUm4CUYqDCy3lwtKmIiEvB5GDQOA0PXo4uWpCwBnc+pVC1xtyvmd7qTAWqtsoRtGjq8r+gOcp+mDCZrY1nUJQfXrnPn+efZ3z+kXu7Rbre0Tcvo/Q4MvKKVNdP6ScrjhZinoXGeAF8F1rWSPWXy9o1a1lgJC2L2IQqZwWCNoawrlBWArhsHxhBRqpDXvnKcvnnOP/5bv7NbM/N/FPD6P3yLN/7hmxn0V1RFwbu/dp/V/h7KWL78t74pw6uAeNc4B1Pegtqtx8N25J/+j1+me8JTyW5TIfiFv/t1rEosqxJlNA+++pif/fd/gbIoqKoaZUoSdi4aAaKL/G//2f8uf4435yZqWt/Pzy9IUTxqFZHKJlLf0qpI6i7otvfw126yqHsenLwB7D91Xt56+3XGNOKNNHgKDX5yJZPptVaaMSRsSBTL3b+//aEXsmwnAyFyQdG5WZyGNxNANwWWAEzJc8IAyOv0lbV5973piiJikh5lM+yZLKfmezkmhfeR4b1A9fzT98D/08fJNy9Y7t3iaHWEH0cuTp8wBocLhiJquq7lqol8c/kYOy4orGfcKoYmcnlyjz3lIDle/+63eefBGU255NlPfIiVrXBOmEI1CpMCVgVSEVHWQWxJaZhNvQNTB5MPpZjCoLLYWtjUKuZ7CIgB70bGwdG0HV2W9Nd1TfR7lGWRBxWB6Eeid1kFkveklOgzE3v2mklxZtDF7Hc2lVlai7Q5OGELjC5Q1itWyz3q5QJQDKOjH/vsV6lY1AsxhHeOQlmCF6a+McISK6tqfraJwk4LQUI3tFJZZiYDNh99HkJLqFBVlqAKnHNc5yYAURd4F0jO02/OuN+sKY1m2B5Tlvs0vaNzwvAb7z2gWZ+zPt9izYqTx08Yugu8ixwcLHPtrahXFUPI/kPWUi9KFktNcXFO3zmpycZWJMcE1tuWd+/eI6J4/vnnuX58g8Vqxfj4VNYMs9tjtS6IAbSylIVlUS9ZLFYopTg8vAYk1pcbHpWP5/tRJEiwWO7x/Isv8/yLL9EsFjTblsvmPo8fPmH95IyqKFA2sto7gFrxpN+wbTcYqxhQWKMIfUMMkdZHgq4QSXNu9lW2YNCKqdefgJ9Jtp6syh66CTd6qTFTwvcjl9stBxqM0RztHfHMjWd5NK45un6Na8fPcuf5PZ48ueT07Jxx7DLz1WGt4uz0lIuLM37f/D6r5T5N29EOA7oQ5qQbRnrl6LTGq4LCKAqrMJUEKEygmjFKkhvjLtEzxomB9kcw6P6AY3oOpN+YekWLtZqisPjo8X4kuCQWG9mTfALTtNHYwkiARgookzIDVhQlk8pESQPDrqUmP4cTKUHPtfUf+l4hM2ezt2eS91CZgtViSaEVITogEh14tduvJKxKEwhSi2tDspYxJS63DVEp1tsNh4uVDOVSRFtLuVCsNMSipN7bw5SlJJEqUUGQA30FHLSSHhklLMtUFVAQC4vynoBi3bYkL7V95wPBWsYUsboQeWUIM0AHCp2HPylJgqopdimvArDEmbwRJ2ArD7gkzXin3DDeMbHfVQZ4JWUW+RwZTEtRmKYCDO/usZQH+5Pn3FTbzeWeAuUTycRMHpJ+qTCWqqqkb+8C0U1MO0NVGoI2KDeQ3CC142RfE3dec5MPvrzO7h6axq8KhQR36Kx2SqB19hDt8/BZSEsh7JLLJ2ae9D8yKBK2pljJTCDd1V+Tp+WEFUhYiXwtxF19dJWocrW+AGZG/ySZnS27kmAXkyWHzlJbwsSgzT8r13hTYu0MzpppwJ4JSUauVczhcs5FfHB47zDBE6LPyiqyhFOsbaL3jK6nG1rafouhw6ejLLkfQPl8TzqRnivxIU3JEdyai/6Si9Cw1p4LG7lQibWXfr1Via2CNkXWMdHEOIeCqEJqh5CZsQbp7cuMe5i8Z08+/LsaI/shhzg5Esh53i00oLUMpr7P8f0BOmuu3PyyGCUtMKKaqJ/WoouColCYYEleMTiR5tjCZlmrTJpDTm2VB11RZMmeyjpdUNR1zd5qxWK5ZHDjjFYrlc2+rUy7jDHz71oxJ84ScpKnc8Lyi9KepQyWyU0rjJoQJsR7V7hNwEAKEWXIkl6wWlEoLQm22ogUsdiBUGG6oNMYhR3qHecHd/c6QZ6SnQZfZUN6GcHIop0NB0mgjHiUTBd3mhJcfe+Pvv6YX/upX+cH/tIn+LP/9Z9BW01/MfDgKw946zfe5is/8xU+/Zc/zWf/3c9y/uYZ937nLi/8yRfye30/2PU00j4Pi1Li1b/yGZ7/8Rfmv/vzf/cv0j5p+NW/9isk4GN/4WM8/6Mv8Et//VeJJE5eO+VLP/MV/vhf/Rz1tZr1e5f81n/12/hObk7Xen7rp3+bz/7bn+HT//qn6M87vvTff5mz18/n5vHqwixAvn7fwvM0SDfp4Oe/z+d1lsgBzidQlqIsqKuaqpJpe3COmDxlXROjUMrFV04WWh+EzeKTvDGdF1OfJUzWSkpxHBRjiIxDT4wBn7uow2rJ6vCId1pHLITSHEMQf8SMyFstDEStZfomoJXIpD/oJ7Cb+nFlGCuS2yxjnKjQuRCUCYNMrIL3JGOxxmC1obSFGM4qRYiefhho246IZxhHYRT5kDceJclURYE2Rlg/fY9LiT4qfHJsh5G263Ba2HX5DczXb9e45pCHqAUYSuIK5EYnE8Yg6Tid64hdlzcuNcddxyDMhZ0prZhDR1KeggiwJgmGERUiVsk6Ij53iqASLolkQ5PER8gYSODzEMHYAlMU+fNPCYLCrrVJwN8YdguvD+IhURSF+N0klRttQ1VVFEUJeaJUlhW3bz/HrRdfRB3fItYVt29d59mjBcZ53v7ON+nPT/jkZz7Lyy/cpjAKbRXj2NNs13gtXly60nzsEx/Dx4C1Jd/5zuu8/fY9UtujtGEcXQbk5XYRir9BmwKtrYCbUZKEYxCJi+t7hn4gOEehEnaa5OWNyV6Rx1a2JPYtdanZW9QYq3EERhUZ/Eh70XFxdsG3v/EdCmXwo0NhZXpqDNpKwqmymXovC4Cs0SGbtPuYCxpmgDqkmNlF7Aq+/HCIQX8k+kCK0kQmpcBEofEr8gApM5WAUkaD+LxEqhQotWKvLjlYLtlbLtDWEN3I4DzD6OiaLWPXwhX/L800bUxzEUsG7FUu3CevPWBmLytls6+FJHuTtLAEilJ8sEL2a0xy3ZOG3jvGEBjHiArmqX2Hp/585Ui7pitd+S5dVJT1Em1LQkoM48jQDeJ35QOj89QH71uLriCciSzflU1cviO/VkhJQMS810UnDFCsZR4WabHDeP+79uMwN4RiQwBnD97KA4mE0QpVlQyuI4aeVeUouEDZBcaMtPGM9wN0Y+iIjALmUKJTRRgjTqlstiwl2rrpaAMcXq/nf7t/eE0KbgU6SxdFOrIrfFUGRD4Izu3SsKezttt705XGPZ/h3NBMwJ4cuyHSbG2hC0JUdL810GYwWlLhxWfSe892u6VtGoZhkHXbeQojDfmPZMbdaz/1e5AsypZoUwobwBjaruHBo4c0TUNCsVoe8NKHP8q1azd4cjJy8/YLXDu+xWazpiOhXY9ZVEQ8fRgJbhcAomJHcoE4WlyrZY1oN2hrePPuPYbLt7m/6SjvvIg7fcgNtWLQJaGsKBYLVqUF4/GLiMYRtw14hy1WpKQhD0mmIyQ/s5nc2NP3LcPQ4FwPOTjMjwN900ja6jgKUydGNsZyUZZYY6QsDwFmaSvoK0OxyR8pf2Feg5jXgN21VUoGRilFhtExjI607WmWA1VdyfM3DLjgcn0vNXRVVpCi2EoMA2H0kCLdOKAKm/2fkHVxsr1AADptwo4JocWT1ZYlEuZWY8oljdvO5+2yV7SXa5QfoNowJosxS1KsaNw7nDdnbNtLrFVsLk/xfcfN42dZrvblsynP8TPX+dBzH2LbOtabDYfHB+jigLaLnJ8HxhBZFSueuX2dzcWaYWhJG0UMIyE57t57xMV6zbVrR3zqU5/ilVc+wvMvfJjT8y2jT1T1iuvXb3Gwd42+8wzDSNv2dCqx3baMo+zZWhmGoef09Jz1xQWr1QJt9Gx5kpLi7GLLW+/c58UbR1TVAedf+S6PTy8xMWFiQidYLZZoXdK1l6h+xMfI+vSU87MzVjYP34qaxcF1POW8Xs3sswTpyqArZdDXeY+TbpYENNuG9ekpmwcPeXL3HvdPHvNc/ChhGHC942Bvn2vXr1OvVtiiYLFccXRsKZdL2mbNZn1O13YQNWNw+MExDCOLZY8tSvavH1HuHXC53tK2o0jgY8Ikg9Ul2sq9lDREJUERU88yAQQueLqhl/vQh7yL/tHH9CRovQML5B4V9VIi0I8t5xfnDF6Chpq+zzVhpLClDEdlMcH7Ae8dPgWKUKA1AkAbRVVZgo/Z+3W3F19dYCd24+6YvjYxofLXUOi068d0khC6siioC8Po4q5nIU6l77xvaSNhPROgE4k048hwccmlgicpyQA55YG/Mgzei0Kj6ymVBavRupiHgtZYGS4nhUVRGctyf8Vyr8YYzXZzzvbiHB8izTCQfCBGRe89FKWEJJTTWnV1UDQtY7s1bQJzpq/PfePcc5Hrm92/Je3uG+dF0aFMnPc1k/fNqSaPCXxK4oE/1YC5n9HsrCJQKbNRyay7BDFgYmY4GSPMximoIQrbMmVGqjKBZBUpJKLz+MGhSqlVYn7PkxyUDKLN8tP5PtEonX2Sk3yPuJeo+fM756S/UWoX0uFcXoPlPpsYfyG4XDsU+f424vCiIsZMnnHSlyadwV+QWhIyG3f3a6pD5rv6CtD3/v+fwE+jhJhUFgVGy7CRmAlCSTIJhGkuqr6rF1wbqeGUSjL8UmI7RJbIyu0gnqwujDg3MPgArsO5kSEM+LoSSzTfMwwN/bCh1g0xeRKeyGTHEehdQ6UtplAQe8CzdWvO+nPO3Ya1GtnaxMYYGixuiAxW0xSGNkIXAz0RDzn0IuJ9ZNQRn4d5WhuMsqC0BFLGtAvkZKrJcrhhCswy6CvPxkT6uKq0+oOO7wvQvfiXP8zBR/a/37fMx9SOFvnXdCQkSGM6rs4j3Pv+DqCHK1KKP+ztTSjEKv+CBjj9Z3qnu+N6/vXP+/H1v/aLABS3lzT9wBf//u9/8JtqzTvfesQ733r01Je/9X+8BTfEzv6X/+avyxeP3xdvB8RrJSH7L3zxZ7/BF3/2Gx98jZvSsLz2O+/y2u+8S/Hscr4X7n/vCfd/+jee+vbi9s7bZNP1/Mbf+d2n/t7cXsx/vvM3/sQHX+//xiMB3fu+dtWhSL27ofil9yTaPVO/zTRxmGRs2qOUBDrYInuD5UayKIrZU0gHRRqcTDusluSfkCQxy1oIwmIrTUXeHmZ5RMrFmjzzet6oQog5jjpeMa3M05cZDJsW8CQea5kZFIJMuIyxlLagKivqqpzZmsIq9WiDGP3rkpAcox+wtqAqBdwsC412nuQFbNCmgswmkwmEngMJQgjZ3FNl35udnNEghYo1lm7ws9fI6DwhTZKDDMoqYQ0m8hQTZv8RMRjO7AlrcjripF1KJOdlIpKLG6/E/DeiSTqiQsjASAbdsozVGIsuSpGcKAVKZKtFWVFVC/HJ8DuAbnQerQ3WTF5EJsvwNEVVs1wsUcpSWMszzz7Hq6/+IC9/6uMUzz7Dw/WGvbrkeGWITUt7eo/7lw85P7vPa9uH9O2ayipMoVhvNrjo2T88wJYFm/UWazUvvfQiZVkRkuadt9+jH9x8L6SUBOjRBYWtWdR7VNUCYy0uA9DTfSQTyFyQTOzNlAQh0hGjDMoUUiAqRRycsOmUJAR6ZIrstWIcHNYr2suGhS1F6ZxyKEhZMQa5NuK7RjYA3hn3T/fAdL0nP1GNsJ6T0tKMZg+ZlOU3xAyKMHllZJlb8FKYpySN+xTx6QeZmsYEGIIa6ZWi3SzYXp4Tg6derFjtH0JwdM2GZrMmugGdxLcHsgw4A79TMIvWO4l0ioEUJCRG3rAmKQPoeahEBkTRwjyJGeTyIWKRezukSN93tF1P1zuU03KfTutcvuZPmQOT5oLqyh9AFyRticrQDo6u7xj6bDweYwaaE2D59i9/j74ZnwLnptebC9gkxbbOrMGE2ClZo2Z/E1m2BLCz5BTZ8EEmRnDjU6+RSLSP7gprQivqsmCrFIbInTu3efmlZ7m5GLl9w9KcvEvQH6wtQhJPH5fEi9JqTYqe6TGQ95sY2w7fDaRyb3eqbJknqQEVBKixVvyveF8RPJ3/Sd5zNfxhOq7KV6bfgacYeNNadnWQtvs5Kku3hJkbYpAiUitKxG80pchib0VwLg9rgkj7UFwJMsbWe5ycronJUZYhe/Nouq6haVsSibquqcqSwmr2VyuKoqIJEW+g3w7Y/ZJbh8cc1iXt+RndsMHHHUC3f3iNqBRKF/ioGEYYneW8S1yenOGGwFCDbR+x+e6XObr7gKIS2fzh0TMsD67jF5G09Kw0KK/QUVhyCvH4uQqY+zBmFpujadds1xc07ZpxaAnBQQoiI83nRgB/eXbcCEOb1x4lDYaKAuqJsT67JlRbZuPvPHSCaR0TkGAnU0rZiF/nsCGZ8Dd9Szv2kgoYRM5nbG4yU+Rwf5/r147ompZtcykDiCSWEAQzD2JUSrONhELYW3iyz55hubdisdwTgM6I9OjRRUPvd1X6+XpNc3HBwihKXXBwdEhdHYApaNqBy03H3QeP8F7WPxMDVreUxRE3bz1DuR2pqgJbK2I7cLE9pfGXVMsSY4+w9SHdtufs0nPn9i1u3Dzg7PQRMSq6do3VJft7NYeHK567c5tnn71DUS544cWX6MbEyekFZb3i+PotDvevk4Lm0cPHtF1L8CKTGgeHLYTNslyuWC1XPH70kGHo2T/YQykZJG6bnu+98Q5d2/HKnc+zHTacXmxQtmRRGPpmS2HygMQW7B0cUCwkbd03PdGNNO2WFIQ9NwQIdkEfNQUaVdQymM9sbjG5QGqQPIz1yUh4g1b0/cD9d9+j2gw8ePOEdepEBtwp7r57l6EbUEqxbRpOzzrGcJ/BCfsoBsfQb4mhY39vQW0KNIbkFGMUeXFRl1SlpgoJigXLsoRhICSDpiYWGqdTHmDITSTD5TzUUolxHNluB9q2lfvqA6vsH3KkHZijMkVLAIuYmTBC7mjaNd04ZOsGj/cxe/yJc1oIHucGYoiMw0AEirFEGQgpYq1YJfkMVsRpf4qZC5Gu1M5MdcdEYciWN0xkhR21QSWpX4SxJsEfGiiNxiOsapvVYt5HhnEUaR+7YU3S8tlDSOInnAK985RG0jjFA82Kx6w2jCqxpw1M0kEtaa7JwKjF630CpOqy4trREUVp8aFnfXEhSeXa5EEmuWaP0pcwmQhNe4r8eX6vacfs3oE7clPs9qOswpr3/925nex2vHezF93cBxiVQztMftlpgJH926/sdzJskPphvjbT0C4PLgs1qZksVmkIkTCMuDAIo9h54uBIKeCTl9TjfiC4Ufq2/OFU9ixUZiIu5XMyre0gYRxK/MtEbagzaSd76JHEWzETLZxzTKEMaSJq5B5Nvp5BNWJWrskQNkbDpF5y3oNR6PwMzUrHEJ4C6KbX+SDBY1eTXD0m4pCKGbBMELWoNcjXXiexV4g+4lNEZ892EH9MpSJJJ5HXe4MPlhgdGpvPJ2iT8qBZnl01OmLf0PcNQxwktTkMjK6jbdds20uqYosPHUp7En0mRQwM44aiXpBCoLvY0D685NHDd3h88ZCL5oLN0NAwMmhwWtEnGMk+czoRlCIksspRE52THjJEoppWaJUttyLJC6tZZbXOzMC98syo6eFQagfo/iHX4f3H9wXofu3v/Nb3/cf/Xzh+8r/9c/9vv4X///jn4Egv7FNVBSlFgvN4H6gyw46UTfiVTEeNsRRFSduLj4ghUZeFYP1uhC6wIdJ3Lcn7/LBnF6Ipjcp7kiqIk4kwMSfkCCNlKvhjTLNh9GQeHbLB7rQgi+R6mkoKiyJOyYCK7JuUmR0pMnrHMI7ovsOpIMbYKWGNpdQGHz0xiaFyCIFhGGi7HpsMNkowi8nJUUaDLQJ2dLgYZENKiuC9GP8m8buz2a8jEXHBiYysXqKMpVytcGjacZ2ZfJK+a3Lc6lUZQsrAo1caFVMGMjIIEa9MRhP4wWWWoqQ2+igx7DLGVRgVZ4mrbI4ik1chkVzAe/HEi0kkBHUVCUkLYzjtQJFN2+G9FDJVVVNVC6wpCKPDJ4ULsKhXXDu+wUsvv8LHPv4JXnzpNud+4EH7hL5XPLkIrB/e493vfo17b7xGMTxhe37Cvbtvsrco+djHXuFgf5+yLin24PreM3hneWNzTrvZ8MzNm3zy44G26bh3/4Ewk9IVyaShLOB6AAAgAElEQVQFm03ElZbEsYgwZSTNO+1kE0rjgsdODLxcSCijJfqcJCboMZKcp2saxr6lU0H8AH3A9wMLXQiYkSJd24MtZBPUnpASOngKLwCcsE/ytZ6uVUhApHeObhihGEgEfAKUxgUx1J1Y4NGHuQASQrUU9MHlKa7cQfl5k+HB2ckJPmSLbGNzM3ZJ23VcnF9Q1gvq1YrFao9+cPT9yKPHT+i7BhNGyFEhfd8Au2YsxpAbAmH0xWwgzlTkokSumzTEgAqS2isNjybixIwaMbJHl5jCEmOi2W45Pz9nu2nQzjAMbt7nfuE/+CeSMpfNfCfQfwI/lRKLs4Tl2q2X+Nirn+Pg9jEPzx/w+OQuceyofWRfV/gh0rnEZ/4Tkb+dfPclrC4pPXzuP5L7/8t/29O5njEkoMJ6xWJosL5lMIrDG8fcOV7Rnj3h9Tfewy4P+YHPfZajZ55ltbrF9aPnePzolPaHf+mp9fgLP72fWQkps4rBnTwkRU9VlSwOD7i2v8+Hn3+RH/oTn+WjH32B/Qoqer715UhZX+f94gJjClLQVNSgl1RW44ywo2Kc/JUULibGGBncDriw1koTJncVNjdkKIOxO6uPqViefIwgy37nRmQnkZm+I4SA03LvGGsy8Dc1M5oU7a5pyf8oJjGRVijqRb0DqDOgFLyA9HVVi6zRSKiFPM/CAumQYd6NOx9lVI9o2o4QIl3fMm4bxrETJoCGsq5YrGravqHtNuwdHGK04rzbMsQt1VJz67ljagXbyydgNcVyN6A7uPaMNLJliS4rfHPJMJTCYHQJtCWZgaE7ZRhHunVLaSKrpWK4uI1ePEu/UhQ3Sz50dItraiEsU6NIRoZA3uzggmpR4J0kJlurKStNisIQGIaAG0ZKo6jLBW7oRc0RpudEGoqJxUaWVItslHmAkRAf22mYMF2XiX4ySd1MZv7ElDIYM4F7Alo7vwOjlRI7iJQmywzNzWdv8OoPfpq33niLzeZSZK7BU9dLOuczMJjfm5qS3KUJkaETLKsF164ds1zt4byn6Qe2reOyGZhRPcCNDfWi4NrhMYerQw73rwvzNUZCGAkhMbhENwSWdcnRwRG3bj3HK698lMUq8bVvNNx/cJeYDJebjmbYEoZEOS5YrRY888wNqhW0zSV7qyOS64kBrh0dU1clMXlu3jyiXliqakU/eN56611iTNRlzfVrx8SoaTYtKlhKU9Fut5ydn2Gtxo0DbhyJQdN1PS+88Dz7+3tsm40AOzFhC4MtKnrnoOuw1lLVC548OaMoK0LpcENDVJLsO4wj2pZYayh1idFwe/+Q/dWS0LWcn57x5GxDs9nQx4YxGZYxUS7FZiPlGnIKiSDvQ9P/uRCoVEkIkffeu8/pG3e5eNRS39znyeNTGM557XvfY70Vxqns15rgHOv1lq7rUCpSVYZ6UVOUBT4E+rFnDA6VLFGJA1FEnpdkRXGgvQEsCpMHFYlJT6+0Jmk/hwAqZI/t2oFuGCfV2zQC29Vec0+amLyUJwFMBGLyWdkR8NpnFrhoqWL0OD8SkwCPEmixAx7c6OZnzUnqFcp7VEz4DERGF+Q5nllyuwHVVFenmGWa2UZIJz0HmMkble/xTvzSdLaWkdon1+MqYYyA4mIXId5xCklbd6MXH0PZBJjgvjS/JS2sRSVSuRTInsw7ZrYoCGQIk/LaonX2xrKG5WKBTpJQPDkKSLhQFFmtEgk1U/hBZgnFtGMX7oZFIk2U5cvMbLAd64r5/p1kxyAyyxiCWKdmxt30aafBvM5WUzElqZWDQ4UAxojFk9oN8SePvGm4MTGEVe6LYtqFLxa5fg0pXxcnXuLBC8nCe0dKMUtJBWiKPlAohS1LfBLv6EmBhVFzUMp098QkoQFzGJAGrUSWXBRFtsbIg7g53SJ7xeX9Xj5XDpmYmZ3sGIEEgoKEF6amipLyHQM+BTRWhtlKgilQeX3PhI2rpI2rx1OD2qt/nxlhKUbxf7vyTNgcqkIClTQ+h5XElETZogXKTkplyW1CmYivC6pKswhLSmpRmJsJu0qo6AlB7JOCd4xhFAk4AZU8fhjYNi2X2zXl4pLObShMIIWGQUXGbkvTbDCsGMfEvbff5a2vv8nFGw/pHt1j015yMTRsoqP10EePHwOjCwxBLNE8OaU6W9Ikn4H6JKvVJFH3IYBL+T7chXNMTGLFxLbTOfRk14emmCaTuv9rAN10dA965iSiLCEixpx6KpPm2ThzKjSZl5p8vdXu9/wB/tLf+0l++T/8ZdqTZofSz9PqLFVTu2nyfCNxBYXPr7ujegqzSKQG+T2l6QRfPdmygH/vb/wuSitW9UJMuINMwJ3zc5PX9yPjMFBVFfv7+xTGChjiHFGByjRPHyY/BDnKqqQoLUZbKbK9E7+G/B6m1BSVb+psZIVVBl1K6mJUsoj0/ZBBFZHYik9FeOq8jA+6eYNBcYX2m4tJtZvWz3N2NV2bXWMwF/4IRfa1n/sO8UGLacanFmxrLFN4yDQNTtP5Rsz0Q74mk/mu3B4ZPGI3mWK+Nmm+SPL+5S8e/NSX581h+szS6AiiX5RF9g2SgnYcnSD+IPK6EBjHnqqu2NvbFwkSidViwaIqIYpWrLSWRVVRlJqub0gE1v/WSwAsSimSXEgkNAbZHNOUbqV1nsKIMfDoHEZpyuBxyRGKRG8SKJGKqbaj6EcIDp8S3ojJvHIBi8oNeUIzbTriQeSney2Aix7nPOMgvzvncmCDeN2k7HWxm/QpGdUlk8HEApBCM5CynKfFnzym6BYEFei6DDBZiFHT9562HRgGB2mgbbdYInGwLErNsixy+pF42RQhYKzBzEm3hpA026HFBfGWKIwmBs/oR4bR4VLiqF6yv1qyKGpUuaX3klIaooROlEWZG6Sp8XXinZg3+roQEE+ZKQQib1IKkbeonuBz863ibvGUKwpaTOJtIWCGUrtiKKZEWRlCEq8wU5bUy5rFsqIoqyzLzM9l0vTjQEwJh4GyBmUYQuTy7JLSdty8odG24OjaIXt7S/rNmvXjt7GnDyj3avHbO7vL5cN3iO2a5I5p3cB7jx9hiVR1xY9+/nNcv3ZAVRpKk3ju+IB3VyXrxwPRwzNHh/zARz/C0PXce/RIpoXEHGwTCTri8KTgIEJdCIuyKgrKosZlU3RlZApWGI13IwkJ8eiHgWQjRa0Y3EjQEEYH556RyEDYeZiGSDABHRJOixeFioEheMamA6OxKrOr5jVrt3b6pCAVpKgY2oAzPdVg80RY2EMhe1pM7NGdb4msIQlhtEqYxOQvqJ7yTDtvh9nrU5uQ9yhP5wKPT89nb1ClDc55lDLCNlWAH5gAurPLy3wPTRtz2nmFTfYMuQgUQFGA8JB0bt48KnmZ32WPnJhkv5TgigXWlgzdwOXlJU2zoR8aQusY+x2QJB6CkagVhS0wWjwui1IazL5v8X7EFguitdx9/Ah/9oiL7QnaeJalpXcBpRxu8KCr+WfXpsgec7vzZ0NJEfNFo0IpSVOOytD5kTKMOLsPiwV2tY+Lmnv3Tji5GLnznObW0W3qQtHy9NE3J9LYBvFpKbRCpUhh4EM3n+cTH3uBl196kU//4Cf5+CdfZH9Z5vUvcv7MbT7y/Ct8jftP/UztA4ui4nB5DUwNyTPqwDh0eC+SXgmCkoGGufI5NZ5CGwqtQYu1h7YFykggTFmVIvG7yp6UWn6WcMfp7xBwbwLK+36g76IMNJR8xqKw2Gx2rq7s6fMkPsHgAj6SZfUR71z2U9VECnkWlDCCy1LWrZgSzoecFi7H0fFNBheJT07Ybi5xrqfvZG8sC2GyFGXNnedf5ODgCKNLXEyE6DDJc7io0DHQbC55dHHBo0cPSF4SR6ej6Xq0LahX+xRFtprwEvihjCJpsU3ROmB1QqsB70e220DXRyhaxtpQtzV7bWBv7yZFXYlfsLaYUhrW+V5d7uH7jt6NlAqS1pRVSW0UWxRdSNQallbTRandYnRzcJcCiFOQkDSDeuczn+0kpAmU40qw1lTjzDVqnDgHUvrElIOswOVmttQGFSPWSGBVUAmvRSJ5cHzMx199lT4k3njzXYxTWCWyKCmrd5JWY6ckdz8PCeqi4vDokMPDI4qiZLNpcV3D0I/YongKoAthZH//gOs3jqjtgqZv6DtZI3vn2Q4jq9USZRUpjBweH/HpP/Zxnr15zONH91ifN6xPW1x/SuM8xd4hx0fHpGTo+kA7XJCChtBT6sjR0YrNE4tPgaooQBeMY+D09JQ3Xn+TFCOFtSyXS/b2D7h2/SbaWJq+ZzueMbQ9Tx494nK9pq5LnHe4YcuQEtZIGNcrr7zM45PH3Lt/jyFEHA7tPePQUPoR1Vxne3qCTZFlaeiio+17FvUCXVXYRYEtFMllwF3D8fEhzz3zLHH0PKr3UOoh55sNw7ohjoFgFJHIOPYEMjgShcmVokigApo+SqNvnKfbJN7bbDBdj6HAnAy89vXXaJuRt57cpdeB1XLFmBRFqahNhRoHtmHI/UbCpoBNkcqWGFXlWlGGBib6fH9nyRzSewRAKUtKUvvMAIVWIhVPCRulmSzHRGENfS9qh8wdJ6lp3xWwmOikQUcUC0GDMolUBXQxUiSN8gZVWLxPBA8xh/PJLCsw+jH7dCsJToqSym61pG6WhcFnpYsxGp2CqCJiBmC0wqjJmD8/x0rCylRm2qcpKGBqogSFykFUudcJaZb3BRKdd6zbLb2BRaHFZinE2a6msoZFaVExiNXIBPaoCXzLOKhS+CTvYaqbYopEPVlMWUxZYWwJWdZKELahhK3K7ylDpCEGVJjCCBWFKWffvKQSuhQfvEQiFZohyf0wfY+Y+zNbOSml5h5UmODkBXB2/Sch4R0kYfvrGDPjLPeyNvtFGovyEDGkKCFuaPHv0iqzimMQSWDK1k45wEAZqcFD8MxBHjqfU2twKYO9ITJG8Gjxgg4GlYTpbowCLQNdbcCU+TWzVDQgoaBRq/lnm5BQfie7lf4ig5op5N4tzCEX03VlAkWjMKZByXNBguiZEtk1YJQhAsFkEDWDGQoZuPkEyUy9lkEnYeeO2QtbrGunkIis9Jr2ILJaJPdQk/cdeW8TZFhA6DBOKi6xJMkWkcwM0IkFeOV6Ka1xRJJKImTxNd2iZhWkrw1KzikaihhJoyeV8n5UVaKGGpIDNHr00EfWm8B541iULRfdCUsfwLfS9/db2s2aNHbEEDlpznhwccGQIsOqYr1fcz6UrLsoe3oQBYdHMSqNUxlzUyqTYBRRm52NWJL7YEjMIHMZIyHJ9YkJgolELUM0lZ+fqKch7A7UTSnOyb3f7/hnAugArr90xA/+5Ce49fEbIm+46Hjw5Ye89vPfxa+HGeJRIFrtCfiZUDGm9U0/1ahMh1Ka6rDmj/2VV7n5qZtEF3n3N9/l2//Lt3cm7fmDpXyCbGX55L/6CW5//jZ2UXD62glf/Z9+n/68l1sxJV78Ux/m5T/zCvVRzfbhlq/9vW9w8p0Tpoll8AGrNKqKGfMUXkJKgaQr8QUTYwTxAg1JEHIUIU1m0Ow+U9wBiHm3hRRQZLPAJIuXAFF58oH8XJ3I8jmDIYnJbH6sxFhWqNJSdOWHnB0L8L2/+Q289/Rdj1awt19jrJrTVGtr2VstJYEsd7ri7yM+YtqKR05Vlti6JKbIMPaM3ci/8GOfzJOiiUmjWS2WhCRpPN3Q0XU9ox9BaZKteefRlk3nKYuCg4N9qsJgFRADbhgY+j4zp3LCWSQXDJBiZLXcm1laIQSYEnXS5Igtfw4RbDRSAGhQmYZKTr3TxmASqCj+AipO6SmBlEYBJU0ukJPItzQlyU9FRL6cXvxmdEQMmccgQLhSpCAm+yhJRQtOjFUP9laM/cgmedTCMtZiYmy0Zj9pDtF0ShN0xJuCkDTRe0qlWBYFe4sFtqzZNFvabUfb9zgfRfalBRieQDnnfPYZiDKtinkjnBb2KHJQoyzKaqKXSHofAqMPqKJAG9msm76lZMTlaaY2BSkVUkwlK/5GfiAVGWhQIpUMyuCUyQEcI0FF+mFgGEdSTFhTYm1J1OC8LHjaCMDRjQPt6OmDBg1DBOsjKvY0XY+PkbKuM8insDpHo0fFECM+wpSEHLyHoqAoxedNGyMTtDgVFBaVEn2fCEOQAsWoGaCTok78SqpSUqalCRPQMcbsH6MNqigpFguWB4cs9/ewVZm3V9kQ69UBXhliDJi6JhUlThuChu3QUEeNT0muqYqMvuXi7QecvP0l0nhBPNwnGkNo13SXT2QijGbvxi3qG89y+eQRb959wI983nJ0eMxYBMbgKHXi1U+8wvHhdb7we9+k2wZeuPMCl9uRISouui26MFSLmnqxpKr3qKo9FtUBVblkf+9QAOaqZLFckFKk7Rq8H7McQTyRILBpNrz33rtsm42wmTadSGKCms9bBWJknCQRNAbRlQRtUVUhSlltKacmNwWCUgIwa5vBUU3mq2BykIA3BV0qCT6bLaMxSc8liQ9eChUl0tapiU5ANBaqapdmrJ723iwOjkXsqsiTSVkQ4jQxS+I/mnxOkUJkNAK2Xdley0IKyonNqicPsWkyvfOJlGLOEIJ8DvHv8PyfzL1ZrK5Zet/1W8M7fNPe+8x16lTVqepyd/Xkjmmng0fiOAxOwhiJKIAQElfhBokQ4AaJCy4QEhIRCAmJ5IooImIQkhOwndixUey0HdNtd7unOlVddWo4456+6Z3WxMWz3vfbp4fYIJD4pF1Vp87e+xve9a71PP/nPyQcJI9WBqMEnNRorFFcO1lycnSNob9ku14TfI9moHNb+v7AwDFEFssVq9U1rl27ztHxCUfHx6AV/dDx5MkjNts1tqwx8yX1ogQNMdTE2KNDxPmILTXelFhz8GFzzTDdJ6OHX9cFoMAgKcg+JAYKPJoueoxrOG9rnBsYCg3RstnsiRct3U4kv+v1mttffKFc4PT8oRis54TbUitqa7l16xY//WOf5U/+Uz/D6tqSGy9dY7UoJDEa2F+esT8/ZVl+v41DrQxJa4zyoHtSTFRlQQye3klADSSqWclsMWc5P/wOHTsslUyXbUFRWmxRoQtLWUgqvTU6A6xSJxmtKIzG5hCUkP14rNaUZQUourZlGwN4WQsoqAvDcjWnKEu0keQ5PZ2hB28zlyKDDxI+5Tyuj7g+QZD7KcaE9wEVNaWpqKq5eH7uG9bb/WRH8uz5My4uz9nvLui7PVp5qlKRMMSo0V5jTcnxyQ3u3L3H8+fnPHv2nBB6SAM2OIau48OnT9lcrunaZszPmh6Pnz6hrmsKazDLJTr0GOVI5NCVKN5uOhQwRKLtwQjQGDVUhaOKnuHpjsfne/zxGddv3WRx4zrV8ojZ0TG6WEyWKs5L6I1rW4btlmZ7ATkFNA2BMET2rqNzPSE6fDYFj+O9H7OcNUgDK4NRJQxsdZDDKsKBHvR9jwzLhbEmBEgTCJi0IeZBYIEB7zE+kYLDluKn6lLgcr+lDZEbL71MOV/Rbgb5/qiwthKALnuGoRJx8gLKNgulyAN32x0xQN85hnYg+YgpRU47PqqywBpFu18zqBY/RLp+IHjAGIpSQTAURY21M+qZ5tGT7/LOd/4RTx895fx0Q22PWM1XHM/nrO68zPLkNg/ff0Jz8Qj39D10gDIZzj/2XLt/l4KOx4+fMsREOZ8RUmS329L3jfg9AvP5jOQCtamoZ0vwjrZpCUNH7Lfo0ODaFrSitIm279ntLvng4XvcuXub+6+/zvn6ks1uS0qRXdNig2Nu4Ll2nN57iVt3X2ZotrTtXphARUkxnzFfzFAkAfa0iFQLLSqIfdOjTMH169cpiwIdI+eXG+h2RK3oksbWC3RZC5NSW7xz0tonYeYWRqGCp931xKHlxmLOW5/5NPtux4Nvv8eT03Muty1FOafoFft9j0pGkqOdwww9iSjeklgMwnTzIaCVyQn0iOQsZqA/B6SkNFr9C1tGJ9lzFYaUXAahPYXXzKxmScWqVPggQEiKhqCUJCKqhCFiBWpjqueVWB0lHXF2S9I7TIKSCm+UMF28AFYxasBii0Luj5QoCkvT7qWu0BpipKpLOWt6B0WkVBXRJGIYMDFSKCUAipIBSUzC0dNKpKE6QakMXotf+Zh4nNEWAUkUFKYkqkH2DmXwCeltXItNkYXV8lwjU0wLg9+qhMajo1i+pDT+zgOLLREJRjyUR1mlQzzTtRZgwSfpLBMKW5TE2OJCT4gdbbsloTCFhM2NPqdGW4gajM1njwwyi1lFfbSCqqBczrHzSqxcnIcIyopSRJCI3MvrEbzLftAZhNL5jAtK5IE2hxmlfL2F9Z+BnDxwlD+XTD5uGlBhClkcASKxwpEQGKWY+qAhyzi1EaahApFk9w4jjQbRlkRbYXSJVj2FNSgdD7VbEuAoJbHmKUtLMGKPk2SxiCew1li0ANNag8nBZcFDlJA8rRUxuGw1MaonMpiXhGhhp0H+IZ1VZwBQJ4VJWqx3ivzcIaKCkDYgSXhYId6wOmq0J9eM4mNndCH3rIGoxro0c7nSaJs0Mr+kP04hCOisEsaOmIZcbzOx0MUzkChglNYq87akOrf5ePN5SKU8JJsDOJWiysqmoOR9lSHh+kCqI6osMfUS7RPat3JKdgHVJrYbuNhFjo9aznZPacJA4QaitoShYbu9ZF9YVGFwVnFy7x7hRHF+fMpl/RGdguZiTdN3DGgGeoKxBKUzVy9NYZ0+JpIpkOGavLeQEk4lvFWZyS6qq6gV3iS8EVjHpCQ4R5aRJxAcQumJ4Sm1/j/eBOCPBNC99KO3+bn/4Cf51v/+Dr/9175Cc9YwOy759D/zSe587haPv/woDxbUhBaTAbo0IXRqArG01RKj/MIj8cf/nR/HdY5f+nd/iWJR8jP/0U8z7B3f/d/endhVMh2Whf6Zv/AZju8f8/f/k9/AtY4f+7e+wE/+ez/B3/uPfw0F3P3Sy7z1r3ya3/rP/wEXDy95/eff4Kf+/Z/gl/7Dv0tz2sokJCa0FZaGVSDCLk0wB1PAkAQ8ivrg9xV9HEFoubnTYTA6FlovaL7J7IxxkjTScCEbgk+E2WxgriiVyMmSMURj8Jn9I6CUpIteTQoUvE78K0DoyDrmoAkUISLFVJCbSCstIEtKmMJSlgLQNF2P3kuM8mgIGXNioy6sTF6UpF9JNL0UkTppVEAQcORm1lYazhgjKSjyqs5ThgN6OzIhx0mDHEgjAzCHXUcm082oYk7KTAIOJTES1XnyRPZnE73+eE2u+AAhtHPvPU0bMQoMGemPAec6NOKHNq3QbAhZ2gJVVsLQyUU7jEal47AtYSthJczrSkxAFbTB59doCJ3DhIi1lhSjQLi5yKiKgtmsZrGYY4qafduw3zWcrS8IQT6fQJoOklG6N/oViPuDQumD72MKkRjSZGB+iE0f712FtnJoa1OhEPmt0hqXRuq7LDStzdR3FKX4r8zLguB6tvteknliT0TYqF3fYzBYGxn3+KIoKa0lKcPgHS5IAIePCR883bNT6u1OaOJZFlbXtdwT4arpPtMNKIlC8u5tUaCtlaYrHViIchRHAUqLApOYfsbk+9UYTVVJcIWYgYNF1mQMAZcC0UcWRzPq5QpdlsyXM67dvIYtS5q2h8z7MdZirCb5iIue2LYoBnwvBccIVvmhx/kB73rC0BD7LVY1eBdZb3reffs9PvjguxzNTihmFbduXeMN1/KeSmwvz3n46BEn14956RP3mJ0sMFZR3bpBOrnJ6tEFj77zGFjw0iufxS7u0bqealGxOlmxWCywVUVZ1szmK2b1AmMLyqqUwz4XRgnwTpLJgncU1uBdz/rynPv33+T9997l4XvfxRWOaMhSYYOe4nPlvtNKBh5JkdmnAsSN6VPi1SBNJCmDdGhQRoYmymBtTVICeJfVTJg32kxFtNZS5KYkvhwqyZ0hsoKI1iKRTokcIpTZJQnEDRWObr2UG1s1SQfIa0mrUY5yaK7l+/I9FQ+eV8c3b5MPxen3iLehfCYy3JLzMkWZOlcpe9ARSMqD8kCWXSeDxkAUn5ujoxm3b91iu/YkP6CjhBst6znlFVfYz771CW7cusMrr77Oa/dfZ7E6ZrNreP/hB3z86DHVcsnKlrgQuXbjOi/ffw1S4PTMsNtc0rZ7ajtnNlvR7D3DcDh/+j7v/cYygtPOyKSeZPAu4JTFzJYsqwUrPVBWgX3bs7m4ZNftIbQ0uz0qadr9Gc8ePyDEwM//6/e5+vjz/82n+GGPb/Nlvt1+WUxFH/2AbzDAj3////7p//af/aG/8w97pCiJnCNTXf7jCkssDwNDErmLNdJcpBiFhZ/PviL7ZCqVGAZP17vMQjcYK9N7UxSMadDa2AzQ5YS3qx6lRGwZxQTbeZzWDMoRep8LcEk9DCnhBocpA0VVg1KcnZ3l3E744OFHDF1LSuJVprCUVk1eN2UU6dlHH3/A6cU5l+stXdsKOyUMOZgiMHTCWBaD9oN3ETAVrU2zJxdmWA0+p9wLEp7PILIvlUoUZc3R0ZLZbInrB9b7PZuLLX67pW03HDcbTm7f5Ua5oLoC0H3w3XdpLk8J7Zphv6bbXaK1oqxnuARtN5CGFuMHUImgElGLZCeNjIHRXygdvOUialISHArEHzwnH2Uw8vbS4d8pF5VKoykILuJDogiaGMSzSFstIAuKjx9/xB984+u8/trrXLtxjd3pBcpH5vMFpZLvrcoCVKTZb9nt16TsOydEjshms+byYiO+rTl4JmkDRLr24BVIhL7rGdoehaG0NQmDKWQdxuylFhNYDW2z5+HDS7YXp2zP1uhgWZ6ccHT9Bm+89Wk++6Nf5N0Pn/D2g4dS93UDDAOz+ZL95RkPY8P5xbkw3wBCYLZYcFLV7DaXNNtLetcTdsJubrsBZQox53cOkwJ924hiwWjKuqKuCmJKdMPABw8fUs9n3L33CsvlkrOLC7kOwXNyfIfyTJIAACAASURBVMQseULvCM5T1zOunZywb3vqxZKirLJsTRG8E6mntaQEXTvwZDjl8eMzFMLWSigJM9DCqPeqoFgeC+O+rEhaZSZ3HnCGiHWgUyT5QNO17Ls9y9mSV19/E4zib/xPf4uHjx4R0dy5cw/TOTbrPfNyhq3mOFWy9wIurOwCXYpNQ4oKD3RJwB+NIQ6RGBUuKTwaFwFtgQJSKV8horTLfV2kKDS+l7NsXpVUhQftiRaC1kQkVT1kyEknGUbaJHVXSmTPM+lrXGjYd+e0bktUnqZrcDYyeLl+PoiVS1mXLGYrbty8wc0bNzk/P+fs/Jyz58/pfc/S1Ljg0GUtslJj0CqiVIm1xTSI08agrKhRkkpTmOBIOCH3I+MWFLkigY0S8iAexpGYxMc2IgnO0Qdi12FJYrRfFBSlpKpLcmdm7Y/1QxSmfsr9yyg1TWlMghZwK3LwhwtBvCqNF0XCwa5C3sfYY47/GLeXUaKpkqQ2mwhVXXPv1Ve48+o9isUMYywzO2NQHcGnbIVg5b1msMzanOKaxv4jTiDTCDSC/CzZp218EaMP85isGxPZJ3OUzCZGxiKZGKKtRSuFD0JMUFoRo8rPqzEGdDZQDTFkUk1EY7OvXT4zTYFSWpji2SctolBRhqNJGVSUftCPwKTReT1ojBJv6kJbok0i9dRJBoE5hEcoJeP6ySB3BsKMMWLnkg7eb6OMd8QCDAodRfmjjABZWhZhHroo1Ci51SanlxrxFs2/ryhLUtCEoA+edkgoQ0pk4ssof834Sq4hpqMoZba/1vn95FoYso1QIqWAeICPf69kGGJKYowUQVRP2ojKReUv8afLJKKQJkluQsA7bS1aJ3RUxD7QNZ7Ntme92WDCQNP32L6nNwW+a7hYn6OrAlMXbDeOoOY4o3GlZSgtQ1nSG0UTPN3QE2LKAZ9pkhuH/JVQ0/qT8FCR1aeU2esKTKxE/ZYk4CznAcvJnkbPOQHV5c/5cxsH9S+kMnz/448E0H3p3/4x3vvND/nK3/z6hAC3Fx3f+J+/hdWa+z/9Km/9S28xvzUn9J7HX33C1/7m14idsCX+ub/6Czz8jfe59dnbXPvENX7vr32Fj7788bQpp5SY3Zxx6/O3+JW//Cu4xjHsB77zi9/h0//yp3nwi28DeXLJxE/j5S/d5at//fdoLxpSSvzB//gN/tx/9We59iPXOPvWc17+0st8+JsfcPnwElC896vv8dY//xav/+x9vvm/fItx35IFZTKrSn67tqCioBsjMJHrMkKQizrt5IxU6EPBNQJ0o0aepEg+5U1LNtrJ5Hz6ebKhcECHfJNlcEq8sMbvEeQ7d5bTdVJ5MZB/V4gRHTUSMqkJSlJFY/JoEotZNTGujLZYWyIemgHnAkVRUNU1Vmlc30kzWBVUthIviMFjbSHeNUaLp0vIUdQpg5IaIIo8JCSsNozoPRnM/X42pbwbZeRz0whjzqdM8Y6ROErzkOdyKUGI6Jg375igsChk8yJfn4jI8VIQBmZCZLhFUVCWVqSW3jO4gaPFguKKLMZk1qLWwjiMMchNlkSSosabPI2mn0LiU0Yaql3Xc3p+DhgCmufn52z3e7yXBFdUpslGmcS0fYfZbkE1rNdr2q7FOUeIihRCjrIfzUivrGVGZk7M+0ucWIjeO7QZGanpMDlJIrXziGeE8pCCAGw+gosQk8YlLcmeMKVmJa2p6pqyLGj8QNsPYv6qZbtyXvzCkoIhBAgecthCBJxzOO+xxrJaHmH7jm2zk4I9A25Ga4qc4pxCYgjDRBlWShKep+YmZmcTLXNan9kzh0lxpnxruTdMRnHzis0TOqG6g5i6ivQbVPYM84NHG0tZFMyrmmQUVqmcvpvwfX9l3SRmpSWMTW300+SpKiyVkYTIoW9pd1u6Zk9MgWqxYDaraLXCt47Hz8842+6o6mNMPaNeHnHv/hts1xserre8/f5HKFviFzMWSZKHHp9dst0EutmK+UsF1lzj+qri5l25Z21pKCuDLgRZdt7RdD3Pz86h0BxfO2FwA8+fPce7AAm6roMgqcV1UeCHDovi5vUTXn/pPu3ZFuVgIBJEoSnvV2vKwgptP47+fXntGiODm1zgjjIBSSDOVP1x2qotWlu0leGD0Yai1BTZN0ch6V8+JjCyP8maF1lKjIkQJbhjGq6oJDuxHo84Aehmx8fTEGYC3kYgeLzp0vQtUsBxdTi1AaBaXZ+K/vHvdJ6mkdL0Z6nTA8kFCiURGTF6Ih60mNGqBGT2XHQepRNlYVnMa3xfcO1oyUIndmGLLQxmddjD/syf+XlWxysC4GLLk9Nz3nnvQz786Am7/YAt50RdkEjM5nNunKyIcSC6BcXIfTMFxhREb7JEXj6LT7z1BZStUUUB/A4Ab3z+s/S9p2/FM6WwFavlnONVxawGlRo+/uAB50+eEwfHrCypCvmEqjICIrest0d0qw3/f3y4jxPKWFnP495DIKYB7yK+8BI4kX3gjJb0TfErO8hdc02bE8E0zotM1TmPD3mGEBIueYbUUbo4JduPDLrJ/kMICbLS8oBt9CX1IRBdICZys2Jo+5b1fosuStnbr0j0wyANvTE5Sc4YZBInfjkueFzoOD17jLosaNqOmJUJOoaMW19tonJy4RV6urYC8oSUGLzHZ2/MiWUj7yrLAGUqH1JEqQHfDwypIXmR7yUFhQL8wP7yFOcd+12Drhbc+5w837vf+Rrd9hLtGnQcSK4XmVYhgII2lpPFnOPZCV3fsd7vIImcZfSfmpJO8mMcFCXSVKvqHwLOXX1cZewe/lvkjigtPkDRYzOQofUov/IEEpv1JR988D6vvvwKt2/f5PTDR6TWkaLHGMWsKjk+OkJbOE+e3eaSvu0w1lKWNYqQUzehrhZU1YxKS5JyN3Sk/iCR75uegUiMoJWlrsDoAmMCRg/IkDVKEHOAdtNjraGuT0iLROxa0A5Ky8uvvsr9V17h9//gm/T9mnlpmDMndJGF0pwcLYkWYccrRVHV3HzpLm9+8pPcvHGdJ48/4h99+bfYXl7Qdx1hs2Oz74mZcW0BXI9GPIPikHAxUtUzyqpC24JhcLzz4F1sUXJ8dMy8OmW333G8OuLW7ZdYGsPRasW+DVxc7Lj/2ic4uX6beragaTu6vsMYSVEPfQ/R03eO56db2m7gydNztDaiHtHQNQ3NEHARTJFY1HPqxRJbzaWmTdAP4oXn+oHYeaoM9vZdx9B0PHp+zoPvfgil5eGzcz46WzOrZhSLlhBbsTSwFdZH9rpmZ+YCQlBiPCijqIpCfBmDRKPFCNoJUDWEbIuiDSk4aSJTHnyh8uwl5oFvpCxL6mKGLg37oSFtd5xu1zw6u6CrtiQzm1hWAjbKHjifSWKwNLpgUqRShhgG9v2e/bCjY48PkbYt0dbQD42w5YziuJpx+/ZL/PiPf4k7d17iN379/+BX/96vUliLj1JPzxYLIWAUhhRFJm6qGmVs9hsWgGM8w5NK0vMpUcCkNN7BB7B9DAUY1VDj3j2xn6ylEAoVWonvYdf1qH6grmvK0uLDaP+TlRYp3/tq1KGNQxuRpI57e0rjbigAXGFMtk4QVpqKibKsmM3nMmg5vxAft9z3iE/Z2LeKusAWhbD+kxAVlos5RzeuYW1Jt2nyADlkwOawV8UUsVNNJL08h50610ICaMkwM8Meavwo05WfHesq6e3I26vOL1WY58jzaY0O0ucqjJwHcfTQFfBslAXLJVaY3Jvny3vYsPNnkcbXq0Xuqq2AUSl4ks77cAZqRPGfe30lwzSlEgaLthGiEHGYWIWH/jZBVjSpyU/vRcupg4JDIwmqSSWMkeGQEc2yvMa8vsagKZ2+v582Roba49pNmWiRkhKvWWsyKJjxCJWtGsZrnIkLYz1w1W8wf2TTR3n4WIV9NzLLx8fVLn/0E4QxFE38z7338v+zjyomc0lDxPUDzbZhd7nmsizRbU3RdZi+ozMFoWu5WF+iS0uxqGmaQLvu8B2sLy5Zbzbsmz2dc7gYcw0cJg/BUXCa25XDya3I/pwjkBeJQgA9BCCmSIw5mfbKz2mlJjVnjHEiY40fXLySLP+DHn8oQLe8teDo7pLf+etffWHxyHPKgTI0A7/zX/8220cb5ncW/NRf+Wne+hff4pt/6w+md/n6n3qDL/8Xv8X64SW6EHAj/xZIiaNXjxj2A7sn26nZuXjvgsXtBbo2+MZNb/ywSHLLE8eiVN709ddPOP/26TT9MJP5pfzstddPhA0SI1aZaZogSLHQUY3ReGWy9MlkTxD5sOOVyUDKGGhU07uZXudoHCibbJg2jHFDUJkWmjLdkSQEkNGw8yqqPRkRkgE9pWTjuPIYjdnHzyIikguF0DEj4naS8k1d1bMMHiaqqqSezwDxLnMhYKoCO59jlWJIIhs0xuC1JqCgLHFa41MUOY0Gp7UALn1HyM8oNa0XzyT0Cw3JwYD0QPtMUWXK7OFoHG8gP94geaIiO64laS00VaUISOKKVmYk7WSp8Lg5ScMfUv5QjIBMtqgkqCApovN5wnC4gSYWlpfPZ/SmUiobrzon6WspgdJCd7aOkBMZd03HEM4JHjEaD1GS1pSkL0ninqR+7puWzcUarTUhQD8MDLkhU0njYqA0IrGa5DR5o9fZWFT81cYJiYB02oBXGqIYloY4hkoEhhTBDQIIxCBSLyMhCALpGqISqnxRWDEbjpGmEwkqQO9lkqCrCtAEaXfy4WFAWZkiKJFmCWgojd5svqCsKrquk/cdvXiHjI2J0qjMopxAkfGeUNnkPELGNYhJ4XKjJ8BHPrQjYIQm4GMSWbESptfILFQqEZMjEbH5+hTGysFSVNQVVPMZR8fH1IuFsA+LEpwXrycn3gkAq8UMY+agmQI9YlCYzI4oTEFdWNr9hgff+Rbri6fE/hIb1qTUcd53ND5yuYXZ6mX6MOebbz/CPN1i6pLOzTHlLc42mm88eM5OvY9ZVAwp8uz8EmPmVNU16vkxCaFsG51wXtI+N5uOGAYIkXbf8Ozxcz5++gSzqLj3xn2UVjx69Ihm3+JdoGtbVATfDxgFrm+pTcHrr73KydGKo6JkqGdsU2TQInEQqbVBF3JxUghSGGegWecJYZQeHMiT1CRgxRWicC6eAyk6meaS8EMkBScSOJT4SmAx9UwYR6U9nAMpYbKf5YHY9yLgNj50Pc++Y4cCQ6U8oLlafIxF1gTQjd8voJKu5hOKd/g7cmpsZmZnL0+pRK3IevNeBUq83cYzWCW0thLcQpgsBEqt+JH7r+HbhkfxEbuzPYvlIW309fv3OL0845vf/ibfevAOl9uGpg+U9RHazOn7FucVy9URi+Ucq+Hy8pL1+XPa/QbXdczmK7xPFLqmWiyBLQBf+OJPocoFXhl2GaC7++bnaJoO1ytKPWc1P2I5m1EXENyW0K25LC+xLFnVmlvXjljNZxADQ7enLCxVXfGp5z/K/dUn+EX+ewB++a98HRAm5ayec7Q8YlbNMCiOlit8cDw7e8Juf0FhEsdLSRRvN2v6/Q5F5J/4L3+Kq49v/mcPCFoAqJjARk2hJMBGGWlYtTXYzBYyRUFZZDYGGVAaN5sU0ckTXMAP7koBLmyCUdYq+3Zu8vQ4T80gcjL4qAm5AYl5iJLUgGl7irIUoM8assv1VCBqJYMBRTx0QEEGU6PBdvABdMAUlsH1ksiqNLaqmM9rQKTRL999hWa/IfiOlBzB9wy+ycEqktQGYk1hVMAoJ+d91HK+ppEZoLHGZqbHCx89tqiwZUVZzyjKEhcSyvQi6cmDx3GiPbIrTII4DGxOzwFpVktjWc0EBJ7NKrFY2FxweXHBvg/c+wv3AVifPkL5AR06LAGbybF92+AjHJ9c47WX7/L6vVd59OgR7Xvv4oaOsX2e2A7xsA+8sHUoMlj3YmNy9fEC0P8D/34g6YixErYTlRbgS2uSTlhlUaUlKMPF6YbdpuO1V36Eh9/8iLOLZwxpwJQRgiMNA0onmmaLSomqLGWAFQJDVHgXKMuaGzdvcvPmHeqqpus7nj97glWHi9V3g1x3LTYdXbeT4bYSxlxRKGa1wSrxo/SdJ2lFNVugKkevPcmK7cvF5QW//uXf5P2PvstRrYh7j987VqrkjRu3ufv6Pd45fUwbIo3zzGuNsiXlbMZ8teK4u8b1m7dQwG6zybYDMjSYzVeUWrO/OJXXZqIkYzqPj50wmYxFJWj2O54/fcYn3nyT7m7Lu+++S6Etw+Cpbl7n+OZtoi45O99SFBWf/OQ97t17hSdPn3J6egokmmbP0Pasz8+5uNgTQ6DtHUNQxMGzbzpS8kTv8BF0UaFsiUuwrGpWJydYoynLAj/0DH1Du9uzKsVjyxqLqZcsihmBxFe+8w7rZsfTsw2mWnDy8stUR8dsztcMMdJFD0PL3nmSlZrGI7WeVZphkAiKujCEECgMlGVO/HZeBtzKgHLSYGqFSjafb15Ao6QJwaCDoR08off4oWerW771zmN++df+Idfu9FT1DQoNBoeJjhh7itpw89YNPve5z7JcLqQedWB7sK4ghRKomC0iTWwYfEeKioh4dIUow2fnAvt9y+c++6NsLhu++Y0HdG1H13W46Oh8oLSWuphhzQyrI9V8SbKWEAWwHd9fynVHUlJjBMQmJmQQ5irYPlouxZDDWqZ7WYklSFWiU0T7SLPdMQyB4D3aB7QVka+wiIRpozJraFTQXiUvaJ3NOjIINpn/+5AJFpmFlbciW5WcHB9R1zW9iwzBT8MjkL5I5UmktVZULCnRdy0ff/ghjWu5duc216/dYF7NJbsqD1i893l7k9cWptT5cacbe1ZEKpl7GgG4Uj4LMihKtmTIcsmpr48qnx+SwKqyz31IYgOBNhDjBLxFZPgujMYsD0URlaZQhmQTxgtzc0yhRclrjFFIBFFF0Gli/mllhYmmFFFDMibLcQ1KiTRRa/GgThGSVmgyMwxyP5Hge0Y043Uaga2rjLnvTVIVBdS4BgSg0ymhjAB0Jqe5jx60ejob1fQ8Y/Ce9FAZb0jI/Tuy4OQCMoGr4xr8nvMr5eET6nuGSlxh3sV45fVLIjUJ8Y4c+/tMXhnB6SnwJMl6cE7Oq77vwUpvqKzCdT39rmF3uWVtCnQzw3Qdqm3Ya0Poey7WFyirKRYzui7SbIThu71cc7FZs2vbLDsV/8M4CNkkjWFOGZtJGhnE5U8gZdxEBpPTKhdgbgT4RgsMElHpadCZVJ7l5VpfjZNYOKzHH/L4QwG6cikgQHPevlCIyAWTrydffTotuN2THe/+yjvc/9n7fCMdqLjv//33WD+8BCAM4bAYctFla4Nr3CSrVEoTO3nxxbzAt34qjMYF++T3nvCpf+FTnL1zTugCn/9XP0eKiWJWoJXi6Vcf8/l/4wt8/A8fsflozWs/9zqzGzN2z/bT7xH52mjgO+6M0ogbrfE+SWGuR6lo9iFSafIfi+MVuzJlSUAcnYO1ztHp0nyNwcuiS08ZJJGG0TCi+PmGJclCyQfA+LpkIuFfuFFikCRAscbKyTiZKj2+Mh8DxRj3HcbkFbkSKfs0keQ1tC7g+wFFoul7gnfUMVCYQIwCBno3CF07yY3kNQwq0Q19PmwSWsmzq+zzZcYNJzMKxps7ZPq6yrJSH31eZ1kbnpsYpYyk26gcd20MZBnwAYiVJKuUOwGVRiqwzp9JxHmhhAtDaoAkLBxpmBGp75XtNeZNLYxgV94cUSJ78SFIolR+naYoUdpS1paF0sJgQABEFwLGFpgiYkIUY8rEFbAYnM+T62TQRjMranSWhI4eWFf17BPQG/w0DfEuHfxtJ/Q+Q8tKpIu9k8l3WWaj2fy+rC3EoBuZJknEdyHmqLak7R1N07DZbLHG0s7nkliEpqpKUtQQnRRfhUIlTVQaH3Mz1LQMOUzDRzE8HZzDOUlZCsETvdzzIms/FAYpSRoo6cqUKkkRMka1hxRIQRFUBj0SjDuSAgHVjBGPHS3yE2uLPKWKWBOxOlIYS2lFjlsYizUGayyz+YKikvRMtJb0MyWMvdVsBgiL7ubJMfWswhSGoZdpaghAMLjeo9EUxpC846MPHvL44/fxw45KR3z07GOknC8Z/Ipqfp3g4f0PtwyPG4pZTXQRY++gqwVeFTy/tIRLJ0V9OKGs5jgHl5sLmqGndx1Nv4PkSGEgDB3JeWzUJBfZnm9pz86JleHGUcX1Gze4s5rRFgbvIv28QiuF6x3Re/xQ0Tctz54+Ig7XqKuK+XzGtm1JSmGLbDwcI30U02ZlM8VdIdL1bIIrkvFMH9fi2WWMmqbIMeaen5wmpsbhhSOEAR1kWjxEhSsWlGpGbS0UhcgWtOwFRJ/3uXwGpRHIPZxZAKqoXwDskmwEwgbKh6HKqNvVn0vTeZAftpoKsxHIG8/SGCP4DOwmkR0WZZYqxIiJUqCPBIYknQECtBrmleLWrRvoFPBdw61rR7Co2D46Z3+6YVEfghx++8u/zaPnT3j48Yes9y3YEluUFHUlDVnUHB+tuH//Pvdfe4WZNTxtGy7PT2m2a4gSlOC9IeDR5UE+q+ySaOb4eJgcbZwBs6RczJnZJYWtcT4ytC1piMQ+MDSaRXXMbLlkNbOUI3PVi2eRsfDhuw+5OFvDl+T3fu6tL4CyOC9AZdN0NJ1j6Ac+evwxSkWS6uj6nug71psNKjh0EDCGH1AYXb/9EhQlQctZaELC5HGq0iobUo/hSVK4iWI+A216LDrTdOakGBkGD8i+ZLOXTQyHAeW4V8sakvXsI6AKki5kReo8wY9yhnuSgH8JVDYbjiESonjOiRl7QEUvZ2VCPG1UDgxK4AZhqpnCkpR4boqnbAdoZvkVLmdLCJ6mcbhhwDnZ973vGcsia0CbBMljlBgly7arD1a8edmmmCf4V1A6CZGy2LJCWYMpSmxRiAwsSqgJjGdYZlZkdlnoe0gJr0ReXdSJXitS6Ag6su8Gtu3ArnWAAHRHtaEyC3wPQ7tFvB01KnlIidLAzRvXePP1Nxi6jne++y7B+ewHdWiIpnv8aicz/m813qz/Tx6RhAfVYgtFjI6YtDA1lVhQ3Di5zuLmLUy14OGHj/nm17/Ln/6ZP81nPvXH+erF79LsTlG+ZfB7+v0uN6JBPINM9j/OzBBTFBRVTVlXrI6POFodM3QN+J7iSkhEXc+kDjIFRJNN7smMFVl70Qe88hS6pNQ1oRUJNRZ0oQnB0Tw/471vf4dGQ9ussa7F956+D9jZgqNZTXQDm92eTdPR9A6nW9qHH3B2ecliXqOiJIgmsgQtIbW7LdG2wFhDOZujUqCwBbYsSAm6rhclQoiZhWLYXK45e3YKIVIXJdEHmqZj3XTYTcOJrnChYbvbApr7r93n9s0bqBi5XK9xnRMPJSz17FjqqrCj0JKg6foO7yJJWXRp0LbM11LhfKDtWrRWDIP4vmktIWG+6dEa9tZik+a4XhCM4vFmx9nlBUW1ws4qjm7d4c6dl7h5veHy9Iy+l3O+LKwoLvAYIlVhqApoc+Lh9WvH+H4gOotmiUoJ4zuSj/hCQgTi6GGoba6pk/g5x5LkE4OHdrPH6oAKAwrP7sFTdvHXmB8/YFYtqVXExgGVBNyngJfu3eUv2n+NH/30F1jW1wgJ6qCpdY01czB7XNhlz8REUZXcuHmD5cqhbc18vmC9XvO13/869197k9XRMZ/+9Gdp244Y4b0PP+Lj02eiYLE12kRIHhehG0Ri2vd9Dskq5WwVejrk0DCpNeSGPoDz5O/Nlk4ZkAp5P7O2YDaboYGh6dFFhS4rCBZTltiiImiPDzlEJquJtGyEcoZMQE0GM8ZXEIMwzHK4lfcScJXMGFShKKuak+vXSTHw7PyS2LaZ/ZXrX6XHDRSlFSGKdYY1ir5refLoY5q+JTrPnVt3xcdM2alPGyWOxhjc4FFKZfXnYfQYY8iSQX3lfQiDS4/DzCuAmdZglcFgSUGLHVJmKBqVe6LcI4r7Xk4rzkBjTOoAqGRfPJMBKPFgT6QQIAWRpxrxPo+ZWTMFieXzXIZOikIbtErEUZap5M9aZcmsMpAHGGk0a4tyz6BEbnsFc8s9/Q8b2bw4tPleYG8C4bTGGP1CEN1Ug159srxmU4aNGH1I80PnYe9VNcgBKJUa1xYVqLFn11fAvww0pQRJ7K1IoiS7GiQpIX6gx9HjCORlQEKpQyKxzDXls4ze473Hux4KsFYLU77p2a/3rJUmVR2m6fD7LRWa6BwXlxdSy8xKmjagQk0Imnbf0A7i4Ji0ImkhZajCoKPY7YgSTkAtYf/FCWBECUAaY5aga7LaZ+xHXrxepARZxjoSqdIL11eNF/aHrgX4IwB0w06mqPPrM9YfrV94GWLeqLjzx+7wmT//aVYvr9BWEO9+00+NswK605ZRYiSd8uEFKq3wfaCYF9MqUVpTLAQcdI07sNGuvP+v/Y2v8/m/+Dl+/j/9UyilePB3HnD3i3fptwMpwYf/4APqkxlf/EtfpFxWPP7KY5594znDfhjX47QZpqSzz9GIloLConT2BWD0BlDTxUoTMCAIukyVxvelZaMwYjwdkrBnlDWZAaenixtI+HFjyOwMn+V4Uu4rFGYyFZcpct7Ir46ixyI/X3Q9aubzfpxiemGT7VpJfbVajBtlOp+p6NYQnCP5PIF3Hh0DyUtSSUrZr21whGFAaaiLgmgLbGYRNC6gTZZc5jNHjzZO44bN9zdK4gFmRkxFPgGNbIZaT9RnawtBwq98pQygESImSbEoh0Ec6Yl5ipDAR2n+lcKFRGx7jAFrDCanbF69QZIROr4KYnJrVJbIASl4QEk0OJmpmDRxCGhlQRcE72WKgwSMDJmJN3gJL4hobCHppPP5nKrM/n66BK3wMW9iWrwJfTZFjVEmWyFvatHnaxmzyX6KoMEWmrKyE0tD52s+pIDRmtpUzGZ1ZhEGtJJNPaKwI4NOFyQXMCkn/SlF1/dcrDf0GHnQBgAAIABJREFUzmGMprYFsTDZDBacj3gfc2hHjntPin4YhDWU2UN+3+ZPWvYJnRkgI3tkXBtjyEMKI2g9NngGNBhjsKVlMRMZpzaSfKyVNNha2ck7xFg7SbeKoqLMgRApesBDcJL0ZAxWm8ymMxTWUlbVYRqiNVGJ3EuSFktGgK6ylnldYQuDih7fyXqMEVQUP4iYJH0rhUAysi/1IeRpe40LIApTRVlUuBBp9gOxdczrmuXRNZZHx8zqkiEm9t2e4PcE53DDM5yLtJ2j6wec9/jkQUVMoSfQ15SWYlWxuHGL6o3XIATuvnKPl16+R1mWAhZoCWnQxhBCZHADwzCwWa/ZbjbUpchJ0+kp7ZOn7HZ7hmEQ+XSUZsVqTVnLtQGh1wsLSAnDR+VkrZRy05y9U0AYK3GUkmeANg8hVF7TaI1Rip4kDWgOjvBpqqUk4Gec3CkFSTOllF8F2rCkaRcavwTMm0IlxglobsynuduVvTmirvzaXLTkqX1APDSF3ZwTuWw2QI4RPb22dGU/FImbJbE6OuLO7ZtY3aKiwyTNajXn3su3GPYtg2+n1/G7/+fXiFrRtKDNQkzJg8L7xLUbR6yOjijrGWWlOL88I3QDp2fnDP1AiGLInrxHJUkk9f3AGAix3uwJNuFVwRifsG9arDZEBb7r2bpEGnrS0FBrjw47+m7NYqaZleDcluA9hUpAT98HUI7HH7/PdXd7eh+f/tQnCEmxbwe22z2bzQWXlxcMg6dpOpSKaBvwoSUFh0EGFwSPVVDa7y990uSNIjukVQqbBwFjeybG2GOa8JhErhBmuJkkKFqNBbRGJRlIaj0ypUcEZ7R6GDuwPJHlwPaWdWLyeSi2AGZskoyZajAZlgp4ihbwWCslO+nohpHSBOClGKXBCwEd8oALkbi7KFPtEyQAJLhe9qsQGFzHMHR4L8FEKoKxOdE9ys/7IAw5CTPJXqlRJs0j42P07poeSrNcHXHj5k2aTsKQ1MgsV9nI+kphm2JCE8V/8cYJx0cr2l3D2ekZ7X7L0DWSCmkSTT/Q9QF3RXJw76VbFEaxudRslcP1DVrLYMkkScuNfkCliE5K6og4XjNJ9hPPopR9eA639guPKxje/52H1KYBGDKr2wuDSCVCgJOTE770J/4EP/LZL+CS5Zf/7q9jUsm9l+5z7+dfx/iCt7/1u7TtY5wTGY8tZOAWUpY5A2hLPZuzXB7jI7R9x9Nnz2jaDnxP8P0LacVlPSMqS8SQkmE5NzK40mDxWD1Q2ihJu3aGske4fYJ9j06eMhjwkZkKVBd7inlFv97z7OljCrtkSJqzfsvHzSVhWPP49JQQFWUlYVnOB54/P+XSKOqchhmGICrBmEhKhlou7GkUmOiwRrOoa45PTqirGYMb2O127HZ7dtutAGNtz3vvvIMtCuZVJcNmF3l+fsm+czx5fsq8qhmGjg8/fMizp4959dVXsMby5OOPOT07w7vArTt3mc1mdMPA++8/5Onz0wlg10b8UrXNZ1KSlNT9fkfTdwI0+J6hbzFJavGu2TLke2YYAuvVMaqwKCvnfLFYYetK/BkHT1GUzOZ13nM0RTXj4rKnbTo0ibKsmRuNNgmPQw89sWtoXGDY7STQRssQssVAEjN+RrIAIuEjGPCS6q5VRBURbT3B9XjXse8a4uMPKTctKhpsP2CDx+hA7zv65Lj+0Ye8+dZnuHf3VRbVgth3xHiJrVvUfM/Qb+lci50XlHXNfLFAaUvbOdpuoGlaHj95hlYl6/WOV1+9z2635969V/ns5z7P+x894ve//W0G19M2Wy5On7I+f441idVyRlkaVitRbZRVmYGgfGdn4sJhjJb/Pf1nmr5UHiCO57PKthsKRef2uAhJl2gV0LaUvTaTI8LEKEqTh7UcP/JKQvaUg3G4pzKwJTVjWRSiNspEA6ugKCtmi4UM0rKU1iayVUjM9i95WKOUhLmFQDGrsFXBQCAMHX3XEnwQ1cOLuM/Uv0kiuXxSahyaZIZUShl7zOdTzKy30SdaPHrHdF8mK6eUhIEm8488kdUC0KkMloxDJgF/JIQjRgPZCw0tvscheMxIi0L6B2tlzxqsJQZJlE+iu5p6w0jEJkAL6SSFOA2arrLQJh/vlO1zpGXKoO8BDri6knKrP36Q00O81w4qxZRfr/rHHCATI22sRNRVdSE415OChE+JN/0BTEyI//V4Dstz6cxik0FOYW3GBEZJbf79ubYdGWFKK6IxB9/9vGBVDhiy4UBmOQAVWvCAEaS6gk0oJYnjro/oHJSkI8TB0+9adiSibTHtQL/ZUGIgetbrPTEpVNmx3ffEIOm2PgTxnMsgYlSyjZnCSi/hMws295vEQNIIJqTIQLMM52IGIFOetk/LS2WwLnEgbSmVgT/5hlGNM6khR4bpD3n8oQDd7vmezeMdr//UKzz+2pMrCypTSY3mJ//yT/AH/8M3+ODX3yf4yBv/9Bt88s99kqseI+L9JO8mZZbE+B4ScPFwTbkomd9Z0p1KQ3H02hH7Z3uGvZiSqgQxAzwqJWIT+cpf/71pA1vdW/GFf/MLnH7zOaNs8sHffpsHf/tt+Raj+IW/+gt8+3/9zrgehLEwmixe0WqLEbFQMKOajiZC7sdDXmCMG0nksGkzylYUY/pgTOCTTLF19sZKGciK6NzcSaOmsuGdj5IUFtEkrUerAkIgb+wH00FAJvzjISGfOqAyyGNEGuYPxfu4Ydps/jhOiMvCYHXFwuppIZnCyu4UxBxfgUwX8s0DEmqRdKLQo7n7wbsEuEJxlYRPgKvGmIL3KIwusIXFljZ7dgkzQGz3Dl5NaEPSkrs7JinGmITFFiIqeJIXppuPHuedFEdRgI7BOea2op7NJ+PWECUhU2tDiGHy9gFofW7KEqBF+uS8Y3CekITREpMETzjv0SZmc33x3Om7YWrU5WfkdbsgjVlyLp/CYig7q6u8WckmGZLO0lphcIy+a1dp5jHGAxIKWa4qd5uxRor0fMBfRf2VNZR1TT2fi7zUSzqnFGQjwFCIbBi5HrYosEWFC+Itp3onm6qPtEEOPB+cMINCkB0xH0wKlYtgYV4K21PuM22U+B8WlhQ9MYzeCIdGVevxOgp4VlWVGDAbQ1mUlJWlXlUCyE0Hi6wXSfLUVGWNLbJpcG6erS1IEZwf6LuGvm0YhkF8zqzN5rAjoyVPIzNzLyTxW9LpMFUBmQapGDFoMXGPwtzUiD9QShC9pPJaW2CNfELaFkTXo61lcJGitBgt0uL95YZ+6EgojldzbGFofYfrHBebSzb7NS724r+06bCqYlEdQ7SUesG1oxVFXVGt5tSrCr0osKuaxfUV1XJGoRQ3yzlHZc1stsCUJV5pglYErcX4OYlp6hD8xPYsq4IYAvuLSx6//YD3v/Ud3n3wgIvLS5EQZ3aUeC/IvyfYKTGxf4wyOUwkHk69lEjT/i/s4xH4H2WfSicxlc2/MOVKKY7fr5BCISdXpVz0js8d41gaj4+rHliH3zl+jedgUmrU5kqhldILw7FREjvuzVL76cl3I3jZP3QGlFGZYaTIe38iBpE+jkCkNZpCK65fO+LmjWPCfqAqLH2z496t6yw/8yY+eL79nXen17FrA6ac4YNicAllDfPVipNrJ9y8cQMXBp49+YD1eotRNZoClZNjlSkgBnyIlIV8pj4GJoDu4hynG5KdcTM/X980uBjoE+iYUM6TXAdDy6B6CjWg1Ia69mh6WrehtJJA6mJHaa2s/7DF+dn0PlLao22B82uePfuYs7NH7HYNzoXszxUYnEepSAxiPWCVwmgr1/0HFEZt57GZpUSCqA0imcu+iNPOpbIEPw/ppheV10WQsZvKbHE7hpGMs7vcsMd0CHQYwboc3zRJrkamnTF6Ml4ePX3EH5epaDYK4hVJjJWVn5trpnsiZqb6mP4dYsTlPUlpxND+yi1w4y8lYJ6/Xv6+z+3/jcef/e9+7nv+z/3/T55nfFgj989iOaeqLUPf5qY5EEKkKkouzy947913OX3+XGT9Wk11U8qUlNH/KOX6Nn3P7qF4kUHxR3/Ic4V8vpvcBEel8Slw/eZNfuZnf5ZXXv8k733wmHsv3WW/GdhtN/zsP/kTnCwsf8c0nD2vCGFPXc+YL+f0fceT5884uzhn8IFqvuCNN9/kk5/6DOvNnt//2tc5PT/lcr1GJ8eystSzAwM3aSNhTklYpSJLrih0Irkm+zNLWEqfAiEm6sWcyhbcLpdcNzeYGcVqeYIpanZ9jzZb1qqgcT2Dtnhj+KDfYGJBGyV1WpkSXRTCNmsaXNdirGGmxfs1alFVJJWTUENiiA6rIlVVkZSm7XpSktpiPl9IHTo4hmGAlHC9I4XIYrEgJGFXFdrS9j37/Y6tVpRW5LwP3v4Wz549xmjNft+AkiGQMLI0XT/QdD1DPwCR5B0pRYrCUs1qTFHiEJZ/8D3RO2l6oycF8Q9MWlGXGgZHitAmx0W/pbv0WAy6LjGLGS+dHJPagQ/ffhefHIWGmbESqOV7lO8wYZCTrE94FSiAa8sjrl27RgjHNPuOfvDU9ZzZfEnnIl0T0MwxyQAOsrH8BNDFhNWSHKqMZ3lcEGNF33X0g6U+nvPWH/sxnn70jKcP3qO93FAWWliUZY23c4rlMdEYnjz6kEdvP+DxBx/wf1H3Jr+WZdl53283p7nN66KPyMimsjKrWA3JYhVpQvaEgC0ZFgQP7Ik8NATDE8MDGx544oknBgTBA3tk2P4HDE1kwYQEEiRNiWrIKlJVxazKPjOyie7Fa253mt15sPY+90ayKNTUN5GIyIwX9557zt57rfWt7/vW5fA58XiDiZ5mmFG3c0Cx240oLRYh3gnI7EZHiJ4f//jf8OGHH2LrmvPLF2Cgni159ZXXWG83vDhXXDx/zma9I/iefrelbQxWSaOubYpHmfjk6bSXMSZVGom5IE8FZBHWqMj8JS5kuEnA+5T9yiMyETIllBMWTxhHBufzVPuDXZ9jARwym/YASVQCVCUtZ7xWWoZwGZMbwIG+H3n67Jyh69lstrjgpcGa87WQlUm2ssyamnGAYeiJwRO8IqpAcI5xGKaz65D5k5AzyTnJCw7PLKl9M3NIZZKJyqqxUp9EJsWUyP4CMfgMfAiLX/z3IIUg8tMkI3l0lnWK6MCTkuRLNqteQsj5Yo570efcJduk2AKeFk+1Ek9FqyGMKfYgSwgidVZJOM0pAzuleDoEZmNCBp/kHLN4qKccn1N5Yw4AmrxeEohSL0lTWSVpEKr0FQZefo8Yo9QS5Z5+xe6qvFyQpn+R8hY7janRRZpIPUoLQKcUqBinPKXUWzo3vsXnXD4w+MKg3D/faXgfe4BSaab1KgMkxZ7F6DD52xV8wNq8lmlIyWMbS9O2zKoaiyINnj71RD1AN9KvtrRKCBTjyLRHh17qcBAp9jg6IXVojbZGmpcxD9vMvxf4ptTGAhLKQlTEUGAeYRgqDYUstQce97VCQvL1mBlFExlAlWtML3n9/qLXLzUk4k//zz/nd/67f5fuuufnv/s+3UVHe9rwjX//6/QXPbrSjFtH8ImjB8d8/W99XW54ehkxlmny2UslFzMhyXSM9dMtT378lF/9z77Ln/1vP6I+avjG33mbD3//oyzny8sz7Rf3/Pac6CL9Zc/RK0t+87/8AZ/80aesv9zIoplZ5mcz1o83VEcV3/2738V1jk/++JHcQEFaMsKab6T0rQlJZ32xgAe2aVBKkP0AUuhnJN2lwvDJCxoFKmEqk4GjKFp1ZfbdcSMG37I7skF6kk8PSsC4kJkjMYN4kdwFSdItkQe9f8BJGaIKoOxL8hGZECqTUozWVJkea/Omq/ImlMHowkyzVYVpDIMb8M6TFBM4M+YE33iZehtTIIbEMDgCCeccnY+TdFephIkSXJz3qOx/U5DzcvgX5pzRRpiHSb6rDzI0Ifgo01Ly4ShmtrmwRsz8ffa0IkQqJWBnMcEEqOsqgzqVmMQW88+8Xv0kOU74fqSymnm+j88u14jDmkFbKcacGxi9sKC0tiSV8GPA+ZG2DYSQmWoofPBImFETY05ZgzIRfJwOQpQCW9G0dQYmZVMLG4Hso1Ym7ewD+QRcHZzohTlxqP0vQTZFkWnbMh3JiFRT9mT++0CIeZKxkvs/juLlEmLE2IqqkvUfkkwLHGJAZzqxjwI+lAlDBThX+WD0QUDkutK0jQBmVV3TNDWzpkEhQLQxCmuqbOhbOkbi92CspakFaLPWCkDXWtCBpGX6cKFjhgywCDs1l1NJJLXJB1nrUSbPOu/oRxmYEo2wQJNGAMMQc0dKgJWkCp28HNBxX7ir3ItNUFcVy/kc5yLBRawRYFGONvGEInhcHEgGmqqiqhvGURgUISQGN7DerAkx0bQzUgysNysuvTCNt92W3o+MRqHbGersiPnihFs37nN6dJObJ7e4cfMmpydHNG3D/KhltqwxdaRqNdpCdAO1U4RupOsHVpcXXHU7kq2IWvNivWbnhtw9UlR1xdHRESa0aK05WTRUD+5zrAy10rz33ntcr1fEZKYGTZnYpNQemFNJGjHi68HUeU0lK1alCM466SwrLNT/hEwAdiGQdLPvAMXyGWqSx0l3i5zwyJpU6SsS18mUoiRWkjRpdGlGktSBt+iEer8M0Elnd58cSXNYGLApiH2D0VoMrUniJ1paxIX1mwP8dKZazXJRcfv2GcfHc662ka7f4bfXbLc3QBkxdD8YdNO7xNh12HrOrJ0zP1pwenZGXRt211vOL56x3lwJ+GZl4t9i3jJr54wKXLcVa4A0onT1kjfg5uo5faxItp0AutWXK4iOxiJSOd+Txg02jWgbqCpY1IagW3abgeDFPzD6gDE1s+M5VV2D1by4vuCYIwDee/8dTFVzdb3i8ZdPWK/WeCf7t7J19ljzzBdLFkdnxODptluCG/OE8L+a+ugIOpZusiaGhMdnADYn6D6gVBSpa2LPoEw5Fkb5GVLCKzfZUUgPL/Pw9D7xlWMhF2Tsp4kBpJgT/KgheoLesxPKkJ8yIEcaBjHLcXWefqYz40BPgK7J60cbsU0w3uC8JwWFwSKpR2QcHe7zSPXw355A/v/x9fQnL3j+/BmzWcvx8RHz5RKXVQDCbA5UyjD0Ax+8/wHXqzVudKjG7mNsKZ7zmTQVh0qBLZ46uXhKaWpCAhNL4PD1VX9nSTbr3DTOZ5zRtM2MGzcWnJzcpO963v35O/zrP/sRn336Mf3O8Yd/9I9p7Jb7t27w5lsPODlyGBU5PpHveXl1iY+B6+sVWz/QKs1iseTevfvcuBnoB8dnn3/BZrNBBcvRUSt+ifml64o0RlKShlrnHCEFWqtRccTEkdm85ux0yWx+m5OTN5hXM2bBcavSHAWHig7VGLFNWSuOzk5Z9Ft26xWzqqJqasbgiU4qImtFFmirmtZGtA90bkT5QBpEtl4nLTtVW6rZgmQM3jsUnspqnHciI1WauhKljgJOT47ZbqUJV9XZ09d7rDYM0TGOHZGAUdJg7RXcPDvBaMX15Tl9P3ByesbxyQk+JPp+x+V6xXa74/r6khS9ZPxJolZlFG1taeYzsBU+ydTUYfTC2g8eHRyNVSzbirkxKCoSGtt7ep8Y3QYXIkd1xb1bt1lUDZvrK9aXl8xrQzuriWpgO/R4DKNzKCW5UvCwWQsBYr5YMl/eYDZbUrUzlLbEZBhd5Nn5BXG4YFZb7t++hVKJy4sLdpstKC0TqaOcb+KsY4m+ZjaraZuWXbeibk95+OavkdSXnH+5oUk1J0ctV7tLzNLw1q/9Ct/69e9w3a346R//S/7F7/8Rly8uudisWQfHeuexyRK2Hhc8IQRsVVPXNY2taWrNODi6YSClxDBu6cYt77xzwaePPuTGzXtU7Q2xGEgjKsK8admMPa4fqFXNdrVFo2jsTBqW2lBrzYj4bKtiaYQumMZBzp2bKjFmy53Milcc+CRLvehjIARH8AiIEIOoXPJW17lxP+UZmVyhctyXiaOKGLUQETLoFb3Y2Rhj0KZCJcVmu+P64gWXFxfZNiPh2hEfGlQQYNFoLYx4owXIVZkkkOK++Wcza0jtwRdpSO+nfx6ea+Ucy4di/k558idkttZe1hpCmGwZTLYVitqjUz7z8n2QH9+DROXgLcwxqbf3TaVigTPJZ1URuahpQJ7gCLF0uEQqW/L3lFAxT0VP+TuTQdo8qEHskvIVprSvubRGpSIhThPeMRFRSuzI98FWIrv/ag+ngFn4fd2WEjLFtdyB/L7pAGgpNfRXY4tIbS2FOrCvB9NLP0c6INKQ63dTVCxpAhvLYy7PQ/7s5ThWspqSm2tdlH9q+k7luR0+L6VkraRoqFuxBmrqWjzXfST0Dh+EEBG7Adc7AoHKWELMShynSFEGqAhmEPJgT8FuSAZlEa9wI0rEpMTjfJ/vJ6yu5NkmmXqtkjD6kuimc2NGCpEyRE5nQD3m9VnIV7K3DIXUpZSaiGp/3euXAuie/OQZ/+R/+EN+9T/9Ff7jf/Afoq2mu+r54oeP+fgPP+FH/8ef892/+x2+//e+x8WHlzz6549443femBJNQICWCfE9KGMzQAfwJ//Lv+K3/osf8Hf+1/+I6CMf/cEn/OwfvUspbn/w936D+e05f/w//XMSieNXjviN//x7NMcN43rkk//3U975hz+ThZsSpmn4rf/632Fxe0H0kcd//oQ//B//GNfvvc1QUvzs+kGOFJ2NJ7Umz5PJwwOqaeFFiqxE5Wmasti0FkmH1gJk2crivXTwU1JoW+eCNvvDFWppvkcpFtBQZAijk0o1ZTmcgJxyJKHMdP3lJRNaFcmYCYgBAcMiAYOmsVUu8uSQjinJoAK5IWImGxVhdIQq0XnPMPSkFAXIITG6Mf+/IGa7SgmTrB/wedy2j4qIwTkPymCtIaAYhzFTqw1uHHCjI6Uy8bKItfs8glquO+TNG2IxYyw1t5o2jzDtpAgSooF0JYwt4SEz75Ig5aauMVbYbtfD9Z6aq3JRjqLfdWileDNf3flqI0HYyKAEH2OmmgvkpbWMTZdz39L1Xn5eKZQxWc9vJKiklOUOlr7viTHSti2LxWIKeiEFBjfishGl8+Gga2Rwzu3BC3IX5AD0lENxf1iHmHJxnw1ji2QHAaycjwwuCJsyJkKQ7+dCwgdZJ73z9C4wusAwuOxhI53+wijQ2tK0cxbHS5xz9LtMlVdigh68GOYaq5hVlqZpqauaphE242KxoJ23tHU9HerAJOV1zmcPwAyylB2klKyxkAiDI8YetHjikU1c5ewVkGeMPTrLhWPBQrKnhQ+JoJAJu3mYSHIBnYIEEKUwPuQ/j7nglWCZNBhjKbwDWzVghEpdNy1tu8C7wHbdkZIW/5+qyp/bE43BmJqoDbaqMSiaKmRJqWe3u8L7gBscy3aB7waC9YzBs93tmDcNN87uUN++w9G9e9y5e5fT0xscLY45Xhwxa+YYBSr0DNuOvrvCd45+fUG3uSK4HX7s8EOiSP975xhipF4s0VXFxWrF5eqakJIAorXlSgn4r5TCjyN4uHf7Hr/27W+houcv3/kZu75DW5nW6L0XHxGtJhbudA+dxydJIkMe6FCYkAK0SndTJzEmr6zIwcuUyhD1ZLpfJgGL9CG3QEv3KpElfwKq5KbY9Er+0ARZfi29MgnA0mk8DLOlNynemyUAekmgSpct5f2VonymkQ5vMfXfn/myj30Q3xOrNcMowLCxhju3b/Dg/m2qSrNaXfHs2TOq5Hjvg4/Z7EY+f/KczeCny7DtDKJhPj+mbma0sxZCYnW5Zr2+wrueVrckYwh2jjYN8+MlZ8czunXFRmuxDhgjTW3RuskbB7aXT9iOiWjq6fOGFwONTbRHFbMmklQgGYfBsZxZVHR4JdKrjh1GLzCmoq4VVZVwONyYCMPA9WrFdzNA96Mf/jDnEeRnKOxwHQLBi4dapStmleXsaCkyVecYgnjQ7D3g9i+rNFZp2dMq5waq+LGoCetNGhlWk8/eIrEhSaElEWefyKqcpJWEOAZZi0XSVNh5Khs5T6zoJC2IlMCF8p4HKywXDypmmVM2DldKEaxlVKWQyt8vA3TFiBmkCxxTAY4zWz03Hvo/DIwx4cdxYnP6EOiHnq7vcaOTiatuP1FevlqaGB9kWZXPcaeqxF4gxIgPnn/v738fgH/x3/+YdjbDWsswDKw3G/rNDt+PuBDwKYIRFnitDZVSNCge3LrD3/6bf5O/8du/zU9++hP+0f/zj3n/ow8JSrE4PcErzbbb4X3IrO+axfJImpyAaWZ0znF5tWbWynCJ+Uw69aPf4nrH6BzGGlyeUF/V9SRzjjlPDxS58v7Zp/y8irTM5KZjKaxemuJXWBalaEoKRUOlG7S2hHFAWcP9B6/z3e98m9VmxT/9p7/Hbui4uHrB9XrNdr3h4sXHfPH5T7l36w46JPrVmuCcsNLrGh8DV6sVu67DO892u+Gjjz5Cm4obN2/z2muvcnbjjMdPntBv18Rxx4uLc94gy8u1YnFyRMJS1TPZq9ZyPG+Y1YkHd474ze9/m7def42FPUMPR1w/O+fxZ+/x2Xvv8eSLJwxuR68HVuOOPiY6XbGJGrtYUtmYJ6EbVusd4xioaos1FXiZNuu7Du09Onl8cBglkvWmsph6RrtYEI2lG3t8KFI9PzF7xmHAO4fRhrOTE2ZtQwoBoxV1Vcu+QIl8tjIkvPjhRmHBrdaRk6Mj5rOaymqOjxcsj2ZY2xAwrLc7hr7LTKwg/k0mR43oGPutxIdmhrIVxIQhYSvJZ0YXaYxh2VYsG2najErReIUfIsujI5jNuHfjNq+d3eHp48esx5Gjpua0qojDwOhHUtMwmgZrGnx0jG6kqWtROHQ9Q6hIT65oF5GHr93kwStvoE3D9aYjzu9gzs7Z+Eve/pU3UNT8/Ocf8sX4ZVZDONLQEZHprpU+pt8kFvWMW7fuMiyv2CbTiSWHAAAgAElEQVTDe+9+xvHyNt/93m/z6v0bHC00/+rP/xl6Dv/B3/odvvn2Wzz7/DOen1/w7geP+OzRU6jn7JRYp7RqwBBF4WAN1onqwpoxx/KAH3siEWNF5WOsIcae8/PH+HBNiprT4zlnp8fMdORLP9Bvr3EqcenOGbotwSVOzs5ISqSRBiZQKmaZm+z1PYiAlj3siFNeWACsMpAh5IZ/ztCJMTCGIBY5SHMZmCZwTolEHjAwgSkKwEhdE3Nj04Z9PZ0S3nmpXSOsNlvWq7VMeE2B7QZsbYipIcaA0oqu61g0tVi2VBVGZZJKDBTTkOA9kpqWM4zJJ76qKlIsjG3yIII0xSeJfft6pK4qovP4KLlLATjlZ1XuY2dWcsp9jwmcyrV3zgVFKFTy/v31wR408t5lUGzPRFNFllxqpbR/ltKMTQVZkryxNFVUmkBTnT2jYkry93Q2udDSRFFRsIPCrJsAqySWV+UuAcKkD2I7cQh2FesrO63DhMpDzsqQRaYYEqbYobWmqivSNk2MrSItLbmD3Kf9fZ8sJw6AzXIvfT4XDYcMN5vLpDTFsFAY+Okgz1HluSpMklq0fIb3gTF56qiIIU1qqHwDppgJohaMWRXnugFCQPmG6B1xcOASIXgGFUUp6JOwbL1cl4tSN/uQWZUhEQP5mvPn6gwoa0OlY66RhUVrlMmEFS+Ao9YyWFLFScWmtSJhUYSstpK9M02pzc8xCWo/PZOCff11r18KoAO4+OiSP/z7fzKhiyI1lEX+/u99zAe///FLhc1P/+HPpprm//6vfnd/kblTMG1cstcK0K9G/vgf/EtKM2F6g/zo/vX//iNgD2h98cPHfP7Dx/uf+cp3XT3f8Lv/7T+Rv3EAXEybA8Xoc3qcD8CCbCalRJ8sjySjpeIzZVKejGIr0fIHIAXpUqmETlnTnjsoSSnKdBeAfJrJ+OupGDtg3ySFSpr1bpDST5WrJV9Lvn6jX7rnQ2YjoYXS6yOTLEbnAsOFSBryYlY5aSgADwpMEhmQ0aIpn+6rSJNViqSgBFlOFU1VU1cVzg2AwQSZ+mSUptt5SAJExiAsI7KcWBtD8NKplymeMd8/RYoKn3xmg0XRwGvpZGkj5qBoGXCAtpP3XAkOE8IfREevkCAlxXWeUutGAddizJTvQxlbTtFs/dKS0nUjYI4SCZZuKnSSaXIikTT5kBWwSvkyVlyhrcFouzcZz6V9OeBijDKxsGlE1mUM3diL9EjlSatRZaZgmCawHg6HOJyioxDgYVrp5VmrIhEFVML7MQN/kTLh14fIMMq9GUfPtuvp+kG85GJiCPIrGeiKEUxdiek/itliyb3797lz/x7b3Y6ri0v63U4KtOzNEUOgbVus1dR1K75x1mLrSjxB6orG1hMQUij18pziHthX+2cmjDZABbROKEY0BwWQNhOoB5lJohHPtOxPpHLXywcxhk3ZHDckRXTCUDHWiPwWJhamzs9WGXJQtMAWgKqZU9XCBlRKAExLpJnJEJqETIMCJV4l1uaJphUBI7RsLyzS3c6x3oxsNiOtqahSjaFCYWjqhsXylLde/xpvvP11jh/c5fjuTY6P54yDsOBWl5/y6YtLLs8v6NY71qs1u67LSVEg4Zm1FYvFnLpqaZoZ8+WSs1fuce/omKvVmsvrK5ant7j3yuss5jOOF3MqrUijo7GG2hi6XUc3OC4ur9DG8K1vfIOh6/n0s0dsu04YpFHo7QadEyiZnpUQ2WxShSUqwHqIkihppcU6IOkc6IzIAlNmGSuRMNdVRWNlGlf2RBawJITMUNOF/ALEgyTugDWUPHmkE5Il51+VTJlF7S2kFTlpS0kM+g8AOkPM3cIwDcMpoKMxeWxQChByB1FrkSfkxoIYIHs5Y2NA42mt4faNI+aN5eLFMz7++GPW6y3z2rJaXbDeea63kaTb6TrqxYx51WCMZei3dJcrScp8QGOYN8fUtsKlxE4JG+XmrTvcOltwZWEcOvDCSmnqhgy5A9Bvn7PZ9th6L0V97fYxr796mwf3lpweG1JYsd085fNHH2BVRFNxdd0xDA5rI1WtMZXB2grvxchdKRhHx2azT3Z22z3rUGWUTvzAVA7VOeHynrET+aJ4A8Qpdn71FZwMViEG0JpUWBRG5UZYTrjjvlAryWQK4ktbGYu2FVX2UFVF7J6PKikGsp9s7nSHJFlGOadilIJUxSiFUl5GJTcpvr5aV2gtza/JFy9m2XjOc7QVea3WWiT6BRTMzaUQg0jFvKdM7y6srxgDtTUsF0tCSpmJozizZ8QIXdez3u7YbTv6biAGaE0lDPjSYAsjIWZv1Jgm1kHKTLXycn4k7uSz+75nt+sIo0NlOwdhk+bEUJV8RTrgz5885sN332V1eUltLdZafJABGMkK+8iHkaapuXv3LovlEZerDbZtaeYL+us1g0v0w46+cyzEDJGjasa9+/fRdcX56oqYIk074/TslPl8gXMjq8trhl1HStnPJ+dMEltETunxLxU9h7YeX/UMKn8uhZQW9mTSeC/3zQdF0paqbrj84jMeP/2CbbfOQ6pGduNIt73k888+oEoWHfIwn2zXobJ8nnyto3M8efKYfhg5u3GT27fvoLTm6uISN/ZUJls35Nft27e5+/A1qnrG2Y07HB2dspjN8GPH5vo5D+6d8Bs/+C3e/trrDFeBn//pxzx+9IjHn33MBx+8z+pqh3MdO3fNVnk2RqPaY8ZYEXXCxZ5KGfQY2Wy2hACVbdBADA439IRhRAWPJsj5rMCqovywGBJD17HdrYmIbYk0XoRlKmCbrPHdbktlK2L01FVN29Tif2osgQh1toaJkeA9IbPUuz6DcMbSDx0zP2c+X9LOF8zmM5wbCUPH6vIqNy7HfE54hs7RjyPJbFBVQ5KkgcpaGi2etU1lqayhbSt89FilaJYt9rTlNBkWy2NOlydsz68xKXL/5AwTA6Hbse224D3KWNrGoKyhD47gAioGrNZU2uKGkYvzC/rH55y/WPPkmcT1xfEpt+/e5/W3X2UzPGfXea4vPfhjTNoyuiuUDrSLRBhHut2IZcminnPn9Abf//VXUfYCX1XMb77Jw4dv8/rdu9y9ecrq6hmvv3qD5emc7/3qr3Fs5ixuv87qWz/g0VuP2L5wPLtaMyQBtnZ+EC9iLYO/rNZoqzEK0IiFSvRUjaWqEC/hppF95zVh66hMC9Gz26zwQ0elFU5rxqGnqizbTSSEc3bdgNKW3gdROtVNPmVK7nwAQJX/rdMElqScO4pVRm72y6GMIntbW/FJUymDYCnHh7gHqyg1cQGSJrIFU+0dAZUHCxZWV0pCvAhBVCdKaYauk3NdRZpdTczS7ZBzi9F7qvyJ09c6aIr77GtNkjpF6wzmIJ8ZUolbco2CeeV7lPasKMmT0gTelGa9Njk3m2KpxOjgsw9cxURkKYoq+Rw92dyU+lQf2s4grELy9cSYcrN3b1ZRYirkek9pAeUKcSZJnSZNl71KYvr34KXyelQFsMwYghBIcl2qFeKFrUjaHNRs5KZOxhninnknuYCSHNFIGzv5/Nzzn5cm5XQt071IkhtnpQpElJYYXOmKpGy+5zHHmz0wJm+3l7fuK8k9YDhJntM+QUmp6AQOXungylR+dpnIVOrj6UcnfEZARBccJE1wXrxGDegUcMER/EgYvNgDhQymGfFsLjZTo3cC0GW/9sKQLFNlJ0VXuTYtuZ7FyvMJWf2k0mSFlkuOnMdl6a/WRDQmT/gV8zHJjVW+Ny81/vPzPbQo+0WvXwqgm+5/OihFCthfDov8IKZFPCHnB2+kDn5zsDFSPvzUhDQffvjhb/aI+cs/94tRyHS4i9Lh50E5RsZCx5q846b6HY+ffrYkhRkeIJHEdyN/hlZlyqsMeRCfwTjJn0SeKh8VM9Mo+D2jUKZU7u+LQQmNOb0MapZgANKxOGQpjlM3Q8wXOyfUfKP0nklSjKTJTMGSOCqyNl8AgzwbS9BgI054xJQDiwA8MUZMqjAtkAw6CVCQtMgmo1sDkuzU1YxaKyqTp+vERNO0cigq8a8ypsrUVgHorDUS9KbCxGRWWJmEFwX4NNmfJcVJ7goJghz+RhlS0kSfO07Za8Fai1bq4CAv+LNsnqZup+AAsDw5AbU3WT4EhwpjoBRPKiWS9tOPCMNqPwWwBMeSMIYgQx5ScFmCxd6LKsYcmMwUDBPSyZLvHKeEs/iNv0QjRoJcTILYl+6+3DMlcuoogJf3IlHe9SPDMNL3A5vdjmF0JAQQiUoALZOlYtoY6qYVloH3whKbLbC2pqoC7WxBZRvq7KtXGYtKSVhjWZsfkkheA0nkmcHTMQi1GqSgC6WbIsefzwFi6pLl740yGJ2Q0RZhaiToDOZqbbJfkDDdisltynsARZa8Z+CseIsFYbFZa6nrOvtqyCFvrc2G5uT30jheADBbnNLMLN51kuBHRYgK28zBJLxHvKO0AmUl6TOWRENwCh2lYz0MkdXWsVoPdH1kuRTat8YyWxzxypuv8+Zbb/Hmw9do24pgHM8ef8LHP/yEqxfP2F5fsb6+YrPaMQyednaKbY+omhl2fkx74wy7nNEcLTi7eYOTxSIPK6k5PjkWQPWLp1y89x7rXc/bb32Lr7/+GmfzmgaYa2g04LNPp4Kfvfc+T58+p6kr3vr6G6AS73/4IcPYY3Sm3iMdNQXikZjlo8Enyu2XxFeSx6q2IoVusr9gfobFoFjFiIoaU8+obDbpLxp2Jedv8A5NMYCVuKYpo+oP4kkKTFlgyYTy9RTD1ym4I7LpKZGPe+aazqBE2efRSxe5MnrqPAsjK2aoT4K7JBQGRYCQSMGh/UjbKE4XDWdHLSl0XL54zvPzcwYXqGzNto9crTy7QdPO9x5SYxjxytFv+nxuWTEYD5pKtxAtOjZoFN6NKDPQdR0rG1mt1qy3W0yCWd3Qjz3BjcBS3nt3TqsNrz68B1wC8Dd+6y2+++2v8fDBkptnFVbvePTpz/mj4WOCi9y8cYtnTzUff/oFMW1JOtKPAxUtKRiSL82cgBumr0FbLSAlacCkBElaHtL2kDgeU2TcbVkHJ7F+GOV6TfE3/MorS5Xk3xy1VY6UqshYBIDloOtMtrvQCNobvCN6lyU15fzdy0lUkvOztgZjLbp40R3ECpPXsc6d6WltHGTKxtTiF2vFO7OyufmR2eY6F4TS6N9PrlNaif2A9zLtcRwZhoHRDSgPShVvpRwRNXJmay2sVWNoZi1VO8PULXXds606vJMmZcqsO+89MQlA4rJRdWE6OO8lhuaXHwe8UtmTcYQkA0lKLiamziJfp+CsCa7TJX/5k59y/uQpCVivVjLoIgVwHmtatK1IQ49SirquKJFe5TT69p37vPG1t3HDwKcffsDl+VMarfja26/y5ptvoivLh58/okqG49MT7ty7x61bt+h2Oz6PiRfDQBhCBoGU+Bjlc6E0H8saoPxM/u5f9aFJBw+4MCmDMlS1JQTP+x+8Sz9seOXhA9w4sr5eEZOnaRqaqqYyY84nmKT8pqrlXMryuwRT/CuMzs1mza7b8dlnjzJTPXDn9i3eeutrmGq/We7cucn9u7fRumF5dESMkW67pduuePr4MZ99+h6b9QW/9YNf57g645333+WdH/0Zw/opq27DqCuuuoFdvyMsatYk3KaXotV6YuWZG/Fi8jFhjYCtfb+T+B4D86ZiXjXMa8O80hnMqnAh0YVENJq2rnCpwScNqp6mF/d9xzh4QhD2v3OaqpKiKwTHOPZYO+P05Ii6rRjDQEjiX9QPiSF4umGgHwZ8iMznC0y1RRmLi4mFH7FVzcnRHH/7BuN2R3ROmkbZFsUrGQrnUiSMA+hK9sQAwRgsgeQ0No34Xop2Yypmp5b6ZEZjGuqgGFZrrlaX3JgveXh8xm6z4nHXYWppwIwp0lYix9K1ZtEsMFozOkeFwUcFGsZ+ZH3xnO1mg8ewOD7l4Rtf4+Hr97hz/4zHnz9lc72gMfdo60TX9wR1RdKd5Lg6UqtjWltx1Fq+/vAWZ7db3v7W27zy+m9iq2MW9QwdEptbFd96/R7L5RENFrZw9XSDf7ZhETWvnJxSoXm+WXHd93ilSj9M1ErRE4LCpSi0MyK60lijpBmLwpqEMQnnJP/WKjD2js31Fj/u0CrKcIjqiMViwbbr6AfP1dWVqIfQNLM5pir1yX7SZEYoyES5qWg4hCQmmE22XGZmVlSVNHbFF1Sma/e7nVhd5CY8+cxT2f9UYoGltoa6yvHH6GyE34pfl7FobfdMO3kDIYGkSIoO18Nus5aYnZswVW0nwIKSsiANoxAkH9cZhChMOaUOa0yxVCqy1kMAorx+wf/K9+Zlko9GVBEqRfFYzyx2W1lp9MTsjTZJ/uWdYypSV/m0aZAiTJYn5Vw9JOfsqz05p3OGhkbYb+UHpTbOOdoByCEfESdcIL+FgDdK4krMXA3xtrZUVUVtZep9GernhnG6Zl1snXReY0iTS+XYreSQmuq6l2wR1P6elPujkEFeMcmwkJQC2oifrVhJZZCK/f2S6U5apjQfPDylvwJk5T+L05rNz0NlP718r8tSFG7OYVMqy5Wzd3t+SBRvQpNjZkyibnHOUzlp2JmYZOCcc+Jh7sXr1JAwQRra3gnpZHQOn8IEdu6VDGpa+xNjXZXJ7C/na4f40uTRV1CdSRJ7uKz2OaJCztik1PT3ImTbsXzP/7pNwi8L0BUUPF9iAcumxY88gFKccrBoDv9zOtGU0Bx//H+9w7jdDxLYA2p5AU6fVd7s5bd5+Zr+6n+mqab6KqZbJAjZvJvCqmGa7KeUJFfy44UuWgA5ebcw5kEHsRR3cZqQFkKWiuTFGMmIaZblSP6/lzSEfDigM506a/fFcD5vnIM7kCD7YO2/V+fKRJXM/nZOrC+VyC44AHFQYlIu3URIOmFsJcBbChkIkQTPFupySmhS9q4DN460vaNt6+xdgxQk+SDrXSR4YQoYU+XYVoCggDEVTaOpqjonqiIdVRgCEWPzSXgA0JXfp5zkGi2susknIYkMZQqkKmGUUN/d6HCjwyhNVYmJbukCFIqNrAkJTrW12ZtAXu2szhLbiE06B9Q0BWhV+LIHG778WSwbMsW9R8X0OCNiDhxkCmwMlKmSsTDlZHGKsbz5a/Z02XZTR17+LUamwQecFv+K8gqR3HFIdN3IOEqHbdd3rLYd4yjMLaW1SFGbGm1qCkjfNHNsU1PZWqQFKWJthTEVu+2Aj4m6mkEFja2oaoNRkqRoY0RGHqP43qWXh8cMzglLKqPmWhmUtdj838Xgd5IHldugNDKvN3NglOzrMmRC52BniiE/B35OlcVoQwQGFxmzHK0AwMHnQ8Xo6bxSSoOV6Zul26QOnpBu5iib5fCZASbJxwxsQuU9oq0UzjE5otJEVYPRVDYStcYPW3Zux8ZtGVNPVA3edywXS15/8wHf+c3vcHbzJtvrKz764DM+ffQRz54/4eL8KcPQZQDToHQNZsZ8fpd7X3ubk3uvYI+PaG8cY49b9LxiebLAWEVTy3NFQ1CKs/YhDxr49MOP+Onn72OXFc3ivkiQhK4qe9nIun77669xcnrM9Q8vqWrDg4f32fQbHn3+JS54AaC9TL9VqGkvT+s2P5uiUDXaoE1D3cyom1aGuBysAbLcWgbv5HMpuAn4kqNMgus+COfzLcu1p1GvIAM9DpK8w18nnxlV/FamzA2UgHH7N0oy+dKJGbLRmtpWef2RBwaVhCFK4mIUMfoJ/Em5oDPRcTI75v6tY45nln5zxdXlOdfra7pNR99H+p0Aun6EgXG/38MoTQIloJW2GmMrktcEH9n2HU7FbAY/MA5rwrjmvIZ+t2Lsd7RNg9GGurLTlC6AWQvf/s63+OavfJN3+STvjQ2ffvoOz5543vrabb71zYfMag3BEUfHrJ5x8+w2L150XF72DGPHOPagHCSftSwaHzpC2E6ftVhURC+ML1KSrnsIJOWnRDylnAiHEWGmhYl1+9L5W+6NdwRvMtMr5nPCTB4qFLCYHIFTmcwqBsVGUMEM5IcpAZs6syUZUvL3nXM4L88hppczFJDtpPN3m5iZCoqnZWFrFExYKY1RWiQoqvj7inxGvGJF8rHPy5L40JksH0s2r23xS9RGiqOuH6mqGqUtPkZ8N1IFRd20LBZHKF0Tk2a33eEGibHD0ON9T1TCVPfZlqA0vyYWU345P8g5mnMHq4qsKGe/+Z6FlCVQEUyAEcX1xSXROWxds93t8DGg6gqMweVnbozh+GjJ0XLOZruj265RRiam37x5i7t377FdrXj62WeoCIvZjHt373Hzzh2enD+X2KQSLgQ2uy31psEN4zRkQ4oR2aMlXgpY6/OAh3wslEImg65TMakULxcFcoZoI2sopBEfPU1bYyro+x3n5+eQNJWZoZImOlCxpjKtDHDSSoZ6mSz9MsIAIHsLuSA+WNYKAFDVFassf10ujrh184x7d++yhxzgs48/4skXjxnGSIyGrnf40QNRGlCh47NHn/DsyVPeuPMaqy+vOL98yuryKdfXGyIt2+Tp2wZvLfb4hLpeYs2M4HcczW/wys2bdJdbPtwMdN4x+IGkIpWxWKtY1DPunh1z/9YZD+7cYDmfYZTh2YtLPnv6nOtuRIVE0JFdL4NPROon4L3YksRJRWArDUkxDgNjL+v2aLmgbQ04GRZ1db3merUWL1ipcqUBWc+ISXO92vLiaoUxhraRZuTQjXjn8aMjJU9Va2F3WU3UFq+MAIja0g8jfhSVgvOOMQV8DyscRkPVNpwpQ9UuiTay6xytrfnVb/4KJ7MFqnd8/ElPTIp2LjYA426FNprBDQQ3cHy0pG0bnLOMg2bb9Wib0MmSjEVVKvM9Op58+i6ff/YO85M5w1hz68Z3adtbcq4Ej48D3nfYJOyRNAaqlGgxjNdrVv4ZJ9/+NrebJeiZnGHR0erI6VFLHLesv3zK6vyaD/7y5/zB7/0Bf/EXP2bbDyhbM1cObyKjNdK8TJApSlN+naZBfNIYGXsntjMpUDct/QDjaKGCSiuMhcrWzNqak+MlR0dzlssl682W603HphvY7kZ2gxeroJDr3LQP63mzZvkjk2eoyqBJgn29kiSztEphm4rlvGUxa7I9mbiKr4wWoMaLkihRpJI12liqqgYUtdVUlUKrNPlXY1vqtqaqSuNeo2xhkIvX9hR2ooCBoZP6pq4s9Ww2TQJPuakTlPjlOS/NaJWb2kWMMwFdMR3k3vtz7WVQo/hy7XlCqvwz1ShT6SVN9pjhsny/tRZSQYzZLihbmYjNuNR6xQKlWA3F7DuQlABcCYklqtSK2hyATwV4m8IiOmkKlJJyDak0mSG5r7EpvtN5dKvKAKHYE6RpmIQxhrquaduWyopVlsq+iVVdSR2Z0sH9kBticj4cs2dtwTJKvCjsrZKD6IP3KCzLlPPmFKU+iqFQlMS65xAwM0YDWu5fyjXnASArO7AQUVJ+81yfZ4ximgibmZHa5CGVyUi9dXDNuUSf1lQB50I4YLgZIx73cW+JU4bBpewtLtgKuZbUaBWnJqVzwh4txJ2YsSWK3VVZrwfElZQSZNZhsYhKxfIp+0aanI8L3iP3NVFyE5HjBh9eQtgOJdm/ANb6ha9/K0D3n/zPfxuAf/bf/EnuQMmhVRhvLniUSRij8+hiOaw1udOb8tZUakquQu4CRxTdX3R87ZWHGG2mkc8pilSFVHTocQKtSpGcMqqqjdkXNYQJDAFkmlMycvOyvDHlk7ZsRJT4VUGQ8chqP/Z3Auimm5qLz4Ob7J2T3DFlBlWuClKIU4KeMrMj5sIrxDIFVKaVFjRcwJsEWiitHpkasgcpX574BmREeJ/Q9aMk8ElJ9zsGJj8cSJkQIH5PqrCG4r4IVsmikgw0iCoyIsMSlJdDymrxsDFJoUIkJI0dIzqO0j3IiT5EogvoJPRa5xJ95zGpMPpk+gtR5Ev7roeAgmKQuR+YMB1AhbFABr1ycWGNFQrwQYcn5cgUU8QoLQGq6+mU+Mo1TU1TV9OaQOeuR0qoWIYLRKoDF3SVnGy+HHBi2hfgigxkF/QcI0yJqPZ+BPm9kirDClJeRyPeO1JwAiZ4Q9QpF5chm0we7uv9kJXyku7Gfu1OrDAyaBESzhVT2sL8khZPpRXD6PBhTYyJcRzpnaMfxTjTVjPatmU+XzCbtRhbTfd2vljK5NMEVVNTVZXsI1sBMl2pMmoqor0rhWtmiZLlI0ghYq3JEpMqE5DK0JWcgJTArvJEJ60zdlwGhKSJMl7AcJDOTtazTkanIlnXlM6N7IkKjJiBpzCSQpJupZbpjiozT1yIWGMl2Gf5tdIVyoqn3SGeHlQl+1nXYMq6TmBriOJDYqxFW41PHqKXQWkhYSqLjYqkA2mXGBkZVY/XPYGa2fIGD9+4zetv3sGrHX/2b37OZ+9/xPWTc9ZXm1yQwW5Q7HqHspb58Snt7Bbp6HXm97/N3a9/Hb2sYaZQs0SqA7GBoBOjdjR5uHVMiaN5zStvPsRbx3s/+TF/+fFPqNvAN+8/pM7TKutq7xFXN5YHD27z9vpNvnj2mGcXz1keL7lz7zbPX1wIEyGD1lob0EaS3nI2qSKjTjkBM6AqlK4xdoa2AtCl0oTITQ2lZBpmBHzy+8CqdQZrhYFLKvxviU36KxHTp/GgyXPwK8WcuKRyeWPvu0IEv28+uSj+gd576V7WdU4+hCUTp/0re9LnhNT5gZAcja4wKZGio9GRm0ctt45ntCZxvb7m+uqcvu8ZQsgSfPFEnNVKYmN+GS2+nI1uZM/HMHnsKCNDXcTLLEEKpNCx2g4oHUSO3lTUjZ3AZGv29+vXv/dtvv/9X8dWmnfz/zu//JzVOlHZkVnb8+DeEZeXK9yg2K48n370nPn8jIf33ma9VlyvHokpfYqk0EMaCD7h3BY3Xu33VNhkkEfi/jTpu1Cr0FSmwiqdzxwgnr4AACAASURBVIEkxr5JprL7g7O7vEY/oMZ81hqZZG7Ji79MMMxrIEPIkthpGRqilcqsZ2HEyvQusr2BJLhTxz8lYgrT4JKyrvagvxLPlAMQS5gGAsIpo/FJkVwgJIULEa3GCeS2RhNTwAc35RhkcG+S0iZhpJXEuExYB5VZfghbOUnCq20CXaOIYmqvPW3TCjOgqRmGnl030o0d3o+E6Eh4afilIPc8sS9kDvZa8QvSSkGMeYBKBl9Lc7SYbmfNRggRXSnu3rnDg/sPWO02fHnxnN6N6MpgM4MiBI81iqPljOWsZrO+xo89msS8bdBasbq6ZrtaYZXmZL5g0dak4Nlst6y7nbDitKYbOvonA5eXlxAT/XYnHnVGJqT7DMobrWlnbZ76qRkzS/FQ5vpVac/h7yXERRIuT6KTGGPrmsDIenvNOA6cHJ8ya2Y4F+i6HqMUVdPQzmfUtSWlkX7o6HNBWKagoxxog1ee0TmcG5jNBLwIwXHzxjG3bpxycnxMt9sCPQDPv/yccYikpPFeY2yDGyVPrlvLfF7TbQf+4kc/4aP6A450w+XlC1abNYN3uLGnMxrOjjCzBXdfeZ27r75OM1/w7NFHuOdPYRNIuwGrQIQpSgZFa8mtnO9ZbyKNcbQ24Ic52liuVpdcXV9w3Y0MIdG5kdGNxBSyjYCAcDE4UU5Yyfe1ymeiqohOAJ7Ndo13Ha7bih3C4DARrK6gqsFURBQX1zu07gW08iNaQVvlafABuqxEUDhaZNiN0RZTN9i6JZmahEE3Dtd1pHHE9wpioKoNJ43Bu4F6MWe5PEF7uLx8QYyJBzfvcNzMqJVhMBHdzDDVjCF4HBFfNyxv3OSslrzl7PiI+axBp0Tf7Xj02SNeXFzSNpakA2PYYbWlbSwuBi63Gy7HNaY6ZVs/5er6iifPv2Q3XKKseE/apKiURaXAsrXcOT7CrTuGiyvciwivz0i6BjWiK0s9q9mtXtA9fcL5Jx/z+fsf8eiTz7h88RGJFbpSxOTRMdAaRTOf4eXglII4SaMlhTIxVRjxrh/pR3neIQTmS0VSNXVjceMOnyLzWcVyvuDoaMaNs1OOT44w1mDaltlJoneB63XH+dWKrnN4QWUmEOFwvxbQWpppe8ZVPqnlDFXiImc0GKNoKiE7xOAkhmiyFFJqHmsFrK3rmrqeYauGqmpQSlEZsEYsemJCJJKmJppa3iPHD2ssoETNgSJF8UBUVoYChehxbiClgDWapqpl6GFIeCJBybC3SWFTBlnl+yBfmok8QNo3uMt5Xry2Uq5TFJIaaeT72mJVZO1U1yid/xwt/l7FKkgXxVlAaZlajxZbnQLQxZD2Z2g6aJaolBveYrmEEauhMiiinLP7S1diczI9Qy3PudSUKeZcSqN0AgPRZ3BOlfyt3KKX70exNTmsUcswh4iHYktx0KgrajH0Pj8oK1AfEFP2gNcveI8sJ035PpIBKgGsmOKw1NgWRQabtORROltG2OyVWPKdRMqNr6Iay4MrD2Kb0lBVUkuZKLYeXx0qctiPEpZbmJrxkYSxMpG7kJvQWdmXc2cffBbDFi92nVVPTHlNQtZvyLmDfLPSHFNlmeWnnu1mXtrj+X6FYi+V10cqM5vzPsaglc9KijQNnEuQlcv7mmH//V+u47/6+qUYdDGI4XWKUgTHpMAofAaddIpYEhGL1Yg5drnLqAkOF0euwiaSwlgrTdSemA0wVb4Z0yITpY/QtJMY55fDQQe5iXK/ovywKvhm8ZfT2bMob7CURCqU9v5g5SEoXaRKOYHN3W0QoBiYJHllQRXoXmeQTsUklMskLA6lTU609t0WEApp1IWuuj9g9yCch2SZAIrSXC6AkUKew8HDDoUJWC7a1KRUkGpBEgXAy7RllDB7VK4t1Z7WGhVEAykIIGXLCaq0eHNEj5ktSBo8UbrWIYlJY+4+LbQhpYAbI4oRFR211TRVJZTsMFKmuxQATmQ4VqjVVnT31hxQfPOzTynTr7NktjSpFbmjprOfWhTjyhBCntQmTEWbPXniwX0v/8oBIwad1QGbRiUv3lJJujPBDxm3zWso7KdAKlW6F0o6AClNtZYEDdnsxmaTzyTBN0WR+KQU6N2I8zKFSQqqcui83Gkvh3Khjb98SOfOSSQzGPJ3KZJuLYeeTFN1+f4mlDLMlktM1dA2Le2spW0aqrrG5sAQgdlMZMAu+zcVsE4AeilYtZJCSWWgvbIWW8nR46PPhbWbrlUYjB5bzYQ1l/QUJPMmzBMt9QTgJDKQDygLBkPwspCzvVumX8tEWmISH4T8zGMSn0aS+P4oBWiLDLZNqOwh6KuEDtJ9EpzdTIafmApla7TRh3U1UVn5bG2lw2mkA5WUlWnQ2qJsDVbgc0ODsoa5abC2ZunBbzcsY+KOguZoiduuuVs3fPfb3+bew/vs+p6/+LM/5cOPP8Jdb7FjxKLZbrZst2t2fc9m1zEGxenNLQ9eb7g6P+fF03Nu33+V49MlGCN0cO/x0bGcz9Ap0UQpdsfoUMCRbfj6K69yhObdn/yYd37yY06Vob59U0zgtYy8N9bi8z598PABdWt5ev6Uqp1xdvOUnRtx15ExDAizz+CVNDgiIr9OOVHaS7sNIcAwRrSN4gcqeTQTizKVMy1m/6AMhshRLUxKlT0sU0BNq0DCaekCArgw7Bs/B7+SAcXSL0kl8SldtfTyHh2dE8ZKkhM9Ai5LpmMG6KZGRZKoFkvRlwTkbrWlmbccNZqbx3OO2godHcNuw+XFBV3X4zygNckorBW2AgdNnNrWxJjXeUImskaPMVBbg9WJ6Ed8P0CMVNGh4oA2msW8pZ3P0FU1NQB6PwILAF7/2qvshhX91QYeyOdVS8fpyZyj+Zyb947BJi4uL7m6XLG+6nn2eMutW3D/4WukqOl2O6qZgCMqenT2KtMhog+aErv1bl8TqXJuFGvrLHcusnEt3VCJy5KXRPdXE6OoxG/L6H3hLudrFKVzTrtRagJ5FeKn6UIklK53biCEfO4blSgelzGz4YTNo1+SfZSldVi1yMSxg8/O+ZHKyaFXEZcHSqTsoaG0yowhn5tIcY8bHwJ0HDZ6DkEz8crxQyIF0LqewMKmlanSYejp+hEfIlor2nlNYs4w7thuR1zoczEjgIePwhIhJWm0kCZ5jHzlUuTKsBSssKCJiZCLrZA80x3KxVXbzvjGN77Jb3zve/z8g/f5+ScfTsOQqiQsfaNAx8i427C+MnTrazGej57oHY2tMEqzaOfcPDklrK7w/cijR494fH7O508fM3qH1pm1mRLDOMr1HUh8Qm4QVbZisVxy48YZp8dHpJS4vr7m/Pycruv+SlJeiv+XY3qWTCODuaqmIaREPzquVxvu3Jxx/94DrLYs5gv6rme1WjM6j7aW+axhcbxAGck/nHOM44h3DudGhk4RxmFq7BmjqeuK2azl9PSYb33rW5yd3uDy/JzaWAqcrZyjitA2c1JlhEE2F5uBdt5QNZrRd7w4v+JFes7Z6THtUQtqQdQ75scVbzx8jcHOWXcBo+ZsVzJEaugc15c9L7ZP8f0Klzy6NjTzBVZpohMvuZQ85y+e8cWn1/w0etrKYGzNECJOGdrlKfXiCFsZfIShGxn6kJk3UkwLocBO8lalDPWspbIWmXKpcH0H44hVitZUpNYSVAWVSGeHPIUSpcSuoKqoNBmE8bggub4Uh0IGSC6glcMqi7ZkT0Bhz1czTVCWGBO1gtPjBa+cHLPdrrDzhtPjG3R9x4vnF/jgaZLhnf5ntHX7/1H3Jk2WZVd23ne627zGPdzDIzKyRZOZQDUUUFWoUklGkUVRkpnMNCD/hsYa6G/IjFNO+ANk0kADTUSKpqLEKmOhgEKTSCSA7JAZnUd495p77+k02Ofc9yIBUpBmuoCbZzx3f+82p9l77bXWRjvHze2GF5stlzc3qEXPw7ce8cbvfYe33n6Teydr1sueMGyJ4wA5svj5z/jrf/tvCUl8H+92I9o1uPUS6xzN1OGj4/z0Ifcv7rEZR/pNYjdFplERfMN+P7E0GhVumMbIzVXkS69ozJZff/wF/cWndCcnqCahe81ue82XH32If3HFCs2984cM0fBetizf+ibX25Fnl1f4Jy8IfqI7XUiBzQvAEX0SSxCKByxa/GrLEhIDhCmTk6HtWpp+wd3mjpQirrf0646mb8gqMQWPIuFzJlsjdj4h00yeoBwZJT87+jouplABnlcS7hKnZynia10AOgU5Rvb7LcNuSw4BrRXjMIhfZpG826YT6x2tsPbQzVSk/+I9XWlxWRemTpKmPhkF2sj6WvIolJLr6hpc19HmiN5pJj8xTCOda0t3VcHalC52SNqA1sU6hwIo6UOH0CggkdRQ5t0JAYAKOFcAVQmXJIE9zq8l3z+oGARsUiW2kitPuYBf1dooJ1IuhBfJKqjdWDPV2qIkICoREHwiZk31R0MdJJryKWousuoKNuZ6NUiOVNhz4sdZ5bYKCjwkSXaRvFbwUqqeM3O8AnXW2pmxVcG16hd+7FUaoajXav5eAC7DzECbz/+YnFLGTP3dyk7T2iBeahRA8RjyKyDAPOLke7VmOnjayev1emb12m+xcTjENgecRb4f8Snn8644hRR/6niSvLmOkSP2Xfk7HyMhxdKAFLKuRXb5+wMgKPLgGkSl+VzKeCtxm5EbhlJaGKWp3o8y73OeATpd4kCjBE9IxRJMK4khjarNQsrwqAFcve75LP/9x+8E0NXu8TPulmXCiFG7JCShSAlc6RRGSlid63iVmw0zG0irOoErgyxDQa9njbUVE0pybWVddMNlkqGkipLLe5fspwAoGR8KtbX4t1RaiyDd1XCS+cYfH7IQl8C30j0L2KhUBQzKgCysvwrQyaJZabUwd6FUh4kjAM+hA2eJ32XBKYOiJkEFBZrh+SrxVLYmluVvi0REAABNDGJen2vwX8CmAiER5mBZnmWoUpryeUZZjCnJiEL8AUo3tBzBWlBGzlfA0ISxMml1NuxjJE6JRiu0yUg6azHGYRW4tqMucNZaXONoGukqJJuQbAiusUW2U31ZpOrvrJlvDVSfnoJaa0Wo60kB9HKKAqJpgzXFrJN8oL/mwvJMGWKkMRSae7m/0Rf5siR6sZhmmyMWFgW8U0q6TaV4SNSk2KQKol8WzSNANSWRPYXJExRsvWfMktyZwhZNZT7MoGA+zKM4Mw8O92IeU6iCl5cFIkvymqP4MGojwJlrpOmHcS24HuOElm2dFcqyrpu/EY8gLChoGpF8VJ8424jvX0yQVTGFNQZnjchIjRE2opaJoUonXil+yAapkoBqhgrU1EpdPjBtX2FiyFwRGWuDMm4ODOrsymXzzkrYrFLFFGA/G03QloSBGGXMG4Wxha1XAJxWdRjjGKcDqCgGpHqmlYejcZNAWErWYZR0vYspQzboJAG6Mg5ltFRKW4fpFtCfommw24khXXNuF9x//R2MS5gwcmENb94/4/L6JT/66S/42RefMEwjS2UZdyOb60tevnzOfntTQO4y1zcGf7UgkLn5vOf24pTTlSEHx5Q80UAmwDKw7CyusbjGsHaWnCWUWbcL7r31Lv7yls8++oif/fTnrP7wD1k+uE/UClvM0jMZnwNRZZJRvLi5ZhEiq9Wa++f3SRmmcMU0eXIKpJCKDYYrknuLMqX7LmXd05aYYPLFo0vnwrJOZayX54k0mpg3/lSqiEof/DcKUDJLNY5GE4h5/Tzuyl5QtlsB6Mp+VgG6lA4A3bG0Ta5P9oKcFGGq5aosfhT5ALzXoCYwkZMAPDpG+rbh4emas4XlbNWxaDR52rO7vWF3e1fYyglrA4um5bUHa959+xHT5Jm5fBFiVCQsKUKKtRtZJiRPyhMxTaQ8oUOiUZpF72j6hnbZo6wR78cs/jDHN2uYRq5vX/Lo0YP5tT//z/6I4HeEYUu3atlPeza7HdvdyM3NBk3D1fU1t9s9v/zFz7m5fsGJXuGcxuYMQaGiwtHQ2kPziTAiz1wfGJRzQaIUAkKaAGEQpJwJOZFUKsHXb3Zx1UaBRlirhZVdEIFinXAIqk1lwsLM7kglcKvrUFaJpFORS6h5zZ9jjVylJVXWzWEP07Iu1Din5gzHcipTkpxQg+IS+JFkj1QqURT8ZfWrAbAqiQyF0V8SlFIsE3lW9WeU/edgGi4+tEpbyJ79MGCtpm2KfYGFhCdlL8UZYyXT8GFmOVb513EnXV0S31i6HRulhJ2M7JtaZUw2kJhtNjpnWa5WXLz2kG+89x7Prq8wTUPbdXgjyaXNCaMySiViEIBKkzEadtsNYZq4f3bGfjtwfXMjHWsnTxj2fPn550xGsZ0GKUyPEZ3EGkNTirE5F6unTIxeADrnSjIrRUCtNWPbFGZoYUIcJVTHHfRqcjvrHoLC2gatHJMfadoWrRzbzR6NrLONE4ZU0xqUzWhrODlfcf7wIdq2LFcrjNLc3d5w+fwZLy6fMwye6oXcdQ1912KNpuukK/PJes2w3/PZx5/x/vvvzwBdYxwZ8ftRSoAk65xYMkwT29GzG3bs/Q67MrjXTnn05jtsX+y4fPyY97/+Nn//P/nP+clPPuWvvv8TrnYvefH0EhjZ3m0wGJxrGSa5jgePHvKNd99FZ8UXn37G9uaWznYkA+QJEz05R6bomWJCOUvb9yxOTkAp2qEjpcSw31PZpca0NM7StS1t05TOwQPeSyIuNgjSiEAZwzQFNtuBnc/YbkXrljjXoBvNSSud5lMKhGlH8oOALxlhcLZNAYwBpZiKdFBHcFnj+ur7XJQ2KHzMNE5iGO8z+61nuhvYT4CzRCzRJ25ud+hosPpOiqQxERuLXi+wiwXdvft4t+Tzl1ueXO+4d7pmd3PFuN/y4OKc1J2wuHiDm9sbRg+xUei2I9iGlGCMDsM9tregzAvadcvrb15gO8PV1YYwekLeYuKANlt2wyVfPL7hzmpWjeN/+5f/hh99+pT7734dc7aE1nDz8iVPP/6Mk2h58/SChW758s7ydOq5cw5/okh+Sd51mPGOyA4oa5mR4rozRemAFEL1NJGUxpgG1Cj5helwriWEqeQPjqZvyToTsnS812Eip9KhUanSXKqao0isUQv4Qj46lmpyBJhIc4EcCssvlQY8OZdCUykUaCMFubLGWy2gbibjg8hKfRxLMV3hRl/WXlDUTrFZOr47R7YNpl3ijBGfTRQBI/GCUuV1jcoeQ6JrLZ1pUCpzu00EHxjGkbZpyrwoHt9Z7EUEGJF9QxcQpQI1h4Llq7mIfJdYjUzxGWNuBBGT5E45ggpuXv9LGVaIAzWvVpkQkthwGGmIJDmOl5xBl00MCiYg7yT7dMkTCsATYiAX39NjQLBCCdXnEFTp4H7AEXQJDGf5YsmxpTNzLqy7an5VzyYfWRjogj9UMCTP2EH1KMzm4FtU87eYElnrUkguRBZMkRYf4yclnqjgXB2XungHCpOJmi5VIPTQNVZi41gUbLHIO7NC7Bpi9WYGdJXxvuoFWEG7A0Ncl6JVKrZZubj8CVpTRcSqxHCqEDlUUXvUeHzyk+ANxbZD6+rZfGDIhRTL+lqKXVpVuuYBN1ASRwiJP0vuqutZMKsgFTUfrzGV/IYu5ySWWqrYI+UDYKh1aTJXMYnjLKI89ko45QCwZvXbzJAPx+/GoAMBc7J4mRyykpL8xFyCvSD+NlqqfqjqC1aHbaGMIh5Man6rTFaFmTcHKWCyAFAS/KbZlFuWq0yFCHKhuuYY5fyKLE2blpyjJH05lAlR2Vaa4EO5eUdwOQcknvlaBTTIUc5baKd65l0ImFDByCQPAmHOCNKqD8GzjDL5qk0k1OFnuqC6aT6HXEFelEocpkNNSI4lMCUlLh4FMdgiX6ryGubKgwJ8yqBiSSaERTRP+JyxKmC1prEVUIn4YWSaBmlLb7QAdEg75qQS2lq0UzgtwYiwWQw6a5xSxGwKQynTNz0QyFkM062zWFeSZ12oy7pc/9GCokty7WrDhQroanWglSolhppRxmeOyKI+S641PhVmRZbmBDHL4j6Vjn82S/WjKfd3GMRvRkxUY9GnCyOrUmCF0p1BBfxUGHRUUIgikRZGpfcBraW6LR1CJ8ZJqmKhSLGSUWjthExZKk4lZ5wXfFkYxVeFFOaFG45MN41UxFQ1Ik0KW5pyWOvQBZzr+562bdG2wWeLNg5nxJuw7GtoZTG6Lh0GY/Us0wxRGElt25TOfUf0b23ISqrawipMM+BilBMpbAFDstIIh1E6w1KAuxlgIx/NKyHH101XK4dSDdl1JGXmeaJQUslEmFMxBAlgSrUQrUnFf07pSIqDdAurnyNwJEZrAbwaV9aP0rq8dibKcjo1/XRO0bYWYxqMFRlvTIqchI6dkiJrYZAZq2n6Ftv2GNeKh9gEQ7C47h6n5wvWJx2nS82DPvPks1/x4599wGeffI4f98Toudrfcv3sGbcvnxKmPTpHotHSpa5b4FJiuLrkdLFieP4Jz39hWKhb9LJl47d4FbAqsjjpWZ8s0f0JzckZ64v7JNcwlODS58i3v/U+cQh8/vFnXJxccr4+hwZarclaDG59nLB9y+rigiErXvzqMd94o+H+vTOas4ZhnHi8fyKgaJZ9oi8yD2VajBWQNSsxh83JSIqYiiF7kSuKlQDkwqCOYUKbiDJlrCXpPB1jxquAKh3YxD9VrBmUSnOzIhAPs7n6S92fSgA1r8clsMwHIE+RJZCsxxQwOGFcIt4o2oLSiYTH5EiM0lygsr+iEkZyrwz3XMvD1YL7q4Z1l7HsYFLiNXe3Iw6BhXOcLBwPz055dHHG+994g29/65t89vljfsCnZQ0b8ViSlkYlKUmH6+gjBI/KpVFNShhlaJuGrm+xzqELezFF6XKqVcSaQwOKhAO9wnUX82vL5X2uXkSur67YvPgCvOfzXz1hu4ts9xNGZ7a7J7x48YIvnnyBsrAYDa3tiSGSJj8/28Y18/vqwkypawEcfADVEQCVcmFkq4wta4GwtX8z9LGuEWDOupnRLeB7KQhQ9qFS7Z2zFxS1a2zdv6EoCWoAW9atOQbIpWApqO7Bz4ejn6dU4oCj8VfXfgo/rexfCjUbP4M0/dF1LObqgcus6JbilCr3UO6VyrlUwivLQYLQmATU1ErJMwleCmrakoj4YSJ7L6oGDK3rpBqpBRBpW03bBIb9wDDupRlSznOQD2C0k6Q2hcJ4pdwTSRqtVpAjqXiGtcbSKYvue7Yp8nx7x40fCHU/jjUmk6YdOie0dfTLFUk77vwLttNIu1zw8PXX+MmPfsLPP/qQ/fUVyQ+oLIzXXIqUXesYw4RTsOpaGtfgx4ld8FIolcc4g39+2nN7nUnTHms0wziiiHSt7GfyTE1hy4h8dc7hkGch/rkS/2jbsMgraYijFHd3G1KMPHzwgIsHD0ApNrs9PmeUdTx4400evPE2Y7I0TYcFsrtmN1h224TfixG37hyLhWO57HDOsFwuOTk9I2XLL3/5Sz755cfcv3hA7QOtmkaAmTiKhzERl0YmHxinSeIbrSBBHDO7u4nbuwHTLfjm+3/Ag/Way6cv+ezTX3Nz9ZLl+RnrvmVzt2Ha3NK2C1Sn0Y3j9HzNn3zvT3j3vffYb0Z2d3u2t4MwFboTmmVkGu4ETskZHRJZt/hs8EHsVoxtpVinQ0kuBXizToDAtm1xzhJ9YNzvmPY7kU81DQZNmDzDGNhNkZCFIWGsRTcOpzRNY4kpMPmJMO0JwxaVAqvlguXqjP0ElykwDL6sGQLYx5SwRkux0jYSg+QM2ZN1xqrMNA08ubvh9uaO7ZhoNomTB6+xvni3SKcDqlXEOBLHPa+9/pA/fvttIoqQwDUd491LHj99SgiB1x49Ypomnjx9zI+LdcpiuUQ1nqgm9mFkM+3YTgHrWkgLfIDtuGUTR9Zxje172v4+67Rm2E7s4i3T9lpsQGJA7TRD03C1N3z8gyecXCruPxuJjWUIIzlk0n6kHcHFFxAzd9s9t8MIrsH2PZNfENv7ZGXZbLYkCaRpjMGWDomuxK2hWI1gHFNMaDOgrKVtFhht8MO+kEFgF7eMe81qJR13+27JfpiKokasTSYjhI7kJxIK3XSihJrNL45hGArQUW1sEqqoi/wk0mo/juicMY0ucr+Maxpa13ByckLOievrG7jdkPYjIST2QySGAW2l4YsxWlQkKUk+pBOqUZiup1eZvm3ReUIpS2MUpIjOkcYkslPEKZCmPWF0NF1HYzWNNsQsFhcmR0yxaFBai2qq7hVZi5y4sPDzLJOMUnxPSdYuTN2YEEWYWB1ZLfFF7WZeoCtiVJgQST6QfUT50u2yyDlnqWqBR7QSEDTFQO3UKudL8XCrDS3EPiilOBdTFUZknsrUKhfksrdUlcaMOxRQrUpri6+yTQmXEPBSKYLRJGNRWGFjCxOhxCNpvlKVIlqD1RZnpEmioCBCTHHWYLUiW5F2kzMxqpl1FYrvvSkbv5ybvFaJDJU5n3RpTKG1nFWCmXOuNOiCFSgKMFbOd2ZRZSh+etW7j6TIKcherWDuUFrsKKo4I1VzXgy5sDlfVRHJBUUCOXtMTjgj1x2LTY1KqgRFB8A1hziHUCjxzJWpUEhTWUPSxSpEcgSRkiaSzigj15YkEELpShQq0nKlZ09+VeKx2UojH3wWTVUlpCIr/g0IDmqFPyuZL7k8uxqfFsx4lmMqXcg9/4Hjd2PQZUVI0s1OQK7qt1aQUDHVEkPamKuYHH+ApcvFp5Icyw2blTfqyCy3gmQKoq8MN3luAhCWm0cmqdpltQJoxeMuJiIKpSrbQVEpwDnH2SS/NoE40C8PUidhNATRrGtbcF9FSAqddDG4VyV5l3MTYE4Wi6wBV/2uDkbmcjnl8wq1mPoIsyYVFDiSMSZSNwOd5/+cjyxtb+Z/C6ouBtUxgFELue6ChGalK4QuMKnVVKNzozXOyHCIUarNftwJ08A6MLhSYAAAIABJREFUbC9dWDMSRKecaEpnN7SmcZ2cuxawAQ3ZGEwnk2Yq7DIbFcMYUVbhp4gzqniOFdlflu5aSmmp0iupuhCO6KqlahJrElMYkpWyqhA5aU6K5LO07E6JGCBFmFLCTJ5WG0lysnTMzUoS/oiAbT4r9FESMY5l41IloFaHVtkxyXtXFkxOickLo+cVtlt51vI7lI0kozEMPkOonkFJwCFTPBliOoCVuQQEMZUNU+ZVBb1koNRF4Xh8yD3V5fyXqzX9cknXLiiOniUxFZBKK4e2jVQky4Ju0DhtC9VdpFDKmBnktY2SBNdqtBll00mH80GXLqoGkawp5qS1LngylZR0i53nZAUjj+bBDKwfvX8B/FNK7PF4JfMxpYgr8mqjy3NCFbq8RmUrYEWSpFWrjCrVlqzFD8lVcD9nUvSYWk8tc1zW2uKQpBK16WTXKTH41ZqsYAyRkBAmWBYGTAwRtADZOiXMbqBzd4R9YnMDMRrO12vpLIZmuVyy80/48S9/wC8//QiSwuXMy8vnXF9fc3d9jclegNuYSFGJYbUfIWyY9oF7qxUu7blUN3TxMQ/fvM9pb5jinjRtiZeJqwT3HrzFxbf/kPWJAremc44heqxRnNxb8+bb7/DFF5d88KvPWS5P+fY33yiPJWGUrAdaWezqlPXFIy5/dcXlx09ZveW4eHDK3fk5T14+Juz3WGNLJTsVl3ypfmkj4GtjDCnbEgAWCQS1I6IwZMnS1UzlhC3PygePbExiumy0RjwSJFiT5SlR3D8Pa2xIZdgerd9J9poaOFRYmfJdgOxEzntAWF8meNk3cl2hMjpmMAFU8XhTkawnSJmUNFhH1/Sc6ZbX+oV4CY3XbMcNfhPQw5rGNDAETNSc9Eu+9s5rvPfGfV6/OOGNt1/nnXff4nZ3d1gDtEZlaYSQihQwBY/TIvsyWDRSpWwbSWCNFYAnTLHEoIqYPIaGpP18jS8ud1zf7fjsizsW/1g+71/88/+J/fYWP+ywObFsHZbMboTd5NnevmS/27Lfbgl+j8MShwmvNMELgCf7g6XrD2Bg1zs5F0oVVpV1ZS52aRJNYWCL7Lx60TlradrDe9Wj75ay/s1USin+VVbjscFxDeihSGyQfSGpKl1IGC0gWcqpFBkkqE01uEbinJCEe2t0kUi8kizImqLmVobMIHAqsUNdD1NM1L5WuaBxst3XAl0u7NTj6vkhzKxsg/KvIuEQtnH1hqmV7TCOGGtptGXMgWE/lXu4wl10bLYb7rZbcs50TY9dWPp2ZLfbMo6DfNYRg865TtaLKH6Rwkg2YKyAUih0Esm60dJ5M6PY5MTPfv05N8lzeXnJQGYMEWMVTptZJjt6z2Y38HKzk+7ctqHtO95+95u8/vZb/OgnP+Fme0fwA4YoQL2TvddkxaJ1tM7QtA3rvmPRL5iaEVv22xir7YasEz4Epv0d18OtdEM0hqZt6ftVueeFOa2F3SMephrnWmnIkWEaN/jhDkiMXpp42UY8qdarNQ8fPOCPvvtd/vAP/x6Pnz7jr/7mb/ni2SWTj4yXW16ma+5GzX430mvDwmoYLM6ecm+dsCdLzk4bjM3sxx2Tj7Rdz+//wXf59PPH/PwXn7C5vuLjjz/h9/kaANE27IZRpHs54OPIdpDEUmtJWMmW1jha27MIPV1e8O63fp+37r/Gj/7Pv+b/+N//Vyal6E86Fp0hjBs219c0GpadIsSRxjWc3TvHGM0nH3/C1eUdz55dM4wKT2Ya94Qp0biFSP3IJJOJybEdMmMYMM6QES/dkISJLwC8gO+p7PVt0+HWmq2SZFSYFJkAbCIMWRGsk3HYtti2oV/0aK0Y9tJwZNzfAR6nItom1suGhw/P2Ayw222JYSDlMNfnUYmVyTRpoLdS8IshElqItiWGwGZzxbjb0fcnPHz4ENveY3X2iLe+9nXW91bEtKXvI9cvf83m+glvffsN/t7vf5uu7Vj2J6xty+7ZJR/+9AOePL8kxRG6ltAv+OiTTwlK4X1imAIhgjUNfWfFq0tpbNsAjslnsjLsxsS673j0+gO8zzx9colzK9LJBS4nWqNYWcdJv8AqzRg8/YP7nJ6/KVK0qyustugFjHlHABZdz+l5oPeBKXhCTjQx0a0mwnhFfLzn7qXH7weiRWKaaaSxltViUWICjbEN1iIxlGto+wWQMVbi4mxBW4OyGud6rOtxTQ/J4aeAKnaXOkRUEL/sxjQEZYhHJAcpoBykcvW1fNR4JKXAOARMUbRQ9vwUE+Po8T6yWrXcO79PTnC3Gcl5wBg1M+8SVvLZGERaX3rHoTJTHoje0+qACi2NCsQYaGwjRZNpIocdKu1xJhO0FPyVH1DWYHNhEJX4aQpBGq5l8YLPSOhl50JWBd+K4YgWsEcpscY5tp6pMjmdFaiATpkUi4+vETBT7B7kd6f9SBwmovUCoFgtblVlnzHaCts61Bg/C7s7CxPbKE3K0gTMaIVzDh8jU5TmdtpK0a0zDdEprHayl5Y0SZUiUCJSJbC10QNkqteFS4omKSwWlMVri1dGcqQcyZUZSGnIVAAhcpJ1R2eMEsUGqRQUyDjToKxEkNOUCHgUWQptShELfKEVQugpt7noVIWsEcrrRhOMIhkB6EY/kVTJR4xGF7uEmkdKZboU8ZT4cOpcfQeLItIKYcaYaoFR5gmHrrMV1FLKCluv7G+5xAs5QRKuEl5FYvbYFGg07C14I7l6TgiAbxLBiIRdK1P6Gqj5c2ofAyl0Fbitqh11UYQQSQSyFiuNWPAHySPqeR/mMLUwWsZY0vU6i9pTCbkjZiUFxCRF+WpZUoutgrUIGSeqXPLXQwwG6uDmkTL6QCL9rcfvxqArIMKcEJdjprTOsg0BNowW03frviLBrA+z/N08sWdU7tX3V0ZzGJEHgEP+W5F0oeDmEgSnSvGUvw+hEvMLiq+ETq6VBZXQ2smiUDBtWX7K+yjQxlFpoymb8t4aMKRqjinGYICYX6qywPl06Ggi4yChi5RK50KHTUfBdnkhxSKVqudT4d2c5+SuFuZrq+B6xGRQygn1EoUzTiZN9W+zInfNWqoGugArx51KUpIuKjm1jLtMmkZiTIzTiHIW21igxU8e1ziUsdLB0VqyMZKk1Cq+jlJRzgkTZePLWYxIp5QYvHRnaZCKRZVcphwLgyqjkwS9sdCFFQeAbk66Xhk3B816ToapdI+LITL5iA8ZrYU63SCVipSKQWoWqfYUAjkkdmlE5cx5eedhDECRNmtFGg/tm6VbXiqLRybnYvINVF7rK/5wOWPMYXbKCKoNEaAyPonFNDPIhphtSUQr1fyIxUH9lpkp28Kck0o9WuGcZbFY0fULVus1tmnRpTtfTMxUd5RUD7W22Nlr60DnhkRjmjKW8uwBlrKY48eY0aqYqiZIREiKqLNISI1IqBPCcqzfs5J5k5TCJ+b5nop31MFvr45TWZcURua30pisJfjUFq+QqluMAjo4h0akVGGcJGkWM5gily+gu8qoPKFVwpYNymnpHGtK4upsM3skKC0ggioejIHE6ffkkfz8gw9QSnxohMki/+2arhQ/krCHlYCdujCQOw1xgnFcslrfZ7FuONNLnJWux79+/BlfPPm1GMFHze3LK+6ur8TUW4O1jXRwS5mmsPbG0UPcsWPH6XqJYqCxI5uX8PbrPd947U18cjz+/Jrp5TX7/QjBc//+kpMTQ9c8xJoVOSjaZoFKE28+XPOnf/Q+H/74Qz748APWy4Y3Hz1k0Tfk5DHaoZSiX5+Sm4ZoPLf753zxeM9FvmB5uuCdR2/w/PMnTMOEbhz7YWCK1yjVoNSB7WCdFp+07GUDVWq+Zxmh5EsSP0kHRKUJsacxCzIKH0a0Mqz6NSGIp2pWAVQQMLsaFpZx1yg9s5xU2aeMEvmSTNVa8S1M7iKDSERQB/BKM6DwUMap0VrkA0hg5CePs4ZFd0rwE7ax6K7BGcNpUqj9Lbe7AW33aDfQt+BbzcnJAuccbduzXp3x6PU3uHiwonMJHyZuNnfsp+MurmKTG0Kci27OKFpnaa3FZtmftJIOxwkJZuseO0vzcmYcBuxRgDH+2V9xEKHKsfgvPmTBbx7nwDkPgAe/5af/z8d/8y/+6/9Pf/cfOqxxBdyTWKbuK7oAgBWkA47kK0freonxVEnwqw1N9USs9hhq9rCpQZ2gbUKuKUqB8r9CDK7lhzmorFteJezNPi4lyMxKQOScmZ+ZJpNLzJQqU+5Qnqbuba8WAmtSdRxnHeI+1zTYxZK8yQzDgOs6lqcr2rbD2obdOOJDYBj3kBLOdTjXIaDWoVFH2y6kwFSS2oyEVSEdwkJbmvdUQCySeXF7w83f/YD1r5YopRiDZ31yMj+XFBJGG6YMN7cbsXNoWqIyvPbogrP7F4zeo63l7P4ZY2MIuw3DnchhrW6KSbYpPj6ifJjGURjYRpIRYw8y5RjEHsFHYVZprbGIByxlfxE/4kjOAW0ixha57sUFZ+cXGK25uvySX396w36/Zz8GIpp+uWa9PuG73/0uf/EXf4EzhueXl3z8ySd88cWXfPL4Ga5fE9SCXd6xDx2bu4F7y4aT8xP6tSIZDx30zRmPHp6hdebJ0ydsdntat0abjru7HeM44azhxYsXUAC6tu+52WwkDtaJHAMRifNyEl/NTGS17lmuTui6Bb/3tff4iz/7+/z0Jz/lk8ePmVSW+0UUkM+PtFYTrWVKI5Mf0Dnz7OlTHj9/IkzYSTHtI2FK5BhJcULrhDIKV/zfmr4hJUcMhhgLc4gJ74M0XNIGZxvaRp4nObLfjRJ1ZQGLtRL/1Iw0urKtxZkkLChtcW1b/KwlLrPWcO90DesWoyJGJ1IYMcaw292x20sBerVaMox7pmlEkenahpOlqBWWywXGOPzkmSbDNE1sphEfJ85eO+M73/lj3nn7fYxe0LWnnJ1fEFVis70mMLC7fU7E8vnjF9zc/A3LxZLXH7zOvbaH7ZZnz1/w5OklAcXy7By0RWG4vbnhbrNnsVqwahtOe8d6tWC5XNB1LbpdsI+GmDVDiISk6VeW1Sko3XByckEOGassvWtZuIbeOhauRaXMFDPt+h6uW5BT4o2LtyFnadSREm0rjOgQJkIMTEGaPExBZMvRXxDDHcEHpvGS0U8QAkwB5cDbCaMN437CdRHbdjgl+arOEeccITeSS2nIxarEtT2u7USh4AHizCy2ytA4h52CFO1j+UFZv3MpFJNr4beARkqVwreSRrMpEmLEIDnr5CdQ0qFXaQpz0rDbDeLBjCT2xmo629C2nbDDgnTW9mNRgJkkwJ/NKJNwrZAb2naFxuH9iMojix56WuwIo5YChTOW1jny5NFZbAJCiCQUUYklgENiXKsln5VCCUj1WeSdtSO4QqGMOmKVa3JpjHcoyotCS5ViVqIotVIih+LlXEzQ6x6GUiidiqqLYrFkSmEsz4b7YusjOaTk6BBikmIJlFhcGP8hJ2noMINH4klrWvFpUxjJS3It2hbSjyrkmUpeRM7xuBin6jWgZisASf0PEsjDF4cxhMSf875RrE4Kojvv+yjpkVPj0lzApFxA3wrN1IJlqmShhHQwpagYVS6KpTyfi9zMAriVfb6yQjPS0LHKSo+L1FYJ89v7oyZUHGIJeU0KjlABtQM4qHOUdbxiHwj5w6iiiizx1+Ezq72VyLxjkbfPMuyj8SP3WM3goORz5c4dKRxeiaPmcOcIkyqx0OztXuP7ChIj8XRIkViahcQib09UrOr48w7/mkOsr2BeXz1+xyYRByloNSF8BWwr30MZdDkJ0BWPFq/fdsweLvO5HoF55eTrYD78u3xXChVVkW1Ie2hVmiaIcXsBX77y96JuFWS2AnJl9Z1R2TrgjbWkQsetHnkCTUhwZQuzjkKBVIX2mXXEJFHn58yc2MyLWrmHMeY5uK4yPmkNXZDhwmir2mhBkvWshxbk/3D0y4eCaisZVI2VxdMYSfyVsTP9sspZxU9Mrj16LyybIG3GtVowWcOw3bL30up+1fdY0xGVYowRowzKig+Jazv5DK3mxU0hNF/lPdpMpDAxpSDPbfK0JhOVoTXgjC0gXWGZ6ZIUJmHn1uCckiy0qjksTuQijUnEECSAz5rgBZwLMTBNXkyUjUFPgbTZE5EFPeQ4A3Q+yuKhQxLmYjn2+6mAZ7kAuFUueuQDV30Nj8Z9TW7qV9Xp51oJyMe/ezQHUqJ2p0m6mGcLsiUA5vy70lo6z/4QpRlEkQLHlOm6jtPTE+7du8discK5tmz4RVOfCgCtdelEqEh4cg6koGb/Ban+yAbhtRNpe3nWQm9mZp+mFCTZyhXkL/elSNypUtco5ux53tRlUZ68Lxt6Jqcg51ClBDkRghjsk0CpItVVUnELKZGVSN5z8KQkFTZrhKIdY0RDkZgmfBSQLCupxtYGB1mpImlVuCKPEWYJ5JjxxfNPGUvjGgE8lSGS+fN/egbAD7//t/PaUkpVco3GiudhGe8U2RNFbikm5Batz3nna9/mzbceFPaIZfIjtzc3vHz5kikE4qQYppHFcslivaJtG8bdhmd+ZEiDUN9TLmCXQyvFfhjxYUFMsN3tuXxxxWrdM4Ydn3/+jN3lLSddz8Bz4oc/RLWet/vE0r7GSXtKUIGN39H3hoe/9wZN3PI3/+4D/ub7PyN/Z8H775xgUJgGvFE412EWjqkdSP6WtHtJeH7D/fabvHnvIXZjePbsBdsU8SoSxi2kLeSWYCN5AttGtAmkLAUCY1pMXmJUByiM8aBHjC1dI2mxrGl0h2tGQt4yDhNpHGjMmtZoMltEaq/J2ZR5JfzHhbOFHSNzbWZoaUil4HC0g1EbAclIPbBvnfOoPJXAXkH1EjEt5GLI7xW9a2ltg7MKayOt8fTe09uMVYl20XJyf83JScfX3nib1+6/yfjDj/jhRx8zjXtMZ4njHQ0j6ePPMD/9JZ/9+jnunwhoMQyj1Baj+KNaK+OpdVZYspInUDtoC1CSZsmINFKSwGYYduT9yMuPFpy//1Vo7v9fx/BZPGLfyWuVHa2Kx6hSavYPSikdZLC/Jciq8z2hi39d/YmsAXNTgCTrIKlyMJljBCkWpleKuwLS5UPIVwE4Dj4/9XTyq6Hg4TM5BhgPAeShYHp488yre9PskVfuRUoJ5xxd182d6mKMrFYrusWSzW7H7d0d+/0Oci6+sdJQIR9uCt1yWQq9lQFeYqSUiSHN4JgwnyJ+GufOcpu7W25uAm3b0jTSSbwW5arvY0qZEEYSYLuE6Xp22x0f/uxDxsGzXq/5zne+y+NPPuHTX3w4M6xDyqgy/1OMoBIhgS3NXYZhKrYOzJLoWOMHxD9OKUWImXFTG5sU/+as0Fok1a5pBPwxhqZzkMEU6c/V9S1jSPTLNa5p+ZPvfY//6r/8xyjg3/zlX/KDH/6QF1c3KNuyXvTYvufRwwecv/YuVzeJS55zutK89fo9TnuYtpb9jUOlxOm917h//4Lz+1/jdrNhDBPDbmQatqyXLWnKjONufk6vXTxi2HvGYY9WieA9isL8LJ6B2jSsT9esz085fXDGmw8e8PyDn/PX//pf89nllwzDyBJD5xy7HBiGfVl0FPsw4KcBmzIhTYXFaHGqpesbhjyxH/cSD5DwAYwV7+LV8hStOna7wO3dnmGYiKnYsSiFNZKoieG+xBTJB3IKGIXIzawjRfHnE59e8ZukzLlxHBiGgZTE4uXs3j3W6x6rWlIcIPtSPIxsNjvu9jJnrHXYKPuFNKlwwgruevFK85FhEImj1qXBQav51re+znvfeJ2Ls45xu2e4e8EXT3/Kdjcw+MBmGrm8uWYMgc3VxEf7LwHNw4snOJV58vnHjFthRzZ9zxvvZFzbsQ+B7W6PtZb1sqfXCk1iQeK8tayXHbSau+TJ1nK92XK72bLfvmAcvyArgzWOrulAGUKyDJMma82YIU6RKWjGLxdi25LBzexjmQUxJfb7PaMfpRujEqaXsZr1es1q2XL/0euM08g0Bfx+S56kuVNUMIWIJrDdbbB+YpECSct40dGinEiwY2HV+En84GzohKWmdBEaHtbdrA9Kh5QiSsfSfzAz+1PlusCL0kXWZVXYZwWSk4VAYv0cGf1ASOJFJo1JFBDxfijFRrH6cc5xctKzXp1IDDwu2O12ZH9HxhPSDh8HFuuOR29c8OC1t9nuDTo35KgIfuD8XsvX336Pt+6fsgiWz3/xKT/+4ANeXF+jGUs3VEsymjx5sQKISb6nsiPkLCBpDMQcBHykFMqz5EsHsEqYQ0rpOTfIFPsg5D5XVklGkXXpFJsBbaUjbY03MgQOnWR1Ae80msxBlqmSMMylS6cqa6oQGXwS4E9IDLIex5I/aFU9qvUrhS+56LIH12JrsaD6qqf3cYxQXnilqFXtcASMKP5kR/FU3Ztzpig7BGCS8zywseb3LoBVtaWovnZqtkWoDH8z+6FxtGfnedDKy4dGC/Vnv3mo4xjl6HyqTVj9nVc88L5yVIDtuNAplkrF1qEUBF9VJ5g5xuQIoKuxh3zJ+wtAV18rXrAFCJ7B3uOoShX7qzkuyvNa9MrzPNz2MkDUXEyNxYfC/JY7dzw+6rVGjuKqV978dzt+RwbdkeTnt4B0HJ+sKtesasXwEOAdd99QXwHn6oXVz5D7Uh5uFl05qYaMomlWMRdPL1Wq19KlhGLyqYywAeaY71WLz1nOcbhfh4BVEubSkRSZQBTkvIJCYngsPmxSHcgyapS0B6YEbKo+5FwTAHng1h0M91VZMETSVdhARbJjijmn00I5NqVSnorRfz3WZ6/NoEzKgc5V5WKZtFoqGDELW6wuNAXsxxmHN6DGJOyvriUrxehHJi/+ES61tMZiupZpFL+kqETym7WAgLVLm7alcpIiVfccy7MUY8dIyJCMIhsz38c6GZLOxdRbUh2OFgwKQl8B3FQQbh8DYRL/mJiky0sKqTCmvJhEGyMTbRhlI+GgaY8Iqk9KqCgK08MALRt+lPdr234ej7PcqlIejnKdOn6OF7MK7L2y8B3NCakOFUFsVqWSU641ZfKRPIivvP9xEuaahlXXc35+zr2zM9quQ/y5RmJK6GgPnXiO5l4msx8HQmGupZQEOK1eA2UzDKk0wCjzL5dnG2KUzbqCkr9lIZ+9iOr0PJ6Fqvo51SpJrDNfksYSMKeUIAkVPrpGkoQoskbwRWJb1yGNVwXQT2lmwIWQmEolUVuHaTpU06GNE7k2JfEqfoIKAeica4R7O8uMhREhFcaj6ykU9MPcF+nZtN8VH8QydhSQdSkZSOCXk6NxCxprOVktOVmvWCwd4/6O29sbNps7cmqxruXevVOW6w5tLE1j2e83KBV5/vSSOEV8FrNlZaRKfHN3i3WKrm/o+oYvv3jGdrtB28S49+x9ROuR8+UJDx7cZ2Gg9TvasCH7PRrHWhu0XZJQvPvmQ7749DEffvQxD88veH31TV4779FoQobF0vLG1x/y858sGKY71BRgc4O5fMKj197hnfvnqCnzyc0NKQYUEV1M40PM7MOEGbVUVwk0TYu1nsYBjciXrMo4bbFNS1AKbEfyHTGID0ijOxoMOQrgLRJE8aSUgFKXPVsAulYh69A8dnNFXziWCMjsFF+6WFmh/rC92n3COI/WhUWcFTlbSJ6ULCttsAbuOc3Fg3NAGIRn64510Kx1w2LZcvZgyde+9Sau1eATJ+tz2tWSIUYu7zbs08TNVYMKW/bDQMyazS7wJ//kjwFKJVo+S2lh7zkr3i25sKcFHhbbg7ob1s5o1Wc1p0SYBu62A3/5z65puxUoyzBFcrb80//hGwD8L//dr8hREmDShMoJpyGnQPQTpFh2ZQm2JUE5oesaNJEcZc1umoblas3X/3t536f/7Bk+Fr8RrcsaVqQzZf2q0oMahNVOcLokAm/+t2sAnv3zQX7+SsApIOQcSPJqAeW4Ensw+tdzzCKfLX8nGFw+zgTnjSEXcK6U3IuPnTCpI9KBVf3GCvkq6Hb4d12bZS+swa9cy6sB5SFo/M3g+vCeB2nv8d/UGLACbVqL5N45x/X1NdvtlqZpuHfvHsv1CcvVit1ui/de5Nu5egkd4srFciXFnHQoYkmMlQg6zJ3wjj8/lj2waRpplKAUwzDMVX1rHVbbIuXO83OsfrHb7ZbPP/scsqZ1DXEYuLqShjVt15FVZh88fhjx3hOTsPGa1tFk2UfGKTBOo8hYS5G2gnVd09C1DTknadQyTXNRVhgpElNqI4Ddbr/n5dVLYooE77m9vmTygeVqjYuZ1fqU7/3pn/IP/sE/5OrlFf/qX/1Lnj55TAwyv25ur/FZszKW6AeYNpgY6fSGPA08+fIxX/pb/HBL9h6nHJvdFatnp+SoWKxXAoKNNyg1slo1THvPOB6YjvdOz7i92/Ls6VMaa2hLwy+jVUkyM7ZpWK6WWKMYtht+9MPv8+TnH3O53WBMZr+9gahJTQs7Vbq1OmIQNp2V+gU+TqzWJyILDuBHaRTQ9ZYcFeO4JfpEtMKy6fslbbME9txt9gLIJrFiMEbP8kPvJU1zznJ+/z4QscZwslrRdR3jfsduv8fHzLgbpIBXi75B2MfS4AvGYWAcT9BE9rtbUhiL3CqRaRiCw4eiAokTKJHQhTCQUmZzt6PvO7z33N7eEWOi7xc0zrCwCrfd88n3v89Phz132y3b7Y6bu1u0cdw7v0CZBtsu6N1CutaPmu3O89RvOFkabm+uiX5HSBDwbLc3dMi+1XUty+WKthFJ+tWLS1ROLPsWZw1RJ1RncH3HbpzYTx7tHCGAjwljHNMwiBQtZRau5d5iKf5mIeGj5tnLgWEMKBRd27Bar1ktl8QYubq95vb2VuSXRmMbg7IG17WcnZ1x//45J+tTdNPhFiuR6U2O4BwuSufx6EUuH6aRHWIQ33QdaTQMKTAkhVn0YI00bQuBMXh8kqZ4o/ci00yalDzj5PH9AJnZAAAgAElEQVQlLhXWcZptiGYlzLyIa6p9V2VRqQIo1QZAB6AglcY9xRZGZ7wfiXFE64RtAJVwTtH3jn7hCCGxufMM+z2TH1B6IsUBZzXvv/cG/+k//Edoc84P/u4TNjdicWBy4v7ZPf78z7/LX/z5f8w9c8bP//anmP/xf+b/+nd/TYrCFDfZQ4jYwjLLMUFMqFQMGGIihSAMtRwoLmiyG2WRDVP9u8QPh4yoS0DyqJyjFIZL/CwpeLkvCWGhmQKGFsAqxjQz4ZICV86PkMkmYZQV5heHZ6EUc16eSqyolMGWPLt6PqqcC2ZWwDul5rgmzfnaIQcFie1VAYByzePNkdXFXDir+2mppimR8h5Y7a/mfPKxB0uJnJmBJtnmChin67mo37JTl3ta8JQK0GltZiHIDBYexSuzCukrOFHdc8X+JM2/eyhUFqCssvKOQMt6HIN69T1TEs/i47jh8HuHGEru1ZFSjsN+f7g/6SjXVa/cszlmiDKXckbIYrPq6/CEJSY6Lq6/ij3Mr+oDXnMMsMpA4pXrqU1U5Evy+Zjnkf+VWK3er9/yUI+O/9cAHSDstVzAqOMPqxplVYAKMWyaT6ly1WRp498TMMpZy6Xo2ZwyFo1xbY5YJeIV7JPAqKD5uVI1TQEIKJ+mS+AuiHfKzINf/m9mIE0r8aaafduOJ6CcASFErBVEPucsktokLXatc1hj54ko90e/8kAXi5V0jLPSwTErRDJ45KdDFgZPBeqUql1clHTXPQLoXN8L+BW8BBNGzZ+bS2eTSCq0T+nClyorSlfzbCCJTCEBpnE0Xcs0SaV48L4wPwxNL8LybMSQMia57woxahZWVgF0Ta2CCFtKZalypBzJHqRMFXBKlqKYkxiZq+N7/pXJk/ckRPorpM0C/PkgwBxKWFARkWIUxpVKAn5RpEbzOC0VCq1k7EqHnQNo5toWFQM5h8KUmdOYeVNG5Rm5T6X9O/kgEXoVRHuVQVcXwWOvK9QhSZrFpSmTiAf9+1EV4Xg+NW1D2/SsVitWqxU5Je5ubpimiVxMVev7QVkAayKkM1MM0uK+LtDVu6EkfCRV/JXq/JcxHIsXpfhXvJrYHh8xxq8scEe/mzONcXJ3M1AFqFrGh1Zg6vxKYHTCaPEOSioTlUerQE4TmQKk60N3JBUTMQfQBmfEDF/ZprAZWnTpYptLq3pdqi/zqpVlvghbMBagwJA4+DXVwxTAutKkcxKDd5XAUijrNbmujMmcsVoAQmcs6+WS0/Wa5aLHWXi53fDs+TOmMLLsViyaFculo1+2kghrsG7N+YMHDKPn7vqOGDNKW5TVNF3Hfh/Z7PZcX9/R9S3KZLb7LaenKx4+vM9q2dHazLvfeo+33nzE5uo5N+YJXdcybTZst3uC6Ti5eAfV3eNiveY7f/Atnj1/yccf/x2POs1Z8w2ahcN2htfvr/mz732Hn/347/j5yzvCOKAT3F5dsdSW1y/e4q3XznkZM7dX16iYaYgoPIkdcQLQaC0dvfxmQukdzm6xzbWwI7Wl73ra5Rq1WBOzIfotOmdIluQ1TBmnIyrdytioQHn+zc6ecX9XgPECwiVh0uSU5vlIkf3VhiwpJQgWF1aHMbBJuD5gG4+2AvM66/BjwMfAenXK6ckJ33z3a/zxH/9HNF3m8upzLJ7p+YY+W9pFS3fa8LV33sL1jg9/8jOG55fsxwllGjyKl5uBcdiRhzt8CCwWJ7T96XweKSVaV9Y9lbEGtE6FVZIKcxpMWRv1K9tenZ/CUp72e/Z3dyRMYT1rhjEUHzQB0u6uX6Bypm2MwH4pko14LmldpSF5LoDVrqz1s6RzdAmqj0IEXSU4Gap/19z1lLnWRebVyreuccLRcmStnYPNY5azsaWraSm6fDXArGvVLCHVh98TlrUu9hFpjpVSAeJqgUHPrAAlDAYoNgIc7r96VYUwr7flM+frm0E1pKhVzmsOpEvUro9ihgpGHh+H+8VvXO/xUUGyCpR1XcdisWC73bLf79GuwTQtTSvs1t1uxzAMEptZx/E7amMlYUOa9/go7KzKyAshCEgWi/l3Psy1vmtpG0cIgd1uxziOaK1pW1CN7HFa61LEE08anTK7zZ5f/eJXXD5/KR2Qtzv2t9f0RtOY4lpsTPGVMdJ0QBuxRkGjjKbteqwTywGlFaZ2dqbK7zVGaWyzoOcoEdG6xJ8iu5umickHnl9ecnN3SwyBNA10jeXRG2+gXUu/WHF6esqPf/JjPvrZB7x8cck0Djx58hgfIq5b0LVLGmsYtjc8/vxn3N1uuLt9AWmDsSNKDViTZe6EzBdPfoU1HWTLarni5N4JkNhsbvB+j8rplSLlOEx0zUKaOtkWqzON0SgSk/coI81W9sNIVoqTvuPZ08d8cfWUiLBuO0ATubt9Sb9eEYxI1cIw0KTMyfk9cmvw0fPg4gGN63hx+ZJx3KEUrNc9YfLsd9dSVA2BFNNcDIwx4sNEDB5rwVb/pCxrt3PCuGsaaQaTUbjG0S2X9F2PD4H99S2b/cBmt2fygVDW+5QERFAlL/B+4u7ulhgmpmGLVtI1mDIeEoZp8oB0+RXWcim8G0MIcQb1Y5RiYUqZxnXcayzdZmJ7c8Xl5ppBRYJVeCZy9uz8Da1a0CuH395ye+cZ/P/N3ns1y5ZdV3rfMttl5jHXlb3lUUA1DEk0TasZ0a1uhYKhB+lFEdIP0e+SovWkaL0ogowQ1WSzaUCAQLFQhTKoW9cel2ab5fQw19o7zy2wA3rTQ2fFrWvOOZl77+XmHHPMMTSHQyAMiTvtOSeN5uAnlE6suxV3Tjvadcd+1xFjYr05RRnL4A/sRlBovDKk4DMolGhXTogEVUOtOwgOP4kpzLR1En9PDtMBekOIkXHoCQm0G1HTKEXTWBGsZ0zCmht2W4yKGCvajlVrwBp0BYme3f6a7W7P4dBj25bTkw01AXfY4g9bkh+xlUIX7ba8FyXvGQ97+piI7Vq6Rk5PaPzE6EbqrgMtTt7GWJKRXK6fJna7PYehl/jVWFJxTk0CTJUOp1KYV0pYXjHH+LIPZ+1qFYlpyvttyvG97OfTNLDdwXa3I0RPVYlTaVNX1K0m4ej7kXEYcKMUspSRnKNtDN/98B3+zb/+Y77+ZuDTXz6jvxmE7akUxkROTxq+8513SYeO734n8c7bf8dPf/4x20NPSgaVtEjMRC9usynlNZRz9CQAhgAmciQvZJw4x+A5i0HFCCaRVGnjP+JtleI/Ua4xa5QHxF3VhUAVfD4vM8uONJ+7IRY5gHwgJlXqomh0zlRz4SWlOb8FgzVKNNqStMb76PEpkwpIFPmuIk9EZhByNJblMBQyjjCjjLUzCy9/Y/5eLax5CvN9YX+VM/X2GauX55rknk0m9qQSv8xlUuDIKBKEbBOTkEvS8QeQgWNTilIvn94CjhU9XXIc80+x4QBeBuRud5X85ljBe2GGkhJmzlMX3XjpWsm5cYSoIzrpjCGpZc3w7fijFDWXaxHpC7m7QipRHKGV6CyddVyAPL6H41goCcAkLdwZ1F3Gu7QBLzFggtv3/xvAuRmkm+PHbw3MrddvB9Dl1syX23xSyP3lR0GxgEryCKSNNCzsmaNgVpw2yuTPk1st75FyFT8mnRkvLDlsygw5JCmQP2VEvLxrWoA6gUWFCZO3E/n8IkaujGzCWTpTmHLMNseqbBwFAc8PWlmDroSyKZoUeavQaqkUqMIAOg7u5XCvmwZTiXsmWgwiIgkyzdOaAmPmwU0AxQhAoapizSzPMRhpz/TK41XAxvwMM8BAFAp67gSeq9UpVwNnUMpoqmgyKKqps7vnOPR47xhQYs2trTj5TF7GSVsqY6WNRaulxTlrpsmkFHZfytsYQUHwMHqCD1QKdEyE5HEkQtHgI84AWPnd+ygodspsSbS0SgYB6lI2O5D1oIk6zVM+RkWIXqioM/PheL8tVZ9lEwgZlEMpkja4sIjFSkJW1ke2tS4st3SkFwdHm/VtmPrbiZDiaInIPeS5HXKiURyLYpSNu7BElNI0VYN3kd1uR9/3GUgW6nZMHmtrcY50BUiUA04rhbbCFvTRz8YX+uh6SMK0mf9JyWmtElgFyWi0jswiSkfAdrlllzcwSYLljQqYnkioqFnor2JIg1KYjJlrgrytQZyUxENb1lryYDQhKnwJOqKMe0xG9BIjGFNRtRuarsNWrbQ/ayuOSGSwIG+qBYyZrzDlDdxWKJVIUc3s1OMDRWmNYTlEYgYlzGJ8NY+/zA/5GO8dJIOygaaydE1DU1VUNuGmkf3+hqapqIwECyYHlCB6O9rW3Lt/j2mcxI1UaVRQMqYE1us1zk3cbHdsNh1tK+1h1rS03YrubsPbD++zWa/5i7/4S778x4/56IP3+JfeUdeW3WHPi6ue/dbx6tsfUZ+seOvVc37w0ev87O9+yhe/+hvud4kHrz2gq855ZXXGj7/7I/7mB7/L00cvuHbfEHxkGj0XTy/Y6A2bu6/w6r0TXmwv2G8PDGEARhIuTxuL0Su0bsQEJiaUChQnKq0b1t057el9Tt9YE2vY754xHm4woQIHcThg1IRR4qwYoyUkAVulOghFc+mbLz7L628BZEIMYh6xQCUyy7MWi9YakyxWR4rG2qpTNOuKujPYxqCNYbM6w02K2qx55cHrvP322/zwh9/nu9/9gLZTTO6CLz/9OZ/uf0EbK1wKfPnlV3jjePc779B1a8ZeSdHGVIxTZPADByZsmNDGctKecnpn0XmLEdFR1IqYHCaBiopQDGaUFTb3XIVV876iyvwNwn5zY48be4ytCeOBEEVH5BbeExzWmllzpLQZeDdhi95lXlNaa6wtBjR5aSslbeYZ1JvfNgZSZgOmBMUwoexFS8B1DOwte9DxPhuC/9Y6lGv4zZXmo++89bWXGcwls1lqfGWzTLOjlxDbdRbVliRDzeemAJEc3csMZnLc/rHsI+X7jNFzzHZ8+98qhNwKfNPRb1nzJXlEELn8DDmwXgqfMQb2+0hd1zRNTYyRw+HAdHlJtzmRAmTeR0OMWbvNcIQT8t3/5ZV/6iH/l9fRK/KMPfDGf73mDdb5X7/3T3x3Atb51//X1z3g/W/969Mnz1DaUtkG0BKDIDFkTFn2Q2mcd7TOcKftiCsY33uTy+cvaA87lDGMylOva3Tu8hjDRPAT1tasuhbWNSElNqcnJC/thtZqVk1D17X4YeDm2lCcsmOMTNPINEm848YeRRRwTsVZasPWFU1T03UtSim2ux1aazkfjeWQWZRPnj1jf+gFJrDSitq2LT4kmduTl0Ifkd1uEvOlFKkria+tMbTtClOfENkTQxBzipJ0pyStrE2DtRUpJeq6RimPMZamWbHenNFtzoAVXtcMYYdtE9gNU0iMQWGoiE5xODgur28ICdFw0zf4qLn36ivEZxHfD9imY3VyRrc5xT6/Bg7YLOHgvYCINjteu+BxGVj0LlA3HauNJTqPTlArOXs3dYNB4UkCbJMY+gPby0sSCBjaWCbn8NOe/eWBfRZRr5qKu+dnIsiuNcmArTVVW6OsxrmeZ8+u6eqOB3fPefXeHVqtuLl8xsXTwLj31PWapmuyw7RnGAZ8CPTDwM4Fzs6kc+T+a68RVWKYBrRWdHVDZSztqmFUA70bwPe4ccIPEz4qMAFTVcQUs3GPRrpZVN6/5bwXUzwD2lK010q9L/iEMgLYuMmhMoMStmy3WylkZBkiaw1NU9M2FSmBnwaIHms1UVtQHqth1VWcnZ5xstngxiti9BiTOW4xst3e8Ouvv2Z7c8M6NoSoMbbF2JYQB8ZpxE2euq7xQzaXoxjzSLCcKDpzKTeXCikgi6VL/K0ycBQzLJUNEVDS8YMuRbJcmKa0jYvJZIiB4Ceid9LxoozkzRhMBpbIHTwqQiLr0yUDRQ4hQcq6lyl/liFJS3IqjH8JEGKU4k/MshHGGHwGW0W2KmMU8gBISdjNUnQRhr7OGme3zv0jvTKJFIvH5wKshbho+IoJVYbzjBV8IxQSwe39O+bnOWM6+WeL2eNcUAyJqGUPXrqSkjy/IyPJJTiTs9+UJCQdxwHMadrSDvvtoiQsOUvRqDtm2jFfrp7bWpe4K2vfB/mz8ISWLq3EUUt5+YmCO6WlgMv8PQt4GHOMEmPpnszXqiGRMR8Sha2X0u3xLLFPSjIvSt5ZApYlzstx6BEuVr4u4KBopP7nWlz/c4Ao/JYAXUohT4bbIN3LDJjCiystK9ITHGbk9dtsmePWiTQDWuXvQeX2kFRC7zyxTQ5Mc1timudhWsA+tASyCfkcozKwk9tgZmykbEELcDC32GqLMVYAOJ01CWJ2DFQlydYZiMxsmJiX5zxYah7MwiVMyBwJIaCsCHFLACtf1VqDSSgTQYVlQojFK7nhE6ur3DXTAjClXvTltGT4sdxvFBcSpRMpixuiND474xilZ7czEC04ozQhjvjoqayFrkWlwNgPklxpTd3WM2sk4dCmoq7k/ZSWKlyxKBfBdiXV6FTJgZBdb1KQ6oaUlEVvLsbEECZcqcgcA5VlfuRKiVYaQmboqQQhCXMuAboERUrYGbLzZhpvnmsZYU8p5la24zm+rIN+mObxQ4lAZpkvL78kES3fvbxfaWV9eZNb2qQKU8PIOKpCNc6JkcqHFmX9xOVnc997lRPfYZgYpgk/TRijqetq1gAp2oDEMIOyOrdHgwCeKouvqtxarucDROZhDHEGDsmaE7KsRddO5tmMqt9aWwlxNZLDkxl7nZ+F0hkiVdJiS5rzW1021Bhn1kJhlQLihFpZorEEXeGVQw4EMcrQ1mKMuNOaqqKqO2xdoZQ4Q/rcOh2yiH8ZI/lLDgpImOwIZ6wlKqT67V22XF/mQtLFmlvAnyo/j2maiCnIka7UXHJQmWUni1sEuCsrAr91VVHVMhcm56hqK204k2K9rtEaqtpSVRWowN3mDsPQc3FxgR89PjgO/URlNPVmA4jY/2635/TshPV6zTRFnjx+yoNXLduD4dGXX/Kzn/yctamomw1Pn1wS44SLEd2sMbm63O+uSCbxow/fQE3P+PwfPuHjT0a69b9gc/eMNZaHq/v8Vz/+I24ub/i7+JfsHz1jGgL9GHjyzTNM1XH/rOHNBy2fX08M+wMhHohxyGNQ4fGQKrSu8t7oiEo0Uep6g6lPabTl7Tce8tr7D+mHb/jp3/4Fv/z7z+ivekxy6LjH0Mv+GmtCrGTvVDG7fAtA9/zRr+czSZWANCWZeznYkqqwlmSkqtBVjTWBptlSALof/fg9Tu50tOuauqup6pbN+oypD5yuz1l3p7zxxlu89977XF9fc7UduXuq2V1vGQ8jSileXF/zyVdf8I9f/ooPnzzlnTffwg2K3c0ONznR24xIq4rSJF2xPQSU7nkHYfN1TYdRmsoqYlAUB1xNEqa2thlw1hQ9MJVZZDoXc3yMBO8yG9RD0GgjBjraVHndyqtSErQbRHtG58JTMVSIGUDSSmGtnXXEFFLNDjHIPqs0TbO02pHI7R+l7aDsKjImogcmrJoSD82gkno5IDsONJdg1Htxh0OD0YtjWXmZLA1w20l8MZPQOh9mOejX+XpVOYO8tHQqk9uejmJOpRTBKDFcOmLQlWByCSol8VjuY4mhipOrKnunum1ysZypR4+1PKBbzy3mz1P5Z8OtllMoIGfMzCSL85Zh8vSHntVagIhN1v7p+150bmNk96uJzXs1/+X1///Xs59e8eTpU9p2A0kz9hNWwZS8MMesxCBi8qGYhoEvPv0UWktfa2xlebDa8PT5MwblqdadyEEEj/KT6LvWBpcCynkm73n65DlGGbz3bDbCDkzJY6yibSv2u3Fec9M0MY49+/1BwLLaooq+V27D07pGazXPX5XlX0bncVfXKKXY7fcMk5cOEqtp6or1akW3WuVWV2HUpdyamaI47GpNNpuInJye8+qrD/HRMjqJJdpOWHt9v+fi4oLd/oDzgXFyolcUxRVzt9+TkiY6yziuqFLH5uQVTs2aWkuLYz96XlxPjL5hv0941ZC0xcc9phuI6sDlPuH16+xjw84FUq/YT4pa1ShTyxiNI24amfotOgw0dceqtkRjqI3l6mbHvndM04CPA9oYbC0MRJUCKnmsMaAdVhs0AynsSWFPZRvOTs558+FbHA4HPv38M3a7LbbSdJs1J2cbTCNi+y4FPIHKVqwa0W5y40SjE41JCBchCKgTfNY2UyStMapmc7Kmrhu22y0XF5dMw4QLicpUNFXLqu1QVtO2kivpFIiTzwWRiFWK1tactB3BB/ajGFcoI4xyohA4kjIC0pUiiTKgkxgKRogh4aK0Q0t8bEEJkD1OAuhq7QmhF2DNGmaTviT/0yoTL1Sibi11Y3GjYRg8Vle0Vct+6/jsk8/57NMvuLm+IMYWQiKlwG438tWX3/DFl0/4zmsP2PYjh1EKdlXTsR8nhtGxajphMgdpG4wpCdieRFvZ+wmih+gzcOIzySGJLng+K2cZiVQcawu9JmC0yXIP0vKasiQNCVTwWBJWBUyJQ5LkcBrQyubxkUzHoLAkdMqauDk5i1nSQOW8gxxJmxTxU5DW35hI+Zw0xtC0NauwmoFYj0YHTfKZiBAUKhqC9hRGf0TljpmID0H049SS4mTaRT6Y9ZwnzhlgEtAQo2dDEZRkBRGVdfdKnqSYGVyU3CPdPrIVc2cV5cv5/C57ouRb5QrkTD82fWC+tgVYEi08uZbjmOc4Xz3Ot0os8jKDrvzZGJWNlgo5JufmSue8M8dcaFCFEFXyP8lHtV7uST6ztAcrXm5VlbxTnpuXhyr3jRK3jaRzXGRYCrlLnj0DdAhD0aQyVmUIpANPlb7o8slH906QmBBrb3395dfL3akvv35LgO52CFwG8/jfc+gGJa9M0jpECnO4ro5+aaXmiysTUAZdJlHMyOuMy5FR+TypUZoQ0wz8ppgBQI4myUxtXNhsHD3EOAMdsCDIGblTCls3VHVN3dSi3xY9PrdWpBSzC18S0AlhJSRlYG6Zug3czL3fuWV28o5kFKaK4tqnClVUo2zCxWlOoErQfoxVpdwLXl4xThTAWGs1o8dCv87tk2YBQDWi21Rpca9JUTZWbaxogEwepaUVUlkDpiLoieQDfpyo1mt00kyZyYLzpMlJJckkaQuck6HCMpOqAVSk4EnBkHCkKJuvzZuXsYbkxamxGDAA8xiSN0tA9AgjBBVmkEPyVPmTyQtOyyDIRhkzIJwR+FSm77yhlRm7vJzzyxhk5J0Cnpb3Ji/UQg842rhuteeWn/8Nr/I1o+WYKxbUZHF28uattZmBRmMMdV1ndzLZHG6udxhj6FYr6tpCSnMipbUmRY/Kwu8mA2opz298ImmdTXdy6/jMBDW5VaNC6YRRmX0UEuKOLG1bcV4Dy7wurRwxeuzsirUEO8VRSSuFc5FFHEKeaakwCR1dQJmiuVB0LWUXMHhd4YzGpRpjDbZqsU1N03ZUdYPRVRawzQ6uqbBG5HhVSoIKpVRmxObrRa6jW21o2pqqqgmIi+Gh78FNtwTQdWWW65oZLUls7Ut1h1wxUsLEDD5l/b8ggEoWFQ7RUSnDoT8wDj2Hw4H9xQ2NWdHU96jrRqj3GXiLwbPb3kjbY3QoJawCo8VdTusacmvI0A/0bcswjEzf3PDVFzv+45/fkILnlXsP+Oj3foe7r73CZ19/w/Pnz2m7jj/6l3/Mw/feQbeWF1cvQBsenN/hn733Nhdffc43z37FK49eYXNyTnfvVU5qy+9+8B1IDre/5ic3NzA4/BTZ7nY8e/6EB5vXeefVc4YXax6PW8YBfDKkmLBGEdNIjCNK1RAVKoljdV23nJ6cc+/uHdbnK959+y7/5k/+FYqJ9157hf+7/r/46X/6T/Q316g4YsoZowPRCIgflMrFF3mdtAIe6Dz/tCqs0fm0lvMst25UlaWuDbWGj945n9/nf/rv/4TN3bvUbYuta+pG2gH73Z5hd+CzTz5l//RrnmvNp599gYsTJ6eJrz7/gjgltDG8uOxxscaNAz//+FdcPd1y2I58+vkTbi6uwYmWklGibed94ma7Z7cd+b0MFFpjhamSAyBVCh46t5cam4NKtczH/H1z7JmkVUzaXBRETwxOkvMgzpnzXpYc0btZIJsEMbMF5mIE0kporaXKWmJlr/LDQN/31CHmVsnyxjoXDEqLBsJsmM/6XPTKa22JUnIAfzTGtrKz2PLxHlxE/03WdoHbcc8tTV2l5oKPKoeeRpINtYQtRqUFjNfyXlYrrNYz+zDl+MoTCOoY6z8q9B2dOfroLFnaXfPpVWIe1KyPJoz+mK/324FjyoWZ4yB+/lpKt57Fy797L6z0tu0IceDQHwDZa9arjqoyKBT7/Y6Q4Nn/MfIk9Rlw1XMLSoriBh79NJ+xS3AuBUgBUWV/SzHQti1t21Lc5W5udoyjY73qONmsabsGHwLPLi65vNmDqTm9+4C7d+9jlKHf3bC7vAA3EtzI4CaoLWd37nB6eorWmv1+z/X1Nd4LA2Wz2bBer+f7L3Inu92Om+sb/CRA5Hq15u69u7mt0c/zDi1mZAn5maurS5xztE3L+ekJKkWur284PTljyonT2dkpbWVIwRGmgcsXL+iHnjv3HvDqG29TrzbYpqPVcP30EY8fPWacEqZe4WKiH3qG0BPiSEgjbVvz/Y9+wOuvvM0Xnz3myaNr8ArvL+n7X6MMYFdMQTGNEdJAW7dikpQ8bspstUrAlqDENCxZA+MBPVlGDSYmGqVo1w0ey96N2GRRKWF9xLQN1fkJkwb6kWlw9Iw0TUPbtnRdyzQc6Pc7CJ6YRfWtERatmxzT6PDeYa0wbqdplEQvJ6YgzPRpmogxyhigGLPOICq7KSLsemMEzDscDjgv0ibOuzmeiUnY6raqsFbj3UQKntOzO7z+xkMurg6cnY1A5PTshKZpuLm5pO97ttst3nuqqmKz2VDXDUqJs/6j7iMAACAASURBVOY4jjx3F4wH0Mlz0kRa6zBxoLUGq2qS79CpxrhIbSNdlaU4OsUYA9fDNaq6R92ecWpWNE2HMQ3WtoSQ6PuR1WqN1opV15KCw1hN3Vi0ttjW4HUi7fZ4PzFOEW2tSBpEk43ohNlV2YBiRKmGrlMEV7FZnfL+e+/z7nvv8+TpY77+9RfcuJGoLMlN+GlAW4Wtxdyr0pq2aWnqhsM4EN3IvbMVpIQft7x4uiO4gWnoBTzSWkgcgKo62tMzpmRJ2x6negJwc7XlyaPHTNOEqSuSinKGpyAabEmjAqhMrFg3LTFKMbqfRqYwotDoSsxCPGo2FNNKWt6VFXMIXxw1g5yPwScqWwnokBJaVZJnJU2MGrB07QpjNCFIC/80BQ77Pu/DnrPzE4yq2d0ccGMgJBgPhk8//pqU/gNPLm/YbQ8ovUEFi9XgHTx/tuMnf/8JwwvLF7/8kkfPnhG0xjQNqqrQVUXSClNb1Ogy2SVL/2iJPSc3Mex3JB/ms0PMTQxWmZx35FwqaWkPjaCUgGMqMw9VElf7FAOoIAXEhKx7Aio4TBJH7BQdkkYklJZ5kbLkg47lLFXoGLKOKejoM7FCgDGlFCoICOOnrHMdkDZhpdC5pXrFGo8hMuGTxgQDBdCJhobIwe0FBM4O4iHG7BxbcIAcLxzliimbzZFxgZcJHDFlBr0CH45as4seXT7nY0zo+piup5azMH+mMVaKosaUE5+FzMQRaJfmGGQuHr70KvhJ+ZySd78M0ukSexUA8KiAdwuc04V0kvGIrF28SG7clgcpDEWRsZH4VJop5DmrrGPP0fNZYo8cyyfBkAqeM5NG8rgUWQl5Tnp+Wqk82zw+ZcRSEn3CWGK6HGtFEsfDKt3X6qX7yfIimjkGk1Es779gGP/U67fWoDtGLlO8zaSbNWBufT33rx9NhoLSkx9uEd0kgyRRpQzQZYDM6nLn2eGr0B8Fgnc+M/hEpGZpo1S5qq6XVpkCzM3PVB0vqeXvxYmV/GdrK6qqwlRWDmsS0zQyTANhlCqBtLqlchuF15snirSxxFiATSiosHcOtKKqHbWq0UbnyS5UzxACmCjARQGG5MJy3K1v3UMJ7Mt2EX2e4Aqp5ihFpYWqO4OjRiZ98F4qSVpn7bBAm0XXpxRJDpLWdFWFS4ngJob9nspUVBjGLKLrEtgY0LaG2uSKKlnLzJMIGJ1E9yeI0GhUCiLys0pR2RpbQ0MAPzJOk+gjkIOs3PsdQlpAR6CUAgpAlLkK85xLsYA3oluRQhCwq3RiIsl+SdCPLbDlnQWILNXXuq4XgO4I2Ctaft5P8xwoC/F2ovHtBGcZS2G0pELGyoseJdqDISa0jjkpsLRtTdM0wkrYXrPd7iSJ1ZqkooDBIUhirUBHaRktTL/gvTDV4tKqnUIWHs1guHeBmALagKkMJutBpPzchE5egMtIEVGVKoocciB6H94nZot1FEL9X1wvJUgqDBKLtSo7AGZr9eDyoIvxSExpPlxjDLiUGI1h0hbd1NSrjs36hNV6Td2tMLYWB76YlmvIHDcTY3bhC6I4qlQGlSEhLBldGXS7wnQtVdNiUmKKhjRFaWvQRyCFLQy6OW+X2WSyKmNKBJ91AZVU6ggBklQx69rQ1JkiDjR1zTSN+DBxdXXB1ZMek2qi63n19Qd0XUdMkf1+y+NvHvH0yVOG3Z7kA3VVs1qt0CqK/pi1xAApBklSxom6rjGqpt/CNEXOz1YYa3h69ZSvn37Drz77kjfffJfvvPEu9eYM1Rqm8YLDzVNSqmB03Fnf4Xvf+4g//bM/48//nz/Dj5Ef/vAP2bzygIenJ5z+899j3L1gvH7B13//Cfv+Ao3h+cUzTGt47eFrfPD2a4Rpx4sXiWmsCSHSVJakHCk5tJoIQaPSirbe8OorD1mvVhibUGnLZjXR1RP/+A+f8/rdh/zP/+P/gJ6e8LO/fYoJFuWtLC49oUwkYSR5UMs83HTN7FpVXuLiK2u4iA8bbXKbsRF2IhP/9g+/z1/zGID/5o//GMwJKIvLe7GpQJ2OfPXpz/n6F39Lf5i4fP0drrcjN4c99allu9/S0dFsVtx55S3e+Oifsbrb8Mtf/pQnX3zF4y8e8/U3F4yDrOcYI0aJhlzdrVid3OGwH24dEuYlcK6YLBhlxL6+VDITkIrWpby/TqW1RACUSusMpkwYK+YkTd3MH7fqakCRgjgnhqzPGAJZ12PRaGnbBmtFTD26ibHf0++2TM6x1vb2/hhFa1LMg/QReKryOSzaWUotgVwJAn/TXlsC6eX7VE7eJdh7GbwjP+vi1iUi8HH+LGNUDsyENSiAf8JoRWU01mpq2wgLL0lx0iiLQhF8EqmK6AlZ4/M4UD7Wy/tWMDj/O/OhOF/7rJMkAa/JbINvOaXlQCXmItYx667EDVVVzZ95/Lnl68YYVquWCIzjgaG3nGzWnKw30voBTG66bR50pOOkrYLKEL1ZdFHnZ5/m88U5R3/YM7oJrUWOY26RzgUgpfKZrFSWRsi/jGg2EaUYmmLEGM00uCxPkXJ7k5qBx9/EfC9z6BisNcbMTAGtxYhJTG2ETSjXlyVN8qupKk42wnStq4pKC1hTVxXDMBCAu3fvZwOVJPPbKPSdMy4uI9eXF8SkObl7j9FFDjeXqPGA1ZZVt8HHxOAmAYVtBTESXKBpNqzX5+x2Pc+evqDvHbVpGcaRyYe8v0Vs1bHSGqUqVquO5nTDfnuFU5GUAujE4B2T9/gYMKrBWI0dRvCewQcOOof9KVFbQ9XWnNQtdVLcffct7n3vPdwwEi/2+MGz7Ucuri6oK0N/6OkPN6TgcMOABjbrDQqNGz3BD3gfZkAcVVrxhAGTAOdG6YTJ4NrkHQqF98KMUVoLG85YoheTlhSl+DYMA0t/W57vOZkzWrFab1h3HUrB3bv3AM3FiwsZ2wwc9/2BaZoEWLQWn9syjTFkclc+nw3jMDFMV6QY2A2l2ySAC9QYWtNwtrZs1i37cUuTJtbnHa4xuRW1ZdNt6KpT+mFAaYNG0Vphetd1LRp42nL+4AHNyZppHNCNOA+n4YBtW9ZGsd3egIL1yQptwA9jTrUC0ziyqhqUEgDm/PyEzarj/OQeDx++yXa75fHjx6QYWLUdUYlhwjT22ErkHpS1WG2wyoq0SQCcA4TdZrXEpmPfE6O0C5ci8cnJGQ9ee43V+oSgX6AvbvD6QCRxc73jcPicJ48eYbJrnmhLK2qlqZVBJ41VFm0sSht8EhkHoiMFhzWWVdfQrU9wUbHtJ3yMVLbJWm6a6Bx98MQhswyNRScysUM6lyrbkohoowSIbCq5fw3DoRfdv9HzYrqCGDFWcRi2tPVKfM5osVj63cQXv3rKYXT0MaCrFq0UbXWCMTXeJ7766op/9+/+T95/8xNuLm94/vw5E7AfRqaUsG0nOsjWEp3kQBHR/q6MRRkxB3z+5Im0sCpNXTc0TUNTN1RW9llrZK5YZTHWUln5XYpsEbwi5kJ30er1wcm5ZTTJ97hhD12LMWLUIbqMRgylqizTFGPudnXChEpgojDZZD8vsj+5VVUrojaEKEw874OAwiHgvMfFAEa4/d6Lq30q2k8597BVxbo+IRBpu46maWaMwVrpUhpJ0n02F22XrialbdmIlhyPcnyJpncMzFqq81me79eHQEOJRXOslFv1yQCxNhZtjwuIZEkwcTHXtRH95RzrGVN0a7OueOnuyUy2qMD6KMaN0QtucaQ9V7oGNEvM8ZvOP5WfkTIKVIkP8ljlmMkYMxdzl5iKbMohwJ61FueyMWMIpCTAsHzst0HGOYaJmWGnC+ajcrdltu7KeWk4AvAEMAui65fHUhuTweklTmaOEclYZtaXZOkULa3Bo59IVs+4xQIOlqJx+tY9HL9+S4CuABXlzcvbFuFLnfvXcyAZcoCcA0UZW3UrGFveTf42I7c5yJaFExZTiJSrx6lgnuRATEn7Znknle2Gy/XmhSOA6u2/11UtbL9cMTsCXufqdMzC4VpnPQWbmScWqsowTQPTMBJ8wKBuLZRj0WiVFCINr3PAKJtR9EasrL2nUErlSWrZbGMWtVcaqxettBjCTBCcn2IyM+NJKja5H5+sF6C1VNhSbpsNZTJOBDcJ49GIxpUIhWeQ0HsMCV1bLA1jiowxMPUHVNVIABoCPooBhEtehJO9IeQgNBYib2YVRAWmDOgMpMEUk7zXlFivN+gxuyuGwhYsraxkcVDmnvUybiHmVtDMVIwplT7p4vYNSRyHRGMgJyB5jhSw7bjteZkVy4KOhcE1I+vlWcscq6oapRdAuohpL8nGIvA9L3K1JIozX+tofs+PDPA+0K461utVbmk9sN1uOez3OOfpum5OLlJKmZGY6ytKYZUAlbMYUO6nV1phtcXYhhCSVI5D3qDyhi6azEWwNM6buFICpJkjcE7loCjltWSNwppmrr6UvaM84lQ0FvVyOIHKFtdy3y5E0adCZX0JmSOFMRy1gkpTNw1tu2Zzesbm5IS6aUnKyL6i5fCKZZPKG5sqFZIsCitzQ64lpEzFxhIwuKSJPjPQXGDyEf+S7IPKh1phHJUjw5bWtRgAEexNGQxZtA0Kspzy1phIBHxwjONAzFT7/a7H6kjXWWHExcDXv/6SJ48fMRxGAWZQdJVhs65RMdFWKh+AIuY6jj1uWgsT09QkX1PrMyrbcLNz/PLzL1ltVrzy9hv8zh/8mPff/4DN3Q3B7Ulp4vrFc375j19y5+QNPvjwI165/yZNt+HLrz/nyy//kfubjjfNh5zev0fSnt///oc8//UP+NPHXzFeOvrDAeNqnj9+wWl3xr0793nnrYn97hP6/Q6lNN45bBWYpoEUItauqEyisYYffCRaTJ999jHrteZ8XfPo84/5yV/9Nb/7/d/hj37/e/zkg7f4x7/7j/R9jwqViD/rkaQ8SVliytqD+XXY7ebKV2GA5XLdvG5VSjRNy8nJRgocSrGqK95+4/4M0GFrQrAoY7G1EuHnEDDGE9Oeff+EYZjYHRqudwMXNwfSQeNjxFtLpT0//Of/go9+7/vcTC949OQRT578LV//+hHX1wNOVdSrNUpF4jBxerrmnXffZXV6h6dPX8z3U2mD1VoATl0MAzI4kyTRThSd0pjZJ2n5eljMaOaaoFoCHq0VpyeL5tXbDx8yTROHg7SejeOwzOuy14UgxD0S3k1M48A0jvT7LeMwgILa+WzsI6+6biS4NML8K4UEqfllMyi87NEmF7S0MB6OA+ZyH8JIlqDsZUbZcexzq2DzUmGlgEdLITC3lGRgzmiwWUvPWk1d6ZkxLsU20WRROqKiwWQB5fJ8IVd3SwB6pN1nCviY8SuUMBDLmSO4pcCyMQe7cu0qt5sWKYlyVsl5vbSWzFN+jl/KeENhcod5aZSCTEJhRmGI7HbbzDgT1kjfD0zO5etcjCxK8CpnaDW3iSyV/LwnIvvWsfnWcfCvc3uwtFMfMRkpukoZqNOSgEYrcaOEq2nec63NJkJa472jtMVopaispW2aW4lJjJFh1tvJRWctBeeqsvl6mcFp5vNdzkOlNHVlsQrcmIi16C0qrWmb3EafsmlTiFRVRWUt292e58+fcZgcyljcfkcae3GS1VlDF4fJJjFhClTa0tiOcfAioh5GDsM1g9KQBqqmoW4b6naDj5rdfoQUaNuKTdvghi0qypqytaWhpXcTkw+EGJmcuEFqH9GVRq1Eb5lpRIVA17Q8uP+ADz/4kH/93/0Jb//wI/zocNd7KmX5/MtH/K//2//Orz77GO963CjOrConSTFGKiuaXUM/HGlL57xFa9HZLXuWlnjSVtJtoDP7ThvRRkxqMV7RSlZMCNLWfwxQH7OsE2KMUdmaO3fu8eDBPbzzfPnrr7m4vMR5nz8L3DTinGjCkteJtPFPaCOEABAWfVKBIRzyus+MVzSmboCKoCqs7Tg5e8Dd9jXu6J7mJNJsEqlymNTQxLusmnN2hz2j93RdQ7/b4qeJ8/M7JG3ka1NkdXqPRoGpZL3tnz1DTYZKdXSrGjdNuNHQrRo26w0pBPrdDj8p1lVLbRv8ZPHWsmpPOTt7ANry+Re/5NE3j0XXdrViP+wJMVBXjey9UfIjjZgXiKmb5DDj/gaXAs5W6MqidKKyhqpq0Kbi9PSM3/+DP+SNN99hmhzfPH4q7Mwpoq6vGG5u8MET/UQ8FOaLFF5VTDSmwiTRTtXakowGnSWNTELXRvTblOR/RuW4LyaMqSFJl0lSCr3ZsKosYZxw/YFpHCXBR4Al5ybpHLGa9UoAOhGaj/gpMgyTOPEinUCoyOX1C5p6JA4d3on7/Og9jhFd32A3FbUxGONJKqCNwXu4uR453Dzj8aMLpmFgHEd8DJJTqwQmm2uUfYicZyIxobJCihmHA5WuMFULMYqj9WGkxORKCWNYo6ms6DtWVZXZ56IbmXQm+GhpQ1VGtN2UMUzrjsFYDtbQhrXkF0kK9mLcoERrOIlYUmFMkk253ORySBYFWE1xLnqELPOhlYUx4Hcju92WfX9gnCaU9kzB4YInxAzGhwgBEp6EQdU6d09IkcVom88XnUGtvHfnZ2BQWTO3ErYaanYBlrNL5+eWz5BMLJolI0rRKwkNyfsS++fTKgqIqqJC5W6ncEQiqGydDSykYJx0RMXFFb20ZS4AXW6zzPFbwWoKjnILpTk6Y/VRnJRSAr0UDJdiXX4vLbrc5kjSrLyPmGxWAjZqgyKW+gcFMJPrOy4+CnFL5TxbqdKqehskhKXYStIoffR3jmO35e8lqlUoKQBnCQRVgKEcX8q4lcbYo1dO0I9jw+Pi5QxEFlzmpQ6Fl1+/ZYvrseZVBsjmnFZ6+BekmBloUhlUU/mbFxeQQntcHokEoSVkkvf3LswdbsvkXt7f2jr/vPxvrmYrs2jQaFkg6qXfUdJ6pkCcPhB2niqflXIQSgbDpOyXkxoBvyqrCV6JdkYGeowxJC/gUQghB6qyoKPPh1EOFEPwKD0RnCU6i1YNHE0yYzrIybpWWWsLLYF58pJsHAEBVWpkXJRGp4CxAZMD7DIuwohIqOxEGCOolKSPPwaSmvCZmefDhPfS0mp1QlmFjwqXInEahWGW5KAVFMrjR4cOE7GusW0zb5hJpbxp5GQj6wykFGYgKqQkvdthwqjI6fmGLoNpCj23JYRcPTfZhfQYQ5vHD2ZRc9LyXQoyDTuDwcQ891R2cxSwKeY2muNAjAxIFfciMoNCzxuCmjepebnkf9f6NsOgtER9e60dMfLmj5akQWjosiEZpbhz5xxlDDF6drsdu92WcRwARdu2cxW/bOIqFc248rYyL3x2YNGAtiZXwWpCkOQtRIgorG3QVpx5fT4wZX5KOlyC2lQwJZVAR6G/l0BMqayVp3HOZx2rI3ZkuUAlBg9zcqzlecj4S7UMo8X4ATkMxAEtCg2/slRtS71es9mcsd5kcC7BMI7045QBgsLik4+2OUmSeSO6EEclFnwRBk6aqCwhKuIkINk0SfVP9pHbB9uchOW5IfN0aadXRqOSJiQ/OxYmzFGya6gqaQ2EhHOj7B9K9iI3jVxfe5oadjc3+Mlx+eIpru8Z9yOrruLtN99g1bRMw4ipLVpJRas2ZKXIQAgTKYoWzLo743DYsr0J2FZz77UH/PM/+hEffu99vvu9D2mahmkcubm4ZHux5ZOff8bP/vZjPnwv8eDO63z47vvcufMqv5h+zuOnn/N5kzhcf807P/oR9b07VOMVr54YPnjnLvvnX/EiBsIQcEPk2dc3vH/2Fm++9hYvnl/R7w9ZL8ehkiFMApZpo/BuYPOgZrOpaJqOx9+0uH7iF3/3E9QvfsZmfcI7b26wyWHyz/b7Hp0KsyySsuNaIrcn5Jcbp9uByBEYE6Mkx1qpRZA4BGxVcf/+XW5pY2hDyIeZ0qC6CpIjaYdqA14fGDhwEy7oVcRXgcvrLZXuSLolTNdcb3t2g+PLrx/zi48/46tff8P26ho/KbAaCzOF/+Ebb/DdD97D1C1WdlcAMVjRGpLN4IuECjFksFxOvLxtBeJLrmHHL2FXmQzqy1yO0d9qn3j4xutcXF1mtpQAx1qLHpUxwo4KMWTQXjENE4ftlr7fZ41GCaqc90xu0aA7Pz+Xsz23n0hlNwNzUVp1XJwI0c/Fm+IKV+KU+T40ec2+xLBLGa1nGfNjBlX5vuXfjlxVjwohRqt8f3q+T2kzT3k81CxJkUnA8nNlX1K3WW7z9R39Pu8z5D0ytxGZ40SgaOloJRXycouIg69SGqMXnZiY4iyXcXy/hSF2fP8hBKYpZbAvEYOmaWvatuPQ92x3O26uLknecXJ6StvUwlKYLOM4MiU523WmPcasVWTU4qQ+n4sxzGMCUNc1wU0zk/E2q026CGylqWqDcllGAzmerdFU1sq2HCyTVaLVqxHQQClqa2jrSgC6yWK1CI9oBZU1tM3C2gOJ6ypjMBqCLjqpomdW1RZjZBwKC1fmrMQdfnTiaGqMALgZUETJfVbWyvUnKaD6IFIG0ySgT+8mehfQpiZMo7TrEkl1kgSlEkDL+cSEZ91tON2cc/XihquLS3a7S4ydsJVo1hrd0I8T46EHVck5RWKcDtQm0LbCgvDZqbNbrejWa3xMuGli3G9JIVIlhbE1umsFUE+K4A8ctnuuVmvuvfMWP/6DP+Tdh28JiJbjo7M7n/Lv//2f0h8mvJd2VWuOgDUMxliCTwQvReuqMqQUxDUViW+E0VHmdi42YObEWIqEWYsrljWnRHssA7zfjjTldXZ+zoN797DGMowTN9s94zDy4vkLcan0Dh8ciVxYSlHa+Wu5npACk58IfaCqGgFzq4pkIBowBmp03r20gCLUKLOhfvUt7n7nQx4+fA1DTxifs2kcm1WiUhVdfZcQNI+fPuPpixf4FBnHA0ZJjOhRpHFiOwzoleb0zjlvvvUW9+7f54tPfsVnP/uYw80OlSwp9gx9wOhKnIfHgWGvUbHFnpxTmw4/TjjdYrtznKv54qtH/PrxYw6T4+z0BGM10SgmNxJCwiZhL1qdMI0V2ZGoSA40AoD4aWLwEzbVNG1LVVmarmVzcs6773/A2Z37PHlxweXFJXXT8fZ779GPnuffPOLGWlQM+EwcEI01TUBMkoKbIKkscTKJKaC1Agai2G/3ODcQk6IfHVHVDD4SlMHYWnLQmFDBY2LA5rMteosJnqZpxQik0gQ/MfQHxlGcpp0bSSnRNDVKaZq6RSXRJh6nieQ8ugpMbkSFBm0afFT4MMCQ2O9HuhpsUxN0wPlAbaVg5b1me9jR91eAFwmcqha2FSq3VkJSc0Mk3jlpr6cWdpcPWFuxXnWs1ydYWxNDwjtP8Atg7LzHe4ebpMhKXi9STI4zEK1sBncyo0hZTYyB1XrHYb+nXW2ydnKe48qAEskNyQBznkaCIGu47/t5VYbcahnzfumTYgwJo2oYA9Nu4HB1w83NFc45qoZCw8hFNcmtIguRIrhA1EWXLc6FSjGVCBmcy2djvg4tWhYS5+Ti/Hw+J33rjLLWiuu087eY6CEE6hDm2KUyuYgUFSF4YQjCrZ/R2mSTO53jDoOfIaQSLzCTACROOAbojvCXzAQ8ft0qghXCQmb/lc6BY1d3iFSZjftyzFSKHcbUct25s0/Pny9jGYJIIildXNtzh+W8By/XWcBFwZeK+/Aiz1IKYHIvOfdikTmbgbwMVs6gnJq5GwuOchQU32IOlv+OntWRjP2tn3k5lvxNr98KoLOFsjoDcPJnGQh1nPFzC4ksqOYMwZTASb4jxnTr5krwvHxfPAqky1I6CrdzJdIqoQ+WIHR+ryMNuzkxPvpdHngqEljLQy8LSgPEzGzRKBXESS4pvNdEDW1TY9VScSMhNs4xO0cBswOMlQlNBqLIOivBTQRvpZ3CgDImJ8xamExVWrSrIugkSHPyx6g8pHHKLDmFVoEUJyJxbu+IeYKmud89g0ZZ0DSFIIuhPGGdxZ+j6AYAhOhAR+rGMG4PeA/WpAwaBUL0eDcR4oCxqwy+5BYwZbGqgLs5O4gZlMvsDe9lnHWMXF1d0TU1qww27fY7hmGQJZjbtIqoaUE9ZwRfFT/fPL7xNmYmlbsMzpEyjpdmevAs3ngMcM/JeQ7g0jyt5l9JK4yUTphCqTQtlYNj3aJjce/y9eM/W6Pnykf5pa20YChrWa3W9OMgrLnDYQGnckJVGBTFzMFk2u2idbgkQlordFVRV4bK1qBMdsSSsbXGYiuLzno5KooJTAwi1poC2WI9MxhTlA7z3Iq7JIhppiuP4zQ/Z6mmLBRqVR58rj4VzKRUWOa2+QxaxqDy54LSlqpqqG3FqmlZdx2VFe0fN3lG50RfURVh9ryZljHMNOgpIWw4NW/hMmWL02IiC7EjVu5BaPw6LaREQIDilPcvtbBhlq0pt0QbiN5nPawF0DSVoW4q6qaiaixKCUAXg8dnkNMaDT5wc3kloI1zuH6HHyfun53yzltv8ODeXbq2pTKGFCPfPPoGP41YW7PuanGTTh7vB2qrWZ+uGd1IP/ZsujWvvPIuP/j+j3n3O6+gmLh48YzHXz/m80++YrjxfPHpV7jDyOsP7vL+e6/TdooH989YnbQ8u3rOZ9PEN7/6JVjHd/7gd+n8Fa+tNX/0o48Yr274RXrM86cDJhmurl7w5OmKVx8+4L333mWc9nzzzdekUazZu3olcxONDyOvvX6OMSOb9QkP33iTTz//FVePX7A6r/lv/9Xvc/9c8Vf/4c959MVTGnvCqgskpGqqk82GOimDp8vgtV3LrF+az6IFkIeu67BZ4L+qqgwyGM7Pz1g1R0n7/jnV+lWCbvIpFjFGBI/Hfc/V80uePrvk+tLjYkNUTQYuHFEb7t95k5vdgb/8q7/hr3/6F/zsZz/n8vISFQNdu0ZVHbGyhOjp1hvefust3nj1Pje7HY1aAi2dQe7KSnFDdFxLwFbOzTi30J8wBAAAIABJREFUB4pxTt4/8lmfkshLxHzGKiQ4TCSc8+z2+/nzrq6u2G63DNkB/OWKopwvHqNEP8cRidFJyz3M2iqTC7NJj4xLN7cUm1wtVkjrhvfSHmoiROzM3JfaSwkml/U5M7PUUqATFnXMJ0hc9qPf8DoGyaAEekjiVha6lr/nkiYxRVwArz02t1alKKLGIYsfGy1M5AI6HsdKtzTxiuuZKtceiSHkzodyAUsgWc6j8iwKgCcBsYBfMRUQQxLa44DynwIqb19XRKkk2qe0eO/Y7/cc9nuMMZycnrLKbU0KYTsFz9Jqk6TVl6PWn+V+l8UYY8zswdJWIwY5pTiqFIs7YtvijKOqSqFQANLKChuCIDImOZTAGBbWY24jskZLQVZGEa2EEa6FIp7jCSMgWmFX5LExWs2i2HIU5HmYEtF73DRxOOyZJofRira2rJsKNw4oW6GbhhRDbneTa48xcnNzwzSKVpsnMIWICw6iprIbAobJK4yF2opmagwBkxQnq3ucb+7z9MlznnzzHJRntanQOpt4JcPkxb2+aqQI7aeRq6tnjAfD6apDK48xCWsVbdtQd2tCUOx3O9xuT1QGVymUNRhMzqdkfocYudje8PFXX/Crz7/g/VfeQFeaUCMtuWMiOIhBQVQYa6ispmgm17bJ81NYzNoIs8G5SdaR1hCKPmhFiFHAMu/n+KckmXmR5OTWSnzjw5wXlE6GkgcqFFVd0XUdKcH1zQ394cCTJ89Ee0xrVuuOuBOjm5j8fE40jRTTp3GkqizjODG5iZDj7LZrhL1VicOqDwqixk9FTiDRrWuUdnRrw364Znv9nN3Nc3Y3T7hzvuJH3/8d7MkZjx494WI3cgga2zSYGmyz48XVBUlpjEooNxKHAyt7l++9+za/9zu/yy/vv8ruySXfjAHnJLYbx4N0DKmJaejBB1pTYbXoePrJE6tE9PD8xQWPLp4whIBdtezGAb+faLuaZrWm7/eEKEQATMXa1tRVzehCNiUgM2wDXbfi7fff462Hb9OPE1989TWPnjxmP078wy8+4cWLS7yPfPD+d3jw4D6bdceV0ZydnBD8xOhGCFBpUKaWnMM7cNJZQC76+iTmhNoqjLWctBa0GJ+M/YBXAYcGywympRBI3qG8QwdHmibCNBK8l1wiBepo8X5kf9jRH/ak6NGGzDZbzoY5Ksy5SFIJFx21STS2QqmI9Rqq0tao0LoCZXEuMhqPjRVJBFqk0KBF569tW4w2TKMjDoOcsRqsNgRt8MERvSc6MSaLIUIFddeyOTulrkR30vuY92AwWtq0C7g39D3OOZQWoFzOEzlHQhRWd8x5a1QwusB6c6AfHG23l3MQMXRTxpKUzVIEsh5VMkDON5IAW7KhaKJKSAIdSUhxfZgkvnP7kf3Vlv56y/bmGuKEsnVey0cZnIakVJbpEsb6sdZZPGZGzUerxOri61a68ayQO7L8RgHMCnmosL7ruiaEQOXCnHfOOXmSogHkMwYl2ovOEYm5M0ezmHdKZ2AJRxYgsOxteX5lTOa2Dp2iSEwcx2iicXfbybV0mJXz9zgWKCQpAQzVbFanUbMMWowSozkXpEOp1L1TyeHlz+XeExLjxNzCDCHPPyGQ+AIWq6XwOoNjYenOEgTEMHd+peVrpQsOmPUWZwgvj3Uu4SxjX372/2XtTbosy677vt/p7r2viS67qsqqAqrQEA1BQqZFUqQkcyBZ5pI9sWce+EP4S3jsz+CJ1/LEI1teEr2sZdIQLRMmBYAAq+8yqzIjm4h43W1O58E+570XScDEgK9WVFZFRL7mNufs/d//pnzmCswdv77BQBnC3gIqy3Xz98Kgm8/nt06GyNtqYVrFAvLIWhW6csaYiNYZhSn0vvoc5Y1m+VK3EjoOQCAc8JGcKWEMSMpNOeASKGAPjX3ddAvKWdHxctRu/f/+Zis/u3VwFYW1Jv4bWklD5Ww1jBSJXmwssYllYl3oqTrhnWP0k5zUKFNlVQGecr8YJYVsDF6SNpXGZFNeVzbmrKxMkDPyPCEWAXaSRpu8P42NLsdba4wuIIqKWCvGmFkZYihMo3JTBC/sH52F7qrKgq2tAS0+HSkGpmlgHAZ8mEgqYFuN8walIjGNWGOLoWORo/pEHItkUmm0sdgshXG9uFP1DMtJWFxFd59SQsfI5bMt989POT8/ZzFrSdETozR52igpZoofktovhOXKqEV8ZbHkfMSfYA94aqQJEEQl3f5SR6sdQA0MyJQFt6DtFD+n0tobJTf55HPxSSpl+iuN3PFE9jZQLb9rjSFkYRZKo+EwbYNzHdo5bm5u6MeBcfRU/x2llKRyTWNpAHLxPzro4utrxCQbpzYa14iHnTA9xSB2DAGFFLbKyFSo0gd1CaPIZWGrkmKRh8o5teUcpJTFtNnKa1eGWE3Blc9dUpfrnFiJ4fExo1So1KCTGKuDKpu+LNCyeAuALtMki3VtYQNmAeaCyMwb10oBXxra2kjles3shyvCsFM57cEIgQ8zlEmWUcVMPmVsFJq8OVp368BH5Sp5kysilqJM6eKRhEhpVUmfjilKg1jM860VeVTKcuxijPhxIIxjAfQzY7+TVDml0Clz0jb88Pvf4dvffJex3/H6gwe8++47PH/+jM3NC1brgbaB5cmMtp2RUBiV0Cbh84BqoFEdrpkRRs3LpytU7rm+/pJnTx/z2Sef88n7X2JTRxgzi65jsVC4ZYT0gm++e49Pv/MuP/3xT3mye8m9WUse1zRm5M07c4ZnMxbjXV6++z2uN5br9Rf4cUS7zJPLJ7QnM15/83X66YZ+vGF1nRl2iaabM9OOmAIprdDag5oYxg3LxYJ5s+B8dsL5acP2+iv+/Rc/5//+0S/46P3HBG+wdk5SOyBC7DDZoVREvBAP92VTptv72/UVIEIbQ8yZHIXZ6b1n9J4nX2k+++AD+IfyV59/9BPO3v0B7dl9at+omAj9luePLll9tWX9rKd/sWI3WaYMuRmJyfPW/YautTz+8gv+8r2f8Tcf/4x++wKjYDZrmbVzkm7ZaVkjHjy4z8O332K56Hjy5We8ePqIt3hT3q8CHxMxqX3RXNmv1VpB65JrrspUOsWDdCyxTx5MKUNhraHFs84Hz2qz2R+/9z/4QBhBMYqJdll3xnGU+y1KUI23hhAmUvTC/ha8We4RpSAkduO4f971doMzFlsCJ4ytAQOQYiKkSKQw8AtwJdLxRAx18OcA9qb9WikwlFokl1Dz22zY24/bAFUF+g/fLEtJFHPiqJIwgTXkkoantSLahNICEodS6JMVmkDNgDsGwI6/jll19f+1OvjL3Woo9kqI4/ec9o2esKXDLbkN6ra3HRz2qmPvu+NBS334aZJaxjjOT09orGG72zH2PW3bio9Z41BkcgoMjIfXQN0umo+LW63JOd56X4eGQjzeRGFhy9qqS3iLvJbsQ2WBz5JyK8m/ctLE1kQAvrZxOGNkv1G5BMuUIWYqxudlv0gpFQNtOf5Gl4ESUGsKGdakvZfygQkpA54UIqnIdpNWJKskTAs5ryLXlHsma/beaNY5FrM5aTMQB48xrQQC6JYYPbtxokmKxs1o7RLbgo6ezizJkyZOGa1kfwk+MoUBlMY6UKaVcA+lZb3NgZwnvM9En1nMG6ydY12LbTtyAQH8MMnyCvgCJqbdSE6RyQdh3qRENJr3PvyIn//ib/gXv/uPCwNWMQyJy8ue7WbCTwKGksW7OWfxU9VaPIqUEs/DprXE6Ol1AiWhGkobabqVALFNq/eJ0SEE+r4XhYFSUGRjScXiAVzYwbfWEflv6yxn5+c0bcuLq2vWqxXzbk7XNVjjMFYzjIOAz0nY7sYaYSZaXYA3j3WajGWapB6ZpgFUZNnOOD9f8PJqYLX1jKMhTOKbeHFqWHQGv3vCJ+9tWJws2E0jU4Y33/k23/zu96Bd8uMPP+Pjjz6ldcKEslkT/US2DdpKQEfXOGxoaJQnXl3y9P2f8sgk1i9u0AwoPeFcWZN9wE87stY4C9YqFo0lpwE/9KQYsGoOaeDm5pqrzYrZ6QJlFDdXK3bbDRf2nLNZi6UtfpsBl7NISK0ljb7I9zU+Zu6/9jrvvvsNfvOHP+Thw7f45NPP+OiLR3z19CmPnzxFK0NjW7q24/LJY3wvAS03L5/hlCLFwG4aGMKAMoqmFQmmMgpnJJwvJ4p6R67JMXlMStyZn1HQJrDCKLXGgm0wtiFnRfLCzPN+YBh2xKGHGLFa7v7RR4YxiYWIH1Ealss583nHrG1RwHa9ZRqm0pdlnDEkC73fobTmbNmw6Bbs1j1TTCRTgWOF0S3KzAhJ+ruUPDEH0BHXykC+aQyurGUK6SVD3TcUYmaRQfkoQX/ZAolhmvBJ9tGsFUobnBPgQewSMto5XNNig5egpmnENob5bI5zjQyMag2QPCFW4FIYVrPFKcuTC9quJRU2o7XynNk4CZDS4gerEuKNFmQ/O7GuQmLFr0AUJjFLX+B9Ige48dfcRM9ut6Pve7ROtLn4t2GIKR4N4yh7n5anqxYUqmAVBZCx1jIZXYb16kDyyJQ+AmrSqGxdmazTHgtQSqErAy2XoXz1YS37SN3/au+kkMFFYSKUAeZtUC2lXBRMr4BC5ekEOJLKpoJie5/7o1617qd1EHo8JKv2GhV4PN6nq4rAVqakFoVOkQtwTMCotcPey1ZXQpc6tMfl4+6DOeAWQCehg7X20LfbdlVHKtV3SAhDQu3hAAi8GpqhQJkypFYcBZAdPOpfPe51QHpQitZz8EukcuXxd+Bzvx5A13VialuZLxQpmdqbaZeTWopDhZZixhTwYm/eXECzvQ66FGD760KXhhikeK2hCeXDlEbeGJHn6CJtMdaWKfThpIvANd0C5H7Vn4cDeTShVhJYYOuUfn+DpAKWUAw5NckUs34lcqccIaTEarOiH0dGLwWA0WKqaW25mSkXVpYb1ihVCskG27aodiYgg7XSvIdImCZSGMVHphgj18e9i5lMjbXG6ERnZqBiQcHF/HQYBsZRzPFb10iBNyoIgvJabWhdg2kadNMKOKMV49Szvr7m5uaK7W5NDoE7s3PGXc80TURE7mV1JqgCOnoxeDXaYnVCJ4MqASMRSipoZfZJ4xZykbDmgI2RaZzw00TTtjhj6ZpWXi/GArSxL3aVUmAOGnhyLAqlCsTUq/UA2JauG4q89dDsqF+uL69/LxdvGUTiXH6BOmPdL8A1SKFOYI4krn8Lr3vlURduEN/DpmkxjUNpS0yJq6srsqqhFA5hjwSCGFnsGVgVvZePkA9gtAKjHU0jE11rHTEGBu/ph5JeZY14kpTBdyzTMJlqlNj7FMk5oLLC1KOr1P5oVABOgNNcpidBgNuy6e09pMr5ilVOrGvjVOjrWcByeYlMyIEYoiQVR13GHrIpNt0C1y1RtsX7wBQDMQtbRWkDWs67JGsJ0JuJe6aN0hIbIXHcpbEqwK7Kmhwk9cwVCXvU4pOXcsQe9MnYXAYDJY3KlA07BjmWSutD0mtWMj2OcnyVFVN/pRWpmHFL0m6REioB8qrvZ0pe9qIi/334+gMuFgu2NzdYLaEHOUxsVlfEacCoTGM1XWuZzRoymhATo+9RzuAWmjQE+mHFhx++x3b1jMYFrl88YXX9gt1mzW7dc7o84Y3X3+C7332bh29foMxA9hNvvn7Gd37zXX728//A6sWGe4v7hN6zfvySOw/f4OHJa+jVc77xxht8cbPmRb/m+WdPIGs2wzXPXz7j7oNT7t59nQf3r5nGL9hurhjGLW3TEWPAWsf11ZoY4erqipurgb6/4fnTET+1/KuPf8J6c8P1deTy6Qu2mxH27gBihquyhBpplW5tmrt+OADs5APYqmT66YP4hyokuTD4QAgbPthd8b8Pz5n9w98F4Ec/+nN+Szve/FbCdh0oCdp5+eQRH7z/Hs+fveDFiw3aBLaTZowR041M05a4CVw937CK8MXVM7zqUTlwcrLg1DbEoNkWD5vu4px3vvlN7j64z7C94qvPP+GLTz7cA3T1GvY+gKozysqWU3VBpdLKVQXgy/Ck+j0egP4CP6SjKWMB3gHW67Ww83J9/qN9NicZDJEJfmTY7QhTT44eVdjnWRm0cRjnDkAp8OzZCzGZt1aM6Ms9aAprPlPYeJp9XVCLvFQL6gLQVf81Vb2nKviVVCnYD5/ztiThdjFbi8NDHWH2gz5d9gRyqmVQ+d3iPUdhaBX2WE4ZkrALjwc5x+zD40Jw/46O1vnKgqMACscT3pQOe9Eh6EKRktk3GdUQ+7jofBWoO37d4z0upcQ0CRgzm83oZnOsOSHFyGa74+bqihgDi8WcpmmoCeGTLz6ppR5SR4PXel6EISivtZc2v3JMbn1R33MZvOXDn7n8tz6SZOUkQH3bWpYLARGLgpvqZSdWIRqSWHTUc1sPtsrHryN7zOH1VQH2oIZZGVWvssPQSIIgyqAKGQ7nyu7PiZAkwTblxLLrsG2L7j2u0ZhmVmT1gX7aQYqgWlANXXtCu2wYu4Gh33F5KTWda0WG7sNU5M0ycDs/veD84oxu1qBVZujXvHz2JdP2hm5muHN+SutahikwToEpJYYh4H0kZGGhh5hJ2ROyDFmn4g9nG0eMMK16fv6z9/iTP/1zZssF8zunbLeBD977mOurNWMv3qNWJ6YoUteunQnLpximOyu1s/iIyuuM3ssQQsvRn7Uds/mM5WKBaxq2m41cO9WTEbm2UvKQjfQyFURNhdWk1a1kZ2slwCbESNfNJCAiwWaz5ubmhkxkuVzQNG5vGzOOvSTMar0PXJFrWAK7/AQqtpzYBYMa2cUdSVmWp6ec3Tnn7r0Lzi/mdF1m16/wTWZ+suDbX/s2f/hP/lNCdvzJv/m3fPTBB5wsF3zvBz9g1rV8+fgRH/zi52w3K5yWVtigmHczjFKsr1b8+Z/9OT//q78GaxmzwtpE04IfPVZ7kvI01jJvWxplmDcNeepJIeO0RitPCD39uCGpTNTF63nWYFMjctVxJ5JjA2SNcRrjpK4dhpEYE67tiCx56+vf5sFbb/FyteXTx3/Be++/zydffAHGYCnspTixvtly/fwpT8p6sttsWXbz/TBEmm0Z8honAJ0uYUgqKYxVxKhQMZS1RHwzrWsxSnyTq6VCLMNhYySsQlVpfqn/nFW0ztK2TqwdQpLwKm1omobTkwXLxYx5N8P7ET+O9AZyqAxmAbFQhrZruffgLnfO7nP59JL1EBjDiI8aFRxTyDTaonQL2kgtbhON0nLPR7E6srqEYxhDdg2xePrGcSRNHpMzNmdUSOQsAYbRZpLS5UvqeK0lSCsnyudNGG1xVtOqhJpkaNbMFqLGyeW+yhlUsTwqlYdpHOcXF9y584BuPhOASoE1Da7toGlQxoq3W87k4vdcFV2ucYWQcwCHkkJ85UJEY0iTxyXD7mbFzq33llPWOUn2DQmi7AVZpZLoK3tiUHFfT1RvuMMQqQzFyKgsiq6UC5if+aXYw2H/LPt2+b0Duz/t91/IxFS8gkt9sPfATLLu7Z+XQ92xB5DU0TEpfeR+yy71QPUU18VXrTLRBOtQ5fq+zWAniyz/8Hr5Vm1RH8bcrg+0LmEwR1/h+LhQh1WFPXcLdExF3htL/633/fOeVV/n6EclkTaHAWX9YeZw/I+f49X3X8+BYE5VqWH2tduxpHc/AD5K5U0p7muP4+dXqng/HtVMv+rxawF0hxSvfPtNqUrV35+G26htjkcHXQrGmAo9VrFPEMmqGvPKtV2nCPtFtfzMKCUNcUlQsY34NUhxWZruAnykssixRz/r+ytPxtEJyeUCUmpPPdUoLBnrirzBapxTOFea5Sz+AyEYUgSjDa1tIcE0eIZxKKbu0vBZ45h1Ha0Tn4EYYpEgijyoc47lfMZiuWC+mNPO5uROTLCdsYKgZ/GamnbiYTD1AorVxzffeV2Sb5UGIkZiNbHWYpwlxCQThHEgJFmUhsEwTo7i3y+R2hnQidm8xTUNxmiawpZTJtHNG3IMNE3Dy+cvePHiBZXVZpwBD0pJag5WNlGLgmN5Ua6yKC3+dCiSKQQtrWUqlsV37urmhvl8Qdc2LOYLjNbsxuHWAriH3XKVTpU0rwqzvXIj5P3vlitMFT39vmhn7xFzeNTGVV4v5wJA6zKFqzd+aUj3Dayqv/9qM3VYOOr9oTgs4lMUBoRMaxyukVCTXb9jO/QyvbAHFkM1H9YqFy/EVJgB+nZjpYW+35i2LJRSIE4hSjpoSCKV1mYPDBUhMHV7LRgYiSRT9RiL31Fp9krhpNHFK1ERQ1nAgiQyWWdfYYQc+RpkMVY2CMuxHp+cwl4ejpKktegDKLunjxsjrFrXzaHpCMoxZmnYc/H/iTGLVwSVZYiwEtD71zJKiY8mSQAD4bAjErVMNhqrGjqnydoSrRKmQEzYoyRQnTlcU3IliP+SlomZMxZnnUwZtdlLDpJO5dyXkI0iRTdGksBSznt/Ix8CiVw8nDLeT1ws57x2/y5xmri8esmDB3cZdls+/fiap5dP8ePAvGu5OD/n7EJ8+kzTsusHXlxfMYYB01hM4wnjwG4z8mW/pVENaYQ4zumy4fzOOQ/eOOOb33qbd775GqO/5vLzgbO7d3DnJ7zx8IT7D5dcbVds+y0fv/+Im6+2fOe3fsDD119Hn2s+/OwRZyeat75+l9BvWF+uSSnz8vo5n38+442HD3n45rdZbSZ2/cQ4btmNI9PkOVve5epqx+NHz1nMl6zWV8S84dnlV2zWlmfPN/gAPgfGaU0kkUKD0fNyNjwZX5psfYyHME7+sJ+VNaEyIOv0sqaWKaUxzoFSDNPAT372iN9HALp/9W/+lBcYvrNb8cbD12lmlqunT/n0/Q/4f3/yVzy7fsn1egd6ZMwW3VjSdoUz4McdX64/ZRUUet5w984pzs6ZR08TYL0Wn6lIZr5Y8uCNN+jHic8/+pCPP/yQF5dP9p/H++Kzl9Xho9bhWAEaRDYuq6QyAhBTQgDI4JqWU+NY3ayIUUIfYiiMJthPR2Vdk+l5jGXOXSfRBaCTibRI5YOfyCnjrKSfaRqSbVHa0rYNs1m3f95pmkhRGgxt5F46hANo0IqgsuwlVTaZcgGCbq/qwtSqUtIC1hX5+6u/e7yGq1JXHCQw6fbno6R/lUIvqwS5fI/CQNsHU1gBIrURFkGS5sLQoNSxXOUYpJPjiqpF6sHoWzxaC966H1jV9y/yTiiykVz95zSucVTP2rpJ5do0yIsf/tzvJ3q/bosHXdpbfKQY8NNQ/Pcss67Bh4lxHNhsEkZn5vMlXdsQYth/BhmEVIP14lNaGfK5NihleIFcf977MlGvRXNhtsVICJ5psvI75WdyXMuXqYz4AgQqmHUzTpZL2lZsI1KMBWgt4FsB56xWJfChzvzk3EhohrA7aoqhqgBdLgBdElZKwQ2Kl2VGF6N0XeQxaHBWQjdC+exVUia1cCPNf9vRnXQo27AZVkzjmqR7aXgbfQChDVgX6a8veXl1Scy+JNSBMwanHFPU2Kbh/Pychw/f4OLOObPOsVm94IPUczmscY3m5HROY1umlyuGYccUtEhSjQJnyVNERTkXUYFHzAVqSIbvJ3ZfveDP/u3/yU8/eJ9ZM+fd17+G03NWq8Cu70VGSsLaTKZI8YLUes51GC1eTsEHjKhLRZkRgrBqtAZlsK5hPl+yWC7QWksITRaViNEao0s/UoBYufby0VgSrBY2pnOOFAMxeNqmwVnHOI0orWlnM7b9lpwzi8WCs4szjNasVlcMww4fItpYTk9PUArWqw01oTEmGYTEPrG53KIGzVzNWMzn3Hv9De6/+QA1y2zDimf9ioQnrwL/4Dd/h3/8h/+IPE38yb/+E378Fz9mNnP80R/8R/zBH/zHbNZrTBr44BeBF8+f0lhH61pYLGhcg2taZosLdtsdfpo4XZzx7psPSDlw9fIlL19cMpx2+HFHnCYZvifoGssYJlxjaY0jhpHteqLvt5iukeGjFjDGJYefBvpRcdqeStCKamiaFq0Vwziw221Ba07Pzvn6g69zcueCzx494dPPPuHq+iXr9RqlFOfn5+gsq+zNi5dcv3yBzpnJWpzWtE3DGCZM4zCNxZmGbMC1DY1zcv9mSsMJGkuDguxQIRJDYBwnMhpsi7YZbaWnUmW9E9ZrsSlKoYA80k8oowQgSJmkUwELMhDwfqAfMipHCVHqtwzjIH1QzEx+IoSImVnadsadu2fcv3POMN7QvYTsFbrY0eRkBFhEAhjQGeMktCUFkdjKPhzE/sVoTNuSrCVow7TbkbzHNZZZ09K6RgASlVHFTkdZA7YwlIyFLGCk6zrZg0svYruGcRxRSmFdC6noi9TB/1obWS/RoK3FNHO0a3HtAm1s2ZMNWItuOgHoioosx4Qpg8JKMlB7JYrU/lmm3xgfaK0ju8h20dO23ZFPaQH4nCUqSy5BRzmJR2sFrGoyZ64srxhIyRVSSAF29ihHaQ+PZH9/i/hzNCwEqR32pI7yzzFAJ4CcDM4oe2EMhRSh8n6vRKk96KXLYE2URLoQA+oQlsNeXtbgCsZVMod4wh2GW/U93aqDyp9GaOICIKojABGKWq4q6CpGU/rDQhqqykfZOAW3IBdZaWFZHhh2lcABBV4s71XtMZzyqaiy3+P3LTVQWcXz4YNkVJlJH/5eDb0yun6aw7ks268oYV49LvnoieHoyjjq9amvlanhRb/q8WuGRBwuxmM6YjkNFC1YkaRVL6dEDsWDjUDMhV2SxEMowb6woTLsUMfHTVhW5eIV6WYuMtOMNZmuq5LVVG6MLJuxKoBQlGInqlqQFoZNacwrpV38yTJWib9F4xzWGrISHy1rxdy56xzzxUwMP7Ns2oNX+NFDSmgVSiJTz9DvyGGC5GmMYt52LOdzGiMsC09mSGCd3BDOKhqrmDWO065jcdLh2RHyJDRwLzfXNHnGYWASgovqAAAgAElEQVQcRobdFmctd7gHwG7Xi8mzFqRrDAPGQNd1zIytwHMBOzO6NSQsxim0suQMfT+w2/X4fmBK0xHgJcysnDNd02BMh7OOYbZj27YE71E1ua0wBoZpQsckU4hw8OirchvrOmlayqSWLEVyjFmiz2NmnDzr4Bly5oE9Y9nNaIz4zKynAe9HdJbmIqVMKmCvTyIBjqmY/qbDDXpAz2ORSNUbT1iXHE0ZDv/DvmnVhV0ScwJtivdBZZoIQJdlpENdrSs772i4Qc41qVO6hJgFgJF7yRAiWNtg2hbjHCFmBj+y2e3oh4HFYg41CY66AR5NDCqwUBpJUWkW8MqJd0r1HpomX4xrxSelaQT4zSU1dB+kUH2a6p2ac3E2l8+hSldbm7hKR8ocNXD7ZMG6OdTjkfd3fF1k6/PVRiuHIOwyhJGTayOmIGsF1qJcA9YJhd8nYhI5qNLC2BM1dSjrTTlfubIXyoK9b7CrzK80ibEusgmigcq+qt54Ssl9YI+5y6U5Kxu20ZL21DaOnDPWSMEfk8Y7YQTpoFFJY4yiM5mFAZcyjVIo7VHKM4TIGA06KVxJQdNoohG2Rjtr6PstKXhyjGzWG5589YycMpt1z7w74eLeHV5/+JCLe3dYnp2ANax3GyYmwtWKTluSzWz7gaHvCUy0Zo5BM+uWeK/olo4Hrz/k5PwO19cbrm823Ll3wfx8gYma1y4W/M73v8PPbzybx2u+fHLJk0cvePToKf/JH/1Tzu6f88knn/JyfcWdk1N4+2t8vPuCkEZ2/ciXz15w57U3ufva2zzsR7J1vHz5jOAn0mZHwPD86obxZz/jG++8i7Nw5+4pN9c9q3XP5BXDGLlZX4PO4sGUxFyc4ltW7+7DWZdH13W3Cqt6/mpyZs4ZylQtF7+spm3LUKTdP8/HX7zg+l//Kf/uL3/CW++8yb37d3n66DHPvnzK48+fYmbnnNlzUjY0IaOtQumWxilycMy7Oa1tUF3DEHv8bmAbPEEZphRBa2azltPlAmcdT5884733PuLpk5eM04ELPE49tulQxuz32j3AI1d+YcGqsl5IYagRb1WtNGdnZzhrGaeJYexlIFGkkVofAgQAgi/Feml8pfiqvpi5DGgUCZEKW+dwjaPNimQakm5AiyysORpGKWP2MkAFssdT9xdZcCRQRwyn5aflPn+lJtqHDZV9KeXaANQita5Qh7VbroVDfXJY2/P+K+VAHfgKQ0swi5g1JoPOsQwqNTopTNYoU4q/FNFZ5BVmL7Gpfi21/rJYV/adnI+86IThowob7PhdyRNI0+SDZ5ymko4tTSWlYM/FG5ay7h0X9fX5UvHqNPshqdoPuhyaMCWROuYCbHUds8agFh0bIqPv2W0yzmhJC7WaYDXJp8NxLvemgsIuhhwChCJJ8oHkxfojx8N7hVyCWAtwGQtzO5RkQMoxrcMhDkxulEhjretwbYdxxei6yq1rw1JA+YwWeajRpXDPJMzex6g2WjWIQPbkOnQq12zdP0pgiLFyfcu9Udj6Kkvjaoyw2WMmJIVrZ5imJaPpupZ2PidrjQ/Fs0yrUjPZPSto6Df4act6u8KHCaXiPuhMQlkSJmYWbYPOkWG7YaUiYd4Sg2fWzWhnc7ajp58imcQUIsPQM05ZjqESVpIK0JT0Qx98YYoWoFFr7l5csHAtqXWsbq74avWIpx99irMLtF2QCZycNyUVM9HalmlK+ARtc8L85FwM+IctafR0SgvzXSWs1RjXCnhfmJbjNJLXMpTbbiWMRqWERtjtNagk58yUAkmpvR2I0YbGWE46x8nipOwlsA0TzhpJhdTwxtcfYhYtfd+LD6M2jGFk2PVM3mO7jvliwXy5ZNr2qLglBQnfyiliFCQ/srp5julmNKcz5ssLXnvwJrNZx7PtI55sn3K5u0GryO997/v809/5fU58x5/96K/4xc/eZ9bN+e3vfoMffOubhO2OR598SpgCrz+4z3r1HIXldHGXe3fvMGsUd85Pee3ufVRW+GnCdi33Hj5gNw18/uknfO4M47AjjCPb1Zqx36FCKlYiMxrXYJSRz9gPDN7Tnp3QNY6cA6hATCMhTmTVCDgSFU3XMluckFDs+h0hDiwXJ5yfn3J6eofPH33JX//0r3jx/Ann50tO5nNiSPhtT+PmtPM5jfMYtUURJQE8jALq6oZOqGOH0j9LP5AyJZVV6vCsJGDBKlA6E3UkZkNWmhADyo9YrbAKNGGf9e5H8QXLQcD/GBJRQVAe1doDqJ+KtxgJ76We6Hc90zBycyM+rY1tpCbXCrD4CaJXjKPstZICa1k2JyzOzjDdgqxbQswCexeWuUJB0uAzeYqkDFOaUK6OjQTMM42wGJVV2K5htljQzTsyiUAmNu1+uCJDNdlJYxl0xSDJsChotQzTjK2sIUXTyFBNwt0kOfc4jd3ZRkJHtEUpi7GOrOo6KkCZaAx1CQtSwrosfU0MQRh8OYtc1RZTiCghbpT3a60oj2RvFaXJ5A1dwS8SaQ9k5pzExotMtsegi2AWYnmgS41UKSBm73uuVAYVS71Ra8wCxJV9VtJeKczmCs0dEUIyJFXBsvo9eR+qDugKUEnO+71DVT9UfQxOKRTCrJR2J9c2prCz61CxDJy1RavCwOeAN+6TsFUZSAHaOVk3i0Q2xgS2BIcZg85J5NFKUnUtcjyD1iRECSlDEUPImpjEw1tRy49UEt6TBAHFjNa2kDn0foCVcw32oDhOFLDNFyWUEpuRW6oDJcNkuVaD3P97cFBqH5RCxSzj73Lcc4KkheChlJbrtV6SBdNSugzfbiG25TRW4g57IuivfPxaAF0sbyzmmup1zMipJ41S0MqBSjHtI8liPkhpUAZlJIWyAkkyvVZ7EICcipxORpxG5eIFJ8CcNRFnRT6ZlZL0TzQxGTKmHHiFSx5V4rQlMldeTxk5oFppKeiCnAxlHJ2bcd7N6RYzaBUhe9I0oXNk0cDpTCjpU4xshi0qeqZhy243EMZI8nlPV9V4TJ7QKDoTaXMgjxNpkuCFNHnaWUciMu42bFIkjyMMAyYuuXPPsB3XXK+3vFyv2WxHxuJ1p5TCGcew20IB6J5f3pCSIWKgsbhlg20NCYfVjXhLWU/biceQtZrZrEEZg2s6sjKst1vU1Q279YqOiB92hGHCh4AknBiiSiSlGNOAUYaTxQnb7ZYY4r7Q021L7gd8RsyETGbWtsxaR8yZ0U8oR5Xul01TNjAtqyhaWdCZQXviNNDcKGxILJYL2oszxm2mX43ockymaSJrQzSafvSMSryTok+ykMcDbRYFKie6rmE+n9M4UxrtMs0ozIhj2muujWwWGZQ1mqxEzswRy2z/UJa6Jsvfq/6B+xauMO1AG0tKmSmKR5qzLVkZmvmSdj4nhIn1+obdbgNasTyZFYZHBedk2m5L2SCAQg1BKDd7SVHaTy2gpO9NxdNMDFdrmENNbJUPVaRhlS2SRYpBCOQoJqCuFMGpSOGtE7A2F2p2XQfqMTo2MU3pcF0rpTDKlrVDGBK1yUqhyEwQc+FYivysFZKTVhpGpcVvbhrBFtCzTD4FQIyHdaxWbblQ71WR5ZfFVQM1DGLP2k4RP/bsyMRxhCy+WjGVQIwjEzpliqdXDKicscqWhknLhF8FWYu0AiXSpSl5QmlOlxbuzixdhrlriPqGcbwmasuUGgiZNmtybhnGTG4V85Mldx7chRTphy1d06G1IXiRw6pkWMzF+NcYi2sbsIrLq6cM08BmWKNiRE8KgiEOmRQUzclcAlvWa56tpSDO3R2eXm253o4YrXjnnXd49/wNPNAQObEdv/vd3+b6/Rf87JNrNnFi2A18/NUXtPdO+cZvfIvn12s+//gx569Ba+fMuzMGP6Cdplue4lG0J2d843u/RXN6h9mTr7h88gTV7MQzJQRGP/HhR3/DomtZnszpx55+GPHFlHi2OJF7tzBSZQqcITtQjmqae3TLsFgsbu2Fx9PQXK+n8qhMOq01rt745dGnlsunO65XkcvHW1zjiN4TfCT4E9AzMFJwNU4mzlFZdqFIrsOWNG6JW8paIwbauZsR5CwwbxvOF3Oy96xv1jx7tmKcAH0ACvtp4HTWiZfy0UQx57QHd7LO4jaRFToZQkwioU8BZQ33X3sNrRSXz57J+kYSc/0sjYg7+txubzBcgIsCPMlMokrH5fcnHzCmk6m9FikNxu1tHm4lZSYBw43Swoo1VtaZYk2Qs5xInUsRXaZTqrCqjs+bMGfL98o9KMnpdX061DnlIpDjRNpvXtX/9FgmmYqfnJLNpgxQFKpka6Gq95lCa1/AofI8BSjWFD9ObQ4BA0rt2da1UTl+bwAhSGq3VZI0qo0pKdgHgUfKYF2dWSqZaNtiCp0BH0jTRI7SCIUUi2ehHItYEnhNsHufUmH1FW8xP0nSdNYEBRNZAhpUxOlIyJ6x91xHz+L0jLabM5u35D4TvCg1UvBoiqSwPGcKgRp2FFLCoGispSlSQTGOlmGiMF5lgp+1IeuEdg3KChs9FYZnSrLea21JWZOTImJIxT9XbnDQxlHda7WyJBSTT1hA20aacwDbkbUDJbLRlOWc1BQ6sdDI+88hjPLq0Vt2Sa3JWhMzOCWG101Txt85sxsmxgDdyQLTzPDB40OPX3mss7gM2msYIdtEtoEh9uy2G7yfmMYRRaRtT4nTRGta5l0nIV85kZzF6UTo1+x0hDDHD44YPNMYULphvd3w2eNnOGOY+pHdeov3HmMcumlIWYDx2Uz2n2kzklOicZZF13F+fsHZ6RmNcwx+ovcTy7MlfpzwfleCEwZIW2KcCB7aTtPOZ6TUsTx/nZOzCzab5+ClHgg+ygDfGZp2gWvnBUyQoVzf92y2W5IPTOOAznC6PMEgwQE1KGQIEyFFTOtIQWrHuXPMrObUGc46sYQYomd19QLVdGINczLjze99m/Pn91hdCrNrNV4R/EAcRmGqnZ7SLZb0/chuO5KCwuqGkCaMUjQaVBrJRhM6Q3NxxuL0FGNnXD6+5LPLDxhnivbiHr/1G9/iv/7jf8FrXPC//A//K//PLz5ivbR853vf4I//2X/GsjH82f/15/zN+x/SLhY8eP012oVh1i144/67nC7n6LThG197g7lrub58gR9HHj97wceffMyLmxuePnnK1fOXTNMgA46oQc9xM0v0EdO1JBRDCIxZ0wfIymK1sNmarsPaIPtYHIHE6D1tc8Lp2V2Wy1PWmxWb7Ypubnnw+inzpeP99z7gy8dfsr254WzecOLA5Uk801LG4fC7BKlF6yX9boXRFtMoxpgk9d65ojJASBtJ7dXmtrGorPHVSimVBEw02mYUFh88cZpKb5IwJAGsyIz9QJw8VmlsruCTpFGGKTJue+GMoLDakkgEH0hxZDSBFCUoxIeMMg1ZW7LRJetAQJh+5/n4o8+4fHJJnCaGIbA8XfDg/kOSs2x6Txy8DICMRWdJ+Q2jJwtHhBgjuyGwS1tC8Vu01oKGIXlUY1BOWHK6kUAyZS1RG9qmoWuavbJNXDASzrSkkAo4o1FZbFV0lvVy//0yMDJJUxNSZSCvILKv+7MClEZZqf1VzMV7jsIBkvVZWFvSm2Qk8AwkwTkVvCGWAkBpi48R18wxtkN8NV2xJcnCVi1gvrCaBb3NZHyMJKWJOQj7MCUao5k3jsGKV3TOCKho5P1qorAsdSr8BFGD7fuOBDXEYl9zZFCFOVPZ/Pu6o1ovlJ5LZQkWUQnEmVQG/zlGQpD9NolGRNRNIUitkJW8Rjr0nfIIRXlg5XxkU4ZBsViBSE2U0fvawdY6BBmMOuvEBgmEmFKmkuJ1p0kx4jNEAqqk4XoMURmckhsxKHHcDSliYpLaT1uxO1GanDUxQvAU1vxBCVWHX0KyKRqljAzIQsZYVcKoSh5AlN5PFDClXqtDsgKwZoQQZitBpDwOSjdhAVKAv5iiAJKmgqSlB48if0apArrLST8I8Y4r0b/9+LUAun2yyCu+J/tJpbpNKaw3sS5I5uFKBGpTrsqkCoqkRpp/WRopB0pok9YIu6zR4JyitQbrxLejGvgVK3xZuKmsHAHkTInbVEYAv1Tekq+gQDnhERinwGqzpZ9GdGfF1HIYIQf6zcCw3mGdxefEatiJx0YQ4+kUMikkcomA1kokHCpHkh8YC+ItiHDGKPFOSCiMszKp7NcoH9BpR6PnhDygfMJlg1OGpIQ66oxAMV4fINh33n5AwrLaDqyGkbZrSEYRxontNGLThM2RZdewXMw4PTtFO4uZNSRrWU8BtW5JJw3n4xkLPzJeX/Pi+RVXNytJ3SyFKVrTuIb56SldNyOGwM3qhpRCSYMUBqRW4mPWdR0XpyfM5x05Z/ppYD3sCFmSDHPFgTLkYqQ9hkAkoYsR6zb1OK2xrWXWWU7ajtRN3PQrbrYrGUY4x0RmN45lEl/DJHIBGGvDI1OMBHsJg6lod6Vj17tpf3PCASpXVHcioATkHF3oWQlLpNBvc1kkq4eBgHJGFsuUZcOwDtd2pJTxKXNxegpZs93umKYBHzzG2X3gQmXwSPBeaTyVXPdaC4vrVQNvc0Qr9sXv55fd15VNcquTLRuzJOoIQ5YkgJMqjZBC71lk1VD1eB1JqRzb4+8fnfxbaTdKmLb1ElfaoHWNO6d4z2Uy4omhrEO7Bm1btJWpnK4TxXw0EUmySujSmOejf159HOReab/W1avCTyMxeMbe7AGbnOXaTT4CbXnfCBOlMCZjyBJ/XppDlCYaWX/inlUp9HGjFa1VtFqaNKcVMY3EsCuTGCPMmShNoCrnfTaz3Lk4J2xX9H6gsYl5B42dQCesliKkbSYaO+L0SI6J1dUzrm5uuH65QocW1VjapuX85I4cHZ3phy29H5ly4O7FOcuLO2zHyM1qy2I24/LZDeGn76E+Gvj+b/8Gb721wA+Zxs0JKK53a6ZxBJf5xSfv82RzzYubNbv1wJPLD5kt73B273VsB93yhDv37nN2cc58eYqxltnylLv3X2Ox/ISnX33J9uolOXhsTmQvk+aYglwDpsHpAz39cGxvn7Nb1gxHD2tvb5G/TK5w/LP9faZKtVgeAUOaMlOY2G287INH90SMUfbBci9knZlyIGaRzXC8bpQ1TBlDzDB5KQ66rqWxhmG75eWLl+x2Iz5ASofPlJIAwIq0Lw7qMdG6cgclbS1HAbu1MXRtJ+bYShrd7TgQUxBJSVSl8K4m+EcHJdeip/hTlslrZetVZpZMa5XYZhQJhCpJbr8MoDPWiDzGHmTyt8GqKgMtoKCSkk5zAMD256187f9ulSi98nuvPg6ShbJW1vdfPr/481DWRXnCrKpUP0vyspYi04dJ1u8yEVZKWF3Eg8S0XnPKHIA8yrGtQVta1/AG0FnOSgxmP5Ssxx5V/TIrWnlbiiOzVGFOZGIBcsXnOZfX21tJFEsBpfWepUzOIm+MbanIMsaIp2/bWFpnmM06NrueYRwZ+h0np6fcPT1jmAI31yv6fkf0muiDgGh1n5ODv7eRWMznaK1oZjOcc/vPud+TVGnoyrSbIoE+hl0rM1YVOaQU4kCtRpUAt8fnvsp3BNS0KCWNjnEaO07C2EDdeo7aeB3WkHJ9WEm8kxT26dZaosqASylpzrwPwi5AF9aPGKknP0l6aYzoSRNCIoyR1nXMZuL1N/qJYRz2IUNWK7RydPOOB3fOOTs7hRSIPrLuB663I/12Q/Aj3o/M5jMglyRZy+QzftoKuzDFvfR4mgbSNKLbGW3bCWstZ1kvsmY5X/DWW29xcXHB1dUVz18+p+8HlFa0Tcty3pEwrNY72WennugnjDLQdBJwYIT9tBt39NNEVIKvD9OISgMxZ+YnczCWSKlzojDl/DgxDQOzpsU2muVyRus0U78jDL3Im4pdjG0MndEQE61zdK4hTRMvnz9D2YbdNOG6htQ2PPj6m/zmD3/Agzt36bGsvvZ1rp4/F4+xfkdjNPfu3Ye2wYfIzdUNhCqNF2b93hPSOrAtIRvOFwu6zrF6+YSr518Rh5Hl2Wv87u/9S/7lP/9j8tMv+Z/+5/+Nj376BU9XLwnLBe987+u8/uYb/PhHP+LHf/kXvLi6wmfFb3U/5PWHb/P2W29ydnLK08df8OzJFzx/8oh+teHZ48dsNzc8ubrmcucZ42HtiT4QJ0/XtCznc4LJdK4RaaYPZG1x8wXZWHQM3LlzQTN3tJ0mBEfjMuv1jEzxVHYNShkmHxjGSdYYaxjHnu1XX/LFp48Zdj2d0Zx0lmWjIWeiArTGKs3owU8JpSzdfInRnhh2cs0lCSTDCKAn85eyNydRjsj+4khkYtJlDy4bQAlFSEmTQmDYbtEp0C6XdE3D+vka7z3WSmCJU6qoRkSqOg4jxh5ILbImmfJzcK4hhEhmImdp9jWyPklgiWfoB+I00e82NMoUpU2mH0aSl8CmGBPKQEoWlRwpZoJPTP1AmHpZM2IkJRm0SH9gmPyI0kr8c1Nkvd0wRvG3nS+WZbhcavosnBuFsJzEnUF6b7GXEcCjbsV7ixyhLkl9UGqjnKV2D8W/q8SuyYAbMMaJvZRzpS4qtZqi9Pe69BGyp4eYEC9pBZXdZBRGOYJNJQRB73f72vd4P8nQxmhUKPV3zBgs1hq8TrLsq1zWRU8MvngWH3wjM9KXIFun9GaqAEg6l/v6UH+GMtxrGwk0Uukgncz5QPSQ9b9a8FAsCsBkI+qm2qfBvi9LOZbLtwQ41L2sgINCQayMM/k7gYxOAXKWEI+YS+ZARqe8V0eWD0dNwcuIwkgfk1lK/yeBSVLHgcLajG0DrnFo68hak5HwHJQp7FVbHAkMEY3NVoZW2WFMCSxUBiG4HYKilKos/hqchbAT0aQo6qt6vVHKiKQOg2m5fmv/flQp1RoyFyVeVuUwlro96fIean8qlmYVkC2OFkWJlosyq9aCHIZ/v+Lx6zHo4uFk/i1NLwUJL0XqvuGRMyk3A+p2waHkAjSqnmSRJtRkTSnmhRqqtaO1hsZZGqtwVjzhjNFwPPmG4t0hrCZFJhm7/51sirdEmVzmgp5rXRoHKzfTkBR+CDBE1G6S4jgGLJDGSBgmlJ3wOaGdJVUWXkkUtUbRNg2mAU9PP22JvZeUvzRhUEU+qyAkssk0Tcvy5IRF2zENI1Yp2rbFTwrj5ixmFucS824kkehaR9daGqPIcWAon/8737yLT3CzaVjvJjZRjo6NEeM9OnhM9MxUojXgGkO/DWxfenZkNmQ2KeCNoms1u5sNTBNGQ2sNui3n0jgUlmmamJ2dsFzM8dNQjG89KUSUEvZJLn5hWUmj17adgFbO4MlMOTJFkS0mJZLkpCFouTqNsix9IsaJIU9cj2AHg7KKmXMk1/EyX3O1XaOjQlvLkMScWOfSQJcGVe0XLVU8DaLcQGWzVoXVQK66+9u0Y1kHVVnodcXEqP8+sC3kezHVJqFuUgfNudzQQtcFAeRUjNimw7YNOYsXmUxY1/jgcU4zn7VYa1DVIyBHyHJdC11X3p/R0pTFCiipg0dTvXdriuqrKX237u98AB7qtCfW5KEQ5HnVgZG39yV6BeyozdxeBqcPU5icdVkkj46jOrwHYTwKGyIbTYha/BuzSOSUlgZJ2xbbzehmC5p2hi0JXer4efbrE4fP9P/zOLCEqyT+cIyU0vKZfGF0GJnUwGHNBAFU9ilA9XpRqmyseb/R1xCeSrNXShiJjbM0ztA0hq5VTEOCFCB6cpLEM1n8a9ModiHrmzVLozldziF7VjdPSd7RtJqcPG3XolRPCpowGnTqGFY33Dx7zno1CrCVG5R1dLMWbQzej4QEUwicnl3wxptvcvfigvXNDderFzx//oKnl89wreH0/gJlF3z5qOfmas37H3/OVy+e0zYtrjFM08ju2Vesg2dKCdvOMWPEmhNad8o3vv01fuM3v8fbX3+bfhh5/OQpm+0WbZY0jcVqaI3iyxQZd2uRDDpN9iK3E6m9LgWfoXo11mnb8fX5qwC6XwbC/arfPb5mElmKxvL4B//d9/+OK+3v79HzmPtY/tl/8/t/62f//L//J39PrzLjXS7+zt/6r/7H//Lv6fVuP77x37729/Zct86pFhsM2Tnrmno8kOTWef9VNVF5ZgEF1QE0EzDywCPWSPEGBehLeS8fUqh9CFJdh7UuoJ3iFjCZY8UXj9aZJGz0Y9AtywfYF9sVyFJGY3zYm50rwGawOe8Z0TmlvZ+vQu2T7FRp9rTWNDmTXNqv8VYrbHmf1qq9d5dSinGauFlvWK03DJP4x1lruXdyRtt2rK5vGPot4zASvS/LcBbrlCheddZalqcntIs5tpFAq1DsDAQMriDwAWTYe8sWbHJ/HK0pyXPSXL+6H96aVRWGhrWWtmlQhVlnjEZbR9u0xdNN7a8kiqS2ngKo6XN1f1Wyl2e1b5CUFsuVcZyYJs9ioQpTd9pfi7acB61FWhQKwzAEacTniwXz+YIMjH7ag3O6NAvTNIHWjNNE3/ek6PGTZ9OP7HrPWPa3ru/pig9kCBPDMOAnYd3rMsvTqL3fUFTCaI0Ia1mC0jSnp6csl0tCCFxeXvL06VOur68L2LrAaWE9kTPZj0V1IjWZsWAw6GzJRtEtMk2T2Q2ZMUz4cYeOI1bLPZQ2PckYuuWcpDWr9QaThYl+ujzl7OSEtnOcnp9gTWZ9dc325oowjASl6ZoOEzPLCYIf2K12BDvhXEsuA43V2KO6GXffeoNv/fb3Mcbw+V+/z5t37vPwzYe894ufM45baFrmJwvmyxNurq+5vrlh3PbFW1AkgDpnWudwXQN2QdJLFu0cPVimeEMaAsNwzb279/knf/Sf83t/+F+gVo7/8O8f8eO//Jjtbou+Y/nhP/ouP/z97/PBF5/wf/y7P+Px8y85PT8lDCOfffEIbU9o3TWffvpzfvaTv+Srz56zu16zW68xBIzy7FLE2zlRSx1iiqzPWYtqRHQka28AACAASURBVB5prWO+XNC5hhwTzlrm3QwFhBQ5PT8T5qmNpDRxZzhnt9sWVrtluxOlRUyZEBI5K0YfeHr5gvXVhn7V0yjFYt5w0hocgRB9sV9IhGlgHGVoZK2h7Za0TSb4hm2/pR8nCdZTcs86Z49qz8MYvi7OAmxojHYoa5iZYj0TJvw4CpM4xv+PvTfttSTLzvOePUXEme69OdysyqyqrK7qYlcXu5tik5BMUhI9gBpoE5Rh2YC/2DD8I/wj/B8MeABsA/4gELYIy7JBkRQlWmx2UyR7qB6ra+jKysybdzpDROzJH9becc69VU31N8OAo5GV2Xc450TEjr3Wetf7vktsgIaR7XaL956mSTRNK40IrUtOVqR5UZobsgdaqvwz5zx5hh3Wx1OzyQggr7OAEcEHZvOGpmkwxrDdbBlyJmJQRoY06OKl6r2n73t22y2pKE0E6ApCWIgRFQM5RxmKoDRBe3KS/SN6z243MLtzRNN2ZShfUZykVBpfIqk1RpV9VJ65OhxAa8mDxEIhltpLTi1lLR6AFeRTEv9CTticxFPWCZs7kqs1WWGDFcnwwVEljLWEq3WacAz01KjPhSwRy7A67RPa5cJQd8WuKApgY6RZo43ssVpDLmw6afrlkueL4igXPagw68RrX+6rESSxfLgJJ0EGcOTSnCwlovxMCTipgF+yZoBcxvTlfSmyz1321arEOSs1UlQTMarG+/q7N8hXJa6Fg8EHMUZsMhRh4mQJsR8QKkeMe0CrNpLljzQuazzWZQ+ZiCOGKS4bY8pQsCkaCtBXcppDj71aXznnbjTda30bYxSsJyqqV29EgEAKyCuWIOLFLIz4DJh9jlSA4328P9gnsuBHk9e4Fh/YNmqsHTE6YkwWhVm5X6lYTEl+Jed1q7z41PEzAXQhhOlmpgIy1Jsqty1NC6UeGTXpnCtjTgyRJSmoxa5I6PKU9FXsWBGwhYHmnKMpwxqMlbWOzhPltnaw978LdUpbRhd8pjywsoz2neNysVBqkrKFVCa6eBkRbGkk6VCmdFIKQ1pJyy4XIMhqzbydcbI8Yr5qCabnenfJ+vyS/mqDBbpmJps0mt0wkIyi7RbcuXPMrG3Zrrc4bTg9vcvxyUJkD9YxhEDfb0k5sugs886ymjc4E/ljngJw9yjS+0jbGe7lI4KZY01Ha4TLY4InDTuSH8lRAt32asPm6pKNH+lVkQIp8Bn0ZkeTFctZh9OK3RCE/ZOSDAVo3SQ/ns9bFosZKQW0kS6oUpZxGAm7nnEM9INnHqWj22jFQoFNARN9GZqRRI46eoaQZJJh1syybGJX2jNkz+XmijyMPDg6YdW2LBcL7JXD957RD+I/17YYZQSwSpVOXAoFtWeLaF3ox3tEaJ/UH0xflW/tuwS3i7Z6TGCWEmYTCFJfO2aZ/Wtmn3CukfH1MZCTwmrxm9LGcXF2ya7fEbzHWEXbNcy6FqUhpsA4jOTi/2iqVIbCWtTSaaufyRhJDsQnIE4yoEMJ1/6zlwIi10JC/j1dlzrNjMPiUx3sCRwkQNIVi/H2hKKbx/69S7KiKRGoBKv6WcrPpYSA3MoWKZzFNh1dN6ebLWi7ubCf1M17eDhF99981KB4EA3rxSjXXH5GzEw5ZHgc+GxUCj9ao3OeAGIB8zTVE1MkXaUrlKIAwUlkYc4ZmkbTtYrNEFEpEr1MhMs5TTYHVUads2Ozi9A1NKYlx8guDHidOG5kkh2NY0iZ59cbLoenNLMVl2vP5Tqx3kUaPWCMp2k9Olgao3FtxyxFxjAyny+4vFrz/PkZvu+LFx9stgN6VKTG8adff5eL82s2my3PPnnO2fMzHr78MvPVHOcaNrsd49WGo6NTHjw85vie5eWHb/K5z7/N219+m7feeYt7pyd88MEnbLZbtts1ikTbGB6c3iP6nt36gidbYdwYMk7Lta6BVK6tLJ26DlVJxOWa5en/314X6QBopcaoA8DjNsOqsjBVBpMTL751yd2fP/4Z1tr/f/y/cYQPBQSRHK3kKBOQvm/QHO799bgdC24fpjRNZL3s/UdlOFLx4EsFzCqJZSper/t1tx9coArIF5Mk0Sabaf+u29SNz5eTMB7yATd42tzlqAk7er+WK1xolZqYoIfnWPO5CgzJXpehMCxlAI4M9ui6hsZarDZUuQ7IPmyM5eTkDt1swbOzMy4vL4kpc+/+fVzTsVguEDmoxo922odTiPhhFGuFEs9dzhgrPobZj5gge39tJt1gIKqaZ+bSPi6sxbwfWJTr/l06wAcw23TlpqnvBWzLhUGBglz8ZCegtzBMlNpPgZM1sb/mUz5bwL/aSOhmM4ZhZLPZsFod07RdATlLgcW+SDtUsWilabqG5WJB280IMWD7Mi1dJZx1kCN9PzCkiNaZ9fU13gvDbgyZbDoGL8PWRi+fIZXGYCqFXOOcTMAMkRATVmvarqV1lr6s1aw0J3fu8OD0FKUUz58/5+nTp8QY2W23DMOIMYbGOobeCmsyRnw/kPoRmzXWtTQ2F7mvIWWP95dkPTKEnpRjYSs1IstOiWgcIWWO3ZyjZYtDJtW3zuGMYnlywmLecbyYi2f0bMSmxNgNqNCjlbBX7t5Z0hZ/tRAjY0ys+55sNPOjFXa54PNvvMFbj17jW3/5Hb77ze/y17/6y7zy8GXu3D3h8uwZnetYHB2x3e24enFOf73BaqkhIjINs9WaWdth2oZRGXxKzIxDJcVuuyGTuPPoZb781b/F3/z1v8due8k/+Z3/jRcffoh215j5hpdeeZ23X/k877/7Pv/37/8hLy5f8IUvf5mjkyXbzYaz52uMtlxcXPKNf/3HvPeDH2Dzipw1btYxn1n63Zrc9/gcSQmGMNJYy/3793n10SOOliusMnRtS2MsKmWC95AzUZfnVGXW2w0hjIQ8kNJIiF6GmUUF2TJ6hQ8byBYfxfsr9J5h2LK5XtNqS6cUbcqoYcAnUZJk1aAMRDQ5WYwu7BQNGE1jGrLKhCT7RUgyBEQ1roAXWphW2kjalhMxi+zNOIsxjQxHUAodI6nYYkQvA7PW6y1xHMTX0ntqY4TS1NEqF9/RMtk1yPM17fNlT6pAyI296WB/dkYAiRy9gJ+zOba1DEF864JSmLajWzhpkpjCGEpJBodlGZ7gamM+2eIFL+9rjJuG6xhjsEbsqdZX11xeX3OUxTPy5OQOzrWyL02DnzRC5tZUaweULkyk2nCKssNWroQ4asqeagy6kA1iln1aG2nGp6Iw0ZOyp27CskamRruRQQ5alfq+kApqrZKiDF5hYs/JpNJx9GQ14lPGtBnjTGHFlYZXhjhGaGRAm62kApR4pJVwuG/aFXBUWdHiZRmEp02Z0l6e86rUSVkRiZjiUypkgyrzVZA1SieSz1T/aglZcgVTvrnvq3L+qqxto428bvQ34nad2grqp+YtHLzujf9fm4EHTUldAcZ8i+SRxbctlvo0a7GPyr7kN7ca5UJwKKqBmoHUa8ueSV7jc411lZkKTOz9G3EwRvEgD/JpDIakEjlkQvUh1xmVNElFUqrMtpLn5HQDB5DBpmka0AF7oUwddKgPhmzVZmmeMoFD9nwlafz042cC6Pq+cLTy3nuuUjuhFjcHJ6EqS2eCUffIYS3EUYQgi6c6f9XtTW6Qp7FgnaexLdYljBV0LhX6qJgsFpCvSGz05DFTOxUF4cz1YqgpoRTaqCqdDnl4dQEGMgqMYZLgpIz3gZQ02mmUExPfpmtoug5nLU5bFs2Mo8WCbuEYzUB7bSAE4jBgEyyXc+lmKsVmty0G34qUPeMIMXnmrWOxbDm606GtyC6aoOi6FpUT89YwbxQLB1bvH7I4vCD6gFIWa2Y4ZTAonDa0ztAsGsia3SbTbwNOOY7NksWiRSmDM1YkE0nQ/o3fkbViGDznFxdcXFyz2w30g8cH2YxzkDHQd06OkAllkc12SwheqKzF1yanxBgCvfcY14CVCWEpaXLSpEYS5RQzsR+xIbK5ukaXh1A1jtYoxhzYjQNxO3CvnTOfzXhwfMIuDJxfXXF9vcbEzKxtiKHgJQX1lppaUHFF8UVQhSqd8qQLl45GAmVuGJrWB67+zCG75rCAmzZMZDotuXj/5Nq5UCVwC2AgnXeLcR2Na0kpMfRbNutrUIm2bZjPW7quwVhNjJ4cPTH6IpExKFtMS3OW50+p4gnIBM6JvCSXrl6ZOJUPwbFbD34NjBVQLBRqaQfkAjKVrkXes8b2xQIlSCRiMdiuwSHGNAGE07Ur10Q6ZAVjz9KFA/l6TPWPTFxFS/cQ7TC2wbkZrplhrUgn/qrt73DP+qxjKsAOA498B0iF2VKidS4GwKGyhLn58/Xc67WUZVCuh/gLjX7Ej34yf1UGNJnWWZwFXSYzJ9+Txh4t3G1JlgClElpB2xgW8znN6phdgK0fcWYBOLa7gZ2Cu26GwzKGgFKaeN2zOl7Qs2Abd+x8IOrILEUiGR8DJhnaWctCLxhDz2wxxyglibmSdRhjFl/Ko2OWx0c8Pzvno48+IWfDZoCgOkY9Q6eWwSuC0pAcKzvjwd1TXn31Lb7y5V/i8Ruf5+5Ld2lnlqSkKzubtczLHhhiolvNUA9PGbeXbK/PebK+lGtnDSpGUKY0lNL0rB4CyDcGqsCUWB4eKYZPrZnDP5+1eipDU2vNt/6bH0yTKW8Y1FLq+vqfXEGWIiGXB3NK2JTKoiwwhZGkNM5J4hdzXV+aWGQywzAwrtcM2x3ej/zN/+pXeeWXHv7Utf7/pWP7o5Gzf7ye7umU4N0qcOpE43rdZUqjmXKNw1wmKyUs6mrijyTdN576Kb+5mbgeJomHhwIp0moTsvy8MjK1tTaDRJYqv5FLcp0OGhz7ZK82N1IpiETWTt4Dbaqspylhr4n4ZzSSDr8u9jtpvy8BY5YiSQCmAwCv/E7QBlNY2Ifyktrt9n5k9E4mXBa/F1WBwJxBaYwVWedysWTwQQCiEDk+OcFWSbMSa4gYw75IKV1vjEjSUtx7u1ZGnymsMgFca9558N8sbAySTGPM1WO1Pqsl1om6R+6jyMvLO+VEip7gQyky5d5EhJUm8VBN5yAS5D2DTmezl+Dm4ktU8tAqxzLaMJ/N2G13wojZ7ZjPF7RtS516PjEgiuRnakKhaRpH13U0bYONBt/N2NhN8WNjKthMkYunkk1rY6WRaVuUNvgYJIfxpalXYpyAzCJ9SymTo/jAhpRRIYmFibXMuo7XXn/Mo0eP+PF77/H8+XOGYWDezVgtV7RuoO97xmGQQWFay4CTMhBEqxabFQZh/CilCWHH87MPwFiGvqGxLVppoo84NcctW5b3j/jCz73FV95+B0LkO9/5Nj/+6EPOry84v77kxfqKZdOw1Ia02zL2G7IWJo+PnsViydHpPV5683VeefAyd7slOSXe++gj3v3+9zi7uKRrO+4/eJk3H77KYoTNsxdcbK/54OwJDx494OWHD/n4hz+SIlVrzs7O8NtBDOqzyOrQ0HSWpRb/r52CXeyJJLZjy2J+grId3bLjpVffwa0e8yff+Cbf/84/49vf+COOXMPi2PLK6R1ef/Mx48cjv/d7/5wr/5Rf+htf5dd+9W8zbxu+/vU/5sMP/yUXF094/No7nN57xA/efZ/Neo3R0HWQbAPNnNbOGIYtKSdmi46XTh/w+uPHnN69BynTb7fs+i2Xfc84jCL/8yIpjQd5Yoy+gDeRED2j98SkMaZhsbxDCBmUxcfAbrfBp5EcPWkMJD8SSYxDJJsA2UvRrwJJywC6bKWhrXMmpZEYFLbRzOcLyIrdrqcfvORUGWHflvyypvAZJb6NTYt2VnL/DL6wUWWglCKFQIiJcfQEL4qonKtCpPheFp+06jMpgFlEKWlU33xm93nwoe1G3czqlE1Rie6N6kOIMoSv66aBBSklUmEsaSP5gVEzMrEAFYkUFU7JPrWPWQpIN9hJ0QfGHLi6uKCbzfDe41xb9jAKQlVzqxK7iuqjhsecMzEXUKjIX2OxYqk+zVmJRDJGAXOMKUwqrYoPbNnLjJ5iWq65dk7YJPFTgCMtfp9FTiv5ucRna0osyGKNMwwjYxhJuxFMxDZ6kq+rpBiHSIgDqlEYA05DmnWyb2uZWKumrb3Ub0aRVUSbCNoQlQCySkucqr2xyvTTiL+pgKipxOA8xQCK539p81F0RiVYC+hTSVM3lUtGYkniRs5ZcRphbN+ibuW9mskYg5DmBPCdmlYHsf/TBJVbuZEW9n+KxY6oxqRuT+IQsPogvy55DLVGTVLvoMrvl/qyPie1ZqyfY8/w3zPllTGopGWYlgGrLFlnkpf9PWdFVBF8ZsyeHDIo8Zg0xqCCn5p1Dhlmpq0lKZmiWz1p99e5sN/D3j5EKXlcKjFWKVBlEka9Fj/t+JkAunEYy7/qTZUES5XgXv83tRez/GzSCsoEtaltiJoWttBm5fWmSVrlBDSZeedkdLMzJdnWZIxMvpreDEHaS7IlCHeeElg/ofAKUqWBZkHBKwobU3lv2ehkkoci6UhIScAbxBfVUrpGbcPyaMlsMWN5tGTetRhkOpvNCozQh2WBU2jFclOapkEXM+bN2DP0I32/I9uIUlnAvsayPJqRlAQTHQyNbSBFWg0mR+LoSWmcLoPfefmcKZDSllXXopIn5cjWKobWop1mCD27uKNrW2gUVjkapWm1pVGORTPDdi1bndj5nhfnF+zWhnljaa0lzCVAbHcD15stV7s1xjmSH0kxMPRbEooj20oC3klgG0Pker1h9AFlFbqxeIR9lLWWwtNAsloMe3PEoxgNNErRKINKGa8CPnp240Cz61ksOh7eOyVoxS56TO+xKPYCaDWBIbV7JlMY1SR3kYdr3z0hZ7hVsN+Wth12rQ9/RgqV6iNRgOFcCQBljWnZdFPMkpzZjqZIA9bXWzbrNUpD17bM53PazqE1hOgJQQY6GM0krdSq+kBCZQ7Vp2Si0NdN7BaLrBarHG7y5WvpYCNOcf/7h/T8WsV+qusCEzABZUPWZiokRu8nJuNNdkMB6QtDTamaACW8F3BGQrAYyWvbopsO18xo2hnainlzHeoB++C0DyS6/Pun/TnYPD8F0EkRH1OcPruESzV93tvSyPoaOWcB01LEUvyFsvg++HHEh5FU9kWdE0ZB2ziMgYRI7tO4I407jJaCMZDEx1KDNZbVzHHveIVrG9pugbWGfrfl4vyM3bpn2Oy4vhRJSNM47t07ZT5fcPfoPkatuXh+SWysyNOcsIgzklwPvZga79ZbLs7OOF4taJtWPMq0FrlUyrRNQ86KF5fXXG52aNUyREfQS87XigUNbduyWC1Yzud87vNv8847P887X/wSr736Kq5piHr/DC9Xcx6+dB8/bnn+3LPdyuCe1WLOw5df4uLFc9ZXF2yu11Lw5L0Uo4LpujzbdZ2mA1Zn3R8+xaD7DIC+rtGJLTcV4fVWl0LflHVR5HjFkEysHbSakqsaH1VZqMoUC9wyqUopRD6tEYsHY8QLLGdC8PjgSchENG0MvkhUtBaWU0yGP/iv/wUoxWK55O69ezSz9mClC1MwJmFAdk1D185JKLyXDnQmMY4jIXhU6SbnFFhfX7FZbwqYIcxzozT/0X/32wD8o//8d4vkTd/YP2uns0obrHM0jayJtmmwzskzqvSnwJ/bg25uvO4hSFekIsaY/XNaksApwYQDX1DZMfNBw+KQZbl/lD/NpvvU8anEVV6ryqu0ViU3OAT7QGELoFSZdjL0oErf5fMxMQQqIzmVE6uKhJxz8UUrbLBUP4vEgZtMZyaWnVwn+YwpxTLN7sapTAs95Sw+pEh+Iwxu+SFjDDFJt9wZMzG8jTU4K/eu7cSfLOSEMoajoyPOXpzz4sUZ1+s1i/lCXidEfAiMwzB13es11kliTAhBho+Ubxlj6WZz4pGnm80w1kyfWSqXvI9xhVGe002LgTrRN+c962N/r+o+gBRMyOCzmCns57J2BDmVa6oMSllqY4AJcD1oeh/cm5xFZtXNOubzOeN4yXa75ejIY8skdufcjRzm5h4m10O87aTgmBWfvt1uB2QZltO2zLqW1fFSAJHocNaRsSjXMfrIdrdlHIXl5hoHCvw4MvT9xMhXmTItUeFLAy4ouHd8jzfffJP79+/z9Okn/OQnP5nkriF4um5G2zTEMtijTsNWKosHlhLWfgrgq5m7S0BgHK5IyhDGGdmPxNHTMOfNN97kna98mZ//5S/yyuNXmTUd3//ed+l+8hGn4SXuP3jAdnPN0ycfkceB7dATvawvU1KPBosNivXZFd/tv8v5+SV/7Utf4Y033mB+ep/5yTE/eu8DLi6ueOvRYx4c3eH73/s+H330IeTEi4sXrHcbHr3yiLPXP8fF5hqfFeNuKKCjyK9yzBhnmTUdM90Qc6YfezZjEMP8NMOGezx+/Cpf+eUvkd2Cr33tXX74/T/l6sU3cPSs+zmL40e89Qtfxc4e8LU//SEfX13wq7/+Vf6D3/4tlvM7fO/dd/nmX36bJ08+Ynd1xVtvPORzr36B7x29x0fXH9KUmkMpxbhNZK2YzxfYxvDg/gMev/YqR8sjtus152cvWF9fcXl+Wbx4U3mupP7IWfZ4qzTOWZrOoTR4H+n7kRAAHdnsIjlrbNOitAz2UtrQtg1WO2y/pSPSGkNjLca0xbrFEbRjiA7aOck0DMEzjD0hjSgvUtxu1kkTPMqk0RQTQz8Is8lI/pWNwdoG17W4piUrVdh8UaT/tsGQ8SnhQ5IBPLoM1itTiWsdIPuTAPOm+HBJrnjo8cy0bw/DMO3DN9hEWuOUwjYtKUf6JP5xox/FOytlAZ2sxRqDQoazhRwwGMnt2pZkIykHwjDi4yB+YUoXeynJAJqmETBPG4L3hFEk8EpLoyHECuYznY+utVoUXaeacm1RfkyZdI0rJfcq0FnZAzM+BHyMRe0jnp7VRiFnARxVkYfWaeYTS+4AYKyZYq5Df3JC5XKeRgBWzZ5FRxbv+DEOhDyibGLWtqRujsmGMESGfgc2YGxG5cCsbclHBwMQzIHiokxGr1WXKsPtBDwsDvlKYmDSkIus1zmRoeqUCDqjCplBFEoHDO2pVtNlAFUi1L/LJF3x996vxQr87ptxlNxgj8EcNiOl3aILYFgHIRRwbo8Z3zzyFOKmurekWZBl6uph3KxrveZ0nz5u19z7f9e4WHOA2wSZw/h3KBuv609pg1GQ0ftpt/LkiNd9hJQjdZqwswZjTckLFDZlmiTrV1ZbJBvBc6y1GC0DNPfN0f256OJ5WxIGqrLnM/q6N46fbUhErAlp7cyJt5w5kARVJkh5e6HrV68urad7VF8n54xVdfxwmgA/YzROy8KYtzNJrp0DbUnKErN0NnKuxTyoHFFENAkZfy0bgHi9yMMqzUwlY28nkFe8AoRCyuRXlIse20c5h9Y55m1D6yxN61gs53SrGe2sxbYa23hSDqQY8D6iYiYqTa8yIYNS4qcXkidlMcAULzZN1IqcNMoa5u0MrRTONYze40mENBIjmCyBQqdE8p4hBJG8JDfdJ7+zRO0E5U2Zxo/YnBhzZFAJ32hSo+mTZzfs+PjZEzbXa+nmace95RH3V3fIR8fMVORse8Wm33L+4oLt9TWNsXRHS1Q29MPIvGshJ84vLxh3IynBrGsIY8fWe5QG4xzOWcZdz7jb4X2PaxpMY2jmHYFMUgltxbNE5YwfR/pRRporrRmMrC3nxWNQaUtqFdvgideX3LWG+6sVazzbMJD0ljwmrDb7ISJZhjRo1ORLpurYn/qn0FoNinC7w8CeJXBI5T1kYdT1nQtAbLSBpIh7ap7kzLoI+rNsErZpcK4lRkledrsdKSVOVkvaVjqqWkHwI94PBdgWrxJ5z2KYGWtyr4ufwAHYFiOhdu1ilLM77D6UxBiQjk8F8/IerEpRiplD34JDEK+ev9rv/jc2TmvLlL1yDiEJddsWcHbPSlKS7GVhXNQNzYfIWDqYMSsxk7eOpp3h5ku6+ZKmW2B0U/wgRIojH6UypiZIovz9UwC6mgDcAOfke2WP3RdaWbx3Jno6cEhdzrkOxpCN2xSvOuukaIoxMpIISYDXyt6Qgl3hGisTeFVEq4DOAUvC1pE4Rjw7q2F+5wzLRjHvMouFMCivRhiyAABJGtFsxx15lmmPHSftnDttS1hfsNA9yzsdMSusVeQUIIlMYzPuGHY7hu1GAONhhJA4Plpy//49dtsNF2cv2G43tF0BSbVhNyZm83ssT1aMXjFbnfLolVd4/PhVTu/f4Zd/6cu8+eZjVvMOrSLgydmBUlgy90+OsOoxXWuYtZqnz56yvrpGaVitOu7fO+H50ZLtes04emHf1GKvNF3qM5izFHuHw1Gmbtwt4CUf+MjJzyAYB/tC+gaj7mA/qMlVrjSnKqGsw1MUB0MVKsBb11lJJgvoIVOOpdtMSsSSEKcU979fkv4YPCl4YQgpidPxIMkSicoe6KjXwBY2rLGWnJOYzIdA9bZKMRBLQdLN52gMo2sIrUyQq0CB0Xt/ktXx8ZQs1cLjMEGbALoCINQ/knzd/Pl6rQ+Tr8/ad+q/Y4pkpJAxlUF56JNb7nfd7/bAa03+axJ1O2ncv/ft/X/6enFllsTVTJL2Q7BRrrWAdDcTzvr5pNCxZdgPMHWyE1XFcDDo5kZcAq0FoKv+Q3VPy2U64HSt4ACcEmWBUQpjHSoZWS/FZFnu797HLZe9skCKqApoKwHJxFaBfZwISYb7pMRuN4hJvFbYxpFVfd3M9fUVfd8zny9onDT6TMqkcZwA1ZzErFxA1v2zqo3BuobV0RFtK5I2W2JlBe2BIgUqTIhpOI/s1fXrFairjeYqVT585lPKWCvnq4r1gqxpM12LurfsWY7yjep5JevcorQR8XMBXVVpHHddhzFrNpsN1+trZvPl/v1LMXZbygsCiBpnJmaMyKmFUV/BcK81s67FuYYhBLQ1LFZLjOtQFczCQgAAIABJREFUdsY4BqxzDMNQinnLbrdl7IdSMAuIr7QMMJE1Ks3y5WLGy49e4u7dEz755Anvfuc7+HFkNmvpdzuGsS+gvsLq0kBJEWVF8hSjkiolFGaez4TkMRmSDthW2JKbYQAPpyen/Pznf5G/9W/9XX7hF7/C/deO+NZ7P+Jfff0b/OjHP2Lod5zcucPDO/dotebH793h6bMn7MYdqEgcdtD3NCljtKXp5mQFZ5cXfPPP/oKvf/ObnL50yjtvvMXjV17j8Ruvs3pyxqPje1w+O+Mb3/xLPnzyMcY4zpXh7Nlz7r3+OR5//k2G73+f7dUFDZaoNKSAUsUPLBVZmtEMQ6D3iRA0NjsafZc3X/3r/Du/+uu89fYrfP3P/oQX3/8ew5MP6XLAujnKvsz9l78Ki8/xnY8/5kfbJ/zir32J3/wH/z5jGPnd3/1f+fZffJs///qfc/H8Y4bjjvXlCx7c+TyPH77J+vIFo99AnmNth2sUw9hjrebB/fu8+ughi7bl8uw5nzx5wtX5JeMwEHzAOoPTinEUIH1igafEvBVFw3y+ACXyfIaAMWBcgzYNi8URy6MTYXCmJB5rGuL6CnVxRodMfdZKpvNiDNk6ommJusWbloBh5z2brWazS4zDDj+OpXGoUG1L9UEewoBtHI1pUQjDyzk3KUxilrxRgIYyFTrKREyllABf2pCjZwhemm5Gl9+v/sGyfysjCg9b4iwl55D4K2CSMeI3XeNKjYe2bWi6Fj+OZB8Yhsr8CjIssHGlhihWA0VGWBvciUyoPm/GyLNZ9q4UC9BIkho7u2KUXya8ak22mmgO/aIrGeGQqJAP9jOJCNVuLSZh/MvwDWGLKyM2LzIcLxWyDZK7Wok1IYaioCmjI3KcMqOSBUzxU5etVcRbIrtPsU5j1WSVb8zu01rTNA1dNyMrg8uaMe4IaSDnOmkbgg8EH8hpxI/SZBoWuzJYb8+CpNzXGEZCHIrFU0YZ2YubThRNVcJpxERT1oZWqEouUlk+q6QiJJ1kEMHUrJPrJh/ywMMt3xoEeMuHzbrSdKzROkmDKh0MPNrfN1VL1IncsCeglL8LzrO//7UJVSKaOsiz4r6Wknt2M1+qHnT1Wk4N79rQKi/86fyI6fcPQbkJkKuvrQqzTRWLqxRFsaMFB5Klp5GpuhSAVfLkmMFkmURMsdlQRmO1eO7K9QkklWlbNw2JkeenSF1TyR1qc6/k8mSEHQ7Tvfppx88E0NWjevRU47zDF58Q1sNi/VCmUTkHpYOZ837Sisr7C22tGKJbqyUxMwaMIWLJ1WyxTNQw1hy8cVkE5fVFq50Oiq4Meo9kyvuXaquwIWJJNHLKZCXeNG3nOF7OOVmtmM86XGuZzTqaRUvInpgTo9/SBzHdNFmokNk4fNKgGxo3w7kG78U4Uivp2CSgQ5GiPMBt02GUJoXI2fNzPrl6DhacbVktVtxZnbDsZljVgholMVQZOAdgHGZE7cA0GJXY7q5odSSZshhHQYJzCqiQWXUrUh+JKpJQjDFxPfaMFxF1dc523DH4kaEfaZuGo6MjVkcnkBSb3Y71ZkfXNbz88inGOVCai+srPvjgQz74+CkBxDtLG6L3eCD4hDaRxnQy9YQkybczAs55L3RwFEeLOUmJh2D0iTZmVMwo16Fb8cnz48BiGJgdrbizPGLwnl3WbK82kPTkV0C509JhKUBalcek/TKSHzSypalqHCmHyEGYkuIb7LISgGJKRf+vxHenbDq6MKVSKBISbdEgnbu2JZPZbLZst1uMMSyXC2azFmMl+ngfGMaeGMfy7O3ZF3X4gkxqSlJQK40xjqLHKQV3nGTlSmnatiledLEkFQVDLNLXFOMezorFR658TZXND5iAgHqeIBs8hd6MkiSisl5iFIA/xjj54lUJ/H6jPwgquchkYxL/QxRZW7R2aNNi2hldt6SbL3BNh1KWkKoXW+liZerJ3d6wPvOPyqX4nK7A4b/3O5oAoyU4lr1GJIp76naMEVMCiNGqTOGV7oxWego0e5A0T4mW1grXGKwTvw9nwapEqzMmJ1SOGCsTqoyT0TomBbTvWSwtcfuMi6stu23ARs3COXAGZ1v6fiDFyLDeMMws1xaunn9C6tfcPb1HyBYfM6QRkkwpVEkaIV3rCONIv90AIrW3RnF1dcV2veakcTTK4NoFrvWElDm6e8q9e6/ivebeg0e8/fY7/MqvfJVHD+9ztHICzKkMBBQKo+0k2TQqc3qyYjX7HLNGYYk8ncx6Zzx8cEro32QYBl6cvZhuWd3jD4P3IUBzGPQ/ixF7yKC72YziU/++DdRUz7CsDtdNYfEceNvtwZUD2UmWdV4yAap9g6reNloVb0JHUybQoWSkfSysN1WAYwXoXM1wy3MdE8qaG9diMv1HTUCxPH+lKx0DMYqFQle67n4cUYj5dgWe7EFecHJy8inw7LMAukPZwmFXt4IXh9+7fZ8+C7C7cT/MzXtXk6QJMLkNwMGU1N0G3g5f+3BNHa6FCdwrCW0FdW7LcOW65pLY7YG6uh+E4iF0eL2UKlyBsi6rzyZqf233n88IhF8T2ZqLlaEPk89dFsBOYm8qTSxdJsZrKFKZRJqKHW3M1Oyp7Ih8y4u4gnL1vIw20sjImZg8w+hRUQryIK7vNI3jzp07bLZbdrueYRiwRmSazjlG5wQYCHVIkFzXQ79RuVbi3dY0DnKaGmv1/qrSqLPGYMv1DQSqH2CVtFJiYW2y7Fne++s2NZMEey8Q3/6dpqBW3lfW3n7NVFP4ynSbWI2I31MuoEXXzbi+3nBxcSk5SlkrfhwxVk/DHw7XrBhr78FtUwY41GeuruOUhd0UsxTLtnG4pgUlIG9KUZhQTYvWinEcJsBDZG5lfR4AdK7puHd6n9PTU87Oznj33Xe5urpiPpuRUsI6YepFXweL7cHinBLZaHxOJENhZ2rILT56gu/BjFhnST6ic+Lhg0f8+q/8Bn/3b/8Wb73+JT54+jH/7X//P/PjT97nxcUFxhmW8znb9ZafDCOzpsG2IuFtrGO5WDHuGtYxkUPEtB00DUPfY5TllfsPuYoDZ0+e8bXzK54+fcbpnVOW3YJdCrz7wx/yk6dPmLmGBoceRj75yUe8fO8edt7RjyPbyzWtaQhtSwyaGHtyzricIWW2KdLHDDg6a1iulrz66kv82r/7a3zurbf4s7/8Gv/09/8PfvDjv0CzpnUNKi94/OjzvPW5d1hfbLj65H1+6Uv3+Qe/9Su8dP+EP/i9P+T3f++f8OPvv48KmqPuCB1HfvDt7/DS33jMF996g/MX7/HjD9aEXmGNQ+WBnCPHy2Neeell7q6OuDw/5+MPPuT87AV+HNHArGlZFPBts9kwFsl78J5hHMuwpFiaqpl+CKSsmM0XHB2d8Pj1z7FYrmjaGePo6fuBDOy2W3bXV8LsTSKLJXl51gzgWpILROvxxpO1TIXsZi3GwtA4/Dgy9gK8VLbTNDE9M3k16yJDzBQPUCSfj2SGQdhJKias0TSuwVmL1yO+lzhSJbC6NN1QSXALJf5v5gCcSFFk2ylVIE/2rqY0r2sNbK3FOFOaD4XJmxLDMMj+rzU2C/utPtsyIVVURinHaZCLtaUhZC0mCSlFQMdAjhFjiodbOY+um0msV4jSSduDeFolrXXv+jRjtyI2UkPJfpdK7lIBl5iLJU7BFExVHZX1ojMydfsgP0EhyiO1twmY2kQF4Kk5VCX9pJQwSF6U2IMiq9UK22SUiwxhyxh24quOgQCesQxw0sQ0yDkU0LnWW3VbjzESfBL2ZhhBJ5SW8w1+hJwn4MxKJ0eYmcaQvC+Dqcp1TOJdTMkhtDEYNNYIGzWnIlVOoYCTh9Lom/nTlItM8WDfHLpNKrmdPh2CaCmV+3Dw/cqUqzlUjVk1/qRqNVbToIM8+zBu7F9P3Xxd5DlI0cvr1/yn3Pj6dyw+tFp/urmaoPiU7983kSBCtYESAofkhCFlQu0vRlCq5kgRstjJaHW4xNX+fTMH16ucX6kjFcUOrqLJBQWtg77+quNnAuim7reyN6QlezbR/uE9+C3p2tWEJKfp4lVALqZE28pUylgSPdc4ZvMZXWNxVgrakLKMj8eAacrDWuiBuXQ7snRuRG4giWHUGlMkADkF6elZSRJlCiQCkyphIuQgE0Sb1tFaTdNZ5ouO49URy9kMZ2Xkr7aWlMAn2ThTOW+rxLAyRZnIZN2MqCwoS1aOnEb6PrBe7wQ4MpoYBXzYbnvCEJh3HckHrs+29GRmqyVHd1a03QKfliQ1L4NIRsiRw8fGtScY2xAwhNCjupGUd7IQy6JXMdMkh1UWhWZxdwF3K1VWNu0hjKAyfujJSYLAbDZjtVrRtQ6VFU1rcVrTjxZlG7r5jGwsd/ojrFGElHj/4xe0raOzDSZnbIb11TUpS8K5OrmDtprZcsFsMcMPA+fnL/BtWzT9YmK/zp647dFxh4oDVgtl/nrYkXXmcrtFr9csT5Y8OrnH05DwowefpVgtPgUVWK5m0FTvAtivTVQpqE2ZPHuwsZQHswbDyeTSaCASa+C1CoswOFKIKC1ylKwNY9iRMzSuZTabEVNmGEc2uy3DMGCMYbFYMJ93GC3AskhIRNqayoj0+vWc8wTOhZLkmsIgcE0Dek93rr/vnGOxWHBycsLFxQWXl5dAnhJ22TwzsUyBO0ycq5+XLQXantFyeJ1E1ueD+EZKd2Hv2SBJkZ3MQrO15drKpm6UEkAh11HWmdF7Bh/F20Y3WNuCcWjXYFyLazuMbajsQbQmxyDvWQCzPTOtAPZwA5TbG4NXuVfp+tVu0tQLEKcelYp8sXiP2AOG5SEmE7wXHzWlwGhCyuQIcSfgVoqUzlwtxnUpPCWgN22DaS3WKazJ6DSSfS/mxcHTNA5/PWJMwjaWmVEsjeb0ZMl82XJ1teb58yu0atGmZbMe2G4H7t9f8fzsjI9+8h69v8PVZcvl9Qv6ccf1peHo7inaGin8QsTphtY5jEJYy0nT70Si8eL8BR8/+RhrDQ9O79PNFxwd3+fKO+xFoDOabrbg9KUHvPHmF3nllce89XNv88qjFbNGCkSnNUoFWXfGkHPEIKbDmUgKAcKAzZFGJxqTGGPA5sQbr7/GL/61r6C14l/9yde4PL9Ei+kAlPVfY9ltYKUenwXG1N/7q45Df7vDpKftGmkI3QLu6s8evu+n37smRepWiV+SMqULbShPXUKFPLO5yGZz2ucD1ZRflXPqamJVCgKttazZUkhJt7Qw10pCoUASSqNZzDq6rmO32WI0zOazyYPyMOmYz2dMT1I6SAi1ADY3O/EVpKoyjf21up14HrINKvB1eA+11pgscvqcJDWfmHmZyZRdFTBKHwBjB1f65oW/de9qc+EQ4KzfF9A+Tc2FmrzV/KnuhzrthwHUPbjuwygOps/l6efqJzQHYAi3wLnqiRTz/j7XKWq5MDmzqYbSWqYgGjvJ6xWKPnogF7nx/plRxdetvqdWwsjwsbJB9nmhMlqYYCXIJlWmwiakWx0zfvTCmLLCKDRW03UtOcM4eHa7HUop5vP5JOschmE/jbQw5A7PP6ZY1pQ0h+qaEKaMSJ7Fdy6iFTitZBJuTmInkOR1jBbWScpxGoikS9Ep8XDfZJL7Y4qUvhbg1X6iMAS0mhge9Zqmkncos99HVLm+U9O6Ec+5lODq+hpjHU3T0rbtfqp6KQzq68YkRWkmYbSmadoycM2RQmS72ZJLLqaNIvUykMhYw64fGELG2tJkKyB8ZSQul0tijJyfnzMMI13XCog4m5Fzpu93dF3HbDZju97wyZMn7HY7nHME74kE5t2sNMMyYtivpzxDZfAx4nNGtVbiZYTOLgi7K7T1MmUxGjabDa+++ojf+vt/n9/+jf+Uz7/6Rf78T7/DP/rf/zF/+K1/DiZiIlilyMfH3D29x1Uc+eDZx2Q/knY9R85xujzhKmY2+ZyrMNA6y9JagjZcbLasZnOOlaOd32FoNMMYePbJM9o3FzzxG56sLzBZ4bJGe1HUfPz++5ye3mO1OgGjsVl0OiMKnCEkkRnPXUtWmk2MeAxN0zFrWr785Xf4zd/6O7z1Cw/52jf+iP/xd/4Hnnz0I5Jbo3NkiA0n8yN0a1iff8xPfvJD1PrH/If/8X/Cr7z9iN/7w3/N7/+fv8dP3v8eVikas2A5W7KcWXZXO86ff8Sbb77OBx+c8vzZc4yak4Mh+EGG0bUt+MjFszOePX3K+uKSPAYcms41tK6h0YZMprVSa1XGrjSlExdXl+yGgZjFMuHu3bu89tprHB2fcHx8TN8PfPLJx1xfrxkGkfP7wcPuima3xvgtKiW0FuJFzJmkdkTb0APRNiTjwBica7DOyr5mhDleWWsZqWXargOlCSGhBhm+4Mo+EYt1UD+OjEFM47U2NK5ISct+rur+rw1WS0245wCxL87tYW5cWEoIi3j0vsSDOuXaToB6DJ7tthfZ7jAQR1/A/VwYexZjrEjRM3gfIIqawh5YUcUYCGHfONGoIo+UnEH2EUfTNqUZU0A1ZUCXe5j2e1Xdb/dxTMCdlKNIggsjTsllF4acthSSOodNbmE5lVhVvJSVNgeveeCnqZjAwArECfi2z4/qXqkK8JJTYSNiSUVJU+ugo6MlRycz2rnGM5ByEGuCqIhjJPRepNtpxzDugCgDOqwr6h9P2zXY1hF8sZDQWuqOqaZIxHFHDCMgMSqY4outRamQsipgrC02XhWILHkNtYkqMVvpmhuJ0iilNJ1ztcIQIkW5dyWGS/zbNzYV+7xFa12ArMq+ZKoDQ1BonTCm5ij1NeQUrasNx6KyKD6JVBuUqkDRCqX3Da6pqcaINfL5ydIQzEj9aRoHSvaWynE7VGForSHcAiVLrlqtbSRf2dsoZQ7Axpw5VJuRdXWlIoHUmnmvmEox4dNY4jJknYsayhS/v0xO1UdWTe95uOan5iw/vfl7ePxMAJ0t3QFduna10j68mRMqWG56JksCVJJfYRaWR6lcvLqgdDFPbZuG5dER9+/cY7lqSXFHDAOb7UCO4m+mFQI+aI33o2zEZHQSdNMpgzWabC1mthIqdALvB5L4hmO1IxORoRehXNQok8cax6ybM2s0y5ktxuxKkOAkJs4hgfIQkkJbh9EtKXl8HAljxCktrL+YixRJAZoYM0Mv46uVlu6IL1O0vPfYrIhGADCrHSrBanXKw4evcXR8hFNapirlgE6RMfZ07oD22QjlMitDNhEfISqZZqrKORAjKciDZOpEMQzGZJx2xBwEaMqJzjVEHyaDRz+OZSpOJoUie0keHTMxKHK2QKBxhsVcOlkpB7puwbLruFZSCFCmGd29c5fZYs7y5Iimc/TbHdYahs22UN07dj6A79mmTHAjIUXydkBtIM8cgUwYdsSLc15tWh7eOcGgGXzg4vwarTPJMMl6Us40psFYUyYrFaBOq2LkWVgvKRGKlPTwuI3616JukgcdFAkh+imYxSK5VkY2auMsTTfj4vqKi6tLfAjMZh3L5VK6YqW6zlWincX7QDZo2WBk8muZJqNEGm2MBFtrHVnvP2NN4tu25fT0lJdffplxHBmGYRoVfwi8a63Jpj7juTCain+e2gdESXyUbFRWwqUwbSTYVq8cAflE+lCL2ToiuzI3bGGCVa+5mmfEJF3MkIpwRhvQlqZb0HRLmm6Gto6sjCQeZUsU/DXvOy5MdaWcQOm0HHbeJvYL7KWJUxMiTR5GucjioUiZy+tNfnsHYEKKsfhGCYM1RZFEkFIJmmYqxpVSsvZCwrpG9lxjRDagE2RPDiMqeIgeUzpN0ZS9FMODk7u8+dojfuGrP0/SkWcvXvDSwwHnOta7gY8+/oR8GckEnNdcR88Hzz/CnhusM3Rtxy7CLCZCCgy7HQqF0xpnLTlGhr5nvV7T9zvu3Tslk3nyySe88eab/Nv/3m9w/6VX+GQdGfXH7MYWbS1f+Lkv8otf/So/9/Y7PDg9BSydQ4YfZLndGg2qLaPqsyQH5V48f/Gc99//ES/OnhH8yGrWch1GmqM573zxS7z08BW++c1v8bWv/Smj9yQ/oFIN3PsFIOu3sFP+DTFyWxiCn3WkmA66e6VoL2+kUGjDHmy5ddxmYH36Z0oX+qBjl6dlW1lIGR0iaPFYtdYWsMlM8XVi6pXX0aoYJhcfmvpphb1Z13pNcnwpeBwhI4zJ3Y5Z23JydIS1lgvnBNRQWrrtRbpRD132IIWizmv6NFNuKmsoYnHZd1T9+X1Sd4MJV3ONClLWhKwCH6VQTIc/X5oJmn2CJLnhQRJVvrif6Jan+3Tj/h/s/Z/F7Ku/Iw4K4jMjnXc1PedKIRLEEnfEI7fKr/NBh1okk8ZYKfKUFIqmsMDr2thfVymyrDV7EK0w3vKUvBYQJ9bmUpyuQPVMqpPTKA2Zyh6YBhCVmLCXoRSVQ5nqJ0BZHayQ9gVcsRyQ4ixBzEXimAuQZolREt4YE9vNlhgT8/msXAM/sdijD1Qwzug90zAnikS7AF0F0DRaLBVSjOQQ8MNATnWy+SjDKIhoLSoNa0uBV7yBYpRi1CHSaVMAuSQjc4VFVu6FFFv7JrcxZmLlV5Ca8kyHEMQbq6xHrRSNc7jG4WxD07TlcVb0fU8Igdlsxq7fUaWBzjnGcWTPSqlAtuzdRlOa4iJjV8aWa1rkefLBGEMg+oA1wg6pUjxhvZsbYLNzknO0bYs2WiZCOsditWQ5n3P+4gUvnp8RvZeYnxLee65DQOWMs47FbE7XdSiyDLgZR/HEdA3GGdJYWFgJlDVYF8jZMPSRe3ce8vf+zm/yX/xn/yWn88d87V/8Bf/L//Q7/OiT97izWPL86im7rQyfSIilimkc49AzbNfMnKWZdWjnGMogs91uwAfFcnmXZrYgasPziwtsBmUV3io60/LGlz7PyYMHfOvd7/LsyScczxf4tGXbSyPWDzs22w0PXnmVe6cvsXt2zdjv8Bl0Y7FqRmcFBElZ0cxWqGQ5ak744htf4B/+9j/krS+9w+/+wf/FH/7LP+Dq6gnZb7FJoZLCdYYhnPPRJ99h3X/ExfkZs0XD979/RdTf4Z/90z/iox+9hwqZedNgk6a1htZ06Kw4e/Yhr716jy+89TY/fv8p19eeFEaZ4Fxi/rjbMe56rs8viIOnKYzDtmkKC0im/LZO2FwpDFjnWLUypT2ETOhHnGu5d/eU1998g5cevERKgWfPnnJ5ecnF1RV9P8gzH6UB5XLEDz0mePHiLTJzHz198HgVGBSMeYdXCmUdjRMQum2E6bZcLQmjZ7eVmmJ5tGK1WrHrB56fvaAfBrrCVGrKYIJqIdM0Fq0cMpVVGEwqI4CfKiw869BknHPIhNFAUolU8kF90MSujexkIlUOVz9r17ZTc3cYBoZ+x27o2Qw7mqZhPpuhtSb0I0OdGquFNYt1qAKmkYtUkgpqlUFZUeZpppKzVpCmMmqp7CPF3mhfGZR1hUFXCQ4RGQQh5+KDgIw1Vk9KgJgJseQoYj0te54pMSJDruxvkgwPGUdsVsX7uNTxtVmREfsAnadcRWqsWD4rk4WMVdUmR5pxWolixVnJb7XeN3GMbSRHMa3koRhUVBAK0Sb1hDAQosc4RdOId6+xlnYx5+790kTqA+3YFGb6IHLXMKDTUEBZaWoHH8uAO1VAOIOvwFk5h9qQsc4RMeQIY4ZRyw0cvOAFXomHX/CRGPYKRGsdIOoeU8BzqU2EzAQQs9SOqsRcZey+LlIHzbeD5uc+p5kgoJIDSQ43gX0ZEkVxFYIEQJQ0YeJe4h1jxBlurZ1aj+2ZdhWY+6sa6re/N+Vj5hajkL1kVzISXVS2Rd5em7QK8avLdYCosD5TrmBhIqtEgymMxpqvl+GT2pT6QEhbteaQKrjmQHUOw2d0gcvxMwF0TWHA3L44muLhJlA5ZDV9CArIISavAgQdiInIIGbQVij0xoqp72p1zMndu6yOZjjnSdkzjIFd37MbPaEwc0IMzLoTQciNwpQL6qyhaxyqndOzAtcBGu8HvI8ksZYHMo0TICRGMUV02tE0FudaOptZ6UDo1+w2vXioxUjWSabIGkha06hGmBIpEvyOlHtiUmhlGceEcuJlMetmRCd09n4YUEbjmmZi3x0ircYIWGmswxlD9CPBD6jGCaK/uWK7PuP0zgzM/hbG5lI067p43vVieJi0LRIEeRpc9QqMERUjOmeMyjgy5Ej2I2MMBK0ILk6eAJVmqnMmW+kAKp3JSmO1IpGwRrGcd5ycHMGPP2SzueZ4ueBktcJkMcvU2oohq5VuV0qJ6+s12/Wavu8LMKLo+4HdMDIMPb73jApCY2hGAU6aZgZEtrsN4fqaB+2K2eqYVTdnPluw6z3KBHI/ErNQ13OWnrJTqkwGqkw6+Vvi796s+dDE+7BQ+1Qh+BkbRJVYRyX+cBlo2hbXteim4fz6SkAOP6KNoe1kLUk3JDGGMiK6SMsgSwKv6/OliFTPDKTDZ2QCVcpMpst1o6sFgnS4e66urthsNhN7q37u+qybwjZJMU2m9YdyvcT+epRfnjoDKSVMYStIpwRC2MuCpYPS/D+UvemzZFd23fc7050y31ATCqgegG6gJ0qkOLkZlqkQw5Qt2wp98zf/hQ7bEZZlKijapIIM2pRIS02yLbaaIHsA0BhqeFNO994z+cM+52a+QjejnYiKKryXL1/mveecvffaa69VHL/C8jVjxHJ89h5bRvBCioRSrClj0KbBupam7Wk7MYYwriUpVZxz8gJ2UUC6jOxxli5eOkE+quxnoo4bygeUdVb7SiJfeWxGVDZjHZ+oIKjEt/vrpoKAZDHbqMCFAJhyoDfJ4oPFe02YE1pJoHaNmOVIV9ITpj1xOkjylzPBC6CHCpAcvTG0WfHJhx+z8TtutrdEMsY5fI50Dy3ffPcrfPTJpxzMnjxnbl/t0bHh4foJenWBT5lXt3tUllFhZ+1CAU+FTAsSAAAgAElEQVSl6gwx49qeYX2OaSxPYmR1+YCdj6i7keevPNpc8vVvvMGzZ4/5xjff5b333ubB5SWKiFYSG0wxZyEjwr66k/Wjsqid5sRh3PPZJx/x47/9a+I88/TNN8itRUWPbVouL85wJaGb5knEl0Pmc1IbHIP36wYQP+0Rg/+Z36tngIDAJcyfgk8nwNHp7763Z7h/rizPKV3Iew24uo6QjqosRQWRYliiQVsoxX6ORz0tU8YUKqgibHdzBG5OAC4kPymAH8zjgd12y3ZzR5g9nXM8OD9nmkYB5xBYzWgtrJaTfMPqej3KtqkAeC7spCLUW7vxxz+yvvLyvc+7tN67Xq9dy5TE0bhsNLkX+cjeP/3Z5fKe3COtlAg5v5Y8fQ58q0DW62CrQhqAJKpZhRwnct5Q2ghKa3JQ6OLqpYqTW3X7q+wLpSLea7T2NT28lyifwotV605paWa4wi5TsDRIasJb2VwVuNPlzMyqNLVSzdZkgkI+x2sahssbUCf3GLI63r+sFKnkh1pJQ0dXw6Ccik6wgGS2nI2NEw28cZRGUooHrHV0fS/Ni9K0iTkgpg+yZ1J1GCxNruooWbv269WK+GAmp8zF+Rl918rnKOOqOUmDMiYB7HJuxS+qxJJClKCOw1pnxc1NaVBy3admxlnRwE3lD0XeIIsIijgtGltGpzK26K6hWMauZS3Kum+ahgcPHpAzvLq+YRzHwqi7I6aB1WqgaaRIFH1DKUZPHRdjOIKsPlR2RWa1GlitV8f8I/pinGbwJSdr26aMDEukrHpWphS+rrGEGPFRgP3VMOCsYXt3yzQK01YV5irIxEaNsdMsTfKFgYUA2+M047Ihh0jwGWNbjClskmy4OH/MP/7Hv8k//2f/PY8ePePP/ugv+V/+5/+NcdzxYD2g0kQaJ3bTDmUt48azPWwZbIPKCT9Pos2cE7NKvLq54jDPMCem/Y5te4dpGxKKYA2jn0nbid442scWt15xfXvLqw9+QrjakPqBrBRu6BjDiPcT280tbdfxzle/wvRywycff4ztB7KNjPMepyytNWjbEe3A5fCQ3/yVf8Q/+63/lieXX+Qv/+R7/Ic//i4vfvIx0+1L1H5i4AznEg8faVSfOOQNn+2vOXv6lK9+4x/y779v+Z9+53fYXf0Nh80Lural63qMTlgTZIooBD759EPe/OwJDx58gQeXlxwOnxBVou8GjFUYNH4/st1smPYHVEIYV9biCvvLNnIuzNEvZ5/kv2Ksl63GKMfq7Jw33nzGw0dvEDO8urrixfNPuLu7LmxOWW8qW7COxmm6iwvw4livikZ1ZiRGCCRxGJ5nopLxUwA/ixtjajKqL6FZKUKUiaP12ZrV+hyU4cWLF0zjjDIHXNNydnbGudFkLbnJOM7iwpoll1A5E43I8cwxil6eUQIua9BOwHzRfMyQDSK2L/rquUwqyWmpaF1D2wj7NOeMn0fmaRRH4zBjTHFi7kWf3CdE5iWlxfFYNxFb4vZpFaKUpm16UvKiS3uSi+giv+MW3dmqZV4YuNYUxpZBqROGUKk1gPK1VGJLBfBKM7uCgFWSI0siU333SrSkmj7kksuqAr7VmgPSseEB96cGyvMl1pT8sTxRoQWgSxmti1N6uQcCSsmYqFKpTMUprNHFWVuhraAEPlhSbgR4JZZx1KLB23Ss1g+Zp5nxEMQcJUVimJn9njQfCOOGHEXiJaVE8JFp9gJEl3gZs+gb1jPVZMAYsFaaRl4msTSCs/hYdB5tFTBhydtq7qZKgzEVk8g63SCL+AgJLcQSVWQg6s0pOcCxIVplS/QCnknz8dhklRytMunKPS0vt6Q+J+DY67nUMiVwokt3+v3TPO/08Xp+fVrDpmVHVGCu/lGv/Yxe3lvV9YVU4owWnwBkz1bZCwHr7udeWmlUrjJsVddYn9SEeln7GSXJ08/G534+gO7UcUOSuvoG070Ne3qBjC5aL6WAqZTKWtwCOOuWw9w6R9OJk89uGvG3ib4XQXVtO9ZnAytVUU5hdVktwJ4tDAZTusx916LaFWPumJMSNsUeQhpl/rgcShW0cK2hcU1xj5Mx3kZF0niDygXlbQw5W5Qx0DTyGl1HN/T0QyddhNkT5wldnDlv5xllDUyBrnFcK8V+uyPGwOQnur4lZ4N1CVVudUwBi8WoTNc6GhOJfsdu48k2E/LMfLhjmm5wU4dqu+Xanz20xAyTD4QJmqzQUVPPqqgS2ViUFaHDpL10S2Kg0XLPnDIoqyDapUuhS7FstVBAddFjyWWx1+UcU0CRaRvN2brjyeMH3GxGpnHP1HRM04FpmshpZt5uuNluOX90ydn5BVmLbfu43zIVRiFKzChm74l1szmHGRwWsE0vhUtO5P3IYbtnf73BnLc8uXzA7AOb3Z55km67dCiKtXcS9oEuji7idifXKKZ6UJhjBUTRjsqFrVAKnEqlVyouo6FaK9Aa7QoQUDrTtm2xTQPaMAXPZy9foI2mXw/0bUvTtoTSfcopME9jYf3F0u2S91m18OQwlNHWFCEq0En06nLOGCtdlJhEY86U7vx2u2E8HLjbbOQ6k4uGRnW2jKKFoMwiLg6SsKCPhWllwinKqFVhQ5wKmi9shpMDWC5gPdgLuyafdFByZcYUsDRkGYlSGm0c1raYpsW1A67rsU0jwGRW1KFAZUCV5D+X6LCwcmq04N7peu9RNegWxmA5XOX4kjEFSTBOD/r6sapBTT0/iyBsSqBSAabUwj5o23bpWIYQmSdPNKWr23a4ti2i2ZBzwI8H4jRjMuSYFjaFsT06gfKJ7atrvN+wTwfm5LGdw7qWYT3w8M03ePalL9KvLdrCdr9hszsQvGL2gbGMfaSQ6FtH27QC6iiDj5AwmHbg6Rcv6IcVyhhW52d8/Zd+BYAffPyc8OEVD598k7ffeZevvvslvvT2G7zxxppVa9B6Zp5GnOvRqgEaVNakhIBSAFnOI41on837LWHcY3LCOU1nFZvtFp0DYUq8/72/Yj8FPvzxjyBFrFGk9BrAxWnCcQQp/q7HqZ7a5xdJdSM9BuC6J7QRVtRPi43L/7+2/Ja0KbMU1VLvKCrSeATzWIwVBESXsWmSjPVHX9hKle1Z0ovqmKpVAd+rHs1J0VC1FLVWhHnm9vaW7WYjWldKk2bP9uZGmN/TJKM25TOr1wC6ruvKHr8PaGXKyAUn54BWC54me4t71+8UWKtMq9cbh4t+V7m/RyXL8vPpJBEs7KflulZQBFXGs1jO7tN7yGv///o5t7yeOrYl76dy5TNrcRGsIxaVrXwED6XaqG9NztUCZi1nrFmaNrmc03KdFCkFQooLcFpHeSvoUz+zSIAcQTdhVko3OZREW7+2b47yJrUiOH6uVIBgYTtXnRaqNLBIRxQWW8YRo8cnT2Uj4mXUxZoG04rhT3UZnsYRAOssbdPKGtai2ysFm1zMnISBLYyuuOjwNa7h4uyMrhTzfSc6daEUMM5aqiN6BfSaphGGKGKUIo5tS8mIs46mG9ClOZaBaRKnVXHik4KQoh2p1elZUAuG19eYwLAxhmWPpnTUT8pKc3V1zfX1DfM8ofayn+o9TCkt49MxRgIiej5PHj+LLpItIB4otLFY5/AhElJgNQys1msO+wM31xPjYSwsw7iADMLac+LM65zoEsZAVtAOPU3biPNuiHRNC0rE15U2aKcIPlBFisQhOpxcA01SSkzBssaoBDphTWkWhRmlLY8evcV/8Zu/zbvv/SL/7k+/y7/6V/8nH378IU8fP8LvRq5ePWfab0U7VWV88IR8YC73U2VghpACIBpfWlsSisN4YLfdETd75tGTrWZMkXEeefDWI549e4beez7+2x9gx8hFv+Jut0M5QzMM6IMnxom76yu2d7e88+yrXD97wcfPn+OanjHsSUYTjJLx0KblyZO3+OVf+s/5J//wt3nzjUt+71/+r/zrP/jX7EwgMZOMR/WOHFe8+/Uv8fZXG3784m959ZNPadYr/sl/81v8d//0f+APf/d7/ODP/z13Lz7F6oiyPWkCzETUGZ8EaG2M4+X1DcZd8ujJQz67+oDN3QarV9hoCT4R8YyHEe89Br00f8LsQSnOLs7F8fMwc5gmsgIfAgc/4Ulo6xj6Mx49eYPzh4/wPvDq1Qs+/fQjdttrMT4LHq0Mzna0Ts6XmBKzFSM9gtQdxMQ8J+YIQWWwAlgpp+iHnsa1zHsvOVQIxCya4a5tmKaJ29tb2nbg0aPHPH36VMDumyu2d3e4xnFxec7ZxTnayRl42I2kWKQuCsaRfMCiJNYGOQ/arsc4g3GWmMUBVZhNqjQdZb/H7KlaZqBoW9FZF4khL8Yp4ygyH0rTDS2NE4KMURrVNAQy4+TxPqLbErGUXoCAYxyDxjnImuRKPcexhpGcuGh2mqohhownIjEjaYlLKUFKklPV1DbXsfQlhtboieis6wzaycRLjWsJVJRmuOg8KapVeG3ckHNhdCsaV+qLejBUMK+eE6XBJ+SAGvvKmGVO6GxJShxwc5Y9Lmyveu4e8/SFCBHAYGUcOGdpLiUIOYu+nJNppc4pnNM0fc9qXTn4SQC5MJLjCLNIUcUoEw3j5JkmTwgSbw+HAz6J/qsPnhTFiCSESMgTKRnmORD9TOU5inaZAI5NI1JGMqVkiDmUGlQXDbcISZOV5AwVHKq4S5UdkUubl2u4sNNjkqZSzouOXGXNpRRBpXskjNrsFdmGWgMaktJEwr0aL6VIOvn9KaUCjJ/UXKrmv/Uec5Jv/PTyrU55KsUyrXkvdwQWvWdBM5cx2NNrEVOWSSclAKXOpVWZhAUnPdWKi5U3lo+fZdGjLwdHhQUVSr5ScsS/qwT5/2USUd94zlUIvQrSluGkE7eNXPSzMCKSKZuzoPflOcOwkr/XKx48esjl5SWu7fAx4EPi05dbScRJZTSBgvYrGfdQEYrrjC66KFobjAsoO3G3PzCGwDROzPNEjlkAvL4vdHopRqLWBKM5lPEcozUNkbXa06lE4xxD3+Nsg2t7zDBgmoZURhVdEbttlXxWkzKRxBMSc/JMdweMzvjDjmnaE2YvNuNKuvzGSIEVU2Ca9mRVOp+HwMOHAw8ve7LR3IxbUppYPxh4ujrjfGW5PO94nx8A8NYX32J/mLm92zH7Cb8babOFRhFNxmvDnMQtMhnpNEcCSgVaIGpFZwQUzcmSZwGgNMUmuro5FuDDGiX3AtEJpGh+Wavp+5bLi3M22z03N9ek0ZOmyHiY8HNkP424vsenKB0sq4mzZ54lOKUY8ckTfBRNWGsJ1hKUZ44BHwJtCGSjaGyDamE/e15dXbF2j3j66CFXdxs2hz1z8vgktHKjpCgKOZYWQYKkUCpiC2NMPp0SgOpk7Vcth6PmWkaX8W8RhfTFRKEcMFoCpkE04UzXkYDt/sDddkvMiaZpGc5W9I0YRUiyIp2YuSTSGTkoZCyPMhevlo5HygLvSnexzNkTJQFvZb4/FhFwoWAHYUj6CV1AopokxCwsAgn4agG3oJyRCGuvXoeqTZlSwpfRVuDYrTL3ATp5ISluYqoCoEU3gqP+jgDoiRgyMQnQobUthUSDtQ1N1+OaVrTntOgZSWBIqFSOziSHcX1UoGDpyJSirgrqL+WSql1GFrBEpVLgp6MWH7WopPyyek6eBB6lq2OjKd28uoZYNKdAmE1WSeFa2YvWWkxj0UWnQpFFWy8ncoxixJEy1SmytY5H5xc8XrfYNjDgccOaB08ecfboIbpvmXLi5sVL8hzQWRjS56s1u61n3O3p3MDTJ08Zx4MAsM4WB11wSmFMC86SrMGuLtDWoLuB5vwRKWdWuuXxky/wta9/my88e4cnb5yzGsCYEZ0nXE40rYYcIQeJH8mKNf0SNE8E6YGubXj2xhvYNHNz/Yrt7TUvXrxgnD3j5LndHLjZ7rm+uhKdGefwKXE0WSj34gRouLcmf8bDKP0zv7ckpiUhWfYEqiSlJY+oy/5k/ZGP2hj1HeR7p03Ze/UFFsD4+NBodK6NAmFNS9dO03cDKgfmcb+MI1LA8Dr6VjUga7EtCfJRZ3Y87Dns9uw2G8I8i95LTuw2Gz7+6GP5/DHT9w1D14uGltb33uXFxfkCClE/e0lVXhcKfu3qClszLYjd8vOv37fXGXGf67TWgqSASBmKJmsuTpmnv7U8Ixeh8JPXrX+fNit/GqOudqVr0VR+8AhGHiWCBJxL+WSN1hijpMFQLtfyuUqyWIX7hf3PUpzJe5DXUYrClKkjqXW0Ni+AVU3kF3As5+I4ayR/TJKI19Gn+jlrYbZoBC36QOWjiDryki9C3W/l+7nGDyWMk6xJxdmviAOL5qZz5ew3wowdJ6Z5ZhgGGdXse3Hc035hA9b8MqpIyEGaC0nkHbq2IzfCWlG5AHJao1UgN2lhG6aUaF3D2dkZq9UKXQqXKquSYyKX3FPy8qMwdj5ZK3UdSdGYSCovQtMpxTJqJNcjpiDJfGE5VGCu7v15nshZ9tcwDIQgekMomP3Edru9F+soQMk4TwQlTIx5FCd4XdaRsw22sTSuWUZ3jTMMZ2u6ruPm+pp5HpmmAykGdlvJycW0omPoO2LKEue17CljDf3QoZVit91AygWgU3jE5CqUEVpTBfGr6UgZw07Rk5TBWYeOAtRBxDCjcDLa+vgBv/rrv8G7X/sFPvjomt/53T/kg08+4eFbj3n/R+9zc/eCu/GamDy9duQ5likYxWwEAHLOctYNrJqOlWlQtmXKmSknZqUIGcYy4umJTNnTPXrAs7//db7w5S+z/+g5/icvGdqWdNZyyFHGLw/7UlNmtnd3fPyjD/jKs/dYP35MbBtiCIw+gLNMOdO3DW+88Ra//u3f5Ld/65+jveFf/Mt/wR//4f/Iy+tPGR5/gd20ZWoUQWmG1Zq3/8G3eHw28cHzjyGd8ejyLS5WK24++o/cvP9vWB1+yJnzxOwIh8Rm2tG0I2oVyyGkUV7x/OqapDoeP33AxcuB6+0VWYNrW0KWfGOcZ8bZY0HAI8StWxuN6zps60hKMcfIFGZ8jAQSpnW4tmVYr+lXawGWr295+fIVu/2O7XaDtZBTwIcZqwyuX6HRHGbPLoxAwmorzr3eMyeIaJGk0RqsxjYNq9XA0K8ZzcSOHSF5kQ5qnYAYXct2s+MnH/+EEBOPHz/m4uKS/ThxGEc2t3e8bB0xRVm/1uCMBqOk4RdKgV8aAvM8sy9nu+SllqQSOteCvNQJi1pL0YIuRhrOuYXxOk8z0zgyHYrcjBZmojGGtmvp2xaNJihNyAKUkWLJ+2RCqgIoha+NVgKwOK2x2hTQMS7gS41fpkioQDm7SgxAF5BcW6ojuBxtxwAmzKpjI0BigVka79XUIVNGgkuFIvl2BYkKgyxWw7Ui/ZJlzNqQRfe4xJ4SWkApQjG3W069XKZgqmpZUtLEjb6AdOUcToEYdZHiKdM5GTEHyCLRUMkQOStiuW4+ihlkKmO685zQ2mGME/0yFOiEsQ0KizuT0WiyEqO/IGOuqWiczrMXSZ84E7zH+2nRyQs540Ninj1hnmRyLUVi0TalyFdYa5YaLhLu5SDidBvJUZFUaRRlQMtV+hyBorDjQ4zS3POCtVhb2I25gFehmFjhi4FTg8gTHX+vNaaYkJR8heocXzKdOh7LMa+oeZMxRUu8YF6qxFiJsyV/Vvdz5tNYfFyfFQg8Pkdx8pwsurEq199fnFcruSMhk1fLz6pl6qOCzvVz5HTcE/W58qibi5J4HtHFv7v6+DkBuoX5Agsd/6clxa8nx7oinvIiUBZEV8Rqh2HAtQ2PHj3i6bO3ePjoMcpaDuPEOM/YfiWucWQMGUUoor5JNK9UJmSxao4pkorLSQqTJJE50SRP5zS277BWBM61tjIZmhH6rYKU5nITM41u6VziyUVHb6FtO7qup3EDpmmh7cFadoWWikoo5WXQPosGV0gJrxL7/Z799o79fsM0CUAXfcCpSAhjCTIyqZrmQAwZX4r0NE/k8SG9tjRna/qzNdEourVlWDnWncPoDKMAdH/9n16y2x7Y72fifkbvPEMz0a3W2H5Aa0VjLM5alFXMKZbRi4xB2D0+B0LhXUbt0MoWSRkZZa4bXEhimqYmuDmJfh0Z5Sx91zIMHV3XcLW55m4OrNsVq6FnMiKavx9H/E1iHCd0Y8k+4P0so1lK060GmsbQaodtW2YFm7Rnx0QInj7JqKrVCh1hE2b8nUc3Lf1qwBXQVkCsMvK0AEYlSSw/L2xPvQiXa2M+t3lOBZg/t9ZLoVMLuJjFYVeVLodtO2KGw+7AZrtlfzhwcfEAW5ya5jCRcib4SSj7RazbliAhI0G1MCzduJRKZ6tudOkEWOvQ2gGBYRhYr9fM88zNzQ3b7faeYH59zcWZiOL8pjTJq4XtkMuBeDykBHzTxkDW94SqjTFoJyK2urAxTg0l7tGZOQJ9wg45dl78XAJZAnG7cjRNT9t22Laj7Tq0a1FaFSlsGY9VJHJE9sZrRfRpMKpfvzfex0kxLlf72FVKadEgSilhtF26MQKMHFk9Vh+ZV8466dot66bq8Mm190FMGPzkFz2+XO6zto3oZJQxIqWRM5BMnIPoVdqmuIUZVn3Pu19+h1/8ymNSMzNpT39+zsXjx6i253ac+fGnL/jhBx/y6as913cGZd/k/DHg9tzcbPB6he4vyUHE9GOURIQMvVHiGmosB+/xtzuG9ZrYKJ7fbnnri1/i27/2G3zlK1/n8uJNhrbBmQz5AHGWcQtdkqHCsFE5k6MXrT1UcfyKgFlMOJQxXJ6fkecH7G6v+Pj5Z9zdXLE/TGwOE7vDzH6MwgLWZmGcaD7Pkqtr4KeNpr/+OIKvn38sgMdPA4zKeq929RTQoibAOedi7FC7bveBomO3rwJaiWM0PT5z0SpL8rtSyrSu4+LyHKsSV1fP2dzdSaFFXoB6vC+criNYrfXRGTKnxPZuy2G/E8ZNOnl/OWPK84xSOOtwxgpbfGFyyaNvGwHrT8ZTtZZRviUho2bfx70krpIZH4uG28kePd23r+/d08cyJnMCTtakjczJGVS6/twH8Cvjrn7w10dr7xUl6likHL92vFu1q7tcxHKW1rOxnuALKJvLyFApSHJmOX/reGsuY0Mx5tLNrolfJpDK6LxePusxrXztM9a1ttwP0CVR1uqYSNfkN2fRmAEZrc4UsLiOzZZYgZamUcpFVqQmqFnOFQhow3Le1etRY19WAWUsbV1fWi26qXXNVndXrVQZmUw4I8Y6UUXmNAtgl6GxMpoXvCcUDUZnJRGswuTOugU8S0WfLwR/HKUq16eyQEGYF2kaSVmYd8oYvJ9JWRhiiwtyYbLXNXBv/abyOilSmdvSxU/LWkmFHZ+yFMFN47i4uMBYw83tNbvdFsgymm7EcCNnYViTYJ5mwhREdL6407mmwZX4odD0g4Atu/2eTz/7lKuXLwizx1onuoChNuGaZbJG6YwvzbSQIhRGTgiBeZwENC1NJ1UBiaKTt1qtlnXjvSdlMZYySkEZFVJBRvGyzTQ24zoH6pL33vsF/qv/+p/y5Okzfv/3/y0/+PA57dDxan/D1e6a7XiHsdDgsEozz4EcJrKxZCXNrtWq5/LiYpk8mGfRn4spY9qG7TwRk7DAdMw8PnvA2+99lW985WvkceLF8+fC7NzvIDVcXl5yt9txfX1NPzRY40gx8PKTz7h6dUV3fs7Fk0fsPx0JMUqDwGnefOcdvv2rv8k/+Oav4Wj4s//wF/ze//EHHDYv6DtFk0c6o7hLDrN2fOvbX+Lp22s++97HXH16SwozX3zny7z3C7/GfLvl5YcfMl6/Yih6suO0I+RZ9qZVeASgPWxmsrXo1nL59B0ePX2TVzdb/KRpe4c2iJZ1zgUMMSUOSaFaQTwF6KYha8Vumsha0a8Hzh9c0LZSO/kU2Wy3bO/u2B8OC2PKGoq+4ExKreiMl/xSmQ7XOQbboUJif7sRrcccME6TtEipNK0wiRrriC5htCNEcXqeQ3GC7nvmKXA4jLx8+RKA8/NLztdrUIn94cDN1TXee87OV8vZUp3NhQR7P/+X3NxhmgbbONCKkEWOJqtI1lqmtkgEL3snxCB1cCeTEyEEDoeDTEKUs60pGs1NAR7Xw4ocEoc4MoeISw6wZH00mVCnAUQJqy54L2zkwnBSSt0fny/salUmY2QivjQPjREmnBXDPjGZkvOlam4JU1tiUQ3BFQOqeRDEIi2RyFrOYoMSkIssRhbTTOg9xjppEGlXQJ+T5l4BWmoT8pSxXsOrxChpteusiy5oyZ0WXdQgrsAHj7r1KJfQVmpupy1ONaV5lkTLAHH4jGVyMHsvDEo0PmZMVmSjyvBinawBlManJEYh2qKKPr7rKA1VaZ4JWFpyhiTAdo7CfvdRRpnn8UAKAT+N7MeDkC30MZeN8YQosMQXIIcSV0r9ro5TPxVArXEt5lTiUPxcTnD8w72v+yC6oqeSF3CshxNgnSOVvN6YXGJJWU8qLuZVP/1RM5bj731dVuTeGnktD18UqpZ1UmsOiplNqRGrLuzJb9TI+LGKagHpav6C3GVyliZZbXJT8iBjLDZLTM81t6Usj5oKZT533V5//FwAXQXnci4ilKe4pVKLs8jxItUxloxKpazI0tlsG8dqGOh7EQfIZPb7kecvXrHZHxZr5aTBNg5rFX3XcDb09K3BkrA6YZ1m3O/F6SkVXThlCCh8iKTZo8NMKg4rTVNEJ2Mghj15lhGXvm0Z+hXWDjKq0zpW/Zp+pXlwoVAqoJUILxrbgbbMaEIGsilMQbkBYZrY7rbsbm7Z7Seux5H9YcLvR8JhYrffM/mJ6ANZZ/bjDuNscdHLZFXstJVG05BT5nA3cvdqy4Ud6M/Pyc4wHmae3+z4aN4TfYRvylv4g9/7K9KcMLrDOFhdKFzY08eJZtzR2ZbWtHRtT9s4GiMdbG0btBE2YlLSsY1GoWSQFNtnugEAACAASURBVDmgJMnMwWPJYkDgxbbYKktOEV+062KGefYMQ8eDywv2N3eEccb060X/SFOYlFnRupaLy3OMEUeu6SBafW3bkQGjSoCcPPNh5s7P0hHxkS5mOjRJQzSJrEUzZf/qjs5Kl7dt28XZECrLShV3uYxPiIMbmWyLoPUJ0L0s9ZNDJOWE1UYOvyiAnrMSzEOMxDiD0jiE/ZSAu+2Gq+tbUlaLU2vtvI8+CBMnyvh2yhmDdEmss8WAQTqy2uiFtYeRICJi6ImYxYXeahGjFp2ftBQ2NTmv+7UWCVA14GqRLjvc3Ds4pcCszoK66AfWzvvSObEWU53tcnXtC4v+0Wlh/NN6CEtDIB0PVW0tbdvT9iu6YYXrBgFRS5cwSkvtfnejgBs1mJyONH4+8PyUAj/HI5iSj/oZopF1dKDUWtyycpZr2DctXdcsr/Po8pIQPHP0xOiB6uoohbWMHs34ycvfQca9lLG4psU1YmqijAZVAMKQSvIjn1UrMGi6tufpm2/xpbe/RPNkzV3yYHtsd8ZmTozzhF4/5vzNL7B3t7SPE8paUs7cbu+4vb2BnGhWHWeP3mA9NDhj2Gw23N7cSpKJJJVu6IkozOqcZ+98lXfefZevffNbvP3222IuoDU6JVKa0MyYnEg+ME4zaY60ZsCtGsjSMTS9AJkxTRhryclw2Oy4fvWSzd0N427DdnPF808/4fb6Gj9J11Fo/KlY2ksiKKPa3F9ftRVX4tTPA9Clv+P7daXp0iVWBSBXZU5TwQKu5OXf9QuSMJZZ6hJXj6+7gCH1C5kjQLc0wypIlIDidpUyw9Dz9OmbaDyH/YbtZiNAS0kIKkCfVe1wF30WJcL54zQxjSPjfkf0As7pksyJgZEUD36eRQw6BMZxRFsja+mEPTpNhyPTthTpxlhMMqXLqguAVzTTKgCUFeMcmX0inAgLnyZmIYQF0P679QSPzcMMRVtNdMmW4ua0mchRb6c+7rFuy6MC9a8nl8tzasVQX1udAHXl3qZU4Jil4EhL/qTqQjhB9fJxuZRGzNGV7PUcLEWRSzh+hvpbWVi7p4ntqcMahZawFFmqjD7nei3ktaqoci6ft8ocLEYhSgBGg0gm6AoYpnr9pGiqMpQyGiIjdDkoklG0bY+1ho6WtF6hD1qcz3c7KpururjGEGQf5qLJWjTLiJJ/pmL0o5UqIFDJU6swuTNF1FvW9WG3gxLbrBFHa2EelGZCPUPKeZ5RqFQNaOp6eS2RWO5DQuvSYCs6qTklcooF2NPLftWqMDpjJOXC9i7xpi1sNgGHi1atFjZsSjBNsk+XsbmupzI6FuMKLWYjh/HAtLnlbnPL4XDAKAErbZHAwJoC0gpw6ZoGpSF6X5ppCWMNOacFSHWLALkieM80jqSUxOV16AHRDfPBY4qpVNu0kBTTZiTHROtccc1LDF1Dv3rI17/+Lb72jXf56JPP+O5f/YCzB28Q/BU//uGH5FbjgmPVtiQ/lwkDA0VLyCCyHqumQyvNzd112fcBP0/kmGjant3s8TGwalvW2vHWo8e89/gtVmPiu//v9/nws59gh4aXV1cwKd4aes5XK5IPhDSV5rVi3Gz5yUcf8exrX+etL3+J5y+f07Qt/bDmi1/5Ev/ov/xtfunrv8zmJ3t+94//d/7iu+9zfTOS54447+mbyIP+jG0eWD1xfOldx9X19/nhX/0NymcuHmrOHq9Qw5t8/KMfMcYzVus3uZlHnPV4tyeGGR9a4i5g/IxtHK7t2M13dJPm+VXP2foNHj7c88knHzGGLZ1Zie5ZFkOEpmmxWgzWEjAV3cYUArtJdMLRhrZv6dcrzi4uGPoVIWhhC8Ey0ZRioGlayALWujI6nlIgInIJbujoVysG1+H3I2lzICiFtS22s2z2d1jXMPQFULMNwUYaa4jZgMnC6NLiDt30PZP3TPPM3d2GpukYhh7XWfTNDdvdpjDGR2zjOD8/o+06nHHkWJomcC8W1YZs45xomWUxP7A2oZOBmAkpkDnItEvKOGvp2k4kTeaZeZ4llpTJk7Y2oK0lpSganD4SojjcW1di+RExKY2Tk0ZwmfC4l/PWtLqWrSXPqM0rlCqa3BKT0BqlLGKUYchKyBPUxmHmyJ7O982ccs4y4aEUuZyhGdH3Azkr/CwmArEPy5ldG3qm5usZiQc5F4AuCaOvPE8wCJaYs5y2SabTjNZyttvjtFPwM5NP7KdMNh5lFM5YetfSmBarnEx0FLfVrCM+TiQixlusk4aytR0hxTIOWRx9NcW8L5N8JCmD0TI+nMvzjJZrGlTFSxCijrM4a46pg0FyXO9FWmAa2e53HMYRnyOqkT1ZcyBrLev1Gn8xiXTEuCVGWww5A5G01IqV8Y0qYFEZNY4FYJS88HgvZXSVY55gNATJw+Z5xhi7rLWU5f5qwJhYcB2pV7Q6ag1X52Kt1b1kuTaOTTEzEtDz80DWkqKdNEMlHJcJAWtKTVCfeHSlUBw108mx5Iby5lWmaI6/Fr5rXp4kgutCysq5GCAub6zkVZQXkgS+YGGn713zufzg5PFzAXShJCAlDVySjjq+thQ8JeGRCYv6CY/JqrFC1237Ftd3QGbyM9d3L3lx80JSFpWxpsG1lqZrsEaxGlr2ZyvOuobWKnon3UPrHCmLlbxSFlU6qSiYSYxJMcaMnyZcmBgKKNU0Cqsth+2W1CgUHda0omOVrDBGvObOK+acyd6TCVgtHaQUISYRG207sZ4nR3Zpz832hhcvf8LV9YZdcsxBQYyokAhakbTGk1FhZnfY0yaHohPHkBRIKZDQBK3RxrKfR65vb8jO0YdEUJnb3Za7zS23d9ekGFl/U5LteQp0pmXoetza4d2BMU9stnuIe1QCi2Xdrhi6gQcPL9BG4RqNcaCcJRtdxPQVJltUklFEP8+EccT7A4aMtQpyQmnRygo+sNkdirFB4uAjOQaMAnLE+5GUvcxk5yBdjRSZ9jtyThirGLoejWLV9di2YZwEnfYh4L10mXb7PVMUll0kE3ImkLHaoLoW17Qk4zgET9u3rNqOuevRQTpYOcYCMqnjekbGiZICFRHASwn4VbUZAJRpS6cjonXGaEl6c9JobbHGkpUiIqMoaAvGErJi3B24uZXO4Xp9zoPLS2EKkYswsio25dItVtaJiHMtnos2jlK1oFZC31YZoyvFNhOClz2QFMOqZRxHNpsNu92Ow+FAdWOrmkQpVcaHWtiDMUXiLA5AinIQL0VZ6dqcdG9CCMWtj6UjJ9TwVIrhTE5hOaik0JhPCB+S8Fedo5jE9CArIcQrY7BNi2172n6g7VeYthPKdinwUhHqr0wIhSASOVUWjJyOp4V41cP7HEhTCmmZmErLz0nyAUqVY7NQzZWSscGYIk4b+q7n/GxFJd6/8egBh3FknA7MfmL2Xrq7MTLPnnme8LPoUvgkmooJYbv2tmFtLJ0SEds5eQ4+MEdpmKicSdFjFRQFZ6Z+4KpbM3nHyykRNTQBPC2hO6c7X/GFLxjexBCVLsyriE8TIYijoUkzKxV5cNbTNw3XV9f8zfvv8/777/Py6ppgFclY3vzCF/nWL/49/v4v/iJvv/0O6/W6gFWgkieMO/y4hTCh4wzzRJo9KiRiM7FCNAZDSjR0ZBUJaUY7y7wfef7ZS374ow/4+NNPOYxj0egb8VMmR9Gw0hpimNnvD/h5FmZv45ijp/Jgj13Xk/2sZHylBvR77bNlz58E0KUbd7JWipByTWSqXkZSNWHMwm4rP7SsPRDmYAFrEjXGFhlZpUpXryQsnwNtqkbbAkPL+ENMWGcZhoFp3BBiIMQgmphFhF5pGSGomiSmFBg5Sbd2t9kw7neEEJbva2Pl7E6J2Xtubm9RZaR2Gj0hZJQ1aGc43U63d7tj0q71EQwsIxCiNSZJWgVZytYinDjB/Sww9RQce50Bu4CxBRyoz8kpF+CqaNGovBRey2udrIPTJbG8h3z/+wuzWOZNSy+jjPsuHesTqE3pAsYUgKjmVFkKnUyRM0iyOu4ltpUhcDJmGk8Yysv7zPL5TsHc+v5PZRoqoHpkhNazMRcpk7yczfdzyePnXeKJuq9LlFJaxmPzcj+OcUClcm+y7JOUFCnIZ47MJEMxU2iwTrO2A9YZ7jYbDgdhna+VaMmZ0mgIIZL8LE1AJ+e4gPhZQMeY0HVsKaZFDB1jsE3PsDpH2Yam7YiFwZCBbC0xiDRGlZtIScbLrXMYlMgqFYYoBYxcWLK5FhClEEEVA7Uy1lX+k/MiiW5wjEzzjNW2FNZqicX1+mpt6bsVCsX+sGeaRnLIJf0Q3ducM8pHAUmVwjQtm82Gu8OeqBVt7ggxcBgPKKM5O7vkzTeekX3k7vaWcZqIUWGNQ7tSUJX9I87DUoxZDY3RWHJxc09o0wjDMQXROJ0nrLHi+qqFSa61Rlth5LSt6G75MbCPO2m2TImYJ5QJBLOjW52xfjCgXeT//pN/xw9++H0ePbzk1avnpDiT4oxrLKjMnKJoGBuNaRs0pUmgJTqIHu8djWvou4YgFxZrFF2ri6mbgMCudRij+OTjj3n/B3/DSOByeEQyCj97dvstF+fnPHxwztXVS0RK2TD7wKeffcKb736FN5894W/f7xiGx3zrW+/x67/xn/GtX/h7jFd7/vLP/ph/+0f/Dy+vtphGMxnEUKIboBm4aDoaE/jgP33A9icvmLZZmurFIXH3ySu+/53v8fGLG3YRojZol2lwoDMxWvw040PAxch0mPDTHuJEGCPvvfdLvPX0GYfdht1+zzwH5lnY6NY6mrbFGsO034um9N5zhjDc77YbRj8znK1Zn53LfvQe3YOhivJnlI7EFPBzkBqu6NoqA5iOKWoxsHOarmlYrwY60xImT9Ia1w2sh4G2s2wPB9arNU8eP+HJo0c0tmEcDgxNw+aw4/aww7bigJxy3esi7zBOe8Zpz2rd0TVy7/3kOEwHbnZbmVRImbxO0A+AKfmfksmCwoqN3hOnCaymsRptHVkpQo5Y00MsI4dzQKWMUTJSbq3lcDiU/FlyVNu2YgrRdbjWEXJktxvZ+D3kjDECyDhjSCGJeUCWZoqqcas28IzF1JhagKx4WsPrKlHwWiNJIgQZmY7J+aijjcrL58655NUIoGSLZvdRe/c02ylhM2VSSIuWtZ8nyRkIGA3OCnNP8m8523KukwhSr5zGX6NNAVJUCbN6kW8gFzKDQsY0jVniYJg9aZ5FN54ZlOz30bY47bCIdp91Da51YKQOjsnL5JAV5uRqdS6NElVYio3DaUjI2aeWOC6GRipJ3haUaM3ZRsxEohdASozA1QJ6Vtd32zQCRnYddugYpkAggDbSqCsNN+ss68tzActiYJoOxOCFnOEn5tkLkSZ4cozC8objNV4AXiGIKJWLpI+YtFRCkjLFDT1GMmW0NZWYnzN5DoxEjFI0rUgQBQKNNvjZM/sJoxRaD6KvbRMZDyljcpElzDKNRa3BlUBqNcdWFED6JK+QEePKyk9EZUi4ZbyW0rxTSou2YNXRyTLpJW0ziUMQabQpXzGCb5U8XTab4APGST2utCqTM5T8RrwFqmSKZFunqshqAZh/1uPnG3HViCMNwhypBXj9PTlXD0RJ/HK5sTpqAT4A02j6fmBYr2j6Dkxm9jMBL7oUiqJr0dM0HdZq1uXgXPU9rdVYEiZl9BzJIXPIEzFFPJlkLdkFohHa6ZjhYFeMq47kRuY041XGBY+eZtFLC4ndnLjdzGAaYtR4r1DaoZxlNAeiKTpYPqGzZrAdg2tpleYLTx7x6PKMB5c9rs3EeQ9+RDGTlMe6M5JpiH5mmvfsQ2bOCp8hzAHjomhslM5G9J4UAslaAhGfM4fDLfMN4JDZdufoiLh1x+Eu8eL2JWueAtC2E72D1iWUasimZfSGGEVPLZLZzhGvE3nliFNiCsKqSuXgEbdIhU6BQcs1t0ahVCSGER8Okrh04ixJBnzC+4jXRgRdtaZzhn4F8zizGjop+htF0xiGVYuePCFMzPuJaR/YGYVvD2IIERLKOA6jDNKkKPpmwXuSyvTGoJ1jaBxOK1qjBeBUArJtdWYm0cZInw3BOLK1zCXIqFK2hySjNKKxoI9aC6gCtO3JJ6OKUXWkPGOIImRbKLvGNrimA2WZU8A2BjesUdqRkuJ2O3J3e8vsA+v1Bedna3SG5APV2TNHcTQzShgqykgRLWAhhVFV2G05FwHaYkpB0TkAVEr4acQDMclBGHwoHTXRTfAhoRM0VsuhmktRF+XgUVk008Lslw47Wij+x+JCuvs+BEI6usCGnFFZOkmKWugldImoKYojUfQe5+wCjqQkh37OMtLoQwLdFj1GB7ZFNS267VCuFbOTUtRmVenl9eCLqCygE1GKGaWgUiM1ZdQ2cuwinTx0KVyle6MXPTmlijZFZdOUZEArcLYUQci/V90AbAFodEY1Bmd6QnTs93tuNzOHw4H9YcSHIGeqdXKWxkhWCqMsbdacK8egDH3fsZ327EImYIorIliTaIwAPqlt+SAmdDQM58/oHz9mfXaBtk50W5SVseACHM8+oHSmaYQpO88jWsG6c5xrRaegbxpySjz7yrt47Rj/9vus1msevvGEX/7VX+Vr3/g6l+cXrLue4Ge22zvOetkrh9sr9psbTA44lWGeSfMk7tHdSJo27HZ7SYQ2HZvdjjkEMon9uOV2v+XF9S1bP9OcPWToV2zuduxePidNB3ScZQzAF2ZhjOJiaQ3OSkJAQtgihdkp4I8E0lq8ei9dVBm5Oy4I21QDj5NAWhmVBXRa5B2oYHNJtk6Cdc1XcwHcAAHxChhM6WDW0Vcxf89LJ5F8HP+ubYVcun7a6AJiZWKOwi6fRq6vrpjmEW0leTDOYqwmJjHgUWXfGCVyEdM8cbi9ZdruUGRh1CHQgU8yimKUaMPdbfeiu9p2BVCScZJEWpJFgP0ojOzaFJCzwy8s4JpsVd0zSXJyKezt8loyEm6OY5SFWfQ6aHfaZc0oYrmuyziProLd4iBKpmjO3B+zkFFNEcSvwOIp26wmskZpWRvpyICq60Bgdl1bpWX0s4KV5Swq9wEoHVi9ON9qpaCOgGYZQRHjk/vvtTYI7o155Lysy/KshR19OqIbijbdohOTMqc6ZtLkrWO1x6+rsg90/Vktr1tJoVB1UosMAEVonFQS5JOkWhBBuUzZyFmeJaP0aWY3ZVxuBLhpWrq+IaaemBPTPLPZCYjb9wPaORGkjgIC6JjEPbQ05FI5I4QxL+sgx2L2kjSrs4d8wQ3MfoLk0SW2OecEJEsCpKVYtJSUwdoGZ1t8TkSigPa2xOqYsUYL8BozBnMsdlJtForrutWW1rVYZQl+Jpu8NChVI8/JFFfaFNDK0LiWZJIYrmXY7w5oDEY7rO24fPQGbz37As45Xr54wasXL8X9VWtU25JC4G6/R48T/dDzxS+/w1fffY+33nyT25fXfOdPv4NOXVWPL9MAkYSMS6UcBWQtDiAORacVLZqQE3cHX8BuaR4mwDUN1pqigyQ5nnEatEGhGYYOayxhiqA1prX4OBGVxjQ9Y040NoCF7/z5f+T97/8Fl2dw++oDXnz0Y6b9RpqWJnMgs48RX665daJdq1CL8cgcPFqJXEtnG3zayxRCjigDZ73l4nyg7weefPFNzHnP9773XTZeWMO73Y6ub9EaDtMOd1D0Xc/FxSUvXlyTlSVkuL55yc2rz3jvG18jfPtXaFvHb/zar/DW06f85Ecf8H/9wR/x53/yp5gAT4bMq2nLzgRyf8mdafnKV97jWXfJhz/4az76i0/Q2TClPbrJNNnhDpnn3/kOf/Fvfp9diIS+geCLDI9oVBmloZxrNsA47kgHSIeRPGZerj7ijTfe4umTt/ib939AUlK8O9ugVabvexpniX5ms/O0rWW/20gjK0Vx+F6tGfqewzhyuN2ClzrHakNKnuT3MsLadIQAjTvHrlqmeSJphTcGHz2DazjrB549eoxCs7u5BWB1dsZ6dUaMAa0aunbN0K1pXUvjLCp55lahJqndtDNkZYFYphAyMc3sZ89mbzl/sKK3HX3boC7O4C4zHaTZd/XZC/ARjca1Pcq5pYntw4xRijgeuJ1H4r7n4uKCdtXLNQ8ymqOUprEOnRWpuKCfDStyTkyHUbRgcyLmhLMt7dmarpe8o9WWeZqY0iwAvbFkI8aIxinyNMq/UZROCEkjU1jW0q/PoUyChBhqwFhGWCns6FyalxZV8AcFykjMAeYQGIzkxZMfBWzICWOssHazEgAMLYz+wj7Tpo57mqXxkxJUB2wh2oBSgZy8vKaEU0KItF1X3LHLKK6qrq8S163S5FDOCeXE2MCH0lQCaxDjmlS0P7NMZKEth3lEqTJxkWdiDvi0w2qLQ/ZLNmKoKDH72BCsMhNjtxOTkFZku6Kz+OKijpGqJ8QoBntKcq2EfNbTXOO08RdTQGkLFegssT2UnDJmJTICFUjKAjqJeUsEq1g9OAMUqyi5rvdejCdCEI1/74lxZnN3B6VRlYInxIk4e7yeSSZy1OyLxWXclJpU2KRNNxQzLeQeIWzJeZqZ55EUZ5rWoKwhaxhSz74/MLQ7nIaQukKwmImqGGxGjYkZ7yMTYsphrcVqWyTJJNdGKTGaKku/3qekQBUtPZWdtF5tLFrRR1JFtqrMASsopmloRQrS8MwxYbKYiizj6jX5KfJJPno625QReyHlNJ3HOEOahIikF11EyIsaZcmRFjbqT3/8fAw6Eb1AKVPor5LQlibracomgTtndM6S0ISI0Zm+aVkNA0Pf0w4ttjGMk0HpTkwZmoambemcOJIYazAKKR40mJwglqTY6qInl8k09M5BYwnKsA8zkx+Zp0AoOmIqG3J0zHFmmiJpCsR5Yt0PGGUJ1qCSxnvYTzMJcV8NeUI5I4WCchgnAIHWUkjfbQ7EeeL2RoGaiWnPwd9xu9+wG2f2cceL65ccNlvRcAuBMI6oGOmb4m4TYZ5i0WECpSzGiqhpLtoPsz8wjTvSvKKzmqYxZK1588kjnDveXoVnu9lwO09EFLPrGUs33pbPoIwVQwoS4zgzBU+YJuYoxY7SRR8rRwajWDWO8/OB9VmPawztsGYYetZnvQickkg+Ms6eaQ7MYxD2U0ysVh3r7YGmX6FGob7/f5S92Y9l2XXm99vDme4QETlnscQSKbElGW4LbRiG2YZhvxgGDPR/aj/Ibzb8YgPtqbvlblFqiWOJRbKqyKrMjIg7nGGPflj7nHsyMpJNXyCRkZH33jPtYa1vfev76q6l7XYYbfnyy69AaXyQRHOaHMfTmb7viVmjVCPiq9aijKJummKHbdFaajzkiEseYrF0rip8VWNrwzRNhFHaFdqqZrvpqCpxWku5sDNiJMaiwZbmpMfIpMzg/MVZLOm6BPpCFY5+omsaKl1Tmnioaqme+xSIMXO4P3M6CVCz2YjwMhlplZmrQSkuCLsq4JHRYn2eSjIaUyJ7L5vU/LxXLIW5bW1pWTGKyYfS/saSmH1AQV99D6wYIlCqT3oRVJ83WNGRuAiKzn30yhZqurmwOJQSOHS+jllvSc+VmNWx06JjtyxfJGXRpsLUDXXTYqumCPAr1mK1cry5ulaAjJVW5gKqLSyRvCTes8j/fO2zQ2LWM+NkTrAluYwFVF0ASKXEobWc+zgMnCvD03J20ziitKYq7coxJerJMUyuVNhkh5MW93xJipM41u03W642W6qqJjqFi5mkLJvtFdtzRiVxft1tNphmx9s+8qdXL/nsz/4p22dPaGtx1ox5MSIDwGUIsZY1tRDFYmxRQKszVQabxS3bGstn3/2MH/7wn/Onf/5PePLsKU+eP+Ppi2c0nSRw3o1MfY8/nTmfTxgmXH+P60/k4CF6VPBYlenqinE4MvaDFH+UQduWfhj59s07QgqEPHIces4BdvtnbG6eMwVFZKRu9sSsSE6R81BaWjMJhdIWaxtUTXHOVbS2IitRMpVnIQFgzAJcm8aijQJVzDfmlaC0aj/UuViPpeX3MqALY0ZAtffaJNeUKyiM2RXrqfyZ5/vi+ljmiZ4/X0DtBaBSFpS0wVOA+JgivjDnbF0vTCY5vIz/tmmE9RQCfnK4cZI2uMylir1ca14q7MEH+vPAZqOoawk95k5KlVbTEgjzlFQsQvtyLRLjzDhNykW/qtzflBI6XtpH1+3383sWQ5o5gH7wfB7+bjE0KOCXWhVf1p+bf56/e/3/8+ux712vpzPomh8EX+tjPGzZeDiu0Po90Hd9jIet+vPP6/Naj833wLvV/68Bz4/du4fX/Nh5L+2wedXmUUwy5tbrRJLiSJkjyx6kpEg0V+4zpRCiE8oIu9r5sZSAKe1qhk3XglKczz3BR5Q2tN1G2oKSmCEZopjsaC0M5eDJKVOZCtCEItNBzhgjsGvViOujzoEcRhSSiKoswbvRRgp5pRgdYkSn2dzIXuZwnB2A1fJHaTHdMgu7VoJ0qwyVliTEalNkR+bviYWhANJGJrG4sNTfnzNz+7FSIvVyPJx48TLyyXc+5fUn3+Fwf8/tu1vGceR0PPLll18y9D1d1/EXf/EX/PCHP+TTTz/lq998xS/+4RecDifC5FFJmOw5KzGFKPlMTKUgokuhL8l+JN51BUwsSUiZUYs+kTjAzrFCAX+LTpSsgWJm0HQtlaoY/EDSCt00XN1cMU49/+pf/V+8e/c7du2W4923BNdTW0VlDaa2HPojWStq21C3LZtuS9d1BO85HA7cHw/U2ohreU4LiOG9o8st+92Oq5tr2qbje9/7Hv/xP/1L/s//5//mHz7/nJizkAeygOrEzHk4C6vpqaZptrTthmGYUFUZx+OJZzc7/uy/+28JfuIff/Fz/vW//D/46osvOHz7lsomcaw1iU7D2RjMpubVZ5/xn/7n/wW/+fXv+MlhYMcVo7sjacUYRhq156rZsidjw8TkI05FEh6jwNoaa8vzR60d5AAAIABJREFUIRK96DebVhJkhWIaB+5u37BpN3RNx8uXrzkcDmRbYTpFZTVt06JUpKorum7WUBPNZK2Eud5UtsTmEr+cDkc2XYNuOzF905ndZkN/nsgaXrz4hO9+9n1GP/H1N19zON3L+dUVT29ueHK1x7kkLKi6ompqYs70w0hVNaSY6U8DKicqA871nO7uOJx6YjLgfKnNZlKSFnCRGYFx6DmfDtTXhraphdWt5Fke7+9Ig6O/O2CVgeuy76aE95PoIuKksKekdfetf8Ph3LDZbWjbDSEKyJFCoB/OxBAlf0sJ5yZxL05eikiVpukaNtuOdiPdRCopalPRNLOpjynumsUAwtZYXSQilCEXs6BYmM92MV/JwsgvUgqzu7YAbMXAQSuqSswTpZsjXDQ+Z/Ajlbb40oJ/iVpkictz/T7nwgYXAEQVMEJhJMYqpcaqFpCuqqyYExYNWlnEZH8WCsJFG3zufJHVpOzjhRCglLCQJe8veqY5X4qf86mWwlIMDgylACeyQCZDyoEcshBmuLR1PsyV/DBiS1v+bNSwxCpGg5F80BiJz+qqEuyiFLWW/TNL2TVlVfY5KQzGCBgj3X3lnLNSGJNIZKKXAlIOQVjCSjoba2NRtrDuLOiqpimaz7LtJFIOPOl7MiJdFb0jeEdwoxRTUsK5cSmipRLn+ShswJQKBl0AU5WExBRCwruM92JU4r0j+UuB0g1e1gxaMTAKgaSCMBNz0Rz2Air6FKCSnN9WFrsqCKriZJtLAiMdDAWoU7JXmmgLsBZL0fUiv5ZzJhViy2VOyZ6slZL22EWKiaXoKUW1ucCogUIq8Q49k1jmWEolub+wgK2ouaF8GYx87PUHurheNFKk4ntxbqFMCkmnMymWSqtSxCCsoLauudrv2e/32MZiCzvo1cvn2GXQmhK8lMqmVgxDL/pS0ZFjQKPYtS1NvaXuOnZXOxGyrGp0U5O1ZYye8zgxTp5+EFBIZY2KiEvo4JkG0S46nU/4XEzDkhIaZKOwVtNaQ5Nbtm1Hu99Sb7fUTYepaqKPBOeYjvd4F4mnnrE/4HxPzBMhjJyj4n6649R7DLDf79Epc8qZMEwC+GkBG7SyAuKWCkXKmhSKZkoBZqJz6BSp9OxQlnhyfUXVaL7mLQCffvKa4XQkDD0hwZt+RJnSAhM8IY7EmDn5bws4JVTjyljqrmGz2dB2jWiIoZjOJ0xlaboNu6sb9vsNm23Hfr9jt98ISh4cbnRgHEpPwESeHD4HpqAJqkaZDsxEyBUuGdpK2kf2108ZfeZ8d09/OItsdIhFGFpccEzRddNmHsSyeOUl8CugUVmIfVaMahTQxQUR2PQOYzSVFfe2rEVDq2nrYn0dSJO4/Oac0QWci0ktLn4Adb3BWHGUssZjNy21qVCxIQSkml5Jm6WfAv3xxOl4xjnHdrulay9BEumSFEGWBFYJU0drvZhZkC8g0zyR541i1kBaJ2bz/Ug5LyLw67andZL6XuUGPvieNRNmEQpfvTem93WhbGnFFXbKim2xAhLnpHqtgTS3aYV4MWDIpcJnjRXWRNPRNh1VVYMS12Bj1kmkYl6EQW6xUnOb4AyeyJ+81DPKzx9fHy+fpbA/Lp8ihaIbqLVU1GJxoEsBcuC73ABwfzoLo6sWs4cYi+rHvJZmqZSlOK+fRdPMGtpdx+7Jns31nqQtIWZGF4hRoW1Ht4HoI3480TbX7DbP2bbP+P53/4Tv3NxQVaaInV4Auvl6OwXZCDki+FWin+RalBbJAaciSYkY7uvnL3j98gWffPoJTV3jc8RHxziNHG7vOL67I02OWkNlIymciV7aZrN3EDyNNdRaFcC1om4tPoALCR8z/eQwlWG7u2YMmTgO+MkznM70YyAMI5WS9vLoRNNT6OQGrSppqbKNiJZHV9qua2mdjrNrmSZjxek1ZbQVMEGI4o8D1g/BkY+Ol+X/58Dr97/v4TGWVkQ9t7te2l7nMxPgTAohLMGK7J4xihyA9x5jDTZapuIIba2lqqvLnAse7zwxiPZSjHFhgmEtGi7gtZZxKnPYL+eZUkYXAFCBUAPnObNab9bXOB//MfBz/bv1OjW//+G/YW00M1fpf58mHctn1vf/o0DbR57Vw2taf040vVh0N9fXNp/rY2vvY2DcY6+Ha/X6dSnC5Pe+97H3rws187HXQOFH9fUeOZ+P3RudWZzXLgKv7324fAjEqGl2C4zEJMYBUrwMeC1Fqpwz1liEJCStk6fTEXKmadviQqsREWeWtpaqqiUZpqyxlRGx/mINaLSWfcxorMpkPzPelOj9QtGIFafwVAwPMgpdWUmmlmRufaXlvq4+G6PsH0anBchcxtDc+lnawcV46pIsPAqSPhiDOWdub9/x1//mX/Ozn/yY5y9e8OzpU57c3HDz2XdRWvOLJzf87Y9+BCkS/cS//9sf8S//9/+Nr7/6mtPtEZEkLoUCA6jV3JiTDW2K6VomOk8S5zGslcJ7iJEQUtG+nTtlWrquwdiLjt8cGwg450g5sdluadoGFycO/ZEpOExVsd1u8H7kHz//R4J3pKbmfL5HdrgSZ0QgQ1NJi2O72bDfX7HdbhdR/uHcE4C2riVGDrL+hSwCVqbquLm+4dWL1+y6Lf/u//0RP/77n6JsQ1tXtN0GHxJ+cESXMUW3OWaNqWpevn7F8XTmybOnvHj1gpvra95++4bhfOaXn/+Cv/ubv+E3v/wClSKtragyosdqRYPNmIRVhj/9/vf53mff5ddffMnx/k6cG2sNVU1KE9vNhv1+h3YgrCAPKsv7CttGKyNO99GLE7yCpm5ljilh4Nzd3dE0W7a7p3Rdx/F0EuMxZcV0pjDQuq5D68z5LBIGOSXJm9q2mCoICNCfTgzTgLbXtF0nxTFtMVrRnycpYhG5ut7wpLrCxTMxj+STYxp6vvrqS6b+jI9wPp+52u25ubmh7wVgfvH8OU1T0dQVkpPGRdJEa0VyEaUiySiMFWMYazRBydz1buR4uKNrWrquwxrDbrMRplUI9O/umO6PHGMUIok10vFUnDadm2ibhrZrUUbRjwOH84Eez43SVGZDDInhfFpclrWp8THSj4PogiWxOGvqms2mZbvraLtO2I6Ror9WWMxJGFnOR7SWFtzL+p7EOTOX/TCp0lasCohUGNKUQngWZqOxUqxQmCWmVlphsqaqq8Vled4PhUAgy3ZKGVRcrUul3pIBlZg1WmW5KhrRaob1pIVxNsNQWosOWhRtTl1M/t4rwK1Akvf2nVx+vuxA5EIWikkYTA/3cq1VKQqmi3RERjqJ8sUAKfG+QeD6NV/fYpizikfQAvKoUpCQokS9/KyUoqoq1gWxWcM7WltYqaroEGZEELQUfmNh8ReJnxgjMQvJw9SVMAopxA1VrksV0LTcHY3IdOUcIQZiFK27mDZQ8jAZWwiTO0V8iPgQhCSQEsM0FfZdIZGEkp8Xw6QZUPVBWNfeR2K4OMjnLGttzFKgjSGRIgQvXXMxO1KKJKUI47p7QH6u6lriTiOmMraSdVNyHE2rG3RpwVaKAlIXNlsu0FkWIp1WCUUs3ycsVStbd7lbZdxqiWNUAf2tEpZmCAGdtIC7RDLxkjxm6YxROZNKDKSWCfPBsFpefxBAp7VU6xSzbsk8O1getlBP58WxJBQpUlcV1/s9T66uabuaQIQUxTwieqKOS3vnjMBrpHVIXG7A2j1WK+rG0jVi7d7UNburqzIXJdBS2nJjLEl6Atm0TQmEEsM4cTyeORyPnE8jk5v4xD5jdBP9ODA5x+hHTJSNZmM1z3VHa6XVyI8DgxsYk+fUj/R9z+n+Hp0ycXL44UQKvgQllmxrmrrleXfDbtOyaTt8fwYfGfNR2hKtiL/b4hwWsi5i8pFp8oXqGzF1XZLbAEkE4l10qKairavlOb1+/ZIwXaG8IyvNJy6AFeHGYfI4J0yb4+HM/fHAODhsVbHdbnn2/AnPnj1js92WqlhZ2LUt7Maapq7RuhJ9voPj3bt3jJOj73sRrXSe0Tuh0/rA23d39P3A3bsTbkpYq6h9QY91JiRNzAK2hJjLBBM3pqZumDUMVVnQYzEbCEFAkK5pBdRCifW5D0xerMpBldZhCWqrpioOSnFBKNZJhTYam0U7ymLBWkzOJC4gVbu5ottattuMVSObxjKeBoaDK4GqJavINDmmYeJ4OKCQDb9tW9lw0+z0qeSaVxuQzNdLUuhdaU9grvCsxDpTErORsmHNgNf6/01thVpdzAhEUH12rNPS3olaNs95Ts+vDxK3GSRYQLW4JLXzJmVLlf09Z77VOa0T8CWhU6pUMOT5KKUwuhIWQSUOyl23oWk6jK2JWZFjJM+PJquS3Lyf4NolUb7wGBaQk/cdOpf7XkCQeTF+D2j8IGG+gKZyTNk0QwwM07i86+4oDEplxJFXdIX8RVNIcTn3IlCqlKFqarrdlna/xbQNUWtcTAxjwEVFzpb9/hkqKXTaYNQGa7b88Wd/xnc/ec1NZ8lKBJ5FfxLiXOVEQJ6UwbvE2Du88yiFbMB9T6UTtQKiaHacj/ecz0eePH2CfvGcpDLRT7SVoalq+mlkunuHyaBrQ44e0oRFHCW1bYlek0NgGke5fdoUZpu0WJ7Hid3VDS9fv+LqakP8/Bf89u3nHM/vMHcDKQt1w6qMio7kHdG70ppXWi3RJKWluqcNSht8hslHEgprlCT8piYSiDlhkPbLmM2M+1+mwwPw4eHroRPTBQzJv2/vfQ+cnj/3/nFyeVar8V3wDXHYFM2rlDPEsFQBp2ngdATvpqIfJ4CG0UZaMWxFTJHz+YwvDGO5EEnE0aoYDMSiuzH/d1rG5rJmFcBbNGrmNfdDoOZh9Xl93Wtm3JIArALeNWh0YQldHJPXgfEFnFIfrDcPA/T1+X0MgHsMwHr4DB9+Zrk3Mng+uO4LGyF9MHYegpMzePX7wLiHn53PVfR63gdsHmPBPcaWyw+O+3B8P7x3H9zrSzVEjjFr1T0Caq4TJqVn0xC1mIOoJTkrreppbg0Rx/Gb62tO/UB/7jnExBWKpm2wTUPOmhQDPsZS7CkurUEYd0YbiSeUgGJFbVyeE5GkNbqwbS6Fshmgml1nAwSNykmSSiNmCDnNidd8j0oSNCd+WSQtVNmD54A/L8+M0kJsC+CoRK8rZVLy5Z6smfEC5qXSZi2mbKLL159OfH5/xy9ypmtbnt48Yb/f45xDK+j7gb/90Y8EmLCG2ta0TS3tpd7jg1v0rGdBdqMtVS1gS0TkKYIXHcyUM7aytG1LX7Rv5XlV1I0pzBwjbeTl/K0VyQuFaIRNzuHGoi+rZX+11rDfbri+kRbHcThjlOVwd0fwE8aAn0ZiTjg/yTNWGqMUOSZx8C2sk1k3ygfPxjTkLG1YlDG42ex4cvWE/f6Gqm65O/X8+KefczqOxDGhMwxhoq1r2nYLDQQ/UdmKXbfnxbMXbHd7tDVsthuM0dy/fcvnP/0JbdPw7be/45vf/pbz8cC223A8HmmtpatrqrbBeEWlEv/Rn/85/+wv/xMOd7f8+le/xLmRu8PI/rqmbSqybdhtt2idGYcTxmRqK2OptjWV1Qi7UREXrd9SJNTClqJ0RYzjxNt3tyIvM8cn762/or9cVRalWk4FwNPk1TgV9lbTNDSbLddcSw4yutKmlghBnmXOmd/86nOG4YS2WvS2FQIGqsjtu3cQI5tuy831DdfXT7i6uuJ87qkqkVDSBnSKYjwRJryXfC4laYGcXTyNylSFHKJQS1fFMAwMQy+mBElRVxXbTQe7HfU4cTzcM9zfU1XCGrRtCylKp8Q4kMmY2mBNTSgOuUZD0IpaQ06JYRiYBiFMGKsJwTFNg4x/RIO7a+X7u1byH601jamk46kAIDEmfIwYk6gqAepCKagmwOiLYzJG2siVKsB3zuQs8iESFwhYWTetrIM+4r3omtV1jTZWigLLkr1qL1z9W6sLYKKY17F5z2EBQ0QPVRct0hLb5AvYnxDmsw5BgEGjl3xjdRLv7R3LPpRLi6ea2y8lbhLMQl3aVJf9uhhflW7AnFla8SWOEdbfRZbjw33v4R44O3m+V+Azotum1SwPVuQytIzBuhRLl/ypuGXbwsazpsJUltpU6Kq0tTKfJyJzRJZYjdJ5CQSk7VXka4u2qSrAGTNAJRIXkFE5LiYVVt5d9mQjhKGUSpE/FakKiUdFS1tA5BiD6EmXjowYR5w74sPA5AIhBequoWmaAuIb6rohBrBVI+QFL/lKQu5d9BMJj0+iG6vLvku5NGtrMS7BoCpheWtbxkDWOF1hMGidS9vxRSoFhLGptMIojVJzuyvyfgWbuhGAUlAuuXMqk7UA4qiEMWVOCI2QS3GuxAfzjq4uALKoSs0xxMdffxBAZ221BANyUfOY1YXJJIukBB0yl6wxtK2la1v22w1tXUllUmVsU9N0FVkJnVshgvRzdb+pamxdo01F0zR0m04WxkrcoGIqlciywOecxZAgQaUUla2olCWcTxgjlcjdJtNtG56+1KS8F8Q2Bs7ngcN9zenUcz4b3BRQGLZK8zxbLJneTQx+5Nb13E0j98PAeeyZhonW1jS6RhdAbttu2G13mKYlNJUIzsZEdEID79oWk7PYaSdJqAIiFu2c0CRzzigSlU1S2czgpoFxHNi4DlUZSaAmR9Krx6uUmAmUBUFVAnihlIh4K9EBclPgdDphjNiC103D1f6K3W5LBk6nE8fTxG+/eYuLmeBEBFyEfKsyBjLOe9GZGAYGN5Y2jLQwuI7nMzkp3DCWVsAJ52SQVMYyuZFx8lR1S2ukYhCjaDGE4Km0XRaimRRtlEIZRTaGuiqgVMiihRaCtGkVRo1WStzfmgaQdgsfA5WWxc/NgZrW2KahaoRGLHoBUFdbIhcAdLd/wsvvPOX5y44Uj4TxjAvfkM4RY2o0iuNp4O7+nnHqUTmz7Vo5vpYg0VQVIK0U87HNrFmgistc0QHywS/tIDMAF0LAOwFTZntr0odAwGUjkgDL+0iMcwJV9IaKDtfMjp2rUOUbmPUHlgT1kUR37fwnela6AAVSSWEF0D1kpizMFURKM5a/jTZoa9FWrNabpi1sqxplDCnNmnNzVWOdxM/nntf5Yfn3JbjIICyqRzbdS8JYFvol0Z21+gooWazrzRKkJHRpk84rkOfQ9/iZ5aVmirbMxVSYdEVoUARiS9ujqSqqrsU2DViREp+85zw5fFJo03Bz/Yy2bthvPP29wpqWP/2TH7DddsuVapk4Mn5SYirumC5kqeT2A/f3B8ZxICVx3xtOR2yMNCiIkbE/c/vmW4b+zGef/RGvn95gW0MIDrPf0lU1W6UYrcZmqDXinlhZAearCqsUfpw4Hk8M5zO3d/c09aYw5+BwGrk7nPn0u5/x4tUnbDYt8Wefc/vujslnNhuPNZbKGIzVdBaShnMsJjbRFz2jmnazQWuh+ltTEWOiDQmKtkdM8r7Je7JS2LoiMa9dF1DWlJby/xAw8yiAlyHz4efm15rBtWYtLe8prB4ysleQSmVUHNVERyYuItQqyd4YQ8C5iRA8i0ur1lSVtPq5aaLve8Z+IHgPM9hVjquVJmsZKxFKO55aWk9sVVG1NaaSNj+5hnlW8V5F8GMA3cN78cGty2uG8YdgzrqaP7Nv1r97uEY9BvY9xip7bB1YH3/9+4+Bd+u16LFjrAsWD7/vIZj48Dgfu28Px9/lHNIH9+Sxz69BQ2l5+vD7Hv57DTA/Pv7zUqQx+pJkvQ/KzS60eQGtSJFZTFkbu0gmpKJNmDM0jcVaU/YZxaYR7aFpchyPB5Tas9mIQ2dAE0Ig+Ai6MLg27XLuFFaH7L/FKTUKwySHQC4MurTaCzEIcyF40brL0lUS4swA8KQsx1taywsYp5W04Iiz7ZwoUOIA0TrKSxExLTEApEJOLQyYmJa92xgjsjDGLIWnGANaWym8dh2z5iDFvKk/H7HG8uLZU051xZu3b/E+sGn3Em9r0WQ7nWYnZYqOrcQVxgjQpoCo5Z455fFRmBJKizGXL3FWXVc0jZh9zGPNl1Yqa+2S6C/PmVzYwZq6sez2e5SG7W5DSoE33/4ONw1YU/HtN98S4wQ5EPzIdtvhQyTmRAyiQTVNjnGcGIeRrBDmY5b2t6qw8rRSTGOFqQy77Q4dNSlAt7/h4N5wnjzG1myrLTqDyVb2fFuz3e3YdC3X3YZXT55ydX1FNInz2PPTn/2E/nQihsD5dOL7f/zHvHjyjNtvvkWjiMHjgqNta6JRvD0fOHvP/tVrvvdH3+V4e8df/9u/4+c//bHkUEYznM7EqkK1ord4d/uO9LszJE9lwcVQTEdEr4tEYZiV+Z1FW2yaJrKCptFkJB6YXCJlRdvJPqqYHReFIRKjfG4cRy7dALq0xTls1dB2HdsnV+yv9rx5847bt7fYqsJPgdOpL0WMRAwT0fcoXaOSJ8ZASGLocbXbst/tuL5+QtN0KGOlvbQyPH/+lP50IsXANIyc+xNu6Mk5oBGnVLSWGCsXECPEYtQgIHOOqXQ+BLk3MRNUQitNUxlsV2NCy+35TH9/yzujaK+vCUlaVyExuhF378Vkr1LYrqHebam2HXmCnGIBLCJNI91S3jucd7JGqIytatq2pmlrafe0olfWNHUhrepSMEYYRyERU2YYJs7DwDg6ctGBlLVGtJHbtoEshmQhpKJtbVYtmWJulxLkmFFVxhr5v6SkpV/2H9Fqo6zRqnQAGVOREbB7ziGUAmUUahbgn1f3nBeQf46NhGxB+ZPnH8i55Ajl0wkxLVj2znhhYb23nynRY82FPSRZU7yAXQVAzivmXM6SX8Yk8h46z2xBXfLB389Afwywe2/fjJmYM5FwAbsffH5NcDBW2FtKa9E+rSsaW2ObispY0AqrpJggximgk8TCBoVOHrzDWwvId1tdoyoDqrSHIutqmOMDZP5qpABT6CLEQDGLkLZiwZWEHZgpe/eK8KLyTK3MkD3TeMC5nsFNhCRmMt2mw9oaUEzei9SLNTRti8uB5NPiRi5rlRcAMCOyH0kvcbXzQaSB0CgHypZ2ZyUbr4uz/ZfMaVNprC35ZSmiGmMwdS0FLnQxFgwEIGoQUyjNXEUrcoLS4aLEIKK2IpOgCnPcFOZ7KIXrpeymilwMpbi9GguPvf4ggE6cN+dEGN77xkcOoLWmshWdadh0LZU15BSx2rK7ueb6yTXdtqZuKgH3lEJpcVqp65q6FtHdqaD5yogQfEACkmQUGMOQisvcLNRMoZz6iNcZX9cytVMQVll25DSRghfhyKyI5550HonnEX92DH0kBvAowvnMdVdj9hu62nLTbNGdpe4s26mmrltaW2OxwsgIiAOMtkSl0FYxDWemYcRqTdc1bOuas1YcvGccR6K1JBNLi5EjJqEpz735OQpg6F1kHCe8C2IsYSpccutuInwSYW9KhcJqg4pBKmGFWt2Yim63YdvWWFsTcyRnaedww5nRTdy9u+X+dOY3X37N4CLjeeQ0jMSgoLTkhZilzSBIpXMKEymFsliXSkmpXrggAsl97xmSIwYvVU0ti6/Vc2uo2E7bsjg31iwAUSoLZVKGnIUVaI0trDmPG0bc6KR3PkhzJ0Y0p1AiHBkz0icf42K8kJVCWTE1kOkgkzGDAJjxgrQ8ff6aH/zFD3j6vOWbb37JL376dxzHkYCi0orJBY6nI+fziZQi+/0NbdNhrFmq6dZIUuGdW4TSl+RRUVzz0vL+9Z85qfNOXHmqYioQvX8P/JkXex+FBZlXyeClevARUGE9tclLe9tjLJT5eHDZmGYRWDmf9xkvy3eU1piyfCxadjlLxcYUMX9jLLZqqJpWFnQljlJKm3IfL0lwsSB6b216mNQ/fD3c3D8AAbRoIiz23/M9Kxv28vnyzNSKLbMGeYZCC4/SBy1MjkqCBwlEpC06p0xUUajoSAXUNh2mblBaEYHT4DieekbnCanCVjXb3RXbBmwOPH/+gk8/fVKeS0acMOS8XUoc+57744l+mOhHj3NOihTHI0MvjmLTNDH1A3kYMDGiYmTqe27ffst4PpPdwJ989xOubvY4PxJOR673Ha1OvLzZoUMiRYcyCV1VogdUxq94VIswOlk26Nv7M/0UOZ5G7o9nuv0Nt4czyhhO557D/QEytNZg24ZN1VLXCmxFnDQ5BpwbcD6CFraCrmtyiGzbTvSjlKaqO0LKnIdBwj1t6CeHNoa6aYg5orTCh4vu5HpczINrYSOValuZLJdXqaDJuLwA3gXpY/7QLKy/zA/mavFlfslYePD95fP5g3/P5yjATMpZNDtWLSrTNHE6nuj7c3nrfOw5dlZLYSMV4H8OHOdzr+uGumuxdVUqxMIInu/NYyDXw3n4EJRavx6C+Q/ZxQ8Bt/kza+D/YQvpw3NYg3Xzvx+e28OfH37Hx9p359+n1eNft9/Chb37e5lx753f++dQfiLnOXma48cPQbCHr48xAf5Q4O+9c3zkvJfnMo/1wrRUq+9IubA4tFruk/xe4i/IVFYSFMhL0Sqlyz4i/xcYxwmFYrvZAjBOjuPxCDnRtTVGi6uii8LyB2g7YY2Is/lFn1EY+oEUxdhIr40x1FxBn69dlbb5gIqGSuvC2BINNLtIRMhnFkMNik5rEnBAWP3vz5UYIzpJu05VSReDMRmyFDGdK0y1uCom6IsJSEySjDd1RdtYKqOJKtPWLW3bSBeGm+S7UmDbdfD0CYf7e4ahJ4XIdrMhW0MiEHOQelu6FB3mOF/WDwH1tZ7wbsS5QEgjfX8uOnXCpmu7GkiLxtG6hTomYeClJACf1pYnT/ZFAFyYDrY20qGSI/d372TdSZH+dE9tLSk5rIXdtiHEzLn3TEGKkwmWQpkAmRIfbbYb9jc3xXkd/DTgvWPb7anNhtevP6E2FV/8/HNuv32LUortbreAAZvdhucvX/D6k1dc73aoJM6/7w633Pf39EPPz3/2M5IP3FwtVHnPAAAgAElEQVRdUVvNpmn4zuvXfPv1VwznoxjwVBaspg+OMTi+94N/wg//6/+GYQz8r//L/8wXv/4tw+mMiZGubZgmx/39HXpMHK93/O7r3+K/vsf7CSpLDCNTzFhlSUkVTbALaI9SeO+YnJOtQFkaXVGlhEqJgn1jK4mP27aiMRXejwynM4fDAeccVVWVvYxS4HNoU3F1fcNf/mf/TLSc/v6nnE89RleMSVikXdsQVcA+2fP61XParqWpNW/fvSPGQFtXdE2Dmwbu76DtpsKYoSTMc2eIYxpHnHOAknFW1yQU94ezaHbpmcE7t7FrIobgvWzLSYrVVW2l0O8ndJyorcFsN0QFd33P2zffUA1nmu0Gayp2m424QZLxpMWcIVuNi57skYK6dyiVsJXouDk3iTFECthKuq7aRlilZGHbam1w0yjSPMWJ1lYCJIAipMS7d3fys4+EJHlPilGAr+gIWqNLbj3rhs/MxZQym81GZH6GCYCqkk6VGDP9ONK0TTFnuEjUpHKv1rFLKoWENb9uXvPmVtMSiC57Wc7S1ijnGsXYYfWdubjTJi2/T8vn5tCluLSW2EbMUIp8hBKsMkcx6dBz0X/WfYtiQqSVkq6SJW6iFGvkWmISZtr/n5hmrVeX5+8sICMlVdGpXE/KZCXAeYqRqDRKizY1WgngVmmsrtBWF2BOzIYwYv6oyt9oMGiU1YzaFq1+2YesrTFBtIopZhtoceVOSnAVyNICmmdpJ+nyEyks0cKZS2mL+elqf5QIUoyPhFVmqLZ7Qm1oQiskG60xtaW2NVrrUsgx7K+uyUkRp8g0OKbBQR6ZBk30Pd7P0kGSz8Yo4z1nMUqMxfhGjA6LEHLO1MVAY+4mmLvXtL3k1cYYbN3SNB1aSztxLIYaYRxLYU1c3rUxolmoAZOxlaJWQuKRlEtif60FpBbZ3JKDr+6UmkfcHLh95PUHa9BdKsKIrTNCyihDtbxLDmyUobaWprJ0dUNlLbWtePLkmj/63h/x6uVzqk422ji3vM5VwCLSmbOm6ja4EBimSfqRyWSthJlR2nBmwWESpJDIIeDTiNOGe2sYYiJPPXoc0NMAY08az6RxIvrI+Thwdxg4nBzHKdA7RcTSKvjjbU1TWZ51W26e7nixrUm1JmgBIUJI0p47BKFwFmHEYfBMwwltFSk62trw5PqGbdfRH0/0xwM5RyY3oWiptFoqrUqDtlLhaJpKEOQglPB+mDice5qc8RqmFMTXvrxiNhhjZfCR6GpNDl4cVmMghcjgzwvjSKmRkJJoX2XRdfNRqj05Za5vntDGzNCMxHcHDoeB4Io5QFTkLM8kJUOMRijGCPVTa5imSYAUHwXosBR2lIByJNHBsMWFFRKNlaCvaWsZWXNrJEXIMSe8D8KGG0Vkdewn/Ci6guLcQql+CG3al2C3UuIqp7Qg3XVdFV1jLWYXUSjWMQVSyhg0zl8W4JevP+Wz7/2AwIGv/v23/PyLLzAx09DhppHj3ZHDQSj/V/udaFmUGo6yc3VxlF51VKmYCzAXcypC90JlV0j7jkYVXYSiu5cuwFgMIi47U6vXiewM5kmV4MNWWu+9tLOsdOYevgTxX8r/zCnW8t3lPOaFZk6S0yIYnpbfz+elVGlHzpC1eW/TnzdXYyq0rqibjqbb0DQbjK2kCuUDylAcT9N7m6VsEAWcLZv1eul7yKyZz2n+ew0kpjyvLam457F8btYxEJHusjnkAjwt4OdlOQ6AsharRQMkkZmcp6klOdWlZVCRSToVWrrCmJq629FsN6A1Hrg/nnh7e8fxfOI81ejjgU0llZ/dvuPVqycYqxgGj/IeF06itTNNHM89t/cH7g4nJuc53J/px5FhmKQFY5zb0z0pRNz5TBgGkvOoGJj6M9EN3Oxb3n3zW7rGEOPE2Z2xseOqa9lsW/LkGfqBmDw2izNYmBzn85lxdKA0+6s9tu54c3vP6Txwe+g5D47T4PjZ579k8IGnT6746quvScHLvpInPnnxktcvnjFNI945Uhp5c6tROpOIRR9Kl01SmDvGKHbbHU+fv+RwGhinibq4hVfTRCKjrSFlSSJjTuWpIZXWD8weuADNK5BrGeMzdTOvBg55CV6XALVUgWcGrNYXkCQWYFjaMCjaXfLhXP5fpVUbEuU8UmEDRPk+W1ULAO7GiZQGzqcTOV+0+GYwSCOJjGh+aholIvgzg2eeP9ZW1HUjgIAtYsdr8IyPBxzzaz0P54R5PT/ntWS9Zs2vOU74GHNrvRbNx1qvQ+uCx0PA6WPB92OV8ccKFxddvvJs+JARtz7u+treW39SKo981hj68BovDmCr5IL317GH9+6hNujD8354Xo8lIB8D+B6+cmmJFsaWFFnnOgql+ENazytZG2e2hU7CDBAwU5V7KUyLcXSkJOdZVxUpZXTpUFCIMc+996SdGDPJmKnJ2eNC4Nz31HVNIhOSMIJk7w2kApiZ0vJqjRSOaaT9c/IC6iut2e721HW9MMH0rDNU2seA0tLFMkdkOsv1hJSLVMWMZ6ol1snMrDpTgL2MUsJINiaVJCIue+j8HOcWV0VC5cRus2G/2zOOPW7ykCJtI62P0zjSVNvF1c+3DSFIAfDubiQ4jytsQNGPkiRb5pAhlQREa3FctrZiSCPTNKFLK+/M2LFFbmVph9YS/8wGVynFxfhGKQExY0rC7MYz+oF9taWuLbXR+BTZbTv6k+htVoV9uL/aFoBU4Vximrww8ysLiMxIUiJ90nQtT58+4ebpDU1dS+dGNWsWWZ4/f8Xzl8/5d//m3/Lrn/6cXdOimgq763j68jmvX77i+fUNTzc74jTx26+/5he//iW//t2XDK7n+YunXO237HYb0YtKET957t694fnNNfvNlk3bcerPZAW9cyijefnpH/Hf/4t/wT//L/8r/sf/4a/43ZdfEaeJrq7wzuPdSN3UnMZM3w+cTmeOxyP+dChumJkUJmHIaEvOBqUsS3GozFc3BaC0RCJFQqUF/Db5sv5cQHGL1jWQhXk3r4GlZVIVYX+tNZvthqdPnvDNmzdM0wRZ4VwgBjEo6tqWKZ9ptOV63/HqO6/4zifP+eJXv+LL33wF0TP0UtwkH2g3O66vr8XkI3qmccA5h3MTfhohZ9q2oW0qFBnnhB0u2m4dVW2Zpqm0OwdcygSZbTg3EkNHu90Sooy5OnoaK+DIrt6TWsvt6cy5P+JjZLPb0W22tJsOpQ1nP+EQXTdSxk2OOAbCOOHcVO6LwfuJybsF6DfFBbSuxYTOeydrkrL45KiMx3tPXU80TUdVd9RNU/bhuoAhBdyiOD9PEz44+tNAzpGua6mbZ9zc3LDfbxemY13XIouxmXBToComjZMLEk5XdokB5sLBvF+DvgB2BZzVyx4qunTaKFIqOQFFyStTZPNlnZuJc1Il0eSsSUld1v2kxMlVS1w3GwRQnF2ttbJ3PGB+5yy/m231tC7A1BwLLHICAhoKE3Tmjsm5pByW+OohSPcY2/2DuGGZcSwFXY0CLXpx1hoKDi5xZbkfoucvhiTETMCRVWLWylciUExjGzBglQUDBoMyYHWFsQKqV1VNXTXoUAkApTVKS4wXTICiBaiUQqv39/htawsIloqMSSZnLcQpJYadCgo4zxL3KiUMUJMN5Bo5KXluifK+lFBGPAiurvY0dYPCkFzCTwFFwE93BN8zjU7kIYJ0Pjonuco0SZFpihEfveiY50jIuQCKquybZgHzUkrkYgYkhooaEzIpSfE5Jxgnj5tGBqH4oJR0+CmtS9s4JBVo24pu14kUWHHsjKWbLyRxdCer0iVWxlqJ7ckXhujHXn8QQDcHD3OVcwnQ5sp9zuQclyTDWjnZpqnp2prNtuPqyZ5PXr/is08/5emza3FIJJILmFPXNXVVSYtmFn1XbVtp74yRKQVc8AzeMU0jkxf9tBQCzgmDKo6O5DyEyGgV36TMKXjc+Qz9iJpG1OgIfU8cJnw/4qfAMHpChKgtpmrZblq2dUPVaWLbMqFRIWNDpusszUYslXPMuMnjmkiKGWVaQjacppFTf+LU37LZVrR1y/XVFTkETnfvcK4nZSfMPp2p6uIUqKV/WxtAK4IIYkgF08PhPIHt0WPEqYDPoCq1NGHen0ahWiqNyZ7gRohe2iJDYnRCSXde0Pq+l9bTUNqipE2oaOLZijFnsjaiUTU6nA+kAEo3aG0ZxnnxErp18hBylMqzzlilqZUhFUpopSgGDAkVk5xrJUxBbaSyBGAqTWXK4NWGGFlYZcTCNgyBqR8FUHBxtTgL+0MSU6nQZB+wtbjndF0nlXclApYhl0phiqW9Re5VTpmgpWI9v168fEXT7fjNrz7n73/8U3737VuutzuUbRjOPXf3d6TgubrpuL6+EkZMgFwS71io+NJO0KDLNZLyIjw9g5EgC7lU9+a6hbBNK2vRShGcX1W0Vsn9rK1W2MaywBT4vGyy3nvquXV9NdE/ABouu0tZnC9/lvZWJUyCJTFN8wL/Yevech7k99aUVILyOfA3RijPVS1OvimXCntRYTA6XaC4dfa6OmVdkh25RFXa/fTyhhAC5Bm4Kx8u1y4uQCuRT7lBlwWxrHWzGGpaU1kfLLi5tDcrpVAhig5ODOIwlGdwRtqe5sRYK42xFc1mQ93KZhyAY99zdzzQ9z298wTe4GqLxXDVPSfriS9+9Wt2999yOn5Lf7rl7nAQx7qDgHP9OJFQ9OeBaZLAzHlHcCVBCmUrURKo5mmisRabE0ZnYpjwfsRPPSkHlEqMY8IShHExOvrzCaUDlW3wU+Dcnzncn0gpc/P0OZvdnvP4jjfv7nnz7o63d0fGkHA+89s373h7d0dlYepP5BTRKrPtLD/4/h/x6Xde8s3vfsfxdCKkPW/vdnxzdwuDOEINU2CaItl7fC9aKkYpVH5G9KId2jjH5uVLKg2TD/jgCClSleLPY6+HwMRDMGce58t7ZpCOD8Gf9eeW+TYD2MvEoCSKD4JALmyFMrJlfpaKYggOSNSNBPAh+MUJcpYhaNq2gMIs4JspAv26uGTNcgYCyhVhYy3VRK2LUxrMJ/nBecKlhfGxYPbh6zHzhPk+PcaWW9+3+bW+hw/ZZOv7/vB9j7HgHgPRHmPerdl8D4H+uQXxPwRmPTxPVUCd+a3r6394Xx7+bv77MYbww/NbH/djDLrHQNCPHf/3fccCzhWwagFNLxe5JK0CUqVSOU/LngBiJBWC7GFd17HZbAlBNKHqqsIojZ8c/bmnYH1sNhuausFag/dSLPDe07btKvGU4lyMsey7ojtjSpV9NjcwxnJ1fY0ylrqqyWTu7g8479BRHNlnhlhBKMv1RGFtkSGqedqsbl4pKtiLyVJaOZHL7+KSRGpjqPWlpXVhh2RJAoSpnHHTiCsSM7aTroRpGqWNKMs+qBVcX+3ZtC3DOHI8HDife87DaXHf08VJcB7XKYvMCRmMEp2fGKM4SHtPbS1t1wKie5sRw45lbnAxupIFbC7SW2mdy1rW8QI8yDNJTOPI3e0t4zDx4vkrDn7CTSOGSFMpum5b2pFLC1ZMZFVai4vL7gwMt23L9fUNVVUzThPj0GONpm1rUgycjwd+8u6Ob779Ld/57iekBDfPn/Hs1StsLezBb377FT97+5b72zvG/swUHUQBDPuhZxzORB+otCY6R6UNv/nVrxlOZ06nM+fTmahSiUflXtmmRRvDF5//I1//+jc0xjAqMd4zCtw00nZbalsxBU30Ce8CwUtrmCrSQZosZidZ2KkzGJe0XhLvqqqpmhpTOnO0Ki6UWZ6PMgrvMzkH6uLYq/WFqVxV4qxaVUW3rDi6Hu7v+av/6a84nM+YbLjaPaHWDSod6f2Jcexpasvbd9/y4x8fuL39hpubG3Lw1FY0DQ/3x6V4M/TSnTMDutM0kWIgBo9Smbqu6Vpxlh37YsqApqp23Nxc0XUbxmEgx8g49njvxTgjg3Oimz1PyEQgqownoitFU295er0jdy3h9lZMl/qzGJdpg7EVk5tEHy5DrQwVGjc5xmGQeM+AUmWOxCAFOFMMBKpL+6XEYBBUoFYV0Sf6wuQxpqKqG7nX1pKzWjQV52IfZb4E7+nPRybXo+81MTm2m47drmPTNUIAKXNu03XFSErMsoypRBdOS+eRtWYBs9ZrfQhFdx5h5Ck9F1hkQZv3vrmVVBaoeb0XqY65GDGzOlESW4SUZBw/sv88jJeKQowAlCVXTDEXVqEUGlUphM7ag0pQRVQBXFRZI1QWLcI5AFti8lXR6rFC1jpmWPbMx/bOBT+Rl57X7HJdM2XCgLiy5kwmlk6d8n0qoZNiHHsBdVfneGGGwfkYiwlHg60blClzvLJoI+CdMlKE0saU7rfLpjSqs4Coc35K0dCjkn0olCC1NJJKi2wpjGtFa1usU/gYyEoRCaXVPODIpOiIdS05VM5YrcVI1EohqjJbUhgXEorIuSR80bo/9SM+SvfhUKRuJu9xMZBDIPXjcn9zISGllAi5FOTQ0vEVQPsoFcGsxPgnRHJwJR2wZV3IS1s6KuJbkWrrmg113aIyeLc6Xz0PdbU840u8dZkKH3v9wQy695NOCc0Vor+UkiDVtbVsdzt22y3btuW6lmrG9fWOFy9fcHNzhXMjX355YAoTTSvof1UZ2q5ZHIAMujADR3TdoK2l0gbdGnRdkVNinBxv3rxhGkbGc4/rB3RIVMbSWgu1YddaxvHAuzdvuX97R38e8YPH9YHoPPgoC1azpbGWtrJsty2brhP9AmMZtMWPIzWRzhn63mC1wGa3b94xjhMpQ9XuqHd7ctWg6xrbWl7tn7O/2tI1HW4cefftG5rasNm0+GlAJYRlp0qlQGcp8JFwKeJHDyiSD5AULo04LLoJxSU1kkzmu4hZxk9+8WsRe4wJnQI5TBgtldZhnIQG7j1j0eIY+lEctpK4iAmAIcBI3XTopiKgyEmRki6sOU3yEoR678t+Jqi1BGqayqpSPY40RmNqYSsYkvTStwZipmlE5LaqpQU05osgZ0qBWMCbWCqrk5P2O+cEoc5pFuaUaqyKspG8ePGCV69ecXe85+3tW07nMy54oRZbu2iHLQtySToziSl6ohbcfZgmum67jPrP/vj7HI8H/uZv/obD6ST6fjlz6k+cTz0oxf76mm5jmbynsaU9JxRtKzJNW5UgV+b4AsetgJpcknMJtN8H2ERkVej9uq6ZpmkJWIBVsK6LHmQW4dAsFerZFsGaatGWnEEyldaJWtloFYtWWyyMH6NmRs2FfTe3MEp1YikQMLP91q95M5YWWkiz4482aCOuUtpaslICwIYTWWts01K3G3E1egByzAC3bLB5EaqXzVctR56ddWRzl2BY7N1lDYuFzauLoUcurbpzpqfJUEC+Wfj6co3FLSqzJFHAwnISJ06pMqviQqqUWs7VWhHknkGTqqmp205MDxDcyHtPP5yJeGJMnPt7pqOTosY+8Pf/8Ne8O3/Jdr/BHw+EfmQcR/phYJgGRuckqMpFlzCI6Yz8LXOKjLi61ZopBVQMjAoarXn5/CnPnl2z23Yizoyi7Tq6tiKnQFbQ7mpSahgnj9aG23e39H1PRrPb7Xn5+jvc3R/44te/4du377g/nhgmh49KEhRrOZ5Ook+aPQYPMbDfNrx4tqe2md2u4XC8ZbNt2F1vRRdCZ+rKUHmPqqRea3XC6kxjFY1V3Oy2PLvZMTjPftPS1pZh0sU+3qFVYBodsF3mk+JDkOIxYEfWrQtDac0k+yBw48JenQO7mW4/jyn56rwkqPPvM8V5POdiypKlTS5lrNV474DM7mpD3TZMwaGsIccg+6u+sHI+MFpQatF9msHy+bgpF9llJSTPJThVCHuCizPrcg9WgNsMZs3B7MzMWwfa8/r1EExbs4PX9+zh/833b80omu/tmsEzmyA9ZJjNr8eArXXrysPfPxa0zww6YGEGzfd9fY3r9td1oJ8KyPKQfTcfc61j99j5r79r/szDJOMhu3l9bct6vjrPh2Dl+u/5M8v3KLVU05fzz6Jlk9eJQJ6R6FXBpgB3ajY0Ks9MjqcxRvZwqaDH4pAnCafD0bWtgPXDKFIJ1qJNU+59XdhfkWHo0YUxhLKkZCX4n9fJ1fObQUUojq1K4ZO0zHabhjY1i+j2rM0cShulFHwkXrFaCatfzWNAAMiZqYZwgVEplRirjL1KL27bVVUTQyQvBSZVjJQanBPXelQWR9ychIVsDHl1H41W+OgxBlKIkBLWKLqmgt0GozWjc0zTJALiRuNDxFjL5Dw+naRQnYT17b3HjRM5JeqqodOaqsy5GEN5TqKFmVKUNmcjBnSzvvXMctHaFsDOY60ipon/j7E3fbIjObY7f7Fl5l2qCo1mLyTF96htbGSykT7Ov68x2XyZkc1mI+lJIkXykc3HbqCBqrpLLrH4fPCIvFkF9BsmDAZU1a27RMbifvz4OTtxyjhJiev5jLN+1ZJKeeF8mci9B5vYDYM6elt1ko2lrMU4gReta957xvHKu3fvSDGy2/UYc89Xb94yGMc/PL+nuwschnt2w57gVN/6w3ePvHv/nss08jSemeKEt4adc7isHUZxGrmOF+72R6Z5Io7quDrGzG8//lYBfGfxu55pTkQROuD5cuHf/bt/TxDLf//t73g6Xdnd3eO85en0TJkXnp+1UL/bHxAMT89n7FW1oK11alhXhONhxzJnns8TxnpC6MBCjEUL1kNHN/Q43wEexGq7qLEUMs4OzNNIjDOm6NhOtaXUe89+v+frb78hhI6n5xPjqIXz73/4nuwyLnR89cVXfPP1L7HF887+QJwXlvFMiQKSmOeRP/7xwh/+IHg/EHyvrWYxEpdZgXKvgNyyzGjBW00NjCkq8o4woW2v4+XMPE2EfoehsBt27Hc7rDEMw45mdGSMJcWMGWwFhZVN3w0deVK98TdvHtg93FOsJXWBZA0fPzwzXkfO7pngPF3Xk66zthcL2CyI9cRx4nx+Bsn0/Y4i2hJPlTSpQX8lZAi+6LmfcyLmqI6RaOu8AZZYuFwVAEgitQVRGULGqiGiD54OmKYrpRR8LW5M15E/f/dnxvHCw8MDwzBwOBxIKBvOtFSkFCyG3dBTnFGQyOjZ7kMtHpSaqom2QUqlT1lnqkmMvm7OCeM8wWnrYIqaz2FZmXA5qdyUCx3WKchrjCMl1agXkap5hsboWbUCQWOoInIrZsmGoGA0d7Xek0S7K4y5xSne1zwFWlJCAxXbebaNX7amcu3ca3qtr4u37QwsNc74xwp0r4tgtzhD8+mb6+5LgCdD1Sa9fS+9iJ8K3gnT3Npt1ZDNOM2vrPM4H1TXOQS8V3Mm/Vo1TZOvJhc1n2x7pqmxo/ehFk/qH9vG10J2TCmurfUpZzJpLfhIUhZzSo252WlRTGosQGFJKmNmQ1eL7HrvXEqEXBjuzXrfopTqcBxVW7pEynWElMkpElNc2XfTrPuXGLN2BBbjiKmyUI0F5ylpqYX2Qi469wqlnofCOCa6IZDmhTgtGCCnsp47Y5nXe+6M6mFS55sgq+HFT11/JUDHWvFq89hQBQGNIoHWQhc8+/3A/rBj33X0PjAM6sYyzyPvfvgL794LSSI5x6bgiHMGH2p7pjWYXFt8bCD0O8LQY0PABE+UzPVy5XQ98913f1bBT2s5dD1v7u55uLvn7ZsHhv1Asolv7g78fH/Hxy/PXMaFyxwZJ63w9aHHVbqjz4neWe6HQO8dxThmeuZiOM8j6fRInkfIC14SvhSePz6qrXHocLs9/u4OfzzQP9zT73v2fSAuI9450rxwPV+Yq76FulRdyWVhqU5AuYraqv5UYJ5FJ2zSgLXzPcP+Cs4RKZynkeLgV/xrAP7Lb36PyRlbMrYU7g4DzrEyphqqG3MmJpizTgEbvPaoV20D4wNiPOMcK1vDVJTZKputzJhSkyFBA0HRSoRznq5zBG/pvCF4FWnMOWNRO/vea0te1wWcV40E3e1DbWmYmJYFjFuDqRS1tTXGxBIjOeW1+hsX/b/F0ge1S9/fHUkGppRIlbYfs9Let8lKq80WVDA/ZqXB2tVtaLsI4OPHRy7nM10X6I5HxtOJy+MECXbDQLff4Xpw5Gq7XMVPW6hvbkwuAZzUuV4T7oaFG8Abu7LWWrLU7mU7LLbtrSvDRNE4RXRqomQ3h8RPMVnWApeoPoJulLUiJ63KdEvcm+7jCpLp7KE9dei6F0mgbB67/UxFpIrXaiXR+4B1nvP5TMwXrPP0uwOHoJqJJTdnvE17WKV9a1uVjrdzhqr0tiZ+N8DjZZKqAF1laVaBhfZ4UzZVwcrPlvV+bkfu07EEDXiyiFbxqWCGCRilGiKioqixiO4NKWF9romjXwldSYRpmZmXiZgWsgSs8YhJnC9nnh9PfP/+Bw6/PzDsdvhkYFF2pu6zLUlcqsugHpB1kSFZDQcQIRuIg6cEgzeWPnjevn3gX/2P/4J/8z/9K/7pr/8JS17QNoFEjBMP90f2Xcd8PrOUyLwklh8/crlc8T5wf3/Pbn/k6enEb/77H/jTd3/hx8cTl3EhJiGLIRYhqYwFuRT64AhGKMuMlMgweL786i3dELjMI8uHJ3zXc7i7p7tGpnglGGUl42A/7Nnv9jzcHwnWkCy8uT/y1gWeP/7IHBd2+wN96DgtkXmadW+pAN3r9tY23xvIfrvRt/X9osr8ukS2+bGtQPv6owpoaMCogeyn7KXahmGa4kdhdVOujCMpha7zHI4HQt/xfHquwEkFAK3FO78GgdYqq8LUYsUnoN1PXXVfWV0vja2Atnn1sE8D1G3LzKfA5KemCK+BIWvti2JESyC2AfO2lfWn9r5/jJX2us3z9X6xBRi3+9rtjX4KaG0f9xqE/GS8RJMekdYE8xIkbMyE27ww6z1tB9c/9vk+Nwav30djdby+tmP8+jOt97BUSYYNc9k24M7c2GGNLWhNbYMVZYApMH77PEyDmkIAACAASURBVLeW3g2Lsb0eBuPN2moiux0IjNNUQbzEIe7ZH/cV1C7kypLItTXLeUeoBgbWWLJNaxt6A+io76A0krpTJ1jnHMbX36t6Nwbd65WBUHWWSsa4gA/Kgs8pKehttejkKnt1ew/UNCFvxuBTVqa+r81ZVgHCLXP2RSizzh+7FkW39y+EwH6vplYCawsvaKuYC65qAKKGR8ayGwbKXttlS86M88hdd6faccHqZzfNRd5h0RZXrX3dCpAtiRY0qRn6Hud7irQ2p8SSCyHo+x76gcP+wDKPxBQZJ127ffDqWB2oJm0Jmxw2+PoaGjelpKZp59OJw+HAt99+y6/+yS/45suf0RmL8cKff3zHdZr5h+/e8/x8YrlOVftXEKtxrnMdzkJAz9o5ayH5/v6eIXTMInQHFYCfx0lnsjXY0FGyGrmF3YD1He/f/cjl8YyNhfmqRAVEgbd+6EjTwjjNpA4GE+i6A10YKFZ1ZGNUgNBbwaJgcHCaIEpz1O0GdoPXeqNrRmReC/KCSq4YZYwYS239NWsuYYzRFkuveUPJUmNdLep6Z9nfqTzJ/d0DX7z5kt7ttO0tJZ6fHTGeGcdCSovORWOhukvGWPUgS64FI5gnlahol7JetY1x6HtSdys6+02HSNvLVOO8r7q0HueFFBfGaeIyXRWodI797oj0A3J3wDjH4rQVVbwjVxOvvu+5ni/YAsF3zFU7cBqvjOGsbcMpM88TtjJdc9GWXRFRJpNXl2YphrgkJE91P9S9c1xOSp4wtYW4mlypVAoKCJoKkrV8ZV3bjv1+j6FJSKkG7el0Xuf9UllzK9UHq9pt1L3YoxrdPtQ2yMaUunWiNFZSA6xa4RqjLD7VxK9xJrayWfVW5yx4ms6tsrpaPIEoK9K0M8iC6wIuu1UOiLqGjDEKJIkyznKN8/u+JxhHprZ9C0hJmh/ljLxi/Ammarbr+1UjHnlxjr8ubn3u2p6PP/UzeCkxtM2JdM62fOpTg731d/QXPzmDG0AXi3YpSqE63DqwCwZHMYrnOKfgnLeqz+aNxXmHtbDfq5uwsVXXz1ClCQLGG/pezeistQoE17NTmYCO4PoKggoiuRZGbjFC1/c6X6vBiatuo6Xmw1lKNc1TEo0xSh7AKnSVU9S8zzajjUDne/xQoGTefPULJKvJRKpmKTEn0hy1JTYllpSIc2KOiRQj8xKxSyZ7TzQCOZFzPbe8r2hBQSSpZNWiUlPOKLi5OEA0x2rL6nb/WOMIjFHyzD8SYv9VAF1rPbSyOczXiaEHf3CO3dBz3O847gYG7ygx1pcozMukOm0StZfaCIVW3d22nAC5BhrGYX1QkVGniGaiMM+JaZ5q9dDgrcFbFVpvbYNWhH22vLn7kn/57d/ghoHFGk7zyMfLhfN4ZZojlMQyjkznM/EyUuaZcVmYo3BeZmKGnBYkzUicsXmhy0IPfPPl1wz9gO87FoHZGYqz5DQzXhNxtJSsLZhxnlmmmev5zOOHj5yeT7Ai8jfNsAYeFDzXUbVbKDo2wQW6aVKDCFPA2yqorNflOmNKxuaME+Hx8YTGtOVWZagBmQgMhwdtzbO1ZSkrkJajIUrN1bXZGMRgJCv7wlqsgPe1/clYrFMx2b5T7bwQHF1QtylrjLbzFsFZR+e8Mu2CB24C0IICFLk6SypwZkklE2NFxpeZOSZyVmq+8YHeqdNRjInLeOVP//BnHi8nQj9wup6ZYyR4PZBiLoQKaKnDCpRKm5/jzJwiWaCzlkxiidM6vl3wxGUmzgumFKbxynS9UDIcdweOx3t8sCQZyRIJULUT1mUDNC0quR12bVOtgqFUx5hS29HyZm6ow9xNVHV7SLTgWoxqPJRUk19ebuqvE+9bQrxJxBpmWG6gliYGrCAj8vKwMjWxcqgphzUqNroChxWUVHvvRC6NNaLOrc53uNCBc2RBwagodGFgOFp8F2qrTAMbGvsPjGmAQwPUuA162xy31bL6dT2x6/hXEdsblQPT8Lr6eL1z5ZbsCDcKfk0kb3ynzVWfiwpk4GRdlyKqG5bJpLhA0TaWPngOuwHv7bqnL0vVXsuZIsqKKnmpzmqZy3hi/jhiz4HO3SPJsixaEHHeoMbHWY1yUlTXa+cIzuIrmzl4jw0Oczewuz/ycHfPVw8P/Mtf/5p/+2//Df/yn/8zjnd7fnj/PTEtnMczakIjXM9wOZ3pnaXfH8hx5vjQEVPm/eOJ8R/e8/7DI9/9+Xs+Pj1zmRJzzCSBVAxZNEnzXvUcjNHgchh29H2vgfpuz33o+CWOc/w9Yt9pS5B12qp1PDAMO8brzG44cNgdCC6wTCNxjgzBsz8cicvMPEbKPIIV9sHRuZ7r5XxbG7xaF+v3de58Cp/d1tQ6X7YAyDodKogOK3NVBLIpmzWlmp6yBmWmviPdK5216mheHaEV1Mx4a+g6z8ObB33kJhh0FVCxG9B+NVmqzLlVD86qLtG6V7SAvL6VVXtuAw5hXu41n7teM68+x97aggXwqXZau7ZA4laL63Ng2OeApvVevLpe6+FtA/LPad9tv7d+jp947u3zvP782zHQfz/HgGtzUp31GiinYOv2OeBlhenTz/t6XF4nHa/Bu8+fG7wYn+19M64CR6Yy4qAGt+sIIdT2Qz32lE1vqZF4A27a41+8OT2DciFLUrZhsARrsEOn+m3e8fz8zDheESlYb9ntBz1iubWKFymYAs4q28N1hmxddbDXqr81BlN15UwtLEkVhm/la2uqhpe1ldXTytqsZ4xUNr11rpp6lU/mQLvDOWeWZanftxi8ssvIVSd1A2yzafmqKunbFtn8CqhemZyl3NgzFSTsuo4iwjQrUztdygqiWesIoefu7o7D4aAxRt1PEGG8Xnn//j3jOBKHXpPkrtN7K5VhWBO221ypwJxREw2qQ6Dq5Br6nadIx+VyYponctbEzVvH4XDg7v6e0zNcr5E0TppCDY7D0NP1nbqXx0jKmeBdLXBoe6aIqKZpSux2Kk/inWNcZnZv37B/OHB8fmT8+EQ6nylpoQTDDCzzQo/DJ8EXzYVMcJSgQGBfPD97+yXeOk5YnGgRY1ky/bBjt9sTup4pLhAjb372Ja7vdPwuIy5lOq8C8TnOiFft7rDrmaIhm8ISM0sUCpau39F1PQsZ5yy26nKTtdGviCaogsUPXWWO6hmjTK2ajCed221PMEbBWmMM0zyrplydR6VK/UA1vksZV81r0qKxUq66jsF6JUZYV90SVeKo79XB1JoOxDMvUl15hVwSphgFfKqmdjE3w7MUI8E5uuAQNLfo+h3WOcRQtd0cxjiNgarZgrEzIglpwCBmBSFUb0SBKV9Bosu0MC6J0PfcPVhkyXx89yPTeSTaWc9E1MRtMRPY2v0kQug67GIpUqp7q2ANzHMkhI5SlO3V6qXWquxEd9jTdLM03hdSieQkpKz5i7YucmOZUTXbTCs0KbCRUiKl61rEijHhXRNIame9rSiMQ4yQreD7sMZfrrZA6/a9cQdfz8i0grciFdSrep3t+V3N+TGt08XWexNwLoAJGKutg1uNa0QLHliLMWpk0uYgphbuzM0VvJRSJbOaCV8FLt2NPandLis+V8s/df9BEEkbPOWn45OfKno1l/vt97bX646B1/8vkj95/e1jcgV7P/f8eg8quaYIYsrqwq2EgFZwiaR2XhlurH0jXM4qXaCdWyA15rPOYxwc9nfV5NOqGZxzKndQAbo+7GkyH0I9M6t+N2q4qi7LxuF8pgtB285rLGedqYQGi8XVoobVTiZbiRaVyCNojmbtbU4ttSNJ88UeHwyBDLvaCi1CzEKJiSlG8pJZkhowGQrT5SN50a69nKWC0ZEYZ1KaVfNy2FXTO503thWZxNRx/0z+0M5r+Fx6sV5/HUAnjenRsvY6IUqp7quevu/Y73r2u54QXE3CF3IO6o5XDJiqjwAY75Ecabkw0qqCKvitoADkGFnmubbmGXCWLAYvquPVrjjPPMXIeL7wQ9fRu47DcFQhzb6j2/UM+55uF/h6N/CL45F+v8N5TyqFx+cnfnj/kR/f/8iHDx+J5yvTeGWeZtIy4xAGH9gPA3chsPOeu2HPfjfgO891iZzSzEThPM1M86yVvnlhuU76GWIkzgvTVau6vrWpZA3Ei2jqVUohS2SOKphJUdcW3ZwFcVEZLpLJ5hZQnx6fcGJwRQU6fQiYoqAFTlFo77y2P6BVl5jV4SolNb2IRTlHDrm1HtRg2hij7b1WqbelRLwz9C7QDZ6h7xi6jtB1eG+4e9jTWixTUnS6ZO0jF1GmjBRWJ7RcMss8cx4nruPMFCOlTvJc3X6WnGvADOOkJhRdGAi18ryUzHI6cRqviLFqz+0c1g56aIG6xaRMrrtzMUKs1PlpmShiIQi+WEjjOr45ziouKYnlOvLxx/dYEYbhuLZniylkqv6LU8CgLp/VEbVtyj7cGGZb5kcDweZFKz1ZNpBPXXvWWuJGpPf14t8Cvtt2S2Bl3IUQVgBBAYPNIdFyo1cJ3IsEcgPQ6TdZ1/Da97+pCEn9XGslS2ql1ThcF3S+1ipczAkRi/WOfj9wPB7Y7XrVSywCVQtFQUQLlDWJM1aUVt2Yi3rqrow3bTXVjadt6qAi+VKBRducW+vndHXste3MUGitWgrQiWae67Ud8RdJbR0X05hZFSAsWd+kVosh1Fb4492AD+2ELqQ4V61ISx865mhYZi0CWAaMscQlEZMQyxUfjvS7I11n6TvHbgjs+kDvhIfDnl3v2Xeew9BzHHrudnveHO8YDjve/vIb9vcH9t2ON/sDP//6a774+msoiccf35Nj5HR+4nQ9Ya1lWSYkZ3ah580337DrBs7Pz6Sc+fj8I7/7/R/58cMjHz8+kgWK8YjV9vic670w2h7vvcNgSPFKKpmHuz37/UHbcjO4sMP4mY/PE9+/f+ZyVYen3nXsdwNDN7BcI9O0EOdMkSdoosZYDuOkld5SuJxPzNOlssvUzfrF/eLl9RpEeX2twMXr9bG5tkHVFtx4ASy1Od3QlxpEr7tBgUxGSqqVywb8Q99pYnydpls7Zw2kTDOcsW6tPpv6sxa8OufWpGWdvyqS+AlQ87mx+amv27VtS92ywtpYfG5f+9xztL2ujeUW5NhWoz9hd73a0z4HRL0GoLb3sj3/LRl52Qbb9rjtvX79fO367M/Ryn1rx1mLL/Xnn9W74SXodwO3Pg3st9d2bLbA5HZebsd7O76v78fL5EVB3DV4bgCvvBzP2ztV0AyjAXgDlz8BLqXCetvPVZ3XslXNHe881ugeknOGqzq0Xi8XhMIw9C/YlaWItqcWwTllA1hv1BHeVIe4+hkbC9BIWeUfUo4VMy2q4WWNagm399lYHlLIKao5l3M4DLkIxlZtvZxVmqImQtKSqWhx1n/CuNjir8bc1pMWsm5sd7NdtxUJNcYqqCGCOE/KqielD1HhYB9UDuUyahxkrF3d6ELXsdvtNL6qr2+NwVrhdAqM44UlzoTO4/02L4g6XrTk1mKNr6CEq2lLLSQ7lYPw1lJEXdVziixLxqBtcNY4gu/VfbIkconkUrhcr+RkCV5ZGq0Y5kQqo+fW7p5rMTOEQIqR7/70J8Zx5O3bN8osx9D3HV9++ZZv9juSMTydT8RlIWCwqShLryQKhSSFWLWfjcB+t4cizOOClMLh7o6+H7h7eKDvh2qgYnh4+5ZcwBTL+PzM+PSkAFeKRAoUhy/qdB+A4g3XOPF8unLuDnyBxTjPEmeEiK26iFmUsWhqZOJDoO8HUoo6p5zOTWltgMZgLfq+SkHTaFsdP9WU48YwvhmV5ZzX87KUQooJ7ztd20XBD2c8zmrs2fQlu96z3x/owg7v9uTiGMcrHz/8gFy1a0RdW4XY2gbx2kpHwfuOfhjoh0GL/04lQkREi33UzhLT2qhrd04uWOfphj1dr62vsWQkJcRqYXB/PDLNkdP5ket1Ygg9vR+YypWhG0jTTE5Juz+ssruiFEyxlNo51ID2FaRvR6pzeNcz9HuGYY/DrC2AgLa9I1WnWkH2mJQpn4rgvK+mlaaCL6q9qGefmnLYWgAQyeuel1OpTNd1917BuZaDixEWtNNNZGipRz0X2j6hc6AxrUXUfKLUNtZh6G8b/2bfKqgpnogKw+Q698QpCOfdTY6CNs+QGvvWHWLDcC9o0WT7WvpZVYdOu5QMvkpMOKur4ZbyaPytwJStIJEg+RYBfi4Pel1Y2z7uRey3xnD1y80a+cnnM4acIu0Mub3G7flfximtUNfWrwGJpGJVf895nOsw1pFSxtQODWtqgaUWf81KWtCWUTFK0immINhqkmc1Vp7UwA1jFTdwbmXSOesJfn/ryHA31rZ1DuNhuozKkjOWrhvo+4HgVdc1lcJuNyCi0ltUrENWve/aSVExKe32KyvYaozm+bY9tp6rYm56f6WUqr/nCcMAa4utqcfkV+S46HqrxbocZ1JcKHkmxgXnDV3olclXBCvqjht8YKrGmesUqLnn+m+dyz91/VUAnVkxmqqxtM7EQhc69v3Aft+z3/f1wFdar8mJmGdS6jBBVq0nMYKkpEK6LQhDafKrWV0L4LK2AHiri8YapcGaKsCq57iQJDNJwdqrMk78nmQSOVlsWnCSuQuGL+52fPnmjvvjwPH+DjN0mGHPbrfjl7/4NQ/f/IqH5zPPH594/MMfuD49cj6fMYJaYfuO3ikLbIqZOC4szxdOlwun+co1LXwczzyfr4zni+o7xVSDP6UtNwfPu/2OIs1NzpDroktJiCVjXSCnUoEBkFxYUG2IbCvI6W63t/OBYKyaMWAxrlOWoi5xWnGk6QddxkkNEsRgjKdUaA7jNLg1CUgV2BC8hRAMnbc4C2/u3hC8Y9f1DLteHXud6n6ILZjOMcdJAclx1IN9VpDOiK2HuW6iMUZi1gN+WmaWOTJV8dNSWv+3qKlDVoc86yy5wBwXllgZZ1K0wmwdy5IwzlQGUm01EQX7iliK0WCimMauU7H8XLQSNLgO4RYQ/+e/+4/88P5PXB4/MJ+eIEX6YeAw7LVdt3OEviM7S14mZKoAtGkV41IXqy6ovAlqlBXXth0NQEqOL5KgGzPjZUW8fb8p5rQl35x5GlK/PTBEquvRdoOv+kDtXVjvyE3ADnUIeqHDVB/rKkfAuPozqu25LWuSVoo2oSrwYDXo9po4+NDV6mw9UHPUexd2DKHn7u7I4XAgdB15nlFtHVoKV99vrfCbah0hUgGLBrLo2DTZD5FSGRSt8CBrUmjEUHt8aVV8kNrXJHU4KgOgbYUvNszy4mtbv2gGKeTbPUcESVolUz2+vFaD9zvP8dBpRQYF9XJKNCr4PMOyZNIiUALWDDi3w+8CZr+n7L7k7c//ll//7a/45psvub/f8XAYuL8bOPaOh8NAbwvBCJ0RemvYd4FjP9ANHQ9v34CBEhO9cYRhhy2J88cPPP7wA/N0Zb6OkLXKfV4W7g5Hvvzqa3w38Ofv3/GH3/2By3Xk/fsf+eHdO+Y5cb6O+NDT73akTVuMWyutalpjDJRsMGIp4liisERBimMcC3/33/7A//5//if+43/+LTEmKBmPw2dLHhfiHPl4fuZyvta2mFsVN/jANE+kuNTALxHTTC665v41/1xnVclrYPriFr8CdT73cwqrvmC7PgemvAZ/2veMkQoYu7V9ZVMf0wIDBcnKUrDOaiU7Z3KOjNcrp+tlbQlq4ILRXmeMaew5szLmGlCHqfqcDcy2t39V78beQPy6yHRZfL5g8Prrz4F8W6Bqfb+vAEGRl+YHpWiisX3869d8/f8WmG2f86ces7032/e3BQC3r/kCvJLbvvA6gG+f43NXO/O2LMctkNv+bcHu6+e9AYafgqmvx/hzr/16LD4HUrZCU/scq2SE3M6mdk5JTYxdrSzbzdiuVwGMFlcQKhtsrY/cJn17X3J7fxXxqyZPWbV0KtMteMfD3REfHOfLmXG6EkukcMcwDDqGPmCLspfnmLSI2WsM5KzH2ZdgqCCroZNpr13XoOSiYFJOWpwSfaxq6KrrPE6LrmTVhM1Fi6GptqKW2tJsbfvrVu1C7yqIZWxNcLf3a5MA1TXsvMd3nerlosWpW9LYWGuA9bjAjdVbE0TBELqwOlYbo0lIygoYzDHRGxCj4JnzjmE38PbtG4pkLtcry6KGcV3nVTvQ6A28rQGNGVTvslljaZHPiBDjRF5Uk6ukom1BKbHIzHSdVJzbmNoOd4/UzodlWpiWqO1QprEf9X7omaJggpplCCUlLs8nfgyOFBfOT8/8/r/8Vw6HI7u7O7CWbC1lScQlYabMz+7f0A2BbujpukDvVZKiLJHrdeT94yPWO7799hfM88yfv/sLy7LQ1321YNgd7/j222/ZHY6A4S/f/4DNBlsMSFFZluAJQ4ftO2QRqGyYgrAkQa4L7+QRMZoXnfOFrjd0Ut00qfdPtGDunNP7miF0ATGGJUZSNVwwaKvZtt26lKKGfcu87ntNQ7DtM64C486rPmCMkf1ODeNMDTFNBUAMVpkqDbiv0VzoBh52D5SHRJyvqiVVar4ojdnX2EGZLqh5yzAMa9s1655Z23Xltj6MVWfSIqaK3iuDTnVoM8ZBGHq6fuDu+EDMifNpZJ6S5qDWa4vxOGOMOhmXrC3wxteuEVNQiRJXi9SJJWaMqXNRFJh3zmu3yLRoQ1WuIJSAWGHJiwJWVtexcx7fGWwQfGVG2aDC/1gHksE6xBSKGFIsGKPno/falt73SiZAzIttVWPiKnPUpAUUr6pu0nWPLy8Bq+25l5LqCS7LQhZlcarrZcGY2r5YCoVMqcYoUAHMGHGy4MRhNjF0m2eaE2k+7Guxop1BTcbFWNa9D6h5t84z/XndG0VfU0zNIV4ch+2DtxbUT93ePxcvbMdkXTPbZ9yAcNvffT2G2zO36zpeX9s44AaMfhqfWKtdcK4CrtYFbe22Oodd3rD+pbLparZUJOnebz2lmmxYI2tHmKmAXZwSajajz2GMYjV6Tnmsm3U/cFv5lBqbOChZat7q6Lqe/X5PCIPGCEbIcaxnX1gZ6atOqfOqnQo3jKMWiUwtRQz9oFxI0c+khKi0AsNSCtYbxZVat1tBQW4yxjm87/GDau/HeSHHDopqX0pJtcPUYnAUqS7WUJ2xtzeOloxW3XtTZcV++vqrNejaZe2NFoo1DEPH8bhnt+vwQYX24xIZr2dkXhAizlv2Xigo5bjksqbWpbqtUKeBrq2KdqJMpCbya0ygVVCNqFOONRZxgoittrZgfb35ccYa3dA69UThMl1Zfrjy43vd5gsFMww8fPUVX/3qlxzuHyguY01SF53ecde9wfYBY7xqFVwmTteZOM+Ml5HL0zOnqxoRzClyWbRN1htfA3U9KEzSQyV0GrCM43IDoOpkyTRAqmB9lRIr6pIlTcjTWYKz6pi60eHqndrPB9EkK4qlJK3m3RZ2bVd2hpwV+fauq2KPDtsqKtasyVxwVhk9g2PonepCOcNh1+OdpfOBzgd662uwqoHuHIXn8xMfH58ZzxfiPJNiVvDDOKZxwlpPlgbQiVZLNsBIAUqxxKKbQK6HbUGqgGbTsilIaSy0DEmDRXG6ucR6ABTRqqCxBsmqtVZaiyOqFbNU8fxsZzp/Ewb9X//9/8Lz6Uc+fPgTMV3Y9x2HYeD+sOd494bheIcJcJqfOKVZ30+WihdtGAMV89JKU7kxPTbtyrpxbwGzl8BckZftUZ9LvNaNms+DCS8EveGlXtarA8MYgzf+RdWqVSmsvDpocFWPULUNctXQUfajglEKxugh67qOVYS0tb1Yq20PuwO7wx4XrLLWbA3wnCVWQFY/W/1bg1CKBgRWXh5oL5kb5mUSWa/cALlcwb6K6kmtKrWEsUjeAIS3cbvZt+uVUvWera5R6pic1qTOlApkAiLqpOycYbfvOB56BRpLwVgFXqQUrDiWOZGyxdsd3T4w+Ad2+zd88e2X3P/iW775p/+ar//2X/CrX/2Ct2/u6DvDYTDc7T2HYHFlxslMJ4lAJojgjbJnDbDrtB2nZMGbAmlW7YbrGVMScZogK2NkKarteH//gPMdf/zuH/j73/093333Z5YlcrlOXOdMKQbrO4xTjcslJkpRoW7nfXVuTFUAXeiCBXFM48Lz85XrNTGPmT99/57/7T/8v/yH/+M/8pvf/hFjLHe7nq/u77gPg9LtbeB6feQv79TMZwWc6u2FJtKatbW+REQ0wW9XjPETgO5zgdbnLlPZxz/FWtqyrT4XYLXFr4YotxYzaetzfYRWDim6B8ZcGMcLP374kXMV7G7gnLWW4NyqpajOho6m/7Nd76r7ocGu2AbOaYvIi326vh9Z1/9mDF6NWbs+ZVttX/cl6PQaJNpqbq76Wq/uSfu912O8vV4bWrwGSP//mHxbYG4LmrX/lwpobO/p6/vcGA3reLXPKihgZV46274er+31j83H7Wt/7ox4/bPt82/BtNdGFq/H7cX4iqiG2+b5jG3g2+b9CytDTfTBt0LT5iNt9+0GzCm7p85/TN1XG3Nd9+2+77TzoiRSUve36/UKaBeGd67qqDlSUSHrGBXE7zptlU3Fk3Ii1bbR9n7UCVLXwspibZ9Hqg5cUdfGlKMauGSna7UKvxcRXKhsEWlzQRruqEnHtvXcbOfBT4x/Bcyb7qQm5JVNv5mr9ZW4OXfe2umoa91WrWGpe4WIxkzGmAqGen0fJVEk453h/uFIzAun86mOtTJCD4c9Q9/DoIlnyRoby3pO83LPlLIWpmJSYMhbjzWqQ1yKtgp7HxQYsQaxAbFgbODN4Q2gMg9ijDIXKxi3jmttZcwp8/79O+bpyv2dmt3F68TlfGXOBdd1XK4j4+WKpIKzluv5sposDLueu8OB4zDQWUfwnSZpRgXDvQ8c747ElHD1/ZYMh7t7fv1P/wVffPFWDZVOI3f7O2wqOEmM05lELdiIFvd0hqa8iwAAIABJREFUPOCSFrIBm+HxdCY0Mzmb2B92BBG6EEjJMktiiUIshuIcXRq4u78Db1XXuRqwWasYMrC2vIIWwHNSp9htYaKtBWNMBbBsXYuZmNXYoWKy1QdPAZIYM9M4YVxmcBrnzHMkLs+M14yUjLeO3TAgpXC+XsklVSa4gpchdByOe+7ujnRdWHWREW4mL8bo2s0aWwkoWBE6bEyos6oQc2Ewjr7vOOxVyzothfc/fODj0xPee3b7HTkJ43KpHUF5jYM1jldd2BaR1gyGnAs5Cd4DXtdQyhnnAsscOeUryFi1N6urprcYb3VtVABR2W0qMYRF14LzYP1tf61zTgzrnqIKFoHgO4IPCiaUol0o7UyqmtPGirLHUEkAZxurvrUqvtpv1mKJfuoYoxqIdIEkBVvnStNy03liaJZ1xihrMKZEIVJQoxfB0vXdi/0rVyfT12f1eqaub0dUv72wFlME1hhI75dKLonNFLP9VO35qvv0Z0TCXp/9n2y/r+KQF+Db5nF+o7378rX1g/hqNPhJ/NN+bzMG7VbcvteKqZV0gKWIqZIqGx32qr1tpHb+WIMVV3NVA3glCGBu+0G9ZwV1dq09RSqdSI0TbGKJaVNorQca9ewxys4tRskfc+iI00QIXXURhvls8cHShQHnHd74Oh867VgrUmeRrWSvyq2o42Ct08ZYo7lVqfiA3guVZjOiADL17Nb3HymSWIpquTuc7n2VWGakYMl0wVetcwviyckCWTsDc1mBwtLmpcgqBQG8MHj83PVXAXQiueoz2Xrg1wEHdkPPbtfjvb6NZZnVNfB6Jo4zzhkOh4MuBqkgQ0vsjbYEtgmoOgEqnmsBfUp1dPLO3z50BTlCrQBCISpSo5o8FJwUjl5baht7ZzKWqVXkReiDo6SIXEZiOhPP79gHz/X0xNPjictUKDbgD3tccEx55sPTE49PJ9JSePr4kcvpyng6U1KuyZ5Raq8diEnZcDWjwqQ6cXPStjwl0BBLvumMUdFla1QnqhTA1bYLRa5tdXgUa2FT4dr3HR6wRfUoyApcOlo1RMgo3dcZh/PVqMCpoKsxDnF6yHrvFNgMlmHo2e8Dh72n7yy9B2sKg9dgTymxmRwTyxJZpoVrXPgwn/lweub0fKEkrT4p6cNCyUwV/U65rACdcbXtkkxnPYK6gooYGnfT1PkxjbMuHntryzLeQKkqYaa1iGRSYq22sB4yVRMNDezMunHXwMJZYrxtp3/4/W+4XJ6QcuK4V2OSznn6LnA47Ah9x2k5cb6ohXzXelulJtm5IvlZD8D1/dTvK722vZ6sLAD9zLDqIlQQNzitVGKqm5BpbbXqpCStot6ShtfJsNzalhpRxtS1iaUyDcpaSbolc6yJUrsft71CbmCBaBVRf67VL2UImDXRUBxCGVMpl1oJE7rgGYaBrtf2iGmaqqiptoLMs7ZFN3BWV5iOW0vcfLGViVvf1yuQbj3KZXusVcC2CE7jFVoF7QWYJ1DaAjaswFwbj23zV5ynm64DUEqq+oKCX4GYl0mz947jYeB46NXcgaR1rCqailWB+iQWbwK73YH7wzd88fZbvv7Vz/nqb37F//Bv/2e+/PmvePNwRx8M3iY6n+kkIuPI+fSBwILvHbt9z3HYaWAeF1JaKONF50UuzNNCnNSl73K9Ml6uWCMc9jumnJGo+0SMmd/+9nf8/ne/490PH3h6OilDNhfGcSYmrTa5JBjrdH9yVoWAkUohj7o+ChTrsGIQ8SxR+Ph04e//9Bf+n//0X/m//u+/4/e//57vf/gIRRj3Owax/Ozujv1woOuEIuo8mIsGEDoHGmCAVqyTVui9r+DThvWWy0uQfHu9TlC2/+pqtWyNVLbXFtD53KUAxK29qM19nWd2nacN2G1nTHtPS0ycTiemGPU8DQGpxjrOeS22F1kBtxZ0bU0immC7VtH1rGntCWKUgUIpN8CFmiC8+KifsuVeV4o/O3avQKnXP98C7ltH2tdA3DZQ3oJKOWcFJbx7ASi+ftwWsHr93M0gYmVBl6bp0pJEeVFIeX1/P/e99rul3FKNbVFku3+/BvteA2w/9To/9dl+6j5tX/v1PXo9vu3/DdzN3NpOikjVW721N60YXVsP1CSUFi/f2ui2oJTOq6pFU1vfpBRygmgNRdRwTNvWVS93v98hqNFOSonL5UIphaHvVXfTeqwVpGSWRZ0Fhya9UGoCEG/MBb1PdQ0XHS/nTBU7t+x3ew77PQIchoGHNw8cj0dKTCzTSErb5E3jMdXb0SSi1HigmZE0Y5f1PKt/zDo+NyMpqeNCA07qHGrsEWpioGGzaAJmzMpg1j1QEw8R1RkzDqzRFlc9o6o7rlXaQZHMEhMpG5wx7HY77u/vuVyuXC6XCogZDscDXfAYDFEyTSdPtbb0vDairpYmJ2wzkKhsEBsCzkViTZic9fjQM6dMloh3nl13h7eet3dveH46M47TDUCvn9wYjY0tsOt7Dvu9akR//IjkTP/1V/zs2294/PhESpkyJ/KkzGwBohTGpyfsyazMDGOg9x4fvMb2MbI/HphnLcZOSyT0PYPz7IY907QwzTPjOOHdiefHJ4IP/PLnv2R+c8/1fOQynjhPI7MUZhGK07Y/MU2HWVv3ZJ7BebztkaxSGEkydBovCEVztxDodzt1cO06Yk6as10upCj0/U4dcoGSs5pDiF3bWEs9Q7cyKm0utVwup8g8TSSJK+vJOks3DPRzQl06I2lZ6AYUDA89UylcryMf5yspLgwh0/Ve3UZLQWY1UbBe58TxeOTh4YHD/lALAgq6GFhZU3NceD6dmGYlbIzjTMwVNLJ6gLrg2R32HO+PhM5jnGFZIj/+5UcupzMmC8NuoPMd0zJTkiBFQUBb5XVyhSsEEKsdLY2t6I3DUuV2QocI2JKVxYvDVQaPtsfXte5hKQuFzJISpIyNubJZ9azeH3pabK17bN1P9Wiu8b/mRp0PBO+1fR+wYrFrTqF5UCXlYywUMes+0/bczSlyiw/aTlHZvt57iiQFTGsc0VrtWzyUpREwdJ/Rp9cc1FplLmN0L21gkDVmzUMkq4aetIKJqWCM84gFyXrGWGtv+RXgnWfoOvIwaB7FgjUqFaI1SwfiNvvsy3hlexZuz9DXccz6O+52Rt4KUp8WC29XK8BC44q293E7g2+Pvp25+tdajaW1sFIpCNKte6t2kLHu9xbt3Gt5KgacMWgnnUo8mAo6Y9V4Rt/XLRaxtbNKqMCx6PM1aarS4knKBqDTOVSKnmDFWDWFmRasr4w5Z1Zzmj6onqGtAF3nteCB0d81OLLROSRUrLmCh25louv4W0dl9zX2YSbHCEZf19Y23iJK8inr2Ko2q3eKG1Ed3JUI4sg0fEfNT7ZpncJ27fY3JEOqfMJPX38dQFdABbGzstqswdmi1vbBqlmAFWLKpBy5jFfm66xBQFHas7O+zrq6IK0CIaUxn2qDmVK4dHE441QnuCQkNgSyYI0nOFOdPEtFfG8IsCsWX8AbDUKKseAdWEexllhpxHFOeAy2WM7nmevzGbvMLOOZ8RrZvfkKxfRnrnPhvEQ+PJ64TjPGeuYozLmQMAqWlVLp8uC9aFtSDZq8sVrVq0lWLlo9EUkYar97CzqrTlyRiDILXR2TDRKP9jlvwf20FFIukBMFZdDl+jve100CS7CoeYNtAWAm2Ih3mnQMfaDverpdr8YPfcfQe0LXtLkUOHw+TeoIuagG1jLroTxeJ8a4MJbIebySourC7PqAtZUSngRvnLInJan9sxbeVrDSkOpm1qaNrONnDYTDvgYKKuqY24ZcgWBrVOPFUdu1GmBXmXYaZOtCcgLBOoL1ODPr4hSzMg4ByFc6EwlD4P4wMHR6cKR5ZjyfeD4983j+yGW+4J3BiFNHrNqi2w6NUpO50vQUSj0Ey2YBG0BCzXbtjYmCtpRCSwQ0uW5tQ+1zWmdWpqAex1o10c2xfl206qUHrWCcbkxOrBpnLIks2n5jYK1crcmYKBW+2E3lSrQ6jRSyyZgK5udc1oDaiEU8FfSvotntAEHonFegAIGcmK8XVLJTN1Z1962VNLaHnUAT2a8AnZXGNBK0Gl8fbyrDoeHnNFp8SxSKto+XlwfvurlWIFd/1aw353PHbl4WHaOaHDRxbAyI9XpH2xwnYGyPcT3DYUfYd4jXlnEr2oQu1pGNpVhLwVKcpz9+yVe//DW/+OWv+faf/JK3337Ncp14fvcDPs6448CwswoapyvL9YnBJHbBcnCeXdA2ppIT6Tpyvp4wnZbSc0xcTmfm6wSigI7fq3NeNobH85kgcDgcef/je/7uv/2Gd9+/Iy6ZaUnM86yHMEbbmV2oAZevYLBZQebGnLOVAl5SIpuC7w/Yruc8LZz//k/8p7/7r/y33/yGjx9/1MNVhGWxXKaJ83XCd30FwBXwVfxUHU9pAEcRPby918piTYzz9tBcp9arO9tADVo88imYpPe7sFkdm6dsa8msh/h28rRqNCjLm6q7Ibayi5rDMrC6UdjKYKggXq7BVaiBcWraG5jqxrVpbV2TlRqI1vtijKnttU1iwmJqMmEkV4HfVgiwnx2nmwbmS+CsVeN1vdZ9pbZkSblV29t5155B4zC77p8NKIAqmgybx9/uR3N+s2IoOWG9x5RNG4LIei+lPcu68erIrXuAbffYboLn9rsNCGlaPQpYGF6mOK+v9nMLlR3+EpDbPtJaLcLoHqTv85NEgJfV/c8Bl6+Bve3/29e3JM28fLzhJsrdzgRT5xcKtDmD6g+LQGEVZs4pY+u9uyWIBlUW0zhlzVTYxABtlNq8qsvACIhRXSaJCZsLofN03lWQu4rFW4ObHOfLhbREZjGYbDBDjVN9IEWjTouVFey1Mqp6XNzGwzpHZ9BiguT1/HXOE3zH/f0dCyp0fjgc+NnbLzgMO8bLhRQTOaV6r1t7p8E7FbRXJ3ktrnnn6buuJhSmntstAZeXCV1pXao6KFkFjivgqbGQrm1324e2LWtNvB1ZTZ/amWnL5nmMsny8VwaBEYNFk2NjlF12OO75Rr7mh3fveHp64nq94r0mczl1K9NKWwSzFtdlXeEaF8RC56v7IA7jKuhgtbXodL5wuHvAOrs6DA7Djt1hh0P1WS+XM5fziYLq5qlmXitkLMRlxjnL/f091lqenx55Op0UbOs60jwjSYuIzAsd1G6ZxLDb0fUBawxLXJSgkGZMUnfN4Du6ruP5+ZnHx0dSLrjQqf7c/QPXy5V/+O7PPH98pu865nFmv9sx9D2Wwpu3b7kr9yw5MhU1OUtzZHq+ch1nFmOYizLApSR86DUmeD5xOk1kKxhbNCsNgUO/Z3e8Z3c44kLgdD1zna5cTxemcdYiS9djjZAFzWfoMdWMRHFbPQ9ECs1VVESq5IHmiTmrE+u4zFzOE+fLlet4pe+vzOnKuJy5jmdlxThHsD3WdjiXcZ2a3GWByzQSuiOh6+j6nlRyBej0LOp71a1yLlQNQNW0k8aoMbAskY8fPyKAM56YEuN4roBjInQd+72CyfeHI3OauZ7OzNPCh4/v2e0O7O/2CgLEWHWAk7IOSyE4fT8UlcpQeoAj+MDx+A0QyHkh5qhrw2u8nbJqXhpbwBSs91gTEGNJRovL2NvZZ60heIcPAedvZg0iavolNYESbhIC3W7AUc39uqCGDebWMv96369hKSuTrurVmhZHlazZSMXxW0EFWsiQle3kPLvdYcNo1CJGqfG5akUmRXzq2dI6tZy3+KAgnXbWKOhRjMpDIUZZcXlTkKI93leZGmrXiauhkYJ3PngFyFOPYEhiseKIkmocYmmMuSZT0c7JJpmj22uLEDZn65pb3M5PV8+oz538jTyCaW2bN1mK9hupyeBs/jZm+ZaRZ6wCUSF0hC6o261zmDoPUsrM80xcVLLF1vuWSo29coUG9Qd6WzAY65UBVg8ZUQdCPe+RjYYx2NYxSAPw9cyX5s5nWoKknZaNXGWgtpVmZimYBayLyiAtBecNs/d1HVSnWa86ltRuKmvUlMd6p1p7Vs1JU0mrO62ppDLrLC7cmHg5Z2KqnUs26ucQo3M0ieoXlhvbWs8PLQa0eKAIlKxGldp1o47lpunASMtC61nbsIwNCedz11/X4loUJXSm4Eyhc4V+6Dkc9urY2enGMMbI8/nK+XKlTBEXEzkKkgySDNloMuS9wTi1FfcFSsVJnNO+6ZKTuhraTtvnxCBEpAJ8sSSWONJ0xW5Vb0Vok0QihlydqLIpOCd4L+Aq1b+A9U51zxLEKOq2uiTiZEnJEf/4njkWEtquJ86zpKxutDnx+PhYEdMKtlTqpnWQJEEuOCM4V1kzbUU3ZxqTW9yqAadtt6M5rzhCUH2NHLUnvAtVT8TY2h5wC7qnufWR68TNIlUY0lRN3FTFGxVg7TsVCe77wBA8ffAMQ08/dHShY3d4YEmFmCIxTlynyLJExmliXmamcVKL4pgq+FJWC/ZSctWRMlgTyMlyLUonbxT1GHOljGplTsomEJdb4KkreP3BmvjcxCLbPG+8/JroSNFg1qkIpmsgQBas93o4VKdUijAEjzse6YMlVsbQsN+vrxHP79jtdry5P7Lb94CwLAvj+aLi00a1ZmxOFGMYxZGzBjml6OsYgKLAQcm5gt0tv9YJ4lolyumGKHBzf6vjYI1BspLprW3MRHV4grphO4fkTKzgQ6Owl6w1kDWQx9S1p4zFHKsV/CYxTEnIpLVvv7WmGzbtNzWpjEuu1N2CWLnhE3nTmpvaIVQ3d9sSG4ctkbIUrrGA7Wguw5iggWJDcmvbnXUO4xorUhkaQoEMrlZQDKoXIEU3TmtRlh9VzN00gK5mfFbDrFQSkks9nDUr0jbBUCs3RinVpgGYRSv/m7Y1W12LxBRiTqodaFu7ewcYUhStaIYBH/Z0/R2HhzfMpvBxnnCm8DQ/keeZYgOXbMjOsbs7cHf8kq++/Ru+/MXfcPzqa6Tfcx4X7s2MGZ8wPYQ+4RDi8xUjM73NHAfLzjt6a4jTxHw5k1JkmmbGeSSfI+fxzDxOtcCmTIqu6zncP/DmzRecLxcEy5c/+5IvvvgZT89Xni8T52kmLpGctNUvazZZW37AWbfuX6YVHipDoojOP2eUem5DwAZLGAbuvnjLH7/7jj/++U98+PCOuJzxRgs9KRaeT4+8exwwfcfz+cwynrGScKJird7pXptSqm1wDcS4HZ5bXYjX0NK634qsjNuWAG8fpwBerm0pr1v6toDH5jlXkKXyYmqybGrUfIP5VJfV2toqJ1n1iETBAu81CDfF4ItVHRYj7OpZ0tyilQ2j+kSm6vBga7HJGNV6NQqUNMa7sqBrBb+0KrxZ2+PXVoa2L7uwtmOUWhipIRxSNR1dZSDonqKAZgs8c933WkLRxthaUwtXuo7TvKxjbEErk9ZVlqbUx5caZziGbtDnKlKLhGUF/E3di7IoI7/dtrwyfARTjDoju1qo7HdrwN2YGw7D4JVNhTHkpvPySpukBf4UHRPtDnAUbgYqrPOlMhBy27fDCxDvZcLFJja6Malet/02HZuU1Am6MbaogNSqBrQBKxuoU25Z2idgXdOXck7ZRKV+3UwM9BynauJURnUFj5W5pTqp+pKVobmChMrCWN9W1aURgSQCKbPkSCxxNTIgZ7yzDF2PEcPlcmW8Tmoik4XD4UgIPeARFoSigEgpmth1PdY7lmVWZkBJKwu9mMIyR7IYJBuc9ey6PT//WaeyK8awTDNxXJTdbpXZp0mOI9U1FnxHsEHZ9EBJRd3YMWunQmMd+FAZfBicdwo+eQVMjHUY03SPszKvcescam60peTVaTeXRZlBFWw0YjHZ4LHa/ZJVPN9YqxpuOZGqpp6hIJI0kTdCTCoNEILjsB+YxgvTNDFer3QhIFk7Q0LQoi2iBW67aelONWSZkxb3clb2bhGD2ITxmcs0McWF3WHHZb4S+gP3b97gneX8+MyP339PjgvBGsQ6BcqlFfeAkkhxUbdHa9ntdhQRzqdnPj4+cr8f6J3DlExcJmxK9GIwksAkHHFlrTgDnfPr+itFCMHz8MU9IuoU+/x00twlFZ6WyPVyBQzX50eOxzv2uwMffkz8f5y9WY8kSZIm9okeZuZHRGR2Vh+c4cxi+UAssHwiwDc+kAAf+P8BAjsYznb3TNeZR2REuLsdeggfRETN3COyq0ArZMXlbm6mpioq8sknnzx9/YppGvHw7gGxC9gf9nj3/h3evXtAfAi4HM44ny4ozDiPI75+nTAi4cJA1/U4Ht7hfHpBDh6PI8CUMPQD3t2/x/sPHzDPMz5+/IjT6YTLOIIc4TjsdB0z8jKJhEiIKAw4H+AooJQFrBI6tUgDhpwzXk4n2aOcrN9SK3yI6OoRKREen57Q737ClC+YzhNO8yPgCjwF3B3vMfRHTZZW0WyOBdF5BD+gQBhipp1VSkFg0awquWK8zKiF1IeU2IjNTgHwIUqSkBkxMuY0I6UJyzIjLTO6TjR/qRQ8Pn7B49dHzOMI5wj7ux4xOkTTsS6MHExOv8B1TkXuAfIMyglAwXG4w3d/+Gf8l//6f+Ljpxf88tN/4OvTR5R8AXMC8QJixjKPYEgnVh8jOBBAHqEfMPQRMRZ4z8J8UxZtdCIPAwbO51mJMSzPyAXZp5Bx2O3Qv9uhpAnLdMG0zBinEWPf424vDEqiAguySqktIR8goHPlDBSRaHGQOMQ78cPHcdGEhDDlcinImdF1e4lryAEV8GrrTfeZvPjNBjZ5jYG8Mp0rMkpZ0HVRYkhjkAPIbHuZlACXUpruoZA0srCQq7IDi2ii9f0Ou0EYo+QdCkm5rO96uOoRSmqJUIm5KjwRuDiAlJls+80GrLMtUcZqCxhufMENZsds+5jYXB8s5je/ybW9TorghCBCut9SvU6gJS4CUIWA0EXs93vsDnuEoYd3ThpB1IppXFCeXjDnUYA4XRspJ+lyGyJAsvaKJQbVTkKTsqzP0JKQEvtBq6RcS/AwAAoO0YnElnokV/E6WMq8WxfyVgm4+i+clRW6MNKyYAN1tGOrf+u9hwsqm+SDAGSOYSW13jvpyqzlsVJ1ERRcFfDPzkma6CZIU6EKqcaplrSGJChSEn/JQ32Sqj6RVc8BADuRxlDwlp3UwhFRK3H+1vGbADpxzIXD4gnoYsR+6NFFhxhkKuZcMC0Lplk6XoCBfbdHMOYcIN09vEQaxpIqVYIH7x1CFAFZ0QQDzueLMkuUbVe1W1ARcGGeF0Vq61q+pp9VWDrYwBGclsvtdtIq2ukmep5GzPOCcZoxTbN2jlxLL+aziPrmasGYx5ILsgUam+CKvDgta32PBErXpR/aDaVKuUDwtFnF67msQ445UxKYEMBOdDQktaXZrc3DjF1zvEupCJ1Xp1y6rwbfifh83yF2hECM3a7DcT9gN/SIHiAULbWtuJyfMM5SCnIeR8yzAHEpFSwly2Ss2lWoSBvirI45akEgQfALS6AtwAi3xbTVs8mbdtE2FsUW78Yg3Wb3/+5hgbPW13MVJL9ClqKJixsLw+sc7TqPumdpZT6vY9xHwtBJI5NaKpZ5xrwsyGlWEI2R8oycq4A7hYRBx5rFVueHNEStVdZTA+n0mQeSTmiXaUFTYjfmDEnpEJyADFwIcQsQWSBXGUvJbc7ZXQt7i2BaZ2K8PFKt4nSwBCtFM5UgD18KiIQxV1h09QpzA1ugne40qSZOTLWGHVZCK4xCQDvyOFkjjZWXpZyFkol+evT7HrUwalokz8JFu4oRKhheNUfI64bnDOCVEh9PUeny2qCbZR6QI0iViAIHyigAhC1UyYBvBoJH7NT4gwTsKBXVOXQxgnxojVfkvUB3vT3j8PB7+CjXWZT+INlLJwGZ7+DgsUwZnBjvHz7gH//pHxGHd/jxl2f8+Mtn5Dri6+NP+MufvwfcDu+++x/QxyO82yF2R/SHAzIXjPMF/X7AngKmyyNi8Zj9jBF7uB7oqKAPjEiM3vfgmnE5zdJxW0vRcq6YlwnjPGo3OABemK9zXXA5n/B1nPDnv32PJSUc7x7wj//0n3D3/gPisMOyZDy/XBRwEFttpVrX63gN5mtjURp7FihlATzB+w6H4wHvv/sA10d8/voVP/78E07nF+S8ABAQtJSEcRzxcjpjtz9jXmaUvEi3cC4rvgCC39jpK5Ds5rjSXHzD7vyqDfoNh9nsv3/I313bFwDSkprttWixmpS4WGMi5isnpnVThjjILhgATk1+wtZsE3EnB9HZoPazieDKSy2benMfDTgCDHTZmPC2fwMKFtDGmYWxleTub8fdStvZcgBqS5pj5Bi8AX6gjrVTfdWStVEL2T0BJi8BQpMhsGdk+wQ2n7Utb71isOk1sJbtG/vKGKNbMM2+OqCRIW2cpHQEV9eA9veV0XbLgrPXm8bdW3p7t6W8W8ZiG0e7BrPTNsY317O9D/veq02ltjOYW68Bjs01KGisT13Oe10a/JodiKuy4tcsQwYpUISJsRv2rSS5lKqVAoNkyIsI8XddliYGFrBWa2AjPkyEMLvF+RcHnav5d4QQOngFu6XsSlmgzrLv8r6o/rsBoqS+XWO/MYnvRKtvlFKScmySSWLae+veuq2ucG2o1/Ke63JkWyJVs8aiziKFOEJsr6o1HSQ414BOoAl5lGpGbMLqc5B/wrqQ5NcwDJLMOZ0wTSO+fHnE3fEeu90ey5IwDAK2GMBt4JbMfy03cw5kzGbW7pXeY0kJ87Jg2EmTgGlZMF4uqMw4Pz+jZq1cYAZKEt1mYxE5B1TVPzbmrXcCdHYRac4Y04IQBuz0/KQ1Z9OyYCoJYRiALkg5Y9FmcDKw4MLouwHDsMOiAJHEPgnzLPfnnZXvSTzQ9xFdF1DzHiDGOE+4TBVPz0/4/PmTkCKGDtI0IWujE4ddF1D7gJwZNSWdfw5zBvo+it3yES+XC8ZlweVywfPzM5ZlaQzPvuvzpMdGAAAgAElEQVTbfMultAR/zlkSZwDmecbp5QRCRdd1GMcRXdfBBZU8cBDQ1RMCB6CTvej5+RmpZHx67MGl4jKeELqA4+4OQz+AICWlKUmyjZwkT0OILYEzmD0rVUrggpc5ps9QupAHdN63ZhFEJN1Kq0iiQNeP5KPEJi/LjC9fPmGex9Z4QLpKBnRd1IBc1mlwDjEG6RQdAuZ5hOxUTsAuYqBk5GXG5XzG16dnFA7YHR/AKPB0hPcZ0+URT18/I+cJcIQuDDjcDzgc34NcB6aAGIDDTgAiIdSzyPdwBdKiAFeFY2ngx6jiIys2QESYpguWZcQ0nrEsC5zafY91rVmpKrOwFsk5adrmCZWlS2VKCX2/a4l/Io8YA6S/CjdbbIkj0g7awniDJmNEr89v9psYgoCPWtFlBejUgDgHh5XpJwDWxsxDJLC8CygQYoDELrL3eCeSWYFE4zj2Ad0wYF/2qIhgZLjqkQq1DsTMUo7NrgJeGKG3e58ZQbZ7AXTvWPcfA4lXm2v733r/1/p2t98zCJLYb/esRnf7yq7r0O9EYsnHIDqcBgaxgEkuROwOe8TQY1mk0m2aZ8VnGMSlXSdICjaE87ImX401325/vcvNZetrzZ/c3o+GRXz18rU6DBu/6bVPvMYL22NNisqzp2Vp7ycCKMjzs/H2LramE06BW/HXdM5qbOZcEJ5fWctYq1MSCwm+VJQA5Jx0prZ9q2ryrnJ+fb22X+ot1V/x+38TQBe8GDNijxCgnWB67Y4pE3ueF4zj1FpJO2W51FKVzl8QetU5I+sSwuLzswizL+OMy2XC6STlVMtlAiBOixgAEZmvRcQ/S6lqjNbyku0k907KSr3z6Ice/TCg63qlQIsxWpZZqOLL0ujTUjNPSJN0o8mFW/Ymq9MBKDmTVmDFJpE4PfI6bk9FgiC3oRc78mDHWMuZrp3NxgjYZLxJxw5AE+9t9+sBE7X0XhyBEBy6LmLoevRDxK4fsOujZDaHATEE9F2AI9nkxvMZl8uIKc34+PgozR6mtIql66KX5gri4EknRhExrwqEoLKIgNY1wLkqWSLpumXA3G3AAAgI1pz4jYNu/65K0d44LAAFLCCx8g89j3ZcKSyl0ivDoAdFklLdeWznK+qYzUlKX+ZlVPbfGnzUmtXGEEol1IL23KSDkOzhUmIpU4Yh7Ax5V8WiTvUyF7BtngQE04FSC8ocADhUK4HWqebkBldn0RgyJjKvRtu72BxzVrYIs5aKeAsCINR51ceQ+nz5NFUVgLWNZ4aW2TECPJZUREOsBb0WIHuZp7gO+tb21g4gj+J7lOpU2wON0cMkFPecIQKoMEaN00pV6c5VqQd8RNTydutEFbwZYb0uF1QrQjocQR2FGIDgKjqlxnv4BgaIcxEBLRNwmr1x0a/MI/w3AMD/9n/83+i6KPR97xHC2v0MDPShA2fg6+MTaqr40x/+hD/+wz8g7PY4Tx1yFg3F0zngcPgj/umfGXeHL4ihB3EEs+Q3a7pgPDN2PYOHKvaAHfLMGN0FoXj0hx5D32EXCbXOAAvAvKRZMoREyKVgTjOYJfvsvEe/GxBDj2ma8dNPP+P77/8DX59FX+673/8Jv//9H8Hs8OmXXzCNk847gmUGt2vYwDjRSVlBjrLtKgVhnjplQPkQsNvtsMwLfvjxB/zyyy8YJ9EV8s4DqpM054TT5Yzh5QUFUmZzC1DYtdwG91uwo9kQA1r+fwBx14DBCqq89be3gA7zV74Fgtyee/v9FuiUwMU3kM5Kilkzqa3UhVaAbgumGpgsgbvYOgOPmiNkBFSxCJvrXW2jfMYK0LXgm62s2bfPNpBDnNMNEAE9XdtcoeXwG0cYaAm79tk2duonFNZGVQaWQRiFIEt2XI+tMc1uATJzEN8EuKDJRm1GRG4Dhr753KBizeLPVGJJOnzj2d86sU2A27mruXb7Wbf75i3gZvOHYHvW6ufZa699kut7NidX/Prr8dpe6/ae3mL6bdflW9d7e47t9/KoGTknEZv3sQXVwuyT8hbnAs7nszaOOIO5NlDAEVCKlLHVJHu4j6qR5KV0VvxRKdfpOi97RNF14h2cl6DPkXaec9qoRkEz6eZdpfy3ZGkCxGvZ8nVQqM8D1JJRBmTp3bf7rhWqsEubMbN/q11pzEUtTa2VUAq0qkCCM9PvMR9lBcKrstABkJX6qD9roDE8YuhxfxcRfMSXwjifL6jlBTkzhmEHKVfVOVDW+RR8hHSAJLCCma17oSbeTucznr5+Rdf/AbvdDtM04eX5BblkpHHEcb9HXmbMOUnTABYf0Ll1XEsuKJpM7LpOGgz5gBwC0AeUvkN2EYGF2Rp8gK+MrmYkZlQn4+XZwUdlnhQGPOHdwwOOhzs8pQJiQvRBQHsrt9fO26QAS2VlRweH2Ek55rJULMuE8/mEl5dnKalV0LeU0sDNECJMWyrndc0Ky8gj54zn52cp6UoJpZS2JphZO9rKGg8xYug6ZHKoNaMUmQMxCjDGhVuyo+sjfAhY0gImbpIDyRVMzzN8kL02p4TLpaDmgqxxIliZu7kgaaXJJmIX37iwyr84xNC3qFX8LrE78zwjF6n6iDG0Ndx3Q5uvxs7cJt1EQ9G3xjEW20pTD0lK1VqEzeMA8nrevhd/ZJnaXituq8S4lRnjdMZf/vqvOD58h+AZXQ/0MeKwP2AcKpblhGk+K5u9ovMeuyHCxx5V99VSl9a4BcxrAkfjmFpv9g8lmJj+Zq2SyF+WBcuyILqVJbSy0i0hIdVgzEBOWcBArBVO17bWYtPXtt/sfwgODNFlrGxJgdUGGeBz5Ze5oJpmazXZery285b4dZ5W/T3mZkMZ2tCKuI1J33WgugNTJwBkSfBF1pLiVKAsCcDKQc917Vc1Ddy6+ie3WrFghvd09fo2b9v++a3krCb0nCZcHVrJM2NNlMQYxR4pEyulhFxL0x3eH4/ISwLqjOIDXNRGRrWi5CKacs3HJdgeQuTgWAFE3oBoG817ZukyXGvd/P56j7hNGm42KwDXAFU7w+Z3/sbfuhrfzXELoNp+V5cMxurvkOEw2lRlGPawpJb9fgvQga2pYQCC3wB0in2oFEtwUoJbU0XK0nDOegq02hz1P7Gdp7cA583xm7u4BucRfUCMpMYrQBJQAuxcpgnTLGwzJielAGNCWjLykpFTQldIS/QU7XdoGcg5J5yfRnz8/AVPj8+YpkU6rABwbIKbIsQpXwnReWnRWyEaQjB33IBmB2hXu8oTUq5wbpKyV5auOln1y0QPTzIltRK4ZoClTLMyJPiupsK3LkZrRy3zYQ0GACAXYO2cpxPAi2NBmtkmLm3TsPrzFkw1Q7dm7eU5GyPhdrInSLviASESht0eg9FeVddC6tIBZgE6lyTt4OdxwuVyweV0xjiOWPKCl0nKNokVGNJsRGFxSJbFRGPFMXPwsGyqGC8rxVo3g2hijxsHf9sue3ufW3DuW076bzka00EZm/Ze+1xD5u0zzBF8fnrG+Xy+Otc4jg2EBiCLn0U/kbANGFgAH9quyHVDlWQjIZOAQeI4lvW1xAhxAGv2qOrzZqyZcOellMW05rYgHbHDUqQNvOl5weaMjutSS9OsA5yODbUNj9U4WQlHFARYsuMkG0YLAZzcD3kRCmVyKNWBXQCpviDBAkiSTVMGS6aMAnemE+F8lPJgEbWB99KByvmgTluVTG1QwC+QzjHNsrqAbncHch2sXNh7da4bUKGlKT7AhSgNStQB8w7ofEV0whSULJkY8qCbIjVAw8uzCF7KDIL8/G8K0P2v//v/pbZTbCYRa7l1Rs0FnjyWccbh8yP6rsf/+A//iLv798iQzJj3BcFnnM8fsdvd4+XpE3756Uecn19EJzCJBqQIZi/w9QIq8ryoEtJ4xpQ9Ou6B4QiqA0oFcloQg0PoSNgIWpruwOj6iGF/h363Q9cNqACmy4jn8wWPzy/4+eePmBfpipzSDwAId8f/ju9/+AGX01kYIEFBFut8C8Xum8OiYECpV3ZEt2H5HRzmtOAyjjhdLni+jPjhh59wmSahs0PnNgNO7W+qBZd5ggv0TZH+22PrJG5ty6+BGbfnfuWQvPHZv3Yt2/M7d+183AJx3wITcy0o2gXP7O2tc2TgS7PFBoCRnU/K0FYbzC0BI/YS6z/Y6enqY6gxZVWCAusHGJBkc8SSY5bJJJLSVgMZDUiDBSkGDoH072gAXCUSZqwlB0ANtDPg0nsvOrca1AgTdmUXkXMItOr5bEGkLWC3/d2rZ0skeiOkwZsTZ7dunpXJFhQF57RFgiYwts/jGoy7BbVuP/8th/YWJNue5/b1rDpo2/nY9p4bZuntV7I9ia/H5/Y1bx1v7fm368oCsxjjmw77xgsGM9bOgq20RfzDGCMYwPl0wjRJx+Pdbo/j8YgQA1Jy8JsGDEgFLnjEqJrGVVnxgRBcFM0dFuCFAyMjtaZDa5C2shKaZu5VAAIIw/56vjX/BbCFJa9t2inbRLWx6deAUAAKYQgyb8dffRQFEduvCqQsya0gfHMjwE030hpUQP0Bp0AzM9q6dA7Y7XZ4//53cC7g5eUFX758wfF4pyysHl2Msv+3xhMC3oC0C2deu4fGGHHY71Frxfl8xuF8Rtd3WJYFl/ECHwL6vkffD1JKn4UJ4a0hzmZeyRqw6SL7kXQA9gjDDuiidIatjAqPool/VKeACcM76dBpIumsesgP9+8UFJZ9ZBhEn2vWkvztWkpJ9PIAYJmTgMsschwhBJQqcdOyLOJDeI9xHLV8k1QUXwAnk44BBHjLObe1zszouk7Zd7LOlmVpFSXrngAF+SqWOiN6qUQCM8bLSRITXSdayGbXckWN69xNi1SBCPAZ4aN0I+Ug89AqqQxwjS6CWcC6nDNCFSkcSYJYgyPX9iAfJYFXiqyNwhXLIutBkqi9AJdEbV5t93gD2rouNOCt73sQATkn7dIM7cheUDTZvdv1qPWIcTwjpUXKvXOG6GQL07XWDNCEd+867Hc9nh8TSh4RojQl2e93uIxRupeWjHE+IY4dQl0aUFBVQxIs4JzIA0mimRkoZYIl3NkAKVKWr6sg6pBTxOxF66/TdXM8Htvzl0PLyq2KAdJltXJq+1yzLVxa4tSsgYFyNr7W8bVWVgax2hQH0Ebb2QBkaSjAiCzP2FvTwgqRycHqX9g6tbl73ZzoWmbBpHxqWZvRmN8DXcMeHuQ7OY9qhpMzv1WqjNhsgzHmVa6H275p6IP+3/YkYpV1I1g3ZPA2ufS6GZbcpThWxfZ+YP0MBizyijGiloLxfJau0MwIMaj2cMD9h99jmiaUVDGWi65xFqmsA2GcJvncCtUwtJJVkYTKzKIZrldRmw93fbzp+2yO7d/e8lm/9bM1crj1y3/Luex3WyJIM/QQ+a2UyiuAzkpcPVhkp0gIWt57kJd9v0AIBkvOEpt6sbtULdGhAB0BbDH3Ohp6cRB9vr9z/DaAjhmdd9jte2kg0HdajkpIKWNKCdMyNyoxk2+LkzeOiNQAe8CxdHKMHudxweky4eU04unLGV+fzlimCqYOqYpejYdsiKwaOQQpn6gqrm8sPL3nds2sXUOYoR1gdYHpQpvmpS08WwC1ArlWzdAXWIlgyxJrKYY4CjJ8YrxrA9iCZkdZa7cF11h1VpoDDJYAwofGAGi11M4JIII1rjIDaSKJKS2qYSXHw8OdlG4MA/ohoAuMEEj1CxglzZjHhHlesMwJ02WUctUlY5lmLLMAqZJRzKBOxpygQVRZmoZbKQpMNUMozgs29+cdaUnIyhqEjh0zN7261Zm4XmRbxsL6WF8Hqt8+rlk7uRakTVlMrqUh2DHKJp5zxnmULpUvLyfJJOlRa21ZRnPqRLdNS8oYbSMDHJzfBPIWxTYnWr1WrUaRIC60gIzJo7gOVWcGKzMSm0DbDAuBGjMTCuwCDvv+0Mb9KktFK2gqApuqR6PG1ysY77UddXAeLgjIJXp+EGYqpGzTkxOATNenfPWA3wMURNPK7luvATZOZhRJyhNiiAh9hxgjYhwAJx2JZA6LsLSt0b6Pkt0nARSNISeaQALSFZYGLFeUGBlQ0fHwDlCh4+qiMu08gneIriIGDYZrVUahtp33Wnquz7Iyt1JX8ejWIAD9exRdF1C9Sq5FxdOl1PtySphqwOH4Hu7wgAtHVAyYJxVaR8J4BgrvELt7HPYjOteB84KaRCek1gWEimFwOMSEXUjoHKP3AYfdgPujx34HhCAlnzES+l7uY0lS0uK8w34YEPo99od32B0fUJnw448/4v/981/w5z//Bb/88gnny1mlDByWueBy/jd4FySTvWQB7NVmbzObBs4JIC8PQxwZmVNcVa+uVpScVVC5YBwnfHn8ivNlxMePn8CQYGeel8ZideS1GyyQSkbULNmW4fMt2/EtJ+Ct127Bgtvs8e1rvvU5t695G0B52/YBtv+sCYFb4MJKlSjImmXVBuJtudtmbBr4hc0e2pzhLbYnESiRCGKv9kRZaM7sn40DC92/ShAvrw3NObfgygAi5wRIcxvx6MY4axeyNnIBIOWjrPZIx4PUsaumsqcmuPXkUFtUIWLd1uCgAXobwMs02iyYkGezApvb53f1nHSMjbVoIOMWEBOfQsEfFeEHUStNFGmUa+Bsm4G/yuZv1letq26fXduWlWY/W5LqrTLYtfvetWbddq69dd/t/ERXjYVu5+7tvL3dm24/63ZN2TXfjj9t9lrXmhQVXC4X9H2PGDt9j1zHbteDa8XpdG5aVSF47Pd7dLGD85JMmZN0f/WgBvTFKB0YJUkgwtIMUg04QCn0WMuxFQnmdQ55L37TCiIou5XL1bOx8jYGtKJD2S8tNtz6BbpUVG/Vyly9MxBunVOmDcnqx8kzkL2tbp5LS/IZYKCf1TpVt+Sinls72Zk2IBHhcLhDCD28j3h+lgSocw5d7LHf7zEMQ/MNCVaiK1UgIfi2/hiSoEw54en0gpeXZ9y7BwEDibDrOgx9D84VS7auvIwYRadvZT0Ja44JzR5JVYdop065gKKUTbroVXtSyiVLrQh9D2JGdE78IAVMqVZNxgecTxecThfUKvpwIYjurIx9Vp8F0nAtL2prRGYkpdb7r815WQvys4HOgHRBrEVKvIw5HoJvVSoWV5hdkBLNuQGI8nopaf369IQwXuC7AbHv0AUvcRELK8h7j2WaMULKQkOMWJr+NMPFBVyBqOee5xk+BnSugyNC3/UIHRC9F001iN4vqjK4qgOzsQAXTNMCQJKyIWpjGa5AZi3JFP1sWRNrAlBKLgGTU/LVNTsXQsDxeNR51zVbH2PUmCSJDl6QJLOtXSKHYRjgnMM8TxjHC6bxgpSk2aFzLJ00A+PhXYff/+GIw36Hkp7w6ZcL5vkZdZllTJxHRkHJCdN4lhLr1CF2vTAji4AnZA1UNuvRdLOqAreVnOa9FSDjAKKIYTfofl3QayWCaD86XU+SfDMiCZE09KpUUaqXTsGksauV2KqulyWatrbbbKv8zc7v4INU4jQ/g7npEAuIJl+D9+B6rbG+BdHt8wy8LiWhFPlcq0wppaAuApiKEPm6R2z3ipK5Vd0IeK+xGTFqgQAy2+utq6SFJdZq60q+AYEIcF6YfKRSOh5y7u2+RlfgxXYPU8CbVgxl3QNZY0353TRp5aIlY4IAdMgF5+MdGKKHG53HUicFu7U5i5f4FQUN0DTbbkQk1vKoFWPhpscnCa6VB3brs24Bvbd83Nvf3fpTW9/9LR/k21V0a4LKgmwiNLDOPsNwh5Vck9fPRdUuq0Leck5IGOQ82EnAIn5WVH8gSAMynSMCmLoGfIq/DazC1uKB/r3jNwF0nSMMfY/j/oB+iMIECQJmpFKlTfi0iA6ZdopMJeMQOu16IaDRw8Md+mOP6hLGZUYl4OVywePXJ3z5/IzzKWGeCxyJgbpMUt9fQcIplHWD4kgMVqPcvw6kiKsEDXWzMEl6hGU2BzZIsM8rq4pcQHCAg0fJwvKDClJylay+ZWe2DrpzAYEE8Q1OAZNujzXcIc2cZxTNtqzZhjXzYOd1jlY5O1hmQDadEAL6PmC/H7RZgRz//M//IO/1xtgrKHlGTgvOLxcsi7RTn+cFaSn4+vikGixqJDVZY5uZdOnLq4YHm5Hwes9r1kC8Rrb4bRvlAVgdi+3327btcr6boOfbgPxvOzy1kzCvzLiyZVLQmlnLWZz4p6cnvLy8SGebzX2sQrNRAdKyln/J9GwbhJQpqHG356qbH1dhglpWRdgtK3DltOyyQgyBgwBzBoBZ97rou1YqE6K0UHehU3FLSPZwA9CxXqSN827YtU6ONkPtZ3E2q+bkCPDCFGBIh59KjOiDaCmSA1RWjh0QiADXoXAEI1x1vyv2UBVgpwaqCKjlnQp5dgHznFWE1rXsE1dGJWmysCRtRAEBAlpgomMujjias0bqKLCTZ0A+ACTNHmoFEkuqz1h8h8OAYYjoOmm9zoXAXJGJhUmhmb2qFpcJ2lgDYKqALs3LLFpgjiGtz9kBVWO3WjEvGdMMdMM9/O4BE0fkhRGjdN1j8sgLMGUGXIcYdri7ewD3EUhJmiBQAeoC8ALnK4ZI0szHexz3Az68v8fD/RFddHDIIHJ4uL+D9x5zmjEvMqbDbsDDw3t0xweU6nG+TPj554/4l3/5F/zrv/4rPn78hJzk/Tkp87guyBpIGLsapWJJWZz6zSH2xYJOQaNvmTvyt9Iy4oEIhRlfn57x5esjvr48SRAdA3KpKFkaJVRmOAV8Usoa5G8/e2WYrPsFXV2bTJ1roO0WGHgLlPnW8a3M37fOeX3+bXLmGgixr285OzaGiwosixbjyuAOyiKxxJTc40bbpYF37uZaqJXEiHOuGWR1VqQM6fV4GRS2/fkakDH7hGavSUV4r7KfNjZXbKSVTSYJr/UehHEkGWxjB4r/KHauMqNqcqgwazJJ9n7cfubmsCD3Nulh4/7qeXobx2vACgaK2hxTFrIxfBmWZJTz2D2/KqXZXNd2PNrnb4Kn7f56Oze3AFsDyjYBVws+sDZvuHrKCvJAAdINcvTq824d7bfnv4BHJjmyyb7e3Pu6lq0cU+akSJk4ki7iqzOugS2LxlEIAYeDNIM6nYTJ9PLygloKjoejJIZiJ5p0hcFVGpwJIB3guyiBWi5aYYHG1Lf/1nvT8b8JNs03aAw/IqkKofVZNx/hm8eGMSfooOrXCdjgXIUQbIS9tA14WjmOPmcJrjdgOwnTf507ag808S6v1bCOWIISFvaKJWZLySBIIwYZ8wMulwvOJ2kgMU0TQlj1vboY0XdSUglnotwJk2r/ppRwvlwwzRP6rsPd3R0e7u8FmAPUL1oTw9s5bevUe4+uEz8qJUm+hiBlcKhZZBJSwlgYmRwiO606EFtachZFYZYEnWeACrdqgrQseH5+xjxN6GJs2miAMLRK2bJFza5JmaclFRoIb6AUWFlGHl0XcTzeIcYOl/OI5+eTsL6cgEg5Jw3kbX+Q522J5ia3o7YhxojKFWWeRWMpJzx07xBCj6KlkjXnxhC08kkiTcxqV2bx7WSsCjbM0TZ/a1t7xKKXmnNG4gJWAoKngLIUna9JwQ1d7npPueTWQGG/36HrRQG4FGXtszRTmOe56VRZ8iKEgIeHBwzDIIxYPVpc5hy8g1Y+BJRUkYvKRmiC9rvvPmAc9xgvJ0zzBbVmOAeRROk6lDoiLc+ovUimeMdYpgww0HUDliVh0eqHZV4Q4gTngBgdJPmZpVmLjR9WAB5EiGGQfaywNNdwkLJIlaKQtXTE8SClfI61NJlrk2a4ssUK+pgN88ELCUDtltU32FrKnCDsuy04p2XKJYNcAbOApvI+tf+q6+ZU29biTiPAWEKsJeeANo+3dtOOWq8TZ2sia5W+sWq2tt5ImakEwAW0u2MGXEWtwhyrEriL7nV1gHcIVar60jzruwgFCtipHeBK8CHCwEw59eonMLP6OW/5hx5Vn1MFC95BDCir3eLSlJJ2Z12aTag1YSwnlHnBf5SK/WGPLkoZPDEjp6WxCUMQbWm061vtBGAkJB1n9Z0a2LUidm2Pu/W3t3v5W3uX3wCgv9Wv3p6nNQ7b+BV2HQYykl3w5njl6zeMtG7Wg2k4F5Sq666s1Si13VdScohIXNhgVYgcE2+Gj2/H4FdCiN8E0B13exwOBwzDgKBi50KjXjDPM8ZxxrIkyVZoOUkt0A4lsnkP+x0+/OH3ePhwROIFT+cXnMcRtVa8vJzwdDojJwdGkIWRpHNqpSqd9iDgGpqREJ2GrbO2fbCeJTMN1u5rrCVQVJAty8ysHQbX7nLNAWEpceUqKLzTlDuDJcgJATH2YgQMsDPQhQGG04zAmuEWo1BXqq3CqVuNJvHjtaRA/ooQIrqugw/yOX3fYdAuulvEuu+l680yX3BJCePpGcsyYRpHjNOkG0FCSlV1U7xmLuwMEhQUZZu5UhtCZWvYeckYey+6DYxVF2F14OS5VHU4kmq2AWuQsQ1msB33NwLO7fEqU/53DmrCSIQCwLfnrvqBWPWOci4Y5xlzyggh4O7uDq27oR4P738nTUacdZiDluwK8000OjrNuG0CIQ2MjeFmgRoRiU6NC01UcwXtPEIXxelzm7Iv24AICD6KAVLHPgQt1bSALq0lboBliCtWLZzVPmyDNwuCycoDWeNmDZiBCkcVUC3HVIVNI5qBVRlm4gQygnqagrGziVk70QKS9L5vJeeW6SXv4IOMrXciQGxU+ECkFH/V8WMNZBUZVjMPpx2ouELAP+3gQ84LKMcEUABcAJPYHh87dMNe2GXeoXMRAV40bZakTox0o6rq7JAPUpbuPYLzjYFjR63SGdeD0Dkp9SDyGE8XzDlhSgTXH3H/4QO6uzuM1gSkEHqdfnNakIt2liJgNwwInUfghEgVgTK4TKj5AucyusDoPNAHj/u7PT68P6KPHnmZAaoY9juEPo4KHkMAACAASURBVKIk6dqac0EInWgyuIA0L/j3Hz7hP77/BX/581/xtx9+wOV0ktJsHyQYcyKKXfNarsqqt8lckbN0QHwNJEGB02sk/ypYVCCCCAqmVLy8POPx8RHjOKq+onQv9CGKHc8VqRRQzgglI5Sg7CxzjNZrFHzkukxPrcbVtV47iNcgwt/TwPw122Sv+ZYzIn8zEPMajPmW03ML0Dmn2oshwoUo9kV/Bw0IXzmt2AA6XpilZt2J1tIVIkK1cpCrc9z6QhKwW6cvc/YkkJEmLsJQZZQG4qk+V13tD4Eay22bXNk6aNVa198+A14hEhkilQKQMAHWXMzsq/gCci7CdXLJ7CSwMm62c+T6GQkgbHmruunkZQLluW50AoEmqs2s+nWbDNFboORtE4vtc9wmv946GmBFa3C1TZaBawPe25i2J6jXYT6L/k461UoSQhJNdDVG2+vdPsftsdX3kXniwFjLg8XG1wYSrUtI5zNBmxoIyFXLygrIKWFi2Tud860EOwaP42EPR1Am3QQuYrMdgKClfByFMVFyRS0JIQjjw0A/KacTYKZwAQXIU6Xrcd6WeEnZGqvHVACqbT8zUMqYTrFTiYfKmuT1ol9nWXvtSs/eK0CmyQ5jLLOwZSygvlrzkGRTK+etdLOeLMBWINCxENCthJz12ZC0rxF2/Xr/zjFKlk6L3kv3zt2wRwyd6E7Pc6umCCFgWWY8n2rzj23+LMuCJYuGGjmHLgYs84SXlye8f/8ew3CHy2UUwEP3eyuVqswtQWvzXNYMI3iH4KXrewgeOxRkyHgiF2kyASlljlHY/FNKYivYQdgA0om863rELmJeFlzOZwQXsDvsxEYRoe97LMusIF2WuUIOgUTzSso6KzryrSyNQQ3skPGU8Q7BYRh6AKSyM5uYCCxsZBK/zXbclDNyIQGodh0qZ/hMwiRzwuxzIWJR7W9pSCdB6zxPKCnDfC2zGf3QN8kjNACH4ckh+IAQRI+4dfMmIJcCz2jg31IL4EnKINmJHSHV61b7bA3TADR2OJGwZSXmrNo4zMNT3yQ0DHgwGx5CkLjqjeoeY9KhJHhSK+Bs/aw253g8YtgNON7tpNSVi5S8e9kIM1ecz09wVOAccH9/j7LTphuV8eXLF3D9iKeXr1jmhK5PGHYDgnPogkc8dBDl5+tEulNQa8lVWbu1gQv2TApn9L0yfYPaHbURVLICNMYmxdXG3eZPpau1ghvNtLWkFAqorbaEsZbFtgRPJXjP7VmUja03ENc5D0dBqode7WvXPspqvyzWzjC3zAcFNi2+duv7DGwS9qlq0nKVbtckTftAXsA7hpzDQHhdTo6EqeoJgFeMoMprpNqmSvdo1bCTdXKzR5fXvqL8XROAJt3lWDtfq3+hr80KtKOy6HEzi55jLiBmPH76jHmasOsHiTXOFyybRgrojE1+7V/a90VtegPnSPYEg6GsOmIVsTHfUNZc9GuzFvuct45b3/o14MavXv8W6LcdW2hsKtdkr7guKd6O8xp/NPRO+hiA4ZXNa5rFlQmkjGKwNMzk4lCaPAuhuqiJKs0orJdlQ4Xrq399/CaA7nCQxgI+GLUWyJVxmSaM8yzaczmDySO4IM4UiYuRirAoYhfx8PCA3314h3E5Y6kFX75+xTguuMxSBx1DB3BESk7a13qZ5FDkl0iRUFIXzYyHbkRXiK4i8o7XYM82J9KJVovUCBsi6knKcoXhAfRdhOiLiaaeo07Q8zhIq3gWJpMzN0Z13Wxy5jkjV1usInTuvTjj3tkU3+q8QDvhSSfPqNTJYRCmnAmXDsOAvhetrHlZmxh8+vQzpmnC+XzGdBlRc0ZZpKtuqbV1HWlMvGhlQEUzphrsEIM8t9ljGQ0D21BlgbdOSY31oGbZnkdZQy47bhfUduHdsuwaA+3m9W9l2986jE+1NQ6mebENXKwcjJkb03MYBpTE2J7+P//n/wn7/Q7MjGlctAxTNM7WjIQKdhIpjK+frzodUPahtDlxTVTWxD+h4JVzkA4yGmyIYRSGlxmnUrLMwVqleUmtcCXLplorIjmUINmXShVlKSgo2labQKrpSAVAIEQKQBAkrWqGVNaXACSy9AW4Y1cQfEDlgpIyxmUU4V9idCEgxB7gDnB23wCgZd86DqXI+DA5FJZO0KVUZUFIdtiyuxbMEBEQPChGAdZbZpmNx6YZv4LOMRxrVzDy8ExwTCK6C4c5FZAL8GFAiD26LqLf7bA/HNHvBiAEgCryfMHlcsF4GaXrtIbupKxI0wshY76Sajb8UeZNOr1gWRK4kmjt9AMcBaRcUCqBQofD3R3effg94hCQCtBFgAqh7wAPRl4qUIHeBcR+h50fwPMFPi8IVOAxg7OUzwbn0XeEd3cHDDFifxhwdziAS8aEgj4GHN69w3S54Hy+4DLOqACG6JES4/n8iKfTiP/nv/13/PDTR3z69AWXy6h21LdkhZUlOAqIQ9SNC5iXBdM0oRoQwmJzbE0Ye45o4wja5miOArOUVqttLrViOV/w9PSMJWVxQBTIjlGD/ZyUXi7dxKxL4m3y5q3jFvz6LcfWkfit79s6lttregts2zIebs/xrevfHk5Lj7xpOtFNeQVds6puAbrGWuVbBhYAmHSBvObaYX59X5YIAVbnTcCZDXMPq3PUSm+0NBSb8dleyxYcWwdI/pHKYVjSDKZxqIDdKyacjoPtEaYzuS3/3AJZbyWYXl0IreBc0bEnZSizgiqOBBSAM70DLTuk9ZqaD8NrgPlWYnLrfN7Oidu1ZmDZlkGzff7MFdYp/q0xt2e7dZavEo3mbW3m1haA/1Yyzv62ahZe3892/t46/msCUPerKgnYbTlvWhYgEoYhwnsreROmzG43aFMekfs4n08gIuwJcEHE53PJSDkpcFHBMTZ/zgdhv+WUtOHHtRdeFZDdatLxlV00MEH+pSSdqQUwCCi1g/NemDwkjE8JdNeGALkUBKjKxEZexMBwuZDt8wEsWWHMVSIBJGjz/GxtkuCu6vcqoAxLOtuzIDgK0rk8y74dQwQ4Y5onKRUOUkZrGslWCjlOo4LHFbQBBLyXUtf9fi+MGKellcuCr1+/4vHjJ0Tv8bvvvkPfRZR5aZrBOYuGmbFyDNx3XvSDhWSxyrGE4MEmccPCfkep4KzPqSQwVXTRCcjuha0TKGDoOtztDvDO4Xy5NL/ycDxot1gZJ+8JOXsB6qr4DjYfAWnSJICWrgPSuCJb86PS2GA5mz2SeTNNM0rNiHGtztmC4zYX53nWsu811gCAJSUBsEOQgL5U0WbjFSQFBJzOKaF0nbCf1JcmIlCIcC6g5oxaiqwJUflE75V0AJ1HDPiSwVk76hIA8vDs1X+zfchsDwCCrrutTRHmnjQP88hLbqCacw7k1jnAzO1aDViyKhvTyi6FkTlDa0BghBPbl6U8u5POu9VKPwUUqlwxpgXLOOI5q5Z3sXMEdF3Adx/+gHGc8Hw6I80Llimj7gscA9FFxL5XkGZjKyuDi1yP9yqlkyFkFqooXJDZ9CpDs8/MEpMx15aYM+C+ERGa/XZazlo26146S0vZ8Apkmj8n9tq1/depH2y2rBbXbKE1leNN4xfZ77UJj1NQVhM+6z/bi9afm8/NawmqzHm9pnY9G0PMUBkWLSXXBj2ksgcBZuRUs1OtpUAH6pcAEids1pStK2PC1pzgNNlmTfqIrKAS10x0tcNEG78F67MXcBrCogPa/LtKyFmpug+yFmvFeL5gVq3KaZphjZAMnN36deTWMeZq8jSbsmoD6dTNs2q6lrBzqy/gzDfQBWvxrW4YV8dbPgyAltB889B9to29XeONr3jtg2zshw16S4pa8kl1cwEB20khSYIyuWX9bX0fw5ssmST2xUEydNxWrz1LSxn/WtjwmwC6vu9gFNUYI5accTqf8fJywtyERQNAYTO5xBAmNa6h6wBy+Pr8gr/98O/49+//hp9+/gkfP33FNC6QRlaKpJvOU2svvCkB1IEoJTewDoBm2VfnTMSJZUCshKbqkzGDVGtSQyFgonX2IB/gg0PwVdryhqiZmaAURXEsTF+h5hXFlgyGMvMKEEOEi1GDVIlqg6emDSECmk43bHHCRDDXbwRMu2aUbFyfn0eUkjHNI/6I9wCAv/71r03staQCFA1MdFOpymyDCl8uKpzLipAzp5ZjE6fFKb3XHATJRNJNTNQWg5xMABxSZ/km6LPj1rm3320DOtOh2bLu7FzbIGF7/u1n5KW0kjtjzlk5r4FpAFA4wwWPQ9+110tnK8K2znbY7cEKzOyPoiNC1ivNSVlUZQG+WudSHRkpB5RyCBObzLVoSaSHcdNknguQW5dJNG7aJli1e4w64abLRk6ZCxpEWPmoD6g5ocApPRoQVSYvQWolMFXJEFYVic8MsGxugEPmgrJkFBR4ciAPydIo6FzBGKcJnx+/4HI6w0WHd3f3OB69tjen5shzrVKeWl3L+IkoLVrQSpqR94EQiIGaWivrGKwUCOC6IBAgepaqi6FGV0nzIAu8VDdAGBjqZpGD1wYt+6HD3f09Doc7xH5QFk3BdD5jXCbM0yzjTSIanyzL3/UgnUNL1hJLY2SW2gC685efAHg43wktvlYIszDg8PCAu4cH+L5DhkPNQOgI8EAMFX1keAK6dxGU9xh8hw49aJmQQ0G+JJRlAbmK/a5H33UYesLQewwx4G4/oO/7Vn51fz8IsM6Ey5iQCqHb3YFBeDld8OO//Q3f//gTvjyd8PnrCeO0YEkJRcsXuUrXZgNQfBTHPBUThpYMXmVSbTB9Phvw3da0APyMUtMbbDQB2oLv0HUDhn6Hx69P+OGHHyHaMgVUWe2RlVet+p0pibO1Bvt8ZR9sEzbnZFvy9Cbo88Zxa2/sd+0OjAF25SysX38NNJTr+Dbgsr2G7T3GKMHPbn9E7Dp17KwMW/bBLXPuLRsqexWrOK67+n21hNOGdWDlSrdjZ0DL6kxuASC9TyJoyhrAmm2WJg7QPfsanLllsW2v3/Z01jVvwbfzDS2TEGtzrpbA2+w/TkuFtnPXWGdWirfdm273rDWABLZB5BZ0lYY0KuDfHE2x1ZWtQ+gKjtlxG2zb2NyCmPbMLPC0+7X9z+b+dv6v83Mdm7eeq51/C7htS1aEMbius+11prSKj2/H93oebhlO633elvi+9d7tsyW3NtkimYDIOWMcLw2c2DaM6vuIGO4xTwtOL8LsWtI97t+9A4gaQyiEKM0nkBGcAqiiqSJC3Z6QWZhGNqcl+bBidpY0jDqf7F/XdWCuOBz22O/3iDHicjnjy+MXdH2Pu/sHFXlXQWvvsURhBZrNlW7ABT44xBjaawGSZG0D1GzsxKNpYvpwoEpN5zgtM2pN4nd0UbtlBtFjKzLf1+clmlPeOVS/zj/5vdfkoj4j7XToPMEHh37omo2J0Teb0WwA0BLZpM+Dq3QoPb88Y78fsN/t4Y5HXM4jvJ9ap1LrDg0I42oYOlhiwLTgRMstIzogcAWXhE73bnYVhYSZQTFg1MC+Vq2S6AnDvkOIHufTGefzSUpoAYyXUVlkqrcGSKAcA6zYg5mRSwZ5oOuBLu6k0V4pYM5YllkZ5CsL5nK54HKZZO8tVrq4NkG7ZRtvbeY4jpimqZX6mt29Ox6RSsGSk1RHgUGQ7rHeE2JcNcJsPbdkGFj2HQgAkZfUJrzZ2WY/JDASDWjvpMHTyyiJ3mGnsiwkvjJXRIQWr4VO4tJSCuCoVTaJvQKci61xlJALFkmUqq02DWzzr4EbVjE5UNCSZOtkaXFo8zV0XKmqBnsGWUfjWuG0q3NVhiaptqN3QTs7A/vdHe6OEy7jM5al4PwyoY87DB2jC2qfDTgiqZ5JXLW8WtaADx5WIVCUYGI2x1hDtRQFL5zI1fBaRmrPflqSaGkFavPI/Lqt/Za5G5BU25FIfmZIfMIMbLYC8Q9ihEgLrHJDPkjC3gdtokb6uWD46JBzVfDDyvfleVrSMISVERWj6ZaaxrFo1beklkdj6JbCyDWhcpJmGBsqiSWTmR1KzquG2M39A69LLG/3MmaGjwGeCL5WlcmiRgqBX4HFFjOSdMwuRUqFqwqct30xOJjOpewTjJmBeZpQs/pPThJRqSyiH672r8WRNSMXr3JZvcwfQJnAsikwVa3SWsErQ5QsVgURvAuCKNRVZ9g7Bwqhdf4G0cbn2uA2tAGPm33f+rkrNL3dA9pf/TWJpwGpLJvsNqkkl171uZDOYY8mH6DgnA8OrjoI83JDHqgVUBtHUJdVAb/W9Ev3JZCC/uDWJMyunNr/fv34TQCdD+ZASzZyTgvmZd4wsgSFtEDcsSDMwQeAgNPljL/85d/x5fkzljLhh08/4eOnX3AZZ4xLkgZLKrRbdYE5EFALWGvcG3sOAGoF6UaiT0MHUAV5FeRz7MDwjXmzJrxlgpDXMj8iRC8tdJ0TVpOjil10ettSLlEqkOv6eafTCZLlUz0SiE6XPDbG0Ec4H6RTHBhcs4gNSrU6Hu6OIE+iExYd+jCg3/fY73bSiEM3h2VZcLmcmhjkPAsa/vzyhJwT/hf8zwCAL1++6PAI28bzIAvOHETN/CiK1rrjWDakGakWFK1B1JqvsIzr6tmxMWrsxYxWNvRWUHnrUH/reMsB377fjNPWKG6Rcu9Fi4pZulYFdX77rsf9/T2madL3RA2uxMmyMcypIsZV42+328m6V02ceUpQ/wJGY7ZMn4iMGgCnoqtVWBRERcs+jbGoRsOC1yAaaVxEQ9CThw8eKWcpBZkWgIQujx2jj710s1QQ15OIK9ec1DJ5MRJahiEgugRoTE6z/AxSXQiqUuBVOEnJiyMQSxkqFd0kyWFOGdJxi+FcQOh6hOjhtOFG30kTB6/6QewFwGSuqAoXExcEJ00eLCvmfID3BPDqLIlYNEDIEjSXimTPnLUkTSddhQbpfadNILTrjpa0OurgQ8T7h99h2O2x3wtj0mmp8zxPqDnjcnpCzsJM81hF230pksWcFmRl90ggDVAU3U2qFZPOG58nwHcILqAPBN+J9t3ueI/d3R2G/SAbNYT14IgRAJTlDBBjtw/oB4fe7dBTAS8j0mVBQcBcPAo77GLAu3c7vH+3x/EQMXQR+XKW4N97UATYObDzKPOM8/MZ01SRCmNJE57PF/z000d8/8OP+PTlC6YlgSnq83LYbmysNsDmfrGSqMJrqZWC86tTYMCEGIgta9U2xutFThK4EGmgKSXT5/MZo7ISmIs4ANW19WsNB4L3Wk5l2cxtueq1ztZqV94G3bbHFgD5bQDb9Xu2534LHNu+vpWF3JzrlsG0BiWuleb0fa8dhSOC6WKqQ0U6l0mfxebuVneIJZi/ZtjZM78GheQa3y6nFHBmy3wQB00cxlvg8fpawPUqCNQB2JznZjxgzp2y7jaPUeYZgLr+2imQ0MZeA2Ri1rGR/fJbCaFtQmn7Oev3lqRanUa6+UzLvmpKzHxeAa9aOmE977f2zrcBrnVOGSj3ViLrW++xhKgtdO89Yhcx9AL6gwhWrlZKQU4ZS1qQlnTVLd1sgJ37reZPb/1se8dWF8bmUpuTWMfWEgFW1gmqsqeTMXnVV7DErQZKVQNRAZ0l6Ktg1ODRxYCUMi7azb3f7eBCuAIc0pKQkTD02nXbOdRSsJQEFDTwQl6/Zvm3oKiU20mVCQBM03sAjONxjw8fPsB7j8+fP+PL42dIgKrzvM1d1xhyzplO2hpMyBBVtXH+1Ry4Xl4KpLOxavBqLdVaAUsKKttu1cclvUaVl9mCRMGr4D0pKBbW4A8GphhrZy1j3n6urXGGzLvgPe7u7oQRNs34+uUR7ncOx+M9HEnH1GmaUdk64Jql29pw2cOh5yw5wVMV/6RWRFdAJak/CTAxPAL66OC7AYWBwox+iBgOA6gSlrQIcOG183swHS9u2rrN5inACwJiiQjRIydlzoM0vxLQdQasbBvXSGAsr1PdN20KUE12h9bnv13v22dqXV/NVjddvbDOq24QZk5S6RTTdswKuLsN6J6WhDQt+jyFzBCpE3kSCEh+GAap9EkCKOR5QckZcALutaKpFqVbjqUgZ0bKM/Y7AbGFyCCgmayFgP0h4nIe1ddAS9bP89w6O/d930gQlmBxJJUpa1npW9U86/4GsGiY6uczGHAeKc1axpnB1cEjCCtJmWulVHTdgLvjEUDFvIyYp4TT6SxayBoDugZIr36KVO7IGpTYzXwE+ZbYXT3jFTjQRm/M2ihk7fILCMAWXIfD4YDKFcNuh/1+DyIhONjcMfbhFjjfQCTqb1ucqHuKk4ZNXjc65tqSYM1u14JKRUoIgZu94609b610ohswrWjiGDWv8SkM9rlFTWyuqZ9KFbXSlqPx6nh731rZ7S6ulYfMfAXQEQmL29bxGu/KExUZGQKqQ6UbNrmOlxDv18YvrP5uTVm0tsFX57/10UJcq3/aZ6t9LNz4ZjpMGvvrfTJWBuBqT9SvtjmijcS2Y7Mdt9vreZVkxPr9rQ9kwOvt+7eHJEeuAVMZh81+coMxNF+xPQsjdV375/IS9a/sfmxe2704lS3RMdkCm7fneuv4TQAdOeiDrpg1g3M6nbDMWamhRQAFlWHQSxftIFScphHLzz/i+4+EOV3wPL7gMo1ISwE7r3ogEbWQIsAyM0peAE7iKLjNwxDLiKKgCPSrZA5rCxwdRdGcaAGZb5sgORKReyJAHRuvk1Wy2gQuS3t4UjIlDQbsFqUFt4o6kwFXkDbzAHKRdujkI7roEUOP2HUY+kFF/T3IKzgYCNF1cNFJB03nMF3OLSg9nU6YphFLmrXRwywTYhWQA/HGYfMOnFfhXqu0YJZsjnxjxrSuX9sDVIe+Ubr1M96cVGtoBGYU/Zx1Ua8O1q9NyO3xVsC3PVdK6ZtBhwWuORX0ww5/+tOfcHd3bH9zFLA/HK7e29Bv3ewqCmI/tHPuDkfN6KiBcPWqjM6cI1Qr1XTrRgDCWucOAXjINtcVBTUtInIOkQjLnFDqgtBFLCljvIxIi3TvzUmy2dVp6/kKYU6qiHFNWVlsAewYHh7sVjSfq9DiHZyKylpZizj7DMkiOi0LkO69QuN13gI/ybweDncYhj1ilIxMHz0ck2y2jFZuJlidlnhAS0Lh4KOVsgJMIl5cs+jziH6fYG0MKYWFAXtOdE2gAYXMBw+GQ/YRyRgU6tCEbsCwP2DY7XB3d6caJKJVdplHjOOINC9AWVCnE1xN8No9l5hQwXC1wJn8QJHNklg0NyM7hNbBSg7H0gkoOIe+jxiOB7g4oD8cEbpOWPRaGhEciUPvCnYBOO6Aux0wdA5D8AhckM4LxiQMuC4S+t09fvdwxHcf7jEce5BLQE44Pz5iCBF96AAiKUWeLng5yb/LOOPldMbnx6/45fMXfP78iKfnFykHcgEuaulCJdRCzQmqFahV7Ipo+jByqeocrGXk1r2v2lixbbRrkxiZ96/BBee9MFmUFZJTUkbCBfM0wWt2ruaqlH/pNlyTBqWBtLuWlLqISbx2steyAzQggitdN/y9ASy2NmYLerxlo976uj3HbYnk7T/W5kVbMHELmNk1NGH5DUAXYkQuUj5nGontOu3+lOHrFKy4Kp10CmBhdYAskLZnuAbQa4ZRwIdrB0YAAYct4ChMHnVIm4iyZck3SaDKYO2QtjZbuAbKDIxjBWJtjyJyqBYgsIX/aMk0SeQVAZoaFrWWWVsTmFdBzubzt89u6wA38EidPXHMaOubXY2piRA7UrF1ev1Zb4G53wKJb+fYFui9ZaDdvq/NLZIAQSoSRJPPExCDQ99JB8TD4QAArRTzdDrhcrlgXhJSqUjZkrh8dQ1v+QRbJxwQYEmY3iIdwsyAl+6I0oUuvGLYrQkBLauqpf2tMFrpl/iFFQkVXAJCCY2xSUEADkIAeIdxnDDNM05nAVv3x2NjqjX2TRXfMOdFJBgcSRdpZzpMFlDovN8ETN4RRDtJwMH7+yP2+wFEUr1CJCwxE7WvVcDcZZmFQe+hgJwE8o5eB+bOWYJa5pvbdHNdn40+HxIABSSgk5KTsZoCSY6AC7zqbTmnzaC0o7l14iagPTth/HvU6tVvtZJEm9fGZHU6Z65B3tbBta52KGh1zHEf4Mnh8fER02XEV3qEI4+u3+v+r0mmq7UnQE0XI6AMJUehNbtyhVGmETEEdL00j6q5IJckFQlc4Ui08hAD7h7u8e7+AcE5fP34iM+fP4GLSNhwtQ7QMq7knepQUrt3EElAR4ToBnjP8K4gZBY7BaBWYVcKa09YW9IExHzQIL6lSnt4rBICW+azMYD7vm97cc5Zu6WiMXkq5FqFmZcw9OLjEQNDP+ByOiGXgsIrq7jUimkckZYEX7WMuBSkOaEbOoQoTaTGZRLmTS6gUpENxCapsLBY0JJ7laVkT6r8lKEcArICuq0DaylIOaPzhN3ugKf0jGma1pgg5xaYCzBFjUVrAJ74Auo7wNbNZu5sv2/4E7VGYVDfmZCF6ZYTKIgkitdKLWHfEXa7Acz3KLVgWWbM04QLCcGk73u1t534+GRBtpbwG6jTFrsC5kRXc52IGlmArq5d4noiEhYd1goRAmG322EYhGVsNszsbS2MtzvNAxbVCCih+6/uw63pD5FUmmD1H0QHTkrLhY24Vg9tG1StCRuxYeTWfcPuFywJd9ZytloyuBYAq99Visj/CFnF9mrWJALA7Nvae+so5bpKYh2D1UaZ71ZrbZIV23sAXjPFxXxad+Vrlhkzo1r+kYWt7XgAAZhZCD3MFZwrMnJrmGnX6ZyDi8Ja9DHARdVGt3JibaJnY8nbuWQOjPpVW4CMiNT2aAqFrhn13/KT3/pdGzdbfTd+9nbctj+//l7m2/peey7Xz+114pMVIpHFrVfViDD2vqT+xXb9Ma/6+4brb658/dl8079z/CaArqK2TjFLKbhMQouel/+PvTfZkSRJtsWOiKqambtHZGZNvT6D2AAAIABJREFU3cTFewQfF1wQBHfc8gO442dww1/hH3DBH+GOewIEODRv375Dd3VVZVVmRoS726CqwoWIqKl7RNVrEBwA8hkqKyMjPGxQUxUVOXLkiFJFazYLVQvAWuJJBDzNX7TEbQ7Ak54nG6FURMv8tItLtG6iTpfV80nJphdTrFuyI+Wa5a5tccD3PXAbJNuQBK3kJURFimOMoKDCqgKowJ8tTkfxMwDJmxpq0YYA3lpYbJIPKZlDTSbQqMy5YMHB4zSBWFsZIzCGyEjDiMM0gmPEYZyUmg3CVjfUdcVlnrHNGVspuFzO1oTD2ihjbwOvJSKxvXDAA+EMEV0oISQVXK1aeuGTQqdbQLUGGG0MbQqqI2MZRs8y2mX6idxKcnQVNEO8L4W3s/X98ZuMAHkdIN/Myy6zcn8QqQDthw8f8K/+/X+Nv/u7v0NKURk41ytAhMNxvHEAhb1sR4Gn42FAShMALQUexxOIFtUOM/aPZ+37Z/BH0g443PIPwvou4KXGvmFWWAcgHUvVYS7WcTEhV9XcqrViTCOm8aCCvNbJuBhIlGsHFDKrbSBG5dwMrggMQSZseYHY/AWzztsQlDFLjDElZIEGWW0zUSNeq1h3K0aM6hipA2S6caja4agKmAtCSKox2b2rKkAsFcI7q8I3PLZOULo3qACr2k0VpiZoQw62zkUA74K2FCAccd6AStpoIo0TDseDBpUP73CYJgBaJjBfLpivVyzzBdu6QkoGS8YkBZFgQu2lsXshGjhGy7a6jmWKUcsYRDtN+xFjAg8jhsOE8eGE4/t3SNNB6XIEEDYwAUMgBeIGxhAJHw4TDmnDEIFIFWMgJCKUw4BRjqo/93DC48MRH94fkaYIUIZsV+R1BscAsoYOtQgu84qnpws+fXnC56cX/PzzL/j4y2f89PEXvFyuqmMjBm4WZ1LWloXc2Tx7WZprfmylaFkeTGWGzLR0TkW/3vVdu+MjDZDwTT0FRoramTgwYz5f8Pz0BJSKwzgiDRO2XHCtM7ai5ddNr7A5V/u13tLOesvm9OCBvrvbLfItJ+EtAKf/+i3w7f7oHbT9T58538fGP+uA3C3Lzc5v61mIW1fQHaBTW+NrTskvdx20xZioIpoWZLRA+rZk9Y1np9vn6kGAFmxVuXkngGYbg7NoQXb/1GQS9Hljc4JuyjzpFuDxMWgcFVGfwQr3tJQGtoeY89AcKzuH7/f9O+zf/X1y6P57+9HN/+4dKIDs7YrMCWQtraiWrRa6XT/9XO4BwVcZYLnVeruf8/49Ty693mcVgKDunM54LaVgnme8vLw07SoPQLxkbJoCQq6ArJCK9ru/5pTfg3SeEC5Fy3HeStb5+XqdNQX0dXy0a+N6Mx7eydGTe31p/b2dCMQYODQWwVYqluUKIsZ0OGhww4SUDkCt2PKK8+UFRCptMoyj7j3WUGDP1qt/1ZeD+n314+NMn3me2/OP4wgixtq6s2awrWXxYIKdaaNzjFhamXqbR9h1IfsS59vX40A534xNH+JrUw7Vlq3QkqLGWhHtqu3BqkhpDJwYA4x8rgExoD406dcVspdhuN8CWAJ+Z0SnIZmPwdrYiwmfPn3G+XzGsma8//AN5nl+01619UM6Hv2agWjX2XWZkWhSdtSQEKVihYLGQsYeF8G70wO+/fY7UAF++fgzfvn4C7Z1xZgSRLJ2/S1kurWatACFtqfqC4PqAxNAFBAjYUwHbXIgDuhm5LyilNRiFe0EqkBdKVoJIxaE9mu9Ae8WA6ne8vu2ni+XS2N7BsuIrnnDwIM2YMpZ7XJgIAacTkecDgd8/vwZz5errsXGOCMDUnVd1VqxLguGbcAwjg3EW17OYABDUKZ3jBHjMGCruQ0LW0Po2oE2fg2ydVWs6V0pgnmewTEiTAMu1wteXl5wvV4V7Bp0P+9tRa17stDtSbHE+1tHD4jp798SRFy/Sopa9bwpkFqSgA/KnIwxmgQOgTkBNGJZJ1yvozbyW1ecXwTDGDEdRo1t7xIrxWIIIU18F4IW5RCBEMDiCbTuvmsFmFsSytc1ACvRrRhSQhjG1sDher0icMThcLI5RMpCbr7CHpfbKvVlazGk6XGBfDPe1z0RepDeq7n8XGzyJff7X9vbuLcRfSxcAWjjFZGisXPzX/c9tdSiRAnSyiZRJ9bGx/br36DQ3cyRzr7q+YtW4JXQrgfBzf1vW25rtPfhopUsq11XSaJc9zisMSeb3qNLgti7rMuOf8jOAGNmhEH1vX3v3rXtSFkQRC3hszdm8lGuzZ8Cdh36HmDt7zHGZHs52nttIK50YIGfX9yf230yH1ugB8t2v88zrzc+kP3f9U/fksro59LO7AP8phRwtH1RCPv83q8ZrOTcQTrqntXHSSDO+dHPeBUm397zW8ffBtBZl4oiFUtWWvCWa8cm0klMULDBKaKVKlYBZLNmAWQINUE39MbgUgAkwHSotO+2jQO1II8dfdPH68ZK2ga7LxCo/odwWxSCqsK5pmWVhmStxFV0dTVNAs+gTGloHSybQaYIiiYky/aSCSCTRI8MpBBUS2NUAGEclNEQgzKdPCAom2pbbeuGeb1iviy4zGcs1xVb2VAAE7jNzcEAdqOwLtvNhKvF7V9ntCxraF9hL1XzJ7LQQCrIyoxtlYCgLCo3br3xcbDPBsUvt/8l3kL7NbDW3ttdAPRrx33GXX7FOIhI09JIacAWK777/e/w+9//3jRcLpjnBRSsnXxVhzJbKWVAaL8f44BheIAyEF2rT9lYIhW5eLkmtWyB74ba80GzElJpL7Mzg6djq4EziBRl79glMAd0XQuYgmkxKBvu+DBppzgm5C1DiJTZRvb+BShBkMyREiaoooMCYs24s/4eMSDM1mmQwAJkMUI/qZO6bcteohJiFzztrc09AFDQWJvIxCGhZtWYGKYJ0zipo2VGb9u2pmeojt2+0TMzVJ+5ava5FlQxcMJKGEDKeiymN1lK0RwBEyQAYTiChwnT4YiHx0c8PDzgME0G6Anmy4zl+oLr5RnbMoNKVlFQFKBucKHfpu1h21MlNSuwtRzNMY2sIKWU22ByPL5HOj0iPTxgeHxEOE5AiqAQQFIRUXEIhOMAnEbGMQGHxDgO0HOjIFLFxBFDCqAYIOOI98cTUgxIQ9R29mVGKTOEBXEa8W46AtcVz1+e8PxywTyv+Pz0gr/+8CO+//EnfPnyjPNlxrysqlMYAvKWsayq1ZJSUoZ93VlF6oSijUexEjFloynzQihAoOw1NLBsB3gUsLEJ1iH67hyP44ghRUwxYBomVKn49Pkznr48WWLEOvNxbF1kyc4Wg8oJeIliD2Z5oOCHdlvWTbtnwd4DdPfgov99nx28B/16Ov+9k3D/2fvPqH27LUXrf9/Bufvz7c5nRQgDYAwT5k7jDDu44cDQW/elCdUeIHQBeYOU2v3C/q3Jh551ByENTgFrqLKDa/v1dme8jYULY3fXD8QNtOs1Y9ql2pnsqDuY3hxCm3ZirEu3V+Y6GoinX3uA8hYIeQ+I3f+8fW3X6q/h91JEA2mmPTPrn6sm5E131/i1ffL++/0+2X/P579rAPWg4m25iIIQBGVJ+M+caXO9Xtua6UHjNn846F6J22YW93P1rTHcB8vnxe26cXDS9x/XUfK16myYlFQq4X5tl1Ka/lT/7D04x7YngguKDEAA5mXDZV6wbp9RasHD4yOGcWidAIUqcl6w5VVBFCk4TI+aaEixgXAlZwhLZ5vIWPd+n1rS6KaqAQkGThEzjsPQGE/7uu6BOfX4+tJHtX8+//rA+n6+7CCi1ejo2AQtTyNCE/b3vRoctMmaEIgrmCsgRbsiogNHizZ/YDKtH9ZmDPvqdXYuug7GDBZRlgxxGxcFnnadJmbG8XRQkhEDzy8zPn78iC3rutZSTS81qwYkTzhME6Tu96bi7trYQJgxiyCVDIBQmMDDiAggDQdwYDx8+Abvv/4aBMJfvv8ev/z0EZEivn7/FVwofqsOhEegeimhNkLTqW7rshp4S4TIpE3mAwF1b95BlECk5cMohGF0UDpgXXegCdi1/voSOp+Hy7Lgcrm09egMsjYXqjK11Ih6h8zSGIwpBnx4/xVKKapVuyoYHlPSRnZpwHbRZhMbBOu2Yl4WDNMIKRXrtmG7XrW7fYgYk+k/hwCQ8pZSSqrbnDds1QACbzYkgrJkkyeJWJaMSozp+KCxFzH+8ucf8PnzZyU0xIBSYmNjNcZdVvavxg0aU2TXFPfYEh5z2v9trVTJKq3S2TT19QksjG3NmC9adZaGGaVkHI+mexkDatFEfEqMh8cDan1EYML1csGyLPj0yyccjmMrE3eA3vffGNj8e/VTq+2ntRYFkVnXi1bsKqvVmxa6bfEy88vlAnDAu/fv8fjuPeZ1wQ8//hXzumBbtRQ3pRF5y8rONI1DMaDl1oZ7qbSh8IZOiHU5LVJRofqYDtJ5FQmRrnV18W/LIl/vczs4um8cftAel7VvUVt7zhIEdQwokIJ1/vu425duri3wMv926W6vExFkCMBud9URZreHtSCkePNc1Z1lAUi00Z9nGb37rYg076eaDxiSMVjN37uCsGwrkvlLINfIJQyjzvM4BLUtbH47QzsGxwRUQpAAdwkaIIpbws79cf++AEMcGobSr6X2qPs78M/duTm7j+nvZQfB2rn86/a7r32lt/yim/cJ9/d0zjYJBhXjh+PQtvU1X/gGSHSCGQCqAnC1f6tNho9KhWUffv34mwC6Uiu2WrBugmVbsW6dMDNUq8Z80fYAgBrqLNnqrpVRJIAalOo0XdtkDedjUip1XjfEmFqwVUHQvgWiXVEIQNVgmQWo0LbCRcT+BmIcFGARX9y784Ja8Xx+MYeVzBnX5+UQrGtsJwxqjSqYWVlGISAGBUFiIGPOCVJkTOOoNHCWJvibkgrF+saYc8HnT5+xriuu86Lf2za9DyuXII5YS4ZIhZdUNPQZQErDjcFSx9WcKmjzgxso041JlxEgYQ+PDJyDTjKBZSfcaboxYXqaNwIAtW/2N3BrHHG7QO6Djrcc93ZN2jOBu17BDjZ6cH88HvH4+Ijj8YQhHZDSgE+fPjUDMwyqEbZZcxNA55Rv1sMwYBxHxDCCDADwY1235mj27IS3Am/vbrhvhWjBJnxedWMZSUvrVEtNLcCyrJbl0CYlIgKODIh2OQ5x1FypmNBq4j3gi86EFANMTLjf1N9IBBxVH4FJ56pULeEsonMlL3MrYWcTgY/Wxl6zjlsL7pvxrrZZVwKPCUVWBVMsKydSULbNmHJGuwcgsFIklhvAQN+3leJaIwstU2dU0gb0FYQsgCZBCZESOAx4ePce4+kRp8dHHI9HxKiZ0cvLM7b1iuV6Rp4vyNsFXAtSIESqEGwoNaNUxmblROKsFc9iQpCrmWET/63WSYqJwdZeHAD++e/+230in+3P/5vHCcC/+e2PBCvx7mEQg2Vc6QTJPgmkV7//f8WxAdhMyW/CO/wn+E//b7nObx3/5X/3X/w/fs3/Lx2qS20ZSmHTH3oNfPWHB6u1ElBv9wjfv6sH8e3ztANw6IDKivZ9TUKY1ptQS5Yp81v/NIe8A417h9NtfZ8UegugE5Fm29p9ds9YsYNVwRpEkN2jn6f3Wdrv1Vv24lvAXF9m2zfyuA/Q33oH+95s2mwQuGaZZ5v7kiMv8bwfjyoAB9Xgzbk2QNZBsF439v4+1I+QJh/Sd6Xq99kWAHTlan4fCtrp+PVMey/Du2/w0b/Hdn6tHcE4WifksGDLGdd5xfV6Uf2eqKWT2mE0IvAB60pYZtXiC2HFyBNS3JvPqI+8MyAJaKVPev1b5mxLSEbVJgNpaZgIoP0HlKXSv0oNXoyNZsGgXtlkB0pBS6S3kuDu3ddqHZRfA9AtOGpJRS31RAhgYXAEBkv6atbQWNbbgnWz7qO2jzRZC+nn3/5nH4Pb+dEC4JwbqJS3DSFGPD48YBgGDOMzfvjpM3KpCACCOPNqX4vMrFqnEsBZg6vCjEIEiYwStGrovClAFziCp4SRA8bTCTSMCCniel3x88df8MsPH8EVOJ4OGEKEIKugv8te1IIiFSWrLQol7oGpxTlEjBAKskk7sCUvay0tYPaKXV1P2nRA2ZreIV2TUdfruQHSvlYANBbpy8tLa5TSA+Cl7rqBCspV5HXF8/MzaikIIDw9PWGZVzw/v6gWVa2NhRVT0qRlVFJCkYJctZPrtm3m4+oar7lg3jLKlhWMjkETMORJHa3SaGxxosZyJlL7fb1eEVPE199+g++++w7Pz8/4l3/+F/z040/KqGNurLjeb3cdPbdPPjYAkNIIyfVGq1W6fUbn32bvQwFs2HpS3WbCct0wX2acL2fwVbCuM+Z5QExanhuYcTgcMU0jTqcBzO9Vw5gELy8V8/WCXFZ4OfPpdFJRf07mkxJA1eEAvb4ISq5AzaghotZuzdo7Zej6WZalxaca20YcpgnMjGXR7sjzuiLFse07pnnVbNMO2Pia7e0Q0GJL0vJ12D58Y/dtrwORgnONrXuboLnfZ0pfRdcdO8hSFSCA79+mBSaiFXm8Q3Ai/XlE5Xiq6tn/2sEdOWWPtDtb1e36YgDevl+q5mmfdOqeQAkuIq0TOAsaa9L9hWjaibAS72Dnkax2xgFugfpgITKGMSFGTfSzJamlWpduvxdmUFH8SERUBqnfI9sz3e0NPZjKWmLc+1L93wD2js+/4ofg7vz9z/q98f68fozj2H7nfo+/3fv3SGfHWPYSanDVxIp9bvfryPzKHSB0wNG9vz7W7/ee/utfO/4mgG7LGWvecJ0zrsuMba2WEUIT8YR9DVFmEahiW1cUK7kkCk1zQaCTIUbtCkTCyHnVkksB0CipST8LZ3DsKPO+X1MLnhm2ABvQltpC9KWiHTAFVMkaPsCCfnXYY4yWDWQgaxceGKjCIHVaojq+QwxISYWEIxNSIAXohgEpqd5UKRk5b7icv+B6Wazj0gXrumExdlzZDJCzF+vGTnUmnGmwO9cQVvCy3k92B62UGaWK/rWfTXZYBqaBc/o9qmjOsJCj9EaPBXdmR8/Zd/bpLyDG59zB2u5nNwGNTZ434jR/b+z8dvRaLnq2LWcMacDhMGEYFVg7Ho44nU6YpgOm8YjLZe9SdTgeEGJEtWw1szLpwhDVoRs0m6R6LRUlr8jb/ozXy2I0+2KUeg/YLAsKfY/MAQRGEUGpnlWOrdRsD2Jc98Se0P8W3WxjHIwtQoiDzuWtFKBUNaAcANGMYrTsYwvQSEu4vE00EDq5LS2joqidszhEaPt0zbhnUSd9WzYQAUPc6dD9/UspiBwQXPcEpitHjJKqXZMVEOSojIoKFNlQRAWiFdTLuvFUpZwTCBwqOEXTgtBgNwQGxWBOGZm2jP5hcubqgOPhAdPxiNPjO4yHI8ZpAoFwuTzj8vKCeX5ByRvKegXyiigrIlcMAnCpWtpeK4oMyNCSTw4RISUgsLHGstkVnZtsICFItSzH8RGn7T/AOf3p9eT+d8e/O/5/cFz/tDX76M6xm35l/2kZiIizDXcYS4TMtzZntAPG3LkX22BKtw/1oM0NCw8myWCbBwHGkLDSMfcx3E+AegzucLrNu2ea9U7iK9DI7LDLIDQQxsE4B4IamOisxtvzvgVk+dd94OKf60G8/nduGG5dMN7/e79/aV2v33KMVaBcA/9qgbaDX0TWha5COzpXeXXvnuTy69/LRACwyoUOvdk/4f/twGEHPtYOrFMmqe67m4EdfWm4MpKq7X3efdC6QZLuX1Gqdu20ZivDdcZ1WXA+P0NQVKfpMFlSLiLWBBm02/W6rtBZOLbzBuamSebgmLLmrLufdVt0cNWZSWlILaBU37EAHjjBG/FQN8d21vC2bYD54YCxalpHRAGsERuRoFaGL5VatJPwHhTrG/CqCmcQ7PND9LohglBbspEZYB4RAiMXb5qhsjb7ezcpJNNSri1p7s1BnMXrAJRW1YQQILlgqwBLReSIdDgAiNgy4en5jOt8BdWCIDqG5tSCSDs9OjMwEFBDRA4RVRLWzFjnGZuVjw3TEXEYUQQQHpCz4Jcvn/UaLy+gIjhNJwQKWOYFFDPAFcMQUGF6Wua/1mrzgwgwH7LChfClBYMhCPZugqQNtbAzqKuxkpgDUjJAtujc5/CAdV13rcRu/SkDc9aGf6WoUHzV3yOLpYSsARZ0TZ23Z0CASAHblgErw5umCQJgXhesq3Z+H+KAgZMCjhBEyz7kLZsskIGB0FLdTbJpFWuHza0U5Fq1EqMqu5FIWT/ewITZqktCwHg44HR6QN4yfvrpI/7yl7/gfD6jVgUqVEd57xLuQJyItAYepRQr6QwYjgMcjnAYx/FjB15uQQJCgYKxXLX0zfV4a1HmbJEN16WCSBMIj4+P4FARExBDxJAIp9MI4B1iCvjy5RNKrTifz6o3uKw4HI4YxkkBFo7YRJP0wqmhADrH9Xkia/l5K9fr9hidXwGHwwFEhDVnvJzPuHz8iJ9+/hlPL0/W4CS2Z/U9tQH7kAZG3Nhw8pitT7rbe5M9UXcDnog17LG4RRP+3DCG25LSTmapfz+wOWzl+1L3ZgrKBA6tvNjfZTXCkKA2nWzAY9zXbP2b57SD7Zn9PgqAUvtxEf8PrpG6LEtLdPV7szb7YyDnpgJfyGaizzcyeQFLUAZ7RyUXrPMC3lbTQBVQYMQQkKy8NVoFjyZMGaWYjJCNKwzL6VKW+9wxQJCI4Pr/bc8G3XxOAd3bMXsF6rU4et9HGm5D9WaM732i+3dwD9Ldg3g3z/DmZ/aqDv0WdbNbcaAdYSMbI6sqIpNgcKDZ90ai7lf2f791b/fH3wTQzWVTqu48Y54XlKyosnaFRAOUvEEDiW3e1tUGnrmzr3QDYEjOqGyg2bZApCJFRoza9rn4hmL34U2lBAqqDXE0gCEgcGht3dXIB2zLipZxr9p2WUS0GQUJxvFgL2A3tj7wBO1woqAfW/cZE6yPilTHFDGkiHGIiFEzgoFIS9CY8OnpCcuy4Hy+4Hx+wXxdO4FSva4Qg4aIkUPTU8i5Atui7ZGNWu9aCf0L7TulAWqUg5V+cSBs27WNuX8h9fVkJ/uAeNbTfmYmCjppATRTYYGP7M5VezN086/OcHegnE5pOEPAs/Tu/bEZN5TdYGidt200pF3WDift3vT+/Tvt4mRdeEPQ8tKL6WJ8/fXXOJ1OKKXg+eUZpRaMwwiBgkTjMGKcpiYQu20ZJW+oMqDITkFdlkVFIQUQ0jINYQYZ8wyVUKQiKlcY21aaM8aW4a727MUy1F6/jtZVsQJFHa7peMCSN2VixKDjtClgO46jerOGMjv4V6pqBKj2jFPeyWTn7E5so6wircMMsDuBBCtXJEGICdM4II4DArQbKpWqfzPrmiSBaKd5bULBhEBRS585gTkixBExJpTCCKxNZSioVSgIEFH9AtV9quAKTEkDIsWNAxADNAsXUMEoCAouhgGRE0IYMB1PePfwHsfTEUMMiJEBFFznM86fP+H55QtQV8RICNhAsSCIzlLdUBXAFI4ADyAEZXKEiJhG3di9YYYFKIKAKglgK62aTphOH/AfH/4rpON70JBQWFR4PDHiqB2Gj4lxSIIPU8BXE+FdJEyoOAbCGMi1gDV7YyUA2onHKOkigKx4uX7GVi8YRsE4agny8nLBL99/xL/86Z/xxz/+CT/89BOu1xWlCrZccZkX5KLzEOIlw4xcdkH2IAqQiIEXpXhpt25Iuer7quLKc7q+3fkdQrI4QwAWMHknUbM3Imo/pwlDGpBSRExRmSLM+PLzz/j8y0dcrld8/vwF2+WKmBIKKs7Lgs9PTwghYuAB21pwWVZsOSNC9QCH40EVDpqdMWeFGTHsQSqZ3VPNDw1i//P/5j8DAPz3//X/0HQ4fHNler3Bt03f9g7QzhKHBTsE7kSCO9yBeju570MOIHRZDrgDQbQLNPcOW3tOAog1weX7qNvG4OVupd447UEVym2P1j2bLJDaM9Jmv02km5m0yVOwRhDVHSxNpIXQB5KdQ3/jCaKxPnxYFWDTfYFZhcYBdLpGmgJqjr2PYbfdeEDgAYlfsYH+srvefc7ITaKIBjX7Z3pGz61j9dbP7rO26Fw91cHTeeUAnoqS23tqAEUXHHTzrF3LznkDotncu9dovXWE3ea/nsciZDZc5xnI9PhqxxHQG/Voo2kFaqWDqGaqqN3ur7szH/ay09sx2t9DIZielr4gEX8GMTBs91N8zRHQtB5cFNybqLgvGJiR0qAsApNUaYktWBBJFsiFCIDAuSCEgmk6YDzM+OXTJzy/vOB8LkhDANEIlb6oKADCMAK5qOj+qnu+M5U4BNSq8ha7hu0OEmdnLNViHVJVB2/dNlyuV+2mTtaQCl41geZXqp0BWnOWWk0sHWAWMGmiTPUQlVnHFnuorVL2ai0KMsLXiwFBHmBUiDU7UN9C9bcEIDFdSwHVav4dIyX1mUuJWNcdpPPnb6wZW3u1iiWouS1IxXO9fE4gMuh+A0ZiLa8vAkjRTt7ffPUBpWxYlwtq2SApKPBqtjXGASGlxgpXu7KZzdd9qIg1VYgDhumgYO+8YrnOeHo54/n5RTuUhojIrMBIraikAGcc9PcjKZimBANlqZXrYuvaKnRkD1g10YumKUh9Qpdjs1XeSVltNqFCQVCBYDqctHlVGiAwJgwJylaw5hXDMCFX66K6bTpHgmoJs7F7cl5BCIAUbNmIGUHtzoevvsI4qiTMvCzIv3zCtVwb+6lyNfuksRELICW3kugCm1NBWTuFtaJqWTOWbcV1y5im0fYOBSGZoq4WA7OZGO8eHvHNh6+wXq745x/+hO+//yuWy1U7wtrccaCZQK2S6Xw+g1nfz+mkTLqn57OCGSGp5JLONI0TzYe3QBcxJWUPuk22LLgnmmMMGMaIISfVri4btm1FFe2aejo9WCdc61xc1dc8PZxS1LzNAAAgAElEQVSQxgG1KilmmRdczxdtUpILhi1rU8M4oICsY3vYK7wACLR8vPfznYEYrOPy8XhELcXIIMD5fMbTywuenp/x9PyMMCUcT0dMxxFNb8/26VJ0L4fse37b10ltvzITAzSRbmsPAFctY22aZR2DF0BLvrltI5BVC5GBeBoPBR4sft87P4v4fl413hXR2IdhdtMTfgagomqjCCkgqG5fgUnl3LHn7rCmHbDs9lDA6SnG9HewS3Y2HNmYwRp5AYTKundWCAIyCjMOwRMnFh82V0LME9MGbjpGrNU8cYSEEQiLgrcs2iAtavlqtCaVwXSM3M/w8WcSCLJ2jpXQrulED0BML3T3tzQ82RM45vJrTO3rx/cQaTwztXW2l1Hnz4r5iU4ZJtnLev0ijdH56nD/RmV2mtyO3S65D8/abd2BVTZAzuH4av4Kma8L25fc1/B70AZjGhO18QAAkwjT/XWfI2zjQ92z/NrxtwF084Lz5Yr1uipzCC5G6DQ+o2wa/OALyplAelR7wN1pZWY1mqVYmTWhFiDDO6ipIWhaPMEp6qqtNcZknTctABDBWirqJhDJWJesGy4HMHkQoZs7u2tLZJRiNViutxKYECEgUUAkpKAaCYMziYDBssUAUMqGZduwzirqm3PG9TIjZ9c72dCEsZPS0UOM+rasU1CBZbYsWNzWeQ9Yik1oVpbUVjIEqmPjh4NeLuxOfdlqHw3efR6wQPVGgkZacOCaBy1bW3WRgpJN1tqdu7bJa97czRxQB8gMwU0HIGdGABCGwVGgolmYWgAEBg8KFo0x4Ntvf4fTwwMeTicEZmzLgi1vqMIYEDBNSdmNUTtt5ZzVOY+q2TEdD3ofxJBcUUpGhXYJ3XKFUN47BQNYyraPB7k+3w45AmrQc9VAVduO6m5RzUx5h7Vg7D0xxmclAMWzqwaCbLNl3VULgCpwmEYzGoIUAoYQ1aHP2lFZMyUMdK2zSylN8FyNqlkHUacdDlTUAhZtchIYGB8fADLWHHjXHKtFmYKR1LmrBWlICCnp3BPNdG4ZCDzhOB2ReEJeK9Y1o2Qdh+W6tOYllQiIEYSoDyqA1A3bVrXRynTUkl6KKAhG8Y/gOGAYjzgeTzgeH5DGCSno+pSa8fz0GefLE9blgpIXoM4oeWnU6hQCECJEItZNUEqAiNL9B3N4ojnFVTIka8n9GJN1oGIQDyAekYYjDqd3eHj3DtPpA3KYUAUIomMbQsFIhJEECRVfjSPeHxLeT4RjIhwYGInUKItt3AEgqkBVBoRrFkgFlq1CouBSzuC4gFPCss44P634p7//F/zy15/wL//4j3j68oJao9qmdQNTQF4UQNYAi1GLoJRF57uBNltVOQERsUYhFhiALauudrTkiq1k1fU04XRlTivIAtGybbLyAgeIvYucayyNw4hxHHG9XvHjx4/49PFHlFqQpeDl/Ix/9dU3+I/+w3+DlQR//+d/wvP5E0IgMDZAMuKBkBegLBmP4xGIBIkGPrptgbJyQ2CVhmhrUkxz7dbhGi2zDOzZ217vqgdm+oNgCR7VX1DbZuyEWtXJb00tzNERE+twEI+NfaB2+G4jJ3di0fZVN9OeTILlRN2JccenwlhCaWfcioiBMLuDG0y4ey+xMmtHaKxbEUGuGa4Z61Fj6xAJaiLubJIQYpn92+5a/izm6KAaK0rF2IPpT4qVwNttNBvnts3BRKKgiS5QY494WSYYKNvWGG4eU+jXVgJDaMw23L1fbzDgRw8+9Rn+G1iVqIHV6pOQsotgYB1rR/f+8MYsLenk7xBoyVAmbuW+6iOp7+LslBswkTyRZFChgVAiYonDYtey5kYECIqtdbLEpN6HNobZ9B6CMqjXrYCLyTtYwk3qPj59ltz1i5rmL3aGQwPwAJMQUcaDAzZF/BmUoSe2pmO8fR4F3BNyVYFtHXdWzdKtIFcxxjzMf9Rr5Jqx5gvGYcRhPIBI13IaYJpeBR/ePSIw8HI+4/npCdu24Xg6YRhVI3bbMioLYiSsywXLckUpBzw8PIJiMoahgDggBlYm03wBsdrQKhVbKUghmP6UBp/EAdH3AIElV7R8vAmH1wopgjRYd3av8iI2lnq2NS7tXWgC0GetejYxRERKGGJUwLgUxFG7y3Jglb+QAg4RKQUIArTjYA/2cksIqK3UbtqE2Obceb4g581kRoYGvrot9EDdg8hqXUq9iYjGVwwK+rzbtmJdc0s0US2IAaadWlGKggtVgPN1RqmCZM0JhqgJwQT1oQSCaXxsa3JZMy6XF+1WfL5iXhet3PB9zHzuzX1rSsjmU+6+tn4mpAGPw2hsyGogRcGaN3BlpDgixdSCXSZqeprButev66pEhUGJENV0yHbNwYKhTArIbYsmZSBa4YMjlnlBrgXbsuJyvehaDwoOwgJqLQ3mVmlURasvptMDvvr2W5UP4YinpydcXi4gnOHJqFIrhKtFDwSuBbRtCANhGJLqcQ1q67NU7fxcCkokcBhBBvaTaBmvxzQipHOc1b+v64Yf//wXbOuGL1++4HI+I5uGpoP1JW9AGbWEtip7SU3nhpfnMx5Oj0jjgJwLLmcFGR8OEwIDOxDAtsda4G32Kueqeg5QLWvtOJsxHSLG6R2ODyOeX77gy5cvKIUQw4TD4YDT8T2YIkrWGIDI4lJWksq33/6uNeTxJh45vyDMC0KKeHh4B6SESJbkrhUiWat2CDjEBCK9r5QS2Pb4GBlDiih5xcuLzufrvKodygUcGKeHIx4+PGI6HjBOA8JgzDsDMgTaaVasZE0rgozEYiSJTMqgBxKkAlutgOurUgRRBmRnVPs+JtAEsJNCtLO5AlxKaohafun+kgRUychbbXF2iAEFWg3DHZCW7VqNQETV5pSy7tHsKECB1W74Xm3zwPIEzVNs7OIOsCJSD5m0GwCkaEjIxKCo3+OguEZ0P7AxqCukFJRgVVLVASG1+WKu2CwbCNqRFVB/rvAIOpyQSBuFjEdlb+eyqu0eDmqvpRhbF7uMvAp/q50YApZFWb1aIosu2epNVHYCC8fQgKha1EZX33dJEZfaYQ6AShfpF/sYi7gPqTqcVSpQYGCng5UGsL2CTJ2EJSbroMQTS+fuvn0V7egr0mwTIJCam99GCBCXaOIAsCAX1U/0WML+s18grRRrczggC2kyrKGcxhA13zyl34bg/iaA7rIsWLZVX5pIYwNJUQdXjEbpZQawl8DSIaKioNn+Apo9a452X3rgmQBujqaX4hmbDKyilkUfWgzdVA0vHbRh1E6NzBpMMLszpkBdztWo9yomHEJCjGyBCUBlNm0HzbBo84DYFql3PFpXNWzXq3W3XRZsWwGLZjgrAObBzh12YUiOKjxf685QyaYPY6WSOmluEe7fOnycGz24HR643H7+NsP++lz6twKG+g9/Y2gZPMOE37iZ/gtxy+4QdOv4xqyZ3uoZervWwNraOwsBHDFMJzx8/QEfvv4ah9MJ87qBYsSaBYzNAuxoAtWEg3U/8pJWBYUt4LRsJswpV2OjdfvbtmHLFRQqihBcY2t/HA3kLN8OkGoWgrVzKlmAF6OCWi0zwbedJGNKO1htgExCgET7fHSwWA0fK1TfDIDfUAy8l6/yLsKpwJoFH7YxevZCqijwxGwOSFBRYgOsg4pkAPZuqJ8P9vU9m8OL8RVQYAQEeJt6qaatV6r+IcKYRtUmKRkVyqpTRl5AoAqWgDQyQkygNKJyQKnUgLnp+A5xGDGMR0yHCcMwKThUK/KasTx/xnz+guv1GYSCECsiVVDQ4HfbVtQSEZOuReGojFYKBkIABOsi6OMO7a6k4zsYQPiAOJ4wTCeMhwcMxxN4PKEYIymyCmIPCThOhONIGELBNw8JjyPjmAiJgCierzOmnK0v0SGx72+QGlEqEBKwISMOjGmcsK0z/uEP/4h//MP3+POf/oJlvuD8/IJcNFid5xXLkkGUDShg1eJqwZrAhZENTWhgTWNHFw2IvWQvEANJQdVSCvK6QjthaWOPISWkSfU31V4KUppwPB4b0NWXT1+vV3z8+BE//vBD07IsUOd1HBK+++orYIz45eUXHI8jctYxC1FBnwzBNCSkYQCNEcWEhhuW1WWRS1b2iDOK3Afvs3I9+6svGewBh96G7owu7+YNA5UUPNGNmzrGmOtUSjPAe8mZsmEcgPP7t4QfPDHWzJJ97cwpdADYW3vHKx0y20Nh59/3g/53d6kD10UtJTdHTJvFqKMnCGYSdO7Um3KP7ugApLaRw8th5QZ4uP01eT3+bf5Wa5p0y3ZrJU4i5uhb4Iud/aaaXQYoh1sGWP+Oe92uV0DjG8f9vPFz3T9PG2nTMb1nuenYd0DW3Tj099cz1G7nKV59X4HrsIN6AnjLjCpqux18UfAstnuqVPX9+vy+a05wP3Zv3dP91/r20QQz2JMJxtwV23PtptC6A0DLUaXszr4/c63O3ixWClhvmq3oZ6olVivWrSobN2nytprTP6SAx4cTQIKXywWfPy+Y1xWP777CMI0o0MBrnEYAgmVecT6fsa4bpumAYdBE27ZtyrJRMTmsq/qPmihgZJfSCCalIS6tobpB22aJENwCY8qMBgIFbYC2bgBYNdQ6wFRL12BBjC9+ZaoxRUgJ2tysn7P2TmqtWPMKb9rkHRe91FZqgZTchMz9vTrIVmw+hRDhYP3OmvNOr657WG7WXO9T7exHB7AVTBapWC8X5PWq4AwZCEkEIca6Zfzw40eMw4AYSBsTDSOIrCQuqAZxLoIta1ORvKlkzbapzYsxGABUUaio/E20pGpQO6jjSwD36yEYiBC1G6+xu3LRJiy+vgKbvqtUECoiqb8Wgp5rmiYFOoXAMSLGCRWCZd1Mny8pe24UpG3Auq5YlgWrJRkOp5POw3FDSKnFNLWqnzZwQKnAZsnrWqs2NZgOGA6TJs1TxGE6ggNjnVVLe75etaw68G0cuBUDKRLGIeLhdMC8rigCpGkEh4TFmKLrumI5L5Ci2nVegk7ESIFRY0TZMray4suy4LMIijWxEREFsoPaJI3t9nnszeAIOr/mecb3f/0rQkxY1xUpmV563aC7sYPMd5IGxTU4X89v1XtjcACmwwDBQ0tMeDwZQjJ/g5t98rkOAMMwGNNa/fLrrOOyLgvqskAqIx5GHI4RMWpCVGUbFNi5bovWmnDAEJVZnZe5aVBumzbIWJbFEusRw5BwOJwwHgZQ9NiYWszR9mXZQef2fqvXUigLWPWvFRwR7L8vZpCrxT4aD3ed5EWTmSEGNIkM2fVjLZUGEY00mAkxstmfAqcOwW2VKJstS2n2xJm7+jRiIarOl3YtMoBMdh/E9z/o7tzFyRbfQAkHlWBNLxXUDj5WImafTUZC7nwccSkNYO8QrPvpXjlz21zAmxVWYVQijYFTwrvTCeNxRAwBa150/UVN4Dm3x5u3kT8PdNkABBrHpl3u2I4fNz4PsSVTOskFEIJmOl/t9/6nLzO/Pa+vOpXPkKBgcO6SNNpkJ936ttZzQGcbv+7B4DGNvXW9HlriEZUajlXNd1BQeh8j2JtQvoRp/ELa3qJn9nJPTXZV2n9Xt1mrUrvzae+PvwmgU8Bp0241wC7QbEi1azTfjEMH2PUbar9R+2T3Guz+j2aD7fZEwZtSBVpAoENEhibDgDnAnW29n5K1S6RuKs5cCgjmeB+GAGITWE2MGJJliSMiVzANgOzGcts2zPPctAzO53MD6JZlaR1X91IDLTf1Egv/08Ynrw0sKQYiFeseRSKtfrwfv986bjIQHlnjbiG98e/7o70rxs154EFkCyTcqcPd1/6GYDCW/rxSvywAigFb0XEIYcA4TIjMyGvBtmZwJKQ0YDoeMB2PmB7fYXo84Xh6QBwmULAS5ppbV74hRQwhIgbCvK6AgZ/OKGArDRARrGu2jlD7UQysK0WAukHotQi+vw9/l+7stqCaFKBrWiLAjVHqGaS/FrDoOWx9eNbGshBExvKoHlip80e2KYgooOFBaAMGLcOGQlYC25c7QR1YN+5EJnJODZwTccIuGgsK9uyM0DJFe1BdEaiCpEJkM/adMSZINTe02UTBJgVgUfAarGtnGK10N0Ioooo+RzpMGI+PeHh8jxAH65CcoLqXukbzMuPy/Bnr5QXbdsWQCJEGA2cV+E5MViKr9PsEdybVvA4M0wrKtu/q8xIFCEfE8YA0PWA8vcfh+A5pOiEOE2Iy4A4FIQEpVqQomFLA43HAuxPhNAIPEzAxMEAz5Dfbvvhcg+JyoYJoA6C6L0qGEIRIGFPEfDnjz//wZ/yv/+Mf8OOff8Z8nnFZzshlM4dEQAFIY4BUhU23rCzce8BB55hucl7Oqvpc6iiIBbYqtG8lwKSOYXWWGfYuqW6XvAmLd0tzJ3mwjoSfP3/Gx48f8fz8jLxtGFNqmaetZDy9nHFZVrz/8IgPX3+DD199g8+fPoOKzptigc00qSYlDRGVfaPd1wGbo9mSWrQ7c74f+dEH777223k6h7KBbW0MiyPZN+cNITSArtlJMXYH39lP8tV3C9AQoQXDgFjQjvZADq5QuHV67veQPsjt7VJ7Rtcjvd9HyH9Px8n3PO+QuP+O7hckaGw1P1pTBL/r9j9q3/Mt5i3/wa/hINRbABos+Cql7GxFkTZHd7B273DbNzyAACzSWFmvz387lvdAU2/Tb9/fLRDVj9kNCEm6DntQ4v7337p+P06/BSL2/sL9XO7OfPP5fv7fP9P9fuiJr98CJfuE1f2zVZEGTt9f1xnQ9xp6b/lLb42VP4/7cj1Lcden0g7sMg5gJIS4d9IchgFpSEAgbKVgXp7x/PKCKoRTfYdpmpBi1P1kHCEVuF5nXK+z+hagvTur+dEK0lUsy9z2YW+s4murFIsurBQyxqhssOJz1ipEWFDrhss1Y11XABrsx5Dantv7IAr0GuOACQBrAynTKfLS0378RARly8gUwJwRAoyFqCxhiLTg8x547ef5YELnDlg2wX7awWj/uYNHDkw7M/ZGmwr9eiD7j5o9lW5OaydHYJWMKwjXqHp0gaGas2ArrbM5GIAxDjieDgasju1a/ncIjJSCyc0A3vDkxt+y5yMiIEYE289jjcgh27sJqqNtzDqIyuh4yeu+Jn2rUduWRedvKQWhs8n363y/350U4Q0l1nVFWbfGMhHRGEV0YTb9up9++gmX8wWPp4dWiZRSwros2IrriYW2jlEqaq4tdkwpYV4XEDFOxxNO796himBZVpRcsFwWzNcrXp6ecbmcLdmeVUIFMH8RyNumIFPOjZkfU0RM3iWX2vtG3vcssf2jlIKX52ewVdeEwMhbRomAJ0lE3EZLk3JQdpr6wv3cbvOyZpVesu70Djg76eN+TfRzuz/GaUSICvjP84x5WbAWLdNl6+IbY1CbAai+eK348vkLpKzaxTgQvPlbycoEbnsO094k76AJ1HhI6iPKfm/K3lIfmIDGYHd5APVXXaFSf17Zyzz5xnZoGWNtrpgnMUHUADxBtRjcxtt/H2hAXEUF2M/tRAT9jEpeSfO9nKBxkxCw6j59F34z5mdhh6T6d9K+uttnnRUPiwEVH7lNKtycpx+Pt2JAu3o/G9R0WEwosHjJnx2tc3Zi4HSccDxNSEPCskQs1xm1ZqBqJZAXU6k/polkIZW7qSCMw6CgX9dpW+fv/V7r8991/6DMRRv/t54duN3/fRzt1dtzdzGu/kZrWtOP1X5e+5xpNjhDsP3cSmxrO5teywkuxMGqSG7P7+dg2nEMgucHBdqS0ZneAq2HrNqPAWqD0PYfA4Lxb8d1/iaArr0EceffhG0NLW38yPvfw/3E2rUVfMPX0pfQNLRU+0E3sW1zBkdpm75nUQSCcZjalQLQzuuLUhC1/tpqs4cQEVJEChEUA6Y0AIGQKIBSxBBMm8LEo9f5imoAnINwy7I0kM5LXfqunu7oEQWUfOvU9452haBmBSXYrALVCpbsrxql3G6ub73M3/peX/f8W7/TOxj9z9WhsMXWmVH3L1oQ1r/t/pLUBRvw0AsGkOgRWMspK1hLZBigkDAcBnx4fIfDdMD08IDD6QgeJ9WpKIL1fEZMyRwvBgXNmCXLpMRAuDyv4ACEMKguAwcb94rNnR7SDIzrE7SS6WhU87vguB+j+2zAXgqsf6neEpoR9zHzuaBO5WsQz8+hWdbdQQ0mkAy/tnchJOxAmTFPKwGX61WBO5+TZlyFdL7GEBpwjf3OdUMWQIqyMeXOkBBug7H7wEr8BFSgemnZAM/d6FUCcqnIWWnDFYwYIgIPBvqYlgIzqjWbCCEijhMe332F08Mj0jAo604q8nLBZkzWy/WCbV2AbYXUjMRKIdf3R0BV8PzheFIHg4BsTgWsjI8J4FrBMK1B6H1KADgNCMMRw/Ed0uERw+kdhsMD4nBUhzrqfEoMDKliHJRkdpgIDwfg/QNwjEAiJYh7cx19rzbI1kGZCiBiJYS8AHUBsSByBCphWTJ++uEj/viHP+JPf/h7/Pz9X7FdZ0jRZEaVinlesOVi2dpgHQBtg0Vnmzp9CBFpovnVEzBCAHbnU4RBNdu81mwkuUYQ1MHpExPeIdkDsmEY1DG2Eouff/4Znz9/hojgdDoBYiXVxFjXgr/++BP++Md/wL8OhMPhhK+//gYv5wu2y7KXjoeI8XBEiDqPMhWIMTKaMLztHzfBPfb9qQfo+s/493um9/3cdwe8gWedrWirh/YAa19TuFtDHXzVlp65sXQLOnjwoEbMPRvNML8F2vR/O4vG77sv4/XrioFn9/e8A3xaynbrcNyBIlWdbbeT6vwa68feB1m21ck8RNxkF17b2ttAvwe32meYm8aNP1NzgnE7hvegUYCWMtQOWOydyHt9t36M+1LNHiB7PW57oNwDFs3Zb9JbtwCbf/4tgMq/14MX9we1Pfx+P7u9/v48+3q4BwIdTHkLeKxWwur306+X/jw9M/VmHAkNXPf78nvoWWD3QU4DZYleBcH9Z+6/d38P+2fVFkazL8pcVUGXcZzw/v17gBhP54uK0kMFu12DM6WEYBqpi+kia3MAxpCSMZzFgvipsWz2pg+3c8tLgx0YAIAqRZldeVXWT/W6Vk2wf/nyBKYzUhqsi62VPRnbqLFxyWUNLLHtgbb5JXtewW1ltHmQba2pLSBQ027tx/neBvn7d43Aft4po6x0wbW+8z0J/vp8/fwKzODjCZfLjBCy5/LbNYZhwPF4ULZU0X0isiZEmaR1OIyWUGIra9R9LVnwxyhls07FG1wGwOVyUuB7U2ggFyBQncEqAhfYZhBSjDt4Zz6pCdoZWOFNIDT2CDEickCtgiXPqCDEEEyCZ7dXDgKntLNOeluVjX1WSlHCweWK+XIGpwQekspN5Iwigm1dkbcNAOHpyxM+DSPGYQSKVqAQKbiLzn6psQekagPBywswX2e8XM5gjtbBNSEOCdM0IYaIPG64jqNpdlWs69JsgTOhUkztex5YZ2P8DdOgfr3s7KeYItI04nQ64fxyAQArHc1tTHMuViK3h8jKoMUNxOsxkP79ei8oUloY5PO1T1b0iQ5/hv7wDrS+BibTyh7GEWvJeHm+KvCe1LdTXKRAoJUR27Zhmy/I2waSalUyGnMy70nDOCSb51YCDGBdtLKFMhpoy6SkE/dtPHLo91b9jv68VC1jV1U8LUUl6qOefWzc59RVte9PIh0p53aAm8+6A/Q6x9SnIAP5cHNvd1c20KTuN0Vk1Ru3SbbeZrV4vweq+qSr/b2VDJTbd39v497yI/TzjB0i7BNiDjACXMwGtn0vo2wrpGxa1l021KrSQUHNCZArKopuD2JgEZtOoXo+AKzKxDTcfMYTKSgVQoLbOScAuESLMj4ZkAAVCdiTKve+RW/3W2zYPiPoi2h3/yaAovkMnbasIcIgCII4MeAOP6F9DrlfK/CqZk1wtVOhOWD9lDNdUjtv7z+JAJKtitPIMhTbeOp7DN0E+W1wDvg/AdABt5nUHXnWF+MZHcBidBc/7YIfDwh6dkK/iRdDYLOVIMEEq5nIyl65XUBoX8yBCSna+YOWXVAAIqsBGmJCHCJS0O6Vp8MRYnXt5g1izRvWbcG2Lfjy+RfkrBnIzdqD3+umALeliz4WgFL0fWH1HYTUeClgwYm1xpkEQRyhBSoTlsVo+XfG/B5t/rWjv6d78O0tdPjmfUNUB06cvKkMrP75bsG5+0Odvn7Tcpwfdr41bxiGCSmOyLViXQoICafTOzw+POK7b762dtBJ9SzMsgcTdfUSWZ1PBFaxAGX4QJk0StFWunotKnJbi7QFpvpPtmMYIEfGsvQW3n403alKrwIOHxPFWYy6fbM+uDnTXqbi3crutZh0vVWwg1JWYhLEAl3bi26yDUUNTd+WPpc7YAI2D4kgRbVjFMi2MYBlea2sVUg9WhfX9XcfAlv3oF2oHjr08HJYoKiQKFeQsasEoiwhclq3GkEOgzrzMSLEBDYgqQYtV+aQMIzaAOJ4ULA2pUE7CBZlzK3zrDqD64K6baBSgLohBiAFEwSHqG5cVbYsI0CqMoKr1kO1bk+RVBg8spaOVIIChWlEOjxiPH3AeHxEnI7g8QRJk+pFBM2+UwBSKDgOhIdjwjgGHA4BjwfCEDpgzhxYKdmYhmSb3qbZHEvxEBvgGTOkbhAJePky4x/+4Xv87//bP+H7f/4r1vMzYi0o9QuuywUbDyiUIFyV6k0VWy7YipbPezlSy9xK2UV7fbMEuu1ZA+YixezmXo7hGzc5C0yAXDMO6Yj379+3oMAzyd5V7fPnz/jhhx9wuVwgIq3Uy+2R60c5i+/L0xNOnz7h8NU7HE4nxJSw1FnLI2JEQmjMFE3WoIER7U9n/wBng/42M+kekH7Ltt5/7WCg7oPqHVUDY9VZ8GYfuwZXC8p8TZktboNqzlofYN3fr94obvbmHozpn+HXmVN45Zw0M2HXcfDlvgmEzgWzpWJTGLnjBqkAACAASURBVNg1/qhjAeOO8US7G96gvl95P37fPWDWAzdEEc4SeOUcd2MlsvssbVxDgNfA9u/7rTG831vvmWa9A9o75P0c7OfNDjDuAF3/bD2Qej/3+vfs57o/rz7/Pqf3faQau2sPPMkCuf75b8oJ7651/y59btyDc/399vf/1uGfcQff16ODNffP1nwbfj1n+vvz99M/j9+r7vXujxbkykiIdl0VS5ei8/8wHVArkAU4n2esy4KX52dQOeA4JtVyCxrYhhCxLqtqJZUZMkH1Wzu2PTOZv5lRSjUQdGeB+HOrf1wRY8I4JmxrMQAmIucNMSa8e3fAN998h/fv3oOIkXNpiWYvtdM17GOqZVeBtVxsK5sy9KqXiUnbuEJImKZD83dqkwwQ0+3ZExn9vLl/X/07bV2Ai+5F/s6dMenvqV9b7pfdnxMCVI6IMdk+62udDKyKeHg44Xg8WkmXYIwRMQb9NzPWbUUa9BwOBIjo/kkEYz9GhKAl3i3os2QWXMcV2FkaLdFtFT2d30idTa4EleEhMjegQkz7qZjUxDAObUyZCYkJZE0hWmOUN+zj/Zr1SiA/d4oJC6s2K9vzbEWvnYt3INbnqDnjkjO2dQGJCq8XceAKVsalvmIkhpSK+XrF5XJRrcVcEFJCBfD0YjqMlszL84a8ZczzBeu6KBPsBpy36iiof75pH1Usa0YVwZZXWzfqExys0+vx4YQYIs7nS9N4U/BRuybHGDGOkwFSDswD7C+zs1f7GIvN/25vpXRjd3yOhj6OfePn92vE57RfMwQlIzw8BKRpQoymvVk2ZCMGRAgeHx6wRUJeNzADKag9T1a66uuHo2rGEQVt9lO1gQJFBhBQyi5rsgOudAPeUw86GCq5bcXiR91zA2nDG91XASKvvKEd5BGAOTbNeU8aEL0ek/v9lS2RSFErgJbFKtLKXqGmDTl8L1ESisZmxkBrAOLeYKvt9/auiv9911W2OUjmZ2qYv5+jf4c+b3ofrJ9XSqYwH6mVoyqcyKaVTE3eQO3vtq5YXGarZDx/Bmo+oRyPEBFsy4KSV/N5AYGC6N4ASu+BwQCKEMq2oYJa4h3opEwYGFJQkkX1mJpMjiICJAbQ7SxtHwt/XmeL9mO5j49eM7v2sd0fs2r4kc3TBtDh1mXVZ7nzKUwCAxaDE6sWXy5KUCCBaWUzKFJj3LU5b+zlYPfZwD64v+R5MS1t3TmQjoXcssnvCvheHX8TQNcco1b7vU8wBe6k3WT/MF5zTsbiUbp8fOUY+dFTg2sFYhh9VJtjz8xN2wddpzHvxDPEaAaHsMmizR2GCYfDiGk6IQ0BKQ5W2pqQy4p12TAvF8zXFZfLM56fL/rvy9Wck3KzEN90pumOAi0FTC5OvjteRGiLg0JAss6zgP5eA+iIsNIeIPTHq0Dq7vhbnN5/+3lMU6ZNcEeBnW7sAStwswgEtghq9w3AIi87BwEUwCxY1oItLxgPD/ju9x/w8O4dDuNRNTZS1Lp2Vi0vBc8UCWDW9upkDQkUs1fKdN2Kdvk9HCGAaojUAimqXRMCI7JlEbWnts1dFdkFmfx91yDCx8sX9a8dbbOAmMN7G8zdG+G3AGpn4IgZ92qlrqaRebPA92BoB8rI5s1hmrqyCneU3Ek1HYQCzRYzQOQajQomBg7W+dXeH3oHgmw+q0GvVXXO9DnVYeagOnwcxcYYBoS7TpFAKBl4RGrIq3XO44SQDkjjiGkyQd2HB+2+Kyrwu1xn5HXFsswKzJUNXAvGIAAz5kUbAKSoOjre2RBQRt0ya5e/QqJdeZkQk4qNB2agZIgEcBiUdTuOoOGI4fErDKdHpPEBYRgQ4mDi7CrbNwyMKQiOAXh3DHj/PuF4YIxJmXRMQMmCFC2fIgWStRQ1kwC1IucNHAjDGMCRYVQ6fW/Lgst1wR/+lz/jf/6f/oSffnhGzRWxAuvyhPn8ZwwTI9cHbLmCOWGcEtZFSyLE3l0uGpC7tqh24lNwuJjjUAHTq1NHYWcBW5DSSj0UHA7kyZgACiMOx+NNSasHDa419+XLF8zz3IKuHoBgjqgVuK4rKET8/ttv8O3v/j0IMS7XWedoTHCdxBgSss0zcnAgMLjuJRPNRHXrTh3pDmi+s5m9w/1q3XXrvj/csWfmtsm6ToivHemANl/DzK3ZvTr8sjv99MZu3oMcbmuke85fu797J1GvtzuPtVYbk50vQD6wduxBH7X9XMzBZSJQ3X1WgjUoED2j8+Rhj0jNqVH/goiUXYJbcGoPBHYnr997d3Po5eg7KOTOcLhz6tW3ugeNpNnR+/Fq7/gNAG6339Lm/O217OvOht//7ckU7YpZbn7+a+/z/l32wd4rQExu581b5/C5BAcT7u6x177rj561xxwwDKn9zv049XvefYDq7/T+vvpyVK9ieA3M2rrurnl/nR6kc5vjn/HzKzDkjCDzGwI3/a+A2NjoKUY8HE8InHBdFrw8v6DmFcPXXwECBNPCTClZUmRrsigfvvpgpZLezdEDOlhCeINIvbGhPqZEyrobBt0nmRnjOGBZFoQg+PDhhN///vf47rvfIcaIy/mKH378ET9//AXLsmCcRkRr8hCi2SyxpAKsa3f1EjVD/Tsb6fMbvvZBAHk5rLx67/fBtb9HImpgoTO5qlTEGhqryz/XA5X3Goz9ockRZdk4C5ItY9DAw6BAnXZfBYZoXa5hZX8U7Tq399Dfhza+uZ1ntVagVtRcbn4GQKs0EHb7QrsOcg8+k0CrJAIhNh8u7ONTK2KMJkGU7VkmbSwiWi6slRO4KWMVkTambHN/2zbkktt70QYOI4JNhi0X0KadZ0fyMvNiDfHUR1A/Yn9mB8ir270KeE/ssm3a3AxQH78K5usV5Tobkw2NiaMMbU28e9MiHTZGjBojquZzACjt+5goU1XB1Nzmi+8tMUbEkJBSwuPjI1JSX+L/oO1tmiRJkiuxp2rmHxGRmVXdPQNAFivkyp6w5IXnFf5+XnjAksSSFFlZAbALLDADTHdXZsWHu5uZ8qCqZuaeWY0mhRNATXZlRXi424ea6tOnT5dlARHhcjkBaa3Jpprwshi0t01Vwzr3sSED1FccNADW11Bvd3zTO5nFGY9FxBrFuHyGiu4IEcqJQd7NVQwYFi1TjCQ4Pz9DzspAjEGrlbyiQH190uYqoolQYQaFWKOpLPskHFFr1Agc4yP9FxskO8cbC1oBOmPcuyjVbs/u94mu92T7x8Bi05OHx2cUtXlbIYgkkL0PBg1pvMZanVYxCC11VTuaqz8s1liDHKWDRz3oUR/7sQdSfd/0awJAJZL0z9Vr/x7jweN/ZwPOjiWdtXGJNNZoTspyXB5XLI8NW17x2O543L/idj6DGZCk2oEhBAzGyMxECASVe2puMCDeRMnvMbcz2Zpt7s9TRxGD+nGk1/Bx8bOi96eXZamfdx8yxtj2i/SY0N738rPl6Ofs1uHBTWrgsk8nKUBsXq5zFb3PQk9YsE/szjRyzeRmHhSAZiCCoTx7Pt5GtV/HBPvx9asAuvfOoaOW5kj4BB6z4YC54k7VNAaBZeP67Kde1z+vnw3B94Vuk0AEDoSB1WhP02hgl8C7XY5BMwMIrCVng+pEDNY5FdCFXErG9fojluWB2+2Ox+OOZVlxv99wvz+sBMF1fo4OL3aLyoE3HxsF6IBCGYRgAEgr6Y2BHaZCJDJnPGsb+JIRSAGFNJJ2HOsy5n1Q+a158p9HAPRoVL7loL+fcw9W+gXu5Zn9+1oWolE6bf7IAFs10wAY8+kJWwGGOOLl0/f4zQ9/gsvLC6hoFuux3Sro6p1UvBQvlYQhaH1/WpVtFCJjDAPItkURwlaUMVcgVnIxeAiot8Jkt2zMTRGrwP2YTdOPR18mU5+zHw1uG9/HdBdAHNgXfdAANGemgSJNL6ll+cWyLDZnXrIqllm2795Ti1mNddZ0lR4CBHBzoqhoJ2UVaA0fdptx5p/uBw+eG8MgDvq5EAOy6Y4UY8NmEYjR5YNl7YRUNHmaZgzTjPnlBcM4YxhHjMMAhIAtFyz3G27Xr9gei1K50wYpCtZWoFYEQ9S9qeZAyxzESkGohNqsgknbK8VI4MjWHIJQwoAsEaARGE4YTy8YL58wnl8Q5hM4juAYEENAZGCIhNPAOM0B5xH4dAp4PjMuJ8I4GmhUR6+oMwE7hET1+bZSkNYV63YDhRUXPmGmEZITkBaIbLhdH/jpp6/43X/9A15/fIC2CXm54X77A9L2DzidvuC//7d/jh/vn/DXf/fA9XbDMIxYHgn3ZdUOusuGVvoB3bPWYCRnddbYMogiTW8xQ9mGejjpc0Q2IJa12+04DJjmCePpGcEc6G3baiDg5ayvr68AUDU6namsdjUoQGNC6AXAb/7kT/Gv//V/h7fthp/uX1XjxgMt0iKKbVUhbxpmOHik4HZBLvkD/bFuT/r505cqdM5EH8x/5Bj0+173oB73rmHmXQWFSMXaiTSIE2PJ2R7oQR4HuPQ59uyHZt8baO5rC9DnUOB57zgez5B8GJMe8BPPCgA4pvva5/3cdrH4/flRwc/+7OnulnAAnGowCmSRLhHgQU2XMWf1K6rQsZWFiKAGNT5WyfSJ2AK1ar8NQPTxUTapaXTynjnXP3sLzPy292vBg0RIn2ltz/zRTx/r/n972+1j3p8dv+bVA6/eBa5fv7q+94wbZYDSTu/N1/+xdPcjFiZ15+G3QLLeVzmuTfcx+88eM+8+7sfvIXJguYGzx/E6lgD3a4X9vEDzVZfHAwzBNA0YxwEhRlC2jqggcBwwjDPoekXaXrE+Vly/XjEOgzWGGME8KOhgge66rrh+/YqcN0zTuHv+YRhsbFtQ54BkHWNS8GhddX9cnjS5uW6qVzqNAW/XG26Pv6vjc7/fQZFAhfBYHxpESkQssQJOVaZFRBtPsQbyeg2ttiy5sWiHrnla9koFlCo90Ps3/VryEuR+Hit4pvLvtRS337PHud/Nu68r237FQAsFWci4DkVjicFKKwGkbcW2FSRoMErW3Em4JV05wBJ5WqXQd4ju91MpRf2rrH5WysqGLNYpsgIXvvdAjV1NWgFS7HxjMukdIpA1tPN16kw2lyTx87MB7freqnlmZ1EytpzvZ/+cshgDhAICTRgHDZbXdQUvVjpsTT1Uv0+bfeRUKmBeoKw2nVube0s0OEXKE1eplKqxDACneQaHgG3TyqUALTkuhQ5wEACINetQVmOIAdNgTTO8KVzQ7rbagC/hdrupJuPPP4GIcJrPqldnZcWXp1NtvFGttflINWnQ2c7detPVX8EKEakdQ6v9trnJovHGMfaFf6sBS0CrPjvuk0LQ7q+m2xaMvBCioCAioCCUhBgm1eWOGhekvFa7AgBs7DvKWZOdUZu7pZJbXz8yggRR9bd0rzf7qbdvz1CUaDIMA0IWoJhvQC0+EVGwkJ3swS2p5gARQZPByt4DvMZeS1sLClsnTv9uathEEU0SQQSxk1qJRuIB6d4RKFsVNfmnvqCGUwFUSvWDvUNyzwwmUtbY8SwTSHtedHHdLhbb+x3+CprRsVhVbYI21LA3eCm9J0FsPkkyqGj1kJQN26MARbGFELi2+MocICFijMpYZrJuvLsQlhCGAO/t1VdH+r17oqDZ9FD3ic6vNtz5Fu7gZ1xvs3Z+BRr+kVJCKnscJAR7/p3vpTGmqPF/53PsziJ9i48kQPr3DMAbtqB08inhKF/y3irVp3PAkzxZgf0fNFmRb71+FUBXjYNgN4H1AKgO/Ptb1YF0n9s320dUXgBwsMuYCmLkKSaEOGAIEeMYMFkm0XWlYpcRCyFodoMJYRqMilpwvV6xLAtuN9UJ2UxXbnVB1E57R0QQmLAl3QT7DELbhMfFtgMnpYNUPQjwYM+fWTTjwiCktKKkDdM8Y55ngBjlkbDk8g5l/ghYqyP+jX/7f/2Z+rse9Ovep5gp3i2KWitfALEuomw6aaqaCaIADhHT6Qm/efmET5++xzCekIvg69crmCLiwJjPT/CSixrs2HcTVJNtywWSEkosiMMJ0xwRiJGlINMApIDEGQGoIMO6ZizbolpYBi5psYg+Z7HHp8D1gAK6gLg7tPyn2Ml9DNBcYLgxLTzwlc6hbbXyQNtvgbUE1R06FmW1DXFA9Mw1dK37fBW4PKUFWr1BEkGj4bOBbs34BDJheLvWuiZQEAzGRApW9irGcPVsOUQPORKGuFsdBwxjAA96zWTMUEEw+ICVfRZGzdiR1oXGacTz+QnT+YT4/AyOXvKSkB4r8rZgfdxwv16R1wUkWTv9QBm2KIJcEnIpGKbJKMke1Cp4IKLincM4g0ggQUtAiYs540W7BfGMXAYIIobxos0gnj4jzGcgRFBQrcMxEqYomGPBeWS8nIHLzPjhmTFPap88WAhkWcRBu0ORFDg1UkpRUCEl5HUBwoZtAShlbI8Fab2DKeOx3HG/LkhrBkuEZMH99QaiDf/m3/wZ/t2/+3P8j//T/4C/+k8Z1/Vv8F/+6+9svcGSGhH3x4KcsmXn2lz2AbqAlLZuXYB83boDWnKp+5OZVb8nqJDx5ekJxCPiOAIg3G43vL294Xq94uvXr3h7e6vA3K5znL30MAbA2rE2pYIYBsynE65lw5YS1nUDgaxBSGjOr2WIxda7A0DHIJHsZxXwLoJCewehd8SPzlTPZDkGn8ysYtgHR6y4h++/q05+S3x9FMwe7X4PWvSvb51HH332o3v/6Ew7Xv94Fh1LF/wMF5Q6xsfv+qX7sH98l/45vvog9HjPpWgnVr/kjqnQPUMLPNp1i4G5gRoLy189EOWgQQ84uO12cLUlV96zA3pWZv+eao+j6nL2YNS3QLKP5u543f3vG1jbf77NRft8tjL2j8oVj/fVBy0Q7ADM4z196/cf7bV+H/Tf741o+vfW52HWZtgffJe/nJHnr11Sk1rSARBsKYEees4MQ0QMDLDKMcSsbDtmLaFKpw2Ph9q88+lkZagzhmFEDMoEiTHifr/j7e0Nj8cDnz4/43I5wxlDRIRh1M6a69JkVtqaZ4hsFiQ1vU+QlrCVomL766LsKOag9r/zZ/s1l7OKrusYu99O3freg20pZaQtYxhdViPWMRTRruyF3wNq/fz2cjG9Bpi+F5Xt5rIFzmJzoHKapnd2oPqqTGDODXy2JG3p/DRvUkR2BrNtDsutWOdg1Hvvf/blWf7ysdXDHiAhlJRBK0E7sLdySAd/ddx6+04Q06bjYmDdwc71DJLT6YRJmoyOSr9Yo4OU392ba5k5EO0Anf/dGSwla8mziNRxcrtfis7XPM+2PrVpxP1+r9IzwzDY9wu00V+xgFmBjxAjyrpWhtAYAr7/9Bkv331GLoLb21fcrlcAqDrgaofeM0+GYcTT05N9Z0JO6gNer1cAGshXljcEyXyO5bHWsQCAl8/f4dOnT8aKzBiZkItUGYzj66Pz2b9DmbPhw/Xfn6HHM/EI2n3kfyihQJNjxcvnTGSMSJuAHSTADRAulotVqZplWRQE6HTkSxGUvGHLqZIVHJzRZ42166V3Yu7jF4+DSIAQIzIVuMRbazyF+vmAxqoKQZP1WQq4FEwmhSLkScz9d/SyS65BL9KSocWet9Sx3M+dSvI0H6zaDhFt8ENUn6z3uaqPZ/syWNzUd+U8HjvHvXtMnPZrQp+w2YPqR/k9vnsOS+owWWl6izMUuCt6j/4Z9zVLqaXE731FUjA7KNnGdYRBBVyi+sr1vOW6NtQeA5D8jjl2PKNd0uZbryEMKKZ9uW0JyUr8296wxk2dL6R7z+R7JOtB0iV2+j9OElO/3PeiVtwRBFTMJyjKqGbZ9xJw+3o8G8g0xG1R6WweYgmPp37p9f+JQUdMoEod1yyRdqdrC1xBLkUQnWFG9Sb1nkMnUN8cPc1qxRgByYiRMJqegv4BBlY6fiClYo8x2CbRCdu2DY/1gcfXFcu21oPDSwockKvOpB3MIgKpOnHYZff8dVzE/QG9Dzjsf0QXjKDRmX3LMwTLcsc0jNjWBdMQ8D//+3+Pv/iLv8B/+uu/wf/yv/4lli+v8C50fSbx6Mh+NE+glsP+KOjaObPvrtNKm9pnmlgnQNVxkZpd6kOqgALrRgXduAoOMZ6fPuHT9z/g++9+A4oRjIBszKcQdcMWEXMyE9akVP0xjNVJ27YNq1Hyh0Fbtu8cRBggZBu4FM1iCkS7WPIAKYRM7XnYMjhi15iGaBkHqd8j5ryVItU5dKey15IaYjStOzMcgayxDFU9gXXZdg4ldxTjqvPCEaM5p9HYnDqeXIPDuqHQO9wAkTveBorvbAFZNijAW6iz/fH5DmOoDSgKoEZPxKVVkIsC2eM4ItCk9GkqiMOM03TGMAqW7YFlTYDtWcmqTxBpBDjq4cjavGWez7g8PePpcsE4z9hCQIYgJ53vx/WKx/0r0vpASQmUk5aVsmf1AFCCU4qJ2FiUBSlvCHC9R8sYspdKaECRUoHmzwGEEY+NQHHGfHnB6dNnnJ8/I44TMghpe2AmZfY9TYSnmXEZCE8j4dOFcDkxzhPALAbI1ymqO0gkg6H3XqIgierAqKMcwZHx9uUKKjdQTvj69gWMhKfnEz5/fsanz894e0348tM/Y003PJ8ZT08jvv/hjDhFcCwQ1kwrRHBfV+QEjCOprlsRmBqezn9Wl0DHiZAg8AYAeij5+tbIKXJQ5q8FZNN0weVy0UOXA+I4qqN9u+LLly94fX3F/X7XvTVNdZ1VTZ3OtsYYESjiy9ubspmZ8dPrF/zu97/Hvaz48vPP+Pn2Vtk9IQSEksFMKo5te7hIqWNeA5QO5Mg5A6VoprRjJ/nro6wn0Oj63wKI9HxR+1tBCtKgxN+TDPhoJa3OSNcgieBizqEunN45cB2/HgTRAGvUa1FzkHrH4AisfQR8kDnwIRByRh3jo5PTX699jyXOhlCzj0ewsAICPtdW6ubP4gEeS8fU775jl73u5qhnA6Jr2hM7hk8Prur4N8exgmNdGd0xgPrW83/IcuievV8j3/p9P08ipZaf9wwzt/3H8/uXfIEd0EX7bvJtD7bgol8PRZpz28+P//34/UfQr79/34MfgZs+LpUlSHpG9Qylfoz7kkO/hs8ZAEjJ2Lb0zjE+jrWPRd9BVL9HSzxDZC2BRMFjW5FFG+PMctLyMHhZYEQcJ2suoGWS96smI5TpI/j86TsMwwzmiHVtz3K/K5iX0oanpwvGcYCI+izTNGIaJ60qeDywbQm9PXAWgu8ZfZYEAmMaX9q+Ik94t9IkB2fU/gIE9QeU6M4IgyXn6npRlnwpOv7DMGEaBwg0kVxKMpuspbY5F9WhEqlr5lg58z4G4ApC9H64A3V+DQ3att3cui0LIaBk4CEPBYRCxJbWOk7Z2As5byp3g4BwCpqkyRmQiC2v1mlyHwT3+0BLlvcaU/YwICEEcJWIiEMEFW/y0WyN7ouuoQkTxjAaIK5+TLbOqW4DRBS4n4fpkBxxgEK1A1PcA/m9He6BpeNcMOveW9cHVM6CcT6f637eNtU0W5atNn96ejpjXVPVOFy3Ddk6ypI0JnSyM9fBQPWPI+Z5xvlyxtPTM0LQkvHr2xvSuuHL2ytyTtV2uw1UBksBkTIhXz491bLCbdvw8vKi7Ndl28V/qawdMKPjkVLC6+sriAiXywUhEB7rhhgZw0DvzpCjP+D7L+eMXDZAgGGYdufacR4+Av1qfCai2nD6l318CS1R5SEiQbs7q/+qgAAzm04WICRYc4KkrFrnTGBjwzpbcNs2gE3qw/AfZu/eicN6h+07RghDd26WCuR7zKUdQ1V7LoQAZEu+ygangwkAMa1nItO7SwUxZmy+9wCUXKomnI+1mCSAe0DebNI7H+diUhNwUDLuzoqcN40Vq4+BijU6gMXEGCO35yyiGsydvXGwTsuCSwUTe8DN91etfOr8oR6sbftRjDBIRkjpgTk9lxmqV8ootscAQmngmCh7VQqBoOWq7q+XIpBc6pj4eaBJHi2Nl1KUWQnfv40BiZw7QFJLOYsq1gEWOXNggN6DzP76VnKs2lqQ+c2sWuTur6BhGHpN/ZlFz7NlWVBSqqQbCgNCwA5g27GxTfNUgTq9Ry/7FSqVbuoVlW2vun+z1fvWWFQTREoY9qS8Jvc0FnRyzoZfev0qgK6KzPeC8N3Cq+Wq/IGTBgPn+0PAr8sEYi0RAxEia4nbOI6IkTGfom6YzsnXlsnaqVO7FAnW7aHCu9l0nJYVj3XD6+2OnL11u2c12rWWZeme0u6PUA130xNoDgRR/wR7UK7+Z5e1J1CtH/cNa1gtlmXFljMiZ8zzjHkY8dPPP+M//+e/wT/+7vcKJHYBYL+p+zH+47wYtRvBN74mBO1UqxRzLZtkCgZIAuN8xrI8sK4F48z4/N1nfPruB3z69B2m+aLZUwPnXHhWDZs6Juv6QIya7QtBS5dyzjX7NVgd/RCC6VxZttta0q/LWkuE9ZHImEI2n+wApqPezdjqQRZAotoS/tI50Perk9KXanSfjwFpUx2t3jAdnamPgir/Oc7jDlDgIlp+Z/vPneZqPABjfLTDxTNfFYA7fKd/X71HIhACwJYdISCJKCAmWcdQlEkXghpNDgPAhIykjRdAKMKmMWKUeY4oYu2mJUDCAHBEjCNOpwtOpxNOpxOGaUQMwbQCA7Z1wfXrm5W03lHyphRuyVUrziv8RQRZAAghgxRItD1PID06SNeGiO5Bjqonosy+giw2nGEEx2eM5+9xef6M4XxCIUaSgnGe8DKeMQZgCgWXUfDdZcBvnyd8OjPmQGAuat888+cz1IGkgRjOQtUEg5bhZ05AZuQ1g8XGI920Ecb2FSnfNBDkjJxvyOWKMAqSbPi7v/sn5JLwu39+xV//44B//uefcLve1cnPeuCnpOzWmoW0sds5JiSVXaeloQbQkSVqCUh5xfl8xqfnZ0zTCC8jCmHAdDojF+DVQLUvX77ACl4sUgAAIABJREFURck9iHT2xBHAAdSpdIOaSsHXr2/43T/+I2YIMDG2pOLRm+lQspXZqr6kshaVSdpex2YQlmZAPyn++zpHHUvOf77PNLbXPiNG37SdQHMuNFvvAFNRQDdELbk9zFE/Vv3Y7ZlYezvzkXPUO4ItKDvKJoiNwb4LHhHVQGQPnNhoiglMd+X4/bhUG0TtbFRReBtXS5RUb9md1F8AoPx3exuqCQUfix2YepjD4/rz30H2a6O3n/369XWxu8f+unbu1/XVX8u/4908vQcw9kF9S9TsgOoDkHocmx5g2I/pfpydyZVLu68ejPjo3vYJy2yJoj1g568jg/AdE0XKx3MC7Mb6+LM9D2sTJNkDqv2zHEF2b1IQYtSOguIApNrCkgvWkvBVlFk4nU4AlGWj9lWvO44DLucLkDPWVTXC7rcF07gghLECOyklnE5nMLNqqaaMx2OxezHATTQh5g12QtBkp6/HFqQ0kFolBzqtOtZ1dgR7Qwd+uU7bZvpgtG2aYLnealMJZ6NpeedQAzYy8e3Q+TvRwQW0vdF/v5ebfcQGrQwxas/W25GeQVYBjQ70YTZpHY3+bS95aty/By2YkgZKQGBVOIIiSZsnlb3+oRIIHLh4b5v8+yNZkqKz5WqTgNTt276rent+Z3jqWnY73D+r6uiFxrCx5ws8IEbBCMK2blg7iYkexM6W5Abad8ID7KDnqm75vR1xRqPKmViCmoA4aLLlfD4jWwf5+/2OdV0gOSMXZ6woqypap1mAsKwrfn59BULA+XxB5ICX52dlj6YNy6Li915WrXPi92+VViFgsK6m8zyDKRpIrCWzy7Lgdr/jvqiM0f326NbRMQGjIH8pXg7vAXaLx1r5v/vO+7O0T7rBQRh0ZwvtE0Bua3Ttd2tKGSQ6u74HACBoB+IMTQSzd/2Fs8aKVm1ELy8FqFhZtCUIndDAooCNKnArK0xKVoe4amIb6Cdug3ub7RUqCnIQ7/d7KQCs2zOxgAJBCu/sQi7aYRQoyMII7l+A9nu+FKRSMMZhZxcc/E8pIeWCLeuYj2brnHGtsfUKUFEGYq+1Xed3T0Hs591t6Uf/zk2bq74+eq+vk4+SdbszU2Brwebd4jlIL9PQ/AJPbmiQs/f5fF37/aeUNEFqJCdv/KGNFvt7FnjZdrseDq+i9wSyW7XmdO/e1159gq8fm5rI24wdiiZXQ2SSC918iJ3TQp44GjShhbsRenJdG8wqOzPGwexHmzMH/yQDkAJm0cY3SZMB+mzF5HBK29c0tHuA+QpkxCwRA9jdhujYENGuS/1Hr19d4qrsovY7QccikLY4dgZG7ECjYIEwK00Qii5G1t8PHMBDxBCUSTNGFY6fxwGoJUcCjb5VnJwZuN6+IpcNj9sdt/sdqzkReUtYU0aWYI6TszMIvg7UIPQOgdUgiw2gGBiC/cLpx3MX3Hbv6QE9QdLDn5xCi1qSF0JAEe/GBazrHf/hf/srEP2fuN5uGJ9fds7X0eH+47+60mZgN/8AsK1u4P1+jOmh9ax4LBtinHG+nPD08qLdxD5/hyGO2FKpQYt0jrhQaXRy0jbWwTq2bOuqm6yQljuHiGEMGI2BISTYSgJyQYbqTpTuwCRjbHoX1jB6/Xt7T/tDQM5mhVr5sxsHHxN3CF2zpTpXgcGUgNCE8XvWAPDxHPZBSu9IeeZGHcnD50QNU90n3fzpXuzKP1g1TQgdcGmTK1CHS0t7FKTLxZqkFIHVplZNgRAG6zSqATVbpzPiCCHCljOEVD9QKEIoKJOQB8RhRhhGjOOMy+WC01m1QFSXKyOVhOWhWnNfX7/gfrtC8qbgEGDtrV3c1vVNHLwkFHAF5UkUOHZCDdk1trSBKaAgoFBBKkBBNLt0xvnyA6anH3B6etIyGGumMY8Rl4lxHgjngfH5HPH9y4jvL4xz1O5ZOlEFBEExCNELmd1caMmwAMJgFnCMkKKUbmTB41YQOWKMAQs/ACSkdMeyPlBoxrJ9QaI30PgAJ7V5f/hpxevXn/G3f3/HT48LfvxCeKwJEAKzasKsawaklVz7mil1/DxDyFp9mwpKTrofmU1MnPHy/IRh0G5bFCKm6YTBKO7rkvD7P/wBP3/5YgySrQZO3jGud8yOARpAWJa7Me4yxmnA+XzCNE1YKaOUpGAtdE6GQAiiAD3V0aZqtvqgrzpSxKitdHUAWpDmu+KwRz9yovz3735HFvVZS4QWPtlXZl2QHKwsQAiCbPbIgjWofXSHsXUc/ahsBvDmMiKkpb4iO8CmH+f+98fx0fc600Xv2sH+GId32ksekGonNtObDNL25WEO3EkSAzr6TtFSNJOpDaB6aYkeQLSgaPf8Vubu7zAWwb/INgNV9mQLqPZJsf5zHwFOH70PsOVVWnmN+0YEIBq44SWkzFZuDaqdk3sQzv2Yvd1+7/z77/q5PgK4RzCxTVN/LWVaeDOT3t/p10wPGPf/VszH+nDMfQ3wvlnY8T779/vvj9f5aG7quHT3fPxc/yw98AkAy7qas2aNkmxsnBVS7CxPKSGOE0CMlK2xFmlp8uVyQWTG29sbbrc73t5ekXPBum44nU41CAmBUYoGC7loyao2zhkwzSoSr4DXUNmxzsAS80/6PQooKyLGaElmZ8Y3QXGYL+DJ91Bc56foeVoa2zEOEXEcdL/aHm++sw+27SNN7/ULqs41gMp8621QP4/9f4s0RiywZy31TFff3w7yum/PpnV8BNr9vkNg08hVFIqJwELWWGpAEGWIb6mVFkMYqisdweE9IaEPJBlUdU1dfkGLxNRHjqVg3VaLUQqyl6MWrwIh5JQQozHxiSBup7wBgQXuZME6pAW8PhYhEGIhey8AyXX+2vjDUpjKfoLoNafTXPeIs/0DM7xk1ccll6bhDJ8/MK63O8bTjHVdULaEnDeTF3qoL2wNBCGEtG14e3sDR+2aO1wu2hxDBNM4InLAYmVrNKiPVW0uC0BSfSx2SaKi4LE3BXBfPQwRj8eCkqUyev1aKZn+XSBjDxG8Sd4RtNHEvJiht3imC5iELe7rki10WMu9Ly5wH99cB2qbTM+z/XorCMje+hRmP4Nq9lVQnFTL1eNa1DihY1N6zFqTbsGSa7EyaLk7E+F3250LQH8Wtft0wEckg0qrUtDyca7zb24vgCazI6a15tpvzo6r/kIc6repL9GfJbqf/b4qkNrdq657O5irl9aBP91c7wChIgZetuvrfLh/p78PtO/c2s/d0X/w3+2SVrtYr/Mx7XK650oD/yGVRXmckzZXzQdY84pQAlhsbKGVc0WyynyE9yWosr/8/uVrzEaix1iO53Obg/e/B2AVmv16172siTfYmahM4iztvGolsMDwPGq1nYHzDtLB5JrG+fRuHnIpkGzl0bkg5w1MCbloMxJQse1u5ftUbDsZAYWM4WcyCWah6xGk4yc1Vv6l168C6OrY7zbn/vf6H4d/KAUcGdMwYJgjxjABARh4AAJwGmZQJEQe9CdpW8OAAGHBstyMMRd02RTTvUgPlFLw+vqz0ZdXbNuKlHJdqFJQxS/hDQtqd1EGkBHCYL8P5hJbN8psm4O+3a0T+LZj3I3M/t/sfzSbpjhWDKMddBkhBtwfK0oq4CnisS7ouwJ99H1//FevKbf/Fzfkmk20DIsZWGLGOI/47vsf8P33P2CeT/qsCHgsGcu2tgsRqQZYZG2aQQqkRusg445wTmp8p2FWliV5NlOztzkVbZcszXlj2rPaHKArpShAJ2JZoc74mdNT/24vz74wtTI1P/TVqHaaAgSM42RNG/T+1FFopbAOGu8Du44ynZWxVNzBFjvYwLu9KLLjaNVZoxBA4GqwjiLzrZTEjUZ3OIHBgVAsaCxWIqOZCxMwZRUQzaVAOOhhyMqWAxu4QwBRgEJVA+IQMc5PmE5nnOYzeBgRo+7/XAQJCr5ISXj9+Wc81jvScgOVpM1WFLcFiQkTw76/CCBtDMGMsmUUUiAsmAPHZB2LRFCCDRQTIBGggBgHzOcThvkZp+9+AxrPGIYB4xgxjQPGAAxUEGXBd+cTvns64bsnxvNMGAmgvCoIWPMZhKC9KNXqkIInbXfpgUisHXQ9K70gIC+CQIKSF6T1AUiClA3X64Z8veF3//w73NcbJGx4lDvytoFlxnJ9xu//cMNNCCVewDQoGMm69rctY4gBnrWHB9XdelJXkTrtDs9Oq0D6MEQ8Pz+rPSsCwoAYRgiA17c3/Pjjj/j9P/1TLc+fZ3X0PUDrgeo+sK97wbojpZQgOeN8OuHP/vRP8a/+5Lf48fYzvjxedd8RgamoHqls2nk3bZA8AR3gdATnCDCw2pxji8G/5Xf09sHv8dggwH/2AebRaPZnpfphbR+75IMDBqF66G1n7wPBo35NBwAdHKJ343twBD8Ccty1OL7KLunV7rF/p0D3ZWGYlotfTeCnrebcrBQGog67dX8rH3iBvc3r778f+/5ZQsdW6N/DRLv39kLY9ZrMmvTogJtjMNIHwf3v6vhCA8d8+Gz/8yPHdDeYsp/3o0Pba+c6e87ZPt+6/m4sOoBtD34IrNh9F2D0P3uA7fg9HgzJIcF4ZOAd/3s/NqiaRd/6zEfrvF6rqKbncf/366ZnMPirFC0tLQCIIygDmbVzHpGzrEp1+E9nwTjPWvJfgV4BOOB0OlX9nMf9YWWsKtlwPp+rTlfOBRwC4qA+67IsKuZO2jAnsCcBlUUVgtTAQ024zlmIAcPoidI+KCUowOBl7XtfA3D2Saq6UkSNLaY+jifkBZRbs5Zi7AAg295VcflMbOXx4cP14c/p1+/LrrWaovkoxzn24Kwxqfal/h6skmXltAtkX4qvWmbzPGEaR030EIOFrDpjUE4KFcS0IsaxsS2M0cZMGMcZ2RqFEHnSA3a25l38VmrAKiBY6bBEwMZbE/Z6oSKi5bbdXlaShJIcBo4oVj6qjcP8HO32JqmUBTNjnuedzfAzuFZhYJ+g1kFSHUyNW7SiJLJqCrvPrGepsr2crbylhJQz1pRUJmMacCnFYriMbVlwu33F4/7A/XYDmJRRWARl23BfHnhsK8ZttHLYnpgAEO/ZVOpb6/f7OvBmHHnzNdHW0TCOmEn9+XFosjla+tq6bxMpizUET8L7+jmeiXrW+xrt9cpTh+cdbVSdUzTb6D8r4ByV2VP1w8jPMLczBmJllTPRZLSuk0IMnd6MLBk5FbBoJ+MxRO3ourOXdlYp4wISLBlrVQ9sYAJZUybfp/tXD/yJArAGGKnEjwN0boelfqoHGYkDIg9A2cdL78CU1BjOHrv4NSIHRCigl9fN1rxeK8aAEEes61KRUF/LPUCnfmhzRfz3ba72Cagd6xEwGZ09sPktf6UyYrl1so6+Pz1I8wvXNdXFbh6/cT2o7KPG4JXOj6mXFGtQ1/k5Nh67VU77ZH77/iMm5Gtb/1bKnpBy3AM9Y/6dj4qAYZg+/k4rj46DMpmdae3s75xUhmIYla0+z/PO7iWzrc6Y74c4dvchWZDyhrwlhNIawLAAAmPlVamafYmuy2e5xdiB9HVMjlUr+9evAuiO7AaBbohaV+9BAbrBF0EgYI4B53nE6XLCGEcTPh7BUYm06rgzwGLBatHOjNlohJu2yk5pxbqaEOmyIqWtDrZ2kQOIusdhYEse+DljQllOWr7ptHc7wOEaalwX73FR/NLfP3q9+0z9qZOypYw4j0DOSFtCgDIIQxTEacTb/YHeOhw3+B//9cuLpzkkbLpsejjN0xnjfMJv//zP8PTyGdN0Uor5sqlYJQfEOGFZF3WUmBGHASEY+mKZ3kBUs8qlKGAaw6CAr7FOiMh03qxLownac9COrm4wvTSDiFC8q4qh+wzLbBJgcBgA1VtQ9bW1/r2WTqA7CLykwuj+gO0JsJZa2mscI7ysZS+KT/WPOpEmdurKqlpI3xwoO0B68Nbniwi1AxEIZkjMeHPYG8RipkPs+Wu3MztUguo8IhCoaNfRAtVWAZPS6wFsGo2rthEFgCOIWW87MIqwZo1pwnS+4Pz0gtP5CfN8Ume0FOSSDGRfkcsGyQn32xukJAQUUDD6fVFHOljmRJ0ZIJV2ODEPmuVl5a4xEXjgOibJOpHGIWp5boggBAQeMM5nXJ5fMF2eEaYzJEZtBMHAOQhOE+M8RkzM+Fffz/h0DrgMQCRt7O7ioKSnRsU47O7M1u2ZuECoTHSOEQNr57IBBGx3XL9ecbv9iFwWpJzw08+v+PL1jj/8+IrrfcPX5Y5HWlQLsszIS8T1MeIhG4aLdqjScoGgJatWAgWxTKDYIV+dXb0XsSApkLIjh0F1YuZ5NC0gYJwmTNMJTAG32x0//fQzfvrpC67XrxABvMyqB+aYVUvIs+8fgR8iBcOo+yotCSRASiqUntYNkhIiE0ARbBo5VIzpFwvYWC9Vg6IHTjpABgakVMDp4HB86I73DtkB/NnbZjJ9ToM7/f0cbD+3ABcGuMVIZiPWKlDeOpQCzQlt2lnOYCZThSb7N/XT2z05kOIBcQ2EpbGIjg4UUVsTzM7OK9g2L881lkppI+VdotHZ1XofRCrcT0BKm+lpKTjJ0TutA2zBpoMAvSN4vN+PElfKQGn/3TP9GvZla05QS23rfNbDmqq32QNM/Rj1r916sN/1jMyP7t/XTn9NgVTguF+TPch0BLv6IO+j76vrls33qo/oa3l//yKCtGUFXA5r+wiM9ffh/83EoLjvSrwrM0Zr0uDP4xlu9yuAj7R5Ptpr7+dD/D461ibQlwW1sekBTkDB5c1YyVJEQQImxMCq4USxdgnethVgxjBMWjJKmgB24EaTE7ov1kUrJrSL9oKci+0tVjCQvBSGUXLC/X7HOIygkRFCe76eeab3sKAULe0ZBm28k7aCEIautIcABHMF3CYkEKIm5DhgGAhM6jOXknF/PPBYFixrwpbyTiagzh+ZB01i+BHX8K7UbvBUbU+/Vo5l4j5X2oFejo2j3+3B/vf9OtNyZMZijGS3v4T232yNFELU3aAdG8nkHFBjkxhHs2dukwq8sVcpgm3TdaAATrRS1IKcpeoOQ2Bd22FzYSAOM4IUxGzr0oBFiPo7whkQ9XEAMj/BGWEDOKgMkN5e1G72pPJBzKyVKvU7m/Zofx73+8b9WR//VJICdWDrVh/UXmb1bOdpUvsE9Q1T1s6zkvV8HoogaBbP7lNQTjOm04TH44HwJVqpb6lstVIKHvc7WIBQVNw+pwQ9TBtLmggI0YgB3X4XAyOo7M8Nf7YBygwsRQGeHqDe8t6mjs6G5KMGq+9900BkB8NdakNjTdma9txHIM2Rte5nci8f0b+ySJW+AIAijFyylYZCG5OAbC0GczylAk1cSreH3SftgBki3cdg1f80u+FAwvHIOyaB3JesfqQiueqzW+zk5d5+Rmu5aq6avPWuqP9eY8XWc8B8DMHuvsi1zzyuJ7IEfq5akO4/eeOYdi6ZghpJXUMMxzPgX7Cbr3pv6KK4g2/40bnl/97bPQfn2vM2UlFf6NHupUu+kJXVssZfYG1CJ934aIUMVVBRoA8okFrGLyJAYFsjWuJP4sQmoHYtpbanAFRd9XZzdtbKt30c4H2Tpp0PJqJrGNasDqggmF9r2VYD1HU817Q1KQJiuBSAVkARhPY+QOo0fosUJe/A/RdNMOa8IW+5amAqRqWMUKEASDa2X+v8rPsa2LIybx1TII8CfV3jl1+/GqDrX+6z1t8zuR+JtooKzucTLucznp4vOJ9OCDGqZpQ5Qq0leIakgoxUnTRfLKsJ/i3LYl2s1IgWW3w566AqW2if7fVBgm06IKCh8YCXEvXPpMEyQcgcM2C3Gfu/f7TgduNUL9zGrX+5U8aiXS6X5CUsGeWxIgyhUmiPJTp//Bd1f/pXWws61gomhDBgGk94enrG58+fcX5+wfTyAlBAytpxiJ1pJgo+qTilIETNVGnJQNMiSJtnZlXzIsZRwTBoWZA3D2hOnAbYTAoIBeJ6kL0DAcRsHzotoOCHZUCAaJc2CADtJOUCxQru2igdDqeageRWStsHJW6Ie0fTf7/PJsACs6afVMgzHvozxrG7D9QDzcGejH0zETa9Ev+etJWaodUh6QASclDPuzVGbQxDBCrqKLBpxSFDmXUcVTsrMIQYHEb7vhFCAWGYcHn6hPPTM8ZJS3ySlFrisawr1uWObVuAvKi2GAogBamkjg1BCEHp9ylrrX8Q0UMqRIQ4IoSI0zyo/kYwdhKylZQr0KNlr0GfLUwYhxPm0zNOp8+Y5gtKIPAQMI8BU2TMQ8HLHPDDi7LmPp1Mj03EdCEcoIPaDqrnmO0jtgChMwt28Pr5K+Y4hMm02pY7HvcbitwQgmCIA0oKuN6AXGbc1w23JRnVn3B/TUiPGaATcv4CWYuVXpmvlDX4apla3WMi3glX71V/CiIxYmTEacA0T5jnWcXQY0QctOwpbRlfv77ixx+/4OefX7EuyiKc50lLWra1MuZce6kJk38McgCC5f7A8rgjl4RIjMftjteff8L18YacNiiRk0zLFCArKWYCYmBs4b299P0D6TpiHxyu/uUaE/1+9z89+2APLr5nS/WfF9vgvVPe2wd3UtV53H26XsOBT6A50K1Mpq03H8sjINQzn3qnsGXEG1C7//4WBHupq1VEdc8Ic6zEAiq0w6+ue9Hg1HSq2LK+ns3VwD/skn5HgO44xkegKnSi3h+dmfU6Xpbbz7MYqNhd/5e+s381e2/6lrJnSvT3+NH69GCpfl/eA0l+rWN5aQ9uHc8YvzZRMzbvg0U9+zx4yzlj67qU9Y70nsGC3XX8v4k0XOqf2QPPj5qsHPdQn8N/B2B+4I/1L7VnXakbNT+qB+iOc9bAPD+r1adASRADSgorAOXaXzkXpPsd65Ywz5q11/2lQK9m6a0zKu5Y1w3X6xXLsmCeVeJhmqxUpyhLa5om5MxYt0e33wkq16x+rc+zAoFZK0gkQcRA+MAoJSCnAkGunzvubSml6u8qwCTaQKtklLXrfgcB0Df00OqDIgq8ECuDj0U8fYkc1NHq2Vn9nmwA47br/jkMA4gJuaRfXCOuAdb7UB5clypoDvXZSH1JkVLtyrotWNcRDEIMEcjAsi4IpNpbIagvp9duTciILEbZaXJVVN/8sACgKCBOpIngouspBE1ienMOkeZZ6/rMkJSQNqDkhAKfHyMQEMBE1kxI51R5DhpMqwwJY5qGCsb5WPn+7Zuquc11O6LBrPo0QlqFUEJEYWUFlq7JRRHV/nW2fRFNyjCzAmFSkLYNKW0oUjAMEZeousNPT094rAsei3YNzdnsbtS6gyGE6kOJdHYzZxTrNHwE4MZxRIH6NgNiZYS2c1bHJgSt0nHgrZSC1LP1AHBlxu3trfv6lfVZdapLB65lMA8f2sie+dmDdP6eaofinkHl41vvw8Zlbx/dt1H9YLYS1UjQvSnZSp0KKHuSSiqwF0l9hwzBI2XIoNIopWjVio6Vfm7nAxVp4DcH+/4VurKdRSua7LBGCwUCyVrKnXzcpBjzujRxEEL3fC3Ooi6GF3EPxXWTBaux/Qdji47GjixSULZN/XFR9pOUjOxYQXc27uLGzv8jIkSX6ejO5o9wATp87lv/Vj8nYrCOgc29L+jrBKiMRJCyuhVTIAtu2faHg8To7LiNmvmjFTAlIMBKs0FKihC/hsUK9ol+PVfoyd28X4FR9ON6PBPUbgfzaaihDoS2joDqt+n5utdXjeMALnu/C7TftxO15h/JALr+PnJKKHlAHnJLJuXNQPSk1SCZgKLJBbE4UOCxyaBrXN6PBxG1+fvG69d1ca04uw2sPXDNSNqh3x/EgYHnpyc8nU54Mn0psQGFbcTR6oWdkphL0az6umHNGY+7ao6taVOdNnGmWzCQx40VVb2JXFxLABh4hCDXuuEmgGg0fZswxYAEEDIxTtLyPdnq5B6daGC/qD5yHGsgYmPo720YJuPxWNVwTHP7LlE6fDaZcxdL7g33t0DBP/6rMRAAPeiGccbT5Rkvz5/x8vIZl8sT4jTjumVseYFAu2iF2JVIEOF0OgHImn1izYyJaGcYcZo6ESKrPmEM0ZBn2nWWk2IJA7LyAhgQEaSCrJot2GxDOIptmySYA0Z9drcvDdGXBxUOvAHNYai6Db2Rpr6caq+zVbtXYX8g99fkYBu+A3Egot2MctbsqYcx1A6yauR43wGPOOwCFu/eKiZs7Y6f1ucru1WI9Sy3gJPsAIgE1aBTTxigoPMTNBDJUkyoeEacThiGCePpjNP5BWEcVaPOWArL8sByv+Gx3JC3hzWC2DCTdmrNWbuADYF369+ZsSqAG4AwIo4z4jRhCANOc8QQGDECcWAwMnJerZvXgpQyChghTBiGM6b5BfPpGdOsncDCpN27TmPE0xzxch7w+RLw+YnwZKw5S6yrgxaoGmJ3Ft7h2xD7f583m19pxyaRQFhAtADjDRK+IudXpE2wLoLbPWK5TVgebA6e6iMkZGSOSDzYnEx4LF9Rsup2FqFabpdzMaC3OXUCqYcsEWEaB4QQMU0DxnnCNClzjiPXh3t9fcMffvoZX768YXlocMhRhZ9TzhpclLI7FF3j5V9KNiyrdl1TkNgDqg2rlStAqGYdY1At00jqzFQf4oPLF8vq+n2x29PDPqwz1jto1T68B98++nu/x4WMfS4dOHe4nogArGsaxR19tECzzo8lcop1/LXx1aBRanddDlSTPEdApGcM9cCFByR+3x4ENZHbfTMCtzn74LmNvdstVHut7hYz77rauoaRO6h9drsBl22c3jnPPs6+lqnX8dQb6me2zjMDqp/X7kvLRLCbq91nPrrO4aVCyx874B4Q5pJNyoE1aMgt6emvHlDaB4kNZPYyrQpOHkrX6tiIaQaXbwcIbQ51H/UAiN9Pfw9yGKPdHNrX9OfdEZg/Jqr63/c7qvfDWrD9MTgHoJXqyHuNuWPW3u+rsjKB2tGXjO8fAAAgAElEQVQtMAMUalAqojpigXVF5Vyw5QzatFmWCBBcDsNYGjESTqfZMulX3G4PLMsDOSe1bTRX/UGqUgeCIhrgr9tqZwshRno35uOoXerWbUHJGT/85jeY5wt++vErShGktCpLlbWzOdAYsOpjsCWrggWtuj7jEFCylgLFEBG8zBUwvy5UxlxdPgIUaIOBEGJNKPZz3ED+WAOfvpQzWMLdWdb95/r1ckxcv/9TJ9ki2hZQum9WigBSFNAzplGIDHJ2sEB9PvfhEbRzPPvzxLYnClnyktUn9cA9hBoEA6ilbyD1ZbUqyf4EVi0MgjaIypuCUcwomZCk7Oy4mDdB5FqDsOYGGcRuP3yfwuy5joInnXv773ZJoH6TChAoc45svk1npDafcOYfkXZD1woGNl8S2s3xISg5gULAYMnwM18wPRac1k2fS8M8BFYR91GAvFmX0Q6MExEVLAt7hvQwDBjGQf2hzbqzk1abNLul61NEEIMn3ff2jO0ZJO2B/N1Zwkos0PFzTdbU2Rtt1uF2VN1zqklcva+Drqi/72BzxWwRy34McrLS6OKBgtqtAGWIFmuUE1gT9yzGQmPS5DcKckr2tVJtkIg1h5N9gqcfB5G93I9AWUVcAW3fM7qv/DMWXmkTiaLMv/7ML1JA0KR8oKiVOdi/qN5nv7bbeZBNS1M73GZEsU7JBtApicMbYClxR4/E9+d83beke7+3Y8Ga3KCLzz1Wo4N00vGMPSYe3gFMMYJqpNBtWpgdsxiPakxOTYvcsBKypIrY33NbYiBSokWxeANwt74H4Ni8JgefdP0fjtzuqtg9pzPFvukj7dZUe0QRfe7s8ZQz57wqifdzkzO3dXBYJ7uxrUlqHT9v0JSFQDb2DVATgEyKgKNqhIsAphOeHbfKG7ZlBRKpjihpwosCY6KILNroTue23pnN6f8PAF0gLYko3rpX3U7EwZ3FUh25GE3MNmir6mmeMMzaej6lhM2CimKOumrIGTvOwDnV9sjagac/3F0U3oK+OEy6AE1biolBQzQDqx0glZau1GObYQXg2gppC0U0uCFg58DWBfMLweQvvXyJubMIWAA8DbjdbhAxodKclHId9HB7h7SjW+gf4XPH33UB4EeAXjVq9l54EFiRhW7HvKuVJpzOZ8RhxPnyjE8vn/Hy/AnTfEYR4OvtBsQRYm2XiYq1yc6Igwq+BwJy8VbDTZ8jmwixivEyAsU6dloyQWAeMI3RDiYAfiCIYEtJDx3vjCVe3mE5CQJQGFK4Ak+CJsyt3Y0yaJx2j1215HgfGPZBCiDIWcE/EXfEWvDkTCLN9oV6XZ/XYoCNiJjjq4BYIFJnA0DhYrodjgLp8yBILX8lIsRhtCDehOf7MjMxjSBSZhmSrQNmZRIGa3HtOnLWuZUoVKYhx8mce3WoGqNAx4DiDExPGE/nqjk3zRMygDWtpvtxw/32huv1Ddtyh0hCoIKBCWlbQVkdHrbMOsi06kx/TqDAI8UJYZwxzRdM8wnDMIIkGfirenocIkgiMgdIHECbApAxzJhOTzjPz5jmi5YqseB8Egy84TQSvr9M+O33AZ9P2iFUtGk1IgMUCIRo5dhZNfWY0eV93u9RMuDeDySoMKnAMqpckNcFeXng63XBH36+4e11wc8/b/jHf/iKn74sWDKAgRB4xuPxivWRlJEbGLfHAxI1u1OKsQNABt4A25asGKC0+7F7cZB5GgaM44hpmjDOE8ZJGZFFtBzhd//wD/j6dsX1/sC6aeMJDUSU2p5LqmXkuQvAitk7B6iqnepslYhgnmaM44Db44ZUBPd1wXkesUIz9gRWof0QQUHZfIAGoElUU/Ro79wRdIfcAzblVlj00m36vgQUaPaXiCqgVO2y2VL/73q2tCmv+7V/dtdJQmcfAjEyNAvs7DL9XsA9lMZG6oAbdVnqdchZIPbFHwEV+7Ott5fYvccp/s5y8ZL+VtZNxigxB8+ft7OTtREJXL9lvz3c6Q0cULKYlkjnLNf94j4qtSXMxnRw59Q2WJsKnXfvbqdlYgQU0nOKGjNNS/OlzV0374Bl2bt/29/jYY0JqqB8v77F1wFbxrqQaVTayq3OsBzmCPUsKaVUzSRmRjYdXu8u6ffHzrwxdkJdZ74P7ZzUxjbqBEvJ3fndgDFfOz1Q59+zOxOhDKOeNXUEWHxt9SB+dahlD9D5dTXs6AOKw9gDaucALeERsfImZzkE2xOdTEu3uPS+qCaTdTy0OYCyK6wMNgPZgh+IAszruupZhaLlgATVYgZwmiaMcUQ0Ldzb7YZ1W3C9KlNsPp0wTSNCUA0iAWMYT8YuK4AkMEdLrKEGHCIZ4xjV9y0ZQ4z47Q+/wfPzZ9yu/wXrssI110LQ86CUotplga2kU5sqOFOvCLSpgKjeTl3u3j0P6k8oK191niB29tt9xahnL/Ie+PfgBvBSvMbI1DWSsG06raUDo3RLlarN63aoX4NsvhQxm0A8taDIE/RmngNHXOYzTuMEiLLTNekTMYwTmLk24+jB2x446dlXrgkIAKEEaLW+nykwGRgPFpP5MgYwWI2cJwZQ9FwYx4CU3BYxhDKwubaTNuypPq59nkAWN1k8Q8G6+lpMAWVClZIUUCOgaYKZxqiVHKaSwKUYgMsAR/XzzEctRcARBsxRd1YZGJA2HU9mBCHkvGk8aQC0NzFR+xUB0XschxHzMIJywbosCNeb2mcTWnMQHUIoknY2iCyOIaAy9iOrDwILwN12DRZ0l2IlBhVsYS3HNRCEqbFdyBEC8ftXEEQb2jmjUe8lbQpAkZCC1n7GgE2GZ9TywlSQJLkjgkDanGa35uxMC3AfhbDKBoAhwcqvSceEoXFSoABGgqSMDL2XgQmj2doszgrqe3ZK9dd44KrjvQeZtLFZtb3dWWcPbM0lTOddHKgBxMEtYggnCBECRQXj4KxrY2oKYzA7o9uiZ7O1pIqDqqQUY22MAfOdSjFSBVQihyNi0EYvhQApCZI0DmOyZih1L1CVSVIeoB86qOci9b6enU8+Ht5R98N43f0X85M8uer/xmyAVGlccqHOZzIZkRqEdec9sPc36y1YPOf3Wr9TFMil+n+2qpmB4jEyqlvXk5pgJdGekKLOh5b6P6hwAlHDHhzI1Xt2hrOzijPAY71IpTAIQJ2kSpINJTlL0PzbXJCXDWtWIkAki2vtSjBtwuVxM1+RLf438kIGpBRwGLr79GSvMlBL0Yodx7DW9YG8pY5xTEii4Bzngi0nSC6mSO4VMq0L9UevXwXQDWHEImsFrYgIHIA162GkTnXANE6YTyPmecYwDLg8PYEDKQ8sWZvvnExTTvU1nE1Rjadlb3IpSNj0UHKnXHJniAUlb1XjQZ1BR7lhDoNmMdg2EFG27L2dlnaduuDrYlajS53T8EsAV//qndRA+/f2zjYALJIRTNDXx5KiOZ/SxDHZD3nowjt+X/3vw/19q4Vvc4TKPrue9WcwrTIRsTJkAkVFkZMd+BQGjKcn/OZPfovP3/8AIsKWlabMMYDGgG17qN5cYIRBx4ODMnCIdM5T1i5WIu7sRAu0I5DJOt0Za05xKWQQOBAeWzL2jGmhpYZScxiQkjqXMGApxqHOj9a0qyMBIQW4WDdwYM2qEFFjNMCXjI5dtMzJ0WHzLFpaE0KI1vkFasyIaq18KUnzklV3oANvTedmDIfueXbAFhE95GJAhorjMlhZinZAebCvc6vPzsaq2HJSkMtYeOM0QEZ9Lg7B9OM0M5NSBkgzk2FQwDyLaiNInBQAzAWZ2MSQBeM44TJdcHr6AdN8wThOiFEPvUKCnFbk9Y7r9Qvu9ysetzekbUGgoiVFIihbUgFfL+MVYBU/BwMQB5Aw4jhhnC6I46R6clayWgpwHk/Y1htebzdkWRGniGEcwGFADhOKEGIccTq/4Hw6IwZ1rkIUvJwCznzH5zPjh88XfHqJOA9kWUhlbNJhzwWOCBzfb8S68QQVmAOs3MUzPgUUCPm+gMYRKRf8w9/9iP/7//qP+Ku/+t/x3/7b3+P69YZFUTlM4xlxHFEWPZRIGAEB67JqWVTQdcgYQKyAZlq9K6cyVd0XGDomFZHqylwuF4zTgGHUoM2DXWLg9vbA737/e/z440+qG+JAGAEpu2i5AMga5EvTDRFogiWlpmuVc6nt3k+nE0REtUZvd2zLhrxmlJHw+5+/IM4zxvMT0v2OiIA4PyFwhLI7H3qTMWJjDRYhWdVIdnZcbYqXV+aiQnGBozGX2gRuqSDEUNm/1XaY/XCnXdDOCM9Cc2dv0P17PTfqweYIk/4uJXM6C9QpsOdzG5DdYbNnUCFnUg23ojYjjtF0MQQ5iYH0mrjqAROl6m/1nhw86O+7mN3TsqCerZW6ufVxczYy7bpF9yLuxKZn5Dp4JVcGxla0MQoz7TWPHLQpXccyUdCBA1tAkbTMizQhJ5JQNkuIOKgAY4nkBLCWsbkDSRaMQVRjKhnLtDlmPneo8+Gv/VGr7w32vRo5Gbhg7qEAtWlRsQtQYJNV6EG+UMt9RAR5K0BQEIGdMWnNxplCbYzVsvH6b7krvYIHSF6eU7QMz0XDi1gg2WnVfQSi9fO6K/dy59v0Y2oAjAbq+Znp4Eb/nhoIWiK1B/F8m5AlG8B9MNVKF1PxgNP3jQE8dkY5A1/PxgBBK+3ze4Ko75irhpsytUVU0F7Xc8E0jSBhpHVBEdXEmUZNUjMAMpaaiN7NPI0oTxcAgtvthtvjjq0UIAyI42gsLAO/hTTolIx1y8hlQS6CcRhMI0fTVOuygkSb5UzDgLcvr7i+3vC4X+18ACQLQAyG3k8xCjWBtDRSUEF4iAaHQwEGYWPuFCQDsoUKHmXFdbnjMk8KKMWAXDK2TTAMI8CxBrG+VkIgA0fdr9E/IajtSGnDY9kAK9MdhlHF4m1+iwE6BAtcfVy5dehUu1Y0QA9BkzXq2CFL6dZPRl4TNmyYh0E79wEQZmzZgEk0ILlfu+99vqbvqWs1o2x2pm8FnF3j0BNlainGDgissg9MlX2TCVi3rEw1iJVwxs5+a8lVKUUblETrQh9YmecUOlvQKo5ADOLBfEbziX0fR0akETFnwMBi1TRMyGnDxgWDdXKvtkug32vfp+XaylwqZQMBmEOEhGixjAbDTFodxpQRuOtWvaXKnglRGfxhGFTKiEiTcqbhGnmq51VBRsrKtjufTgjQZgPCOr4we1JETODdADnRctrJdabtejJGZb6LdH8Al5jQBJKYnbE0n8UkkSMCJYyiVS+pJE3CusYZOZPNqs4otPivKMvPO932ytcC8XAC8zQDy4YtrVo2yqykh5QRkiAggVj99UAAQZ81O5AGi7uYqr0Uiyeina0E1FJHXees52yIcOJftdv23uLnerD4ytYemb2RJKrhSQRhBhVtEjmFoPNKmhiJ3mmuaGzitl6sNDGLsZUMfE/F3Ch49/GiskhS8Hgk3K4PbFu2ZIuCsJEVZJai+04tpDaN20LS/RG4NlHrj3m3B4OdxT3QKQbMF3F9M9nZDf98dTcZlfwBmx4HmEtR7IIMeVZ3S+z7yGQ6UPdhDAFp25CtSzHYS7H9TNQqJ5KiLLqiayoAVS+YpTEoGzg7AJZcFfFmQrb+DRjV57HPoen8SVc+7hmfGJ0VrdqZ2ohIYwJP5Ag1cNgJKCwAsSZwnWgjeqipv2PAby5Fk63uz7jNMr8grVS7FHuH6jgwJAogA0TYKlQc21HfUKg1deMQEGLEOM0KDNp5mxm4LisiCjgLqGSUZFqLpTUW+ma8iF8J0D2dL0DRZg2umaCDOxkTqHXKcMZFCAEZ1nX18ahAnLPlvGtONcgHsEvqCra/d0BFfc+htvr48s46IvtOIu276lb6xs9/+fXR9x5Bu2OA9v6zx044H1/n+Llv/fu/9Hl/DcPgF6zlHIDV7/eOdAgQMJZNGTrPT894evmE55fPOD09azectGnZh9X95VJwOk0IJuapQY0yhCQnCLtjrpkS/Wpufxx698YFlrVBReepOnW5eADh1NsWTFJRDoCIZrP8+XIumMPJH9/wzxZ0MZu+Sn8CGertYIPiaj0rrZ9f0+EgtgPZ1rA/LBMGc1YqgwZmIM0gbUUNqD9/8SCR9D4yOXVZkACULNoZOKqDphUGCqh6ZrOUgkgjiDI4DgYAsBodGzewHkYa8JlBjBGgaIeCHoA5qbPnGm5DUG2yeZ4xzU8YL58Qx7OWM7CApaDkFWldtKz1cUda75C0gZFVL47N1SFGGKI1NRAFBQUgNieXI+bxBI6T2qEQIaRAUikFQQTXW0bkgHGeAZrVeatBHiPEEcN4wjhOGOKAyAQOgnkKeD5H/MnTEz7NwNMp4BSV3F6d9m6eD7uu+2932vpXe7+L+gOCsq0KsMwj0u2Gv/wPf4m/+j/+I/76b/8Wf/f3f4/r9VoDgRCSAhnbww6VqIeSMSFACcIZsmUUA2lUDNzG10AaBXGVoh3CiHmeLLgcMUwDBBkxzjg9nZFSwuuXr3h9fcXr21d8vV6RjFEtZjsEDRBQJ0+dpj7LCTRbnnO2DrljtUWejbper9gemlkmAcZhwOXTZ8yfPiEEwvnpE4YxQqRgK4Jp0i5jBIYwoxhT9pj5rQAdesBOZ7TYv/QzyqGBCP7+HlzoGVFHlqzOcfv5LXt8ZCdVZhE8I9lc8wo49O+TBsa3ALKttN4prGAV7Z+fCDuRYqCV9PcNbfoS/j5zvZdeMMcN2tBGs65e4tuetzIq3aaCQFaam3MCKJj+WlcSa/oxuTSAt7KyuDlNpZZRqk1ToEfPkEiatPh/iHvTJUly5EzwUwBm5h5nZlZVc8ihLCmzh+z7PwN3Z/cPhUMhu8m+WGz2Ud1Vecbh7mYAdH+oKqBm7pFV3ezdtZKoyHC3AwYo9Pj0MkO6AashaA2nDrhtHXRe9l4Cm/o6mlgT4SLvDVnHjVLGUNC3UvNuK5YPOL1nHcGwHpMBBP48W78tLeofznCXCIeVM4g1Un0VYddp3EfP2frb5xZlSSGczdsqjXSjx9BqTH1NLu0ley/fuXYNomoUeRr6O2M9j/acXCRi3gOEOkUI2mGy0ZGT1YDImuNxlnMpoNYiWRG1oE4Thhg6gMgCkMUAjGPE9fUVQMDHhwccTyekwwEIMuYhjRhGyUCoOj7TiWthnOoJIRDGJGU/hqQZBLVgOc349vd/QAVhzqx1mrmBTI0OGNK5sVaNbO3RwIEINRecno9YTovWl9J9K5tSHawZ8xxUx54UxGRwJeQixm+nK4aVuPTr2+t4MQITIgt/DqaXcF+TFR9zjga7Z86WYsiohSRSrGgUE+l9SAroUyUBNisDuQiQGiIoRcRBQYsijn8f+Wn0td1bfh8AoitRIMk8cryd1HAPIWC/36uzFzgcDjidTnK9pXAFRhikcdT5M6S+LlzaXWXGYjyNocABtzmUa9e1KwWU6XZYAwhYIsmseR5Z3dMQhDdr+qQ9y8v57b3Esxna1pHxBIyTAGK1FNRStMO38GswQ2q41bUs07qAAKme3h0HMSZxxEOiC+u8lovtHoDWzo6N9ht9kQJKbc++bNNZHT/5zOZVsjyAounAkmGSuKdCr3/31DdN0mlunCFqsxSVZWHDC6ul7haNzrT0RJYs6SlIA7Ko+oClilp0VUtrNhmsQQpQEL2WIoBbNbCwtjGiGm+ENK5g1iAeFX4VWqQZCi/a8rOWhbGsIC1RpQBO0M5aAQUx7Jqu5uessHf2cLe/1BarhO7II2AICTEJIB3I0s0LGAUgScsFaa3PKmAdFLxiWsuFRifY2oedNow+lo3N72nH62Vb/MOO4zKLDAySARRgNQBLoz+jOVlLjSKurA31VBdQpaP5FYkA6k6Nps/a2GA6wHmDpq6LUtNpPH/zc0XuOy8HLI12WTr2QdTnhtWRItugNh5Tnb1t5QiaXOcumVvtQgCoUi6MKkn2mRtfJXFOkYKVHIODYwIYA4ikdIU1TDPcQWxhjbYNoUUz1ypOhwIGxyQBalXlSCt1pXyy/hki6F6/fo2rq6sGrhnNXV9fK5GlvsDUN9M8H5vBdTweV+CcV9I6wQZYak2j642Ct/339rgEgm0Jf6vg/qmHv94/49L9/5RnrQDLzTy8tKH/mHvGqOg81240qDHBkBpSRBFJGdfVtMP+6gZv3nyJ+9dvME57cCDtnCLeKQFZRMgOMSribVGKUkqVmaEx+G1Mgch1+QEQJIQ6ObqqzYg2pig72GoKembJzJr6GLTzDwA4LyIEnBClJrbaDN3QFCCsukiJbmAGjbwwa6rPWdWaG3A0HZXJZfOCqNc/aH0WOwL1yMXCDOlKzE2Za8qo5s9WMnHLTR4WZkQi9TR2I0vmhIyvSBH9KhE1IFmjCtIUW9mTcZKoOFgxXpgiIV0bJeUhiodz3GM37jGNI3a7K0y7K8RxBGmIeykFyzJjPh1xfH7C4fCIZV5QsqxojAOGqM0fYPWHIipD00AMnJNU1jiOmMZ9q5vDmqZsLpxKkLDnEDGEARwyaq4oXJAiYZoSpmmHIQ7YDQFDAIbE2O0HvLm/wpf3AT+6Aa6s1hyZ0NqCc/4DWv2CzpUcRpsOtGtGKiFqOvjp6RFf/+KX+Lu/+zv88hdf4w/ffYv3Hz60bmHMrHXhxAmy3++x213BIpVMgRE+2xXbEBVcbPtfootjDBhjwk4bQEzThHEaMI5SXJop4HiY8fz8jO++e4vvvnuLw/EIgEBJogGgW7lyB4WE3rXT0Yb3eUAjaiSVOWzmecbhcMDhcECZu9CPMeLqSlLASsmYpgnXN1f4+PEDSq7Y70NLsWnGP61BrzYOVU670kBNObg0Vq9Qe6XK3vMSb38JgPCHV3y2z4gxamrFyzy+XccAyoU6pZv5tqOnFBgAIpOyfS8vx8wI2gJEL4EnonxIHVFxgIvyTOi8bDuntjNKq3Wn9fRcp89mnFasgEZAFNNm7JthjQ4iXRpnMzw297J9aamhwLpWmv390rwwm4mlDJc6uGY1e5v+yeKpbnNEFvG3pq9tlNr2PTwwt127NThwDoT5e7bfdb2H/HneQDUF3/jOFsT1c3fpeTZm+2wLCPvf2+te2mcmw8/33rkehcqtzq+fU2lGZIq5yRa0c4xv1WoRhAk5LyhVGuOMKWKIgzyxGflyz0nlJoWApRQ8PD7h06cPmOcZN7e3SNcDeDNW/75Wu25otc30IUq3MufAknOjNEkP7TXezFFDzEDR7BLTpViMqHE3YS4S3SC1CyXiQKLbEkoVvl3zglBZuuXZfNfaap4C5kDt628009aWAbCkEhsN53xuHF8CcoEOEAntEMDS/ZOLAIrNvgi9bAApbS7LAioFHCMiRlDU1O7KF+nf07QHzjr/BaANFpbl1Lt9qq5lRm1/h7XsErBE0iJtj3WAjVe8Zyt/7DuuLKVJGv8459Uy94yc17zQ+FdI/XP/3gaQ+JIMfn18hDaRKFBEkspf3d6TjvJJIr+0XIXQpL4HSwSfQAwa/U3B7QOttUfRpfUrz4XInWjvazJAnZPR1oO7LQKjM1EIGjCw5TV2jOO4Wg/vuKjtGbo3ScBnOY+UZ1sQn7clAXNqBZJacNzkjMkArbnlGhyxfw+dCZkvzSKDpvCiZ42VIiURvHwy5yCg2QXYyAB7P5SuDxNAVFW2AFaEoME0bq6rKortDKKWUltybuV1SIMbTADb/JZSWjOP3hVaeIzXeUwGSHRiwqjNZ5I2jypVagBS5OYQIM1OEP2l+piN1X3Po7q7PrXlTV5ue7kWozVB+LyO6M+P1MtXyP63Mcm+4KQZH41fOF3NSnsZj8HlElohhEY7vBnTVn/y/Me/c5+njU5F3UYHJGK664OS2dOftW76Q2porMag+l3pFynhyzp6ANT2sn8X70iotYKqdzSru74OQIwg6QgIIucE56pNWJIEjrB1o69YVF4aPQGCgKx1us9jOD8IoLu6usJut3Od95w3WzswmoFl4dDyeZamD0vGPB+xLBXWZUqYhHY50t9GdN191P530QjaHlsF039+ScD//338EIDNC+z/7JjXz6NO+I3gO3FWTWUFSYTO9e0dXt2/wc3dPfbXNxjHEfNSJC1AlTtR+oCktc3Sqo4RYGAfo6AwIy+Lot5mlJiCA3CRVA1vUFhtOqAbjMBqz7W/Symtw443nogsddQZDVWE1Cr1BeKx8PcWRsAgMDJXUd4CIehvArS+CbXaA8b4ZbuLIIwhIqhnn1v0aPdiyJgAiv39pTmDeTlkPnLuHcIMVGMI4FjVoxKd8K3VwEkF16qkr0b1HMN517PWOAlR69GYT48kmi5QQhp3iGHCMAhYJgDdHtO0QxpHIEjkWy4ZZVkwH484zUcs84KcGUMcJaWrFhAJcEbEUpiQC2aN0KuQ+gEhJQzjDuPuStIdKOpqEKo1kFFBRQDCmMBc8LycUOoMooxxGnC132G/3+N6d6W1LyLGxLjaT3h9f4UvvyC8uQb2QRikxUxsRCd8MVUlLqci2Oq3HaBXGX8T2svLIoXyA+Hp4wP+4e//Hj/5yU/ws5/9DF//6j/w7t17fPr0aRVtHKNEKd7f3ePV61cAk6QUOTrNc5ZnaZpCCEm9aLXt7xgCdrsJN3vh76a4pCSgGULAp0+f8P79Rzw8PKiHX1Lxh3EQQJe5KZjWdKI5rlT524JQJsh3ux1CCFiWBYfDAUeNtLbC4KXU5gcrRYyo4+GIUiW1fUhJZFLuIfTy/qrM0Zl+1ZfOARjUgO5zj6hXuPv5LmoL5wrMFoC6dI793ir+KxCQQuPPfrx+nQFo6gRWnzflkdfPkeeup8OMNLvWp2x5hXQ7Bg961QuKvGRwd1DIG7DWrKbWnnLZx2+poUJKHnCqzcCwKObQnCMgt072LsAqNeUSHV7SG1gNekPR7Lldbq47sG7BAgFENArFjFOykbl5J5KmWcpOzGghMlBlHXlzZvh6OnB6jlect3LbL1AAACAASURBVPfwowgW1dJkRF/Hop5emzf/fA+w+/XxpR88jWxpZg0YOyecW5Otsu/3kK2hT0vdnlfrOprV1sXPldDDNo1nuz+Fp7B5IvQgQgPwhFxZag1qt0/h15Lma5G4VuAgEBARMU07vLqXlLT3Hz+h1mdJ60wDShU+HAgNsA/qKbIOoM/PB0zjAKmBymBXmwwBCFloqzK3VN3e3IWxzLP7WxlmZallmCuoAnNepFFbKQhJ2rHJ/mGtTyWNEXLOfY8TaepUn9tmBG3kQaufWNZRjJal4M+/RBveKLYIuqD1ek2323aTZk2Nm3ZXiCTGqtXHLCWjzhL1FEmigD14tv3xxmprzkIGzJzvQWbNQmDTY7WMxEZeBApNH/V0f+n3JQC7cp+Pvs8ugZ0dwPd0D3QwzfOTXi5A74HOh+w+xheSNkth3R8SKdwbA9i86QZCgEalVcm+itS7fBsftTVcgWG1ruqTSbonNyDaGu+hspXNQvO4cv88QPk0Q6KNSucTW91gG81oc+fpEuokNa4rTnJz0hMGGlv6I2vNTomaBQhFQbjaGitRtHIXYif58QUiMbT0J6h+6uV3UFBB7Cgnszb6g0FsIUYBV12t4n5yB9gE+AlA5IbBCL/TUxzFqBaqU2/RrkVLn2Qp7MwRoALUGYGjNkPoUXKCsW5BLWr0TaQ2E0FKSbBExpJlF8WIwBHsuiasK546Oerm5iVZ42WY1y8KyqpOpd9DIQTXtODCQdR0cssM8PoDO55r4G0IPRMihIgitTWEz+g9TSk2x0RK0oSRnBPAtoZlp23f/9L7ej32/F2g5UNexjyIqNV0NF41xrSaTzvPmgjlFvhg/Iua45NIujSv+LWjD5vDlR644rfcHKWBKzKktiOC1nqPEnkHkPoDJGWfiRT7iBKUQyutbzUF09TttkvHDwLoOhFEWGFnIsLj43NbZPvJOTeDKeeMyhm1QJmQDJC0mFHJ3DraAGh1GbpA+eNAuUuK9lax237//9XhifeSsfbS8RLo+Mc+e/23MHhh0h560MixKj/DuMO02+Pu9ha3969xc32LYdqBiHA6LZiXRQr1RkKKoxQkT9ahKWCMGi4MVpkRgMColRBqxaLh/GIjBDT1lQgce6RHNT8Mybk6My0sWzY0gaKGkKv3sJSlFc0lIlgBWlIPktUAauvTsldEsEjEXp+7XAVwsvLzwYSYcHcRkBSAqJ6vnJuBJw+J8kfQgrhAq6VAiCujNRAQ4qDdVJ3gtfEyC7AVe7pii1YAQZzGkr/fUArWkN6QQCFgCAOCFhhPFiINMWoiAnJRD5JFp4Uo9eSGPSiOCCT/nsY9hmGHcdhhTBNi1Po4NKOqV8w6tQnTnBCvEoYoKTnC5GS2a81YeAFYuvtWJsSk3qNhkHTWYQDiICAkFCCCzj00spEYaYiYZ4ngBRVcXQ24vb3Czc01dsOI/TRgDAm7FHG1m/DqZodX9wF3V6Ij6N1WwJzYNQoJsAfpSME3NCNsJU8dk16Z8RrBeDoe8Ytf/hL/x3//7/jXf/0J/uNXv8bvfvcNHh4e8fz8LHxVUw2GYdCI5AXLIl2q7+7uMI6jKupqNFVS96zQF0JQb48I9P20wzRJaus4jhhi77L69PSE58MJ372VqLlFq3b3aOkoymFTsrqua28pPG+tSG/5WM4Zz8/PktKqwJwXmlJTMSDnBU8PjxhTRBoSpmlEnmfk0ywpLSy17QA0g9sfaydNVw5lTTvw8tKxlSPnxuRl437Lv7e8/5w3eyAktKYLMv719f2e8rcH0aotCOjsmQY0rK8/H6cpXT6NcGsYbxXSFcBoN9/MDQPt3jYeH2ll0dRcGRTFoQGgNR7hNk8WbdNBq5J1DbXrodS82QCHTtmzeTtfG+G1AvQZOOfnyeRTb5RlHW7NWGIWgzSwRnGr1shs0XVo8i5AavUS92hdwMTR1hBZ00pb781n3mj3awbARWRQqz+0TZM2kPN8brpy6/eB/66UAoJGaLvD0+iW/l8Cvf2x3aM+IsG/rwEP59GR64hEQNPYNo4Ee1aLxmrP7+lofq6EP2ep35Uk8v10mlGL1KIdhhFpkHqgbIa6ghMpJdzc3KBWxtPhiIeHT6i14OrqCphGTJNcW2uRaDAo3aHgOM8t5TuliEiEnAsOp2dp5RZTi0ptUVBESJBo+zkvGGgNnFp6ciUpMYAYEIYBw25EnEYgADVnMFfspgk30w5FGy2ApUnXMWeNTunpl5d4h19H38VVxkIIWn/Oyw9PJwYA2fr3yBE1vjues1qzotFHIUozCeNMpUpXy5oXgII09Qhx9Rwvoy4Bju3dSEz+XDpIVkpRELC/iyxJH3+ny/Vz/Pz5+10CDZgZHBnLKbd3Nv3Lz6ed2xuo9B+igLkU+EP06LXjiyCAWFY9z0el7HY7eR7pMy36RL9vncRZQBpzhrAGfYzT2M4LTVfu/EG6AKOBnDZ/LJXatZuyAK3SmFDKnEjZrD4OaLQwGcjDAKA2jNvnn+M3Xo408A6nxjOs/rmKxM6XKrdoeUqagpwYpQZpiAigcu7ryhWS0tjnLwQ+A+hEny5a1kQAOwIaIHZefmW9zwpY+MBm3wWnG/iuphSgTnJI+qF2GF1r0LonNTWaQoSkMPZ6xRK5XSUrxjocI7T1EXdi14dWOlaTy+bklEdWMJYi9b8M9DbeK2mP6szT94iQeq6VuNUg3M7T9tmeBszhICVxSADYXFDVoSR2XW101+7rrIOtjiXfd7qJMbbmCP6aleXC3OpEAkBwDR9knc9lateVPRjb778FuC59vpWllrGzles+vbaDfP37EILW3Zdxt3uz8nXjZ218ApBB3y3C0QiZ06S/41YGeX2ZIHQKxa44C32xNUcRrE5KKFRGKVFS9DXFWGZPneR9BvWXrmf+M6S4WtpCzsXVoZP8YYt4mOe5R9hJDgeW5dLDLTpO8qgDLK01QjzgvavH1mPhD/v+EnH5cy4pen8ugO6HKpGfO/+PHUsXqJ8H9i4/T73BTv0XJiv7t9TaIh7iMODu/hXuXn+BN/f3iOOEWqStutm/MUaMU1JgQBUUqhKMHgSkEk9ZQSmAtSAvyiibxxV+g/foiKrGFagzXM8IszeIQgAoNkWvUJHumhtm0uYuEMah16eRenE2H0FCZAnNgwhITnmBha+TdmlTWDHI7xblRkHrX1SAAzgYlEdglgKdKY6yAc3pqgBcgCgOoNRSbO07mEAHS50Ux8QTO0OUGETiRS8s3tigCjyFXvsuWrh3qVKwFRABz/K+MUTpxBQS0rDDtL/GMO0R04ScCcO4x366xpj2iHGQQvscUDgLOLackJeTgKYAAiXEUYrIp0gAitScYJbuoEsG8wJGRgqEIci4QxykWH6QVAhoyisDYFWESRmwKBQFSyVUYqRpwLTb4fX9Fe7vrrEbJZrsdjfgZrfD3X6H25uAu2vCLmnZjMbc0SBsA5C14vZmb4mRV1V9IBWOWwFXEWBRdAxpqDIvJ/zrz36K//FP/4if/vyn+Ld/+yV+8+vf4fHxuaWqmifYgwwPnz6hltoUDfO2EUlTD84nrXkgY6Yge3W/l7p711f7VtPE3qCWgqenJ7z/+BHv3n3E8XhCUVCQKLZUBB/pzI3u/L8FdK2cWxi/1ZszY+fp6amVPjAA135yzkBLzxFeLxF219jtpCj00+MTuDL2uz3A3J5TNZIuBok6PYv+UuHqI33aHDggR7ZCOPu3yR2vkHfl2YXL+7l9QS695J0ERLEDnZ9zfpwrG1tg5ZIs9MCfh42Nnko5B32KS6WVe6yVejs/hAhwT0dCU5o6GNfTPmTvWLoCkUYZw+bDHEf92uBq/wRy9Tmd4kUUxeOptGnjtTGKgRC6i6oplKS1o9bg8tYA9ga7jzxrc7OC4jcr5uarvTP5hlisSuganLukL2yNQ0+Dfm28TmV3MUOcHRgQnAzzRatBhB7BbnQjAKuptGY4CC+prfGU3WOb6rPuInsO4Pt3vvT92gjooOGl67dGhI2j1NIdiICbBzWarfYcK5Wq17zThN6LGbG9I6PmjHleEIIgRUlrIBltgQEsUuPp6uoK024PevsOHz580LmR6DyLaCaVz1YzK8aEuAuYTyecTieMw4Cbq33rds5FDGABa9SQZk1L1qZuX7x509YglyLRAhS09pTWEX0bEL/9PZYlY4GkUKUQME0T7m7vcHd9DV5mcKlYTjMeHh/xfDzglBcFWBr5wLI0jD9uIz2NHkn3goHvW97a1s6BeqsfCmr7UntvYmpgLNeAWoFlKagknTEbF2JLea7IlbRDpi9/sk4bX4FvSmcCDLLqh+flArxpk/OCWrGKRhU5BVDs0dpbOva07fcDQQArDqy1yeza831m0dNE670p73ueedTWcbNNSUFe66prYyxWNL8pUcoj3F4rSnficOHGpG0uGohHIiuIizaGorYPtzLSwJqYXBdGAKUQQmv6ooBfreKcZ27RLRZNNXgbwfFTrwtsj5UtE6RrspevJg4BwrKcmgw+k9UBqsNLXV1m0SutLiMzS/aFnc8qcZS3kIGi7cNz/aH9vdId0Jz1kQQMyTlLM5IygoPoubaO23s0nrjVNxwZgEgbSVHvEhucrqAXWOSc0DW19aHNuje+0ORvd74UrkDmFiiQa0Wu2kRmSABpmjSLjSWlUmwvWIjdy0CW50lbx4Ol4G4bKf0Q+13uK3zE7GSbwSbvGaLnUG9E5PlTgEbI2nj1P6OVDsaf64/Co9PqXV86mtx35xH1EgWe/v372/x4ftR1UhJwjjtPaLei9fyzu297Iks9QwsiMLryNOPf92yYLKnzqIJrgCsys0TFhgAq0rASADJmSEdsAa2JYsMUKgmQJz4D0VUjBHOgylry5PLxgwC6eZb6CcuyaDvZ3MCVUgryUrEsRYTdyjt9McHITYzGIZF5KXoaify8DND9EBBsq9z667YGzJ96XBKUa+H38jVbRfJz537fZz/kMIHmf5rCpJ7ZkAbs93tMux3efPUjXN/cYRwnSVdABhCQBkG9x8E6n0SEIO3OCdxSikqu0rXEocQVjCULmGsRPzEMAgSF3kGQSJFoZ3w07ty6zOjmVOEmkRapezbRjY0KSSsA4BQ5S90MDZwLQcKfQdJ2ORRnoEcpWBtAAhppZxjzxkGBOqvEaV0cK4IAJOipJNIgiyRMtq0LNCpQuhxSiFLTzik8gJhEkhqi37H2XA3hLGLBwCsp6Ju0Dbkov0wkXVlLxaKdlyxSLY4RuQLjbsI47gQg0xTTkCYQRUxpwLTb42p3KyAeE4gJeSlY8oLD8Yh5OWi3ZV3HwAASYnCp282rWpFSBpCAWBA4gINEFrZORARJZ1XjGt7IVuchF1FKSlmQxoDrqzvc3Uy4vZ5wtU+YYkAiwpu7a7y+nnB/TbgagUHn1gJ3A9D+bSa3FuWDpeR3ftUpHO3T0L9upyn/gRgBAYRf/cev8X/+3/8X/uWf/wm//Ppr/O6bP+D9xw/Is6Y4OIWQWeh4mUXgPz09YRx3uL6+xX5/DSsWa/V2CIQwRAxDB+eudnuM47iqHTXPMx4ePuL58IzHx0c8PDzh+ekEChHDIOea17+FoSvdEmQvFlgkkXhEgW5AWbqLpcCVUvDw8IB5nleGl28aBAIyVyRLEayMFCN204TT6YTnh0ekGHF3e4tlyS3Nnokl5fyCQQ6gebK7LPDK7AvKvjv8ff39vbLuDbpLiv0lmeS9r11J6edcAojkvpay0hVESxsy/r6ViyF041iu73Vh7RxRuLRsjVG04y+mDMrnSQxSdK9oyRVF18SUcmx2i/+b1Eg2jyPpfinVGhM4Axje2OUGJq7SSVqDoK6cyhHa/mtzQ6Sd58xYDQ1QvGQY23rbGmyjKeyeEtQrcoGaHJP/1U36pbrKFCAQ5Tps1nybMrgdW5+T8/pyLbLFZsFohdD2HTbf2XvaPQTAUCdIFSPeALlmFAeNauSMksvKsebHbvv9zDDF+b7bRj3697LzfXTTJd3PP8PuX7Q+mRk9/rmWYSBGaFRUwuaI2x4Cei0+4yMxBsRhQFnE8bmUggnaRTkKWCCAM7Db73s36FoALjjNM47HgxiOOqZoxfF1nu25AjJWzMuCwyniOl1jt79GAksEFLN096095b1CMghevX6NaZqaLm8ZCKfjCXnJCCHirmbc3d/j4+EJNUjdrav9Dl99+RXevHqF/Thifg6oOSOp0wwxgE4HsHYabDLJABAXAdfX0UBMgnUJtH29pQ+jfUtxNuPXIn0BgBe9Toiz0S9IDH9EA3ggn5HWUgtRGloxRAdhbh1A/fPNkbGlRQPDQBKh11Lc3f7dNuQxWrSUVCLpqB3UelP8yE5Gr11ECsgY8MhiPAY0ndDPl+knfk8627WtjelXwTVZ8fLSWzastS08QLoFLZtspfPoyVKK6IdRugWbbhtCRC4SLdYAmgpwYCQKCNFqSHXeY3LL1uoSf7Q5MTDR+NCKz7mfHpV3zlu3n9u9xK4B1FXh5tfuq6tntdP0M3I1ukSrl86SNEhEOZouQWfPraX0DpVMqCgYo8gU6TzZ38kaJsmI0OgfG75LDRRV+jHa3s4T/OH+0o4Sqs4J/ZHSM+nfkAhOsjGwAOgcDHyxoINuw9p0SpMnbSRXtCs7OvDs51r7DdoqtH1qo/eOpi4DKio6DW8P76Cz9fByyN7aA82eLltK/OZgP2hDw82OYI85BPfvvqcaf2HZn63FkJexVhPU7B0FsYPZVUStSZTfG/7wTomtPuz5jZ2zPdeaM3mnd+MN2ugCqgut5mc7/7ZeOk/mxKq1tZzpZthGd1q9k+mKJHx1WRbVRQWPYi5iy5OkWQuAajwtIFACkQB7DKCoHs66txCkRIQ4kQCKnSYvHT8IoDsejwBksMfjCafT3CIezGD0TOsc/NoaOMbet4bSWgGlzwy832tNEC8peH9OoMu/n3/mS/d/CUy8dD//2SXj0J93ZnhuxnKuqNp4cDa3hv5Oux1u7+9xfXOHV6+/ADPjuCwoOWNIE/ZXYtwDAMEM6qwbxAhYPfXaWWhruFr9jRASEqWz6J9ezDeuB6pCqXdw0i6DrYaMpPAlaN551fRZaxWuOyFEAX0OxwNW00sCrhGR1pSTopx2pHFCVFRdWtPrlqcAKRpnNVOE6UqXSVYFg9scm9ApXBFZIvZqYxpqHJKGX0OAPUbn0xwkeqkJgmqpaKGBnCCSQqpQMChIAd4YpG6bFG+XDpFVo9sQI+I0YTftkOKA08yYdleYpknahVHQ3xG5Mq6u9mIITCMiS8HoslTM5YTjfEAuc1Owe8h/aIBmXmYQKqJFKOj9AyJStSKtCUgRrCkOTBbiDu2Kk0URJml8YYGGtUoKz36X8OruGnc3E3YDYT8E+RkTvrof8OqasAsaNVcBAiNpIVAgroz0FpbfALou3Hp7JIt+sggzFrrVYrdNSQJjLhnz8Yif/fLn+B//+I/4xU//FV9//TU+vf+gimECUJryaEIgpu5VtMiyk0ZRdEEHVfKHBsztdzsMo6TsEJFEXShIfppnfPf2O3z4IIXKSwXSMCLGAcykkXym3MX27l5p7wpRj8yiEBBBzZA5Ho94eHjA4+PjKorCFFszhETB6t4xA5qk227Ew+GI0/GI27tb3F7d4NPjw+q6LYjjDSRmah7YLY/e8lsvk4RFkHu/tULiPZHeIPi+4yUA6NKxfZ4Zdl5udiXHpfev7mG0Yd7drPVh+1yJkWTdgddRKkCPXrFxXErvyUtZAWfb+bF334JefaBoUXNrvWBt3JWqbhbXJESUNkkhuTS/XkFbXeMje9x5W5m7pvNzIFjUZWpzvVKMIWBh05m21zLAKk8sqsDT50syfmtY+nfz82Wft/kmrN7d/2xBMa/zbEE9D7oYaOevW82Bm+8tbfh3u/Re20g3Wy97L7/nXtp/fhwhurqb7pD1gTMMz0FEe0ZvapCRFwHVUkxAqODcM01Syogqz7nKXO33eyyl4HQ64fr6GiklfPv2LR4eHlYA5jRN6hyNYC4SeVWgjX0mzMcjliXj8fERu/1OSkE4GmSII9bqRXOtuNrtEULA9fV1S0dcNEum1opxnPDVX/wFeIj48r/+F5FqkbAbR7y5u8f19Q0CM071qa3l9fU1hmlEek54eHpw6wSNyDy3F4ymQoiNpnz9NDNwu1OhX+PpwOaqloqaBeSTCBLbE2QLikARQxrEKYeeWRFCT++2CDTP72wsWxq4QGTwdow/xwBFZtboyDXYIp9JV2DvdNnu7y1vsOtNV9gGSWx5rdh2EqU5DMM6oiaEBnis+Q8aGBZCQCVJSfX70MbSOoFbmqeNXffxOI4i81lq4lrH0FqBGCUCZ+0UYlC1KLzU3iPqHh6GQWs4VsQQW8mDLQ+3sY7jeOYY9IBda4LheJTJXFs7PzbPR6s6Z3pW0Dq6GegA+xYcrFUarMQ4Ka2SFKnvFAQQ4XhcVk3yKiDpk0wIVCVCTAvTlxYNxqpP9WhjMnohq+8GRJZ0USZrdiH6NUiAVLMjSJvPQcFvVodeg73E+AKoNn2EgCZ3JFNJbMdaM1DFEVFqAdXSSLjLCLT7+KwJc7a0SFBIBCMCISIi+o6lIYAqsNQMUEU1oJDNrui0UC8EChktbZs2bWWVB/YlCo4aLzIglyDzt5XxrKCmNA/UDC+s6ZPQa37KmkrdteasyLWV2yCSYJIAcTORk/tNthqIaO+CTedv967bfXXpM98EwTAIzydyXjdNWOvNOu4L825MdQsNg/p5/ruX9OpL+n57PgPzfBIgjQRMNCM8hA4OyruIYwmWHaU2XlkKWN/J5rU5R3Tdt9HI/vhBAN2nT5+0vlwvOirhpJcjxEwIMq+Boe0RGoNtnzivkq/7cnmCLwnFS8r0amSf+e7SvT5nYPnF9Pf7PkPLe3k/ZwB4o8Tf2yvfl8Znz7coxxiH1XPl3wIsVY2GGccdrq6ucPf6Fe7v73G1vwEDWIoQ3Li7wmQRYaZAAFp3YhEsrRaUuoBZhSpLcfphmFCr1SoUgk1pRKAEqWk1IARfD07fk9RjZg4E9UbK/ACsdQmCbQhtThHTgBCA+XASJUmZGKKL0AsBV9e36rV0XoAQpEV3rahMK4CQIZA3g7BkMfSTRtJV1oLJ2oWqVm5Cz1qtV41SExkndbXUZSFouzFKMCJUMUhSO6KU2oRRSgnTmJBzlk5x0yjzrYLQGissXBroRTEAIQlQRwJyZRawcoja2SgmBI10CmHEsN+DEZEZWi8yIEXpfrofB1xf34IIyDWjFKkftuQZp3zCUo6oKEhjAtEAVC0QDCBRkE5wFAAuTRjI2AGEAQjafUuFjXXQ7WluYtimlFDLjBSAaSDUvODw9ARwwV/+9V/h5naHm+sJV1PElBg3+wGvb69wfz3geiCM1CPlpEZHAVEVMWoFQAkg1vo/VvyAoJqI/s3miZMam/KjIJ1I/VZ82AR+ooS///E/4x/+4R/wzTff4De/+Q2OJ0kpDQAqr43pXlpNniVAsXSCevv2LYgIb968wTTtUGvGtJsQEyMliXadpgnTOIFZIg+GYcDT0xPevnuHDx8/4Hg86txaUVqJomyGqj2dIQpgCNoIqBcHp1plLkPEKZ8QU2iFUI/HY0tr9TyvN4Xonsqcs0ZdRsynGTUR9rsvMaYBh8cnHJ6eEUPAm9dvcHt7g/cfPzRl2nhcdPvdGz9ATwM2vmgC1NrW22FKlE9P8AabGSHmYPCHKWFWIqLXCIQ2++gpATZ/vsM5RYbvZGWsqAFg5iTT53klXzx0CiU7ECNodAXAq3fbAiRyL42q3kR6eGUK7tl+3u13COs18ICWzb+9h7+nKNu1yQJRfkJfp2FoRpWAaazXCVCX0oiKDKZeo2lr2Hvv9fYzUxC3Hm6/Xtv39YaWRDB2Q6KUgqVkAaxjlBR/Nc7meVbDSEEmIiSVmdbl0BvnRov+/f38+jm+NGYPutVaWxqrKZtGt7Ye/tl+DYdhaHK9KaBE7T7Sda6PzSKEYozS7ZMIx+NxpbD7OfT70o/dADGfHmt0tKbHzjvlGf1djsdjm9s09Hv5/cXCths/6u8uIBWzyPMhDWiOLpY9Kw3cJGosDlJH63hawHTANO0wDhNAPQKMq8icGAN2ux2+eP0aKQQ8PD3h4eEBOWfc3d8hxB0oiA7QwAVzyqSEUitOS0bFCRMC0jSAzdHhgAKTG+/fv8c4jq1hj6e5WqWJROaK29s7XN/fS8kErhhCwBgi8jwjMjCNI06VcZpPkho3SF29OZ9QSkYpqkqRgBpDEmBwnmel317jUjJ2DFjuY/b0bevk97YHjIkIgQOIK6ZhwKksAnYhCbAAat2lhyDnLXlBKYs4CVPU6KWIYZhQFEDdygOL2PP7QngsgVGRS2kdtldAWlma3BQ+0+9p55Yidf4MCDI+YDzD732/Rzuvqq3MkNetfVdY2we15rYXWx2/GDugQhtwqfYIwrN3dzIk56wAuNp6JjL0nNPpJM+09zAekkUv7/bG2GQhEQnPRNeRhA9l1CoNUsRBGTCk0DK/tjze6qb78W7fxfNWk0tmA3s+adfbusQYUAJhKRkxUlu/l/iprb3xq2VZMOcMMPeu5iDtSEuwOrvTNIk9UgmZpXgK1woE00eVf+r4oAEAkvroHXsCOuSW8SRrtuSllQlJWrNbwDQpds9V3g/avIJzkawdmx+2Egi1pbIG9VtXBbA4BZSacTrNGI5H7GJCSgNSGlCXglqFlkuhRgPByQSRRRHjmKSEDBuwxhJUEQJSSKjDoDUJSffBgJzVo2/OZkHmwaXznt68sOti207jfj2bvqX2a7tHi+SS94hRopal0V+3bZuuSixOHgCWLm8AT61qLzueIo2rgvKJ2N6HAIkMZrGfSi4tmjCRNKownm+H7ZN5WUfs27/tb98gaotZGP9eH0KTXQehZsf0fWTuTaPZDrV1sdU15QAAIABJREFUHiNrkvPSouLs9qQNGxEl+hTV8V2nAwJic3sHc4Oq9IEhEoZm02csWfhOjLHpP8ZyzXaX4I7abMSqTmouAbCO1Xq+T6G/dPwggO75+bl5NUxxNSTYgLiXjs8BXE6/v/Ttxii8XA/h/81jO/aOCoez77fj2wJw23tcuu/22Bp8l47ttV4JEPCi4JRP7X5SJ8xy/S3Sa4fb+zu8efMG93evhfD0HkyiPA1DQnI13gS9rxpZk8Uo1wYKbnArI3WeZ1SNphmUAceUNDXV1luaSFQCqGgEmEW8uLo3aH8TKCREYnCILjKBMI6TGngSeVVdt7ZGxRRgvCGEJAUgWdJbwdsC175grCn+vZ2191oK75T7wzNSEmCRQJIuqsVthVEVSTMNSTyCkTTagpEiIdDQGGdToigpwEc2LWhML43iG7b0KkqgZOmiAQNpKpK1ttcGACFGBBoR4x0IkgaAIGkycUzY7SakUerYlLqg1IycZ6nxsMzIeUYuiwDwGu3I6pUjBjiQtoTw8whYmKBFdTCR64DDjT4sxVnuUjBQwBQBqjNOh0eMifHVF69xfzvg7nbC61c3uL/d4WoK2A2E6xHYkXoI1aOkFAipGZiFDrOmJccoOBsEUGSR5kDJhiYDJKmx1SSigqWwNFf1fCFIaPNcF/zi3/8NP/7Jj/HTn/4U//6rX+Hdu3dYTicEEIY0KnDcU/PEH9IjLb2SMM9LqwEq+3wEEWO/3+Hu7ha7aYfKoviZQvjtt9/i8fERT4fnlQJLEk+AwhaB0AWl/MhMlaVH9rW6S9UUFcJu2gGBm4J8OByEB+g13uj1haXtZykLdlPCbr9DBGM5zfj44QPAoggzKqZxFOVryShLFq/zGM+U575vu8Oo8+Xt3+tr/Ni2DpKtgeiv6wXL11FMW5Br+97NSML6O7v2zCCC8Bq7X1M4GGfXu7dtIGFKHXxcGx4apWwFbxtvIf1u7YwyugTQebPtDzcOo1mfzmVj9/NBZKldNnbh2iACtBh5KUV4hZvLNpbKHT/H+Vxs10Wu0zkijf7WvSu6LndFXg+pjyfzZOBuAxIAWMcHItvF/XrbC/A8HWiF6j29eePR6x9bxXkbweKNv/U69TnwY7LrREbqsyyb3yviXDWVNfaV2dB4M3Y24/dgvIHW/lofqeIBo3EcV4XoDazw729HB6v9mNDOM6OqRTVs9oie2QzCPjcF3LofbqMHeHVtrbIPGr/OGcejONuWlJvB3qOGo+rUFbvdDpUZuVY8Pwt/fnx4QCkZ+90eaX9Ob6UQOPVIslIKkKVxV0pJnFvk+KwCKG/fvsWnT5/6/Ns+rIy8SFH9HBi1GedVatDFhIEJkRmk61Sq1Hbi+Qgmi5IamsHIzM3I7ECt1ZzrUW4doFtHr3gaAnoNQ093tvdr0bQ/bURlQIOkWUYAAfOygIZBIoTUGWERP5UyoOUybE9IhNbQ6McDPKv9VU2XgNa08jTEqGXbZCJ2vu2OEDSCuVYBs+RBIEiKZrIUtI1Mkf0ewJxX89L0EF2DQZuE1dpT9RpInjOGqcuvBm5FKYbegCvms7ET0TqS1pzuLW3xvCQEQ0CNYRhAaZA9U6XpiTgPe1ReCHLvMluKHGOeZ8zzjJwXAaFI9We33wGs5PnWSbONFvLOLbvmkiPOPp+mqc1tjISBOpizjcCUOTUeVlV3krFZUzCoThlMv98Eu9gaSENGdVykAUwRFgHEFUghAFoh2e6xcuDo5wLUhUaPpYqjjJOWmGAHFgUpbeHnhlT/FfCIWldcC5KwlF55nMxZdWCO1xHa3nCoyVZX2u12XXbp/6wJIpPK0lqx1I3TSWtUTuOoDUy0UUUBeJGmAEVrfbdYwI1+Jg7qciY3bK8I8LyOSN/SzEt/ixMPAEJvPacOvxj73is5I1BsdigQUItE0Q0hYUEFqK+vzZOZJ35sK/6F8/qKL2EXl3AZ//n34TYv4R8EtMAME97MmlmlkbGkJR9M/yB7QT8+V05JVNF+QvXBBUTaXVho1ObHDuOXppv2+ekyAk0f6/dpE652o6ff7ytz9gNr0HUmLxNngIptNkv328CPRlob4dFf+o8D2bZGzQ89/3PHmVL5nzi8sWF/f989XyTOjbL9uWdeuh+RSwVkE1LixYEpQyDp0nr/Bq9fv5ZOkMrwai4gAgYVJEnrWZkwACQEvdUtAbeASgo9RbQUMcTm2YrdDxjHHabdTsekigRUyYCkKwZVaqFMp1lZkIQEoQED20hTI83rLQYEtCaM1SBRIF2i2IKG31KC9EwgZXISgSZP6fUR5X3P63F4Y6LfQ4UNkQKcQSxNqtJV0FrHR0nhrerdqBoRyCFod09R8lgnlhrQFsEI6g0KjSnUxgtIgKA4oZIoKjFGUBLlckiTeIgVQAtWA1KNsBASCAlEIyS6kYAYEIeIOESkXUJKoljkWnHKR+TliJo1HROz4FJB4SXjU/ojTEpSuIRWu4HGzAilIpNEwpSA9n4MCVmPFJACQFwRkUD1hMAFvByQ+IQv7l/hf/3bv8I4EHb7Aa9uB9xdB+wnwkDC9CKgHZZaFQdIxFAGWDyXMST9ssCaHvAyo8zzWe0bSgMkJS0CQTyGMgkC4hEBXLPwTiY8Pj7gX/7lx/jxj/8Jv/jlL/CH3/8ez08HGcZSwPmktH8ewYONwpJzxek043CQ+qDMQEoRV1PClEYJ7yfZC0td8PgonWG//e4tTurx9bRsa1W1WxjzxuDvTwdIhGMxT1fVLmshACS84ng8NnDOP8sDdJeAJCEO+VWqpOM8fCLEIMJwHAfcXN8AYByORwF8AIyaJuVBB/9+9o69A966cP0lx4j/rhkqWINKW+XEfrbRadvDK37+mm0zWlMCtkqiPLRHCjVlo6KjEpsbMXw661o5Xo1b2iwI/6wdlCBVHjsajbbBS5aiuhStAZRstAa2Gx82I9sBSM34JoJFj/h1JCIgr6MP9MX15YxexegxTk4GvzdDyLydF5ekTWlQxwI3T67+Z8/loJ1XJfoDIKD0ZhpVwWy7Jrh3NIAypdT3TgiIISA7T7Q3WmwOumF/DtD5dfQ01t5rQ2egdbRIu44kir2Yk4AASlFKVxTRDySqwmjK6WisEdBY7z87vLG03f/kxmPGqkWpAuepj2vS9iCwGIQNSACt7u2v99Gn271qTcuEjiskk0roS4rXK72Cz8YiJXR6ykxdKrguKLlKauo49qgsIpQszkwKAfv9DrXegZm10/Uzcpa6pMM4IA7cjGQuBbUGxDQiRKtnVlS+yzkxSR3Xth76nvM84+FwaMAnGBiSRLHAHDUEFOKWGoVIoFyQMyOCe12dQNo1VniBpBv2KDMpGi4gjEVfCQ1Y6qu3E7DSv/y+8bS8pS+jmZoLSpbIOYA1EibJOln93xAQY8IQAxADKku0vhSfVd20UjPODHQyOjRw1WjI3icNoms3Gen4mJQi8Sn1QR2165rLhK5jSwZTlkZuxvvduYG5lUlZ3cPxiK3BLWOx6NF1mQlvQBr45Mfny2RQkIgsrwv7vc4azdTSKNHl2DiO8n2tEmlptVTVyTxOV5CIfnNKx64Pur1aK7cMr1JkTisEmF2Nh7lFnBotXZLXJlvneV5958E44xHGyywapvFRVGmABgJzbnqUaZ0SHBAByD5a6XYkAE1xfLXzpH6erVFeFgHoNBOmQiKj8lIQA7VUZVkPlprcNSuN2u0ccFElet2K23f50SwMWfOzCFIbmdgtFMnEP8g/gYWXUtR96/h/rdq4Q6MG1zxZbCLTiztvUaWVDCAU2i9VZDFyRZ0XkEZ+BlCro4po+0TtR7NdmEEponBej21DD36fbcEu2ipx7vA2z6UIXJF/fW7Q6KPTaUXYPNNnSnRYzi5ta8Bo9UDZ3b+9p60RgqO7NR1u9d1zLMJ4srdZ1u/t/159z0EvyStwrv1uMkzoOrpr7f2aPrI1KVayfT1/Xj8DswTAKAAXAiGFBBBQa3ayi031BaOiN92Suo+yBqSJVBngHg1u/O6l4wcBdNvJZ/SNo2e8cKV51A3I6/YC0WXbYfvcdie3OP9ZIO3iSP37vUA4l8ayHeulaz+nTL5kuK02uZt//8ytwN0qnSZIRifciKiBXtO0x/2b1/jyix/h5uYGDMLxcIQ1TQBt6tJAinLacwcN1+xGGyvgxvKMKilwraZVGjHtrjCOV0hpgHQOBQTI0EKPbA57Uo9a0HE775yxe67gKqAV174PWZXiUhhkqaaoCpYZ9w7IPvzYgDRxwYiBkYYVZcdNA4ZWZBzUCgHLAACCpbaGBtwk69ZK1HxZjRaggGGwaApR4riK8kokIJmscdSypQLgkL4PV6DY1CMipglBU0SHYUAcJ6lBNozq/VFmq3Rh0Y+EiBCka2cI4uWOQwSlKEGXQbx6p+WIZZlbZyQiUShDGBUciKigFmIMdsY9kRS8bQKpK3dcRLGJQ1AD2bzihBAFgEmBUeaCKQLlWHB4+ICBMr66v8Hf/Nev8Ndf3uP+bsCQCOMADIExEGtbmg7O9fx/+0DB4OZtqkApyMcjjocnHJ4fcTgcsJxmjEPSGm8T0jhhGCakYZR9kaTjLEoBxkHnWSLz5pLx69/+Cj//2c/w9ddf4927d1LjcRgQIXVXpODtAKI1r+uG7Lr+hdQH7R1RhyFht9thGMTLdzgcsJSCx8dHvH//Hh8/PmApZuhaCH6A1HmsGj2HBtZt+b/xG0lxFS9r0NqMRAJSHp6ecFx6d29TKqwG0rYwsz/EyBnAAI7HE7gsGEJAmUbEkDAMA7744g1urq7w8PiEp8dHEXhE2iWRW2HjLUBnz+vpSsIPL8kV73m3cXlDZDtmb8gAaw/8Vkb4dIBL98eZXDiXAXpRO3WlfFCPWFh9p7y8A3zcjHMz/mKMSFGiW3zUtJ/PSwrp6nuuqBeAH1Mc/TrHsO6GSjrOrdwXYI3AKE0JJ1VGTUbY/vB6ySX5vo2W2Bph0aWdWLTW9lw7v4O9fd1rEWDjUsRFM+Qd6CSg89hAgEvjs+st+nFLU/7+ZmhugQQKPeWMmRtAZ/TQokpI0wBd516jDxuPV9gF+DT5I02QIi5HuW3Tyfw7vARI+uhfWxPbn542X/JKb0HANhZmbNFw0jpOpZpDQUwbNqYIb6RvI/C683Br1Ns1tdZm/Hs+LhFnY6PrQEF1g9Ai6RiSCltrbVFUVmvR5qZUiR5jZuQlAwxMGv1lYzJgvANHEcu8oLi0SIkO1SiYQNrvhDBEqS1KXJAoIJHQFQcxKkg7nQtI3t8vZ93j3FOhxeA03bWnqoo+cZ5e7+fa/x38+zCQgzgCrSmQyDiVXywRi8MwidMyBnAh1BqAUIGg+mcYYLWP7Zk+xdEiKow/GpgskS4RCIRa88phFAJpMXFyMuC8WDyDFWyi1tRpC55ZRFmLVuM+fx7wMbkCJ7u7fQH4ZkKNZgHkyqs92+a6qXRCR5aKt5VNtUqXZCvtsu3K20DaUqQRHWvdNwaIKkCLGsdB0x4lajSXjGUJOpeS4bCKhDG9QrtIJxIANoIkY4alJlteFuF/EEdEawqmv22/XJoDm9OtjmH8KEt0AkKApugK4AFYNlrR/WBpnKzOAGkSF0ICzzOgQNlaziqfLwo+xwhSvle5qoxkBZWh81YE+OKKXGoD6AC0Rnu91JDxKe14SyRzQ4b0iAPaR1x62qm1oHDFEJICJRILVqvYiahFo5VIi+Qb8ObLMKlTdIMviK0A7ZDrHLxYy3UGEGICcmnlhRqwSAJAlLyAy6L3Y4SqneetJmkKyIVWzmR/bIHw7eEdUZeOrU7V7t8wqICWily4lSmwFOc1TYTGV/2a9CBkVjOH1GGIlmZfa2+0sJrrjYy/9P0lHVD+7fWXlzCO9d9yptizACQSFB5Y3DryzU6z7B+sApNqLqv7ty7A7sGX9Fn5XNKy2a17MPMQAQypeWgpue0Z9nwQai0gdfaYU3wlxz7XwhU/EKDzBxHhvO1EH+DqU/YKrT/XFOjve9baEPocMPbnOLZK7vcVgLxMlLh4jY31khF4Scm+dK/P3QM4B+hQ1IiPXWgECkhjRBpG/OhH/wU393e4u71HSAnLXIQZkEbfcQUXSemTgqVWJ0Xbn6cRcRABI+/PUkhfI9hyKTieFsxzRowDhvEKu90VYkjIWtg0VGkcgGZIqrFMoXVdjdEUaUDAQM3nj8r8qxgHRA5sIGPkDAqxgQ8E0o4q2hVJIyw6dNPyeUTp9UaeU1aICJG6obIyQNW4Liz3ZAXrYtR0SaClCLSuQtatywylqEYBF6mFp1FxRAp6MWNeCigMUs8vJKnpp9szEiHtrhBU0IzjKOsVI2DKlHqOEGxMSj8xICBiUuV1GiekUdaosBnrUlNpKVlC8LXtfSCNBCmidBaWtNDGpt1cLfPcIk8EpNO9lQjggDglpAbQVaAKYDcEMRA4AbtIeDx+RD4+4PX9Df63v/1r/O1f/yVudgNe7QkhyAoSVQSUBsyJPiDP0RVQr7muOVVwycjHI54eHvHp0wc8PX7C6fkJ8+mEZVmaYjwOO0yTNE8Z9fcwDLi63kHSk69AYQCXBUuu+O03v8c///M/4uc//yl++7tf49PDB9SaMaYB4zCgUpKaN8u6gOqWD3jD2AzYWaP7zHgYh4hSKh4+PeHDhw/49OkTTnkBIEWW+z0DLOBKmoWpIkA+akgjZW0QVZQ8rmpMJY2sLBWnecHT0xPmks/4aitS/gIfazQS+tqIcSeKyjSNeHV7h7/80V+g1opvv/sWT09PauyqFxRdgT4Dwtx8WgSDl1UvKWHbMdq5l+SDP88b5v67rTfWv3utYth6pRdYj6vf67J8IfRrV0CIRjz3560BqP4+wgs9mLJdS2+oXDJYbNReSpuB3AzNnCV9zgAZoNWrqWRKjc2V1tCjXkvQDIuX1m87Xr82XgH1ayQKawVfwHrsHKMLAzDts/YM6oqif55fJz9f9tyXxunH5ud++74d4HhBKXbzIdGKHRzyoBfIohEtsqmDUkHLXWT/HF1sk89Gf5fm23/mI0H9+/lC7LVWHA6HFsnk6frS/F4ypoSnnaewScRFv0ebA619JPfqL0jUgVV78b49qf0EjRjyhcJ99JXx6uvra3l/Ygxjak245mVB5Yi722upRRsInz49iBO1MubTguvr61VtS6sThVAQIKmIeVlQlgUopaUQAkDJBWXJIAbGNKCGiMBAQa+ZtWQBqyoBhSDprK2TrIJiQaJ9ci1aYxgIo6a+FY2oJos8Fj4+zxl50Q7PlNTwUTCQWed+nT7m19lodFsrsZf+CKBioE3ncwyJoIrcswYECCuoOatBBQ3JIJSClmHgI9mMBqx236WIzGVZYF7ArX3geb/njmc0jdreyejHOwq2XRRX98C5U8ob9n5OvQyxFF4QaQ1qVxdLeR2Kk10bh9R2neQ9JLqr1QAL3fFjc5liBCeL0hdw+DRLPbRSevmM9Q/aekvEt+r6YHCukjkAAeBIHd1J6QwpAcMkjunKostmaWxUlO4pRsQUV/O7dQZ4/cLOEVrJGKxuakjS0RcBlTMIQKnAMpceyQVzsGvEcoA8G91eiKBm64jtw0hpwDSJM7iQRoZpD9hhSBgGyNxKoK/4IpTfWQ1IaMRW1MhZawQ2LxUSeGG2fydXpqqBEdyC6YVvKkDY6FB4hQU0MLHojihotew2WoJdl3NuDVwaPSk4RwytbWnATj8sSnIYRinSr8CURGa6PVIZXLVsDVUwIiQXy5rSrR2MW5n7vTa/2+8vHat94mgIvI7wN13C88Q+ttBktZehGj4Dm2EDuaCf5CU3nvI5fdz/+yXdxMZjuipzj6Dr12zAVg/QNXjNvzOvTpRgG/d9qQ0ANp2jfbfRDUynuXQ0fQpO1xLBofaQOA2Mu8g1pKCm6e72PwO5BRgGAYHqmj7U3r/UgMQfPwig6x7J9UZYr+c5uGRG3kXhcYHALx2XjJ4/97G995/6rK0QvmTQrDagHp7oV4aU+8yfu90wdqzCyrl3GKpNkABxSLi6usH1zQ3efPUlCBFzzqJ4UcQwjMi1opYsEVxBiMmYgJTj8oXFJcqqNm8po3JByYzjaW6FW4chIcUBFBMKE5Y5N4EF7SgUgnp5SFAm6QBIKrACmBi1KtgSNJ2wz4T+X+4XdHMR2cY3kIGkzoBOadDxdwOhM8qulNukQpX5LixM0YohrnLdQ0yo0oVB/44IrVOteQfsvhIK3ozEaAVzAWBoLKG2mniWlsQISUChYZyQ0ggETXsNhJDEE2R1RmIYWo59YWAcI0jrz7Ezdkm7Bg1RmguMY0AcJGqOF1FwKxdIMfYkgGGUVDUA4JxRUDWdBurF3KQYApiSzFmiAEqifFhDqAqJoLMaTsKFJbIxETCEiuluB5wOWAbC69sr/Le/+Uv87//LX+HLuxFUxZgItQhIxxWARLC1GPZWp5SaXJA9m1Frxvu37/H0+ICHjx/x9PAJ8+EZJWeJ/KsVpQjgPaRRwLlRuqRO014MpXKLcT8hVfHC13LCu48f8fOf/xT/+pMf45vf/QYPHz5iOZ4kZQwAVUYMEWMaQFiwVNdNagU0UTOagQ4SWCSUgSvPhwPev/+AD+8/4OlJOu1RjOJZbLxCDFFJp1AlDGENzJmi1Zwr4sXmygIma4evWitO8wnPz88wsCWXdSt1H1G3PfxnEgk4YpomVPW8z6cTqF7j5uYGKSV894dv8fa77zDPYgRbLTyurPv/UqmArkzY+5sR99KxlV9bhcuUdR9JZfz3EjDj79sUzBfO6+ecywM/Jn8fe03eGBNEBMs5bymmsRcg97Qm9ZUuNx7wAIkfp69JJp2iHfClY6mlrpQHTwtEksIuaTkAWMBTo/k2BjUWWLVSvx4e6Ds3RNdysimyoRec7jpHbfrcSzqBn7NVgw8i5Yde2V57m+0aA53a/cwIdrS7BXi3IN32fWzMTT65otq+0DmgEWTU58XmsvrugA683Rqqq2g8dIPDvt8asJdAte2z7d8WIWS158zZZHTj7+2BcJtfM+B1EVbjWUdrbgwRkH4ma7h+NzXwYXvvImkoD4ir6FN7J3sfwDe3EIPMDKZlFkfKMIy4bmtXW6Mdu+dut2tOoVpri7yDOTaNL6HXbDNtKZneUsWxZl00hS4lej6kKCmuKiNEQKuzNhhdCaCdc0YJQCyEcRC6DrB5tDkRp8gJszSfogLmHtGbUhJHH7RbONZgtKchmzsPLhMRwkBAdiAYiaFq9CxYajcePaAgqIM27ipZmkfROjLF6NWaLTVAUwG8XDLySaKEUgqr1FgP6Pco2LXu3umB2rme1n19UxuH5wcCnEpdYZsvGTuf3csULH99A83DesxWD6/bzef81dM/ANXzu35o39m7rRssqXNKgf4QJEXReFbOWcqcxIiUInJe+voa35YBoXLFlKZushs/BMBKK6u6cBSAIKVt7J0k+2ddH9DzKM9HfURzCBIFl8gA+QK4aB5Ww56IEBDFznK0WTkDpBkpZGnqGrWqpW+IGTEmgAiZe+H5rtaaztBlq9hNpHK58/O64o2SJmzRcxxYSw5pVkK7o66jIBBa84+AIK4BBOEZYAFoxdlb9R5G09allVdZSKLbFulCinXUdOTYwCpJQTwH6QJUrmkdP8mhEtXH/3CpKCgC0tUCquJ8ilq2gMaEwj2d0QPefi09KOY/HzYRo57+7XPS9e16TQefvVyS89Z8woBpg3Iqetp6jEkiyKiDdATV92kNJn4f5nHpnf34zzGL9XXnuu+5M9mDh3aURm8s9qHXo+TGq3vI7/7sLVbCtJ77rZ7iu84azG20hkqo0r64A4Gr95La3eR2iEXl+jkW+Rvd/nz5+EEAnSGLbf5a2tVLaKQxER32xouzTW146dimKnjl1u71feP+3HHp+X4St5vtc9f9qcdLBGzCa3uunzcvENr3MO8jmtCy0NVxHHFzfYP7+3vc3N52JTazeIw0oqqq0UNBCukjSrHLQIImm0i3cP5KvUgtEWOpFXMu0uk0RKSYkMYRHKh5wkplxBRbW2cErRGnA2cdW6AERC0iLKILljYqeerUDDEikmg5jZwzIWg/LB0KmlAJ+vykBXWFCUMN+wgu2xTitFIChZmKIRWjpjSKRYCYEpCgNQK0hkZK0krelAkLb43m/R26IWZNJ0JoBXOr1mmR4kgJSCPiMCINe8Rh1PoTQ1POGKXVMohtDlVZA/XOrUGi8kyJlncEUlyQIiPEImBbFWFWkFEJGPc7Udhy1fbdCj6misJVmkFwbfwjRhNwwvwGraEXA0AxdAVJGSlTT0EkkHj+akVAReSC6zHh7dMH1OWEv/jRG/zPf/M/4fVNQiIgRoBYhLxEIRahHe40AK0voBsFzBXz8Yinwyec5iO++d1vcXh6wOHpCafDESgZEm8pQKF49wglSlpQngumfQEqgceA5+eAcRIa4bpgPh3xh29+h5//8mf493//Gu++e4vn5ycwS1HXoLWrqGq9gxTBlZwBZ7SM1d/GAszDfzouOI4nvHv/Hs8Pn/D23VscjkekYZBmEZD6bz0QWsA+S2uVvSSgnXTkUjBA63w0PsWsXYaldtLxeBBFel4wn04IqdOzAT4eqNvy8UtCnm0/qedsnmc8Pj3h4dMn5GXGu3fv8HB4lvevdVX3qpbSIla9kWIt6TuwIHOwBZDtukuphGvZsGITZ+ds5dZK4XJKvykMxp+2RqkZUmdA3Ma42iowZ3KQDXjtimCvs0Xt31VrbW2P7fMvKXhd9+CewtItJQBr+UWAAnMuopU21G7zpXJu/UoGIKGVO6AN6OJprqV1rJSzC0byZ0T91iD2dC3RHOLVtvQRrrXJq21xaV+TqyhfsYd7oM3PgwcLvP7gDeyXdJUfojtJ0f916uD2Z0vDnf4A8Bow3L6DB+xM1zl3RKwb23hv//Ydtkrwdq6sFpw3sFuE1Sa66/vyAAAgAElEQVRIltUR0e/jQc9uXF96tq2bNXmweme1VBTtPgmgNRzIJaNyRgwReSZAI6ILBDwHZK9c7a8AFrn99PSEnHNr4AYAFAIKA0CR9NUgqVACAhDKknHCESVnpCjNuWgQMK9wBarI3hgC8rKAS8XN7SQptDEic5VUVgDQyOghRM22AIijJPJYdA9LBFAA3LyL/mTNIU7HDIsAZ7YGWREhGm0AFknn96/JlBW/83sAa/7UeJHb1+ZQNd4fUkKt1FNcWRy4VmLEdD8DlIwWvVOm7xUpTt8Mb3k8QBLtG4ZzWtxSoOxjAZEqr4EzA/suge6dZkOD/Wxs20hxAWJlv9rea/ZFSq0sjD0bQItI8vdgkogtD2JIpCUagMNAS7s2IG1lF5aKYs47BsRRPIC5p983gGkTEGKpsbWqjkfy3KpRo2uQsr/jPM+9vp2LzhHQqusRxp+2YNw2YtyuldTzBM7K//icZ5HZDW4OSinIJYNK1Y7J7eS23hZhV5kR4oAld/CyEgFRnQotlVZ5L0y/M2dMp6OlZOn4q3tNOi8vsvcDAySOhlir2mNi/1htQQBaVkSbS8WAhIh5KaZeN/oAKkghM5Z4XVlbv07m/KVo0E2nk1oBy64aBtVV17oWq463LAs4F4medPfo5wKBSeo3ql0iGWHGw4vYJKF3WbYxelnjacoO4RVRHPoX1h5Ac5w0JdL9lpRcoQPT5YLbVwyWCDI28iCEaOC1NlFxGFCDbho7chHxG+dWP1xZIlzQJS8cl4FINZfZRiL3Mz1h3cxpfb3J4oLO29NWl9ZLgo2R0RqUfG58KaW2dwyE87yiPTV2vdMiVAHdR8xaisoHMTCYpfSP6e1dn6Cmm37ffP4RNehwJuT40tsDEK/7+T22k7NScORLf4HWjgAaiqw6q201yylv158d30dMflLPz18ZYd1l1Mdu89Du9rLiuzXSzkb6PQt1bpThggIehKFoYepFmXMIAcM44OrqGrf3r3F1c4NxfyXCKY2trsOcZ/VYB8QUUAOBWYqOmWEkzanE4Cgg1NC97TYRpTDKUoWvp6SNCRIoAIWlLTKCeDkpUosYQ5WuTTIfgFQQJS28T5LVpBvFKlyyCggKVquuG5rCxQVsQ4gYyIFe6j2y0G6rsWJgknwmcIwdUWu3hSiFhC2Um4jAaZAaLIqhIw0YU9Jim5a2GhFD0gKtFexC50PqAB5poeU07BDTJIYbBZTKUrA7JikGnQZp9BCH9v79OZJeInG5jKoK+xCjAEyBQJpajKCFkU3BAjAQY0hAiAwKst6ZGZSKhPkGQowDOBfUUMFFvEUhRBW9BXEYBKgzEHOQzlYIrJ6eYMGACJGaomjLm8uAAcAE8YhlEocYZdGha2G8f3fC4UPB3371Jaa7Pd4uQH4quN0x4gyEXFDKM+b5GcvpCK6LZDbEEVQnxDAhRiBzwelwxIdPH/Dh4x/w9PQJJZ8wzyfMxxmlLAjWRVg0nlYcPsWKkoQfxhgFsAsJp8Mj8m0ClxMqZzw9PeLbb7/Fb3/zG3z33Tu8f/sOz4/PGMKAcdiBIoPYvKdS9Nnzh6rFfRs/CaH7a7inuR5PR6RDwMOH9yh1BoMx7nZSJ0bBzmEYsOSsnY1NYlu0nBitkppTVQCtI3MAARVTEiB7WY54fj6glAxl2OKFdfzLKzbN4ML6HSFUKHMJoOYFMzMiAdMwgonx+HzAN999izEN+PDxI4ZJ9mVdFlhynVeavBJtXNYUEjmvGzA9RF/3fIwKnItSVGrR6DytzWX7XRVCEVNhZdCfOVGakD6fk87n18X+5fdmntp9nRZmnzOp4uzTLt35rNEvpCBwA5eCGg1ARm0Gj5dONq5tJNr/Q9ubNUmSJPedPzvcPSIz6+quPmaG4MwQF3HIAuBy92X3e6zsJ+XLvi5FILIEKQRAYDCDOXu6u6q6jrwiwt3NTPdBzczNPSN7hji8pCSvcHc71VT/qvrXAgqqo0LHJ5kSybZE0LhMVN/OjQFNoUcgCSHOObXoW85FU8ZrdQJXYG8LoJSv5dxsK/gZY1ZRhKoYpvxsoRL9b561Av2MFomwxjbkwku6Zl0PLNwvW6CwXHrG8GBtnANHS9erBzkr8c5pJb8FGI91Xy+ALORKBqvfiSyAfDtWhd6gzqVbIqgeLMeNEVP7Xwwjmx06VUlfc90VAzCEoKmZmYdLjfGUnRid6maNLlaVayE7phZwoijJ7XuWcc1KdKJGWsWUnUQVLM3k5UZqlEK2lpa5M0Ueq2NoBahmXhufdSLQ6q54S5ej1Yy1dN7TGaNnvqjU913H1ZWrY357e8vpdEJE6rlvrEZ3ayVMu1Qv9bpHpzAT8ykSUmScxqUqqQE7dNjkSUdhmgP3xwOdDLoXG+ClgCta5VmNGGst3nQYSYQUCXMiEPHOaiXFaUIEnFfePO89DIZpUo7EmKhVb53TrALnNO2PJuuhBYxacFpEVmuomFElCkIj8HVutEiUEOZJo7OtGvqmOKnr+vbM82KMOeexdl1YoKazNvvS+w6PFpkqbQtBwfQCzAKM41g3zWLAla9q1Rpr8QUcbACCAs4XmWatOt5i0AIhMQj9YGlTUFdOiJSYxwlxWS8rRPsCYkolaQV8XN6nmuVgq65cqtgmyDQudongtI08yuNEUj2yzlESLKmmGpYIPZULAiScNQzecTF0DF1PJDInTUXtnKaAhszhFkmIFTqjgQNzGHWdmKXi8QKKFnNa/1fgv3zGaLGPKBk8TA11gCj4XDgI2wjjCnY4Q5Clym+Vq81/II9Xnp8YYTYkl98XgtrTLDqB6t8QFYJAUmSajkwhamG8AtAlQRyIWAXSRGrRDCRhJGpKLwtAXoIJtIBeIoQZEljjiWkmSofFIpliQkgUFGQ5L/QsdN5DaOk0bAXOSDEDtwrEmpyO7wCTK2Unk+i7fqUn5Zmqk+as1ICSVCvZ5wAFZziNEzYVcCSiFpQCL84Kvfd570UNJkgKtuh0CjFNug3FYEgYcY26LBWkb+VQe0ZbsoPSAC3fmFk03yg6N+d4yWNUKhgL2UltsDnNKGXQSvK8lvN0pcui9ASL7rsc0gborMNZl3lEF+faooq08mgdAbvCR6RCI83n23tbnKKMT7Hzyef/Q7ylAGAt7nR2DE1ee9L8TZb93Rweq0e0wKQCdDpfkmVVzPt3cSZnbMvkCMfGiapfFzlQx0wgK3O5c2bBtH7D9dtF0G2I7JaBks3P5e8FUFMEM6SoG7IoQrYloyzvWJMUWqPATe14+4K84DBVfa7vA+qGXcoLn7+ShLXCa5ZlJFLyg9dPWC3CB89bj4drqlOun7HmRtqmgJSrawyI9pKcdhGi0LDcE1acafqZmH+37/fsrp7Q7y80Issp0UYkkqIKZu+oYFm0wjGq4uXRajgup5o65xFj2PU75jgzxRlDRqyjkKZECglvO02f6jq8NxgnWjHVObzX8tYpJU5RS4GrJMvMKcZgvNGNlyLeelynhqMelilXisyeOQSzjTIoUWO5SINzPcqtEElEsAmxiWhCEQc5As9lgv91JUW3v8hgpq5p4yydMYhxGZxDlRJRaLDrBwanxRZSSmA9znmccQQRuqGvJOQRrUrZ70oBh8TF7gW+36tn1xhCTLq3u45u6Jlj5ifJYdSlGIQv4OWsCufJCBMTg7d0TpNmd94hkx5VkzdEYyCBT9Ab6C14px74aEBcR2cts/SFyxUPSOpIJyFlT+TQO6Ikxmlid9ErgGgc4sD3BtPrOTVLYHdpmfK+d53JoFxEknrxXRCeGng+gwTh3sNkYLwTDtfw7s2RH/3dKz7Cc/fpnv/813fccsfN3VtO1x+w1wc43HN//4r3H15zuLslxiPeHbAGXHjC8ycf873vPOfqsuPF/iMu9zvm6YauF+5O94xxQmLmJigyPss3Z6ym3CZRWeEiZpyxbsZ5YddfcjrcgzME6/jlL3/Fz3/+S96/v+X+5sB0DOzcnhQic5pUWTCQbOJ+OtYqVsaZ6g1KWegXZW0KE856TYm1jjkkTqeRGAPOCZhI9ZRahxhbve2LYRMycAISlIfSWI2KU/1cD/AadUUB6DqmceT+/sDxeKjE3poy7gghpzHEpEqeWLzxNZ3j3GW28pake8QYpqhGUDKWm9OJy72hu7xgDjMkw25/gbUeIwoeGiwpGa0w28hdMcqlmEpFL5+NjTghQVbATSmUUFKai7JhjanRBxntr4d4rSKX5SoYwpxNRaOGWEnNGYZBAbF8b0qJMKcc3WqYckRBGzVRwTBZCgFoYZflMyEEjVZICi4pj6fN3uE27TFXZE/UEH8x6p33ziFWvdAxR0sXvqu1oUMFoUJanq0KpSAhEXnIt7dKFzPLPIlITakrwN1CC5BqhHCRkzFGnHU12qQYy1oJ268BkrRU7qte5hx5Ufh4th7k8r+tMOly1DViKpep3qbzGzN5d4kY6RoS95TSisNsa+QvY5ujzH0Ba1PVOVp+NqzuSesWsnYtGjNrShu5Il+Ogi/tUieLx5U0sjDpz04jm8WJFlnKBoTapQVYp6aZgaa7p6DttwilWugCiGl/jIWu6+n7Lq/TWGVK+XxJxcOA9Y6+RCpJwog6yAwa9RFSwrpi4GbjIusIKUmNhAI9tsoaU6BPmEKo0Vwtx2aKarBhDClHhFUQUMCkrIwXgzzz7xqjYywVWFOlso28Ak37W+gmhHmcVZ+7tFzsB6yzhBzBWORL2W/DMNR1Mk0T0zRxfX3NPM/s93sF54o55hWEn+dZ9fCyV+epGpiCYygRnKLE2t7sIMyM00gYI13qapRnMcgNMM1TlUdd1zN45U89nU5MYWYGRNTJ4bxdKsXmORAjWG/oXZejxRNznMH2WpTLKjKn602dkAVEzaJBAZ2UFBh1xXo2zBhOYojWq6xPeg71Rugl4VKAOJOSOj91/rNTxyjtRwipcnK1fIQtIKOyYL0vy77WSG0FcUo1c2tHhkEdr0vxs5RlTEMqb8gcrrlQSSYmN7mgk2lkR8je+M71eCucxrFGh7Wgu88Oc5PPr6vLyxro0AJpIQQkCsPQ6zrOEV1ABfxaUHAOgTFmMMNZtV0yQOBsPgtEI7MkFMeW2nk45SBMKUIMCzWCcSBJgZsw0adEiiNBoN8PmcQtZoeDgoZjHBnnE50fQCLdoFHJc5gqeGJzyjFGqXbUJs0MzBk1WPa7KN2Co45LCIEwTcTZQEx1HIpwkKQO6WQt3TDUsZ5y9KzJ52vI6b2FL43cPt/3OlcipGmGXOgkjjNz1GyKAvLGFPDesB+02miwCetUiqWYmKPyz3U2g6whIGnSLJSMHRA1S8I7W3UtMQbXdaQUMEZIopyZOEufi9kpaljWfr4vO861PkYAZyrdiFhbPGcktACPBjhYBUNCIE0T3kDvHEJHmEe877ODQM8uY8B7BU+tUbqdFBNziCA2V0L3NStHTCISCDISmLE+0vWOOFudw8K9nQtWJEt2YZRU6wxFpqic7LLY+vgS/afti7LoRSmF7KBOiLUY36S7ZieQ8b0yESTVfUsmGnmvh/mElhRUXcpahxWhFB3AesYwY606HFKc9e/OkEgEUiH2AaSmS1f8WwTJ1a6RHS4HSRQAKVU0Us873UOu6pwt2Jwy97y2vy2GkHF/UVC31QG9zxHCxGpXtJelyYDJv1s5vJ3N54NU/bw4kQy5qnhKmmIOeLOcwXoOzlluLjp/ynJAjGHhYV472iU7BFzZBxVAbDhBMSBOwd1kq+4lCClXnB523YM+t9f/dJGI/6kr9+ecJ7t+5LdAEbdX633451wtmLNthzEKSv1TnwcPjU1okdZHDNSmLZ3zGMhRSI03+pH3V4S87Klocbbj4uqSZy8+4vnz53RDTxRhHGdc59ftbIBug8H1vYJbyWRF3SyxGgamMBNEt39Si4qYK1CmqFUoK8KcAdSY/QSJmZhyyqwUeC//MxZyuLlYVVDV3Mlvz0CDKpfZA1NTJI0KWkk4X4SBqxXGlHvBq7FSwrdrnI8l4VW4256u72tYLUA/aNEFYzSVw1qHdTZXV/UrkBgRfE5HMcYh6HtdNygPXxJVnn32dFjwvaXf7ei9zdVPPX2/p9/vcN7nmgamVlOd50gy6k0SIt5C34O3akCkDmaBvhf2+559Bx3gYqRLkX7nwMPcG4KFNIOZBTuDC4mLvVNg0BhmaxAPFy47WqN+3gP+yiBpwNiE6u+WFHu8RPreMfQGsTDHRJAJYxLGg/eBKSj/mkuWzjpNlbDKnXITAvGQOL6fGA8j7yRxPQWuv7nj/TfX/PRnv+RHf/XXPB+Fv/vPPV+ld9zae5wJ+DhxERJ7a+hdwFqh8z1dJyR/T4qJ3sKrmyNf/vJvmY63fPzkBf/ue/+Gly8u+ejlc6YUCaaAUgYrGikqSRUmn4V67zwYi3OR2QWmGPBBgbWUEofDkbtp5vXrN3z96jWvvnzF69ffMJ1mBf+Kt85ExAghaSJxEfIGNfCiJExaAOmq7CRNpTKZe84ao9EZVttdDOCYUo20a73va09YOWyX6KYCMrRk7tqvQ+XcKYewpitFShR1K+bWntDld1v5t7RlTTgtuX1REjEJpzlkYEiJjI00FR3zIa3i8PwZs5Kpm+/LFYL2pfS5eAZLtGQLuhQwoqTTtdEK2/616QTbMWmvNkKibds2+qc1mECN3xjUmGvTjEt6XkmtESmAUgGgpII5Jey/RH2UtpeqoOWd5zzHQOWkicTal7bS4GNnoc6FAsSwNniXqMe0AQpLIQk15CUfUgU8WObl4Vov/1cpHkZqNE89WU3jBM3GJpJBrpL+lRXVEKJWMXVLNdbH9I12HNs5L/+2KZ1l/GpUypn1Vd7psiMu26CLIVyM9hxlDo0CmvtoM+VAGWPn1lVTFx4tW9fN8oBlrJX4P0dboOM2z1KfkwXZWl4YNAowA+qUFJIMEuo5XyK6bDaYpKavG+9wslReL31o10MLXJR52wxmbkeWeTGRgqbMlTmve04kRwOpvFEq21wUyrAYDs0a2O6DGGONqCrgjWlSi2HhF2plxocPHzgejxU8uLjYkyTRJU839HSdoxuGnMJZgCAFD6MId4d7juOJ/X7Pfr/HDx3RWaIRfHZGFZ1uzkCj8sStK+gWAMNZx67v8b5jniLHw4hIrAUwjBFCmBnHMa/9nOWAOhJiNoJDDFijZ5ra+Oq8dVb1w5QS4+mUncNJmT9EHX1YBUyTSHbQloqf6vTy1qiz0llimDjMGmmlDpNS+ThiTIdWnlxSsNu1XlKkyzpq96CxxZFG5VP2uUhCASrLz0UHrbIq73+TAWeTz5Y5Rgypqqyayuwq/2CJdNfIfnU+mGpEZhqILDtaflJhkdcKyCuAUNLLVw6ZrHeU9hbwPJ+MSEkZQ+fMe3UgOpNhxVxNVQdUchRXjus0CuhhcmobES8WJ0JnVB4ov7FVRxxRA6qsVmWdYgbQMKQ5EBqnhgLlHrGGIJqSm7K5ZIo8EKmyCEQzJRqZWkG+LBPmeV6dGzW90OveH8epFsRINOCB0UIE5GIH5PW9ksGFQxG1M8Q6klVQMIWZwzxxOo1MKTKGzAuNw6RIkEgMkWG3rxyTQSIyz5g0a3KSsxWcM5hso7nsOCigio5HAnypIGoaOxByplt2dIWsB2aKGyj91bGdUgaDM7gnMVc7F6WOcdbgKv5XopRASDlbUMGqJFogImXnWoxSQXsjtmbfVZtMw5qVoCep3RHGI5LtzwKmsyqEJuqQbGzAJC3wtJxh9SypcsHomEwnddzQqY6as7zKB6cMHJXAGqmOcAC7tKR5V9XnEaYYmFPEeXDGa9SYVf5y50zOwikH81oP1iWeGjlQdKiW6qMEVrm1PiuNw77VzzaZH851TbvXWQhb/bW92vPNNrJmadeiAy7O5oZDOffHZkCwRCwXvaW2d2MDqeNbs5dcWeub9p3T1VtdYvmqXHNFv6HZNaV/xVn82PUvAtA9ZnRtX3wOnNved+45/xJg3G97fZux9NuCiY8947H72/FqFXXDY31f/t6idWsFQTdV3w9cXlxxdfWE/f4CrGEeJ+Z5ZmiKLKgcazwJIrjOaUpl9n6LKIxWiCqneVSAKAvfmCIhTDlyIwNjpgQuK+cBSXJVWVsV4pT/akwucV1SXwpgk4WsVkMFYzUEu3OaLprDfDRqximgmERTGXU8vcKCotFxzntcZ9XTVOvFq7GK6XCmw7qOODdpO4BuF42c8NZqtdOssJqWPy5v+M6UlAj1xjrX4TqNKosCu4sLjQr0jlwiBtd37DqPceSoQ4vvwTjJh4x6ecXCbi+agmo0InXXe4ZOuaFjBn6igbQ3GAfTaaIn8bTfsXcw3QvRGI4OTqKpJJpKCD0OSRO9t0hnK0BnBk0nmGads76DIcvtiHK0YQRHxI2RIRk6Z/K8TZg44xF6MdhTIJ5OjIcD8/09x5s77q9vOdzecxdn3riJm5sbwq/ecvfNDa+nkfdT4PrDHdcf7ri5vef45i0fPf2Yl/4lnz63fP47H/H9Tz7nxYXls0+vGHqDlR4rHksH3jGlI4c58eXrwJtv7vjVVyM/+eYf+eqbX8DNl8yffhc//4BwsSN2XtPNxDAXIy8uAJ3BIF4y6OsRM2PcjHXC6zfv8F4wfc/7+yNffvkVv/71V7z95j3jaSTEoHhzVnhSIawtilz9p1XyXIaLY1oOOBUB+VAyOf3MZOXL6J6EdZTug8O+GsprJbQo3y14AdRqscfj8QFA0D6rgCT/M1fbr+KV2srNQlbdVoLdRiRJAebOyNwV6PcISNS+6zEQbZ0mu04B1nvOA5CrkHoW5WsLGGDWoFs7tltArlylHcXwV1tKDb2UAjGW9KwCXIT6+ZQV7aJcSn5Pyz+2Bbm+DWTc/q4AdKVtpc9bw7a9v4BLLQjZvq8ovEpqvRCOx5hz4po1fA7oW6/XFqyWpo3rNVHHIa1/XvaWKrq5FOTqvu3a266/x8bj3FrdGghtP0p0qLOFRJtsFWWDoKR1G5/neQHUYzaYCqhR1sZ2vS+yYUmBbdug5zZ1/kTU0NLIr/ggWtFU56ICKeX7sgZbIKisp+2eKXNb0ntbcL5V5AutR0vA3+4tfbOCLN6pVyqUnAqzpEPXFPBsNCVjMGXtoMZrTA9B5hYkLH1roztTSpoG27kqx1LSCERrbaYm0dTEJJGYAqfTiTlMTPPI5eUl+/0+Z5MMNfJNI2Ulbw2dk3mKjGkmBkGSySBarjzp15FDJfpzyEUpNNLX1iqUFYwuEa1WKrhkJPNMOh2jMm5d1+V1qkBujLkiedBoqGLYepejrxEQTcEsUdsFnNWoSZ330u6S2q0AXV5TTitWDruBwnFXwbFUUt0kc7C2/GML2L51mrRrsAV12mIm5ZxaHFvlHllFWRZnSiJVgG4lS8JioO6GHV1Zzw0IXRzYFTgTQXKEmhbSXM5uwyJjV/uh5Yxr1nl7Npi831pnVUlVLfqHEarT3ZolRRprakaMmKwLlcwYUUoPayypdWhRgLQsPyUDGuVrnZM1IF6ulttbneey9iQu0NMDGgRg9bsW+C9R0BVEzwVi2jOopNprG/McN7K0/K/FOIK2zaCprd5lwCuqoyUlHbsUI6RMaZNKCqimqEYHOF+LM6QkyhtuTAWDkihfHSmSTIGkBO/6WqkyBIEpkMxIcoLxykFc7D/dE8VO1EyZwgtscxQwIeR06EfAEZPtRDE1oKJdw4io/RMziC1l31kKAJJSzHtGkBIZiZ51D1Pi6+7Ie7t8JevhCy9h3ds5AKLMvz4jQJZ72q8sb6ynVtytuoHUCKxSSK88f/mctsOWiOC0AYlYeCnJzyWnG2eX3DKmPI5ppLzHFudts9YNVa6bqkqX8/ahPlr+/piuXPrY7qWt/rwF7Lby9IEsas789vOtbD2nt2zBwa3+VX9/Rn5s9fVHwTth856iki6f/1cH6NoObX+fv1k1+qERY84+59wz22c8ptSv2vAb2n7ufWslfa3cne3fI89tv24XXbm2i2p7TWEGoaLo9b1m/Z7mxXlDAmho/W64YLe7wpuOeRISgRAFEUOYAaOei2LnqWDSMF+ZZg09TUa5TMQh3qAakApKa0Q5PlL2msWAFeh9BqdqIYLMP2ALqmwxZgl5dVmAOlv4K7JC1gyLmGwU5wPQmRyNgWSvbt9EaBh8LzhvsHiSeFLUlK6u6/F9T0yjAiA2A4jiMKbD2j57JlVQF5aQXY6g67oO6z0hhuox63wG2qAK38KzYo3LIft6n3EdUYSrq6fYQSuAGpf75y3DTosL+CEfcjFl72L2GORIiJimPF6anrjrhD6TD8dpZug7ohHEGyYz4+KRS9vxtIswBnYXPVjYWTgC0wRE6CP0VjRFuYNgDIcZglWB0VsYBjiNYIKuFV01llSCosXjcNzd3XD34QPT4Z50OhEOd4x3t6TjPW9+9SXheOR0c8Ptuw/cvfvA4f6e6TBx4MTr7objdGT/foRj4uAtU9cTIoQgOGd45gO/+/Iz/rff/5jPf+cFv/P5c156g4337K9Omq87CfE4Kog57HAXHbPv+V++/4xvDjO/ev2U//op/OTHP+b63Tt+/utI9ANXn31Cd3lReY6q4l6UwrhOUU8pEdKgXjDTEefI/qLDROH9hxvevH3Hm2++4f3NjVb4zRGpznoQTWdKGdSyVo3CAk5raLqGscfmMNNPLx5KPfyLl20xaM8dKlulsP3fKu/tATfPM8fjkdPpVMGrVulpAZzqcDePy9GtDDt3uG+BDBGpxmJrLLfRJa3CUOTl9kDdyuWaftaAXrZ4gRsloG3nWtFbooU0MmLdx3OG3YoT6IwS1bav9fxV46gZzxacC5kI3pqFSuHcOLbvLNEg1cDLjpACeLWGn6/ROOfP7mIsbhWf8pwtsNv2d+lj4UJcj8N2bKy1NdKjtKMom5b1HG3X61Y3WQFtxSyQ9Tt1j+7DMdcAACAASURBVEnmgFSDKwR1YrVrpfA0LfthPR7b97YGi66Nh4rnOSW2veqcZGB/8YZrm2Mq1YZD5h7zuc+QK/M0hX1kA3BLNShLH1YOxU2bdO5a7qCH17L+Nd+qeNlFFuJ3m6PrEckcMVIN+bK+Swqe1TAZHPn+pq0FHClyYi2r1op77oH2L8uQEklayMxLOrXLKbfVGCiyUARJUWkbZIlEfQBMNvtmWyzDOYvvfE6Fi9VBpNX7DLth4JOPP2LXd7x994672zsO93cVFBuyM6NEwJb1s6Tj699KX66vr+m6jt0w0Oe+tnKmyN0SQdt1yn9bshVa+SyidAf7/U7XX6nyGtWwH4ZhqeKZU1cNHucK2DYzTTHrO210hILjJY28cPq057AB5jlkICyWgq2UaMYqD4A+pyHO81wrjFMcY3Y7T8tcrSJnarR32Z8KcoRNcYESiVL+18qoElfrUzsizEkr+dp2rzVbKYRAcBrJWwDLsvmUe9Bq5d0Q6/oqc1j1i7J3m31Z98bmzNR1vdARiZTIel/Xia7bDDrH/LkYGUPANnvE5SyYZFDHeh5r5Utbj/nWSI8ZPLR5rouMLnpA13UkE5fK9GXykYd7L9tYkh7KKGPO26TnDPwCTBaqBJytaeN6L6Rks47QnJN1DWxAAtTRGufAHGaMCEPnGfqOZA1WLFdPn2JPEyJHQpiV8zI5BcWsIc0j4g2md/iuU1ofpxyMzlpiRG2yBEZySmPWN7EGJwkJgWmOpDniQqSPiWFntSCXhExBoal8tkQHGrUFiEkrwOZlqYUGF5nr2jMvnxdRGl5gV/C/1qbWDA/9vsJnqIwxSFsMzinI54yjc5Y+V6z33pOsJ4RjzqJarGxjJIsUQXnr2vVQxkbBq9WZXlqSwc4YE05U7pWlJZkSQzJA3g07yvFYqqmXDS5G6SCQhEsaaely5Ciiz3a+o/Co2yzkLGggTC76s9QKKLrMWm9oAeJlz63P94oqFH2EpTjNsj+WR+saXgcGrJ6X79nqEuUd7Z47d7X3l/vafd3+rrVntm3Y6lTtPVCSn8/rn6V9bRtX7c5rqAU1H/ThfPfq9c8C6L4NpNpej4F07XPagdkaU//EFvJtt28Hd/u3cxEY5xbBb3rWVpiXq3hxt8bS6jnlbMlfUlaczy6WJPWQM8bQ+Z79/pKL/SVd1xOips8lMcoNlsifzwdGPaSV7UI5WCRb2gpKpKDRWAZNRxCjHouYIikETI4scr7HdB7reqzzOGtI2dlSODQKj48tCojxVenWNBWfo8aadQFaJMEtVZc0NLqQJGuuvnEdvouYLtOPisdEi0FBQ43k8MrvZb2ChrbDSKeFA6wj2QlnpAJ0Q79w6rnOM8+aQuS9zd5s5VhQklElYdcohALQafSecb6WAS+h9coRBt7nqLQduL0CdFL4RqzDWpQr0MBF5j7RdaHxGh16wCin3AkczICXxPNhz1M6dhgO4aDpHn6HN+BFuPMwzoFpjIRk6IeOXWcYTKLrIIgwB+GQ4HgvPOmF+QAf3gvXb0+8e/sN79+95/r2A6fpyJu3r7i9+cDh5pr5dCCOI9PdLeFwT5pHwunELpNhp6w0DsPA5f4JDAmzu+Sjp5GXVx1uFO6MZXKOSWAOI2kOPDeJ3/v+D/mj7/+A735ywRMTcK/ecLp/y+21QfYDXbwgjYnOzQzPevrne/yuo9u/48Vg4buGke8Qujv+9u++4IsvDlx/8Yrf3V3yFMt+KApFazQvxPpRAoIliiWKQYxGRA5XPdMs3N9e8+svv+bVq3e8f3fNzYdb7m7vsWgFYREDUioN5kWeN74k3W9FHhW+o9TICefsykiMGSwvIHoLxLWHUwuUnJNf7WeLAVc4j7apWUU5rZFbphDtrg+37TmwlfdbMAsWQ2gLALUHazF46ufqVx4YGVsFpIpas1ZCyvdFuTYNULS0k/q1/Z7mYN7K/+050PalbUfblgUAfMhreg4cK+2QTKi/9FH/xxhWSoz3bbTXolSWSLtt29t2bc+tut5izPJvSbGt1bI24//Y2OTm6PnUvKOs5cKBlmvuqZc8V4ZuI67O6R9lzTwGFupny7g17cpFmAowsN03jxly26tdR+fu245v+/Nja6p+3iyAaKtA66OUy8sYV1ObtVKlZXnVkuZV5qmkrxeleFvR7gEQatyq3cYsIHC7l+q78mGmz1B9Rmq1NKdgqNFUQZuNQBHJxoiCdELMubwqrwt/43YeWkCuXRPbNSIhEliiaMt6LUBHidRcGf1uiT411qiBKosnf2s8tKBJ+/x5nhAiFxd79sMO6wxzyqnVVlNnrREuL/cMnafzlnfecX9/x3Q6EOaJcX/Bbtix3+9r+mYBMIwxRJuJ78UQUiDFRJDAKQlhnumzQ7LrOvq+rzK+LJR5njVCwy2VA0v7UxR8jSjR/sxTQMN/9PO982qcRq3mSk6xssYyDDsSkZR0bMIcl3UjKtvmWcGQZK3KANFoNIwlxGKYLY4uQVSntMotOM6zAr5WOf9KkYWUDJDoeo8xqa7ddn2UZy97VCMcy5oucmI9p6numwLIpVzwYJpKkba8r1ieK/kcWuB2qt6YUmKK04rbT++HlOWuqhjFaM67ypDHO+v9ed+1lqQ8AK0XMK+s3QLmn9tPvfe5aIVyokaaghZGAaCSEirAHDQttbwHEZyRdcpikcnNXEgDeLVXiLFAFis9oVDSxLhwXylItxICGm14RkaUOS0RMGU+i74AOt7KQ1ahHwV8zeL4U65eMGEZv7KPLB6DtjGMY66+rPfEJMxhpsuUBSnrh84YRGIu5GCyY3lmmk2Oq1Anhs3ZPzFpeqsrjkgcxmsROmMNEmYd26DReHOMCA7rZs2EiiigZyPWaABE8QlZJHNExrrOvLWI5LRolCZIddZsN4nJfGyCNQnT5WCQCnCpXlXOE+cqhJLP5AUgI/e1FlPLOoSu88YJV/aYWfjTqg6X1yDrbaHgi1VLebUmCqd45sbVIh+iEYxG8QhjtY9l/5us75eoQ/1dLtpj8+o0OXtNCp2ExYpGH7d/NyQtoOec8t4as6pNUfphWOs0MS1RrKUPGNOkzi/3q/NRsYsQQvvk1XuMUVmz1XXPXY/pS0s0cTq7/1rwrb2/nHPAA97TNgL2XDvO6Yrb55f2tf3f2gaLPFLKhsfkyLdhXP+qKa7LZjgDPDU/tx375wFyZ67fgFCWz6ze+8g9Z0GxTb9XSjbrQ6G959xYbH/n3YaEsX6/TsXYPCgbp+RosY6hV8UsVoGlBJIqGYoyreLZVsVZ71cS10zCCxg0lQg0dU8NOU35K2StzjlNP3VOo+ecEmhaY6Apx+4K75zJQtQouLSsnoDF5/vUI15kpm2UC2fs4u1IheRXlXWbDBivnrsyLyKkEDS6zmpqrLUdxnRAD+KxGLypYl/nwwreCc6o567vldxWARJtO6CC3gqm5aixmV/BK19eBJzT9GGJc61sNRkIk2MMBpvA9Ia+Jz9f01DnUT2MN1Pe/GEmzScswtBl/hcjMB+5enrJrreMc2RMI++mwHPp+PTJU45JyDU3OUWIxxPhFHEzOCyXnePw9T2/fP+eV+8+8ObdNW/f3fDhwy3H25GvfvElx7sj4/FEnCLTNDPPE1MIRCLTPAMR7xxD5/BJla0nF0958fkTvvudz/ne977DZ599Stf3zJIyj0hkirdId0cXjvDVDd/84jWv7+45WcOYAqf7e66//oJh33HRO3yakEMCO9Onkd1uR/f0Kd2TZxhzgYwnjNzAEBA5cbx/Cx7MznMxPOPpc/j0Oy94fRv46t17vvpwx9O31zo4l8tB4bzyD1Wlv2w7lOz7NGsKQEyRw90HYpp48+49v/z6a169/objcVYy2wwtq01RAI180NiczlR2QlF8zxj7a+CqAUdEKwi2MqocZq1yuZU/7cFXFP1pmhjHkXEc6z2Fp6dNzSpA3QIguKrfnDuYi/FRwMjlWuTSWjE7DxS14NxWFGJYKSPtIVkNqRr59BC0215b8OxcFa82Be/cs75N/j8G5mw9kbCOqGsrGhYlXzaAyrm+tX02xtQqtSJKYh1jrClvLbjRAj91zeXR3HqVy73VuN+Mzba/W4WuAEXla/u3FvBrx6Ds1xZI3o5lmb9zZ3MFyzmz9rIxU9Z7G7lZIsxijBjA++Vv7VidWxftGk1JuXBSLMpdabsaFIXXp0QZ2lxlsYyXNYsxbm1Z4xq97p3DdCp3whzQWgoawVKiOzQCSOXxOQW7jHEx0kEe7AGBHBlVUc6sVyz7fdkLJTKxyKkMohpbp1z1oTWgWwjuyUZHRnFz0amHinYL2JZ9c24Oip6lmWNN4RPnQIQYlrVMszfqPsnGMc1aFJGa2rid7/b9BcSMYeZ0uM/ZC7kgSCmckt12goKT3juePX3K0Hd8+DDw7t077g9HxmlmHMa6T4ZhqGPedT3e+/q3ElkCCrwdDydGI3SdZ9jtGHIVXWuW6OsCvEyoMTcMQwb0emyvGp6eE7o+hqFH0AjOMg56hpDJ5UtkXk/fecx+z2nUiO151r3grK/8avM85zZnJ0qetwqAuBLdp1kHRaPTCESPGKlUCdZoeq90MI0z85yrWOYzopUvZS3F2Kap0lT7VSPa5awOlQmBEFRmFDBH14YjxiUyscp1qwUN2n2S6l7JeyLL+ZqG3sizmCJxjqvCKLZZY6AAdNsf1eNN7UcLui2bab1WpY5FIyskR59Yu9iAxjwABuaQI7DEkYAga44oBaV0XjHLWUdOYbd2TUqv45yINkIS+m5XiftLG1X+xwdzWcUUa51qLRMWOVLO2XY8K30DZK7ckCmCqPurBRF2u13Vr0oUuMl2WUKLHmihnB0mCZm5hJD7+eHNa6YQCDFptpLvkJQISbNutNCAFopzRui9o/cdMnR01jGHoByNaBBBAq2YjJ5r+/2l8l9bD6eRKcxMp1HX8Djy7NmLJVLe1ZjzrFIltW+SVgMu1d0LLYWJSXmaM5ClY6cArGSQXVP0V6jpgzNorT8WqobMAyxO0/pNqudy4dAte1sk6OdL2KYtAN1SCK4C5Rs1tlTx1f26RM2XCEDnc4prKYop1GIrSWQhwSh6WFlrGmZCkpkSyw+FuoUs+/O5JiULTvWBzhtM17Prem7MQddzPl8XVDvb0Y/oIeWqjvdQbPvcWFkAr/X+kdUzVtXim2eWvVTuP6eft8/Z6u0PdcQ1DlP61WZEbPvYYiuPXVvsqrU7ip523q7I9zdRuev3SB2fb7v+VVNc02pjPbxne992IM8NbLl+OzCvGGCP/XWjVJVnI6stXz6z7cPW874N37SYBwuvXZxFQdkulPLZ0ES3rBHkR/reavKYHEUQGMcjIdlcbTTfm3LOOqIkmbKMB2KysFLr2malUMEzQUz2OuXS1EaUuNZaXXC+rdTSVOArAi6n+df4UQPqBTcxe/30AyYZTQntMkhX0gvnGYkWjBKxGq+VG9OcMr+Bx/lsnDpymkZROpTAOxGV38U5bUwKCBOSJlLUz+0GwdB4COZ7JDkCCkgOw0CyWq0p2Kww5zlKYnBuD74DNLIKY7DOg3XEBMZZUh4rrCOkREhRvYnDE16NIMMT9vsdXW9ASgWmCU/Cmch+8Fz0HYMDbw37AYZe6EzimetwfUeaDDYK9/cnfvEPP2F3P/Ef/viP+fh3XtKjNBfRGG6TJZxOjHczaZxJd+/5yf/47/zlX/0XfvSzn/Lm+prb6URIyrmmRPOqePS7Hbtdz8WVw+08u2HP5y++DwHCPCmIGCND5/n0s5d8/p3P+Iv/9c/5we//kE9fPmUy8NXtNV9/84ZX797y4dpwuE+M14nr08ivrq+5ngMXz58TTcfx9prPPnvJH378lB989yWXe4uzE91OiyTY2DEf1YBxPiLO0F3t4IXDOsHPkbB7zdOPLhjMFd37E703vPz4Mz7+dOA43vD++o7em0zCrIqwCxZjVJkuUQjWqQeQMTCGWY12Y0jjHbtdx3GaOBwnxlPkNGplxb4f0PJKUg9aYxw2c85QPPAiWWEpG0UJMNYHVMqAHgha1cw5lyNK1qn7rdzderzbw6/IpxACY64I1xqWBZgroMvWw6XAxQKAnXPSFEC7lbRFOdXvC+ihilupiKqghMP7rlal876rhQ+sVe9xCfylROSu5LxkAbSkm5j8ufbM2J5P7dXK7GJstQBde51TQLZnQvsZVdLWgBEsINRDMHRRGioAmzQCRx0R5V0ZzPIFjMnC2BRsI8t0XP3dNk2rtLkYG231dbJSWtrVgjZbEPXbFCO9Z8FYlo8+TKkuAKTNfC4FXNMCGQ85y9rzdHvuroCWxhBegK9cGAhW89KezQUsKOt+q19sr8f0J7VNimJd0i3znsY24JcBozxgqQQ3uYfvLEZGrQJprNZ4y9VKSwSdJDWQbHY8LeNnMMY/mDed2zUB/jzPFaQr92qaXjY+24iYPK8q9jKwYvMYFrlENkwK2JVSjrZX5EWcFjRSI2gBi0uWwnoM1op+WZvbNaq6itRqd0nU6C/XWdDbLJX4SuRSeV+7XoqB3nXdytNfQGPvPclb5vHEeDogKajTqetypb0CuKYaXeSd4eryAu8szhr89R3H40wIibu7AzEKwzBVmbnbJXa7XZatrgIICmQIGC14NMXIaQ4M/cA+A3BFnjprqvEboiDjTErQ90YLamEqCb6rMtIsxYoy0Gmt0puEKahjT8B3e5zt6LoEyeDM3DiEpiyDSvbCYiiCA2OxNrBU91Uzt1DARyRHi7hc9EmBaklGuYw7h7UafVWcT201bWMWUEr3Z8oRna1hCH5lYK5lX+nLNsqkrhEMJlY0TNdQWfOtIWuAkjaJVEd2TEmdniVKzmg19rYlhVOxGPpGlvcZUyKyFhlZgS5ZQOui55d+FiDCSgasYsJngKJwaqVmXyfJmT1kUNIsc6mgh9Lh1GcX7s+MMtQCDxnkqMEAFnzXEVk4tpSrdHEqbjnm6v1W5T9pcQK2c1Y+P+T06DI2NeJHVEZ7LCFpdWstsqMRb0XPiHFGJGbbqZxz5XxKxAS977HaFCzZGek8OMft/b1GXgpY77QQTOmvKe/S8d8PPb13C89htju8c1jjiRjSnBinUy2QmOQJ1mg1+92g7y0FVEJIDN29gkYmR4RmXkqTuRslauCGwWJSdrxYNf7KWIUQsCEo0JeS6n220BA8dLC117IX8pmcFhvMAClzVIoBSXFZ3+UTelzo3EqCHKFtylrS6WjWR/4+87dbl51yUSCl5fcWRCxdAYqa95CLGK7Pg3wuVchOZUokB6XUDpOLKhpMSqQU1HbNe8ZmvceZJZK29oMFETG1PyVDZL1/2/OqAKetjlNk3zAMjRxLC5RYxs+sHWDbc3CbWttiPq1udQ6UO3fP9nNtVOr2d9tnnWtn2fet3tDaSlu86gEeZtbPLJ8rOfzftrbhXwCgOwcs/TYvbg2V9jm/LUB3rh3bNpAPrMfe/RvbxsNnnpv8rfFVDSbWv28XY1ng39aXc97/3wxKlg2oXsQYJu7uP2Ctpes7/DDgOiVGlTTl9uXy1CapgmESRgxxzop7ibzLkqLIQ1VqSkRdqn1GFDTQ9qqgLqW0xSRMsogRTBLECSRLsgknuapSLiVuUSXRmmx4p1INC8SpgeGkw5vMtRa04pdWj/XENCPW4o3B+FxymUAKkRBnJom4ztL7TPCfLDEYYlRQoO8iKY64P9Vxff3lT3TDVnLiMt/ZSKcYuQnBIWYguZ6UDCFq+ohYSxKNvjiMEylXe/TdoLx/Yug6jx2e8Onv/QX+iccnoZ8t3iU6L1z0A7ve8fxqx0fPPZ++gKudprdaWcBl0WnheIKXTwY+ezrw9qdv+OKnf8PfTZ4/8gMXL5+yv4CdFQgT37x+zat//DWnV2/4q//0n3j9xc+5mw48//QT/uR3f49+v+M0j4zziLee3W7g2dOnPHvxnP2VVpy9fHrJ1dUz5lPi9at3vPryS26vr0lBuNwPfPr8gk8/uqI3gTTecX0Hbz685WdffcHrD2+5PR0Yx4n90GnFtr6je3LBp7tLnn/2CTe377n/+he8sIbveMvHPnIhB672jmefPcFGz3x35PjmnngXmD3IJTy9uqL/3idw9ZwLecGvfvoTPnGJnX1BurtjfnfkIj3l06snHC5nToc77neey4uraqzFvP0KcGWMUf4UZ5lD5P5w4HSaSDHw8tklT599zpMXHxN8x9vbI6dx5HA4MXQ9nfW5OrKa3MkA1oORWklLPW5t6sy3yKH8c+ENCqWkFossLYfj9lA7J2cOh8Mqaq6VY+voh4eFJc6BVOdBuvPybDFo1ve0srakXhXDslVI1KBJZ6T/+r3nDt/Hxrk13ovisn3mymjhceViOxbbd+vXNppr/ZzHQId2flNcQL2WiL60sU0fKO9o39V5rUBVIjuKwrKNJGm/tn1vjZrtGdmuka3CtP1M29cl5XiJTGrHvp2XbYRcGx1a1nybkv2YAljXsqzX3zYyLqPBK4WwGG3n5qj9+ez8bnSKc2vsnN5UvrfWIqkYxEoOXsB856RJ91iDTDFFNbCdkvenNOV356IEzToqAKG1ViveNZ7lUKM3M6hu13NU+lHGTHWNBRwDNarKeG1J6NvIxXZdrNqV5Wo7JmVPbK/tGjCs10x5t6ZWL/Pbzlk7Lql55zaVuo1ibvtV+mmtUpRYhNPpwPF4rPe1RVu2BpUxht1ux8uXL9lfPOH99T23d/ecTifuszE/DAP7/X41FqU/01TmGoZhwCfPNGl0DyI4swCL3jk6r9XxSjRbCIFTnp/ZzTm7QZ9XjT1yBoYpkXhZRlnPPC2OHxHBesve77nY7ascOp1OHI9HRLTKYpH9Ig03qTVo8KXqnympQRtF31/SSpUDTznUwqj8qt55+q5nGAbAMZqxtmmZo9ZwO3/KlKg5EVfnpk2xSikxjmPeHzxYw6ARl2Vt1ugra6ipgbGAPcs7NRtDI7jMmQiNx845aWRS+V27bis4l9Iq+MJa5Vtbnb/6pPr3eua4DGAHTf10nQJKoThZnFuDgsbSWQ8uU8YYjUCSGJEQVkNvc8Vy7zxd3yOz1Ag93YMG79eOnVI1eTmzTN5jOV8oLUEUq7F6xF6te8oYzaIxRnmam3OgjeS6u7ur97aAfQGyp5BwzisP3DSRJFaw01iL7zqmOTDPI8QA05ipKRSgFCLWG3zfcXl5yYtnT9jtdliTAZZkcV65SOcopMOROM2cTiMhRO7u7tjtdlxcXND3PfvOV8dtlMT19bX21zl8rxG09RxAeQ69c1iv6zklgRQxVrnJU9QCF2kOi+5Bc57HqD4RDfPWNFAU3xCD6jhF9zVmAdPyWZzijDUJbKEJYuEoDB4Jypqt05h1Dcl0MkZykZRmjWXaIuzCt1jAX6CCleV/SYEWWzLE1oDvvOEVbu8XUxxNxd20rDODwTqnKceSo4Yx2cmQ9aYYaiRsHRUpKf85mrGVD4aza1rpl4rjSDlUY9A9sNZ1F2fD4gxdj8d275Tzpt2D7XVOd2x1qfaZj91fzrciL1vu7K3u2V7GmIVPdqOHtu34tmvtOGqeXVOhz2NA5fqtALrHOnCuwY999tueUxr5bc/b3vtbpSH9hgFsFfV2ss/df26B9H2/el+78BRNPm9QlfZ/mxELaJVQPZE2n3n42bYdurAsczgS4hE5AEY3tOuVP60IiaIwOGdxRr/vncf4DimwnBXlPzOC8gFkxh8DU5iycg3j6YQTcP0l3mkajnOWedYQbuWNg1mg6zvGEBWwE5uLR7BUrDKCiwHrGsMjab+891jvmENUr2zO/0wpV0wrRomxzIJyz7kBbzxREqRIZGaeDnp4OW2nJAeSvaAp4X0ipYkf5G3ysx//Nz1opQ1NNcy5b1eXV4yzKo/7iyvE7Lk9zfTdjt1uYBzHXEDAcn9/QHJ5b+c7fDfQdz1+GDB9j7u/Zf6pEP1AtHBnIkYCnsCug6EzTM+eMD295HR1iTWJw90Nt9cfmMaRSTwjT7k5JrCe7/3w+3z0vU/5k9//9/zBxee8+fUvtAz7oD6b92/e8etff8HXX3zFT/7H3/Ojv/obfv6jn/LyxXO+98M/5N/+4Pv84Pd/yDAMvHnzivdv3uCi4eXz53z+6Wd89/PP6fsB6yzPP/qI5A1/87N/4P5wx2kaSQb2ux3eOqb7I0MyHN9c8z7A12Hil1/8ki++/oKb+zts57l4csm0E+bTCTuf+M4nH/Ef/4//kz/7D3/Of/svf8n/8+VP+cHpyO95+Gw88KI3dNl7Js86/KXjqfeY04l7NzI974kfXyFPeszzj6F/ynfMH2LH98jB8NnwEV/Hd8wH+J3LC44XN/zsw5EpXHKaJ6Y0YZLQ952mb0vgeBiZp0iUhB8GdrsLnr74iO9dPeXp1SUpHElh5stX3/CPv/oVP/v5L7i7v8+l2zV1tENJX2OubuX7zI0SYo082F6tLLLW4kr1ZfRAiClyOBwU6JPFmG4jiNrUwAK8ADX6pfwviiUs1VNbzrm2Ta1ivy1gsP3Mub60DgmXU5jK97UYyxlQrj0E27amROVA20ZvbQGPbfvLFUIh01+i1kqbthHT25TTx+atGPgtSNUabSKi4K9bnl9SKYpCU8rGlz6v1kN5d1bGWsOpGOJFWSltWYy9xYgMsxqx7Xxu+7sFNdoooC1YVhTWNt0ONJ2uPYuWubGrtVuM75aMfAtWte8pUSzleW3U3Lbd24i6NfDnHoB9q3O+AjELqTUUT/kCNG4jMbZrrzXwRNQ4TyIP1ka75st+3EZj6TNyvF2SpfCDaaMpS+qVgmSSPfwu85spt9F6bYawNii0P4lpCrVtLRhmsrGr/VrG6xxYKjnCwhhbn9vqSO2YlbXWroeyP8p+8Z0W92nXYAsubve8MWYFRBtrq7FT/t7KgPKzbWRM6VPZ07YBclpDjkvixQAAIABJREFUoR2jIgvKPOpaj0SiVuTLsnAcxxq1cHV1hfeecRxX7an71FqcH9jtn/Dk9p4PHz5wc3PDmA1wCVH/7zSFvRjVldcP1cVwjv1+TwiB4/HI2w/v2R2PvHj2jKurK/2MUOVyqe59OB7JKBH7/Z7dbsjjH/McU4GmzikPa0iRfjfguo7T6cTNzQ3PXjxTTitj6h703tP3fQUdCyhQALwYY3aYaT/CPGcwo8dgmIOe2cowoWtOqV+8gnhRGNMEcyC7iRu5tAFknMopXUsa0RJrWrrLfK0LqGvtYrRba9nv98QYaqps+2zQFLsSbVbO4+QFZ5csHJUHXV1bIQR1CBvD0O8I88IZG/IeL2dnkS/GKI+ghGV9W5OjCTeGdQu+Vw62xp5QAEErSXZDRwqhZgNRzhev744panYCiXGaiOO8spmsQLC5rFyWQ9M0QVK9NWpJeyKL8R1iIASXo99cji5aO9rK+Vn2VgGX51mLdZRUbdd1Vc4UMLh1MJQU6yLXK41DDmLQk2A5b8r6beke6po1mmJdI2Vdx5P9QALiHOi6XnXFqOey9Z5hv6ff7Wq/rDM5e0Cj+PYXA9ZC7zt2+559P1S7VaNaPf1uwLueOQm72/tKzXMcdUzujifujid2u4EhF8Pz3rPrBqTzdezGo0b7ln4Mw4AzVvkTY+YatJ5YgPQ5YJyj73tdDzFic2GNcR6Z5xHnPBHwxuJcB1GQFJVntvNI0EhYZ1LlUBc9dDXoJEGIk77HWnZdz9D1eQ16nDPEBCHAHHX/SlSgKQC7rhS4yYBfWigGdE+YKgdWcqHshRyxOcel6mrVO87oibKSL8V5rymmIkKHZmA5r5zrRKpuNMfAvutxmRWi8Iae7kZImlkUZUnTVTBSdWSxhikEjtlWsxnQ1EIuWgG8yFdrHWSnQ9HdirxqzzrnHNMUFnnS6FCts6uVL9uzbFuMrD37W32j1aXb83i/36/u30bltY6T9vxenLJrIH6r87f6zjnQXs+HEmzQjHseqzay79z1L8JB99j1GMC29eB8GwL6z7l+0/Naz1PbrvrzBg3fKvVbYO4Bytr8vf3avu+3uR771IPIAxbB4JzFutyfpBs/poRMengp8fyicJTPGQs+A3XCoIdV1+GcQZnrokZ6ecvF1SXHecKIwRuPt56L/oKd7xnnmTDdE0zmrzpkIK/ZmIeDeo9WCm5OFbUIHXPlq1QFPgs/X0q6F1HJapOKGKIYkli64QJjOqZxJgTBewUDY5zoB62EaozQdx2d69Sox2Kd5TSfcB7gcwAOH17rxm08Jvu9VuE5TiMf3n6lnqU0Y10P7oLDMeb0O8fhdCSliHOecSrcKXqSiwhCMYIdFsv9zVEVbZMwEpAUcCYw2ETfGWyac4WkmTCNzNMJyR4ruitO7iX3847Lp8/46Lvf4Y//9z/j4//7/+K7rsNbxxyORHmGCZG7D294/82v+fqrn/PFz/6eL3/xE56/eMKf/sWf8+zj51w9f8a//9M/4fnz5/zNf/9r5mnGRcD2vH9/xzy9UmNUYHfxmkM68ne//jH30x373UBvB8ZxwiHMMfDNN295+/oN+35gnE58ePcNp+nIYC1dsvRuZuj23EwnZE7sukue7S7Z42Acsbd3fOI9/9YNfK/fsesi0lnM1SXmk0tdNJdAFC79PW5v6D79HPPy34B9AeE9zr/g+tUb3v3yS9582THdw/3NxM14j7+w+J16qMZ54rK7wDg4jSNvb19ze3uLMYbdxZ6XH3/CJ59/hydPn4NVr+dxGpEQCHPg7jhyOBw4jRNz9hSqh87mr2Cdz8lxKryddzDL6sCWssvN2rOtspOSJFa/FqO8HDxbgKI9nEAPvbYIxDnQov3dSkZtwK218bvpgdkeVmtQS0EVmw31NTCnB6Stzzx7rlD6Zqun6qHxs75E8riZ9d/LO7dXMcyXh66dRudk+9YJtAUJytfKJ2TQ4jJNpEsLRLWRDVvwohhJyxnVzImoYSM1TclTuEIWMEsyn9HCEVL7kR+4Hcftejmn8LSAZPt9UZ5akLA9n7frsFW2tpGNZZxbpa19xnY+63g34GYLDLZzud1Di4KWd2+rzBn34P72Otfm0p8K3LT6yCPtKMZQIXQulSuLZ18/t0T4bedz2yb9lOoGUqIetAUP9vf2fzveugYX5VREGplkNsq5UdCkmaf8kGp0tY7c7TyUqyja3nswZkUQ/diebMejNbKttZuUqOWe1rgAlbUlYhVZjEST1s6UFoQtAMf2eboeF9qQdg2UKpH39/dqsFc/oepWIWanpXWaCB0iFxcXuAy03d/f1wi0w+HAMPQ8efKUy8sLNcTQtOD9fofrLHNcIqULAJdi5Pb2ltPppGCC79hnUKGAZyEEBVyN7unj8agGpwHf2QpqlAiw5ezTVMBhGJjDxO3tDX2vhqaza7J/7z3jNHI6HTkej9Wg853O/ThO1WEgJjHOY3YaK+g0B02nDUYjTUxOVdOodqUjsR6trl7l6xIJmFKs1WuX9bNE5EoGxxdwTkHn8vciG6xdUmbbyxgY+n2tmiqbdWCM4fLyMq8bV6Oyuq5jt99hvPI/d7HPXJZCCgsYJSJ0uV11P1tZrdM1p14+I6zBskRxlgi67fmXBI0CygBeEQWSM3EKDYUVyYT4Gx7XJFW3f7AHdYRUXosQbWML5f1nROkWSrRTq8O0cqpW9UyJGOe6x6ZpqvvXOVfHbM0Vt8xFAUerPHFaHCVKSyS/dlSUqMjKXSfC8XjM+8Ux7C/xXadRgUX/ES2+0XUdFxcXlSsWUVqCrvO4rsM5mMMMRos1OOvwK2drwtpEso7dTh0aT549xfcdV8+eMI2Ru/sDd3f3HO4PGlVnxgXc6jzPn15hzVJMYJpPHI7Hqh8/u3qCX+lwQ3aeDFjnOI6TRn7FRAyB+XQC0Yxp3/eQtMSHs27Jp4hCMrECjNYuqa4mB0+ompP1ABKSIhGnEXUW+t5j2DGd7uu6Vl0nEXOaKzzMkgCV61L1cL/S4dq5LSD1OcdgOWeLel8/0+w1IWWKKKOyU5azx8SFHb3IF+37uhK8IXHuKg4FEbI9u7SzBegLrtSeyapDLu9oz7DFkduk6je6QpHH5Wr3fHs2lvtajKPoRa3dU97dnuPt38vYbrGb9u/nsJstKNjqPVt98xwmtPysk3xWD88/f9v1rwrQaQMeKnWP/e2xAfwnX9kAfuxZD4strNtQ0M9zbWvb2C7sb1sE23a0i6A2+dx7tr96ZFicMSoMrVPeLOu0GIRXBUVQDgQNtxWtmGMEicpVR4QUIilX4xmnCec8XT5oRCLJJOgseMuvX3+N6TzPrp6y6/eYMBKnSBouNFzeBuI4cjocuL87at9iYp7Dat5LSofNSL5y3iWMTThZDLu6Ce2i3KWUCNXT3hiEYgnisYcTznVIgnnWimDOGrrOQILTeEuMM84ZOusJQXLUCPROuZoKQPfzn/79RonW8HPnPNOoQGTxsh3HCT88YZwWg/N0OlH4JyQlVR4wmQPFqMdHVx6CY6JDTI5cTJMeLjLT5WIVg3eaZpzTT6rBExLxdE+kIzCSYuDD3Xte/rvPsd7QWYfvBX9hwE4c7t/x9puf8/XXP+FXP/8xX/3yxxyvX/O93/19TLrm4xef8mf/8Y/4vT/4Hl+/esX14RuO6cDdzYGh39P3F+wkEQTwHS+ePsF2F1x+9pJwK+wv9jgMx7t7fISTwFcf3jJ4z0dWwVgB0hQQA5fDwPP9FVEcvexwMvPhm1v+8v/9//jR3/49//C3/5U3v/iSFz/8XT71F/TdBcYGcB4uP4HPPkWGHdwNmG4H7pY4XxP9wF4uMWGAY8f1r47cvk68/vWBL74Svr4Z+NX1zC8PNxyBm3kinE74+3tO44l5PGFS4tnTJ/zBH3zOxcUeMRZr1CC4v7/XylnlsE8wh8hxGjmexhxlkg/2XIVJalSMKrBBlDdDctqLIVdWFIrHQInTbbMnlHgip2RBIXlMMWb+liWdr406aoGRlmuuVUq2Su1jAN35qygHphqSrXjbHnzr1EmDcx3O9qtoufZwFClpL81DxepYmJKOsE27oYKj2hfy57OCx8KBox9e0nmMZeUwwKRqKBhMTeHTMYuYynG3BgfL/63Xrnxd2rsG8krfV7KwGYvteeJtTlGNC+hpja1FfVLKvGJOXSKqBDfpnLna4YMrK5ILuJLXiJQUESBFhhyVs00jbY3zYqSUn4vCpXJ0cSDpazMvTwx1HFrAto3Y0zFYg0ft2MA6oqqNcFuAA0PhaFl0lXMpqQuQ3uo4pgHNt3umbcdW+V0pq83+K1cLdq4U/gZcKryN62lblEJN/86KbLJ5rZa/oYud7dg9XG9bfWalz1mjzq4mei6mmM/6tppaqwOu13J9MaxAihrdJrJEJthSDCBz05oF9N8aAK3nu3zunO4lqfDvZvlqTK2gXccz0xHUvhf+qjNX+85iYJQopCIPdF8kXB4naz3YxfiKSTieJqY51mgg772OiQghCt5oyp/zQtd37C8Grp5ccDhccHNzw+3tLYfDgcPxPkcvHasTZL/f4zuLGE+IQc8ca2ukWjkrxnlinme6riPEoCCac4jJEb5CjsQOhGki5bnves+QuoULS7RKoM5vjrToOhKJw90t03HEe0c/dNjOg0lYB13veOqvFHA8jRzHE4xQuEWnsYmyyO5la61GqXvHFCZu7xJWNJXJG6tVGVPm+nIJR1fl1CpyNc3ZGVtS16jzWmW1rnqcW5w8W1lT5AcLXfxKBvTdAoQtEWKREGJdD+V9KSnvmMnj55wWAbBCBV/FOlwxckUgZlL9zZr21kH6/4l7sx9JsuzM73cXM3P32CO3qurq7mKz2U00h5wBH7QBehSgf1iC5lUYCBIEzQxAkOzh0uylqnKJXGJxd9vuoodzr9k1i8gmRxyOrBCVmeHu5tfucpbvfOccqTVXnvVJ5iVdV9e1PHyh+6bnSKQAraSWnUicgLTISjqqqpDOpqmJW5wd78EP85kpzI1JpiedlnVRTPJq1kOS7TPV7EKAjrXsknMHxihi1Isamq53E/Bbyoxsk5Tg3BoYUFkWhJJlk/Rw2g91PdfwmtZ3+v6ebpBzVemcLSDrqiKgLdsTaTLRdUe6rsMPDt2TAja5qY1YYsF7Rnyh8yJ1rQl9T4iRuqmpbMP2dMfmZEsIkdP2nPv7e+5v72hbYd967/F9j+p7vr+/Ay37oGoajLFsmx2bTQQV6fpeznNvUKpDawksbJot1abBRwEhjNG4vqM7HoSVZQ2RgE3dTFPkVMBzIvjUSE27VKcwJnKHdIeVfR0hSKOlBDkxepFH4zhOXZNjVKAMUvaB9J1pn4ylnRtlB/uIT/K+afJ+ZLLBc7AuxIhZ1WArrxwEK68JVIoBUsMLoke5kMgjAh6GYMEr8ZezLo1SGocIQc2ZL4u6qVFAw2mUQWq55kYYPgQmd+Mz4y4ButInWIJXy1qNJUhXss7X983Pvwbj1u8vAbKnrvIsxhgX8nZpo30eH/rcVdoR/1iKasaY5iDl8vs+06Zhuv7FAbrfdz0FTK0N13/WFeeo3O8bw9oBmsZilgsY41K4l4K5XPAJFfbL2V+Dk+XfPwsAsjwo5bvWjucU+ZpSRCRygk61HWyFrQzKVgLUIYLNKEuMHhUUMXpIBaSH0RACUttARarKYBtNtBqHJ2jFzaeP3D7s2VSOjWlotKT67U4aHrpb+jDStvfsH+7E6YuacfQYlmlTcWK6JBAhOrZWoYvI0nTo9Mxy8N5PkXfFbGR7FOiGYzeilGG3PcUYK0pm7KhqjbEe7wec78TYsBVaVzgn6SQKT2UU8OcAtIc9zVaKKrdtR9PU3N0+JINUjNfzyyt2ux0P+yP7Y0+IA+Mwplo6Yeok650juLT3BBaQZh2pMH6kwhqIWsCWiMMySj1AHVE6cOiOk+NtK4s2lRTcdQKC1iawrQ2aSFCRF6+eo5uKu48fsduK0+szOtXy7v1r3r75Ha+/+y2/+82vONx/4vL8jGcvXvGp7fnF1RXf/Oxn3Nzd8h/++i/48PCRnoH6rOarL17x4vkXNJsdH+72HPuRy1dn7HYNu9PAx/eKH3z1FV988YqP7z/w+rff8/7tDUPfcnl2TnOyIww9gcjheGDsOlzbATBazT7VbPvw4SNv375FqcDh/jXXpw3XFzvOdjXaQIwOj8FUG9idEzcXqNMviXEDHNjFB9kjUcOxJ962tLc1tf0RTr3h777/O/7ho+ZBn9DVDbGq0DtH1w28u3nHdtvw8vkzvnz1khfXl+w2DYdDK3tVS40GFKlGXe7CCN04cjgc2ed6bjFMjdljjCg/yjm0SpyIIFT1qDSWzLBM8keKi5ALjM7yY3aeS5kQIxMAuJYZWWnlaHHuIlYyh8pU1lIR5/usr7UMzwyop4IwGajJz5ajgLNDDXW9QZJbZmWcFW02lssIXCkDiSoFJB4r5t8ne9cytXzmEhwsv7McV77n5ADxeR23XKslQGeMSRb+cp5Lx75MKSqf5ynAZ83eKR3Ocuzlc0WWqZhPrfU/pqPLOYNl4eLP6c31tdzX5TzNz7yen9KZLNe4TLNYj7F8pjINY76X7Om1sRlTs6V8z3IuM5uzXIv1HK7nqUyjjFAw2ObPTKllSkk6pD8udKQY7TPoJgSL5GBEaSYhAFyed83U0YBUOyb1S8njNkY/Wvd53ubfT4AXM/AXgl+AmKUBLuPOyOB8xShO3ryOTCwBYyzei6M1sV6Tg+9DQHmXUpjmVOByDyz2eVwGVyeZkRxbcbQLID3J9nzuy2O+3l9rBmcJVucrn+WcepbnRGs9OYIqdemVtfF45+nHEYI41pvNduq2HGIgDI5c8DyPs6qqKTV2s9lwOBwk7bXvOaTSCycnJ8QotbukA6rkbFtrJcugYMmNwzB1dDwcDhyPx+l9Td1gbSW1wAAfnTiXSuG8J7TiWFdVJQEnNML2lLWx2qKUoWk2HI8H2q7F9obNbktdz26L1pLGpI2hbTv6fm7gVFUW50aGsQcFpjYEFQT4GSWl1kSDDwGrVNrfkiZoMWDUVAOuvLRWE5vpqdfzGZI1fnxmyr0xy4rik/l8qBLom2WbSk5hCCGlPQdsJZtwnfou6ZZq6g4JCZBSSgC4oqxEZq0BBOayAmvAvAToMlO1bBIxybgYGd04BwKJuDin+uU9KbaSNGBRKoEwIQr7aAoSzHJmlqNzI8I8xumZk+83DIOU58nnN4EeS/kecG4GIjMYHWPE69kGGsfcYbiaQLtSNz3yDVMzF71K1S/17QT6RgFlMkAn3ZW9lJkYRgYvNeFiFPA716HLpS9ijMLmDHoCG/P6ZXBSSjAY6nqWi+PoGdxIN/Too6bapNReLQ3QttuGqnrG2UkCwvdyzodUm3gcZcx924kcS6xNW1msqdB1AqiClEfIKfAHLbLCNA1VXVM3DVpL/UztRtAKNw7YBEgGG5K9KGmrssU845gac6yAIe/91NRHESSrSGmGoaPvj+z397THPbW1KJVqYuqQdIlOegdMtbStZB1T1+kQihqRSdc9YUuKzfB5O2lpEyR7HsjNJEgrqFWOxScgMKaghvD55FxFUVqlfa2SXiy/bwK9FRPYVl7ig06fYIk8zPcoATQ5A/k8hukzeb9n/VeCZ6Udtg5ELudwqa+zjfFUmZW1Dby+1zqwMc3R6r0A/gmb5Cn7Mr+2/jMngcxjWTad+Ay+OF3/vwJ08LSj91/qyhv3c1cWsLAyqrNCJTya9MX9n9gEa+fon3I9NQeLI6GKXxbX2jmbGQBSu8KHmZaPkU491tbYusZYTUSMksrUWKtTF9KQUmI1bR+omy2XF2f84Adf8dM/+gk//PFX1Cdbej+yPT/lf/23/xv/7n//P7j7dI819RS5q6qKi80pd4cPBHdgv/9EcBGDIbjE4lF2er5IriWRo1+eTilUDIWSzvOaAAZrgTjVnItKTXMVosJuvBTM9QrtFBfbS65PLum7I/vDHcfDkWZjqCqpj3J2esH19XOMMjw87Pn+u1+n4qZy/dHPfsHp+RneRw6HA/3gePfuPaN3nJ6es9luub6+5urqGaD4/u33dF3Lx0/vuf3wgYDHmkpiucFLAeVkfalUi4yYmIxqwLlOninFf1UcUTHilMfrSG2sdGrynn509EOP1gLU1duGse2wQWpYXF//gD/42U+5bffcvn3DH37zklhXvP70mm9/91vevrvhzZsb3nz/FnMMPHv5Nb6+ZnP9DL99xb//m+/4T3//19y8/Y7KQjcO/Pirr/jqqyueX54QvOfu40e62/d8cDfcY2iior7vaE4GRu64+Yff8ebb7wkhcHZ2RmN3tIee2w/v+fD+lqFz4GC/b2nDa8zFhk/7e44PLeMwUBmLDy19uMOZIyfXBnMWoe4ZdIvXlo0GpQw9WwLPGOMW47ec2Gt06GHYEz+85uHtWy7PfoJtNuibv+K++p594+ibLX1QuKjwxvLi5SUvnl9zcbLj4uyEy9MdBM/9w52k+RqLNakWjRan1KWUmL4fOBxb7vZ77vcHjkPL6HpscoBrTFp/YX9qI/XkXIRxHCSylVuPFI5ytgNmoGeWI/KTo2AC6q0jSFkR5kht2aE1y8Fcd2XNnCuvdQRsOYYMaKx/N/+UAF3+9+y8JPmGWfvt02fy9z31/Vpp6SooNLHFWNeG9O+71s+9vs9T4MtsuMwletegXF6H9fNAkfK5anLxFKCwAPSK10JiF+UbyEfFWJQaZKXeUxMItAAvV3OxBhjXhtDjiOjjFIB1FLQ0cLLDNq2LiigVUVpSIpWPqT5pyRQMwtJIe9tYeRaJbD4G3UrnKK/tusNXHos822IGpnsqFfEhgSDTm3I4TU06KrPU1mtY/juvXwbFJ6arzuzAzKQqxz2PSQzfmT34qK5NsvjFWJQxKlWCnLk+VAbpJCgkIDef3eOlwVvOdf69SfJQPhPRIZWwWBnssmezY5JQwTzdWhzdSEEESHhAUOBJdXqUsIeiUhNzR4VAZkA+HeVfOvblM1pjqIyATWoBFEg0ZB05X5+boDK+/hjsLw38nFq3lkN5Tp0LyY6NEzMvCEaI84EYIr3rGMbAZuun2lo6ZUvI+Zr3hYAPtTDS6gql4P7+nsPB0fcdEPHeYVP9rU2zwVSWLDtQmsom57sRdl/wHpfSJr2Xmms+RKpKxqONptlshIGsZTzOjYxuZDwepeaVkqL40atUU8pQWUutpSM8wOh6jg8PDJXB1nPdr7xHRWZGRudxXkBfqXMpaaRN04CGIYxorbBVldh7Ea8MLu172U8RnfSzznWTiPgwTutmrUEaoD2lg2YnuQxUlbVDl/J83k9zHUHREbnRRg68CyNwvqfzDhfngEueBwVUWcemFMJJnyXdkMeDPLmAGmRJN8vrWR7GiamWz68Ik6eCTalTaiqlEIAQvegVpYQJFXRiZQ0QZh5hyb6RlFi1kN1Zpskfn3PEDT7MWQqlzFJT44h8fnO6cRlAsNTn9QQqDcMw6ZGS+ZqDi3lt8gSG/BxxzuQCKX1QMv9V8ltUjGhlMbqiruaUQGJkHBxt7BhTirLPgE/qnl3XDY1qCNHh/TjNoXQXlfd6RfJnFMqkPaw0YRBdNnhH6APjOMj2iJF6c0LTbNmdbtk0FZva0mwq3CDB3LHrOXQtfT9K1+DRw+gZncdaP9e2NAplAmac7UrvPf1hj+4N5mgI0Us6+2Yj6+49PQprayrr0t5O9VKzzxfnddRaCCey1glwdRLsj04zAsPYEeLcJIDJRIqi+6KchHzZqgC58rlFgkAxRnne/HkSG6/Yv7qqpXa6LtM1Z6AZQtLBs15Ou0LkhwaiosqAfWnTKBhCRKVAl/eO4FOJqBgnEB0ksJU1e77yGSqfr5RlE0i3MgSVYmJrw7IJmfMugdwSJIQlIK1WulMX93kKZMuB+PVPlq1zWZxljcxSfpSkg/J9a2CvvPKYsl+0vp7KXig/97l7xugmW1ze+9iHKq//qgDdPwWw+qeCWv9frvVilMoy/1n+CBl7uXnLhX2KXjkpLUr37PEYys3xnwtSfm6GZsViJgWjMEStUq6+FQVgpKaBCx6tLDmNwiQwIKfD1rXi/PySb775Mf/m3/wp/91//9/wsz/+MQEYgPcPd7y5ueH+/sDvfv0t9+/vGAZP24+cnm15+fIZ6lPH2+81IfQEJ05rcHMKQRo5ISsclVNKEOM8KKL4CmhlxACXfAjpMKdAmawIFVFFrLFYY7CbmvOzU0nh9ZpnL5/zk5/8BKPg+9ff8dvf/j3WzAfk8vKaVy+/ZLs9Yxg66tpybPfzvOsKY7dsTzecX73kzdsbzi4Vx67HRbjfj7TjJ3pXcXl1wQ9+9A11o3n79jX/6Zd/zf3dJwIeRUTrwMQOQGjHuXaCUhGjArWpyKlGSuV6ICGxisQB10DQGh80PoBXShhdpuJkt8Gqiqo+4ad/+FNefPEV37+94WTf0pxe8DCM/Pq7t7z+7i2fPh74+OHA4d7zylxyffoFzlkurr7g/qHju//4l9zdvafvW3y/R7meD2/fMdzd8bduxDvPse2wdc2ubjA6UAXD8XjkV7/8K959+MC3r1+D0ZxfX6OsQhsBKu+P97TDgRhHrAFdKeptxXHseTg8cHw4wuBRpmIc7jkcbjllYKCn9Q9YX+GtwtQNym5AnbBlRx89qJEmGFQb4NASP32HO9zQWEv1w3/D/uOR7+5+yccOhhDo9vd0h4Ci5usXr/jpH37Dj7/+mjD23H38wP3+nioZ3+cX52IgjxIZHP0gDqGuiMAw9BzbI8fjkbbvUnqXALFijInxr5IBVRlDvanRvWFwe6kRQkCZFRk+OYlrGTIri6UzKB+Z/8zR4GEYFo0gcsAiM+ryvddMp6Vj/rQMkj9TcKD4XMlWWn++fBaT2tdrtWzIkJ8hs04IKjWuAAAgAElEQVTWTkG+rzgRgRAVqmAqrJX8U+ypdbS7vH/JOFgzvtafy/T1p9YoGyrluLPxP/+bxWtlakBZrHpt4Exr79fjzEbBHEUs98h6n0gnxMfAar7Kujl57Iu5DFJw/al9sv7OEMLC0IvJgSyB6bUenu8RJ0C3nAfiY51eru+a+ZgNu9ngWkbGlt8nhnVpYC41c5BueszMxfXeyld+vUyhyrfLjmRZf7C8X7m+62iwRJfzuAO5BtjaUJV/m+SUqQTSZXCu7FL6OHVk/t746PdKqcUaTKBdsaYZbMxGq4w/Lb2SoMUEjqX/gvf4tPddAghMYp6TQKyYAAFbOPalUT2Np5jXEsgLIRJzBsUEci9l4Lwn4+TQZka/CqKtM+OvnJt8j7xfc3H//J5JLmmVfOsMQahUk9aA8tj0TH3fc2hbRu+nEhtVVdHYucvqvC8imaW/3W6pqoqzszMeHh64v7/neDxyf38vtcvqmq7uqDcNu91u3psRsDOgrqqKkIrpZ8ZVruGVZXdVWRpbCSMPnTqsRjrvpVOilufzIRX+Z2ToFb1SbFPX2dh67u/vcX6g3tTsdjs2mw1udIQQ2Ww2nJ5dAsIMatuO9tCJ1RRcYqDLntZGnv/05IQYwaAxQTG2A33bEbwA5Ka2mKQXQ/C4RdMcvQjyr9c3g0Tl/Oe1LVNd5UyVui8BbcDYd5D2aAYFlNJU1bynxtHR98PktNpK2E+6+P6yfIBOHRxnGZHsiyIQNz3LEz5KDDNIF4KwIkswYDorSV6EdLSnI5671mZ9pZDsETLzPEEYRk8AQQYL5+ZsaWgK4YeVtlB+b9QCQJHPaGkPyT3yGpRnOp/jGCKYemKcZoarzPk4dbjP+jj/ZAAw197TMQd61ntDL2yrGViY7RKT/qyrSFVVjKPHBc84iA13f38nZ2vTTHtCGrE4YlBsq83UNMJ7z+h7hkFhhn56Lq01tq6oCrtkHAeGMXBsB7a7kU0tDZ1ialKz22xRKA4PDxhr6Wqpy+dCYHAjLkig6XA4yPk3lirJpYUdl9iFbnR0xyP7+zts14KCummEUGIqBtMB0pVc1knmrrKNzJPN5ybbnQqUZxx76WDuPPiIGwRgPz09pdlU+HGcCBMxDmTmVw6s5XIac6BMouMmyWxjlmmeIbJYzwxca7W0jaY9TLmfE1A7vS8xqZEUYBNngC7GiFek0jgKn89jlMMSggSpKPZZdiJKPUfMMvEJVCHGJJfLMWVg87H9sZSDst9zt+nSJigBrcVcFHbN2q5f227l+8t/l6zk8j7lv8vv+P125WPgcu0nrIOh63ET/aPXsr3wT7n+RQG6RwJ79dp6s66dyfXr/9nf/0RUd70Y+fuedFbU0mhaP0NprK6v6bDksayMuqcc1M/d6zGVYf7+9QbNxryxFdbWKfaKsEiUAHH5p1LZ8RWjKZKiO8YSlWazPWG32+G95/3NB/7yr37J9+9e89A+8PrDDb/5/lvu9g+YquLq2TXdQ4cPI6enp1xdXXN2rjh0FVKzN6BU7kqmIAZiSAUeg5JurkrNRWq1lhbU6fUpmo4iRIkQBpeil0qlouegrXTrqncbvPUEBpyPuDFy6Pbs2z0X5+c8e/GCh8M9+1SPRbqkKbpWcX42sNttODm9pu3mFIa//Ou/Y7c75fzqmouLK5rNGedXW/r3H/jw4QP7VpTIu/ct51c7/uxf/5wfff0jrp5fsW8PDH/fM/QtpHHrJFS10gLWaDBRWAYRKdA8nXOV2BhRqnjEmOuNWJSpxIiMhhAVLmr8GBjaHj/0fPnlOV9+9WOcM7x9d8MvTi5ResfbD+/49W9v+PD9Le/e7rl5s4dxx/X5D7navWBzdc1FZamGgVMi1WbLx/ae/WHEGsXt9x95iIowBk52p1xcv+AHP/gRX3/zDUTHm9/9Eq9bDu0RXw08//oKXVd4pemrnoMG8AymY9At49jCOLCtKmJ9xm3b0T4cUUNEDwHle5QfOd9s+fr6GaMb2bcd9VZjT3ZYNnAwcAec99T1t9S9h7sI9x3x9iPu+JaWdxxVQ/u37/j3f/uOf/t//ZK/+Ydv2dWa57srfnr6ksurL7n86Y8JJ5b9YU93PEB0bHdbLOCGnv3+nqqSuh1NXWGRiG03BLpeGkPs2yOHVfTVJqA1TspGDF5baTYnW5RV7I9HMRBhNg5UUqrp/OsUVVOTUs9RvJCc6VmBZiVddmnNLLlJXiWlnQMMj9JaWIIBa/Cq/C5532NQ7yk5/NTvtJ7Te3/f9UjRFvfSUS1q8OXfr5nHawdrLYPzc67BsKfkeH7dGJPSfh4/w1rvrPXkAszQs9Gcv7+M1Od1ewr4ASaZr1RmypH2i05G6RqozACff8QAWo+9HO96rmKMk/4t91ZZx6nUiet9KK8DKqTARSTXQV0YwFDstQz2COMu+CXoVj5D+buSPbW0SwSkK52r/Pt8Dtf7KDsHMaY00rhM8SjtiNIgXO8rmaOlrbKODK/XpFxHeaYZZFTkszGPU5xsNTnK+b0582Bthy3XZv7d2rnN79OqcNJXnys7q3q/lDNRkMFp77My8Nf7ac0Onr4fRS4Qn+e/XIvyebJMyABxDol476fOiSFGqddYAKEyvhlUzKbKNOYCZC+vUmaUnV0X9mcB8ObPTGzPKLw+o8G75CAGGAeHd+JkVinDQBfgiegEYQoZY2maSmydky273YZPnz6x3+8ZxpG26+i6nqqXjqnb7VY6sjbScT6f5bquaYqaXJOOcY4hpcqOYWQMY2I9IGy6yrIx0rE2JhRHK4VnlJp0IdctFBmQvyv0TupteT/ZSE294fziguvrF5yfn1NVDfd39/w/w3+QFNmhE7lZGTbNhovLc169esU333yDRgBe3418uvnIh5sbukMLKjE3C1lR6oJFYx2lUHlfIrIqBMU4KqwVUEIYV2WK69xwoFyn6fviMiXMhwRIg9jwmV3CzLYaxxEzCPveaI03NmXGCLCtlELbAogZhiVg7/w0tmCWXRIXjvaqE3QJYi/kWQ4kiHMhjT7SGcrnssqgVhpjcFICRxnDGPykR8pzntN/8WECGCYQKgHFEsZWj9JvQwyT31zqExl3ZjSJzZ3TttfBuLX8nZnAIRXs14ndVk2VA+ZshJj0VcQ5X5zNuUlSyECU95kriVJS680GUEit4MO+xYyazg1sNhXb7QZbV9SmlnpjoUYjddxCCIzJ50rKlUPXpucPkx6d9L+OuDHQdUfGoUOhqJROqfQGjeLq6pnUo3QjIUSG0bFvjxy7NpUfUDgfcG5g9IGmEqAu78nGVsKQjh5bGaJ3dEd5tr7eUNdbmU8M3ksgDiAGTfCBKgGHWmc9C9rkveLxYRSw0nupxRvVxMI3xkzlCnSMhILNlIFg7/P5nPVdbkiRAeOJ9R6lMUl5TnJH36WNpea9RmFLMeHh6dvERpOVSnZ/nPdw8EiH3MKe0VZqaUpH6TJoKnedzmZMde6CcLjWZ1woOsVgYt7zWeYtg4H5s3OQMNsO874u35+fOaeNf+5s5Q7YYr+IHVMGB8rPLu1QyWIoQfCngLf1PfJ91hk2axCytDPW18InSPo2z/38JRmM/a/IoPscoLaemPVkfO5z2b5U+e/5l1MgL8cVmRyz8tILQ0reWTpWwzDkUfHUENT05U87JGUdmPWziXAtjFI1G77rOSmfRZTNehyPRzZ9bjW3QieWnxyBDeKtk0yHxfxMmztNtlISHdDa4gkMw8Cnmw90hz3fvfkOXWnef7zh9ds3HLqO0+sLTi+vGAaHd26qG7Hv9pzH05R6k4SkEOjyYOfaCyEQcnH3lAahjDDCpBMUaX3TeLWWb0nCUqmUBqNgs2k4uTjj9OyE47Dn7uGew0OHwjL2A3efPvHy2XOevXjO5eU1+/2e/bHDDQPtvufh7sDzq5ZXr15R7yx22xSzbni4f0j1fBR/8q9+RFSKdhx5/+kjVWUJUdP2R4b3R96+ueDnP/8DXr16xZcvX/Hu++8Y2oMYSslIlrpjAYcIdxfEWI0xYs0msa69AHMRifakOn3a1oQAzvVERpSuQVmUlnudX5wRjp6fffUFf/6zP2Kz3fEuWp598TVYzYcPH3n3/g0fP7zn7dsb7r6/Qw8bNufP4PSUixfXRDVQmZoAvP74nqHt2G12HB8e2KiKs9Mzzk/OePHiFRdX15yen6OC4uOnW25vH7h9ONC7ke3JjovtVmj2leWH3/wYpeD+0y3d8UDQBr2tCTpy33Z8et0RTE1/jGgHVUiRCgdxHOgPUgh1rCKxMejUcp1PB6K5hfMBz56Hu1uOr4/ENnJSV/h44FfvfsNf/OY1/+4//i+8fjDcuw+cXpzzs598zU9efc2rzSu2J9d81z/w0HaE4KisQZs6zX+kqmuU0lhjiSgGH6Qj3Ohp+4G2HzgcjxwOB0mHbqWAr7VGTpvzuCBdt5KWRmlF3TS4GLBGMfqIUoGpy1sG9qLQ2kn7vzzTpVzIHYNNivrlLq3jMEjdHWMIWk+dDsvuZGXXMpSaotKlobEG6ARD19OPoAEp1VNloDErpdn5z1318iWOnyUE8FHSCcYghqo4HiY1NkioNojRD4n1JYD3I0d6+j4z1a9YA07rv5estVIul7XUnlL2EzUflZzPwshL8lYlAE+nIIoCYRdo0Rdlym92wEThy31yS4eczpr3wWRMkAGZbPiJUZjrIomRESib9CxBKTUNWwIpszO43mv5zwzMEZfRygk0yWtiNCHvr2Kuy0YmShlQEYUUnhfwbdaPIdcsSt1+5bW5BhsxFu9ZgsrlPMk+D+Ti3TkFeAl8zjYE5OdKacTMwI+ZuhkqXHSTkVwy3tbzVbIoyr0VQpwaI2RwvWS75nuUBnBmcYCcM21S58gQkvyQ+QthuR8FD8hFqdMezQGCNQMsCsCytD3ymmR2YkyseGEnhFR/VZyTZbdeMaKzos9jmRdaRSbmgNYSnItKE7QAaXn/5oCoS2ltQ5CGCigIqWj4nEIXceOID37uMLg40zJRY5pXqTVIar4w23ByxgsZo2fGhA85VTm5WNM6q0frDSmdRokd45LNlveazk5dQtjzOcn14PL358CL6pV0bEzgVilHynOQ16GqKq6urthut9zd3XF7e8ex7RicgGFSiL6j6zphrtVSc3e73cr8F2eqqmvZM7rCJoaMdwHvRoz1VJWkr1Z1xWZbpTpqqW6Yj+goznhVG5qqxo0jg3OYquHiqmY7brl/eKDve+Kxx9oKo53YZolReH52zrZp+PM/+1e8enbF7cMdLoxUm5rTs1Mury95+eolm+0OqyxGKY665d58oh8GHg4HAOpt88TZzvLYMwMbyefK65TOQnDDtIbl+c17vus6lCoDW1Dqlck6D1FSWVPKlbURGyNKW4y2NI3BjY7RzR1ajdaYRokTnxo+qAxwFIAdxf4NySPUCdh6ysHNPgIwgTAZhCqBelBYO+vZbEMYY7PTBl5SirXWAhSESMTjVcSo7INJ87iY2LE66SUdAz7ZY94HlIM49vixZ3QVnlQfdNGQRr4jIDrG2goBU0lnS+RmrjHY92MqRaMY3TidPw1oW3Fa1QzOEZzDJTawCxGbvD1XzPFUH4/ZrigZfHneSpsjBCnTE0ZpdKCnZhGaZlPxg7OvGV3P0Pd459nvD0zMqwDbaicp6VUtftUk2yUdcxx7qQtYBOtMsqGMtujaTns5xog2TfrciHOB7VZJXWVjsLWm2TTU25qTUYgdQy9Af992eOcZYiC6QFYyveonJmyzbajrDcPQCVt09PSuxZkKhUnZHiqlw0e8j7SHQ7HfAmpKUUb8IO2QDqjJZs11ylNJiEwSCcERo0eriDKGCoXSkc1mN53nbNMoldiRyfaYzkUQWGveaJKanJv/6QSaU6y1SkCNgGJJN6WzlJu7mBS4yHYVPqSqt3E6fwpQBqyusErjlROQTcdkImegaD7/yeNfgnPJJiTo6UyXn5nssiLwtAjA6Wz7Zts64v1YlNCxScbNOi/rtzwv86VS8yBhCqppHG4aS846K/2JbOuqlUzK7MHyWUqZNkFLcbarrLUEpVLZAzn3ofhsiQGV4Os8FgVI+Ya5DmEGW5/OLimvfxZAVwr3xUTwOJJSvi//vYyar50oIKEz+RN5UmZ4ymcmUqphsX5YpR6Dho8o3GSHcRkFlkqLTEbi2imBx7Ve1u8z1TIyKs/JdNA/e03AtVr8Oc2Nmh2IxXcnJeaJxOBQVpz/mKPpCqytMcrhx2FyBg0WY2uiUnSuIwxS+N5RoT3shwgqMlRKkn6dh+RE7a42NM2OoffsVI0bO1x0VLsNUStciBzaThgxjcGPQSKKSKqGz85cFCNe2rJH8CkVI5WkCUQGovD8lBzYOA7SqTbRqutNxenFCbZW3N1/Yn//QPSeOiDO4HBEKYsaRxgc51eXvLh+wft37zj2LbvTc3TsGQ6fMOqCl6++4vz5bprfRkea2oAb2FnN/u4D29MTzs8sm53ieLxHgdC5jeHbX/0t/7cJ/OJPfsFZs8VEiOPIrm7o2iM5CVqErwZ0YgkCURFtAh3IQEckJQcnviNoY6mVJUYBY2Muxq0i3t1x2mz5s6+f8T//+Z/xH4m0fc8xwpv7A7/6h7/icP8dHx6+5e3bb9kNketnX7B5dc3dGVxdaapa87G/Z393z0iAqkYruLx6TvSOL776Aednpzjn6MYH/L7n9u4Tb9++4d3rt3jncGGkbgaev9hw/fwZV8+uuD57TlVX7MwJylusOeHdmzfc3Y/0o8GoCj1W+BG63tEYBUb6gJ3XNc+2Db7y7HXPaWwxocZ1R8a3N4y3I357zj5Ebj7dcv/xjpBq9H349Iab27fs3cj1szN+9Edf8PwH/y2nzy+wdU2McOgiH7sWbxTbWBG1JoWrJrAUIlFHhnSunY8M40jX93TdiPOewTvu7u/ZPzygQsRGhRp9qlUHRmlevnhFs6m5u7tlDI5h7NAazs5OebhvBfgeU+qSzmyDQFSa6PxUY8Y5R0z7YHQiF5pKOoT1XT+x5rJ8MinNJfpAcDM7SykljmUCYrLTQQYCC8UcQ5z2r9Yao5ZU/qhA6UrOPjGBLDmdR4wbYzTKWFDCOIokNkWSTRpAz6APKuIRVosozoDRZqrfp0xOT9B450BJofMc8c/OhOykOKUQZtm9lvPNZjfrFRVQYa6rIesuxi0w1cRQea50Uh86TsGZgAAOIUqnPKmZ5ECDTYEVVGQMI971YowrnUD9IKkOaTjeB6zRVJsN2oocHJ1jzNFcVEq1ifgEFuWURR2NWIBRnBUXnOwJZG6kwXdEkcBWhMGRgY7JyS+cUqldKqCztTXBe+mOWFU0dY1PQSKSJJPmaXNDpQwW1LmOVgKmIWEVSUaGIO9RKnVX1JWAzUGKkuc0KSKpk2VmR0kzHaXmqLdPwRL5HimEJs8ocjizFTNAVj57PgMhRDDyXW4MhOBQqW5UjHFRSL4EC0sWWLaHxGnM4JswyMtU4vIesgdmhk2+R45Ka2PwCaSMITtfVs6Kzoa1SwGhwglPnwmIM10VgLZz8zjzf2nToFDUdg5oOedSTas4yYOcsikptcKI0FoaGUmgQAz2pq4FxA0hAXZzbUEZ55z67p2XboDWUNua2opjO7hxZowgdp5P+9QogzFpj6DQ4rWiCCjl0rwqYpTzbmw1NW5RWi/mZALFlBKwRxvZO0oCRyC2agyRykqTheD8nKZvRL5qY9N5FPAEFFXqzpdQ1alotc57U0lQJ+9pFSPkjpMhcDgcUSouUvDWsq7spnx6ekrTNJyenrE/HLm9e+B4bGnbFjd0BBfxY6C1HXVd432k78epcP4EZtmGXSVA2+gc4yismOgVDjk3bhwY2gFrDU1di03nA84ZvHfylAowUrfYjUPaS5qLiysBMtO8xxjpx4HhduR4PHJ7+5FdVVNFxWmt2FyeYSrNdrdle7Kj2TTQttze3hEjtG3Pxw+33Ny8Z7/fy740htDlQEkKihiDsQZtBMASQMajEVZYVJ7Re4ySwJMxOnWwlUCb1OSrEtgBm2YrAAgCTMVUd1RrhI2T/JIQHT4AyhSplEX2TIgYpamarQBLw0A/9PRDTyQxQrWwa0JZpiEa8Q/8XJcrB8EBhnEgHVkBApRaBL7K9OySqZ/r2voJ9EkAZATlw5zmqiUQP6RaaxqFqeosLLHG4PqR1gcGL8EagzCfVKrt5aIn+hEdAzo4VHSMjGgClZW5znXHfPCLerszW1YcaSKEqBijlATwDgZEj7nCH5U6h55N00jtPqQRn0r2ezc4fPQ0Tb2Q11kuTiBqwVBc6wjRe0nWxrRHXLbhEms8KGpjqXc2yf7UhOFwZOx7arNnt9twdnrB9mRDXdmULTQweEdV11hlJ7BhGAbG6MDoxHRVMufGYqwhRsW+7dOxNPTeJYZiwMUBFFQbzeZkJ418WqlL13Ud7bGl7VrcMJKdXO88D3d7jvuWqpHyS8KWtdI4TWk61xUBnZxunhtqjBNQk4M/OfAY8VgdKOvAmkn/ypoLeSRMeqauKmpjMHU1N+AIcyfvMnNhsqWTLijXMWem1ZXoOLFJIkyNKzJGrWaWXAK30DIuKe+kiNKtMtmKo4Cp05GcmzfJeDxBBUwlsmK33dB3PX3XElMwKyJDsTbV4EyZOXlfbqhpKoOtKvAzWDUHA3tyQ8auG9KenUF2mZ+UjeNGMlNQKQXBpyZV87xXVTV1Xc/klFnOaAnUezfNu3xhnGyxNI2JnDQH+EIANwYp42VI48l4DkDEmnqJxcQIWV6pxDRHbJtQ7AWrNSrpf/GNylsU59ln4Tn/ORMV+Eev/6IMunWEeI0orq/PgVTT5594bwnC5Xz20mAuv6+MTGdwb40iPzWGjPxKMP7p1KHfN/71c/y+a32PBYiZVEeJZMfptac/K9HbzOJQE24uQwmJsuuRmh1NOgSBtj2k1u2pjoUx+OA4tj19K62+o6qgMpydn3N9fsnZbsfm+pLutKF3gY2tGbQ4I055+kFqgfSjZxg9RpGaHgi8NCRHKo9P2Bmk2n9RjGYULjKlG0tXM/mA0Zqu6whe6NGbzYaIl7TCw4EwjMRR6gBU2lLbikobjBYD5/LyknboObu4YhhyhyZDVSn297d0w1XqoiqXH3t221Nss8GPA99/+y3PvniJDyNVpdlsKlQMRO9xXccYG27ff+TDm3dEArWt2VQbtFY09Ub2HxJB0aQ04+n5MoMCUvcIUTSq3I8R/EjEZW837RhRDl10mDjw9Q+/5MX1CfbNO74837HZaV6//54PNzd8uPnIm5tP3O5bdtUlL86vuLy+YPvqkpOrM0IcGYmYZkPVjXRjS+48/uz6GYeh4+2v36CJ/PSPfsLLZ5fcPbzj29/9iuPdEauNeBNu4E4rhvbA/tMNdx/e8fLlS7p+wHctNirqqqaqavrO4ceROHTstMGc1GgTcf2ecThicZzYHefnp1w8O+H6xSX17oShjdy8fcdvb/6eNw+ev/zuI999OnB3/wnwnJ2d8urLV/z4xz/lj7/+kmdfvGB3do7Z7mhj5PZw5OP9gbbf00ZHDZiQlbE4iUQBWWIUI5MgbIfejQzjSN+njqhOjJK+7/HDKABLpqFHAM12I7V1Ts5O8DFwe/eRYRio65rNZkPXDgXLaymHDAq/CCjMYEI2PPuhl8h5EbkFFvIxR/VLWTUzqSjYq6n+BbMhngNCJr2WgyRZ/vTZYUwsA63UIuVMjCI9ORpap5S77CTIQcgaV5hxK6o5MKXCRUWRNhzwcWa75KtkG5UORRmcKedizbIrDen8udI5zb8PISSwUOoWQaojYozoFe8lCisTmOY6s+cEwatScfZcG8hoM6WHBO8lrT9EvNKTE6W1xiaAUKcVk2jzuo7gFHsip0NATolIY9VSzLp8pjLdK9fbyb8v50mccekM7tPu9d7LfpqK/qcoaNpn2ZEzi0BbUUNMSdFr0dsaa3L0WuHT72OAnBZYVfW0/2WfzOkg5ZjF0FtHQOe6UJ+7yr0y7x3mz+X1LV4v988iZZHP2wulUzCvn5oc5DIdI/+EKDVoolcEQiqhYBKzELzLabpFvUgiZMaTCgJipfS8p2y6hUP/5Jzk2j7LscmGivP0RqZ75TkaUppexuVzag+Q2LnyueDnmlVElWoUJSNYKxFjRk1As1VGnksleRQTkz2mFCgCWgWpfWcMzucSIZIZQISYnOs1aArLsgDo5LRnMDW93zvHmIqs526RIQRh4FDK3MdzWgK8+XPTmhdMBq014+ho2+PkvGS9kuvU5fFOKZQF2Ns0NVpbqnrD8dhyd3eXmkkc6HthvQAcDgeqqprumZ1VYzzGVChdSfMwbYVJ6QWE7Z3UfqoSwyp4JwC6NVSVYbttCCFybMcEXiFsMaMW485F6DMQ3qfSEjF4aqXZGYvre/phICCMiKquMJVJLD+b2GCavpcyFNvtFmvlvs6HBKCz3H8p4KJzkF7L2CMGU4XEljEor/HGT7WzBIAQ1n0+F8ZIoAIESJJ1EAaMUQUTO8JcqkCc8af8H601m0YYU23fkdksSim8Tgz3dPikJrL4GnkeS7ZvlmFr8sRTway8LtNzJeZeZE7lzIGDsrZpCAGXG0koNZ1nndIRvZdUvOwHTUk4SDZGFRXKRKwV4NzWBlMbiJrj4YjokJmNns+HMUaaKEzPlH8EnAPEb3FherY5gCJM636YwbYM4AhQUBEDdN1AXNWhekruL7O95qBh27byO6OpCln7lB2UQXZjLJWVRg5ulD29P9xz7A7T68bmeq8++V9F7XRtMZWc20PbEoPs22znyIYwAp4NPSSIOfspahTg0eqKbb2jMjXbZsPZyWkCD6UTbN/3KK0kwJJkjzHFnraWqjmRUhWJZOJHAWpCnAFOEcox7WJSAFPPe6U4u7kMRgh5HtW05jGC8x7jpc6fjmbRlGGRcbba/2lOWwEAACAASURBVGu5TPqcj544KbpCN8QcHBE94ENA6YjPdmQOfiaASgLmfvp98Nlu94v9AgmYCl5IKUgdawmkpiCxyriHSpkoafxafG4VIjEBrzlANT93tifTOoT82mz/zHuy1PvLUhPSHVnh3dP4xzznmQSV1pn0HHr+u5w9hDGZfYZkIOhkXM7jyjba8noKyxHAMDFgddpdeibHZDtI+ATLz2cQfc4gyTY26blmX+H3Xf9FALrPAV0ZfJgHvPz75z736D6FcbdewPXr+d9r5ZEnKR+e5djX70upQAqyF/q5cf6+8ZeG7FNjfsrAW983C8/Fa1EcsPVnjDHi4KRuW7mjjFZ2BoGCHExRNoba1JNx40OgaXZSw6NuuO+6lFYVqLYVVd0QjWJzfsL5s0u2GCqtOZoIFqpKE81M09fWCDsmMftQCh3FQCij/lrN6SlTGm6cKf4WqSUhIF0SwigqZeijAIJ1vWG3O0VbQ9t1+ADa1MJmCKBsjW122GZLiIpjN/BwaNkf2xQBM7iguT695PzklH488vbNDboxfIUYo904cn214fLZc1CKD/e37Pf3OO/pjkfckBgvshgAPBwOvHl3Q9NU+BBxAUYvKUc6Gz+RZPwnpzAysVdU+jfoBG6Wwj45blP9FpscAoOiZlQnqN05J3/4h7ztH7j//h/44fkZVbzn3c1vubt54OG958O7wL5teHb5jMvnV3y5rTnfbdk1p9z1LdqPVKYhVJ5oIziHNZpPn+4YugO7Xc2/+pOf88e/+Bn7/S0PxztsDX/wo+eYAMfuwLHdMzwc6B487d2G4XDJxze/xnnpuOZ9xI4jJ1VANYAaOTEtW2tAWUYXOIYjOo40CqoodSn6wXFz85Ewvub97QO/+f6GX7/9xLd7j3n1c776+U/4sxcvePH8mqurc66uzrm+uuD0/AwXJPrRx8j4cJDoSIg0xqCbGt+NwPp8ynpIVEycmmF0dF1Pe+xoW6nbM4yO7tDStdKIQVJ4FGXU2yaD5/zsFK3g4eGOYRhoNhua1H4+t7Ev5UKWHaWTVjrBJJnRd/0j4CRfmWmzTOMrFGN2gtO5LQG6CYzKNe7Uqghu+sngUHHzhUPxSK6tXp8c4sIZzs+dDexHjn9xle/LIEc2BJ9yLjJYV85H/s5SXpfyvARF87zmAI9SOtVSEjaMMUzPpcJ8j5zyO6/dfO8QUipVjGiTIqxhmQYDYjCFKCmRIYGaxs4lBEoQNxuaT0XvP6evys/nz67XrpyvGKMAdFqDF1Z3jjaqxBSeP5MKpqf7mmzEFTqiNJLLyCvMHYfXV3Y6hkEKqJto0lz5xfrnx1wzKUsAqjSC16DUeq6m8T4J4C11fgncrUGYEOKk/0vnMn+mjNyXDqIAlQEf/NTJ3aSgW2ZWZXabznWhxIIX2CExs1Azs68cW8n+KwHb8vlCEE0uHUfzecg6PQHueY5UTvNKqaohCKDsXeo8m9PEl3sByjTnPM60jmoeKxqMVLWadG62+6xNwYjkdCgi1iqqyuKjEdbnSl6U67VeyynlRQtLMctD+Z3oDr+WMSHVFArZ5kzjz07Fylb8nHO+HqNSmrpupvMyjp4Ye9G11k97quz+mc+DrEUEbajrRhownJ7y8PAwBZ6GYeBwOEgNuqYRnVVV099DAHRMe0+jtEm2nUdFSb3uxgEGqUecAzl1VdHUDVVVC8sjxCkYIM2DwsT2GYawOAdap07QwWABYyph8gb5Dhc8rg+ETlKW6rrGpsCgrizbxCbKDmWFMG9LAEMppoDxfOjnv066CT2l7ub9MY4DME5sls1mI++1GaDLQSOx9QxmodtngIgEaMy6p2Rm5XVtmmaRYiZgX5xAA6UKd7Y4u5PMs8vgwFpvlud/3QkZJXOXdW7J0ldmrlUbiVPK4OK+IWITsCtioLRxsh2Wa+4uWT4hBkkfzEH/YpzlcyzPUWIbF2cp65jFnBT2S9d1izkr7Rqt9cT8WoM5+c+1vl3/5CYOpb4tfaenfEBrrZw/5xn7bgKu+36k70d0Ja/L3slgqUZbjbZMe8wYw0VdJ/tDJSbpnBWmlHSZlmCIED1EzscpDfV4PEpX2rqm2crP7nTL4XAQVl3b0mU/U0cSWQxhSAWcS80hcI/WGCVsxyWesNKhblj8W63PLUv7uaxFmoPQT+EKWaaWdthSD8q+nGRGxrtlR04AXSZieO+lRI8ReSlMsJT2XQDsSkttZWF3zzX55NlmuRCDImFokz2afefi0UX1pb+EMDMTQ5DASWbqqilImOwvn8+EmeZdKYXgaTkIWu7lmV2d92kIAVUvu7hKtk0eN1KiomCgyTzHCYwLwU0Pk0QOMc5AoujPUjwvbdv5u/PvloF655h8oOwL5tIfPibSQN4bqjjTac11CqYELwGVDGJmbMYUTSqfuv5ZAN1TANvCIE3P9JRwL52eJ41bmKI8nwO4pu9ZGSfTd2S+WeTR60/4c4+MaKWXjtP6+z/n6K2f5SnnEVgorKf+fOo5pt/ExFwpDHeJWpgJzfXDOClCCkc1v+6GceGkNbbi4uKCq6srbFWzf/uWqmkkctk0NKZmiJ674z2jc1QPPSdXF7RfnTOk1JSZQqyleYGpMLYWozNKFx6vAsF7TAIOY8y1tJQwbqJQlbXKOyBO/xeS+yxoqpRS0zRbtpsTNmcnUB1wLjB0A8ZWCfcybLYnXF0/p9puaPue79+84+3NO/aHjjFITa6Lq2teXj/n5uMb7g8H3L0DfpCmXVHVNVdXV0SgD5IKsz/s8aM4gcE7STcwBoVhcIG72we0geOxxUnNUJwL1MaK8a1UIYLmZbbMUfRJyEyCYq67JBagpCNplVgt1Ci15Uc/+1PMF1/wH37zdwwP7/nx11e8+/APvL35Hffv72lvHO2tQnPC5fOXPH/5jOcnG65PTlHNKaM3OO0xtaHaKJTzBD1SWw1BoeJAU1eE6Pjuu9/wm9/9itdvv+P88gTtJNaglMHabaoJodk0G7bbc4nyEDEx4KOXdN3KEpoKh2Z0I91w5NO+59h6xgFcG7m5j9z3B/b+NaemR48H3NjR7Da8+PprfvE//Y/8Dz/8hvrFH3D+4mtevHjObtugojhgBId3I8PQ0w8O/7DH+XvGY4frO7QP1NrgdCDqgA+ZfStXSJT1rhPjpxtG2ran6+Sn76VAdtu1c32dae3SVopSAykbeLvdjrquabt2UhRVMpLKulxrR20NsGTgLTsw2WnJMqhkDq2Bijyu7DjrRLfPDmYG6CaZpvJjPZaPWR6hZpCDuKypVcrwtZEKTI7IGlTLf183e1iPwSg9MRzKOcv/LmXnwigr7lEaFfl9eQ3ye8XxGqf5zDVi8pLnKGCe85WZlLZFdiayMZULhMdJ4ZMCKzk9rgQdfXK8AKnVk3VIXD576dDl8T9mmifjZHRP6uZ8nxIYe1LXlfskTr8igw7lupSvmZT6GyHVF1oyQPOY1+udnymPv+/71OFRmDMxBJwXmV3Ow9xUZXay5N568Vzl8+fvfgpozldOiViu9eNAYum85mfIjmuuYVc6iPn6nN2jkj6J4enX8m9lP0pK79xshvR3SQeNybEvbZN8VvK48+/WAJ1KrKJ1ACDX05nSjOPc+CTP6WOQ/LENl9co31fYemmexNyYwLr80CEBl0IqEOZkNspDIDlEqdwES4bZ59iCeb3K5jo67VGXugDGIMV0IjK/ZWOIfGk11/IS5pFafO96f+QxlPsp78e8JlVVTWm4WTfk/Z+bLpSyr3yuSJyc+KqqOD8/5/nz5+z3e25vb9nv95N+y/qmruuppqmtvaS6R09QwtaRNfIYozBmg9bImXQjfhwI3tPHEe+hcoGqerqRR9M0KAWH4/6Rk7zZbER3Kg3jiLGWeuun8il537owAw+mrsSeslJGwnthM1o7g3/TPGspo7DYj8kxXcijSebN9oPsp8yIS/osBml2AMJ40cJYAlKKmVqcjSz387xMoFTxbxINra4rvFfT/syyPu/LqqpklxXn65H/UZzp/Hp+Twb+8rUGsqpq7nw6F9MPxJFprVAsALpJrviIquTslE0ltBLZiJKyC5GAD8K+9z7gnaSyGaPZbhtEAMzNc6aAKZKGvjw/JVtYGs7N67aUSeXZnEDz4r0Rj7USeFg/WwZSc2fYfK1tqbWNtGarr/VSqZ9EzpxS+ZG6bujGnmEYcd5xOByJRLa7E0xlsEZKH2RhKXaHw1QVIZQMt1lX5jFpXaQ2ZtsFj46BGKXsg3OOJnVjPjs74/T0lBACnz594nA40LbtfB4mkGikHfr0fEvme7aZMoNs/vbyDICOc0BRzs5jf7y0h8pyE977qexHqd9KfZ3/vl6rCUxkVQ842XM5uG1Maoam0nMTUwq6QqmQyh/kciXyjPm7ZrayTfs26ylDNApjIsF3sx1Y/pdsypBSgcvA53KPFQy1dD6MqcBm3yPPdUYKUx3bQneV5TNKIFSwCDOXGlFL8FvqvqbUYAyoOYNDMZ+HDIiKj5HtTQkE5xrBefxL2+vzvksp72M+Z+n3bmUTxNW9y3tY4+W7dZDsuhRQyGw6Y5fnf339sxl0TwJK+e8l+Ll6//paG8HAgl76lMJY33dp7Et6ESBdQJfvXhlawnCIUa3uMRuA5X3X3/u566m5+X2fXQOZZWrrtJFIQvCJObRKp9QNncRkqumQCrbn6HG+hlQbQzadoOU21bbqfItSke2uQUeolGGnKja65h0d7+8+cHo/QqWIYyNOqELaVo8DwUvE1iO1ogKprkOixHrnio09P46sY3ZWRhFc6VkygyygUhU2ASQjUuz16vKa51++ov70iY+397SHO6q6SYU4PZvdli++/BJd1bz7+IGH/ZH9ocUF0LZGm4rN7oTzy0vasWXsHnj49H6aL1NZXIrYb7dbTvoT7o8Huu6Y0oIV3eHAMPbUNBirqHRF34903ZHDoU31snLdxKWxn3falIDgA5k6IMKkSAkGnB/TxCUWTXRJICkiFbau+eM//dc8nOz429/8NX96dsJFE/k//+YveP3mLft3t7Q3Lf4hsD3ZcXJ1xunVCc/PL3l1ds3bzjMee8Z2wI8jY+9w/cA49HgTuTjbYqstXX/gb/7ul1xc7tAmsjup2T90RDYY06B2p2xPRCgPbuQ4DHR7wzAE+sHRtj33+yPHY0fXDQz9QO96Wh4YVKRzDcqec3r1ku0XZ+h6y8Ppjr/ZwA+f7/iDr5/x6sUFVy+uuP7qBc9fveLs4oJNY2i0RavIMPaE0WGUorI1ykgdK6+OhPuIH0ZpcpJSr2Ja7zF6fJC0HB+8FOQdhBX3cDyk6OTI0A8451P3OjHA+n7AO0eImeI9tQ4jRom+3t/f8/BwwenpCScnZ2gtTBc3+lSvaJzO6do5XMvGzCzIBmAJ6uVrNn6eBjjKe6//W1+T0Uly7B+9YynXp/pjcWYATfNR3C8bN5WpZzbdKhjyFFhRKltR3jxS/qUxWxoMayd3/Yzl/JXGcfneciwxddlCSaHsDDA45xZOwXJtYjI4ZT7LVFyb5IX3XmrrUaSdJrNUar9ZdJU6/Pk412ktHNg1sFLOTfkMIUh9ntLwL/da/nlqDtZrn4FdkU1rs+Cx7lcqOeRB6uqVhl3pkJb7O79WMjaUUhOzB1IHvxinBhxiaM/BskU3z7h0ftdnrnRGS/tjmi+lpi5r67VeP+96T2ktxuUE0K7Wat5nT+9fcaZ0SjHP+8vjczlapdDKkBkontngxMh+I6UelXXLMkMsF1Ffg295LrTOjar047kppImwXeLUMKRkxeZ9kLbIk/tL6/IsMc9lyHaS3CQ7Jqk+AVPQLxYAayIF+xhSB/mnz2ke92SnFgBaea6AqVHYVLsxPVQGODOQSQJG0Xqq/xlCkFpmhdz6HFCyvvJYxnFYyKx1UCezroZhmJpl5PdYY6kbOwV8tFZstw2bTc3FxRmHw4GPHz9O3+Wco20P9H3L/mBpNjtOTk7RtsIYS8zNrVTEGkOlIpWxiTEiNY+8d+RGNuPoORxuJ1aQgJoVVWXZbDZst1uaZoP3DpdYYpkx65zDaiO1AiuD1RZrzdT51DlH23fs93vc0KOdS2yiKu3dpWuklEoAhpyrbK0pJayWwJLFFZOd2zRN2u25i7pfAHSHw0Fq2lmpxzrv83S/cQYc8rnKjnhZRzOfncw0zJ9xqZ6mUibVqsrggiMz8DJAt/bBSn2R5zbvoZIxXsq/cp/lMZayexp38QxiPDzWpZFcKiG9NxSOPhEVhSUurN84kRFKGWowSPOfufZoHvd6fElYLHShG/tHvmcZTJnnK00iCHs521/NsgFWnsvSPnvK981z2vf9Yv+vr3yPrPvyGGfdbDC2xuga09RUg+PYHxn7EedH+sGhvUMrqVlutMFYKTOhDTCOUqMwBJQO0ngGiHpm9M22RWKOFamcdbVhHJM97EbUaFBWAH+rNRfqCl1ZlDXTuXW9Y/QO50acG9FmxW5fgFSSamwr/UgOx6DY1pu09zODaw3UzOuaL6XUtEZ1KvFQnqn1Pv9cADFGYYermDVeLAA6ud/EXs4sXfL+zkCpsNxFbvkJ4C+B+skOT2CZlKsQwsZy3EiZkCnFVdYrk2TyvfK9Z3Z+wMcxyYjEdE9EEOfm+rpaZ1++lCHZDg+TvCkD66W9Ju+fQU/v/dQwLQYplJJT/Zmme02SSnOdno+pwMoS6E6rvljLcm0nOxeVsgnUFCSwJNIAQjiYgn+s8J7oUapCa6n3BzMbN++Pz9nO+foXTXFdG1Wl8Fn/+ZSAWjPffh/QVU7qNEkqH+j8xqfGUS6KWrwxb7anxvA5w6i8srFWPuP6Hp+7ZPxLZ2Z2cp5e1NxtKCO9ueZRKdyyIMl/5ghY/szxeGQcRwbv6GNAVRaPdNxzGqrdhkZXONtz/eya0/MLxu0JzntapDNubDtc2zPsDP8va+/WZMmWnAl9vi4RsXdm1uVUH6nVSDMj1ILBBEgDMhseMHiBF97gJ/A2f5cHGJMNYjQtqXVOnarKysx9iVgX58HdV6yI3HXUjNhmWVm5L7FXrItfPv/cneEQ4ggXBlCxArhBDpFRYLE38sWx8CwsTA9GpbZ84jQyBOwCoVQg+AFv337AL3/5h0jkEePfwFnNBJFcIJKUBj9KHZb5y2MDP0wJ2qG5u3vAU75g7gUQBa0zNuNwPOJ4OOB0PmO5zrjOZ2nrXhICAYdxwPH+HuNwQCkZ1/MFJWWJ4IBa/RsALaJRGmNUGn5TrY0aDX27/Sl1aoSlB6fFbYsYOlY76lfff4/vf/EL/PuPP+DvPv6EXz9M+O0Pf49//5t/hy9PFyxPF+SvZ0wZeHs4Ikwei6/IDNTMeP78EfP1BeV0Ri0ZLl8RaYFzCR4Vy2VGzhfM6YxhcFJAnwtOp0/48uUJ0T+glqj1JhaUUnE6n/DyckYl4HKeASesP4Dgg6TSPLx/g/sYMP3erzF+9x0Od9/j8OZXePPuP8H93Qe8u3uH79++wT//vQnfv3G4nwBiRqWM4RgQjwR2wAxoZb8KH0fEGOAhkYy8AEu64pqy1IybFzgGhuCRqzJLUJR1IIV3l5QwL1ftanfFdZa6cxaRNap6zhW5inOUuuLHIJIuWipvlpzx8vKCz5++SLR3mkSuoMI5xjAOCNelKfxvygmsRoEViK+1Nuujl4+mDHsnrzdsNo6028rlV/KOVkebiDbyvrnAHYjQ0maxOrWkMg47WdiDAevXOX0btd/b4fQgnKRTGYuoB3HsPUsr3r1NYbol73vnC9gyBUx29GzHlDLYrXXnHJFG+WVmhP26m89eV9mcQgple+dBzMIY4G16Y+HautYK63vLtun1c2/89FHAfR29tkY3gmQ9WGV1YPdzxcyy75k3ex5g67HSZK00xqCWuquVDCSI4T18txf68W0YS98wdIwl5Jx01Vwj6X2zD4n63gLdrAFIfzb6eeydI7uf5ozuotJ2nX4t9vtts9e677V77EGxNn+dQ9k71449+vLFVoewB8jk/FHTj5sfJ0Xde2e7Zwvckkv9OCRNdevMCuiLpshafb2dTDL7rV2va/JC+tuYfuu+60E6qc8oepL1c6SNZzQAxr18ACSIYsCVdF8NIbR16PdBDzr062fnzViCbHvZudbFVUAq3a+GC2A9v8Ss9UUl4l67ObE5MpvlFmhua/UaRNgyFJi5NQ8yVt04ig6Wc+0239MD8vf397i/v8ebN28UmLvg+fm5seoulwvO5zPO5xPCICmvxkbzzrWFIlqZKyCRN9L9lpvDY/dmgTFJ4ZOaWAJceEQO7Uy2VE8ATtevEqE6YVSLw+RwDB7jNGFJC66XBfOcAUhgbBwFENk43jbgzsa2tSS3PQsCjmVpJgFqTFrRqwAgXV2v1ytijQiansYoEgws0lTEa1MIu2Y/Hrve/ky2vdCdoR64q7Wihtx0AHeGZS+/6Bsytd/v/f7f6mqRKVZewJ7zXho6hW7+2A5J9/1B90PNcgZMdjRAUj30wEGCAGpxVGWniPlTcU1XOPIIgRv43ANdl/O1nWVuAMSqZ+Z5buPq7YR9YKLXP3s7Ya87vPctdfZ6vb5m4XXz1dd17GXQ3nfcgAobnSOlcRwB5CPi6HEfAsok92AM2DlnIEngaqIJQ/QYxoAhBKQ8A6wZOk6yoGpd5XmvTw0wsfGVwht7Y57nZr/0cxai3GfWgJAwfjMYpcmIrc24ngMJLKx6fp0DYPQT0IHpxvRa12Nns9j/NR2xpLVLZy/7ZSyupb9vARdjYlYUAyzVIOaqSkoUkwQ+NP3fabWFWnmtuZ5nIb9sxv36vBkzFEwKQsqJavNMxrDr9pBdo5tf22tWq3DdtsaWq7LGjgHeMvvJGcuZwRzB7LV0gdjr/fytn8NmH+zXwlsXevN/24AMgOvBNoC59xG+TUKwebB127IGV1nqfWiBq03d1j241/s+Zh9AAO3gAO+iAM0UQI6FNEYWxP92Hbr/X5tE7B97IM7+b3//HHrILKkX37pm/9izK9r72lP2uutMU8U19LzcWhwbR/+7H9/PAWz2nt5o3z/6+98L8e5G2kEyh1mznltkaXPPQIdkdeyVWsEpA6VqNzVlsLCkHXovYNf1fMEVFxQCnpeLOs4EXxgLe8RxwDJJJxgc75E5w10XDAQsXjYdlgV1XsD1Di4MGMcDhmFCmZMK9AD2DqCqzhvB9UqenBaslNpLBBZl3Qp/Os28Wx2LUhinlzOevr4AcPjw4QNQC2pJWE4zUIF5vuDx6xcc7u4RHBA8IQZCLSwddIhxOb3g5ekJLgBxiBjGQ5tf68p7vswYxiuGacTbt2/xfH7G/NMFXKXo8xgC7o53OB4m5JxxOj8jpzOCk0hAnnOLNujiQ3IZ1Fp3BGanAJzrRJAuB6vC0eggyEm7+SqvjeGIw3DEn/zhL7E8/4S/+Xc/It6P+Ckv+M1f/TW+PD/h5fGEy+MV9ekZ30WPX324xzAxvuYX/P3TV1zmgq8vPyDXE1xaUJYFtSxwJQE1A5yRrgtenp/w/PIIHxgf/57w9PSI0/kF4zTh6+mEwmiKYxxHUPB4eDfiePeA6fALvLl/i7fvPuDu/gH3D+/w/t17vHl4i3A44O0f/ArD21+AwgPmOoLdBGZCcMDDCOQXkvpCjhE9YxgcpgMgzYsZg86SqEiLvjigJlRmTIcjUspwPsBZdD0lpPmKl/MFOTOu14SX0wmXyxkpLViWBVfrjsaMlCTaV2vVemPaDStLwwir7RhoTfMEAMfS8GRZFjw+PiLGiLv7A6L3mJcC5yKGAYhxbnKil0vA6uD3hkvvyHPZGoq9EjL5dSs40q55w2CU80eN3bx5jVawjYgaW7ZF3DtjYONM7OSXGUM5SXR9fb+sZ6+8twxnCV40I5sIcKsM3kfv7Lv2jKT+0YM/e93VxmndGHcOEjGgbiaIHAI5bQhBzbyQm1KHWQ95i0QqO7g5ZgYKYTXymRlU1xRXWWPplOXJt9qAvWEErOlitg96Q6vdHwxk2Aa/eme/15P7n569tRrW2/c4J1F7EKNUOUeFBZCpqpvMqeoBCJvjfi/vmUKF5NRLwWTpJmYOj80pA62brHyQ1Pjapmrcsi/2gMfeee4f+zk0x7oHpeye1u+jBg71AE1v4JrTCawA2mogrka42FMFOfNmz7d1d5ImQ26dA3Pu+znuGVh7p6V/OCcs/spbR5bUnrGusv3ZejW/bnUg1uwGNiUojHq1ZWQ8qzzoMAe0J2h/fQd2wjI1W986bNcqTpXbDuuV7OjXdg9U2Dw1II1oTUe3VFzayh6vn/fkpCbTTqbYHtsDg7dsRwHep1eAQm/T9mfI0u5sL5uzaQzUGGM7gyVJeZSHuzswM+4OBxynCcdpkvpS86xdzc9AmnG9BgR1os3ZGXiEC0HvWdfESxfcILQJcOxTyXLb4ymlJictwBBCwDDId8hnGCULA7eUDCKGDx5BgyYhBLx7eIt5WTDEqwanC8iaHTlS29jO9+orAGhgYBykCyGr/SbLVcBg5LxA0pmcNiezQvurLmqdtktubH07X0NYm2/0Nebs7PTyzH6v7CynKXSrzLHzh0GCDwbOlrQCdqT71AOwWqHGON7v/ZWFvA0INVndBWdW3SFza3NYWUDoPvCjmlyCXvZ9JLWsWYvX22cAiO4rLMHRNk8EZKkwbewiG7edSdOhq1xda8btfcC97gO2Dv5eTsqYX5dw2tcN7K/b62hgbYTYv7YPrvZyYSN7WHQfE0l6fYtxaL05iA2KnFGR9B7El0pZ1jT7K0pJALwyrhlpKQrQubaWW/Fd2/0vfXMQ58BZmEa9HVbBiMPQQL61jmJFyfNm3hpIwnnHHHWvg4Xs4BHVx+d2zR6ce2WzkIBrTpvRXM9z26elZGXAdjY2B+Rcu/mwciYG2KE7A3U3T1L3TY6ZNAgsuk8lu0w+I3X+tsHqWjNqpXa+uQK1nwuOHAAAIABJREFUq6QjLuXavdtKSPX7kIg00/a1HlmBwNXu9hZs6HCVFuj0/flo36KEnDWQtrdzXFhT9/t93s/RzjRo9wgIUCzj1REVi9CtvsYKaOLVbyvBoeJFxmR4iPOI46E1QYoxqm/e2a9hW4u56U9lS3pokLrVmXZtPuQ71/Hdevx/Aui+BVZ9C6i6aXTtfvbX62++loK9cOv/vxeM/XcwM7ArCEntn/13AT0qvV5jff6WAfSte/jWHOw337fmrW1k/WnOpn2nAlXfXFY1RrluI65t/dxay8A5h9ClNVjEi4aAMQ7ItcBXQvCEnAqW0wk+RRwf7vHj558wXQ94oIq7uzt4clIQmAmUq7ZcjSA/AuRR6oKSMubKQGU1wgBwWe1nIkjBSUB7LksHQCoaJXMaPfGY8yyRR/I4nU74zd/+BueUML25x4f3v8D19ITzcwKxtEkvy4ynxy9wzmGaJrx/e4+UJc2BmeFLwfnlGU+PP+H45h5v377FUlenaxxHOCedY59envFhfI/vPryD80CIDvl6xeCdGASFUUvC6fkFL0+PqLViHCNyFhbMMEoXV4ZG+ltvGBVozIA2wGjpFPIqAC1kh6wpVIRcC0qVumEuRoxTxfu3EY8//h1OxwF/8Wd/CbgFf/PpI0ouOH16xKcfn3H6esXv//73eP/+Af4u4lIv+PH8jMfnM3749LdIfEVaFpwvL7hcLpjzjJwSUp5xna+YxoBSC+blCheUoRi+Q/YOH/74l3h4c8Td3R3evH2L9+8/4O7+Hse7B7x//wEhDnhz/xZv3r1HDCNYO+05J93QaphQ3YCXK1AuCbV4gCK4AKdKOA6MECE0csoYQsCRbIZkfzlWIBMeDgVcFqSlAKXi+eUJj4+f8dOnz/j69VnvL+E8X3E6nXGdJf32fD7jer2qkk6YU8aSMoxhUPKailbraiAui6QG11xQPRSkq/BMKFgd3NPpjGl6RhyCKORSEIJHcFuq+bcA/V4O9bKlT5Xqwbn9+/d/7wG19po5sdjJ8N1zUANb6q90DJ/uer2Rux93b+zvO7f28qxnBdyaFynGvnWae+dqbyz3Rtp+TMCWfdeDIr3TtNUfFaUwwBnwATEGWN3ILVOrQZT6fWZ8S5H6nIuwCBjgWltdlLWGlwRdSCNOBtQxszDvdoZPH/HeB7f6/zvnbjpYjfW00797oGZjmBtLWKO4/WfJEYilg5+sC4PgUBTciMNaB6hnVfbft2dy9cCZpWc5J4DWNE1SO/J63az3HgwhuFd7tAc2ewe5d1I3Dl+XbtuPa2UcbG2WvYPWz2GfIra///5s9GfeOYJ1qK11/Wy/hlt2gpgPpVjAaLtHzKG1eetr0fWOoznZtEuFAmSXCyChQAttwd72W8de2aLjvLlH53wDLmSvh+b41yoF5USXWNphBZOCnljZKdJQo5tvA2UrkLF1iPsUaxvHrbWwMSTNULD1IxLWBDpH3pq7oHP8BCCHMIm6Ndifw54NZ/ZcfwZt7/fBnD64wMzNATF5Ms+zpIgGef5yuSCl1DrAmp1o7BtrDGHF6e/u7jAvCy7zjKfnJ1yTvPdyLS2wIIBaxPPTi6S7qiMZgqSwxhgltdd7oNuzPVs1pYyU5nYOYwwYxtgKmzsXQKNDwYykjDQu0LQ4CbZ++foo+9IRxmlCjMIwDWGA9w6l5gaC7MGYlh6JVSY2ecdSioCqdNAGVPaMBwyD2MNyjYwlL7hcL7jOszaRALyntva93unX2f5e0/dWsMz2dir11f6wM+i9rFdKCfPlKvZKB/JXFhb/fr/0c2Bzc1OWAa3hTw8sOefgtGj8OI5iK5W82eN2rbvhIHMK2pwNue/OrlC2sIa6URnwLAX3Ubf18no5MwxDk1/C2tpmEVhgaK9z+nm/5Ye29eC8Oft2lq0+8L6bay9LZY+n13JxY2O8Bu3sfQVrWvCeIWQPG39v01znGZfrBeCKGEVfS/dhB65OAhpQNh2bfunHZ6AMaXDS1m5rg0l2QXi1rqKrCgCHWlK319S1JQJX+QkhtuvmzGjFDNSf7DPVSQGAPZBkdsUq14Xl6kj8RHvd1sXe65xDSqnNaW9L2jrGIDZ9Y1fowEzH2G9bn2w13ZwwwIjEXwTTKzlQSm4AnayllOnqHz0DsxbDOlROkUOuGWiB3S1LVc627SmvPrmBbXJLgkt0NndJej8yV8GvoPweKzHbuX/0DV9qzXC8socZr8FumVJhpMm8VQU9C0AVIbzGWHr5Ik10VplHRI0x571HHI8b/UbOtYZOzAwft+fXfnKtQK2YwgDuShFY4KTXwz/3+J0But4Qsd+9kXnLMAdtBYr93x63jI7+Rm85cHtl8K0H0ZrcsXVAWZ2O3qhSk422E0b6Si/YTNj8HLj2ah5uvHbLwe4dRUAiC66flyoRnoramA399ee0wFepy+Y1PUjS7lT4AFgtUeki6bwYMzlLXQoiQhgiiAn3hyNQGXXJSJcrCoAhDpgogE8zFjCePn/Cv/jDP8Jf/Bf/Nf6fh7/F09ev4GvC/HyBe7jgWhIO0xEhRJzTC0KMGHyQzlpWNLEAVoy+GZw1g+BRSQ8mFG0mD2JxHL13DaWsteLl5YTqfsR9XnC8n/Dh3XvcDw4XVcKD96C6gGrCNBxxnEa8f/sGnkToHrzDFAacT894fH7E+P13mzX77sN3KEnSOV7OJ3z8+APe/uIdjscj3r59izQOQM7IaUGaz3j+/Bm1FEQvlOWaF6kpExxqWjQFQfYed+ueM4OxAK5CS/ut5DovdTdikDoAwzRimo4tncoFj+MUcT+M+O0Pf43jmz/AH/3yzzB//IT/8+tv8On5EfNPPyGfLng6vWAGcKGKH56+4stf/4Cv8xXxfERNAb99OaEEB9IoA4MQ40NLbzmMIw7HI+4e5O+7uzs8vHnAu7ff4e4+4sN7h/HAGEetFzMc4H1sxikgXXvOrCAjV5RchTlbGTF5MDsUJiBEmQASyntFQeIFhUaMxwFvphEHEoHmAUQ4eJb/a4YTpGioR87A9ZLw9PiMzx8/49OnR3z5+ozT+Yznl2ecTifMc8LL8wnLklvHuqTphWz1jVA15XBVNmbsS9csSQ2Qbm61AVYERvARuUp79Zozzi8nhOBwOAqLblkWkA+YphHDMDQwwYoKiwO11tECtrVhxODMLa3qllzay/S90Sf1aVYWlYgN2jhKJqfaGYUqbZJUa+c6owVbmfetx+pcrFFhu0Zv6PZy8xZQ5zU1oLE+bgR8zNHag0726J0ek7e9It47vPaZELzWTyHEVoMJTUEb0LFV3GpkWYqD6xzCWhF9QIgR1O23EALGYQJ5QqkVixqMRITgw44x/prl1zta5hC0eYYYcbbP7B7NWO31T8/oMhDCWNHOS2fGUiuu8xXXlECOWsDD0gx90Lqc6iQNwwAQNSPYjCczku2e+nWz75c1dbC0cxu7nSO7Z0mrWR3e3sE9TEcwSxpS7xTb+XLONafW9uwtMK7fN7WuTVw2jICbDAzXAnT9PdrYbbyXy2VzHvprVa5rlzFsnWS7pv0uhbWotjCBnVsZGra+dv6MeRMasLKuS5M3ZGyZtf4WkTS/CdGDKDewqpa1kLPE7VjqzijIVmsnk/T7bQy9w7r+BFQYm1QdQiJ46uUko1Y5QzHEnW2JFiDd22rrfMk6D8MggakbwHXQtK2kjLPuMALOIeucmTxIKWEaRwTnsOTcusHfAgX6+lT7/dsDKbUaE8IYe2s6X4yWGmpyaXsP83xt8/L8/KQstfV+meU9/XcOQ8QwDjg+3OHhzT2u12vX+VVqqp6fX8AMTNOhzeE0HRBDwRI8QswYo4d31BqPWQDDUrVkL0x63bPopcvqxIYYMUwHgAjT8ShBL+uWmgtSFh1pcxZDxBgnjOOEECIIjFKWBkIej8d1j+syzvPc/t9YFpCsgeAjjuOA5+cXnE5n3evU1t/kpQ+T2r/QeqWM1nnVOby8vLS9t5fFy7Js5Ewv651zmOLQaoCllMGc4Z1DDNboR+pvW3qgpBEvmJeL6Cs+tjW37+jLZNiZ7GVY09EstoDJq1tp18KEdA347euzmfPvnKTLV6zdfCVQo+z7ChSrN87U5tjACpmrbb05A+S865nZUi+23/81L6/kstRhIzCvOjhGtVXtHnnVIyYzZA3S5hz3vqVza6mJFnzrzrPpq2Z3dbJ8r9MrKwvLDRLA6wC8/rHXJ9tgZQHXK2ouWJYrAMC7QWQIV62raQWKtiU/KKp8K0nvc7UjBLuQ7z0cDq98/35/HKYH3RMLljnheklqJ+med9Ca5GsAWBWIUW6wkmwaJNH+NiazNctpHzGmnd6PgTS2hqbDL5dLC3D08++cgw8DLEWXnJNSBXp/3pr5lU5foNPLJibIo7J2NWernbsGA+wslGKpxrHZAAChlNwAp1yF+WgmYeUK5/syHCum0IOBvf4nWK1B3SMtmGy25Z5tf7t2tO3lknfAfSurY5WpGC2dmYWsIu/zCpBq2ZKmpzu/ploJr+2e6v2cZVk2Z6EHyGOMqFhTsiXLEFL33q+Bb+89mNAaMdk+Trngy/NXoNS2b3q71ezFn3v8R6e42sLdcpLa766F7N4ZtP/vncf++Z4idgvg+90evPubXj2/CgjavId379l//62x7B21/b31G+QW2LhxoHJGJRbGxI356AUqgFZseeEEAhDjIMXDIYqsj1RADzbQIfYsa+YbUJThGaBS4SDU8hgC7iiiEnAOjHEI+OXbD/jnv/8HeJqvoDEiP53BKaMWh+hHPDy8x9s375HOC2pJUoupVgRvzSzknx5gYDWghUmm71IKsWJacKzNIliE37JcUZ6BS00Ynh0OAaCyIAQHTx6cCZ8/f8IPHz+CCTg8SCfRVBJqzki14msuoCVj5gL38ojsHP61dnF9fnoWwy4J1fllPuHL8xPiFFFqQk0J4AqqFWWZwUnqmlXqnCdjv9ged+shjzEiDgPi4OED4IaKOADTeIdpmjAdjzgcDhg0kv3u3XsQSRTndDnj6elJnTXGQEdEPuLtd2/xhgjzp5/w6esP+Pz4CfM/fMbTD0/4cinwx3d4iSOW5xOelgs4EL47RkzxLf70T/8zjG/f4d37d3jz7h0e3r7Bw8Nb3N0/4Hi8w/fff0CMHmEQP8I7IARgGIAhyqZzGjSqBVgWYJ6By6yso4oWYWtMHQhI4UG4pKwkWClQS4ERHBAdI1LFu/sJ76aI4wAMYESWzrcOUreQKkBM7Rxzqbi8nPH50yc8Pz/ib//uN/jp8yd8+vwZTy9fcT5f8XJ5weV8RdLadGVZHeqsncKgETqnTikANToAorVgdk5d8VNoncAqjicBOByOGkWUSHLwUSn0BSlXYQfybQDqloPdy5Mq2u1nZdUtmbSXLaKUycp4tO9uQBU0Cki3rrUaXftrf0uObl9bATRhNK1r2RsRbY6da2NxTut6dCziHhDp9U7/e6+PvqWj7Hq+U9RbZWtG+Kor2daf1y6sK1Dt1PBUI2fHMtuMmbsgTq1AEcfPouX9XBiz0d7bR9ptbm8ZyAZw2tj7FBozLvomQ2bk23tCCCgKoLhcWgChgZp+ZbdVhRFFrku9xjbbvEb/e6aI7cEeFOkBJDFcC2rHgDaQp0/lWnXoCoCsxqWsTc9y2M+fzdeepWRjsu/bO1gG1O3f388xd//vgbfeEf45Jh6tMdJ2fqzOqq13r3P369+zFW2+DJi0cRhAcNN+2Tm2qwFclSmtLJOcpd5WBz6VouAcnO7RbbMYAzBrt+cZKxONuUr3UPCaZqsOxv4hDLt9DTF5pZdNe5ak/d7X892/ZuOrtE1hM+d9v5dYbR77/N557ue5d6BsnfZMmd4m7T8rANy8udZ+Zmze+71pe8OAlT17x8YdwJi0c2NOUvJhvs54OZ/w8vKC63XG6XQCAC0QX6SBk5MUvDF4jHFADCtT1Zw3aw7CahvmvI7dztWyFFzmjBADxnEAQRs2ELeggJ3tnKV2LLHYp8Ev8j0k82BMnyYP9Tw0hg1XzPPSzkMPtBwOwppbloScBFCPysi4Xq/q/A+I0SNnAciuV2AuM+b5gmGYWuDB9k9/bveBOdsHzADqdn/INYCcVpaMfgCApU4HgCQrwAClDfB2Y+/2wHz76UgP3O3ndXxKzHBSw6//Dttv5+tFSAKVkbSJgN2Hcx7w4qdRraianpmzNKirBKSa4OA353sj93mfwt+5xMwCRPVj7Zxy2/8G2Ni62x6clwVYJI2vr2/dX6vXLf06mt5Y6xu/DrTaeq3D5facJ00FhhAamOrmfa9siu7RLDcixHFCCQk5c0uhZIbIbGZI840e+GKUmlBm/YsI1a+y2zvT4dL4wBiC/V6S/wvLkjU9uVbx86QmpwUdNI0Zoh+8l0YuksIu58UAGNm3rLLjdSbKRv4pQCdA31ZX2r63s3070Kr7i0i7E0O6itfago9q8WDtvGrAnNfGCGIHlszwDvDDNkBk7PGN7QZs9ADK6ruYLdOvVX/fNg+279Zz5mF6QD7T27FypmxvVytRUrRuIEla7Lb0xC4dHH0A0Ikf6a2xizQ+3D9WW7q24F2/j/v9tKQFfRdZm+veZul1ss2FyPKEWs/wMeI4TRimCdM0YRyFNOFiaPJxo5vbGDyu1wXpOuN8vuByOWNZkpYwsAYgHq8xqvXxT6pBtzcoewPdnLdbBk1v9PWv2f+bEmopP6/ZYvvP9a8x84q1bW7eDiC3l3rDcr1m9396beDcetxyOG8ZX8DWwb11L/1zUjB7jQWYw9ULjfa9hobr96XrVZD4ugWCnHMg7fhXuMIVqY/iiUDVg4kQmHF9meEZCFlZHYOHhxZf9wQcRAh6eHBiXHPB1+sV9XzBMB2QX07A3YghHnA8vsE0veB6fgEhA0Qr4tw5eJuDU9AiQZLgKh1ZPCR1kclJ0X84VAZSrbiWhHp9AbmCu9GDaoFjJworE67LgiUXFGLUT58kJXeQOiicEmrKoFxRHLAsF3BXhOb56QnE2vlMHYjL5YLLcpECkMxwxPAgxHFAPETpIuY9vBcWjfMBYIdKDnEYtPgly/wHh3EcBKyJE4bpAc6PzdgjaOSkeKQL8LePs9gQ7JHKiFo/iFAMDiEMmI4PyN7j6Yd/QOIZc/mC05evmL+cwDXi13/+F/ij//Iv8ce//lMc399jeu/w3YcH/N7DA+6Pb0DDPWiaMB0Iwyh1BsSdkVN1uWqUQ8GpkoByAS7PwEth1CZb7bwLUJezR60epVGuu0LB3mEMBIoErg6se4WoIBBjcsAUKwZfcQgFAwGBrey3gwcUVJYoFGdGmRdczi94enrCx59+wG//4R/w+fETPn36hKfTE55PL3i5nHC9StrurMBDXjQ9LXfUd5LjxADKklFZ6qRZlTuJ2pRW0LpW6dLnNJLHVaKZjghv3rzBOA4aFRN5kFJCzYxSK5Cz1obqgOsOiDAZszc4mkGuhsBexvVyav+zeV5ZNEQid6zmU/su+keuRet4m/ym1zJXnGu8ei6EoAZ0Jw/bjiKAnRZbJV0DMfbdhgm9Km8DGPox3zJQ94/93Nhjz0jrZXqtWjuTgVq66CNDmNBcldmpXaIgdU9IjcOKDb6q19/+vTo9Wv+QJQoLHVMttTEee6fcHKH+Hnqw055nSB3Y3uG3e92n191y8O2vKodCASdlb8SwsiV0XcnUNknaTH+P+/XoWQb9ehjgWGsVcRLXGkxiEDkNHDKyMSppdd6ke50CkzouM8x78KOfS2CbOrp1NGgzZoua2r33zuKrfcga5e4Amt4+6u2L/fwArOdA0k1Y5YF3IiftJEmwztLBrY7bei4ctgDiLebkBiDv9kApIhtfp6JvGyzUIiUbjInAzJiXWSQqQcpsqAzMKlPHccQQo1bBMKNf5XKVemWOJEWUO7DNwGEiYe3VyqgKRlh3PEnhUTlmZ6Gd69f1n25FwYlI7EuQ1Lf1XovZQ8AIoGUNWAc/MIsNpjKCK6OgbORMD3javuzPQX+ObwELPdvK1nMPfG/OnBY1N6eDS0WFNHLJSAKmq+0WY0QM4rBmEAoLsOXJA2HAYTqiHJOUvLh/wPU643K5Ss266xWn52d4TW8dhgFcgtRR7Zxg2ze2p6oy2F1Lb15BkFIJaZFAIDGh5iodKr0FGRxCcAjB6lTZD2NJGQ6MYRAHqpQEor5GVWx73AcPrsLyylmY8t4HjEMAVfm7VgLRFTmdhfGnrMkYo9jT2faWnPdpmuCdx+V0AXNBSnsQVK4p6yStsGR/lm7Ng7L3xZlewaeKmitqLrC+Te10kswROWGUXufXTFULNNh+NHZIH0SxucldjdjmmIOB0gUBSzEkdHuW2FLtV53JhNYNXubDGD2u2SNt/+6w+Ff2jQaCet/UZJkNwHVyqwcX7NHqwNLqX9m8FBaWqxFVbgUy9n5jr18taG9AXZ+GuWe+vbIDdY4cOXhHYLdl1cJKf7gtgNtklrwKr91vCYxC1gitv9YKmErW1spWLCXBhUF8Kxa7uFBucst0+H4umhwiBlFQ2ShjcRq8FOoWa+aXyH4iYyF6DIOm3na6Sr5jXct+Xff2DTkB/tfYzmtw1mpyppQaELjVldDyO1pTlDysfJODdovXdSmW2slFUlFtT4BhjLkVSDK73K0AbkujNXu7gnkFDdc92uEwvN17PUC3BobMLwfADqV2upZ1hB0AJuxXtau8B4ql1W+DwC3o6vrz1bNJCYBHUdY92DV/AlhL1BjjdbWDVuY/ETDQhFrzbh5WBp73oQGK/RkykJLIo+aMy0nKHJ21jMM0TQjKmmzBI025N38vxojv3n/A5XSS1PBS2u9lTljSFd5F/JObROyBsH/MobHFSrsufD/33lvPsTmGeyfvd3p866bXrW+/9k6sKen+cctB+7l56Dej/X1LELV77X7aNdSBc5BIhD3kwGhdqo6lOI5ji7oDUEq7MlDE2kdjgOv6mMRqs+IIcZ7ho2xcTwFBp9IXjeygIjkPmgZwrfjp0yf8X//2r/BXH/8Dvs5n3HuHEAecThfhvJSC4CRlyBPBVUmnTZcrhKDcKae2vyQtkLXoZoUoPAAIEEM21LVzLRyhEOTHyWF3DiiJBRhiMSqmY8RdHOBixGlZ4GOAD9KtjlOG44rBebjgMUdhpdjj3bs3CE46jjIABIdryWCqapx6OBbwZYoBJV3gCfAuAC6ASIoDy6YTyhkrQ6CAQQ6o3iNTQOWILz8lSTGLhBhkqcShkXV9eHiQ9vJEiB4Ig3ReijHARQdExjxfkJ5OKJzwkl7w42+/4IHv8Z//+b/C//K//xv8s3/1L/H+eynE6z2AInMW1GpLBUiJcb4CqWLtcMpiHInCFuCN9XdagCVX5Co1Eag7bugMYZXbAJyeQ4arQK4Aqu5tGuCQ4L0y5wIQg8PoGaMfMEaHCYSBgIHR2J+cK66nM87Pz/j8+RM+fvyIj58ElPv85ROeTs84X6Wm3nVRYG5esOQZubDWq1GhrmQ0m3/RFFiLMfttDbNSsqbO1HZ+CWIsMIDgI2L0OBzvMA5rDY213oj8nVNBGLYdQntj0Ay0W48NmLUzCm8FC/ZgAtFqvO5l7saQJWw+swet0F1Dbu21HMRuXM1IdaHJ4r2jaY9ezu7lpxkBZnzu588+Z/PQz0c/P/17+s/2EdP+WnrX+t0MImU7OSs+uy2b0AwKt+4xiyGRvt5y3Lv7bvfLFYx+vlVO5yIGegem9UamjX/PSjMAL6e8govd9/UGXO+Q9QyTHvCyvWT3Cr8yyVgGK4wWQmNWNYORt6U09izR/gz0+8SAcWz25GqEMa/sEO9XgG773QWEG8BZt7dsDvZ7wQDyPureHLdu/qy4PRFtgBbmxhV95UDsAfv+vtc9IPXn/I2zizYX27XhDsgSo3j9f8+a6++7X4d+DO1eiNbUf5icMDChO3u0TQn2PoCrBkCwMvj6/caMttby/eic1gDZapaOVjfjEwCnoOTa9Jhcw7eov9N56lkue5ZEDz7esmXl/K5sh4IViG7y1pgUujYbJ2Unq3ow1FLGzEkDsJsfbp2z93umZ6X26Uz9GjFXlF3drra3dS6u12ubh3Ec296A3mdNWltMrxGDgFJ3x6PYDrng8ekJX79+lVRyFgc8pYSyJFSfkGNATCuDbRgGHA6SGmvAkDlbznVymL0EEJXpMV8XEFV4ZdTZCgUNaFp9UHG4Uwu+VXXW5lnq3fkQEMLQ9p7XFEdxmGW+ci7wjjB4UtZEBVAwjBHkCEuSGrXee22SwICmw3nvEQePYQg4jAecTiecTqfG2FmbYKz6rZc7qx6WFO+SGcx1bbrCkmkjwZEse7Tp59WBt/3UfIhab+rQfu/3DZOYuTUJ2IDM8omt/L/h1tlai81bEbKBRVppjGy4DqxAHZyToKaXGoeOSO9t22227fG6reEG9AC1AADOuQ1zz0AZk9kGpNn8M0tdx6Bpk8agu2Xj9HNt/+/ntq8hZqUl+jTgW3qYWc4VMyMMAeiCLmtAS+6vndXKWL3A1fhIKTW218qWYxC2bG69CKxWmSyrNN7rdZ/No8mevUwmoNUddq7Auz4gEaRerUwgoHJCABjJTFgZmld473AYx35HtX13y6Zd7wMN2Cv5No7Q6zmzl4IPAMlzFqDPRRoCOpJ0/dCtle0l+UrdG1QVjJZ1WGu8Ubc+2MxlbxM0Oc5BzpWmgBKtn9/4EB1L3GzPVzhE0/9A1zxXlgCkenzVWdYow67X60t7NHnwDcKR+VvyWmhd3Nfr9YDlOsb1bMv+Foa36fd9oLlvUiX6rn845zDGcbXZ5oQ8Jyzzgvl6RTDijPeI3sNZ7boYEJw0VRmnAVHJUMe7SQJRp0kZ5EHP8bcxrf8oBt23HKSeEfct8Oofe35zcNQXttf3zuUtRXHrs9snsb5guZK4VUtvu0H7x94hu/n9WFHevWPZI9qvhJxvEjqKAAAgAElEQVQ+HAR1d26NZ6zOsB5Ev20ZHmKEi0GVitQQksheQapSGL909zXPc2NwwZwvLeqwVEkTCFSR9DWfC3guSBSwOMLJS32C/+PjBf/2//5r/HV6wuPTVzh3wPN8Acd78FUonQBwPB5xPIzCwasJeCjwnho1GeyQG6WcsCyAtocRFh1LymMgAeZi1fo6gudphycIO84BlSXi68kjkERyuTIKE9g53JGknwrzqYBKBRXt/kmMw9GhX5Xv3r9HIGn/zkS45AW8zKhgjFqcGFzgKuCHgDhoNK0SMkMi9gwwCVgXnDLogtdUR98OvHMR3z28RfBHDHHUmi9iBHDV+g/VaoxVsIKe12XBeb6goqCEhMAF7uWM0/Mz/v75BefzAb/+l/8t/vX/9L/hl3/8p0D0+OGRkTNwdAKypTpjmAbMZyAtFfOyINcCeBJA0wcweXz9+hU5V2ExwSMgAHCoGVgqg4YB7E0JaECTbSOLQ0WOdf0FHIZjVM/IjuC9BFYdAjwxQmBE7zA4QgRa56LiJWV4ZuB0ZpyennB+fsTXjz/g+fMjPn76CT/99BMen74K43G+Yk4Jz8/PyDUjl4w5zQqqJXX0KqrV/1Ajn3Sj1Q40ktclqmUutRhRRZWrVbaVU+0cI4SIaRwwhojgAowavioQOY+lVASsyqdnC+3lYP9owAXtna5vR233rznnWoCgOekm9xRok58OXHfGslPF28Vi9ctufn+7Vnc/Nq/7os23lHn/2BgE3nX1i/DqGn3Kmo3lW/ppM979OF8Z/irnbS13n7f1tFQs+7vVo9ztrx5BqXVtFtG+FxYZNmCpgrOwJ78VtTfjcMOYu2GY9YyA/mfP+OrTLRvw1+a0Gy8RyG2BhsomHyw1F+AqHeioA7j6NJLeIO3r8vRjL509Isw1AUt7QEnf3e5nD3zZnPfz19s6fZpzn/5ZSkElQqRtGm4/fmMC9a/343KG2AKvxrxfE/t8/3ytbP3eu/sWmUvOt0LYrHvVOUsNV4eulFa7qB/ffj72Y7Hn5L6E5VqqsXg8wCQpaA3klxoypTAulxkGnlUUsJNi8AayWNfalBKuF6mTtYIGwoayZgPQ2ksEXuUrhFFvjq6IZq9nx0qBKaAN/TythrytQ88W6uVQz25Bd3blXOoPqbZgnW8vGQqEffMOSXfqz2oPgBkTc9HUvz2IxgpeeLeCcLVW5JIVtLEi63q9IvJH7heqg7Y27K2gsrFCrc6cnYngAxx5VRiqHUl/q0qMweP92wc83B0aCPb08oLHx0ecLlex3Vp6K+DDWrjdwBtZexuP03Mu+88crJwzUhHWJEoF5yI1MetV9ssgtZoICho4p7VU7drm/Du4XJB8aWtvzAhbTzBQcsWMBHaMnBNqFaB2GCLiEBG1LlwpGT4EDENECCOAtZurI4fD4diAmMvl0oAZW88eJO/BOsnWYKScdK11bZUxJ/mKOmey4UTUbBrrrSnxBkrZb9sXh8OhybF+HG1usO6bBsCvu6GBBJviEJ1eaymEriJkqXnpvJcoLm9JG2z7vpOVdiVgl21kerq3X7r3bt+HxtSR8a01wQCpPWj1VA1UED1HGMaxnWEbQw8m7O95/7DU2Vvs6x4w7e0e+56mR1ZIVNln1k2UFUATFnE3GKCy+oosDGAnJUOYAXYA+/U7ZR8noAJcspr3K4jiURGc+Eyktg1qbqu+mjestoCUAyDySG4LQBqrS4DULkUbpGC8pVoCOa8Bqh646W1AY5zu9ReU+VaSBehf2w293jN5I5lODlxFBuQi8+BJiSNO0q3Jlwa6AizlHBxELxOBnHVnlUBrraKzbexmCwkw3MttnQ+WuabCSPOMEMTnYa5tz0P3QA/Q7c/H1qZ9bfcB3ABSWSfBLCqrnWNn84Zt6ZxDLWvmnL3c26XGSuvtMhn4Wi9OPm9A/M5Wzeu5tnRds40EkLP6xEApa71+2W+yPmQscrNt9HxwqVhSRgVjxgrE+xgxDZIZVVyE9xFv3jzg7ds3SCmJD3q5YFkWPD4+/qzP8U9Kcb3lrPROzr52iz3fA1S/6/XtO/aP/XVWYS2Uz5/7ig3Q1hlS9tpKNL09nt91zLTbpPv77++rKTJIGqfiuypYATijy1KLvrfPBq8/Em30bhDGDhgjbw8JE3Aox3VMeD2/OQs7qHBFXhJcEoDvVDIuteLxywXeOfzd9YxaCn4aKypJDbgvzy+4P9yhXJOAHpkRfYQjAVvADiUUREcIWlC0VoAUoCssdchAQVJAiOEU4R4IGIgwBSdU7ZzFmCegOkZxQAaD3IhcHRyT0nlJGzAIuJlrFhXhCN6P8JHhK8PljMpJhe46H/f3R3j2yAzkUvDmMGEoCUxQ1FwjaiyGZPAO8ACRR9VGCOQCyE/wYUCMA4RJJ0aHc04KuQHyPCR1ApWQOOGqXUGXeUFOSSL9kBpUpWYUrV+S84xcFzyeP8MTQC9XXM+M6c0f4S/+/L/DX/4P/zP+8L/6Swz3Aecz4+lSgEJI1aFkxou7wg8ZWDw4kTQzYEblDHa5YWwMbt2UBAyQOYbCMpfLBUwrg0B+HLy0VkXOsxahJ8To4YOCtaqsQpR6VAMII5Gkt3pZ/0gAJWDJwFcwylwwn55wevyMx08/4uXxE06Pn3E+PePr4xOenp+bULwmiW5drhcpwFprY7yBSbv0sOJkBphYqmVtAJ0JdtMszJLqWooVkl6d/FU+eAHejUmJjr2FDnSoDhlFGRjulbI0p2Mva/rfezCsl1F2jd5Y3AM53lED+frX4EiL3u6+x61AW2VtcIMt6LWXed+SqcxWQ2v93j2Y8a1HA52AVwb4rf9vDJvdtfcg3i15DnRyu7uOsHeklonodGFlEu3X05hMHSuC9XMyUAGK1EhA2TPH1ns3A4KxBY9uzU8PwPV7wh7isFIzwk1vWdFwS7vZz59du5aCXCvIS1kEaYpD4lip48HMrUOtRUlr1eYpuod6u6IHSPYA3T7QZc1KVgNwCyzZ5+T1NVWiGYhMG4DuFkDcM8M2rECsAMqajtd1Tt81h9isn13fW7rlNq3J3rePwtvzsicIxBVWhJbwGoC2eQZRS3FlFlDPnHaHlZWzn+PeWN/bgkTapESZK32Nqqp7wzmp4eSdBwENbCqa8grHrat3D9T359f2r8zByhJhrnDKtLfOawagGFAlY7V7czJRWB0+S6+/Vb+pP3+3Xmt70EAUTSVjixzTurcMJDUmLVRWmPzbO4W9c79nEPT7kWwdgVfj6sfXf0dj4gUPQt2s6/7Rs+8aCKas1BAChjAgOgEAnfctVtWABRLwNTiPMHhUbT5hzITz6Yy8rGl9KSXtrH7B6XRqwAggAIrZw845AQdRsaRZbE6vHXshKVgWAGCumOuCOS0gcvBOGvHEYUDwHp4KnB+6Lrcix6yMBXSOWZnKluYbQgQRA2XBMIwgcmoXFAXDPaZpaulpYreJ42lAWmXG6XSCcw739/cAgOfnZ5zP0hBjHMf2fC8D2j6sDEcRFCT1VRwiZfVqkXpyBiRze321I1omZDvT9mNy3wDzvjmP2SXeeYTRbz6rJ6vVYG4yE1u9aoC6nete1q8dQlc7gVmuWbJ19xXbaaDYAsR7P5HIgmg9gz60/cxcUPMuiNbNhe1jayJmqW/OOSwpYb4uCCE2wHgP0vU2WC9f7fuYJUXWivzb/ZstZOucUmqdl/vADwAU3tpcGzlCQmCA2TRN9hMqFJDwNueaOdTZxDanzjksS0WtUr/RQBC9282c74NpfcChX3v9CxUrEL6+bwVwQgz4drYccLlY+qumpjva2EVWo3YD6gjUKzu1rOvS/9ijz2zp18f2tpWWMmCy1XUsyl4O0sgMREpQIK3JqHXbCiFT3toNtDZTEXv4G/qpAuOkMlXL6JSyagUy+xJbnOSWjmv3TJBxYX2PBR3tbPYsVNdsotdrs7er5Xu2tbSDe23vrzYzYA2DsGNkbc4SqAUd7R2MXlerz7qTD1K3fm0IBLWrScG5QqXd/9LViiXvcG2dygOmacLd3R2mccIwjpgOAW8Ue3n/3cPP+jK/W4pr9/+GR+6Mvd5x2Rtr9vtbRsLPOZGbcXTX6j+3VwBt0P84nqYPcQbAq3HzrTH2933rfm/9v2cW9r9NEdxyGIlIi9ybwEMD6czp71kLAEBRlQtIQISqxZV10/T53ptpssiEc23OmBnDMIF9wIKKuiSMc0VgwuKAE2cEypjigIckFNTDwDhdzqCvV5TqcTpfFAE3IezhqIK4tANbIJsdRTrMWC4+kwe7CPIB8GIsOtZ0MQcEr92UqrRTrmCps+AAiXh6wE+oqaIm+TIPDwoeIUT4aRAA0Dk4Lx3eJH5K8LXCIQN+hnOrsPjw7j0Ah8JALhXD8Q6FGMWxdNyVxW51e67pAnIO3o+ocFpTLcCFES5EpMTILCBXzgWF0+qIoSKlC2pJsM40pB0JS0ooKWO+nMEshlfJC/JyRi5Jo1gZYfDw5BH9Ae9++c/wJ7/+H/Hf/Pf/K3755/8pnoLHy29OKMsXkGeM4Q7X5YCZHV4OI+ZLxVQcQvWAC4CDFmeVOilMkiLNasU5aG0aoP18dziAvDrAROt5ZGFHxNFL+u5AiJHgA8F5ZXJ4RogkdYSYESowFCBkwFdI+kwBLhk4nZ7w/Pkjnr/+iNPzJ5yffsL59IiXr0+4XM64XK+4zjPSIka1GVRmk1Y1nLkKqOLJgXnZwfMqu8jYSnrOUJoVW2sR5VmtCQYr0KeRJ0jUJueMhQhPT0+YphFxCHCdwVdLZ3C8MipXmbKXpXvHkNpYb4A435A5/XOOXAM57Pqkf5uB17/fatQ1+UZbBt0tJ97m1LRMC0To5+3RMwZWJ7wHCKG7bnUuctmCR3tw0M5aX8/vll7r3/+PsfbWzxrwI2m6sq4i97wPm258fb21HqDzPmjkmZu3xLX2twmQpu8VNCNE2NOa3obX+sfGuXHmdzrPHJA9wLp/T3/v9mggmqY4GvjYZqZyY7eZ8erVIBXwRI0rvb4xDW/p+f3f/Rz6EOSnsUxegx32MAegr6fktLgx9ffQFZffgkPb7/fei0HHr4H0/TnuAcDeCZQ9/rrz8P4at+0VYO24puwsjTTbOjQQ0sbN29q/TiOce3CoMVS7Mdh9G8AjQBNvDP9bQGcDnLCVReaw208IflOLyTmnrBXfgZdi4EuKUYIjYIoRBCf7C6wd7m1eKkqR9CPmLoIPrRGpc1a0ho3d5+rMv67ntp2bjjVEq4MmCRtdWrXVoFMgq+a1a13PyrT91gPB9nfvxLazq/GBW8wPq6nY76VeJsseplcOMBFDDFM00J01RYchthizFOkvqWBBQnBWo4cAWtlS3it70PZOFWD2eJgwDhHpzdvWgXRZltYNNqWlpZBZB2PvXXNEreNipAEo4tSGqLWGvQd5qT8JADEGCKlOx8AZlSBrwQ7MWUqXOKtbpHvTZSBJfVrbFyuwZM6trK2AV0472GpQw7F2rp1wuV6wzApMoyLEgGkaEHzArE0nQgitiywzNzum1SembZCk7UFYGnbUccm+iE47wpr70OzOHrAAlpQ3e8PAn96fs9RLA5Fsv1auakute7XtL14DLRKEei3H1s8JKEDuBjhNDDK5ji17ldg19lp/Nmx+gObydfItrDK4EpaS27mxs7+RW0QteGVsN9MjJRdh8nb3A+CVPujlfq9L7DWbs73NY5/pm33016m1Sg3tIj4J1wq2+yGNgtfOZtdGgSL7qp77CAFcen3FIAhJhDwaQJuLAVu97FZGWSv3sgKrAMT3g2UQGGhaFXJZmwFY8IRIn4ftvf337VIdIcEq0U1yJkspDbDq9VcDbdROl0G4DQBi19/v6T6I2eyqHghniN+jOmJO0pzncBztwtoQUeSO6G4v2UM+wvtVl1ompozDGM4rWLUC24DDsNn/Tv04yDtBpiSwyi8D/9bu7AzmrLaQb7b2rb1YjVlKq81s77HSFpuHBaFg9Y7lPkx3FmV1O7eVD6xCQ57i7t63ALKVhtF4N6xmpScP71amufgzAUNXsxjMUueWJZsp6/oVSJMUp/iLNUypyrngnJGXhBwjck0tmGI/fdDce4efA6p+NwadbQy0eddF2L2vObDyQkm5M8vRorK8+Ygh7erAMyuyy+tnNv/eGJ45hpv3UuvAhLWPaTeOf+xaHWK7jnDj6TZhbxNBu+fNuFXjd+8Y9GyQ3rDr5wasIFazHp3W5pOUUFCX4hqsVfT6wyYktQaS0YwruNVR8CoMfKunIh6g8wMoSAth+IjJwBYHMBVM3mGIEXduhIsBkROWf/gtTukrUiHchYARA0KUlE14D9J0zAqHcSDYmZWIZoWrVepIkMfBj4CPLRLBXEBgjN5hCB68zOBSgEGKh/rowEGgosyEVEccKknyZQhwFFBBUq8iaNFmM5xLBlIClYohekRPcIFReW7zW8oiChzSiOH88ozqHLIWKy21Su65KoiECvIAYcZSKpY5YU6SXgInTR8Ki+LIJSGVJEBRKcLg4xkM7Q7Itp8kpaJmEVpmMDnnEA4jxnDEOAwIwwAfPIbxiF/+6k/wq1/9GX7x7s/x8Ms/wpkdTs+MB8dAYsTRYc4ZX798RYZHejfhUhMKIOm+DiASAcWoAFWtfScGuzhXylqgIik1jkDlBR5AdAExRIzRK0NO6rX4ICytECBdax3UCNMiqHaSK4NSAaWKfJUuusiMl+cXnF+e8fmnj/jpx7/D0+NHpOUJZb5gSWdcrxdclwXznJpxU2tFykkVpQjyol15nQppwBSF1D3kYkqN9azr+fZ9WmBpwGrJa6fIytKtwlcWAIuLNCmpBfNyxfF4wMPDHWKM2r3tKoa6guXmuPYypzcOTKBZlNiMHRFjBMk7WI2QW2y5bz3EAVM7ReVh5QrP1Nqr2zUMuONeVhGtsnb3NRUQg0QVYTOU2jdDQHu7P5K9YUyclnrlALDWb2s7RpFXFtnfG202D3L5PiVo371znW+y77/hQPRs6D1IReH1cwLQbQ3KjZGoTjyDJNXdIs6V1YkicCFh9ThNT6yshdArfPAIzUnXeVpvZrP+zZnswN4ezLPxRi8BGAff3mu6w5yRfRc/IpIGRCAEM+YBLZTPjUFByiZqteecA1xtQaPK3AAzY6jYGehBCRtv/zB9bcy5ngXYAxasRpw1B8jZgFthUHsv4+eu/pI04vHtrNtesTEYaFLyWqAYwGaswXt4H5A6J7A5n3rfpdQGBjYnjCQi3N/zK9CRoYAIgMIw1rgFClrB/SDFTakySMHfZs/YOdDfK6Ds1L9zsPRF22t9uqlzFc6VBhibZ0FY036XZUYN2tiDJfDD1N+Lpp46Y2osYGbc3d2BnGs10CQIJA45N7CuYAYjVukGKPsbCkoI+Oq9A0EYek3SVQZTkSBgCKhpXb/eCezZEj3DsZcjuWZA6twLS5urAAq6V/bBARC1OsEGfvRg/vY7bczYjKPtCwaMwWjgaR/o6APEr0AClXfea5F2Zf9ZyIWIWtrldj5kHXpmQyoLrktpDb+8d/AxwldCrrmd6RbOYQCVEYPH/d1dcxp7kG5eZvm5zCg1I6e1hqv3HuMwYhomDEFSZ10JGLkD6VwVvUFBzjkkKyJXZbmVCxIYDhkxWNBDgrshRgQf4F2EP4pXVlS+lFJwvpwBSOmO4zSiaqCcGQjBARQ3Z9bAZpFJBs7K/nzz5k5qgVbGYRowjR9wOBzw9PUrTuczzudzq0tnaVlEaAz3nKQbbYgCNHCpspZOk99Lp3e4Kiii+pfN8VZ/QBmQw7AGESwrwe5lmqYG/lpDLJMf3MkQYmoMfEtNQ6ejAWiao+ksZTmrTVG4tNrqzjq5MhqIFzUIJrVNtwyt9TvWgEMPwrVSIhokq3XbRVXsDoLCVM2pL6XgPF8BaB3BKB2JexuuB0FqrRt9tgfKiQjDMLWxr2n5K1tnBdNdS8Pta6AN4wR2UqO2ZzdaPcJs9o+Nj6BsX2W8a/1yR+vYRd5I8K4W0THkHYIf1JbrQEemBkr1c9wD2n2gsIGjasU5APCrnl/tOFuLLTPe5JD3XvQBS1ZQLksLeIkszGBeu+4SESoBjhiZq9Q+grIL1bZsKb7q04sNYvLbrZhBZ1uApZa2APuyF5pvUCvS1yQNBq3cxRClJiYBzpOCvsbAt/RdBabVtxe/Sb+/MshLWjGqQ5kLiiwqHAU4khJMVcGcQOrfq14yPZFqga8FA9S+NLvHmTHP7VwbA97WFo0xuqZoi5mhWAQxGunEG5AGBZeqZLQ5wAWHeU7Nrup1r8y5zLtOM4wNb68ZRiVrIeNmtoCg2BaVVwapZXrZGaqlYBhGSLdD14BlywQRP10C0QI+i4a0vVlKAjlCSgvmZUE4nzBNB4Qxql6tOByO+BkX7Hdk0BnziiXy3SsWQ6ltk6MKG+0m6XRn8PUg3OpQyvI7A+mI2se6L9oe5s6hal8BaB53t6HsdV7RckN2XccuM+ERXJey0gF6rvv+XthYwdFeENm8GBNl48jZRoaBFp0jDgITYy7qVJAICEcsNSsOB/gwwncRGsIggB4DrN2gnKZQSpqRMOkcCN47xHF6pThkXaGHeQDYY3AEpwwnuaeKiKIFOx2KYhYRwPu7O5Q3Z7x8foI7vSBVaJ0xESQyZ2uqFHVFQEkFkYMAidF7VCTUNG/2XMpASQ4Oq4NZawUrHb2AQYUwRkaEB7xEjhLEaSyMppgAwKECXBFqBVXGtRZckFDdCwon/Av8HgDgh4//AYSAWpx0CCsAI6Cyx1JZat5BIv1LTmBfMPPStqAoZkmL8IEQnBcKfS0NvAq5gGqF8wQgwQUPJgcXAg6He5DzKOwR4gQfB1CY4IcBzgdUJ11ih3GEj0e44S2Ob36B777/Axzf/xJ0fI8v9Qn4cgQFwmNNcDSBUtXUO4AoA5cTjnFA8AB3aZYRwvQjFEQvAJtzDkHTUokYwQMxOozRIaDCkzhpIQBjrK3oLjnGYfRQVrcodY2A5MwoiVFOGfPlivlyRVlm5OsF19MJy/WEWjKeHx9xPj3j5ekRl/MJab4gzWfM1wvmeUbKaVOvw86pAJwdq4ALHLE4dHNqBiqpUm31WTUI0CJUFUAzaEVppmXB5XxWw0OUlwSl1WFReZaqdAxmMMgTpmlsRmrJGXmeQcHjSDK+WqRjngMh5QJUgjf5ZB6gfFxBUNKvXKPIJotUFHUCVajkfSHjXAsKqEWJetnk5CALmKKyg5zTlE6AtcYYm7zTIKQGsVRhe3EW1AkmL28qmn4kM8ogHxCkWJYCOwoEkRmQFY48yHn4YA6mGIkxBDCbYVpgQYsWAGJ10Kk3XlmjWvIY44BaqzohFZPW3FmWBS4IiFoU8MgqP0IIGMYJNRekxToPBoxjbIbZsszKOFjTlRftHuycQxgiSpVAivceFAklZSza+GEYR2RNJxMnXIBYB+20XRklmTFu0c0CJgF84hBRqWpKGlr9t6qGfMkZPsTWebKl3Gmn8JzTmsKhnpvdm8nzYRhWoCJv0zTGOIBLbY6lORS216xDmoN04pxzxpKzGk0DjHVVckbqWCZJnZNhHFG5qFzTYrxFmxWIVyrHUTvrllRQtFPiEIZWrN55qSkiNVUynBfWTRyCAjkVLmjajAsouWhBeLErfIhwPigbVUAjYxNwYVQu8ARhcpCWEQD0uwWpkYAWg7TzW6kMzn2TizUo5JyBulKnrRKklAIMkLUAg9QWqhCmqfceg3UMzBkETVFVY1QNHwnysRSfZ6qwZlUAw0exM0QIQGxBNXSD9zhMAkKknLAsWR056eZtDT189HBBC08rgEgkxbqXZUEtjOA9HBMCOdAw6NoWuGB7uMp8MrU0IOeCsrQYrOvsKKCyRMdtzwFAzklr1UrwbdBi76ZLDIg0Z7d3lu3HOanXyrD0XiCOEYG1m2GR7vNSI1hsh/k6Y6lFO8SN4MLwZWhOiNgV2/R2gBDi2MY3K1giTqruHa6YpgmHwwEpJZzPZxjrxRjxWe3MylX1hUDrpXjkomxwVOsV2uTk4XjU9ea1VhI5xGGEIycsWobanSLTKxiFE6gAjh2y1ahS9oUn6cYOR6i6N10M8I7wcH+ntecqLvMFXx+f8OOPP+Dp6StKEWcwJ6DmhJILzm5BjANCDjgvUicoRqkDF6J2gk6SgWEprj540aU1AWWRruqc9QwVdZSBWiQFELRyDIl4DTpzwbJckZ3Z17Lfh2EEOYdcGJflIqm6fkTOGddlRilSXB7MKCzZIp68ApEFwRE+vH+H9/8vaW/XI8mSY4kd0sw9PrLqfnT3ADM70O5KGq2khfQ/BOh3C9CDngXtg7RqjEY93T1961ZVZkS4u5lRDyTN6J5Rt+9A0ciuvJER/mFuRiMPDw9//AG32x3rpuuJ2expzvqEmuB0zhYEN7AA2cTTiRqkbRooss4jloS1AMVYOTlNYHAP2qUzpwbTMucJP/xwxrIsuN3esG2LgudEqK0g8wRysIfRk266Fq1DtXXTZSDo+1YwE+Y5KxYA9Vs4AZQJPAVNsqR62vOcMTGhbDqG671izmcN3VhtSEygRHC8+4VtSCeACI917TEbkeI21Lu8DBAAovsgiXXErg2lrTgz7fa+CAC4LYmAuftThokbuEIKzHRN0NF1crZmfs6kYnYQcgWTYHncEZm8vQJBGorrgILgnD5nZCYi1LIhz6dRLltVv5PIS13R2ZTAtANQlJ0GzHkweu939ctbrQqGl4Lr9Tr8R2cGF2tcYon8PiZVqwLmabZrqGbXyygzhUoasWU5yqp+S+YJmROq6GfXbdU9/eFyDHMH3ik5EFzR1gcSExJPUJa1AwFsviSjtk1LIa2MnFw33jABkoqObrhvY3qCAzxSDTRZCqQIWspISXA+X4ydqTqjHVBNCZzYSmRhvrHaYSED4xKBpxnTXJHyHSJ3tc9CSIY/ghFPIkgAACAASURBVETL3EmP0Ux70IHapVRMPGFKCUR+za7tqjaGvZoNA3z0deEtHptn2o2ZqXJAHg8FcMWaITaoxnrObNpwo4P3ANn9R79zlFtoxl4bySL39wfDtK9lCGobnZJ9T1+rdiwHMXiawWw6/rWhiGBiMgDVIeXxPEspoKw6nAJgLRXL6xvoBtMaBF5WZZ1/6/UrGXQ0kC8mZbgfYL/+3/ZZ56w9P9xzXaJ3n/krl7V7sIdjx2w28F6nzoOyX7qOapPwePxYRnDMxsdr2JWfhgA5Xv9fG4cGjECXbBOwiZhPM3Kew6cVoVbdFUJpm4pVEjSLTkqjbQTtNspe0kodRHTAMqVswcF4/CUg1tnUZhVUIAgTsiTMecJ8PuF8PWH7crPSQQs5CF1nCJZ9iOPS/HhCluHRBe3ijl77TsTaOTVlVNF0gLIKQ/ZdACzNAowEoYRGep1imi9bKV1EO4kgObW7CYANSBsKbX10//DnnzTbXk0vDxnEs7LoGgPEoJRRRY22dpu1OZMSMAlK1pLanDOmnMEiYAjmnCzw8FIkgDIwTckqKLUzLngCaMJ0+YDaAJ5OyKcXpPkMnmak+YzT5QqerkinHzFdv8P1w/fIlw8oGWC6g9oGLhmNE8Ba0pm4gVBA3DBxQs4FSOrMaTYwIWcC8Yw5E06nCbWqDt6UtVQ1Z0K2FudzBs58RjIAbkrOkNNn05rgnHTsmwDrBtzvK26vr3j9+obHbcHy84LltuBxu2HdbljuN9zePuNx+4paVqwPZcmtjzvqtpnm0qBoryZmHAE6QNDKKEXaAexxLZOW0CqDbA/SiwwmTc9608i+djZFrbaFD5sDAK0VCAHT+YT5ckY+TcpULXXHQpFWVTDaWSkYayWWsxxfCoCzgRMWbNE+CbCzO++sHHpQ3gwAj2Pl9xKZHcdj7pInB9una1XL2bVrb9VndzxGSsaosrBQTJvNArlpSuA02f6qAq/OHoSBZvrEKYwDa8fhZuK9JpbvpYBW4BbGxkBFIpRacbvduu2fTzNSyt056GVwQGeuxSx33Jsikyr+vc+R2jRj60GBDqoCWDY/ObGWBdj8yJwwWXOgtdbOtIrPyF+R1RU1brrjwoTT+QIBsKxaUlbtGqc8yoBqrWonwlY8suN71viOpeNlfE9efg2RNeRgwmTaHi6Y7dewLEt34nLOyogmMdalgxrHEhiFvD0gGs8DUAF9ZZUry9nmEit7cds0cOvlfmZbdAyt7MvGkW0/5r7/iiWg1YG3TWiMmTmuGiy8LzF2OxPX4nGMPQHWjBHk/lSrVZMC9hyKsff8OMUANRW7BlQ0X0v3+zhBADJQWqypTvPV4uU5OmkV8lUJCW1GPOa+Xi+ZtqKCmuKBAjQB0rbhLLu9gag207IstkY9H24leCn3WEB4P3bKOiObN4P9GLV8Uxo6dY/HYxfMH8f82bjr56zch/VeBLAS9X15uYRj+jVsdUNtpFA7jSSx7wGecPH56kCh2xxnYzCZjfVnbftinEORgblPLCuoopIjBKHUExtEML8GgW2kJeR+77U2NGrdHickTe43a/QS7EKtVf1JATKrfyTEoNoAKujNk4zZJ1WTZqdpxu9++xsD7j5gNabC29sbbvcbXt/u4JyR8tzLi87ns9pUCNbNAGC3kTzW2pQSUgKabABMe67BbInKYTRjNZdSUEWQp4TTacY8ZdvjGrIBOsrWLqOph5XKn8/XHhS2HhhqAiJDQLUgG/DCVl42IYGtdC6ljHVdcX9ogsNBe8oKbvgeywYkwoJVV00o5uALFPgHeVOeBDQxMDdrQt/KvRRc0/OcTqd+TgWy0f9bausJKBEBqrHiAiPKV2cM6huMBCHA8nioXYAyUbxBhYjYqqqgZglJa4Qzp4zraca27Uvx3Y7Uqt2HW2vvynXjZ/W6gFG2CWPoUZdWGzZRGZIKbDC8KfPuegPDNq736D/FcxMT1kcJMZnaT19wfgz1RyxJkhKYBXO7oExAHQosT19jj7B9IGlyEABYVDOcHQTaQgmu2ARiGn6xXrRZ/EG38fv1fbw3kcn56T42xtUrDob99T1gAN6Al76Or6uP5/PKwVXvJsgsmAxwu6+LJTYK6KFNc06nE/I0a8I5q9UDASkBEB+vZh1eXVt0sPh8NNy292oRex33izg3tJmSJnCYtSu03/80TUhhrdRa+7NqEEvG+DNqmqyVbM9fn4nvP6o9CQUjpSm5hKqzc7rO8JxP4KaVBdVZsf68mECiMXbHQqr7Aha/K/US3pSByPcbHaOtjk60pA65NcfSZ5opG+lgaBc+w318v45j7I2FHL/QxOLYOwFPVgQMosd4dq5mYFpiTDQBUwXXisIV3NQCkS0BosEuF28o6OfQlKu7Hiapppqiv/T6VQAd2630TTV2FgX6SeE37iNyeEVg7hkY9f4Lv/znb4FbIxDeL5pvnTMa8YHOomuxxPPEYCqy5Y7njhvCL13/X5t08biR5uuMgR0IqHeNRFovmHl+Gkj7p0dpj/4bAxim3ANpr5Kz7slQqrmbINtYmk7AnGdczy9IHwUPaUBV7a/aNp0TYTMqEvQdPMsGwPUOSDyQSt0Qd/Sd2ig9C/+6KCcAULXaczQtCaMEYQf/GKWoI+DZWiFl7xEDQpMCeYEen09/a1pJYZ4kNWgNCoCmKauRaTMuKSMZpZZzhqSEoh40KM8Q9kxHhotUp5SHaHZ7xfk8K1AB0i69KYPShPPlBU2MuTGdlTXBVsqcVBT54+8+YjqfMZ8nzDMhT8pymGYtQ9i2TbNDVjKcs7LmpqRg3PWqdGSfazkzUiLMEzDPsKBeu+oazrsD1U/QDArJ6JOsbCNg2xo2AtZ1xe31jq9fv+LTp8/4/NMn/PzpM25vdzy+LtiWFWV5oLYN27bg8XhDXe/qJBd9r5roqsdio+ROS0lH+ZFvIpap79pUoyS1r0Mm67q7Z9vayn26bt3R6cdqAsIoxTuu5cvlgsvlYlpKhHXbl8NBHKyo3Xkd36dwDWPMI9jwLXDk+CLQO/vp+mUSjPAxGeEObrRB0cl8lhQ5gnnH64zf0VKk0KXFr5MZaK13+EQbOjjRYXWtDaZkTVi0RMHBhm5Lk29ZYg75AI9cCFzPHsq/mFVHrVZtzBOSNtXmU/aSnMAsA/aaMzEwiBlAEelANqSq3XHHyMeHk+l2jPLJ2DAhavYcS2I8cIjsK/+bHsu0hgy0iWUonu0eDhF15zg64+1w35El4MwmH7MIUPp/Qxzw2pch+7XG+ewBxuVyMcdWWdfSpDu7RANkcVaVtOEg70sUVYCamFHKZkCEJodaU0mEbhOaAgoMxjQpI3BZDNDEfg24j+TPTUEXAzUMgG4+R9L7eXL8Pa67d0CwgVku6E5EvXnNNFsAYkGWB2EIa1GvsyprSJS1oZUGGpD0+dbs2r0zmoFtbEGkkAKbsLnLRJAOktrzdo0iZk9oWyVG7Q0ldO7BwJHa7yunZM+xoTULLp39HJKzxwAwBrgRMI9rNI6/s878v4+M0fjZ1qp2qIMGZzosal9E0IGhWivQmibwUkJrFduijFAFF0dCqTNtLOGiWlHU9zNYQlmLMWk3TyJIENfQs+DY50GTaiyng10y+8AmO6KRqDOzFahoFmiKCFIebOsOTMRzWnl0qxWNGJVTT2pNMoFZwrNhcNLIvNnaPp+vyNOp27Xbyw2vr6+43W4qKbJuuG0KjK3rOsramHA6nzHPcwcOQFpWVnLWpGLVAEualXNL1sRs0ioAfZ5i7D2CtAQgK6RkdgRwVrYx9toIarV8XyzRQ4BrRkP3pGlKynaxZyLNNLxYGZjO7hRrMOV2nUWAxPsKG5unEPVLUkq4XC5oIljWDdvjgdaqzcOCsm0KflG1Zl7e2EY74gLOoGoAZqSkbJ9lXVFaUYa/Nw6TUb2gutF7X0BEk+s6hwIJwhiYAGM1FhGayZ4wepUTJUYrFfd1Rf34AWiCx+2OkhsISweEIhAPDD24uB58vagdGJ/XmN5BnphwFQvkHcVR31HLe+sOPKjBlkUGX/xXr8FsJVtJuMUA2gDKOn/CNawA9VmGLrnyXxU0d33FCGD4+Y6+gX/fY7pSVyQ2de5DLOkSMeOaAXdStQqi4VE2Leu28/l81XHTBIjbID/GAC5DZ2Ts7Xe0Ycexa4d9tz9XbhhXSSDKIFr7PND5qbZ0rlrlxOTZp7az8YBpZnp5DblNjOCizfkn/q3bQ3PW4QA9ZMTBsL3BS9ij3fT7LqWoTxH8r+TPVXRv7kxTog7MRZ9NmiYNRUQJIzwajSgWoExvImXc7zoHB3kPMfvk8YOzykS0sR519q59HkBHukcqvOMSIoCwy2WM5LHvxe47xMTYWLcEZ/eP5Pt73ynOn2PspL5LBUOQ+3o3kpSvJTfUNgfQn41hYJaggcXIQhZD2HnqYU0eX7+uxPXgHJKf7Ze+8433vwVYfQvocgfrGRh3HNxfAuKeAWDxs8+cFAK9e7Dxv2MQ+uzcOxbJk+t4dk1PJ49fnwNz5jCp//aeiSAQUG3aBS5c43G8jtf7fmycX9YvSImiYhoq1Ur0GkOs6ykR4TzN4MsFL+cMqdsetAjjGIWXRaz8wSdsIyRM2rE2oHBdM+4bl61Ojm4mczYBTrAZPWXpwYA/Jmc3mBGz2J8FlpqZ0WgABL/7+/8a3gmISB0VZgZYM5FEAs7earthboSstEGAMxozKrEyY4xpx2kCOKEUMUdtQmItUThf/w6XD5dugFRw1jaglPDhcsE0zzsBSnU2Z+Qpg08ZNCVMecZ0mjFPV0zzGZPphDB9ACfCeSKcZsJ8AmbTg8sM1FVAMG22zMqCMEITM7CtADeohhwZESRM6akDuLrXbAtwu73h9vqGx3LD25eveHt7w5efv+LTp0/48uUVr6+vuN9uKFvF9tBmGK0VuD5B3RaIFM1I2NxqxpBTB1ZQgxCzb9geNIltgkpSiUHoPkBHc2ONwaDra2cEeLt1J0Prp8/Fg93wdZWzAnTn81nLFFrdAYFEBEpjUwDQA7Oncx6wzUB/EdEOSkz0bv2PTSXYlnhc0lJa3aD6QXdBWjz3M7H8uGkeATubFe/1l8JnvcRkfwzLpDZ3ZLyV+z4T2UEd74j1JNHSnxkqHD5mK/VpMsbCv6MMCzYmlfRgqJSC1HLQ79wf/ds74bcdzlqrsraayUUIIPYsff5q+ac5Q8Z2OoIM/twi6ODncKF9D1rIA1MHc5iwLIsm5gKbzY+31rqbV0cAUrPjpQew8dnuxpRoV1rk7+uTCEFlGKfj3uVzMHZL1aQOoUnB0FBRGzvux/eh9i6Tz0/0xRwUb2GM43PTUtGM2FhCx2eUdDUvtw77H5M2Aum2CsrZKFJQg2j7bmzo/Rx9yoYK86KznUC763ftMC0vb1p6Tg2U7boQ2MfOqEd4BuRgqWao/RziyKONGYdr2t2DX68jc+7vBoc32lQvx44MlFKHlEGfL4f5drQzOFzHs3kVNYqe2d5oE+OeoIdqGiCJ2vzGdq8EK3nWSoDizE9LINRSVfojJ5SydQ3GY6LV18azTtOxi/jx+cdjRAA/7l/Sx0N9Hf276uWKDm3fm+Lc9CSIskiVAQ5KvaM2gA7w9wRZKdiql8eOxjT+M9hMrbPvkpX2LcuyY+ScTidcr1e8vLzgfn9gWQuWZcHj8VCmzF017Hz8HvcH8qwBsAfBOWfUxChEmBObBMdIFgsIrhGXsya6xWQGtq3aXg6QVJwmBqcRtE75hJmH9rGXP0cWnT4HQWbgu/MJpsSKIq0zg5SFpmBRyhnXNOFyuXSGnnZD1sS0s64OZFKklPDDDz+g1Iq32x21NpSq4OfWCqRplYoyADf1w3yO2SpWgGXPbNIqK2Wj9EZiYX62MBcjgw3GzCXmHWvfTqjAHILNBwFmV1PwlT58eMHv/uZ3YP6Mt7dHr6JY17Uzg5wx3rVsacy54QvGEk7bQ5Ml0rLGDgLTNpURo7nf1wCcAqAf5VYiIBbX7bgOPz/D9TcJXtGlzwSAlVUCQ7yf0TtfkCc59/Fr/HGNS9fCc1+ulAJYEonFEy++9j0Jx90X1uvH+FecpSkdlDzeZ0oJLy8vnfkZ9yS1S9yNRgQYO9h08AX2MboyMMmL8qVCqhjTrblrZEmXWdmJcE07YF0WYKlW+UMmF6D2yW1eTm4LbN7a/uUxQrzfow/kv8e4w19730E66L1uG0ChC23Y2+KrYzQYSVu3jz7Ovm9rwnm/7434XKuA5kS92Umzc27bpkk1O31/dkjh+QlqwCf0ubPtJzqHcz5BUC3xoNr0WkILNFSUtfbkxTHh+yz+Gnswd39tuBnvx3gXb6ljs5uHu+NjfLbL/pB/djDi/V/Rk9rnDDMIz11Eehfyb71+NUD37kIjNfDAwBC94p1Rjq9nzqX/HgfLz/MsGI6L81t//9aD9O/EhR4/Gx3eby2AeK3xHMfF9QxwO06UZ+cAYF1dhlFMxLtr1tKA4Gh2lNept6KsC3k+BtM06aZngvxqXwzxptonHQRWckKq5VAbwDA9wgaiCqpDgDpRxpRPqmGHiixtN6atHsaW2m6sRAQkjIkzWJRm3loxR4jGhPeGDEYvryFoIEqm60PKoLFyJvQs9mDQEMPATA/EbVOAgn2AltJMHz/ogtPQGJmHdkQV38CTstyI0LaCRlmPTYTEWctBs7LgkrHdHGxNSZspzHlCTSeUy3eYPvxgwCzwcj1rdy9OmBLw8vKCaUqYp4TLSYG6adIy45QqXj4mUG5qDN2BMbyFAJSqDGTOCsxNGZjsbwwAJ2uwgfEeGWDVAHh1tRujKsBWgLICZQP+9JdP3Sl5PG54e33F168/48vPn3G7v2K9P7Asd9xeb7jd7lhuSyhHBdbVywO0OUVrG8q2QkSzGq01NCkdsHGGTJNmOoSuPXAA2EUBul7u00aA3m0JQedbAOjGWt0f0wV33eHxYyUmK3UIoAk0K+5OouowquUmjM2bmZXtOE3YtrLLgr2zExTWPfl/AzkIEFcRwERU6ZDFImIIe4l5CL48AAvniLYtAjwAdiBHzBo/C4Z313+4D7/XBt0wh3Njuh+2KbZi5foZvVwi2sdsLBV/Bjsx4aQr3Cnv3k3JN+n+rEzjyseAmVFq7YLkACDV5mHQrgO0xM05835PMQg4PsP4kqaFcT2bCkB8/jUx4ES/04NdImzGGCXTCwMN4V+/DncwZgP3ne3m73s5xbpt2CxD+85pNC04vc/agbxo5902Hp1QPw8w2K7OqPP3VdNtBOZH9qfPaz+2BxkukK0OaUKpXl6BDs7pEi44nZw92LHM3fxztosHUuTl1eSdqRnZGBMqLK86aYmTOfMjQGlEJkVpGeAwBsSkHcgBgPuFaEARxjOuj+gkxrXW55cIaqta7jhls0umAWjPe11W1ZRLmsyrtUGK1kS12oBMmKwzvB5fheJBzlZzbUZAGVRs5aGpj18pm4EVboP2AeLwIYe/QxZWtSYQ9mdPYQ3vy/VVEmLqa34/3/a25wg0Hxt4dCYVsJMbOK5Rf88D+F1yRz8x7oscuHINXEEyL0LAKK3ojsrqnzBUdzFb2bwDARBl5ThrYQRFGPqfIUpmAtj2gDg3jv7nMXh2gEhkrHtSTlg/du2dxt/7vT4EzAzOp/6+JxyoafmyKwkoQD7YzjlpV3O3C/H7lBiNgNzU1p/OKqK/K9/VA+F0OePDh7nbhN4FNpT5llpxf7vh9vqGaZp60iznjMKMauBISoKcJqA0gDYA2tVQ9z7CnCY00/WSzdi2EMuf+55o1Q05aeltSpjnjG1Tfcxaqmq/VitxE1EpGuyBVM4ZOU8j0MNgPANWlXC74X5/aJVEayCzQV6uCWh52T/94f9VAGDZ8HgsgB2/VUEtxaojRjDr4JqvsbUU1WXNWQG+prqdmUxigwXbumHbVgi04VDUtI0A+PElPVUBkKgNSqySLI2Vabs8FgWiaMKcM/h8xm9++1v8m3/z93i5foc//OFPaHWv8erC9b7PxTXgNqH7cOb/DK/PZr0DE2YHqzEKk71fPMY4TTt7DYwS4NZaT5RF5lpfhwBAlqQrDVojvK9QcBAqsfn28GYC6hsl5l5S3H3B8Pz8WL5XR/8JBCRM3W/ZNtXmLFsFTI9tnmf06NH2O7gLRYwppf4MfWx7OS0Rzufz8Pd6Ir31MTqdLu9i7GdsxD5m4o2xRkyr89YS4FAihbq2qi2nDw5wW1ZrRanGkGtiDEBrzlf1cymp757YNRqVQQ6EWDbsB0fb62Ma7WafW3E+wioXA7klskGV3QhlLLamIL77ckhKUiHZPdu+nwEYpbnofp7Py1I2ZGY0asZk87jbErBU4RIh8PnkyXBo/OSRI8GniGkhsmrkCQgiWgoqQsYidNxhz2qNoNoRL4hjfBxLfV6un7cf48ioFRGVMAnnc9ktn9cgAuWEbM05S1l3zxjYk0C42a5pfh3b734d6RAzHF+/CqDbXwB2v/tC7k8g3uzuGPr3d2bYBzx+rq+sX3N1z19Hp+rZPXzrO90AHESAj0HK8b1nx3kHbh6co+Mkewd0hs8CvjGM7MTxePabTkDL0roW0e48vwB8dhezViB04IN4wCiaGQZQidRpLg1NU8XKesuzBYWGmJv+E/LIhrSu7xBfQ/cvQ6mkrTWUZlPVsrQwAVFiBmvPmp7dVQPAWGEsERO5TEjjvo2thgTT9VMmnJYu6MJcVmPIGUB3/eEH02tLlg2dcconcM59g9bNzoABZhUZt80v5zwcwJRQ16U7HdfTGZfTGSfL5NL8gvbD3yD/8Juevb5eCC8fCKcMnGYgJwPYYKWkFOI7K7Ng1qyfZnHjPASuI0EFEdujRHqB3xWDgFztRxqwbRXrUnC/L9i2gsd9w+31hre3O95eb3h9e8Nyf+Dt7RVoBa1VbNuKdbnjfn/D/XbD8rj10p1m4tJSpZekFWlYFi25EG1RacdZINKQcjARBtBFR0AZRtKvPwZRHgSO9blndqo9EhDlDs7tQZVDxgujFM8BOkDnfO2w8W6VacY5ObPBM1n7Mj5vqNHXZbc94UjdYMLWg9uk0SV63KcGrEe79dQGJAO2ju+HTTyO65hX++D7vW1ELzE/glS7YzSyJh37zVidUtXCGEwr1RIam7AYYDNDYKK3HawdYzPuoR2C0X3A6sccmUst+4xNNcSC5w5mCXal1Ecn9HhPfi4PDhTwV82K/nd7llopoCVuXnrUtWRCx1PvABuv0c93LC+N96j3xbtr8u+5bXVwWUTQNP3cj+OfP53mfp64z/lxdnqLh30wss/jPnr8e7xuImUBruuK8/kM0ADb9uuV+jXGoEjnQwQhNGAmJk2yWMMGP7/UhqUU3Y8wzqWB39w1sdS58/17sAf6/ZA6hmwgqxfiVKqKudNgGcb5cmSRxbGFKKNPG60wuFmAb8/XOy8OQEdLTyfLlA8phxHQE+3tzXHvjrbgCMBp0KZObgvjrX5KQEjtpfOjoZaKPPM+CdAODEZmXE4nXKyBy+12U03CJv2zx+SGj5Nf49GG1ardwo8Z+yNI+iw4cPurMgGtu7O9BK6OMSKonq/qIapWHzghc8KcM8SAxyPT5x3j8wmArd1S9zYgJpCiTYrPbwQyaoNBzcASP46PlwQbHJMgAWT2hkr23+8CRRuDxKz6SXZvDVrGHMdfRHWf/DqzafjG5h2AJkmTafpCCJfLBR8+fOiBv+tpOujw9etXfPn6FbfbrYNbiVXLOdkaU4bdSQNiSr1SQhvSTJjyrOcjgjKcAGaBtM2YxK6/pJrGZIla1y7Vqk+ViJlnTSYnqsgk8BoW6g7evvpE9S6HPYhrowPMWjrSj8XGqvry5Uv3QfRLCSAF0zIRaFImcs4qEl/seD7m0zThNM/I82wAyN7vmKeM++2Gt6+vXS6CEtuc368npgHAOPAoHssgYerdrMc6nh3gs2vi1vDpp0/44x//iMd9tb0w973bQToHiZxJd1zfRIoyOWMe3SoDrmWlYGnq692fx/DHYpMaPUd/3vaMHCz01zu2OAAtFYc6Ty1IMO2Y2gz31kSFk/XjxhZ7Vq3g+2YH38xO+JgkTvCqk6Nf16/vSZw93pMOWh2ftY+F22ZPWPvafjweWJYFROtIZIdrd8C1N4yikYgcySyBFFhiwfYxo/KSgS3uX1oGpN+D+nkTWln6WGlSy+dNhcipJwVHImdPNsn8ftzjv1EK5Jk//AyA9N+1aURgqEF2evVMvPOvon3ve7mTC8iO0Kg3LqpVcJ5zP46f15N8bMnvVrWpWGutA7fxs2PleKWaNf8Qawp39IcxMKXMe4jqGRMT2LPe3G+pFbtkgO51cb7uyVF6Deh/Z+but6gEV+vJCj+uJsbH9Tmjst+TY0igriUtATAcVQ3PX78KoEvkBgxjQofXDlz7xkv69w8B4ZNjkTlsvunHRQ/g3UT/pdfRoMTvPHP8YwAVv3M0QMf3jw/a/z2OVXw9Y1E8vU8A0f3qjhA1SNBLqmU1BpgGWJnzLzJvHKjSTprGrPEAPiWUBgDSAT7v+ibRkB2PSeP9yurM6Yt3DEAR0WzEuw4mXrrVACmIQYA646YlxSoEyh6IQo2KMOl9J0ZLoh1kiTERISMjgftYTvmkjkoiICmg1qyrgVDcPH8CAPzd3/8dGIr+T0mzE/N0xsQTWoslJBmNGHSeQTl1PZicGS+XK66XEyZO+Jvf/RbrTRscfLhecDmfwE3HG5cz6m8/4OPfEi5XQSlmsWwvyYqbwmwsJtKfjAHYGc9Pg0LfvMNzAhTbqlCW4mbGdisr2lrwp6+vkFKxLpsFPRvqVrE+Ch6PBY/Him21lu5LMeBOHeBSN3x9/QmtbYBoR57WGkpdUdYFtRU8bnddA+ZQEBQArNXZGQ9tCkCiNbRSIVUdXJZRUqhMo4Yirv2mN5ZsEwZG9s6Dgrh5EWRnu5pl+lOSHUA0E38DHAAAIABJREFU1vUeVHCZNM8OdhZgcIoioNDncl8H3k3rUBZPz7NFu8BXj6bzIDkbaA/G7gO49/aMrWvfs88f7WAMav2ev2UPmfNhQ40B/sEZjtfkK5TI/Ko9s44kqQalOxUgMKsWjrMoNDPOXQfweZC9D9jJA+oweEWFKpVRJOrsn/KMbAFzBLB25cTdSuLdHhDHKI61O3pjjgx2nDugYvuiMwZhtrmz84B3543P5ZiljqLxMYu/rosyqrCfc3FsBnDHmCbuznbcQ+Nzi06oj5s7OccSVRFlXLmmEsI9+Xd0r9PArraGtm1aSpkSBFoqKIilUtqtLTrz8XzwJ2d6as1KPplYGU+JFOyV2rv1KZOyYp5VXiCnrPOXCanZeDoQpQ/AGLvvS5LZ7wnSG3Jwem43fCyOc2usEVHdU2vCIKyZX9dLdS0zd7Rj+XR/vq1p6aGzw/tadtBL2UCdseHPrWo6h5iVVSoaOGgbW2cW7sFWIhpMaKgtE0poRRnUtTqgBN0GexAGbNuiUrB8MeBBkzpMnpnf29DIRvS15WvPGVujFG2vRefX6+vEGTDdljtgbGPqnUxbq7bBKXgP0WBRQVFrVEBA8y6gdiym97pZu70n+HcxOPUSKF9zDuLr2h66mnEs4jEBh2X3ZUUALMmpCVYvv9vrNWsDMDTBspWuqZgPa7wZOzCZ/1ZgPoJ38haxqgZHP5SVVczu1ZAQ68ESa+JiTjNynrA9lGHPVqY1Z2XJxYDzcrng5eWll8F6yd1aR6OfbM1pFFRzTSgFFLaSMc+nzjbVNQxlOjf0oNA1kWrThDahoTkwZp1imLSKYppmZFaJEcjYF5TdU1DK3Wxh2pVN9kYqAHJOuMBLqCT8ANlKNb/77jtsW+lA2LbVXraq1RkTpqTxAFFCbmy6xQo0UfKuzg2n0xnJQRYRMKl+Vp4TTucZ9/tdGYzrhubJU88PtNYjGdVugzVX8flpMajmM1RzOCmwAybbrwrWbcUf//kPygwSwjxfkdPUQad5nvcMwNABPCZHmYfsAAGwRdmH0tc6N41rkIZ/Q0TIXRon2kR9xaRVLHFzGwR4DAznRwz/jNylVTaYdhbd2waISffQfs8+Am3xOxEscF8AAJZt7fPJbWNMekV9Uz3PsJPD5647Pyb+GxMP0RfS/T31Me17ZIhlY3Ih7ukODMGBHgzQtIOYZoNpvBUHUZsfdDA06G8GP6qUFVrZFf3f55IHsZQ5En52jMXD6/j3HRjKvl633bMF1P/JrttWxvvYJbstZmBWDEH22E5MNgIEFt5dWwe+mpF0oCC5fy76eowRb+q1WnUfmTyAuR2doQ28o3L5M42JzSNmE+eRA8N6L++PZb+9B6DbYJTq/qONbMR8Fk+KQ8og+wRAfiTVxRqChfmtN4YE1n3+yTM/vn5dF1eMyRJBpeMJni38+NlnYNuz8xxfz0Cr+P63bvR9IPv8mo/X7w98Svmbi2cYgb3hOx7zl17x+v5aELf7m5+zNkT8dds23WhsojQpIJnCOO2P4gGVny86e2zsFVAaC4MHYGhM385ian0jcwScIJjQhFwTFomSZibtHHk6oWspiINI9kMNTRYLUo2Cbfo+YLbjM1KatJMjEWxfR8oT8kQQKoA06zQDZFFeGUtAv60DLRKjJrIufQoTpnwGc8KC/wQA+PjyvXa4s7G65AnznMAkWsojG1pRx7VB0KoykdaqXf8AwuN8xtvpgkwJf/qn3+Onv/wFy+2uDh9r9r+sG3Ce8O/+x/+A/+q//2/wb//Lf48PHzLmkwY3TMAE/fERIwDWLbsDugo3AOsq2LaCZdmwrAXrY8FWCspWsJUNZdtQq/6UWrCVFXWteHxdULeKx33B29sbyrqhNe+aqBvDtlZsj0W1V3qQU1HrimkmNNlQt7W3sN62BWVbUWvFKWtnxmKlrA7UqZFz47n1vVVqxVZ9Q9IaGYE6JCIDyhVocNSswxAQWZvNAsbIwngPqjdpIMviNmkHO3FgQfVNYc9G8o5HTHuArm/eoN21CYbTET+3Z8DtX2qHyJw43/zRAzZf2+48HO2ZA2bRhel/S6wNOmVfVjHOu3c0YrZKx/Yb9O2DQxZ1MuO/3lEpHt/tm4vCb9uqJZZJNYCOYM4RBBjHR7++vY1lxCYR8zyDmLGsS3fs/ZhReD2eI97ns2vZP5O9Tla31ayaVGSOrTPORASM0W7eQZWdgwLsriueN87R6Ggfr2VdN2WZhOuNmerYhVGD7PzuOv0ajgAhwvXFrqzO/vDy4ePeF+dGLO8E0MWmYyBQW+1rwee5B2oOTrqDuw8y9ucb+6fqPrXeRdh1jEaJLYGwmgYmWwmVWOYVzRuINFQLWvQ6VYcqk4KtzRgyUqXLLTzzDyLI+H7+MDKSNuUx8L87t82c3cwm/YABzAk6SNKCbfP5rfPDbG+Y0/FZ9HEk6rqyfW24k4BxvX3eoUGciU7a/KEiYTMdtp1wdZi766o2wEGoZVmMuTIE8gdzgPq/fv0uXB7HMVvJXlwbcU4fAbv492FzCIlJNVKrJZp64E69qdVg2JiNb7rnbKUgEXY27XjOKcgY7Fhklv0vdduxVOK1e4Ac51S8ryaCUo/PycpzWrD7zF0H1Fmo7lux1N7wwZ9dKaU/ozkrIJWC76k2jAzIHgBAfG7KjBol9A6ylFY7S+p6ecHJAJnH49H3kKgvmVLCjz/8gB9//LEDNq+vr3h7e8PjfseyPFBbQW0b6rJBHjoeUz51eQB/Dq5hp4DjaG7g8ymlIEfAkYWsIJ76TYJaV5StYpoYp4lG51sH6Ex6QN/b22afe75WjGDWfRZPQOUUAlGdMfZsHgb4CaakrDWCB9vKMKHEOLE25Xi73/B2u4FY9exmuYzEDwukVlyumry4kAMbBa1osimzIlst2C8aIS/KVrX6I/hFrTXTRxNsBEyzroGTgXUpZwCCaTopIIz9uPge5YB83EtG/OMlhs4gHh0bQejg3dBrdFBgAPjql+0BhZ29E+lgcWd2dp9Nz+OdkFPyJhF7/dApTXbcfTzM0OodTnb1h33XPyciO3ZyX/ut2f459u3o7xAKYpL1SATR+1RSgpM0/LvruvY9/NhF1nUktXEao5S2SyYSUV93KSVj2e3lLvxcbBVRHXwCQaQewJv983Y7qonB0m2kJ7SmKfWxjvuvX8/Oz2/jeUf7ejyfv6Lt9XGNGo1+nJQSJqtOiPPY548nNTNrooKPtnX3owm0htpdACIt/U32bHLO1k2VB5vM/eC238MT9vPd5WE8UabzbDD46BdKPEWGJmccE187Mb45fkbnQrX9aiTYiOKY76Oed7BNb9I1YshwdXYvvkZo3JM/b5P96AxokaEHGnylX3r9aoAuBjrHYOMZE+yp0xgm6vH3o3McDdou+Dg4zf77s+PFzz0LVvzzR9BxRwc+hK1/7TqPTusvPYBIBX82ToCyoEQI21qR85FtoW3k/bUsd2yb04Ub5umCWlaVQU9p58y1pv2QpRnjiKEOUfOFAfCk9esO9bC4k03WWcqc0qYLbkp5MMZIISIRAJOWcEz5pICaBQEfXz7AdaGaVJRVnYNpTjhfrxC6Yq0LKGWcz2dIM+FyVoF9kOq6SCMrCdOxnxLjPGfr+qRlklzVQG9NUX4SQOYJj21VgGDOeGwFW6ugaUJrE5YHIfEFv/mPOr7/+H/+E9bthmaZE5YCTg2ZAdVHW1C3Ba0VZE5oWwE1wWPVTraUJ9QGrFuDUMbX14eWjjZC2QhbaWhEuJxf8PLhgn/4wz9j+ZfPON0a1t/9BmDGfFGDu9UV9/Vu80XADqR4tyECuBS0sqGWosy3dcPb/YG3r694u9/MSVKg9/HQ8o4mlqFdKx5v1dpmh9K7WiGlKvjrhrDEUjXdAJs0PNaGIhvapg6uB3aAgBKwFAU91OtTY6zBOWOeJ6ApwNpaQ0MDk3bT0U2iBIeCu0cjYs1GBEjYU777GhPZOx8ugBvtDTTAB9QU78EZBUodJIkB6C77YoEKyT6DShZ0bWXrgVsypsmyaPfJ0+mEy/mCdVsHYBGuwwOTvS2C/c02MqNfR4CCsNfYAmCsV/Rg3DsNUdpn7456TDET7Jvx3v4qkyJeY84ZnJ2lpQ4FieyO5TaxinYQdNZF2SrKVpHYOjeKsvQIMThV+7iuxbqz7tkvulfo9ZfijW3S7v52QSoE6+MOotGBzLVP/L5jJ9vWGspWUA9jEcfR55E/Ax+3lBJOp5OOpa+nMG9YtENjdNREFMTZOd7MveTXHX8/vs/P6Ez6vUc2JHwO9GBjBEjJjuUlKXXba0WNuTEAaXd6fbzmeX43Z3xMvGwklgYffYnjPpvSYJI4ELBtQ4Df10zl2s8BDHF2wACVbHbCO0u21pMSyUq9dPxGkAch1K3gy+Mz1nVTxl2eMJ80sNy2ogAZxnhkGz8AQAUqLAgX6QLyPtf8WbtDHkFFvy/f291RT0nL8CCiGmd2Tu96WEsBmEE5a8ASbIk0gZSmTntyvbdRwq/j7SL9j3dziUjHsgGobTQp8JQEETozcw+cU39fbS/tukd2YE697D4fp2kCRPD169f+mZSSsqqLXvM8j4Amlp3pPSwdLPFg0Odff0bY+3Oj61/tLBwHaFprqKVgqRU5wUrd9e684UCXe2cHaRtK2QBn+zZBrUVls3n4XYR9MtUDXrdJ5/O5z4uybaii898BsZzVl1rXtbP/oj2KJW9NBNnW+HH/dCbqthZIJuSu4aQBjTZ2InBSjbbEbGWj1lm3EbgRWhGsddvdk2d+1R8oZnfZmJVHpo2Wxi7rgvuydKBcRPD29oYtbR2860AHu/ZRCOpD4HS9XjHPM9aXK5ZVWf7LsmBZlg4MEglKvWPddJ6mNWFaJ8zzWRMOpMD97b70xhUpJaQTIbk2CQ3fIZuuXDOtNQhQakMpC+q24n5XxpzP49Pp0jVAfU779ft7IoJESVm4pKzHsTYKtm1FFn0+0gb7/Hw6o2wF67rgp+2GacqY8mzMZPORwN2Wf/z4Ecu64fPnz5jvd8znM1rTfZMTMFeGHRrX6xU5Z3z58gWvX1+BprZtzrY+w16Ssp6vSlUmcBtstNYa8pQ7EDJNE2rbzOfKEADTaQLDyvACKOX/RlDTWZP+fu+aCS0lbQYWg6BMSah9o+SsHjafLibtWGOB3v12gELRZwLQm5Rs24b7/W7vCwoKUiIwn5CnCajAsmwQGzcSBwdcr0aNaxVRIehqb4W5TkTd3vlcOSbS/L7R1D9nEczGphov9YUViDJgBgO0YiZUGiCY21a3I75/Hu2q2yX93PB1fO+LyZoOGNIAtPa2WtycWAm1AV6eZEtWorrZ+kmaVDnNE0TyLsmqxxy/+7nVt2lW8n3qNkzBpVEWqYnTZqXJNg+as7TfE5dEpDMYY+LR/YKu5Qetcryczv0Z16rrYimL7SsNzMqqBUIzIIImE9Jgmm3bhsfDmuckTerUZONI3Juz6d47wygRes0eU5nub87zLlGn16zgOhG0dMvH1pq6jbXS4BptEXiLCeBo749z2Pc7f+kYjmPUOjTp9ByAM1Vb04oMkOzARb+W+Lv/Sf8d1VgkDdkmXwd0m2NZ76VXnr1+HUAn7/kVMZiCOUz6u2GLMthyNGa1JVCpT/zd5akX09/8Fgjn54+B1PtLfk/lPb6eAYN/7XW8puN7fty/NvC/5sWAUSzdCBNYRqbDwpP++VoKWnCUt7X2yZCzCQ73cjbN2HkQVcoG1dIRS+Ja1zV+klkS1tJRnlAN5AMRqAq4Nb1ebTGLaZ4xpxOAhlLe8Pq6YFs2lFLxL03MCU5IWTV9WitImZA+Z+CUsWybBerDeYYw8mlWan7T8jY1WtK7Rk0ZkHYHpADVSpWqgEkgVdCKlkosW9GyJSYstWGTBiFGqwySj4BM+J/+5xcAwP/2v/4vaLIpdT8JpK0Q0R8SY+tR0YpMUWHeRIRaGooATDOKAFsFGk34/se/QeIMyTP4egan2Z4fg0Xwp//7P+Mf54yX1vDh++8gSYFEEcHr+sA0z8Gp3c/5JA2vXz9p2ZeDS7VhXdUBWJYFl/NVhTpFsG5Ld4Ca6NxYbg0j++UAqJZc9LILqWhls++6XocxKimpBlutUCq4fUbEjmFi5JakbEX6piPSIHWDiIKBHvipC2D5MKKDHbA111oHCSWs77FeD9Ys2Jv+A8G2+Zn2f/eNrGdwMDLDEcQCwfRA9rbLHY3Pnz8jp4z5NPVjOhiVc9ZmF1U74SlAML1zEvT5W5lqKHum/ktwVg4madDux9re2URiLR0MjmUEJf0avvU6JjLiGO7Gk2i3uer7ulkeAS4/roMRIoJkOhrvSsGA3bXqy1kYgw3iHdP6/A+f9+C3g2FP9otj5hYiu3UZnbkB8o7nd0wQAabJBFEdLWP0ZRoU/93YNkFFfX8d4Zn57xFQdR0yv4co3rxuqwbYNEAyvx9vjuPf8es5ZsJ9HroTdTqdulPe2d7hOEfA+Ti2cb0fSx18XONciXtWHPM4B3fjT2O8iAi5iopFm4bUPtAJZe4x85yMJZ6S6ZYMh1REk1l+Xw6q6NqdDDgAquzv2c8Tg5Bo0/z9ODdqa6i+txmDvDYBknRdrQ4AiqDTVW0+9QExWxxLWGMZ3XjW7vj6c0x9/WEcLTinIUj2AA7BZ6vBdh18T19jaiPIkohjPHTstBuzAyBxTfi1xjkWs/ExGHrmmMdgwZ+HB/R+fk+SaVdK6tl0kDK7Sw3l3xaEeLa+B5Yg7fKuF9+7B4veeNfuE6B3cq5+X+HzkdXhwe9xzfhaiUkKxgikj/52TErF4KiPj5VWt9qsDNLPN0puiaj7JgB2wbqO77f1eeKznKzRktuiLhMgACOpT9oDpNqDwG7TDjbdwYU8MU7nGYAytbdtM80kZzw9sCw659dNcH9oGWtOk5WOT5jnC+b5jNPp1AGl7b6iiI7Bd9997wGTXaOYz6VMVdVBfK/T6XbR2USxOUpn25WKxTS0qgXVOSv4lPII9BUw8OQNoaWGVjVZr0mVBgLjNCnbsYlgXXWdXy5XvSbccbvd8Pb2huv1io8fP+LDx48g0oYZ27ZhnmZ89/13mKYJ33//PT799Al//uOfO8g8TRM4sQqwm1ldi3aPLakhmcbuNE2QIlYGr+OybRuW7aGl/CfGpV4x14okvLPPw+a+twnR/3s8HiAizDzZ7qvziVj9KPfNWte5ck0pZxa7Pdx2z83the87cc/t+063r2IVObUnbhPSbs7GJLXOW2V4uW8tItpx9rCHx4Rc3GNjQsz98PjahfrkZapmb0Myzo+V817jstuHw8+Oedbnuq5JZ6qfTies69qB8lhyG0uU/RzDpoxr1j1YgFCKqo2NslXjWILJmKWC93Y/2gq3g6WMxj0+tq01zPO+CcHxWMd5+AyziMzE+Nlxf2SyUFEH1wDg5bkEQ/x+7+IKQEszxzV693XfBwD0eF+ToApqDwZ00NTzclCMvf64rwqMJdcapBHAe5Zaa++becb9Js6XuI6Y9wSCUT4+/AQOElx9TMLQS9NKBy/P3Y+vaR6vm42blbZ2VikAIbRt1YaG4kQQoNLQ2Vc257exol8J0On/dafQ3/abYuoGYwS4+n6kF9tdvnPC/dWCsysiXdfCBycuDnci/PdnYNkzkOy4ET877rNF8ux4zz7nY/BLgesvXd/uWEYXHY7tfpEdz1G2xYy2gXFYtUkEZ5TVNaGgLDYek6Pa+9qqWwBo3TXKBqE9OKfXoUBezlPPqIEIlVQ0lUEQbkhcDHRSw/rpp6/49OkT1rsJVDcgMYHYNoJW4WhNE+BWBdWvRWIZHpsWk4s+7rsCNtOdmnhBpopWK4otpGTOcndUwajQTA+xdteilCCSUMtn1AIA/wMA4PH6RwgaJmakM2Nb7yBSrQ0i1Tw7pYycMhIDrRZcr1cTr9byXKKM8/U7nC5X3O4bqhCEkpb7phlLbfj65Qtev3wG1g33v1zw598TvrxcIZwgU8LWBK+Pu1JwUw7BKkYgpT3uoaWrXj5qpTBWgvWZvoDNf6kmyKzdIT3DomwO8nEnseej2k6oBU2KOSEW6HlWDYRWJ1Sj/mu5tQJz0hSIhQh6JwLRx9+ZCW2DkVnggJmD1NQZbw2tt9J2oXrpP9IKWpi3x9LUsearHW/8aPZ+fcfA0zUO25Q968YdPHagIQII43sOYtj6BWF6UeAi5wQptTsjRISKkenRjUeZqD7n3Qam5JvRQB7J8TiKtmNvewaA9BwI88/5ZuiOkDth0SF6Z7vIkwrOLPNSPGW8AugdtGKXsWiH6wGki4CX339rDSTWPTKN7w9nOWrNhewWw8BXQat7QDC+irReBh8TFcAQOZa6F/jdsXjC+xH8i/b8GHj1vwPa8bDa804HZ8JeXXRfVLWHiLpGyTOArjtQwSmP424jpMvzyZ7nIMDu+3gCVIZ7cjZSZPU9Cxh242LOm3fIdqBGBCDYfYmywTSmJWV9GmOEWJnSzoKKwYYHQg4qCQLz1Nk5OQHmTFUp3ZHVe7RSLBn3zWCc8qRBEgwsMSDKbSqT6so5Y0UBKhhoYM5kKVi3DVOakFN+Z0PcCXU/IK4d11jqAV3KvUt1LVUb8gRmWKsDBPG5qJqzVg6c1X57EKbrSbtRAhVEnoW2pEqwsTYIaq+YhwSBdZzrz9/8RQHQaOwgLF4c4sAQjd9t79C9/hjk6PX4XOylxAGEi3PV51/cE1x7R+Q9aHwEtfz36JtxSuqYl62XeIL0fhz/bK1hLRsyhpSKp4T6Ora5I2LAra8FsaK75nPCPKdabfdFB4P9miPzIN63r8s4Jilpw4O1rJ1tTjwpmGNdx3UuZFuDWtLWpUyrdqttIkii91Bq7Q0yEjMyM6qzk+Rgi8z+aZm9seJx2LdtSuSckaCgxmpJstoclLYOytLArYLrAOV8P/PzdQkXIlDOyJQwW3fMCwyUrxvWdcH9fgez2oxSEspq2rO1YNk2PEQTstcXHaOUCNu2orai8hmJUeuGn3/WTohkIBlxBvOkzSgYmOczQBOYXPMtobZmEgTybn8RAxhOcwbNp27DSzHfBKopWYvOgWmaICTIAHLKVn3inXE3/PzlJ6zrguX1K/K64Hp56Sw+AFjXB6Zpxnme8PHlqqXEECyPO7ayYD5n9a+a2sp1ffQ9eJ5nfP/993h9fcWyrJBN71dBaU0G85Ssa2gb64GglS5ScTppkjohIUuGZEaeZ0wn/cE6EpPuo/kcOsaCx4Beuj8LwJisE+cO0HlCtqUEJGPJVd8j6s7ud9t6YM3Efc/nv7LLDVRmZ8hqp91T9n2Quo314+naMVvTvALEQd/RrMrnSrz39zGej0OJpm+3r/sxXY8yvu+/x6RnBDj8OqKv5M+oA+xQn8zXaXw5yzkCR8dyU72H2vcrDzfAownS/X5HSozUgd61+x7k4tJ+73CCQpwzzrAmjG7xDWVrqG1DCozfZ+Des9cArwDKaeyLIl3zvc8Xq4qJx97tV3Xv6+/2PUWRbB7pOvH5E4FahGPHBA4xQ2x+VGglXteyhfuFVuGhAaTFL/0mdI5WKzsOzdpsIN7J3ADjv/0ccS7H+ZWS/+05TqOf33dOjk0uIBaPBsmbxNbl3YBD18e2aKdftwhAzbAW08NUvAIgamrnLYH3/x+gg593oJ7HV5wcHjBweO9bAxSPe3zFwT8GRzGYPjodv3SuZ6/jwjke45d+Pxq6X3O+Z8d6BhzGriG7azSH9tk16yQzfR+etPFBc/aTZtNSysiZ4UAbkdKptZTFwA7W8gMhAgKLIp4zp6mfV8G9UKZABeAFWyG8UcL9vuDzXz7j69dXiAlkJ0qo0rAZDVdaMeQbqMRYWgJPFy3Vs5eXt9RSkfLcmw+0Zp2vQMhMyKTG7JQm8DSjztk2vwzmHDSUErbaUAWYThet7ee5lzEVo2QDwH/87/4Lu0cyQWDrfGpBemaofsI0a3enRLgtb6hVMHFCTvNOW2F9PFDLpk0YWgUbzZ/KCt5egUfF7fMX/Pznv2D6+orGQEsZBYSlqbAvkj9HAK6D4WsGglY3BdosmwYHoFrDxMntcmdKNamDmj0FXRz9lLYrNwaduh81AHRtfFYySi2owqor5BbLADovUSUzigDU6TdnotWGmpKdAwY0+a2pTlgz8KISQWhTAxiiPBHVaBxOvdmK2g5r932Jq7IPpAfYx7UZAzO27H0s4yMidDwgbgDQ6yql4Xq+4HK54Hq5qMNnDUI8WKKwWTFr2SKBdhnL3ebP4R5FdiWqsDF8Zm9gAWB8eRDr547HYeYdkPgte9fac/u0dyhpd527fcGFLu3l+4G/k/OkQVNnJyFowxioQBrUexALAMRePmh0+bZ3BHc2zhxDLY06aqwYA04GxX9nAzH2viM77BjQA9gJzqvzN8Ar/34E8aI9Pp5Tg5k96zECdH5P0VF20ApQe0DWWbTvR4Ghscoot4IFCvH7XsJaq5ZcRsacl/LGchZ/3x3uWmsP2vt6klGaUWvF6XTa+RZd3ynMNXea9HMDcPFz9aAJY02MJIEyIdiOLVAAyl8d9n0XgBCKsxcoITGhSOnZ9pwSWh2swRSCJh9jDxK+9YprKQaVfm+xm2PnWBz8seO87Mck0lIfL+VlB+cG+BVZAgP4CjplqAC5dpJNERFLzrQO2h7XCYBeVu2yB/psxn0D1AOBPu7dOd4/nBhoxLl2DJjjWvTfNcjbl8fH349lx34PRDT8lFrMh7KGB950Imkn6M4CSVZ6JAoE1dYAYlB9PweOwHaTNliPFiz4jk0YtjzOl+hbH4Od3b7Y53wsy9JjO5hQS0EtQzsrHkPLDS2IFnSwMgKhAi248LnrNqfbvSeJ+vjqgAsfmLVN+sQRUYCQau2f833eG5vFPX0E+Dp5ybUCkyd8lIExzy4VMwCgx2PF47GgbIL7/YF1LXh9/QxiICXCfJpxvl6ZZ9qYAAAgAElEQVQAZNzvdzvnhJwnTNMFOQOSFKCeZ7Np81jfDgxtpUAOIue+N8+Td52duu9TSsFSFqxl7YzAZVnUdhtNJPPUy22ZCZfrFcKA3GlXKurjc7/f+xq8XE748PKCVgteX294ffuKeZ0wzdrldts2fPnyBSm9wRlmP/74I5gZr69v3Y40UuABxCirArSUVI+V0x7QWdYF0zxDeITRVRpW88VmOu3W9hGAi3uiM719nrWqmpi6H7jkgiUAsQee1Kfg4WPYLz0REuxev88nAPqQk9D47zRfFHg2truvM/dptMulwgNu9xOzAgjCIBKUNuRp/Nkdtc2OoIz/TNP4XLx+t+e6hyszyf1zP576UrEqZlQWuP06dmftybHkWm96HverYym/iHQ2XdTvi8lAopjAwgC1JbIZyUScNOlciiF5tYCnue95Enzr8eBUxkmf27h/CIMr23/vbVU8Rt9/CTs7N85B43PBl/F//TnG73S7jtGI40hmclBJmYKsBphd/oX7/PJnEudLlOthHkxQnZWp74tMBKlWeYDBjlTGotqP0rhfY5NmfaLCeg2xwtGHjmMR7939LGYOvol/b4DP+3F2HyQeXH0A18Hz+6y19A7K03zezwc/pgAsYolMQiag2EYXG2eKDFbfs9e/CqDzk/9VxzHcsL93BOlG0Dycs52TFjbM+Nl35wqT/ThQR0DprwFnx+NBBhh5PPaz9751nf+aV/x+a65ZcpiU4hTTvHu01P9PQNLQpADCNsktk22ZbtgiHG6cZqI5QZl7piEDApgyWngefj2NR3mTT/z+dxZs8gY2Ud3lUXBfV4AzMqsB3RYVkJynC67XK06zlrtOUwLPJ0g+QSj3QJpIG00AGkSdJhM9hmb/vAxWRMDSQG3By/mEl5cXcNbOKaVt2CyrvxYtG9y2giaEl8sH2/xnfPh4wunUcL9/7eP7t3/7Aefz2XQGMmae8fnzF3z66WdIFVyu3+O3P/4Gp3zCvW7445ef8Z//n0/49NNfcDmd8Nsff4Mfv/8ObV3wp3/+Az5/+hkiFaXq5nu9XvH9998jZ8YZwFaA+w34+qUgLYwCQaUNkhjCCWtz/SSzgDL0CFQDaEGDN66wTakBpB4ZkGfNSjdlK1V4cKBrfLKNyeeMl5pquWpFYi3DqFXB1d4OHoImDMgZTRyo0gx7BOhaVZDPrz91iVFYc4u1b3DMwEhoefBt/9VMtN6Cb4Jm+b1CZu8INesMGNZ60C/stuQQ6cW1XutwNsbGLD3g7qCLbTYUvh8DpPP5rDoyRChbQSmbdoE0J9zF4j1wSay6Nl2/4Zuv9zY03MrufV+7cf36q8m+9ELvfYixjzF9vh9ERtrx391eYEHT8Xp1ZijAptdnjoWM7K1u8psFcyHLJoMFMo7pXcr2DrM01d8gD9TCthgBO9U2FKCJdiAMGT1nkfXxC8877gsREIvO8bMxZKPNCw2NpDiGx7IUd2LGcxnXsX8ug30ZAbt43FoL5mwi24drxmG/rtsoT40Z8e4UB70UH9OY0X0G9IpoeU8EGf0VgSG/Jg9sIpBHREg8MvNHhlBranv78yNAxIMZzYKrHuYJqnXlzFztPtlZiiBQEwWHnWUnluSg9H7dYQQwzAzv6KOgB/Uxd+H9+F2/b//vqKXmDN7IRihFu1iCgDlrQw4XZl7XdfRIj2Nv/11qwVIs6SLuvBJa1fmvzzuhmMRBztzHsTbtxu6dLiEOhhDaYe77eDXzLcnHD0AJmi1+fvJsDRi1Fg1ILToawQeBGQoyM3fb7M/e10q8DgeFIkAXgayjf+jz/XjcHmBYOWUXunYfJiUknlRCxO51EM+0cy4g1s2ydZkRPx8lHo0OSNkkxZop9PUqLra/Z8TEueQ2PNqeWKbbqtsXgZcMJUvq6d5gpWEMINk+3Vm+rN3hibEV7WLLAEA2rzvwqP6BYoDKVB6d/ZSJSCntrtHLp83VRSmqU6bPYELOM1IqKNu2swnSVOh/aK4Cris2jm1ABwRJEqolF4lEmeqZQDThckmY57MCrADINNnqVrEsCtCtW8VWVEdPO9JXpEQodcNaFgMRMrzkW2kmxRgm2hzrtgjOp7mD3Dkl5GkAKbUV9dvFtdkKtlUTqNtWkGkaNgb6+eosxikbKxFAFUhV2YN1Mb8rEabrCWma8WG+DqY+RrD9cr2avuGmgGXKmOYJeDmDuWKtK1AZQhtEjLmYEnhy4JBxfnkB58nsl7IpM0+gDJQkOKUzztMZmRiogjx9QZqM2WWNdMTGjxMjzxPO1wuuLy/ACmzLttM/HYxqBXi63QtggL8iuK97laeMlVnt86trw+bU7ZTPp+Mai7Yk7oNx3+pAXtLO4+ms49O2KPfix3dgZbBYmQlswv5kWrt+P1Guw/XcYoLMrwcAppwB+N5JaE2bwvj11tKsFF7LGd1vZkrarJDfJwOOgNzRrkb/4fFYn/49AqAOGkUbP/Ro9wwrEU3+N0t+z5lVigIVxIQ5T8ictClMa2DTMxSzASAfo6GHqOQUtzPmA5HqqAo1k54xv0T0/SIhuQ7b1Xax/pg3MSZpQO9kTGRNVnx+2U+/XyIQjDiTYJrMeu3AINQIBI2GvvaQIam9USbntJvL/XwYNtNj0Y4/kSbqpAm2OnQyjwCq21YW1qZWtcH18b3q6wi0+T0eWeF7/8jnyz7WiQCgJ1z73yV07GXgPM9ozfSGUXf3LiKo63aY02NuNoyO6UTUG3Y123uIRzn4t17/agZdBOhGMBKALIzJePzus9+fBXBxMX8LGIuDfHzFxX90+p8d6/jveAj7z/wa8O3Zvf21zz4bAwqfeQZA0pOYmHg4YmqIXFB+Pwm1pFS7RfUAzs5JjaGMOqjTS0DjdpiEgOa4XAMgTiP7TCItLbDZWKp2b9lKwdqAx1rM0CTML2f89jff43xWwck8EU7XMzBlfH17w+32wDwzPn740EG57bHgdrsptf7jR3z34QOISHUwvr5iWwrm6YTvri/44Te/QTplfP76Bf/yp7/g58+fUUSwrBWXywuIGC/nD7ZZAFKV3XS9NEi99Ttb7q/4+HLB6TShVsGnn/+C3//+9/j9//WPYAD/4R/+W/z4/XcohfD18xf8H//pf8dfPv+sgu1E+Oc//jPevn7Bh/MFRIzHuuL7jx/xw49/h8v1gg8fPmA6n/D29oqf/vwzykNQCHiUDSkT1lZVIy8ReMrd6Ri9FwQJog5qBkpbzKSLAWCAb+YAcH98NdYcIJ6Rb56xBJbFSzF9/gUgq7XeCVXLY6VryQGaxRRsHaTSTIEo3ddB4r6pKEDXKOiiNYFiin5um6pkYGGr8AZAY12wBW96He7oxDWt2nb7bqvU+Qbj1bGNEPSNtagMLW8a4OVqkZp/XK/xlVLSrmaXi2XsrOsZKAAbhHVd1Clro2Q2ipw/AzWO9zGW5WCQxWDPIxUHDRzlt62sZ8/83H4eH9ueQT5cyzjt/v24wXbgj/z6Dj9tD2r6g1UMeK+dcnTgHGhXcMmYoY3RWtVaahoBtu9Z3klvl/SwrPhur6mDxUVEXRsn3mfzYPDgVB7nRMxax/d2YxafF8Z1e7fC+F4/t1h5iuzHJs6bIys6glsiQCkVgu0deErhXkopKOvWg404T3NOff7EeeBgXQwW4trxv7kG1R7w2881n5NxHP3+p2lC4lEKGstnfHxK3QJoOkBAtYvNmjS5I2Dv16ourjul3bF+v/Zqa/17PmeL+RZ9PnhZvmfpyZvL0Dt7Ep1Vd3LjNUeWGIMwcdIGO8yYctbmKgBKiw1Bgt/hzqVpLBUDwLxLrzZUUUClP1eQCrSTAmlAs6SJlQYf5nuyc/r5HMwUB8AtkPGSQx97gT1bkAJ93faEjwl6oEPk5aF7pki8z+O8dbum82m8d/QPfe75f3sXT2bV5VmLanfl7FqEWkrvc9pF9imA6+KbYH8WyggnHjp9sPGCX2NKqjMb7y8l6xiHzkDwY8Y1H9dQZO/42lC9Nl0Xyn5VcK3JABHu97uBgepXSN9HBNSTwM64iCwdZ1P4GrL7hvHyRddEOtinaLNHUBZscUo7u8JQeyUiBv4Ntp0QOrDp9qGJgoI5Z+Q0KzNaQgKnElIi5DThNF/QNRxtjuJMeHlpqEVLfGsF7o8bHo871u2OUlaUtuH+eMPbTTDl2e4tY8onTPMdOZ91JJgwnVTLM4WYhnk/f1NiZM7Wpbd0H2HbClgU4NA2W4JaN1QI0qRMO/dBsslNYNOgcls2rHXD2+ubAmrsWks6fpPPiXnGPGtprNrXDVKBnAgfPlxR2xm3h+rTMTMulygtoBp7KSVNfJ9OWFdtnHU6XXD97op/+M1HgIDMGcvtjn/CP+LPf/4zlkUbjJ3Ps8qRlIoKZZz9+Lvf4t/++3+H3/34N3h8eeD+5Q2fP3/ubL+YFHKm99HHY2YkJgX9whzUNd96Z9mjzIeDFP77Zs0Hjsm0o7/in/d53FpDqQXShgZbSkmlvX0teGI+fFfEQMiknYJr0yTW6XTaXeNgM+0bRo178Am9j1OP2l5lq7s9Ne7lpQBp2vsux+NFuxp9Sf+7j0+c7xGMc9/YO7/63/zv97s2xzmdBIl1/8o5g63iq5W1xzWpJ8cEtbJqlJe68519DPwZt1a67evP3WJeJgFPqQfrMbHo9xoZm9G+jb3xKO+hgDrZfPUutn726LtqOLDXVh3sxXC8+D8BmjWaWpYFpyn3642JYPXh9NbG/qmJlV4BUdXXbq1h9c7OGH5Tzvl9lUT0oWjct471viT42ZhFbUWfcq1JmFf7mLC1/XHIATxpQFXpqr5OaWheigGH9/t9dz0qIzb8ryYViRiNVb4CIp148K34ML5+FUDnYrGC8EBltGcWKEjQenznFH/964h/4+BTH/xjYHf877iIoxH9FjgXA5lnx4BNxP+vvW9pkiQ5zvvcIzKrqh/TszOz2AV2ARIkCFIyyWSmg2QmMx1opqNMr4OOOum/6E+Iv0A3/QDppqNuksxISiRAcBe72Hn2oyozI8J1cPeIyOre5UNGQWbKWAymp7u6KjMywsP9888/r85oFxj43xq4ozrS/ef/ReOvAtKdv2//eg4MNhEwEaV7StHG30SkzJMn7rF7Z9Uqydm0bzT7hdJo1vU6/QtdsfbITGRfZGUk7eo0g0S8NgpWLiaFwbsLgAKKAClNmGfgdITqURBjjIMGzvkCzM8hEvBwvAUzwEPEbjfgNB1xOj7gxYuP8MnHH2McR3x4+w5v7+/x5Rd/jufXz3CxGxDDlQItecFyvMfx4QEYDrhnYHdxwEg73N7d4ctffo23H94j7kYIBxQOGMOAw15wWma8ff0WaUqQnPCD77/EdAzwo+3+LuHVy4hSgLu7O/yvn/0xvvriS7z78DUO4w5zeos5vUUmxsPpLeT4Bp89v8Lnn38OEcEf/uEf4+s3r5FevMC4v8Cz56/w4tX38PzVK1xeX+FwdQ0MEadv3mC5LXj48AYyv8Z8PCGUEQjAIhllFshJHclABEhRR7yoYyslICXGMWkZbDCHLtg+tNVcHVsRAg0GwphgfkBEtmxde8IdBbgY1CaMnI1m3a97ANrgwQ9vFSNVhoRl/GyVSbasFhiIEcqMEBX51kvWgyBnAKopqJlvy+xTx9xAF9Ay1wOxB9cgqKVWDtB5UFevn87ozvV7axBMnfpUAbrVHukcEX+t2k11jPeHAyBSO+qNxqhxJ2Q6TbXrld7fWj/kEUgn/nCbQ+FXS7pl9Rlat6SC/n711eToJqB6krTOJvfz0IND54GvXs76AK2/i2bziKgG4ufOCVFu7BP4fbmWYGO/BMtCPrK7ZjdXBurseTojxZevlhL0j7DXKjT2ozOUcu716Veve+pznOnUl7k8BRj0n12DTFATr+K1thzQzrBSTM9JKmniUTDQf14PwHqJds65doZNyboxutNhoAChref+PWugWwqWRVbPyQMPv04vkXVnunfcQwg1E9sHMOdBTT+a8+tlFK7r1t5Hry9rGQvW51ofXOm68u6lGctSQBADYwNq44juGfp6V6F4IBVnQhjbAl6SuL5+YmMvu/PmpcVoc3ru8/Tz2T8Hvw9lDyhDp2qRiTELRJN36P0pX7/mJLvN9LIuB6xIxRurlSWyoKb4cxe4XhOKJi+obV9It1YesdNQ8Sk7H6iWkgDQM6Io8MF1/QZjjKGboxaq+Pd6XSK/mB6UexokX6+5p/w/t/nnwam/L+x5kmkfQRRgcxZwEVE2hQNc/fO1oIdZ2dOo1wMDsOwpMKl2LpMlVdW+gwB05WXtvtb2uy/3W/nVZhTb8ze2SaeBWgFhs8vFz0cCwFyfpzOvej9XdegCKNg9O7DGhJL9fdtcO7DmDME6x9QA20eMCjteiBlcXBeSakKFjWUtHYhf/WrJCPDOwVGbGeWCnBZIAIaRtKKjAsKMQNYV1cIeIuAqX2JZZszLCctywjSfcFpO+r1ZGW/+NU8LYpjhZ93+cqz3WUrBYbcYeN/saEkFEosBqKqvBVFAuNoIUcHzeVmQSka0rpvKoIoYQlJ7l1GbC4AIYRiQRbCkRTs/Fy17xDiCCLi/n7ScNkZEBpZ50a7VBPAQWqCalIECHFWLkIxyCUYUQWZNeqaUMO73eP7qBb736cf40W9+rvZEGA/3D9iHEaeHIyQD9w/3BjvqkgMTht2Iq6srPH/xAt/75BMcPt1jfjjh/fv3eP36Nd68eYP7+/vKbDkHrvqzioiAohUp0rFNU8pg8ZJnLzHMFjutzxxPUNh0Pjqz+/OzBw/bNQG18qlIBcvbWi12VhuglwRLYsgwIgwDiLgypv36eyCsr4Q4t119wsuTditNYGKEXVyd361Rmvn9aX1On9uic5va26V+P/cM+f7n5ziA+w7+Xs50m6ZJfR0r4W7dQv2sAVDcnpl/7UnCqhMmaIdZab9foTHr+J4U+AGK+drre+/Pk6WTUPI5qWcVW4Ub0cp2egxTfYvObz73ivrn6e/rDS0EsIYPqD6s7qWWzHTpBoBbuTbMrohhEV3CoJS2Xki0kk8r9pSRpmdeRi4ESUUJIb7nmM23VaDLiSdr7MZjlXWs5tUI/TnO3OM9fm49jlf6PwquKm4iAErS50+VGWdJPyhTkGldjVVK1lJh0QswFT5ArPy9nkeAsJeof/v4SzLoPFA+Czzs/7XLj5Yxg9ACepucuqxk/csEbgveLRi6QMe1hexrdWBQnf7Vtfgk4+mAxwEEcwPte+42n20evyQ40CCP3u+pcR5ctYD+aaDuO38Gi1t7tF4UoGPo9+k7ALpSSqX/opsDAQzgyJUB1LQTqAbxZJ+n19Jr1RisShkAV7C2XbcGZSQRJS8Q1sUpEpCFwHHEEK+x31+glITj8QEJF0g4IJcFD/OM3aDZ+rTMON09YLmbML7Y4+LZFYgy7n/xDX75xZ/i3ds3CCHg1azdlMYAMJLqQQTNjh6nhOOcES8j8jBiuLzGx7tLfPzyFV59+olqGWTV3piWGd988w1ev/4G+zHg8nKHaZ7xzCC6kAdEukReMm7vHvDu/T14iPjeJx/hctzjsNthmk7IZcLD9A4UEsah4PpyhzFEvLm5QpCE/cgoSHg4njD/6lf48t2vgBBx89GnePXxxygygweGBMFUJshC2A+CGIOCFqY9kpIaQQfpUApQBJPo3pIwACHCac5FoCLN4ow2bgegdatJOUNAqp2T/Nmqw0EGbFXggJ1x6Car96YFRAWCDIg3hBAzavCTAAoUOivEsowAllQgEqrd0SxXRslL0wEIRpcOWrbgW0FZfQoA5NI6ZQFNe+F8v3QXboa0/R1UPKghhQZiFS+HygrQibFkGKTAeOfs9Z8XQqxsi3macDyeIFIQiWsG8Hg8YrHSMT+AQgygWQ8wZ6+sgQq2e0QNWuupgD4zGUAEtISUPGmvYq/DA6zuxR2DHuQKVpLp15KyORfd79lE1OekU6kBFlsAynaKFXGtE4JIBpEDwWvQh2MAlwZ+VQdO5u7z/R4AINSOt1pi4CWBGvz2Uyr1FHAnR4MyYUKyJfyIlWJgQTbn7pyp1mcCvzWZ1J2HPvpMJgBbl66XqI5QzhnFOs45tOdBvWYD23PMOYMDIZoG4Dxn03QRxHEwe9OesWuS+fm+mHcbdiNcbHdJi25tJixJy7ZhM8jU5iH0IOfZPIjZhsGEtzVQMqfRu94BtXxVPCBeOWFswY06sd7p2J8q4CXQXVDmwI7omeVdft2JHoaIITa2gT5HY+NY8yGNwhSwKCVZAxLzH5w5VLShBJFxkwlgaHaWqAVHBA+0s5XONrvrz6Uva1U2CJCTgUZeukMOiiurDaQJMBLV5VoFTf572TXTgq0hMjag62315e8630CTohjiAI6hMrudIUdkpTbeDdFAPTGzQKBalqq2OnRr2Bu/lKoL2LO+FJdWJqI/6lKxorUQue+93qHv2Q26Pjr32B14W3v9yeGBVl+u4oBUSsnARAVPPLnqv5dzVltXvNugwJPCgRnBmqFQxxqrjNCusUKfKCV7jiCuGqzn7BS/3/OAuP+5ryEmNmkRrrunQBsdxDAgmM6iJvy06yi5DaRFy92M1edz5893zq3zOekC1GclulfIki9PM7X1d/ycmmVZ2f8GWuuiJ2pyEx70X1xc+EM0e6UAdjC/Kc/Z1o5eb0paLrlgxjCrlrOXbMXoz1U1ZosIhl3AMAYM4wH7MqLIBaCdPZBLwfF4wv39A25v75Tts4iWwxatTLi7Lzhd3de1uxwO2O/GuvaHYVDG0HEBERBZdfI8u5HKojY6KGtIGFryyG0NpmXBMi3WcR5Vj45DwPX1tUdLuo9zS2pKyUhZkPMJk685t6Ug5Aws8wRwwOHyStktSTCfFoQRLUGT1d9R0IwwHkZcX13ixYsX4KjsscO4x7PrFwg8oiDi5uYlPnz4gNu7WwgJljxjKQmX1we8+uglnl/d4PnlFZ7tr0EvGZ98/Apf3dxgHEd89dVXuL29fVSNgG5t6Aaw85MVJNeGQLmCMLDyxWzJbo09PZ6EIT9UfV2PlRqDex2H+ec7DsTU7FVjvK2TuBV8M5ZumpPNP2PHASFqQyJN3luMwIQxjtoESXQvl6QNa4pphg0hgodQgax2trY4mVn3f58Y6nU5ASAvSUvy/axD7//0/ojahFL0fFSZHVr5dD24ycwYBmXEAWvtViKqayuES2ODLZjnBbOkZieJcHFxgagIO1JJkMUY+QEgDogh2hFmgGPtzN6fmRFAMn8DJq2j97ZMCRStygKKkVTpEntN7k6T3v9msxHtfPU9Ztu7aMlkn1jxmfVEc3+vBGfQefMyBx5bgkFQ7LM0hvEzze1m7KoMyKSUIA2YrQ3wyPxoAkQYEQOoNnXUGyhZz7A6j+KNLJuWcJpmNMmDM702EZQk9cw497HVP2kgs/vU6l9Z0rviH/YZLCjFynQL1cQYgepeU9KA3vc47pvfkDOkrAkJkgoyA1xEtTwJ9Wx0dq50t3Q+/lIAXQZU6NYCJxZdNG54uHdXhAzOIwvaUYNE1WNhf7oIHNU4FNWo0AdQOTPK8OiyoS205urI+kLuwQF11nzxKRhR5PGC1IXhyDMDpHfSGgigvt7ft//6Kdpu//c5sHfuILXSmjUDob5HaKKjdZA+CzIWTP9+eUltrgJjyR2byINwmOEhbQ1N9l5VO6QG1TrPrghsM6kLm/Xgaob5cSc4KRqocRwhKWI5nlDyCaAdigQ8zAKJwBwjdvtrTGGA5FskmhCw4N37GctyC14KPrv5HJ+9+k3Q7hLvH34J4RNubka8O17g8uYlhvEakgaMB8LNzTXmksHjgNPtDNCAhQIeJOLII0q4xLUQPgrPcRWfgRARgnbse0hHnOSE0/IBb94AGQueP7vEJ/gEABCXETwfMD4PePYs4Se/MyLNt7h/+2fIDyfIzIg44OKjHT4sH1CiYCoZ72/f4ebiCiVPWKYPGF6OGHY7fLiPSHkBxnuMccAvf3GHX/3Zn+CHP7jGnoAHAu5PBQULYtghTbY/ghlp06pxLX3LtwP6KqVv54xc14jqvZCt/5S8syqQUscGgbLasjsU2YHt9dr2yhWyteHbJedFu7bCP8uDEn2fZI0s+kyar6UlL1pCZtnfvCyYlqUy8VpbesE0zxjGoWq5uXMAWCnoMa1BQ7uCcr43QXBdNyJnhRJC0OvNaW4AJPk6B5Jlo9O8YF5mLLPpwRAbS1RBi7mb2xBUk+fduw81q0dMCDxAmDAl7RJ3WibkJale46ilessyQZARAiOlGWGIAEQdhGo/TAdwpZPnYu0GzBQglYIhqsi+d8erJqa+V3/EA44b+YNNS8I4jtjt9uDQxNIhAg7q2C4kiGLMo87GRfvcQmil+XZIamZYEEOAtvLVeS9F9YKCaYVU1lXXFr7XU6HASEWBgRacJ0jWbpoajAGBTU+L0NhFfs+l1HK14OeDnVEpWSdSichJs+fjMAIgzHlRqEBUzHuZp9qttgLbhs5UrT6BAiD2X2DYuaXn2xAGFFJHNM0J42Dd/qxcEQTVSCpWZlCyZoxZtZQ0nmfTEAxIeUHOKmrOzMpFYEIIIy4OV1iWWe2/6ZOMux0IgtPpqGU0kTGnjHk5gTliGEbE3YAlF8zF2LPGch2HEUyEZZ4hhbAbd2CoZtAQtWnPnMwJhmn+5IzBNINyzkhLAhEr+BNUQ65kLXlUgBDW0TdgP+7BFDCXucs0+zkMxKDOpWrN6bk5xsEasQQUWTAtcy0PZSIDhzSzPgw7a36RMAwBIeh6nHNCOqmRLWJlq2TMKrN1cTcqc4hUA2ueZ+0yGU2/CVZeXLIG1aRghSE38Gz0kmcQEYbdACnANC8gYgMXbA103Q/RBUlSGtvL2WL6A/WFSIp2JLT9qaWG5umxYIzrsqiS1ccia1igXGdjZpmzHgJALIBoN1miAUTKRhTrZJnyjJIShlDRT8QAACAASURBVCFiN+xAErRcMKuWTYCWIAF6ZnM0DTwpCDFgF7RsZl4WiACRRwhI12RqbOQQWBl5S2vM4vowwoSlZMxZGxs4+BmHCMlZG0d52Uw9WQ3syK10OMYBAeEJVp2xzXICU8FuUJbisiyQnLXJFQfA1ibHiBAjwKRHrjMUmFtwb3Yrp4Q8zWpXCWqDSBCsSVYW7c4+DiMis1YawH1db3VjPiLrM16WhDRnsBrramuEHXArSGI+QIwIEpHTgsXKx+OoXUyRG1BoRxTEdIFzzqDCGEkTV+4flFIwjFqCmY2xTNQnUzSw1o6VBczK8KissUVQUjvT1Nayll4lXbcpK2AeYsR+iLVhFhGwO4wWCM7KJFsmLMuMUjKmoB3UCcA4eDd2BSzGcUSMEUuaTEtTA+SBR/NPdD9fHUZc7K7w4vkrzNa04eHhAcfjEdM0YZpPmE73dZ/NpwfshhHjOGIYTFOSWvnaXBLylJGM8cbEOBwOunZJz8FhHADqGqxwsHLTRRvDwRrYzCqn4rptMQ5ARAOpRRDCgmSsuR7g1mtjLAKQATlhMPZtKcglYZ4njGO0c1QwDoK7uwf84me3+PD2Pb765jV++/d+imfPX0CejRhCwMX1R/id3/u7+PyzH+PheIfj/YOC/6Tl2LvdgMPFHvuLHUYwTve3uLu7w/3dEaeTJv+vLi5w9+ED7m8fMO53CEFWMgya9NNzeilFS8aTVSyJ6gUqaQGYzeb7XI7B2K6lQITAcVdjJ4Ky7xxsGoYIgul5+n/Eit9C2aNpTsY8NACLtINtKdmeZ4vFIjOYB5QMpAykhxmQe4TIGEPUJhv64JDTjFxU9zkjA1npFswa4xPa+UDMCFH1oR0Iy/ankjisOgYMDLsBsWi32+PxpBUyBkpz1NJhbY7cA+h6FqbFCAMUAWbV3/PYYF6Qkp15Q1AfZsngwCCLX71hBXhAMPC6gEEhYNxbAtwabhAI03JCIt3HzGoDPPmRs+qI9g6wmN3JuTEGh9iYkYEIIernzGVBgkBmIECbCI4V6C3QomwFftjAUimCtCTkWRs3UtTEFwubzzVojJUEZckWuyVjtRkrkRoIHHlQoHDJpucawWwki6JVSGIdWL2TvN5rhJjeIKEAOWGZTyjiGot2Xjhzj9l8y26NZE2qhRBBYUDkHYqxFFNJAIqdX2f2GQFUjN0es/oUWQCxJJQBZiCYXBEwnxIm84+YGWFUjCOnZZ2gUudHQVRzepp0h+7lCjQPwTrMWhJRPCHpyTLYOUgIRoJB6ZN4pA0qc1YdVmR4E0yBJkKWlP7PATo5+3f15RzI6r4HD2QtwKi/YQ4AOfCGTpAXlmE159n5hXpQ8+rd8ehfMADp/Cr7HzdgoeFZFc+HmqaCNh1k36fq1K/eT/r3a8HhOcC2uuY+Q3L2vadeB6CKg7tTZy+ofx4xU7C+FgOB9VAEwDgfXS16cSyUGqoiQFs95zpcj0HJfn5006eWleMMJl2kxTbhggULCU6p4JSB3cAImTEd73G6P4I44Xs3n+DzV5/jo+tXuB9mZC4ocsI03eHVy1fY7S8wL2qYmXYI44A4BnAe8OxmjzjscXl1hXB5gMwPmFJG+tUD6L7gj372Z3j24gafvHyJlx+/1ABpN2AYCMOgYNFpObX7WoA0E/a8w82Ll3j1yQ/wcPsaX+MO3zx8gePdCWkGLvcH3Lz6GDdvj/jw9h5f/vJrPFyfcDweISK42O9w8/I5Pv38c8jAiJfvIbLgf/73N/j651/hdDvhYr+HFAcs1Og5PECiByiKZzz6PelLQbs3CWWwq885IABfq/bN7m+yNeZORfIMRwW49f9L6cTIYYAb1FnPpI0gho5ar93pLNDKZVViWtdMp+0lpSCY87IYKFcAFV51cJwAoHUTfbQWO7vw1M97JlO/tn1fD1EdytxR7Xsn1F/ba14AGrj0mbDVBXWjlbw2LRPPROnPBdyJTbY583IDd8z7UtdQs2hsNuCc4aXX3ZXYgVrJT/fakm1NnNkaW0Ytq58S0GmCAEBhAkg7fBYAJIIIqtpIgGboyZrReGbJ54htUWswWOo12kevmRJPPVciQKzcs7t+zXAWJUn5s0Z/jw2IBpSNpPVpCoXnrHZZ95DuR10vakt17ZoIuqn5Muv7szNhClXAZXVeVMa4O6yePfWSNNP9sDLDnAuoKGAohvgJtd+JMSiAZ0CrA9Gqi6Ol2aUsAAqIIgJH7TJNO4zj3kCEReURmBDIWHuDsjkLgJCh+pUWtIjbEAOdWZQ5RIo26v2ljAyGMNtcmV6TOfxFvFudiuezLTjxTrtWlpY9W00aIHhyghAAUQ2ZZU4KvnO3F8U0M+31kQ28BgPWjFpKE8V3n6ZmZ+0eRLq9ZUwfcjsoYjqctraiOuYEc8JLUjChlJr6qIwqcq2sYKu9GvV6/PdshcCxBdjGciMPgIis3JEaaGggaGUmmMPr4AcTYQhBAZTqI3iJvdTLOd8/3rFs5RcydJ+wAkUQ09szB5kogjiAKaAgA1nnWH0/Ql40UHJmZPXQIVgsMaJ7i8yWqO8Bhjn5vf/o+0r3kiaFW6l1zybzjsNe2uLd/urzesLHq0+JvFxNzH/l+go/W3xdBGoMwWbbbR0LVIczFWSk+hyZtKRVgNqkALZ28qI+F0NAgdQE+6fba0rW/RU4WBOPdg6uyseKgvpaFsoIksEsKLZQCKRrnFBZVwSAA0MQMZDaDBbonu/K1UBdwxMDF/ozxv9e0gR4owMLqgMHBGIkSViWWe/P1mLOWctag7L+Si0xNHkCZ9IaMKBlVAqiSylmk1xDMSMtqtPMtv9b10ovLTTdXr8Xu4cYA8bdgN0QrAOsgneEAG80I1nAMSAGbWhyeQGkojID8zJpAnCecDqdcHd3h4eHI5Z5RppnPDyo3dntdgqGxZ0COGdyG4fDQcF/yKoUzTsJKjDV9BaLlYURq87U3d1dZeopSKcgwRAHgIApzyhgxHFf140L5xeGVXsoGK3lrgFijcMEuk4DKbsEAIok3N3e4fb2Hq8/3OHnX36J5y9e4OWLV7i5vsbV7hK7YdRagULKVCzJ/GD1LUtOWKYZDwzM0xEPd/e4vz9aMxXVV7w4XAHCuDs+1GtW4N5sfFY/JQyDrjtjn7V9r6LvJammXxFjqeWEkQMGkwNQHVdjbxIsudBs+iqWrJGzJSst7GMKdd1SZ7cFWQuZbC8yMThEZNYEey2ZTYIkAOVUfYPq41Fr9OesW2cW+Z/eL+4TDW7n+j1b2Vzmtx7GvfkF1m0aMJZt19SGmo0OpH6Ks/5SIeRQFNQz4FtEE8HTrA3LYN2aiVpX6FJKLc/0z6l2xXwlIlIyAQg5N9+3sbe1Cqvad2lzWsyXcS279dDaTJ0+ZaozgMikTRdsPrIQTjlpSSQ1/TUiskIdAUm2BjiMlNTOMrF2vbYzS+NBW5VBz2dh0gwIWlk0MyOn1hFXV5rVkdbBVuapI5Jq6RFRbWpUX2dAoSLKBiiuwDZPaor5yn62Bzsvsvm4UtcO+7o7O7PZK5jsW7r/7TwV1AZT1Z82P0zj5OZT+/B14CW2Taffzx6BNx3kEFzA3fak+o4cG9PQz4fqG5Tm+3EYjAHvJcvaqEfPpm/HrYC/RhdXB4s8SAJQywnOD9d+3dp60Em0yalBrrlV3afoe3i26zEkp4bMDccT1+kLsHco4QFEdfK6a3v02vagPEB6+jPWC7I3Zv1cPDXOHZL+655xV+f8/GuW1RwTPX5f1Hv7dqCg/36dtjol7T7O2YHfdo/+TAsyhLjW0vWvc72RII3uPV6O4DLi9Zuv8e6br/CDzz7Gzc0NXr16BR4CjscjUlowjiMuLvag/TWWRXCaTsjlArvdHvsYsZSMYT+j3CVQjBgHAgVBCAIOgkIzjvMRzz95hWcvP8LlsyvwQMjzglISxsg4HHaQYcD9sQF0uWRkqEHdHUbM8wTBgmG3gzAjzYJTEhwSgcIeH3/8GS72E06397i7nXB3P2G3v8T3Pv0Mn/7gNzDlG8gAhIsBp4c7SP5GQbxyiefPX+D1uzeQlFGIUFJswAs7U0o6fQN7wv1a99IoMlBE7Cwz0MX7NACoTLrigB1BGZyAdT8rWK0by6wBXjLrf9SRKTnjYWpUcHeCcs4W3HZAb5EKPlXgRQSDB0T+OiLLlPsaaqDSUwCcoAFMfxGofP4zZ2Y5a8+dXv/TOya949KPc7vRAwS65r3cr2MQLksV/5dSgE7A14FCLdt6bDv831qlTgjd97/N1pxf77fZq0fBEzUG8HmplAdT/RnrrLD+/V1vyANXXUcwB8ZtvL1Bdw1idqmti8fPMZs4bYHUMg13KEW0hMJHzlJLmM61qAAr9yCCM8n8BGRmCzCLvsaYCBB1ijJMYJi5lqYAjaHtk1PvA2tHouRs16WdrXJStlOM1rjCSll9Sp0lXh1feMkIVafIyxCYYc2CHNAsCGxgFSmYpqXGXB0oL3/p51kdEDbwT+e7QHUv9Z64ApSw9/ELdrufjO3SYB1HgNpebCUZ7XuVAdYlAiqIVoppOy7V2W4z/rjM2PdTK7k0oK3T56qgDbmQsDPSG8DudiFbph0eEBGpHokH/0VLKeyq9XeldHr6Om/K3DNnujq/zVb1jEwFxzQpQ6T6kW4L2lEuFZzrfQyda+tu1wUofh6szvzumTgbJJzNgYhYkJXNm5aVTSg2t3qrKk/AQgrm6BOCIFddPrDbPMBjrJILUknKXLJucwpAEiA2TzXR2vyzpr2qTRxqV2rSEjagCbOnRUuwJatuoZ8FviZcHNsBWnS+m9uKfpz7QBVYrOBcm2cFzAf9fII62kyq48fK+FtSqo0UAjMoRtP9U7A+52J+NEyiwkClrNemTbdyLTVKnogrpgubxeZPql0VE4oHGZgFan4is5WyAwVUQWg/P/tyOF9D/b7q50kgKEunl2wgBmwZlaIMQwpsgX9WfTMmhBgwxqhdNbMHYdoRtvevtYuqN5hQMLUHnqXbx7rfoKw5smv2hmsiyMtSbXFMAUuacXIZjiFht9sbkBYQh4gQxbpJwipTCBTUnobIKOMI2e9qM5hx3CGlrst0Sri9vTW23kmB/9TO4HEckXbQSppkiV0LMJtfpR0nCQySoJp/BIQhYAgD6KKViM3zgtNJu55WPVJ4R9BWeu/Xy5EwSsCSF9ReMX6el4ycFrw/3YEI2B92uLq4xOFwhY+eJ+RCoDjgmBLm4wPe/Opr3L5+reXUZI1mipbnQhSkAxXbJ86SJhx2I5Z5wTQtBga0syLEWEvTS1EG7rizZi/Bkz1Sg1diP0dMVwraPdjLN7XyoyAVIA4BIURMSzJw2+9f4OxPt7FisgHuJ/lZWaBVCro/DL4zO0pFn5kCkxorezKG7DOYC0CxnhdN/gFgbqL/ahs9GdT5c+T7sPm4jXXJ9Uw895cexYfQhoEiWgav75OqndX3i4YqmM+cNUFdEKxs1zvw6npLKWFeJk0oeoLMy4tLQU4zZgv2/Xrt5tQ+nsfraHqifSXOUzFv/349+NfPA7MyIMXKlCMUoAscTC1HAS+JAYgM2OvEk+JFz64sM1jY5qNgzlrtEKlJ3DiwCzgwalWN9nzGMCJxwW43IcYjaLZzlCMKlnofvj0dW3F2vXbx9nrVhp8oYKzlslr2a0+bWiMbXWsBhABx2QIiqJ319dTFBUxGRHFfQe1icAPsfkRx/2edWPN7cN1d9j189nz8a/chXUbCSQC6VFpipu0hr2iBJTW6BD9Iy1htPdVSVqhNZ4t1ip0XEDzaO+fjLwXQ/Zv/8K/+Mi/bxq95/PM/+P1f9yX8FcdV93UBMAD41P60cY8/BQBc2h/gx/ghfnz2XhkP+AYAsAOwwwhgrO8A3OMnAH6C33jiOm4B3OIVgH/8L38K4KdPXm3GAqaCJDNkzkh5htCCi8sLHK6eYaIrjLsLhOEKV4dLXF5+gvlY8MXPfoEv3v8ccXeFH/3W5/jssx+jcMTD7QN2lzvsiDHGiIvdAdfXVzjs9khLgkhGLjOQMpYlNgDGs5wapbfgtzrKBMDo2UQAl2osqDqcTVBUrIuqB14K3BWABgVZs5XdCeAllEWyUZ6V+ebggDsqIlK7ZulndId2XoNZUtwJaiCMU9/7fxfAtIsEIUbVGuqcDGAdeEsPNvefZ9ex1m9D/X13UKaTl8etGXNuqHvgqwd2zoGuc8zLf7/pnxh4ZCWiy9J3lmzCuLUzkutXlYJCBKKmQ+EOFYDqWD0C6boLEguaHahZORnG7qiZ2MoWourIaNBW6r/9MxxueeoR1EDbWZBd4N++tu8/fnz1us8Duno/QNNKRDusv/P13/Ls3GEOQZvdiOTmxfjviZUuhlhBuRCjaVKY3EPnRLhzfnZH55NkHdj8epTRUZWmmCrQbtEqvBsyGdMsLRnLlCBCGIZRy6ir46ygkTIJVduNDNSTkjGVCVZrY/F60Y5hGjaDE1VdLGcA5aIlw8Lq8JficJ3pq3lQYiV7gayJixgjUdEsvb4AAw6avkkpojpPdY+esUPNwQea8D00drH9ZILFaM6ZJrrMuepAQs3mqqlKuSUa+r3eO+n+d3XsAXC2EqD6rDuA0tcPEShwaxpgiQ92G+gB7dm6XV1/5NXebQCtAMa2LWIsoW6N1z3LJn5fAKVMGSArpo8ja3shloA5B1v8s6tGUrEMuQABAtfTJRYEEJKQNatwgLHoOSZeMstavkSoz8XBOcB0iMJgDLio4tNpqYCO+tpPVTmo+DcRV2bB+dxqksjWEWAB5ppB4gGq/vtxF+He+ul7K2C12uZdkNgDiSUXbUQwWMmVR0b2+mxrqz/LOEQENhtaBEtJyMsEZl+7WhZWZV3I593XmZ2d5KC1gjfMAQjre3NQxoOXDgFezbUHNj2gHEKo56cDoee22a/Pf+67wJltHtwwrzu6tvNNn89+t0dekrIAARC3rtEVJKmfvbb9a72m+t1qB0JoAMn5uiBqSQJ9rwkx3GMYdgrUDTsQqdyFzyUIlXmkFSiCYj7C9fU1bm6e6zq3MrHT6YQ3b95ARFkxU5oreByHiFNacHr/AWGIGIZoOraEaPaHyEXxFYxjZgSOxnTT1bCUXAPQ3l/yeXJwq++mreW3ETFEba4wo3ZrjBzVzgZCzgFFAlKeIJKtXHCP/X6PUgiZCHGv8h2SJ5ymDEkCKqisoWTyE7rGMpLY9UgGoWAIKl0Qh53t9TXL9/r6WkuJp2nl+8WgwH2GAGwSHQWNIQ2y6oYIgTStYy4IWAM47kP0hIrVeoXbVUtigmwtQBtz2LpV+5IN9OAq0wHAujUXKCPekrMczG9fa94B0gEo7r+2Ne6vS8Yu9v3lIJ/7q/6sfbh9qJ8jpCXBvq7NHvfzjGo2lrr+9CJsf8eInDKWNBnQ3Zr3uNZdsnOQDaRTAK9YMxKq5yEz14SbjxBCtZd+j30C3n3cp+xTbyfOzwZ9L9UXIyJEK1lmi7vE9PcDyPwlk48QsYZC7ssEFR5grZgoi7Mn1fYNg+nIV+RMfTa2pgR95YyfVzFGWwfrRpGgVjlVn0/wM8Cgrtpl3JjlJu2hzNTcrYOmBagwGaNkqt/XZ+gVkmvt03p2CkyXtyNi2Bx50sWZjN4Z3lOr3ohJoUBjS/cxaPcsAbXVgZr/6H6OWMJSzJ6n4r5FtHVrEmtCdU4I6tcJxBJk3nhOgeRAESMzinDVaP628Z0A3S/+6y/x+d//9Lteso1t/H8xvvlvr6GVUwtEAqY8YbcPuLs/YZpOuL0/4f6d4OLmAfhoj5tXN3h2/Ry/+LMv8cXXb3E/Z/zmj34Lv/O3fhf7qwv87Od/jp/9/DWEMxK+wsPDLd5+mXAxXOHm5gZxYC1LEMvKLa2ddg0QybZv7bpgwJwQgARIBrGASwukipWtQERFgeDGSL/nga9AkJdJS1hKNsTfRD1zQRJlwiX7d5EMgmiAXlybgir4A6CWeNXhLKYzg+mMADkzXiQG7lmWYz/uMMbBAo214VUD/RiAO8+I9V+fM+TSMqNnNfQH8zm4t3K0VgHM48/3y/TMDcAopW9PXmrA55lqFyHVx82rwKS/vvX0rhkcNVDVf3TzRWcPBvUeCdSV3BZzolSro/+ev38fcGocQI+eL8jKKSroew7QOW7nC6YdokQNWK7PQxfs2TMwJ5J8DbY56ru+unPjTuf5kJRRmJBETAdRg0Pu1oFn3byMW4Qtc2eMDKCxQFbzZPPTI34wULBujcaKY6VU1ao9AlXsxBmyYvtPuLG8cLY36jUw2R5hc5bcqbfmMVQAylVjdina7CVa11uUUrsgFt8/AntPQqUFOMsXrXSRLPhlZqBkK1kwxhYZQ4O0RA79GtFJseDcGDBsjmXpAwkFe8ZxsLlWrRJ93uq8Vke8zr3tD2ZECgjDCEHBNE+tuy2twfi23tYAlQKsZNeu4Je4M2fMKRHXciLTLmkAobMB+rXS31d/n24z+gDB70cA65pWDKzkql/r64YqkOXIlzmqJk/xyLHtvldB+q68r86BWLmtZcPXa9CCRGhXdH+eqkcIeKdmDg7i+wqyAAKijWlUzVvZJlms5M2AG0Jdg7rW3D44kKrzdzqdGtCEVh41xIghnAtPB5Cdux4Qtjl3HaCmV+h2pf95byPP1039eRF13oUA8mdm2m1FquyDsye1MzAZqGhrwsrIAEIpztAaVA/MzpTTSUF3JtR7YYI2YHLGBKs+Zcq5NggRA3YCR4+lIBbA+VP2Pef351pmffdcDxbP164Hab0wfNvHum9CCAgxKoBu6y8aK7vtFbKMJrr3hYFqstrXfh7o9divkIPfLfhs4PzjqhK4bYEAklf7Iy0Jp9OM+/sjQlyL6xcCQmBtRGOlpBQ10HMg05mGCkAkXFwc8OzZNZZlwfGoEiqn42yssIypFNydJuA0gwmVgTQGxhBVhzGGrN0qQ8YwjEAgCFuXZC8FZgWWKUiVH/FzuqDJRbRGXwUkGTxEFAZyWYBkIElgjOMAph2YM+LwDMfjA+Z50j2cElIhLHPBYjprAtUIZIvbWTQBpBIepYKNAoCL2WbRUsq7D3e4vLzE5YXu1RAIIQygAPAQcbN7gZQWnGb14+d5as9ESi0/ZFFWOIkno3Rt8TBogilryXhfMdj0P1G7Gas9VF+Wztamm1xYYsUTf0ykPreXVpPqnDEHkHUsB7ScOJveYbQkmAsoeHfNfAZQuR1j7sGVgpwXLYs1oG99BvnvZ9NSXJ+7PQA3hNGALjsbjBXujRKYGLlk9a9KgXgyzbt4uU0wH0MBEpd3sORF1QkrBgCrQVTXUa89IGhzr9jA0xAC8mI2Iui8s98L/LGQ6e83O96Y083/FZHKCK/xmahMDxFhACGK+3VS/9OKoE7FvxgADaoBEznzjvXcK7nUdVisC1LxZKr9DrOC7FqxJEhzNo16vb6UkmpUDp1t7dZES8ZYwtDtncuIWHVjbcDnXUrhEgkOGLcYUwG6JmXGTBbDPq4+8vWUSkGIztbz0YA0B978u+qPWuxj/osCaLauy1mn4tjOF7Hzzq9fSgP5HKCrBVzs9+nrIihgb35EjX3g+0LnhkkB68gMIGqy5DvGdwJ0/+nf/ZcngxYn+NabpEbzWzNNar2G/hGl0ZrL1hwX0ynxB+xlCSK2IGQdWNsX7d/S/o3ufVWzR+w9zYWoDpMf+DUurNdXtVb0E+AB0urzu886/zd1G/q7hguT9u/b/y6xBbMdCu6OhA79/r/4g38CAPiP//Y/2/VrVt6OSnWyQIgdwgsArgNA5oR6OYmj/rpv1vdzfv/n9+xDUCCUbEMfICaImGQA+PsYDtfgfcYwDpAUcbEL+PSlQJZ3uH/7GpEBCRl5Ar53+D5+8Fu/gYcXgl98+Yf48Ef/A/PtLU44IJcddrjE9z/+FD/87HugkPGr+28wLycc3yv9//rFS8SbS7xdZtx+c4urY8Cz3XO8+I0fI1wcgJyx5BM+TO/x1Rc/Q7x7j88++QE++tHv4v39LV7/+R/i/ZvXeHb5KSQm8KC6Ib968yX+/Od/gnJ3xOvXb3F/d4H45h2mA6Ps95Aw4Zdff4PX7+/x6uYVPv/xj7G/usSUBXG3x+3dOzwc3+P2+HPkvOBAH+Ozzz/BD3/0KY7He3D4EoIFkgUpeaafG6NpFVBhvT6lgLCAka2MEFXjrTlYjTGXhVpG3oVQpdTOwaUDqsRYL5FVN6gBcvbHAoYYI4p067sDX9yQtVNBbE3qtfXr9IkFB2bGxcVFpcjnrhsQfJ3K0+Xpfh+uxbAOdHPnxLR56ue2d+b79+vLxkTEShH988X2ktubdXv0lBKSaUgpIFcwuqNudtW7wmrZowanHFpp2WoPkjfPaVk0/9uvph5UXRek3tYEaoKwfu/+mhCCleKaE1Hnogti9Af1sKo2jNXpqeVr6G1yO37FI9xuju2CEVfdGx8DUALtPljBm+7Z6bprr+8ZD/5vH33pVbPB7X5UpyoYIzKbdlrQ/WIlN34vPUjIrKAsgbqA1Ur/RB0MphbAaXDjgT3MCSnWDMmfkf9NyEnACBgHax1jGkMEBxQ7wNJA4hAjYhgARJQsmJYjvFNc8Oulxs5KtleIURmLzmODgU3sc+Z7xBynlBLCoMGHshMb+F9EAerBQBUHN/3Mdp0ZgOvXWp6pLELfi9GEpIlcd6xfw53uVxHTeXHnWwMKQUEyAfDeBtTnTmvwul+D6oix2Ud9OFoM+LiU2oEEL9VD3R9kzIi2B4sxKCpAYQF7b2M0WE4I/T26TbVN1vtvvoY0u2tz6ln6IiumMmBsvNxK2rTr3rr0iaB6OypTkFGQ7BnpPBfRleIOtUhjVwlYg3oBNOHke5Pqa/u5m+dF94Mll1SDkKwpSmM69kyoGD3AypWxHKN1hbVysQCuHUJzybY3zzLwrOX8ardp9VmlwHSCfK7bc1w90y5gqGVaVtYuSNoFbSGhYAAACLpJREFUlaykMKhkiJ/VT/mGzs4WAHEYdN5E/enm3xp7NbtWNFc7ThWboaa9ljNUQ1LXRU4CogIa+jNu7Yf0Jtn3i68PX5P91/3v2lcrm8xk5b2kXREr+9HiKmHj94o2uJpzAh4eUF9Q59gDbaoAQ32e5LZS/YcGHjaWR2OitGSG2wJ/X92DANia5Iwq1l6ygjvLMgEmsl5E2w5px8EmFxFCwG5oMYKXV/scEVFtFrHfH/D8+UfISVl7p9OEhyXhcsk4zqplJ3lBylmTvSgYWCs3CIIYVFuOTLSQKICHiMPVJSiy+SEwX0sqEylGlX+QELUxRdbmPseUkE8FYadMEy4MSQWUAEkBIRBiUHs4REbgPQQEIj1/5jnjOJ1wnO/Ml7XmW2KgQ3G23g72UCDCIAiCRMQSUYo2HDnsrHHTvKAUYLcDKAz1mYUYcRHVl5ymAdN0qn4gDaTnkAGCgMW4paCQgBDr2mu+jjnAsBJvk4dpurOoQJCztx1I72NSANjv97YenMWtHayLFCzWoVvFQvUzuRR42TJYGyiI72nbez3TqT8Xqj0XgcAkdYQ7gGZdYXK+b/w92kZGTYb5HzPhtYS4dnzNa1/GASG3q/v9HiEGKNNyrq8JIaz2hX9fQTnzhdDOR8UruJqq3q8l0pRqBVVhQI1gZaP7BEP/Ho/8xGxAFJkdBdQvEqmJ1cBseoNU/TrixvpKZp9UL1Qbn+VUIKlLRAK1kYhYNQ3FVsrfX18wZqhWJaA3jdogybCUgg7QDV7CHu263YcJmExChC2p6Zllx3/mebF/m96woK01XjfB1JjtcUyFDJW+cNC1xpL6Wd6Ai8hAdFtsgoZLeUK9dgw/e1a+t0peP0/u34vYOS3195SJr82bxMgLQIsPONoaqmeZsfJMv/qpKq5+/PU06M4XJOjRRD8F5Khj2BukLmCyDay/Jv6/VYmQvzfO3/s8OHsiWOtf2gsWPjW6uBC+fFcObj8XZ/fbO03nr+u/fmTMutE7ETgznuvrLKv7+Gf//ve/9Z7+3x/uKN3Yn/PxGs8A/G0tRP2O94m4xNOsz09xOHvvX9avdtCC2x+sSmy/wHMAz/F9AN+3773HjPcAgI/A+Ai//cQnCYAvAXyJn/4D4Kf4iX3/LW7xtn7eP/ynPwTwQwB/5+z3Mw7Y4x/967/3Hfe5jW1s42967McdvGxAREyzqNlcZQoFLEvCslgHKGYFLAKgGVw7G9wxti5sSvfnmvkTopqlE2QMAWArVR/3IzgMWJakHSpByIKamQOsM2k9RwVgFSuHKLhWijO4BFreYJk/1uuIIZiI8YBM0I6akqojXLI6jTFoxyt0wSLgSSUFjx2wJzYdNGnOvbMqXR+QFFJRprCVTMUY4V2meke0Zq+JanmDlhJk1Wqzoz7nBRwEsOYGPXjC3mkPLZNcrKO5ptIV1Jtm7aIoAED6exy0U26wLqaUvAwy1wY22p1U/QwW8srjlcehCRbv5kv1p+qAOqisc+UuXxbzh0hB9UCqa6O6h8XAFAXZpEhlI8IcTQ5c2VAlt5L1YonUwFqmzURIpTE3ezBPr2QNevvoQegiBdo9ekDOCuiJXY90Cc8CBWOdMazAUEQMVEtka2BrTANmRgCjGJCtSR2dw8ARUoPojMgqQk9ozA4iLUHX4BCNfeVC+fCSFIFAS3BLLsipaeLlAsRICIOC8UWSgQbuO1rigPzaAGtdqPPv+wNYJcxCHygH6NxYMBMCg2MElQbi1DXdAV/eaMX19GBBKZEy3tg6+ynrXRmI2gJeQF3GX5l03BqLSLHgURsIORDIHKzZRSX3rtgYfaDo+9iD/LRiAq7Byh6gI0UYKgsysoHTkKofKFbu5utLRDDNiwLZxCs75d34yGKSAANiWMvxtcS+qCafeHJt7ce7Dl8FSe3hM7NKBqCz8TUodb1xXaNzShW0EClYclKW0EnLKsvFRQUDdd6aqL83IQjBylc5QAbCbrfD4eIaVyCcwPhwf8Tp4R7L9ID5eIfTwwOWZUKGIC9a4hcpYogJWopmDJ0Y8Pr9e4wXO1xcXOHisMc4DDgcxnrGLNOkTXvEg89igLUyzVUTDaZ/mnBMC6YTEAMwDoRL7DEMBCZgqYzGhGkqmJcTAilIHTliHK3DdlYAniiAw1DtM4haozu3R+UAFsHpNON4nHGaF2QBxlEBkdNkpZW1XNlAH2fwpoISCqRGygQRKwFFUc1H1pXvGqIEwhjUvsx5BknTmOyspYEZpD4Cs2mUGtZmYFW0jqBUWhMHKQJJxe4jQuwcDswI41DXVpoT4n4EBy/VRO2IXs/Ouic8Jm3nuBCQFqkEgB7MamtwDQL5z9vPLHYvrelT/zl+ngcrkVyckUftvFQbqAn/LAQpi1XIFGVDIiCIVIBPy3sVYCwClEVLnwHUeYDJZ9RnUbIBrX7tmmTT9xQD3NWe5pxrwqHXq+uH+yWQrPbV5GLcrrHbMyKUYKQlxWy0EYTy37AIQZAh1igicAAPAQWWhLFklVdvaDJNO4HD9O5iiGCIspd5VskJYpQYIEjVrjk47NdfoPa5xKZ3p/0DFJzT5hNrCR1fS1qnG60xYjcn9nUpCjRTaD/rh7+X+tu+72ytFZ1X9cfXMjtgJRY4IJ6TdmGWJ9bp6lnZ2ZNsj3rlEgnX69bnvV7zrEj76n3aCeg+TjsPyYD0YvQpdgrjtwx6Ekjbxja2sY1tbGMb29jGNraxjW1sYxvb2MY2tvF/ZXw3v24b29jGNraxjW1sYxvb2MY2trGNbWxjG9vYxt/o2AC6bWxjG9vYxja2sY1tbGMb29jGNraxjW1s49c4NoBuG9vYxja2sY1tbGMb29jGNraxjW1sYxvb+DWODaDbxja2sY1tbGMb29jGNraxjW1sYxvb2MY2fo1jA+i2sY1tbGMb29jGNraxjW1sYxvb2MY2trGNX+PYALptbGMb29jGNraxjW1sYxvb2MY2trGNbWzj1zj+N/KUovTG1t8DAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "img = mmcv.imread('kitti_tiny/training/image_2/000068.jpeg')\n", "\n", "model.cfg = cfg\n", "result = inference_detector(model, img)\n", "show_result_pyplot(model, img, result)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "F1L8o3rtc37M" }, "source": [ "## What to Do Next?\n", "\n", "So far, we have learnt how to test and train a two-stage detector using MMDetection. To further explore MMDetection, you could do several other things as shown below:\n", "\n", "- Try single-stage detectors, e.g., [RetinaNet](https://github.com/open-mmlab/mmdetection/tree/master/configs/retinanet) and [SSD](https://github.com/open-mmlab/mmdetection/tree/master/configs/ssd) in [MMDetection model zoo](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/model_zoo.md). Single-stage detectors are more commonly used than two-stage detectors in industry.\n", "- Try anchor-free detectors, e.g., [FCOS](https://github.com/open-mmlab/mmdetection/tree/master/configs/fcos) and [RepPoints](https://github.com/open-mmlab/mmdetection/tree/master/configs/reppoints) in [MMDetection model zoo](https://github.com/open-mmlab/mmdetection/blob/master/docs/en/model_zoo.md). Anchor-free detector is a new trend in the object detection community.\n", "- Try 3D object detection using [MMDetection3D](https://github.com/open-mmlab/mmdetection3d), also one of the OpenMMLab projects. In MMDetection3D, not only can you try all the methods supported in MMDetection but also some 3D object detectors.\n" ] } ], "metadata": { "accelerator": "GPU", "colab": { "collapsed_sections": [], "name": "object_detection", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 0 }